@bitgo-beta/abstract-utxo 1.6.1-alpha.244 → 1.6.1-alpha.245
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 +6 -0
- package/dist/src/core/descriptor/DescriptorMap.d.ts +1 -1
- package/dist/src/core/descriptor/DescriptorMap.d.ts.map +1 -1
- package/dist/src/core/descriptor/DescriptorMap.js +5 -2
- package/dist/src/descriptor/NamedDescriptor.d.ts +14 -3
- package/dist/src/descriptor/NamedDescriptor.d.ts.map +1 -1
- package/dist/src/descriptor/NamedDescriptor.js +35 -5
- package/dist/src/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
- package/dist/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
- package/dist/src/descriptor/createWallet/createDescriptorWallet.js +74 -0
- package/dist/src/descriptor/createWallet/createDescriptors.d.ts +12 -0
- package/dist/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
- package/dist/src/descriptor/createWallet/createDescriptors.js +31 -0
- package/dist/src/descriptor/createWallet/index.d.ts +3 -0
- package/dist/src/descriptor/createWallet/index.d.ts.map +1 -0
- package/dist/src/descriptor/createWallet/index.js +19 -0
- package/dist/src/descriptor/index.d.ts +1 -0
- package/dist/src/descriptor/index.d.ts.map +1 -1
- package/dist/src/descriptor/index.js +36 -2
- package/dist/src/descriptor/validatePolicy.d.ts +14 -5
- package/dist/src/descriptor/validatePolicy.d.ts.map +1 -1
- package/dist/src/descriptor/validatePolicy.js +71 -28
- package/dist/test/descriptor/NamedDescriptor.d.ts +2 -0
- package/dist/test/descriptor/NamedDescriptor.d.ts.map +1 -0
- package/dist/test/descriptor/NamedDescriptor.js +19 -0
- package/dist/test/descriptor/createWallet/createDescriptors.d.ts +2 -0
- package/dist/test/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
- package/dist/test/descriptor/createWallet/createDescriptors.js +21 -0
- package/dist/test/descriptor/descriptorWallet.js +3 -2
- package/dist/test/transaction/descriptor/validatePolicy.d.ts +2 -0
- package/dist/test/transaction/descriptor/validatePolicy.d.ts.map +1 -0
- package/dist/test/transaction/descriptor/validatePolicy.js +40 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDescriptors.d.ts","sourceRoot":"","sources":["../../../../test/descriptor/createWallet/createDescriptors.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const key_utils_1 = require("../../core/key.utils");
|
|
8
|
+
const NamedDescriptor_1 = require("../../../src/descriptor/NamedDescriptor");
|
|
9
|
+
const createWallet_1 = require("../../../src/descriptor/createWallet");
|
|
10
|
+
const fixtures_utils_1 = require("../../core/fixtures.utils");
|
|
11
|
+
describe('createDescriptors', function () {
|
|
12
|
+
it('should create standard named descriptors', async function () {
|
|
13
|
+
const keys = (0, key_utils_1.getKeyTriple)();
|
|
14
|
+
const namedDescriptors = (0, createWallet_1.DefaultWsh2Of3)(keys[0], keys.slice(1));
|
|
15
|
+
assert_1.default.deepStrictEqual(namedDescriptors, await (0, fixtures_utils_1.getFixture)(__dirname + '/fixtures/DefaultWsh2Of3.json', namedDescriptors));
|
|
16
|
+
for (const namedDescriptor of namedDescriptors) {
|
|
17
|
+
(0, NamedDescriptor_1.assertHasValidSignature)(namedDescriptor, keys[0]);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L2Rlc2NyaXB0b3IvY3JlYXRlV2FsbGV0L2NyZWF0ZURlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLG9EQUFvRDtBQUNwRCw2RUFBa0Y7QUFDbEYsdUVBQXNFO0FBQ3RFLDhEQUF1RDtBQUV2RCxRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEtBQUs7UUFDbEQsTUFBTSxJQUFJLEdBQUcsSUFBQSx3QkFBWSxHQUFFLENBQUM7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDZCQUFjLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxnQkFBTSxDQUFDLGVBQWUsQ0FDcEIsZ0JBQWdCLEVBQ2hCLE1BQU0sSUFBQSwyQkFBVSxFQUFDLFNBQVMsR0FBRywrQkFBK0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUNoRixDQUFDO1FBQ0YsS0FBSyxNQUFNLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9DLElBQUEseUNBQXVCLEVBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBnZXRLZXlUcmlwbGUgfSBmcm9tICcuLi8uLi9jb3JlL2tleS51dGlscyc7XG5pbXBvcnQgeyBhc3NlcnRIYXNWYWxpZFNpZ25hdHVyZSB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL05hbWVkRGVzY3JpcHRvcic7XG5pbXBvcnQgeyBEZWZhdWx0V3NoMk9mMyB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL2NyZWF0ZVdhbGxldCc7XG5pbXBvcnQgeyBnZXRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vY29yZS9maXh0dXJlcy51dGlscyc7XG5cbmRlc2NyaWJlKCdjcmVhdGVEZXNjcmlwdG9ycycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCBjcmVhdGUgc3RhbmRhcmQgbmFtZWQgZGVzY3JpcHRvcnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qga2V5cyA9IGdldEtleVRyaXBsZSgpO1xuICAgIGNvbnN0IG5hbWVkRGVzY3JpcHRvcnMgPSBEZWZhdWx0V3NoMk9mMyhrZXlzWzBdLCBrZXlzLnNsaWNlKDEpKTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKFxuICAgICAgbmFtZWREZXNjcmlwdG9ycyxcbiAgICAgIGF3YWl0IGdldEZpeHR1cmUoX19kaXJuYW1lICsgJy9maXh0dXJlcy9EZWZhdWx0V3NoMk9mMy5qc29uJywgbmFtZWREZXNjcmlwdG9ycylcbiAgICApO1xuICAgIGZvciAoY29uc3QgbmFtZWREZXNjcmlwdG9yIG9mIG5hbWVkRGVzY3JpcHRvcnMpIHtcbiAgICAgIGFzc2VydEhhc1ZhbGlkU2lnbmF0dXJlKG5hbWVkRGVzY3JpcHRvciwga2V5c1swXSk7XG4gICAgfVxuICB9KTtcbn0pO1xuIl19
|
|
@@ -7,6 +7,7 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
7
7
|
const descriptor_1 = require("../../src/descriptor");
|
|
8
8
|
const descriptor_utils_1 = require("../core/descriptor/descriptor.utils");
|
|
9
9
|
const keychains_1 = require("../../src/keychains");
|
|
10
|
+
const validatePolicy_1 = require("../../src/descriptor/validatePolicy");
|
|
10
11
|
describe('isDescriptorWalletData', function () {
|
|
11
12
|
const descriptorMap = (0, descriptor_utils_1.getDescriptorMap)('Wsh2Of3');
|
|
12
13
|
it('should return true for valid DescriptorWalletData', function () {
|
|
@@ -21,7 +22,7 @@ describe('isDescriptorWalletData', function () {
|
|
|
21
22
|
},
|
|
22
23
|
};
|
|
23
24
|
(0, assert_1.default)((0, descriptor_1.isDescriptorWallet)(wallet));
|
|
24
|
-
assert_1.default.strictEqual((0, descriptor_1.getDescriptorMapFromWallet)(wallet, (0, keychains_1.toBip32Triple)((0, descriptor_utils_1.getDefaultXPubs)()),
|
|
25
|
+
assert_1.default.strictEqual((0, descriptor_1.getDescriptorMapFromWallet)(wallet, (0, keychains_1.toBip32Triple)((0, descriptor_utils_1.getDefaultXPubs)()), validatePolicy_1.policyAllowAll).size, descriptorMap.size);
|
|
25
26
|
});
|
|
26
27
|
});
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcldhbGxldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvZGVzY3JpcHRvci9kZXNjcmlwdG9yV2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLHFEQUFzRjtBQUV0RiwwRUFBd0Y7QUFDeEYsbURBQW9EO0FBQ3BELHdFQUFxRTtBQUVyRSxRQUFRLENBQUMsd0JBQXdCLEVBQUU7SUFDakMsTUFBTSxhQUFhLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxFQUFFLENBQUMsbURBQW1ELEVBQUU7UUFDdEQsTUFBTSxNQUFNLEdBQWU7WUFDekIsWUFBWTtnQkFDVixPQUFPO29CQUNMLFdBQVcsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3JFLElBQUk7d0JBQ0osS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUU7cUJBQzdCLENBQUMsQ0FBQztpQkFDSixDQUFDO1lBQ0osQ0FBQztTQUN1QixDQUFDO1FBRTNCLElBQUEsZ0JBQU0sRUFBQyxJQUFBLCtCQUFrQixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbkMsZ0JBQU0sQ0FBQyxXQUFXLENBQ2hCLElBQUEsdUNBQTBCLEVBQUMsTUFBTSxFQUFFLElBQUEseUJBQWEsRUFBQyxJQUFBLGtDQUFlLEdBQUUsQ0FBQyxFQUFFLCtCQUFjLENBQUMsQ0FBQyxJQUFJLEVBQ3pGLGFBQWEsQ0FBQyxJQUFJLENBQ25CLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBnZXREZXNjcmlwdG9yTWFwRnJvbVdhbGxldCwgaXNEZXNjcmlwdG9yV2FsbGV0IH0gZnJvbSAnLi4vLi4vc3JjL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgVXR4b1dhbGxldCB9IGZyb20gJy4uLy4uL3NyYy93YWxsZXQnO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdFhQdWJzLCBnZXREZXNjcmlwdG9yTWFwIH0gZnJvbSAnLi4vY29yZS9kZXNjcmlwdG9yL2Rlc2NyaXB0b3IudXRpbHMnO1xuaW1wb3J0IHsgdG9CaXAzMlRyaXBsZSB9IGZyb20gJy4uLy4uL3NyYy9rZXljaGFpbnMnO1xuaW1wb3J0IHsgcG9saWN5QWxsb3dBbGwgfSBmcm9tICcuLi8uLi9zcmMvZGVzY3JpcHRvci92YWxpZGF0ZVBvbGljeSc7XG5cbmRlc2NyaWJlKCdpc0Rlc2NyaXB0b3JXYWxsZXREYXRhJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBkZXNjcmlwdG9yTWFwID0gZ2V0RGVzY3JpcHRvck1hcCgnV3NoMk9mMycpO1xuICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIGZvciB2YWxpZCBEZXNjcmlwdG9yV2FsbGV0RGF0YScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB3YWxsZXQ6IFV0eG9XYWxsZXQgPSB7XG4gICAgICBjb2luU3BlY2lmaWMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGVzY3JpcHRvcnM6IFsuLi5kZXNjcmlwdG9yTWFwLmVudHJpZXMoKV0ubWFwKChbbmFtZSwgZGVzY3JpcHRvcl0pID0+ICh7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdmFsdWU6IGRlc2NyaXB0b3IudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0gYXMgdW5rbm93biBhcyBVdHhvV2FsbGV0O1xuXG4gICAgYXNzZXJ0KGlzRGVzY3JpcHRvcldhbGxldCh3YWxsZXQpKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICBnZXREZXNjcmlwdG9yTWFwRnJvbVdhbGxldCh3YWxsZXQsIHRvQmlwMzJUcmlwbGUoZ2V0RGVmYXVsdFhQdWJzKCkpLCBwb2xpY3lBbGxvd0FsbCkuc2l6ZSxcbiAgICAgIGRlc2NyaXB0b3JNYXAuc2l6ZVxuICAgICk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatePolicy.d.ts","sourceRoot":"","sources":["../../../../test/transaction/descriptor/validatePolicy.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
|
|
8
|
+
const validatePolicy_1 = require("../../../src/descriptor/validatePolicy");
|
|
9
|
+
const descriptor_utils_1 = require("../../core/descriptor/descriptor.utils");
|
|
10
|
+
const key_utils_1 = require("../../core/key.utils");
|
|
11
|
+
const NamedDescriptor_1 = require("../../../src/descriptor/NamedDescriptor");
|
|
12
|
+
function testAssertDescriptorPolicy(d, p, k, expectedError) {
|
|
13
|
+
const f = () => (0, validatePolicy_1.assertDescriptorPolicy)(wasm_miniscript_1.Descriptor.fromString(d.value, 'derivable'), p, k, d.signatures ?? []);
|
|
14
|
+
if (expectedError) {
|
|
15
|
+
assert_1.default.throws(f);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
assert_1.default.doesNotThrow(f);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
describe('assertDescriptorPolicy', function () {
|
|
22
|
+
const keys = (0, key_utils_1.getKeyTriple)();
|
|
23
|
+
function getNamedDescriptor(name) {
|
|
24
|
+
return (0, NamedDescriptor_1.createNamedDescriptorWithSignature)(name, (0, descriptor_utils_1.getDescriptor)(name), keys[0]);
|
|
25
|
+
}
|
|
26
|
+
function stripSignature(d) {
|
|
27
|
+
return { ...d, signatures: undefined };
|
|
28
|
+
}
|
|
29
|
+
it('has expected result', function () {
|
|
30
|
+
testAssertDescriptorPolicy(getNamedDescriptor('Wsh2Of3'), (0, validatePolicy_1.getValidatorDescriptorTemplate)('Wsh2Of3'), keys, null);
|
|
31
|
+
// prod does only allow Wsh2Of3-ish descriptors
|
|
32
|
+
testAssertDescriptorPolicy(getNamedDescriptor('Wsh2Of3'), (0, validatePolicy_1.getPolicyForEnv)('prod'), keys, null);
|
|
33
|
+
// prod only allows other descriptors if they are signed by the user key
|
|
34
|
+
testAssertDescriptorPolicy(getNamedDescriptor('Wsh2Of2'), (0, validatePolicy_1.getPolicyForEnv)('prod'), keys, null);
|
|
35
|
+
testAssertDescriptorPolicy(stripSignature(getNamedDescriptor('Wsh2Of2')), (0, validatePolicy_1.getPolicyForEnv)('prod'), keys, new validatePolicy_1.DescriptorPolicyValidationError((0, descriptor_utils_1.getDescriptor)('Wsh2Of2'), (0, validatePolicy_1.getPolicyForEnv)('prod')));
|
|
36
|
+
// test is very permissive by default
|
|
37
|
+
testAssertDescriptorPolicy(stripSignature(getNamedDescriptor('Wsh2Of2')), (0, validatePolicy_1.getPolicyForEnv)('test'), keys, null);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvdmFsaWRhdGVQb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsNERBQW9EO0FBSXBELDJFQU1nRDtBQUNoRCw2RUFBMkY7QUFDM0Ysb0RBQW9EO0FBRXBELDZFQUE2RjtBQUU3RixTQUFTLDBCQUEwQixDQUNqQyxDQUEwQixFQUMxQixDQUE2QixFQUM3QixDQUF5QixFQUN6QixhQUFxRDtJQUVyRCxNQUFNLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFBLHVDQUFzQixFQUFDLDRCQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztTQUFNLENBQUM7UUFDTixnQkFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0FBQ0gsQ0FBQztBQUVELFFBQVEsQ0FBQyx3QkFBd0IsRUFBRTtJQUNqQyxNQUFNLElBQUksR0FBRyxJQUFBLHdCQUFZLEdBQUUsQ0FBQztJQUM1QixTQUFTLGtCQUFrQixDQUFDLElBQXdCO1FBQ2xELE9BQU8sSUFBQSxvREFBa0MsRUFBQyxJQUFJLEVBQUUsSUFBQSxnQ0FBYSxFQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFDRCxTQUFTLGNBQWMsQ0FBQyxDQUFrQjtRQUN4QyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxFQUFFLENBQUMscUJBQXFCLEVBQUU7UUFDeEIsMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBQSwrQ0FBOEIsRUFBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFakgsK0NBQStDO1FBQy9DLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUEsZ0NBQWUsRUFBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFL0Ysd0VBQXdFO1FBQ3hFLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUEsZ0NBQWUsRUFBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0YsMEJBQTBCLENBQ3hCLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUM3QyxJQUFBLGdDQUFlLEVBQUMsTUFBTSxDQUFDLEVBQ3ZCLElBQUksRUFDSixJQUFJLGdEQUErQixDQUFDLElBQUEsZ0NBQWEsRUFBQyxTQUFTLENBQUMsRUFBRSxJQUFBLGdDQUFlLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FDdkYsQ0FBQztRQUVGLHFDQUFxQztRQUNyQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFBLGdDQUFlLEVBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQge1xuICBhc3NlcnREZXNjcmlwdG9yUG9saWN5LFxuICBEZXNjcmlwdG9yUG9saWN5VmFsaWRhdGlvbkVycm9yLFxuICBEZXNjcmlwdG9yVmFsaWRhdGlvblBvbGljeSxcbiAgZ2V0UG9saWN5Rm9yRW52LFxuICBnZXRWYWxpZGF0b3JEZXNjcmlwdG9yVGVtcGxhdGUsXG59IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3ZhbGlkYXRlUG9saWN5JztcbmltcG9ydCB7IERlc2NyaXB0b3JUZW1wbGF0ZSwgZ2V0RGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL2NvcmUvZGVzY3JpcHRvci9kZXNjcmlwdG9yLnV0aWxzJztcbmltcG9ydCB7IGdldEtleVRyaXBsZSB9IGZyb20gJy4uLy4uL2NvcmUva2V5LnV0aWxzJztcbmltcG9ydCB7IE5hbWVkRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yJztcbmltcG9ydCB7IGNyZWF0ZU5hbWVkRGVzY3JpcHRvcldpdGhTaWduYXR1cmUgfSBmcm9tICcuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9OYW1lZERlc2NyaXB0b3InO1xuXG5mdW5jdGlvbiB0ZXN0QXNzZXJ0RGVzY3JpcHRvclBvbGljeShcbiAgZDogTmFtZWREZXNjcmlwdG9yPHN0cmluZz4sXG4gIHA6IERlc2NyaXB0b3JWYWxpZGF0aW9uUG9saWN5LFxuICBrOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LFxuICBleHBlY3RlZEVycm9yOiBEZXNjcmlwdG9yUG9saWN5VmFsaWRhdGlvbkVycm9yIHwgbnVsbFxuKSB7XG4gIGNvbnN0IGYgPSAoKSA9PiBhc3NlcnREZXNjcmlwdG9yUG9saWN5KERlc2NyaXB0b3IuZnJvbVN0cmluZyhkLnZhbHVlLCAnZGVyaXZhYmxlJyksIHAsIGssIGQuc2lnbmF0dXJlcyA/PyBbXSk7XG4gIGlmIChleHBlY3RlZEVycm9yKSB7XG4gICAgYXNzZXJ0LnRocm93cyhmKTtcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnQuZG9lc05vdFRocm93KGYpO1xuICB9XG59XG5cbmRlc2NyaWJlKCdhc3NlcnREZXNjcmlwdG9yUG9saWN5JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBrZXlzID0gZ2V0S2V5VHJpcGxlKCk7XG4gIGZ1bmN0aW9uIGdldE5hbWVkRGVzY3JpcHRvcihuYW1lOiBEZXNjcmlwdG9yVGVtcGxhdGUpOiBOYW1lZERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBjcmVhdGVOYW1lZERlc2NyaXB0b3JXaXRoU2lnbmF0dXJlKG5hbWUsIGdldERlc2NyaXB0b3IobmFtZSksIGtleXNbMF0pO1xuICB9XG4gIGZ1bmN0aW9uIHN0cmlwU2lnbmF0dXJlKGQ6IE5hbWVkRGVzY3JpcHRvcik6IE5hbWVkRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIHsgLi4uZCwgc2lnbmF0dXJlczogdW5kZWZpbmVkIH07XG4gIH1cblxuICBpdCgnaGFzIGV4cGVjdGVkIHJlc3VsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICB0ZXN0QXNzZXJ0RGVzY3JpcHRvclBvbGljeShnZXROYW1lZERlc2NyaXB0b3IoJ1dzaDJPZjMnKSwgZ2V0VmFsaWRhdG9yRGVzY3JpcHRvclRlbXBsYXRlKCdXc2gyT2YzJyksIGtleXMsIG51bGwpO1xuXG4gICAgLy8gcHJvZCBkb2VzIG9ubHkgYWxsb3cgV3NoMk9mMy1pc2ggZGVzY3JpcHRvcnNcbiAgICB0ZXN0QXNzZXJ0RGVzY3JpcHRvclBvbGljeShnZXROYW1lZERlc2NyaXB0b3IoJ1dzaDJPZjMnKSwgZ2V0UG9saWN5Rm9yRW52KCdwcm9kJyksIGtleXMsIG51bGwpO1xuXG4gICAgLy8gcHJvZCBvbmx5IGFsbG93cyBvdGhlciBkZXNjcmlwdG9ycyBpZiB0aGV5IGFyZSBzaWduZWQgYnkgdGhlIHVzZXIga2V5XG4gICAgdGVzdEFzc2VydERlc2NyaXB0b3JQb2xpY3koZ2V0TmFtZWREZXNjcmlwdG9yKCdXc2gyT2YyJyksIGdldFBvbGljeUZvckVudigncHJvZCcpLCBrZXlzLCBudWxsKTtcbiAgICB0ZXN0QXNzZXJ0RGVzY3JpcHRvclBvbGljeShcbiAgICAgIHN0cmlwU2lnbmF0dXJlKGdldE5hbWVkRGVzY3JpcHRvcignV3NoMk9mMicpKSxcbiAgICAgIGdldFBvbGljeUZvckVudigncHJvZCcpLFxuICAgICAga2V5cyxcbiAgICAgIG5ldyBEZXNjcmlwdG9yUG9saWN5VmFsaWRhdGlvbkVycm9yKGdldERlc2NyaXB0b3IoJ1dzaDJPZjInKSwgZ2V0UG9saWN5Rm9yRW52KCdwcm9kJykpXG4gICAgKTtcblxuICAgIC8vIHRlc3QgaXMgdmVyeSBwZXJtaXNzaXZlIGJ5IGRlZmF1bHRcbiAgICB0ZXN0QXNzZXJ0RGVzY3JpcHRvclBvbGljeShzdHJpcFNpZ25hdHVyZShnZXROYW1lZERlc2NyaXB0b3IoJ1dzaDJPZjInKSksIGdldFBvbGljeUZvckVudigndGVzdCcpLCBrZXlzLCBudWxsKTtcbiAgfSk7XG59KTtcbiJdfQ==
|