@bitgo-beta/sdk-core 8.2.1-beta.2088 → 8.2.1-beta.2089

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.
@@ -88,7 +88,8 @@ export declare class MissingEncryptedKeychainError extends Error {
88
88
  export declare class IncorrectPasswordError extends Error {
89
89
  code: string;
90
90
  status: number;
91
- constructor(message?: string);
91
+ cause?: unknown;
92
+ constructor(message?: string, cause?: unknown);
92
93
  }
93
94
  export declare class NeedUserSignupError extends BitGoJsError {
94
95
  constructor(message?: string);
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/bitgo/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/bitgo/errors.ts"],"names":[],"mappings":"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"}
@@ -168,11 +168,12 @@ class MissingEncryptedKeychainError extends Error {
168
168
  }
169
169
  exports.MissingEncryptedKeychainError = MissingEncryptedKeychainError;
170
170
  class IncorrectPasswordError extends Error {
171
- constructor(message) {
171
+ constructor(message, cause) {
172
172
  super(message || 'unable to decrypt keychain with the given wallet passphrase');
173
173
  this.code = 'wallet_passphrase_incorrect';
174
174
  this.status = 401;
175
175
  this.name = 'IncorrectPasswordError';
176
+ this.cause = cause;
176
177
  }
177
178
  }
178
179
  exports.IncorrectPasswordError = IncorrectPasswordError;
@@ -340,4 +341,4 @@ class TxIntentMismatchApprovalError extends TxIntentMismatchError {
340
341
  }
341
342
  }
342
343
  exports.TxIntentMismatchApprovalError = TxIntentMismatchApprovalError;
343
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBNEQ7QUFDNUQsa0RBQWtEO0FBQ2xELGtEQUErQztBQU90Qyw2RkFQQSwyQkFBWSxPQU9BO0FBRXJCLE1BQWEscUJBQXNCLFNBQVEsMkJBQVk7SUFDckQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQsTUFBYSxvQkFBcUIsU0FBUSwyQkFBWTtJQUNwRCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLHVEQUF1RCxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBSkQsb0RBSUM7QUFFRCxNQUFhLG9CQUFxQixTQUFRLDJCQUFZO0lBQ3BELFlBQW1CLElBQVk7UUFDN0IsS0FBSyxDQUNILHNCQUFzQixJQUFJLHFLQUFxSyxJQUFJLFNBQVMsQ0FDN00sQ0FBQztJQUNKLENBQUM7Q0FDRjtBQU5ELG9EQU1DO0FBRUQsTUFBYSwrQkFBZ0MsU0FBUSwyQkFBWTtJQUMvRCxZQUFtQixVQUFrQjtRQUNuQyxLQUFLLENBQ0gsd0RBQXdELFVBQVUsa0lBQWtJLFVBQVUsK0NBQStDLENBQzlQLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFORCwwRUFNQztBQUVELE1BQWEsNkJBQThCLFNBQVEsMkJBQVk7SUFDN0QsWUFBWSxXQUFtQixFQUFFLEtBQXNCO1FBQ3JELEtBQUssQ0FBQyxnQkFBZ0IsV0FBVyxpQ0FBaUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0NBQ0Y7QUFKRCxzRUFJQztBQUVELE1BQWEseUJBQTBCLFNBQVEsMkJBQVk7SUFDekQsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxJQUFJLHNDQUFzQyxDQUFDLENBQUM7SUFDM0Qs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QUFDO1FBQ25ELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztJQUNuRCxDQUFDO0NBQ0Y7QUF4QkQsd0VBd0JDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSw2QkFBOEIsU0FBUSxxQkFBcUI7SUFHdEU7Ozs7Ozs7OztPQVNHO0lBQ0gsWUFDRSxPQUFlLEVBQ2YsRUFBdUMsRUFDdkMsUUFBNkIsRUFDN0IsS0FBeUIsRUFDekIscUJBQTBDLEVBQzFDLGFBQXVCO1FBRXZCLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQXhCRCxzRUF3QkM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLDZCQUE4QixTQUFRLHFCQUFxQjtJQUd0RTs7Ozs7Ozs7O09BU0c7SUFDSCxZQUNFLE9BQWUsRUFDZixFQUF1QyxFQUN2QyxRQUE2QixFQUM3QixLQUF5QixFQUN6QixhQUE0QixFQUM1QixhQUF1QjtRQUV2QixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQXhCRCxzRUF3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBEZXNjcmlwdGl2ZSBlcnJvciB0eXBlcyBmb3IgY29tbW9uIGlzc3VlcyB3aGljaCBtYXkgYXJpc2Vcbi8vIGR1cmluZyB0aGUgb3BlcmF0aW9uIG9mIEJpdEdvSlMgb3IgQml0R29FeHByZXNzXG5pbXBvcnQgeyBCaXRHb0pzRXJyb3IgfSBmcm9tICcuLi9iaXRnb2pzRXJyb3InO1xuaW1wb3J0IHsgSVJlcXVlc3RUcmFjZXIgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25QYXJhbXMgfSBmcm9tICcuL2Jhc2VDb2luJztcbmltcG9ydCB7IElCYXNlQ29pbiB9IGZyb20gJy4vYmFzZUNvaW4vaUJhc2VDb2luJztcbmltcG9ydCB7IFNlbmRNYW55T3B0aW9ucyB9IGZyb20gJy4vd2FsbGV0JztcblxuLy8gcmUtZXhwb3J0IGZvciBiYWNrd2FyZHMgY29tcGF0XG5leHBvcnQgeyBCaXRHb0pzRXJyb3IgfTtcblxuZXhwb3J0IGNsYXNzIFRsc0NvbmZpZ3VyYXRpb25FcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnVExTIGlzIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb2RlRW52aXJvbm1lbnRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnTk9ERV9FTlYgaXMgaW52YWxpZCBmb3IgdGhlIGN1cnJlbnQgYml0Z28gZW52aXJvbm1lbnQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5zdXBwb3J0ZWRDb2luRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbjogc3RyaW5nKSB7XG4gICAgc3VwZXIoXG4gICAgICBgQ29pbiBvciB0b2tlbiB0eXBlICR7Y29pbn0gbm90IHN1cHBvcnRlZCBvciBub3QgY29tcGlsZWQuIFBsZWFzZSBiZSBzdXJlIHRoYXQgeW91IGFyZSB1c2luZyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgQml0R29KUy4gSWYgdXNpbmcgQGJpdGdvLWJldGEvc2RrLWFwaSwgcGxlYXNlIGNvbmZpcm0geW91IGhhdmUgcmVnaXN0ZXJlZCAke2NvaW59IGZpcnN0LmBcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTYWZlTXBjQ2VyZW1vbnlVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW5GYW1pbHk6IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgYENhbm5vdCBjcmVhdGUgV2FsbGV0IFNhZmUgcm9vdCBrZXlzIGZvciBjb2luIGZhbWlseSAnJHtjb2luRmFtaWx5fSc6IGl0cyBUU1Mgc2V0dGluZ3MgcmVzb2x2ZSB0byB0aGUgbGVnYWN5IE1QQ3YxIGNlcmVtb255LCB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IHNhZmUgcm9vdCB0YWdnaW5nIChzYWZlSWQpLiBFbmFibGUgTVBDdjIgZm9yICcke2NvaW5GYW1pbHl9JyBiZWZvcmUgY3JlYXRpbmcgYSBzYWZlIHdpdGggdGhpcyByb290IHR5cGUuYFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkZHJlc3NUeXBlQ2hhaW5NaXNtYXRjaEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgY29uc3RydWN0b3IoYWRkcmVzc1R5cGU6IHN0cmluZywgY2hhaW46IG51bWJlciB8IHN0cmluZykge1xuICAgIHN1cGVyKGBhZGRyZXNzIHR5cGUgJHthZGRyZXNzVHlwZX0gZG9lcyBub3QgY29ycmVzcG9uZCB0byBjaGFpbiAke2NoYWlufWApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQMnNoUDJ3c2hVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3Ayc2hQMndzaCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgY29pbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQMndzaFVuc3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3Ayd3NoIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBjb2luJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFAydHJVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdwMnRyIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBjb2luJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFAydHJNdXNpZzJVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdwMnRyTXVzaWcyIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBjb2luJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuc3VwcG9ydGVkQWRkcmVzc1R5cGVFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnaW52YWxpZCBhZGRyZXNzIHR5cGUnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEFkZHJlc3NFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnaW52YWxpZCBhZGRyZXNzJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBZGRyZXNzVmVyaWZpY2F0aW9uT2JqZWN0UHJvcGVydHlFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmUnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZEFkZHJlc3NFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmUnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnYWRkcmVzcyBjaGFpbiBhbmQvb3IgaW5kZXggYXJlIGludmFsaWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV2FsbGV0UmVjb3ZlcnlVbnN1cHBvcnRlZCBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnd2FsbGV0IHJlY292ZXJ5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBjb2luJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmxvY2tFeHBsb3JlclVuYXZhaWxhYmxlIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICd0aGlyZC1wYXJ0eSBibG9ja2V4cGxvcmVyIG5vdCByZXNwb25kaW5nJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRNZW1vSWRFcnJvciBleHRlbmRzIEludmFsaWRBZGRyZXNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2ludmFsaWQgbWVtbyBpZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUGF5bWVudElkRXJyb3IgZXh0ZW5kcyBJbnZhbGlkQWRkcmVzc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdpbnZhbGlkIHBheW1lbnQgaWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5UmVjb3ZlcnlTZXJ2aWNlRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2tleSByZWNvdmVyeSBzZXJ2aWNlIGVuY291bnRlcmVkIGFuIGVycm9yJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkZHJlc3NHZW5lcmF0aW9uRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2FkZHJlc3MgZ2VuZXJhdGlvbiBmYWlsZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXRoZXJldW1MaWJyYXJ5VW5hdmFpbGFibGVFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYWNrYWdlTmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYEV0aGVyZXVtIGxpYnJhcnkgcmVxdWlyZWQgZm9yIG9wZXJhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgaW5zdGFsbCBcIiR7cGFja2FnZU5hbWV9XCIuYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0ZWxsYXJGZWRlcmF0aW9uVXNlck5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2FjY291bnQgbm90IGZvdW5kJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yTm9JbnB1dFRvUmVjb3ZlciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnTm8gaW5wdXQgdG8gcmVjb3ZlciAtIGFib3J0aW5nIScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkS2V5UGF0aEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGtleVBhdGg6IHN0cmluZykge1xuICAgIHN1cGVyKGBpbnZhbGlkIGtleXBhdGg6ICR7a2V5UGF0aH1gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWlzc2luZ0VuY3J5cHRlZEtleWNoYWluRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnTm8gZW5jcnlwdGVkIGtleWNoYWlucyBvbiB0aGlzIHdhbGxldC4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5jb3JyZWN0UGFzc3dvcmRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvZGUgPSAnd2FsbGV0X3Bhc3NwaHJhc2VfaW5jb3JyZWN0JztcbiAgcHVibGljIHN0YXR1cyA9IDQwMTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3VuYWJsZSB0byBkZWNyeXB0IGtleWNoYWluIHdpdGggdGhlIGdpdmVuIHdhbGxldCBwYXNzcGhyYXNlJyk7XG4gICAgdGhpcy5uYW1lID0gJ0luY29ycmVjdFBhc3N3b3JkRXJyb3InO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOZWVkVXNlclNpZ251cEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdVc2VyIHNpZ251cCBpcyByZXF1aXJlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlSZXNwb25zZUVycm9yPFJlc3BvbnNlQm9keVR5cGUgPSBhbnk+IGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzdGF0dXM6IG51bWJlcjtcbiAgcmVzdWx0PzogUmVzcG9uc2VCb2R5VHlwZTtcbiAgaW52YWxpZFRva2VuPzogYm9vbGVhbjtcbiAgbmVlZHNPVFA/OiBib29sZWFuO1xuICAvLyBFY2hvZWQgYmFjayB2aWEgdGhlIGBSZXF1ZXN0LUlEYCByZXNwb25zZSBoZWFkZXIgKHNlZSBsb2dnaW5nLWV4cHJlc3MncyBgYmVnaW5Mb2dnaW5nYCksXG4gIC8vIHNvIGl0IGNhbiBiZSB1c2VkIHRvIGNvcnJlbGF0ZSB0aGlzIGVycm9yIHdpdGggdGhlIHNlcnZlci1zaWRlIHJlcXVlc3QgbG9ncy5cbiAgcmVxdWVzdElkPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgc3RhdHVzOiBudW1iZXIsXG4gICAgcmVzdWx0PzogUmVzcG9uc2VCb2R5VHlwZSxcbiAgICBpbnZhbGlkVG9rZW4/OiBib29sZWFuLFxuICAgIG5lZWRzT1RQPzogYm9vbGVhbixcbiAgICByZXF1ZXN0SWQ/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXR1cztcbiAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbiAgICB0aGlzLmludmFsaWRUb2tlbiA9IGludmFsaWRUb2tlbjtcbiAgICB0aGlzLm5lZWRzT1RQID0gbmVlZHNPVFA7XG4gICAgdGhpcy5yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIHRva2VuIGFwcHJvdmFsIGluZm9ybWF0aW9uIHVzZWQgaW4gc3VzcGljaW91cyB0cmFuc2FjdGlvbiBkZXRlY3Rpb25cbiAqXG4gKiBAaW50ZXJmYWNlIFRva2VuQXBwcm92YWxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdG9rZW5OYW1lXSAtIE9wdGlvbmFsIGh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdGhlIHRva2VuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdG9rZW5BZGRyZXNzIC0gVGhlIGNvbnRyYWN0IGFkZHJlc3Mgb2YgdGhlIHRva2VuIGJlaW5nIGFwcHJvdmVkXG4gKiBAcHJvcGVydHkge09iamVjdH0gYXV0aG9yaXppbmdBbW91bnQgLSBUaGUgYW1vdW50IGJlaW5nIGF1dGhvcml6ZWQgZm9yIHNwZW5kaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXV0aG9yaXppbmdBZGRyZXNzIC0gVGhlIGFkZHJlc3MgYmVpbmcgYXV0aG9yaXplZCB0byBzcGVuZCB0aGUgdG9rZW5zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5BcHByb3ZhbCB7XG4gIHRva2VuTmFtZT86IHN0cmluZztcbiAgdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG4gIGF1dGhvcml6aW5nQW1vdW50OiB7IHR5cGU6ICd1bmxpbWl0ZWQnIH0gfCB7IHR5cGU6ICdsaW1pdGVkJzsgYW1vdW50OiBudW1iZXIgfTtcbiAgYXV0aG9yaXppbmdBZGRyZXNzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBtaXNtYXRjaGVkIHJlY2lwaWVudCBpbmZvcm1hdGlvbiBkZXRlY3RlZCBkdXJpbmcgdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uXG4gKlxuICogQGludGVyZmFjZSBNaXNtYXRjaGVkUmVjaXBpZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWRkcmVzcyAtIFRoZSByZWNpcGllbnQgYWRkcmVzcyB0aGF0IHdhcyBmb3VuZCBpbiB0aGUgdHJhbnNhY3Rpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhbW91bnQgLSBUaGUgYW1vdW50IGJlaW5nIHNlbnQgdG8gdGhpcyByZWNpcGllbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgVG9rZW5UcmFuc2ZlclJlY2lwaWVudFBhcmFtc30gW2RhdGFdIC0gT3B0aW9uYWwgdHJhbnNhY3Rpb24gZGF0YSBvciB0b2tlbiB0cmFuc2ZlciBwYXJhbWV0ZXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Rva2VuTmFtZV0gLSBPcHRpb25hbCBuYW1lIG9mIHRoZSB0b2tlbiBiZWluZyB0cmFuc2ZlcnJlZFxuICogQHByb3BlcnR5IHtUb2tlblRyYW5zZmVyUmVjaXBpZW50UGFyYW1zfSBbdG9rZW5EYXRhXSAtIE9wdGlvbmFsIHN0cnVjdHVyZWQgdG9rZW4gdHJhbnNmZXIgZGF0YVxuICovXG5leHBvcnQgdHlwZSBNaXNtYXRjaGVkUmVjaXBpZW50ID0gTm9uTnVsbGFibGU8U2VuZE1hbnlPcHRpb25zWydyZWNpcGllbnRzJ10+WzBdO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgY29udHJhY3QgaW50ZXJhY3Rpb24gZGF0YSBwYXlsb2FkIHVzZWQgaW4gc3VzcGljaW91cyB0cmFuc2FjdGlvbiBkZXRlY3Rpb25cbiAqXG4gKiBAaW50ZXJmYWNlIENvbnRyYWN0RGF0YVBheWxvYWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhZGRyZXNzIC0gVGhlIGNvbnRyYWN0IGFkZHJlc3MgYmVpbmcgaW50ZXJhY3RlZCB3aXRoXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcmF3Q29udHJhY3RQYXlsb2FkIC0gVGhlIHJhdyBjb250cmFjdCBwYXlsb2FkIGluIHNlcmlhbGl6ZWQgZm9ybSBzcGVjaWZpYyB0byB0aGUgYmxvY2tjaGFpblxuICogQHByb3BlcnR5IHt1bmtub3dufSBkZWNvZGVkQ29udHJhY3RQYXlsb2FkIC0gVGhlIGRlY29kZWQgY29udHJhY3QgcGF5bG9hZCwgc3RydWN0dXJlIHZhcmllcyBieSBjb2luL2NoYWluIGltcGxlbWVudGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJhY3REYXRhUGF5bG9hZCB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgLy8gVGhlIHJhdyBjb250cmFjdCBwYXlsb2FkIGluIHNlcmlhbGl6ZWQgZm9ybSBvZiB0aGUgY2hhaW5cbiAgcmF3Q29udHJhY3RQYXlsb2FkOiBzdHJpbmc7XG4gIC8vIFRvIGJlIGRlZmluZWQgb24gYSBwZXItY29pbiBiYXNpc1xuICBkZWNvZGVkQ29udHJhY3RQYXlsb2FkOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEJhc2UgZXJyb3IgY2xhc3MgZm9yIHRyYW5zYWN0aW9uIGludGVudCBtaXNtYXRjaCBkZXRlY3Rpb25cbiAqXG4gKiBUaGlzIGVycm9yIGlzIHRocm93biB3aGVuIGEgdHJhbnNhY3Rpb24gZG9lcyBub3QgbWF0Y2ggdGhlIHVzZXIncyBvcmlnaW5hbCBpbnRlbnQsXG4gKiBpbmRpY2F0aW5nIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXMgb3IgbWFsaWNpb3VzIG1vZGlmaWNhdGlvbnMuXG4gKlxuICogQGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hFcnJvclxuICogQGV4dGVuZHMge0JpdEdvSnNFcnJvcn1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWR9IGlkIC0gVHJhbnNhY3Rpb24gSUQgb3IgcmVxdWVzdCB0cmFjZXIgZm9yIHRyYWNraW5nXG4gKiBAcHJvcGVydHkge1RyYW5zYWN0aW9uUGFyYW1zW119IHR4UGFyYW1zIC0gQXJyYXkgb2YgdHJhbnNhY3Rpb24gcGFyYW1ldGVycyB0aGF0IHdlcmUgYW5hbHl6ZWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB0eEhleCAtIFRoZSByYXcgdHJhbnNhY3Rpb24gaW4gaGV4YWRlY2ltYWwgZm9ybWF0XG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gdHhFeHBsYW5hdGlvbiAtIFN0cmluZ2lmaWVkIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBUeEludGVudE1pc21hdGNoRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zW107XG4gIHB1YmxpYyByZWFkb25seSB0eEhleDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgdHhFeHBsYW5hdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFR4SW50ZW50TWlzbWF0Y2hFcnJvclxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgaW50ZW50IG1pc21hdGNoXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWR9IGlkIC0gVHJhbnNhY3Rpb24gSUQgb3IgcmVxdWVzdCB0cmFjZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblBhcmFtc1tdfSB0eFBhcmFtcyAtIFRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGFuYWx5emVkXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB0eEhleCAtIFJhdyB0cmFuc2FjdGlvbiBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdHhFeHBsYW5hdGlvbiAtIFRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZCxcbiAgICB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXNbXSxcbiAgICB0eEhleDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHR4RXhwbGFuYXRpb24/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLnR4UGFyYW1zID0gdHhQYXJhbXM7XG4gICAgdGhpcy50eEhleCA9IHR4SGV4O1xuICAgIHRoaXMudHhFeHBsYW5hdGlvbiA9IHR4RXhwbGFuYXRpb24gPyBUeEludGVudE1pc21hdGNoRXJyb3Iuc2FmZVN0cmluZ2lmeSh0eEV4cGxhbmF0aW9uKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYWZlbHkgc3RyaW5naWZ5IGEgdmFsdWUgd2l0aCBCaWdJbnQgc3VwcG9ydFxuICAgKiBAcGFyYW0gdmFsdWUgLSBWYWx1ZSB0byBzdHJpbmdpZnlcbiAgICogQHJldHVybnMgSlNPTiBzdHJpbmcgd2l0aCBCaWdJbnRzIGNvbnZlcnRlZCB0byBzdHJpbmdzXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBzYWZlU3RyaW5naWZ5KHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIChfLCB2KSA9PiAodHlwZW9mIHYgPT09ICdiaWdpbnQnID8gdi50b1N0cmluZygpIDogdiksIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBnZXQgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gZnJvbSBhIGNvaW4ncyBleHBsYWluVHJhbnNhY3Rpb24gbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0gY29pbiAtIENvaW4gaW5zdGFuY2UgaW1wbGVtZW50aW5nIElCYXNlQ29pblxuICAgKiBAcGFyYW0gdHhQcmVidWlsZCAtIFRyYW5zYWN0aW9uIHByZWJ1aWxkIGNvbnRhaW5pbmcgdHhIZXggYW5kIHR4SW5mb1xuICAgKiBAcmV0dXJucyBUcmFuc2FjdGlvbiBleHBsYW5hdGlvbiBvYmplY3Qgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgdHJ5R2V0VHhFeHBsYW5hdGlvbihcbiAgICBjb2luOiBJQmFzZUNvaW4sXG4gICAgdHhQcmVidWlsZDogeyB0eEhleD86IHN0cmluZzsgdHhJbmZvPzogdW5rbm93biB9XG4gICk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGlmICghdHhQcmVidWlsZC50eEhleCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGNvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhIZXg6IHR4UHJlYnVpbGQudHhIZXgsXG4gICAgICAgIHR4SW5mbzogdHhQcmVidWlsZC50eEluZm8sXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlcnJvcjogJ0ZhaWxlZCB0byBwYXJzZSB0cmFuc2FjdGlvbiBleHBsYW5hdGlvbicsXG4gICAgICAgIHR4SGV4OiB0eFByZWJ1aWxkLnR4SGV4LFxuICAgICAgICBkZXRhaWxzOiBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSksXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIHRyYW5zYWN0aW9uIHJlY2lwaWVudHMgZG9uJ3QgbWF0Y2ggdGhlIHVzZXIncyBpbnRlbnRcbiAqXG4gKiBUaGlzIGVycm9yIG9jY3VycyB3aGVuIHRoZSB0cmFuc2FjdGlvbiBjb250YWlucyByZWNpcGllbnRzIG9yIGFtb3VudHMgdGhhdCBkaWZmZXJcbiAqIGZyb20gd2hhdCB0aGUgdXNlciBvcmlnaW5hbGx5IGludGVuZGVkIHRvIHNlbmQuXG4gKlxuICogQGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvclxuICogQGV4dGVuZHMge1R4SW50ZW50TWlzbWF0Y2hFcnJvcn1cbiAqIEBwcm9wZXJ0eSB7TWlzbWF0Y2hlZFJlY2lwaWVudFtdfSBtaXNtYXRjaGVkUmVjaXBpZW50cyAtIEFycmF5IG9mIHJlY2lwaWVudHMgdGhhdCBkb24ndCBtYXRjaCB1c2VyIGludGVudFxuICovXG5leHBvcnQgY2xhc3MgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yIGV4dGVuZHMgVHhJbnRlbnRNaXNtYXRjaEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IG1pc21hdGNoZWRSZWNpcGllbnRzOiBNaXNtYXRjaGVkUmVjaXBpZW50W107XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVHhJbnRlbnRNaXNtYXRjaFJlY2lwaWVudEVycm9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gRXJyb3IgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSByZWNpcGllbnQgaW50ZW50IG1pc21hdGNoXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWR9IGlkIC0gVHJhbnNhY3Rpb24gSUQgb3IgcmVxdWVzdCB0cmFjZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblBhcmFtc1tdfSB0eFBhcmFtcyAtIFRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGFuYWx5emVkXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB0eEhleCAtIFJhdyB0cmFuc2FjdGlvbiBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSB7TWlzbWF0Y2hlZFJlY2lwaWVudFtdfSBtaXNtYXRjaGVkUmVjaXBpZW50cyAtIEFycmF5IG9mIHJlY2lwaWVudHMgdGhhdCBkb24ndCBtYXRjaCB1c2VyIGludGVudFxuICAgKiBAcGFyYW0ge3Vua25vd259IHR4RXhwbGFuYXRpb24gLSBUcmFuc2FjdGlvbiBleHBsYW5hdGlvblxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWQsXG4gICAgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zW10sXG4gICAgdHhIZXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBtaXNtYXRjaGVkUmVjaXBpZW50czogTWlzbWF0Y2hlZFJlY2lwaWVudFtdLFxuICAgIHR4RXhwbGFuYXRpb24/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIGlkLCB0eFBhcmFtcywgdHhIZXgsIHR4RXhwbGFuYXRpb24pO1xuICAgIHRoaXMubWlzbWF0Y2hlZFJlY2lwaWVudHMgPSBtaXNtYXRjaGVkUmVjaXBpZW50cztcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGNvbnRyYWN0IGludGVyYWN0aW9uIGRvZXNuJ3QgbWF0Y2ggdGhlIHVzZXIncyBpbnRlbnRcbiAqXG4gKiBUaGlzIGVycm9yIG9jY3VycyB3aGVuIGEgdHJhbnNhY3Rpb24gaW50ZXJhY3RzIHdpdGggYSBzbWFydCBjb250cmFjdCBidXQgdGhlXG4gKiBjb250cmFjdCBjYWxsIGRhdGEgb3IgbWV0aG9kIGRvZXNuJ3QgbWF0Y2ggd2hhdCB0aGUgdXNlciBpbnRlbmRlZC5cbiAqXG4gKiBAY2xhc3MgVHhJbnRlbnRNaXNtYXRjaENvbnRyYWN0RXJyb3JcbiAqIEBleHRlbmRzIHtUeEludGVudE1pc21hdGNoRXJyb3J9XG4gKiBAcHJvcGVydHkge0NvbnRyYWN0RGF0YVBheWxvYWR9IG1pc21hdGNoZWREYXRhUGF5bG9hZCAtIFRoZSBjb250cmFjdCBpbnRlcmFjdGlvbiBkYXRhIHRoYXQgZG9lc24ndCBtYXRjaCB1c2VyIGludGVudFxuICovXG5leHBvcnQgY2xhc3MgVHhJbnRlbnRNaXNtYXRjaENvbnRyYWN0RXJyb3IgZXh0ZW5kcyBUeEludGVudE1pc21hdGNoRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgbWlzbWF0Y2hlZERhdGFQYXlsb2FkOiBDb250cmFjdERhdGFQYXlsb2FkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFR4SW50ZW50TWlzbWF0Y2hDb250cmFjdEVycm9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gRXJyb3IgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBjb250cmFjdCBpbnRlbnQgbWlzbWF0Y2hcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZH0gaWQgLSBUcmFuc2FjdGlvbiBJRCBvciByZXF1ZXN0IHRyYWNlclxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGFyYW1zW119IHR4UGFyYW1zIC0gVHJhbnNhY3Rpb24gcGFyYW1ldGVycyB0aGF0IHdlcmUgYW5hbHl6ZWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHR4SGV4IC0gUmF3IHRyYW5zYWN0aW9uIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHtDb250cmFjdERhdGFQYXlsb2FkfSBtaXNtYXRjaGVkRGF0YVBheWxvYWQgLSBUaGUgY29udHJhY3QgaW50ZXJhY3Rpb24gZGF0YSB0aGF0IGRvZXNuJ3QgbWF0Y2ggdXNlciBpbnRlbnRcbiAgICogQHBhcmFtIHt1bmtub3dufSB0eEV4cGxhbmF0aW9uIC0gVHJhbnNhY3Rpb24gZXhwbGFuYXRpb25cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkLFxuICAgIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtc1tdLFxuICAgIHR4SGV4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgbWlzbWF0Y2hlZERhdGFQYXlsb2FkOiBDb250cmFjdERhdGFQYXlsb2FkLFxuICAgIHR4RXhwbGFuYXRpb24/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIGlkLCB0eFBhcmFtcywgdHhIZXgsIHR4RXhwbGFuYXRpb24pO1xuICAgIHRoaXMubWlzbWF0Y2hlZERhdGFQYXlsb2FkID0gbWlzbWF0Y2hlZERhdGFQYXlsb2FkO1xuICB9XG59XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gdG9rZW4gYXBwcm92YWwgZG9lc24ndCBtYXRjaCB0aGUgdXNlcidzIGludGVudFxuICpcbiAqIFRoaXMgZXJyb3Igb2NjdXJzIHdoZW4gYSB0cmFuc2FjdGlvbiBjb250YWlucyBhIHRva2VuIGFwcHJvdmFsIHRoYXQgdGhlIHVzZXJcbiAqIGRpZCBub3QgaW50ZW5kIHRvIGF1dGhvcml6ZSwgcG90ZW50aWFsbHkgaW5kaWNhdGluZyBtYWxpY2lvdXMgYWN0aXZpdHkuXG4gKlxuICogQGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hBcHByb3ZhbEVycm9yXG4gKiBAZXh0ZW5kcyB7VHhJbnRlbnRNaXNtYXRjaEVycm9yfVxuICogQHByb3BlcnR5IHtUb2tlbkFwcHJvdmFsfSB0b2tlbkFwcHJvdmFsIC0gRGV0YWlscyBvZiB0aGUgdG9rZW4gYXBwcm92YWwgdGhhdCBkb2Vzbid0IG1hdGNoIHVzZXIgaW50ZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBUeEludGVudE1pc21hdGNoQXBwcm92YWxFcnJvciBleHRlbmRzIFR4SW50ZW50TWlzbWF0Y2hFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSB0b2tlbkFwcHJvdmFsOiBUb2tlbkFwcHJvdmFsO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFR4SW50ZW50TWlzbWF0Y2hBcHByb3ZhbEVycm9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gRXJyb3IgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBhcHByb3ZhbCBpbnRlbnQgbWlzbWF0Y2hcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZH0gaWQgLSBUcmFuc2FjdGlvbiBJRCBvciByZXF1ZXN0IHRyYWNlclxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGFyYW1zW119IHR4UGFyYW1zIC0gVHJhbnNhY3Rpb24gcGFyYW1ldGVycyB0aGF0IHdlcmUgYW5hbHl6ZWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHR4SGV4IC0gUmF3IHRyYW5zYWN0aW9uIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHtUb2tlbkFwcHJvdmFsfSB0b2tlbkFwcHJvdmFsIC0gRGV0YWlscyBvZiB0aGUgdG9rZW4gYXBwcm92YWwgdGhhdCBkb2Vzbid0IG1hdGNoIHVzZXIgaW50ZW50XG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdHhFeHBsYW5hdGlvbiAtIFRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZCxcbiAgICB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXNbXSxcbiAgICB0eEhleDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHRva2VuQXBwcm92YWw6IFRva2VuQXBwcm92YWwsXG4gICAgdHhFeHBsYW5hdGlvbj86IHVua25vd25cbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgaWQsIHR4UGFyYW1zLCB0eEhleCwgdHhFeHBsYW5hdGlvbik7XG4gICAgdGhpcy50b2tlbkFwcHJvdmFsID0gdG9rZW5BcHByb3ZhbDtcbiAgfVxufVxuIl19
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBNEQ7QUFDNUQsa0RBQWtEO0FBQ2xELGtEQUErQztBQU90Qyw2RkFQQSwyQkFBWSxPQU9BO0FBRXJCLE1BQWEscUJBQXNCLFNBQVEsMkJBQVk7SUFDckQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQsTUFBYSxvQkFBcUIsU0FBUSwyQkFBWTtJQUNwRCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLHVEQUF1RCxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBSkQsb0RBSUM7QUFFRCxNQUFhLG9CQUFxQixTQUFRLDJCQUFZO0lBQ3BELFlBQW1CLElBQVk7UUFDN0IsS0FBSyxDQUNILHNCQUFzQixJQUFJLHFLQUFxSyxJQUFJLFNBQVMsQ0FDN00sQ0FBQztJQUNKLENBQUM7Q0FDRjtBQU5ELG9EQU1DO0FBRUQsTUFBYSwrQkFBZ0MsU0FBUSwyQkFBWTtJQUMvRCxZQUFtQixVQUFrQjtRQUNuQyxLQUFLLENBQ0gsd0RBQXdELFVBQVUsa0lBQWtJLFVBQVUsK0NBQStDLENBQzlQLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFORCwwRUFNQztBQUVELE1BQWEsNkJBQThCLFNBQVEsMkJBQVk7SUFDN0QsWUFBWSxXQUFtQixFQUFFLEtBQXNCO1FBQ3JELEtBQUssQ0FBQyxnQkFBZ0IsV0FBVyxpQ0FBaUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0NBQ0Y7QUFKRCxzRUFJQztBQUVELE1BQWEseUJBQTBCLFNBQVEsMkJBQVk7SUFDekQsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxJQUFJLHNDQUFzQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNGO0FBSkQsOERBSUM7QUFFRCxNQUFhLHFCQUFzQixTQUFRLDJCQUFZO0lBQ3JELFlBQW1CLE9BQWdCO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLElBQUksa0NBQWtDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0NBQ0Y7QUFKRCxzREFJQztBQUVELE1BQWEsb0JBQXFCLFNBQVEsMkJBQVk7SUFDcEQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQUpELG9EQUlDO0FBRUQsTUFBYSwwQkFBMkIsU0FBUSwyQkFBWTtJQUMxRCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLHVDQUF1QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGO0FBSkQsZ0VBSUM7QUFFRCxNQUFhLDJCQUE0QixTQUFRLDJCQUFZO0lBQzNELFlBQW1CLE9BQWdCO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLElBQUksc0JBQXNCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFKRCxrRUFJQztBQUVELE1BQWEsbUJBQW9CLFNBQVEsMkJBQVk7SUFDbkQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQUpELGtEQUlDO0FBRUQsTUFBYSw2Q0FBOEMsU0FBUSwyQkFBWTtJQUM3RSxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLDRCQUE0QixDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNGO0FBSkQsc0dBSUM7QUFFRCxNQUFhLHNCQUF1QixTQUFRLDJCQUFZO0lBQ3RELFlBQW1CLE9BQWdCO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLElBQUksNEJBQTRCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUFKRCx3REFJQztBQUVELE1BQWEscUNBQXNDLFNBQVEsMkJBQVk7SUFDckUsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzdELENBQUM7Q0FDRjtBQUpELHNGQUlDO0FBRUQsTUFBYSx5QkFBMEIsU0FBUSwyQkFBWTtJQUN6RCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLCtDQUErQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNGO0FBSkQsOERBSUM7QUFFRCxNQUFhLHlCQUEwQixTQUFRLDJCQUFZO0lBQ3pELFlBQW1CLE9BQWdCO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLElBQUksd0JBQXdCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFKRCw4REFJQztBQUVELE1BQWEsd0JBQXlCLFNBQVEsMkJBQVk7SUFDeEQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSwwQ0FBMEMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRjtBQUpELDREQUlDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxtQkFBbUI7SUFDekQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQUpELGdEQUlDO0FBRUQsTUFBYSxxQkFBc0IsU0FBUSxtQkFBbUI7SUFDNUQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQsTUFBYSx1QkFBd0IsU0FBUSwyQkFBWTtJQUN2RCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLDJDQUEyQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGO0FBSkQsMERBSUM7QUFFRCxNQUFhLHNCQUF1QixTQUFRLDJCQUFZO0lBQ3RELFlBQW1CLE9BQWdCO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLElBQUksMkJBQTJCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFKRCx3REFJQztBQUVELE1BQWEsK0JBQWdDLFNBQVEsMkJBQVk7SUFDL0QsWUFBbUIsV0FBbUI7UUFDcEMsS0FBSyxDQUFDLDZFQUE2RSxXQUFXLElBQUksQ0FBQyxDQUFDO0lBQ3RHLENBQUM7Q0FDRjtBQUpELDBFQUlDO0FBRUQsTUFBYSxrQ0FBbUMsU0FBUSwyQkFBWTtJQUNsRSxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLG1CQUFtQixDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBSkQsZ0ZBSUM7QUFFRCxNQUFhLHFCQUFzQixTQUFRLDJCQUFZO0lBQ3JELFlBQW1CLE9BQWdCO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLElBQUksaUNBQWlDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUFKRCxzREFJQztBQUVELE1BQWEsbUJBQW9CLFNBQVEsMkJBQVk7SUFDbkQsWUFBbUIsT0FBZTtRQUNoQyxLQUFLLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBSkQsa0RBSUM7QUFFRCxNQUFhLHVCQUF3QixTQUFRLDJCQUFZO0lBQ3ZELFlBQW1CLE9BQWdCO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLElBQUkscUJBQXFCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUFKRCwwREFJQztBQUVELE1BQWEsNkJBQThCLFNBQVEsS0FBSztJQUN0RCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLHdDQUF3QyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBSkQsc0VBSUM7QUFFRCxNQUFhLHNCQUF1QixTQUFRLEtBQUs7SUFLL0MsWUFBbUIsT0FBZ0IsRUFBRSxLQUFlO1FBQ2xELEtBQUssQ0FBQyxPQUFPLElBQUksNkRBQTZELENBQUMsQ0FBQztRQUwzRSxTQUFJLEdBQUcsNkJBQTZCLENBQUM7UUFDckMsV0FBTSxHQUFHLEdBQUcsQ0FBQztRQUtsQixJQUFJLENBQUMsSUFBSSxHQUFHLHdCQUF3QixDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7Q0FDRjtBQVZELHdEQVVDO0FBRUQsTUFBYSxtQkFBb0IsU0FBUSwyQkFBWTtJQUNuRCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLHlCQUF5QixDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBSkQsa0RBSUM7QUFFRCxNQUFhLGdCQUF5QyxTQUFRLDJCQUFZO0lBVXhFLFlBQ0UsT0FBZSxFQUNmLE1BQWMsRUFDZCxNQUF5QixFQUN6QixZQUFzQixFQUN0QixRQUFrQixFQUNsQixTQUFrQjtRQUVsQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUExQkQsNENBMEJDO0FBOENEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEscUJBQXNCLFNBQVEsMkJBQVk7SUFNckQ7Ozs7Ozs7O09BUUc7SUFDSCxZQUNFLE9BQWUsRUFDZixFQUF1QyxFQUN2QyxRQUE2QixFQUM3QixLQUF5QixFQUN6QixhQUF1QjtRQUV2QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBYztRQUN6QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQzlCLElBQWUsRUFDZixVQUFnRDtRQUVoRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUNuQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7Z0JBQ3ZCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTthQUMxQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLHlDQUF5QztnQkFDaEQsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO2dCQUN2QixPQUFPLEVBQUUsQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUNwRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQWxFRCxzREFrRUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLDhCQUErQixTQUFRLHFCQUFxQjtJQUd2RTs7Ozs7Ozs7O09BU0c7SUFDSCxZQUNFLE9BQWUsRUFDZixFQUF1QyxFQUN2QyxRQUE2QixFQUM3QixLQUF5QixFQUN6QixvQkFBMkMsRUFDM0MsYUFBdUI7UUFFdkIsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBeEJELHdFQXdCQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsNkJBQThCLFNBQVEscUJBQXFCO0lBR3RFOzs7Ozs7Ozs7T0FTRztJQUNILFlBQ0UsT0FBZSxFQUNmLEVBQXVDLEVBQ3ZDLFFBQTZCLEVBQzdCLEtBQXlCLEVBQ3pCLHFCQUEwQyxFQUMxQyxhQUF1QjtRQUV2QixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUF4QkQsc0VBd0JDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSw2QkFBOEIsU0FBUSxxQkFBcUI7SUFHdEU7Ozs7Ozs7OztPQVNHO0lBQ0gsWUFDRSxPQUFlLEVBQ2YsRUFBdUMsRUFDdkMsUUFBNkIsRUFDN0IsS0FBeUIsRUFDekIsYUFBNEIsRUFDNUIsYUFBdUI7UUFFdkIsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUF4QkQsc0VBd0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRGVzY3JpcHRpdmUgZXJyb3IgdHlwZXMgZm9yIGNvbW1vbiBpc3N1ZXMgd2hpY2ggbWF5IGFyaXNlXG4vLyBkdXJpbmcgdGhlIG9wZXJhdGlvbiBvZiBCaXRHb0pTIG9yIEJpdEdvRXhwcmVzc1xuaW1wb3J0IHsgQml0R29Kc0Vycm9yIH0gZnJvbSAnLi4vYml0Z29qc0Vycm9yJztcbmltcG9ydCB7IElSZXF1ZXN0VHJhY2VyIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUGFyYW1zIH0gZnJvbSAnLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBJQmFzZUNvaW4gfSBmcm9tICcuL2Jhc2VDb2luL2lCYXNlQ29pbic7XG5pbXBvcnQgeyBTZW5kTWFueU9wdGlvbnMgfSBmcm9tICcuL3dhbGxldCc7XG5cbi8vIHJlLWV4cG9ydCBmb3IgYmFja3dhcmRzIGNvbXBhdFxuZXhwb3J0IHsgQml0R29Kc0Vycm9yIH07XG5cbmV4cG9ydCBjbGFzcyBUbHNDb25maWd1cmF0aW9uRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ1RMUyBpcyBjb25maWd1cmF0aW9uIGlzIGludmFsaWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm9kZUVudmlyb25tZW50RXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ05PREVfRU5WIGlzIGludmFsaWQgZm9yIHRoZSBjdXJyZW50IGJpdGdvIGVudmlyb25tZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuc3VwcG9ydGVkQ29pbkVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW46IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgYENvaW4gb3IgdG9rZW4gdHlwZSAke2NvaW59IG5vdCBzdXBwb3J0ZWQgb3Igbm90IGNvbXBpbGVkLiBQbGVhc2UgYmUgc3VyZSB0aGF0IHlvdSBhcmUgdXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIEJpdEdvSlMuIElmIHVzaW5nIEBiaXRnby1iZXRhL3Nkay1hcGksIHBsZWFzZSBjb25maXJtIHlvdSBoYXZlIHJlZ2lzdGVyZWQgJHtjb2lufSBmaXJzdC5gXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2FmZU1wY0NlcmVtb255VW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb2luRmFtaWx5OiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBDYW5ub3QgY3JlYXRlIFdhbGxldCBTYWZlIHJvb3Qga2V5cyBmb3IgY29pbiBmYW1pbHkgJyR7Y29pbkZhbWlseX0nOiBpdHMgVFNTIHNldHRpbmdzIHJlc29sdmUgdG8gdGhlIGxlZ2FjeSBNUEN2MSBjZXJlbW9ueSwgd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCBzYWZlIHJvb3QgdGFnZ2luZyAoc2FmZUlkKS4gRW5hYmxlIE1QQ3YyIGZvciAnJHtjb2luRmFtaWx5fScgYmVmb3JlIGNyZWF0aW5nIGEgc2FmZSB3aXRoIHRoaXMgcm9vdCB0eXBlLmBcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzVHlwZUNoYWluTWlzbWF0Y2hFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGFkZHJlc3NUeXBlOiBzdHJpbmcsIGNoYWluOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICBzdXBlcihgYWRkcmVzcyB0eXBlICR7YWRkcmVzc1R5cGV9IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gY2hhaW4gJHtjaGFpbn1gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUDJzaFAyd3NoVW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdwMnNoUDJ3c2ggbm90IHN1cHBvcnRlZCBieSB0aGlzIGNvaW4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUDJ3c2hVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdwMndzaCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgY29pbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQMnRyVW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAncDJ0ciBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgY29pbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQMnRyTXVzaWcyVW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAncDJ0ck11c2lnMiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgY29pbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbnN1cHBvcnRlZEFkZHJlc3NUeXBlRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2ludmFsaWQgYWRkcmVzcyB0eXBlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBZGRyZXNzRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2ludmFsaWQgYWRkcmVzcycpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQWRkcmVzc1ZlcmlmaWNhdGlvbk9iamVjdFByb3BlcnR5RXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2FkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2FkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBZGRyZXNzRGVyaXZhdGlvblByb3BlcnR5RXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2FkZHJlc3MgY2hhaW4gYW5kL29yIGluZGV4IGFyZSBpbnZhbGlkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdhbGxldFJlY292ZXJ5VW5zdXBwb3J0ZWQgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3dhbGxldCByZWNvdmVyeSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgY29pbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrRXhwbG9yZXJVbmF2YWlsYWJsZSBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAndGhpcmQtcGFydHkgYmxvY2tleHBsb3JlciBub3QgcmVzcG9uZGluZycpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkTWVtb0lkRXJyb3IgZXh0ZW5kcyBJbnZhbGlkQWRkcmVzc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdpbnZhbGlkIG1lbW8gaWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFBheW1lbnRJZEVycm9yIGV4dGVuZHMgSW52YWxpZEFkZHJlc3NFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnaW52YWxpZCBwYXltZW50IGlkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtleVJlY292ZXJ5U2VydmljZUVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdrZXkgcmVjb3Zlcnkgc2VydmljZSBlbmNvdW50ZXJlZCBhbiBlcnJvcicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzR2VuZXJhdGlvbkVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdhZGRyZXNzIGdlbmVyYXRpb24gZmFpbGVkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV0aGVyZXVtTGlicmFyeVVuYXZhaWxhYmxlRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFja2FnZU5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKGBFdGhlcmV1bSBsaWJyYXJ5IHJlcXVpcmVkIGZvciBvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGluc3RhbGwgXCIke3BhY2thZ2VOYW1lfVwiLmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdGVsbGFyRmVkZXJhdGlvblVzZXJOb3RGb3VuZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdhY2NvdW50IG5vdCBmb3VuZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck5vSW5wdXRUb1JlY292ZXIgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ05vIGlucHV0IHRvIHJlY292ZXIgLSBhYm9ydGluZyEnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEtleVBhdGhFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihrZXlQYXRoOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgaW52YWxpZCBrZXlwYXRoOiAke2tleVBhdGh9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdFbmNyeXB0ZWRLZXljaGFpbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ05vIGVuY3J5cHRlZCBrZXljaGFpbnMgb24gdGhpcyB3YWxsZXQuJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluY29ycmVjdFBhc3N3b3JkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyBjb2RlID0gJ3dhbGxldF9wYXNzcGhyYXNlX2luY29ycmVjdCc7XG4gIHB1YmxpYyBzdGF0dXMgPSA0MDE7XG4gIHB1YmxpYyBjYXVzZT86IHVua25vd247XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcsIGNhdXNlPzogdW5rbm93bikge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3VuYWJsZSB0byBkZWNyeXB0IGtleWNoYWluIHdpdGggdGhlIGdpdmVuIHdhbGxldCBwYXNzcGhyYXNlJyk7XG4gICAgdGhpcy5uYW1lID0gJ0luY29ycmVjdFBhc3N3b3JkRXJyb3InO1xuICAgIHRoaXMuY2F1c2UgPSBjYXVzZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmVlZFVzZXJTaWdudXBFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnVXNlciBzaWdudXAgaXMgcmVxdWlyZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBpUmVzcG9uc2VFcnJvcjxSZXNwb25zZUJvZHlUeXBlID0gYW55PiBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3RhdHVzOiBudW1iZXI7XG4gIHJlc3VsdD86IFJlc3BvbnNlQm9keVR5cGU7XG4gIGludmFsaWRUb2tlbj86IGJvb2xlYW47XG4gIG5lZWRzT1RQPzogYm9vbGVhbjtcbiAgLy8gRWNob2VkIGJhY2sgdmlhIHRoZSBgUmVxdWVzdC1JRGAgcmVzcG9uc2UgaGVhZGVyIChzZWUgbG9nZ2luZy1leHByZXNzJ3MgYGJlZ2luTG9nZ2luZ2ApLFxuICAvLyBzbyBpdCBjYW4gYmUgdXNlZCB0byBjb3JyZWxhdGUgdGhpcyBlcnJvciB3aXRoIHRoZSBzZXJ2ZXItc2lkZSByZXF1ZXN0IGxvZ3MuXG4gIHJlcXVlc3RJZD86IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHN0YXR1czogbnVtYmVyLFxuICAgIHJlc3VsdD86IFJlc3BvbnNlQm9keVR5cGUsXG4gICAgaW52YWxpZFRva2VuPzogYm9vbGVhbixcbiAgICBuZWVkc09UUD86IGJvb2xlYW4sXG4gICAgcmVxdWVzdElkPzogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7XG4gICAgdGhpcy5yZXN1bHQgPSByZXN1bHQ7XG4gICAgdGhpcy5pbnZhbGlkVG9rZW4gPSBpbnZhbGlkVG9rZW47XG4gICAgdGhpcy5uZWVkc09UUCA9IG5lZWRzT1RQO1xuICAgIHRoaXMucmVxdWVzdElkID0gcmVxdWVzdElkO1xuICB9XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciB0b2tlbiBhcHByb3ZhbCBpbmZvcm1hdGlvbiB1c2VkIGluIHN1c3BpY2lvdXMgdHJhbnNhY3Rpb24gZGV0ZWN0aW9uXG4gKlxuICogQGludGVyZmFjZSBUb2tlbkFwcHJvdmFsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Rva2VuTmFtZV0gLSBPcHRpb25hbCBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoZSB0b2tlblxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRva2VuQWRkcmVzcyAtIFRoZSBjb250cmFjdCBhZGRyZXNzIG9mIHRoZSB0b2tlbiBiZWluZyBhcHByb3ZlZFxuICogQHByb3BlcnR5IHtPYmplY3R9IGF1dGhvcml6aW5nQW1vdW50IC0gVGhlIGFtb3VudCBiZWluZyBhdXRob3JpemVkIGZvciBzcGVuZGluZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGF1dGhvcml6aW5nQWRkcmVzcyAtIFRoZSBhZGRyZXNzIGJlaW5nIGF1dGhvcml6ZWQgdG8gc3BlbmQgdGhlIHRva2Vuc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuQXBwcm92YWwge1xuICB0b2tlbk5hbWU/OiBzdHJpbmc7XG4gIHRva2VuQWRkcmVzczogc3RyaW5nO1xuICBhdXRob3JpemluZ0Ftb3VudDogeyB0eXBlOiAndW5saW1pdGVkJyB9IHwgeyB0eXBlOiAnbGltaXRlZCc7IGFtb3VudDogbnVtYmVyIH07XG4gIGF1dGhvcml6aW5nQWRkcmVzczogc3RyaW5nO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgbWlzbWF0Y2hlZCByZWNpcGllbnQgaW5mb3JtYXRpb24gZGV0ZWN0ZWQgZHVyaW5nIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvblxuICpcbiAqIEBpbnRlcmZhY2UgTWlzbWF0Y2hlZFJlY2lwaWVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgcmVjaXBpZW50IGFkZHJlc3MgdGhhdCB3YXMgZm91bmQgaW4gdGhlIHRyYW5zYWN0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYW1vdW50IC0gVGhlIGFtb3VudCBiZWluZyBzZW50IHRvIHRoaXMgcmVjaXBpZW50XG4gKiBAcHJvcGVydHkge3N0cmluZyB8IFRva2VuVHJhbnNmZXJSZWNpcGllbnRQYXJhbXN9IFtkYXRhXSAtIE9wdGlvbmFsIHRyYW5zYWN0aW9uIGRhdGEgb3IgdG9rZW4gdHJhbnNmZXIgcGFyYW1ldGVyc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFt0b2tlbk5hbWVdIC0gT3B0aW9uYWwgbmFtZSBvZiB0aGUgdG9rZW4gYmVpbmcgdHJhbnNmZXJyZWRcbiAqIEBwcm9wZXJ0eSB7VG9rZW5UcmFuc2ZlclJlY2lwaWVudFBhcmFtc30gW3Rva2VuRGF0YV0gLSBPcHRpb25hbCBzdHJ1Y3R1cmVkIHRva2VuIHRyYW5zZmVyIGRhdGFcbiAqL1xuZXhwb3J0IHR5cGUgTWlzbWF0Y2hlZFJlY2lwaWVudCA9IE5vbk51bGxhYmxlPFNlbmRNYW55T3B0aW9uc1sncmVjaXBpZW50cyddPlswXTtcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIGNvbnRyYWN0IGludGVyYWN0aW9uIGRhdGEgcGF5bG9hZCB1c2VkIGluIHN1c3BpY2lvdXMgdHJhbnNhY3Rpb24gZGV0ZWN0aW9uXG4gKlxuICogQGludGVyZmFjZSBDb250cmFjdERhdGFQYXlsb2FkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBjb250cmFjdCBhZGRyZXNzIGJlaW5nIGludGVyYWN0ZWQgd2l0aFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHJhd0NvbnRyYWN0UGF5bG9hZCAtIFRoZSByYXcgY29udHJhY3QgcGF5bG9hZCBpbiBzZXJpYWxpemVkIGZvcm0gc3BlY2lmaWMgdG8gdGhlIGJsb2NrY2hhaW5cbiAqIEBwcm9wZXJ0eSB7dW5rbm93bn0gZGVjb2RlZENvbnRyYWN0UGF5bG9hZCAtIFRoZSBkZWNvZGVkIGNvbnRyYWN0IHBheWxvYWQsIHN0cnVjdHVyZSB2YXJpZXMgYnkgY29pbi9jaGFpbiBpbXBsZW1lbnRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYWN0RGF0YVBheWxvYWQge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIC8vIFRoZSByYXcgY29udHJhY3QgcGF5bG9hZCBpbiBzZXJpYWxpemVkIGZvcm0gb2YgdGhlIGNoYWluXG4gIHJhd0NvbnRyYWN0UGF5bG9hZDogc3RyaW5nO1xuICAvLyBUbyBiZSBkZWZpbmVkIG9uIGEgcGVyLWNvaW4gYmFzaXNcbiAgZGVjb2RlZENvbnRyYWN0UGF5bG9hZDogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBCYXNlIGVycm9yIGNsYXNzIGZvciB0cmFuc2FjdGlvbiBpbnRlbnQgbWlzbWF0Y2ggZGV0ZWN0aW9uXG4gKlxuICogVGhpcyBlcnJvciBpcyB0aHJvd24gd2hlbiBhIHRyYW5zYWN0aW9uIGRvZXMgbm90IG1hdGNoIHRoZSB1c2VyJ3Mgb3JpZ2luYWwgaW50ZW50LFxuICogaW5kaWNhdGluZyBwb3RlbnRpYWwgc2VjdXJpdHkgaXNzdWVzIG9yIG1hbGljaW91cyBtb2RpZmljYXRpb25zLlxuICpcbiAqIEBjbGFzcyBUeEludGVudE1pc21hdGNoRXJyb3JcbiAqIEBleHRlbmRzIHtCaXRHb0pzRXJyb3J9XG4gKiBAcHJvcGVydHkge3N0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkfSBpZCAtIFRyYW5zYWN0aW9uIElEIG9yIHJlcXVlc3QgdHJhY2VyIGZvciB0cmFja2luZ1xuICogQHByb3BlcnR5IHtUcmFuc2FjdGlvblBhcmFtc1tdfSB0eFBhcmFtcyAtIEFycmF5IG9mIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGFuYWx5emVkXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gdHhIZXggLSBUaGUgcmF3IHRyYW5zYWN0aW9uIGluIGhleGFkZWNpbWFsIGZvcm1hdFxuICogQHByb3BlcnR5IHtzdHJpbmcgfCB1bmRlZmluZWR9IHR4RXhwbGFuYXRpb24gLSBTdHJpbmdpZmllZCB0cmFuc2FjdGlvbiBleHBsYW5hdGlvblxuICovXG5leHBvcnQgY2xhc3MgVHhJbnRlbnRNaXNtYXRjaEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtc1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgdHhIZXg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHR4RXhwbGFuYXRpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUeEludGVudE1pc21hdGNoRXJyb3JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIGRlc2NyaWJpbmcgdGhlIGludGVudCBtaXNtYXRjaFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkfSBpZCAtIFRyYW5zYWN0aW9uIElEIG9yIHJlcXVlc3QgdHJhY2VyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25QYXJhbXNbXX0gdHhQYXJhbXMgLSBUcmFuc2FjdGlvbiBwYXJhbWV0ZXJzIHRoYXQgd2VyZSBhbmFseXplZFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gdHhIZXggLSBSYXcgdHJhbnNhY3Rpb24gaGV4IHN0cmluZ1xuICAgKiBAcGFyYW0ge3Vua25vd259IHR4RXhwbGFuYXRpb24gLSBUcmFuc2FjdGlvbiBleHBsYW5hdGlvblxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWQsXG4gICAgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zW10sXG4gICAgdHhIZXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB0eEV4cGxhbmF0aW9uPzogdW5rbm93blxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy50eFBhcmFtcyA9IHR4UGFyYW1zO1xuICAgIHRoaXMudHhIZXggPSB0eEhleDtcbiAgICB0aGlzLnR4RXhwbGFuYXRpb24gPSB0eEV4cGxhbmF0aW9uID8gVHhJbnRlbnRNaXNtYXRjaEVycm9yLnNhZmVTdHJpbmdpZnkodHhFeHBsYW5hdGlvbikgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2FmZWx5IHN0cmluZ2lmeSBhIHZhbHVlIHdpdGggQmlnSW50IHN1cHBvcnRcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gc3RyaW5naWZ5XG4gICAqIEByZXR1cm5zIEpTT04gc3RyaW5nIHdpdGggQmlnSW50cyBjb252ZXJ0ZWQgdG8gc3RyaW5nc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgc2FmZVN0cmluZ2lmeSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCAoXywgdikgPT4gKHR5cGVvZiB2ID09PSAnYmlnaW50JyA/IHYudG9TdHJpbmcoKSA6IHYpLCAyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gZ2V0IHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uIGZyb20gYSBjb2luJ3MgZXhwbGFpblRyYW5zYWN0aW9uIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIGNvaW4gLSBDb2luIGluc3RhbmNlIGltcGxlbWVudGluZyBJQmFzZUNvaW5cbiAgICogQHBhcmFtIHR4UHJlYnVpbGQgLSBUcmFuc2FjdGlvbiBwcmVidWlsZCBjb250YWluaW5nIHR4SGV4IGFuZCB0eEluZm9cbiAgICogQHJldHVybnMgVHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gb2JqZWN0IG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHRyeUdldFR4RXhwbGFuYXRpb24oXG4gICAgY29pbjogSUJhc2VDb2luLFxuICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg/OiBzdHJpbmc7IHR4SW5mbz86IHVua25vd24gfVxuICApOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBpZiAoIXR4UHJlYnVpbGQudHhIZXgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBjb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4SGV4OiB0eFByZWJ1aWxkLnR4SGV4LFxuICAgICAgICB0eEluZm86IHR4UHJlYnVpbGQudHhJbmZvLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXJyb3I6ICdGYWlsZWQgdG8gcGFyc2UgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24nLFxuICAgICAgICB0eEhleDogdHhQcmVidWlsZC50eEhleCxcbiAgICAgICAgZGV0YWlsczogZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiB0cmFuc2FjdGlvbiByZWNpcGllbnRzIGRvbid0IG1hdGNoIHRoZSB1c2VyJ3MgaW50ZW50XG4gKlxuICogVGhpcyBlcnJvciBvY2N1cnMgd2hlbiB0aGUgdHJhbnNhY3Rpb24gY29udGFpbnMgcmVjaXBpZW50cyBvciBhbW91bnRzIHRoYXQgZGlmZmVyXG4gKiBmcm9tIHdoYXQgdGhlIHVzZXIgb3JpZ2luYWxseSBpbnRlbmRlZCB0byBzZW5kLlxuICpcbiAqIEBjbGFzcyBUeEludGVudE1pc21hdGNoUmVjaXBpZW50RXJyb3JcbiAqIEBleHRlbmRzIHtUeEludGVudE1pc21hdGNoRXJyb3J9XG4gKiBAcHJvcGVydHkge01pc21hdGNoZWRSZWNpcGllbnRbXX0gbWlzbWF0Y2hlZFJlY2lwaWVudHMgLSBBcnJheSBvZiByZWNpcGllbnRzIHRoYXQgZG9uJ3QgbWF0Y2ggdXNlciBpbnRlbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvciBleHRlbmRzIFR4SW50ZW50TWlzbWF0Y2hFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBtaXNtYXRjaGVkUmVjaXBpZW50czogTWlzbWF0Y2hlZFJlY2lwaWVudFtdO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFR4SW50ZW50TWlzbWF0Y2hSZWNpcGllbnRFcnJvclxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgcmVjaXBpZW50IGludGVudCBtaXNtYXRjaFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkfSBpZCAtIFRyYW5zYWN0aW9uIElEIG9yIHJlcXVlc3QgdHJhY2VyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25QYXJhbXNbXX0gdHhQYXJhbXMgLSBUcmFuc2FjdGlvbiBwYXJhbWV0ZXJzIHRoYXQgd2VyZSBhbmFseXplZFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gdHhIZXggLSBSYXcgdHJhbnNhY3Rpb24gaGV4IHN0cmluZ1xuICAgKiBAcGFyYW0ge01pc21hdGNoZWRSZWNpcGllbnRbXX0gbWlzbWF0Y2hlZFJlY2lwaWVudHMgLSBBcnJheSBvZiByZWNpcGllbnRzIHRoYXQgZG9uJ3QgbWF0Y2ggdXNlciBpbnRlbnRcbiAgICogQHBhcmFtIHt1bmtub3dufSB0eEV4cGxhbmF0aW9uIC0gVHJhbnNhY3Rpb24gZXhwbGFuYXRpb25cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IElSZXF1ZXN0VHJhY2VyIHwgdW5kZWZpbmVkLFxuICAgIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtc1tdLFxuICAgIHR4SGV4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgbWlzbWF0Y2hlZFJlY2lwaWVudHM6IE1pc21hdGNoZWRSZWNpcGllbnRbXSxcbiAgICB0eEV4cGxhbmF0aW9uPzogdW5rbm93blxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBpZCwgdHhQYXJhbXMsIHR4SGV4LCB0eEV4cGxhbmF0aW9uKTtcbiAgICB0aGlzLm1pc21hdGNoZWRSZWNpcGllbnRzID0gbWlzbWF0Y2hlZFJlY2lwaWVudHM7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aHJvd24gd2hlbiBjb250cmFjdCBpbnRlcmFjdGlvbiBkb2Vzbid0IG1hdGNoIHRoZSB1c2VyJ3MgaW50ZW50XG4gKlxuICogVGhpcyBlcnJvciBvY2N1cnMgd2hlbiBhIHRyYW5zYWN0aW9uIGludGVyYWN0cyB3aXRoIGEgc21hcnQgY29udHJhY3QgYnV0IHRoZVxuICogY29udHJhY3QgY2FsbCBkYXRhIG9yIG1ldGhvZCBkb2Vzbid0IG1hdGNoIHdoYXQgdGhlIHVzZXIgaW50ZW5kZWQuXG4gKlxuICogQGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hDb250cmFjdEVycm9yXG4gKiBAZXh0ZW5kcyB7VHhJbnRlbnRNaXNtYXRjaEVycm9yfVxuICogQHByb3BlcnR5IHtDb250cmFjdERhdGFQYXlsb2FkfSBtaXNtYXRjaGVkRGF0YVBheWxvYWQgLSBUaGUgY29udHJhY3QgaW50ZXJhY3Rpb24gZGF0YSB0aGF0IGRvZXNuJ3QgbWF0Y2ggdXNlciBpbnRlbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFR4SW50ZW50TWlzbWF0Y2hDb250cmFjdEVycm9yIGV4dGVuZHMgVHhJbnRlbnRNaXNtYXRjaEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IG1pc21hdGNoZWREYXRhUGF5bG9hZDogQ29udHJhY3REYXRhUGF5bG9hZDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUeEludGVudE1pc21hdGNoQ29udHJhY3RFcnJvclxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgY29udHJhY3QgaW50ZW50IG1pc21hdGNoXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWR9IGlkIC0gVHJhbnNhY3Rpb24gSUQgb3IgcmVxdWVzdCB0cmFjZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblBhcmFtc1tdfSB0eFBhcmFtcyAtIFRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGFuYWx5emVkXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB0eEhleCAtIFJhdyB0cmFuc2FjdGlvbiBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSB7Q29udHJhY3REYXRhUGF5bG9hZH0gbWlzbWF0Y2hlZERhdGFQYXlsb2FkIC0gVGhlIGNvbnRyYWN0IGludGVyYWN0aW9uIGRhdGEgdGhhdCBkb2Vzbid0IG1hdGNoIHVzZXIgaW50ZW50XG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdHhFeHBsYW5hdGlvbiAtIFRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBJUmVxdWVzdFRyYWNlciB8IHVuZGVmaW5lZCxcbiAgICB0eFBhcmFtczogVHJhbnNhY3Rpb25QYXJhbXNbXSxcbiAgICB0eEhleDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIG1pc21hdGNoZWREYXRhUGF5bG9hZDogQ29udHJhY3REYXRhUGF5bG9hZCxcbiAgICB0eEV4cGxhbmF0aW9uPzogdW5rbm93blxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBpZCwgdHhQYXJhbXMsIHR4SGV4LCB0eEV4cGxhbmF0aW9uKTtcbiAgICB0aGlzLm1pc21hdGNoZWREYXRhUGF5bG9hZCA9IG1pc21hdGNoZWREYXRhUGF5bG9hZDtcbiAgfVxufVxuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIHRva2VuIGFwcHJvdmFsIGRvZXNuJ3QgbWF0Y2ggdGhlIHVzZXIncyBpbnRlbnRcbiAqXG4gKiBUaGlzIGVycm9yIG9jY3VycyB3aGVuIGEgdHJhbnNhY3Rpb24gY29udGFpbnMgYSB0b2tlbiBhcHByb3ZhbCB0aGF0IHRoZSB1c2VyXG4gKiBkaWQgbm90IGludGVuZCB0byBhdXRob3JpemUsIHBvdGVudGlhbGx5IGluZGljYXRpbmcgbWFsaWNpb3VzIGFjdGl2aXR5LlxuICpcbiAqIEBjbGFzcyBUeEludGVudE1pc21hdGNoQXBwcm92YWxFcnJvclxuICogQGV4dGVuZHMge1R4SW50ZW50TWlzbWF0Y2hFcnJvcn1cbiAqIEBwcm9wZXJ0eSB7VG9rZW5BcHByb3ZhbH0gdG9rZW5BcHByb3ZhbCAtIERldGFpbHMgb2YgdGhlIHRva2VuIGFwcHJvdmFsIHRoYXQgZG9lc24ndCBtYXRjaCB1c2VyIGludGVudFxuICovXG5leHBvcnQgY2xhc3MgVHhJbnRlbnRNaXNtYXRjaEFwcHJvdmFsRXJyb3IgZXh0ZW5kcyBUeEludGVudE1pc21hdGNoRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5BcHByb3ZhbDogVG9rZW5BcHByb3ZhbDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUeEludGVudE1pc21hdGNoQXBwcm92YWxFcnJvclxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgYXBwcm92YWwgaW50ZW50IG1pc21hdGNoXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWR9IGlkIC0gVHJhbnNhY3Rpb24gSUQgb3IgcmVxdWVzdCB0cmFjZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblBhcmFtc1tdfSB0eFBhcmFtcyAtIFRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGFuYWx5emVkXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB0eEhleCAtIFJhdyB0cmFuc2FjdGlvbiBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSB7VG9rZW5BcHByb3ZhbH0gdG9rZW5BcHByb3ZhbCAtIERldGFpbHMgb2YgdGhlIHRva2VuIGFwcHJvdmFsIHRoYXQgZG9lc24ndCBtYXRjaCB1c2VyIGludGVudFxuICAgKiBAcGFyYW0ge3Vua25vd259IHR4RXhwbGFuYXRpb24gLSBUcmFuc2FjdGlvbiBleHBsYW5hdGlvblxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgSVJlcXVlc3RUcmFjZXIgfCB1bmRlZmluZWQsXG4gICAgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zW10sXG4gICAgdHhIZXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB0b2tlbkFwcHJvdmFsOiBUb2tlbkFwcHJvdmFsLFxuICAgIHR4RXhwbGFuYXRpb24/OiB1bmtub3duXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIGlkLCB0eFBhcmFtcywgdHhIZXgsIHR4RXhwbGFuYXRpb24pO1xuICAgIHRoaXMudG9rZW5BcHByb3ZhbCA9IHRva2VuQXBwcm92YWw7XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  export * from './derivableEd25519Pub';
2
2
  export * from './iSafe';
3
3
  export * from './iSafes';
4
+ export * from './recovery';
4
5
  export * from './safe';
5
6
  export * from './safes';
6
7
  export * from '@bitgo-beta/sdk-lib-safes';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC"}
@@ -17,7 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./derivableEd25519Pub"), exports);
18
18
  __exportStar(require("./iSafe"), exports);
19
19
  __exportStar(require("./iSafes"), exports);
20
+ __exportStar(require("./recovery"), exports);
20
21
  __exportStar(require("./safe"), exports);
21
22
  __exportStar(require("./safes"), exports);
22
23
  __exportStar(require("@bitgo-beta/sdk-lib-safes"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0RBQXNDO0FBQ3RDLDBDQUF3QjtBQUN4QiwyQ0FBeUI7QUFDekIseUNBQXVCO0FBQ3ZCLDBDQUF3QjtBQUN4Qiw0REFBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Rlcml2YWJsZUVkMjU1MTlQdWInO1xuZXhwb3J0ICogZnJvbSAnLi9pU2FmZSc7XG5leHBvcnQgKiBmcm9tICcuL2lTYWZlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NhZmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zYWZlcyc7XG5leHBvcnQgKiBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLXNhZmVzJztcbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0RBQXNDO0FBQ3RDLDBDQUF3QjtBQUN4QiwyQ0FBeUI7QUFDekIsNkNBQTJCO0FBQzNCLHlDQUF1QjtBQUN2QiwwQ0FBd0I7QUFDeEIsNERBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZXJpdmFibGVFZDI1NTE5UHViJztcbmV4cG9ydCAqIGZyb20gJy4vaVNhZmUnO1xuZXhwb3J0ICogZnJvbSAnLi9pU2FmZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWNvdmVyeSc7XG5leHBvcnQgKiBmcm9tICcuL3NhZmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zYWZlcyc7XG5leHBvcnQgKiBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLXNhZmVzJztcbiJdfQ==
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @prettier
3
+ *
4
+ * @experimental WRW-facing safe recovery entry points.
5
+ */
6
+ import { Buffer } from 'buffer';
7
+ import type { RootKeyType } from '@bitgo/public-types';
8
+ import { BitGoBase } from '../bitgoBase';
9
+ export type DecryptedMpcSafeRoot = {
10
+ signing: Buffer;
11
+ vrf: Buffer;
12
+ };
13
+ export type OnchainSafeRoot = {
14
+ user: string;
15
+ backup: string;
16
+ bitgo: string;
17
+ };
18
+ export type MpcSafeRoot = {
19
+ user: DecryptedMpcSafeRoot;
20
+ backup: DecryptedMpcSafeRoot;
21
+ bitgo: string;
22
+ };
23
+ export type Secp256k1MultisigChildKeys = {
24
+ user: {
25
+ prv: string;
26
+ pub: string;
27
+ };
28
+ backup: {
29
+ prv: string;
30
+ pub: string;
31
+ };
32
+ bitgo: {
33
+ pub: string;
34
+ };
35
+ };
36
+ export type DerivedSafeWalletKeys = {
37
+ path: string;
38
+ keys: Secp256k1MultisigChildKeys;
39
+ };
40
+ export type SafeRecoverKeyParams = {
41
+ userKey: string;
42
+ backupKey: string;
43
+ bitgoKey: string;
44
+ walletPassphrase?: string;
45
+ };
46
+ export type DecryptedSafeRoots = {
47
+ secp256k1Multisig: OnchainSafeRoot;
48
+ ed25519Multisig: OnchainSafeRoot;
49
+ ecdsaMpc: MpcSafeRoot;
50
+ eddsaMpc: MpcSafeRoot;
51
+ };
52
+ export declare function decryptSafeKeycard(params: {
53
+ bitgo: BitGoBase;
54
+ userKeyBox: string;
55
+ backupKeyBox: string;
56
+ bitgoKeyBox: string;
57
+ password: string;
58
+ }): Promise<DecryptedSafeRoots>;
59
+ /**
60
+ * Derives a Safe wallet's child keys at the BIP44 path for a given slot and account.
61
+ * Only `secp256k1Multisig` (slot 1) is supported for now; the remaining slots throw
62
+ * until their derivation arms land (WCN-2736/WCN-2737/WCN-2894).
63
+ */
64
+ export declare function deriveSafeWalletKeys(params: {
65
+ coin: string;
66
+ slot: RootKeyType;
67
+ account: number;
68
+ roots: DecryptedSafeRoots;
69
+ }): Promise<DerivedSafeWalletKeys>;
70
+ /**
71
+ * Builds the key fields `coin.recover()` expects from derived Safe child keys.
72
+ * Only `secp256k1Multisig` (slot 1) is supported for now. Signed mode re-encrypts the
73
+ * child xprvs under a fresh ephemeral passphrase (v1/SJCL); unsigned mode returns pubs.
74
+ */
75
+ export declare function buildSafeRecoverKeyParams(params: {
76
+ bitgo: BitGoBase;
77
+ coin: string;
78
+ slot: RootKeyType;
79
+ keys: Secp256k1MultisigChildKeys;
80
+ mode: 'signed' | 'unsigned';
81
+ }): Promise<SafeRecoverKeyParams>;
82
+ //# sourceMappingURL=recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/recovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,MAAM,MAAM,oBAAoB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9E,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtG,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,0BAA0B,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,EAAE,eAAe,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6C9B;AAUD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,kBAAkB,CAAC;CAC3B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAmCjC;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IACtD,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,0BAA0B,CAAC;IACjC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC7B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAgChC"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decryptSafeKeycard = decryptSafeKeycard;
4
+ exports.deriveSafeWalletKeys = deriveSafeWalletKeys;
5
+ exports.buildSafeRecoverKeyParams = buildSafeRecoverKeyParams;
6
+ const crypto_1 = require("crypto");
7
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
8
+ const statics_1 = require("@bitgo-beta/statics");
9
+ const sdk_lib_safes_1 = require("@bitgo-beta/sdk-lib-safes");
10
+ const errors_1 = require("../errors");
11
+ const keyShareEnvelope_1 = require("../utils/tss/keyShareEnvelope");
12
+ async function decryptSafeKeycard(params) {
13
+ const { bitgo, userKeyBox, backupKeyBox, bitgoKeyBox, password } = params;
14
+ const userRoots = (0, sdk_lib_safes_1.parseSafeKeycardBox)(userKeyBox);
15
+ const backupRoots = (0, sdk_lib_safes_1.parseSafeKeycardBox)(backupKeyBox);
16
+ const bitgoRoots = (0, sdk_lib_safes_1.parseSafeKeycardBox)(bitgoKeyBox);
17
+ const decryptRoot = async (root) => {
18
+ try {
19
+ return await bitgo.decrypt({ input: root, password });
20
+ }
21
+ catch (e) {
22
+ throw new errors_1.IncorrectPasswordError('unable to decrypt the safe keycard with the provided password', e);
23
+ }
24
+ };
25
+ const unwrapMpcRoot = (decrypted) => {
26
+ try {
27
+ return (0, keyShareEnvelope_1.parseSafeMpcKeyEnvelopes)(decrypted);
28
+ }
29
+ catch (e) {
30
+ throw new errors_1.IncorrectPasswordError('unable to decrypt the safe keycard with the provided password', e);
31
+ }
32
+ };
33
+ return {
34
+ secp256k1Multisig: {
35
+ user: await decryptRoot(userRoots.secp256k1Multisig),
36
+ backup: await decryptRoot(backupRoots.secp256k1Multisig),
37
+ bitgo: bitgoRoots.secp256k1Multisig,
38
+ },
39
+ ed25519Multisig: {
40
+ user: await decryptRoot(userRoots.ed25519Multisig),
41
+ backup: await decryptRoot(backupRoots.ed25519Multisig),
42
+ bitgo: bitgoRoots.ed25519Multisig,
43
+ },
44
+ ecdsaMpc: {
45
+ user: unwrapMpcRoot(await decryptRoot(userRoots.ecdsaMpc)),
46
+ backup: unwrapMpcRoot(await decryptRoot(backupRoots.ecdsaMpc)),
47
+ bitgo: bitgoRoots.ecdsaMpc,
48
+ },
49
+ eddsaMpc: {
50
+ user: unwrapMpcRoot(await decryptRoot(userRoots.eddsaMpc)),
51
+ backup: unwrapMpcRoot(await decryptRoot(backupRoots.eddsaMpc)),
52
+ bitgo: bitgoRoots.eddsaMpc,
53
+ },
54
+ };
55
+ }
56
+ function buildSafeUserPath(coinType, slotOrdinal, account) {
57
+ return `m/44'/${coinType}'/${slotOrdinal}'/${account}'`;
58
+ }
59
+ function buildSafeCosignerPath(coinType, slotOrdinal, account) {
60
+ return `m/44/${coinType}/${slotOrdinal}/${account}`;
61
+ }
62
+ /**
63
+ * Derives a Safe wallet's child keys at the BIP44 path for a given slot and account.
64
+ * Only `secp256k1Multisig` (slot 1) is supported for now; the remaining slots throw
65
+ * until their derivation arms land (WCN-2736/WCN-2737/WCN-2894).
66
+ */
67
+ async function deriveSafeWalletKeys(params) {
68
+ if (params.slot !== 'secp256k1Multisig') {
69
+ throw new Error(`deriveSafeWalletKeys: slot '${params.slot}' is not supported yet`);
70
+ }
71
+ if (!Number.isInteger(params.account) || params.account < 0 || params.account > statics_1.MAX_BIP32_INDEX) {
72
+ throw new Error(`deriveSafeWalletKeys: invalid account '${params.account}'`);
73
+ }
74
+ const coinType = statics_1.coins.get(params.coin).bip44CoinType;
75
+ if (coinType === undefined) {
76
+ throw new Error(`Coin '${params.coin}' has no BIP44 coin type and cannot derive a safe child`);
77
+ }
78
+ const slotOrdinal = statics_1.SAFE_ROOT_SLOT_ORDINALS[params.slot];
79
+ const { account, roots } = params;
80
+ const root = roots.secp256k1Multisig;
81
+ const user = utxo_lib_1.bip32.fromBase58(root.user).derivePath(buildSafeUserPath(coinType, slotOrdinal, account));
82
+ const backup = utxo_lib_1.bip32.fromBase58(root.backup).derivePath(buildSafeCosignerPath(coinType, slotOrdinal, account));
83
+ const bitgo = utxo_lib_1.bip32.fromBase58(root.bitgo).derivePath(buildSafeCosignerPath(coinType, slotOrdinal, account));
84
+ if (!user.privateKey || !backup.privateKey) {
85
+ throw new Error('deriveSafeWalletKeys: user and backup roots must be private (xprv)');
86
+ }
87
+ if (bitgo.privateKey) {
88
+ throw new Error('deriveSafeWalletKeys: bitgo root must be public (xpub)');
89
+ }
90
+ return {
91
+ path: buildSafeUserPath(coinType, slotOrdinal, account),
92
+ keys: {
93
+ user: { prv: user.toBase58(), pub: user.neutered().toBase58() },
94
+ backup: { prv: backup.toBase58(), pub: backup.neutered().toBase58() },
95
+ bitgo: { pub: bitgo.neutered().toBase58() },
96
+ },
97
+ };
98
+ }
99
+ /**
100
+ * Builds the key fields `coin.recover()` expects from derived Safe child keys.
101
+ * Only `secp256k1Multisig` (slot 1) is supported for now. Signed mode re-encrypts the
102
+ * child xprvs under a fresh ephemeral passphrase (v1/SJCL); unsigned mode returns pubs.
103
+ */
104
+ async function buildSafeRecoverKeyParams(params) {
105
+ if (params.slot !== 'secp256k1Multisig') {
106
+ throw new Error(`buildSafeRecoverKeyParams: slot '${params.slot}' is not supported yet`);
107
+ }
108
+ const { bitgo, keys, mode } = params;
109
+ if (mode === 'unsigned') {
110
+ return {
111
+ userKey: keys.user.pub,
112
+ backupKey: keys.backup.pub,
113
+ bitgoKey: keys.bitgo.pub,
114
+ };
115
+ }
116
+ const userPrv = utxo_lib_1.bip32.fromBase58(keys.user.prv);
117
+ const backupPrv = utxo_lib_1.bip32.fromBase58(keys.backup.prv);
118
+ if (!userPrv.privateKey || !backupPrv.privateKey) {
119
+ throw new Error('buildSafeRecoverKeyParams: keys.user.prv and keys.backup.prv must be private xprvs');
120
+ }
121
+ const walletPassphrase = (0, crypto_1.randomBytes)(32).toString('hex');
122
+ const [userKey, backupKey] = await Promise.all([
123
+ bitgo.encrypt({ input: keys.user.prv, password: walletPassphrase, encryptionVersion: 1 }),
124
+ bitgo.encrypt({ input: keys.backup.prv, password: walletPassphrase, encryptionVersion: 1 }),
125
+ ]);
126
+ return {
127
+ userKey,
128
+ backupKey,
129
+ bitgoKey: keys.bitgo.pub,
130
+ walletPassphrase,
131
+ };
132
+ }
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9yZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTZDQSxnREFtREM7QUFlRCxvREF3Q0M7QUFPRCw4REFzQ0M7QUE5TEQsbUNBQXFDO0FBQ3JDLG1EQUE2QztBQUM3QyxpREFBc0Y7QUFFdEYsNkRBQWdFO0FBRWhFLHNDQUFtRDtBQUNuRCxvRUFBeUU7QUFnQ2xFLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxNQU14QztJQUNDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTFFLE1BQU0sU0FBUyxHQUFHLElBQUEsbUNBQW1CLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBQSxtQ0FBbUIsRUFBQyxZQUFZLENBQUMsQ0FBQztJQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFBLG1DQUFtQixFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBELE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQW1CLEVBQUU7UUFDMUQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksK0JBQXNCLENBQUMsK0RBQStELEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkcsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFHLENBQUMsU0FBaUIsRUFBd0IsRUFBRTtRQUNoRSxJQUFJLENBQUM7WUFDSCxPQUFPLElBQUEsMkNBQXdCLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUFDLE9BQU8sQ0FB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QUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3pGLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDO0tBQzVGLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxPQUFPO1FBQ1AsU0FBUztRQUNULFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7UUFDeEIsZ0JBQWdCO0tBQ2pCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFdSVy1mYWNpbmcgc2FmZSByZWNvdmVyeSBlbnRyeSBwb2ludHMuXG4gKi9cbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBiaXAzMiB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGNvaW5zLCBNQVhfQklQMzJfSU5ERVgsIFNBRkVfUk9PVF9TTE9UX09SRElOQUxTIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgdHlwZSB7IFJvb3RLZXlUeXBlIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBwYXJzZVNhZmVLZXljYXJkQm94IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWxpYi1zYWZlcyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgSW5jb3JyZWN0UGFzc3dvcmRFcnJvciB9IGZyb20gJy4uL2Vycm9ycyc7XG5pbXBvcnQgeyBwYXJzZVNhZmVNcGNLZXlFbnZlbG9wZXMgfSBmcm9tICcuLi91dGlscy90c3Mva2V5U2hhcmVFbnZlbG9wZSc7XG5cbmV4cG9ydCB0eXBlIERlY3J5cHRlZE1wY1NhZmVSb290ID0geyBzaWduaW5nOiBCdWZmZXI7IHZyZjogQnVmZmVyIH07XG5cbmV4cG9ydCB0eXBlIE9uY2hhaW5TYWZlUm9vdCA9IHsgdXNlcjogc3RyaW5nOyBiYWNrdXA6IHN0cmluZzsgYml0Z286IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgTXBjU2FmZVJvb3QgPSB7IHVzZXI6IERlY3J5cHRlZE1wY1NhZmVSb290OyBiYWNrdXA6IERlY3J5cHRlZE1wY1NhZmVSb290OyBiaXRnbzogc3RyaW5nIH07XG5cbmV4cG9ydCB0eXBlIFNlY3AyNTZrMU11bHRpc2lnQ2hpbGRLZXlzID0ge1xuICB1c2VyOiB7IHBydjogc3RyaW5nOyBwdWI6IHN0cmluZyB9O1xuICBiYWNrdXA6IHsgcHJ2OiBzdHJpbmc7IHB1Yjogc3RyaW5nIH07XG4gIGJpdGdvOiB7IHB1Yjogc3RyaW5nIH07XG59O1xuXG5leHBvcnQgdHlwZSBEZXJpdmVkU2FmZVdhbGxldEtleXMgPSB7XG4gIHBhdGg6IHN0cmluZztcbiAga2V5czogU2VjcDI1NmsxTXVsdGlzaWdDaGlsZEtleXM7XG59O1xuXG5leHBvcnQgdHlwZSBTYWZlUmVjb3ZlcktleVBhcmFtcyA9IHtcbiAgdXNlcktleTogc3RyaW5nO1xuICBiYWNrdXBLZXk6IHN0cmluZztcbiAgYml0Z29LZXk6IHN0cmluZztcbiAgd2FsbGV0UGFzc3BocmFzZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERlY3J5cHRlZFNhZmVSb290cyA9IHtcbiAgc2VjcDI1NmsxTXVsdGlzaWc6IE9uY2hhaW5TYWZlUm9vdDtcbiAgZWQyNTUxOU11bHRpc2lnOiBPbmNoYWluU2FmZVJvb3Q7XG4gIGVjZHNhTXBjOiBNcGNTYWZlUm9vdDtcbiAgZWRkc2FNcGM6IE1wY1NhZmVSb290O1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlY3J5cHRTYWZlS2V5Y2FyZChwYXJhbXM6IHtcbiAgYml0Z286IEJpdEdvQmFzZTtcbiAgdXNlcktleUJveDogc3RyaW5nO1xuICBiYWNrdXBLZXlCb3g6IHN0cmluZztcbiAgYml0Z29LZXlCb3g6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn0pOiBQcm9taXNlPERlY3J5cHRlZFNhZmVSb290cz4ge1xuICBjb25zdCB7IGJpdGdvLCB1c2VyS2V5Qm94LCBiYWNrdXBLZXlCb3gsIGJpdGdvS2V5Qm94LCBwYXNzd29yZCB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHVzZXJSb290cyA9IHBhcnNlU2FmZUtleWNhcmRCb3godXNlcktleUJveCk7XG4gIGNvbnN0IGJhY2t1cFJvb3RzID0gcGFyc2VTYWZlS2V5Y2FyZEJveChiYWNrdXBLZXlCb3gpO1xuICBjb25zdCBiaXRnb1Jvb3RzID0gcGFyc2VTYWZlS2V5Y2FyZEJveChiaXRnb0tleUJveCk7XG5cbiAgY29uc3QgZGVjcnlwdFJvb3QgPSBhc3luYyAocm9vdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGJpdGdvLmRlY3J5cHQoeyBpbnB1dDogcm9vdCwgcGFzc3dvcmQgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEluY29ycmVjdFBhc3N3b3JkRXJyb3IoJ3VuYWJsZSB0byBkZWNyeXB0IHRoZSBzYWZlIGtleWNhcmQgd2l0aCB0aGUgcHJvdmlkZWQgcGFzc3dvcmQnLCBlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdW53cmFwTXBjUm9vdCA9IChkZWNyeXB0ZWQ6IHN0cmluZyk6IERlY3J5cHRlZE1wY1NhZmVSb290ID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHBhcnNlU2FmZU1wY0tleUVudmVsb3BlcyhkZWNyeXB0ZWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbmNvcnJlY3RQYXNzd29yZEVycm9yKCd1bmFibGUgdG8gZGVjcnlwdCB0aGUgc2FmZSBrZXljYXJkIHdpdGggdGhlIHByb3ZpZGVkIHBhc3N3b3JkJywgZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc2VjcDI1NmsxTXVsdGlzaWc6IHtcbiAgICAgIHVzZXI6IGF3YWl0IGRlY3J5cHRSb290KHVzZXJSb290cy5zZWNwMjU2azFNdWx0aXNpZyksXG4gICAgICBiYWNrdXA6IGF3YWl0IGRlY3J5cHRSb290KGJhY2t1cFJvb3RzLnNlY3AyNTZrMU11bHRpc2lnKSxcbiAgICAgIGJpdGdvOiBiaXRnb1Jvb3RzLnNlY3AyNTZrMU11bHRpc2lnLFxuICAgIH0sXG4gICAgZWQyNTUxOU11bHRpc2lnOiB7XG4gICAgICB1c2VyOiBhd2FpdCBkZWNyeXB0Um9vdCh1c2VyUm9vdHMuZWQyNTUxOU11bHRpc2lnKSxcbiAgICAgIGJhY2t1cDogYXdhaXQgZGVjcnlwdFJvb3QoYmFja3VwUm9vdHMuZWQyNTUxOU11bHRpc2lnKSxcbiAgICAgIGJpdGdvOiBiaXRnb1Jvb3RzLmVkMjU1MTlNdWx0aXNpZyxcbiAgICB9LFxuICAgIGVjZHNhTXBjOiB7XG4gICAgICB1c2VyOiB1bndyYXBNcGNSb290KGF3YWl0IGRlY3J5cHRSb290KHVzZXJSb290cy5lY2RzYU1wYykpLFxuICAgICAgYmFja3VwOiB1bndyYXBNcGNSb290KGF3YWl0IGRlY3J5cHRSb290KGJhY2t1cFJvb3RzLmVjZHNhTXBjKSksXG4gICAgICBiaXRnbzogYml0Z29Sb290cy5lY2RzYU1wYyxcbiAgICB9LFxuICAgIGVkZHNhTXBjOiB7XG4gICAgICB1c2VyOiB1bndyYXBNcGNSb290KGF3YWl0IGRlY3J5cHRSb290KHVzZXJSb290cy5lZGRzYU1wYykpLFxuICAgICAgYmFja3VwOiB1bndyYXBNcGNSb290KGF3YWl0IGRlY3J5cHRSb290KGJhY2t1cFJvb3RzLmVkZHNhTXBjKSksXG4gICAgICBiaXRnbzogYml0Z29Sb290cy5lZGRzYU1wYyxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFNhZmVVc2VyUGF0aChjb2luVHlwZTogbnVtYmVyLCBzbG90T3JkaW5hbDogbnVtYmVyLCBhY2NvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYG0vNDQnLyR7Y29pblR5cGV9Jy8ke3Nsb3RPcmRpbmFsfScvJHthY2NvdW50fSdgO1xufVxuXG5mdW5jdGlvbiBidWlsZFNhZmVDb3NpZ25lclBhdGgoY29pblR5cGU6IG51bWJlciwgc2xvdE9yZGluYWw6IG51bWJlciwgYWNjb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBtLzQ0LyR7Y29pblR5cGV9LyR7c2xvdE9yZGluYWx9LyR7YWNjb3VudH1gO1xufVxuXG4vKipcbiAqIERlcml2ZXMgYSBTYWZlIHdhbGxldCdzIGNoaWxkIGtleXMgYXQgdGhlIEJJUDQ0IHBhdGggZm9yIGEgZ2l2ZW4gc2xvdCBhbmQgYWNjb3VudC5cbiAqIE9ubHkgYHNlY3AyNTZrMU11bHRpc2lnYCAoc2xvdCAxKSBpcyBzdXBwb3J0ZWQgZm9yIG5vdzsgdGhlIHJlbWFpbmluZyBzbG90cyB0aHJvd1xuICogdW50aWwgdGhlaXIgZGVyaXZhdGlvbiBhcm1zIGxhbmQgKFdDTi0yNzM2L1dDTi0yNzM3L1dDTi0yODk0KS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlcml2ZVNhZmVXYWxsZXRLZXlzKHBhcmFtczoge1xuICBjb2luOiBzdHJpbmc7XG4gIHNsb3Q6IFJvb3RLZXlUeXBlO1xuICBhY2NvdW50OiBudW1iZXI7XG4gIHJvb3RzOiBEZWNyeXB0ZWRTYWZlUm9vdHM7XG59KTogUHJvbWlzZTxEZXJpdmVkU2FmZVdhbGxldEtleXM+IHtcbiAgaWYgKHBhcmFtcy5zbG90ICE9PSAnc2VjcDI1NmsxTXVsdGlzaWcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBkZXJpdmVTYWZlV2FsbGV0S2V5czogc2xvdCAnJHtwYXJhbXMuc2xvdH0nIGlzIG5vdCBzdXBwb3J0ZWQgeWV0YCk7XG4gIH1cbiAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHBhcmFtcy5hY2NvdW50KSB8fCBwYXJhbXMuYWNjb3VudCA8IDAgfHwgcGFyYW1zLmFjY291bnQgPiBNQVhfQklQMzJfSU5ERVgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGRlcml2ZVNhZmVXYWxsZXRLZXlzOiBpbnZhbGlkIGFjY291bnQgJyR7cGFyYW1zLmFjY291bnR9J2ApO1xuICB9XG5cbiAgY29uc3QgY29pblR5cGUgPSBjb2lucy5nZXQocGFyYW1zLmNvaW4pLmJpcDQ0Q29pblR5cGU7XG4gIGlmIChjb2luVHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb2luICcke3BhcmFtcy5jb2lufScgaGFzIG5vIEJJUDQ0IGNvaW4gdHlwZSBhbmQgY2Fubm90IGRlcml2ZSBhIHNhZmUgY2hpbGRgKTtcbiAgfVxuICBjb25zdCBzbG90T3JkaW5hbCA9IFNBRkVfUk9PVF9TTE9UX09SRElOQUxTW3BhcmFtcy5zbG90XTtcbiAgY29uc3QgeyBhY2NvdW50LCByb290cyB9ID0gcGFyYW1zO1xuICBjb25zdCByb290ID0gcm9vdHMuc2VjcDI1NmsxTXVsdGlzaWc7XG5cbiAgY29uc3QgdXNlciA9IGJpcDMyLmZyb21CYXNlNTgocm9vdC51c2VyKS5kZXJpdmVQYXRoKGJ1aWxkU2FmZVVzZXJQYXRoKGNvaW5UeXBlLCBzbG90T3JkaW5hbCwgYWNjb3VudCkpO1xuICBjb25zdCBiYWNrdXAgPSBiaXAzMi5mcm9tQmFzZTU4KHJvb3QuYmFja3VwKS5kZXJpdmVQYXRoKGJ1aWxkU2FmZUNvc2lnbmVyUGF0aChjb2luVHlwZSwgc2xvdE9yZGluYWwsIGFjY291bnQpKTtcbiAgY29uc3QgYml0Z28gPSBiaXAzMi5mcm9tQmFzZTU4KHJvb3QuYml0Z28pLmRlcml2ZVBhdGgoYnVpbGRTYWZlQ29zaWduZXJQYXRoKGNvaW5UeXBlLCBzbG90T3JkaW5hbCwgYWNjb3VudCkpO1xuXG4gIGlmICghdXNlci5wcml2YXRlS2V5IHx8ICFiYWNrdXAucHJpdmF0ZUtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVyaXZlU2FmZVdhbGxldEtleXM6IHVzZXIgYW5kIGJhY2t1cCByb290cyBtdXN0IGJlIHByaXZhdGUgKHhwcnYpJyk7XG4gIH1cbiAgaWYgKGJpdGdvLnByaXZhdGVLZXkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Rlcml2ZVNhZmVXYWxsZXRLZXlzOiBiaXRnbyByb290IG11c3QgYmUgcHVibGljICh4cHViKScpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBidWlsZFNhZmVVc2VyUGF0aChjb2luVHlwZSwgc2xvdE9yZGluYWwsIGFjY291bnQpLFxuICAgIGtleXM6IHtcbiAgICAgIHVzZXI6IHsgcHJ2OiB1c2VyLnRvQmFzZTU4KCksIHB1YjogdXNlci5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkgfSxcbiAgICAgIGJhY2t1cDogeyBwcnY6IGJhY2t1cC50b0Jhc2U1OCgpLCBwdWI6IGJhY2t1cC5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkgfSxcbiAgICAgIGJpdGdvOiB7IHB1YjogYml0Z28ubmV1dGVyZWQoKS50b0Jhc2U1OCgpIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGtleSBmaWVsZHMgYGNvaW4ucmVjb3ZlcigpYCBleHBlY3RzIGZyb20gZGVyaXZlZCBTYWZlIGNoaWxkIGtleXMuXG4gKiBPbmx5IGBzZWNwMjU2azFNdWx0aXNpZ2AgKHNsb3QgMSkgaXMgc3VwcG9ydGVkIGZvciBub3cuIFNpZ25lZCBtb2RlIHJlLWVuY3J5cHRzIHRoZVxuICogY2hpbGQgeHBydnMgdW5kZXIgYSBmcmVzaCBlcGhlbWVyYWwgcGFzc3BocmFzZSAodjEvU0pDTCk7IHVuc2lnbmVkIG1vZGUgcmV0dXJucyBwdWJzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRTYWZlUmVjb3ZlcktleVBhcmFtcyhwYXJhbXM6IHtcbiAgYml0Z286IEJpdEdvQmFzZTtcbiAgY29pbjogc3RyaW5nO1xuICBzbG90OiBSb290S2V5VHlwZTtcbiAga2V5czogU2VjcDI1NmsxTXVsdGlzaWdDaGlsZEtleXM7XG4gIG1vZGU6ICdzaWduZWQnIHwgJ3Vuc2lnbmVkJztcbn0pOiBQcm9taXNlPFNhZmVSZWNvdmVyS2V5UGFyYW1zPiB7XG4gIGlmIChwYXJhbXMuc2xvdCAhPT0gJ3NlY3AyNTZrMU11bHRpc2lnJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgYnVpbGRTYWZlUmVjb3ZlcktleVBhcmFtczogc2xvdCAnJHtwYXJhbXMuc2xvdH0nIGlzIG5vdCBzdXBwb3J0ZWQgeWV0YCk7XG4gIH1cbiAgY29uc3QgeyBiaXRnbywga2V5cywgbW9kZSB9ID0gcGFyYW1zO1xuXG4gIGlmIChtb2RlID09PSAndW5zaWduZWQnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXJLZXk6IGtleXMudXNlci5wdWIsXG4gICAgICBiYWNrdXBLZXk6IGtleXMuYmFja3VwLnB1YixcbiAgICAgIGJpdGdvS2V5OiBrZXlzLmJpdGdvLnB1YixcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdXNlclBydiA9IGJpcDMyLmZyb21CYXNlNTgoa2V5cy51c2VyLnBydik7XG4gIGNvbnN0IGJhY2t1cFBydiA9IGJpcDMyLmZyb21CYXNlNTgoa2V5cy5iYWNrdXAucHJ2KTtcbiAgaWYgKCF1c2VyUHJ2LnByaXZhdGVLZXkgfHwgIWJhY2t1cFBydi5wcml2YXRlS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdidWlsZFNhZmVSZWNvdmVyS2V5UGFyYW1zOiBrZXlzLnVzZXIucHJ2IGFuZCBrZXlzLmJhY2t1cC5wcnYgbXVzdCBiZSBwcml2YXRlIHhwcnZzJyk7XG4gIH1cblxuICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gcmFuZG9tQnl0ZXMoMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3QgW3VzZXJLZXksIGJhY2t1cEtleV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgYml0Z28uZW5jcnlwdCh7IGlucHV0OiBrZXlzLnVzZXIucHJ2LCBwYXNzd29yZDogd2FsbGV0UGFzc3BocmFzZSwgZW5jcnlwdGlvblZlcnNpb246IDEgfSksXG4gICAgYml0Z28uZW5jcnlwdCh7IGlucHV0OiBrZXlzLmJhY2t1cC5wcnYsIHBhc3N3b3JkOiB3YWxsZXRQYXNzcGhyYXNlLCBlbmNyeXB0aW9uVmVyc2lvbjogMSB9KSxcbiAgXSk7XG5cbiAgcmV0dXJuIHtcbiAgICB1c2VyS2V5LFxuICAgIGJhY2t1cEtleSxcbiAgICBiaXRnb0tleToga2V5cy5iaXRnby5wdWIsXG4gICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgfTtcbn1cbiJdfQ==
@@ -36,15 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  require("should");
37
37
  const sinon = __importStar(require("sinon"));
38
38
  const sjcl = __importStar(require("@bitgo-beta/sjcl"));
39
- const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
40
- const sdk_lib_safes_1 = require("@bitgo-beta/sdk-lib-safes");
41
39
  const initiate_1 = require("../../../../src/bitgo/recovery/initiate");
42
40
  // A deterministic xprv used across all tests.
43
41
  const TEST_XPRV = 'xprv9s21ZrQH143K2fJ91S4BRsupcYrE6mmY96fcX5HkhoTrrwmwjd16Cn87cWinJjByrfpojjx7ezsJLx7TAKLT8m8hM5Kax9YcoxnBeJZ3t2k';
44
42
  const TEST_XPUB = 'xpub661MyMwAqRbcF9Nc7TbBo1rZAagiWEVPWKbDKThNG8zqjk76HAKLkaSbTn6dK2dQPfuD7xjicxCZVWvj67fP5nQ9W7QURmoMVAX8m6jZsGp';
45
- const SAFE_USER_ROOT_SEED = '000102030405060708090a0b0c0d0e0f';
46
- const SAFE_BACKUP_ROOT_SEED = '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f';
47
- const SAFE_BITGO_ROOT_SEED = '1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100';
48
43
  /**
49
44
  * Encrypt plaintext with SJCL (legacy v1 envelope, matching `encryptionVersion: 1`).
50
45
  */
@@ -141,30 +136,6 @@ describe('getBip32Keys', () => {
141
136
  keys.should.have.length(3);
142
137
  keys[2].neutered().toBase58().should.equal(TEST_XPUB);
143
138
  });
144
- it('accepts a derived slot-1 triplet without decrypting user or backup keys', async () => {
145
- const userRoot = utxo_lib_1.bip32.fromSeed(Buffer.from(SAFE_USER_ROOT_SEED, 'hex'));
146
- const backupRoot = utxo_lib_1.bip32.fromSeed(Buffer.from(SAFE_BACKUP_ROOT_SEED, 'hex'));
147
- const bitgoRoot = utxo_lib_1.bip32.fromSeed(Buffer.from(SAFE_BITGO_ROOT_SEED, 'hex'));
148
- const triplet = (0, sdk_lib_safes_1.deriveSafeSecp256k1MultisigTriplet)({
149
- userRootXprv: userRoot.toBase58(),
150
- backupRootXprv: backupRoot.toBase58(),
151
- bitgoRootXpub: bitgoRoot.neutered().toBase58(),
152
- index: 999,
153
- });
154
- const bitgo = makeMockBitGo(() => {
155
- throw new Error('derived raw keys must bypass decrypt');
156
- });
157
- const keys = await (0, initiate_1.getBip32Keys)(bitgo, {
158
- userKey: triplet.user.prv,
159
- backupKey: triplet.backup.prv,
160
- bitgoKey: triplet.bitgo.pub,
161
- recoveryDestination: 'addr',
162
- }, { requireBitGoXpub: true });
163
- keys[0].toBase58().should.equal(triplet.user.prv);
164
- keys[1].toBase58().should.equal(triplet.backup.prv);
165
- keys[2].neutered().toBase58().should.equal(triplet.bitgo.pub);
166
- bitgo.decrypt.callCount.should.equal(0);
167
- });
168
139
  it('calls decrypt for encrypted user key', async () => {
169
140
  const passphrase = 'pass1';
170
141
  const encryptedUserKey = sjclEncrypt(passphrase, TEST_XPRV);
@@ -185,4 +156,4 @@ describe('getBip32Keys', () => {
185
156
  await (0, initiate_1.getBip32Keys)(bitgo, { userKey: TEST_XPRV, backupKey: TEST_XPRV, recoveryDestination: 'addr' }, { requireBitGoXpub: true }).should.be.rejectedWith('BitGo xpub required but not provided');
186
157
  });
187
158
  });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vcmVjb3ZlcnkvaW5pdGlhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrQkFBZ0I7QUFDaEIsNkNBQStCO0FBQy9CLHVEQUF5QztBQUN6QyxtREFBNkM7QUFDN0MsNkRBQStFO0FBQy9FLHNFQUFvRjtBQUdwRiw4Q0FBOEM7QUFDOUMsTUFBTSxTQUFTLEdBQ2IsaUhBQWlILENBQUM7QUFDcEgsTUFBTSxTQUFTLEdBQ2IsaUhBQWlILENBQUM7QUFDcEgsTUFBTSxtQkFBbUIsR0FBRyxrQ0FBa0MsQ0FBQztBQUMvRCxNQUFNLHFCQUFxQixHQUFHLGtFQUFrRSxDQUFDO0FBQ2pHLE1BQU0sb0JBQW9CLEdBQUcsa0VBQWtFLENBQUM7QUFFaEc7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxRQUFnQixFQUFFLEtBQWE7SUFDbEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQXNCLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLFdBQXFFO0lBQzFGLE9BQU87UUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBNEMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVHLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO0tBQ0UsQ0FBQztBQUM1QixDQUFDO0FBRUQsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7SUFDM0IsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0RUFBNEUsRUFBRSxLQUFLLElBQUks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LEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLEVBQ3pFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQzNCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNuRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICogYXMgc2pjbCBmcm9tICdAYml0Z28tYmV0YS9zamNsJztcbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgZGVyaXZlU2FmZVNlY3AyNTZrMU11bHRpc2lnVHJpcGxldCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItc2FmZXMnO1xuaW1wb3J0IHsgdmFsaWRhdGVLZXksIGdldEJpcDMyS2V5cyB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby9yZWNvdmVyeS9pbml0aWF0ZSc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vYml0Z29CYXNlJztcblxuLy8gQSBkZXRlcm1pbmlzdGljIHhwcnYgdXNlZCBhY3Jvc3MgYWxsIHRlc3RzLlxuY29uc3QgVEVTVF9YUFJWID1cbiAgJ3hwcnY5czIxWnJRSDE0M0syZko5MVM0QlJzdXBjWXJFNm1tWTk2ZmNYNUhraG9UcnJ3bXdqZDE2Q244N2NXaW5KakJ5cmZwb2pqeDdlenNKTHg3VEFLTFQ4bThoTTVLYXg5WWNveG5CZUpaM3Qyayc7XG5jb25zdCBURVNUX1hQVUIgPVxuICAneHB1YjY2MU15TXdBcVJiY0Y5TmM3VGJCbzFyWkFhZ2lXRVZQV0tiREtUaE5HOHpxams3NkhBS0xrYVNiVG42ZEsyZFFQZnVEN3hqaWN4Q1pWV3ZqNjdmUDVuUTlXN1FVUm1vTVZBWDhtNmpac0dwJztcbmNvbnN0IFNBRkVfVVNFUl9ST09UX1NFRUQgPSAnMDAwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBlMGYnO1xuY29uc3QgU0FGRV9CQUNLVVBfUk9PVF9TRUVEID0gJzAwMDEwMjAzMDQwNTA2MDcwODA5MGEwYjBjMGQwZTBmMTAxMTEyMTMxNDE1MTYxNzE4MTkxYTFiMWMxZDFlMWYnO1xuY29uc3QgU0FGRV9CSVRHT19ST09UX1NFRUQgPSAnMWYxZTFkMWMxYjFhMTkxODE3MTYxNTE0MTMxMjExMTAwZjBlMGQwYzBiMGEwOTA4MDcwNjA1MDQwMzAyMDEwMCc7XG5cbi8qKlxuICogRW5jcnlwdCBwbGFpbnRleHQgd2l0aCBTSkNMIChsZWdhY3kgdjEgZW52ZWxvcGUsIG1hdGNoaW5nIGBlbmNyeXB0aW9uVmVyc2lvbjogMWApLlxuICovXG5mdW5jdGlvbiBzamNsRW5jcnlwdChwYXNzd29yZDogc3RyaW5nLCBpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNqY2wuZW5jcnlwdChwYXNzd29yZCwgaW5wdXQpIGFzIHVua25vd24gYXMgc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBtYWtlTW9ja0JpdEdvKGRlY3J5cHRJbXBsOiAocGFyYW1zOiB7IHBhc3N3b3JkPzogc3RyaW5nOyBpbnB1dDogc3RyaW5nIH0pID0+IHN0cmluZyk6IEJpdEdvQmFzZSB7XG4gIHJldHVybiB7XG4gICAgZGVjcnlwdDogc2lub24uc3R1YigpLmNhbGxzRmFrZShhc3luYyAocGFyYW1zOiB7IHBhc3N3b3JkPzogc3RyaW5nOyBpbnB1dDogc3RyaW5nIH0pID0+IGRlY3J5cHRJbXBsKHBhcmFtcykpLFxuICAgIGVuY3J5cHQ6IHNpbm9uLnN0dWIoKSxcbiAgfSBhcyB1bmtub3duIGFzIEJpdEdvQmFzZTtcbn1cblxuZGVzY3JpYmUoJ3ZhbGlkYXRlS2V5JywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgYSBCSVAzMiBub2RlIGRpcmVjdGx5IHdoZW4ga2V5IHN0YXJ0cyB3aXRoIHhwcnYgKGJ5cGFzc2VzIGRlY3J5cHQpJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJpdGdvID0gbWFrZU1vY2tCaXRHbygoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Nob3VsZCBub3QgYmUgY2FsbGVkJyk7XG4gICAgfSk7XG4gICAgY29uc3Qgbm9kZSA9IGF3YWl0IHZhbGlkYXRlS2V5KGJpdGdvLCB7XG4gICAgICBrZXk6IFRFU1RfWFBSVixcbiAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgcGFzc3BocmFzZTogJ3NlY3JldCcsXG4gICAgICBpc1Vuc2lnbmVkU3dlZXA6IGZhbHNlLFxuICAgICAgaXNLcnNSZWNvdmVyeTogZmFsc2UsXG4gICAgfSk7XG4gICAgbm9kZS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbChURVNUX1hQUlYpO1xuICAgIChiaXRnby5kZWNyeXB0IGFzIHNpbm9uLlNpbm9uU3R1YikuY2FsbENvdW50LnNob3VsZC5lcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGxzIGRlY3J5cHQgYW5kIHJldHVybnMgQklQMzIgbm9kZSB3aGVuIGtleSBpcyBlbmNyeXB0ZWQgKG5vdCB4cHJ2KScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXNzcGhyYXNlID0gJ2h1bnRlcjInO1xuICAgIGNvbnN0IGVuY3J5cHRlZEtleSA9IHNqY2xFbmNyeXB0KHBhc3NwaHJhc2UsIFRFU1RfWFBSVik7XG4gICAgY29uc3QgYml0Z28gPSBtYWtlTW9ja0JpdEdvKCh7IHBhc3N3b3JkLCBpbnB1dCB9KSA9PiB7XG4gICAgICBpZiAoaW5wdXQgPT09IGVuY3J5cHRlZEtleSAmJiBwYXNzd29yZCA9PT0gcGFzc3BocmFzZSkgcmV0dXJuIFRFU1RfWFBSVjtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBkZWNyeXB0IGNhbGwnKTtcbiAgICB9KTtcbiAgICBjb25zdCBub2RlID0gYXdhaXQgdmFsaWRhdGVLZXkoYml0Z28sIHtcbiAgICAgIGtleTogZW5jcnlwdGVkS2V5LFxuICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICBwYXNzcGhyYXNlLFxuICAgICAgaXNVbnNpZ25lZFN3ZWVwOiBmYWxzZSxcbiAgICAgIGlzS3JzUmVjb3Zlcnk6IGZhbHNlLFxuICAgIH0pO1xuICAgIG5vZGUudG9CYXNlNTgoKS5zaG91bGQuZXF1YWwoVEVTVF9YUFJWKTtcbiAgICAoYml0Z28uZGVjcnlwdCBhcyBzaW5vbi5TaW5vblN0dWIpLmNhbGxDb3VudC5zaG91bGQuZXF1YWwoMSk7XG4gIH0pO1xuXG4gIGl0KCdyZWplY3RzIHdpdGggZnJpZW5kbHkgbWVzc2FnZSB3aGVuIGRlY3J5cHQgZmFpbHMgKHdyb25nIHBhc3NwaHJhc2UpJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJpdGdvID0gbWFrZU1vY2tCaXRHbygoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NqY2w6IGNjbTogdGFnIGRvZXMgbm90IG1hdGNoJyk7XG4gICAgfSk7XG4gICAgYXdhaXQgdmFsaWRhdGVLZXkoYml0Z28sIHtcbiAgICAgIGtleTogJ25vdEFuWHBydicsXG4gICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgIHBhc3NwaHJhc2U6ICd3cm9uZycsXG4gICAgICBpc1Vuc2lnbmVkU3dlZXA6IGZhbHNlLFxuICAgICAgaXNLcnNSZWNvdmVyeTogZmFsc2UsXG4gICAgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnRmFpbGVkIHRvIGRlY3J5cHQgdXNlciBrZXkgd2l0aCBwYXNzY29kZSAtIHRyeSBhZ2FpbiEnKTtcbiAgfSk7XG5cbiAgaXQoJ3NraXBzIGRlY3J5cHQgZm9yIHVuc2lnbmVkIHN3ZWVwIChpc1Vuc2lnbmVkU3dlZXAgPSB0cnVlKScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBiaXRnbyA9IG1ha2VNb2NrQml0R28oKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaG91bGQgbm90IGJlIGNhbGxlZCcpO1xuICAgIH0pO1xuICAgIGNvbnN0IG5vZGUgPSBhd2FpdCB2YWxpZGF0ZUtleShiaXRnbywge1xuICAgICAga2V5OiBURVNUX1hQVUIsXG4gICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgIHBhc3NwaHJhc2U6ICdzZWNyZXQnLFxuICAgICAgaXNVbnNpZ25lZFN3ZWVwOiB0cnVlLFxuICAgICAgaXNLcnNSZWNvdmVyeTogZmFsc2UsXG4gICAgfSk7XG4gICAgbm9kZS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkuc2hvdWxkLmVxdWFsKFRFU1RfWFBVQik7XG4gICAgKGJpdGdvLmRlY3J5cHQgYXMgc2lub24uU2lub25TdHViKS5jYWxsQ291bnQuc2hvdWxkLmVxdWFsKDApO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnZ2V0QmlwMzJLZXlzJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgW3VzZXJLZXksIGJhY2t1cEtleV0gd2hlbiBib3RoIGFyZSBwcm92aWRlZCBhcyB4cHJ2JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJpdGdvID0gbWFrZU1vY2tCaXRHbygoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Nob3VsZCBub3QgYmUgY2FsbGVkJyk7XG4gICAgfSk7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IGdldEJpcDMyS2V5cyhcbiAgICAgIGJpdGdvLFxuICAgICAgeyB1c2VyS2V5OiBURVNUX1hQUlYsIGJhY2t1cEtleTogVEVTVF9YUFJWLCByZWNvdmVyeURlc3RpbmF0aW9uOiAnYWRkcicgfSxcbiAgICAgIHsgcmVxdWlyZUJpdEdvWHB1YjogZmFsc2UgfVxuICAgICk7XG4gICAga2V5cy5zaG91bGQuaGF2ZS5sZW5ndGgoMik7XG4gICAga2V5c1swXS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbChURVNUX1hQUlYpO1xuICAgIGtleXNbMV0udG9CYXNlNTgoKS5zaG91bGQuZXF1YWwoVEVTVF9YUFJWKTtcbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgdGhyZWUga2V5cyB3aGVuIHJlcXVpcmVCaXRHb1hwdWIgaXMgdHJ1ZSBhbmQgYml0Z29LZXkgaXMgdmFsaWQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYml0Z28gPSBtYWtlTW9ja0JpdEdvKCgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTtcbiAgICB9KTtcbiAgICBjb25zdCBrZXlzID0gYXdhaXQgZ2V0QmlwMzJLZXlzKFxuICAgICAgYml0Z28sXG4gICAgICB7IHVzZXJLZXk6IFRFU1RfWFBSViwgYmFja3VwS2V5OiBURVNUX1hQUlYsIGJpdGdvS2V5OiBURVNUX1hQVUIsIHJlY292ZXJ5RGVzdGluYXRpb246ICdhZGRyJyB9LFxuICAgICAgeyByZXF1aXJlQml0R29YcHViOiB0cnVlIH1cbiAgICApO1xuICAgIGtleXMuc2hvdWxkLmhhdmUubGVuZ3RoKDMpO1xuICAgIGtleXNbMl0ubmV1dGVyZWQoKS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbChURVNUX1hQVUIpO1xuICB9KTtcblxuICBpdCgnYWNjZXB0cyBhIGRlcml2ZWQgc2xvdC0xIHRyaXBsZXQgd2l0aG91dCBkZWNyeXB0aW5nIHVzZXIgb3IgYmFja3VwIGtleXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdXNlclJvb3QgPSBiaXAzMi5mcm9tU2VlZChCdWZmZXIuZnJvbShTQUZFX1VTRVJfUk9PVF9TRUVELCAnaGV4JykpO1xuICAgIGNvbnN0IGJhY2t1cFJvb3QgPSBiaXAzMi5mcm9tU2VlZChCdWZmZXIuZnJvbShTQUZFX0JBQ0tVUF9ST09UX1NFRUQsICdoZXgnKSk7XG4gICAgY29uc3QgYml0Z29Sb290ID0gYmlwMzIuZnJvbVNlZWQoQnVmZmVyLmZyb20oU0FGRV9CSVRHT19ST09UX1NFRUQsICdoZXgnKSk7XG4gICAgY29uc3QgdHJpcGxldCA9IGRlcml2ZVNhZmVTZWNwMjU2azFNdWx0aXNpZ1RyaXBsZXQoe1xuICAgICAgdXNlclJvb3RYcHJ2OiB1c2VyUm9vdC50b0Jhc2U1OCgpLFxuICAgICAgYmFja3VwUm9vdFhwcnY6IGJhY2t1cFJvb3QudG9CYXNlNTgoKSxcbiAgICAgIGJpdGdvUm9vdFhwdWI6IGJpdGdvUm9vdC5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksXG4gICAgICBpbmRleDogOTk5LFxuICAgIH0pO1xuICAgIGNvbnN0IGJpdGdvID0gbWFrZU1vY2tCaXRHbygoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Rlcml2ZWQgcmF3IGtleXMgbXVzdCBieXBhc3MgZGVjcnlwdCcpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IGdldEJpcDMyS2V5cyhcbiAgICAgIGJpdGdvLFxuICAgICAge1xuICAgICAgICB1c2VyS2V5OiB0cmlwbGV0LnVzZXIucHJ2LFxuICAgICAgICBiYWNrdXBLZXk6IHRyaXBsZXQuYmFja3VwLnBydixcbiAgICAgICAgYml0Z29LZXk6IHRyaXBsZXQuYml0Z28ucHViLFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiAnYWRkcicsXG4gICAgICB9LFxuICAgICAgeyByZXF1aXJlQml0R29YcHViOiB0cnVlIH1cbiAgICApO1xuXG4gICAga2V5c1swXS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbCh0cmlwbGV0LnVzZXIucHJ2KTtcbiAgICBrZXlzWzFdLnRvQmFzZTU4KCkuc2hvdWxkLmVxdWFsKHRyaXBsZXQuYmFja3VwLnBydik7XG4gICAga2V5c1syXS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkuc2hvdWxkLmVxdWFsKHRyaXBsZXQuYml0Z28ucHViKTtcbiAgICAoYml0Z28uZGVjcnlwdCBhcyBzaW5vbi5TaW5vblN0dWIpLmNhbGxDb3VudC5zaG91bGQuZXF1YWwoMCk7XG4gIH0pO1xuXG4gIGl0KCdjYWxscyBkZWNyeXB0IGZvciBlbmNyeXB0ZWQgdXNlciBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGFzc3BocmFzZSA9ICdwYXNzMSc7XG4gICAgY29uc3QgZW5jcnlwdGVkVXNlcktleSA9IHNqY2xFbmNyeXB0KHBhc3NwaHJhc2UsIFRFU1RfWFBSVik7XG4gICAgY29uc3QgYml0Z28gPSBtYWtlTW9ja0JpdEdvKCh7IHBhc3N3b3JkLCBpbnB1dCB9KSA9PiB7XG4gICAgICBpZiAoaW5wdXQgPT09IGVuY3J5cHRlZFVzZXJLZXkgJiYgcGFzc3dvcmQgPT09IHBhc3NwaHJhc2UpIHJldHVybiBURVNUX1hQUlY7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgZGVjcnlwdCBjYWxsJyk7XG4gICAgfSk7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IGdldEJpcDMyS2V5cyhcbiAgICAgIGJpdGdvLFxuICAgICAgeyB1c2VyS2V5OiBlbmNyeXB0ZWRVc2VyS2V5LCBiYWNrdXBLZXk6IFRFU1RfWFBSViwgd2FsbGV0UGFzc3BocmFzZTogcGFzc3BocmFzZSwgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJ2FkZHInIH0sXG4gICAgICB7IHJlcXVpcmVCaXRHb1hwdWI6IGZhbHNlIH1cbiAgICApO1xuICAgIGtleXMuc2hvdWxkLmhhdmUubGVuZ3RoKDIpO1xuICAgIGtleXNbMF0udG9CYXNlNTgoKS5zaG91bGQuZXF1YWwoVEVTVF9YUFJWKTtcbiAgICAoYml0Z28uZGVjcnlwdCBhcyBzaW5vbi5TaW5vblN0dWIpLmNhbGxDb3VudC5zaG91bGQuZXF1YWwoMSk7XG4gIH0pO1xuXG4gIGl0KCdyZWplY3RzIHdoZW4gcmVxdWlyZUJpdEdvWHB1YiBpcyB0cnVlIGJ1dCBiaXRnb0tleSBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJpdGdvID0gbWFrZU1vY2tCaXRHbygoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Nob3VsZCBub3QgYmUgY2FsbGVkJyk7XG4gICAgfSk7XG4gICAgYXdhaXQgZ2V0QmlwMzJLZXlzKFxuICAgICAgYml0Z28sXG4gICAgICB7IHVzZXJLZXk6IFRFU1RfWFBSViwgYmFja3VwS2V5OiBURVNUX1hQUlYsIHJlY292ZXJ5RGVzdGluYXRpb246ICdhZGRyJyB9LFxuICAgICAgeyByZXF1aXJlQml0R29YcHViOiB0cnVlIH1cbiAgICApLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0JpdEdvIHhwdWIgcmVxdWlyZWQgYnV0IG5vdCBwcm92aWRlZCcpO1xuICB9KTtcbn0pO1xuIl19
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vcmVjb3ZlcnkvaW5pdGlhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrQkFBZ0I7QUFDaEIsNkNBQStCO0FBQy9CLHVEQUF5QztBQUN6QyxzRUFBb0Y7QUFHcEYsOENBQThDO0FBQzlDLE1BQU0sU0FBUyxHQUNiLGlIQUFpSCxDQUFDO0FBQ3BILE1BQU0sU0FBUyxHQUNiLGlIQUFpSCxDQUFDO0FBRXBIOztHQUVHO0FBQ0gsU0FBUyxXQUFXLENBQUMsUUFBZ0IsRUFBRSxLQUFhO0lBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFzQixDQUFDO0FBQzVELENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxXQUFxRTtJQUMxRixPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQTRDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1RyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtLQUNFLENBQUM7QUFDNUIsQ0FBQztBQUVELFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO0lBQzNCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNEVBQTRFLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDMUYsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRTtZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxN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SSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsS0FBSyxDQUFDLE9BQTJCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0RBQStELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDN0UsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRTtZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLElBQUEsdUJBQVksRUFDaEIsS0FBSyxFQUNMLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxFQUN6RSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUMzQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDbkUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnc2hvdWxkJztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAqIGFzIHNqY2wgZnJvbSAnQGJpdGdvLWJldGEvc2pjbCc7XG5pbXBvcnQgeyB2YWxpZGF0ZUtleSwgZ2V0QmlwMzJLZXlzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3JlY292ZXJ5L2luaXRpYXRlJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby9iaXRnb0Jhc2UnO1xuXG4vLyBBIGRldGVybWluaXN0aWMgeHBydiB1c2VkIGFjcm9zcyBhbGwgdGVzdHMuXG5jb25zdCBURVNUX1hQUlYgPVxuICAneHBydjlzMjFaclFIMTQzSzJmSjkxUzRCUnN1cGNZckU2bW1ZOTZmY1g1SGtob1Rycndtd2pkMTZDbjg3Y1dpbkpqQnlyZnBvamp4N2V6c0pMeDdUQUtMVDhtOGhNNUtheDlZY294bkJlSlozdDJrJztcbmNvbnN0IFRFU1RfWFBVQiA9XG4gICd4cHViNjYxTXlNd0FxUmJjRjlOYzdUYkJvMXJaQWFnaVdFVlBXS2JES1RoTkc4enFqazc2SEFLTGthU2JUbjZkSzJkUVBmdUQ3eGppY3hDWlZXdmo2N2ZQNW5ROVc3UVVSbW9NVkFYOG02alpzR3AnO1xuXG4vKipcbiAqIEVuY3J5cHQgcGxhaW50ZXh0IHdpdGggU0pDTCAobGVnYWN5IHYxIGVudmVsb3BlLCBtYXRjaGluZyBgZW5jcnlwdGlvblZlcnNpb246IDFgKS5cbiAqL1xuZnVuY3Rpb24gc2pjbEVuY3J5cHQocGFzc3dvcmQ6IHN0cmluZywgaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzamNsLmVuY3J5cHQocGFzc3dvcmQsIGlucHV0KSBhcyB1bmtub3duIGFzIHN0cmluZztcbn1cblxuZnVuY3Rpb24gbWFrZU1vY2tCaXRHbyhkZWNyeXB0SW1wbDogKHBhcmFtczogeyBwYXNzd29yZD86IHN0cmluZzsgaW5wdXQ6IHN0cmluZyB9KSA9PiBzdHJpbmcpOiBCaXRHb0Jhc2Uge1xuICByZXR1cm4ge1xuICAgIGRlY3J5cHQ6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoYXN5bmMgKHBhcmFtczogeyBwYXNzd29yZD86IHN0cmluZzsgaW5wdXQ6IHN0cmluZyB9KSA9PiBkZWNyeXB0SW1wbChwYXJhbXMpKSxcbiAgICBlbmNyeXB0OiBzaW5vbi5zdHViKCksXG4gIH0gYXMgdW5rbm93biBhcyBCaXRHb0Jhc2U7XG59XG5cbmRlc2NyaWJlKCd2YWxpZGF0ZUtleScsICgpID0+IHtcbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIGEgQklQMzIgbm9kZSBkaXJlY3RseSB3aGVuIGtleSBzdGFydHMgd2l0aCB4cHJ2IChieXBhc3NlcyBkZWNyeXB0KScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBiaXRnbyA9IG1ha2VNb2NrQml0R28oKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaG91bGQgbm90IGJlIGNhbGxlZCcpO1xuICAgIH0pO1xuICAgIGNvbnN0IG5vZGUgPSBhd2FpdCB2YWxpZGF0ZUtleShiaXRnbywge1xuICAgICAga2V5OiBURVNUX1hQUlYsXG4gICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgIHBhc3NwaHJhc2U6ICdzZWNyZXQnLFxuICAgICAgaXNVbnNpZ25lZFN3ZWVwOiBmYWxzZSxcbiAgICAgIGlzS3JzUmVjb3Zlcnk6IGZhbHNlLFxuICAgIH0pO1xuICAgIG5vZGUudG9CYXNlNTgoKS5zaG91bGQuZXF1YWwoVEVTVF9YUFJWKTtcbiAgICAoYml0Z28uZGVjcnlwdCBhcyBzaW5vbi5TaW5vblN0dWIpLmNhbGxDb3VudC5zaG91bGQuZXF1YWwoMCk7XG4gIH0pO1xuXG4gIGl0KCdjYWxscyBkZWNyeXB0IGFuZCByZXR1cm5zIEJJUDMyIG5vZGUgd2hlbiBrZXkgaXMgZW5jcnlwdGVkIChub3QgeHBydiknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGFzc3BocmFzZSA9ICdodW50ZXIyJztcbiAgICBjb25zdCBlbmNyeXB0ZWRLZXkgPSBzamNsRW5jcnlwdChwYXNzcGhyYXNlLCBURVNUX1hQUlYpO1xuICAgIGNvbnN0IGJpdGdvID0gbWFrZU1vY2tCaXRHbygoeyBwYXNzd29yZCwgaW5wdXQgfSkgPT4ge1xuICAgICAgaWYgKGlucHV0ID09PSBlbmNyeXB0ZWRLZXkgJiYgcGFzc3dvcmQgPT09IHBhc3NwaHJhc2UpIHJldHVybiBURVNUX1hQUlY7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgZGVjcnlwdCBjYWxsJyk7XG4gICAgfSk7XG4gICAgY29uc3Qgbm9kZSA9IGF3YWl0IHZhbGlkYXRlS2V5KGJpdGdvLCB7XG4gICAgICBrZXk6IGVuY3J5cHRlZEtleSxcbiAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgcGFzc3BocmFzZSxcbiAgICAgIGlzVW5zaWduZWRTd2VlcDogZmFsc2UsXG4gICAgICBpc0tyc1JlY292ZXJ5OiBmYWxzZSxcbiAgICB9KTtcbiAgICBub2RlLnRvQmFzZTU4KCkuc2hvdWxkLmVxdWFsKFRFU1RfWFBSVik7XG4gICAgKGJpdGdvLmRlY3J5cHQgYXMgc2lub24uU2lub25TdHViKS5jYWxsQ291bnQuc2hvdWxkLmVxdWFsKDEpO1xuICB9KTtcblxuICBpdCgncmVqZWN0cyB3aXRoIGZyaWVuZGx5IG1lc3NhZ2Ugd2hlbiBkZWNyeXB0IGZhaWxzICh3cm9uZyBwYXNzcGhyYXNlKScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBiaXRnbyA9IG1ha2VNb2NrQml0R28oKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzamNsOiBjY206IHRhZyBkb2VzIG5vdCBtYXRjaCcpO1xuICAgIH0pO1xuICAgIGF3YWl0IHZhbGlkYXRlS2V5KGJpdGdvLCB7XG4gICAgICBrZXk6ICdub3RBblhwcnYnLFxuICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICBwYXNzcGhyYXNlOiAnd3JvbmcnLFxuICAgICAgaXNVbnNpZ25lZFN3ZWVwOiBmYWxzZSxcbiAgICAgIGlzS3JzUmVjb3Zlcnk6IGZhbHNlLFxuICAgIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ZhaWxlZCB0byBkZWNyeXB0IHVzZXIga2V5IHdpdGggcGFzc2NvZGUgLSB0cnkgYWdhaW4hJyk7XG4gIH0pO1xuXG4gIGl0KCdza2lwcyBkZWNyeXB0IGZvciB1bnNpZ25lZCBzd2VlcCAoaXNVbnNpZ25lZFN3ZWVwID0gdHJ1ZSknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYml0Z28gPSBtYWtlTW9ja0JpdEdvKCgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTtcbiAgICB9KTtcbiAgICBjb25zdCBub2RlID0gYXdhaXQgdmFsaWRhdGVLZXkoYml0Z28sIHtcbiAgICAgIGtleTogVEVTVF9YUFVCLFxuICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICBwYXNzcGhyYXNlOiAnc2VjcmV0JyxcbiAgICAgIGlzVW5zaWduZWRTd2VlcDogdHJ1ZSxcbiAgICAgIGlzS3JzUmVjb3Zlcnk6IGZhbHNlLFxuICAgIH0pO1xuICAgIG5vZGUubmV1dGVyZWQoKS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbChURVNUX1hQVUIpO1xuICAgIChiaXRnby5kZWNyeXB0IGFzIHNpbm9uLlNpbm9uU3R1YikuY2FsbENvdW50LnNob3VsZC5lcXVhbCgwKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2dldEJpcDMyS2V5cycsICgpID0+IHtcbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIFt1c2VyS2V5LCBiYWNrdXBLZXldIHdoZW4gYm90aCBhcmUgcHJvdmlkZWQgYXMgeHBydicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBiaXRnbyA9IG1ha2VNb2NrQml0R28oKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaG91bGQgbm90IGJlIGNhbGxlZCcpO1xuICAgIH0pO1xuICAgIGNvbnN0IGtleXMgPSBhd2FpdCBnZXRCaXAzMktleXMoXG4gICAgICBiaXRnbyxcbiAgICAgIHsgdXNlcktleTogVEVTVF9YUFJWLCBiYWNrdXBLZXk6IFRFU1RfWFBSViwgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJ2FkZHInIH0sXG4gICAgICB7IHJlcXVpcmVCaXRHb1hwdWI6IGZhbHNlIH1cbiAgICApO1xuICAgIGtleXMuc2hvdWxkLmhhdmUubGVuZ3RoKDIpO1xuICAgIGtleXNbMF0udG9CYXNlNTgoKS5zaG91bGQuZXF1YWwoVEVTVF9YUFJWKTtcbiAgICBrZXlzWzFdLnRvQmFzZTU4KCkuc2hvdWxkLmVxdWFsKFRFU1RfWFBSVik7XG4gIH0pO1xuXG4gIGl0KCdyZXR1cm5zIHRocmVlIGtleXMgd2hlbiByZXF1aXJlQml0R29YcHViIGlzIHRydWUgYW5kIGJpdGdvS2V5IGlzIHZhbGlkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJpdGdvID0gbWFrZU1vY2tCaXRHbygoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Nob3VsZCBub3QgYmUgY2FsbGVkJyk7XG4gICAgfSk7XG4gICAgY29uc3Qga2V5cyA9IGF3YWl0IGdldEJpcDMyS2V5cyhcbiAgICAgIGJpdGdvLFxuICAgICAgeyB1c2VyS2V5OiBURVNUX1hQUlYsIGJhY2t1cEtleTogVEVTVF9YUFJWLCBiaXRnb0tleTogVEVTVF9YUFVCLCByZWNvdmVyeURlc3RpbmF0aW9uOiAnYWRkcicgfSxcbiAgICAgIHsgcmVxdWlyZUJpdEdvWHB1YjogdHJ1ZSB9XG4gICAgKTtcbiAgICBrZXlzLnNob3VsZC5oYXZlLmxlbmd0aCgzKTtcbiAgICBrZXlzWzJdLm5ldXRlcmVkKCkudG9CYXNlNTgoKS5zaG91bGQuZXF1YWwoVEVTVF9YUFVCKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbGxzIGRlY3J5cHQgZm9yIGVuY3J5cHRlZCB1c2VyIGtleScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXNzcGhyYXNlID0gJ3Bhc3MxJztcbiAgICBjb25zdCBlbmNyeXB0ZWRVc2VyS2V5ID0gc2pjbEVuY3J5cHQocGFzc3BocmFzZSwgVEVTVF9YUFJWKTtcbiAgICBjb25zdCBiaXRnbyA9IG1ha2VNb2NrQml0R28oKHsgcGFzc3dvcmQsIGlucHV0IH0pID0+IHtcbiAgICAgIGlmIChpbnB1dCA9PT0gZW5jcnlwdGVkVXNlcktleSAmJiBwYXNzd29yZCA9PT0gcGFzc3BocmFzZSkgcmV0dXJuIFRFU1RfWFBSVjtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBkZWNyeXB0IGNhbGwnKTtcbiAgICB9KTtcbiAgICBjb25zdCBrZXlzID0gYXdhaXQgZ2V0QmlwMzJLZXlzKFxuICAgICAgYml0Z28sXG4gICAgICB7IHVzZXJLZXk6IGVuY3J5cHRlZFVzZXJLZXksIGJhY2t1cEtleTogVEVTVF9YUFJWLCB3YWxsZXRQYXNzcGhyYXNlOiBwYXNzcGhyYXNlLCByZWNvdmVyeURlc3RpbmF0aW9uOiAnYWRkcicgfSxcbiAgICAgIHsgcmVxdWlyZUJpdEdvWHB1YjogZmFsc2UgfVxuICAgICk7XG4gICAga2V5cy5zaG91bGQuaGF2ZS5sZW5ndGgoMik7XG4gICAga2V5c1swXS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbChURVNUX1hQUlYpO1xuICAgIChiaXRnby5kZWNyeXB0IGFzIHNpbm9uLlNpbm9uU3R1YikuY2FsbENvdW50LnNob3VsZC5lcXVhbCgxKTtcbiAgfSk7XG5cbiAgaXQoJ3JlamVjdHMgd2hlbiByZXF1aXJlQml0R29YcHViIGlzIHRydWUgYnV0IGJpdGdvS2V5IGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYml0Z28gPSBtYWtlTW9ja0JpdEdvKCgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTtcbiAgICB9KTtcbiAgICBhd2FpdCBnZXRCaXAzMktleXMoXG4gICAgICBiaXRnbyxcbiAgICAgIHsgdXNlcktleTogVEVTVF9YUFJWLCBiYWNrdXBLZXk6IFRFU1RfWFBSViwgcmVjb3ZlcnlEZXN0aW5hdGlvbjogJ2FkZHInIH0sXG4gICAgICB7IHJlcXVpcmVCaXRHb1hwdWI6IHRydWUgfVxuICAgICkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnQml0R28geHB1YiByZXF1aXJlZCBidXQgbm90IHByb3ZpZGVkJyk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/safe/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}