Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@dataform/core

Package Overview
Dependencies
Maintainers
2
Versions
250
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dataform/core - npm Package Compare versions

Comparing version 1.0.4 to 1.0.5

2

assertion.d.ts

@@ -11,2 +11,3 @@ /// <amd-module name="@dataform/core/assertion" />

dependencies(value: string | string[]): this;
tags(value: string | string[]): this;
compile(): dataform.IAssertion;

@@ -20,3 +21,4 @@ }

dependencies(name: string | string[]): string;
tags(name: string | string[]): string;
apply<T>(value: AContextable<T>): T;
}

@@ -30,2 +30,11 @@ (function (factory) {

}
tags(value) {
const newTags = typeof value === "string" ? [value] : value;
newTags.forEach(t => {
if (this.proto.tags.indexOf(t) < 0) {
this.proto.tags.push(t);
}
});
return this;
}
compile() {

@@ -54,2 +63,6 @@ const context = new AssertionContext(this);

}
tags(name) {
this.assertion.tags(name);
return "";
}
apply(value) {

@@ -66,2 +79,2 @@ if (typeof value === "function") {

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9hc3NlcnRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFDQSw2Q0FBNEM7SUFJNUMsTUFBYSxTQUFTO1FBQXRCO1lBQ1MsVUFBSyxHQUF3QixpQkFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQStCbEUsQ0FBQztRQXZCUSxLQUFLLENBQUMsS0FBMkI7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxZQUFZLENBQUMsS0FBd0I7WUFDMUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDcEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxPQUFPO1lBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUzQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztZQUVoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQztLQUNGO0lBaENELDhCQWdDQztJQUVELE1BQWEsZ0JBQWdCO1FBRzNCLFlBQVksU0FBb0I7WUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDN0IsQ0FBQztRQUVNLEdBQUcsQ0FBQyxJQUFZO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRU0sT0FBTyxDQUFDLElBQVk7WUFDekIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVNLFlBQVksQ0FBQyxJQUF1QjtZQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxLQUFLLENBQUksS0FBc0I7WUFDcEMsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7Z0JBQy9CLE9BQVEsS0FBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDO0tBQ0Y7SUE1QkQsNENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9zZXNzaW9uXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbmV4cG9ydCB0eXBlIEFDb250ZXh0YWJsZTxUPiA9IFQgfCAoKGN0eDogQXNzZXJ0aW9uQ29udGV4dCkgPT4gVCk7XG5cbmV4cG9ydCBjbGFzcyBBc3NlcnRpb24ge1xuICBwdWJsaWMgcHJvdG86IGRhdGFmb3JtLklBc3NlcnRpb24gPSBkYXRhZm9ybS5Bc3NlcnRpb24uY3JlYXRlKCk7XG5cbiAgLy8gSG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgU2Vzc2lvbiBpbnN0YW5jZS5cbiAgcHVibGljIHNlc3Npb246IFNlc3Npb247XG5cbiAgLy8gV2UgZGVsYXkgY29udGV4dGlmaWNhdGlvbiB1bnRpbCB0aGUgZmluYWwgY29tcGlsZSBzdGVwLCBzbyBob2xkIHRoZXNlIGhlcmUgZm9yIG5vdy5cbiAgcHJpdmF0ZSBjb250ZXh0YWJsZVF1ZXJ5OiBBQ29udGV4dGFibGU8c3RyaW5nPjtcblxuICBwdWJsaWMgcXVlcnkocXVlcnk6IEFDb250ZXh0YWJsZTxzdHJpbmc+KSB7XG4gICAgdGhpcy5jb250ZXh0YWJsZVF1ZXJ5ID0gcXVlcnk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVwZW5kZW5jaWVzKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGNvbnN0IG5ld0RlcGVuZGVuY2llcyA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IFt2YWx1ZV0gOiB2YWx1ZTtcbiAgICBuZXdEZXBlbmRlbmNpZXMuZm9yRWFjaChkID0+IHtcbiAgICAgIGlmICh0aGlzLnByb3RvLmRlcGVuZGVuY2llcy5pbmRleE9mKGQpIDwgMCkge1xuICAgICAgICB0aGlzLnByb3RvLmRlcGVuZGVuY2llcy5wdXNoKGQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGUoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBBc3NlcnRpb25Db250ZXh0KHRoaXMpO1xuXG4gICAgY29uc3QgYXBwbGllZFF1ZXJ5ID0gY29udGV4dC5hcHBseSh0aGlzLmNvbnRleHRhYmxlUXVlcnkpO1xuICAgIHRoaXMucHJvdG8ucXVlcnkgPSBhcHBsaWVkUXVlcnk7XG5cbiAgICByZXR1cm4gdGhpcy5wcm90bztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXNzZXJ0aW9uQ29udGV4dCB7XG4gIHByaXZhdGUgYXNzZXJ0aW9uPzogQXNzZXJ0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGFzc2VydGlvbjogQXNzZXJ0aW9uKSB7XG4gICAgdGhpcy5hc3NlcnRpb24gPSBhc3NlcnRpb247XG4gIH1cblxuICBwdWJsaWMgcmVmKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuYXNzZXJ0aW9uLmRlcGVuZGVuY2llcyhuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0aW9uLnNlc3Npb24ucmVzb2x2ZShuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXMobmFtZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0aGlzLmFzc2VydGlvbi5kZXBlbmRlbmNpZXMobmFtZSk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgYXBwbHk8VD4odmFsdWU6IEFDb250ZXh0YWJsZTxUPik6IFQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuICh2YWx1ZSBhcyBhbnkpKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9hc3NlcnRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFDQSw2Q0FBNEM7SUFJNUMsTUFBYSxTQUFTO1FBQXRCO1lBQ1MsVUFBSyxHQUF3QixpQkFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQXlDbEUsQ0FBQztRQWpDUSxLQUFLLENBQUMsS0FBMkI7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxZQUFZLENBQUMsS0FBd0I7WUFDMUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDcEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxJQUFJLENBQUMsS0FBd0I7WUFDbEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDNUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3pCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxPQUFPO1lBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUzQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztZQUVoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQztLQUNGO0lBMUNELDhCQTBDQztJQUVELE1BQWEsZ0JBQWdCO1FBRzNCLFlBQVksU0FBb0I7WUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDN0IsQ0FBQztRQUVNLEdBQUcsQ0FBQyxJQUFZO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRU0sT0FBTyxDQUFDLElBQVk7WUFDekIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVNLFlBQVksQ0FBQyxJQUF1QjtZQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDTSxJQUFJLENBQUMsSUFBdUI7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sS0FBSyxDQUFJLEtBQXNCO1lBQ3BDLElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFO2dCQUMvQixPQUFRLEtBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxPQUFPLEtBQUssQ0FBQzthQUNkO1FBQ0gsQ0FBQztLQUNGO0lBaENELDRDQWdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlc3Npb24gfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvc2Vzc2lvblwiO1xuaW1wb3J0IHsgZGF0YWZvcm0gfSBmcm9tIFwiQGRhdGFmb3JtL3Byb3Rvc1wiO1xuXG5leHBvcnQgdHlwZSBBQ29udGV4dGFibGU8VD4gPSBUIHwgKChjdHg6IEFzc2VydGlvbkNvbnRleHQpID0+IFQpO1xuXG5leHBvcnQgY2xhc3MgQXNzZXJ0aW9uIHtcbiAgcHVibGljIHByb3RvOiBkYXRhZm9ybS5JQXNzZXJ0aW9uID0gZGF0YWZvcm0uQXNzZXJ0aW9uLmNyZWF0ZSgpO1xuXG4gIC8vIEhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIFNlc3Npb24gaW5zdGFuY2UuXG4gIHB1YmxpYyBzZXNzaW9uOiBTZXNzaW9uO1xuXG4gIC8vIFdlIGRlbGF5IGNvbnRleHRpZmljYXRpb24gdW50aWwgdGhlIGZpbmFsIGNvbXBpbGUgc3RlcCwgc28gaG9sZCB0aGVzZSBoZXJlIGZvciBub3cuXG4gIHByaXZhdGUgY29udGV4dGFibGVRdWVyeTogQUNvbnRleHRhYmxlPHN0cmluZz47XG5cbiAgcHVibGljIHF1ZXJ5KHF1ZXJ5OiBBQ29udGV4dGFibGU8c3RyaW5nPikge1xuICAgIHRoaXMuY29udGV4dGFibGVRdWVyeSA9IHF1ZXJ5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlcGVuZGVuY2llcyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBjb25zdCBuZXdEZXBlbmRlbmNpZXMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBbdmFsdWVdIDogdmFsdWU7XG4gICAgbmV3RGVwZW5kZW5jaWVzLmZvckVhY2goZCA9PiB7XG4gICAgICBpZiAodGhpcy5wcm90by5kZXBlbmRlbmNpZXMuaW5kZXhPZihkKSA8IDApIHtcbiAgICAgICAgdGhpcy5wcm90by5kZXBlbmRlbmNpZXMucHVzaChkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB0YWdzKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGNvbnN0IG5ld1RhZ3MgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBbdmFsdWVdIDogdmFsdWU7XG4gICAgbmV3VGFncy5mb3JFYWNoKHQgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvdG8udGFncy5pbmRleE9mKHQpIDwgMCkge1xuICAgICAgICB0aGlzLnByb3RvLnRhZ3MucHVzaCh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjb21waWxlKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQXNzZXJ0aW9uQ29udGV4dCh0aGlzKTtcblxuICAgIGNvbnN0IGFwcGxpZWRRdWVyeSA9IGNvbnRleHQuYXBwbHkodGhpcy5jb250ZXh0YWJsZVF1ZXJ5KTtcbiAgICB0aGlzLnByb3RvLnF1ZXJ5ID0gYXBwbGllZFF1ZXJ5O1xuXG4gICAgcmV0dXJuIHRoaXMucHJvdG87XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2VydGlvbkNvbnRleHQge1xuICBwcml2YXRlIGFzc2VydGlvbj86IEFzc2VydGlvbjtcblxuICBjb25zdHJ1Y3Rvcihhc3NlcnRpb246IEFzc2VydGlvbikge1xuICAgIHRoaXMuYXNzZXJ0aW9uID0gYXNzZXJ0aW9uO1xuICB9XG5cbiAgcHVibGljIHJlZihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFzc2VydGlvbi5kZXBlbmRlbmNpZXMobmFtZSk7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFzc2VydGlvbi5zZXNzaW9uLnJlc29sdmUobmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZGVwZW5kZW5jaWVzKG5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5hc3NlcnRpb24uZGVwZW5kZW5jaWVzKG5hbWUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIHB1YmxpYyB0YWdzKG5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5hc3NlcnRpb24udGFncyhuYW1lKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseTxUPih2YWx1ZTogQUNvbnRleHRhYmxlPFQ+KTogVCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gKHZhbHVlIGFzIGFueSkodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==

3

compilers.js

@@ -92,2 +92,3 @@ (function (factory) {

dependencies: [],
tags: [],
...parsedConfig

@@ -184,2 +185,2 @@ };

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21waWxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSx3REFBNEQ7SUFDNUQsd0RBQTREO0lBQzVELDREQUEwRTtJQUMxRSxnREFBb0Q7SUFDcEQsOENBQThDO0lBRTlDLFNBQWdCLE9BQU8sQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUNoRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxXQUFXLENBQUMsdUJBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNoQyxPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM3QixPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixPQUFPLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFkRCwwQkFjQztJQUVELFNBQVMsZUFBZSxDQUFDLElBQVksRUFBRSxJQUFZO1FBQ2pELE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE1BQU0saUJBQWlCLEdBQUcsd0JBQXdCLENBQUMsb0JBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQzVFLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLFVBQVUsSUFBSSxhQUFhLENB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QyxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzs7Ozs7O01BTTFELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FDOUIsVUFBVSxDQUFDLEVBQUUsQ0FDWDt3QkFDZ0IsVUFBVTtZQUN0QixPQUFPLENBQUMsRUFBRTtxQkFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs7U0FFckMsQ0FDSjs7UUFFRyxPQUFPLENBQUMsRUFBRTtpQkFDRCxPQUFPLENBQUMsR0FBRzs7Ozs7Ozs7RUFRMUIsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLHdCQUF3QixDQUFDLFNBQWM7UUFDOUMsT0FBTztZQUNMLEdBQUcsSUFBSSxHQUFHLENBQ1IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxPQUFPLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxVQUFVLEVBQUU7b0JBQ2pELE9BQU8sS0FBSyxDQUFDO2lCQUNkO2dCQUNELElBQUksWUFBWSxLQUFLLGFBQWEsRUFBRTtvQkFDbEMsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FDSDtTQUNGLENBQUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXJ0aW9uQ29udGV4dCB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9hc3NlcnRpb25cIjtcbmltcG9ydCB7IE9wZXJhdGlvbkNvbnRleHQgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvb3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBJU3FseFBhcnNlUmVzdWx0cywgcGFyc2VTcWx4IH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3NxbHhfcGFyc2VyXCI7XG5pbXBvcnQgeyBUYWJsZUNvbnRleHQgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvdGFibGVcIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCJAZGF0YWZvcm0vY29yZS91dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZShjb2RlOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBpZiAocGF0aC5lbmRzV2l0aChcIi5zcWx4XCIpKSB7XG4gICAgcmV0dXJuIGNvbXBpbGVTcWx4KHBhcnNlU3FseChjb2RlKSwgcGF0aCk7XG4gIH1cbiAgaWYgKHBhdGguZW5kc1dpdGgoXCIuYXNzZXJ0LnNxbFwiKSkge1xuICAgIHJldHVybiBjb21waWxlQXNzZXJ0aW9uU3FsKGNvZGUsIHBhdGgpO1xuICB9XG4gIGlmIChwYXRoLmVuZHNXaXRoKFwiLm9wcy5zcWxcIikpIHtcbiAgICByZXR1cm4gY29tcGlsZU9wZXJhdGlvblNxbChjb2RlLCBwYXRoKTtcbiAgfVxuICBpZiAocGF0aC5lbmRzV2l0aChcIi5zcWxcIikpIHtcbiAgICByZXR1cm4gY29tcGlsZVRhYmxlU3FsKGNvZGUsIHBhdGgpO1xuICB9XG4gIHJldHVybiBjb2RlO1xufVxuXG5mdW5jdGlvbiBjb21waWxlVGFibGVTcWwoY29kZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgeyBzcWwsIGpzIH0gPSBleHRyYWN0SnNCbG9ja3MoY29kZSk7XG4gIGNvbnN0IGZ1bmN0aW9uc0JpbmRpbmdzID0gZ2V0RnVuY3Rpb25Qcm9wZXJ0eU5hbWVzKFRhYmxlQ29udGV4dC5wcm90b3R5cGUpLm1hcChcbiAgICBuYW1lID0+IGBjb25zdCAke25hbWV9ID0gY3R4LiR7bmFtZX0uYmluZChjdHgpO2BcbiAgKTtcblxuICByZXR1cm4gYFxuICBwdWJsaXNoKFwiJHt1dGlscy5iYXNlRmlsZW5hbWUocGF0aCl9XCIpLnF1ZXJ5KGN0eCA9PiB7XG4gICAgJHtmdW5jdGlvbnNCaW5kaW5ncy5qb2luKFwiXFxuXCIpfVxuICAgICR7anN9XG4gICAgcmV0dXJuIFxcYCR7c3FsfVxcYDtcbiAgfSlgO1xufVxuXG5mdW5jdGlvbiBjb21waWxlT3BlcmF0aW9uU3FsKGNvZGU6IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IHsgc3FsLCBqcyB9ID0gZXh0cmFjdEpzQmxvY2tzKGNvZGUpO1xuICBjb25zdCBmdW5jdGlvbnNCaW5kaW5ncyA9IGdldEZ1bmN0aW9uUHJvcGVydHlOYW1lcyhPcGVyYXRpb25Db250ZXh0LnByb3RvdHlwZSkubWFwKFxuICAgIG5hbWUgPT4gYGNvbnN0ICR7bmFtZX0gPSBjdHguJHtuYW1lfS5iaW5kKGN0eCk7YFxuICApO1xuXG4gIHJldHVybiBgXG4gIG9wZXJhdGUoXCIke3V0aWxzLmJhc2VGaWxlbmFtZShwYXRoKX1cIikucXVlcmllcyhjdHggPT4ge1xuICAgICR7ZnVuY3Rpb25zQmluZGluZ3Muam9pbihcIlxcblwiKX1cbiAgICAke2pzfVxuICAgIHJldHVybiBcXGAke3NxbH1cXGAuc3BsaXQoXCJcXFxcbi0tLVxcXFxuXCIpO1xuICB9KWA7XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVBc3NlcnRpb25TcWwoY29kZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgeyBzcWwsIGpzIH0gPSBleHRyYWN0SnNCbG9ja3MoY29kZSk7XG4gIGNvbnN0IGZ1bmN0aW9uc0JpbmRpbmdzID0gZ2V0RnVuY3Rpb25Qcm9wZXJ0eU5hbWVzKEFzc2VydGlvbkNvbnRleHQucHJvdG90eXBlKS5tYXAoXG4gICAgbmFtZSA9PiBgY29uc3QgJHtuYW1lfSA9IGN0eC4ke25hbWV9LmJpbmQoY3R4KTtgXG4gICk7XG5cbiAgcmV0dXJuIGBcbiAgYXNzZXJ0KFwiJHt1dGlscy5iYXNlRmlsZW5hbWUocGF0aCl9XCIpLnF1ZXJ5KGN0eCA9PiB7XG4gICAgJHtmdW5jdGlvbnNCaW5kaW5ncy5qb2luKFwiXFxuXCIpfVxuICAgICR7anN9XG4gICAgcmV0dXJuIFxcYCR7c3FsfVxcYDtcbiAgfSlgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEpzQmxvY2tzKGNvZGU6IHN0cmluZyk6IHsgc3FsOiBzdHJpbmc7IGpzOiBzdHJpbmcgfSB7XG4gIGNvbnN0IEpTX1JFR0VYID0gL15cXHMqXFwvXFwqW2pKXVtzU11cXHMqW1xcclxcbl0rKCg/OlteKl18W1xcclxcbl18KD86XFwqKyg/OlteKi9dfFtcXHJcXG5dKSkpKilcXCorXFwvfF5cXHMqXFwtXFwtW2pKXVtzU11cXHMoLiopL2dtO1xuICAvLyBUaGlzIGNhcHR1cmVzIGFueSBzaW5nbGUgYmFja3RpY2tzIHRoYXQgYXJlbid0IGVzY2FwZWQgd2l0aCBhIHByZWNlZGluZyBcXC5cbiAgY29uc3QgUkFXX0JBQ0tUSUNLU19SRUdFWCA9IC8oW15cXFxcXSlgL2c7XG4gIGNvbnN0IGpzQmxvY2tzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBjbGVhblNxbCA9IGNvZGVcbiAgICAucmVwbGFjZShKU19SRUdFWCwgKF8sIGdyb3VwMSwgZ3JvdXAyKSA9PiB7XG4gICAgICBpZiAoZ3JvdXAxKSB7XG4gICAgICAgIGpzQmxvY2tzLnB1c2goZ3JvdXAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChncm91cDIpIHtcbiAgICAgICAganNCbG9ja3MucHVzaChncm91cDIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfSlcbiAgICAucmVwbGFjZShSQVdfQkFDS1RJQ0tTX1JFR0VYLCAoXywgZ3JvdXAxKSA9PiBncm91cDEgKyBcIlxcXFxgXCIpO1xuXG4gIHJldHVybiB7XG4gICAgc3FsOiBjbGVhblNxbC50cmltKCksXG4gICAganM6IGpzQmxvY2tzLm1hcChibG9jayA9PiBibG9jay50cmltKCkpLmpvaW4oXCJcXG5cIilcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29tcGlsZVNxbHgocmVzdWx0czogSVNxbHhQYXJzZVJlc3VsdHMsIHBhdGg6IHN0cmluZykge1xuICByZXR1cm4gYFxuY29uc3QgcGFyc2VkQ29uZmlnID0gJHtyZXN1bHRzLmNvbmZpZyB8fCBcInt9XCJ9O1xuLy8gc3FseENvbmZpZyBzaG91bGQgY29uZm9ybSB0byB0aGUgSVNxbHhDb25maWcgaW50ZXJmYWNlLlxuY29uc3Qgc3FseENvbmZpZyA9IHtcbiAgbmFtZTogXCIke3V0aWxzLmJhc2VGaWxlbmFtZShwYXRoKX1cIixcbiAgdHlwZTogXCJvcGVyYXRpb25zXCIsXG4gIGRlcGVuZGVuY2llczogW10sXG4gIC4uLnBhcnNlZENvbmZpZ1xufTtcblxuY29uc3Qgc3FsU3RhdGVtZW50Q291bnQgPSAke3Jlc3VsdHMuc3FsLmxlbmd0aH07XG5jb25zdCBoYXNJbmNyZW1lbnRhbCA9ICR7ISFyZXN1bHRzLmluY3JlbWVudGFsfTtcbmNvbnN0IGhhc1ByZU9wZXJhdGlvbnMgPSAke3Jlc3VsdHMucHJlT3BlcmF0aW9ucy5sZW5ndGggPiAxIHx8IHJlc3VsdHMucHJlT3BlcmF0aW9uc1swXSAhPT0gXCJcIn07XG5jb25zdCBoYXNQb3N0T3BlcmF0aW9ucyA9ICR7cmVzdWx0cy5wb3N0T3BlcmF0aW9ucy5sZW5ndGggPiAxIHx8IHJlc3VsdHMucG9zdE9wZXJhdGlvbnNbMF0gIT09IFwiXCJ9O1xuY29uc3QgaGFzSW5wdXRzID0gJHtPYmplY3Qua2V5cyhyZXN1bHRzLmlucHV0KS5sZW5ndGggPiAwfTtcblxuY29uc3QgYWN0aW9uID0gc2Vzc2lvbi5zcWx4QWN0aW9uKHtcbiAgc3FseENvbmZpZyxcbiAgc3FsU3RhdGVtZW50Q291bnQsXG4gIGhhc0luY3JlbWVudGFsLFxuICBoYXNQcmVPcGVyYXRpb25zLFxuICBoYXNQb3N0T3BlcmF0aW9ucyxcbiAgaGFzSW5wdXRzXG59KTtcblxuc3dpdGNoIChzcWx4Q29uZmlnLnR5cGUpIHtcbiAgY2FzZSBcInZpZXdcIjpcbiAgY2FzZSBcInRhYmxlXCI6XG4gIGNhc2UgXCJpbmNyZW1lbnRhbFwiOlxuICBjYXNlIFwiaW5saW5lXCI6IHtcbiAgICBhY3Rpb24ucXVlcnkoY3R4ID0+IHtcbiAgICAgICR7W1wic2VsZlwiLCBcInJlZlwiLCBcInJlc29sdmVcIl0ubWFwKG5hbWUgPT4gYGNvbnN0ICR7bmFtZX0gPSBjdHguJHtuYW1lfS5iaW5kKGN0eCk7YCkuam9pbihcIlxcblwiKX1cbiAgICAgICR7cmVzdWx0cy5qc31cbiAgICAgIGlmIChoYXNJbmNyZW1lbnRhbCkge1xuICAgICAgICBhY3Rpb24ud2hlcmUoXFxgJHtyZXN1bHRzLmluY3JlbWVudGFsfVxcYCk7XG4gICAgICB9XG4gICAgICBpZiAoaGFzUHJlT3BlcmF0aW9ucykge1xuICAgICAgICBjb25zdCBwcmVPcGVyYXRpb25zID0gWyR7cmVzdWx0cy5wcmVPcGVyYXRpb25zLm1hcChzcWwgPT4gYFxcYCR7c3FsfVxcYGApfV07XG4gICAgICAgIGFjdGlvbi5wcmVPcHMocHJlT3BlcmF0aW9ucyk7XG4gICAgICB9XG4gICAgICBpZiAoaGFzUG9zdE9wZXJhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcG9zdE9wZXJhdGlvbnMgPSBbJHtyZXN1bHRzLnBvc3RPcGVyYXRpb25zLm1hcChzcWwgPT4gYFxcYCR7c3FsfVxcYGApfV07XG4gICAgICAgIGFjdGlvbi5wb3N0T3BzKHBvc3RPcGVyYXRpb25zKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBcXGAke3Jlc3VsdHMuc3FsWzBdfVxcYDtcbiAgICB9KTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlIFwiYXNzZXJ0aW9uXCI6IHtcbiAgICBhY3Rpb24ucXVlcnkoY3R4ID0+IHtcbiAgICAgICR7W1wicmVmXCIsIFwicmVzb2x2ZVwiXS5tYXAobmFtZSA9PiBgY29uc3QgJHtuYW1lfSA9IGN0eC4ke25hbWV9LmJpbmQoY3R4KTtgKS5qb2luKFwiXFxuXCIpfVxuICAgICAgJHtyZXN1bHRzLmpzfVxuICAgICAgcmV0dXJuIFxcYCR7cmVzdWx0cy5zcWxbMF19XFxgO1xuICAgIH0pO1xuICAgIGJyZWFrO1xuICB9XG4gIGNhc2UgXCJvcGVyYXRpb25zXCI6IHtcbiAgICBhY3Rpb24ucXVlcmllcyhjdHggPT4ge1xuICAgICAgJHtbXCJzZWxmXCIsIFwicmVmXCIsIFwicmVzb2x2ZVwiXS5tYXAobmFtZSA9PiBgY29uc3QgJHtuYW1lfSA9IGN0eC4ke25hbWV9LmJpbmQoY3R4KTtgKS5qb2luKFwiXFxuXCIpfVxuICAgICAgJHtyZXN1bHRzLmpzfVxuICAgICAgY29uc3Qgb3BlcmF0aW9ucyA9IFske3Jlc3VsdHMuc3FsLm1hcChzcWwgPT4gYFxcYCR7c3FsfVxcYGApfV07XG4gICAgICByZXR1cm4gb3BlcmF0aW9ucztcbiAgICB9KTtcbiAgICBicmVhaztcbiAgfVxuICBjYXNlIFwidGVzdFwiOiB7XG4gICAgJHtPYmplY3Qua2V5cyhyZXN1bHRzLmlucHV0KS5tYXAoXG4gICAgICBpbnB1dExhYmVsID0+XG4gICAgICAgIGBcbiAgICAgICAgYWN0aW9uLmlucHV0KFwiJHtpbnB1dExhYmVsfVwiLCBjdHggPT4ge1xuICAgICAgICAgICR7cmVzdWx0cy5qc31cbiAgICAgICAgICByZXR1cm4gXFxgJHtyZXN1bHRzLmlucHV0W2lucHV0TGFiZWxdfVxcYDtcbiAgICAgICAgfSk7XG4gICAgICAgIGBcbiAgICApfVxuICAgIGFjdGlvbi5leHBlY3QoY3R4ID0+IHtcbiAgICAgICR7cmVzdWx0cy5qc31cbiAgICAgIHJldHVybiBcXGAke3Jlc3VsdHMuc3FsfVxcYDtcbiAgICB9KTtcbiAgICBicmVhaztcbiAgfVxuICBkZWZhdWx0OiB7XG4gICAgc2Vzc2lvbi5jb21waWxlRXJyb3IobmV3IEVycm9yKFxcYFVucmVjb2duaXplZCBhY3Rpb24gdHlwZTogXFwke3NxbHhDb25maWcudHlwZX1cXGApKTtcbiAgICBicmVhaztcbiAgfVxufWA7XG59XG5cbmZ1bmN0aW9uIGdldEZ1bmN0aW9uUHJvcGVydHlOYW1lcyhwcm90b3R5cGU6IGFueSkge1xuICByZXR1cm4gW1xuICAgIC4uLm5ldyBTZXQoXG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm90b3R5cGUpLmZpbHRlcihwcm9wZXJ0eU5hbWUgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHByb3RvdHlwZVtwcm9wZXJ0eU5hbWVdICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJjb25zdHJ1Y3RvclwiKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSlcbiAgICApXG4gIF07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21waWxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSx3REFBNEQ7SUFDNUQsd0RBQTREO0lBQzVELDREQUEwRTtJQUMxRSxnREFBb0Q7SUFDcEQsOENBQThDO0lBRTlDLFNBQWdCLE9BQU8sQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUNoRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxXQUFXLENBQUMsdUJBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNoQyxPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM3QixPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixPQUFPLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFkRCwwQkFjQztJQUVELFNBQVMsZUFBZSxDQUFDLElBQVksRUFBRSxJQUFZO1FBQ2pELE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE1BQU0saUJBQWlCLEdBQUcsd0JBQXdCLENBQUMsb0JBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQzVFLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLFVBQVUsSUFBSSxhQUFhLENB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QUMsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Ozs7OztNQU0xRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQzlCLFVBQVUsQ0FBQyxFQUFFLENBQ1g7d0JBQ2dCLFVBQVU7WUFDdEIsT0FBTyxDQUFDLEVBQUU7cUJBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7O1NBRXJDLENBQ0o7O1FBRUcsT0FBTyxDQUFDLEVBQUU7aUJBQ0QsT0FBTyxDQUFDLEdBQUc7Ozs7Ozs7O0VBUTFCLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyx3QkFBd0IsQ0FBQyxTQUFjO1FBQzlDLE9BQU87WUFDTCxHQUFHLElBQUksR0FBRyxDQUNSLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzFELElBQUksT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssVUFBVSxFQUFFO29CQUNqRCxPQUFPLEtBQUssQ0FBQztpQkFDZDtnQkFDRCxJQUFJLFlBQVksS0FBSyxhQUFhLEVBQUU7b0JBQ2xDLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQ0g7U0FDRixDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzc2VydGlvbkNvbnRleHQgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvYXNzZXJ0aW9uXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25Db250ZXh0IH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL29wZXJhdGlvblwiO1xuaW1wb3J0IHsgSVNxbHhQYXJzZVJlc3VsdHMsIHBhcnNlU3FseCB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9zcWx4X3BhcnNlclwiO1xuaW1wb3J0IHsgVGFibGVDb250ZXh0IH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3RhYmxlXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUoY29kZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgaWYgKHBhdGguZW5kc1dpdGgoXCIuc3FseFwiKSkge1xuICAgIHJldHVybiBjb21waWxlU3FseChwYXJzZVNxbHgoY29kZSksIHBhdGgpO1xuICB9XG4gIGlmIChwYXRoLmVuZHNXaXRoKFwiLmFzc2VydC5zcWxcIikpIHtcbiAgICByZXR1cm4gY29tcGlsZUFzc2VydGlvblNxbChjb2RlLCBwYXRoKTtcbiAgfVxuICBpZiAocGF0aC5lbmRzV2l0aChcIi5vcHMuc3FsXCIpKSB7XG4gICAgcmV0dXJuIGNvbXBpbGVPcGVyYXRpb25TcWwoY29kZSwgcGF0aCk7XG4gIH1cbiAgaWYgKHBhdGguZW5kc1dpdGgoXCIuc3FsXCIpKSB7XG4gICAgcmV0dXJuIGNvbXBpbGVUYWJsZVNxbChjb2RlLCBwYXRoKTtcbiAgfVxuICByZXR1cm4gY29kZTtcbn1cblxuZnVuY3Rpb24gY29tcGlsZVRhYmxlU3FsKGNvZGU6IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IHsgc3FsLCBqcyB9ID0gZXh0cmFjdEpzQmxvY2tzKGNvZGUpO1xuICBjb25zdCBmdW5jdGlvbnNCaW5kaW5ncyA9IGdldEZ1bmN0aW9uUHJvcGVydHlOYW1lcyhUYWJsZUNvbnRleHQucHJvdG90eXBlKS5tYXAoXG4gICAgbmFtZSA9PiBgY29uc3QgJHtuYW1lfSA9IGN0eC4ke25hbWV9LmJpbmQoY3R4KTtgXG4gICk7XG5cbiAgcmV0dXJuIGBcbiAgcHVibGlzaChcIiR7dXRpbHMuYmFzZUZpbGVuYW1lKHBhdGgpfVwiKS5xdWVyeShjdHggPT4ge1xuICAgICR7ZnVuY3Rpb25zQmluZGluZ3Muam9pbihcIlxcblwiKX1cbiAgICAke2pzfVxuICAgIHJldHVybiBcXGAke3NxbH1cXGA7XG4gIH0pYDtcbn1cblxuZnVuY3Rpb24gY29tcGlsZU9wZXJhdGlvblNxbChjb2RlOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBjb25zdCB7IHNxbCwganMgfSA9IGV4dHJhY3RKc0Jsb2Nrcyhjb2RlKTtcbiAgY29uc3QgZnVuY3Rpb25zQmluZGluZ3MgPSBnZXRGdW5jdGlvblByb3BlcnR5TmFtZXMoT3BlcmF0aW9uQ29udGV4dC5wcm90b3R5cGUpLm1hcChcbiAgICBuYW1lID0+IGBjb25zdCAke25hbWV9ID0gY3R4LiR7bmFtZX0uYmluZChjdHgpO2BcbiAgKTtcblxuICByZXR1cm4gYFxuICBvcGVyYXRlKFwiJHt1dGlscy5iYXNlRmlsZW5hbWUocGF0aCl9XCIpLnF1ZXJpZXMoY3R4ID0+IHtcbiAgICAke2Z1bmN0aW9uc0JpbmRpbmdzLmpvaW4oXCJcXG5cIil9XG4gICAgJHtqc31cbiAgICByZXR1cm4gXFxgJHtzcWx9XFxgLnNwbGl0KFwiXFxcXG4tLS1cXFxcblwiKTtcbiAgfSlgO1xufVxuXG5mdW5jdGlvbiBjb21waWxlQXNzZXJ0aW9uU3FsKGNvZGU6IHN0cmluZywgcGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IHsgc3FsLCBqcyB9ID0gZXh0cmFjdEpzQmxvY2tzKGNvZGUpO1xuICBjb25zdCBmdW5jdGlvbnNCaW5kaW5ncyA9IGdldEZ1bmN0aW9uUHJvcGVydHlOYW1lcyhBc3NlcnRpb25Db250ZXh0LnByb3RvdHlwZSkubWFwKFxuICAgIG5hbWUgPT4gYGNvbnN0ICR7bmFtZX0gPSBjdHguJHtuYW1lfS5iaW5kKGN0eCk7YFxuICApO1xuXG4gIHJldHVybiBgXG4gIGFzc2VydChcIiR7dXRpbHMuYmFzZUZpbGVuYW1lKHBhdGgpfVwiKS5xdWVyeShjdHggPT4ge1xuICAgICR7ZnVuY3Rpb25zQmluZGluZ3Muam9pbihcIlxcblwiKX1cbiAgICAke2pzfVxuICAgIHJldHVybiBcXGAke3NxbH1cXGA7XG4gIH0pYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RKc0Jsb2Nrcyhjb2RlOiBzdHJpbmcpOiB7IHNxbDogc3RyaW5nOyBqczogc3RyaW5nIH0ge1xuICBjb25zdCBKU19SRUdFWCA9IC9eXFxzKlxcL1xcKltqSl1bc1NdXFxzKltcXHJcXG5dKygoPzpbXipdfFtcXHJcXG5dfCg/OlxcKisoPzpbXiovXXxbXFxyXFxuXSkpKSopXFwqK1xcL3xeXFxzKlxcLVxcLVtqSl1bc1NdXFxzKC4qKS9nbTtcbiAgLy8gVGhpcyBjYXB0dXJlcyBhbnkgc2luZ2xlIGJhY2t0aWNrcyB0aGF0IGFyZW4ndCBlc2NhcGVkIHdpdGggYSBwcmVjZWRpbmcgXFwuXG4gIGNvbnN0IFJBV19CQUNLVElDS1NfUkVHRVggPSAvKFteXFxcXF0pYC9nO1xuICBjb25zdCBqc0Jsb2Nrczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgY2xlYW5TcWwgPSBjb2RlXG4gICAgLnJlcGxhY2UoSlNfUkVHRVgsIChfLCBncm91cDEsIGdyb3VwMikgPT4ge1xuICAgICAgaWYgKGdyb3VwMSkge1xuICAgICAgICBqc0Jsb2Nrcy5wdXNoKGdyb3VwMSk7XG4gICAgICB9XG4gICAgICBpZiAoZ3JvdXAyKSB7XG4gICAgICAgIGpzQmxvY2tzLnB1c2goZ3JvdXAyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH0pXG4gICAgLnJlcGxhY2UoUkFXX0JBQ0tUSUNLU19SRUdFWCwgKF8sIGdyb3VwMSkgPT4gZ3JvdXAxICsgXCJcXFxcYFwiKTtcblxuICByZXR1cm4ge1xuICAgIHNxbDogY2xlYW5TcWwudHJpbSgpLFxuICAgIGpzOiBqc0Jsb2Nrcy5tYXAoYmxvY2sgPT4gYmxvY2sudHJpbSgpKS5qb2luKFwiXFxuXCIpXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVTcWx4KHJlc3VsdHM6IElTcWx4UGFyc2VSZXN1bHRzLCBwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBcbmNvbnN0IHBhcnNlZENvbmZpZyA9ICR7cmVzdWx0cy5jb25maWcgfHwgXCJ7fVwifTtcbi8vIHNxbHhDb25maWcgc2hvdWxkIGNvbmZvcm0gdG8gdGhlIElTcWx4Q29uZmlnIGludGVyZmFjZS5cbmNvbnN0IHNxbHhDb25maWcgPSB7XG4gIG5hbWU6IFwiJHt1dGlscy5iYXNlRmlsZW5hbWUocGF0aCl9XCIsXG4gIHR5cGU6IFwib3BlcmF0aW9uc1wiLFxuICBkZXBlbmRlbmNpZXM6IFtdLFxuICB0YWdzOiBbXSxcbiAgLi4ucGFyc2VkQ29uZmlnXG59O1xuXG5jb25zdCBzcWxTdGF0ZW1lbnRDb3VudCA9ICR7cmVzdWx0cy5zcWwubGVuZ3RofTtcbmNvbnN0IGhhc0luY3JlbWVudGFsID0gJHshIXJlc3VsdHMuaW5jcmVtZW50YWx9O1xuY29uc3QgaGFzUHJlT3BlcmF0aW9ucyA9ICR7cmVzdWx0cy5wcmVPcGVyYXRpb25zLmxlbmd0aCA+IDEgfHwgcmVzdWx0cy5wcmVPcGVyYXRpb25zWzBdICE9PSBcIlwifTtcbmNvbnN0IGhhc1Bvc3RPcGVyYXRpb25zID0gJHtyZXN1bHRzLnBvc3RPcGVyYXRpb25zLmxlbmd0aCA+IDEgfHwgcmVzdWx0cy5wb3N0T3BlcmF0aW9uc1swXSAhPT0gXCJcIn07XG5jb25zdCBoYXNJbnB1dHMgPSAke09iamVjdC5rZXlzKHJlc3VsdHMuaW5wdXQpLmxlbmd0aCA+IDB9O1xuXG5jb25zdCBhY3Rpb24gPSBzZXNzaW9uLnNxbHhBY3Rpb24oe1xuICBzcWx4Q29uZmlnLFxuICBzcWxTdGF0ZW1lbnRDb3VudCxcbiAgaGFzSW5jcmVtZW50YWwsXG4gIGhhc1ByZU9wZXJhdGlvbnMsXG4gIGhhc1Bvc3RPcGVyYXRpb25zLFxuICBoYXNJbnB1dHNcbn0pO1xuXG5zd2l0Y2ggKHNxbHhDb25maWcudHlwZSkge1xuICBjYXNlIFwidmlld1wiOlxuICBjYXNlIFwidGFibGVcIjpcbiAgY2FzZSBcImluY3JlbWVudGFsXCI6XG4gIGNhc2UgXCJpbmxpbmVcIjoge1xuICAgIGFjdGlvbi5xdWVyeShjdHggPT4ge1xuICAgICAgJHtbXCJzZWxmXCIsIFwicmVmXCIsIFwicmVzb2x2ZVwiXS5tYXAobmFtZSA9PiBgY29uc3QgJHtuYW1lfSA9IGN0eC4ke25hbWV9LmJpbmQoY3R4KTtgKS5qb2luKFwiXFxuXCIpfVxuICAgICAgJHtyZXN1bHRzLmpzfVxuICAgICAgaWYgKGhhc0luY3JlbWVudGFsKSB7XG4gICAgICAgIGFjdGlvbi53aGVyZShcXGAke3Jlc3VsdHMuaW5jcmVtZW50YWx9XFxgKTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNQcmVPcGVyYXRpb25zKSB7XG4gICAgICAgIGNvbnN0IHByZU9wZXJhdGlvbnMgPSBbJHtyZXN1bHRzLnByZU9wZXJhdGlvbnMubWFwKHNxbCA9PiBgXFxgJHtzcWx9XFxgYCl9XTtcbiAgICAgICAgYWN0aW9uLnByZU9wcyhwcmVPcGVyYXRpb25zKTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNQb3N0T3BlcmF0aW9ucykge1xuICAgICAgICBjb25zdCBwb3N0T3BlcmF0aW9ucyA9IFske3Jlc3VsdHMucG9zdE9wZXJhdGlvbnMubWFwKHNxbCA9PiBgXFxgJHtzcWx9XFxgYCl9XTtcbiAgICAgICAgYWN0aW9uLnBvc3RPcHMocG9zdE9wZXJhdGlvbnMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFxcYCR7cmVzdWx0cy5zcWxbMF19XFxgO1xuICAgIH0pO1xuICAgIGJyZWFrO1xuICB9XG4gIGNhc2UgXCJhc3NlcnRpb25cIjoge1xuICAgIGFjdGlvbi5xdWVyeShjdHggPT4ge1xuICAgICAgJHtbXCJyZWZcIiwgXCJyZXNvbHZlXCJdLm1hcChuYW1lID0+IGBjb25zdCAke25hbWV9ID0gY3R4LiR7bmFtZX0uYmluZChjdHgpO2ApLmpvaW4oXCJcXG5cIil9XG4gICAgICAke3Jlc3VsdHMuanN9XG4gICAgICByZXR1cm4gXFxgJHtyZXN1bHRzLnNxbFswXX1cXGA7XG4gICAgfSk7XG4gICAgYnJlYWs7XG4gIH1cbiAgY2FzZSBcIm9wZXJhdGlvbnNcIjoge1xuICAgIGFjdGlvbi5xdWVyaWVzKGN0eCA9PiB7XG4gICAgICAke1tcInNlbGZcIiwgXCJyZWZcIiwgXCJyZXNvbHZlXCJdLm1hcChuYW1lID0+IGBjb25zdCAke25hbWV9ID0gY3R4LiR7bmFtZX0uYmluZChjdHgpO2ApLmpvaW4oXCJcXG5cIil9XG4gICAgICAke3Jlc3VsdHMuanN9XG4gICAgICBjb25zdCBvcGVyYXRpb25zID0gWyR7cmVzdWx0cy5zcWwubWFwKHNxbCA9PiBgXFxgJHtzcWx9XFxgYCl9XTtcbiAgICAgIHJldHVybiBvcGVyYXRpb25zO1xuICAgIH0pO1xuICAgIGJyZWFrO1xuICB9XG4gIGNhc2UgXCJ0ZXN0XCI6IHtcbiAgICAke09iamVjdC5rZXlzKHJlc3VsdHMuaW5wdXQpLm1hcChcbiAgICAgIGlucHV0TGFiZWwgPT5cbiAgICAgICAgYFxuICAgICAgICBhY3Rpb24uaW5wdXQoXCIke2lucHV0TGFiZWx9XCIsIGN0eCA9PiB7XG4gICAgICAgICAgJHtyZXN1bHRzLmpzfVxuICAgICAgICAgIHJldHVybiBcXGAke3Jlc3VsdHMuaW5wdXRbaW5wdXRMYWJlbF19XFxgO1xuICAgICAgICB9KTtcbiAgICAgICAgYFxuICAgICl9XG4gICAgYWN0aW9uLmV4cGVjdChjdHggPT4ge1xuICAgICAgJHtyZXN1bHRzLmpzfVxuICAgICAgcmV0dXJuIFxcYCR7cmVzdWx0cy5zcWx9XFxgO1xuICAgIH0pO1xuICAgIGJyZWFrO1xuICB9XG4gIGRlZmF1bHQ6IHtcbiAgICBzZXNzaW9uLmNvbXBpbGVFcnJvcihuZXcgRXJyb3IoXFxgVW5yZWNvZ25pemVkIGFjdGlvbiB0eXBlOiBcXCR7c3FseENvbmZpZy50eXBlfVxcYCkpO1xuICAgIGJyZWFrO1xuICB9XG59YDtcbn1cblxuZnVuY3Rpb24gZ2V0RnVuY3Rpb25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZTogYW55KSB7XG4gIHJldHVybiBbXG4gICAgLi4ubmV3IFNldChcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSkuZmlsdGVyKHByb3BlcnR5TmFtZSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvdG90eXBlW3Byb3BlcnR5TmFtZV0gIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcGVydHlOYW1lID09PSBcImNvbnN0cnVjdG9yXCIpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgIClcbiAgXTtcbn1cbiJdfQ==

@@ -11,2 +11,3 @@ /// <amd-module name="@dataform/core/operation" />

dependencies(value: string | string[]): this;
tags(value: string | string[]): this;
hasOutput(hasOutput: boolean): this;

@@ -22,4 +23,5 @@ compile(): dataform.IOperation;

dependencies(name: string | string[]): string;
tags(name: string | string[]): string;
hasOutput(hasOutput: boolean): string;
apply<T>(value: OContextable<T>): T;
}

@@ -30,2 +30,11 @@ (function (factory) {

}
tags(value) {
const newTags = typeof value === "string" ? [value] : value;
newTags.forEach(t => {
if (this.proto.tags.indexOf(t) < 0) {
this.proto.tags.push(t);
}
});
return this;
}
hasOutput(hasOutput) {

@@ -61,2 +70,6 @@ this.proto.hasOutput = hasOutput;

}
tags(name) {
this.operation.tags(name);
return "";
}
hasOutput(hasOutput) {

@@ -77,2 +90,2 @@ this.operation.hasOutput(hasOutput);

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9vcGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFDQSw2Q0FBNEM7SUFJNUMsTUFBYSxTQUFTO1FBQXRCO1lBQ1MsVUFBSyxHQUF3QixpQkFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQW9DbEUsQ0FBQztRQTVCUSxPQUFPLENBQUMsT0FBd0M7WUFDckQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxZQUFZLENBQUMsS0FBd0I7WUFDMUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDcEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxTQUFTLENBQUMsU0FBa0I7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVNLE9BQU87WUFDWixNQUFNLE9BQU8sR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTNDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxjQUFjLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFFM0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7S0FDRjtJQXJDRCw4QkFxQ0M7SUFFRCxNQUFhLGdCQUFnQjtRQUczQixZQUFZLFNBQW9CO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7UUFFTSxJQUFJO1lBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFTSxHQUFHLENBQUMsSUFBWTtZQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVNLE9BQU8sQ0FBQyxJQUFZO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFTSxZQUFZLENBQUMsSUFBdUI7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sU0FBUyxDQUFDLFNBQWtCO1lBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVNLEtBQUssQ0FBSSxLQUFzQjtZQUNwQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRTtnQkFDL0IsT0FBUSxLQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUM7S0FDRjtJQXJDRCw0Q0FxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3Nlc3Npb25cIjtcbmltcG9ydCB7IGRhdGFmb3JtIH0gZnJvbSBcIkBkYXRhZm9ybS9wcm90b3NcIjtcblxuZXhwb3J0IHR5cGUgT0NvbnRleHRhYmxlPFQ+ID0gVCB8ICgoY3R4OiBPcGVyYXRpb25Db250ZXh0KSA9PiBUKTtcblxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbiB7XG4gIHB1YmxpYyBwcm90bzogZGF0YWZvcm0uSU9wZXJhdGlvbiA9IGRhdGFmb3JtLk9wZXJhdGlvbi5jcmVhdGUoKTtcblxuICAvLyBIb2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBTZXNzaW9uIGluc3RhbmNlLlxuICBwdWJsaWMgc2Vzc2lvbjogU2Vzc2lvbjtcblxuICAvLyBXZSBkZWxheSBjb250ZXh0aWZpY2F0aW9uIHVudGlsIHRoZSBmaW5hbCBjb21waWxlIHN0ZXAsIHNvIGhvbGQgdGhlc2UgaGVyZSBmb3Igbm93LlxuICBwcml2YXRlIGNvbnRleHRhYmxlUXVlcmllczogT0NvbnRleHRhYmxlPHN0cmluZyB8IHN0cmluZ1tdPjtcblxuICBwdWJsaWMgcXVlcmllcyhxdWVyaWVzOiBPQ29udGV4dGFibGU8c3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gICAgdGhpcy5jb250ZXh0YWJsZVF1ZXJpZXMgPSBxdWVyaWVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlcGVuZGVuY2llcyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBjb25zdCBuZXdEZXBlbmRlbmNpZXMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBbdmFsdWVdIDogdmFsdWU7XG4gICAgbmV3RGVwZW5kZW5jaWVzLmZvckVhY2goZCA9PiB7XG4gICAgICBpZiAodGhpcy5wcm90by5kZXBlbmRlbmNpZXMuaW5kZXhPZihkKSA8IDApIHtcbiAgICAgICAgdGhpcy5wcm90by5kZXBlbmRlbmNpZXMucHVzaChkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBoYXNPdXRwdXQoaGFzT3V0cHV0OiBib29sZWFuKSB7XG4gICAgdGhpcy5wcm90by5oYXNPdXRwdXQgPSBoYXNPdXRwdXQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZSgpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gbmV3IE9wZXJhdGlvbkNvbnRleHQodGhpcyk7XG5cbiAgICBjb25zdCBhcHBsaWVkUXVlcmllcyA9IGNvbnRleHQuYXBwbHkodGhpcy5jb250ZXh0YWJsZVF1ZXJpZXMpO1xuICAgIHRoaXMucHJvdG8ucXVlcmllcyA9IHR5cGVvZiBhcHBsaWVkUXVlcmllcyA9PSBcInN0cmluZ1wiID8gW2FwcGxpZWRRdWVyaWVzXSA6IGFwcGxpZWRRdWVyaWVzO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvdG87XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbkNvbnRleHQge1xuICBwcml2YXRlIG9wZXJhdGlvbj86IE9wZXJhdGlvbjtcblxuICBjb25zdHJ1Y3RvcihvcGVyYXRpb246IE9wZXJhdGlvbikge1xuICAgIHRoaXMub3BlcmF0aW9uID0gb3BlcmF0aW9uO1xuICB9XG5cbiAgcHVibGljIHNlbGYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHRoaXMub3BlcmF0aW9uLnByb3RvLm5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlZihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9wZXJhdGlvbi5kZXBlbmRlbmNpZXMobmFtZSk7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbi5zZXNzaW9uLnJlc29sdmUobmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZGVwZW5kZW5jaWVzKG5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5vcGVyYXRpb24uZGVwZW5kZW5jaWVzKG5hbWUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGhhc091dHB1dChoYXNPdXRwdXQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9wZXJhdGlvbi5oYXNPdXRwdXQoaGFzT3V0cHV0KTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseTxUPih2YWx1ZTogT0NvbnRleHRhYmxlPFQ+KTogVCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gKHZhbHVlIGFzIGFueSkodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9vcGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFDQSw2Q0FBNEM7SUFJNUMsTUFBYSxTQUFTO1FBQXRCO1lBQ1MsVUFBSyxHQUF3QixpQkFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQThDbEUsQ0FBQztRQXRDUSxPQUFPLENBQUMsT0FBd0M7WUFDckQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxZQUFZLENBQUMsS0FBd0I7WUFDMUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDcEUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxJQUFJLENBQUMsS0FBd0I7WUFDbEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDNUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3pCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxTQUFTLENBQUMsU0FBa0I7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVNLE9BQU87WUFDWixNQUFNLE9BQU8sR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTNDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxjQUFjLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFFM0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7S0FDRjtJQS9DRCw4QkErQ0M7SUFFRCxNQUFhLGdCQUFnQjtRQUczQixZQUFZLFNBQW9CO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7UUFFTSxJQUFJO1lBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFTSxHQUFHLENBQUMsSUFBWTtZQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVNLE9BQU8sQ0FBQyxJQUFZO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFTSxZQUFZLENBQUMsSUFBdUI7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sSUFBSSxDQUFDLElBQXVCO1lBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVNLFNBQVMsQ0FBQyxTQUFrQjtZQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxLQUFLLENBQUksS0FBc0I7WUFDcEMsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7Z0JBQy9CLE9BQVEsS0FBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDO0tBQ0Y7SUExQ0QsNENBMENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9zZXNzaW9uXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbmV4cG9ydCB0eXBlIE9Db250ZXh0YWJsZTxUPiA9IFQgfCAoKGN0eDogT3BlcmF0aW9uQ29udGV4dCkgPT4gVCk7XG5cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb24ge1xuICBwdWJsaWMgcHJvdG86IGRhdGFmb3JtLklPcGVyYXRpb24gPSBkYXRhZm9ybS5PcGVyYXRpb24uY3JlYXRlKCk7XG5cbiAgLy8gSG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgU2Vzc2lvbiBpbnN0YW5jZS5cbiAgcHVibGljIHNlc3Npb246IFNlc3Npb247XG5cbiAgLy8gV2UgZGVsYXkgY29udGV4dGlmaWNhdGlvbiB1bnRpbCB0aGUgZmluYWwgY29tcGlsZSBzdGVwLCBzbyBob2xkIHRoZXNlIGhlcmUgZm9yIG5vdy5cbiAgcHJpdmF0ZSBjb250ZXh0YWJsZVF1ZXJpZXM6IE9Db250ZXh0YWJsZTxzdHJpbmcgfCBzdHJpbmdbXT47XG5cbiAgcHVibGljIHF1ZXJpZXMocXVlcmllczogT0NvbnRleHRhYmxlPHN0cmluZyB8IHN0cmluZ1tdPikge1xuICAgIHRoaXMuY29udGV4dGFibGVRdWVyaWVzID0gcXVlcmllcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbmV3RGVwZW5kZW5jaWVzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gW3ZhbHVlXSA6IHZhbHVlO1xuICAgIG5ld0RlcGVuZGVuY2llcy5mb3JFYWNoKGQgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvdG8uZGVwZW5kZW5jaWVzLmluZGV4T2YoZCkgPCAwKSB7XG4gICAgICAgIHRoaXMucHJvdG8uZGVwZW5kZW5jaWVzLnB1c2goZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdGFncyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBjb25zdCBuZXdUYWdzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gW3ZhbHVlXSA6IHZhbHVlO1xuICAgIG5ld1RhZ3MuZm9yRWFjaCh0ID0+IHtcbiAgICAgIGlmICh0aGlzLnByb3RvLnRhZ3MuaW5kZXhPZih0KSA8IDApIHtcbiAgICAgICAgdGhpcy5wcm90by50YWdzLnB1c2godCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgaGFzT3V0cHV0KGhhc091dHB1dDogYm9vbGVhbikge1xuICAgIHRoaXMucHJvdG8uaGFzT3V0cHV0ID0gaGFzT3V0cHV0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGUoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBPcGVyYXRpb25Db250ZXh0KHRoaXMpO1xuXG4gICAgY29uc3QgYXBwbGllZFF1ZXJpZXMgPSBjb250ZXh0LmFwcGx5KHRoaXMuY29udGV4dGFibGVRdWVyaWVzKTtcbiAgICB0aGlzLnByb3RvLnF1ZXJpZXMgPSB0eXBlb2YgYXBwbGllZFF1ZXJpZXMgPT0gXCJzdHJpbmdcIiA/IFthcHBsaWVkUXVlcmllc10gOiBhcHBsaWVkUXVlcmllcztcblxuICAgIHJldHVybiB0aGlzLnByb3RvO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25Db250ZXh0IHtcbiAgcHJpdmF0ZSBvcGVyYXRpb24/OiBPcGVyYXRpb247XG5cbiAgY29uc3RydWN0b3Iob3BlcmF0aW9uOiBPcGVyYXRpb24pIHtcbiAgICB0aGlzLm9wZXJhdGlvbiA9IG9wZXJhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZSh0aGlzLm9wZXJhdGlvbi5wcm90by5uYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyByZWYobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5vcGVyYXRpb24uZGVwZW5kZW5jaWVzKG5hbWUpO1xuICAgIHJldHVybiB0aGlzLnJlc29sdmUobmFtZSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb24uc2Vzc2lvbi5yZXNvbHZlKG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGRlcGVuZGVuY2llcyhuYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIHRoaXMub3BlcmF0aW9uLmRlcGVuZGVuY2llcyhuYW1lKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyB0YWdzKG5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5vcGVyYXRpb24udGFncyhuYW1lKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBoYXNPdXRwdXQoaGFzT3V0cHV0OiBib29sZWFuKSB7XG4gICAgdGhpcy5vcGVyYXRpb24uaGFzT3V0cHV0KGhhc091dHB1dCk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgYXBwbHk8VD4odmFsdWU6IE9Db250ZXh0YWJsZTxUPik6IFQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuICh2YWx1ZSBhcyBhbnkpKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=
{
"version": "1.0.4",
"version": "1.0.5",
"homepage": "https://github.com/dataform-co/dataform",

@@ -24,3 +24,3 @@ "license": "MIT",

"dependencies": {
"@dataform/protos": "1.0.4",
"@dataform/protos": "1.0.5",
"moo": "^0.5.0",

@@ -27,0 +27,0 @@ "protobufjs": "^6.8.8"

@@ -19,2 +19,3 @@ /// <amd-module name="@dataform/core/session" />

dataset?: string;
tags?: string[];
}

@@ -21,0 +22,0 @@ export declare class Session {

@@ -96,2 +96,3 @@ (function (factory) {

assertion.dependencies(actionOptions.sqlxConfig.dependencies);
assertion.tags(actionOptions.sqlxConfig.tags);
return assertion;

@@ -105,2 +106,3 @@ }

operations.dependencies(actionOptions.sqlxConfig.dependencies);
operations.tags(actionOptions.sqlxConfig.tags);
return operations;

@@ -261,2 +263,2 @@ }

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFBLDBEQUFvRDtJQUNwRCx3REFBbUU7SUFDbkUsd0RBQW1FO0lBQ25FLGdEQUFvRTtJQUNwRSw4Q0FBMkM7SUFDM0MsOENBQThDO0lBQzlDLDZDQUE0QztJQWdCNUMsTUFBYSxPQUFPO1FBWWxCLFlBQVksT0FBZSxFQUFFLGFBQXVDO1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFTSxJQUFJLENBQUMsT0FBZSxFQUFFLGFBQXVDO1lBQ2xFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxJQUFJO2dCQUM3QixhQUFhLEVBQUUsVUFBVTtnQkFDekIsZUFBZSxFQUFFLHFCQUFxQjthQUN2QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQy9DLENBQUM7UUFFTSxPQUFPO1lBQ1osT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRU0sVUFBVSxDQUFDLGFBT2pCO1lBQ0MsSUFBSSxhQUFhLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTtnQkFDekYsSUFBSSxDQUFDLFlBQVksQ0FDZix3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Q0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN4RCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUM7UUFFTSxhQUFhLENBQUMsSUFBSTtZQUN2QixPQUFPLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxhQUFhLENBQUM7UUFDNUYsQ0FBQztRQUVPLHVCQUF1QixDQUFDLElBQVk7WUFFMUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkUsTUFBTSxPQUFPLEdBQUcsb0dBQW9HLElBQUksR0FBRyxDQUFDO2dCQUM1SCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDdkM7UUFDSCxDQUFDO1FBRU8scUJBQXFCLENBQUMsSUFBWTtZQUV4QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHLGtDQUFrQyxJQUFJLEdBQUcsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0gsQ0FBQztLQUNGO0lBM1RELDBCQTJUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFkYXB0ZXJzIGZyb20gXCJAZGF0YWZvcm0vY29yZS9hZGFwdGVyc1wiO1xuaW1wb3J0IHsgQUNvbnRleHRhYmxlLCBBc3NlcnRpb24gfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvYXNzZXJ0aW9uXCI7XG5pbXBvcnQgeyBPQ29udGV4dGFibGUsIE9wZXJhdGlvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9vcGVyYXRpb25cIjtcbmltcG9ydCB7IFRhYmxlLCBUQ29uZmlnLCBUQ29udGV4dGFibGUgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvdGFibGVcIjtcbmltcG9ydCB7IFRlc3QgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvdGVzdFwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbmludGVyZmFjZSBJQWN0aW9uUHJvdG8ge1xuICBuYW1lPzogc3RyaW5nO1xuICBmaWxlTmFtZT86IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJU3FseENvbmZpZyBleHRlbmRzIFRDb25maWcge1xuICB0eXBlOiBcInZpZXdcIiB8IFwidGFibGVcIiB8IFwiaW5saW5lXCIgfCBcImluY3JlbWVudGFsXCIgfCBcImFzc2VydGlvblwiIHwgXCJvcGVyYXRpb25zXCIgfCBcInRlc3RcIjtcbiAgc2NoZW1hPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGhhc091dHB1dD86IGJvb2xlYW47XG4gIGRhdGFzZXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBTZXNzaW9uIHtcbiAgcHVibGljIHJvb3REaXI6IHN0cmluZztcblxuICBwdWJsaWMgY29uZmlnOiBkYXRhZm9ybS5JUHJvamVjdENvbmZpZztcblxuICBwdWJsaWMgdGFibGVzOiB7IFtuYW1lOiBzdHJpbmddOiBUYWJsZSB9O1xuICBwdWJsaWMgb3BlcmF0aW9uczogeyBbbmFtZTogc3RyaW5nXTogT3BlcmF0aW9uIH07XG4gIHB1YmxpYyBhc3NlcnRpb25zOiB7IFtuYW1lOiBzdHJpbmddOiBBc3NlcnRpb24gfTtcbiAgcHVibGljIHRlc3RzOiB7IFtuYW1lOiBzdHJpbmddOiBUZXN0IH07XG5cbiAgcHVibGljIGdyYXBoRXJyb3JzOiBkYXRhZm9ybS5JR3JhcGhFcnJvcnM7XG5cbiAgY29uc3RydWN0b3Iocm9vdERpcjogc3RyaW5nLCBwcm9qZWN0Q29uZmlnPzogZGF0YWZvcm0uSVByb2plY3RDb25maWcpIHtcbiAgICB0aGlzLmluaXQocm9vdERpciwgcHJvamVjdENvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgaW5pdChyb290RGlyOiBzdHJpbmcsIHByb2plY3RDb25maWc/OiBkYXRhZm9ybS5JUHJvamVjdENvbmZpZykge1xuICAgIHRoaXMucm9vdERpciA9IHJvb3REaXI7XG4gICAgdGhpcy5jb25maWcgPSBwcm9qZWN0Q29uZmlnIHx8IHtcbiAgICAgIGRlZmF1bHRTY2hlbWE6IFwiZGF0YWZvcm1cIixcbiAgICAgIGFzc2VydGlvblNjaGVtYTogXCJkYXRhZm9ybV9hc3NlcnRpb25zXCJcbiAgICB9O1xuICAgIHRoaXMudGFibGVzID0ge307XG4gICAgdGhpcy5vcGVyYXRpb25zID0ge307XG4gICAgdGhpcy5hc3NlcnRpb25zID0ge307XG4gICAgdGhpcy50ZXN0cyA9IHt9O1xuICAgIHRoaXMuZ3JhcGhFcnJvcnMgPSB7IGNvbXBpbGF0aW9uRXJyb3JzOiBbXSB9O1xuICB9XG5cbiAgcHVibGljIGFkYXB0ZXIoKTogYWRhcHRlcnMuSUFkYXB0ZXIge1xuICAgIHJldHVybiBhZGFwdGVycy5jcmVhdGUodGhpcy5jb25maWcpO1xuICB9XG5cbiAgcHVibGljIHNxbHhBY3Rpb24oYWN0aW9uT3B0aW9uczoge1xuICAgIHNxbHhDb25maWc6IElTcWx4Q29uZmlnO1xuICAgIHNxbFN0YXRlbWVudENvdW50OiBudW1iZXI7XG4gICAgaGFzSW5jcmVtZW50YWw6IGJvb2xlYW47XG4gICAgaGFzUHJlT3BlcmF0aW9uczogYm9vbGVhbjtcbiAgICBoYXNQb3N0T3BlcmF0aW9uczogYm9vbGVhbjtcbiAgICBoYXNJbnB1dHM6IGJvb2xlYW47XG4gIH0pIHtcbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5zcWxTdGF0ZW1lbnRDb3VudCA+IDEgJiYgYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUgIT09IFwib3BlcmF0aW9uc1wiKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcbiAgICAgICAgXCJBY3Rpb25zIG1heSBvbmx5IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBTUUwgc3RhdGVtZW50IGlmIHRoZXkgYXJlIG9mIHR5cGUgJ29wZXJhdGlvbnMnLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBhY3Rpb25PcHRpb25zLnNxbHhDb25maWcuaGFzT3V0cHV0ICYmXG4gICAgICAoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUgIT09IFwib3BlcmF0aW9uc1wiIHx8XG4gICAgICAgIHRoaXMuaXNEYXRhc2V0VHlwZShhY3Rpb25PcHRpb25zLnNxbHhDb25maWcudHlwZSkpXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcbiAgICAgICAgXCJBY3Rpb25zIG1heSBvbmx5IHNwZWNpZnkgJ2hhc091dHB1dDogdHJ1ZScgaWYgdGhleSBhcmUgb2YgdHlwZSAnb3BlcmF0aW9ucycgb3IgY3JlYXRlIGEgZGF0YXNldC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5oYXNPdXRwdXQgJiYgYWN0aW9uT3B0aW9ucy5zcWxTdGF0ZW1lbnRDb3VudCAhPT0gMSkge1xuICAgICAgdGhpcy5jb21waWxlRXJyb3IoXG4gICAgICAgIFwiT3BlcmF0aW9ucyB3aXRoICdoYXNPdXRwdXQ6IHRydWUnIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBTUUwgc3RhdGVtZW50LlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnByb3RlY3RlZCAmJiBhY3Rpb25PcHRpb25zLnNxbHhDb25maWcudHlwZSAhPT0gXCJpbmNyZW1lbnRhbFwiKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcbiAgICAgICAgXCJBY3Rpb25zIG1heSBvbmx5IHNwZWNpZnkgJ3Byb3RlY3RlZDogdHJ1ZScgaWYgdGhleSBhcmUgb2YgdHlwZSAnaW5jcmVtZW50YWwnLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5oYXNJbmNyZW1lbnRhbCAmJiBhY3Rpb25PcHRpb25zLnNxbHhDb25maWcudHlwZSAhPT0gXCJpbmNyZW1lbnRhbFwiKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcbiAgICAgICAgXCJBY3Rpb25zIG1heSBvbmx5IGluY2x1ZGUgaW5jcmVtZW50YWxfd2hlcmUgaWYgdGhleSBhcmUgb2YgdHlwZSAnaW5jcmVtZW50YWwnLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLmRhdGFzZXQgJiYgYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUgIT09IFwidGVzdFwiKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcIkFjdGlvbnMgbWF5IG9ubHkgc3BlY2lmeSAnZGF0YXNldCcgaWYgdGhleSBhcmUgb2YgdHlwZSAndGVzdCcuXCIpO1xuICAgIH1cbiAgICBpZiAoIWFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5kYXRhc2V0ICYmIGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50eXBlID09PSBcInRlc3RcIikge1xuICAgICAgdGhpcy5jb21waWxlRXJyb3IoXCJBY3Rpb25zIG11c3Qgc3BlY2lmeSAnZGF0YXNldCcgaWYgdGhleSBhcmUgb2YgdHlwZSAndGVzdCcuXCIpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5oYXNJbnB1dHMgJiYgYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUgIT09IFwidGVzdFwiKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcIkFjdGlvbnMgbWF5IG9ubHkgaW5jbHVkZSBpbnB1dCBibG9ja3MgaWYgdGhleSBhcmUgb2YgdHlwZSAndGVzdCcuXCIpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLmRpc2FibGVkICYmICF0aGlzLmlzRGF0YXNldFR5cGUoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUpKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcIkFjdGlvbnMgbWF5IG9ubHkgc3BlY2lmeSAnZGlzYWJsZWQ6IHRydWUnIGlmIHRoZXkgY3JlYXRlIGEgZGF0YXNldC5cIik7XG4gICAgfVxuICAgIGlmIChhY3Rpb25PcHRpb25zLnNxbHhDb25maWcucmVkc2hpZnQgJiYgIXRoaXMuaXNEYXRhc2V0VHlwZShhY3Rpb25PcHRpb25zLnNxbHhDb25maWcudHlwZSkpIHtcbiAgICAgIHRoaXMuY29tcGlsZUVycm9yKFwiQWN0aW9ucyBtYXkgb25seSBzcGVjaWZ5ICdyZWRzaGlmdDogeyAuLi4gfScgaWYgdGhleSBjcmVhdGUgYSBkYXRhc2V0LlwiKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5iaWdxdWVyeSAmJiAhdGhpcy5pc0RhdGFzZXRUeXBlKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50eXBlKSkge1xuICAgICAgdGhpcy5jb21waWxlRXJyb3IoXCJBY3Rpb25zIG1heSBvbmx5IHNwZWNpZnkgJ2JpZ3F1ZXJ5OiB7IC4uLiB9JyBpZiB0aGV5IGNyZWF0ZSBhIGRhdGFzZXQuXCIpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5oYXNQcmVPcGVyYXRpb25zICYmICF0aGlzLmlzRGF0YXNldFR5cGUoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUpKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcIkFjdGlvbnMgbWF5IG9ubHkgaW5jbHVkZSBwcmVfb3BlcmF0aW9ucyBpZiB0aGV5IGNyZWF0ZSBhIGRhdGFzZXQuXCIpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5oYXNQb3N0T3BlcmF0aW9ucyAmJiAhdGhpcy5pc0RhdGFzZXRUeXBlKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50eXBlKSkge1xuICAgICAgdGhpcy5jb21waWxlRXJyb3IoXCJBY3Rpb25zIG1heSBvbmx5IGluY2x1ZGUgcG9zdF9vcGVyYXRpb25zIGlmIHRoZXkgY3JlYXRlIGEgZGF0YXNldC5cIik7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50eXBlID09PSBcInRlc3RcIikge1xuICAgICAgcmV0dXJuIHRoaXMudGVzdChhY3Rpb25PcHRpb25zLnNxbHhDb25maWcubmFtZSkuZGF0YXNldChhY3Rpb25PcHRpb25zLnNxbHhDb25maWcuZGF0YXNldCk7XG4gICAgfVxuICAgIGNvbnN0IGFjdGlvbiA9ICgoKSA9PiB7XG4gICAgICBzd2l0Y2ggKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJ2aWV3XCI6XG4gICAgICAgIGNhc2UgXCJ0YWJsZVwiOlxuICAgICAgICBjYXNlIFwiaW5saW5lXCI6XG4gICAgICAgIGNhc2UgXCJpbmNyZW1lbnRhbFwiOiB7XG4gICAgICAgICAgY29uc3QgZGF0YXNldCA9IHRoaXMucHVibGlzaChhY3Rpb25PcHRpb25zLnNxbHhDb25maWcubmFtZSk7XG4gICAgICAgICAgZGF0YXNldC5jb25maWcoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnKTtcbiAgICAgICAgICByZXR1cm4gZGF0YXNldDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiYXNzZXJ0aW9uXCI6IHtcbiAgICAgICAgICBjb25zdCBhc3NlcnRpb24gPSB0aGlzLmFzc2VydChhY3Rpb25PcHRpb25zLnNxbHhDb25maWcubmFtZSk7XG4gICAgICAgICAgYXNzZXJ0aW9uLmRlcGVuZGVuY2llcyhhY3Rpb25PcHRpb25zLnNxbHhDb25maWcuZGVwZW5kZW5jaWVzKTtcbiAgICAgICAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJvcGVyYXRpb25zXCI6IHtcbiAgICAgICAgICBjb25zdCBvcGVyYXRpb25zID0gdGhpcy5vcGVyYXRlKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5uYW1lKTtcbiAgICAgICAgICBpZiAoIWFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5oYXNPdXRwdXQpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBvcGVyYXRpb25zLnByb3RvLnRhcmdldDtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BlcmF0aW9ucy5kZXBlbmRlbmNpZXMoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLmRlcGVuZGVuY2llcyk7XG4gICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbnM7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGFjdGlvbiB0eXBlOiAke2FjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50eXBlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICBpZiAoYWN0aW9uLnByb3RvLnRhcmdldCkge1xuICAgICAgYWN0aW9uLnByb3RvLnRhcmdldCA9IHRoaXMudGFyZ2V0KFxuICAgICAgICBhY3Rpb25PcHRpb25zLnNxbHhDb25maWcubmFtZSxcbiAgICAgICAgYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnNjaGVtYVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0YXJnZXQodGFyZ2V0OiBzdHJpbmcsIGRlZmF1bHRTY2hlbWE/OiBzdHJpbmcpOiBkYXRhZm9ybS5JVGFyZ2V0IHtcbiAgICBjb25zdCBzdWZmaXggPSAhIXRoaXMuY29uZmlnLnNjaGVtYVN1ZmZpeCA/IGBfJHt0aGlzLmNvbmZpZy5zY2hlbWFTdWZmaXh9YCA6IFwiXCI7XG5cbiAgICBpZiAodGFyZ2V0LmluY2x1ZGVzKFwiLlwiKSkge1xuICAgICAgY29uc3QgW3NjaGVtYSwgbmFtZV0gPSB0YXJnZXQuc3BsaXQoXCIuXCIpO1xuICAgICAgcmV0dXJuIGRhdGFmb3JtLlRhcmdldC5jcmVhdGUoeyBuYW1lLCBzY2hlbWE6IHNjaGVtYSArIHN1ZmZpeCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFmb3JtLlRhcmdldC5jcmVhdGUoe1xuICAgICAgbmFtZTogdGFyZ2V0LFxuICAgICAgc2NoZW1hOiAoZGVmYXVsdFNjaGVtYSB8fCB0aGlzLmNvbmZpZy5kZWZhdWx0U2NoZW1hKSArIHN1ZmZpeFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMudGFibGVzW25hbWVdO1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9XG4gICAgICAhIXRoaXMub3BlcmF0aW9uc1tuYW1lXSAmJiB0aGlzLm9wZXJhdGlvbnNbbmFtZV0uaGFzT3V0cHV0ICYmIHRoaXMub3BlcmF0aW9uc1tuYW1lXTtcblxuICAgIGlmICh0YWJsZSAmJiB0YWJsZS5wcm90by50eXBlID09PSBcImlubGluZVwiKSB7XG4gICAgICAvLyBUT0RPOiBQcmV0dHkgc3VyZSB0aGlzIGlzIGJyb2tlbiBhcyB0aGUgcHJvdG8ucXVlcnkgdmFsdWUgbWF5IG5vdFxuICAgICAgLy8gYmUgc2V0IHlldCBhcyBpdCBoYXBwZW5zIGR1cmluZyBjb21waWxhdGlvbi4gV2Ugc2hvdWxkIGV2YWx1dGUgdGhlIHF1ZXJ5IGhlcmUuXG4gICAgICByZXR1cm4gYCgke3RhYmxlLnByb3RvLnF1ZXJ5fSlgO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGFzZXQgPSB0YWJsZSB8fCBvcGVyYXRpb247XG4gICAgLy8gVE9ETzogV2UgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBwbGFpbiAnbmFtZScgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBwcm9qZWN0cyB0aGF0IHVzZSAuc3FsIGZpbGVzLlxuICAgIC8vIEluIHRoZXNlIHByb2plY3RzLCB0aGlzIHNlc3Npb24gbWF5IG5vdCBrbm93IGFib3V0IGFsbCBhY3Rpb25zICh5ZXQpLCBhbmQgdGh1cyB3ZSBuZWVkIHRvIGZhbGwgYmFjayB0byBhc3N1bWluZ1xuICAgIC8vIHRoYXQgdGhlIHRhcmdldCAqd2lsbCogZXhpc3QgaW4gdGhlIGZ1dHVyZS4gT25jZSB3ZSBicmVhayBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIC5zcWwgZmlsZXMsIHdlIHNob3VsZCByZW1vdmVcbiAgICAvLyB0aGUgY29kZSB0aGF0IGNhbGxzICd0aGlzLnRhcmdldCguLi4pJyBiZWxvdywgYW5kIGFwcGVuZCBhIGNvbXBpbGUgZXJyb3IgaWYgd2UgY2FuJ3QgZmluZCBhIGRhdGFzZXQgd2hvc2UgbmFtZSBpcyAnbmFtZScuXG4gICAgY29uc3QgdGFyZ2V0ID0gZGF0YXNldCA/IGRhdGFzZXQucHJvdG8udGFyZ2V0IDogdGhpcy50YXJnZXQobmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlcigpLnJlc29sdmVUYXJnZXQodGFyZ2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVyYXRlKG5hbWU6IHN0cmluZywgcXVlcmllcz86IE9Db250ZXh0YWJsZTxzdHJpbmcgfCBzdHJpbmdbXT4pOiBPcGVyYXRpb24ge1xuICAgIHRoaXMuY2hlY2tBY3Rpb25OYW1lSXNVbnVzZWQobmFtZSk7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gbmV3IE9wZXJhdGlvbigpO1xuICAgIG9wZXJhdGlvbi5zZXNzaW9uID0gdGhpcztcbiAgICBvcGVyYXRpb24ucHJvdG8ubmFtZSA9IG5hbWU7XG4gICAgb3BlcmF0aW9uLnByb3RvLnRhcmdldCA9IHRoaXMudGFyZ2V0KG5hbWUpO1xuICAgIGlmIChxdWVyaWVzKSB7XG4gICAgICBvcGVyYXRpb24ucXVlcmllcyhxdWVyaWVzKTtcbiAgICB9XG4gICAgb3BlcmF0aW9uLnByb3RvLmZpbGVOYW1lID0gdXRpbHMuZ2V0Q2FsbGVyRmlsZSh0aGlzLnJvb3REaXIpO1xuICAgIC8vIEFkZCBpdCB0byBnbG9iYWwgaW5kZXguXG4gICAgdGhpcy5vcGVyYXRpb25zW25hbWVdID0gb3BlcmF0aW9uO1xuICAgIHJldHVybiBvcGVyYXRpb247XG4gIH1cblxuICBwdWJsaWMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHF1ZXJ5T3JDb25maWc/OiBUQ29udGV4dGFibGU8c3RyaW5nPiB8IFRDb25maWcpOiBUYWJsZSB7XG4gICAgdGhpcy5jaGVja0FjdGlvbk5hbWVJc1VudXNlZChuYW1lKTtcbiAgICBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZSgpO1xuICAgIHRhYmxlLnNlc3Npb24gPSB0aGlzO1xuICAgIHRhYmxlLnByb3RvLm5hbWUgPSBuYW1lO1xuICAgIHRhYmxlLnByb3RvLnRhcmdldCA9IHRoaXMudGFyZ2V0KG5hbWUpO1xuICAgIGlmICghIXF1ZXJ5T3JDb25maWcpIHtcbiAgICAgIGlmICh0eXBlb2YgcXVlcnlPckNvbmZpZyA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICB0YWJsZS5jb25maWcocXVlcnlPckNvbmZpZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWJsZS5xdWVyeShxdWVyeU9yQ29uZmlnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGFibGUucHJvdG8uZmlsZU5hbWUgPSB1dGlscy5nZXRDYWxsZXJGaWxlKHRoaXMucm9vdERpcik7XG4gICAgLy8gQWRkIGl0IHRvIGdsb2JhbCBpbmRleC5cbiAgICB0aGlzLnRhYmxlc1tuYW1lXSA9IHRhYmxlO1xuICAgIHJldHVybiB0YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3NlcnQobmFtZTogc3RyaW5nLCBxdWVyeT86IEFDb250ZXh0YWJsZTxzdHJpbmc+KTogQXNzZXJ0aW9uIHtcbiAgICB0aGlzLmNoZWNrQWN0aW9uTmFtZUlzVW51c2VkKG5hbWUpO1xuICAgIGNvbnN0IGFzc2VydGlvbiA9IG5ldyBBc3NlcnRpb24oKTtcbiAgICBhc3NlcnRpb24uc2Vzc2lvbiA9IHRoaXM7XG4gICAgYXNzZXJ0aW9uLnByb3RvLm5hbWUgPSBuYW1lO1xuICAgIGFzc2VydGlvbi5wcm90by50YXJnZXQgPSB0aGlzLnRhcmdldChuYW1lLCB0aGlzLmNvbmZpZy5hc3NlcnRpb25TY2hlbWEpO1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgYXNzZXJ0aW9uLnF1ZXJ5KHF1ZXJ5KTtcbiAgICB9XG4gICAgYXNzZXJ0aW9uLnByb3RvLmZpbGVOYW1lID0gdXRpbHMuZ2V0Q2FsbGVyRmlsZSh0aGlzLnJvb3REaXIpO1xuICAgIC8vIEFkZCBpdCB0byBnbG9iYWwgaW5kZXguXG4gICAgdGhpcy5hc3NlcnRpb25zW25hbWVdID0gYXNzZXJ0aW9uO1xuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBwdWJsaWMgdGVzdChuYW1lOiBzdHJpbmcpOiBUZXN0IHtcbiAgICB0aGlzLmNoZWNrVGVzdE5hbWVJc1VudXNlZChuYW1lKTtcbiAgICBjb25zdCB0ZXN0ID0gbmV3IFRlc3QoKTtcbiAgICB0ZXN0LnNlc3Npb24gPSB0aGlzO1xuICAgIHRlc3QucHJvdG8ubmFtZSA9IG5hbWU7XG4gICAgdGVzdC5wcm90by5maWxlTmFtZSA9IHV0aWxzLmdldENhbGxlckZpbGUodGhpcy5yb290RGlyKTtcbiAgICAvLyBBZGQgaXQgdG8gZ2xvYmFsIGluZGV4LlxuICAgIHRoaXMudGVzdHNbbmFtZV0gPSB0ZXN0O1xuICAgIHJldHVybiB0ZXN0O1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGVFcnJvcihlcnI6IEVycm9yIHwgc3RyaW5nLCBwYXRoPzogc3RyaW5nKSB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoIHx8IHV0aWxzLmdldENhbGxlckZpbGUodGhpcy5yb290RGlyKSB8fCBfX2ZpbGVuYW1lO1xuXG4gICAgY29uc3QgY29tcGlsZUVycm9yID0gZGF0YWZvcm0uQ29tcGlsYXRpb25FcnJvci5jcmVhdGUoe1xuICAgICAgZmlsZU5hbWVcbiAgICB9KTtcbiAgICBpZiAodHlwZW9mIGVyciA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29tcGlsZUVycm9yLm1lc3NhZ2UgPSBlcnI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBpbGVFcnJvci5tZXNzYWdlID0gZXJyLm1lc3NhZ2U7XG4gICAgICBjb21waWxlRXJyb3Iuc3RhY2sgPSBlcnIuc3RhY2s7XG4gICAgfVxuICAgIHRoaXMuZ3JhcGhFcnJvcnMuY29tcGlsYXRpb25FcnJvcnMucHVzaChjb21waWxlRXJyb3IpO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGVHcmFwaENodW5rPFQ+KHBhcnQ6IHtcbiAgICBbbmFtZTogc3RyaW5nXTogeyBwcm90bzogSUFjdGlvblByb3RvOyBjb21waWxlKCk6IFQgfTtcbiAgfSk6IFRbXSB7XG4gICAgY29uc3QgY29tcGlsZWRDaHVua3M6IFRbXSA9IFtdO1xuXG4gICAgT2JqZWN0LmtleXMocGFydCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29tcGlsZWRDaHVuayA9IHBhcnRba2V5XS5jb21waWxlKCk7XG4gICAgICAgIGNvbXBpbGVkQ2h1bmtzLnB1c2goY29tcGlsZWRDaHVuayk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMuY29tcGlsZUVycm9yKGUsIHBhcnRba2V5XS5wcm90by5maWxlTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29tcGlsZWRDaHVua3M7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZSgpOiBkYXRhZm9ybS5JQ29tcGlsZWRHcmFwaCB7XG4gICAgY29uc3QgY29tcGlsZWRHcmFwaCA9IGRhdGFmb3JtLkNvbXBpbGVkR3JhcGguY3JlYXRlKHtcbiAgICAgIHByb2plY3RDb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgdGFibGVzOiB0aGlzLmNvbXBpbGVHcmFwaENodW5rKHRoaXMudGFibGVzKSxcbiAgICAgIG9wZXJhdGlvbnM6IHRoaXMuY29tcGlsZUdyYXBoQ2h1bmsodGhpcy5vcGVyYXRpb25zKSxcbiAgICAgIGFzc2VydGlvbnM6IHRoaXMuY29tcGlsZUdyYXBoQ2h1bmsodGhpcy5hc3NlcnRpb25zKSxcbiAgICAgIHRlc3RzOiB0aGlzLmNvbXBpbGVHcmFwaENodW5rKHRoaXMudGVzdHMpLFxuICAgICAgZ3JhcGhFcnJvcnM6IHRoaXMuZ3JhcGhFcnJvcnNcbiAgICB9KTtcblxuICAgIC8vIEV4cGFuZCBhY3Rpb24gZGVwZW5kZW5jeSB3aWxkY2FyZHMuXG5cbiAgICBjb25zdCBhbGxBY3Rpb25zOiBJQWN0aW9uUHJvdG9bXSA9IFtdLmNvbmNhdChcbiAgICAgIGNvbXBpbGVkR3JhcGgudGFibGVzLFxuICAgICAgY29tcGlsZWRHcmFwaC5hc3NlcnRpb25zLFxuICAgICAgY29tcGlsZWRHcmFwaC5vcGVyYXRpb25zXG4gICAgKTtcbiAgICBjb25zdCBhbGxBY3Rpb25OYW1lcyA9IGFsbEFjdGlvbnMubWFwKGFjdGlvbiA9PiBhY3Rpb24ubmFtZSk7XG5cbiAgICBhbGxBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICAgIGNvbnN0IHVuaXF1ZURlcGVuZGVuY2llczogeyBbZGVwZW5kZW5jeTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBhY3Rpb24uZGVwZW5kZW5jaWVzIHx8IFtdO1xuICAgICAgLy8gQWRkIG5vbi13aWxkY2FyZCBkZXBzIG5vcm1hbGx5LlxuICAgICAgZGVwZW5kZW5jaWVzXG4gICAgICAgIC5maWx0ZXIoZGVwZW5kZW5jeSA9PiAhZGVwZW5kZW5jeS5pbmNsdWRlcyhcIipcIikpXG4gICAgICAgIC5mb3JFYWNoKGRlcGVuZGVuY3kgPT4gKHVuaXF1ZURlcGVuZGVuY2llc1tkZXBlbmRlbmN5XSA9IHRydWUpKTtcbiAgICAgIC8vIE1hdGNoIHdpbGRjYXJkIGRlcHMgYWdhaW5zdCBhbGwgYWN0aW9uIG5hbWVzLlxuICAgICAgdXRpbHNcbiAgICAgICAgLm1hdGNoUGF0dGVybnMoZGVwZW5kZW5jaWVzLmZpbHRlcihkID0+IGQuaW5jbHVkZXMoXCIqXCIpKSwgYWxsQWN0aW9uTmFtZXMpXG4gICAgICAgIC5mb3JFYWNoKGRlcGVuZGVuY3kgPT4gKHVuaXF1ZURlcGVuZGVuY2llc1tkZXBlbmRlbmN5XSA9IHRydWUpKTtcbiAgICAgIGFjdGlvbi5kZXBlbmRlbmNpZXMgPSBPYmplY3Qua2V5cyh1bmlxdWVEZXBlbmRlbmNpZXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXBpbGVkR3JhcGg7XG4gIH1cblxuICBwdWJsaWMgaXNEYXRhc2V0VHlwZSh0eXBlKSB7XG4gICAgcmV0dXJuIHR5cGUgPT09IFwidmlld1wiIHx8IHR5cGUgPT09IFwidGFibGVcIiB8fCB0eXBlID09PSBcImlubGluZVwiIHx8IHR5cGUgPT09IFwiaW5jcmVtZW50YWxcIjtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tBY3Rpb25OYW1lSXNVbnVzZWQobmFtZTogc3RyaW5nKSB7XG4gICAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZSBuYW1lc1xuICAgIGlmICh0aGlzLnRhYmxlc1tuYW1lXSB8fCB0aGlzLm9wZXJhdGlvbnNbbmFtZV0gfHwgdGhpcy5hc3NlcnRpb25zW25hbWVdKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYER1cGxpY2F0ZSBhY3Rpb24gbmFtZSBkZXRlY3RlZC4gTmFtZXMgbXVzdCBiZSB1bmlxdWUgYWNyb3NzIHRhYmxlcywgYXNzZXJ0aW9ucywgYW5kIG9wZXJhdGlvbnM6IFwiJHtuYW1lfVwiYDtcbiAgICAgIHRoaXMuY29tcGlsZUVycm9yKG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1Rlc3ROYW1lSXNVbnVzZWQobmFtZTogc3RyaW5nKSB7XG4gICAgLy8gQ2hlY2sgZm9yIGR1cGxpY2F0ZSBuYW1lc1xuICAgIGlmICh0aGlzLnRlc3RzW25hbWVdKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYER1cGxpY2F0ZSB0ZXN0IG5hbWUgZGV0ZWN0ZWQ6IFwiJHtuYW1lfVwiYDtcbiAgICAgIHRoaXMuY29tcGlsZUVycm9yKG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFBLDBEQUFvRDtJQUNwRCx3REFBbUU7SUFDbkUsd0RBQW1FO0lBQ25FLGdEQUFvRTtJQUNwRSw4Q0FBMkM7SUFDM0MsOENBQThDO0lBQzlDLDZDQUE0QztJQWlCNUMsTUFBYSxPQUFPO1FBWWxCLFlBQVksT0FBZSxFQUFFLGFBQXVDO1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFTSxJQUFJLENBQUMsT0FBZSxFQUFFLGFBQXVDO1lBQ2xFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxJQUFJO2dCQUM3QixhQUFhLEVBQUUsVUFBVTtnQkFDekIsZUFBZSxFQUFFLHFCQUFxQjthQUN2QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQy9DLENBQUM7UUFFTSxPQUFPO1lBQ1osT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRU0sVUFBVSxDQUFDLGFBT2pCO1lBQ0MsSUFBSSxhQUFhLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTtnQkFDekYsSUFBSSxDQUFDLFlBQVksQ0FDZix3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QUM7cUJBQ3hFLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDbEUsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBRU0sYUFBYSxDQUFDLElBQUk7WUFDdkIsT0FBTyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssYUFBYSxDQUFDO1FBQzVGLENBQUM7UUFFTyx1QkFBdUIsQ0FBQyxJQUFZO1lBRTFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3ZFLE1BQU0sT0FBTyxHQUFHLG9HQUFvRyxJQUFJLEdBQUcsQ0FBQztnQkFDNUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0gsQ0FBQztRQUVPLHFCQUFxQixDQUFDLElBQVk7WUFFeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNwQixNQUFNLE9BQU8sR0FBRyxrQ0FBa0MsSUFBSSxHQUFHLENBQUM7Z0JBQzFELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUN2QztRQUNILENBQUM7S0FDRjtJQTlURCwwQkE4VEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhZGFwdGVycyBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvYWRhcHRlcnNcIjtcbmltcG9ydCB7IEFDb250ZXh0YWJsZSwgQXNzZXJ0aW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL2Fzc2VydGlvblwiO1xuaW1wb3J0IHsgT0NvbnRleHRhYmxlLCBPcGVyYXRpb24gfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvb3BlcmF0aW9uXCI7XG5pbXBvcnQgeyBUYWJsZSwgVENvbmZpZywgVENvbnRleHRhYmxlIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3RhYmxlXCI7XG5pbXBvcnQgeyBUZXN0IH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3Rlc3RcIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCJAZGF0YWZvcm0vY29yZS91dGlsc1wiO1xuaW1wb3J0IHsgZGF0YWZvcm0gfSBmcm9tIFwiQGRhdGFmb3JtL3Byb3Rvc1wiO1xuXG5pbnRlcmZhY2UgSUFjdGlvblByb3RvIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gIGRlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSVNxbHhDb25maWcgZXh0ZW5kcyBUQ29uZmlnIHtcbiAgdHlwZTogXCJ2aWV3XCIgfCBcInRhYmxlXCIgfCBcImlubGluZVwiIHwgXCJpbmNyZW1lbnRhbFwiIHwgXCJhc3NlcnRpb25cIiB8IFwib3BlcmF0aW9uc1wiIHwgXCJ0ZXN0XCI7XG4gIHNjaGVtYT86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBoYXNPdXRwdXQ/OiBib29sZWFuO1xuICBkYXRhc2V0Pzogc3RyaW5nO1xuICB0YWdzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBTZXNzaW9uIHtcbiAgcHVibGljIHJvb3REaXI6IHN0cmluZztcblxuICBwdWJsaWMgY29uZmlnOiBkYXRhZm9ybS5JUHJvamVjdENvbmZpZztcblxuICBwdWJsaWMgdGFibGVzOiB7IFtuYW1lOiBzdHJpbmddOiBUYWJsZSB9O1xuICBwdWJsaWMgb3BlcmF0aW9uczogeyBbbmFtZTogc3RyaW5nXTogT3BlcmF0aW9uIH07XG4gIHB1YmxpYyBhc3NlcnRpb25zOiB7IFtuYW1lOiBzdHJpbmddOiBBc3NlcnRpb24gfTtcbiAgcHVibGljIHRlc3RzOiB7IFtuYW1lOiBzdHJpbmddOiBUZXN0IH07XG5cbiAgcHVibGljIGdyYXBoRXJyb3JzOiBkYXRhZm9ybS5JR3JhcGhFcnJvcnM7XG5cbiAgY29uc3RydWN0b3Iocm9vdERpcjogc3RyaW5nLCBwcm9qZWN0Q29uZmlnPzogZGF0YWZvcm0uSVByb2plY3RDb25maWcpIHtcbiAgICB0aGlzLmluaXQocm9vdERpciwgcHJvamVjdENvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgaW5pdChyb290RGlyOiBzdHJpbmcsIHByb2plY3RDb25maWc/OiBkYXRhZm9ybS5JUHJvamVjdENvbmZpZykge1xuICAgIHRoaXMucm9vdERpciA9IHJvb3REaXI7XG4gICAgdGhpcy5jb25maWcgPSBwcm9qZWN0Q29uZmlnIHx8IHtcbiAgICAgIGRlZmF1bHRTY2hlbWE6IFwiZGF0YWZvcm1cIixcbiAgICAgIGFzc2VydGlvblNjaGVtYTogXCJkYXRhZm9ybV9hc3NlcnRpb25zXCJcbiAgICB9O1xuICAgIHRoaXMudGFibGVzID0ge307XG4gICAgdGhpcy5vcGVyYXRpb25zID0ge307XG4gICAgdGhpcy5hc3NlcnRpb25zID0ge307XG4gICAgdGhpcy50ZXN0cyA9IHt9O1xuICAgIHRoaXMuZ3JhcGhFcnJvcnMgPSB7IGNvbXBpbGF0aW9uRXJyb3JzOiBbXSB9O1xuICB9XG5cbiAgcHVibGljIGFkYXB0ZXIoKTogYWRhcHRlcnMuSUFkYXB0ZXIge1xuICAgIHJldHVybiBhZGFwdGVycy5jcmVhdGUodGhpcy5jb25maWcpO1xuICB9XG5cbiAgcHVibGljIHNxbHhBY3Rpb24oYWN0aW9uT3B0aW9uczoge1xuICAgIHNxbHhDb25maWc6IElTcWx4Q29uZmlnO1xuICAgIHNxbFN0YXRlbWVudENvdW50OiBudW1iZXI7XG4gICAgaGFzSW5jcmVtZW50YWw6IGJvb2xlYW47XG4gICAgaGFzUHJlT3BlcmF0aW9uczogYm9vbGVhbjtcbiAgICBoYXNQb3N0T3BlcmF0aW9uczogYm9vbGVhbjtcbiAgICBoYXNJbnB1dHM6IGJvb2xlYW47XG4gIH0pIHtcbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5zcWxTdGF0ZW1lbnRDb3VudCA+IDEgJiYgYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUgIT09IFwib3BlcmF0aW9uc1wiKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcbiAgICAgICAgXCJBY3Rpb25zIG1heSBvbmx5IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBTUUwgc3RhdGVtZW50IGlmIHRoZXkgYXJlIG9mIHR5cGUgJ29wZXJhdGlvbnMnLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBhY3Rpb25PcHRpb25zLnNxbHhDb25maWcuaGFzT3V0cHV0ICYmXG4gICAgICAoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUgIT09IFwib3BlcmF0aW9uc1wiIHx8XG4gICAgICAgIHRoaXMuaXNEYXRhc2V0VHlwZShhY3Rpb25PcHRpb25zLnNxbHhDb25maWcudHlwZSkpXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcbiAgICAgICAgXCJBY3Rpb25zIG1heSBvbmx5IHNwZWNpZnkgJ2hhc091dHB1dDogdHJ1ZScgaWYgdGhleSBhcmUgb2YgdHlwZSAnb3BlcmF0aW9ucycgb3IgY3JlYXRlIGEgZGF0YXNldC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5oYXNPdXRwdXQgJiYgYWN0aW9uT3B0aW9ucy5zcWxTdGF0ZW1lbnRDb3VudCAhPT0gMSkge1xuICAgICAgdGhpcy5jb21waWxlRXJyb3IoXG4gICAgICAgIFwiT3BlcmF0aW9ucyB3aXRoICdoYXNPdXRwdXQ6IHRydWUnIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBTUUwgc3RhdGVtZW50LlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnByb3RlY3RlZCAmJiBhY3Rpb25PcHRpb25zLnNxbHhDb25maWcudHlwZSAhPT0gXCJpbmNyZW1lbnRhbFwiKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcbiAgICAgICAgXCJBY3Rpb25zIG1heSBvbmx5IHNwZWNpZnkgJ3Byb3RlY3RlZDogdHJ1ZScgaWYgdGhleSBhcmUgb2YgdHlwZSAnaW5jcmVtZW50YWwnLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5oYXNJbmNyZW1lbnRhbCAmJiBhY3Rpb25PcHRpb25zLnNxbHhDb25maWcudHlwZSAhPT0gXCJpbmNyZW1lbnRhbFwiKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcbiAgICAgICAgXCJBY3Rpb25zIG1heSBvbmx5IGluY2x1ZGUgaW5jcmVtZW50YWxfd2hlcmUgaWYgdGhleSBhcmUgb2YgdHlwZSAnaW5jcmVtZW50YWwnLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLmRhdGFzZXQgJiYgYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUgIT09IFwidGVzdFwiKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcIkFjdGlvbnMgbWF5IG9ubHkgc3BlY2lmeSAnZGF0YXNldCcgaWYgdGhleSBhcmUgb2YgdHlwZSAndGVzdCcuXCIpO1xuICAgIH1cbiAgICBpZiAoIWFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5kYXRhc2V0ICYmIGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50eXBlID09PSBcInRlc3RcIikge1xuICAgICAgdGhpcy5jb21waWxlRXJyb3IoXCJBY3Rpb25zIG11c3Qgc3BlY2lmeSAnZGF0YXNldCcgaWYgdGhleSBhcmUgb2YgdHlwZSAndGVzdCcuXCIpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5oYXNJbnB1dHMgJiYgYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUgIT09IFwidGVzdFwiKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcIkFjdGlvbnMgbWF5IG9ubHkgaW5jbHVkZSBpbnB1dCBibG9ja3MgaWYgdGhleSBhcmUgb2YgdHlwZSAndGVzdCcuXCIpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLmRpc2FibGVkICYmICF0aGlzLmlzRGF0YXNldFR5cGUoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUpKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcIkFjdGlvbnMgbWF5IG9ubHkgc3BlY2lmeSAnZGlzYWJsZWQ6IHRydWUnIGlmIHRoZXkgY3JlYXRlIGEgZGF0YXNldC5cIik7XG4gICAgfVxuICAgIGlmIChhY3Rpb25PcHRpb25zLnNxbHhDb25maWcucmVkc2hpZnQgJiYgIXRoaXMuaXNEYXRhc2V0VHlwZShhY3Rpb25PcHRpb25zLnNxbHhDb25maWcudHlwZSkpIHtcbiAgICAgIHRoaXMuY29tcGlsZUVycm9yKFwiQWN0aW9ucyBtYXkgb25seSBzcGVjaWZ5ICdyZWRzaGlmdDogeyAuLi4gfScgaWYgdGhleSBjcmVhdGUgYSBkYXRhc2V0LlwiKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5iaWdxdWVyeSAmJiAhdGhpcy5pc0RhdGFzZXRUeXBlKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50eXBlKSkge1xuICAgICAgdGhpcy5jb21waWxlRXJyb3IoXCJBY3Rpb25zIG1heSBvbmx5IHNwZWNpZnkgJ2JpZ3F1ZXJ5OiB7IC4uLiB9JyBpZiB0aGV5IGNyZWF0ZSBhIGRhdGFzZXQuXCIpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5oYXNQcmVPcGVyYXRpb25zICYmICF0aGlzLmlzRGF0YXNldFR5cGUoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUpKSB7XG4gICAgICB0aGlzLmNvbXBpbGVFcnJvcihcIkFjdGlvbnMgbWF5IG9ubHkgaW5jbHVkZSBwcmVfb3BlcmF0aW9ucyBpZiB0aGV5IGNyZWF0ZSBhIGRhdGFzZXQuXCIpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uT3B0aW9ucy5oYXNQb3N0T3BlcmF0aW9ucyAmJiAhdGhpcy5pc0RhdGFzZXRUeXBlKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50eXBlKSkge1xuICAgICAgdGhpcy5jb21waWxlRXJyb3IoXCJBY3Rpb25zIG1heSBvbmx5IGluY2x1ZGUgcG9zdF9vcGVyYXRpb25zIGlmIHRoZXkgY3JlYXRlIGEgZGF0YXNldC5cIik7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50eXBlID09PSBcInRlc3RcIikge1xuICAgICAgcmV0dXJuIHRoaXMudGVzdChhY3Rpb25PcHRpb25zLnNxbHhDb25maWcubmFtZSkuZGF0YXNldChhY3Rpb25PcHRpb25zLnNxbHhDb25maWcuZGF0YXNldCk7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aW9uID0gKCgpID0+IHtcbiAgICAgIHN3aXRjaCAoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcInZpZXdcIjpcbiAgICAgICAgY2FzZSBcInRhYmxlXCI6XG4gICAgICAgIGNhc2UgXCJpbmxpbmVcIjpcbiAgICAgICAgY2FzZSBcImluY3JlbWVudGFsXCI6IHtcbiAgICAgICAgICBjb25zdCBkYXRhc2V0ID0gdGhpcy5wdWJsaXNoKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5uYW1lKTtcbiAgICAgICAgICBkYXRhc2V0LmNvbmZpZyhhY3Rpb25PcHRpb25zLnNxbHhDb25maWcpO1xuICAgICAgICAgIHJldHVybiBkYXRhc2V0O1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJhc3NlcnRpb25cIjoge1xuICAgICAgICAgIGNvbnN0IGFzc2VydGlvbiA9IHRoaXMuYXNzZXJ0KGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5uYW1lKTtcbiAgICAgICAgICBhc3NlcnRpb24uZGVwZW5kZW5jaWVzKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5kZXBlbmRlbmNpZXMpO1xuICAgICAgICAgIGFzc2VydGlvbi50YWdzKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50YWdzKTtcbiAgICAgICAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJvcGVyYXRpb25zXCI6IHtcbiAgICAgICAgICBjb25zdCBvcGVyYXRpb25zID0gdGhpcy5vcGVyYXRlKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5uYW1lKTtcbiAgICAgICAgICBpZiAoIWFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5oYXNPdXRwdXQpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBvcGVyYXRpb25zLnByb3RvLnRhcmdldDtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BlcmF0aW9ucy5kZXBlbmRlbmNpZXMoYWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLmRlcGVuZGVuY2llcyk7XG4gICAgICAgICAgb3BlcmF0aW9ucy50YWdzKGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy50YWdzKTtcbiAgICAgICAgICByZXR1cm4gb3BlcmF0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgYWN0aW9uIHR5cGU6ICR7YWN0aW9uT3B0aW9ucy5zcWx4Q29uZmlnLnR5cGV9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSgpO1xuICAgIGlmIChhY3Rpb24ucHJvdG8udGFyZ2V0KSB7XG4gICAgICBhY3Rpb24ucHJvdG8udGFyZ2V0ID0gdGhpcy50YXJnZXQoXG4gICAgICAgIGFjdGlvbk9wdGlvbnMuc3FseENvbmZpZy5uYW1lLFxuICAgICAgICBhY3Rpb25PcHRpb25zLnNxbHhDb25maWcuc2NoZW1hXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYWN0aW9uO1xuICB9XG5cbiAgcHVibGljIHRhcmdldCh0YXJnZXQ6IHN0cmluZywgZGVmYXVsdFNjaGVtYT86IHN0cmluZyk6IGRhdGFmb3JtLklUYXJnZXQge1xuICAgIGNvbnN0IHN1ZmZpeCA9ICEhdGhpcy5jb25maWcuc2NoZW1hU3VmZml4ID8gYF8ke3RoaXMuY29uZmlnLnNjaGVtYVN1ZmZpeH1gIDogXCJcIjtcblxuICAgIGlmICh0YXJnZXQuaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgICBjb25zdCBbc2NoZW1hLCBuYW1lXSA9IHRhcmdldC5zcGxpdChcIi5cIik7XG4gICAgICByZXR1cm4gZGF0YWZvcm0uVGFyZ2V0LmNyZWF0ZSh7IG5hbWUsIHNjaGVtYTogc2NoZW1hICsgc3VmZml4IH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YWZvcm0uVGFyZ2V0LmNyZWF0ZSh7XG4gICAgICBuYW1lOiB0YXJnZXQsXG4gICAgICBzY2hlbWE6IChkZWZhdWx0U2NoZW1hIHx8IHRoaXMuY29uZmlnLmRlZmF1bHRTY2hlbWEpICsgc3VmZml4XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZXNbbmFtZV07XG4gICAgY29uc3Qgb3BlcmF0aW9uID1cbiAgICAgICEhdGhpcy5vcGVyYXRpb25zW25hbWVdICYmIHRoaXMub3BlcmF0aW9uc1tuYW1lXS5oYXNPdXRwdXQgJiYgdGhpcy5vcGVyYXRpb25zW25hbWVdO1xuXG4gICAgaWYgKHRhYmxlICYmIHRhYmxlLnByb3RvLnR5cGUgPT09IFwiaW5saW5lXCIpIHtcbiAgICAgIC8vIFRPRE86IFByZXR0eSBzdXJlIHRoaXMgaXMgYnJva2VuIGFzIHRoZSBwcm90by5xdWVyeSB2YWx1ZSBtYXkgbm90XG4gICAgICAvLyBiZSBzZXQgeWV0IGFzIGl0IGhhcHBlbnMgZHVyaW5nIGNvbXBpbGF0aW9uLiBXZSBzaG91bGQgZXZhbHV0ZSB0aGUgcXVlcnkgaGVyZS5cbiAgICAgIHJldHVybiBgKCR7dGFibGUucHJvdG8ucXVlcnl9KWA7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YXNldCA9IHRhYmxlIHx8IG9wZXJhdGlvbjtcbiAgICAvLyBUT0RPOiBXZSBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHBsYWluICduYW1lJyBoZXJlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHByb2plY3RzIHRoYXQgdXNlIC5zcWwgZmlsZXMuXG4gICAgLy8gSW4gdGhlc2UgcHJvamVjdHMsIHRoaXMgc2Vzc2lvbiBtYXkgbm90IGtub3cgYWJvdXQgYWxsIGFjdGlvbnMgKHlldCksIGFuZCB0aHVzIHdlIG5lZWQgdG8gZmFsbCBiYWNrIHRvIGFzc3VtaW5nXG4gICAgLy8gdGhhdCB0aGUgdGFyZ2V0ICp3aWxsKiBleGlzdCBpbiB0aGUgZnV0dXJlLiBPbmNlIHdlIGJyZWFrIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggLnNxbCBmaWxlcywgd2Ugc2hvdWxkIHJlbW92ZVxuICAgIC8vIHRoZSBjb2RlIHRoYXQgY2FsbHMgJ3RoaXMudGFyZ2V0KC4uLiknIGJlbG93LCBhbmQgYXBwZW5kIGEgY29tcGlsZSBlcnJvciBpZiB3ZSBjYW4ndCBmaW5kIGEgZGF0YXNldCB3aG9zZSBuYW1lIGlzICduYW1lJy5cbiAgICBjb25zdCB0YXJnZXQgPSBkYXRhc2V0ID8gZGF0YXNldC5wcm90by50YXJnZXQgOiB0aGlzLnRhcmdldChuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyKCkucmVzb2x2ZVRhcmdldCh0YXJnZXQpO1xuICB9XG5cbiAgcHVibGljIG9wZXJhdGUobmFtZTogc3RyaW5nLCBxdWVyaWVzPzogT0NvbnRleHRhYmxlPHN0cmluZyB8IHN0cmluZ1tdPik6IE9wZXJhdGlvbiB7XG4gICAgdGhpcy5jaGVja0FjdGlvbk5hbWVJc1VudXNlZChuYW1lKTtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBuZXcgT3BlcmF0aW9uKCk7XG4gICAgb3BlcmF0aW9uLnNlc3Npb24gPSB0aGlzO1xuICAgIG9wZXJhdGlvbi5wcm90by5uYW1lID0gbmFtZTtcbiAgICBvcGVyYXRpb24ucHJvdG8udGFyZ2V0ID0gdGhpcy50YXJnZXQobmFtZSk7XG4gICAgaWYgKHF1ZXJpZXMpIHtcbiAgICAgIG9wZXJhdGlvbi5xdWVyaWVzKHF1ZXJpZXMpO1xuICAgIH1cbiAgICBvcGVyYXRpb24ucHJvdG8uZmlsZU5hbWUgPSB1dGlscy5nZXRDYWxsZXJGaWxlKHRoaXMucm9vdERpcik7XG4gICAgLy8gQWRkIGl0IHRvIGdsb2JhbCBpbmRleC5cbiAgICB0aGlzLm9wZXJhdGlvbnNbbmFtZV0gPSBvcGVyYXRpb247XG4gICAgcmV0dXJuIG9wZXJhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBwdWJsaXNoKG5hbWU6IHN0cmluZywgcXVlcnlPckNvbmZpZz86IFRDb250ZXh0YWJsZTxzdHJpbmc+IHwgVENvbmZpZyk6IFRhYmxlIHtcbiAgICB0aGlzLmNoZWNrQWN0aW9uTmFtZUlzVW51c2VkKG5hbWUpO1xuICAgIGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlKCk7XG4gICAgdGFibGUuc2Vzc2lvbiA9IHRoaXM7XG4gICAgdGFibGUucHJvdG8ubmFtZSA9IG5hbWU7XG4gICAgdGFibGUucHJvdG8udGFyZ2V0ID0gdGhpcy50YXJnZXQobmFtZSk7XG4gICAgaWYgKCEhcXVlcnlPckNvbmZpZykge1xuICAgICAgaWYgKHR5cGVvZiBxdWVyeU9yQ29uZmlnID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHRhYmxlLmNvbmZpZyhxdWVyeU9yQ29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYmxlLnF1ZXJ5KHF1ZXJ5T3JDb25maWcpO1xuICAgICAgfVxuICAgIH1cbiAgICB0YWJsZS5wcm90by5maWxlTmFtZSA9IHV0aWxzLmdldENhbGxlckZpbGUodGhpcy5yb290RGlyKTtcbiAgICAvLyBBZGQgaXQgdG8gZ2xvYmFsIGluZGV4LlxuICAgIHRoaXMudGFibGVzW25hbWVdID0gdGFibGU7XG4gICAgcmV0dXJuIHRhYmxlO1xuICB9XG5cbiAgcHVibGljIGFzc2VydChuYW1lOiBzdHJpbmcsIHF1ZXJ5PzogQUNvbnRleHRhYmxlPHN0cmluZz4pOiBBc3NlcnRpb24ge1xuICAgIHRoaXMuY2hlY2tBY3Rpb25OYW1lSXNVbnVzZWQobmFtZSk7XG4gICAgY29uc3QgYXNzZXJ0aW9uID0gbmV3IEFzc2VydGlvbigpO1xuICAgIGFzc2VydGlvbi5zZXNzaW9uID0gdGhpcztcbiAgICBhc3NlcnRpb24ucHJvdG8ubmFtZSA9IG5hbWU7XG4gICAgYXNzZXJ0aW9uLnByb3RvLnRhcmdldCA9IHRoaXMudGFyZ2V0KG5hbWUsIHRoaXMuY29uZmlnLmFzc2VydGlvblNjaGVtYSk7XG4gICAgaWYgKHF1ZXJ5KSB7XG4gICAgICBhc3NlcnRpb24ucXVlcnkocXVlcnkpO1xuICAgIH1cbiAgICBhc3NlcnRpb24ucHJvdG8uZmlsZU5hbWUgPSB1dGlscy5nZXRDYWxsZXJGaWxlKHRoaXMucm9vdERpcik7XG4gICAgLy8gQWRkIGl0IHRvIGdsb2JhbCBpbmRleC5cbiAgICB0aGlzLmFzc2VydGlvbnNbbmFtZV0gPSBhc3NlcnRpb247XG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB0ZXN0KG5hbWU6IHN0cmluZyk6IFRlc3Qge1xuICAgIHRoaXMuY2hlY2tUZXN0TmFtZUlzVW51c2VkKG5hbWUpO1xuICAgIGNvbnN0IHRlc3QgPSBuZXcgVGVzdCgpO1xuICAgIHRlc3Quc2Vzc2lvbiA9IHRoaXM7XG4gICAgdGVzdC5wcm90by5uYW1lID0gbmFtZTtcbiAgICB0ZXN0LnByb3RvLmZpbGVOYW1lID0gdXRpbHMuZ2V0Q2FsbGVyRmlsZSh0aGlzLnJvb3REaXIpO1xuICAgIC8vIEFkZCBpdCB0byBnbG9iYWwgaW5kZXguXG4gICAgdGhpcy50ZXN0c1tuYW1lXSA9IHRlc3Q7XG4gICAgcmV0dXJuIHRlc3Q7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZUVycm9yKGVycjogRXJyb3IgfCBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWxlTmFtZSA9IHBhdGggfHwgdXRpbHMuZ2V0Q2FsbGVyRmlsZSh0aGlzLnJvb3REaXIpIHx8IF9fZmlsZW5hbWU7XG5cbiAgICBjb25zdCBjb21waWxlRXJyb3IgPSBkYXRhZm9ybS5Db21waWxhdGlvbkVycm9yLmNyZWF0ZSh7XG4gICAgICBmaWxlTmFtZVxuICAgIH0pO1xuICAgIGlmICh0eXBlb2YgZXJyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb21waWxlRXJyb3IubWVzc2FnZSA9IGVycjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcGlsZUVycm9yLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgIGNvbXBpbGVFcnJvci5zdGFjayA9IGVyci5zdGFjaztcbiAgICB9XG4gICAgdGhpcy5ncmFwaEVycm9ycy5jb21waWxhdGlvbkVycm9ycy5wdXNoKGNvbXBpbGVFcnJvcik7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZUdyYXBoQ2h1bms8VD4ocGFydDoge1xuICAgIFtuYW1lOiBzdHJpbmddOiB7IHByb3RvOiBJQWN0aW9uUHJvdG87IGNvbXBpbGUoKTogVCB9O1xuICB9KTogVFtdIHtcbiAgICBjb25zdCBjb21waWxlZENodW5rczogVFtdID0gW107XG5cbiAgICBPYmplY3Qua2V5cyhwYXJ0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb21waWxlZENodW5rID0gcGFydFtrZXldLmNvbXBpbGUoKTtcbiAgICAgICAgY29tcGlsZWRDaHVua3MucHVzaChjb21waWxlZENodW5rKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5jb21waWxlRXJyb3IoZSwgcGFydFtrZXldLnByb3RvLmZpbGVOYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb21waWxlZENodW5rcztcbiAgfVxuXG4gIHB1YmxpYyBjb21waWxlKCk6IGRhdGFmb3JtLklDb21waWxlZEdyYXBoIHtcbiAgICBjb25zdCBjb21waWxlZEdyYXBoID0gZGF0YWZvcm0uQ29tcGlsZWRHcmFwaC5jcmVhdGUoe1xuICAgICAgcHJvamVjdENvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICB0YWJsZXM6IHRoaXMuY29tcGlsZUdyYXBoQ2h1bmsodGhpcy50YWJsZXMpLFxuICAgICAgb3BlcmF0aW9uczogdGhpcy5jb21waWxlR3JhcGhDaHVuayh0aGlzLm9wZXJhdGlvbnMpLFxuICAgICAgYXNzZXJ0aW9uczogdGhpcy5jb21waWxlR3JhcGhDaHVuayh0aGlzLmFzc2VydGlvbnMpLFxuICAgICAgdGVzdHM6IHRoaXMuY29tcGlsZUdyYXBoQ2h1bmsodGhpcy50ZXN0cyksXG4gICAgICBncmFwaEVycm9yczogdGhpcy5ncmFwaEVycm9yc1xuICAgIH0pO1xuXG4gICAgLy8gRXhwYW5kIGFjdGlvbiBkZXBlbmRlbmN5IHdpbGRjYXJkcy5cblxuICAgIGNvbnN0IGFsbEFjdGlvbnM6IElBY3Rpb25Qcm90b1tdID0gW10uY29uY2F0KFxuICAgICAgY29tcGlsZWRHcmFwaC50YWJsZXMsXG4gICAgICBjb21waWxlZEdyYXBoLmFzc2VydGlvbnMsXG4gICAgICBjb21waWxlZEdyYXBoLm9wZXJhdGlvbnNcbiAgICApO1xuICAgIGNvbnN0IGFsbEFjdGlvbk5hbWVzID0gYWxsQWN0aW9ucy5tYXAoYWN0aW9uID0+IGFjdGlvbi5uYW1lKTtcblxuICAgIGFsbEFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgY29uc3QgdW5pcXVlRGVwZW5kZW5jaWVzOiB7IFtkZXBlbmRlbmN5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IGFjdGlvbi5kZXBlbmRlbmNpZXMgfHwgW107XG4gICAgICAvLyBBZGQgbm9uLXdpbGRjYXJkIGRlcHMgbm9ybWFsbHkuXG4gICAgICBkZXBlbmRlbmNpZXNcbiAgICAgICAgLmZpbHRlcihkZXBlbmRlbmN5ID0+ICFkZXBlbmRlbmN5LmluY2x1ZGVzKFwiKlwiKSlcbiAgICAgICAgLmZvckVhY2goZGVwZW5kZW5jeSA9PiAodW5pcXVlRGVwZW5kZW5jaWVzW2RlcGVuZGVuY3ldID0gdHJ1ZSkpO1xuICAgICAgLy8gTWF0Y2ggd2lsZGNhcmQgZGVwcyBhZ2FpbnN0IGFsbCBhY3Rpb24gbmFtZXMuXG4gICAgICB1dGlsc1xuICAgICAgICAubWF0Y2hQYXR0ZXJucyhkZXBlbmRlbmNpZXMuZmlsdGVyKGQgPT4gZC5pbmNsdWRlcyhcIipcIikpLCBhbGxBY3Rpb25OYW1lcylcbiAgICAgICAgLmZvckVhY2goZGVwZW5kZW5jeSA9PiAodW5pcXVlRGVwZW5kZW5jaWVzW2RlcGVuZGVuY3ldID0gdHJ1ZSkpO1xuICAgICAgYWN0aW9uLmRlcGVuZGVuY2llcyA9IE9iamVjdC5rZXlzKHVuaXF1ZURlcGVuZGVuY2llcyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29tcGlsZWRHcmFwaDtcbiAgfVxuXG4gIHB1YmxpYyBpc0RhdGFzZXRUeXBlKHR5cGUpIHtcbiAgICByZXR1cm4gdHlwZSA9PT0gXCJ2aWV3XCIgfHwgdHlwZSA9PT0gXCJ0YWJsZVwiIHx8IHR5cGUgPT09IFwiaW5saW5lXCIgfHwgdHlwZSA9PT0gXCJpbmNyZW1lbnRhbFwiO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FjdGlvbk5hbWVJc1VudXNlZChuYW1lOiBzdHJpbmcpIHtcbiAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIG5hbWVzXG4gICAgaWYgKHRoaXMudGFibGVzW25hbWVdIHx8IHRoaXMub3BlcmF0aW9uc1tuYW1lXSB8fCB0aGlzLmFzc2VydGlvbnNbbmFtZV0pIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgRHVwbGljYXRlIGFjdGlvbiBuYW1lIGRldGVjdGVkLiBOYW1lcyBtdXN0IGJlIHVuaXF1ZSBhY3Jvc3MgdGFibGVzLCBhc3NlcnRpb25zLCBhbmQgb3BlcmF0aW9uczogXCIke25hbWV9XCJgO1xuICAgICAgdGhpcy5jb21waWxlRXJyb3IobmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrVGVzdE5hbWVJc1VudXNlZChuYW1lOiBzdHJpbmcpIHtcbiAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIG5hbWVzXG4gICAgaWYgKHRoaXMudGVzdHNbbmFtZV0pIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgRHVwbGljYXRlIHRlc3QgbmFtZSBkZXRlY3RlZDogXCIke25hbWV9XCJgO1xuICAgICAgdGhpcy5jb21waWxlRXJyb3IobmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==

@@ -28,2 +28,3 @@ /// <amd-module name="@dataform/core/table" />

dependencies?: string | string[];
tags?: string[];
descriptor?: string[] | {

@@ -54,2 +55,3 @@ [key: string]: string;

dependencies(value: string | string[]): this;
tags(value: string | string[]): this;
descriptor(key: string, description?: string): Table;

@@ -81,2 +83,3 @@ descriptor(map: {

apply: <T>(value: TContextable<T>) => T;
tags: (name: string | string[]) => string;
}

@@ -105,3 +108,4 @@ export declare class TableContext implements ITableContext {

apply<T>(value: TContextable<T>): T;
tags(tags: string[]): string;
}
export {};

@@ -47,3 +47,4 @@ (function (factory) {

type: "view",
disabled: false
disabled: false,
tags: []
});

@@ -77,2 +78,5 @@ this.contextablePreOps = [];

}
if (config.tags) {
this.tags(config.tags);
}
return this;

@@ -125,2 +129,10 @@ }

}
tags(value) {
const newTags = typeof value === "string" ? [value] : value;
newTags.forEach(t => {
const table = this.session.tables[t];
this.proto.tags.push(t);
});
return this;
}
descriptor(keyOrKeysOrMap, description) {

@@ -241,5 +253,9 @@ if (!this.proto.fieldDescriptor) {

}
tags(tags) {
this.table.tags(tags);
return "";
}
}
exports.TableContext = TableContext;
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQ0EsNkNBQTRDO0lBRTVDLElBQVksVUFLWDtJQUxELFdBQVksVUFBVTtRQUNwQiw2QkFBZSxDQUFBO1FBQ2YsMkJBQWEsQ0FBQTtRQUNiLHlDQUEyQixDQUFBO1FBQzNCLCtCQUFpQixDQUFBO0lBQ25CLENBQUMsRUFMVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQUtyQjtJQUNELElBQVksY0FJWDtJQUpELFdBQVksY0FBYztRQUN4QiwrQkFBYSxDQUFBO1FBQ2IsNkJBQVcsQ0FBQTtRQUNYLDZCQUFXLENBQUE7SUFDYixDQUFDLEVBSlcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUFJekI7SUFDRCxJQUFZLGNBR1g7SUFIRCxXQUFZLGNBQWM7UUFDeEIsdUNBQXFCLENBQUE7UUFDckIsNkNBQTJCLENBQUE7SUFDN0IsQ0FBQyxFQUhXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBR3pCO0lBRVksUUFBQSxZQUFZLEdBQUc7UUFDMUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkIsVUFBVTtZQUNWLFVBQVU7WUFDVixRQUFRO1lBQ1IsU0FBUztZQUNULFlBQVk7WUFDWixVQUFVO1lBQ1YsT0FBTztZQUNQLGlCQUFpQjtTQUNsQjtLQUNGLENBQUM7SUFnQkYsTUFBYSxLQUFLO1FBQWxCO1lBQ1MsVUFBSyxHQUFtQixpQkFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ25ELElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztZQVFLLHNCQUFpQixHQUEyQyxFQUFFLENBQUM7WUFDL0QsdUJBQWtCLEdBQTJDLEVBQUUsQ0FBQztRQTJJMUUsQ0FBQztRQXpJUSxNQUFNLENBQUMsTUFBZTtZQUMz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RUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVNLFFBQVEsQ0FBQyxHQUFXLEVBQUUsV0FBb0I7WUFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUVNLEtBQUssQ0FBSSxLQUFzQjtZQUNwQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRTtnQkFDL0IsT0FBUSxLQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUM7S0FDRjtJQTlGRCxvQ0E4RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3Nlc3Npb25cIjtcbmltcG9ydCB7IGRhdGFmb3JtIH0gZnJvbSBcIkBkYXRhZm9ybS9wcm90b3NcIjtcblxuZXhwb3J0IGVudW0gVGFibGVUeXBlcyB7XG4gIFRBQkxFID0gXCJ0YWJsZVwiLFxuICBWSUVXID0gXCJ2aWV3XCIsXG4gIElOQ1JFTUVOVEFMID0gXCJpbmNyZW1lbnRhbFwiLFxuICBJTkxJTkUgPSBcImlubGluZVwiXG59XG5leHBvcnQgZW51bSBEaXN0U3R5bGVUeXBlcyB7XG4gIEVWRU4gPSBcImV2ZW5cIixcbiAgS0VZID0gXCJrZXlcIixcbiAgQUxMID0gXCJhbGxcIlxufVxuZXhwb3J0IGVudW0gU29ydFN0eWxlVHlwZXMge1xuICBDT01QT1VORCA9IFwiY29tcG91bmRcIixcbiAgSU5URVJMRUFWRUQgPSBcImludGVybGVhdmVkXCJcbn1cblxuZXhwb3J0IGNvbnN0IGlnbm9yZWRQcm9wcyA9IHtcbiAgW1RhYmxlVHlwZXMuSU5MSU5FXTogW1xuICAgIFwiYmlncXVlcnlcIixcbiAgICBcInJlZHNoaWZ0XCIsXG4gICAgXCJwcmVPcHNcIixcbiAgICBcInBvc3RPcHNcIixcbiAgICBcImRlc2NyaXB0b3JcIixcbiAgICBcImRpc2FibGVkXCIsXG4gICAgXCJ3aGVyZVwiLFxuICAgIFwiZmllbGREZXNjcmlwdG9yXCJcbiAgXVxufTtcblxudHlwZSBWYWx1ZU9mPFQ+ID0gVFtrZXlvZiBUXTtcbmV4cG9ydCB0eXBlIFRDb250ZXh0YWJsZTxUPiA9IFQgfCAoKGN0eDogVGFibGVDb250ZXh0KSA9PiBUKTtcbmV4cG9ydCB0eXBlIFRhYmxlVHlwZSA9IFZhbHVlT2Y8VGFibGVUeXBlcz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVENvbmZpZyB7XG4gIHR5cGU/OiBUYWJsZVR5cGU7XG4gIGRlcGVuZGVuY2llcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBkZXNjcmlwdG9yPzogc3RyaW5nW10gfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHByb3RlY3RlZD86IGJvb2xlYW47XG4gIHJlZHNoaWZ0PzogZGF0YWZvcm0uSVJlZHNoaWZ0T3B0aW9ucztcbiAgYmlncXVlcnk/OiBkYXRhZm9ybS5JQmlnUXVlcnlPcHRpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGUge1xuICBwdWJsaWMgcHJvdG86IGRhdGFmb3JtLlRhYmxlID0gZGF0YWZvcm0uVGFibGUuY3JlYXRlKHtcbiAgICB0eXBlOiBcInZpZXdcIixcbiAgICBkaXNhYmxlZDogZmFsc2VcbiAgfSk7XG5cbiAgLy8gSG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgU2Vzc2lvbiBpbnN0YW5jZS5cbiAgcHVibGljIHNlc3Npb246IFNlc3Npb247XG5cbiAgLy8gV2UgZGVsYXkgY29udGV4dGlmaWNhdGlvbiB1bnRpbCB0aGUgZmluYWwgY29tcGlsZSBzdGVwLCBzbyBob2xkIHRoZXNlIGhlcmUgZm9yIG5vdy5cbiAgcHVibGljIGNvbnRleHRhYmxlUXVlcnk6IFRDb250ZXh0YWJsZTxzdHJpbmc+O1xuICBwcml2YXRlIGNvbnRleHRhYmxlV2hlcmU6IFRDb250ZXh0YWJsZTxzdHJpbmc+O1xuICBwcml2YXRlIGNvbnRleHRhYmxlUHJlT3BzOiBBcnJheTxUQ29udGV4dGFibGU8c3RyaW5nIHwgc3RyaW5nW10+PiA9IFtdO1xuICBwcml2YXRlIGNvbnRleHRhYmxlUG9zdE9wczogQXJyYXk8VENvbnRleHRhYmxlPHN0cmluZyB8IHN0cmluZ1tdPj4gPSBbXTtcblxuICBwdWJsaWMgY29uZmlnKGNvbmZpZzogVENvbmZpZykge1xuICAgIGlmIChjb25maWcudHlwZSkge1xuICAgICAgdGhpcy50eXBlKGNvbmZpZy50eXBlKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzKGNvbmZpZy5kZXBlbmRlbmNpZXMpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmRlc2NyaXB0b3IpIHtcbiAgICAgIGlmIChjb25maWcuZGVzY3JpcHRvciBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcihjb25maWcuZGVzY3JpcHRvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IoY29uZmlnLmRlc2NyaXB0b3IpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29uZmlnLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmRpc2FibGVkKCk7XG4gICAgfVxuICAgIGlmIChjb25maWcucmVkc2hpZnQpIHtcbiAgICAgIHRoaXMucmVkc2hpZnQoY29uZmlnLnJlZHNoaWZ0KTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5iaWdxdWVyeSkge1xuICAgICAgdGhpcy5iaWdxdWVyeShjb25maWcuYmlncXVlcnkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB0eXBlKHR5cGU6IFRhYmxlVHlwZSkge1xuICAgIHRoaXMucHJvdG8udHlwZSA9IHR5cGUgYXMgc3RyaW5nO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHF1ZXJ5KHF1ZXJ5OiBUQ29udGV4dGFibGU8c3RyaW5nPikge1xuICAgIHRoaXMuY29udGV4dGFibGVRdWVyeSA9IHF1ZXJ5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHdoZXJlKHdoZXJlOiBUQ29udGV4dGFibGU8c3RyaW5nPikge1xuICAgIHRoaXMuY29udGV4dGFibGVXaGVyZSA9IHdoZXJlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHByZU9wcyhwcmVzOiBUQ29udGV4dGFibGU8c3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gICAgdGhpcy5jb250ZXh0YWJsZVByZU9wcy5wdXNoKHByZXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHBvc3RPcHMocG9zdHM6IFRDb250ZXh0YWJsZTxzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUG9zdE9wcy5wdXNoKHBvc3RzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlZCgpIHtcbiAgICB0aGlzLnByb3RvLmRpc2FibGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyByZWRzaGlmdChyZWRzaGlmdDogZGF0YWZvcm0uSVJlZHNoaWZ0T3B0aW9ucykge1xuICAgIHRoaXMucHJvdG8ucmVkc2hpZnQgPSBkYXRhZm9ybS5SZWRzaGlmdE9wdGlvbnMuY3JlYXRlKHJlZHNoaWZ0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBiaWdxdWVyeShiaWdxdWVyeTogZGF0YWZvcm0uSUJpZ1F1ZXJ5T3B0aW9ucykge1xuICAgIHRoaXMucHJvdG8uYmlncXVlcnkgPSBkYXRhZm9ybS5CaWdRdWVyeU9wdGlvbnMuY3JlYXRlKGJpZ3F1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbmV3RGVwZW5kZW5jaWVzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gW3ZhbHVlXSA6IHZhbHVlO1xuICAgIG5ld0RlcGVuZGVuY2llcy5mb3JFYWNoKGQgPT4ge1xuICAgICAgY29uc3QgdGFibGUgPSB0aGlzLnNlc3Npb24udGFibGVzW2RdO1xuXG4gICAgICBpZiAoISF0YWJsZSAmJiB0YWJsZS5wcm90by50eXBlID09PSBcImlubGluZVwiKSB7XG4gICAgICAgIHRhYmxlLnByb3RvLmRlcGVuZGVuY2llcy5mb3JFYWNoKGNoaWxkRGVwID0+IHRoaXMuYWRkRGVwZW5kZW5jeShjaGlsZERlcCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGREZXBlbmRlbmN5KGQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaXB0b3Ioa2V5OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogVGFibGU7XG4gIHB1YmxpYyBkZXNjcmlwdG9yKG1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IFRhYmxlO1xuICBwdWJsaWMgZGVzY3JpcHRvcihrZXlzOiBzdHJpbmdbXSk6IFRhYmxlO1xuICBwdWJsaWMgZGVzY3JpcHRvcihcbiAgICBrZXlPcktleXNPck1hcDogc3RyaW5nIHwgc3RyaW5nW10gfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gICk6IFRhYmxlIHtcbiAgICBpZiAoIXRoaXMucHJvdG8uZmllbGREZXNjcmlwdG9yKSB7XG4gICAgICB0aGlzLnByb3RvLmZpZWxkRGVzY3JpcHRvciA9IHt9O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGtleU9yS2V5c09yTWFwID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aGlzLnByb3RvLmZpZWxkRGVzY3JpcHRvcltrZXlPcktleXNPck1hcF0gPSBkZXNjcmlwdGlvbiB8fCBcIlwiO1xuICAgIH0gZWxzZSBpZiAoa2V5T3JLZXlzT3JNYXAgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAga2V5T3JLZXlzT3JNYXAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICB0aGlzLnByb3RvLmZpZWxkRGVzY3JpcHRvcltrZXldID0gXCJcIjtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3Qua2V5cyhrZXlPcktleXNPck1hcCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICB0aGlzLnByb3RvLmZpZWxkRGVzY3JpcHRvcltrZXldID0ga2V5T3JLZXlzT3JNYXBba2V5XSB8fCBcIlwiO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGUoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBUYWJsZUNvbnRleHQodGhpcyk7XG5cbiAgICB0aGlzLnByb3RvLnF1ZXJ5ID0gY29udGV4dC5hcHBseSh0aGlzLmNvbnRleHRhYmxlUXVlcnkpO1xuXG4gICAgaWYgKHRoaXMuY29udGV4dGFibGVXaGVyZSkge1xuICAgICAgdGhpcy5wcm90by53aGVyZSA9IGNvbnRleHQuYXBwbHkodGhpcy5jb250ZXh0YWJsZVdoZXJlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRleHRhYmxlUHJlT3BzLmZvckVhY2goY29udGV4dGFibGVQcmVPcHMgPT4ge1xuICAgICAgY29uc3QgYXBwbGllZFByZXMgPSBjb250ZXh0LmFwcGx5KGNvbnRleHRhYmxlUHJlT3BzKTtcbiAgICAgIHRoaXMucHJvdG8ucHJlT3BzID0gKHRoaXMucHJvdG8ucHJlT3BzIHx8IFtdKS5jb25jYXQoXG4gICAgICAgIHR5cGVvZiBhcHBsaWVkUHJlcyA9PSBcInN0cmluZ1wiID8gW2FwcGxpZWRQcmVzXSA6IGFwcGxpZWRQcmVzXG4gICAgICApO1xuICAgIH0pO1xuICAgIHRoaXMuY29udGV4dGFibGVQcmVPcHMgPSBbXTtcblxuICAgIHRoaXMuY29udGV4dGFibGVQb3N0T3BzLmZvckVhY2goY29udGV4dGFibGVQb3N0T3BzID0+IHtcbiAgICAgIGNvbnN0IGFwcGxpZWRQb3N0cyA9IGNvbnRleHQuYXBwbHkoY29udGV4dGFibGVQb3N0T3BzKTtcbiAgICAgIHRoaXMucHJvdG8ucG9zdE9wcyA9ICh0aGlzLnByb3RvLnBvc3RPcHMgfHwgW10pLmNvbmNhdChcbiAgICAgICAgdHlwZW9mIGFwcGxpZWRQb3N0cyA9PSBcInN0cmluZ1wiID8gW2FwcGxpZWRQb3N0c10gOiBhcHBsaWVkUG9zdHNcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy5jb250ZXh0YWJsZVBvc3RPcHMgPSBbXTtcblxuICAgIHJldHVybiB0aGlzLnByb3RvO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREZXBlbmRlbmN5KGRlcGVuZGVuY3k6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3RvLmRlcGVuZGVuY2llcy5pbmRleE9mKGRlcGVuZGVuY3kpIDwgMCkge1xuICAgICAgdGhpcy5wcm90by5kZXBlbmRlbmNpZXMucHVzaChkZXBlbmRlbmN5KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVDb250ZXh0IHtcbiAgY29uZmlnOiAoY29uZmlnOiBUQ29uZmlnKSA9PiBzdHJpbmc7XG4gIHNlbGY6ICgpID0+IHN0cmluZztcbiAgcmVmOiAobmFtZTogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIHJlc29sdmU6IChuYW1lOiBzdHJpbmcpID0+IHN0cmluZztcbiAgdHlwZTogKHR5cGU6IFRhYmxlVHlwZSkgPT4gc3RyaW5nO1xuICB3aGVyZTogKHdoZXJlOiBUQ29udGV4dGFibGU8c3RyaW5nPikgPT4gc3RyaW5nO1xuICBwcmVPcHM6IChzdGF0ZW1lbnQ6IFRDb250ZXh0YWJsZTxzdHJpbmcgfCBzdHJpbmdbXT4pID0+IHN0cmluZztcbiAgcG9zdE9wczogKHN0YXRlbWVudDogVENvbnRleHRhYmxlPHN0cmluZyB8IHN0cmluZ1tdPikgPT4gc3RyaW5nO1xuICBkaXNhYmxlZDogKCkgPT4gc3RyaW5nO1xuICByZWRzaGlmdDogKHJlZHNoaWZ0OiBkYXRhZm9ybS5JUmVkc2hpZnRPcHRpb25zKSA9PiBzdHJpbmc7XG4gIGJpZ3F1ZXJ5OiAoYmlncXVlcnk6IGRhdGFmb3JtLklCaWdRdWVyeU9wdGlvbnMpID0+IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiAobmFtZTogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIGRlc2NyaXB0b3I6IChcbiAgICBrZXlPcktleXNPck1hcDogc3RyaW5nIHwgc3RyaW5nW10gfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gICkgPT4gc3RyaW5nO1xuICBkZXNjcmliZTogKGtleTogc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZykgPT4gc3RyaW5nO1xuICBhcHBseTogPFQ+KHZhbHVlOiBUQ29udGV4dGFibGU8VD4pID0+IFQ7XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbnRleHQgaW1wbGVtZW50cyBJVGFibGVDb250ZXh0IHtcbiAgcHJpdmF0ZSB0YWJsZT86IFRhYmxlO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlOiBUYWJsZSkge1xuICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWcoY29uZmlnOiBUQ29uZmlnKSB7XG4gICAgdGhpcy50YWJsZS5jb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZSh0aGlzLnRhYmxlLnByb3RvLm5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlZihuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQWN0aW9uIG5hbWUgaXMgbm90IHNwZWNpZmllZGA7XG4gICAgICB0aGlzLnRhYmxlLnNlc3Npb24uY29tcGlsZUVycm9yKG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICB0aGlzLnRhYmxlLmRlcGVuZGVuY2llcyhuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUuc2Vzc2lvbi5yZXNvbHZlKG5hbWUpO1xuICB9XG5cbiAgcHVibGljIHR5cGUodHlwZTogVGFibGVUeXBlKSB7XG4gICAgdGhpcy50YWJsZS50eXBlKHR5cGUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHdoZXJlKHdoZXJlOiBUQ29udGV4dGFibGU8c3RyaW5nPikge1xuICAgIHRoaXMudGFibGUud2hlcmUod2hlcmUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHByZU9wcyhzdGF0ZW1lbnQ6IFRDb250ZXh0YWJsZTxzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICB0aGlzLnRhYmxlLnByZU9wcyhzdGF0ZW1lbnQpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHBvc3RPcHMoc3RhdGVtZW50OiBUQ29udGV4dGFibGU8c3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gICAgdGhpcy50YWJsZS5wb3N0T3BzKHN0YXRlbWVudCk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZWQoKSB7XG4gICAgdGhpcy50YWJsZS5kaXNhYmxlZCgpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHJlZHNoaWZ0KHJlZHNoaWZ0OiBkYXRhZm9ybS5JUmVkc2hpZnRPcHRpb25zKSB7XG4gICAgdGhpcy50YWJsZS5yZWRzaGlmdChyZWRzaGlmdCk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgYmlncXVlcnkoYmlncXVlcnk6IGRhdGFmb3JtLklCaWdRdWVyeU9wdGlvbnMpIHtcbiAgICB0aGlzLnRhYmxlLmJpZ3F1ZXJ5KGJpZ3F1ZXJ5KTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXMobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy50YWJsZS5kZXBlbmRlbmNpZXMobmFtZSk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpcHRvcihrZXk6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXNjcmlwdG9yKG1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHN0cmluZztcbiAgcHVibGljIGRlc2NyaXB0b3Ioa2V5czogc3RyaW5nW10pOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXNjcmlwdG9yKFxuICAgIGtleU9yS2V5c09yTWFwOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgKTogc3RyaW5nIHtcbiAgICB0aGlzLnRhYmxlLmRlc2NyaXB0b3Ioa2V5T3JLZXlzT3JNYXAgYXMgYW55LCBkZXNjcmlwdGlvbik7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpYmUoa2V5OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKSB7XG4gICAgdGhpcy50YWJsZS5kZXNjcmlwdG9yKGtleSwgZGVzY3JpcHRpb24pO1xuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHk8VD4odmFsdWU6IFRDb250ZXh0YWJsZTxUPik6IFQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuICh2YWx1ZSBhcyBhbnkpKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQ0EsNkNBQTRDO0lBRTVDLElBQVksVUFLWDtJQUxELFdBQVksVUFBVTtRQUNwQiw2QkFBZSxDQUFBO1FBQ2YsMkJBQWEsQ0FBQTtRQUNiLHlDQUEyQixDQUFBO1FBQzNCLCtCQUFpQixDQUFBO0lBQ25CLENBQUMsRUFMVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQUtyQjtJQUNELElBQVksY0FJWDtJQUpELFdBQVksY0FBYztRQUN4QiwrQkFBYSxDQUFBO1FBQ2IsNkJBQVcsQ0FBQTtRQUNYLDZCQUFXLENBQUE7SUFDYixDQUFDLEVBSlcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUFJekI7SUFDRCxJQUFZLGNBR1g7SUFIRCxXQUFZLGNBQWM7UUFDeEIsdUNBQXFCLENBQUE7UUFDckIsNkNBQTJCLENBQUE7SUFDN0IsQ0FBQyxFQUhXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBR3pCO0lBRVksUUFBQSxZQUFZLEdBQUc7UUFDMUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkIsVUFBVTtZQUNWLFVBQVU7WUFDVixRQUFRO1lBQ1IsU0FBUztZQUNULFlBQVk7WUFDWixVQUFVO1lBQ1YsT0FBTztZQUNQLGlCQUFpQjtTQUNsQjtLQUNGLENBQUM7SUFpQkYsTUFBYSxLQUFLO1FBQWxCO1lBQ1MsVUFBSyxHQUFtQixpQkFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ25ELElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxLQUFLO2dCQUNmLElBQUksRUFBRSxFQUFFO2FBQ1QsQ0FBQyxDQUFDO1lBUUssc0JBQWlCLEdBQTJDLEVBQUUsQ0FBQztZQUMvRCx1QkFBa0IsR0FBMkMsRUFBRSxDQUFDO1FBd0oxRSxDQUFDO1FBdEpR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YWZvcm0vY29yZS9zZXNzaW9uXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbmV4cG9ydCBlbnVtIFRhYmxlVHlwZXMge1xuICBUQUJMRSA9IFwidGFibGVcIixcbiAgVklFVyA9IFwidmlld1wiLFxuICBJTkNSRU1FTlRBTCA9IFwiaW5jcmVtZW50YWxcIixcbiAgSU5MSU5FID0gXCJpbmxpbmVcIlxufVxuZXhwb3J0IGVudW0gRGlzdFN0eWxlVHlwZXMge1xuICBFVkVOID0gXCJldmVuXCIsXG4gIEtFWSA9IFwia2V5XCIsXG4gIEFMTCA9IFwiYWxsXCJcbn1cbmV4cG9ydCBlbnVtIFNvcnRTdHlsZVR5cGVzIHtcbiAgQ09NUE9VTkQgPSBcImNvbXBvdW5kXCIsXG4gIElOVEVSTEVBVkVEID0gXCJpbnRlcmxlYXZlZFwiXG59XG5cbmV4cG9ydCBjb25zdCBpZ25vcmVkUHJvcHMgPSB7XG4gIFtUYWJsZVR5cGVzLklOTElORV06IFtcbiAgICBcImJpZ3F1ZXJ5XCIsXG4gICAgXCJyZWRzaGlmdFwiLFxuICAgIFwicHJlT3BzXCIsXG4gICAgXCJwb3N0T3BzXCIsXG4gICAgXCJkZXNjcmlwdG9yXCIsXG4gICAgXCJkaXNhYmxlZFwiLFxuICAgIFwid2hlcmVcIixcbiAgICBcImZpZWxkRGVzY3JpcHRvclwiXG4gIF1cbn07XG5cbnR5cGUgVmFsdWVPZjxUPiA9IFRba2V5b2YgVF07XG5leHBvcnQgdHlwZSBUQ29udGV4dGFibGU8VD4gPSBUIHwgKChjdHg6IFRhYmxlQ29udGV4dCkgPT4gVCk7XG5leHBvcnQgdHlwZSBUYWJsZVR5cGUgPSBWYWx1ZU9mPFRhYmxlVHlwZXM+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRDb25maWcge1xuICB0eXBlPzogVGFibGVUeXBlO1xuICBkZXBlbmRlbmNpZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdGFncz86IHN0cmluZ1tdO1xuICBkZXNjcmlwdG9yPzogc3RyaW5nW10gfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHByb3RlY3RlZD86IGJvb2xlYW47XG4gIHJlZHNoaWZ0PzogZGF0YWZvcm0uSVJlZHNoaWZ0T3B0aW9ucztcbiAgYmlncXVlcnk/OiBkYXRhZm9ybS5JQmlnUXVlcnlPcHRpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGUge1xuICBwdWJsaWMgcHJvdG86IGRhdGFmb3JtLlRhYmxlID0gZGF0YWZvcm0uVGFibGUuY3JlYXRlKHtcbiAgICB0eXBlOiBcInZpZXdcIixcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgdGFnczogW11cbiAgfSk7XG5cbiAgLy8gSG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgU2Vzc2lvbiBpbnN0YW5jZS5cbiAgcHVibGljIHNlc3Npb246IFNlc3Npb247XG5cbiAgLy8gV2UgZGVsYXkgY29udGV4dGlmaWNhdGlvbiB1bnRpbCB0aGUgZmluYWwgY29tcGlsZSBzdGVwLCBzbyBob2xkIHRoZXNlIGhlcmUgZm9yIG5vdy5cbiAgcHVibGljIGNvbnRleHRhYmxlUXVlcnk6IFRDb250ZXh0YWJsZTxzdHJpbmc+O1xuICBwcml2YXRlIGNvbnRleHRhYmxlV2hlcmU6IFRDb250ZXh0YWJsZTxzdHJpbmc+O1xuICBwcml2YXRlIGNvbnRleHRhYmxlUHJlT3BzOiBBcnJheTxUQ29udGV4dGFibGU8c3RyaW5nIHwgc3RyaW5nW10+PiA9IFtdO1xuICBwcml2YXRlIGNvbnRleHRhYmxlUG9zdE9wczogQXJyYXk8VENvbnRleHRhYmxlPHN0cmluZyB8IHN0cmluZ1tdPj4gPSBbXTtcblxuICBwdWJsaWMgY29uZmlnKGNvbmZpZzogVENvbmZpZykge1xuICAgIGlmIChjb25maWcudHlwZSkge1xuICAgICAgdGhpcy50eXBlKGNvbmZpZy50eXBlKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzKGNvbmZpZy5kZXBlbmRlbmNpZXMpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmRlc2NyaXB0b3IpIHtcbiAgICAgIGlmIChjb25maWcuZGVzY3JpcHRvciBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRvcihjb25maWcuZGVzY3JpcHRvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlc2NyaXB0b3IoY29uZmlnLmRlc2NyaXB0b3IpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29uZmlnLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmRpc2FibGVkKCk7XG4gICAgfVxuICAgIGlmIChjb25maWcucmVkc2hpZnQpIHtcbiAgICAgIHRoaXMucmVkc2hpZnQoY29uZmlnLnJlZHNoaWZ0KTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5iaWdxdWVyeSkge1xuICAgICAgdGhpcy5iaWdxdWVyeShjb25maWcuYmlncXVlcnkpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnRhZ3MpIHtcbiAgICAgIHRoaXMudGFncyhjb25maWcudGFncyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdHlwZSh0eXBlOiBUYWJsZVR5cGUpIHtcbiAgICB0aGlzLnByb3RvLnR5cGUgPSB0eXBlIGFzIHN0cmluZztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBxdWVyeShxdWVyeTogVENvbnRleHRhYmxlPHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUXVlcnkgPSBxdWVyeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB3aGVyZSh3aGVyZTogVENvbnRleHRhYmxlPHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlV2hlcmUgPSB3aGVyZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBwcmVPcHMocHJlczogVENvbnRleHRhYmxlPHN0cmluZyB8IHN0cmluZ1tdPikge1xuICAgIHRoaXMuY29udGV4dGFibGVQcmVPcHMucHVzaChwcmVzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBwb3N0T3BzKHBvc3RzOiBUQ29udGV4dGFibGU8c3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gICAgdGhpcy5jb250ZXh0YWJsZVBvc3RPcHMucHVzaChwb3N0cyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZWQoKSB7XG4gICAgdGhpcy5wcm90by5kaXNhYmxlZCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcmVkc2hpZnQocmVkc2hpZnQ6IGRhdGFmb3JtLklSZWRzaGlmdE9wdGlvbnMpIHtcbiAgICB0aGlzLnByb3RvLnJlZHNoaWZ0ID0gZGF0YWZvcm0uUmVkc2hpZnRPcHRpb25zLmNyZWF0ZShyZWRzaGlmdCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYmlncXVlcnkoYmlncXVlcnk6IGRhdGFmb3JtLklCaWdRdWVyeU9wdGlvbnMpIHtcbiAgICB0aGlzLnByb3RvLmJpZ3F1ZXJ5ID0gZGF0YWZvcm0uQmlnUXVlcnlPcHRpb25zLmNyZWF0ZShiaWdxdWVyeSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVwZW5kZW5jaWVzKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGNvbnN0IG5ld0RlcGVuZGVuY2llcyA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IFt2YWx1ZV0gOiB2YWx1ZTtcbiAgICBuZXdEZXBlbmRlbmNpZXMuZm9yRWFjaChkID0+IHtcbiAgICAgIGNvbnN0IHRhYmxlID0gdGhpcy5zZXNzaW9uLnRhYmxlc1tkXTtcblxuICAgICAgaWYgKCEhdGFibGUgJiYgdGFibGUucHJvdG8udHlwZSA9PT0gXCJpbmxpbmVcIikge1xuICAgICAgICB0YWJsZS5wcm90by5kZXBlbmRlbmNpZXMuZm9yRWFjaChjaGlsZERlcCA9PiB0aGlzLmFkZERlcGVuZGVuY3koY2hpbGREZXApKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWRkRGVwZW5kZW5jeShkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB0YWdzKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGNvbnN0IG5ld1RhZ3MgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBbdmFsdWVdIDogdmFsdWU7XG4gICAgbmV3VGFncy5mb3JFYWNoKHQgPT4ge1xuICAgICAgY29uc3QgdGFibGUgPSB0aGlzLnNlc3Npb24udGFibGVzW3RdO1xuICAgICAgdGhpcy5wcm90by50YWdzLnB1c2godCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpcHRvcihrZXk6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiBUYWJsZTtcbiAgcHVibGljIGRlc2NyaXB0b3IobWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogVGFibGU7XG4gIHB1YmxpYyBkZXNjcmlwdG9yKGtleXM6IHN0cmluZ1tdKTogVGFibGU7XG4gIHB1YmxpYyBkZXNjcmlwdG9yKFxuICAgIGtleU9yS2V5c09yTWFwOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgKTogVGFibGUge1xuICAgIGlmICghdGhpcy5wcm90by5maWVsZERlc2NyaXB0b3IpIHtcbiAgICAgIHRoaXMucHJvdG8uZmllbGREZXNjcmlwdG9yID0ge307XG4gICAgfVxuICAgIGlmICh0eXBlb2Yga2V5T3JLZXlzT3JNYXAgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMucHJvdG8uZmllbGREZXNjcmlwdG9yW2tleU9yS2V5c09yTWFwXSA9IGRlc2NyaXB0aW9uIHx8IFwiXCI7XG4gICAgfSBlbHNlIGlmIChrZXlPcktleXNPck1hcCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBrZXlPcktleXNPck1hcC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHRoaXMucHJvdG8uZmllbGREZXNjcmlwdG9yW2tleV0gPSBcIlwiO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5rZXlzKGtleU9yS2V5c09yTWFwKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHRoaXMucHJvdG8uZmllbGREZXNjcmlwdG9yW2tleV0gPSBrZXlPcktleXNPck1hcFtrZXldIHx8IFwiXCI7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZSgpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gbmV3IFRhYmxlQ29udGV4dCh0aGlzKTtcblxuICAgIHRoaXMucHJvdG8ucXVlcnkgPSBjb250ZXh0LmFwcGx5KHRoaXMuY29udGV4dGFibGVRdWVyeSk7XG5cbiAgICBpZiAodGhpcy5jb250ZXh0YWJsZVdoZXJlKSB7XG4gICAgICB0aGlzLnByb3RvLndoZXJlID0gY29udGV4dC5hcHBseSh0aGlzLmNvbnRleHRhYmxlV2hlcmUpO1xuICAgIH1cblxuICAgIHRoaXMuY29udGV4dGFibGVQcmVPcHMuZm9yRWFjaChjb250ZXh0YWJsZVByZU9wcyA9PiB7XG4gICAgICBjb25zdCBhcHBsaWVkUHJlcyA9IGNvbnRleHQuYXBwbHkoY29udGV4dGFibGVQcmVPcHMpO1xuICAgICAgdGhpcy5wcm90by5wcmVPcHMgPSAodGhpcy5wcm90by5wcmVPcHMgfHwgW10pLmNvbmNhdChcbiAgICAgICAgdHlwZW9mIGFwcGxpZWRQcmVzID09IFwic3RyaW5nXCIgPyBbYXBwbGllZFByZXNdIDogYXBwbGllZFByZXNcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy5jb250ZXh0YWJsZVByZU9wcyA9IFtdO1xuXG4gICAgdGhpcy5jb250ZXh0YWJsZVBvc3RPcHMuZm9yRWFjaChjb250ZXh0YWJsZVBvc3RPcHMgPT4ge1xuICAgICAgY29uc3QgYXBwbGllZFBvc3RzID0gY29udGV4dC5hcHBseShjb250ZXh0YWJsZVBvc3RPcHMpO1xuICAgICAgdGhpcy5wcm90by5wb3N0T3BzID0gKHRoaXMucHJvdG8ucG9zdE9wcyB8fCBbXSkuY29uY2F0KFxuICAgICAgICB0eXBlb2YgYXBwbGllZFBvc3RzID09IFwic3RyaW5nXCIgPyBbYXBwbGllZFBvc3RzXSA6IGFwcGxpZWRQb3N0c1xuICAgICAgKTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbnRleHRhYmxlUG9zdE9wcyA9IFtdO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvdG87XG4gIH1cblxuICBwcml2YXRlIGFkZERlcGVuZGVuY3koZGVwZW5kZW5jeTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvdG8uZGVwZW5kZW5jaWVzLmluZGV4T2YoZGVwZW5kZW5jeSkgPCAwKSB7XG4gICAgICB0aGlzLnByb3RvLmRlcGVuZGVuY2llcy5wdXNoKGRlcGVuZGVuY3kpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUNvbnRleHQge1xuICBjb25maWc6IChjb25maWc6IFRDb25maWcpID0+IHN0cmluZztcbiAgc2VsZjogKCkgPT4gc3RyaW5nO1xuICByZWY6IChuYW1lOiBzdHJpbmcpID0+IHN0cmluZztcbiAgcmVzb2x2ZTogKG5hbWU6IHN0cmluZykgPT4gc3RyaW5nO1xuICB0eXBlOiAodHlwZTogVGFibGVUeXBlKSA9PiBzdHJpbmc7XG4gIHdoZXJlOiAod2hlcmU6IFRDb250ZXh0YWJsZTxzdHJpbmc+KSA9PiBzdHJpbmc7XG4gIHByZU9wczogKHN0YXRlbWVudDogVENvbnRleHRhYmxlPHN0cmluZyB8IHN0cmluZ1tdPikgPT4gc3RyaW5nO1xuICBwb3N0T3BzOiAoc3RhdGVtZW50OiBUQ29udGV4dGFibGU8c3RyaW5nIHwgc3RyaW5nW10+KSA9PiBzdHJpbmc7XG4gIGRpc2FibGVkOiAoKSA9PiBzdHJpbmc7XG4gIHJlZHNoaWZ0OiAocmVkc2hpZnQ6IGRhdGFmb3JtLklSZWRzaGlmdE9wdGlvbnMpID0+IHN0cmluZztcbiAgYmlncXVlcnk6IChiaWdxdWVyeTogZGF0YWZvcm0uSUJpZ1F1ZXJ5T3B0aW9ucykgPT4gc3RyaW5nO1xuICBkZXBlbmRlbmNpZXM6IChuYW1lOiBzdHJpbmcpID0+IHN0cmluZztcbiAgZGVzY3JpcHRvcjogKFxuICAgIGtleU9yS2V5c09yTWFwOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgKSA9PiBzdHJpbmc7XG4gIGRlc2NyaWJlOiAoa2V5OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIGFwcGx5OiA8VD4odmFsdWU6IFRDb250ZXh0YWJsZTxUPikgPT4gVDtcbiAgdGFnczogKG5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbnRleHQgaW1wbGVtZW50cyBJVGFibGVDb250ZXh0IHtcbiAgcHJpdmF0ZSB0YWJsZT86IFRhYmxlO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlOiBUYWJsZSkge1xuICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWcoY29uZmlnOiBUQ29uZmlnKSB7XG4gICAgdGhpcy50YWJsZS5jb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZSh0aGlzLnRhYmxlLnByb3RvLm5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlZihuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQWN0aW9uIG5hbWUgaXMgbm90IHNwZWNpZmllZGA7XG4gICAgICB0aGlzLnRhYmxlLnNlc3Npb24uY29tcGlsZUVycm9yKG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICB0aGlzLnRhYmxlLmRlcGVuZGVuY2llcyhuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG5hbWUpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUuc2Vzc2lvbi5yZXNvbHZlKG5hbWUpO1xuICB9XG5cbiAgcHVibGljIHR5cGUodHlwZTogVGFibGVUeXBlKSB7XG4gICAgdGhpcy50YWJsZS50eXBlKHR5cGUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHdoZXJlKHdoZXJlOiBUQ29udGV4dGFibGU8c3RyaW5nPikge1xuICAgIHRoaXMudGFibGUud2hlcmUod2hlcmUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHByZU9wcyhzdGF0ZW1lbnQ6IFRDb250ZXh0YWJsZTxzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICB0aGlzLnRhYmxlLnByZU9wcyhzdGF0ZW1lbnQpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHBvc3RPcHMoc3RhdGVtZW50OiBUQ29udGV4dGFibGU8c3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gICAgdGhpcy50YWJsZS5wb3N0T3BzKHN0YXRlbWVudCk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZWQoKSB7XG4gICAgdGhpcy50YWJsZS5kaXNhYmxlZCgpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHJlZHNoaWZ0KHJlZHNoaWZ0OiBkYXRhZm9ybS5JUmVkc2hpZnRPcHRpb25zKSB7XG4gICAgdGhpcy50YWJsZS5yZWRzaGlmdChyZWRzaGlmdCk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgYmlncXVlcnkoYmlncXVlcnk6IGRhdGFmb3JtLklCaWdRdWVyeU9wdGlvbnMpIHtcbiAgICB0aGlzLnRhYmxlLmJpZ3F1ZXJ5KGJpZ3F1ZXJ5KTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXMobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy50YWJsZS5kZXBlbmRlbmNpZXMobmFtZSk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpcHRvcihrZXk6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcpOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXNjcmlwdG9yKG1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHN0cmluZztcbiAgcHVibGljIGRlc2NyaXB0b3Ioa2V5czogc3RyaW5nW10pOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXNjcmlwdG9yKFxuICAgIGtleU9yS2V5c09yTWFwOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgKTogc3RyaW5nIHtcbiAgICB0aGlzLnRhYmxlLmRlc2NyaXB0b3Ioa2V5T3JLZXlzT3JNYXAgYXMgYW55LCBkZXNjcmlwdGlvbik7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpYmUoa2V5OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKSB7XG4gICAgdGhpcy50YWJsZS5kZXNjcmlwdG9yKGtleSwgZGVzY3JpcHRpb24pO1xuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHk8VD4odmFsdWU6IFRDb250ZXh0YWJsZTxUPik6IFQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuICh2YWx1ZSBhcyBhbnkpKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG4gIHB1YmxpYyB0YWdzKHRhZ3M6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy50YWJsZS50YWdzKHRhZ3MpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG59XG4iXX0=

@@ -124,4 +124,7 @@ (function (factory) {

}
tags(tags) {
return "";
}
}
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUVBLDZDQUE0QztJQUk1QyxNQUFhLElBQUk7UUFBakI7WUFDUyxVQUFLLEdBQW1CLGlCQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRy9DLHNCQUFpQixHQUFnRCxFQUFFLENBQUM7UUEwQzdFLENBQUM7UUFyQ1EsT0FBTyxDQUFDLGFBQXFCO1lBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVNLEtBQUssQ0FBQyxPQUFlLEVBQUUsZ0JBQXNDO1lBQ2xFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxNQUFNLENBQUMsZ0JBQXNDO1lBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxPQUFPO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztnQkFDckYsT0FBTzthQUNSO1lBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsYUFBYSxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzFGLE9BQU87YUFDUjtZQUNELElB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UUFFTSxZQUFZLENBQUMsSUFBWTtZQUM5QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxVQUFVLENBQ2YsY0FBNkQsRUFDN0QsV0FBb0I7WUFFcEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxXQUFvQjtZQUMvQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7S0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlc3Npb24gfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvc2Vzc2lvblwiO1xuaW1wb3J0ICogYXMgdGFibGUgZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3RhYmxlXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbmV4cG9ydCB0eXBlIFRDb250ZXh0YWJsZTxUPiA9IFQgfCAoKGN0eDogVGVzdENvbnRleHQpID0+IFQpO1xuXG5leHBvcnQgY2xhc3MgVGVzdCB7XG4gIHB1YmxpYyBwcm90bzogZGF0YWZvcm0uSVRlc3QgPSBkYXRhZm9ybS5UZXN0LmNyZWF0ZSgpO1xuXG4gIHB1YmxpYyBzZXNzaW9uOiBTZXNzaW9uO1xuICBwdWJsaWMgY29udGV4dGFibGVJbnB1dHM6IHsgW3JlZk5hbWU6IHN0cmluZ106IFRDb250ZXh0YWJsZTxzdHJpbmc+IH0gPSB7fTtcblxuICBwcml2YXRlIGRhdGFzZXRUb1Rlc3Q6IHN0cmluZztcbiAgcHJpdmF0ZSBjb250ZXh0YWJsZVF1ZXJ5OiBUQ29udGV4dGFibGU8c3RyaW5nPjtcblxuICBwdWJsaWMgZGF0YXNldChkYXRhc2V0VG9UZXN0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRhdGFzZXRUb1Rlc3QgPSBkYXRhc2V0VG9UZXN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGlucHV0KHJlZk5hbWU6IHN0cmluZywgY29udGV4dGFibGVRdWVyeTogVENvbnRleHRhYmxlPHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlSW5wdXRzW3JlZk5hbWVdID0gY29udGV4dGFibGVRdWVyeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBleHBlY3QoY29udGV4dGFibGVRdWVyeTogVENvbnRleHRhYmxlPHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUXVlcnkgPSBjb250ZXh0YWJsZVF1ZXJ5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGUoKSB7XG4gICAgaWYgKCF0aGlzLmRhdGFzZXRUb1Rlc3QpIHtcbiAgICAgIHRoaXMuc2Vzc2lvbi5jb21waWxlRXJyb3IobmV3IEVycm9yKFwiVGVzdHMgbXVzdCBvcGVyYXRlIHVwb24gYSBzcGVjaWZpZWQgZGF0YXNldC5cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0ID0gdGhpcy5zZXNzaW9uLnRhYmxlc1t0aGlzLmRhdGFzZXRUb1Rlc3RdO1xuICAgIGlmICghZGF0YXNldCkge1xuICAgICAgdGhpcy5zZXNzaW9uLmNvbXBpbGVFcnJvcihuZXcgRXJyb3IoYERhdGFzZXQgJHt0aGlzLmRhdGFzZXRUb1Rlc3R9IGNvdWxkIG5vdCBiZSBmb3VuZC5gKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChkYXRhc2V0LnByb3RvLnR5cGUgPT09IFwiaW5jcmVtZW50YWxcIikge1xuICAgICAgdGhpcy5zZXNzaW9uLmNvbXBpbGVFcnJvcihcbiAgICAgICAgbmV3IEVycm9yKGBSdW5uaW5nIHRlc3RzIG9uIGluY3JlbWVudGFsIGRhdGFzZXRzIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLmApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0ZXN0Q29udGV4dCA9IG5ldyBUZXN0Q29udGV4dCh0aGlzKTtcbiAgICBjb25zdCByZWZSZXBsYWNpbmdDb250ZXh0ID0gbmV3IFJlZlJlcGxhY2luZ0NvbnRleHQodGVzdENvbnRleHQpO1xuICAgIHRoaXMucHJvdG8udGVzdFF1ZXJ5ID0gcmVmUmVwbGFjaW5nQ29udGV4dC5hcHBseShkYXRhc2V0LmNvbnRleHRhYmxlUXVlcnkpO1xuICAgIHRoaXMucHJvdG8uZXhwZWN0ZWRPdXRwdXRRdWVyeSA9IHRlc3RDb250ZXh0LmFwcGx5KHRoaXMuY29udGV4dGFibGVRdWVyeSk7XG4gICAgcmV0dXJuIHRoaXMucHJvdG87XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlc3RDb250ZXh0IHtcbiAgcHVibGljIHJlYWRvbmx5IHRlc3Q6IFRlc3Q7XG4gIGNvbnN0cnVjdG9yKHRlc3Q6IFRlc3QpIHtcbiAgICB0aGlzLnRlc3QgPSB0ZXN0O1xuICB9XG5cbiAgcHVibGljIGFwcGx5PFQ+KHZhbHVlOiBUQ29udGV4dGFibGU8VD4pOiBUIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiAodmFsdWUgYXMgYW55KSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBSZWZSZXBsYWNpbmdDb250ZXh0IGltcGxlbWVudHMgdGFibGUuSVRhYmxlQ29udGV4dCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVzdENvbnRleHQ6IFRlc3RDb250ZXh0O1xuXG4gIGNvbnN0cnVjdG9yKHRlc3RDb250ZXh0OiBUZXN0Q29udGV4dCkge1xuICAgIHRoaXMudGVzdENvbnRleHQgPSB0ZXN0Q29udGV4dDtcbiAgfVxuXG4gIHB1YmxpYyByZWYobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKG5hbWU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy50ZXN0Q29udGV4dC50ZXN0LmNvbnRleHRhYmxlSW5wdXRzW25hbWVdKSB7XG4gICAgICB0aGlzLnRlc3RDb250ZXh0LnRlc3Quc2Vzc2lvbi5jb21waWxlRXJyb3IoXG4gICAgICAgIG5ldyBFcnJvcihgSW5wdXQgZm9yIGRhdGFzZXQgXCIke25hbWV9XCIgaGFzIG5vdCBiZWVuIHByb3ZpZGVkLmApXG4gICAgICApO1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBgKCR7dGhpcy50ZXN0Q29udGV4dC5hcHBseSh0aGlzLnRlc3RDb250ZXh0LnRlc3QuY29udGV4dGFibGVJbnB1dHNbbmFtZV0pfSlgO1xuICB9XG5cbiAgcHVibGljIGFwcGx5PFQ+KHZhbHVlOiB0YWJsZS5UQ29udGV4dGFibGU8VD4pOiBUIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiAodmFsdWUgYXMgYW55KSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb25maWcoY29uZmlnOiB0YWJsZS5UQ29uZmlnKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgc2VsZigpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyB0eXBlKHR5cGU6IHRhYmxlLlRhYmxlVHlwZSkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHdoZXJlKHdoZXJlOiB0YWJsZS5UQ29udGV4dGFibGU8c3RyaW5nPikge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHByZU9wcyhzdGF0ZW1lbnQ6IHRhYmxlLlRDb250ZXh0YWJsZTxzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0T3BzKHN0YXRlbWVudDogdGFibGUuVENvbnRleHRhYmxlPHN0cmluZyB8IHN0cmluZ1tdPikge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVkKCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHJlZHNoaWZ0KHJlZHNoaWZ0OiBkYXRhZm9ybS5JUmVkc2hpZnRPcHRpb25zKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgYmlncXVlcnkoYmlncXVlcnk6IGRhdGFmb3JtLklCaWdRdWVyeU9wdGlvbnMpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXMobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpcHRvcihcbiAgICBrZXlPcktleXNPck1hcDogc3RyaW5nIHwgc3RyaW5nW10gfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpYmUoa2V5OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUVBLDZDQUE0QztJQUk1QyxNQUFhLElBQUk7UUFBakI7WUFDUyxVQUFLLEdBQW1CLGlCQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRy9DLHNCQUFpQixHQUFnRCxFQUFFLENBQUM7UUEwQzdFLENBQUM7UUFyQ1EsT0FBTyxDQUFDLGFBQXFCO1lBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVNLEtBQUssQ0FBQyxPQUFlLEVBQUUsZ0JBQXNDO1lBQ2xFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxNQUFNLENBQUMsZ0JBQXNDO1lBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxPQUFPO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztnQkFDckYsT0FBTzthQUNSO1lBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsYUFBYSxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzFGLE9BQU87YUFDUjtZQUNELElB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UUFFTSxZQUFZLENBQUMsSUFBWTtZQUM5QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxVQUFVLENBQ2YsY0FBNkQsRUFDN0QsV0FBb0I7WUFFcEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxXQUFvQjtZQUMvQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxJQUFJLENBQUMsSUFBYztZQUN4QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7S0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlc3Npb24gfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvc2Vzc2lvblwiO1xuaW1wb3J0ICogYXMgdGFibGUgZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3RhYmxlXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbmV4cG9ydCB0eXBlIFRDb250ZXh0YWJsZTxUPiA9IFQgfCAoKGN0eDogVGVzdENvbnRleHQpID0+IFQpO1xuXG5leHBvcnQgY2xhc3MgVGVzdCB7XG4gIHB1YmxpYyBwcm90bzogZGF0YWZvcm0uSVRlc3QgPSBkYXRhZm9ybS5UZXN0LmNyZWF0ZSgpO1xuXG4gIHB1YmxpYyBzZXNzaW9uOiBTZXNzaW9uO1xuICBwdWJsaWMgY29udGV4dGFibGVJbnB1dHM6IHsgW3JlZk5hbWU6IHN0cmluZ106IFRDb250ZXh0YWJsZTxzdHJpbmc+IH0gPSB7fTtcblxuICBwcml2YXRlIGRhdGFzZXRUb1Rlc3Q6IHN0cmluZztcbiAgcHJpdmF0ZSBjb250ZXh0YWJsZVF1ZXJ5OiBUQ29udGV4dGFibGU8c3RyaW5nPjtcblxuICBwdWJsaWMgZGF0YXNldChkYXRhc2V0VG9UZXN0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRhdGFzZXRUb1Rlc3QgPSBkYXRhc2V0VG9UZXN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGlucHV0KHJlZk5hbWU6IHN0cmluZywgY29udGV4dGFibGVRdWVyeTogVENvbnRleHRhYmxlPHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlSW5wdXRzW3JlZk5hbWVdID0gY29udGV4dGFibGVRdWVyeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBleHBlY3QoY29udGV4dGFibGVRdWVyeTogVENvbnRleHRhYmxlPHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUXVlcnkgPSBjb250ZXh0YWJsZVF1ZXJ5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGUoKSB7XG4gICAgaWYgKCF0aGlzLmRhdGFzZXRUb1Rlc3QpIHtcbiAgICAgIHRoaXMuc2Vzc2lvbi5jb21waWxlRXJyb3IobmV3IEVycm9yKFwiVGVzdHMgbXVzdCBvcGVyYXRlIHVwb24gYSBzcGVjaWZpZWQgZGF0YXNldC5cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkYXRhc2V0ID0gdGhpcy5zZXNzaW9uLnRhYmxlc1t0aGlzLmRhdGFzZXRUb1Rlc3RdO1xuICAgIGlmICghZGF0YXNldCkge1xuICAgICAgdGhpcy5zZXNzaW9uLmNvbXBpbGVFcnJvcihuZXcgRXJyb3IoYERhdGFzZXQgJHt0aGlzLmRhdGFzZXRUb1Rlc3R9IGNvdWxkIG5vdCBiZSBmb3VuZC5gKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChkYXRhc2V0LnByb3RvLnR5cGUgPT09IFwiaW5jcmVtZW50YWxcIikge1xuICAgICAgdGhpcy5zZXNzaW9uLmNvbXBpbGVFcnJvcihcbiAgICAgICAgbmV3IEVycm9yKGBSdW5uaW5nIHRlc3RzIG9uIGluY3JlbWVudGFsIGRhdGFzZXRzIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLmApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0ZXN0Q29udGV4dCA9IG5ldyBUZXN0Q29udGV4dCh0aGlzKTtcbiAgICBjb25zdCByZWZSZXBsYWNpbmdDb250ZXh0ID0gbmV3IFJlZlJlcGxhY2luZ0NvbnRleHQodGVzdENvbnRleHQpO1xuICAgIHRoaXMucHJvdG8udGVzdFF1ZXJ5ID0gcmVmUmVwbGFjaW5nQ29udGV4dC5hcHBseShkYXRhc2V0LmNvbnRleHRhYmxlUXVlcnkpO1xuICAgIHRoaXMucHJvdG8uZXhwZWN0ZWRPdXRwdXRRdWVyeSA9IHRlc3RDb250ZXh0LmFwcGx5KHRoaXMuY29udGV4dGFibGVRdWVyeSk7XG4gICAgcmV0dXJuIHRoaXMucHJvdG87XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlc3RDb250ZXh0IHtcbiAgcHVibGljIHJlYWRvbmx5IHRlc3Q6IFRlc3Q7XG4gIGNvbnN0cnVjdG9yKHRlc3Q6IFRlc3QpIHtcbiAgICB0aGlzLnRlc3QgPSB0ZXN0O1xuICB9XG5cbiAgcHVibGljIGFwcGx5PFQ+KHZhbHVlOiBUQ29udGV4dGFibGU8VD4pOiBUIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiAodmFsdWUgYXMgYW55KSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBSZWZSZXBsYWNpbmdDb250ZXh0IGltcGxlbWVudHMgdGFibGUuSVRhYmxlQ29udGV4dCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVzdENvbnRleHQ6IFRlc3RDb250ZXh0O1xuXG4gIGNvbnN0cnVjdG9yKHRlc3RDb250ZXh0OiBUZXN0Q29udGV4dCkge1xuICAgIHRoaXMudGVzdENvbnRleHQgPSB0ZXN0Q29udGV4dDtcbiAgfVxuXG4gIHB1YmxpYyByZWYobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKG5hbWU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy50ZXN0Q29udGV4dC50ZXN0LmNvbnRleHRhYmxlSW5wdXRzW25hbWVdKSB7XG4gICAgICB0aGlzLnRlc3RDb250ZXh0LnRlc3Quc2Vzc2lvbi5jb21waWxlRXJyb3IoXG4gICAgICAgIG5ldyBFcnJvcihgSW5wdXQgZm9yIGRhdGFzZXQgXCIke25hbWV9XCIgaGFzIG5vdCBiZWVuIHByb3ZpZGVkLmApXG4gICAgICApO1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBgKCR7dGhpcy50ZXN0Q29udGV4dC5hcHBseSh0aGlzLnRlc3RDb250ZXh0LnRlc3QuY29udGV4dGFibGVJbnB1dHNbbmFtZV0pfSlgO1xuICB9XG5cbiAgcHVibGljIGFwcGx5PFQ+KHZhbHVlOiB0YWJsZS5UQ29udGV4dGFibGU8VD4pOiBUIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiAodmFsdWUgYXMgYW55KSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb25maWcoY29uZmlnOiB0YWJsZS5UQ29uZmlnKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgc2VsZigpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyB0eXBlKHR5cGU6IHRhYmxlLlRhYmxlVHlwZSkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHdoZXJlKHdoZXJlOiB0YWJsZS5UQ29udGV4dGFibGU8c3RyaW5nPikge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHByZU9wcyhzdGF0ZW1lbnQ6IHRhYmxlLlRDb250ZXh0YWJsZTxzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0T3BzKHN0YXRlbWVudDogdGFibGUuVENvbnRleHRhYmxlPHN0cmluZyB8IHN0cmluZ1tdPikge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVkKCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHJlZHNoaWZ0KHJlZHNoaWZ0OiBkYXRhZm9ybS5JUmVkc2hpZnRPcHRpb25zKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgYmlncXVlcnkoYmlncXVlcnk6IGRhdGFmb3JtLklCaWdRdWVyeU9wdGlvbnMpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXMobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpcHRvcihcbiAgICBrZXlPcktleXNPck1hcDogc3RyaW5nIHwgc3RyaW5nW10gfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpYmUoa2V5OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgdGFncyh0YWdzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG59XG4iXX0=
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