@fuel-ts/account 0.96.1 → 0.97.0

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 (40) hide show
  1. package/dist/account.d.ts +6 -0
  2. package/dist/account.d.ts.map +1 -1
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.global.js +563 -298
  6. package/dist/index.global.js.map +1 -1
  7. package/dist/index.js +594 -320
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +600 -327
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/predicate/predicate.d.ts +16 -11
  12. package/dist/predicate/predicate.d.ts.map +1 -1
  13. package/dist/providers/__generated__/operations.d.ts +94 -126
  14. package/dist/providers/__generated__/operations.d.ts.map +1 -1
  15. package/dist/providers/provider.d.ts +5 -8
  16. package/dist/providers/provider.d.ts.map +1 -1
  17. package/dist/providers/transaction-request/blob-transaction-request.d.ts +2 -2
  18. package/dist/providers/transaction-request/blob-transaction-request.d.ts.map +1 -1
  19. package/dist/providers/transaction-summary/get-transaction-summary.d.ts +3 -2
  20. package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
  21. package/dist/providers/transaction-summary/types.d.ts +38 -8
  22. package/dist/providers/transaction-summary/types.d.ts.map +1 -1
  23. package/dist/providers/utils/handle-gql-error-message.d.ts +2 -1
  24. package/dist/providers/utils/handle-gql-error-message.d.ts.map +1 -1
  25. package/dist/providers/utils/receipts.d.ts.map +1 -1
  26. package/dist/providers/utils/validate-pagination-args.d.ts +9 -0
  27. package/dist/providers/utils/validate-pagination-args.d.ts.map +1 -0
  28. package/dist/test-utils.global.js +302 -237
  29. package/dist/test-utils.global.js.map +1 -1
  30. package/dist/test-utils.js +276 -211
  31. package/dist/test-utils.js.map +1 -1
  32. package/dist/test-utils.mjs +287 -222
  33. package/dist/test-utils.mjs.map +1 -1
  34. package/dist/utils/deployScriptOrPredicate.d.ts +14 -0
  35. package/dist/utils/deployScriptOrPredicate.d.ts.map +1 -0
  36. package/dist/utils/formatTransferToContractScriptData.d.ts +7 -7
  37. package/dist/utils/formatTransferToContractScriptData.d.ts.map +1 -1
  38. package/dist/utils/predicate-script-loader-instructions.d.ts +9 -0
  39. package/dist/utils/predicate-script-loader-instructions.d.ts.map +1 -0
  40. package/package.json +17 -17
@@ -989,7 +989,7 @@
989
989
  }
990
990
  return this._strip();
991
991
  };
992
- BN2.prototype.sub = function sub(num) {
992
+ BN2.prototype.sub = function sub2(num) {
993
993
  return this.clone().isub(num);
994
994
  };
995
995
  function smallMulTo(self, num, out) {
@@ -2803,7 +2803,7 @@
2803
2803
  }
2804
2804
  return res;
2805
2805
  };
2806
- Red.prototype.sub = function sub(a, b) {
2806
+ Red.prototype.sub = function sub2(a, b) {
2807
2807
  this._verify2(a, b);
2808
2808
  var res = a.sub(b);
2809
2809
  if (res.cmpn(0) < 0) {
@@ -20390,9 +20390,9 @@ spurious results.`);
20390
20390
  }
20391
20391
  });
20392
20392
 
20393
- // ../../node_modules/.pnpm/@fuels+vm-asm@0.58.0/node_modules/@fuels/vm-asm/dist/node/index.cjs
20393
+ // ../../node_modules/.pnpm/@fuels+vm-asm@0.58.2/node_modules/@fuels/vm-asm/dist/node/index.cjs
20394
20394
  var require_node = __commonJS({
20395
- "../../node_modules/.pnpm/@fuels+vm-asm@0.58.0/node_modules/@fuels/vm-asm/dist/node/index.cjs"(exports) {
20395
+ "../../node_modules/.pnpm/@fuels+vm-asm@0.58.2/node_modules/@fuels/vm-asm/dist/node/index.cjs"(exports) {
20396
20396
  "use strict";
20397
20397
  var wasm$1;
20398
20398
  var cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => {
@@ -20514,7 +20514,7 @@ spurious results.`);
20514
20514
  const ret3 = wasm$1.mod_(dst, lhs, rhs);
20515
20515
  return Instruction.__wrap(ret3);
20516
20516
  }
20517
- function move_(dst, src) {
20517
+ function move_2(dst, src) {
20518
20518
  const ret3 = wasm$1.move_(dst, src);
20519
20519
  return Instruction.__wrap(ret3);
20520
20520
  }
@@ -20538,7 +20538,7 @@ spurious results.`);
20538
20538
  const ret3 = wasm$1.srl(dst, lhs, rhs);
20539
20539
  return Instruction.__wrap(ret3);
20540
20540
  }
20541
- function sub(dst, lhs, rhs) {
20541
+ function sub2(dst, lhs, rhs) {
20542
20542
  const ret3 = wasm$1.sub(dst, lhs, rhs);
20543
20543
  return Instruction.__wrap(ret3);
20544
20544
  }
@@ -20606,7 +20606,7 @@ spurious results.`);
20606
20606
  const ret3 = wasm$1.cb(dst);
20607
20607
  return Instruction.__wrap(ret3);
20608
20608
  }
20609
- function ldc(src_addr, offset, len, mode) {
20609
+ function ldc2(src_addr, offset, len, mode) {
20610
20610
  const ret3 = wasm$1.ldc(src_addr, offset, len, mode);
20611
20611
  return Instruction.__wrap(ret3);
20612
20612
  }
@@ -20690,7 +20690,7 @@ spurious results.`);
20690
20690
  const ret3 = wasm$1.bal(dst, asset_id_addr, contract_id_addr);
20691
20691
  return Instruction.__wrap(ret3);
20692
20692
  }
20693
- function jmp(abs_target) {
20693
+ function jmp2(abs_target) {
20694
20694
  const ret3 = wasm$1.jmp(abs_target);
20695
20695
  return Instruction.__wrap(ret3);
20696
20696
  }
@@ -20702,7 +20702,7 @@ spurious results.`);
20702
20702
  const ret3 = wasm$1.smo(recipient_addr, data_addr, data_len, coins);
20703
20703
  return Instruction.__wrap(ret3);
20704
20704
  }
20705
- function addi2(dst, lhs, rhs) {
20705
+ function addi3(dst, lhs, rhs) {
20706
20706
  const ret3 = wasm$1.addi(dst, lhs, rhs);
20707
20707
  return Instruction.__wrap(ret3);
20708
20708
  }
@@ -20710,7 +20710,7 @@ spurious results.`);
20710
20710
  const ret3 = wasm$1.andi(dst, lhs, rhs);
20711
20711
  return Instruction.__wrap(ret3);
20712
20712
  }
20713
- function divi(dst, lhs, rhs) {
20713
+ function divi2(dst, lhs, rhs) {
20714
20714
  const ret3 = wasm$1.divi(dst, lhs, rhs);
20715
20715
  return Instruction.__wrap(ret3);
20716
20716
  }
@@ -20754,7 +20754,7 @@ spurious results.`);
20754
20754
  const ret3 = wasm$1.lb(dst, addr, offset);
20755
20755
  return Instruction.__wrap(ret3);
20756
20756
  }
20757
- function lw2(dst, addr, offset) {
20757
+ function lw3(dst, addr, offset) {
20758
20758
  const ret3 = wasm$1.lw(dst, addr, offset);
20759
20759
  return Instruction.__wrap(ret3);
20760
20760
  }
@@ -20910,7 +20910,7 @@ spurious results.`);
20910
20910
  const ret3 = wasm$1.ecal(a, b, c, d);
20911
20911
  return Instruction.__wrap(ret3);
20912
20912
  }
20913
- function bsiz(dst, blob_id_ptr) {
20913
+ function bsiz2(dst, blob_id_ptr) {
20914
20914
  const ret3 = wasm$1.bsiz(dst, blob_id_ptr);
20915
20915
  return Instruction.__wrap(ret3);
20916
20916
  }
@@ -20929,75 +20929,6 @@ spurious results.`);
20929
20929
  ptr = ptr >>> 0;
20930
20930
  return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
20931
20931
  }
20932
- var CompareMode = Object.freeze({
20933
- /**
20934
- * Equality (`==`)
20935
- */
20936
- EQ: 0,
20937
- "0": "EQ",
20938
- /**
20939
- * Inequality (`!=`)
20940
- */
20941
- NE: 1,
20942
- "1": "NE",
20943
- /**
20944
- * Less than (`<`)
20945
- */
20946
- LT: 2,
20947
- "2": "LT",
20948
- /**
20949
- * Greater than (`>`)
20950
- */
20951
- GT: 3,
20952
- "3": "GT",
20953
- /**
20954
- * Less than or equals (`>=`)
20955
- */
20956
- LTE: 4,
20957
- "4": "LTE",
20958
- /**
20959
- * Greater than or equals (`>=`)
20960
- */
20961
- GTE: 5,
20962
- "5": "GTE",
20963
- /**
20964
- * Number of leading zeroes in lhs (`lzcnt`) (discards rhs)
20965
- */
20966
- LZC: 6,
20967
- "6": "LZC"
20968
- });
20969
- var GMArgs = Object.freeze({
20970
- /**
20971
- *r" Get if caller is external.
20972
- */
20973
- IsCallerExternal: 1,
20974
- "1": "IsCallerExternal",
20975
- /**
20976
- *r" Get caller's contract ID.
20977
- */
20978
- GetCaller: 2,
20979
- "2": "GetCaller",
20980
- /**
20981
- *r" Get index of current predicate.
20982
- */
20983
- GetVerifyingPredicate: 3,
20984
- "3": "GetVerifyingPredicate",
20985
- /**
20986
- *r" Get the Chain ID this VM is operating within
20987
- */
20988
- GetChainId: 4,
20989
- "4": "GetChainId",
20990
- /**
20991
- *r" Get memory address where the transaction is located
20992
- */
20993
- TxStart: 5,
20994
- "5": "TxStart",
20995
- /**
20996
- *r" Get memory address of base asset ID
20997
- */
20998
- BaseAssetId: 6,
20999
- "6": "BaseAssetId"
21000
- });
21001
20932
  var GTFArgs2 = Object.freeze({
21002
20933
  /**
21003
20934
  *r" Set `$rA` to `tx.type`
@@ -21325,47 +21256,42 @@ spurious results.`);
21325
21256
  PolicyMaxFee: 1284,
21326
21257
  "1284": "PolicyMaxFee"
21327
21258
  });
21328
- var MathOp = Object.freeze({
21329
- /**
21330
- * Add
21331
- */
21332
- ADD: 0,
21333
- "0": "ADD",
21259
+ var CompareMode = Object.freeze({
21334
21260
  /**
21335
- * Subtract
21261
+ * Equality (`==`)
21336
21262
  */
21337
- SUB: 1,
21338
- "1": "SUB",
21263
+ EQ: 0,
21264
+ "0": "EQ",
21339
21265
  /**
21340
- * Invert bits (discards rhs)
21266
+ * Inequality (`!=`)
21341
21267
  */
21342
- NOT: 2,
21343
- "2": "NOT",
21268
+ NE: 1,
21269
+ "1": "NE",
21344
21270
  /**
21345
- * Bitwise or
21271
+ * Less than (`<`)
21346
21272
  */
21347
- OR: 3,
21348
- "3": "OR",
21273
+ LT: 2,
21274
+ "2": "LT",
21349
21275
  /**
21350
- * Bitwise exclusive or
21276
+ * Greater than (`>`)
21351
21277
  */
21352
- XOR: 4,
21353
- "4": "XOR",
21278
+ GT: 3,
21279
+ "3": "GT",
21354
21280
  /**
21355
- * Bitwise and
21281
+ * Less than or equals (`>=`)
21356
21282
  */
21357
- AND: 5,
21358
- "5": "AND",
21283
+ LTE: 4,
21284
+ "4": "LTE",
21359
21285
  /**
21360
- * Shift left
21286
+ * Greater than or equals (`>=`)
21361
21287
  */
21362
- SHL: 6,
21363
- "6": "SHL",
21288
+ GTE: 5,
21289
+ "5": "GTE",
21364
21290
  /**
21365
- * Shift right
21291
+ * Number of leading zeroes in lhs (`lzcnt`) (discards rhs)
21366
21292
  */
21367
- SHR: 7,
21368
- "7": "SHR"
21293
+ LZC: 6,
21294
+ "6": "LZC"
21369
21295
  });
21370
21296
  var PanicReason = Object.freeze({
21371
21297
  /**
@@ -21661,6 +21587,80 @@ spurious results.`);
21661
21587
  GasCostNotDefined: 56,
21662
21588
  "56": "GasCostNotDefined"
21663
21589
  });
21590
+ var MathOp = Object.freeze({
21591
+ /**
21592
+ * Add
21593
+ */
21594
+ ADD: 0,
21595
+ "0": "ADD",
21596
+ /**
21597
+ * Subtract
21598
+ */
21599
+ SUB: 1,
21600
+ "1": "SUB",
21601
+ /**
21602
+ * Invert bits (discards rhs)
21603
+ */
21604
+ NOT: 2,
21605
+ "2": "NOT",
21606
+ /**
21607
+ * Bitwise or
21608
+ */
21609
+ OR: 3,
21610
+ "3": "OR",
21611
+ /**
21612
+ * Bitwise exclusive or
21613
+ */
21614
+ XOR: 4,
21615
+ "4": "XOR",
21616
+ /**
21617
+ * Bitwise and
21618
+ */
21619
+ AND: 5,
21620
+ "5": "AND",
21621
+ /**
21622
+ * Shift left
21623
+ */
21624
+ SHL: 6,
21625
+ "6": "SHL",
21626
+ /**
21627
+ * Shift right
21628
+ */
21629
+ SHR: 7,
21630
+ "7": "SHR"
21631
+ });
21632
+ var GMArgs = Object.freeze({
21633
+ /**
21634
+ *r" Get if caller is external.
21635
+ */
21636
+ IsCallerExternal: 1,
21637
+ "1": "IsCallerExternal",
21638
+ /**
21639
+ *r" Get caller's contract ID.
21640
+ */
21641
+ GetCaller: 2,
21642
+ "2": "GetCaller",
21643
+ /**
21644
+ *r" Get index of current predicate.
21645
+ */
21646
+ GetVerifyingPredicate: 3,
21647
+ "3": "GetVerifyingPredicate",
21648
+ /**
21649
+ *r" Get the Chain ID this VM is operating within
21650
+ */
21651
+ GetChainId: 4,
21652
+ "4": "GetChainId",
21653
+ /**
21654
+ *r" Get memory address where the transaction is located
21655
+ */
21656
+ TxStart: 5,
21657
+ "5": "TxStart",
21658
+ /**
21659
+ *r" Get memory address of base asset ID
21660
+ */
21661
+ BaseAssetId: 6,
21662
+ "6": "BaseAssetId"
21663
+ });
21664
21664
  var ADDFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
21665
21665
  }, unregister: () => {
21666
21666
  } } : new FinalizationRegistry((ptr) => wasm$1.__wbg_add_free(ptr >>> 0, 1));
