@bitgo-beta/sdk-coin-xdc 1.0.1-beta.856 → 1.0.1-beta.858

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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { EthLikeTokenConfig } from '@bitgo-beta/statics';
5
5
  import { BitGoBase, CoinConstructor, NamedCoinConstructor, MPCAlgorithm } from '@bitgo-beta/sdk-core';
6
- import { CoinNames, EthLikeToken } from '@bitgo-beta/abstract-eth';
6
+ import { CoinNames, EthLikeToken, VerifyEthTransactionOptions } from '@bitgo-beta/abstract-eth';
7
7
  import { TransactionBuilder } from './lib';
8
8
  export { EthLikeTokenConfig };
9
9
  export declare class XdcToken extends EthLikeToken {
@@ -23,5 +23,15 @@ export declare class XdcToken extends EthLikeToken {
23
23
  supportsTss(): boolean;
24
24
  /** @inheritDoc */
25
25
  getMPCAlgorithm(): MPCAlgorithm;
26
+ /**
27
+ * Verify if a tss transaction is valid
28
+ *
29
+ * @param {VerifyEthTransactionOptions} params
30
+ * @param {TransactionParams} params.txParams - params object passed to send
31
+ * @param {TransactionPrebuild} params.txPrebuild - prebuild object returned by server
32
+ * @param {Wallet} params.wallet - Wallet object to obtain keys to verify against
33
+ * @returns {boolean}
34
+ */
35
+ verifyTssTransaction(params: VerifyEthTransactionOptions): Promise<boolean>;
26
36
  }
27
37
  //# sourceMappingURL=xdcToken.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xdcToken.d.ts","sourceRoot":"","sources":["../../src/xdcToken.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAS,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAU,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,SAAS,EAAE,YAAY,EAAmC,MAAM,0BAA0B,CAAC;AAEpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,qBAAa,QAAS,SAAQ,YAAY;IACxC,SAAgB,WAAW,EAAE,kBAAkB,CAAC;IAChD,MAAM,CAAC,SAAS,EAAE,SAAS,CAGzB;gBACU,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB;IAG7D,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,eAAe;IAI1E,MAAM,CAAC,uBAAuB,IAAI,oBAAoB,EAAE;IAIxD,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;IAIrD;;;;OAIG;IACG,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMtG,WAAW,IAAI,MAAM;IAIrB,WAAW,IAAI,OAAO;IAItB,kBAAkB;IAClB,eAAe,IAAI,YAAY;CAGhC"}
1
+ {"version":3,"file":"xdcToken.d.ts","sourceRoot":"","sources":["../../src/xdcToken.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAS,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAU,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EACL,SAAS,EACT,YAAY,EAEZ,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,qBAAa,QAAS,SAAQ,YAAY;IACxC,SAAgB,WAAW,EAAE,kBAAkB,CAAC;IAChD,MAAM,CAAC,SAAS,EAAE,SAAS,CAGzB;gBACU,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB;IAG7D,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,eAAe;IAI1E,MAAM,CAAC,uBAAuB,IAAI,oBAAoB,EAAE;IAIxD,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;IAIrD;;;;OAIG;IACG,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMtG,WAAW,IAAI,MAAM;IAIrB,WAAW,IAAI,OAAO;IAItB,kBAAkB;IAClB,eAAe,IAAI,YAAY;IAI/B;;;;;;;;OAQG;IACG,oBAAoB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBlF"}
@@ -41,10 +41,34 @@ class XdcToken extends abstract_eth_1.EthLikeToken {
41
41
  getMPCAlgorithm() {
42
42
  return 'ecdsa';
43
43
  }
44
+ /**
45
+ * Verify if a tss transaction is valid
46
+ *
47
+ * @param {VerifyEthTransactionOptions} params
48
+ * @param {TransactionParams} params.txParams - params object passed to send
49
+ * @param {TransactionPrebuild} params.txPrebuild - prebuild object returned by server
50
+ * @param {Wallet} params.wallet - Wallet object to obtain keys to verify against
51
+ * @returns {boolean}
52
+ */
53
+ async verifyTssTransaction(params) {
54
+ const { txParams, txPrebuild, wallet } = params;
55
+ if (!txParams?.recipients &&
56
+ !(txParams.prebuildTx?.consolidateId ||
57
+ (txParams.type && ['acceleration', 'fillNonce', 'transferToken'].includes(txParams.type)))) {
58
+ throw new Error(`missing txParams`);
59
+ }
60
+ if (!wallet || !txPrebuild) {
61
+ throw new Error(`missing params`);
62
+ }
63
+ if (txParams.hop && txParams.recipients && txParams.recipients.length > 1) {
64
+ throw new Error(`tx cannot be both a batch and hop transaction`);
65
+ }
66
+ return true;
67
+ }
44
68
  }
45
69
  exports.XdcToken = XdcToken;
46
70
  XdcToken.coinNames = {
47
71
  Mainnet: 'xdc',
48
72
  Testnet: 'txdc',
49
73
  };
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGRjVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveGRjVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxpREFBZ0U7QUFDaEUsbURBQThHO0FBQzlHLDJEQUFvRztBQUVwRywrQkFBMkM7QUFHM0MsTUFBYSxRQUFTLFNBQVEsMkJBQVk7SUFNeEMsWUFBWSxLQUFnQixFQUFFLFdBQStCO1FBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE1BQTBCO1FBQ3RELE9BQU8sS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUI7UUFDNUIsT0FBTyxLQUFLLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFUyxxQkFBcUI7UUFDN0IsT0FBTyxJQUFJLHdCQUFrQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxLQUE2QjtRQUNqRSxNQUFNLFFBQVEsR0FBRyxpQkFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsbUJBQW1CLENBQUM7UUFDOUUsTUFBTSxXQUFXLEdBQUcsaUJBQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQ2hGLE9BQU8sTUFBTSxJQUFBLDhDQUErQixFQUFDLEtBQUssRUFBRSxXQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZUFBZTtRQUNiLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O0FBM0NILDRCQTRDQztBQTFDUSxrQkFBUyxHQUFjO0lBQzVCLE9BQU8sRUFBRSxLQUFLO0lBQ2QsT0FBTyxFQUFFLE1BQU07Q0FDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7IEV0aExpa2VUb2tlbkNvbmZpZywgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgQ29pbkNvbnN0cnVjdG9yLCBOYW1lZENvaW5Db25zdHJ1Y3RvciwgY29tbW9uLCBNUENBbGdvcml0aG0gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDb2luTmFtZXMsIEV0aExpa2VUb2tlbiwgcmVjb3ZlcnlCbG9ja2NoYWluRXhwbG9yZXJRdWVyeSB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vbGliJztcbmV4cG9ydCB7IEV0aExpa2VUb2tlbkNvbmZpZyB9O1xuXG5leHBvcnQgY2xhc3MgWGRjVG9rZW4gZXh0ZW5kcyBFdGhMaWtlVG9rZW4ge1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5Db25maWc6IEV0aExpa2VUb2tlbkNvbmZpZztcbiAgc3RhdGljIGNvaW5OYW1lczogQ29pbk5hbWVzID0ge1xuICAgIE1haW5uZXQ6ICd4ZGMnLFxuICAgIFRlc3RuZXQ6ICd0eGRjJyxcbiAgfTtcbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgdG9rZW5Db25maWc6IEV0aExpa2VUb2tlbkNvbmZpZykge1xuICAgIHN1cGVyKGJpdGdvLCB0b2tlbkNvbmZpZywgWGRjVG9rZW4uY29pbk5hbWVzKTtcbiAgfVxuICBzdGF0aWMgY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcihjb25maWc6IEV0aExpa2VUb2tlbkNvbmZpZyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIHN1cGVyLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IoY29uZmlnLCBYZGNUb2tlbi5jb2luTmFtZXMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKCk6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10ge1xuICAgIHJldHVybiBzdXBlci5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhYZGNUb2tlbi5jb2luTmFtZXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uQnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCh0aGlzLmdldEJhc2VDaGFpbigpKSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhIHF1ZXJ5IHRvIFhEQyBFdGhlcnNjYW4gZm9yIGluZm9ybWF0aW9uIHN1Y2ggYXMgYmFsYW5jZSwgdG9rZW4gYmFsYW5jZSwgc29saWRpdHkgY2FsbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IHF1ZXJ5IGtleS12YWx1ZSBwYWlycyBvZiBwYXJhbWV0ZXJzIHRvIGFwcGVuZCBhZnRlciAvYXBpXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59IHJlc3BvbnNlIGZyb20gWERDIEV0aGVyc2NhblxuICAgKi9cbiAgYXN5bmMgcmVjb3ZlcnlCbG9ja2NoYWluRXhwbG9yZXJRdWVyeShxdWVyeTogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICBjb25zdCBhcGlUb2tlbiA9IGNvbW1vbi5FbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0ueGRjRXhwbG9yZXJBcGlUb2tlbjtcbiAgICBjb25zdCBleHBsb3JlclVybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0ueGRjRXhwbG9yZXJCYXNlVXJsO1xuICAgIHJldHVybiBhd2FpdCByZWNvdmVyeUJsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5KHF1ZXJ5LCBleHBsb3JlclVybCBhcyBzdHJpbmcsIGFwaVRva2VuKTtcbiAgfVxuXG4gIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdYREMgVG9rZW4nO1xuICB9XG5cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdlY2RzYSc7XG4gIH1cbn1cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGRjVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveGRjVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxpREFBZ0U7QUFDaEUsbURBQThHO0FBQzlHLDJEQUtrQztBQUVsQywrQkFBMkM7QUFHM0MsTUFBYSxRQUFTLFNBQVEsMkJBQVk7SUFNeEMsWUFBWSxLQUFnQixFQUFFLFdBQStCO1FBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE1BQTBCO1FBQ3RELE9BQU8sS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUI7UUFDNUIsT0FBTyxLQUFLLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFUyxxQkFBcUI7UUFDN0IsT0FBTyxJQUFJLHdCQUFrQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxLQUE2QjtRQUNqRSxNQUFNLFFBQVEsR0FBRyxpQkFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsbUJBQW1CLENBQUM7UUFDOUUsTUFBTSxXQUFXLEdBQUcsaUJBQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQ2hGLE9BQU8sTUFBTSxJQUFBLDhDQUErQixFQUFDLEtBQUssRUFBRSxXQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZUFBZTtRQUNiLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFtQztRQUM1RCxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDaEQsSUFDRSxDQUFDLFFBQVEsRUFBRSxVQUFVO1lBQ3JCLENBQUMsQ0FDQyxRQUFRLENBQUMsVUFBVSxFQUFFLGFBQWE7Z0JBQ2xDLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUMxRixFQUNELENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztBQXpFSCw0QkEwRUM7QUF4RVEsa0JBQVMsR0FBYztJQUM1QixPQUFPLEVBQUUsS0FBSztJQUNkLE9BQU8sRUFBRSxNQUFNO0NBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgeyBFdGhMaWtlVG9rZW5Db25maWcsIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UsIENvaW5Db25zdHJ1Y3RvciwgTmFtZWRDb2luQ29uc3RydWN0b3IsIGNvbW1vbiwgTVBDQWxnb3JpdGhtIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQ29pbk5hbWVzLFxuICBFdGhMaWtlVG9rZW4sXG4gIHJlY292ZXJ5QmxvY2tjaGFpbkV4cGxvcmVyUXVlcnksXG4gIFZlcmlmeUV0aFRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtZXRoJztcblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9saWInO1xuZXhwb3J0IHsgRXRoTGlrZVRva2VuQ29uZmlnIH07XG5cbmV4cG9ydCBjbGFzcyBYZGNUb2tlbiBleHRlbmRzIEV0aExpa2VUb2tlbiB7XG4gIHB1YmxpYyByZWFkb25seSB0b2tlbkNvbmZpZzogRXRoTGlrZVRva2VuQ29uZmlnO1xuICBzdGF0aWMgY29pbk5hbWVzOiBDb2luTmFtZXMgPSB7XG4gICAgTWFpbm5ldDogJ3hkYycsXG4gICAgVGVzdG5ldDogJ3R4ZGMnLFxuICB9O1xuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB0b2tlbkNvbmZpZzogRXRoTGlrZVRva2VuQ29uZmlnKSB7XG4gICAgc3VwZXIoYml0Z28sIHRva2VuQ29uZmlnLCBYZGNUb2tlbi5jb2luTmFtZXMpO1xuICB9XG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9yKGNvbmZpZzogRXRoTGlrZVRva2VuQ29uZmlnKTogQ29pbkNvbnN0cnVjdG9yIHtcbiAgICByZXR1cm4gc3VwZXIuY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcihjb25maWcsIFhkY1Rva2VuLmNvaW5OYW1lcyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKTogTmFtZWRDb2luQ29uc3RydWN0b3JbXSB7XG4gICAgcmV0dXJuIHN1cGVyLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKFhkY1Rva2VuLmNvaW5OYW1lcyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNhY3Rpb25CdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXIoY29pbnMuZ2V0KHRoaXMuZ2V0QmFzZUNoYWluKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGEgcXVlcnkgdG8gWERDIEV0aGVyc2NhbiBmb3IgaW5mb3JtYXRpb24gc3VjaCBhcyBiYWxhbmNlLCB0b2tlbiBiYWxhbmNlLCBzb2xpZGl0eSBjYWxsc1xuICAgKiBAcGFyYW0ge09iamVjdH0gcXVlcnkga2V5LXZhbHVlIHBhaXJzIG9mIHBhcmFtZXRlcnMgdG8gYXBwZW5kIGFmdGVyIC9hcGlcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn0gcmVzcG9uc2UgZnJvbSBYREMgRXRoZXJzY2FuXG4gICAqL1xuICBhc3luYyByZWNvdmVyeUJsb2NrY2hhaW5FeHBsb3JlclF1ZXJ5KHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIGNvbnN0IGFwaVRva2VuID0gY29tbW9uLkVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS54ZGNFeHBsb3JlckFwaVRva2VuO1xuICAgIGNvbnN0IGV4cGxvcmVyVXJsID0gY29tbW9uLkVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS54ZGNFeHBsb3JlckJhc2VVcmw7XG4gICAgcmV0dXJuIGF3YWl0IHJlY292ZXJ5QmxvY2tjaGFpbkV4cGxvcmVyUXVlcnkocXVlcnksIGV4cGxvcmVyVXJsIGFzIHN0cmluZywgYXBpVG9rZW4pO1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1hEQyBUb2tlbic7XG4gIH1cblxuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VjZHNhJztcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgaWYgYSB0c3MgdHJhbnNhY3Rpb24gaXMgdmFsaWRcbiAgICpcbiAgICogQHBhcmFtIHtWZXJpZnlFdGhUcmFuc2FjdGlvbk9wdGlvbnN9IHBhcmFtc1xuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGFyYW1zfSBwYXJhbXMudHhQYXJhbXMgLSBwYXJhbXMgb2JqZWN0IHBhc3NlZCB0byBzZW5kXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25QcmVidWlsZH0gcGFyYW1zLnR4UHJlYnVpbGQgLSBwcmVidWlsZCBvYmplY3QgcmV0dXJuZWQgYnkgc2VydmVyXG4gICAqIEBwYXJhbSB7V2FsbGV0fSBwYXJhbXMud2FsbGV0IC0gV2FsbGV0IG9iamVjdCB0byBvYnRhaW4ga2V5cyB0byB2ZXJpZnkgYWdhaW5zdFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGFzeW5jIHZlcmlmeVRzc1RyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5RXRoVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgd2FsbGV0IH0gPSBwYXJhbXM7XG4gICAgaWYgKFxuICAgICAgIXR4UGFyYW1zPy5yZWNpcGllbnRzICYmXG4gICAgICAhKFxuICAgICAgICB0eFBhcmFtcy5wcmVidWlsZFR4Py5jb25zb2xpZGF0ZUlkIHx8XG4gICAgICAgICh0eFBhcmFtcy50eXBlICYmIFsnYWNjZWxlcmF0aW9uJywgJ2ZpbGxOb25jZScsICd0cmFuc2ZlclRva2VuJ10uaW5jbHVkZXModHhQYXJhbXMudHlwZSkpXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1pc3NpbmcgdHhQYXJhbXNgKTtcbiAgICB9XG4gICAgaWYgKCF3YWxsZXQgfHwgIXR4UHJlYnVpbGQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbWlzc2luZyBwYXJhbXNgKTtcbiAgICB9XG4gICAgaWYgKHR4UGFyYW1zLmhvcCAmJiB0eFBhcmFtcy5yZWNpcGllbnRzICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eCBjYW5ub3QgYmUgYm90aCBhIGJhdGNoIGFuZCBob3AgdHJhbnNhY3Rpb25gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
@@ -10,6 +10,27 @@ export declare const mockDataUnsignedSweep: {
10
10
  getBalanceRequest: Record<string, string>;
11
11
  getBalanceResponse: Record<string, unknown>;
12
12
  };
13
+ export declare const mockTokenTransferData: {
14
+ txRequestId: string;
15
+ walletId: string;
16
+ serializedTxHex: string;
17
+ signableHex: string;
18
+ tokenContractAddress: string;
19
+ recipientAddress: string;
20
+ senderAddress: string;
21
+ tokenAmount: string;
22
+ feeInfo: {
23
+ fee: number;
24
+ feeString: string;
25
+ };
26
+ txPrebuild: {
27
+ txHex: string;
28
+ recipients: {
29
+ address: string;
30
+ amount: string;
31
+ }[];
32
+ };
33
+ };
13
34
  export declare const mockDataNonBitGoRecovery: {
14
35
  recoveryDestination: string;
15
36
  userKeyData: string;
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../test/resources.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,qBAAqB;;;;;;;;;;;CAajC,CAAC;AAkCF,eAAO,MAAM,wBAAwB;;;;;;;;;;CAYpC,CAAC"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../test/resources.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,qBAAqB;;;;;;;;;;;CAajC,CAAC;AAmCF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;CAyBjC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;CAYpC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mockDataNonBitGoRecovery = exports.mockDataUnsignedSweep = void 0;
3
+ exports.mockDataNonBitGoRecovery = exports.mockTokenTransferData = exports.mockDataUnsignedSweep = void 0;
4
4
  const getTxListRequestUnsignedSweep = {
5
5
  chainid: '51',
6
6
  module: 'account',
@@ -69,6 +69,30 @@ const getBalanceResponseNonBitGoRecovery = {
69
69
  result: '100000000000000000',
70
70
  message: 'OK',
71
71
  };
72
+ // Mock data for txdc:tmt token transfer TSS transaction
73
+ exports.mockTokenTransferData = {
74
+ txRequestId: '2475368d-f604-46e3-a743-e32f663fa350',
75
+ walletId: '695e1ca4fb4a739c8c6f9b49120c55c7',
76
+ serializedTxHex: 'f86a0485045d964b8083061a8094b283ec8dad644effc5c4c50bb7bb21442ac3c2db80b844a9059cbb000000000000000000000000421cdf5e890070c28db0fd8e4bf87deac0cd0ffc00000000000000000000000000000000000000000000000000000000000f4240808080',
77
+ signableHex: 'f86a0485045d964b8083061a8094b283ec8dad644effc5c4c50bb7bb21442ac3c2db80b844a9059cbb000000000000000000000000421cdf5e890070c28db0fd8e4bf87deac0cd0ffc00000000000000000000000000000000000000000000000000000000000f4240338080',
78
+ tokenContractAddress: '0xb283ec8dad644effc5c4c50bb7bb21442ac3c2db',
79
+ recipientAddress: '0x421cdf5e890070c28db0fd8e4bf87deac0cd0ffc',
80
+ senderAddress: '0x6aafaddf545f96772140f0008190c176a065df9a',
81
+ tokenAmount: '1000000',
82
+ feeInfo: {
83
+ fee: 7500000000000000,
84
+ feeString: '7500000000000000',
85
+ },
86
+ txPrebuild: {
87
+ txHex: 'f86a0485045d964b8083061a8094b283ec8dad644effc5c4c50bb7bb21442ac3c2db80b844a9059cbb000000000000000000000000421cdf5e890070c28db0fd8e4bf87deac0cd0ffc00000000000000000000000000000000000000000000000000000000000f4240808080',
88
+ recipients: [
89
+ {
90
+ address: '0x421cdf5e890070c28db0fd8e4bf87deac0cd0ffc',
91
+ amount: '1000000',
92
+ },
93
+ ],
94
+ },
95
+ };
72
96
  exports.mockDataNonBitGoRecovery = {
73
97
  recoveryDestination: '0xd76b586901850f2c656db0cbef795c0851bbec35',
74
98
  userKeyData: '{"iv":"XeXwD5B465wYvao9WFZC7A==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"caDtzBCF3IA=","ct":"0qr0YV2DgN68F9luNpjFQhwDTIXwyTTYdQirvbgITHqIDmITmV1IMgkKIdzSZBfmLkB6bG46oVF4snVG7lXEJz2twrutI01g59xjw88ULgR5wV5ZdFrGcmNZvOQ1H5imoWGS8bVKONmeF55TBgi49r9x3dsmgWvJ/EHeApj/FrAP1BLX/Rgl57kZqnNoryl55P8L2cJtJE1weDBD+/GsggdrO/dYBmihKTWyTBVa7UBIIgV5wOd4RXbZN1Hg2Vc0bY56KrpZbY1CsdQiIwH3tkKFPdqthlHVEfS8XViaYVl0Go3C/mUMYZH7CTg/s4LMpdlWzh3iRnmGercvIFZBfcehgNVv9H/OctYZnKfUdI5mZsVGxQRIMWr8oFbmjR3pYJ94oxS8assAzl7hNI4RJi/u4N9/5VJIi//069zsMsgA+k4b3u3xvivkTjO5sscAPs/Sp0mb5QLQhP48D/sHIYwhQiThJaH+flSoUQu5LNWmucmYr08lRRiI07O7DZAY2pplLSvBfkrBtgTgi+rLN95lKkxi7PYTGWuek1Sd/XiXit6EJ5FImYH2eKEVgatYvKfj/BdNJ2iHmeaykajtjpr21lt0Iqk98iZLZfCp5w4hfHHHB4QCrBzCAeG2MEPqmrAN67z4gMxUbkI+j9lYp5SyvlFmDIm78SyQ60371Wfr+7b4+wFqPq9fumXBZ4i0xYbcWTrKjYrn5bO5o3LWiRoh7EW8mzbMIC2m/DwIwdCHodbz4g31Psnk6Yk6UqEMq5JhOoUJYuVhYthNmbRlI59UDg+rz/HO9nYnZqsUgubSKcZArqM1J4T4+EDKuHtgnCQm2hqHlsJu+/n73jU33GEm86pDdcb8udHsfPCvhEIuLw6ZyThiX8JEOCi8Ueb0GPL31MSkJ7L7cOizgp6lHgs4nZorZfUIKjDd3twcpBNXjT15KEQbrW8RQChXmVl0b5N8BAom6e9Xpz2kDRGbvbYfBOdiht5Vr5Sm7prAQVVCZTWq6/qOZFWr7LJ+Cdw1qYt64UFcBHNtaX3d5WOMNNMqesrglVTW7w2Gscu7XaxoA4cTOKvMemG1cWTag3kr8oNgtz5gXsfbSo7CJrN8vw=="}',
@@ -80,4 +104,4 @@ exports.mockDataNonBitGoRecovery = {
80
104
  getBalanceRequest: getBalanceRequestNonBitGoRecovery,
81
105
  getBalanceResponse: getBalanceResponseNonBitGoRecovery,
82
106
  };
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTSw2QkFBNkIsR0FBMkI7SUFDNUQsT0FBTyxFQUFFLElBQUk7SUFDYixNQUFNLEVBQUUsU0FBUztJQUNqQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsNENBQTRDO0NBQ3RELENBQUM7QUFFRixNQUFNLDhCQUE4QixHQUE0QjtJQUM5RCxNQUFNLEVBQUUsR0FBRztJQUNYLE1BQU0sRUFBRTtRQUNOO1lBQ0UsSUFBSSxFQUFFLG9FQUFvRTtZQUMxRSxLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSw0Q0FBNEM7U0FDbkQ7S0FDRjtJQUNELE9BQU8sRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGLE1BQU0sOEJBQThCLEdBQTJCO0lBQzdELE9BQU8sRUFBRSxJQUFJO0lBQ2IsTUFBTSxFQUFFLFNBQVM7SUFDakIsTUFBTSxFQUFFLFNBQVM7SUFDakIsT0FBTyxFQUFFLDRDQUE0QztDQUN0RCxDQUFDO0FBRUYsTUFBTSwrQkFBK0IsR0FBNEI7SUFDL0QsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUUsb0JBQW9CO0lBQzVCLE9BQU8sRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVXLFFBQUEscUJBQXFCLEdBQUc7SUFDbkMsT0FBTyxFQUNMLG9JQUFvSTtJQUN0SSxTQUFTLEVBQ1Asb0lBQW9JO0lBQ3RJLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLGlCQUFpQixFQUFFLDRDQUE0QztJQUMvRCxtQkFBbUIsRUFBRSw0Q0FBNEM7SUFDakUsZ0JBQWdCLEVBQUUsNkJBQTZCO0lBQy9DLGlCQUFpQixFQUFFLDhCQUE4QjtJQUNqRCxpQkFBaUIsRUFBRSw4QkFBOEI7SUFDakQsa0JBQWtCLEVBQUUsK0JBQStCO0NBQ3BELENBQUM7QUFFRixNQUFNLGdDQUFnQyxHQUEyQjtJQUMvRCxPQUFPLEVBQUUsSUFBSTtJQUNiLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSw0Q0FBNEM7Q0FDdEQsQ0FBQztBQUVGLE1BQU0saUNBQWlDLEdBQTRCO0lBQ2pFLE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFO1FBQ047WUFDRSxJQUFJLEVBQUUsb0VBQW9FO1lBQzFFLEtBQUssRUFBRSxJQUFJO1lBQ1gsSUFBSSxFQUFFLDRDQUE0QztTQUNuRDtLQUNGO0lBQ0QsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSxpQ0FBaUMsR0FBMkI7SUFDaEUsT0FBTyxFQUFFLElBQUk7SUFDYixNQUFNLEVBQUUsU0FBUztJQUNqQixNQUFNLEVBQUUsU0FBUztJQUNqQixPQUFPLEVBQUUsNENBQTRDO0NBQ3RELENBQUM7QUFFRixNQUFNLGtDQUFrQyxHQUE0QjtJQUNsRSxNQUFNLEVBQUUsR0FBRztJQUNYLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRVcsUUFBQSx3QkFBd0IsR0FBRztJQUN0QyxtQkFBbUIsRUFBRSw0Q0FBNEM7SUFDakUsV0FBVyxFQUNULG91Q0FBb3VDO0lBQ3R1QyxhQUFhLEVBQ1gsb3VDQUFvdUM7SUFDdHVDLGdCQUFnQixFQUFFLGlCQUFpQjtJQUNuQyxpQkFBaUIsRUFBRSw0Q0FBNEM7SUFDL0QsZ0JBQWdCLEVBQUUsZ0NBQWdDO0lBQ2xELGlCQUFpQixFQUFFLGlDQUFpQztJQUNwRCxpQkFBaUIsRUFBRSxpQ0FBaUM7SUFDcEQsa0JBQWtCLEVBQUUsa0NBQWtDO0NBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZXRUeExpc3RSZXF1ZXN0VW5zaWduZWRTd2VlcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgY2hhaW5pZDogJzUxJyxcbiAgbW9kdWxlOiAnYWNjb3VudCcsXG4gIGFjdGlvbjogJ3R4bGlzdCcsXG4gIGFkZHJlc3M6ICcweDc0MjgzODE5M2M0MTY5ZjZiMmJhN2IwZTAzZjcyM2MzYmEwOTI4ZTEnLFxufTtcblxuY29uc3QgZ2V0VHhMaXN0UmVzcG9uc2VVbnNpZ25lZFN3ZWVwOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgc3RhdHVzOiAnMScsXG4gIHJlc3VsdDogW1xuICAgIHtcbiAgICAgIGhhc2g6ICcweGVkZTg1NWQ0M2Q3MGVhMWJiNzVkYjYzZDRmNzUxMTNkYWUwODQ1ZjBkNGJkYjBiMmQ4YmRhNTUyNDljNzA4MTInLFxuICAgICAgbm9uY2U6ICcyMycsXG4gICAgICBmcm9tOiAnMHg3NDI4MzgxOTNjNDE2OWY2YjJiYTdiMGUwM2Y3MjNjM2JhMDkyOGUxJyxcbiAgICB9LFxuICBdLFxuICBtZXNzYWdlOiAnT0snLFxufTtcblxuY29uc3QgZ2V0QmFsYW5jZVJlcXVlc3RVbnNpZ25lZFN3ZWVwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBjaGFpbmlkOiAnNTEnLFxuICBtb2R1bGU6ICdhY2NvdW50JyxcbiAgYWN0aW9uOiAnYmFsYW5jZScsXG4gIGFkZHJlc3M6ICcweDc0MjgzODE5M2M0MTY5ZjZiMmJhN2IwZTAzZjcyM2MzYmEwOTI4ZTEnLFxufTtcblxuY29uc3QgZ2V0QmFsYW5jZVJlc3BvbnNlVW5zaWduZWRTd2VlcDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gIHN0YXR1czogJzEnLFxuICByZXN1bHQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAnLFxuICBtZXNzYWdlOiAnT0snLFxufTtcblxuZXhwb3J0IGNvbnN0IG1vY2tEYXRhVW5zaWduZWRTd2VlcCA9IHtcbiAgdXNlcktleTpcbiAgICAnMDI5ZDJkZWQyZDM5ZWU3Y2Q4ZDhiYmJhOGIyNWU0YzYwYmIwOTI5NzkzNmZhNmIyMjNkZTFmNDk1YjVlZTIwZGNhZjc2MjM2N2Y5NjkxZjc3MTljYjVlMTNlNTlkNzI1NjY5YTE4YWFkMWUyNTIyZGQxNDFmYTRjN2ZkM2QyNWMxNycsXG4gIGJhY2t1cEtleTpcbiAgICAnMDI5ZDJkZWQyZDM5ZWU3Y2Q4ZDhiYmJhOGIyNWU0YzYwYmIwOTI5NzkzNmZhNmIyMjNkZTFmNDk1YjVlZTIwZGNhZjc2MjM2N2Y5NjkxZjc3MTljYjVlMTNlNTlkNzI1NjY5YTE4YWFkMWUyNTIyZGQxNDFmYTRjN2ZkM2QyNWMxNycsXG4gIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgZGVyaXZhdGlvblNlZWQ6ICcnLFxuICB3YWxsZXRCYXNlQWRkcmVzczogJzB4NzQyODM4MTkzYzQxNjlmNmIyYmE3YjBlMDNmNzIzYzNiYTA5MjhlMScsXG4gIHJlY292ZXJ5RGVzdGluYXRpb246ICcweGQ3NmI1ODY5MDE4NTBmMmM2NTZkYjBjYmVmNzk1YzA4NTFiYmVjMzUnLFxuICBnZXRUeExpc3RSZXF1ZXN0OiBnZXRUeExpc3RSZXF1ZXN0VW5zaWduZWRTd2VlcCxcbiAgZ2V0VHhMaXN0UmVzcG9uc2U6IGdldFR4TGlzdFJlc3BvbnNlVW5zaWduZWRTd2VlcCxcbiAgZ2V0QmFsYW5jZVJlcXVlc3Q6IGdldEJhbGFuY2VSZXF1ZXN0VW5zaWduZWRTd2VlcCxcbiAgZ2V0QmFsYW5jZVJlc3BvbnNlOiBnZXRCYWxhbmNlUmVzcG9uc2VVbnNpZ25lZFN3ZWVwLFxufTtcblxuY29uc3QgZ2V0VHhMaXN0UmVxdWVzdE5vbkJpdEdvUmVjb3Zlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGNoYWluaWQ6ICc1MScsXG4gIG1vZHVsZTogJ2FjY291bnQnLFxuICBhY3Rpb246ICd0eGxpc3QnLFxuICBhZGRyZXNzOiAnMHg0NDc3YmMzZTI0NzJiMmM1NTgwYzAxMDUyNmRmYzU2MTQ4NzE5NTJkJyxcbn07XG5cbmNvbnN0IGdldFR4TGlzdFJlc3BvbnNlTm9uQml0R29SZWNvdmVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gIHN0YXR1czogJzEnLFxuICByZXN1bHQ6IFtcbiAgICB7XG4gICAgICBoYXNoOiAnMHhlZGU4NTVkNDNkNzBlYTFiYjc1ZGI2M2Q0Zjc1MTEzZGFlMDg0NWYwZDRiZGIwYjJkOGJkYTU1MjQ5YzcwODEyJyxcbiAgICAgIG5vbmNlOiAnMjMnLFxuICAgICAgZnJvbTogJzB4NDQ3N2JjM2UyNDcyYjJjNTU4MGMwMTA1MjZkZmM1NjE0ODcxOTUyZCcsXG4gICAgfSxcbiAgXSxcbiAgbWVzc2FnZTogJ09LJyxcbn07XG5cbmNvbnN0IGdldEJhbGFuY2VSZXF1ZXN0Tm9uQml0R29SZWNvdmVyeTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgY2hhaW5pZDogJzUxJyxcbiAgbW9kdWxlOiAnYWNjb3VudCcsXG4gIGFjdGlvbjogJ2JhbGFuY2UnLFxuICBhZGRyZXNzOiAnMHg0NDc3YmMzZTI0NzJiMmM1NTgwYzAxMDUyNmRmYzU2MTQ4NzE5NTJkJyxcbn07XG5cbmNvbnN0IGdldEJhbGFuY2VSZXNwb25zZU5vbkJpdEdvUmVjb3Zlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICBzdGF0dXM6ICcxJyxcbiAgcmVzdWx0OiAnMTAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgbWVzc2FnZTogJ09LJyxcbn07XG5cbmV4cG9ydCBjb25zdCBtb2NrRGF0YU5vbkJpdEdvUmVjb3ZlcnkgPSB7XG4gIHJlY292ZXJ5RGVzdGluYXRpb246ICcweGQ3NmI1ODY5MDE4NTBmMmM2NTZkYjBjYmVmNzk1YzA4NTFiYmVjMzUnLFxuICB1c2VyS2V5RGF0YTpcbiAgICAne1wiaXZcIjpcIlhlWHdENUI0NjV3WXZhbzlXRlpDN0E9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCI6XCJjY21cIixcImFkYXRhXCI6XCJcIixcImNpcGhlclwiOlwiYWVzXCIsXCJzYWx0XCI6XCJjYUR0ekJDRjNJQT1cIixcImN0XCI6XCIwcXIwWVYyRGdONjhGOWx1TnBqRlFod0RUSVh3eVRUWWRRaXJ2YmdJVEhxSURtSVRtVjFJTWdrS0lkelNaQmZtTGtCNmJHNDZvVkY0c25WRzdsWEVKejJ0d3J1dEkwMWc1OXhqdzg4VUxnUjV3VjVaZEZyR2NtTlp2T1ExSDVpbW9XR1M4YlZLT05tZUY1NVRCZ2k0OXI5eDNkc21nV3ZKL0VIZUFwai9GckFQMUJMWC9SZ2w1N2tacW5Ob3J5bDU1UDhMMmNKdEpFMXdlREJEKy9Hc2dnZHJPL2RZQm1paEtUV3lUQlZhN1VCSUlnVjV3T2Q0UlhiWk4xSGcyVmMwYlk1NktycFpiWTFDc2RRaUl3SDN0a0tGUGRxdGhsSFZFZlM4WFZpYVlWbDBHbzNDL21VTVlaSDdDVGcvczRMTXBkbFd6aDNpUm5tR2VyY3ZJRlpCZmNlaGdOVnY5SC9PY3RZWm5LZlVkSTVtWnNWR3hRUklNV3I4b0ZibWpSM3BZSjk0b3hTOGFzc0F6bDdoTkk0UkppL3U0TjkvNVZKSWkvLzA2OXpzTXNnQStrNGIzdTN4dml2a1RqTzVzc2NBUHMvU3AwbWI1UUxRaFA0OEQvc0hJWXdoUWlUaEphSCtmbFNvVVF1NUxOV211Y21ZcjA4bFJSaUkwN083RFpBWTJwcGxMU3ZCZmtyQnRnVGdpK3JMTjk1bEtreGk3UFlUR1d1ZWsxU2QvWGlYaXQ2RUo1RkltWUgyZUtFVmdhdFl2S2ZqL0JkTkoyaUhtZWF5a2FqdGpwcjIxbHQwSXFrOThpWkxaZkNwNXc0aGZISEhCNFFDckJ6Q0FlRzJNRVBxbXJBTjY3ejRnTXhVYmtJK2o5bFlwNVN5dmxGbURJbTc4U3lRNjAzNzFXZnIrN2I0K3dGcVBxOWZ1bVhCWjRpMHhZYmNXVHJLallybjViTzVvM0xXaVJvaDdFVzhtemJNSUMybS9Ed0l3ZENIb2RiejRnMzFQc25rNllrNlVxRU1xNUpoT29VSll1VmhZdGhObWJSbEk1OVVEZytyei9ITzluWW5acXNVZ3ViU0tjWkFycU0xSjRUNCtFREt1SHRnbkNRbTJocUhsc0p1Ky9uNzNqVTMzR0VtODZwRGRjYjh1ZEhzZlBDdmhFSXVMdzZaeVRoaVg4SkVPQ2k4VWViMEdQTDMxTVNrSjdMN2NPaXpncDZsSGdzNG5ab3JaZlVJS2pEZDN0d2NwQk5YalQxNUtFUWJyVzhSUUNoWG1WbDBiNU44QkFvbTZlOVhwejJrRFJHYnZiWWZCT2RpaHQ1VnI1U203cHJBUVZWQ1pUV3E2L3FPWkZXcjdMSitDZHcxcVl0NjRVRmNCSE50YVgzZDVXT01OTk1xZXNyZ2xWVFc3dzJHc2N1N1hheG9BNGNUT0t2TWVtRzFjV1RhZzNrcjhvTmd0ejVnWHNmYlNvN0NKck44dnc9PVwifScsXG4gIGJhY2t1cEtleURhdGE6XG4gICAgJ3tcIml2XCI6XCJKMzJWSUpoTzlDYmY1YnFjdjc1S2FnPT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiWlE1VnNIZFhNNFE9XCIsXCJjdFwiOlwiWFRnQVV5OFRaQUxLdHQvUHRKR0FXYkhmdUV4SDVDNXl3M3k4RXJ5cmNZM3VaZGVrdGwzV2tMNEtISEdUdEw5eXpzc0NUT1dVTVRlbW9BS2lwZCtXLzNtcFp1UTg4cCtsbG9JZ1U3VGNlM1JMQkcrZ3U2NjVic3ZUVXVWcGZNcnBaSHhEWFhWTXp3b1VWSGF4d2Z2dTJ0Z2R1RG5wa0QvQlgyUk41cWZJNlA2eno1cjhVdVdiaURQS0VhcXBjQUhRK1JCaXRCUWlPeE5BbFJOWWV4blV4MXBDcWNLMDhocXJxZFF2eDdlbFhYZENJM1R3ZXBHVzdRd1J6V2E5cHh2TTlkODVBV0VTdWVKMkI0SnJaNWJrckl6WGl4R0pjb1VBSlZ2R2ZENjl6b0xVSDllaW5uTWFmcG9jRVRCVURReWV2Qy9qLzFGd2daVUNlR2NiNFU5Tjl0UUp0UjBmb3p6Z3BBbzkxbldBNVVma0QyK2h6UnZ6MnAxRG1jKzRiTmI2cy83dksrQklPZHBlNGJsekk0M1B4TUxvQkdrRVFIbEdIWUNyT1VuYlY3ZGN4bHlQdjBxZm9tOEs0ZjYvNzRZRUtpTVBqd0Ezc0NjbnRXYm9XOGdVUEhGMnh4L1dBZ21ISTlET2lYc0NKWk1IeDRHaVptWS9wUjlSVmUvT2VGQXFQTFdKb1Q2S2FpelRKRDNTbzQvRzVvSEtQZ1RRYk1JUGkxbFl0cUtkT3VoeWNJU3NhRWdua0cxYThUcTVDTjB0azVWeXdTbWo0a1NycXFqY3A3a2JBVytWaWFOa1pMdVNpYm9tSzlBdnVPR2tFWkJxREV1eUZKblM0b2F5UVRMeG5zdHpPMUpKR2htckNza0g5Qi9RSUlyVVZsMUlPdi9JVnlQZzRNN1QxZzArWWZIZEFYZHVMWHU5YmpIa3F6R2FTUVp1MzViczVRS3kwYktFaEF3b2oremdZQUYvZ1pCSDAvaVB6cldNMnh1L0hNZVFLd0kwS0ZMT2lCeDNjTW1OWUUrRmI2dkNqcFZYQlRZWVVDQk9qUm5yQXVSL2xjM0FuakFlZkNNQUQ4OStGUStRVzVJelp2OTdsclN3MFJiK0RJY3RmWGRkVUtLN3l5QmU4Q2NaV1UxZEdBWXNiL2hrK0g1bFRaSkJ1cjVNM2ExdnpQTWk2OEhLblJ0N1habXlCc3ZQQTh0MEpWSm1sYzBSZWpxRHJjcHM0dUtqS2RNYUROT3ZCem1FaWpkVnY4TjVxME5nK3lId3EzQm9scW9ZbjRtVkpPck11UmxadDRwT0RrSTh1T1UxSGEvVlN0THpoVDJIRmV4WitZMEp6TTBEUzVoc3lnSHQ0RHo2L1JmWlRLSFl2eHp1UmlITkxibU5jT0J2VmJCT0wyTG0rRGxvM2ZGdVZEM2ZTMDh2SnVhZmMvdUFmYXRwUndScWdFL0V6dlpPcG5aeUhjcjRsVVZFaFJyRFl3PT1cIn0nLFxuICB3YWxsZXRQYXNzcGhyYXNlOiAncHJpdGh2aXNoZXQyNTAzJyxcbiAgd2FsbGV0Um9vdEFkZHJlc3M6ICcweDQ0NzdiYzNlMjQ3MmIyYzU1ODBjMDEwNTI2ZGZjNTYxNDg3MTk1MmQnLFxuICBnZXRUeExpc3RSZXF1ZXN0OiBnZXRUeExpc3RSZXF1ZXN0Tm9uQml0R29SZWNvdmVyeSxcbiAgZ2V0VHhMaXN0UmVzcG9uc2U6IGdldFR4TGlzdFJlc3BvbnNlTm9uQml0R29SZWNvdmVyeSxcbiAgZ2V0QmFsYW5jZVJlcXVlc3Q6IGdldEJhbGFuY2VSZXF1ZXN0Tm9uQml0R29SZWNvdmVyeSxcbiAgZ2V0QmFsYW5jZVJlc3BvbnNlOiBnZXRCYWxhbmNlUmVzcG9uc2VOb25CaXRHb1JlY292ZXJ5LFxufTtcbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTSw2QkFBNkIsR0FBMkI7SUFDNUQsT0FBTyxFQUFFLElBQUk7SUFDYixNQUFNLEVBQUUsU0FBUztJQUNqQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsNENBQTRDO0NBQ3RELENBQUM7QUFFRixNQUFNLDhCQUE4QixHQUE0QjtJQUM5RCxNQUFNLEVBQUUsR0FBRztJQUNYLE1BQU0sRUFBRTtRQUNOO1lBQ0UsSUFBSSxFQUFFLG9FQUFvRTtZQUMxRSxLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSw0Q0FBNEM7U0FDbkQ7S0FDRjtJQUNELE9BQU8sRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGLE1BQU0sOEJBQThCLEdBQTJCO0lBQzdELE9BQU8sRUFBRSxJQUFJO0lBQ2IsTUFBTSxFQUFFLFNBQVM7SUFDakIsTUFBTSxFQUFFLFNBQVM7SUFDakIsT0FBTyxFQUFFLDRDQUE0QztDQUN0RCxDQUFDO0FBRUYsTUFBTSwrQkFBK0IsR0FBNEI7SUFDL0QsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUUsb0JBQW9CO0lBQzVCLE9BQU8sRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVXLFFBQUEscUJBQXFCLEdBQUc7SUFDbkMsT0FBTyxFQUNMLG9JQUFvSTtJQUN0SSxTQUFTLEVBQ1Asb0lBQW9JO0lBQ3RJLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLGlCQUFpQixFQUFFLDRDQUE0QztJQUMvRCxtQkFBbUIsRUFBRSw0Q0FBNEM7SUFDakUsZ0JBQWdCLEVBQUUsNkJBQTZCO0lBQy9DLGlCQUFpQixFQUFFLDhCQUE4QjtJQUNqRCxpQkFBaUIsRUFBRSw4QkFBOEI7SUFDakQsa0JBQWtCLEVBQUUsK0JBQStCO0NBQ3BELENBQUM7QUFFRixNQUFNLGdDQUFnQyxHQUEyQjtJQUMvRCxPQUFPLEVBQUUsSUFBSTtJQUNiLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSw0Q0FBNEM7Q0FDdEQsQ0FBQztBQUVGLE1BQU0saUNBQWlDLEdBQTRCO0lBQ2pFLE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFO1FBQ047WUFDRSxJQUFJLEVBQUUsb0VBQW9FO1lBQzFFLEtBQUssRUFBRSxJQUFJO1lBQ1gsSUFBSSxFQUFFLDRDQUE0QztTQUNuRDtLQUNGO0lBQ0QsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSxpQ0FBaUMsR0FBMkI7SUFDaEUsT0FBTyxFQUFFLElBQUk7SUFDYixNQUFNLEVBQUUsU0FBUztJQUNqQixNQUFNLEVBQUUsU0FBUztJQUNqQixPQUFPLEVBQUUsNENBQTRDO0NBQ3RELENBQUM7QUFFRixNQUFNLGtDQUFrQyxHQUE0QjtJQUNsRSxNQUFNLEVBQUUsR0FBRztJQUNYLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsd0RBQXdEO0FBQzNDLFFBQUEscUJBQXFCLEdBQUc7SUFDbkMsV0FBVyxFQUFFLHNDQUFzQztJQUNuRCxRQUFRLEVBQUUsa0NBQWtDO0lBQzVDLGVBQWUsRUFDYiwwTkFBME47SUFDNU4sV0FBVyxFQUNULDBOQUEwTjtJQUM1TixvQkFBb0IsRUFBRSw0Q0FBNEM7SUFDbEUsZ0JBQWdCLEVBQUUsNENBQTRDO0lBQzlELGFBQWEsRUFBRSw0Q0FBNEM7SUFDM0QsV0FBVyxFQUFFLFNBQVM7SUFDdEIsT0FBTyxFQUFFO1FBQ1AsR0FBRyxFQUFFLGdCQUFnQjtRQUNyQixTQUFTLEVBQUUsa0JBQWtCO0tBQzlCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsS0FBSyxFQUNILDBOQUEwTjtRQUM1TixVQUFVLEVBQUU7WUFDVjtnQkFDRSxPQUFPLEVBQUUsNENBQTRDO2dCQUNyRCxNQUFNLEVBQUUsU0FBUzthQUNsQjtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBRVcsUUFBQSx3QkFBd0IsR0FBRztJQUN0QyxtQkFBbUIsRUFBRSw0Q0FBNEM7SUFDakUsV0FBVyxFQUNULG91Q0FBb3VDO0lBQ3R1QyxhQUFhLEVBQ1gsb3VDQUFvdUM7SUFDdHVDLGdCQUFnQixFQUFFLGlCQUFpQjtJQUNuQyxpQkFBaUIsRUFBRSw0Q0FBNEM7SUFDL0QsZ0JBQWdCLEVBQUUsZ0NBQWdDO0lBQ2xELGlCQUFpQixFQUFFLGlDQUFpQztJQUNwRCxpQkFBaUIsRUFBRSxpQ0FBaUM7SUFDcEQsa0JBQWtCLEVBQUUsa0NBQWtDO0NBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZXRUeExpc3RSZXF1ZXN0VW5zaWduZWRTd2VlcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgY2hhaW5pZDogJzUxJyxcbiAgbW9kdWxlOiAnYWNjb3VudCcsXG4gIGFjdGlvbjogJ3R4bGlzdCcsXG4gIGFkZHJlc3M6ICcweDc0MjgzODE5M2M0MTY5ZjZiMmJhN2IwZTAzZjcyM2MzYmEwOTI4ZTEnLFxufTtcblxuY29uc3QgZ2V0VHhMaXN0UmVzcG9uc2VVbnNpZ25lZFN3ZWVwOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgc3RhdHVzOiAnMScsXG4gIHJlc3VsdDogW1xuICAgIHtcbiAgICAgIGhhc2g6ICcweGVkZTg1NWQ0M2Q3MGVhMWJiNzVkYjYzZDRmNzUxMTNkYWUwODQ1ZjBkNGJkYjBiMmQ4YmRhNTUyNDljNzA4MTInLFxuICAgICAgbm9uY2U6ICcyMycsXG4gICAgICBmcm9tOiAnMHg3NDI4MzgxOTNjNDE2OWY2YjJiYTdiMGUwM2Y3MjNjM2JhMDkyOGUxJyxcbiAgICB9LFxuICBdLFxuICBtZXNzYWdlOiAnT0snLFxufTtcblxuY29uc3QgZ2V0QmFsYW5jZVJlcXVlc3RVbnNpZ25lZFN3ZWVwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBjaGFpbmlkOiAnNTEnLFxuICBtb2R1bGU6ICdhY2NvdW50JyxcbiAgYWN0aW9uOiAnYmFsYW5jZScsXG4gIGFkZHJlc3M6ICcweDc0MjgzODE5M2M0MTY5ZjZiMmJhN2IwZTAzZjcyM2MzYmEwOTI4ZTEnLFxufTtcblxuY29uc3QgZ2V0QmFsYW5jZVJlc3BvbnNlVW5zaWduZWRTd2VlcDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gIHN0YXR1czogJzEnLFxuICByZXN1bHQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAnLFxuICBtZXNzYWdlOiAnT0snLFxufTtcblxuZXhwb3J0IGNvbnN0IG1vY2tEYXRhVW5zaWduZWRTd2VlcCA9IHtcbiAgdXNlcktleTpcbiAgICAnMDI5ZDJkZWQyZDM5ZWU3Y2Q4ZDhiYmJhOGIyNWU0YzYwYmIwOTI5NzkzNmZhNmIyMjNkZTFmNDk1YjVlZTIwZGNhZjc2MjM2N2Y5NjkxZjc3MTljYjVlMTNlNTlkNzI1NjY5YTE4YWFkMWUyNTIyZGQxNDFmYTRjN2ZkM2QyNWMxNycsXG4gIGJhY2t1cEtleTpcbiAgICAnMDI5ZDJkZWQyZDM5ZWU3Y2Q4ZDhiYmJhOGIyNWU0YzYwYmIwOTI5NzkzNmZhNmIyMjNkZTFmNDk1YjVlZTIwZGNhZjc2MjM2N2Y5NjkxZjc3MTljYjVlMTNlNTlkNzI1NjY5YTE4YWFkMWUyNTIyZGQxNDFmYTRjN2ZkM2QyNWMxNycsXG4gIGRlcml2YXRpb25QYXRoOiAnbS8wJyxcbiAgZGVyaXZhdGlvblNlZWQ6ICcnLFxuICB3YWxsZXRCYXNlQWRkcmVzczogJzB4NzQyODM4MTkzYzQxNjlmNmIyYmE3YjBlMDNmNzIzYzNiYTA5MjhlMScsXG4gIHJlY292ZXJ5RGVzdGluYXRpb246ICcweGQ3NmI1ODY5MDE4NTBmMmM2NTZkYjBjYmVmNzk1YzA4NTFiYmVjMzUnLFxuICBnZXRUeExpc3RSZXF1ZXN0OiBnZXRUeExpc3RSZXF1ZXN0VW5zaWduZWRTd2VlcCxcbiAgZ2V0VHhMaXN0UmVzcG9uc2U6IGdldFR4TGlzdFJlc3BvbnNlVW5zaWduZWRTd2VlcCxcbiAgZ2V0QmFsYW5jZVJlcXVlc3Q6IGdldEJhbGFuY2VSZXF1ZXN0VW5zaWduZWRTd2VlcCxcbiAgZ2V0QmFsYW5jZVJlc3BvbnNlOiBnZXRCYWxhbmNlUmVzcG9uc2VVbnNpZ25lZFN3ZWVwLFxufTtcblxuY29uc3QgZ2V0VHhMaXN0UmVxdWVzdE5vbkJpdEdvUmVjb3Zlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGNoYWluaWQ6ICc1MScsXG4gIG1vZHVsZTogJ2FjY291bnQnLFxuICBhY3Rpb246ICd0eGxpc3QnLFxuICBhZGRyZXNzOiAnMHg0NDc3YmMzZTI0NzJiMmM1NTgwYzAxMDUyNmRmYzU2MTQ4NzE5NTJkJyxcbn07XG5cbmNvbnN0IGdldFR4TGlzdFJlc3BvbnNlTm9uQml0R29SZWNvdmVyeTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gIHN0YXR1czogJzEnLFxuICByZXN1bHQ6IFtcbiAgICB7XG4gICAgICBoYXNoOiAnMHhlZGU4NTVkNDNkNzBlYTFiYjc1ZGI2M2Q0Zjc1MTEzZGFlMDg0NWYwZDRiZGIwYjJkOGJkYTU1MjQ5YzcwODEyJyxcbiAgICAgIG5vbmNlOiAnMjMnLFxuICAgICAgZnJvbTogJzB4NDQ3N2JjM2UyNDcyYjJjNTU4MGMwMTA1MjZkZmM1NjE0ODcxOTUyZCcsXG4gICAgfSxcbiAgXSxcbiAgbWVzc2FnZTogJ09LJyxcbn07XG5cbmNvbnN0IGdldEJhbGFuY2VSZXF1ZXN0Tm9uQml0R29SZWNvdmVyeTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgY2hhaW5pZDogJzUxJyxcbiAgbW9kdWxlOiAnYWNjb3VudCcsXG4gIGFjdGlvbjogJ2JhbGFuY2UnLFxuICBhZGRyZXNzOiAnMHg0NDc3YmMzZTI0NzJiMmM1NTgwYzAxMDUyNmRmYzU2MTQ4NzE5NTJkJyxcbn07XG5cbmNvbnN0IGdldEJhbGFuY2VSZXNwb25zZU5vbkJpdEdvUmVjb3Zlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICBzdGF0dXM6ICcxJyxcbiAgcmVzdWx0OiAnMTAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgbWVzc2FnZTogJ09LJyxcbn07XG5cbi8vIE1vY2sgZGF0YSBmb3IgdHhkYzp0bXQgdG9rZW4gdHJhbnNmZXIgVFNTIHRyYW5zYWN0aW9uXG5leHBvcnQgY29uc3QgbW9ja1Rva2VuVHJhbnNmZXJEYXRhID0ge1xuICB0eFJlcXVlc3RJZDogJzI0NzUzNjhkLWY2MDQtNDZlMy1hNzQzLWUzMmY2NjNmYTM1MCcsXG4gIHdhbGxldElkOiAnNjk1ZTFjYTRmYjRhNzM5YzhjNmY5YjQ5MTIwYzU1YzcnLFxuICBzZXJpYWxpemVkVHhIZXg6XG4gICAgJ2Y4NmEwNDg1MDQ1ZDk2NGI4MDgzMDYxYTgwOTRiMjgzZWM4ZGFkNjQ0ZWZmYzVjNGM1MGJiN2JiMjE0NDJhYzNjMmRiODBiODQ0YTkwNTljYmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MjFjZGY1ZTg5MDA3MGMyOGRiMGZkOGU0YmY4N2RlYWMwY2QwZmZjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDgwODA4MCcsXG4gIHNpZ25hYmxlSGV4OlxuICAgICdmODZhMDQ4NTA0NWQ5NjRiODA4MzA2MWE4MDk0YjI4M2VjOGRhZDY0NGVmZmM1YzRjNTBiYjdiYjIxNDQyYWMzYzJkYjgwYjg0NGE5MDU5Y2JiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDIxY2RmNWU4OTAwNzBjMjhkYjBmZDhlNGJmODdkZWFjMGNkMGZmYzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZjQyNDAzMzgwODAnLFxuICB0b2tlbkNvbnRyYWN0QWRkcmVzczogJzB4YjI4M2VjOGRhZDY0NGVmZmM1YzRjNTBiYjdiYjIxNDQyYWMzYzJkYicsXG4gIHJlY2lwaWVudEFkZHJlc3M6ICcweDQyMWNkZjVlODkwMDcwYzI4ZGIwZmQ4ZTRiZjg3ZGVhYzBjZDBmZmMnLFxuICBzZW5kZXJBZGRyZXNzOiAnMHg2YWFmYWRkZjU0NWY5Njc3MjE0MGYwMDA4MTkwYzE3NmEwNjVkZjlhJyxcbiAgdG9rZW5BbW91bnQ6ICcxMDAwMDAwJyxcbiAgZmVlSW5mbzoge1xuICAgIGZlZTogNzUwMDAwMDAwMDAwMDAwMCxcbiAgICBmZWVTdHJpbmc6ICc3NTAwMDAwMDAwMDAwMDAwJyxcbiAgfSxcbiAgdHhQcmVidWlsZDoge1xuICAgIHR4SGV4OlxuICAgICAgJ2Y4NmEwNDg1MDQ1ZDk2NGI4MDgzMDYxYTgwOTRiMjgzZWM4ZGFkNjQ0ZWZmYzVjNGM1MGJiN2JiMjE0NDJhYzNjMmRiODBiODQ0YTkwNTljYmIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MjFjZGY1ZTg5MDA3MGMyOGRiMGZkOGU0YmY4N2RlYWMwY2QwZmZjMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDgwODA4MCcsXG4gICAgcmVjaXBpZW50czogW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiAnMHg0MjFjZGY1ZTg5MDA3MGMyOGRiMGZkOGU0YmY4N2RlYWMwY2QwZmZjJyxcbiAgICAgICAgYW1vdW50OiAnMTAwMDAwMCcsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgbW9ja0RhdGFOb25CaXRHb1JlY292ZXJ5ID0ge1xuICByZWNvdmVyeURlc3RpbmF0aW9uOiAnMHhkNzZiNTg2OTAxODUwZjJjNjU2ZGIwY2JlZjc5NWMwODUxYmJlYzM1JyxcbiAgdXNlcktleURhdGE6XG4gICAgJ3tcIml2XCI6XCJYZVh3RDVCNDY1d1l2YW85V0ZaQzdBPT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiY2FEdHpCQ0YzSUE9XCIsXCJjdFwiOlwiMHFyMFlWMkRnTjY4RjlsdU5wakZRaHdEVElYd3lUVFlkUWlydmJnSVRIcUlEbUlUbVYxSU1na0tJZHpTWkJmbUxrQjZiRzQ2b1ZGNHNuVkc3bFhFSnoydHdydXRJMDFnNTl4anc4OFVMZ1I1d1Y1WmRGckdjbU5adk9RMUg1aW1vV0dTOGJWS09ObWVGNTVUQmdpNDlyOXgzZHNtZ1d2Si9FSGVBcGovRnJBUDFCTFgvUmdsNTdrWnFuTm9yeWw1NVA4TDJjSnRKRTF3ZURCRCsvR3NnZ2RyTy9kWUJtaWhLVFd5VEJWYTdVQklJZ1Y1d09kNFJYYlpOMUhnMlZjMGJZNTZLcnBaYlkxQ3NkUWlJd0gzdGtLRlBkcXRobEhWRWZTOFhWaWFZVmwwR28zQy9tVU1ZWkg3Q1RnL3M0TE1wZGxXemgzaVJubUdlcmN2SUZaQmZjZWhnTlZ2OUgvT2N0WVpuS2ZVZEk1bVpzVkd4UVJJTVdyOG9GYm1qUjNwWUo5NG94Uzhhc3NBemw3aE5JNFJKaS91NE45LzVWSklpLy8wNjl6c01zZ0ErazRiM3UzeHZpdmtUak81c3NjQVBzL1NwMG1iNVFMUWhQNDhEL3NISVl3aFFpVGhKYUgrZmxTb1VRdTVMTldtdWNtWXIwOGxSUmlJMDdPN0RaQVkycHBsTFN2QmZrckJ0Z1RnaStyTE45NWxLa3hpN1BZVEdXdWVrMVNkL1hpWGl0NkVKNUZJbVlIMmVLRVZnYXRZdktmai9CZE5KMmlIbWVheWthanRqcHIyMWx0MElxazk4aVpMWmZDcDV3NGhmSEhIQjRRQ3JCekNBZUcyTUVQcW1yQU42N3o0Z014VWJrSStqOWxZcDVTeXZsRm1ESW03OFN5UTYwMzcxV2ZyKzdiNCt3RnFQcTlmdW1YQlo0aTB4WWJjV1RyS2pZcm41Yk81bzNMV2lSb2g3RVc4bXpiTUlDMm0vRHdJd2RDSG9kYno0ZzMxUHNuazZZazZVcUVNcTVKaE9vVUpZdVZoWXRoTm1iUmxJNTlVRGcrcnovSE85blluWnFzVWd1YlNLY1pBcnFNMUo0VDQrRURLdUh0Z25DUW0yaHFIbHNKdSsvbjczalUzM0dFbTg2cERkY2I4dWRIc2ZQQ3ZoRUl1THc2WnlUaGlYOEpFT0NpOFVlYjBHUEwzMU1Ta0o3TDdjT2l6Z3A2bEhnczRuWm9yWmZVSUtqRGQzdHdjcEJOWGpUMTVLRVFiclc4UlFDaFhtVmwwYjVOOEJBb202ZTlYcHoya0RSR2J2YllmQk9kaWh0NVZyNVNtN3ByQVFWVkNaVFdxNi9xT1pGV3I3TEorQ2R3MXFZdDY0VUZjQkhOdGFYM2Q1V09NTk5NcWVzcmdsVlRXN3cyR3NjdTdYYXhvQTRjVE9Ldk1lbUcxY1dUYWcza3I4b05ndHo1Z1hzZmJTbzdDSnJOOHZ3PT1cIn0nLFxuICBiYWNrdXBLZXlEYXRhOlxuICAgICd7XCJpdlwiOlwiSjMyVklKaE85Q2JmNWJxY3Y3NUthZz09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIjpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcIlpRNVZzSGRYTTRRPVwiLFwiY3RcIjpcIlhUZ0FVeThUWkFMS3R0L1B0SkdBV2JIZnVFeEg1QzV5dzN5OEVyeXJjWTN1WmRla3RsM1drTDRLSEhHVHRMOXl6c3NDVE9XVU1UZW1vQUtpcGQrVy8zbXBadVE4OHArbGxvSWdVN1RjZTNSTEJHK2d1NjY1YnN2VFV1VnBmTXJwWkh4RFhYVk16d29VVkhheHdmdnUydGdkdURucGtEL0JYMlJONXFmSTZQNnp6NXI4VXVXYmlEUEtFYXFwY0FIUStSQml0QlFpT3hOQWxSTllleG5VeDFwQ3FjSzA4aHFycWRRdng3ZWxYWGRDSTNUd2VwR1c3UXdSeldhOXB4dk05ZDg1QVdFU3VlSjJCNEpyWjVia3JJelhpeEdKY29VQUpWdkdmRDY5em9MVUg5ZWlubk1hZnBvY0VUQlVEUXlldkMvai8xRndnWlVDZUdjYjRVOU45dFFKdFIwZm96emdwQW85MW5XQTVVZmtEMitoelJ2ejJwMURtYys0Yk5iNnMvN3ZLK0JJT2RwZTRibHpJNDNQeE1Mb0JHa0VRSGxHSFlDck9VbmJWN2RjeGx5UHYwcWZvbThLNGY2Lzc0WUVLaU1QandBM3NDY250V2JvVzhnVVBIRjJ4eC9XQWdtSEk5RE9pWHNDSlpNSHg0R2labVkvcFI5UlZlL09lRkFxUExXSm9UNkthaXpUSkQzU280L0c1b0hLUGdUUWJNSVBpMWxZdHFLZE91aHljSVNzYUVnbmtHMWE4VHE1Q04wdGs1Vnl3U21qNGtTcnFxamNwN2tiQVcrVmlhTmtaTHVTaWJvbUs5QXZ1T0drRVpCcURFdXlGSm5TNG9heVFUTHhuc3R6TzFKSkdobXJDc2tIOUIvUUlJclVWbDFJT3YvSVZ5UGc0TTdUMWcwK1lmSGRBWGR1TFh1OWJqSGtxekdhU1FadTM1YnM1UUt5MGJLRWhBd29qK3pnWUFGL2daQkgwL2lQenJXTTJ4dS9ITWVRS3dJMEtGTE9pQngzY01tTllFK0ZiNnZDanBWWEJUWVlVQ0JPalJuckF1Ui9sYzNBbmpBZWZDTUFEODkrRlErUVc1SXpadjk3bHJTdzBSYitESWN0ZlhkZFVLSzd5eUJlOENjWldVMWRHQVlzYi9oaytINWxUWkpCdXI1TTNhMXZ6UE1pNjhIS25SdDdYWm15QnN2UEE4dDBKVkptbGMwUmVqcURyY3BzNHVLaktkTWFETk92QnptRWlqZFZ2OE41cTBOZyt5SHdxM0JvbHFvWW40bVZKT3JNdVJsWnQ0cE9Ea0k4dU9VMUhhL1ZTdEx6aFQySEZleForWTBKek0wRFM1aHN5Z0h0NER6Ni9SZlpUS0hZdnh6dVJpSE5MYm1OY09CdlZiQk9MMkxtK0RsbzNmRnVWRDNmUzA4dkp1YWZjL3VBZmF0cFJ3UnFnRS9FenZaT3BuWnlIY3I0bFVWRWhSckRZdz09XCJ9JyxcbiAgd2FsbGV0UGFzc3BocmFzZTogJ3ByaXRodmlzaGV0MjUwMycsXG4gIHdhbGxldFJvb3RBZGRyZXNzOiAnMHg0NDc3YmMzZTI0NzJiMmM1NTgwYzAxMDUyNmRmYzU2MTQ4NzE5NTJkJyxcbiAgZ2V0VHhMaXN0UmVxdWVzdDogZ2V0VHhMaXN0UmVxdWVzdE5vbkJpdEdvUmVjb3ZlcnksXG4gIGdldFR4TGlzdFJlc3BvbnNlOiBnZXRUeExpc3RSZXNwb25zZU5vbkJpdEdvUmVjb3ZlcnksXG4gIGdldEJhbGFuY2VSZXF1ZXN0OiBnZXRCYWxhbmNlUmVxdWVzdE5vbkJpdEdvUmVjb3ZlcnksXG4gIGdldEJhbGFuY2VSZXNwb25zZTogZ2V0QmFsYW5jZVJlc3BvbnNlTm9uQml0R29SZWNvdmVyeSxcbn07XG4iXX0=
@@ -4,6 +4,7 @@ require("should");
4
4
  const sdk_test_1 = require("@bitgo-beta/sdk-test");
5
5
  const sdk_api_1 = require("@bitgo-beta/sdk-api");
6
6
  const src_1 = require("../../src");
7
+ const resources_1 = require("../resources");
7
8
  describe('XDC Token:', function () {
8
9
  let bitgo;
9
10
  let xdcTokenCoin;
@@ -25,5 +26,203 @@ describe('XDC Token:', function () {
25
26
  xdcTokenCoin.network.should.equal('Mainnet');
26
27
  xdcTokenCoin.decimalPlaces.should.equal(6);
27
28
  });
29
+ describe('Token Registration and TransactionBuilder', function () {
30
+ const mainnetTokens = ['xdc:usdc', 'xdc:lbt', 'xdc:gama', 'xdc:srx', 'xdc:weth'];
31
+ const testnetTokens = ['txdc:tmt'];
32
+ describe('Mainnet tokens', function () {
33
+ mainnetTokens.forEach((tokenName) => {
34
+ it(`${tokenName} should be registered as XdcToken`, function () {
35
+ const token = bitgo.coin(tokenName);
36
+ token.should.be.instanceOf(src_1.XdcToken);
37
+ });
38
+ it(`${tokenName} should create TransactionBuilder without error`, function () {
39
+ const token = bitgo.coin(tokenName);
40
+ // @ts-expect-error - accessing protected method for testing
41
+ (() => token.getTransactionBuilder()).should.not.throw();
42
+ });
43
+ it(`${tokenName} should use XDC-specific TransactionBuilder`, function () {
44
+ const token = bitgo.coin(tokenName);
45
+ // @ts-expect-error - accessing protected method for testing
46
+ const builder = token.getTransactionBuilder();
47
+ builder.should.have.property('_common');
48
+ // Verify it's using XDC's getCommon, not EVM's
49
+ // XDC's TransactionBuilder should create successfully without SHARED_EVM_SDK feature
50
+ builder.constructor.name.should.equal('TransactionBuilder');
51
+ });
52
+ });
53
+ });
54
+ describe('Testnet tokens', function () {
55
+ testnetTokens.forEach((tokenName) => {
56
+ it(`${tokenName} should be registered as XdcToken`, function () {
57
+ const token = bitgo.coin(tokenName);
58
+ token.should.be.instanceOf(src_1.XdcToken);
59
+ });
60
+ it(`${tokenName} should create TransactionBuilder without error`, function () {
61
+ const token = bitgo.coin(tokenName);
62
+ // @ts-expect-error - accessing protected method for testing
63
+ (() => token.getTransactionBuilder()).should.not.throw();
64
+ });
65
+ it(`${tokenName} should use XDC-specific TransactionBuilder`, function () {
66
+ const token = bitgo.coin(tokenName);
67
+ // @ts-expect-error - accessing protected method for testing
68
+ const builder = token.getTransactionBuilder();
69
+ builder.should.have.property('_common');
70
+ builder.constructor.name.should.equal('TransactionBuilder');
71
+ });
72
+ it(`${tokenName} should have correct base chain`, function () {
73
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
+ const token = bitgo.coin(tokenName);
75
+ token.getBaseChain().should.equal('txdc');
76
+ });
77
+ it(`${tokenName} should not throw "Cannot use common sdk module" error`, function () {
78
+ const token = bitgo.coin(tokenName);
79
+ let errorThrown = false;
80
+ let errorMessage = '';
81
+ try {
82
+ // @ts-expect-error - accessing protected method for testing
83
+ const builder = token.getTransactionBuilder();
84
+ // Try to use the builder to ensure it's fully functional
85
+ // @ts-expect-error - type expects TransactionType enum
86
+ builder.type('Send');
87
+ }
88
+ catch (e) {
89
+ errorThrown = true;
90
+ errorMessage = e.message;
91
+ }
92
+ errorThrown.should.equal(false);
93
+ errorMessage.should.not.match(/Cannot use common sdk module/);
94
+ });
95
+ });
96
+ });
97
+ it('should verify all XDC tokens use XdcToken class, not EthLikeErc20Token', function () {
98
+ const allTokens = [...mainnetTokens, ...testnetTokens];
99
+ allTokens.forEach((tokenName) => {
100
+ const token = bitgo.coin(tokenName);
101
+ token.should.be.instanceOf(src_1.XdcToken);
102
+ token.constructor.name.should.equal('XdcToken');
103
+ token.constructor.name.should.not.equal('EthLikeErc20Token');
104
+ });
105
+ });
106
+ });
107
+ describe('verifyTssTransaction', function () {
108
+ it('should return true for valid token transfer params', async function () {
109
+ const token = bitgo.coin('txdc:tmt');
110
+ const mockWallet = {};
111
+ const result = await token.verifyTssTransaction({
112
+ txParams: {
113
+ recipients: [
114
+ {
115
+ address: resources_1.mockTokenTransferData.recipientAddress,
116
+ amount: resources_1.mockTokenTransferData.tokenAmount,
117
+ },
118
+ ],
119
+ },
120
+ txPrebuild: resources_1.mockTokenTransferData.txPrebuild,
121
+ wallet: mockWallet,
122
+ });
123
+ result.should.equal(true);
124
+ });
125
+ it('should return true for transferToken type without recipients', async function () {
126
+ const token = bitgo.coin('txdc:tmt');
127
+ const mockWallet = {};
128
+ const result = await token.verifyTssTransaction({
129
+ txParams: {
130
+ type: 'transferToken',
131
+ },
132
+ txPrebuild: resources_1.mockTokenTransferData.txPrebuild,
133
+ wallet: mockWallet,
134
+ });
135
+ result.should.equal(true);
136
+ });
137
+ it('should throw error when txParams.recipients is missing and no valid type', async function () {
138
+ const token = bitgo.coin('txdc:tmt');
139
+ const mockWallet = {};
140
+ await token
141
+ .verifyTssTransaction({
142
+ txParams: {},
143
+ txPrebuild: resources_1.mockTokenTransferData.txPrebuild,
144
+ wallet: mockWallet,
145
+ })
146
+ .should.be.rejectedWith('missing txParams');
147
+ });
148
+ it('should throw error when wallet is missing', async function () {
149
+ const token = bitgo.coin('txdc:tmt');
150
+ await token
151
+ .verifyTssTransaction({
152
+ txParams: {
153
+ recipients: [
154
+ {
155
+ address: resources_1.mockTokenTransferData.recipientAddress,
156
+ amount: resources_1.mockTokenTransferData.tokenAmount,
157
+ },
158
+ ],
159
+ },
160
+ txPrebuild: resources_1.mockTokenTransferData.txPrebuild,
161
+ wallet: undefined,
162
+ })
163
+ .should.be.rejectedWith('missing params');
164
+ });
165
+ it('should throw error when txPrebuild is missing', async function () {
166
+ const token = bitgo.coin('txdc:tmt');
167
+ const mockWallet = {};
168
+ await token
169
+ .verifyTssTransaction({
170
+ txParams: {
171
+ recipients: [
172
+ {
173
+ address: resources_1.mockTokenTransferData.recipientAddress,
174
+ amount: resources_1.mockTokenTransferData.tokenAmount,
175
+ },
176
+ ],
177
+ },
178
+ txPrebuild: undefined,
179
+ wallet: mockWallet,
180
+ })
181
+ .should.be.rejectedWith('missing params');
182
+ });
183
+ it('should throw error for batch + hop transaction', async function () {
184
+ const token = bitgo.coin('txdc:tmt');
185
+ const mockWallet = {};
186
+ await token
187
+ .verifyTssTransaction({
188
+ txParams: {
189
+ hop: true,
190
+ recipients: [
191
+ { address: '0x1111111111111111111111111111111111111111', amount: '1000' },
192
+ { address: '0x2222222222222222222222222222222222222222', amount: '2000' },
193
+ ],
194
+ },
195
+ txPrebuild: resources_1.mockTokenTransferData.txPrebuild,
196
+ wallet: mockWallet,
197
+ })
198
+ .should.be.rejectedWith('tx cannot be both a batch and hop transaction');
199
+ });
200
+ it('should not throw EIP155 error when verifying token transaction', async function () {
201
+ // This test ensures that verifyTssTransaction does NOT parse the txHex
202
+ // which would fail with "Incompatible EIP155-based V" error
203
+ const token = bitgo.coin('txdc:tmt');
204
+ const mockWallet = {};
205
+ // Use the signableHex (with v=51) which would fail if parsed
206
+ const txPrebuildWithSignableHex = {
207
+ ...resources_1.mockTokenTransferData.txPrebuild,
208
+ txHex: resources_1.mockTokenTransferData.signableHex,
209
+ };
210
+ // This should NOT throw EIP155 error because verifyTssTransaction
211
+ // does not parse the transaction
212
+ const result = await token.verifyTssTransaction({
213
+ txParams: {
214
+ recipients: [
215
+ {
216
+ address: resources_1.mockTokenTransferData.recipientAddress,
217
+ amount: resources_1.mockTokenTransferData.tokenAmount,
218
+ },
219
+ ],
220
+ },
221
+ txPrebuild: txPrebuildWithSignableHex,
222
+ wallet: mockWallet,
223
+ });
224
+ result.should.equal(true);
225
+ });
226
+ });
28
227
  });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGRjVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQveGRjVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQkFBZ0I7QUFDaEIsbURBQStEO0FBQy9ELGlEQUErQztBQUUvQyxtQ0FBcUM7QUFFckMsUUFBUSxDQUFDLFlBQVksRUFBRTtJQUNyQixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxZQUFZLENBQUM7SUFDakIsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDO0lBRTdCLE1BQU0sQ0FBQztRQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBQSxjQUFRLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEIsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMseUJBQXlCLEVBQUU7UUFDNUIsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0MsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuXG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdYREMgVG9rZW46JywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IHhkY1Rva2VuQ29pbjtcbiAgY29uc3QgdG9rZW5OYW1lID0gJ3hkYzp1c2RjJztcblxuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Byb2QnIH0pO1xuICAgIHJlZ2lzdGVyKGJpdGdvKTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICB4ZGNUb2tlbkNvaW4gPSBiaXRnby5jb2luKHRva2VuTmFtZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGNvbnN0YW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICB4ZGNUb2tlbkNvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwoJ3hkYzp1c2RjJyk7XG4gICAgeGRjVG9rZW5Db2luLmdldEJhc2VDaGFpbigpLnNob3VsZC5lcXVhbCgneGRjJyk7XG4gICAgeGRjVG9rZW5Db2luLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdYREMgVG9rZW4nKTtcbiAgICB4ZGNUb2tlbkNvaW4uZ2V0QmFzZUZhY3RvcigpLnNob3VsZC5lcXVhbCgxZTYpO1xuICAgIHhkY1Rva2VuQ29pbi50eXBlLnNob3VsZC5lcXVhbCh0b2tlbk5hbWUpO1xuICAgIHhkY1Rva2VuQ29pbi5uYW1lLnNob3VsZC5lcXVhbCgnVVNEIENvaW4nKTtcbiAgICB4ZGNUb2tlbkNvaW4uY29pbi5zaG91bGQuZXF1YWwoJ3hkYycpO1xuICAgIHhkY1Rva2VuQ29pbi5uZXR3b3JrLnNob3VsZC5lcXVhbCgnTWFpbm5ldCcpO1xuICAgIHhkY1Rva2VuQ29pbi5kZWNpbWFsUGxhY2VzLnNob3VsZC5lcXVhbCg2KTtcbiAgfSk7XG59KTtcbiJdfQ==
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGRjVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQveGRjVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQkFBZ0I7QUFDaEIsbURBQStEO0FBQy9ELGlEQUErQztBQUcvQyxtQ0FBK0M7QUFDL0MsNENBQXFEO0FBRXJELFFBQVEsQ0FBQyxZQUFZLEVBQUU7SUFDckIsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLElBQUksWUFBWSxDQUFDO0lBQ2pCLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztJQUU3QixNQUFNLENBQUM7UUFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUEsY0FBUSxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlCQUF5QixFQUFFO1FBQzVCLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxZQUFZLENBQUMsSUFBSSxDQUFD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QUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQgeyBJV2FsbGV0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyByZWdpc3RlciwgWGRjVG9rZW4gfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IHsgbW9ja1Rva2VuVHJhbnNmZXJEYXRhIH0gZnJvbSAnLi4vcmVzb3VyY2VzJztcblxuZGVzY3JpYmUoJ1hEQyBUb2tlbjonLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuICBsZXQgeGRjVG9rZW5Db2luO1xuICBjb25zdCB0b2tlbk5hbWUgPSAneGRjOnVzZGMnO1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAncHJvZCcgfSk7XG4gICAgcmVnaXN0ZXIoYml0Z28pO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIHhkY1Rva2VuQ29pbiA9IGJpdGdvLmNvaW4odG9rZW5OYW1lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gY29uc3RhbnRzJywgZnVuY3Rpb24gKCkge1xuICAgIHhkY1Rva2VuQ29pbi5nZXRDaGFpbigpLnNob3VsZC5lcXVhbCgneGRjOnVzZGMnKTtcbiAgICB4ZGNUb2tlbkNvaW4uZ2V0QmFzZUNoYWluKCkuc2hvdWxkLmVxdWFsKCd4ZGMnKTtcbiAgICB4ZGNUb2tlbkNvaW4uZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ1hEQyBUb2tlbicpO1xuICAgIHhkY1Rva2VuQ29pbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlNik7XG4gICAgeGRjVG9rZW5Db2luLnR5cGUuc2hvdWxkLmVxdWFsKHRva2VuTmFtZSk7XG4gICAgeGRjVG9rZW5Db2luLm5hbWUuc2hvdWxkLmVxdWFsKCdVU0QgQ29pbicpO1xuICAgIHhkY1Rva2VuQ29pbi5jb2luLnNob3VsZC5lcXVhbCgneGRjJyk7XG4gICAgeGRjVG9rZW5Db2luLm5ldHdvcmsuc2hvdWxkLmVxdWFsKCdNYWlubmV0Jyk7XG4gICAgeGRjVG9rZW5Db2luLmRlY2ltYWxQbGFjZXMuc2hvdWxkLmVxdWFsKDYpO1xuICB9KTtcblxuICBkZXNjcmliZSgnVG9rZW4gUmVnaXN0cmF0aW9uIGFuZCBUcmFuc2FjdGlvbkJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgbWFpbm5ldFRva2VucyA9IFsneGRjOnVzZGMnLCAneGRjOmxidCcsICd4ZGM6Z2FtYScsICd4ZGM6c3J4JywgJ3hkYzp3ZXRoJ107XG4gICAgY29uc3QgdGVzdG5ldFRva2VucyA9IFsndHhkYzp0bXQnXTtcblxuICAgIGRlc2NyaWJlKCdNYWlubmV0IHRva2VucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1haW5uZXRUb2tlbnMuZm9yRWFjaCgodG9rZW5OYW1lKSA9PiB7XG4gICAgICAgIGl0KGAke3Rva2VuTmFtZX0gc2hvdWxkIGJlIHJlZ2lzdGVyZWQgYXMgWGRjVG9rZW5gLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgdG9rZW4gPSBiaXRnby5jb2luKHRva2VuTmFtZSk7XG4gICAgICAgICAgdG9rZW4uc2hvdWxkLmJlLmluc3RhbmNlT2YoWGRjVG9rZW4pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdChgJHt0b2tlbk5hbWV9IHNob3VsZCBjcmVhdGUgVHJhbnNhY3Rpb25CdWlsZGVyIHdpdGhvdXQgZXJyb3JgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgdG9rZW4gPSBiaXRnby5jb2luKHRva2VuTmFtZSkgYXMgWGRjVG9rZW47XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIGFjY2Vzc2luZyBwcm90ZWN0ZWQgbWV0aG9kIGZvciB0ZXN0aW5nXG4gICAgICAgICAgKCgpID0+IHRva2VuLmdldFRyYW5zYWN0aW9uQnVpbGRlcigpKS5zaG91bGQubm90LnRocm93KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KGAke3Rva2VuTmFtZX0gc2hvdWxkIHVzZSBYREMtc3BlY2lmaWMgVHJhbnNhY3Rpb25CdWlsZGVyYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHRva2VuID0gYml0Z28uY29pbih0b2tlbk5hbWUpIGFzIFhkY1Rva2VuO1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBhY2Nlc3NpbmcgcHJvdGVjdGVkIG1ldGhvZCBmb3IgdGVzdGluZ1xuICAgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSB0b2tlbi5nZXRUcmFuc2FjdGlvbkJ1aWxkZXIoKTtcbiAgICAgICAgICBidWlsZGVyLnNob3VsZC5oYXZlLnByb3BlcnR5KCdfY29tbW9uJyk7XG4gICAgICAgICAgLy8gVmVyaWZ5IGl0J3MgdXNpbmcgWERDJ3MgZ2V0Q29tbW9uLCBub3QgRVZNJ3NcbiAgICAgICAgICAvLyBYREMncyBUcmFuc2FjdGlvbkJ1aWxkZXIgc2hvdWxkIGNyZWF0ZSBzdWNjZXNzZnVsbHkgd2l0aG91dCBTSEFSRURfRVZNX1NESyBmZWF0dXJlXG4gICAgICAgICAgYnVpbGRlci5jb25zdHJ1Y3Rvci5uYW1lLnNob3VsZC5lcXVhbCgnVHJhbnNhY3Rpb25CdWlsZGVyJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnVGVzdG5ldCB0b2tlbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB0ZXN0bmV0VG9rZW5zLmZvckVhY2goKHRva2VuTmFtZSkgPT4ge1xuICAgICAgICBpdChgJHt0b2tlbk5hbWV9IHNob3VsZCBiZSByZWdpc3RlcmVkIGFzIFhkY1Rva2VuYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHRva2VuID0gYml0Z28uY29pbih0b2tlbk5hbWUpO1xuICAgICAgICAgIHRva2VuLnNob3VsZC5iZS5pbnN0YW5jZU9mKFhkY1Rva2VuKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoYCR7dG9rZW5OYW1lfSBzaG91bGQgY3JlYXRlIFRyYW5zYWN0aW9uQnVpbGRlciB3aXRob3V0IGVycm9yYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHRva2VuID0gYml0Z28uY29pbih0b2tlbk5hbWUpIGFzIFhkY1Rva2VuO1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBhY2Nlc3NpbmcgcHJvdGVjdGVkIG1ldGhvZCBmb3IgdGVzdGluZ1xuICAgICAgICAgICgoKSA9PiB0b2tlbi5nZXRUcmFuc2FjdGlvbkJ1aWxkZXIoKSkuc2hvdWxkLm5vdC50aHJvdygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdChgJHt0b2tlbk5hbWV9IHNob3VsZCB1c2UgWERDLXNwZWNpZmljIFRyYW5zYWN0aW9uQnVpbGRlcmAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IGJpdGdvLmNvaW4odG9rZW5OYW1lKSBhcyBYZGNUb2tlbjtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gYWNjZXNzaW5nIHByb3RlY3RlZCBtZXRob2QgZm9yIHRlc3RpbmdcbiAgICAgICAgICBjb25zdCBidWlsZGVyID0gdG9rZW4uZ2V0VHJhbnNhY3Rpb25CdWlsZGVyKCk7XG4gICAgICAgICAgYnVpbGRlci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnX2NvbW1vbicpO1xuICAgICAgICAgIGJ1aWxkZXIuY29uc3RydWN0b3IubmFtZS5zaG91bGQuZXF1YWwoJ1RyYW5zYWN0aW9uQnVpbGRlcicpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdChgJHt0b2tlbk5hbWV9IHNob3VsZCBoYXZlIGNvcnJlY3QgYmFzZSBjaGFpbmAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgIGNvbnN0IHRva2VuOiBhbnkgPSBiaXRnby5jb2luKHRva2VuTmFtZSk7XG4gICAgICAgICAgdG9rZW4uZ2V0QmFzZUNoYWluKCkuc2hvdWxkLmVxdWFsKCd0eGRjJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KGAke3Rva2VuTmFtZX0gc2hvdWxkIG5vdCB0aHJvdyBcIkNhbm5vdCB1c2UgY29tbW9uIHNkayBtb2R1bGVcIiBlcnJvcmAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IGJpdGdvLmNvaW4odG9rZW5OYW1lKSBhcyBYZGNUb2tlbjtcbiAgICAgICAgICBsZXQgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAgICAgICBsZXQgZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIGFjY2Vzc2luZyBwcm90ZWN0ZWQgbWV0aG9kIGZvciB0ZXN0aW5nXG4gICAgICAgICAgICBjb25zdCBidWlsZGVyID0gdG9rZW4uZ2V0VHJhbnNhY3Rpb25CdWlsZGVyKCk7XG4gICAgICAgICAgICAvLyBUcnkgdG8gdXNlIHRoZSBidWlsZGVyIHRvIGVuc3VyZSBpdCdzIGZ1bGx5IGZ1bmN0aW9uYWxcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSB0eXBlIGV4cGVjdHMgVHJhbnNhY3Rpb25UeXBlIGVudW1cbiAgICAgICAgICAgIGJ1aWxkZXIudHlwZSgnU2VuZCcpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTtcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IChlIGFzIEVycm9yKS5tZXNzYWdlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVycm9yVGhyb3duLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgICAgICAgZXJyb3JNZXNzYWdlLnNob3VsZC5ub3QubWF0Y2goL0Nhbm5vdCB1c2UgY29tbW9uIHNkayBtb2R1bGUvKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmVyaWZ5IGFsbCBYREMgdG9rZW5zIHVzZSBYZGNUb2tlbiBjbGFzcywgbm90IEV0aExpa2VFcmMyMFRva2VuJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWxsVG9rZW5zID0gWy4uLm1haW5uZXRUb2tlbnMsIC4uLnRlc3RuZXRUb2tlbnNdO1xuXG4gICAgICBhbGxUb2tlbnMuZm9yRWFjaCgodG9rZW5OYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gYml0Z28uY29pbih0b2tlbk5hbWUpO1xuICAgICAgICB0b2tlbi5zaG91bGQuYmUuaW5zdGFuY2VPZihYZGNUb2tlbik7XG4gICAgICAgIHRva2VuLmNvbnN0cnVjdG9yLm5hbWUuc2hvdWxkLmVxdWFsKCdYZGNUb2tlbicpO1xuICAgICAgICB0b2tlbi5jb25zdHJ1Y3Rvci5uYW1lLnNob3VsZC5ub3QuZXF1YWwoJ0V0aExpa2VFcmMyMFRva2VuJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3ZlcmlmeVRzc1RyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIHZhbGlkIHRva2VuIHRyYW5zZmVyIHBhcmFtcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gYml0Z28uY29pbigndHhkYzp0bXQnKSBhcyBYZGNUb2tlbjtcbiAgICAgIGNvbnN0IG1vY2tXYWxsZXQgPSB7fSBhcyB1bmtub3duIGFzIElXYWxsZXQ7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRva2VuLnZlcmlmeVRzc1RyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6IG1vY2tUb2tlblRyYW5zZmVyRGF0YS5yZWNpcGllbnRBZGRyZXNzLFxuICAgICAgICAgICAgICBhbW91bnQ6IG1vY2tUb2tlblRyYW5zZmVyRGF0YS50b2tlbkFtb3VudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdHhQcmVidWlsZDogbW9ja1Rva2VuVHJhbnNmZXJEYXRhLnR4UHJlYnVpbGQgYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzPFxuICAgICAgICAgIHR5cGVvZiB0b2tlbi52ZXJpZnlUc3NUcmFuc2FjdGlvblxuICAgICAgICA+WzBdWyd0eFByZWJ1aWxkJ10sXG4gICAgICAgIHdhbGxldDogbW9ja1dhbGxldCxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3IgdHJhbnNmZXJUb2tlbiB0eXBlIHdpdGhvdXQgcmVjaXBpZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gYml0Z28uY29pbigndHhkYzp0bXQnKSBhcyBYZGNUb2tlbjtcbiAgICAgIGNvbnN0IG1vY2tXYWxsZXQgPSB7fSBhcyB1bmtub3duIGFzIElXYWxsZXQ7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRva2VuLnZlcmlmeVRzc1RyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICB0eXBlOiAndHJhbnNmZXJUb2tlbicsXG4gICAgICAgIH0sXG4gICAgICAgIHR4UHJlYnVpbGQ6IG1vY2tUb2tlblRyYW5zZmVyRGF0YS50eFByZWJ1aWxkIGFzIHVua25vd24gYXMgUGFyYW1ldGVyczxcbiAgICAgICAgICB0eXBlb2YgdG9rZW4udmVyaWZ5VHNzVHJhbnNhY3Rpb25cbiAgICAgICAgPlswXVsndHhQcmVidWlsZCddLFxuICAgICAgICB3YWxsZXQ6IG1vY2tXYWxsZXQsXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiB0eFBhcmFtcy5yZWNpcGllbnRzIGlzIG1pc3NpbmcgYW5kIG5vIHZhbGlkIHR5cGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGJpdGdvLmNvaW4oJ3R4ZGM6dG10JykgYXMgWGRjVG9rZW47XG4gICAgICBjb25zdCBtb2NrV2FsbGV0ID0ge30gYXMgdW5rbm93biBhcyBJV2FsbGV0O1xuXG4gICAgICBhd2FpdCB0b2tlblxuICAgICAgICAudmVyaWZ5VHNzVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB7fSxcbiAgICAgICAgICB0eFByZWJ1aWxkOiBtb2NrVG9rZW5UcmFuc2ZlckRhdGEudHhQcmVidWlsZCBhcyB1bmtub3duIGFzIFBhcmFtZXRlcnM8XG4gICAgICAgICAgICB0eXBlb2YgdG9rZW4udmVyaWZ5VHNzVHJhbnNhY3Rpb25cbiAgICAgICAgICA+WzBdWyd0eFByZWJ1aWxkJ10sXG4gICAgICAgICAgd2FsbGV0OiBtb2NrV2FsbGV0LFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyB0eFBhcmFtcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHdhbGxldCBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdG9rZW4gPSBiaXRnby5jb2luKCd0eGRjOnRtdCcpIGFzIFhkY1Rva2VuO1xuXG4gICAgICBhd2FpdCB0b2tlblxuICAgICAgICAudmVyaWZ5VHNzVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBtb2NrVG9rZW5UcmFuc2ZlckRhdGEucmVjaXBpZW50QWRkcmVzcyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IG1vY2tUb2tlblRyYW5zZmVyRGF0YS50b2tlbkFtb3VudCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0eFByZWJ1aWxkOiBtb2NrVG9rZW5UcmFuc2ZlckRhdGEudHhQcmVidWlsZCBhcyB1bmtub3duIGFzIFBhcmFtZXRlcnM8XG4gICAgICAgICAgICB0eXBlb2YgdG9rZW4udmVyaWZ5VHNzVHJhbnNhY3Rpb25cbiAgICAgICAgICA+WzBdWyd0eFByZWJ1aWxkJ10sXG4gICAgICAgICAgd2FsbGV0OiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBJV2FsbGV0LFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnbWlzc2luZyBwYXJhbXMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiB0eFByZWJ1aWxkIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGJpdGdvLmNvaW4oJ3R4ZGM6dG10JykgYXMgWGRjVG9rZW47XG4gICAgICBjb25zdCBtb2NrV2FsbGV0ID0ge30gYXMgdW5rbm93biBhcyBJV2FsbGV0O1xuXG4gICAgICBhd2FpdCB0b2tlblxuICAgICAgICAudmVyaWZ5VHNzVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBtb2NrVG9rZW5UcmFuc2ZlckRhdGEucmVjaXBpZW50QWRkcmVzcyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IG1vY2tUb2tlblRyYW5zZmVyRGF0YS50b2tlbkFtb3VudCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0eFByZWJ1aWxkOiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzPHR5cGVvZiB0b2tlbi52ZXJpZnlUc3NUcmFuc2FjdGlvbj5bMF1bJ3R4UHJlYnVpbGQnXSxcbiAgICAgICAgICB3YWxsZXQ6IG1vY2tXYWxsZXQsXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdtaXNzaW5nIHBhcmFtcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgYmF0Y2ggKyBob3AgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGJpdGdvLmNvaW4oJ3R4ZGM6dG10JykgYXMgWGRjVG9rZW47XG4gICAgICBjb25zdCBtb2NrV2FsbGV0ID0ge30gYXMgdW5rbm93biBhcyBJV2FsbGV0O1xuXG4gICAgICBhd2FpdCB0b2tlblxuICAgICAgICAudmVyaWZ5VHNzVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgICBob3A6IHRydWUsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHsgYWRkcmVzczogJzB4MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScsIGFtb3VudDogJzEwMDAnIH0sXG4gICAgICAgICAgICAgIHsgYWRkcmVzczogJzB4MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMicsIGFtb3VudDogJzIwMDAnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHhQcmVidWlsZDogbW9ja1Rva2VuVHJhbnNmZXJEYXRhLnR4UHJlYnVpbGQgYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzPFxuICAgICAgICAgICAgdHlwZW9mIHRva2VuLnZlcmlmeVRzc1RyYW5zYWN0aW9uXG4gICAgICAgICAgPlswXVsndHhQcmVidWlsZCddLFxuICAgICAgICAgIHdhbGxldDogbW9ja1dhbGxldCxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ3R4IGNhbm5vdCBiZSBib3RoIGEgYmF0Y2ggYW5kIGhvcCB0cmFuc2FjdGlvbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgRUlQMTU1IGVycm9yIHdoZW4gdmVyaWZ5aW5nIHRva2VuIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB2ZXJpZnlUc3NUcmFuc2FjdGlvbiBkb2VzIE5PVCBwYXJzZSB0aGUgdHhIZXhcbiAgICAgIC8vIHdoaWNoIHdvdWxkIGZhaWwgd2l0aCBcIkluY29tcGF0aWJsZSBFSVAxNTUtYmFzZWQgVlwiIGVycm9yXG4gICAgICBjb25zdCB0b2tlbiA9IGJpdGdvLmNvaW4oJ3R4ZGM6dG10JykgYXMgWGRjVG9rZW47XG4gICAgICBjb25zdCBtb2NrV2FsbGV0ID0ge30gYXMgdW5rbm93biBhcyBJV2FsbGV0O1xuXG4gICAgICAvLyBVc2UgdGhlIHNpZ25hYmxlSGV4ICh3aXRoIHY9NTEpIHdoaWNoIHdvdWxkIGZhaWwgaWYgcGFyc2VkXG4gICAgICBjb25zdCB0eFByZWJ1aWxkV2l0aFNpZ25hYmxlSGV4ID0ge1xuICAgICAgICAuLi5tb2NrVG9rZW5UcmFuc2ZlckRhdGEudHhQcmVidWlsZCxcbiAgICAgICAgdHhIZXg6IG1vY2tUb2tlblRyYW5zZmVyRGF0YS5zaWduYWJsZUhleCxcbiAgICAgIH07XG5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIE5PVCB0aHJvdyBFSVAxNTUgZXJyb3IgYmVjYXVzZSB2ZXJpZnlUc3NUcmFuc2FjdGlvblxuICAgICAgLy8gZG9lcyBub3QgcGFyc2UgdGhlIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0b2tlbi52ZXJpZnlUc3NUcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhZGRyZXNzOiBtb2NrVG9rZW5UcmFuc2ZlckRhdGEucmVjaXBpZW50QWRkcmVzcyxcbiAgICAgICAgICAgICAgYW1vdW50OiBtb2NrVG9rZW5UcmFuc2ZlckRhdGEudG9rZW5BbW91bnQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGRXaXRoU2lnbmFibGVIZXggYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzPFxuICAgICAgICAgIHR5cGVvZiB0b2tlbi52ZXJpZnlUc3NUcmFuc2FjdGlvblxuICAgICAgICA+WzBdWyd0eFByZWJ1aWxkJ10sXG4gICAgICAgIHdhbGxldDogbW9ja1dhbGxldCxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19