ngx-histaff-alpha 4.1.9 → 4.2.0

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1hbmQtaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWhlYWRlci1wYXJhbXMvZW51bS1hbmQtaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUgfSBmcm9tIFwiLi4vLi4vZW51bS9FbnVtRm9ybUJhc2VDb250b2xUeXBlXCI7XHJcbmltcG9ydCB7IEVudW1Db3JlVGFibGVQaXBlVHlwZSB9IGZyb20gXCIuLi9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZVwiO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZSB9IGZyb20gXCIuLi9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIvRW51bUNvcmVGb3JtQ29udHJvbFNlZWtlclNvdXJjZVR5cGVcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSUNvcmVEcm9wZG93bk9wdGlvbiB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL0lDb3JlRHJvcGRvd25PcHRpb25cIjtcclxuaW1wb3J0IHsgSUNvcmVDaGVja2xpc3RPcHRpb24gfSBmcm9tIFwiLi4vY29yZS1jaGVja2xpc3QvY29yZS1jaGVja2xpc3QvY29yZS1jaGVja2xpc3QuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IElGaWx0ZXJPcGVyYXRvciwgSUluT3BlcmF0b3IgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9JUXVlcnlMaXN0UmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBhcGkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJQ29yZURhdGVQaWNrZXJSYW5nZSB9IGZyb20gXCIuLi9jb3JlLWRhdGUtcGlja2VyL2NvcmUtZGF0ZS1waWNrZXIvY29yZS1kYXRlLXBpY2tlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSB9IGZyb20gXCIuLi9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS5jb21wb25lbnRcIjtcclxuXHJcbi8vIFRoaXMgaXMgYSBzaW1wbGllZCB2ZXJzaW9uIG9mIElGb3JtQmFzZUNvbnRyb2xcclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZVBhcmFtQ29udHJvbCB7XHJcblxyXG4gICAgLyogQ09NUEFSSU5HIHx8IEZJVEVSSU5HIHx8IElOICovXHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBuZ01vZGVsOiBhbnk7XHJcbiAgICBuZ01vZGVsQ2hhbmdlOiAobmdNb2RlbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gdm9pZDtcclxuICAgIGZpbHRlck9wZXJhdG9yPzogSUZpbHRlck9wZXJhdG9yLFxyXG4gICAgaW5PcGVyYXRvcj86IElJbk9wZXJhdG9yLFxyXG4gICAgLyoqKi9cclxuXHJcbiAgICAvKiBUTyBSRU5ERVIgQ09OVFJPTCAqL1xyXG4gICAgZmxleFNpemU6IG51bWJlcjtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUgfCBzdHJpbmcsXHJcbiAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleSB8IHN0cmluZyxcclxuICAgIHR5cGU/OiBzdHJpbmcsXHJcbiAgICB2YWx1ZT86IGFueSxcclxuICAgIHN0ZXA/OiBzdHJpbmcsIC8vIHdoZW4gdHlwZTogJ251bWJlcicgYW5kIHlvdSBkZXNpcmUgZGVjaW1hbCA9PiBzdGVwOiAnLjAxJ1xyXG4gICAgcGlwZT86IEVudW1Db3JlVGFibGVQaXBlVHlwZSwgLy8gc2hhcmVkIHBpcGUgZnJvbSBDb3JlVGFibGVcclxuICAgIC8qIHdoZW4gdXNpbmcgYWxtb3N0IGFsbCBjb250cm9scyAqL1xyXG4gICAgc2Vla2VyU291cmNlVHlwZT86IEVudW1Db3JlRm9ybUNvbnRyb2xTZWVrZXJTb3VyY2VUeXBlIHwgc3RyaW5nLFxyXG4gICAgLyogd2hlbiB1c2luZyBDb3JlRW1wbG95ZWVTZWVrZXIgKi9cclxuICAgIGJvdW5kRnJvbT86IHN0cmluZztcclxuICAgIHNob3duRnJvbT86IHN0cmluZztcclxuICAgIGRyb3Bkb3duT3B0aW9ucyQ/OiBCZWhhdmlvclN1YmplY3Q8SUNvcmVEcm9wZG93bk9wdGlvbltdPjsgLy8gV0hFTiBVU0lORyBDb3JlRHJvcGRvd25Db21wb25lbnRcclxuICAgIGNoZWNrbGlzdE9wdGlvbnMkPzogQmVoYXZpb3JTdWJqZWN0PElDb3JlQ2hlY2tsaXN0T3B0aW9uW10+OyAvLyBXSEVOIFVTSU5HIENvcmVDaGVja2xpc3RDb21wb25lbnRcclxuICAgIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgICBhY2Nlc3Nvck1vZGU/OiBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlOyAvLyBXSEVOIFVTSU5HIENvcmVPcmdQYXJhbURyb3Bkb3duQ29tcG9uZW50XHJcbiAgICBwb3B1cEFsaWduPzogc3RyaW5nOyAvLyBXSEVOIFVTSU5HIENvcmVEYXRlUGlja2VyXHJcblxyXG4gICAgLyogd2hlbiB1c2luZyBDb3JlRGF0ZVBpY2tlciAqL1xyXG4gICAgcmFuZ2VMaW1pdD86IElDb3JlRGF0ZVBpY2tlclJhbmdlO1xyXG4gICAgXHJcbiAgICBnZXRCeUlkT2JqZWN0JD86IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gICAgZ2V0QnlJZEFwaT86IGFwaTtcclxuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcclxuXHJcbiAgICBvYmplY3RMaXN0JD86IEJlaGF2aW9yU3ViamVjdDxhbnlbXT47XHJcbiAgICBtdWx0aU1vZGU/OiBib29sZWFuO1xyXG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1hbmQtaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWhlYWRlci1wYXJhbXMvZW51bS1hbmQtaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUgfSBmcm9tIFwiLi4vLi4vZW51bS9FbnVtRm9ybUJhc2VDb250b2xUeXBlXCI7XHJcbmltcG9ydCB7IEVudW1Db3JlVGFibGVQaXBlVHlwZSB9IGZyb20gXCIuLi9jb3JlLXRhYmxlL0VudW1Db3JlVGFibGVQaXBlVHlwZVwiO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUZvcm1Db250cm9sU2Vla2VyU291cmNlVHlwZSB9IGZyb20gXCIuLi9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIvRW51bUNvcmVGb3JtQ29udHJvbFNlZWtlclNvdXJjZVR5cGVcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSUNvcmVEcm9wZG93bk9wdGlvbiB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL0lDb3JlRHJvcGRvd25PcHRpb25cIjtcclxuaW1wb3J0IHsgSUNvcmVDaGVja2xpc3RPcHRpb24gfSBmcm9tIFwiLi4vY29yZS1jaGVja2xpc3QvY29yZS1jaGVja2xpc3QvY29yZS1jaGVja2xpc3QuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IElGaWx0ZXJPcGVyYXRvciwgSUluT3BlcmF0b3IgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9JUXVlcnlMaXN0UmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBhcGkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJQ29yZURhdGVQaWNrZXJSYW5nZSB9IGZyb20gXCIuLi9jb3JlLWRhdGUtcGlja2VyL2NvcmUtZGF0ZS1waWNrZXIvY29yZS1kYXRlLXBpY2tlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSB9IGZyb20gXCIuLi9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS5jb21wb25lbnRcIjtcclxuXHJcbi8vIFRoaXMgaXMgYSBzaW1wbGllZCB2ZXJzaW9uIG9mIElGb3JtQmFzZUNvbnRyb2xcclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZVBhcmFtQ29udHJvbCB7XHJcblxyXG4gICAgLyogQ09NUEFSSU5HIHx8IEZJVEVSSU5HIHx8IElOICovXHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBuZ01vZGVsOiBhbnk7XHJcbiAgICBuZ01vZGVsQ2hhbmdlOiAobmdNb2RlbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gdm9pZDtcclxuICAgIGZpbHRlck9wZXJhdG9yPzogSUZpbHRlck9wZXJhdG9yLFxyXG4gICAgaW5PcGVyYXRvcj86IElJbk9wZXJhdG9yLFxyXG4gICAgLyoqKi9cclxuXHJcbiAgICAvKiBUTyBSRU5ERVIgQ09OVFJPTCAqL1xyXG4gICAgZmxleFNpemU6IG51bWJlcjtcclxuICAgIHdpZHRoPzogbnVtYmVyO1xyXG4gICAgY29udHJvbFR5cGU6IEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUgfCBzdHJpbmcsXHJcbiAgICBsYWJlbDogRW51bVRyYW5zbGF0ZUtleSB8IHN0cmluZyxcclxuICAgIHR5cGU/OiBzdHJpbmcsXHJcbiAgICB2YWx1ZT86IGFueSxcclxuICAgIHN0ZXA/OiBzdHJpbmcsIC8vIHdoZW4gdHlwZTogJ251bWJlcicgYW5kIHlvdSBkZXNpcmUgZGVjaW1hbCA9PiBzdGVwOiAnLjAxJ1xyXG4gICAgcGlwZT86IEVudW1Db3JlVGFibGVQaXBlVHlwZSwgLy8gc2hhcmVkIHBpcGUgZnJvbSBDb3JlVGFibGVcclxuICAgIC8qIHdoZW4gdXNpbmcgYWxtb3N0IGFsbCBjb250cm9scyAqL1xyXG4gICAgc2Vla2VyU291cmNlVHlwZT86IEVudW1Db3JlRm9ybUNvbnRyb2xTZWVrZXJTb3VyY2VUeXBlIHwgc3RyaW5nLFxyXG4gICAgLyogd2hlbiB1c2luZyBDb3JlRW1wbG95ZWVTZWVrZXIgKi9cclxuICAgIGJvdW5kRnJvbT86IHN0cmluZztcclxuICAgIHNob3duRnJvbT86IHN0cmluZztcclxuICAgIGRyb3Bkb3duT3B0aW9ucyQ/OiBCZWhhdmlvclN1YmplY3Q8SUNvcmVEcm9wZG93bk9wdGlvbltdPjsgLy8gV0hFTiBVU0lORyBDb3JlRHJvcGRvd25Db21wb25lbnRcclxuICAgIGNoZWNrbGlzdE9wdGlvbnMkPzogQmVoYXZpb3JTdWJqZWN0PElDb3JlQ2hlY2tsaXN0T3B0aW9uW10+OyAvLyBXSEVOIFVTSU5HIENvcmVDaGVja2xpc3RDb21wb25lbnRcclxuICAgIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgICBhY2Nlc3Nvck1vZGU/OiBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlIHwgc3RyaW5nOyAvLyBXSEVOIFVTSU5HIENvcmVPcmdQYXJhbURyb3Bkb3duQ29tcG9uZW50XHJcbiAgICBwb3B1cEFsaWduPzogc3RyaW5nOyAvLyBXSEVOIFVTSU5HIENvcmVEYXRlUGlja2VyXHJcblxyXG4gICAgLyogd2hlbiB1c2luZyBDb3JlRGF0ZVBpY2tlciAqL1xyXG4gICAgcmFuZ2VMaW1pdD86IElDb3JlRGF0ZVBpY2tlclJhbmdlO1xyXG4gICAgXHJcbiAgICBnZXRCeUlkT2JqZWN0JD86IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gICAgZ2V0QnlJZEFwaT86IGFwaTtcclxuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcclxuXHJcbiAgICBvYmplY3RMaXN0JD86IEJlaGF2aW9yU3ViamVjdDxhbnlbXT47XHJcbiAgICBtdWx0aU1vZGU/OiBib29sZWFuO1xyXG5cclxuICAgIC8vIFRvIHdvcmsgd2l0aCBTU1JTIFNPQVBcclxuICAgIG51bGxhYmxlPzogYm9vbGVhbjtcclxuICAgIGFsbG93Qmxhbms/OiBib29sZWFuO1xyXG4gICAgbXVsdGlWYWx1ZT86IGJvb2xlYW47XHJcbiAgICBkZWZhdWx0VmFsdWVzPzogSVNzcnNEZWZhdWx0VmFsdWVzIFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTc3JzRGVmYXVsdFZhbHVlcyB7XHJcbiAgICB2YWx1ZT86IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlKVtdO1xyXG59Il19
@@ -146,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
146
146
  }], dropdownHeight: [{
147
147
  type: Input
148
148
  }] } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vcmctcGFyYW0tZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb3JnLXBhcmFtLWRyb3Bkb3duL2NvcmUtb3JnLXBhcmFtLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW9yZy1wYXJhbS1kcm9wZG93bi9jb3JlLW9yZy1wYXJhbS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUs1SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7O0FBc0JoRSxNQUFNLE9BQU8sNkJBQThCLFNBQVEsNEJBQTRCO0lBd0I3RSxZQUNVLFFBQW1CLEVBQ25CLGFBQTRCLEVBQzVCLFVBQXNCLEVBQ3RCLG1CQUF3QyxFQUN4QyxHQUF5QjtRQUVqQyxLQUFLLEVBQUUsQ0FBQTtRQU5DLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix3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QTZCO2tCQW5CekMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakIsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLCtCQUErQjt5QkFDM0M7cUJBQ0Y7d01BTXVCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFFYixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZU9yZ1RyZWVDb21wb25lbnQsIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUgfSBmcm9tICcuLi9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JnYW5pemF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29yZ2FuaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEb21TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZG9tLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLW9yZy1wYXJhbS1kcm9wZG93bicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIENvcmVPcmdUcmVlQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZU9yZ1BhcmFtRHJvcGRvd25Db21wb25lbnRcclxuICAgIH0sXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1vcmctcGFyYW0tZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jb3JlLW9yZy1wYXJhbS1kcm9wZG93bi5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVPcmdQYXJhbURyb3Bkb3duQ29tcG9uZW50IGV4dGVuZHMgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KCkgYWNjZXNzb3JNb2RlID0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEXHJcbiAgQElucHV0KCkgZHJvcGRvd25IZWlnaHQ6IG51bWJlciA9IDUwMDtcclxuXHJcbiAgb3ZlcnJpZGUgdmFsdWUhOiBudW1iZXJbXTtcclxuICBsYW5nITogc3RyaW5nO1xyXG4gIHNvdXJjZU9wZW4hOiBib29sZWFuO1xyXG4gIHNvdXJjZUNvbnRhaW5lckhlaWdodCE6IG51bWJlcjtcclxuICBjaGlsZENvbXBvbmVudEhlaWdodCE6IG51bWJlcjtcclxuICBzb3VyY2VTcGFjZUhlaWdodCE6IG51bWJlcjtcclxuICB2YWx1ZVRvU2hvdyE6IHN0cmluZztcclxuICBwZW5kaW5nSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gIHNob3dQYWdlSGVhZGVyITogYm9vbGVhbjtcclxuICBpZHMhOiBudW1iZXJbXTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIG9yZ0lkczogbnVtYmVyW10gPSBbXVxyXG5cclxuICBleHBhbmRTdGF0ZSE6IGJvb2xlYW47XHJcblxyXG4gIGxpc3RlbmVyRm4hOiAoKSA9PiB2b2lkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgZG9tU2VydmljZTogRG9tU2VydmljZSxcclxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uU2VydmljZTogT3JnYW5pemF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgdGhpcy5saXN0ZW5lckZuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdjbGljaycsIChlOiBFdmVudCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jb250YWluZXIgJiYgISEhdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhlLnRhcmdldCkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZFN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG1heFpJbmRleCA9IHRoaXMuZG9tU2VydmljZS5nZXRNYXhaSW5kZXgoKTtcclxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbWF4LXotaW5kZXgnLCBtYXhaSW5kZXggKyAxKTtcclxuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tZHJvcGRvd24tbWF4LWhlaWdodCcsIHRoaXMuZHJvcGRvd25IZWlnaHQgICsgJ3B4Jyk7XHJcblxyXG4gICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUuYWN0aXZlS2V5cy5tYXAoeCA9PiBOdW1iZXIoeCkpKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQuc3Vic2NyaWJlKHggPT4ge1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSAhPT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEKSB7XHJcbiAgICAgICAgICAgIGlmICghIXguc2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZExpbmVhckRhdGEgPSB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UubGluZXJEYXRhJC52YWx1ZS5maWx0ZXIoaSA9PiBpLmlkID09PSBOdW1iZXIoeC5zZWxlY3RlZEtleSkpO1xyXG4gICAgICAgICAgICAgIGlmICghIWZpbHRlcmVkTGluZWFyRGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVUb1Nob3cgPSBmaWx0ZXJlZExpbmVhckRhdGFbMF0udHJlZSRUaXRsZSB8fCBmaWx0ZXJlZExpbmVhckRhdGFbMF0ubmFtZVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlVG9TaG93ID0gJydcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZVRvU2hvdyA9ICcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICghIXguY2hlY2tlZEtleXMpIHtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHguY2hlY2tlZEtleXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZExpbmVhckRhdGEgPSB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UubGluZXJEYXRhJC52YWx1ZS5maWx0ZXIoaSA9PiBpLmlkID09PSBOdW1iZXIoeC5jaGVja2VkS2V5cyFbMF0pKTtcclxuICAgICAgICAgICAgICAgIGlmICghIWZpbHRlcmVkTGluZWFyRGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZVRvU2hvdyA9IGZpbHRlcmVkTGluZWFyRGF0YVswXS50cmVlJFRpdGxlIHx8IGZpbHRlcmVkTGluZWFyRGF0YVswXS5uYW1lXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlVG9TaG93ID0gJydcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHguY2hlY2tlZEtleXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVUb1Nob3cgPSAnJ1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVRvU2hvdyA9IHRoaXMubWxzLnRyYW5zKCdDT01NT04uTVVMVElQTEVfU0VMRUNUSU9OJyk7XHJcblxyXG4gICAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudmFsdWVUb1Nob3cgPSAnJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZShvYmo6IG51bWJlcltdKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNvdXJjZU9wZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tTZWVrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3VyY2VPcGVuID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0KCk6IHZvaWQge1xyXG4gICAgaWYgKCEhdGhpcy5wZW5kaW5nSWRzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnBlbmRpbmdJZHMgPSBbXTtcclxuICAgICAgdGhpcy5zb3VyY2VPcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1Eb3VibGVDbGljayhlOiBhbnkpIHtcclxuICAgIHRoaXMub25TZWxlY3QoKTtcclxuICB9XHJcblxyXG4gIG9uSWRzQ2hhbmdlKGU6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUoZSk7XHJcbiAgICBjb25zb2xlLmxvZyhcIkNvcmVPcmdQYXJhbUNvbXBvbmVudCBvbklkc0NoYW5nZTogXCIsIGUpXHJcbiAgICB0aGlzLm9uQ2hhbmdlKGUpO1xyXG4gICAgdGhpcy5wZW5kaW5nSWRzID0gZTtcclxuICB9XHJcblxyXG4gIG9uSXRlbUNsaWNrKGU6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuYWNjZXNzb3JNb2RlID09PSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9JTkhFUklUQU5DRSB8fCB0aGlzLmFjY2Vzc29yTW9kZSA9PT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfU0lOR0xFKSB7XHJcbiAgICAgIGlmIChlLm5hbWUpIHRoaXMudmFsdWVUb1Nob3cgPSBlWyduYW1lJ11cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUV4cGFuZGVkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkgcmV0dXJuO1xyXG4gICAgdGhpcy5leHBhbmRTdGF0ZSA9ICEhIXRoaXMuZXhwYW5kU3RhdGU7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucz8uZm9yRWFjaCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgaWYgKCEhdGhpcy5saXN0ZW5lckZuKSB0aGlzLmxpc3RlbmVyRm4oKTtcclxuICB9XHJcblxyXG5cclxufSIsIjxkaXYgI2NvbnRhaW5lciBjbGFzcz1cImNvcmUtb3JnLXBhcmFtLWRyb3Bkb3duLWNvbnRhaW5lclwiPlxyXG4gIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImV4cGFuZC1zdGF0ZVwiIFsobmdNb2RlbCldPVwiZXhwYW5kU3RhdGVcIiAvPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxyXG4gICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJ2YWx1ZVwiIFt2YWx1ZV09XCJ2YWx1ZVRvU2hvd1wiIC8+IC0tPlxyXG4gICAgPGxhYmVsIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJ0ZXh0IGZvcm0tY29udHJvbFwiIFtjbGFzcy5mb3JtLWNvbnRyb2wtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiPlxyXG4gICAgICA8c3BhbiBbYXBwVG9vbHRpcF09XCJ2YWx1ZVRvU2hvdyB8IHRyYW5zbGF0ZSA6IGxhbmdcIj57eyB2YWx1ZVRvU2hvdyB8IHRyYW5zbGF0ZSA6IGxhbmcgfX08L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLWNoZXZyb24tZG93blwiPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICA8Y29yZS1vcmctdHJlZSBbaGVpZ2h0XT1cImRyb3Bkb3duSGVpZ2h0XCIgW2FjY2Vzc29yTW9kZV09XCJhY2Nlc3Nvck1vZGVcIiBbKG5nTW9kZWwpXT1cIm9yZ0lkc1wiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSWRzQ2hhbmdlKCRldmVudClcIj48L2NvcmUtb3JnLXRyZWU+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vcmctcGFyYW0tZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb3JnLXBhcmFtLWRyb3Bkb3duL2NvcmUtb3JnLXBhcmFtLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW9yZy1wYXJhbS1kcm9wZG93bi9jb3JlLW9yZy1wYXJhbS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUs1SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7O0FBc0JoRSxNQUFNLE9BQU8sNkJBQThCLFNBQVEsNEJBQTRCO0lBd0I3RSxZQUNVLFFBQW1CLEVBQ25CLGFBQTRCLEVBQzVCLFVBQXNCLEVBQ3RCLG1CQUF3QyxFQUN4QyxHQUF5QjtRQUVqQyxLQUFLLEVBQUUsQ0FBQTtRQU5DLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix3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QUE2QjtrQkFuQnpDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxXQUFXO3dCQUNYLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVywrQkFBK0I7eUJBQzNDO3FCQUNGO3dNQU11QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBRWIsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVPcmdUcmVlQ29tcG9uZW50LCBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlIH0gZnJvbSAnLi4vY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRG9tU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RvbS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1vcmctcGFyYW0tZHJvcGRvd24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlT3JnVHJlZUNvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVPcmdQYXJhbURyb3Bkb3duQ29tcG9uZW50XHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtb3JnLXBhcmFtLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29yZS1vcmctcGFyYW0tZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlT3JnUGFyYW1Ecm9wZG93bkNvbXBvbmVudCBleHRlbmRzIENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIGFjY2Vzc29yTW9kZTogRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSB8IHN0cmluZyA9IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRFxyXG4gIEBJbnB1dCgpIGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIgPSA1MDA7XHJcblxyXG4gIG92ZXJyaWRlIHZhbHVlITogbnVtYmVyW107XHJcbiAgbGFuZyE6IHN0cmluZztcclxuICBzb3VyY2VPcGVuITogYm9vbGVhbjtcclxuICBzb3VyY2VDb250YWluZXJIZWlnaHQhOiBudW1iZXI7XHJcbiAgY2hpbGRDb21wb25lbnRIZWlnaHQhOiBudW1iZXI7XHJcbiAgc291cmNlU3BhY2VIZWlnaHQhOiBudW1iZXI7XHJcbiAgdmFsdWVUb1Nob3chOiBzdHJpbmc7XHJcbiAgcGVuZGluZ0lkczogbnVtYmVyW10gPSBbXTtcclxuICBzaG93UGFnZUhlYWRlciE6IGJvb2xlYW47XHJcbiAgaWRzITogbnVtYmVyW107XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBvcmdJZHM6IG51bWJlcltdID0gW11cclxuXHJcbiAgZXhwYW5kU3RhdGUhOiBib29sZWFuO1xyXG5cclxuICBsaXN0ZW5lckZuITogKCkgPT4gdm9pZDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRvbVNlcnZpY2U6IERvbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvblNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKClcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgIHRoaXMubGlzdGVuZXJGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAnY2xpY2snLCAoZTogRXZlbnQpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY29udGFpbmVyICYmICEhIXRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpKSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBtYXhaSW5kZXggPSB0aGlzLmRvbVNlcnZpY2UuZ2V0TWF4WkluZGV4KCk7XHJcbiAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLW1heC16LWluZGV4JywgbWF4WkluZGV4ICsgMSk7XHJcbiAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWRyb3Bkb3duLW1heC1oZWlnaHQnLCB0aGlzLmRyb3Bkb3duSGVpZ2h0ICArICdweCcpO1xyXG5cclxuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlLmFjdGl2ZUtleXMubWFwKHggPT4gTnVtYmVyKHgpKSlcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnN1YnNjcmliZSh4ID0+IHtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5hY2Nlc3Nvck1vZGUgIT09IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRCkge1xyXG4gICAgICAgICAgICBpZiAoISF4LnNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRMaW5lYXJEYXRhID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmxpbmVyRGF0YSQudmFsdWUuZmlsdGVyKGkgPT4gaS5pZCA9PT0gTnVtYmVyKHguc2VsZWN0ZWRLZXkpKTtcclxuICAgICAgICAgICAgICBpZiAoISFmaWx0ZXJlZExpbmVhckRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlVG9TaG93ID0gZmlsdGVyZWRMaW5lYXJEYXRhWzBdLnRyZWUkVGl0bGUgfHwgZmlsdGVyZWRMaW5lYXJEYXRhWzBdLm5hbWVcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVRvU2hvdyA9ICcnXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudmFsdWVUb1Nob3cgPSAnJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoISF4LmNoZWNrZWRLZXlzKSB7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh4LmNoZWNrZWRLZXlzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRMaW5lYXJEYXRhID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmxpbmVyRGF0YSQudmFsdWUuZmlsdGVyKGkgPT4gaS5pZCA9PT0gTnVtYmVyKHguY2hlY2tlZEtleXMhWzBdKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoISFmaWx0ZXJlZExpbmVhckRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVUb1Nob3cgPSBmaWx0ZXJlZExpbmVhckRhdGFbMF0udHJlZSRUaXRsZSB8fCBmaWx0ZXJlZExpbmVhckRhdGFbMF0ubmFtZVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZVRvU2hvdyA9ICcnXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh4LmNoZWNrZWRLZXlzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlVG9TaG93ID0gJydcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVUb1Nob3cgPSB0aGlzLm1scy50cmFucygnQ09NTU9OLk1VTFRJUExFX1NFTEVDVElPTicpO1xyXG5cclxuICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnZhbHVlVG9TaG93ID0gJydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IG9iajtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3VyY2VPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrU2VlaygpOiB2b2lkIHtcclxuICAgIHRoaXMuc291cmNlT3BlbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCgpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMucGVuZGluZ0lkcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5wZW5kaW5nSWRzID0gW107XHJcbiAgICAgIHRoaXMuc291cmNlT3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JdGVtRG91YmxlQ2xpY2soZTogYW55KSB7XHJcbiAgICB0aGlzLm9uU2VsZWN0KCk7XHJcbiAgfVxyXG5cclxuICBvbklkc0NoYW5nZShlOiBudW1iZXJbXSkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKGUpO1xyXG4gICAgY29uc29sZS5sb2coXCJDb3JlT3JnUGFyYW1Db21wb25lbnQgb25JZHNDaGFuZ2U6IFwiLCBlKVxyXG4gICAgdGhpcy5vbkNoYW5nZShlKTtcclxuICAgIHRoaXMucGVuZGluZ0lkcyA9IGU7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DbGljayhlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSA9PT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfSU5IRVJJVEFOQ0UgfHwgdGhpcy5hY2Nlc3Nvck1vZGUgPT09IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQUNUSVZBVEVEX1NJTkdMRSkge1xyXG4gICAgICBpZiAoZS5uYW1lKSB0aGlzLnZhbHVlVG9TaG93ID0gZVsnbmFtZSddXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVFeHBhbmRlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHJldHVybjtcclxuICAgIHRoaXMuZXhwYW5kU3RhdGUgPSAhISF0aGlzLmV4cGFuZFN0YXRlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnM/LmZvckVhY2goeCA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICAgIGlmICghIXRoaXMubGlzdGVuZXJGbikgdGhpcy5saXN0ZW5lckZuKCk7XHJcbiAgfVxyXG5cclxuXHJcbn0iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLW9yZy1wYXJhbS1kcm9wZG93bi1jb250YWluZXJcIj5cclxuICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJleHBhbmQtc3RhdGVcIiBbKG5nTW9kZWwpXT1cImV4cGFuZFN0YXRlXCIgLz5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXJcIj5cclxuICAgIDwhLS0gPGlucHV0IGNsYXNzPVwidmFsdWVcIiBbdmFsdWVdPVwidmFsdWVUb1Nob3dcIiAvPiAtLT5cclxuICAgIDxsYWJlbCB0eXBlPVwidGV4dFwiIGNsYXNzPVwidGV4dCBmb3JtLWNvbnRyb2xcIiBbY2xhc3MuZm9ybS1jb250cm9sLWRpc2FibGVkXT1cImRpc2FibGVkXCIgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZGVkKClcIj5cclxuICAgICAgPHNwYW4gW2FwcFRvb2x0aXBdPVwidmFsdWVUb1Nob3cgfCB0cmFuc2xhdGUgOiBsYW5nXCI+e3sgdmFsdWVUb1Nob3cgfCB0cmFuc2xhdGUgOiBsYW5nIH19PC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1jaGV2cm9uLWRvd25cIj48L2k+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9sYWJlbD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCIgW2NsYXNzLmZvcm0tY29udHJvbC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgPGNvcmUtb3JnLXRyZWUgW2hlaWdodF09XCJkcm9wZG93bkhlaWdodFwiIFthY2Nlc3Nvck1vZGVdPVwiYWNjZXNzb3JNb2RlXCIgWyhuZ01vZGVsKV09XCJvcmdJZHNcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvbklkc0NoYW5nZSgkZXZlbnQpXCI+PC9jb3JlLW9yZy10cmVlPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+Il19
@@ -507,4 +507,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
507
507
  type: ViewChild,
508
508
  args: ['reducedIconWrapper']
509
509
  }] } });
510
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vcmctdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLEtBQUssRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBOEMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZMLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUM7QUFRMUgsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM3RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUsxRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSwyQkFB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QUUsSUFBSTtnQkFDWCxXQUFXLEVBQUUsb0JBQW9CO2FBQ2xDO1NBQ0YsaWVDdkRILCs3TEE2R00sNnBNRHRFRixZQUFZLDhYQUNaLFdBQVcsK21CQUNYLDJCQUEyQixnR0FDM0IscUJBQXFCLHFKQUVyQixhQUFhLGtEQUNiLGdCQUFnQjs7MkZBWVAsb0JBQW9CO2tCQXRCaEMsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCwyQkFBMkI7d0JBQzNCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4QixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakIsYUFHVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLHNCQUFzQjt5QkFDbEM7cUJBQ0Y7NFFBR1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDUSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDQyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDTSxrQkFBa0I7c0JBQWxELFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgSW5wdXQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG9mLCBzd2l0Y2hNYXAsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBSZWN1cnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVjdXJzaXZlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlT3JnVHJlZVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLW9yZy10cmVlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IElPcmdUcmVlSXRlbSwgSU9yZ1RyZWVMaW5lckl0ZW0gfSBmcm9tICcuL0lPcmdUcmVlSXRlbSc7XHJcblxyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IElDb3JlT3JnVHJlZUluc3RhbmNlLCBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBsaW5lcl90b19uZXN0ZWRfYXJyYXlfc2NyaXB0IH0gZnJvbSAnLi4vLi4vLi4vLi4vYXNzZXRzL2pzL3Jlc2N1c2l2ZV93aydcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29yZUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1jaGVja2JveC9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVSZWR1Y2VySWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtcmVkdWNlci1pY29uL2NvcmUtcmVkdWNlci1pY29uL2NvcmUtcmVkdWNlci1pY29uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCBlbnVtIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUge1xyXG4gIEFDVElWQVRFRF9TSU5HTEUgPSAnQUNUSVZBVEVEX1NJTkdMRScsXHJcbiAgQUNUSVZBVEVEX0lOSEVSSVRBTkNFID0gJ0FDVElWQVRFRF9JTkhFUklUQU5DRScsXHJcbiAgQ0hFQ0tFRCA9ICdDSEVDS0VEJyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRW51bUNvcmVPcmdUcmVlYVNlYXJjaE1vZGUge1xyXG4gIEhJR0hMSUdIVCA9ICdISUdITElHSFQnLFxyXG4gIFJFRFVDRSA9ICdSRURVQ0UnXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1vcmctdHJlZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIENvcmVSZWR1Y2VySWNvbkNvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZU9yZ1RyZWVDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlT3JnVHJlZUNvbXBvbmVudCBleHRlbmRzIENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KCkgbGluZUNvbG9yOiBzdHJpbmcgPSAndHJhbnNwYXJlbnQnO1xyXG4gIEBJbnB1dCgpIGZ1bGxXaWR0aE1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGFjY2Vzc29yTW9kZTogRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSA9IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDtcclxuXHJcbiAgLy9UTyBCRSBORVdcclxuICBASW5wdXQoKSBzZWFyY2hNb2RlOiBFbnVtQ29yZU9yZ1RyZWVhU2VhcmNoTW9kZSA9IEVudW1Db3JlT3JnVHJlZWFTZWFyY2hNb2RlLlJFRFVDRTtcclxuXHJcbiAgQElucHV0KCkgZnVsbFJlbmRlcmluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyOyAvLyBDaGnhu4F1IGNhbyBj4bunYSBDb3JlT3JnVHJlZSBj4bqnbiDEkcaw4bujYyB0cnV54buBbiB2w6BvIVxyXG4gIEBJbnB1dCgpIGRpc2FibGVkTG9vcEV4cGFuZCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd0NoZWNrSW5oZXJpdGFuY2UhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGV4Y2x1ZGVkSWRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyW10+KFtdKTsgLy8gMjAyNC0wNS0xMDogdG8gYmUgaW1wbGVtZW50ZWRcclxuICBASW5wdXQoKSBzdGF0ZUlzb2xhdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBAT3V0cHV0KCkgaXRlbURvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBpdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJykgc2Nyb2xsQ29udGFpbmVyITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdkaXNwbGF5Q29udGVudCcpIGRpc3BsYXlDb250ZW50ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdyZWR1Y2VkSWNvbldyYXBwZXInKSByZWR1Y2VkSWNvbldyYXBwZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBvdmVycmlkZSB2YWx1ZSE6IG51bWJlcltdO1xyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmFjY2Vzc29yTW9kZSkge1xyXG4gICAgICBjYXNlIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDpcclxuICAgICAgICBpZiAoISFvYmopIHtcclxuICAgICAgICAgIGNvbnN0IGNoZWNrZWRLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5jaGVja2VkSWRzID0gb2JqOyAvLyA8PT09IDI0LzEwLzIwMjNcclxuICAgICAgICAgIG9iai5tYXAoeCA9PiBjaGVja2VkS2V5cy5wdXNoKHgudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZS53cml0ZVZhbHVlQ2hlY2tlZChjaGVja2VkS2V5cywgdGhpcy5kYXRhLCB0aGlzLmRpc2FibGVkTG9vcEV4cGFuZCkuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhICYmICEhdGhpcy5kYXRhPy5sZW5ndGgpIHRoaXMuZGF0YVswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9TSU5HTEU6XHJcbiAgICAgIGNhc2UgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfSU5IRVJJVEFOQ0U6XHJcbiAgICAgICAgaWYgKCEhb2JqKSB7XHJcbiAgICAgICAgICBjb25zdCBhY3RpdmF0ZWRLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgb2JqLm1hcCh4ID0+IGFjdGl2YXRlZEtleXMucHVzaCh4LnRvU3RyaW5nKCkpKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2Uud3JpdGVWYWx1ZUFjdGl2YXRlZChhY3RpdmF0ZWRLZXlzLCB0aGlzLmRhdGEsIHRoaXMuZGlzYWJsZWRMb29wRXhwYW5kKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5hY2Nlc3Nvck1vZGUgPT09IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRCkge1xyXG5cclxuICAgIH0gZWxzZSAvKiBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9TSU5HTEUgb3IgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfSU5IRVJJVEFOQ0UgKi8ge1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIGFjdGl2ZUlkczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgY2hlY2tlZElkczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgLy8gZm9yIGRlYnVnZ2luZ1xyXG4gIC8vIGFjdGl2ZUlkc1N0cmluZyE6IHN0cmluZzsgIFxyXG4gIGRhdGEhOiBJT3JnVHJlZUl0ZW1bXTtcclxuICAvL2RhdGFGaWx0ZXJlZCE6IElPcmdUcmVlSXRlbVtdO1xyXG4gIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgbGlubmVyT3JnQXJyYXkhOiBJT3JnVHJlZUxpbmVySXRlbVtdO1xyXG4gIHNlYXJjaCE6IHN0cmluZztcclxuICBzZWFyY2gkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHJlZHVjZWQhOiBib29sZWFuO1xyXG4gIHNlYXJjaFBsYWNlaG9sZGVyID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fUExBQ0VfSE9MREVSX1NFQVJDSF9PUkc7XHJcblxyXG4gIGluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgY2hlY2tJbmhlcml0YW5jZTogYm9vbGVhbiA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWUgaXMgdHJ1ZVxyXG4gIHNob3dEaXNzb2x2ZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gZGVmYXVsdCB2YWx1ZSBpcyBmYWxzZVxyXG4gIHNlbGVjdGVkS2V5ITogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHNlbGVjdGVkSXRlbSE6IElPcmdUcmVlTGluZXJJdGVtO1xyXG4gIGxhbmchOiBzdHJpbmc7XHJcbiAgLy9yZWR1Y2VkJCE6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuXHJcbiAgaW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgc2Nyb2xsQ29udGFpbmVySGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBzdGF0dXNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy9wdWJsaWMgb3ZlcnJpZGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlY3Vyc2l2ZVNlcnZpY2U6IFJlY3Vyc2l2ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZU9yZ1RyZWVTZXJ2aWNlOiBDb3JlT3JnVHJlZVNlcnZpY2UsXHJcbiAgICAvLyBwcml2YXRlIGNvcmVPcmdUcmVlU3RhdGU6IENvcmVPcmdUcmVlU3RhdGUsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIG9yZ2FuaXphdGlvblNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigvKmluamVjdG9yKi8pO1xyXG4gICAgdGhpcy5pbml0aWFsaXppbmcgPSB0cnVlO1xyXG5cclxuICAgIC8vIHRoaXMucmVkdWNlZCQgPSB0aGlzLmNvcmVPcmdUcmVlU3RhdGUuY29yZU9yZ1RyZWVSZWR1Y2VkJDtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemluZyA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydoZWlnaHQnXSkge1xyXG4gICAgICB0aGlzLnJlc2l6ZUhlaWdodCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy90aGlzLmxheW91dFNlcnZpY2UubGVmdGJhck9wZW4kLm5leHQoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuaW5zdGFuY2VOdW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IG5ld0luc3RhbmNlOiBJQ29yZU9yZ1RyZWVJbnN0YW5jZSA9IHtcclxuICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuaW5zdGFuY2VOdW1iZXIsXHJcbiAgICAgIHNlbGVjdGVkS2V5JDogbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCksXHJcbiAgICAgIGFjdGl2ZUtleXMkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSksXHJcbiAgICAgIGNoZWNrZWRLZXlzJDogbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pLFxyXG4gICAgICBleHBhbmRlZEtleXMkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSksXHJcbiAgICAgIGNoZWNrSW5oZXJpdGFuY2UkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpXHJcbiAgICB9XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UuaW5zdGFuY2VzLnB1c2gobmV3SW5zdGFuY2UpXHJcblxyXG4gICAgLy8gQ2hlY2sgeGVtIGNoaeG7gXUgY2FvIGhlaWdodCBjw7MgxJHGsOG7o2MgdHJ1eeG7gW4gdsOgbyBoYXkga2jDtG5nXHJcbiAgICBpZiAodGhpcy5oZWlnaHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLndhcm4oXCJDb3JlT3JnVHJlZSBraMO0bmcgbmjhuq1uIMSRxrDhu6NjIGNoaeG7gXUgY2FvIChoZWlnaHQpIHRydXnhu4FuIHbDoG8gdOG7qyBs4bubcCBuZ2/DoGkuIENoaeG7gXUgY2FvIG3hurdjIMSR4buLbmggc+G6vSDEkcaw4bujYyB0w61uaCB0b8OhbiBk4buxYSB2w6BvIGLhu5EgY+G7pWMgY2jDrW5oLlwiLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5jb250ZW50Q29udGFpbmVySGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAvLyBiYXNpY1NwYWNpbmcgbMOgIHBhZGRpbmdCb3R0b20gY+G7p2EgbOG7m3AgY29udGVudC1jb250YWluZXJcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ID0geCAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlUGFnZUhlYWRlckhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UubGluZXJEYXRhJC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLmxpbm5lck9yZ0FycmF5ID0geDtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuc3RhdGVJc29sYXRlZCQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIGlmICh4KSB7XHJcbiAgICAgICAgICBpZiAoISF0aGlzLnN0YXR1c1N1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXR1c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuc3RhdHVzU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzU3Vic2NyaXB0aW9uID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJCBjaGFuZ2VzXCIsIHgpXHJcbiAgICAgICAgICAgICAgY29uc3QgbmV3QWN0aXZlSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgICAgICAgICAgIHguYWN0aXZlS2V5cy5tYXAoKGspID0+IHtcclxuICAgICAgICAgICAgICAgIG5ld0FjdGl2ZUlkcy5wdXNoKE51bWJlcihrKSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJZHMgPSBuZXdBY3RpdmVJZHM7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYWNjZXNzb3JNb2RlICE9PSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkNIRUNLRUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmFjdGl2ZUlkcztcclxuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5hY3RpdmVJZHMpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkS2V5ID0geC5zZWxlY3RlZEtleTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuc2VhcmNoJFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKCh4KSA9PiB4ICE9PSBudWxsKSxcclxuICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxyXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgodGV4dCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc3dpdGNoTWFwIHdvcmtzJyk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAvLyBBVUcgMjAyNCBORVcgOiBNVVNUIEJFIFRFU1RFRFxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hNb2RlID09PSBFbnVtQ29yZU9yZ1RyZWVhU2VhcmNoTW9kZS5ISUdITElHSFQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWN1cnNpdmVTZXJ2aWNlLmZpbmRJdGVtKHRleHQsIHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMucmVjdXJzaXZlU2VydmljZS5yZWR1Y2luZ0ZpbHRlcih0aGlzLnNjcm9sbENvbnRhaW5lciwgdGV4dCkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gaWYgKHRoaXMuc2VhcmNoTW9kZSA9PT0gRW51bUNvcmVPcmdUcmVlYVNlYXJjaE1vZGUuUkVEVUNFKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuZGF0YUZpbHRlcmVkID0geCBhcyBJT3JnVHJlZUl0ZW1bXTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJFxyXG4gICAgICAgIC5waXBlKGZpbHRlcigodmFsdWUpID0+ICEhIXRoaXMuaW5pdGlhbGl6aW5nICYmICEhdmFsdWUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIGlmICghIWxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY29yZU9yZ1RyZWVTdGF0dXMnLCBKU09OLnN0cmluZ2lmeSh4KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoKHgpID0+ICh0aGlzLmxhbmcgPSB4KSkpO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzaXplSGVpZ2h0KCk6IHZvaWQge1xyXG5cclxuICAgIC8vIGhlaWdodCBpcyBub3QgZ2l2ZW4gYW5kIHRoZSB0cmVlIHJlc2l6ZSBhcyBzdGFuZGFyZFxyXG4gICAgaWYgKCEhIXRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgIGNvbnN0IHNpemVIZWFkZXJIZWlnaHQgPSBOdW1iZXIoXHJcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXHJcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWhlYWRlci1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IHNpemVDb3JlUGFnZUhlYWRlckhlaWdodCA9IE51bWJlcihcclxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcclxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtY29yZS1wYWdlLWhlYWRlci1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBzaXplSGVhZGVySGVpZ2h0IC0gc2l6ZUNvcmVQYWdlSGVhZGVySGVpZ2h0O1xyXG5cclxuICAgICAgY29uc3QgcGFnZUhlYWRlckhlaWdodCA9IE51bWJlcihcclxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcclxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtY29yZS1wYWdlLWhlYWRlci1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCBwYWdpbmF0aW9uSGVpZ2h0ID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1jb3JlLXBhZ2luYXRpb24taGVpZ2h0JylcclxuICAgICAgICAgIC5yZXBsYWNlKCdweCcsICcnKVxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBzaXplTWFyZ2luQ29yZVBhZ2luYXRpb25GdWxsID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1tYXJnaW4tY29yZS1wYWdpbmF0aW9uJylcclxuICAgICAgICAgIC5yZXBsYWNlKCdweCcsICcnKVxyXG4gICAgICApO1xyXG5cclxuXHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IGNvbnRhaW5lckhlaWdodCAtIHBhZ2VIZWFkZXJIZWlnaHQgLSBwYWdpbmF0aW9uSGVpZ2h0ICsgc2l6ZU1hcmdpbkNvcmVQYWdpbmF0aW9uRnVsbDtcclxuICAgICAgY29uc29sZS5sb2coaGVpZ2h0KTtcclxuXHJcbiAgICAgIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAgICctLWhlaWdodCcsIGhlaWdodCArICdweCdcclxuICAgICAgKTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgICAnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCArICdweCdcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uub3JnVHJlZURhdGEkLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhID0geDtcclxuICAgICAgICAgIC8vdGhpcy5kYXRhRmlsdGVyZWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHgpKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwibmV3IERhdGEgY29taW5nXCIsIHRoaXMuZGF0YSwgbmV3IERhdGUoKS5nZXRUaW1lKCkpXHJcbiAgICAgICAgICBpZiAoISF0aGlzLmRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhLmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25JdGVtQ2xpY2tMb2NhbChlOiBJT3JnVHJlZUl0ZW0pOiB2b2lkIHtcclxuICAgIHRoaXMubGlubmVyT3JnQXJyYXkubWFwKCh4KSA9PiAoeC5hY3RpdmUgPSBmYWxzZSkpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmJ1aWxkVHJlZURhdGEoKSk7XHJcbiAgfVxyXG5cclxuICBvblRvZ2dsZUl0ZW0oZTogSU9yZ1RyZWVJdGVtKSB7XHJcbiAgICBjb25zdCBjbG9uZUNvcHk6IElPcmdUcmVlTGluZXJJdGVtW10gPSBKU09OLnBhcnNlKFxyXG4gICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmxpbm5lck9yZ0FycmF5KVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGZpbHRlciA9IGNsb25lQ29weS5maWx0ZXIoKHgpID0+IHguaWQgPT09IGUuaWQpO1xyXG5cclxuICAgIGlmIChmaWx0ZXIubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGZpbHRlclswXS5leHBhbmQgPSAhISFlLmV4cGFuZDtcclxuICAgIH1cclxuICAgIHRoaXMubGlubmVyT3JnQXJyYXkgPSBjbG9uZUNvcHk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYnVpbGRUcmVlRGF0YSgpKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkVHJlZURhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGNsb25lQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5saW5uZXJPcmdBcnJheSkpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAvLyBDcmVhdGUgYSBuZXdcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKFwi8J+fovCfn6IgV29ya2VyIHdvcmtzXCIpO1xyXG5cclxuICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihsaW5lcl90b19uZXN0ZWRfYXJyYXlfc2NyaXB0KTtcclxuICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoeyBkYXRhIH0pID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhLmxpc3Q7XHJcbiAgICAgICAgLy90aGlzLmRhdGFGaWx0ZXJlZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YS5saXN0KSk7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5kYXRhICYmICEhdGhpcy5kYXRhPy5sZW5ndGgpIHRoaXMuZGF0YVswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgIGxpc3Q6IGNsb25lQ29weSxcclxuICAgICAgICBrZXlGaWVsZDogJ2lkJyxcclxuICAgICAgICB0aXRsZUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgcGFyZW50RmllbGQ6ICdwYXJlbnRJZCcsXHJcbiAgICAgICAgYWN0aXZlRmllbGQ6ICdhY3RpdmUnLFxyXG4gICAgICAgIC8vaW5oZXJpdGFudEFjdGl2ZUZpZWxkOiAnaW5oZXJpdGFudEFjdGl2ZScsXHJcbiAgICAgICAgY2hlY2tlZEZpZWxkOiAnY2hlY2tlZCcsXHJcbiAgICAgICAgZXhwYW5kZWRGaWVsZDogJ2V4cGFuZCcsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gV2ViIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudC5cclxuICAgICAgLy8gWW91IHNob3VsZCBhZGQgYSBmYWxsYmFjayBzbyB0aGF0IHlvdXIgcHJvZ3JhbSBzdGlsbCBleGVjdXRlcyBjb3JyZWN0bHkuXHJcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2VcclxuICAgICAgICAgIC5saW5lckFycmF5VG9OZXN0ZWRBcnJheShcclxuICAgICAgICAgICAgY2xvbmVDb3B5LFxyXG4gICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAnbmFtZScsXHJcbiAgICAgICAgICAgICdwYXJlbnRJZCcsXHJcbiAgICAgICAgICAgICdhY3RpdmUnLFxyXG4gICAgICAgICAgICAnY2hlY2tlZCcsXHJcbiAgICAgICAgICAgICdleHBhbmQnLFxyXG4gICAgICAgICAgICAvL3N0YXR1c1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgob2JqKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IG9iai5saXN0O1xyXG4gICAgICAgICAgICAvL3RoaXMuZGF0YUZpbHRlcmVkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmoubGlzdCkpO1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkV4cGFuZFRvZ2dsZXJDbGljayhlOiBJT3JnVHJlZUl0ZW0sIGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICFlLnRyZWUkRXhwYW5kZWQ7XHJcbiAgICBlLnRyZWUkRXhwYW5kZWQgPSBuZXdWYWx1ZTtcclxuXHJcbiAgICAvLyB1cGRhdGluZyBzdGF0dXMgd2l0aCBuZXdWYWx1ZVxyXG4gICAgY29uc3QgY3VycmVudEV4cGFuZGVkSWRzID1cclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWU/LmV4cGFuZGVkS2V5cztcclxuICAgIGxldCBuZXdFeHBhbmRlZElkcyA9IGN1cnJlbnRFeHBhbmRlZElkcz8uZmlsdGVyKFxyXG4gICAgICAoXykgPT4gISEhY3VycmVudEV4cGFuZGVkSWRzLmluY2x1ZGVzKGUuaWQudG9TdHJpbmcoKSlcclxuICAgICk7XHJcblxyXG4gICAgaWYgKG5ld1ZhbHVlKSB7XHJcbiAgICAgIG5ld0V4cGFuZGVkSWRzPy5wdXNoKGUuaWQudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmV3RXhwYW5kZWRJZHM/LnNvcnQoKTtcclxuXHJcbiAgICBjb25zdCBuZXdFeHBhbmRlZEtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBuZXdFeHBhbmRlZElkcy5tYXAoKHgpID0+IG5ld0V4cGFuZGVkS2V5cy5wdXNoKHgudG9TdHJpbmcoKSkpO1xyXG5cclxuICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSEsXHJcbiAgICAgIGV4cGFuZGVkS2V5czogbmV3RXhwYW5kZWRLZXlzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DaGVjayhlOiBJT3JnVHJlZUl0ZW0sIG5ld1ZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1DbGljaz8uZW1pdChlKTtcclxuICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSAhPT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEKSByZXR1cm47XHJcblxyXG4gICAgLy8gV2UgaGF2ZSB0aGlzIHZhciB0byBob2xkIG5vZGVzIHRoYXQgYXJlIGJlaW5nIGNoYW5nZWRcclxuICAgIGxldCB0b2dnbGVkSWRzOiBudW1iZXJbXTtcclxuICAgIC8vIFdlIHNob3VsZCBjYWxjdWxhdGUgYSBuZXcgc3RhdGUgaW50byB0aGlzIHZhcjogXHJcbiAgICBjb25zdCBuZXdDaGVja2VkSWRzOiBudW1iZXJbXSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jaGVja2VkSWRzKSk7XHJcblxyXG4gICAgLy8gV2Ugd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgdG9nZ2xlZElkcyBjaGFuZ2VkXHJcbiAgICBjb25zdCBjaGFuZ2VWYWx1ZSA9ICgpID0+IHtcclxuXHJcbiAgICAgIC8vIElmIG5ld1ZhbHVlID09PSB0cnVlLCB3ZSB3aWxsIGRpc2N0aW50bHkgcHVzaCBjaGFuZ2VkIGlkcyB0byB0aGUgc3RhdGVcclxuICAgICAgLy8gT3RoZXJ3aXNlIHdlIHdpbGwgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgc3RhdGVcclxuICAgICAgaWYgKCEhbmV3VmFsdWUpIHtcclxuICAgICAgICB0b2dnbGVkSWRzLm1hcCh4ID0+IHtcclxuICAgICAgICAgIGlmICghISFuZXdDaGVja2VkSWRzLmluY2x1ZGVzKHgpKSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNrZWRJZHMucHVzaCh4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC8vIFRoZW4gYXNpZ24gdGhlIHN0YXRlIHRvIHRoZSBuZXdDaGVja2VkSWRzXHJcbiAgICAgICAgdGhpcy5jaGVja2VkSWRzID0gbmV3Q2hlY2tlZElkcztcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyID0gbmV3Q2hlY2tlZElkcy5maWx0ZXIoeCA9PiAhISF0b2dnbGVkSWRzLmluY2x1ZGVzKHgpKVxyXG4gICAgICAgIC8vIFRoZW4gYXNpZ24gdGhlIHN0YXRlIHRvIHRoZSBmaWx0ZXJcclxuICAgICAgICB0aGlzLmNoZWNrZWRJZHMgPSBmaWx0ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFmdGVyIHRoZSBjYXNlcyBvZiBpZi9lbHNlLCBtYWtlIHRoZSBjb250cm9sIGNoYW5nZSB3aXRoIG9uQ2hhbmdlXHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNoZWNrZWRJZHM7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5jaGVja2VkSWRzKTtcclxuICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyogc3RhcnQ6IFRISVMgQ09ERSBTQ09QRSBjYWxjdWxhdGVzIHRvZ2dsZWRJZHMgKi9cclxuICAgIGlmICh0aGlzLmNoZWNrSW5oZXJpdGFuY2UpIHtcclxuICAgICAgLy8gSWYgdHJ1ZSwgYWxsIHRoZSBuZXN0ZWQgaXRlbXMgd2lsbCBiZSBjaGVja2VkL3VuY2hlY2tlZFxyXG4gICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2VcclxuICAgICAgICAubmVzdGVkVG9nZ2xlQ2hlY2soZSwgbmV3VmFsdWUpXHJcbiAgICAgICAgLnRoZW4oKHgpID0+IHtcclxuXHJcbiAgICAgICAgICBsZXQgY3VycmVudENoZWNrZWRLZXlzID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUuY2hlY2tlZEtleXMgfHwgW107XHJcblxyXG4gICAgICAgICAgaWYgKCEhbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgeC5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGVja2VkS2V5cy5maWx0ZXIoaSA9PiBpID09PSBpdGVtLnRvU3RyaW5nKCkpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudENoZWNrZWRLZXlzLnB1c2goaXRlbS50b1N0cmluZygpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRDaGVja2VkS2V5cyA9IGN1cnJlbnRDaGVja2VkS2V5cy5maWx0ZXIoaSA9PiAheC5pbmNsdWRlcyhOdW1iZXIoaSkpKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAgICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSxcclxuICAgICAgICAgICAgY2hlY2tlZEtleXM6IGN1cnJlbnRDaGVja2VkS2V5cy8veC5tYXAoaXRlbSA9PiBpdGVtLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLy8gVGhlIGlkcyBoYXZlIGJlZW4gY2hhbmdlZFxyXG4gICAgICAgICAgdG9nZ2xlZElkcyA9IHg7XHJcblxyXG4gICAgICAgICAgLy8gTm93IHRvZ2dsZWRJZHMgd2VyZSBzZXQuIFdlIGNhbGwgdGhlIGZ1bmN0aW9uIHdlIGRlY2xhcmVkXHJcbiAgICAgICAgICBjaGFuZ2VWYWx1ZSgpO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gT3RoZXJ3aXNlIHdlIHNpbXBseSB0b2dnbGUgY2hlY2sgZm9yIGN1cnJlbnQgaXRlbSBvbmx5XHJcbiAgICAgIHRvZ2dsZWRJZHMgPSBbZS5pZF07XHJcblxyXG4gICAgICAvLyBOb3cgdG9nZ2xlZElkcyB3ZXJlIHNldC4gV2UgY2FsbCB0aGUgZnVuY3Rpb24gd2UgZGVjbGFyZWRcclxuICAgICAgY2hhbmdlVmFsdWUoKTtcclxuXHJcbiAgICB9XHJcbiAgICAvKiBlbmQ6IFRISVMgQ09ERSBTQ09QRSBjYWxjdWxhdGVzIHRvZ2dsZWRJZHMgKi9cclxuXHJcbiAgICAvLyBUaGF0IGlzLiBIYXBweSBkZWJ1Z2dpbmchXHJcblxyXG4gIH1cclxuXHJcbiAgb25DaGVja0luY2x1ZGVEaXNzb2x2ZWRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGNvbnNvbGUubG9nKFwib25DaGVja0luY2x1ZGVEaXNzb2x2ZWRDaGFuZ2VcIiwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25DaGVja0luaGVyaXRhbmNlQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHtcclxuICAgICAgLi4udGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUhLFxyXG4gICAgICBjaGVja0luaGVyaXRhbmNlOiB2YWx1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25PYmplY3RDbGljayhlOiBJT3JnVHJlZUl0ZW0sIGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICAvLyByZW1vdmUgaGlnaGxpZ2h0IGNsYXNzXHJcbiAgICAvLyBUTyBET1xyXG5cclxuICAgIGlmICghIWUucHJvdGVjdGVkKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5pdGVtQ2xpY2s/LmVtaXQoZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuYWNjZXNzb3JNb2RlID09PSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkNIRUNLRUQpIHJldHVybjtcclxuICAgIGxldCBhY3RpdmVJZHM6IG51bWJlcltdID0gW107XHJcbiAgICB0aGlzLmRhdGEubWFwKChpdGVtKSA9PiAoaXRlbS5hY3RpdmUgPSBmYWxzZSkpO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmFjY2Vzc29yTW9kZSA9PT1cclxuICAgICAgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfSU5IRVJJVEFOQ0UgfHxcclxuICAgICAgISEhdGhpcy5hY2Nlc3Nvck1vZGVcclxuICAgICkge1xyXG4gICAgICAvLyBJZiB0cnVlLCBhbGwgdGhlIG5lc3RlZCBpdGVtcyB3aWxsIGJlIGFjdGl2ZSwgdGhlIG90aGVycyBhcmUgaW5hY3RpdmVcclxuICAgICAgdGhpcy5yZWN1cnNpdmVTZXJ2aWNlXHJcbiAgICAgICAgLm5lc3RlZFJlc2V0QWN0aXZlKGUsIHRydWUpXHJcbiAgICAgICAgLnRoZW4oKHgpID0+IHtcclxuICAgICAgICAgIGFjdGl2ZUlkcyA9IHg7XHJcbiAgICAgICAgICBhY3RpdmVJZHMuc29ydCgpO1xyXG4gICAgICAgICAgY29uc3QgbmV3QWN0aXZlS2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAgIGFjdGl2ZUlkcy5tYXAoKHgpID0+IG5ld0FjdGl2ZUtleXMucHVzaCh4LnRvU3RyaW5nKCkpKTtcclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAgICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSEsXHJcbiAgICAgICAgICAgIGFjdGl2ZUtleXM6IG5ld0FjdGl2ZUtleXMsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkS2V5OiBlLmlkLnRvU3RyaW5nKClcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVJZHMgPSBhY3RpdmVJZHM7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmFjdGl2ZUlkcyk7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGFjdGl2ZUlkcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKHg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcih4KTtcclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIC8vIEFDVElWQVRFRF9TSU5HTEVcclxuICAgICAgLy8gT3RoZXJ3aXNlIHdlIHNpbXBseSBzZXQgY3VycmVudCBpdGVtIHRvIGJlIGFjdGl2ZSBvbmx5XHJcbiAgICAgIGFjdGl2ZUlkcyA9IFtlLmlkXTtcclxuICAgICAgdGhpcy5hY3RpdmVJZHMgPSBhY3RpdmVJZHM7XHJcblxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHtcclxuICAgICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSEsXHJcbiAgICAgICAgYWN0aXZlS2V5czogW2UuaWQudG9TdHJpbmcoKV0sXHJcbiAgICAgICAgc2VsZWN0ZWRLZXk6IGUuaWQudG9TdHJpbmcoKSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLm9uQ2hhbmdlKGFjdGl2ZUlkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2ZW50O1xyXG5cclxuICAgIGlmIChkZXRhaWwgPT09IDIpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1RoaXMgd2FzIGEgZGJsY2xpY2snKTtcclxuICAgICAgdGhpcy5pdGVtRG91YmxlQ2xpY2suZW1pdChlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGU7XHJcblxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UodGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaCQubmV4dCh0ZXh0KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwibmdBZnRlckNvbnRlbnRJbml0XCIpXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoKHgpID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xyXG5cclxuICAgIGlmICghIXRoaXMuaW5zdGFuY2VOdW1iZXIpIHtcclxuICAgICAgY29uc3QgdHJ5VG9GaW5kID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoXHJcbiAgICAgICAgKHgpID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuaW5zdGFuY2VOdW1iZXJcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICghIXRyeVRvRmluZC5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBuZXdJbnN0YW5jZXMgPSB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiB4Lmluc3RhbmNlTnVtYmVyICE9PSB0aGlzLmluc3RhbmNlTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UuaW5zdGFuY2VzID0gbmV3SW5zdGFuY2VzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2NvbnRhaW5lciBjbGFzcz1cImNvcmUtb3JnLXRyZWUtY29udGFpbmVyXCIgW2NsYXNzLmZ1bGwtd2lkdGhdPVwiISFmdWxsV2lkdGhNb2RlXCIgKm5nSWY9XCIhIWRhdGFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgcG9zaXRpb24gOiAncmVsYXRpdmUnLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgbWluV2lkdGg6ICczMTBweCcsXHJcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQgKyAncHgnXHJcbiAgICB9XCI+XHJcbiAgICA8ZGl2ICNkaXNwbGF5Q29udGVudCBjbGFzcz1cImN1c3RvbS1vcmctdHJlZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb3JlLW9yZy10cmVlLWhlYWRlciBkLWZsZXgtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibTVcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hcIiAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIgfCB0cmFuc2xhdGU6IGxhbmdcIiBbY2xhc3MuZnVsbC13aWR0aF09XCIhIWZ1bGxXaWR0aE1vZGVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICNzY3JvbGxDb250YWluZXIgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLSBsYXlvdXRTZXJ2aWNlLmNvcmVPcmdUcmVlVG9wSGVpZ2h0IC0gbGF5b3V0U2VydmljZS5jb3JlT3JnVHJlZUJvdHRvbUhlaWdodCArICdweCcsXHJcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ3Njcm9sbCdcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLWxvYWRpbmctc3VyZmFjZSBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2hlaWdodF09XCJzY3JvbGxDb250YWluZXJIZWlnaHRcIj48L2NvcmUtbG9hZGluZy1zdXJmYWNlPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBAZm9yIChyb290IG9mIGRhdGFGaWx0ZXJlZDsgdHJhY2sgcm9vdCkgeyAtLT5cclxuICAgICAgICAgICAgICAgIEBmb3IgKHJvb3Qgb2YgZGF0YTsgdHJhY2sgcm9vdCkge1xyXG4gICAgICAgICAgICAgICAgQGRlZmVyKG9uIHZpZXdwb3J0KHNjcm9sbENvbnRhaW5lcikpIHtcclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInJvb3RcIiBbY2xhc3MuY29sbGFwc2VkXT1cIiEhIXJvb3QudHJlZSRFeHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvb3QgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIH0gQHBsYWNlaG9sZGVyKCkge1xyXG4gICAgICAgICAgICAgICAgUGxhY2Vob2xkZXIuLi5cclxuICAgICAgICAgICAgICAgIH0gQGxvYWRpbmcoKSB7XHJcbiAgICAgICAgICAgICAgICBMb2FkaW5nLi4uXHJcbiAgICAgICAgICAgICAgICB9IEBlcnJvcigpIHtcclxuICAgICAgICAgICAgICAgIEVycm9yLi4uXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICAgICAgICAgICAgICBib3R0b206ICcwcHgnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICByaWdodDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGxheW91dFNlcnZpY2UuY29yZVBhZ2luYXRpb25IZWlnaHQgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IGxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogbGF5b3V0U2VydmljZS5jb3JlUGFnaW5hdGlvbkhlaWdodCArICdweCcsXHJcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBsYXlvdXRTZXJ2aWNlLmNvcmVQYWdpbmF0aW9uSGVpZ2h0ICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFsobmdNb2RlbCldPVwic2hvd0Rpc3NvbHZlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrSW5jbHVkZURpc3NvbHZlZENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidVSS5DT1JFX09SR19UUkVFLlNIT1dfT1VUREFURURfVU5JVFNfQUJCUkVWSUFURUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIidVSS5DT1JFX09SR19UUkVFLlNIT1dfT1VUREFURURfVU5JVFMnXCIgdG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrLWluaGVyaXRhbmNlLXdyYXBwZXJcIiAqbmdJZj1cImFjY2Vzc29yTW9kZSA9PT0gJ0NIRUNLRUQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94ICpuZ0lmPVwic2hvd0NoZWNrSW5oZXJpdGFuY2VcIiBbKG5nTW9kZWwpXT1cImNoZWNrSW5oZXJpdGFuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja0luaGVyaXRhbmNlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJ1VJLkNPUkVfT1JHX1RSRUUuQ0hFQ0tfSU5IRVJJVEFOQ0UnXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtIGxldC1jb250ZXh0PVwiY29udGV4dFwiIGxldC1pZD1cImNvbnRleHQuaWRcIiBsZXQtdGl0bGU9XCJjb250ZXh0LnRyZWUkVGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgbGV0LWhpZ2hsaWdodGVkPVwiY29udGV4dC50cmVlJEhpZ2hsaWdodGVkXCIgbGV0LWhhc0NoaWxkcmVuPVwiY29udGV4dC50cmVlJEhhc0NoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAgIGxldC1oYXNBY3RpdmVDaGlsZHJlbj1cImNvbnRleHQudHJlZSRIYXNBY3RpdmVDaGlsZHJlblwiIGxldC1jaGlsZHJlbj1cImNvbnRleHQudHJlZSRDaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICBsZXQtZXhwYW5kZWQ9XCJjb250ZXh0LnRyZWUkRXhwYW5kZWRcIiBsZXQtaXNBY3RpdmU9XCJjb250ZXh0LmlzQWN0aXZlXCIgbGV0LWFjdGl2ZT1cImNvbnRleHQudHJlZSRBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgbGV0LWNoZWNrZWQ9XCJjb250ZXh0LnRyZWUkQ2hlY2tlZFwiIGxldC1wcm90ZWN0ZWQ9XCJjb250ZXh0LnByb3RlY3RlZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIEBpZiAoKCFzaG93RGlzc29sdmVkICYmICEhaXNBY3RpdmUpIHx8ICghIXNob3dEaXNzb2x2ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICA8bGkgW2NsYXNzLmhhcy1jaGlsZHJlbl09XCIhIWhhc0NoaWxkcmVuXCIgW2NsYXNzLmNvbGxhcHNlZF09XCIhIWhhc0NoaWxkcmVuICYmICEhIWV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAoY2xpY2spPVwiYWNjZXNzb3JNb2RlICE9PSAnQ0hFQ0tFRCcgPyBvbk9iamVjdENsaWNrKGNvbnRleHQsICRldmVudCkgOiAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvbk9iamVjdENsaWNrKGNvbnRleHQsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICgoISFzaG93RGlzc29sdmVkICYmICEhaGFzQ2hpbGRyZW4pIHx8ICghc2hvd0Rpc3NvbHZlZCAmJiAhIWhhc0FjdGl2ZUNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImV4cGFuZC10b2dnbGVyIGZlYXRoZXItY2hldnJvbi1kb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkV4cGFuZFRvZ2dsZXJDbGljayhjb250ZXh0LCAkZXZlbnQpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWNjZXNzb3JNb2RlID09PSAnQ0hFQ0tFRCcgJiYgIXByb3RlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1jaGVja2JveCAob25DbGljayk9XCJvbkl0ZW1DaGVjayhjb250ZXh0LCAkZXZlbnQpXCIgW2lucHV0VmFsdWVdPVwiY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBbY2xhc3MuYWN0aXZlXT1cImFjY2Vzc29yTW9kZSAhPSAnQ0hFQ0tFRCcgJiYgc2VsZWN0ZWRLZXk9PT1pZC50b1N0cmluZygpXCIgW2NsYXNzLmhpZ2hsaWdodGVkXT1cImhpZ2hsaWdodGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNzb2x2ZWRdPVwiIWlzQWN0aXZlXCIgW2NsYXNzLnByb3RlY3RlZF09XCJwcm90ZWN0ZWRcIiBbYXBwVG9vbHRpcF09XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoISFjaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dWwgW2NsYXNzLmNvbGxhcHNlZF09XCIgISEhZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgY2hpbGRyZW47IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCEhZXhwYW5kZWQgfHwgISFmdWxsUmVuZGVyaW5nKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbTsgY29udGV4dDogeyBjb250ZXh0OiBjaGlsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vcmctdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLEtBQUssRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBOEMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZMLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUM7QUFRMUgsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM3RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUsxRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSwyQkFB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QUUsSUFBSTtnQkFDWCxXQUFXLEVBQUUsb0JBQW9CO2FBQ2xDO1NBQ0YsaWVDdkRILCs3TEE2R00sNnBNRHRFRixZQUFZLDhYQUNaLFdBQVcsK21CQUNYLDJCQUEyQixnR0FDM0IscUJBQXFCLHFKQUVyQixhQUFhLGtEQUNiLGdCQUFnQjs7MkZBWVAsb0JBQW9CO2tCQXRCaEMsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCwyQkFBMkI7d0JBQzNCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4QixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakIsYUFHVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLHNCQUFzQjt5QkFDbEM7cUJBQ0Y7NFFBR1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDUSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDQyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDTSxrQkFBa0I7c0JBQWxELFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgSW5wdXQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG9mLCBzd2l0Y2hNYXAsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBSZWN1cnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVjdXJzaXZlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlT3JnVHJlZVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLW9yZy10cmVlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IElPcmdUcmVlSXRlbSwgSU9yZ1RyZWVMaW5lckl0ZW0gfSBmcm9tICcuL0lPcmdUcmVlSXRlbSc7XHJcblxyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IElDb3JlT3JnVHJlZUluc3RhbmNlLCBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBsaW5lcl90b19uZXN0ZWRfYXJyYXlfc2NyaXB0IH0gZnJvbSAnLi4vLi4vLi4vLi4vYXNzZXRzL2pzL3Jlc2N1c2l2ZV93aydcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29yZUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS1jaGVja2JveC9jb3JlLWNoZWNrYm94L2NvcmUtY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVSZWR1Y2VySWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtcmVkdWNlci1pY29uL2NvcmUtcmVkdWNlci1pY29uL2NvcmUtcmVkdWNlci1pY29uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCBlbnVtIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUge1xyXG4gIEFDVElWQVRFRF9TSU5HTEUgPSAnQUNUSVZBVEVEX1NJTkdMRScsXHJcbiAgQUNUSVZBVEVEX0lOSEVSSVRBTkNFID0gJ0FDVElWQVRFRF9JTkhFUklUQU5DRScsXHJcbiAgQ0hFQ0tFRCA9ICdDSEVDS0VEJyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRW51bUNvcmVPcmdUcmVlYVNlYXJjaE1vZGUge1xyXG4gIEhJR0hMSUdIVCA9ICdISUdITElHSFQnLFxyXG4gIFJFRFVDRSA9ICdSRURVQ0UnXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1vcmctdHJlZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCxcclxuICAgIENvcmVDaGVja2JveENvbXBvbmVudCxcclxuICAgIENvcmVSZWR1Y2VySWNvbkNvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtb3JnLXRyZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZU9yZ1RyZWVDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlT3JnVHJlZUNvbXBvbmVudCBleHRlbmRzIENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KCkgbGluZUNvbG9yOiBzdHJpbmcgPSAndHJhbnNwYXJlbnQnO1xyXG4gIEBJbnB1dCgpIGZ1bGxXaWR0aE1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGFjY2Vzc29yTW9kZTogRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZSB8IHN0cmluZyA9IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDtcclxuXHJcbiAgLy9UTyBCRSBORVdcclxuICBASW5wdXQoKSBzZWFyY2hNb2RlOiBFbnVtQ29yZU9yZ1RyZWVhU2VhcmNoTW9kZSA9IEVudW1Db3JlT3JnVHJlZWFTZWFyY2hNb2RlLlJFRFVDRTtcclxuXHJcbiAgQElucHV0KCkgZnVsbFJlbmRlcmluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyOyAvLyBDaGnhu4F1IGNhbyBj4bunYSBDb3JlT3JnVHJlZSBj4bqnbiDEkcaw4bujYyB0cnV54buBbiB2w6BvIVxyXG4gIEBJbnB1dCgpIGRpc2FibGVkTG9vcEV4cGFuZCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2hvd0NoZWNrSW5oZXJpdGFuY2UhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGV4Y2x1ZGVkSWRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyW10+KFtdKTsgLy8gMjAyNC0wNS0xMDogdG8gYmUgaW1wbGVtZW50ZWRcclxuICBASW5wdXQoKSBzdGF0ZUlzb2xhdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBAT3V0cHV0KCkgaXRlbURvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBpdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJykgc2Nyb2xsQ29udGFpbmVyITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdkaXNwbGF5Q29udGVudCcpIGRpc3BsYXlDb250ZW50ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdyZWR1Y2VkSWNvbldyYXBwZXInKSByZWR1Y2VkSWNvbldyYXBwZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBvdmVycmlkZSB2YWx1ZSE6IG51bWJlcltdO1xyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmFjY2Vzc29yTW9kZSkge1xyXG4gICAgICBjYXNlIEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRDpcclxuICAgICAgICBpZiAoISFvYmopIHtcclxuICAgICAgICAgIGNvbnN0IGNoZWNrZWRLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5jaGVja2VkSWRzID0gb2JqOyAvLyA8PT09IDI0LzEwLzIwMjNcclxuICAgICAgICAgIG9iai5tYXAoeCA9PiBjaGVja2VkS2V5cy5wdXNoKHgudG9TdHJpbmcoKSkpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZS53cml0ZVZhbHVlQ2hlY2tlZChjaGVja2VkS2V5cywgdGhpcy5kYXRhLCB0aGlzLmRpc2FibGVkTG9vcEV4cGFuZCkuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhICYmICEhdGhpcy5kYXRhPy5sZW5ndGgpIHRoaXMuZGF0YVswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9TSU5HTEU6XHJcbiAgICAgIGNhc2UgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfSU5IRVJJVEFOQ0U6XHJcbiAgICAgICAgaWYgKCEhb2JqKSB7XHJcbiAgICAgICAgICBjb25zdCBhY3RpdmF0ZWRLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgb2JqLm1hcCh4ID0+IGFjdGl2YXRlZEtleXMucHVzaCh4LnRvU3RyaW5nKCkpKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2Uud3JpdGVWYWx1ZUFjdGl2YXRlZChhY3RpdmF0ZWRLZXlzLCB0aGlzLmRhdGEsIHRoaXMuZGlzYWJsZWRMb29wRXhwYW5kKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5hY2Nlc3Nvck1vZGUgPT09IEVudW1Db3JlT3JnVHJlZWFBY2Nlc3Nvck1vZGUuQ0hFQ0tFRCkge1xyXG5cclxuICAgIH0gZWxzZSAvKiBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkFDVElWQVRFRF9TSU5HTEUgb3IgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfSU5IRVJJVEFOQ0UgKi8ge1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIGFjdGl2ZUlkczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgY2hlY2tlZElkczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgLy8gZm9yIGRlYnVnZ2luZ1xyXG4gIC8vIGFjdGl2ZUlkc1N0cmluZyE6IHN0cmluZzsgIFxyXG4gIGRhdGEhOiBJT3JnVHJlZUl0ZW1bXTtcclxuICAvL2RhdGFGaWx0ZXJlZCE6IElPcmdUcmVlSXRlbVtdO1xyXG4gIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgbGlubmVyT3JnQXJyYXkhOiBJT3JnVHJlZUxpbmVySXRlbVtdO1xyXG4gIHNlYXJjaCE6IHN0cmluZztcclxuICBzZWFyY2gkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHJlZHVjZWQhOiBib29sZWFuO1xyXG4gIHNlYXJjaFBsYWNlaG9sZGVyID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01NT05fUExBQ0VfSE9MREVSX1NFQVJDSF9PUkc7XHJcblxyXG4gIGluaXRpYWxpemluZyE6IGJvb2xlYW47XHJcbiAgY2hlY2tJbmhlcml0YW5jZTogYm9vbGVhbiA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWUgaXMgdHJ1ZVxyXG4gIHNob3dEaXNzb2x2ZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gZGVmYXVsdCB2YWx1ZSBpcyBmYWxzZVxyXG4gIHNlbGVjdGVkS2V5ITogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIHNlbGVjdGVkSXRlbSE6IElPcmdUcmVlTGluZXJJdGVtO1xyXG4gIGxhbmchOiBzdHJpbmc7XHJcbiAgLy9yZWR1Y2VkJCE6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuXHJcbiAgaW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgc2Nyb2xsQ29udGFpbmVySGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBzdGF0dXNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy9wdWJsaWMgb3ZlcnJpZGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlY3Vyc2l2ZVNlcnZpY2U6IFJlY3Vyc2l2ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZU9yZ1RyZWVTZXJ2aWNlOiBDb3JlT3JnVHJlZVNlcnZpY2UsXHJcbiAgICAvLyBwcml2YXRlIGNvcmVPcmdUcmVlU3RhdGU6IENvcmVPcmdUcmVlU3RhdGUsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIG9yZ2FuaXphdGlvblNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigvKmluamVjdG9yKi8pO1xyXG4gICAgdGhpcy5pbml0aWFsaXppbmcgPSB0cnVlO1xyXG5cclxuICAgIC8vIHRoaXMucmVkdWNlZCQgPSB0aGlzLmNvcmVPcmdUcmVlU3RhdGUuY29yZU9yZ1RyZWVSZWR1Y2VkJDtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemluZyA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydoZWlnaHQnXSkge1xyXG4gICAgICB0aGlzLnJlc2l6ZUhlaWdodCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy90aGlzLmxheW91dFNlcnZpY2UubGVmdGJhck9wZW4kLm5leHQoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuaW5zdGFuY2VOdW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IG5ld0luc3RhbmNlOiBJQ29yZU9yZ1RyZWVJbnN0YW5jZSA9IHtcclxuICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuaW5zdGFuY2VOdW1iZXIsXHJcbiAgICAgIHNlbGVjdGVkS2V5JDogbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCksXHJcbiAgICAgIGFjdGl2ZUtleXMkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSksXHJcbiAgICAgIGNoZWNrZWRLZXlzJDogbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pLFxyXG4gICAgICBleHBhbmRlZEtleXMkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSksXHJcbiAgICAgIGNoZWNrSW5oZXJpdGFuY2UkOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpXHJcbiAgICB9XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UuaW5zdGFuY2VzLnB1c2gobmV3SW5zdGFuY2UpXHJcblxyXG4gICAgLy8gQ2hlY2sgeGVtIGNoaeG7gXUgY2FvIGhlaWdodCBjw7MgxJHGsOG7o2MgdHJ1eeG7gW4gdsOgbyBoYXkga2jDtG5nXHJcbiAgICBpZiAodGhpcy5oZWlnaHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLndhcm4oXCJDb3JlT3JnVHJlZSBraMO0bmcgbmjhuq1uIMSRxrDhu6NjIGNoaeG7gXUgY2FvIChoZWlnaHQpIHRydXnhu4FuIHbDoG8gdOG7qyBs4bubcCBuZ2/DoGkuIENoaeG7gXUgY2FvIG3hurdjIMSR4buLbmggc+G6vSDEkcaw4bujYyB0w61uaCB0b8OhbiBk4buxYSB2w6BvIGLhu5EgY+G7pWMgY2jDrW5oLlwiLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5jb250ZW50Q29udGFpbmVySGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAvLyBiYXNpY1NwYWNpbmcgbMOgIHBhZGRpbmdCb3R0b20gY+G7p2EgbOG7m3AgY29udGVudC1jb250YWluZXJcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ID0geCAtIHRoaXMubGF5b3V0U2VydmljZS5jb3JlUGFnZUhlYWRlckhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UubGluZXJEYXRhJC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICB0aGlzLmxpbm5lck9yZ0FycmF5ID0geDtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuc3RhdGVJc29sYXRlZCQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIGlmICh4KSB7XHJcbiAgICAgICAgICBpZiAoISF0aGlzLnN0YXR1c1N1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXR1c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuc3RhdHVzU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzU3Vic2NyaXB0aW9uID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJCBjaGFuZ2VzXCIsIHgpXHJcbiAgICAgICAgICAgICAgY29uc3QgbmV3QWN0aXZlSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgICAgICAgICAgIHguYWN0aXZlS2V5cy5tYXAoKGspID0+IHtcclxuICAgICAgICAgICAgICAgIG5ld0FjdGl2ZUlkcy5wdXNoKE51bWJlcihrKSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJZHMgPSBuZXdBY3RpdmVJZHM7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYWNjZXNzb3JNb2RlICE9PSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkNIRUNLRUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmFjdGl2ZUlkcztcclxuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5hY3RpdmVJZHMpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkS2V5ID0geC5zZWxlY3RlZEtleTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuc2VhcmNoJFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKCh4KSA9PiB4ICE9PSBudWxsKSxcclxuICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxyXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgodGV4dCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc3dpdGNoTWFwIHdvcmtzJyk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAvLyBBVUcgMjAyNCBORVcgOiBNVVNUIEJFIFRFU1RFRFxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hNb2RlID09PSBFbnVtQ29yZU9yZ1RyZWVhU2VhcmNoTW9kZS5ISUdITElHSFQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWN1cnNpdmVTZXJ2aWNlLmZpbmRJdGVtKHRleHQsIHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMucmVjdXJzaXZlU2VydmljZS5yZWR1Y2luZ0ZpbHRlcih0aGlzLnNjcm9sbENvbnRhaW5lciwgdGV4dCkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gaWYgKHRoaXMuc2VhcmNoTW9kZSA9PT0gRW51bUNvcmVPcmdUcmVlYVNlYXJjaE1vZGUuUkVEVUNFKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuZGF0YUZpbHRlcmVkID0geCBhcyBJT3JnVHJlZUl0ZW1bXTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJFxyXG4gICAgICAgIC5waXBlKGZpbHRlcigodmFsdWUpID0+ICEhIXRoaXMuaW5pdGlhbGl6aW5nICYmICEhdmFsdWUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIGlmICghIWxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY29yZU9yZ1RyZWVTdGF0dXMnLCBKU09OLnN0cmluZ2lmeSh4KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoKHgpID0+ICh0aGlzLmxhbmcgPSB4KSkpO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzaXplSGVpZ2h0KCk6IHZvaWQge1xyXG5cclxuICAgIC8vIGhlaWdodCBpcyBub3QgZ2l2ZW4gYW5kIHRoZSB0cmVlIHJlc2l6ZSBhcyBzdGFuZGFyZFxyXG4gICAgaWYgKCEhIXRoaXMuaGVpZ2h0KSB7XHJcbiAgICAgIGNvbnN0IHNpemVIZWFkZXJIZWlnaHQgPSBOdW1iZXIoXHJcbiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXHJcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zaXplLWhlYWRlci1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IHNpemVDb3JlUGFnZUhlYWRlckhlaWdodCA9IE51bWJlcihcclxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcclxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtY29yZS1wYWdlLWhlYWRlci1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBzaXplSGVhZGVySGVpZ2h0IC0gc2l6ZUNvcmVQYWdlSGVhZGVySGVpZ2h0O1xyXG5cclxuICAgICAgY29uc3QgcGFnZUhlYWRlckhlaWdodCA9IE51bWJlcihcclxuICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcclxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXNpemUtY29yZS1wYWdlLWhlYWRlci1oZWlnaHQnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ3B4JywgJycpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCBwYWdpbmF0aW9uSGVpZ2h0ID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1jb3JlLXBhZ2luYXRpb24taGVpZ2h0JylcclxuICAgICAgICAgIC5yZXBsYWNlKCdweCcsICcnKVxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBzaXplTWFyZ2luQ29yZVBhZ2luYXRpb25GdWxsID0gTnVtYmVyKFxyXG4gICAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxyXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc2l6ZS1tYXJnaW4tY29yZS1wYWdpbmF0aW9uJylcclxuICAgICAgICAgIC5yZXBsYWNlKCdweCcsICcnKVxyXG4gICAgICApO1xyXG5cclxuXHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IGNvbnRhaW5lckhlaWdodCAtIHBhZ2VIZWFkZXJIZWlnaHQgLSBwYWdpbmF0aW9uSGVpZ2h0ICsgc2l6ZU1hcmdpbkNvcmVQYWdpbmF0aW9uRnVsbDtcclxuICAgICAgY29uc29sZS5sb2coaGVpZ2h0KTtcclxuXHJcbiAgICAgIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAgICctLWhlaWdodCcsIGhlaWdodCArICdweCdcclxuICAgICAgKTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgICAnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCArICdweCdcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uub3JnVHJlZURhdGEkLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhID0geDtcclxuICAgICAgICAgIC8vdGhpcy5kYXRhRmlsdGVyZWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHgpKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwibmV3IERhdGEgY29taW5nXCIsIHRoaXMuZGF0YSwgbmV3IERhdGUoKS5nZXRUaW1lKCkpXHJcbiAgICAgICAgICBpZiAoISF0aGlzLmRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhLmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25JdGVtQ2xpY2tMb2NhbChlOiBJT3JnVHJlZUl0ZW0pOiB2b2lkIHtcclxuICAgIHRoaXMubGlubmVyT3JnQXJyYXkubWFwKCh4KSA9PiAoeC5hY3RpdmUgPSBmYWxzZSkpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmJ1aWxkVHJlZURhdGEoKSk7XHJcbiAgfVxyXG5cclxuICBvblRvZ2dsZUl0ZW0oZTogSU9yZ1RyZWVJdGVtKSB7XHJcbiAgICBjb25zdCBjbG9uZUNvcHk6IElPcmdUcmVlTGluZXJJdGVtW10gPSBKU09OLnBhcnNlKFxyXG4gICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmxpbm5lck9yZ0FycmF5KVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGZpbHRlciA9IGNsb25lQ29weS5maWx0ZXIoKHgpID0+IHguaWQgPT09IGUuaWQpO1xyXG5cclxuICAgIGlmIChmaWx0ZXIubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGZpbHRlclswXS5leHBhbmQgPSAhISFlLmV4cGFuZDtcclxuICAgIH1cclxuICAgIHRoaXMubGlubmVyT3JnQXJyYXkgPSBjbG9uZUNvcHk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYnVpbGRUcmVlRGF0YSgpKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkVHJlZURhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGNsb25lQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5saW5uZXJPcmdBcnJheSkpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAvLyBDcmVhdGUgYSBuZXdcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKFwi8J+fovCfn6IgV29ya2VyIHdvcmtzXCIpO1xyXG5cclxuICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihsaW5lcl90b19uZXN0ZWRfYXJyYXlfc2NyaXB0KTtcclxuICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoeyBkYXRhIH0pID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhLmxpc3Q7XHJcbiAgICAgICAgLy90aGlzLmRhdGFGaWx0ZXJlZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YS5saXN0KSk7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5kYXRhICYmICEhdGhpcy5kYXRhPy5sZW5ndGgpIHRoaXMuZGF0YVswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgIGxpc3Q6IGNsb25lQ29weSxcclxuICAgICAgICBrZXlGaWVsZDogJ2lkJyxcclxuICAgICAgICB0aXRsZUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgcGFyZW50RmllbGQ6ICdwYXJlbnRJZCcsXHJcbiAgICAgICAgYWN0aXZlRmllbGQ6ICdhY3RpdmUnLFxyXG4gICAgICAgIC8vaW5oZXJpdGFudEFjdGl2ZUZpZWxkOiAnaW5oZXJpdGFudEFjdGl2ZScsXHJcbiAgICAgICAgY2hlY2tlZEZpZWxkOiAnY2hlY2tlZCcsXHJcbiAgICAgICAgZXhwYW5kZWRGaWVsZDogJ2V4cGFuZCcsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gV2ViIHdvcmtlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudC5cclxuICAgICAgLy8gWW91IHNob3VsZCBhZGQgYSBmYWxsYmFjayBzbyB0aGF0IHlvdXIgcHJvZ3JhbSBzdGlsbCBleGVjdXRlcyBjb3JyZWN0bHkuXHJcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlO1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2VcclxuICAgICAgICAgIC5saW5lckFycmF5VG9OZXN0ZWRBcnJheShcclxuICAgICAgICAgICAgY2xvbmVDb3B5LFxyXG4gICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAnbmFtZScsXHJcbiAgICAgICAgICAgICdwYXJlbnRJZCcsXHJcbiAgICAgICAgICAgICdhY3RpdmUnLFxyXG4gICAgICAgICAgICAnY2hlY2tlZCcsXHJcbiAgICAgICAgICAgICdleHBhbmQnLFxyXG4gICAgICAgICAgICAvL3N0YXR1c1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgob2JqKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IG9iai5saXN0O1xyXG4gICAgICAgICAgICAvL3RoaXMuZGF0YUZpbHRlcmVkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmoubGlzdCkpO1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEgJiYgISF0aGlzLmRhdGE/Lmxlbmd0aCkgdGhpcy5kYXRhWzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkV4cGFuZFRvZ2dsZXJDbGljayhlOiBJT3JnVHJlZUl0ZW0sIGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICFlLnRyZWUkRXhwYW5kZWQ7XHJcbiAgICBlLnRyZWUkRXhwYW5kZWQgPSBuZXdWYWx1ZTtcclxuXHJcbiAgICAvLyB1cGRhdGluZyBzdGF0dXMgd2l0aCBuZXdWYWx1ZVxyXG4gICAgY29uc3QgY3VycmVudEV4cGFuZGVkSWRzID1cclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWU/LmV4cGFuZGVkS2V5cztcclxuICAgIGxldCBuZXdFeHBhbmRlZElkcyA9IGN1cnJlbnRFeHBhbmRlZElkcz8uZmlsdGVyKFxyXG4gICAgICAoXykgPT4gISEhY3VycmVudEV4cGFuZGVkSWRzLmluY2x1ZGVzKGUuaWQudG9TdHJpbmcoKSlcclxuICAgICk7XHJcblxyXG4gICAgaWYgKG5ld1ZhbHVlKSB7XHJcbiAgICAgIG5ld0V4cGFuZGVkSWRzPy5wdXNoKGUuaWQudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmV3RXhwYW5kZWRJZHM/LnNvcnQoKTtcclxuXHJcbiAgICBjb25zdCBuZXdFeHBhbmRlZEtleXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBuZXdFeHBhbmRlZElkcy5tYXAoKHgpID0+IG5ld0V4cGFuZGVkS2V5cy5wdXNoKHgudG9TdHJpbmcoKSkpO1xyXG5cclxuICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSEsXHJcbiAgICAgIGV4cGFuZGVkS2V5czogbmV3RXhwYW5kZWRLZXlzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DaGVjayhlOiBJT3JnVHJlZUl0ZW0sIG5ld1ZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1DbGljaz8uZW1pdChlKTtcclxuICAgIGlmICh0aGlzLmFjY2Vzc29yTW9kZSAhPT0gRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5DSEVDS0VEKSByZXR1cm47XHJcblxyXG4gICAgLy8gV2UgaGF2ZSB0aGlzIHZhciB0byBob2xkIG5vZGVzIHRoYXQgYXJlIGJlaW5nIGNoYW5nZWRcclxuICAgIGxldCB0b2dnbGVkSWRzOiBudW1iZXJbXTtcclxuICAgIC8vIFdlIHNob3VsZCBjYWxjdWxhdGUgYSBuZXcgc3RhdGUgaW50byB0aGlzIHZhcjogXHJcbiAgICBjb25zdCBuZXdDaGVja2VkSWRzOiBudW1iZXJbXSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jaGVja2VkSWRzKSk7XHJcblxyXG4gICAgLy8gV2Ugd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgdG9nZ2xlZElkcyBjaGFuZ2VkXHJcbiAgICBjb25zdCBjaGFuZ2VWYWx1ZSA9ICgpID0+IHtcclxuXHJcbiAgICAgIC8vIElmIG5ld1ZhbHVlID09PSB0cnVlLCB3ZSB3aWxsIGRpc2N0aW50bHkgcHVzaCBjaGFuZ2VkIGlkcyB0byB0aGUgc3RhdGVcclxuICAgICAgLy8gT3RoZXJ3aXNlIHdlIHdpbGwgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgc3RhdGVcclxuICAgICAgaWYgKCEhbmV3VmFsdWUpIHtcclxuICAgICAgICB0b2dnbGVkSWRzLm1hcCh4ID0+IHtcclxuICAgICAgICAgIGlmICghISFuZXdDaGVja2VkSWRzLmluY2x1ZGVzKHgpKSB7XHJcbiAgICAgICAgICAgIG5ld0NoZWNrZWRJZHMucHVzaCh4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC8vIFRoZW4gYXNpZ24gdGhlIHN0YXRlIHRvIHRoZSBuZXdDaGVja2VkSWRzXHJcbiAgICAgICAgdGhpcy5jaGVja2VkSWRzID0gbmV3Q2hlY2tlZElkcztcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyID0gbmV3Q2hlY2tlZElkcy5maWx0ZXIoeCA9PiAhISF0b2dnbGVkSWRzLmluY2x1ZGVzKHgpKVxyXG4gICAgICAgIC8vIFRoZW4gYXNpZ24gdGhlIHN0YXRlIHRvIHRoZSBmaWx0ZXJcclxuICAgICAgICB0aGlzLmNoZWNrZWRJZHMgPSBmaWx0ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFmdGVyIHRoZSBjYXNlcyBvZiBpZi9lbHNlLCBtYWtlIHRoZSBjb250cm9sIGNoYW5nZSB3aXRoIG9uQ2hhbmdlXHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmNoZWNrZWRJZHM7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5jaGVja2VkSWRzKTtcclxuICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyogc3RhcnQ6IFRISVMgQ09ERSBTQ09QRSBjYWxjdWxhdGVzIHRvZ2dsZWRJZHMgKi9cclxuICAgIGlmICh0aGlzLmNoZWNrSW5oZXJpdGFuY2UpIHtcclxuICAgICAgLy8gSWYgdHJ1ZSwgYWxsIHRoZSBuZXN0ZWQgaXRlbXMgd2lsbCBiZSBjaGVja2VkL3VuY2hlY2tlZFxyXG4gICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2VcclxuICAgICAgICAubmVzdGVkVG9nZ2xlQ2hlY2soZSwgbmV3VmFsdWUpXHJcbiAgICAgICAgLnRoZW4oKHgpID0+IHtcclxuXHJcbiAgICAgICAgICBsZXQgY3VycmVudENoZWNrZWRLZXlzID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUuY2hlY2tlZEtleXMgfHwgW107XHJcblxyXG4gICAgICAgICAgaWYgKCEhbmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgeC5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGVja2VkS2V5cy5maWx0ZXIoaSA9PiBpID09PSBpdGVtLnRvU3RyaW5nKCkpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudENoZWNrZWRLZXlzLnB1c2goaXRlbS50b1N0cmluZygpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRDaGVja2VkS2V5cyA9IGN1cnJlbnRDaGVja2VkS2V5cy5maWx0ZXIoaSA9PiAheC5pbmNsdWRlcyhOdW1iZXIoaSkpKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAgICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSxcclxuICAgICAgICAgICAgY2hlY2tlZEtleXM6IGN1cnJlbnRDaGVja2VkS2V5cy8veC5tYXAoaXRlbSA9PiBpdGVtLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLy8gVGhlIGlkcyBoYXZlIGJlZW4gY2hhbmdlZFxyXG4gICAgICAgICAgdG9nZ2xlZElkcyA9IHg7XHJcblxyXG4gICAgICAgICAgLy8gTm93IHRvZ2dsZWRJZHMgd2VyZSBzZXQuIFdlIGNhbGwgdGhlIGZ1bmN0aW9uIHdlIGRlY2xhcmVkXHJcbiAgICAgICAgICBjaGFuZ2VWYWx1ZSgpO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gT3RoZXJ3aXNlIHdlIHNpbXBseSB0b2dnbGUgY2hlY2sgZm9yIGN1cnJlbnQgaXRlbSBvbmx5XHJcbiAgICAgIHRvZ2dsZWRJZHMgPSBbZS5pZF07XHJcblxyXG4gICAgICAvLyBOb3cgdG9nZ2xlZElkcyB3ZXJlIHNldC4gV2UgY2FsbCB0aGUgZnVuY3Rpb24gd2UgZGVjbGFyZWRcclxuICAgICAgY2hhbmdlVmFsdWUoKTtcclxuXHJcbiAgICB9XHJcbiAgICAvKiBlbmQ6IFRISVMgQ09ERSBTQ09QRSBjYWxjdWxhdGVzIHRvZ2dsZWRJZHMgKi9cclxuXHJcbiAgICAvLyBUaGF0IGlzLiBIYXBweSBkZWJ1Z2dpbmchXHJcblxyXG4gIH1cclxuXHJcbiAgb25DaGVja0luY2x1ZGVEaXNzb2x2ZWRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGNvbnNvbGUubG9nKFwib25DaGVja0luY2x1ZGVEaXNzb2x2ZWRDaGFuZ2VcIiwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25DaGVja0luaGVyaXRhbmNlQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHtcclxuICAgICAgLi4udGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUhLFxyXG4gICAgICBjaGVja0luaGVyaXRhbmNlOiB2YWx1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25PYmplY3RDbGljayhlOiBJT3JnVHJlZUl0ZW0sIGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICAvLyByZW1vdmUgaGlnaGxpZ2h0IGNsYXNzXHJcbiAgICAvLyBUTyBET1xyXG5cclxuICAgIGlmICghIWUucHJvdGVjdGVkKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5pdGVtQ2xpY2s/LmVtaXQoZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuYWNjZXNzb3JNb2RlID09PSBFbnVtQ29yZU9yZ1RyZWVhQWNjZXNzb3JNb2RlLkNIRUNLRUQpIHJldHVybjtcclxuICAgIGxldCBhY3RpdmVJZHM6IG51bWJlcltdID0gW107XHJcbiAgICB0aGlzLmRhdGEubWFwKChpdGVtKSA9PiAoaXRlbS5hY3RpdmUgPSBmYWxzZSkpO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmFjY2Vzc29yTW9kZSA9PT1cclxuICAgICAgRW51bUNvcmVPcmdUcmVlYUFjY2Vzc29yTW9kZS5BQ1RJVkFURURfSU5IRVJJVEFOQ0UgfHxcclxuICAgICAgISEhdGhpcy5hY2Nlc3Nvck1vZGVcclxuICAgICkge1xyXG4gICAgICAvLyBJZiB0cnVlLCBhbGwgdGhlIG5lc3RlZCBpdGVtcyB3aWxsIGJlIGFjdGl2ZSwgdGhlIG90aGVycyBhcmUgaW5hY3RpdmVcclxuICAgICAgdGhpcy5yZWN1cnNpdmVTZXJ2aWNlXHJcbiAgICAgICAgLm5lc3RlZFJlc2V0QWN0aXZlKGUsIHRydWUpXHJcbiAgICAgICAgLnRoZW4oKHgpID0+IHtcclxuICAgICAgICAgIGFjdGl2ZUlkcyA9IHg7XHJcbiAgICAgICAgICBhY3RpdmVJZHMuc29ydCgpO1xyXG4gICAgICAgICAgY29uc3QgbmV3QWN0aXZlS2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAgIGFjdGl2ZUlkcy5tYXAoKHgpID0+IG5ld0FjdGl2ZUtleXMucHVzaCh4LnRvU3RyaW5nKCkpKTtcclxuICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLm5leHQoe1xyXG4gICAgICAgICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSEsXHJcbiAgICAgICAgICAgIGFjdGl2ZUtleXM6IG5ld0FjdGl2ZUtleXMsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkS2V5OiBlLmlkLnRvU3RyaW5nKClcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVJZHMgPSBhY3RpdmVJZHM7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmFjdGl2ZUlkcyk7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKGFjdGl2ZUlkcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKHg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcih4KTtcclxuICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIC8vIEFDVElWQVRFRF9TSU5HTEVcclxuICAgICAgLy8gT3RoZXJ3aXNlIHdlIHNpbXBseSBzZXQgY3VycmVudCBpdGVtIHRvIGJlIGFjdGl2ZSBvbmx5XHJcbiAgICAgIGFjdGl2ZUlkcyA9IFtlLmlkXTtcclxuICAgICAgdGhpcy5hY3RpdmVJZHMgPSBhY3RpdmVJZHM7XHJcblxyXG4gICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHtcclxuICAgICAgICAuLi50aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC52YWx1ZSEsXHJcbiAgICAgICAgYWN0aXZlS2V5czogW2UuaWQudG9TdHJpbmcoKV0sXHJcbiAgICAgICAgc2VsZWN0ZWRLZXk6IGUuaWQudG9TdHJpbmcoKSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLm9uQ2hhbmdlKGFjdGl2ZUlkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2ZW50O1xyXG5cclxuICAgIGlmIChkZXRhaWwgPT09IDIpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1RoaXMgd2FzIGEgZGJsY2xpY2snKTtcclxuICAgICAgdGhpcy5pdGVtRG91YmxlQ2xpY2suZW1pdChlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGU7XHJcblxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDaGFuZ2UodGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaCQubmV4dCh0ZXh0KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwibmdBZnRlckNvbnRlbnRJbml0XCIpXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoKHgpID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xyXG5cclxuICAgIGlmICghIXRoaXMuaW5zdGFuY2VOdW1iZXIpIHtcclxuICAgICAgY29uc3QgdHJ5VG9GaW5kID0gdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoXHJcbiAgICAgICAgKHgpID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuaW5zdGFuY2VOdW1iZXJcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICghIXRyeVRvRmluZC5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBuZXdJbnN0YW5jZXMgPSB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiB4Lmluc3RhbmNlTnVtYmVyICE9PSB0aGlzLmluc3RhbmNlTnVtYmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2UuaW5zdGFuY2VzID0gbmV3SW5zdGFuY2VzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2NvbnRhaW5lciBjbGFzcz1cImNvcmUtb3JnLXRyZWUtY29udGFpbmVyXCIgW2NsYXNzLmZ1bGwtd2lkdGhdPVwiISFmdWxsV2lkdGhNb2RlXCIgKm5nSWY9XCIhIWRhdGFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgcG9zaXRpb24gOiAncmVsYXRpdmUnLFxyXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgbWluV2lkdGg6ICczMTBweCcsXHJcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQgKyAncHgnXHJcbiAgICB9XCI+XHJcbiAgICA8ZGl2ICNkaXNwbGF5Q29udGVudCBjbGFzcz1cImN1c3RvbS1vcmctdHJlZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb3JlLW9yZy10cmVlLWhlYWRlciBkLWZsZXgtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibTVcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hcIiAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIgfCB0cmFuc2xhdGU6IGxhbmdcIiBbY2xhc3MuZnVsbC13aWR0aF09XCIhIWZ1bGxXaWR0aE1vZGVcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICNzY3JvbGxDb250YWluZXIgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLSBsYXlvdXRTZXJ2aWNlLmNvcmVPcmdUcmVlVG9wSGVpZ2h0IC0gbGF5b3V0U2VydmljZS5jb3JlT3JnVHJlZUJvdHRvbUhlaWdodCArICdweCcsXHJcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ3Njcm9sbCdcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLWxvYWRpbmctc3VyZmFjZSBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2hlaWdodF09XCJzY3JvbGxDb250YWluZXJIZWlnaHRcIj48L2NvcmUtbG9hZGluZy1zdXJmYWNlPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBAZm9yIChyb290IG9mIGRhdGFGaWx0ZXJlZDsgdHJhY2sgcm9vdCkgeyAtLT5cclxuICAgICAgICAgICAgICAgIEBmb3IgKHJvb3Qgb2YgZGF0YTsgdHJhY2sgcm9vdCkge1xyXG4gICAgICAgICAgICAgICAgQGRlZmVyKG9uIHZpZXdwb3J0KHNjcm9sbENvbnRhaW5lcikpIHtcclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInJvb3RcIiBbY2xhc3MuY29sbGFwc2VkXT1cIiEhIXJvb3QudHJlZSRFeHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvb3QgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIH0gQHBsYWNlaG9sZGVyKCkge1xyXG4gICAgICAgICAgICAgICAgUGxhY2Vob2xkZXIuLi5cclxuICAgICAgICAgICAgICAgIH0gQGxvYWRpbmcoKSB7XHJcbiAgICAgICAgICAgICAgICBMb2FkaW5nLi4uXHJcbiAgICAgICAgICAgICAgICB9IEBlcnJvcigpIHtcclxuICAgICAgICAgICAgICAgIEVycm9yLi4uXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICAgICAgICAgICAgICBib3R0b206ICcwcHgnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICByaWdodDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGxheW91dFNlcnZpY2UuY29yZVBhZ2luYXRpb25IZWlnaHQgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IGxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogbGF5b3V0U2VydmljZS5jb3JlUGFnaW5hdGlvbkhlaWdodCArICdweCcsXHJcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBsYXlvdXRTZXJ2aWNlLmNvcmVQYWdpbmF0aW9uSGVpZ2h0ICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJ1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94IFsobmdNb2RlbCldPVwic2hvd0Rpc3NvbHZlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoZWNrSW5jbHVkZURpc3NvbHZlZENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidVSS5DT1JFX09SR19UUkVFLlNIT1dfT1VUREFURURfVU5JVFNfQUJCUkVWSUFURUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwXT1cIidVSS5DT1JFX09SR19UUkVFLlNIT1dfT1VUREFURURfVU5JVFMnXCIgdG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrLWluaGVyaXRhbmNlLXdyYXBwZXJcIiAqbmdJZj1cImFjY2Vzc29yTW9kZSA9PT0gJ0NIRUNLRUQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNoZWNrYm94ICpuZ0lmPVwic2hvd0NoZWNrSW5oZXJpdGFuY2VcIiBbKG5nTW9kZWwpXT1cImNoZWNrSW5oZXJpdGFuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja0luaGVyaXRhbmNlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJ1VJLkNPUkVfT1JHX1RSRUUuQ0hFQ0tfSU5IRVJJVEFOQ0UnXCI+PC9jb3JlLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtIGxldC1jb250ZXh0PVwiY29udGV4dFwiIGxldC1pZD1cImNvbnRleHQuaWRcIiBsZXQtdGl0bGU9XCJjb250ZXh0LnRyZWUkVGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgbGV0LWhpZ2hsaWdodGVkPVwiY29udGV4dC50cmVlJEhpZ2hsaWdodGVkXCIgbGV0LWhhc0NoaWxkcmVuPVwiY29udGV4dC50cmVlJEhhc0NoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAgIGxldC1oYXNBY3RpdmVDaGlsZHJlbj1cImNvbnRleHQudHJlZSRIYXNBY3RpdmVDaGlsZHJlblwiIGxldC1jaGlsZHJlbj1cImNvbnRleHQudHJlZSRDaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICBsZXQtZXhwYW5kZWQ9XCJjb250ZXh0LnRyZWUkRXhwYW5kZWRcIiBsZXQtaXNBY3RpdmU9XCJjb250ZXh0LmlzQWN0aXZlXCIgbGV0LWFjdGl2ZT1cImNvbnRleHQudHJlZSRBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgbGV0LWNoZWNrZWQ9XCJjb250ZXh0LnRyZWUkQ2hlY2tlZFwiIGxldC1wcm90ZWN0ZWQ9XCJjb250ZXh0LnByb3RlY3RlZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIEBpZiAoKCFzaG93RGlzc29sdmVkICYmICEhaXNBY3RpdmUpIHx8ICghIXNob3dEaXNzb2x2ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICA8bGkgW2NsYXNzLmhhcy1jaGlsZHJlbl09XCIhIWhhc0NoaWxkcmVuXCIgW2NsYXNzLmNvbGxhcHNlZF09XCIhIWhhc0NoaWxkcmVuICYmICEhIWV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAoY2xpY2spPVwiYWNjZXNzb3JNb2RlICE9PSAnQ0hFQ0tFRCcgPyBvbk9iamVjdENsaWNrKGNvbnRleHQsICRldmVudCkgOiAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJvbk9iamVjdENsaWNrKGNvbnRleHQsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICgoISFzaG93RGlzc29sdmVkICYmICEhaGFzQ2hpbGRyZW4pIHx8ICghc2hvd0Rpc3NvbHZlZCAmJiAhIWhhc0FjdGl2ZUNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImV4cGFuZC10b2dnbGVyIGZlYXRoZXItY2hldnJvbi1kb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkV4cGFuZFRvZ2dsZXJDbGljayhjb250ZXh0LCAkZXZlbnQpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWNjZXNzb3JNb2RlID09PSAnQ0hFQ0tFRCcgJiYgIXByb3RlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1jaGVja2JveCAob25DbGljayk9XCJvbkl0ZW1DaGVjayhjb250ZXh0LCAkZXZlbnQpXCIgW2lucHV0VmFsdWVdPVwiY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj48L2NvcmUtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBbY2xhc3MuYWN0aXZlXT1cImFjY2Vzc29yTW9kZSAhPSAnQ0hFQ0tFRCcgJiYgc2VsZWN0ZWRLZXk9PT1pZC50b1N0cmluZygpXCIgW2NsYXNzLmhpZ2hsaWdodGVkXT1cImhpZ2hsaWdodGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNzb2x2ZWRdPVwiIWlzQWN0aXZlXCIgW2NsYXNzLnByb3RlY3RlZF09XCJwcm90ZWN0ZWRcIiBbYXBwVG9vbHRpcF09XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoISFjaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dWwgW2NsYXNzLmNvbGxhcHNlZF09XCIgISEhZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgY2hpbGRyZW47IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCEhZXhwYW5kZWQgfHwgISFmdWxsUmVuZGVyaW5nKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbTsgY29udGV4dDogeyBjb250ZXh0OiBjaGlsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -186,7 +186,9 @@ export class CoreDatetimeService {
186
186
  isDateString(date) {
187
187
  /* RegExp is a magic object */
188
188
  const _regExp = new RegExp('^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$');
189
- return _regExp.test(date);
189
+ const regTest = _regExp.test(date);
190
+ const simpleTest = new Date(date);
191
+ return !!date && (regTest || !!simpleTest);
190
192
  }
191
193
  monthIdentityToMonthString(monthIdentity) {
192
194
  const year = monthIdentity.year;
@@ -217,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
217
219
  providedIn: 'root'
218
220
  }]