@@ -28658,7 +28658,7 @@ spurious results.`);
28658
28658
  }
28659
28659
  }
28660
28660
  function wasm(imports) {
28661
- return _loadWasmModule(1, null, "AGFzbQEAAAABOgpgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38AYAJ/fwF/YAABf2AFf39/f38Bf2ABfwBgA39/fwBgAAACGAEDd2JnEF9fd2JpbmRnZW5fdGhyb3cAAwP/Af0BAQEDAwMDAwMBAQMDAQEBAwMBAQEEAQMDAwEBAwEBAQQCAQMCAgICAgIDAwMEBAQEBAQEBAEBAQMDAAICBAQEBAQEBAQEBAABAQgDAwQBAQEBAQEBAgcDAQAAAQEDBwcBAwEDAgIBAQEAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQUBAQEBBAAEAQYCAgMDAAIABwEIBAEEAQkDAQEHAQUFBQUFBQUFBQUFBQUFBQUFBQUDBgYCAgQCBgYAAAgABAUDAQARBgkBfwFBgIDAAAsHjUzPBQZtZW1vcnkCABZfX3diZ19jb21wYXJlYXJnc19mcmVlABAaX193YmdfZ2V0X2NvbXBhcmVhcmdzX21vZGUASBpfX3diZ19zZXRfY29tcGFyZWFyZ3NfbW9kZQA4Il9fd2JnX2dldF9jb21wYXJlYXJnc19pbmRpcmVjdF9yaHMASSJfX3diZ19zZXRfY29tcGFyZWFyZ3NfaW5kaXJlY3RfcmhzAEsSY29tcGFyZWFyZ3NfdG9faW1tAFgUY29tcGFyZWFyZ3NfZnJvbV9pbW0AHxVfX3diZ19nZXRfbWF0aGFyZ3Nfb3AASBVfX3diZ19zZXRfbWF0aGFyZ3Nfb3AAORJfX3diZ19tdWxhcmdzX2ZyZWUAER5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMASB5fX3diZ19zZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMATBJfX3diZ19kaXZhcmdzX2ZyZWUAIx5fX3diZ19nZXRfZGl2YXJnc19pbmRpcmVjdF9yaHMAuQEeX193Ymdfc2V0X2RpdmFyZ3NfaW5kaXJlY3RfcmhzAGMbX193YmdfcGFuaWNpbnN0cnVjdGlvbl9mcmVlABchcGFuaWNpbnN0cnVjdGlvbl9lcnJvcl90eXBlc2NyaXB0AE0XcGFuaWNpbnN0cnVjdGlvbl9yZWFzb24AWxxwYW5pY2luc3RydWN0aW9uX2luc3RydWN0aW9uAFwMZ21fZnJvbV9hcmdzANUBDWd0Zl9mcm9tX2FyZ3MAzQEHZ21fYXJncwCIAQhndGZfYXJncwBpDndkY21fZnJvbV9hcmdzADsOd2RvcF9mcm9tX2FyZ3MAOw53ZG1sX2Zyb21fYXJncwA8DndkZHZfZnJvbV9hcmdzAMkBCXdkY21fYXJncwAkCXdxY21fYXJncwAlCXdkb3BfYXJncwAmCXdxb3BfYXJncwAnCXdkbWxfYXJncwAoCXdxbWxfYXJncwApCXdkZHZfYXJncwBkCXdxZHZfYXJncwBlEF9fd2JnX2ltbTA2X2ZyZWUAKhBfX3diZ19pbW0xMl9mcmVlACsQX193YmdfaW1tMThfZnJlZQAsDl9fd2JnX2FkZF9mcmVlABgPX193Ymdfbm9vcF9mcmVlAAcSYWRkX25ld190eXBlc2NyaXB0AFkGYWRkX3JhADUGYWRkX3JiABIGYWRkX3JjABoDYWRkAMUBA2FuZACKAQNkaXYAiwECZXEAjAEDZXhwAI0BAmd0AI4BAmx0AI8BBG1sb2cAkAEEbXJvbwCRAQRtb2RfAJIBBW1vdmVfAD0DbXVsAJMBA25vdAA+Am9yAJQBA3NsbACVAQNzcmwAlgEDc3ViAJcBA3hvcgCYAQRtbGR2AGoDcmV0ALoBBHJldGQAPxNhbG9jX25ld190eXBlc2NyaXB0AGAHYWxvY19yYQAiBGFsb2MAuwEDbWNsAEADbWNwAJkBA21lcQBrE2Joc2hfbmV3X3R5cGVzY3JpcHQAIARiaHNoAC0EYmhlaQC8AQRidXJuAEEEY2FsbABsA2NjcABtBGNyb28AQgRjc2l6AEMCY2IAvQEDbGRjAG4DbG9nAG8EbG9nZABwBG1pbnQARARydnJ0AL4BBHNjd3EAmgEDc3J3AJsBBHNyd3EAcQNzd3cAnAEEc3d3cQByAnRyAJ0BA3RybwBzBGVjazEAngEEZWNyMQCfAQRlZDE5AHQEazI1NgCgAQRzMjU2AKEBBHRpbWUARRNub29wX25ld190eXBlc2NyaXB0AL8BBG5vb3AA3QEEZmxhZwDAAQNiYWwAogEDam1wAMEBA2puZQCjAQNzbW8AdRNhZGRpX25ld190eXBlc2NyaXB0AFoKYWRkaV9pbW0xMgAJBGFkZGkApAEEYW5kaQClAQRkaXZpAKYBBGV4cGkApwEEbW9kaQCoAQRtdWxpAKkBA29yaQCqAQRzbGxpAKsBBHNybGkArAEEc3ViaQCtAQR4b3JpAK4BBGpuZWkArwECbGIAsAECbHcAsQECc2IAsgECc3cAswEEbWNwaQC0ARJndGZfbmV3X3R5cGVzY3JpcHQAzwEDZ3RmALUBBG1jbGkALhFnbV9uZXdfdHlwZXNjcmlwdABGCGdtX2ltbTE4AA0CZ20ALwRtb3ZpADAEam56aQAxBGptcGYAMhNqbXBiX25ld190eXBlc2NyaXB0ABUEam1wYgAzBGpuemYAtgEEam56YgC3AQRqbmVmAHYKam5lYl9pbW0wNgA2BGpuZWIAdwJqaQBOE2NmZWlfbmV3X3R5cGVzY3JpcHQANwpjZmVpX2ltbTI0AAoEY2ZlaQBPBGNmc2kAUANjZmUAwgEDY2ZzAMMBBHBzaGwAUQRwc2hoAFIEcG9wbABTBHBvcGgAVBN3ZGNtX25ld190eXBlc2NyaXB0AMoBBHdkY20AeAR3cWNtAHkEd2RvcAB6BHdxb3AAewR3ZG1sAHwEd3FtbAB9BHdkZHYAfgR3cWR2AH8Ed2RtZACAAQR3cW1kAIEBBHdkYW0AggEEd3FhbQCDAQR3ZG1tAIQBBHdxbW0AhQEEZWNhbACGAQRic2l6ADQTYmxkZF9uZXdfdHlwZXNjcmlwdABVB2JsZGRfcmQANgRibGRkAIcBFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUADBRpbnN0cnVjdGlvbl90b19ieXRlcwAGEGluc3RydWN0aW9uX3NpemUA7wERcmVnaWRfbmV3X2NoZWNrZWQAuAEJcmVnaWRfYmFsAN4BCnJlZ2lkX2NnYXMA3wEJcmVnaWRfZXJyAOABCnJlZ2lkX2ZsYWcA4QEIcmVnaWRfZnAA4gEKcmVnaWRfZ2dhcwDjAQhyZWdpZF9ocADkAQhyZWdpZF9pcwDlAQhyZWdpZF9vZgDmAQlyZWdpZF9vbmUA5wEIcmVnaWRfcGMA6AEJcmVnaWRfcmV0AOkBCnJlZ2lkX3JldGwA6gEIcmVnaWRfc3AA6wEJcmVnaWRfc3BwAOwBDnJlZ2lkX3dyaXRhYmxlAO0BCnJlZ2lkX3plcm8A7gEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA2QELcmVnaWRfdG9fdTgA2gESYW5kX25ld190eXBlc2NyaXB0AFkSZGl2X25ld190eXBlc2NyaXB0AFkRZXFfbmV3X3R5cGVzY3JpcHQAWRJleHBfbmV3X3R5cGVzY3JpcHQAWRFndF9uZXdfdHlwZXNjcmlwdABZEWx0X25ld190eXBlc2NyaXB0AFkTbWxvZ19uZXdfdHlwZXNjcmlwdABZE21yb29fbmV3X3R5cGVzY3JpcHQAWRJtb2RfbmV3X3R5cGVzY3JpcHQAWRJtdWxfbmV3X3R5cGVzY3JpcHQAWRFvcl9uZXdfdHlwZXNjcmlwdABZEnNsbF9uZXdfdHlwZXNjcmlwdABZEnNybF9uZXdfdHlwZXNjcmlwdABZEnN1Yl9uZXdfdHlwZXNjcmlwdABZEnhvcl9uZXdfdHlwZXNjcmlwdABZEm1jcF9uZXdfdHlwZXNjcmlwdABZE3Njd3FfbmV3X3R5cGVzY3JpcHQAWRJzcndfbmV3X3R5cGVzY3JpcHQAWRJzd3dfbmV3X3R5cGVzY3JpcHQAWRF0cl9uZXdfdHlwZXNjcmlwdABZE2VjazFfbmV3X3R5cGVzY3JpcHQAWRNlY3IxX25ld190eXBlc2NyaXB0AFkTazI1Nl9uZXdfdHlwZXNjcmlwdABZE3MyNTZfbmV3X3R5cGVzY3JpcHQAWRJiYWxfbmV3X3R5cGVzY3JpcHQAWRJqbmVfbmV3X3R5cGVzY3JpcHQAWRNhbmRpX25ld190eXBlc2NyaXB0AFoTZGl2aV9uZXdfdHlwZXNjcmlwdABaE2V4cGlfbmV3X3R5cGVzY3JpcHQAWhNtb2RpX25ld190eXBlc2NyaXB0AFoTbXVsaV9uZXdfdHlwZXNjcmlwdABaEm9yaV9uZXdfdHlwZXNjcmlwdABaE3NsbGlfbmV3X3R5cGVzY3JpcHQAWhNzcmxpX25ld190eXBlc2NyaXB0AFoTc3ViaV9uZXdfdHlwZXNjcmlwdABaE3hvcmlfbmV3X3R5cGVzY3JpcHQAWhNqbmVpX25ld190eXBlc2NyaXB0AFoRbGJfbmV3X3R5cGVzY3JpcHQAWhFsd19uZXdfdHlwZXNjcmlwdABaEXNiX25ld190eXBlc2NyaXB0AFoRc3dfbmV3X3R5cGVzY3JpcHQAWhNtY3BpX25ld190eXBlc2NyaXB0AFoTam56Zl9uZXdfdHlwZXNjcmlwdABaE2puemJfbmV3X3R5cGVzY3JpcHQAWhFqaV9uZXdfdHlwZXNjcmlwdAA3E2Nmc2lfbmV3X3R5cGVzY3JpcHQANxNwc2hsX25ld190eXBlc2NyaXB0ADcTcHNoaF9uZXdfdHlwZXNjcmlwdAA3E3BvcGxfbmV3X3R5cGVzY3JpcHQANxNwb3BoX25ld190eXBlc2NyaXB0ADcTbW92aV9uZXdfdHlwZXNjcmlwdAAVE21jbGlfbmV3X3R5cGVzY3JpcHQAFRNqbnppX25ld190eXBlc2NyaXB0ABUTam1wZl9uZXdfdHlwZXNjcmlwdAAVEm5vdF9uZXdfdHlwZXNjcmlwdAAgE3JldGRfbmV3X3R5cGVzY3JpcHQAIBNtb3ZlX25ld190eXBlc2NyaXB0ACASbWNsX25ld190eXBlc2NyaXB0ACATYnVybl9uZXdfdHlwZXNjcmlwdAAgE2Nyb29fbmV3X3R5cGVzY3JpcHQAIBNjc2l6X25ld190eXBlc2NyaXB0ACATbWludF9uZXdfdHlwZXNjcmlwdAAgE3RpbWVfbmV3X3R5cGVzY3JpcHQAIBNic2l6X25ld190eXBlc2NyaXB0ACAGcmV0X3JhACIHYmhlaV9yYQAiBWNiX3JhACIHcnZydF9yYQAiB2ZsYWdfcmEAIgZqbXBfcmEAIghqaV9pbW0yNAAKCmNmc2lfaW1tMjQACgZjZmVfcmEAIgZjZnNfcmEAIgpwc2hsX2ltbTI0AAoKcHNoaF9pbW0yNAAKCnBvcGxfaW1tMjQACgpwb3BoX2ltbTI0AAoTbWxkdl9uZXdfdHlwZXNjcmlwdABVEm1lcV9uZXdfdHlwZXNjcmlwdABVEmNjcF9uZXdfdHlwZXNjcmlwdABVEmxvZ19uZXdfdHlwZXNjcmlwdABVE2xvZ2RfbmV3X3R5cGVzY3JpcHQAVRNzcndxX25ld190eXBlc2NyaXB0AFUTc3d3cV9uZXdfdHlwZXNjcmlwdABVEnRyb19uZXdfdHlwZXNjcmlwdABVE2VkMTlfbmV3X3R5cGVzY3JpcHQAVRJzbW9fbmV3X3R5cGVzY3JpcHQAVRJsZGNfbmV3X3R5cGVzY3JpcHQAVRNqbmVmX25ld190eXBlc2NyaXB0AFUTd2RtZF9uZXdfdHlwZXNjcmlwdABVE3dxbWRfbmV3X3R5cGVzY3JpcHQAVRN3ZGFtX25ld190eXBlc2NyaXB0AFUTd3FhbV9uZXdfdHlwZXNjcmlwdABVE3dkbW1fbmV3X3R5cGVzY3JpcHQAVRN3cW1tX25ld190eXBlc2NyaXB0AFUTZWNhbF9uZXdfdHlwZXNjcmlwdABVE2NhbGxfbmV3X3R5cGVzY3JpcHQAVRNfX3diZ19tYXRoYXJnc19mcmVlABAfX193Ymdfc2V0X21hdGhhcmdzX2luZGlyZWN0X3JocwBLHl9fd2JnX3NldF9tdWxhcmdzX2luZGlyZWN0X2xocwBLH19fd2JnX2dldF9tYXRoYXJnc19pbmRpcmVjdF9yaHMASR5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9saHMASRJyZXRfbmV3X3R5cGVzY3JpcHQAYBNiaGVpX25ld190eXBlc2NyaXB0AGARY2JfbmV3X3R5cGVzY3JpcHQAYBNydnJ0X25ld190eXBlc2NyaXB0AGATZmxhZ19uZXdfdHlwZXNjcmlwdABgEmptcF9uZXdfdHlwZXNjcmlwdABgEmNmZV9uZXdfdHlwZXNjcmlwdABgEmNmc19uZXdfdHlwZXNjcmlwdABgD19fd2JnX3RpbWVfZnJlZQAYDl9fd2JnX21jbF9mcmVlABgPX193YmdfcG9wbF9mcmVlABgNX193YmdfbHRfZnJlZQAYD19fd2JnX2puemJfZnJlZQAYDl9fd2JnX3Nyd19mcmVlABgPX193Ymdfd3FtbF9mcmVlABgPX193YmdfazI1Nl9mcmVlABgNX193YmdfbGJfZnJlZQAYD19fd2JnX2puZWJfZnJlZQAYD19fd2JnX3JldGRfZnJlZQAYD19fd2JnX2V4cGlfZnJlZQAYD19fd2JnX3N3d3FfZnJlZQAYD19fd2JnX2Nyb29fZnJlZQAYDl9fd2JnX3Ntb19mcmVlABgOX193YmdfbGRjX2ZyZWUAGA9fX3diZ19tbG9nX2ZyZWUAGA9fX3diZ19ic2l6X2ZyZWUAGA1fX3diZ19lcV9mcmVlABgPX193YmdfbWNsaV9mcmVlABgPX193YmdfeG9yaV9mcmVlABgPX193YmdfYW5kaV9mcmVlABgPX193Ymdfd3FvcF9mcmVlABgPX193Ymdfd2RjbV9mcmVlABgPX193YmdfcHNoaF9mcmVlABgPX193Ymdfc3ViaV9mcmVlABgNX193Ymdfb3JfZnJlZQAYD19fd2JnX2puemlfZnJlZQAYD19fd2JnX3dkbWRfZnJlZQAYDV9fd2JnX2dtX2ZyZWUAGA5fX3diZ19zcmxfZnJlZQAYD19fd2JnX3NybGlfZnJlZQAYD19fd2JnX2ZsYWdfZnJlZQAYD19fd2JnX3dkYW1fZnJlZQAYD19fd2JnX21vZGlfZnJlZQAYD19fd2JnX3dxYW1fZnJlZQAYD19fd2JnX2VjazFfZnJlZQAYDl9fd2JnX2Nmc19mcmVlABgPX193Ymdfam5laV9mcmVlABgPX193YmdfczI1Nl9mcmVlABgPX193YmdfYmxkZF9mcmVlABgOX193YmdfbW9kX2ZyZWUAGA9fX3diZ19zY3dxX2ZyZWUAGA5fX3diZ19hbmRfZnJlZQAYDl9fd2JnX3Ryb19mcmVlABgPX193Ymdfc3J3cV9mcmVlABgPX193YmdfcG9waF9mcmVlABgOX193Ymdfc3d3X2ZyZWUAGA9fX3diZ193ZGR2X2ZyZWUAGA5fX3diZ19tY3BfZnJlZQAYDV9fd2JnX3NiX2ZyZWUAGA9fX3diZ19lY2FsX2ZyZWUAGA5fX3diZ19qbmVfZnJlZQAYD19fd2JnX2Fsb2NfZnJlZQAYD19fd2JnX2puemZfZnJlZQAYD19fd2JnX2NhbGxfZnJlZQAYD19fd2JnX3J2cnRfZnJlZQAYD19fd2JnX3dxbW1fZnJlZQAYD19fd2JnX21vdmlfZnJlZQAYD19fd2JnX3dkbWxfZnJlZQAYD19fd2JnX2JoZWlfZnJlZQAYDl9fd2JnX2NmZV9mcmVlABgPX193Ymdfc2xsaV9mcmVlABgPX193YmdfbWludF9mcmVlABgPX193YmdfcHNobF9mcmVlABgOX193YmdfZGl2X2ZyZWUAGA9fX3diZ19tY3BpX2ZyZWUAGA9fX3diZ193cWR2X2ZyZWUAGA9fX3diZ19kaXZpX2ZyZWUAGA5fX3diZ19iYWxfZnJlZQAYDl9fd2JnX2V4cF9mcmVlABgOX193Ymdfc3ViX2ZyZWUAGA9fX3diZ19qbmVmX2ZyZWUAGA9fX3diZ19tb3ZlX2ZyZWUAGA9fX3diZ19jZnNpX2ZyZWUAGA5fX3diZ19jY3BfZnJlZQAYD19fd2JnX2VkMTlfZnJlZQAYDl9fd2JnX2ptcF9mcmVlABgPX193YmdfYWRkaV9mcmVlABgOX193YmdfcmV0X2ZyZWUAGA5fX3diZ19zbGxfZnJlZQAYDl9fd2JnX29yaV9mcmVlABgPX193Ymdfd2RvcF9mcmVlABgPX193YmdfbG9nZF9mcmVlABgPX193Ymdfd3FjbV9mcmVlABgNX193YmdfY2JfZnJlZQAYD19fd2JnX2J1cm5fZnJlZQAYD19fd2JnX3dkbW1fZnJlZQAYDl9fd2JnX2d0Zl9mcmVlABgNX193Ymdfc3dfZnJlZQAYDV9fd2JnX2ppX2ZyZWUAGA9fX3diZ19jc2l6X2ZyZWUAGA1fX3diZ19ndF9mcmVlABgOX193YmdfbXVsX2ZyZWUAGA9fX3diZ19tdWxpX2ZyZWUAGA9fX3diZ19jZmVpX2ZyZWUAGA9fX3diZ19lY3IxX2ZyZWUAGA5fX3diZ19tZXFfZnJlZQAYD19fd2JnX3dxbWRfZnJlZQAYD19fd2JnX21yb29fZnJlZQAYD19fd2JnX21sZHZfZnJlZQAYD19fd2JnX2ptcGJfZnJlZQAYD19fd2JnX2Joc2hfZnJlZQAYDV9fd2JnX3RyX2ZyZWUAGA5fX3diZ194b3JfZnJlZQAYDV9fd2JnX2x3X2ZyZWUAGA5fX3diZ19sb2dfZnJlZQAYD19fd2JnX2ptcGZfZnJlZQAYDl9fd2JnX25vdF9mcmVlABgTd3Fkdl9uZXdfdHlwZXNjcmlwdADKARN3cW1sX25ld190eXBlc2NyaXB0AMoBE3dkbWxfbmV3X3R5cGVzY3JpcHQAygETd3FvcF9uZXdfdHlwZXNjcmlwdADKARN3ZG9wX25ld190eXBlc2NyaXB0AMoBE3dxY21fbmV3X3R5cGVzY3JpcHQAygETd2Rkdl9uZXdfdHlwZXNjcmlwdADKAQ53cWNtX2Zyb21fYXJncwA7CndxZHZfaW1tMDYANgp3cW1sX2ltbTA2ADYKd2RtbF9pbW0wNgA2Cndxb3BfaW1tMDYANgp3ZG9wX2ltbTA2ADYKd3FjbV9pbW0wNgA2CndkZHZfaW1tMDYANgp3ZGNtX2ltbTA2ADYKam5lZl9pbW0wNgA2CWxkY19pbW0wNgA2DndxbWxfZnJvbV9hcmdzADwOd3FvcF9mcm9tX2FyZ3MAOwVnbV9yYQA1BWd0X3JjABoFZ3RfcmIAEgVndF9yYQA1BWxiX3JiABIFbGJfcmEANQVsdF9yYwAaBWx0X3JiABIFbHRfcmEANQhsd19pbW0xMgAJBWx3X3JiABIFbHdfcmEANQVvcl9yYwAaBW9yX3JiABIFb3JfcmEANQhzYl9pbW0xMgAJBXNiX3JiABIFc2JfcmEANQhzd19pbW0xMgAJBXN3X3JiABIFc3dfcmEANQV0cl9yYwAaBXRyX3JiABIFdHJfcmEANQVlcV9yYwAaBWVxX3JiABIFZXFfcmEANQZhbmRfcmMAGgZhbmRfcmIAEgZhbmRfcmEANQZiYWxfcmMAGgZiYWxfcmIAEgZiYWxfcmEANQZjY3BfcmMAGgZjY3BfcmIAEgZjY3BfcmEANQZkaXZfcmMAGgZkaXZfcmIAEgZkaXZfcmEANQZleHBfcmMAGgZleHBfcmIAEgZleHBfcmEANQhsYl9pbW0xMgAJBmd0Zl9yYgASBmd0Zl9yYQA1BmpuZV9yYwAaBmpuZV9yYgASBmpuZV9yYQA1BmxkY19yYwAaBmxkY19yYgASBmxkY19yYQA1BmxvZ19yZAA2BmxvZ19yYwAaBmxvZ19yYgASBmxvZ19yYQA1Bm1jbF9yYgASBm1jbF9yYQA1Bm1jcF9yYwAaBm1jcF9yYgASBm1jcF9yYQA1Bm1lcV9yZAA2Bm1lcV9yYwAaBm1lcV9yYgASBm1lcV9yYQA1Bm1vZF9yYwAaBm1vZF9yYgASBm1vZF9yYQA1Bm11bF9yYwAaBm11bF9yYgASBm11bF9yYQA1Bm5vdF9yYgASBm5vdF9yYQA1CW9yaV9pbW0xMgAJBm9yaV9yYgASBm9yaV9yYQA1BnNsbF9yYwAaBnNsbF9yYgASBnNsbF9yYQA1BnNtb19yZAA2BnNtb19yYwAaBnNtb19yYgASBnNtb19yYQA1BnNybF9yYwAaBnNybF9yYgASBnNybF9yYQA1BnNyd19yYwAaBnNyd19yYgASBnNyd19yYQA1BnN1Yl9yYwAaBnN1Yl9yYgASBnN1Yl9yYQA1BnN3d19yYwAaBnN3d19yYgASBnN3d19yYQA1BnRyb19yZAA2BnRyb19yYwAaBnRyb19yYgASBnRyb19yYQA1Bnhvcl9yYwAaBnhvcl9yYgASBnhvcl9yYQA1CWd0Zl9pbW0xMgAJB2FkZGlfcmIAEgdhZGRpX3JhADUKYW5kaV9pbW0xMgAJB2FuZGlfcmIAEgdhbmRpX3JhADUHYmhzaF9yYgASB2Joc2hfcmEANQZjY3BfcmQANgdibGRkX3JjABoHYmxkZF9yYgASB2JsZGRfcmEANQdic2l6X3JiABIHYnNpel9yYQA1B2J1cm5fcmIAEgdidXJuX3JhADUHY2FsbF9yZAA2B2NhbGxfcmMAGgdjYWxsX3JiABIHY2FsbF9yYQA1B2Nyb29fcmIAEgdjcm9vX3JhADUHY3Npel9yYgASB2NzaXpfcmEANQpkaXZpX2ltbTEyAAkHZGl2aV9yYgASB2RpdmlfcmEANQdlY2FsX3JkADYHZWNhbF9yYwAaB2VjYWxfcmIAEgdlY2FsX3JhADUHZWNrMV9yYwAaB2VjazFfcmIAEgdlY2sxX3JhADUHZWNyMV9yYwAaB2VjcjFfcmIAEgdlY3IxX3JhADUHZWQxOV9yZAA2B2VkMTlfcmMAGgdlZDE5X3JiABIHZWQxOV9yYQA1CmV4cGlfaW1tMTIACQdleHBpX3JiABIHZXhwaV9yYQA1CmptcGJfaW1tMTgADQdqbXBiX3JhADUKam1wZl9pbW0xOAANB2ptcGZfcmEANQdqbmViX3JjABoHam5lYl9yYgASB2puZWJfcmEANQdqbmVmX3JjABoHam5lZl9yYgASB2puZWZfcmEANQpqbmVpX2ltbTEyAAkHam5laV9yYgASB2puZWlfcmEANQpqbnpiX2ltbTEyAAkHam56Yl9yYgASB2puemJfcmEANQpqbnpmX2ltbTEyAAkHam56Zl9yYgASB2puemZfcmEANQpqbnppX2ltbTE4AA0Ham56aV9yYQA1B2syNTZfcmMAGgdrMjU2X3JiABIHazI1Nl9yYQA1B2xvZ2RfcmQANgdsb2dkX3JjABoHbG9nZF9yYgASB2xvZ2RfcmEANQptY2xpX2ltbTE4AA0HbWNsaV9yYQA1Cm1jcGlfaW1tMTIACQdtY3BpX3JiABIHbWNwaV9yYQA1B21pbnRfcmIAEgdtaW50X3JhADUHbWxkdl9yZAA2B21sZHZfcmMAGgdtbGR2X3JiABIHbWxkdl9yYQA1B21sb2dfcmMAGgdtbG9nX3JiABIHbWxvZ19yYQA1Cm1vZGlfaW1tMTIACQdtb2RpX3JiABIHbW9kaV9yYQA1B21vdmVfcmIAEgdtb3ZlX3JhADUKbW92aV9pbW0xOAANB21vdmlfcmEANQdtcm9vX3JjABoHbXJvb19yYgASB21yb29fcmEANQptdWxpX2ltbTEyAAkHbXVsaV9yYgASB211bGlfcmEANQdyZXRkX3JiABIHcmV0ZF9yYQA1B3MyNTZfcmMAGgdzMjU2X3JiABIHczI1Nl9yYQA1B3Njd3FfcmMAGgdzY3dxX3JiABIHc2N3cV9yYQA1CnNsbGlfaW1tMTIACQdzbGxpX3JiABIHc2xsaV9yYQA1CnNybGlfaW1tMTIACQdzcmxpX3JiABIHc3JsaV9yYQA1B3Nyd3FfcmQANgdzcndxX3JjABoHc3J3cV9yYgASB3Nyd3FfcmEANQpzdWJpX2ltbTEyAAkHc3ViaV9yYgASB3N1YmlfcmEANQdzd3dxX3JkADYHc3d3cV9yYwAaB3N3d3FfcmIAEgdzd3dxX3JhADUHdGltZV9yYgASB3RpbWVfcmEANQd3ZGFtX3JkADYHd2RhbV9yYwAaB3dkYW1fcmIAEgd3ZGFtX3JhADUHd2RjbV9yYwAaB3dkY21fcmIAEgd3ZGNtX3JhADUHd2Rkdl9yYwAaB3dkZHZfcmIAEgd3ZGR2X3JhADUHd2RtZF9yZAA2B3dkbWRfcmMAGgd3ZG1kX3JiABIHd2RtZF9yYQA1B3dkbWxfcmMAGgd3ZG1sX3JiABIHd2RtbF9yYQA1B3dkbW1fcmQANgd3ZG1tX3JjABoHd2RtbV9yYgASB3dkbW1fcmEANQd3ZG9wX3JjABoHd2RvcF9yYgASB3dkb3BfcmEANQd3cWFtX3JkADYHd3FhbV9yYwAaB3dxYW1fcmIAEgd3cWFtX3JhADUHd3FjbV9yYwAaB3dxY21fcmIAEgd3cWNtX3JhADUHd3Fkdl9yYwAaB3dxZHZfcmIAEgd3cWR2X3JhADUHd3FtZF9yZAA2B3dxbWRfcmMAGgd3cW1kX3JiABIHd3FtZF9yYQA1B3dxbWxfcmMAGgd3cW1sX3JiABIHd3FtbF9yYQA1B3dxbW1fcmQANgd3cW1tX3JjABoHd3FtbV9y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C0HggsAAQRkQ2AEACykBAX9BEEEEEMYBIgEgADYCDCABQQA2AgggAUKBgICAEDcCACABQQhqCykBAX9BEEEEEMYBIgEgADoADCABQQA2AgggAUKBgICAEDcCACABQQhqCyIAIAIQAiECIAAQxwEgARDHASACEEdBCHRBygByENEBEGcLDwAgACABIAIgA0ESEPEBCw8AIAAgASACIANBGBDxAQsPACAAIAEgAiADQRwQ8QELDwAgACABIAIgA0EdEPEBCw8AIAAgASACIANBIRDyAQsPACAAIAEgAiADQSIQ8QELDwAgACABIAIgA0EjEPEBCw8AIAAgASACIANBKBDxAQsPACAAIAEgAiADQSoQ8QELDwAgACABIAIgA0EsEPEBCw8AIAAgASACIANBLxDxAQsPACAAIAEgAiADQTgQ8QELEAAgACABIAIgA0HTABDyAQsQACAAIAEgAiADQdQAEPIBCxAAIAAgASACIANB3gAQ8gELEAAgACABIAIgA0HfABDyAQsQACAAIAEgAiADQeAAEPIBCxAAIAAgASACIANB4QAQ8gELEAAgACABIAIgA0HiABDyAQsQACAAIAEgAiADQeMAEPIBCxAAIAAgASACIANB5AAQ8gELEAAgACABIAIgA0HlABDyAQsQACAAIAEgAiADQeYAEPEBCxAAIAAgASACIANB5wAQ8QELEAAgACABIAIgA0HoABDxAQsQACAAIAEgAiADQekAEPEBCxAAIAAgASACIANB6gAQ8QELEAAgACABIAIgA0HrABDxAQsQACAAIAEgAiADQewAEPEBCxAAIAAgASACIANB7gAQ8QELHgAgARBmIQEgABDHASABEMQBQQh0QcwAchDRARBnCxkAIAAgASACQSBBACAEG0EQQQAgAxtyECELDQAgACABIAJBARDzAQsNACAAIAEgAkECEPMBCw0AIAAgASACQQMQ8wELDQAgACABIAJBBBDzAQsNACAAIAEgAkEFEPMBCw0AIAAgASACQQYQ8wELDQAgACABIAJBBxDzAQsNACAAIAEgAkEIEPMBCw0AIAAgASACQQkQ8wELDQAgACABIAJBCxDzAQsNACAAIAEgAkENEPMBCw0AIAAgASACQQ4Q8wELDQAgACABIAJBDxDzAQsNACAAIAEgAkEQEPMBCw0AIAAgASACQREQ8wELDQAgACABIAJBFxDzAQsNACAAIAEgAkEmEPMBCw0AIAAgASACQScQ8wELDQAgACABIAJBKRDzAQsNACAAIAEgAkErEPMBCw0AIAAgASACQS0Q8wELDQAgACABIAJBLhDzAQsNACAAIAEgAkEwEPMBCw0AIAAgASACQTEQ8wELDQAgACABIAJBNRDzAQsNACAAIAEgAkE3EPMBCw0AIAAgASACQTkQ9AELDQAgACABIAJBOhD0AQsNACAAIAEgAkE7EPQBCw0AIAAgASACQTwQ9AELDQAgACABIAJBPRD0AQsNACAAIAEgAkE+EPQBCw0AIAAgASACQT8Q9AELDgAgACABIAJBwAAQ9AELDgAgACABIAJBwQAQ9AELDgAgACABIAJBwgAQ9AELDgAgACABIAJBwwAQ9AELDgAgACABIAJBxAAQ9AELDgAgACABIAJBxQAQ9AELDgAgACABIAJBxgAQ9AELDgAgACABIAJBxwAQ9AELDgAgACABIAJByAAQ9AELDgAgACABIAJByQAQ9AELDgAgACABIAJBygAQ9AELDgAgACABIAJB0QAQ9AELDgAgACABIAJB0gAQ9AELFwEBfyAAQf8BcUE/TQR/IAAQaAVBAAsLGwAgABDQASAAKAIAQX9GBEAQ1wEACyAALQAECwkAIABBExD1AQsJACAAQRUQ9QELCQAgAEEaEPUBCwkAIABBIBD1AQsJACAAQSUQ9QELIgEBf0EQQQQQxgEiAEIANwIIIABCgYCAgBA3AgAgAEEIagsJACAAQTQQ9QELCQAgAEE2EPUBCwoAIABB2AAQ9QELCgAgAEHZABD1AQsXACABQRB0QYCA/ANxIABBAnRB/AFxcgsbACAAEMcBIAEQxwEgAhDHARA6QQh0ENEBEGcLEgAgASAAENMBIgAEQCAADwsAC3UBAX8gAEH/AXFBwABPBEAjAEEQayIBJAAgAUEiNgIMIAFBgIDAADYCCCMAQSBrIgAkACAAQQE2AgQgAEH0hsAANgIAIABCATcCDCAAIAFBCGqtQoCAgIDAAIQ3AxggACAAQRhqNgIIIABBuIDAABBXAAsgAAsUACAAIAEgAkEgQQAgAxsgBHIQIQsXACAAEBsgARAbIAIQGyADEBYQzgEQYgsWACAAEBsgARAbIAIQGyADEBsQIRBiCxMAIAAgACgCAEEBazYCACABEF4LEwAgACAAKAIAQQFrNgIAIAEQXwsSACAAEBsgARAbIAIQAhBHEGILEQAgACABIAJBIEEAIAMbECELEgAgABAbIAEQGyACEB0QRxBiCxMAIAAEQA8LQdSKwABBGxDYAQALFAEBf0EEQQEQxgEiASAANgAAIAELDQAgAQRAIAAgARAZCwuBAwEFf0GRj8AALQAAGgJ/IABBCU8EQAJAQc3/e0EQIAAgAEEQTRsiAGsgAU0NACAAQRAgAUELakF4cSABQQtJGyIEakEMahABIgJFDQAgAkEIayEBAkAgAEEBayIDIAJxRQRAIAEhAAwBCyACQQRrIgUoAgAiBkF4cSACIANqQQAgAGtxQQhrIgIgAEEAIAIgAWtBEE0baiIAIAFrIgJrIQMgBkEDcQRAIAAgAyAAKAIEQQFxckECcjYCBCAAIANqIgMgAygCBEEBcjYCBCAFIAIgBSgCAEEBcXJBAnI2AgAgASACaiIDIAMoAgRBAXI2AgQgASACEAMMAQsgASgCACEBIAAgAzYCBCAAIAEgAmo2AgALAkAgACgCBCIBQQNxRQ0AIAFBeHEiAiAEQRBqTQ0AIAAgBCABQQFxckECcjYCBCAAIARqIgEgAiAEayIEQQNyNgIEIAAgAmoiAiACKAIEQQFyNgIEIAEgBBADCyAAQQhqIQMLIAMMAQsgARABCwsNACAAENwBQQp2QT9xCw8AIAAQGyABEGYQxAEQYgsLACAAIwBqJAAjAAsOAEHvisAAQc8AENgBAAsJACAAIAEQAAALCQAgAEE/cRBoCwoAIAAQG0H/AXELCAAgAEEEEBkLBwAgAEEIdAsJAEEzENEBEGcLBgBBCxBoCwYAQQoQaAsGAEEIEGgLBgBBDxBoCwYAQQYQaAsGAEEJEGgLBgBBBxBoCwYAQQwQaAsGAEECEGgLBgBBARBoCwYAQQMQaAsGAEENEGgLBgBBDhBoCwYAQQUQaAsGAEEEEGgLBgBBEBBoCwYAQQAQaAsEAEEECzMBAX8gACAAKAIAQQFrIgI2AgACQCACDQAgACAAKAIEQQFrIgI2AgQgAg0AIAAgARAZCwsjACAAEMcBIAEQxwEgAhDHASADEMcBECFBCHQgBHIQ0QEQZwsiACAAEMcBIAEQxwEgAhDHASADEA4QIUEIdCAEchDRARBnCx4AIAAQxwEgARDHASACEMcBEDpBCHQgA3IQ0QEQZwsdACAAEMcBIAEQxwEgAhAPEEdBCHQgA3IQ0QEQZwsaACAAEMcBGiAAQQp0QYD4A3EgAXIQ0QEQZwtfAQF/IwBBMGsiBCQAIAQgADYCDCAAIANPBEAgBEECNgIUIAQgAjYCECAEQgE3AhwgBEEDNgIsIAQgBEEoajYCGCAEIARBDGo2AiggBEEQaiABEFcACyAEQTBqJAAgAAtMAQJ/IwBBEGsiBSQAIAVBCGogAxALIAUtAAkhAyAFLQAIIQYgABDHASABEMcBIAIQxwEgBiADEMgBQQh0IARyENEBEGcgBUEQaiQAC0wBAn8jAEEQayIFJAAgBUEIaiADEAggBS0ACSEDIAUtAAghBiAAEMcBIAEQxwEgAhDHASAGIAMQiQFBCHQgBHIQ0QEQZyAFQRBqJAALSQAgABDHARogARDHARogAEESdEGAgPAXcSIAIAFBDHRBgOA/cXIiAUGA4ANxQQh0IAFBCHZBgP4DcSAAIAJyQRh2cnIQ0QEQZwtJACAAEMcBGiABEBMiAUEQdEGAgPwHcSAAQRJ0QYCA8B9xIAFyIgBBgP4DcUEIdCAAQQh2QYD+A3FyQQh2ckEIdCACchDRARBnC0kBAX8jAEEQayIDJAAgABDQASABIAJPBEBB4ILAAEEZENgBAAsgA0EIaiAAEGEgAygCDCADKAIIIAE6AAFBADYCACADQRBqJAALQQAgABDHARogARDHARogAEESdEGAgPAHcSABQQx0QYDgP3FyIgBBCHZBgP4DcSAAQYDgA3FBCHRyIAJyENEBEGcLNQAgABAUIgBBEHRBgID8B3EgAEEIdkGA/gNxIABBgP4DcUEIdHJBCHZyQQh0IAFyENEBEGcLC8gLAQBBgIDAAAu+C0NoZWNrUmVnSWQgd2FzIGdpdmVuIGludmFsaWQgUmVnSWRmdWVsLWFzbS9zcmMvbGliLnJzAAAAIgAQABMAAABuAAAAIgAAAFZhbHVlIGBgIG91dCBvZiByYW5nZSBmb3IgNi1iaXQgaW1tZWRpYXRlAAAASAAQAAcAAABPABAAIgAAACIAEAATAAAAsAMAABwAAABgIG91dCBvZiByYW5nZSBmb3IgMTItYml0IGltbWVkaWF0ZQBIABAABwAAAJQAEAAjAAAAIgAQABMAAAC1AwAAHAAAAGAgb3V0IG9mIHJhbmdlIGZvciAxOC1iaXQgaW1tZWRpYXRlAEgAEAAHAAAA2AAQACMAAAAiABAAEwAAALoDAAAcAAAAYCBvdXQgb2YgcmFuZ2UgZm9yIDI0LWJpdCBpbW1lZGlhdGUASAAQAAcAAAAcARAAIwAAACIAEAATAAAAvwMAABwAAABpbnZhbGlkIGVudW0gdmFsdWUgcGFzc2VkYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2VkEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAJAAAACRAAAAkgAAAJMAAACUAAAAlQAAAJYAAACXAAAAmAAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAAsAAAALoAAAC7AAAAAQAAAAAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAAUAAAAAAAAAAQAAAAYAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OS9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjYvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZACABBAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAgAQQACkAAACuBAAADQAAAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMoBRAAHAAAAIsCAAAeAAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAA7CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yMS4zDHdhc20tYmluZGdlbgYwLjIuOTM=", imports);
28661
+ return _loadWasmModule(1, null, "AGFzbQEAAAABOgpgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38AYAJ/fwF/YAABf2AFf39/f38Bf2ABfwBgA39/fwBgAAACGAEDd2JnEF9fd2JpbmRnZW5fdGhyb3cAAwP/Af0BAQEDAwMDAwMBAQMDAQEBAwMBAQEEAQMDAwEBAwEBAQQCAQMCAgICAgIDAwMEBAQEBAQEBAEBAQMDAAICBAQEBAQEBAQEBAABAQgDAwQBAQEBAQEBAgcDAQAAAQEDBwcBAwEDAgIBAQEAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQUBAQEBBAAEAQYCAgMDAAIABwEIBAEEAQkDAQEHAQUFBQUFBQUFBQUFBQUFBQUFBQUDBgYCAgQCBgYAAAgABAUDAQARBgkBfwFBgIDAAAsHjUzPBQZtZW1vcnkCABZfX3diZ19jb21wYXJlYXJnc19mcmVlABAaX193YmdfZ2V0X2NvbXBhcmVhcmdzX21vZGUASBpfX3diZ19zZXRfY29tcGFyZWFyZ3NfbW9kZQA4Il9fd2JnX2dldF9jb21wYXJlYXJnc19pbmRpcmVjdF9yaHMASSJfX3diZ19zZXRfY29tcGFyZWFyZ3NfaW5kaXJlY3RfcmhzAEsSY29tcGFyZWFyZ3NfdG9faW1tAFgUY29tcGFyZWFyZ3NfZnJvbV9pbW0AHxVfX3diZ19nZXRfbWF0aGFyZ3Nfb3AASBVfX3diZ19zZXRfbWF0aGFyZ3Nfb3AAORJfX3diZ19tdWxhcmdzX2ZyZWUAER5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMASB5fX3diZ19zZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMATBJfX3diZ19kaXZhcmdzX2ZyZWUAIx5fX3diZ19nZXRfZGl2YXJnc19pbmRpcmVjdF9yaHMAuQEeX193Ymdfc2V0X2RpdmFyZ3NfaW5kaXJlY3RfcmhzAGMbX193YmdfcGFuaWNpbnN0cnVjdGlvbl9mcmVlABchcGFuaWNpbnN0cnVjdGlvbl9lcnJvcl90eXBlc2NyaXB0AE0XcGFuaWNpbnN0cnVjdGlvbl9yZWFzb24AWxxwYW5pY2luc3RydWN0aW9uX2luc3RydWN0aW9uAFwMZ21fZnJvbV9hcmdzANUBDWd0Zl9mcm9tX2FyZ3MAzQEHZ21fYXJncwCIAQhndGZfYXJncwBpDndkY21fZnJvbV9hcmdzADsOd2RvcF9mcm9tX2FyZ3MAOw53ZG1sX2Zyb21fYXJncwA8DndkZHZfZnJvbV9hcmdzAMkBCXdkY21fYXJncwAkCXdxY21fYXJncwAlCXdkb3BfYXJncwAmCXdxb3BfYXJncwAnCXdkbWxfYXJncwAoCXdxbWxfYXJncwApCXdkZHZfYXJncwBkCXdxZHZfYXJncwBlEF9fd2JnX2ltbTA2X2ZyZWUAKhBfX3diZ19pbW0xMl9mcmVlACsQX193YmdfaW1tMThfZnJlZQAsDl9fd2JnX2FkZF9mcmVlABgPX193Ymdfbm9vcF9mcmVlAAcSYWRkX25ld190eXBlc2NyaXB0AFkGYWRkX3JhADUGYWRkX3JiABIGYWRkX3JjABoDYWRkAMUBA2FuZACKAQNkaXYAiwECZXEAjAEDZXhwAI0BAmd0AI4BAmx0AI8BBG1sb2cAkAEEbXJvbwCRAQRtb2RfAJIBBW1vdmVfAD0DbXVsAJMBA25vdAA+Am9yAJQBA3NsbACVAQNzcmwAlgEDc3ViAJcBA3hvcgCYAQRtbGR2AGoDcmV0ALoBBHJldGQAPxNhbG9jX25ld190eXBlc2NyaXB0AGAHYWxvY19yYQAiBGFsb2MAuwEDbWNsAEADbWNwAJkBA21lcQBrE2Joc2hfbmV3X3R5cGVzY3JpcHQAIARiaHNoAC0EYmhlaQC8AQRidXJuAEEEY2FsbABsA2NjcABtBGNyb28AQgRjc2l6AEMCY2IAvQEDbGRjAG4DbG9nAG8EbG9nZABwBG1pbnQARARydnJ0AL4BBHNjd3EAmgEDc3J3AJsBBHNyd3EAcQNzd3cAnAEEc3d3cQByAnRyAJ0BA3RybwBzBGVjazEAngEEZWNyMQCfAQRlZDE5AHQEazI1NgCgAQRzMjU2AKEBBHRpbWUARRNub29wX25ld190eXBlc2NyaXB0AL8BBG5vb3AA3QEEZmxhZwDAAQNiYWwAogEDam1wAMEBA2puZQCjAQNzbW8AdRNhZGRpX25ld190eXBlc2NyaXB0AFoKYWRkaV9pbW0xMgAJBGFkZGkApAEEYW5kaQClAQRkaXZpAKYBBGV4cGkApwEEbW9kaQCoAQRtdWxpAKkBA29yaQCqAQRzbGxpAKsBBHNybGkArAEEc3ViaQCtAQR4b3JpAK4BBGpuZWkArwECbGIAsAECbHcAsQECc2IAsgECc3cAswEEbWNwaQC0ARJndGZfbmV3X3R5cGVzY3JpcHQAzwEDZ3RmALUBBG1jbGkALhFnbV9uZXdfdHlwZXNjcmlwdABGCGdtX2ltbTE4AA0CZ20ALwRtb3ZpADAEam56aQAxBGptcGYAMhNqbXBiX25ld190eXBlc2NyaXB0ABUEam1wYgAzBGpuemYAtgEEam56YgC3AQRqbmVmAHYKam5lYl9pbW0wNgA2BGpuZWIAdwJqaQBOE2NmZWlfbmV3X3R5cGVzY3JpcHQANwpjZmVpX2ltbTI0AAoEY2ZlaQBPBGNmc2kAUANjZmUAwgEDY2ZzAMMBBHBzaGwAUQRwc2hoAFIEcG9wbABTBHBvcGgAVBN3ZGNtX25ld190eXBlc2NyaXB0AMoBBHdkY20AeAR3cWNtAHkEd2RvcAB6BHdxb3AAewR3ZG1sAHwEd3FtbAB9BHdkZHYAfgR3cWR2AH8Ed2RtZACAAQR3cW1kAIEBBHdkYW0AggEEd3FhbQCDAQR3ZG1tAIQBBHdxbW0AhQEEZWNhbACGAQRic2l6ADQTYmxkZF9uZXdfdHlwZXNjcmlwdABVB2JsZGRfcmQANgRibGRkAIcBFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUADBRpbnN0cnVjdGlvbl90b19ieXRlcwAGEGluc3RydWN0aW9uX3NpemUA7wERcmVnaWRfbmV3X2NoZWNrZWQAuAEJcmVnaWRfYmFsAN4BCnJlZ2lkX2NnYXMA3wEJcmVnaWRfZXJyAOABCnJlZ2lkX2ZsYWcA4QEIcmVnaWRfZnAA4gEKcmVnaWRfZ2dhcwDjAQhyZWdpZF9ocADkAQhyZWdpZF9pcwDlAQhyZWdpZF9vZgDmAQlyZWdpZF9vbmUA5wEIcmVnaWRfcGMA6AEJcmVnaWRfcmV0AOkBCnJlZ2lkX3JldGwA6gEIcmVnaWRfc3AA6wEJcmVnaWRfc3BwAOwBDnJlZ2lkX3dyaXRhYmxlAO0BCnJlZ2lkX3plcm8A7gEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA2QELcmVnaWRfdG9fdTgA2gESYW5kX25ld190eXBlc2NyaXB0AFkSZGl2X25ld190eXBlc2NyaXB0AFkRZXFfbmV3X3R5cGVzY3JpcHQAWRJleHBfbmV3X3R5cGVzY3JpcHQAWRFndF9uZXdfdHlwZXNjcmlwdABZEWx0X25ld190eXBlc2NyaXB0AFkTbWxvZ19uZXdfdHlwZXNjcmlwdABZE21yb29fbmV3X3R5cGVzY3JpcHQAWRJtb2RfbmV3X3R5cGVzY3JpcHQAWRJtdWxfbmV3X3R5cGVzY3JpcHQAWRFvcl9uZXdfdHlwZXNjcmlwdABZEnNsbF9uZXdfdHlwZXNjcmlwdABZEnNybF9uZXdfdHlwZXNjcmlwdABZEnN1Yl9uZXdfdHlwZXNjcmlwdABZEnhvcl9uZXdfdHlwZXNjcmlwdABZEm1jcF9uZXdfdHlwZXNjcmlwdABZE3Njd3FfbmV3X3R5cGVzY3JpcHQAWRJzcndfbmV3X3R5cGVzY3JpcHQAWRJzd3dfbmV3X3R5cGVzY3JpcHQAWRF0cl9uZXdfdHlwZXNjcmlwdABZE2VjazFfbmV3X3R5cGVzY3JpcHQAWRNlY3IxX25ld190eXBlc2NyaXB0AFkTazI1Nl9uZXdfdHlwZXNjcmlwdABZE3MyNTZfbmV3X3R5cGVzY3JpcHQAWRJiYWxfbmV3X3R5cGVzY3JpcHQAWRJqbmVfbmV3X3R5cGVzY3JpcHQAWRNhbmRpX25ld190eXBlc2NyaXB0AFoTZGl2aV9uZXdfdHlwZXNjcmlwdABaE2V4cGlfbmV3X3R5cGVzY3JpcHQAWhNtb2RpX25ld190eXBlc2NyaXB0AFoTbXVsaV9uZXdfdHlwZXNjcmlwdABaEm9yaV9uZXdfdHlwZXNjcmlwdABaE3NsbGlfbmV3X3R5cGVzY3JpcHQAWhNzcmxpX25ld190eXBlc2NyaXB0AFoTc3ViaV9uZXdfdHlwZXNjcmlwdABaE3hvcmlfbmV3X3R5cGVzY3JpcHQAWhNqbmVpX25ld190eXBlc2NyaXB0AFoRbGJfbmV3X3R5cGVzY3JpcHQAWhFsd19uZXdfdHlwZXNjcmlwdABaEXNiX25ld190eXBlc2NyaXB0AFoRc3dfbmV3X3R5cGVzY3JpcHQAWhNtY3BpX25ld190eXBlc2NyaXB0AFoTam56Zl9uZXdfdHlwZXNjcmlwdABaE2puemJfbmV3X3R5cGVzY3JpcHQAWhFqaV9uZXdfdHlwZXNjcmlwdAA3E2Nmc2lfbmV3X3R5cGVzY3JpcHQANxNwc2hsX25ld190eXBlc2NyaXB0ADcTcHNoaF9uZXdfdHlwZXNjcmlwdAA3E3BvcGxfbmV3X3R5cGVzY3JpcHQANxNwb3BoX25ld190eXBlc2NyaXB0ADcTbW92aV9uZXdfdHlwZXNjcmlwdAAVE21jbGlfbmV3X3R5cGVzY3JpcHQAFRNqbnppX25ld190eXBlc2NyaXB0ABUTam1wZl9uZXdfdHlwZXNjcmlwdAAVEm5vdF9uZXdfdHlwZXNjcmlwdAAgE3JldGRfbmV3X3R5cGVzY3JpcHQAIBNtb3ZlX25ld190eXBlc2NyaXB0ACASbWNsX25ld190eXBlc2NyaXB0ACATYnVybl9uZXdfdHlwZXNjcmlwdAAgE2Nyb29fbmV3X3R5cGVzY3JpcHQAIBNjc2l6X25ld190eXBlc2NyaXB0ACATbWludF9uZXdfdHlwZXNjcmlwdAAgE3RpbWVfbmV3X3R5cGVzY3JpcHQAIBNic2l6X25ld190eXBlc2NyaXB0ACAGcmV0X3JhACIHYmhlaV9yYQAiBWNiX3JhACIHcnZydF9yYQAiB2ZsYWdfcmEAIgZqbXBfcmEAIghqaV9pbW0yNAAKCmNmc2lfaW1tMjQACgZjZmVfcmEAIgZjZnNfcmEAIgpwc2hsX2ltbTI0AAoKcHNoaF9pbW0yNAAKCnBvcGxfaW1tMjQACgpwb3BoX2ltbTI0AAoTbWxkdl9uZXdfdHlwZXNjcmlwdABVEm1lcV9uZXdfdHlwZXNjcmlwdABVEmNjcF9uZXdfdHlwZXNjcmlwdABVEmxvZ19uZXdfdHlwZXNjcmlwdABVE2xvZ2RfbmV3X3R5cGVzY3JpcHQAVRNzcndxX25ld190eXBlc2NyaXB0AFUTc3d3cV9uZXdfdHlwZXNjcmlwdABVEnRyb19uZXdfdHlwZXNjcmlwdABVE2VkMTlfbmV3X3R5cGVzY3JpcHQAVRJzbW9fbmV3X3R5cGVzY3JpcHQAVRJsZGNfbmV3X3R5cGVzY3JpcHQAVRNqbmVmX25ld190eXBlc2NyaXB0AFUTd2RtZF9uZXdfdHlwZXNjcmlwdABVE3dxbWRfbmV3X3R5cGVzY3JpcHQAVRN3ZGFtX25ld190eXBlc2NyaXB0AFUTd3FhbV9uZXdfdHlwZXNjcmlwdABVE3dkbW1fbmV3X3R5cGVzY3JpcHQAVRN3cW1tX25ld190eXBlc2NyaXB0AFUTZWNhbF9uZXdfdHlwZXNjcmlwdABVE2NhbGxfbmV3X3R5cGVzY3JpcHQAVRNfX3diZ19tYXRoYXJnc19mcmVlABAfX193Ymdfc2V0X21hdGhhcmdzX2luZGlyZWN0X3JocwBLHl9fd2JnX3NldF9tdWxhcmdzX2luZGlyZWN0X2xocwBLH19fd2JnX2dldF9tYXRoYXJnc19pbmRpcmVjdF9yaHMASR5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9saHMASRJyZXRfbmV3X3R5cGVzY3JpcHQAYBNiaGVpX25ld190eXBlc2NyaXB0AGARY2JfbmV3X3R5cGVzY3JpcHQAYBNydnJ0X25ld190eXBlc2NyaXB0AGATZmxhZ19uZXdfdHlwZXNjcmlwdABgEmptcF9uZXdfdHlwZXNjcmlwdABgEmNmZV9uZXdfdHlwZXNjcmlwdABgEmNmc19uZXdfdHlwZXNjcmlwdABgD19fd2JnX3dkb3BfZnJlZQAYDl9fd2JnX21vZF9mcmVlABgPX193Ymdfd3Fkdl9mcmVlABgNX193Ymdfc2JfZnJlZQAYDl9fd2JnX3Ntb19mcmVlABgPX193YmdfcHNobF9mcmVlABgOX193YmdfbG9nX2ZyZWUAGA9fX3diZ193cWFtX2ZyZWUAGA9fX3diZ193cW1sX2ZyZWUAGA5fX3diZ19ub3RfZnJlZQAYD19fd2JnX2puemlfZnJlZQAYD19fd2JnX2puZWlfZnJlZQAYD19fd2JnX3N1YmlfZnJlZQAYD19fd2JnX2ZsYWdfZnJlZQAYD19fd2JnX2NzaXpfZnJlZQAYD19fd2JnX3Nyd3FfZnJlZQAYD19fd2JnX3NsbGlfZnJlZQAYD19fd2JnX2ptcGJfZnJlZQAYD19fd2JnX3dkbWxfZnJlZQAYD19fd2JnX3MyNTZfZnJlZQAYDl9fd2JnX3hvcl9mcmVlABgOX193YmdfY2ZlX2ZyZWUAGA1fX3diZ19ndF9mcmVlABgPX193YmdfcHNoaF9mcmVlABgPX193YmdfbWNsaV9mcmVlABgNX193YmdfbHRfZnJlZQAYD19fd2JnX2puZWZfZnJlZQAYDV9fd2JnX3N3X2ZyZWUAGA9fX3diZ19zcmxpX2ZyZWUAGA9fX3diZ19idXJuX2ZyZWUAGA9fX3diZ19ic2l6X2ZyZWUAGA9fX3diZ19ydnJ0X2ZyZWUAGA9fX3diZ194b3JpX2ZyZWUAGA9fX3diZ19tdWxpX2ZyZWUAGA1fX3diZ19sYl9mcmVlABgNX193YmdfZ21fZnJlZQAYD19fd2JnX2Joc2hfZnJlZQAYDV9fd2JnX2VxX2ZyZWUAGA5fX3diZ19zbGxfZnJlZQAYDl9fd2JnX29yaV9mcmVlABgPX193YmdfZWQxOV9mcmVlABgPX193YmdfY2ZlaV9mcmVlABgPX193YmdfY2ZzaV9mcmVlABgPX193Ymdfam56Yl9mcmVlABgPX193YmdfYWxvY19mcmVlABgOX193Ymdfc3JsX2ZyZWUAGA9fX3diZ19tcm9vX2ZyZWUAGA5fX3diZ19jZnNfZnJlZQAYDl9fd2JnX2ptcF9mcmVlABgPX193YmdfYmhlaV9mcmVlABgPX193YmdfbG9nZF9mcmVlABgPX193Ymdfam5lYl9mcmVlABgPX193Ymdfd3FtbV9mcmVlABgPX193YmdfcG9waF9mcmVlABgPX193Ymdfd2RjbV9mcmVlABgPX193YmdfZXhwaV9mcmVlABgPX193YmdfYWRkaV9mcmVlABgPX193YmdfYmxkZF9mcmVlABgOX193YmdfbGRjX2ZyZWUAGA5fX3diZ19kaXZfZnJlZQAYD19fd2JnX3dkZHZfZnJlZQAYD19fd2JnX21sZHZfZnJlZQAYDl9fd2JnX21jbF9mcmVlABgOX193YmdfbXVsX2ZyZWUAGA9fX3diZ193ZGFtX2ZyZWUAGA9fX3diZ19jYWxsX2ZyZWUAGA1fX3diZ19sd19mcmVlABgPX193YmdfZWNhbF9mcmVlABgPX193YmdfbWxvZ19mcmVlABgPX193YmdfcmV0ZF9mcmVlABgPX193YmdfdGltZV9mcmVlABgOX193YmdfZ3RmX2ZyZWUAGA5fX3diZ19qbmVfZnJlZQAYDV9fd2JnX29yX2ZyZWUAGA9fX3diZ19kaXZpX2ZyZWUAGA9fX3diZ19qbnpmX2ZyZWUAGA5fX3diZ190cm9fZnJlZQAYDl9fd2JnX21jcF9mcmVlABgPX193YmdfbWludF9mcmVlABgOX193Ymdfc3ViX2ZyZWUAGA1fX3diZ19jYl9mcmVlABgPX193Ymdfd3FvcF9mcmVlABgOX193Ymdfc3J3X2ZyZWUAGA9fX3diZ19lY3IxX2ZyZWUAGA9fX3diZ19qbXBmX2ZyZWUAGA9fX3diZ19rMjU2X2ZyZWUAGA5fX3diZ19yZXRfZnJlZQAYD19fd2JnX3Njd3FfZnJlZQAYDl9fd2JnX21lcV9mcmVlABgPX193Ymdfc3d3cV9mcmVlABgOX193YmdfYmFsX2ZyZWUAGA9fX3diZ19tb3ZpX2ZyZWUAGA9fX3diZ193ZG1kX2ZyZWUAGA9fX3diZ19wb3BsX2ZyZWUAGA9fX3diZ193ZG1tX2ZyZWUAGA5fX3diZ19leHBfZnJlZQAYDV9fd2JnX2ppX2ZyZWUAGA9fX3diZ193cWNtX2ZyZWUAGA9fX3diZ19tY3BpX2ZyZWUAGA9fX3diZ19tb2RpX2ZyZWUAGA1fX3diZ190cl9mcmVlABgPX193YmdfYW5kaV9mcmVlABgOX193YmdfY2NwX2ZyZWUAGA5fX3diZ19zd3dfZnJlZQAYD19fd2JnX2Nyb29fZnJlZQAYD19fd2JnX3dxbWRfZnJlZQAYD19fd2JnX21vdmVfZnJlZQAYD19fd2JnX2VjazFfZnJlZQAYDl9fd2JnX2FuZF9mcmVlABgTd3Fkdl9uZXdfdHlwZXNjcmlwdADKARN3cW1sX25ld190eXBlc2NyaXB0AMoBE3dkbWxfbmV3X3R5cGVzY3JpcHQAygETd3FvcF9uZXdfdHlwZXNjcmlwdADKARN3ZG9wX25ld190eXBlc2NyaXB0AMoBE3dxY21fbmV3X3R5cGVzY3JpcHQAygETd2Rkdl9uZXdfdHlwZXNjcmlwdADKAQ53cWNtX2Zyb21fYXJncwA7CndxZHZfaW1tMDYANgp3cW1sX2ltbTA2ADYKd2RtbF9pbW0wNgA2Cndxb3BfaW1tMDYANgp3ZG9wX2ltbTA2ADYKd3FjbV9pbW0wNgA2CndkZHZfaW1tMDYANgp3ZGNtX2ltbTA2ADYKam5lZl9pbW0wNgA2CWxkY19pbW0wNgA2DndxbWxfZnJvbV9hcmdzADwOd3FvcF9mcm9tX2FyZ3MAOwVnbV9yYQA1BWd0X3JjABoFZ3RfcmIAEgVndF9yYQA1BWxiX3JiABIFbGJfcmEANQVsdF9yYwAaBWx0X3JiABIFbHRfcmEANQhsd19pbW0xMgAJBWx3X3JiABIFbHdfcmEANQVvcl9yYwAaBW9yX3JiABIFb3JfcmEANQhzYl9pbW0xMgAJBXNiX3JiABIFc2JfcmEANQhzd19pbW0xMgAJBXN3X3JiABIFc3dfcmEANQV0cl9yYwAaBXRyX3JiABIFdHJfcmEANQVlcV9yYwAaBWVxX3JiABIFZXFfcmEANQZhbmRfcmMAGgZhbmRfcmIAEgZhbmRfcmEANQZiYWxfcmMAGgZiYWxfcmIAEgZiYWxfcmEANQZjY3BfcmMAGgZjY3BfcmIAEgZjY3BfcmEANQZkaXZfcmMAGgZkaXZfcmIAEgZkaXZfcmEANQZleHBfcmMAGgZleHBfcmIAEgZleHBfcmEANQhsYl9pbW0xMgAJBmd0Zl9yYgASBmd0Zl9yYQA1BmpuZV9yYwAaBmpuZV9yYgASBmpuZV9yYQA1BmxkY19yYwAaBmxkY19yYgASBmxkY19yYQA1BmxvZ19yZAA2BmxvZ19yYwAaBmxvZ19yYgASBmxvZ19yYQA1Bm1jbF9yYgASBm1jbF9yYQA1Bm1jcF9yYwAaBm1jcF9yYgASBm1jcF9yYQA1Bm1lcV9yZAA2Bm1lcV9yYwAaBm1lcV9yYgASBm1lcV9yYQA1Bm1vZF9yYwAaBm1vZF9yYgASBm1vZF9yYQA1Bm11bF9yYwAaBm11bF9yYgASBm11bF9yYQA1Bm5vdF9yYgASBm5vdF9yYQA1CW9yaV9pbW0xMgAJBm9yaV9yYgASBm9yaV9yYQA1BnNsbF9yYwAaBnNsbF9yYgASBnNsbF9yYQA1BnNtb19yZAA2BnNtb19yYwAaBnNtb19yYgASBnNtb19yYQA1BnNybF9yYwAaBnNybF9yYgASBnNybF9yYQA1BnNyd19yYwAaBnNyd19yYgASBnNyd19yYQA1BnN1Yl9yYwAaBnN1Yl9yYgASBnN1Yl9yYQA1BnN3d19yYwAaBnN3d19yYgASBnN3d19yYQA1BnRyb19yZAA2BnRyb19yYwAaBnRyb19yYgASBnRyb19yYQA1Bnhvcl9yYwAaBnhvcl9yYgASBnhvcl9yYQA1CWd0Zl9pbW0xMgAJB2FkZGlfcmIAEgdhZGRpX3JhADUKYW5kaV9pbW0xMgAJB2FuZGlfcmIAEgdhbmRpX3JhADUHYmhzaF9yYgASB2Joc2hfcmEANQZjY3BfcmQANgdibGRkX3JjABoHYmxkZF9yYgASB2JsZGRfcmEANQdic2l6X3JiABIHYnNpel9yYQA1B2J1cm5fcmIAEgdidXJuX3JhADUHY2FsbF9yZAA2B2NhbGxfcmMAGgdjYWxsX3JiABIHY2FsbF9yYQA1B2Nyb29fcmIAEgdjcm9vX3JhADUHY3Npel9yYgASB2NzaXpfcmEANQpkaXZpX2ltbTEyAAkHZGl2aV9yYgASB2RpdmlfcmEANQdlY2FsX3JkADYHZWNhbF9yYwAaB2VjYWxfcmIAEgdlY2FsX3JhADUHZWNrMV9yYwAaB2VjazFfcmIAEgdlY2sxX3JhADUHZWNyMV9yYwAaB2VjcjFfcmIAEgdlY3IxX3JhADUHZWQxOV9yZAA2B2VkMTlfcmMAGgdlZDE5X3JiABIHZWQxOV9yYQA1CmV4cGlfaW1tMTIACQdleHBpX3JiABIHZXhwaV9yYQA1CmptcGJfaW1tMTgADQdqbXBiX3JhADUKam1wZl9pbW0xOAANB2ptcGZfcmEANQdqbmViX3JjABoHam5lYl9yYgASB2puZWJfcmEANQdqbmVmX3JjABoHam5lZl9yYgASB2puZWZfcmEANQpqbmVpX2ltbTEyAAkHam5laV9yYgASB2puZWlfcmEANQpqbnpiX2ltbTEyAAkHam56Yl9yYgASB2puemJfcmEANQpqbnpmX2ltbTEyAAkHam56Zl9yYgASB2puemZfcmEANQpqbnppX2ltbTE4AA0Ham56aV9yYQA1B2syNTZfcmMAGgdrMjU2X3JiABIHazI1Nl9yYQA1B2xvZ2RfcmQANgdsb2dkX3JjABoHbG9nZF9yYgASB2xvZ2RfcmEANQptY2xpX2ltbTE4AA0HbWNsaV9yYQA1Cm1jcGlfaW1tMTIACQdtY3BpX3JiABIHbWNwaV9yYQA1B21pbnRfcmIAEgdtaW50X3JhADUHbWxkdl9yZAA2B21sZHZfcmMAGgdtbGR2X3JiABIHbWxkdl9yYQA1B21sb2dfcmMAGgdtbG9nX3JiABIHbWxvZ19yYQA1Cm1vZGlfaW1tMTIACQdtb2RpX3JiABIHbW9kaV9yYQA1B21vdmVfcmIAEgdtb3ZlX3JhADUKbW92aV9pbW0xOAANB21vdmlfcmEANQdtcm9vX3JjABoHbXJvb19yYgASB21yb29fcmEANQptdWxpX2ltbTEyAAkHbXVsaV9yYgASB211bGlfcmEANQdyZXRkX3JiABIHcmV0ZF9yYQA1B3MyNTZfcmMAGgdzMjU2X3JiABIHczI1Nl9yYQA1B3Njd3FfcmMAGgdzY3dxX3JiABIHc2N3cV9yYQA1CnNsbGlfaW1tMTIACQdzbGxpX3JiABIHc2xsaV9yYQA1CnNybGlfaW1tMTIACQdzcmxpX3JiABIHc3JsaV9yYQA1B3Nyd3FfcmQANgdzcndxX3JjABoHc3J3cV9yYgASB3Nyd3FfcmEANQpzdWJpX2ltbTEyAAkHc3ViaV9yYgASB3N1YmlfcmEANQdzd3dxX3JkADYHc3d3cV9yYwAaB3N3d3FfcmIAEgdzd3dxX3JhADUHdGltZV9yYgASB3RpbWVfcmEANQd3ZGFtX3JkADYHd2RhbV9yYwAaB3dkYW1fcmIAEgd3ZGFtX3JhADUHd2RjbV9yYwAaB3dkY21fcmIAEgd3ZGNtX3JhADUHd2Rkdl9yYwAaB3dkZHZfcmIAEgd3ZGR2X3JhADUHd2RtZF9yZAA2B3dkbWRfcmMAGgd3ZG1kX3JiABIHd2RtZF9yYQA1B3dkbWxfcmMAGgd3ZG1sX3JiABIHd2RtbF9yYQA1B3dkbW1fcmQANgd3ZG1tX3JjABoHd2RtbV9yYgASB3dkbW1fcmEANQd3ZG9wX3JjABoHd2RvcF9yYgASB3dkb3BfcmEANQd3cWFtX3JkADYHd3FhbV9yYwAaB3dxYW1fcmIAEgd3cWFtX3JhADUHd3FjbV9yYwAaB3dxY21fcmIAEgd3cWNtX3JhADUHd3Fkdl9yYwAaB3dxZHZfcmIAEgd3cWR2X3JhADUHd3FtZF9yZAA2B3dxbWRfcmMAGgd3cW1kX3JiABIHd3FtZF9yYQA1B3dxbWxfcmMAGgd3cW1sX3JiABIHd3FtbF9yYQA1B3dxbW1fcmQANgd3cW1tX3JjABoHd3FtbV9y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C0HggsAAQRkQ2AEACykBAX9BEEEEEMYBIgEgADoADCABQQA2AgggAUKBgICAEDcCACABQQhqCykBAX9BEEEEEMYBIgEgADYCDCABQQA2AgggAUKBgICAEDcCACABQQhqCyIAIAIQAiECIAAQxwEgARDHASACEEdBCHRBygByENEBEGgLDwAgACABIAIgA0ESEPEBCw8AIAAgASACIANBGBDxAQsPACAAIAEgAiADQRwQ8QELDwAgACABIAIgA0EdEPEBCw8AIAAgASACIANBIRDyAQsPACAAIAEgAiADQSIQ8QELDwAgACABIAIgA0EjEPEBCw8AIAAgASACIANBKBDxAQsPACAAIAEgAiADQSoQ8QELDwAgACABIAIgA0EsEPEBCw8AIAAgASACIANBLxDxAQsPACAAIAEgAiADQTgQ8QELEAAgACABIAIgA0HTABDyAQsQACAAIAEgAiADQdQAEPIBCxAAIAAgASACIANB3gAQ8gELEAAgACABIAIgA0HfABDyAQsQACAAIAEgAiADQeAAEPIBCxAAIAAgASACIANB4QAQ8gELEAAgACABIAIgA0HiABDyAQsQACAAIAEgAiADQeMAEPIBCxAAIAAgASACIANB5AAQ8gELEAAgACABIAIgA0HlABDyAQsQACAAIAEgAiADQeYAEPEBCxAAIAAgASACIANB5wAQ8QELEAAgACABIAIgA0HoABDxAQsQACAAIAEgAiADQekAEPEBCxAAIAAgASACIANB6gAQ8QELEAAgACABIAIgA0HrABDxAQsQACAAIAEgAiADQewAEPEBCxAAIAAgASACIANB7gAQ8QELHgAgARBmIQEgABDHASABEMQBQQh0QcwAchDRARBoCxkAIAAgASACQSBBACAEG0EQQQAgAxtyECELDQAgACABIAJBARDzAQsNACAAIAEgAkECEPMBCw0AIAAgASACQQMQ8wELDQAgACABIAJBBBDzAQsNACAAIAEgAkEFEPMBCw0AIAAgASACQQYQ8wELDQAgACABIAJBBxDzAQsNACAAIAEgAkEIEPMBCw0AIAAgASACQQkQ8wELDQAgACABIAJBCxDzAQsNACAAIAEgAkENEPMBCw0AIAAgASACQQ4Q8wELDQAgACABIAJBDxDzAQsNACAAIAEgAkEQEPMBCw0AIAAgASACQREQ8wELDQAg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bmdlIGZvciAxOC1iaXQgaW1tZWRpYXRlAEgAEAAHAAAA2AAQACMAAAAiABAAEwAAALoDAAAcAAAAYCBvdXQgb2YgcmFuZ2UgZm9yIDI0LWJpdCBpbW1lZGlhdGUASAAQAAcAAAAcARAAIwAAACIAEAATAAAAvwMAABwAAABpbnZhbGlkIGVudW0gdmFsdWUgcGFzc2VkYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2VkEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAJAAAACRAAAAkgAAAJMAAACUAAAAlQAAAJYAAACXAAAAmAAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAAsAAAALoAAAC7AAAAAQAAAAAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAAUAAAAAAAAAAQAAAAYAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OS9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjYvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZACABBAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAgAQQACkAAACuBAAADQAAAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMoBRAAHAAAAIsCAAAeAAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAA7CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yMS4zDHdhc20tYmluZGdlbgYwLjIuOTM=", imports);
28662
28662
  }
28663
28663
  async function initWasm2() {
28664
28664
  return await __wbg_init(wasm());
@@ -28792,7 +28792,7 @@ spurious results.`);
28792
28792
  exports.XOR = XOR;
