@dollhousemcp/mcp-server 2.0.17 → 2.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/elements/BaseElement.d.ts +1 -0
- package/dist/elements/BaseElement.d.ts.map +1 -1
- package/dist/elements/BaseElement.js +7 -1
- package/dist/elements/agents/AgentManager.js +2 -2
- package/dist/elements/base/ElementFileOperations.js +2 -2
- package/dist/elements/ensembles/EnsembleManager.js +3 -3
- package/dist/elements/memories/MemoryManager.js +2 -2
- package/dist/elements/skills/SkillManager.js +2 -2
- package/dist/elements/templates/TemplateManager.js +2 -2
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/handlers/ElementCRUDHandler.d.ts.map +1 -1
- package/dist/handlers/ElementCRUDHandler.js +3 -2
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +1 -0
- package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/MCPAQLHandler.js +35 -14
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts +9 -1
- package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/policies/ElementPolicies.js +63 -4
- package/dist/handlers/strategies/AgentActivationStrategy.d.ts.map +1 -1
- package/dist/handlers/strategies/AgentActivationStrategy.js +5 -1
- package/dist/handlers/strategies/BaseActivationStrategy.d.ts +1 -0
- package/dist/handlers/strategies/BaseActivationStrategy.d.ts.map +1 -1
- package/dist/handlers/strategies/BaseActivationStrategy.js +15 -1
- package/dist/handlers/strategies/EnsembleActivationStrategy.d.ts.map +1 -1
- package/dist/handlers/strategies/EnsembleActivationStrategy.js +5 -1
- package/dist/handlers/strategies/MemoryActivationStrategy.d.ts.map +1 -1
- package/dist/handlers/strategies/MemoryActivationStrategy.js +5 -1
- package/dist/handlers/strategies/PersonaActivationStrategy.d.ts.map +1 -1
- package/dist/handlers/strategies/PersonaActivationStrategy.js +5 -1
- package/dist/handlers/strategies/SkillActivationStrategy.d.ts.map +1 -1
- package/dist/handlers/strategies/SkillActivationStrategy.js +5 -1
- package/dist/handlers/strategies/TemplateActivationStrategy.d.ts.map +1 -1
- package/dist/handlers/strategies/TemplateActivationStrategy.js +7 -2
- package/dist/persona/PersonaElement.js +2 -2
- package/dist/services/SerializationService.d.ts.map +1 -1
- package/dist/services/SerializationService.js +7 -1
- package/dist/types/elements/IElement.d.ts +9 -0
- package/dist/types/elements/IElement.d.ts.map +1 -1
- package/dist/types/elements/IElement.js +1 -1
- package/dist/web/public/permissions.css +190 -2
- package/dist/web/public/permissions.js +171 -30
- package/dist/web/public/setup.js +131 -60
- package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
- package/dist/web/routes/permissionRoutes.js +77 -5
- package/dist/web/routes/setupRoutes.d.ts.map +1 -1
- package/dist/web/routes/setupRoutes.js +16 -2
- package/package.json +1 -1
- package/scripts/pretooluse-dollhouse.sh +39 -1
- package/server.json +2 -2
|
@@ -47,6 +47,10 @@ export class SkillActivationStrategy extends BaseActivationStrategy {
|
|
|
47
47
|
if (restrictionWarning) {
|
|
48
48
|
parts.push(restrictionWarning);
|
|
49
49
|
}
|
|
50
|
+
const gatekeeperWarning = this.formatGatekeeperValidityWarning(skill.metadata);
|
|
51
|
+
if (gatekeeperWarning) {
|
|
52
|
+
parts.push(gatekeeperWarning);
|
|
53
|
+
}
|
|
50
54
|
return {
|
|
51
55
|
content: [{
|
|
52
56
|
type: "text",
|
|
@@ -131,4 +135,4 @@ export class SkillActivationStrategy extends BaseActivationStrategy {
|
|
|
131
135
|
};
|
|
132
136
|
}
|
|
133
137
|
}
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tpbGxBY3RpdmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvc3RyYXRlZ2llcy9Ta2lsbEFjdGl2YXRpb25TdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBR0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHckUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHNCQUFzQjtJQUNwQztJQUE3QixZQUE2QixZQUEwQjtRQUNyRCxLQUFLLEVBQUUsQ0FBQztRQURtQixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUV2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFZLEVBQUUsT0FBNkI7UUFDeEQsaUVBQWlFO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRTNCLGdFQUFnRTtRQUNoRSxNQUFNLEtBQUssR0FBRztZQUNaLFlBQVksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWE7WUFDNUMsRUFBRTtTQUNILENBQUM7UUFFRiwwREFBMEQ7UUFDMUQsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLEVBQUUsVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFL0YsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1lBQ3pCLEtB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Q0FBQyxJQUFJLENBQUM7aUJBQ3pCLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTa2lsbEFjdGl2YXRpb25TdHJhdGVneSAtIFN0cmF0ZWd5IGZvciBza2lsbCBlbGVtZW50IGFjdGl2YXRpb25cbiAqXG4gKiBIYW5kbGVzIGFjdGl2YXRpb24sIGRlYWN0aXZhdGlvbiwgYW5kIHN0YXR1cyB0cmFja2luZyBmb3Igc2tpbGwgZWxlbWVudHMuXG4gKi9cblxuaW1wb3J0IHsgU2tpbGxNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvc2tpbGxzL2luZGV4LmpzJztcbmltcG9ydCB7IEJhc2VBY3RpdmF0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL0Jhc2VBY3RpdmF0aW9uU3RyYXRlZ3kuanMnO1xuaW1wb3J0IHsgRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneSwgTUNQUmVzcG9uc2UgfSBmcm9tICcuL0VsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3kuanMnO1xuXG5leHBvcnQgY2xhc3MgU2tpbGxBY3RpdmF0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IGltcGxlbWVudHMgRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2tpbGxNYW5hZ2VyOiBTa2lsbE1hbmFnZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGEgc2tpbGxcbiAgICogRXh0cmFjdGVkIGZyb20gRWxlbWVudENSVURIYW5kbGVyLnRzIGxpbmVzIDE4NC0yMDZcbiAgICovXG4gIGFzeW5jIGFjdGl2YXRlKG5hbWU6IHN0cmluZywgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gVXNlIHRoZSBtYW5hZ2VyJ3MgYWN0aXZhdGlvbiBtZXRob2Qgd2hpY2ggdHJhY2tzIGFjdGl2ZSBza2lsbHNcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNraWxsTWFuYWdlci5hY3RpdmF0ZVNraWxsKG5hbWUpO1xuXG4gICAgaWYgKCFyZXN1bHQuc3VjY2VzcyB8fCAhcmVzdWx0LnNraWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVOb3RGb3VuZFJlc3BvbnNlKG5hbWUsICdTa2lsbCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNraWxsID0gcmVzdWx0LnNraWxsO1xuXG4gICAgLy8gQnVpbGQgYWN0aXZhdGlvbiByZXNwb25zZSB3aXRoIGV4ZWN1dGlvbiBzdHJhdGVneSBpbmZvcm1hdGlvblxuICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgYOKchSBTa2lsbCAnJHtza2lsbC5tZXRhZGF0YS5uYW1lfScgYWN0aXZhdGVkYCxcbiAgICAgICcnXG4gICAgXTtcblxuICAgIC8vIENoZWNrIGlmIHBhcmFtZXRlcnMgd2VyZSBwcm92aWRlZCBpbiBhY3RpdmF0aW9uIGNvbnRleHRcbiAgICBjb25zdCBoYXNDb250ZXh0UGFyYW1ldGVycyA9IGNvbnRleHQ/LnBhcmFtZXRlcnMgJiYgT2JqZWN0LmtleXMoY29udGV4dC5wYXJhbWV0ZXJzKS5sZW5ndGggPiAwO1xuXG4gICAgaWYgKGhhc0NvbnRleHRQYXJhbWV0ZXJzKSB7XG4gICAgICBwYXJ0cy5wdXNoKCdTa2lsbCBhY3RpdmF0ZXMgd2l0aCBzcGVjaWZpZWQgcGFyYW1ldGVycycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy5wdXNoKCdTa2lsbCBiZWNvbWVzIGFjdGl2ZSBhbmQgcmVhZHkgZm9yIGV4ZWN1dGlvbicpO1xuICAgIH1cblxuICAgIHBhcnRzLnB1c2goJycpO1xuICAgIHBhcnRzLnB1c2goJyoqSW5zdHJ1Y3Rpb25zOioqJyk7XG4gICAgcGFydHMucHVzaChza2lsbC5pbnN0cnVjdGlvbnMpO1xuXG4gICAgaWYgKHNraWxsLmNvbnRlbnQ/LnRyaW0oKSkge1xuICAgICAgcGFydHMucHVzaCgnJyk7XG4gICAgICBwYXJ0cy5wdXNoKCcqKlJlZmVyZW5jZToqKicpO1xuICAgICAgcGFydHMucHVzaChza2lsbC5jb250ZW50KTtcbiAgICB9XG5cbiAgICAvLyBJc3N1ZSAjNjQyOiBGYWlsLXNhZmUgd2FybmluZyBmb3IgQ0xJIHJlc3RyaWN0aW9uc1xuICAgIGNvbnN0IHJlc3RyaWN0aW9uV2FybmluZyA9IHRoaXMuZm9ybWF0UmVzdHJpY3Rpb25XYXJuaW5nKHNraWxsLm1ldGFkYXRhIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgIGlmIChyZXN0cmljdGlvbldhcm5pbmcpIHtcbiAgICAgIHBhcnRzLnB1c2gocmVzdHJpY3Rpb25XYXJuaW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IHBhcnRzLmpvaW4oJ1xcbicpXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVhY3RpdmF0ZSBhIHNraWxsXG4gICAqIEV4dHJhY3RlZCBmcm9tIEVsZW1lbnRDUlVESGFuZGxlci50cyBsaW5lcyA1MjEtNTQxXG4gICAqXG4gICAqIEB0aHJvd3Mge0VsZW1lbnROb3RGb3VuZEVycm9yfSBXaGVuIHNraWxsIGRvZXMgbm90IGV4aXN0XG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIGFzeW5jIGRlYWN0aXZhdGUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2tpbGxNYW5hZ2VyLmRlYWN0aXZhdGVTa2lsbChuYW1lKTtcblxuICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMudGhyb3dOb3RGb3VuZEVycm9yKG5hbWUsICdTa2lsbCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVN1Y2Nlc3NSZXNwb25zZShyZXN1bHQubWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBhY3RpdmUgc2tpbGxzXG4gICAqIEV4dHJhY3RlZCBmcm9tIEVsZW1lbnRDUlVESGFuZGxlci50cyBsaW5lcyAzOTItNDEyXG4gICAqL1xuICBhc3luYyBnZXRBY3RpdmVFbGVtZW50cygpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gVXNlIHRoZSBtYW5hZ2VyJ3MgbWV0aG9kIHRvIGdldCBhY3RpdmUgc2tpbGxzIGRpcmVjdGx5XG4gICAgY29uc3QgYWN0aXZlU2tpbGxzID0gYXdhaXQgdGhpcy5za2lsbE1hbmFnZXIuZ2V0QWN0aXZlU2tpbGxzKCk7XG5cbiAgICBpZiAoYWN0aXZlU2tpbGxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBcIvCfk4sgTm8gYWN0aXZlIHNraWxsc1wiXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHNraWxsTGlzdCA9IGFjdGl2ZVNraWxscy5tYXAocyA9PiBg8J+boO+4jyAke3MubWV0YWRhdGEubmFtZX1gKS5qb2luKCcsICcpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogYEFjdGl2ZSBza2lsbHM6ICR7c2tpbGxMaXN0fWBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYSBza2lsbFxuICAgKiBFeHRyYWN0ZWQgZnJvbSBFbGVtZW50Q1JVREhhbmRsZXIudHMgbGluZXMgNjUwLTY4OVxuICAgKlxuICAgKiBAdGhyb3dzIHtFbGVtZW50Tm90Rm91bmRFcnJvcn0gV2hlbiBza2lsbCBkb2VzIG5vdCBleGlzdFxuICAgKiBAc2VlIElzc3VlICMyNzUgLSBIYW5kbGVycyByZXR1cm4gc3VjY2Vzcz10cnVlIGZvciBtaXNzaW5nIGVsZW1lbnRzXG4gICAqL1xuICBhc3luYyBnZXRFbGVtZW50RGV0YWlscyhuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gVXNlIGZsZXhpYmxlIGZpbmRpbmcgdG8gc3VwcG9ydCBib3RoIGRpc3BsYXkgbmFtZSBhbmQgZmlsZW5hbWVcbiAgICBjb25zdCBhbGxTa2lsbHMgPSBhd2FpdCB0aGlzLnNraWxsTWFuYWdlci5saXN0KCk7XG4gICAgY29uc3Qgc2tpbGwgPSBhd2FpdCB0aGlzLmZpbmRFbGVtZW50RmxleGlibHkobmFtZSwgYWxsU2tpbGxzKTtcbiAgICBpZiAoIXNraWxsKSB7XG4gICAgICB0aGlzLnRocm93Tm90Rm91bmRFcnJvcihuYW1lLCAnU2tpbGwnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZXRhaWxzID0gW1xuICAgICAgYPCfm6DvuI8gKioke3NraWxsLm1ldGFkYXRhLm5hbWV9KipgLFxuICAgICAgYCR7c2tpbGwubWV0YWRhdGEuZGVzY3JpcHRpb259YCxcbiAgICAgIGBgLFxuICAgICAgYCoqQ29tcGxleGl0eSoqOiAke3NraWxsLm1ldGFkYXRhLmNvbXBsZXhpdHkgfHwgJ2JlZ2lubmVyJ31gLFxuICAgICAgYCoqRG9tYWlucyoqOiAke3NraWxsLm1ldGFkYXRhLmRvbWFpbnM/LmpvaW4oJywgJykgfHwgJ2dlbmVyYWwnfWAsXG4gICAgICBgKipMYW5ndWFnZXMqKjogJHtza2lsbC5tZXRhZGF0YS5sYW5ndWFnZXM/LmpvaW4oJywgJykgfHwgJ2FueSd9YCxcbiAgICAgIGAqKlByZXJlcXVpc2l0ZXMqKjogJHtza2lsbC5tZXRhZGF0YS5wcmVyZXF1aXNpdGVzPy5qb2luKCcsICcpIHx8ICdub25lJ31gLFxuICAgICAgYGAsXG4gICAgICBgKipJbnN0cnVjdGlvbnMqKjpgLFxuICAgICAgc2tpbGwuaW5zdHJ1Y3Rpb25zXG4gICAgXTtcblxuICAgIGlmIChza2lsbC5tZXRhZGF0YS5wYXJhbWV0ZXJzICYmIHNraWxsLm1ldGFkYXRhLnBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnLCAnKipQYXJhbWV0ZXJzKio6Jyk7XG4gICAgICBza2lsbC5tZXRhZGF0YS5wYXJhbWV0ZXJzLmZvckVhY2goKHA6IGFueSkgPT4ge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gJHtwLm5hbWV9ICgke3AudHlwZX0pOiAke3AuZGVzY3JpcHRpb259YCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGRldGFpbHMuam9pbignXFxuJylcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tpbGxBY3RpdmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvc3RyYXRlZ2llcy9Ta2lsbEFjdGl2YXRpb25TdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBR0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHckUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHNCQUFzQjtJQUNwQztJQUE3QixZQUE2QixZQUEwQjtRQUNyRCxLQUFLLEVBQUUsQ0FBQztRQURtQixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUV2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFZLEVBQUUsT0FBNkI7UUFDeEQsaUVBQWlFO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRTNCLGdFQUFnRTtRQUNoRSxNQUFNLEtBQUssR0FBRztZQUNaLFlBQVksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWE7WUFDNUMsRUFBRTtTQUNILENBQUM7UUFFRiwwREFBMEQ7UUFDMUQsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLEVBQUUsVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFL0YsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1lBQ3pCLEtB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QUFJLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztpQkFDekIsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNraWxsQWN0aXZhdGlvblN0cmF0ZWd5IC0gU3RyYXRlZ3kgZm9yIHNraWxsIGVsZW1lbnQgYWN0aXZhdGlvblxuICpcbiAqIEhhbmRsZXMgYWN0aXZhdGlvbiwgZGVhY3RpdmF0aW9uLCBhbmQgc3RhdHVzIHRyYWNraW5nIGZvciBza2lsbCBlbGVtZW50cy5cbiAqL1xuXG5pbXBvcnQgeyBTa2lsbE1hbmFnZXIgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9za2lsbHMvaW5kZXguanMnO1xuaW1wb3J0IHsgQmFzZUFjdGl2YXRpb25TdHJhdGVneSB9IGZyb20gJy4vQmFzZUFjdGl2YXRpb25TdHJhdGVneS5qcyc7XG5pbXBvcnQgeyBFbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LCBNQ1BSZXNwb25zZSB9IGZyb20gJy4vRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBTa2lsbEFjdGl2YXRpb25TdHJhdGVneSBleHRlbmRzIEJhc2VBY3RpdmF0aW9uU3RyYXRlZ3kgaW1wbGVtZW50cyBFbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBza2lsbE1hbmFnZXI6IFNraWxsTWFuYWdlcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgYSBza2lsbFxuICAgKiBFeHRyYWN0ZWQgZnJvbSBFbGVtZW50Q1JVREhhbmRsZXIudHMgbGluZXMgMTg0LTIwNlxuICAgKi9cbiAgYXN5bmMgYWN0aXZhdGUobmFtZTogc3RyaW5nLCBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICAvLyBVc2UgdGhlIG1hbmFnZXIncyBhY3RpdmF0aW9uIG1ldGhvZCB3aGljaCB0cmFja3MgYWN0aXZlIHNraWxsc1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2tpbGxNYW5hZ2VyLmFjdGl2YXRlU2tpbGwobmFtZSk7XG5cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzIHx8ICFyZXN1bHQuc2tpbGwpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU5vdEZvdW5kUmVzcG9uc2UobmFtZSwgJ1NraWxsJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2tpbGwgPSByZXN1bHQuc2tpbGw7XG5cbiAgICAvLyBCdWlsZCBhY3RpdmF0aW9uIHJlc3BvbnNlIHdpdGggZXhlY3V0aW9uIHN0cmF0ZWd5IGluZm9ybWF0aW9uXG4gICAgY29uc3QgcGFydHMgPSBbXG4gICAgICBg4pyFIFNraWxsICcke3NraWxsLm1ldGFkYXRhLm5hbWV9JyBhY3RpdmF0ZWRgLFxuICAgICAgJydcbiAgICBdO1xuXG4gICAgLy8gQ2hlY2sgaWYgcGFyYW1ldGVycyB3ZXJlIHByb3ZpZGVkIGluIGFjdGl2YXRpb24gY29udGV4dFxuICAgIGNvbnN0IGhhc0NvbnRleHRQYXJhbWV0ZXJzID0gY29udGV4dD8ucGFyYW1ldGVycyAmJiBPYmplY3Qua2V5cyhjb250ZXh0LnBhcmFtZXRlcnMpLmxlbmd0aCA+IDA7XG5cbiAgICBpZiAoaGFzQ29udGV4dFBhcmFtZXRlcnMpIHtcbiAgICAgIHBhcnRzLnB1c2goJ1NraWxsIGFjdGl2YXRlcyB3aXRoIHNwZWNpZmllZCBwYXJhbWV0ZXJzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnB1c2goJ1NraWxsIGJlY29tZXMgYWN0aXZlIGFuZCByZWFkeSBmb3IgZXhlY3V0aW9uJyk7XG4gICAgfVxuXG4gICAgcGFydHMucHVzaCgnJyk7XG4gICAgcGFydHMucHVzaCgnKipJbnN0cnVjdGlvbnM6KionKTtcbiAgICBwYXJ0cy5wdXNoKHNraWxsLmluc3RydWN0aW9ucyk7XG5cbiAgICBpZiAoc2tpbGwuY29udGVudD8udHJpbSgpKSB7XG4gICAgICBwYXJ0cy5wdXNoKCcnKTtcbiAgICAgIHBhcnRzLnB1c2goJyoqUmVmZXJlbmNlOioqJyk7XG4gICAgICBwYXJ0cy5wdXNoKHNraWxsLmNvbnRlbnQpO1xuICAgIH1cblxuICAgIC8vIElzc3VlICM2NDI6IEZhaWwtc2FmZSB3YXJuaW5nIGZvciBDTEkgcmVzdHJpY3Rpb25zXG4gICAgY29uc3QgcmVzdHJpY3Rpb25XYXJuaW5nID0gdGhpcy5mb3JtYXRSZXN0cmljdGlvbldhcm5pbmcoc2tpbGwubWV0YWRhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgaWYgKHJlc3RyaWN0aW9uV2FybmluZykge1xuICAgICAgcGFydHMucHVzaChyZXN0cmljdGlvbldhcm5pbmcpO1xuICAgIH1cblxuICAgIGNvbnN0IGdhdGVrZWVwZXJXYXJuaW5nID0gdGhpcy5mb3JtYXRHYXRla2VlcGVyVmFsaWRpdHlXYXJuaW5nKHNraWxsLm1ldGFkYXRhIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgIGlmIChnYXRla2VlcGVyV2FybmluZykge1xuICAgICAgcGFydHMucHVzaChnYXRla2VlcGVyV2FybmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBwYXJ0cy5qb2luKCdcXG4nKVxuICAgICAgfV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgYSBza2lsbFxuICAgKiBFeHRyYWN0ZWQgZnJvbSBFbGVtZW50Q1JVREhhbmRsZXIudHMgbGluZXMgNTIxLTU0MVxuICAgKlxuICAgKiBAdGhyb3dzIHtFbGVtZW50Tm90Rm91bmRFcnJvcn0gV2hlbiBza2lsbCBkb2VzIG5vdCBleGlzdFxuICAgKiBAc2VlIElzc3VlICMyNzUgLSBIYW5kbGVycyByZXR1cm4gc3VjY2Vzcz10cnVlIGZvciBtaXNzaW5nIGVsZW1lbnRzXG4gICAqL1xuICBhc3luYyBkZWFjdGl2YXRlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNraWxsTWFuYWdlci5kZWFjdGl2YXRlU2tpbGwobmFtZSk7XG5cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICB0aGlzLnRocm93Tm90Rm91bmRFcnJvcihuYW1lLCAnU2tpbGwnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTdWNjZXNzUmVzcG9uc2UocmVzdWx0Lm1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgYWN0aXZlIHNraWxsc1xuICAgKiBFeHRyYWN0ZWQgZnJvbSBFbGVtZW50Q1JVREhhbmRsZXIudHMgbGluZXMgMzkyLTQxMlxuICAgKi9cbiAgYXN5bmMgZ2V0QWN0aXZlRWxlbWVudHMoKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSB0aGUgbWFuYWdlcidzIG1ldGhvZCB0byBnZXQgYWN0aXZlIHNraWxscyBkaXJlY3RseVxuICAgIGNvbnN0IGFjdGl2ZVNraWxscyA9IGF3YWl0IHRoaXMuc2tpbGxNYW5hZ2VyLmdldEFjdGl2ZVNraWxscygpO1xuXG4gICAgaWYgKGFjdGl2ZVNraWxscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogXCLwn5OLIE5vIGFjdGl2ZSBza2lsbHNcIlxuICAgICAgICB9XVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBza2lsbExpc3QgPSBhY3RpdmVTa2lsbHMubWFwKHMgPT4gYPCfm6DvuI8gJHtzLm1ldGFkYXRhLm5hbWV9YCkuam9pbignLCAnKTtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGBBY3RpdmUgc2tpbGxzOiAke3NraWxsTGlzdH1gXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgc2tpbGxcbiAgICogRXh0cmFjdGVkIGZyb20gRWxlbWVudENSVURIYW5kbGVyLnRzIGxpbmVzIDY1MC02ODlcbiAgICpcbiAgICogQHRocm93cyB7RWxlbWVudE5vdEZvdW5kRXJyb3J9IFdoZW4gc2tpbGwgZG9lcyBub3QgZXhpc3RcbiAgICogQHNlZSBJc3N1ZSAjMjc1IC0gSGFuZGxlcnMgcmV0dXJuIHN1Y2Nlc3M9dHJ1ZSBmb3IgbWlzc2luZyBlbGVtZW50c1xuICAgKi9cbiAgYXN5bmMgZ2V0RWxlbWVudERldGFpbHMobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSBmbGV4aWJsZSBmaW5kaW5nIHRvIHN1cHBvcnQgYm90aCBkaXNwbGF5IG5hbWUgYW5kIGZpbGVuYW1lXG4gICAgY29uc3QgYWxsU2tpbGxzID0gYXdhaXQgdGhpcy5za2lsbE1hbmFnZXIubGlzdCgpO1xuICAgIGNvbnN0IHNraWxsID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudEZsZXhpYmx5KG5hbWUsIGFsbFNraWxscyk7XG4gICAgaWYgKCFza2lsbCkge1xuICAgICAgdGhpcy50aHJvd05vdEZvdW5kRXJyb3IobmFtZSwgJ1NraWxsJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGV0YWlscyA9IFtcbiAgICAgIGDwn5ug77iPICoqJHtza2lsbC5tZXRhZGF0YS5uYW1lfSoqYCxcbiAgICAgIGAke3NraWxsLm1ldGFkYXRhLmRlc2NyaXB0aW9ufWAsXG4gICAgICBgYCxcbiAgICAgIGAqKkNvbXBsZXhpdHkqKjogJHtza2lsbC5tZXRhZGF0YS5jb21wbGV4aXR5IHx8ICdiZWdpbm5lcid9YCxcbiAgICAgIGAqKkRvbWFpbnMqKjogJHtza2lsbC5tZXRhZGF0YS5kb21haW5zPy5qb2luKCcsICcpIHx8ICdnZW5lcmFsJ31gLFxuICAgICAgYCoqTGFuZ3VhZ2VzKio6ICR7c2tpbGwubWV0YWRhdGEubGFuZ3VhZ2VzPy5qb2luKCcsICcpIHx8ICdhbnknfWAsXG4gICAgICBgKipQcmVyZXF1aXNpdGVzKio6ICR7c2tpbGwubWV0YWRhdGEucHJlcmVxdWlzaXRlcz8uam9pbignLCAnKSB8fCAnbm9uZSd9YCxcbiAgICAgIGBgLFxuICAgICAgYCoqSW5zdHJ1Y3Rpb25zKio6YCxcbiAgICAgIHNraWxsLmluc3RydWN0aW9uc1xuICAgIF07XG5cbiAgICBpZiAoc2tpbGwubWV0YWRhdGEucGFyYW1ldGVycyAmJiBza2lsbC5tZXRhZGF0YS5wYXJhbWV0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGRldGFpbHMucHVzaCgnJywgJyoqUGFyYW1ldGVycyoqOicpO1xuICAgICAgc2tpbGwubWV0YWRhdGEucGFyYW1ldGVycy5mb3JFYWNoKChwOiBhbnkpID0+IHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtICR7cC5uYW1lfSAoJHtwLnR5cGV9KTogJHtwLmRlc2NyaXB0aW9ufWApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBkZXRhaWxzLmpvaW4oJ1xcbicpXG4gICAgICB9XVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/TemplateActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAExF,qBAAa,0BAA2B,SAAQ,sBAAuB,YAAW,yBAAyB;IAC7F,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAI7D;;;;;;OAMG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"TemplateActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/TemplateActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAExF,qBAAa,0BAA2B,SAAQ,sBAAuB,YAAW,yBAAyB;IAC7F,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAI7D;;;;;;OAMG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiBlD;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASrD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAS/C;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAiC5D"}
|
|
@@ -27,7 +27,12 @@ export class TemplateActivationStrategy extends BaseActivationStrategy {
|
|
|
27
27
|
this.throwNotFoundError(name, 'Template');
|
|
28
28
|
}
|
|
29
29
|
const variables = template.metadata.variables?.map((v) => v.name).join(', ') || 'none';
|
|
30
|
-
|
|
30
|
+
let text = `✅ Template '${name}' ready to use\nVariables: ${variables}\n\nUse 'render_template' to generate content with this template.`;
|
|
31
|
+
const gatekeeperWarning = this.formatGatekeeperValidityWarning(template.metadata);
|
|
32
|
+
if (gatekeeperWarning) {
|
|
33
|
+
text += gatekeeperWarning;
|
|
34
|
+
}
|
|
35
|
+
return this.createSuccessResponse(text);
|
|
31
36
|
}
|
|
32
37
|
/**
|
|
33
38
|
* Deactivate a template (templates are stateless)
|
|
@@ -91,4 +96,4 @@ export class TemplateActivationStrategy extends BaseActivationStrategy {
|
|
|
91
96
|
};
|
|
92
97
|
}
|
|
93
98
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVtcGxhdGVBY3RpdmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvc3RyYXRlZ2llcy9UZW1wbGF0ZUFjdGl2YXRpb25TdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFHSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdyRSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsc0JBQXNCO0lBQ3ZDO0lBQTdCLFlBQTZCLGVBQWdDO1FBQzNELEtBQUssRUFBRSxDQUFDO1FBRG1CLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUU3RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ3pCLGlFQUFpRTtRQUNqRSxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7UUFDNUYsSUFBSSxJQUFJLEdBQUcsZUFBZSxJQUFJLDhCQUE4QixTQUFTLG1FQUFtRSxDQUFDO1FBQ3pJLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxRQUE4QyxDQUFDLENBQUM7UUFDeEgsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLElBQUksSUFBSSxpQkFBaUIsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBYTtRQUM1QixPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLG9EQUFvRDtpQkFDM0QsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQjtRQUNyQixPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLG1FQUFtRTtpQkFDMUUsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQVk7UUFDbEMsaUVBQWlFO1FBQ2pFLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUc7WUFDZCxRQUFRLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJO1lBQ2xDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7WUFDbEMsRUFBRTtZQUNGLHNCQUF1QixRQUFRLENBQUMsUUFBZ0IsQ0FBQyxhQUFhLElBQUksTUFBTSxFQUFFO1lBQzFFLHVCQUF1QjtZQUN2QixLQUFLO1lBQ0wsUUFBUSxDQUFDLE9BQU87WUFDaEIsS0FBSztTQUNOLENBQUM7UUFFRixJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ25DLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzVELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQztvQkFDUixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ3pCLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUZW1wbGF0ZUFjdGl2YXRpb25TdHJhdGVneSAtIFN0cmF0ZWd5IGZvciB0ZW1wbGF0ZSBlbGVtZW50IGFjdGl2YXRpb25cbiAqXG4gKiBUZW1wbGF0ZXMgYXJlIHN0YXRlbGVzcyBhbmQgYWN0aXZhdGVkIG9uLWRlbWFuZCB3aGVuIHJlbmRlcmluZy5cbiAqIFRoaXMgc3RyYXRlZ3kgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgYXZhaWxhYmxlIHRlbXBsYXRlcyB3aXRob3V0XG4gKiBtYWludGFpbmluZyBhY3RpdmUgc3RhdGUuXG4gKi9cblxuaW1wb3J0IHsgVGVtcGxhdGVNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdGVtcGxhdGVzL1RlbXBsYXRlTWFuYWdlci5qcyc7XG5pbXBvcnQgeyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9CYXNlQWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB7IEVsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3ksIE1DUFJlc3BvbnNlIH0gZnJvbSAnLi9FbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQWN0aXZhdGlvblN0cmF0ZWd5IGV4dGVuZHMgQmFzZUFjdGl2YXRpb25TdHJhdGVneSBpbXBsZW1lbnRzIEVsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlTWFuYWdlcjogVGVtcGxhdGVNYW5hZ2VyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIkFjdGl2YXRlXCIgYSB0ZW1wbGF0ZSAoYWN0dWFsbHkganVzdCB2ZXJpZnkgaXQgZXhpc3RzIGFuZCBzaG93IGluZm8pXG4gICAqIEV4dHJhY3RlZCBmcm9tIEVsZW1lbnRDUlVESGFuZGxlci50cyBsaW5lcyAyMDgtMjI4XG4gICAqXG4gICAqIEB0aHJvd3Mge0VsZW1lbnROb3RGb3VuZEVycm9yfSBXaGVuIHRlbXBsYXRlIGRvZXMgbm90IGV4aXN0XG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIGFzeW5jIGFjdGl2YXRlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICAvLyBVc2UgZmxleGlibGUgZmluZGluZyB0byBzdXBwb3J0IGJvdGggZGlzcGxheSBuYW1lIGFuZCBmaWxlbmFtZVxuICAgIGNvbnN0IGFsbFRlbXBsYXRlcyA9IGF3YWl0IHRoaXMudGVtcGxhdGVNYW5hZ2VyLmxpc3QoKTtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IGF3YWl0IHRoaXMuZmluZEVsZW1lbnRGbGV4aWJseShuYW1lLCBhbGxUZW1wbGF0ZXMpO1xuICAgIGlmICghdGVtcGxhdGUpIHtcbiAgICAgIHRoaXMudGhyb3dOb3RGb3VuZEVycm9yKG5hbWUsICdUZW1wbGF0ZScpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhcmlhYmxlcyA9IHRlbXBsYXRlLm1ldGFkYXRhLnZhcmlhYmxlcz8ubWFwKCh2OiBhbnkpID0+IHYubmFtZSkuam9pbignLCAnKSB8fCAnbm9uZSc7XG4gICAgbGV0IHRleHQgPSBg4pyFIFRlbXBsYXRlICcke25hbWV9JyByZWFkeSB0byB1c2VcXG5WYXJpYWJsZXM6ICR7dmFyaWFibGVzfVxcblxcblVzZSAncmVuZGVyX3RlbXBsYXRlJyB0byBnZW5lcmF0ZSBjb250ZW50IHdpdGggdGhpcyB0ZW1wbGF0ZS5gO1xuICAgIGNvbnN0IGdhdGVrZWVwZXJXYXJuaW5nID0gdGhpcy5mb3JtYXRHYXRla2VlcGVyVmFsaWRpdHlXYXJuaW5nKHRlbXBsYXRlLm1ldGFkYXRhIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgIGlmIChnYXRla2VlcGVyV2FybmluZykge1xuICAgICAgdGV4dCArPSBnYXRla2VlcGVyV2FybmluZztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlU3VjY2Vzc1Jlc3BvbnNlKHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgYSB0ZW1wbGF0ZSAodGVtcGxhdGVzIGFyZSBzdGF0ZWxlc3MpXG4gICAqIEV4dHJhY3RlZCBmcm9tIEVsZW1lbnRDUlVESGFuZGxlci50cyBsaW5lcyA1NDMtNTUwXG4gICAqL1xuICBhc3luYyBkZWFjdGl2YXRlKF9uYW1lOiBzdHJpbmcpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBcIvCfk50gVGVtcGxhdGVzIGFyZSBzdGF0ZWxlc3MgLSBub3RoaW5nIHRvIGRlYWN0aXZhdGVcIlxuICAgICAgfV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY3RpdmUgdGVtcGxhdGVzICh0ZW1wbGF0ZXMgYXJlIHN0YXRlbGVzcylcbiAgICogRXh0cmFjdGVkIGZyb20gRWxlbWVudENSVURIYW5kbGVyLnRzIGxpbmVzIDQxNC00MjFcbiAgICovXG4gIGFzeW5jIGdldEFjdGl2ZUVsZW1lbnRzKCk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IFwi8J+TnSBUZW1wbGF0ZXMgYXJlIHN0YXRlbGVzcyBhbmQgYWN0aXZhdGVkIG9uLWRlbWFuZCB3aGVuIHJlbmRlcmluZ1wiXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgdGVtcGxhdGVcbiAgICogRXh0cmFjdGVkIGZyb20gRWxlbWVudENSVURIYW5kbGVyLnRzIGxpbmVzIDY5MS03MjhcbiAgICpcbiAgICogQHRocm93cyB7RWxlbWVudE5vdEZvdW5kRXJyb3J9IFdoZW4gdGVtcGxhdGUgZG9lcyBub3QgZXhpc3RcbiAgICogQHNlZSBJc3N1ZSAjMjc1IC0gSGFuZGxlcnMgcmV0dXJuIHN1Y2Nlc3M9dHJ1ZSBmb3IgbWlzc2luZyBlbGVtZW50c1xuICAgKi9cbiAgYXN5bmMgZ2V0RWxlbWVudERldGFpbHMobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSBmbGV4aWJsZSBmaW5kaW5nIHRvIHN1cHBvcnQgYm90aCBkaXNwbGF5IG5hbWUgYW5kIGZpbGVuYW1lXG4gICAgY29uc3QgYWxsVGVtcGxhdGVzID0gYXdhaXQgdGhpcy50ZW1wbGF0ZU1hbmFnZXIubGlzdCgpO1xuICAgIGNvbnN0IHRlbXBsYXRlID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudEZsZXhpYmx5KG5hbWUsIGFsbFRlbXBsYXRlcyk7XG4gICAgaWYgKCF0ZW1wbGF0ZSkge1xuICAgICAgdGhpcy50aHJvd05vdEZvdW5kRXJyb3IobmFtZSwgJ1RlbXBsYXRlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGV0YWlscyA9IFtcbiAgICAgIGDwn5OEICoqJHt0ZW1wbGF0ZS5tZXRhZGF0YS5uYW1lfSoqYCxcbiAgICAgIGAke3RlbXBsYXRlLm1ldGFkYXRhLmRlc2NyaXB0aW9ufWAsXG4gICAgICBgYCxcbiAgICAgIGAqKk91dHB1dCBGb3JtYXQqKjogJHsodGVtcGxhdGUubWV0YWRhdGEgYXMgYW55KS5vdXRwdXRfZm9ybWF0IHx8ICd0ZXh0J31gLFxuICAgICAgYCoqVGVtcGxhdGUgQ29udGVudCoqOmAsXG4gICAgICAnYGBgJyxcbiAgICAgIHRlbXBsYXRlLmNvbnRlbnQsXG4gICAgICAnYGBgJ1xuICAgIF07XG5cbiAgICBpZiAodGVtcGxhdGUubWV0YWRhdGEudmFyaWFibGVzICYmIHRlbXBsYXRlLm1ldGFkYXRhLnZhcmlhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycsICcqKlZhcmlhYmxlcyoqOicpO1xuICAgICAgdGVtcGxhdGUubWV0YWRhdGEudmFyaWFibGVzLmZvckVhY2goKHY6IGFueSkgPT4ge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gJHt2Lm5hbWV9ICgke3YudHlwZX0pOiAke3YuZGVzY3JpcHRpb259YCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGRldGFpbHMuam9pbignXFxuJylcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -214,7 +214,7 @@ export class PersonaElement extends BaseElement {
|
|
|
214
214
|
revenue_split: metadata.revenue_split,
|
|
215
215
|
license: metadata.license,
|
|
216
216
|
created_date: metadata.created_date,
|
|
217
|
-
gatekeeper: sanitizeGatekeeperPolicy(metadata.gatekeeper, metadata.name || 'unknown', 'persona'),
|
|
217
|
+
gatekeeper: sanitizeGatekeeperPolicy(metadata.gatekeeper, metadata.name || 'unknown', 'persona', metadata),
|
|
218
218
|
};
|
|
219
219
|
// Dual-field loading: detect v2 format (instructions in YAML frontmatter)
|
|
220
220
|
const bodyText = parsed.content.trim();
|
|
@@ -271,4 +271,4 @@ export class PersonaElement extends BaseElement {
|
|
|
271
271
|
await super.deactivate?.();
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYUVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc29uYS9QZXJzb25hRWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQWtCM0YsTUFBTSxPQUFPLGNBQWUsU0FBUSxXQUFXO0lBQzdDLHFGQUFxRjtJQUM5RSxRQUFRLENBQVM7SUFHeEI7O09BRUc7SUFDSCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDbEIsQ0FBQztJQUVELFlBQVksUUFBeUMsRUFBRSxlQUF1QixFQUFFLEVBQUUsV0FBbUIsRUFBRSxFQUFFLGVBQWdDLEVBQUUsVUFBa0IsRUFBRTtRQUM3SixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQ2hCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxJ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QWtDO2FBQ2hFLENBQUMsQ0FBQztZQUVILHdDQUF3QztZQUN4QyxNQUFNLGdCQUFnQixHQUFHLElBQUksS0FBSyxDQUFDLDBDQUEwQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQzdGLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO2dCQUMzQixnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxNQUFNLGdCQUFnQixDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDYSxLQUFLLENBQUMsUUFBUTtRQUM1QixNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV0RSx5REFBeUQ7UUFDekQsbURBQW1EO1FBRW5ELE1BQU0sS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ2EsS0FBSyxDQUFDLFVBQVU7UUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFeEUsMkRBQTJEO1FBQzNELG1EQUFtRDtRQUVuRCxNQUFNLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGVyc29uYSBlbGVtZW50IGNsYXNzIGltcGxlbWVudGluZyBJRWxlbWVudCBpbnRlcmZhY2UuXG4gKiBSZXByZXNlbnRzIGEgYmVoYXZpb3JhbCBwcm9maWxlIHRoYXQgZGVmaW5lcyBBSSBwZXJzb25hbGl0eSBhbmQgaW50ZXJhY3Rpb24gc3R5bGUuXG4gKi9cblxuaW1wb3J0IHsgQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9lbGVtZW50cy9CYXNlRWxlbWVudC5qcyc7XG5pbXBvcnQgeyBJRWxlbWVudCwgSUVsZW1lbnRNZXRhZGF0YSwgRWxlbWVudFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuLi90eXBlcy9lbGVtZW50cy9pbmRleC5qcyc7XG5pbXBvcnQgeyBFbGVtZW50VHlwZSB9IGZyb20gJy4uL3BvcnRmb2xpby90eXBlcy5qcyc7XG5pbXBvcnQgeyBQZXJzb25hTWV0YWRhdGEgfSBmcm9tICcuLi90eXBlcy9wZXJzb25hLmpzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBTZWN1cmVZYW1sUGFyc2VyIH0gZnJvbSAnLi4vc2VjdXJpdHkvc2VjdXJlWWFtbFBhcnNlci5qcyc7XG5pbXBvcnQgeyBNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9NZXRhZGF0YVNlcnZpY2UuanMnO1xuaW1wb3J0IHsgc2FuaXRpemVHYXRla2VlcGVyUG9saWN5IH0gZnJvbSAnLi4vaGFuZGxlcnMvbWNwLWFxbC9wb2xpY2llcy9FbGVtZW50UG9saWNpZXMuanMnO1xuXG4vLyBFeHRlbmQgSUVsZW1lbnRNZXRhZGF0YSB3aXRoIHBlcnNvbmEtc3BlY2lmaWMgZmllbGRzXG5leHBvcnQgaW50ZXJmYWNlIFBlcnNvbmFFbGVtZW50TWV0YWRhdGEgZXh0ZW5kcyBJRWxlbWVudE1ldGFkYXRhIHtcbiAgdHlwZT86IEVsZW1lbnRUeXBlLlBFUlNPTkE7ICAgICAgICAgICAgICAgLy8gUGVyc29uYSB0eXBlIGNvbnN0cmFpbnQgZm9yIHR5cGUgc2FmZXR5XG4gIHVuaXF1ZV9pZD86IHN0cmluZzsgIC8vIExlZ2FjeSBJRCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICB0cmlnZ2Vycz86IHN0cmluZ1tdO1xuICBjYXRlZ29yeT86IHN0cmluZztcbiAgYWdlX3JhdGluZz86ICdhbGwnIHwgJzEzKycgfCAnMTgrJztcbiAgY29udGVudF9mbGFncz86IHN0cmluZ1tdO1xuICBhaV9nZW5lcmF0ZWQ/OiBib29sZWFuO1xuICBnZW5lcmF0aW9uX21ldGhvZD86ICdodW1hbicgfCAnQ2hhdEdQVCcgfCAnQ2xhdWRlJyB8ICdoeWJyaWQnO1xuICBwcmljZT86IHN0cmluZztcbiAgcmV2ZW51ZV9zcGxpdD86IHN0cmluZztcbiAgbGljZW5zZT86IHN0cmluZztcbiAgY3JlYXRlZF9kYXRlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUGVyc29uYUVsZW1lbnQgZXh0ZW5kcyBCYXNlRWxlbWVudCBpbXBsZW1lbnRzIElFbGVtZW50IHtcbiAgLy8gaW5zdHJ1Y3Rpb25zIGFuZCBjb250ZW50IGluaGVyaXRlZCBmcm9tIEJhc2VFbGVtZW50ICh2Mi4wIGR1YWwtZmllbGQgYXJjaGl0ZWN0dXJlKVxuICBwdWJsaWMgZmlsZW5hbWU6IHN0cmluZztcbiAgcHVibGljIGRlY2xhcmUgbWV0YWRhdGE6IFBlcnNvbmFFbGVtZW50TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEJhY2t3YXJkIGNvbXBhdGliaWxpdHk6IHByb3ZpZGUgdW5pcXVlX2lkIGFzIGFuIGFsaWFzIGZvciBpZFxuICAgKi9cbiAgZ2V0IHVuaXF1ZV9pZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgc2V0IHVuaXF1ZV9pZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pZCA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IobWV0YWRhdGE6IFBhcnRpYWw8UGVyc29uYUVsZW1lbnRNZXRhZGF0YT4sIGluc3RydWN0aW9uczogc3RyaW5nID0gJycsIGZpbGVuYW1lOiBzdHJpbmcgPSAnJywgbWV0YWRhdGFTZXJ2aWNlOiBNZXRhZGF0YVNlcnZpY2UsIGNvbnRlbnQ6IHN0cmluZyA9ICcnKSB7XG4gICAgc3VwZXIoRWxlbWVudFR5cGUuUEVSU09OQSwgbWV0YWRhdGEsIG1ldGFkYXRhU2VydmljZSk7XG4gICAgdGhpcy5pbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvbnM7XG4gICAgdGhpcy5jb250ZW50ID0gY29udGVudDtcbiAgICB0aGlzLmZpbGVuYW1lID0gZmlsZW5hbWU7XG4gICAgXG4gICAgLy8gRW5zdXJlIHBlcnNvbmEtc3BlY2lmaWMgbWV0YWRhdGFcbiAgICB0aGlzLm1ldGFkYXRhID0ge1xuICAgICAgLi4udGhpcy5tZXRhZGF0YSxcbiAgICAgIHRyaWdnZXJzOiBtZXRhZGF0YS50cmlnZ2VycyAmJiBtZXRhZGF0YS50cmlnZ2Vycy5sZW5ndGggPiAwID8gbWV0YWRhdGEudHJpZ2dlcnMgOiB1bmRlZmluZWQsXG4gICAgICBjYXRlZ29yeTogbWV0YWRhdGEuY2F0ZWdvcnkgfHwgJ3BlcnNvbmFsJyxcbiAgICAgIGFnZV9yYXRpbmc6IG1ldGFkYXRhLmFnZV9yYXRpbmcgfHwgJ2FsbCcsXG4gICAgICBjb250ZW50X2ZsYWdzOiBtZXRhZGF0YS5jb250ZW50X2ZsYWdzIHx8IFtdLFxuICAgICAgYWlfZ2VuZXJhdGVkOiBtZXRhZGF0YS5haV9nZW5lcmF0ZWQgfHwgZmFsc2UsXG4gICAgICBnZW5lcmF0aW9uX21ldGhvZDogbWV0YWRhdGEuZ2VuZXJhdGlvbl9tZXRob2QgfHwgJ2h1bWFuJyxcbiAgICAgIHByaWNlOiBtZXRhZGF0YS5wcmljZSB8fCAnZnJlZScsXG4gICAgICByZXZlbnVlX3NwbGl0OiBtZXRhZGF0YS5yZXZlbnVlX3NwbGl0LCAgLy8gUHJlc2VydmUgcmV2ZW51ZV9zcGxpdCBpZiBwcm92aWRlZFxuICAgICAgbGljZW5zZTogbWV0YWRhdGEubGljZW5zZSB8fCAnQ0MtQlktU0EtNC4wJyxcbiAgICAgIGNyZWF0ZWRfZGF0ZTogbWV0YWRhdGEuY3JlYXRlZF9kYXRlIHx8IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgUGVyc29uYUVsZW1lbnQgZnJvbSBsZWdhY3kgUGVyc29uYSBpbnRlcmZhY2VcbiAgICovXG4gIHN0YXRpYyBmcm9tTGVnYWN5KGxlZ2FjeVBlcnNvbmE6IHsgbWV0YWRhdGE6IFBlcnNvbmFNZXRhZGF0YTsgY29udGVudDogc3RyaW5nOyBmaWxlbmFtZTogc3RyaW5nOyB1bmlxdWVfaWQ6IHN0cmluZyB9LCBtZXRhZGF0YVNlcnZpY2U6IE1ldGFkYXRhU2VydmljZSk6IFBlcnNvbmFFbGVtZW50IHtcbiAgICBjb25zdCBtZXRhZGF0YTogUGFydGlhbDxQZXJzb25hRWxlbWVudE1ldGFkYXRhPiA9IHtcbiAgICAgIG5hbWU6IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBsZWdhY3lQZXJzb25hLm1ldGFkYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgYXV0aG9yOiBsZWdhY3lQZXJzb25hLm1ldGFkYXRhLmF1dGhvcixcbiAgICAgIHZlcnNpb246IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEudmVyc2lvbixcbiAgICAgIHRyaWdnZXJzOiBsZWdhY3lQZXJzb25hLm1ldGFkYXRhLnRyaWdnZXJzLFxuICAgICAgY2F0ZWdvcnk6IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEuY2F0ZWdvcnksXG4gICAgICBhZ2VfcmF0aW5nOiBsZWdhY3lQZXJzb25hLm1ldGFkYXRhLmFnZV9yYXRpbmcgYXMgXCJhbGxcIiB8IFwiMTMrXCIgfCBcIjE4K1wiIHwgdW5kZWZpbmVkLFxuICAgICAgY29udGVudF9mbGFnczogbGVnYWN5UGVyc29uYS5tZXRhZGF0YS5jb250ZW50X2ZsYWdzLFxuICAgICAgYWlfZ2VuZXJhdGVkOiBsZWdhY3lQZXJzb25hLm1ldGFkYXRhLmFpX2dlbmVyYXRlZCxcbiAgICAgIGdlbmVyYXRpb25fbWV0aG9kOiBsZWdhY3lQZXJzb25hLm1ldGFkYXRhLmdlbmVyYXRpb25fbWV0aG9kIGFzIFwiaHVtYW5cIiB8IFwiQ2hhdEdQVFwiIHwgXCJDbGF1ZGVcIiB8IFwiaHlicmlkXCIgfCB1bmRlZmluZWQsXG4gICAgICBwcmljZTogbGVnYWN5UGVyc29uYS5tZXRhZGF0YS5wcmljZSxcbiAgICAgIHJldmVudWVfc3BsaXQ6IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEucmV2ZW51ZV9zcGxpdCxcbiAgICAgIGxpY2Vuc2U6IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEubGljZW5zZSxcbiAgICAgIGNyZWF0ZWRfZGF0ZTogbGVnYWN5UGVyc29uYS5tZXRhZGF0YS5jcmVhdGVkX2RhdGVcbiAgICB9O1xuXG4gICAgLy8gTGVnYWN5IHBlcnNvbmFzOiBib2R5IGNvbnRlbnQgbWFwcyB0byBpbnN0cnVjdGlvbnMgKGl0IElTIGJlaGF2aW9yYWwgZGlyZWN0aXZlcylcbiAgICBjb25zdCBwZXJzb25hID0gbmV3IFBlcnNvbmFFbGVtZW50KG1ldGFkYXRhLCBsZWdhY3lQZXJzb25hLmNvbnRlbnQsIGxlZ2FjeVBlcnNvbmEuZmlsZW5hbWUsIG1ldGFkYXRhU2VydmljZSk7XG5cbiAgICAvLyBQcmVzZXJ2ZSB0aGUgbGVnYWN5IHVuaXF1ZV9pZCBhcyB0aGUgZWxlbWVudCBpZFxuICAgIHBlcnNvbmEuaWQgPSBsZWdhY3lQZXJzb25hLnVuaXF1ZV9pZDtcblxuICAgIHJldHVybiBwZXJzb25hO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gbGVnYWN5IFBlcnNvbmEgaW50ZXJmYWNlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAqL1xuICB0b0xlZ2FjeSgpOiB7IG1ldGFkYXRhOiBQZXJzb25hTWV0YWRhdGE7IGNvbnRlbnQ6IHN0cmluZzsgZmlsZW5hbWU6IHN0cmluZzsgdW5pcXVlX2lkOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgbGVnYWN5TWV0YWRhdGE6IFBlcnNvbmFNZXRhZGF0YSA9IHtcbiAgICAgIG5hbWU6IHRoaXMubWV0YWRhdGEubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLm1ldGFkYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgdW5pcXVlX2lkOiB0aGlzLmlkLFxuICAgICAgYXV0aG9yOiB0aGlzLm1ldGFkYXRhLmF1dGhvcixcbiAgICAgIHRyaWdnZXJzOiB0aGlzLm1ldGFkYXRhLnRyaWdnZXJzLFxuICAgICAgdmVyc2lvbjogdGhpcy5tZXRhZGF0YS52ZXJzaW9uLFxuICAgICAgY2F0ZWdvcnk6IHRoaXMubWV0YWRhdGEuY2F0ZWdvcnksXG4gICAgICBhZ2VfcmF0aW5nOiB0aGlzLm1ldGFkYXRhLmFnZV9yYXRpbmcsXG4gICAgICBjb250ZW50X2ZsYWdzOiB0aGlzLm1ldGFkYXRhLmNvbnRlbnRfZmxhZ3MsXG4gICAgICBhaV9nZW5lcmF0ZWQ6IHRoaXMubWV0YWRhdGEuYWlfZ2VuZXJhdGVkLFxuICAgICAgZ2VuZXJhdGlvbl9tZXRob2Q6IHRoaXMubWV0YWRhdGEuZ2VuZXJhdGlvbl9tZXRob2QsXG4gICAgICBwcmljZTogdGhpcy5tZXRhZGF0YS5wcmljZSxcbiAgICAgIHJldmVudWVfc3BsaXQ6IHRoaXMubWV0YWRhdGEucmV2ZW51ZV9zcGxpdCxcbiAgICAgIGxpY2Vuc2U6IHRoaXMubWV0YWRhdGEubGljZW5zZSxcbiAgICAgIGNyZWF0ZWRfZGF0ZTogdGhpcy5tZXRhZGF0YS5jcmVhdGVkX2RhdGVcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1ldGFkYXRhOiBsZWdhY3lNZXRhZGF0YSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuaW5zdHJ1Y3Rpb25zIHx8IHRoaXMuY29udGVudCxcbiAgICAgIGZpbGVuYW1lOiB0aGlzLmZpbGVuYW1lLFxuICAgICAgdW5pcXVlX2lkOiB0aGlzLmlkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzb25hLXNwZWNpZmljIHZhbGlkYXRpb25cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB2YWxpZGF0ZSgpOiBFbGVtZW50VmFsaWRhdGlvblJlc3VsdCB7XG4gICAgY29uc3QgcmVzdWx0ID0gc3VwZXIudmFsaWRhdGUoKTtcbiAgICBcbiAgICAvLyBJbml0aWFsaXplIGFycmF5cyBpZiBub3QgcHJlc2VudFxuICAgIGlmICghcmVzdWx0LmVycm9ycykgcmVzdWx0LmVycm9ycyA9IFtdO1xuICAgIGlmICghcmVzdWx0Lndhcm5pbmdzKSByZXN1bHQud2FybmluZ3MgPSBbXTtcbiAgICBcbiAgICAvLyBBZGQgcGVyc29uYS1zcGVjaWZpYyB2YWxpZGF0aW9uIHJ1bGVzXG5cbiAgICAvLyBJbnN0cnVjdGlvbnMgc2hvdWxkIG5vdCBiZSBlbXB0eSAocHJpbWFyeSBmaWVsZCBmb3IgcGVyc29uYXMpXG4gICAgY29uc3QgZWZmZWN0aXZlSW5zdHJ1Y3Rpb25zID0gdGhpcy5pbnN0cnVjdGlvbnMgfHwgdGhpcy5jb250ZW50O1xuICAgIGlmICghZWZmZWN0aXZlSW5zdHJ1Y3Rpb25zIHx8IGVmZmVjdGl2ZUluc3RydWN0aW9ucy50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXN1bHQuZXJyb3JzLnB1c2goe1xuICAgICAgICBmaWVsZDogJ2luc3RydWN0aW9ucycsXG4gICAgICAgIG1lc3NhZ2U6ICdQZXJzb25hIGluc3RydWN0aW9ucyBjYW5ub3QgYmUgZW1wdHknLFxuICAgICAgICBjb2RlOiAnRU1QVFlfSU5TVFJVQ1RJT05TJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSW5zdHJ1Y3Rpb25zIHNob3VsZCBiZSByZWFzb25hYmxlIGxlbmd0aFxuICAgIGlmIChlZmZlY3RpdmVJbnN0cnVjdGlvbnMgJiYgZWZmZWN0aXZlSW5zdHJ1Y3Rpb25zLmxlbmd0aCA+IDEwMDAwKSB7XG4gICAgICByZXN1bHQud2FybmluZ3MucHVzaCh7XG4gICAgICAgIGZpZWxkOiAnaW5zdHJ1Y3Rpb25zJyxcbiAgICAgICAgbWVzc2FnZTogJ1BlcnNvbmEgaW5zdHJ1Y3Rpb25zIGFyZSB2ZXJ5IGxvbmcsIGNvbnNpZGVyIGJyZWFraW5nIHRoZW0gZG93bicsXG4gICAgICAgIHNldmVyaXR5OiAnbWVkaXVtJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlcnMgc2hvdWxkIGJlIHJlYXNvbmFibGVcbiAgICBpZiAodGhpcy5tZXRhZGF0YS50cmlnZ2VycyAmJiB0aGlzLm1ldGFkYXRhLnRyaWdnZXJzLmxlbmd0aCA+IDEwKSB7XG4gICAgICByZXN1bHQud2FybmluZ3MucHVzaCh7XG4gICAgICAgIGZpZWxkOiAndHJpZ2dlcnMnLFxuICAgICAgICBtZXNzYWdlOiAnTWFueSB0cmlnZ2VycyBtYXkgY2F1c2UgYWN0aXZhdGlvbiBjb25mbGljdHMnLFxuICAgICAgICBzZXZlcml0eTogJ21lZGl1bSdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBhZHVsdCBjb250ZW50IGZsYWdzXG4gICAgaWYgKHRoaXMubWV0YWRhdGEuYWdlX3JhdGluZyA9PT0gJzE4KycgJiYgIXRoaXMubWV0YWRhdGEuY29udGVudF9mbGFncz8uaW5jbHVkZXMoJ2FkdWx0JykpIHtcbiAgICAgIHJlc3VsdC53YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgZmllbGQ6ICdjb250ZW50X2ZsYWdzJyxcbiAgICAgICAgbWVzc2FnZTogJzE4KyBjb250ZW50IHNob3VsZCBpbmNsdWRlIFwiYWR1bHRcIiBpbiBjb250ZW50X2ZsYWdzJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdsb3cnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIHZhbGlkIGZsYWcgYmFzZWQgb24gZmluYWwgZXJyb3JzXG4gICAgcmVzdWx0LnZhbGlkID0gKHJlc3VsdC5lcnJvcnM/Lmxlbmd0aCB8fCAwKSA9PT0gMDtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbnRlbnQgZm9yIHNlcmlhbGl6YXRpb24uXG4gICAqIFJldHVybnMgaW5zdHJ1Y3Rpb25zIGFzIHRoZSBwcmltYXJ5IGJvZHkgdGV4dCAodjEgY29tcGF0KS5cbiAgICogdjIgZm9ybWF0IHdyaXRlcyBpbnN0cnVjdGlvbnMgdG8gWUFNTCBmcm9udG1hdHRlciBhbmQgY29udGVudCBhcyBib2R5LlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldENvbnRlbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnN0cnVjdGlvbnMgfHwgdGhpcy5jb250ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSBwZXJzb25hIHRvIG1hcmtkb3duIGZvcm1hdFxuICAgKiBSZWZhY3RvcmVkIHRvIHVzZSBiYXNlIGNsYXNzIHBhdHRlcm4gd2l0aCBnZXRDb250ZW50KClcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICAvLyBTdG9yZSBvcmlnaW5hbCBtZXRhZGF0YVxuICAgIGNvbnN0IG9yaWdpbmFsTWV0YWRhdGEgPSB0aGlzLm1ldGFkYXRhO1xuICAgIFxuICAgIC8vIEFkZCBwZXJzb25hLXNwZWNpZmljIGZpZWxkcyB0byBtZXRhZGF0YSB0ZW1wb3JhcmlseVxuICAgIC8vIENhc3QgdG8gUGVyc29uYUVsZW1lbnRNZXRhZGF0YSB0byBpbmNsdWRlIHVuaXF1ZV9pZFxuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICAuLi5vcmlnaW5hbE1ldGFkYXRhLFxuICAgICAgdW5pcXVlX2lkOiB0aGlzLmlkLCAgLy8gSW5jbHVkZSBJRCBhcyB1bmlxdWVfaWQgZm9yIGxlZ2FjeSBjb21wYXRpYmlsaXR5XG4gICAgICB0cmlnZ2VyczogKG9yaWdpbmFsTWV0YWRhdGEgYXMgUGVyc29uYUVsZW1lbnRNZXRhZGF0YSkudHJpZ2dlcnMsXG4gICAgICBjYXRlZ29yeTogKG9yaWdpbmFsTWV0YWRhdGEgYXMgUGVyc29uYUVsZW1lbnRNZXRhZGF0YSkuY2F0ZWdvcnksXG4gICAgICBhZ2VfcmF0aW5nOiAob3JpZ2luYWxNZXRhZGF0YSBhcyBQZXJzb25hRWxlbWVudE1ldGFkYXRhKS5hZ2VfcmF0aW5nLFxuICAgICAgY29udGVudF9mbGFnczogKG9yaWdpbmFsTWV0YWRhdGEgYXMgUGVyc29uYUVsZW1lbnRNZXRhZGF0YSkuY29udGVudF9mbGFncyxcbiAgICAgIGFpX2dlbmVyYXRlZDogKG9yaWdpbmFsTWV0YWRhdGEgYXMgUGVyc29uYUVsZW1lbnRNZXRhZGF0YSkuYWlfZ2VuZXJhdGVkLFxuICAgICAgZ2VuZXJhdGlvbl9tZXRob2Q6IChvcmlnaW5hbE1ldGFkYXRhIGFzIFBlcnNvbmFFbGVtZW50TWV0YWRhdGEpLmdlbmVyYXRpb25fbWV0aG9kLFxuICAgICAgcHJpY2U6IChvcmlnaW5hbE1ldGFkYXRhIGFzIFBlcnNvbmFFbGVtZW50TWV0YWRhdGEpLnByaWNlLFxuICAgICAgcmV2ZW51ZV9zcGxpdDogKG9yaWdpbmFsTWV0YWRhdGEgYXMgUGVyc29uYUVsZW1lbnRNZXRhZGF0YSkucmV2ZW51ZV9zcGxpdCxcbiAgICAgIGxpY2Vuc2U6IChvcmlnaW5hbE1ldGFkYXRhIGFzIFBlcnNvbmFFbGVtZW50TWV0YWRhdGEpLmxpY2Vuc2UsXG4gICAgICBjcmVhdGVkX2RhdGU6IChvcmlnaW5hbE1ldGFkYXRhIGFzIFBlcnNvbmFFbGVtZW50TWV0YWRhdGEpLmNyZWF0ZWRfZGF0ZVxuICAgIH07XG4gICAgXG4gICAgLy8gVXNlIGJhc2UgY2xhc3Mgc2VyaWFsaXplIHdoaWNoIG5vdyB1c2VzIGpzLXlhbWxcbiAgICBjb25zdCByZXN1bHQgPSBzdXBlci5zZXJpYWxpemUoKTtcbiAgICBcbiAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIG1ldGFkYXRhXG4gICAgdGhpcy5tZXRhZGF0YSA9IG9yaWdpbmFsTWV0YWRhdGE7XG4gICAgXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSB0byBKU09OIGZvcm1hdCBmb3IgaW50ZXJuYWwgdXNlIGFuZCB0ZXN0aW5nXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgc2VyaWFsaXplVG9KU09OKCk6IHN0cmluZyB7XG4gICAgLy8gSW5jbHVkZSBwZXJzb25hLXNwZWNpZmljIGZpZWxkc1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAuLi5KU09OLnBhcnNlKHN1cGVyLnNlcmlhbGl6ZVRvSlNPTigpKSxcbiAgICAgIGluc3RydWN0aW9uczogdGhpcy5pbnN0cnVjdGlvbnMsXG4gICAgICBjb250ZW50OiB0aGlzLmNvbnRlbnRcbiAgICB9O1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBwZXJzb25hIGZyb20gbWFya2Rvd24gZm9ybWF0XG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGVzZXJpYWxpemUoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IFNlY3VyZVlhbWxQYXJzZXIuc2FmZU1hdHRlcihkYXRhKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gcGFyc2VkLmRhdGEgYXMgUGVyc29uYU1ldGFkYXRhO1xuICAgICAgXG4gICAgICAvLyBVcGRhdGUgbWV0YWRhdGFcbiAgICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICAgIC4uLnRoaXMubWV0YWRhdGEsXG4gICAgICAgIG5hbWU6IG1ldGFkYXRhLm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhZGF0YS5kZXNjcmlwdGlvbixcbiAgICAgICAgYXV0aG9yOiBtZXRhZGF0YS5hdXRob3IsXG4gICAgICAgIHZlcnNpb246IG1ldGFkYXRhLnZlcnNpb24sXG4gICAgICAgIHRyaWdnZXJzOiBtZXRhZGF0YS50cmlnZ2VycyxcbiAgICAgICAgY2F0ZWdvcnk6IG1ldGFkYXRhLmNhdGVnb3J5LFxuICAgICAgICBhZ2VfcmF0aW5nOiBtZXRhZGF0YS5hZ2VfcmF0aW5nIGFzIFwiYWxsXCIgfCBcIjEzK1wiIHwgXCIxOCtcIiB8IHVuZGVmaW5lZCxcbiAgICAgICAgY29udGVudF9mbGFnczogbWV0YWRhdGEuY29udGVudF9mbGFncyxcbiAgICAgICAgYWlfZ2VuZXJhdGVkOiBtZXRhZGF0YS5haV9nZW5lcmF0ZWQsXG4gICAgICAgIGdlbmVyYXRpb25fbWV0aG9kOiBtZXRhZGF0YS5nZW5lcmF0aW9uX21ldGhvZCBhcyBcImh1bWFuXCIgfCBcIkNoYXRHUFRcIiB8IFwiQ2xhdWRlXCIgfCBcImh5YnJpZFwiIHwgdW5kZWZpbmVkLFxuICAgICAgICBwcmljZTogbWV0YWRhdGEucHJpY2UsXG4gICAgICAgIHJldmVudWVfc3BsaXQ6IG1ldGFkYXRhLnJldmVudWVfc3BsaXQsXG4gICAgICAgIGxpY2Vuc2U6IG1ldGFkYXRhLmxpY2Vuc2UsXG4gICAgICAgIGNyZWF0ZWRfZGF0ZTogbWV0YWRhdGEuY3JlYXRlZF9kYXRlLFxuICAgICAgICBnYXRla2VlcGVyOiBzYW5pdGl6ZUdhdGVrZWVwZXJQb2xpY3koKG1ldGFkYXRhIGFzIGFueSkuZ2F0ZWtlZXBlciwgbWV0YWRhdGEubmFtZSB8fCAndW5rbm93bicsICdwZXJzb25hJyksXG4gICAgICB9O1xuXG4gICAgICAvLyBEdWFsLWZpZWxkIGxvYWRpbmc6IGRldGVjdCB2MiBmb3JtYXQgKGluc3RydWN0aW9ucyBpbiBZQU1MIGZyb250bWF0dGVyKVxuICAgICAgY29uc3QgYm9keVRleHQgPSBwYXJzZWQuY29udGVudC50cmltKCk7XG4gICAgICBpZiAobWV0YWRhdGEuaW5zdHJ1Y3Rpb25zKSB7XG4gICAgICAgIC8vIHYyIGZvcm1hdDogaW5zdHJ1Y3Rpb25zIGZyb20gWUFNTCwgYm9keSB0ZXh0IGlzIGNvbnRlbnQgKHJlZmVyZW5jZSBtYXRlcmlhbClcbiAgICAgICAgdGhpcy5pbnN0cnVjdGlvbnMgPSBtZXRhZGF0YS5pbnN0cnVjdGlvbnM7XG4gICAgICAgIHRoaXMuY29udGVudCA9IGJvZHlUZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdjEgZm9ybWF0OiBib2R5IHRleHQgbWFwcyB0byBpbnN0cnVjdGlvbnMgKGl0IElTIGJlaGF2aW9yYWwgZGlyZWN0aXZlcylcbiAgICAgICAgdGhpcy5pbnN0cnVjdGlvbnMgPSBib2R5VGV4dDtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gJyc7XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBJRCBpZiBwcm92aWRlZFxuICAgICAgaWYgKG1ldGFkYXRhLnVuaXF1ZV9pZCkge1xuICAgICAgICB0aGlzLmlkID0gbWV0YWRhdGEudW5pcXVlX2lkO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0aGlzLl9pc0RpcnR5ID0gdHJ1ZTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgRGVzZXJpYWxpemVkIHBlcnNvbmE6ICR7dGhpcy5tZXRhZGF0YS5uYW1lfWApO1xuICAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFByZXNlcnZlIG9yaWdpbmFsIGVycm9yIGNvbnRleHQgZm9yIGJldHRlciBkZWJ1Z2dpbmdcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgICAgIGNvbnN0IGVycm9yU3RhY2sgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3Iuc3RhY2sgOiB1bmRlZmluZWQ7XG4gICAgICBcbiAgICAgIGxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlc2VyaWFsaXplIHBlcnNvbmEnLCB7IFxuICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlLFxuICAgICAgICBzdGFjazogZXJyb3JTdGFjayxcbiAgICAgICAgZGF0YTogZGF0YS5zdWJzdHJpbmcoMCwgMjAwKSAvLyBMb2cgZmlyc3QgMjAwIGNoYXJzIGZvciBjb250ZXh0XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gUmUtdGhyb3cgd2l0aCBvcmlnaW5hbCBlcnJvciBhcyBjYXVzZVxuICAgICAgY29uc3QgZGVzZXJpYWxpemVFcnJvciA9IG5ldyBFcnJvcihgUGVyc29uYUVsZW1lbnQgZGVzZXJpYWxpemF0aW9uIGZhaWxlZDogJHtlcnJvck1lc3NhZ2V9YCk7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBkZXNlcmlhbGl6ZUVycm9yLmNhdXNlID0gZXJyb3I7XG4gICAgICB9XG4gICAgICB0aHJvdyBkZXNlcmlhbGl6ZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzb25hIGFjdGl2YXRpb24gbGlmZWN5Y2xlXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgYWN0aXZhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmluZm8oYEFjdGl2YXRpbmcgcGVyc29uYTogJHt0aGlzLm1ldGFkYXRhLm5hbWV9ICgke3RoaXMuaWR9KWApO1xuICAgIFxuICAgIC8vIFBlcnNvbmFzIGRvbid0IG5lZWQgc3BlY2lhbCBhY3RpdmF0aW9uIGxvZ2ljIGN1cnJlbnRseVxuICAgIC8vIEJ1dCB0aGlzIHByb3ZpZGVzIGEgaG9vayBmb3IgZnV0dXJlIGVuaGFuY2VtZW50c1xuICAgIFxuICAgIGF3YWl0IHN1cGVyLmFjdGl2YXRlPy4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzb25hIGRlYWN0aXZhdGlvbiBsaWZlY3ljbGVcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBkZWFjdGl2YXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5pbmZvKGBEZWFjdGl2YXRpbmcgcGVyc29uYTogJHt0aGlzLm1ldGFkYXRhLm5hbWV9ICgke3RoaXMuaWR9KWApO1xuICAgIFxuICAgIC8vIFBlcnNvbmFzIGRvbid0IG5lZWQgc3BlY2lhbCBkZWFjdGl2YXRpb24gbG9naWMgY3VycmVudGx5XG4gICAgLy8gQnV0IHRoaXMgcHJvdmlkZXMgYSBob29rIGZvciBmdXR1cmUgZW5oYW5jZW1lbnRzXG4gICAgXG4gICAgYXdhaXQgc3VwZXIuZGVhY3RpdmF0ZT8uKCk7XG4gIH1cbn1cbiJdfQ==
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYUVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVyc29uYS9QZXJzb25hRWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQWtCM0YsTUFBTSxPQUFPLGNBQWUsU0FBUSxXQUFXO0lBQzdDLHFGQUFxRjtJQUM5RSxRQUFRLENBQVM7SUFHeEI7O09BRUc7SUFDSCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDbEIsQ0FBQztJQUVELFlBQVksUUFBeUMsRUFBRSxlQUF1QixFQUFFLEVBQUUsV0FBbUIsRUFBRSxFQUFFLGVBQWdDLEVBQUUsVUFBa0IsRUFBRTtRQUM3SixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQ2hCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxJ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QUMsQ0FBQyxrQ0FBa0M7YUFDaEUsQ0FBQyxDQUFDO1lBRUgsd0NBQXdDO1lBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxLQUFLLENBQUMsMENBQTBDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDN0YsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7Z0JBQzNCLGdCQUFnQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDakMsQ0FBQztZQUNELE1BQU0sZ0JBQWdCLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNhLEtBQUssQ0FBQyxRQUFRO1FBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXRFLHlEQUF5RDtRQUN6RCxtREFBbUQ7UUFFbkQsTUFBTSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDYSxLQUFLLENBQUMsVUFBVTtRQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV4RSwyREFBMkQ7UUFDM0QsbURBQW1EO1FBRW5ELE1BQU0sS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQZXJzb25hIGVsZW1lbnQgY2xhc3MgaW1wbGVtZW50aW5nIElFbGVtZW50IGludGVyZmFjZS5cbiAqIFJlcHJlc2VudHMgYSBiZWhhdmlvcmFsIHByb2ZpbGUgdGhhdCBkZWZpbmVzIEFJIHBlcnNvbmFsaXR5IGFuZCBpbnRlcmFjdGlvbiBzdHlsZS5cbiAqL1xuXG5pbXBvcnQgeyBCYXNlRWxlbWVudCB9IGZyb20gJy4uL2VsZW1lbnRzL0Jhc2VFbGVtZW50LmpzJztcbmltcG9ydCB7IElFbGVtZW50LCBJRWxlbWVudE1ldGFkYXRhLCBFbGVtZW50VmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4uL3R5cGVzL2VsZW1lbnRzL2luZGV4LmpzJztcbmltcG9ydCB7IEVsZW1lbnRUeXBlIH0gZnJvbSAnLi4vcG9ydGZvbGlvL3R5cGVzLmpzJztcbmltcG9ydCB7IFBlcnNvbmFNZXRhZGF0YSB9IGZyb20gJy4uL3R5cGVzL3BlcnNvbmEuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IFNlY3VyZVlhbWxQYXJzZXIgfSBmcm9tICcuLi9zZWN1cml0eS9zZWN1cmVZYW1sUGFyc2VyLmpzJztcbmltcG9ydCB7IE1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL01ldGFkYXRhU2VydmljZS5qcyc7XG5pbXBvcnQgeyBzYW5pdGl6ZUdhdGVrZWVwZXJQb2xpY3kgfSBmcm9tICcuLi9oYW5kbGVycy9tY3AtYXFsL3BvbGljaWVzL0VsZW1lbnRQb2xpY2llcy5qcyc7XG5cbi8vIEV4dGVuZCBJRWxlbWVudE1ldGFkYXRhIHdpdGggcGVyc29uYS1zcGVjaWZpYyBmaWVsZHNcbmV4cG9ydCBpbnRlcmZhY2UgUGVyc29uYUVsZW1lbnRNZXRhZGF0YSBleHRlbmRzIElFbGVtZW50TWV0YWRhdGEge1xuICB0eXBlPzogRWxlbWVudFR5cGUuUEVSU09OQTsgICAgICAgICAgICAgICAvLyBQZXJzb25hIHR5cGUgY29uc3RyYWludCBmb3IgdHlwZSBzYWZldHlcbiAgdW5pcXVlX2lkPzogc3RyaW5nOyAgLy8gTGVnYWN5IElEIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gIHRyaWdnZXJzPzogc3RyaW5nW107XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xuICBhZ2VfcmF0aW5nPzogJ2FsbCcgfCAnMTMrJyB8ICcxOCsnO1xuICBjb250ZW50X2ZsYWdzPzogc3RyaW5nW107XG4gIGFpX2dlbmVyYXRlZD86IGJvb2xlYW47XG4gIGdlbmVyYXRpb25fbWV0aG9kPzogJ2h1bWFuJyB8ICdDaGF0R1BUJyB8ICdDbGF1ZGUnIHwgJ2h5YnJpZCc7XG4gIHByaWNlPzogc3RyaW5nO1xuICByZXZlbnVlX3NwbGl0Pzogc3RyaW5nO1xuICBsaWNlbnNlPzogc3RyaW5nO1xuICBjcmVhdGVkX2RhdGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQZXJzb25hRWxlbWVudCBleHRlbmRzIEJhc2VFbGVtZW50IGltcGxlbWVudHMgSUVsZW1lbnQge1xuICAvLyBpbnN0cnVjdGlvbnMgYW5kIGNvbnRlbnQgaW5oZXJpdGVkIGZyb20gQmFzZUVsZW1lbnQgKHYyLjAgZHVhbC1maWVsZCBhcmNoaXRlY3R1cmUpXG4gIHB1YmxpYyBmaWxlbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZGVjbGFyZSBtZXRhZGF0YTogUGVyc29uYUVsZW1lbnRNZXRhZGF0YTtcblxuICAvKipcbiAgICogQmFja3dhcmQgY29tcGF0aWJpbGl0eTogcHJvdmlkZSB1bmlxdWVfaWQgYXMgYW4gYWxpYXMgZm9yIGlkXG4gICAqL1xuICBnZXQgdW5pcXVlX2lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWQ7XG4gIH1cblxuICBzZXQgdW5pcXVlX2lkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkID0gdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihtZXRhZGF0YTogUGFydGlhbDxQZXJzb25hRWxlbWVudE1ldGFkYXRhPiwgaW5zdHJ1Y3Rpb25zOiBzdHJpbmcgPSAnJywgZmlsZW5hbWU6IHN0cmluZyA9ICcnLCBtZXRhZGF0YVNlcnZpY2U6IE1ldGFkYXRhU2VydmljZSwgY29udGVudDogc3RyaW5nID0gJycpIHtcbiAgICBzdXBlcihFbGVtZW50VHlwZS5QRVJTT05BLCBtZXRhZGF0YSwgbWV0YWRhdGFTZXJ2aWNlKTtcbiAgICB0aGlzLmluc3RydWN0aW9ucyA9IGluc3RydWN0aW9ucztcbiAgICB0aGlzLmNvbnRlbnQgPSBjb250ZW50O1xuICAgIHRoaXMuZmlsZW5hbWUgPSBmaWxlbmFtZTtcbiAgICBcbiAgICAvLyBFbnN1cmUgcGVyc29uYS1zcGVjaWZpYyBtZXRhZGF0YVxuICAgIHRoaXMubWV0YWRhdGEgPSB7XG4gICAgICAuLi50aGlzLm1ldGFkYXRhLFxuICAgICAgdHJpZ2dlcnM6IG1ldGFkYXRhLnRyaWdnZXJzICYmIG1ldGFkYXRhLnRyaWdnZXJzLmxlbmd0aCA+IDAgPyBtZXRhZGF0YS50cmlnZ2VycyA6IHVuZGVmaW5lZCxcbiAgICAgIGNhdGVnb3J5OiBtZXRhZGF0YS5jYXRlZ29yeSB8fCAncGVyc29uYWwnLFxuICAgICAgYWdlX3JhdGluZzogbWV0YWRhdGEuYWdlX3JhdGluZyB8fCAnYWxsJyxcbiAgICAgIGNvbnRlbnRfZmxhZ3M6IG1ldGFkYXRhLmNvbnRlbnRfZmxhZ3MgfHwgW10sXG4gICAgICBhaV9nZW5lcmF0ZWQ6IG1ldGFkYXRhLmFpX2dlbmVyYXRlZCB8fCBmYWxzZSxcbiAgICAgIGdlbmVyYXRpb25fbWV0aG9kOiBtZXRhZGF0YS5nZW5lcmF0aW9uX21ldGhvZCB8fCAnaHVtYW4nLFxuICAgICAgcHJpY2U6IG1ldGFkYXRhLnByaWNlIHx8ICdmcmVlJyxcbiAgICAgIHJldmVudWVfc3BsaXQ6IG1ldGFkYXRhLnJldmVudWVfc3BsaXQsICAvLyBQcmVzZXJ2ZSByZXZlbnVlX3NwbGl0IGlmIHByb3ZpZGVkXG4gICAgICBsaWNlbnNlOiBtZXRhZGF0YS5saWNlbnNlIHx8ICdDQy1CWS1TQS00LjAnLFxuICAgICAgY3JlYXRlZF9kYXRlOiBtZXRhZGF0YS5jcmVhdGVkX2RhdGUgfHwgbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBQZXJzb25hRWxlbWVudCBmcm9tIGxlZ2FjeSBQZXJzb25hIGludGVyZmFjZVxuICAgKi9cbiAgc3RhdGljIGZyb21MZWdhY3kobGVnYWN5UGVyc29uYTogeyBtZXRhZGF0YTogUGVyc29uYU1ldGFkYXRhOyBjb250ZW50OiBzdHJpbmc7IGZpbGVuYW1lOiBzdHJpbmc7IHVuaXF1ZV9pZDogc3RyaW5nIH0sIG1ldGFkYXRhU2VydmljZTogTWV0YWRhdGFTZXJ2aWNlKTogUGVyc29uYUVsZW1lbnQge1xuICAgIGNvbnN0IG1ldGFkYXRhOiBQYXJ0aWFsPFBlcnNvbmFFbGVtZW50TWV0YWRhdGE+ID0ge1xuICAgICAgbmFtZTogbGVnYWN5UGVyc29uYS5tZXRhZGF0YS5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEuZGVzY3JpcHRpb24sXG4gICAgICBhdXRob3I6IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEuYXV0aG9yLFxuICAgICAgdmVyc2lvbjogbGVnYWN5UGVyc29uYS5tZXRhZGF0YS52ZXJzaW9uLFxuICAgICAgdHJpZ2dlcnM6IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEudHJpZ2dlcnMsXG4gICAgICBjYXRlZ29yeTogbGVnYWN5UGVyc29uYS5tZXRhZGF0YS5jYXRlZ29yeSxcbiAgICAgIGFnZV9yYXRpbmc6IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEuYWdlX3JhdGluZyBhcyBcImFsbFwiIHwgXCIxMytcIiB8IFwiMTgrXCIgfCB1bmRlZmluZWQsXG4gICAgICBjb250ZW50X2ZsYWdzOiBsZWdhY3lQZXJzb25hLm1ldGFkYXRhLmNvbnRlbnRfZmxhZ3MsXG4gICAgICBhaV9nZW5lcmF0ZWQ6IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEuYWlfZ2VuZXJhdGVkLFxuICAgICAgZ2VuZXJhdGlvbl9tZXRob2Q6IGxlZ2FjeVBlcnNvbmEubWV0YWRhdGEuZ2VuZXJhdGlvbl9tZXRob2QgYXMgXCJodW1hblwiIHwgXCJDaGF0R1BUXCIgfCBcIkNsYXVkZVwiIHwgXCJoeWJyaWRcIiB8IHVuZGVmaW5lZCxcbiAgICAgIHByaWNlOiBsZWdhY3lQZXJzb25hLm1ldGFkYXRhLnByaWNlLFxuICAgICAgcmV2ZW51ZV9zcGxpdDogbGVnYWN5UGVyc29uYS5tZXRhZGF0YS5yZXZlbnVlX3NwbGl0LFxuICAgICAgbGljZW5zZTogbGVnYWN5UGVyc29uYS5tZXRhZGF0YS5saWNlbnNlLFxuICAgICAgY3JlYXRlZF9kYXRlOiBsZWdhY3lQZXJzb25hLm1ldGFkYXRhLmNyZWF0ZWRfZGF0ZVxuICAgIH07XG5cbiAgICAvLyBMZWdhY3kgcGVyc29uYXM6IGJvZHkgY29udGVudCBtYXBzIHRvIGluc3RydWN0aW9ucyAoaXQgSVMgYmVoYXZpb3JhbCBkaXJlY3RpdmVzKVxuICAgIGNvbnN0IHBlcnNvbmEgPSBuZXcgUGVyc29uYUVsZW1lbnQobWV0YWRhdGEsIGxlZ2FjeVBlcnNvbmEuY29udGVudCwgbGVnYWN5UGVyc29uYS5maWxlbmFtZSwgbWV0YWRhdGFTZXJ2aWNlKTtcblxuICAgIC8vIFByZXNlcnZlIHRoZSBsZWdhY3kgdW5pcXVlX2lkIGFzIHRoZSBlbGVtZW50IGlkXG4gICAgcGVyc29uYS5pZCA9IGxlZ2FjeVBlcnNvbmEudW5pcXVlX2lkO1xuXG4gICAgcmV0dXJuIHBlcnNvbmE7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0byBsZWdhY3kgUGVyc29uYSBpbnRlcmZhY2UgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICovXG4gIHRvTGVnYWN5KCk6IHsgbWV0YWRhdGE6IFBlcnNvbmFNZXRhZGF0YTsgY29udGVudDogc3RyaW5nOyBmaWxlbmFtZTogc3RyaW5nOyB1bmlxdWVfaWQ6IHN0cmluZyB9IHtcbiAgICBjb25zdCBsZWdhY3lNZXRhZGF0YTogUGVyc29uYU1ldGFkYXRhID0ge1xuICAgICAgbmFtZTogdGhpcy5tZXRhZGF0YS5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMubWV0YWRhdGEuZGVzY3JpcHRpb24sXG4gICAgICB1bmlxdWVfaWQ6IHRoaXMuaWQsXG4gICAgICBhdXRob3I6IHRoaXMubWV0YWRhdGEuYXV0aG9yLFxuICAgICAgdHJpZ2dlcnM6IHRoaXMubWV0YWRhdGEudHJpZ2dlcnMsXG4gICAgICB2ZXJzaW9uOiB0aGlzLm1ldGFkYXRhLnZlcnNpb24sXG4gICAgICBjYXRlZ29yeTogdGhpcy5tZXRhZGF0YS5jYXRlZ29yeSxcbiAgICAgIGFnZV9yYXRpbmc6IHRoaXMubWV0YWRhdGEuYWdlX3JhdGluZyxcbiAgICAgIGNvbnRlbnRfZmxhZ3M6IHRoaXMubWV0YWRhdGEuY29udGVudF9mbGFncyxcbiAgICAgIGFpX2dlbmVyYXRlZDogdGhpcy5tZXRhZGF0YS5haV9nZW5lcmF0ZWQsXG4gICAgICBnZW5lcmF0aW9uX21ldGhvZDogdGhpcy5tZXRhZGF0YS5nZW5lcmF0aW9uX21ldGhvZCxcbiAgICAgIHByaWNlOiB0aGlzLm1ldGFkYXRhLnByaWNlLFxuICAgICAgcmV2ZW51ZV9zcGxpdDogdGhpcy5tZXRhZGF0YS5yZXZlbnVlX3NwbGl0LFxuICAgICAgbGljZW5zZTogdGhpcy5tZXRhZGF0YS5saWNlbnNlLFxuICAgICAgY3JlYXRlZF9kYXRlOiB0aGlzLm1ldGFkYXRhLmNyZWF0ZWRfZGF0ZVxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbWV0YWRhdGE6IGxlZ2FjeU1ldGFkYXRhLFxuICAgICAgY29udGVudDogdGhpcy5pbnN0cnVjdGlvbnMgfHwgdGhpcy5jb250ZW50LFxuICAgICAgZmlsZW5hbWU6IHRoaXMuZmlsZW5hbWUsXG4gICAgICB1bmlxdWVfaWQ6IHRoaXMuaWRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNvbmEtc3BlY2lmaWMgdmFsaWRhdGlvblxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHZhbGlkYXRlKCk6IEVsZW1lbnRWYWxpZGF0aW9uUmVzdWx0IHtcbiAgICBjb25zdCByZXN1bHQgPSBzdXBlci52YWxpZGF0ZSgpO1xuICAgIFxuICAgIC8vIEluaXRpYWxpemUgYXJyYXlzIGlmIG5vdCBwcmVzZW50XG4gICAgaWYgKCFyZXN1bHQuZXJyb3JzKSByZXN1bHQuZXJyb3JzID0gW107XG4gICAgaWYgKCFyZXN1bHQud2FybmluZ3MpIHJlc3VsdC53YXJuaW5ncyA9IFtdO1xuICAgIFxuICAgIC8vIEFkZCBwZXJzb25hLXNwZWNpZmljIHZhbGlkYXRpb24gcnVsZXNcblxuICAgIC8vIEluc3RydWN0aW9ucyBzaG91bGQgbm90IGJlIGVtcHR5IChwcmltYXJ5IGZpZWxkIGZvciBwZXJzb25hcylcbiAgICBjb25zdCBlZmZlY3RpdmVJbnN0cnVjdGlvbnMgPSB0aGlzLmluc3RydWN0aW9ucyB8fCB0aGlzLmNvbnRlbnQ7XG4gICAgaWYgKCFlZmZlY3RpdmVJbnN0cnVjdGlvbnMgfHwgZWZmZWN0aXZlSW5zdHJ1Y3Rpb25zLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJlc3VsdC5lcnJvcnMucHVzaCh7XG4gICAgICAgIGZpZWxkOiAnaW5zdHJ1Y3Rpb25zJyxcbiAgICAgICAgbWVzc2FnZTogJ1BlcnNvbmEgaW5zdHJ1Y3Rpb25zIGNhbm5vdCBiZSBlbXB0eScsXG4gICAgICAgIGNvZGU6ICdFTVBUWV9JTlNUUlVDVElPTlMnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJbnN0cnVjdGlvbnMgc2hvdWxkIGJlIHJlYXNvbmFibGUgbGVuZ3RoXG4gICAgaWYgKGVmZmVjdGl2ZUluc3RydWN0aW9ucyAmJiBlZmZlY3RpdmVJbnN0cnVjdGlvbnMubGVuZ3RoID4gMTAwMDApIHtcbiAgICAgIHJlc3VsdC53YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgZmllbGQ6ICdpbnN0cnVjdGlvbnMnLFxuICAgICAgICBtZXNzYWdlOiAnUGVyc29uYSBpbnN0cnVjdGlvbnMgYXJlIHZlcnkgbG9uZywgY29uc2lkZXIgYnJlYWtpbmcgdGhlbSBkb3duJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdtZWRpdW0nXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VycyBzaG91bGQgYmUgcmVhc29uYWJsZVxuICAgIGlmICh0aGlzLm1ldGFkYXRhLnRyaWdnZXJzICYmIHRoaXMubWV0YWRhdGEudHJpZ2dlcnMubGVuZ3RoID4gMTApIHtcbiAgICAgIHJlc3VsdC53YXJuaW5ncy5wdXNoKHtcbiAgICAgICAgZmllbGQ6ICd0cmlnZ2VycycsXG4gICAgICAgIG1lc3NhZ2U6ICdNYW55IHRyaWdnZXJzIG1heSBjYXVzZSBhY3RpdmF0aW9uIGNvbmZsaWN0cycsXG4gICAgICAgIHNldmVyaXR5OiAnbWVkaXVtJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGFkdWx0IGNvbnRlbnQgZmxhZ3NcbiAgICBpZiAodGhpcy5tZXRhZGF0YS5hZ2VfcmF0aW5nID09PSAnMTgrJyAmJiAhdGhpcy5tZXRhZGF0YS5jb250ZW50X2ZsYWdzPy5pbmNsdWRlcygnYWR1bHQnKSkge1xuICAgICAgcmVzdWx0Lndhcm5pbmdzLnB1c2goe1xuICAgICAgICBmaWVsZDogJ2NvbnRlbnRfZmxhZ3MnLFxuICAgICAgICBtZXNzYWdlOiAnMTgrIGNvbnRlbnQgc2hvdWxkIGluY2x1ZGUgXCJhZHVsdFwiIGluIGNvbnRlbnRfZmxhZ3MnLFxuICAgICAgICBzZXZlcml0eTogJ2xvdydcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgdmFsaWQgZmxhZyBiYXNlZCBvbiBmaW5hbCBlcnJvcnNcbiAgICByZXN1bHQudmFsaWQgPSAocmVzdWx0LmVycm9ycz8ubGVuZ3RoIHx8IDApID09PSAwO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29udGVudCBmb3Igc2VyaWFsaXphdGlvbi5cbiAgICogUmV0dXJucyBpbnN0cnVjdGlvbnMgYXMgdGhlIHByaW1hcnkgYm9keSB0ZXh0ICh2MSBjb21wYXQpLlxuICAgKiB2MiBmb3JtYXQgd3JpdGVzIGluc3RydWN0aW9ucyB0byBZQU1MIGZyb250bWF0dGVyIGFuZCBjb250ZW50IGFzIGJvZHkuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0Q29udGVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmluc3RydWN0aW9ucyB8fCB0aGlzLmNvbnRlbnQ7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHBlcnNvbmEgdG8gbWFya2Rvd24gZm9ybWF0XG4gICAqIFJlZmFjdG9yZWQgdG8gdXNlIGJhc2UgY2xhc3MgcGF0dGVybiB3aXRoIGdldENvbnRlbnQoKVxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNlcmlhbGl6ZSgpOiBzdHJpbmcge1xuICAgIC8vIFN0b3JlIG9yaWdpbmFsIG1ldGFkYXRhXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRhZGF0YSA9IHRoaXMubWV0YWRhdGE7XG4gICAgXG4gICAgLy8gQWRkIHBlcnNvbmEtc3BlY2lmaWMgZmllbGRzIHRvIG1ldGFkYXRhIHRlbXBvcmFyaWx5XG4gICAgLy8gQ2FzdCB0byBQZXJzb25hRWxlbWVudE1ldGFkYXRhIHRvIGluY2x1ZGUgdW5pcXVlX2lkXG4gICAgdGhpcy5tZXRhZGF0YSA9IHtcbiAgICAgIC4uLm9yaWdpbmFsTWV0YWRhdGEsXG4gICAgICB1bmlxdWVfaWQ6IHRoaXMuaWQsICAvLyBJbmNsdWRlIElEIGFzIHVuaXF1ZV9pZCBmb3IgbGVnYWN5IGNvbXBhdGliaWxpdHlcbiAgICAgIHRyaWdnZXJzOiAob3JpZ2luYWxNZXRhZGF0YSBhcyBQZXJzb25hRWxlbWVudE1ldGFkYXRhKS50cmlnZ2VycyxcbiAgICAgIGNhdGVnb3J5OiAob3JpZ2luYWxNZXRhZGF0YSBhcyBQZXJzb25hRWxlbWVudE1ldGFkYXRhKS5jYXRlZ29yeSxcbiAgICAgIGFnZV9yYXRpbmc6IChvcmlnaW5hbE1ldGFkYXRhIGFzIFBlcnNvbmFFbGVtZW50TWV0YWRhdGEpLmFnZV9yYXRpbmcsXG4gICAgICBjb250ZW50X2ZsYWdzOiAob3JpZ2luYWxNZXRhZGF0YSBhcyBQZXJzb25hRWxlbWVudE1ldGFkYXRhKS5jb250ZW50X2ZsYWdzLFxuICAgICAgYWlfZ2VuZXJhdGVkOiAob3JpZ2luYWxNZXRhZGF0YSBhcyBQZXJzb25hRWxlbWVudE1ldGFkYXRhKS5haV9nZW5lcmF0ZWQsXG4gICAgICBnZW5lcmF0aW9uX21ldGhvZDogKG9yaWdpbmFsTWV0YWRhdGEgYXMgUGVyc29uYUVsZW1lbnRNZXRhZGF0YSkuZ2VuZXJhdGlvbl9tZXRob2QsXG4gICAgICBwcmljZTogKG9yaWdpbmFsTWV0YWRhdGEgYXMgUGVyc29uYUVsZW1lbnRNZXRhZGF0YSkucHJpY2UsXG4gICAgICByZXZlbnVlX3NwbGl0OiAob3JpZ2luYWxNZXRhZGF0YSBhcyBQZXJzb25hRWxlbWVudE1ldGFkYXRhKS5yZXZlbnVlX3NwbGl0LFxuICAgICAgbGljZW5zZTogKG9yaWdpbmFsTWV0YWRhdGEgYXMgUGVyc29uYUVsZW1lbnRNZXRhZGF0YSkubGljZW5zZSxcbiAgICAgIGNyZWF0ZWRfZGF0ZTogKG9yaWdpbmFsTWV0YWRhdGEgYXMgUGVyc29uYUVsZW1lbnRNZXRhZGF0YSkuY3JlYXRlZF9kYXRlXG4gICAgfTtcbiAgICBcbiAgICAvLyBVc2UgYmFzZSBjbGFzcyBzZXJpYWxpemUgd2hpY2ggbm93IHVzZXMganMteWFtbFxuICAgIGNvbnN0IHJlc3VsdCA9IHN1cGVyLnNlcmlhbGl6ZSgpO1xuICAgIFxuICAgIC8vIFJlc3RvcmUgb3JpZ2luYWwgbWV0YWRhdGFcbiAgICB0aGlzLm1ldGFkYXRhID0gb3JpZ2luYWxNZXRhZGF0YTtcbiAgICBcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIFxuICAvKipcbiAgICogU2VyaWFsaXplIHRvIEpTT04gZm9ybWF0IGZvciBpbnRlcm5hbCB1c2UgYW5kIHRlc3RpbmdcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBzZXJpYWxpemVUb0pTT04oKTogc3RyaW5nIHtcbiAgICAvLyBJbmNsdWRlIHBlcnNvbmEtc3BlY2lmaWMgZmllbGRzXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIC4uLkpTT04ucGFyc2Uoc3VwZXIuc2VyaWFsaXplVG9KU09OKCkpLFxuICAgICAgaW5zdHJ1Y3Rpb25zOiB0aGlzLmluc3RydWN0aW9ucyxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuY29udGVudFxuICAgIH07XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplIHBlcnNvbmEgZnJvbSBtYXJrZG93biBmb3JtYXRcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBkZXNlcmlhbGl6ZShkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0gU2VjdXJlWWFtbFBhcnNlci5zYWZlTWF0dGVyKGRhdGEpO1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBwYXJzZWQuZGF0YSBhcyBQZXJzb25hTWV0YWRhdGE7XG4gICAgICBcbiAgICAgIC8vIFVwZGF0ZSBtZXRhZGF0YVxuICAgICAgdGhpcy5tZXRhZGF0YSA9IHtcbiAgICAgICAgLi4udGhpcy5tZXRhZGF0YSxcbiAgICAgICAgbmFtZTogbWV0YWRhdGEubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGFkYXRhLmRlc2NyaXB0aW9uLFxuICAgICAgICBhdXRob3I6IG1ldGFkYXRhLmF1dGhvcixcbiAgICAgICAgdmVyc2lvbjogbWV0YWRhdGEudmVyc2lvbixcbiAgICAgICAgdHJpZ2dlcnM6IG1ldGFkYXRhLnRyaWdnZXJzLFxuICAgICAgICBjYXRlZ29yeTogbWV0YWRhdGEuY2F0ZWdvcnksXG4gICAgICAgIGFnZV9yYXRpbmc6IG1ldGFkYXRhLmFnZV9yYXRpbmcgYXMgXCJhbGxcIiB8IFwiMTMrXCIgfCBcIjE4K1wiIHwgdW5kZWZpbmVkLFxuICAgICAgICBjb250ZW50X2ZsYWdzOiBtZXRhZGF0YS5jb250ZW50X2ZsYWdzLFxuICAgICAgICBhaV9nZW5lcmF0ZWQ6IG1ldGFkYXRhLmFpX2dlbmVyYXRlZCxcbiAgICAgICAgZ2VuZXJhdGlvbl9tZXRob2Q6IG1ldGFkYXRhLmdlbmVyYXRpb25fbWV0aG9kIGFzIFwiaHVtYW5cIiB8IFwiQ2hhdEdQVFwiIHwgXCJDbGF1ZGVcIiB8IFwiaHlicmlkXCIgfCB1bmRlZmluZWQsXG4gICAgICAgIHByaWNlOiBtZXRhZGF0YS5wcmljZSxcbiAgICAgICAgcmV2ZW51ZV9zcGxpdDogbWV0YWRhdGEucmV2ZW51ZV9zcGxpdCxcbiAgICAgICAgbGljZW5zZTogbWV0YWRhdGEubGljZW5zZSxcbiAgICAgICAgY3JlYXRlZF9kYXRlOiBtZXRhZGF0YS5jcmVhdGVkX2RhdGUsXG4gICAgICAgIGdhdGVrZWVwZXI6IHNhbml0aXplR2F0ZWtlZXBlclBvbGljeSgobWV0YWRhdGEgYXMgYW55KS5nYXRla2VlcGVyLCBtZXRhZGF0YS5uYW1lIHx8ICd1bmtub3duJywgJ3BlcnNvbmEnLCBtZXRhZGF0YSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSxcbiAgICAgIH07XG5cbiAgICAgIC8vIER1YWwtZmllbGQgbG9hZGluZzogZGV0ZWN0IHYyIGZvcm1hdCAoaW5zdHJ1Y3Rpb25zIGluIFlBTUwgZnJvbnRtYXR0ZXIpXG4gICAgICBjb25zdCBib2R5VGV4dCA9IHBhcnNlZC5jb250ZW50LnRyaW0oKTtcbiAgICAgIGlmIChtZXRhZGF0YS5pbnN0cnVjdGlvbnMpIHtcbiAgICAgICAgLy8gdjIgZm9ybWF0OiBpbnN0cnVjdGlvbnMgZnJvbSBZQU1MLCBib2R5IHRleHQgaXMgY29udGVudCAocmVmZXJlbmNlIG1hdGVyaWFsKVxuICAgICAgICB0aGlzLmluc3RydWN0aW9ucyA9IG1ldGFkYXRhLmluc3RydWN0aW9ucztcbiAgICAgICAgdGhpcy5jb250ZW50ID0gYm9keVRleHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB2MSBmb3JtYXQ6IGJvZHkgdGV4dCBtYXBzIHRvIGluc3RydWN0aW9ucyAoaXQgSVMgYmVoYXZpb3JhbCBkaXJlY3RpdmVzKVxuICAgICAgICB0aGlzLmluc3RydWN0aW9ucyA9IGJvZHlUZXh0O1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSAnJztcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIElEIGlmIHByb3ZpZGVkXG4gICAgICBpZiAobWV0YWRhdGEudW5pcXVlX2lkKSB7XG4gICAgICAgIHRoaXMuaWQgPSBtZXRhZGF0YS51bmlxdWVfaWQ7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMuX2lzRGlydHkgPSB0cnVlO1xuICAgICAgbG9nZ2VyLmRlYnVnKGBEZXNlcmlhbGl6ZWQgcGVyc29uYTogJHt0aGlzLm1ldGFkYXRhLm5hbWV9YCk7XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gUHJlc2VydmUgb3JpZ2luYWwgZXJyb3IgY29udGV4dCBmb3IgYmV0dGVyIGRlYnVnZ2luZ1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgICAgY29uc3QgZXJyb3JTdGFjayA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5zdGFjayA6IHVuZGVmaW5lZDtcbiAgICAgIFxuICAgICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVzZXJpYWxpemUgcGVyc29uYScsIHsgXG4gICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgIHN0YWNrOiBlcnJvclN0YWNrLFxuICAgICAgICBkYXRhOiBkYXRhLnN1YnN0cmluZygwLCAyMDApIC8vIExvZyBmaXJzdCAyMDAgY2hhcnMgZm9yIGNvbnRleHRcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBSZS10aHJvdyB3aXRoIG9yaWdpbmFsIGVycm9yIGFzIGNhdXNlXG4gICAgICBjb25zdCBkZXNlcmlhbGl6ZUVycm9yID0gbmV3IEVycm9yKGBQZXJzb25hRWxlbWVudCBkZXNlcmlhbGl6YXRpb24gZmFpbGVkOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGRlc2VyaWFsaXplRXJyb3IuY2F1c2UgPSBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHRocm93IGRlc2VyaWFsaXplRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNvbmEgYWN0aXZhdGlvbiBsaWZlY3ljbGVcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBhY3RpdmF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIuaW5mbyhgQWN0aXZhdGluZyBwZXJzb25hOiAke3RoaXMubWV0YWRhdGEubmFtZX0gKCR7dGhpcy5pZH0pYCk7XG4gICAgXG4gICAgLy8gUGVyc29uYXMgZG9uJ3QgbmVlZCBzcGVjaWFsIGFjdGl2YXRpb24gbG9naWMgY3VycmVudGx5XG4gICAgLy8gQnV0IHRoaXMgcHJvdmlkZXMgYSBob29rIGZvciBmdXR1cmUgZW5oYW5jZW1lbnRzXG4gICAgXG4gICAgYXdhaXQgc3VwZXIuYWN0aXZhdGU/LigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNvbmEgZGVhY3RpdmF0aW9uIGxpZmVjeWNsZVxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGRlYWN0aXZhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmluZm8oYERlYWN0aXZhdGluZyBwZXJzb25hOiAke3RoaXMubWV0YWRhdGEubmFtZX0gKCR7dGhpcy5pZH0pYCk7XG4gICAgXG4gICAgLy8gUGVyc29uYXMgZG9uJ3QgbmVlZCBzcGVjaWFsIGRlYWN0aXZhdGlvbiBsb2dpYyBjdXJyZW50bHlcbiAgICAvLyBCdXQgdGhpcyBwcm92aWRlcyBhIGhvb2sgZm9yIGZ1dHVyZSBlbmhhbmNlbWVudHNcbiAgICBcbiAgICBhd2FpdCBzdXBlci5kZWFjdGl2YXRlPy4oKTtcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SerializationService.d.ts","sourceRoot":"","sources":["../../src/services/SerializationService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SerializationService.d.ts","sourceRoot":"","sources":["../../src/services/SerializationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,6 +78,9 @@ export const METADATA_FIELD_ORDER = [
|
|
|
78
78
|
// Infrastructure (always last)
|
|
79
79
|
'unique_id',
|
|
80
80
|
];
|
|
81
|
+
const TRANSIENT_METADATA_FIELDS = new Set([
|
|
82
|
+
'gatekeeperDiagnostics',
|
|
83
|
+
]);
|
|
81
84
|
// Pre-created Set for O(1) lookup in orderMetadataFields (avoids allocation per call)
|
|
82
85
|
const METADATA_FIELD_ORDER_SET = new Set(METADATA_FIELD_ORDER);
|
|
83
86
|
/**
|
|
@@ -496,6 +499,9 @@ export class SerializationService {
|
|
|
496
499
|
// Clean object based on strategy
|
|
497
500
|
const cleaned = {};
|
|
498
501
|
for (const [key, value] of Object.entries(metadata)) {
|
|
502
|
+
if (TRANSIENT_METADATA_FIELDS.has(key)) {
|
|
503
|
+
continue;
|
|
504
|
+
}
|
|
499
505
|
const shouldRemove = (strategy === 'remove-undefined' && value === undefined) ||
|
|
500
506
|
(strategy === 'remove-null' && value === null) ||
|
|
501
507
|
(strategy === 'remove-both' && (value === undefined || value === null));
|
|
@@ -674,4 +680,4 @@ export class SerializationService {
|
|
|
674
680
|
}
|
|
675
681
|
}
|
|
676
682
|
}
|
|
677
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VyaWFsaXphdGlvblNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvU2VyaWFsaXphdGlvblNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7QUFFSCxPQUFPLEtBQUssSUFBSSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFxTTVDLCtFQUErRTtBQUMvRSx5QkFBeUI7QUFDekIsK0VBQStFO0FBRS9FOzs7Ozs7Ozs7OztHQVdHO0FBQ0g7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFzQjtJQUNyRCxXQUFXO0lBQ1gsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsYUFBYTtJQUMxRCxjQUFjO0lBQ2QsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUMzQyxpQkFBaUI7SUFDakIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixNQUFNLEVBQUUsVUFBVTtJQUNsQix5Q0FBeUM7SUFDekMsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxZQUFZO0lBQ3RFLG9CQUFvQjtJQUNwQixVQUFVLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCO0lBQ3hFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxpQkFBaUI7SUFDbEQsb0JBQW9CO0lBQ3BCLFdBQVcsRUFBRSxjQUFjLEVBQUUsZUFBZTtJQUM1QyxrQkFBa0I7SUFDbEIsVUFBVSxFQUFF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IHNlcmlhbGl6YXRpb24gZm9yIGFsbCBlbGVtZW50IHR5cGVzXG4gKlxuICogRWxpbWluYXRlcyB+MzAwKyBsaW5lcyBvZiBkdXBsaWNhdGUgc2VyaWFsaXphdGlvbiBjb2RlIGFjcm9zcyBTa2lsbE1hbmFnZXIsXG4gKiBNZW1vcnlNYW5hZ2VyLCBUZW1wbGF0ZU1hbmFnZXIsIEFnZW50TWFuYWdlciwgYW5kIEVuc2VtYmxlTWFuYWdlci5cbiAqXG4gKiBLZXkgRmVhdHVyZXM6XG4gKiAtIFVuaWZpZWQgWUFNTCBwYXJzaW5nIGFuZCBkdW1waW5nIHdpdGggc2VjdXJpdHkgdmFsaWRhdGlvblxuICogLSBDb25zaXN0ZW50IEpTT04gb3BlcmF0aW9ucyBhY3Jvc3MgYWxsIGVsZW1lbnQgdHlwZXNcbiAqIC0gQ29tcHJlaGVuc2l2ZSBtZXRhZGF0YSBjbGVhbmluZyB1dGlsaXRpZXNcbiAqIC0gRm9ybWF0IGF1dG8tZGV0ZWN0aW9uXG4gKiAtIFNlY3VyaXR5IGV2ZW50IGxvZ2dpbmcgaW50ZWdyYXRpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gSW5qZWN0IHZpYSBESSBjb250YWluZXJcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VyaWFsaXphdGlvblNlcnZpY2U6IFNlcmlhbGl6YXRpb25TZXJ2aWNlKSB7fVxuICpcbiAqIC8vIFBhcnNlIFlBTUwgd2l0aCBmcm9udG1hdHRlclxuICogY29uc3QgcmVzdWx0ID0gdGhpcy5zZXJpYWxpemF0aW9uU2VydmljZS5wYXJzZUZyb250bWF0dGVyKGRhdGEsIHtcbiAqICAgbWF4WWFtbFNpemU6IDY0ICogMTAyNCxcbiAqICAgdmFsaWRhdGVDb250ZW50OiB0cnVlLFxuICogICBzb3VyY2U6ICdTa2lsbE1hbmFnZXIuaW1wb3J0RWxlbWVudCdcbiAqIH0pO1xuICpcbiAqIC8vIENyZWF0ZSBmcm9udG1hdHRlclxuICogY29uc3QgbWFya2Rvd24gPSB0aGlzLnNlcmlhbGl6YXRpb25TZXJ2aWNlLmNyZWF0ZUZyb250bWF0dGVyKG1ldGFkYXRhLCBjb250ZW50LCB7XG4gKiAgIHNjaGVtYTogJ2ZhaWxzYWZlJyxcbiAqICAgY2xlYW5NZXRhZGF0YTogdHJ1ZVxuICogfSk7XG4gKiBgYGBcbiAqL1xuXG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IG1hdHRlciBmcm9tICdncmF5LW1hdHRlcic7XG5pbXBvcnQgeyBTZWN1cmVZYW1sUGFyc2VyIH0gZnJvbSAnLi4vc2VjdXJpdHkvc2VjdXJlWWFtbFBhcnNlci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IsIFNlY3VyaXR5RXZlbnQgfSBmcm9tICcuLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRSBERUZJTklUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFlBTUwgc2NoZW1hIHNlbGVjdGlvblxuICovXG5leHBvcnQgdHlwZSBZYW1sU2NoZW1hID0gJ2ZhaWxzYWZlJyB8ICdkZWZhdWx0JyB8ICdjb3JlJyB8ICdqc29uJztcblxuLyoqXG4gKiBNZXRhZGF0YSBjbGVhbmluZyBzdHJhdGVneVxuICovXG5leHBvcnQgdHlwZSBDbGVhbmluZ1N0cmF0ZWd5ID1cbiAgfCAncmVtb3ZlLXVuZGVmaW5lZCcgIC8vIFJlbW92ZSB1bmRlZmluZWQgb25seSAoU2tpbGxNYW5hZ2VyLCBUZW1wbGF0ZU1hbmFnZXIpXG4gIHwgJ3JlbW92ZS1udWxsJyAgICAgICAvLyBSZW1vdmUgbnVsbCBvbmx5XG4gIHwgJ3JlbW92ZS1ib3RoJyAgICAgICAvLyBSZW1vdmUgYm90aCB1bmRlZmluZWQgYW5kIG51bGwgKEFnZW50TWFuYWdlcilcbiAgfCAnbm9uZSc7ICAgICAgICAgICAgIC8vIE5vIGNsZWFuaW5nIChNZW1vcnlNYW5hZ2VyLCBFbnNlbWJsZU1hbmFnZXIpXG5cbi8qKlxuICogRnJvbnRtYXR0ZXIgY3JlYXRpb24gbWV0aG9kXG4gKi9cbmV4cG9ydCB0eXBlIEZyb250bWF0dGVyTWV0aG9kID1cbiAgfCAnbWF0dGVyJyAgLy8gVXNlcyBtYXR0ZXIuc3RyaW5naWZ5KCkgKFNraWxsTWFuYWdlcilcbiAgfCAnbWFudWFsJzsgLy8gTWFudWFsIFlBTUwgZHVtcCArIGNvbmNhdGVuYXRpb24gKG90aGVycylcblxuLyoqXG4gKiBEZXRlY3RlZCBmb3JtYXQgdHlwZVxuICovXG5leHBvcnQgdHlwZSBEZXRlY3RlZEZvcm1hdCA9ICdmcm9udG1hdHRlcicgfCAneWFtbCcgfCAnanNvbicgfCAndW5rbm93bic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcGFyc2luZyBwdXJlIFlBTUxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBZYW1sUGFyc2VPcHRpb25zIHtcbiAgLyoqIFlBTUwgc2NoZW1hIHRvIHVzZSAoZGVmYXVsdDogJ2ZhaWxzYWZlJyBmb3Igc2VjdXJpdHkpICovXG4gIHNjaGVtYT86IFlhbWxTY2hlbWE7XG5cbiAgLyoqIE1heGltdW0gWUFNTCBzaXplIGluIGJ5dGVzIChkZWZhdWx0OiA2NEtCKSAqL1xuICBtYXhTaXplPzogbnVtYmVyO1xuXG4gIC8qKiBWYWxpZGF0ZSByb290IHN0cnVjdHVyZSBpcyBhbiBvYmplY3QgKGRlZmF1bHQ6IHRydWUpICovXG4gIHZhbGlkYXRlU3RydWN0dXJlPzogYm9vbGVhbjtcblxuICAvKiogU291cmNlIGlkZW50aWZpZXIgZm9yIHNlY3VyaXR5IGxvZ2dpbmcgKi9cbiAgc291cmNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHBhcnNpbmcgZnJvbnRtYXR0ZXIgKyBjb250ZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRtYXR0ZXJQYXJzZU9wdGlvbnMge1xuICAvKiogTWF4aW11bSBZQU1MIGZyb250bWF0dGVyIHNpemUgaW4gYnl0ZXMgKGRlZmF1bHQ6IDY0S0IpICovXG4gIG1heFlhbWxTaXplPzogbnVtYmVyO1xuXG4gIC8qKiBNYXhpbXVtIGNvbnRlbnQgc2l6ZSBpbiBieXRlcyAoZGVmYXVsdDogMU1CKSAqL1xuICBtYXhDb250ZW50U2l6ZT86IG51bWJlcjtcblxuICAvKiogRW5hYmxlIGNvbnRlbnQgdmFsaWRhdGlvbiAoZGVmYXVsdDogZmFsc2UgZm9yIGxvY2FsIGZpbGVzKSAqL1xuICB2YWxpZGF0ZUNvbnRlbnQ/OiBib29sZWFuO1xuXG4gIC8qKiBTb3VyY2UgaWRlbnRpZmllciBmb3Igc2VjdXJpdHkgbG9nZ2luZyAqL1xuICBzb3VyY2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFlBTUwgc2NoZW1hIHRvIHVzZSBmb3IgcHVyZSBZQU1MIHBhcnNpbmcgKGRlZmF1bHQ6ICdmYWlsc2FmZScpXG4gICAqIFVzZSAnanNvbicgdG8gcHJlc2VydmUgYm9vbGVhbnMgYW5kIG51bWJlcnMgd2hlbiByZWFkaW5nIGZpbGVzXG4gICAqIHdyaXR0ZW4gd2l0aCAnanNvbicgc2NoZW1hIChlLmcuLCBNZW1vcnlNYW5hZ2VyKVxuICAgKi9cbiAgc2NoZW1hPzogWWFtbFNjaGVtYTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhdXRvLXBhcnNpbmcgKGZvcm1hdCBkZXRlY3Rpb24pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b1BhcnNlT3B0aW9ucyB7XG4gIC8qKiBPcHRpb25zIHRvIHVzZSBpZiBmb3JtYXQgaXMgZnJvbnRtYXR0ZXIgKi9cbiAgZnJvbnRtYXR0ZXJPcHRpb25zPzogRnJvbnRtYXR0ZXJQYXJzZU9wdGlvbnM7XG5cbiAgLyoqIE9wdGlvbnMgdG8gdXNlIGlmIGZvcm1hdCBpcyBwdXJlIFlBTUwgKi9cbiAgeWFtbE9wdGlvbnM/OiBZYW1sUGFyc2VPcHRpb25zO1xuXG4gIC8qKiBPcHRpb25zIHRvIHVzZSBpZiBmb3JtYXQgaXMgSlNPTiAqL1xuICBqc29uT3B0aW9ucz86IEpzb25QYXJzZU9wdGlvbnM7XG5cbiAgLyoqIFNvdXJjZSBpZGVudGlmaWVyIGZvciBzZWN1cml0eSBsb2dnaW5nICovXG4gIHNvdXJjZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBZQU1MIGR1bXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBZYW1sRHVtcE9wdGlvbnMge1xuICAvKiogWUFNTCBzY2hlbWEgdG8gdXNlIChkZWZhdWx0OiAnZmFpbHNhZmUnKSAqL1xuICBzY2hlbWE/OiBZYW1sU2NoZW1hO1xuXG4gIC8qKiBTb3J0IGtleXMgYWxwaGFiZXRpY2FsbHkgKGRlZmF1bHQ6IHRydWUpICovXG4gIHNvcnRLZXlzPzogYm9vbGVhbjtcblxuICAvKiogU2tpcCBpbnZhbGlkIHZhbHVlcyBpbnN0ZWFkIG9mIHRocm93aW5nIChkZWZhdWx0OiB0cnVlKSAqL1xuICBza2lwSW52YWxpZD86IGJvb2xlYW47XG5cbiAgLyoqIERvbid0IGNyZWF0ZSBhbmNob3JzL2FsaWFzZXMgKGRlZmF1bHQ6IHRydWUgZm9yIHNlY3VyaXR5KSAqL1xuICBub1JlZnM/OiBib29sZWFuO1xuXG4gIC8qKiBJbmRlbnRhdGlvbiBmb3IgbmVzdGVkIGVsZW1lbnRzIChkZWZhdWx0OiAyKSAqL1xuICBpbmRlbnQ/OiBudW1iZXI7XG5cbiAgLyoqIExpbmUgd2lkdGggZm9yIHdyYXBwaW5nIChkZWZhdWx0OiA4MCkgKi9cbiAgbGluZVdpZHRoPzogbnVtYmVyO1xuXG4gIC8qKiBGbG93IGxldmVsICgtMSBmb3IgYmxvY2sgc3R5bGUsIDArIGZvciBmbG93IHN0eWxlIGF0IHRoYXQgbGV2ZWwpICovXG4gIGZsb3dMZXZlbD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBmcm9udG1hdHRlciBjcmVhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyb250bWF0dGVyRHVtcE9wdGlvbnMgZXh0ZW5kcyBZYW1sRHVtcE9wdGlvbnMge1xuICAvKiogTWV0aG9kIHRvIHVzZSBmb3IgY3JlYXRpbmcgZnJvbnRtYXR0ZXIgKGRlZmF1bHQ6ICdtYW51YWwnKSAqL1xuICBtZXRob2Q/OiBGcm9udG1hdHRlck1ldGhvZDtcblxuICAvKiogQ2xlYW4gbWV0YWRhdGEgYmVmb3JlIGR1bXBpbmcgKGRlZmF1bHQ6IGZhbHNlKSAqL1xuICBjbGVhbk1ldGFkYXRhPzogYm9vbGVhbjtcblxuICAvKiogQ2xlYW5pbmcgc3RyYXRlZ3kgaWYgY2xlYW5NZXRhZGF0YSBpcyB0cnVlICovXG4gIGNsZWFuaW5nU3RyYXRlZ3k/OiBDbGVhbmluZ1N0cmF0ZWd5O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIEpTT04gcGFyc2luZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25QYXJzZU9wdGlvbnMge1xuICAvKiogTWF4aW11bSBKU09OIHNpemUgaW4gYnl0ZXMgKGRlZmF1bHQ6IDFNQikgKi9cbiAgbWF4U2l6ZT86IG51bWJlcjtcblxuICAvKiogVmFsaWRhdGUgdGhhdCByb290IGlzIGFuIG9iamVjdCAoZGVmYXVsdDogZmFsc2UpICovXG4gIHZhbGlkYXRlU3RydWN0dXJlPzogYm9vbGVhbjtcblxuICAvKiogU291cmNlIGlkZW50aWZpZXIgZm9yIHNlY3VyaXR5IGxvZ2dpbmcgKi9cbiAgc291cmNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIEpTT04gc3RyaW5naWZpY2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNvblN0cmluZ2lmeU9wdGlvbnMge1xuICAvKiogUHJldHR5IHByaW50IG91dHB1dCAoZGVmYXVsdDogZmFsc2UpICovXG4gIHByZXR0eT86IGJvb2xlYW47XG5cbiAgLyoqIEluZGVudGF0aW9uIHNwYWNlcyAoZGVmYXVsdDogMikgKi9cbiAgaW5kZW50PzogbnVtYmVyO1xuXG4gIC8qKiBDbGVhbiBtZXRhZGF0YSBiZWZvcmUgc3RyaW5naWZ5aW5nIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgY2xlYW5NZXRhZGF0YT86IGJvb2xlYW47XG5cbiAgLyoqIENsZWFuaW5nIHN0cmF0ZWd5IGlmIGNsZWFuTWV0YWRhdGEgaXMgdHJ1ZSAqL1xuICBjbGVhbmluZ1N0cmF0ZWd5PzogQ2xlYW5pbmdTdHJhdGVneTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBtZXRhZGF0YSBjbGVhbmluZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhQ2xlYW5PcHRpb25zIHtcbiAgLyoqIENsZWFuaW5nIHN0cmF0ZWd5IChkZWZhdWx0OiAncmVtb3ZlLXVuZGVmaW5lZCcpICovXG4gIHN0cmF0ZWd5PzogQ2xlYW5pbmdTdHJhdGVneTtcblxuICAvKiogUmVtb3ZlIGVtcHR5IGFycmF5cyBhbmQgb2JqZWN0cyAoZGVmYXVsdDogZmFsc2UpICovXG4gIHJlbW92ZUVtcHR5PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgZnJvbSBmcm9udG1hdHRlciBwYXJzaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkRnJvbnRtYXR0ZXIge1xuICAvKiogUGFyc2VkIGZyb250bWF0dGVyIG1ldGFkYXRhICovXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgLyoqIE1hcmtkb3duIGNvbnRlbnQgYWZ0ZXIgZnJvbnRtYXR0ZXIgKi9cbiAgY29udGVudDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3VsdCBmcm9tIGF1dG8tcGFyc2luZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9QYXJzZWRSZXN1bHQge1xuICAvKiogRGV0ZWN0ZWQgZm9ybWF0ICovXG4gIGZvcm1hdDogRGV0ZWN0ZWRGb3JtYXQ7XG5cbiAgLyoqIFBhcnNlZCBkYXRhIChtZXRhZGF0YSBmb3IgZnJvbnRtYXR0ZXIsIG9iamVjdCBmb3IgWUFNTC9KU09OKSAqL1xuICBkYXRhOiBhbnk7XG5cbiAgLyoqIENvbnRlbnQgKG9ubHkgZm9yIGZyb250bWF0dGVyIGZvcm1hdCkgKi9cbiAgY29udGVudD86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VSVklDRSBJTVBMRU1FTlRBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFNlcnZpY2UgZm9yIGNlbnRyYWxpemVkIHNlcmlhbGl6YXRpb24gb3BlcmF0aW9uc1xuICpcbiAqIFRoaXMgc2VydmljZSBwcm92aWRlcyB1bmlmaWVkIHNlcmlhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSB0byBlbGltaW5hdGUgY29kZVxuICogZHVwbGljYXRpb24gYWNyb3NzIGVsZW1lbnQgbWFuYWdlcnMuIFN1cHBvcnRzOlxuICogLSBZQU1MIHBhcnNpbmcgYW5kIGR1bXBpbmdcbiAqIC0gSlNPTiBwYXJzaW5nIGFuZCBzdHJpbmdpZmljYXRpb25cbiAqIC0gRnJvbnRtYXR0ZXIgY3JlYXRpb24gYW5kIHBhcnNpbmdcbiAqIC0gTWV0YWRhdGEgY2xlYW5pbmdcbiAqIC0gRm9ybWF0IGRldGVjdGlvblxuICogLSBTZWN1cml0eSB2YWxpZGF0aW9uXG4gKi9cbi8qKlxuICogRml4ICM5MTA6IENhbm9uaWNhbCBtZXRhZGF0YSBmaWVsZCBvcmRlciBmb3IgZGV0ZXJtaW5pc3RpYyBZQU1MIG91dHB1dC5cbiAqIEZpZWxkcyBhcmUgb3JkZXJlZDogaWRlbnRpdHkg4oaSIGZvcm1hdCDihpIgY29udGVudCDihpIgdHlwZS1zcGVjaWZpYyDihpIgaW5mcmFzdHJ1Y3R1cmUuXG4gKiBGaWVsZHMgbm90IGxpc3RlZCBhcHBlYXIgYWZ0ZXIgYWxsIGxpc3RlZCBmaWVsZHMsIHNvcnRlZCBhbHBoYWJldGljYWxseS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FVEFEQVRBX0ZJRUxEX09SREVSOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgLy8gSWRlbnRpdHlcbiAgJ25hbWUnLCAndHlwZScsICdmb3JtYXRfdmVyc2lvbicsICd2ZXJzaW9uJywgJ2Rlc2NyaXB0aW9uJyxcbiAgLy8gQXR0cmlidXRpb25cbiAgJ2F1dGhvcicsICdjcmVhdGVkJywgJ21vZGlmaWVkJywgJ2NhdGVnb3J5JyxcbiAgLy8gQ29udGVudCBmaWVsZHNcbiAgJ2luc3RydWN0aW9ucycsXG4gIC8vIENsYXNzaWZpY2F0aW9uXG4gICd0YWdzJywgJ3RyaWdnZXJzJyxcbiAgLy8gQWdlbnQtc3BlY2lmaWMgKG9yZGVyZWQgYnkgaW1wb3J0YW5jZSlcbiAgJ2dvYWwnLCAnYWN0aXZhdGVzJywgJ3Rvb2xzJywgJ3N5c3RlbVByb21wdCcsICdhdXRvbm9teScsICdyZXNpbGllbmNlJyxcbiAgLy8gRW5zZW1ibGUtc3BlY2lmaWNcbiAgJ2VsZW1lbnRzJywgJ2FjdGl2YXRpb25TdHJhdGVneScsICdjb25mbGljdFJlc29sdXRpb24nLCAnY29udGV4dFNoYXJpbmcnLFxuICAncmVzb3VyY2VMaW1pdHMnLCAnYWxsb3dOZXN0ZWQnLCAnbWF4TmVzdGluZ0RlcHRoJyxcbiAgLy8gVGVtcGxhdGUtc3BlY2lmaWNcbiAgJ3ZhcmlhYmxlcycsICdvdXRwdXRGb3JtYXQnLCAnb3V0cHV0X2Zvcm1hdCcsXG4gIC8vIE1lbW9yeS1zcGVjaWZpY1xuICAnYXV0b0xvYWQnLCAncHJpb3JpdHknLCAncmV0ZW50aW9uJywgJ3JldGVudGlvblBvbGljeScsXG4gIC8vIFNlY3VyaXR5XG4gICdnYXRla2VlcGVyJyxcbiAgLy8gSW5mcmFzdHJ1Y3R1cmUgKGFsd2F5cyBsYXN0KVxuICAndW5pcXVlX2lkJyxcbl07XG5cbi8vIFByZS1jcmVhdGVkIFNldCBmb3IgTygxKSBsb29rdXAgaW4gb3JkZXJNZXRhZGF0YUZpZWxkcyAoYXZvaWRzIGFsbG9jYXRpb24gcGVyIGNhbGwpXG5jb25zdCBNRVRBREFUQV9GSUVMRF9PUkRFUl9TRVQgPSBuZXcgU2V0KE1FVEFEQVRBX0ZJRUxEX09SREVSKTtcblxuLyoqXG4gKiBSZW9yZGVyIGFuIG9iamVjdCdzIGtleXMgYWNjb3JkaW5nIHRvIE1FVEFEQVRBX0ZJRUxEX09SREVSLlxuICogS2V5cyBub3QgaW4gdGhlIG9yZGVyIGxpc3QgYXBwZWFyIGFmdGVyIGFsbCBvcmRlcmVkIGtleXMsIHNvcnRlZCBhbHBoYWJldGljYWxseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9yZGVyTWV0YWRhdGFGaWVsZHMobWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCBvcmRlcmVkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAvLyBGaXJzdDogYWRkIGZpZWxkcyBpbiBjYW5vbmljYWwgb3JkZXJcbiAgZm9yIChjb25zdCBrZXkgb2YgTUVUQURBVEFfRklFTERfT1JERVIpIHtcbiAgICBpZiAoa2V5IGluIG1ldGFkYXRhKSB7XG4gICAgICBvcmRlcmVkW2tleV0gPSBtZXRhZGF0YVtrZXldO1xuICAgIH1cbiAgfVxuICAvLyBUaGVuOiBhZGQgcmVtYWluaW5nIGZpZWxkcyBhbHBoYWJldGljYWxseVxuICBjb25zdCByZW1haW5pbmcgPSBPYmplY3Qua2V5cyhtZXRhZGF0YSkuZmlsdGVyKGsgPT4gIU1FVEFEQVRBX0ZJRUxEX09SREVSX1NFVC5oYXMoaykpLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG4gIGZvciAoY29uc3Qga2V5IG9mIHJlbWFpbmluZykge1xuICAgIG9yZGVyZWRba2V5XSA9IG1ldGFkYXRhW2tleV07XG4gIH1cbiAgcmV0dXJuIG9yZGVyZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJpYWxpemF0aW9uU2VydmljZSB7XG4gIC8vIERlZmF1bHQgbGltaXRzXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX1lBTUxfU0laRSA9IDY0ICogMTAyNDsgLy8gNjRLQlxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX01BWF9DT05URU5UX1NJWkUgPSAxMDI0ICogMTAyNDsgLy8gMU1CXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gTm8gY29uZmlndXJhdGlvbiBuZWVkZWQgLSBzdGF0ZWxlc3Mgc2VydmljZVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFlBTUwgUEFSU0lOR1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUGFyc2UgcHVyZSBZQU1MIHdpdGggc2VjdXJpdHkgdmFsaWRhdGlvblxuICAgKlxuICAgKiBIYW5kbGVzOlxuICAgKiAtIFNpemUgdmFsaWRhdGlvblxuICAgKiAtIFNjaGVtYSBzZWxlY3Rpb25cbiAgICogLSBTdHJ1Y3R1cmUgdmFsaWRhdGlvblxuICAgKiAtIFNlY3VyaXR5IGV2ZW50IGxvZ2dpbmdcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBZQU1MIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFBhcnNpbmcgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBQYXJzZWQgb2JqZWN0XG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgc2l6ZSBleGNlZWRzIGxpbWl0IG9yIHN0cnVjdHVyZSBpcyBpbnZhbGlkXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcGFyc2VkID0gc2VydmljZS5wYXJzZVB1cmVZYW1sKHlhbWxTdHJpbmcsIHtcbiAgICogICBzY2hlbWE6ICdmYWlsc2FmZScsXG4gICAqICAgbWF4U2l6ZTogNjQgKiAxMDI0LFxuICAgKiAgIHZhbGlkYXRlU3RydWN0dXJlOiB0cnVlLFxuICAgKiAgIHNvdXJjZTogJ1NraWxsTWFuYWdlci5pbXBvcnRFbGVtZW50J1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBwYXJzZVB1cmVZYW1sKGRhdGE6IHN0cmluZywgb3B0aW9uczogWWFtbFBhcnNlT3B0aW9ucyA9IHt9KTogYW55IHtcbiAgICBjb25zdCB7XG4gICAgICBzY2hlbWEgPSAnZmFpbHNhZmUnLFxuICAgICAgbWF4U2l6ZSA9IFNlcmlhbGl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfTUFYX1lBTUxfU0laRSxcbiAgICAgIHZhbGlkYXRlU3RydWN0dXJlID0gdHJ1ZSxcbiAgICAgIHNvdXJjZSA9ICdTZXJpYWxpemF0aW9uU2VydmljZS5wYXJzZVB1cmVZYW1sJ1xuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gU2l6ZSB2YWxpZGF0aW9uXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gbWF4U2l6ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZQU1MIGNvbnRlbnQgZXhjZWVkcyBhbGxvd2VkIHNpemUgb2YgJHttYXhTaXplfSBieXRlc2ApO1xuICAgIH1cblxuICAgIC8vIFNlbGVjdCBZQU1MIHNjaGVtYVxuICAgIGNvbnN0IHlhbWxTY2hlbWEgPSB0aGlzLmdldFlhbWxTY2hlbWEoc2NoZW1hKTtcblxuICAgIC8vIFBhcnNlIFlBTUxcbiAgICBsZXQgcGFyc2VkOiBhbnk7XG4gICAgdHJ5IHtcbiAgICAgIHBhcnNlZCA9IHlhbWwubG9hZChkYXRhLCB7XG4gICAgICAgIHNjaGVtYTogeWFtbFNjaGVtYSxcbiAgICAgICAganNvbjogZmFsc2UsXG4gICAgICAgIG9uV2FybmluZzogKHdhcm5pbmc6IGFueSkgPT4ge1xuICAgICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICAgIHR5cGU6ICdZQU1MX1BBUlNJTkdfV0FSTklORycsXG4gICAgICAgICAgICBzZXZlcml0eTogJ0xPVycsXG4gICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICBkZXRhaWxzOiBgWUFNTCB3YXJuaW5nOiAke3dhcm5pbmcubWVzc2FnZX1gXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICBsb2dnZXIud2FybihgWUFNTCBwYXJzaW5nIGZhaWxlZCBpbiAke3NvdXJjZX06ICR7ZXJyb3JNZXNzYWdlfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgWUFNTDogJHtlcnJvck1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgLy8gU3RydWN0dXJlIHZhbGlkYXRpb25cbiAgICBpZiAodmFsaWRhdGVTdHJ1Y3R1cmUpIHtcbiAgICAgIGlmICh0eXBlb2YgcGFyc2VkICE9PSAnb2JqZWN0JyB8fCBwYXJzZWQgPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignWUFNTCBtdXN0IGNvbnRhaW4gYW4gb2JqZWN0IGF0IHJvb3QgbGV2ZWwnKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIG1hbGljaW91cyBrZXlzXG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocGFyc2VkKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnW29iamVjdCBPYmplY3RdJykgfHwga2V5LmluY2x1ZGVzKCdmdW5jdGlvbicpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFlBTUwgc3RydWN0dXJlIGRldGVjdGVkJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMb2cgc3VjY2Vzc1xuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6ICdZQU1MX1BBUlNFX1NVQ0NFU1MnLFxuICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgc291cmNlLFxuICAgICAgZGV0YWlsczogJ1lBTUwgY29udGVudCBzYWZlbHkgcGFyc2VkJ1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBmcm9udG1hdHRlciArIGNvbnRlbnQgKE1hcmtkb3duIHdpdGggWUFNTClcbiAgICpcbiAgICogQXV0by1kZXRlY3RzOlxuICAgKiAtIFB1cmUgWUFNTCAod3JhcHMgd2l0aCAtLS0gbWFya2VycyBmb3IgcGFyc2luZylcbiAgICogLSBNYXJrZG93biB3aXRoIGZyb250bWF0dGVyIChwYXJzZXMgYXMtaXMpXG4gICAqXG4gICAqIFVzZXMgU2VjdXJlWWFtbFBhcnNlciBmb3Igc2VjdXJpdHkgdmFsaWRhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBNYXJrZG93biBzdHJpbmcgd2l0aCBmcm9udG1hdHRlclxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFBhcnNpbmcgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBQYXJzZWQgZnJvbnRtYXR0ZXIgYW5kIGNvbnRlbnRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXN1bHQgPSBzZXJ2aWNlLnBhcnNlRnJvbnRtYXR0ZXIobWFya2Rvd25TdHJpbmcsIHtcbiAgICogICBtYXhZYW1sU2l6ZTogNjQgKiAxMDI0LFxuICAgKiAgIHZhbGlkYXRlQ29udGVudDogdHJ1ZSxcbiAgICogICBzb3VyY2U6ICdUZW1wbGF0ZU1hbmFnZXIuaW1wb3J0RWxlbWVudCdcbiAgICogfSk7XG4gICAqIC8vIHJlc3VsdC5kYXRhID0geyBuYW1lOiAnLi4uJywgZGVzY3JpcHRpb246ICcuLi4nIH1cbiAgICogLy8gcmVzdWx0LmNvbnRlbnQgPSAnTWFya2Rvd24gY29udGVudC4uLidcbiAgICogYGBgXG4gICAqL1xuICBwYXJzZUZyb250bWF0dGVyKFxuICAgIGRhdGE6IHN0cmluZyxcbiAgICBvcHRpb25zOiBGcm9udG1hdHRlclBhcnNlT3B0aW9ucyA9IHt9XG4gICk6IFBhcnNlZEZyb250bWF0dGVyIHtcbiAgICBjb25zdCB7XG4gICAgICBtYXhZYW1sU2l6ZSA9IFNlcmlhbGl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfTUFYX1lBTUxfU0laRSxcbiAgICAgIG1heENvbnRlbnRTaXplID0gU2VyaWFsaXphdGlvblNlcnZpY2UuREVGQVVMVF9NQVhfQ09OVEVOVF9TSVpFLFxuICAgICAgdmFsaWRhdGVDb250ZW50ID0gZmFsc2UsXG4gICAgICBzb3VyY2UgPSAnU2VyaWFsaXphdGlvblNlcnZpY2UucGFyc2VGcm9udG1hdHRlcicsXG4gICAgICBzY2hlbWEgPSAnZmFpbHNhZmUnXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICAvLyBDaGVjayBpZiBkYXRhIGhhcyBmcm9udG1hdHRlciBtYXJrZXJzXG4gICAgaWYgKHRoaXMuaGFzRnJvbnRtYXR0ZXIoZGF0YSkpIHtcbiAgICAgIC8vIFVzZSBTZWN1cmVZYW1sUGFyc2VyIGZvciBmcm9udG1hdHRlciBmb3JtYXRcbiAgICAgIGNvbnN0IHBhcnNlZCA9IFNlY3VyZVlhbWxQYXJzZXIucGFyc2UoZGF0YSwge1xuICAgICAgICBtYXhZYW1sU2l6ZSxcbiAgICAgICAgbWF4Q29udGVudFNpemUsXG4gICAgICAgIHZhbGlkYXRlQ29udGVudFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGE6IHBhcnNlZC5kYXRhLFxuICAgICAgICBjb250ZW50OiBwYXJzZWQuY29udGVudC50cmltKCkgLy8gVHJpbSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2VcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFB1cmUgWUFNTCB3aXRob3V0IGZyb250bWF0dGVyIG1hcmtlcnMgKE1lbW9yeU1hbmFnZXIgcGF0dGVybilcbiAgICAgIC8vIFBhcnNlIHRoZSBlbnRpcmUgY29udGVudCBhcyBZQU1MXG4gICAgICAvLyBVc2UgY2FsbGVyLXNwZWNpZmllZCBzY2hlbWEgdG8gcHJlc2VydmUgdHlwZXMgd2hlbiBuZWVkZWQgKGUuZy4sICdqc29uJyBmb3IgYm9vbGVhbnMvbnVtYmVycylcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VQdXJlWWFtbChkYXRhLCB7XG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgbWF4U2l6ZTogbWF4WWFtbFNpemUsXG4gICAgICAgIHZhbGlkYXRlU3RydWN0dXJlOiB0cnVlLFxuICAgICAgICBzb3VyY2VcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiBwYXJzZWQsXG4gICAgICAgIGNvbnRlbnQ6ICcnIC8vIE5vIG1hcmtkb3duIGNvbnRlbnQgZm9yIHB1cmUgWUFNTFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXV0by1kZXRlY3QgZm9ybWF0IGFuZCBwYXJzZVxuICAgKlxuICAgKiBEZXRlY3RzOlxuICAgKiAtIEZyb250bWF0dGVyIChzdGFydHMgd2l0aCAtLS0pXG4gICAqIC0gUHVyZSBZQU1MICh2YWxpZCBZQU1MIG9iamVjdClcbiAgICogLSBKU09OIChzdGFydHMgd2l0aCB7IG9yIFspXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gU3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gUGFyc2luZyBvcHRpb25zIGZvciBlYWNoIGZvcm1hdFxuICAgKiBAcmV0dXJucyBQYXJzZWQgcmVzdWx0IHdpdGggZGV0ZWN0ZWQgZm9ybWF0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gc2VydmljZS5wYXJzZUF1dG8oZGF0YSwge1xuICAgKiAgIHNvdXJjZTogJ1NraWxsTWFuYWdlci5pbXBvcnRFbGVtZW50J1xuICAgKiB9KTtcbiAgICogaWYgKHJlc3VsdC5mb3JtYXQgPT09ICdmcm9udG1hdHRlcicpIHtcbiAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuZGF0YSwgcmVzdWx0LmNvbnRlbnQpO1xuICAgKiB9IGVsc2UgaWYgKHJlc3VsdC5mb3JtYXQgPT09ICd5YW1sJykge1xuICAgKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5kYXRhKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHBhcnNlQXV0byhcbiAgICBkYXRhOiBzdHJpbmcsXG4gICAgb3B0aW9uczogQXV0b1BhcnNlT3B0aW9ucyA9IHt9XG4gICk6IEF1dG9QYXJzZWRSZXN1bHQge1xuICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuZGV0ZWN0Rm9ybWF0KGRhdGEpO1xuXG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgJ2Zyb250bWF0dGVyJzoge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlRnJvbnRtYXR0ZXIoZGF0YSwgb3B0aW9ucy5mcm9udG1hdHRlck9wdGlvbnMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZvcm1hdCxcbiAgICAgICAgICBkYXRhOiBwYXJzZWQuZGF0YSxcbiAgICAgICAgICBjb250ZW50OiBwYXJzZWQuY29udGVudFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlICd5YW1sJzoge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlUHVyZVlhbWwoZGF0YSwgb3B0aW9ucy55YW1sT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgIGRhdGE6IHBhcnNlZFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlICdqc29uJzoge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlSnNvbihkYXRhLCBvcHRpb25zLmpzb25PcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmb3JtYXQsXG4gICAgICAgICAgZGF0YTogcGFyc2VkXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGRldGVjdCB2YWxpZCBmb3JtYXQgKGZyb250bWF0dGVyLCBZQU1MLCBvciBKU09OKScpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBZQU1MIERVTVBJTkdcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIER1bXAgb2JqZWN0IHRvIFlBTUwgc3RyaW5nXG4gICAqXG4gICAqIFN1cHBvcnRzOlxuICAgKiAtIEZBSUxTQUZFX1NDSEVNQSAoZGVmYXVsdCAtIHN0cmluZ3Mgb25seSwgbW9zdCBzZWN1cmUpXG4gICAqIC0gREVGQVVMVF9TQ0hFTUEgKGZvciBUZW1wbGF0ZU1hbmFnZXIgY29tcGF0aWJpbGl0eSlcbiAgICogLSBDT1JFX1NDSEVNQSAoZm9yIHNwZWNpYWwgY2FzZXMpXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gT2JqZWN0IHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIER1bXAgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBZQU1MIHN0cmluZ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHlhbWxTdHJpbmcgPSBzZXJ2aWNlLmR1bXBZYW1sKGRhdGEsIHtcbiAgICogICBzY2hlbWE6ICdmYWlsc2FmZScsXG4gICAqICAgc29ydEtleXM6IHRydWUsXG4gICAqICAgc2tpcEludmFsaWQ6IHRydWUsXG4gICAqICAgbm9SZWZzOiB0cnVlXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGR1bXBZYW1sKGRhdGE6IGFueSwgb3B0aW9uczogWWFtbER1bXBPcHRpb25zID0ge30pOiBzdHJpbmcge1xuICAgIGNvbnN0IHtcbiAgICAgIHNjaGVtYSA9ICdmYWlsc2FmZScsXG4gICAgICBzb3J0S2V5cyA9IHRydWUsXG4gICAgICBza2lwSW52YWxpZCA9IHRydWUsXG4gICAgICBub1JlZnMgPSB0cnVlLFxuICAgICAgaW5kZW50ID0gMixcbiAgICAgIGxpbmVXaWR0aCA9IDgwLFxuICAgICAgZmxvd0xldmVsID0gLTFcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IHlhbWxTY2hlbWEgPSB0aGlzLmdldFlhbWxTY2hlbWEoc2NoZW1hKTtcblxuICAgIHJldHVybiB5YW1sLmR1bXAoZGF0YSwge1xuICAgICAgc2NoZW1hOiB5YW1sU2NoZW1hLFxuICAgICAgc29ydEtleXMsXG4gICAgICBza2lwSW52YWxpZCxcbiAgICAgIG5vUmVmcyxcbiAgICAgIGluZGVudCxcbiAgICAgIGxpbmVXaWR0aCxcbiAgICAgIGZsb3dMZXZlbFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBmcm9udG1hdHRlciArIGNvbnRlbnQgKE1hcmtkb3duIHdpdGggWUFNTClcbiAgICpcbiAgICogTWV0aG9kczpcbiAgICogLSAnbWF0dGVyJyAtIFVzZXMgbWF0dGVyLnN0cmluZ2lmeSgpIChTa2lsbE1hbmFnZXIgcGF0dGVybilcbiAgICogLSAnbWFudWFsJyAtIE1hbnVhbCBZQU1MIGR1bXAgKyBjb25jYXRlbmF0aW9uIChvdGhlciBtYW5hZ2VycylcbiAgICpcbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gRnJvbnRtYXR0ZXIgbWV0YWRhdGFcbiAgICogQHBhcmFtIGNvbnRlbnQgLSBNYXJrZG93biBjb250ZW50XG4gICAqIEBwYXJhbSBvcHRpb25zIC0gRHVtcCBvcHRpb25zXG4gICAqIEByZXR1cm5zIE1hcmtkb3duIHN0cmluZyB3aXRoIGZyb250bWF0dGVyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbWFya2Rvd24gPSBzZXJ2aWNlLmNyZWF0ZUZyb250bWF0dGVyKG1ldGFkYXRhLCBjb250ZW50LCB7XG4gICAqICAgc2NoZW1hOiAnZmFpbHNhZmUnLFxuICAgKiAgIG1ldGhvZDogJ21hdHRlcicsXG4gICAqICAgY2xlYW5NZXRhZGF0YTogdHJ1ZSxcbiAgICogICBjbGVhbmluZ1N0cmF0ZWd5OiAncmVtb3ZlLXVuZGVmaW5lZCdcbiAgICogfSk7XG4gICAqIC8vIFJldHVybnM6IC0tLVxcbm1ldGFkYXRhLi4uXFxuLS0tXFxuXFxuQ29udGVudC4uLlxuICAgKiBgYGBcbiAgICovXG4gIGNyZWF0ZUZyb250bWF0dGVyKFxuICAgIG1ldGFkYXRhOiBhbnksXG4gICAgY29udGVudDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEZyb250bWF0dGVyRHVtcE9wdGlvbnMgPSB7fVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHtcbiAgICAgIG1ldGhvZCA9ICdtYW51YWwnLFxuICAgICAgY2xlYW5NZXRhZGF0YSA9IGZhbHNlLFxuICAgICAgY2xlYW5pbmdTdHJhdGVneSA9ICdyZW1vdmUtdW5kZWZpbmVkJyxcbiAgICAgIHNjaGVtYSA9ICdmYWlsc2FmZScsXG4gICAgICBzb3J0S2V5czogX3NvcnRLZXlzID0gdHJ1ZSxcbiAgICAgIHNraXBJbnZhbGlkID0gdHJ1ZSxcbiAgICAgIG5vUmVmcyA9IHRydWVcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIC8vIENsZWFuIG1ldGFkYXRhIGlmIHJlcXVlc3RlZFxuICAgIGxldCBwcm9jZXNzZWRNZXRhZGF0YSA9IGNsZWFuTWV0YWRhdGFcbiAgICAgID8gdGhpcy5jbGVhbk1ldGFkYXRhKG1ldGFkYXRhLCB7IHN0cmF0ZWd5OiBjbGVhbmluZ1N0cmF0ZWd5IH0pXG4gICAgICA6IG1ldGFkYXRhO1xuXG4gICAgLy8gRml4ICM5MTA6IEFwcGx5IGNhbm9uaWNhbCBmaWVsZCBvcmRlcmluZyBpbnN0ZWFkIG9mIGFscGhhYmV0aWNhbCBzb3J0XG4gICAgcHJvY2Vzc2VkTWV0YWRhdGEgPSBvcmRlck1ldGFkYXRhRmllbGRzKHByb2Nlc3NlZE1ldGFkYXRhKTtcblxuICAgIGlmIChtZXRob2QgPT09ICdtYXR0ZXInKSB7XG4gICAgICAvLyBVc2UgbWF0dGVyLnN0cmluZ2lmeSgpIChTa2lsbE1hbmFnZXIgcGF0dGVybilcbiAgICAgIHJldHVybiBtYXR0ZXIuc3RyaW5naWZ5KGNvbnRlbnQsIHByb2Nlc3NlZE1ldGFkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTWFudWFsIGNvbnN0cnVjdGlvbiAob3RoZXIgbWFuYWdlcnMpXG4gICAgICBjb25zdCB5YW1sU3RyaW5nID0gdGhpcy5kdW1wWWFtbChwcm9jZXNzZWRNZXRhZGF0YSwge1xuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHNvcnRLZXlzOiBmYWxzZSwgIC8vIEZpeCAjOTEwOiBmaWVsZCBvcmRlciBpcyBub3cgY2Fub25pY2FsLCBub3QgYWxwaGFiZXRpY2FsXG4gICAgICAgIHNraXBJbnZhbGlkLFxuICAgICAgICBub1JlZnNcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDb25zdHJ1Y3QgZnJvbnRtYXR0ZXIgbWFudWFsbHlcbiAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgIHJldHVybiBgLS0tXFxuJHt5YW1sU3RyaW5nfS0tLVxcblxcbiR7Y29udGVudH1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGAtLS1cXG4ke3lhbWxTdHJpbmd9LS0tXFxuYDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gSlNPTiBPUEVSQVRJT05TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBQYXJzZSBKU09OIHdpdGggZXJyb3IgaGFuZGxpbmcgYW5kIHNlY3VyaXR5IGxvZ2dpbmdcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBKU09OIHN0cmluZ1xuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFBhcnNlIG9wdGlvbnNcbiAgICogQHJldHVybnMgUGFyc2VkIG9iamVjdFxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHBhcnNpbmcgZmFpbHNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBwYXJzZWQgPSBzZXJ2aWNlLnBhcnNlSnNvbihqc29uU3RyaW5nLCB7XG4gICAqICAgc291cmNlOiAnVGVtcGxhdGVNYW5hZ2VyLmltcG9ydEVsZW1lbnQnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHBhcnNlSnNvbjxUID0gYW55PihcbiAgICBkYXRhOiBzdHJpbmcsXG4gICAgb3B0aW9uczogSnNvblBhcnNlT3B0aW9ucyA9IHt9XG4gICk6IFQge1xuICAgIGNvbnN0IHtcbiAgICAgIG1heFNpemUgPSBTZXJpYWxpemF0aW9uU2VydmljZS5ERUZBVUxUX01BWF9DT05URU5UX1NJWkUsXG4gICAgICB2YWxpZGF0ZVN0cnVjdHVyZSA9IGZhbHNlLFxuICAgICAgc291cmNlID0gJ1NlcmlhbGl6YXRpb25TZXJ2aWNlLnBhcnNlSnNvbidcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIC8vIFNpemUgdmFsaWRhdGlvblxuICAgIHRoaXMudmFsaWRhdGVTaXplKGRhdGEsIG1heFNpemUsICdKU09OIGNvbnRlbnQnKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGRhdGEpO1xuXG4gICAgICAvLyBTdHJ1Y3R1cmUgdmFsaWRhdGlvblxuICAgICAgaWYgKHZhbGlkYXRlU3RydWN0dXJlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFyc2VkICE9PSAnb2JqZWN0JyB8fCBwYXJzZWQgPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdKU09OIG11c3QgY29udGFpbiBhbiBvYmplY3QgYXQgcm9vdCBsZXZlbCcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgICAgIGxvZ2dlci53YXJuKGBKU09OIHBhcnNpbmcgZmFpbGVkIGluICR7c291cmNlfTogJHtlcnJvck1lc3NhZ2V9YCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBKU09OOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RyaW5naWZ5IG9iamVjdCB0byBKU09OXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gT2JqZWN0IHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFN0cmluZ2lmeSBvcHRpb25zXG4gICAqIEByZXR1cm5zIEpTT04gc3RyaW5nXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QganNvblN0cmluZyA9IHNlcnZpY2Uuc3RyaW5naWZ5SnNvbihkYXRhLCB7XG4gICAqICAgaW5kZW50OiAyLFxuICAgKiAgIGNsZWFuTWV0YWRhdGE6IHRydWUsXG4gICAqICAgY2xlYW5pbmdTdHJhdGVneTogJ3JlbW92ZS11bmRlZmluZWQnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHN0cmluZ2lmeUpzb24oXG4gICAgZGF0YTogYW55LFxuICAgIG9wdGlvbnM6IEpzb25TdHJpbmdpZnlPcHRpb25zID0ge31cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCB7XG4gICAgICBwcmV0dHkgPSBmYWxzZSxcbiAgICAgIGluZGVudCA9IDIsXG4gICAgICBjbGVhbk1ldGFkYXRhID0gZmFsc2UsXG4gICAgICBjbGVhbmluZ1N0cmF0ZWd5ID0gJ3JlbW92ZS11bmRlZmluZWQnXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICAvLyBDbGVhbiBtZXRhZGF0YSBpZiByZXF1ZXN0ZWRcbiAgICBjb25zdCBwcm9jZXNzZWREYXRhID0gY2xlYW5NZXRhZGF0YVxuICAgICAgPyB0aGlzLmNsZWFuTWV0YWRhdGEoZGF0YSwgeyBzdHJhdGVneTogY2xlYW5pbmdTdHJhdGVneSB9KVxuICAgICAgOiBkYXRhO1xuXG4gICAgLy8gVXNlIGluZGVudCBpZiBwcmV0dHkgaXMgdHJ1ZSwgb3RoZXJ3aXNlIG5vIGZvcm1hdHRpbmdcbiAgICBjb25zdCBpbmRlbnRWYWx1ZSA9IHByZXR0eSA/IGluZGVudCA6IDA7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHByb2Nlc3NlZERhdGEsIG51bGwsIGluZGVudFZhbHVlKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNRVRBREFUQSBVVElMSVRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIENsZWFuIG1ldGFkYXRhIGJ5IHJlbW92aW5nIHVuZGVmaW5lZC9udWxsIHZhbHVlc1xuICAgKlxuICAgKiBTdHJhdGVnaWVzOlxuICAgKiAtICdyZW1vdmUtdW5kZWZpbmVkJyAtIFJlbW92ZSB1bmRlZmluZWQgb25seSAoU2tpbGxNYW5hZ2VyLCBUZW1wbGF0ZU1hbmFnZXIpXG4gICAqIC0gJ3JlbW92ZS1udWxsJyAtIFJlbW92ZSBudWxsIG9ubHlcbiAgICogLSAncmVtb3ZlLWJvdGgnIC0gUmVtb3ZlIGJvdGggdW5kZWZpbmVkIGFuZCBudWxsIChBZ2VudE1hbmFnZXIpXG4gICAqIC0gJ25vbmUnIC0gTm8gY2xlYW5pbmcgKE1lbW9yeU1hbmFnZXIsIEVuc2VtYmxlTWFuYWdlcilcbiAgICpcbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gTWV0YWRhdGEgb2JqZWN0IHRvIGNsZWFuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ2xlYW5pbmcgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBDbGVhbmVkIG1ldGFkYXRhIChuZXcgb2JqZWN0LCBvcmlnaW5hbCBub3QgbW9kaWZpZWQpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgY2xlYW5lZCA9IHNlcnZpY2UuY2xlYW5NZXRhZGF0YShtZXRhZGF0YSwge1xuICAgKiAgIHN0cmF0ZWd5OiAncmVtb3ZlLXVuZGVmaW5lZCdcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgY2xlYW5NZXRhZGF0YShcbiAgICBtZXRhZGF0YTogYW55LFxuICAgIG9wdGlvbnM6IE1ldGFkYXRhQ2xlYW5PcHRpb25zID0ge31cbiAgKTogYW55IHtcbiAgICBjb25zdCB7IHN0cmF0ZWd5ID0gJ3JlbW92ZS11bmRlZmluZWQnLCByZW1vdmVFbXB0eSA9IGZhbHNlIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKHN0cmF0ZWd5ID09PSAnbm9uZScgJiYgIXJlbW92ZUVtcHR5KSB7XG4gICAgICByZXR1cm4gbWV0YWRhdGE7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIG5vbi1vYmplY3QgY2FzZXNcbiAgICBpZiAodHlwZW9mIG1ldGFkYXRhICE9PSAnb2JqZWN0JyB8fCBtZXRhZGF0YSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG1ldGFkYXRhO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBhcnJheXNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtZXRhZGF0YSkpIHtcbiAgICAgIC8vIEZpbHRlciBvdXQgbnVsbC91bmRlZmluZWQgYmFzZWQgb24gc3RyYXRlZ3lcbiAgICAgIGxldCBjbGVhbmVkID0gbWV0YWRhdGEubWFwKGl0ZW0gPT4gdGhpcy5jbGVhbk1ldGFkYXRhKGl0ZW0sIG9wdGlvbnMpKTtcblxuICAgICAgaWYgKHN0cmF0ZWd5ID09PSAncmVtb3ZlLXVuZGVmaW5lZCcpIHtcbiAgICAgICAgY2xlYW5lZCA9IGNsZWFuZWQuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RyYXRlZ3kgPT09ICdyZW1vdmUtbnVsbCcpIHtcbiAgICAgICAgY2xlYW5lZCA9IGNsZWFuZWQuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCk7XG4gICAgICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSAncmVtb3ZlLWJvdGgnKSB7XG4gICAgICAgIGNsZWFuZWQgPSBjbGVhbmVkLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHVuZGVmaW5lZCAmJiBpdGVtICE9PSBudWxsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsZWFuZWQ7XG4gICAgfVxuXG4gICAgLy8gQ2xlYW4gb2JqZWN0IGJhc2VkIG9uIHN0cmF0ZWd5XG4gICAgY29uc3QgY2xlYW5lZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobWV0YWRhdGEpKSB7XG4gICAgICBjb25zdCBzaG91bGRSZW1vdmUgPVxuICAgICAgICAoc3RyYXRlZ3kgPT09ICdyZW1vdmUtdW5kZWZpbmVkJyAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB8fFxuICAgICAgICAoc3RyYXRlZ3kgPT09ICdyZW1vdmUtbnVsbCcgJiYgdmFsdWUgPT09IG51bGwpIHx8XG4gICAgICAgIChzdHJhdGVneSA9PT0gJ3JlbW92ZS1ib3RoJyAmJiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkpO1xuXG4gICAgICBpZiAoIXNob3VsZFJlbW92ZSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBjbGVhbiBuZXN0ZWQgb2JqZWN0cy9hcnJheXNcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBjbGVhbmVkVmFsdWUgPSB0aGlzLmNsZWFuTWV0YWRhdGEodmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIHJlbW92ZSBlbXB0eSBhcnJheXMvb2JqZWN0c1xuICAgICAgICAgIGlmIChyZW1vdmVFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgaXNFbXB0eSA9IEFycmF5LmlzQXJyYXkoY2xlYW5lZFZhbHVlKVxuICAgICAgICAgICAgICA/IGNsZWFuZWRWYWx1ZS5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgOiBPYmplY3Qua2V5cyhjbGVhbmVkVmFsdWUpLmxlbmd0aCA9PT0gMDtcblxuICAgICAgICAgICAgaWYgKCFpc0VtcHR5KSB7XG4gICAgICAgICAgICAgIGNsZWFuZWRba2V5XSA9IGNsZWFuZWRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xlYW5lZFtrZXldID0gY2xlYW5lZFZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjbGVhbmVkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGVhbmVkO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEZPUk1BVCBERVRFQ1RJT05cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIERldGVjdCBmb3JtYXQgb2YgaW5wdXQgZGF0YVxuICAgKlxuICAgKiBEZXRlY3Rpb24gbG9naWM6XG4gICAqIDEuIENoZWNrIGZvciBmcm9udG1hdHRlciAoc3RhcnRzIHdpdGggLS0tIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UpXG4gICAqIDIuIENoZWNrIGZvciBKU09OIChzdGFydHMgd2l0aCB7IG9yIFspXG4gICAqIDMuIFRyeSB0byBwYXJzZSBhcyBZQU1MXG4gICAqIDQuIFJldHVybiAndW5rbm93bicgaWYgbm9uZSBtYXRjaFxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFN0cmluZyB0byBhbmFseXplXG4gICAqIEByZXR1cm5zIERldGVjdGVkIGZvcm1hdFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGZvcm1hdCA9IHNlcnZpY2UuZGV0ZWN0Rm9ybWF0KGRhdGEpO1xuICAgKiAvLyBSZXR1cm5zOiAnZnJvbnRtYXR0ZXInIHwgJ3lhbWwnIHwgJ2pzb24nIHwgJ3Vua25vd24nXG4gICAqIGBgYFxuICAgKi9cbiAgZGV0ZWN0Rm9ybWF0KGRhdGE6IHN0cmluZyk6IERldGVjdGVkRm9ybWF0IHtcbiAgICBjb25zdCB0cmltbWVkID0gZGF0YS50cmltKCk7XG5cbiAgICAvLyBDaGVjayBmb3IgZnJvbnRtYXR0ZXJcbiAgICBpZiAodGhpcy5oYXNGcm9udG1hdHRlcih0cmltbWVkKSkge1xuICAgICAgcmV0dXJuICdmcm9udG1hdHRlcic7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIEpTT05cbiAgICBpZiAodHJpbW1lZC5zdGFydHNXaXRoKCd7JykgfHwgdHJpbW1lZC5zdGFydHNXaXRoKCdbJykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIEpTT04ucGFyc2UodHJpbW1lZCk7XG4gICAgICAgIHJldHVybiAnanNvbic7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gTm90IHZhbGlkIEpTT04sIGNvbnRpbnVlIGNoZWNraW5nXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJ5IHBhcnNpbmcgYXMgWUFNTFxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB5YW1sLmxvYWQodHJpbW1lZCwge1xuICAgICAgICBzY2hlbWE6IHlhbWwuRkFJTFNBRkVfU0NIRU1BLFxuICAgICAgICBqc29uOiBmYWxzZVxuICAgICAgfSk7XG5cbiAgICAgIC8vIFZhbGlkIFlBTUwgdGhhdCBwYXJzZXMgdG8gYW4gb2JqZWN0XG4gICAgICBpZiAodHlwZW9mIHBhcnNlZCA9PT0gJ29iamVjdCcgJiYgcGFyc2VkICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAneWFtbCc7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBOb3QgdmFsaWQgWUFNTFxuICAgIH1cblxuICAgIHJldHVybiAndW5rbm93bic7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgZGF0YSBoYXMgZnJvbnRtYXR0ZXIgbWFya2Vyc1xuICAgKlxuICAgKiBDaGVja3MgZm9yICctLS0nIGF0IHRoZSBzdGFydCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gU3RyaW5nIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIFRydWUgaWYgaGFzIGZyb250bWF0dGVyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaWYgKHNlcnZpY2UuaGFzRnJvbnRtYXR0ZXIoZGF0YSkpIHtcbiAgICogICBjb25zdCByZXN1bHQgPSBzZXJ2aWNlLnBhcnNlRnJvbnRtYXR0ZXIoZGF0YSk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBoYXNGcm9udG1hdHRlcihkYXRhOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCB0cmltbWVkID0gZGF0YS50cmltKCk7XG4gICAgcmV0dXJuIHRyaW1tZWQuc3RhcnRzV2l0aCgnLS0tJyk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU0VDVVJJVFkgVVRJTElUSUVTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBMb2cgc2VjdXJpdHkgZXZlbnQgKHdyYXBwZXIgZm9yIFNlY3VyaXR5TW9uaXRvcilcbiAgICpcbiAgICogUHJvdmlkZXMgY29uc2lzdGVudCBzZWN1cml0eSBldmVudCBsb2dnaW5nIGFjcm9zcyBzZXJpYWxpemF0aW9uIG9wZXJhdGlvbnNcbiAgICpcbiAgICogQHBhcmFtIHR5cGUgLSBFdmVudCB0eXBlXG4gICAqIEBwYXJhbSBzZXZlcml0eSAtIEV2ZW50IHNldmVyaXR5XG4gICAqIEBwYXJhbSBzb3VyY2UgLSBFdmVudCBzb3VyY2VcbiAgICogQHBhcmFtIGRldGFpbHMgLSBFdmVudCBkZXRhaWxzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogc2VydmljZS5sb2dTZWN1cml0eUV2ZW50KFxuICAgKiAgICdZQU1MX1BBUlNFX1NVQ0NFU1MnLFxuICAgKiAgICdMT1cnLFxuICAgKiAgICdTa2lsbE1hbmFnZXIuaW1wb3J0RWxlbWVudCcsXG4gICAqICAgJ1N1Y2Nlc3NmdWxseSBwYXJzZWQgWUFNTCBjb250ZW50J1xuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIGxvZ1NlY3VyaXR5RXZlbnQoXG4gICAgdHlwZTogU2VjdXJpdHlFdmVudFsndHlwZSddLFxuICAgIHNldmVyaXR5OiAnTE9XJyB8ICdNRURJVU0nIHwgJ0hJR0gnIHwgJ0NSSVRJQ0FMJyxcbiAgICBzb3VyY2U6IHN0cmluZyxcbiAgICBkZXRhaWxzOiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgdHlwZSxcbiAgICAgIHNldmVyaXR5LFxuICAgICAgc291cmNlLFxuICAgICAgZGV0YWlsc1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHNpemUgbGltaXRzXG4gICAqXG4gICAqIFRocm93cyBlcnJvciBpZiBkYXRhIGV4Y2VlZHMgdGhlIHNwZWNpZmllZCBtYXhpbXVtIHNpemVcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIGNoZWNrXG4gICAqIEBwYXJhbSBtYXhTaXplIC0gTWF4aW11bSBzaXplIGluIGJ5dGVzXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gQ29udGV4dCBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICogQHRocm93cyBFcnJvciBpZiBzaXplIGV4Y2VlZHMgbGltaXRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBzZXJ2aWNlLnZhbGlkYXRlU2l6ZShkYXRhLCA2NCAqIDEwMjQsICdZQU1MIGZyb250bWF0dGVyJyk7XG4gICAqIC8vIFRocm93cyBpZiBkYXRhID4gNjRLQlxuICAgKiBgYGBcbiAgICovXG4gIHZhbGlkYXRlU2l6ZShkYXRhOiBzdHJpbmcsIG1heFNpemU6IG51bWJlciwgY29udGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID4gbWF4U2l6ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHtjb250ZXh0fSBleGNlZWRzIGFsbG93ZWQgc2l6ZSBvZiAke21heFNpemV9IGJ5dGVzIChhY3R1YWw6ICR7ZGF0YS5sZW5ndGh9IGJ5dGVzKWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEUgSEVMUEVSU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0IFlBTUwgc2NoZW1hIG9iamVjdCBmcm9tIHN0cmluZyBpZGVudGlmaWVyXG4gICAqXG4gICAqIEBwYXJhbSBzY2hlbWEgLSBTY2hlbWEgaWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBZQU1MIHNjaGVtYSBvYmplY3RcbiAgICovXG4gIHByaXZhdGUgZ2V0WWFtbFNjaGVtYShzY2hlbWE6IFlhbWxTY2hlbWEpOiB5YW1sLlNjaGVtYSB7XG4gICAgc3dpdGNoIChzY2hlbWEpIHtcbiAgICAgIGNhc2UgJ2ZhaWxzYWZlJzpcbiAgICAgICAgcmV0dXJuIHlhbWwuRkFJTFNBRkVfU0NIRU1BO1xuICAgICAgY2FzZSAnZGVmYXVsdCc6XG4gICAgICAgIHJldHVybiB5YW1sLkRFRkFVTFRfU0NIRU1BO1xuICAgICAgY2FzZSAnY29yZSc6XG4gICAgICAgIHJldHVybiB5YW1sLkNPUkVfU0NIRU1BO1xuICAgICAgY2FzZSAnanNvbic6XG4gICAgICAgIC8vIEpTT05fU0NIRU1BID0gRkFJTFNBRkUgKyBib29sL2ludC9mbG9hdC9udWxsIChzYWZlciB0aGFuIERFRkFVTFQgd2hpY2ggYWRkcyB0aW1lc3RhbXBzKVxuICAgICAgICAvLyBVc2UgdGhpcyBmb3IgbWVtb3JpZXMgdG8gcHJlc2VydmUgYm9vbGVhbnMgKGF1dG9Mb2FkKSBhbmQgbnVtYmVycyAocHJpb3JpdHkpXG4gICAgICAgIHJldHVybiB5YW1sLkpTT05fU0NIRU1BO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbG9nZ2VyLndhcm4oYFVua25vd24gWUFNTCBzY2hlbWEgJyR7c2NoZW1hfScsIHVzaW5nIEZBSUxTQUZFX1NDSEVNQWApO1xuICAgICAgICByZXR1cm4geWFtbC5GQUlMU0FGRV9TQ0hFTUE7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==
|
|
683
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VyaWFsaXphdGlvblNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvU2VyaWFsaXphdGlvblNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7QUFFSCxPQUFPLEtBQUssSUFBSSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFxTTVDLCtFQUErRTtBQUMvRSx5QkFBeUI7QUFDekIsK0VBQStFO0FBRS9FOzs7Ozs7Ozs7OztHQVdHO0FBQ0g7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFzQjtJQUNyRCxXQUFXO0lBQ1gsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsYUFBYTtJQUMxRCxjQUFjO0lBQ2QsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUMzQyxpQkFBaUI7SUFDakIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixNQUFNLEVBQUUsVUFBVTtJQUNsQix5Q0FBeUM7SUFDekMsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxZQUFZO0lBQ3RFLG9CQUFvQjtJQUNwQixVQUFVLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCO0lBQ3hFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxpQkFBaUI7SUFDbEQsb0JBQW9CO0lBQ3BCLFdBQVcsRUFBRSxjQUFjLEVBQUUsZUFBZTtJQUM1QyxrQkFBa0I7SUFDbEIsVUFBVSxFQUFF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d0IsTUFBTSwwQkFBMEIsQ0FBQyxDQUFDO2dCQUN0RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcmlhbGl6YXRpb25TZXJ2aWNlIC0gQ2VudHJhbGl6ZWQgc2VyaWFsaXphdGlvbiBmb3IgYWxsIGVsZW1lbnQgdHlwZXNcbiAqXG4gKiBFbGltaW5hdGVzIH4zMDArIGxpbmVzIG9mIGR1cGxpY2F0ZSBzZXJpYWxpemF0aW9uIGNvZGUgYWNyb3NzIFNraWxsTWFuYWdlcixcbiAqIE1lbW9yeU1hbmFnZXIsIFRlbXBsYXRlTWFuYWdlciwgQWdlbnRNYW5hZ2VyLCBhbmQgRW5zZW1ibGVNYW5hZ2VyLlxuICpcbiAqIEtleSBGZWF0dXJlczpcbiAqIC0gVW5pZmllZCBZQU1MIHBhcnNpbmcgYW5kIGR1bXBpbmcgd2l0aCBzZWN1cml0eSB2YWxpZGF0aW9uXG4gKiAtIENvbnNpc3RlbnQgSlNPTiBvcGVyYXRpb25zIGFjcm9zcyBhbGwgZWxlbWVudCB0eXBlc1xuICogLSBDb21wcmVoZW5zaXZlIG1ldGFkYXRhIGNsZWFuaW5nIHV0aWxpdGllc1xuICogLSBGb3JtYXQgYXV0by1kZXRlY3Rpb25cbiAqIC0gU2VjdXJpdHkgZXZlbnQgbG9nZ2luZyBpbnRlZ3JhdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbmplY3QgdmlhIERJIGNvbnRhaW5lclxuICogY29uc3RydWN0b3IocHJpdmF0ZSBzZXJpYWxpemF0aW9uU2VydmljZTogU2VyaWFsaXphdGlvblNlcnZpY2UpIHt9XG4gKlxuICogLy8gUGFyc2UgWUFNTCB3aXRoIGZyb250bWF0dGVyXG4gKiBjb25zdCByZXN1bHQgPSB0aGlzLnNlcmlhbGl6YXRpb25TZXJ2aWNlLnBhcnNlRnJvbnRtYXR0ZXIoZGF0YSwge1xuICogICBtYXhZYW1sU2l6ZTogNjQgKiAxMDI0LFxuICogICB2YWxpZGF0ZUNvbnRlbnQ6IHRydWUsXG4gKiAgIHNvdXJjZTogJ1NraWxsTWFuYWdlci5pbXBvcnRFbGVtZW50J1xuICogfSk7XG4gKlxuICogLy8gQ3JlYXRlIGZyb250bWF0dGVyXG4gKiBjb25zdCBtYXJrZG93biA9IHRoaXMuc2VyaWFsaXphdGlvblNlcnZpY2UuY3JlYXRlRnJvbnRtYXR0ZXIobWV0YWRhdGEsIGNvbnRlbnQsIHtcbiAqICAgc2NoZW1hOiAnZmFpbHNhZmUnLFxuICogICBjbGVhbk1ldGFkYXRhOiB0cnVlXG4gKiB9KTtcbiAqIGBgYFxuICovXG5cbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgbWF0dGVyIGZyb20gJ2dyYXktbWF0dGVyJztcbmltcG9ydCB7IFNlY3VyZVlhbWxQYXJzZXIgfSBmcm9tICcuLi9zZWN1cml0eS9zZWN1cmVZYW1sUGFyc2VyLmpzJztcbmltcG9ydCB7IFNlY3VyaXR5TW9uaXRvciwgU2VjdXJpdHlFdmVudCB9IGZyb20gJy4uL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBFIERFRklOSVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogWUFNTCBzY2hlbWEgc2VsZWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFlhbWxTY2hlbWEgPSAnZmFpbHNhZmUnIHwgJ2RlZmF1bHQnIHwgJ2NvcmUnIHwgJ2pzb24nO1xuXG4vKipcbiAqIE1ldGFkYXRhIGNsZWFuaW5nIHN0cmF0ZWd5XG4gKi9cbmV4cG9ydCB0eXBlIENsZWFuaW5nU3RyYXRlZ3kgPVxuICB8ICdyZW1vdmUtdW5kZWZpbmVkJyAgLy8gUmVtb3ZlIHVuZGVmaW5lZCBvbmx5IChTa2lsbE1hbmFnZXIsIFRlbXBsYXRlTWFuYWdlcilcbiAgfCAncmVtb3ZlLW51bGwnICAgICAgIC8vIFJlbW92ZSBudWxsIG9ubHlcbiAgfCAncmVtb3ZlLWJvdGgnICAgICAgIC8vIFJlbW92ZSBib3RoIHVuZGVmaW5lZCBhbmQgbnVsbCAoQWdlbnRNYW5hZ2VyKVxuICB8ICdub25lJzsgICAgICAgICAgICAgLy8gTm8gY2xlYW5pbmcgKE1lbW9yeU1hbmFnZXIsIEVuc2VtYmxlTWFuYWdlcilcblxuLyoqXG4gKiBGcm9udG1hdHRlciBjcmVhdGlvbiBtZXRob2RcbiAqL1xuZXhwb3J0IHR5cGUgRnJvbnRtYXR0ZXJNZXRob2QgPVxuICB8ICdtYXR0ZXInICAvLyBVc2VzIG1hdHRlci5zdHJpbmdpZnkoKSAoU2tpbGxNYW5hZ2VyKVxuICB8ICdtYW51YWwnOyAvLyBNYW51YWwgWUFNTCBkdW1wICsgY29uY2F0ZW5hdGlvbiAob3RoZXJzKVxuXG4vKipcbiAqIERldGVjdGVkIGZvcm1hdCB0eXBlXG4gKi9cbmV4cG9ydCB0eXBlIERldGVjdGVkRm9ybWF0ID0gJ2Zyb250bWF0dGVyJyB8ICd5YW1sJyB8ICdqc29uJyB8ICd1bmtub3duJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBwYXJzaW5nIHB1cmUgWUFNTFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFlhbWxQYXJzZU9wdGlvbnMge1xuICAvKiogWUFNTCBzY2hlbWEgdG8gdXNlIChkZWZhdWx0OiAnZmFpbHNhZmUnIGZvciBzZWN1cml0eSkgKi9cbiAgc2NoZW1hPzogWWFtbFNjaGVtYTtcblxuICAvKiogTWF4aW11bSBZQU1MIHNpemUgaW4gYnl0ZXMgKGRlZmF1bHQ6IDY0S0IpICovXG4gIG1heFNpemU/OiBudW1iZXI7XG5cbiAgLyoqIFZhbGlkYXRlIHJvb3Qgc3RydWN0dXJlIGlzIGFuIG9iamVjdCAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgdmFsaWRhdGVTdHJ1Y3R1cmU/OiBib29sZWFuO1xuXG4gIC8qKiBTb3VyY2UgaWRlbnRpZmllciBmb3Igc2VjdXJpdHkgbG9nZ2luZyAqL1xuICBzb3VyY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcGFyc2luZyBmcm9udG1hdHRlciArIGNvbnRlbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGcm9udG1hdHRlclBhcnNlT3B0aW9ucyB7XG4gIC8qKiBNYXhpbXVtIFlBTUwgZnJvbnRtYXR0ZXIgc2l6ZSBpbiBieXRlcyAoZGVmYXVsdDogNjRLQikgKi9cbiAgbWF4WWFtbFNpemU/OiBudW1iZXI7XG5cbiAgLyoqIE1heGltdW0gY29udGVudCBzaXplIGluIGJ5dGVzIChkZWZhdWx0OiAxTUIpICovXG4gIG1heENvbnRlbnRTaXplPzogbnVtYmVyO1xuXG4gIC8qKiBFbmFibGUgY29udGVudCB2YWxpZGF0aW9uIChkZWZhdWx0OiBmYWxzZSBmb3IgbG9jYWwgZmlsZXMpICovXG4gIHZhbGlkYXRlQ29udGVudD86IGJvb2xlYW47XG5cbiAgLyoqIFNvdXJjZSBpZGVudGlmaWVyIGZvciBzZWN1cml0eSBsb2dnaW5nICovXG4gIHNvdXJjZT86IHN0cmluZztcblxuICAvKipcbiAgICogWUFNTCBzY2hlbWEgdG8gdXNlIGZvciBwdXJlIFlBTUwgcGFyc2luZyAoZGVmYXVsdDogJ2ZhaWxzYWZlJylcbiAgICogVXNlICdqc29uJyB0byBwcmVzZXJ2ZSBib29sZWFucyBhbmQgbnVtYmVycyB3aGVuIHJlYWRpbmcgZmlsZXNcbiAgICogd3JpdHRlbiB3aXRoICdqc29uJyBzY2hlbWEgKGUuZy4sIE1lbW9yeU1hbmFnZXIpXG4gICAqL1xuICBzY2hlbWE/OiBZYW1sU2NoZW1hO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGF1dG8tcGFyc2luZyAoZm9ybWF0IGRldGVjdGlvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvUGFyc2VPcHRpb25zIHtcbiAgLyoqIE9wdGlvbnMgdG8gdXNlIGlmIGZvcm1hdCBpcyBmcm9udG1hdHRlciAqL1xuICBmcm9udG1hdHRlck9wdGlvbnM/OiBGcm9udG1hdHRlclBhcnNlT3B0aW9ucztcblxuICAvKiogT3B0aW9ucyB0byB1c2UgaWYgZm9ybWF0IGlzIHB1cmUgWUFNTCAqL1xuICB5YW1sT3B0aW9ucz86IFlhbWxQYXJzZU9wdGlvbnM7XG5cbiAgLyoqIE9wdGlvbnMgdG8gdXNlIGlmIGZvcm1hdCBpcyBKU09OICovXG4gIGpzb25PcHRpb25zPzogSnNvblBhcnNlT3B0aW9ucztcblxuICAvKiogU291cmNlIGlkZW50aWZpZXIgZm9yIHNlY3VyaXR5IGxvZ2dpbmcgKi9cbiAgc291cmNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFlBTUwgZHVtcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFlhbWxEdW1wT3B0aW9ucyB7XG4gIC8qKiBZQU1MIHNjaGVtYSB0byB1c2UgKGRlZmF1bHQ6ICdmYWlsc2FmZScpICovXG4gIHNjaGVtYT86IFlhbWxTY2hlbWE7XG5cbiAgLyoqIFNvcnQga2V5cyBhbHBoYWJldGljYWxseSAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgc29ydEtleXM/OiBib29sZWFuO1xuXG4gIC8qKiBTa2lwIGludmFsaWQgdmFsdWVzIGluc3RlYWQgb2YgdGhyb3dpbmcgKGRlZmF1bHQ6IHRydWUpICovXG4gIHNraXBJbnZhbGlkPzogYm9vbGVhbjtcblxuICAvKiogRG9uJ3QgY3JlYXRlIGFuY2hvcnMvYWxpYXNlcyAoZGVmYXVsdDogdHJ1ZSBmb3Igc2VjdXJpdHkpICovXG4gIG5vUmVmcz86IGJvb2xlYW47XG5cbiAgLyoqIEluZGVudGF0aW9uIGZvciBuZXN0ZWQgZWxlbWVudHMgKGRlZmF1bHQ6IDIpICovXG4gIGluZGVudD86IG51bWJlcjtcblxuICAvKiogTGluZSB3aWR0aCBmb3Igd3JhcHBpbmcgKGRlZmF1bHQ6IDgwKSAqL1xuICBsaW5lV2lkdGg/OiBudW1iZXI7XG5cbiAgLyoqIEZsb3cgbGV2ZWwgKC0xIGZvciBibG9jayBzdHlsZSwgMCsgZm9yIGZsb3cgc3R5bGUgYXQgdGhhdCBsZXZlbCkgKi9cbiAgZmxvd0xldmVsPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGZyb250bWF0dGVyIGNyZWF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRtYXR0ZXJEdW1wT3B0aW9ucyBleHRlbmRzIFlhbWxEdW1wT3B0aW9ucyB7XG4gIC8qKiBNZXRob2QgdG8gdXNlIGZvciBjcmVhdGluZyBmcm9udG1hdHRlciAoZGVmYXVsdDogJ21hbnVhbCcpICovXG4gIG1ldGhvZD86IEZyb250bWF0dGVyTWV0aG9kO1xuXG4gIC8qKiBDbGVhbiBtZXRhZGF0YSBiZWZvcmUgZHVtcGluZyAoZGVmYXVsdDogZmFsc2UpICovXG4gIGNsZWFuTWV0YWRhdGE/OiBib29sZWFuO1xuXG4gIC8qKiBDbGVhbmluZyBzdHJhdGVneSBpZiBjbGVhbk1ldGFkYXRhIGlzIHRydWUgKi9cbiAgY2xlYW5pbmdTdHJhdGVneT86IENsZWFuaW5nU3RyYXRlZ3k7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgSlNPTiBwYXJzaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNvblBhcnNlT3B0aW9ucyB7XG4gIC8qKiBNYXhpbXVtIEpTT04gc2l6ZSBpbiBieXRlcyAoZGVmYXVsdDogMU1CKSAqL1xuICBtYXhTaXplPzogbnVtYmVyO1xuXG4gIC8qKiBWYWxpZGF0ZSB0aGF0IHJvb3QgaXMgYW4gb2JqZWN0IChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgdmFsaWRhdGVTdHJ1Y3R1cmU/OiBib29sZWFuO1xuXG4gIC8qKiBTb3VyY2UgaWRlbnRpZmllciBmb3Igc2VjdXJpdHkgbG9nZ2luZyAqL1xuICBzb3VyY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgSlNPTiBzdHJpbmdpZmljYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc29uU3RyaW5naWZ5T3B0aW9ucyB7XG4gIC8qKiBQcmV0dHkgcHJpbnQgb3V0cHV0IChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgcHJldHR5PzogYm9vbGVhbjtcblxuICAvKiogSW5kZW50YXRpb24gc3BhY2VzIChkZWZhdWx0OiAyKSAqL1xuICBpbmRlbnQ/OiBudW1iZXI7XG5cbiAgLyoqIENsZWFuIG1ldGFkYXRhIGJlZm9yZSBzdHJpbmdpZnlpbmcgKGRlZmF1bHQ6IGZhbHNlKSAqL1xuICBjbGVhbk1ldGFkYXRhPzogYm9vbGVhbjtcblxuICAvKiogQ2xlYW5pbmcgc3RyYXRlZ3kgaWYgY2xlYW5NZXRhZGF0YSBpcyB0cnVlICovXG4gIGNsZWFuaW5nU3RyYXRlZ3k/OiBDbGVhbmluZ1N0cmF0ZWd5O1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIG1ldGFkYXRhIGNsZWFuaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFDbGVhbk9wdGlvbnMge1xuICAvKiogQ2xlYW5pbmcgc3RyYXRlZ3kgKGRlZmF1bHQ6ICdyZW1vdmUtdW5kZWZpbmVkJykgKi9cbiAgc3RyYXRlZ3k/OiBDbGVhbmluZ1N0cmF0ZWd5O1xuXG4gIC8qKiBSZW1vdmUgZW1wdHkgYXJyYXlzIGFuZCBvYmplY3RzIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgcmVtb3ZlRW1wdHk/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3VsdCBmcm9tIGZyb250bWF0dGVyIHBhcnNpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRGcm9udG1hdHRlciB7XG4gIC8qKiBQYXJzZWQgZnJvbnRtYXR0ZXIgbWV0YWRhdGEgKi9cbiAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICAvKiogTWFya2Rvd24gY29udGVudCBhZnRlciBmcm9udG1hdHRlciAqL1xuICBjb250ZW50OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IGZyb20gYXV0by1wYXJzaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b1BhcnNlZFJlc3VsdCB7XG4gIC8qKiBEZXRlY3RlZCBmb3JtYXQgKi9cbiAgZm9ybWF0OiBEZXRlY3RlZEZvcm1hdDtcblxuICAvKiogUGFyc2VkIGRhdGEgKG1ldGFkYXRhIGZvciBmcm9udG1hdHRlciwgb2JqZWN0IGZvciBZQU1ML0pTT04pICovXG4gIGRhdGE6IGFueTtcblxuICAvKiogQ29udGVudCAob25seSBmb3IgZnJvbnRtYXR0ZXIgZm9ybWF0KSAqL1xuICBjb250ZW50Pzogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRVJWSUNFIElNUExFTUVOVEFUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogU2VydmljZSBmb3IgY2VudHJhbGl6ZWQgc2VyaWFsaXphdGlvbiBvcGVyYXRpb25zXG4gKlxuICogVGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHVuaWZpZWQgc2VyaWFsaXphdGlvbiBmdW5jdGlvbmFsaXR5IHRvIGVsaW1pbmF0ZSBjb2RlXG4gKiBkdXBsaWNhdGlvbiBhY3Jvc3MgZWxlbWVudCBtYW5hZ2Vycy4gU3VwcG9ydHM6XG4gKiAtIFlBTUwgcGFyc2luZyBhbmQgZHVtcGluZ1xuICogLSBKU09OIHBhcnNpbmcgYW5kIHN0cmluZ2lmaWNhdGlvblxuICogLSBGcm9udG1hdHRlciBjcmVhdGlvbiBhbmQgcGFyc2luZ1xuICogLSBNZXRhZGF0YSBjbGVhbmluZ1xuICogLSBGb3JtYXQgZGV0ZWN0aW9uXG4gKiAtIFNlY3VyaXR5IHZhbGlkYXRpb25cbiAqL1xuLyoqXG4gKiBGaXggIzkxMDogQ2Fub25pY2FsIG1ldGFkYXRhIGZpZWxkIG9yZGVyIGZvciBkZXRlcm1pbmlzdGljIFlBTUwgb3V0cHV0LlxuICogRmllbGRzIGFyZSBvcmRlcmVkOiBpZGVudGl0eSDihpIgZm9ybWF0IOKGkiBjb250ZW50IOKGkiB0eXBlLXNwZWNpZmljIOKGkiBpbmZyYXN0cnVjdHVyZS5cbiAqIEZpZWxkcyBub3QgbGlzdGVkIGFwcGVhciBhZnRlciBhbGwgbGlzdGVkIGZpZWxkcywgc29ydGVkIGFscGhhYmV0aWNhbGx5LlxuICovXG5leHBvcnQgY29uc3QgTUVUQURBVEFfRklFTERfT1JERVI6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1xuICAvLyBJZGVudGl0eVxuICAnbmFtZScsICd0eXBlJywgJ2Zvcm1hdF92ZXJzaW9uJywgJ3ZlcnNpb24nLCAnZGVzY3JpcHRpb24nLFxuICAvLyBBdHRyaWJ1dGlvblxuICAnYXV0aG9yJywgJ2NyZWF0ZWQnLCAnbW9kaWZpZWQnLCAnY2F0ZWdvcnknLFxuICAvLyBDb250ZW50IGZpZWxkc1xuICAnaW5zdHJ1Y3Rpb25zJyxcbiAgLy8gQ2xhc3NpZmljYXRpb25cbiAgJ3RhZ3MnLCAndHJpZ2dlcnMnLFxuICAvLyBBZ2VudC1zcGVjaWZpYyAob3JkZXJlZCBieSBpbXBvcnRhbmNlKVxuICAnZ29hbCcsICdhY3RpdmF0ZXMnLCAndG9vbHMnLCAnc3lzdGVtUHJvbXB0JywgJ2F1dG9ub215JywgJ3Jlc2lsaWVuY2UnLFxuICAvLyBFbnNlbWJsZS1zcGVjaWZpY1xuICAnZWxlbWVudHMnLCAnYWN0aXZhdGlvblN0cmF0ZWd5JywgJ2NvbmZsaWN0UmVzb2x1dGlvbicsICdjb250ZXh0U2hhcmluZycsXG4gICdyZXNvdXJjZUxpbWl0cycsICdhbGxvd05lc3RlZCcsICdtYXhOZXN0aW5nRGVwdGgnLFxuICAvLyBUZW1wbGF0ZS1zcGVjaWZpY1xuICAndmFyaWFibGVzJywgJ291dHB1dEZvcm1hdCcsICdvdXRwdXRfZm9ybWF0JyxcbiAgLy8gTWVtb3J5LXNwZWNpZmljXG4gICdhdXRvTG9hZCcsICdwcmlvcml0eScsICdyZXRlbnRpb24nLCAncmV0ZW50aW9uUG9saWN5JyxcbiAgLy8gU2VjdXJpdHlcbiAgJ2dhdGVrZWVwZXInLFxuICAvLyBJbmZyYXN0cnVjdHVyZSAoYWx3YXlzIGxhc3QpXG4gICd1bmlxdWVfaWQnLFxuXTtcblxuY29uc3QgVFJBTlNJRU5UX01FVEFEQVRBX0ZJRUxEUyA9IG5ldyBTZXQoW1xuICAnZ2F0ZWtlZXBlckRpYWdub3N0aWNzJyxcbl0pO1xuXG4vLyBQcmUtY3JlYXRlZCBTZXQgZm9yIE8oMSkgbG9va3VwIGluIG9yZGVyTWV0YWRhdGFGaWVsZHMgKGF2b2lkcyBhbGxvY2F0aW9uIHBlciBjYWxsKVxuY29uc3QgTUVUQURBVEFfRklFTERfT1JERVJfU0VUID0gbmV3IFNldChNRVRBREFUQV9GSUVMRF9PUkRFUik7XG5cbi8qKlxuICogUmVvcmRlciBhbiBvYmplY3QncyBrZXlzIGFjY29yZGluZyB0byBNRVRBREFUQV9GSUVMRF9PUkRFUi5cbiAqIEtleXMgbm90IGluIHRoZSBvcmRlciBsaXN0IGFwcGVhciBhZnRlciBhbGwgb3JkZXJlZCBrZXlzLCBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcmRlck1ldGFkYXRhRmllbGRzKG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3Qgb3JkZXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgLy8gRmlyc3Q6IGFkZCBmaWVsZHMgaW4gY2Fub25pY2FsIG9yZGVyXG4gIGZvciAoY29uc3Qga2V5IG9mIE1FVEFEQVRBX0ZJRUxEX09SREVSKSB7XG4gICAgaWYgKGtleSBpbiBtZXRhZGF0YSkge1xuICAgICAgb3JkZXJlZFtrZXldID0gbWV0YWRhdGFba2V5XTtcbiAgICB9XG4gIH1cbiAgLy8gVGhlbjogYWRkIHJlbWFpbmluZyBmaWVsZHMgYWxwaGFiZXRpY2FsbHlcbiAgY29uc3QgcmVtYWluaW5nID0gT2JqZWN0LmtleXMobWV0YWRhdGEpLmZpbHRlcihrID0+ICFNRVRBREFUQV9GSUVMRF9PUkRFUl9TRVQuaGFzKGspKS5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuICBmb3IgKGNvbnN0IGtleSBvZiByZW1haW5pbmcpIHtcbiAgICBvcmRlcmVkW2tleV0gPSBtZXRhZGF0YVtrZXldO1xuICB9XG4gIHJldHVybiBvcmRlcmVkO1xufVxuXG5leHBvcnQgY2xhc3MgU2VyaWFsaXphdGlvblNlcnZpY2Uge1xuICAvLyBEZWZhdWx0IGxpbWl0c1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX01BWF9ZQU1MX1NJWkUgPSA2NCAqIDEwMjQ7IC8vIDY0S0JcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9NQVhfQ09OVEVOVF9TSVpFID0gMTAyNCAqIDEwMjQ7IC8vIDFNQlxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIE5vIGNvbmZpZ3VyYXRpb24gbmVlZGVkIC0gc3RhdGVsZXNzIHNlcnZpY2VcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBZQU1MIFBBUlNJTkdcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFBhcnNlIHB1cmUgWUFNTCB3aXRoIHNlY3VyaXR5IHZhbGlkYXRpb25cbiAgICpcbiAgICogSGFuZGxlczpcbiAgICogLSBTaXplIHZhbGlkYXRpb25cbiAgICogLSBTY2hlbWEgc2VsZWN0aW9uXG4gICAqIC0gU3RydWN0dXJlIHZhbGlkYXRpb25cbiAgICogLSBTZWN1cml0eSBldmVudCBsb2dnaW5nXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gWUFNTCBzdHJpbmcgdG8gcGFyc2VcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBQYXJzaW5nIG9wdGlvbnNcbiAgICogQHJldHVybnMgUGFyc2VkIG9iamVjdFxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHNpemUgZXhjZWVkcyBsaW1pdCBvciBzdHJ1Y3R1cmUgaXMgaW52YWxpZFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHBhcnNlZCA9IHNlcnZpY2UucGFyc2VQdXJlWWFtbCh5YW1sU3RyaW5nLCB7XG4gICAqICAgc2NoZW1hOiAnZmFpbHNhZmUnLFxuICAgKiAgIG1heFNpemU6IDY0ICogMTAyNCxcbiAgICogICB2YWxpZGF0ZVN0cnVjdHVyZTogdHJ1ZSxcbiAgICogICBzb3VyY2U6ICdTa2lsbE1hbmFnZXIuaW1wb3J0RWxlbWVudCdcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcGFyc2VQdXJlWWFtbChkYXRhOiBzdHJpbmcsIG9wdGlvbnM6IFlhbWxQYXJzZU9wdGlvbnMgPSB7fSk6IGFueSB7XG4gICAgY29uc3Qge1xuICAgICAgc2NoZW1hID0gJ2ZhaWxzYWZlJyxcbiAgICAgIG1heFNpemUgPSBTZXJpYWxpemF0aW9uU2VydmljZS5ERUZBVUxUX01BWF9ZQU1MX1NJWkUsXG4gICAgICB2YWxpZGF0ZVN0cnVjdHVyZSA9IHRydWUsXG4gICAgICBzb3VyY2UgPSAnU2VyaWFsaXphdGlvblNlcnZpY2UucGFyc2VQdXJlWWFtbCdcbiAgICB9ID0gb3B0aW9ucztcblxuICAgIC8vIFNpemUgdmFsaWRhdGlvblxuICAgIGlmIChkYXRhLmxlbmd0aCA+IG1heFNpemUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWUFNTCBjb250ZW50IGV4Y2VlZHMgYWxsb3dlZCBzaXplIG9mICR7bWF4U2l6ZX0gYnl0ZXNgKTtcbiAgICB9XG5cbiAgICAvLyBTZWxlY3QgWUFNTCBzY2hlbWFcbiAgICBjb25zdCB5YW1sU2NoZW1hID0gdGhpcy5nZXRZYW1sU2NoZW1hKHNjaGVtYSk7XG5cbiAgICAvLyBQYXJzZSBZQU1MXG4gICAgbGV0IHBhcnNlZDogYW55O1xuICAgIHRyeSB7XG4gICAgICBwYXJzZWQgPSB5YW1sLmxvYWQoZGF0YSwge1xuICAgICAgICBzY2hlbWE6IHlhbWxTY2hlbWEsXG4gICAgICAgIGpzb246IGZhbHNlLFxuICAgICAgICBvbldhcm5pbmc6ICh3YXJuaW5nOiBhbnkpID0+IHtcbiAgICAgICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgICAgICB0eXBlOiAnWUFNTF9QQVJTSU5HX1dBUk5JTkcnLFxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgZGV0YWlsczogYFlBTUwgd2FybmluZzogJHt3YXJuaW5nLm1lc3NhZ2V9YFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgICAgbG9nZ2VyLndhcm4oYFlBTUwgcGFyc2luZyBmYWlsZWQgaW4gJHtzb3VyY2V9OiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIFlBTUw6ICR7ZXJyb3JNZXNzYWdlfWApO1xuICAgIH1cblxuICAgIC8vIFN0cnVjdHVyZSB2YWxpZGF0aW9uXG4gICAgaWYgKHZhbGlkYXRlU3RydWN0dXJlKSB7XG4gICAgICBpZiAodHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcgfHwgcGFyc2VkID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lBTUwgbXVzdCBjb250YWluIGFuIG9iamVjdCBhdCByb290IGxldmVsJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBtYWxpY2lvdXMga2V5c1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHBhcnNlZCk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ1tvYmplY3QgT2JqZWN0XScpIHx8IGtleS5pbmNsdWRlcygnZnVuY3Rpb24nKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBZQU1MIHN0cnVjdHVyZSBkZXRlY3RlZCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTG9nIHN1Y2Nlc3NcbiAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICB0eXBlOiAnWUFNTF9QQVJTRV9TVUNDRVNTJyxcbiAgICAgIHNldmVyaXR5OiAnTE9XJyxcbiAgICAgIHNvdXJjZSxcbiAgICAgIGRldGFpbHM6ICdZQU1MIGNvbnRlbnQgc2FmZWx5IHBhcnNlZCdcbiAgICB9KTtcblxuICAgIHJldHVybiBwYXJzZWQ7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgZnJvbnRtYXR0ZXIgKyBjb250ZW50IChNYXJrZG93biB3aXRoIFlBTUwpXG4gICAqXG4gICAqIEF1dG8tZGV0ZWN0czpcbiAgICogLSBQdXJlIFlBTUwgKHdyYXBzIHdpdGggLS0tIG1hcmtlcnMgZm9yIHBhcnNpbmcpXG4gICAqIC0gTWFya2Rvd24gd2l0aCBmcm9udG1hdHRlciAocGFyc2VzIGFzLWlzKVxuICAgKlxuICAgKiBVc2VzIFNlY3VyZVlhbWxQYXJzZXIgZm9yIHNlY3VyaXR5IHZhbGlkYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gTWFya2Rvd24gc3RyaW5nIHdpdGggZnJvbnRtYXR0ZXJcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBQYXJzaW5nIG9wdGlvbnNcbiAgICogQHJldHVybnMgUGFyc2VkIGZyb250bWF0dGVyIGFuZCBjb250ZW50XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gc2VydmljZS5wYXJzZUZyb250bWF0dGVyKG1hcmtkb3duU3RyaW5nLCB7XG4gICAqICAgbWF4WWFtbFNpemU6IDY0ICogMTAyNCxcbiAgICogICB2YWxpZGF0ZUNvbnRlbnQ6IHRydWUsXG4gICAqICAgc291cmNlOiAnVGVtcGxhdGVNYW5hZ2VyLmltcG9ydEVsZW1lbnQnXG4gICAqIH0pO1xuICAgKiAvLyByZXN1bHQuZGF0YSA9IHsgbmFtZTogJy4uLicsIGRlc2NyaXB0aW9uOiAnLi4uJyB9XG4gICAqIC8vIHJlc3VsdC5jb250ZW50ID0gJ01hcmtkb3duIGNvbnRlbnQuLi4nXG4gICAqIGBgYFxuICAgKi9cbiAgcGFyc2VGcm9udG1hdHRlcihcbiAgICBkYXRhOiBzdHJpbmcsXG4gICAgb3B0aW9uczogRnJvbnRtYXR0ZXJQYXJzZU9wdGlvbnMgPSB7fVxuICApOiBQYXJzZWRGcm9udG1hdHRlciB7XG4gICAgY29uc3Qge1xuICAgICAgbWF4WWFtbFNpemUgPSBTZXJpYWxpemF0aW9uU2VydmljZS5ERUZBVUxUX01BWF9ZQU1MX1NJWkUsXG4gICAgICBtYXhDb250ZW50U2l6ZSA9IFNlcmlhbGl6YXRpb25TZXJ2aWNlLkRFRkFVTFRfTUFYX0NPTlRFTlRfU0laRSxcbiAgICAgIHZhbGlkYXRlQ29udGVudCA9IGZhbHNlLFxuICAgICAgc291cmNlID0gJ1NlcmlhbGl6YXRpb25TZXJ2aWNlLnBhcnNlRnJvbnRtYXR0ZXInLFxuICAgICAgc2NoZW1hID0gJ2ZhaWxzYWZlJ1xuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gQ2hlY2sgaWYgZGF0YSBoYXMgZnJvbnRtYXR0ZXIgbWFya2Vyc1xuICAgIGlmICh0aGlzLmhhc0Zyb250bWF0dGVyKGRhdGEpKSB7XG4gICAgICAvLyBVc2UgU2VjdXJlWWFtbFBhcnNlciBmb3IgZnJvbnRtYXR0ZXIgZm9ybWF0XG4gICAgICBjb25zdCBwYXJzZWQgPSBTZWN1cmVZYW1sUGFyc2VyLnBhcnNlKGRhdGEsIHtcbiAgICAgICAgbWF4WWFtbFNpemUsXG4gICAgICAgIG1heENvbnRlbnRTaXplLFxuICAgICAgICB2YWxpZGF0ZUNvbnRlbnRcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiBwYXJzZWQuZGF0YSxcbiAgICAgICAgY29udGVudDogcGFyc2VkLmNvbnRlbnQudHJpbSgpIC8vIFRyaW0gbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQdXJlIFlBTUwgd2l0aG91dCBmcm9udG1hdHRlciBtYXJrZXJzIChNZW1vcnlNYW5hZ2VyIHBhdHRlcm4pXG4gICAgICAvLyBQYXJzZSB0aGUgZW50aXJlIGNvbnRlbnQgYXMgWUFNTFxuICAgICAgLy8gVXNlIGNhbGxlci1zcGVjaWZpZWQgc2NoZW1hIHRvIHByZXNlcnZlIHR5cGVzIHdoZW4gbmVlZGVkIChlLmcuLCAnanNvbicgZm9yIGJvb2xlYW5zL251bWJlcnMpXG4gICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlUHVyZVlhbWwoZGF0YSwge1xuICAgICAgICBzY2hlbWEsXG4gICAgICAgIG1heFNpemU6IG1heFlhbWxTaXplLFxuICAgICAgICB2YWxpZGF0ZVN0cnVjdHVyZTogdHJ1ZSxcbiAgICAgICAgc291cmNlXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogcGFyc2VkLFxuICAgICAgICBjb250ZW50OiAnJyAvLyBObyBtYXJrZG93biBjb250ZW50IGZvciBwdXJlIFlBTUxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF1dG8tZGV0ZWN0IGZvcm1hdCBhbmQgcGFyc2VcbiAgICpcbiAgICogRGV0ZWN0czpcbiAgICogLSBGcm9udG1hdHRlciAoc3RhcnRzIHdpdGggLS0tKVxuICAgKiAtIFB1cmUgWUFNTCAodmFsaWQgWUFNTCBvYmplY3QpXG4gICAqIC0gSlNPTiAoc3RhcnRzIHdpdGggeyBvciBbKVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFBhcnNpbmcgb3B0aW9ucyBmb3IgZWFjaCBmb3JtYXRcbiAgICogQHJldHVybnMgUGFyc2VkIHJlc3VsdCB3aXRoIGRldGVjdGVkIGZvcm1hdFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IHNlcnZpY2UucGFyc2VBdXRvKGRhdGEsIHtcbiAgICogICBzb3VyY2U6ICdTa2lsbE1hbmFnZXIuaW1wb3J0RWxlbWVudCdcbiAgICogfSk7XG4gICAqIGlmIChyZXN1bHQuZm9ybWF0ID09PSAnZnJvbnRtYXR0ZXInKSB7XG4gICAqICAgY29uc29sZS5sb2cocmVzdWx0LmRhdGEsIHJlc3VsdC5jb250ZW50KTtcbiAgICogfSBlbHNlIGlmIChyZXN1bHQuZm9ybWF0ID09PSAneWFtbCcpIHtcbiAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuZGF0YSk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBwYXJzZUF1dG8oXG4gICAgZGF0YTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEF1dG9QYXJzZU9wdGlvbnMgPSB7fVxuICApOiBBdXRvUGFyc2VkUmVzdWx0IHtcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmRldGVjdEZvcm1hdChkYXRhKTtcblxuICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICBjYXNlICdmcm9udG1hdHRlcic6IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZUZyb250bWF0dGVyKGRhdGEsIG9wdGlvbnMuZnJvbnRtYXR0ZXJPcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmb3JtYXQsXG4gICAgICAgICAgZGF0YTogcGFyc2VkLmRhdGEsXG4gICAgICAgICAgY29udGVudDogcGFyc2VkLmNvbnRlbnRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAneWFtbCc6IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZVB1cmVZYW1sKGRhdGEsIG9wdGlvbnMueWFtbE9wdGlvbnMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZvcm1hdCxcbiAgICAgICAgICBkYXRhOiBwYXJzZWRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZUpzb24oZGF0YSwgb3B0aW9ucy5qc29uT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgIGRhdGE6IHBhcnNlZFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBkZXRlY3QgdmFsaWQgZm9ybWF0IChmcm9udG1hdHRlciwgWUFNTCwgb3IgSlNPTiknKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gWUFNTCBEVU1QSU5HXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBEdW1wIG9iamVjdCB0byBZQU1MIHN0cmluZ1xuICAgKlxuICAgKiBTdXBwb3J0czpcbiAgICogLSBGQUlMU0FGRV9TQ0hFTUEgKGRlZmF1bHQgLSBzdHJpbmdzIG9ubHksIG1vc3Qgc2VjdXJlKVxuICAgKiAtIERFRkFVTFRfU0NIRU1BIChmb3IgVGVtcGxhdGVNYW5hZ2VyIGNvbXBhdGliaWxpdHkpXG4gICAqIC0gQ09SRV9TQ0hFTUEgKGZvciBzcGVjaWFsIGNhc2VzKVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIE9iamVjdCB0byBzZXJpYWxpemVcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBEdW1wIG9wdGlvbnNcbiAgICogQHJldHVybnMgWUFNTCBzdHJpbmdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB5YW1sU3RyaW5nID0gc2VydmljZS5kdW1wWWFtbChkYXRhLCB7XG4gICAqICAgc2NoZW1hOiAnZmFpbHNhZmUnLFxuICAgKiAgIHNvcnRLZXlzOiB0cnVlLFxuICAgKiAgIHNraXBJbnZhbGlkOiB0cnVlLFxuICAgKiAgIG5vUmVmczogdHJ1ZVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBkdW1wWWFtbChkYXRhOiBhbnksIG9wdGlvbnM6IFlhbWxEdW1wT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgICBjb25zdCB7XG4gICAgICBzY2hlbWEgPSAnZmFpbHNhZmUnLFxuICAgICAgc29ydEtleXMgPSB0cnVlLFxuICAgICAgc2tpcEludmFsaWQgPSB0cnVlLFxuICAgICAgbm9SZWZzID0gdHJ1ZSxcbiAgICAgIGluZGVudCA9IDIsXG4gICAgICBsaW5lV2lkdGggPSA4MCxcbiAgICAgIGZsb3dMZXZlbCA9IC0xXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCB5YW1sU2NoZW1hID0gdGhpcy5nZXRZYW1sU2NoZW1hKHNjaGVtYSk7XG5cbiAgICByZXR1cm4geWFtbC5kdW1wKGRhdGEsIHtcbiAgICAgIHNjaGVtYTogeWFtbFNjaGVtYSxcbiAgICAgIHNvcnRLZXlzLFxuICAgICAgc2tpcEludmFsaWQsXG4gICAgICBub1JlZnMsXG4gICAgICBpbmRlbnQsXG4gICAgICBsaW5lV2lkdGgsXG4gICAgICBmbG93TGV2ZWxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgZnJvbnRtYXR0ZXIgKyBjb250ZW50IChNYXJrZG93biB3aXRoIFlBTUwpXG4gICAqXG4gICAqIE1ldGhvZHM6XG4gICAqIC0gJ21hdHRlcicgLSBVc2VzIG1hdHRlci5zdHJpbmdpZnkoKSAoU2tpbGxNYW5hZ2VyIHBhdHRlcm4pXG4gICAqIC0gJ21hbnVhbCcgLSBNYW51YWwgWUFNTCBkdW1wICsgY29uY2F0ZW5hdGlvbiAob3RoZXIgbWFuYWdlcnMpXG4gICAqXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIEZyb250bWF0dGVyIG1ldGFkYXRhXG4gICAqIEBwYXJhbSBjb250ZW50IC0gTWFya2Rvd24gY29udGVudFxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIER1bXAgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBNYXJrZG93biBzdHJpbmcgd2l0aCBmcm9udG1hdHRlclxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IG1hcmtkb3duID0gc2VydmljZS5jcmVhdGVGcm9udG1hdHRlcihtZXRhZGF0YSwgY29udGVudCwge1xuICAgKiAgIHNjaGVtYTogJ2ZhaWxzYWZlJyxcbiAgICogICBtZXRob2Q6ICdtYXR0ZXInLFxuICAgKiAgIGNsZWFuTWV0YWRhdGE6IHRydWUsXG4gICAqICAgY2xlYW5pbmdTdHJhdGVneTogJ3JlbW92ZS11bmRlZmluZWQnXG4gICAqIH0pO1xuICAgKiAvLyBSZXR1cm5zOiAtLS1cXG5tZXRhZGF0YS4uLlxcbi0tLVxcblxcbkNvbnRlbnQuLi5cbiAgICogYGBgXG4gICAqL1xuICBjcmVhdGVGcm9udG1hdHRlcihcbiAgICBtZXRhZGF0YTogYW55LFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiBGcm9udG1hdHRlckR1bXBPcHRpb25zID0ge31cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCB7XG4gICAgICBtZXRob2QgPSAnbWFudWFsJyxcbiAgICAgIGNsZWFuTWV0YWRhdGEgPSBmYWxzZSxcbiAgICAgIGNsZWFuaW5nU3RyYXRlZ3kgPSAncmVtb3ZlLXVuZGVmaW5lZCcsXG4gICAgICBzY2hlbWEgPSAnZmFpbHNhZmUnLFxuICAgICAgc29ydEtleXM6IF9zb3J0S2V5cyA9IHRydWUsXG4gICAgICBza2lwSW52YWxpZCA9IHRydWUsXG4gICAgICBub1JlZnMgPSB0cnVlXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICAvLyBDbGVhbiBtZXRhZGF0YSBpZiByZXF1ZXN0ZWRcbiAgICBsZXQgcHJvY2Vzc2VkTWV0YWRhdGEgPSBjbGVhbk1ldGFkYXRhXG4gICAgICA/IHRoaXMuY2xlYW5NZXRhZGF0YShtZXRhZGF0YSwgeyBzdHJhdGVneTogY2xlYW5pbmdTdHJhdGVneSB9KVxuICAgICAgOiBtZXRhZGF0YTtcblxuICAgIC8vIEZpeCAjOTEwOiBBcHBseSBjYW5vbmljYWwgZmllbGQgb3JkZXJpbmcgaW5zdGVhZCBvZiBhbHBoYWJldGljYWwgc29ydFxuICAgIHByb2Nlc3NlZE1ldGFkYXRhID0gb3JkZXJNZXRhZGF0YUZpZWxkcyhwcm9jZXNzZWRNZXRhZGF0YSk7XG5cbiAgICBpZiAobWV0aG9kID09PSAnbWF0dGVyJykge1xuICAgICAgLy8gVXNlIG1hdHRlci5zdHJpbmdpZnkoKSAoU2tpbGxNYW5hZ2VyIHBhdHRlcm4pXG4gICAgICByZXR1cm4gbWF0dGVyLnN0cmluZ2lmeShjb250ZW50LCBwcm9jZXNzZWRNZXRhZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE1hbnVhbCBjb25zdHJ1Y3Rpb24gKG90aGVyIG1hbmFnZXJzKVxuICAgICAgY29uc3QgeWFtbFN0cmluZyA9IHRoaXMuZHVtcFlhbWwocHJvY2Vzc2VkTWV0YWRhdGEsIHtcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBzb3J0S2V5czogZmFsc2UsICAvLyBGaXggIzkxMDogZmllbGQgb3JkZXIgaXMgbm93IGNhbm9uaWNhbCwgbm90IGFscGhhYmV0aWNhbFxuICAgICAgICBza2lwSW52YWxpZCxcbiAgICAgICAgbm9SZWZzXG4gICAgICB9KTtcblxuICAgICAgLy8gQ29uc3RydWN0IGZyb250bWF0dGVyIG1hbnVhbGx5XG4gICAgICBpZiAoY29udGVudCkge1xuICAgICAgICByZXR1cm4gYC0tLVxcbiR7eWFtbFN0cmluZ30tLS1cXG5cXG4ke2NvbnRlbnR9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgLS0tXFxuJHt5YW1sU3RyaW5nfS0tLVxcbmA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEpTT04gT1BFUkFUSU9OU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogUGFyc2UgSlNPTiB3aXRoIGVycm9yIGhhbmRsaW5nIGFuZCBzZWN1cml0eSBsb2dnaW5nXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gSlNPTiBzdHJpbmdcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBQYXJzZSBvcHRpb25zXG4gICAqIEByZXR1cm5zIFBhcnNlZCBvYmplY3RcbiAgICogQHRocm93cyBFcnJvciBpZiBwYXJzaW5nIGZhaWxzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcGFyc2VkID0gc2VydmljZS5wYXJzZUpzb24oanNvblN0cmluZywge1xuICAgKiAgIHNvdXJjZTogJ1RlbXBsYXRlTWFuYWdlci5pbXBvcnRFbGVtZW50J1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBwYXJzZUpzb248VCA9IGFueT4oXG4gICAgZGF0YTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEpzb25QYXJzZU9wdGlvbnMgPSB7fVxuICApOiBUIHtcbiAgICBjb25zdCB7XG4gICAgICBtYXhTaXplID0gU2VyaWFsaXphdGlvblNlcnZpY2UuREVGQVVMVF9NQVhfQ09OVEVOVF9TSVpFLFxuICAgICAgdmFsaWRhdGVTdHJ1Y3R1cmUgPSBmYWxzZSxcbiAgICAgIHNvdXJjZSA9ICdTZXJpYWxpemF0aW9uU2VydmljZS5wYXJzZUpzb24nXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICAvLyBTaXplIHZhbGlkYXRpb25cbiAgICB0aGlzLnZhbGlkYXRlU2l6ZShkYXRhLCBtYXhTaXplLCAnSlNPTiBjb250ZW50Jyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShkYXRhKTtcblxuICAgICAgLy8gU3RydWN0dXJlIHZhbGlkYXRpb25cbiAgICAgIGlmICh2YWxpZGF0ZVN0cnVjdHVyZSkge1xuICAgICAgICBpZiAodHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcgfHwgcGFyc2VkID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSlNPTiBtdXN0IGNvbnRhaW4gYW4gb2JqZWN0IGF0IHJvb3QgbGV2ZWwnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyc2VkO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICBsb2dnZXIud2FybihgSlNPTiBwYXJzaW5nIGZhaWxlZCBpbiAke3NvdXJjZX06ICR7ZXJyb3JNZXNzYWdlfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgSlNPTjogJHtlcnJvck1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0cmluZ2lmeSBvYmplY3QgdG8gSlNPTlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIE9iamVjdCB0byBzZXJpYWxpemVcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBTdHJpbmdpZnkgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBKU09OIHN0cmluZ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGpzb25TdHJpbmcgPSBzZXJ2aWNlLnN0cmluZ2lmeUpzb24oZGF0YSwge1xuICAgKiAgIGluZGVudDogMixcbiAgICogICBjbGVhbk1ldGFkYXRhOiB0cnVlLFxuICAgKiAgIGNsZWFuaW5nU3RyYXRlZ3k6ICdyZW1vdmUtdW5kZWZpbmVkJ1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBzdHJpbmdpZnlKc29uKFxuICAgIGRhdGE6IGFueSxcbiAgICBvcHRpb25zOiBKc29uU3RyaW5naWZ5T3B0aW9ucyA9IHt9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qge1xuICAgICAgcHJldHR5ID0gZmFsc2UsXG4gICAgICBpbmRlbnQgPSAyLFxuICAgICAgY2xlYW5NZXRhZGF0YSA9IGZhbHNlLFxuICAgICAgY2xlYW5pbmdTdHJhdGVneSA9ICdyZW1vdmUtdW5kZWZpbmVkJ1xuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gQ2xlYW4gbWV0YWRhdGEgaWYgcmVxdWVzdGVkXG4gICAgY29uc3QgcHJvY2Vzc2VkRGF0YSA9IGNsZWFuTWV0YWRhdGFcbiAgICAgID8gdGhpcy5jbGVhbk1ldGFkYXRhKGRhdGEsIHsgc3RyYXRlZ3k6IGNsZWFuaW5nU3RyYXRlZ3kgfSlcbiAgICAgIDogZGF0YTtcblxuICAgIC8vIFVzZSBpbmRlbnQgaWYgcHJldHR5IGlzIHRydWUsIG90aGVyd2lzZSBubyBmb3JtYXR0aW5nXG4gICAgY29uc3QgaW5kZW50VmFsdWUgPSBwcmV0dHkgPyBpbmRlbnQgOiAwO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwcm9jZXNzZWREYXRhLCBudWxsLCBpbmRlbnRWYWx1ZSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTUVUQURBVEEgVVRJTElUSUVTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBDbGVhbiBtZXRhZGF0YSBieSByZW1vdmluZyB1bmRlZmluZWQvbnVsbCB2YWx1ZXNcbiAgICpcbiAgICogU3RyYXRlZ2llczpcbiAgICogLSAncmVtb3ZlLXVuZGVmaW5lZCcgLSBSZW1vdmUgdW5kZWZpbmVkIG9ubHkgKFNraWxsTWFuYWdlciwgVGVtcGxhdGVNYW5hZ2VyKVxuICAgKiAtICdyZW1vdmUtbnVsbCcgLSBSZW1vdmUgbnVsbCBvbmx5XG4gICAqIC0gJ3JlbW92ZS1ib3RoJyAtIFJlbW92ZSBib3RoIHVuZGVmaW5lZCBhbmQgbnVsbCAoQWdlbnRNYW5hZ2VyKVxuICAgKiAtICdub25lJyAtIE5vIGNsZWFuaW5nIChNZW1vcnlNYW5hZ2VyLCBFbnNlbWJsZU1hbmFnZXIpXG4gICAqXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9iamVjdCB0byBjbGVhblxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENsZWFuaW5nIG9wdGlvbnNcbiAgICogQHJldHVybnMgQ2xlYW5lZCBtZXRhZGF0YSAobmV3IG9iamVjdCwgb3JpZ2luYWwgbm90IG1vZGlmaWVkKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGNsZWFuZWQgPSBzZXJ2aWNlLmNsZWFuTWV0YWRhdGEobWV0YWRhdGEsIHtcbiAgICogICBzdHJhdGVneTogJ3JlbW92ZS11bmRlZmluZWQnXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGNsZWFuTWV0YWRhdGEoXG4gICAgbWV0YWRhdGE6IGFueSxcbiAgICBvcHRpb25zOiBNZXRhZGF0YUNsZWFuT3B0aW9ucyA9IHt9XG4gICk6IGFueSB7XG4gICAgY29uc3QgeyBzdHJhdGVneSA9ICdyZW1vdmUtdW5kZWZpbmVkJywgcmVtb3ZlRW1wdHkgPSBmYWxzZSB9ID0gb3B0aW9ucztcblxuICAgIGlmIChzdHJhdGVneSA9PT0gJ25vbmUnICYmICFyZW1vdmVFbXB0eSkge1xuICAgICAgcmV0dXJuIG1ldGFkYXRhO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBub24tb2JqZWN0IGNhc2VzXG4gICAgaWYgKHR5cGVvZiBtZXRhZGF0YSAhPT0gJ29iamVjdCcgfHwgbWV0YWRhdGEgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBtZXRhZGF0YTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgYXJyYXlzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobWV0YWRhdGEpKSB7XG4gICAgICAvLyBGaWx0ZXIgb3V0IG51bGwvdW5kZWZpbmVkIGJhc2VkIG9uIHN0cmF0ZWd5XG4gICAgICBsZXQgY2xlYW5lZCA9IG1ldGFkYXRhLm1hcChpdGVtID0+IHRoaXMuY2xlYW5NZXRhZGF0YShpdGVtLCBvcHRpb25zKSk7XG5cbiAgICAgIGlmIChzdHJhdGVneSA9PT0gJ3JlbW92ZS11bmRlZmluZWQnKSB7XG4gICAgICAgIGNsZWFuZWQgPSBjbGVhbmVkLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHVuZGVmaW5lZCk7XG4gICAgICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSAncmVtb3ZlLW51bGwnKSB7XG4gICAgICAgIGNsZWFuZWQgPSBjbGVhbmVkLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IG51bGwpO1xuICAgICAgfSBlbHNlIGlmIChzdHJhdGVneSA9PT0gJ3JlbW92ZS1ib3RoJykge1xuICAgICAgICBjbGVhbmVkID0gY2xlYW5lZC5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSB1bmRlZmluZWQgJiYgaXRlbSAhPT0gbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbGVhbmVkO1xuICAgIH1cblxuICAgIC8vIENsZWFuIG9iamVjdCBiYXNlZCBvbiBzdHJhdGVneVxuICAgIGNvbnN0IGNsZWFuZWQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1ldGFkYXRhKSkge1xuICAgICAgaWYgKFRSQU5TSUVOVF9NRVRBREFUQV9GSUVMRFMuaGFzKGtleSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNob3VsZFJlbW92ZSA9XG4gICAgICAgIChzdHJhdGVneSA9PT0gJ3JlbW92ZS11bmRlZmluZWQnICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHx8XG4gICAgICAgIChzdHJhdGVneSA9PT0gJ3JlbW92ZS1udWxsJyAmJiB2YWx1ZSA9PT0gbnVsbCkgfHxcbiAgICAgICAgKHN0cmF0ZWd5ID09PSAncmVtb3ZlLWJvdGgnICYmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSk7XG5cbiAgICAgIGlmICghc2hvdWxkUmVtb3ZlKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNsZWFuIG5lc3RlZCBvYmplY3RzL2FycmF5c1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IGNsZWFuZWRWYWx1ZSA9IHRoaXMuY2xlYW5NZXRhZGF0YSh2YWx1ZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBzaG91bGQgcmVtb3ZlIGVtcHR5IGFycmF5cy9vYmplY3RzXG4gICAgICAgICAgaWYgKHJlbW92ZUVtcHR5KSB7XG4gICAgICAgICAgICBjb25zdCBpc0VtcHR5ID0gQXJyYXkuaXNBcnJheShjbGVhbmVkVmFsdWUpXG4gICAgICAgICAgICAgID8gY2xlYW5lZFZhbHVlLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA6IE9iamVjdC5rZXlzKGNsZWFuZWRWYWx1ZSkubGVuZ3RoID09PSAwO1xuXG4gICAgICAgICAgICBpZiAoIWlzRW1wdHkpIHtcbiAgICAgICAgICAgICAgY2xlYW5lZFtrZXldID0gY2xlYW5lZFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbGVhbmVkW2tleV0gPSBjbGVhbmVkVmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNsZWFuZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsZWFuZWQ7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRk9STUFUIERFVEVDVElPTlxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogRGV0ZWN0IGZvcm1hdCBvZiBpbnB1dCBkYXRhXG4gICAqXG4gICAqIERldGVjdGlvbiBsb2dpYzpcbiAgICogMS4gQ2hlY2sgZm9yIGZyb250bWF0dGVyIChzdGFydHMgd2l0aCAtLS0gYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSlcbiAgICogMi4gQ2hlY2sgZm9yIEpTT04gKHN0YXJ0cyB3aXRoIHsgb3IgWylcbiAgICogMy4gVHJ5IHRvIHBhcnNlIGFzIFlBTUxcbiAgICogNC4gUmV0dXJuICd1bmtub3duJyBpZiBub25lIG1hdGNoXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gU3RyaW5nIHRvIGFuYWx5emVcbiAgICogQHJldHVybnMgRGV0ZWN0ZWQgZm9ybWF0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgZm9ybWF0ID0gc2VydmljZS5kZXRlY3RGb3JtYXQoZGF0YSk7XG4gICAqIC8vIFJldHVybnM6ICdmcm9udG1hdHRlcicgfCAneWFtbCcgfCAnanNvbicgfCAndW5rbm93bidcbiAgICogYGBgXG4gICAqL1xuICBkZXRlY3RGb3JtYXQoZGF0YTogc3RyaW5nKTogRGV0ZWN0ZWRGb3JtYXQge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBkYXRhLnRyaW0oKTtcblxuICAgIC8vIENoZWNrIGZvciBmcm9udG1hdHRlclxuICAgIGlmICh0aGlzLmhhc0Zyb250bWF0dGVyKHRyaW1tZWQpKSB7XG4gICAgICByZXR1cm4gJ2Zyb250bWF0dGVyJztcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgSlNPTlxuICAgIGlmICh0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgSlNPTi5wYXJzZSh0cmltbWVkKTtcbiAgICAgICAgcmV0dXJuICdqc29uJztcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBOb3QgdmFsaWQgSlNPTiwgY29udGludWUgY2hlY2tpbmdcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcnkgcGFyc2luZyBhcyBZQU1MXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHlhbWwubG9hZCh0cmltbWVkLCB7XG4gICAgICAgIHNjaGVtYTogeWFtbC5GQUlMU0FGRV9TQ0hFTUEsXG4gICAgICAgIGpzb246IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgLy8gVmFsaWQgWUFNTCB0aGF0IHBhcnNlcyB0byBhbiBvYmplY3RcbiAgICAgIGlmICh0eXBlb2YgcGFyc2VkID09PSAnb2JqZWN0JyAmJiBwYXJzZWQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICd5YW1sJztcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIE5vdCB2YWxpZCBZQU1MXG4gICAgfVxuXG4gICAgcmV0dXJuICd1bmtub3duJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBkYXRhIGhhcyBmcm9udG1hdHRlciBtYXJrZXJzXG4gICAqXG4gICAqIENoZWNrcyBmb3IgJy0tLScgYXQgdGhlIHN0YXJ0IGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2VcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBTdHJpbmcgdG8gY2hlY2tcbiAgICogQHJldHVybnMgVHJ1ZSBpZiBoYXMgZnJvbnRtYXR0ZXJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpZiAoc2VydmljZS5oYXNGcm9udG1hdHRlcihkYXRhKSkge1xuICAgKiAgIGNvbnN0IHJlc3VsdCA9IHNlcnZpY2UucGFyc2VGcm9udG1hdHRlcihkYXRhKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGhhc0Zyb250bWF0dGVyKGRhdGE6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSBkYXRhLnRyaW0oKTtcbiAgICByZXR1cm4gdHJpbW1lZC5zdGFydHNXaXRoKCctLS0nKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTRUNVUklUWSBVVElMSVRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIExvZyBzZWN1cml0eSBldmVudCAod3JhcHBlciBmb3IgU2VjdXJpdHlNb25pdG9yKVxuICAgKlxuICAgKiBQcm92aWRlcyBjb25zaXN0ZW50IHNlY3VyaXR5IGV2ZW50IGxvZ2dpbmcgYWNyb3NzIHNlcmlhbGl6YXRpb24gb3BlcmF0aW9uc1xuICAgKlxuICAgKiBAcGFyYW0gdHlwZSAtIEV2ZW50IHR5cGVcbiAgICogQHBhcmFtIHNldmVyaXR5IC0gRXZlbnQgc2V2ZXJpdHlcbiAgICogQHBhcmFtIHNvdXJjZSAtIEV2ZW50IHNvdXJjZVxuICAgKiBAcGFyYW0gZGV0YWlscyAtIEV2ZW50IGRldGFpbHNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBzZXJ2aWNlLmxvZ1NlY3VyaXR5RXZlbnQoXG4gICAqICAgJ1lBTUxfUEFSU0VfU1VDQ0VTUycsXG4gICAqICAgJ0xPVycsXG4gICAqICAgJ1NraWxsTWFuYWdlci5pbXBvcnRFbGVtZW50JyxcbiAgICogICAnU3VjY2Vzc2Z1bGx5IHBhcnNlZCBZQU1MIGNvbnRlbnQnXG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgbG9nU2VjdXJpdHlFdmVudChcbiAgICB0eXBlOiBTZWN1cml0eUV2ZW50Wyd0eXBlJ10sXG4gICAgc2V2ZXJpdHk6ICdMT1cnIHwgJ01FRElVTScgfCAnSElHSCcgfCAnQ1JJVElDQUwnLFxuICAgIHNvdXJjZTogc3RyaW5nLFxuICAgIGRldGFpbHM6IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICB0eXBlLFxuICAgICAgc2V2ZXJpdHksXG4gICAgICBzb3VyY2UsXG4gICAgICBkZXRhaWxzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgc2l6ZSBsaW1pdHNcbiAgICpcbiAgICogVGhyb3dzIGVycm9yIGlmIGRhdGEgZXhjZWVkcyB0aGUgc3BlY2lmaWVkIG1heGltdW0gc2l6ZVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgdG8gY2hlY2tcbiAgICogQHBhcmFtIG1heFNpemUgLSBNYXhpbXVtIHNpemUgaW4gYnl0ZXNcbiAgICogQHBhcmFtIGNvbnRleHQgLSBDb250ZXh0IGZvciBlcnJvciBtZXNzYWdlc1xuICAgKiBAdGhyb3dzIEVycm9yIGlmIHNpemUgZXhjZWVkcyBsaW1pdFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIHNlcnZpY2UudmFsaWRhdGVTaXplKGRhdGEsIDY0ICogMTAyNCwgJ1lBTUwgZnJvbnRtYXR0ZXInKTtcbiAgICogLy8gVGhyb3dzIGlmIGRhdGEgPiA2NEtCXG4gICAqIGBgYFxuICAgKi9cbiAgdmFsaWRhdGVTaXplKGRhdGE6IHN0cmluZywgbWF4U2l6ZTogbnVtYmVyLCBjb250ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPiBtYXhTaXplKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAke2NvbnRleHR9IGV4Y2VlZHMgYWxsb3dlZCBzaXplIG9mICR7bWF4U2l6ZX0gYnl0ZXMgKGFjdHVhbDogJHtkYXRhLmxlbmd0aH0gYnl0ZXMpYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJJVkFURSBIRUxQRVJTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXQgWUFNTCBzY2hlbWEgb2JqZWN0IGZyb20gc3RyaW5nIGlkZW50aWZpZXJcbiAgICpcbiAgICogQHBhcmFtIHNjaGVtYSAtIFNjaGVtYSBpZGVudGlmaWVyXG4gICAqIEByZXR1cm5zIFlBTUwgc2NoZW1hIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRZYW1sU2NoZW1hKHNjaGVtYTogWWFtbFNjaGVtYSk6IHlhbWwuU2NoZW1hIHtcbiAgICBzd2l0Y2ggKHNjaGVtYSkge1xuICAgICAgY2FzZSAnZmFpbHNhZmUnOlxuICAgICAgICByZXR1cm4geWFtbC5GQUlMU0FGRV9TQ0hFTUE7XG4gICAgICBjYXNlICdkZWZhdWx0JzpcbiAgICAgICAgcmV0dXJuIHlhbWwuREVGQVVMVF9TQ0hFTUE7XG4gICAgICBjYXNlICdjb3JlJzpcbiAgICAgICAgcmV0dXJuIHlhbWwuQ09SRV9TQ0hFTUE7XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgLy8gSlNPTl9TQ0hFTUEgPSBGQUlMU0FGRSArIGJvb2wvaW50L2Zsb2F0L251bGwgKHNhZmVyIHRoYW4gREVGQVVMVCB3aGljaCBhZGRzIHRpbWVzdGFtcHMpXG4gICAgICAgIC8vIFVzZSB0aGlzIGZvciBtZW1vcmllcyB0byBwcmVzZXJ2ZSBib29sZWFucyAoYXV0b0xvYWQpIGFuZCBudW1iZXJzIChwcmlvcml0eSlcbiAgICAgICAgcmV0dXJuIHlhbWwuSlNPTl9TQ0hFTUE7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsb2dnZXIud2FybihgVW5rbm93biBZQU1MIHNjaGVtYSAnJHtzY2hlbWF9JywgdXNpbmcgRkFJTFNBRkVfU0NIRU1BYCk7XG4gICAgICAgIHJldHVybiB5YW1sLkZBSUxTQUZFX1NDSEVNQTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -73,6 +73,15 @@ export interface IElementMetadata {
|
|
|
73
73
|
* @see resolveElementPolicy
|
|
74
74
|
*/
|
|
75
75
|
gatekeeper?: ElementGatekeeperPolicy;
|
|
76
|
+
/**
|
|
77
|
+
* Runtime-only diagnostics for malformed gatekeeper policy discovered during load.
|
|
78
|
+
* This is reporting state, not enforceable policy, and must never be persisted.
|
|
79
|
+
*/
|
|
80
|
+
gatekeeperDiagnostics?: {
|
|
81
|
+
valid: false;
|
|
82
|
+
enforceable: false;
|
|
83
|
+
message: string;
|
|
84
|
+
};
|
|
76
85
|
}
|
|
77
86
|
export interface Reference {
|
|
78
87
|
type: ReferenceType;
|