@bitgo-beta/sdk-coin-btc 1.2.3-alpha.406 → 1.2.3-alpha.407

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.
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=btc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"btc.d.ts","sourceRoot":"","sources":["../../../test/unit/btc.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ require("should");
40
+ const assert_1 = __importDefault(require("assert"));
41
+ const fixtures_1 = require("./fixtures");
42
+ const sdk_test_1 = require("@bitgo-beta/sdk-test");
43
+ const src_1 = require("../../src");
44
+ const sdk_api_1 = require("@bitgo-beta/sdk-api");
45
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
46
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
47
+ describe('BTC:', () => {
48
+ let bitgo;
49
+ before(() => {
50
+ bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
51
+ bitgo.safeRegister('tbtc', src_1.Tbtc.createInstance);
52
+ bitgo.initializeTestVars();
53
+ });
54
+ describe('Address validation:', () => {
55
+ let coin;
56
+ before(() => {
57
+ coin = bitgo.coin('tbtc');
58
+ });
59
+ it('should validate a base58 address', () => {
60
+ const validBase58Address = '2Mv1fGp8gHSqsiXYG7WqcYmHZdurDGVtUbn';
61
+ coin.isValidAddress(validBase58Address).should.be.true();
62
+ const invalidBase58Address = '2MV1FGP8GHSQSSXYG7WQCYMHZDURDGVTUBN';
63
+ coin.isValidAddress(invalidBase58Address).should.be.false();
64
+ });
65
+ it('should validate a bech32 address', () => {
66
+ const validBech32Address = 'tb1qtxxqmkkdx4n4lcp0nt2cct89uh3h3dlcu940kw9fcqyyq36peh0st94hfp';
67
+ coin.isValidAddress(validBech32Address).should.be.true();
68
+ coin.isValidAddress(validBech32Address.toUpperCase()).should.be.false();
69
+ });
70
+ it('should validate a bech32m address', () => {
71
+ // https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki#Test_vectors_for_Bech32m
72
+ const validBech32mAddress = 'tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7';
73
+ coin.isValidAddress(validBech32mAddress).should.be.true();
74
+ coin.isValidAddress(validBech32mAddress.toUpperCase()).should.be.false();
75
+ });
76
+ });
77
+ describe('Post Build Validation', () => {
78
+ let coin;
79
+ before(() => {
80
+ coin = bitgo.coin('tbtc');
81
+ });
82
+ it('should not modify locktime on postProcessPrebuild', async () => {
83
+ const txHex = '0100000001a8ec78f09f7acb0d344622ed3082c1a98e51ba1b1ab65406044f6e0a801609020100000000ffffffff02a0860100000000001976a9149f9a7abd600c0caa03983a77c8c3df8e062cb2fa88acfbf2150000000000220020b922cc1e737e679d24ff2d2b18cfa9fff4e35a733b4fba94282eaa1b7cfe56d200000000';
84
+ const blockHeight = 100;
85
+ const preBuild = { txHex, blockHeight };
86
+ const postProcessBuilt = await coin.postProcessPrebuild(preBuild);
87
+ const transaction = utxolib.bitgo.createTransactionFromHex(postProcessBuilt.txHex, utxolib.networks.bitcoin);
88
+ transaction.locktime.should.equal(0);
89
+ const inputs = transaction.ins;
90
+ for (const input of inputs) {
91
+ input.sequence.should.equal(0xffffffff);
92
+ }
93
+ });
94
+ });
95
+ describe('Audit Key', () => {
96
+ const { key } = fixtures_1.btcBackupKey;
97
+ let coin;
98
+ before(() => {
99
+ coin = bitgo.coin('tbtc');
100
+ });
101
+ it('should return for valid inputs', () => {
102
+ coin.assertIsValidKey({
103
+ encryptedPrv: key,
104
+ walletPassphrase: 'kAm[EFQ6o=SxlcLFDw%,',
105
+ });
106
+ });
107
+ it('should throw error if the walletPassphrase is incorrect', () => {
108
+ assert_1.default.throws(() => coin.assertIsValidKey({
109
+ encryptedPrv: key,
110
+ walletPassphrase: 'foo',
111
+ }), { message: "failed to decrypt prv: ccm: tag doesn't match" });
112
+ });
113
+ it('should return throw if the key is altered', () => {
114
+ const alteredKey = key.replace(/[0-9]/g, '0');
115
+ assert_1.default.throws(() => coin.assertIsValidKey({
116
+ encryptedPrv: alteredKey,
117
+ walletPassphrase: 'kAm[EFQ6o=SxlcLFDw%,',
118
+ }), { message: 'failed to decrypt prv: json decrypt: invalid parameters' });
119
+ });
120
+ });
121
+ describe('Unspent management spoofability - Consolidation (BUILD_SIGN_SEND)', () => {
122
+ let coin;
123
+ let bitgoTest;
124
+ before(() => {
125
+ bitgoTest = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
126
+ bitgoTest.safeRegister('tbtc', src_1.Tbtc.createInstance);
127
+ bitgoTest.initializeTestVars();
128
+ coin = bitgoTest.coin('tbtc');
129
+ });
130
+ it('should detect hex spoofing in BUILD_SIGN_SEND', async () => {
131
+ const keyTriple = utxolib.testutil.getKeyTriple('default');
132
+ const rootWalletKey = new utxolib.bitgo.RootWalletKeys(keyTriple);
133
+ const [user] = keyTriple;
134
+ const wallet = new sdk_core_1.Wallet(bitgoTest, coin, {
135
+ id: '5b34252f1bf349930e34020a',
136
+ coin: 'tbtc',
137
+ keys: ['user', 'backup', 'bitgo'],
138
+ });
139
+ const originalPsbt = utxolib.testutil.constructPsbt([{ scriptType: 'p2wsh', value: BigInt(10000) }], [{ address: 'tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7', value: BigInt(9000) }], coin.network, rootWalletKey, 'unsigned');
140
+ utxolib.bitgo.addXpubsToPsbt(originalPsbt, rootWalletKey);
141
+ const spoofedPsbt = utxolib.testutil.constructPsbt([{ scriptType: 'p2wsh', value: BigInt(10000) }], [{ address: 'tb1pjgg9ty3s2ztp60v6lhgrw76f7hxydzuk9t9mjsndh3p2gf2ah7gs4850kn', value: BigInt(9000) }], coin.network, rootWalletKey, 'unsigned');
142
+ utxolib.bitgo.addXpubsToPsbt(spoofedPsbt, rootWalletKey);
143
+ const spoofedHex = spoofedPsbt.toHex();
144
+ const bgUrl = bitgoTest._baseUrl;
145
+ const nock = require('nock');
146
+ nock(bgUrl)
147
+ .post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/consolidateUnspents`)
148
+ .reply(200, { txHex: spoofedHex, consolidateId: 'test' });
149
+ nock(bgUrl)
150
+ .post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/tx/send`)
151
+ .reply((requestBody) => {
152
+ if (requestBody?.txHex === spoofedHex) {
153
+ throw new Error('Spoofed transaction was sent: spoofing protection failed');
154
+ }
155
+ return [200, { txid: 'test-txid-123', status: 'signed' }];
156
+ });
157
+ const pubs = keyTriple.map((k) => k.neutered().toBase58());
158
+ const responses = [
159
+ { pub: pubs[0], encryptedPrv: (0, sdk_api_1.encrypt)('pass', user.toBase58()) },
160
+ { pub: pubs[1] },
161
+ { pub: pubs[2] },
162
+ ];
163
+ wallet
164
+ .keyIds()
165
+ .forEach((id, i) => nock(bgUrl).get(`/api/v2/${wallet.coin()}/key/${id}`).reply(200, responses[i]));
166
+ await assert_1.default.rejects(wallet.consolidateUnspents({ walletPassphrase: 'pass' }), (e) => typeof e?.message === 'string' &&
167
+ e.message.includes('prebuild attempts to spend to unintended external recipients'));
168
+ });
169
+ });
170
+ describe('Unspent management spoofability - Fanout (BUILD_SIGN_SEND)', () => {
171
+ let coin;
172
+ let bitgoTest;
173
+ before(() => {
174
+ bitgoTest = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
175
+ bitgoTest.safeRegister('tbtc', src_1.Tbtc.createInstance);
176
+ bitgoTest.initializeTestVars();
177
+ coin = bitgoTest.coin('tbtc');
178
+ });
179
+ it('should detect hex spoofing in fanout BUILD_SIGN_SEND', async () => {
180
+ const keyTriple = utxolib.testutil.getKeyTriple('default');
181
+ const rootWalletKey = new utxolib.bitgo.RootWalletKeys(keyTriple);
182
+ const [user] = keyTriple;
183
+ const wallet = new sdk_core_1.Wallet(bitgoTest, coin, {
184
+ id: '5b34252f1bf349930e34020a',
185
+ coin: 'tbtc',
186
+ keys: ['user', 'backup', 'bitgo'],
187
+ });
188
+ const originalPsbt = utxolib.testutil.constructPsbt([{ scriptType: 'p2wsh', value: BigInt(10000) }], [{ address: 'tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7', value: BigInt(9000) }], coin.network, rootWalletKey, 'unsigned');
189
+ utxolib.bitgo.addXpubsToPsbt(originalPsbt, rootWalletKey);
190
+ const spoofedPsbt = utxolib.testutil.constructPsbt([{ scriptType: 'p2wsh', value: BigInt(10000) }], [{ address: 'tb1pjgg9ty3s2ztp60v6lhgrw76f7hxydzuk9t9mjsndh3p2gf2ah7gs4850kn', value: BigInt(9000) }], coin.network, rootWalletKey, 'unsigned');
191
+ utxolib.bitgo.addXpubsToPsbt(spoofedPsbt, rootWalletKey);
192
+ const spoofedHex = spoofedPsbt.toHex();
193
+ const bgUrl = bitgoTest._baseUrl;
194
+ const nock = require('nock');
195
+ nock(bgUrl)
196
+ .post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/fanoutUnspents`)
197
+ .reply(200, { txHex: spoofedHex, fanoutId: 'test' });
198
+ nock(bgUrl)
199
+ .post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/tx/send`)
200
+ .reply((requestBody) => {
201
+ if (requestBody?.txHex === spoofedHex) {
202
+ throw new Error('Spoofed transaction was sent: spoofing protection failed');
203
+ }
204
+ return [200, { txid: 'test-txid-123', status: 'signed' }];
205
+ });
206
+ const pubs = keyTriple.map((k) => k.neutered().toBase58());
207
+ const responses = [
208
+ { pub: pubs[0], encryptedPrv: (0, sdk_api_1.encrypt)('pass', user.toBase58()) },
209
+ { pub: pubs[1] },
210
+ { pub: pubs[2] },
211
+ ];
212
+ wallet
213
+ .keyIds()
214
+ .forEach((id, i) => nock(bgUrl).get(`/api/v2/${wallet.coin()}/key/${id}`).reply(200, responses[i]));
215
+ await assert_1.default.rejects(wallet.fanoutUnspents({ walletPassphrase: 'pass' }), (e) => typeof e?.message === 'string' &&
216
+ e.message.includes('prebuild attempts to spend to unintended external recipients'));
217
+ });
218
+ });
219
+ });
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2J0Yy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtCQUFnQjtBQUNoQixvREFBNEI7QUFDNUIseUNBQTBDO0FBRTFDLG1EQUFvRTtBQUVwRSxtQ0FBaUM7QUFDakMsaURBQXdEO0FBQ3hELDhEQUFnRDtBQUVoRCxtREFBOEM7QUFFOUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7SUFDcEIsSUFBSSxLQUFtQixDQUFDO0lBRXhCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDVixLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM3QixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7UUFDbkMsSUFBSSxJQUFVLENBQUM7UUFDZixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFTLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1lBQzFDLE1BQU0sa0JBQWtCLEdBQUcscUNBQXFDLENBQUM7WUFDakUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekQsTUFBTSxvQkFBb0IsR0FBRyxxQ0FBcUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFv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QyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDM0QsTUFBTSxTQUFTLEdBQUc7Z0JBQ2hCLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBQSxpQkFBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTtnQkFDaEUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNoQixFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDakIsQ0FBQztZQUNGLE1BQU07aUJBQ0gsTUFBTSxFQUFFO2lCQUNSLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEcsTUFBTSxnQkFBTSxDQUFDLE9BQU8sQ0FDbEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQ25ELENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FDVCxPQUFPLENBQUMsRUFBRSxPQUFPLEtBQUssUUFBUTtnQkFDOUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsOERBQThELENBQUMsQ0FDckYsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnc2hvdWxkJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IGJ0Y0JhY2t1cEtleSB9IGZyb20gJy4vZml4dHVyZXMnO1xuXG5pbXBvcnQgeyB0eXBlIFRlc3RCaXRHb0FQSSwgVGVzdEJpdEdvIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuXG5pbXBvcnQgeyBUYnRjIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB7IEJpdEdvQVBJLCBlbmNyeXB0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgV2FsbGV0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5kZXNjcmliZSgnQlRDOicsICgpID0+IHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG5cbiAgYmVmb3JlKCgpID0+IHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RidGMnLCBUYnRjLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FkZHJlc3MgdmFsaWRhdGlvbjonLCAoKSA9PiB7XG4gICAgbGV0IGNvaW46IFRidGM7XG4gICAgYmVmb3JlKCgpID0+IHtcbiAgICAgIGNvaW4gPSBiaXRnby5jb2luKCd0YnRjJykgYXMgVGJ0YztcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBiYXNlNTggYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkQmFzZTU4QWRkcmVzcyA9ICcyTXYxZkdwOGdIU3FzaVhZRzdXcWNZbUhaZHVyREdWdFVibic7XG4gICAgICBjb2luLmlzVmFsaWRBZGRyZXNzKHZhbGlkQmFzZTU4QWRkcmVzcykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGNvbnN0IGludmFsaWRCYXNlNThBZGRyZXNzID0gJzJNVjFGR1A4R0hTUVNTWFlHN1dRQ1lNSFpEVVJER1ZUVUJOJztcbiAgICAgIGNvaW4uaXNWYWxpZEFkZHJlc3MoaW52YWxpZEJhc2U1OEFkZHJlc3MpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIGJlY2gzMiBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRCZWNoMzJBZGRyZXNzID0gJ3RiMXF0eHhxbWtrZHg0bjRsY3AwbnQyY2N0ODl1aDNoM2RsY3U5NDBrdzlmY3F5eXEzNnBlaDBzdDk0aGZwJztcbiAgICAgIGNvaW4uaXNWYWxpZEFkZHJlc3ModmFsaWRCZWNoMzJBZGRyZXNzKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgY29pbi5pc1ZhbGlkQWRkcmVzcyh2YWxpZEJlY2gzMkFkZHJlc3MudG9VcHBlckNhc2UoKSkuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgYmVjaDMybSBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDM1MC5tZWRpYXdpa2kjVGVzdF92ZWN0b3JzX2Zvcl9CZWNoMzJtXG4gICAgICBjb25zdCB2YWxpZEJlY2gzMm1BZGRyZXNzID0gJ3RiMXFycDMzZzBxNWM1dHhzcDlhcnlzcng0azZ6ZGtmczRuY2U0eGowZ2RjY2NlZnZweXN4ZjNxMHNsNWs3JztcbiAgICAgIGNvaW4uaXNWYWxpZEFkZHJlc3ModmFsaWRCZWNoMzJtQWRkcmVzcykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGNvaW4uaXNWYWxpZEFkZHJlc3ModmFsaWRCZWNoMzJtQWRkcmVzcy50b1VwcGVyQ2FzZSgpKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Bvc3QgQnVpbGQgVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBsZXQgY29pbjogVGJ0YztcbiAgICBiZWZvcmUoKCkgPT4ge1xuICAgICAgY29pbiA9IGJpdGdvLmNvaW4oJ3RidGMnKSBhcyBUYnRjO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgbW9kaWZ5IGxvY2t0aW1lIG9uIHBvc3RQcm9jZXNzUHJlYnVpbGQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEhleCA9XG4gICAgICAgICcwMTAwMDAwMDAxYThlYzc4ZjA5ZjdhY2IwZDM0NDYyMmVkMzA4MmMxYTk4ZTUxYmExYjFhYjY1NDA2MDQ0ZjZlMGE4MDE2MDkwMjAxMDAwMDAwMDBmZmZmZmZmZjAyYTA4NjAxMDAwMDAwMDAwMDE5NzZhOTE0OWY5YTdhYmQ2MDBjMGNhYTAzOTgzYTc3YzhjM2RmOGUwNjJjYjJmYTg4YWNmYmYyMTUwMDAwMDAwMDAwMjIwMDIwYjkyMmNjMWU3MzdlNjc5ZDI0ZmYyZDJiMThjZmE5ZmZmNGUzNWE3MzNiNGZiYTk0MjgyZWFhMWI3Y2ZlNTZkMjAwMDAwMDAwJztcbiAgICAgIGNvbnN0IGJsb2NrSGVpZ2h0ID0gMTAwO1xuICAgICAgY29uc3QgcHJlQnVpbGQgPSB7IHR4SGV4LCBibG9ja0hlaWdodCB9O1xuICAgICAgY29uc3QgcG9zdFByb2Nlc3NCdWlsdCA9IGF3YWl0IGNvaW4ucG9zdFByb2Nlc3NQcmVidWlsZChwcmVCdWlsZCk7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHV0eG9saWIuYml0Z28uY3JlYXRlVHJhbnNhY3Rpb25Gcm9tSGV4KFxuICAgICAgICBwb3N0UHJvY2Vzc0J1aWx0LnR4SGV4IGFzIHN0cmluZyxcbiAgICAgICAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luXG4gICAgICApO1xuXG4gICAgICB0cmFuc2FjdGlvbi5sb2NrdGltZS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBjb25zdCBpbnB1dHMgPSB0cmFuc2FjdGlvbi5pbnM7XG4gICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIGlucHV0cykge1xuICAgICAgICBpbnB1dC5zZXF1ZW5jZS5zaG91bGQuZXF1YWwoMHhmZmZmZmZmZik7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBdWRpdCBLZXknLCAoKSA9PiB7XG4gICAgY29uc3QgeyBrZXkgfSA9IGJ0Y0JhY2t1cEtleTtcbiAgICBsZXQgY29pbjogVGJ0YztcbiAgICBiZWZvcmUoKCkgPT4ge1xuICAgICAgY29pbiA9IGJpdGdvLmNvaW4oJ3RidGMnKSBhcyBUYnRjO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZm9yIHZhbGlkIGlucHV0cycsICgpID0+IHtcbiAgICAgIGNvaW4uYXNzZXJ0SXNWYWxpZEtleSh7XG4gICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAna0FtW0VGUTZvPVN4bGNMRkR3JSwnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGlmIHRoZSB3YWxsZXRQYXNzcGhyYXNlIGlzIGluY29ycmVjdCcsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgY29pbi5hc3NlcnRJc1ZhbGlkS2V5KHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2ZvbycsXG4gICAgICAgICAgfSksXG4gICAgICAgIHsgbWVzc2FnZTogXCJmYWlsZWQgdG8gZGVjcnlwdCBwcnY6IGNjbTogdGFnIGRvZXNuJ3QgbWF0Y2hcIiB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhyb3cgaWYgdGhlIGtleSBpcyBhbHRlcmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgYWx0ZXJlZEtleSA9IGtleS5yZXBsYWNlKC9bMC05XS9nLCAnMCcpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBjb2luLmFzc2VydElzVmFsaWRLZXkoe1xuICAgICAgICAgICAgZW5jcnlwdGVkUHJ2OiBhbHRlcmVkS2V5LFxuICAgICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2tBbVtFRlE2bz1TeGxjTEZEdyUsJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgeyBtZXNzYWdlOiAnZmFpbGVkIHRvIGRlY3J5cHQgcHJ2OiBqc29uIGRlY3J5cHQ6IGludmFsaWQgcGFyYW1ldGVycycgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Vuc3BlbnQgbWFuYWdlbWVudCBzcG9vZmFiaWxpdHkgLSBDb25zb2xpZGF0aW9uIChCVUlMRF9TSUdOX1NFTkQpJywgKCkgPT4ge1xuICAgIGxldCBjb2luOiBUYnRjO1xuICAgIGxldCBiaXRnb1Rlc3Q6IFRlc3RCaXRHb0FQSTtcbiAgICBiZWZvcmUoKCkgPT4ge1xuICAgICAgYml0Z29UZXN0ID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICAgICAgYml0Z29UZXN0LnNhZmVSZWdpc3RlcigndGJ0YycsIFRidGMuY3JlYXRlSW5zdGFuY2UpO1xuICAgICAgYml0Z29UZXN0LmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgICAgY29pbiA9IGJpdGdvVGVzdC5jb2luKCd0YnRjJykgYXMgVGJ0YztcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGV0ZWN0IGhleCBzcG9vZmluZyBpbiBCVUlMRF9TSUdOX1NFTkQnLCBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBrZXlUcmlwbGUgPSB1dHhvbGliLnRlc3R1dGlsLmdldEtleVRyaXBsZSgnZGVmYXVsdCcpO1xuICAgICAgY29uc3Qgcm9vdFdhbGxldEtleSA9IG5ldyB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzKGtleVRyaXBsZSk7XG4gICAgICBjb25zdCBbdXNlcl0gPSBrZXlUcmlwbGU7XG5cbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z29UZXN0LCBjb2luLCB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhJyxcbiAgICAgICAgY29pbjogJ3RidGMnLFxuICAgICAgICBrZXlzOiBbJ3VzZXInLCAnYmFja3VwJywgJ2JpdGdvJ10sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgb3JpZ2luYWxQc2J0ID0gdXR4b2xpYi50ZXN0dXRpbC5jb25zdHJ1Y3RQc2J0KFxuICAgICAgICBbeyBzY3JpcHRUeXBlOiAncDJ3c2gnIGFzIGNvbnN0LCB2YWx1ZTogQmlnSW50KDEwMDAwKSB9XSxcbiAgICAgICAgW3sgYWRkcmVzczogJ3RiMXFycDMzZzBxNWM1dHhzcDlhcnlzcng0azZ6ZGtmczRuY2U0eGowZ2RjY2NlZnZweXN4ZjNxMHNsNWs3JywgdmFsdWU6IEJpZ0ludCg5MDAwKSB9XSxcbiAgICAgICAgY29pbi5uZXR3b3JrLFxuICAgICAgICByb290V2FsbGV0S2V5LFxuICAgICAgICAndW5zaWduZWQnIGFzIGNvbnN0XG4gICAgICApO1xuICAgICAgdXR4b2xpYi5iaXRnby5hZGRYcHVic1RvUHNidChvcmlnaW5hbFBzYnQsIHJvb3RXYWxsZXRLZXkpO1xuICAgICAgY29uc3Qgc3Bvb2ZlZFBzYnQgPSB1dHhvbGliLnRlc3R1dGlsLmNvbnN0cnVjdFBzYnQoXG4gICAgICAgIFt7IHNjcmlwdFR5cGU6ICdwMndzaCcgYXMgY29uc3QsIHZhbHVlOiBCaWdJbnQoMTAwMDApIH1dLFxuICAgICAgICBbeyBhZGRyZXNzOiAndGIxcGpnZzl0eTNzMnp0cDYwdjZsaGdydzc2ZjdoeHlkenVrOXQ5bWpzbmRoM3AyZ2YyYWg3Z3M0ODUwa24nLCB2YWx1ZTogQmlnSW50KDkwMDApIH1dLFxuICAgICAgICBjb2luLm5ldHdvcmssXG4gICAgICAgIHJvb3RXYWxsZXRLZXksXG4gICAgICAgICd1bnNpZ25lZCcgYXMgY29uc3RcbiAgICAgICk7XG4gICAgICB1dHhvbGliLmJpdGdvLmFkZFhwdWJzVG9Qc2J0KHNwb29mZWRQc2J0LCByb290V2FsbGV0S2V5KTtcbiAgICAgIGNvbnN0IHNwb29mZWRIZXg6IHN0cmluZyA9IHNwb29mZWRQc2J0LnRvSGV4KCk7XG5cbiAgICAgIGNvbnN0IGJnVXJsOiBzdHJpbmcgPSAoYml0Z29UZXN0IGFzIGFueSkuX2Jhc2VVcmw7XG4gICAgICBjb25zdCBub2NrID0gcmVxdWlyZSgnbm9jaycpO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9jb25zb2xpZGF0ZVVuc3BlbnRzYClcbiAgICAgICAgLnJlcGx5KDIwMCwgeyB0eEhleDogc3Bvb2ZlZEhleCwgY29uc29saWRhdGVJZDogJ3Rlc3QnIH0pO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9zZW5kYClcbiAgICAgICAgLnJlcGx5KChyZXF1ZXN0Qm9keTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcXVlc3RCb2R5Py50eEhleCA9PT0gc3Bvb2ZlZEhleCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTcG9vZmVkIHRyYW5zYWN0aW9uIHdhcyBzZW50OiBzcG9vZmluZyBwcm90ZWN0aW9uIGZhaWxlZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gWzIwMCwgeyB0eGlkOiAndGVzdC10eGlkLTEyMycsIHN0YXR1czogJ3NpZ25lZCcgfV07XG4gICAgICAgIH0pO1xuXG4gICAgICBjb25zdCBwdWJzID0ga2V5VHJpcGxlLm1hcCgoaykgPT4gay5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpO1xuICAgICAgY29uc3QgcmVzcG9uc2VzID0gW1xuICAgICAgICB7IHB1YjogcHVic1swXSwgZW5jcnlwdGVkUHJ2OiBlbmNyeXB0KCdwYXNzJywgdXNlci50b0Jhc2U1OCgpKSB9LFxuICAgICAgICB7IHB1YjogcHVic1sxXSB9LFxuICAgICAgICB7IHB1YjogcHVic1syXSB9LFxuICAgICAgXTtcbiAgICAgIHdhbGxldFxuICAgICAgICAua2V5SWRzKClcbiAgICAgICAgLmZvckVhY2goKGlkLCBpKSA9PiBub2NrKGJnVXJsKS5nZXQoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS9rZXkvJHtpZH1gKS5yZXBseSgyMDAsIHJlc3BvbnNlc1tpXSkpO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgd2FsbGV0LmNvbnNvbGlkYXRlVW5zcGVudHMoeyB3YWxsZXRQYXNzcGhyYXNlOiAncGFzcycgfSksXG4gICAgICAgIChlOiBhbnkpID0+XG4gICAgICAgICAgdHlwZW9mIGU/Lm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgZS5tZXNzYWdlLmluY2x1ZGVzKCdwcmVidWlsZCBhdHRlbXB0cyB0byBzcGVuZCB0byB1bmludGVuZGVkIGV4dGVybmFsIHJlY2lwaWVudHMnKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Vuc3BlbnQgbWFuYWdlbWVudCBzcG9vZmFiaWxpdHkgLSBGYW5vdXQgKEJVSUxEX1NJR05fU0VORCknLCAoKSA9PiB7XG4gICAgbGV0IGNvaW46IFRidGM7XG4gICAgbGV0IGJpdGdvVGVzdDogVGVzdEJpdEdvQVBJO1xuICAgIGJlZm9yZSgoKSA9PiB7XG4gICAgICBiaXRnb1Rlc3QgPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gICAgICBiaXRnb1Rlc3Quc2FmZVJlZ2lzdGVyKCd0YnRjJywgVGJ0Yy5jcmVhdGVJbnN0YW5jZSk7XG4gICAgICBiaXRnb1Rlc3QuaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgICBjb2luID0gYml0Z29UZXN0LmNvaW4oJ3RidGMnKSBhcyBUYnRjO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXRlY3QgaGV4IHNwb29maW5nIGluIGZhbm91dCBCVUlMRF9TSUdOX1NFTkQnLCBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBrZXlUcmlwbGUgPSB1dHhvbGliLnRlc3R1dGlsLmdldEtleVRyaXBsZSgnZGVmYXVsdCcpO1xuICAgICAgY29uc3Qgcm9vdFdhbGxldEtleSA9IG5ldyB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzKGtleVRyaXBsZSk7XG4gICAgICBjb25zdCBbdXNlcl0gPSBrZXlUcmlwbGU7XG5cbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z29UZXN0LCBjb2luLCB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhJyxcbiAgICAgICAgY29pbjogJ3RidGMnLFxuICAgICAgICBrZXlzOiBbJ3VzZXInLCAnYmFja3VwJywgJ2JpdGdvJ10sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgb3JpZ2luYWxQc2J0ID0gdXR4b2xpYi50ZXN0dXRpbC5jb25zdHJ1Y3RQc2J0KFxuICAgICAgICBbeyBzY3JpcHRUeXBlOiAncDJ3c2gnIGFzIGNvbnN0LCB2YWx1ZTogQmlnSW50KDEwMDAwKSB9XSxcbiAgICAgICAgW3sgYWRkcmVzczogJ3RiMXFycDMzZzBxNWM1dHhzcDlhcnlzcng0azZ6ZGtmczRuY2U0eGowZ2RjY2NlZnZweXN4ZjNxMHNsNWs3JywgdmFsdWU6IEJpZ0ludCg5MDAwKSB9XSxcbiAgICAgICAgY29pbi5uZXR3b3JrLFxuICAgICAgICByb290V2FsbGV0S2V5LFxuICAgICAgICAndW5zaWduZWQnIGFzIGNvbnN0XG4gICAgICApO1xuICAgICAgdXR4b2xpYi5iaXRnby5hZGRYcHVic1RvUHNidChvcmlnaW5hbFBzYnQsIHJvb3RXYWxsZXRLZXkpO1xuXG4gICAgICBjb25zdCBzcG9vZmVkUHNidCA9IHV0eG9saWIudGVzdHV0aWwuY29uc3RydWN0UHNidChcbiAgICAgICAgW3sgc2NyaXB0VHlwZTogJ3Ayd3NoJyBhcyBjb25zdCwgdmFsdWU6IEJpZ0ludCgxMDAwMCkgfV0sXG4gICAgICAgIFt7IGFkZHJlc3M6ICd0YjFwamdnOXR5M3MyenRwNjB2NmxoZ3J3NzZmN2h4eWR6dWs5dDltanNuZGgzcDJnZjJhaDdnczQ4NTBrbicsIHZhbHVlOiBCaWdJbnQoOTAwMCkgfV0sXG4gICAgICAgIGNvaW4ubmV0d29yayxcbiAgICAgICAgcm9vdFdhbGxldEtleSxcbiAgICAgICAgJ3Vuc2lnbmVkJyBhcyBjb25zdFxuICAgICAgKTtcbiAgICAgIHV0eG9saWIuYml0Z28uYWRkWHB1YnNUb1BzYnQoc3Bvb2ZlZFBzYnQsIHJvb3RXYWxsZXRLZXkpO1xuICAgICAgY29uc3Qgc3Bvb2ZlZEhleDogc3RyaW5nID0gc3Bvb2ZlZFBzYnQudG9IZXgoKTtcblxuICAgICAgY29uc3QgYmdVcmw6IHN0cmluZyA9IChiaXRnb1Rlc3QgYXMgYW55KS5fYmFzZVVybDtcbiAgICAgIGNvbnN0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2Zhbm91dFVuc3BlbnRzYClcbiAgICAgICAgLnJlcGx5KDIwMCwgeyB0eEhleDogc3Bvb2ZlZEhleCwgZmFub3V0SWQ6ICd0ZXN0JyB9KTtcblxuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvc2VuZGApXG4gICAgICAgIC5yZXBseSgocmVxdWVzdEJvZHk6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXF1ZXN0Qm9keT8udHhIZXggPT09IHNwb29mZWRIZXgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU3Bvb2ZlZCB0cmFuc2FjdGlvbiB3YXMgc2VudDogc3Bvb2ZpbmcgcHJvdGVjdGlvbiBmYWlsZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFsyMDAsIHsgdHhpZDogJ3Rlc3QtdHhpZC0xMjMnLCBzdGF0dXM6ICdzaWduZWQnIH1dO1xuICAgICAgICB9KTtcblxuICAgICAgY29uc3QgcHVicyA9IGtleVRyaXBsZS5tYXAoKGspID0+IGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlcyA9IFtcbiAgICAgICAgeyBwdWI6IHB1YnNbMF0sIGVuY3J5cHRlZFBydjogZW5jcnlwdCgncGFzcycsIHVzZXIudG9CYXNlNTgoKSkgfSxcbiAgICAgICAgeyBwdWI6IHB1YnNbMV0gfSxcbiAgICAgICAgeyBwdWI6IHB1YnNbMl0gfSxcbiAgICAgIF07XG4gICAgICB3YWxsZXRcbiAgICAgICAgLmtleUlkcygpXG4gICAgICAgIC5mb3JFYWNoKChpZCwgaSkgPT4gbm9jayhiZ1VybCkuZ2V0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0va2V5LyR7aWR9YCkucmVwbHkoMjAwLCByZXNwb25zZXNbaV0pKTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAgIHdhbGxldC5mYW5vdXRVbnNwZW50cyh7IHdhbGxldFBhc3NwaHJhc2U6ICdwYXNzJyB9KSxcbiAgICAgICAgKGU6IGFueSkgPT5cbiAgICAgICAgICB0eXBlb2YgZT8ubWVzc2FnZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICBlLm1lc3NhZ2UuaW5jbHVkZXMoJ3ByZWJ1aWxkIGF0dGVtcHRzIHRvIHNwZW5kIHRvIHVuaW50ZW5kZWQgZXh0ZXJuYWwgcmVjaXBpZW50cycpXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,4 @@
1
+ export declare const btcBackupKey: {
2
+ key: string;
3
+ };
4
+ //# sourceMappingURL=btcBackupKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"btcBackupKey.d.ts","sourceRoot":"","sources":["../../../../test/unit/fixtures/btcBackupKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;CAMxB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.btcBackupKey = void 0;
4
+ exports.btcBackupKey = {
5
+ key: '{"iv":"JgqqE4W45/tKBSMSYqD+qg==","v":1,"iter":10000,"ks":256,"ts":64,"mode"' +
6
+ ':"ccm","adata":"","cipher":"aes","salt":"kiLPf8VSdI0=","ct":"zUh4Oko/06g02E' +
7
+ 'wnqOfzJbTwtE2p3b19jDk8Tum07Jv3N/RP7Bo0w/ObLBO1uIJFossO3nJ1JS+7t/vPQhdCtN8oD' +
8
+ '6YrZnEZYrRwN6JQkL1uYPnZ1PoWbYI9navK5CLU1KQwDTO9YEN46++OrzFH+CjpQVLblaw="}',
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRjQmFja3VwS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2ZpeHR1cmVzL2J0Y0JhY2t1cEtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLFlBQVksR0FBRztJQUMxQixHQUFHLEVBQ0QsNkVBQTZFO1FBQzdFLDZFQUE2RTtRQUM3RSw2RUFBNkU7UUFDN0UsMkVBQTJFO0NBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYnRjQmFja3VwS2V5ID0ge1xuICBrZXk6XG4gICAgJ3tcIml2XCI6XCJKZ3FxRTRXNDUvdEtCU01TWXFEK3FnPT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiJyArXG4gICAgJzpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcImtpTFBmOFZTZEkwPVwiLFwiY3RcIjpcInpVaDRPa28vMDZnMDJFJyArXG4gICAgJ3ducU9mekpiVHd0RTJwM2IxOWpEazhUdW0wN0p2M04vUlA3Qm8wdy9PYkxCTzF1SUpGb3NzTzNuSjFKUys3dC92UFFoZEN0TjhvRCcgK1xuICAgICc2WXJabkVaWXJSd042SlFrTDF1WVBuWjFQb1diWUk5bmF2SzVDTFUxS1F3RFRPOVlFTjQ2KytPcnpGSCtDanBRVkxibGF3PVwifScsXG59O1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './btcBackupKey';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../test/unit/fixtures/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./btcBackupKey"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvZml4dHVyZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUErQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYnRjQmFja3VwS2V5JztcbiJdfQ==