28793
28793
  exports.XORI = XORI;
28794
28794
  exports.add = add;
28795
- exports.addi = addi2;
28795
+ exports.addi = addi3;
28796
28796
  exports.aloc = aloc;
28797
28797
  exports.and = and;
28798
28798
  exports.andi = andi;
@@ -28800,7 +28800,7 @@ spurious results.`);
28800
28800
  exports.bhei = bhei;
28801
28801
  exports.bhsh = bhsh;
28802
28802
  exports.bldd = bldd;
28803
- exports.bsiz = bsiz;
28803
+ exports.bsiz = bsiz2;
28804
28804
  exports.burn = burn;
28805
28805
  exports.call = call;
28806
28806
  exports.cb = cb;
@@ -28812,7 +28812,7 @@ spurious results.`);
28812
28812
  exports.croo = croo;
28813
28813
  exports.csiz = csiz;
28814
28814
  exports.div = div;
28815
- exports.divi = divi;
28815
+ exports.divi = divi2;
28816
28816
  exports.ecal = ecal;
28817
28817
  exports.eck1 = eck1;
28818
28818
  exports.ecr1 = ecr1;
@@ -28829,7 +28829,7 @@ spurious results.`);
28829
28829
  exports.initSync = initSync;
28830
28830
  exports.initWasm = initWasm2;
28831
28831
  exports.ji = ji;
28832
- exports.jmp = jmp;
28832
+ exports.jmp = jmp2;
28833
28833
  exports.jmpb = jmpb;
28834
28834
  exports.jmpf = jmpf;
28835
28835
  exports.jne = jne;
@@ -28841,11 +28841,11 @@ spurious results.`);
28841
28841
  exports.jnzi = jnzi;
