@bitgo-beta/sdk-coin-bch 1.3.3-alpha.405 → 1.3.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-http';
2
+ //# sourceMappingURL=bch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../../test/integration/bch.ts"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC"}
@@ -0,0 +1,75 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ /**
37
+ * @prettier
38
+ */
39
+ const should = __importStar(require("should"));
40
+ require("should-http");
41
+ const sdk_api_1 = require("@bitgo-beta/sdk-api");
42
+ const sdk_test_1 = require("@bitgo-beta/sdk-test");
43
+ const tbch_1 = require("../../src/tbch");
44
+ const nock = __importStar(require("nock"));
45
+ nock.restore();
46
+ describe('BCH:', function () {
47
+ let bitgo;
48
+ let wallet;
49
+ before(async function () {
50
+ bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
51
+ bitgo.initializeTestVars();
52
+ bitgo.safeRegister('tbch', tbch_1.Tbch.createInstance);
53
+ await bitgo.authenticateTestUser(bitgo.testUserOTP());
54
+ wallet = await bitgo.coin('tbch').wallets().getWallet({ id: sdk_test_1.TestBitGo.V2.TEST_BCH_WALLET_ID });
55
+ });
56
+ describe('Send Transaction', function () {
57
+ it('should send fund to cashaddr recipient', async function () {
58
+ await bitgo.unlock({ otp: '0000000' });
59
+ const transaction = await wallet.send({
60
+ address: sdk_test_1.TestBitGo.V2.TEST_BCH_WALLET_CASH_ADDRESS,
61
+ amount: '5000',
62
+ walletPassphrase: sdk_test_1.TestBitGo.V2.TEST_BCH_WALLET_PASSPHRASE,
63
+ otp: bitgo.testUserOTP(),
64
+ });
65
+ should.exist(transaction);
66
+ transaction.should.have.property('transfer');
67
+ transaction.should.have.property('txid');
68
+ transaction.should.have.property('tx');
69
+ transaction.status.should.containEql('signed');
70
+ transaction.transfer.type.should.containEql('send');
71
+ transaction.transfer.wallet.should.containEql(wallet._wallet.id);
72
+ });
73
+ });
74
+ });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9pbnRlZ3JhdGlvbi9iY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILCtDQUFpQztBQUNqQyx1QkFBcUI7QUFFckIsaURBQStDO0FBQy9DLG1EQUErRDtBQUMvRCx5Q0FBc0M7QUFDdEMsMkNBQTZCO0FBRTdCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUVmLFFBQVEsQ0FBQyxNQUFNLEVBQUU7SUFDZixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxNQUFNLENBQUM7SUFFWCxNQUFNLENBQUMsS0FBSztRQUNWLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWhELE1BQU0sS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLG9CQUFTLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtRQUMzQixFQUFFLENBQUMsd0NBQXdDLEVBQUUsS0FBSztZQUNoRCxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUV2QyxNQUFNLFdBQVcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLE9BQU8sRUFBRSxvQkFBUyxDQUFDLEVBQUUsQ0FBQyw0QkFBNEI7Z0JBQ2xELE1BQU0sRUFBRSxNQUFNO2dCQUNkLGdCQUFnQixFQUFFLG9CQUFTLENBQUMsRUFBRSxDQUFDLDBCQUEwQjtnQkFDekQsR0FBRyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUU7YUFDekIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQixXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0MsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0ICogYXMgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgJ3Nob3VsZC1odHRwJztcblxuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgVGJjaCB9IGZyb20gJy4uLy4uL3NyYy90YmNoJztcbmltcG9ydCAqIGFzIG5vY2sgZnJvbSAnbm9jayc7XG5cbm5vY2sucmVzdG9yZSgpO1xuXG5kZXNjcmliZSgnQkNIOicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCB3YWxsZXQ7XG5cbiAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RiY2gnLCBUYmNoLmNyZWF0ZUluc3RhbmNlKTtcblxuICAgIGF3YWl0IGJpdGdvLmF1dGhlbnRpY2F0ZVRlc3RVc2VyKGJpdGdvLnRlc3RVc2VyT1RQKCkpO1xuICAgIHdhbGxldCA9IGF3YWl0IGJpdGdvLmNvaW4oJ3RiY2gnKS53YWxsZXRzKCkuZ2V0V2FsbGV0KHsgaWQ6IFRlc3RCaXRHby5WMi5URVNUX0JDSF9XQUxMRVRfSUQgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTZW5kIFRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgc2VuZCBmdW5kIHRvIGNhc2hhZGRyIHJlY2lwaWVudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJpdGdvLnVubG9jayh7IG90cDogJzAwMDAwMDAnIH0pO1xuXG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGF3YWl0IHdhbGxldC5zZW5kKHtcbiAgICAgICAgYWRkcmVzczogVGVzdEJpdEdvLlYyLlRFU1RfQkNIX1dBTExFVF9DQVNIX0FERFJFU1MsXG4gICAgICAgIGFtb3VudDogJzUwMDAnLFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBUZXN0Qml0R28uVjIuVEVTVF9CQ0hfV0FMTEVUX1BBU1NQSFJBU0UsXG4gICAgICAgIG90cDogYml0Z28udGVzdFVzZXJPVFAoKSxcbiAgICAgIH0pO1xuXG4gICAgICBzaG91bGQuZXhpc3QodHJhbnNhY3Rpb24pO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RyYW5zZmVyJyk7XG4gICAgICB0cmFuc2FjdGlvbi5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHhpZCcpO1xuICAgICAgdHJhbnNhY3Rpb24uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3R4Jyk7XG4gICAgICB0cmFuc2FjdGlvbi5zdGF0dXMuc2hvdWxkLmNvbnRhaW5FcWwoJ3NpZ25lZCcpO1xuICAgICAgdHJhbnNhY3Rpb24udHJhbnNmZXIudHlwZS5zaG91bGQuY29udGFpbkVxbCgnc2VuZCcpO1xuICAgICAgdHJhbnNhY3Rpb24udHJhbnNmZXIud2FsbGV0LnNob3VsZC5jb250YWluRXFsKHdhbGxldC5fd2FsbGV0LmlkKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bch.d.ts","sourceRoot":"","sources":["../../../test/unit/bch.ts"],"names":[],"mappings":""}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * @prettier
5
+ */
6
+ const sdk_api_1 = require("@bitgo-beta/sdk-api");
7
+ const sdk_test_1 = require("@bitgo-beta/sdk-test");
8
+ const bch_1 = require("../../src/bch");
9
+ const tbch_1 = require("../../src/tbch");
10
+ describe('Custom BCH Tests', function () {
11
+ const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
12
+ bitgo.initializeTestVars();
13
+ bitgo.safeRegister('bch', bch_1.Bch.createInstance);
14
+ bitgo.safeRegister('tbch', tbch_1.Tbch.createInstance);
15
+ const bch = bitgo.coin('bch');
16
+ const tbch = bitgo.coin('tbch');
17
+ // we use mainnet bch so we can reuse the mainnet address examples
18
+ it('should correctly convert addresses', function () {
19
+ // P2PKH cashaddr -> cashaddr
20
+ bch
21
+ .canonicalAddress('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr')
22
+ .should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
23
+ bch
24
+ .canonicalAddress('qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr')
25
+ .should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
26
+ // P2PKH base58 -> cashaddr
27
+ bch
28
+ .canonicalAddress('1BpEi6DfDAUFd7GtittLSdBeYJvcoaVggu', 'cashaddr')
29
+ .should.equal('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
30
+ // P2SH cashaddr -> cashaddr
31
+ bch
32
+ .canonicalAddress('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
33
+ .should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
34
+ bch
35
+ .canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
36
+ .should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
37
+ // P2SH base58 -> cashaddr
38
+ bch
39
+ .canonicalAddress('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC', 'cashaddr')
40
+ .should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
41
+ // no 'bitcoincash:' prefix
42
+ bch
43
+ .canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq', 'cashaddr')
44
+ .should.equal('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq');
45
+ // P2PKH cashaddr -> base58
46
+ bch
47
+ .canonicalAddress('bitcoincash:qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'base58')
48
+ .should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
49
+ bch
50
+ .canonicalAddress('qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'base58')
51
+ .should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
52
+ // P2PKH base58 -> base58
53
+ bch
54
+ .canonicalAddress('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb', 'base58')
55
+ .should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
56
+ // P2SH cashaddr -> base58
57
+ bch
58
+ .canonicalAddress('bitcoincash:pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58')
59
+ .should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
60
+ bch
61
+ .canonicalAddress('pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58')
62
+ .should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
63
+ // P2SH base58 -> base58
64
+ bch
65
+ .canonicalAddress('3LDsS579y7sruadqu11beEJoTjdFiFCdX4', 'base58')
66
+ .should.equal('3LDsS579y7sruadqu11beEJoTjdFiFCdX4');
67
+ // undefined version defaults to base58
68
+ bch
69
+ .canonicalAddress('bitcoincash:ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq')
70
+ .should.equal('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC');
71
+ bch
72
+ .canonicalAddress('ppm2qsznhks23z7629mms6s4cwef74vcwvn0h829pq')
73
+ .should.equal('3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC');
74
+ // all capitalized
75
+ bch
76
+ .canonicalAddress('BITCOINCASH:QQQ3728YW0Y47SQN6L2NA30MCW6ZM78DZQRE909M2R', 'base58')
77
+ .should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
78
+ bch
79
+ .canonicalAddress('QQQ3728YW0Y47SQN6L2NA30MCW6ZM78DZQRE909M2R', 'base58')
80
+ .should.equal('16w1D5WRVKJuZUsSRzdLp9w3YGcgoxDXb');
81
+ // testnet addresses
82
+ tbch
83
+ .canonicalAddress('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X', 'cashaddr')
84
+ .should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
85
+ tbch
86
+ .canonicalAddress('n3jYBjCzgGNydQwf83Hz6GBzGBhMkKfgL1', 'cashaddr')
87
+ .should.equal('bchtest:qremgr9dr9x5swv82k69qdjzrvdxgkaaesftdp5xla');
88
+ tbch
89
+ .canonicalAddress('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
90
+ .should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
91
+ tbch
92
+ .canonicalAddress('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
93
+ .should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
94
+ tbch
95
+ .canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'base58')
96
+ .should.equal('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X');
97
+ tbch
98
+ .canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'base58')
99
+ .should.equal('2NCEDmmKNNnqKvnWw7pE3RLzuFe5aHHVy1X');
100
+ tbch
101
+ .canonicalAddress('prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f', 'cashaddr')
102
+ .should.equal('bchtest:prgrnjengs555k3cff2s3gqxg3xyyr9uzyh9js5m8f');
103
+ });
104
+ it('should reject invalid addresses', function () {
105
+ // improperly short data segment
106
+ (() => {
107
+ bch.canonicalAddress('bitcoincash:sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
108
+ }).should.throw();
109
+ // mismatched data segment (cashaddr)
110
+ (() => {
111
+ bch.canonicalAddress('bitcoincash:yr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
112
+ }).should.throw();
113
+ // double prefix
114
+ (() => {
115
+ bch.canonicalAddress('bitcoincash:bitcoincash:pr95sy3j9xwd2ap32xkykttr4cvcu7as4yc93ky28e', 'base58');
116
+ }).should.throw();
117
+ // mismatched data segment (base58)
118
+ (() => {
119
+ bch.canonicalAddress('3DDsS579y7sruadqu11beEJoTjdFiFCdX4', 'base58');
120
+ }).should.throw();
121
+ // improper prefix
122
+ (() => {
123
+ bch.canonicalAddress(':qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'base58');
124
+ }).should.throw();
125
+ (() => {
126
+ bch.canonicalAddress('bitcoin:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'base58');
127
+ }).should.throw();
128
+ // mismatched capitalization
129
+ (() => {
130
+ bch.canonicalAddress('bitcoincash:QPM2Qsznhks23z7629mms6s4cwef74vcwvy22gdx6a', 'cashaddr');
131
+ }).should.throw();
132
+ // improper version
133
+ (() => {
134
+ bch.canonicalAddress('bitcoincash:qqq3728yw0y47sqn6l2na30mcw6zm78dzqre909m2r', 'blah');
135
+ }).should.throw();
136
+ // undefined address
137
+ (() => {
138
+ bch.canonicalAddress(undefined, 'blah');
139
+ }).should.throw();
140
+ });
141
+ });
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2JjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOztHQUVHO0FBQ0gsaURBQStDO0FBQy9DLG1EQUErRDtBQUMvRCx1Q0FBb0M7QUFDcEMseUNBQXNDO0FBRXRDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtJQUMzQixNQUFNLEtBQUssR0FBaUIsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxXQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFaEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQVEsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBUyxDQUFDO0lBRXhDLGtFQUFrRTtJQUNsRSxFQUFFLENBQUMsb0NBQW9DLEVBQUU7UUFDdkMsNkJBQTZCO1FBQzdCLEdBQUc7YUFDQSxnQkFBZ0IsQ0FBQyx3REFBd0QsRUFBRSxVQUFVLENBQUM7YUFDdEYsTUFBTSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQzFFLEdBQUc7YUFDQSxnQkFBZ0IsQ0FBQyw0Q0FBNEMsRUFBRSxVQUFVLENBQUM7YUFDMUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBRTFFLDJCQUEyQjtRQUMzQixHQUFHO2FBQ0EsZ0JBQWdCLENBQUMsb0NBQW9DLEVBQUUsVUFBVSxDQUFDO2FBQ2xFLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FB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QUFnQixDQUFDLDZDQUE2QyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVsQixDQUFDLEdBQUcsRUFBRTtZQUNKLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxvREFBb0QsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbEIsNEJBQTRCO1FBQzVCLENBQUMsR0FBRyxFQUFFO1lBQ0osR0FBRyxDQUFDLGdCQUFnQixDQUFDLHdEQUF3RCxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdGLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVsQixtQkFBbUI7UUFDbkIsQ0FBQyxHQUFHLEVBQUU7WUFDSixHQUFHLENBQUMsZ0JBQWdCLENBQUMsd0RBQXdELEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekYsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxCLG9CQUFvQjtRQUNwQixDQUFDLEdBQUcsRUFBRTtZQUNKLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLXRlc3QnO1xuaW1wb3J0IHsgQmNoIH0gZnJvbSAnLi4vLi4vc3JjL2JjaCc7XG5pbXBvcnQgeyBUYmNoIH0gZnJvbSAnLi4vLi4vc3JjL3RiY2gnO1xuXG5kZXNjcmliZSgnQ3VzdG9tIEJDSCBUZXN0cycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYml0Z286IFRlc3RCaXRHb0FQSSA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gIGJpdGdvLnNhZmVSZWdpc3RlcignYmNoJywgQmNoLmNyZWF0ZUluc3RhbmNlKTtcbiAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0YmNoJywgVGJjaC5jcmVhdGVJbnN0YW5jZSk7XG5cbiAgY29uc3QgYmNoID0gYml0Z28uY29pbignYmNoJykgYXMgQmNoO1xuICBjb25zdCB0YmNoID0gYml0Z28uY29pbigndGJjaCcpIGFzIFRiY2g7XG5cbiAgLy8gd2UgdXNlIG1haW5uZXQgYmNoIHNvIHdlIGNhbiByZXVzZSB0aGUgbWFpbm5ldCBhZGRyZXNzIGV4YW1wbGVzXG4gIGl0KCdzaG91bGQgY29ycmVjdGx5IGNvbnZlcnQgYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIFAyUEtIIGNhc2hhZGRyIC0+IGNhc2hhZGRyXG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbmNhc2g6cXBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dnkyMmdkeDZhJywgJ2Nhc2hhZGRyJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJ2JpdGNvaW5jYXNoOnFwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3Z5MjJnZHg2YScpO1xuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3FwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3Z5MjJnZHg2YScsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpxcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2eTIyZ2R4NmEnKTtcblxuICAgIC8vIFAyUEtIIGJhc2U1OCAtPiBjYXNoYWRkclxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJzFCcEVpNkRmREFVRmQ3R3RpdHRMU2RCZVlKdmNvYVZnZ3UnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYml0Y29pbmNhc2g6cXBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dnkyMmdkeDZhJyk7XG5cbiAgICAvLyBQMlNIIGNhc2hhZGRyIC0+IGNhc2hhZGRyXG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbmNhc2g6cHBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dm4waDgyOXBxJywgJ2Nhc2hhZGRyJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJ2JpdGNvaW5jYXNoOnBwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScpO1xuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3BwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpwcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2bjBoODI5cHEnKTtcblxuICAgIC8vIFAyU0ggYmFzZTU4IC0+IGNhc2hhZGRyXG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnM0NXRmRkaTZtNG5kaUd5S3F6WXZzRllhZ3FETFBWTVR6QycsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpwcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2bjBoODI5cHEnKTtcblxuICAgIC8vIG5vICdiaXRjb2luY2FzaDonIHByZWZpeFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3BwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiaXRjb2luY2FzaDpwcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2bjBoODI5cHEnKTtcblxuICAgIC8vIFAyUEtIIGNhc2hhZGRyIC0+IGJhc2U1OFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ2JpdGNvaW5jYXNoOnFxcTM3Mjh5dzB5NDdzcW42bDJuYTMwbWN3NnptNzhkenFyZTkwOW0ycicsICdiYXNlNTgnKVxuICAgICAgLnNob3VsZC5lcXVhbCgnMTZ3MUQ1V1JWS0p1WlVzU1J6ZExwOXczWUdjZ294RFhiJyk7XG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygncXFxMzcyOHl3MHk0N3NxbjZsMm5hMzBtY3c2em03OGR6cXJlOTA5bTJyJywgJ2Jhc2U1OCcpXG4gICAgICAuc2hvdWxkLmVxdWFsKCcxNncxRDVXUlZLSnVaVXNTUnpkTHA5dzNZR2Nnb3hEWGInKTtcblxuICAgIC8vIFAyUEtIIGJhc2U1OCAtPiBiYXNlNThcbiAgICBiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCcxNncxRDVXUlZLSnVaVXNTUnpkTHA5dzNZR2Nnb3hEWGInLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzE2dzFENVdSVktKdVpVc1NSemRMcDl3M1lHY2dveERYYicpO1xuXG4gICAgLy8gUDJTSCBjYXNoYWRkciAtPiBiYXNlNThcbiAgICBiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDpwcjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnKTtcbiAgICBiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCdwcjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnKTtcblxuICAgIC8vIFAyU0ggYmFzZTU4IC0+IGJhc2U1OFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNMRHNTNTc5eTdzcnVhZHF1MTFiZUVKb1RqZEZpRkNkWDQnKTtcblxuICAgIC8vIHVuZGVmaW5lZCB2ZXJzaW9uIGRlZmF1bHRzIHRvIGJhc2U1OFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ2JpdGNvaW5jYXNoOnBwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3ZuMGg4MjlwcScpXG4gICAgICAuc2hvdWxkLmVxdWFsKCczQ1dGZGRpNm00bmRpR3lLcXpZdnNGWWFncURMUFZNVHpDJyk7XG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygncHBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dm4waDgyOXBxJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzNDV0ZkZGk2bTRuZGlHeUtxell2c0ZZYWdxRExQVk1UekMnKTtcblxuICAgIC8vIGFsbCBjYXBpdGFsaXplZFxuICAgIGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ0JJVENPSU5DQVNIOlFRUTM3MjhZVzBZNDdTUU42TDJOQTMwTUNXNlpNNzhEWlFSRTkwOU0yUicsICdiYXNlNTgnKVxuICAgICAgLnNob3VsZC5lcXVhbCgnMTZ3MUQ1V1JWS0p1WlVzU1J6ZExwOXczWUdjZ294RFhiJyk7XG4gICAgYmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnUVFRMzcyOFlXMFk0N1NRTjZMMk5BMzBNQ1c2Wk03OERaUVJFOTA5TTJSJywgJ2Jhc2U1OCcpXG4gICAgICAuc2hvdWxkLmVxdWFsKCcxNncxRDVXUlZLSnVaVXNTUnpkTHA5dzNZR2Nnb3hEWGInKTtcblxuICAgIC8vIHRlc3RuZXQgYWRkcmVzc2VzXG4gICAgdGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJzJOQ0VEbW1LTk5ucUt2bld3N3BFM1JMenVGZTVhSEhWeTFYJywgJ2Nhc2hhZGRyJylcbiAgICAgIC5zaG91bGQuZXF1YWwoJ2JjaHRlc3Q6cHJncm5qZW5nczU1NWszY2ZmMnMzZ3F4ZzN4eXlyOXV6eWg5anM1bThmJyk7XG4gICAgdGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ24zallCakN6Z0dOeWRRd2Y4M0h6NkdCekdCaE1rS2ZnTDEnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYmNodGVzdDpxcmVtZ3I5ZHI5eDVzd3Y4Mms2OXFkanpydmR4Z2thYWVzZnRkcDV4bGEnKTtcbiAgICB0YmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnKTtcbiAgICB0YmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnLCAnY2FzaGFkZHInKVxuICAgICAgLnNob3VsZC5lcXVhbCgnYmNodGVzdDpwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnKTtcbiAgICB0YmNoXG4gICAgICAuY2Fub25pY2FsQWRkcmVzcygncHJncm5qZW5nczU1NWszY2ZmMnMzZ3F4ZzN4eXlyOXV6eWg5anM1bThmJywgJ2Jhc2U1OCcpXG4gICAgICAuc2hvdWxkLmVxdWFsKCcyTkNFRG1tS05ObnFLdm5XdzdwRTNSTHp1RmU1YUhIVnkxWCcpO1xuICAgIHRiY2hcbiAgICAgIC5jYW5vbmljYWxBZGRyZXNzKCdwcmdybmplbmdzNTU1azNjZmYyczNncXhnM3h5eXI5dXp5aDlqczVtOGYnLCAnYmFzZTU4JylcbiAgICAgIC5zaG91bGQuZXF1YWwoJzJOQ0VEbW1LTk5ucUt2bld3N3BFM1JMenVGZTVhSEhWeTFYJyk7XG4gICAgdGJjaFxuICAgICAgLmNhbm9uaWNhbEFkZHJlc3MoJ3ByZ3JuamVuZ3M1NTVrM2NmZjJzM2dxeGczeHl5cjl1enloOWpzNW04ZicsICdjYXNoYWRkcicpXG4gICAgICAuc2hvdWxkLmVxdWFsKCdiY2h0ZXN0OnByZ3JuamVuZ3M1NTVrM2NmZjJzM2dxeGczeHl5cjl1enloOWpzNW04ZicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIGFkZHJlc3NlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBpbXByb3Blcmx5IHNob3J0IGRhdGEgc2VnbWVudFxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbmNhc2g6c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBtaXNtYXRjaGVkIGRhdGEgc2VnbWVudCAoY2FzaGFkZHIpXG4gICAgKCgpID0+IHtcbiAgICAgIGJjaC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDp5cjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBkb3VibGUgcHJlZml4XG4gICAgKCgpID0+IHtcbiAgICAgIGJjaC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDpiaXRjb2luY2FzaDpwcjk1c3kzajl4d2QyYXAzMnhreWt0dHI0Y3ZjdTdhczR5Yzkza3kyOGUnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBtaXNtYXRjaGVkIGRhdGEgc2VnbWVudCAoYmFzZTU4KVxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnM0REc1M1Nzl5N3NydWFkcXUxMWJlRUpvVGpkRmlGQ2RYNCcsICdiYXNlNTgnKTtcbiAgICB9KS5zaG91bGQudGhyb3coKTtcblxuICAgIC8vIGltcHJvcGVyIHByZWZpeFxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnOnFwbTJxc3puaGtzMjN6NzYyOW1tczZzNGN3ZWY3NHZjd3Z5MjJnZHg2YScsICdiYXNlNTgnKTtcbiAgICB9KS5zaG91bGQudGhyb3coKTtcblxuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcygnYml0Y29pbjpxcG0ycXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2eTIyZ2R4NmEnLCAnYmFzZTU4Jyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyBtaXNtYXRjaGVkIGNhcGl0YWxpemF0aW9uXG4gICAgKCgpID0+IHtcbiAgICAgIGJjaC5jYW5vbmljYWxBZGRyZXNzKCdiaXRjb2luY2FzaDpRUE0yUXN6bmhrczIzejc2MjltbXM2czRjd2VmNzR2Y3d2eTIyZ2R4NmEnLCAnY2FzaGFkZHInKTtcbiAgICB9KS5zaG91bGQudGhyb3coKTtcblxuICAgIC8vIGltcHJvcGVyIHZlcnNpb25cbiAgICAoKCkgPT4ge1xuICAgICAgYmNoLmNhbm9uaWNhbEFkZHJlc3MoJ2JpdGNvaW5jYXNoOnFxcTM3Mjh5dzB5NDdzcW42bDJuYTMwbWN3NnptNzhkenFyZTkwOW0ycicsICdibGFoJyk7XG4gICAgfSkuc2hvdWxkLnRocm93KCk7XG5cbiAgICAvLyB1bmRlZmluZWQgYWRkcmVzc1xuICAgICgoKSA9PiB7XG4gICAgICBiY2guY2Fub25pY2FsQWRkcmVzcyh1bmRlZmluZWQgYXMgYW55LCAnYmxhaCcpO1xuICAgIH0pLnNob3VsZC50aHJvdygpO1xuICB9KTtcbn0pO1xuIl19