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

potion-client

Package Overview
Dependencies
Maintainers
2
Versions
183
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

potion-client - npm Package Compare versions

Comparing version 1.5.3 to 1.5.4

3

core/potion.js

@@ -81,2 +81,3 @@ "use strict";

utils_1.replaceSelfReferences(json, utils_1.findRoots(json));
utils_1.removeCircularFlag(json);
return json;

@@ -270,2 +271,2 @@ });

exports.PotionBase = PotionBase;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BvdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsd0NBQXdDO0FBQ3hDLHVDQUtvQjtBQUVwQiwyQ0FBd0M7QUFDeEMsaUNBaUJpQjtBQW9FakI7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0g7SUFTQyxvQkFBWSxFQUFtRDtZQUFuRCw0QkFBbUQsRUFBbEQsWUFBUyxFQUFULDhCQUFTLEVBQUUsY0FBVyxFQUFYLGdDQUFXLEVBQUUsZ0JBQUs7UUFSakMsY0FBUyxHQUFvQixFQUFFLENBQUM7UUFLeEIsWUFBTyxHQUFtQix3QkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsOERBQThEO1FBQ3RILGFBQVEsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUc5QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLGdCQUFRLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw2QkFBUSxHQUFSLFVBQVMsR0FBVyxFQUFFLFFBQXFCLEVBQUUsT0FBcUI7UUFDakUseUNBQThCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9DLG9DQUF5QixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV6QyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUEsUUFBUSxJQUFJLE9BQUEsbUJBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQTVCLENBQTRCLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FB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Q0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFVBQVEsR0FBRyx3REFBcUQsQ0FBQyxDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0EsSUFBQSwrQkFBVyxFQUFFLHlCQUFRLENBQVU7WUFDdEMsSUFBTSxNQUFNLEdBQUcsRUFBQyxRQUFRLFVBQUEsRUFBRSxHQUFHLEtBQUEsRUFBQyxDQUFDO1lBQy9CLElBQU0sRUFBRSxHQUFHLHFCQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFOUIsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUMsRUFBRSxJQUFBLEVBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDUCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtvQkFDckIsRUFBRSxFQUFFLG1CQUFXLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQztpQkFDakMsQ0FBQyxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDRixDQUFDO0lBQ0YsaUJBQUM7QUFBRCxDQTFQQSxBQTBQQyxJQUFBO0FBMVBxQixnQ0FBVSIsImZpbGUiOiJwb3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bWF4LWZpbGUtbGluZS1jb3VudCAqL1xuaW1wb3J0IHtcblx0ZGVjb3JhdGVDdG9yV2l0aFBvdGlvbkluc3RhbmNlLFxuXHRkZWNvcmF0ZUN0b3JXaXRoUG90aW9uVVJJLFxuXHRwb3Rpb25Qcm9taXNlLFxuXHRyZWFkb25seVxufSBmcm9tICcuL21ldGFkYXRhJztcbmltcG9ydCB7SXRlbSwgSXRlbU9wdGlvbnN9IGZyb20gJy4vaXRlbSc7XG5pbXBvcnQge1BhZ2luYXRpb259IGZyb20gJy4vcGFnaW5hdGlvbic7XG5pbXBvcnQge1xuXHRhZGRQcmVmaXhUb1VSSSxcblx0ZmluZFBvdGlvblJlc291cmNlLFxuXHRmaW5kUm9vdHMsXG5cdGZyb21TY2hlbWFKU09OLFxuXHRnZXRFcnJvck1lc3NhZ2UsXG5cdGdldFBvdGlvbklELFxuXHRnZXRQb3Rpb25VUkksXG5cdGhhc1R5cGVBbmRJZCxcblx0aXNQb3Rpb25VUkksXG5cdE1lbUNhY2hlLFxuXHRwYXJzZVBvdGlvbklELFxuXHRyZW1vdmVQcmVmaXhGcm9tVVJJLFxuXHRyZXBsYWNlU2VsZlJlZmVyZW5jZXMsXG5cdHRvQ2FtZWxDYXNlLFxuXHR0b1BvdGlvbkpTT04sXG5cdHRvU2VsZlJlZmVyZW5jZVxufSBmcm9tICcuL3V0aWxzJztcblxuXG4vKipcbiAqIEl0ZW0gY2FjaGUuXG4gKiBEaWN0YXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGl0ZW0gY2FjaGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbUNhY2hlPFQgZXh0ZW5kcyBJdGVtPiB7XG5cdGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW47XG5cdGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8VD47XG5cdHB1dChrZXk6IHN0cmluZywgaXRlbTogUHJvbWlzZTxUPik6IFByb21pc2U8VD47XG5cdHJlbW92ZShrZXk6IHN0cmluZyk6IHZvaWQ7XG59XG5cblxuLyoqXG4gKiBDb21tb24gaW50ZXJmYWNlcy5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZFVSSSB7XG5cdHJlc291cmNlOiB0eXBlb2YgSXRlbTtcblx0aWQ6IHN0cmluZyB8IG51bWJlcjtcblx0dXJpOiBzdHJpbmc7XG59XG5cbi8vIFRPRE86IFN0YXJ0IHVzaW5nIGEgbW9yZSBzdGFuZGFyZCBpbXBsLiBvZiB0aGVzZSBpbnRlcmZhY2VzIChlaXRoZXIgY3JlYXRlIHByb3BlciBjbGFzc2VzIGZvciBzb21lIG9yIHVzZSB0aGUgbmF0aXZlIFJlcXVlc3QsIGV0Yy4pXG5leHBvcnQgaW50ZXJmYWNlIFVSTFNlYXJjaFBhcmFtcyB7XG5cdFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyB7XG5cdG1ldGhvZD86IHN0cmluZztcblx0c2VhcmNoPzogVVJMU2VhcmNoUGFyYW1zIHwgUXVlcnlPcHRpb25zIHwgbnVsbDtcblx0ZGF0YT86IGFueTtcblx0Y2FjaGU/OiBib29sZWFuO1xuXHRwYWdpbmF0ZT86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5T3B0aW9ucyB7XG5cdHBhZ2U/OiBudW1iZXI7XG5cdHBlclBhZ2U/OiBudW1iZXI7XG5cdHdoZXJlPzogYW55O1xuXHRzb3J0PzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZldGNoRXh0cmFzIHtcblx0cGFnaW5hdGlvbj86IFBhZ2luYXRpb248YW55Pjtcblx0b3JpZ2luPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCB0eXBlIEZldGNoT3B0aW9ucyA9IEZldGNoRXh0cmFzICYgUmVxdWVzdE9wdGlvbnM7XG5cblxuZXhwb3J0IGludGVyZmFjZSBQb3Rpb25SZXNwb25zZSB7XG5cdGRhdGE6IGFueTtcblx0aGVhZGVyczogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvdGlvbk9wdGlvbnMge1xuXHRob3N0Pzogc3RyaW5nO1xuXHRwcmVmaXg/OiBzdHJpbmc7XG5cdGNhY2hlPzogSXRlbUNhY2hlPEl0ZW0+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvdGlvblJlc291cmNlcyB7XG5cdFtrZXk6IHN0cmluZ106IHR5cGVvZiBJdGVtO1xufVxuXG5cbi8qKlxuICogVGhpcyBjbGFzcyBjb250YWlucyB0aGUgbWFpbiBsb2dpYyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgRmxhc2sgUG90aW9uIGJhY2tlbmQuXG4gKiBOb3RlIHRoYXQgdGhpcyBjbGFzcyBkb2VzIG5vdCBjb250YWluIHRoZSBsb2dpYyBmb3IgbWFraW5nIHRoZSBIVFRQIHJlcXVlc3RzLFxuICogaXQgaXMgdXAgdG8gdGhlIGNoaWxkIGNsYXNzIHRvIGltcGxlbWVudCB0aGUgbG9naWMgZm9yIHRoYXQgdGhyb3VnaCB0aGUgYHJlcXVlc3RgIG1ldGhvZC5cbiAqIEZ1cnRoZXJtb3JlLCB0aGUgY2hpbGQgY2xhc3MgYWxzbyBuZWVkcyB0byBwcm92aWRlIHRoZSBQcm9taXNlIGNsYXNzL2ZuIGFzIHRoaXMgY2xhc3MgaXMgc2V0IHRvIHVzZSB0aGUgbmF0aXZlIFByb21pc2Ugb25seSBhdmFpbGFibGUgZnJvbSBFUzYuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNsYXNzIFBvdGlvbiBleHRlbmRzIFBvdGlvbkJhc2Uge1xuICogICAgIHByb3RlY3RlZCByZXF1ZXN0KHVyaSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAqICAgICAgICAgLy8gSGVyZSB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGUgYWN0dWFsIEhUVFAgcmVxdWVzdFxuICogICAgIH07XG4gKiB9XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb3Rpb25CYXNlIHtcblx0cmVhZG9ubHkgcmVzb3VyY2VzOiBQb3Rpb25SZXNvdXJjZXMgPSB7fTtcblx0cmVhZG9ubHkgY2FjaGU6IEl0ZW1DYWNoZTxJdGVtPjtcblx0aG9zdDogc3RyaW5nO1xuXHRyZWFkb25seSBwcmVmaXg6IHN0cmluZztcblxuXHRwcml2YXRlIHJlYWRvbmx5IFByb21pc2U6IHR5cGVvZiBQcm9taXNlID0gcG90aW9uUHJvbWlzZSh0aGlzKTsgLy8gTk9URTogVGhpcyBpcyBuZWVkZWQgb25seSB0byBwcm92aWRlIHN1cHBvcnQgZm9yIEFuZ3VsYXJKUy5cblx0cHJpdmF0ZSByZXF1ZXN0czogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKTtcblxuXHRjb25zdHJ1Y3Rvcih7aG9zdCA9ICcnLCBwcmVmaXggPSAnJywgY2FjaGV9OiBQb3Rpb25PcHRpb25zID0ge30pIHtcblx0XHR0aGlzLmNhY2hlID0gY2FjaGUgfHwgbmV3IE1lbUNhY2hlKCk7XG5cdFx0dGhpcy5ob3N0ID0gaG9zdDtcblx0XHR0aGlzLnByZWZpeCA9IHByZWZpeDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlciBhIHJlc291cmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gdXJpIC0gUGF0aCBvbiB3aGljaCB0aGUgcmVzb3VyY2UgaXMgcmVnaXN0ZXJlZC5cblx0ICogQHBhcmFtIHtJdGVtfSByZXNvdXJjZVxuXHQgKiBAcGFyYW0ge0l0ZW1PcHRpb25zfSBvcHRpb25zIC0gU2V0IHRoZSBwcm9wZXJ0eSBvcHRpb25zIGZvciBhbnkgaW5zdGFuY2Ugb2YgdGhlIHJlc291cmNlIChzZXR0aW5nIGEgcHJvcGVydHkgdG8gcmVhZG9ubHkgZm9yIGluc3RhbmNlKS5cblx0ICovXG5cdHJlZ2lzdGVyKHVyaTogc3RyaW5nLCByZXNvdXJjZTogdHlwZW9mIEl0ZW0sIG9wdGlvbnM/OiBJdGVtT3B0aW9ucyk6IHR5cGVvZiBJdGVtIHtcblx0XHRkZWNvcmF0ZUN0b3JXaXRoUG90aW9uSW5zdGFuY2UocmVzb3VyY2UsIHRoaXMpO1xuXHRcdGRlY29yYXRlQ3RvcldpdGhQb3Rpb25VUkkocmVzb3VyY2UsIHVyaSk7XG5cblx0XHRpZiAob3B0aW9ucyAmJiBBcnJheS5pc0FycmF5KG9wdGlvbnMucmVhZG9ubHkpKSB7XG5cdFx0XHRvcHRpb25zLnJlYWRvbmx5LmZvckVhY2gocHJvcGVydHkgPT4gcmVhZG9ubHkocmVzb3VyY2UsIHByb3BlcnR5KSk7XG5cdFx0fVxuXHRcdHRoaXMucmVzb3VyY2VzW3VyaV0gPSByZXNvdXJjZTtcblxuXHRcdHJldHVybiByZXNvdXJjZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlciBhIHJlc291cmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gdXJpIC0gUGF0aCBvbiB3aGljaCB0aGUgcmVzb3VyY2UgaXMgcmVnaXN0ZXJlZC5cblx0ICogQHBhcmFtIHtJdGVtT3B0aW9uc30gb3B0aW9ucyAtIFNldCB0aGUgcHJvcGVydHkgb3B0aW9ucyBmb3IgYW55IGluc3RhbmNlIG9mIHRoZSByZXNvdXJjZSAoc2V0dGluZyBhIHByb3BlcnR5IHRvIHJlYWRvbmx5IGZvciBpbnN0YW5jZSkuXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqIEBwb3Rpb24ucmVnaXN0ZXJBcygnL3VzZXInKVxuXHQgKiBjbGFzcyBVc2VyIGV4dGVuZHMgSXRlbSB7fVxuXHQgKi9cblx0cmVnaXN0ZXJBcyh1cmk6IHN0cmluZywgb3B0aW9ucz86IEl0ZW1PcHRpb25zKTogQ2xhc3NEZWNvcmF0b3Ige1xuXHRcdHJldHVybiAodGFyZ2V0OiBhbnkpID0+IHtcblx0XHRcdHRoaXMucmVnaXN0ZXIodXJpLCB0YXJnZXQsIG9wdGlvbnMpO1xuXHRcdFx0cmV0dXJuIHRhcmdldDtcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ha2UgYSBIVFRQIHJlcXVlc3QuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB1cmlcblx0ICogQHBhcmFtIHtSZXF1ZXN0T3B0aW9uc30gb3B0aW9uc1xuXHQgKiBAcmV0dXJucyB7UG90aW9uUmVzcG9uc2V9IEFuIG9iamVjdCB3aXRoIHtkYXRhLCBoZWFkZXJzfSB3aGVyZSB7ZGF0YX0gY2FuIGJlIGFueXRoaW5nIGFuZCB7aGVhZGVyc30gaXMgYW4gb2JqZWN0IHdpdGggdGhlIHJlc3BvbnNlIGhlYWRlcnMgZnJvbSB0aGUgSFRUUCByZXF1ZXN0LlxuXHQgKi9cblx0cHJvdGVjdGVkIGFic3RyYWN0IHJlcXVlc3QodXJpOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UG90aW9uUmVzcG9uc2U+O1xuXG5cdC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWVtYmVyLW9yZGVyaW5nXG5cdGZldGNoKHVyaTogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IFJlcXVlc3RPcHRpb25zLCBleHRyYXM/OiBGZXRjaEV4dHJhcyk6IFByb21pc2U8SXRlbSB8IEl0ZW1bXSB8IFBhZ2luYXRpb248SXRlbT4gfCBhbnk+IHtcblx0XHRjb25zdCBvcmlnaW4gPSByZW1vdmVQcmVmaXhGcm9tVVJJKHVyaSwgdGhpcy5wcmVmaXgpO1xuXHRcdGNvbnN0IG9wdGlvbnMgPSB7Li4ucmVxdWVzdE9wdGlvbnMsIC4uLmV4dHJhcywgb3JpZ2luOiBbXX07XG5cdFx0aWYgKGlzUG90aW9uVVJJKHVyaSwgdGhpcy5yZXNvdXJjZXMpKSB7XG5cdFx0XHRPYmplY3QuYXNzaWduKG9wdGlvbnMsIHtcblx0XHRcdFx0b3JpZ2luOiBbb3JpZ2luXVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnJlc29sdmUodXJpLCBvcHRpb25zKVxuXHRcdFx0LnRoZW4oanNvbiA9PiB7XG5cdFx0XHRcdHJlcGxhY2VTZWxmUmVmZXJlbmNlcyhqc29uLCBmaW5kUm9vdHMoanNvbikpO1xuXHRcdFx0XHRyZXR1cm4ganNvbjtcblx0XHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSByZXNvbHZlKHVyaTogc3RyaW5nLCBvcHRpb25zOiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xuXHRcdGNvbnN0IHtQcm9taXNlLCBwcmVmaXh9ID0gdGhpcztcblxuXHRcdGNvbnN0IGNhY2hlS2V5ID0gcmVtb3ZlUHJlZml4RnJvbVVSSSh1cmksIHByZWZpeCk7XG5cdFx0Ly8gQWRkIHRoZSBBUEkgcHJlZml4IGlmIG5vdCBwcmVzZW50XG5cdFx0dXJpID0gYWRkUHJlZml4VG9VUkkodXJpLCBwcmVmaXgpO1xuXG5cdFx0Ly8gU2VyaWFsaXplIHJlcXVlc3QgdG8gUG90aW9uIEpTT04uXG5cdFx0Y29uc3QgZmV0Y2ggPSAoKSA9PiB0aGlzLnJlcXVlc3QoYCR7dGhpcy5ob3N0fSR7dXJpfWAsIHRoaXMuc2VyaWFsaXplKG9wdGlvbnMpKVxuXHRcdC8vIERlc2VyaWFsaXplIHRoZSBQb3Rpb24gSlNPTi5cblx0XHRcdC50aGVuKHJlc3BvbnNlID0+IHRoaXMuZGVzZXJpYWxpemUocmVzcG9uc2UsIHVyaSwgb3B0aW9ucykpO1xuXG5cdFx0aWYgKG9wdGlvbnMubWV0aG9kID09PSAnR0VUJyAmJiAhb3B0aW9ucy5wYWdpbmF0ZSAmJiAhb3B0aW9ucy5zZWFyY2gpIHtcblx0XHRcdC8vIElmIGEgR0VUIHJlcXVlc3Qgd2FzIG1hZGUgYW5kIHtjYWNoZTogdHJ1ZX0gcmV0dXJuIHRoZSBpdGVtIGZyb20gY2FjaGUgKGlmIGl0IGV4aXN0cykuXG5cdFx0XHQvLyBOT1RFOiBRdWVyaWVzIGFyZSBub3QgY2FjaGVkLlxuXHRcdFx0aWYgIChvcHRpb25zLmNhY2hlICYmIHRoaXMuY2FjaGUuaGFzKGNhY2hlS2V5KSkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jYWNoZS5nZXQoY2FjaGVLZXkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDYWNoZSB0aGUgcmVxdWVzdCBzbyB0aGF0IGZ1cnRoZXIgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIHJlc291cmNlIHdpbGwgbm90IG1ha2UgYW4gYWRpdGlvbmFsIFhIUi5cblx0XHRcdGlmICghdGhpcy5yZXF1ZXN0cy5oYXMoY2FjaGVLZXkpKSB7XG5cdFx0XHRcdHRoaXMucmVxdWVzdHMuc2V0KGNhY2hlS2V5LCBmZXRjaCgpLnRoZW4oZGF0YSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5yZXF1ZXN0cy5kZWxldGUoY2FjaGVLZXkpO1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9LCBlcnIgPT4ge1xuXHRcdFx0XHRcdC8vIElmIHJlcXVlc3QgZmFpbHMsXG5cdFx0XHRcdFx0Ly8gbWFrZSBzdXJlIHRvIHJlbW92ZSB0aGUgcGVuZGluZyByZXF1ZXN0IHNvIGZ1cnRoZXIgcmVxdWVzdHMgY2FuIGJlIG1hZGUsXG5cdFx0XHRcdFx0Ly8gYnV0IGZhaWwgdGhlIHBpcGVsaW5lLlxuXHRcdFx0XHRcdHRoaXMucmVxdWVzdHMuZGVsZXRlKGNhY2hlS2V5KTtcblx0XHRcdFx0XHRjb25zdCBtZXNzYWdlID0gZ2V0RXJyb3JNZXNzYWdlKGVyciwgdXJpKTtcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QobWVzc2FnZSk7XG5cdFx0XHRcdH0pKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRoaXMucmVxdWVzdHMuZ2V0KGNhY2hlS2V5KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZldGNoKCk7XG5cdFx0fVxuXG5cdH1cblxuXHRwcml2YXRlIHNlcmlhbGl6ZShvcHRpb25zOiBGZXRjaE9wdGlvbnMpOiBSZXF1ZXN0T3B0aW9ucyB7XG5cdFx0Y29uc3Qge3ByZWZpeH0gPSB0aGlzO1xuXHRcdGNvbnN0IHtzZWFyY2h9ID0gb3B0aW9ucztcblxuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5vcHRpb25zLFxuXHRcdFx0Li4ue1xuXHRcdFx0XHRzZWFyY2g6IHRvUG90aW9uSlNPTihvcHRpb25zLnBhZ2luYXRlID8ge3BhZ2U6IDEsIHBlclBhZ2U6IDI1LCAuLi5zZWFyY2h9IDogc2VhcmNoLCBwcmVmaXgpLFxuXHRcdFx0XHRkYXRhOiB0b1BvdGlvbkpTT04ob3B0aW9ucy5kYXRhLCBwcmVmaXgpXG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXHRwcml2YXRlIGRlc2VyaWFsaXplKHtkYXRhLCBoZWFkZXJzfTogUG90aW9uUmVzcG9uc2UsIHVyaTogc3RyaW5nLCBvcHRpb25zOiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFBvdGlvblJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuZnJvbVBvdGlvbkpTT04oZGF0YSwgb3B0aW9ucy5vcmlnaW4gYXMgc3RyaW5nW10pXG5cdFx0XHQudGhlbihqc29uID0+IHtcblx0XHRcdFx0Ly8gSWYge3BhZ2luYXRlfSBpcyBlbmFibGVkLCByZXR1cm4gb3IgdXBkYXRlIFBhZ2luYXRpb24uXG5cdFx0XHRcdGlmIChvcHRpb25zLnBhZ2luYXRlKSB7XG5cdFx0XHRcdFx0Y29uc3QgY291bnQgPSBoZWFkZXJzWyd4LXRvdGFsLWNvdW50J10gfHwganNvbi5sZW5ndGg7XG5cdFx0XHRcdFx0aWYgKG9wdGlvbnMucGFnaW5hdGlvbiBpbnN0YW5jZW9mIFBhZ2luYXRpb24pIHtcblx0XHRcdFx0XHRcdHJldHVybiBvcHRpb25zLnBhZ2luYXRpb24udXBkYXRlKGpzb24sIGNvdW50KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgcGFnaW5hdGlvbiA9IG5ldyBQYWdpbmF0aW9uPEl0ZW0+KHt1cmksIHBvdGlvbjogdGhpc30sIGpzb24sIGNvdW50LCBvcHRpb25zKTtcblx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3BhZ2luYXRpb259KTtcblx0XHRcdFx0XHRcdHJldHVybiBwYWdpbmF0aW9uO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4ganNvbjtcblx0XHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBmcm9tUG90aW9uSlNPTihqc29uOiBhbnksIG9yaWdpbjogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuXHRcdGNvbnN0IHtQcm9taXNlfSA9IHRoaXM7XG5cblx0XHRpZiAodHlwZW9mIGpzb24gPT09ICdvYmplY3QnICYmIGpzb24gIT09IG51bGwpIHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGpzb24pKSB7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChqc29uLm1hcChpdGVtID0+IHRoaXMuZnJvbVBvdGlvbkpTT04oaXRlbSwgb3JpZ2luKSkpO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YganNvbi4kdXJpID09PSAnc3RyaW5nJyB8fCBoYXNUeXBlQW5kSWQoanNvbikpIHtcblx0XHRcdFx0Ly8gTk9URTogVGhlIGpzb24gbWF5IGFsc28gaGF2ZSB7JHR5cGUsICRpZH0gdGhhdCBjYW4gYmUgdXNlZCB0byByZWNvZ25pemUgYSByZXNvdXJjZSBpbnN0ZWFkIG9mIHskdXJpfS5cblx0XHRcdFx0Ly8gSWYgbmVpdGhlciBjb21iaW5hdGlvbiBpcyBwcm92aWRlZCBpdCB3aWxsIHRocm93LlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5wYXJzZVVSSShqc29uKVxuXHRcdFx0XHRcdC50aGVuKCh7cmVzb3VyY2UsIGlkLCB1cml9KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBhdHRycyA9IHskaWQ6IGlkLCAkdXJpOiB1cml9O1xuXG5cdFx0XHRcdFx0XHQvLyBTaW5jZSB3ZSBoYXZlIGEgcmVzb3VyY2UsIHdlIGFwcGVuZCB0byBvcmlnaW4gbGlzdCAoYmVjYXVzZSBsYXRlciBpdCB3aWxsIGdldCByZXBsYWNlZCB3aXRoIGl0c2VsZikuXG5cdFx0XHRcdFx0XHRpZiAoIW9yaWdpbi5pbmNsdWRlcyh1cmkpKSB7XG5cdFx0XHRcdFx0XHRcdG9yaWdpbi5wdXNoKHVyaSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLnBhcnNlUG90aW9uSlNPTlByb3BlcnRpZXMoanNvbiwgb3JpZ2luKTtcblxuXHRcdFx0XHRcdFx0Ly8gQ3JlYXRlIGFuZCBjYWNoZSB0aGUgcmVzb3VyY2UgaWYgaXQgZG9lcyBub3QgZXhpc3QuXG5cdFx0XHRcdFx0XHRpZiAoIXRoaXMuY2FjaGUuaGFzKHVyaSkpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuY2FjaGUucHV0KHVyaSwgcHJvcGVydGllcy50aGVuKHByb3BlcnRpZXMgPT4gUmVmbGVjdC5jb25zdHJ1Y3QocmVzb3VyY2UsIFt7Li4ucHJvcGVydGllcywgLi4uYXR0cnN9XSkpKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIElmIHRoZSByZXNvdXJjZSBhbHJlYWR5IGV4aXN0cyxcblx0XHRcdFx0XHRcdFx0Ly8gdXBkYXRlIGl0IHdpdGggbmV3IHByb3BlcnRpZXMuXG5cdFx0XHRcdFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChbcHJvcGVydGllcywgdGhpcy5jYWNoZS5nZXQodXJpKV0pXG5cdFx0XHRcdFx0XHRcdFx0LnRoZW4oKFtwcm9wZXJ0aWVzLCBpdGVtXSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihpdGVtLCBwcm9wZXJ0aWVzLCBhdHRycyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGpzb24uJHNjaGVtYSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0Ly8gSWYgd2UgaGF2ZSBhIHNjaGVtYSBvYmplY3QsXG5cdFx0XHRcdC8vIHdlIHdhbnQgdG8gcmVzb2x2ZSBpdCBhcyBpdCBpcyBhbmQgbm90IHRyeSB0byByZXNvbHZlIHJlZmVyZW5jZXMgb3IgZG8gYW55IGNvbnZlcnNpb25zLlxuXHRcdFx0XHQvLyBUaG91Z2gsIHdlIHdhbnQgdG8gY29udmVydCBzbmFrZSBjYXNlIHRvIGNhbWVsIGNhc2UuXG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZnJvbVNjaGVtYUpTT04oanNvbikpO1xuXHRcdFx0fSBlbHNlIGlmIChPYmplY3Qua2V5cyhqc29uKS5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBqc29uLiRyZWYgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0Ly8gSGFjayB0byBub3QgdHJ5IHRvIHJlc29sdmUgc2VsZiByZWZlcmVuY2VzLlxuXHRcdFx0XHRcdC8vIFRPRE86IEltcGxlbWVudCByZXNvbHZpbmcgc2VsZi1yZWZlcmVuY2VzXG5cdFx0XHRcdFx0aWYgKGpzb24uJHJlZiA9PT0gJyMnKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGpzb24uJHJlZik7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMucGFyc2VVUkkoanNvbilcblx0XHRcdFx0XHRcdC50aGVuKCh7dXJpfSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAob3JpZ2luLmluY2x1ZGVzKHVyaSkpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRvU2VsZlJlZmVyZW5jZSh1cmkpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5yZXNvbHZlKHVyaSwge1xuXHRcdFx0XHRcdFx0XHRcdGNhY2hlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogJ0dFVCcsXG5cdFx0XHRcdFx0XHRcdFx0b3JpZ2luXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGpzb24uJGRhdGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdFx0Ly8gUGFyc2UgUG90aW9uIGRhdGVcblx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBEYXRlKGpzb24uJGRhdGUpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdGhpcy5wYXJzZVBvdGlvbkpTT05Qcm9wZXJ0aWVzKGpzb24sIG9yaWdpbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoanNvbik7XG5cdFx0fVxuXHR9XG5cdHByaXZhdGUgcGFyc2VQb3Rpb25KU09OUHJvcGVydGllcyhqc29uOiBhbnksIG9yaWdpbjogc3RyaW5nW10pOiBhbnkge1xuXHRcdGNvbnN0IHtQcm9taXNlfSA9IHRoaXM7XG5cdFx0Y29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGpzb24pO1xuXHRcdGNvbnN0IHZhbHVlcyA9IGVudHJpZXMubWFwKChbLCB2YWx1ZV0pID0+IHRoaXMuZnJvbVBvdGlvbkpTT04odmFsdWUsIG9yaWdpbikpO1xuXHRcdGNvbnN0IGtleXMgPSBlbnRyaWVzLm1hcCgoW2tleV0pID0+IHRvQ2FtZWxDYXNlKGtleSkpO1xuXG5cdFx0cmV0dXJuIFByb21pc2UuYWxsKHZhbHVlcylcblx0XHRcdC50aGVuKHZhbHVlcyA9PiB2YWx1ZXMubWFwKCh2YWx1ZSwgaW5kZXgpID0+IFtrZXlzW2luZGV4XSwgdmFsdWVdKVxuXHRcdFx0XHQucmVkdWNlKChhLCBba2V5LCB2YWx1ZV0pID0+IE9iamVjdC5hc3NpZ24oYSwge1xuXHRcdFx0XHRcdFtrZXldOiB2YWx1ZVxuXHRcdFx0XHR9KSwge30pKTtcblx0fVxuXG5cdC8vIFRyeSB0byBwYXJzZSBhIFBvdGlvbiBVUkkgYW5kIGZpbmQgdGhlIGFzc29jaWF0ZWQgcmVzb3VyY2UgZm9yIGl0LFxuXHQvLyBvdGhlcndpc2UgcmV0dXJuIGEgcmVqZWN0ZWQgcHJvbWlzZS5cblx0cHJpdmF0ZSBwYXJzZVVSSSh7JHJlZiwgJHVyaSwgJHR5cGUsICRpZH06IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxQYXJzZWRVUkk+IHtcblx0XHRjb25zdCB7UHJvbWlzZX0gPSB0aGlzO1xuXHRcdGNvbnN0IHVyaSA9IHJlbW92ZVByZWZpeEZyb21VUkkoZ2V0UG90aW9uVVJJKHskcmVmLCAkdXJpLCAkdHlwZSwgJGlkfSksIHRoaXMucHJlZml4KTtcblx0XHRjb25zdCBlbnRyeSA9IGZpbmRQb3Rpb25SZXNvdXJjZSh1cmksIHRoaXMucmVzb3VyY2VzKTtcblxuXHRcdGlmICghZW50cnkpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYFVSSSAnJHt1cml9JyBpcyBhbiB1bmludGVycHJldGFibGUgb3IgdW5rbm93biBQb3Rpb24gcmVzb3VyY2UuYCkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCB7cmVzb3VyY2VVUkksIHJlc291cmNlfSA9IGVudHJ5O1xuXHRcdFx0Y29uc3QgcGFyYW1zID0ge3Jlc291cmNlLCB1cml9O1xuXHRcdFx0Y29uc3QgaWQgPSBwYXJzZVBvdGlvbklEKCRpZCk7XG5cblx0XHRcdGlmIChpZCAhPT0gbnVsbCkge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKHBhcmFtcywge2lkfSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKHBhcmFtcywge1xuXHRcdFx0XHRcdGlkOiBnZXRQb3Rpb25JRCh1cmksIHJlc291cmNlVVJJKVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShwYXJhbXMpO1xuXHRcdH1cblx0fVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BvdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsd0NBQXdDO0FBQ3hDLHVDQUtvQjtBQUVwQiwyQ0FBd0M7QUFDeEMsaUNBa0JpQjtBQW9FakI7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0g7SUFTQyxvQkFBWSxFQUFtRDtZQUFuRCw0QkFBbUQsRUFBbEQsWUFBUyxFQUFULDhCQUFTLEVBQUUsY0FBVyxFQUFYLGdDQUFXLEVBQUUsZ0JBQUs7UUFSakMsY0FBUyxHQUFvQixFQUFFLENBQUM7UUFLeEIsWUFBTyxHQUFtQix3QkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsOERBQThEO1FBQ3RILGFBQVEsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUc5QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLGdCQUFRLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw2QkFBUSxHQUFSLFVBQVMsR0FBVyxFQUFFLFFBQXFCLEVBQUUsT0FBcUI7UUFDakUseUNBQThCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9DLG9DQUF5QixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV6QyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUEsUUFBUSxJQUFJLE9BQUEsbUJBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQTVCLENBQTRCLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FB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SSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFVBQVEsR0FBRyx3REFBcUQsQ0FBQyxDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0EsSUFBQSwrQkFBVyxFQUFFLHlCQUFRLENBQVU7WUFDdEMsSUFBTSxNQUFNLEdBQUcsRUFBQyxRQUFRLFVBQUEsRUFBRSxHQUFHLEtBQUEsRUFBQyxDQUFDO1lBQy9CLElBQU0sRUFBRSxHQUFHLHFCQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFOUIsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUMsRUFBRSxJQUFBLEVBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDUCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtvQkFDckIsRUFBRSxFQUFFLG1CQUFXLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQztpQkFDakMsQ0FBQyxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDRixDQUFDO0lBQ0YsaUJBQUM7QUFBRCxDQTNQQSxBQTJQQyxJQUFBO0FBM1BxQixnQ0FBVSIsImZpbGUiOiJwb3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bWF4LWZpbGUtbGluZS1jb3VudCAqL1xuaW1wb3J0IHtcblx0ZGVjb3JhdGVDdG9yV2l0aFBvdGlvbkluc3RhbmNlLFxuXHRkZWNvcmF0ZUN0b3JXaXRoUG90aW9uVVJJLFxuXHRwb3Rpb25Qcm9taXNlLFxuXHRyZWFkb25seVxufSBmcm9tICcuL21ldGFkYXRhJztcbmltcG9ydCB7SXRlbSwgSXRlbU9wdGlvbnN9IGZyb20gJy4vaXRlbSc7XG5pbXBvcnQge1BhZ2luYXRpb259IGZyb20gJy4vcGFnaW5hdGlvbic7XG5pbXBvcnQge1xuXHRhZGRQcmVmaXhUb1VSSSxcblx0ZmluZFBvdGlvblJlc291cmNlLFxuXHRmaW5kUm9vdHMsXG5cdGZyb21TY2hlbWFKU09OLFxuXHRnZXRFcnJvck1lc3NhZ2UsXG5cdGdldFBvdGlvbklELFxuXHRnZXRQb3Rpb25VUkksXG5cdGhhc1R5cGVBbmRJZCxcblx0aXNQb3Rpb25VUkksXG5cdE1lbUNhY2hlLFxuXHRwYXJzZVBvdGlvbklELFxuXHRyZW1vdmVDaXJjdWxhckZsYWcsXG5cdHJlbW92ZVByZWZpeEZyb21VUkksXG5cdHJlcGxhY2VTZWxmUmVmZXJlbmNlcyxcblx0dG9DYW1lbENhc2UsXG5cdHRvUG90aW9uSlNPTixcblx0dG9TZWxmUmVmZXJlbmNlXG59IGZyb20gJy4vdXRpbHMnO1xuXG5cbi8qKlxuICogSXRlbSBjYWNoZS5cbiAqIERpY3RhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaXRlbSBjYWNoZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJdGVtQ2FjaGU8VCBleHRlbmRzIEl0ZW0+IHtcblx0aGFzKGtleTogc3RyaW5nKTogYm9vbGVhbjtcblx0Z2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxUPjtcblx0cHV0KGtleTogc3RyaW5nLCBpdGVtOiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPjtcblx0cmVtb3ZlKGtleTogc3RyaW5nKTogdm9pZDtcbn1cblxuXG4vKipcbiAqIENvbW1vbiBpbnRlcmZhY2VzLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkVVJJIHtcblx0cmVzb3VyY2U6IHR5cGVvZiBJdGVtO1xuXHRpZDogc3RyaW5nIHwgbnVtYmVyO1xuXHR1cmk6IHN0cmluZztcbn1cblxuLy8gVE9ETzogU3RhcnQgdXNpbmcgYSBtb3JlIHN0YW5kYXJkIGltcGwuIG9mIHRoZXNlIGludGVyZmFjZXMgKGVpdGhlciBjcmVhdGUgcHJvcGVyIGNsYXNzZXMgZm9yIHNvbWUgb3IgdXNlIHRoZSBuYXRpdmUgUmVxdWVzdCwgZXRjLilcbmV4cG9ydCBpbnRlcmZhY2UgVVJMU2VhcmNoUGFyYW1zIHtcblx0W2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RPcHRpb25zIHtcblx0bWV0aG9kPzogc3RyaW5nO1xuXHRzZWFyY2g/OiBVUkxTZWFyY2hQYXJhbXMgfCBRdWVyeU9wdGlvbnMgfCBudWxsO1xuXHRkYXRhPzogYW55O1xuXHRjYWNoZT86IGJvb2xlYW47XG5cdHBhZ2luYXRlPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlPcHRpb25zIHtcblx0cGFnZT86IG51bWJlcjtcblx0cGVyUGFnZT86IG51bWJlcjtcblx0d2hlcmU/OiBhbnk7XG5cdHNvcnQ/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hFeHRyYXMge1xuXHRwYWdpbmF0aW9uPzogUGFnaW5hdGlvbjxhbnk+O1xuXHRvcmlnaW4/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IHR5cGUgRmV0Y2hPcHRpb25zID0gRmV0Y2hFeHRyYXMgJiBSZXF1ZXN0T3B0aW9ucztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFBvdGlvblJlc3BvbnNlIHtcblx0ZGF0YTogYW55O1xuXHRoZWFkZXJzOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG90aW9uT3B0aW9ucyB7XG5cdGhvc3Q/OiBzdHJpbmc7XG5cdHByZWZpeD86IHN0cmluZztcblx0Y2FjaGU/OiBJdGVtQ2FjaGU8SXRlbT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG90aW9uUmVzb3VyY2VzIHtcblx0W2tleTogc3RyaW5nXTogdHlwZW9mIEl0ZW07XG59XG5cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGNvbnRhaW5zIHRoZSBtYWluIGxvZ2ljIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBGbGFzayBQb3Rpb24gYmFja2VuZC5cbiAqIE5vdGUgdGhhdCB0aGlzIGNsYXNzIGRvZXMgbm90IGNvbnRhaW4gdGhlIGxvZ2ljIGZvciBtYWtpbmcgdGhlIEhUVFAgcmVxdWVzdHMsXG4gKiBpdCBpcyB1cCB0byB0aGUgY2hpbGQgY2xhc3MgdG8gaW1wbGVtZW50IHRoZSBsb2dpYyBmb3IgdGhhdCB0aHJvdWdoIHRoZSBgcmVxdWVzdGAgbWV0aG9kLlxuICogRnVydGhlcm1vcmUsIHRoZSBjaGlsZCBjbGFzcyBhbHNvIG5lZWRzIHRvIHByb3ZpZGUgdGhlIFByb21pc2UgY2xhc3MvZm4gYXMgdGhpcyBjbGFzcyBpcyBzZXQgdG8gdXNlIHRoZSBuYXRpdmUgUHJvbWlzZSBvbmx5IGF2YWlsYWJsZSBmcm9tIEVTNi5cbiAqXG4gKiBAZXhhbXBsZVxuICogY2xhc3MgUG90aW9uIGV4dGVuZHMgUG90aW9uQmFzZSB7XG4gKiAgICAgcHJvdGVjdGVkIHJlcXVlc3QodXJpLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xuICogICAgICAgICAvLyBIZXJlIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoZSBhY3R1YWwgSFRUUCByZXF1ZXN0XG4gKiAgICAgfTtcbiAqIH1cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvdGlvbkJhc2Uge1xuXHRyZWFkb25seSByZXNvdXJjZXM6IFBvdGlvblJlc291cmNlcyA9IHt9O1xuXHRyZWFkb25seSBjYWNoZTogSXRlbUNhY2hlPEl0ZW0+O1xuXHRob3N0OiBzdHJpbmc7XG5cdHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgUHJvbWlzZTogdHlwZW9mIFByb21pc2UgPSBwb3Rpb25Qcm9taXNlKHRoaXMpOyAvLyBOT1RFOiBUaGlzIGlzIG5lZWRlZCBvbmx5IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgQW5ndWxhckpTLlxuXHRwcml2YXRlIHJlcXVlc3RzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xuXG5cdGNvbnN0cnVjdG9yKHtob3N0ID0gJycsIHByZWZpeCA9ICcnLCBjYWNoZX06IFBvdGlvbk9wdGlvbnMgPSB7fSkge1xuXHRcdHRoaXMuY2FjaGUgPSBjYWNoZSB8fCBuZXcgTWVtQ2FjaGUoKTtcblx0XHR0aGlzLmhvc3QgPSBob3N0O1xuXHRcdHRoaXMucHJlZml4ID0gcHJlZml4O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVyIGEgcmVzb3VyY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSB1cmkgLSBQYXRoIG9uIHdoaWNoIHRoZSByZXNvdXJjZSBpcyByZWdpc3RlcmVkLlxuXHQgKiBAcGFyYW0ge0l0ZW19IHJlc291cmNlXG5cdCAqIEBwYXJhbSB7SXRlbU9wdGlvbnN9IG9wdGlvbnMgLSBTZXQgdGhlIHByb3BlcnR5IG9wdGlvbnMgZm9yIGFueSBpbnN0YW5jZSBvZiB0aGUgcmVzb3VyY2UgKHNldHRpbmcgYSBwcm9wZXJ0eSB0byByZWFkb25seSBmb3IgaW5zdGFuY2UpLlxuXHQgKi9cblx0cmVnaXN0ZXIodXJpOiBzdHJpbmcsIHJlc291cmNlOiB0eXBlb2YgSXRlbSwgb3B0aW9ucz86IEl0ZW1PcHRpb25zKTogdHlwZW9mIEl0ZW0ge1xuXHRcdGRlY29yYXRlQ3RvcldpdGhQb3Rpb25JbnN0YW5jZShyZXNvdXJjZSwgdGhpcyk7XG5cdFx0ZGVjb3JhdGVDdG9yV2l0aFBvdGlvblVSSShyZXNvdXJjZSwgdXJpKTtcblxuXHRcdGlmIChvcHRpb25zICYmIEFycmF5LmlzQXJyYXkob3B0aW9ucy5yZWFkb25seSkpIHtcblx0XHRcdG9wdGlvbnMucmVhZG9ubHkuZm9yRWFjaChwcm9wZXJ0eSA9PiByZWFkb25seShyZXNvdXJjZSwgcHJvcGVydHkpKTtcblx0XHR9XG5cdFx0dGhpcy5yZXNvdXJjZXNbdXJpXSA9IHJlc291cmNlO1xuXG5cdFx0cmV0dXJuIHJlc291cmNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVyIGEgcmVzb3VyY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSB1cmkgLSBQYXRoIG9uIHdoaWNoIHRoZSByZXNvdXJjZSBpcyByZWdpc3RlcmVkLlxuXHQgKiBAcGFyYW0ge0l0ZW1PcHRpb25zfSBvcHRpb25zIC0gU2V0IHRoZSBwcm9wZXJ0eSBvcHRpb25zIGZvciBhbnkgaW5zdGFuY2Ugb2YgdGhlIHJlc291cmNlIChzZXR0aW5nIGEgcHJvcGVydHkgdG8gcmVhZG9ubHkgZm9yIGluc3RhbmNlKS5cblx0ICpcblx0ICogQGV4YW1wbGVcblx0ICogQHBvdGlvbi5yZWdpc3RlckFzKCcvdXNlcicpXG5cdCAqIGNsYXNzIFVzZXIgZXh0ZW5kcyBJdGVtIHt9XG5cdCAqL1xuXHRyZWdpc3RlckFzKHVyaTogc3RyaW5nLCBvcHRpb25zPzogSXRlbU9wdGlvbnMpOiBDbGFzc0RlY29yYXRvciB7XG5cdFx0cmV0dXJuICh0YXJnZXQ6IGFueSkgPT4ge1xuXHRcdFx0dGhpcy5yZWdpc3Rlcih1cmksIHRhcmdldCwgb3B0aW9ucyk7XG5cdFx0XHRyZXR1cm4gdGFyZ2V0O1xuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogTWFrZSBhIEhUVFAgcmVxdWVzdC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHVyaVxuXHQgKiBAcGFyYW0ge1JlcXVlc3RPcHRpb25zfSBvcHRpb25zXG5cdCAqIEByZXR1cm5zIHtQb3Rpb25SZXNwb25zZX0gQW4gb2JqZWN0IHdpdGgge2RhdGEsIGhlYWRlcnN9IHdoZXJlIHtkYXRhfSBjYW4gYmUgYW55dGhpbmcgYW5kIHtoZWFkZXJzfSBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgcmVzcG9uc2UgaGVhZGVycyBmcm9tIHRoZSBIVFRQIHJlcXVlc3QuXG5cdCAqL1xuXHRwcm90ZWN0ZWQgYWJzdHJhY3QgcmVxdWVzdCh1cmk6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxQb3Rpb25SZXNwb25zZT47XG5cblx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtZW1iZXItb3JkZXJpbmdcblx0ZmV0Y2godXJpOiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogUmVxdWVzdE9wdGlvbnMsIGV4dHJhcz86IEZldGNoRXh0cmFzKTogUHJvbWlzZTxJdGVtIHwgSXRlbVtdIHwgUGFnaW5hdGlvbjxJdGVtPiB8IGFueT4ge1xuXHRcdGNvbnN0IG9yaWdpbiA9IHJlbW92ZVByZWZpeEZyb21VUkkodXJpLCB0aGlzLnByZWZpeCk7XG5cdFx0Y29uc3Qgb3B0aW9ucyA9IHsuLi5yZXF1ZXN0T3B0aW9ucywgLi4uZXh0cmFzLCBvcmlnaW46IFtdfTtcblx0XHRpZiAoaXNQb3Rpb25VUkkodXJpLCB0aGlzLnJlc291cmNlcykpIHtcblx0XHRcdE9iamVjdC5hc3NpZ24ob3B0aW9ucywge1xuXHRcdFx0XHRvcmlnaW46IFtvcmlnaW5dXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMucmVzb2x2ZSh1cmksIG9wdGlvbnMpXG5cdFx0XHQudGhlbihqc29uID0+IHtcblx0XHRcdFx0cmVwbGFjZVNlbGZSZWZlcmVuY2VzKGpzb24sIGZpbmRSb290cyhqc29uKSk7XG5cdFx0XHRcdHJlbW92ZUNpcmN1bGFyRmxhZyhqc29uKTtcblx0XHRcdFx0cmV0dXJuIGpzb247XG5cdFx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgcmVzb2x2ZSh1cmk6IHN0cmluZywgb3B0aW9uczogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcblx0XHRjb25zdCB7UHJvbWlzZSwgcHJlZml4fSA9IHRoaXM7XG5cblx0XHRjb25zdCBjYWNoZUtleSA9IHJlbW92ZVByZWZpeEZyb21VUkkodXJpLCBwcmVmaXgpO1xuXHRcdC8vIEFkZCB0aGUgQVBJIHByZWZpeCBpZiBub3QgcHJlc2VudFxuXHRcdHVyaSA9IGFkZFByZWZpeFRvVVJJKHVyaSwgcHJlZml4KTtcblxuXHRcdC8vIFNlcmlhbGl6ZSByZXF1ZXN0IHRvIFBvdGlvbiBKU09OLlxuXHRcdGNvbnN0IGZldGNoID0gKCkgPT4gdGhpcy5yZXF1ZXN0KGAke3RoaXMuaG9zdH0ke3VyaX1gLCB0aGlzLnNlcmlhbGl6ZShvcHRpb25zKSlcblx0XHQvLyBEZXNlcmlhbGl6ZSB0aGUgUG90aW9uIEpTT04uXG5cdFx0XHQudGhlbihyZXNwb25zZSA9PiB0aGlzLmRlc2VyaWFsaXplKHJlc3BvbnNlLCB1cmksIG9wdGlvbnMpKTtcblxuXHRcdGlmIChvcHRpb25zLm1ldGhvZCA9PT0gJ0dFVCcgJiYgIW9wdGlvbnMucGFnaW5hdGUgJiYgIW9wdGlvbnMuc2VhcmNoKSB7XG5cdFx0XHQvLyBJZiBhIEdFVCByZXF1ZXN0IHdhcyBtYWRlIGFuZCB7Y2FjaGU6IHRydWV9IHJldHVybiB0aGUgaXRlbSBmcm9tIGNhY2hlIChpZiBpdCBleGlzdHMpLlxuXHRcdFx0Ly8gTk9URTogUXVlcmllcyBhcmUgbm90IGNhY2hlZC5cblx0XHRcdGlmICAob3B0aW9ucy5jYWNoZSAmJiB0aGlzLmNhY2hlLmhhcyhjYWNoZUtleSkpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY2FjaGUuZ2V0KGNhY2hlS2V5KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2FjaGUgdGhlIHJlcXVlc3Qgc28gdGhhdCBmdXJ0aGVyIHJlcXVlc3RzIGZvciB0aGUgc2FtZSByZXNvdXJjZSB3aWxsIG5vdCBtYWtlIGFuIGFkaXRpb25hbCBYSFIuXG5cdFx0XHRpZiAoIXRoaXMucmVxdWVzdHMuaGFzKGNhY2hlS2V5KSkge1xuXHRcdFx0XHR0aGlzLnJlcXVlc3RzLnNldChjYWNoZUtleSwgZmV0Y2goKS50aGVuKGRhdGEgPT4ge1xuXHRcdFx0XHRcdHRoaXMucmVxdWVzdHMuZGVsZXRlKGNhY2hlS2V5KTtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fSwgZXJyID0+IHtcblx0XHRcdFx0XHQvLyBJZiByZXF1ZXN0IGZhaWxzLFxuXHRcdFx0XHRcdC8vIG1ha2Ugc3VyZSB0byByZW1vdmUgdGhlIHBlbmRpbmcgcmVxdWVzdCBzbyBmdXJ0aGVyIHJlcXVlc3RzIGNhbiBiZSBtYWRlLFxuXHRcdFx0XHRcdC8vIGJ1dCBmYWlsIHRoZSBwaXBlbGluZS5cblx0XHRcdFx0XHR0aGlzLnJlcXVlc3RzLmRlbGV0ZShjYWNoZUtleSk7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZShlcnIsIHVyaSk7XG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KG1lc3NhZ2UpO1xuXHRcdFx0XHR9KSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB0aGlzLnJlcXVlc3RzLmdldChjYWNoZUtleSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmZXRjaCgpO1xuXHRcdH1cblxuXHR9XG5cblx0cHJpdmF0ZSBzZXJpYWxpemUob3B0aW9uczogRmV0Y2hPcHRpb25zKTogUmVxdWVzdE9wdGlvbnMge1xuXHRcdGNvbnN0IHtwcmVmaXh9ID0gdGhpcztcblx0XHRjb25zdCB7c2VhcmNofSA9IG9wdGlvbnM7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4ub3B0aW9ucyxcblx0XHRcdC4uLntcblx0XHRcdFx0c2VhcmNoOiB0b1BvdGlvbkpTT04ob3B0aW9ucy5wYWdpbmF0ZSA/IHtwYWdlOiAxLCBwZXJQYWdlOiAyNSwgLi4uc2VhcmNofSA6IHNlYXJjaCwgcHJlZml4KSxcblx0XHRcdFx0ZGF0YTogdG9Qb3Rpb25KU09OKG9wdGlvbnMuZGF0YSwgcHJlZml4KVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cblx0cHJpdmF0ZSBkZXNlcmlhbGl6ZSh7ZGF0YSwgaGVhZGVyc306IFBvdGlvblJlc3BvbnNlLCB1cmk6IHN0cmluZywgb3B0aW9uczogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxQb3Rpb25SZXNwb25zZT4ge1xuXHRcdHJldHVybiB0aGlzLmZyb21Qb3Rpb25KU09OKGRhdGEsIG9wdGlvbnMub3JpZ2luIGFzIHN0cmluZ1tdKVxuXHRcdFx0LnRoZW4oanNvbiA9PiB7XG5cdFx0XHRcdC8vIElmIHtwYWdpbmF0ZX0gaXMgZW5hYmxlZCwgcmV0dXJuIG9yIHVwZGF0ZSBQYWdpbmF0aW9uLlxuXHRcdFx0XHRpZiAob3B0aW9ucy5wYWdpbmF0ZSkge1xuXHRcdFx0XHRcdGNvbnN0IGNvdW50ID0gaGVhZGVyc1sneC10b3RhbC1jb3VudCddIHx8IGpzb24ubGVuZ3RoO1xuXHRcdFx0XHRcdGlmIChvcHRpb25zLnBhZ2luYXRpb24gaW5zdGFuY2VvZiBQYWdpbmF0aW9uKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb3B0aW9ucy5wYWdpbmF0aW9uLnVwZGF0ZShqc29uLCBjb3VudCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnN0IHBhZ2luYXRpb24gPSBuZXcgUGFnaW5hdGlvbjxJdGVtPih7dXJpLCBwb3Rpb246IHRoaXN9LCBqc29uLCBjb3VudCwgb3B0aW9ucyk7XG5cdFx0XHRcdFx0XHRPYmplY3QuYXNzaWduKG9wdGlvbnMsIHtwYWdpbmF0aW9ufSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcGFnaW5hdGlvbjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGpzb247XG5cdFx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZnJvbVBvdGlvbkpTT04oanNvbjogYW55LCBvcmlnaW46IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+IHtcblx0XHRjb25zdCB7UHJvbWlzZX0gPSB0aGlzO1xuXG5cdFx0aWYgKHR5cGVvZiBqc29uID09PSAnb2JqZWN0JyAmJiBqc29uICE9PSBudWxsKSB7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShqc29uKSkge1xuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoanNvbi5tYXAoaXRlbSA9PiB0aGlzLmZyb21Qb3Rpb25KU09OKGl0ZW0sIG9yaWdpbikpKTtcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGpzb24uJHVyaSA9PT0gJ3N0cmluZycgfHwgaGFzVHlwZUFuZElkKGpzb24pKSB7XG5cdFx0XHRcdC8vIE5PVEU6IFRoZSBqc29uIG1heSBhbHNvIGhhdmUgeyR0eXBlLCAkaWR9IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVjb2duaXplIGEgcmVzb3VyY2UgaW5zdGVhZCBvZiB7JHVyaX0uXG5cdFx0XHRcdC8vIElmIG5laXRoZXIgY29tYmluYXRpb24gaXMgcHJvdmlkZWQgaXQgd2lsbCB0aHJvdy5cblx0XHRcdFx0cmV0dXJuIHRoaXMucGFyc2VVUkkoanNvbilcblx0XHRcdFx0XHQudGhlbigoe3Jlc291cmNlLCBpZCwgdXJpfSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgYXR0cnMgPSB7JGlkOiBpZCwgJHVyaTogdXJpfTtcblxuXHRcdFx0XHRcdFx0Ly8gU2luY2Ugd2UgaGF2ZSBhIHJlc291cmNlLCB3ZSBhcHBlbmQgdG8gb3JpZ2luIGxpc3QgKGJlY2F1c2UgbGF0ZXIgaXQgd2lsbCBnZXQgcmVwbGFjZWQgd2l0aCBpdHNlbGYpLlxuXHRcdFx0XHRcdFx0aWYgKCFvcmlnaW4uaW5jbHVkZXModXJpKSkge1xuXHRcdFx0XHRcdFx0XHRvcmlnaW4ucHVzaCh1cmkpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5wYXJzZVBvdGlvbkpTT05Qcm9wZXJ0aWVzKGpzb24sIG9yaWdpbik7XG5cblx0XHRcdFx0XHRcdC8vIENyZWF0ZSBhbmQgY2FjaGUgdGhlIHJlc291cmNlIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuXHRcdFx0XHRcdFx0aWYgKCF0aGlzLmNhY2hlLmhhcyh1cmkpKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLmNhY2hlLnB1dCh1cmksIHByb3BlcnRpZXMudGhlbihwcm9wZXJ0aWVzID0+IFJlZmxlY3QuY29uc3RydWN0KHJlc291cmNlLCBbey4uLnByb3BlcnRpZXMsIC4uLmF0dHJzfV0pKSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBJZiB0aGUgcmVzb3VyY2UgYWxyZWFkeSBleGlzdHMsXG5cdFx0XHRcdFx0XHRcdC8vIHVwZGF0ZSBpdCB3aXRoIG5ldyBwcm9wZXJ0aWVzLlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoW3Byb3BlcnRpZXMsIHRoaXMuY2FjaGUuZ2V0KHVyaSldKVxuXHRcdFx0XHRcdFx0XHRcdC50aGVuKChbcHJvcGVydGllcywgaXRlbV0pID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24oaXRlbSwgcHJvcGVydGllcywgYXR0cnMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBqc29uLiRzY2hlbWEgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgYSBzY2hlbWEgb2JqZWN0LFxuXHRcdFx0XHQvLyB3ZSB3YW50IHRvIHJlc29sdmUgaXQgYXMgaXQgaXMgYW5kIG5vdCB0cnkgdG8gcmVzb2x2ZSByZWZlcmVuY2VzIG9yIGRvIGFueSBjb252ZXJzaW9ucy5cblx0XHRcdFx0Ly8gVGhvdWdoLCB3ZSB3YW50IHRvIGNvbnZlcnQgc25ha2UgY2FzZSB0byBjYW1lbCBjYXNlLlxuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZyb21TY2hlbWFKU09OKGpzb24pKTtcblx0XHRcdH0gZWxzZSBpZiAoT2JqZWN0LmtleXMoanNvbikubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YganNvbi4kcmVmID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdC8vIEhhY2sgdG8gbm90IHRyeSB0byByZXNvbHZlIHNlbGYgcmVmZXJlbmNlcy5cblx0XHRcdFx0XHQvLyBUT0RPOiBJbXBsZW1lbnQgcmVzb2x2aW5nIHNlbGYtcmVmZXJlbmNlc1xuXHRcdFx0XHRcdGlmIChqc29uLiRyZWYgPT09ICcjJykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShqc29uLiRyZWYpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiB0aGlzLnBhcnNlVVJJKGpzb24pXG5cdFx0XHRcdFx0XHQudGhlbigoe3VyaX0pID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKG9yaWdpbi5pbmNsdWRlcyh1cmkpKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0b1NlbGZSZWZlcmVuY2UodXJpKSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMucmVzb2x2ZSh1cmksIHtcblx0XHRcdFx0XHRcdFx0XHRjYWNoZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRcdFx0XHRcdG9yaWdpblxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBqc29uLiRkYXRlICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0XHRcdC8vIFBhcnNlIFBvdGlvbiBkYXRlXG5cdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgRGF0ZShqc29uLiRkYXRlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRoaXMucGFyc2VQb3Rpb25KU09OUHJvcGVydGllcyhqc29uLCBvcmlnaW4pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGpzb24pO1xuXHRcdH1cblx0fVxuXHRwcml2YXRlIHBhcnNlUG90aW9uSlNPTlByb3BlcnRpZXMoanNvbjogYW55LCBvcmlnaW46IHN0cmluZ1tdKTogYW55IHtcblx0XHRjb25zdCB7UHJvbWlzZX0gPSB0aGlzO1xuXHRcdGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhqc29uKTtcblx0XHRjb25zdCB2YWx1ZXMgPSBlbnRyaWVzLm1hcCgoWywgdmFsdWVdKSA9PiB0aGlzLmZyb21Qb3Rpb25KU09OKHZhbHVlLCBvcmlnaW4pKTtcblx0XHRjb25zdCBrZXlzID0gZW50cmllcy5tYXAoKFtrZXldKSA9PiB0b0NhbWVsQ2FzZShrZXkpKTtcblxuXHRcdHJldHVybiBQcm9taXNlLmFsbCh2YWx1ZXMpXG5cdFx0XHQudGhlbih2YWx1ZXMgPT4gdmFsdWVzLm1hcCgodmFsdWUsIGluZGV4KSA9PiBba2V5c1tpbmRleF0sIHZhbHVlXSlcblx0XHRcdFx0LnJlZHVjZSgoYSwgW2tleSwgdmFsdWVdKSA9PiBPYmplY3QuYXNzaWduKGEsIHtcblx0XHRcdFx0XHRba2V5XTogdmFsdWVcblx0XHRcdFx0fSksIHt9KSk7XG5cdH1cblxuXHQvLyBUcnkgdG8gcGFyc2UgYSBQb3Rpb24gVVJJIGFuZCBmaW5kIHRoZSBhc3NvY2lhdGVkIHJlc291cmNlIGZvciBpdCxcblx0Ly8gb3RoZXJ3aXNlIHJldHVybiBhIHJlamVjdGVkIHByb21pc2UuXG5cdHByaXZhdGUgcGFyc2VVUkkoeyRyZWYsICR1cmksICR0eXBlLCAkaWR9OiB7W2tleTogc3RyaW5nXTogYW55fSk6IFByb21pc2U8UGFyc2VkVVJJPiB7XG5cdFx0Y29uc3Qge1Byb21pc2V9ID0gdGhpcztcblx0XHRjb25zdCB1cmkgPSByZW1vdmVQcmVmaXhGcm9tVVJJKGdldFBvdGlvblVSSSh7JHJlZiwgJHVyaSwgJHR5cGUsICRpZH0pLCB0aGlzLnByZWZpeCk7XG5cdFx0Y29uc3QgZW50cnkgPSBmaW5kUG90aW9uUmVzb3VyY2UodXJpLCB0aGlzLnJlc291cmNlcyk7XG5cblx0XHRpZiAoIWVudHJ5KSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBVUkkgJyR7dXJpfScgaXMgYW4gdW5pbnRlcnByZXRhYmxlIG9yIHVua25vd24gUG90aW9uIHJlc291cmNlLmApKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qge3Jlc291cmNlVVJJLCByZXNvdXJjZX0gPSBlbnRyeTtcblx0XHRcdGNvbnN0IHBhcmFtcyA9IHtyZXNvdXJjZSwgdXJpfTtcblx0XHRcdGNvbnN0IGlkID0gcGFyc2VQb3Rpb25JRCgkaWQpO1xuXG5cdFx0XHRpZiAoaWQgIT09IG51bGwpIHtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihwYXJhbXMsIHtpZH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihwYXJhbXMsIHtcblx0XHRcdFx0XHRpZDogZ2V0UG90aW9uSUQodXJpLCByZXNvdXJjZVVSSSlcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUocGFyYW1zKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==