28842
28842
  exports.k256 = k256;
28843
28843
  exports.lb = lb;
28844
- exports.ldc = ldc;
28844
+ exports.ldc = ldc2;
28845
28845
  exports.log = log;
28846
28846
  exports.logd = logd;
28847
28847
  exports.lt = lt;
28848
- exports.lw = lw2;
28848
+ exports.lw = lw3;
28849
28849
  exports.mcl = mcl;
28850
28850
  exports.mcli = mcli;
28851
28851
  exports.mcp = mcp;
@@ -28856,7 +28856,7 @@ spurious results.`);
28856
28856
  exports.mlog = mlog;
28857
28857
  exports.mod_ = mod_;
28858
28858
  exports.modi = modi;
28859
- exports.move_ = move_;
28859
+ exports.move_ = move_2;
28860
28860
  exports.movi = movi;
28861
28861
  exports.mroo = mroo;
28862
28862
  exports.mul = mul;
@@ -28882,7 +28882,7 @@ spurious results.`);
28882
28882
  exports.srli = srli;
28883
28883
  exports.srw = srw;
28884
28884
  exports.srwq = srwq;
28885
- exports.sub = sub;
28885
+ exports.sub = sub2;
28886
28886
  exports.subi = subi;
28887
28887
  exports.sw = sw;
