@bitgo-beta/utxo-staking 1.1.1-beta.281 → 1.1.1-beta.283
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegationMessage.d.ts","sourceRoot":"","sources":["../../../src/babylon/delegationMessage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delegationMessage.d.ts","sourceRoot":"","sources":["../../../src/babylon/delegationMessage.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,2CAA2C,CAAC;AACpE,OAAO,KAAK,eAAe,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAE,kBAAkB,EAAsB,MAAM,WAAW,CAAC;AAEnE,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAEhE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,CAAC,IAAI,EACvB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,EAClC,EAAE,QAAgB,EAAE;;CAAA,GACnB,YAAY,CAAC,IAAI,CAmBnB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,YAAY,CAAC,IAAI,CAKhG;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,wBAAwB,EAC3C,SAAS,EAAE,OAAO,CAAC,eAAe,GACjC,MAAM,CAAC,WAAW,CAyEpB;AACD,KAAK,MAAM,GAAG;IACZ,qBAAqB,EAAE,gBAAgB,CAAC,eAAe,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;IAC7F,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,OAAO,CAAC,eAAe,GAAG,MAAM,GAAG,MAAM,EACrD,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,UAAU,CAWnB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,CAAC,UAAU,EAChC,YAAY,EAAE,MAAM,CAAC,aAAa,EAClC,eAAe,GAAE,MAAM,CAAC,sBAAsB,EAA8B,GAC3E,MAAM,CAAC,OAAO,CAehB;AAED,KAAK,eAAe,GAChB,YAAY,CAAC,IAAI,GACjB,YAAY,CAAC,WAAW,GACxB,OAAO,CAAC,WAAW,GACnB,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,GAC9C,OAAO,CAAC,IAAI,GACZ,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;AAe3B,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,eAAe,GAAG,YAAY,CAAC,WAAW,CAKlF;AAQD,wBAAsB,sCAAsC,CAC1D,OAAO,EAAE,MAAM,CAAC,wBAAwB,EACxC,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,eAAe,EAC5B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAiBhF;AAED,wBAAsB,mEAAmE,CACvF,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,OAAO,EAAE,YAAY,CAAC,OAAO,EAC7B,aAAa,EAAE,MAAM,CAAC,UAAU,EAChC,YAAY,EAAE,MAAM,CAAC,aAAa,EAClC,mBAAmB,EAAE,MAAM,EAC3B,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,EACzB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,aAAa,GAAE,MAAM,CAAC,sBAAsB,EAA8B,GACzE,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
|
|
@@ -48,6 +48,7 @@ exports.createUnsignedPreStakeRegistrationBabylonTransactionWithBtcProvider = cr
|
|
|
48
48
|
* https://github.com/babylonlabs-io/babylon/blob/v1.99.0-snapshot.250211/x/btcstaking/types/validate_parsed_message.go
|
|
49
49
|
*/
|
|
50
50
|
const assert_1 = __importDefault(require("assert"));
|
|
51
|
+
const bip322_js_1 = require("bip322-js");
|
|
51
52
|
const vendor = __importStar(require("@bitgo-beta/babylonlabs-io-btc-staking-ts"));
|
|
52
53
|
const bitcoinjslib = __importStar(require("bitcoinjs-lib"));
|
|
53
54
|
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
@@ -95,12 +96,41 @@ function getBtcProviderForECKey(descriptorBuilder, stakerKey) {
|
|
|
95
96
|
psbt.finalizeAllInputs();
|
|
96
97
|
return psbt;
|
|
97
98
|
}
|
|
99
|
+
function signBip322Simple(message) {
|
|
100
|
+
// Get the script public key from the staking descriptor
|
|
101
|
+
const scriptPubKey = Buffer.from(descriptorBuilder.getStakingDescriptor().scriptPubkey());
|
|
102
|
+
const toSpendTx = bip322_js_1.BIP322.buildToSpendTx(message, scriptPubKey);
|
|
103
|
+
// Get the to_spend txid
|
|
104
|
+
const toSpendTxId = toSpendTx.getId();
|
|
105
|
+
// Create PSBT object for constructing the transaction
|
|
106
|
+
const toSignPsbt = new bitcoinjslib.Psbt();
|
|
107
|
+
toSignPsbt.setVersion(2); // nVersion = 0
|
|
108
|
+
toSignPsbt.setLocktime(0); // nLockTime = 0
|
|
109
|
+
toSignPsbt.addInput({
|
|
110
|
+
hash: toSpendTxId,
|
|
111
|
+
index: 0,
|
|
112
|
+
sequence: descriptorBuilder.stakingTimeLock,
|
|
113
|
+
witnessUtxo: {
|
|
114
|
+
script: scriptPubKey,
|
|
115
|
+
value: 0,
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
// Sign the PSBT with the staker key
|
|
119
|
+
const wrappedPsbt = (0, descriptor_1.toWrappedPsbt)(toSignPsbt.toBuffer());
|
|
120
|
+
wrappedPsbt.updateInputWithDescriptor(0, descriptorBuilder.getStakingDescriptor());
|
|
121
|
+
(0, descriptor_1.signWithKey)(wrappedPsbt, stakerKey);
|
|
122
|
+
wrappedPsbt.finalize();
|
|
123
|
+
// Encode the witness data and return
|
|
124
|
+
return bip322_js_1.BIP322.encodeWitness(bitcoinjslib.Psbt.fromBuffer(Buffer.from(wrappedPsbt.serialize())));
|
|
125
|
+
}
|
|
98
126
|
return {
|
|
99
127
|
async signMessage(signingStep, message, type) {
|
|
100
|
-
(0, assert_1.default)(
|
|
101
|
-
switch (
|
|
102
|
-
case '
|
|
128
|
+
(0, assert_1.default)(signingStep === 'proof-of-possession');
|
|
129
|
+
switch (type) {
|
|
130
|
+
case 'ecdsa':
|
|
103
131
|
return stakerKey.sign(Buffer.from(message, 'hex')).toString('hex');
|
|
132
|
+
case 'bip322-simple':
|
|
133
|
+
return signBip322Simple(message);
|
|
104
134
|
default:
|
|
105
135
|
throw new Error(`unexpected signing step: ${signingStep}`);
|
|
106
136
|
}
|
|
@@ -186,4 +216,4 @@ async function createUnsignedPreStakeRegistrationBabylonTransactionWithBtcProvid
|
|
|
186
216
|
const unsignedDelegationMsg = await createDelegationMessageWithTransaction(manager, staking, stakingInput.stakingAmountSat, transaction, babylonAddress);
|
|
187
217
|
return { unsignedDelegationMsg, stakingTx: transaction };
|
|
188
218
|
}
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGlvbk1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFieWxvbi9kZWxlZ2F0aW9uTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxzQ0F3QkM7QUFRRCw4Q0FLQztBQUVELHdEQXFDQztBQVdELG9DQWNDO0FBRUQsc0NBcUJDO0FBdUJELG9EQUtDO0FBUUQsd0ZBdUJDO0FBRUQsa0pBMEJDO0FBdk9EOztHQUVHO0FBQ0gsb0RBQTRCO0FBRTVCLGtGQUFvRTtBQUVwRSw0REFBOEM7QUFDOUMsOERBQWdEO0FBRWhELHFEQUF5RDtBQUN6RCxpRUFBaUU7QUFHakUscURBQXdEO0FBQ3hELG1EQUFtRDtBQUNuRCx1Q0FBbUU7QUFJbkUsU0FBZ0IsYUFBYSxDQUMzQixJQUF1QixFQUN2QixVQUFzQixFQUN0QixPQUFrQyxFQUNsQyxFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUU7SUFFcEIsTUFBTSxXQUFXLEdBQUcsSUFBQSwwQkFBYSxFQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN6RCxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVFLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDckQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN6QyxJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMxQixPQUFPLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFBLGdCQUFNLEVBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxNQUFjLEVBQUUsT0FBMkI7SUFDM0UsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUEsNEJBQWtCLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVGLHFEQUFxRDtJQUNyRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN6QixPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FDcEMsaUJBQTJDLEVBQzNDLFNBQWtDO0lBRWxDLFNBQVMsa0JBQWtCLENBQ3pCLElBQXVCLEVBQ3ZCLFVBQXNCLEVBQ3RCLEdBQTRCO1FBRTVCLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkUsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU87UUFDTCxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQStCLEVBQUUsT0FBZSxFQUFFLElBQWE7WUFDL0UsSUFBQSxnQkFBTSxFQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztZQUN6QixRQUFRLFdBQVcsRUFBRSxDQUFDO2dCQUNwQixLQUFLLHFCQUFxQjtvQkFDeEIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyRTtvQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDO1FBQ0QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUErQixFQUFFLE9BQWU7WUFDN0QsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEQsUUFBUSxXQUFXLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxrQkFBa0I7b0JBQ3JCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLG9CQUFvQixFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQy9GLEtBQUssb0JBQW9CO29CQUN2QixPQUFPLGtCQUFrQixDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqRztvQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFPRDs7O0dBR0c7QUFDSCxTQUFnQixZQUFZLENBQzFCLFVBQXFELEVBQ3JELGFBQXFCO0lBRXJCLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxJQUFJLFdBQVcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoRSxVQUFVLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU87UUFDTCxtQkFBbUIsRUFBRSxJQUFBLDRCQUFnQixFQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDakUsT0FBTyxFQUFFLGFBQWE7S0FDdkIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQzNCLE9BQTJCLEVBQzNCLFdBQW1CLEVBQ25CLGFBQWdDLEVBQ2hDLFlBQWtDLEVBQ2xDLGtCQUFtRCxJQUFBLGdDQUFnQixFQUFDLE9BQU8sQ0FBQztJQUU1RSxJQUFJLFdBQVcsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBRS9FLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUN2QixJQUFBLDRCQUFrQixFQUFDLE9BQU8sQ0FBQyxFQUMzQixhQUFhLEVBQ2IsTUFBTSxFQUNOLFlBQVksQ0FBQyw0QkFBNEIsRUFDekMsWUFBWSxDQUFDLGVBQWUsQ0FDN0IsQ0FBQztBQUNKLENBQUM7QUFVRCxTQUFTLDRCQUE0QixDQUNuQyxJQUErRDtJQUUvRCxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzlDLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFDRCxJQUFJLElBQUksWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNDLDJEQUEyRDtRQUMzRCxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxFQUFtQjtJQUN0RCxJQUFJLEVBQUUsWUFBWSxZQUFZLENBQUMsSUFBSSxJQUFJLEVBQUUsWUFBWSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEUsT0FBTyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsc0NBQXNDLENBQzFELE9BQXdDLEVBQ3hDLE9BQXVCLEVBQ3ZCLGdCQUF3QixFQUN4QixXQUE0QixFQUM1QixjQUFzQjtJQUV0QixJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCw4REFBOEQ7SUFDOUQsT0FBTyxPQUFPLENBQUMsc0JBQXNCLENBQ25DLE9BQU8sRUFDUDtRQUNFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtRQUN4Qyw0QkFBNEIsRUFBRSxPQUFPLENBQUMsNEJBQTRCO1FBQ2xFLGdCQUFnQjtLQUNqQixFQUNELG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxFQUNqQyxjQUFjLEVBQ2QsT0FBTyxDQUFDLFVBQVUsRUFDbEIsT0FBTyxDQUFDLE1BQU0sQ0FDZixDQUFDO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxtRUFBbUUsQ0FDdkYsV0FBK0IsRUFDL0IsT0FBNkIsRUFDN0IsYUFBZ0MsRUFDaEMsWUFBa0MsRUFDbEMsbUJBQTJCLEVBQzNCLFVBQXlCLEVBQ3pCLFdBQW1CLEVBQ25CLGNBQXNCLEVBQ3RCLGdCQUFpRCxJQUFBLGdDQUFnQixFQUFDLE9BQU8sQ0FBQztJQUUxRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFBLHFDQUFvQixFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDMUUsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3hHLHNDQUFzQztJQUN0QyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakgsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLHNDQUFzQyxDQUN4RSxPQUFPLEVBQ1AsT0FBTyxFQUNQLFlBQVksQ0FBQyxnQkFBZ0IsRUFDN0IsV0FBVyxFQUNYLGNBQWMsQ0FDZixDQUFDO0lBQ0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmxhYnMtaW8vYmFieWxvbi9ibG9iL3YxLjk5LjAtc25hcHNob3QuMjUwMjExL3gvYnRjc3Rha2luZy90eXBlcy92YWxpZGF0ZV9wYXJzZWRfbWVzc2FnZS5nb1xuICovXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHZlbmRvciBmcm9tICdAYml0Z28tYmV0YS9iYWJ5bG9ubGFicy1pby1idGMtc3Rha2luZy10cyc7XG5pbXBvcnQgKiBhcyBiYWJ5bG9uUHJvdG9idWYgZnJvbSAnQGJhYnlsb25sYWJzLWlvL2JhYnlsb24tcHJvdG8tdHMnO1xuaW1wb3J0ICogYXMgYml0Y29pbmpzbGliIGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5pbXBvcnQgeyB0b1hPbmx5UHVibGljS2V5IH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1jb3JlJztcbmltcG9ydCB7IHRvV3JhcHBlZFBzYnQgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWNvcmUvZGVzY3JpcHRvcic7XG5cbmltcG9ydCB7IEJhYnlsb25EZXNjcmlwdG9yQnVpbGRlciB9IGZyb20gJy4vZGVzY3JpcHRvcic7XG5pbXBvcnQgeyBjcmVhdGVTdGFraW5nTWFuYWdlciB9IGZyb20gJy4vc3Rha2luZ01hbmFnZXInO1xuaW1wb3J0IHsgZ2V0U3Rha2luZ1BhcmFtcyB9IGZyb20gJy4vc3Rha2luZ1BhcmFtcyc7XG5pbXBvcnQgeyBCYWJ5bG9uTmV0d29ya0xpa2UsIHRvQml0Y29pbkpzTmV0d29yayB9IGZyb20gJy4vbmV0d29yayc7XG5cbmV4cG9ydCB0eXBlIFZhbHVlV2l0aFR5cGVVcmw8VD4gPSB7IHR5cGVVcmw6IHN0cmluZzsgdmFsdWU6IFQgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpZ25lZFBzYnQoXG4gIHBzYnQ6IGJpdGNvaW5qc2xpYi5Qc2J0LFxuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLFxuICBzaWduZXJzOiB1dHhvbGliLkVDUGFpckludGVyZmFjZVtdLFxuICB7IGZpbmFsaXplID0gZmFsc2UgfVxuKTogYml0Y29pbmpzbGliLlBzYnQge1xuICBjb25zdCB3cmFwcGVkUHNidCA9IHRvV3JhcHBlZFBzYnQocHNidC50b0J1ZmZlcigpKTtcbiAgY29uc3Qgc2lnbmVkSW5wdXRzID0gcHNidC5kYXRhLmlucHV0cy5mbGF0TWFwKChpbnB1dCwgaSkgPT4ge1xuICAgIGFzc2VydChpbnB1dC53aXRuZXNzVXR4byk7XG4gICAgaWYgKEJ1ZmZlci5mcm9tKGRlc2NyaXB0b3Iuc2NyaXB0UHVia2V5KCkpLmVxdWFscyhpbnB1dC53aXRuZXNzVXR4by5zY3JpcHQpKSB7XG4gICAgICB3cmFwcGVkUHNidC51cGRhdGVJbnB1dFdpdGhEZXNjcmlwdG9yKGksIGRlc2NyaXB0b3IpO1xuICAgICAgY29uc3Qgc2lnblJlc3VsdHMgPSBzaWduZXJzLm1hcCgoc2lnbmVyKSA9PiB7XG4gICAgICAgIGFzc2VydChzaWduZXIucHJpdmF0ZUtleSk7XG4gICAgICAgIHJldHVybiB3cmFwcGVkUHNidC5zaWduV2l0aFBydihzaWduZXIucHJpdmF0ZUtleSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBbW2ksIHNpZ25SZXN1bHRzXV07XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfSk7XG4gIGFzc2VydChzaWduZWRJbnB1dHMubGVuZ3RoID4gMCk7XG4gIGlmIChmaW5hbGl6ZSkge1xuICAgIHdyYXBwZWRQc2J0LmZpbmFsaXplKCk7XG4gIH1cbiAgcmV0dXJuIGJpdGNvaW5qc2xpYi5Qc2J0LmZyb21CdWZmZXIoQnVmZmVyLmZyb20od3JhcHBlZFBzYnQuc2VyaWFsaXplKCkpKTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IG1ldGhvZCB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBidGMtc3Rha2luZy10c1xuICogaHR0cHM6Ly9naXRodWIuY29tL2JhYnlsb25sYWJzLWlvL2J0Yy1zdGFraW5nLXRzL2lzc3Vlcy83MVxuICogQHBhcmFtIGJ1ZmZlclxuICogQHBhcmFtIG5ldHdvcmtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcmNlRmluYWxpemVQc2J0KGJ1ZmZlcjogQnVmZmVyLCBuZXR3b3JrOiBCYWJ5bG9uTmV0d29ya0xpa2UpOiBiaXRjb2luanNsaWIuUHNidCB7XG4gIGNvbnN0IHBzYnQgPSBiaXRjb2luanNsaWIuUHNidC5mcm9tQnVmZmVyKGJ1ZmZlciwgeyBuZXR3b3JrOiB0b0JpdGNvaW5Kc05ldHdvcmsobmV0d29yaykgfSk7XG4gIC8vIHRoaXMgb25seSB3b3JrcyB3aXRoIGNlcnRhaW4gYml0Y29pbmpzbGliIHZlcnNpb25zXG4gIHBzYnQuZmluYWxpemVBbGxJbnB1dHMoKTtcbiAgcmV0dXJuIHBzYnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdGNQcm92aWRlckZvckVDS2V5KFxuICBkZXNjcmlwdG9yQnVpbGRlcjogQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyLFxuICBzdGFrZXJLZXk6IHV0eG9saWIuRUNQYWlySW50ZXJmYWNlXG4pOiB2ZW5kb3IuQnRjUHJvdmlkZXIge1xuICBmdW5jdGlvbiBzaWduV2l0aERlc2NyaXB0b3IoXG4gICAgcHNidDogYml0Y29pbmpzbGliLlBzYnQsXG4gICAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgICBrZXk6IHV0eG9saWIuRUNQYWlySW50ZXJmYWNlXG4gICk6IGJpdGNvaW5qc2xpYi5Qc2J0IHtcbiAgICBwc2J0ID0gZ2V0U2lnbmVkUHNidChwc2J0LCBkZXNjcmlwdG9yLCBba2V5XSwgeyBmaW5hbGl6ZTogZmFsc2UgfSk7XG4gICAgLy8gQlVHOiB3ZSBuZWVkIHRvIGJsaW5kbHkgZmluYWxpemUgaGVyZSBldmVuIHRob3VnaCB3ZSBoYXZlIG5vdCBmdWxseSBzaWduZWRcbiAgICBwc2J0LmZpbmFsaXplQWxsSW5wdXRzKCk7XG4gICAgcmV0dXJuIHBzYnQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFzeW5jIHNpZ25NZXNzYWdlKHNpZ25pbmdTdGVwOiB2ZW5kb3IuU2lnbmluZ1N0ZXAsIG1lc3NhZ2U6IHN0cmluZywgdHlwZTogJ2VjZHNhJyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBhc3NlcnQodHlwZSA9PT0gJ2VjZHNhJyk7XG4gICAgICBzd2l0Y2ggKHNpZ25pbmdTdGVwKSB7XG4gICAgICAgIGNhc2UgJ3Byb29mLW9mLXBvc3Nlc3Npb24nOlxuICAgICAgICAgIHJldHVybiBzdGFrZXJLZXkuc2lnbihCdWZmZXIuZnJvbShtZXNzYWdlLCAnaGV4JykpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2lnbmluZyBzdGVwOiAke3NpZ25pbmdTdGVwfWApO1xuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgc2lnblBzYnQoc2lnbmluZ1N0ZXA6IHZlbmRvci5TaWduaW5nU3RlcCwgcHNidEhleDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGNvbnN0IHBzYnQgPSBiaXRjb2luanNsaWIuUHNidC5mcm9tSGV4KHBzYnRIZXgpO1xuICAgICAgc3dpdGNoIChzaWduaW5nU3RlcCkge1xuICAgICAgICBjYXNlICdzdGFraW5nLXNsYXNoaW5nJzpcbiAgICAgICAgICByZXR1cm4gc2lnbldpdGhEZXNjcmlwdG9yKHBzYnQsIGRlc2NyaXB0b3JCdWlsZGVyLmdldFN0YWtpbmdEZXNjcmlwdG9yKCksIHN0YWtlcktleSkudG9IZXgoKTtcbiAgICAgICAgY2FzZSAndW5ib25kaW5nLXNsYXNoaW5nJzpcbiAgICAgICAgICByZXR1cm4gc2lnbldpdGhEZXNjcmlwdG9yKHBzYnQsIGRlc2NyaXB0b3JCdWlsZGVyLmdldFVuYm9uZGluZ0Rlc2NyaXB0b3IoKSwgc3Rha2VyS2V5KS50b0hleCgpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBzaWduaW5nIHN0ZXA6ICR7c2lnbmluZ1N0ZXB9YCk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIHVuc2lnbmVkRGVsZWdhdGlvbk1zZzogVmFsdWVXaXRoVHlwZVVybDxiYWJ5bG9uUHJvdG9idWYuYnRjc3Rha2luZ3R4Lk1zZ0NyZWF0ZUJUQ0RlbGVnYXRpb24+O1xuICBzdGFraW5nVHg6IGJpdGNvaW5qc2xpYi5UcmFuc2FjdGlvbjtcbn07XG5cbi8qKlxuICogQHBhcmFtIHN0YWtpbmdLZXkgLSB0aGlzIGlzIHRoZSBzaW5nbGUtc2lnIGtleSB0aGF0IGlzIHVzZWQgZm9yIGNvLXNpZ25pbmcgdGhlIHN0YWtpbmcgb3V0cHV0XG4gKiBAcGFyYW0gY2hhbmdlQWRkcmVzcyAtIHRoaXMgaXMgdW5yZWxhdGVkIHRvIHRoZSBzdGFraW5nIGtleSBhbmQgaXMgdXNlZCBmb3IgdGhlIGNoYW5nZSBvdXRwdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU3Rha2VySW5mbyhcbiAgc3Rha2luZ0tleTogdXR4b2xpYi5FQ1BhaXJJbnRlcmZhY2UgfCBCdWZmZXIgfCBzdHJpbmcsXG4gIGNoYW5nZUFkZHJlc3M6IHN0cmluZ1xuKTogdmVuZG9yLlN0YWtlckluZm8ge1xuICBpZiAodHlwZW9mIHN0YWtpbmdLZXkgPT09ICdvYmplY3QnICYmICdwdWJsaWNLZXknIGluIHN0YWtpbmdLZXkpIHtcbiAgICBzdGFraW5nS2V5ID0gc3Rha2luZ0tleS5wdWJsaWNLZXk7XG4gIH1cbiAgaWYgKHR5cGVvZiBzdGFraW5nS2V5ID09PSAnc3RyaW5nJykge1xuICAgIHN0YWtpbmdLZXkgPSBCdWZmZXIuZnJvbShzdGFraW5nS2V5LCAnaGV4Jyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwdWJsaWNLZXlOb0Nvb3JkSGV4OiB0b1hPbmx5UHVibGljS2V5KHN0YWtpbmdLZXkpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICBhZGRyZXNzOiBjaGFuZ2VBZGRyZXNzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3Rha2luZyhcbiAgbmV0d29yazogQmFieWxvbk5ldHdvcmtMaWtlLFxuICBibG9ja0hlaWdodDogbnVtYmVyLFxuICBzdGFrZXJCdGNJbmZvOiB2ZW5kb3IuU3Rha2VySW5mbyxcbiAgc3Rha2luZ0lucHV0OiB2ZW5kb3IuU3Rha2luZ0lucHV0cyxcbiAgdmVyc2lvbmVkUGFyYW1zOiB2ZW5kb3IuVmVyc2lvbmVkU3Rha2luZ1BhcmFtc1tdID0gZ2V0U3Rha2luZ1BhcmFtcyhuZXR3b3JrKVxuKTogdmVuZG9yLlN0YWtpbmcge1xuICBpZiAoYmxvY2tIZWlnaHQgPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JhYnlsb24gQlRDIHRpcCBoZWlnaHQgY2Fubm90IGJlIDAnKTtcbiAgfVxuXG4gIC8vIEdldCB0aGUgQmFieWxvbiBwYXJhbXMgYmFzZWQgb24gdGhlIEJUQyB0aXAgaGVpZ2h0IGZyb20gQmFieWxvbiBjaGFpblxuICBjb25zdCBwYXJhbXMgPSB2ZW5kb3IuZ2V0QmFieWxvblBhcmFtQnlCdGNIZWlnaHQoYmxvY2tIZWlnaHQsIHZlcnNpb25lZFBhcmFtcyk7XG5cbiAgcmV0dXJuIG5ldyB2ZW5kb3IuU3Rha2luZyhcbiAgICB0b0JpdGNvaW5Kc05ldHdvcmsobmV0d29yayksXG4gICAgc3Rha2VyQnRjSW5mbyxcbiAgICBwYXJhbXMsXG4gICAgc3Rha2luZ0lucHV0LmZpbmFsaXR5UHJvdmlkZXJQa05vQ29vcmRIZXgsXG4gICAgc3Rha2luZ0lucHV0LnN0YWtpbmdUaW1lbG9ja1xuICApO1xufVxuXG50eXBlIFRyYW5zYWN0aW9uTGlrZSA9XG4gIHwgYml0Y29pbmpzbGliLlBzYnRcbiAgfCBiaXRjb2luanNsaWIuVHJhbnNhY3Rpb25cbiAgfCB1dHhvbGliLlRyYW5zYWN0aW9uXG4gIHwgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248YmlnaW50IHwgbnVtYmVyPlxuICB8IHV0eG9saWIuUHNidFxuICB8IHV0eG9saWIuYml0Z28uVXR4b1BzYnQ7XG5cbmZ1bmN0aW9uIHRvU3Rha2luZ1RyYW5zYWN0aW9uRnJvbVBzYnQoXG4gIHBzYnQ6IGJpdGNvaW5qc2xpYi5Qc2J0IHwgdXR4b2xpYi5Qc2J0IHwgdXR4b2xpYi5iaXRnby5VdHhvUHNidFxuKTogYml0Y29pbmpzbGliLlRyYW5zYWN0aW9uIHtcbiAgaWYgKCEocHNidCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpKSB7XG4gICAgcHNidCA9IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidEZyb21CdWZmZXIocHNidC50b0J1ZmZlcigpLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pO1xuICB9XG4gIGlmIChwc2J0IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCkge1xuICAgIC8vIG9ubHkgdXR4b2xpYi5iaXRnby5VdHhvUHNidCBoYXMgdGhlIGdldFVuc2lnbmVkVHggbWV0aG9kXG4gICAgcmV0dXJuIGJpdGNvaW5qc2xpYi5UcmFuc2FjdGlvbi5mcm9tSGV4KHBzYnQuZ2V0VW5zaWduZWRUeCgpLnRvSGV4KCkpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignaWxsZWdhbCBzdGF0ZScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9TdGFraW5nVHJhbnNhY3Rpb24odHg6IFRyYW5zYWN0aW9uTGlrZSk6IGJpdGNvaW5qc2xpYi5UcmFuc2FjdGlvbiB7XG4gIGlmICh0eCBpbnN0YW5jZW9mIGJpdGNvaW5qc2xpYi5Qc2J0IHx8IHR4IGluc3RhbmNlb2YgdXR4b2xpYi5Qc2J0KSB7XG4gICAgcmV0dXJuIHRvU3Rha2luZ1RyYW5zYWN0aW9uRnJvbVBzYnQodHgpO1xuICB9XG4gIHJldHVybiBiaXRjb2luanNsaWIuVHJhbnNhY3Rpb24uZnJvbUhleCh0eC50b0hleCgpKTtcbn1cblxuLypcbiAqIFRoaXMgaXMgbW9zdGx5IGxpZnRlZCBmcm9tXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmxhYnMtaW8vYnRjLXN0YWtpbmctdHMvYmxvYi92MC40LjAtcmMuMi9zcmMvc3Rha2luZy9tYW5hZ2VyLnRzI0wxMDAtTDE3MlxuICpcbiAqIFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgaGVyZSB3ZSBhcmUgcmV0dXJuaW5nIGFuIF91bnNpZ25lZF8gZGVsZWdhdGlvbiBtZXNzYWdlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGVsZWdhdGlvbk1lc3NhZ2VXaXRoVHJhbnNhY3Rpb24oXG4gIG1hbmFnZXI6IHZlbmRvci5CYWJ5bG9uQnRjU3Rha2luZ01hbmFnZXIsXG4gIHN0YWtpbmc6IHZlbmRvci5TdGFraW5nLFxuICBzdGFraW5nQW1vdW50U2F0OiBudW1iZXIsXG4gIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbkxpa2UsXG4gIGJhYnlsb25BZGRyZXNzOiBzdHJpbmdcbik6IFByb21pc2U8VmFsdWVXaXRoVHlwZVVybDxiYWJ5bG9uUHJvdG9idWYuYnRjc3Rha2luZ3R4Lk1zZ0NyZWF0ZUJUQ0RlbGVnYXRpb24+PiB7XG4gIGlmICghdmVuZG9yLmlzVmFsaWRCYWJ5bG9uQWRkcmVzcyhiYWJ5bG9uQWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQmFieWxvbiBhZGRyZXNzJyk7XG4gIH1cbiAgLy8gQ3JlYXRlIGRlbGVnYXRpb24gbWVzc2FnZSB3aXRob3V0IGluY2x1ZGluZyBpbmNsdXNpb24gcHJvb2ZcbiAgcmV0dXJuIG1hbmFnZXIuY3JlYXRlQnRjRGVsZWdhdGlvbk1zZyhcbiAgICBzdGFraW5nLFxuICAgIHtcbiAgICAgIHN0YWtpbmdUaW1lbG9jazogc3Rha2luZy5zdGFraW5nVGltZWxvY2ssXG4gICAgICBmaW5hbGl0eVByb3ZpZGVyUGtOb0Nvb3JkSGV4OiBzdGFraW5nLmZpbmFsaXR5UHJvdmlkZXJQa05vQ29vcmRIZXgsXG4gICAgICBzdGFraW5nQW1vdW50U2F0LFxuICAgIH0sXG4gICAgdG9TdGFraW5nVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pLFxuICAgIGJhYnlsb25BZGRyZXNzLFxuICAgIHN0YWtpbmcuc3Rha2VySW5mbyxcbiAgICBzdGFraW5nLnBhcmFtc1xuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVW5zaWduZWRQcmVTdGFrZVJlZ2lzdHJhdGlvbkJhYnlsb25UcmFuc2FjdGlvbldpdGhCdGNQcm92aWRlcihcbiAgYnRjUHJvdmlkZXI6IHZlbmRvci5CdGNQcm92aWRlcixcbiAgbmV0d29yazogYml0Y29pbmpzbGliLk5ldHdvcmssXG4gIHN0YWtlckJ0Y0luZm86IHZlbmRvci5TdGFrZXJJbmZvLFxuICBzdGFraW5nSW5wdXQ6IHZlbmRvci5TdGFraW5nSW5wdXRzLFxuICBiYWJ5bG9uQnRjVGlwSGVpZ2h0OiBudW1iZXIsXG4gIGlucHV0VVRYT3M6IHZlbmRvci5VVFhPW10sXG4gIGZlZVJhdGVTYXRCOiBudW1iZXIsXG4gIGJhYnlsb25BZGRyZXNzOiBzdHJpbmcsXG4gIHN0YWtpbmdQYXJhbXM6IHZlbmRvci5WZXJzaW9uZWRTdGFraW5nUGFyYW1zW10gPSBnZXRTdGFraW5nUGFyYW1zKG5ldHdvcmspXG4pOiBQcm9taXNlPFJlc3VsdD4ge1xuICBpZiAoaW5wdXRVVFhPcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGlucHV0IFVUWE9zIHByb3ZpZGVkJyk7XG4gIH1cbiAgY29uc3QgbWFuYWdlciA9IGNyZWF0ZVN0YWtpbmdNYW5hZ2VyKG5ldHdvcmssIGJ0Y1Byb3ZpZGVyLCBzdGFraW5nUGFyYW1zKTtcbiAgY29uc3Qgc3Rha2luZyA9IGNyZWF0ZVN0YWtpbmcobmV0d29yaywgYmFieWxvbkJ0Y1RpcEhlaWdodCwgc3Rha2VyQnRjSW5mbywgc3Rha2luZ0lucHV0LCBzdGFraW5nUGFyYW1zKTtcbiAgLy8gQ3JlYXRlIHVuc2lnbmVkIHN0YWtpbmcgdHJhbnNhY3Rpb25cbiAgY29uc3QgeyB0cmFuc2FjdGlvbiB9ID0gc3Rha2luZy5jcmVhdGVTdGFraW5nVHJhbnNhY3Rpb24oc3Rha2luZ0lucHV0LnN0YWtpbmdBbW91bnRTYXQsIGlucHV0VVRYT3MsIGZlZVJhdGVTYXRCKTtcbiAgY29uc3QgdW5zaWduZWREZWxlZ2F0aW9uTXNnID0gYXdhaXQgY3JlYXRlRGVsZWdhdGlvbk1lc3NhZ2VXaXRoVHJhbnNhY3Rpb24oXG4gICAgbWFuYWdlcixcbiAgICBzdGFraW5nLFxuICAgIHN0YWtpbmdJbnB1dC5zdGFraW5nQW1vdW50U2F0LFxuICAgIHRyYW5zYWN0aW9uLFxuICAgIGJhYnlsb25BZGRyZXNzXG4gICk7XG4gIHJldHVybiB7IHVuc2lnbmVkRGVsZWdhdGlvbk1zZywgc3Rha2luZ1R4OiB0cmFuc2FjdGlvbiB9O1xufVxuIl19
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGlvbk1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFieWxvbi9kZWxlZ2F0aW9uTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQSxzQ0F3QkM7QUFRRCw4Q0FLQztBQUVELHdEQTRFQztBQVVELG9DQWNDO0FBRUQsc0NBcUJDO0FBdUJELG9EQUtDO0FBUUQsd0ZBdUJDO0FBRUQsa0pBMEJDO0FBOVFEOztHQUVHO0FBQ0gsb0RBQTRCO0FBRTVCLHlDQUFtQztBQUNuQyxrRkFBb0U7QUFFcEUsNERBQThDO0FBQzlDLDhEQUFnRDtBQUVoRCxxREFBeUQ7QUFDekQsaUVBQThFO0FBRzlFLHFEQUF3RDtBQUN4RCxtREFBbUQ7QUFDbkQsdUNBQW1FO0FBSW5FLFNBQWdCLGFBQWEsQ0FDM0IsSUFBdUIsRUFDdkIsVUFBc0IsRUFDdEIsT0FBa0MsRUFDbEMsRUFBRSxRQUFRLEdBQUcsS0FBSyxFQUFFO0lBRXBCLE1BQU0sV0FBVyxHQUFHLElBQUEsMEJBQWEsRUFBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDekQsSUFBQSxnQkFBTSxFQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM1RSxXQUFXLENBQUMseUJBQXlCLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFH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QWMsQ0FDZixDQUFDO0lBQ0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmxhYnMtaW8vYmFieWxvbi9ibG9iL3YxLjk5LjAtc25hcHNob3QuMjUwMjExL3gvYnRjc3Rha2luZy90eXBlcy92YWxpZGF0ZV9wYXJzZWRfbWVzc2FnZS5nb1xuICovXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IEJJUDMyMiB9IGZyb20gJ2JpcDMyMi1qcyc7XG5pbXBvcnQgKiBhcyB2ZW5kb3IgZnJvbSAnQGJpdGdvLWJldGEvYmFieWxvbmxhYnMtaW8tYnRjLXN0YWtpbmctdHMnO1xuaW1wb3J0ICogYXMgYmFieWxvblByb3RvYnVmIGZyb20gJ0BiYWJ5bG9ubGFicy1pby9iYWJ5bG9uLXByb3RvLXRzJztcbmltcG9ydCAqIGFzIGJpdGNvaW5qc2xpYiBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuaW1wb3J0IHsgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tY29yZSc7XG5pbXBvcnQgeyBzaWduV2l0aEtleSwgdG9XcmFwcGVkUHNidCB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tY29yZS9kZXNjcmlwdG9yJztcblxuaW1wb3J0IHsgQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyIH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IGNyZWF0ZVN0YWtpbmdNYW5hZ2VyIH0gZnJvbSAnLi9zdGFraW5nTWFuYWdlcic7XG5pbXBvcnQgeyBnZXRTdGFraW5nUGFyYW1zIH0gZnJvbSAnLi9zdGFraW5nUGFyYW1zJztcbmltcG9ydCB7IEJhYnlsb25OZXR3b3JrTGlrZSwgdG9CaXRjb2luSnNOZXR3b3JrIH0gZnJvbSAnLi9uZXR3b3JrJztcblxuZXhwb3J0IHR5cGUgVmFsdWVXaXRoVHlwZVVybDxUPiA9IHsgdHlwZVVybDogc3RyaW5nOyB2YWx1ZTogVCB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lnbmVkUHNidChcbiAgcHNidDogYml0Y29pbmpzbGliLlBzYnQsXG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsXG4gIHNpZ25lcnM6IHV0eG9saWIuRUNQYWlySW50ZXJmYWNlW10sXG4gIHsgZmluYWxpemUgPSBmYWxzZSB9XG4pOiBiaXRjb2luanNsaWIuUHNidCB7XG4gIGNvbnN0IHdyYXBwZWRQc2J0ID0gdG9XcmFwcGVkUHNidChwc2J0LnRvQnVmZmVyKCkpO1xuICBjb25zdCBzaWduZWRJbnB1dHMgPSBwc2J0LmRhdGEuaW5wdXRzLmZsYXRNYXAoKGlucHV0LCBpKSA9PiB7XG4gICAgYXNzZXJ0KGlucHV0LndpdG5lc3NVdHhvKTtcbiAgICBpZiAoQnVmZmVyLmZyb20oZGVzY3JpcHRvci5zY3JpcHRQdWJrZXkoKSkuZXF1YWxzKGlucHV0LndpdG5lc3NVdHhvLnNjcmlwdCkpIHtcbiAgICAgIHdyYXBwZWRQc2J0LnVwZGF0ZUlucHV0V2l0aERlc2NyaXB0b3IoaSwgZGVzY3JpcHRvcik7XG4gICAgICBjb25zdCBzaWduUmVzdWx0cyA9IHNpZ25lcnMubWFwKChzaWduZXIpID0+IHtcbiAgICAgICAgYXNzZXJ0KHNpZ25lci5wcml2YXRlS2V5KTtcbiAgICAgICAgcmV0dXJuIHdyYXBwZWRQc2J0LnNpZ25XaXRoUHJ2KHNpZ25lci5wcml2YXRlS2V5KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIFtbaSwgc2lnblJlc3VsdHNdXTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9KTtcbiAgYXNzZXJ0KHNpZ25lZElucHV0cy5sZW5ndGggPiAwKTtcbiAgaWYgKGZpbmFsaXplKSB7XG4gICAgd3JhcHBlZFBzYnQuZmluYWxpemUoKTtcbiAgfVxuICByZXR1cm4gYml0Y29pbmpzbGliLlBzYnQuZnJvbUJ1ZmZlcihCdWZmZXIuZnJvbSh3cmFwcGVkUHNidC5zZXJpYWxpemUoKSkpO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgbWV0aG9kIHRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGJ0Yy1zdGFraW5nLXRzXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYmFieWxvbmxhYnMtaW8vYnRjLXN0YWtpbmctdHMvaXNzdWVzLzcxXG4gKiBAcGFyYW0gYnVmZmVyXG4gKiBAcGFyYW0gbmV0d29ya1xuICovXG5leHBvcnQgZnVuY3Rpb24gZm9yY2VGaW5hbGl6ZVBzYnQoYnVmZmVyOiBCdWZmZXIsIG5ldHdvcms6IEJhYnlsb25OZXR3b3JrTGlrZSk6IGJpdGNvaW5qc2xpYi5Qc2J0IHtcbiAgY29uc3QgcHNidCA9IGJpdGNvaW5qc2xpYi5Qc2J0LmZyb21CdWZmZXIoYnVmZmVyLCB7IG5ldHdvcms6IHRvQml0Y29pbkpzTmV0d29yayhuZXR3b3JrKSB9KTtcbiAgLy8gdGhpcyBvbmx5IHdvcmtzIHdpdGggY2VydGFpbiBiaXRjb2luanNsaWIgdmVyc2lvbnNcbiAgcHNidC5maW5hbGl6ZUFsbElucHV0cygpO1xuICByZXR1cm4gcHNidDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ0Y1Byb3ZpZGVyRm9yRUNLZXkoXG4gIGRlc2NyaXB0b3JCdWlsZGVyOiBCYWJ5bG9uRGVzY3JpcHRvckJ1aWxkZXIsXG4gIHN0YWtlcktleTogdXR4b2xpYi5FQ1BhaXJJbnRlcmZhY2Vcbik6IHZlbmRvci5CdGNQcm92aWRlciB7XG4gIGZ1bmN0aW9uIHNpZ25XaXRoRGVzY3JpcHRvcihcbiAgICBwc2J0OiBiaXRjb2luanNsaWIuUHNidCxcbiAgICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLFxuICAgIGtleTogdXR4b2xpYi5FQ1BhaXJJbnRlcmZhY2VcbiAgKTogYml0Y29pbmpzbGliLlBzYnQge1xuICAgIHBzYnQgPSBnZXRTaWduZWRQc2J0KHBzYnQsIGRlc2NyaXB0b3IsIFtrZXldLCB7IGZpbmFsaXplOiBmYWxzZSB9KTtcbiAgICAvLyBCVUc6IHdlIG5lZWQgdG8gYmxpbmRseSBmaW5hbGl6ZSBoZXJlIGV2ZW4gdGhvdWdoIHdlIGhhdmUgbm90IGZ1bGx5IHNpZ25lZFxuICAgIHBzYnQuZmluYWxpemVBbGxJbnB1dHMoKTtcbiAgICByZXR1cm4gcHNidDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNpZ25CaXAzMjJTaW1wbGUobWVzc2FnZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBHZXQgdGhlIHNjcmlwdCBwdWJsaWMga2V5IGZyb20gdGhlIHN0YWtpbmcgZGVzY3JpcHRvclxuICAgIGNvbnN0IHNjcmlwdFB1YktleSA9IEJ1ZmZlci5mcm9tKGRlc2NyaXB0b3JCdWlsZGVyLmdldFN0YWtpbmdEZXNjcmlwdG9yKCkuc2NyaXB0UHVia2V5KCkpO1xuICAgIGNvbnN0IHRvU3BlbmRUeCA9IEJJUDMyMi5idWlsZFRvU3BlbmRUeChtZXNzYWdlLCBzY3JpcHRQdWJLZXkpO1xuXG4gICAgLy8gR2V0IHRoZSB0b19zcGVuZCB0eGlkXG4gICAgY29uc3QgdG9TcGVuZFR4SWQgPSB0b1NwZW5kVHguZ2V0SWQoKTtcblxuICAgIC8vIENyZWF0ZSBQU0JUIG9iamVjdCBmb3IgY29uc3RydWN0aW5nIHRoZSB0cmFuc2FjdGlvblxuICAgIGNvbnN0IHRvU2lnblBzYnQgPSBuZXcgYml0Y29pbmpzbGliLlBzYnQoKTtcbiAgICB0b1NpZ25Qc2J0LnNldFZlcnNpb24oMik7IC8vIG5WZXJzaW9uID0gMFxuICAgIHRvU2lnblBzYnQuc2V0TG9ja3RpbWUoMCk7IC8vIG5Mb2NrVGltZSA9IDBcbiAgICB0b1NpZ25Qc2J0LmFkZElucHV0KHtcbiAgICAgIGhhc2g6IHRvU3BlbmRUeElkLFxuICAgICAgaW5kZXg6IDAsXG4gICAgICBzZXF1ZW5jZTogZGVzY3JpcHRvckJ1aWxkZXIuc3Rha2luZ1RpbWVMb2NrLFxuICAgICAgd2l0bmVzc1V0eG86IHtcbiAgICAgICAgc2NyaXB0OiBzY3JpcHRQdWJLZXksXG4gICAgICAgIHZhbHVlOiAwLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFNpZ24gdGhlIFBTQlQgd2l0aCB0aGUgc3Rha2VyIGtleVxuICAgIGNvbnN0IHdyYXBwZWRQc2J0ID0gdG9XcmFwcGVkUHNidCh0b1NpZ25Qc2J0LnRvQnVmZmVyKCkpO1xuICAgIHdyYXBwZWRQc2J0LnVwZGF0ZUlucHV0V2l0aERlc2NyaXB0b3IoMCwgZGVzY3JpcHRvckJ1aWxkZXIuZ2V0U3Rha2luZ0Rlc2NyaXB0b3IoKSk7XG4gICAgc2lnbldpdGhLZXkod3JhcHBlZFBzYnQsIHN0YWtlcktleSk7XG4gICAgd3JhcHBlZFBzYnQuZmluYWxpemUoKTtcblxuICAgIC8vIEVuY29kZSB0aGUgd2l0bmVzcyBkYXRhIGFuZCByZXR1cm5cbiAgICByZXR1cm4gQklQMzIyLmVuY29kZVdpdG5lc3MoYml0Y29pbmpzbGliLlBzYnQuZnJvbUJ1ZmZlcihCdWZmZXIuZnJvbSh3cmFwcGVkUHNidC5zZXJpYWxpemUoKSkpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgc2lnbk1lc3NhZ2UoXG4gICAgICBzaWduaW5nU3RlcDogdmVuZG9yLlNpZ25pbmdTdGVwLFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgdHlwZTogJ2VjZHNhJyB8ICdiaXAzMjItc2ltcGxlJ1xuICAgICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICBhc3NlcnQoc2lnbmluZ1N0ZXAgPT09ICdwcm9vZi1vZi1wb3NzZXNzaW9uJyk7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnZWNkc2EnOlxuICAgICAgICAgIHJldHVybiBzdGFrZXJLZXkuc2lnbihCdWZmZXIuZnJvbShtZXNzYWdlLCAnaGV4JykpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgY2FzZSAnYmlwMzIyLXNpbXBsZSc6XG4gICAgICAgICAgcmV0dXJuIHNpZ25CaXAzMjJTaW1wbGUobWVzc2FnZSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHNpZ25pbmcgc3RlcDogJHtzaWduaW5nU3RlcH1gKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgc2lnblBzYnQoc2lnbmluZ1N0ZXA6IHZlbmRvci5TaWduaW5nU3RlcCwgcHNidEhleDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGNvbnN0IHBzYnQgPSBiaXRjb2luanNsaWIuUHNidC5mcm9tSGV4KHBzYnRIZXgpO1xuICAgICAgc3dpdGNoIChzaWduaW5nU3RlcCkge1xuICAgICAgICBjYXNlICdzdGFraW5nLXNsYXNoaW5nJzpcbiAgICAgICAgICByZXR1cm4gc2lnbldpdGhEZXNjcmlwdG9yKHBzYnQsIGRlc2NyaXB0b3JCdWlsZGVyLmdldFN0YWtpbmdEZXNjcmlwdG9yKCksIHN0YWtlcktleSkudG9IZXgoKTtcbiAgICAgICAgY2FzZSAndW5ib25kaW5nLXNsYXNoaW5nJzpcbiAgICAgICAgICByZXR1cm4gc2lnbldpdGhEZXNjcmlwdG9yKHBzYnQsIGRlc2NyaXB0b3JCdWlsZGVyLmdldFVuYm9uZGluZ0Rlc2NyaXB0b3IoKSwgc3Rha2VyS2V5KS50b0hleCgpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBzaWduaW5nIHN0ZXA6ICR7c2lnbmluZ1N0ZXB9YCk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbnR5cGUgUmVzdWx0ID0ge1xuICB1bnNpZ25lZERlbGVnYXRpb25Nc2c6IFZhbHVlV2l0aFR5cGVVcmw8YmFieWxvblByb3RvYnVmLmJ0Y3N0YWtpbmd0eC5Nc2dDcmVhdGVCVENEZWxlZ2F0aW9uPjtcbiAgc3Rha2luZ1R4OiBiaXRjb2luanNsaWIuVHJhbnNhY3Rpb247XG59O1xuXG4vKipcbiAqIEBwYXJhbSBzdGFraW5nS2V5IC0gdGhpcyBpcyB0aGUgc2luZ2xlLXNpZyBrZXkgdGhhdCBpcyB1c2VkIGZvciBjby1zaWduaW5nIHRoZSBzdGFraW5nIG91dHB1dFxuICogQHBhcmFtIGNoYW5nZUFkZHJlc3MgLSB0aGlzIGlzIHVucmVsYXRlZCB0byB0aGUgc3Rha2luZyBrZXkgYW5kIGlzIHVzZWQgZm9yIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1N0YWtlckluZm8oXG4gIHN0YWtpbmdLZXk6IHV0eG9saWIuRUNQYWlySW50ZXJmYWNlIHwgQnVmZmVyIHwgc3RyaW5nLFxuICBjaGFuZ2VBZGRyZXNzOiBzdHJpbmdcbik6IHZlbmRvci5TdGFrZXJJbmZvIHtcbiAgaWYgKHR5cGVvZiBzdGFraW5nS2V5ID09PSAnb2JqZWN0JyAmJiAncHVibGljS2V5JyBpbiBzdGFraW5nS2V5KSB7XG4gICAgc3Rha2luZ0tleSA9IHN0YWtpbmdLZXkucHVibGljS2V5O1xuICB9XG4gIGlmICh0eXBlb2Ygc3Rha2luZ0tleSA9PT0gJ3N0cmluZycpIHtcbiAgICBzdGFraW5nS2V5ID0gQnVmZmVyLmZyb20oc3Rha2luZ0tleSwgJ2hleCcpO1xuICB9XG4gIHJldHVybiB7XG4gICAgcHVibGljS2V5Tm9Db29yZEhleDogdG9YT25seVB1YmxpY0tleShzdGFraW5nS2V5KS50b1N0cmluZygnaGV4JyksXG4gICAgYWRkcmVzczogY2hhbmdlQWRkcmVzcyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0YWtpbmcoXG4gIG5ldHdvcms6IEJhYnlsb25OZXR3b3JrTGlrZSxcbiAgYmxvY2tIZWlnaHQ6IG51bWJlcixcbiAgc3Rha2VyQnRjSW5mbzogdmVuZG9yLlN0YWtlckluZm8sXG4gIHN0YWtpbmdJbnB1dDogdmVuZG9yLlN0YWtpbmdJbnB1dHMsXG4gIHZlcnNpb25lZFBhcmFtczogdmVuZG9yLlZlcnNpb25lZFN0YWtpbmdQYXJhbXNbXSA9IGdldFN0YWtpbmdQYXJhbXMobmV0d29yaylcbik6IHZlbmRvci5TdGFraW5nIHtcbiAgaWYgKGJsb2NrSGVpZ2h0ID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdCYWJ5bG9uIEJUQyB0aXAgaGVpZ2h0IGNhbm5vdCBiZSAwJyk7XG4gIH1cblxuICAvLyBHZXQgdGhlIEJhYnlsb24gcGFyYW1zIGJhc2VkIG9uIHRoZSBCVEMgdGlwIGhlaWdodCBmcm9tIEJhYnlsb24gY2hhaW5cbiAgY29uc3QgcGFyYW1zID0gdmVuZG9yLmdldEJhYnlsb25QYXJhbUJ5QnRjSGVpZ2h0KGJsb2NrSGVpZ2h0LCB2ZXJzaW9uZWRQYXJhbXMpO1xuXG4gIHJldHVybiBuZXcgdmVuZG9yLlN0YWtpbmcoXG4gICAgdG9CaXRjb2luSnNOZXR3b3JrKG5ldHdvcmspLFxuICAgIHN0YWtlckJ0Y0luZm8sXG4gICAgcGFyYW1zLFxuICAgIHN0YWtpbmdJbnB1dC5maW5hbGl0eVByb3ZpZGVyUGtOb0Nvb3JkSGV4LFxuICAgIHN0YWtpbmdJbnB1dC5zdGFraW5nVGltZWxvY2tcbiAgKTtcbn1cblxudHlwZSBUcmFuc2FjdGlvbkxpa2UgPVxuICB8IGJpdGNvaW5qc2xpYi5Qc2J0XG4gIHwgYml0Y29pbmpzbGliLlRyYW5zYWN0aW9uXG4gIHwgdXR4b2xpYi5UcmFuc2FjdGlvblxuICB8IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPGJpZ2ludCB8IG51bWJlcj5cbiAgfCB1dHhvbGliLlBzYnRcbiAgfCB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0O1xuXG5mdW5jdGlvbiB0b1N0YWtpbmdUcmFuc2FjdGlvbkZyb21Qc2J0KFxuICBwc2J0OiBiaXRjb2luanNsaWIuUHNidCB8IHV0eG9saWIuUHNidCB8IHV0eG9saWIuYml0Z28uVXR4b1BzYnRcbik6IGJpdGNvaW5qc2xpYi5UcmFuc2FjdGlvbiB7XG4gIGlmICghKHBzYnQgaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KSkge1xuICAgIHBzYnQgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVBzYnRGcm9tQnVmZmVyKHBzYnQudG9CdWZmZXIoKSwgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luKTtcbiAgfVxuICBpZiAocHNidCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpIHtcbiAgICAvLyBvbmx5IHV0eG9saWIuYml0Z28uVXR4b1BzYnQgaGFzIHRoZSBnZXRVbnNpZ25lZFR4IG1ldGhvZFxuICAgIHJldHVybiBiaXRjb2luanNsaWIuVHJhbnNhY3Rpb24uZnJvbUhleChwc2J0LmdldFVuc2lnbmVkVHgoKS50b0hleCgpKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ2lsbGVnYWwgc3RhdGUnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU3Rha2luZ1RyYW5zYWN0aW9uKHR4OiBUcmFuc2FjdGlvbkxpa2UpOiBiaXRjb2luanNsaWIuVHJhbnNhY3Rpb24ge1xuICBpZiAodHggaW5zdGFuY2VvZiBiaXRjb2luanNsaWIuUHNidCB8fCB0eCBpbnN0YW5jZW9mIHV0eG9saWIuUHNidCkge1xuICAgIHJldHVybiB0b1N0YWtpbmdUcmFuc2FjdGlvbkZyb21Qc2J0KHR4KTtcbiAgfVxuICByZXR1cm4gYml0Y29pbmpzbGliLlRyYW5zYWN0aW9uLmZyb21IZXgodHgudG9IZXgoKSk7XG59XG5cbi8qXG4gKiBUaGlzIGlzIG1vc3RseSBsaWZ0ZWQgZnJvbVxuICogaHR0cHM6Ly9naXRodWIuY29tL2JhYnlsb25sYWJzLWlvL2J0Yy1zdGFraW5nLXRzL2Jsb2IvdjAuNC4wLXJjLjIvc3JjL3N0YWtpbmcvbWFuYWdlci50cyNMMTAwLUwxNzJcbiAqXG4gKiBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IGhlcmUgd2UgYXJlIHJldHVybmluZyBhbiBfdW5zaWduZWRfIGRlbGVnYXRpb24gbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURlbGVnYXRpb25NZXNzYWdlV2l0aFRyYW5zYWN0aW9uKFxuICBtYW5hZ2VyOiB2ZW5kb3IuQmFieWxvbkJ0Y1N0YWtpbmdNYW5hZ2VyLFxuICBzdGFraW5nOiB2ZW5kb3IuU3Rha2luZyxcbiAgc3Rha2luZ0Ftb3VudFNhdDogbnVtYmVyLFxuICB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb25MaWtlLFxuICBiYWJ5bG9uQWRkcmVzczogc3RyaW5nXG4pOiBQcm9taXNlPFZhbHVlV2l0aFR5cGVVcmw8YmFieWxvblByb3RvYnVmLmJ0Y3N0YWtpbmd0eC5Nc2dDcmVhdGVCVENEZWxlZ2F0aW9uPj4ge1xuICBpZiAoIXZlbmRvci5pc1ZhbGlkQmFieWxvbkFkZHJlc3MoYmFieWxvbkFkZHJlc3MpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEJhYnlsb24gYWRkcmVzcycpO1xuICB9XG4gIC8vIENyZWF0ZSBkZWxlZ2F0aW9uIG1lc3NhZ2Ugd2l0aG91dCBpbmNsdWRpbmcgaW5jbHVzaW9uIHByb29mXG4gIHJldHVybiBtYW5hZ2VyLmNyZWF0ZUJ0Y0RlbGVnYXRpb25Nc2coXG4gICAgc3Rha2luZyxcbiAgICB7XG4gICAgICBzdGFraW5nVGltZWxvY2s6IHN0YWtpbmcuc3Rha2luZ1RpbWVsb2NrLFxuICAgICAgZmluYWxpdHlQcm92aWRlclBrTm9Db29yZEhleDogc3Rha2luZy5maW5hbGl0eVByb3ZpZGVyUGtOb0Nvb3JkSGV4LFxuICAgICAgc3Rha2luZ0Ftb3VudFNhdCxcbiAgICB9LFxuICAgIHRvU3Rha2luZ1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKSxcbiAgICBiYWJ5bG9uQWRkcmVzcyxcbiAgICBzdGFraW5nLnN0YWtlckluZm8sXG4gICAgc3Rha2luZy5wYXJhbXNcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVVuc2lnbmVkUHJlU3Rha2VSZWdpc3RyYXRpb25CYWJ5bG9uVHJhbnNhY3Rpb25XaXRoQnRjUHJvdmlkZXIoXG4gIGJ0Y1Byb3ZpZGVyOiB2ZW5kb3IuQnRjUHJvdmlkZXIsXG4gIG5ldHdvcms6IGJpdGNvaW5qc2xpYi5OZXR3b3JrLFxuICBzdGFrZXJCdGNJbmZvOiB2ZW5kb3IuU3Rha2VySW5mbyxcbiAgc3Rha2luZ0lucHV0OiB2ZW5kb3IuU3Rha2luZ0lucHV0cyxcbiAgYmFieWxvbkJ0Y1RpcEhlaWdodDogbnVtYmVyLFxuICBpbnB1dFVUWE9zOiB2ZW5kb3IuVVRYT1tdLFxuICBmZWVSYXRlU2F0QjogbnVtYmVyLFxuICBiYWJ5bG9uQWRkcmVzczogc3RyaW5nLFxuICBzdGFraW5nUGFyYW1zOiB2ZW5kb3IuVmVyc2lvbmVkU3Rha2luZ1BhcmFtc1tdID0gZ2V0U3Rha2luZ1BhcmFtcyhuZXR3b3JrKVxuKTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgaWYgKGlucHV0VVRYT3MubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBpbnB1dCBVVFhPcyBwcm92aWRlZCcpO1xuICB9XG4gIGNvbnN0IG1hbmFnZXIgPSBjcmVhdGVTdGFraW5nTWFuYWdlcihuZXR3b3JrLCBidGNQcm92aWRlciwgc3Rha2luZ1BhcmFtcyk7XG4gIGNvbnN0IHN0YWtpbmcgPSBjcmVhdGVTdGFraW5nKG5ldHdvcmssIGJhYnlsb25CdGNUaXBIZWlnaHQsIHN0YWtlckJ0Y0luZm8sIHN0YWtpbmdJbnB1dCwgc3Rha2luZ1BhcmFtcyk7XG4gIC8vIENyZWF0ZSB1bnNpZ25lZCBzdGFraW5nIHRyYW5zYWN0aW9uXG4gIGNvbnN0IHsgdHJhbnNhY3Rpb24gfSA9IHN0YWtpbmcuY3JlYXRlU3Rha2luZ1RyYW5zYWN0aW9uKHN0YWtpbmdJbnB1dC5zdGFraW5nQW1vdW50U2F0LCBpbnB1dFVUWE9zLCBmZWVSYXRlU2F0Qik7XG4gIGNvbnN0IHVuc2lnbmVkRGVsZWdhdGlvbk1zZyA9IGF3YWl0IGNyZWF0ZURlbGVnYXRpb25NZXNzYWdlV2l0aFRyYW5zYWN0aW9uKFxuICAgIG1hbmFnZXIsXG4gICAgc3Rha2luZyxcbiAgICBzdGFraW5nSW5wdXQuc3Rha2luZ0Ftb3VudFNhdCxcbiAgICB0cmFuc2FjdGlvbixcbiAgICBiYWJ5bG9uQWRkcmVzc1xuICApO1xuICByZXR1cm4geyB1bnNpZ25lZERlbGVnYXRpb25Nc2csIHN0YWtpbmdUeDogdHJhbnNhY3Rpb24gfTtcbn1cbiJdfQ==
|
|
@@ -1 +1,118 @@
|
|
|
1
|
-
[
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"params": {
|
|
4
|
+
"covenant_pks": [
|
|
5
|
+
"d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
|
|
6
|
+
"4b15848e495a3a62283daaadb3f458a00859fe48e321f0121ebabbdd6698f9fa",
|
|
7
|
+
"23b29f89b45f4af41588dcaf0ca572ada32872a88224f311373917f1b37d08d1",
|
|
8
|
+
"d3c79b99ac4d265c2f97ac11e3232c07a598b020cf56c6f055472c893c0967ae",
|
|
9
|
+
"8242640732773249312c47ca7bdb50ca79f15f2ecc32b9c83ceebba44fb74df7",
|
|
10
|
+
"e36200aaa8dce9453567bba108bdc51f7f1174b97a65e4dc4402fc5de779d41c",
|
|
11
|
+
"cbdd028cfe32c1c1f2d84bfec71e19f92df509bba7b8ad31ca6c1a134fe09204",
|
|
12
|
+
"f178fcce82f95c524b53b077e6180bd2d779a9057fdff4255a0af95af918cee0",
|
|
13
|
+
"de13fc96ea6899acbdc5db3afaa683f62fe35b60ff6eb723dad28a11d2b12f8c"
|
|
14
|
+
],
|
|
15
|
+
"covenant_quorum": 6,
|
|
16
|
+
"min_staking_value_sat": "500000",
|
|
17
|
+
"max_staking_value_sat": "5000000",
|
|
18
|
+
"min_staking_time_blocks": 64000,
|
|
19
|
+
"max_staking_time_blocks": 64000,
|
|
20
|
+
"slashing_pk_script": "agdiYWJ5bG9u",
|
|
21
|
+
"min_slashing_tx_fee_sat": "100000",
|
|
22
|
+
"slashing_rate": "0.001000000000000000",
|
|
23
|
+
"unbonding_time_blocks": 1008,
|
|
24
|
+
"unbonding_fee_sat": "64000",
|
|
25
|
+
"min_commission_rate": "0.030000000000000000",
|
|
26
|
+
"delegation_creation_base_gas_fee": "1095000",
|
|
27
|
+
"allow_list_expiration_height": "139920",
|
|
28
|
+
"btc_activation_height": 857910
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"params": {
|
|
33
|
+
"covenant_pks": [
|
|
34
|
+
"d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
|
|
35
|
+
"4b15848e495a3a62283daaadb3f458a00859fe48e321f0121ebabbdd6698f9fa",
|
|
36
|
+
"23b29f89b45f4af41588dcaf0ca572ada32872a88224f311373917f1b37d08d1",
|
|
37
|
+
"d3c79b99ac4d265c2f97ac11e3232c07a598b020cf56c6f055472c893c0967ae",
|
|
38
|
+
"8242640732773249312c47ca7bdb50ca79f15f2ecc32b9c83ceebba44fb74df7",
|
|
39
|
+
"e36200aaa8dce9453567bba108bdc51f7f1174b97a65e4dc4402fc5de779d41c",
|
|
40
|
+
"cbdd028cfe32c1c1f2d84bfec71e19f92df509bba7b8ad31ca6c1a134fe09204",
|
|
41
|
+
"f178fcce82f95c524b53b077e6180bd2d779a9057fdff4255a0af95af918cee0",
|
|
42
|
+
"de13fc96ea6899acbdc5db3afaa683f62fe35b60ff6eb723dad28a11d2b12f8c"
|
|
43
|
+
],
|
|
44
|
+
"covenant_quorum": 6,
|
|
45
|
+
"min_staking_value_sat": "500000",
|
|
46
|
+
"max_staking_value_sat": "50000000000",
|
|
47
|
+
"min_staking_time_blocks": 64000,
|
|
48
|
+
"max_staking_time_blocks": 64000,
|
|
49
|
+
"slashing_pk_script": "agdiYWJ5bG9u",
|
|
50
|
+
"min_slashing_tx_fee_sat": "100000",
|
|
51
|
+
"slashing_rate": "0.001000000000000000",
|
|
52
|
+
"unbonding_time_blocks": 1008,
|
|
53
|
+
"unbonding_fee_sat": "32000",
|
|
54
|
+
"min_commission_rate": "0.030000000000000000",
|
|
55
|
+
"delegation_creation_base_gas_fee": "1095000",
|
|
56
|
+
"allow_list_expiration_height": "139920",
|
|
57
|
+
"btc_activation_height": 864790
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"params": {
|
|
62
|
+
"covenant_pks": [
|
|
63
|
+
"d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
|
|
64
|
+
"4b15848e495a3a62283daaadb3f458a00859fe48e321f0121ebabbdd6698f9fa",
|
|
65
|
+
"23b29f89b45f4af41588dcaf0ca572ada32872a88224f311373917f1b37d08d1",
|
|
66
|
+
"d3c79b99ac4d265c2f97ac11e3232c07a598b020cf56c6f055472c893c0967ae",
|
|
67
|
+
"8242640732773249312c47ca7bdb50ca79f15f2ecc32b9c83ceebba44fb74df7",
|
|
68
|
+
"e36200aaa8dce9453567bba108bdc51f7f1174b97a65e4dc4402fc5de779d41c",
|
|
69
|
+
"cbdd028cfe32c1c1f2d84bfec71e19f92df509bba7b8ad31ca6c1a134fe09204",
|
|
70
|
+
"f178fcce82f95c524b53b077e6180bd2d779a9057fdff4255a0af95af918cee0",
|
|
71
|
+
"de13fc96ea6899acbdc5db3afaa683f62fe35b60ff6eb723dad28a11d2b12f8c"
|
|
72
|
+
],
|
|
73
|
+
"covenant_quorum": 6,
|
|
74
|
+
"min_staking_value_sat": "500000",
|
|
75
|
+
"max_staking_value_sat": "500000000000",
|
|
76
|
+
"min_staking_time_blocks": 64000,
|
|
77
|
+
"max_staking_time_blocks": 64000,
|
|
78
|
+
"slashing_pk_script": "agdiYWJ5bG9u",
|
|
79
|
+
"min_slashing_tx_fee_sat": "100000",
|
|
80
|
+
"slashing_rate": "0.001000000000000000",
|
|
81
|
+
"unbonding_time_blocks": 1008,
|
|
82
|
+
"unbonding_fee_sat": "32000",
|
|
83
|
+
"min_commission_rate": "0.030000000000000000",
|
|
84
|
+
"delegation_creation_base_gas_fee": "1095000",
|
|
85
|
+
"allow_list_expiration_height": "139920",
|
|
86
|
+
"btc_activation_height": 874088
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"params": {
|
|
91
|
+
"covenant_pks": [
|
|
92
|
+
"d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
|
|
93
|
+
"4b15848e495a3a62283daaadb3f458a00859fe48e321f0121ebabbdd6698f9fa",
|
|
94
|
+
"23b29f89b45f4af41588dcaf0ca572ada32872a88224f311373917f1b37d08d1",
|
|
95
|
+
"d3c79b99ac4d265c2f97ac11e3232c07a598b020cf56c6f055472c893c0967ae",
|
|
96
|
+
"8242640732773249312c47ca7bdb50ca79f15f2ecc32b9c83ceebba44fb74df7",
|
|
97
|
+
"e36200aaa8dce9453567bba108bdc51f7f1174b97a65e4dc4402fc5de779d41c",
|
|
98
|
+
"f178fcce82f95c524b53b077e6180bd2d779a9057fdff4255a0af95af918cee0",
|
|
99
|
+
"de13fc96ea6899acbdc5db3afaa683f62fe35b60ff6eb723dad28a11d2b12f8c",
|
|
100
|
+
"cbdd028cfe32c1c1f2d84bfec71e19f92df509bba7b8ad31ca6c1a134fe09204"
|
|
101
|
+
],
|
|
102
|
+
"covenant_quorum": 6,
|
|
103
|
+
"min_staking_value_sat": "500000",
|
|
104
|
+
"max_staking_value_sat": "500000000000",
|
|
105
|
+
"min_staking_time_blocks": 64000,
|
|
106
|
+
"max_staking_time_blocks": 64000,
|
|
107
|
+
"slashing_pk_script": "agdiYWJ5bG9u",
|
|
108
|
+
"min_slashing_tx_fee_sat": "100000",
|
|
109
|
+
"slashing_rate": "0.001000000000000000",
|
|
110
|
+
"unbonding_time_blocks": 1008,
|
|
111
|
+
"unbonding_fee_sat": "32000",
|
|
112
|
+
"min_commission_rate": "0.030000000000000000",
|
|
113
|
+
"delegation_creation_base_gas_fee": "1095000",
|
|
114
|
+
"allow_list_expiration_height": "139920",
|
|
115
|
+
"btc_activation_height": 891425
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/utxo-staking",
|
|
3
|
-
"version": "1.1.1-beta.
|
|
3
|
+
"version": "1.1.1-beta.283",
|
|
4
4
|
"description": "BitGo SDK for build UTXO staking transactions",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -43,11 +43,12 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@babylonlabs-io/babylon-proto-ts": "1.0.0",
|
|
46
|
-
"@bitgo-beta/babylonlabs-io-btc-staking-ts": "0.4.0-beta.
|
|
47
|
-
"@bitgo-beta/unspents": "0.13.2-beta.
|
|
48
|
-
"@bitgo-beta/utxo-core": "1.0.0-beta.
|
|
49
|
-
"@bitgo-beta/utxo-lib": "8.0.3-beta.
|
|
46
|
+
"@bitgo-beta/babylonlabs-io-btc-staking-ts": "0.4.0-beta.87",
|
|
47
|
+
"@bitgo-beta/unspents": "0.13.2-beta.842",
|
|
48
|
+
"@bitgo-beta/utxo-core": "1.0.0-beta.153",
|
|
49
|
+
"@bitgo-beta/utxo-lib": "8.0.3-beta.843",
|
|
50
50
|
"@bitgo/wasm-miniscript": "2.0.0-beta.7",
|
|
51
|
+
"bip322-js": "^2.0.0",
|
|
51
52
|
"bitcoinjs-lib": "^6.1.7",
|
|
52
53
|
"fp-ts": "^2.16.2",
|
|
53
54
|
"io-ts": "npm:@bitgo-forks/io-ts@2.1.4",
|
|
@@ -56,5 +57,5 @@
|
|
|
56
57
|
"devDependencies": {
|
|
57
58
|
"yargs": "^17.7.2"
|
|
58
59
|
},
|
|
59
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "14020d4881c54dbddf4e27de283d0e35ea016045"
|
|
60
61
|
}
|