@bitgo/sdk-core 26.3.0 → 26.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/src/account-lib/baseCoin/blsKeyPair.js +26 -22
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +20 -16
- package/dist/src/account-lib/baseCoin/enum.d.ts +3 -1
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +5 -1
- package/dist/src/account-lib/baseCoin/index.js +6 -2
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +6 -2
- package/dist/src/account-lib/index.js +6 -2
- package/dist/src/account-lib/mpc/index.js +6 -2
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +1 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +346 -342
- package/dist/src/account-lib/mpc/tss/ecdsa/index.js +6 -2
- package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
- package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +60 -60
- package/dist/src/account-lib/mpc/tss/eddsa/index.js +6 -2
- package/dist/src/account-lib/mpc/tss/index.js +6 -2
- package/dist/src/account-lib/staking/index.js +6 -2
- package/dist/src/account-lib/util/crypto.d.ts +8 -1
- package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
- package/dist/src/account-lib/util/crypto.js +28 -8
- package/dist/src/account-lib/util/ed25519KeyDeriver.js +3 -3
- package/dist/src/api/index.js +6 -2
- package/dist/src/bitgo/address-book/index.js +6 -2
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +1 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +7 -3
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +1 -0
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/index.js +6 -2
- package/dist/src/bitgo/bip32util.js +6 -2
- package/dist/src/bitgo/bitcoin.js +6 -2
- package/dist/src/bitgo/config.js +6 -2
- package/dist/src/bitgo/ecdh.js +6 -2
- package/dist/src/bitgo/enterprise/enterprise.js +10 -6
- package/dist/src/bitgo/enterprise/enterprises.js +6 -2
- package/dist/src/bitgo/enterprise/index.js +6 -2
- package/dist/src/bitgo/environments.js +7 -7
- package/dist/src/bitgo/index.js +6 -2
- package/dist/src/bitgo/inscriptionBuilder/index.js +6 -2
- package/dist/src/bitgo/internal/index.js +6 -2
- package/dist/src/bitgo/internal/internal.js +4 -4
- package/dist/src/bitgo/internal/keycard.js +5 -5
- package/dist/src/bitgo/keychain/index.js +6 -2
- package/dist/src/bitgo/keychain/keychains.js +17 -13
- package/dist/src/bitgo/keychain/ovcJsonCodec.js +6 -2
- package/dist/src/bitgo/legacyBitcoin.js +7 -3
- package/dist/src/bitgo/lightning/iLightning.js +6 -2
- package/dist/src/bitgo/lightning/index.js +6 -2
- package/dist/src/bitgo/lightning/lightning.js +12 -12
- package/dist/src/bitgo/lightning/lightningUtils.js +8 -4
- package/dist/src/bitgo/market/index.js +6 -2
- package/dist/src/bitgo/market/markets.js +6 -2
- package/dist/src/bitgo/pendingApproval/index.js +6 -2
- package/dist/src/bitgo/pendingApproval/pendingApproval.js +6 -2
- package/dist/src/bitgo/pendingApproval/pendingApprovals.js +6 -2
- package/dist/src/bitgo/recovery/index.js +6 -2
- package/dist/src/bitgo/staking/iStakingWallet.d.ts +8 -0
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
- package/dist/src/bitgo/staking/index.js +6 -2
- package/dist/src/bitgo/trading/index.js +6 -2
- package/dist/src/bitgo/trading/network/index.js +6 -2
- package/dist/src/bitgo/trading/network/network.js +2 -2
- package/dist/src/bitgo/tss/common.js +6 -6
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +1 -0
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +18 -14
- package/dist/src/bitgo/tss/ecdsa/index.js +6 -2
- package/dist/src/bitgo/tss/eddsa/eddsa.js +9 -9
- package/dist/src/bitgo/tss/eddsa/index.js +6 -2
- package/dist/src/bitgo/tss/index.js +6 -2
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +7 -3
- package/dist/src/bitgo/utils/blsUtils.js +5 -5
- package/dist/src/bitgo/utils/codecProps.js +6 -2
- package/dist/src/bitgo/utils/decode.js +10 -6
- package/dist/src/bitgo/utils/index.js +6 -2
- package/dist/src/bitgo/utils/mpcUtils.js +8 -8
- package/dist/src/bitgo/utils/opengpgUtils.js +26 -22
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +9 -5
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +43 -39
- package/dist/src/bitgo/utils/tss/ecdsa/index.js +6 -2
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +45 -41
- package/dist/src/bitgo/utils/tss/eddsa/index.js +6 -2
- package/dist/src/bitgo/utils/tss/index.js +6 -2
- package/dist/src/bitgo/utils/util.js +7 -3
- package/dist/src/bitgo/wallet/BuildParams.js +7 -3
- package/dist/src/bitgo/wallet/index.js +6 -2
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +35 -35
- package/dist/src/bitgo/wallet/wallets.js +17 -13
- package/dist/src/bitgo/webhook/index.js +6 -2
- package/dist/src/bitgo/webhook/webhooks.js +6 -2
- package/dist/src/coins/index.js +6 -2
- package/dist/src/coins/ofc.js +2 -2
- package/dist/src/coins/ofcToken.js +2 -2
- package/dist/src/common.js +6 -2
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -3
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +22 -18
- package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +7 -7
- package/dist/test/unit/bitgo/utils/notEmpty.js +3 -3
- package/dist/test/unit/bitgo/utils/postWithCodec.js +7 -3
- package/dist/test/unit/bitgo/wallet/BuildParams.js +6 -2
- package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +6 -2
- package/dist/test/unit/units.js +63 -63
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/src/openssl/index.d.ts +0 -5
- package/dist/src/openssl/index.d.ts.map +0 -1
- package/dist/src/openssl/index.js +0 -9
- package/dist/test/unit/openssl.d.ts +0 -2
- package/dist/test/unit/openssl.d.ts.map +0 -1
- package/dist/test/unit/openssl.js +0 -39
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo/sdk-core",
|
|
3
|
-
"version": "26.
|
|
3
|
+
"version": "26.5.0",
|
|
4
4
|
"description": "core library functions for BitGoJS",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@bitgo/bls-dkg": "^1.3.1",
|
|
41
41
|
"@bitgo/public-types": "2.1.0",
|
|
42
|
-
"@bitgo/sdk-lib-mpc": "^9.
|
|
43
|
-
"@bitgo/statics": "^48.
|
|
42
|
+
"@bitgo/sdk-lib-mpc": "^9.2.0",
|
|
43
|
+
"@bitgo/statics": "^48.3.0",
|
|
44
44
|
"@bitgo/utxo-lib": "^9.34.0",
|
|
45
45
|
"@noble/secp256k1": "1.6.3",
|
|
46
46
|
"@stablelib/hex": "^1.0.0",
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
"@types/lodash": "^4.14.151",
|
|
77
77
|
"nyc": "^15.0.0"
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "836681179c597c51a4f60f4f8a5a684eebd49f98"
|
|
80
80
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openssl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OpenSSL = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* @deprecated Use OpenSSL from sdk-lib-mpc instead
|
|
6
|
-
*/
|
|
7
|
-
var sdk_lib_mpc_1 = require("@bitgo/sdk-lib-mpc");
|
|
8
|
-
Object.defineProperty(exports, "OpenSSL", { enumerable: true, get: function () { return sdk_lib_mpc_1.OpenSSL; } });
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb3BlbnNzbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILGtEQUE2QztBQUFwQyxzR0FBQSxPQUFPLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXByZWNhdGVkIFVzZSBPcGVuU1NMIGZyb20gc2RrLWxpYi1tcGMgaW5zdGVhZFxuICovXG5leHBvcnQgeyBPcGVuU1NMIH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openssl.d.ts","sourceRoot":"","sources":["../../../test/unit/openssl.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
require("should");
|
|
4
|
-
const sdk_lib_mpc_1 = require("@bitgo/sdk-lib-mpc");
|
|
5
|
-
const bigint_crypto_utils_1 = require("bigint-crypto-utils");
|
|
6
|
-
const node_utils_1 = require("../node.utils");
|
|
7
|
-
describe('openssl', function () {
|
|
8
|
-
it('should throw an error if module is not initialized', async function () {
|
|
9
|
-
const openssl = new sdk_lib_mpc_1.OpenSSL();
|
|
10
|
-
await openssl
|
|
11
|
-
.generateSafePrime(sdk_lib_mpc_1.minModulusBitLength)
|
|
12
|
-
.should.be.rejectedWith('The OpenSSl class is not initialized! Please call OpenSSL.init().');
|
|
13
|
-
});
|
|
14
|
-
// node 14 requires --experimental-wasm-bigint node flag
|
|
15
|
-
if (node_utils_1.NODE_MAJOR_VERSION > 14) {
|
|
16
|
-
it('should generate a safe prime number of a certain bitLength', async function () {
|
|
17
|
-
const openssl = new sdk_lib_mpc_1.OpenSSL();
|
|
18
|
-
await openssl.init();
|
|
19
|
-
const safePrime = await openssl.generateSafePrime(512);
|
|
20
|
-
bigint_crypto_utils_1.bitLength(safePrime).should.equal(512);
|
|
21
|
-
});
|
|
22
|
-
it('should generate a safe prime number', async function () {
|
|
23
|
-
const openssl = new sdk_lib_mpc_1.OpenSSL();
|
|
24
|
-
await openssl.init();
|
|
25
|
-
const safePrime = await openssl.generateSafePrime(512);
|
|
26
|
-
let isPrime = await bigint_crypto_utils_1.isProbablyPrime(safePrime);
|
|
27
|
-
isPrime.should.be.true();
|
|
28
|
-
isPrime = await bigint_crypto_utils_1.isProbablyPrime((safePrime - BigInt(1)) / BigInt(2));
|
|
29
|
-
isPrime.should.be.true();
|
|
30
|
-
});
|
|
31
|
-
it('should be able to generate multiple safe primes with the same openssl instance', async function () {
|
|
32
|
-
const openssl = new sdk_lib_mpc_1.OpenSSL();
|
|
33
|
-
await openssl.init();
|
|
34
|
-
const safePrimes = await Promise.all([openssl.generateSafePrime(512), openssl.generateSafePrime(512)]);
|
|
35
|
-
safePrimes.length.should.equal(2);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnNzbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9vcGVuc3NsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWdCO0FBQ2hCLG9EQUFrRTtBQUNsRSw2REFBaUU7QUFDakUsOENBQW1EO0FBRW5ELFFBQVEsQ0FBQyxTQUFTLEVBQUU7SUFDbEIsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEtBQUs7UUFDNUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBTyxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPO2FBQ1YsaUJBQWlCLENBQUMsaUNBQW1CLENBQUM7YUFDdEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsbUVBQW1FLENBQUMsQ0FBQztJQUNqRyxDQUFDLENBQUMsQ0FBQztJQUVILHdEQUF3RDtJQUN4RCxJQUFJLCtCQUFrQixHQUFHLEVBQUUsRUFBRTtRQUMzQixFQUFFLENBQUMsNERBQTRELEVBQUUsS0FBSztZQUNwRSxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFPLEVBQUUsQ0FBQztZQUM5QixNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RCwrQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUNBQXFDLEVBQUUsS0FBSztZQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFPLEVBQUUsQ0FBQztZQUM5QixNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RCxJQUFJLE9BQU8sR0FBRyxNQUFNLHFDQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsT0FBTyxHQUFHLE1BQU0scUNBQWUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxLQUFLO1lBQ3hGLE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQU8sRUFBRSxDQUFDO1lBQzlCLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBPcGVuU1NMLCBtaW5Nb2R1bHVzQml0TGVuZ3RoIH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbmltcG9ydCB7IGJpdExlbmd0aCwgaXNQcm9iYWJseVByaW1lIH0gZnJvbSAnYmlnaW50LWNyeXB0by11dGlscyc7XG5pbXBvcnQgeyBOT0RFX01BSk9SX1ZFUlNJT04gfSBmcm9tICcuLi9ub2RlLnV0aWxzJztcblxuZGVzY3JpYmUoJ29wZW5zc2wnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgbW9kdWxlIGlzIG5vdCBpbml0aWFsaXplZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBvcGVuc3NsID0gbmV3IE9wZW5TU0woKTtcbiAgICBhd2FpdCBvcGVuc3NsXG4gICAgICAuZ2VuZXJhdGVTYWZlUHJpbWUobWluTW9kdWx1c0JpdExlbmd0aClcbiAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUaGUgT3BlblNTbCBjbGFzcyBpcyBub3QgaW5pdGlhbGl6ZWQhIFBsZWFzZSBjYWxsIE9wZW5TU0wuaW5pdCgpLicpO1xuICB9KTtcblxuICAvLyBub2RlIDE0IHJlcXVpcmVzIC0tZXhwZXJpbWVudGFsLXdhc20tYmlnaW50IG5vZGUgZmxhZ1xuICBpZiAoTk9ERV9NQUpPUl9WRVJTSU9OID4gMTQpIHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEgc2FmZSBwcmltZSBudW1iZXIgb2YgYSBjZXJ0YWluIGJpdExlbmd0aCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG9wZW5zc2wgPSBuZXcgT3BlblNTTCgpO1xuICAgICAgYXdhaXQgb3BlbnNzbC5pbml0KCk7XG4gICAgICBjb25zdCBzYWZlUHJpbWUgPSBhd2FpdCBvcGVuc3NsLmdlbmVyYXRlU2FmZVByaW1lKDUxMik7XG4gICAgICBiaXRMZW5ndGgoc2FmZVByaW1lKS5zaG91bGQuZXF1YWwoNTEyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBzYWZlIHByaW1lIG51bWJlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG9wZW5zc2wgPSBuZXcgT3BlblNTTCgpO1xuICAgICAgYXdhaXQgb3BlbnNzbC5pbml0KCk7XG4gICAgICBjb25zdCBzYWZlUHJpbWUgPSBhd2FpdCBvcGVuc3NsLmdlbmVyYXRlU2FmZVByaW1lKDUxMik7XG4gICAgICBsZXQgaXNQcmltZSA9IGF3YWl0IGlzUHJvYmFibHlQcmltZShzYWZlUHJpbWUpO1xuICAgICAgaXNQcmltZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgaXNQcmltZSA9IGF3YWl0IGlzUHJvYmFibHlQcmltZSgoc2FmZVByaW1lIC0gQmlnSW50KDEpKSAvIEJpZ0ludCgyKSk7XG4gICAgICBpc1ByaW1lLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZ2VuZXJhdGUgbXVsdGlwbGUgc2FmZSBwcmltZXMgd2l0aCB0aGUgc2FtZSBvcGVuc3NsIGluc3RhbmNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgb3BlbnNzbCA9IG5ldyBPcGVuU1NMKCk7XG4gICAgICBhd2FpdCBvcGVuc3NsLmluaXQoKTtcbiAgICAgIGNvbnN0IHNhZmVQcmltZXMgPSBhd2FpdCBQcm9taXNlLmFsbChbb3BlbnNzbC5nZW5lcmF0ZVNhZmVQcmltZSg1MTIpLCBvcGVuc3NsLmdlbmVyYXRlU2FmZVByaW1lKDUxMildKTtcbiAgICAgIHNhZmVQcmltZXMubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICB9KTtcbiAgfVxufSk7XG4iXX0=
|