@bitgo/sdk-coin-avaxp 2.2.0-rc.26 → 2.2.0-rc.28

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 (84) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/src/avaxp.d.ts.map +1 -1
  3. package/dist/src/avaxp.js +2 -9
  4. package/dist/src/lib/atomicTransactionBuilder.js +2 -2
  5. package/dist/src/lib/delegatorTxBuilder.d.ts +2 -1
  6. package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -1
  7. package/dist/src/lib/delegatorTxBuilder.js +3 -3
  8. package/dist/src/lib/exportTxBuilder.d.ts +2 -1
  9. package/dist/src/lib/exportTxBuilder.d.ts.map +1 -1
  10. package/dist/src/lib/exportTxBuilder.js +4 -3
  11. package/dist/src/lib/iface.d.ts +6 -1
  12. package/dist/src/lib/iface.d.ts.map +1 -1
  13. package/dist/src/lib/iface.js +1 -1
  14. package/dist/src/lib/importInCTxBuilder.d.ts +48 -0
  15. package/dist/src/lib/importInCTxBuilder.d.ts.map +1 -0
  16. package/dist/src/lib/importInCTxBuilder.js +152 -0
  17. package/dist/src/lib/importTxBuilder.d.ts +2 -1
  18. package/dist/src/lib/importTxBuilder.d.ts.map +1 -1
  19. package/dist/src/lib/importTxBuilder.js +6 -4
  20. package/dist/src/lib/transaction.d.ts +8 -4
  21. package/dist/src/lib/transaction.d.ts.map +1 -1
  22. package/dist/src/lib/transaction.js +16 -16
  23. package/dist/src/lib/transactionBuilder.d.ts +1 -11
  24. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  25. package/dist/src/lib/transactionBuilder.js +5 -29
  26. package/dist/src/lib/transactionBuilderFactory.d.ts +7 -0
  27. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  28. package/dist/src/lib/transactionBuilderFactory.js +44 -11
  29. package/dist/src/lib/utils.d.ts +20 -4
  30. package/dist/src/lib/utils.d.ts.map +1 -1
  31. package/dist/src/lib/utils.js +50 -23
  32. package/dist/src/lib/utxoEngine.d.ts +45 -0
  33. package/dist/src/lib/utxoEngine.d.ts.map +1 -0
  34. package/dist/src/lib/utxoEngine.js +89 -0
  35. package/dist/src/lib/validatorTxBuilder.d.ts +2 -1
  36. package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -1
  37. package/dist/src/lib/validatorTxBuilder.js +1 -1
  38. package/dist/test/resources/avaxp.d.ts +178 -0
  39. package/dist/test/resources/avaxp.d.ts.map +1 -0
  40. package/dist/test/resources/avaxp.js +953 -0
  41. package/dist/test/resources/errors.d.ts +18 -0
  42. package/dist/test/resources/errors.d.ts.map +1 -0
  43. package/dist/test/resources/errors.js +21 -0
  44. package/dist/test/resources/keychains.d.ts +18 -0
  45. package/dist/test/resources/keychains.d.ts.map +1 -0
  46. package/dist/test/resources/keychains.js +30 -0
  47. package/dist/test/resources/tx/importC.d.ts +29 -0
  48. package/dist/test/resources/tx/importC.d.ts.map +1 -0
  49. package/dist/test/resources/tx/importC.js +42 -0
  50. package/dist/test/resources/tx/importP.d.ts +29 -0
  51. package/dist/test/resources/tx/importP.d.ts.map +1 -0
  52. package/dist/test/resources/tx/importP.js +42 -0
  53. package/dist/test/unit/avaxp.d.ts +2 -0
  54. package/dist/test/unit/avaxp.d.ts.map +1 -0
  55. package/dist/test/unit/avaxp.js +553 -0
  56. package/dist/test/unit/lib/exportP2CTxBuilder.d.ts +2 -0
  57. package/dist/test/unit/lib/exportP2CTxBuilder.d.ts.map +1 -0
  58. package/dist/test/unit/lib/exportP2CTxBuilder.js +173 -0
  59. package/dist/test/unit/lib/importC2PTxBuilder.d.ts +2 -0
  60. package/dist/test/unit/lib/importC2PTxBuilder.d.ts.map +1 -0
  61. package/dist/test/unit/lib/importC2PTxBuilder.js +85 -0
  62. package/dist/test/unit/lib/importP2CTxBuilder.d.ts +2 -0
  63. package/dist/test/unit/lib/importP2CTxBuilder.d.ts.map +1 -0
  64. package/dist/test/unit/lib/importP2CTxBuilder.js +125 -0
  65. package/dist/test/unit/lib/keyPair.d.ts +2 -0
  66. package/dist/test/unit/lib/keyPair.d.ts.map +1 -0
  67. package/dist/test/unit/lib/keyPair.js +172 -0
  68. package/dist/test/unit/lib/signFlowTestSuit.d.ts +20 -0
  69. package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -0
  70. package/dist/test/unit/lib/signFlowTestSuit.js +80 -0
  71. package/dist/test/unit/lib/transactionBuilderFactory.d.ts +2 -0
  72. package/dist/test/unit/lib/transactionBuilderFactory.d.ts.map +1 -0
  73. package/dist/test/unit/lib/transactionBuilderFactory.js +114 -0
  74. package/dist/test/unit/lib/utils.d.ts +2 -0
  75. package/dist/test/unit/lib/utils.d.ts.map +1 -0
  76. package/dist/test/unit/lib/utils.js +69 -0
  77. package/dist/test/unit/lib/utxoEngine.d.ts +2 -0
  78. package/dist/test/unit/lib/utxoEngine.d.ts.map +1 -0
  79. package/dist/test/unit/lib/utxoEngine.js +168 -0
  80. package/dist/test/unit/lib/validateTxBuilder.d.ts +2 -0
  81. package/dist/test/unit/lib/validateTxBuilder.d.ts.map +1 -0
  82. package/dist/test/unit/lib/validateTxBuilder.js +303 -0
  83. package/dist/tsconfig.tsbuildinfo +480 -44
  84. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.2.0-rc.28](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.27...@bitgo/sdk-coin-avaxp@2.2.0-rc.28) (2022-09-15)