219
221
  }], ctorParameters: () => [] });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1kYXRldGltZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL3NlcnZpY2VzL2NvcmUtZGF0ZXRpbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLGNBQWMsR0FBUTtJQUMxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7SUFDOUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0lBQzlDLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztDQUMvQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQVE7SUFDcEIsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDO0lBQ3RFLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQztJQUNoRixFQUFFLEVBQUUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7Q0FDbEYsQ0FBQztBQUVGLE1BQU0sTUFBTSxHQUFRO0lBQ2xCLEVBQUUsRUFBRSxDQUFDLFNBQVMs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LE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRTtZQUNkLE9BQU8sR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7U0FDNUI7YUFBTTtZQUNMLE9BQU8sR0FBRyxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDOzhHQWhOVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuY29uc3QgV0VFS0RBWVNfU0hPUlQ6IGFueSA9IHtcclxuICB2aTogWydUMicsICdUMycsICdUNCcsICdUNScsICdUNicsICdUNycsICdDTiddLFxyXG4gIGVuOiBbJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJywgJ1N1J10sXHJcbiAgdWE6IFsn0J/QvScsICfQktGCJywgJ9Ch0YAnLCAn0KfRgicsICfQn9GCJywgJ9Ch0LEnLCAn0J3QtCddLFxyXG59O1xyXG5cclxuY29uc3QgV0VFS0RBWVM6IGFueSA9IHtcclxuICB2aTogWydUaOG7qSAyJywgJ1Ro4bupIDMnLCAnVGjhu6kgNCcsICdUaOG7qSA1JywgJ1Ro4bupIDYnLCAnVGjhu6kgNycsICdDaOG7pyBuaOG6rXQnXSxcclxuICBlbjogWydNb25kYXknLCAnVHVlc2RheScsICdXZW5lc2RheScsICdUaHVyZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheScsICdTdW5kYXknXSxcclxuICB1YTogWyfQn9C+0L3QtdC00ZbQu9C+0LonLCAn0JLRltCy0YLQvtGA0L7QuicsICfQodC10YDQtdC00LAnLCAn0KfQtdGC0LLQtdGAJywgXCLQnyfRj9GC0L3QuNGG0Y9cIiwgJ9Ch0YPQsdC+0YLQsCcsICfQndC10LTRltC70Y8nXSxcclxufTtcclxuXHJcbmNvbnN0IE1PTlRIUzogYW55ID0ge1xyXG4gIHZpOiBbJ1Row6FuZyAxJywgJ1Row6FuZyAyJywgJ1Row6FuZyAzJywgJ1Row6FuZyA0JywgJ1Row6FuZyA1JywgJ1Row6FuZyA2JywgJ1Row6FuZyA3JywgJ1Row6FuZyA4JywgJ1Row6FuZyA5JywgJ1Row6FuZyAxMCcsICdUaMOhbmcgMTEnLCAnVGjDoW5nIDEyJ10sXHJcbiAgZW46IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxyXG4gIHVhOiBbJ9Ch0ZbRh9C10L3RjCcsICfQm9GO0YLQuNC5JywgJ9CR0LXRgNC10LfQtdC90YwnLCAn0JrQstGW0YLQtdC90YwnLCAn0KLRgNCw0LLQtdC90YwnLCAn0KfQtdGA0LLQtdC90YwgJywgJ9Cb0LjQv9C10L3RjCcsICfQodC10YDQv9C10L3RjCcsICfQktC10YDQtdGB0LXQvdGMJywgJ9CW0L7QstGC0LXQvdGMJywgJ9Cb0LjRgdGC0L7Qv9Cw0LQnLCAn0JPRgNGD0LTQtdC90YwnXSxcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFJdGVtIHtcclxuICBkYXRlOiBzdHJpbmc7XHJcbiAgY3VycmVudE1vbnRoPzogYm9vbGVhbjtcclxuICBkYXRlVmFsdWU6IERhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFSb3cge1xyXG4gIGl0ZW1zOiBJRGF0YUl0ZW1bXTtcclxuICBtaXhlZDogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ2FsZW5kYXJCb2R5IHtcclxuICByb3dzOiBJRGF0YVJvd1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEZWNhZGVZZWFyc09iamVjdCB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBpdGVtczogbnVtYmVyW11bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTW9udGhJZGVudGl0eSB7XHJcbiAgeWVhcjogbnVtYmVyO1xyXG4gIG1vbnRoSW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZURhdGV0aW1lU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiAgZ2V0TW9udGhUZXh0KGxhbmc6IHN0cmluZywgbW9udGhJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIC8qXHJcbiAgICBtb250aEluZGV4IGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gcmFuZ2UgWzAtMTFdLlxyXG4gICAgVGh1cywgZ2V0IHRoZSBpbmRleCBmaXJzdFxyXG4gICAgSSB1c2UgMjAyMyBhcyBjb21wdXRpbmcgeWVhciwgYnV0IGl0IGNhbiBiZSB3aGF0ZXZlclxyXG4gICAgKi9cclxuXHJcbiAgICBjb25zdCByZWFsSW5kZXg6IG51bWJlciA9IChuZXcgRGF0ZSgyMDIzLCBtb250aEluZGV4KSkuZ2V0TW9udGgoKTtcclxuXHJcbiAgICByZXR1cm4gTU9OVEhTW2xhbmddW3JlYWxJbmRleF07XHJcbiAgfVxyXG5cclxuICBkYXRlVG9WblN0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgZGF0ZS5nZXRGdWxsWWVhciAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gZGF0ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGxldCBtOiBudW1iZXIgfCBzdHJpbmcgPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgbGV0IGQ6IG51bWJlciB8IHN0cmluZyA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgbSA9IG0gPCAxMCA/ICcwJyArIG0gOiBtO1xyXG4gICAgZCA9IGQgPCAxMCA/ICcwJyArIGQgOiBkO1xyXG4gICAgcmV0dXJuIGAke2R9LyR7bX0vJHt5fWBcclxuICB9XHJcblxyXG4gIGdldFNob3J0V2Vla2RheXMobGFuZzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gV0VFS0RBWVNfU0hPUlRbbGFuZ107XHJcbiAgfVxyXG5cclxuICBnZXRXZWVrZGF5cyhsYW5nOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBXRUVLREFZU1tsYW5nXTtcclxuICB9XHJcblxyXG4gIGdldE1vbnRoTmFtZXMobGFuZzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gTU9OVEhTW2xhbmddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNb25vQ2FsZW5kYXJCb2R5KHllYXI6IG51bWJlciwgbW9udGhJbmRleDogbnVtYmVyKTogSURhdGFSb3dbXSB7XHJcbiAgICAvKiBcclxuICAgIHRoZSBtb250aEluZGV4IGluIERhdGUoKSBjb25zdHJ1Y3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIGluIHJhbmdlIDAtMTFcclxuICAgIHRoZSBkYXkgaW4gRGF0ZSgpIGNvbnN0cnVjdG9yIGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gcmFuZ2Ugb2YgcG9zaXRpdmUgbnVtYmVyc1xyXG4gICAgKi9cclxuICAgIGNvbnN0IGxhc3REYXlQcmV2aW91c01vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCwgMCk7XHJcbiAgICBjb25zdCBsYXN0RFByZXZpb3VzTW9udGggPSBsYXN0RGF5UHJldmlvdXNNb250aC5nZXREYXRlKCk7XHJcbiAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoSW5kZXgsIDEpO1xyXG4gICAgY29uc3QgbGFzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoSW5kZXggKyAxLCAwKTtcclxuICAgIGNvbnN0IGxhc3REID0gbGFzdERheS5nZXREYXRlKCk7XHJcbiAgICBsZXQgZmlyc3RXZWVrZGF5SW5kZXggPSBmaXJzdERheS5nZXREYXkoKTtcclxuICAgIGxldCBsYXN0V2Vla2RheUluZGV4ID0gbGFzdERheS5nZXREYXkoKTtcclxuICAgIC8vIFZpZW5hbWVzZSBydWxlOiBNb25kYXkgaXMgdGhlIDFzdCBkYXkgb2Ygd2Vla1xyXG4gICAgZmlyc3RXZWVrZGF5SW5kZXggPSBmaXJzdFdlZWtkYXlJbmRleCA9PT0gMCA/IDYgOiBmaXJzdFdlZWtkYXlJbmRleCAtIDE7XHJcbiAgICBsYXN0V2Vla2RheUluZGV4ID0gbGFzdFdlZWtkYXlJbmRleCA9PT0gMCA/IDYgOiBsYXN0V2Vla2RheUluZGV4IC0gMTtcclxuXHJcbiAgICBjb25zdCBuZXdCb2R5OiBJRGF0YVJvd1tdID0gW107XHJcbiAgICBsZXQgZCA9IDA7XHJcblxyXG4gICAgLy8gVGhlIDFzdCByb3dcclxuICAgIGxldCBuZXdSb3c6IElEYXRhSXRlbVtdID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpcnN0V2Vla2RheUluZGV4OyBpKyspIHtcclxuICAgICAgbmV3Um93LnB1c2goe1xyXG4gICAgICAgIGRhdGU6IChsYXN0RFByZXZpb3VzTW9udGggLSBmaXJzdFdlZWtkYXlJbmRleCArIGkgKyAxKS50b1N0cmluZygpLFxyXG4gICAgICAgIGRhdGVWYWx1ZTogbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCAtIDEsIGxhc3REUHJldmlvdXNNb250aCAtIGZpcnN0V2Vla2RheUluZGV4ICsgaSArIDEpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gZmlyc3RXZWVrZGF5SW5kZXg7IGkgPCA3OyBpKyspIHtcclxuICAgICAgbmV3Um93LnB1c2goe1xyXG4gICAgICAgIGRhdGU6IChpIC0gZmlyc3RXZWVrZGF5SW5kZXggKyAxKS50b1N0cmluZygpLFxyXG4gICAgICAgIGRhdGVWYWx1ZTogbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCwgaSAtIGZpcnN0V2Vla2RheUluZGV4ICsgMSlcclxuICAgICAgfSlcclxuICAgICAgZCsrO1xyXG4gICAgfVxyXG4gICAgbmV3Qm9keS5wdXNoKHtcclxuICAgICAgaXRlbXM6IG5ld1JvdyxcclxuICAgICAgbWl4ZWQ6ICEhZmlyc3RXZWVrZGF5SW5kZXhcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFRoZSBuZXh0IHJvd3NcclxuICAgIGQrKztcclxuICAgIGxldCB3ZWVrRGF5SW5kZXggPSAwO1xyXG4gICAgbmV3Um93ID0gW107XHJcbiAgICBmb3IgKGQ7IGQgPD0gbGFzdEQ7IGQrKykge1xyXG4gICAgICBuZXdSb3cucHVzaCh7XHJcbiAgICAgICAgZGF0ZTogZC50b1N0cmluZygpLFxyXG4gICAgICAgIGRhdGVWYWx1ZTogbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCwgZClcclxuICAgICAgfSlcclxuICAgICAgd2Vla0RheUluZGV4Kys7XHJcbiAgICAgIGlmICh3ZWVrRGF5SW5kZXggPT09IDcpIHtcclxuICAgICAgICBuZXdCb2R5LnB1c2goe1xyXG4gICAgICAgICAgaXRlbXM6IG5ld1JvdyxcclxuICAgICAgICAgIG1peGVkOiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBuZXdSb3cgPSBbXTtcclxuICAgICAgICB3ZWVrRGF5SW5kZXggPSAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICB0aGUgbGFzdCByb3cgZXhpc3RzIG9ubHkgd2hlbiB3ZWVrRGF5SW5kZXggIT09IDBcclxuICAgICAobWVhbnMgcHJldmlvdXMgcm93IGhhcyBub3QgYmVlbiBwdXNoZWQgdG8gbmV3Qm9keSlcclxuICAgICovXHJcblxyXG4gICAgaWYgKHdlZWtEYXlJbmRleCAhPT0gMCkge1xyXG4gICAgICBsZXQgaSA9IDE7XHJcbiAgICAgIGZvciAod2Vla0RheUluZGV4OyB3ZWVrRGF5SW5kZXggPCA3OyB3ZWVrRGF5SW5kZXgrKykge1xyXG4gICAgICAgIG5ld1Jvdy5wdXNoKHtcclxuICAgICAgICAgIGRhdGU6IGkudG9TdHJpbmcoKSxcclxuICAgICAgICAgIGRhdGVWYWx1ZTogbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCArIDEsIGkpXHJcbiAgICAgICAgfSlcclxuICAgICAgICBpKys7XHJcbiAgICAgIH1cclxuICAgICAgbmV3Qm9keS5wdXNoKHtcclxuICAgICAgICBpdGVtczogbmV3Um93LFxyXG4gICAgICAgIG1peGVkOiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXdCb2R5O1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgIGRpcmVjdGlvbjogMCB8IDEgfCAtMVxyXG4gICAgMDogbW9ub1xyXG4gICAgMTogZ28gZm9yZXdhcmRcclxuICAgIC0xOiBnbyBiYWNrd2FyZCAgXHJcbiAgKi9cclxuICBnZXRDYWxlbmRhckJvZHkoeWVhcjogbnVtYmVyLCBtb250aEluZGV4OiBudW1iZXIsIGRpcmVjdGlvbjogbnVtYmVyID0gMCk6IElDYWxlbmRhckJvZHkge1xyXG4gICAgbGV0IG1vbnRoMTogSURhdGFSb3dbXTtcclxuICAgIGxldCBtb250aDI6IElEYXRhUm93W107XHJcbiAgICBsZXQgcmVkdWNlZDogSURhdGFSb3dbXSA9IFtdO1xyXG4gICAgbGV0IG1lcmdlZDogSURhdGFSb3dbXTtcclxuXHJcbiAgICBjb25zdCBkZWJ1Z0NvbmRpdGlvbiA9IHllYXIgPT09IDIwMjMgJiYgbW9udGhJbmRleCA9PT0gNiAmJiBkaXJlY3Rpb24gPT09IDFcclxuXHJcbiAgICBpZiAoZGlyZWN0aW9uID09PSAwKSB7XHJcbiAgICAgIG1lcmdlZCA9IHRoaXMuZ2V0TW9ub0NhbGVuZGFyQm9keSh5ZWFyLCBtb250aEluZGV4KTtcclxuICAgICAgcmVkdWNlZCA9IFtdO1xyXG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IDEpIHtcclxuICAgICAgbW9udGgxID0gdGhpcy5nZXRNb25vQ2FsZW5kYXJCb2R5KHllYXIsIG1vbnRoSW5kZXggLSAxKTtcclxuICAgICAgbW9udGgyID0gdGhpcy5nZXRNb25vQ2FsZW5kYXJCb2R5KHllYXIsIG1vbnRoSW5kZXgpO1xyXG4gICAgICByZWR1Y2VkID0gWy4uLm1vbnRoMV07XHJcbiAgICAgIGlmIChtb250aDFbbW9udGgxLmxlbmd0aCAtIDFdLm1peGVkKSByZWR1Y2VkID0gbW9udGgxLmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICE9PSAobW9udGgxLmxlbmd0aCAtIDEpKTtcclxuICAgICAgbWVyZ2VkID0gWy4uLnJlZHVjZWQsIC4uLm1vbnRoMl07XHJcbiAgICAgIGlmIChkZWJ1Z0NvbmRpdGlvbikgY29uc29sZS5sb2coXCJyZWR1Y2VkXCIsIHJlZHVjZWQpXHJcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gLTEpIHtcclxuICAgICAgbW9udGgxID0gdGhpcy5nZXRNb25vQ2FsZW5kYXJCb2R5KHllYXIsIG1vbnRoSW5kZXgpO1xyXG4gICAgICBtb250aDIgPSB0aGlzLmdldE1vbm9DYWxlbmRhckJvZHkoeWVhciwgbW9udGhJbmRleCArIDEpO1xyXG4gICAgICByZWR1Y2VkID0gWy4uLm1vbnRoMl07XHJcbiAgICAgIGlmIChtb250aDJbMF0ubWl4ZWQpIHJlZHVjZWQgPSBtb250aDIuZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggIT09IDApO1xyXG4gICAgICBtZXJnZWQgPSBbLi4ubW9udGgxLCAuLi5yZWR1Y2VkXTtcclxuICAgIH1cclxuICAgIG1lcmdlZCEubWFwKHJvdyA9PiB7XHJcbiAgICAgIHJvdy5pdGVtcy5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZGF0ZVZhbHVlLmdldE1vbnRoKCkgPT09IG1vbnRoSW5kZXgpIHtcclxuICAgICAgICAgIGl0ZW0uY3VycmVudE1vbnRoID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcm93czogbWVyZ2VkIVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldExhc3REYXRlT2ZNb250aCh5ZWFyOiBudW1iZXIsIG1vbnRoSW5kZXg6IG51bWJlcik6IERhdGUge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoSW5kZXggKyAxLCAwKTtcclxuICB9XHJcblxyXG4gIGdldERlY2FkZVllYXJzT2JqZWN0KGN1cnJlbnRZZWFyOiBudW1iZXIpOiBJRGVjYWRlWWVhcnNPYmplY3Qge1xyXG4gICAgY29uc3QgZnJvbSA9IE1hdGguZmxvb3IoY3VycmVudFllYXIgLyAxMCkgKiAxMDtcclxuICAgIGNvbnN0IHRpdGxlID0gYCR7ZnJvbX0gLSAke2Zyb20gKyA5fWA7XHJcbiAgICBjb25zdCBpdGVtczogbnVtYmVyW11bXSA9IFtcclxuICAgICAgW2Zyb20sIGZyb20gKyAxLCBmcm9tICsgMl0sXHJcbiAgICAgIFtmcm9tICsgMywgZnJvbSArIDQsIGZyb20gKyA1XSxcclxuICAgICAgW2Zyb20gKyA2LCBmcm9tICsgNywgZnJvbSArIDhdLFxyXG4gICAgICBbZnJvbSArIDldXHJcbiAgICBdXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZSwgaXRlbXNcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFxyXG4gIC8qIFRISVMgRlVOQ1RJT04gV0FTIENPUElFRCBGUk9NIFRIRSBJTlRFUk5FVC4gUExFQVNFIENIRUNLIElUIENBUkVGVUxMWSBMQVRFUiAqL1xyXG4gIGlzRGF0ZVN0cmluZyhkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIC8qIFJlZ0V4cCBpcyBhIG1hZ2ljIG9iamVjdCAqL1xyXG4gICAgY29uc3QgX3JlZ0V4cCA9IG5ldyBSZWdFeHAoJ14oLT8oPzpbMS05XVswLTldKik/WzAtOV17NH0pLSgxWzAtMl18MFsxLTldKS0oM1swMV18MFsxLTldfFsxMl1bMC05XSlUKDJbMC0zXXxbMDFdWzAtOV0pOihbMC01XVswLTldKTooWzAtNV1bMC05XSkoLlswLTldKyk/KFopPyQnKTtcclxuICAgIHJldHVybiBfcmVnRXhwLnRlc3QoZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBtb250aElkZW50aXR5VG9Nb250aFN0cmluZyhtb250aElkZW50aXR5OiBJTW9udGhJZGVudGl0eSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB5ZWFyID0gbW9udGhJZGVudGl0eS55ZWFyO1xyXG4gICAgY29uc3QgbW9udGggPSBtb250aElkZW50aXR5Lm1vbnRoSW5kZXggKyAxO1xyXG4gICAgaWYgKG1vbnRoIDwgMTApIHtcclxuICAgICAgcmV0dXJuIGAke3llYXJ9LTAke21vbnRofWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGF0ZVRvTW9udGhTdHJpbmcoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgaWYgKG1vbnRoIDwgMTApIHtcclxuICAgICAgcmV0dXJuIGAke3llYXJ9LTAke21vbnRofWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1kYXRldGltZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL3NlcnZpY2VzL2NvcmUtZGF0ZXRpbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLGNBQWMsR0FBUTtJQUMxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7SUFDOUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0lBQzlDLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztDQUMvQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQVE7SUFDcEIsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDO0lBQ3RFLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQztJQUNoRixFQUFFLEVBQUUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7Q0FDbEYsQ0FBQztBQUVGLE1BQU0sTUFBTSxHQUFRO0lBQ2xCLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO0lBQzNJLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO0lBQzlILEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDO0NBQ3pJLENBQUM7QUE4QkYsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixnQkFBZ0IsQ0FBQztJQUNqQixZQUFZLENBQUMsSUFBWSxFQUFFLFVBQWtCO1FBQzNDOzs7O1VBSUU7UUFFRixNQUFNLFNBQVMsR0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWxFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBVTtRQUN2QixJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDeEI7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQW9CLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQW9CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUE7SUFDekIsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVk7UUFDM0IsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBWTtRQUN4QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBWSxFQUFFLFVBQWtCO1FBQzFEOzs7VUFHRTtRQUNGLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLElBQUksaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFDLElBQUksZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hDLGdEQUFnRDtRQUNoRCxpQkFBaUIsR0FBRyxpQkFBaUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3hFLGdCQUFnQixHQUFHLGdCQUFnQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFFckUsTUFBTSxPQUFPLEdBQWUsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVWLGNBQWM7UUFDZCxJQUFJLE1BQU0sR0FBZ0IsRUFBRSxDQUFDO1FBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLElBQUksRUFBRSxDQUFDLGtCQUFrQixHQUFHLGlCQUFpQixHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pFLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxrQkFBa0IsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFGLENBQUMsQ0FBQTtTQUNIO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQkFDNUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixHQUFHLENBQUMsQ0FBQzthQUNqRSxDQUFDLENBQUE7WUFDRixDQUFDLEVBQUUsQ0FBQztTQUNMO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNYLEtBQUssRUFBRSxNQUFNO1lBQ2IsS0FBSyxFQUFFLENBQUMsQ0FBQyxpQkFBaUI7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsZ0JBQWdCO1FBQ2hCLENBQUMsRUFBRSxDQUFDO1FBQ0osSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDWixLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQzthQUN6QyxDQUFDLENBQUE7WUFDRixZQUFZLEVBQUUsQ0FBQztZQUNmLElBQUksWUFBWSxLQUFLLENBQUMsRUFBRTtnQkFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxLQUFLLEVBQUUsTUFBTTtvQkFDYixLQUFLLEVBQUUsS0FBSztpQkFDYixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDWixZQUFZLEdBQUcsQ0FBQyxDQUFDO2FBQ2xCO1NBQ0Y7UUFFRDs7O1VBR0U7UUFFRixJQUFJLFlBQVksS0FBSyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsS0FBSyxZQUFZLEVBQUUsWUFBWSxHQUFHLENBQUMsRUFBRSxZQUFZLEVBQUUsRUFBRTtnQkFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtvQkFDbEIsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDN0MsQ0FBQyxDQUFBO2dCQUNGLENBQUMsRUFBRSxDQUFDO2FBQ0w7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7O01BS0U7SUFDRixlQUFlLENBQUMsSUFBWSxFQUFFLFVBQWtCLEVBQUUsWUFBb0IsQ0FBQztRQUNyRSxJQUFJLE1BQWtCLENBQUM7UUFDdkIsSUFBSSxNQUFrQixDQUFDO1FBQ3ZCLElBQUksT0FBTyxHQUFlLEVBQUUsQ0FBQztRQUM3QixJQUFJLE1BQWtCLENBQUM7UUFFdkIsTUFBTSxjQUFjLEdBQUcsSUFBSSxLQUFLLElBQUksSUFBSSxVQUFVLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUE7UUFFM0UsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO1lBQ25CLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sR0FBRyxFQUFFLENBQUM7U0FDZDthQUFNLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRTtZQUMxQixNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEQsTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDcEQsT0FBTyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUN0QixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUs7Z0JBQUUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUcsTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUNqQyxJQUFJLGNBQWM7Z0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7U0FDcEQ7YUFBTSxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMzQixNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNwRCxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEQsT0FBTyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUN0QixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO2dCQUFFLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sR0FBRyxDQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7U0FDbEM7UUFDRCxNQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssVUFBVSxFQUFFO29CQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztpQkFDMUI7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTztZQUNMLElBQUksRUFBRSxNQUFPO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsVUFBa0I7UUFDakQsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsV0FBbUI7UUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9DLE1BQU0sS0FBSyxHQUFHLEdBQUcsSUFBSSxNQUFNLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLEtBQUssR0FBZTtZQUN4QixDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUM7WUFDMUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNYLENBQUE7UUFDRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFBO0lBQ0gsQ0FBQztJQUdELGlGQUFpRjtJQUNqRixZQUFZLENBQUMsSUFBWTtRQUN2Qiw4QkFBOEI7UUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsb0lBQW9JLENBQUMsQ0FBQztRQUVqSyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELDBCQUEwQixDQUFDLGFBQTZCO1FBQ3RELE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDM0MsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFO1lBQ2QsT0FBTyxHQUFHLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztTQUM1QjthQUFNO1lBQ0wsT0FBTyxHQUFHLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFVO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRTtZQUNkLE9BQU8sR0FBRyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7U0FDNUI7YUFBTTtZQUNMLE9BQU8sR0FBRyxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDOzhHQXBOVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuY29uc3QgV0VFS0RBWVNfU0hPUlQ6IGFueSA9IHtcclxuICB2aTogWydUMicsICdUMycsICdUNCcsICdUNScsICdUNicsICdUNycsICdDTiddLFxyXG4gIGVuOiBbJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJywgJ1N1J10sXHJcbiAgdWE6IFsn0J/QvScsICfQktGCJywgJ9Ch0YAnLCAn0KfRgicsICfQn9GCJywgJ9Ch0LEnLCAn0J3QtCddLFxyXG59O1xyXG5cclxuY29uc3QgV0VFS0RBWVM6IGFueSA9IHtcclxuICB2aTogWydUaOG7qSAyJywgJ1Ro4bupIDMnLCAnVGjhu6kgNCcsICdUaOG7qSA1JywgJ1Ro4bupIDYnLCAnVGjhu6kgNycsICdDaOG7pyBuaOG6rXQnXSxcclxuICBlbjogWydNb25kYXknLCAnVHVlc2RheScsICdXZW5lc2RheScsICdUaHVyZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheScsICdTdW5kYXknXSxcclxuICB1YTogWyfQn9C+0L3QtdC00ZbQu9C+0LonLCAn0JLRltCy0YLQvtGA0L7QuicsICfQodC10YDQtdC00LAnLCAn0KfQtdGC0LLQtdGAJywgXCLQnyfRj9GC0L3QuNGG0Y9cIiwgJ9Ch0YPQsdC+0YLQsCcsICfQndC10LTRltC70Y8nXSxcclxufTtcclxuXHJcbmNvbnN0IE1PTlRIUzogYW55ID0ge1xyXG4gIHZpOiBbJ1Row6FuZyAxJywgJ1Row6FuZyAyJywgJ1Row6FuZyAzJywgJ1Row6FuZyA0JywgJ1Row6FuZyA1JywgJ1Row6FuZyA2JywgJ1Row6FuZyA3JywgJ1Row6FuZyA4JywgJ1Row6FuZyA5JywgJ1Row6FuZyAxMCcsICdUaMOhbmcgMTEnLCAnVGjDoW5nIDEyJ10sXHJcbiAgZW46IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxyXG4gIHVhOiBbJ9Ch0ZbRh9C10L3RjCcsICfQm9GO0YLQuNC5JywgJ9CR0LXRgNC10LfQtdC90YwnLCAn0JrQstGW0YLQtdC90YwnLCAn0KLRgNCw0LLQtdC90YwnLCAn0KfQtdGA0LLQtdC90YwgJywgJ9Cb0LjQv9C10L3RjCcsICfQodC10YDQv9C10L3RjCcsICfQktC10YDQtdGB0LXQvdGMJywgJ9CW0L7QstGC0LXQvdGMJywgJ9Cb0LjRgdGC0L7Qv9Cw0LQnLCAn0JPRgNGD0LTQtdC90YwnXSxcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFJdGVtIHtcclxuICBkYXRlOiBzdHJpbmc7XHJcbiAgY3VycmVudE1vbnRoPzogYm9vbGVhbjtcclxuICBkYXRlVmFsdWU6IERhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURhdGFSb3cge1xyXG4gIGl0ZW1zOiBJRGF0YUl0ZW1bXTtcclxuICBtaXhlZDogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ2FsZW5kYXJCb2R5IHtcclxuICByb3dzOiBJRGF0YVJvd1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEZWNhZGVZZWFyc09iamVjdCB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBpdGVtczogbnVtYmVyW11bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTW9udGhJZGVudGl0eSB7XHJcbiAgeWVhcjogbnVtYmVyO1xyXG4gIG1vbnRoSW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZURhdGV0aW1lU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiAgZ2V0TW9udGhUZXh0KGxhbmc6IHN0cmluZywgbW9udGhJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIC8qXHJcbiAgICBtb250aEluZGV4IGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gcmFuZ2UgWzAtMTFdLlxyXG4gICAgVGh1cywgZ2V0IHRoZSBpbmRleCBmaXJzdFxyXG4gICAgSSB1c2UgMjAyMyBhcyBjb21wdXRpbmcgeWVhciwgYnV0IGl0IGNhbiBiZSB3aGF0ZXZlclxyXG4gICAgKi9cclxuXHJcbiAgICBjb25zdCByZWFsSW5kZXg6IG51bWJlciA9IChuZXcgRGF0ZSgyMDIzLCBtb250aEluZGV4KSkuZ2V0TW9udGgoKTtcclxuXHJcbiAgICByZXR1cm4gTU9OVEhTW2xhbmddW3JlYWxJbmRleF07XHJcbiAgfVxyXG5cclxuICBkYXRlVG9WblN0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgZGF0ZS5nZXRGdWxsWWVhciAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gZGF0ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGxldCBtOiBudW1iZXIgfCBzdHJpbmcgPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgbGV0IGQ6IG51bWJlciB8IHN0cmluZyA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgbSA9IG0gPCAxMCA/ICcwJyArIG0gOiBtO1xyXG4gICAgZCA9IGQgPCAxMCA/ICcwJyArIGQgOiBkO1xyXG4gICAgcmV0dXJuIGAke2R9LyR7bX0vJHt5fWBcclxuICB9XHJcblxyXG4gIGdldFNob3J0V2Vla2RheXMobGFuZzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gV0VFS0RBWVNfU0hPUlRbbGFuZ107XHJcbiAgfVxyXG5cclxuICBnZXRXZWVrZGF5cyhsYW5nOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBXRUVLREFZU1tsYW5nXTtcclxuICB9XHJcblxyXG4gIGdldE1vbnRoTmFtZXMobGFuZzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gTU9OVEhTW2xhbmddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNb25vQ2FsZW5kYXJCb2R5KHllYXI6IG51bWJlciwgbW9udGhJbmRleDogbnVtYmVyKTogSURhdGFSb3dbXSB7XHJcbiAgICAvKiBcclxuICAgIHRoZSBtb250aEluZGV4IGluIERhdGUoKSBjb25zdHJ1Y3RvciBkb2VzIG5vdCBuZWVkIHRvIGJlIGluIHJhbmdlIDAtMTFcclxuICAgIHRoZSBkYXkgaW4gRGF0ZSgpIGNvbnN0cnVjdG9yIGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gcmFuZ2Ugb2YgcG9zaXRpdmUgbnVtYmVyc1xyXG4gICAgKi9cclxuICAgIGNvbnN0IGxhc3REYXlQcmV2aW91c01vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCwgMCk7XHJcbiAgICBjb25zdCBsYXN0RFByZXZpb3VzTW9udGggPSBsYXN0RGF5UHJldmlvdXNNb250aC5nZXREYXRlKCk7XHJcbiAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoSW5kZXgsIDEpO1xyXG4gICAgY29uc3QgbGFzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoSW5kZXggKyAxLCAwKTtcclxuICAgIGNvbnN0IGxhc3REID0gbGFzdERheS5nZXREYXRlKCk7XHJcbiAgICBsZXQgZmlyc3RXZWVrZGF5SW5kZXggPSBmaXJzdERheS5nZXREYXkoKTtcclxuICAgIGxldCBsYXN0V2Vla2RheUluZGV4ID0gbGFzdERheS5nZXREYXkoKTtcclxuICAgIC8vIFZpZW5hbWVzZSBydWxlOiBNb25kYXkgaXMgdGhlIDFzdCBkYXkgb2Ygd2Vla1xyXG4gICAgZmlyc3RXZWVrZGF5SW5kZXggPSBmaXJzdFdlZWtkYXlJbmRleCA9PT0gMCA/IDYgOiBmaXJzdFdlZWtkYXlJbmRleCAtIDE7XHJcbiAgICBsYXN0V2Vla2RheUluZGV4ID0gbGFzdFdlZWtkYXlJbmRleCA9PT0gMCA/IDYgOiBsYXN0V2Vla2RheUluZGV4IC0gMTtcclxuXHJcbiAgICBjb25zdCBuZXdCb2R5OiBJRGF0YVJvd1tdID0gW107XHJcbiAgICBsZXQgZCA9IDA7XHJcblxyXG4gICAgLy8gVGhlIDFzdCByb3dcclxuICAgIGxldCBuZXdSb3c6IElEYXRhSXRlbVtdID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpcnN0V2Vla2RheUluZGV4OyBpKyspIHtcclxuICAgICAgbmV3Um93LnB1c2goe1xyXG4gICAgICAgIGRhdGU6IChsYXN0RFByZXZpb3VzTW9udGggLSBmaXJzdFdlZWtkYXlJbmRleCArIGkgKyAxKS50b1N0cmluZygpLFxyXG4gICAgICAgIGRhdGVWYWx1ZTogbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCAtIDEsIGxhc3REUHJldmlvdXNNb250aCAtIGZpcnN0V2Vla2RheUluZGV4ICsgaSArIDEpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gZmlyc3RXZWVrZGF5SW5kZXg7IGkgPCA3OyBpKyspIHtcclxuICAgICAgbmV3Um93LnB1c2goe1xyXG4gICAgICAgIGRhdGU6IChpIC0gZmlyc3RXZWVrZGF5SW5kZXggKyAxKS50b1N0cmluZygpLFxyXG4gICAgICAgIGRhdGVWYWx1ZTogbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCwgaSAtIGZpcnN0V2Vla2RheUluZGV4ICsgMSlcclxuICAgICAgfSlcclxuICAgICAgZCsrO1xyXG4gICAgfVxyXG4gICAgbmV3Qm9keS5wdXNoKHtcclxuICAgICAgaXRlbXM6IG5ld1JvdyxcclxuICAgICAgbWl4ZWQ6ICEhZmlyc3RXZWVrZGF5SW5kZXhcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFRoZSBuZXh0IHJvd3NcclxuICAgIGQrKztcclxuICAgIGxldCB3ZWVrRGF5SW5kZXggPSAwO1xyXG4gICAgbmV3Um93ID0gW107XHJcbiAgICBmb3IgKGQ7IGQgPD0gbGFzdEQ7IGQrKykge1xyXG4gICAgICBuZXdSb3cucHVzaCh7XHJcbiAgICAgICAgZGF0ZTogZC50b1N0cmluZygpLFxyXG4gICAgICAgIGRhdGVWYWx1ZTogbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCwgZClcclxuICAgICAgfSlcclxuICAgICAgd2Vla0RheUluZGV4Kys7XHJcbiAgICAgIGlmICh3ZWVrRGF5SW5kZXggPT09IDcpIHtcclxuICAgICAgICBuZXdCb2R5LnB1c2goe1xyXG4gICAgICAgICAgaXRlbXM6IG5ld1JvdyxcclxuICAgICAgICAgIG1peGVkOiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBuZXdSb3cgPSBbXTtcclxuICAgICAgICB3ZWVrRGF5SW5kZXggPSAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICB0aGUgbGFzdCByb3cgZXhpc3RzIG9ubHkgd2hlbiB3ZWVrRGF5SW5kZXggIT09IDBcclxuICAgICAobWVhbnMgcHJldmlvdXMgcm93IGhhcyBub3QgYmVlbiBwdXNoZWQgdG8gbmV3Qm9keSlcclxuICAgICovXHJcblxyXG4gICAgaWYgKHdlZWtEYXlJbmRleCAhPT0gMCkge1xyXG4gICAgICBsZXQgaSA9IDE7XHJcbiAgICAgIGZvciAod2Vla0RheUluZGV4OyB3ZWVrRGF5SW5kZXggPCA3OyB3ZWVrRGF5SW5kZXgrKykge1xyXG4gICAgICAgIG5ld1Jvdy5wdXNoKHtcclxuICAgICAgICAgIGRhdGU6IGkudG9TdHJpbmcoKSxcclxuICAgICAgICAgIGRhdGVWYWx1ZTogbmV3IERhdGUoeWVhciwgbW9udGhJbmRleCArIDEsIGkpXHJcbiAgICAgICAgfSlcclxuICAgICAgICBpKys7XHJcbiAgICAgIH1cclxuICAgICAgbmV3Qm9keS5wdXNoKHtcclxuICAgICAgICBpdGVtczogbmV3Um93LFxyXG4gICAgICAgIG1peGVkOiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXdCb2R5O1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgIGRpcmVjdGlvbjogMCB8IDEgfCAtMVxyXG4gICAgMDogbW9ub1xyXG4gICAgMTogZ28gZm9yZXdhcmRcclxuICAgIC0xOiBnbyBiYWNrd2FyZCAgXHJcbiAgKi9cclxuICBnZXRDYWxlbmRhckJvZHkoeWVhcjogbnVtYmVyLCBtb250aEluZGV4OiBudW1iZXIsIGRpcmVjdGlvbjogbnVtYmVyID0gMCk6IElDYWxlbmRhckJvZHkge1xyXG4gICAgbGV0IG1vbnRoMTogSURhdGFSb3dbXTtcclxuICAgIGxldCBtb250aDI6IElEYXRhUm93W107XHJcbiAgICBsZXQgcmVkdWNlZDogSURhdGFSb3dbXSA9IFtdO1xyXG4gICAgbGV0IG1lcmdlZDogSURhdGFSb3dbXTtcclxuXHJcbiAgICBjb25zdCBkZWJ1Z0NvbmRpdGlvbiA9IHllYXIgPT09IDIwMjMgJiYgbW9udGhJbmRleCA9PT0gNiAmJiBkaXJlY3Rpb24gPT09IDFcclxuXHJcbiAgICBpZiAoZGlyZWN0aW9uID09PSAwKSB7XHJcbiAgICAgIG1lcmdlZCA9IHRoaXMuZ2V0TW9ub0NhbGVuZGFyQm9keSh5ZWFyLCBtb250aEluZGV4KTtcclxuICAgICAgcmVkdWNlZCA9IFtdO1xyXG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IDEpIHtcclxuICAgICAgbW9udGgxID0gdGhpcy5nZXRNb25vQ2FsZW5kYXJCb2R5KHllYXIsIG1vbnRoSW5kZXggLSAxKTtcclxuICAgICAgbW9udGgyID0gdGhpcy5nZXRNb25vQ2FsZW5kYXJCb2R5KHllYXIsIG1vbnRoSW5kZXgpO1xyXG4gICAgICByZWR1Y2VkID0gWy4uLm1vbnRoMV07XHJcbiAgICAgIGlmIChtb250aDFbbW9udGgxLmxlbmd0aCAtIDFdLm1peGVkKSByZWR1Y2VkID0gbW9udGgxLmZpbHRlcigoXywgaW5kZXgpID0+IGluZGV4ICE9PSAobW9udGgxLmxlbmd0aCAtIDEpKTtcclxuICAgICAgbWVyZ2VkID0gWy4uLnJlZHVjZWQsIC4uLm1vbnRoMl07XHJcbiAgICAgIGlmIChkZWJ1Z0NvbmRpdGlvbikgY29uc29sZS5sb2coXCJyZWR1Y2VkXCIsIHJlZHVjZWQpXHJcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gLTEpIHtcclxuICAgICAgbW9udGgxID0gdGhpcy5nZXRNb25vQ2FsZW5kYXJCb2R5KHllYXIsIG1vbnRoSW5kZXgpO1xyXG4gICAgICBtb250aDIgPSB0aGlzLmdldE1vbm9DYWxlbmRhckJvZHkoeWVhciwgbW9udGhJbmRleCArIDEpO1xyXG4gICAgICByZWR1Y2VkID0gWy4uLm1vbnRoMl07XHJcbiAgICAgIGlmIChtb250aDJbMF0ubWl4ZWQpIHJlZHVjZWQgPSBtb250aDIuZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggIT09IDApO1xyXG4gICAgICBtZXJnZWQgPSBbLi4ubW9udGgxLCAuLi5yZWR1Y2VkXTtcclxuICAgIH1cclxuICAgIG1lcmdlZCEubWFwKHJvdyA9PiB7XHJcbiAgICAgIHJvdy5pdGVtcy5tYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZGF0ZVZhbHVlLmdldE1vbnRoKCkgPT09IG1vbnRoSW5kZXgpIHtcclxuICAgICAgICAgIGl0ZW0uY3VycmVudE1vbnRoID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcm93czogbWVyZ2VkIVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldExhc3REYXRlT2ZNb250aCh5ZWFyOiBudW1iZXIsIG1vbnRoSW5kZXg6IG51bWJlcik6IERhdGUge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoSW5kZXggKyAxLCAwKTtcclxuICB9XHJcblxyXG4gIGdldERlY2FkZVllYXJzT2JqZWN0KGN1cnJlbnRZZWFyOiBudW1iZXIpOiBJRGVjYWRlWWVhcnNPYmplY3Qge1xyXG4gICAgY29uc3QgZnJvbSA9IE1hdGguZmxvb3IoY3VycmVudFllYXIgLyAxMCkgKiAxMDtcclxuICAgIGNvbnN0IHRpdGxlID0gYCR7ZnJvbX0gLSAke2Zyb20gKyA5fWA7XHJcbiAgICBjb25zdCBpdGVtczogbnVtYmVyW11bXSA9IFtcclxuICAgICAgW2Zyb20sIGZyb20gKyAxLCBmcm9tICsgMl0sXHJcbiAgICAgIFtmcm9tICsgMywgZnJvbSArIDQsIGZyb20gKyA1XSxcclxuICAgICAgW2Zyb20gKyA2LCBmcm9tICsgNywgZnJvbSArIDhdLFxyXG4gICAgICBbZnJvbSArIDldXHJcbiAgICBdXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZSwgaXRlbXNcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFxyXG4gIC8qIFRISVMgRlVOQ1RJT04gV0FTIENPUElFRCBGUk9NIFRIRSBJTlRFUk5FVC4gUExFQVNFIENIRUNLIElUIENBUkVGVUxMWSBMQVRFUiAqL1xyXG4gIGlzRGF0ZVN0cmluZyhkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIC8qIFJlZ0V4cCBpcyBhIG1hZ2ljIG9iamVjdCAqL1xyXG4gICAgY29uc3QgX3JlZ0V4cCA9IG5ldyBSZWdFeHAoJ14oLT8oPzpbMS05XVswLTldKik/WzAtOV17NH0pLSgxWzAtMl18MFsxLTldKS0oM1swMV18MFsxLTldfFsxMl1bMC05XSlUKDJbMC0zXXxbMDFdWzAtOV0pOihbMC01XVswLTldKTooWzAtNV1bMC05XSkoLlswLTldKyk/KFopPyQnKTtcclxuXHJcbiAgICBjb25zdCByZWdUZXN0ID0gX3JlZ0V4cC50ZXN0KGRhdGUpO1xyXG4gICAgY29uc3Qgc2ltcGxlVGVzdCA9IG5ldyBEYXRlKGRhdGUpO1xyXG5cclxuICAgIHJldHVybiAhIWRhdGUgJiYgKHJlZ1Rlc3QgfHwgISFzaW1wbGVUZXN0KTtcclxuICB9XHJcblxyXG4gIG1vbnRoSWRlbnRpdHlUb01vbnRoU3RyaW5nKG1vbnRoSWRlbnRpdHk6IElNb250aElkZW50aXR5KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHllYXIgPSBtb250aElkZW50aXR5LnllYXI7XHJcbiAgICBjb25zdCBtb250aCA9IG1vbnRoSWRlbnRpdHkubW9udGhJbmRleCArIDE7XHJcbiAgICBpZiAobW9udGggPCAxMCkge1xyXG4gICAgICByZXR1cm4gYCR7eWVhcn0tMCR7bW9udGh9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkYXRlVG9Nb250aFN0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICBpZiAobW9udGggPCAxMCkge1xyXG4gICAgICByZXR1cm4gYCR7eWVhcn0tMCR7bW9udGh9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=