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 1.9.5 to 1.9.6

36

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

@@ -37,24 +37,24 @@ "main": "index.js",

"devDependencies": {
"@jest/expect-utils": "^29.5.0",
"@microsoft/api-documenter": "^7.21.7",
"@microsoft/api-extractor": "^7.34.4",
"@types/jest": "^29.5.0",
"@types/luxon": "^3.3.0",
"@jest/expect-utils": "^29.6.2",
"@microsoft/api-documenter": "^7.22.32",
"@microsoft/api-extractor": "^7.36.3",
"@types/jest": "^29.5.3",
"@types/luxon": "^3.3.1",
"@types/mustache": "^4.2.2",
"@types/node": "^18.15.11",
"@types/node": "^20.4.5",
"@types/papaparse": "^5.3.7",
"@typescript-eslint/eslint-plugin": "^5.57.1",
"@typescript-eslint/parser": "^5.57.1",
"eslint": "^8.38.0",
"eslint-config-standard": "^17.0.0",
"eslint-plugin-import": "^2.27.5",
"@typescript-eslint/eslint-plugin": "^6.2.1",
"@typescript-eslint/parser": "^6.2.1",
"eslint": "^8.46.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.28.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.1.1",
"jest": "^29.5.0",
"jest-extended": "^3.2.4",
"jest-matcher-utils": "^29.5.0",
"rimraf": "^4.4.1",
"ts-jest": "^29.1.0",
"jest": "^29.6.2",
"jest-extended": "^4.0.0",
"jest-matcher-utils": "^29.6.2",
"rimraf": "^5.0.1",
"ts-jest": "^29.1.1",
"ts-node": "^10.9.1",
"typescript": "^4.9.5"
"typescript": "^5.1.6"
},