28888
28888
  exports.sww = sww;
@@ -28920,9 +28920,9 @@ spurious results.`);
28920
28920
  // ../versions/dist/index.mjs
28921
28921
  function getBuiltinVersions() {
28922
28922
  return {
28923
- FORC: "0.65.2",
28924
- FUEL_CORE: "0.39.0",
28925
- FUELS: "0.96.1"
28923
+ FORC: "0.66.4",
28924
+ FUEL_CORE: "0.40.0",
28925
+ FUELS: "0.97.0"
28926
28926
  };
28927
28927
  }
28928
28928
  function parseVersion(version) {
@@ -29045,6 +29045,7 @@ This unreleased fuel-core build may include features and updates not yet support
29045
29045
  ErrorCode2["MAX_INPUTS_EXCEEDED"] = "max-inputs-exceeded";
29046
29046
  ErrorCode2["FUNDS_TOO_LOW"] = "funds-too-low";
29047
29047
  ErrorCode2["MAX_OUTPUTS_EXCEEDED"] = "max-outputs-exceeded";
29048
+ ErrorCode2["MAX_COINS_REACHED"] = "max-coins-reached";
29048
29049
  ErrorCode2["INVALID_RECEIPT_TYPE"] = "invalid-receipt-type";
29049
29050
  ErrorCode2["INVALID_WORD_LIST"] = "invalid-word-list";
29050
29051
  ErrorCode2["INVALID_MNEMONIC"] = "invalid-mnemonic";
@@ -30762,6 +30763,7 @@ If you are attempting to transform a hex value, please make sure it is being pas
30762
30763
  var BYTES_32 = 32;
30763
30764
  var UTXO_ID_LEN = BYTES_32 + 2;
30764
30765
  var ASSET_ID_LEN = BYTES_32;
30766
+ var CONTRACT_ID_LEN = BYTES_32;
30765
30767
  var ADDRESS_LEN = BYTES_32;
30766
30768
  var NONCE_LEN = BYTES_32;
30767
30769
  var TX_LEN = WORD_SIZE * 4;
@@ -37156,9 +37158,6 @@ spurious results.`);
37156
37158
  var SuccessStatusFragmentDoc = lib_default2`
37157
37159
  fragment SuccessStatusFragment on SuccessStatus {
37158
37160
  type: __typename
37159
- block {
37160
- id
37161
- }
37162
37161
  time
37163
37162
  programState {
37164
37163
  returnType
@@ -37171,6 +37170,14 @@ spurious results.`);
37171
37170
  totalFee
