New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@fgv/ts-utils

Package Overview
Dependencies
Maintainers
1
Versions
95
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@fgv/ts-utils - npm Package Compare versions

Comparing version 0.1.6 to 0.1.7

2

package.json
{
"name": "@fgv/ts-utils",
"version": "0.1.6",
"version": "0.1.7",
"description": "Assorted Typescript Utilities",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -48,3 +48,10 @@ export declare type Result<T> = Success<T> | Failure<T>;

export declare function fail<T>(message: string): Failure<T>;
export declare type DetailedSuccessContinuation<T, TD, TN> = (value: T) => DetailedResult<TN, TD>;
export declare type DetailedFailureContinuation<T, TD> = (message: string, detail: TD) => DetailedResult<T, TD>;
export declare class DetailedSuccess<T, TD> extends Success<T> {
constructor(value: T);
isSuccess(): this is DetailedSuccess<T, TD>;
onSuccess<TN>(cb: DetailedSuccessContinuation<T, TD, TN>): DetailedResult<TN, TD>;
onFailure(_cb: DetailedFailureContinuation<T, TD>): DetailedResult<T, TD>;
}
/**

@@ -62,3 +69,4 @@ * A DetailedFailure reports optional failure details in addition

}
export declare type DetailedResult<T, TD> = Success<T> | DetailedFailure<T, TD>;
export declare type DetailedResult<T, TD> = DetailedSuccess<T, TD> | DetailedFailure<T, TD>;
export declare function succeedWithDetail<T, TD>(value: T): DetailedSuccess<T, TD>;
export declare function failWithDetail<T, TD>(message: string, detail: TD): DetailedFailure<T, TD>;

@@ -65,0 +73,0 @@ /**

@@ -24,3 +24,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.populateObject = exports.allSucceed = exports.mapFailures = exports.mapSuccess = exports.mapResults = exports.captureResult = exports.failWithDetail = exports.DetailedFailure = exports.fail = exports.succeed = exports.Failure = exports.Success = void 0;
exports.populateObject = exports.allSucceed = exports.mapFailures = exports.mapSuccess = exports.mapResults = exports.captureResult = exports.failWithDetail = exports.succeedWithDetail = exports.DetailedFailure = exports.DetailedSuccess = exports.fail = exports.succeed = exports.Failure = exports.Success = void 0;
class Success {

@@ -103,2 +103,17 @@ constructor(value) {

exports.fail = fail;
class DetailedSuccess extends Success {
constructor(value) {
super(value);
}
isSuccess() {
return true;
}
onSuccess(cb) {
return cb(this.value);
}
onFailure(_cb) {
return this;
}
}
exports.DetailedSuccess = DetailedSuccess;
/**

@@ -127,2 +142,6 @@ * A DetailedFailure reports optional failure details in addition

exports.DetailedFailure = DetailedFailure;
function succeedWithDetail(value) {
return new DetailedSuccess(value);
}
exports.succeedWithDetail = succeedWithDetail;
function failWithDetail(message, detail) {

@@ -267,2 +286,2 @@ return new DetailedFailure(message, detail);

exports.populateObject = populateObject;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFtQkgsTUFBYSxPQUFPO0lBR2hCLFlBQVksS0FBUTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU0sZUFBZSxDQUFDLE9BQXVCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBUTs7UUFDN0IsYUFBTyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVNLFNBQVMsQ0FBSyxFQUE4QjtRQUMvQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLFNBQVMsQ0FBSyxDQUF5QjtRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFsQ0QsMEJBa0NDO0FBRUQsTUFBYSxPQUFPO0lBR2hCLFlBQVksT0FBZTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRU0sZUFBZSxDQUFDLE1BQXNCO1FBQ3pDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUN0QixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvQjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFRO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxTQUFTLENBQUssQ0FBNkI7UUFDOUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxFQUEwQjtRQUN2QyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztDQUNKO0FBekNELDBCQXlDQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLE9BQU8sQ0FBSSxHQUFNO0lBQzdCLE9BQU8sSUFBSSxPQUFPLENBQUksR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUZELDBCQUVDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFJLE9BQWU7SUFDbkMsT0FBTyxJQUFJLE9BQU8sQ0FBSSxPQUFPLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRkQsb0JBRUM7QUFJRDs7O0dBR0c7QUFDSCxNQUFhLGVBQXVCLFNBQVEsT0FBVTtJQUdsRCxZQUFtQixPQUFlLEVBQUUsTUFBVTtRQUMxQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFNBQVMsQ0FBSyxHQUErQjtRQUNoRCxPQUFPLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxTQUFTLENBQUMsRUFBc0M7UUFDbkQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNKO0FBdkJELDBDQXVCQztBQUlELFNBQWdCLGNBQWMsQ0FBUSxPQUFlLEVBQUUsTUFBVTtJQUM3RCxPQUFPLElBQUksZUFBZSxDQUFRLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRkQsd0NBRUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFJLElBQWE7SUFDMUMsSUFBSTtRQUNBLE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7S0FDMUI7SUFDRCxPQUFPLEdBQUcsRUFBRTtRQUNSLE9BQU8sSUFBSSxDQUFFLEdBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN2QztBQUNMLENBQUM7QUFQRCxzQ0FPQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFJLFNBQThCO0lBQ3hELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixNQUFNLFFBQVEsR0FBUSxFQUFFLENBQUM7SUFFekIsS0FBSyxNQUFNLE1BQU0sSUFBSSxTQUFTLEVBQUU7UUFDNUIsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0I7YUFDSTtZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQy9CO0tBQ0o7SUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNsQztJQUNELE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFqQkQsZ0NBaUJDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFVBQVUsQ0FBSSxTQUE4QjtJQUN4RCxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDNUIsTUFBTSxRQUFRLEdBQVEsRUFBRSxDQUFDO0lBRXpCLEtBQUssTUFBTSxNQUFNLElBQUksU0FBUyxFQUFFO1FBQzVCLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9CO2FBQ0k7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMvQjtLQUNKO0lBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQ2hELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNsQztJQUNELE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFqQkQsZ0NBaUJDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixXQUFXLENBQUksU0FBOEI7SUFDekQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLEtBQUssTUFBTSxNQUFNLElBQUksU0FBUyxFQUFFO1FBQzVCLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQy9CO0tBQ0o7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBUkQsa0NBUUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFJLE9BQWtDLEVBQUUsWUFBZTtJQUM3RSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFFNUIsdUJBQXVCO0lBQ3ZCLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtRQUN2QixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUMxQixJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDL0I7U0FDSjtLQUNKO0lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDbEM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBaEJELGdDQWdCQztBQUlEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGNBQWMsQ0FBSSxZQUFrQyxFQUFFLEtBQW1CO0lBQ3JGLE1BQU0sS0FBSyxHQUFHLEVBQWtDLENBQUM7SUFDakQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLE1BQU0sSUFBSSxHQUFnQixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRTFDLGtFQUFrRTtJQUNsRSxLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRTtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QjtLQUNKO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDcEIsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNwQixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUM3QjtpQkFDSTtnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMvQjtTQUNKO2FBQ0k7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLG9DQUFvQyxDQUFDLENBQUM7U0FDL0U7S0FDSjtJQUVELElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ2xDO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBVSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQWpDRCx3Q0FpQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuZXhwb3J0IHR5cGUgUmVzdWx0PFQ+ID0gU3VjY2VzczxUPiB8IEZhaWx1cmU8VD47XG5leHBvcnQgdHlwZSBTdWNjZXNzQ29udGludWF0aW9uPFQsIFROPiA9ICh2YWx1ZTogVCkgPT4gUmVzdWx0PFROPjtcbmV4cG9ydCB0eXBlIEZhaWx1cmVDb250aW51YXRpb248VD4gPSAobWVzc2FnZTogc3RyaW5nKSA9PiBSZXN1bHQ8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlc3VsdExvZ2dlciB7XG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVzdWx0PFQ+IHtcbiAgICBpc1N1Y2Nlc3MoKTogdGhpcyBpcyBTdWNjZXNzPFQ+O1xuICAgIGlzRmFpbHVyZSgpOiB0aGlzIGlzIEZhaWx1cmU8VD47XG4gICAgZ2V0VmFsdWVPclRocm93KGxvZ2dlcj86IElSZXN1bHRMb2dnZXIpOiBUO1xuICAgIGdldFZhbHVlT3JEZWZhdWx0KGRmbHQ/OiBUKTogVHx1bmRlZmluZWQ7XG4gICAgb25TdWNjZXNzPFROPihjYjogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBSZXN1bHQ8VE4+O1xuICAgIG9uRmFpbHVyZShjYjogRmFpbHVyZUNvbnRpbnVhdGlvbjxUPik6IFJlc3VsdDxUPjtcbn1cblxuZXhwb3J0IGNsYXNzIFN1Y2Nlc3M8VD4gaW1wbGVtZW50cyBJUmVzdWx0PFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZTogVDtcblxuICAgIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzU3VjY2VzcygpOiB0aGlzIGlzIFN1Y2Nlc3M8VD4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGYWlsdXJlKCk6IHRoaXMgaXMgRmFpbHVyZTxUPiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlT3JUaHJvdyhfbG9nZ2VyPzogSVJlc3VsdExvZ2dlcik6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlT3JEZWZhdWx0KGRmbHQ/OiBUKTogVHx1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUgPz8gZGZsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TdWNjZXNzPFROPihjYjogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBSZXN1bHQ8VE4+IHtcbiAgICAgICAgcmV0dXJuIGNiKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZhaWx1cmU8VE4+KF86IEZhaWx1cmVDb250aW51YXRpb248VD4pOiBSZXN1bHQ8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGYWlsdXJlPFQ+IGltcGxlbWVudHMgSVJlc3VsdDxUPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1N1Y2Nlc3MoKTogdGhpcyBpcyBTdWNjZXNzPFQ+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZhaWx1cmUoKTogdGhpcyBpcyBGYWlsdXJlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZU9yVGhyb3cobG9nZ2VyPzogSVJlc3VsdExvZ2dlcik6IG5ldmVyIHtcbiAgICAgICAgaWYgKGxvZ2dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IodGhpcy5fbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuX21lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZU9yRGVmYXVsdChkZmx0PzogVCk6IFR8dW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGRmbHQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU3VjY2VzczxUTj4oXzogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBSZXN1bHQ8VE4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKHRoaXMubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRmFpbHVyZShjYjogRmFpbHVyZUNvbnRpbnVhdGlvbjxUPik6IFJlc3VsdDxUPiB7XG4gICAgICAgIHJldHVybiBjYih0aGlzLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHN1Y2Nlc3NmdWwgcmV0dXJuXG4gKiBAcGFyYW0gdmFsIFRoZSB2YWx1ZSB0byBiZSByZXR1cm5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VjY2VlZDxUPih2YWw6IFQpOiBTdWNjZXNzPFQ+IHtcbiAgICByZXR1cm4gbmV3IFN1Y2Nlc3M8VD4odmFsKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGVycm9yIHJldHVyblxuICogQHBhcmFtIG1lc3NhZ2UgRXJyb3IgbWVzc2FnZSB0byBiZSByZXR1cm5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFpbDxUPihtZXNzYWdlOiBzdHJpbmcpOiBGYWlsdXJlPFQ+IHtcbiAgICByZXR1cm4gbmV3IEZhaWx1cmU8VD4obWVzc2FnZSk7XG59XG5cbmV4cG9ydCB0eXBlIERldGFpbGVkRmFpbHVyZUNvbnRpbnVhdGlvbjxULCBURD4gPSAobWVzc2FnZTogc3RyaW5nLCBkZXRhaWw6IFREKSA9PiBEZXRhaWxlZFJlc3VsdDxULCBURD47XG5cbi8qKlxuICogQSBEZXRhaWxlZEZhaWx1cmUgcmVwb3J0cyBvcHRpb25hbCBmYWlsdXJlIGRldGFpbHMgaW4gYWRkaXRpb25cbiAqIHRvIHRoZSBzdGFuZGFyZCBmYWlsdXJlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXRhaWxlZEZhaWx1cmU8VCwgVEQ+IGV4dGVuZHMgRmFpbHVyZTxUPiB7XG4gICAgcHJvdGVjdGVkIF9kZXRhaWw6IFREO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgZGV0YWlsOiBURCkge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5fZGV0YWlsID0gZGV0YWlsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGV0YWlsKCk6IFREIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RldGFpbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGYWlsdXJlKCk6IHRoaXMgaXMgRGV0YWlsZWRGYWlsdXJlPFQsIFREPiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblN1Y2Nlc3M8VE4+KF9jYjogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBEZXRhaWxlZFJlc3VsdDxUTiwgVEQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBEZXRhaWxlZEZhaWx1cmU8VE4sIFREPih0aGlzLm1lc3NhZ2UsIHRoaXMuX2RldGFpbCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRmFpbHVyZShjYjogRGV0YWlsZWRGYWlsdXJlQ29udGludWF0aW9uPFQsIFREPik6IERldGFpbGVkUmVzdWx0PFQsIFREPiB7XG4gICAgICAgIHJldHVybiBjYih0aGlzLm1lc3NhZ2UsIHRoaXMuX2RldGFpbCk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBEZXRhaWxlZFJlc3VsdDxULCBURD4gPSBTdWNjZXNzPFQ+fERldGFpbGVkRmFpbHVyZTxULCBURD47XG5cbmV4cG9ydCBmdW5jdGlvbiBmYWlsV2l0aERldGFpbDxULCBURD4obWVzc2FnZTogc3RyaW5nLCBkZXRhaWw6IFREKTogRGV0YWlsZWRGYWlsdXJlPFQsIFREPiB7XG4gICAgcmV0dXJuIG5ldyBEZXRhaWxlZEZhaWx1cmU8VCwgVEQ+KG1lc3NhZ2UsIGRldGFpbCk7XG59XG5cbi8qKlxuICogV3JhcHMgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGEgdmFsdWUgb2YgdHlwZSA8VD4gb3IgdGhyb3dzXG4gKiB0byBwcm9kdWNlIFN1Y2Nlc3M8VD4gb3IgRmFpbHVyZTxUPlxuICogQHBhcmFtIGZ1bmMgVGhlIG1ldGhvZCB0byBiZSBjYXB0dXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FwdHVyZVJlc3VsdDxUPihmdW5jOiAoKSA9PiBUKTogUmVzdWx0PFQ+IHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc3VjY2VlZChmdW5jKCkpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiBmYWlsKChlcnIgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBNYXBzIGFuIGFycmF5IG9mIFJlc3VsdDxUPiB0byBhbiBhcnJheSBvZiA8VD4sIGlmIGFsbCByZXN1bHRzIGFyZVxuICogc3VjY2Vzc2Z1bC4gIElmIGFueSByZXN1bHRzIGZhaWwsIHJldHVybnMgZmFpbHVyZSB3aXRoIGEgY29uY2F0ZW5hdGVkXG4gKiBzdW1tYXJ5IG9mIGFsbCBmYWlsdXJlIG1lc3NhZ2VzLlxuICogQHBhcmFtIHJlc3VsdHNJbiBUaGUgcmVzdWx0cyB0byBiZSBtYXBwZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBSZXN1bHRzPFQ+KHJlc3VsdHNJbjogSXRlcmFibGU8UmVzdWx0PFQ+Pik6IFJlc3VsdDxUW10+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZWxlbWVudHM6IFRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0c0luKSB7XG4gICAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChlbGVtZW50cyk7XG59XG5cbi8qKlxuICogTWFwcyBhbiBhcnJheSBvZiBSZXN1bHQ8VD4gdG8gYW4gYXJyYXkgb2YgPFQ+LCBvbWl0dGluZyBhbnkgZXJyb3JcbiAqIHJlc3VsdHMuICBJZiBubyByZXN1bHRzIHdlcmUgc3VjY2Vzc2Z1bCwgcmV0dXJucyBmYWlsdXJlIHdpdGggYVxuICogY29uY2F0ZW5hdGVkIHN1bW1hcnkgb2YgYWxsIGZhaWx1cmUgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBTdWNjZXNzPFQ+KHJlc3VsdHNJbjogSXRlcmFibGU8UmVzdWx0PFQ+Pik6IFJlc3VsdDxUW10+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZWxlbWVudHM6IFRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0c0luKSB7XG4gICAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICgoZWxlbWVudHMubGVuZ3RoID09PSAwKSAmJiAoZXJyb3JzLmxlbmd0aCA+IDApKSB7XG4gICAgICAgIHJldHVybiBmYWlsKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZWVkKGVsZW1lbnRzKTtcbn1cblxuLyoqXG4gKiBNYXBzIGFuIGFycmF5IG9mIFJlc3VsdDxUPiB0byBhbiBhcnJheSBvZiBzdHJpbmdzIGNvbnNpc3Rpbmcgb2YgYWxsXG4gKiBlcnJvciBtZXNzYWdlcyByZXR1cm5lZCBieSByZXN1bHRzIGluIHRoZSBzb3VyY2UgYXJyYXkuIElnbm9yZXNcbiAqIHN1Y2Nlc3MgcmVzdWx0cyBhbmQgcmV0dXJucyBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSB3ZXJlIG5vIGVycm9ycy5cbiAqIEBwYXJhbSByZXN1bHRzSW4gcmVzdWx0cyB0byBiZSByZXBvcnRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwRmFpbHVyZXM8VD4ocmVzdWx0c0luOiBJdGVyYWJsZTxSZXN1bHQ8VD4+KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzSW4pIHtcbiAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgZXJyb3JzLnB1c2gocmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogUmV0dXJucyBzdWNjZXNzIHdpdGggdHJ1ZSBpZiBhbGwgcmVzdWx0cyBhcmUgc3VjY2Vzc2Z1bC4gIElmIGFueSBhcmUgdW5zdWNjZXNzZnVsLFxuICogcmV0dXJucyBmYWlsdXJlIHdpdGggYSBjb25jYXRlbmF0ZWQgc3VtbWFyeSBvZiBhbGwgZmFpbHVyZSBtZXNzYWdlcy5cbiAqIEBwYXJhbSByZXN1bHRzIFRoZSByZXN1bHRzIHRvIGJlIHRlc3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbFN1Y2NlZWQ8VD4ocmVzdWx0czogSXRlcmFibGU8UmVzdWx0PHVua25vd24+Piwgc3VjY2Vzc1ZhbHVlOiBUKTogUmVzdWx0PFQ+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICAgIGlmIChyZXN1bHRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChzdWNjZXNzVmFsdWUpO1xufVxuXG5leHBvcnQgdHlwZSBGaWVsZEluaXRpYWxpemVyczxUPiA9IHsgWyBrZXkgaW4ga2V5b2YgVCBdOiAoc3RhdGU6IFBhcnRpYWw8VD4pID0+IFJlc3VsdDxUW2tleV0+IH07XG5cbi8qKlxuICogUG9wdWxhdGVzIGFuIGFuIG9iamVjdCBiYXNlZCBvbiBhIHByb3RvdHlwZSBmdWxsIG9mIGZpZWxkIGluaXRpYWxpemVycyB0aGF0IHJldHVybiBSZXN1bHQ8VFtrZXldPi5cbiAqIFJldHVybnMgc3VjY2VzcyB3aXRoIHRoZSBwb3B1bGF0ZWQgb2JqZWN0IGlmIGFsbCBpbml0aWFsaXplcnMgc3VjY2VlZCwgb3IgZmFpbHVyZSB3aXRoIGFcbiAqIGNvbmNhdGVuYXRlZCBsaXN0IG9mIGFsbCBmYWlsdXJlIG1lc3NhZ2VzLlxuICogQHBhcmFtIGluaXRpYWxpemVycyBBbiBvYmplY3Qgd2l0aCB0aGUgc2hhcGUgb2YgdGhlIHRhcmdldCBidXQgd2l0aCBpbml0aWFsaXplciBmdW5jdGlvbnMgZm9yXG4gKiBlYWNoIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVPYmplY3Q8VD4oaW5pdGlhbGl6ZXJzOiBGaWVsZEluaXRpYWxpemVyczxUPiwgb3JkZXI/OiAoa2V5b2YgVClbXSk6IFJlc3VsdDxUPiB7XG4gICAgY29uc3Qgc3RhdGUgPSB7fSBhcyB7IFtrZXkgaW4ga2V5b2YgVF06IFRba2V5XSB9O1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBrZXlzOiAoa2V5b2YgVClbXSA9IEFycmF5LmZyb20ob3JkZXIgPz8gW10pO1xuICAgIGNvbnN0IGZvdW5kS2V5cyA9IG5ldyBTZXQ8a2V5b2YgVD4ob3JkZXIpO1xuXG4gICAgLy8gc3RhcnQgd2l0aCB0aGUgc3VwcGxpZWQgb3JkZXIgdGhlbiBhcHBlbmQgYW55dGhpbmcgZWxzZSB3ZSBmaW5kXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdGlhbGl6ZXJzKSB7XG4gICAgICAgIGlmICghZm91bmRLZXlzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgIGZvdW5kS2V5cy5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGluaXRpYWxpemVyc1trZXldKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBpbml0aWFsaXplcnNba2V5XShzdGF0ZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgc3RhdGVba2V5XSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGBwb3B1bGF0ZU9iamVjdDogS2V5ICR7a2V5fSBpcyBwcmVzZW50IGJ1dCBoYXMgbm8gaW5pdGlhbGl6ZXJgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChzdGF0ZSBhcyBUKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFtQkgsTUFBYSxPQUFPO0lBR2hCLFlBQVksS0FBUTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU0sZUFBZSxDQUFDLE9BQXVCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBUTs7UUFDN0IsYUFBTyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVNLFNBQVMsQ0FBSyxFQUE4QjtRQUMvQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLFNBQVMsQ0FBSyxDQUF5QjtRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFsQ0QsMEJBa0NDO0FBRUQsTUFBYSxPQUFPO0lBR2hCLFlBQVksT0FBZTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRU0sZUFBZSxDQUFDLE1BQXNCO1FBQ3pDLElBQUksTUFBTSxLQUFLLFNB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QU0sU0FBUyxHQUFHLElBQUksR0FBRyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRTFDLGtFQUFrRTtJQUNsRSxLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRTtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QjtLQUNKO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDcEIsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNwQixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUM3QjtpQkFDSTtnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMvQjtTQUNKO2FBQ0k7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLG9DQUFvQyxDQUFDLENBQUM7U0FDL0U7S0FDSjtJQUVELElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ2xDO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBVSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQWpDRCx3Q0FpQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuZXhwb3J0IHR5cGUgUmVzdWx0PFQ+ID0gU3VjY2VzczxUPiB8IEZhaWx1cmU8VD47XG5leHBvcnQgdHlwZSBTdWNjZXNzQ29udGludWF0aW9uPFQsIFROPiA9ICh2YWx1ZTogVCkgPT4gUmVzdWx0PFROPjtcbmV4cG9ydCB0eXBlIEZhaWx1cmVDb250aW51YXRpb248VD4gPSAobWVzc2FnZTogc3RyaW5nKSA9PiBSZXN1bHQ8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlc3VsdExvZ2dlciB7XG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVzdWx0PFQ+IHtcbiAgICBpc1N1Y2Nlc3MoKTogdGhpcyBpcyBTdWNjZXNzPFQ+O1xuICAgIGlzRmFpbHVyZSgpOiB0aGlzIGlzIEZhaWx1cmU8VD47XG4gICAgZ2V0VmFsdWVPclRocm93KGxvZ2dlcj86IElSZXN1bHRMb2dnZXIpOiBUO1xuICAgIGdldFZhbHVlT3JEZWZhdWx0KGRmbHQ/OiBUKTogVHx1bmRlZmluZWQ7XG4gICAgb25TdWNjZXNzPFROPihjYjogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBSZXN1bHQ8VE4+O1xuICAgIG9uRmFpbHVyZShjYjogRmFpbHVyZUNvbnRpbnVhdGlvbjxUPik6IFJlc3VsdDxUPjtcbn1cblxuZXhwb3J0IGNsYXNzIFN1Y2Nlc3M8VD4gaW1wbGVtZW50cyBJUmVzdWx0PFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZTogVDtcblxuICAgIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzU3VjY2VzcygpOiB0aGlzIGlzIFN1Y2Nlc3M8VD4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGYWlsdXJlKCk6IHRoaXMgaXMgRmFpbHVyZTxUPiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlT3JUaHJvdyhfbG9nZ2VyPzogSVJlc3VsdExvZ2dlcik6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlT3JEZWZhdWx0KGRmbHQ/OiBUKTogVHx1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUgPz8gZGZsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TdWNjZXNzPFROPihjYjogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBSZXN1bHQ8VE4+IHtcbiAgICAgICAgcmV0dXJuIGNiKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZhaWx1cmU8VE4+KF86IEZhaWx1cmVDb250aW51YXRpb248VD4pOiBSZXN1bHQ8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGYWlsdXJlPFQ+IGltcGxlbWVudHMgSVJlc3VsdDxUPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1N1Y2Nlc3MoKTogdGhpcyBpcyBTdWNjZXNzPFQ+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZhaWx1cmUoKTogdGhpcyBpcyBGYWlsdXJlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZU9yVGhyb3cobG9nZ2VyPzogSVJlc3VsdExvZ2dlcik6IG5ldmVyIHtcbiAgICAgICAgaWYgKGxvZ2dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IodGhpcy5fbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuX21lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZU9yRGVmYXVsdChkZmx0PzogVCk6IFR8dW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGRmbHQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU3VjY2VzczxUTj4oXzogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBSZXN1bHQ8VE4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKHRoaXMubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRmFpbHVyZShjYjogRmFpbHVyZUNvbnRpbnVhdGlvbjxUPik6IFJlc3VsdDxUPiB7XG4gICAgICAgIHJldHVybiBjYih0aGlzLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHN1Y2Nlc3NmdWwgcmV0dXJuXG4gKiBAcGFyYW0gdmFsIFRoZSB2YWx1ZSB0byBiZSByZXR1cm5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VjY2VlZDxUPih2YWw6IFQpOiBTdWNjZXNzPFQ+IHtcbiAgICByZXR1cm4gbmV3IFN1Y2Nlc3M8VD4odmFsKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGVycm9yIHJldHVyblxuICogQHBhcmFtIG1lc3NhZ2UgRXJyb3IgbWVzc2FnZSB0byBiZSByZXR1cm5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFpbDxUPihtZXNzYWdlOiBzdHJpbmcpOiBGYWlsdXJlPFQ+IHtcbiAgICByZXR1cm4gbmV3IEZhaWx1cmU8VD4obWVzc2FnZSk7XG59XG5cbmV4cG9ydCB0eXBlIERldGFpbGVkU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBURCwgVE4+ID0gKHZhbHVlOiBUKSA9PiBEZXRhaWxlZFJlc3VsdDxUTiwgVEQ+O1xuZXhwb3J0IHR5cGUgRGV0YWlsZWRGYWlsdXJlQ29udGludWF0aW9uPFQsIFREPiA9IChtZXNzYWdlOiBzdHJpbmcsIGRldGFpbDogVEQpID0+IERldGFpbGVkUmVzdWx0PFQsIFREPjtcblxuZXhwb3J0IGNsYXNzIERldGFpbGVkU3VjY2VzczxULCBURD4gZXh0ZW5kcyBTdWNjZXNzPFQ+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICAgICAgc3VwZXIodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1N1Y2Nlc3MoKTogdGhpcyBpcyBEZXRhaWxlZFN1Y2Nlc3M8VCwgVEQ+IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU3VjY2VzczxUTj4oY2I6IERldGFpbGVkU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBURCwgVE4+KTogRGV0YWlsZWRSZXN1bHQ8VE4sIFREPiB7XG4gICAgICAgIHJldHVybiBjYih0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GYWlsdXJlKF9jYjogRGV0YWlsZWRGYWlsdXJlQ29udGludWF0aW9uPFQsIFREPik6IERldGFpbGVkUmVzdWx0PFQsIFREPiB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBIERldGFpbGVkRmFpbHVyZSByZXBvcnRzIG9wdGlvbmFsIGZhaWx1cmUgZGV0YWlscyBpbiBhZGRpdGlvblxuICogdG8gdGhlIHN0YW5kYXJkIGZhaWx1cmUgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERldGFpbGVkRmFpbHVyZTxULCBURD4gZXh0ZW5kcyBGYWlsdXJlPFQ+IHtcbiAgICBwcm90ZWN0ZWQgX2RldGFpbDogVEQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBkZXRhaWw6IFREKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLl9kZXRhaWwgPSBkZXRhaWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZXRhaWwoKTogVEQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGV0YWlsO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZhaWx1cmUoKTogdGhpcyBpcyBEZXRhaWxlZEZhaWx1cmU8VCwgVEQ+IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU3VjY2VzczxUTj4oX2NiOiBTdWNjZXNzQ29udGludWF0aW9uPFQsIFROPik6IERldGFpbGVkUmVzdWx0PFROLCBURD4ge1xuICAgICAgICByZXR1cm4gbmV3IERldGFpbGVkRmFpbHVyZTxUTiwgVEQ+KHRoaXMubWVzc2FnZSwgdGhpcy5fZGV0YWlsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GYWlsdXJlKGNiOiBEZXRhaWxlZEZhaWx1cmVDb250aW51YXRpb248VCwgVEQ+KTogRGV0YWlsZWRSZXN1bHQ8VCwgVEQ+IHtcbiAgICAgICAgcmV0dXJuIGNiKHRoaXMubWVzc2FnZSwgdGhpcy5fZGV0YWlsKTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIERldGFpbGVkUmVzdWx0PFQsIFREPiA9IERldGFpbGVkU3VjY2VzczxULCBURD58RGV0YWlsZWRGYWlsdXJlPFQsIFREPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN1Y2NlZWRXaXRoRGV0YWlsPFQsIFREPih2YWx1ZTogVCk6IERldGFpbGVkU3VjY2VzczxULCBURD4ge1xuICAgIHJldHVybiBuZXcgRGV0YWlsZWRTdWNjZXNzPFQsIFREPih2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmYWlsV2l0aERldGFpbDxULCBURD4obWVzc2FnZTogc3RyaW5nLCBkZXRhaWw6IFREKTogRGV0YWlsZWRGYWlsdXJlPFQsIFREPiB7XG4gICAgcmV0dXJuIG5ldyBEZXRhaWxlZEZhaWx1cmU8VCwgVEQ+KG1lc3NhZ2UsIGRldGFpbCk7XG59XG5cbi8qKlxuICogV3JhcHMgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGEgdmFsdWUgb2YgdHlwZSA8VD4gb3IgdGhyb3dzXG4gKiB0byBwcm9kdWNlIFN1Y2Nlc3M8VD4gb3IgRmFpbHVyZTxUPlxuICogQHBhcmFtIGZ1bmMgVGhlIG1ldGhvZCB0byBiZSBjYXB0dXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FwdHVyZVJlc3VsdDxUPihmdW5jOiAoKSA9PiBUKTogUmVzdWx0PFQ+IHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc3VjY2VlZChmdW5jKCkpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiBmYWlsKChlcnIgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBNYXBzIGFuIGFycmF5IG9mIFJlc3VsdDxUPiB0byBhbiBhcnJheSBvZiA8VD4sIGlmIGFsbCByZXN1bHRzIGFyZVxuICogc3VjY2Vzc2Z1bC4gIElmIGFueSByZXN1bHRzIGZhaWwsIHJldHVybnMgZmFpbHVyZSB3aXRoIGEgY29uY2F0ZW5hdGVkXG4gKiBzdW1tYXJ5IG9mIGFsbCBmYWlsdXJlIG1lc3NhZ2VzLlxuICogQHBhcmFtIHJlc3VsdHNJbiBUaGUgcmVzdWx0cyB0byBiZSBtYXBwZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBSZXN1bHRzPFQ+KHJlc3VsdHNJbjogSXRlcmFibGU8UmVzdWx0PFQ+Pik6IFJlc3VsdDxUW10+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZWxlbWVudHM6IFRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0c0luKSB7XG4gICAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChlbGVtZW50cyk7XG59XG5cbi8qKlxuICogTWFwcyBhbiBhcnJheSBvZiBSZXN1bHQ8VD4gdG8gYW4gYXJyYXkgb2YgPFQ+LCBvbWl0dGluZyBhbnkgZXJyb3JcbiAqIHJlc3VsdHMuICBJZiBubyByZXN1bHRzIHdlcmUgc3VjY2Vzc2Z1bCwgcmV0dXJucyBmYWlsdXJlIHdpdGggYVxuICogY29uY2F0ZW5hdGVkIHN1bW1hcnkgb2YgYWxsIGZhaWx1cmUgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBTdWNjZXNzPFQ+KHJlc3VsdHNJbjogSXRlcmFibGU8UmVzdWx0PFQ+Pik6IFJlc3VsdDxUW10+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZWxlbWVudHM6IFRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0c0luKSB7XG4gICAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICgoZWxlbWVudHMubGVuZ3RoID09PSAwKSAmJiAoZXJyb3JzLmxlbmd0aCA+IDApKSB7XG4gICAgICAgIHJldHVybiBmYWlsKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZWVkKGVsZW1lbnRzKTtcbn1cblxuLyoqXG4gKiBNYXBzIGFuIGFycmF5IG9mIFJlc3VsdDxUPiB0byBhbiBhcnJheSBvZiBzdHJpbmdzIGNvbnNpc3Rpbmcgb2YgYWxsXG4gKiBlcnJvciBtZXNzYWdlcyByZXR1cm5lZCBieSByZXN1bHRzIGluIHRoZSBzb3VyY2UgYXJyYXkuIElnbm9yZXNcbiAqIHN1Y2Nlc3MgcmVzdWx0cyBhbmQgcmV0dXJucyBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSB3ZXJlIG5vIGVycm9ycy5cbiAqIEBwYXJhbSByZXN1bHRzSW4gcmVzdWx0cyB0byBiZSByZXBvcnRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwRmFpbHVyZXM8VD4ocmVzdWx0c0luOiBJdGVyYWJsZTxSZXN1bHQ8VD4+KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzSW4pIHtcbiAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgZXJyb3JzLnB1c2gocmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogUmV0dXJucyBzdWNjZXNzIHdpdGggdHJ1ZSBpZiBhbGwgcmVzdWx0cyBhcmUgc3VjY2Vzc2Z1bC4gIElmIGFueSBhcmUgdW5zdWNjZXNzZnVsLFxuICogcmV0dXJucyBmYWlsdXJlIHdpdGggYSBjb25jYXRlbmF0ZWQgc3VtbWFyeSBvZiBhbGwgZmFpbHVyZSBtZXNzYWdlcy5cbiAqIEBwYXJhbSByZXN1bHRzIFRoZSByZXN1bHRzIHRvIGJlIHRlc3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbFN1Y2NlZWQ8VD4ocmVzdWx0czogSXRlcmFibGU8UmVzdWx0PHVua25vd24+Piwgc3VjY2Vzc1ZhbHVlOiBUKTogUmVzdWx0PFQ+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICAgIGlmIChyZXN1bHRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChzdWNjZXNzVmFsdWUpO1xufVxuXG5leHBvcnQgdHlwZSBGaWVsZEluaXRpYWxpemVyczxUPiA9IHsgWyBrZXkgaW4ga2V5b2YgVCBdOiAoc3RhdGU6IFBhcnRpYWw8VD4pID0+IFJlc3VsdDxUW2tleV0+IH07XG5cbi8qKlxuICogUG9wdWxhdGVzIGFuIGFuIG9iamVjdCBiYXNlZCBvbiBhIHByb3RvdHlwZSBmdWxsIG9mIGZpZWxkIGluaXRpYWxpemVycyB0aGF0IHJldHVybiBSZXN1bHQ8VFtrZXldPi5cbiAqIFJldHVybnMgc3VjY2VzcyB3aXRoIHRoZSBwb3B1bGF0ZWQgb2JqZWN0IGlmIGFsbCBpbml0aWFsaXplcnMgc3VjY2VlZCwgb3IgZmFpbHVyZSB3aXRoIGFcbiAqIGNvbmNhdGVuYXRlZCBsaXN0IG9mIGFsbCBmYWlsdXJlIG1lc3NhZ2VzLlxuICogQHBhcmFtIGluaXRpYWxpemVycyBBbiBvYmplY3Qgd2l0aCB0aGUgc2hhcGUgb2YgdGhlIHRhcmdldCBidXQgd2l0aCBpbml0aWFsaXplciBmdW5jdGlvbnMgZm9yXG4gKiBlYWNoIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVPYmplY3Q8VD4oaW5pdGlhbGl6ZXJzOiBGaWVsZEluaXRpYWxpemVyczxUPiwgb3JkZXI/OiAoa2V5b2YgVClbXSk6IFJlc3VsdDxUPiB7XG4gICAgY29uc3Qgc3RhdGUgPSB7fSBhcyB7IFtrZXkgaW4ga2V5b2YgVF06IFRba2V5XSB9O1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBrZXlzOiAoa2V5b2YgVClbXSA9IEFycmF5LmZyb20ob3JkZXIgPz8gW10pO1xuICAgIGNvbnN0IGZvdW5kS2V5cyA9IG5ldyBTZXQ8a2V5b2YgVD4ob3JkZXIpO1xuXG4gICAgLy8gc3RhcnQgd2l0aCB0aGUgc3VwcGxpZWQgb3JkZXIgdGhlbiBhcHBlbmQgYW55dGhpbmcgZWxzZSB3ZSBmaW5kXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdGlhbGl6ZXJzKSB7XG4gICAgICAgIGlmICghZm91bmRLZXlzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgIGZvdW5kS2V5cy5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGluaXRpYWxpemVyc1trZXldKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBpbml0aWFsaXplcnNba2V5XShzdGF0ZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgc3RhdGVba2V5XSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGBwb3B1bGF0ZU9iamVjdDogS2V5ICR7a2V5fSBpcyBwcmVzZW50IGJ1dCBoYXMgbm8gaW5pdGlhbGl6ZXJgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChzdGF0ZSBhcyBUKTtcbn1cbiJdfQ==
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc