@lifeready/core 7.2.1 → 8.0.1

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.
@@ -11,7 +11,7 @@ let TpPasswordResetProcessorService = class TpPasswordResetProcessorService {
11
11
  this.ngZone = ngZone;
12
12
  this.keyGraph = keyGraph;
13
13
  }
14
- processTpPasswordResetUserNode(node) {
14
+ processTpPasswordResetUser(node) {
15
15
  var _a;
16
16
  return __awaiter(this, void 0, void 0, function* () {
17
17
  const pxk = ((_a = node.pxk) === null || _a === void 0 ? void 0 : _a.id) && (yield this.keyGraph.getKey(node.pxk.id));
@@ -107,4 +107,4 @@ TpPasswordResetProcessorService = __decorate([
107
107
  })
108
108
  ], TpPasswordResetProcessorService);
109
109
  export { TpPasswordResetProcessorService };
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQtcHJvY2Vzc29yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYXBpL3F1ZXJ5LXByb2Nlc3Nvci90cC1wYXNzd29yZC1yZXNldC1wcm9jZXNzb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBVXRFLE9BQU8sRUFDTCxpQkFBaUIsR0FFbEIsTUFBTSw2QkFBNkIsQ0FBQzs7O0lBUXhCLCtCQUErQixTQUEvQiwrQkFBK0I7SUFDMUMsWUFBb0IsTUFBYyxFQUFVLFFBQXlCO1FBQWpELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUFHLENBQUM7SUFFbkUsOEJBQThCLENBQ2xDLElBQTZCOzs7WUFFN0IsTUFBTSxHQUFHLEdBQUcsT0FBQSxJQUFJLENBQUMsR0FBRywwQ0FBRSxFQUFFLEtBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUV0RSxNQUFNLEdBQUcscUJBQ0osSUFBSSxDQUNSLENBQUM7WUFFRixJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUN6QixHQUFHLENBQUMsU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVB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SSxpQkFBaUIsRUFBRTtvQkFDckIsR0FBRyxDQUFDLDBCQUEwQixHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDcEUsWUFBWSxFQUNaLGlCQUFpQixDQUNsQixDQUFDO2lCQUNIO2FBQ0Y7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7S0FBQTtJQUVhLDZCQUE2QixDQUN6QyxRQUFnQyxFQUNoQyxRQUFpQjs7WUFFakIsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztLQUFBO0NBQ0YsQ0FBQTs7O1lBcEpBLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBeEJvQixNQUFNO1lBQ2xCLGVBQWU7O0FBd0JYLCtCQUErQjtJQU4zQyxpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsK0JBQStCLENBaUozQztTQWpKWSwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uLy4uL2tleS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICcuLi8uLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7IEtjQmFkUmVxdWVzdEV4Y2VwdGlvbiB9IGZyb20gJy4uLy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uLy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQge1xuICBJRCxcbiAgVHBBc3NlbWJseUFwcHJvdmVyTm9kZSxcbiAgVHBBc3NlbWJseU5vZGUsXG4gIFRwUGFzc3dvcmRSZXNldE5vZGUsXG4gIFRwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZhbE5vZGUsXG4gIFRwUGFzc3dvcmRSZXNldFVzZXJOb2RlLFxuICBUcFN1YkFzc2VtYmx5Tm9kZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgcHJvY2Vzc0Nvbm5lY3Rpb24sXG4gIFByb2Nlc3NvckNhbGxiYWNrUGFyYW1zLFxufSBmcm9tICcuL2NvbW1vbi1wcm9jZXNzb3JzLnNlcnZpY2UnO1xuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVHBQYXNzd29yZFJlc2V0UHJvY2Vzc29yU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUsIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSkge31cblxuICBhc3luYyBwcm9jZXNzVHBQYXNzd29yZFJlc2V0VXNlck5vZGUoXG4gICAgbm9kZTogVHBQYXNzd29yZFJlc2V0VXNlck5vZGVcbiAgKTogUHJvbWlzZTxUcFBhc3N3b3JkUmVzZXRVc2VyTm9kZT4ge1xuICAgIGNvbnN0IHB4ayA9IG5vZGUucHhrPy5pZCAmJiAoYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRLZXkobm9kZS5weGsuaWQpKTtcblxuICAgIGNvbnN0IHJldCA9IHtcbiAgICAgIC4uLm5vZGUsXG4gICAgfTtcblxuICAgIGlmIChweGsgJiYgbm9kZS5hcHByb3ZhbHMpIHtcbiAgICAgIHJldC5hcHByb3ZhbHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgbm9kZS5hcHByb3ZhbHMubWFwKChhcHByb3ZhbCkgPT5cbiAgICAgICAgICB0aGlzLnByb2Nlc3NUcFBhc3N3b3JkUmVzZXRVc2VyQXBwcm92YWxOb2RlKGFwcHJvdmFsLCBweGspXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1RwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZhbE5vZGUoXG4gICAgYXBwcm92YWw6IFRwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZhbE5vZGUsXG4gICAgcHhrOiBLZXlcbiAgKSB7XG4gICAgY29uc3QgcmV0ID0ge1xuICAgICAgLi4uYXBwcm92YWwsXG4gICAgfTtcblxuICAgIGlmIChhcHByb3ZhbC5yZWNlaXZlckNpcGhlcikge1xuICAgICAgcmV0LnJlY2VpdmVyQ2lwaGVyQ2xlYXJKc29uID0gdGhpcy5rZXlHcmFwaC5kZWNyeXB0RnJvbVN0cmluZyhcbiAgICAgICAgcHhrLFxuICAgICAgICBhcHByb3ZhbC5yZWNlaXZlckNpcGhlclxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXBwcm92YWwucmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXkpIHtcbiAgICAgIHJldC5yZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleUNsZWFySnNvbiA9XG4gICAgICAgIGF3YWl0IHRoaXMua2V5R3JhcGguZGVjcnlwdEZyb21TdHJpbmcoXG4gICAgICAgICAgcHhrLFxuICAgICAgICAgIGFwcHJvdmFsLnJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5XG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBtYWtlVHBQYXNzd29yZFJlc2V0Tm9kZVByb2Nlc3NvcigpIHtcbiAgICByZXR1cm4gYXN5bmMgKHtcbiAgICAgIGZpZWxkLFxuICAgIH06IFByb2Nlc3NvckNhbGxiYWNrUGFyYW1zKTogUHJvbWlzZTxUcFBhc3N3b3JkUmVzZXROb2RlPiA9PiB7XG4gICAgICBjb25zdCByZXQgPSB7XG4gICAgICAgIC4uLmZpZWxkLFxuICAgICAgfTtcblxuICAgICAgaWYgKGZpZWxkLmFzc2VtYmx5KSB7XG4gICAgICAgIGlmIChmaWVsZC5hcHBsaWVkID09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgS2NCYWRSZXF1ZXN0RXhjZXB0aW9uKFxuICAgICAgICAgICAgJ0lmIHlvdSByZXF1ZXN0IGZvciBmaWVsZCBcImFzc2VtYmx5XCIgaW4gdGhlIFRwUGFzc3dvcmRSZXNldE5vZGUsIHRoZW4geW91IG11c3QgYWxzbyByZXF1ZXN0IHRoZSBcImFwcGxpZWRcIiBmaWVsZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0LmFzc2VtYmx5ID0gYXdhaXQgdGhpcy5wcm9jZXNzVHBBc3NlbWJseU5vZGUoXG4gICAgICAgICAgZmllbGQuYXNzZW1ibHksXG4gICAgICAgICAgZmllbGQuYXBwbGllZFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NUcEFzc2VtYmx5Tm9kZShcbiAgICBhc3NlbWJseTogVHBBc3NlbWJseU5vZGUsXG4gICAgYXBwbGllZDogYm9vbGVhblxuICApOiBQcm9taXNlPFRwQXNzZW1ibHlOb2RlPiB7XG4gICAgLy8gU3ViamVjdCBrZXkgaXMgZW5jcnlwdGVkIHVzZXIgdGhlIG1hc3RlciBrZXkuIFNvIGlmIHJlc2V0IGhhcyBiZWVuIGFwcGxpZWQsIHRoZW5cbiAgICAvLyB0aGVzZSBrZXlzIGFyZSBub3QgYXZhaWxhYmxlIGFueSBtb3JlLlxuICAgIGNvbnN0IHsgc3ViamVjdEtleSwgYXNzZW1ibHlLZXksIGFzc2VtYmx5Q2lwaGVyRGF0YSwgc3ViQXNzZW1ibGllcyB9ID1cbiAgICAgIGFzc2VtYmx5O1xuXG4gICAgY29uc3QgcmV0OiBUcEFzc2VtYmx5Tm9kZSA9IHtcbiAgICAgIC4uLmFzc2VtYmx5LFxuICAgICAgc3ViQXNzZW1ibGllczogYXdhaXQgcHJvY2Vzc0Nvbm5lY3Rpb24oc3ViQXNzZW1ibGllcywgKG5vZGUpID0+XG4gICAgICAgIHRoaXMucHJvY2Vzc1RwU3ViQXNzZW1ibHlOb2RlKG5vZGUsIHN1YmplY3RLZXkuaWQsIGFwcGxpZWQpXG4gICAgICApLFxuICAgIH07XG5cbiAgICBpZiAoIWFwcGxpZWQpIHtcbiAgICAgIGlmIChhc3NlbWJseUNpcGhlckRhdGEpIHtcbiAgICAgICAgcmV0LmFzc2VtYmx5Q2lwaGVyRGF0YUNsZWFySnNvbiA9IGF3YWl0IHRoaXMua2V5R3JhcGguZGVjcnlwdEZyb21TdHJpbmcoXG4gICAgICAgICAgYXNzZW1ibHlLZXkuaWQsXG4gICAgICAgICAgYXNzZW1ibHlDaXBoZXJEYXRhXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1RwU3ViQXNzZW1ibHlOb2RlKFxuICAgIHN1YkFzc2VtYmx5OiBUcFN1YkFzc2VtYmx5Tm9kZSxcbiAgICBzdWJqZWN0S2V5SWQ6IElELFxuICAgIGFwcGxpZWQ6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxUcFN1YkFzc2VtYmx5Tm9kZT4ge1xuICAgIGNvbnN0IHsgc3ViamVjdENpcGhlckRhdGEsIGFwcHJvdmVycyB9ID0gc3ViQXNzZW1ibHk7XG5cbiAgICAvLyBjb25zdCByZXQ6IFRwU3ViQXNzZW1ibHlOb2RlID0ge1xuICAgIC8vICAgLi4uc3ViQXNzZW1ibHksXG4gICAgLy8gICBhcHByb3ZlcnM6IHtcbiAgICAvLyAgICAgLi4uYXBwcm92ZXJzLFxuICAgIC8vICAgICBlZGdlczogYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgLy8gICAgICAgYXBwcm92ZXJzLmVkZ2VzLm1hcChhc3luYyAoZWRnZSkgPT4gKHtcbiAgICAvLyAgICAgICAgIC4uLmVkZ2UsXG4gICAgLy8gICAgICAgICBub2RlOiBhd2FpdCB0aGlzLnByb2Nlc3NUcEFzc2VtYmx5QXBwcm92ZXJOb2RlKGVkZ2Uubm9kZSwgYXBwbGllZCksXG4gICAgLy8gICAgICAgfSkpXG4gICAgLy8gICAgICksXG4gICAgLy8gICB9LFxuICAgIC8vIH07XG4gICAgY29uc3QgcmV0OiBUcFN1YkFzc2VtYmx5Tm9kZSA9IHtcbiAgICAgIC4uLnN1YkFzc2VtYmx5LFxuICAgICAgYXBwcm92ZXJzOiBhd2FpdCBwcm9jZXNzQ29ubmVjdGlvbihhcHByb3ZlcnMsIChub2RlKSA9PlxuICAgICAgICB0aGlzLnByb2Nlc3NUcEFzc2VtYmx5QXBwcm92ZXJOb2RlKG5vZGUsIGFwcGxpZWQpXG4gICAgICApLFxuICAgIH07XG5cbiAgICBpZiAoIWFwcGxpZWQpIHtcbiAgICAgIGlmIChzdWJqZWN0Q2lwaGVyRGF0YSkge1xuICAgICAgICByZXQuc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24gPSBhd2FpdCB0aGlzLmtleUdyYXBoLmRlY3J5cHRGcm9tU3RyaW5nKFxuICAgICAgICAgIHN1YmplY3RLZXlJZCxcbiAgICAgICAgICBzdWJqZWN0Q2lwaGVyRGF0YVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NUcEFzc2VtYmx5QXBwcm92ZXJOb2RlKFxuICAgIGFwcHJvdmVyOiBUcEFzc2VtYmx5QXBwcm92ZXJOb2RlLFxuICAgIF9hcHBsaWVkOiBib29sZWFuXG4gICkge1xuICAgIHJldHVybiBhcHByb3ZlcjtcbiAgfVxufVxuIl19
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtcGFzc3dvcmQtcmVzZXQtcHJvY2Vzc29yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYXBpL3F1ZXJ5LXByb2Nlc3Nvci90cC1wYXNzd29yZC1yZXNldC1wcm9jZXNzb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBVXRFLE9BQU8sRUFDTCxpQkFBaUIsR0FFbEIsTUFBTSw2QkFBNkIsQ0FBQzs7O0lBUXhCLCtCQUErQixTQUEvQiwrQkFBK0I7SUFDMUMsWUFBb0IsTUFBYyxFQUFVLFFBQXlCO1FBQWpELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUFHLENBQUM7SUFFbkUsMEJBQTBCLENBQzlCLElBQXlCOzs7WUFFekIsTUFBTSxHQUFHLEdBQUcsT0FBQSxJQUFJLENBQUMsR0FBRywwQ0FBRSxFQUFFLEtBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUV0RSxNQUFNLEdBQUcscUJBQ0osSUFBSSxDQUNSLENBQUM7WUFFRixJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUN6QixHQUFHLENBQUMsU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVB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SSxpQkFBaUIsRUFBRTtvQkFDckIsR0FBRyxDQUFDLDBCQUEwQixHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDcEUsWUFBWSxFQUNaLGlCQUFpQixDQUNsQixDQUFDO2lCQUNIO2FBQ0Y7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7S0FBQTtJQUVhLDZCQUE2QixDQUN6QyxRQUFnQyxFQUNoQyxRQUFpQjs7WUFFakIsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztLQUFBO0NBQ0YsQ0FBQTs7O1lBcEpBLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBeEJvQixNQUFNO1lBQ2xCLGVBQWU7O0FBd0JYLCtCQUErQjtJQU4zQyxpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsK0JBQStCLENBaUozQztTQWpKWSwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uLy4uL2tleS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXkgfSBmcm9tICcuLi8uLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7IEtjQmFkUmVxdWVzdEV4Y2VwdGlvbiB9IGZyb20gJy4uLy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uLy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQge1xuICBJRCxcbiAgVHBBc3NlbWJseUFwcHJvdmVyTm9kZSxcbiAgVHBBc3NlbWJseU5vZGUsXG4gIFRwUGFzc3dvcmRSZXNldE5vZGUsXG4gIFRwUGFzc3dvcmRSZXNldFVzZXIsXG4gIFRwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZhbE5vZGUsXG4gIFRwU3ViQXNzZW1ibHlOb2RlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge1xuICBwcm9jZXNzQ29ubmVjdGlvbixcbiAgUHJvY2Vzc29yQ2FsbGJhY2tQYXJhbXMsXG59IGZyb20gJy4vY29tbW9uLXByb2Nlc3NvcnMuc2VydmljZSc7XG5cbkBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUcFBhc3N3b3JkUmVzZXRQcm9jZXNzb3JTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIHByb2Nlc3NUcFBhc3N3b3JkUmVzZXRVc2VyKFxuICAgIG5vZGU6IFRwUGFzc3dvcmRSZXNldFVzZXJcbiAgKTogUHJvbWlzZTxUcFBhc3N3b3JkUmVzZXRVc2VyPiB7XG4gICAgY29uc3QgcHhrID0gbm9kZS5weGs/LmlkICYmIChhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShub2RlLnB4ay5pZCkpO1xuXG4gICAgY29uc3QgcmV0ID0ge1xuICAgICAgLi4ubm9kZSxcbiAgICB9O1xuXG4gICAgaWYgKHB4ayAmJiBub2RlLmFwcHJvdmFscykge1xuICAgICAgcmV0LmFwcHJvdmFscyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBub2RlLmFwcHJvdmFscy5tYXAoKGFwcHJvdmFsKSA9PlxuICAgICAgICAgIHRoaXMucHJvY2Vzc1RwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZhbE5vZGUoYXBwcm92YWwsIHB4aylcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmFsTm9kZShcbiAgICBhcHByb3ZhbDogVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmFsTm9kZSxcbiAgICBweGs6IEtleVxuICApIHtcbiAgICBjb25zdCByZXQgPSB7XG4gICAgICAuLi5hcHByb3ZhbCxcbiAgICB9O1xuXG4gICAgaWYgKGFwcHJvdmFsLnJlY2VpdmVyQ2lwaGVyKSB7XG4gICAgICByZXQucmVjZWl2ZXJDaXBoZXJDbGVhckpzb24gPSB0aGlzLmtleUdyYXBoLmRlY3J5cHRGcm9tU3RyaW5nKFxuICAgICAgICBweGssXG4gICAgICAgIGFwcHJvdmFsLnJlY2VpdmVyQ2lwaGVyXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcHByb3ZhbC5yZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleSkge1xuICAgICAgcmV0LnJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Q2xlYXJKc29uID1cbiAgICAgICAgYXdhaXQgdGhpcy5rZXlHcmFwaC5kZWNyeXB0RnJvbVN0cmluZyhcbiAgICAgICAgICBweGssXG4gICAgICAgICAgYXBwcm92YWwucmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIG1ha2VUcFBhc3N3b3JkUmVzZXROb2RlUHJvY2Vzc29yKCkge1xuICAgIHJldHVybiBhc3luYyAoe1xuICAgICAgZmllbGQsXG4gICAgfTogUHJvY2Vzc29yQ2FsbGJhY2tQYXJhbXMpOiBQcm9taXNlPFRwUGFzc3dvcmRSZXNldE5vZGU+ID0+IHtcbiAgICAgIGNvbnN0IHJldCA9IHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICB9O1xuXG4gICAgICBpZiAoZmllbGQuYXNzZW1ibHkpIHtcbiAgICAgICAgaWYgKGZpZWxkLmFwcGxpZWQgPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBLY0JhZFJlcXVlc3RFeGNlcHRpb24oXG4gICAgICAgICAgICAnSWYgeW91IHJlcXVlc3QgZm9yIGZpZWxkIFwiYXNzZW1ibHlcIiBpbiB0aGUgVHBQYXNzd29yZFJlc2V0Tm9kZSwgdGhlbiB5b3UgbXVzdCBhbHNvIHJlcXVlc3QgdGhlIFwiYXBwbGllZFwiIGZpZWxkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXQuYXNzZW1ibHkgPSBhd2FpdCB0aGlzLnByb2Nlc3NUcEFzc2VtYmx5Tm9kZShcbiAgICAgICAgICBmaWVsZC5hc3NlbWJseSxcbiAgICAgICAgICBmaWVsZC5hcHBsaWVkXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1RwQXNzZW1ibHlOb2RlKFxuICAgIGFzc2VtYmx5OiBUcEFzc2VtYmx5Tm9kZSxcbiAgICBhcHBsaWVkOiBib29sZWFuXG4gICk6IFByb21pc2U8VHBBc3NlbWJseU5vZGU+IHtcbiAgICAvLyBTdWJqZWN0IGtleSBpcyBlbmNyeXB0ZWQgdXNlciB0aGUgbWFzdGVyIGtleS4gU28gaWYgcmVzZXQgaGFzIGJlZW4gYXBwbGllZCwgdGhlblxuICAgIC8vIHRoZXNlIGtleXMgYXJlIG5vdCBhdmFpbGFibGUgYW55IG1vcmUuXG4gICAgY29uc3QgeyBzdWJqZWN0S2V5LCBhc3NlbWJseUtleSwgYXNzZW1ibHlDaXBoZXJEYXRhLCBzdWJBc3NlbWJsaWVzIH0gPVxuICAgICAgYXNzZW1ibHk7XG5cbiAgICBjb25zdCByZXQ6IFRwQXNzZW1ibHlOb2RlID0ge1xuICAgICAgLi4uYXNzZW1ibHksXG4gICAgICBzdWJBc3NlbWJsaWVzOiBhd2FpdCBwcm9jZXNzQ29ubmVjdGlvbihzdWJBc3NlbWJsaWVzLCAobm9kZSkgPT5cbiAgICAgICAgdGhpcy5wcm9jZXNzVHBTdWJBc3NlbWJseU5vZGUobm9kZSwgc3ViamVjdEtleS5pZCwgYXBwbGllZClcbiAgICAgICksXG4gICAgfTtcblxuICAgIGlmICghYXBwbGllZCkge1xuICAgICAgaWYgKGFzc2VtYmx5Q2lwaGVyRGF0YSkge1xuICAgICAgICByZXQuYXNzZW1ibHlDaXBoZXJEYXRhQ2xlYXJKc29uID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5kZWNyeXB0RnJvbVN0cmluZyhcbiAgICAgICAgICBhc3NlbWJseUtleS5pZCxcbiAgICAgICAgICBhc3NlbWJseUNpcGhlckRhdGFcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzVHBTdWJBc3NlbWJseU5vZGUoXG4gICAgc3ViQXNzZW1ibHk6IFRwU3ViQXNzZW1ibHlOb2RlLFxuICAgIHN1YmplY3RLZXlJZDogSUQsXG4gICAgYXBwbGllZDogYm9vbGVhblxuICApOiBQcm9taXNlPFRwU3ViQXNzZW1ibHlOb2RlPiB7XG4gICAgY29uc3QgeyBzdWJqZWN0Q2lwaGVyRGF0YSwgYXBwcm92ZXJzIH0gPSBzdWJBc3NlbWJseTtcblxuICAgIC8vIGNvbnN0IHJldDogVHBTdWJBc3NlbWJseU5vZGUgPSB7XG4gICAgLy8gICAuLi5zdWJBc3NlbWJseSxcbiAgICAvLyAgIGFwcHJvdmVyczoge1xuICAgIC8vICAgICAuLi5hcHByb3ZlcnMsXG4gICAgLy8gICAgIGVkZ2VzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAvLyAgICAgICBhcHByb3ZlcnMuZWRnZXMubWFwKGFzeW5jIChlZGdlKSA9PiAoe1xuICAgIC8vICAgICAgICAgLi4uZWRnZSxcbiAgICAvLyAgICAgICAgIG5vZGU6IGF3YWl0IHRoaXMucHJvY2Vzc1RwQXNzZW1ibHlBcHByb3Zlck5vZGUoZWRnZS5ub2RlLCBhcHBsaWVkKSxcbiAgICAvLyAgICAgICB9KSlcbiAgICAvLyAgICAgKSxcbiAgICAvLyAgIH0sXG4gICAgLy8gfTtcbiAgICBjb25zdCByZXQ6IFRwU3ViQXNzZW1ibHlOb2RlID0ge1xuICAgICAgLi4uc3ViQXNzZW1ibHksXG4gICAgICBhcHByb3ZlcnM6IGF3YWl0IHByb2Nlc3NDb25uZWN0aW9uKGFwcHJvdmVycywgKG5vZGUpID0+XG4gICAgICAgIHRoaXMucHJvY2Vzc1RwQXNzZW1ibHlBcHByb3Zlck5vZGUobm9kZSwgYXBwbGllZClcbiAgICAgICksXG4gICAgfTtcblxuICAgIGlmICghYXBwbGllZCkge1xuICAgICAgaWYgKHN1YmplY3RDaXBoZXJEYXRhKSB7XG4gICAgICAgIHJldC5zdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbiA9IGF3YWl0IHRoaXMua2V5R3JhcGguZGVjcnlwdEZyb21TdHJpbmcoXG4gICAgICAgICAgc3ViamVjdEtleUlkLFxuICAgICAgICAgIHN1YmplY3RDaXBoZXJEYXRhXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1RwQXNzZW1ibHlBcHByb3Zlck5vZGUoXG4gICAgYXBwcm92ZXI6IFRwQXNzZW1ibHlBcHByb3Zlck5vZGUsXG4gICAgX2FwcGxpZWQ6IGJvb2xlYW5cbiAgKSB7XG4gICAgcmV0dXJuIGFwcHJvdmVyO1xuICB9XG59XG4iXX0=
@@ -149,11 +149,6 @@ export var LinkTypeField;
149
149
  LinkTypeField["HARD"] = "HARD";
150
150
  LinkTypeField["SOFT"] = "SOFT";
151
151
  })(LinkTypeField || (LinkTypeField = {}));
152
- export var BillingPeriodField;
153
- (function (BillingPeriodField) {
154
- BillingPeriodField["MONTHLY"] = "MONTHLY";
155
- BillingPeriodField["ANNUAL"] = "ANNUAL";
156
- })(BillingPeriodField || (BillingPeriodField = {}));
157
152
  export var PlanStateField;