37172
37171
  }
37173
37172
  ${ReceiptFragmentDoc}`;
37173
+ var SuccessStatusWithBlockIdFragmentDoc = lib_default2`
37174
+ fragment SuccessStatusWithBlockIdFragment on SuccessStatus {
37175
+ ...SuccessStatusFragment
37176
+ block {
37177
+ id
37178
+ }
37179
+ }
37180
+ ${SuccessStatusFragmentDoc}`;
37174
37181
  var MalleableTransactionFieldsFragmentDoc = lib_default2`
37175
37182
  fragment malleableTransactionFieldsFragment on Transaction {
37176
37183
  receiptsRoot
@@ -37215,9 +37222,6 @@ spurious results.`);
37215
37222
  var FailureStatusFragmentDoc = lib_default2`
37216
37223
  fragment FailureStatusFragment on FailureStatus {
37217
37224
  type: __typename
37218
- block {
37219
- id
37220
- }
37221
37225
  totalGas
37222
37226
  totalFee
37223
37227
  time
@@ -37227,6 +37231,14 @@ spurious results.`);
37227
37231
  }
37228
37232
  }
37229
37233
  ${ReceiptFragmentDoc}`;
37234
+ var FailureStatusWithBlockIdFragmentDoc = lib_default2`
37235
+ fragment FailureStatusWithBlockIdFragment on FailureStatus {
37236
+ ...FailureStatusFragment
37237
+ block {
37238
+ id
37239
+ }
37240
+ }
37241
+ ${FailureStatusFragmentDoc}`;
37230
37242
  var SqueezedOutStatusFragmentDoc = lib_default2`
37231
37243
  fragment SqueezedOutStatusFragment on SqueezedOutStatus {
37232
37244
  type: __typename
@@ -37239,13 +37251,13 @@ spurious results.`);
37239
37251
  ...SubmittedStatusFragment
37240
37252
  }
37241
37253
  ... on SuccessStatus {
37242
- ...SuccessStatusFragment
37254
+ ...SuccessStatusWithBlockIdFragment
37243
37255
  transaction {
37244
37256
  ...malleableTransactionFieldsFragment
37245
37257
  }
37246
37258
  }
37247
37259
  ... on FailureStatus {
37248
- ...FailureStatusFragment
37260
+ ...FailureStatusWithBlockIdFragment
37249
37261
  transaction {
37250
37262
  ...malleableTransactionFieldsFragment
37251
37263
  }
@@ -37255,9 +37267,9 @@ spurious results.`);
37255
37267
  }
37256
37268
  }
37257
37269
  ${SubmittedStatusFragmentDoc}
37258
- ${SuccessStatusFragmentDoc}
37270
+ ${SuccessStatusWithBlockIdFragmentDoc}
37259
37271
  ${MalleableTransactionFieldsFragmentDoc}
37260
- ${FailureStatusFragmentDoc}
37272
+ ${FailureStatusWithBlockIdFragmentDoc}
37261
37273
  ${SqueezedOutStatusFragmentDoc}`;
37262
37274
  var TransactionStatusFragmentDoc = lib_default2`
37263
37275
  fragment transactionStatusFragment on TransactionStatus {
@@ -37287,6 +37299,12 @@ ${SqueezedOutStatusFragmentDoc}`;
37287
37299
  }
37288
37300
  }
37289
37301
  ${TransactionStatusFragmentDoc}`;
37302
+ var TransactionRawPayloadFragmentDoc = lib_default2`
37303
+ fragment transactionRawPayloadFragment on Transaction {
37304
+ id
37305
+ rawPayload
37306
+ }
37307
+ `;
37290
37308
  var InputEstimatePredicatesFragmentDoc = lib_default2`
37291
37309
  fragment inputEstimatePredicatesFragment on Input {
37292
37310
  ... on InputCoin {
@@ -37374,7 +37392,6 @@ ${ReceiptFragmentDoc}`;
37374
37392
  fragment coinFragment on Coin {
37375
37393
  type: __typename
37376
37394
  utxoId
37377
- owner
37378
37395
  amount
37379
37396
  assetId
37380
37397
  blockCreated
@@ -37398,10 +37415,15 @@ ${ReceiptFragmentDoc}`;
37398
37415
  sender
37399
37416
  recipient
37400
37417
  data
37401
- nonce
37402
37418
  daHeight
37403
37419
  }
37404
37420
  `;
37421
+ var GetMessageFragmentDoc = lib_default2`
37422
+ fragment getMessageFragment on Message {
37423
+ ...messageFragment
37424
+ nonce
37425
+ }
37426
+ ${MessageFragmentDoc}`;
37405
37427
  var MessageProofFragmentDoc = lib_default2`
37406
37428
  fragment messageProofFragment on MessageProof {
37407
37429
  messageProof {
@@ -37446,7 +37468,6 @@ ${ReceiptFragmentDoc}`;
37446
37468
  }
37447
37469
  sender
37448
37470
  recipient
37449
- nonce
37450
37471
  amount
37451
37472
  data
37452
37473
  }
@@ -37593,12 +37614,6 @@ ${GasCostsFragmentDoc}`;
37593
37614
  blockHeight
37594
37615
  failure
37595
37616
  }
37596
- }
37597
- `;
37598
- var TransactionRawPayloadFragmentDoc = lib_default2`
37599
- fragment transactionRawPayload on Transaction {
37600
- id
37601
- rawPayload
37602
37617
  }
37603
37618
  `;
37604
37619
  var GetVersionDocument = lib_default2`
@@ -37643,16 +37658,34 @@ ${NodeInfoFragmentDoc}`;
37643
37658
  var GetTransactionWithReceiptsDocument = lib_default2`
37644
37659
  query getTransactionWithReceipts($transactionId: TransactionId!) {
37645
37660
  transaction(id: $transactionId) {
37646
- ...transactionFragment
37661
+ id
37662
+ rawPayload
37663
+ status {
37664
+ ... on SubmittedStatus {
37665
+ ...SubmittedStatusFragment
37666
+ }
37667
+ ... on SuccessStatus {
37668
+ ...SuccessStatusWithBlockIdFragment
37669
+ }
37670
+ ... on FailureStatus {
37671
+ ...FailureStatusWithBlockIdFragment
37672
+ }
37673
+ ... on SqueezedOutStatus {
37674
+ ...SqueezedOutStatusFragment
37675
+ }
37676
+ }
37647
37677
  }
37648
37678
  }
37649
- ${TransactionFragmentDoc}`;
37679
+ ${SubmittedStatusFragmentDoc}
37680
+ ${SuccessStatusWithBlockIdFragmentDoc}
37681
+ ${FailureStatusWithBlockIdFragmentDoc}
37682
+ ${SqueezedOutStatusFragmentDoc}`;
37650
37683
  var GetTransactionsDocument = lib_default2`
37651
37684
  query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
37652
37685
  transactions(after: $after, before: $before, first: $first, last: $last) {
37653
37686
  edges {
37654
37687
  node {
37655
- ...transactionFragment
37688
+ rawPayload
37656
37689
  }
37657
37690
  }
37658
37691
  pageInfo {
@@ -37660,8 +37693,7 @@ ${NodeInfoFragmentDoc}`;
37660
37693
  }
37661
37694
  }
37662
37695
  }
37663
- ${TransactionFragmentDoc}
37664
- ${PageInfoFragmentDoc}`;
37696
+ ${PageInfoFragmentDoc}`;
37665
37697
  var GetTransactionsByOwnerDocument = lib_default2`
37666
37698
  query getTransactionsByOwner($owner: Address!, $after: String, $before: String, $first: Int, $last: Int) {
37667
37699
  transactionsByOwner(
@@ -37720,7 +37752,7 @@ ${TransactionFragmentDoc}`;
37720
37752
  block(id: $blockId, height: $blockHeight) {
37721
37753
  ...blockFragment
37722
37754
  transactions {
37723
- ...transactionRawPayload
37755
+ ...transactionRawPayloadFragment
37724
37756
  }
37725
37757
  }
37726
37758
  }
@@ -37745,6 +37777,7 @@ ${BlockFragmentDoc}`;
37745
37777
  query getCoin($coinId: UtxoId!) {
37746
37778
  coin(utxoId: $coinId) {
37747
37779
  ...coinFragment
37780
+ owner
37748
37781
  }
37749
37782
  }
37750
37783
  ${CoinFragmentDoc}`;
@@ -37853,13 +37886,13 @@ ${MessageCoinFragmentDoc}`;
37853
37886
  }
37854
37887
  edges {
37855
37888
  node {
37856
- ...messageFragment
37889
+ ...getMessageFragment
37857
37890
  }
37858
37891
  }
37859
37892
  }
37860
37893
  }
37861
37894
  ${PageInfoFragmentDoc}
37862
- ${MessageFragmentDoc}`;
37895
+ ${GetMessageFragmentDoc}`;
37863
37896
  var GetMessageProofDocument = lib_default2`