@@ -59,3 +59,3 @@ import { Item } from './item';

* Walk through Potion JSON and replace SelfReference objects from the roots (roots are just a lost of Potion item references).
* NOTE: This method mutates values and adds an extra key to objects ({$skip} - for preventing a stackoverflow exception).
* NOTE: This method mutates values and adds an extra key to objects ({$circular} - for preventing a stackoverflow exception).
* @param json - Any value to walk through.

@@ -72,2 +72,6 @@ * @param {Array<Item>} roots - A list of Potion items found in the passed JSON.

/**
* Remove {$circular} from arrays
*/
export declare function removeCircularFlag(json: any): any;
/**
* Generate a self reference

@@ -74,0 +78,0 @@ */

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

* Walk through Potion JSON and replace SelfReference objects from the roots (roots are just a lost of Potion item references).
* NOTE: This method mutates values and adds an extra key to objects ({$skip} - for preventing a stackoverflow exception).
* NOTE: This method mutates values and adds an extra key to objects ({$circular} - for preventing a stackoverflow exception).
* @param json - Any value to walk through.

@@ -130,3 +130,3 @@ * @param {Array<Item>} roots - A list of Potion items found in the passed JSON.

}
else if (json.$skip) {
else if (json.$circular) {
// If the object we want to walk through is a ref we already replaced, just skip it.

@@ -137,7 +137,7 @@ return json;

var pagination = json.update(json.map(function (value) { return replaceSelfReferences(value, roots); }), json.total);
return Object.assign(pagination, { $skip: true });
return Object.assign(pagination, { $circular: true });
}
else if (Array.isArray(json)) {
var list = json.map(function (value) { return replaceSelfReferences(value, roots); });
return Object.assign(list, { $skip: true });
return Object.assign(list, { $circular: true });
}

@@ -152,3 +152,3 @@ else if (json instanceof SelfReference) {

var ref = roots.find(function (item) { return value.matches(item.uri); });
Object.assign(ref, { $skip: true });
Object.assign(ref, { $circular: true });
Object.assign(json, (_a = {},

@@ -213,2 +213,18 @@ _a[key] = ref,

/**
* Remove {$circular} from arrays
*/
function removeCircularFlag(json) {
if (Array.isArray(json)) {
if (json.$circular) {
delete json.$circular;
}
for (var _i = 0, _a = Object.values(json); _i < _a.length; _i++) {
var value = _a[_i];
removeCircularFlag(value);
}
}
return json;
}
exports.removeCircularFlag = removeCircularFlag;
/**
* Generate a self reference

@@ -377,2 +393,2 @@ */

exports.MemCache = MemCache;
//# sourceMappingURL=data:application/json;base64,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UUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7YUFDOUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELHlCQUFNLEdBQU4sVUFBTyxHQUFXO1FBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRixlQUFDO0FBQUQsQ0FqQkEsQUFpQkMsSUFBQTtBQWpCWSw0QkFBUSIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWNsYXNzZXMtcGVyLWZpbGVcbmltcG9ydCB7SXRlbX0gZnJvbSAnLi9pdGVtJztcbmltcG9ydCB7UGFnaW5hdGlvbn0gZnJvbSAnLi9wYWdpbmF0aW9uJztcbmltcG9ydCB7SXRlbUNhY2hlLCBQb3Rpb25SZXNvdXJjZXN9IGZyb20gJy4vcG90aW9uJztcblxuXG4vKipcbiAqIENhbWVsIGNhc2UgdG8gc25ha2UgY2FzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TbmFrZUNhc2Uoc3RyOiBzdHJpbmcsIHNlcGFyYXRvcjogc3RyaW5nID0gJ18nKTogc3RyaW5nIHtcblx0cmV0dXJuIHN0ci5yZXBsYWNlKC9cXC4/KFtBLVowLTldKykvZywgKF8sICQyKSA9PiBgJHtzZXBhcmF0b3J9JHskMi50b0xvd2VyQ2FzZSgpfWApXG5cdFx0LnJlcGxhY2UoL15fLywgJycpO1xufVxuXG5cbi8qKlxuICogU25ha2UgY2FzZSB0byBjYW1lbCBjYXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NhbWVsQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBzdHIucmVwbGFjZSgvXyhbYS16MC05XSkvZywgZyA9PiBnWzFdLnRvVXBwZXJDYXNlKCkpO1xufVxuXG5cbi8qKlxuICogT2JqZWN0IHR5cGUgZ3VhcmRcbiAqIERvY3M6IGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL2FkdmFuY2VkLXR5cGVzLmh0bWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSnNPYmplY3QodmFsdWU6IGFueSk6IHZhbHVlIGlzIHtba2V5OiBzdHJpbmddOyBhbnl9IHtcblx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGw7XG59XG4vKipcbiAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBlbXB0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmo6IHt9KTogYm9vbGVhbiB7XG5cdHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0eXBlIGd1YXJkXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogYmFuLXR5cGVzXG5leHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZTogYW55KTogdmFsdWUgaXMgRnVuY3Rpb24ge1xuXHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufVxuXG5cbmV4cG9ydCB0eXBlIEtleU1hcEZ1bmN0aW9uID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmc7XG5leHBvcnQgdHlwZSBWYWx1ZU1hcEZ1bmN0aW9uID0gKHZhbHVlOiBhbnkpID0+IGFueTtcbi8qKlxuICogT2JqZWN0Lm1hcCgpXG4gKiBOT1RFOiBUaGlzIGlzIE5PVCBhIHJlY3Vyc2l2ZSBmbi5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleU1hcEZ1bmN0aW9uIC0gVHJhbnNmb3JtIG9wZXJhdGlvbiB0byBhcHBseSBvbiB0aGUga2V5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ZhbHVlTWFwRnVuY3Rpb25dIC0gVHJhbnNmb3JtIG9wZXJhdGlvbiB0byBhcHBseSBvbiB0aGUgdmFsdWUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gb21hcChvYmo6IHtba2V5OiBzdHJpbmddOiBhbnl9LCBrZXlNYXBGdW5jdGlvbjogS2V5TWFwRnVuY3Rpb24sIHZhbHVlTWFwRnVuY3Rpb24/OiBWYWx1ZU1hcEZ1bmN0aW9uKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuXHRpZiAoaXNKc09iamVjdChvYmopICYmICFBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKVxuXHRcdFx0Lm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbaXNGdW5jdGlvbihrZXlNYXBGdW5jdGlvbikgPyBrZXlNYXBGdW5jdGlvbihrZXkpIDoga2V5LCBpc0Z1bmN0aW9uKHZhbHVlTWFwRnVuY3Rpb24pID8gdmFsdWVNYXBGdW5jdGlvbih2YWx1ZSkgOiB2YWx1ZV0pXG5cdFx0XHQucmVkdWNlKChhOiB7fSwgW2tleSwgdmFsdWVdKSA9PiBPYmplY3QuYXNzaWduKGEsIHtba2V5XTogdmFsdWV9KSwge30pO1xuXHR9XG5cdHJldHVybiBvYmo7XG59XG5cblxuLyoqXG4gKiBBZ2dyZWdhdGUgYSBzdHIgYmFzZWQgb24gYW4gRXJyb3Igb2JqZWN0IGFuZCB1cmlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yTWVzc2FnZShlcnJvcjogYW55LCB1cmk/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBtZXNzYWdlID0gJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIFBvdGlvbiB0cmllZCB0byByZXRyaWV2ZSBhIHJlc291cmNlJztcblx0aWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRyZXR1cm4gZXJyb3IubWVzc2FnZTtcblx0fSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIGVycm9yO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB1cmkgPT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIGAke21lc3NhZ2V9IGZyb20gJyR7dXJpfScuYDtcblx0fVxuXHRyZXR1cm4gYCR7bWVzc2FnZX0uYDtcbn1cblxuXG4vKipcbiAqIENvbnZlcnQgSlNPTiBzY2hlbWEgdG8gYSBKUyBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb21TY2hlbWFKU09OKGpzb246IGFueSk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcblx0aWYgKEFycmF5LmlzQXJyYXkoanNvbikpIHtcblx0XHRyZXR1cm4ganNvbi5tYXAodmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IGZyb21TY2hlbWFKU09OKHZhbHVlKSA6IHZhbHVlKTtcblx0fSBlbHNlIGlmIChpc0pzT2JqZWN0KGpzb24pKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5lbnRyaWVzPGFueT4oanNvbilcblx0XHRcdC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW3RvQ2FtZWxDYXNlKGtleSksIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyBmcm9tU2NoZW1hSlNPTih2YWx1ZSkgOiB2YWx1ZV0pXG5cdFx0XHQucmVkdWNlKChhLCBba2V5LCB2YWx1ZV0pID0+IE9iamVjdC5hc3NpZ24oYSwge1trZXldOiB2YWx1ZX0pLCB7fSk7XG5cdH1cblx0cmV0dXJuIGpzb247XG59XG5cblxuZXhwb3J0IGNsYXNzIFNlbGZSZWZlcmVuY2Uge1xuXHRjb25zdHJ1Y3RvcihyZWFkb25seSAkdXJpOiBzdHJpbmcpIHt9XG5cdG1hdGNoZXModXJpOiBhbnkpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy4kdXJpID09PSB1cmk7XG5cdH1cbn1cblxuLyoqXG4gKiBXYWxrIHRocm91Z2ggUG90aW9uIEpTT04gYW5kIHJlcGxhY2UgU2VsZlJlZmVyZW5jZSBvYmplY3RzIGZyb20gdGhlIHJvb3RzIChyb290cyBhcmUganVzdCBhIGxvc3Qgb2YgUG90aW9uIGl0ZW0gcmVmZXJlbmNlcykuXG4gKiBOT1RFOiBUaGlzIG1ldGhvZCBtdXRhdGVzIHZhbHVlcyBhbmQgYWRkcyBhbiBleHRyYSBrZXkgdG8gb2JqZWN0cyAoeyRza2lwfSAtIGZvciBwcmV2ZW50aW5nIGEgc3RhY2tvdmVyZmxvdyBleGNlcHRpb24pLlxuICogQHBhcmFtIGpzb24gLSBBbnkgdmFsdWUgdG8gd2FsayB0aHJvdWdoLlxuICogQHBhcmFtIHtBcnJheTxJdGVtPn0gcm9vdHMgLSBBIGxpc3Qgb2YgUG90aW9uIGl0ZW1zIGZvdW5kIGluIHRoZSBwYXNzZWQgSlNPTi5cbiAqL1xuLy8gVE9ETzogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiB0aGlzXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNlbGZSZWZlcmVuY2VzKGpzb246IGFueSwgcm9vdHM6IEl0ZW1bXSk6IGFueSB7XG5cdGlmICh0eXBlb2YganNvbiAhPT0gJ29iamVjdCcgfHwganNvbiA9PT0gbnVsbCkge1xuXHRcdHJldHVybiBqc29uO1xuXHR9IGVsc2UgaWYgKGpzb24uJHNraXApIHtcblx0XHQvLyBJZiB0aGUgb2JqZWN0IHdlIHdhbnQgdG8gd2FsayB0aHJvdWdoIGlzIGEgcmVmIHdlIGFscmVhZHkgcmVwbGFjZWQsIGp1c3Qgc2tpcCBpdC5cblx0XHRyZXR1cm4ganNvbjtcblx0fSBlbHNlIGlmIChqc29uIGluc3RhbmNlb2YgUGFnaW5hdGlvbikge1xuXHRcdGNvbnN0IHBhZ2luYXRpb24gPSBqc29uLnVwZGF0ZShqc29uLm1hcCh2YWx1ZSA9PiByZXBsYWNlU2VsZlJlZmVyZW5jZXModmFsdWUsIHJvb3RzKSksIGpzb24udG90YWwpO1xuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKHBhZ2luYXRpb24sIHskc2tpcDogdHJ1ZX0pO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoanNvbikpIHtcblx0XHRjb25zdCBsaXN0ID0ganNvbi5tYXAodmFsdWUgPT4gcmVwbGFjZVNlbGZSZWZlcmVuY2VzKHZhbHVlLCByb290cykpO1xuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKGxpc3QsIHskc2tpcDogdHJ1ZX0pO1xuXHR9IGVsc2UgaWYgKGpzb24gaW5zdGFuY2VvZiBTZWxmUmVmZXJlbmNlKSB7XG5cdFx0Ly8gRmluZCB0aGUgcmVmIGluIHRoZSByb290cy5cblx0XHRyZXR1cm4gcm9vdHMuZmluZChpdGVtID0+IGpzb24ubWF0Y2hlcyhpdGVtLnVyaSkpO1xuXHR9IGVsc2UgaWYgKE9iamVjdC5rZXlzKGpzb24pLmxlbmd0aCA+IDApIHtcblx0XHQvLyBOT1RFOiBPYmplY3Qua2V5cygpIHdpbGwgb25seSB3b3JrIGZvciBjdXN0b20gY2xhc3NlcyBvciBvYmplY3RzIGJ1aWx0aW5zIHdpbGwgYmUgZW1wdHksIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC5cblx0XHQvLyBOT1RFOiBBcnJheXMgd2lsbCBhbHNvIHdvcmsgd2l0aCBPYmplY3Qua2V5cygpIGFuZCByZXR1cm4gdGhlIGluZGV4ZXMuXG5cdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoanNvbikpIHtcblx0XHRcdGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNlbGZSZWZlcmVuY2UpIHtcblx0XHRcdFx0Y29uc3QgcmVmID0gcm9vdHMuZmluZChpdGVtID0+IHZhbHVlLm1hdGNoZXMoaXRlbS51cmkpKTtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihyZWYsIHskc2tpcDogdHJ1ZX0pO1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKGpzb24sIHtcblx0XHRcdFx0XHRba2V5XTogcmVmXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmIChpc0pzT2JqZWN0KHZhbHVlKSkge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKGpzb24sIHtcblx0XHRcdFx0XHRba2V5XTogcmVwbGFjZVNlbGZSZWZlcmVuY2VzKHZhbHVlLCByb290cylcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBqc29uO1xuXHR9XG5cblx0cmV0dXJuIGpzb247XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgZmluZCBldmVyeSBvYmplY3Qgd2l0aCB7dXJpfSAoYSBQb3Rpb24gaXRlbSB1c3VhbGx5KSBhbmQgcmV0dXJuIGEgbGlzdCB3aXRoIGFsbC5cbiAqIEBwYXJhbSBqc29uIC0gQSBQb3Rpb24gSlNPTi5cbiAqIEByZXR1cm4ge0FycmF5PEl0ZW0+fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJvb3RzKGpzb246IGFueSk6IEl0ZW1bXSB7XG5cdGNvbnN0IHJvb3RzOiBhbnlbXSA9IFtdO1xuXHRpZiAoQXJyYXkuaXNBcnJheShqc29uKSB8fCBqc29uIGluc3RhbmNlb2YgUGFnaW5hdGlvbikge1xuXHRcdGZvciAoY29uc3QgdmFsdWUgb2YganNvbikge1xuXHRcdFx0cm9vdHMucHVzaCguLi5maW5kUm9vdHModmFsdWUpKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoaXNKc09iamVjdChqc29uKSAmJiBPYmplY3Qua2V5cyhqc29uKS5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKGpzb24udXJpKSB7XG5cdFx0XHRyb290cy5wdXNoKGpzb24pO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IHZhbHVlIG9mIE9iamVjdC52YWx1ZXMoanNvbikpIHtcblx0XHRcdHJvb3RzLnB1c2goLi4uZmluZFJvb3RzKHZhbHVlKSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIGR1cGxpY2F0ZSBlbnRyaWVzLlxuXHRjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cdGZvciAoY29uc3Qgcm9vdCBvZiByb290cykge1xuXHRcdGlmIChyZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gcm9vdC51cmkgPT09IGl0ZW0udXJpKSA9PT0gLTEpIHtcblx0XHRcdHJlc3VsdC5wdXNoKHJvb3QpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59XG5cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlbGYgcmVmZXJlbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1NlbGZSZWZlcmVuY2UodXJpOiBzdHJpbmcpOiBTZWxmUmVmZXJlbmNlIHtcblx0cmV0dXJuIG5ldyBTZWxmUmVmZXJlbmNlKHVyaSk7XG59XG5cblxuLyoqXG4gKiBDb252ZXJ0IGFuIE9iamVjdCB0byBQb3Rpb24gSlNPTlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Qb3Rpb25KU09OKGpzb246IGFueSwgcHJlZml4Pzogc3RyaW5nKToge1trZXk6IHN0cmluZ106IGFueX0ge1xuXHRpZiAoaXNKc09iamVjdChqc29uKSkge1xuXHRcdGlmIChqc29uIGluc3RhbmNlb2YgSXRlbSAmJiB0eXBlb2YganNvbi51cmkgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4geyRyZWY6IGAke2FkZFByZWZpeFRvVVJJKGpzb24udXJpLCBwcmVmaXgpfWB9O1xuXHRcdH0gZWxzZSBpZiAoanNvbiBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRcdHJldHVybiB7JGRhdGU6IGpzb24uZ2V0VGltZSgpfTtcblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoanNvbikpIHtcblx0XHRcdHJldHVybiBqc29uLm1hcChpdGVtID0+IHRvUG90aW9uSlNPTihpdGVtLCBwcmVmaXgpKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9tYXAoanNvbiwga2V5ID0+IHRvU25ha2VDYXNlKGtleSksIHZhbHVlID0+IHRvUG90aW9uSlNPTih2YWx1ZSwgcHJlZml4KSk7XG5cdH1cblx0cmV0dXJuIGpzb247XG59XG5cblxuZXhwb3J0IHR5cGUgUG90aW9uSUQgPSBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xuLyoqXG4gKiBQYXJzZSBhIFBvdGlvbiBJRFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQb3Rpb25JRChpZDogYW55KTogUG90aW9uSUQge1xuXHRpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJyAmJiBpZC5sZW5ndGggPiAwKSB7XG5cdFx0cmV0dXJuIC9eXFxkKyQvLnRlc3QoaWQpID8gcGFyc2VJbnQoaWQsIDEwKSA6IGlkO1xuXHR9IGVsc2UgaWYgKE51bWJlci5pc0ludGVnZXIoaWQpKSB7XG5cdFx0cmV0dXJuIGlkO1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdldCBhIFBvdGlvbiBJRCBmcm9tIGEgVVJJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3Rpb25JRCh1cmk6IHN0cmluZywgcmVzb3VyY2VVUkk6IHN0cmluZyk6IFBvdGlvbklEIHtcblx0Y29uc3QgaW5kZXggPSB1cmkuaW5kZXhPZihgJHtyZXNvdXJjZVVSSX0vYCk7XG5cdGlmIChpbmRleCAhPT0gLTEpIHtcblx0XHRjb25zdCBpZCA9IHVyaS5zdWJzdHJpbmcoaW5kZXgpXG5cdFx0XHQuc3BsaXQoJy8nKVxuXHRcdFx0LnBvcCgpO1xuXHRcdHJldHVybiBwYXJzZVBvdGlvbklEKGlkKTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cblxuXG4vKipcbiAqIEZpbmQgYSBQb3Rpb24gcmVzb3VyY2UgYmFzZWQgb24gVVJJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUG90aW9uUmVzb3VyY2UodXJpOiBzdHJpbmcsIHJlc291cmNlczogUG90aW9uUmVzb3VyY2VzKToge3Jlc291cmNlVVJJOiBzdHJpbmcsIHJlc291cmNlOiB0eXBlb2YgSXRlbX0gfCB1bmRlZmluZWQge1xuXHRjb25zdCBlbnRyeSA9IE9iamVjdC5lbnRyaWVzKHJlc291cmNlcylcblx0XHQuZmluZCgoW3Jlc291cmNlVVJJXSkgPT4gdXJpLmluZGV4T2YoYCR7cmVzb3VyY2VVUkl9L2ApID09PSAwKTtcblx0aWYgKGVudHJ5KSB7XG5cdFx0Y29uc3QgW3Jlc291cmNlVVJJLCByZXNvdXJjZV0gPSBlbnRyeTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0cmVzb3VyY2VVUkksXG5cdFx0XHRyZXNvdXJjZVxuXHRcdH07XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBzb21lIHN0cmluZyBpcyBhIFBvdGlvbiBVUklcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUG90aW9uVVJJKHVyaTogc3RyaW5nLCByZXNvdXJjZXM6IFBvdGlvblJlc291cmNlcyk6IGJvb2xlYW4ge1xuXHRjb25zdCBlbnRyeSA9IGZpbmRQb3Rpb25SZXNvdXJjZSh1cmksIHJlc291cmNlcyk7XG5cdGlmIChlbnRyeSkge1xuXHRcdHJldHVybiBnZXRQb3Rpb25JRCh1cmksIGVudHJ5LnJlc291cmNlVVJJKSAhPT0gbnVsbDtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cblxuLyoqXG4gKiBHZXQgdGhlIFBvdGlvbiBVUkkgZnJvbSBhIFBvdGlvbiBKU09OIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzVHlwZUFuZElkKHskdHlwZSwgJGlkfToge1trZXk6IHN0cmluZ106IGFueX0pOiBib29sZWFuIHtcblx0cmV0dXJuICh0eXBlb2YgJGlkID09PSAnc3RyaW5nJyB8fCBOdW1iZXIuaXNJbnRlZ2VyKCRpZCkpICYmIHR5cGVvZiAkdHlwZSA9PT0gJ3N0cmluZyc7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0UG90aW9uVVJJKHskdXJpLCAkcmVmLCAkdHlwZSwgJGlkfToge1trZXk6IHN0cmluZ106IGFueX0pOiBzdHJpbmcge1xuXHRpZiAodHlwZW9mICR1cmkgPT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCgkdXJpKTtcblx0fSBlbHNlIGlmICh0eXBlb2YgJHJlZiA9PT0gJ3N0cmluZycpIHtcblx0XHRyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KCRyZWYpO1xuXHR9IGVsc2UgaWYgKGhhc1R5cGVBbmRJZCh7JHR5cGUsICRpZH0pKSB7XG5cdFx0cmV0dXJuIGAvJHskdHlwZX0vJHskaWR9YDtcblx0fVxuXHRyZXR1cm4gJyc7XG59XG5cbi8qKlxuICogUmVtb3ZlIHNvbWUgc3RyaW5nIGZyb20gYW5vdGhlciBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVByZWZpeEZyb21VUkkodXJpOiBzdHJpbmcsIHN0cjogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKHVyaS5pbmNsdWRlcyhzdHIpKSB7XG5cdFx0cmV0dXJuIHVyaS5zdWJzdHJpbmcoc3RyLmxlbmd0aCk7XG5cdH1cblx0cmV0dXJuIHVyaTtcbn1cbi8qKlxuICogQWRkIGEgcHJlZml4IHRvIHNvbWUgc3RyaW5nIChpZiBub3QgYWxyZWFkeSB0aGVyZSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFByZWZpeFRvVVJJKHVyaTogc3RyaW5nLCBwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAodHlwZW9mIHByZWZpeCA9PT0gJ3N0cmluZycgJiYgIXVyaS5pbmNsdWRlcyhwcmVmaXgpKSB7XG5cdFx0cmV0dXJuIGAke3ByZWZpeH0ke3VyaX1gO1xuXHR9XG5cdHJldHVybiB1cmk7XG59XG5cblxuLyoqXG4gKiBNZXJnZSBhcnJheSBvZiBvYmplY3RzIGludG8gb25lIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKC4uLm9iamVjdHM6IEFycmF5PHtba2V5OiBzdHJpbmddOiBhbnl9Pik6IGFueSB7XG5cdGNvbnN0IHJlc3VsdCA9IHt9O1xuXHRmb3IgKGNvbnN0IG9iaiBvZiBvYmplY3RzKSB7XG5cdFx0T2JqZWN0LmFzc2lnbihyZXN1bHQsIG9iaik7XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuXG4vKipcbiAqIEluLU1lbW9yeSBjYWNoZVxuICogV2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQgYnkgUG90aW9uIGZvciBjYWNoaW5nIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1lbUNhY2hlPFQgZXh0ZW5kcyBJdGVtPiBpbXBsZW1lbnRzIEl0ZW1DYWNoZTxUPiB7XG5cdHByb3RlY3RlZCBpdGVtczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPFQ+PigpO1xuXG5cdGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLml0ZW1zLmhhcyhrZXkpO1xuXHR9XG5cdGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuXHRcdHJldHVybiB0aGlzLml0ZW1zLmdldChrZXkpO1xuXHR9XG5cdHB1dChrZXk6IHN0cmluZywgaXRlbTogUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuXHRcdHJldHVybiB0aGlzLml0ZW1zLnNldChrZXksIGl0ZW0pXG5cdFx0XHQuZ2V0KGtleSk7XG5cdH1cblxuXHRyZW1vdmUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLml0ZW1zLmRlbGV0ZShrZXkpO1xuXHR9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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Q0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzNCO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNmLENBQUM7QUFORCxzQkFNQztBQUdEOzs7R0FHRztBQUNIO0lBQUE7UUFDVyxVQUFLLEdBQXFCLElBQUksR0FBRyxFQUFzQixDQUFDO0lBZ0JuRSxDQUFDO0lBZEEsc0JBQUcsR0FBSCxVQUFJLEdBQVc7UUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNELHNCQUFHLEdBQUgsVUFBSSxHQUFXO1FBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxzQkFBRyxHQUFILFVBQUksR0FBVyxFQUFFLElBQWdCO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO2FBQzlCLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCx5QkFBTSxHQUFOLFVBQU8sR0FBVztRQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0YsZUFBQztBQUFELENBakJBLEFBaUJDLElBQUE7QUFqQlksNEJBQVEiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6IG1heC1jbGFzc2VzLXBlci1maWxlXG5pbXBvcnQge0l0ZW19IGZyb20gJy4vaXRlbSc7XG5pbXBvcnQge1BhZ2luYXRpb259IGZyb20gJy4vcGFnaW5hdGlvbic7XG5pbXBvcnQge0l0ZW1DYWNoZSwgUG90aW9uUmVzb3VyY2VzfSBmcm9tICcuL3BvdGlvbic7XG5cblxuLyoqXG4gKiBDYW1lbCBjYXNlIHRvIHNuYWtlIGNhc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU25ha2VDYXNlKHN0cjogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICdfJyk6IHN0cmluZyB7XG5cdHJldHVybiBzdHIucmVwbGFjZSgvXFwuPyhbQS1aMC05XSspL2csIChfLCAkMikgPT4gYCR7c2VwYXJhdG9yfSR7JDIudG9Mb3dlckNhc2UoKX1gKVxuXHRcdC5yZXBsYWNlKC9eXy8sICcnKTtcbn1cblxuXG4vKipcbiAqIFNuYWtlIGNhc2UgdG8gY2FtZWwgY2FzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DYW1lbENhc2Uoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gc3RyLnJlcGxhY2UoL18oW2EtejAtOV0pL2csIGcgPT4gZ1sxXS50b1VwcGVyQ2FzZSgpKTtcbn1cblxuXG4vKipcbiAqIE9iamVjdCB0eXBlIGd1YXJkXG4gKiBEb2NzOiBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9hZHZhbmNlZC10eXBlcy5odG1sXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0pzT2JqZWN0KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyB7W2tleTogc3RyaW5nXTsgYW55fSB7XG5cdHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsO1xufVxuLyoqXG4gKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgZW1wdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0RW1wdHkob2JqOiB7fSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdHlwZSBndWFyZFxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGJhbi10eXBlc1xuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmN0aW9uIHtcblx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuXG5leHBvcnQgdHlwZSBLZXlNYXBGdW5jdGlvbiA9IChrZXk6IHN0cmluZykgPT4gc3RyaW5nO1xuZXhwb3J0IHR5cGUgVmFsdWVNYXBGdW5jdGlvbiA9ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4vKipcbiAqIE9iamVjdC5tYXAoKVxuICogTk9URTogVGhpcyBpcyBOT1QgYSByZWN1cnNpdmUgZm4uXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlNYXBGdW5jdGlvbiAtIFRyYW5zZm9ybSBvcGVyYXRpb24gdG8gYXBwbHkgb24gdGhlIGtleS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFt2YWx1ZU1hcEZ1bmN0aW9uXSAtIFRyYW5zZm9ybSBvcGVyYXRpb24gdG8gYXBwbHkgb24gdGhlIHZhbHVlLlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9tYXAob2JqOiB7W2tleTogc3RyaW5nXTogYW55fSwga2V5TWFwRnVuY3Rpb246IEtleU1hcEZ1bmN0aW9uLCB2YWx1ZU1hcEZ1bmN0aW9uPzogVmFsdWVNYXBGdW5jdGlvbik6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcblx0aWYgKGlzSnNPYmplY3Qob2JqKSAmJiAhQXJyYXkuaXNBcnJheShvYmopKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iailcblx0XHRcdC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2lzRnVuY3Rpb24oa2V5TWFwRnVuY3Rpb24pID8ga2V5TWFwRnVuY3Rpb24oa2V5KSA6IGtleSwgaXNGdW5jdGlvbih2YWx1ZU1hcEZ1bmN0aW9uKSA/IHZhbHVlTWFwRnVuY3Rpb24odmFsdWUpIDogdmFsdWVdKVxuXHRcdFx0LnJlZHVjZSgoYToge30sIFtrZXksIHZhbHVlXSkgPT4gT2JqZWN0LmFzc2lnbihhLCB7W2tleV06IHZhbHVlfSksIHt9KTtcblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5cbi8qKlxuICogQWdncmVnYXRlIGEgc3RyIGJhc2VkIG9uIGFuIEVycm9yIG9iamVjdCBhbmQgdXJpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZXJyb3I6IGFueSwgdXJpPzogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgbWVzc2FnZSA9ICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBQb3Rpb24gdHJpZWQgdG8gcmV0cmlldmUgYSByZXNvdXJjZSc7XG5cdGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG5cdFx0cmV0dXJuIGVycm9yLm1lc3NhZ2U7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xuXHRcdHJldHVybiBlcnJvcjtcblx0fSBlbHNlIGlmICh0eXBlb2YgdXJpID09PSAnc3RyaW5nJykge1xuXHRcdHJldHVybiBgJHttZXNzYWdlfSBmcm9tICcke3VyaX0nLmA7XG5cdH1cblx0cmV0dXJuIGAke21lc3NhZ2V9LmA7XG59XG5cblxuLyoqXG4gKiBDb252ZXJ0IEpTT04gc2NoZW1hIHRvIGEgSlMgb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tU2NoZW1hSlNPTihqc29uOiBhbnkpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG5cdGlmIChBcnJheS5pc0FycmF5KGpzb24pKSB7XG5cdFx0cmV0dXJuIGpzb24ubWFwKHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyBmcm9tU2NoZW1hSlNPTih2YWx1ZSkgOiB2YWx1ZSk7XG5cdH0gZWxzZSBpZiAoaXNKc09iamVjdChqc29uKSkge1xuXHRcdHJldHVybiBPYmplY3QuZW50cmllczxhbnk+KGpzb24pXG5cdFx0XHQubWFwKChba2V5LCB2YWx1ZV0pID0+IFt0b0NhbWVsQ2FzZShrZXkpLCB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gZnJvbVNjaGVtYUpTT04odmFsdWUpIDogdmFsdWVdKVxuXHRcdFx0LnJlZHVjZSgoYSwgW2tleSwgdmFsdWVdKSA9PiBPYmplY3QuYXNzaWduKGEsIHtba2V5XTogdmFsdWV9KSwge30pO1xuXHR9XG5cdHJldHVybiBqc29uO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBTZWxmUmVmZXJlbmNlIHtcblx0Y29uc3RydWN0b3IocmVhZG9ubHkgJHVyaTogc3RyaW5nKSB7fVxuXHRtYXRjaGVzKHVyaTogYW55KTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuJHVyaSA9PT0gdXJpO1xuXHR9XG59XG5cbi8qKlxuICogV2FsayB0aHJvdWdoIFBvdGlvbiBKU09OIGFuZCByZXBsYWNlIFNlbGZSZWZlcmVuY2Ugb2JqZWN0cyBmcm9tIHRoZSByb290cyAocm9vdHMgYXJlIGp1c3QgYSBsb3N0IG9mIFBvdGlvbiBpdGVtIHJlZmVyZW5jZXMpLlxuICogTk9URTogVGhpcyBtZXRob2QgbXV0YXRlcyB2YWx1ZXMgYW5kIGFkZHMgYW4gZXh0cmEga2V5IHRvIG9iamVjdHMgKHskY2lyY3VsYXJ9IC0gZm9yIHByZXZlbnRpbmcgYSBzdGFja292ZXJmbG93IGV4Y2VwdGlvbikuXG4gKiBAcGFyYW0ganNvbiAtIEFueSB2YWx1ZSB0byB3YWxrIHRocm91Z2guXG4gKiBAcGFyYW0ge0FycmF5PEl0ZW0+fSByb290cyAtIEEgbGlzdCBvZiBQb3Rpb24gaXRlbXMgZm91bmQgaW4gdGhlIHBhc3NlZCBKU09OLlxuICovXG4vLyBUT0RPOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHRoaXNcbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlU2VsZlJlZmVyZW5jZXMoanNvbjogYW55LCByb290czogSXRlbVtdKTogYW55IHtcblx0aWYgKHR5cGVvZiBqc29uICE9PSAnb2JqZWN0JyB8fCBqc29uID09PSBudWxsKSB7XG5cdFx0cmV0dXJuIGpzb247XG5cdH0gZWxzZSBpZiAoanNvbi4kY2lyY3VsYXIpIHtcblx0XHQvLyBJZiB0aGUgb2JqZWN0IHdlIHdhbnQgdG8gd2FsayB0aHJvdWdoIGlzIGEgcmVmIHdlIGFscmVhZHkgcmVwbGFjZWQsIGp1c3Qgc2tpcCBpdC5cblx0XHRyZXR1cm4ganNvbjtcblx0fSBlbHNlIGlmIChqc29uIGluc3RhbmNlb2YgUGFnaW5hdGlvbikge1xuXHRcdGNvbnN0IHBhZ2luYXRpb24gPSBqc29uLnVwZGF0ZShqc29uLm1hcCh2YWx1ZSA9PiByZXBsYWNlU2VsZlJlZmVyZW5jZXModmFsdWUsIHJvb3RzKSksIGpzb24udG90YWwpO1xuXHRcdHJldHVybiBPYmplY3QuYXNzaWduKHBhZ2luYXRpb24sIHskY2lyY3VsYXI6IHRydWV9KTtcblx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGpzb24pKSB7XG5cdFx0Y29uc3QgbGlzdCA9IGpzb24ubWFwKHZhbHVlID0+IHJlcGxhY2VTZWxmUmVmZXJlbmNlcyh2YWx1ZSwgcm9vdHMpKTtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbihsaXN0LCB7JGNpcmN1bGFyOiB0cnVlfSk7XG5cdH0gZWxzZSBpZiAoanNvbiBpbnN0YW5jZW9mIFNlbGZSZWZlcmVuY2UpIHtcblx0XHQvLyBGaW5kIHRoZSByZWYgaW4gdGhlIHJvb3RzLlxuXHRcdHJldHVybiByb290cy5maW5kKGl0ZW0gPT4ganNvbi5tYXRjaGVzKGl0ZW0udXJpKSk7XG5cdH0gZWxzZSBpZiAoT2JqZWN0LmtleXMoanNvbikubGVuZ3RoID4gMCkge1xuXHRcdC8vIE5PVEU6IE9iamVjdC5rZXlzKCkgd2lsbCBvbmx5IHdvcmsgZm9yIGN1c3RvbSBjbGFzc2VzIG9yIG9iamVjdHMgYnVpbHRpbnMgd2lsbCBiZSBlbXB0eSwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LlxuXHRcdC8vIE5PVEU6IEFycmF5cyB3aWxsIGFsc28gd29yayB3aXRoIE9iamVjdC5rZXlzKCkgYW5kIHJldHVybiB0aGUgaW5kZXhlcy5cblx0XHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhqc29uKSkge1xuXHRcdFx0aWYgKHZhbHVlIGluc3RhbmNlb2YgU2VsZlJlZmVyZW5jZSkge1xuXHRcdFx0XHRjb25zdCByZWYgPSByb290cy5maW5kKGl0ZW0gPT4gdmFsdWUubWF0Y2hlcyhpdGVtLnVyaSkpO1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKHJlZiwgeyRjaXJjdWxhcjogdHJ1ZX0pO1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKGpzb24sIHtcblx0XHRcdFx0XHRba2V5XTogcmVmXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIGlmIChpc0pzT2JqZWN0KHZhbHVlKSkge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKGpzb24sIHtcblx0XHRcdFx0XHRba2V5XTogcmVwbGFjZVNlbGZSZWZlcmVuY2VzKHZhbHVlLCByb290cylcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBqc29uO1xuXHR9XG5cblx0cmV0dXJuIGpzb247XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgZmluZCBldmVyeSBvYmplY3Qgd2l0aCB7dXJpfSAoYSBQb3Rpb24gaXRlbSB1c3VhbGx5KSBhbmQgcmV0dXJuIGEgbGlzdCB3aXRoIGFsbC5cbiAqIEBwYXJhbSBqc29uIC0gQSBQb3Rpb24gSlNPTi5cbiAqIEByZXR1cm4ge0FycmF5PEl0ZW0+fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJvb3RzKGpzb246IGFueSk6IEl0ZW1bXSB7XG5cdGNvbnN0IHJvb3RzOiBhbnlbXSA9IFtdO1xuXHRpZiAoQXJyYXkuaXNBcnJheShqc29uKSB8fCBqc29uIGluc3RhbmNlb2YgUGFnaW5hdGlvbikge1xuXHRcdGZvciAoY29uc3QgdmFsdWUgb2YganNvbikge1xuXHRcdFx0cm9vdHMucHVzaCguLi5maW5kUm9vdHModmFsdWUpKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoaXNKc09iamVjdChqc29uKSAmJiBPYmplY3Qua2V5cyhqc29uKS5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKGpzb24udXJpKSB7XG5cdFx0XHRyb290cy5wdXNoKGpzb24pO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IHZhbHVlIG9mIE9iamVjdC52YWx1ZXMoanNvbikpIHtcblx0XHRcdHJvb3RzLnB1c2goLi4uZmluZFJvb3RzKHZhbHVlKSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIGR1cGxpY2F0ZSBlbnRyaWVzLlxuXHRjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG5cdGZvciAoY29uc3Qgcm9vdCBvZiByb290cykge1xuXHRcdGlmIChyZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gcm9vdC51cmkgPT09IGl0ZW0udXJpKSA9PT0gLTEpIHtcblx0XHRcdHJlc3VsdC5wdXNoKHJvb3QpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogUmVtb3ZlIHskY2lyY3VsYXJ9IGZyb20gYXJyYXlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDaXJjdWxhckZsYWcoanNvbjogYW55KTogYW55IHtcblx0aWYgKEFycmF5LmlzQXJyYXkoanNvbikpIHtcblx0XHRpZiAoKGpzb24gYXMgYW55KS4kY2lyY3VsYXIpIHtcblx0XHRcdGRlbGV0ZSAoanNvbiBhcyBhbnkpLiRjaXJjdWxhcjtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCB2YWx1ZSBvZiBPYmplY3QudmFsdWVzKGpzb24pKSB7XG5cdFx0XHRyZW1vdmVDaXJjdWxhckZsYWcodmFsdWUpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4ganNvbjtcbn1cblxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc2VsZiByZWZlcmVuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU2VsZlJlZmVyZW5jZSh1cmk6IHN0cmluZyk6IFNlbGZSZWZlcmVuY2Uge1xuXHRyZXR1cm4gbmV3IFNlbGZSZWZlcmVuY2UodXJpKTtcbn1cblxuXG4vKipcbiAqIENvbnZlcnQgYW4gT2JqZWN0IHRvIFBvdGlvbiBKU09OXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BvdGlvbkpTT04oanNvbjogYW55LCBwcmVmaXg/OiBzdHJpbmcpOiB7W2tleTogc3RyaW5nXTogYW55fSB7XG5cdGlmIChpc0pzT2JqZWN0KGpzb24pKSB7XG5cdFx0aWYgKGpzb24gaW5zdGFuY2VvZiBJdGVtICYmIHR5cGVvZiBqc29uLnVyaSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHJldHVybiB7JHJlZjogYCR7YWRkUHJlZml4VG9VUkkoanNvbi51cmksIHByZWZpeCl9YH07XG5cdFx0fSBlbHNlIGlmIChqc29uIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0cmV0dXJuIHskZGF0ZToganNvbi5nZXRUaW1lKCl9O1xuXHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShqc29uKSkge1xuXHRcdFx0cmV0dXJuIGpzb24ubWFwKGl0ZW0gPT4gdG9Qb3Rpb25KU09OKGl0ZW0sIHByZWZpeCkpO1xuXHRcdH1cblx0XHRyZXR1cm4gb21hcChqc29uLCBrZXkgPT4gdG9TbmFrZUNhc2Uoa2V5KSwgdmFsdWUgPT4gdG9Qb3Rpb25KU09OKHZhbHVlLCBwcmVmaXgpKTtcblx0fVxuXHRyZXR1cm4ganNvbjtcbn1cblxuXG5leHBvcnQgdHlwZSBQb3Rpb25JRCA9IHN0cmluZyB8IG51bWJlciB8IG51bGw7XG4vKipcbiAqIFBhcnNlIGEgUG90aW9uIElEXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBvdGlvbklEKGlkOiBhbnkpOiBQb3Rpb25JRCB7XG5cdGlmICh0eXBlb2YgaWQgPT09ICdzdHJpbmcnICYmIGlkLmxlbmd0aCA+IDApIHtcblx0XHRyZXR1cm4gL15cXGQrJC8udGVzdChpZCkgPyBwYXJzZUludChpZCwgMTApIDogaWQ7XG5cdH0gZWxzZSBpZiAoTnVtYmVyLmlzSW50ZWdlcihpZCkpIHtcblx0XHRyZXR1cm4gaWQ7XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogR2V0IGEgUG90aW9uIElEIGZyb20gYSBVUklcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBvdGlvbklEKHVyaTogc3RyaW5nLCByZXNvdXJjZVVSSTogc3RyaW5nKTogUG90aW9uSUQge1xuXHRjb25zdCBpbmRleCA9IHVyaS5pbmRleE9mKGAke3Jlc291cmNlVVJJfS9gKTtcblx0aWYgKGluZGV4ICE9PSAtMSkge1xuXHRcdGNvbnN0IGlkID0gdXJpLnN1YnN0cmluZyhpbmRleClcblx0XHRcdC5zcGxpdCgnLycpXG5cdFx0XHQucG9wKCk7XG5cdFx0cmV0dXJuIHBhcnNlUG90aW9uSUQoaWQpO1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuXG5cbi8qKlxuICogRmluZCBhIFBvdGlvbiByZXNvdXJjZSBiYXNlZCBvbiBVUklcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQb3Rpb25SZXNvdXJjZSh1cmk6IHN0cmluZywgcmVzb3VyY2VzOiBQb3Rpb25SZXNvdXJjZXMpOiB7cmVzb3VyY2VVUkk6IHN0cmluZywgcmVzb3VyY2U6IHR5cGVvZiBJdGVtfSB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IGVudHJ5ID0gT2JqZWN0LmVudHJpZXMocmVzb3VyY2VzKVxuXHRcdC5maW5kKChbcmVzb3VyY2VVUkldKSA9PiB1cmkuaW5kZXhPZihgJHtyZXNvdXJjZVVSSX0vYCkgPT09IDApO1xuXHRpZiAoZW50cnkpIHtcblx0XHRjb25zdCBbcmVzb3VyY2VVUkksIHJlc291cmNlXSA9IGVudHJ5O1xuXHRcdHJldHVybiB7XG5cdFx0XHRyZXNvdXJjZVVSSSxcblx0XHRcdHJlc291cmNlXG5cdFx0fTtcblx0fVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHNvbWUgc3RyaW5nIGlzIGEgUG90aW9uIFVSSVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb3Rpb25VUkkodXJpOiBzdHJpbmcsIHJlc291cmNlczogUG90aW9uUmVzb3VyY2VzKTogYm9vbGVhbiB7XG5cdGNvbnN0IGVudHJ5ID0gZmluZFBvdGlvblJlc291cmNlKHVyaSwgcmVzb3VyY2VzKTtcblx0aWYgKGVudHJ5KSB7XG5cdFx0cmV0dXJuIGdldFBvdGlvbklEKHVyaSwgZW50cnkucmVzb3VyY2VVUkkpICE9PSBudWxsO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuXG4vKipcbiAqIEdldCB0aGUgUG90aW9uIFVSSSBmcm9tIGEgUG90aW9uIEpTT04gb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNUeXBlQW5kSWQoeyR0eXBlLCAkaWR9OiB7W2tleTogc3RyaW5nXTogYW55fSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gKHR5cGVvZiAkaWQgPT09ICdzdHJpbmcnIHx8IE51bWJlci5pc0ludGVnZXIoJGlkKSkgJiYgdHlwZW9mICR0eXBlID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3Rpb25VUkkoeyR1cmksICRyZWYsICR0eXBlLCAkaWR9OiB7W2tleTogc3RyaW5nXTogYW55fSk6IHN0cmluZyB7XG5cdGlmICh0eXBlb2YgJHVyaSA9PT0gJ3N0cmluZycpIHtcblx0XHRyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KCR1cmkpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiAkcmVmID09PSAnc3RyaW5nJykge1xuXHRcdHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoJHJlZik7XG5cdH0gZWxzZSBpZiAoaGFzVHlwZUFuZElkKHskdHlwZSwgJGlkfSkpIHtcblx0XHRyZXR1cm4gYC8keyR0eXBlfS8keyRpZH1gO1xuXHR9XG5cdHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBSZW1vdmUgc29tZSBzdHJpbmcgZnJvbSBhbm90aGVyIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUHJlZml4RnJvbVVSSSh1cmk6IHN0cmluZywgc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAodXJpLmluY2x1ZGVzKHN0cikpIHtcblx0XHRyZXR1cm4gdXJpLnN1YnN0cmluZyhzdHIubGVuZ3RoKTtcblx0fVxuXHRyZXR1cm4gdXJpO1xufVxuLyoqXG4gKiBBZGQgYSBwcmVmaXggdG8gc29tZSBzdHJpbmcgKGlmIG5vdCBhbHJlYWR5IHRoZXJlKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkUHJlZml4VG9VUkkodXJpOiBzdHJpbmcsIHByZWZpeD86IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICh0eXBlb2YgcHJlZml4ID09PSAnc3RyaW5nJyAmJiAhdXJpLmluY2x1ZGVzKHByZWZpeCkpIHtcblx0XHRyZXR1cm4gYCR7cHJlZml4fSR7dXJpfWA7XG5cdH1cblx0cmV0dXJuIHVyaTtcbn1cblxuXG4vKipcbiAqIE1lcmdlIGFycmF5IG9mIG9iamVjdHMgaW50byBvbmUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoLi4ub2JqZWN0czogQXJyYXk8e1trZXk6IHN0cmluZ106IGFueX0+KTogYW55IHtcblx0Y29uc3QgcmVzdWx0ID0ge307XG5cdGZvciAoY29uc3Qgb2JqIG9mIG9iamVjdHMpIHtcblx0XHRPYmplY3QuYXNzaWduKHJlc3VsdCwgb2JqKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5cbi8qKlxuICogSW4tTWVtb3J5IGNhY2hlXG4gKiBXaWxsIGJlIHVzZWQgYnkgZGVmYXVsdCBieSBQb3Rpb24gZm9yIGNhY2hpbmcgcmVzb3VyY2VzLlxuICovXG5leHBvcnQgY2xhc3MgTWVtQ2FjaGU8VCBleHRlbmRzIEl0ZW0+IGltcGxlbWVudHMgSXRlbUNhY2hlPFQ+IHtcblx0cHJvdGVjdGVkIGl0ZW1zOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8VD4+KCk7XG5cblx0aGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuaXRlbXMuaGFzKGtleSk7XG5cdH1cblx0Z2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG5cdFx0cmV0dXJuIHRoaXMuaXRlbXMuZ2V0KGtleSk7XG5cdH1cblx0cHV0KGtleTogc3RyaW5nLCBpdGVtOiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG5cdFx0cmV0dXJuIHRoaXMuaXRlbXMuc2V0KGtleSwgaXRlbSlcblx0XHRcdC5nZXQoa2V5KTtcblx0fVxuXG5cdHJlbW92ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuaXRlbXMuZGVsZXRlKGtleSk7XG5cdH1cbn1cbiJdfQ==

@@ -1,1 +0,1 @@

[{"__symbolic":"module","version":3,"metadata":{"toSnakeCase":{"__symbolic":"function","parameters":["str","separator"],"value":{"__symbolic":"error","message":"Expression form not supported","line":11,"character":11},"defaults":[null,"_"]},"toCamelCase":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"error","message":"Expression form not supported","line":19,"character":20}},"isJsObject":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":28,"character":8},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"value"},"right":null}}},"isObjectEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"keys"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"member":"length"},"right":0}},"isFunction":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":42,"character":8},"right":"function"}},"omap":{"__symbolic":"function"},"getErrorMessage":{"__symbolic":"function"},"fromSchemaJSON":{"__symbolic":"function"},"SelfReference":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"matches":[{"__symbolic":"method"}]}},"replaceSelfReferences":{"__symbolic":"function"},"findRoots":{"__symbolic":"function"},"toSelfReference":{"__symbolic":"function","parameters":["uri"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SelfReference"},"arguments":[{"__symbolic":"reference","name":"uri"}]}},"toPotionJSON":{"__symbolic":"function"},"parsePotionID":{"__symbolic":"function"},"getPotionID":{"__symbolic":"function"},"findPotionResource":{"__symbolic":"function"},"isPotionURI":{"__symbolic":"function"},"hasTypeAndId":{"__symbolic":"function","parameters":["$type","$id"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":265,"character":9},"right":"string"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Number"},"member":"isInteger"},"arguments":[{"__symbolic":"reference","name":"$id"}]}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":265,"character":62},"right":"string"}}},"getPotionURI":{"__symbolic":"function"},"removePrefixFromURI":{"__symbolic":"function"},"addPrefixToURI":{"__symbolic":"function"},"merge":{"__symbolic":"function"},"MemCache":{"__symbolic":"class","arity":1,"members":{"has":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"toSnakeCase":{"__symbolic":"function","parameters":["str","separator"],"value":{"__symbolic":"error","message":"Expression form not supported","line":11,"character":11},"defaults":[null,"_"]},"toCamelCase":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"error","message":"Expression form not supported","line":19,"character":20}},"isJsObject":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":28,"character":8},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"value"},"right":null}}},"isObjectEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"keys"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"member":"length"},"right":0}},"isFunction":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":42,"character":8},"right":"function"}},"omap":{"__symbolic":"function"},"getErrorMessage":{"__symbolic":"function"},"fromSchemaJSON":{"__symbolic":"function"},"SelfReference":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"matches":[{"__symbolic":"method"}]}},"replaceSelfReferences":{"__symbolic":"function"},"findRoots":{"__symbolic":"function"},"toSelfReference":{"__symbolic":"function","parameters":["uri"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SelfReference"},"arguments":[{"__symbolic":"reference","name":"uri"}]}},"toPotionJSON":{"__symbolic":"function"},"parsePotionID":{"__symbolic":"function"},"getPotionID":{"__symbolic":"function"},"findPotionResource":{"__symbolic":"function"},"isPotionURI":{"__symbolic":"function"},"hasTypeAndId":{"__symbolic":"function","parameters":["$type","$id"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":265,"character":9},"right":"string"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Number"},"member":"isInteger"},"arguments":[{"__symbolic":"reference","name":"$id"}]}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":265,"character":62},"right":"string"}}},"getPotionURI":{"__symbolic":"function"},"removePrefixFromURI":{"__symbolic":"function"},"addPrefixToURI":{"__symbolic":"function"},"merge":{"__symbolic":"function"},"MemCache":{"__symbolic":"class","arity":1,"members":{"has":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}}}}]
[{"__symbolic":"module","version":3,"metadata":{"toSnakeCase":{"__symbolic":"function","parameters":["str","separator"],"value":{"__symbolic":"error","message":"Expression form not supported","line":11,"character":11},"defaults":[null,"_"]},"toCamelCase":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"error","message":"Expression form not supported","line":19,"character":20}},"isJsObject":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":28,"character":8},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"value"},"right":null}}},"isObjectEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"keys"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"member":"length"},"right":0}},"isFunction":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":42,"character":8},"right":"function"}},"omap":{"__symbolic":"function"},"getErrorMessage":{"__symbolic":"function"},"fromSchemaJSON":{"__symbolic":"function"},"SelfReference":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"matches":[{"__symbolic":"method"}]}},"replaceSelfReferences":{"__symbolic":"function"},"findRoots":{"__symbolic":"function"},"removeCircularFlag":{"__symbolic":"function"},"toSelfReference":{"__symbolic":"function","parameters":["uri"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SelfReference"},"arguments":[{"__symbolic":"reference","name":"uri"}]}},"toPotionJSON":{"__symbolic":"function"},"parsePotionID":{"__symbolic":"function"},"getPotionID":{"__symbolic":"function"},"findPotionResource":{"__symbolic":"function"},"isPotionURI":{"__symbolic":"function"},"hasTypeAndId":{"__symbolic":"function","parameters":["$type","$id"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":280,"character":9},"right":"string"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Number"},"member":"isInteger"},"arguments":[{"__symbolic":"reference","name":"$id"}]}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":280,"character":62},"right":"string"}}},"getPotionURI":{"__symbolic":"function"},"removePrefixFromURI":{"__symbolic":"function"},"addPrefixToURI":{"__symbolic":"function"},"merge":{"__symbolic":"function"},"MemCache":{"__symbolic":"class","arity":1,"members":{"has":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"toSnakeCase":{"__symbolic":"function","parameters":["str","separator"],"value":{"__symbolic":"error","message":"Expression form not supported","line":11,"character":11},"defaults":[null,"_"]},"toCamelCase":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"error","message":"Expression form not supported","line":19,"character":20}},"isJsObject":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":28,"character":8},"right":"object"},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"reference","name":"value"},"right":null}}},"isObjectEmpty":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Object"},"member":"keys"},"arguments":[{"__symbolic":"reference","name":"obj"}]},"member":"length"},"right":0}},"isFunction":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":42,"character":8},"right":"function"}},"omap":{"__symbolic":"function"},"getErrorMessage":{"__symbolic":"function"},"fromSchemaJSON":{"__symbolic":"function"},"SelfReference":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"matches":[{"__symbolic":"method"}]}},"replaceSelfReferences":{"__symbolic":"function"},"findRoots":{"__symbolic":"function"},"removeCircularFlag":{"__symbolic":"function"},"toSelfReference":{"__symbolic":"function","parameters":["uri"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"SelfReference"},"arguments":[{"__symbolic":"reference","name":"uri"}]}},"toPotionJSON":{"__symbolic":"function"},"parsePotionID":{"__symbolic":"function"},"getPotionID":{"__symbolic":"function"},"findPotionResource":{"__symbolic":"function"},"isPotionURI":{"__symbolic":"function"},"hasTypeAndId":{"__symbolic":"function","parameters":["$type","$id"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":280,"character":9},"right":"string"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Number"},"member":"isInteger"},"arguments":[{"__symbolic":"reference","name":"$id"}]}},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"error","message":"Expression form not supported","line":280,"character":62},"right":"string"}}},"getPotionURI":{"__symbolic":"function"},"removePrefixFromURI":{"__symbolic":"function"},"addPrefixToURI":{"__symbolic":"function"},"merge":{"__symbolic":"function"},"MemCache":{"__symbolic":"class","arity":1,"members":{"has":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}}}}]
{
"name": "potion-client",
"version": "1.5.3",
"version": "1.5.4",
"description": "A ES6 client for APIs written in Flask-Potion",

@@ -82,6 +82,3 @@ "keywords": [

"node": ">=7.4"
},
"publishConfig": {
"tag": "latest"
}
}
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