158
153
  (function (PlanStateField) {
159
154
  PlanStateField["TRIALLING"] = "TRIALLING";
@@ -161,4 +156,4 @@ export var PlanStateField;
161
156
  PlanStateField["CANCELLED"] = "CANCELLED";
162
157
  PlanStateField["EXPIRED"] = "EXPIRED";
163
158
  })(PlanStateField || (PlanStateField = {}));
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hcGkvdHlwZXMvbHItZ3JhcGhxbC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxNQUFNLFVBQVUsUUFBUSxDQUFJLFVBQXlCO0lBQ25ELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBUUQsTUFBTSxDQUFOLElBQVksZUFFWDtBQUZELFdBQVksZUFBZTtJQUN6QiwwQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBRlcsZUFBZSxLQUFmLGVBQWUsUUFFMUI7QUFNRCxNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLGdDQUFtQixDQUFBO0lBQ25CLGtDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQW1LRCxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQzNCLDhCQUFTLENBQUE7SUFDVCwwQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QjtBQUVELE1BQU0sQ0FBTixJQUFZLDBCQUdYO0FBSEQsV0FBWSwwQkFBMEI7SUFDcEMseURBQTJCLENBQUE7SUFDM0IscURBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUhXLDBCQUEwQixLQUExQiwwQkFBMEIsUUFHckM7QUErQkQsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUMxQixxQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBaUIsQ0FBQTtJQUNqQixtQ0FBZSxDQUFBO0lBQ2YsMkNBQXVCLENBQUE7SUFDdkIsaUNBQWEsQ0FBQTtJQUNiLG1DQUFlLENBQUE7QUFD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bkIsQ0FBQyxFQUhXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFHN0I7QUE4REQsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4Qix5Q0FBdUIsQ0FBQTtJQUN2QixtQ0FBaUIsQ0FBQTtJQUNqQix5Q0FBdUIsQ0FBQTtJQUN2QixxQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25uZWN0aW9uLFxuICBEYXRlVGltZSxcbiAgR2VuZXJpY1NjYWxhcixcbiAgSUQsXG4gIEpTT05PYmplY3QsXG4gIEpTT05TdHJpbmcsXG4gIExyRW1haWwsXG4gIE5vZGUsXG4gIFRpbWVTdGFtcGVkLFxufSBmcm9tICcuL2dyYXBocWwudHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFwRWRnZXM8VD4oY29ubmVjdGlvbjogQ29ubmVjdGlvbjxUPikge1xuICByZXR1cm4gY29ubmVjdGlvbi5lZGdlcy5tYXAoKGVkZ2UpID0+IGVkZ2Uubm9kZSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZXNOb2RlIHtcbiAgbXlWYXVsdD86IHN0cmluZ1tdO1xuICB0cFZhdWx0Pzogc3RyaW5nW107XG4gIHNoYXJlVmF1bHQ/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGVudW0gVXNlckRlbGV0ZVN0YXRlIHtcbiAgUkVRVUVTVEVEID0gJ1JFUVVFU1RFRCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckRlbGV0ZU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHN0YXRlPzogVXNlckRlbGV0ZVN0YXRlO1xufVxuXG5leHBvcnQgZW51bSBQbGFuU3RhdGUge1xuICBFTkFCTEVEID0gJ0VOQUJMRUQnLFxuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbk5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZGF0YT86IEpTT05TdHJpbmc7XG4gIHN0YXRlPzogUGxhblN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJQbGFuU3RyaXBlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3Vic2NyaXB0aW9uSWQ/OiBzdHJpbmc7XG4gIHByaWNlSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclBsYW5Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICB1c2VyPzogVXNlck5vZGU7XG4gIHBsYW4/OiBQbGFuTm9kZTtcbiAgcGVyaW9kRW5kPzogRGF0ZVRpbWU7XG4gIHN0cmlwZT86IFVzZXJQbGFuU3RyaXBlTm9kZTtcbiAgaXNzdWVyPzogVXNlck5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclN0cmlwZU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGN1c3RvbWVyPzogR2VuZXJpY1NjYWxhcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXNzS2V5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcGFzc0tleVBhcmFtcz86IEdlbmVyaWNTY2FsYXI7XG4gIHBhc3NJZHBQYXJhbXM/OiBHZW5lcmljU2NhbGFyO1xuICB3cmFwcGVkUGFzc0lkcFZlcmlmaWVyUHJrPzogR2VuZXJpY1NjYWxhcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXJyZW50VXNlcktleU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBhc3NLZXlzPzogUGFzc0tleU5vZGVbXTtcbiAgcGFzc0tleT86IFBhc3NLZXlOb2RlO1xuICByb290S2V5PzogS2V5Tm9kZTtcbiAgbWFzdGVyS2V5PzogS2V5Tm9kZTtcbiAgcHhrPzogS2V5Tm9kZTtcbiAgc2lnUHhrPzogS2V5Tm9kZTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBOb2RlIHR5cGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBpbnRlcmZhY2UgVXNlck5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAgdXNlcm5hbWU/OiBzdHJpbmc7XG4gIGNvbnRhY3RDYXJkcz86IENvbm5lY3Rpb248Q29udGFjdENhcmROb2RlPjtcbiAgY3VycmVudFVzZXJLZXk/OiBDdXJyZW50VXNlcktleU5vZGU7XG4gIG93bmVkQ29udGFjdENhcmQ/OiBTaGFyZWRDb250YWN0Q2FyZE5vZGU7XG4gIHJlY2VpdmVkQ29udGFjdENhcmQ/OiBTaGFyZWRDb250YWN0Q2FyZE5vZGU7XG4gIGlzQ3VycmVudFVzZXI/OiBib29sZWFuO1xuICBoYXZlVHA/OiBib29sZWFuO1xuICBzdHJpcGU/OiBVc2VyU3RyaXBlTm9kZTtcbiAgdXNlclBsYW5zPzogQ29ubmVjdGlvbjxVc2VyUGxhbk5vZGU+O1xuICB1c2VyRGVsZXRlPzogVXNlckRlbGV0ZU5vZGU7XG4gIGZlYXR1cmVzPzogRmVhdHVyZXNOb2RlO1xuICBmZWF0dXJlU3RhdGU/OiBVc2VyRmVhdHVyZVN0YXRlO1xuICBzZXNzaW9uRW5jcnlwdGlvbktleT86IHN0cmluZztcbiAgcGxhbnM/OiBJc3N1ZWRQbGFuTm9kZVtdO1xuICBwYXltZW50TWV0aG9kcz86IFBheW1lbnRNZXRob2ROb2RlW107XG4gIGJpbGxpbmdIaXN0b3J5PzogQmlsbGluZ0ZpZWxkW107XG4gIGF2YWlsYWJsZVBsYW5zPzogQXZhaWxhYmxlUGxhbkZpZWxkW107XG4gIGNvbmZpZz86IEpTT05TdHJpbmc7XG4gIGNvbmZpZ0pzb24/OiBKU09OT2JqZWN0O1xuICBkYXRlSm9pbmVkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJGZWF0dXJlU3RhdGUgZXh0ZW5kcyBUaW1lU3RhbXBlZCB7XG4gIG5vdGlmaWNhdGlvbnNMYXN0Vmlld2VkPzogRGF0ZVRpbWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljUHJvZmlsZSB7XG4gIHVzZXJJZD86IElEO1xuICBlbWFpbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJUaW1lIHtcbiAgdGltZXN0YW1wPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBiaz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0Q2FyZE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIG93bmVyPzogVXNlck5vZGU7XG4gIHB1YmxpY0RhdGFTaWc/OiBzdHJpbmc7XG4gIHB1YmxpY1NlYXJjaGFibGVTaWc/OiBzdHJpbmc7XG4gIHNpZ1B4az86IEtleU5vZGU7XG4gIGRlZmF1bHRGcm9tPzogRGF0ZVRpbWU7XG4gIHB1YmxpY0RhdGE/OiBzdHJpbmc7XG4gIHB1YmxpY1NlYXJjaGFibGU/OiBzdHJpbmc7XG4gIGNpcGhlckRhdGE/OiBzdHJpbmc7XG4gIGNpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBrZXk/OiBLZXlOb2RlO1xuICBwbGFpbkRhdGE/OiBzdHJpbmc7XG4gIHBsYWluRGF0YVNpZz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3NDb250cm9sbGVkUmVzb3VyY2Uge1xuICBhY2Nlc3NSb2xlPzogQWNjZXNzUm9sZUNob2ljZTtcbiAgcGVybWlzc2lvbnM/OiBQZXJtaXNzaW9uQ2hvaWNlW107XG4gIHRwQWNjZXNzUm9sZXM/OiBBY2Nlc3NSb2xlW107XG4gIGFsbEFjY2Vzc1JvbGVzPzogQWxsQWNjZXNzUm9sZVtdO1xuICBjb25maWRlbnRpYWxpdHk/OiBDb25maWRlbnRpYWxSZXNvdXJjZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RvcnlOb2RlXG4gIGV4dGVuZHMgTm9kZSxcbiAgICBUaW1lU3RhbXBlZCxcbiAgICBBY2Nlc3NDb250cm9sbGVkUmVzb3VyY2Uge1xuICBwbGFpbk1ldGE/OiBKU09OU3RyaW5nO1xuICBwbGFpbk1ldGFKc29uPzogSlNPTk9iamVjdDtcbiAgY2lwaGVyTWV0YT86IHN0cmluZztcbiAgY2lwaGVyTWV0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIGFyY2hpdmVkPzogYm9vbGVhbjtcbiAga2V5SWQ/OiBJRDtcbiAgY2hpbGRGaWxlTGlua3M/OiBDb25uZWN0aW9uPEZpbGVMaW5rTm9kZT47XG4gIGNoaWxkRGlyZWN0b3J5TGlua3M/OiBDb25uZWN0aW9uPERpcmVjdG9yeUxpbmtOb2RlPjtcbiAgcGFyZW50RGlyZWN0b3J5TGlua3M/OiBDb25uZWN0aW9uPERpcmVjdG9yeUxpbmtOb2RlPjtcbiAgblBhcmVudERpcmVjdG9yeUxpbmtzPzogRGlyZWN0b3J5TGlua05vZGVMck5MaXN0O1xuICBuQ2hpbGREaXJlY3RvcnlMaW5rcz86IERpcmVjdG9yeUxpbmtOb2RlTHJOTGlzdDtcbiAgbkNoaWxkRmlsZUxpbmtzPzogRmlsZUxpbmtOb2RlTHJOTGlzdDtcbiAgZGVzY2VuZGFudHM/OiBEZXNjZW5kYW50cztcbiAgbG9jaz86IExvY2tGaWVsZDtcbiAgbG9ja1ZlcnNpb24/OiBzdHJpbmc7XG4gIHRwU2hhcmVkPzogQ29ubmVjdGlvbjxUcFNoYXJlZERpcmVjdG9yeU5vZGU+O1xuICBuVHBTaGFyZWQ/OiBUcFNoYXJlZERpcmVjdG9yeU5vZGVMck5MaXN0O1xuICByZW1pbmRlcj86IFJlbWluZGVyTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkLCBBY2Nlc3NDb250cm9sbGVkUmVzb3VyY2Uge1xuICBjdXJyZW50VmVyc2lvbj86IEZpbGVWZXJzaW9uTm9kZTtcbiAgYXJjaGl2ZWQ/OiBib29sZWFuO1xuICB2ZXJzaW9ucz86IENvbm5lY3Rpb248RmlsZVZlcnNpb25Ob2RlPjtcbiAga2V5SWQ/OiBJRDtcbiAgcGFyZW50RGlyZWN0b3J5TGlua3M/OiBDb25uZWN0aW9uPEZpbGVMaW5rTm9kZT47XG4gIG5QYXJlbnREaXJlY3RvcnlMaW5rcz86IEZpbGVMaW5rTm9kZUxyTkxpc3Q7XG4gIGxvY2s/OiBMb2NrRmllbGQ7XG4gIGxvY2tWZXJzaW9uPzogc3RyaW5nO1xuICB0cFNoYXJlZD86IENvbm5lY3Rpb248VHBTaGFyZWRGaWxlTm9kZT47XG4gIG5UcFNoYXJlZD86IFRwU2hhcmVkRmlsZU5vZGVMck5MaXN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdG9yeUxpbmtOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYXJlbnREaXJlY3Rvcnk/OiBEaXJlY3RvcnlOb2RlO1xuICBjaGlsZERpcmVjdG9yeT86IERpcmVjdG9yeU5vZGU7XG4gIGxpbmtUeXBlPzogTGlua1R5cGVGaWVsZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlTGlua05vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBhcmVudERpcmVjdG9yeT86IERpcmVjdG9yeU5vZGU7XG4gIGNoaWxkRmlsZT86IEZpbGVOb2RlO1xuICBsaW5rVHlwZT86IExpbmtUeXBlRmllbGQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5TGlua05vZGVMck5MaXN0IHtcbiAgbGlzdD86IERpcmVjdG9yeUxpbmtOb2RlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUxpbmtOb2RlTHJOTGlzdCB7XG4gIGxpc3Q/OiBGaWxlTGlua05vZGVbXTtcbn1cblxuZXhwb3J0IGVudW0gVHBTaGFyZVR5cGVDaG9pY2Uge1xuICBUUCA9ICdUUCcsXG4gIERFVEFDSEVEID0gJ0RFVEFDSEVEJyxcbn1cblxuZXhwb3J0IGVudW0gVHBEZXRhY2hlZFNoYXJlU3RhdGVDaG9pY2Uge1xuICBJTl9QUk9HUkVTUyA9ICdJTl9QUk9HUkVTUycsXG4gIENPTVBMRVRFRCA9ICdDT01QTEVURUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwU2hhcmVkSXRlbTxJdGVtVHlwZT4gZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGl0ZW0/OiBJdGVtVHlwZTtcbiAgdHA/OiBUcE5vZGU7XG4gIHJvbGU/OiBBY2Nlc3NSb2xlQ2hvaWNlO1xuICBpc3N1ZXI/OiBVc2VyTm9kZTtcbiAgaXNJc3N1ZXI/OiBib29sZWFuO1xuICBzdWJqZWN0PzogUHVibGljUHJvZmlsZTtcbiAgc2hhcmVUeXBlPzogVHBTaGFyZVR5cGVDaG9pY2U7XG4gIGRldGFjaGVkU2hhcmVTdGF0ZT86IFRwRGV0YWNoZWRTaGFyZVN0YXRlQ2hvaWNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwU2hhcmVkSXRlbUxyTkxpc3Q8U2hhcmVkSXRlbVR5cGU+IHtcbiAgbGlzdD86IFNoYXJlZEl0ZW1UeXBlW107XG59XG5cbmV4cG9ydCB0eXBlIFRwU2hhcmVkRGlyZWN0b3J5Tm9kZSA9IFRwU2hhcmVkSXRlbTxEaXJlY3RvcnlOb2RlPjtcbmV4cG9ydCB0eXBlIFRwU2hhcmVkRmlsZU5vZGUgPSBUcFNoYXJlZEl0ZW08RmlsZU5vZGU+O1xuXG5leHBvcnQgdHlwZSBUcFNoYXJlZERpcmVjdG9yeU5vZGVMck5MaXN0ID1cbiAgVHBTaGFyZWRJdGVtTHJOTGlzdDxUcFNoYXJlZERpcmVjdG9yeU5vZGU+O1xuZXhwb3J0IHR5cGUgVHBTaGFyZWRGaWxlTm9kZUxyTkxpc3QgPSBUcFNoYXJlZEl0ZW1Mck5MaXN0PFRwU2hhcmVkRmlsZU5vZGU+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NlbmRhbnRzIHtcbiAgZGlyZWN0b3JpZXM/OiBDb25uZWN0aW9uPERpcmVjdG9yeU5vZGU+O1xuICBmaWxlcz86IENvbm5lY3Rpb248RmlsZU5vZGU+O1xuICBkaXJlY3Rvcmllc0NvdW50PzogbnVtYmVyO1xuICBmaWxlc0NvdW50PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBBY2Nlc3NSb2xlQ2hvaWNlIHtcbiAgUkVBREVSID0gJ1JFQURFUicsXG4gIFdSSVRFUiA9ICdXUklURVInLFxuICBBRE1JTiA9ICdBRE1JTicsXG4gIENVU1RPRElBTiA9ICdDVVNUT0RJQU4nLFxuICBERU5ZID0gJ0RFTlknLFxuICBPV05FUiA9ICdPV05FUicsXG59XG5cbmV4cG9ydCBlbnVtIEFjY2Vzc1JvbGVDaG9pY2VPcmRlciB7XG4gIFJFQURFUiA9IDAsXG4gIFdSSVRFUiA9IDEsXG4gIEFETUlOID0gMixcbiAgQ1VTVE9ESUFOID0gMyxcbiAgREVOWSA9IDQsXG4gIENPTkZJREVOVElBTCA9IDUsXG4gIE9XTkVSID0gNixcbn1cblxuZXhwb3J0IGVudW0gQWNjZXNzUm9sZU1ldGhvZENob2ljZSB7XG4gIElOSEVSSVRFRCA9ICdJTkhFUklURUQnLFxuICBESVJFQ1QgPSAnRElSRUNUJyxcbn1cblxuZXhwb3J0IGVudW0gUGVybWlzc2lvbkNob2ljZSB7XG4gIENSRUFURSA9ICdDUkVBVEUnLFxuICBSRUFEID0gJ1JFQUQnLFxuICBVUERBVEUgPSAnVVBEQVRFJyxcbiAgREVMRVRFID0gJ0RFTEVURScsXG4gIFNIQVJFID0gJ1NIQVJFJyxcbiAgQVJDSElWRSA9ICdBUkNISVZFJyxcbiAgQUNDRVNTX0FSQ0hJVkVEID0gJ0FDQ0VTU19BUkNISVZFRCcsXG4gIFVOQVJDSElWRSA9ICdVTkFSQ0hJVkUnLFxuICBTRVRfQ09ORklERU5USUFMID0gJ1NFVF9DT05GSURFTlRJQUwnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZGVudGlhbFJlc291cmNlIHtcbiAgaXNDb25maWRlbnRpYWw/OiBib29sZWFuO1xuICBtZXRob2Q/OiBBY2Nlc3NSb2xlTWV0aG9kQ2hvaWNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaGVyaXRlZFJvbGUge1xuICByb2xlPzogQWNjZXNzUm9sZUNob2ljZTtcbiAgc291cmNlPzogRGlyZWN0b3J5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3NSb2xlQmFzZSB7XG4gIHJvbGU/OiBBY2Nlc3NSb2xlQ2hvaWNlO1xuICBtZXRob2Q/OiBBY2Nlc3NSb2xlTWV0aG9kQ2hvaWNlO1xuICBpbmhlcml0ZWRSb2xlPzogSW5oZXJpdGVkUm9sZTtcbiAgaXNJc3N1ZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjY2Vzc1JvbGUgZXh0ZW5kcyBBY2Nlc3NSb2xlQmFzZSB7XG4gIGlzc3Vlcj86IFVzZXJOb2RlO1xuICBzdWJqZWN0PzogVXNlck5vZGU7XG4gIHRwPzogVHBOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFsbEFjY2Vzc1JvbGUgZXh0ZW5kcyBBY2Nlc3NSb2xlQmFzZSB7XG4gIGlzc3Vlcj86IFB1YmxpY1Byb2ZpbGU7XG4gIHN1YmplY3Q/OiBQdWJsaWNQcm9maWxlO1xufVxuXG5leHBvcnQgZW51bSBGaWxlT3BlcmF0aW9uRmllbGQge1xuICBDUkVBVEUgPSAnQ1JFQVRFJyxcbiAgUkVBRCA9ICdSRUFEJyxcbiAgVVBEQVRFID0gJ1VQREFURScsXG4gIFJFVkVSVCA9ICdSRVZFUlQnLFxuICBERUxFVEUgPSAnREVMRVRFJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlVmVyc2lvbk5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGZpbGU/OiBGaWxlTm9kZTtcbiAgc3RhdGU/OiBGaWxlU3RhdGVOb2RlO1xuICBvcGVyYXRpb24/OiBGaWxlT3BlcmF0aW9uRmllbGQ7XG4gIGF1dGhvcj86IFVzZXJOb2RlO1xufVxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3RhdGVOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwbGFpbk1ldGE/OiBKU09OU3RyaW5nO1xuICBwbGFpbk1ldGFKc29uPzogSlNPTk9iamVjdDtcbiAgY2lwaGVyTWV0YT86IHN0cmluZztcbiAgY2lwaGVyTWV0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIGNvbnRlbnRSZXNvdXJjZT86IHN0cmluZztcbiAgdmVyc2lvbnM/OiBDb25uZWN0aW9uPEZpbGVWZXJzaW9uTm9kZT47XG4gIGtleUlkPzogSUQ7XG59XG5cbmV4cG9ydCBlbnVtIEtleUV4Y2hhbmdlT3RrU3RhdGUge1xuICBPVEtfSU5JVElBVEVEID0gJ09US19JTklUSUFURUQnLFxuICBPVEtfQUNDRVBURUQgPSAnT1RLX0FDQ0VQVEVEJyxcbiAgT1RLX0NPTVBMRVRFRCA9ICdPVEtfQ09NUExFVEVEJyxcbn1cblxuLy8gVGhlc2UgZmllbGRzIGFyZSBub3Qgb3B0aW9uYWwgYmVjYXVzZSB0aGV5IGFyZSBub3Qgd2l0aGluIHRoZSB1c2VyJ3MgY29udHJvbCB0byBzZWxlY3QgaW4gYSBncWwgcXVlcnkuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3RDYXJkU2hhcmVkQ2lwaGVyRGF0YSB7XG4gIC8vIFNoYXJlZCByZWFkIGFjY2VzcyBiZXR3ZWVuIGluaXRpYXRvciBhbmQgcmVzcG9uZGVyLiBCdXQgb25seSB0aGUgaW5pdGlhdG9yIGhhcyB3cml0ZSBhY2Nlc3MuXG4gIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246IEpTT05PYmplY3Q7XG59XG5cbi8qKlxuICogVGhlIGNvbnRlbnRzIG9mIHRoZSBvbmUtdGltZSBrZXkgY2lwaGVyXG4gKiBUaGVzZSBmaWVsZHMgYXJlIG5vdCBvcHRpb25hbCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB3aXRoaW4gdGhlIHVzZXIncyBjb250cm9sIHRvIHNlbGVjdCBpbiBhIGdxbCBxdWVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdEtleUNpcGhlckNsZWFySnNvbjIge1xuICAvLyBVc2VkIHRvIGNvbmZpcm0gdG8gdGhlIGluaXRpYXRvciB0aGF0IHRoZSByZXNwb25kZXIgaGFzIGFjY2VzcyB0byB0aGUgb25lLXRpbWUga2V5LlxuICBub25jZTogc3RyaW5nO1xuICAvLyBEYXRhIHNlbnQgZnJvbSBpbml0aWF0b3IgdG8gdGhlIHJlc3BvbmRlclxuICBpbml0aWF0b3I6IHtcbiAgICBvbmVUaW1lUGJrOiBSZWNvcmQ8c3RyaW5nLCBKU09OT2JqZWN0PjsgLy8gb25lLXRpbWUgcHVibGljIGVuY3J5cHRpb24ga2V5IHRoZSByZXNwb25kZXIgd2lsbCB1c2UgdG8gc2VuZCBkYXRhIGJhY2sgdG8gdGhlIGluaXRpYXRvclxuICAgIHBiazogUmVjb3JkPHN0cmluZywgSlNPTk9iamVjdD47IC8vIHB1YmxpYyBlbmNyeXB0aW9uIGtleVxuICAgIHNpZ1BiazogUmVjb3JkPHN0cmluZywgSlNPTk9iamVjdD47IC8vIHB1YmxpYyBzaWduaW5nIGtleVxuICAgIG1lc3NhZ2U/OiBKU09OT2JqZWN0O1xuICAgIGNvbnRhY3RDYXJkPzogQ29udGFjdENhcmRTaGFyZWRDaXBoZXJEYXRhO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUV4Y2hhbmdlT3RrTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBLZXlFeGNoYW5nZU90a1N0YXRlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBta1NoYXJlZEtleT86IEtleU5vZGU7XG4gIGluaXRpYXRvclNpZ1B4az86IEtleU5vZGU7XG4gIHJlc3BvbmRlclNpZ1B4az86IEtleU5vZGU7XG4gIGluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXI/OiBzdHJpbmc7XG4gIG90S2V5UGFyYW1zPzogc3RyaW5nO1xuICBvdEtleUNpcGhlcj86IHN0cmluZztcbiAgb3RLZXlDaXBoZXJDbGVhckpzb24/OiBPdEtleUNpcGhlckNsZWFySnNvbjI7XG4gIHJlc3BvbmRlclBia0NpcGhlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gS2V5RXhjaGFuZ2VTdGF0ZSB7XG4gIElOX1BST0dSRVNTID0gJ0lOX1BST0dSRVNTJyxcbiAgQ09NUExFVEVEID0gJ0NPTVBMRVRFRCcsXG4gIERFQ0xJTkVEID0gJ0RFQ0xJTkVEJyxcbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG4gIERFTEVURUQgPSAnREVMRVRFRCcsXG59XG5cbmV4cG9ydCBlbnVtIEtleUV4Y2hhbmdlTW9kZSB7XG4gIE9USyA9ICdPVEsnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUV4Y2hhbmdlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgZXhwaXJ5VGltZT86IERhdGVUaW1lO1xuICB0b2tlbj86IHN0cmluZztcbiAgdG9rZW5FeHBpcnlUaW1lPzogRGF0ZVRpbWU7XG4gIHN0YXRlPzogS2V5RXhjaGFuZ2VTdGF0ZTtcbiAgbW9kZT86IEtleUV4Y2hhbmdlTW9kZTtcbiAgaW5pdGlhdG9yPzogVXNlck5vZGU7XG4gIHJlc3BvbmRlcj86IFVzZXJOb2RlO1xuICBpbml0aWF0b3JSb290S2V5Q2lwaGVyPzogc3RyaW5nO1xuICByZXNwb25kZXJSb290S2V5Q2lwaGVyPzogc3RyaW5nO1xuICBpbml0aWF0b3JBY3Rpb25SZXF1aXJlZD86IGJvb2xlYW47XG4gIHJlc3BvbmRlckFjdGlvblJlcXVpcmVkPzogYm9vbGVhbjtcbiAgY3JlYXRlVHA/OiBib29sZWFuO1xuICBvdGs/OiBLZXlFeGNoYW5nZU90a05vZGU7XG4gIGlzSW5pdGlhdG9yPzogYm9vbGVhbjtcbiAgaXNFeHBpcmVkPzogYm9vbGVhbjtcbiAgcmVzcG9uZGVyRW1haWxBZGRyZXNzPzogTHJFbWFpbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRJdGVtcyB7XG4gIGRlc2NlbmRhbnRzOiBEZXNjZW5kYW50cztcbiAgZGlyZWN0b3JpZXM/OiBDb25uZWN0aW9uPERpcmVjdG9yeU5vZGU+O1xuICBmaWxlcz86IENvbm5lY3Rpb248RmlsZU5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZENvbnRhY3RDYXJkTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgb3duZXI/OiBVc2VyTm9kZTtcbiAgcmVjZWl2ZXI/OiBVc2VyTm9kZTtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHNoYXJlZENpcGhlckRhdGFTaWc/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckRhdGFTaWdQeGs/OiBLZXlOb2RlO1xuICBvd25lckNpcGhlckRhdGE/OiBzdHJpbmc7XG4gIG93bmVyQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIG93bmVyS2V5PzogS2V5Tm9kZTtcbiAgb3duZXJQbGFpbkRhdGE/OiBzdHJpbmc7XG4gIG93bmVyUGxhaW5EYXRhSnNvbj86IEpTT05PYmplY3Q7XG4gIG93bmVyUGxhaW5EYXRhU2lnPzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHJlY2VpdmVyQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHJlY2VpdmVyS2V5PzogS2V5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyU2hhcmVkS2V5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAga2V5RXhjaGFuZ2U/OiBLZXlFeGNoYW5nZU5vZGU7XG4gIHVzZXI/OiBVc2VyTm9kZTtcbiAgdXNlclByaz86IEtleU5vZGU7XG4gIHVzZXJTaWdQcms/OiBLZXlOb2RlO1xuICBvdGhlcj86IFVzZXJOb2RlO1xuICBvdGhlclBiaz86IEtleU5vZGU7XG4gIG90aGVyU2lnUGJrPzogS2V5Tm9kZTtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgbWtTaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBta1B4az86IEtleU5vZGU7XG4gIG1rUmVzaGFyZVJlcXVlc3RDaXBoZXI/OiBzdHJpbmc7XG4gIG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyPzogc3RyaW5nO1xuICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgbWtSZXNoYXJlUmVzcG9uc2VDaXBoZXJDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBta1Jlc2hhcmVSZXF1ZXN0U2VudD86IGJvb2xlYW47XG4gIG1rUmVzaGFyZVJlc3BvbnNlU2VudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudFVzZXJTaGFyZWRLZXlOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICB1c2VyPzogVXNlck5vZGU7XG4gIG90aGVyPzogVXNlck5vZGU7XG4gIHVzZXJTaGFyZWRLZXk/OiBVc2VyU2hhcmVkS2V5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHVzZXI/OiBVc2VyTm9kZTtcbiAgb3RoZXI/OiBVc2VyTm9kZTtcbiAgY3VycmVudFVzZXJTaGFyZWRLZXk/OiBDdXJyZW50VXNlclNoYXJlZEtleU5vZGU7XG4gIGlzQ29tcGxldGVkPzogYm9vbGVhbjtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ29udGFjdENhcmQ/OiBTaGFyZWRDb250YWN0Q2FyZE5vZGU7XG4gIG15Q29udGFjdENhcmQ/OiBTaGFyZWRDb250YWN0Q2FyZE5vZGU7XG4gIG15SXRlbXM/OiBTaGFyZWRJdGVtcztcbiAgdGhlaXJJdGVtcz86IFNoYXJlZEl0ZW1zO1xuICBteVNjZW5hcmlvcz86IENvbm5lY3Rpb248U2NlbmFyaW9Ob2RlPjtcbiAgc2hhcmVkU2NlbmFyaW9zPzogQ29ubmVjdGlvbjxTaGFyZWRTY2VuYXJpb05vZGU+O1xufVxuXG5leHBvcnQgZW51bSBUcEFzc2VtYmx5U3RhdGUge1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbiAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxuICBFWFBJUkVEID0gJ0VYUElSRUQnLFxuICBDQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJyxcbiAgUkVTRVQgPSAnUkVTRVQnLFxufVxuXG5leHBvcnQgZW51bSBUcENsYWltU3RhdGUge1xuICBDTEFJTUVEID0gJ0NMQUlNRUQnLFxuICBBUFBST1ZFRCA9ICdBUFBST1ZFRCcsXG4gIFJFSkVDVEVEID0gJ1JFSkVDVEVEJyxcbiAgRVhQSVJFRCA9ICdFWFBJUkVEJyxcbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG4gIFJFU0VUID0gJ1JFU0VUJyxcbn1cblxuZXhwb3J0IGVudW0gVHBDbGFpbUFwcHJvdmVyU3RhdGUge1xuICBDTEFJTUVEID0gJ0NMQUlNRUQnLFxuICBBUFBST1ZFRCA9ICdBUFBST1ZFRCcsXG4gIFJFSkVDVEVEID0gJ1JFSkVDVEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRBcHByb3ZhbCBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgYXBwcm92ZXJFbWFpbD86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXI/OiBzdHJpbmc7XG4gIHJlY2VpdmVyQ2lwaGVyQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk/OiBzdHJpbmc7XG4gIHJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Q2xlYXJKc29uPzogSlNPTk9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRVc2VyQXBwcm92YWxOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICByZWNlaXZlckNpcGhlcj86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleT86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBhcHByb3ZlckVtYWlsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZlciB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBzdGF0ZT86IFRwQ2xhaW1BcHByb3ZlclN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFVzZXJTdWJBc3NlbWJseSB7XG4gIHNpbmdsZVJlamVjdD86IGJvb2xlYW47XG4gIHF1b3J1bT86IG51bWJlcjtcbiAgYXBwcm92ZXJzPzogVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0VXNlckFzc2VtYmx5IHtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBzdWJBc3NlbWJsaWVzPzogVHBQYXNzd29yZFJlc2V0VXNlclN1YkFzc2VtYmx5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0VXNlck5vZGUge1xuICB1c2VybmFtZT86IHN0cmluZztcbiAgcmVzZXRVc2VybmFtZT86IHN0cmluZztcbiAgc3RhdGU/OiBUcENsYWltU3RhdGU7XG4gIHBhc3NLZXk/OiBQYXNzS2V5Tm9kZTtcbiAgbWFzdGVyS2V5PzogS2V5Tm9kZTtcbiAgcHhrPzogS2V5Tm9kZTtcbiAgc2Vzc2lvbkVuY3J5cHRpb25LZXk/OiBzdHJpbmc7XG4gIGFwcHJvdmFscz86IFRwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZhbE5vZGVbXTtcbiAgYXNzZW1ibHlDaXBoZXJEYXRhPzogc3RyaW5nO1xuICB3cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclByaz86IHN0cmluZztcbiAgYXNzZW1ibHk/OiBUcFBhc3N3b3JkUmVzZXRVc2VyQXNzZW1ibHk7XG4gIHJlcXVlc3RBZ2FpbkFmdGVyPzogRGF0ZVRpbWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgYXNzZW1ibHk/OiBUcEFzc2VtYmx5Tm9kZTtcbiAgcmVxdWVzdD86IFRwUGFzc3dvcmRSZXNldFJlcXVlc3ROb2RlO1xuICBhcHBsaWVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBUcENsYWltU3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBBc3NlbWJseU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGlkPzogSUQ7XG4gIHNpbmdsZVJlamVjdD86IGJvb2xlYW47XG4gIHF1b3J1bT86IG51bWJlcjtcbiAgY2FuTWVldFF1b3J1bT86IGJvb2xlYW47XG4gIHN1YmplY3RLZXk/OiBLZXlOb2RlO1xuICBzdWJqZWN0Q2lwaGVyRGF0YT86IHN0cmluZztcbiAgc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBhc3NlbWJseUtleT86IEtleU5vZGU7XG4gIGFzc2VtYmx5Q2lwaGVyRGF0YT86IHN0cmluZztcbiAgYXNzZW1ibHlDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgc3ViQXNzZW1ibGllcz86IENvbm5lY3Rpb248VHBTdWJBc3NlbWJseU5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwU3ViQXNzZW1ibHlOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzaW5nbGVSZWplY3Q/OiBib29sZWFuO1xuICBxdW9ydW0/OiBudW1iZXI7XG4gIHN1YmplY3RDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBzdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbj86IHN0cmluZztcbiAgYXBwcm92ZXJzPzogQ29ubmVjdGlvbjxUcEFzc2VtYmx5QXBwcm92ZXJOb2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcEFzc2VtYmx5QXBwcm92ZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzaGFyZWRDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICB0cD86IFRwTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRUcFBhc3N3b3JkUmVzZXROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBhc3NlbWJseT86IFNoYXJlZFRwQXNzZW1ibHlOb2RlO1xuICB0cD86IFRwTm9kZTtcbiAgc2hhcmVkUmVxdWVzdD86IFNoYXJlZFRwUGFzc3dvcmRSZXNldFJlcXVlc3ROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwQXNzZW1ibHlOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBhc0FwcHJvdmVycz86IENvbm5lY3Rpb248VHBBc3NlbWJseUFzQXBwcm92ZXJOb2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcEFzc2VtYmx5QXNBcHByb3Zlck5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNoYXJlZENpcGhlckRhdGE/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBQYXNzd29yZFJlc2V0UmVxdWVzdE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGNsYWltPzogU2hhcmVkVHBDbGFpbU5vZGU7XG4gIHB4az86IEtleU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBDbGFpbU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHN0YXRlPzogVHBDbGFpbVN0YXRlO1xuICBhc0NsYWltQXBwcm92ZXJzPzogQ29ubmVjdGlvbjxTaGFyZWRUcENsYWltQXBwcm92ZXJOb2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRUcENsYWltQXBwcm92ZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdGF0ZT86IFRwQ2xhaW1BcHByb3ZlclN0YXRlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGE/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHNoYXJlZENpcGhlclBhcnRpYWxBc3NlbWJseUtleT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Q2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgcmVjZWl2ZXJBcHByb3ZhbHM/OiBDb25uZWN0aW9uPFNoYXJlZFRwQ2xhaW1SZWNlaXZlckFwcHJvdmFsTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBDbGFpbVJlY2VpdmVyQXBwcm92YWxOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBweGs/OiBLZXlOb2RlO1xufVxuXG5leHBvcnQgZW51bSBMb2NrU3RhdGUge1xuICBVTkxPQ0tFRCA9ICdVTkxPQ0tFRCcsXG4gIE1VVEVYX0xPQ0tFRCA9ICdNVVRFWF9MT0NLRUQnLFxufVxuXG5leHBvcnQgZW51bSBTY2VuYXJpb1N0YXRlIHtcbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxuICBFTkFCTEVEID0gJ0VOQUJMRUQnLFxuICBDTEFJTUVEID0gJ0NMQUlNRUQnLFxuICBBUFBST1ZFRCA9ICdBUFBST1ZFRCcsXG59XG5cbmV4cG9ydCBlbnVtIENsYWltU3RhdGUge1xuICBDTEFJTUVEID0gJ0NMQUlNRUQnLFxuICBFWFBJUkVEID0gJ0VYUElSRUQnLFxuICBBUFBST1ZFRCA9ICdBUFBST1ZFRCcsXG4gIFJFSkVDVEVEID0gJ1JFSkVDVEVEJyxcbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG4gIFJFU0VUID0gJ1JFU0VUJyxcbn1cblxuZXhwb3J0IGVudW0gQ2xhaW1BcHByb3ZlclN0YXRlIHtcbiAgQ0xBSU1FRCA9ICdDTEFJTUVEJyxcbiAgQVBQUk9WRUQgPSAnQVBQUk9WRUQnLFxuICBSRUpFQ1RFRCA9ICdSRUpFQ1RFRCcsXG59XG5cbmV4cG9ydCBlbnVtIFNjZW5hcmlvTGFzdENsYWltU3RhdGUge1xuICBDTEFJTUVEID0gJ0NMQUlNRUQnLFxuICBBUFBST1ZFRCA9ICdBUFBST1ZFRCcsXG4gIFJFSkVDVEVEID0gJ1JFSkVDVEVEJyxcbiAgRVhQSVJFRCA9ICdFWFBJUkVEJyxcbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG4gIFJFU0VUID0gJ1JFU0VUJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb0xhdGVzdENsYWltIHtcbiAgc3RhdGU/OiBTY2VuYXJpb0xhc3RDbGFpbVN0YXRlO1xuICBjcmVhdGVkPzogRGF0ZVRpbWU7XG4gIGNsYWltQWdhaW5BZnRlcj86IERhdGVUaW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3ViamVjdD86IFVzZXJOb2RlO1xuICBzdWJqZWN0S2V5PzogS2V5Tm9kZTtcbiAgc3ViamVjdENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgYXNzZW1ibHk/OiBUcEFzc2VtYmx5Tm9kZTtcbiAgc3RhdGU/OiBTY2VuYXJpb1N0YXRlO1xuICBjbGFpbWFudHM/OiBDb25uZWN0aW9uPFNjZW5hcmlvQ2xhaW1hbnROb2RlPjtcbiAgcmVjZWl2ZXJzPzogQ29ubmVjdGlvbjxTY2VuYXJpb1JlY2VpdmVyTm9kZT47XG4gIGNsYWltcz86IENvbm5lY3Rpb248U2NlbmFyaW9DbGFpbU5vZGU+O1xuICBjbGFpbT86IFNjZW5hcmlvQ2xhaW1Ob2RlO1xuICBhc3NlbWJseVN0YXRlPzogU2NlbmFyaW9Bc3NlbWJseVN0YXRlO1xuICBsYXRlc3RDbGFpbT86IFNjZW5hcmlvTGF0ZXN0Q2xhaW07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9DbGFpbU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGNsYWltYW50PzogU2NlbmFyaW9DbGFpbWFudE5vZGU7XG4gIHN0YXRlPzogQ2xhaW1TdGF0ZTtcbiAgc2NlbmFyaW8/OiBTY2VuYXJpb05vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9Bc3NlbWJseVN0YXRlIHtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBzdWJBc3NlbWJseVN0YXRlcz86IFNjZW5hcmlvU3ViQXNzZW1ibHlTdGF0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvU3ViQXNzZW1ibHlTdGF0ZSB7XG4gIHNpbmdsZVJlamVjdD86IGJvb2xlYW47XG4gIHF1b3J1bT86IG51bWJlcjtcbiAgYXBwcm92ZXJTdGF0ZXM/OiBTY2VuYXJpb0Fzc2VtYmx5QXBwcm92ZXJTdGF0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvQXNzZW1ibHlBcHByb3ZlclN0YXRlIHtcbiAgc3RhdGU/OiBUcENsYWltQXBwcm92ZXJTdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb1JlY2VpdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHBiaz86IEtleU5vZGU7XG4gIHJlY2VpdmVyRGlyZWN0b3JpZXM/OiBDb25uZWN0aW9uPFNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnlOb2RlPjtcbiAgcmVjZWl2ZXJGaWxlcz86IENvbm5lY3Rpb248U2NlbmFyaW9SZWNlaXZlckZpbGVOb2RlPjtcbiAgdHA/OiBUcE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU2NlbmFyaW9SZWNlaXZlck5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBiaz86IEtleU5vZGU7XG59XG5cbmV4cG9ydCB0eXBlIFJlY2VpdmVyRGlyZWN0b3J5QWNjZXNzUm9sZSA9IEFjY2Vzc1JvbGVDaG9pY2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9SZWNlaXZlckl0ZW1Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICByZWNlaXZlcj86IFNoYXJlZFNjZW5hcmlvUmVjZWl2ZXJOb2RlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzaGFyZWRDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgYWNjZXNzUm9sZT86IFJlY2VpdmVyRGlyZWN0b3J5QWNjZXNzUm9sZTtcbiAgd3JhcHBlZEl0ZW1LZXk/OiBzdHJpbmc7XG4gIGl0ZW1LZXk/OiBLZXlOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvUmVjZWl2ZXJEaXJlY3RvcnlOb2RlXG4gIGV4dGVuZHMgU2NlbmFyaW9SZWNlaXZlckl0ZW1Ob2RlIHtcbiAgZGlyZWN0b3J5PzogRGlyZWN0b3J5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb1JlY2VpdmVyRmlsZU5vZGUgZXh0ZW5kcyBTY2VuYXJpb1JlY2VpdmVySXRlbU5vZGUge1xuICBmaWxlPzogRmlsZU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9DbGFpbWFudE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHRwPzogVHBOb2RlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzaGFyZWRDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTY2VuYXJpb05vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHN1YmplY3Q/OiBVc2VyTm9kZTtcbiAgc3RhdGU/OiBTY2VuYXJpb1N0YXRlO1xuICB0cD86IFRwTm9kZTtcbiAgYXNDbGFpbWFudD86IFNjZW5hcmlvQ2xhaW1hbnROb2RlO1xuICBhc1JlY2VpdmVyPzogU2NlbmFyaW9SZWNlaXZlck5vZGU7XG4gIGFzc2VtYmx5PzogU2hhcmVkVHBBc3NlbWJseU5vZGU7XG4gIHNoYXJlZENsYWltPzogU2hhcmVkU2NlbmFyaW9DbGFpbU5vZGU7XG4gIGFzc2VtYmx5U3RhdGU/OiBTY2VuYXJpb0Fzc2VtYmx5U3RhdGU7XG4gIGxhdGVzdENsYWltPzogU2NlbmFyaW9MYXRlc3RDbGFpbTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTY2VuYXJpb0NsYWltTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBDbGFpbVN0YXRlO1xuICBzaGFyZWRTY2VuYXJpbz86IFNoYXJlZFNjZW5hcmlvTm9kZTtcbiAgaXNDbGFpbWFudD86IGJvb2xlYW47XG4gIGFzQ2xhaW1SZWNlaXZlcj86IFNoYXJlZFNjZW5hcmlvQ2xhaW1SZWNlaXZlck5vZGU7XG4gIGNsYWltPzogU2hhcmVkVHBDbGFpbU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU2NlbmFyaW9DbGFpbUFwcHJvdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcmVjZWl2ZXJzPzogQ29ubmVjdGlvbjxTaGFyZWRTY2VuYXJpb1JlY2VpdmVyTm9kZT47XG4gIHN0YXRlPzogQ2xhaW1BcHByb3ZlclN0YXRlO1xuICBhcHByb3Zlcj86IFRwQXNzZW1ibHlBcHByb3Zlck5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU2NlbmFyaW9DbGFpbVJlY2VpdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcmVjZWl2ZWQ/OiBEYXRlVGltZTtcbiAgYXBwcm92YWxzPzogQ29ubmVjdGlvbjxTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZWRBcHByb3ZhbE5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFNjZW5hcmlvQ2xhaW1SZWNlaXZlZEFwcHJvdmFsTm9kZVxuICBleHRlbmRzIE5vZGUsXG4gICAgVGltZVN0YW1wZWQge1xuICByZWNlaXZlckNpcGhlcj86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk/OiBzdHJpbmc7XG4gIHB4az86IEtleU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcGxhaW5EYXRhPzogSlNPTlN0cmluZztcbiAgcGxhaW5NZXRhPzogSlNPTlN0cmluZztcbiAgdGltZVJlYWQ/OiBEYXRlVGltZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25NYW5hZ2VtZW50U3RhdGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGxhc3RWaWV3ZWQ/OiBEYXRlVGltZTtcbn1cblxuZXhwb3J0IGVudW0gTGlua1R5cGVGaWVsZCB7XG4gIEhBUkQgPSAnSEFSRCcsXG4gIFNPRlQgPSAnU09GVCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHNlbmRlcj86IFVzZXJOb2RlO1xuICByZWNlaXZlcj86IFVzZXJOb2RlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzZW5kZXJTaWdQYms/OiBLZXlOb2RlO1xuICBwbGFpbk1lc3NhZ2U/OiBzdHJpbmc7XG4gIHBsYWluTWVzc2FnZUpzb24/OiBzdHJpbmc7XG4gIHNpZ25lZENpcGhlck1lc3NhZ2U/OiBzdHJpbmc7XG4gIHNpZ25lZENpcGhlck1lc3NhZ2VDbGVhckpzb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9ja0ZpZWxkIHtcbiAgY3JlYXRlZD86IERhdGVUaW1lO1xuICBtb2RpZmllZD86IERhdGVUaW1lO1xuICBleHBpcnlUaW1lPzogRGF0ZVRpbWU7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIHN0YXRlPzogTG9ja1N0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlckNvbmZpZyB7XG4gIHJlbGF5Q29ubmVjdGlvbk1heExpbWl0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJsZVBsYW5GaWVsZCB7XG4gIHBsYW5OYW1lPzogc3RyaW5nO1xuICBpc3N1ZXJVaWQ/OiBzdHJpbmc7XG4gIHBsYW5VaWQ/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwcmljZU9wdGlvbnM/OiBQcmljZU9wdGlvbkZpZWxkW107XG4gIHRyaWFsPzogVHJpYWxQZXJpb2RGaWVsZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmljZU9wdGlvbkZpZWxkIHtcbiAgcHJpY2VJZD86IHN0cmluZztcbiAgcGxhbk5hbWU/OiBzdHJpbmc7XG4gIC8vIG5hbWU6IFRvIGJlIGRlcHJlY2F0ZWQsIHJlcGxhY2VkIGJ5IGJpbGxpbmdQZXJpb2QuXG4gIG5hbWU/OiBzdHJpbmc7XG4gIGJpbGxpbmdQZXJpb2Q/OiBCaWxsaW5nUGVyaW9kRmllbGQ7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBhbW91bnQ/OiBudW1iZXI7XG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xuICBpbnRlcnZhbFVuaXQ/OiBzdHJpbmc7XG4gIGludGVydmFsQ291bnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIEJpbGxpbmdQZXJpb2RGaWVsZCB7XG4gIE1PTlRITFkgPSAnTU9OVEhMWScsXG4gIEFOTlVBTCA9ICdBTk5VQUwnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyaWFsUGVyaW9kRmllbGQge1xuICB5ZWFycz86IG51bWJlcjtcbiAgbW9udGhzPzogbnVtYmVyO1xuICB3ZWVrcz86IG51bWJlcjtcbiAgZGF5cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXltZW50Q2FwdHVyZUZpZWxkIHtcbiAgc3RyaXBlSW50ZW50SWQ/OiBzdHJpbmc7XG4gIHN0cmlwZUNsaWVudFNlY3JldD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXltZW50TWV0aG9kTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgY2FyZD86IFBheW1lbnRDYXJkRmllbGQ7XG4gIGludm9pY2U/OiBQYXltZW50SW52b2ljZUZpZWxkO1xuICBpc0RlZmF1bHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBheW1lbnRDYXJkRmllbGQge1xuICBicmFuZD86IHN0cmluZztcbiAgbGFzdEZvdXJEaWdpdHM/OiBzdHJpbmc7XG4gIGV4cGlyeVllYXI/OiBudW1iZXI7XG4gIGV4cGlyeU1vbnRoPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBheW1lbnRJbnZvaWNlRmllbGQge1xuICBlbWFpbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9tb3Rpb25hbENvZGVGaWVsZCB7XG4gIGFtb3VudE9mZj86IG51bWJlcjtcbiAgY3VycmVuY3k/OiBzdHJpbmc7XG4gIHBlcmNlbnRPZmY/OiBudW1iZXI7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGR1cmF0aW9uPzogc3RyaW5nO1xuICBkdXJhdGlvbkluTW9udGhzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlcmlvZEZpZWxkIHtcbiAgc3RhcnQ/OiBEYXRlVGltZTtcbiAgZW5kPzogRGF0ZVRpbWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXNzdWVkUGxhbk5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjdXJyZW50U3RhdGVzPzogSXNzdWVkUGxhblN0YXRlTm9kZVtdO1xuICBjdXJyZW50UGVyaW9kPzogUGVyaW9kRmllbGQ7XG4gIGN1cnJlbnRQcmljZU9wdGlvbj86IFByaWNlT3B0aW9uRmllbGQ7XG4gIHVwY29taW5nSW52b2ljZT86IEJpbGxpbmdGaWVsZDtcbiAgYWx0ZXJuYXRpdmVQcmljZU9wdGlvbnM/OiBQcmljZU9wdGlvbkZpZWxkW107XG4gIHNjaGVkdWxlZFByaWNlQ2hhbmdlcz86IFByaWNlQ2hhbmdlRmllbGRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJc3N1ZWRQbGFuU3RhdGVOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwZXJpb2RTdGFydD86IERhdGVUaW1lO1xuICBwZXJpb2RFbmQ/OiBEYXRlVGltZTtcbiAgc3RhdGU/OiBQbGFuU3RhdGVGaWVsZDtcbn1cblxuZXhwb3J0IGVudW0gUGxhblN0YXRlRmllbGQge1xuICBUUklBTExJTkcgPSAnVFJJQUxMSU5HJyxcbiAgQUNUSVZFID0gJ0FDVElWRScsXG4gIENBTkNFTExFRCA9ICdDQU5DRUxMRUQnLFxuICBFWFBJUkVEID0gJ0VYUElSRUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdGaWVsZCB7XG4gIGludm9pY2VOdW1iZXI/OiBzdHJpbmc7XG4gIHRvdGFsPzogbnVtYmVyO1xuICBhbW91bnREdWU/OiBudW1iZXI7XG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xuICBkb2N1bWVudFVybD86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xuICBwZXJpb2RTdGFydD86IERhdGVUaW1lO1xuICBwZXJpb2RFbmQ/OiBEYXRlVGltZTtcbiAgZmluYWxpc2VkQXQ/OiBEYXRlVGltZTtcbiAgcGFpZEF0PzogRGF0ZVRpbWU7XG4gIHBhaWQ/OiBib29sZWFuO1xuICBuZXh0UGF5bWVudEF0dGVtcHQ/OiBEYXRlVGltZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmljZUNoYW5nZUZpZWxkIHtcbiAgcGVyaW9kU3RhcnQ/OiBEYXRlVGltZTtcbiAgcHJpY2VPcHRpb24/OiBQcmljZU9wdGlvbkZpZWxkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbWluZGVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcGxhaW4/OiBKU09OU3RyaW5nO1xuICBwbGFpbkpzb24/OiBKU09OT2JqZWN0O1xuICBmaXJzdEV2ZW50PzogRGF0ZVRpbWU7XG4gIG5vdGlmeUFoZWFkU2Vjb25kcz86IG51bWJlcjtcbiAgbm90aWZ5QXQ/OiBEYXRlVGltZTtcbiAgZGlyZWN0b3J5PzogRGlyZWN0b3J5Tm9kZTtcbn1cbiJdfQ==
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hcGkvdHlwZXMvbHItZ3JhcGhxbC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxNQUFNLFVBQVUsUUFBUSxDQUFJLFVBQXlCO0lBQ25ELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBUUQsTUFBTSxDQUFOLElBQVksZUFFWDtBQUZELFdBQVksZUFBZTtJQUN6QiwwQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBRlcsZUFBZSxLQUFmLGVBQWUsUUFFMUI7QUFNRCxNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLGdDQUFtQixDQUFBO0lBQ25CLGtDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQW1LRCxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQzNCLDhCQUFTLENBQUE7SUFDVCwwQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QjtBQUVELE1BQU0sQ0FBTixJQUFZLDBCQUdYO0FBSEQsV0FBWSwwQkFBMEI7SUFDcEMseURBQTJCLENBQUE7SUFDM0IscURBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUhXLDBCQUEwQixLQUExQiwwQkFBMEIsUUFHckM7QUErQkQsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUMxQixxQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBaUIsQ0FBQTtJQUNqQixtQ0FBZSxDQUFBO0lBQ2YsMkNBQXVCLENBQUE7SUFDdkIsaUNBQWEsQ0FBQTtJQUNiLG1DQUFlLENBQUE7QUFD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eUNBQXVCLENBQUE7SUFDdkIscUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29ubmVjdGlvbixcbiAgRGF0ZVRpbWUsXG4gIEdlbmVyaWNTY2FsYXIsXG4gIElELFxuICBKU09OT2JqZWN0LFxuICBKU09OU3RyaW5nLFxuICBMckVtYWlsLFxuICBOb2RlLFxuICBUaW1lU3RhbXBlZCxcbn0gZnJvbSAnLi9ncmFwaHFsLnR5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1hcEVkZ2VzPFQ+KGNvbm5lY3Rpb246IENvbm5lY3Rpb248VD4pIHtcbiAgcmV0dXJuIGNvbm5lY3Rpb24uZWRnZXMubWFwKChlZGdlKSA9PiBlZGdlLm5vZGUpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVzTm9kZSB7XG4gIG15VmF1bHQ/OiBzdHJpbmdbXTtcbiAgdHBWYXVsdD86IHN0cmluZ1tdO1xuICBzaGFyZVZhdWx0Pzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBlbnVtIFVzZXJEZWxldGVTdGF0ZSB7XG4gIFJFUVVFU1RFRCA9ICdSRVFVRVNURUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJEZWxldGVOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdGF0ZT86IFVzZXJEZWxldGVTdGF0ZTtcbn1cblxuZXhwb3J0IGVudW0gUGxhblN0YXRlIHtcbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsYW5Ob2RlIGV4dGVuZHMgTm9kZSB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRhdGE/OiBKU09OU3RyaW5nO1xuICBzdGF0ZT86IFBsYW5TdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyUGxhblN0cmlwZU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHN1YnNjcmlwdGlvbklkPzogc3RyaW5nO1xuICBwcmljZUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJQbGFuTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgdXNlcj86IFVzZXJOb2RlO1xuICBwbGFuPzogUGxhbk5vZGU7XG4gIHBlcmlvZEVuZD86IERhdGVUaW1lO1xuICBzdHJpcGU/OiBVc2VyUGxhblN0cmlwZU5vZGU7XG4gIGlzc3Vlcj86IFVzZXJOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJTdHJpcGVOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBjdXN0b21lcj86IEdlbmVyaWNTY2FsYXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFzc0tleU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBhc3NLZXlQYXJhbXM/OiBHZW5lcmljU2NhbGFyO1xuICBwYXNzSWRwUGFyYW1zPzogR2VuZXJpY1NjYWxhcjtcbiAgd3JhcHBlZFBhc3NJZHBWZXJpZmllclByaz86IEdlbmVyaWNTY2FsYXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudFVzZXJLZXlOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYXNzS2V5cz86IFBhc3NLZXlOb2RlW107XG4gIHBhc3NLZXk/OiBQYXNzS2V5Tm9kZTtcbiAgcm9vdEtleT86IEtleU5vZGU7XG4gIG1hc3RlcktleT86IEtleU5vZGU7XG4gIHB4az86IEtleU5vZGU7XG4gIHNpZ1B4az86IEtleU5vZGU7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTm9kZSB0eXBlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIHVzZXJuYW1lPzogc3RyaW5nO1xuICBjb250YWN0Q2FyZHM/OiBDb25uZWN0aW9uPENvbnRhY3RDYXJkTm9kZT47XG4gIGN1cnJlbnRVc2VyS2V5PzogQ3VycmVudFVzZXJLZXlOb2RlO1xuICBvd25lZENvbnRhY3RDYXJkPzogU2hhcmVkQ29udGFjdENhcmROb2RlO1xuICByZWNlaXZlZENvbnRhY3RDYXJkPzogU2hhcmVkQ29udGFjdENhcmROb2RlO1xuICBpc0N1cnJlbnRVc2VyPzogYm9vbGVhbjtcbiAgaGF2ZVRwPzogYm9vbGVhbjtcbiAgc3RyaXBlPzogVXNlclN0cmlwZU5vZGU7XG4gIHVzZXJQbGFucz86IENvbm5lY3Rpb248VXNlclBsYW5Ob2RlPjtcbiAgdXNlckRlbGV0ZT86IFVzZXJEZWxldGVOb2RlO1xuICBmZWF0dXJlcz86IEZlYXR1cmVzTm9kZTtcbiAgZmVhdHVyZVN0YXRlPzogVXNlckZlYXR1cmVTdGF0ZTtcbiAgc2Vzc2lvbkVuY3J5cHRpb25LZXk/OiBzdHJpbmc7XG4gIHBsYW5zPzogSXNzdWVkUGxhbk5vZGVbXTtcbiAgcGF5bWVudE1ldGhvZHM/OiBQYXltZW50TWV0aG9kTm9kZVtdO1xuICBiaWxsaW5nSGlzdG9yeT86IEJpbGxpbmdGaWVsZFtdO1xuICBhdmFpbGFibGVQbGFucz86IEF2YWlsYWJsZVBsYW5GaWVsZFtdO1xuICBjb25maWc/OiBKU09OU3RyaW5nO1xuICBjb25maWdKc29uPzogSlNPTk9iamVjdDtcbiAgZGF0ZUpvaW5lZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyRmVhdHVyZVN0YXRlIGV4dGVuZHMgVGltZVN0YW1wZWQge1xuICBub3RpZmljYXRpb25zTGFzdFZpZXdlZD86IERhdGVUaW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1Byb2ZpbGUge1xuICB1c2VySWQ/OiBJRDtcbiAgZW1haWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyVGltZSB7XG4gIHRpbWVzdGFtcD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXlOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYms/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENhcmROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBvd25lcj86IFVzZXJOb2RlO1xuICBwdWJsaWNEYXRhU2lnPzogc3RyaW5nO1xuICBwdWJsaWNTZWFyY2hhYmxlU2lnPzogc3RyaW5nO1xuICBzaWdQeGs/OiBLZXlOb2RlO1xuICBkZWZhdWx0RnJvbT86IERhdGVUaW1lO1xuICBwdWJsaWNEYXRhPzogc3RyaW5nO1xuICBwdWJsaWNTZWFyY2hhYmxlPzogc3RyaW5nO1xuICBjaXBoZXJEYXRhPzogc3RyaW5nO1xuICBjaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAga2V5PzogS2V5Tm9kZTtcbiAgcGxhaW5EYXRhPzogc3RyaW5nO1xuICBwbGFpbkRhdGFTaWc/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzQ29udHJvbGxlZFJlc291cmNlIHtcbiAgYWNjZXNzUm9sZT86IEFjY2Vzc1JvbGVDaG9pY2U7XG4gIHBlcm1pc3Npb25zPzogUGVybWlzc2lvbkNob2ljZVtdO1xuICB0cEFjY2Vzc1JvbGVzPzogQWNjZXNzUm9sZVtdO1xuICBhbGxBY2Nlc3NSb2xlcz86IEFsbEFjY2Vzc1JvbGVbXTtcbiAgY29uZmlkZW50aWFsaXR5PzogQ29uZmlkZW50aWFsUmVzb3VyY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlyZWN0b3J5Tm9kZVxuICBleHRlbmRzIE5vZGUsXG4gICAgVGltZVN0YW1wZWQsXG4gICAgQWNjZXNzQ29udHJvbGxlZFJlc291cmNlIHtcbiAgcGxhaW5NZXRhPzogSlNPTlN0cmluZztcbiAgcGxhaW5NZXRhSnNvbj86IEpTT05PYmplY3Q7XG4gIGNpcGhlck1ldGE/OiBzdHJpbmc7XG4gIGNpcGhlck1ldGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBhcmNoaXZlZD86IGJvb2xlYW47XG4gIGtleUlkPzogSUQ7XG4gIGNoaWxkRmlsZUxpbmtzPzogQ29ubmVjdGlvbjxGaWxlTGlua05vZGU+O1xuICBjaGlsZERpcmVjdG9yeUxpbmtzPzogQ29ubmVjdGlvbjxEaXJlY3RvcnlMaW5rTm9kZT47XG4gIHBhcmVudERpcmVjdG9yeUxpbmtzPzogQ29ubmVjdGlvbjxEaXJlY3RvcnlMaW5rTm9kZT47XG4gIG5QYXJlbnREaXJlY3RvcnlMaW5rcz86IERpcmVjdG9yeUxpbmtOb2RlTHJOTGlzdDtcbiAgbkNoaWxkRGlyZWN0b3J5TGlua3M/OiBEaXJlY3RvcnlMaW5rTm9kZUxyTkxpc3Q7XG4gIG5DaGlsZEZpbGVMaW5rcz86IEZpbGVMaW5rTm9kZUxyTkxpc3Q7XG4gIGRlc2NlbmRhbnRzPzogRGVzY2VuZGFudHM7XG4gIGxvY2s/OiBMb2NrRmllbGQ7XG4gIGxvY2tWZXJzaW9uPzogc3RyaW5nO1xuICB0cFNoYXJlZD86IENvbm5lY3Rpb248VHBTaGFyZWREaXJlY3RvcnlOb2RlPjtcbiAgblRwU2hhcmVkPzogVHBTaGFyZWREaXJlY3RvcnlOb2RlTHJOTGlzdDtcbiAgcmVtaW5kZXI/OiBSZW1pbmRlck5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCwgQWNjZXNzQ29udHJvbGxlZFJlc291cmNlIHtcbiAgY3VycmVudFZlcnNpb24/OiBGaWxlVmVyc2lvbk5vZGU7XG4gIGFyY2hpdmVkPzogYm9vbGVhbjtcbiAgdmVyc2lvbnM/OiBDb25uZWN0aW9uPEZpbGVWZXJzaW9uTm9kZT47XG4gIGtleUlkPzogSUQ7XG4gIHBhcmVudERpcmVjdG9yeUxpbmtzPzogQ29ubmVjdGlvbjxGaWxlTGlua05vZGU+O1xuICBuUGFyZW50RGlyZWN0b3J5TGlua3M/OiBGaWxlTGlua05vZGVMck5MaXN0O1xuICBsb2NrPzogTG9ja0ZpZWxkO1xuICBsb2NrVmVyc2lvbj86IHN0cmluZztcbiAgdHBTaGFyZWQ/OiBDb25uZWN0aW9uPFRwU2hhcmVkRmlsZU5vZGU+O1xuICBuVHBTaGFyZWQ/OiBUcFNoYXJlZEZpbGVOb2RlTHJOTGlzdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RvcnlMaW5rTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcGFyZW50RGlyZWN0b3J5PzogRGlyZWN0b3J5Tm9kZTtcbiAgY2hpbGREaXJlY3Rvcnk/OiBEaXJlY3RvcnlOb2RlO1xuICBsaW5rVHlwZT86IExpbmtUeXBlRmllbGQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUxpbmtOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwYXJlbnREaXJlY3Rvcnk/OiBEaXJlY3RvcnlOb2RlO1xuICBjaGlsZEZpbGU/OiBGaWxlTm9kZTtcbiAgbGlua1R5cGU/OiBMaW5rVHlwZUZpZWxkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdG9yeUxpbmtOb2RlTHJOTGlzdCB7XG4gIGxpc3Q/OiBEaXJlY3RvcnlMaW5rTm9kZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVMaW5rTm9kZUxyTkxpc3Qge1xuICBsaXN0PzogRmlsZUxpbmtOb2RlW107XG59XG5cbmV4cG9ydCBlbnVtIFRwU2hhcmVUeXBlQ2hvaWNlIHtcbiAgVFAgPSAnVFAnLFxuICBERVRBQ0hFRCA9ICdERVRBQ0hFRCcsXG59XG5cbmV4cG9ydCBlbnVtIFRwRGV0YWNoZWRTaGFyZVN0YXRlQ2hvaWNlIHtcbiAgSU5fUFJPR1JFU1MgPSAnSU5fUFJPR1JFU1MnLFxuICBDT01QTEVURUQgPSAnQ09NUExFVEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFNoYXJlZEl0ZW08SXRlbVR5cGU+IGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBpdGVtPzogSXRlbVR5cGU7XG4gIHRwPzogVHBOb2RlO1xuICByb2xlPzogQWNjZXNzUm9sZUNob2ljZTtcbiAgaXNzdWVyPzogUHVibGljUHJvZmlsZTtcbiAgaXNJc3N1ZXI/OiBib29sZWFuO1xuICBzdWJqZWN0PzogUHVibGljUHJvZmlsZTtcbiAgc2hhcmVUeXBlPzogVHBTaGFyZVR5cGVDaG9pY2U7XG4gIGRldGFjaGVkU2hhcmVTdGF0ZT86IFRwRGV0YWNoZWRTaGFyZVN0YXRlQ2hvaWNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwU2hhcmVkSXRlbUxyTkxpc3Q8U2hhcmVkSXRlbVR5cGU+IHtcbiAgbGlzdD86IFNoYXJlZEl0ZW1UeXBlW107XG59XG5cbmV4cG9ydCB0eXBlIFRwU2hhcmVkRGlyZWN0b3J5Tm9kZSA9IFRwU2hhcmVkSXRlbTxEaXJlY3RvcnlOb2RlPjtcbmV4cG9ydCB0eXBlIFRwU2hhcmVkRmlsZU5vZGUgPSBUcFNoYXJlZEl0ZW08RmlsZU5vZGU+O1xuXG5leHBvcnQgdHlwZSBUcFNoYXJlZERpcmVjdG9yeU5vZGVMck5MaXN0ID1cbiAgVHBTaGFyZWRJdGVtTHJOTGlzdDxUcFNoYXJlZERpcmVjdG9yeU5vZGU+O1xuZXhwb3J0IHR5cGUgVHBTaGFyZWRGaWxlTm9kZUxyTkxpc3QgPSBUcFNoYXJlZEl0ZW1Mck5MaXN0PFRwU2hhcmVkRmlsZU5vZGU+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2NlbmRhbnRzIHtcbiAgZGlyZWN0b3JpZXM/OiBDb25uZWN0aW9uPERpcmVjdG9yeU5vZGU+O1xuICBmaWxlcz86IENvbm5lY3Rpb248RmlsZU5vZGU+O1xuICBkaXJlY3Rvcmllc0NvdW50PzogbnVtYmVyO1xuICBmaWxlc0NvdW50PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBBY2Nlc3NSb2xlQ2hvaWNlIHtcbiAgUkVBREVSID0gJ1JFQURFUicsXG4gIFdSSVRFUiA9ICdXUklURVInLFxuICBBRE1JTiA9ICdBRE1JTicsXG4gIENVU1RPRElBTiA9ICdDVVNUT0RJQU4nLFxuICBERU5ZID0gJ0RFTlknLFxuICBPV05FUiA9ICdPV05FUicsXG59XG5cbmV4cG9ydCBlbnVtIEFjY2Vzc1JvbGVDaG9pY2VPcmRlciB7XG4gIFJFQURFUiA9IDAsXG4gIFdSSVRFUiA9IDEsXG4gIEFETUlOID0gMixcbiAgQ1VTVE9ESUFOID0gMyxcbiAgREVOWSA9IDQsXG4gIENPTkZJREVOVElBTCA9IDUsXG4gIE9XTkVSID0gNixcbn1cblxuZXhwb3J0IGVudW0gQWNjZXNzUm9sZU1ldGhvZENob2ljZSB7XG4gIElOSEVSSVRFRCA9ICdJTkhFUklURUQnLFxuICBESVJFQ1QgPSAnRElSRUNUJyxcbn1cblxuZXhwb3J0IGVudW0gUGVybWlzc2lvbkNob2ljZSB7XG4gIENSRUFURSA9ICdDUkVBVEUnLFxuICBSRUFEID0gJ1JFQUQnLFxuICBVUERBVEUgPSAnVVBEQVRFJyxcbiAgREVMRVRFID0gJ0RFTEVURScsXG4gIFNIQVJFID0gJ1NIQVJFJyxcbiAgQVJDSElWRSA9ICdBUkNISVZFJyxcbiAgQUNDRVNTX0FSQ0hJVkVEID0gJ0FDQ0VTU19BUkNISVZFRCcsXG4gIFVOQVJDSElWRSA9ICdVTkFSQ0hJVkUnLFxuICBTRVRfQ09ORklERU5USUFMID0gJ1NFVF9DT05GSURFTlRJQUwnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZGVudGlhbFJlc291cmNlIHtcbiAgaXNDb25maWRlbnRpYWw/OiBib29sZWFuO1xuICBtZXRob2Q/OiBBY2Nlc3NSb2xlTWV0aG9kQ2hvaWNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaGVyaXRlZFJvbGUge1xuICByb2xlPzogQWNjZXNzUm9sZUNob2ljZTtcbiAgc291cmNlPzogRGlyZWN0b3J5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3NSb2xlQmFzZSB7XG4gIHJvbGU/OiBBY2Nlc3NSb2xlQ2hvaWNlO1xuICBtZXRob2Q/OiBBY2Nlc3NSb2xlTWV0aG9kQ2hvaWNlO1xuICBpbmhlcml0ZWRSb2xlPzogSW5oZXJpdGVkUm9sZTtcbiAgaXNJc3N1ZXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjY2Vzc1JvbGUgZXh0ZW5kcyBBY2Nlc3NSb2xlQmFzZSB7XG4gIGlzc3Vlcj86IFVzZXJOb2RlO1xuICBzdWJqZWN0PzogVXNlck5vZGU7XG4gIHRwPzogVHBOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFsbEFjY2Vzc1JvbGUgZXh0ZW5kcyBBY2Nlc3NSb2xlQmFzZSB7XG4gIGlzc3Vlcj86IFB1YmxpY1Byb2ZpbGU7XG4gIHN1YmplY3Q/OiBQdWJsaWNQcm9maWxlO1xufVxuXG5leHBvcnQgZW51bSBGaWxlT3BlcmF0aW9uRmllbGQge1xuICBDUkVBVEUgPSAnQ1JFQVRFJyxcbiAgUkVBRCA9ICdSRUFEJyxcbiAgVVBEQVRFID0gJ1VQREFURScsXG4gIFJFVkVSVCA9ICdSRVZFUlQnLFxuICBERUxFVEUgPSAnREVMRVRFJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlVmVyc2lvbk5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGZpbGU/OiBGaWxlTm9kZTtcbiAgc3RhdGU/OiBGaWxlU3RhdGVOb2RlO1xuICBvcGVyYXRpb24/OiBGaWxlT3BlcmF0aW9uRmllbGQ7XG4gIGF1dGhvcj86IFVzZXJOb2RlO1xufVxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3RhdGVOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwbGFpbk1ldGE/OiBKU09OU3RyaW5nO1xuICBwbGFpbk1ldGFKc29uPzogSlNPTk9iamVjdDtcbiAgY2lwaGVyTWV0YT86IHN0cmluZztcbiAgY2lwaGVyTWV0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIGNvbnRlbnRSZXNvdXJjZT86IHN0cmluZztcbiAgdmVyc2lvbnM/OiBDb25uZWN0aW9uPEZpbGVWZXJzaW9uTm9kZT47XG4gIGtleUlkPzogSUQ7XG59XG5cbmV4cG9ydCBlbnVtIEtleUV4Y2hhbmdlT3RrU3RhdGUge1xuICBPVEtfSU5JVElBVEVEID0gJ09US19JTklUSUFURUQnLFxuICBPVEtfQUNDRVBURUQgPSAnT1RLX0FDQ0VQVEVEJyxcbiAgT1RLX0NPTVBMRVRFRCA9ICdPVEtfQ09NUExFVEVEJyxcbn1cblxuLy8gVGhlc2UgZmllbGRzIGFyZSBub3Qgb3B0aW9uYWwgYmVjYXVzZSB0aGV5IGFyZSBub3Qgd2l0aGluIHRoZSB1c2VyJ3MgY29udHJvbCB0byBzZWxlY3QgaW4gYSBncWwgcXVlcnkuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3RDYXJkU2hhcmVkQ2lwaGVyRGF0YSB7XG4gIC8vIFNoYXJlZCByZWFkIGFjY2VzcyBiZXR3ZWVuIGluaXRpYXRvciBhbmQgcmVzcG9uZGVyLiBCdXQgb25seSB0aGUgaW5pdGlhdG9yIGhhcyB3cml0ZSBhY2Nlc3MuXG4gIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb246IEpTT05PYmplY3Q7XG59XG5cbi8qKlxuICogVGhlIGNvbnRlbnRzIG9mIHRoZSBvbmUtdGltZSBrZXkgY2lwaGVyXG4gKiBUaGVzZSBmaWVsZHMgYXJlIG5vdCBvcHRpb25hbCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB3aXRoaW4gdGhlIHVzZXIncyBjb250cm9sIHRvIHNlbGVjdCBpbiBhIGdxbCBxdWVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdEtleUNpcGhlckNsZWFySnNvbjIge1xuICAvLyBVc2VkIHRvIGNvbmZpcm0gdG8gdGhlIGluaXRpYXRvciB0aGF0IHRoZSByZXNwb25kZXIgaGFzIGFjY2VzcyB0byB0aGUgb25lLXRpbWUga2V5LlxuICBub25jZTogc3RyaW5nO1xuICAvLyBEYXRhIHNlbnQgZnJvbSBpbml0aWF0b3IgdG8gdGhlIHJlc3BvbmRlclxuICBpbml0aWF0b3I6IHtcbiAgICBvbmVUaW1lUGJrOiBSZWNvcmQ8c3RyaW5nLCBKU09OT2JqZWN0PjsgLy8gb25lLXRpbWUgcHVibGljIGVuY3J5cHRpb24ga2V5IHRoZSByZXNwb25kZXIgd2lsbCB1c2UgdG8gc2VuZCBkYXRhIGJhY2sgdG8gdGhlIGluaXRpYXRvclxuICAgIHBiazogUmVjb3JkPHN0cmluZywgSlNPTk9iamVjdD47IC8vIHB1YmxpYyBlbmNyeXB0aW9uIGtleVxuICAgIHNpZ1BiazogUmVjb3JkPHN0cmluZywgSlNPTk9iamVjdD47IC8vIHB1YmxpYyBzaWduaW5nIGtleVxuICAgIG1lc3NhZ2U/OiBKU09OT2JqZWN0O1xuICAgIGNvbnRhY3RDYXJkPzogQ29udGFjdENhcmRTaGFyZWRDaXBoZXJEYXRhO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUV4Y2hhbmdlT3RrTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBLZXlFeGNoYW5nZU90a1N0YXRlO1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBta1NoYXJlZEtleT86IEtleU5vZGU7XG4gIGluaXRpYXRvclNpZ1B4az86IEtleU5vZGU7XG4gIHJlc3BvbmRlclNpZ1B4az86IEtleU5vZGU7XG4gIGluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXI/OiBzdHJpbmc7XG4gIG90S2V5UGFyYW1zPzogc3RyaW5nO1xuICBvdEtleUNpcGhlcj86IHN0cmluZztcbiAgb3RLZXlDaXBoZXJDbGVhckpzb24/OiBPdEtleUNpcGhlckNsZWFySnNvbjI7XG4gIHJlc3BvbmRlclBia0NpcGhlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gS2V5RXhjaGFuZ2VTdGF0ZSB7XG4gIElOX1BST0dSRVNTID0gJ0lOX1BST0dSRVNTJyxcbiAgQ09NUExFVEVEID0gJ0NPTVBMRVRFRCcsXG4gIERFQ0xJTkVEID0gJ0RFQ0xJTkVEJyxcbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG4gIERFTEVURUQgPSAnREVMRVRFRCcsXG59XG5cbmV4cG9ydCBlbnVtIEtleUV4Y2hhbmdlTW9kZSB7XG4gIE9USyA9ICdPVEsnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUV4Y2hhbmdlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgZXhwaXJ5VGltZT86IERhdGVUaW1lO1xuICB0b2tlbj86IHN0cmluZztcbiAgdG9rZW5FeHBpcnlUaW1lPzogRGF0ZVRpbWU7XG4gIHN0YXRlPzogS2V5RXhjaGFuZ2VTdGF0ZTtcbiAgbW9kZT86IEtleUV4Y2hhbmdlTW9kZTtcbiAgaW5pdGlhdG9yPzogVXNlck5vZGU7XG4gIHJlc3BvbmRlcj86IFVzZXJOb2RlO1xuICBpbml0aWF0b3JSb290S2V5Q2lwaGVyPzogc3RyaW5nO1xuICByZXNwb25kZXJSb290S2V5Q2lwaGVyPzogc3RyaW5nO1xuICBpbml0aWF0b3JBY3Rpb25SZXF1aXJlZD86IGJvb2xlYW47XG4gIHJlc3BvbmRlckFjdGlvblJlcXVpcmVkPzogYm9vbGVhbjtcbiAgY3JlYXRlVHA/OiBib29sZWFuO1xuICBvdGs/OiBLZXlFeGNoYW5nZU90a05vZGU7XG4gIGlzSW5pdGlhdG9yPzogYm9vbGVhbjtcbiAgaXNFeHBpcmVkPzogYm9vbGVhbjtcbiAgcmVzcG9uZGVyRW1haWxBZGRyZXNzPzogTHJFbWFpbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRJdGVtcyB7XG4gIGRlc2NlbmRhbnRzOiBEZXNjZW5kYW50cztcbiAgZGlyZWN0b3JpZXM/OiBDb25uZWN0aW9uPERpcmVjdG9yeU5vZGU+O1xuICBmaWxlcz86IENvbm5lY3Rpb248RmlsZU5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZENvbnRhY3RDYXJkTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgb3duZXI/OiBVc2VyTm9kZTtcbiAgcmVjZWl2ZXI/OiBVc2VyTm9kZTtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHNoYXJlZENpcGhlckRhdGFTaWc/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckRhdGFTaWdQeGs/OiBLZXlOb2RlO1xuICBvd25lckNpcGhlckRhdGE/OiBzdHJpbmc7XG4gIG93bmVyQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIG93bmVyS2V5PzogS2V5Tm9kZTtcbiAgb3duZXJQbGFpbkRhdGE/OiBzdHJpbmc7XG4gIG93bmVyUGxhaW5EYXRhSnNvbj86IEpTT05PYmplY3Q7XG4gIG93bmVyUGxhaW5EYXRhU2lnPzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHJlY2VpdmVyQ2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHJlY2VpdmVyS2V5PzogS2V5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyU2hhcmVkS2V5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAga2V5RXhjaGFuZ2U/OiBLZXlFeGNoYW5nZU5vZGU7XG4gIHVzZXI/OiBVc2VyTm9kZTtcbiAgdXNlclByaz86IEtleU5vZGU7XG4gIHVzZXJTaWdQcms/OiBLZXlOb2RlO1xuICBvdGhlcj86IFVzZXJOb2RlO1xuICBvdGhlclBiaz86IEtleU5vZGU7XG4gIG90aGVyU2lnUGJrPzogS2V5Tm9kZTtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgbWtTaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBta1B4az86IEtleU5vZGU7XG4gIG1rUmVzaGFyZVJlcXVlc3RDaXBoZXI/OiBzdHJpbmc7XG4gIG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyPzogc3RyaW5nO1xuICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgbWtSZXNoYXJlUmVzcG9uc2VDaXBoZXJDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBta1Jlc2hhcmVSZXF1ZXN0U2VudD86IGJvb2xlYW47XG4gIG1rUmVzaGFyZVJlc3BvbnNlU2VudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudFVzZXJTaGFyZWRLZXlOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICB1c2VyPzogVXNlck5vZGU7XG4gIG90aGVyPzogVXNlck5vZGU7XG4gIHVzZXJTaGFyZWRLZXk/OiBVc2VyU2hhcmVkS2V5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHVzZXI/OiBVc2VyTm9kZTtcbiAgb3RoZXI/OiBVc2VyTm9kZTtcbiAgY3VycmVudFVzZXJTaGFyZWRLZXk/OiBDdXJyZW50VXNlclNoYXJlZEtleU5vZGU7XG4gIGlzQ29tcGxldGVkPzogYm9vbGVhbjtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ29udGFjdENhcmQ/OiBTaGFyZWRDb250YWN0Q2FyZE5vZGU7XG4gIG15Q29udGFjdENhcmQ/OiBTaGFyZWRDb250YWN0Q2FyZE5vZGU7XG4gIG15SXRlbXM/OiBTaGFyZWRJdGVtcztcbiAgdGhlaXJJdGVtcz86IFNoYXJlZEl0ZW1zO1xuICBteVNjZW5hcmlvcz86IENvbm5lY3Rpb248U2NlbmFyaW9Ob2RlPjtcbiAgc2hhcmVkU2NlbmFyaW9zPzogQ29ubmVjdGlvbjxTaGFyZWRTY2VuYXJpb05vZGU+O1xufVxuXG5leHBvcnQgZW51bSBUcEFzc2VtYmx5U3RhdGUge1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbiAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxuICBFWFBJUkVEID0gJ0VYUElSRUQnLFxuICBDQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJyxcbiAgUkVTRVQgPSAnUkVTRVQnLFxufVxuXG5leHBvcnQgZW51bSBUcENsYWltU3RhdGUge1xuICBDTEFJTUVEID0gJ0NMQUlNRUQnLFxuICBBUFBST1ZFRCA9ICdBUFBST1ZFRCcsXG4gIFJFSkVDVEVEID0gJ1JFSkVDVEVEJyxcbiAgRVhQSVJFRCA9ICdFWFBJUkVEJyxcbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG4gIFJFU0VUID0gJ1JFU0VUJyxcbn1cblxuZXhwb3J0IGVudW0gVHBDbGFpbUFwcHJvdmVyU3RhdGUge1xuICBDTEFJTUVEID0gJ0NMQUlNRUQnLFxuICBBUFBST1ZFRCA9ICdBUFBST1ZFRCcsXG4gIFJFSkVDVEVEID0gJ1JFSkVDVEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRBcHByb3ZhbCBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgYXBwcm92ZXJFbWFpbD86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXI/OiBzdHJpbmc7XG4gIHJlY2VpdmVyQ2lwaGVyQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXk/OiBzdHJpbmc7XG4gIHJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Q2xlYXJKc29uPzogSlNPTk9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXRVc2VyQXBwcm92YWxOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICByZWNlaXZlckNpcGhlcj86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleT86IHN0cmluZztcbiAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBhcHByb3ZlckVtYWlsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZlciB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBzdGF0ZT86IFRwQ2xhaW1BcHByb3ZlclN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFVzZXJTdWJBc3NlbWJseSB7XG4gIHNpbmdsZVJlamVjdD86IGJvb2xlYW47XG4gIHF1b3J1bT86IG51bWJlcjtcbiAgYXBwcm92ZXJzPzogVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0VXNlckFzc2VtYmx5IHtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBzdWJBc3NlbWJsaWVzPzogVHBQYXNzd29yZFJlc2V0VXNlclN1YkFzc2VtYmx5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBQYXNzd29yZFJlc2V0VXNlciB7XG4gIHVzZXJuYW1lPzogc3RyaW5nO1xuICByZXNldFVzZXJuYW1lPzogc3RyaW5nO1xuICBzdGF0ZT86IFRwQ2xhaW1TdGF0ZTtcbiAgcGFzc0tleT86IFBhc3NLZXlOb2RlO1xuICBtYXN0ZXJLZXk/OiBLZXlOb2RlO1xuICBweGs/OiBLZXlOb2RlO1xuICBzZXNzaW9uRW5jcnlwdGlvbktleT86IHN0cmluZztcbiAgYXBwcm92YWxzPzogVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmFsTm9kZVtdO1xuICBhc3NlbWJseUNpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHdyYXBwZWRBc3NlbWJseUtleVZlcmlmaWVyUHJrPzogc3RyaW5nO1xuICBhc3NlbWJseT86IFRwUGFzc3dvcmRSZXNldFVzZXJBc3NlbWJseTtcbiAgcmVxdWVzdEFnYWluQWZ0ZXI/OiBEYXRlVGltZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcFBhc3N3b3JkUmVzZXROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBhc3NlbWJseT86IFRwQXNzZW1ibHlOb2RlO1xuICByZXF1ZXN0PzogVHBQYXNzd29yZFJlc2V0UmVxdWVzdE5vZGU7XG4gIGFwcGxpZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwUGFzc3dvcmRSZXNldFJlcXVlc3ROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdGF0ZT86IFRwQ2xhaW1TdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcEFzc2VtYmx5Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgaWQ/OiBJRDtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBjYW5NZWV0UXVvcnVtPzogYm9vbGVhbjtcbiAgc3ViamVjdEtleT86IEtleU5vZGU7XG4gIHN1YmplY3RDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBzdWJqZWN0Q2lwaGVyRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIGFzc2VtYmx5S2V5PzogS2V5Tm9kZTtcbiAgYXNzZW1ibHlDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBhc3NlbWJseUNpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBzdWJBc3NlbWJsaWVzPzogQ29ubmVjdGlvbjxUcFN1YkFzc2VtYmx5Tm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBTdWJBc3NlbWJseU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHNpbmdsZVJlamVjdD86IGJvb2xlYW47XG4gIHF1b3J1bT86IG51bWJlcjtcbiAgc3ViamVjdENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHN1YmplY3RDaXBoZXJEYXRhQ2xlYXJKc29uPzogc3RyaW5nO1xuICBhcHByb3ZlcnM/OiBDb25uZWN0aW9uPFRwQXNzZW1ibHlBcHByb3Zlck5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwQXNzZW1ibHlBcHByb3Zlck5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNoYXJlZENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBzaGFyZWRDaXBoZXJBcHByb3ZhbERhdGE/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YUNsZWFySnNvbj86IEpTT05PYmplY3Q7XG4gIHRwPzogVHBOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwUGFzc3dvcmRSZXNldE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGFzc2VtYmx5PzogU2hhcmVkVHBBc3NlbWJseU5vZGU7XG4gIHRwPzogVHBOb2RlO1xuICBzaGFyZWRSZXF1ZXN0PzogU2hhcmVkVHBQYXNzd29yZFJlc2V0UmVxdWVzdE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkVHBBc3NlbWJseU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIGFzQXBwcm92ZXJzPzogQ29ubmVjdGlvbjxUcEFzc2VtYmx5QXNBcHByb3Zlck5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRwQXNzZW1ibHlBc0FwcHJvdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc2hhcmVkS2V5PzogS2V5Tm9kZTtcbiAgc2hhcmVkQ2lwaGVyRGF0YT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRUcFBhc3N3b3JkUmVzZXRSZXF1ZXN0Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgY2xhaW0/OiBTaGFyZWRUcENsYWltTm9kZTtcbiAgcHhrPzogS2V5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRUcENsYWltTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3RhdGU/OiBUcENsYWltU3RhdGU7XG4gIGFzQ2xhaW1BcHByb3ZlcnM/OiBDb25uZWN0aW9uPFNoYXJlZFRwQ2xhaW1BcHByb3Zlck5vZGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFRwQ2xhaW1BcHByb3Zlck5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHN0YXRlPzogVHBDbGFpbUFwcHJvdmVyU3RhdGU7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNoYXJlZENpcGhlckFwcHJvdmFsRGF0YT86IHN0cmluZztcbiAgc2hhcmVkQ2lwaGVyQXBwcm92YWxEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgc2hhcmVkQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5Pzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICByZWNlaXZlckFwcHJvdmFscz86IENvbm5lY3Rpb248U2hhcmVkVHBDbGFpbVJlY2VpdmVyQXBwcm92YWxOb2RlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRUcENsYWltUmVjZWl2ZXJBcHByb3ZhbE5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHB4az86IEtleU5vZGU7XG59XG5cbmV4cG9ydCBlbnVtIExvY2tTdGF0ZSB7XG4gIFVOTE9DS0VEID0gJ1VOTE9DS0VEJyxcbiAgTVVURVhfTE9DS0VEID0gJ01VVEVYX0xPQ0tFRCcsXG59XG5cbmV4cG9ydCBlbnVtIFNjZW5hcmlvU3RhdGUge1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbn1cblxuZXhwb3J0IGVudW0gQ2xhaW1TdGF0ZSB7XG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEVYUElSRUQgPSAnRVhQSVJFRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbiAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxuICBDQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJyxcbiAgUkVTRVQgPSAnUkVTRVQnLFxufVxuXG5leHBvcnQgZW51bSBDbGFpbUFwcHJvdmVyU3RhdGUge1xuICBDTEFJTUVEID0gJ0NMQUlNRUQnLFxuICBBUFBST1ZFRCA9ICdBUFBST1ZFRCcsXG4gIFJFSkVDVEVEID0gJ1JFSkVDVEVEJyxcbn1cblxuZXhwb3J0IGVudW0gU2NlbmFyaW9MYXN0Q2xhaW1TdGF0ZSB7XG4gIENMQUlNRUQgPSAnQ0xBSU1FRCcsXG4gIEFQUFJPVkVEID0gJ0FQUFJPVkVEJyxcbiAgUkVKRUNURUQgPSAnUkVKRUNURUQnLFxuICBFWFBJUkVEID0gJ0VYUElSRUQnLFxuICBDQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJyxcbiAgUkVTRVQgPSAnUkVTRVQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvTGF0ZXN0Q2xhaW0ge1xuICBzdGF0ZT86IFNjZW5hcmlvTGFzdENsYWltU3RhdGU7XG4gIGNyZWF0ZWQ/OiBEYXRlVGltZTtcbiAgY2xhaW1BZ2FpbkFmdGVyPzogRGF0ZVRpbWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdWJqZWN0PzogVXNlck5vZGU7XG4gIHN1YmplY3RLZXk/OiBLZXlOb2RlO1xuICBzdWJqZWN0Q2lwaGVyRGF0YT86IHN0cmluZztcbiAgc3ViamVjdENpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBhc3NlbWJseT86IFRwQXNzZW1ibHlOb2RlO1xuICBzdGF0ZT86IFNjZW5hcmlvU3RhdGU7XG4gIGNsYWltYW50cz86IENvbm5lY3Rpb248U2NlbmFyaW9DbGFpbWFudE5vZGU+O1xuICByZWNlaXZlcnM/OiBDb25uZWN0aW9uPFNjZW5hcmlvUmVjZWl2ZXJOb2RlPjtcbiAgY2xhaW1zPzogQ29ubmVjdGlvbjxTY2VuYXJpb0NsYWltTm9kZT47XG4gIGNsYWltPzogU2NlbmFyaW9DbGFpbU5vZGU7XG4gIGFzc2VtYmx5U3RhdGU/OiBTY2VuYXJpb0Fzc2VtYmx5U3RhdGU7XG4gIGxhdGVzdENsYWltPzogU2NlbmFyaW9MYXRlc3RDbGFpbTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb0NsYWltTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgY2xhaW1hbnQ/OiBTY2VuYXJpb0NsYWltYW50Tm9kZTtcbiAgc3RhdGU/OiBDbGFpbVN0YXRlO1xuICBzY2VuYXJpbz86IFNjZW5hcmlvTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb0Fzc2VtYmx5U3RhdGUge1xuICBzaW5nbGVSZWplY3Q/OiBib29sZWFuO1xuICBxdW9ydW0/OiBudW1iZXI7XG4gIHN1YkFzc2VtYmx5U3RhdGVzPzogU2NlbmFyaW9TdWJBc3NlbWJseVN0YXRlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9TdWJBc3NlbWJseVN0YXRlIHtcbiAgc2luZ2xlUmVqZWN0PzogYm9vbGVhbjtcbiAgcXVvcnVtPzogbnVtYmVyO1xuICBhcHByb3ZlclN0YXRlcz86IFNjZW5hcmlvQXNzZW1ibHlBcHByb3ZlclN0YXRlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9Bc3NlbWJseUFwcHJvdmVyU3RhdGUge1xuICBzdGF0ZT86IFRwQ2xhaW1BcHByb3ZlclN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvUmVjZWl2ZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzaGFyZWRLZXk/OiBLZXlOb2RlO1xuICBzaGFyZWRDaXBoZXJEYXRhPzogc3RyaW5nO1xuICBzaGFyZWRDaXBoZXJEYXRhQ2xlYXJKc29uPzogSlNPTk9iamVjdDtcbiAgcGJrPzogS2V5Tm9kZTtcbiAgcmVjZWl2ZXJEaXJlY3Rvcmllcz86IENvbm5lY3Rpb248U2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeU5vZGU+O1xuICByZWNlaXZlckZpbGVzPzogQ29ubmVjdGlvbjxTY2VuYXJpb1JlY2VpdmVyRmlsZU5vZGU+O1xuICB0cD86IFRwTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTY2VuYXJpb1JlY2VpdmVyTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgcGJrPzogS2V5Tm9kZTtcbn1cblxuZXhwb3J0IHR5cGUgUmVjZWl2ZXJEaXJlY3RvcnlBY2Nlc3NSb2xlID0gQWNjZXNzUm9sZUNob2ljZTtcblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb1JlY2VpdmVySXRlbU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHJlY2VpdmVyPzogU2hhcmVkU2NlbmFyaW9SZWNlaXZlck5vZGU7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNoYXJlZENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xuICBhY2Nlc3NSb2xlPzogUmVjZWl2ZXJEaXJlY3RvcnlBY2Nlc3NSb2xlO1xuICB3cmFwcGVkSXRlbUtleT86IHN0cmluZztcbiAgaXRlbUtleT86IEtleU5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmFyaW9SZWNlaXZlckRpcmVjdG9yeU5vZGVcbiAgZXh0ZW5kcyBTY2VuYXJpb1JlY2VpdmVySXRlbU5vZGUge1xuICBkaXJlY3Rvcnk/OiBEaXJlY3RvcnlOb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5hcmlvUmVjZWl2ZXJGaWxlTm9kZSBleHRlbmRzIFNjZW5hcmlvUmVjZWl2ZXJJdGVtTm9kZSB7XG4gIGZpbGU/OiBGaWxlTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuYXJpb0NsYWltYW50Tm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgdHA/OiBUcE5vZGU7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNoYXJlZENpcGhlckRhdGE/OiBzdHJpbmc7XG4gIHNoYXJlZENpcGhlckRhdGFDbGVhckpzb24/OiBKU09OT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFNjZW5hcmlvTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc3ViamVjdD86IFVzZXJOb2RlO1xuICBzdGF0ZT86IFNjZW5hcmlvU3RhdGU7XG4gIHRwPzogVHBOb2RlO1xuICBhc0NsYWltYW50PzogU2NlbmFyaW9DbGFpbWFudE5vZGU7XG4gIGFzUmVjZWl2ZXI/OiBTY2VuYXJpb1JlY2VpdmVyTm9kZTtcbiAgYXNzZW1ibHk/OiBTaGFyZWRUcEFzc2VtYmx5Tm9kZTtcbiAgc2hhcmVkQ2xhaW0/OiBTaGFyZWRTY2VuYXJpb0NsYWltTm9kZTtcbiAgYXNzZW1ibHlTdGF0ZT86IFNjZW5hcmlvQXNzZW1ibHlTdGF0ZTtcbiAgbGF0ZXN0Q2xhaW0/OiBTY2VuYXJpb0xhdGVzdENsYWltO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlZFNjZW5hcmlvQ2xhaW1Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBzdGF0ZT86IENsYWltU3RhdGU7XG4gIHNoYXJlZFNjZW5hcmlvPzogU2hhcmVkU2NlbmFyaW9Ob2RlO1xuICBpc0NsYWltYW50PzogYm9vbGVhbjtcbiAgYXNDbGFpbVJlY2VpdmVyPzogU2hhcmVkU2NlbmFyaW9DbGFpbVJlY2VpdmVyTm9kZTtcbiAgY2xhaW0/OiBTaGFyZWRUcENsYWltTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTY2VuYXJpb0NsYWltQXBwcm92ZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICByZWNlaXZlcnM/OiBDb25uZWN0aW9uPFNoYXJlZFNjZW5hcmlvUmVjZWl2ZXJOb2RlPjtcbiAgc3RhdGU/OiBDbGFpbUFwcHJvdmVyU3RhdGU7XG4gIGFwcHJvdmVyPzogVHBBc3NlbWJseUFwcHJvdmVyTm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZWRTY2VuYXJpb0NsYWltUmVjZWl2ZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICByZWNlaXZlZD86IERhdGVUaW1lO1xuICBhcHByb3ZhbHM/OiBDb25uZWN0aW9uPFNoYXJlZFNjZW5hcmlvQ2xhaW1SZWNlaXZlZEFwcHJvdmFsTm9kZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVkU2NlbmFyaW9DbGFpbVJlY2VpdmVkQXBwcm92YWxOb2RlXG4gIGV4dGVuZHMgTm9kZSxcbiAgICBUaW1lU3RhbXBlZCB7XG4gIHJlY2VpdmVyQ2lwaGVyPzogc3RyaW5nO1xuICByZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleT86IHN0cmluZztcbiAgcHhrPzogS2V5Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Ob2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwbGFpbkRhdGE/OiBKU09OU3RyaW5nO1xuICBwbGFpbk1ldGE/OiBKU09OU3RyaW5nO1xuICB0aW1lUmVhZD86IERhdGVUaW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbk1hbmFnZW1lbnRTdGF0ZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgbGFzdFZpZXdlZD86IERhdGVUaW1lO1xufVxuXG5leHBvcnQgZW51bSBMaW5rVHlwZUZpZWxkIHtcbiAgSEFSRCA9ICdIQVJEJyxcbiAgU09GVCA9ICdTT0ZUJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgc2VuZGVyPzogVXNlck5vZGU7XG4gIHJlY2VpdmVyPzogVXNlck5vZGU7XG4gIHNoYXJlZEtleT86IEtleU5vZGU7XG4gIHNlbmRlclNpZ1Biaz86IEtleU5vZGU7XG4gIHBsYWluTWVzc2FnZT86IHN0cmluZztcbiAgcGxhaW5NZXNzYWdlSnNvbj86IHN0cmluZztcbiAgc2lnbmVkQ2lwaGVyTWVzc2FnZT86IHN0cmluZztcbiAgc2lnbmVkQ2lwaGVyTWVzc2FnZUNsZWFySnNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NrRmllbGQge1xuICBjcmVhdGVkPzogRGF0ZVRpbWU7XG4gIG1vZGlmaWVkPzogRGF0ZVRpbWU7XG4gIGV4cGlyeVRpbWU/OiBEYXRlVGltZTtcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgc3RhdGU/OiBMb2NrU3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyQ29uZmlnIHtcbiAgcmVsYXlDb25uZWN0aW9uTWF4TGltaXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXZhaWxhYmxlUGxhbkZpZWxkIHtcbiAgaXNzdWVyVWlkPzogc3RyaW5nO1xuICBwbGFuVWlkPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcHJpY2VPcHRpb25zPzogUHJpY2VPcHRpb25GaWVsZFtdO1xuICB0cmlhbD86IFRyaWFsUGVyaW9kRmllbGQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2VPcHRpb25GaWVsZCB7XG4gIHByaWNlSWQ/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBhbW91bnQ/OiBudW1iZXI7XG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xuICBpbnRlcnZhbFVuaXQ/OiBzdHJpbmc7XG4gIGludGVydmFsQ291bnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJpYWxQZXJpb2RGaWVsZCB7XG4gIHllYXJzPzogbnVtYmVyO1xuICBtb250aHM/OiBudW1iZXI7XG4gIHdlZWtzPzogbnVtYmVyO1xuICBkYXlzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBheW1lbnRDYXB0dXJlRmllbGQge1xuICBzdHJpcGVJbnRlbnRJZD86IHN0cmluZztcbiAgc3RyaXBlQ2xpZW50U2VjcmV0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBheW1lbnRNZXRob2ROb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBjYXJkPzogUGF5bWVudENhcmRGaWVsZDtcbiAgaW52b2ljZT86IFBheW1lbnRJbnZvaWNlRmllbGQ7XG4gIGlzRGVmYXVsdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF5bWVudENhcmRGaWVsZCB7XG4gIGJyYW5kPzogc3RyaW5nO1xuICBsYXN0Rm91ckRpZ2l0cz86IHN0cmluZztcbiAgZXhwaXJ5WWVhcj86IG51bWJlcjtcbiAgZXhwaXJ5TW9udGg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF5bWVudEludm9pY2VGaWVsZCB7XG4gIGVtYWlsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb21vdGlvbmFsQ29kZUZpZWxkIHtcbiAgYW1vdW50T2ZmPzogbnVtYmVyO1xuICBjdXJyZW5jeT86IHN0cmluZztcbiAgcGVyY2VudE9mZj86IG51bWJlcjtcbiAgbmFtZT86IHN0cmluZztcbiAgZHVyYXRpb24/OiBzdHJpbmc7XG4gIGR1cmF0aW9uSW5Nb250aHM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVyaW9kRmllbGQge1xuICBzdGFydD86IERhdGVUaW1lO1xuICBlbmQ/OiBEYXRlVGltZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJc3N1ZWRQbGFuTm9kZSBleHRlbmRzIE5vZGUsIFRpbWVTdGFtcGVkIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGN1cnJlbnRTdGF0ZXM/OiBJc3N1ZWRQbGFuU3RhdGVOb2RlW107XG4gIGN1cnJlbnRQZXJpb2Q/OiBQZXJpb2RGaWVsZDtcbiAgY3VycmVudFByaWNlT3B0aW9uPzogUHJpY2VPcHRpb25GaWVsZDtcbiAgdXBjb21pbmdJbnZvaWNlPzogQmlsbGluZ0ZpZWxkO1xuICBhbHRlcm5hdGl2ZVByaWNlT3B0aW9ucz86IFByaWNlT3B0aW9uRmllbGRbXTtcbiAgc2NoZWR1bGVkUHJpY2VDaGFuZ2VzPzogUHJpY2VDaGFuZ2VGaWVsZFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElzc3VlZFBsYW5TdGF0ZU5vZGUgZXh0ZW5kcyBOb2RlLCBUaW1lU3RhbXBlZCB7XG4gIHBlcmlvZFN0YXJ0PzogRGF0ZVRpbWU7XG4gIHBlcmlvZEVuZD86IERhdGVUaW1lO1xuICBzdGF0ZT86IFBsYW5TdGF0ZUZpZWxkO1xufVxuXG5leHBvcnQgZW51bSBQbGFuU3RhdGVGaWVsZCB7XG4gIFRSSUFMTElORyA9ICdUUklBTExJTkcnLFxuICBBQ1RJVkUgPSAnQUNUSVZFJyxcbiAgQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcsXG4gIEVYUElSRUQgPSAnRVhQSVJFRCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ0ZpZWxkIHtcbiAgaW52b2ljZU51bWJlcj86IHN0cmluZztcbiAgdG90YWw/OiBudW1iZXI7XG4gIGFtb3VudER1ZT86IG51bWJlcjtcbiAgY3VycmVuY3k/OiBzdHJpbmc7XG4gIGRvY3VtZW50VXJsPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG4gIHBlcmlvZFN0YXJ0PzogRGF0ZVRpbWU7XG4gIHBlcmlvZEVuZD86IERhdGVUaW1lO1xuICBmaW5hbGlzZWRBdD86IERhdGVUaW1lO1xuICBwYWlkQXQ/OiBEYXRlVGltZTtcbiAgcGFpZD86IGJvb2xlYW47XG4gIG5leHRQYXltZW50QXR0ZW1wdD86IERhdGVUaW1lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByaWNlQ2hhbmdlRmllbGQge1xuICBwZXJpb2RTdGFydD86IERhdGVUaW1lO1xuICBwcmljZU9wdGlvbj86IFByaWNlT3B0aW9uRmllbGQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtaW5kZXJOb2RlIGV4dGVuZHMgTm9kZSwgVGltZVN0YW1wZWQge1xuICBwbGFpbj86IEpTT05TdHJpbmc7XG4gIHBsYWluSnNvbj86IEpTT05PYmplY3Q7XG4gIGZpcnN0RXZlbnQ/OiBEYXRlVGltZTtcbiAgbm90aWZ5QWhlYWRTZWNvbmRzPzogbnVtYmVyO1xuICBub3RpZnlBdD86IERhdGVUaW1lO1xuICBkaXJlY3Rvcnk/OiBEaXJlY3RvcnlOb2RlO1xufVxuIl19
@@ -82,4 +82,4 @@ mutation SetSessionEncryptionKeyMutation($input: SetSessionEncryptionKeyInput!)
82
82
  }