37864
37897
  query getMessageProof($transactionId: TransactionId!, $nonce: Nonce!, $commitBlockId: BlockId, $commitBlockHeight: U32) {
37865
37898
  messageProof(
@@ -38438,9 +38471,11 @@ ${MessageFragmentDoc}`;
38438
38471
  const { receiptType } = receipt;
38439
38472
  switch (receiptType) {
38440
38473
  case "CALL" /* Call */: {
38474
+ const id = hexOrZero(receipt.id || receipt.contractId);
38441
38475
  const callReceipt = {
38442
38476
  type: ReceiptType.Call,
38443
- from: hexOrZero(receipt.id || receipt.contractId),
38477
+ id,
38478
+ from: id,
38444
38479
  to: hexOrZero(receipt?.to),
38445
38480
  amount: bn(receipt.amount),
38446
38481
  assetId: hexOrZero(receipt.assetId),
@@ -38497,24 +38532,36 @@ ${MessageFragmentDoc}`;
38497
38532
  return revertReceipt;
38498
38533
  }
38499
38534
  case "LOG" /* Log */: {
38535
+ const ra = bn(receipt.ra);
38536
+ const rb = bn(receipt.rb);
38537
+ const rc = bn(receipt.rc);
38538
+ const rd = bn(receipt.rd);
38500
38539
  const logReceipt = {
38501
38540
  type: ReceiptType.Log,
38502
38541
  id: hexOrZero(receipt.id || receipt.contractId),
38503
- val0: bn(receipt.ra),
38504
- val1: bn(receipt.rb),
38505
- val2: bn(receipt.rc),
38506
- val3: bn(receipt.rd),
38542
+ ra,
38543
+ rb,
38544
+ rc,
38545
+ rd,
38546
+ val0: ra,
38547
+ val1: rb,
38548
+ val2: rc,
38549
+ val3: rd,
38507
38550
  pc: bn(receipt.pc),
38508
38551
  is: bn(receipt.is)
38509
38552
  };
38510
38553
  return logReceipt;
38511
38554
  }
38512
38555
  case "LOG_DATA" /* LogData */: {
38556
+ const ra = bn(receipt.ra);
38557
+ const rb = bn(receipt.rb);
38513
38558
  const logDataReceipt = {
38514
38559
  type: ReceiptType.LogData,
38515
38560
  id: hexOrZero(receipt.id || receipt.contractId),
38516
- val0: bn(receipt.ra),
38517
- val1: bn(receipt.rb),
38561
+ ra,
38562
+ rb,
38563
+ val0: ra,
38564
+ val1: rb,
38518
38565
  ptr: bn(receipt.ptr),
38519
38566
  len: bn(receipt.len),
38520
38567
  digest: hexOrZero(receipt.digest),
@@ -38525,9 +38572,11 @@ ${MessageFragmentDoc}`;
38525
38572
  return logDataReceipt;
38526
38573
  }
38527
38574
  case "TRANSFER" /* Transfer */: {
38575
+ const id = hexOrZero(receipt.id || receipt.contractId);
38528
38576
  const transferReceipt = {
38529
38577
  type: ReceiptType.Transfer,
38530
- from: hexOrZero(receipt.id || receipt.contractId),
38578
+ id,
38579
+ from: id,
38531
38580
  to: hexOrZero(receipt.toAddress || receipt?.to),
38532
38581
  amount: bn(receipt.amount),
38533
38582
  assetId: hexOrZero(receipt.assetId),
@@ -38537,9 +38586,11 @@ ${MessageFragmentDoc}`;
38537
38586
  return transferReceipt;
38538
38587
  }
38539
38588
  case "TRANSFER_OUT" /* TransferOut */: {
38589
+ const id = hexOrZero(receipt.id || receipt.contractId);
38540
38590
  const transferOutReceipt = {
38541
38591
  type: ReceiptType.TransferOut,
38542
- from: hexOrZero(receipt.id || receipt.contractId),
38592
+ id,
38593
+ from: id,
38543
38594
  to: hexOrZero(receipt.toAddress || receipt.to),
38544
38595
  amount: bn(receipt.amount),
38545
38596
  assetId: hexOrZero(receipt.assetId),
@@ -39579,7 +39630,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
39579
39630
  type = TransactionType.Blob;
39580
39631
  /** Blob ID */
39581
39632
  blobId;
39582
- /** Witness index of contract bytecode to create */
39633
+ /** Witness index of the bytecode to create */
39583
39634
  witnessIndex;
39584
39635
  /**
39585
39636
  * Creates an instance `BlobTransactionRequest`.
@@ -40906,14 +40957,14 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
40906
40957
  switch (gqlTransactionStatus.type) {
40907
40958
  case "SuccessStatus":
40908
40959
  time = gqlTransactionStatus.time;
40909
- blockId = gqlTransactionStatus.block.id;
40960
+ blockId = gqlTransactionStatus.block?.id;
40910
40961
  isStatusSuccess = true;
40911
40962
  totalFee = bn(gqlTransactionStatus.totalFee);
40912
40963
  totalGas = bn(gqlTransactionStatus.totalGas);
40913
40964
  break;
40914
40965
  case "FailureStatus":
40915
40966
  time = gqlTransactionStatus.time;
40916
- blockId = gqlTransactionStatus.block.id;
40967
+ blockId = gqlTransactionStatus.block?.id;
40917
40968
  isStatusFailure = true;
40918
40969
  totalFee = bn(gqlTransactionStatus.totalFee);
40919
40970
  totalGas = bn(gqlTransactionStatus.totalGas);
@@ -41222,8 +41273,8 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
41222
41273
  const subscription = this.submitTxSubscription ?? await this.provider.operations.statusChange({
41223
41274
  transactionId: this.id
41224
41275
  });
41225
- for await (const sub of subscription) {
41226
- const statusChange = "statusChange" in sub ? sub.statusChange : sub.submitAndAwaitStatus;
41276
+ for await (const sub2 of subscription) {
41277
+ const statusChange = "statusChange" in sub2 ? sub2.statusChange : sub2.submitAndAwaitStatus;
41227
41278
  this.status = statusChange;
41228
41279
  if (statusChange.type === "SqueezedOutStatus") {
41229
41280
  this.unsetResourceCache();
@@ -41344,11 +41395,52 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
41344
41395
  {},
41345
41396
  rawError
41346
41397
  );
41398
+ case "max number of coins is reached while trying to fit the target" /* MAX_COINS_REACHED */:
41399
+ throw new FuelError(
41400
+ ErrorCode.MAX_COINS_REACHED,
41401
+ "The account retrieving coins has exceeded the maximum number of coins per asset. Please consider combining your coins into a single UTXO.",
41402
+ {},
41403
+ rawError
41404
+ );
41347
41405
  default:
41348
41406
  throw new FuelError(ErrorCode.INVALID_REQUEST, errorMessage);
41349
41407
  }
41350
41408
  };
41351
41409
 
41410
+ // src/providers/utils/validate-pagination-args.ts
41411
+ var validatePaginationArgs = (params) => {
41412
+ const { paginationLimit, inputArgs = {} } = params;
41413
+ const { first, last, after, before } = inputArgs;
41414
+ if (after && before) {
41415
+ throw new FuelError(
41416
+ ErrorCode.INVALID_INPUT_PARAMETERS,
41417
+ 'Pagination arguments "after" and "before" cannot be used together'
41418
+ );
41419
+ }
41420
+ if ((first || 0) > paginationLimit || (last || 0) > paginationLimit) {
41421
+ throw new FuelError(
41422
+ ErrorCode.INVALID_INPUT_PARAMETERS,
41423
+ `Pagination limit for this query cannot exceed ${paginationLimit} items`
41424
+ );
41425
+ }
41426
+ if (first && before) {
41427
+ throw new FuelError(
41428
+ ErrorCode.INVALID_INPUT_PARAMETERS,
41429
+ 'The use of pagination argument "first" with "before" is not supported'
41430
+ );
41431
+ }
41432
+ if (last && after) {
41433
+ throw new FuelError(
41434
+ ErrorCode.INVALID_INPUT_PARAMETERS,
41435
+ 'The use of pagination argument "last" with "after" is not supported'
41436
+ );
41437
+ }
41438
+ if (!first && !last) {
41439
+ inputArgs.first = paginationLimit;
41440
+ }
41441
+ return inputArgs;
41442
+ };
41443
+
41352
41444
  // src/providers/provider.ts
41353
41445
  var MAX_RETRIES = 10;
41354
41446
  var RESOURCES_PAGE_SIZE_LIMIT = 512;
@@ -42190,7 +42282,7 @@ Supported fuel-core version: ${supportedVersion}.`
42190
42282
  const {
42191
42283
  coins: { edges, pageInfo }
42192
42284
  } = await this.operations.getCoins({
42193
- ...this.validatePaginationArgs({
42285
+ ...validatePaginationArgs({
42194
42286
  paginationLimit: RESOURCES_PAGE_SIZE_LIMIT,
42195
42287
  inputArgs: paginationArgs
42196
42288
  }),
@@ -42200,7 +42292,7 @@ Supported fuel-core version: ${supportedVersion}.`
42200
42292
  id: node.utxoId,
42201
42293
  assetId: node.assetId,
42202
42294
  amount: bn(node.amount),
42203
- owner: Address.fromAddressOrString(node.owner),
42295
+ owner: ownerAddress,
42204
42296
  blockCreated: bn(node.blockCreated),
42205
42297
  txCreatedIdx: bn(node.txCreatedIdx)
42206
42298
  }));