7
+
8
+
9
+ ### Features
10
+
11
+ * **sdk-coin-avaxp:** implement tx builder for import in c chain ([4d7856b](https://github.com/BitGo/BitGoJS/commit/4d7856b5417220ff8fccafefe05551b9b93246c1))
12
+
13
+
14
+
15
+
16
+
17
+ # [2.2.0-rc.27](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.26...@bitgo/sdk-coin-avaxp@2.2.0-rc.27) (2022-09-14)
18
+
19
+ **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
20
+
21
+
22
+
23
+
24
+
6
25
  # [2.2.0-rc.26](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-avaxp@2.2.0-rc.25...@bitgo/sdk-coin-avaxp@2.2.0-rc.26) (2022-09-14)
7
26
 
8
27
  **Note:** Version bump only for package @bitgo/sdk-coin-avaxp
@@ -1 +1 @@
1
- {"version":3,"file":"avaxp.d.ts","sourceRoot":"","sources":["../../src/avaxp.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,QAAQ,IAAI,eAAe,EAAE,UAAU,EAAS,MAAM,gBAAgB,CAAC;AAClG,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EAIvB,kBAAkB,EAKnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,OAAO,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AAGjB,qBAAa,KAAM,SAAQ,QAAQ;IACjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE/C,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAUrE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAGlB,SAAS,IAAI,UAAU;IAGvB,WAAW,IAAI,MAAM;IAGrB,aAAa,IAAI,MAAM,GAAG,MAAM;IAIhC,eAAe,IAAI,OAAO;IAIpB,iBAAiB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IA0ChF;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO;IA6BtD;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAiBnD;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBhF,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAKtE,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAInF;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAcrG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAIvD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW1E,OAAO,CAAC,UAAU;CAGnB"}
1
+ {"version":3,"file":"avaxp.d.ts","sourceRoot":"","sources":["../../src/avaxp.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,QAAQ,IAAI,eAAe,EAAE,UAAU,EAAS,MAAM,gBAAgB,CAAC;AAClG,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EAIvB,kBAAkB,EAKnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,QAAQ,MAAM,OAAO,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AAGjB,qBAAa,KAAM,SAAQ,QAAQ;IACjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE/C,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAUrE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAGlB,SAAS,IAAI,UAAU;IAGvB,WAAW,IAAI,MAAM;IAGrB,aAAa,IAAI,MAAM,GAAG,MAAM;IAIhC,eAAe,IAAI,OAAO;IAIpB,iBAAiB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IA0ChF;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO;IA6BtD;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAShC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAQnD;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkBhF,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAKtE,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAInF;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAcrG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAIvD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW1E,OAAO,CAAC,UAAU;CAGnB"}
package/dist/src/avaxp.js CHANGED
@@ -180,14 +180,7 @@ class AvaxP extends sdk_core_1.BaseCoin {
180
180
  if (address === undefined) {
181
181
  return false;
182
182
  }
183
- const addressArr = Array.isArray(address) ? address : address.split('~');
184
- // multisig wallet have an array of addresses. validate each address
185
- for (const address of addressArr) {
186
- if (!AvaxpLib.Utils.isValidAddress(address)) {
187
- return false;
188
- }
189
- }
190
- return true;
183
+ return AvaxpLib.Utils.isValidAddress(address);
191
184
  }
192
185
  /**
193
186
  * Signs Avaxp transaction
@@ -252,4 +245,4 @@ class AvaxP extends sdk_core_1.BaseCoin {
252
245
  }
253
246
  }
254
247
  exports.AvaxP = AvaxP;
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZheHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZheHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUFrRztBQUNsRyw4Q0FleUI7QUFDekIsZ0RBQWtDO0FBT2xDLG9EQUF1QjtBQUV2QixNQUFhLEtBQU0sU0FBUSxtQkFBUTtJQUdqQyxZQUFZLEtBQWdCLEVBQUUsV0FBdUM7UUFDbkUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBQ0QsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUNELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQXFDO1FBQzNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FB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LEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDRjtBQWhRRCxzQkFnUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdmFsYW5jaGVOZXR3b3JrLCBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIENvaW5GYW1pbHksIGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgS2V5UGFpcixcbiAgVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcixcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgRmVlRXN0aW1hdGVPcHRpb25zLFxuICBTaWduaW5nRXJyb3IsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgSW52YWxpZEFkZHJlc3NFcnJvcixcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIEF2YXhwTGliIGZyb20gJy4vbGliJztcbmltcG9ydCB7XG4gIEF2YXhwU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVHJhbnNhY3Rpb25GZWUsXG4gIEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIEF2YXhwVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjbGFzcyBBdmF4UCBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBBdmF4UChiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4ubmFtZTtcbiAgfVxuICBnZXRGYW1pbHkoKTogQ29pbkZhbWlseSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZhbWlseTtcbiAgfVxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mdWxsTmFtZTtcbiAgfVxuICBnZXRCYXNlRmFjdG9yKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucG93KDEwLCB0aGlzLl9zdGF0aWNzQ29pbi5kZWNpbWFsUGxhY2VzKTtcbiAgfVxuXG4gIHN1cHBvcnRzU3Rha2luZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogQXZheHBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB0eEhleCA9IHBhcmFtcy50eFByZWJ1aWxkICYmIHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4O1xuICAgIGlmICghdHhIZXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eCBwcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpO1xuICAgIH1cbiAgICBsZXQgdHg7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IHRoaXMuZ2V0QnVpbGRlcigpLmZyb20odHhIZXgpO1xuICAgICAgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGV4cGxhaW5lZFR4ID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG5cbiAgICBjb25zdCB7IHR5cGUsIHN0YWtpbmdPcHRpb25zLCBtZW1vIH0gPSBwYXJhbXMudHhQYXJhbXM7XG4gICAgaWYgKCF0eXBlIHx8IGV4cGxhaW5lZFR4LnR5cGUgIT09IFRyYW5zYWN0aW9uVHlwZVt0eXBlXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCB0eXBlIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgdHlwZScpO1xuICAgIH1cbiAgICBpZiAobWVtbyAmJiBleHBsYWluZWRUeC5tZW1vICE9PSBtZW1vLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG1lbW8gZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyBtZW1vJyk7XG4gICAgfVxuICAgIHN3aXRjaCAoZXhwbGFpbmVkVHgudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuYWRkRGVsZWdhdG9yOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuYWRkVmFsaWRhdG9yOlxuICAgICAgICBpZiAoIXBhcmFtcy50eFBhcmFtcy5yZWNpcGllbnRzIHx8IHBhcmFtcy50eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUmVjaXBpZW50cyA9IFt7IGFkZHJlc3M6IHN0YWtpbmdPcHRpb25zLm5vZGVJRCwgYW1vdW50OiBzdGFraW5nT3B0aW9ucy5hbW91bnQgfV07XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRPdXRwdXRzID0gZXhwbGFpbmVkVHgub3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gXy5waWNrKG91dHB1dCwgWydhZGRyZXNzJywgJ2Ftb3VudCddKSk7XG5cbiAgICAgICAgICBpZiAoIV8uaXNFcXVhbChmaWx0ZXJlZE91dHB1dHMsIGZpbHRlcmVkUmVjaXBpZW50cykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdGFraW5nT3B0aW9ucy5hbW91bnQgIT09IGV4cGxhaW5lZFR4Lm91dHB1dEFtb3VudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCB0b3RhbCBhbW91bnQgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0b3RhbCBhbW91bnQgZmllbGQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHR5cGUgaXMgbm90IHN1cHBvcnRlZCB5ZXQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYWRkcmVzcyBpcyB2YWxpZCwgdGhlbiBtYWtlIHN1cmUgaXQgbWF0Y2hlcyB0aGUgcm9vdCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLmFkZHJlc3MgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gcGFyYW1zLmtleWNoYWlucyBwdWJsaWMga2V5cyB0byBnZW5lcmF0ZSB0aGUgd2FsbGV0XG4gICAqL1xuICBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgYWRkcmVzcywga2V5Y2hhaW5zIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgICB9XG4gICAgaWYgKCFrZXljaGFpbnMgfHwga2V5Y2hhaW5zLmxlbmd0aCAhPT0gMykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleWNoYWlucycpO1xuICAgIH1cblxuICAgIC8vIG11bHRpc2lnIGFkZHJlc3NlcyBhcmUgc2VwYXJhdGVkIGJ5IH5cbiAgICBjb25zdCBzcGxpdEFkZHJlc3NlcyA9IGFkZHJlc3Muc3BsaXQoJ34nKTtcblxuICAgIC8vIGRlcml2ZSBhZGRyZXNzZXMgZnJvbSBrZXljaGFpblxuICAgIGNvbnN0IHVubG9ja0FkZHJlc3NlcyA9IGtleWNoYWlucy5tYXAoKGtleWNoYWluKSA9PlxuICAgICAgbmV3IEF2YXhwTGliLktleVBhaXIoeyBwdWI6IGtleWNoYWluLnB1YiB9KS5nZXRBZGRyZXNzKHRoaXMuX3N0YXRpY3NDb2luLm5ldHdvcmsudHlwZSlcbiAgICApO1xuXG4gICAgaWYgKHNwbGl0QWRkcmVzc2VzLmxlbmd0aCAhPT0gdW5sb2NrQWRkcmVzc2VzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoYGFkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlOiBtdWx0aXNpZyBhZGRyZXNzIGxlbmd0aCBkb2VzIG5vdCBtYXRjaGApO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hZHJlc3Nlc0FycmF5c01hdGNoKHNwbGl0QWRkcmVzc2VzLCB1bmxvY2tBZGRyZXNzZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcihgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6ICR7YWRkcmVzc30gaXMgbm90IG9mIHRoaXMgd2FsbGV0YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCB0d28gbXVsdGlzaWcgYWRkcmVzcyBhcnJheXMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cywgb3JkZXIgZG9lc250IG1hdHRlclxuICAgKiBAcGFyYW0gYWRkcmVzc0FycmF5MVxuICAgKiBAcGFyYW0gYWRkcmVzc0FycmF5MlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGFkZHJlc3MgYXJyYXlzIGhhdmUgdGhlIHNhbWUgYWRkcmVzc2VzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGFkcmVzc2VzQXJyYXlzTWF0Y2goYWRkcmVzc0FycmF5MTogc3RyaW5nW10sIGFkZHJlc3NBcnJheTI6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFkZHJlc3NBcnJheTEuc29ydCgpKSA9PT0gSlNPTi5zdHJpbmdpZnkoYWRkcmVzc0FycmF5Mi5zb3J0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIEF2YXhwIGtleSBwYWlyXG4gICAqXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBzZWVkIC0gU2VlZCBmcm9tIHdoaWNoIHRoZSBuZXcga2V5cGFpciBzaG91bGQgYmUgZ2VuZXJhdGVkLCBvdGhlcndpc2UgYSByYW5kb20gc2VlZCBpcyB1c2VkXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IG9iamVjdCB3aXRoIGdlbmVyYXRlZCBwdWIgYW5kIHBydlxuICAgKi9cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBBdmF4cExpYi5LZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBBdmF4cExpYi5LZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuXG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlzLnB1YixcbiAgICAgIHBydjoga2V5cy5wcnYsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgcHVibGljIGtleSBmb3IgdGhlIGNvaW5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiB0aGUgcHJ2IHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBBdmF4cExpYi5LZXlQYWlyKHsgcHViIH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgcHJpdmF0ZSBrZXkgZm9yIHRoZSBjb2luXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgdGhlIHBydiB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgaXNWYWxpZFBydihwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgQXZheHBMaWIuS2V5UGFpcih7IHBydiB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChhZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBhZGRyZXNzQXJyOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkoYWRkcmVzcykgPyBhZGRyZXNzIDogYWRkcmVzcy5zcGxpdCgnficpO1xuXG4gICAgLy8gbXVsdGlzaWcgd2FsbGV0IGhhdmUgYW4gYXJyYXkgb2YgYWRkcmVzc2VzLiB2YWxpZGF0ZSBlYWNoIGFkZHJlc3NcbiAgICBmb3IgKGNvbnN0IGFkZHJlc3Mgb2YgYWRkcmVzc0Fycikge1xuICAgICAgaWYgKCFBdmF4cExpYi5VdGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgQXZheHAgdHJhbnNhY3Rpb25cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IEF2YXhwU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICAvLyBkZXNlcmlhbGl6ZSByYXcgdHJhbnNhY3Rpb24gKG5vdGU6IGZyb21BZGRyZXNzIGhhcyBvbmNoYWluIG9yZGVyKVxuICAgIGNvbnN0IHR4QnVpbGRlciA9IHRoaXMuZ2V0QnVpbGRlcigpLmZyb20ocGFyYW1zLnR4UHJlYnVpbGQudHhIZXgpO1xuICAgIGNvbnN0IGtleSA9IHBhcmFtcy5wcnY7XG5cbiAgICAvLyBwdXNoIHRoZSBrZXlwYWlyIHRvIHNpZ25lciBhcnJheVxuICAgIHR4QnVpbGRlci5zaWduKHsga2V5IH0pO1xuXG4gICAgLy8gYnVpbGQgdGhlIHRyYW5zYWN0aW9uXG4gICAgY29uc3QgdHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvbiA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGJ1aWxkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5zaWduYXR1cmUubGVuZ3RoID49IDJcbiAgICAgID8geyB0eEhleDogdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKSB9XG4gICAgICA6IHsgaGFsZlNpZ25lZDogeyB0eEhleDogdHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKSB9IH07XG4gIH1cblxuICBhc3luYyBmZWVFc3RpbWF0ZShwYXJhbXM6IEZlZUVzdGltYXRlT3B0aW9ucyk6IFByb21pc2U8VHJhbnNhY3Rpb25GZWU+IHtcbiAgICAvLyBzdGFraW5nIHRyYW5zYWN0aW9ucyBhcmUgZmVlLWxlc3NcbiAgICByZXR1cm4geyBmZWU6ICcwJyB9O1xuICB9XG5cbiAgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucz4ge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCdwYXJzZVRyYW5zYWN0aW9uIG1ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBsYWluIGEgQXZheHAgdHJhbnNhY3Rpb24gZnJvbSB0eEhleFxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKi9cbiAgYXN5bmMgZXhwbGFpblRyYW5zYWN0aW9uKHBhcmFtczogRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8QXZheHBMaWIuVHJhbnNhY3Rpb25FeHBsYW5hdGlvbj4ge1xuICAgIGNvbnN0IHR4SGV4ID0gcGFyYW1zLnR4SGV4ID8/IHBhcmFtcz8uaGFsZlNpZ25lZD8udHhIZXg7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHRyYW5zYWN0aW9uIGhleCcpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCkuZnJvbSh0eEhleCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgcmV0dXJuIHR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0cmFuc2FjdGlvbjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVjb3ZlcnlTaWduYXR1cmUobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEF2YXhwTGliLlV0aWxzLnJlY292ZXJ5U2lnbmF0dXJlKHRoaXMuX3N0YXRpY3NDb2luLm5ldHdvcmsgYXMgQXZhbGFuY2hlTmV0d29yaywgbWVzc2FnZSwgc2lnbmF0dXJlKTtcbiAgfVxuXG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleTogS2V5UGFpciwgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBjb25zdCBwcnYgPSBuZXcgQXZheHBMaWIuS2V5UGFpcihrZXkpLmdldFByaXZhdGVLZXkoKTtcbiAgICBpZiAoIXBydikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG1lc3NhZ2UgPSBCdWZmZXIuZnJvbShtZXNzYWdlLCAnaGV4Jyk7XG4gICAgfVxuICAgIHJldHVybiBBdmF4cExpYi5VdGlscy5jcmVhdGVTaWduYXR1cmUodGhpcy5fc3RhdGljc0NvaW4ubmV0d29yayBhcyBBdmFsYW5jaGVOZXR3b3JrLCBtZXNzYWdlLCBwcnYpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKCk6IEF2YXhwTGliLlRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgQXZheHBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cbn1cbiJdfQ==
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZheHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZheHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUFrRztBQUNsRyw4Q0FleUI7QUFDekIsZ0RBQWtDO0FBT2xDLG9EQUF1QjtBQUV2QixNQUFhLEtBQU0sU0FBUSxtQkFBUTtJQUdqQyxZQUFZLEtBQWdCLEVBQUUsV0FBdUM7UUFDbkUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBQ0QsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUNELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQXFDO1FBQzNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FB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TUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDdEQ7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZSxFQUFFLFNBQWlCO1FBQ2xELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQTJCLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQVksRUFBRSxPQUF3QjtRQUN0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sSUFBSSx1QkFBWSxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDcEQ7UUFDRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUMvQixPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBMkIsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxJQUFJLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBdlBELHNCQXVQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF2YWxhbmNoZU5ldHdvcmssIEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiwgQ29pbkZhbWlseSwgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQge1xuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBLZXlQYWlyLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBGZWVFc3RpbWF0ZU9wdGlvbnMsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgQXZheHBMaWIgZnJvbSAnLi9saWInO1xuaW1wb3J0IHtcbiAgQXZheHBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvbkZlZSxcbiAgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgQXZheHBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNsYXNzIEF2YXhQIGV4dGVuZHMgQmFzZUNvaW4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IEF2YXhQKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5uYW1lO1xuICB9XG4gIGdldEZhbWlseSgpOiBDb2luRmFtaWx5IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZmFtaWx5O1xuICB9XG4gIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLmZ1bGxOYW1lO1xuICB9XG4gIGdldEJhc2VGYWN0b3IoKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMTAsIHRoaXMuX3N0YXRpY3NDb2luLmRlY2ltYWxQbGFjZXMpO1xuICB9XG5cbiAgc3VwcG9ydHNTdGFraW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBBdmF4cFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHR4SGV4ID0gcGFyYW1zLnR4UHJlYnVpbGQgJiYgcGFyYW1zLnR4UHJlYnVpbGQudHhIZXg7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gICAgfVxuICAgIGxldCB0eDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCkuZnJvbSh0eEhleCk7XG4gICAgICB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgZXhwbGFpbmVkVHggPSB0eC5leHBsYWluVHJhbnNhY3Rpb24oKTtcblxuICAgIGNvbnN0IHsgdHlwZSwgc3Rha2luZ09wdGlvbnMsIG1lbW8gfSA9IHBhcmFtcy50eFBhcmFtcztcbiAgICBpZiAoIXR5cGUgfHwgZXhwbGFpbmVkVHgudHlwZSAhPT0gVHJhbnNhY3Rpb25UeXBlW3R5cGVdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHR5cGUgZG9lcyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyB0eXBlJyk7XG4gICAgfVxuICAgIGlmIChtZW1vICYmIGV4cGxhaW5lZFR4Lm1lbW8gIT09IG1lbW8udmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHggbWVtbyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIG1lbW8nKTtcbiAgICB9XG4gICAgc3dpdGNoIChleHBsYWluZWRUeC50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5hZGREZWxlZ2F0b3I6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5hZGRWYWxpZGF0b3I6XG4gICAgICAgIGlmICghcGFyYW1zLnR4UGFyYW1zLnJlY2lwaWVudHMgfHwgcGFyYW1zLnR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRSZWNpcGllbnRzID0gW3sgYWRkcmVzczogc3Rha2luZ09wdGlvbnMubm9kZUlELCBhbW91bnQ6IHN0YWtpbmdPcHRpb25zLmFtb3VudCB9XTtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZE91dHB1dHMgPSBleHBsYWluZWRUeC5vdXRwdXRzLm1hcCgob3V0cHV0KSA9PiBfLnBpY2sob3V0cHV0LCBbJ2FkZHJlc3MnLCAnYW1vdW50J10pKTtcblxuICAgICAgICAgIGlmICghXy5pc0VxdWFsKGZpbHRlcmVkT3V0cHV0cywgZmlsdGVyZWRSZWNpcGllbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YWtpbmdPcHRpb25zLmFtb3VudCAhPT0gZXhwbGFpbmVkVHgub3V0cHV0QW1vdW50KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IHRvdGFsIGFtb3VudCBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHRvdGFsIGFtb3VudCBmaWVsZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVHggdHlwZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhZGRyZXNzIGlzIHZhbGlkLCB0aGVuIG1ha2Ugc3VyZSBpdCBtYXRjaGVzIHRoZSByb290IGFkZHJlc3MuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMuYWRkcmVzcyBhZGRyZXNzIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBwYXJhbXMua2V5Y2hhaW5zIHB1YmxpYyBrZXlzIHRvIGdlbmVyYXRlIHRoZSB3YWxsZXRcbiAgICovXG4gIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBhZGRyZXNzLCBrZXljaGFpbnMgfSA9IHBhcmFtcztcblxuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHthZGRyZXNzfWApO1xuICAgIH1cbiAgICBpZiAoIWtleWNoYWlucyB8fCBrZXljaGFpbnMubGVuZ3RoICE9PSAzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5Y2hhaW5zJyk7XG4gICAgfVxuXG4gICAgLy8gbXVsdGlzaWcgYWRkcmVzc2VzIGFyZSBzZXBhcmF0ZWQgYnkgflxuICAgIGNvbnN0IHNwbGl0QWRkcmVzc2VzID0gYWRkcmVzcy5zcGxpdCgnficpO1xuXG4gICAgLy8gZGVyaXZlIGFkZHJlc3NlcyBmcm9tIGtleWNoYWluXG4gICAgY29uc3QgdW5sb2NrQWRkcmVzc2VzID0ga2V5Y2hhaW5zLm1hcCgoa2V5Y2hhaW4pID0+XG4gICAgICBuZXcgQXZheHBMaWIuS2V5UGFpcih7IHB1Yjoga2V5Y2hhaW4ucHViIH0pLmdldEFkZHJlc3ModGhpcy5fc3RhdGljc0NvaW4ubmV0d29yay50eXBlKVxuICAgICk7XG5cbiAgICBpZiAoc3BsaXRBZGRyZXNzZXMubGVuZ3RoICE9PSB1bmxvY2tBZGRyZXNzZXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcihgYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmU6IG11bHRpc2lnIGFkZHJlc3MgbGVuZ3RoIGRvZXMgbm90IG1hdGNoYCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFkcmVzc2VzQXJyYXlzTWF0Y2goc3BsaXRBZGRyZXNzZXMsIHVubG9ja0FkZHJlc3NlcykpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogJHthZGRyZXNzfSBpcyBub3Qgb2YgdGhpcyB3YWxsZXRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGF0IHR3byBtdWx0aXNpZyBhZGRyZXNzIGFycmF5cyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzLCBvcmRlciBkb2VzbnQgbWF0dGVyXG4gICAqIEBwYXJhbSBhZGRyZXNzQXJyYXkxXG4gICAqIEBwYXJhbSBhZGRyZXNzQXJyYXkyXG4gICAqIEByZXR1cm5zIHRydWUgaWYgYWRkcmVzcyBhcnJheXMgaGF2ZSB0aGUgc2FtZSBhZGRyZXNzZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYWRyZXNzZXNBcnJheXNNYXRjaChhZGRyZXNzQXJyYXkxOiBzdHJpbmdbXSwgYWRkcmVzc0FycmF5Mjogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYWRkcmVzc0FycmF5MS5zb3J0KCkpID09PSBKU09OLnN0cmluZ2lmeShhZGRyZXNzQXJyYXkyLnNvcnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgQXZheHAga2V5IHBhaXJcbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXJ9IHNlZWQgLSBTZWVkIGZyb20gd2hpY2ggdGhlIG5ldyBrZXlwYWlyIHNob3VsZCBiZSBnZW5lcmF0ZWQsIG90aGVyd2lzZSBhIHJhbmRvbSBzZWVkIGlzIHVzZWRcbiAgICogQHJldHVybnMge09iamVjdH0gb2JqZWN0IHdpdGggZ2VuZXJhdGVkIHB1YiBhbmQgcHJ2XG4gICAqL1xuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IEF2YXhwTGliLktleVBhaXIoeyBzZWVkIH0pIDogbmV3IEF2YXhwTGliLktleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG5cbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJ2IGluIGtleSBnZW5lcmF0aW9uLicpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleXMucHViLFxuICAgICAgcHJ2OiBrZXlzLnBydixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIHRoZSBwcnYgdG8gYmUgY2hlY2tlZFxuICAgKiBAcmV0dXJucyBpcyBpdCB2YWxpZD9cbiAgICovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEF2YXhwTGliLktleVBhaXIoeyBwdWIgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwcml2YXRlIGtleSBmb3IgdGhlIGNvaW5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiB0aGUgcHJ2IHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMgaXMgaXQgdmFsaWQ/XG4gICAqL1xuICBpc1ZhbGlkUHJ2KHBydjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBBdmF4cExpYi5LZXlQYWlyKHsgcHJ2IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKGFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBBdmF4cExpYi5VdGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBBdmF4cCB0cmFuc2FjdGlvblxuICAgKi9cbiAgYXN5bmMgc2lnblRyYW5zYWN0aW9uKHBhcmFtczogQXZheHBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIC8vIGRlc2VyaWFsaXplIHJhdyB0cmFuc2FjdGlvbiAobm90ZTogZnJvbUFkZHJlc3MgaGFzIG9uY2hhaW4gb3JkZXIpXG4gICAgY29uc3QgdHhCdWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCkuZnJvbShwYXJhbXMudHhQcmVidWlsZC50eEhleCk7XG4gICAgY29uc3Qga2V5ID0gcGFyYW1zLnBydjtcblxuICAgIC8vIHB1c2ggdGhlIGtleXBhaXIgdG8gc2lnbmVyIGFycmF5XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXkgfSk7XG5cbiAgICAvLyBidWlsZCB0aGUgdHJhbnNhY3Rpb25cbiAgICBjb25zdCB0cmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFcnJvciB3aGlsZSB0cnlpbmcgdG8gYnVpbGQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLnNpZ25hdHVyZS5sZW5ndGggPj0gMlxuICAgICAgPyB7IHR4SGV4OiB0cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpIH1cbiAgICAgIDogeyBoYWxmU2lnbmVkOiB7IHR4SGV4OiB0cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpIH0gfTtcbiAgfVxuXG4gIGFzeW5jIGZlZUVzdGltYXRlKHBhcmFtczogRmVlRXN0aW1hdGVPcHRpb25zKTogUHJvbWlzZTxUcmFuc2FjdGlvbkZlZT4ge1xuICAgIC8vIHN0YWtpbmcgdHJhbnNhY3Rpb25zIGFyZSBmZWUtbGVzc1xuICAgIHJldHVybiB7IGZlZTogJzAnIH07XG4gIH1cblxuICBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zPiB7XG4gICAgdGhyb3cgbmV3IE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IoJ3BhcnNlVHJhbnNhY3Rpb24gbWV0aG9kIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cGxhaW4gYSBBdmF4cCB0cmFuc2FjdGlvbiBmcm9tIHR4SGV4XG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAqL1xuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxBdmF4cExpYi5UcmFuc2FjdGlvbkV4cGxhbmF0aW9uPiB7XG4gICAgY29uc3QgdHhIZXggPSBwYXJhbXMudHhIZXggPz8gcGFyYW1zPy5oYWxmU2lnbmVkPy50eEhleDtcbiAgICBpZiAoIXR4SGV4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdHJhbnNhY3Rpb24gaGV4Jyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSB0aGlzLmdldEJ1aWxkZXIoKS5mcm9tKHR4SGV4KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICByZXR1cm4gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRyYW5zYWN0aW9uOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICByZWNvdmVyeVNpZ25hdHVyZShtZXNzYWdlOiBCdWZmZXIsIHNpZ25hdHVyZTogQnVmZmVyKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQXZheHBMaWIuVXRpbHMucmVjb3ZlcnlTaWduYXR1cmUodGhpcy5fc3RhdGljc0NvaW4ubmV0d29yayBhcyBBdmFsYW5jaGVOZXR3b3JrLCBtZXNzYWdlLCBzaWduYXR1cmUpO1xuICB9XG5cbiAgYXN5bmMgc2lnbk1lc3NhZ2Uoa2V5OiBLZXlQYWlyLCBtZXNzYWdlOiBzdHJpbmcgfCBCdWZmZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIGNvbnN0IHBydiA9IG5ldyBBdmF4cExpYi5LZXlQYWlyKGtleSkuZ2V0UHJpdmF0ZUtleSgpO1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdJbnZhbGlkIGtleSBwYWlyIG9wdGlvbnMnKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgbWVzc2FnZSA9IEJ1ZmZlci5mcm9tKG1lc3NhZ2UsICdoZXgnKTtcbiAgICB9XG4gICAgcmV0dXJuIEF2YXhwTGliLlV0aWxzLmNyZWF0ZVNpZ25hdHVyZSh0aGlzLl9zdGF0aWNzQ29pbi5uZXR3b3JrIGFzIEF2YWxhbmNoZU5ldHdvcmssIG1lc3NhZ2UsIHBydik7XG4gIH1cblxuICBwcml2YXRlIGdldEJ1aWxkZXIoKTogQXZheHBMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gICAgcmV0dXJuIG5ldyBBdmF4cExpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCh0aGlzLmdldENoYWluKCkpKTtcbiAgfVxufVxuIl19
@@ -16,7 +16,7 @@ const iface_1 = require("./iface");
16
16
  class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
17
17
  constructor(_coinConfig) {
18
18
  super(_coinConfig);
19
- this.transaction._fee = new avalanche_1.BN(this.transaction._network.txFee);
19
+ this.transaction._fee.fee = this.transaction._network.txFee;
20
20
  }
21
21
  /**
22
22
  * The internal chain is the one set for the coin in coinConfig.network. The external chain is the other chain involved.
@@ -119,4 +119,4 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
119
119
  }
120
120
  }
121
121
  exports.AtomicTransactionBuilder = AtomicTransactionBuilder;
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EseUNBQXFEO0FBQ3JELG9EQUE0QjtBQUM1Qiw2REFBMEQ7QUFDMUQsK0RBTXdDO0FBRXhDLDhDQUF3RDtBQUN4RCxtQ0FBb0Q7QUFFcEQ7O0dBRUc7QUFDSCxNQUFzQix3QkFBeUIsU0FBUSx1Q0FBa0I7SUFHdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxjQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLE9BQXdCO1FBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHFCQUFxQjtJQUNyQjs7Ozs7T0FLRztJQUNPLGlCQUFpQixDQUFDLE1BQVU7UUFLcEMsTUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBeUIsRUFBRSxDQUFDO1FBRXpDLHNCQUFzQjtRQUN0QixJQUFJLFlBQVksR0FBTyxJQUFJLGNBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqQyx5Q0FBeUM7UUFDekMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRW5DLE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7UUFFckM7Ozs7Ozs7OztVQVNFO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsb0RBQW9EO1lBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDNUQsTUFBTSxhQUFhLEdBQWlCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvRztZQUNELGlGQUFpRjtRQUNuRixDQUFDLENBQUMsQ0FBQztRQUVILHFCQUFxQjtRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTs7WUFDdkMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDVCxNQUFNLElBQUksZ0NBQXFCLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUN0RDtZQUNELDhDQUE4QztZQUM5QyxJQUFJLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0U7WUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7Z0JBQ2xELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2FBQzlEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O1lBQzFDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxpQ0FBeUIsRUFBRTtnQkFDL0MsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVDLE1BQU0sR0FBRyxHQUFPLElBQUksY0FBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEMsTUFBTSxTQUFTLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25ELE1BQU0sY0FBYyxHQUFHLE1BQUEsSUFBSSxDQUFDLGNBQWMsbUNBQUksRUFBRSxDQUFDO2dCQUVqRCxrQ0FBa0M7Z0JBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLFlBQVksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUVyQyxNQUFNLGlCQUFpQixHQUFHLElBQUksOEJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRXJELHlCQUF5QjtnQkFDekIsSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFO29CQUMzRCxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQzNHLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDM0csV0FBVyxDQUFDLElBQUksQ0FDZCxrQ0FBcUIsQ0FDbkIsaUJBQWlCLENBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSTtvQkFDekMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxTQUFTLENBQUMsQ0FDdkYsQ0FDRixDQUFDO2lCQUNIO3FCQUFNO29CQUNMLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDM0csaUJBQWlCLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUMzRyxXQUFXLENBQUMsSUFBSSxDQUNkLGtDQUFxQixDQUNuQixpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsRUFDbkMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxTQUFTLENBQUMsQ0FDdkYsQ0FDRixDQUFDO2lCQUNIO2dCQUVELE1BQU0sS0FBSyxHQUFzQixJQUFJLDhCQUFpQixDQUNwRCxPQUFPLEVBQ1AsU0FBUyxFQUNULElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUN6QixpQkFBaUIsQ0FDbEIsQ0FBQztnQkFDRixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3BCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxJQUFJLGdDQUFxQixDQUM3QixvQkFBb0IsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLFdBQVcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUN4RixDQUFDO1NBQ0g7YUFBTSxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdkMsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLCtCQUFrQixDQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFDekIsSUFBSSwrQkFBa0IsQ0FDcEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FDNUIsQ0FDRixDQUNGLENBQUM7U0FDSDtRQUNELE9BQU87WUFDTCxNQUFNO1lBQ04sT0FBTztZQUNQLFdBQVc7U0FDWixDQUFDO0lBQ0osQ0FBQztDQUdGO0FBbkpELDREQW1KQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCTiwgQnVmZmVyIGFzIEJ1ZmZlckF2YXggfSBmcm9tICdhdmFsYW5jaGUnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgU0VDUFRyYW5zZmVySW5wdXQsXG4gIFNFQ1BUcmFuc2Zlck91dHB1dCxcbiAgU2VsZWN0Q3JlZGVudGlhbENsYXNzLFxuICBUcmFuc2ZlcmFibGVJbnB1dCxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0LFxufSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL3BsYXRmb3Jtdm0nO1xuaW1wb3J0IHsgQ3JlZGVudGlhbCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2NvbW1vbic7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCB9IGZyb20gJy4vaWZhY2UnO1xuXG4vKipcbiAqIENyb3NzLWNoYWluIHRyYW5zYWN0aW9ucyAoZXhwb3J0IGFuZCBpbXBvcnQpIGFyZSBhdG9taWMgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfZXh0ZXJuYWxDaGFpbklkOiBCdWZmZXJBdmF4O1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUgPSBuZXcgQk4odGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay50eEZlZSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGNoYWluIGlzIHRoZSBvbmUgc2V0IGZvciB0aGUgY29pbiBpbiBjb2luQ29uZmlnLm5ldHdvcmsuIFRoZSBleHRlcm5hbCBjaGFpbiBpcyB0aGUgb3RoZXIgY2hhaW4gaW52b2x2ZWQuXG4gICAqIFRoZSBleHRlcm5hbCBjaGFpbiBpZCBpcyB0aGUgc291cmNlIG9uIGltcG9ydCBhbmQgdGhlIGRlc3RpbmF0aW9uIG9uIGV4cG9ydC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYWluSWQgLSBpZCBvZiB0aGUgZXh0ZXJuYWwgY2hhaW5cbiAgICovXG4gIGV4dGVybmFsQ2hhaW5JZChjaGFpbklkOiBzdHJpbmcgfCBCdWZmZXIpOiB0aGlzIHtcbiAgICBjb25zdCBuZXdUYXJnZXRDaGFpbklkID0gdHlwZW9mIGNoYWluSWQgPT09ICdzdHJpbmcnID8gdXRpbHMuY2I1OERlY29kZShjaGFpbklkKSA6IEJ1ZmZlckF2YXguZnJvbShjaGFpbklkKTtcbiAgICB0aGlzLnZhbGlkYXRlQ2hhaW5JZChuZXdUYXJnZXRDaGFpbklkKTtcbiAgICB0aGlzLl9leHRlcm5hbENoYWluSWQgPSBuZXdUYXJnZXRDaGFpbklkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gcmVnaW9uIHV0eG8gZW5naW5lXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgbXVzdCBiZSAyIGFuZCBzaW5jZSBvdXRwdXQgYWx3YXlzIGdldCByZW9yZGVyZWQgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgY2FuIGFsd2F5cyBhZGQgc2lnbmF0dXJlcyBpbiB0aGUgY29ycmVjdCBsb2NhdGlvblxuICAgKiBUbyBmaW5kIHRoZSBjb3JyZWN0IGxvY2F0aW9uIGZvciB0aGUgc2lnbmF0dXJlLCB3ZSB1c2UgdGhlIG91dHB1dCdzIGFkZHJlc3NlcyB0byBjcmVhdGUgdGhlIHNpZ25hdHVyZUlkeCBpbiB0aGUgb3JkZXIgdGhhdCB3ZSBkZXNpcmVcbiAgICogMDogdXNlciBrZXksIDE6IGhzbSBrZXksIDI6IHJlY292ZXJ5IGtleVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlSW5wdXRPdXRwdXQoYW1vdW50OiBCTik6IHtcbiAgICBpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W107XG4gICAgb3V0cHV0czogVHJhbnNmZXJhYmxlT3V0cHV0W107XG4gICAgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXTtcbiAgfSB7XG4gICAgY29uc3QgaW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdID0gW107XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNmZXJhYmxlT3V0cHV0W10gPSBbXTtcblxuICAgIC8vIGFtb3VudCBzcGVudCBzbyBmYXJcbiAgICBsZXQgY3VycmVudFRvdGFsOiBCTiA9IG5ldyBCTigwKTtcblxuICAgIC8vIGRlbGVnYXRpbmcgYW5kIHZhbGlkYXRpbmcgaGF2ZSBubyBmZWVzXG4gICAgY29uc3QgdG90YWxUYXJnZXQgPSBhbW91bnQuY2xvbmUoKTtcblxuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW10gPSBbXTtcblxuICAgIC8qXG4gICAgQSA9IHVzZXIga2V5XG4gICAgQiA9IGhzbSBrZXlcbiAgICBDID0gYmFja3VwIGtleVxuICAgIGJpdGdvQWRkcmVzc2VzID0gYml0Z28gYWRkcmVzc2VzIFsgQSwgQiwgQyBdXG4gICAgdXR4by5hZGRyZXNzZXMgPSBJTVMgYWRkcmVzc2VzIFsgQiwgQywgQSBdXG4gICAgdXR4by5hZGRyZXNzZXNJbmRleCA9IFsgMiwgMCwgMSBdXG4gICAgd2UgcGljayAwLCAxIGZvciBub24tcmVjb3ZlcnlcbiAgICB3ZSBwaWNrIDEsIDIgZm9yIHJlY292ZXJ5XG4gICAgKi9cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5mb3JFYWNoKCh1dHhvKSA9PiB7XG4gICAgICAvLyBpbiBXUCwgb3V0cHV0LmFkZHJlc3Nlc0luZGV4IGlzIGVtcHR5LCBzbyBmaWxsIGl0XG4gICAgICBpZiAoIXV0eG8uYWRkcmVzc2VzSW5kZXggfHwgdXR4by5hZGRyZXNzZXNJbmRleC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc3QgdXR4b0FkZHJlc3NlczogQnVmZmVyQXZheFtdID0gdXR4by5hZGRyZXNzZXMubWFwKChhKSA9PiB1dGlscy5wYXJzZUFkZHJlc3MoYSkpO1xuICAgICAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5tYXAoKGEpID0+IHV0eG9BZGRyZXNzZXMuZmluZEluZGV4KCh1KSA9PiBhLmVxdWFscyh1KSkpO1xuICAgICAgfVxuICAgICAgLy8gaW4gT1ZDLCBvdXRwdXQuYWRkcmVzc2VzSW5kZXggaXMgZGVmaW5lZCBjb3JyZWN0bHkgZnJvbSB0aGUgcHJldmlvdXMgaXRlcmF0aW9uXG4gICAgfSk7XG5cbiAgICAvLyB2YWxpZGF0ZSB0aGUgdXR4b3NcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5mb3JFYWNoKCh1dHhvKSA9PiB7XG4gICAgICBpZiAoIXV0eG8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVXR4byBpcyB1bmRlZmluZWQnKTtcbiAgICAgIH1cbiAgICAgIC8vIGFkZHJlc3Nlc0luZGV4IHNob3VsZCBuZXZlciBoYXZlIGEgbWlzbWF0Y2hcbiAgICAgIGlmICh1dHhvLmFkZHJlc3Nlc0luZGV4Py5pbmNsdWRlcygtMSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQWRkcmVzc2VzIGFyZSBpbmNvbnNpc3RlbnQ6ICcgKyB1dHhvLnR4aWQpO1xuICAgICAgfVxuICAgICAgaWYgKHV0eG8udGhyZXNob2xkICE9PSB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVGhyZXNob2xkIGlzIGluY29uc2lzdGVudCcpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bywgaSkgPT4ge1xuICAgICAgaWYgKHV0eG8ub3V0cHV0SUQgPT09IFNFQ1AyNTZLMV9UcmFuc2Zlcl9PdXRwdXQpIHtcbiAgICAgICAgY29uc3QgdHhpZEJ1ZiA9IHV0aWxzLmNiNThEZWNvZGUodXR4by50eGlkKTtcbiAgICAgICAgY29uc3QgYW10OiBCTiA9IG5ldyBCTih1dHhvLmFtb3VudCk7XG4gICAgICAgIGNvbnN0IG91dHB1dGlkeCA9IHV0aWxzLmNiNThEZWNvZGUodXR4by5vdXRwdXRpZHgpO1xuICAgICAgICBjb25zdCBhZGRyZXNzZXNJbmRleCA9IHV0eG8uYWRkcmVzc2VzSW5kZXggPz8gW107XG5cbiAgICAgICAgLy8gZWl0aGVyIHVzZXIgKDApIG9yIHJlY292ZXJ5ICgyKVxuICAgICAgICBjb25zdCBmaXJzdEluZGV4ID0gdGhpcy5yZWNvdmVyU2lnbmVyID8gMiA6IDA7XG4gICAgICAgIGNvbnN0IGJpdGdvSW5kZXggPSAxO1xuICAgICAgICBjdXJyZW50VG90YWwgPSBjdXJyZW50VG90YWwuYWRkKGFtdCk7XG5cbiAgICAgICAgY29uc3Qgc2VjcFRyYW5zZmVySW5wdXQgPSBuZXcgU0VDUFRyYW5zZmVySW5wdXQoYW10KTtcblxuICAgICAgICAvLyBpZiB1c2VyL2JhY2t1cCA+IGJpdGdvXG4gICAgICAgIGlmIChhZGRyZXNzZXNJbmRleFtiaXRnb0luZGV4XSA8IGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdKSB7XG4gICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2JpdGdvSW5kZXhdKTtcbiAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0pO1xuICAgICAgICAgIGNyZWRlbnRpYWxzLnB1c2goXG4gICAgICAgICAgICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MoXG4gICAgICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmdldENyZWRlbnRpYWxJRCgpLCAvLyA5XG4gICAgICAgICAgICAgIFsnJywgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XS50b1N0cmluZygnaGV4JyldLm1hcCh1dGlscy5jcmVhdGVTaWcpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0pO1xuICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChhZGRyZXNzZXNJbmRleFtiaXRnb0luZGV4XSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tiaXRnb0luZGV4XSk7XG4gICAgICAgICAgY3JlZGVudGlhbHMucHVzaChcbiAgICAgICAgICAgIFNlbGVjdENyZWRlbnRpYWxDbGFzcyhcbiAgICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuZ2V0Q3JlZGVudGlhbElEKCksXG4gICAgICAgICAgICAgIFt0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdLnRvU3RyaW5nKCdoZXgnKSwgJyddLm1hcCh1dGlscy5jcmVhdGVTaWcpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0OiBUcmFuc2ZlcmFibGVJbnB1dCA9IG5ldyBUcmFuc2ZlcmFibGVJbnB1dChcbiAgICAgICAgICB0eGlkQnVmLFxuICAgICAgICAgIG91dHB1dGlkeCxcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0XG4gICAgICAgICk7XG4gICAgICAgIGlucHV0cy5wdXNoKGlucHV0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChjdXJyZW50VG90YWwubHQodG90YWxUYXJnZXQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgVXR4byBvdXRwdXRzIGdldCAke2N1cnJlbnRUb3RhbC50b1N0cmluZygpfSBhbmQgJHt0b3RhbFRhcmdldC50b1N0cmluZygpfSBpcyByZXF1aXJlZGBcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChjdXJyZW50VG90YWwuZ3QodG90YWxUYXJnZXQpKSB7XG4gICAgICBvdXRwdXRzLnB1c2goXG4gICAgICAgIG5ldyBUcmFuc2ZlcmFibGVPdXRwdXQoXG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCxcbiAgICAgICAgICBuZXcgU0VDUFRyYW5zZmVyT3V0cHV0KFxuICAgICAgICAgICAgY3VycmVudFRvdGFsLnN1Yih0b3RhbFRhcmdldCksXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGRcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpbnB1dHMsXG4gICAgICBvdXRwdXRzLFxuICAgICAgY3JlZGVudGlhbHMsXG4gICAgfTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EseUNBQXFEO0FBQ3JELG9EQUE0QjtBQUM1Qiw2REFBMEQ7QUFDMUQsK0RBTXdDO0FBRXhDLDhDQUF3RDtBQUN4RCxtQ0FBb0Q7QUFFcEQ7O0dBRUc7QUFDSCxNQUFzQix3QkFBeUIsU0FBUSx1Q0FBa0I7SUFHdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUMsT0FBd0I7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCOzs7OztPQUtHO0lBQ08saUJBQWlCLENBQUMsTUFBVTtRQUtwQyxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUF5QixFQUFFLENBQUM7UUFFekMsc0JBQXNCO1FBQ3RCLElBQUksWUFBWSxHQUFPLElBQUksY0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpDLHlDQUF5QztRQUN6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SyxDQUFDLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQyxNQUFNLElBQUksZ0NBQXFCLENBQzdCLG9CQUFvQixZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsV0FBVyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQ3hGLENBQUM7U0FDSDthQUFNLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN2QyxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksK0JBQWtCLENBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUN6QixJQUFJLCtCQUFrQixDQUNwQixZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUM1QixDQUNGLENBQ0YsQ0FBQztTQUNIO1FBQ0QsT0FBTztZQUNMLE1BQU07WUFDTixPQUFPO1lBQ1AsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDO0NBR0Y7QUFuSkQsNERBbUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEJOLCBCdWZmZXIgYXMgQnVmZmVyQXZheCB9IGZyb20gJ2F2YWxhbmNoZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQge1xuICBTRUNQVHJhbnNmZXJJbnB1dCxcbiAgU0VDUFRyYW5zZmVyT3V0cHV0LFxuICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MsXG4gIFRyYW5zZmVyYWJsZUlucHV0LFxuICBUcmFuc2ZlcmFibGVPdXRwdXQsXG59IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgeyBDcmVkZW50aWFsIH0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvY29tbW9uJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0IH0gZnJvbSAnLi9pZmFjZSc7XG5cbi8qKlxuICogQ3Jvc3MtY2hhaW4gdHJhbnNhY3Rpb25zIChleHBvcnQgYW5kIGltcG9ydCkgYXJlIGF0b21pYyBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9leHRlcm5hbENoYWluSWQ6IEJ1ZmZlckF2YXg7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2ZlZS5mZWUgPSB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLnR4RmVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCBjaGFpbiBpcyB0aGUgb25lIHNldCBmb3IgdGhlIGNvaW4gaW4gY29pbkNvbmZpZy5uZXR3b3JrLiBUaGUgZXh0ZXJuYWwgY2hhaW4gaXMgdGhlIG90aGVyIGNoYWluIGludm9sdmVkLlxuICAgKiBUaGUgZXh0ZXJuYWwgY2hhaW4gaWQgaXMgdGhlIHNvdXJjZSBvbiBpbXBvcnQgYW5kIHRoZSBkZXN0aW5hdGlvbiBvbiBleHBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFpbklkIC0gaWQgb2YgdGhlIGV4dGVybmFsIGNoYWluXG4gICAqL1xuICBleHRlcm5hbENoYWluSWQoY2hhaW5JZDogc3RyaW5nIHwgQnVmZmVyKTogdGhpcyB7XG4gICAgY29uc3QgbmV3VGFyZ2V0Q2hhaW5JZCA9IHR5cGVvZiBjaGFpbklkID09PSAnc3RyaW5nJyA/IHV0aWxzLmNiNThEZWNvZGUoY2hhaW5JZCkgOiBCdWZmZXJBdmF4LmZyb20oY2hhaW5JZCk7XG4gICAgdGhpcy52YWxpZGF0ZUNoYWluSWQobmV3VGFyZ2V0Q2hhaW5JZCk7XG4gICAgdGhpcy5fZXh0ZXJuYWxDaGFpbklkID0gbmV3VGFyZ2V0Q2hhaW5JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHJlZ2lvbiB1dHhvIGVuZ2luZVxuICAvKipcbiAgICogVGhyZXNob2xkIG11c3QgYmUgMiBhbmQgc2luY2Ugb3V0cHV0IGFsd2F5cyBnZXQgcmVvcmRlcmVkIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIGNhbiBhbHdheXMgYWRkIHNpZ25hdHVyZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb25cbiAgICogVG8gZmluZCB0aGUgY29ycmVjdCBsb2NhdGlvbiBmb3IgdGhlIHNpZ25hdHVyZSwgd2UgdXNlIHRoZSBvdXRwdXQncyBhZGRyZXNzZXMgdG8gY3JlYXRlIHRoZSBzaWduYXR1cmVJZHggaW4gdGhlIG9yZGVyIHRoYXQgd2UgZGVzaXJlXG4gICAqIDA6IHVzZXIga2V5LCAxOiBoc20ga2V5LCAyOiByZWNvdmVyeSBrZXlcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUlucHV0T3V0cHV0KGFtb3VudDogQk4pOiB7XG4gICAgaW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdO1xuICAgIG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdO1xuICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW107XG4gIH0ge1xuICAgIGNvbnN0IGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXSA9IFtdO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdID0gW107XG5cbiAgICAvLyBhbW91bnQgc3BlbnQgc28gZmFyXG4gICAgbGV0IGN1cnJlbnRUb3RhbDogQk4gPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBkZWxlZ2F0aW5nIGFuZCB2YWxpZGF0aW5nIGhhdmUgbm8gZmVlc1xuICAgIGNvbnN0IHRvdGFsVGFyZ2V0ID0gYW1vdW50LmNsb25lKCk7XG5cbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdID0gW107XG5cbiAgICAvKlxuICAgIEEgPSB1c2VyIGtleVxuICAgIEIgPSBoc20ga2V5XG4gICAgQyA9IGJhY2t1cCBrZXlcbiAgICBiaXRnb0FkZHJlc3NlcyA9IGJpdGdvIGFkZHJlc3NlcyBbIEEsIEIsIEMgXVxuICAgIHV0eG8uYWRkcmVzc2VzID0gSU1TIGFkZHJlc3NlcyBbIEIsIEMsIEEgXVxuICAgIHV0eG8uYWRkcmVzc2VzSW5kZXggPSBbIDIsIDAsIDEgXVxuICAgIHdlIHBpY2sgMCwgMSBmb3Igbm9uLXJlY292ZXJ5XG4gICAgd2UgcGljayAxLCAyIGZvciByZWNvdmVyeVxuICAgICovXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgLy8gaW4gV1AsIG91dHB1dC5hZGRyZXNzZXNJbmRleCBpcyBlbXB0eSwgc28gZmlsbCBpdFxuICAgICAgaWYgKCF1dHhvLmFkZHJlc3Nlc0luZGV4IHx8IHV0eG8uYWRkcmVzc2VzSW5kZXgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHV0eG9BZGRyZXNzZXM6IEJ1ZmZlckF2YXhbXSA9IHV0eG8uYWRkcmVzc2VzLm1hcCgoYSkgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGEpKTtcbiAgICAgICAgdXR4by5hZGRyZXNzZXNJbmRleCA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChhKSA9PiB1dHhvQWRkcmVzc2VzLmZpbmRJbmRleCgodSkgPT4gYS5lcXVhbHModSkpKTtcbiAgICAgIH1cbiAgICAgIC8vIGluIE9WQywgb3V0cHV0LmFkZHJlc3Nlc0luZGV4IGlzIGRlZmluZWQgY29ycmVjdGx5IGZyb20gdGhlIHByZXZpb3VzIGl0ZXJhdGlvblxuICAgIH0pO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhlIHV0eG9zXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgaWYgKCF1dHhvKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1V0eG8gaXMgdW5kZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICAvLyBhZGRyZXNzZXNJbmRleCBzaG91bGQgbmV2ZXIgaGF2ZSBhIG1pc21hdGNoXG4gICAgICBpZiAodXR4by5hZGRyZXNzZXNJbmRleD8uaW5jbHVkZXMoLTEpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0FkZHJlc3NlcyBhcmUgaW5jb25zaXN0ZW50OiAnICsgdXR4by50eGlkKTtcbiAgICAgIH1cbiAgICAgIGlmICh1dHhvLnRocmVzaG9sZCAhPT0gdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RocmVzaG9sZCBpcyBpbmNvbnNpc3RlbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8sIGkpID0+IHtcbiAgICAgIGlmICh1dHhvLm91dHB1dElEID09PSBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0KSB7XG4gICAgICAgIGNvbnN0IHR4aWRCdWYgPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8udHhpZCk7XG4gICAgICAgIGNvbnN0IGFtdDogQk4gPSBuZXcgQk4odXR4by5hbW91bnQpO1xuICAgICAgICBjb25zdCBvdXRwdXRpZHggPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8ub3V0cHV0aWR4KTtcbiAgICAgICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuXG4gICAgICAgIC8vIGVpdGhlciB1c2VyICgwKSBvciByZWNvdmVyeSAoMilcbiAgICAgICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgICAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcbiAgICAgICAgY3VycmVudFRvdGFsID0gY3VycmVudFRvdGFsLmFkZChhbXQpO1xuXG4gICAgICAgIGNvbnN0IHNlY3BUcmFuc2ZlcklucHV0ID0gbmV3IFNFQ1BUcmFuc2ZlcklucHV0KGFtdCk7XG5cbiAgICAgICAgLy8gaWYgdXNlci9iYWNrdXAgPiBiaXRnb1xuICAgICAgICBpZiAoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0gPCBhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSkge1xuICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChhZGRyZXNzZXNJbmRleFtiaXRnb0luZGV4XSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tiaXRnb0luZGV4XSk7XG4gICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdKTtcbiAgICAgICAgICBjcmVkZW50aWFscy5wdXNoKFxuICAgICAgICAgICAgU2VsZWN0Q3JlZGVudGlhbENsYXNzKFxuICAgICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5nZXRDcmVkZW50aWFsSUQoKSwgLy8gOVxuICAgICAgICAgICAgICBbJycsIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0udG9TdHJpbmcoJ2hleCcpXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2ZpcnN0SW5kZXhdKTtcbiAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbYml0Z29JbmRleF0pO1xuICAgICAgICAgIGNyZWRlbnRpYWxzLnB1c2goXG4gICAgICAgICAgICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MoXG4gICAgICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmdldENyZWRlbnRpYWxJRCgpLFxuICAgICAgICAgICAgICBbdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XS50b1N0cmluZygnaGV4JyksICcnXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnB1dDogVHJhbnNmZXJhYmxlSW5wdXQgPSBuZXcgVHJhbnNmZXJhYmxlSW5wdXQoXG4gICAgICAgICAgdHhpZEJ1ZixcbiAgICAgICAgICBvdXRwdXRpZHgsXG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCxcbiAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dFxuICAgICAgICApO1xuICAgICAgICBpbnB1dHMucHVzaChpbnB1dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY3VycmVudFRvdGFsLmx0KHRvdGFsVGFyZ2V0KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYFV0eG8gb3V0cHV0cyBnZXQgJHtjdXJyZW50VG90YWwudG9TdHJpbmcoKX0gYW5kICR7dG90YWxUYXJnZXQudG9TdHJpbmcoKX0gaXMgcmVxdWlyZWRgXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFRvdGFsLmd0KHRvdGFsVGFyZ2V0KSkge1xuICAgICAgb3V0cHV0cy5wdXNoKFxuICAgICAgICBuZXcgVHJhbnNmZXJhYmxlT3V0cHV0KFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICAgICAgbmV3IFNFQ1BUcmFuc2Zlck91dHB1dChcbiAgICAgICAgICAgIGN1cnJlbnRUb3RhbC5zdWIodG90YWxUYXJnZXQpLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyxcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXRzLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIGNyZWRlbnRpYWxzLFxuICAgIH07XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -2,8 +2,9 @@
2
2
  import { TransactionType } from '@bitgo/sdk-core';
3
3
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
4
4
  import { TransactionBuilder } from './transactionBuilder';
5
- import { AddDelegatorTx, BaseTx, ParseableOutput, TransferableInput, TransferableOutput, Tx } from 'avalanche/dist/apis/platformvm';
5
+ import { AddDelegatorTx, ParseableOutput, TransferableInput, TransferableOutput } from 'avalanche/dist/apis/platformvm';
6
6
  import { BN } from 'avalanche';
7
+ import { Tx, BaseTx } from './iface';
7
8
  import { Credential } from 'avalanche/dist/common';
8
9
  export declare class DelegatorTxBuilder extends TransactionBuilder {
9
10
  protected _nodeID: string;
@@ -1 +1 @@
1
- {"version":3,"file":"delegatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/delegatorTxBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAuC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAoB,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,cAAc,EACd,MAAM,EACN,eAAe,EAMf,iBAAiB,EACjB,kBAAkB,EAClB,EAAE,EAEH,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAY,EAAE,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IACvB,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;IAE3B;;;OAGG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAO5C;;;OAGG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM3B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKrC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;IAQrC;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpC;;;;;;;OAOG;IACH,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI;IAgBvD;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI;IASrC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IA6BzB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAI7D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAItD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAyBvC;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,IAAI,kBAAkB;IAYhD,SAAS,CAAC,kBAAkB,IAAI,eAAe;IAW/C;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,IAAI;QAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;KAC3B;CAkIF"}
1
+ {"version":3,"file":"delegatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/delegatorTxBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAuC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAoB,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,cAAc,EAEd,eAAe,EAMf,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAY,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAA6B,EAAE,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IACvB,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;IAE3B;;;OAGG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM5C;;;OAGG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM3B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKrC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;IAQrC;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpC;;;;;;;OAOG;IACH,qBAAqB,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI;IAgBvD;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI;IASrC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IA6BzB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAI7D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc;IAItD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAyBvC;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,IAAI,kBAAkB;IAYhD,SAAS,CAAC,kBAAkB,IAAI,eAAe;IAW/C;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,IAAI;QAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;KAC3B;CAkIF"}
@@ -10,6 +10,7 @@ const platformvm_1 = require("avalanche/dist/apis/platformvm");
10
10
  const avalanche_1 = require("avalanche");
11
11
  const iface_1 = require("./iface");
12
12
  const utils_1 = __importDefault(require("./utils"));
13
+ const utxoEngine_1 = require("./utxoEngine");
13
14
  class DelegatorTxBuilder extends transactionBuilder_1.TransactionBuilder {
14
15
  /**
15
16
  *
@@ -19,7 +20,6 @@ class DelegatorTxBuilder extends transactionBuilder_1.TransactionBuilder {
19
20
  super(coinConfig);
20
21
  const network = coinConfig.network;
21
22
  this._stakeAmount = new avalanche_1.BN(network.minStake);
22
- this.transaction._fee = new avalanche_1.BN(0);
23
23
  }
24
24
  /**
25
25
  * get transaction type
@@ -149,7 +149,7 @@ class DelegatorTxBuilder extends transactionBuilder_1.TransactionBuilder {
149
149
  this._startTime = baseTx.getStartTime();
150
150
  this._endTime = baseTx.getEndTime();
151
151
  this._stakeAmount = baseTx.getStakeAmount();
152
- this.transaction._utxos = this.recoverUtxos(baseTx.getIns());
152
+ this.transaction._utxos = utxoEngine_1.recoverUtxos(baseTx.getIns());
153
153
  return this;
154
154
  }
155
155
  static verifyTxType(baseTx) {
@@ -284,4 +284,4 @@ class DelegatorTxBuilder extends transactionBuilder_1.TransactionBuilder {
284
284
  }
285
285
  }
286
286
  exports.DelegatorTxBuilder = DelegatorTxBuilder;
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdG9yVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kZWxlZ2F0b3JUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXVGO0FBRXZGLDZEQUEwRDtBQUMxRCwrREFhd0M7QUFDeEMseUNBQXlDO0FBQ3pDLG1DQUFvRDtBQUNwRCxvREFBNEI7QUFHNUIsTUFBYSxrQkFBbUIsU0FBUSx1Q0FBa0I7SUFNeEQ7OztPQUdHO0lBQ0gsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQTJCLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGNBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxjQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsWUFBWSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsT0FBMEI7UUFDeEMsTUFBTSxlQUFlLEdBQUcsT0FBTyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQWE7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFH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QUMsY0FBYyxFQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQzVCLENBQ0YsQ0FDRixDQUFDO2FBQ0g7U0FDRjtRQUNELGlGQUFpRjtRQUNqRixPQUFPO1lBQ0wsTUFBTTtZQUNOLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTztZQUNyRixXQUFXLEVBQUUsV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXO1NBQ25GLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUEzV0QsZ0RBMldDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBOb3RTdXBwb3J0ZWQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBBdmFsYW5jaGVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgQWRkRGVsZWdhdG9yVHgsXG4gIEJhc2VUeCxcbiAgUGFyc2VhYmxlT3V0cHV0LFxuICBQbGF0Zm9ybVZNQ29uc3RhbnRzLFxuICBTRUNQT3duZXJPdXRwdXQsXG4gIFNFQ1BUcmFuc2ZlcklucHV0LFxuICBTRUNQVHJhbnNmZXJPdXRwdXQsXG4gIFNlbGVjdENyZWRlbnRpYWxDbGFzcyxcbiAgVHJhbnNmZXJhYmxlSW5wdXQsXG4gIFRyYW5zZmVyYWJsZU91dHB1dCxcbiAgVHgsXG4gIFVuc2lnbmVkVHgsXG59IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgeyBCaW5Ub29scywgQk4gfSBmcm9tICdhdmFsYW5jaGUnO1xuaW1wb3J0IHsgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2NvbW1vbic7XG5cbmV4cG9ydCBjbGFzcyBEZWxlZ2F0b3JUeEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX25vZGVJRDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3N0YXJ0VGltZTogQk47XG4gIHByb3RlY3RlZCBfZW5kVGltZTogQk47XG4gIHByb3RlY3RlZCBfc3Rha2VBbW91bnQ6IEJOO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY29pbkNvbmZpZ1xuICAgKi9cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICBjb25zdCBuZXR3b3JrID0gY29pbkNvbmZpZy5uZXR3b3JrIGFzIEF2YWxhbmNoZU5ldHdvcms7XG4gICAgdGhpcy5fc3Rha2VBbW91bnQgPSBuZXcgQk4obmV0d29yay5taW5TdGFrZSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlID0gbmV3IEJOKDApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5hZGREZWxlZ2F0b3I7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzc2VzIHdoZXJlIHJld2FyZCBzaG91bGQgYmUgZGVwb3NpdFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhZGRyZXNzIC0gc2luZ2xlIGFkZHJlc3Mgb3IgYXJyYXkgb2YgYWRkcmVzc2VzIHRvIHJlY2VpdmUgcmV3YXJkc1xuICAgKi9cbiAgcmV3YXJkQWRkcmVzc2VzKGFkZHJlc3M6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgY29uc3QgcmV3YXJkQWRkcmVzc2VzID0gYWRkcmVzcyBpbnN0YW5jZW9mIEFycmF5ID8gYWRkcmVzcyA6IFthZGRyZXNzXTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMgPSByZXdhcmRBZGRyZXNzZXMubWFwKHV0aWxzLnBhcnNlQWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIG5vZGVJRFxuICAgKi9cbiAgbm9kZUlEKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTm9kZUlEKHZhbHVlKTtcbiAgICB0aGlzLl9ub2RlSUQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBzdGFydCB0aW1lIG9mIHN0YWtpbmcgcGVyaW9kXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgc3RhcnRUaW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBuZXcgQk4odmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIGVuZCB0aW1lIG9mIHN0YWtpbmcgcGVyaW9kXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgZW5kVGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fZW5kVGltZSA9IG5ldyBCTih2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBzdGFrZUFtb3VudCh2YWx1ZTogQk4gfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZUJOID0gQk4uaXNCTih2YWx1ZSkgPyB2YWx1ZSA6IG5ldyBCTih2YWx1ZSk7XG4gICAgdGhpcy52YWxpZGF0ZVN0YWtlQW1vdW50KHZhbHVlQk4pO1xuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gdmFsdWVCTjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKlxuICAgKiB2YWxpZGF0ZXMgYSBjb3JyZWN0IE5vZGVJRCBpcyB1c2VkXG4gICAqIEBwYXJhbSBub2RlSURcbiAgICovXG4gIHZhbGlkYXRlTm9kZUlEKG5vZGVJRDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFub2RlSUQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgbm9kZUlEJyk7XG4gICAgfVxuICAgIGlmIChub2RlSUQuc2xpY2UoMCwgNikgIT09ICdOb2RlSUQnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBpbnZhbGlkIE5vZGVJRCB0YWcnKTtcbiAgICB9XG4gICAgY29uc3QgYmludG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpO1xuICAgIGlmICghKGJpbnRvb2xzLmI1OFRvQnVmZmVyKG5vZGVJRC5zbGljZSg3KSkubGVuZ3RoID09PSAyNCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IE5vZGVJRCBpcyBub3QgaW4gY2I1OCBmb3JtYXQnKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqICAgcHJvdGVjdGVkIF9zdGFydFRpbWU6IERhdGU7XG4gICAqICAgcHJvdGVjdGVkIF9lbmRUaW1lOiBEYXRlO1xuICAgKiAgIDIgd2Vla3MgPSAxMjA5NjAwXG4gICAqICAgMSB5ZWFyID0gMzE1NTY5MjZcbiAgICogICB1bml4IHRpbWUgc3RhbXAgYmFzZWQgb2ZmIHNlY29uZHNcbiAgICovXG4gIHZhbGlkYXRlU3Rha2VEdXJhdGlvbihzdGFydFRpbWU6IEJOLCBlbmRUaW1lOiBCTik6IHZvaWQge1xuICAgIGNvbnN0IG9uZURheUxhdGVyID0gbmV3IEJOKERhdGUubm93KCkpLmFkZChuZXcgQk4oODY0MDApKTtcbiAgICBpZiAoIXN0YXJ0VGltZS5ndChvbmVEYXlMYXRlcikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1N0YXJ0IHRpbWUgbmVlZHMgdG8gYmUgb25lIGRheSBncmVhdGVyIHRoYW4gY3VycmVudCB0aW1lJyk7XG4gICAgfVxuICAgIGlmIChlbmRUaW1lIDwgc3RhcnRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgZGF0ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHN0YXJ0IGRhdGUnKTtcbiAgICB9XG4gICAgaWYgKHN0YXJ0VGltZS5hZGQobmV3IEJOKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsubWluU3Rha2VEdXJhdGlvbikpLmd0KGVuZFRpbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgZGF0ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0d28gd2Vla3MnKTtcbiAgICB9XG4gICAgaWYgKGVuZFRpbWUuZ3Qoc3RhcnRUaW1lLmFkZChuZXcgQk4odGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5tYXhTdGFrZUR1cmF0aW9uKSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgZGF0ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBvbmUgeWVhcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYW1vdW50XG4gICAqL1xuICB2YWxpZGF0ZVN0YWtlQW1vdW50KGFtb3VudDogQk4pOiB2b2lkIHtcbiAgICBjb25zdCBtaW5TdGFrZSA9IG5ldyBCTih0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pblN0YWtlKTtcbiAgICBpZiAoYW1vdW50Lmx0KG1pblN0YWtlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWluaW11bSBzdGFraW5nIGFtb3VudCBpcyAnICsgTnVtYmVyKG1pblN0YWtlKSAvIDEwMDAwMDAwMDAgKyAnIEFWQVguJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCk6IHRoaXMge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCBiYXNlVHg6IEJhc2VUeCA9IHR4LmdldFVuc2lnbmVkVHgoKS5nZXRUcmFuc2FjdGlvbigpO1xuICAgIGlmICghdGhpcy52ZXJpZnlUeFR5cGUoYmFzZVR4KSkge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnVHJhbnNhY3Rpb24gY2Fubm90IGJlIHBhcnNlZCBvciBoYXMgYW4gdW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZScpO1xuICAgIH1cbiAgICAvLyBUaGUgU3Rha2VPdXRzIGlzIGEge0BsaW5rIHN0YWtlVHJhbnNmZXJPdXR9IHJlc3VsdC5cbiAgICAvLyBJdCdzIGV4cGVjdGVkIHRvIGhhdmUgb25seSBvbmUgb3V0cHV0cyB3aXRoIHRoZSBhZGRyZXNzZXMgb2YgdGhlIHNlbmRlci5cbiAgICBjb25zdCBvdXRwdXRzID0gYmFzZVR4LmdldFN0YWtlT3V0cygpO1xuICAgIGlmIChvdXRwdXRzLmxlbmd0aCAhPSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgZXh0ZXJuYWwgb3V0cHV0Jyk7XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07XG4gICAgaWYgKCFvdXRwdXQuZ2V0QXNzZXRJRCgpLmVxdWFscyh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXNzZXQgSUQgb2YgdGhlIG91dHB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3Qgc2VjcE91dCA9IG91dHB1dC5nZXRPdXRwdXQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSA9IHNlY3BPdXQuZ2V0TG9ja3RpbWUoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQgPSBzZWNwT3V0LmdldFRocmVzaG9sZCgpO1xuICAgIC8vIG91dHB1dCBhZGRyZXNzZXMgYXJlIHRoZSBzZW5kZXIgYWRkcmVzc2VzXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyA9IHNlY3BPdXQuZ2V0QWRkcmVzc2VzKCk7XG4gICAgdGhpcy5fbm9kZUlEID0gYmFzZVR4LmdldE5vZGVJRFN0cmluZygpO1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IGJhc2VUeC5nZXRTdGFydFRpbWUoKTtcbiAgICB0aGlzLl9lbmRUaW1lID0gYmFzZVR4LmdldEVuZFRpbWUoKTtcbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IGJhc2VUeC5nZXRTdGFrZUFtb3VudCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zID0gdGhpcy5yZWNvdmVyVXR4b3MoYmFzZVR4LmdldElucygpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBCYXNlVHgpOiBiYXNlVHggaXMgQWRkRGVsZWdhdG9yVHgge1xuICAgIHJldHVybiBiYXNlVHguZ2V0VHlwZUlEKCkgPT09IFBsYXRmb3JtVk1Db25zdGFudHMuQUREVkFMSURBVE9SVFg7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBCYXNlVHgpOiBiYXNlVHggaXMgQWRkRGVsZWdhdG9yVHgge1xuICAgIHJldHVybiBEZWxlZ2F0b3JUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKGJhc2VUeCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkQXZheHBUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlU3Rha2VEdXJhdGlvbih0aGlzLl9zdGFydFRpbWUsIHRoaXMuX2VuZFRpbWUpO1xuICAgIGNvbnN0IHsgaW5wdXRzLCBvdXRwdXRzLCBjcmVkZW50aWFscyB9ID0gdGhpcy5jcmVhdGVJbnB1dE91dHB1dCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24oXG4gICAgICBuZXcgVHgoXG4gICAgICAgIG5ldyBVbnNpZ25lZFR4KFxuICAgICAgICAgIG5ldyBBZGREZWxlZ2F0b3JUeChcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmtJRCxcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCxcbiAgICAgICAgICAgIG91dHB1dHMsXG4gICAgICAgICAgICBpbnB1dHMsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9tZW1vLFxuICAgICAgICAgICAgdXRpbHMuTm9kZUlEU3RyaW5nVG9CdWZmZXIodGhpcy5fbm9kZUlEKSxcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSxcbiAgICAgICAgICAgIHRoaXMuX2VuZFRpbWUsXG4gICAgICAgICAgICB0aGlzLl9zdGFrZUFtb3VudCxcbiAgICAgICAgICAgIFt0aGlzLnN0YWtlVHJhbnNmZXJPdXQoKV0sXG4gICAgICAgICAgICB0aGlzLnJld2FyZE93bmVyc091dHB1dCgpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjcmVkZW50aWFsc1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBTdGFrZU91dCB3aGVyZSB0aGUgcmVjaXBpZW50IGFkZHJlc3MgYXJlIHRoZSBzZW5kZXIuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBzdGFrZVRyYW5zZmVyT3V0KCk6IFRyYW5zZmVyYWJsZU91dHB1dCB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2ZlcmFibGVPdXRwdXQoXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgbmV3IFNFQ1BUcmFuc2Zlck91dHB1dChcbiAgICAgICAgdGhpcy5fc3Rha2VBbW91bnQsXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJld2FyZE93bmVyc091dHB1dCgpOiBQYXJzZWFibGVPdXRwdXQge1xuICAgIC8vIGlmIHRoZXJlIGFyZSBubyByZXdhcmQgYWRkcmVzc2VzLCB0aGUgc2VuZGVyIGdldHMgdGhlIHJld2FyZHNcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX3Jld2FyZEFkZHJlc3NlcyB8fCB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMgPSB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUGFyc2VhYmxlT3V0cHV0KFxuICAgICAgbmV3IFNFQ1BPd25lck91dHB1dCh0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMsIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLCB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgbXVzdCBiZSAyIGFuZCBzaW5jZSBvdXRwdXQgYWx3YXlzIGdldCByZW9yZGVyZWQgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgY2FuIGFsd2F5cyBhZGQgc2lnbmF0dXJlcyBpbiB0aGUgY29ycmVjdCBsb2NhdGlvblxuICAgKiBUbyBmaW5kIHRoZSBjb3JyZWN0IGxvY2F0aW9uIGZvciB0aGUgc2lnbmF0dXJlLCB3ZSB1c2UgdGhlIG91cHV0J3MgYWRkcmVzc2VzIHRvIGNyZWF0ZSB0aGUgc2lnbmF0dXJlSWR4IGluIHRoZSBvcmRlciB0aGF0IHdlIGRlc2lyZVxuICAgKiAwOiB1c2VyIGtleSwgMTogaHNtIGtleSwgMjogcmVjb3Zlcnkga2V5XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVJbnB1dE91dHB1dCgpOiB7XG4gICAgaW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdO1xuICAgIG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdO1xuICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW107XG4gIH0ge1xuICAgIGNvbnN0IGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXSA9IFtdO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdID0gW107XG5cbiAgICAvLyBhbW91bnQgc3BlbnQgc28gZmFyXG4gICAgbGV0IGN1cnJlbnRUb3RhbDogQk4gPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBkZWxlZ2F0aW5nIGFuZCB2YWxpZGF0aW5nIGhhdmUgbm8gZmVlc1xuICAgIGNvbnN0IHRvdGFsVGFyZ2V0ID0gdGhpcy5fc3Rha2VBbW91bnQuY2xvbmUoKTtcblxuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW10gPSBbXTtcblxuICAgIC8vIGNvbnZlcnQgZnJvbUFkZHJlc3NlcyB0byBzdHJpbmdcbiAgICAvLyBmcm9tQWRkcmVzc2VzID0gYml0Z28gb3JkZXIgaWYgd2UgYXJlIGluIFdQXG4gICAgLy8gZnJvbUFkZHJlc3NlcyA9IG9uY2hhaW4gb3JkZXIgaWYgd2UgYXJlIGluIGZyb21cbiAgICBjb25zdCBiaXRnb0FkZHJlc3NlcyA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChiKSA9PlxuICAgICAgdXRpbHMuYWRkcmVzc1RvU3RyaW5nKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuaHJwLCB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmFsaWFzLCBiKVxuICAgICk7XG5cbiAgICAvKiBcbiAgICBBID0gdXNlciBrZXlcbiAgICBCID0gaHNtIGtleVxuICAgIEMgPSBiYWNrdXAga2V5XG4gICAgYml0Z29BZGRyZXNzZXMgPSBiaXRnbyBhZGRyZXNzZXMgWyBBLCBCLCBDIF1cbiAgICB1dHhvLmFkZHJlc3NlcyA9IElNUyBhZGRyZXNzZXMgWyBCLCBDLCBBIF1cbiAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gWyAyLCAwLCAxIF1cbiAgICB3ZSBwaWNrIDAsIDEgZm9yIG5vbi1yZWNvdmVyeVxuICAgIHdlIHBpY2sgMSwgMiBmb3IgcmVjb3ZlcnlcbiAgICAqL1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8pID0+IHtcbiAgICAgIC8vIGluIFdQLCBvdXRwdXQuYWRkcmVzc2VzSW5kZXggaXMgZW1wdHksIHNvIGZpbGwgaXRcbiAgICAgIGlmICghdXR4by5hZGRyZXNzZXNJbmRleCB8fCB1dHhvLmFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gYml0Z29BZGRyZXNzZXMubWFwKChhKSA9PiB1dHhvLmFkZHJlc3Nlcy5pbmRleE9mKGEpKTtcbiAgICAgIH1cbiAgICAgIC8vIGluIE9WQywgb3V0cHV0LmFkZHJlc3Nlc0luZGV4IGlzIGRlZmluZWQgY29ycmVjdGx5IGZyb20gdGhlIHByZXZpb3VzIGl0ZXJhdGlvblxuICAgIH0pO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhlIHV0eG9zXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgaWYgKCF1dHhvKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1V0eG8gaXMgdW5kZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICAvLyBhZGRyZXNzZXNJbmRleCBzaG91bGQgbmV2ZSBoYXZlIGEgbWlzbWF0Y2hcbiAgICAgIGlmICh1dHhvLmFkZHJlc3Nlc0luZGV4Py5pbmNsdWRlcygtMSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQWRkcmVzc2VzIGFyZSBpbmNvbnNpc3RlbnQnKTtcbiAgICAgIH1cbiAgICAgIGlmICh1dHhvLnRocmVzaG9sZCAhPT0gdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RocmVzaG9sZCBpcyBpbmNvbnNpc3RlbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGlmIHdlIGFyZSBpbiBPVkMsIG5vbmUgb2YgdGhlIHV0eG9zIHdpbGwgaGF2ZSBhZGRyZXNzZXMgc2luY2UgdGhleSBjb21lIGZyb21cbiAgICAvLyBkZXNlcmlhbGl6ZWQgaW5wdXRzICh3aGljaCBkb24ndCBoYXZlIGFkZHJlc3NlcyksIG5vdCB0aGUgSU1TXG4gICAgY29uc3QgYnVpbGRPdXRwdXRzID0gdGhpcy50cmFuc2FjdGlvbi5fdXR4b3NbMF0uYWRkcmVzc2VzLmxlbmd0aCAhPT0gMDtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8sIGkpID0+IHtcbiAgICAgIGlmICh1dHhvLm91dHB1dElEID09PSBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0KSB7XG4gICAgICAgIGNvbnN0IHR4aWRCdWYgPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8udHhpZCk7XG4gICAgICAgIGNvbnN0IGFtdDogQk4gPSBuZXcgQk4odXR4by5hbW91bnQpO1xuICAgICAgICBjb25zdCBvdXRwdXRpZHggPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8ub3V0cHV0aWR4KTtcbiAgICAgICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuXG4gICAgICAgIC8vIGVpdGhlciB1c2VyICgwKSBvciByZWNvdmVyeSAoMilcbiAgICAgICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgICAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcbiAgICAgICAgY3VycmVudFRvdGFsID0gY3VycmVudFRvdGFsLmFkZChhbXQpO1xuXG4gICAgICAgIGNvbnN0IHNlY3BUcmFuc2ZlcklucHV0ID0gbmV3IFNFQ1BUcmFuc2ZlcklucHV0KGFtdCk7XG5cbiAgICAgICAgaWYgKCFidWlsZE91dHB1dHMpIHtcbiAgICAgICAgICBhZGRyZXNzZXNJbmRleC5mb3JFYWNoKChpKSA9PiBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoaSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tpXSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGlmIHVzZXIvYmFja3VwID4gYml0Z29cbiAgICAgICAgICBpZiAoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0gPCBhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSkge1xuICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2JpdGdvSW5kZXhdKTtcbiAgICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XSk7XG4gICAgICAgICAgICBjcmVkZW50aWFscy5wdXNoKFxuICAgICAgICAgICAgICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MoXG4gICAgICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuZ2V0Q3JlZGVudGlhbElEKCksIC8vIDlcbiAgICAgICAgICAgICAgICBbJycsIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0udG9TdHJpbmcoJ2hleCcpXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0pO1xuICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2JpdGdvSW5kZXhdKTtcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLnB1c2goXG4gICAgICAgICAgICAgIFNlbGVjdENyZWRlbnRpYWxDbGFzcyhcbiAgICAgICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5nZXRDcmVkZW50aWFsSUQoKSxcbiAgICAgICAgICAgICAgICBbdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XS50b1N0cmluZygnaGV4JyksICcnXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0OiBUcmFuc2ZlcmFibGVJbnB1dCA9IG5ldyBUcmFuc2ZlcmFibGVJbnB1dChcbiAgICAgICAgICB0eGlkQnVmLFxuICAgICAgICAgIG91dHB1dGlkeCxcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0XG4gICAgICAgICk7XG4gICAgICAgIGlucHV0cy5wdXNoKGlucHV0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChidWlsZE91dHB1dHMpIHtcbiAgICAgIGlmIChjdXJyZW50VG90YWwubHQodG90YWxUYXJnZXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgYFV0eG8gb3V0cHV0cyBnZXQgJHtjdXJyZW50VG90YWwudG9TdHJpbmcoKX0gYW5kICR7dG90YWxUYXJnZXQudG9TdHJpbmcoKX0gaXMgcmVxdWlyZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRUb3RhbC5ndCh0b3RhbFRhcmdldCkpIHtcbiAgICAgICAgb3V0cHV0cy5wdXNoKFxuICAgICAgICAgIG5ldyBUcmFuc2ZlcmFibGVPdXRwdXQoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICAgICAgbmV3IFNFQ1BUcmFuc2Zlck91dHB1dChcbiAgICAgICAgICAgICAgY3VycmVudFRvdGFsLnN1Yih0b3RhbFRhcmdldCksXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGdldCBvdXRwdXRzIGFuZCBjcmVkZW50aWFscyBmcm9tIHRoZSBkZXNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24gaWYgd2UgYXJlIGluIE9WQ1xuICAgIHJldHVybiB7XG4gICAgICBpbnB1dHMsXG4gICAgICBvdXRwdXRzOiBvdXRwdXRzLmxlbmd0aCA9PT0gMCA/IHRoaXMudHJhbnNhY3Rpb24uYXZheFBUcmFuc2FjdGlvbi5nZXRPdXRzKCkgOiBvdXRwdXRzLFxuICAgICAgY3JlZGVudGlhbHM6IGNyZWRlbnRpYWxzLmxlbmd0aCA9PT0gMCA/IHRoaXMudHJhbnNhY3Rpb24uY3JlZGVudGlhbHMgOiBjcmVkZW50aWFscyxcbiAgICB9O1xuICB9XG59XG4iXX0=
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdG9yVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kZWxlZ2F0b3JUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXVGO0FBRXZGLDZEQUEwRDtBQUMxRCwrREFhd0M7QUFDeEMseUNBQXlDO0FBQ3pDLG1DQUFnRTtBQUNoRSxvREFBNEI7QUFFNUIsNkNBQTRDO0FBRTVDLE1BQWEsa0JBQW1CLFNBQVEsdUNBQWtCO0lBTXhEOzs7T0FHRztJQUNILFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUEyQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxjQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLFlBQVksQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLE9BQTBCO1FBQ3hDLE1BQU0sZUFBZSxHQUFHLE9BQU8sWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQXNCO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxjQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLEtBQXNCO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxjQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLEtBQWtCO1FBQzVCLE1BQU0sT0FBTyxHQUFHLGNBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxjQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9CQUFvQjtJQUNwQjs7O09BR0c7SUFDSCxjQUFjLENBQUMsTUFBYztRQUMzQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFDQUFxQyxDQUFDLENBQUM7U0FDeEU7UUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNuQyxNQUFNLElBQUksZ0NBQXFCLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUM1RTtRQUNELE1BQU0sUUFBUSxHQUFHLG9CQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQzFELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1NBQ3RGO0lBQ0gsQ0FBQztJQUNEOzs7Ozs7O09BT0c7SUFDSCxxQkFBcUIsQ0FBQyxTQUFhLEVBQUUsT0FBVztRQUM5QyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxjQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM5QixNQUFNLElBQUksZ0NBQXFCLENBQUMsMERBQTBELENBQUMsQ0FBQztTQUM3RjtRQUNELElBQUksT0FBTyxHQUFHLFNBQVMsRUFBRTtZQUN2QixNQUFNLElBQUksZ0NBQXFCLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUM1RTtRQUNELElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGNBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pGLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1NBQ3hGO1FBQ0QsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxjQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakYsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDcEY7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsbUJBQW1CLENBQUMsTUFBVTtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1RCxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDRCQUE0QixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDLENBQUM7U0FDMUc7SUFDSCxDQUFDO0lBRUQsWUFBWTtJQUVaLGtCQUFrQjtJQUNsQixXQUFXLENBQUMsRUFBTTtRQUNoQixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sTUFBTSxHQUFXLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixNQUFNLElBQUksdUJBQVksQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO1NBQy9GO1FBQ0Qsc0RBQXNEO1FBQ3RELDJFQUEyRTtRQUMzRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUN2QixNQUFNLElBQUksZ0NBQXFCLENBQUMsMENBQTBDLENBQUMsQ0FBQztTQUM3RTtRQUNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFELE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztTQUM5RTtRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JELDRDQUE0QztRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcseUJBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQWM7UUFDaEMsT0FBTyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssZ0NBQW1CLENBQUMsY0FBYyxDQUFDO0lBQ25FLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUN6QixPQUFPLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08scUJBQXFCO1FBQzdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FDN0IsSUFBSSxlQUFLLENBQ1AsSUFBSSx1QkFBVSxDQUNaLElBQUksMkJBQWMsQ0FDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUM5QixPQUFPLEVBQ1AsTUFBTSxFQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUN0QixlQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUN4QyxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLFlBQVksRUFDakIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUN6QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FDMUIsQ0FDRixFQUNELFdBQVcsQ0FDWixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGdCQUFnQjtRQUN4QixPQUFPLElBQUksK0JBQWtCLENBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUN6QixJQUFJLCtCQUFrQixDQUNwQixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUM1QixDQUNGLENBQUM7SUFDSixDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztTQUNyRTtRQUVELE9BQU8sSUFBSSw0QkFBZSxDQUN4QixJQUFJLDRCQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUNoSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08saUJBQWlCO1FBS3pCLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQXlCLEVBQUUsQ0FBQztRQUV6QyxzQkFBc0I7UUFDdEIsSUFBSSxZQUFZLEdBQU8sSUFBSSxjQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakMseUNBQXlDO1FBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFOUMsTUFBTSxXQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUVyQyxrQ0FBa0M7UUFDbEMsOENBQThDO1FBQzlDLGtEQUFrRDtRQUNsRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUMvRCxlQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3pGLENBQUM7UUFFRjs7Ozs7Ozs7O1VBU0U7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxvREFBb0Q7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM1RCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUU7WUFDRCxpRkFBaUY7UUFDbkYsQ0FBQyxDQUFDLENBQUM7UUFFSCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7O1lBQ3ZDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDdEQ7WUFDRCw2Q0FBNkM7WUFDN0MsSUFBSSxNQUFBLElBQUksQ0FBQyxjQUFjLDBDQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLElBQUksZ0NBQXFCLENBQUMsNEJBQTRCLENBQUMsQ0FBQzthQUMvRDtZQUNELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRTtnQkFDbEQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDJCQUEyQixDQUFDLENBQUM7YUFDOUQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILCtFQUErRTtRQUMvRSxnRUFBZ0U7UUFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFFdkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFOztZQUMxQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssaUNBQXlCLEVBQUU7Z0JBQy9DLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLEdBQUcsR0FBTyxJQUFJLGNBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sU0FBUyxHQUFHLGVBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuRCxNQUFNLGNBQWMsR0FBRyxNQUFBLElBQUksQ0FBQyxjQUFjLG1DQUFJLEVBQUUsQ0FBQztnQkFFakQsa0NBQWtDO2dCQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixZQUFZLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFckMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLDhCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUVyRCxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNqQixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDekc7cUJBQU07b0JBQ0wseUJBQXlCO29CQUN6QixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUU7d0JBQzNELGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzt3QkFDM0csaUJBQWlCLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUMzRyxXQUFXLENBQUMsSUFBSSxDQUNkLGtDQUFxQixDQUNuQixpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJO3dCQUN6QyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLFNBQVMsQ0FBQyxDQUN2RixDQUNGLENBQUM7cUJBQ0g7eUJBQU07d0JBQ0wsaUJBQWlCLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUMzRyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7d0JBQzNHLFdBQVcsQ0FBQyxJQUFJLENBQ2Qsa0NBQXFCLENBQ25CLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxFQUNuQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLFNBQVMsQ0FBQyxDQUN2RixDQUNGLENBQUM7cUJBQ0g7aUJBQ0Y7Z0JBRUQsTUFBTSxLQUFLLEdBQXNCLElBQUksOEJBQWlCLENBQ3BELE9BQU8sRUFDUCxTQUFTLEVBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQ3pCLGlCQUFpQixDQUNsQixDQUFDO2dCQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxJQUFJLGdDQUFxQixDQUM3QixvQkFBb0IsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLFdBQVcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUN4RixDQUFDO2FBQ0g7aUJBQU0sSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN2QyxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksK0JBQWtCLENBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUN6QixJQUFJLCtCQUFrQixDQUNwQixZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUM1QixDQUNGLENBQ0YsQ0FBQzthQUNIO1NBQ0Y7UUFDRCxpRkFBaUY7UUFDakYsT0FBTztZQUNMLE1BQU07WUFDTixPQUFPLEVBQUUsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQThCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDcEcsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVztTQUNuRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBMVdELGdEQTBXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQXZhbGFuY2hlTmV0d29yaywgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7XG4gIEFkZERlbGVnYXRvclR4LFxuICBCYXNlVHggYXMgUFZNQmFzZVR4LFxuICBQYXJzZWFibGVPdXRwdXQsXG4gIFBsYXRmb3JtVk1Db25zdGFudHMsXG4gIFNFQ1BPd25lck91dHB1dCxcbiAgU0VDUFRyYW5zZmVySW5wdXQsXG4gIFNFQ1BUcmFuc2Zlck91dHB1dCxcbiAgU2VsZWN0Q3JlZGVudGlhbENsYXNzLFxuICBUcmFuc2ZlcmFibGVJbnB1dCxcbiAgVHJhbnNmZXJhYmxlT3V0cHV0LFxuICBUeCBhcyBQVk1UeCxcbiAgVW5zaWduZWRUeCxcbn0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvYXBpcy9wbGF0Zm9ybXZtJztcbmltcG9ydCB7IEJpblRvb2xzLCBCTiB9IGZyb20gJ2F2YWxhbmNoZSc7XG5pbXBvcnQgeyBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0LCBUeCwgQmFzZVR4IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBDcmVkZW50aWFsIH0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvY29tbW9uJztcbmltcG9ydCB7IHJlY292ZXJVdHhvcyB9IGZyb20gJy4vdXR4b0VuZ2luZSc7XG5cbmV4cG9ydCBjbGFzcyBEZWxlZ2F0b3JUeEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX25vZGVJRDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3N0YXJ0VGltZTogQk47XG4gIHByb3RlY3RlZCBfZW5kVGltZTogQk47XG4gIHByb3RlY3RlZCBfc3Rha2VBbW91bnQ6IEJOO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY29pbkNvbmZpZ1xuICAgKi9cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICBjb25zdCBuZXR3b3JrID0gY29pbkNvbmZpZy5uZXR3b3JrIGFzIEF2YWxhbmNoZU5ldHdvcms7XG4gICAgdGhpcy5fc3Rha2VBbW91bnQgPSBuZXcgQk4obmV0d29yay5taW5TdGFrZSk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHRyYW5zYWN0aW9uIHR5cGVcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLmFkZERlbGVnYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRyZXNzZXMgd2hlcmUgcmV3YXJkIHNob3VsZCBiZSBkZXBvc2l0XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IGFkZHJlc3MgLSBzaW5nbGUgYWRkcmVzcyBvciBhcnJheSBvZiBhZGRyZXNzZXMgdG8gcmVjZWl2ZSByZXdhcmRzXG4gICAqL1xuICByZXdhcmRBZGRyZXNzZXMoYWRkcmVzczogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCByZXdhcmRBZGRyZXNzZXMgPSBhZGRyZXNzIGluc3RhbmNlb2YgQXJyYXkgPyBhZGRyZXNzIDogW2FkZHJlc3NdO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3Jld2FyZEFkZHJlc3NlcyA9IHJld2FyZEFkZHJlc3Nlcy5tYXAodXRpbHMucGFyc2VBZGRyZXNzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUlEXG4gICAqL1xuICBub2RlSUQodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVOb2RlSUQodmFsdWUpO1xuICAgIHRoaXMuX25vZGVJRCA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0YXJ0IHRpbWUgb2Ygc3Rha2luZyBwZXJpb2RcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBzdGFydFRpbWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IG5ldyBCTih2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogZW5kIHRpbWUgb2Ygc3Rha2luZyBwZXJpb2RcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBlbmRUaW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLl9lbmRUaW1lID0gbmV3IEJOKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIHN0YWtlQW1vdW50KHZhbHVlOiBCTiB8IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHZhbHVlQk4gPSBCTi5pc0JOKHZhbHVlKSA/IHZhbHVlIDogbmV3IEJOKHZhbHVlKTtcbiAgICB0aGlzLnZhbGlkYXRlU3Rha2VBbW91bnQodmFsdWVCTik7XG4gICAgdGhpcy5fc3Rha2VBbW91bnQgPSB2YWx1ZUJOO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqXG4gICAqIHZhbGlkYXRlcyBhIGNvcnJlY3QgTm9kZUlEIGlzIHVzZWRcbiAgICogQHBhcmFtIG5vZGVJRFxuICAgKi9cbiAgdmFsaWRhdGVOb2RlSUQobm9kZUlEOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW5vZGVJRCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBub2RlSUQnKTtcbiAgICB9XG4gICAgaWYgKG5vZGVJRC5zbGljZSgwLCA2KSAhPT0gJ05vZGVJRCcpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgTm9kZUlEIHRhZycpO1xuICAgIH1cbiAgICBjb25zdCBiaW50b29scyA9IEJpblRvb2xzLmdldEluc3RhbmNlKCk7XG4gICAgaWYgKCEoYmludG9vbHMuYjU4VG9CdWZmZXIobm9kZUlELnNsaWNlKDcpKS5sZW5ndGggPT09IDI0KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogTm9kZUlEIGlzIG5vdCBpbiBjYjU4IGZvcm1hdCcpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICpcbiAgICogICBwcm90ZWN0ZWQgX3N0YXJ0VGltZTogRGF0ZTtcbiAgICogICBwcm90ZWN0ZWQgX2VuZFRpbWU6IERhdGU7XG4gICAqICAgMiB3ZWVrcyA9IDEyMDk2MDBcbiAgICogICAxIHllYXIgPSAzMTU1NjkyNlxuICAgKiAgIHVuaXggdGltZSBzdGFtcCBiYXNlZCBvZmYgc2Vjb25kc1xuICAgKi9cbiAgdmFsaWRhdGVTdGFrZUR1cmF0aW9uKHN0YXJ0VGltZTogQk4sIGVuZFRpbWU6IEJOKTogdm9pZCB7XG4gICAgY29uc3Qgb25lRGF5TGF0ZXIgPSBuZXcgQk4oRGF0ZS5ub3coKSkuYWRkKG5ldyBCTig4NjQwMCkpO1xuICAgIGlmICghc3RhcnRUaW1lLmd0KG9uZURheUxhdGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU3RhcnQgdGltZSBuZWVkcyB0byBiZSBvbmUgZGF5IGdyZWF0ZXIgdGhhbiBjdXJyZW50IHRpbWUnKTtcbiAgICB9XG4gICAgaWYgKGVuZFRpbWUgPCBzdGFydFRpbWUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCBkYXRlIGNhbm5vdCBiZSBsZXNzIHRoYW4gc3RhcnQgZGF0ZScpO1xuICAgIH1cbiAgICBpZiAoc3RhcnRUaW1lLmFkZChuZXcgQk4odGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5taW5TdGFrZUR1cmF0aW9uKSkuZ3QoZW5kVGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCBkYXRlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHR3byB3ZWVrcycpO1xuICAgIH1cbiAgICBpZiAoZW5kVGltZS5ndChzdGFydFRpbWUuYWRkKG5ldyBCTih0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1heFN0YWtlRHVyYXRpb24pKSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCBkYXRlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG9uZSB5ZWFyJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnRcbiAgICovXG4gIHZhbGlkYXRlU3Rha2VBbW91bnQoYW1vdW50OiBCTik6IHZvaWQge1xuICAgIGNvbnN0IG1pblN0YWtlID0gbmV3IEJOKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsubWluU3Rha2UpO1xuICAgIGlmIChhbW91bnQubHQobWluU3Rha2UpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaW5pbXVtIHN0YWtpbmcgYW1vdW50IGlzICcgKyBOdW1iZXIobWluU3Rha2UpIC8gMTAwMDAwMDAwMCArICcgQVZBWC4nKTtcbiAgICB9XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFR4KTogdGhpcyB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGNvbnN0IGJhc2VUeDogQmFzZVR4ID0gdHguZ2V0VW5zaWduZWRUeCgpLmdldFRyYW5zYWN0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnZlcmlmeVR4VHlwZShiYXNlVHgpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgcGFyc2VkIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICAgIC8vIFRoZSBTdGFrZU91dHMgaXMgYSB7QGxpbmsgc3Rha2VUcmFuc2Zlck91dH0gcmVzdWx0LlxuICAgIC8vIEl0J3MgZXhwZWN0ZWQgdG8gaGF2ZSBvbmx5IG9uZSBvdXRwdXRzIHdpdGggdGhlIGFkZHJlc3NlcyBvZiB0aGUgc2VuZGVyLlxuICAgIGNvbnN0IG91dHB1dHMgPSBiYXNlVHguZ2V0U3Rha2VPdXRzKCk7XG4gICAgaWYgKG91dHB1dHMubGVuZ3RoICE9IDEpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGNhbiBoYXZlIG9uZSBleHRlcm5hbCBvdXRwdXQnKTtcbiAgICB9XG4gICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1swXTtcbiAgICBpZiAoIW91dHB1dC5nZXRBc3NldElEKCkuZXF1YWxzKHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBc3NldCBJRCBvZiB0aGUgb3V0cHV0IGRvZXMgbm90IG1hdGNoIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBzZWNwT3V0ID0gb3V0cHV0LmdldE91dHB1dCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lID0gc2VjcE91dC5nZXRMb2NrdGltZSgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCA9IHNlY3BPdXQuZ2V0VGhyZXNob2xkKCk7XG4gICAgLy8gb3V0cHV0IGFkZHJlc3NlcyBhcmUgdGhlIHNlbmRlciBhZGRyZXNzZXNcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzID0gc2VjcE91dC5nZXRBZGRyZXNzZXMoKTtcbiAgICB0aGlzLl9ub2RlSUQgPSBiYXNlVHguZ2V0Tm9kZUlEU3RyaW5nKCk7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gYmFzZVR4LmdldFN0YXJ0VGltZSgpO1xuICAgIHRoaXMuX2VuZFRpbWUgPSBiYXNlVHguZ2V0RW5kVGltZSgpO1xuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gYmFzZVR4LmdldFN0YWtlQW1vdW50KCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MgPSByZWNvdmVyVXR4b3MoYmFzZVR4LmdldElucygpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBCYXNlVHgpOiBiYXNlVHggaXMgQWRkRGVsZWdhdG9yVHgge1xuICAgIHJldHVybiBiYXNlVHguZ2V0VHlwZUlEKCkgPT09IFBsYXRmb3JtVk1Db25zdGFudHMuQUREVkFMSURBVE9SVFg7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBCYXNlVHgpOiBiYXNlVHggaXMgQWRkRGVsZWdhdG9yVHgge1xuICAgIHJldHVybiBEZWxlZ2F0b3JUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKGJhc2VUeCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkQXZheHBUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlU3Rha2VEdXJhdGlvbih0aGlzLl9zdGFydFRpbWUsIHRoaXMuX2VuZFRpbWUpO1xuICAgIGNvbnN0IHsgaW5wdXRzLCBvdXRwdXRzLCBjcmVkZW50aWFscyB9ID0gdGhpcy5jcmVhdGVJbnB1dE91dHB1dCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24oXG4gICAgICBuZXcgUFZNVHgoXG4gICAgICAgIG5ldyBVbnNpZ25lZFR4KFxuICAgICAgICAgIG5ldyBBZGREZWxlZ2F0b3JUeChcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmtJRCxcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCxcbiAgICAgICAgICAgIG91dHB1dHMsXG4gICAgICAgICAgICBpbnB1dHMsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9tZW1vLFxuICAgICAgICAgICAgdXRpbHMuTm9kZUlEU3RyaW5nVG9CdWZmZXIodGhpcy5fbm9kZUlEKSxcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSxcbiAgICAgICAgICAgIHRoaXMuX2VuZFRpbWUsXG4gICAgICAgICAgICB0aGlzLl9zdGFrZUFtb3VudCxcbiAgICAgICAgICAgIFt0aGlzLnN0YWtlVHJhbnNmZXJPdXQoKV0sXG4gICAgICAgICAgICB0aGlzLnJld2FyZE93bmVyc091dHB1dCgpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjcmVkZW50aWFsc1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBTdGFrZU91dCB3aGVyZSB0aGUgcmVjaXBpZW50IGFkZHJlc3MgYXJlIHRoZSBzZW5kZXIuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICpcbiAgICovXG4gIHByb3RlY3RlZCBzdGFrZVRyYW5zZmVyT3V0KCk6IFRyYW5zZmVyYWJsZU91dHB1dCB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2ZlcmFibGVPdXRwdXQoXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgbmV3IFNFQ1BUcmFuc2Zlck91dHB1dChcbiAgICAgICAgdGhpcy5fc3Rha2VBbW91bnQsXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJld2FyZE93bmVyc091dHB1dCgpOiBQYXJzZWFibGVPdXRwdXQge1xuICAgIC8vIGlmIHRoZXJlIGFyZSBubyByZXdhcmQgYWRkcmVzc2VzLCB0aGUgc2VuZGVyIGdldHMgdGhlIHJld2FyZHNcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX3Jld2FyZEFkZHJlc3NlcyB8fCB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMgPSB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUGFyc2VhYmxlT3V0cHV0KFxuICAgICAgbmV3IFNFQ1BPd25lck91dHB1dCh0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMsIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLCB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgbXVzdCBiZSAyIGFuZCBzaW5jZSBvdXRwdXQgYWx3YXlzIGdldCByZW9yZGVyZWQgd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgY2FuIGFsd2F5cyBhZGQgc2lnbmF0dXJlcyBpbiB0aGUgY29ycmVjdCBsb2NhdGlvblxuICAgKiBUbyBmaW5kIHRoZSBjb3JyZWN0IGxvY2F0aW9uIGZvciB0aGUgc2lnbmF0dXJlLCB3ZSB1c2UgdGhlIG91cHV0J3MgYWRkcmVzc2VzIHRvIGNyZWF0ZSB0aGUgc2lnbmF0dXJlSWR4IGluIHRoZSBvcmRlciB0aGF0IHdlIGRlc2lyZVxuICAgKiAwOiB1c2VyIGtleSwgMTogaHNtIGtleSwgMjogcmVjb3Zlcnkga2V5XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVJbnB1dE91dHB1dCgpOiB7XG4gICAgaW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdO1xuICAgIG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdO1xuICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW107XG4gIH0ge1xuICAgIGNvbnN0IGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXSA9IFtdO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zZmVyYWJsZU91dHB1dFtdID0gW107XG5cbiAgICAvLyBhbW91bnQgc3BlbnQgc28gZmFyXG4gICAgbGV0IGN1cnJlbnRUb3RhbDogQk4gPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBkZWxlZ2F0aW5nIGFuZCB2YWxpZGF0aW5nIGhhdmUgbm8gZmVlc1xuICAgIGNvbnN0IHRvdGFsVGFyZ2V0ID0gdGhpcy5fc3Rha2VBbW91bnQuY2xvbmUoKTtcblxuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW10gPSBbXTtcblxuICAgIC8vIGNvbnZlcnQgZnJvbUFkZHJlc3NlcyB0byBzdHJpbmdcbiAgICAvLyBmcm9tQWRkcmVzc2VzID0gYml0Z28gb3JkZXIgaWYgd2UgYXJlIGluIFdQXG4gICAgLy8gZnJvbUFkZHJlc3NlcyA9IG9uY2hhaW4gb3JkZXIgaWYgd2UgYXJlIGluIGZyb21cbiAgICBjb25zdCBiaXRnb0FkZHJlc3NlcyA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubWFwKChiKSA9PlxuICAgICAgdXRpbHMuYWRkcmVzc1RvU3RyaW5nKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuaHJwLCB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLmFsaWFzLCBiKVxuICAgICk7XG5cbiAgICAvKiBcbiAgICBBID0gdXNlciBrZXlcbiAgICBCID0gaHNtIGtleVxuICAgIEMgPSBiYWNrdXAga2V5XG4gICAgYml0Z29BZGRyZXNzZXMgPSBiaXRnbyBhZGRyZXNzZXMgWyBBLCBCLCBDIF1cbiAgICB1dHhvLmFkZHJlc3NlcyA9IElNUyBhZGRyZXNzZXMgWyBCLCBDLCBBIF1cbiAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gWyAyLCAwLCAxIF1cbiAgICB3ZSBwaWNrIDAsIDEgZm9yIG5vbi1yZWNvdmVyeVxuICAgIHdlIHBpY2sgMSwgMiBmb3IgcmVjb3ZlcnlcbiAgICAqL1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8pID0+IHtcbiAgICAgIC8vIGluIFdQLCBvdXRwdXQuYWRkcmVzc2VzSW5kZXggaXMgZW1wdHksIHNvIGZpbGwgaXRcbiAgICAgIGlmICghdXR4by5hZGRyZXNzZXNJbmRleCB8fCB1dHhvLmFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gYml0Z29BZGRyZXNzZXMubWFwKChhKSA9PiB1dHhvLmFkZHJlc3Nlcy5pbmRleE9mKGEpKTtcbiAgICAgIH1cbiAgICAgIC8vIGluIE9WQywgb3V0cHV0LmFkZHJlc3Nlc0luZGV4IGlzIGRlZmluZWQgY29ycmVjdGx5IGZyb20gdGhlIHByZXZpb3VzIGl0ZXJhdGlvblxuICAgIH0pO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhlIHV0eG9zXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgaWYgKCF1dHhvKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1V0eG8gaXMgdW5kZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICAvLyBhZGRyZXNzZXNJbmRleCBzaG91bGQgbmV2ZSBoYXZlIGEgbWlzbWF0Y2hcbiAgICAgIGlmICh1dHhvLmFkZHJlc3Nlc0luZGV4Py5pbmNsdWRlcygtMSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQWRkcmVzc2VzIGFyZSBpbmNvbnNpc3RlbnQnKTtcbiAgICAgIH1cbiAgICAgIGlmICh1dHhvLnRocmVzaG9sZCAhPT0gdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RocmVzaG9sZCBpcyBpbmNvbnNpc3RlbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGlmIHdlIGFyZSBpbiBPVkMsIG5vbmUgb2YgdGhlIHV0eG9zIHdpbGwgaGF2ZSBhZGRyZXNzZXMgc2luY2UgdGhleSBjb21lIGZyb21cbiAgICAvLyBkZXNlcmlhbGl6ZWQgaW5wdXRzICh3aGljaCBkb24ndCBoYXZlIGFkZHJlc3NlcyksIG5vdCB0aGUgSU1TXG4gICAgY29uc3QgYnVpbGRPdXRwdXRzID0gdGhpcy50cmFuc2FjdGlvbi5fdXR4b3NbMF0uYWRkcmVzc2VzLmxlbmd0aCAhPT0gMDtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8sIGkpID0+IHtcbiAgICAgIGlmICh1dHhvLm91dHB1dElEID09PSBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0KSB7XG4gICAgICAgIGNvbnN0IHR4aWRCdWYgPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8udHhpZCk7XG4gICAgICAgIGNvbnN0IGFtdDogQk4gPSBuZXcgQk4odXR4by5hbW91bnQpO1xuICAgICAgICBjb25zdCBvdXRwdXRpZHggPSB1dGlscy5jYjU4RGVjb2RlKHV0eG8ub3V0cHV0aWR4KTtcbiAgICAgICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuXG4gICAgICAgIC8vIGVpdGhlciB1c2VyICgwKSBvciByZWNvdmVyeSAoMilcbiAgICAgICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgICAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcbiAgICAgICAgY3VycmVudFRvdGFsID0gY3VycmVudFRvdGFsLmFkZChhbXQpO1xuXG4gICAgICAgIGNvbnN0IHNlY3BUcmFuc2ZlcklucHV0ID0gbmV3IFNFQ1BUcmFuc2ZlcklucHV0KGFtdCk7XG5cbiAgICAgICAgaWYgKCFidWlsZE91dHB1dHMpIHtcbiAgICAgICAgICBhZGRyZXNzZXNJbmRleC5mb3JFYWNoKChpKSA9PiBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoaSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tpXSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGlmIHVzZXIvYmFja3VwID4gYml0Z29cbiAgICAgICAgICBpZiAoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0gPCBhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSkge1xuICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2JpdGdvSW5kZXhdKTtcbiAgICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0LmFkZFNpZ25hdHVyZUlkeChhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XSk7XG4gICAgICAgICAgICBjcmVkZW50aWFscy5wdXNoKFxuICAgICAgICAgICAgICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MoXG4gICAgICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuZ2V0Q3JlZGVudGlhbElEKCksIC8vIDlcbiAgICAgICAgICAgICAgICBbJycsIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0udG9TdHJpbmcoJ2hleCcpXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5hZGRTaWduYXR1cmVJZHgoYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0sIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbZmlyc3RJbmRleF0pO1xuICAgICAgICAgICAgc2VjcFRyYW5zZmVySW5wdXQuYWRkU2lnbmF0dXJlSWR4KGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdLCB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2JpdGdvSW5kZXhdKTtcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLnB1c2goXG4gICAgICAgICAgICAgIFNlbGVjdENyZWRlbnRpYWxDbGFzcyhcbiAgICAgICAgICAgICAgICBzZWNwVHJhbnNmZXJJbnB1dC5nZXRDcmVkZW50aWFsSUQoKSxcbiAgICAgICAgICAgICAgICBbdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XS50b1N0cmluZygnaGV4JyksICcnXS5tYXAodXRpbHMuY3JlYXRlU2lnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0OiBUcmFuc2ZlcmFibGVJbnB1dCA9IG5ldyBUcmFuc2ZlcmFibGVJbnB1dChcbiAgICAgICAgICB0eGlkQnVmLFxuICAgICAgICAgIG91dHB1dGlkeCxcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICAgIHNlY3BUcmFuc2ZlcklucHV0XG4gICAgICAgICk7XG4gICAgICAgIGlucHV0cy5wdXNoKGlucHV0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChidWlsZE91dHB1dHMpIHtcbiAgICAgIGlmIChjdXJyZW50VG90YWwubHQodG90YWxUYXJnZXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgYFV0eG8gb3V0cHV0cyBnZXQgJHtjdXJyZW50VG90YWwudG9TdHJpbmcoKX0gYW5kICR7dG90YWxUYXJnZXQudG9TdHJpbmcoKX0gaXMgcmVxdWlyZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRUb3RhbC5ndCh0b3RhbFRhcmdldCkpIHtcbiAgICAgICAgb3V0cHV0cy5wdXNoKFxuICAgICAgICAgIG5ldyBUcmFuc2ZlcmFibGVPdXRwdXQoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICAgICAgbmV3IFNFQ1BUcmFuc2Zlck91dHB1dChcbiAgICAgICAgICAgICAgY3VycmVudFRvdGFsLnN1Yih0b3RhbFRhcmdldCksXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGdldCBvdXRwdXRzIGFuZCBjcmVkZW50aWFscyBmcm9tIHRoZSBkZXNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24gaWYgd2UgYXJlIGluIE9WQ1xuICAgIHJldHVybiB7XG4gICAgICBpbnB1dHMsXG4gICAgICBvdXRwdXRzOiBvdXRwdXRzLmxlbmd0aCA9PT0gMCA/ICh0aGlzLnRyYW5zYWN0aW9uLmF2YXhQVHJhbnNhY3Rpb24gYXMgUFZNQmFzZVR4KS5nZXRPdXRzKCkgOiBvdXRwdXRzLFxuICAgICAgY3JlZGVudGlhbHM6IGNyZWRlbnRpYWxzLmxlbmd0aCA9PT0gMCA/IHRoaXMudHJhbnNhY3Rpb24uY3JlZGVudGlhbHMgOiBjcmVkZW50aWFscyxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -2,8 +2,9 @@
2
2
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
3
  import { TransactionType } from '@bitgo/sdk-core';
4
4
  import { AtomicTransactionBuilder } from './atomicTransactionBuilder';
5
- import { BaseTx, ExportTx, TransferableOutput, Tx } from 'avalanche/dist/apis/platformvm';
5
+ import { ExportTx, TransferableOutput } from 'avalanche/dist/apis/platformvm';
6
6
  import { BN } from 'avalanche';
7
+ import { Tx, BaseTx } from './iface';
7
8
  export declare class ExportTxBuilder extends AtomicTransactionBuilder {
8
9
  private _amount;
9
10
  constructor(_coinConfig: Readonly<CoinConfig>);
@@ -1 +1 @@
1
- {"version":3,"file":"exportTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/exportTxBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAuC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,MAAM,EACN,QAAQ,EAGR,kBAAkB,EAClB,EAAE,EAEH,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAI/B,qBAAa,eAAgB,SAAQ,wBAAwB;IAC3D,OAAO,CAAC,OAAO,CAAK;gBAER,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;IAOhC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IA2BzB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,QAAQ;IAIvD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,QAAQ;IAIhD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAsBvC;;;;OAIG;IACH,SAAS,CAAC,eAAe,IAAI,kBAAkB,EAAE;CAalD"}
1
+ {"version":3,"file":"exportTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/exportTxBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAuC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,QAAQ,EAGR,kBAAkB,EAGnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAI/B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAErC,qBAAa,eAAgB,SAAQ,wBAAwB;IAC3D,OAAO,CAAC,OAAO,CAAK;gBAER,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;IAOhC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IA2BzB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,QAAQ;IAIvD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,QAAQ;IAIhD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAsBvC;;;;OAIG;IACH,SAAS,CAAC,eAAe,IAAI,kBAAkB,EAAE;CAalD"}
@@ -9,6 +9,7 @@ const atomicTransactionBuilder_1 = require("./atomicTransactionBuilder");
9
9
  const platformvm_1 = require("avalanche/dist/apis/platformvm");
10
10
  const avalanche_1 = require("avalanche");
11
11
  const utils_1 = __importDefault(require("./utils"));
12
+ const utxoEngine_1 = require("./utxoEngine");
12
13
  class ExportTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
13
14
  constructor(_coinConfig) {
14
15
  super(_coinConfig);
@@ -52,7 +53,7 @@ class ExportTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilde
52
53
  this.transaction._fromAddresses = secpOut.getAddresses();
53
54
  this._externalChainId = baseTx.getDestinationChain();
54
55
  this._amount = secpOut.getAmount();
55
- this.transaction._utxos = this.recoverUtxos(baseTx.getIns());
56
+ this.transaction._utxos = utxoEngine_1.recoverUtxos(baseTx.getIns());
56
57
  return this;
57
58
  }
58
59
  static verifyTxType(baseTx) {
@@ -69,7 +70,7 @@ class ExportTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilde
69
70
  // if tx has credentials, tx shouldn't change
70
71
  if (this.transaction.hasCredentials)
71
72
  return;
72
- const { inputs, outputs, credentials } = this.createInputOutput(this._amount.add(this.transaction._fee));
73
+ const { inputs, outputs, credentials } = this.createInputOutput(this._amount.add(new avalanche_1.BN(this.transaction.fee.fee)));
73
74
  this.transaction.setTransaction(new platformvm_1.Tx(new platformvm_1.UnsignedTx(new platformvm_1.ExportTx(this.transaction._networkID, this.transaction._blockchainID, outputs, inputs, this.transaction._memo, this._externalChainId, this.exportedOutputs())), credentials));
74
75
  }
75
76
  /**
@@ -84,4 +85,4 @@ class ExportTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilde
84
85
  }
85
86
  }
86
87
  exports.ExportTxBuilder = ExportTxBuilder;
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0VHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9leHBvcnRUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsOENBQXVGO0FBQ3ZGLHlFQUFzRTtBQUN0RSwrREFRd0M7QUFDeEMseUNBQStCO0FBRS9CLG9EQUE0QjtBQUU1QixNQUFhLGVBQWdCLFNBQVEsbURBQXdCO0lBRzNELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQWtCO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLGNBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxjQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVyxDQUFDLEVBQU07UUFDaEIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBVyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJ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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgQmFzZVR4LFxuICBFeHBvcnRUeCxcbiAgUGxhdGZvcm1WTUNvbnN0YW50cyxcbiAgU0VDUFRyYW5zZmVyT3V0cHV0LFxuICBUcmFuc2ZlcmFibGVPdXRwdXQsXG4gIFR4LFxuICBVbnNpZ25lZFR4LFxufSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL3BsYXRmb3Jtdm0nO1xuaW1wb3J0IHsgQk4gfSBmcm9tICdhdmFsYW5jaGUnO1xuaW1wb3J0IHsgQW1vdW50T3V0cHV0IH0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvYXBpcy9ldm0vb3V0cHV0cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBFeHBvcnRUeEJ1aWxkZXIgZXh0ZW5kcyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9hbW91bnQ6IEJOO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9leHRlcm5hbENoYWluSWQgPSB1dGlscy5jYjU4RGVjb2RlKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuY0NoYWluQmxvY2tjaGFpbklEKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ7XG4gIH1cblxuICAvKipcbiAgICogQW1vdW50IGlzIGEgbG9uZyB0aGF0IHNwZWNpZmllcyB0aGUgcXVhbnRpdHkgb2YgdGhlIGFzc2V0IHRoYXQgdGhpcyBvdXRwdXQgb3ducy4gTXVzdCBiZSBwb3NpdGl2ZS5cbiAgICpcbiAgICogQHBhcmFtIHtCTiB8IHN0cmluZ30gYW1vdW50IFRoZSB3aXRoZHJhd2FsIGFtb3VudFxuICAgKi9cbiAgYW1vdW50KHZhbHVlOiBCTiB8IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHZhbHVlQk4gPSBCTi5pc0JOKHZhbHVlKSA/IHZhbHVlIDogbmV3IEJOKHZhbHVlKTtcbiAgICB0aGlzLnZhbGlkYXRlQW1vdW50KHZhbHVlQk4pO1xuICAgIHRoaXMuX2Ftb3VudCA9IHZhbHVlQk47XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFR4KTogdGhpcyB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGNvbnN0IGJhc2VUeDogQmFzZVR4ID0gdHguZ2V0VW5zaWduZWRUeCgpLmdldFRyYW5zYWN0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnZlcmlmeVR4VHlwZShiYXNlVHgpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgcGFyc2VkIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICAgIC8vIFRoZSBFeHBvcnRPdXRwdXRzIGlzIGEge0BsaW5rIGV4cG9ydGVkT3V0cHV0c30gcmVzdWx0LlxuICAgIC8vIEl0J3MgZXhwZWN0ZWQgdG8gaGF2ZSBvbmx5IG9uZSBvdXRwdXRzIHdpdGggdGhlIGFkZHJlc3NlcyBvZiB0aGUgc2VuZGVyLlxuICAgIGNvbnN0IG91dHB1dHMgPSBiYXNlVHguZ2V0RXhwb3J0T3V0cHV0cygpO1xuICAgIGlmIChvdXRwdXRzLmxlbmd0aCAhPSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgZXh0ZXJuYWwgb3V0cHV0Jyk7XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07XG4gICAgaWYgKCFvdXRwdXQuZ2V0QXNzZXRJRCgpLmVxdWFscyh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXNzZXQgSUQgb2YgdGhlIG91dHB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3Qgc2VjcE91dCA9IG91dHB1dC5nZXRPdXRwdXQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSA9IHNlY3BPdXQuZ2V0TG9ja3RpbWUoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQgPSBzZWNwT3V0LmdldFRocmVzaG9sZCgpO1xuICAgIC8vIG91dHB1dCBhZGRyZXNzZXMgYXJlIHRoZSBzZW5kZXIgYWRkcmVzc2VzXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyA9IHNlY3BPdXQuZ2V0QWRkcmVzc2VzKCk7XG4gICAgdGhpcy5fZXh0ZXJuYWxDaGFpbklkID0gYmFzZVR4LmdldERlc3RpbmF0aW9uQ2hhaW4oKTtcbiAgICB0aGlzLl9hbW91bnQgPSAoc2VjcE91dCBhcyBBbW91bnRPdXRwdXQpLmdldEFtb3VudCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zID0gdGhpcy5yZWNvdmVyVXR4b3MoYmFzZVR4LmdldElucygpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBCYXNlVHgpOiBiYXNlVHggaXMgRXhwb3J0VHgge1xuICAgIHJldHVybiBiYXNlVHguZ2V0VHlwZUlEKCkgPT09IFBsYXRmb3JtVk1Db25zdGFudHMuRVhQT1JUVFg7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBCYXNlVHgpOiBiYXNlVHggaXMgRXhwb3J0VHgge1xuICAgIHJldHVybiBFeHBvcnRUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKGJhc2VUeCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBpbnRlcm5hbCBhdmFsYW5jaGUgdHJhbnNhY3Rpb24uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEF2YXhwVHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgLy8gaWYgdHggaGFzIGNyZWRlbnRpYWxzLCB0eCBzaG91bGRuJ3QgY2hhbmdlXG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaGFzQ3JlZGVudGlhbHMpIHJldHVybjtcbiAgICBjb25zdCB7IGlucHV0cywgb3V0cHV0cywgY3JlZGVudGlhbHMgfSA9IHRoaXMuY3JlYXRlSW5wdXRPdXRwdXQodGhpcy5fYW1vdW50LmFkZCh0aGlzLnRyYW5zYWN0aW9uLl9mZWUpKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKFxuICAgICAgbmV3IFR4KFxuICAgICAgICBuZXcgVW5zaWduZWRUeChcbiAgICAgICAgICBuZXcgRXhwb3J0VHgoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG4gICAgICAgICAgICBvdXRwdXRzLFxuICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbWVtbyxcbiAgICAgICAgICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCxcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0ZWRPdXRwdXRzKClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNyZWRlbnRpYWxzXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIEV4cG9ydGVkT3V0IHdoZXJlIHRoZSByZWNpcGllbnQgYWRkcmVzcyBhcmUgdGhlIHNlbmRlci5cbiAgICogTGF0ZXIgYSBpbXBvcnRUeCBzaG91bGQgY29tcGxldGUgdGhlIG9wZXJhdGlvbnMgc2lnbmluZyB3aXRoIHRoZSBzYW1lIGtleXMuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBleHBvcnRlZE91dHB1dHMoKTogVHJhbnNmZXJhYmxlT3V0cHV0W10ge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgVHJhbnNmZXJhYmxlT3V0cHV0KFxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICBuZXcgU0VDUFRyYW5zZmVyT3V0cHV0KFxuICAgICAgICAgIHRoaXMuX2Ftb3VudCxcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZFxuICAgICAgICApXG4gICAgICApLFxuICAgIF07XG4gIH1cbn1cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0VHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9leHBvcnRUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsOENBQXVGO0FBQ3ZGLHlFQUFzRTtBQUN0RSwrREFPd0M7QUFDeEMseUNBQStCO0FBRS9CLG9EQUE0QjtBQUM1Qiw2Q0FBNEM7QUFHNUMsTUFBYSxlQUFnQixTQUFRLG1EQUF3QjtJQUczRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFrQjtRQUN2QixNQUFNLE9BQU8sR0FBRyxjQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxFQUFNO1FBQ2hCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQVcsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lB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O0lBQ0osQ0FBQztDQUNGO0FBeEdELDBDQXdHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIE5vdFN1cHBvcnRlZCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7XG4gIEV4cG9ydFR4LFxuICBQbGF0Zm9ybVZNQ29uc3RhbnRzLFxuICBTRUNQVHJhbnNmZXJPdXRwdXQsXG4gIFRyYW5zZmVyYWJsZU91dHB1dCxcbiAgVHggYXMgUFZNVHgsXG4gIFVuc2lnbmVkVHgsXG59IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgeyBCTiB9IGZyb20gJ2F2YWxhbmNoZSc7XG5pbXBvcnQgeyBBbW91bnRPdXRwdXQgfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL2V2bS9vdXRwdXRzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IHJlY292ZXJVdHhvcyB9IGZyb20gJy4vdXR4b0VuZ2luZSc7XG5pbXBvcnQgeyBUeCwgQmFzZVR4IH0gZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBFeHBvcnRUeEJ1aWxkZXIgZXh0ZW5kcyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9hbW91bnQ6IEJOO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9leHRlcm5hbENoYWluSWQgPSB1dGlscy5jYjU4RGVjb2RlKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsuY0NoYWluQmxvY2tjaGFpbklEKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ7XG4gIH1cblxuICAvKipcbiAgICogQW1vdW50IGlzIGEgbG9uZyB0aGF0IHNwZWNpZmllcyB0aGUgcXVhbnRpdHkgb2YgdGhlIGFzc2V0IHRoYXQgdGhpcyBvdXRwdXQgb3ducy4gTXVzdCBiZSBwb3NpdGl2ZS5cbiAgICpcbiAgICogQHBhcmFtIHtCTiB8IHN0cmluZ30gYW1vdW50IFRoZSB3aXRoZHJhd2FsIGFtb3VudFxuICAgKi9cbiAgYW1vdW50KHZhbHVlOiBCTiB8IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHZhbHVlQk4gPSBCTi5pc0JOKHZhbHVlKSA/IHZhbHVlIDogbmV3IEJOKHZhbHVlKTtcbiAgICB0aGlzLnZhbGlkYXRlQW1vdW50KHZhbHVlQk4pO1xuICAgIHRoaXMuX2Ftb3VudCA9IHZhbHVlQk47XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFR4KTogdGhpcyB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGNvbnN0IGJhc2VUeDogQmFzZVR4ID0gdHguZ2V0VW5zaWduZWRUeCgpLmdldFRyYW5zYWN0aW9uKCk7XG4gICAgaWYgKCF0aGlzLnZlcmlmeVR4VHlwZShiYXNlVHgpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgcGFyc2VkIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuICAgIC8vIFRoZSBFeHBvcnRPdXRwdXRzIGlzIGEge0BsaW5rIGV4cG9ydGVkT3V0cHV0c30gcmVzdWx0LlxuICAgIC8vIEl0J3MgZXhwZWN0ZWQgdG8gaGF2ZSBvbmx5IG9uZSBvdXRwdXRzIHdpdGggdGhlIGFkZHJlc3NlcyBvZiB0aGUgc2VuZGVyLlxuICAgIGNvbnN0IG91dHB1dHMgPSBiYXNlVHguZ2V0RXhwb3J0T3V0cHV0cygpO1xuICAgIGlmIChvdXRwdXRzLmxlbmd0aCAhPSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgZXh0ZXJuYWwgb3V0cHV0Jyk7XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07XG4gICAgaWYgKCFvdXRwdXQuZ2V0QXNzZXRJRCgpLmVxdWFscyh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgQXNzZXQgSUQgb2YgdGhlIG91dHB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3Qgc2VjcE91dCA9IG91dHB1dC5nZXRPdXRwdXQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSA9IHNlY3BPdXQuZ2V0TG9ja3RpbWUoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQgPSBzZWNwT3V0LmdldFRocmVzaG9sZCgpO1xuICAgIC8vIG91dHB1dCBhZGRyZXNzZXMgYXJlIHRoZSBzZW5kZXIgYWRkcmVzc2VzXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyA9IHNlY3BPdXQuZ2V0QWRkcmVzc2VzKCk7XG4gICAgdGhpcy5fZXh0ZXJuYWxDaGFpbklkID0gYmFzZVR4LmdldERlc3RpbmF0aW9uQ2hhaW4oKTtcbiAgICB0aGlzLl9hbW91bnQgPSAoc2VjcE91dCBhcyBBbW91bnRPdXRwdXQpLmdldEFtb3VudCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zID0gcmVjb3ZlclV0eG9zKGJhc2VUeC5nZXRJbnMoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGF0aWMgdmVyaWZ5VHhUeXBlKGJhc2VUeDogQmFzZVR4KTogYmFzZVR4IGlzIEV4cG9ydFR4IHtcbiAgICByZXR1cm4gYmFzZVR4LmdldFR5cGVJRCgpID09PSBQbGF0Zm9ybVZNQ29uc3RhbnRzLkVYUE9SVFRYO1xuICB9XG5cbiAgdmVyaWZ5VHhUeXBlKGJhc2VUeDogQmFzZVR4KTogYmFzZVR4IGlzIEV4cG9ydFR4IHtcbiAgICByZXR1cm4gRXhwb3J0VHhCdWlsZGVyLnZlcmlmeVR4VHlwZShiYXNlVHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgaW50ZXJuYWwgYXZhbGFuY2hlIHRyYW5zYWN0aW9uLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRBdmF4cFRyYW5zYWN0aW9uKCk6IHZvaWQge1xuICAgIC8vIGlmIHR4IGhhcyBjcmVkZW50aWFscywgdHggc2hvdWxkbid0IGNoYW5nZVxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmhhc0NyZWRlbnRpYWxzKSByZXR1cm47XG4gICAgY29uc3QgeyBpbnB1dHMsIG91dHB1dHMsIGNyZWRlbnRpYWxzIH0gPSB0aGlzLmNyZWF0ZUlucHV0T3V0cHV0KHRoaXMuX2Ftb3VudC5hZGQobmV3IEJOKHRoaXMudHJhbnNhY3Rpb24uZmVlLmZlZSkpKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKFxuICAgICAgbmV3IFBWTVR4KFxuICAgICAgICBuZXcgVW5zaWduZWRUeChcbiAgICAgICAgICBuZXcgRXhwb3J0VHgoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG4gICAgICAgICAgICBvdXRwdXRzLFxuICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbWVtbyxcbiAgICAgICAgICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCxcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0ZWRPdXRwdXRzKClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNyZWRlbnRpYWxzXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIEV4cG9ydGVkT3V0IHdoZXJlIHRoZSByZWNpcGllbnQgYWRkcmVzcyBhcmUgdGhlIHNlbmRlci5cbiAgICogTGF0ZXIgYSBpbXBvcnRUeCBzaG91bGQgY29tcGxldGUgdGhlIG9wZXJhdGlvbnMgc2lnbmluZyB3aXRoIHRoZSBzYW1lIGtleXMuXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBleHBvcnRlZE91dHB1dHMoKTogVHJhbnNmZXJhYmxlT3V0cHV0W10ge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgVHJhbnNmZXJhYmxlT3V0cHV0KFxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgICAgICBuZXcgU0VDUFRyYW5zZmVyT3V0cHV0KFxuICAgICAgICAgIHRoaXMuX2Ftb3VudCxcbiAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lLFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZFxuICAgICAgICApXG4gICAgICApLFxuICAgIF07XG4gIH1cbn1cbiJdfQ==
@@ -1,4 +1,6 @@
1
1
  import { Entry, TransactionExplanation as BaseTransactionExplanation, TransactionType } from '@bitgo/sdk-core';
2
+ import { BaseTx as PMVBaseTx, TransferableOutput, Tx as PMVTx } from 'avalanche/dist/apis/platformvm';
3
+ import { EVMBaseTx, EVMOutput, Tx as EMVTx } from 'avalanche/dist/apis/evm';
2
4
  export interface TransactionExplanation extends BaseTransactionExplanation {
3
5
  type: TransactionType;
4
6
  rewardAddresses: string[];
@@ -22,7 +24,7 @@ export interface TxData {
22
24
  fromAddresses: string[];
23
25
  threshold: number;
24
26
  locktime: string;
25
- memo: string;
27
+ memo?: string;
26
28
  signatures: string[];
27
29
  outputs: Entry[];
28
30
  changeOutputs: Entry[];
@@ -50,4 +52,7 @@ export declare type DecodedUtxoObj = {
50
52
  * {@link https://docs.avax.network/specs/platform-transaction-serialization#secp256k1-transfer-output-example }
51
53
  */
52
54
  export declare const SECP256K1_Transfer_Output = 7;
55
+ export declare type Tx = PMVTx | EMVTx;
56
+ export declare type BaseTx = PMVBaseTx | EVMBaseTx;
57
+ export declare type Output = TransferableOutput | EVMOutput;
53
58
  //# sourceMappingURL=iface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,sBAAsB,IAAI,0BAA0B,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE/G,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,eAAe,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,YAAY,IAAA;IACZ,YAAY,IAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,aAAa,EAAE,KAAK,EAAE,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,oBAAY,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC"}
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,sBAAsB,IAAI,0BAA0B,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,kBAAkB,EAAE,EAAE,IAAI,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACtG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAE5E,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,eAAe,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,YAAY,IAAA;IACZ,YAAY,IAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,aAAa,EAAE,KAAK,EAAE,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,oBAAY,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,oBAAY,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC;AAC/B,oBAAY,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAC3C,oBAAY,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAC"}
@@ -15,4 +15,4 @@ var MethodNames;
15
15
  * {@link https://docs.avax.network/specs/platform-transaction-serialization#secp256k1-transfer-output-example }
16
16
  */
17
17
  exports.SECP256K1_Transfer_Output = 7;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVNBOztHQUVHO0FBQ0gsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLDZEQUFZLENBQUE7SUFDWiw2REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUhXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBR3RCO0FBb0NEOzs7O0dBSUc7QUFDVSxRQUFBLHlCQUF5QixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudHJ5LCBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcmV3YXJkQWRkcmVzc2VzOiBzdHJpbmdbXTtcbiAgaW5wdXRzOiBFbnRyeVtdO1xuICBtZW1vPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGhvZCBuYW1lcyBmb3IgdGhlIHRyYW5zYWN0aW9uIG1ldGhvZC4gTmFtZXMgY2hhbmdlIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRyYW5zYWN0aW9uIGUuZyAnYm9uZCcgZm9yIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIE1ldGhvZE5hbWVzIHtcbiAgYWRkRGVsZWdhdG9yLFxuICBhZGRWYWxpZGF0b3IsXG59XG5cbi8qKlxuICogVGhlIHRyYW5zYWN0aW9uIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgdG9Kc29uKCkgZnVuY3Rpb24gb2YgYSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIGlucHV0czogRW50cnlbXTtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBmcm9tQWRkcmVzc2VzOiBzdHJpbmdbXTtcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBzdHJpbmc7XG4gIG1lbW86IHN0cmluZztcbiAgc2lnbmF0dXJlczogc3RyaW5nW107XG4gIG91dHB1dHM6IEVudHJ5W107XG4gIGNoYW5nZU91dHB1dHM6IEVudHJ5W107XG59XG5cbi8qKlxuICogRGVjb2RlZCBVVFhPIG9iamVjdC4gVGhpcyBpcyBmb3IgYSBzaW5nbGUgdXR4b1xuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBvdXRwdXRJRFxuICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCBBbW91bnQgYXMgYSBCaWcgTnVtYmVyIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHR4aWQgVHJhbnNhY3Rpb24gSUQgZW5jb2RlZCBhcyBjYjU4XG4gKiBAcGFyYW0ge3N0cmluZ30gb3V0cHV0aWR4IE91dHB1dCBpbmRleCBhcyBhIHN0cmluZ1xuICovXG5leHBvcnQgdHlwZSBEZWNvZGVkVXR4b09iaiA9IHtcbiAgb3V0cHV0SUQ6IG51bWJlcjtcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHR4aWQ6IHN0cmluZztcbiAgb3V0cHV0aWR4OiBzdHJpbmc7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBhZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBhZGRyZXNzZXNJbmRleD86IG51bWJlcltdO1xufTtcblxuLyoqXG4gKiBUeXBlSWQgdmFsdWUgZm9yIFNFQ1AyNTZLMSBUcmFuc2ZlciBPdXRwdXRcbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF2YXgubmV0d29yay9zcGVjcy9wbGF0Zm9ybS10cmFuc2FjdGlvbi1zZXJpYWxpemF0aW9uI3NlY3AyNTZrMS10cmFuc2Zlci1vdXRwdXQtZXhhbXBsZSB9XG4gKi9cbmV4cG9ydCBjb25zdCBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0ID0gNztcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBOztHQUVHO0FBQ0gsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLDZEQUFZLENBQUE7SUFDWiw2REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUhXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBR3RCO0FBb0NEOzs7O0dBSUc7QUFDVSxRQUFBLHlCQUF5QixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudHJ5LCBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZVR4IGFzIFBNVkJhc2VUeCwgVHJhbnNmZXJhYmxlT3V0cHV0LCBUeCBhcyBQTVZUeCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgeyBFVk1CYXNlVHgsIEVWTU91dHB1dCwgVHggYXMgRU1WVHggfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL2V2bSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICByZXdhcmRBZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBpbnB1dHM6IEVudHJ5W107XG4gIG1lbW8/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWV0aG9kIG5hbWVzIGZvciB0aGUgdHJhbnNhY3Rpb24gbWV0aG9kLiBOYW1lcyBjaGFuZ2UgYmFzZWQgb24gdGhlIHR5cGUgb2YgdHJhbnNhY3Rpb24gZS5nICdib25kJyBmb3IgdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGVudW0gTWV0aG9kTmFtZXMge1xuICBhZGREZWxlZ2F0b3IsXG4gIGFkZFZhbGlkYXRvcixcbn1cblxuLyoqXG4gKiBUaGUgdHJhbnNhY3Rpb24gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSB0b0pzb24oKSBmdW5jdGlvbiBvZiBhIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHhEYXRhIHtcbiAgaWQ6IHN0cmluZztcbiAgaW5wdXRzOiBFbnRyeVtdO1xuICB0eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIGZyb21BZGRyZXNzZXM6IHN0cmluZ1tdO1xuICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgbG9ja3RpbWU6IHN0cmluZztcbiAgbWVtbz86IHN0cmluZztcbiAgc2lnbmF0dXJlczogc3RyaW5nW107XG4gIG91dHB1dHM6IEVudHJ5W107XG4gIGNoYW5nZU91dHB1dHM6IEVudHJ5W107XG59XG5cbi8qKlxuICogRGVjb2RlZCBVVFhPIG9iamVjdC4gVGhpcyBpcyBmb3IgYSBzaW5nbGUgdXR4b1xuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBvdXRwdXRJRFxuICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCBBbW91bnQgYXMgYSBCaWcgTnVtYmVyIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHR4aWQgVHJhbnNhY3Rpb24gSUQgZW5jb2RlZCBhcyBjYjU4XG4gKiBAcGFyYW0ge3N0cmluZ30gb3V0cHV0aWR4IE91dHB1dCBpbmRleCBhcyBhIHN0cmluZ1xuICovXG5leHBvcnQgdHlwZSBEZWNvZGVkVXR4b09iaiA9IHtcbiAgb3V0cHV0SUQ6IG51bWJlcjtcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHR4aWQ6IHN0cmluZztcbiAgb3V0cHV0aWR4OiBzdHJpbmc7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBhZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBhZGRyZXNzZXNJbmRleD86IG51bWJlcltdO1xufTtcblxuLyoqXG4gKiBUeXBlSWQgdmFsdWUgZm9yIFNFQ1AyNTZLMSBUcmFuc2ZlciBPdXRwdXRcbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF2YXgubmV0d29yay9zcGVjcy9wbGF0Zm9ybS10cmFuc2FjdGlvbi1zZXJpYWxpemF0aW9uI3NlY3AyNTZrMS10cmFuc2Zlci1vdXRwdXQtZXhhbXBsZSB9XG4gKi9cbmV4cG9ydCBjb25zdCBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0ID0gNztcblxuZXhwb3J0IHR5cGUgVHggPSBQTVZUeCB8IEVNVlR4O1xuZXhwb3J0IHR5cGUgQmFzZVR4ID0gUE1WQmFzZVR4IHwgRVZNQmFzZVR4O1xuZXhwb3J0IHR5cGUgT3V0cHV0ID0gVHJhbnNmZXJhYmxlT3V0cHV0IHwgRVZNT3V0cHV0O1xuIl19