83
83
  }
84
84
  `;
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ncWwucHJpdmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hdXRoL2F1dGguZ3FsLnByaXZhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBTzFELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBd0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBZ0M5RCxnQkFBZ0I7Q0FDakIsQ0FBQztBQXVDRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdDMUQsQ0FBQztBQU9ILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLFFBQVEsQ0FBaUM7Ozs7OztDQU12RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmFsTm9kZSxcbiAgVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmVyLFxuICBUcFBhc3N3b3JkUmVzZXRVc2VyQXNzZW1ibHksXG4gIFRwUGFzc3dvcmRSZXNldFVzZXJOb2RlLFxuICBUcFBhc3N3b3JkUmVzZXRVc2VyU3ViQXNzZW1ibHksXG4gIFVzZXJOb2RlLFxufSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgVXNlcktleXMgfSBmcm9tICcuLi9rZXkva2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuLi9fY29tbW9uL2FzdCc7XG5pbXBvcnQgeyBLZXlHcmFwaEZyYWdtZW50IH0gZnJvbSAnLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudFVzZXJRdWVyeVJlc3VsdCB7XG4gIGN1cnJlbnRVc2VyOiBQaWNrPFJlcXVpcmVkPFVzZXJOb2RlPiwgJ3VzZXJuYW1lJyB8ICdzZXNzaW9uRW5jcnlwdGlvbktleSc+ICYge1xuICAgIGN1cnJlbnRVc2VyS2V5OiBVc2VyS2V5cztcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBDdXJyZW50VXNlclF1ZXJ5ID0gZ3FsVHlwZWQ8Q3VycmVudFVzZXJRdWVyeVJlc3VsdD5gXG5xdWVyeSB7XG4gIGN1cnJlbnRVc2VyIHtcbiAgICBpZFxuICAgIHVzZXJuYW1lXG4gICAgY3VycmVudFVzZXJLZXkge1xuICAgICAgcGFzc0tleSB7XG4gICAgICAgIGlkXG4gICAgICAgIHBhc3NLZXlQYXJhbXNcbiAgICAgICAgcGFzc0lkcFBhcmFtc1xuICAgICAgICB3cmFwcGVkUGFzc0lkcFZlcmlmaWVyUHJrXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgIH1cbiAgICAgIG1hc3RlcktleSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgICByb290S2V5IHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICAgIHB4ayB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgICBzaWdQeGsge1xuICAgICAgICBpZFxuICAgICAgfVxuICAgIH1cbiAgICBzZXNzaW9uRW5jcnlwdGlvbktleVxuICB9XG4gIGtleUdyYXBoIHtcbiAgICAuLi5LZXlHcmFwaEZyYWdtZW50XG4gIH1cbn1cbiR7S2V5R3JhcGhGcmFnbWVudH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRVc2VyUXVlcnlSZXN1bHQge1xuICB0cFBhc3N3b3JkUmVzZXRVc2VyOiBQaWNrPFxuICAgIFJlcXVpcmVkPFRwUGFzc3dvcmRSZXNldFVzZXJOb2RlPixcbiAgICB8ICd1c2VybmFtZSdcbiAgICB8ICdzZXNzaW9uRW5jcnlwdGlvbktleSdcbiAgICB8ICdzdGF0ZSdcbiAgICB8ICdwYXNzS2V5J1xuICAgIHwgJ21hc3RlcktleSdcbiAgICB8ICdweGsnXG4gICAgfCAnYXBwcm92YWxzJ1xuICAgIHwgJ2Fzc2VtYmx5Q2lwaGVyRGF0YSdcbiAgICB8ICd3cmFwcGVkQXNzZW1ibHlLZXlWZXJpZmllclByaydcbiAgPiAmIHtcbiAgICBhc3NlbWJseTogUGljazxcbiAgICAgIFJlcXVpcmVkPFRwUGFzc3dvcmRSZXNldFVzZXJBc3NlbWJseT4sXG4gICAgICAnc2luZ2xlUmVqZWN0JyB8ICdxdW9ydW0nXG4gICAgPiAmIHtcbiAgICAgIHN1YkFzc2VtYmxpZXM6IChQaWNrPFxuICAgICAgICBSZXF1aXJlZDxUcFBhc3N3b3JkUmVzZXRVc2VyU3ViQXNzZW1ibHk+LFxuICAgICAgICAnc2luZ2xlUmVqZWN0JyB8ICdxdW9ydW0nXG4gICAgICA+ICYge1xuICAgICAgICBhcHByb3ZlcnM6IFBpY2s8XG4gICAgICAgICAgUmVxdWlyZWQ8VHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmVyPixcbiAgICAgICAgICAnbmFtZScgfCAnZW1haWwnIHwgJ3N0YXRlJ1xuICAgICAgICA+W107XG4gICAgICB9KVtdO1xuICAgIH07XG4gICAgYXBwcm92YWxzOiBQaWNrPFxuICAgICAgUmVxdWlyZWQ8VHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmFsTm9kZT4sXG4gICAgICB8ICdpZCdcbiAgICAgIHwgJ21vZGlmaWVkJ1xuICAgICAgfCAnYXBwcm92ZXJFbWFpbCdcbiAgICAgIHwgJ3JlY2VpdmVyQ2lwaGVyJ1xuICAgICAgfCAncmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXknXG4gICAgPjtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBSZXNldFVzZXJRdWVyeSA9IGdxbFR5cGVkPFJlc2V0VXNlclF1ZXJ5UmVzdWx0PmBcbnF1ZXJ5IFJlc2V0VXNlclF1ZXJ5IHtcbiAgdHBQYXNzd29yZFJlc2V0VXNlciB7XG4gICAgdXNlcm5hbWVcbiAgICBzZXNzaW9uRW5jcnlwdGlvbktleVxuICAgIHN0YXRlXG4gICAgcGFzc0tleSB7XG4gICAgICBpZFxuICAgICAgcGFzc0tleVBhcmFtc1xuICAgICAgcGFzc0lkcFBhcmFtc1xuICAgIH1cbiAgICBtYXN0ZXJLZXkge1xuICAgICAgaWRcbiAgICB9XG4gICAgcHhrIHtcbiAgICAgIGlkXG4gICAgfVxuICAgIGFzc2VtYmx5IHtcbiAgICAgIHNpbmdsZVJlamVjdFxuICAgICAgcXVvcnVtXG4gICAgICBzdWJBc3NlbWJsaWVzIHtcbiAgICAgICAgc2luZ2xlUmVqZWN0XG4gICAgICAgIHF1b3J1bVxuICAgICAgICBhcHByb3ZlcnMge1xuICAgICAgICAgIG5hbWVcbiAgICAgICAgICBlbWFpbFxuICAgICAgICAgIHN0YXRlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgYXBwcm92YWxzIHtcbiAgICAgIGlkXG4gICAgICBtb2RpZmllZFxuICAgICAgYXBwcm92ZXJFbWFpbFxuICAgICAgcmVjZWl2ZXJDaXBoZXJcbiAgICAgIHJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5XG4gICAgfVxuICAgIGFzc2VtYmx5Q2lwaGVyRGF0YVxuICAgIHdyYXBwZWRBc3NlbWJseUtleVZlcmlmaWVyUHJrXG4gIH1cbn1gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNldFNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24ge1xuICBzZXRTZXNzaW9uRW5jcnlwdGlvbktleToge1xuICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5OiBzdHJpbmc7XG4gIH07XG59XG5leHBvcnQgY29uc3QgU2V0U2Vzc2lvbkVuY3J5cHRpb25LZXlNdXRhdGlvbiA9IGdxbFR5cGVkPFNldFNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24+YFxubXV0YXRpb24gU2V0U2Vzc2lvbkVuY3J5cHRpb25LZXlNdXRhdGlvbigkaW5wdXQ6IFNldFNlc3Npb25FbmNyeXB0aW9uS2V5SW5wdXQhKSB7XG4gIHNldFNlc3Npb25FbmNyeXB0aW9uS2V5KGlucHV0OiAkaW5wdXQpIHtcbiAgICBzZXNzaW9uRW5jcnlwdGlvbktleVxuICB9XG59XG5gO1xuIl19
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ncWwucHJpdmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hdXRoL2F1dGguZ3FsLnByaXZhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBVTFELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBd0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBZ0M5RCxnQkFBZ0I7Q0FDakIsQ0FBQztBQXVDRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdDMUQsQ0FBQztBQU9ILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLFFBQVEsQ0FBaUM7Ozs7OztDQU12RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVHBQYXNzd29yZFJlc2V0VXNlcixcbiAgVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmFsTm9kZSxcbiAgVHBQYXNzd29yZFJlc2V0VXNlckFwcHJvdmVyLFxuICBUcFBhc3N3b3JkUmVzZXRVc2VyQXNzZW1ibHksXG4gIFRwUGFzc3dvcmRSZXNldFVzZXJTdWJBc3NlbWJseSxcbiAgVXNlck5vZGUsXG59IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBVc2VyS2V5cyB9IGZyb20gJy4uL2tleS9rZXkuc2VydmljZSc7XG5pbXBvcnQgeyBncWxUeXBlZCB9IGZyb20gJy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7IEtleUdyYXBoRnJhZ21lbnQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcblxuZXhwb3J0IGludGVyZmFjZSBDdXJyZW50VXNlclF1ZXJ5UmVzdWx0IHtcbiAgY3VycmVudFVzZXI6IFBpY2s8XG4gICAgUmVxdWlyZWQ8VXNlck5vZGU+LFxuICAgICdpZCcgfCAndXNlcm5hbWUnIHwgJ3Nlc3Npb25FbmNyeXB0aW9uS2V5J1xuICA+ICYge1xuICAgIGN1cnJlbnRVc2VyS2V5OiBVc2VyS2V5cztcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBDdXJyZW50VXNlclF1ZXJ5ID0gZ3FsVHlwZWQ8Q3VycmVudFVzZXJRdWVyeVJlc3VsdD5gXG5xdWVyeSB7XG4gIGN1cnJlbnRVc2VyIHtcbiAgICBpZFxuICAgIHVzZXJuYW1lXG4gICAgY3VycmVudFVzZXJLZXkge1xuICAgICAgcGFzc0tleSB7XG4gICAgICAgIGlkXG4gICAgICAgIHBhc3NLZXlQYXJhbXNcbiAgICAgICAgcGFzc0lkcFBhcmFtc1xuICAgICAgICB3cmFwcGVkUGFzc0lkcFZlcmlmaWVyUHJrXG4gICAgICAgIGNyZWF0ZWRcbiAgICAgIH1cbiAgICAgIG1hc3RlcktleSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgICByb290S2V5IHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICAgIHB4ayB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgICBzaWdQeGsge1xuICAgICAgICBpZFxuICAgICAgfVxuICAgIH1cbiAgICBzZXNzaW9uRW5jcnlwdGlvbktleVxuICB9XG4gIGtleUdyYXBoIHtcbiAgICAuLi5LZXlHcmFwaEZyYWdtZW50XG4gIH1cbn1cbiR7S2V5R3JhcGhGcmFnbWVudH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRVc2VyUXVlcnlSZXN1bHQge1xuICB0cFBhc3N3b3JkUmVzZXRVc2VyOiBQaWNrPFxuICAgIFJlcXVpcmVkPFRwUGFzc3dvcmRSZXNldFVzZXI+LFxuICAgIHwgJ3VzZXJuYW1lJ1xuICAgIHwgJ3Nlc3Npb25FbmNyeXB0aW9uS2V5J1xuICAgIHwgJ3N0YXRlJ1xuICAgIHwgJ3Bhc3NLZXknXG4gICAgfCAnbWFzdGVyS2V5J1xuICAgIHwgJ3B4aydcbiAgICB8ICdhcHByb3ZhbHMnXG4gICAgfCAnYXNzZW1ibHlDaXBoZXJEYXRhJ1xuICAgIHwgJ3dyYXBwZWRBc3NlbWJseUtleVZlcmlmaWVyUHJrJ1xuICA+ICYge1xuICAgIGFzc2VtYmx5OiBQaWNrPFxuICAgICAgUmVxdWlyZWQ8VHBQYXNzd29yZFJlc2V0VXNlckFzc2VtYmx5PixcbiAgICAgICdzaW5nbGVSZWplY3QnIHwgJ3F1b3J1bSdcbiAgICA+ICYge1xuICAgICAgc3ViQXNzZW1ibGllczogKFBpY2s8XG4gICAgICAgIFJlcXVpcmVkPFRwUGFzc3dvcmRSZXNldFVzZXJTdWJBc3NlbWJseT4sXG4gICAgICAgICdzaW5nbGVSZWplY3QnIHwgJ3F1b3J1bSdcbiAgICAgID4gJiB7XG4gICAgICAgIGFwcHJvdmVyczogUGljazxcbiAgICAgICAgICBSZXF1aXJlZDxUcFBhc3N3b3JkUmVzZXRVc2VyQXBwcm92ZXI+LFxuICAgICAgICAgICduYW1lJyB8ICdlbWFpbCcgfCAnc3RhdGUnXG4gICAgICAgID5bXTtcbiAgICAgIH0pW107XG4gICAgfTtcbiAgICBhcHByb3ZhbHM6IFBpY2s8XG4gICAgICBSZXF1aXJlZDxUcFBhc3N3b3JkUmVzZXRVc2VyQXBwcm92YWxOb2RlPixcbiAgICAgIHwgJ2lkJ1xuICAgICAgfCAnbW9kaWZpZWQnXG4gICAgICB8ICdhcHByb3ZlckVtYWlsJ1xuICAgICAgfCAncmVjZWl2ZXJDaXBoZXInXG4gICAgICB8ICdyZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleSdcbiAgICA+O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFJlc2V0VXNlclF1ZXJ5ID0gZ3FsVHlwZWQ8UmVzZXRVc2VyUXVlcnlSZXN1bHQ+YFxucXVlcnkgUmVzZXRVc2VyUXVlcnkge1xuICB0cFBhc3N3b3JkUmVzZXRVc2VyIHtcbiAgICB1c2VybmFtZVxuICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5XG4gICAgc3RhdGVcbiAgICBwYXNzS2V5IHtcbiAgICAgIGlkXG4gICAgICBwYXNzS2V5UGFyYW1zXG4gICAgICBwYXNzSWRwUGFyYW1zXG4gICAgfVxuICAgIG1hc3RlcktleSB7XG4gICAgICBpZFxuICAgIH1cbiAgICBweGsge1xuICAgICAgaWRcbiAgICB9XG4gICAgYXNzZW1ibHkge1xuICAgICAgc2luZ2xlUmVqZWN0XG4gICAgICBxdW9ydW1cbiAgICAgIHN1YkFzc2VtYmxpZXMge1xuICAgICAgICBzaW5nbGVSZWplY3RcbiAgICAgICAgcXVvcnVtXG4gICAgICAgIGFwcHJvdmVycyB7XG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIGVtYWlsXG4gICAgICAgICAgc3RhdGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBhcHByb3ZhbHMge1xuICAgICAgaWRcbiAgICAgIG1vZGlmaWVkXG4gICAgICBhcHByb3ZlckVtYWlsXG4gICAgICByZWNlaXZlckNpcGhlclxuICAgICAgcmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXlcbiAgICB9XG4gICAgYXNzZW1ibHlDaXBoZXJEYXRhXG4gICAgd3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmtcbiAgfVxufWA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0U2Vzc2lvbkVuY3J5cHRpb25LZXlNdXRhdGlvbiB7XG4gIHNldFNlc3Npb25FbmNyeXB0aW9uS2V5OiB7XG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IHN0cmluZztcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBTZXRTZXNzaW9uRW5jcnlwdGlvbktleU11dGF0aW9uID0gZ3FsVHlwZWQ8U2V0U2Vzc2lvbkVuY3J5cHRpb25LZXlNdXRhdGlvbj5gXG5tdXRhdGlvbiBTZXRTZXNzaW9uRW5jcnlwdGlvbktleU11dGF0aW9uKCRpbnB1dDogU2V0U2Vzc2lvbkVuY3J5cHRpb25LZXlJbnB1dCEpIHtcbiAgc2V0U2Vzc2lvbkVuY3J5cHRpb25LZXkoaW5wdXQ6ICRpbnB1dCkge1xuICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5XG4gIH1cbn1cbmA7XG4iXX0=
@@ -386,9 +386,10 @@ let AuthService = AuthService_1 = class AuthService extends LrService {
386
386
  });
387
387
  // Regular user populates all keys
388
388
  yield this.keyGraphService.populateKeys(currentUser.currentUserKey);
389
- const { username } = currentUser;
389
+ const { id, username } = currentUser;
390
390
  const userAttributes = yield this.cognito.userAttributes(cognitoUser);
391
391
  return {
392
+ id,
392
393
  username,
393
394
  sub: this.getCognitoUserAttribute('sub', userAttributes),
394
395
  loginEmail: this.getCognitoUserAttribute('email', userAttributes),
@@ -540,7 +541,7 @@ let AuthService = AuthService_1 = class AuthService extends LrService {
540
541
  debugLoadUser(password) {
541
542
  return __awaiter(this, void 0, void 0, function* () {
542
543
  const currentUser = yield this.fetchCurrentUser();
543
- const { username, currentUserKey } = currentUser;
544
+ const { id, username, currentUserKey } = currentUser;
544
545
  // Debug mode can not deal with session encryption key yet.
545
546
  // NO SESSION ENCRYPTION KEY.
546
547
  const passKey = (yield this.keyFactoryService.derivePassKey(Object.assign({ password }, currentUserKey.passKey.passKeyParams))).jwk;
@@ -548,6 +549,7 @@ let AuthService = AuthService_1 = class AuthService extends LrService {
548
549
  yield this.idleService.persistMasterKey(masterKey);
549
550
  yield this.keyGraphService.populateKeys(currentUserKey);
550
551
  this.user = {
552
+ id,
551
553
  username,
552
554
  resetUser: null,
553
555
  sub: 'DEBUG_MODE',
@@ -599,4 +601,4 @@ AuthService = AuthService_1 = __decorate([
599
601
  })
600
602
  ], AuthService);
601
603
  export { AuthService };
602
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQsT0FBTyxFQUFZLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUNMLHFDQUFxQyxFQUNyQyxpQ0FBaUMsR0FDbEMs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O2dCQUNmLEdBQUcsRUFBRSxZQUFZO2dCQUNqQixVQUFVLEVBQUUsWUFBWTthQUN6QixDQUFDO1lBRUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7S0FBQTtJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFSyx3QkFBd0I7O1lBQzVCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdEUsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztLQUFBO0NBQ0YsQ0FBQTtBQXp2QlEsNkJBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7OztZQUoxQyxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTdEaUQsTUFBTTtZQUEzQixRQUFRO1lBRDVCLFVBQVU7WUFHVixTQUFTO1lBSVQsZ0JBQWdCO1lBTWhCLFVBQVU7WUFEVixlQUFlO1lBRGYsaUJBQWlCO1lBS2pCLGVBQWU7WUFOZixXQUFXO1lBT1gsY0FBYztZQVJkLGlCQUFpQjtZQWFqQixpQ0FBaUM7NENBaUVyQyxNQUFNLFNBQUMsU0FBUzs7QUF4QlIsV0FBVztJQU52QixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsV0FBVyxDQTB2QnZCO1NBMXZCWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGlzRGV2TW9kZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2duaXRvVXNlciB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9hdXRoJztcbmltcG9ydCB7IEF1dGhDbGFzcyB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9hdXRoL2xpYi1lc20vQXV0aCc7XG5pbXBvcnQgeyBIdWIgfSBmcm9tICdAYXdzLWFtcGxpZnkvY29yZSc7XG5pbXBvcnQgeyBDb2duaXRvVXNlckF0dHJpYnV0ZSB9IGZyb20gJ2FtYXpvbi1jb2duaXRvLWlkZW50aXR5LWpzJztcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XG5pbXBvcnQgeyBMckdyYXBoUUxTZXJ2aWNlLCBMck11dGF0aW9uLCBMclNlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQgeyBUcENsYWltU3RhdGUgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZGxlU2VydmljZSB9IGZyb20gJy4uL2lkbGUvaWRsZS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UsIFVzZXJLZXlzIH0gZnJvbSAnLi4va2V5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IFBhc3NJZHBQYXJhbXMgfSBmcm9tICcuLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7IEtjQ29uZmlnLCBLQ19DT05GSUcgfSBmcm9tICcuLi9saWZlLXJlYWR5LmNvbmZpZyc7XG5pbXBvcnQgeyBQYXNzd29yZFNlcnZpY2UgfSBmcm9tICcuLi9wYXNzd29yZC9wYXNzd29yZC5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcnNpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vcGVyc2lzdC9wZXJzaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVFBfUEFTU1dPUkRfUkVTRVRfQ0xJRU5UX05PTkNFX0xFTkdUSCxcbiAgVFBfUEFTU1dPUkRfUkVTRVRfVVNFUk5BTUVfU1VGRklYLFxufSBmcm9tICcuLi90cC1wYXNzd29yZC1yZXNldC90cC1wYXNzd29yZC1yZXNldC5jb25zdGFudHMnO1xuaW1wb3J0IHsgVHBQYXNzd29yZFJlc2V0QXNzZW1ibHlDb250cm9sbGVyIH0gZnJvbSAnLi4vdHAtcGFzc3dvcmQtcmVzZXQvdHAtcGFzc3dvcmQtcmVzZXQuY29udHJvbGxlcic7XG5pbXBvcnQge1xuICBDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbiAgQ3JlYXRlVHBBc3NlbWJseUtleUNoYWxsZW5nZU11dGF0aW9uLFxuICBQcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbn0gZnJvbSAnLi4vdHAtcGFzc3dvcmQtcmVzZXQvdHAtcGFzc3dvcmQtcmVzZXQuZ3FsJztcbmltcG9ydCB7XG4gIEtjQmFkUmVxdWVzdEV4Y2VwdGlvbixcbiAgS2NCYWRTdGF0ZUV4Y2VwdGlvbixcbiAgS2NDb25jdXJyZW50QWNjZXNzRXhjZXB0aW9uLFxuICBLY0ludGVybmFsRXJyb3JFeGNlcHRpb24sXG59IGZyb20gJy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBLZXlDb250YWluZXIgfSBmcm9tICcuLi9fY29tbW9uL2tleSc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQge1xuICBDdXJyZW50VXNlclF1ZXJ5LFxuICBDdXJyZW50VXNlclF1ZXJ5UmVzdWx0LFxuICBSZXNldFVzZXJRdWVyeSxcbiAgUmVzZXRVc2VyUXVlcnlSZXN1bHQsXG4gIFNldFNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24sXG59IGZyb20gJy4vYXV0aC5ncWwucHJpdmF0ZSc7XG5pbXBvcnQge1xuICBBdXRoVXNlcixcbiAgQ29nbml0b0NoYWxsZW5nZU5hbWUsXG4gIExvZ2luQ2hhbGxlbmdlLFxuICBMb2dpbk9wdGlvbnMsXG4gIExvZ2luUmVzdWx0LFxuICBMb2dvdXRMaXN0ZW5lcixcbiAgTHJDb2duaXRvVXNlcixcbiAgTHJDb2duaXRvVXNlckF0dHJpYnV0ZSxcbiAgUGFzc0lkcFJlc3VsdCxcbiAgUGFzc3dvcmRDaGFuZ2VTdGF0dXMsXG4gIFJlY292ZXJ5U3RhdHVzLFxufSBmcm9tICcuL2F1dGgudHlwZXMnO1xuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2UgZXh0ZW5kcyBMclNlcnZpY2Uge1xuICBzdGF0aWMgQ0hBTExFTkdFX1RJTUVPVVQgPSAxMDAwICogNjAgKiA1O1xuXG4gIC8vIENvdWxkIHVzZSByeGpzIG9ic2VydmFibGVzIGhlcmUuIEJ1dCB0cnlpbmcgdG8gaGF2ZSBrYy1jbGllbnQgdXNlIGFzIGxpdHRsZSBhbmd1bGFyXG4gIC8vIGZlYXR1cmVzIGFzIHBvc3NpYmxlLiBSeGpzIGlzIG5vdCB1c2VkIGFueXdoZXJlIGVsc2UgaW4ga2MtY2xpZW50LlxuICBwcml2YXRlIGxvZ291dExpc3RlbmVycyA9IG5ldyBTZXQ8TG9nb3V0TGlzdGVuZXI+KCk7XG4gIHByaXZhdGUgdXNlcjogQXV0aFVzZXI7XG4gIC8vIFN0b3JlcyB0aGUgcGFzc3dvcmQgZm9yIHVzZSBhZnRlciBtZmEgdmVyaWZpY2F0aW9uIHRvIGRlY3J5cHQgbWFzdGVyS2V5LlxuICBwcml2YXRlIHBhc3N3b3JkOiBLZXlDb250YWluZXIgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29nbml0bzogQXV0aENsYXNzLFxuICAgIHByaXZhdGUgYXBpOiBMckdyYXBoUUxTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoU2VydmljZTogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5RmFjdG9yeVNlcnZpY2U6IEtleUZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFzc3dvcmRTZXJ2aWNlOiBQYXNzd29yZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZGxlU2VydmljZTogSWRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJzaXN0U2VydmljZTogUGVyc2lzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhc3NlbWJseUNvbnRyb2xsZXI6IFRwUGFzc3dvcmRSZXNldEFzc2VtYmx5Q29udHJvbGxlcixcbiAgICBASW5qZWN0KEtDX0NPTkZJRykgcHJpdmF0ZSBrY0NvbmZpZzogS2NDb25maWdcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIGlmICghaXNEZXZNb2RlKCkpIHtcbiAgICAgIGlmICh0aGlzLmtjQ29uZmlnLmRlYnVnICE9IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEtjQmFkUmVxdWVzdEV4Y2VwdGlvbihcbiAgICAgICAgICAnSW4gcHJvZHVjdGlvbiBtb2RlLCBcIktjQ29uZmlnLmRlYnVnXCIgbXVzdCBiZSBzZXQgdG8gbnVsbCdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbXBvcnRQYXNzd29yZChwbGFpblBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPENyeXB0b0tleT4ge1xuICAgIHJldHVybiB0aGlzLmtleUZhY3RvcnlTZXJ2aWNlLmltcG9ydFBhc3N3b3JkKHBsYWluUGFzc3dvcmQpO1xuICB9XG5cbiAgYXN5bmMgbG9nb3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIE5vdGlmeSBhbGwgbGlzdGVuZXJzIHRvIGNsZWFuIHVwLlxuICAgIGF3YWl0IFByb21pc2UuYWxsKFsuLi50aGlzLmxvZ291dExpc3RlbmVyc10ubWFwKChjYWxsYmFjaykgPT4gY2FsbGJhY2soKSkpO1xuXG4gICAgdGhpcy51c2VyID0gbnVsbDtcbiAgICB0aGlzLmtleVNlcnZpY2UucHVyZ2VLZXlzKCk7XG4gICAgdGhpcy5rZXlHcmFwaFNlcnZpY2UucHVyZ2VLZXlzKCk7XG5cbiAgICAvLyBTaWduIG91dCBvbiBib3RoIGNvZ25pdG8gYW5kIGtjLXNlcnZlclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFt0aGlzLmNvZ25pdG8uc2lnbk91dCgpLCB0aGlzLmtjTG9nb3V0KCldKTtcblxuICAgIGlmICh0aGlzLmtjQ29uZmlnLmRlYnVnPy51c2VybmFtZSkge1xuICAgICAgdGhpcy5rY0NvbmZpZy5kZWJ1Zy51c2VybmFtZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYWRkTG9nb3V0TGlzdGVuZXIoY2FsbGJhY2s6IExvZ291dExpc3RlbmVyKSB7XG4gICAgdGhpcy5sb2dvdXRMaXN0ZW5lcnMuYWRkKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHJlbW92ZUxvZ291dExpc3RlbmVyKGNhbGxiYWNrOiBMb2dvdXRMaXN0ZW5lcikge1xuICAgIHRoaXMubG9nb3V0TGlzdGVuZXJzLmRlbGV0ZShjYWxsYmFjayk7XG4gIH1cblxuICBhc3luYyBsb2dpbihcbiAgICBlbWFpbE9yUGhvbmU6IHN0cmluZyxcbiAgICBwYXNzd29yZDogQ3J5cHRvS2V5LFxuICAgIHsgdHBQYXNzd29yZFJlc2V0QXV0b0NvbXBsZXRlID0gdHJ1ZSB9OiBMb2dpbk9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPExvZ2luUmVzdWx0PiB7XG4gICAgbGV0IGxvZ2luUmVzdWx0OiBMb2dpblJlc3VsdCA9IGF3YWl0IHRoaXMubG9naW5JbXBsKGVtYWlsT3JQaG9uZSwgcGFzc3dvcmQpO1xuXG4gICAgLy8gU2F2ZSB0aGUgcGFzc3dvcmQgZm9yIHVzZSBhZnRlciBtZWV0aW5nIGNoYWxsZW5nZS5cbiAgICBpZiAobG9naW5SZXN1bHQuY2hhbGxlbmdlKSB7XG4gICAgICB0aGlzLnBhc3N3b3JkID0gbmV3IEtleUNvbnRhaW5lcihwYXNzd29yZCwgQXV0aFNlcnZpY2UuQ0hBTExFTkdFX1RJTUVPVVQpO1xuXG4gICAgICByZXR1cm4gbG9naW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdHBQYXNzd29yZFJlc2V0QXV0b0NvbXBsZXRlICYmXG4gICAgICBsb2dpblJlc3VsdC51c2VyLnJlc2V0VXNlcj8uc3RhdGUgPT09IFRwQ2xhaW1TdGF0ZS5BUFBST1ZFRFxuICAgICkge1xuICAgICAgYXdhaXQgdGhpcy5jb21wbGV0ZVJlc2V0UmVxdWVzdChwYXNzd29yZCk7XG4gICAgICBsb2dpblJlc3VsdCA9IGF3YWl0IHRoaXMubG9naW5JbXBsKGVtYWlsT3JQaG9uZSwgcGFzc3dvcmQpO1xuICAgIH1cblxuICAgIHJldHVybiBsb2dpblJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeUxvZ2luKG9wdGlvbnM6IHtcbiAgICBjaGFsbGVuZ2U6IExvZ2luQ2hhbGxlbmdlO1xuICAgIGNvZGU6IHN0cmluZztcbiAgICByZW1lbWJlck1lOiBib29sZWFuO1xuICB9KTogUHJvbWlzZTxMb2dpblJlc3VsdD4ge1xuICAgIGNvbnN0IHsgY2hhbGxlbmdlLCBjb2RlLCByZW1lbWJlck1lIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgVkFMSURfQ0hBTExFTkdFX05BTUVTID0gW1xuICAgICAgQ29nbml0b0NoYWxsZW5nZU5hbWUuU01TX01GQSxcbiAgICAgIENvZ25pdG9DaGFsbGVuZ2VOYW1lLlNPRlRXQVJFX1RPS0VOX01GQSxcbiAgICBdO1xuXG4gICAgaWYgKCFWQUxJRF9DSEFMTEVOR0VfTkFNRVMuaW5jbHVkZXMoY2hhbGxlbmdlLmNvZ25pdG9Vc2VyLmNoYWxsZW5nZU5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRSZXF1ZXN0RXhjZXB0aW9uKFxuICAgICAgICBgY2hhbGxlbmdlTmFtZSBtdXN0IGJlIG9uZSBvZiAke1ZBTElEX0NIQUxMRU5HRV9OQU1FU31gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFRPRE86IHRoaXMuYXV0aC5jb25maXJtU2lnbkluKCkgY291bGQgcmV0dXJuIGFub3RoZXIgY2hhbGxlbmdlLlxuICAgIGNvbnN0IGNvZ25pdG9Vc2VyID0gYXdhaXQgdGhpcy5jb2duaXRvLmNvbmZpcm1TaWduSW4oXG4gICAgICBjaGFsbGVuZ2UuY29nbml0b1VzZXIsXG4gICAgICBjb2RlLFxuICAgICAgY2hhbGxlbmdlLmNvZ25pdG9Vc2VyLmNoYWxsZW5nZU5hbWUgYXNcbiAgICAgICAgfCBDb2duaXRvQ2hhbGxlbmdlTmFtZS5TTVNfTUZBXG4gICAgICAgIHwgQ29nbml0b0NoYWxsZW5nZU5hbWUuU09GVFdBUkVfVE9LRU5fTUZBXG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMuaGFuZGxlUG9zdEF1dGgoY2hhbGxlbmdlLnJlY292ZXJ5U3RhdHVzKTtcblxuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLmxvYWRVc2VyKGNvZ25pdG9Vc2VyLCB0aGlzLnBhc3N3b3JkLnBvcCgpKTtcblxuICAgIC8vIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBzaW5jZSB0aGUgdGhpcy5wYXNzd29yZC5wb3AoKSBhbHJlYWR5IGNsZWFycyB0aGVcbiAgICAvLyBwYXNzd29yZCBpbnNpZGUgdGhlIGNvbnRhaW5lci4gQnV0IGRvZXNuJ3QgaHVydCBlaXRoZXIuXG4gICAgdGhpcy5wYXNzd29yZCA9IG51bGw7XG5cbiAgICBpZiAocmVtZW1iZXJNZSkge1xuICAgICAgY29nbml0b1VzZXIuc2V0RGV2aWNlU3RhdHVzUmVtZW1iZXJlZCh7XG4gICAgICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsdXJlOiAoZSkgPT4gY29uc29sZS5lcnJvcihlKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1c2VyLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBnZXRVc2VyKCk6IFByb21pc2U8QXV0aFVzZXI+IHtcbiAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICByZXR1cm4gdGhpcy51c2VyO1xuICAgIH1cblxuICAgIGNvbnN0IGNvZ25pdG9Vc2VyID0gYXdhaXQgdGhpcy5jb2duaXRvLmN1cnJlbnRBdXRoZW50aWNhdGVkVXNlcigpO1xuXG4gICAgcmV0dXJuIHRoaXMubG9hZFVzZXIoY29nbml0b1VzZXIpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaEFjY2Vzc1Rva2VuKCkge1xuICAgIGNvbnN0IGNvZ25pdG9Vc2VyOiBDb2duaXRvVXNlciA9XG4gICAgICBhd2FpdCB0aGlzLmNvZ25pdG8uY3VycmVudEF1dGhlbnRpY2F0ZWRVc2VyKCk7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gY29nbml0b1VzZXIuZ2V0U2lnbkluVXNlclNlc3Npb24oKS5nZXRSZWZyZXNoVG9rZW4oKTtcblxuICAgIGNvbnNvbGUubG9nKCdUb2tlbiByZWZyZXNoLi4uJyk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvZ25pdG9Vc2VyLnJlZnJlc2hTZXNzaW9uKHJlZnJlc2hUb2tlbiwgKGVycikgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVmcmVzaGluZyB0b2tlbjogJywgZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnVG9rZW4gcmVmcmVzaCBjb21wbGV0ZScpO1xuICAgICAgICAgIHJlc29sdmUoMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoQ3VycmVudFVzZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMuYXBpLnF1ZXJ5PEN1cnJlbnRVc2VyUXVlcnlSZXN1bHQ+KHtcbiAgICAgICAgcXVlcnk6IEN1cnJlbnRVc2VyUXVlcnksXG4gICAgICAgIHByb2Nlc3Nvck9wdGlvbnM6IHtcbiAgICAgICAgICBoYXNLZXlzOiBmYWxzZSwgLy8gRG9uJ3QgdHJ5IHRvIGRlY3J5cHQgYW55dGhpbmcgYmVjYXVzZSBrZXlzIGhhdmUgbm90IGJlZW4gc2V0dXAgeWV0XG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICkuY3VycmVudFVzZXI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoUmVzZXRVc2VyKCkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCB0aGlzLmFwaS5xdWVyeTxSZXNldFVzZXJRdWVyeVJlc3VsdD4oe1xuICAgICAgICBxdWVyeTogUmVzZXRVc2VyUXVlcnksXG4gICAgICAgIHByb2Nlc3Nvck9wdGlvbnM6IHtcbiAgICAgICAgICBoYXNLZXlzOiBmYWxzZSwgLy8gRG9uJ3QgdHJ5IHRvIGRlY3J5cHQgYW55dGhpbmcgYmVjYXVzZSBrZXlzIGhhdmUgbm90IGJlZW4gc2V0dXAgeWV0XG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICkudHBQYXNzd29yZFJlc2V0VXNlcjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMga2NMb2dvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5odHRwXG4gICAgICAucG9zdChgJHt0aGlzLmtjQ29uZmlnLmF1dGhVcmx9YXV0aC9zaWduLW91dC9gLCBudWxsLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICB9KVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFBhc3NJZHBQYXJhbXMoXG4gICAgZW1haWxPclBob25lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxQYXNzSWRwUmVzdWx0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cFxuICAgICAgLmdldDxQYXNzSWRwUmVzdWx0PihcbiAgICAgICAgYCR7XG4gICAgICAgICAgdGhpcy5rY0NvbmZpZy5hdXRoVXJsXG4gICAgICAgIH11c2Vycy9wYXNzLWlkcC1wYXJhbXMvP2xvZ2luX25hbWU9JHtlbmNvZGVVUklDb21wb25lbnQoZW1haWxPclBob25lKX1gXG4gICAgICApXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvZ2luSW1wbChcbiAgICBlbWFpbE9yUGhvbmU6IHN0cmluZyxcbiAgICBwYXNzd29yZDogQ3J5cHRvS2V5XG4gICk6IFByb21pc2U8TG9naW5SZXN1bHQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvZ291dCgpO1xuICAgIGNvbnN0IGxvZ2luSWRwUmVzdWx0ID0gYXdhaXQgdGhpcy5sb2dpbklkcChlbWFpbE9yUGhvbmUsIHBhc3N3b3JkKTtcblxuICAgIC8vIENhbid0IGdldCB0aGUgdXNlciB5ZXQgYmVjYXVzZSB3ZSBzdGlsbCBuZWQgdG8gbWVldCBNRkEgY2hhbGxlbmdlc1xuICAgIGlmIChcbiAgICAgIFtcbiAgICAgICAgQ29nbml0b0NoYWxsZW5nZU5hbWUuU01TX01GQSxcbiAgICAgICAgQ29nbml0b0NoYWxsZW5nZU5hbWUuU09GVFdBUkVfVE9LRU5fTUZBLFxuICAgICAgXS5pbmNsdWRlcyhsb2dpbklkcFJlc3VsdC5jb2duaXRvVXNlci5jaGFsbGVuZ2VOYW1lKVxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2hhbGxlbmdlOiB7XG4gICAgICAgICAgY29nbml0b1VzZXI6IGxvZ2luSWRwUmVzdWx0LmNvZ25pdG9Vc2VyLFxuICAgICAgICAgIHJlY292ZXJ5U3RhdHVzOiBsb2dpbklkcFJlc3VsdC5yZWNvdmVyeVN0YXR1cyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5oYW5kbGVQb3N0QXV0aChsb2dpbklkcFJlc3VsdC5yZWNvdmVyeVN0YXR1cyk7XG4gICAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIE1GQSBvbiB0aGUgVFAgcmVzZXQgdXNlci5cbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5sb2FkVXNlcihsb2dpbklkcFJlc3VsdC5jb2duaXRvVXNlciwgcGFzc3dvcmQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXIsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9naW5JZHAoXG4gICAgZW1haWxPclBob25lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IENyeXB0b0tleVxuICApOiBQcm9taXNlPExvZ2luQ2hhbGxlbmdlPiB7XG4gICAgLy8gRG93bmxvYWQgdGhlIHNhbHQgbmVlZGVkIHRvIGRlcml2ZSB0aGUgUGFzc0lkcFxuICAgIGNvbnN0IHBhc3NJZHBBcGlSZXN1bHQgPSBhd2FpdCB0aGlzLmZldGNoUGFzc0lkcFBhcmFtcyhlbWFpbE9yUGhvbmUpO1xuXG4gICAgaWYgKFxuICAgICAgcGFzc0lkcEFwaVJlc3VsdC5wYXNzd29yZENoYW5nZVN0YXR1cyA9PT0gUGFzc3dvcmRDaGFuZ2VTdGF0dXMuSU5fUFJPR1JFU1NcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBLY0NvbmN1cnJlbnRBY2Nlc3NFeGNlcHRpb24oJ0EgcGFzc3dvcmQgY2hhbmdlIGlzIGluIHByb2dyZXNzJyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcGFzc0lkcEFwaVJlc3VsdC5wYXNzd29yZENoYW5nZVN0YXR1cyA9PT0gUGFzc3dvcmRDaGFuZ2VTdGF0dXMuUkVDT1ZFUllcbiAgICApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdJbiByZWNvdmVyeSBtb2RlLicpO1xuXG4gICAgICAvLyBMZXQncyBzYXkgd2UgZG9uJ3Qga25vdyBpZiB0aGUgcGFzc3dvcmQgaXMgdGhlIG5ldyBvbmUgb3IgdGhlIG9sZCBvbmUuIFdlIGp1c3QgaGF2ZSB0byB0cnkgYm90aC5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVzZXI6IExvZ2luQ2hhbGxlbmdlID0ge1xuICAgICAgICAgIGNvZ25pdG9Vc2VyOiBhd2FpdCB0aGlzLmxvZ2luSWRwSW1wbChcbiAgICAgICAgICAgIGVtYWlsT3JQaG9uZSxcbiAgICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgICAgcGFzc0lkcEFwaVJlc3VsdC5uZXdQYXNzSWRwUGFyYW1zXG4gICAgICAgICAgKSxcbiAgICAgICAgICByZWNvdmVyeVN0YXR1czogUmVjb3ZlcnlTdGF0dXMuTkVXX1BBU1NXT1JELFxuICAgICAgICB9O1xuICAgICAgICAvLyBOZXcgcGFzc3dvcmQgd29ya2VkLiBMZXQncyBzZXQgdG8gdGhlIGN1cnJlbnQgcGFzc3dvcmRcblxuICAgICAgICAvLyAtLVBvdGVudGlhbCBGYWlsdXJlIFBvaW50IDEtLVxuICAgICAgICAvLyBpZiBjaGFuZ2VQYXNzd29yZENvbXBsZXRlKCkgZG9lc24ndCBnZXQgY2FsbGVkLCB0aGVuIGl0IHNob3VsZCByZW1haW5cblxuICAgICAgICBjb25zb2xlLmxvZygnTmV3IHBhc3N3b3JkIHdvcmtzIScpO1xuXG4gICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gSnVzdCBidWJibGUgdXAgYW55IG90aGVyIHR5cGUgb2YgZXJyb3IuXG4gICAgICAgIGlmIChlcnJvci5jb2RlICE9PSAnTm90QXV0aG9yaXplZEV4Y2VwdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICAvLyBwYXNzLCB0cnkgYWdhaW4gYXNzdW1pbmcgaXQncyB0aGUgb2xkIHBhc3N3b3JkXG4gICAgICB9XG5cbiAgICAgIC8vIE5vdyBhc3N1bWUgaXQncyB0aGUgcHJldmlvdXMgcGFzc3dvcmQuIEFueSBleGNlcHRpb24gaXMgYWxsb3dlZCB0byBidWJibGUgdXAuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1c2VyOiBMb2dpbkNoYWxsZW5nZSA9IHtcbiAgICAgICAgICBjb2duaXRvVXNlcjogYXdhaXQgdGhpcy5sb2dpbklkcEltcGwoXG4gICAgICAgICAgICBlbWFpbE9yUGhvbmUsXG4gICAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICAgIHBhc3NJZHBBcGlSZXN1bHQuY3VycmVudFBhc3NJZHBQYXJhbXNcbiAgICAgICAgICApLFxuICAgICAgICAgIHJlY292ZXJ5U3RhdHVzOiBSZWNvdmVyeVN0YXR1cy5PTERfUEFTU1dPUkQsXG4gICAgICAgIH07XG4gICAgICAgIC8vIE9sZCBwYXNzd29yZCB3b3JrZWQuXG4gICAgICAgIGNvbnNvbGUubG9nKCdPbGQgcGFzc3dvcmQgd29ya3MhJyk7XG5cbiAgICAgICAgcmV0dXJuIHVzZXI7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBKdXN0IGJ1YmJsZSB1cCBhbnkgb3RoZXIgdHlwZSBvZiBlcnJvci5cbiAgICAgICAgdGhyb3cgZXJyb3IuY29kZSA9PT0gJ05vdEF1dGhvcml6ZWRFeGNlcHRpb24nXG4gICAgICAgICAgPyBuZXcgS2NCYWRSZXF1ZXN0RXhjZXB0aW9uKFxuICAgICAgICAgICAgICAnVGhlIHBhc3N3b3JkIGNoYW5nZSByZXF1ZXN0IHdhcyBpbnRlcnJ1cHRlZCwgcGxlYXNlIHRyeSB0byBsb2dpbiB3aXRoIGJvdGggeW91ciBuZXcgYW5kIG9sZCBwYXNzd29yZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyeSBhZ2FpbiBhcyB0aGUgVFAgcGFzc3dvcmQgcmVzZXQgYWNjb3VudFxuICAgIGlmIChwYXNzSWRwQXBpUmVzdWx0LnRwUGFzc3dvcmRSZXNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVFAgcGFzc3dvcmQgcmVzZXQgaXMgaW4gcHJvY2Vzcy4gV2UgbmVlZCB0byB0cnkgdGhlIHBhc3N3b3JkIGFnYWluc3QgYm90aFxuICAgICAgICAvLyBvcmlnaW5hbCBhY2NvdW50IGFuZCB0aGUgbmV3IHJlc2V0IGFjY291bnQuXG4gICAgICAgIGNvbnN0IHJlc2V0ID0gcGFzc0lkcEFwaVJlc3VsdC50cFBhc3N3b3JkUmVzZXQ7XG4gICAgICAgIGNvbnN0IHVzZXI6IExvZ2luQ2hhbGxlbmdlID0ge1xuICAgICAgICAgIGNvZ25pdG9Vc2VyOiBhd2FpdCB0aGlzLmxvZ2luSWRwSW1wbChcbiAgICAgICAgICAgIHJlc2V0LnJlc2V0VXNlcm5hbWUsXG4gICAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICAgIHJlc2V0LnBhc3NJZHBQYXJhbXNcbiAgICAgICAgICApLFxuICAgICAgICAgIHJlY292ZXJ5U3RhdHVzOiBSZWNvdmVyeVN0YXR1cy5OT05FLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIGNvbnRpbnVlLCB0cnkgYWdhaW4gYXMgcmVndWxhciB1c2VyLlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIExvZ2luIGFzIHJlZ3VsYXIgdXNlclxuICAgIGNvbnN0IHVzZXI6IExvZ2luQ2hhbGxlbmdlID0ge1xuICAgICAgY29nbml0b1VzZXI6IGF3YWl0IHRoaXMubG9naW5JZHBJbXBsKFxuICAgICAgICBlbWFpbE9yUGhvbmUsXG4gICAgICAgIHBhc3N3b3JkLFxuICAgICAgICBwYXNzSWRwQXBpUmVzdWx0LmN1cnJlbnRQYXNzSWRwUGFyYW1zXG4gICAgICApLFxuICAgICAgcmVjb3ZlcnlTdGF0dXM6IFJlY292ZXJ5U3RhdHVzLk5PTkUsXG4gICAgfTtcblxuICAgIHJldHVybiB1c2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2dpbklkcEltcGwoXG4gICAgZW1haWxPclBob25lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IENyeXB0b0tleSxcbiAgICBwYXNzSWRwUGFyYW1zOiBQYXNzSWRwUGFyYW1zXG4gICk6IFByb21pc2U8THJDb2duaXRvVXNlcj4ge1xuICAgIGNvbnN0IHBhc3NJZHBSZXN1bHQgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnlTZXJ2aWNlLmRlcml2ZVBhc3NJZHAoe1xuICAgICAgcGFzc3dvcmQsXG4gICAgICAuLi5wYXNzSWRwUGFyYW1zLFxuICAgIH0pO1xuXG4gICAgLy8gVXNlIHRoZSBkZXJpdmVkIHBhc3N3b3JkIHRvIHNpZ25pbiB3aXRoIGNvZ25pdG9cbiAgICByZXR1cm4gdGhpcy5jb2duaXRvLnNpZ25JbihcbiAgICAgIGVtYWlsT3JQaG9uZSxcbiAgICAgIHRoaXMucGFzc3dvcmRTZXJ2aWNlLmdldFBhc3NJZHBTdHJpbmcocGFzc0lkcFJlc3VsdC5qd2spXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlUG9zdEF1dGgocmVjb3ZlcnlTdGF0dXM6IFJlY292ZXJ5U3RhdHVzKSB7XG4gICAgYXdhaXQgdGhpcy5oYW5kbGVQYXNzd29yZFJlY292ZXJ5KHJlY292ZXJ5U3RhdHVzKTtcbiAgICBhd2FpdCB0aGlzLmhhbmRsZVNlc3Npb25FbmNyeXB0aW9uS2V5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVBhc3N3b3JkUmVjb3ZlcnkocmVjb3ZlcnlTdGF0dXM6IFJlY292ZXJ5U3RhdHVzKSB7XG4gICAgaWYgKHJlY292ZXJ5U3RhdHVzICE9PSBSZWNvdmVyeVN0YXR1cy5OT05FKSB7XG4gICAgICBhd2FpdCB0aGlzLnBhc3N3b3JkU2VydmljZS5jaGFuZ2VQYXNzd29yZENvbXBsZXRlKHtcbiAgICAgICAgdXNlTmV3UGFzc3dvcmQ6IHJlY292ZXJ5U3RhdHVzID09PSBSZWNvdmVyeVN0YXR1cy5ORVdfUEFTU1dPUkQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVNlc3Npb25FbmNyeXB0aW9uS2V5KCkge1xuICAgIGlmICh0aGlzLmtjQ29uZmlnLmRpc2FibGVTZXNzaW9uRW5jcnlwdGlvbktleSkge1xuICAgICAgaWYgKCFpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICdZb3Ugc2hvdWxkIG5vdCBzZXQgZGlzYWJsZVNlc3Npb25FbmNyeXB0aW9uS2V5PVRydWUgaW4gbW9kZSBwcm9kLiBJdCBkZWZhdWx0cyB0byBmYWxzZS4nO1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICAgIHRocm93IG5ldyBLY0ludGVybmFsRXJyb3JFeGNlcHRpb24obXNnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnWW91IGhhdmUgc2V0IGRpc2FibGVTZXNzaW9uRW5jcnlwdGlvbktleT1UcnVlLiBNYWtlIHN1cmUgbm90IHRvIGRvIHRoaXMgaW4gcHJvZCBtb2RlLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2V0IHRoZSBzZXNzaW9uIGtleSB0byBhIG5ldyBlbmNyeXB0aW9uIGtleSBmb3IgdGhpcyBzZXNzaW9uXG4gICAgICBjb25zdCBzZXNzaW9uRW5jcnlwdGlvbktleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeVNlcnZpY2UuY3JlYXRlS2V5KCk7XG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBTZXRTZXNzaW9uRW5jcnlwdGlvbktleU11dGF0aW9uLFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5LnRvSlNPTih0cnVlKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIGluY2x1ZGVLZXlHcmFwaDogZmFsc2UsXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMucGVyc2lzdFNlcnZpY2Uuc2V0U2VydmVyU2Vzc2lvbkVuY3J5cHRpb25LZXkoc2Vzc2lvbkVuY3J5cHRpb25LZXkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29nbml0b1VzZXJBdHRyaWJ1dGUoXG4gICAgYXR0cmlidXRlTmFtZTogc3RyaW5nLFxuICAgIHVzZXJBdHRyaWJ1dGVzOiBDb2duaXRvVXNlckF0dHJpYnV0ZVtdXG4gICkge1xuICAgIGNvbnN0IHVzZXJBdHRyaWJ1dGUgPSB1c2VyQXR0cmlidXRlcy5maW5kKFxuICAgICAgKHgpID0+IHguZ2V0TmFtZSgpID09PSBhdHRyaWJ1dGVOYW1lXG4gICAgKTtcblxuICAgIHJldHVybiB1c2VyQXR0cmlidXRlID8gdXNlckF0dHJpYnV0ZS5nZXRWYWx1ZSgpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFVzZXJLZXlzKG9wdGlvbnM6IHtcbiAgICB1c2VyS2V5czogVXNlcktleXM7XG4gICAgcGFzc3dvcmQ/OiBDcnlwdG9LZXk7XG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk/OiBzdHJpbmc7XG4gIH0pIHtcbiAgICBjb25zdCB7IHVzZXJLZXlzLCBwYXNzd29yZCwgc2Vzc2lvbkVuY3J5cHRpb25LZXkgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoc2Vzc2lvbkVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRoaXMucGVyc2lzdFNlcnZpY2Uuc2V0U2VydmVyU2Vzc2lvbkVuY3J5cHRpb25LZXkoXG4gICAgICAgIGF3YWl0IEpXSy5hc0tleShzZXNzaW9uRW5jcnlwdGlvbktleSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gcGFzc3dvcmQgaXMgbm90IG5lZWRlZCBpZiB0aGUgbWFzdGVyIGtleSBpcyBhbHJlYWR5IHBlcnNpc3RlZC5cbiAgICBpZiAocGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IHBhc3NLZXkgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMua2V5RmFjdG9yeVNlcnZpY2UuZGVyaXZlUGFzc0tleSh7XG4gICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgLi4udXNlcktleXMucGFzc0tleS5wYXNzS2V5UGFyYW1zLFxuICAgICAgICB9KVxuICAgICAgKS5qd2s7XG5cbiAgICAgIGF3YWl0IHRoaXMuaWRsZVNlcnZpY2UucGVyc2lzdE1hc3RlcktleShcbiAgICAgICAgYXdhaXQgdGhpcy5rZXlHcmFwaFNlcnZpY2UudW53cmFwV2l0aFBhc3NLZXkoXG4gICAgICAgICAgdXNlcktleXMucGFzc0tleS5pZCxcbiAgICAgICAgICBwYXNzS2V5LFxuICAgICAgICAgIHVzZXJLZXlzLm1hc3RlcktleS5pZFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFVzZXIoXG4gICAgY29nbml0b1VzZXI6IENvZ25pdG9Vc2VyLFxuICAgIHBhc3N3b3JkPzogQ3J5cHRvS2V5XG4gICk6IFByb21pc2U8QXV0aFVzZXI+IHtcbiAgICBpZiAoY29nbml0b1VzZXIuZ2V0VXNlcm5hbWUoKS5lbmRzV2l0aChUUF9QQVNTV09SRF9SRVNFVF9VU0VSTkFNRV9TVUZGSVgpKSB7XG4gICAgICB0aGlzLnVzZXIgPSBhd2FpdCB0aGlzLmxvYWRSZXNldFVzZXIoY29nbml0b1VzZXIsIHBhc3N3b3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51c2VyID0gYXdhaXQgdGhpcy5sb2FkUmVndWxhclVzZXIoY29nbml0b1VzZXIsIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmlkbGVTZXJ2aWNlLnN0YXJ0KCk7IC8vIFJ1biBpZGxlU2VydmljZSB3aGVuZXZlciB1c2VyIGlzIGxvZ2dlZCBpbi5cblxuICAgIHJldHVybiB0aGlzLnVzZXI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRSZWd1bGFyVXNlcihcbiAgICBjb2duaXRvVXNlcjogQ29nbml0b1VzZXIsXG4gICAgcGFzc3dvcmQ/OiBDcnlwdG9LZXlcbiAgKTogUHJvbWlzZTxBdXRoVXNlcj4ge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gYXdhaXQgdGhpcy5mZXRjaEN1cnJlbnRVc2VyKCk7XG5cbiAgICBhd2FpdCB0aGlzLmxvYWRVc2VyS2V5cyh7XG4gICAgICB1c2VyS2V5czogY3VycmVudFVzZXIuY3VycmVudFVzZXJLZXksXG4gICAgICBwYXNzd29yZCxcbiAgICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5OiBjdXJyZW50VXNlci5zZXNzaW9uRW5jcnlwdGlvbktleSxcbiAgICB9KTtcblxuICAgIC8vIFJlZ3VsYXIgdXNlciBwb3B1bGF0ZXMgYWxsIGtleXNcbiAgICBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5wb3B1bGF0ZUtleXMoY3VycmVudFVzZXIuY3VycmVudFVzZXJLZXkpO1xuXG4gICAgY29uc3QgeyB1c2VybmFtZSB9ID0gY3VycmVudFVzZXI7XG4gICAgY29uc3QgdXNlckF0dHJpYnV0ZXMgPSBhd2FpdCB0aGlzLmNvZ25pdG8udXNlckF0dHJpYnV0ZXMoY29nbml0b1VzZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXJuYW1lLFxuICAgICAgc3ViOiB0aGlzLmdldENvZ25pdG9Vc2VyQXR0cmlidXRlKCdzdWInLCB1c2VyQXR0cmlidXRlcyksXG4gICAgICBsb2dpbkVtYWlsOiB0aGlzLmdldENvZ25pdG9Vc2VyQXR0cmlidXRlKCdlbWFpbCcsIHVzZXJBdHRyaWJ1dGVzKSxcbiAgICAgIHJlc2V0VXNlcjogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUmVzZXRVc2VyKFxuICAgIGNvZ25pdG9Vc2VyOiBDb2duaXRvVXNlcixcbiAgICBwYXNzd29yZD86IENyeXB0b0tleVxuICApOiBQcm9taXNlPEF1dGhVc2VyPiB7XG4gICAgY29uc3QgcmVzZXRVc2VyID0gYXdhaXQgdGhpcy5mZXRjaFJlc2V0VXNlcigpO1xuXG4gICAgY29uc3QgdXNlcktleXMgPSB7XG4gICAgICBwYXNzS2V5OiB7XG4gICAgICAgIGlkOiByZXNldFVzZXIucGFzc0tleS5pZCxcbiAgICAgICAgcGFzc0tleVBhcmFtczogcmVzZXRVc2VyLnBhc3NLZXkucGFzc0tleVBhcmFtcyxcbiAgICAgIH0sXG4gICAgICBtYXN0ZXJLZXk6IHtcbiAgICAgICAgaWQ6IHJlc2V0VXNlci5tYXN0ZXJLZXkuaWQsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCB0aGlzLmxvYWRVc2VyS2V5cyh7XG4gICAgICB1c2VyS2V5cyxcbiAgICAgIHBhc3N3b3JkLFxuICAgICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IHJlc2V0VXNlci5zZXNzaW9uRW5jcnlwdGlvbktleSxcbiAgICB9KTtcblxuICAgIC8vIFJlc2V0IHVzZXIgb25seSBzZXRzIGEgc3Vic2V0IG9mIGtleXNcbiAgICBhd2FpdCB0aGlzLmtleVNlcnZpY2Uuc2V0S2V5cyh1c2VyS2V5cyk7XG5cbiAgICBjb25zdCB7IHVzZXJuYW1lIH0gPSByZXNldFVzZXI7XG4gICAgY29uc3QgdXNlckF0dHJpYnV0ZXMgPSBhd2FpdCB0aGlzLmNvZ25pdG8udXNlckF0dHJpYnV0ZXMoY29nbml0b1VzZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXJuYW1lLFxuICAgICAgc3ViOiB0aGlzLmdldENvZ25pdG9Vc2VyQXR0cmlidXRlKCdzdWInLCB1c2VyQXR0cmlidXRlcyksXG4gICAgICBsb2dpbkVtYWlsOiB0aGlzLmdldENvZ25pdG9Vc2VyQXR0cmlidXRlKCdlbWFpbCcsIHVzZXJBdHRyaWJ1dGVzKSxcbiAgICAgIHJlc2V0VXNlcjoge1xuICAgICAgICBzdGF0ZTogcmVzZXRVc2VyLnN0YXRlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWNvdmVyQXNzZW1ibHlLZXkoXG4gICAgcmVzZXRVc2VyOiBSZXNldFVzZXJRdWVyeVJlc3VsdFsndHBQYXNzd29yZFJlc2V0VXNlciddXG4gICk6IFByb21pc2U8SldLLktleT4ge1xuICAgIGNvbnN0IHByayA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLmdldEtleShyZXNldFVzZXIucHhrLmlkKTtcblxuICAgIGNvbnN0IHBhcnRpYWxzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICByZXNldFVzZXIuYXBwcm92YWxzXG4gICAgICAgIC5maWx0ZXIoKGFwcHJvdmFsKSA9PiAhIWFwcHJvdmFsLnJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5KVxuICAgICAgICAubWFwKChhcHByb3ZhbCkgPT5cbiAgICAgICAgICB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICAgICAgICBwcmssXG4gICAgICAgICAgICBhcHByb3ZhbC5yZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5hc3NlbWJseUNvbnRyb2xsZXIucmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzKTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRlUmVzZXRSZXF1ZXN0KG5ld1Bhc3N3b3JkOiBDcnlwdG9LZXkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZXNldFVzZXIgPSBhd2FpdCB0aGlzLmZldGNoUmVzZXRVc2VyKCk7XG5cbiAgICBpZiAocmVzZXRVc2VyLnN0YXRlICE9PSBUcENsYWltU3RhdGUuQVBQUk9WRUQpIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZFN0YXRlRXhjZXB0aW9uKFxuICAgICAgICAnUGFzc3dvcmQgcmVzZXQgcmVxdWVzdCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFByZXBhcmUgYWxsIG1hdGVyaWFscyB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIGVycm9ycy5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5yZWNvdmVyQXNzZW1ibHlLZXkocmVzZXRVc2VyKTtcblxuICAgIGNvbnN0IHsgcm9vdEtleSB9ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICByZXNldFVzZXIuYXNzZW1ibHlDaXBoZXJEYXRhXG4gICAgKTtcblxuICAgIC8vIE1ha2luZyBzdXJlIGl0J3MgYSB2YWxpZCBrZXkuXG4gICAgY29uc3Qgcm9vdEtleUp3ayA9IGF3YWl0IEpXSy5hc0tleShyb290S2V5KTtcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLmdldEtleShyZXNldFVzZXIubWFzdGVyS2V5LmlkKTtcblxuICAgIGNvbnN0IG1hc3RlcktleVdyYXBwZWRSb290S2V5ID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgICByb290S2V5SndrLnRvSlNPTih0cnVlKVxuICAgICAgKTtcblxuICAgIC8vIFRoZSBuZXcgcGFzc3dvcmRcbiAgICBjb25zdCBuZXdQYXNzSWRwUmVzdWx0ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5U2VydmljZS5kZXJpdmVQYXNzSWRwKHtcbiAgICAgIHBhc3N3b3JkOiBuZXdQYXNzd29yZCxcbiAgICAgIC4uLnJlc2V0VXNlci5wYXNzS2V5LnBhc3NJZHBQYXJhbXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBuZXdJZHBQYXNzd29yZCA9IHRoaXMucGFzc3dvcmRTZXJ2aWNlLmdldFBhc3NJZHBTdHJpbmcoXG4gICAgICBuZXdQYXNzSWRwUmVzdWx0Lmp3a1xuICAgICk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEdldCBhc3NlbWJseSBrZXkgY2hhbGxlbmdlXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBjaGFsbGVuZ2UgPSAoXG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlTXV0YXRpb24sXG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBpbnB1dDoge30sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBpbmNsdWRlS2V5R3JhcGg6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICApXG4gICAgKS5jcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlLmNoYWxsZW5nZTtcblxuICAgIC8vIFNpZ24gdGhlIGNoYWxsZW5nZVxuICAgIC8vIEdlbmVyYXRlIGEgY2xpZW50IHNpZGUgbm9uY2UgdGhhdCdzIG5vIGluIHRoZSBzZXJ2ZXIncyBjb250cm9sLlxuICAgIGNoYWxsZW5nZS5jbGllbnROb25jZSA9IHRoaXMua2V5RmFjdG9yeVNlcnZpY2UucmFuZG9tU3RyaW5nKFxuICAgICAgVFBfUEFTU1dPUkRfUkVTRVRfQ0xJRU5UX05PTkNFX0xFTkdUSFxuICAgICk7XG5cbiAgICBjb25zdCBhc3NlbWJseUtleVZlcmlmaWVyUHJrID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICByZXNldFVzZXIud3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmtcbiAgICApO1xuICAgIGNvbnN0IHNpZ25lZENoYWxsZW5nZSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2Uuc2lnbihcbiAgICAgIGFzc2VtYmx5S2V5VmVyaWZpZXJQcmssXG4gICAgICBjaGFsbGVuZ2VcbiAgICApO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBDaGFuZ2UgcGFzc3dvcmQgZm9yIHRoZSBvcmlnaW5hbCB1c2VyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCB0ZW1wSWRwUGFzc3dvcmQgPSAoXG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBQcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgIHNpZ25lZENoYWxsZW5nZTogSlNPTi5zdHJpbmdpZnkoc2lnbmVkQ2hhbGxlbmdlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBpbmNsdWRlS2V5R3JhcGg6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICApXG4gICAgKS5wcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3QuaWRwUGFzc3dvcmQ7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIExvZ2luIGFzIHRoZSBvcmlnaW5hbCB1c2VyIHVzaW5nIG5ldyB0ZW1wb3JhcnkgcGFzc3dvcmRcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSBvcmlnaW5hbCBhY2NvdW50J3MgcGFzc3dvcmQgaGFzIGJlZW4gY2hhbmdlZFxuICAgIC8vIHRvIGEgdGVtcG9yYXJ5IHBhc3N3b3JkLiBJdCBpcyBubyBsb25nZXIgcG9zc2libGUgZm9yIHRoZSB1c2VyXG4gICAgLy8gdG8gdXNlIHRoZSBvcmlnaW5hbCBwYXNzd29yZCB0byBsb2dpbi4gQW55IHN1Y2Nlc3NmdWwgbG9naW5cbiAgICAvLyBjYW4gb25seSBiZSB1c2luZyB0aGUgdGVtcG9yYXJ5IHBhc3N3b3JkLiBTbyBpdCdzIHNhZmUgdG8gYXNzdW1lXG4gICAgLy8gdGhhdCB3ZSB3YW50IHRvIFwiY29tcGxldGVcIiB0aGUgcGFzc3dvcmQgcmVzZXQuXG5cbiAgICAvLyBUaGVyZSBtYXliZSAyRkEgc28gd2UgbGlzdGVuIGZvciB0aGUgYXV0aCBldmVudCBmcm9tIEFtcGxpZnkuXG4gICAgY29uc3QgcmV0UHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ZW5lciA9IGFzeW5jIChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnBheWxvYWQuZXZlbnQgIT09ICdzaWduSW4nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgSHViLnJlbW92ZSgnYXV0aCcsIGxpc3RlbmVyKTtcblxuICAgICAgICBhd2FpdCB0aGlzLmNvZ25pdG8uc2lnbkluKHJlc2V0VXNlci51c2VybmFtZSwgbmV3SWRwUGFzc3dvcmQpO1xuXG4gICAgICAgIC8vIFN3aXRjaCBvdmVyIHRvIHRoZSBuZXcgc2V0IG9mIGtleXNcbiAgICAgICAgYXdhaXQgdGhpcy5sckdyYXBoUUwubHJNdXRhdGUoXG4gICAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgICAgbXV0YXRpb246IENvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgbWFzdGVyS2V5V3JhcHBlZFJvb3RLZXksXG4gICAgICAgICAgICAgICAgbWFzdGVyS2V5SWQ6IG1hc3RlcktleS5pZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBIdWIubGlzdGVuKCdhdXRoJywgbGlzdGVuZXIpO1xuICAgIH0pO1xuXG4gICAgLy8gU2lnbmluIGFzIHRoZSBvcmlnaW5hbCB1c2VyLiBQYXNzd29yZCBoYXMgYmVlbiByZXNldCB0byB0ZW1wb3Jhcnkgb25lLiBJdCBzaG91bGQgcmV0dXJuXG4gICAgLy8gd2l0aCBORVdfUEFTU1dPUkRfUkVRVUlSRURcbiAgICBsZXQgdXNlciA9IGF3YWl0IHRoaXMuY29nbml0by5zaWduSW4ocmVzZXRVc2VyLnVzZXJuYW1lLCB0ZW1wSWRwUGFzc3dvcmQsIHtcbiAgICAgIG5vUHJveHk6ICd0cnVlJyxcbiAgICB9KTtcblxuICAgIGlmICh1c2VyLmNoYWxsZW5nZU5hbWUgIT09ICdORVdfUEFTU1dPUkRfUkVRVUlSRUQnKSB7XG4gICAgICB0aHJvdyBuZXcgS2NJbnRlcm5hbEVycm9yRXhjZXB0aW9uKFxuICAgICAgICAnRXhwZWN0aW5nIENvZ25pdG8gdG8gaGF2ZSBkb25lIGEgcGFzc3dvcmQgcmVzZXQgYWZ0ZXIgY2FsbCB0byBQcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbi4nXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFNldCBuZXcgcGFzc3dvcmQgb24gSWRwXG4gICAgLy8gdGhlIGF3c0ZldGNoKCkgZnVuY3Rpb24gcGFzc2VzIE5FV19QQVNTV09SRF9SRVFVSVJFRCBkaXJlY3RseSB0byBBV1Mgd2l0aG91dFxuICAgIC8vIGdvaW5nIHRocm91Z2ggdGhlIHByb3h5LlxuICAgIHVzZXIgPSBhd2FpdCB0aGlzLmNvZ25pdG8uY29tcGxldGVOZXdQYXNzd29yZCh1c2VyLCBuZXdJZHBQYXNzd29yZCwge30pO1xuXG4gICAgcmV0dXJuIHJldFByb21pc2U7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gRGVidWcgdXRpbGl0aWVzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBkZWJ1Z0xvZ2luKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBDcnlwdG9LZXkpOiBQcm9taXNlPEF1dGhVc2VyPiB7XG4gICAgLy8gVGhpcyB3aWxsIGZhaWwgaWYgZGVidWcgaXMgbnVsbC4gQnV0IHdoZW4gZGVidWcgaXMgbnVsbCwgdGhpcyBmdW5jdGlvblxuICAgIC8vIHNob3VsZCBub3QgYmUgY2FsbGVkLlxuICAgIHRoaXMua2NDb25maWcuZGVidWcudXNlcm5hbWUgPSB1c2VybmFtZTtcblxuICAgIHJldHVybiB0aGlzLmRlYnVnTG9hZFVzZXIocGFzc3dvcmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkZWJ1Z0xvYWRVc2VyKHBhc3N3b3JkOiBDcnlwdG9LZXkpOiBQcm9taXNlPEF1dGhVc2VyPiB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSBhd2FpdCB0aGlzLmZldGNoQ3VycmVudFVzZXIoKTtcblxuICAgIGNvbnN0IHsgdXNlcm5hbWUsIGN1cnJlbnRVc2VyS2V5IH0gPSBjdXJyZW50VXNlcjtcblxuICAgIC8vIERlYnVnIG1vZGUgY2FuIG5vdCBkZWFsIHdpdGggc2Vzc2lvbiBlbmNyeXB0aW9uIGtleSB5ZXQuXG4gICAgLy8gTk8gU0VTU0lPTiBFTkNSWVBUSU9OIEtFWS5cblxuICAgIGNvbnN0IHBhc3NLZXkgPSAoXG4gICAgICBhd2FpdCB0aGlzLmtleUZhY3RvcnlTZXJ2aWNlLmRlcml2ZVBhc3NLZXkoe1xuICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgLi4uY3VycmVudFVzZXJLZXkucGFzc0tleS5wYXNzS2V5UGFyYW1zLFxuICAgICAgfSlcbiAgICApLmp3aztcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLnVud3JhcFdpdGhQYXNzS2V5KFxuICAgICAgY3VycmVudFVzZXJLZXkucGFzc0tleS5pZCxcbiAgICAgIHBhc3NLZXksXG4gICAgICBjdXJyZW50VXNlcktleS5tYXN0ZXJLZXkuaWRcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5pZGxlU2VydmljZS5wZXJzaXN0TWFzdGVyS2V5KG1hc3RlcktleSk7XG5cbiAgICBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5wb3B1bGF0ZUtleXMoY3VycmVudFVzZXJLZXkpO1xuXG4gICAgdGhpcy51c2VyID0ge1xuICAgICAgdXNlcm5hbWUsXG4gICAgICByZXNldFVzZXI6IG51bGwsXG4gICAgICBzdWI6ICdERUJVR19NT0RFJyxcbiAgICAgIGxvZ2luRW1haWw6ICdERUJVR19NT0RFJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMudXNlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGNhY2hlcyB1c2VyLiBTbyB3ZSBjYW4gc2ltdWxhdGUgYSBwYWdlIHJlZnJlc2ggYW5kIHRlc3QgZ2V0VXNlcigpLlxuICAgKi9cbiAgZGVidWdDbGVhclVzZXIoKSB7XG4gICAgdGhpcy51c2VyID0gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGdldEN1cnJlbnRVc2VyQXR0cmlidXRlcygpOiBQcm9taXNlPExyQ29nbml0b1VzZXJBdHRyaWJ1dGVbXT4ge1xuICAgIGNvbnN0IGNvZ25pdG9Vc2VyID0gYXdhaXQgdGhpcy5jb2duaXRvLmN1cnJlbnRBdXRoZW50aWNhdGVkVXNlcigpO1xuICAgIGNvbnN0IHVzZXJBdHRyaWJ1dGVzID0gYXdhaXQgdGhpcy5jb2duaXRvLnVzZXJBdHRyaWJ1dGVzKGNvZ25pdG9Vc2VyKTtcblxuICAgIHJldHVybiB1c2VyQXR0cmlidXRlcztcbiAgfVxufVxuIl19
604
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQsT0FBTyxFQUFZLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUNMLHFDQUFxQyxFQUNyQyxpQ0FBaUMsR0FDbEMs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Z0JBQ1YsRUFBRTtnQkFDRixRQUFRO2dCQUNSLFNBQVMsRUFBRSxJQUFJO2dCQUNmLEdBQUcsRUFBRSxZQUFZO2dCQUNqQixVQUFVLEVBQUUsWUFBWTthQUN6QixDQUFDO1lBRUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7S0FBQTtJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFSyx3QkFBd0I7O1lBQzVCLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdEUsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztLQUFBO0NBQ0YsQ0FBQTtBQTN2QlEsNkJBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7OztZQUoxQyxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTdEaUQsTUFBTTtZQUEzQixRQUFRO1lBRDVCLFVBQVU7WUFHVixTQUFTO1lBSVQsZ0JBQWdCO1lBTWhCLFVBQVU7WUFEVixlQUFlO1lBRGYsaUJBQWlCO1lBS2pCLGVBQWU7WUFOZixXQUFXO1lBT1gsY0FBYztZQVJkLGlCQUFpQjtZQWFqQixpQ0FBaUM7NENBaUVyQyxNQUFNLFNBQUMsU0FBUzs7QUF4QlIsV0FBVztJQU52QixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsV0FBVyxDQTR2QnZCO1NBNXZCWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGlzRGV2TW9kZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2duaXRvVXNlciB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9hdXRoJztcbmltcG9ydCB7IEF1dGhDbGFzcyB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9hdXRoL2xpYi1lc20vQXV0aCc7XG5pbXBvcnQgeyBIdWIgfSBmcm9tICdAYXdzLWFtcGxpZnkvY29yZSc7XG5pbXBvcnQgeyBDb2duaXRvVXNlckF0dHJpYnV0ZSB9IGZyb20gJ2FtYXpvbi1jb2duaXRvLWlkZW50aXR5LWpzJztcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XG5pbXBvcnQgeyBMckdyYXBoUUxTZXJ2aWNlLCBMck11dGF0aW9uLCBMclNlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQgeyBUcENsYWltU3RhdGUgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZGxlU2VydmljZSB9IGZyb20gJy4uL2lkbGUvaWRsZS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UsIFVzZXJLZXlzIH0gZnJvbSAnLi4va2V5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IFBhc3NJZHBQYXJhbXMgfSBmcm9tICcuLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7IEtjQ29uZmlnLCBLQ19DT05GSUcgfSBmcm9tICcuLi9saWZlLXJlYWR5LmNvbmZpZyc7XG5pbXBvcnQgeyBQYXNzd29yZFNlcnZpY2UgfSBmcm9tICcuLi9wYXNzd29yZC9wYXNzd29yZC5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcnNpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vcGVyc2lzdC9wZXJzaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVFBfUEFTU1dPUkRfUkVTRVRfQ0xJRU5UX05PTkNFX0xFTkdUSCxcbiAgVFBfUEFTU1dPUkRfUkVTRVRfVVNFUk5BTUVfU1VGRklYLFxufSBmcm9tICcuLi90cC1wYXNzd29yZC1yZXNldC90cC1wYXNzd29yZC1yZXNldC5jb25zdGFudHMnO1xuaW1wb3J0IHsgVHBQYXNzd29yZFJlc2V0QXNzZW1ibHlDb250cm9sbGVyIH0gZnJvbSAnLi4vdHAtcGFzc3dvcmQtcmVzZXQvdHAtcGFzc3dvcmQtcmVzZXQuY29udHJvbGxlcic7XG5pbXBvcnQge1xuICBDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbiAgQ3JlYXRlVHBBc3NlbWJseUtleUNoYWxsZW5nZU11dGF0aW9uLFxuICBQcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbn0gZnJvbSAnLi4vdHAtcGFzc3dvcmQtcmVzZXQvdHAtcGFzc3dvcmQtcmVzZXQuZ3FsJztcbmltcG9ydCB7XG4gIEtjQmFkUmVxdWVzdEV4Y2VwdGlvbixcbiAgS2NCYWRTdGF0ZUV4Y2VwdGlvbixcbiAgS2NDb25jdXJyZW50QWNjZXNzRXhjZXB0aW9uLFxuICBLY0ludGVybmFsRXJyb3JFeGNlcHRpb24sXG59IGZyb20gJy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBLZXlDb250YWluZXIgfSBmcm9tICcuLi9fY29tbW9uL2tleSc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQge1xuICBDdXJyZW50VXNlclF1ZXJ5LFxuICBDdXJyZW50VXNlclF1ZXJ5UmVzdWx0LFxuICBSZXNldFVzZXJRdWVyeSxcbiAgUmVzZXRVc2VyUXVlcnlSZXN1bHQsXG4gIFNldFNlc3Npb25FbmNyeXB0aW9uS2V5TXV0YXRpb24sXG59IGZyb20gJy4vYXV0aC5ncWwucHJpdmF0ZSc7XG5pbXBvcnQge1xuICBBdXRoVXNlcixcbiAgQ29nbml0b0NoYWxsZW5nZU5hbWUsXG4gIExvZ2luQ2hhbGxlbmdlLFxuICBMb2dpbk9wdGlvbnMsXG4gIExvZ2luUmVzdWx0LFxuICBMb2dvdXRMaXN0ZW5lcixcbiAgTHJDb2duaXRvVXNlcixcbiAgTHJDb2duaXRvVXNlckF0dHJpYnV0ZSxcbiAgUGFzc0lkcFJlc3VsdCxcbiAgUGFzc3dvcmRDaGFuZ2VTdGF0dXMsXG4gIFJlY292ZXJ5U3RhdHVzLFxufSBmcm9tICcuL2F1dGgudHlwZXMnO1xuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2UgZXh0ZW5kcyBMclNlcnZpY2Uge1xuICBzdGF0aWMgQ0hBTExFTkdFX1RJTUVPVVQgPSAxMDAwICogNjAgKiA1O1xuXG4gIC8vIENvdWxkIHVzZSByeGpzIG9ic2VydmFibGVzIGhlcmUuIEJ1dCB0cnlpbmcgdG8gaGF2ZSBrYy1jbGllbnQgdXNlIGFzIGxpdHRsZSBhbmd1bGFyXG4gIC8vIGZlYXR1cmVzIGFzIHBvc3NpYmxlLiBSeGpzIGlzIG5vdCB1c2VkIGFueXdoZXJlIGVsc2UgaW4ga2MtY2xpZW50LlxuICBwcml2YXRlIGxvZ291dExpc3RlbmVycyA9IG5ldyBTZXQ8TG9nb3V0TGlzdGVuZXI+KCk7XG4gIHByaXZhdGUgdXNlcjogQXV0aFVzZXI7XG4gIC8vIFN0b3JlcyB0aGUgcGFzc3dvcmQgZm9yIHVzZSBhZnRlciBtZmEgdmVyaWZpY2F0aW9uIHRvIGRlY3J5cHQgbWFzdGVyS2V5LlxuICBwcml2YXRlIHBhc3N3b3JkOiBLZXlDb250YWluZXIgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29nbml0bzogQXV0aENsYXNzLFxuICAgIHByaXZhdGUgYXBpOiBMckdyYXBoUUxTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoU2VydmljZTogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5RmFjdG9yeVNlcnZpY2U6IEtleUZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFzc3dvcmRTZXJ2aWNlOiBQYXNzd29yZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZGxlU2VydmljZTogSWRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJzaXN0U2VydmljZTogUGVyc2lzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhc3NlbWJseUNvbnRyb2xsZXI6IFRwUGFzc3dvcmRSZXNldEFzc2VtYmx5Q29udHJvbGxlcixcbiAgICBASW5qZWN0KEtDX0NPTkZJRykgcHJpdmF0ZSBrY0NvbmZpZzogS2NDb25maWdcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIGlmICghaXNEZXZNb2RlKCkpIHtcbiAgICAgIGlmICh0aGlzLmtjQ29uZmlnLmRlYnVnICE9IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEtjQmFkUmVxdWVzdEV4Y2VwdGlvbihcbiAgICAgICAgICAnSW4gcHJvZHVjdGlvbiBtb2RlLCBcIktjQ29uZmlnLmRlYnVnXCIgbXVzdCBiZSBzZXQgdG8gbnVsbCdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbXBvcnRQYXNzd29yZChwbGFpblBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPENyeXB0b0tleT4ge1xuICAgIHJldHVybiB0aGlzLmtleUZhY3RvcnlTZXJ2aWNlLmltcG9ydFBhc3N3b3JkKHBsYWluUGFzc3dvcmQpO1xuICB9XG5cbiAgYXN5bmMgbG9nb3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIE5vdGlmeSBhbGwgbGlzdGVuZXJzIHRvIGNsZWFuIHVwLlxuICAgIGF3YWl0IFByb21pc2UuYWxsKFsuLi50aGlzLmxvZ291dExpc3RlbmVyc10ubWFwKChjYWxsYmFjaykgPT4gY2FsbGJhY2soKSkpO1xuXG4gICAgdGhpcy51c2VyID0gbnVsbDtcbiAgICB0aGlzLmtleVNlcnZpY2UucHVyZ2VLZXlzKCk7XG4gICAgdGhpcy5rZXlHcmFwaFNlcnZpY2UucHVyZ2VLZXlzKCk7XG5cbiAgICAvLyBTaWduIG91dCBvbiBib3RoIGNvZ25pdG8gYW5kIGtjLXNlcnZlclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFt0aGlzLmNvZ25pdG8uc2lnbk91dCgpLCB0aGlzLmtjTG9nb3V0KCldKTtcblxuICAgIGlmICh0aGlzLmtjQ29uZmlnLmRlYnVnPy51c2VybmFtZSkge1xuICAgICAgdGhpcy5rY0NvbmZpZy5kZWJ1Zy51c2VybmFtZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYWRkTG9nb3V0TGlzdGVuZXIoY2FsbGJhY2s6IExvZ291dExpc3RlbmVyKSB7XG4gICAgdGhpcy5sb2dvdXRMaXN0ZW5lcnMuYWRkKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHJlbW92ZUxvZ291dExpc3RlbmVyKGNhbGxiYWNrOiBMb2dvdXRMaXN0ZW5lcikge1xuICAgIHRoaXMubG9nb3V0TGlzdGVuZXJzLmRlbGV0ZShjYWxsYmFjayk7XG4gIH1cblxuICBhc3luYyBsb2dpbihcbiAgICBlbWFpbE9yUGhvbmU6IHN0cmluZyxcbiAgICBwYXNzd29yZDogQ3J5cHRvS2V5LFxuICAgIHsgdHBQYXNzd29yZFJlc2V0QXV0b0NvbXBsZXRlID0gdHJ1ZSB9OiBMb2dpbk9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPExvZ2luUmVzdWx0PiB7XG4gICAgbGV0IGxvZ2luUmVzdWx0OiBMb2dpblJlc3VsdCA9IGF3YWl0IHRoaXMubG9naW5JbXBsKGVtYWlsT3JQaG9uZSwgcGFzc3dvcmQpO1xuXG4gICAgLy8gU2F2ZSB0aGUgcGFzc3dvcmQgZm9yIHVzZSBhZnRlciBtZWV0aW5nIGNoYWxsZW5nZS5cbiAgICBpZiAobG9naW5SZXN1bHQuY2hhbGxlbmdlKSB7XG4gICAgICB0aGlzLnBhc3N3b3JkID0gbmV3IEtleUNvbnRhaW5lcihwYXNzd29yZCwgQXV0aFNlcnZpY2UuQ0hBTExFTkdFX1RJTUVPVVQpO1xuXG4gICAgICByZXR1cm4gbG9naW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdHBQYXNzd29yZFJlc2V0QXV0b0NvbXBsZXRlICYmXG4gICAgICBsb2dpblJlc3VsdC51c2VyLnJlc2V0VXNlcj8uc3RhdGUgPT09IFRwQ2xhaW1TdGF0ZS5BUFBST1ZFRFxuICAgICkge1xuICAgICAgYXdhaXQgdGhpcy5jb21wbGV0ZVJlc2V0UmVxdWVzdChwYXNzd29yZCk7XG4gICAgICBsb2dpblJlc3VsdCA9IGF3YWl0IHRoaXMubG9naW5JbXBsKGVtYWlsT3JQaG9uZSwgcGFzc3dvcmQpO1xuICAgIH1cblxuICAgIHJldHVybiBsb2dpblJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeUxvZ2luKG9wdGlvbnM6IHtcbiAgICBjaGFsbGVuZ2U6IExvZ2luQ2hhbGxlbmdlO1xuICAgIGNvZGU6IHN0cmluZztcbiAgICByZW1lbWJlck1lOiBib29sZWFuO1xuICB9KTogUHJvbWlzZTxMb2dpblJlc3VsdD4ge1xuICAgIGNvbnN0IHsgY2hhbGxlbmdlLCBjb2RlLCByZW1lbWJlck1lIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgVkFMSURfQ0hBTExFTkdFX05BTUVTID0gW1xuICAgICAgQ29nbml0b0NoYWxsZW5nZU5hbWUuU01TX01GQSxcbiAgICAgIENvZ25pdG9DaGFsbGVuZ2VOYW1lLlNPRlRXQVJFX1RPS0VOX01GQSxcbiAgICBdO1xuXG4gICAgaWYgKCFWQUxJRF9DSEFMTEVOR0VfTkFNRVMuaW5jbHVkZXMoY2hhbGxlbmdlLmNvZ25pdG9Vc2VyLmNoYWxsZW5nZU5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRSZXF1ZXN0RXhjZXB0aW9uKFxuICAgICAgICBgY2hhbGxlbmdlTmFtZSBtdXN0IGJlIG9uZSBvZiAke1ZBTElEX0NIQUxMRU5HRV9OQU1FU31gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFRPRE86IHRoaXMuYXV0aC5jb25maXJtU2lnbkluKCkgY291bGQgcmV0dXJuIGFub3RoZXIgY2hhbGxlbmdlLlxuICAgIGNvbnN0IGNvZ25pdG9Vc2VyID0gYXdhaXQgdGhpcy5jb2duaXRvLmNvbmZpcm1TaWduSW4oXG4gICAgICBjaGFsbGVuZ2UuY29nbml0b1VzZXIsXG4gICAgICBjb2RlLFxuICAgICAgY2hhbGxlbmdlLmNvZ25pdG9Vc2VyLmNoYWxsZW5nZU5hbWUgYXNcbiAgICAgICAgfCBDb2duaXRvQ2hhbGxlbmdlTmFtZS5TTVNfTUZBXG4gICAgICAgIHwgQ29nbml0b0NoYWxsZW5nZU5hbWUuU09GVFdBUkVfVE9LRU5fTUZBXG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMuaGFuZGxlUG9zdEF1dGgoY2hhbGxlbmdlLnJlY292ZXJ5U3RhdHVzKTtcblxuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLmxvYWRVc2VyKGNvZ25pdG9Vc2VyLCB0aGlzLnBhc3N3b3JkLnBvcCgpKTtcblxuICAgIC8vIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBzaW5jZSB0aGUgdGhpcy5wYXNzd29yZC5wb3AoKSBhbHJlYWR5IGNsZWFycyB0aGVcbiAgICAvLyBwYXNzd29yZCBpbnNpZGUgdGhlIGNvbnRhaW5lci4gQnV0IGRvZXNuJ3QgaHVydCBlaXRoZXIuXG4gICAgdGhpcy5wYXNzd29yZCA9IG51bGw7XG5cbiAgICBpZiAocmVtZW1iZXJNZSkge1xuICAgICAgY29nbml0b1VzZXIuc2V0RGV2aWNlU3RhdHVzUmVtZW1iZXJlZCh7XG4gICAgICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsdXJlOiAoZSkgPT4gY29uc29sZS5lcnJvcihlKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1c2VyLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBnZXRVc2VyKCk6IFByb21pc2U8QXV0aFVzZXI+IHtcbiAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICByZXR1cm4gdGhpcy51c2VyO1xuICAgIH1cblxuICAgIGNvbnN0IGNvZ25pdG9Vc2VyID0gYXdhaXQgdGhpcy5jb2duaXRvLmN1cnJlbnRBdXRoZW50aWNhdGVkVXNlcigpO1xuXG4gICAgcmV0dXJuIHRoaXMubG9hZFVzZXIoY29nbml0b1VzZXIpO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaEFjY2Vzc1Rva2VuKCkge1xuICAgIGNvbnN0IGNvZ25pdG9Vc2VyOiBDb2duaXRvVXNlciA9XG4gICAgICBhd2FpdCB0aGlzLmNvZ25pdG8uY3VycmVudEF1dGhlbnRpY2F0ZWRVc2VyKCk7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gY29nbml0b1VzZXIuZ2V0U2lnbkluVXNlclNlc3Npb24oKS5nZXRSZWZyZXNoVG9rZW4oKTtcblxuICAgIGNvbnNvbGUubG9nKCdUb2tlbiByZWZyZXNoLi4uJyk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvZ25pdG9Vc2VyLnJlZnJlc2hTZXNzaW9uKHJlZnJlc2hUb2tlbiwgKGVycikgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVmcmVzaGluZyB0b2tlbjogJywgZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnVG9rZW4gcmVmcmVzaCBjb21wbGV0ZScpO1xuICAgICAgICAgIHJlc29sdmUoMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoQ3VycmVudFVzZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IHRoaXMuYXBpLnF1ZXJ5PEN1cnJlbnRVc2VyUXVlcnlSZXN1bHQ+KHtcbiAgICAgICAgcXVlcnk6IEN1cnJlbnRVc2VyUXVlcnksXG4gICAgICAgIHByb2Nlc3Nvck9wdGlvbnM6IHtcbiAgICAgICAgICBoYXNLZXlzOiBmYWxzZSwgLy8gRG9uJ3QgdHJ5IHRvIGRlY3J5cHQgYW55dGhpbmcgYmVjYXVzZSBrZXlzIGhhdmUgbm90IGJlZW4gc2V0dXAgeWV0XG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICkuY3VycmVudFVzZXI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoUmVzZXRVc2VyKCkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCB0aGlzLmFwaS5xdWVyeTxSZXNldFVzZXJRdWVyeVJlc3VsdD4oe1xuICAgICAgICBxdWVyeTogUmVzZXRVc2VyUXVlcnksXG4gICAgICAgIHByb2Nlc3Nvck9wdGlvbnM6IHtcbiAgICAgICAgICBoYXNLZXlzOiBmYWxzZSwgLy8gRG9uJ3QgdHJ5IHRvIGRlY3J5cHQgYW55dGhpbmcgYmVjYXVzZSBrZXlzIGhhdmUgbm90IGJlZW4gc2V0dXAgeWV0XG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICkudHBQYXNzd29yZFJlc2V0VXNlcjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMga2NMb2dvdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5odHRwXG4gICAgICAucG9zdChgJHt0aGlzLmtjQ29uZmlnLmF1dGhVcmx9YXV0aC9zaWduLW91dC9gLCBudWxsLCB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICB9KVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFBhc3NJZHBQYXJhbXMoXG4gICAgZW1haWxPclBob25lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxQYXNzSWRwUmVzdWx0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cFxuICAgICAgLmdldDxQYXNzSWRwUmVzdWx0PihcbiAgICAgICAgYCR7XG4gICAgICAgICAgdGhpcy5rY0NvbmZpZy5hdXRoVXJsXG4gICAgICAgIH11c2Vycy9wYXNzLWlkcC1wYXJhbXMvP2xvZ2luX25hbWU9JHtlbmNvZGVVUklDb21wb25lbnQoZW1haWxPclBob25lKX1gXG4gICAgICApXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvZ2luSW1wbChcbiAgICBlbWFpbE9yUGhvbmU6IHN0cmluZyxcbiAgICBwYXNzd29yZDogQ3J5cHRvS2V5XG4gICk6IFByb21pc2U8TG9naW5SZXN1bHQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvZ291dCgpO1xuICAgIGNvbnN0IGxvZ2luSWRwUmVzdWx0ID0gYXdhaXQgdGhpcy5sb2dpbklkcChlbWFpbE9yUGhvbmUsIHBhc3N3b3JkKTtcblxuICAgIC8vIENhbid0IGdldCB0aGUgdXNlciB5ZXQgYmVjYXVzZSB3ZSBzdGlsbCBuZWQgdG8gbWVldCBNRkEgY2hhbGxlbmdlc1xuICAgIGlmIChcbiAgICAgIFtcbiAgICAgICAgQ29nbml0b0NoYWxsZW5nZU5hbWUuU01TX01GQSxcbiAgICAgICAgQ29nbml0b0NoYWxsZW5nZU5hbWUuU09GVFdBUkVfVE9LRU5fTUZBLFxuICAgICAgXS5pbmNsdWRlcyhsb2dpbklkcFJlc3VsdC5jb2duaXRvVXNlci5jaGFsbGVuZ2VOYW1lKVxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2hhbGxlbmdlOiB7XG4gICAgICAgICAgY29nbml0b1VzZXI6IGxvZ2luSWRwUmVzdWx0LmNvZ25pdG9Vc2VyLFxuICAgICAgICAgIHJlY292ZXJ5U3RhdHVzOiBsb2dpbklkcFJlc3VsdC5yZWNvdmVyeVN0YXR1cyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5oYW5kbGVQb3N0QXV0aChsb2dpbklkcFJlc3VsdC5yZWNvdmVyeVN0YXR1cyk7XG4gICAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIE1GQSBvbiB0aGUgVFAgcmVzZXQgdXNlci5cbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5sb2FkVXNlcihsb2dpbklkcFJlc3VsdC5jb2duaXRvVXNlciwgcGFzc3dvcmQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXIsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9naW5JZHAoXG4gICAgZW1haWxPclBob25lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IENyeXB0b0tleVxuICApOiBQcm9taXNlPExvZ2luQ2hhbGxlbmdlPiB7XG4gICAgLy8gRG93bmxvYWQgdGhlIHNhbHQgbmVlZGVkIHRvIGRlcml2ZSB0aGUgUGFzc0lkcFxuICAgIGNvbnN0IHBhc3NJZHBBcGlSZXN1bHQgPSBhd2FpdCB0aGlzLmZldGNoUGFzc0lkcFBhcmFtcyhlbWFpbE9yUGhvbmUpO1xuXG4gICAgaWYgKFxuICAgICAgcGFzc0lkcEFwaVJlc3VsdC5wYXNzd29yZENoYW5nZVN0YXR1cyA9PT0gUGFzc3dvcmRDaGFuZ2VTdGF0dXMuSU5fUFJPR1JFU1NcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBLY0NvbmN1cnJlbnRBY2Nlc3NFeGNlcHRpb24oJ0EgcGFzc3dvcmQgY2hhbmdlIGlzIGluIHByb2dyZXNzJyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcGFzc0lkcEFwaVJlc3VsdC5wYXNzd29yZENoYW5nZVN0YXR1cyA9PT0gUGFzc3dvcmRDaGFuZ2VTdGF0dXMuUkVDT1ZFUllcbiAgICApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdJbiByZWNvdmVyeSBtb2RlLicpO1xuXG4gICAgICAvLyBMZXQncyBzYXkgd2UgZG9uJ3Qga25vdyBpZiB0aGUgcGFzc3dvcmQgaXMgdGhlIG5ldyBvbmUgb3IgdGhlIG9sZCBvbmUuIFdlIGp1c3QgaGF2ZSB0byB0cnkgYm90aC5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVzZXI6IExvZ2luQ2hhbGxlbmdlID0ge1xuICAgICAgICAgIGNvZ25pdG9Vc2VyOiBhd2FpdCB0aGlzLmxvZ2luSWRwSW1wbChcbiAgICAgICAgICAgIGVtYWlsT3JQaG9uZSxcbiAgICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgICAgcGFzc0lkcEFwaVJlc3VsdC5uZXdQYXNzSWRwUGFyYW1zXG4gICAgICAgICAgKSxcbiAgICAgICAgICByZWNvdmVyeVN0YXR1czogUmVjb3ZlcnlTdGF0dXMuTkVXX1BBU1NXT1JELFxuICAgICAgICB9O1xuICAgICAgICAvLyBOZXcgcGFzc3dvcmQgd29ya2VkLiBMZXQncyBzZXQgdG8gdGhlIGN1cnJlbnQgcGFzc3dvcmRcblxuICAgICAgICAvLyAtLVBvdGVudGlhbCBGYWlsdXJlIFBvaW50IDEtLVxuICAgICAgICAvLyBpZiBjaGFuZ2VQYXNzd29yZENvbXBsZXRlKCkgZG9lc24ndCBnZXQgY2FsbGVkLCB0aGVuIGl0IHNob3VsZCByZW1haW5cblxuICAgICAgICBjb25zb2xlLmxvZygnTmV3IHBhc3N3b3JkIHdvcmtzIScpO1xuXG4gICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gSnVzdCBidWJibGUgdXAgYW55IG90aGVyIHR5cGUgb2YgZXJyb3IuXG4gICAgICAgIGlmIChlcnJvci5jb2RlICE9PSAnTm90QXV0aG9yaXplZEV4Y2VwdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICAvLyBwYXNzLCB0cnkgYWdhaW4gYXNzdW1pbmcgaXQncyB0aGUgb2xkIHBhc3N3b3JkXG4gICAgICB9XG5cbiAgICAgIC8vIE5vdyBhc3N1bWUgaXQncyB0aGUgcHJldmlvdXMgcGFzc3dvcmQuIEFueSBleGNlcHRpb24gaXMgYWxsb3dlZCB0byBidWJibGUgdXAuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1c2VyOiBMb2dpbkNoYWxsZW5nZSA9IHtcbiAgICAgICAgICBjb2duaXRvVXNlcjogYXdhaXQgdGhpcy5sb2dpbklkcEltcGwoXG4gICAgICAgICAgICBlbWFpbE9yUGhvbmUsXG4gICAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICAgIHBhc3NJZHBBcGlSZXN1bHQuY3VycmVudFBhc3NJZHBQYXJhbXNcbiAgICAgICAgICApLFxuICAgICAgICAgIHJlY292ZXJ5U3RhdHVzOiBSZWNvdmVyeVN0YXR1cy5PTERfUEFTU1dPUkQsXG4gICAgICAgIH07XG4gICAgICAgIC8vIE9sZCBwYXNzd29yZCB3b3JrZWQuXG4gICAgICAgIGNvbnNvbGUubG9nKCdPbGQgcGFzc3dvcmQgd29ya3MhJyk7XG5cbiAgICAgICAgcmV0dXJuIHVzZXI7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBKdXN0IGJ1YmJsZSB1cCBhbnkgb3RoZXIgdHlwZSBvZiBlcnJvci5cbiAgICAgICAgdGhyb3cgZXJyb3IuY29kZSA9PT0gJ05vdEF1dGhvcml6ZWRFeGNlcHRpb24nXG4gICAgICAgICAgPyBuZXcgS2NCYWRSZXF1ZXN0RXhjZXB0aW9uKFxuICAgICAgICAgICAgICAnVGhlIHBhc3N3b3JkIGNoYW5nZSByZXF1ZXN0IHdhcyBpbnRlcnJ1cHRlZCwgcGxlYXNlIHRyeSB0byBsb2dpbiB3aXRoIGJvdGggeW91ciBuZXcgYW5kIG9sZCBwYXNzd29yZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyeSBhZ2FpbiBhcyB0aGUgVFAgcGFzc3dvcmQgcmVzZXQgYWNjb3VudFxuICAgIGlmIChwYXNzSWRwQXBpUmVzdWx0LnRwUGFzc3dvcmRSZXNldCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVFAgcGFzc3dvcmQgcmVzZXQgaXMgaW4gcHJvY2Vzcy4gV2UgbmVlZCB0byB0cnkgdGhlIHBhc3N3b3JkIGFnYWluc3QgYm90aFxuICAgICAgICAvLyBvcmlnaW5hbCBhY2NvdW50IGFuZCB0aGUgbmV3IHJlc2V0IGFjY291bnQuXG4gICAgICAgIGNvbnN0IHJlc2V0ID0gcGFzc0lkcEFwaVJlc3VsdC50cFBhc3N3b3JkUmVzZXQ7XG4gICAgICAgIGNvbnN0IHVzZXI6IExvZ2luQ2hhbGxlbmdlID0ge1xuICAgICAgICAgIGNvZ25pdG9Vc2VyOiBhd2FpdCB0aGlzLmxvZ2luSWRwSW1wbChcbiAgICAgICAgICAgIHJlc2V0LnJlc2V0VXNlcm5hbWUsXG4gICAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICAgIHJlc2V0LnBhc3NJZHBQYXJhbXNcbiAgICAgICAgICApLFxuICAgICAgICAgIHJlY292ZXJ5U3RhdHVzOiBSZWNvdmVyeVN0YXR1cy5OT05FLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIGNvbnRpbnVlLCB0cnkgYWdhaW4gYXMgcmVndWxhciB1c2VyLlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIExvZ2luIGFzIHJlZ3VsYXIgdXNlclxuICAgIGNvbnN0IHVzZXI6IExvZ2luQ2hhbGxlbmdlID0ge1xuICAgICAgY29nbml0b1VzZXI6IGF3YWl0IHRoaXMubG9naW5JZHBJbXBsKFxuICAgICAgICBlbWFpbE9yUGhvbmUsXG4gICAgICAgIHBhc3N3b3JkLFxuICAgICAgICBwYXNzSWRwQXBpUmVzdWx0LmN1cnJlbnRQYXNzSWRwUGFyYW1zXG4gICAgICApLFxuICAgICAgcmVjb3ZlcnlTdGF0dXM6IFJlY292ZXJ5U3RhdHVzLk5PTkUsXG4gICAgfTtcblxuICAgIHJldHVybiB1c2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2dpbklkcEltcGwoXG4gICAgZW1haWxPclBob25lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IENyeXB0b0tleSxcbiAgICBwYXNzSWRwUGFyYW1zOiBQYXNzSWRwUGFyYW1zXG4gICk6IFByb21pc2U8THJDb2duaXRvVXNlcj4ge1xuICAgIGNvbnN0IHBhc3NJZHBSZXN1bHQgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnlTZXJ2aWNlLmRlcml2ZVBhc3NJZHAoe1xuICAgICAgcGFzc3dvcmQsXG4gICAgICAuLi5wYXNzSWRwUGFyYW1zLFxuICAgIH0pO1xuXG4gICAgLy8gVXNlIHRoZSBkZXJpdmVkIHBhc3N3b3JkIHRvIHNpZ25pbiB3aXRoIGNvZ25pdG9cbiAgICByZXR1cm4gdGhpcy5jb2duaXRvLnNpZ25JbihcbiAgICAgIGVtYWlsT3JQaG9uZSxcbiAgICAgIHRoaXMucGFzc3dvcmRTZXJ2aWNlLmdldFBhc3NJZHBTdHJpbmcocGFzc0lkcFJlc3VsdC5qd2spXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlUG9zdEF1dGgocmVjb3ZlcnlTdGF0dXM6IFJlY292ZXJ5U3RhdHVzKSB7XG4gICAgYXdhaXQgdGhpcy5oYW5kbGVQYXNzd29yZFJlY292ZXJ5KHJlY292ZXJ5U3RhdHVzKTtcbiAgICBhd2FpdCB0aGlzLmhhbmRsZVNlc3Npb25FbmNyeXB0aW9uS2V5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVBhc3N3b3JkUmVjb3ZlcnkocmVjb3ZlcnlTdGF0dXM6IFJlY292ZXJ5U3RhdHVzKSB7XG4gICAgaWYgKHJlY292ZXJ5U3RhdHVzICE9PSBSZWNvdmVyeVN0YXR1cy5OT05FKSB7XG4gICAgICBhd2FpdCB0aGlzLnBhc3N3b3JkU2VydmljZS5jaGFuZ2VQYXNzd29yZENvbXBsZXRlKHtcbiAgICAgICAgdXNlTmV3UGFzc3dvcmQ6IHJlY292ZXJ5U3RhdHVzID09PSBSZWNvdmVyeVN0YXR1cy5ORVdfUEFTU1dPUkQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVNlc3Npb25FbmNyeXB0aW9uS2V5KCkge1xuICAgIGlmICh0aGlzLmtjQ29uZmlnLmRpc2FibGVTZXNzaW9uRW5jcnlwdGlvbktleSkge1xuICAgICAgaWYgKCFpc0Rldk1vZGUoKSkge1xuICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICdZb3Ugc2hvdWxkIG5vdCBzZXQgZGlzYWJsZVNlc3Npb25FbmNyeXB0aW9uS2V5PVRydWUgaW4gbW9kZSBwcm9kLiBJdCBkZWZhdWx0cyB0byBmYWxzZS4nO1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICAgIHRocm93IG5ldyBLY0ludGVybmFsRXJyb3JFeGNlcHRpb24obXNnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnWW91IGhhdmUgc2V0IGRpc2FibGVTZXNzaW9uRW5jcnlwdGlvbktleT1UcnVlLiBNYWtlIHN1cmUgbm90IHRvIGRvIHRoaXMgaW4gcHJvZCBtb2RlLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2V0IHRoZSBzZXNzaW9uIGtleSB0byBhIG5ldyBlbmNyeXB0aW9uIGtleSBmb3IgdGhpcyBzZXNzaW9uXG4gICAgICBjb25zdCBzZXNzaW9uRW5jcnlwdGlvbktleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeVNlcnZpY2UuY3JlYXRlS2V5KCk7XG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBTZXRTZXNzaW9uRW5jcnlwdGlvbktleU11dGF0aW9uLFxuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5LnRvSlNPTih0cnVlKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgIGluY2x1ZGVLZXlHcmFwaDogZmFsc2UsXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMucGVyc2lzdFNlcnZpY2Uuc2V0U2VydmVyU2Vzc2lvbkVuY3J5cHRpb25LZXkoc2Vzc2lvbkVuY3J5cHRpb25LZXkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29nbml0b1VzZXJBdHRyaWJ1dGUoXG4gICAgYXR0cmlidXRlTmFtZTogc3RyaW5nLFxuICAgIHVzZXJBdHRyaWJ1dGVzOiBDb2duaXRvVXNlckF0dHJpYnV0ZVtdXG4gICkge1xuICAgIGNvbnN0IHVzZXJBdHRyaWJ1dGUgPSB1c2VyQXR0cmlidXRlcy5maW5kKFxuICAgICAgKHgpID0+IHguZ2V0TmFtZSgpID09PSBhdHRyaWJ1dGVOYW1lXG4gICAgKTtcblxuICAgIHJldHVybiB1c2VyQXR0cmlidXRlID8gdXNlckF0dHJpYnV0ZS5nZXRWYWx1ZSgpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFVzZXJLZXlzKG9wdGlvbnM6IHtcbiAgICB1c2VyS2V5czogVXNlcktleXM7XG4gICAgcGFzc3dvcmQ/OiBDcnlwdG9LZXk7XG4gICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk/OiBzdHJpbmc7XG4gIH0pIHtcbiAgICBjb25zdCB7IHVzZXJLZXlzLCBwYXNzd29yZCwgc2Vzc2lvbkVuY3J5cHRpb25LZXkgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoc2Vzc2lvbkVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHRoaXMucGVyc2lzdFNlcnZpY2Uuc2V0U2VydmVyU2Vzc2lvbkVuY3J5cHRpb25LZXkoXG4gICAgICAgIGF3YWl0IEpXSy5hc0tleShzZXNzaW9uRW5jcnlwdGlvbktleSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gcGFzc3dvcmQgaXMgbm90IG5lZWRlZCBpZiB0aGUgbWFzdGVyIGtleSBpcyBhbHJlYWR5IHBlcnNpc3RlZC5cbiAgICBpZiAocGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IHBhc3NLZXkgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMua2V5RmFjdG9yeVNlcnZpY2UuZGVyaXZlUGFzc0tleSh7XG4gICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgLi4udXNlcktleXMucGFzc0tleS5wYXNzS2V5UGFyYW1zLFxuICAgICAgICB9KVxuICAgICAgKS5qd2s7XG5cbiAgICAgIGF3YWl0IHRoaXMuaWRsZVNlcnZpY2UucGVyc2lzdE1hc3RlcktleShcbiAgICAgICAgYXdhaXQgdGhpcy5rZXlHcmFwaFNlcnZpY2UudW53cmFwV2l0aFBhc3NLZXkoXG4gICAgICAgICAgdXNlcktleXMucGFzc0tleS5pZCxcbiAgICAgICAgICBwYXNzS2V5LFxuICAgICAgICAgIHVzZXJLZXlzLm1hc3RlcktleS5pZFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFVzZXIoXG4gICAgY29nbml0b1VzZXI6IENvZ25pdG9Vc2VyLFxuICAgIHBhc3N3b3JkPzogQ3J5cHRvS2V5XG4gICk6IFByb21pc2U8QXV0aFVzZXI+IHtcbiAgICBpZiAoY29nbml0b1VzZXIuZ2V0VXNlcm5hbWUoKS5lbmRzV2l0aChUUF9QQVNTV09SRF9SRVNFVF9VU0VSTkFNRV9TVUZGSVgpKSB7XG4gICAgICB0aGlzLnVzZXIgPSBhd2FpdCB0aGlzLmxvYWRSZXNldFVzZXIoY29nbml0b1VzZXIsIHBhc3N3b3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51c2VyID0gYXdhaXQgdGhpcy5sb2FkUmVndWxhclVzZXIoY29nbml0b1VzZXIsIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmlkbGVTZXJ2aWNlLnN0YXJ0KCk7IC8vIFJ1biBpZGxlU2VydmljZSB3aGVuZXZlciB1c2VyIGlzIGxvZ2dlZCBpbi5cblxuICAgIHJldHVybiB0aGlzLnVzZXI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRSZWd1bGFyVXNlcihcbiAgICBjb2duaXRvVXNlcjogQ29nbml0b1VzZXIsXG4gICAgcGFzc3dvcmQ/OiBDcnlwdG9LZXlcbiAgKTogUHJvbWlzZTxBdXRoVXNlcj4ge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gYXdhaXQgdGhpcy5mZXRjaEN1cnJlbnRVc2VyKCk7XG5cbiAgICBhd2FpdCB0aGlzLmxvYWRVc2VyS2V5cyh7XG4gICAgICB1c2VyS2V5czogY3VycmVudFVzZXIuY3VycmVudFVzZXJLZXksXG4gICAgICBwYXNzd29yZCxcbiAgICAgIHNlc3Npb25FbmNyeXB0aW9uS2V5OiBjdXJyZW50VXNlci5zZXNzaW9uRW5jcnlwdGlvbktleSxcbiAgICB9KTtcblxuICAgIC8vIFJlZ3VsYXIgdXNlciBwb3B1bGF0ZXMgYWxsIGtleXNcbiAgICBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5wb3B1bGF0ZUtleXMoY3VycmVudFVzZXIuY3VycmVudFVzZXJLZXkpO1xuXG4gICAgY29uc3QgeyBpZCwgdXNlcm5hbWUgfSA9IGN1cnJlbnRVc2VyO1xuICAgIGNvbnN0IHVzZXJBdHRyaWJ1dGVzID0gYXdhaXQgdGhpcy5jb2duaXRvLnVzZXJBdHRyaWJ1dGVzKGNvZ25pdG9Vc2VyKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZCxcbiAgICAgIHVzZXJuYW1lLFxuICAgICAgc3ViOiB0aGlzLmdldENvZ25pdG9Vc2VyQXR0cmlidXRlKCdzdWInLCB1c2VyQXR0cmlidXRlcyksXG4gICAgICBsb2dpbkVtYWlsOiB0aGlzLmdldENvZ25pdG9Vc2VyQXR0cmlidXRlKCdlbWFpbCcsIHVzZXJBdHRyaWJ1dGVzKSxcbiAgICAgIHJlc2V0VXNlcjogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUmVzZXRVc2VyKFxuICAgIGNvZ25pdG9Vc2VyOiBDb2duaXRvVXNlcixcbiAgICBwYXNzd29yZD86IENyeXB0b0tleVxuICApOiBQcm9taXNlPEF1dGhVc2VyPiB7XG4gICAgY29uc3QgcmVzZXRVc2VyID0gYXdhaXQgdGhpcy5mZXRjaFJlc2V0VXNlcigpO1xuXG4gICAgY29uc3QgdXNlcktleXMgPSB7XG4gICAgICBwYXNzS2V5OiB7XG4gICAgICAgIGlkOiByZXNldFVzZXIucGFzc0tleS5pZCxcbiAgICAgICAgcGFzc0tleVBhcmFtczogcmVzZXRVc2VyLnBhc3NLZXkucGFzc0tleVBhcmFtcyxcbiAgICAgIH0sXG4gICAgICBtYXN0ZXJLZXk6IHtcbiAgICAgICAgaWQ6IHJlc2V0VXNlci5tYXN0ZXJLZXkuaWQsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCB0aGlzLmxvYWRVc2VyS2V5cyh7XG4gICAgICB1c2VyS2V5cyxcbiAgICAgIHBhc3N3b3JkLFxuICAgICAgc2Vzc2lvbkVuY3J5cHRpb25LZXk6IHJlc2V0VXNlci5zZXNzaW9uRW5jcnlwdGlvbktleSxcbiAgICB9KTtcblxuICAgIC8vIFJlc2V0IHVzZXIgb25seSBzZXRzIGEgc3Vic2V0IG9mIGtleXNcbiAgICBhd2FpdCB0aGlzLmtleVNlcnZpY2Uuc2V0S2V5cyh1c2VyS2V5cyk7XG5cbiAgICBjb25zdCB7IHVzZXJuYW1lIH0gPSByZXNldFVzZXI7XG4gICAgY29uc3QgdXNlckF0dHJpYnV0ZXMgPSBhd2FpdCB0aGlzLmNvZ25pdG8udXNlckF0dHJpYnV0ZXMoY29nbml0b1VzZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXJuYW1lLFxuICAgICAgc3ViOiB0aGlzLmdldENvZ25pdG9Vc2VyQXR0cmlidXRlKCdzdWInLCB1c2VyQXR0cmlidXRlcyksXG4gICAgICBsb2dpbkVtYWlsOiB0aGlzLmdldENvZ25pdG9Vc2VyQXR0cmlidXRlKCdlbWFpbCcsIHVzZXJBdHRyaWJ1dGVzKSxcbiAgICAgIHJlc2V0VXNlcjoge1xuICAgICAgICBzdGF0ZTogcmVzZXRVc2VyLnN0YXRlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWNvdmVyQXNzZW1ibHlLZXkoXG4gICAgcmVzZXRVc2VyOiBSZXNldFVzZXJRdWVyeVJlc3VsdFsndHBQYXNzd29yZFJlc2V0VXNlciddXG4gICk6IFByb21pc2U8SldLLktleT4ge1xuICAgIGNvbnN0IHByayA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLmdldEtleShyZXNldFVzZXIucHhrLmlkKTtcblxuICAgIGNvbnN0IHBhcnRpYWxzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICByZXNldFVzZXIuYXBwcm92YWxzXG4gICAgICAgIC5maWx0ZXIoKGFwcHJvdmFsKSA9PiAhIWFwcHJvdmFsLnJlY2VpdmVyQ2lwaGVyUGFydGlhbEFzc2VtYmx5S2V5KVxuICAgICAgICAubWFwKChhcHByb3ZhbCkgPT5cbiAgICAgICAgICB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICAgICAgICBwcmssXG4gICAgICAgICAgICBhcHByb3ZhbC5yZWNlaXZlckNpcGhlclBhcnRpYWxBc3NlbWJseUtleVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5hc3NlbWJseUNvbnRyb2xsZXIucmVjb3ZlckFzc2VtYmx5S2V5KHBhcnRpYWxzKTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRlUmVzZXRSZXF1ZXN0KG5ld1Bhc3N3b3JkOiBDcnlwdG9LZXkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZXNldFVzZXIgPSBhd2FpdCB0aGlzLmZldGNoUmVzZXRVc2VyKCk7XG5cbiAgICBpZiAocmVzZXRVc2VyLnN0YXRlICE9PSBUcENsYWltU3RhdGUuQVBQUk9WRUQpIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZFN0YXRlRXhjZXB0aW9uKFxuICAgICAgICAnUGFzc3dvcmQgcmVzZXQgcmVxdWVzdCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFByZXBhcmUgYWxsIG1hdGVyaWFscyB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIGVycm9ycy5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGFzc2VtYmx5S2V5ID0gYXdhaXQgdGhpcy5yZWNvdmVyQXNzZW1ibHlLZXkocmVzZXRVc2VyKTtcblxuICAgIGNvbnN0IHsgcm9vdEtleSB9ID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICByZXNldFVzZXIuYXNzZW1ibHlDaXBoZXJEYXRhXG4gICAgKTtcblxuICAgIC8vIE1ha2luZyBzdXJlIGl0J3MgYSB2YWxpZCBrZXkuXG4gICAgY29uc3Qgcm9vdEtleUp3ayA9IGF3YWl0IEpXSy5hc0tleShyb290S2V5KTtcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLmdldEtleShyZXNldFVzZXIubWFzdGVyS2V5LmlkKTtcblxuICAgIGNvbnN0IG1hc3RlcktleVdyYXBwZWRSb290S2V5ID1cbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgICByb290S2V5SndrLnRvSlNPTih0cnVlKVxuICAgICAgKTtcblxuICAgIC8vIFRoZSBuZXcgcGFzc3dvcmRcbiAgICBjb25zdCBuZXdQYXNzSWRwUmVzdWx0ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5U2VydmljZS5kZXJpdmVQYXNzSWRwKHtcbiAgICAgIHBhc3N3b3JkOiBuZXdQYXNzd29yZCxcbiAgICAgIC4uLnJlc2V0VXNlci5wYXNzS2V5LnBhc3NJZHBQYXJhbXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBuZXdJZHBQYXNzd29yZCA9IHRoaXMucGFzc3dvcmRTZXJ2aWNlLmdldFBhc3NJZHBTdHJpbmcoXG4gICAgICBuZXdQYXNzSWRwUmVzdWx0Lmp3a1xuICAgICk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEdldCBhc3NlbWJseSBrZXkgY2hhbGxlbmdlXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBjaGFsbGVuZ2UgPSAoXG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBDcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlTXV0YXRpb24sXG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBpbnB1dDoge30sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBpbmNsdWRlS2V5R3JhcGg6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICApXG4gICAgKS5jcmVhdGVUcEFzc2VtYmx5S2V5Q2hhbGxlbmdlLmNoYWxsZW5nZTtcblxuICAgIC8vIFNpZ24gdGhlIGNoYWxsZW5nZVxuICAgIC8vIEdlbmVyYXRlIGEgY2xpZW50IHNpZGUgbm9uY2UgdGhhdCdzIG5vIGluIHRoZSBzZXJ2ZXIncyBjb250cm9sLlxuICAgIGNoYWxsZW5nZS5jbGllbnROb25jZSA9IHRoaXMua2V5RmFjdG9yeVNlcnZpY2UucmFuZG9tU3RyaW5nKFxuICAgICAgVFBfUEFTU1dPUkRfUkVTRVRfQ0xJRU5UX05PTkNFX0xFTkdUSFxuICAgICk7XG5cbiAgICBjb25zdCBhc3NlbWJseUtleVZlcmlmaWVyUHJrID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgYXNzZW1ibHlLZXksXG4gICAgICByZXNldFVzZXIud3JhcHBlZEFzc2VtYmx5S2V5VmVyaWZpZXJQcmtcbiAgICApO1xuICAgIGNvbnN0IHNpZ25lZENoYWxsZW5nZSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2Uuc2lnbihcbiAgICAgIGFzc2VtYmx5S2V5VmVyaWZpZXJQcmssXG4gICAgICBjaGFsbGVuZ2VcbiAgICApO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBDaGFuZ2UgcGFzc3dvcmQgZm9yIHRoZSBvcmlnaW5hbCB1c2VyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCB0ZW1wSWRwUGFzc3dvcmQgPSAoXG4gICAgICBhd2FpdCB0aGlzLmxyR3JhcGhRTC5sck11dGF0ZShcbiAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgIG11dGF0aW9uOiBQcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbixcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgIHNpZ25lZENoYWxsZW5nZTogSlNPTi5zdHJpbmdpZnkoc2lnbmVkQ2hhbGxlbmdlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBpbmNsdWRlS2V5R3JhcGg6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICApXG4gICAgKS5wcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3QuaWRwUGFzc3dvcmQ7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIExvZ2luIGFzIHRoZSBvcmlnaW5hbCB1c2VyIHVzaW5nIG5ldyB0ZW1wb3JhcnkgcGFzc3dvcmRcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSBvcmlnaW5hbCBhY2NvdW50J3MgcGFzc3dvcmQgaGFzIGJlZW4gY2hhbmdlZFxuICAgIC8vIHRvIGEgdGVtcG9yYXJ5IHBhc3N3b3JkLiBJdCBpcyBubyBsb25nZXIgcG9zc2libGUgZm9yIHRoZSB1c2VyXG4gICAgLy8gdG8gdXNlIHRoZSBvcmlnaW5hbCBwYXNzd29yZCB0byBsb2dpbi4gQW55IHN1Y2Nlc3NmdWwgbG9naW5cbiAgICAvLyBjYW4gb25seSBiZSB1c2luZyB0aGUgdGVtcG9yYXJ5IHBhc3N3b3JkLiBTbyBpdCdzIHNhZmUgdG8gYXNzdW1lXG4gICAgLy8gdGhhdCB3ZSB3YW50IHRvIFwiY29tcGxldGVcIiB0aGUgcGFzc3dvcmQgcmVzZXQuXG5cbiAgICAvLyBUaGVyZSBtYXliZSAyRkEgc28gd2UgbGlzdGVuIGZvciB0aGUgYXV0aCBldmVudCBmcm9tIEFtcGxpZnkuXG4gICAgY29uc3QgcmV0UHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBsaXN0ZW5lciA9IGFzeW5jIChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLnBheWxvYWQuZXZlbnQgIT09ICdzaWduSW4nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgSHViLnJlbW92ZSgnYXV0aCcsIGxpc3RlbmVyKTtcblxuICAgICAgICBhd2FpdCB0aGlzLmNvZ25pdG8uc2lnbkluKHJlc2V0VXNlci51c2VybmFtZSwgbmV3SWRwUGFzc3dvcmQpO1xuXG4gICAgICAgIC8vIFN3aXRjaCBvdmVyIHRvIHRoZSBuZXcgc2V0IG9mIGtleXNcbiAgICAgICAgYXdhaXQgdGhpcy5sckdyYXBoUUwubHJNdXRhdGUoXG4gICAgICAgICAgbmV3IExyTXV0YXRpb24oe1xuICAgICAgICAgICAgbXV0YXRpb246IENvbXBsZXRlVHBQYXNzd29yZFJlc2V0UmVxdWVzdE11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgbWFzdGVyS2V5V3JhcHBlZFJvb3RLZXksXG4gICAgICAgICAgICAgICAgbWFzdGVyS2V5SWQ6IG1hc3RlcktleS5pZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICBIdWIubGlzdGVuKCdhdXRoJywgbGlzdGVuZXIpO1xuICAgIH0pO1xuXG4gICAgLy8gU2lnbmluIGFzIHRoZSBvcmlnaW5hbCB1c2VyLiBQYXNzd29yZCBoYXMgYmVlbiByZXNldCB0byB0ZW1wb3Jhcnkgb25lLiBJdCBzaG91bGQgcmV0dXJuXG4gICAgLy8gd2l0aCBORVdfUEFTU1dPUkRfUkVRVUlSRURcbiAgICBsZXQgdXNlciA9IGF3YWl0IHRoaXMuY29nbml0by5zaWduSW4ocmVzZXRVc2VyLnVzZXJuYW1lLCB0ZW1wSWRwUGFzc3dvcmQsIHtcbiAgICAgIG5vUHJveHk6ICd0cnVlJyxcbiAgICB9KTtcblxuICAgIGlmICh1c2VyLmNoYWxsZW5nZU5hbWUgIT09ICdORVdfUEFTU1dPUkRfUkVRVUlSRUQnKSB7XG4gICAgICB0aHJvdyBuZXcgS2NJbnRlcm5hbEVycm9yRXhjZXB0aW9uKFxuICAgICAgICAnRXhwZWN0aW5nIENvZ25pdG8gdG8gaGF2ZSBkb25lIGEgcGFzc3dvcmQgcmVzZXQgYWZ0ZXIgY2FsbCB0byBQcmVDb21wbGV0ZVRwUGFzc3dvcmRSZXNldFJlcXVlc3RNdXRhdGlvbi4nXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFNldCBuZXcgcGFzc3dvcmQgb24gSWRwXG4gICAgLy8gdGhlIGF3c0ZldGNoKCkgZnVuY3Rpb24gcGFzc2VzIE5FV19QQVNTV09SRF9SRVFVSVJFRCBkaXJlY3RseSB0byBBV1Mgd2l0aG91dFxuICAgIC8vIGdvaW5nIHRocm91Z2ggdGhlIHByb3h5LlxuICAgIHVzZXIgPSBhd2FpdCB0aGlzLmNvZ25pdG8uY29tcGxldGVOZXdQYXNzd29yZCh1c2VyLCBuZXdJZHBQYXNzd29yZCwge30pO1xuXG4gICAgcmV0dXJuIHJldFByb21pc2U7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gRGVidWcgdXRpbGl0aWVzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBkZWJ1Z0xvZ2luKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBDcnlwdG9LZXkpOiBQcm9taXNlPEF1dGhVc2VyPiB7XG4gICAgLy8gVGhpcyB3aWxsIGZhaWwgaWYgZGVidWcgaXMgbnVsbC4gQnV0IHdoZW4gZGVidWcgaXMgbnVsbCwgdGhpcyBmdW5jdGlvblxuICAgIC8vIHNob3VsZCBub3QgYmUgY2FsbGVkLlxuICAgIHRoaXMua2NDb25maWcuZGVidWcudXNlcm5hbWUgPSB1c2VybmFtZTtcblxuICAgIHJldHVybiB0aGlzLmRlYnVnTG9hZFVzZXIocGFzc3dvcmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkZWJ1Z0xvYWRVc2VyKHBhc3N3b3JkOiBDcnlwdG9LZXkpOiBQcm9taXNlPEF1dGhVc2VyPiB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSBhd2FpdCB0aGlzLmZldGNoQ3VycmVudFVzZXIoKTtcblxuICAgIGNvbnN0IHsgaWQsIHVzZXJuYW1lLCBjdXJyZW50VXNlcktleSB9ID0gY3VycmVudFVzZXI7XG5cbiAgICAvLyBEZWJ1ZyBtb2RlIGNhbiBub3QgZGVhbCB3aXRoIHNlc3Npb24gZW5jcnlwdGlvbiBrZXkgeWV0LlxuICAgIC8vIE5PIFNFU1NJT04gRU5DUllQVElPTiBLRVkuXG5cbiAgICBjb25zdCBwYXNzS2V5ID0gKFxuICAgICAgYXdhaXQgdGhpcy5rZXlGYWN0b3J5U2VydmljZS5kZXJpdmVQYXNzS2V5KHtcbiAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgIC4uLmN1cnJlbnRVc2VyS2V5LnBhc3NLZXkucGFzc0tleVBhcmFtcyxcbiAgICAgIH0pXG4gICAgKS5qd2s7XG5cbiAgICBjb25zdCBtYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS51bndyYXBXaXRoUGFzc0tleShcbiAgICAgIGN1cnJlbnRVc2VyS2V5LnBhc3NLZXkuaWQsXG4gICAgICBwYXNzS2V5LFxuICAgICAgY3VycmVudFVzZXJLZXkubWFzdGVyS2V5LmlkXG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMuaWRsZVNlcnZpY2UucGVyc2lzdE1hc3RlcktleShtYXN0ZXJLZXkpO1xuXG4gICAgYXdhaXQgdGhpcy5rZXlHcmFwaFNlcnZpY2UucG9wdWxhdGVLZXlzKGN1cnJlbnRVc2VyS2V5KTtcblxuICAgIHRoaXMudXNlciA9IHtcbiAgICAgIGlkLFxuICAgICAgdXNlcm5hbWUsXG4gICAgICByZXNldFVzZXI6IG51bGwsXG4gICAgICBzdWI6ICdERUJVR19NT0RFJyxcbiAgICAgIGxvZ2luRW1haWw6ICdERUJVR19NT0RFJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMudXNlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGNhY2hlcyB1c2VyLiBTbyB3ZSBjYW4gc2ltdWxhdGUgYSBwYWdlIHJlZnJlc2ggYW5kIHRlc3QgZ2V0VXNlcigpLlxuICAgKi9cbiAgZGVidWdDbGVhclVzZXIoKSB7XG4gICAgdGhpcy51c2VyID0gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGdldEN1cnJlbnRVc2VyQXR0cmlidXRlcygpOiBQcm9taXNlPExyQ29nbml0b1VzZXJBdHRyaWJ1dGVbXT4ge1xuICAgIGNvbnN0IGNvZ25pdG9Vc2VyID0gYXdhaXQgdGhpcy5jb2duaXRvLmN1cnJlbnRBdXRoZW50aWNhdGVkVXNlcigpO1xuICAgIGNvbnN0IHVzZXJBdHRyaWJ1dGVzID0gYXdhaXQgdGhpcy5jb2duaXRvLnVzZXJBdHRyaWJ1dGVzKGNvZ25pdG9Vc2VyKTtcblxuICAgIHJldHVybiB1c2VyQXR0cmlidXRlcztcbiAgfVxufVxuIl19