@thru/sdk 0.2.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.abi.md +112 -0
  2. package/README.md +342 -0
  3. package/dist/abi/index.cjs +946 -0
  4. package/dist/abi/index.cjs.map +1 -0
  5. package/dist/abi/index.d.cts +331 -0
  6. package/dist/abi/index.d.ts +331 -0
  7. package/dist/abi/index.js +892 -0
  8. package/dist/abi/index.js.map +1 -0
  9. package/dist/abi/wasm/bundler/abi_reflect_wasm.d.ts +65 -0
  10. package/dist/abi/wasm/bundler/abi_reflect_wasm.js +5 -0
  11. package/dist/abi/wasm/bundler/abi_reflect_wasm_bg.js +412 -0
  12. package/dist/abi/wasm/bundler/abi_reflect_wasm_bg.wasm +0 -0
  13. package/dist/abi/wasm/bundler/abi_reflect_wasm_bg.wasm.d.ts +24 -0
  14. package/dist/abi/wasm/bundler/package.json +17 -0
  15. package/dist/abi/wasm/node/abi_reflect_wasm.d.ts +65 -0
  16. package/dist/abi/wasm/node/abi_reflect_wasm.js +425 -0
  17. package/dist/abi/wasm/node/abi_reflect_wasm_bg.wasm +0 -0
  18. package/dist/abi/wasm/node/abi_reflect_wasm_bg.wasm.d.ts +24 -0
  19. package/dist/abi/wasm/node/package.json +11 -0
  20. package/dist/abi/wasm/web/abi_reflect_wasm.d.ts +114 -0
  21. package/dist/abi/wasm/web/abi_reflect_wasm.js +499 -0
  22. package/dist/abi/wasm/web/abi_reflect_wasm_bg.wasm +0 -0
  23. package/dist/abi/wasm/web/abi_reflect_wasm_bg.wasm.d.ts +24 -0
  24. package/dist/abi/wasm/web/package.json +15 -0
  25. package/dist/chunk-CVBQ4UPL.js +3614 -0
  26. package/dist/chunk-CVBQ4UPL.js.map +1 -0
  27. package/dist/chunk-NSBPE2FW.js +15 -0
  28. package/dist/chunk-NSBPE2FW.js.map +1 -0
  29. package/dist/chunk-RL3Q6FDE.js +105 -0
  30. package/dist/chunk-RL3Q6FDE.js.map +1 -0
  31. package/dist/chunk-UDIXYJXC.js +260 -0
  32. package/dist/chunk-UDIXYJXC.js.map +1 -0
  33. package/dist/chunk-YQDWOMNO.js +271 -0
  34. package/dist/chunk-YQDWOMNO.js.map +1 -0
  35. package/dist/client-Cfi7zRLm.d.cts +1247 -0
  36. package/dist/client-worIo0a3.d.ts +1247 -0
  37. package/dist/client.cjs +3791 -0
  38. package/dist/client.cjs.map +1 -0
  39. package/dist/client.d.cts +7 -0
  40. package/dist/client.d.ts +7 -0
  41. package/dist/client.js +7 -0
  42. package/dist/client.js.map +1 -0
  43. package/dist/crypto/index.cjs +170 -0
  44. package/dist/crypto/index.cjs.map +1 -0
  45. package/dist/crypto/index.d.cts +60 -0
  46. package/dist/crypto/index.d.ts +60 -0
  47. package/dist/crypto/index.js +5 -0
  48. package/dist/crypto/index.js.map +1 -0
  49. package/dist/helpers/index.cjs +270 -0
  50. package/dist/helpers/index.cjs.map +1 -0
  51. package/dist/helpers/index.d.cts +15 -0
  52. package/dist/helpers/index.d.ts +15 -0
  53. package/dist/helpers/index.js +4 -0
  54. package/dist/helpers/index.js.map +1 -0
  55. package/dist/metafile-cjs.json +1 -0
  56. package/dist/metafile-esm.json +1 -0
  57. package/dist/proto/index.cjs +433 -0
  58. package/dist/proto/index.cjs.map +1 -0
  59. package/dist/proto/index.d.cts +435 -0
  60. package/dist/proto/index.d.ts +435 -0
  61. package/dist/proto/index.js +4 -0
  62. package/dist/proto/index.js.map +1 -0
  63. package/dist/sdk.cjs +4137 -0
  64. package/dist/sdk.cjs.map +1 -0
  65. package/dist/sdk.d.cts +36 -0
  66. package/dist/sdk.d.ts +36 -0
  67. package/dist/sdk.js +7 -0
  68. package/dist/sdk.js.map +1 -0
  69. package/dist/streaming_service_pb-DvCdJiCr.d.cts +4877 -0
  70. package/dist/streaming_service_pb-DvCdJiCr.d.ts +4877 -0
  71. package/dist/webcrypto-LTajLAad.d.cts +3 -0
  72. package/dist/webcrypto-LTajLAad.d.ts +3 -0
  73. package/package.json +88 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/abi/utils/bytes.ts","../../src/abi/utils/runtime.ts","../../src/abi/wasmBridge.ts","../../src/abi/imports/types.ts","../../src/abi/imports/onchainFetcher.ts","../../src/abi/imports/resolveImports.ts"],"names":["result","a","b","c","d","triple","temp1","temp2","value"],"mappings":";;;;AAQO,SAAS,WAAW,GAAA,EAAyB;AAClD,EAAA,IAAI,aAAa,GAAA,CAAI,IAAA,EAAK,CAAE,OAAA,CAAQ,UAAU,EAAE,CAAA;AAChD,EAAA,IAAI,WAAW,UAAA,CAAW,IAAI,KAAK,UAAA,CAAW,UAAA,CAAW,IAAI,CAAA,EAAG;AAC9D,IAAA,UAAA,GAAa,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,EACjC;AACA,EAAA,IAAI,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG,OAAO,IAAI,UAAA,EAAW;AACnD,EAAA,IAAI,UAAA,CAAW,MAAA,GAAS,CAAA,KAAM,CAAA,EAAG;AAC/B,IAAA,MAAM,IAAI,MAAM,qDAAqD,CAAA;AAAA,EACvE;AACA,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,UAAA,CAAW,SAAS,CAAC,CAAA;AAClD,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC7C,IAAA,MAAM,IAAA,GAAO,OAAO,QAAA,CAAS,UAAA,CAAW,MAAM,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAG,EAAE,CAAA;AAC3D,IAAA,IAAI,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA,EAAG;AACtB,MAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,IACjE;AACA,IAAA,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA,GAAI,IAAA;AAAA,EACjB;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,aACd,KAAA,EACY;AACZ,EAAA,IAAI,iBAAiB,UAAA,EAAY;AAC/B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA,EAAG;AAC7B,IAAA,OAAO,IAAI,UAAA,CAAW,KAAA,CAAM,QAAQ,KAAA,CAAM,UAAA,EAAY,MAAM,UAAU,CAAA;AAAA,EACxE;AACA,EAAA,IAAI,iBAAiB,WAAA,EAAa;AAChC,IAAA,OAAO,IAAI,WAAW,KAAK,CAAA;AAAA,EAC7B;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,EAC9B;AACA,EAAA,MAAM,IAAI,UAAU,0BAA0B,CAAA;AAChD;;;AC5CO,SAAS,aAAA,GAAyB;AACvC,EAAA,OAAO,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,OAAA,CAAQ,UAAU,IAAI,CAAA;AACzE;;;ACyBA,IAAI,iBAAA;AAiBG,SAAS,cAAc,GAAA,EAAmB;AAC/C,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,OAAA,CAAQ,KAAK,4EAA4E,CAAA;AACzF,IAAA;AAAA,EACF;AACA,EAAA,iBAAA,GAAoB,GAAA;AACtB;AAEA,IAAM,UAAU,cAAA,EAAe;AAC/B,IAAI,eAAA;AACJ,IAAI,cAAA;AACJ,IAAM,aAAA,GAAgB,IAAI,QAAA,CAAS,WAAA,EAAa,0BAA0B,CAAA;AAG1E,IAAM,gBAAA,GAAmB,IAAI,QAAA,CAAS,MAAA,EAAQ,QAAQ,iCAAiC,CAAA;AAKvF,SAAS,aAAa,KAAA,EAAkD;AACtE,EAAA,OAAQ,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,IAAS,OAAO,KAAA,KAAU,UAAA;AAC3E;AAEA,SAAS,cAAA,CAAe,OAAgB,IAAA,EAA0C;AAChF,EAAA,OAAO,aAAa,KAAK,CAAA,IAAK,OAAO,KAAA,CAAM,IAAI,CAAA,KAAM,UAAA;AACvD;AAEA,SAAS,sBAAsB,KAAA,EAA8C;AAC3E,EAAA,OACE,cAAA,CAAe,KAAA,EAAO,SAAS,CAAA,IAC/B,cAAA,CAAe,OAAO,qBAAqB,CAAA,IAC3C,cAAA,CAAe,KAAA,EAAO,mBAAmB,CAAA;AAE7C;AAEA,SAAS,yBAAyB,KAAA,EAAwB;AACxD,EAAA,IAAI,KAAA,KAAU,MAAM,OAAO,MAAA;AAC3B,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,OAAA;AACjC,EAAA,OAAO,OAAO,KAAA;AAChB;AAEA,SAAS,sBAAA,CAAuB,UAAmB,YAAA,EAA2C;AAC5F,EAAA,MAAM,aAAA,GAAgB,YAAA,CAAa,QAAQ,CAAA,GAAI,SAAS,OAAA,GAAU,MAAA;AAClE,EAAA,MAAM,YAAY,aAAA,IAAiB,QAAA;AAEnC,EAAA,IAAI,qBAAA,CAAsB,SAAS,CAAA,EAAG;AACpC,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,IAAI,qBAAA,CAAsB,QAAQ,CAAA,EAAG;AACnC,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAI,KAAA;AAAA,IACR,CAAA,wDAAA,EAA2D,YAAY,CAAA,WAAA,EAAc,wBAAA,CAAyB,QAAQ,CAAC,CAAA,CAAA;AAAA,GACzH;AACF;AAEA,SAAS,oBAAA,GAA+B;AACtC,EAAA,MAAM,MAAM,MAAA,CAAA,IAAA,CAAY,GAAA;AACxB,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,GAAA,CAAI,MAAA,GAAS,GAAG,OAAO,GAAA;AAEtD,EAAA,MAAM,QAAA,GACJ,OAAO,UAAA,CAAW,QAAA,KAAa,YAAY,UAAA,CAAW,QAAA,GAClD,WAAW,QAAA,GACX,MAAA;AACN,EAAA,IAAI,OAAO,QAAA,EAAU,IAAA,KAAS,YAAY,QAAA,CAAS,IAAA,CAAK,SAAS,CAAA,EAAG;AAClE,IAAA,OAAO,QAAA,CAAS,IAAA;AAAA,EAClB;AAEA,EAAA,OAAO,UAAA;AACT;AAEA,eAAe,aAAa,SAAA,EAAqC;AAC/D,EAAA,OAAO,cAAc,SAAS,CAAA;AAChC;AAEA,SAAS,cAAc,SAAA,EAAwC;AAC7D,EAAA,IAAI;AACF,IAAA,MAAM,SAAA,GAAY,OAAO,SAAA,KAAY,UAAA,GAAa,SAAA,GAAU,KAAA,CAAA;AAC5D,IAAA,IAAI,CAAC,WAAW,OAAO,KAAA,CAAA;AAEvB,IAAA,MAAM,SAAA,GAAY,SAAA,CAAU,UAAA,CAAW,OAAO,CAAA,GAC1C,kBAAA,CAAmB,IAAI,GAAA,CAAI,SAAS,CAAA,CAAE,QAAQ,CAAA,GAC9C,SAAA;AACJ,IAAA,OAAO,UAAU,SAAS,CAAA;AAAA,EAC5B,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAEA,SAAS,cAAA,GAAyB;AAChC,EAAA,MAAM,MAAM,oBAAA,EAAqB;AACjC,EAAA,IAAI,GAAA,CAAI,QAAA,CAAS,WAAW,CAAA,EAAG,OAAO,gBAAA;AACtC,EAAA,IAAI,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,EAAG,OAAO,QAAA;AACnC,EAAA,OAAO,QAAA;AACT;AAEA,eAAe,YAAA,GAA6C;AAC1D,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,OAAO,cAAA;AAAA,EACT;AACA,EAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,IAAA,IAAI,MAAA;AACJ,IAAA,IAAI,eAAc,EAAG;AACnB,MAAA,MAAA,GAAS,gBAAA,EAAiB;AAAA,IAC5B,WAAW,iBAAA,EAAmB;AAC5B,MAAA,MAAA,GAAS,gBAAgB,iBAAiB,CAAA;AAAA,IAC5C,CAAA,MAAO;AACL,MAAA,MAAA,GAAS,mBAAA,EAAoB;AAAA,IAC/B;AACA,IAAA,eAAA,GAAkB,MAAA,CAAO,IAAA;AAAA,MACvB,CAAC,QAAA,KAAa;AACZ,QAAA,cAAA,GAAiB,QAAA;AACjB,QAAA,OAAO,QAAA;AAAA,MACT,CAAA;AAAA,MACA,CAAC,GAAA,KAAQ;AACP,QAAA,eAAA,GAAkB,MAAA;AAClB,QAAA,MAAM,GAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,eAAA;AACT;AAEA,eAAe,gBAAgB,OAAA,EAA+C;AAC5E,EAAA,MAAM,YAAY,gBAAA,CAAiB,CAAA,EAAG,OAAO,CAAA,wBAAA,CAAA,EAA4B,sBAAsB,CAAA;AAC/F,EAAA,MAAM,GAAA,GAAO,MAAM,YAAA,CAAa,SAAS,CAAA;AAKzC,EAAA,MAAM,GAAA,CAAI,QAAQ,OAAO,CAAA;AAEzB,EAAA,OAAO,GAAA;AACT;AAEA,eAAe,mBAAA,GAAoD;AACjE,EAAA,MAAM,GAAA,GAAM,MAAM,cAAA,CAAe,6BAA6B,CAAA;AAC9D,EAAA,OAAO,GAAA;AACT;AAEA,eAAe,gBAAA,GAAiD;AAC9D,EAAA,MAAM,YAAA,GAAe,0BAAA;AACrB,EAAA,MAAM,SAAA,GAAY,iBAAiB,CAAA,EAAG,OAAO,IAAI,YAAY,CAAA,CAAA,EAAI,sBAAsB,CAAA;AACvF,EAAA,MAAM,WAAW,aAAA,CAAc,SAAS,CAAA,IAAM,MAAM,aAAa,SAAS,CAAA;AAC1E,EAAA,MAAM,GAAA,GAAM,sBAAA,CAAuB,QAAA,EAAU,YAAY,CAAA;AACzD,EAAA,IAAI,OAAO,GAAA,CAAI,UAAA,KAAe,UAAA,EAAY;AACxC,IAAA,GAAA,CAAI,UAAA,EAAW;AAAA,EACjB;AACA,EAAA,OAAO,GAAA;AACT;AAEA,eAAe,eAAe,YAAA,EAAoD;AAChF,EAAA,MAAM,SAAA,GAAY,iBAAiB,CAAA,EAAG,OAAO,IAAI,YAAY,CAAA,CAAA,EAAI,sBAAsB,CAAA;AACvF,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,SAAS,CAAA;AAC7C,EAAA,OAAO,sBAAA,CAAuB,UAAU,YAAY,CAAA;AACtD;AAEA,eAAe,WAAA,CACb,OAAA,EACA,QAAA,EACA,MAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,OAAA,CAAQ,OAAA,EAAS,UAAU,MAAM,CAAA;AACzD,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAEA,eAAe,aAAa,OAAA,EAAqC;AAC/D,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,eAAA,CAAgB,OAAO,CAAA;AAC/C,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAEA,eAAe,sBAAA,CACb,SACA,MAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,mBAAA,CAAoB,OAAA,EAAS,MAAM,CAAA;AAC3D,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAEA,eAAe,kBAAA,CACb,SACA,MAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,eAAA,CAAgB,OAAA,EAAS,MAAM,CAAA;AACvD,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAEA,eAAe,gBAAA,CACb,SACA,MAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,OAAA,EAAS,MAAM,CAAA;AACrD,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAIA,eAAsB,OAAA,CACpB,OAAA,EACA,QAAA,EACA,OAAA,EACoB;AACpB,EAAA,IAAI,OAAA,CAAQ,SAAS,QAAA,EAAU;AAC7B,IAAA,OAAO,YAAY,OAAA,EAAS,QAAA,EAAU,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACnE;AACA,EAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC1B,IAAA,OAAO,YAAY,OAAA,EAAS,QAAA,EAAU,UAAA,CAAW,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACjE;AACA,EAAA,MAAM,IAAI,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACxC;AAEA,eAAsB,cAAc,OAAA,EAAqC;AACvE,EAAA,OAAO,aAAa,OAAO,CAAA;AAC7B;AAIA,eAAsB,kBAAA,CACpB,SACA,OAAA,EACoB;AACpB,EAAA,IAAI,OAAA,CAAQ,SAAS,QAAA,EAAU;AAC7B,IAAA,OAAO,sBAAA,CAAuB,OAAA,EAAS,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACpE;AACA,EAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC1B,IAAA,OAAO,sBAAA,CAAuB,OAAA,EAAS,UAAA,CAAW,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAClE;AACA,EAAA,MAAM,IAAI,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACxC;AAEA,eAAsB,cAAA,CACpB,SACA,OAAA,EACoB;AACpB,EAAA,IAAI,OAAA,CAAQ,SAAS,QAAA,EAAU;AAC7B,IAAA,OAAO,kBAAA,CAAmB,OAAA,EAAS,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChE;AACA,EAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC1B,IAAA,OAAO,kBAAA,CAAmB,OAAA,EAAS,UAAA,CAAW,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC9D;AACA,EAAA,MAAM,IAAI,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACxC;AAEA,eAAsB,YAAA,CACpB,SACA,OAAA,EACoB;AACpB,EAAA,IAAI,OAAA,CAAQ,SAAS,QAAA,EAAU;AAC7B,IAAA,OAAO,gBAAA,CAAiB,OAAA,EAAS,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC9D;AACA,EAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC1B,IAAA,OAAO,gBAAA,CAAiB,OAAA,EAAS,UAAA,CAAW,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC5D;AACA,EAAA,MAAM,IAAI,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACxC;AAEA,eAAsB,gBAAA,GAAkC;AACtD,EAAA,MAAM,YAAA,EAAa;AACrB;AAEA,SAAS,eAAA,GAAuC;AAC9C,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,OAAO,cAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAI,MAAM,8DAA8D,CAAA;AAChF;AAMO,SAAS,gBAAA,CAAiB,KAAgB,OAAA,EAA8C;AAC7F,EAAA,MAAM,WAAW,eAAA,EAAgB;AACjC,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,GAAG,CAAA;AAErC,EAAA,IAAI,WAAW,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,SAAS,CAAA,EAAG;AAC9C,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA;AAC1C,IAAA,MAAMA,OAAAA,GAAS,QAAA,CAAS,8BAAA,CAA+B,UAAA,EAAY,WAAW,CAAA;AAC9E,IAAA,OAAO,IAAA,CAAK,MAAMA,OAAM,CAAA;AAAA,EAC1B;AAEA,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,iBAAA,CAAkB,UAAU,CAAA;AACpD,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAWA,eAAe,uBAAA,CACb,QAAA,EACA,WAAA,EACA,QAAA,EACA,MAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA;AAC5C,EAAA,MAAM,SAAS,QAAA,CAAS,qBAAA,CAAsB,YAAA,EAAc,WAAA,EAAa,UAAU,MAAM,CAAA;AACzF,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAEA,eAAe,kCAAA,CACb,QAAA,EACA,WAAA,EACA,MAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,iCAAA,CAAkC,YAAA,EAAc,aAAa,MAAM,CAAA;AAC3F,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAEA,eAAe,8BAAA,CACb,QAAA,EACA,WAAA,EACA,MAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,6BAAA,CAA8B,YAAA,EAAc,aAAa,MAAM,CAAA;AACvF,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAEA,eAAe,4BAAA,CACb,QAAA,EACA,WAAA,EACA,MAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,2BAAA,CAA4B,YAAA,EAAc,aAAa,MAAM,CAAA;AACrF,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAUA,eAAsB,mBAAA,CACpB,QAAA,EACA,WAAA,EACA,QAAA,EACA,OAAA,EACoB;AACpB,EAAA,IAAI,OAAA,CAAQ,SAAS,QAAA,EAAU;AAC7B,IAAA,OAAO,wBAAwB,QAAA,EAAU,WAAA,EAAa,UAAU,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC7F;AACA,EAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC1B,IAAA,OAAO,wBAAwB,QAAA,EAAU,WAAA,EAAa,UAAU,UAAA,CAAW,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC3F;AACA,EAAA,MAAM,IAAI,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACxC;AAKA,eAAsB,8BAAA,CACpB,QAAA,EACA,WAAA,EACA,OAAA,EACoB;AACpB,EAAA,IAAI,OAAA,CAAQ,SAAS,QAAA,EAAU;AAC7B,IAAA,OAAO,mCAAmC,QAAA,EAAU,WAAA,EAAa,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC9F;AACA,EAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC1B,IAAA,OAAO,mCAAmC,QAAA,EAAU,WAAA,EAAa,UAAA,CAAW,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC5F;AACA,EAAA,MAAM,IAAI,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACxC;AAKA,eAAsB,0BAAA,CACpB,QAAA,EACA,WAAA,EACA,OAAA,EACoB;AACpB,EAAA,IAAI,OAAA,CAAQ,SAAS,QAAA,EAAU;AAC7B,IAAA,OAAO,+BAA+B,QAAA,EAAU,WAAA,EAAa,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAC1F;AACA,EAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC1B,IAAA,OAAO,+BAA+B,QAAA,EAAU,WAAA,EAAa,UAAA,CAAW,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACxF;AACA,EAAA,MAAM,IAAI,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACxC;AAKA,eAAsB,wBAAA,CACpB,QAAA,EACA,WAAA,EACA,OAAA,EACoB;AACpB,EAAA,IAAI,OAAA,CAAQ,SAAS,QAAA,EAAU;AAC7B,IAAA,OAAO,6BAA6B,QAAA,EAAU,WAAA,EAAa,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACxF;AACA,EAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,EAAO;AAC1B,IAAA,OAAO,6BAA6B,QAAA,EAAU,WAAA,EAAa,UAAA,CAAW,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EACtF;AACA,EAAA,MAAM,IAAI,MAAM,CAAA,oBAAA,CAAsB,CAAA;AACxC;AAKA,eAAsB,yBAAA,CACpB,UACA,WAAA,EACoB;AACpB,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,6BAAA,CAA8B,YAAA,EAAc,WAAW,CAAA;AAC/E,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAKA,eAAsB,oBAAoB,QAAA,EAAuC;AAC/E,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,qBAAA,CAAsB,YAAY,CAAA;AAC1D,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;AAaA,eAAsB,iBAAiB,QAAA,EAAoD;AACzF,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AACpC,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,iBAAA,CAAkB,YAAY,CAAA;AACtD,EAAA,OAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AAC1B;;;AClcO,IAAM,eAAA,GAAN,cAA8B,KAAA,CAAM;AAAA,EACzC,WAAA,CACS,IAAA,EAOP,OAAA,EACO,OAAA,EACP;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAVN,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAQA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAGP,IAAA,IAAA,CAAK,IAAA,GAAO,iBAAA;AAAA,EACd;AACF;AAGO,IAAM,uBAAA,GAA0B;AAChC,IAAM,cAAA,GAAiB;AACvB,IAAM,mBAAA,GAAsB;AAgB5B,IAAM,qBAAA,GAAsC;AAAA,EACjD,OAAA,EAAS,0BAAA;AAAA,EACT,OAAA,EAAS;AACX;;;AC/DA,IAAM,kBAAA,GAAqB,cAAA;AAC3B,IAAM,wBAAA,GAA2B,IAAI,WAAA,EAAY,CAAE,OAAO,kBAAkB,CAAA;AAE5E,IAAM,oBAAA,GAAuB,CAAA;AAC7B,IAAM,kBAAA,GAAqB,EAAA;AAC3B,IAAM,wBAAwB,oBAAA,GAAuB,kBAAA;AAErD,IAAM,gBAAA,GAAmB,CAAA;AACzB,IAAM,sBAAA,GAAyB,CAAA;AAC/B,IAAM,sBAAA,GAAyB,CAAA;AAE/B,IAAM,8BAAA,GACJ,gDAAA;AAEF,eAAe,YAAY,IAAA,EAAuC;AAChE,EAAA,MAAM,aAAa,MAAM,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,WAAW,IAAoB,CAAA;AAC7E,EAAA,OAAO,IAAI,WAAW,UAAU,CAAA;AAClC;AAEA,SAAS,eAAe,MAAA,EAAkC;AACxD,EAAA,MAAM,KAAA,GAAQ,OAAO,MAAA,CAAO,CAAC,KAAK,KAAA,KAAU,GAAA,GAAM,KAAA,CAAM,MAAA,EAAQ,CAAC,CAAA;AACjE,EAAA,MAAM,GAAA,GAAM,IAAI,UAAA,CAAW,KAAK,CAAA;AAChC,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,GAAA,CAAI,GAAA,CAAI,OAAO,MAAM,CAAA;AACrB,IAAA,MAAA,IAAU,KAAA,CAAM,MAAA;AAAA,EAClB;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,sBAAsB,OAAA,EAAiC;AAC9D,EAAA,MAAM,IAAA,GAAO,IAAI,UAAA,CAAW,kBAAkB,CAAA;AAC9C,EAAA,IAAA,CAAK,IAAI,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,EAAE,GAAG,CAAC,CAAA;AAChC,EAAA,OAAO,IAAA;AACT;AAEA,eAAe,oBAAA,CAAqB,MAAc,IAAA,EAAuC;AACvF,EAAA,OAAO,WAAA,CAAY,WAAA,CAAY,IAAI,UAAA,CAAW,CAAC,IAAI,CAAC,CAAA,EAAG,IAAA,EAAM,wBAAwB,CAAC,CAAA;AACxF;AAEA,eAAe,kCAAA,CACb,KAAA,EACA,WAAA,EACA,IAAA,EACqB;AACrB,EAAA,MAAM,OAAO,IAAI,UAAA,CAAW,CAAC,WAAA,GAAc,CAAA,GAAI,CAAC,CAAC,CAAA;AACjD,EAAA,OAAO,WAAA,CAAY,WAAA,CAAY,KAAA,EAAO,IAAA,EAAM,IAAI,CAAC,CAAA;AACnD;AAEA,eAAe,uBAAA,CACb,IAAA,EACA,IAAA,EACA,KAAA,EACA,WAAA,EACqB;AACrB,EAAA,MAAM,IAAA,GAAO,MAAM,oBAAA,CAAqB,IAAA,EAAM,IAAI,CAAA;AAClD,EAAA,OAAO,kCAAA,CAAmC,KAAA,EAAO,WAAA,EAAa,IAAI,CAAA;AACpE;AAQA,eAAsB,wBAAA,CACpB,cAAA,EACA,mBAAA,GAA8B,8BAAA,EACT;AACrB,EAAA,MAAM,YAAA,GAAe,cAAc,cAAc,CAAA;AACjD,EAAA,MAAM,YAAA,GAAe,cAAc,mBAAmB,CAAA;AACtD,EAAA,MAAM,IAAA,GAAO,sBAAsB,YAAY,CAAA;AAC/C,EAAA,OAAO,uBAAA,CAAwB,sBAAA,EAAwB,IAAA,EAAM,YAAA,EAAc,KAAK,CAAA;AAClF;AASA,SAAS,oBAAoB,IAAA,EAAkC;AAC7D,EAAA,IAAI,IAAA,CAAK,SAAS,qBAAA,EAAuB;AACvC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,iCAAA,EAAoC,IAAA,CAAK,MAAM,CAAA,0BAAA,EAA6B,qBAAqB,CAAA;AAAA,KACnG;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,KAAK,CAAC,CAAA;AACtB,EAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,EAAA,MAAM,QAAQ,IAAA,CAAK,CAAC,CAAA,GAAK,IAAA,CAAK,CAAC,CAAA,IAAK,CAAA;AACpC,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,oBAAA,EAAsB,uBAAuB,kBAAkB,CAAA;AAEvF,EAAA,IAAI,YAAY,gBAAA,EAAkB;AAChC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,OAAO,CAAA,CAAE,CAAA;AAAA,EAC5D;AACA,EAAA,IAAI,IAAA,KAAS,sBAAA,IAA0B,IAAA,KAAS,sBAAA,EAAwB;AACtE,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,IAAI,CAAA,CAAE,CAAA;AAAA,EACtD;AAEA,EAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,IAAA,EAAK;AACtC;AAYO,SAAS,oBAAoB,IAAA,EAAkC;AACpE,EAAA,IAAI,IAAA,CAAK,SAAS,uBAAA,EAAyB;AACzC,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,4BAAA,EAA+B,IAAA,CAAK,MAAM,CAAA,0BAAA,EAA6B,uBAAuB,CAAA;AAAA,KAChG;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,CAAK,QAAQ,IAAA,CAAK,UAAA,EAAY,KAAK,UAAU,CAAA;AAEvE,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACvC,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,YAAA,CAAa,EAAA,EAAI,IAAI,CAAA;AAC3C,EAAA,MAAM,KAAA,GAAQ,KAAK,EAAE,CAAA;AACrB,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,IAAI,CAAA;AAE3C,EAAA,IAAI,KAAA,KAAU,cAAA,IAAkB,KAAA,KAAU,mBAAA,EAAqB;AAC7D,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,KAAK,CAAA,CAAE,CAAA;AAAA,EACvD;AAEA,EAAA,MAAM,eAAe,uBAAA,GAA0B,WAAA;AAC/C,EAAA,IAAI,IAAA,CAAK,SAAS,YAAA,EAAc;AAC9B,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,4BAAA,EAA+B,IAAA,CAAK,MAAM,CAAA,iBAAA,EAAoB,YAAY,CAAA;AAAA,KAC5E;AAAA,EACF;AAEA,EAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,uBAAA,EAAyB,YAAY,CAAA;AACrE,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY,CAAE,OAAO,YAAY,CAAA;AAErD,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF;AACF;AASO,SAAS,eAAA,CAAgB,UAAkB,IAAA,EAA6B;AAC7E,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,QAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT,KAAK,OAAA;AACH,MAAA,OAAO,QAAA,KAAa,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAAA,IACvC,KAAK,SAAA;AACH,MAAA,OAAO,QAAA,IAAY,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAAA,IACtC,KAAK,QAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT;AACE,MAAA,OAAO,KAAA;AAAA;AAEb;AAOA,SAAS,0BAA0B,IAAA,EAA6C;AAC9E,EAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AAC1B,IAAA,OAAO,EAAE,SAAS,EAAE,IAAA,EAAM,QAAQ,KAAA,EAAO,IAAA,CAAK,MAAK,EAAE;AAAA,EACvD;AACA,EAAA,OAAO,EAAE,SAAS,EAAE,IAAA,EAAM,WAAW,KAAA,EAAO,IAAG,EAAE;AACnD;AAuBO,IAAM,iBAAN,MAAqB;AAAA,EAM1B,WAAA,CAAY,MAAA,GAA+B,EAAC,EAAG;AAC7C,IAAA,IAAA,CAAK,eAAe,EAAE,GAAG,qBAAA,EAAuB,GAAG,OAAO,YAAA,EAAa;AACvE,IAAA,IAAA,CAAK,aAAa,MAAA,CAAO,UAAA;AACzB,IAAA,MAAM,SAAA,GAAY,OAAO,mBAAA,IAAuB,8BAAA;AAChD,IAAA,IAAA,CAAK,mBAAA,GAAsB,cAAc,SAAS,CAAA;AAClD,IAAA,IAAA,CAAK,qBAAA,GAAwB,OAAO,qBAAA,IAAyB,KAAA;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,KAAA,CACJ,OAAA,EACA,MAAA,EACA,SACA,QAAA,EACsB;AACtB,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,YAAA,CAAa,OAAO,CAAA;AAC9C,IAAA,IAAI,UAAA;AACJ,IAAA,IAAI,WAAW,SAAA,EAAW;AACxB,MAAA,MAAM,IAAA,GAAO,sBAAsB,YAAY,CAAA;AAC/C,MAAA,UAAA,GAAa,MAAM,uBAAA;AAAA,QACjB,sBAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA,CAAK,mBAAA;AAAA,QACL,IAAA,CAAK;AAAA,OACP;AAAA,IACF,CAAA,MAAA,IAAW,WAAW,UAAA,EAAY;AAChC,MAAA,MAAM,WAAW,MAAM,IAAA,CAAK,gBAAA,CAAiB,YAAA,EAAc,SAAS,QAAQ,CAAA;AAC5E,MAAA,MAAM,IAAA,GAAO,oBAAoB,QAAQ,CAAA;AACzC,MAAA,UAAA,GAAa,MAAM,uBAAA;AAAA,QACjB,IAAA,CAAK,IAAA;AAAA,QACL,IAAA,CAAK,IAAA;AAAA,QACL,IAAA,CAAK,mBAAA;AAAA,QACL,IAAA,CAAK;AAAA,OACP;AAAA,IACF,CAAA,MAAO;AACL,MAAA,UAAA,GAAa,YAAA;AAAA,IACf;AAEA,IAAA,MAAM,cAAc,MAAM,IAAA,CAAK,gBAAA,CAAiB,UAAA,EAAY,SAAS,QAAQ,CAAA;AAC7E,IAAA,MAAM,MAAA,GAAS,oBAAoB,WAAW,CAAA;AAE9C,IAAA,IAAI,CAAC,eAAA,CAAgB,MAAA,CAAO,QAAA,EAAU,QAAQ,CAAA,EAAG;AAC/C,MAAA,MAAM,WAAA,GACJ,SAAS,IAAA,KAAS,OAAA,GACd,WAAW,QAAA,CAAS,KAAK,KACzB,QAAA,CAAS,IAAA,KAAS,YAChB,CAAA,SAAA,EAAY,QAAA,CAAS,KAAK,CAAA,CAAA,GAC1B,QAAA,CAAS,SAAS,QAAA,GAChB,CAAA,eAAA,EAAkB,QAAA,CAAS,IAAI,CAAA,CAAA,GAC/B,QAAA;AACV,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,2BAAA,EAA8B,MAAA,CAAO,QAAQ,CAAA,WAAA,EAAc,WAAW,CAAA;AAAA,OACxE;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,WAAA,EAAa,OAAO,KAAA,KAAU;AAAA,KAChC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,OAAA,EAAyB;AACtC,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,YAAA,CAAa,OAAO,CAAA;AAC1C,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,oBAAoB,OAAO,CAAA,0CAAA;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEQ,aAAa,OAAA,EAA6B;AAChD,IAAA,OAAO,cAAc,OAAO,CAAA;AAAA,EAC9B;AAAA,EAEA,MAAc,gBAAA,CACZ,OAAA,EACA,OAAA,EACA,QAAA,EACqB;AACrB,IAAA,IAAI,KAAK,UAAA,EAAY;AACnB,MAAA,OAAO,IAAA,CAAK,mBAAA,CAAoB,OAAA,EAAS,QAAQ,CAAA;AAAA,IACnD;AACA,IAAA,IAAI,QAAA,CAAS,SAAS,QAAA,EAAU;AAC9B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,OAAO,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,OAAO,CAAA;AAAA,EAC5C;AAAA,EAEA,MAAc,mBAAA,CACZ,OAAA,EACA,QAAA,EACqB;AACrB,IAAA,IAAI,CAAC,KAAK,UAAA,EAAY;AACpB,MAAA,MAAM,IAAI,MAAM,2BAA2B,CAAA;AAAA,IAC7C;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,UAAA,CAAW,MAAM,aAAA,CAAc;AAAA,MACzD,OAAA,EAAS,EAAE,KAAA,EAAO,OAAA,EAAQ;AAAA,MAC1B,cAAA,EAAgB,0BAA0B,QAAQ;AAAA,KACnD,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,MAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA,IACpD;AAEA,IAAA,OAAO,QAAA,CAAS,OAAA;AAAA,EAClB;AAAA,EAEA,MAAc,aAAA,CAAc,OAAA,EAAqB,OAAA,EAAsC;AACrF,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,cAAA,CAAe,OAAO,CAAA;AAC5C,IAAA,MAAM,UAAA,GAAa,kBAAkB,OAAO,CAAA;AAG5C,IAAA,MAAM,WAAW,MAAM,KAAA,CAAM,GAAG,QAAQ,CAAA,aAAA,EAAgB,UAAU,CAAA,IAAA,CAAA,EAAQ;AAAA,MACxE,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ;AAAA;AACV,KACD,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,IAAI,QAAA,CAAS,WAAW,GAAA,EAAK;AAC3B,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,UAAU,CAAA,CAAE,CAAA;AAAA,MACxD;AACA,MAAA,MAAM,IAAI,MAAM,CAAA,yBAAA,EAA4B,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI,QAAA,CAAS,UAAU,CAAA,CAAE,CAAA;AAAA,IACtF;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,MAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,IACvC;AAGA,IAAA,OAAO,YAAA,CAAa,KAAK,OAAO,CAAA;AAAA,EAClC;AACF;AAEA,IAAM,mBAAA,GACJ,kEAAA;AAEF,SAAS,cAAc,OAAA,EAA6B;AAClD,EAAA,IAAI,QAAQ,UAAA,CAAW,IAAI,CAAA,IAAK,OAAA,CAAQ,WAAW,EAAA,EAAI;AACrD,IAAA,OAAO,kBAAkB,OAAO,CAAA;AAAA,EAClC;AACA,EAAA,MAAM,IAAI,KAAA,CAAM,CAAA,6BAAA,EAAgC,OAAO,CAAA,uCAAA,CAAyC,CAAA;AAClG;AAEA,SAAS,kBAAkB,OAAA,EAA6B;AACtD,EAAA,IAAI,QAAQ,MAAA,KAAW,EAAA,IAAM,CAAC,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA,EAAG;AACtD,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,OAAO,CAAA,CAAE,CAAA;AAAA,EACpD;AAEA,EAAA,MAAM,MAAA,GAAS,IAAI,UAAA,CAAW,GAAG,CAAA;AACjC,EAAA,MAAA,CAAO,KAAK,EAAE,CAAA;AACd,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,mBAAA,CAAoB,MAAA,EAAQ,KAAK,CAAA,EAAG;AACtD,IAAA,MAAA,CAAO,mBAAA,CAAoB,UAAA,CAAW,CAAC,CAAC,CAAA,GAAI,CAAA;AAAA,EAC9C;AAEA,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,IAAI,IAAA,GAAO,EAAA;AACX,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,MAAM,GAAA,GAAM,IAAI,UAAA,CAAW,EAAE,CAAA;AAE7B,EAAA,OAAO,QAAQ,CAAA,EAAG;AAChB,IAAA,MAAMC,KAAI,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAC9C,IAAA,MAAMC,KAAI,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAC9C,IAAA,MAAMC,KAAI,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAC9C,IAAA,MAAMC,KAAI,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAC9C,IAAA,IAAIH,KAAI,CAAA,IAAKC,EAAAA,GAAI,KAAKC,EAAAA,GAAI,CAAA,IAAKC,KAAI,CAAA,EAAG;AACpC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kCAAA,EAAqC,KAAK,CAAA,CAAE,CAAA;AAAA,IAC9D;AACA,IAAA,MAAMC,UAAUJ,EAAAA,IAAK,EAAA,GAAOC,EAAAA,IAAK,EAAA,GAAOC,MAAK,CAAA,GAAKC,EAAAA;AAClD,IAAA,MAAME,MAAAA,GAASD,WAAU,EAAA,GAAM,GAAA;AAC/B,IAAA,QAAA,IAAYC,MAAAA;AACZ,IAAA,GAAA,CAAI,QAAQ,CAAA,GAAIA,MAAAA;AAChB,IAAA,MAAMC,MAAAA,GAASF,WAAU,CAAA,GAAK,GAAA;AAC9B,IAAA,QAAA,IAAYE,MAAAA;AACZ,IAAA,GAAA,CAAI,QAAQ,CAAA,GAAIA,MAAAA;AAChB,IAAA,MAAM,QAAQF,OAAAA,GAAS,GAAA;AACvB,IAAA,QAAA,IAAY,KAAA;AACZ,IAAA,GAAA,CAAI,QAAQ,CAAA,GAAI,KAAA;AAChB,IAAA,KAAA,IAAS,CAAA;AACT,IAAA,IAAA,IAAQ,CAAA;AAAA,EACV;AAEA,EAAA,MAAM,IAAI,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAC9C,EAAA,MAAM,IAAI,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAC9C,EAAA,MAAM,IAAI,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAC9C,EAAA,MAAM,IAAI,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAC9C,EAAA,IAAI,IAAI,CAAA,IAAK,CAAA,GAAI,KAAK,CAAA,GAAI,CAAA,IAAK,IAAI,CAAA,EAAG;AACpC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kCAAA,EAAqC,KAAK,CAAA,CAAE,CAAA;AAAA,EAC9D;AACA,EAAA,MAAM,SAAU,CAAA,IAAK,EAAA,GAAO,CAAA,IAAK,EAAA,GAAO,KAAK,CAAA,GAAK,CAAA;AAClD,EAAA,MAAM,KAAA,GAAS,UAAU,EAAA,GAAM,GAAA;AAC/B,EAAA,QAAA,IAAY,KAAA;AACZ,EAAA,GAAA,CAAI,QAAQ,CAAA,GAAI,KAAA;AAChB,EAAA,MAAM,KAAA,GAAS,UAAU,CAAA,GAAK,GAAA;AAC9B,EAAA,QAAA,IAAY,KAAA;AACZ,EAAA,GAAA,CAAI,QAAQ,CAAA,GAAI,KAAA;AAChB,EAAA,MAAM,mBAAmB,MAAA,GAAS,GAAA;AAClC,EAAA,IAAA,CAAK,QAAA,GAAW,SAAU,gBAAA,EAAkB;AAC1C,IAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AAAA,EACjD;AAEA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,kBAAkB,KAAA,EAA2B;AACpD,EAAA,IAAI,KAAA,CAAM,WAAW,EAAA,EAAI;AACvB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,KAAA,CAAM,MAAM,CAAA,CAAE,CAAA;AAAA,EAC1D;AAEA,EAAA,SAAS,YAAY,IAAA,EAAsB;AACzC,IAAA,OAAO,IAAA,KAAS,CAAA,GAAI,CAAA,GAAA,CAAK,CAAA,IAAK,IAAA,IAAQ,CAAA;AAAA,EACxC;AAEA,EAAA,IAAI,MAAA,GAAS,IAAA;AACb,EAAA,IAAI,QAAA,GAAW,CAAA;AACf,EAAA,IAAI,WAAA,GAAc,CAAA;AAClB,EAAA,IAAI,aAAA,GAAgB,CAAA;AAEpB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,IAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,IAAA,QAAA,IAAY,IAAA;AACZ,IAAA,WAAA,GAAe,eAAe,CAAA,GAAK,IAAA;AACnC,IAAA,aAAA,IAAiB,CAAA;AACjB,IAAA,OAAO,iBAAiB,CAAA,EAAG;AACzB,MAAA,MAAM,KAAA,GAAS,WAAA,IAAgB,aAAA,GAAgB,CAAA,GAAM,EAAA;AACrD,MAAA,MAAA,IAAU,oBAAoB,KAAK,CAAA;AACnC,MAAA,aAAA,IAAiB,CAAA;AACjB,MAAA,WAAA,IAAe,YAAY,aAAa,CAAA;AAAA,IAC1C;AAAA,EACF;AAEA,EAAA,MAAM,UAAA,GAAa,MAAM,EAAE,CAAA;AAC3B,EAAA,QAAA,IAAY,UAAA;AACZ,EAAA,WAAA,GAAe,eAAe,CAAA,GAAK,UAAA;AACnC,EAAA,aAAA,IAAiB,CAAA;AAEjB,EAAA,MAAM,IAAA,GAAO,MAAM,EAAE,CAAA;AACrB,EAAA,QAAA,IAAY,IAAA;AACZ,EAAA,WAAA,GAAe,eAAe,CAAA,GAAK,IAAA;AACnC,EAAA,aAAA,IAAiB,CAAA;AAEjB,EAAA,WAAA,GAAe,WAAA,IAAe,IAAM,QAAA,GAAW,GAAA;AAC/C,EAAA,aAAA,IAAiB,CAAA;AAEjB,EAAA,OAAO,iBAAiB,CAAA,EAAG;AACzB,IAAA,MAAM,KAAA,GAAS,WAAA,IAAgB,aAAA,GAAgB,CAAA,GAAM,EAAA;AACrD,IAAA,MAAA,IAAU,oBAAoB,KAAK,CAAA;AACnC,IAAA,aAAA,IAAiB,CAAA;AACjB,IAAA,WAAA,IAAe,YAAY,aAAa,CAAA;AAAA,EAC1C;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,aAAa,GAAA,EAAyB;AAC7C,EAAA,MAAM,SAAA,GAAY,KAAK,GAAG,CAAA;AAC1B,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,SAAA,CAAU,MAAM,CAAA;AAC7C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACzC,IAAA,KAAA,CAAM,CAAC,CAAA,GAAI,SAAA,CAAU,UAAA,CAAW,CAAC,CAAA;AAAA,EACnC;AACA,EAAA,OAAO,KAAA;AACT;ACteA,eAAsB,cAAA,CACpB,WAAA,EACA,MAAA,GAAyB,EAAC,EACC;AAC3B,EAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,MAAM,CAAA;AAC1C,EAAA,OAAO,QAAA,CAAS,QAAQ,WAAW,CAAA;AACrC;AAOO,SAAS,eAAe,MAAA,EAAkD;AAC/E,EAAA,OAAO,MAAA,CAAO,QAAA;AAChB;AAEA,IAAM,iBAAN,MAAqB;AAAA,EAMnB,WAAA,CAAY,MAAA,GAAyB,EAAC,EAAG;AACvC,IAAA,IAAA,CAAK,cAAA,GACH,MAAA,CAAO,cAAA,IACP,IAAI,cAAA,CAAe;AAAA,MACjB,cAAc,EAAE,GAAG,qBAAA,EAAuB,GAAG,OAAO,YAAA;AAAa,KAClE,CAAA;AACH,IAAA,IAAA,CAAK,QAAA,GAAW,OAAO,QAAA,IAAY,EAAA;AACnC,IAAA,IAAA,CAAK,OAAA,uBAAc,GAAA,EAAI;AACvB,IAAA,IAAA,CAAK,UAAA,uBAAiB,GAAA,EAAI;AAAA,EAC5B;AAAA,EAEA,MAAM,QAAQ,WAAA,EAAgD;AAC5D,IAAA,IAAA,CAAK,QAAQ,KAAA,EAAM;AACnB,IAAA,IAAA,CAAK,WAAW,KAAA,EAAM;AAEtB,IAAA,MAAM,cAAc,MAAM,IAAA,CAAK,cAAA,CAAe,WAAA,EAAa,OAAO,CAAC,CAAA;AACnE,IAAA,MAAM,cAAc,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA;AACpD,IAAA,MAAM,WAAmC,EAAC;AAE1C,IAAA,KAAA,MAAW,OAAO,WAAA,EAAa;AAC7B,MAAA,QAAA,CAAS,GAAA,CAAI,EAAA,CAAG,WAAW,CAAA,GAAI,GAAA,CAAI,OAAA;AAAA,IACrC;AAEA,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,WAAA;AAAA,MACN,WAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAc,cAAA,CACZ,OAAA,EACA,QAAA,EACA,KAAA,EAC0B;AAC1B,IAAA,IAAI,KAAA,GAAQ,KAAK,QAAA,EAAU;AACzB,MAAA,MAAM,IAAI,eAAA;AAAA,QACR,mBAAA;AAAA,QACA,CAAA,0BAAA,EAA6B,KAAK,QAAQ,CAAA,UAAA;AAAA,OAC5C;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,YAAA,CAAa,OAAO,CAAA;AACzC,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,gBAAA,CAAiB,OAAO,CAAA;AAC/C,IAAA,MAAM,eAAe,CAAA,EAAG,SAAA,CAAU,WAAW,CAAA,CAAA,EAAI,UAAU,OAAO,CAAA,CAAA;AAGlE,IAAA,IAAI,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,YAAY,CAAA,EAAG;AACrC,MAAA,MAAM,IAAI,eAAA;AAAA,QACR,mBAAA;AAAA,QACA,+BAA+B,YAAY,CAAA;AAAA,OAC7C;AAAA,IACF;AAGA,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,YAAY,CAAA;AAC9C,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAO,QAAA;AAAA,IACT;AAGA,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,CAAA,IAAK,KAAK,OAAA,EAAS;AACrC,MAAA,IAAI,GAAA,CAAI,GAAG,WAAA,KAAgB,SAAA,CAAU,eAAe,GAAA,CAAI,EAAA,CAAG,OAAA,KAAY,SAAA,CAAU,OAAA,EAAS;AACxF,QAAA,MAAM,IAAI,eAAA;AAAA,UACR,kBAAA;AAAA,UACA,CAAA,qBAAA,EAAwB,UAAU,WAAW,CAAA,EAAA,EACxC,IAAI,EAAA,CAAG,OAAO,CAAA,IAAA,EAAO,SAAA,CAAU,OAAO,CAAA,CAAA;AAAA,UAC3C,EAAE,QAAA,EAAU,GAAA,CAAI,EAAA,EAAI,aAAa,SAAA;AAAU,SAC7C;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,UAAA,CAAW,IAAI,YAAY,CAAA;AAEhC,IAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,GAAA,CAAI,OAAA,IAAW,EAAC;AACxC,IAAA,MAAM,eAA4B,EAAC;AAEnC,IAAA,KAAA,MAAW,cAAc,OAAA,EAAS;AAChC,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,qBAAA,CAAsB,UAAU,CAAA;AAG1D,MAAA,IAAI,QAAA,IAAY,YAAA,CAAa,IAAA,KAAS,MAAA,EAAQ;AAC5C,QAAA,MAAM,IAAI,eAAA;AAAA,UACR,yBAAA;AAAA,UACA,CAAA,eAAA,EAAkB,SAAA,CAAU,WAAW,CAAA,2BAAA,EAA8B,aAAa,IAAI,CAAA;AAAA,SACxF;AAAA,MACF;AAIA,MAAA,MAAM,aAAA,GAAgB,aAAa,IAAA,KAAS,MAAA;AAC5C,MAAA,MAAM,aAAa,MAAM,IAAA,CAAK,cAAc,YAAA,EAAc,aAAA,EAAe,QAAQ,CAAC,CAAA;AAClF,MAAA,YAAA,CAAa,IAAA,CAAK,WAAW,EAAE,CAAA;AAAA,IACjC;AAEA,IAAA,IAAA,CAAK,UAAA,CAAW,OAAO,YAAY,CAAA;AAEnC,IAAA,MAAM,eAAA,GAAmC;AAAA,MACvC,EAAA,EAAI,SAAA;AAAA,MACJ,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,QAAA,EAAS;AAAA,MACvC,OAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,YAAA,EAAc,eAAe,CAAA;AAC9C,IAAA,OAAO,eAAA;AAAA,EACT;AAAA,EAEA,MAAc,aAAA,CACZ,MAAA,EACA,cAAA,EACA,KAAA,EAC0B;AAC1B,IAAA,QAAQ,OAAO,IAAA;AAAM,MACnB,KAAK,MAAA;AACH,QAAA,MAAM,IAAI,eAAA;AAAA,UACR,yBAAA;AAAA,UACA,CAAA,2EAAA,EAA8E,OAAO,IAAI,CAAA;AAAA,SAC3F;AAAA,MAEF,KAAK,KAAA;AACH,QAAA,MAAM,IAAI,eAAA;AAAA,UACR,yBAAA;AAAA,UACA,CAAA,yEAAA,EAA4E,OAAO,GAAG,CAAA;AAAA,SACxF;AAAA,MAEF,KAAK,MAAA;AACH,QAAA,MAAM,IAAI,eAAA;AAAA,UACR,yBAAA;AAAA,UACA,CAAA,0EAAA,EAA6E,OAAO,GAAG,CAAA;AAAA,SACzF;AAAA,MAEF,KAAK,SAAA;AACH,QAAA,OAAO,IAAA,CAAK,oBAAA,CAAqB,MAAA,EAAQ,KAAK,CAAA;AAAA,MAEhD;AACE,QAAA,MAAM,IAAI,eAAA;AAAA,UACR,yBAAA;AAAA,UACA,CAAA,qBAAA,EAAyB,OAAwB,IAAI,CAAA;AAAA,SACvD;AAAA;AACJ,EACF;AAAA,EAEA,MAAc,oBAAA,CACZ,MAAA,EACA,KAAA,EAC0B;AAC1B,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,cAAA,CAAe,KAAA;AAAA,MACvC,MAAA,CAAO,OAAA;AAAA,MACP,MAAA,CAAO,MAAA;AAAA,MACP,MAAA,CAAO,OAAA;AAAA,MACP,MAAA,CAAO;AAAA,KACT;AAEA,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,eAAe,MAAA,CAAO,OAAA,EAAS,MAAM,KAAK,CAAA;AACtE,IAAA,QAAA,CAAS,MAAA,GAAS,MAAA;AAClB,IAAA,QAAA,CAAS,QAAA,GAAW,IAAA;AAEpB,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEQ,aAAa,WAAA,EAA8B;AACjD,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAc,WAAM,WAAW,CAAA;AACrC,MAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,EAAU;AACzC,QAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA,MACnD;AACA,MAAA,IAAI,CAAC,MAAA,CAAO,GAAA,IAAO,OAAO,MAAA,CAAO,QAAQ,QAAA,EAAU;AACjD,QAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,MAC3D;AACA,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,IAAI,eAAA;AAAA,QACR,aAAA;AAAA,QACA,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAAA,QACnF;AAAA,OACF;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,iBAAiB,OAAA,EAA6B;AACpD,IAAA,MAAM,WAAW,OAAA,CAAQ,GAAA;AACzB,IAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,MAAA,MAAM,IAAI,eAAA,CAAgB,aAAA,EAAe,6BAA6B,CAAA;AAAA,IACxE;AACA,IAAA,OAAO;AAAA,MACL,aAAa,QAAA,CAAS,OAAA;AAAA,MACtB,OAAA,EAAS,QAAA,CAAS,iBAAiB,CAAA,IAAK;AAAA,KAC1C;AAAA,EACF;AAAA,EAEQ,sBAAsB,MAAA,EAAwC;AACpE,IAAA,QAAQ,OAAO,IAAA;AAAM,MACnB,KAAK,MAAA;AACH,QAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,MAE3C,KAAK,KAAA;AACH,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,KAAA;AAAA,UACN,KAAK,MAAA,CAAO,GAAA;AAAA,UACZ,KAAK,MAAA,CAAO,GAAA;AAAA,UACZ,MAAM,MAAA,CAAO;AAAA,SACf;AAAA,MAEF,KAAK,MAAA;AACH,QAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,MAEzC,KAAK,SAAA,EAAW;AACd,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,iBAAA,CAAkB,MAAA,CAAO,QAAQ,CAAA;AACvD,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB,MAAA,EAAQ,OAAO,MAAA,IAAU,SAAA;AAAA,UACzB,SAAS,MAAA,CAAO,OAAA;AAAA,UAChB;AAAA,SACF;AAAA,MACF;AAAA,MAEA;AACE,QAAA,MAAM,IAAI,eAAA;AAAA,UACR,yBAAA;AAAA,UACA,CAAA,qBAAA,EAAyB,OAA4B,IAAI,CAAA;AAAA,SAC3D;AAAA;AACJ,EACF;AAAA,EAEQ,kBAAkB,QAAA,EAAqD;AAC7E,IAAA,IAAI,QAAA,KAAa,MAAA,IAAa,QAAA,KAAa,QAAA,EAAU;AACnD,MAAA,OAAO,EAAE,MAAM,QAAA,EAAS;AAAA,IAC1B;AACA,IAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,QAAA,EAAS;AAAA,IAC1C;AACA,IAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,MAAA,IAAI,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA,EAAG;AAC7B,QAAA,MAAMG,SAAQ,QAAA,CAAS,QAAA,CAAS,KAAA,CAAM,CAAC,GAAG,EAAE,CAAA;AAC5C,QAAA,IAAI,KAAA,CAAMA,MAAK,CAAA,EAAG;AAChB,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,QAAQ,CAAA,CAAE,CAAA;AAAA,QACzD;AACA,QAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAAA,MAAAA,EAAM;AAAA,MAClC;AACA,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,QAAA,EAAU,EAAE,CAAA;AACnC,MAAA,IAAI,CAAC,KAAA,CAAM,KAAK,CAAA,EAAG;AACjB,QAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM;AAAA,MAChC;AAAA,IACF;AACA,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gCAAA,EAAmC,QAAQ,CAAA,CAAE,CAAA;AAAA,EAC/D;AACF,CAAA","file":"index.js","sourcesContent":["export function bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes, (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nexport function alignUp(offset: number, alignment: number): number {\n return (offset + alignment - 1) & ~(alignment - 1);\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n let normalized = hex.trim().replace(/[\\s_]/g, \"\");\n if (normalized.startsWith(\"0x\") || normalized.startsWith(\"0X\")) {\n normalized = normalized.slice(2);\n }\n if (normalized.length === 0) return new Uint8Array();\n if (normalized.length % 2 !== 0) {\n throw new Error(\"Hex input must contain an even number of characters\");\n }\n const bytes = new Uint8Array(normalized.length / 2);\n for (let i = 0; i < normalized.length; i += 2) {\n const byte = Number.parseInt(normalized.slice(i, i + 2), 16);\n if (Number.isNaN(byte)) {\n throw new Error(\"Hex input contains non-hexadecimal characters\");\n }\n bytes[i / 2] = byte;\n }\n return bytes;\n}\n\nexport function toUint8Array(\n input: Uint8Array | ArrayBuffer | ArrayBufferView | number[],\n): Uint8Array {\n if (input instanceof Uint8Array) {\n return input;\n }\n if (ArrayBuffer.isView(input)) {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n if (input instanceof ArrayBuffer) {\n return new Uint8Array(input);\n }\n if (Array.isArray(input)) {\n return Uint8Array.from(input);\n }\n throw new TypeError(\"Unsupported buffer input\");\n}\n","export function isNodeRuntime(): boolean {\n return typeof process !== \"undefined\" && Boolean(process.versions?.node);\n}\n","import { hexToBytes, toUint8Array } from \"./utils/bytes\";\nimport { isNodeRuntime } from \"./utils/runtime\";\nimport type { FormattedReflection } from \"./types\";\n\ntype WasmReflectBindings = {\n reflect: (abi: string, typeName: string, buffer: Uint8Array) => string;\n reflect_instruction: (abi: string, buffer: Uint8Array) => string;\n reflect_account: (abi: string, buffer: Uint8Array) => string;\n reflect_event: (abi: string, buffer: Uint8Array) => string;\n build_layout_ir: (abi: string) => string;\n format_reflection: (raw: string) => string;\n format_reflection_with_options: (raw: string, options: string) => string;\n /* Manifest-based functions for ABIs with imports */\n reflect_with_manifest: (manifest: string, rootPackage: string, typeName: string, buffer: Uint8Array) => string;\n reflect_instruction_with_manifest: (manifest: string, rootPackage: string, buffer: Uint8Array) => string;\n reflect_account_with_manifest: (manifest: string, rootPackage: string, buffer: Uint8Array) => string;\n reflect_event_with_manifest: (manifest: string, rootPackage: string, buffer: Uint8Array) => string;\n build_layout_ir_with_manifest: (manifest: string, rootPackage: string) => string;\n get_manifest_packages: (manifest: string) => string;\n validate_manifest: (manifest: string) => string;\n wasm_start?: () => void;\n};\n\ntype JsonValue = unknown;\ndeclare const require: ((specifier: string) => unknown) | undefined;\n\n// Configuration for WASM loading\nlet configuredWasmUrl: string | undefined;\n\n/**\n * Configure the URL from which to load the WASM file.\n * Must be called before any reflection functions are used.\n *\n * This is useful for environments like Next.js where bundler-based WASM loading\n * doesn't work. Instead, copy the WASM file to your public directory and call:\n *\n * @example\n * ```ts\n * import { configureWasm } from \"@thru/sdk/abi\";\n * configureWasm(\"/wasm/abi_reflect_wasm_bg.wasm\");\n * ```\n *\n * @param url - URL or path to the WASM file (e.g., \"/wasm/abi_reflect_wasm_bg.wasm\")\n */\nexport function configureWasm(url: string): void {\n if (cachedBindings) {\n console.warn(\"configureWasm called after WASM was already loaded. Configuration ignored.\");\n return;\n }\n configuredWasmUrl = url;\n}\n\nconst wasmDir = resolveWasmDir();\nlet bindingsPromise: Promise<WasmReflectBindings> | undefined;\nlet cachedBindings: WasmReflectBindings | undefined;\nconst dynamicImport = new Function(\"specifier\", \"return import(specifier)\") as (\n specifier: string,\n) => Promise<unknown>;\nconst resolveModuleUrl = new Function(\"path\", \"base\", \"return new URL(path, base).href\") as (\n path: string,\n base: string,\n) => string;\n\nfunction isObjectLike(value: unknown): value is Record<string, unknown> {\n return (typeof value === \"object\" && value !== null) || typeof value === \"function\";\n}\n\nfunction hasWasmBinding(value: unknown, name: keyof WasmReflectBindings): boolean {\n return isObjectLike(value) && typeof value[name] === \"function\";\n}\n\nfunction isWasmReflectBindings(value: unknown): value is WasmReflectBindings {\n return (\n hasWasmBinding(value, \"reflect\") &&\n hasWasmBinding(value, \"reflect_instruction\") &&\n hasWasmBinding(value, \"format_reflection\")\n );\n}\n\nfunction describeImportedBindings(value: unknown): string {\n if (value === null) return \"null\";\n if (Array.isArray(value)) return \"array\";\n return typeof value;\n}\n\nfunction unwrapImportedBindings(imported: unknown, relativePath: string): WasmReflectBindings {\n const defaultExport = isObjectLike(imported) ? imported.default : undefined;\n const candidate = defaultExport ?? imported;\n\n if (isWasmReflectBindings(candidate)) {\n return candidate;\n }\n if (isWasmReflectBindings(imported)) {\n return imported;\n }\n\n throw new Error(\n `WASM bindings import did not return a module object for ${relativePath} (received ${describeImportedBindings(imported)})`\n );\n}\n\nfunction resolveImportMetaUrl(): string {\n const url = import.meta.url as string | null | undefined;\n if (typeof url === \"string\" && url.length > 0) return url;\n\n const location =\n typeof globalThis.location === \"object\" && globalThis.location\n ? globalThis.location\n : undefined;\n if (typeof location?.href === \"string\" && location.href.length > 0) {\n return location.href;\n }\n\n return \"file:///\";\n}\n\nasync function importModule(specifier: string): Promise<unknown> {\n return dynamicImport(specifier);\n}\n\nfunction requireModule(moduleUrl: string): unknown | undefined {\n try {\n const requireFn = typeof require === \"function\" ? require : undefined;\n if (!requireFn) return undefined;\n\n const specifier = moduleUrl.startsWith(\"file:\")\n ? decodeURIComponent(new URL(moduleUrl).pathname)\n : moduleUrl;\n return requireFn(specifier);\n } catch {\n return undefined;\n }\n}\n\nfunction resolveWasmDir(): string {\n const url = resolveImportMetaUrl();\n if (url.includes(\"/src/abi/\")) return \"../../wasm/abi\";\n if (url.includes(\"/dist/\")) return \"./wasm\";\n return \"./wasm\";\n}\n\nasync function loadBindings(): Promise<WasmReflectBindings> {\n if (cachedBindings) {\n return cachedBindings;\n }\n if (!bindingsPromise) {\n let loader: Promise<WasmReflectBindings>;\n if (isNodeRuntime()) {\n loader = loadNodeBindings();\n } else if (configuredWasmUrl) {\n loader = loadWebBindings(configuredWasmUrl);\n } else {\n loader = loadBundlerBindings();\n }\n bindingsPromise = loader.then(\n (bindings) => {\n cachedBindings = bindings;\n return bindings;\n },\n (err) => {\n bindingsPromise = undefined;\n throw err;\n }\n );\n }\n return bindingsPromise;\n}\n\nasync function loadWebBindings(wasmUrl: string): Promise<WasmReflectBindings> {\n const moduleUrl = resolveModuleUrl(`${wasmDir}/web/abi_reflect_wasm.js`, resolveImportMetaUrl());\n const mod = (await importModule(moduleUrl)) as WasmReflectBindings & {\n default: (url: string) => Promise<void>;\n };\n\n // Initialize with the configured WASM URL\n await mod.default(wasmUrl);\n\n return mod;\n}\n\nasync function loadBundlerBindings(): Promise<WasmReflectBindings> {\n const mod = await importBindings(\"bundler/abi_reflect_wasm.js\");\n return mod;\n}\n\nasync function loadNodeBindings(): Promise<WasmReflectBindings> {\n const relativePath = \"node/abi_reflect_wasm.js\";\n const moduleUrl = resolveModuleUrl(`${wasmDir}/${relativePath}`, resolveImportMetaUrl());\n const imported = requireModule(moduleUrl) ?? (await importModule(moduleUrl));\n const mod = unwrapImportedBindings(imported, relativePath);\n if (typeof mod.wasm_start === \"function\") {\n mod.wasm_start();\n }\n return mod;\n}\n\nasync function importBindings(relativePath: string): Promise<WasmReflectBindings> {\n const moduleUrl = resolveModuleUrl(`${wasmDir}/${relativePath}`, resolveImportMetaUrl());\n const imported = await importModule(moduleUrl);\n return unwrapImportedBindings(imported, relativePath);\n}\n\nasync function callReflect(\n abiYaml: string,\n typeName: string,\n buffer: Uint8Array,\n): Promise<JsonValue> {\n const bindings = await loadBindings();\n const result = bindings.reflect(abiYaml, typeName, buffer);\n return JSON.parse(result);\n}\n\nasync function callLayoutIr(abiYaml: string): Promise<JsonValue> {\n const bindings = await loadBindings();\n const result = bindings.build_layout_ir(abiYaml);\n return JSON.parse(result);\n}\n\nasync function callReflectInstruction(\n abiYaml: string,\n buffer: Uint8Array,\n): Promise<JsonValue> {\n const bindings = await loadBindings();\n const result = bindings.reflect_instruction(abiYaml, buffer);\n return JSON.parse(result);\n}\n\nasync function callReflectAccount(\n abiYaml: string,\n buffer: Uint8Array,\n): Promise<JsonValue> {\n const bindings = await loadBindings();\n const result = bindings.reflect_account(abiYaml, buffer);\n return JSON.parse(result);\n}\n\nasync function callReflectEvent(\n abiYaml: string,\n buffer: Uint8Array,\n): Promise<JsonValue> {\n const bindings = await loadBindings();\n const result = bindings.reflect_event(abiYaml, buffer);\n return JSON.parse(result);\n}\n\nexport type BinaryLike = Uint8Array | ArrayBuffer | ArrayBufferView | number[];\n\nexport async function reflect(\n abiYaml: string,\n typeName: string,\n payload: {type: 'binary', value: BinaryLike} | {type: 'hex', value: string },\n): Promise<JsonValue> {\n if (payload.type === 'binary') {\n return callReflect(abiYaml, typeName, toUint8Array(payload.value));\n }\n if (payload.type === 'hex') {\n return callReflect(abiYaml, typeName, hexToBytes(payload.value));\n }\n throw new Error(`Invalid payload type`);\n}\n\nexport async function buildLayoutIr(abiYaml: string): Promise<JsonValue> {\n return callLayoutIr(abiYaml);\n}\n\nexport type ReflectRootPayload = {type: 'binary', value: BinaryLike} | {type: 'hex', value: string };\n\nexport async function reflectInstruction(\n abiYaml: string,\n payload: ReflectRootPayload,\n): Promise<JsonValue> {\n if (payload.type === 'binary') {\n return callReflectInstruction(abiYaml, toUint8Array(payload.value));\n }\n if (payload.type === 'hex') {\n return callReflectInstruction(abiYaml, hexToBytes(payload.value));\n }\n throw new Error(`Invalid payload type`);\n}\n\nexport async function reflectAccount(\n abiYaml: string,\n payload: ReflectRootPayload,\n): Promise<JsonValue> {\n if (payload.type === 'binary') {\n return callReflectAccount(abiYaml, toUint8Array(payload.value));\n }\n if (payload.type === 'hex') {\n return callReflectAccount(abiYaml, hexToBytes(payload.value));\n }\n throw new Error(`Invalid payload type`);\n}\n\nexport async function reflectEvent(\n abiYaml: string,\n payload: ReflectRootPayload,\n): Promise<JsonValue> {\n if (payload.type === 'binary') {\n return callReflectEvent(abiYaml, toUint8Array(payload.value));\n }\n if (payload.type === 'hex') {\n return callReflectEvent(abiYaml, hexToBytes(payload.value));\n }\n throw new Error(`Invalid payload type`);\n}\n\nexport async function ensureWasmLoaded(): Promise<void> {\n await loadBindings();\n}\n\nfunction requireBindings(): WasmReflectBindings {\n if (cachedBindings) {\n return cachedBindings;\n }\n throw new Error(\"WASM bindings are not loaded. Call ensureWasmLoaded() first.\");\n}\n\nexport interface FormatOptions {\n includeByteOffsets?: boolean;\n}\n\nexport function formatReflection(raw: JsonValue, options?: FormatOptions): FormattedReflection {\n const bindings = requireBindings();\n const serialized = JSON.stringify(raw);\n\n if (options && Object.keys(options).length > 0) {\n const optionsJson = JSON.stringify(options);\n const result = bindings.format_reflection_with_options(serialized, optionsJson);\n return JSON.parse(result) as FormattedReflection;\n }\n\n const result = bindings.format_reflection(serialized);\n return JSON.parse(result) as FormattedReflection;\n}\n\n/* ============================================================================\n Manifest-based Functions\n\n These functions support ABIs with imports by accepting a pre-resolved manifest\n (a map of package names to their ABI YAML content).\n ============================================================================ */\n\nexport type Manifest = Record<string, string>;\n\nasync function callReflectWithManifest(\n manifest: Manifest,\n rootPackage: string,\n typeName: string,\n buffer: Uint8Array,\n): Promise<JsonValue> {\n const bindings = await loadBindings();\n const manifestJson = JSON.stringify(manifest);\n const result = bindings.reflect_with_manifest(manifestJson, rootPackage, typeName, buffer);\n return JSON.parse(result);\n}\n\nasync function callReflectInstructionWithManifest(\n manifest: Manifest,\n rootPackage: string,\n buffer: Uint8Array,\n): Promise<JsonValue> {\n const bindings = await loadBindings();\n const manifestJson = JSON.stringify(manifest);\n const result = bindings.reflect_instruction_with_manifest(manifestJson, rootPackage, buffer);\n return JSON.parse(result);\n}\n\nasync function callReflectAccountWithManifest(\n manifest: Manifest,\n rootPackage: string,\n buffer: Uint8Array,\n): Promise<JsonValue> {\n const bindings = await loadBindings();\n const manifestJson = JSON.stringify(manifest);\n const result = bindings.reflect_account_with_manifest(manifestJson, rootPackage, buffer);\n return JSON.parse(result);\n}\n\nasync function callReflectEventWithManifest(\n manifest: Manifest,\n rootPackage: string,\n buffer: Uint8Array,\n): Promise<JsonValue> {\n const bindings = await loadBindings();\n const manifestJson = JSON.stringify(manifest);\n const result = bindings.reflect_event_with_manifest(manifestJson, rootPackage, buffer);\n return JSON.parse(result);\n}\n\n/**\n * Reflect a binary buffer using a pre-resolved manifest.\n *\n * @param manifest - Map of package names to ABI YAML content\n * @param rootPackage - The package containing the target type\n * @param typeName - The type name to parse\n * @param payload - Binary data to reflect\n */\nexport async function reflectWithManifest(\n manifest: Manifest,\n rootPackage: string,\n typeName: string,\n payload: ReflectRootPayload,\n): Promise<JsonValue> {\n if (payload.type === 'binary') {\n return callReflectWithManifest(manifest, rootPackage, typeName, toUint8Array(payload.value));\n }\n if (payload.type === 'hex') {\n return callReflectWithManifest(manifest, rootPackage, typeName, hexToBytes(payload.value));\n }\n throw new Error(`Invalid payload type`);\n}\n\n/**\n * Reflect an instruction using a pre-resolved manifest.\n */\nexport async function reflectInstructionWithManifest(\n manifest: Manifest,\n rootPackage: string,\n payload: ReflectRootPayload,\n): Promise<JsonValue> {\n if (payload.type === 'binary') {\n return callReflectInstructionWithManifest(manifest, rootPackage, toUint8Array(payload.value));\n }\n if (payload.type === 'hex') {\n return callReflectInstructionWithManifest(manifest, rootPackage, hexToBytes(payload.value));\n }\n throw new Error(`Invalid payload type`);\n}\n\n/**\n * Reflect an account using a pre-resolved manifest.\n */\nexport async function reflectAccountWithManifest(\n manifest: Manifest,\n rootPackage: string,\n payload: ReflectRootPayload,\n): Promise<JsonValue> {\n if (payload.type === 'binary') {\n return callReflectAccountWithManifest(manifest, rootPackage, toUint8Array(payload.value));\n }\n if (payload.type === 'hex') {\n return callReflectAccountWithManifest(manifest, rootPackage, hexToBytes(payload.value));\n }\n throw new Error(`Invalid payload type`);\n}\n\n/**\n * Reflect an event using a pre-resolved manifest.\n */\nexport async function reflectEventWithManifest(\n manifest: Manifest,\n rootPackage: string,\n payload: ReflectRootPayload,\n): Promise<JsonValue> {\n if (payload.type === 'binary') {\n return callReflectEventWithManifest(manifest, rootPackage, toUint8Array(payload.value));\n }\n if (payload.type === 'hex') {\n return callReflectEventWithManifest(manifest, rootPackage, hexToBytes(payload.value));\n }\n throw new Error(`Invalid payload type`);\n}\n\n/**\n * Build layout IR using a pre-resolved manifest.\n */\nexport async function buildLayoutIrWithManifest(\n manifest: Manifest,\n rootPackage: string,\n): Promise<JsonValue> {\n const bindings = await loadBindings();\n const manifestJson = JSON.stringify(manifest);\n const result = bindings.build_layout_ir_with_manifest(manifestJson, rootPackage);\n return JSON.parse(result);\n}\n\n/**\n * Get the list of package names in a manifest.\n */\nexport async function getManifestPackages(manifest: Manifest): Promise<string[]> {\n const bindings = await loadBindings();\n const manifestJson = JSON.stringify(manifest);\n const result = bindings.get_manifest_packages(manifestJson);\n return JSON.parse(result);\n}\n\nexport interface ManifestPackageInfo {\n name: string;\n package: string;\n version: number;\n type_count: number;\n has_root_types: boolean;\n}\n\n/**\n * Validate a manifest and return information about its contents.\n */\nexport async function validateManifest(manifest: Manifest): Promise<ManifestPackageInfo[]> {\n const bindings = await loadBindings();\n const manifestJson = JSON.stringify(manifest);\n const result = bindings.validate_manifest(manifestJson);\n return JSON.parse(result);\n}\n","/**\n * Import Source Types\n *\n * These types mirror the Rust ImportSource enum and related types.\n */\n\n/* Target type for on-chain ABI imports */\nexport type OnchainTarget = \"program\" | \"abi-meta\" | \"abi\";\n\n/* Revision specifier for on-chain imports */\nexport type RevisionSpec =\n | { type: \"exact\"; value: number }\n | { type: \"minimum\"; value: number }\n | { type: \"latest\" }\n | { type: \"atSlot\"; slot: bigint };\n\n/* Import source specification */\nexport type ImportSource =\n | { type: \"path\"; path: string }\n | { type: \"git\"; url: string; ref: string; path: string }\n | { type: \"http\"; url: string }\n | {\n type: \"onchain\";\n address: string;\n target: OnchainTarget;\n network: string;\n revision: RevisionSpec;\n };\n\n/* Package identifier */\nexport interface PackageId {\n packageName: string;\n version: string;\n}\n\n/* Resolved package information */\nexport interface ResolvedPackage {\n id: PackageId;\n source: ImportSource;\n abiYaml: string;\n dependencies: PackageId[];\n isRemote: boolean;\n}\n\n/* Resolution result */\nexport interface ResolutionResult {\n root: ResolvedPackage;\n allPackages: ResolvedPackage[];\n manifest: Record<string, string>;\n}\n\n/* Resolution error */\nexport class ResolutionError extends Error {\n constructor(\n public code:\n | \"CYCLIC_DEPENDENCY\"\n | \"VERSION_CONFLICT\"\n | \"FETCH_ERROR\"\n | \"PARSE_ERROR\"\n | \"NOT_FOUND\"\n | \"UNSUPPORTED_IMPORT_TYPE\",\n message: string,\n public details?: unknown\n ) {\n super(message);\n this.name = \"ResolutionError\";\n }\n}\n\n/* ABI account header constants (matches Rust) */\nexport const ABI_ACCOUNT_HEADER_SIZE = 45;\nexport const ABI_STATE_OPEN = 0x00;\nexport const ABI_STATE_FINALIZED = 0x01;\n\n/* Parsed ABI account data */\nexport interface AbiAccountData {\n abiMetaAccount: Uint8Array;\n revision: bigint;\n state: number;\n content: string;\n}\n\n/* RPC endpoint configuration */\nexport interface RpcEndpoints {\n [network: string]: string;\n}\n\n/* Default RPC endpoints */\nexport const DEFAULT_RPC_ENDPOINTS: RpcEndpoints = {\n mainnet: \"https://rpc.thru.network\",\n testnet: \"https://rpc-testnet.thru.network\",\n};\n\n/* ABI metadata parsed from YAML */\nexport interface AbiMetadata {\n package: string;\n name?: string;\n \"abi-version\": number;\n \"package-version\": string;\n description: string;\n imports?: ImportSourceYaml[];\n}\n\n/* Import source as it appears in YAML */\nexport type ImportSourceYaml =\n | { type: \"path\"; path: string }\n | { type: \"git\"; url: string; ref: string; path: string }\n | { type: \"http\"; url: string }\n | {\n type: \"onchain\";\n address: string;\n target?: OnchainTarget;\n network: string;\n revision?: number | string;\n };\n\n/* Parsed ABI file */\nexport interface AbiFile {\n abi: AbiMetadata;\n types: unknown[];\n}\n","/**\n * On-chain ABI Fetcher\n *\n * Fetches ABI content from on-chain accounts.\n */\n\nimport type { AbiAccountData, RpcEndpoints, RevisionSpec, OnchainTarget } from \"./types\";\nimport {\n ABI_ACCOUNT_HEADER_SIZE,\n ABI_STATE_OPEN,\n ABI_STATE_FINALIZED,\n DEFAULT_RPC_ENDPOINTS,\n} from \"./types\";\n\n/**\n * Minimal interface for a Thru RPC client that can fetch raw accounts.\n * This is compatible with @thru/sdk client but doesn't require it.\n */\nexport interface ThruRpcClient {\n query: {\n getRawAccount: (request: {\n address: { value: Uint8Array };\n versionContext: Record<string, unknown>;\n }) => Promise<{ rawData?: Uint8Array }>;\n };\n}\n\n/* ABI account seed suffix (matches on-chain ABI manager) */\nconst ABI_ACCOUNT_SUFFIX = \"_abi_account\";\nconst ABI_ACCOUNT_SUFFIX_BYTES = new TextEncoder().encode(ABI_ACCOUNT_SUFFIX);\n\nconst ABI_META_HEADER_SIZE = 4;\nconst ABI_META_BODY_SIZE = 96;\nconst ABI_META_ACCOUNT_SIZE = ABI_META_HEADER_SIZE + ABI_META_BODY_SIZE;\n\nconst ABI_META_VERSION = 1;\nconst ABI_META_KIND_OFFICIAL = 0;\nconst ABI_META_KIND_EXTERNAL = 1;\n\nconst DEFAULT_ABI_MANAGER_PROGRAM_ID =\n \"taWqAAOSe9pavaaMpkc9VbSLBUMbuW6Mk59sZlSbcNHsJA\";\n\nasync function sha256Bytes(data: Uint8Array): Promise<Uint8Array> {\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data as BufferSource);\n return new Uint8Array(hashBuffer);\n}\n\nfunction concatBytes(...chunks: Uint8Array[]): Uint8Array {\n const total = chunks.reduce((sum, chunk) => sum + chunk.length, 0);\n const out = new Uint8Array(total);\n let offset = 0;\n for (const chunk of chunks) {\n out.set(chunk, offset);\n offset += chunk.length;\n }\n return out;\n}\n\nfunction abiMetaBodyForProgram(program: Uint8Array): Uint8Array {\n const body = new Uint8Array(ABI_META_BODY_SIZE);\n body.set(program.slice(0, 32), 0);\n return body;\n}\n\nasync function deriveAbiAccountSeed(kind: number, body: Uint8Array): Promise<Uint8Array> {\n return sha256Bytes(concatBytes(new Uint8Array([kind]), body, ABI_ACCOUNT_SUFFIX_BYTES));\n}\n\nasync function createProgramDefinedAccountAddress(\n owner: Uint8Array,\n isEphemeral: boolean,\n seed: Uint8Array\n): Promise<Uint8Array> {\n const flag = new Uint8Array([isEphemeral ? 1 : 0]);\n return sha256Bytes(concatBytes(owner, flag, seed));\n}\n\nasync function deriveAbiAccountAddress(\n kind: number,\n body: Uint8Array,\n owner: Uint8Array,\n isEphemeral: boolean\n): Promise<Uint8Array> {\n const seed = await deriveAbiAccountSeed(kind, body);\n return createProgramDefinedAccountAddress(owner, isEphemeral, seed);\n}\n\n/**\n * Derive the official ABI account address for a given program.\n *\n * This performs the same derivation as OnchainFetcher.fetch() with target=\"program\",\n * returning the raw 32-byte address of the ABI account.\n */\nexport async function deriveOfficialAbiAddress(\n programAddress: string,\n abiManagerProgramId: string = DEFAULT_ABI_MANAGER_PROGRAM_ID\n): Promise<Uint8Array> {\n const programBytes = decodeAddress(programAddress);\n const managerBytes = decodeAddress(abiManagerProgramId);\n const body = abiMetaBodyForProgram(programBytes);\n return deriveAbiAccountAddress(ABI_META_KIND_OFFICIAL, body, managerBytes, false);\n}\n\ntype AbiMetaAccount = {\n version: number;\n kind: number;\n flags: number;\n body: Uint8Array;\n};\n\nfunction parseAbiMetaAccount(data: Uint8Array): AbiMetaAccount {\n if (data.length < ABI_META_ACCOUNT_SIZE) {\n throw new Error(\n `ABI meta account data too short: ${data.length} bytes, expected at least ${ABI_META_ACCOUNT_SIZE}`\n );\n }\n\n const version = data[0];\n const kind = data[1];\n const flags = data[2] | (data[3] << 8);\n const body = data.slice(ABI_META_HEADER_SIZE, ABI_META_HEADER_SIZE + ABI_META_BODY_SIZE);\n\n if (version !== ABI_META_VERSION) {\n throw new Error(`Unsupported ABI meta version: ${version}`);\n }\n if (kind !== ABI_META_KIND_OFFICIAL && kind !== ABI_META_KIND_EXTERNAL) {\n throw new Error(`Unsupported ABI meta kind: ${kind}`);\n }\n\n return { version, kind, flags, body };\n}\n\n/**\n * Parse ABI account data from raw bytes.\n *\n * Account header layout (45 bytes):\n * - abi_meta_account: [u8; 32]\n * - revision: u64 (little-endian)\n * - state: u8 (0x00=OPEN, 0x01=FINALIZED)\n * - content_sz: u32 (little-endian)\n * - content: [u8; content_sz]\n */\nexport function parseAbiAccountData(data: Uint8Array): AbiAccountData {\n if (data.length < ABI_ACCOUNT_HEADER_SIZE) {\n throw new Error(\n `ABI account data too short: ${data.length} bytes, expected at least ${ABI_ACCOUNT_HEADER_SIZE}`\n );\n }\n\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\n const abiMetaAccount = data.slice(0, 32);\n const revision = view.getBigUint64(32, true);\n const state = data[40];\n const contentSize = view.getUint32(41, true);\n\n if (state !== ABI_STATE_OPEN && state !== ABI_STATE_FINALIZED) {\n throw new Error(`Invalid ABI account state: ${state}`);\n }\n\n const expectedSize = ABI_ACCOUNT_HEADER_SIZE + contentSize;\n if (data.length < expectedSize) {\n throw new Error(\n `ABI account data truncated: ${data.length} bytes, expected ${expectedSize}`\n );\n }\n\n const contentBytes = data.slice(ABI_ACCOUNT_HEADER_SIZE, expectedSize);\n const content = new TextDecoder().decode(contentBytes);\n\n return {\n abiMetaAccount,\n revision,\n state,\n content,\n };\n}\n\n/**\n * Check if a revision matches the specification.\n *\n * Note: `atSlot` skips this check entirely in `OnchainFetcher.fetch` — the\n * constraint there is \"whatever revision was active at this slot\", and the\n * RPC's version_context handles that selection server-side.\n */\nexport function revisionMatches(revision: bigint, spec: RevisionSpec): boolean {\n switch (spec.type) {\n case \"latest\":\n return true;\n case \"exact\":\n return revision === BigInt(spec.value);\n case \"minimum\":\n return revision >= BigInt(spec.value);\n case \"atSlot\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Build the VersionContext oneof shape expected by getRawAccount for a given\n * RevisionSpec. `latest`/`exact`/`minimum` use `{ case: \"current\" }` because\n * they all target the live account; only `atSlot` selects a historical slot.\n */\nfunction versionContextForRevision(spec: RevisionSpec): Record<string, unknown> {\n if (spec.type === \"atSlot\") {\n return { version: { case: \"slot\", value: spec.slot } };\n }\n return { version: { case: \"current\", value: {} } };\n}\n\nexport interface OnchainFetcherConfig {\n rpcEndpoints?: RpcEndpoints;\n thruClient?: ThruRpcClient;\n abiManagerProgramId?: string;\n abiManagerIsEphemeral?: boolean;\n}\n\nexport interface FetchResult {\n abiYaml: string;\n revision: bigint;\n isFinalized: boolean;\n}\n\n/**\n * Fetcher for on-chain ABI accounts.\n *\n * Supports fetching ABI from:\n * - Official ABI via program (target: \"program\")\n * - ABI via ABI meta account (target: \"abi-meta\")\n * - Direct ABI account (target: \"abi\")\n */\nexport class OnchainFetcher {\n private rpcEndpoints: RpcEndpoints;\n private thruClient?: ThruRpcClient;\n private abiManagerProgramId: Uint8Array;\n private abiManagerIsEphemeral: boolean;\n\n constructor(config: OnchainFetcherConfig = {}) {\n this.rpcEndpoints = { ...DEFAULT_RPC_ENDPOINTS, ...config.rpcEndpoints };\n this.thruClient = config.thruClient;\n const managerId = config.abiManagerProgramId ?? DEFAULT_ABI_MANAGER_PROGRAM_ID;\n this.abiManagerProgramId = decodeAddress(managerId);\n this.abiManagerIsEphemeral = config.abiManagerIsEphemeral ?? false;\n }\n\n /**\n * Fetch ABI content from an on-chain account.\n *\n * The `revision` parameter controls both how the account is selected\n * server-side (via version_context when `atSlot` is used) and whether the\n * returned revision is validated against an expected value (`exact` /\n * `minimum`). For `atSlot`, the returned `FetchResult.revision` reflects\n * the revision that was active at that slot.\n */\n async fetch(\n address: string,\n target: OnchainTarget,\n network: string,\n revision: RevisionSpec\n ): Promise<FetchResult> {\n const addressBytes = this.parseAddress(address);\n let abiAddress: Uint8Array;\n if (target === \"program\") {\n const body = abiMetaBodyForProgram(addressBytes);\n abiAddress = await deriveAbiAccountAddress(\n ABI_META_KIND_OFFICIAL,\n body,\n this.abiManagerProgramId,\n this.abiManagerIsEphemeral\n );\n } else if (target === \"abi-meta\") {\n const metaData = await this.fetchAccountData(addressBytes, network, revision);\n const meta = parseAbiMetaAccount(metaData);\n abiAddress = await deriveAbiAccountAddress(\n meta.kind,\n meta.body,\n this.abiManagerProgramId,\n this.abiManagerIsEphemeral\n );\n } else {\n abiAddress = addressBytes;\n }\n\n const accountData = await this.fetchAccountData(abiAddress, network, revision);\n const parsed = parseAbiAccountData(accountData);\n\n if (!revisionMatches(parsed.revision, revision)) {\n const revisionStr =\n revision.type === \"exact\"\n ? `exactly ${revision.value}`\n : revision.type === \"minimum\"\n ? `at least ${revision.value}`\n : revision.type === \"atSlot\"\n ? `active at slot ${revision.slot}`\n : \"latest\";\n throw new Error(\n `ABI revision mismatch: got ${parsed.revision}, expected ${revisionStr}`\n );\n }\n\n return {\n abiYaml: parsed.content,\n revision: parsed.revision,\n isFinalized: parsed.state === ABI_STATE_FINALIZED,\n };\n }\n\n /**\n * Get the RPC endpoint for a network.\n */\n getRpcEndpoint(network: string): string {\n const endpoint = this.rpcEndpoints[network];\n if (!endpoint) {\n throw new Error(\n `Unknown network: ${network}. Configure rpcEndpoints for this network.`\n );\n }\n return endpoint;\n }\n\n private parseAddress(address: string): Uint8Array {\n return decodeAddress(address);\n }\n\n private async fetchAccountData(\n address: Uint8Array,\n network: string,\n revision: RevisionSpec,\n ): Promise<Uint8Array> {\n if (this.thruClient) {\n return this.fetchWithThruClient(address, revision);\n }\n if (revision.type === \"atSlot\") {\n throw new Error(\n \"Slot-aware ABI fetch requires a ThruClient; the HTTP/JSON-RPC fallback does not support historical slot queries\",\n );\n }\n return this.fetchWithHttp(address, network);\n }\n\n private async fetchWithThruClient(\n address: Uint8Array,\n revision: RevisionSpec,\n ): Promise<Uint8Array> {\n if (!this.thruClient) {\n throw new Error(\"ThruClient not configured\");\n }\n\n const response = await this.thruClient.query.getRawAccount({\n address: { value: address },\n versionContext: versionContextForRevision(revision),\n });\n\n if (!response.rawData) {\n throw new Error(\"Account not found or has no data\");\n }\n\n return response.rawData;\n }\n\n private async fetchWithHttp(address: Uint8Array, network: string): Promise<Uint8Array> {\n const endpoint = this.getRpcEndpoint(network);\n const addressStr = encodeThruAddress(address);\n\n /* Use HTTP/JSON-RPC fallback */\n const response = await fetch(`${endpoint}/v1/accounts/${addressStr}:raw`, {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n },\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n throw new Error(`ABI account not found: ${addressStr}`);\n }\n throw new Error(`Failed to fetch account: ${response.status} ${response.statusText}`);\n }\n\n const json = await response.json();\n if (!json.rawData) {\n throw new Error(\"Account has no data\");\n }\n\n /* rawData is base64 encoded */\n return base64Decode(json.rawData);\n }\n}\n\nconst BASE64_URL_ALPHABET =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\n\nfunction decodeAddress(address: string): Uint8Array {\n if (address.startsWith(\"ta\") && address.length === 46) {\n return decodeThruAddress(address);\n }\n throw new Error(`Invalid Thru address format: ${address} (expected 46-char ta-prefixed address)`);\n}\n\nfunction decodeThruAddress(address: string): Uint8Array {\n if (address.length !== 46 || !address.startsWith(\"ta\")) {\n throw new Error(`Invalid Thru address: ${address}`);\n }\n\n const invlut = new Int16Array(256);\n invlut.fill(-1);\n for (let i = 0; i < BASE64_URL_ALPHABET.length; i += 1) {\n invlut[BASE64_URL_ALPHABET.charCodeAt(i)] = i;\n }\n\n let inIdx = 2;\n let inSz = 40;\n let outIdx = 0;\n let checksum = 0;\n const out = new Uint8Array(32);\n\n while (inSz >= 4) {\n const a = invlut[address.charCodeAt(inIdx + 0)];\n const b = invlut[address.charCodeAt(inIdx + 1)];\n const c = invlut[address.charCodeAt(inIdx + 2)];\n const d = invlut[address.charCodeAt(inIdx + 3)];\n if (a < 0 || b < 0 || c < 0 || d < 0) {\n throw new Error(`Invalid Thru address character at ${inIdx}`);\n }\n const triple = (a << 18) | (b << 12) | (c << 6) | d;\n const temp1 = (triple >> 16) & 0xff;\n checksum += temp1;\n out[outIdx++] = temp1;\n const temp2 = (triple >> 8) & 0xff;\n checksum += temp2;\n out[outIdx++] = temp2;\n const temp3 = triple & 0xff;\n checksum += temp3;\n out[outIdx++] = temp3;\n inIdx += 4;\n inSz -= 4;\n }\n\n const a = invlut[address.charCodeAt(inIdx + 0)];\n const b = invlut[address.charCodeAt(inIdx + 1)];\n const c = invlut[address.charCodeAt(inIdx + 2)];\n const d = invlut[address.charCodeAt(inIdx + 3)];\n if (a < 0 || b < 0 || c < 0 || d < 0) {\n throw new Error(`Invalid Thru address character at ${inIdx}`);\n }\n const triple = (a << 18) | (b << 12) | (c << 6) | d;\n const temp1 = (triple >> 16) & 0xff;\n checksum += temp1;\n out[outIdx++] = temp1;\n const temp2 = (triple >> 8) & 0xff;\n checksum += temp2;\n out[outIdx++] = temp2;\n const incomingChecksum = triple & 0xff;\n if ((checksum & 0xff) !== incomingChecksum) {\n throw new Error(\"Invalid Thru address checksum\");\n }\n\n return out;\n}\n\nfunction encodeThruAddress(bytes: Uint8Array): string {\n if (bytes.length !== 32) {\n throw new Error(`Expected 32 bytes, got ${bytes.length}`);\n }\n\n function maskForBits(bits: number): number {\n return bits === 0 ? 0 : (1 << bits) - 1;\n }\n\n let output = \"ta\";\n let checksum = 0;\n let accumulator = 0;\n let bitsCollected = 0;\n\n for (let i = 0; i < 30; i++) {\n const byte = bytes[i];\n checksum += byte;\n accumulator = (accumulator << 8) | byte;\n bitsCollected += 8;\n while (bitsCollected >= 6) {\n const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n output += BASE64_URL_ALPHABET[index];\n bitsCollected -= 6;\n accumulator &= maskForBits(bitsCollected);\n }\n }\n\n const secondLast = bytes[30];\n checksum += secondLast;\n accumulator = (accumulator << 8) | secondLast;\n bitsCollected += 8;\n\n const last = bytes[31];\n checksum += last;\n accumulator = (accumulator << 8) | last;\n bitsCollected += 8;\n\n accumulator = (accumulator << 8) | (checksum & 0xff);\n bitsCollected += 8;\n\n while (bitsCollected >= 6) {\n const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n output += BASE64_URL_ALPHABET[index];\n bitsCollected -= 6;\n accumulator &= maskForBits(bitsCollected);\n }\n\n return output;\n}\n\nfunction base64Decode(str: string): Uint8Array {\n const binaryStr = atob(str);\n const bytes = new Uint8Array(binaryStr.length);\n for (let i = 0; i < binaryStr.length; i++) {\n bytes[i] = binaryStr.charCodeAt(i);\n }\n return bytes;\n}\n","/**\n * Import Resolver\n *\n * Resolves ABI imports and builds a manifest for WASM consumption.\n */\n\nimport * as yaml from \"yaml\";\nimport type {\n ImportSource,\n ImportSourceYaml,\n PackageId,\n ResolvedPackage,\n ResolutionResult,\n AbiMetadata,\n AbiFile,\n RpcEndpoints,\n RevisionSpec,\n} from \"./types\";\nimport { ResolutionError, DEFAULT_RPC_ENDPOINTS } from \"./types\";\nimport { OnchainFetcher, type OnchainFetcherConfig } from \"./onchainFetcher\";\n\nexport interface ResolverConfig {\n onchainFetcher?: OnchainFetcher;\n rpcEndpoints?: RpcEndpoints;\n maxDepth?: number;\n}\n\n/**\n * Resolve all imports for an ABI and return a manifest.\n *\n * The resolver only supports on-chain imports for browser environments.\n * For path imports, use the CLI `bundle` command.\n */\nexport async function resolveImports(\n rootAbiYaml: string,\n config: ResolverConfig = {}\n): Promise<ResolutionResult> {\n const resolver = new ImportResolver(config);\n return resolver.resolve(rootAbiYaml);\n}\n\n/**\n * Create a manifest from an ABI and its resolved imports.\n *\n * The manifest maps package names to ABI YAML content.\n */\nexport function createManifest(result: ResolutionResult): Record<string, string> {\n return result.manifest;\n}\n\nclass ImportResolver {\n private onchainFetcher: OnchainFetcher;\n private maxDepth: number;\n private visited: Map<string, ResolvedPackage>;\n private inProgress: Set<string>;\n\n constructor(config: ResolverConfig = {}) {\n this.onchainFetcher =\n config.onchainFetcher ??\n new OnchainFetcher({\n rpcEndpoints: { ...DEFAULT_RPC_ENDPOINTS, ...config.rpcEndpoints },\n });\n this.maxDepth = config.maxDepth ?? 10;\n this.visited = new Map();\n this.inProgress = new Set();\n }\n\n async resolve(rootAbiYaml: string): Promise<ResolutionResult> {\n this.visited.clear();\n this.inProgress.clear();\n\n const rootPackage = await this.resolvePackage(rootAbiYaml, false, 0);\n const allPackages = Array.from(this.visited.values());\n const manifest: Record<string, string> = {};\n\n for (const pkg of allPackages) {\n manifest[pkg.id.packageName] = pkg.abiYaml;\n }\n\n return {\n root: rootPackage,\n allPackages,\n manifest,\n };\n }\n\n private async resolvePackage(\n abiYaml: string,\n isRemote: boolean,\n depth: number\n ): Promise<ResolvedPackage> {\n if (depth > this.maxDepth) {\n throw new ResolutionError(\n \"CYCLIC_DEPENDENCY\",\n `Maximum resolution depth (${this.maxDepth}) exceeded`\n );\n }\n\n const abiFile = this.parseAbiYaml(abiYaml);\n const packageId = this.extractPackageId(abiFile);\n const canonicalKey = `${packageId.packageName}@${packageId.version}`;\n\n /* Check for cycle */\n if (this.inProgress.has(canonicalKey)) {\n throw new ResolutionError(\n \"CYCLIC_DEPENDENCY\",\n `Cyclic dependency detected: ${canonicalKey}`\n );\n }\n\n /* Check if already resolved (keyed by name@version to match inProgress) */\n const existing = this.visited.get(canonicalKey);\n if (existing) {\n return existing;\n }\n\n /* Check for version conflict: same package name, different version */\n for (const [key, pkg] of this.visited) {\n if (pkg.id.packageName === packageId.packageName && pkg.id.version !== packageId.version) {\n throw new ResolutionError(\n \"VERSION_CONFLICT\",\n `Version conflict for ${packageId.packageName}: ` +\n `${pkg.id.version} vs ${packageId.version}`,\n { existing: pkg.id, conflicting: packageId }\n );\n }\n }\n\n this.inProgress.add(canonicalKey);\n\n const imports = abiFile.abi.imports ?? [];\n const dependencies: PackageId[] = [];\n\n for (const importYaml of imports) {\n const importSource = this.normalizeImportSource(importYaml);\n\n /* Enforce local import restriction */\n if (isRemote && importSource.type === \"path\") {\n throw new ResolutionError(\n \"UNSUPPORTED_IMPORT_TYPE\",\n `Remote package ${packageId.packageName} cannot import local path: ${importSource.path}`\n );\n }\n\n /* Determine child remoteness from the import source type, not the parent.\n Non-path imports (onchain, git, http) are always remote. */\n const childIsRemote = importSource.type !== \"path\";\n const depPackage = await this.resolveImport(importSource, childIsRemote, depth + 1);\n dependencies.push(depPackage.id);\n }\n\n this.inProgress.delete(canonicalKey);\n\n const resolvedPackage: ResolvedPackage = {\n id: packageId,\n source: { type: \"path\", path: \"<root>\" },\n abiYaml,\n dependencies,\n isRemote,\n };\n\n this.visited.set(canonicalKey, resolvedPackage);\n return resolvedPackage;\n }\n\n private async resolveImport(\n source: ImportSource,\n parentIsRemote: boolean,\n depth: number\n ): Promise<ResolvedPackage> {\n switch (source.type) {\n case \"path\":\n throw new ResolutionError(\n \"UNSUPPORTED_IMPORT_TYPE\",\n `Path imports are not supported in browser. Use CLI 'bundle' command. Path: ${source.path}`\n );\n\n case \"git\":\n throw new ResolutionError(\n \"UNSUPPORTED_IMPORT_TYPE\",\n `Git imports are not supported in browser. Use CLI 'bundle' command. URL: ${source.url}`\n );\n\n case \"http\":\n throw new ResolutionError(\n \"UNSUPPORTED_IMPORT_TYPE\",\n `HTTP imports are not supported in browser. Use CLI 'bundle' command. URL: ${source.url}`\n );\n\n case \"onchain\":\n return this.resolveOnchainImport(source, depth);\n\n default:\n throw new ResolutionError(\n \"UNSUPPORTED_IMPORT_TYPE\",\n `Unknown import type: ${(source as ImportSource).type}`\n );\n }\n }\n\n private async resolveOnchainImport(\n source: Extract<ImportSource, { type: \"onchain\" }>,\n depth: number\n ): Promise<ResolvedPackage> {\n const result = await this.onchainFetcher.fetch(\n source.address,\n source.target,\n source.network,\n source.revision\n );\n\n const resolved = await this.resolvePackage(result.abiYaml, true, depth);\n resolved.source = source;\n resolved.isRemote = true;\n\n return resolved;\n }\n\n private parseAbiYaml(yamlContent: string): AbiFile {\n try {\n const parsed = yaml.parse(yamlContent);\n if (!parsed || typeof parsed !== \"object\") {\n throw new Error(\"Invalid ABI YAML: not an object\");\n }\n if (!parsed.abi || typeof parsed.abi !== \"object\") {\n throw new Error(\"Invalid ABI YAML: missing 'abi' section\");\n }\n return parsed as AbiFile;\n } catch (error) {\n throw new ResolutionError(\n \"PARSE_ERROR\",\n `Failed to parse ABI YAML: ${error instanceof Error ? error.message : String(error)}`,\n error\n );\n }\n }\n\n private extractPackageId(abiFile: AbiFile): PackageId {\n const metadata = abiFile.abi;\n if (!metadata.package) {\n throw new ResolutionError(\"PARSE_ERROR\", \"ABI missing 'package' field\");\n }\n return {\n packageName: metadata.package,\n version: metadata[\"package-version\"] ?? \"0.0.0\",\n };\n }\n\n private normalizeImportSource(source: ImportSourceYaml): ImportSource {\n switch (source.type) {\n case \"path\":\n return { type: \"path\", path: source.path };\n\n case \"git\":\n return {\n type: \"git\",\n url: source.url,\n ref: source.ref,\n path: source.path,\n };\n\n case \"http\":\n return { type: \"http\", url: source.url };\n\n case \"onchain\": {\n const revision = this.parseRevisionSpec(source.revision);\n return {\n type: \"onchain\",\n address: source.address,\n target: source.target ?? \"program\",\n network: source.network,\n revision,\n };\n }\n\n default:\n throw new ResolutionError(\n \"UNSUPPORTED_IMPORT_TYPE\",\n `Unknown import type: ${(source as ImportSourceYaml).type}`\n );\n }\n }\n\n private parseRevisionSpec(revision: number | string | undefined): RevisionSpec {\n if (revision === undefined || revision === \"latest\") {\n return { type: \"latest\" };\n }\n if (typeof revision === \"number\") {\n return { type: \"exact\", value: revision };\n }\n if (typeof revision === \"string\") {\n if (revision.startsWith(\">=\")) {\n const value = parseInt(revision.slice(2), 10);\n if (isNaN(value)) {\n throw new Error(`Invalid minimum revision: ${revision}`);\n }\n return { type: \"minimum\", value };\n }\n const value = parseInt(revision, 10);\n if (!isNaN(value)) {\n return { type: \"exact\", value };\n }\n }\n throw new Error(`Invalid revision specification: ${revision}`);\n }\n}\n"]}
@@ -0,0 +1,65 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ export function build_layout_ir(abi_yaml: string): any;
5
+
6
+ /**
7
+ * Build layout IR from a pre-resolved manifest.
8
+ */
9
+ export function build_layout_ir_with_manifest(manifest_json: string, root_package: string): any;
10
+
11
+ export function format_reflection(raw_json: string): any;
12
+
13
+ export function format_reflection_with_options(raw_json: string, options_json: string): any;
14
+
15
+ /**
16
+ * Get the list of package names in a manifest.
17
+ */
18
+ export function get_manifest_packages(manifest_json: string): any;
19
+
20
+ export function reflect(abi_yaml: string, type_name: string, buffer: Uint8Array): any;
21
+
22
+ export function reflect_account(abi_yaml: string, buffer: Uint8Array): any;
23
+
24
+ /**
25
+ * Reflect an account using a pre-resolved manifest.
26
+ */
27
+ export function reflect_account_with_manifest(manifest_json: string, root_package: string, buffer: Uint8Array): any;
28
+
29
+ export function reflect_event(abi_yaml: string, buffer: Uint8Array): any;
30
+
31
+ /**
32
+ * Reflect an event using a pre-resolved manifest.
33
+ */
34
+ export function reflect_event_with_manifest(manifest_json: string, root_package: string, buffer: Uint8Array): any;
35
+
36
+ export function reflect_instruction(abi_yaml: string, buffer: Uint8Array): any;
37
+
38
+ /**
39
+ * Reflect an instruction using a pre-resolved manifest.
40
+ */
41
+ export function reflect_instruction_with_manifest(manifest_json: string, root_package: string, buffer: Uint8Array): any;
42
+
43
+ /**
44
+ * Reflect a binary buffer using a pre-resolved manifest.
45
+ *
46
+ * The manifest is a JSON object mapping package names to their ABI YAML content.
47
+ * The root_package parameter specifies which package contains the target type
48
+ * and root type configuration.
49
+ *
50
+ * Example manifest:
51
+ * ```json
52
+ * {
53
+ * "thru.program.token": "abi:\n package: thru.program.token\n ...",
54
+ * "thru.common.primitives": "abi:\n package: thru.common.primitives\n ..."
55
+ * }
56
+ * ```
57
+ */
58
+ export function reflect_with_manifest(manifest_json: string, root_package: string, type_name: string, buffer: Uint8Array): any;
59
+
60
+ /**
61
+ * Validate a manifest and return information about its contents.
62
+ */
63
+ export function validate_manifest(manifest_json: string): any;
64
+
65
+ export function wasm_start(): void;
@@ -0,0 +1,5 @@
1
+ import * as wasm from "./abi_reflect_wasm_bg.wasm";
2
+ export * from "./abi_reflect_wasm_bg.js";
3
+ import { __wbg_set_wasm } from "./abi_reflect_wasm_bg.js";
4
+ __wbg_set_wasm(wasm);
5
+ wasm.__wbindgen_start();
@@ -0,0 +1,412 @@
1
+ let wasm;
2
+ export function __wbg_set_wasm(val) {
3
+ wasm = val;
4
+ }
5
+
6
+ function getArrayU8FromWasm0(ptr, len) {
7
+ ptr = ptr >>> 0;
8
+ return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
9
+ }
10
+
11
+ let cachedDataViewMemory0 = null;
12
+ function getDataViewMemory0() {
13
+ if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {
14
+ cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
15
+ }
16
+ return cachedDataViewMemory0;
17
+ }
18
+
19
+ function getStringFromWasm0(ptr, len) {
20
+ ptr = ptr >>> 0;
21
+ return decodeText(ptr, len);
22
+ }
23
+
24
+ let cachedUint8ArrayMemory0 = null;
25
+ function getUint8ArrayMemory0() {
26
+ if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
27
+ cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
28
+ }
29
+ return cachedUint8ArrayMemory0;
30
+ }
31
+
32
+ function passStringToWasm0(arg, malloc, realloc) {
33
+ if (realloc === undefined) {
34
+ const buf = cachedTextEncoder.encode(arg);
35
+ const ptr = malloc(buf.length, 1) >>> 0;
36
+ getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);
37
+ WASM_VECTOR_LEN = buf.length;
38
+ return ptr;
39
+ }
40
+
41
+ let len = arg.length;
42
+ let ptr = malloc(len, 1) >>> 0;
43
+
44
+ const mem = getUint8ArrayMemory0();
45
+
46
+ let offset = 0;
47
+
48
+ for (; offset < len; offset++) {
49
+ const code = arg.charCodeAt(offset);
50
+ if (code > 0x7F) break;
51
+ mem[ptr + offset] = code;
52
+ }
53
+ if (offset !== len) {
54
+ if (offset !== 0) {
55
+ arg = arg.slice(offset);
56
+ }
57
+ ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
58
+ const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
59
+ const ret = cachedTextEncoder.encodeInto(arg, view);
60
+
61
+ offset += ret.written;
62
+ ptr = realloc(ptr, len, offset, 1) >>> 0;
63
+ }
64
+
65
+ WASM_VECTOR_LEN = offset;
66
+ return ptr;
67
+ }
68
+
69
+ function takeFromExternrefTable0(idx) {
70
+ const value = wasm.__wbindgen_externrefs.get(idx);
71
+ wasm.__externref_table_dealloc(idx);
72
+ return value;
73
+ }
74
+
75
+ let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
76
+ cachedTextDecoder.decode();
77
+ const MAX_SAFARI_DECODE_BYTES = 2146435072;
78
+ let numBytesDecoded = 0;
79
+ function decodeText(ptr, len) {
80
+ numBytesDecoded += len;
81
+ if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
82
+ cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
83
+ cachedTextDecoder.decode();
84
+ numBytesDecoded = len;
85
+ }
86
+ return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
87
+ }
88
+
89
+ const cachedTextEncoder = new TextEncoder();
90
+
91
+ if (!('encodeInto' in cachedTextEncoder)) {
92
+ cachedTextEncoder.encodeInto = function (arg, view) {
93
+ const buf = cachedTextEncoder.encode(arg);
94
+ view.set(buf);
95
+ return {
96
+ read: arg.length,
97
+ written: buf.length
98
+ };
99
+ }
100
+ }
101
+
102
+ let WASM_VECTOR_LEN = 0;
103
+
104
+ /**
105
+ * @param {string} abi_yaml
106
+ * @returns {any}
107
+ */
108
+ export function build_layout_ir(abi_yaml) {
109
+ const ptr0 = passStringToWasm0(abi_yaml, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
110
+ const len0 = WASM_VECTOR_LEN;
111
+ const ret = wasm.build_layout_ir(ptr0, len0);
112
+ if (ret[2]) {
113
+ throw takeFromExternrefTable0(ret[1]);
114
+ }
115
+ return takeFromExternrefTable0(ret[0]);
116
+ }
117
+
118
+ /**
119
+ * Build layout IR from a pre-resolved manifest.
120
+ * @param {string} manifest_json
121
+ * @param {string} root_package
122
+ * @returns {any}
123
+ */
124
+ export function build_layout_ir_with_manifest(manifest_json, root_package) {
125
+ const ptr0 = passStringToWasm0(manifest_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
126
+ const len0 = WASM_VECTOR_LEN;
127
+ const ptr1 = passStringToWasm0(root_package, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
128
+ const len1 = WASM_VECTOR_LEN;
129
+ const ret = wasm.build_layout_ir_with_manifest(ptr0, len0, ptr1, len1);
130
+ if (ret[2]) {
131
+ throw takeFromExternrefTable0(ret[1]);
132
+ }
133
+ return takeFromExternrefTable0(ret[0]);
134
+ }
135
+
136
+ /**
137
+ * @param {string} raw_json
138
+ * @returns {any}
139
+ */
140
+ export function format_reflection(raw_json) {
141
+ const ptr0 = passStringToWasm0(raw_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
142
+ const len0 = WASM_VECTOR_LEN;
143
+ const ret = wasm.format_reflection(ptr0, len0);
144
+ if (ret[2]) {
145
+ throw takeFromExternrefTable0(ret[1]);
146
+ }
147
+ return takeFromExternrefTable0(ret[0]);
148
+ }
149
+
150
+ /**
151
+ * @param {string} raw_json
152
+ * @param {string} options_json
153
+ * @returns {any}
154
+ */
155
+ export function format_reflection_with_options(raw_json, options_json) {
156
+ const ptr0 = passStringToWasm0(raw_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
157
+ const len0 = WASM_VECTOR_LEN;
158
+ const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
159
+ const len1 = WASM_VECTOR_LEN;
160
+ const ret = wasm.format_reflection_with_options(ptr0, len0, ptr1, len1);
161
+ if (ret[2]) {
162
+ throw takeFromExternrefTable0(ret[1]);
163
+ }
164
+ return takeFromExternrefTable0(ret[0]);
165
+ }
166
+
167
+ /**
168
+ * Get the list of package names in a manifest.
169
+ * @param {string} manifest_json
170
+ * @returns {any}
171
+ */
172
+ export function get_manifest_packages(manifest_json) {
173
+ const ptr0 = passStringToWasm0(manifest_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
174
+ const len0 = WASM_VECTOR_LEN;
175
+ const ret = wasm.get_manifest_packages(ptr0, len0);
176
+ if (ret[2]) {
177
+ throw takeFromExternrefTable0(ret[1]);
178
+ }
179
+ return takeFromExternrefTable0(ret[0]);
180
+ }
181
+
182
+ /**
183
+ * @param {string} abi_yaml
184
+ * @param {string} type_name
185
+ * @param {Uint8Array} buffer
186
+ * @returns {any}
187
+ */
188
+ export function reflect(abi_yaml, type_name, buffer) {
189
+ const ptr0 = passStringToWasm0(abi_yaml, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
190
+ const len0 = WASM_VECTOR_LEN;
191
+ const ptr1 = passStringToWasm0(type_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
192
+ const len1 = WASM_VECTOR_LEN;
193
+ const ret = wasm.reflect(ptr0, len0, ptr1, len1, buffer);
194
+ if (ret[2]) {
195
+ throw takeFromExternrefTable0(ret[1]);
196
+ }
197
+ return takeFromExternrefTable0(ret[0]);
198
+ }
199
+
200
+ /**
201
+ * @param {string} abi_yaml
202
+ * @param {Uint8Array} buffer
203
+ * @returns {any}
204
+ */
205
+ export function reflect_account(abi_yaml, buffer) {
206
+ const ptr0 = passStringToWasm0(abi_yaml, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
207
+ const len0 = WASM_VECTOR_LEN;
208
+ const ret = wasm.reflect_account(ptr0, len0, buffer);
209
+ if (ret[2]) {
210
+ throw takeFromExternrefTable0(ret[1]);
211
+ }
212
+ return takeFromExternrefTable0(ret[0]);
213
+ }
214
+
215
+ /**
216
+ * Reflect an account using a pre-resolved manifest.
217
+ * @param {string} manifest_json
218
+ * @param {string} root_package
219
+ * @param {Uint8Array} buffer
220
+ * @returns {any}
221
+ */
222
+ export function reflect_account_with_manifest(manifest_json, root_package, buffer) {
223
+ const ptr0 = passStringToWasm0(manifest_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
224
+ const len0 = WASM_VECTOR_LEN;
225
+ const ptr1 = passStringToWasm0(root_package, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
226
+ const len1 = WASM_VECTOR_LEN;
227
+ const ret = wasm.reflect_account_with_manifest(ptr0, len0, ptr1, len1, buffer);
228
+ if (ret[2]) {
229
+ throw takeFromExternrefTable0(ret[1]);
230
+ }
231
+ return takeFromExternrefTable0(ret[0]);
232
+ }
233
+
234
+ /**
235
+ * @param {string} abi_yaml
236
+ * @param {Uint8Array} buffer
237
+ * @returns {any}
238
+ */
239
+ export function reflect_event(abi_yaml, buffer) {
240
+ const ptr0 = passStringToWasm0(abi_yaml, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
241
+ const len0 = WASM_VECTOR_LEN;
242
+ const ret = wasm.reflect_event(ptr0, len0, buffer);
243
+ if (ret[2]) {
244
+ throw takeFromExternrefTable0(ret[1]);
245
+ }
246
+ return takeFromExternrefTable0(ret[0]);
247
+ }
248
+
249
+ /**
250
+ * Reflect an event using a pre-resolved manifest.
251
+ * @param {string} manifest_json
252
+ * @param {string} root_package
253
+ * @param {Uint8Array} buffer
254
+ * @returns {any}
255
+ */
256
+ export function reflect_event_with_manifest(manifest_json, root_package, buffer) {
257
+ const ptr0 = passStringToWasm0(manifest_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
258
+ const len0 = WASM_VECTOR_LEN;
259
+ const ptr1 = passStringToWasm0(root_package, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
260
+ const len1 = WASM_VECTOR_LEN;
261
+ const ret = wasm.reflect_event_with_manifest(ptr0, len0, ptr1, len1, buffer);
262
+ if (ret[2]) {
263
+ throw takeFromExternrefTable0(ret[1]);
264
+ }
265
+ return takeFromExternrefTable0(ret[0]);
266
+ }
267
+
268
+ /**
269
+ * @param {string} abi_yaml
270
+ * @param {Uint8Array} buffer
271
+ * @returns {any}
272
+ */
273
+ export function reflect_instruction(abi_yaml, buffer) {
274
+ const ptr0 = passStringToWasm0(abi_yaml, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
275
+ const len0 = WASM_VECTOR_LEN;
276
+ const ret = wasm.reflect_instruction(ptr0, len0, buffer);
277
+ if (ret[2]) {
278
+ throw takeFromExternrefTable0(ret[1]);
279
+ }
280
+ return takeFromExternrefTable0(ret[0]);
281
+ }
282
+
283
+ /**
284
+ * Reflect an instruction using a pre-resolved manifest.
285
+ * @param {string} manifest_json
286
+ * @param {string} root_package
287
+ * @param {Uint8Array} buffer
288
+ * @returns {any}
289
+ */
290
+ export function reflect_instruction_with_manifest(manifest_json, root_package, buffer) {
291
+ const ptr0 = passStringToWasm0(manifest_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
292
+ const len0 = WASM_VECTOR_LEN;
293
+ const ptr1 = passStringToWasm0(root_package, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
294
+ const len1 = WASM_VECTOR_LEN;
295
+ const ret = wasm.reflect_instruction_with_manifest(ptr0, len0, ptr1, len1, buffer);
296
+ if (ret[2]) {
297
+ throw takeFromExternrefTable0(ret[1]);
298
+ }
299
+ return takeFromExternrefTable0(ret[0]);
300
+ }
301
+
302
+ /**
303
+ * Reflect a binary buffer using a pre-resolved manifest.
304
+ *
305
+ * The manifest is a JSON object mapping package names to their ABI YAML content.
306
+ * The root_package parameter specifies which package contains the target type
307
+ * and root type configuration.
308
+ *
309
+ * Example manifest:
310
+ * ```json
311
+ * {
312
+ * "thru.program.token": "abi:\n package: thru.program.token\n ...",
313
+ * "thru.common.primitives": "abi:\n package: thru.common.primitives\n ..."
314
+ * }
315
+ * ```
316
+ * @param {string} manifest_json
317
+ * @param {string} root_package
318
+ * @param {string} type_name
319
+ * @param {Uint8Array} buffer
320
+ * @returns {any}
321
+ */
322
+ export function reflect_with_manifest(manifest_json, root_package, type_name, buffer) {
323
+ const ptr0 = passStringToWasm0(manifest_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
324
+ const len0 = WASM_VECTOR_LEN;
325
+ const ptr1 = passStringToWasm0(root_package, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
326
+ const len1 = WASM_VECTOR_LEN;
327
+ const ptr2 = passStringToWasm0(type_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
328
+ const len2 = WASM_VECTOR_LEN;
329
+ const ret = wasm.reflect_with_manifest(ptr0, len0, ptr1, len1, ptr2, len2, buffer);
330
+ if (ret[2]) {
331
+ throw takeFromExternrefTable0(ret[1]);
332
+ }
333
+ return takeFromExternrefTable0(ret[0]);
334
+ }
335
+
336
+ /**
337
+ * Validate a manifest and return information about its contents.
338
+ * @param {string} manifest_json
339
+ * @returns {any}
340
+ */
341
+ export function validate_manifest(manifest_json) {
342
+ const ptr0 = passStringToWasm0(manifest_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
343
+ const len0 = WASM_VECTOR_LEN;
344
+ const ret = wasm.validate_manifest(ptr0, len0);
345
+ if (ret[2]) {
346
+ throw takeFromExternrefTable0(ret[1]);
347
+ }
348
+ return takeFromExternrefTable0(ret[0]);
349
+ }
350
+
351
+ export function wasm_start() {
352
+ wasm.wasm_start();
353
+ }
354
+
355
+ export function __wbg___wbindgen_throw_dd24417ed36fc46e(arg0, arg1) {
356
+ throw new Error(getStringFromWasm0(arg0, arg1));
357
+ };
358
+
359
+ export function __wbg_error_7534b8e9a36f1ab4(arg0, arg1) {
360
+ let deferred0_0;
361
+ let deferred0_1;
362
+ try {
363
+ deferred0_0 = arg0;
364
+ deferred0_1 = arg1;
365
+ console.error(getStringFromWasm0(arg0, arg1));
366
+ } finally {
367
+ wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
368
+ }
369
+ };
370
+
371
+ export function __wbg_length_22ac23eaec9d8053(arg0) {
372
+ const ret = arg0.length;
373
+ return ret;
374
+ };
375
+
376
+ export function __wbg_new_8a6f238a6ece86ea() {
377
+ const ret = new Error();
378
+ return ret;
379
+ };
380
+
381
+ export function __wbg_new_df1173567d5ff028(arg0, arg1) {
382
+ const ret = new Error(getStringFromWasm0(arg0, arg1));
383
+ return ret;
384
+ };
385
+
386
+ export function __wbg_prototypesetcall_dfe9b766cdc1f1fd(arg0, arg1, arg2) {
387
+ Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);
388
+ };
389
+
390
+ export function __wbg_stack_0ed75d68575b0f3c(arg0, arg1) {
391
+ const ret = arg1.stack;
392
+ const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
393
+ const len1 = WASM_VECTOR_LEN;
394
+ getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
395
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
396
+ };
397
+
398
+ export function __wbindgen_cast_2241b6af4c4b2941(arg0, arg1) {
399
+ // Cast intrinsic for `Ref(String) -> Externref`.
400
+ const ret = getStringFromWasm0(arg0, arg1);
401
+ return ret;
402
+ };
403
+
404
+ export function __wbindgen_init_externref_table() {
405
+ const table = wasm.__wbindgen_externrefs;
406
+ const offset = table.grow(4);
407
+ table.set(0, undefined);
408
+ table.set(offset + 0, undefined);
409
+ table.set(offset + 1, null);
410
+ table.set(offset + 2, true);
411
+ table.set(offset + 3, false);
412
+ };