{"version":3,"file":"static/chunks/6892.ee9e06a5642a5eae.js","mappings":"gGAEA,SAAUA,GAEN,SAASC,EAASC,GACd,OAAQC,SAASD,KAAWA,EAGhC,SAASE,EAAUC,GACf,IAAKJ,EAASI,EAASC,QAAW,OAAO,EAEzC,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAASC,OAAQC,IACjC,IAAKN,EAASI,EAASE,KAAOF,EAASE,GAAK,GAAKF,EAASE,GAAK,IAC3D,OAAO,EAIf,OAAO,EAGX,SAASC,EAAYC,EAAKC,GAGtB,GAAID,EAAIE,QAAUC,YAAYC,OAAOJ,IAAqB,eAAbA,EAAIK,KAU7C,OARIJ,IAEID,EADAA,EAAIM,MACEN,EAAIM,QAEJC,MAAMC,UAAUF,MAAMG,KAAKT,IAIlCA,EAIX,GAAIO,MAAMG,QAAQV,GAAM,CACpB,IAAKL,EAAUK,GACX,MAAM,IAAIW,MAAM,iCAAmCX,GAGvD,OAAO,IAAIY,WAAWZ,GAI1B,GAAIR,EAASQ,EAAIH,SAAWF,EAAUK,GAClC,OAAO,IAAIY,WAAWZ,GAG1B,MAAM,IAAIW,MAAM,iCAGpB,SAASE,EAAYhB,GACjB,OAAO,IAAIe,WAAWf,GAG1B,SAASiB,EAAUC,EAAaC,EAAaC,EAAaC,EAAaC,GAChD,MAAfD,GAAoC,MAAbC,IAEnBJ,EADAA,EAAYT,MACES,EAAYT,MAAMY,EAAaC,GAE/BZ,MAAMC,UAAUF,MAAMG,KAAKM,EAAaG,EAAaC,IAG3EH,EAAYI,IAAIL,EAAaE,GAKjC,IAAII,EA0CO,CACHC,QA1CJ,SAAiBC,GACb,IAAIC,EAAS,GAAI1B,EAAI,EAErB,IADAyB,EAAOE,UAAUF,GACVzB,EAAIyB,EAAK1B,QAAQ,CACpB,IAAI6B,EAAIH,EAAKI,WAAW7B,KAGd,KAAN4B,GACAF,EAAOI,KAAKlC,SAAS6B,EAAKM,OAAO/B,EAAG,GAAI,KACxCA,GAAK,GAIL0B,EAAOI,KAAKF,GAIpB,OAAO3B,EAAYyB,IA0BnBM,UAvBJ,SAAmBC,GAGf,IAFA,IAAIP,EAAS,GAAI1B,EAAI,EAEdA,EAAIiC,EAAMlC,QAAQ,CACrB,IAAI6B,EAAIK,EAAMjC,GAEV4B,EAAI,KACJF,EAAOI,KAAKI,OAAOC,aAAaP,IAChC5B,KACO4B,EAAI,KAAOA,EAAI,KACtBF,EAAOI,KAAKI,OAAOC,cAAmB,GAAJP,IAAa,EAAqB,GAAfK,EAAMjC,EAAI,KAC/DA,GAAK,IAEL0B,EAAOI,KAAKI,OAAOC,cAAmB,GAAJP,IAAa,IAAuB,GAAfK,EAAMjC,EAAI,KAAc,EAAqB,GAAfiC,EAAMjC,EAAI,KAC/FA,GAAK,GAIb,OAAO0B,EAAOU,KAAK,MASvBC,EAAa,WAWb,IAAIC,EAAM,mBAWV,MAAO,CACHd,QAtBJ,SAAiBC,GAEb,IADA,IAAIC,EAAS,GACJ1B,EAAI,EAAGA,EAAIyB,EAAK1B,OAAQC,GAAK,EAClC0B,EAAOI,KAAKlC,SAAS6B,EAAKM,OAAO/B,EAAG,GAAI,KAG5C,OAAO0B,GAiBPM,UAXJ,SAAmBC,GAEX,IADA,IAAIP,EAAS,GACJ1B,EAAI,EAAGA,EAAIiC,EAAMlC,OAAQC,IAAK,CACnC,IAAIuC,EAAIN,EAAMjC,GACd0B,EAAOI,KAAKQ,GAAS,IAAJC,IAAa,GAAKD,EAAQ,GAAJC,IAE3C,OAAOb,EAAOU,KAAK,MAnBd,GA8BbI,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,KAGtLC,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//CC,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//CC,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/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,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/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,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/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,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,WA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","sources":["webpack://_N_E/./node_modules/@ethersproject/json-wallets/node_modules/aes-js/index.js","webpack://_N_E/./node_modules/@ethersproject/hash/lib.esm/message.js","webpack://_N_E/./node_modules/@ethersproject/pbkdf2/lib.esm/pbkdf2.js","webpack://_N_E/./node_modules/@ethersproject/wordlists/lib.esm/_version.js","webpack://_N_E/./node_modules/@ethersproject/wordlists/lib.esm/wordlist.js","webpack://_N_E/./node_modules/@ethersproject/wordlists/lib.esm/lang-en.js","webpack://_N_E/./node_modules/@ethersproject/wordlists/lib.esm/wordlists.js","webpack://_N_E/./node_modules/@ethersproject/hdnode/lib.esm/index.js","webpack://_N_E/./node_modules/@ethersproject/hdnode/lib.esm/_version.js","webpack://_N_E/./node_modules/@ethersproject/random/lib.esm/_version.js","webpack://_N_E/./node_modules/@ethersproject/random/lib.esm/random.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/_version.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/utils.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/crowdsale.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/inspect.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/keystore.js","webpack://_N_E/./node_modules/@ethersproject/json-wallets/lib.esm/index.js","webpack://_N_E/./node_modules/@ethersproject/wallet/lib.esm/index.js","webpack://_N_E/./node_modules/@ethersproject/wallet/lib.esm/_version.js","webpack://_N_E/./node_modules/@ethersproject/constants/lib.esm/strings.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/ws.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/websocket-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/url-json-rpc-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/cloudflare-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/etherscan-provider.js","webpack://_N_E/./node_modules/@ethersproject/random/lib.esm/shuffle.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/fallback-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/ipc-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/infura-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/nodesmith-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/pocket-provider.js","webpack://_N_E/./node_modules/@ethersproject/providers/lib.esm/index.js","webpack://_N_E/./node_modules/ethers/lib.esm/_version.js","webpack://_N_E/./node_modules/ethers/lib.esm/ethers.js","webpack://_N_E/./node_modules/ethers/lib.esm/index.js","webpack://_N_E/./node_modules/scrypt-js/scrypt.js"],"sourcesContent":["\"use strict\";\n\n(function(root) {\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 && ArrayBuffer.isView(arg) && 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 for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\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(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","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","\"use strict\";\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac } from \"@ethersproject/sha2\";\nexport function pbkdf2(password, salt, iterations, keylen, hashAlgorithm) {\n password = arrayify(password);\n salt = arrayify(salt);\n let hLen;\n let l = 1;\n const DK = new Uint8Array(keylen);\n const block1 = new Uint8Array(salt.length + 4);\n block1.set(salt);\n //salt.copy(block1, 0, 0, salt.length)\n let r;\n let T;\n for (let i = 1; i <= l; i++) {\n //block1.writeUInt32BE(i, salt.length)\n block1[salt.length] = (i >> 24) & 0xff;\n block1[salt.length + 1] = (i >> 16) & 0xff;\n block1[salt.length + 2] = (i >> 8) & 0xff;\n block1[salt.length + 3] = i & 0xff;\n //let U = createHmac(password).update(block1).digest();\n let U = arrayify(computeHmac(hashAlgorithm, password, block1));\n if (!hLen) {\n hLen = U.length;\n T = new Uint8Array(hLen);\n l = Math.ceil(keylen / hLen);\n r = keylen - (l - 1) * hLen;\n }\n //U.copy(T, 0, 0, hLen)\n T.set(U);\n for (let j = 1; j < iterations; j++) {\n //U = createHmac(password).update(U).digest();\n U = arrayify(computeHmac(hashAlgorithm, password, U));\n for (let k = 0; k < hLen; k++)\n T[k] ^= U[k];\n }\n const destPos = (i - 1) * hLen;\n const len = (i === l ? r : hLen);\n //T.copy(DK, destPos, 0, len)\n DK.set(arrayify(T).slice(0, len), destPos);\n }\n return hexlify(DK);\n}\n//# sourceMappingURL=pbkdf2.js.map","export const version = \"wordlists/5.5.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n// This gets overridden by rollup\nconst exportWordlist = false;\nimport { id } from \"@ethersproject/hash\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nexport const logger = new Logger(version);\nexport class Wordlist {\n constructor(locale) {\n logger.checkAbstract(new.target, Wordlist);\n defineReadOnly(this, \"locale\", locale);\n }\n // Subclasses may override this\n split(mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n }\n // Subclasses may override this\n join(words) {\n return words.join(\" \");\n }\n static check(wordlist) {\n const words = [];\n for (let i = 0; i < 2048; i++) {\n const word = wordlist.getWord(i);\n /* istanbul ignore if */\n if (i !== wordlist.getWordIndex(word)) {\n return \"0x\";\n }\n words.push(word);\n }\n return id(words.join(\"\\n\") + \"\\n\");\n }\n static register(lang, name) {\n if (!name) {\n name = lang.locale;\n }\n /* istanbul ignore if */\n if (exportWordlist) {\n try {\n const anyGlobal = window;\n if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n if (!anyGlobal._ethers.wordlists[name]) {\n defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n }\n }\n }\n catch (error) { }\n }\n }\n}\n//# sourceMappingURL=wordlist.js.map","\"use strict\";\nimport { Wordlist } from \"./wordlist\";\nconst words = \"AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo\";\nlet wordlist = null;\nfunction loadWords(lang) {\n if (wordlist != null) {\n return;\n }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\nclass LangEn extends Wordlist {\n constructor() {\n super(\"en\");\n }\n getWord(index) {\n loadWords(this);\n return wordlist[index];\n }\n getWordIndex(word) {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\nconst langEn = new LangEn();\nWordlist.register(langEn);\nexport { langEn };\n//# sourceMappingURL=lang-en.js.map","\"use strict\";\nimport { langEn as en } from \"./lang-en\";\nexport const wordlists = {\n en: en\n};\n//# sourceMappingURL=wordlists.js.map","\"use strict\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { arrayify, concat, hexDataSlice, hexZeroPad, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeHmac, ripemd160, sha256, SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { wordlists } from \"@ethersproject/wordlists\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst N = BigNumber.from(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n// \"Bitcoin seed\"\nconst MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\nconst HardenedBit = 0x80000000;\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits);\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return (1 << bits) - 1;\n}\nfunction bytes32(value) {\n return hexZeroPad(hexlify(value), 32);\n}\nfunction base58check(data) {\n return Base58.encode(concat([data, hexDataSlice(sha256(sha256(data)), 0, 4)]));\n}\nfunction getWordlist(wordlist) {\n if (wordlist == null) {\n return wordlists[\"en\"];\n }\n if (typeof (wordlist) === \"string\") {\n const words = wordlists[wordlist];\n if (words == null) {\n logger.throwArgumentError(\"unknown locale\", \"wordlist\", wordlist);\n }\n return words;\n }\n return wordlist;\n}\nconst _constructorGuard = {};\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n;\nexport class HDNode {\n /**\n * This constructor should not be called directly.\n *\n * Please use:\n * - fromMnemonic\n * - fromSeed\n */\n constructor(constructorGuard, privateKey, publicKey, parentFingerprint, chainCode, index, depth, mnemonicOrPath) {\n logger.checkNew(new.target, HDNode);\n /* istanbul ignore if */\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"HDNode constructor cannot be called directly\");\n }\n if (privateKey) {\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"privateKey\", signingKey.privateKey);\n defineReadOnly(this, \"publicKey\", signingKey.compressedPublicKey);\n }\n else {\n defineReadOnly(this, \"privateKey\", null);\n defineReadOnly(this, \"publicKey\", hexlify(publicKey));\n }\n defineReadOnly(this, \"parentFingerprint\", parentFingerprint);\n defineReadOnly(this, \"fingerprint\", hexDataSlice(ripemd160(sha256(this.publicKey)), 0, 4));\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n defineReadOnly(this, \"chainCode\", chainCode);\n defineReadOnly(this, \"index\", index);\n defineReadOnly(this, \"depth\", depth);\n if (mnemonicOrPath == null) {\n // From a source that does not preserve the path (e.g. extended keys)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", null);\n }\n else if (typeof (mnemonicOrPath) === \"string\") {\n // From a source that does not preserve the mnemonic (e.g. neutered)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", mnemonicOrPath);\n }\n else {\n // From a fully qualified source\n defineReadOnly(this, \"mnemonic\", mnemonicOrPath);\n defineReadOnly(this, \"path\", mnemonicOrPath.path);\n }\n }\n get extendedKey() {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return base58check(concat([\n ((this.privateKey != null) ? \"0x0488ADE4\" : \"0x0488B21E\"),\n hexlify(this.depth),\n this.parentFingerprint,\n hexZeroPad(hexlify(this.index), 4),\n this.chainCode,\n ((this.privateKey != null) ? concat([\"0x00\", this.privateKey]) : this.publicKey),\n ]));\n }\n neuter() {\n return new HDNode(_constructorGuard, null, this.publicKey, this.parentFingerprint, this.chainCode, this.index, this.depth, this.path);\n }\n _derive(index) {\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n }\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n if (!this.privateKey) {\n throw new Error(\"cannot derive child of neutered node\");\n }\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(this.privateKey), 1);\n // Hardened path\n if (path) {\n path += \"'\";\n }\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(this.publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);\n }\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, this.chainCode, data));\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n // The private key\n let ki = null;\n // The public key\n let Ki = null;\n if (this.privateKey) {\n ki = bytes32(BigNumber.from(IL).add(this.privateKey).mod(N));\n }\n else {\n const ek = new SigningKey(hexlify(IL));\n Ki = ek._addPoint(this.publicKey);\n }\n let mnemonicOrPath = path;\n const srcMnemonic = this.mnemonic;\n if (srcMnemonic) {\n mnemonicOrPath = Object.freeze({\n phrase: srcMnemonic.phrase,\n path: path,\n locale: (srcMnemonic.locale || \"en\")\n });\n }\n return new HDNode(_constructorGuard, ki, Ki, this.fingerprint, bytes32(IR), index, this.depth + 1, mnemonicOrPath);\n }\n derivePath(path) {\n const components = path.split(\"/\");\n if (components.length === 0 || (components[0] === \"m\" && this.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n if (components[0] === \"m\") {\n components.shift();\n }\n let result = this;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result._derive(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result._derive(index);\n }\n else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n return result;\n }\n static _fromSeed(seed, mnemonic) {\n const seedArray = arrayify(seed);\n if (seedArray.length < 16 || seedArray.length > 64) {\n throw new Error(\"invalid seed\");\n }\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, MasterSecret, seedArray));\n return new HDNode(_constructorGuard, bytes32(I.slice(0, 32)), null, \"0x00000000\", bytes32(I.slice(32)), 0, 0, mnemonic);\n }\n static fromMnemonic(mnemonic, password, wordlist) {\n // If a locale name was passed in, find the associated wordlist\n wordlist = getWordlist(wordlist);\n // Normalize the case and spacing in the mnemonic (throws if the mnemonic is invalid)\n mnemonic = entropyToMnemonic(mnemonicToEntropy(mnemonic, wordlist), wordlist);\n return HDNode._fromSeed(mnemonicToSeed(mnemonic, password), {\n phrase: mnemonic,\n path: \"m\",\n locale: wordlist.locale\n });\n }\n static fromSeed(seed) {\n return HDNode._fromSeed(seed, null);\n }\n static fromExtendedKey(extendedKey) {\n const bytes = Base58.decode(extendedKey);\n if (bytes.length !== 82 || base58check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\":\n return new HDNode(_constructorGuard, null, hexlify(key), parentFingerprint, chainCode, index, depth, null);\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNode(_constructorGuard, hexlify(key.slice(1)), null, parentFingerprint, chainCode, index, depth, null);\n }\n return logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n}\nexport function mnemonicToSeed(mnemonic, password) {\n if (!password) {\n password = \"\";\n }\n const salt = toUtf8Bytes(\"mnemonic\" + password, UnicodeNormalizationForm.NFKD);\n return pbkdf2(toUtf8Bytes(mnemonic, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n}\nexport function mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = getWordlist(wordlist);\n logger.checkNormalize();\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0) {\n throw new Error(\"invalid mnemonic\");\n }\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) {\n throw new Error(\"invalid mnemonic\");\n }\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n throw new Error(\"invalid checksum\");\n }\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nexport function entropyToMnemonic(entropy, wordlist) {\n wordlist = getWordlist(wordlist);\n entropy = arrayify(entropy);\n if ((entropy.length % 4) !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(\"invalid entropy\");\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = arrayify(sha256(entropy))[0] & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nexport function isValidMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getAccountPath(index) {\n if (typeof (index) !== \"number\" || index < 0 || index >= HardenedBit || index % 1) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${index}'/0/0`;\n}\n//# sourceMappingURL=index.js.map","export const version = \"hdnode/5.5.0\";\n//# sourceMappingURL=_version.js.map","export const version = \"random/5.5.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n// Debugging line for testing browser lib in node\n//const window = { crypto: { getRandomValues: () => { } } };\nlet anyGlobal = null;\ntry {\n anyGlobal = window;\n if (anyGlobal == null) {\n throw new Error(\"try next\");\n }\n}\ncatch (error) {\n try {\n anyGlobal = global;\n if (anyGlobal == null) {\n throw new Error(\"try next\");\n }\n }\n catch (error) {\n anyGlobal = {};\n }\n}\nlet crypto = anyGlobal.crypto || anyGlobal.msCrypto;\nif (!crypto || !crypto.getRandomValues) {\n logger.warn(\"WARNING: Missing strong random number source\");\n crypto = {\n getRandomValues: function (buffer) {\n return logger.throwError(\"no secure random source avaialble\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"crypto.getRandomValues\"\n });\n }\n };\n}\nexport function randomBytes(length) {\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return arrayify(result);\n}\n;\n//# sourceMappingURL=random.js.map","export const version = \"json-wallets/5.5.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\nexport function searchPath(object, path) {\n let currentChild = object;\n const comps = path.toLowerCase().split('/');\n for (let i = 0; i < comps.length; i++) {\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comps[i]) {\n matchingChild = currentChild[key];\n break;\n }\n }\n // Didn't find one. :'(\n if (matchingChild === null) {\n return null;\n }\n // Now check this child...\n currentChild = matchingChild;\n }\n return currentChild;\n}\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes) {\n const bytes = arrayify(randomBytes);\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const value = hexlify(bytes);\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\nimport aes from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { Description } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { getPassword, looseArrayify, searchPath } from \"./utils\";\nexport class CrowdsaleAccount extends Description {\n isCrowdsaleAccount(value) {\n return !!(value && value._isCrowdsaleAccount);\n }\n}\n// See: https://github.com/ethereum/pyethsaletool\nexport function decrypt(json, password) {\n const data = JSON.parse(json);\n password = getPassword(password);\n // Ethereum Address\n const ethaddr = getAddress(searchPath(data, \"ethaddr\"));\n // Encrypted Seed\n const encseed = looseArrayify(searchPath(data, \"encseed\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n // Decrypt the seed\n const aesCbc = new aes.ModeOfOperation.cbc(key, iv);\n const seed = aes.padding.pkcs7.strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n const seedHexBytes = toUtf8Bytes(seedHex);\n const privateKey = keccak256(seedHexBytes);\n return new CrowdsaleAccount({\n _isCrowdsaleAccount: true,\n address: ethaddr,\n privateKey: privateKey\n });\n}\n//# sourceMappingURL=crowdsale.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nexport function isCrowdsaleWallet(json) {\n let data = null;\n try {\n data = JSON.parse(json);\n }\n catch (error) {\n return false;\n }\n return (data.encseed && data.ethaddr);\n}\nexport function isKeystoreWallet(json) {\n let data = null;\n try {\n data = JSON.parse(json);\n }\n catch (error) {\n return false;\n }\n if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {\n return false;\n }\n // @TODO: Put more checks to make sure it has kdf, iv and all that good stuff\n return true;\n}\n//export function isJsonWallet(json: string): boolean {\n// return (isSecretStorageWallet(json) || isCrowdsaleWallet(json));\n//}\nexport function getJsonWalletAddress(json) {\n if (isCrowdsaleWallet(json)) {\n try {\n return getAddress(JSON.parse(json).ethaddr);\n }\n catch (error) {\n return null;\n }\n }\n if (isKeystoreWallet(json)) {\n try {\n return getAddress(JSON.parse(json).address);\n }\n catch (error) {\n return null;\n }\n }\n return null;\n}\n//# sourceMappingURL=inspect.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport aes from \"aes-js\";\nimport scrypt from \"scrypt-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defaultPath, entropyToMnemonic, HDNode, mnemonicToEntropy } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 as _pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { Description } from \"@ethersproject/properties\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { getPassword, looseArrayify, searchPath, uuidV4, zpad } from \"./utils\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n// Exported Types\nfunction hasMnemonic(value) {\n return (value != null && value.mnemonic && value.mnemonic.phrase);\n}\nexport class KeystoreAccount extends Description {\n isKeystoreAccount(value) {\n return !!(value && value._isKeystoreAccount);\n }\n}\nfunction _decrypt(data, key, ciphertext) {\n const cipher = searchPath(data, \"crypto/cipher\");\n if (cipher === \"aes-128-ctr\") {\n const iv = looseArrayify(searchPath(data, \"crypto/cipherparams/iv\"));\n const counter = new aes.Counter(iv);\n const aesCtr = new aes.ModeOfOperation.ctr(key, counter);\n return arrayify(aesCtr.decrypt(ciphertext));\n }\n return null;\n}\nfunction _getAccount(data, key) {\n const ciphertext = looseArrayify(searchPath(data, \"crypto/ciphertext\"));\n const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);\n if (computedMAC !== searchPath(data, \"crypto/mac\").toLowerCase()) {\n throw new Error(\"invalid password\");\n }\n const privateKey = _decrypt(data, key.slice(0, 16), ciphertext);\n if (!privateKey) {\n logger.throwError(\"unsupported cipher\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"decrypt\"\n });\n }\n const mnemonicKey = key.slice(32, 64);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") {\n check = \"0x\" + check;\n }\n if (getAddress(check) !== address) {\n throw new Error(\"address mismatch\");\n }\n }\n const account = {\n _isKeystoreAccount: true,\n address: address,\n privateKey: hexlify(privateKey)\n };\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n if (searchPath(data, \"x-ethers/version\") === \"0.1\") {\n const mnemonicCiphertext = looseArrayify(searchPath(data, \"x-ethers/mnemonicCiphertext\"));\n const mnemonicIv = looseArrayify(searchPath(data, \"x-ethers/mnemonicCounter\"));\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const path = searchPath(data, \"x-ethers/path\") || defaultPath;\n const locale = searchPath(data, \"x-ethers/locale\") || \"en\";\n const entropy = arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext));\n try {\n const mnemonic = entropyToMnemonic(entropy, locale);\n const node = HDNode.fromMnemonic(mnemonic, null, locale).derivePath(path);\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n account.mnemonic = node.mnemonic;\n }\n catch (error) {\n // If we don't have the locale wordlist installed to\n // read this mnemonic, just bail and don't set the\n // mnemonic\n if (error.code !== Logger.errors.INVALID_ARGUMENT || error.argument !== \"wordlist\") {\n throw error;\n }\n }\n }\n return new KeystoreAccount(account);\n}\nfunction pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc) {\n return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc));\n}\nfunction pbkdf2(passwordBytes, salt, count, dkLen, prfFunc) {\n return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));\n}\nfunction _computeKdfKey(data, password, pbkdf2Func, scryptFunc, progressCallback) {\n const passwordBytes = getPassword(password);\n const kdf = searchPath(data, \"crypto/kdf\");\n if (kdf && typeof (kdf) === \"string\") {\n const throwError = function (name, value) {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n };\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n const N = parseInt(searchPath(data, \"crypto/kdfparams/n\"));\n const r = parseInt(searchPath(data, \"crypto/kdfparams/r\"));\n const p = parseInt(searchPath(data, \"crypto/kdfparams/p\"));\n // Check for all required parameters\n if (!N || !r || !p) {\n throwError(\"kdf\", kdf);\n }\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) {\n throwError(\"N\", N);\n }\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n let prfFunc = null;\n const prf = searchPath(data, \"crypto/kdfparams/prf\");\n if (prf === \"hmac-sha256\") {\n prfFunc = \"sha256\";\n }\n else if (prf === \"hmac-sha512\") {\n prfFunc = \"sha512\";\n }\n else {\n throwError(\"prf\", prf);\n }\n const count = parseInt(searchPath(data, \"crypto/kdfparams/c\"));\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);\n }\n }\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\nexport function decryptSync(json, password) {\n const data = JSON.parse(json);\n const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt.syncScrypt);\n return _getAccount(data, key);\n}\nexport function decrypt(json, password, progressCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.parse(json);\n const key = yield _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback);\n return _getAccount(data, key);\n });\n}\nexport function encrypt(account, password, options, progressCallback) {\n try {\n // Check the address matches the private key\n if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n throw new Error(\"address/privateKey mismatch\");\n }\n // Check the mnemonic (if any) matches the private key\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n }\n catch (e) {\n return Promise.reject(e);\n }\n // The options are optional, so adjust the call as needed\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n const privateKey = arrayify(account.privateKey);\n const passwordBytes = getPassword(password);\n let entropy = null;\n let path = null;\n let locale = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n }\n let client = options.client;\n if (!client) {\n client = \"ethers.js\";\n }\n // Check/generate the salt\n let salt = null;\n if (options.salt) {\n salt = arrayify(options.salt);\n }\n else {\n salt = randomBytes(32);\n ;\n }\n // Override initialization vector\n let iv = null;\n if (options.iv) {\n iv = arrayify(options.iv);\n if (iv.length !== 16) {\n throw new Error(\"invalid iv\");\n }\n }\n else {\n iv = randomBytes(16);\n }\n // Override the uuid\n let uuidRandom = null;\n if (options.uuid) {\n uuidRandom = arrayify(options.uuid);\n if (uuidRandom.length !== 16) {\n throw new Error(\"invalid uuid\");\n }\n }\n else {\n uuidRandom = randomBytes(16);\n }\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) {\n N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n p = options.scrypt.p;\n }\n }\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n return scrypt.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key) => {\n key = arrayify(key);\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n // This will be used to encrypt the mnemonic phrase (if any)\n const mnemonicKey = key.slice(32, 64);\n // Encrypt the private key\n const counter = new aes.Counter(iv);\n const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n Crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (entropy) {\n const mnemonicIv = randomBytes(16);\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\");\n data[\"x-ethers\"] = {\n client: client,\n gethFilename: (\"UTC--\" + timestamp + \"--\" + data.address),\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n path: path,\n locale: locale,\n version: \"0.1\"\n };\n }\n return JSON.stringify(data);\n });\n}\n//# sourceMappingURL=keystore.js.map","\"use strict\";\nimport { decrypt as decryptCrowdsale } from \"./crowdsale\";\nimport { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from \"./inspect\";\nimport { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore } from \"./keystore\";\nfunction decryptJsonWallet(json, password, progressCallback) {\n if (isCrowdsaleWallet(json)) {\n if (progressCallback) {\n progressCallback(0);\n }\n const account = decryptCrowdsale(json, password);\n if (progressCallback) {\n progressCallback(1);\n }\n return Promise.resolve(account);\n }\n if (isKeystoreWallet(json)) {\n return decryptKeystore(json, password, progressCallback);\n }\n return Promise.reject(new Error(\"invalid JSON wallet\"));\n}\nfunction decryptJsonWalletSync(json, password) {\n if (isCrowdsaleWallet(json)) {\n return decryptCrowdsale(json, password);\n }\n if (isKeystoreWallet(json)) {\n return decryptKeystoreSync(json, password);\n }\n throw new Error(\"invalid JSON wallet\");\n}\nexport { decryptCrowdsale, decryptKeystore, decryptKeystoreSync, encryptKeystore, isCrowdsaleWallet, isKeystoreWallet, getJsonWalletAddress, decryptJsonWallet, decryptJsonWalletSync, };\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { Signer } from \"@ethersproject/abstract-signer\";\nimport { arrayify, concat, hexDataSlice, isHexString, joinSignature } from \"@ethersproject/bytes\";\nimport { hashMessage, _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defaultPath, HDNode, entropyToMnemonic } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { decryptJsonWallet, decryptJsonWalletSync, encryptKeystore } from \"@ethersproject/json-wallets\";\nimport { computeAddress, recoverAddress, serialize } from \"@ethersproject/transactions\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction isAccount(value) {\n return (value != null && isHexString(value.privateKey, 32) && value.address != null);\n}\nfunction hasMnemonic(value) {\n const mnemonic = value.mnemonic;\n return (mnemonic && mnemonic.phrase);\n}\nexport class Wallet extends Signer {\n constructor(privateKey, provider) {\n logger.checkNew(new.target, Wallet);\n super();\n if (isAccount(privateKey)) {\n const signingKey = new SigningKey(privateKey.privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n if (this.address !== getAddress(privateKey.address)) {\n logger.throwArgumentError(\"privateKey/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n if (hasMnemonic(privateKey)) {\n const srcMnemonic = privateKey.mnemonic;\n defineReadOnly(this, \"_mnemonic\", () => ({\n phrase: srcMnemonic.phrase,\n path: srcMnemonic.path || defaultPath,\n locale: srcMnemonic.locale || \"en\"\n }));\n const mnemonic = this.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path);\n if (computeAddress(node.privateKey) !== this.address) {\n logger.throwArgumentError(\"mnemonic/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n }\n else {\n defineReadOnly(this, \"_mnemonic\", () => null);\n }\n }\n else {\n if (SigningKey.isSigningKey(privateKey)) {\n /* istanbul ignore if */\n if (privateKey.curve !== \"secp256k1\") {\n logger.throwArgumentError(\"unsupported curve; must be secp256k1\", \"privateKey\", \"[REDACTED]\");\n }\n defineReadOnly(this, \"_signingKey\", () => privateKey);\n }\n else {\n // A lot of common tools do not prefix private keys with a 0x (see: #1166)\n if (typeof (privateKey) === \"string\") {\n if (privateKey.match(/^[0-9a-f]*$/i) && privateKey.length === 64) {\n privateKey = \"0x\" + privateKey;\n }\n }\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n }\n defineReadOnly(this, \"_mnemonic\", () => null);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n }\n /* istanbul ignore if */\n if (provider && !Provider.isProvider(provider)) {\n logger.throwArgumentError(\"invalid provider\", \"provider\", provider);\n }\n defineReadOnly(this, \"provider\", provider || null);\n }\n get mnemonic() { return this._mnemonic(); }\n get privateKey() { return this._signingKey().privateKey; }\n get publicKey() { return this._signingKey().publicKey; }\n getAddress() {\n return Promise.resolve(this.address);\n }\n connect(provider) {\n return new Wallet(this, provider);\n }\n signTransaction(transaction) {\n return resolveProperties(transaction).then((tx) => {\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"transaction.from\", transaction.from);\n }\n delete tx.from;\n }\n const signature = this._signingKey().signDigest(keccak256(serialize(tx)));\n return serialize(tx, signature);\n });\n }\n signMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return joinSignature(this._signingKey().signDigest(hashMessage(message)));\n });\n }\n _signTypedData(domain, types, value) {\n return __awaiter(this, void 0, void 0, function* () {\n // Populate any ENS names\n const populated = yield _TypedDataEncoder.resolveNames(domain, types, value, (name) => {\n if (this.provider == null) {\n logger.throwError(\"cannot resolve ENS names without a provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\",\n value: name\n });\n }\n return this.provider.resolveName(name);\n });\n return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));\n });\n }\n encrypt(password, options, progressCallback) {\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (progressCallback && typeof (progressCallback) !== \"function\") {\n throw new Error(\"invalid callback\");\n }\n if (!options) {\n options = {};\n }\n return encryptKeystore(this, password, options, progressCallback);\n }\n /**\n * Static methods to create Wallet instances.\n */\n static createRandom(options) {\n let entropy = randomBytes(16);\n if (!options) {\n options = {};\n }\n if (options.extraEntropy) {\n entropy = arrayify(hexDataSlice(keccak256(concat([entropy, options.extraEntropy])), 0, 16));\n }\n const mnemonic = entropyToMnemonic(entropy, options.locale);\n return Wallet.fromMnemonic(mnemonic, options.path, options.locale);\n }\n static fromEncryptedJson(json, password, progressCallback) {\n return decryptJsonWallet(json, password, progressCallback).then((account) => {\n return new Wallet(account);\n });\n }\n static fromEncryptedJsonSync(json, password) {\n return new Wallet(decryptJsonWalletSync(json, password));\n }\n static fromMnemonic(mnemonic, path, wordlist) {\n if (!path) {\n path = defaultPath;\n }\n return new Wallet(HDNode.fromMnemonic(mnemonic, null, wordlist).derivePath(path));\n }\n}\nexport function verifyMessage(message, signature) {\n return recoverAddress(hashMessage(message), signature);\n}\nexport function verifyTypedData(domain, types, value, signature) {\n return recoverAddress(_TypedDataEncoder.hash(domain, types, value), signature);\n}\n//# sourceMappingURL=index.js.map","export const version = \"wallet/5.5.0\";\n//# sourceMappingURL=_version.js.map","// NFKC (composed) // (decomposed)\nexport const EtherSymbol = \"\\u039e\"; // \"\\uD835\\uDF63\";\n//# sourceMappingURL=strings.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nlet WS = null;\ntry {\n WS = WebSocket;\n if (WS == null) {\n throw new Error(\"inject please\");\n }\n}\ncatch (error) {\n const logger = new Logger(version);\n WS = function () {\n logger.throwError(\"WebSockets not supported in this environment\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new WebSocket()\"\n });\n };\n}\n//export default WS;\n//module.exports = WS;\nexport { WS as WebSocket };\n//# sourceMappingURL=ws.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\nlet NextId = 1;\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\nexport class WebSocketProvider extends JsonRpcProvider {\n constructor(url, network) {\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n super(url, network);\n this._pollingInterval = -1;\n this._wsReady = false;\n defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n defineReadOnly(this, \"_requests\", {});\n defineReadOnly(this, \"_subs\", {});\n defineReadOnly(this, \"_subIds\", {});\n defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n // Stall sending requests until the socket is open...\n this._websocket.onopen = () => {\n this._wsReady = true;\n Object.keys(this._requests).forEach((id) => {\n this._websocket.send(this._requests[id].payload);\n });\n };\n this._websocket.onmessage = (messageEvent) => {\n const data = messageEvent.data;\n const result = JSON.parse(data);\n if (result.id != null) {\n const id = String(result.id);\n const request = this._requests[id];\n delete this._requests[id];\n if (result.result !== undefined) {\n request.callback(null, result.result);\n this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: this\n });\n }\n else {\n let error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(error, \"code\", result.error.code || null);\n defineReadOnly(error, \"response\", data);\n }\n else {\n error = new Error(\"unknown error\");\n }\n request.callback(error, undefined);\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\n });\n }\n }\n else if (result.method === \"eth_subscription\") {\n // Subscription...\n const sub = this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result);\n }\n }\n else {\n console.warn(\"this should not happen\");\n }\n };\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n const fauxPoll = setInterval(() => {\n this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) {\n fauxPoll.unref();\n }\n }\n detectNetwork() {\n return this._detectNetwork;\n }\n get pollingInterval() {\n return 0;\n }\n resetEventsBlock(blockNumber) {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n set pollingInterval(value) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n poll() {\n return __awaiter(this, void 0, void 0, function* () {\n return null;\n });\n }\n set polling(value) {\n if (!value) {\n return;\n }\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n send(method, params) {\n const rid = NextId++;\n return new Promise((resolve, reject) => {\n function callback(error, result) {\n if (error) {\n return reject(error);\n }\n return resolve(result);\n }\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n this._requests[String(rid)] = { callback, payload };\n if (this._wsReady) {\n this._websocket.send(payload);\n }\n });\n }\n static defaultUrl() {\n return \"ws:/\\/localhost:8546\";\n }\n _subscribe(tag, param, processFunc) {\n return __awaiter(this, void 0, void 0, function* () {\n let subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then((param) => {\n return this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n const subId = yield subIdPromise;\n this._subs[subId] = { tag, processFunc };\n });\n }\n _startEvent(event) {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [\"newHeads\"], (result) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n case \"pending\":\n this._subscribe(\"pending\", [\"newPendingTransactions\"], (result) => {\n this.emit(\"pending\", result);\n });\n break;\n case \"filter\":\n this._subscribe(event.tag, [\"logs\", this._getFilter(event.filter)], (result) => {\n if (result.removed == null) {\n result.removed = false;\n }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n case \"tx\": {\n const emitReceipt = (event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) {\n return;\n }\n this.emit(hash, receipt);\n });\n };\n // In case it is already mined\n emitReceipt(event);\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [\"newHeads\"], (result) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n _stopEvent(event) {\n let tag = event.tag;\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter((e) => (e.type === \"tx\")).length) {\n return;\n }\n tag = \"tx\";\n }\n else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n const subId = this._subIds[tag];\n if (!subId) {\n return;\n }\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) {\n return;\n }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [subId]);\n });\n }\n destroy() {\n return __awaiter(this, void 0, void 0, function* () {\n // Wait until we have connected before trying to disconnect\n if (this._websocket.readyState === WebSocket.CONNECTING) {\n yield (new Promise((resolve) => {\n this._websocket.onopen = function () {\n resolve(true);\n };\n this._websocket.onerror = function () {\n resolve(false);\n };\n }));\n }\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this._websocket.close(1000);\n });\n }\n}\n//# sourceMappingURL=websocket-provider.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n detectNetwork() {\n const _super = Object.create(null, {\n detectNetwork: { get: () => super.detectNetwork }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let network = this.network;\n if (network == null) {\n network = yield _super.detectNetwork.call(this);\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, {});\n }\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n defineReadOnly(this, \"_network\", network);\n this.emit(\"network\", network, null);\n }\n }\n return network;\n });\n }\n}\nexport class UrlJsonRpcProvider extends StaticJsonRpcProvider {\n constructor(network, apiKey) {\n logger.checkAbstract(new.target, UrlJsonRpcProvider);\n // Normalize the Network and API Key\n network = getStatic(new.target, \"getNetwork\")(network);\n apiKey = getStatic(new.target, \"getApiKey\")(apiKey);\n const connection = getStatic(new.target, \"getUrl\")(network, apiKey);\n super(connection, network);\n if (typeof (apiKey) === \"string\") {\n defineReadOnly(this, \"apiKey\", apiKey);\n }\n else if (apiKey != null) {\n Object.keys(apiKey).forEach((key) => {\n defineReadOnly(this, key, apiKey[key]);\n });\n }\n }\n _startPending() {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n }\n isCommunityResource() {\n return false;\n }\n getSigner(address) {\n return logger.throwError(\"API provider does not support signing\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"getSigner\" });\n }\n listAccounts() {\n return Promise.resolve([]);\n }\n // Return a defaultApiKey if null, otherwise validate the API key\n static getApiKey(apiKey) {\n return apiKey;\n }\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n static getUrl(network, apiKey) {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n }\n}\n//# sourceMappingURL=url-json-rpc-provider.js.map","\"use strict\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nexport class AlchemyWebSocketProvider extends WebSocketProvider {\n constructor(network, apiKey) {\n const provider = new AlchemyProvider(network, apiKey);\n const url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n super(url, provider.network);\n defineReadOnly(this, \"apiKey\", provider.apiKey);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n static getWebSocketProvider(network, apiKey) {\n return new AlchemyWebSocketProvider(network, apiKey);\n }\n static getApiKey(apiKey) {\n if (apiKey == null) {\n return defaultApiKey;\n }\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n }\n static getUrl(network, apiKey) {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.alchemyapi.io/v2/\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.alchemyapi.io/v2/\";\n break;\n case \"kovan\":\n host = \"eth-kovan.alchemyapi.io/v2/\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: (attempt, url) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=alchemy-provider.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n static getApiKey(apiKey) {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n }\n static getUrl(network, apiKey) {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return host;\n }\n perform(method, params) {\n const _super = Object.create(null, {\n perform: { get: () => super.perform }\n });\n return __awaiter(this, void 0, void 0, function* () {\n // The Cloudflare provider does not support eth_blockNumber,\n // so we get the latest block and pull it from that\n if (method === \"getBlockNumber\") {\n const block = yield _super.perform.call(this, \"getBlock\", { blockTag: \"latest\" });\n return block.number;\n }\n return _super.perform.call(this, method, params);\n });\n }\n}\n//# sourceMappingURL=cloudflare-provider.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { fetchJson } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BaseProvider } from \"./base-provider\";\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = hexValue(hexlify(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + accessListify(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n}\nfunction getResult(result) {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n if (result.status != 1 || result.message != \"OK\") {\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n return result.result;\n}\nfunction getJsonResult(result) {\n // This response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n const error = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n const error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n}\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag) {\n if (blockTag === \"pending\") {\n throw new Error(\"pending not supported\");\n }\n if (blockTag === \"latest\") {\n return blockTag;\n }\n return parseInt(blockTag.substring(2), 16);\n}\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\nfunction checkError(method, error, transaction) {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n const e = error.error;\n // Etherscan keeps changing their string\n if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) {\n data = \"0x\" + data.replace(/^.*0x/i, \"\");\n }\n if (isHexString(data)) {\n return data;\n }\n logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n error, data: \"0x\"\n });\n }\n }\n // Get the message from any nested error structure\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR) {\n if (error.error && typeof (error.error.message) === \"string\") {\n message = error.error.message;\n }\n else if (typeof (error.body) === \"string\") {\n message = error.body;\n }\n else if (typeof (error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n throw error;\n}\nexport class EtherscanProvider extends BaseProvider {\n constructor(network, apiKey) {\n logger.checkNew(new.target, EtherscanProvider);\n super(network);\n defineReadOnly(this, \"baseUrl\", this.getBaseUrl());\n defineReadOnly(this, \"apiKey\", apiKey || defaultApiKey);\n }\n getBaseUrl() {\n switch (this.network ? this.network.name : \"invalid\") {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"ropsten\":\n return \"https:/\\/api-ropsten.etherscan.io\";\n case \"rinkeby\":\n return \"https:/\\/api-rinkeby.etherscan.io\";\n case \"kovan\":\n return \"https:/\\/api-kovan.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n }\n getUrl(module, params) {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${key}=${value}`;\n }\n return accum;\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${this.apiKey}` : \"\");\n return `${this.baseUrl}/api?module=${module}${query}${apiKey}`;\n }\n getPostUrl() {\n return `${this.baseUrl}/api`;\n }\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n fetch(module, params, post) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = (post ? this.getPostUrl() : this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params) : null);\n const procFunc = (module === \"proxy\") ? getJsonResult : getResult;\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n const connection = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt, url) => {\n if (this.isCommunityResource()) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n let payloadStr = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map((key) => {\n return `${key}=${payload[key]}`;\n }).join(\"&\");\n }\n const result = yield fetchJson(connection, payloadStr, procFunc || getJsonResult);\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n return result;\n });\n }\n detectNetwork() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.network;\n });\n }\n perform(method, params) {\n const _super = Object.create(null, {\n perform: { get: () => super.perform }\n });\n return __awaiter(this, void 0, void 0, function* () {\n switch (method) {\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: params.address,\n tag: params.blockTag\n });\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\n });\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: params.address,\n position: params.position,\n tag: params.blockTag\n });\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction\n }, true).catch((error) => {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n });\n case \"getBlock\":\n if (params.blockTag) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: params.blockTag,\n boolean: (params.includeTransactions ? \"true\" : \"false\")\n });\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n });\n case \"call\": {\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return yield this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return checkError(\"call\", error, params.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return yield this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return checkError(\"estimateGas\", error, params.transaction);\n }\n }\n case \"getLogs\": {\n const args = { action: \"getLogs\" };\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n if (params.filter.address) {\n args.address = params.filter.address;\n }\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof (topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n const logs = yield this.fetch(\"logs\", args);\n // Cache txHash => blockHash\n let blocks = {};\n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) {\n continue;\n }\n if (blocks[log.blockNumber] == null) {\n const block = yield this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n log.blockHash = blocks[log.blockNumber];\n }\n return logs;\n }\n case \"getEtherPrice\":\n if (this.network.name !== \"homestead\") {\n return 0.0;\n }\n return parseFloat((yield this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n default:\n break;\n }\n return _super.perform.call(this, method, params);\n });\n }\n // Note: The `page` page parameter only allows pagination within the\n // 10,000 window available without a page and offset parameter\n // Error: Result window is too large, PageNo x Offset size must\n // be less than or equal to 10000\n getHistory(addressOrName, startBlock, endBlock) {\n return __awaiter(this, void 0, void 0, function* () {\n const params = {\n action: \"txlist\",\n address: (yield this.resolveName(addressOrName)),\n startblock: ((startBlock == null) ? 0 : startBlock),\n endblock: ((endBlock == null) ? 99999999 : endBlock),\n sort: \"asc\"\n };\n const result = yield this.fetch(\"account\", params);\n return result.map((tx) => {\n [\"contractAddress\", \"to\"].forEach(function (key) {\n if (tx[key] == \"\") {\n delete tx[key];\n }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n const item = this.formatter.transactionResponse(tx);\n if (tx.timeStamp) {\n item.timestamp = parseInt(tx.timeStamp);\n }\n return item;\n });\n });\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=etherscan-provider.js.map","\"use strict\";\nexport function shuffled(array) {\n array = array.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n return array;\n}\n//# sourceMappingURL=shuffle.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction now() { return (new Date()).getTime(); }\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks) {\n let result = null;\n for (let i = 0; i < networks.length; i++) {\n const network = networks[i];\n // Null! We do not know our network; bail.\n if (network == null) {\n return null;\n }\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n }\n else {\n result = network;\n }\n }\n return result;\n}\nfunction median(values, maxDelta) {\n values = values.slice().sort();\n const middle = Math.floor(values.length / 2);\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n // Even length; take the average of the two middle\n const a = values[middle - 1], b = values[middle];\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n return (a + b) / 2;\n}\nfunction serialize(value) {\n if (value === null) {\n return \"null\";\n }\n else if (typeof (value) === \"number\" || typeof (value) === \"boolean\") {\n return JSON.stringify(value);\n }\n else if (typeof (value) === \"string\") {\n return value;\n }\n else if (BigNumber.isBigNumber(value)) {\n return value.toString();\n }\n else if (Array.isArray(value)) {\n return JSON.stringify(value.map((i) => serialize(i)));\n }\n else if (typeof (value) === \"object\") {\n const keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map((key) => {\n let v = value[key];\n if (typeof (v) === \"function\") {\n v = \"[function]\";\n }\n else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n throw new Error(\"unknown value type: \" + typeof (value));\n}\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n;\nfunction stall(duration) {\n let cancel = null;\n let timer = null;\n let promise = (new Promise((resolve) => {\n cancel = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n };\n timer = setTimeout(cancel, duration);\n }));\n const wait = (func) => {\n promise = promise.then(func);\n return promise;\n };\n function getPromise() {\n return promise;\n }\n return { cancel, getPromise, wait };\n}\nconst ForwardErrors = [\n Logger.errors.CALL_EXCEPTION,\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\nconst ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n;\nfunction exposeDebugConfig(config, now) {\n const result = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: () => config.provider });\n if (config.start) {\n result.start = config.start;\n }\n if (now) {\n result.duration = (now - config.start);\n }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n }\n else {\n result.result = config.result || null;\n }\n }\n return result;\n}\nfunction normalizedTally(normalize, quorum) {\n return function (configs) {\n // Count the votes for each result\n const tally = {};\n configs.forEach((c) => {\n const value = normalize(c.result);\n if (!tally[value]) {\n tally[value] = { count: 0, result: c.result };\n }\n tally[value].count++;\n });\n // Check for a quorum on any given result\n const keys = Object.keys(tally);\n for (let i = 0; i < keys.length; i++) {\n const check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n // No quroum\n return undefined;\n };\n}\nfunction getProcessFunc(provider, method, params) {\n let normalize = serialize;\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function (configs) {\n const values = configs.map((c) => c.result);\n // Get the median block number\n let blockNumber = median(configs.map((c) => c.result), 2);\n if (blockNumber == null) {\n return undefined;\n }\n blockNumber = Math.ceil(blockNumber);\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) {\n blockNumber++;\n }\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n return provider._highestBlockNumber;\n };\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function (configs) {\n const values = configs.map((c) => c.result);\n values.sort();\n return values[Math.floor(values.length / 2)];\n };\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function (configs) {\n return median(configs.map((c) => c.result));\n };\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function (tx) {\n if (tx == null) {\n return null;\n }\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return serialize(tx);\n };\n break;\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function (block) {\n if (block == null) {\n return null;\n }\n block = shallowCopy(block);\n block.transactions = block.transactions.map((tx) => {\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n }\n else {\n normalize = function (block) {\n if (block == null) {\n return null;\n }\n return serialize(block);\n };\n }\n break;\n default:\n throw new Error(\"unknown method: \" + method);\n }\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n}\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nfunction waitForSync(config, blockNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n const provider = (config.provider);\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return provider;\n }\n return poll(() => {\n return new Promise((resolve, reject) => {\n setTimeout(function () {\n // We are synced\n if (provider.blockNumber >= blockNumber) {\n return resolve(provider);\n }\n // We're done; just quit\n if (config.cancelled) {\n return resolve(null);\n }\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider });\n });\n}\nfunction getRunner(config, currentBlockNumber, method, params) {\n return __awaiter(this, void 0, void 0, function* () {\n let provider = config.provider;\n switch (method) {\n case \"getBlockNumber\":\n case \"getGasPrice\":\n return provider[method]();\n case \"getEtherPrice\":\n if (provider.getEtherPrice) {\n return provider.getEtherPrice();\n }\n break;\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = yield waitForSync(config, currentBlockNumber);\n }\n return provider[method](params.address, params.blockTag || \"latest\");\n case \"getStorageAt\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = yield waitForSync(config, currentBlockNumber);\n }\n return provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\");\n case \"getBlock\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = yield waitForSync(config, currentBlockNumber);\n }\n return provider[(params.includeTransactions ? \"getBlockWithTransactions\" : \"getBlock\")](params.blockTag || params.blockHash);\n case \"call\":\n case \"estimateGas\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = yield waitForSync(config, currentBlockNumber);\n }\n return provider[method](params.transaction);\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n return provider[method](params.transactionHash);\n case \"getLogs\": {\n let filter = params.filter;\n if ((filter.fromBlock && isHexString(filter.fromBlock)) || (filter.toBlock && isHexString(filter.toBlock))) {\n provider = yield waitForSync(config, currentBlockNumber);\n }\n return provider.getLogs(filter);\n }\n }\n return logger.throwError(\"unknown method error\", Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n });\n });\n}\nexport class FallbackProvider extends BaseProvider {\n constructor(providers, quorum) {\n logger.checkNew(new.target, FallbackProvider);\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n const providerConfigs = providers.map((configOrProvider, index) => {\n if (Provider.isProvider(configOrProvider)) {\n const stallTimeout = isCommunityResource(configOrProvider) ? 2000 : 750;\n const priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout, priority });\n }\n const config = shallowCopy(configOrProvider);\n if (config.priority == null) {\n config.priority = 1;\n }\n if (config.stallTimeout == null) {\n config.stallTimeout = isCommunityResource(configOrProvider) ? 2000 : 750;\n }\n if (config.weight == null) {\n config.weight = 1;\n }\n const weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", `providers[${index}].weight`, weight);\n }\n return Object.freeze(config);\n });\n const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n if (quorum == null) {\n quorum = total / 2;\n }\n else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n // Are all providers' networks are known\n let networkOrReady = checkNetworks(providerConfigs.map((c) => (c.provider).network));\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n super(networkOrReady);\n // Preserve a copy, so we do not get mutated\n defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n defineReadOnly(this, \"quorum\", quorum);\n this._highestBlockNumber = -1;\n }\n detectNetwork() {\n return __awaiter(this, void 0, void 0, function* () {\n const networks = yield Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n return checkNetworks(networks);\n });\n }\n perform(method, params) {\n return __awaiter(this, void 0, void 0, function* () {\n // Sending transactions is special; always broadcast it to all backends\n if (method === \"sendTransaction\") {\n const results = yield Promise.all(this.providerConfigs.map((c) => {\n return c.provider.sendTransaction(params.signedTransaction).then((result) => {\n return result.hash;\n }, (error) => {\n return error;\n });\n }));\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (let i = 0; i < results.length; i++) {\n const result = results[i];\n if (typeof (result) === \"string\") {\n return result;\n }\n }\n // They were all an error; pick the first error\n throw results[0];\n }\n // We need to make sure we are in sync with our backends, so we need\n // to know this before we can make a lot of calls\n if (this._highestBlockNumber === -1 && method !== \"getBlockNumber\") {\n yield this.getBlockNumber();\n }\n const processFunc = getProcessFunc(this, method, params);\n // Shuffle the providers and then sort them by their priority; we\n // shallowCopy them since we will store the result in them too\n const configs = shuffled(this.providerConfigs.map(shallowCopy));\n configs.sort((a, b) => (a.priority - b.priority));\n const currentBlockNumber = this._highestBlockNumber;\n let i = 0;\n let first = true;\n while (true) {\n const t0 = now();\n // Compute the inflight weight (exclude anything past)\n let inflightWeight = configs.filter((c) => (c.runner && ((t0 - c.start) < c.stallTimeout)))\n .reduce((accum, c) => (accum + c.weight), 0);\n // Start running enough to meet quorum\n while (inflightWeight < this.quorum && i < configs.length) {\n const config = configs[i++];\n const rid = nextRid++;\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(() => { config.staller = null; });\n config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n config.done = true;\n config.result = result;\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n }, (error) => {\n config.done = true;\n config.error = error;\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n });\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n inflightWeight += config.weight;\n }\n // Wait for anything meaningful to finish or stall out\n const waiting = [];\n configs.forEach((c) => {\n if (c.done || !c.runner) {\n return;\n }\n waiting.push(c.runner);\n if (c.staller) {\n waiting.push(c.staller.getPromise());\n }\n });\n if (waiting.length) {\n yield Promise.race(waiting);\n }\n // Check the quorum and process the results; the process function\n // may additionally decide the quorum is not met\n const results = configs.filter((c) => (c.done && c.error == null));\n if (results.length >= this.quorum) {\n const result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n return result;\n }\n if (!first) {\n yield stall(100).getPromise();\n }\n first = false;\n }\n // No result, check for errors that should be forwarded\n const errors = configs.reduce((accum, c) => {\n if (!c.done || c.error == null) {\n return accum;\n }\n const code = (c.error).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) {\n accum[code] = { error: c.error, weight: 0 };\n }\n accum[code].weight += c.weight;\n }\n return accum;\n }, ({}));\n Object.keys(errors).forEach((errorCode) => {\n const tally = errors[errorCode];\n if (tally.weight < this.quorum) {\n return;\n }\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n const e = (tally.error);\n const props = {};\n ForwardProperties.forEach((name) => {\n if (e[name] == null) {\n return;\n }\n props[name] = e[name];\n });\n logger.throwError(e.reason || e.message, errorCode, props);\n });\n // All configs have run to completion; we will never get more data\n if (configs.filter((c) => !c.done).length === 0) {\n break;\n }\n }\n // Shut down any stallers; shouldn't be any\n configs.forEach(c => {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n return logger.throwError(\"failed to meet quorum\", Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map((c) => exposeDebugConfig(c)),\n provider: this\n });\n });\n }\n}\n//# sourceMappingURL=fallback-provider.js.map","\"use strict\";\nconst IpcProvider = null;\nexport { IpcProvider };\n//# sourceMappingURL=ipc-provider.js.map","\"use strict\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { showThrottleMessage } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nexport class InfuraWebSocketProvider extends WebSocketProvider {\n constructor(network, apiKey) {\n const provider = new InfuraProvider(network, apiKey);\n const connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\nexport class InfuraProvider extends UrlJsonRpcProvider {\n static getWebSocketProvider(network, apiKey) {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n static getApiKey(apiKey) {\n const apiKeyObj = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n if (apiKey == null) {\n return apiKeyObj;\n }\n if (typeof (apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n }\n else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof (apiKey.projectId) === \"string\"), \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof (apiKey.projectSecret) === \"string\"), \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n }\n else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n apiKeyObj.apiKey = apiKeyObj.projectId;\n return apiKeyObj;\n }\n static getUrl(network, apiKey) {\n let host = null;\n switch (network ? network.name : \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"ropsten\":\n host = \"ropsten.infura.io\";\n break;\n case \"rinkeby\":\n host = \"rinkeby.infura.io\";\n break;\n case \"kovan\":\n host = \"kovan.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n const connection = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt, url) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret;\n }\n return connection;\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n//# sourceMappingURL=infura-provider.js.map","import { deepCopy } from \"@ethersproject/properties\";\nimport { fetchJson } from \"@ethersproject/web\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n// Experimental\nexport class JsonRpcBatchProvider extends JsonRpcProvider {\n send(method, params) {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n if (this._pendingBatch == null) {\n this._pendingBatch = [];\n }\n const inflightRequest = { request, resolve: null, reject: null };\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n this._pendingBatch.push(inflightRequest);\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\n // Get teh current batch and clear it, so new requests\n // go into the next batch\n const batch = this._pendingBatch;\n this._pendingBatch = null;\n this._pendingBatchAggregator = null;\n // Get the request as an array of requests\n const request = batch.map((inflight) => inflight.request);\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: deepCopy(request),\n provider: this\n });\n return fetchJson(this.connection, JSON.stringify(request)).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach((inflightRequest, index) => {\n const payload = result[index];\n if (payload.error) {\n const error = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n inflightRequest.reject(error);\n }\n else {\n inflightRequest.resolve(payload.result);\n }\n });\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n batch.forEach((inflightRequest) => {\n inflightRequest.reject(error);\n });\n });\n }, 10);\n }\n return promise;\n }\n}\n//# sourceMappingURL=json-rpc-batch-provider.js.map","/* istanbul ignore file */\n\"use strict\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n static getApiKey(apiKey) {\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n static getUrl(network, apiKey) {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return (host + \"?apiKey=\" + apiKey);\n }\n}\n//# sourceMappingURL=nodesmith-provider.js.map","\"use strict\";\nimport { getStatic } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n// These are load-balancer-based application IDs\nconst defaultApplicationIds = {\n homestead: \"6004bcd10040261633ade990\",\n ropsten: \"6004bd4d0040261633ade991\",\n rinkeby: \"6004bda20040261633ade994\",\n goerli: \"6004bd860040261633ade992\",\n};\nexport class PocketProvider extends UrlJsonRpcProvider {\n constructor(network, apiKey) {\n // We need a bit of creativity in the constructor because\n // Pocket uses different default API keys based on the network\n if (apiKey == null) {\n const n = getStatic(new.target, \"getNetwork\")(network);\n if (n) {\n const applicationId = defaultApplicationIds[n.name];\n if (applicationId) {\n apiKey = {\n applicationId: applicationId,\n loadBalancer: true\n };\n }\n }\n // If there was any issue above, we don't know this network\n if (apiKey == null) {\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n }\n super(network, apiKey);\n }\n static getApiKey(apiKey) {\n // Most API Providers allow null to get the default configuration, but\n // Pocket requires the network to decide the default provider, so we\n // rely on hijacking the constructor to add a sensible default for us\n if (apiKey == null) {\n logger.throwArgumentError(\"PocketProvider.getApiKey does not support null apiKey\", \"apiKey\", apiKey);\n }\n const apiKeyObj = {\n applicationId: null,\n loadBalancer: false,\n applicationSecretKey: null\n };\n // Parse applicationId and applicationSecretKey\n if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n }\n else if (apiKey.applicationSecretKey != null) {\n logger.assertArgument((typeof (apiKey.applicationId) === \"string\"), \"applicationSecretKey requires an applicationId\", \"applicationId\", apiKey.applicationId);\n logger.assertArgument((typeof (apiKey.applicationSecretKey) === \"string\"), \"invalid applicationSecretKey\", \"applicationSecretKey\", \"[REDACTED]\");\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n apiKeyObj.loadBalancer = !!apiKey.loadBalancer;\n }\n else if (apiKey.applicationId) {\n logger.assertArgument((typeof (apiKey.applicationId) === \"string\"), \"apiKey.applicationId must be a string\", \"apiKey.applicationId\", apiKey.applicationId);\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.loadBalancer = !!apiKey.loadBalancer;\n }\n else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n return apiKeyObj;\n }\n static getUrl(network, apiKey) {\n let host = null;\n switch (network ? network.name : \"unknown\") {\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.gateway.pokt.network\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.gateway.pokt.network\";\n break;\n case \"goerli\":\n host = \"eth-goerli.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n let url = null;\n if (apiKey.loadBalancer) {\n url = `https:/\\/${host}/v1/lb/${apiKey.applicationId}`;\n }\n else {\n url = `https:/\\/${host}/v1/${apiKey.applicationId}`;\n }\n const connection = { url };\n // Initialize empty headers\n connection.headers = {};\n // Apply application secret key\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey;\n }\n return connection;\n }\n isCommunityResource() {\n return (this.applicationId === defaultApplicationIds[this.network.name]);\n }\n}\n//# sourceMappingURL=pocket-provider.js.map","\"use strict\";\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { BaseProvider, Resolver } from \"./base-provider\";\nimport { AlchemyProvider, AlchemyWebSocketProvider } from \"./alchemy-provider\";\nimport { CloudflareProvider } from \"./cloudflare-provider\";\nimport { EtherscanProvider } from \"./etherscan-provider\";\nimport { FallbackProvider } from \"./fallback-provider\";\nimport { IpcProvider } from \"./ipc-provider\";\nimport { InfuraProvider, InfuraWebSocketProvider } from \"./infura-provider\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\nimport { JsonRpcBatchProvider } from \"./json-rpc-batch-provider\";\nimport { NodesmithProvider } from \"./nodesmith-provider\";\nimport { PocketProvider } from \"./pocket-provider\";\nimport { StaticJsonRpcProvider, UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Web3Provider } from \"./web3-provider\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n////////////////////////\n// Helper Functions\nfunction getDefaultProvider(network, options) {\n if (network == null) {\n network = \"homestead\";\n }\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof (network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n // Handle http and ws (and their secure variants)\n const match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1]) {\n case \"http\":\n return new JsonRpcProvider(network);\n case \"ws\":\n return new WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n const n = getNetwork(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n return n._defaultProvider({\n FallbackProvider,\n AlchemyProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n Web3Provider,\n IpcProvider,\n }, options);\n}\n////////////////////////\n// Exports\nexport { \n// Abstract Providers (or Abstract-ish)\nProvider, BaseProvider, Resolver, UrlJsonRpcProvider, \n///////////////////////\n// Concrete Providers\nFallbackProvider, AlchemyProvider, AlchemyWebSocketProvider, CloudflareProvider, EtherscanProvider, InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider, JsonRpcBatchProvider, NodesmithProvider, PocketProvider, StaticJsonRpcProvider, Web3Provider, WebSocketProvider, IpcProvider, \n///////////////////////\n// Signer\nJsonRpcSigner, \n///////////////////////\n// Functions\ngetDefaultProvider, getNetwork, isCommunityResource, isCommunityResourcable, showThrottleMessage, \n///////////////////////\n// Objects\nFormatter };\n//# sourceMappingURL=index.js.map","export const version = \"ethers/5.5.1\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { BaseContract, Contract, ContractFactory } from \"@ethersproject/contracts\";\nimport { BigNumber, FixedNumber } from \"@ethersproject/bignumber\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\nimport * as constants from \"@ethersproject/constants\";\nimport * as providers from \"@ethersproject/providers\";\nimport { getDefaultProvider } from \"@ethersproject/providers\";\nimport { Wordlist, wordlists } from \"@ethersproject/wordlists\";\nimport * as utils from \"./utils\";\nimport { ErrorCode as errors, Logger } from \"@ethersproject/logger\";\n////////////////////////\n// Compile-Time Constants\n// This is generated by \"npm run dist\"\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n////////////////////////\n// Exports\nexport { Signer, Wallet, VoidSigner, getDefaultProvider, providers, BaseContract, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, \n////////////////////////\n// Compile-Time Constants\nversion, Wordlist };\n//# sourceMappingURL=ethers.js.map","\"use strict\";\n// To modify this file, you must update ./misc/admin/lib/cmds/update-exports.js\nimport * as ethers from \"./ethers\";\ntry {\n const anyGlobal = window;\n if (anyGlobal._ethers == null) {\n anyGlobal._ethers = ethers;\n }\n}\ncatch (error) { }\nexport { ethers };\nexport { Signer, Wallet, VoidSigner, getDefaultProvider, providers, BaseContract, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, \n////////////////////////\n// Compile-Time Constants\nversion, Wordlist } from \"./ethers\";\n//# sourceMappingURL=index.js.map","\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (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 h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\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(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n"],"names":["root","checkInt","value","parseInt","checkInts","arrayish","length","i","coerceArray","arg","copy","buffer","ArrayBuffer","isView","name","slice","Array","prototype","call","isArray","Error","Uint8Array","createArray","copyArray","sourceArray","targetArray","targetStart","sourceStart","sourceEnd","set","convertUtf8","toBytes","text","result","encodeURI","c","charCodeAt","push","substr","fromBytes","bytes","String","fromCharCode","join","convertHex","Hex","v","numberOfRounds","rcon","S","Si","T1","T2","T3","T4","T5","T6","T7","T8","U1","U2","U3","U4","convertToInt32","AES","key","this","Object","defineProperty","_prepare","rounds","_Ke","_Kd","index","roundKeyCount","KC","tk","tt","rconpointer","t","r","encrypt","plaintext","a","decrypt","ciphertext","ModeOfOperationECB","description","_aes","block","ModeOfOperationCBC","iv","_lastCipherblock","j","ModeOfOperationCFB","segmentSize","_shiftRegister","xorSegment","encrypted","ModeOfOperationOFB","_lastPrecipher","_lastPrecipherIndex","Counter","initialValue","_counter","setValue","setBytes","increment","ModeOfOperationCTR","counter","_remainingCounter","_remainingCounterIndex","aesjs","ModeOfOperation","ecb","cbc","cfb","ofb","ctr","utils","hex","utf8","padding","pkcs7","pad","data","padder","strip","_arrayTest","module","exports","hashMessage","message","pbkdf2","password","salt","iterations","keylen","hashAlgorithm","hLen","l","DK","block1","T","U","Math","ceil","k","destPos","len","logger","Wordlist","constructor","locale","checkAbstract","split","mnemonic","toLowerCase","words","wordlist","word","getWord","getWordIndex","id","lang","loadWords","replace","substring","check","langEn","super","indexOf","register","wordlists","en","N","MasterSecret","HardenedBit","getUpperMask","bits","bytes32","base58check","sha2","getWordlist","throwArgumentError","_constructorGuard","defaultPath","HDNode","constructorGuard","privateKey","publicKey","parentFingerprint","chainCode","depth","mnemonicOrPath","checkNew","signingKey","compressedPublicKey","computeAddress","path","neuter","_derive","I","IL","IR","ki","Ki","add","mod","_addPoint","srcMnemonic","freeze","phrase","fingerprint","derivePath","components","shift","component","match","seed","seedArray","entropyToMnemonic","mnemonicToEntropy","_fromSeed","mnemonicToSeed","extendedKey","checkNormalize","entropy","offset","normalize","bit","entropyBits","checksumMask","indices","remainingBits","checksumBits","checksum","map","isValidMnemonic","error","getAccountPath","anyGlobal","window","g","crypto","msCrypto","randomBytes","getRandomValues","warn","throwError","operation","looseArrayify","hexString","zpad","getPassword","searchPath","object","currentChild","comps","matchingChild","uuidV4","CrowdsaleAccount","isCrowdsaleAccount","_isCrowdsaleAccount","json","JSON","parse","ethaddr","encseed","encryptedSeed","aesCbc","seedHex","seedHexBytes","address","isCrowdsaleWallet","isKeystoreWallet","version","getJsonWalletAddress","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","apply","hasMnemonic","KeystoreAccount","isKeystoreAccount","_isKeystoreAccount","_getAccount","aesCtr","_decrypt","mnemonicKey","account","mnemonicCiphertext","mnemonicIv","mnemonicCounter","mnemonicAesCtr","node","fromMnemonic","code","argument","pbkdf2Sync","passwordBytes","count","dkLen","prfFunc","_computeKdfKey","pbkdf2Func","scryptFunc","progressCallback","kdf","p","prf","decryptJsonWallet","scrypt","decryptJsonWalletSync","Wallet","provider","curve","_mnemonic","_signingKey","getAddress","connect","signTransaction","transaction","tx","from","signature","signDigest","serialize","signMessage","_signTypedData","domain","types","populated","resolveName","options","client","uuidRandom","uuid","derivedKey","macPrefix","mac","Crypto","cipher","cipherparams","kdfparams","n","dklen","now","Date","timestamp","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","gethFilename","stringify","extraEntropy","verifyMessage","recoverAddress","verifyTypedData","EtherSymbol","WS","WebSocket","NextId","WebSocketProvider","url","network","_pollingInterval","_wsReady","connection","detectNetwork","_websocket","onopen","keys","_requests","forEach","send","payload","onmessage","messageEvent","request","undefined","callback","emit","action","response","method","sub","_subs","params","subscription","processFunc","console","fauxPoll","setInterval","unref","_detectNetwork","resetEventsBlock","blockNumber","poll","rid","jsonrpc","_subscribe","tag","param","subIdPromise","_subIds","all","subId","_startEvent","event","type","number","toNumber","_emitted","_getFilter","filter","removed","formatter","filterLog","emitReceipt","hash","getTransactionReceipt","receipt","_events","log","_stopEvent","listenerCount","destroy","readyState","onerror","close","StaticJsonRpcProvider","_super","create","get","_network","UrlJsonRpcProvider","apiKey","_startPending","isCommunityResource","getSigner","listAccounts","defaultApiKey","AlchemyWebSocketProvider","AlchemyProvider","host","arguments","allowGzip","throttleCallback","attempt","CloudflareProvider","perform","blockTag","getTransactionPostData","gasLimit","gasPrice","maxFeePerGs","maxPriorityFeePerGas","nonce","accessListify","storageKeys","getResult","status","throttleRetry","getJsonResult","checkLogTag","checkError","body","responseText","EtherscanProvider","getBaseUrl","getUrl","query","reduce","accum","baseUrl","getPostUrl","getPostData","apikey","fetch","post","procFunc","throttleSlotInterval","payloadStr","headers","position","signedTransaction","catch","boolean","includeTransactions","txhash","transactionHash","postData","args","fromBlock","toBlock","topics","topic0","logs","blocks","blockHash","getBlock","parseFloat","ethusd","getHistory","addressOrName","startBlock","endBlock","startblock","endblock","sort","creates","contractAddress","item","transactionResponse","timeStamp","shuffled","array","floor","random","tmp","getTime","checkNetworks","networks","chainId","ensAddress","median","values","maxDelta","middle","b","abs","toString","nextRid","stall","duration","cancel","timer","promise","clearTimeout","setTimeout","getPromise","wait","func","ForwardErrors","ForwardProperties","exposeDebugConfig","config","weight","start","getProcessFunc","configs","_highestBlockNumber","confirmations","transactions","quorum","tally","normalizedTally","waitForSync","cancelled","oncePoll","getRunner","currentBlockNumber","getEtherPrice","getStorageAt","getLogs","FallbackProvider","providers","providerConfigs","configOrProvider","stallTimeout","priority","total","networkOrReady","getNetwork","results","sendTransaction","getBlockNumber","first","t0","inflightWeight","runner","staller","backend","waiting","race","errors","errorCode","props","reason","IpcProvider","defaultProjectId","InfuraWebSocketProvider","InfuraProvider","projectId","projectSecret","apiKeyObj","assertArgument","user","JsonRpcBatchProvider","_nextId","_pendingBatch","inflightRequest","_pendingBatchAggregator","batch","inflight","NodesmithProvider","defaultApplicationIds","homestead","ropsten","rinkeby","goerli","PocketProvider","applicationId","loadBalancer","applicationSecretKey","getDefaultProvider","_defaultProvider","JsonRpcProvider","Web3Provider","_ethers","MAX_VALUE","SHA256","m","K","Uint32Array","h0","h1","h2","h3","h4","h5","h6","h7","w","off","u","t1","t2","d","f","h","bytesLeft","bitLenHi","bitLenLo","numZeros","PBKDF2_HMAC_SHA256_OneIter","innerLen","inner","outerKey","dk","incrementCounter","concat","blockmix_salsa8","BY","Yi","x","_X","arraycopy","blockxor","salsa20_8","R","B","D","src","srcPos","dest","checkBufferish","o","ensureInteger","_scrypt","XY","V","totalOps","i1","Bi","currentOp","lastPercent10","stop","state","i0","limit","nextTick","setImmediate","incrementalSMix","steps","percent10","lib","lastProgress","progress","syncScrypt"],"sourceRoot":""}