@@ -42254,7 +42346,7 @@ Supported fuel-core version: ${supportedVersion}.`
42254
42346
  id: coin.utxoId,
42255
42347
  amount: bn(coin.amount),
42256
42348
  assetId: coin.assetId,
42257
- owner: Address.fromAddressOrString(coin.owner),
42349
+ owner: ownerAddress,
42258
42350
  blockCreated: bn(coin.blockCreated),
42259
42351
  txCreatedIdx: bn(coin.txCreatedIdx)
42260
42352
  };
@@ -42329,7 +42421,7 @@ Supported fuel-core version: ${supportedVersion}.`
42329
42421
  const {
42330
42422
  blocks: { edges, pageInfo }
42331
42423
  } = await this.operations.getBlocks({
42332
- ...this.validatePaginationArgs({
42424
+ ...validatePaginationArgs({
42333
42425
  paginationLimit: BLOCKS_PAGE_SIZE_LIMIT,
42334
42426
  inputArgs: params
42335
42427
  })
@@ -42424,7 +42516,7 @@ Supported fuel-core version: ${supportedVersion}.`
42424
42516
  const {
42425
42517
  transactions: { edges, pageInfo }
42426
42518
  } = await this.operations.getTransactions({
42427
- ...this.validatePaginationArgs({
42519
+ ...validatePaginationArgs({
42428
42520
  inputArgs: paginationArgs,
42429
42521
  paginationLimit: TRANSACTIONS_PAGE_SIZE_LIMIT
42430
42522
  })
@@ -42519,7 +42611,7 @@ Supported fuel-core version: ${supportedVersion}.`
42519
42611
  const {
42520
42612
  messages: { edges, pageInfo }
42521
42613
  } = await this.operations.getMessages({
42522
- ...this.validatePaginationArgs({
42614
+ ...validatePaginationArgs({
42523
42615
  inputArgs: paginationArgs,
42524
42616
  paginationLimit: RESOURCES_PAGE_SIZE_LIMIT
42525
42617
  }),
@@ -42743,13 +42835,13 @@ Supported fuel-core version: ${supportedVersion}.`
42743
42835
  messageId: InputMessageCoder.getMessageId({
42744
42836
  sender: rawMessage.sender,
42745
42837
  recipient: rawMessage.recipient,
42746
- nonce: rawMessage.nonce,
42838
+ nonce,
42747
42839
  amount: bn(rawMessage.amount),
42748
42840
  data: rawMessage.data
42749
42841
  }),
42750
42842
  sender: Address.fromAddressOrString(rawMessage.sender),
42751
42843
  recipient: Address.fromAddressOrString(rawMessage.recipient),
42752
- nonce: rawMessage.nonce,
42844
+ nonce,
42753
42845
  amount: bn(rawMessage.amount),
42754
42846
  data: InputMessageCoder.decodeData(rawMessage.data),
42755
42847
  daHeight: bn(rawMessage.daHeight)
@@ -42771,41 +42863,6 @@ Supported fuel-core version: ${supportedVersion}.`
42771
42863
  }
42772
42864
  return relayedTransactionStatus;
42773
42865
  }
42774
- /**
42775
- * @hidden
42776
- */
42777
- validatePaginationArgs(params) {
42778
- const { paginationLimit, inputArgs = {} } = params;
42779
- const { first, last, after, before } = inputArgs;
42780
- if (after && before) {
42781
- throw new FuelError(
42782
- ErrorCode.INVALID_INPUT_PARAMETERS,
42783
- 'Pagination arguments "after" and "before" cannot be used together'
42784
- );
42785
- }
42786
- if ((first || 0) > paginationLimit || (last || 0) > paginationLimit) {
42787
- throw new FuelError(
42788
- ErrorCode.INVALID_INPUT_PARAMETERS,
42789
- `Pagination limit for this query cannot exceed ${paginationLimit} items`
42790
- );
42791
- }
42792
- if (first && before) {
42793
- throw new FuelError(
42794
- ErrorCode.INVALID_INPUT_PARAMETERS,
42795
- 'The use of pagination argument "first" with "before" is not supported'
42796
- );
42797
- }
42798
- if (last && after) {
42799
- throw new FuelError(
42800
- ErrorCode.INVALID_INPUT_PARAMETERS,
42801
- 'The use of pagination argument "last" with "after" is not supported'
42802
- );
42803
- }
42804
- if (!first && !last) {
42805
- inputArgs.first = paginationLimit;
42806
- }
42807
- return inputArgs;
42808
- }
42809
42866
  /**
42810
42867
  * @hidden
42811
42868
  */
@@ -42926,7 +42983,15 @@ Supported fuel-core version: ${supportedVersion}.`
42926
42983
  }
42927
42984
  async function getTransactionsSummaries(params) {
42928
42985
  const { filters, provider, abiMap } = params;
42929
- const { transactionsByOwner } = await provider.operations.getTransactionsByOwner(filters);
42986
+ const { owner, ...inputArgs } = filters;
42987
+ const validPaginationParams = validatePaginationArgs({
42988
+ inputArgs,
42989
+ paginationLimit: TRANSACTIONS_PAGE_SIZE_LIMIT
42990
+ });
42991
+ const { transactionsByOwner } = await provider.operations.getTransactionsByOwner({
42992
+ ...validPaginationParams,
42993
+ owner
42994
+ });
42930
42995
  const { edges, pageInfo } = transactionsByOwner;
42931
42996
  const {
42932
42997
  consensusParameters: {
@@ -43646,34 +43711,42 @@ Supported fuel-core version: ${supportedVersion}.`
43646
43711
 
43647
43712
  // src/utils/formatTransferToContractScriptData.ts
43648
43713
  var asm = __toESM(require_node());
43649
- var formatTransferToContractScriptData = (params) => {
43650
- const { assetId, amountToTransfer, hexlifiedContractId } = params;
43714
+ var formatTransferToContractScriptData = (transferParams) => {
43651
43715
  const numberCoder = new BigNumberCoder("u64");
43652
- const encoded = numberCoder.encode(new BN(amountToTransfer).toNumber());
43653
- const scriptData = Uint8Array.from([
43654
- ...arrayify(hexlifiedContractId),
43655
- ...encoded,
43656
- ...arrayify(assetId)
43657
- ]);
43658
- return scriptData;
43716
+ return transferParams.reduce((acc, transferParam) => {
43717
+ const { assetId, amount, contractId } = transferParam;
43718
+ const encoded = numberCoder.encode(new BN(amount).toNumber());
43719
+ const scriptData = concat([
43720
+ Address.fromAddressOrString(contractId).toBytes(),
43721
+ encoded,
43722
+ arrayify(assetId)
43723
+ ]);
43724
+ return concat([acc, scriptData]);
43725
+ }, new Uint8Array());
43659
43726
  };
43660
- var assembleTransferToContractScript = async (params) => {
43661
- const scriptData = formatTransferToContractScriptData(params);
43727
+ var assembleTransferToContractScript = async (transferParams) => {
43728
+ const scriptData = formatTransferToContractScriptData(transferParams);
43662
43729
  await asm.initWasm();
43663
- const gtf2 = asm.gtf(16, 0, asm.GTFArgs.ScriptData);
43664
- const addi2 = asm.addi(17, 16, 32);
43665
- const lw2 = asm.lw(18, 17, 0);
43666
- const addi22 = asm.addi(19, 17, 8);
43667
- const tr2 = asm.tr(16, 18, 19);
43668
- const ret2 = asm.ret(1);
43669
- const script = Uint8Array.from([
43670
- ...gtf2.to_bytes(),
43671
- ...addi2.to_bytes(),
43672
- ...lw2.to_bytes(),
43673
- ...addi22.to_bytes(),
43674
- ...tr2.to_bytes(),
43675
- ...ret2.to_bytes()
43676
- ]);
43730
+ let script = new Uint8Array();
43731
+ transferParams.forEach((_, i) => {
43732
+ const offset = (CONTRACT_ID_LEN + WORD_SIZE + ASSET_ID_LEN) * i;
43733
+ script = concat([
43734
+ script,
43735
+ // Load ScriptData into register 0x10.
43736
+ asm.gtf(16, 0, asm.GTFArgs.ScriptData).to_bytes(),
43737
+ // Add the offset to 0x10 so it will point to the current contract ID, store in 0x11.
43738
+ asm.addi(17, 16, offset).to_bytes(),
43739
+ // Add CONTRACT_ID_LEN to 0x11 to point to the amount in the ScriptData, store in 0x12.
43740
+ asm.addi(18, 17, CONTRACT_ID_LEN).to_bytes(),
43741
+ // Load word to the amount at 0x12 into register 0x13.
43742
+ asm.lw(19, 18, 0).to_bytes(),
43743
+ // Add WORD_SIZE to 0x12 to point to the asset ID in the ScriptData, store in 0x14.
43744
+ asm.addi(20, 18, WORD_SIZE).to_bytes(),
43745
+ // Perform the transfer using contract ID in 0x11, amount in 0x13, and asset ID in 0x14.
43746
+ asm.tr(17, 19, 20).to_bytes()
43747
+ ]);
43748
+ });
43749
+ script = concat([script, asm.ret(1).to_bytes()]);
43677
43750
  return { script, scriptData };
43678
43751
  };
43679
43752
 
@@ -43971,35 +44044,35 @@ Supported fuel-core version: ${supportedVersion}.`
43971
44044
  * @returns A promise that resolves to the transaction response.
43972
44045
  */
43973
44046
  async transferToContract(contractId, amount, assetId, txParams = {}) {
43974
- if (bn(amount).lte(0)) {
43975
- throw new FuelError(
43976
- ErrorCode.INVALID_TRANSFER_AMOUNT,
43977
- "Transfer amount must be a positive number."
43978
- );
43979
- }
43980
- const contractAddress = Address.fromAddressOrString(contractId);
43981
- const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
43982
- const { script, scriptData } = await assembleTransferToContractScript({
43983
- hexlifiedContractId: contractAddress.toB256(),
43984
- amountToTransfer: bn(amount),
43985
- assetId: assetIdToTransfer
43986
- });
44047
+ return this.batchTransferToContracts([{ amount, assetId, contractId }], txParams);
44048
+ }
44049
+ async batchTransferToContracts(contractTransferParams, txParams = {}) {
43987
44050
  let request = new ScriptTransactionRequest({
43988
- ...txParams,
43989
- script,
43990
- scriptData
43991
- });
43992
- request.addContractInputAndOutput(contractAddress);
43993
- const txCost = await this.getTransactionCost(request, {
43994
- quantities: [{ amount: bn(amount), assetId: String(assetIdToTransfer) }]
44051
+ ...txParams
43995
44052
  });
43996
- request = this.validateGasLimitAndMaxFee({
43997
- transactionRequest: request,
43998
- gasUsed: txCost.gasUsed,
43999
- maxFee: txCost.maxFee,
44000
- txParams
44053
+ const quantities = [];
44054
+ const transferParams = contractTransferParams.map((transferParam) => {
44055
+ const amount = bn(transferParam.amount);
44056
+ const contractAddress = Address.fromAddressOrString(transferParam.contractId);
44057
+ const assetId = transferParam.assetId ? hexlify(transferParam.assetId) : this.provider.getBaseAssetId();
44058
+ if (amount.lte(0)) {
44059
+ throw new FuelError(
44060
+ ErrorCode.INVALID_TRANSFER_AMOUNT,
44061
+ "Transfer amount must be a positive number."
44062
+ );
44063
+ }
44064
+ request.addContractInputAndOutput(contractAddress);
44065
+ quantities.push({ amount, assetId });
44066
+ return {
44067
+ amount,
44068
+ contractId: contractAddress.toB256(),
44069
+ assetId
44070
+ };
44001
44071
  });
44002
- await this.fund(request, txCost);
44072
+ const { script, scriptData } = await assembleTransferToContractScript(transferParams);
44073
+ request.script = script;
44074
+ request.scriptData = scriptData;
44075
+ request = await this.estimateAndFundTransaction(request, txParams, { quantities });
44003
44076
  return this.sendTransaction(request);
44004
44077
  }
44005
44078
  /**
@@ -44178,9 +44251,9 @@ Supported fuel-core version: ${supportedVersion}.`
44178
44251
  }
44179
44252
  }
44180
44253
  /** @hidden * */
44181
- async estimateAndFundTransaction(transactionRequest, txParams) {
44254
+ async estimateAndFundTransaction(transactionRequest, txParams, costParams) {
44182
44255
  let request = transactionRequest;
44183
- const txCost = await this.getTransactionCost(request);
44256
+ const txCost = await this.getTransactionCost(request, costParams);
44184
44257
  request = this.validateGasLimitAndMaxFee({
44185
44258
  transactionRequest: request,
44186
44259
  gasUsed: txCost.gasUsed,
@@ -49005,6 +49078,208 @@ Supported fuel-core version: ${supportedVersion}.`
49005
49078
  var StorageAbstract = class {
49006
49079
  };
49007
49080
 
49081
+ // src/utils/predicate-script-loader-instructions.ts
49082
+ var asm2 = __toESM(require_node());
49083
+ var BLOB_ID_SIZE = 32;
49084
+ var REG_ADDRESS_OF_DATA_AFTER_CODE = 16;
49085
+ var REG_START_OF_LOADED_CODE = 17;
49086
+ var REG_GENERAL_USE = 18;
49087
+ var WORD_SIZE2 = 8;
49088
+ function getDataOffset(binary) {
49089
+ const OFFSET_INDEX = 8;
49090
+ const dataView = new DataView(binary.buffer, OFFSET_INDEX, 8);
49091
+ const dataOffset = dataView.getBigUint64(0, false);
49092
+ return Number(dataOffset);
49093
+ }
49094
+ function getPredicateScriptLoaderInstructions(originalBinary, blobId) {
49095
+ const { RegId, Instruction } = asm2;
49096
+ const REG_PC = RegId.pc().to_u8();
49097
+ const REG_SP = RegId.sp().to_u8();
49098
+ const REG_IS = RegId.is().to_u8();
49099
+ const getInstructions = (numOfInstructions2) => [
49100
+ // 1. Load the blob content into memory
49101
+ // Find the start of the hardcoded blob ID, which is located after the loader code ends.
49102
+ asm2.move_(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_PC),
49103
+ // hold the address of the blob ID.
49104
+ asm2.addi(
49105
+ REG_ADDRESS_OF_DATA_AFTER_CODE,
49106
+ REG_ADDRESS_OF_DATA_AFTER_CODE,
49107
+ numOfInstructions2 * Instruction.size()
49108
+ ),
49109
+ // The code is going to be loaded from the current value of SP onwards, save
49110
+ // the location into REG_START_OF_LOADED_CODE so we can jump into it at the end.
49111
+ asm2.move_(REG_START_OF_LOADED_CODE, REG_SP),
49112
+ // REG_GENERAL_USE to hold the size of the blob.
49113
+ asm2.bsiz(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE),
49114
+ // Push the blob contents onto the stack.
49115
+ asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 1),
49116
+ // Move on to the data section length
49117
+ asm2.addi(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_ADDRESS_OF_DATA_AFTER_CODE, BLOB_ID_SIZE),
49118
+ // load the size of the data section into REG_GENERAL_USE
49119
+ asm2.lw(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE, 0),
49120
+ // after we have read the length of the data section, we move the pointer to the actual
49121
+ // data by skipping WORD_SIZE bytes.
49122
+ asm2.addi(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_ADDRESS_OF_DATA_AFTER_CODE, WORD_SIZE2),
49123
+ // load the data section of the executable
49124
+ asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 2),
49125
+ // Jump into the memory where the contract is loaded.
49126
+ // What follows is called _jmp_mem by the sway compiler.
49127
+ // Subtract the address contained in IS because jmp will add it back.
49128
+ asm2.sub(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, REG_IS),
49129
+ // jmp will multiply by 4, so we need to divide to cancel that out.
49130
+ asm2.divi(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, 4),
49131
+ // Jump to the start of the contract we loaded.
49132
+ asm2.jmp(REG_START_OF_LOADED_CODE)
49133
+ ];
49134
+ const getInstructionsNoDataSection = (numOfInstructions2) => [
49135
+ // 1. Load the blob content into memory
49136
+ // Find the start of the hardcoded blob ID, which is located after the loader code ends.
49137
+ // 1. Load the blob content into memory
49138
+ // Find the start of the hardcoded blob ID, which is located after the loader code ends.
49139
+ asm2.move_(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_PC),
49140
+ // hold the address of the blob ID.
49141
+ asm2.addi(
49142
+ REG_ADDRESS_OF_DATA_AFTER_CODE,
49143
+ REG_ADDRESS_OF_DATA_AFTER_CODE,
49144
+ numOfInstructions2 * Instruction.size()
49145
+ ),
49146
+ // The code is going to be loaded from the current value of SP onwards, save
49147
+ // the location into REG_START_OF_LOADED_CODE so we can jump into it at the end.
49148
+ asm2.move_(REG_START_OF_LOADED_CODE, REG_SP),
49149
+ // REG_GENERAL_USE to hold the size of the blob.
49150
+ asm2.bsiz(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE),
49151
+ // Push the blob contents onto the stack.
49152
+ asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 1),
49153
+ // Jump into the memory where the contract is loaded.
49154
+ // What follows is called _jmp_mem by the sway compiler.
49155
+ // Subtract the address contained in IS because jmp will add it back.
49156
+ asm2.sub(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, REG_IS),
49157
+ // jmp will multiply by 4, so we need to divide to cancel that out.
49158
+ asm2.divi(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, 4),
49159
+ // Jump to the start of the contract we loaded.
49160
+ asm2.jmp(REG_START_OF_LOADED_CODE)
49161
+ ];
49162
+ const offset = getDataOffset(originalBinary);
49163
+ if (originalBinary.length < offset) {
49164
+ throw new Error(
49165
+ `Data section offset is out of bounds, offset: ${offset}, binary length: ${originalBinary.length}`
49166
+ );
49167
+ }
49168
+ const dataSection = originalBinary.slice(offset);
49169
+ if (dataSection.length > 0) {
49170
+ const numOfInstructions2 = getInstructions(0).length;
49171
+ if (numOfInstructions2 > 65535) {
49172
+ throw new Error("Too many instructions, exceeding u16::MAX.");
49173
+ }
49174
+ const instructionBytes2 = new Uint8Array(
49175
+ getInstructions(numOfInstructions2).flatMap(
49176
+ (instruction) => Array.from(instruction.to_bytes())
49177
+ )
49178
+ );
49179
+ const blobBytes2 = new Uint8Array(blobId);
49180
+ const dataSectionLenBytes = new Uint8Array(8);
49181
+ const dataView = new DataView(dataSectionLenBytes.buffer);
49182
+ dataView.setBigUint64(0, BigInt(dataSection.length), false);
49183
+ const loaderBytecode2 = new Uint8Array([
49184
+ ...instructionBytes2,
49185
+ ...blobBytes2,
49186
+ ...dataSectionLenBytes
49187
+ ]);
49188
+ return {
49189
+ loaderBytecode: concat([loaderBytecode2, dataSection]),
49190
+ blobOffset: loaderBytecode2.length
49191
+ };
49192
+ }
49193
+ const numOfInstructions = getInstructionsNoDataSection(0).length;
49194
+ if (numOfInstructions > 65535) {
49195
+ throw new Error("Too many instructions, exceeding u16::MAX.");
49196
+ }
49197
+ const instructionBytes = new Uint8Array(
49198
+ getInstructionsNoDataSection(numOfInstructions).flatMap(
49199
+ (instruction) => Array.from(instruction.to_bytes())
49200
+ )
49201
+ );
49202
+ const blobBytes = new Uint8Array(blobId);
49203
+ const loaderBytecode = new Uint8Array([...instructionBytes, ...blobBytes]);
49204
+ return { loaderBytecode };
49205
+ }
49206
+
49207
+ // src/utils/deployScriptOrPredicate.ts
49208
+ async function fundBlobTx(deployer, blobTxRequest) {
49209
+ let totalCost = bn(0);
49210
+ const chainInfo = deployer.provider.getChain();
49211
+ const gasPrice = await deployer.provider.estimateGasPrice(10);
49212
+ const priceFactor = chainInfo.consensusParameters.feeParameters.gasPriceFactor;
49213
+ const minGas = blobTxRequest.calculateMinGas(chainInfo);
49214
+ const minFee = calculateGasFee({
49215
+ gasPrice,
49216
+ gas: minGas,
49217
+ priceFactor,
49218
+ tip: blobTxRequest.tip
49219
+ }).add(1);
49220
+ totalCost = totalCost.add(minFee);
49221
+ if (totalCost.gt(await deployer.getBalance())) {
49222
+ throw new FuelError(ErrorCode.FUNDS_TOO_LOW, "Insufficient balance to deploy predicate.");
49223
+ }
49224
+ const txCost = await deployer.getTransactionCost(blobTxRequest);
49225
+ blobTxRequest.maxFee = txCost.maxFee;
49226
+ return deployer.fund(blobTxRequest, txCost);
49227
+ }
49228
+ function adjustConfigurableOffsets(jsonAbi, configurableOffsetDiff) {
49229
+ const { configurables: readOnlyConfigurables } = jsonAbi;
49230
+ const configurables = [];
49231
+ readOnlyConfigurables.forEach((config) => {
49232
+ configurables.push({ ...config, offset: config.offset - configurableOffsetDiff });
49233
+ });
49234
+ return { ...jsonAbi, configurables };
49235
+ }
49236
+ async function deployScriptOrPredicate({
49237
+ deployer,
49238
+ bytecode,
49239
+ abi,
49240
+ loaderInstanceCallback
49241
+ }) {
49242
+ const dataSectionOffset = getDataOffset(arrayify(bytecode));
49243
+ const byteCodeWithoutDataSection = bytecode.slice(0, dataSectionOffset);
49244
+ const blobId = hash2(byteCodeWithoutDataSection);
49245
+ const blobTxRequest = new BlobTransactionRequest({
49246
+ blobId,
49247
+ witnessIndex: 0,
49248
+ witnesses: [byteCodeWithoutDataSection]
49249
+ });
49250
+ const { loaderBytecode, blobOffset } = getPredicateScriptLoaderInstructions(
49251
+ arrayify(bytecode),
49252
+ arrayify(blobId)
49253
+ );
49254
+ const configurableOffsetDiff = byteCodeWithoutDataSection.length - (blobOffset || 0);
49255
+ const newAbi = adjustConfigurableOffsets(abi, configurableOffsetDiff);
49256
+ const blobExists = (await deployer.provider.getBlobs([blobId])).length > 0;
49257
+ const loaderInstance = loaderInstanceCallback(loaderBytecode, newAbi);
49258
+ if (blobExists) {
49259
+ return {
49260
+ waitForResult: () => Promise.resolve(loaderInstance),
49261
+ blobId
49262
+ };
49263
+ }
49264
+ const fundedBlobRequest = await fundBlobTx(deployer, blobTxRequest);
49265
+ const waitForResult = async () => {
49266
+ try {
49267
+ const blobTx = await deployer.sendTransaction(fundedBlobRequest);
49268
+ const result = await blobTx.waitForResult();
49269
+ if (result.status !== "success" /* success */) {
49270
+ throw new Error();
49271
+ }
49272
+ } catch (err) {
49273
+ throw new FuelError(ErrorCode.TRANSACTION_FAILED, "Failed to deploy predicate chunk");
49274
+ }
49275
+ return loaderInstance;
49276
+ };
49277
+ return {
49278
+ waitForResult,
49279
+ blobId
49280
+ };
49281
+ }
49282
+
49008
49283
  // ../merkle/dist/index.mjs
49009
49284
  var EMPTY = "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
49010
49285
  var Node = class {
@@ -49073,17 +49348,10 @@ Supported fuel-core version: ${supportedVersion}.`
49073
49348
  };
49074
49349
 
49075
49350
  // src/predicate/predicate.ts
49076
- function getDataOffset(binary) {
49077
- const buffer = binary.buffer.slice(binary.byteOffset + 8, binary.byteOffset + 16);
49078
- const dataView = new DataView(buffer);
49079
- const dataOffset = dataView.getBigUint64(0, false);
49080
- return Number(dataOffset);
49081
- }
49082
49351
  var Predicate = class extends Account {
49083
49352
  bytes;
49084
49353
  predicateData = [];
49085
49354
  interface;
49086
- loaderBytecode = "";
49087
49355
  /**
49088
49356
  * Creates an instance of the Predicate class.
49089
49357
  *
@@ -49098,13 +49366,7 @@ Supported fuel-core version: ${supportedVersion}.`
49098
49366
  abi,
49099
49367
  provider,
49100
49368
  data,
49101
- configurableConstants,
49102
- /**
49103
- * TODO: Implement a getBytes method within the Predicate class. This method should return the loaderBytecode if it is set.
49104
- * The getBytes method should be used in all places where we use this.bytes.
49105
- * Note: Do not set loaderBytecode to a default string here; it should remain undefined when not provided.
49106
- */
49107
- loaderBytecode = ""
49369
+ configurableConstants
49108
49370
  }) {
49109
49371
  const { predicateBytes, predicateInterface } = Predicate.processPredicateData(
49110
49372
  bytecode,
@@ -49115,7 +49377,6 @@ Supported fuel-core version: ${supportedVersion}.`
49115
49377
  super(address, provider);
49116
49378
  this.bytes = predicateBytes;
49117
49379
  this.interface = predicateInterface;
49118
- this.loaderBytecode = loaderBytecode;
49119
49380
  if (data !== void 0 && data.length > 0) {
49120
49381
  this.predicateData = data;
49121
49382
  }
@@ -49178,15 +49439,12 @@ Supported fuel-core version: ${supportedVersion}.`
49178
49439
  */
49179
49440
  static processPredicateData(bytes2, jsonAbi, configurableConstants) {
49180
49441
  let predicateBytes = arrayify(bytes2);
49181
- let abiInterface;
49182
- if (jsonAbi) {
49183
- abiInterface = new Interface(jsonAbi);
49184
- if (abiInterface.functions.main === void 0) {
49185
- throw new FuelError(
49186
- ErrorCode.ABI_MAIN_METHOD_MISSING,
49187
- 'Cannot use ABI without "main" function.'
49188
- );
49189
- }
49442
+ const abiInterface = new Interface(jsonAbi);
49443
+ if (abiInterface.functions.main === void 0) {
49444
+ throw new FuelError(
49445
+ ErrorCode.ABI_MAIN_METHOD_MISSING,
49446
+ 'Cannot use ABI without "main" function.'
49447
+ );
49190
49448
  }
49191
49449
  if (configurableConstants && Object.keys(configurableConstants).length) {
49192
49450
  predicateBytes = Predicate.setConfigurableConstants(
@@ -49240,15 +49498,9 @@ Supported fuel-core version: ${supportedVersion}.`
49240
49498
  * @param abiInterface - The ABI interface of the predicate.
49241
49499
  * @returns The mutated bytes with the configurable constants set.
49242
49500
  */
49243
- static setConfigurableConstants(bytes2, configurableConstants, abiInterface, loaderBytecode) {
49501
+ static setConfigurableConstants(bytes2, configurableConstants, abiInterface) {
49244
49502
  const mutatedBytes = bytes2;
49245
49503
  try {
49246
- if (!abiInterface) {
49247
- throw new FuelError(
49248
- ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
49249
- "Cannot validate configurable constants because the Predicate was instantiated without a JSON ABI"
49250
- );
49251
- }
49252
49504
  if (Object.keys(abiInterface.configurables).length === 0) {
49253
49505
  throw new FuelError(
49254
49506
  ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
@@ -49266,15 +49518,6 @@ Supported fuel-core version: ${supportedVersion}.`
49266
49518
  const encoded = abiInterface.encodeConfigurable(key, value);
49267
49519
  mutatedBytes.set(encoded, offset);
49268
49520
  });
49269
- if (loaderBytecode) {
49270
- const offset = getDataOffset(bytes2);
49271
- const dataSection = mutatedBytes.slice(offset);
49272
- const dataSectionLen = dataSection.length;
49273
- const dataSectionLenBytes = new Uint8Array(8);
49274
- const dataSectionLenDataView = new DataView(dataSectionLenBytes.buffer);
49275
- dataSectionLenDataView.setBigUint64(0, BigInt(dataSectionLen), false);
49276
- mutatedBytes.set(concat([loaderBytecode, dataSectionLenBytes, dataSection]));
49277
- }
49278
49521
  } catch (err) {
49279
49522
  throw new FuelError(
49280
49523
  ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
@@ -49305,6 +49548,28 @@ Supported fuel-core version: ${supportedVersion}.`
49305
49548
  }
49306
49549
  return index;
49307
49550
  }
49551
+ /**
49552
+ *
49553
+ * @param account - The account used to pay the deployment costs.
49554
+ * @returns The _blobId_ and a _waitForResult_ callback that returns the deployed predicate
49555
+ * once the blob deployment transaction finishes.
49556
+ *
49557
+ * The returned loader predicate will have the same configurable constants
49558
+ * as the original predicate which was used to generate the loader predicate.
49559
+ */
49560
+ async deploy(account) {
49561
+ return deployScriptOrPredicate({
49562
+ deployer: account,
49563
+ abi: this.interface.jsonAbi,
49564
+ bytecode: this.bytes,
49565
+ loaderInstanceCallback: (loaderBytecode, newAbi) => new Predicate({
49566
+ bytecode: loaderBytecode,
49567
+ abi: newAbi,
49568
+ provider: this.provider,
49569
+ data: this.predicateData
49570
+ })
49571
+ });
49572
+ }
49308
49573
  };
49309
49574
 
49310
49575
  // src/connectors/fuel-connector.ts