@@ -61,0 +61,0 @@ "dependencies": {

@@ -87,4 +87,4 @@ import { Result } from './result';

/**
* Applies a factory method to convert a `Map<TK, TS>` into a `Record<TK, TD>`.
* @param src - The `Map` object to be converted.
* Applies a factory method to convert a `ReadonlyMap<TK, TS>` into a `Record<TK, TD>`.
* @param src - The `ReadonlyMap` object to be converted.
* @param factory - The factory method used to convert elements.

@@ -95,5 +95,5 @@ * @returns {@link Success} with the resulting `Record<TK, TD>` if conversion succeeds, or

*/
export declare function mapToRecord<TS, TD, TK extends string = string>(src: Map<TK, TS>, factory: KeyedThingFactory<TS, TD, TK>): Result<Record<TK, TD>>;
export declare function mapToRecord<TS, TD, TK extends string = string>(src: ReadonlyMap<TK, TS>, factory: KeyedThingFactory<TS, TD, TK>): Result<Record<TK, TD>>;
/**
* Applies a factory method to convert an optional `Map<string, TS>` into a `Record<string, TD>` or `undefined`.
* Applies a factory method to convert an optional `ReadonlyMap<string, TS>` into a `Record<string, TD>` or `undefined`.
* @param src - The `Map` object to be converted, or `undefined`.

@@ -105,5 +105,5 @@ * @param factory - The factory method used to convert elements.

*/
export declare function optionalMapToRecord<TS, TD, TK extends string = string>(src: Map<TK, TS> | undefined, factory: KeyedThingFactory<TS, TD, TK>): Result<Record<TK, TD> | undefined>;
export declare function optionalMapToRecord<TS, TD, TK extends string = string>(src: ReadonlyMap<TK, TS> | undefined, factory: KeyedThingFactory<TS, TD, TK>): Result<Record<TK, TD> | undefined>;
/**
* Applies a factory method to convert an optional `Map<string, TS>` into a `Record<string, TD>`
* Applies a factory method to convert an optional `ReadonlyMap<string, TS>` into a `Record<string, TD>`
* @param src - The `Map` object to be converted, or `undefined`.

@@ -115,4 +115,4 @@ * @param factory - The factory method used to convert elements.

*/
export declare function optionalMapToPossiblyEmptyRecord<TS, TD, TK extends string = string>(src: Map<TK, TS> | undefined, factory: KeyedThingFactory<TS, TD, TK>): Result<Record<TK, TD>>;
export declare function optionalMapToPossiblyEmptyRecord<TS, TD, TK extends string = string>(src: ReadonlyMap<TK, TS> | undefined, factory: KeyedThingFactory<TS, TD, TK>): Result<Record<TK, TD>>;
export {};
//# sourceMappingURL=utils.d.ts.map

@@ -153,4 +153,4 @@ "use strict";

/**
* Applies a factory method to convert a `Map<TK, TS>` into a `Record<TK, TD>`.
* @param src - The `Map` object to be converted.
* Applies a factory method to convert a `ReadonlyMap<TK, TS>` into a `Record<TK, TD>`.
* @param src - The `ReadonlyMap` object to be converted.
* @param factory - The factory method used to convert elements.

@@ -178,3 +178,3 @@ * @returns {@link Success} with the resulting `Record<TK, TD>` if conversion succeeds, or

/**
* Applies a factory method to convert an optional `Map<string, TS>` into a `Record<string, TD>` or `undefined`.
* Applies a factory method to convert an optional `ReadonlyMap<string, TS>` into a `Record<string, TD>` or `undefined`.
* @param src - The `Map` object to be converted, or `undefined`.

@@ -191,3 +191,3 @@ * @param factory - The factory method used to convert elements.

/**
* Applies a factory method to convert an optional `Map<string, TS>` into a `Record<string, TD>`
* Applies a factory method to convert an optional `ReadonlyMap<string, TS>` into a `Record<string, TD>`
* @param src - The `Map` object to be converted, or `undefined`.

@@ -203,2 +203,2 @@ * @param factory - The factory method used to convert elements.

exports.optionalMapToPossiblyEmptyRecord = optionalMapToPossiblyEmptyRecord;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgscUNBQWlEO0FBRWpEOzs7Ozs7O0dBT0c7QUFDSCx3REFBd0Q7QUFDeEQsU0FBZ0IsT0FBTyxDQUFtQixHQUF5QixFQUFFLElBQU87SUFDeEUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFGRCwwQkFFQztBQUdEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixJQUFJLENBQXNDLElBQU8sRUFBRSxPQUFZO0lBQzNFLE1BQU0sSUFBSSxHQUF3QixFQUFFLENBQUM7SUFDckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7UUFDdkIsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtLQUNKO0lBQ0QsT0FBTyxJQUFrQixDQUFDO0FBQzlCLENBQUM7QUFSRCxvQkFRQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFzQyxJQUFPLEVBQUUsT0FBWTtJQUMzRSxNQUFNLElBQUksR0FBd0IsRUFBRSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFpQixDQUFDLENBQUMsRUFBRTtRQUM3RixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBZ0MsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM1RDtJQUVELE9BQU8sSUFBa0IsQ0FBQztBQUM5QixDQUFDO0FBUEQs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LElBQUEsZ0JBQU8sRUFBQyxNQUFNLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBZEQsa0NBY0M7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQXFDLEdBQTBCLEVBQUUsT0FBc0M7SUFDdEksT0FBTyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxnQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFGRCxrREFFQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixnQ0FBZ0MsQ0FBcUMsR0FBMEIsRUFBRSxPQUFzQztJQUNuSixPQUFPLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGdCQUFPLEVBQUMsRUFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzNGLENBQUM7QUFGRCw0RUFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcclxuICpcclxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxyXG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXHJcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcclxuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxyXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcclxuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcclxuICpcclxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXHJcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXHJcbiAqXHJcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcclxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXHJcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxyXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXHJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXHJcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXHJcbiAqIFNPRlRXQVJFLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFJlc3VsdCwgZmFpbCwgc3VjY2VlZCB9IGZyb20gJy4vcmVzdWx0JztcclxuXHJcbi8qKlxyXG4gKiBIZWxwZXIgdHlwZS1ndWFyZCBmdW5jdGlvbiB0byByZXBvcnQgd2hldGhlciBhIHNwZWNpZmllZCBrZXkgaXMgcHJlc2VudCBpblxyXG4gKiBhIHN1cHBsaWVkIG9iamVjdC5cclxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gYmUgdGVzdGVkLlxyXG4gKiBAcGFyYW0gaXRlbSAtIFRoZSBvYmplY3QgdG8gYmUgdGVzdGVkLlxyXG4gKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiB0aGUga2V5IGlzIHByZXNlbnQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xyXG5leHBvcnQgZnVuY3Rpb24gaXNLZXlPZjxUIGV4dGVuZHMgb2JqZWN0PihrZXk6IHN0cmluZ3xudW1iZXJ8c3ltYm9sLCBpdGVtOiBUKToga2V5IGlzIGtleW9mIFQge1xyXG4gICAgcmV0dXJuIGl0ZW0uaGFzT3duUHJvcGVydHkoa2V5KTtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTaW1wbGUgaW1wbGljaXQgcGljayBmdW5jdGlvbiwgd2hpY2ggcGlja3MgYSBzZXQgb2YgcHJvcGVydGllcyBmcm9tIGEgc3VwcGxpZWRcclxuICogb2JqZWN0LiAgSWdub3JlcyBwaWNrZWQgcHJvcGVydGllcyB0aGF0IGRvIG5vdCBleGlzdCByZWdhcmRsZXNzIG9mIHR5cGUgc2lnbmF0dXJlLlxyXG4gKiBAcGFyYW0gZnJvbSAtIFRoZSBvYmplY3QgZnJvbSB3aGljaCBrZXlzIGFyZSB0byBiZSBwaWNrZWQuXHJcbiAqIEBwYXJhbSBpbmNsdWRlIC0gVGhlIGtleXMgb2YgdGhlIHByb3BlcnRpZXMgdG8gYmUgcGlja2VkIGZyb20gYGZyb21gLlxyXG4gKiBAcmV0dXJucyBBIG5ldyBvYmplY3QgY29udGFpbmluZyB0aGUgcmVxdWVzdGVkIHByb3BlcnRpZXMgZnJvbSBgZnJvbWAsIHdoZXJlIHByZXNlbnQuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwaWNrPFQgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyBrZXlvZiBUPihmcm9tOiBULCBpbmNsdWRlOiBLW10pOiBQaWNrPFQsIEs+IHtcclxuICAgIGNvbnN0IHJ0cm46IFBhcnRpYWw8UGljazxULCBLPj4gPSB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIGluY2x1ZGUpIHtcclxuICAgICAgICBpZiAoa2V5IGluIGZyb20pIHtcclxuICAgICAgICAgICAgcnRybltrZXldID0gZnJvbVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBydHJuIGFzIFBpY2s8VCwgSz47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTaW1wbGUgaW1wbGljaXQgb21pdCBmdW5jdGlvbiwgd2hpY2ggcGlja3MgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIGZyb20gYSBzdXBwbGllZFxyXG4gKiBvYmplY3QgZXhjZXB0IHRob3NlIHNwZWNpZmllZCBmb3IgZXhjbHVzaW9uLlxyXG4gKiBAcGFyYW0gZnJvbSAtIFRoZSBvYmplY3QgZnJvbSB3aGljaCBrZXlzIGFyZSB0byBiZSBwaWNrZWQuXHJcbiAqIEBwYXJhbSBleGNsdWRlIC0gVGhlIGtleXMgb2YgdGhlIHByb3BlcnRpZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUgcmV0dXJuZWQgb2JqZWN0LlxyXG4gKiBAcmV0dXJucyBBIG5ldyBvYmplY3QgY29udGFpbmluZyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgZnJvbSBgZnJvbWAgdGhhdCB3ZXJlIG5vdFxyXG4gKiBleHBsaWNpdGx5IGV4Y2x1ZGVkLlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gb21pdDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4oZnJvbTogVCwgZXhjbHVkZTogS1tdKTogT21pdDxULCBLPiB7XHJcbiAgICBjb25zdCBydHJuOiBQYXJ0aWFsPE9taXQ8VCwgSz4+ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIE9iamVjdC5lbnRyaWVzKGZyb20pLmZpbHRlcigoZSkgPT4gIWV4Y2x1ZGUuaW5jbHVkZXMoZVswXSBhcyBrZXlvZiBUIGFzIEspKSkge1xyXG4gICAgICAgIHJ0cm5bZW50cnlbMF0gYXMgdW5rbm93biBhcyBrZXlvZiBPbWl0PFQsIEs+XSA9IGVudHJ5WzFdO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBydHJuIGFzIE9taXQ8VCwgSz47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IHNwZWNpZmllZCBieSBrZXkgZnJvbSBhbiBhcmJpdHJhcnkgb2JqZWN0LFxyXG4gKiBvciBhIGRlZmF1bHQgdmFsdWUgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LlxyXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBzcGVjaWZ5aW5nIHRoZSBwcm9wZXJ0eSB0byBiZSByZXRyaWV2ZWQuXHJcbiAqIEBwYXJhbSBpdGVtIC0gVGhlIG9iamVjdCBmcm9tIHdoaWNoIHRoZSBwcm9wZXJ0eSBpcyB0byBiZSByZXRyaWV2ZWQuXHJcbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgLSBBbiBvcHRpb25hbCBkZWZhdWx0IHZhbHVlIHRvIGJlIHJldHVybmVkIGlmIHRoZSBwcm9wZXJ0eVxyXG4gKiBpcyBub3QgcHJlc2VudCAoZGVmYXVsdCBgdW5kZWZpbmVkYCkuXHJcbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgcmVxdWVzdGVkIHByb3BlcnR5LCBvciB0aGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGVcclxuICogcmVxdWVzdGVkIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWVPZlByb3BlcnR5T3JEZWZhdWx0PFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAga2V5OiBzdHJpbmd8bnVtYmVyfHN5bWJvbCxcclxuICAgIGl0ZW06IFQsXHJcbiAgICBkZWZhdWx0VmFsdWU/OiB1bmtub3duXHJcbik6IHVua25vd24gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIGlzS2V5T2Yoa2V5LCBpdGVtKSA/IGl0ZW1ba2V5XSA6IGRlZmF1bHRWYWx1ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIHR5cGUgb2YgYSBwcm9wZXJ0eSBzcGVjaWZpZWQgYnkga2V5IGZyb20gYW4gYXJiaXRyYXJ5IG9iamVjdC5cclxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgc3BlY2lmeWluZyB0aGUgcHJvcGVydHkgdG8gYmUgdGVzdGVkLlxyXG4gKiBAcGFyYW0gaXRlbSAtIFRoZSBvYmplY3QgZnJvbSB3aGljaCB0aGUgcHJvcGVydHkgaXMgdG8gYmUgdGVzdGVkLlxyXG4gKiBAcmV0dXJucyBUaGUgdHlwZSBvZiB0aGUgcmVxdWVzdGVkIHByb3BlcnR5LCBvciBgdW5kZWZpbmVkYCBpZiB0aGVcclxuICogcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuXHJcbiAqIEBleGFtcGxlXHJcbiAqIFJldHVybnMgYCd1bmRlZmluZWQnYCAoYSBzdHJpbmcpIGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMgYnV0IGhhcyB0aGUgdmFsdWVcclxuICogdW5kZWZpbmVkIGJ1dCBgdW5kZWZpbmVkYCAodGhlIGxpdGVyYWwpIGlmIHRoZSBwcm9wZXJ0eSBkb2VzIG5vdCBleGlzdC5cclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVPZlByb3BlcnR5PFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAga2V5OiBzdHJpbmd8bnVtYmVyfHN5bWJvbCxcclxuICAgIGl0ZW06IFQpOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2JpZ2ludCcgfCAnYm9vbGVhbicgfCAnc3ltYm9sJyB8ICd1bmRlZmluZWQnIHwgJ3VuZGVmaW5lZCcgfCAnb2JqZWN0JyB8ICdmdW5jdGlvbicgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIGlzS2V5T2Yoa2V5LCBpdGVtKSA/IHR5cGVvZiBpdGVtW2tleV0gOiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUeXBlIGZvciBmYWN0b3J5IG1ldGhvZHMgd2hpY2ggY29udmVydCBhIGtleS12YWx1ZSBwYWlyIHRvIGEgbmV3IHVuaXF1ZSB2YWx1ZS5cclxuICogQHB1YmxpY1xyXG4gKi9cclxudHlwZSBLZXllZFRoaW5nRmFjdG9yeTxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9IChrZXk6IFRLLCB0aGluZzogVFMpID0+IFJlc3VsdDxURD47XHJcblxyXG4vKipcclxuICogQXBwbGllcyBhIGZhY3RvcnkgbWV0aG9kIHRvIGNvbnZlcnQgYSBgUmVjb3JkPFRLLCBUUz5gIGludG8gYSBgTWFwPFRLLCBURD5gLlxyXG4gKiBAcGFyYW0gc3JjIC0gVGhlIGBSZWNvcmRgIHRvIGJlIGNvbnZlcnRlZC5cclxuICogQHBhcmFtIGZhY3RvcnkgLSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzLlxyXG4gKiBAcmV0dXJucyB7QGxpbmsgU3VjY2Vzc30gd2l0aCB0aGUgcmVzdWx0aW5nIG1hcCBvbiBzdWNjZXNzLCBvciB7QGxpbmsgRmFpbHVyZX0gd2l0aCBhXHJcbiAqIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzLlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVjb3JkVG9NYXA8VFMsIFRELCBUSyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oc3JjOiBSZWNvcmQ8VEssIFRTPiwgZmFjdG9yeTogS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSz4pOiBSZXN1bHQ8TWFwPFRLLCBURD4+IHtcclxuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8VEssIFREPigpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gc3JjKSB7XHJcbiAgICAgICAgaWYgKHNyY1trZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbVJlc3VsdCA9IGZhY3Rvcnkoa2V5LCBzcmNba2V5XSk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtUmVzdWx0LmlzU3VjY2VzcygpKSB7XHJcbiAgICAgICAgICAgICAgICBtYXAuc2V0KGtleSwgaXRlbVJlc3VsdC52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiAke2l0ZW1SZXN1bHQubWVzc2FnZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdWNjZWVkKG1hcCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhbiBvcHRpb25hbCBgUmVjb3JkPFRLLCBUUz5gIGludG8gYSBgTWFwPFRLLCBURD5gLCBvciBgdW5kZWZpbmVkYC5cclxuICogQHBhcmFtIHNyYyAtIFRoZSBgUmVjb3JkYCB0byBiZSBjb252ZXJ0ZWQsIG9yIHVuZGVmaW5lZC5cclxuICogQHBhcmFtIGZhY3RvcnkgLSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzLlxyXG4gKiBAcmV0dXJucyB7QGxpbmsgU3VjY2Vzc30gd2l0aCB0aGUgcmVzdWx0aW5nIG1hcCBpZiBjb252ZXJzaW9uIHN1Y2NlZWRzLCBvciB7QGxpbmsgU3VjY2Vzc30gd2l0aCBgdW5kZWZpbmVkYFxyXG4gKiBpZiBgc3JjYCBpcyBgdW5kZWZpbmVkYC4gUmV0dXJucyB7QGxpbmsgRmFpbHVyZX0gd2l0aCBhIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzLlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWxSZWNvcmRUb01hcDxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihzcmM6IFJlY29yZDxUSywgVFM+fHVuZGVmaW5lZCwgZmFjdG9yeTogS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSz4pOiBSZXN1bHQ8TWFwPFRLLCBURD58dW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gKHNyYyA9PT0gdW5kZWZpbmVkKSA/IHN1Y2NlZWQodW5kZWZpbmVkKSA6IHJlY29yZFRvTWFwKHNyYywgZmFjdG9yeSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhbiBvcHRpb25hbCBgUmVjb3JkPFRLLCBUUz5gIGludG8gYSBgTWFwPFRLLCBURD5gXHJcbiAqIEBwYXJhbSBzcmMgLSBUaGUgYFJlY29yZGAgdG8gYmUgY29udmVydGVkLCBvciBgdW5kZWZpbmVkYC5cclxuICogQHBhcmFtIGZhY3RvcnkgLSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzLlxyXG4gKiBAcmV0dXJucyB7QGxpbmsgU3VjY2Vzc30gd2l0aCB0aGUgcmVzdWx0aW5nIG1hcCAoZW1wdHkgaWYgYHNyY2AgaXMgYHVuZGVmaW5lZGApIGlmIGNvbnZlcnNpb24gc3VjY2VlZHMuXHJcbiAqIFJldHVybnMge0BsaW5rIEZhaWx1cmV9IHdpdGggYSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsUmVjb3JkVG9Qb3NzaWJseUVtcHR5TWFwPFRTLCBURCwgVEsgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KHNyYzogUmVjb3JkPFRLLCBUUz58dW5kZWZpbmVkLCBmYWN0b3J5OiBLZXllZFRoaW5nRmFjdG9yeTxUUywgVEQsIFRLPik6IFJlc3VsdDxNYXA8VEssIFREPj4ge1xyXG4gICAgcmV0dXJuIChzcmMgPT09IHVuZGVmaW5lZCkgPyBzdWNjZWVkKG5ldyBNYXA8VEssIFREPigpKSA6IHJlY29yZFRvTWFwKHNyYywgZmFjdG9yeSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhIGBNYXA8VEssIFRTPmAgaW50byBhIGBSZWNvcmQ8VEssIFREPmAuXHJcbiAqIEBwYXJhbSBzcmMgLSBUaGUgYE1hcGAgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZC5cclxuICogQHBhcmFtIGZhY3RvcnkgLSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzLlxyXG4gKiBAcmV0dXJucyB7QGxpbmsgU3VjY2Vzc30gd2l0aCB0aGUgcmVzdWx0aW5nIGBSZWNvcmQ8VEssIFREPmAgaWYgY29udmVyc2lvbiBzdWNjZWVkcywgb3JcclxuICoge0BsaW5rIEZhaWx1cmV9IHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1JlY29yZDxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihzcmM6IE1hcDxUSywgVFM+LCBmYWN0b3J5OiBLZXllZFRoaW5nRmFjdG9yeTxUUywgVEQsIFRLPik6IFJlc3VsdDxSZWNvcmQ8VEssIFREPj4ge1xyXG4gICAgY29uc3QgcmVjb3JkOiBSZWNvcmQ8VEssIFREPiA9IHt9IGFzIFJlY29yZDxUSywgVEQ+O1xyXG4gICAgZm9yIChjb25zdCBrdnAgb2Ygc3JjKSB7XHJcbiAgICAgICAgaWYgKGt2cFsxXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1SZXN1bHQgPSBmYWN0b3J5KGt2cFswXSwga3ZwWzFdKTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1SZXN1bHQuaXNTdWNjZXNzKCkpIHtcclxuICAgICAgICAgICAgICAgIHJlY29yZFtrdnBbMF1dID0gaXRlbVJlc3VsdC52YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke2t2cFswXX06ICR7aXRlbVJlc3VsdC5tZXNzYWdlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1Y2NlZWQocmVjb3JkKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFwcGxpZXMgYSBmYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGFuIG9wdGlvbmFsIGBNYXA8c3RyaW5nLCBUUz5gIGludG8gYSBgUmVjb3JkPHN0cmluZywgVEQ+YCBvciBgdW5kZWZpbmVkYC5cclxuICogQHBhcmFtIHNyYyAtIFRoZSBgTWFwYCBvYmplY3QgdG8gYmUgY29udmVydGVkLCBvciBgdW5kZWZpbmVkYC5cclxuICogQHBhcmFtIGZhY3RvcnkgLSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzLlxyXG4gKiBAcmV0dXJucyB7QGxpbmsgU3VjY2Vzc30gd2l0aCB0aGUgcmVzdWx0aW5nIHJlY29yZCBpZiBjb252ZXJzaW9uIHN1Y2NlZWRzLCBvciB7QGxpbmsgU3VjY2Vzc30gd2l0aCBgdW5kZWZpbmVkYCBpZlxyXG4gKiBgc3JjYCBpcyBgdW5kZWZpbmVkYC4gUmV0dXJucyB7QGxpbmsgRmFpbHVyZX0gd2l0aCBhIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzLlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWxNYXBUb1JlY29yZDxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihzcmM6IE1hcDxUSywgVFM+fHVuZGVmaW5lZCwgZmFjdG9yeTogS2V5ZWRUaGluZ0ZhY3Rvcnk8VFMsIFRELCBUSz4pOiBSZXN1bHQ8UmVjb3JkPFRLLCBURD58dW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gKHNyYyA9PT0gdW5kZWZpbmVkKSA/IHN1Y2NlZWQodW5kZWZpbmVkKSA6IG1hcFRvUmVjb3JkKHNyYywgZmFjdG9yeSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhbiBvcHRpb25hbCBgTWFwPHN0cmluZywgVFM+YCBpbnRvIGEgYFJlY29yZDxzdHJpbmcsIFREPmBcclxuICogQHBhcmFtIHNyYyAtIFRoZSBgTWFwYCBvYmplY3QgdG8gYmUgY29udmVydGVkLCBvciBgdW5kZWZpbmVkYC5cclxuICogQHBhcmFtIGZhY3RvcnkgLSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzLlxyXG4gKiBAcmV0dXJucyB7QGxpbmsgU3VjY2Vzc30gd2l0aCB0aGUgcmVzdWx0aW5nIHJlY29yZCAoZW1wdHkgaWYgYHNyY2AgaXMgYHVuZGVmaW5lZGApIGlmIGNvbnZlcnNpb24gc3VjY2VlZHMuXHJcbiAqIFJldHVybnMge0BsaW5rIEZhaWx1cmV9IHdpdGggYSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsTWFwVG9Qb3NzaWJseUVtcHR5UmVjb3JkPFRTLCBURCwgVEsgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KHNyYzogTWFwPFRLLCBUUz58dW5kZWZpbmVkLCBmYWN0b3J5OiBLZXllZFRoaW5nRmFjdG9yeTxUUywgVEQsIFRLPik6IFJlc3VsdDxSZWNvcmQ8VEssIFREPj4ge1xyXG4gICAgcmV0dXJuIChzcmMgPT09IHVuZGVmaW5lZCkgPyBzdWNjZWVkKHt9IGFzIFJlY29yZDxUSywgVEQ+KSA6IG1hcFRvUmVjb3JkKHNyYywgZmFjdG9yeSk7XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgscUNBQWlEO0FBRWpEOzs7Ozs7O0dBT0c7QUFDSCx3REFBd0Q7QUFDeEQsU0FBZ0IsT0FBTyxDQUFtQixHQUE2QixFQUFFLElBQU87SUFDNUUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFGRCwwQkFFQztBQUdEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixJQUFJLENBQXNDLElBQU8sRUFBRSxPQUFZO0lBQzNFLE1BQU0sSUFBSSxHQUF3QixFQUFFLENBQUM7SUFDckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7UUFDdkIsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtLQUNKO0lBQ0QsT0FBTyxJQUFrQixDQUFDO0FBQzlCLENBQUM7QUFSRCxvQkFRQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFzQyxJQUFPLEVBQUUsT0FBWTtJQUMzRSxNQUFNLElBQUksR0FBd0IsRUFBRSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFpQixDQUFDLENBQUMsRUFBRTtRQUM3RixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBZ0MsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM1RDtJQUVELE9BQU8sSUFBa0IsQ0FBQztBQUM5QixDQUFDO0FBUEQs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LElBQUEsZ0JBQU8sRUFBQyxNQUFNLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBZEQsa0NBY0M7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQy9CLEdBQW9DLEVBQ3BDLE9BQXNDO0lBRXRDLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsZ0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBTEQsa0RBS0M7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsZ0NBQWdDLENBQzVDLEdBQW9DLEVBQ3BDLE9BQXNDO0lBRXRDLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsZ0JBQU8sRUFBQyxFQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDM0YsQ0FBQztBQUxELDRFQUtDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxyXG4gKlxyXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XHJcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcclxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xyXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXHJcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xyXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxyXG4gKlxyXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcclxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cclxuICpcclxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxyXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcclxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXHJcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcclxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcclxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcclxuICogU09GVFdBUkUuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgUmVzdWx0LCBmYWlsLCBzdWNjZWVkIH0gZnJvbSAnLi9yZXN1bHQnO1xyXG5cclxuLyoqXHJcbiAqIEhlbHBlciB0eXBlLWd1YXJkIGZ1bmN0aW9uIHRvIHJlcG9ydCB3aGV0aGVyIGEgc3BlY2lmaWVkIGtleSBpcyBwcmVzZW50IGluXHJcbiAqIGEgc3VwcGxpZWQgb2JqZWN0LlxyXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byBiZSB0ZXN0ZWQuXHJcbiAqIEBwYXJhbSBpdGVtIC0gVGhlIG9iamVjdCB0byBiZSB0ZXN0ZWQuXHJcbiAqIEByZXR1cm5zIFJldHVybnMgYHRydWVgIGlmIHRoZSBrZXkgaXMgcHJlc2VudCwgYGZhbHNlYCBvdGhlcndpc2UuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0tleU9mPFQgZXh0ZW5kcyBvYmplY3Q+KGtleTogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLCBpdGVtOiBUKToga2V5IGlzIGtleW9mIFQge1xyXG4gICAgcmV0dXJuIGl0ZW0uaGFzT3duUHJvcGVydHkoa2V5KTtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTaW1wbGUgaW1wbGljaXQgcGljayBmdW5jdGlvbiwgd2hpY2ggcGlja3MgYSBzZXQgb2YgcHJvcGVydGllcyBmcm9tIGEgc3VwcGxpZWRcclxuICogb2JqZWN0LiAgSWdub3JlcyBwaWNrZWQgcHJvcGVydGllcyB0aGF0IGRvIG5vdCBleGlzdCByZWdhcmRsZXNzIG9mIHR5cGUgc2lnbmF0dXJlLlxyXG4gKiBAcGFyYW0gZnJvbSAtIFRoZSBvYmplY3QgZnJvbSB3aGljaCBrZXlzIGFyZSB0byBiZSBwaWNrZWQuXHJcbiAqIEBwYXJhbSBpbmNsdWRlIC0gVGhlIGtleXMgb2YgdGhlIHByb3BlcnRpZXMgdG8gYmUgcGlja2VkIGZyb20gYGZyb21gLlxyXG4gKiBAcmV0dXJucyBBIG5ldyBvYmplY3QgY29udGFpbmluZyB0aGUgcmVxdWVzdGVkIHByb3BlcnRpZXMgZnJvbSBgZnJvbWAsIHdoZXJlIHByZXNlbnQuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwaWNrPFQgZXh0ZW5kcyBvYmplY3QsIEsgZXh0ZW5kcyBrZXlvZiBUPihmcm9tOiBULCBpbmNsdWRlOiBLW10pOiBQaWNrPFQsIEs+IHtcclxuICAgIGNvbnN0IHJ0cm46IFBhcnRpYWw8UGljazxULCBLPj4gPSB7fTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIGluY2x1ZGUpIHtcclxuICAgICAgICBpZiAoa2V5IGluIGZyb20pIHtcclxuICAgICAgICAgICAgcnRybltrZXldID0gZnJvbVtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBydHJuIGFzIFBpY2s8VCwgSz47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTaW1wbGUgaW1wbGljaXQgb21pdCBmdW5jdGlvbiwgd2hpY2ggcGlja3MgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIGZyb20gYSBzdXBwbGllZFxyXG4gKiBvYmplY3QgZXhjZXB0IHRob3NlIHNwZWNpZmllZCBmb3IgZXhjbHVzaW9uLlxyXG4gKiBAcGFyYW0gZnJvbSAtIFRoZSBvYmplY3QgZnJvbSB3aGljaCBrZXlzIGFyZSB0byBiZSBwaWNrZWQuXHJcbiAqIEBwYXJhbSBleGNsdWRlIC0gVGhlIGtleXMgb2YgdGhlIHByb3BlcnRpZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUgcmV0dXJuZWQgb2JqZWN0LlxyXG4gKiBAcmV0dXJucyBBIG5ldyBvYmplY3QgY29udGFpbmluZyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgZnJvbSBgZnJvbWAgdGhhdCB3ZXJlIG5vdFxyXG4gKiBleHBsaWNpdGx5IGV4Y2x1ZGVkLlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gb21pdDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4oZnJvbTogVCwgZXhjbHVkZTogS1tdKTogT21pdDxULCBLPiB7XHJcbiAgICBjb25zdCBydHJuOiBQYXJ0aWFsPE9taXQ8VCwgSz4+ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIE9iamVjdC5lbnRyaWVzKGZyb20pLmZpbHRlcigoZSkgPT4gIWV4Y2x1ZGUuaW5jbHVkZXMoZVswXSBhcyBrZXlvZiBUIGFzIEspKSkge1xyXG4gICAgICAgIHJ0cm5bZW50cnlbMF0gYXMgdW5rbm93biBhcyBrZXlvZiBPbWl0PFQsIEs+XSA9IGVudHJ5WzFdO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBydHJuIGFzIE9taXQ8VCwgSz47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IHNwZWNpZmllZCBieSBrZXkgZnJvbSBhbiBhcmJpdHJhcnkgb2JqZWN0LFxyXG4gKiBvciBhIGRlZmF1bHQgdmFsdWUgaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LlxyXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBzcGVjaWZ5aW5nIHRoZSBwcm9wZXJ0eSB0byBiZSByZXRyaWV2ZWQuXHJcbiAqIEBwYXJhbSBpdGVtIC0gVGhlIG9iamVjdCBmcm9tIHdoaWNoIHRoZSBwcm9wZXJ0eSBpcyB0byBiZSByZXRyaWV2ZWQuXHJcbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgLSBBbiBvcHRpb25hbCBkZWZhdWx0IHZhbHVlIHRvIGJlIHJldHVybmVkIGlmIHRoZSBwcm9wZXJ0eVxyXG4gKiBpcyBub3QgcHJlc2VudCAoZGVmYXVsdCBgdW5kZWZpbmVkYCkuXHJcbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgcmVxdWVzdGVkIHByb3BlcnR5LCBvciB0aGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGVcclxuICogcmVxdWVzdGVkIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWVPZlByb3BlcnR5T3JEZWZhdWx0PFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAga2V5OiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsXHJcbiAgICBpdGVtOiBULFxyXG4gICAgZGVmYXVsdFZhbHVlPzogdW5rbm93blxyXG4pOiB1bmtub3duIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBpc0tleU9mKGtleSwgaXRlbSkgPyBpdGVtW2tleV0gOiBkZWZhdWx0VmFsdWU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIHRoZSB0eXBlIG9mIGEgcHJvcGVydHkgc3BlY2lmaWVkIGJ5IGtleSBmcm9tIGFuIGFyYml0cmFyeSBvYmplY3QuXHJcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHNwZWNpZnlpbmcgdGhlIHByb3BlcnR5IHRvIGJlIHRlc3RlZC5cclxuICogQHBhcmFtIGl0ZW0gLSBUaGUgb2JqZWN0IGZyb20gd2hpY2ggdGhlIHByb3BlcnR5IGlzIHRvIGJlIHRlc3RlZC5cclxuICogQHJldHVybnMgVGhlIHR5cGUgb2YgdGhlIHJlcXVlc3RlZCBwcm9wZXJ0eSwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlXHJcbiAqIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBSZXR1cm5zIGAndW5kZWZpbmVkJ2AgKGEgc3RyaW5nKSBpZiB0aGUgcHJvcGVydHkgZXhpc3RzIGJ1dCBoYXMgdGhlIHZhbHVlXHJcbiAqIHVuZGVmaW5lZCBidXQgYHVuZGVmaW5lZGAgKHRoZSBsaXRlcmFsKSBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlT2ZQcm9wZXJ0eTxUIGV4dGVuZHMgb2JqZWN0PihcclxuICAgIGtleTogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sLFxyXG4gICAgaXRlbTogVCk6ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnYmlnaW50JyB8ICdib29sZWFuJyB8ICdzeW1ib2wnIHwgJ3VuZGVmaW5lZCcgfCAndW5kZWZpbmVkJyB8ICdvYmplY3QnIHwgJ2Z1bmN0aW9uJyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gaXNLZXlPZihrZXksIGl0ZW0pID8gdHlwZW9mIGl0ZW1ba2V5XSA6IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFR5cGUgZm9yIGZhY3RvcnkgbWV0aG9kcyB3aGljaCBjb252ZXJ0IGEga2V5LXZhbHVlIHBhaXIgdG8gYSBuZXcgdW5pcXVlIHZhbHVlLlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG50eXBlIEtleWVkVGhpbmdGYWN0b3J5PFRTLCBURCwgVEsgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+ID0gKGtleTogVEssIHRoaW5nOiBUUykgPT4gUmVzdWx0PFREPjtcclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhIGBSZWNvcmQ8VEssIFRTPmAgaW50byBhIGBNYXA8VEssIFREPmAuXHJcbiAqIEBwYXJhbSBzcmMgLSBUaGUgYFJlY29yZGAgdG8gYmUgY29udmVydGVkLlxyXG4gKiBAcGFyYW0gZmFjdG9yeSAtIFRoZSBmYWN0b3J5IG1ldGhvZCB1c2VkIHRvIGNvbnZlcnQgZWxlbWVudHMuXHJcbiAqIEByZXR1cm5zIHtAbGluayBTdWNjZXNzfSB3aXRoIHRoZSByZXN1bHRpbmcgbWFwIG9uIHN1Y2Nlc3MsIG9yIHtAbGluayBGYWlsdXJlfSB3aXRoIGFcclxuICogbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZWNvcmRUb01hcDxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihzcmM6IFJlY29yZDxUSywgVFM+LCBmYWN0b3J5OiBLZXllZFRoaW5nRmFjdG9yeTxUUywgVEQsIFRLPik6IFJlc3VsdDxNYXA8VEssIFREPj4ge1xyXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxUSywgVEQ+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzcmMpIHtcclxuICAgICAgICBpZiAoc3JjW2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtUmVzdWx0ID0gZmFjdG9yeShrZXksIHNyY1trZXldKTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1SZXN1bHQuaXNTdWNjZXNzKCkpIHtcclxuICAgICAgICAgICAgICAgIG1hcC5zZXQoa2V5LCBpdGVtUmVzdWx0LnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke2tleX06ICR7aXRlbVJlc3VsdC5tZXNzYWdlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1Y2NlZWQobWFwKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFwcGxpZXMgYSBmYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGFuIG9wdGlvbmFsIGBSZWNvcmQ8VEssIFRTPmAgaW50byBhIGBNYXA8VEssIFREPmAsIG9yIGB1bmRlZmluZWRgLlxyXG4gKiBAcGFyYW0gc3JjIC0gVGhlIGBSZWNvcmRgIHRvIGJlIGNvbnZlcnRlZCwgb3IgdW5kZWZpbmVkLlxyXG4gKiBAcGFyYW0gZmFjdG9yeSAtIFRoZSBmYWN0b3J5IG1ldGhvZCB1c2VkIHRvIGNvbnZlcnQgZWxlbWVudHMuXHJcbiAqIEByZXR1cm5zIHtAbGluayBTdWNjZXNzfSB3aXRoIHRoZSByZXN1bHRpbmcgbWFwIGlmIGNvbnZlcnNpb24gc3VjY2VlZHMsIG9yIHtAbGluayBTdWNjZXNzfSB3aXRoIGB1bmRlZmluZWRgXHJcbiAqIGlmIGBzcmNgIGlzIGB1bmRlZmluZWRgLiBSZXR1cm5zIHtAbGluayBGYWlsdXJlfSB3aXRoIGEgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbFJlY29yZFRvTWFwPFRTLCBURCwgVEsgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KHNyYzogUmVjb3JkPFRLLCBUUz4gfCB1bmRlZmluZWQsIGZhY3Rvcnk6IEtleWVkVGhpbmdGYWN0b3J5PFRTLCBURCwgVEs+KTogUmVzdWx0PE1hcDxUSywgVEQ+IHwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gKHNyYyA9PT0gdW5kZWZpbmVkKSA/IHN1Y2NlZWQodW5kZWZpbmVkKSA6IHJlY29yZFRvTWFwKHNyYywgZmFjdG9yeSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIGEgZmFjdG9yeSBtZXRob2QgdG8gY29udmVydCBhbiBvcHRpb25hbCBgUmVjb3JkPFRLLCBUUz5gIGludG8gYSBgTWFwPFRLLCBURD5gXHJcbiAqIEBwYXJhbSBzcmMgLSBUaGUgYFJlY29yZGAgdG8gYmUgY29udmVydGVkLCBvciBgdW5kZWZpbmVkYC5cclxuICogQHBhcmFtIGZhY3RvcnkgLSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzLlxyXG4gKiBAcmV0dXJucyB7QGxpbmsgU3VjY2Vzc30gd2l0aCB0aGUgcmVzdWx0aW5nIG1hcCAoZW1wdHkgaWYgYHNyY2AgaXMgYHVuZGVmaW5lZGApIGlmIGNvbnZlcnNpb24gc3VjY2VlZHMuXHJcbiAqIFJldHVybnMge0BsaW5rIEZhaWx1cmV9IHdpdGggYSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsUmVjb3JkVG9Qb3NzaWJseUVtcHR5TWFwPFRTLCBURCwgVEsgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KHNyYzogUmVjb3JkPFRLLCBUUz4gfCB1bmRlZmluZWQsIGZhY3Rvcnk6IEtleWVkVGhpbmdGYWN0b3J5PFRTLCBURCwgVEs+KTogUmVzdWx0PE1hcDxUSywgVEQ+PiB7XHJcbiAgICByZXR1cm4gKHNyYyA9PT0gdW5kZWZpbmVkKSA/IHN1Y2NlZWQobmV3IE1hcDxUSywgVEQ+KCkpIDogcmVjb3JkVG9NYXAoc3JjLCBmYWN0b3J5KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFwcGxpZXMgYSBmYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGEgYFJlYWRvbmx5TWFwPFRLLCBUUz5gIGludG8gYSBgUmVjb3JkPFRLLCBURD5gLlxyXG4gKiBAcGFyYW0gc3JjIC0gVGhlIGBSZWFkb25seU1hcGAgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZC5cclxuICogQHBhcmFtIGZhY3RvcnkgLSBUaGUgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjb252ZXJ0IGVsZW1lbnRzLlxyXG4gKiBAcmV0dXJucyB7QGxpbmsgU3VjY2Vzc30gd2l0aCB0aGUgcmVzdWx0aW5nIGBSZWNvcmQ8VEssIFREPmAgaWYgY29udmVyc2lvbiBzdWNjZWVkcywgb3JcclxuICoge0BsaW5rIEZhaWx1cmV9IHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1JlY29yZDxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihzcmM6IFJlYWRvbmx5TWFwPFRLLCBUUz4sIGZhY3Rvcnk6IEtleWVkVGhpbmdGYWN0b3J5PFRTLCBURCwgVEs+KTogUmVzdWx0PFJlY29yZDxUSywgVEQ+PiB7XHJcbiAgICBjb25zdCByZWNvcmQ6IFJlY29yZDxUSywgVEQ+ID0ge30gYXMgUmVjb3JkPFRLLCBURD47XHJcbiAgICBmb3IgKGNvbnN0IGt2cCBvZiBzcmMpIHtcclxuICAgICAgICBpZiAoa3ZwWzFdICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbVJlc3VsdCA9IGZhY3Rvcnkoa3ZwWzBdLCBrdnBbMV0pO1xyXG4gICAgICAgICAgICBpZiAoaXRlbVJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xyXG4gICAgICAgICAgICAgICAgcmVjb3JkW2t2cFswXV0gPSBpdGVtUmVzdWx0LnZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7a3ZwWzBdfTogJHtpdGVtUmVzdWx0Lm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VjY2VlZChyZWNvcmQpO1xyXG59XHJcblxyXG4vKipcclxuICogQXBwbGllcyBhIGZhY3RvcnkgbWV0aG9kIHRvIGNvbnZlcnQgYW4gb3B0aW9uYWwgYFJlYWRvbmx5TWFwPHN0cmluZywgVFM+YCBpbnRvIGEgYFJlY29yZDxzdHJpbmcsIFREPmAgb3IgYHVuZGVmaW5lZGAuXHJcbiAqIEBwYXJhbSBzcmMgLSBUaGUgYE1hcGAgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZCwgb3IgYHVuZGVmaW5lZGAuXHJcbiAqIEBwYXJhbSBmYWN0b3J5IC0gVGhlIGZhY3RvcnkgbWV0aG9kIHVzZWQgdG8gY29udmVydCBlbGVtZW50cy5cclxuICogQHJldHVybnMge0BsaW5rIFN1Y2Nlc3N9IHdpdGggdGhlIHJlc3VsdGluZyByZWNvcmQgaWYgY29udmVyc2lvbiBzdWNjZWVkcywgb3Ige0BsaW5rIFN1Y2Nlc3N9IHdpdGggYHVuZGVmaW5lZGAgaWZcclxuICogYHNyY2AgaXMgYHVuZGVmaW5lZGAuIFJldHVybnMge0BsaW5rIEZhaWx1cmV9IHdpdGggYSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsTWFwVG9SZWNvcmQ8VFMsIFRELCBUSyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oXHJcbiAgICBzcmM6IFJlYWRvbmx5TWFwPFRLLCBUUz4gfCB1bmRlZmluZWQsXHJcbiAgICBmYWN0b3J5OiBLZXllZFRoaW5nRmFjdG9yeTxUUywgVEQsIFRLPlxyXG4pOiBSZXN1bHQ8UmVjb3JkPFRLLCBURD4gfCB1bmRlZmluZWQ+IHtcclxuICAgIHJldHVybiAoc3JjID09PSB1bmRlZmluZWQpID8gc3VjY2VlZCh1bmRlZmluZWQpIDogbWFwVG9SZWNvcmQoc3JjLCBmYWN0b3J5KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFwcGxpZXMgYSBmYWN0b3J5IG1ldGhvZCB0byBjb252ZXJ0IGFuIG9wdGlvbmFsIGBSZWFkb25seU1hcDxzdHJpbmcsIFRTPmAgaW50byBhIGBSZWNvcmQ8c3RyaW5nLCBURD5gXHJcbiAqIEBwYXJhbSBzcmMgLSBUaGUgYE1hcGAgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZCwgb3IgYHVuZGVmaW5lZGAuXHJcbiAqIEBwYXJhbSBmYWN0b3J5IC0gVGhlIGZhY3RvcnkgbWV0aG9kIHVzZWQgdG8gY29udmVydCBlbGVtZW50cy5cclxuICogQHJldHVybnMge0BsaW5rIFN1Y2Nlc3N9IHdpdGggdGhlIHJlc3VsdGluZyByZWNvcmQgKGVtcHR5IGlmIGBzcmNgIGlzIGB1bmRlZmluZWRgKSBpZiBjb252ZXJzaW9uIHN1Y2NlZWRzLlxyXG4gKiBSZXR1cm5zIHtAbGluayBGYWlsdXJlfSB3aXRoIGEgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMuXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbE1hcFRvUG9zc2libHlFbXB0eVJlY29yZDxUUywgVEQsIFRLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihcclxuICAgIHNyYzogUmVhZG9ubHlNYXA8VEssIFRTPiB8IHVuZGVmaW5lZCxcclxuICAgIGZhY3Rvcnk6IEtleWVkVGhpbmdGYWN0b3J5PFRTLCBURCwgVEs+XHJcbik6IFJlc3VsdDxSZWNvcmQ8VEssIFREPj4ge1xyXG4gICAgcmV0dXJuIChzcmMgPT09IHVuZGVmaW5lZCkgPyBzdWNjZWVkKHt9IGFzIFJlY29yZDxUSywgVEQ+KSA6IG1hcFRvUmVjb3JkKHNyYywgZmFjdG9yeSk7XHJcbn1cclxuIl19

Sorry, the diff of this file is not supported yet

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