chrv-components 1.8.41 → 1.8.42
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.
|
Binary file
|
|
@@ -129,8 +129,8 @@ export class ChrFormComponent {
|
|
|
129
129
|
* @param dateFormat optional date format for date and datetime inputs
|
|
130
130
|
*/
|
|
131
131
|
this.set = (model, dateFormat = null) => {
|
|
132
|
-
for (const
|
|
133
|
-
this.setValue(
|
|
132
|
+
for (const ctrl of this.flattenedControls) {
|
|
133
|
+
this.setValue(ctrl.name, model[ctrl.name], dateFormat);
|
|
134
134
|
}
|
|
135
135
|
};
|
|
136
136
|
/**
|
|
@@ -152,8 +152,8 @@ export class ChrFormComponent {
|
|
|
152
152
|
* @param dateFormat optional date format for date and datetime inputs
|
|
153
153
|
*/
|
|
154
154
|
this.patch = (model, dateFormat = null) => {
|
|
155
|
-
for (const
|
|
156
|
-
this.patchValue(
|
|
155
|
+
for (const ctrl of this.flattenedControls) {
|
|
156
|
+
this.patchValue(ctrl.name, model[ctrl.name], dateFormat);
|
|
157
157
|
}
|
|
158
158
|
};
|
|
159
159
|
this.checkValidity = () => {
|
|
@@ -363,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
363
363
|
}], tabDisplay: [{
|
|
364
364
|
type: Input
|
|
365
365
|
}] } });
|
|
366
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsR0FJdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVOLG1CQUFtQixFQUNuQixXQUFXLEdBR1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBR04sVUFBVSxFQUNWLFdBQVcsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUNOLFFBQVEsRUFDUixZQUFZLEVBQ1oseUJBQXlCLEdBQ3pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFDTixJQUFJLEVBQ0osc0JBQXNCLEdBQ3RCLE1BQU0seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUFFLE9B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WUFFWixhQUFhOzsyRkFXRixnQkFBZ0I7a0JBaEM1QixTQUFTOytCQUNDLGNBQWMsY0FPWixJQUFJLFdBQ1A7d0JBQ1IsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLFFBQVE7d0JBQ1Isd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLGFBQWE7cUJBQ2IsYUFDVTt3QkFDVixRQUFRO3dCQUNSOzRCQUNDLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUU7eUJBQ3JDO3FCQUNELG1CQUNnQix1QkFBdUIsQ0FBQyxPQUFPO2dLQUd2QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFHRSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRFdmVudEVtaXR0ZXIsXG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0T25Jbml0LFxuXHRFbGVtZW50UmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcblx0VmFsaWRhdG9yRm4sXG5cdFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cdEZvcm1zTW9kdWxlLFxuXHRWYWxpZGF0aW9uRXJyb3JzLFxuXHRBYnN0cmFjdENvbnRyb2wsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtcblx0Rm9ybUJ1aWxkZXIsXG5cdEZvcm1Hcm91cCxcblx0VmFsaWRhdG9ycyxcblx0Rm9ybUNvbnRyb2wsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0RXJyb3IgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcbmltcG9ydCB7IENoclNlYXJjaFNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuLi9jaHItc2VhcmNoLXNlbGVjdC9jaHItc2VhcmNoLXNlbGVjdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZVwiO1xuaW1wb3J0IHtcblx0RGF0ZVBpcGUsXG5cdENvbW1vbk1vZHVsZSxcblx0REFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJzXCI7XG5pbXBvcnQge1xuXHR0eXBlLFxuXHRUeXBlVmFsaWRhdG9yRGlyZWN0aXZlLFxufSBmcm9tIFwiLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBkZWNpbWFsIH0gZnJvbSBcIi4uL21vZGVscy9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvclwiO1xuaW1wb3J0IHsgbWF4RGF0ZSB9IGZyb20gXCIuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvbWF4LWRhdGUtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHJlcXVpcmVkIH0gZnJvbSBcIi4uL21vZGVscy9jaHItdmFsaWRhdG9ycy9yZXF1aXJlZC12YWxpZGF0b3JcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUNvbnRyb2xDb2xsZWN0aW9uIHtcblx0W2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2w7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaEZpbHRlciB7XG5cdGRpc3BsYXk6IHN0cmluZztcblx0Y2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0dG9vbHRpcD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbFZhbGlkYXRpb24ge1xuXHRydWxlOiBzdHJpbmc7XG5cdHZhbGlkYXRvcj86IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsO1xuXHRrZXk/OiBzdHJpbmc7XG5cdHZhbHVlPzogYW55O1xuXHRkaXNwbGF5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sIHtcblx0bGFiZWw/OiBzdHJpbmc7XG5cdG5hbWU6IHN0cmluZztcblx0c3Bhbj86IHN0cmluZztcblx0d2lkdGg/OiBcImNvbFwiIHwgXCJyb3dcIjtcblx0Y29sPzogbnVtYmVyO1xuXHRyb3c/OiBudW1iZXI7XG5cdHR5cGU6XG5cdFx0fCBcInRleHRcIlxuXHRcdHwgXCJwYXNzd29yZFwiXG5cdFx0fCBcInRleHRBcmVhXCJcblx0XHR8IFwibnVtYmVyXCJcblx0XHR8IFwiZGF0ZVwiXG5cdFx0fCBcImRhdGV0aW1lXCJcblx0XHR8IFwic2VhcmNoU2VsZWN0XCJcblx0XHR8IFwiY29sb3JcIlxuXHRcdHwgXCJ0b2dnbGVcIjtcblx0dmFsdWU/OiBhbnk7XG5cdGRhdGE/OiBhbnlbXSB8IG51bGw7XG5cdGljb24/OiBzdHJpbmc7XG5cdGljb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHRpY29uQ2FsbGJhY2tEaXNhYmxlZD86IGJvb2xlYW47XG5cdGljb25Ub29sdGlwPzogc3RyaW5nO1xuXHRmbj86IChvYmplY3Q6IGFueSkgPT4gc3RyaW5nO1xuXHRmaWx0ZXJzPzogSVNlYXJjaEZpbHRlcltdO1xuXHR2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2VjdGlvbiB7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRjb250cm9sczogSUNvbnRyb2xbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUNvbnRyb2wge1xuXHRba2V5OiBzdHJpbmddOiBhbnk7XG59XG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiYXBwLWNoci1mb3JtXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWxcIixcblx0c3R5bGVVcmxzOiBbXG5cdFx0XCIuL2Noci1mb3JtLmNvbXBvbmVudC5zY3NzXCIsXG5cdFx0XCIuLi8uLi8uLi8uLi8uLi90YWlsd2luZGJ1aWxkLmNzc1wiLFxuXHRcdFwiLi9jaHItZm9ybS5jb21wb25lbnQuc2Nzc1wiLFxuXHRdLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbXG5cdFx0UmVhY3RpdmVGb3Jtc01vZHVsZSxcblx0XHRGb3Jtc01vZHVsZSxcblx0XHRNYXRUb29sdGlwTW9kdWxlLFxuXHRcdE1hdEljb25Nb2R1bGUsXG5cdFx0TWF0U2xpZGVUb2dnbGVNb2R1bGUsXG5cdFx0TWF0RXJyb3IsXG5cdFx0Q2hyU2VhcmNoU2VsZWN0Q29tcG9uZW50LFxuXHRcdE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcblx0XHREYXRlUGlwZSxcblx0XHRDb21tb25Nb2R1bGUsXG5cdFx0VHlwZVZhbGlkYXRvckRpcmVjdGl2ZSxcblx0XHRNYXRUYWJzTW9kdWxlLFxuXHRdLFxuXHRwcm92aWRlcnM6IFtcblx0XHREYXRlUGlwZSxcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBEQVRFX1BJUEVfREVGQVVMVF9PUFRJT05TLFxuXHRcdFx0dXNlVmFsdWU6IHsgZGF0ZUZvcm1hdDogXCJzaG9ydERhdGVcIiB9LFxuXHRcdH0sXG5cdF0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hyRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdEBJbnB1dCgpIHNlY3Rpb25zPzogSUZvcm1TZWN0aW9uW107XG5cdEBJbnB1dCgpIGNvbnRyb2xzPzogSUNvbnRyb2xbXTtcblxuXHRASW5wdXQoKSB2YWxpZD86IGJvb2xlYW47XG5cdEBPdXRwdXQoKSB2YWxpZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG5cdEBJbnB1dCgpIG1vZGVsOiBhbnkgPSBudWxsO1xuXHRAT3V0cHV0KCkgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cblx0QElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuXHRAT3V0cHV0KCkgdmFsdWVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXHRASW5wdXQoKSBzdWJtaXQ/OiBGdW5jdGlvbjtcblxuXHRASW5wdXQoKSBjb21wYWN0OiBib29sZWFuID0gZmFsc2U7XG5cblx0QE91dHB1dCgpIGZvcm1DaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRm9ybUNvbnRyb2w+ID1cblx0XHRuZXcgRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4oKTtcblxuXHRASW5wdXQoKSB0YWJEaXNwbGF5OiBib29sZWFuID0gZmFsc2U7XG5cblx0Zm9ybTogRm9ybUdyb3VwID0gdGhpcy5idWlsZGVyLmdyb3VwKHt9KTtcblxuXHRwcml2YXRlIHZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXHRwcml2YXRlIGNvbnRyb2xUeXBlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXHRwcml2YXRlIGZsYXR0ZW5lZENvbnRyb2xzOiBJQ29udHJvbFtdID0gW107XG5cdHByaXZhdGUgX2Vycm9yczogeyBba2V5OiBzdHJpbmddOiBib29sZWFufSA9IHt9XG5cblx0cHVibGljIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBidWlsZGVyOiBGb3JtQnVpbGRlcixcblx0XHRwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcblx0XHRwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcblx0XHRwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWZcblx0KSB7XG5cdFx0aWYgKHRoaXMuY29udHJvbHMgIT0gbnVsbCAmJiB0aGlzLnNlY3Rpb25zICE9IG51bGwpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFwiWW91IGNhbid0IHVzZSBib3RoIGNvbnRyb2xzIGFuZCBzZWN0aW9ucyBpbiB0aGUgc2FtZSBmb3JtXCJcblx0XHRcdCk7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLmZsYXR0ZW5lZENvbnRyb2xzID1cblx0XHRcdHRoaXMuc2VjdGlvbnNcblx0XHRcdFx0Py5tYXAoKHMpID0+IHMuY29udHJvbHMpXG5cdFx0XHRcdC5mbGF0KClcblx0XHRcdFx0LmNvbmNhdCh0aGlzLmNvbnRyb2xzID8/IFtdKSB8fCBbXTtcblx0XHR0aGlzLmluaXRNb2RlbCgpO1xuXHRcdHRoaXMuaW5pdFZhbHVlcygpO1xuXHRcdHRoaXMuaW5pdENvbnRyb2xzKCk7XG5cdFx0dGhpcy5pbml0TGlzdGVuZXJzKCk7XG5cdFx0dGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG5cdH1cblxuXHR2YWxpZGF0ZVNlYXJjaFNlbGVjdFZhbGlkdHkgPSAodmFsaWQ6IGJvb2xlYW4pID0+IHtcblx0XHQvL3RoaXMudmFsaWQgPSB2YWxpZCAmJiB0aGlzLmZvcm0udmFsaWQ7XG5cdFx0Ly90aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XG5cdH07XG5cblx0cHJpdmF0ZSBpbml0TW9kZWwgPSAoKSA9PiB7XG5cdFx0aWYgKHRoaXMubW9kZWwgPT0gbnVsbCkgdGhpcy5tb2RlbCA9IHt9O1xuXG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGlmICghdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdKSB0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV0gPSBjb250cm9sLnZhbHVlO1xuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIGluaXRWYWx1ZXMgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGlmICghdGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSlcblx0XHRcdFx0dGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSA9IHRoaXMudG9JbnB1dFZhbHVlKFxuXHRcdFx0XHRcdGNvbnRyb2wsXG5cdFx0XHRcdFx0dGhpcy5tb2RlbFtjb250cm9sLm5hbWVdXG5cdFx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgaW5pdENvbnRyb2xzID0gKCkgPT4ge1xuXHRcdGNvbnN0IGZvcm1Db250cm9scyA9IHt9IGFzIElGb3JtQ29udHJvbENvbGxlY3Rpb247XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLl9nZXRWYWxpZGF0b3JzKGNvbnRyb2wudmFsaWRhdGlvbnMpO1xuXHRcdFx0Zm9ybUNvbnRyb2xzW2NvbnRyb2wubmFtZV0gPSBuZXcgRm9ybUNvbnRyb2woXG5cdFx0XHRcdHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0sXG5cdFx0XHRcdHZhbGlkYXRvcnNcblx0XHRcdCk7XG5cdFx0XHR0aGlzLmNvbnRyb2xUeXBlc1tjb250cm9sLm5hbWVdID0gY29udHJvbC50eXBlO1xuXHRcdH1cblxuXHRcdHRoaXMuZm9ybSA9IHRoaXMuYnVpbGRlci5ncm91cChmb3JtQ29udHJvbHMpO1xuXHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdH07XG5cblx0cHJpdmF0ZSBpbml0TGlzdGVuZXJzID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZXMpID0+IHtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIHZhbHVlcykge1xuXHRcdFx0XHRpZiAodmFsdWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcblx0XHRcdFx0XHR0aGlzLm1vZGVsW2tleV0gPSB2YWx1ZXNba2V5XTtcblx0XHRcdFx0XHR0aGlzLnZhbHVlc1trZXldID0gdmFsdWVzW2tleV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG5cdFx0XHR0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XG5cdFx0XHR0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG5cdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0XHR9KTtcblx0fTtcblxuXHRjb250cm9sID0gKG5hbWU6IHN0cmluZykgPT4ge1xuXHRcdGlmIChuYW1lKSByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW25hbWVdO1xuXHRcdHJldHVybiBudWxsO1xuXHR9O1xuXG5cdGZvY3VzID0gKG5hbWU6IHN0cmluZykgPT4ge1xuXHRcdC8vY29uc3QgY29udHJvbCA9IHRoaXMuY29udHJvbChuYW1lKTtcblx0XHRjb25zdCBlbCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG5cdFx0XHRgaW5wdXRbbmFtZT1cIiR7bmFtZX1cIl1gXG5cdFx0KSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXHRcdHRoaXMuY29udHJvbChuYW1lKT8ubWFya0FzVG91Y2hlZCgpO1xuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0ZWwuZm9jdXMoKTtcblx0XHR9LCAxMCk7XG5cdH07XG5cblx0dmFsdWUgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHRoaXMuZ2V0VmFsdWUoaW5wdXQpO1xuXG5cdGdldFZhbHVlID0gKGlucHV0Pzogc3RyaW5nKSA9PiB7XG5cdFx0aWYgKGlucHV0KSByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW2lucHV0XT8udmFsdWU7XG5cdFx0cmV0dXJuIHRoaXMuZm9ybS52YWx1ZTtcblx0fTtcblxuXHRpc1ZhbGlkID0gKGlucHV0Pzogc3RyaW5nKSA9PiB7XG5cdFx0aWYgKGlucHV0KSByZXR1cm4gdGhpcy5mb3JtLmdldChpbnB1dCk/LnZhbGlkO1xuXHRcdHJldHVybiB0aGlzLnZhbGlkO1xuXHR9O1xuXG5cdGlzQ29udHJvbFJlcXVpcmVkID0gKGNvbnRyb2w6IElDb250cm9sKSA9PiB7XG5cdFx0cmV0dXJuIGNvbnRyb2wudmFsaWRhdGlvbnM/LmZpbmQoXG5cdFx0XHQodikgPT4gdi5ydWxlPy50b0xvd2VyQ2FzZSgpID09IFwicmVxdWlyZWRcIlxuXHRcdCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgYSBjb250cm9sIFdJVEhPVVQgdHJpZ2dlcmluZyB0aGUgbW9kZWxDaGFuZ2UgZXZlbnRcblx0ICogQHBhcmFtIGtleSBpbnB1dCBrZXkgKGNvbnRyb2wgbmFtZSlcblx0ICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIHNldFxuXHQgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG5cdCAqL1xuXHRzZXRWYWx1ZSA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRjb25zdCB2YWwgPSB0aGlzLnR5cGVUb0lucHV0VmFsdWUodGhpcy5jb250cm9sVHlwZXNba2V5XSwgdmFsdWUpO1xuXHRcdHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0VmFsdWUodmFsLCB7XG5cdFx0XHRlbWl0RXZlbnQ6IGZhbHNlLFxuXHRcdFx0ZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiBmYWxzZSxcblx0XHR9KTtcblx0XHR0aGlzLm1vZGVsW2tleV0gPSB2YWw7XG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIGZvcm0ncyBtb2RlbCBXSVRIT1VUIHRyaWdnZXJpbmcgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50XG5cdCAqIEBwYXJhbSBtb2RlbCB0aGUgbW9kZWwgdG8gc2V0XG5cdCAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcblx0ICovXG5cdHNldCA9IChtb2RlbDogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZGVsKSkge1xuXHRcdFx0dGhpcy5zZXRWYWx1ZShrZXksIG1vZGVsW2tleV0sIGRhdGVGb3JtYXQpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgdmFsdWUgb2YgYSBjb250cm9sLiBUaGlzIFdJTEwgdHJpZ2dlciB0aGUgbW9kZWxDaGFuZ2UgZXZlbnRcblx0ICogQHBhcmFtIGtleSBpbnB1dCBrZXkgKGNvbnRyb2wgbmFtZSlcblx0ICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIHNldFxuXHQgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG5cdCAqL1xuXHRwYXRjaFZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuXHRcdGNvbnN0IHZhbCA9IHRoaXMudHlwZVRvSW5wdXRWYWx1ZSh0aGlzLmNvbnRyb2xUeXBlc1trZXldLCB2YWx1ZSk7XG5cdFx0dGhpcy5zZXRWYWx1ZSQoa2V5LCB2YWwpO1xuXHRcdHRoaXMuZm9ybS5nZXQoa2V5KT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXHRcdHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcblx0XHR0aGlzLmRldGVjdENoYW5nZXMoKTtcblx0fTtcblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0ncyBtb2RlbC4gVGhpcyBXSUxMIHRyaWdnZXIgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50IG9uY2UgZm9yIGVhY2ggaW5wdXRcblx0ICogQHBhcmFtIG1vZGVsIG1vZGVsIHRvIHNldFxuXHQgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG5cdCAqL1xuXHRwYXRjaCA9IChtb2RlbDogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZGVsKSkge1xuXHRcdFx0dGhpcy5wYXRjaFZhbHVlKGtleSwgbW9kZWxba2V5XSwgZGF0ZUZvcm1hdCk7XG5cdFx0fVxuXHR9O1xuXG5cdGNoZWNrVmFsaWRpdHkgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXHRcdH1cblx0XHR0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuXHRcdHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9O1xuXG5cdHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSAodG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG5cdFx0dGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG5cdFx0aWYgKHRvdWNoZWQpIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cdFx0dGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG5cdH07XG5cblx0cmVzZXQgPSAoKSA9PiB7XG5cdFx0dGhpcy5mb3JtLnJlc2V0KClcblx0fVxuXG5cdHByb3RlY3RlZCBnZXQgPSAoY29udHJvbDogSUNvbnRyb2wpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtLmdldChbY29udHJvbC5uYW1lXSlcblx0fVxuXG5cdHByb3RlY3RlZCBoYXNFcnJvciA9IChjb250cm9sOiBJQ29udHJvbCwgdmFsaWRhdGlvbjogSUNvbnRyb2xWYWxpZGF0aW9uKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMuZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUsIGNvbnRyb2wubmFtZSlcblx0fVxuXG5cdHByb3RlY3RlZCBzaG91bGRTaG93RXJyb3IgPSAoY29udHJvbDogSUNvbnRyb2wsIHZhbGlkYXRpb246IElDb250cm9sVmFsaWRhdGlvbikgPT4ge1xuXHRcdGNvbnN0IGN0cmwgPSB0aGlzLmZvcm0uZ2V0KGNvbnRyb2wubmFtZSk7XG5cdFx0aWYgKGN0cmwgJiYgY3RybC5lcnJvcnMpIHtcblx0XHQgIGNvbnN0IGZpcnN0ID0gT2JqZWN0LmtleXMoY3RybC5lcnJvcnMpWzBdO1xuXHRcdCAgcmV0dXJuIGZpcnN0ID09PSB2YWxpZGF0aW9uLnJ1bGU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHByaXZhdGUgc2V0VmFsdWUkID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0Y29uc3QgdmFsID0gdGhpcy50eXBlVG9JbnB1dFZhbHVlKHRoaXMuY29udHJvbFR5cGVzW2tleV0sIHZhbHVlKTtcblx0XHR0aGlzLmZvcm0uZ2V0KGtleSk/LnBhdGNoVmFsdWUodmFsKTtcblx0XHR0aGlzLnZhbHVlc1trZXldID0gdmFsO1xuXHR9O1xuXG5cdHByaXZhdGUgdG9JbnB1dFZhbHVlID0gKGNvbnRyb2w6IElDb250cm9sLCB2YWx1ZTogYW55IHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRyZXR1cm4gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGNvbnRyb2wudHlwZSwgdmFsdWUsIGNvbnRyb2wudmFsdWUpO1xuXHR9O1xuXG5cdHByaXZhdGUgdHlwZVRvSW5wdXRWYWx1ZSA9IChcblx0XHR0eXBlOiBzdHJpbmcsXG5cdFx0dmFsdWU6IGFueSB8IG51bGwgPSBudWxsLFxuXHRcdGRlZmF1bHRWYWx1ZTogYW55IHwgbnVsbCA9IG51bGxcblx0KSA9PiB7XG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlIFwiZGF0ZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHQ/IHRoaXMudHJhbnNmb3JtRGF0ZShcblx0XHRcdFx0XHRcdFx0dHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZSxcblx0XHRcdFx0XHRcdFx0XCJ5eXl5LU1NLWRkXCJcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHRoaXMudHJhbnNmb3JtRGF0ZShkZWZhdWx0VmFsdWUsIFwieXl5eS1NTS1kZFwiKTtcblx0XHRcdGNhc2UgXCJkYXRldGltZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHQ/IHRoaXMudHJhbnNmb3JtRGF0ZShcblx0XHRcdFx0XHRcdFx0dHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZSxcblx0XHRcdFx0XHRcdFx0XCJ5eXl5LU1NLWRkVEhIOm1tXCJcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHRoaXMudHJhbnNmb3JtRGF0ZShkZWZhdWx0VmFsdWUsIFwieXl5eS1NTS1kZFRISDptbVwiKTtcblx0XHRcdGNhc2UgXCJudW1iZXJcIjpcblx0XHRcdFx0cmV0dXJuIE51bWJlcih2YWx1ZSk7XG5cdFx0XHRjYXNlIFwic2VhcmNoU2VsZWN0XCI6XG5cdFx0XHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlITtcblx0XHRcdFx0fSBlbHNlIHJldHVybiBudWxsO1xuXHRcdFx0Y2FzZSBcInRvZ2dsZVwiOlxuXHRcdFx0XHRpZih2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSB0cnVlKVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRlbHNlIHJldHVybiBmYWxzZTtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSB8fCBkZWZhdWx0VmFsdWU7XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgdHJhbnNmb3JtRGF0ZSA9ICh2YWx1ZTogYW55LCBmb3JtYXQ6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcblx0fTtcblxuXHRwdWJsaWMgcmVzaXplID0gKHRleHRBcmVhOiBIVE1MVGV4dEFyZWFFbGVtZW50KSA9PiB7XG5cdFx0Y29uc3QgaW5pdGlhbEhlaWdodCA9IHRleHRBcmVhLnN0eWxlLmhlaWdodDtcblx0XHR0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSBpbml0aWFsSGVpZ2h0O1xuXHRcdHRleHRBcmVhLnN0eWxlLmhlaWdodCA9IFwiXCIgKyB0ZXh0QXJlYS5zY3JvbGxIZWlnaHQgKyBcInB4XCI7XG5cdH07XG5cblx0cHVibGljIGRvU3VibWl0ID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cdFx0aWYgKHRoaXMudmFsaWQgJiYgdGhpcy5mb3JtLnZhbGlkKSB0aGlzLnN1Ym1pdD8uKHRoaXMuZm9ybS52YWx1ZSk7XG5cdH07XG5cblx0cHJpdmF0ZSBsb2cgPSAoZWw6IGFueSkgPT4ge1xuXHRcdC8vY29uc29sZS5sb2coZWwpO1xuXHR9O1xuXG5cdHByaXZhdGUgZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHtcblx0XHR0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcblx0XHR0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogdHJ1ZSB9KTtcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0fTtcblxuXHRwcml2YXRlIF9nZXRWYWxpZGF0b3JzID0gKHZhbGlkYXRpb25zPzogSUNvbnRyb2xWYWxpZGF0aW9uW10pID0+IHtcblx0XHRjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG5cdFx0aWYgKCF2YWxpZGF0aW9ucykgcmV0dXJuIHZhbGlkYXRvcnM7XG5cdFx0Ly9Td2l0Y2ggY2FzZSBicmVha3MgdGhlIG1vYmlsZSBhcHAgc28gd2UnbGwgZG8gaWYgc3RhdGVtZW50c1xuXHRcdGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiB2YWxpZGF0aW9ucykge1xuXHRcdFx0aWYgKHZhbGlkYXRpb24udmFsaWRhdG9yICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKHZhbGlkYXRpb24udmFsaWRhdG9yKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBydWxlID0gdmFsaWRhdGlvbi5ydWxlPy50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtaW5cIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBwZXRpdGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4odmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtYXhcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJyZXF1aXJlZFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2UgY2hhbXBzIGVzdCByZXF1aXMgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2gocmVxdWlyZWQoKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcImVtYWlsXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSBhZHJlc3NlIGVtYWlsIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1pbmxlbmd0aFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1heGxlbmd0aFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIGdyYW5kZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcInR5cGVcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBuJ2VzdCBwYXMgdmFsaWRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKHR5cGUodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJkZWNpbWFsXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gYExlIG5vbWJyZSBkZSBkw6ljaW1hbCBuJ2VzdCBwYXMgdmFsaWRlIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goZGVjaW1hbCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1heGRhdGVcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBgQ2V0dGUgZGF0ZSBlc3QgdHJvcCBncmFuZGUgISAobWF4OiAke3ZhbGlkYXRpb24udmFsdWV9KSAhYDtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKG1heERhdGUodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdmFsaWRhdG9ycztcblx0fTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIG1pbi1oLTUvNiBtdC0yXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYkRpc3BsYXkgfHwgIXNlY3Rpb25zXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2luZ2xlVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sczogY29udHJvbHN9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJEaXNwbGF5ICYmIHNlY3Rpb25zXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VjdGlvblRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c2VjdGlvbnM6IHNlY3Rpb25zfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJEaXNwbGF5ICYmIHNlY3Rpb25zXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFic1RlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c2VjdHM6IHNlY3Rpb25zfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Zvcm0+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0YWJzVGVtcGxhdGUgbGV0LXNlY3Rpb25zPSdzZWN0cyc+XG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8bWF0LXRhYi1ncm91cD5cbiAgICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnM7IHRyYWNrIHNlY3Rpb247IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgPG1hdC10YWIgW2xhYmVsXT1cInNlY3Rpb24udGl0bGUgfHwgJ8OJdGFwZSAnICsgKGluZGV4ICsgMSlcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemVkXCIgY2xhc3M9XCJtdC00XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICAgICAgQGZvciAoY3RybCBvZiBzZWN0aW9uLmNvbnRyb2xzOyB0cmFjayBpbmRleDsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXRcbiAgICAgICAgICBsYXN0ID1cbiAgICAgICAgICAkbGFzdClcbiAgICAgICAgICB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjdHJsLCBpbmRleDogaW5kZXgsIGxhc3Q6ICRsYXN0fVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICB9XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuICA8L2ZpZWxkc2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW5nbGVUZW1wbGF0ZSBsZXQtY29udHJvbHM9XCJjb250cm9sc1wiPlxuICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemVkXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNvbXBhY3QgPyAnZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTQnOidncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtMidcIj5cbiAgICAgIEBmb3IgKGNvbnRyb2wgb2YgY29udHJvbHM7IHRyYWNrIGNvbnRyb2w7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2w6IGNvbnRyb2wsIGluZGV4OiBpbmRleCwgbGFzdDogbGFzdH1cIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gIDwvZmllbGRzZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlY3Rpb25UZW1wbGF0ZSBsZXQtc2VjdGlvbnM9J3NlY3Rpb25zJz5cbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnM7IHRyYWNrIHNlY3Rpb247IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgIDxkaXY+XG4gICAgICBAaWYgKHNlY3Rpb24udGl0bGUpIHtcbiAgICAgIDxoMiBjbGFzcz1cIm1iLTIgZm9udC1ib2xkIHRleHQteGwgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgICAge3sgc2VjdGlvbi50aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIH1cbiAgICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbXBhY3QgPyAnZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTQnOidncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtMidcIj5cbiAgICAgICAgQGZvciAoY29udHJvbCBvZiBzZWN0aW9uLmNvbnRyb2xzOyB0cmFjayBpbmRleDsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXRcbiAgICAgICAgbGFzdCA9XG4gICAgICAgICRsYXN0KVxuICAgICAgICB7XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2w6IGNvbnRyb2wsIGluZGV4OiBpbmRleCwgbGFzdDogJGxhc3R9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoaW5kZXggIT0gKHNlY3Rpb25zfHxbXSkubGVuZ3RoIC0gMSAmJiAhY29tcGFjdCkge1xuICAgICAgPGRpdiBjbGFzcz1cInB5LTRcIj5cbiAgICAgICAgPGhyIGNsYXNzPVwiXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9maWVsZHNldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udHJvbFRlbXBsYXRlIGxldC1jb250cm9sPSdjb250cm9sJyBsZXQtbGFzdD0nbGFzdCcgbGV0LWluZGV4PSdpbmRleCc+XG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBoLW1pbiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgW25nQ2xhc3NdPVwie1xuICAgICdzbTpjb2wtc3Bhbi0yJzogKGNvbnRyb2wud2lkdGggPT0gJ3JvdycgJiYgIWNvbXBhY3QpIHx8IGNvbnRyb2wudHlwZT09J3RleHRBcmVhJyAmJiBjb21wYWN0ICYmIGNvbnRyb2wud2lkdGggIT0gJ3JvdycsXG4gICAgJ3NtOmNvbC1zcGFuLTQnOiBjb250cm9sLndpZHRoID09J3JvdycgJiYgY29tcGFjdCxcbiAgICB9XCI+XG4gICAgQGlmIChjb250cm9sLnR5cGU9PSdzZWFyY2hTZWxlY3QnKSB7XG4gICAgPGRpdiBhcHAtY2hyLXNlYXJjaC1zZWxlY3QgY2xhc3M9XCJyZWxhdGl2ZSBpbnB1dCB6LTAgdy1mdWxsXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIlxuICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgIFtkYXRhXT1cImNvbnRyb2wuZGF0YSB8fCBbXVwiIFtkaXNwbGF5XT1cImNvbnRyb2wuZm4hXCIgW25hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgIFtmaWx0ZXJzXT1cImNvbnRyb2wuZmlsdGVyc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGFic29sdXRlIHRleHQtc20gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIiBbZm9yXT1cImNvbnRyb2wubmFtZVwiPnt7XG4gICAgICAgIGNvbnRyb2wubGFiZWxcbiAgICAgICAgfX1cbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGNvbnRyb2wudmFsaWRhdGlvbnM7IHRyYWNrIHZhbGlkYXRpb24pIHtcbiAgICAgICAgICBAaWYgKFxuICAgICAgICAgIGdldChjb250cm9sKT8udG91Y2hlZCAmJlxuICAgICAgICAgIGhhc0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pICYmIHNob3VsZFNob3dFcnJvcihjb250cm9sLCB2YWxpZGF0aW9uKSkgeyBcbiAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB6LTAgdy1mdWxsIGdyb3VwL2lucHV0cyBjb250ZW50XCI+XG4gICAgICA8IS0tIEhlcmUgd2Ugd2lsbCAqbmdJZiBlYWNoIHR5cGUgb2YgaW5wdXQgY2F1c2UgaXQncyB0aGUgY2xlYW5lc3Qgd2F5IEkgY2FuIGltYWdpbmUtLT5cbiAgICAgIDwhLS1URVhULS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndGV4dCcpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cInRleHRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tUEFTU1dPUkQtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdwYXNzd29yZCcpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLVRFWFQgQVJFQS0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RleHRBcmVhJykge1xuICAgICAgPHRleHRhcmVhICN0ZXh0QXJlYSBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgICAoaW5wdXQpPVwicmVzaXplKHRleHRBcmVhKVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJuby1zY3JvbGxiYXIgaW5wdXQgIXJlc2l6ZS1ub25lIGhlaWdodC1ub3JtYWxpemVkIGJsb2NrIHB5LTIgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiPjwvdGV4dGFyZWE+XG4gICAgICB9XG4gICAgICA8IS0tTlVNQkVSLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnbnVtYmVyJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLURBVEUtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRlJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwiZGF0ZVwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tQ09MT1ItLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdjb2xvcicpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cImNvbG9yXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiIHN0eWxlPVwiaGVpZ2h0OiA0MnB4O1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMS41IG0tMCBweC0wIHctZnVsbCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0b2dnbGUnKXtcbiAgICAgIDxpbnB1dCAjdG9nZ2xlIHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiaGlkZGVuIGNoZWNrYm94XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJlbGF0aXZlIHRvZ2dsZS13cmFwcGVyIGJsb2NrIGlucHV0IGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCI+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZT8uY2xpY2soKVwiIGNsYXNzPVwicmVsYXRpdmUgYmxvY2sgaW5wdXQgdG9nZ2xlXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSAhPSAnc2VhcmNoU2VsZWN0Jykge1xuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiIFtmb3JdPVwiY29udHJvbC5uYW1lXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYoY29udHJvbC5sYWJlbCAmJiBjb250cm9sLmxhYmVsICE9ICcnICYmIGNvbnRyb2wubGFiZWwgIT0gJyAnKXtcbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgZ2V0KGNvbnRyb2wpPy50b3VjaGVkICYmXG4gICAgICAgICAgaGFzRXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikgJiYgc2hvdWxkU2hvd0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pKSB7IFxuICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cInRleHQtcmVkLTUwMCBkYXJrOnRleHQtcmVkLTgwMFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9sYWJlbD5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC5pY29uICYmICFkaXNhYmxlZCkge1xuICAgICAgPHNwYW5cbiAgICAgICAgW25nQ2xhc3NdPVwiY29udHJvbC5pY29uQ2FsbGJhY2tEaXNhYmxlZCA/ICd0ZXh0LWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTUwMCc6J3RleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlJ1wiXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgcC0yLjUgYm90dG9tLTAgcmlnaHQtMFwiIFttYXRUb29sdGlwXT1cImNvbnRyb2wuaWNvblRvb2x0aXAgfHwgJydcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gICAgICAgIChjbGljayk9XCIhY29udHJvbC5pY29uQ2FsbGJhY2tEaXNhYmxlZCAmJiBjb250cm9sLmljb25DYWxsYmFjaz8uKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udmFsdWUpXCI+PG1hdC1pY29uXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGlucHV0IGp1c3RpZnktY2VudGVyIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXIgdGV4dC1sZ1wiPnt7Y29udHJvbC5pY29ufX08L21hdC1pY29uPjwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGNvbnRyb2wuc3Bhbikge1xuICAgIDxzcGFuXG4gICAgICBbbmdDbGFzc109XCIhZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMgfHwgIWZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCA/ICd0ZXh0LWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTMwMCcgOiAnIXRleHQtcmVkLTUwMCBkYXJrOiF0ZXh0LXJlZC04MDAnXCJcbiAgICAgIGNsYXNzPVwiaC0wIHRleHQteHNcIj57eyBjb250cm9sLnNwYW5cbiAgICAgIH19PC9zcGFuPlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsR0FJdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVOLG1CQUFtQixFQUNuQixXQUFXLEdBR1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBR04sVUFBVSxFQUNWLFdBQVcsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUNOLFFBQVEsRUFDUixZQUFZLEVBQ1oseUJBQXlCLEdBQ3pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFDTixJQUFJLEVBQ0osc0JBQXNCLEdBQ3RCLE1BQU0seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUFFLE9B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LDhCQUVyQixZQUFZLHVZQUVaLGFBQWE7OzJGQVdGLGdCQUFnQjtrQkFoQzVCLFNBQVM7K0JBQ0MsY0FBYyxjQU9aLElBQUksV0FDUDt3QkFDUixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsUUFBUTt3QkFDUix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIsUUFBUTt3QkFDUixZQUFZO3dCQUNaLHNCQUFzQjt3QkFDdEIsYUFBYTtxQkFDYixhQUNVO3dCQUNWLFFBQVE7d0JBQ1I7NEJBQ0MsT0FBTyxFQUFFLHlCQUF5Qjs0QkFDbEMsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTt5QkFDckM7cUJBQ0QsbUJBQ2dCLHVCQUF1QixDQUFDLE9BQU87Z0tBR3ZDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUdFLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENoYW5nZURldGVjdG9yUmVmLFxuXHRPbkluaXQsXG5cdEVsZW1lbnRSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuXHRWYWxpZGF0b3JGbixcblx0UmVhY3RpdmVGb3Jtc01vZHVsZSxcblx0Rm9ybXNNb2R1bGUsXG5cdFZhbGlkYXRpb25FcnJvcnMsXG5cdEFic3RyYWN0Q29udHJvbCxcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuXHRGb3JtQnVpbGRlcixcblx0Rm9ybUdyb3VwLFxuXHRWYWxpZGF0b3JzLFxuXHRGb3JtQ29udHJvbCxcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBNYXRFcnJvciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHsgQ2hyU2VhcmNoU2VsZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4uL2Noci1zZWFyY2gtc2VsZWN0L2Noci1zZWFyY2gtc2VsZWN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlXCI7XG5pbXBvcnQge1xuXHREYXRlUGlwZSxcblx0Q29tbW9uTW9kdWxlLFxuXHREQVRFX1BJUEVfREVGQVVMVF9PUFRJT05TLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlXCI7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYnNcIjtcbmltcG9ydCB7XG5cdHR5cGUsXG5cdFR5cGVWYWxpZGF0b3JEaXJlY3RpdmUsXG59IGZyb20gXCIuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvdHlwZS12YWxpZGF0b3JcIjtcbmltcG9ydCB7IGRlY2ltYWwgfSBmcm9tIFwiLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL2RlY2ltYWwtdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyBtYXhEYXRlIH0gZnJvbSBcIi4uL21vZGVscy9jaHItdmFsaWRhdG9ycy9tYXgtZGF0ZS12YWxpZGF0b3JcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgcmVxdWlyZWQgfSBmcm9tIFwiLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL3JlcXVpcmVkLXZhbGlkYXRvclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtQ29udHJvbENvbGxlY3Rpb24ge1xuXHRba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VhcmNoRmlsdGVyIHtcblx0ZGlzcGxheTogc3RyaW5nO1xuXHRjYWxsYmFjaz86IEZ1bmN0aW9uO1xuXHR0b29sdGlwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sVmFsaWRhdGlvbiB7XG5cdHJ1bGU6IHN0cmluZztcblx0dmFsaWRhdG9yPzogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gVmFsaWRhdGlvbkVycm9ycyB8IG51bGw7XG5cdGtleT86IHN0cmluZztcblx0dmFsdWU/OiBhbnk7XG5cdGRpc3BsYXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2wge1xuXHRsYWJlbD86IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHRzcGFuPzogc3RyaW5nO1xuXHR3aWR0aD86IFwiY29sXCIgfCBcInJvd1wiO1xuXHRjb2w/OiBudW1iZXI7XG5cdHJvdz86IG51bWJlcjtcblx0dHlwZTpcblx0XHR8IFwidGV4dFwiXG5cdFx0fCBcInBhc3N3b3JkXCJcblx0XHR8IFwidGV4dEFyZWFcIlxuXHRcdHwgXCJudW1iZXJcIlxuXHRcdHwgXCJkYXRlXCJcblx0XHR8IFwiZGF0ZXRpbWVcIlxuXHRcdHwgXCJzZWFyY2hTZWxlY3RcIlxuXHRcdHwgXCJjb2xvclwiXG5cdFx0fCBcInRvZ2dsZVwiO1xuXHR2YWx1ZT86IGFueTtcblx0ZGF0YT86IGFueVtdIHwgbnVsbDtcblx0aWNvbj86IHN0cmluZztcblx0aWNvbkNhbGxiYWNrPzogRnVuY3Rpb247XG5cdGljb25DYWxsYmFja0Rpc2FibGVkPzogYm9vbGVhbjtcblx0aWNvblRvb2x0aXA/OiBzdHJpbmc7XG5cdGZuPzogKG9iamVjdDogYW55KSA9PiBzdHJpbmc7XG5cdGZpbHRlcnM/OiBJU2VhcmNoRmlsdGVyW107XG5cdHZhbGlkYXRpb25zPzogSUNvbnRyb2xWYWxpZGF0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TZWN0aW9uIHtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGNvbnRyb2xzOiBJQ29udHJvbFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtQ29udHJvbCB7XG5cdFtrZXk6IHN0cmluZ106IGFueTtcbn1cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJhcHAtY2hyLWZvcm1cIixcblx0dGVtcGxhdGVVcmw6IFwiLi9jaHItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZVVybHM6IFtcblx0XHRcIi4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3NcIixcblx0XHRcIi4uLy4uLy4uLy4uLy4uL3RhaWx3aW5kYnVpbGQuY3NzXCIsXG5cdFx0XCIuL2Noci1mb3JtLmNvbXBvbmVudC5zY3NzXCIsXG5cdF0sXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtcblx0XHRSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXHRcdEZvcm1zTW9kdWxlLFxuXHRcdE1hdFRvb2x0aXBNb2R1bGUsXG5cdFx0TWF0SWNvbk1vZHVsZSxcblx0XHRNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcblx0XHRNYXRFcnJvcixcblx0XHRDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQsXG5cdFx0TWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuXHRcdERhdGVQaXBlLFxuXHRcdENvbW1vbk1vZHVsZSxcblx0XHRUeXBlVmFsaWRhdG9yRGlyZWN0aXZlLFxuXHRcdE1hdFRhYnNNb2R1bGUsXG5cdF0sXG5cdHByb3ZpZGVyczogW1xuXHRcdERhdGVQaXBlLFxuXHRcdHtcblx0XHRcdHByb3ZpZGU6IERBVEVfUElQRV9ERUZBVUxUX09QVElPTlMsXG5cdFx0XHR1c2VWYWx1ZTogeyBkYXRlRm9ybWF0OiBcInNob3J0RGF0ZVwiIH0sXG5cdFx0fSxcblx0XSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxufSlcbmV4cG9ydCBjbGFzcyBDaHJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0QElucHV0KCkgc2VjdGlvbnM/OiBJRm9ybVNlY3Rpb25bXTtcblx0QElucHV0KCkgY29udHJvbHM/OiBJQ29udHJvbFtdO1xuXG5cdEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcblx0QE91dHB1dCgpIHZhbGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cblx0QElucHV0KCkgbW9kZWw6IGFueSA9IG51bGw7XG5cdEBPdXRwdXQoKSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuXHRASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW47XG5cdEBPdXRwdXQoKSB2YWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdEBJbnB1dCgpIHN1Ym1pdD86IEZ1bmN0aW9uO1xuXG5cdEBJbnB1dCgpIGNvbXBhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRAT3V0cHV0KCkgZm9ybUNoYW5nZTogRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4gPVxuXHRcdG5ldyBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPigpO1xuXG5cdEBJbnB1dCgpIHRhYkRpc3BsYXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRmb3JtOiBGb3JtR3JvdXAgPSB0aGlzLmJ1aWxkZXIuZ3JvdXAoe30pO1xuXG5cdHByaXZhdGUgdmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cdHByaXZhdGUgY29udHJvbFR5cGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cdHByaXZhdGUgZmxhdHRlbmVkQ29udHJvbHM6IElDb250cm9sW10gPSBbXTtcblx0cHJpdmF0ZSBfZXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW59ID0ge31cblxuXHRwdWJsaWMgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuXHRcdHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuXHRcdHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuXHRcdHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZlxuXHQpIHtcblx0XHRpZiAodGhpcy5jb250cm9scyAhPSBudWxsICYmIHRoaXMuc2VjdGlvbnMgIT0gbnVsbClcblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XCJZb3UgY2FuJ3QgdXNlIGJvdGggY29udHJvbHMgYW5kIHNlY3Rpb25zIGluIHRoZSBzYW1lIGZvcm1cIlxuXHRcdFx0KTtcblx0fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuZmxhdHRlbmVkQ29udHJvbHMgPVxuXHRcdFx0dGhpcy5zZWN0aW9uc1xuXHRcdFx0XHQ/Lm1hcCgocykgPT4gcy5jb250cm9scylcblx0XHRcdFx0LmZsYXQoKVxuXHRcdFx0XHQuY29uY2F0KHRoaXMuY29udHJvbHMgPz8gW10pIHx8IFtdO1xuXHRcdHRoaXMuaW5pdE1vZGVsKCk7XG5cdFx0dGhpcy5pbml0VmFsdWVzKCk7XG5cdFx0dGhpcy5pbml0Q29udHJvbHMoKTtcblx0XHR0aGlzLmluaXRMaXN0ZW5lcnMoKTtcblx0XHR0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcblx0fVxuXG5cdHZhbGlkYXRlU2VhcmNoU2VsZWN0VmFsaWR0eSA9ICh2YWxpZDogYm9vbGVhbikgPT4ge1xuXHRcdC8vdGhpcy52YWxpZCA9IHZhbGlkICYmIHRoaXMuZm9ybS52YWxpZDtcblx0XHQvL3RoaXMudmFsaWRDaGFuZ2UuZW1pdCh0aGlzLnZhbGlkKTtcblx0fTtcblxuXHRwcml2YXRlIGluaXRNb2RlbCA9ICgpID0+IHtcblx0XHRpZiAodGhpcy5tb2RlbCA9PSBudWxsKSB0aGlzLm1vZGVsID0ge307XG5cblx0XHRmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuXHRcdFx0aWYgKCF0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV0pIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9IGNvbnRyb2wudmFsdWU7XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgaW5pdFZhbHVlcyA9ICgpID0+IHtcblx0XHRmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuXHRcdFx0aWYgKCF0aGlzLnZhbHVlc1tjb250cm9sLm5hbWVdKVxuXHRcdFx0XHR0aGlzLnZhbHVlc1tjb250cm9sLm5hbWVdID0gdGhpcy50b0lucHV0VmFsdWUoXG5cdFx0XHRcdFx0Y29udHJvbCxcblx0XHRcdFx0XHR0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV1cblx0XHRcdFx0KTtcblx0XHR9XG5cdH07XG5cblx0cHJpdmF0ZSBpbml0Q29udHJvbHMgPSAoKSA9PiB7XG5cdFx0Y29uc3QgZm9ybUNvbnRyb2xzID0ge30gYXMgSUZvcm1Db250cm9sQ29sbGVjdGlvbjtcblx0XHRmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuXHRcdFx0Y29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuX2dldFZhbGlkYXRvcnMoY29udHJvbC52YWxpZGF0aW9ucyk7XG5cdFx0XHRmb3JtQ29udHJvbHNbY29udHJvbC5uYW1lXSA9IG5ldyBGb3JtQ29udHJvbChcblx0XHRcdFx0dGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSxcblx0XHRcdFx0dmFsaWRhdG9yc1xuXHRcdFx0KTtcblx0XHRcdHRoaXMuY29udHJvbFR5cGVzW2NvbnRyb2wubmFtZV0gPSBjb250cm9sLnR5cGU7XG5cdFx0fVxuXG5cdFx0dGhpcy5mb3JtID0gdGhpcy5idWlsZGVyLmdyb3VwKGZvcm1Db250cm9scyk7XG5cdFx0dGhpcy52YWxpZCA9IHRoaXMuZm9ybS52YWxpZDtcblx0fTtcblxuXHRwcml2YXRlIGluaXRMaXN0ZW5lcnMgPSAoKSA9PiB7XG5cdFx0dGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgaW4gdmFsdWVzKSB7XG5cdFx0XHRcdGlmICh2YWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuXHRcdFx0XHRcdHRoaXMubW9kZWxba2V5XSA9IHZhbHVlc1trZXldO1xuXHRcdFx0XHRcdHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZXNba2V5XTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy52YWxpZCA9IHRoaXMuZm9ybS52YWxpZDtcblx0XHRcdHRoaXMudmFsaWRDaGFuZ2UuZW1pdCh0aGlzLnZhbGlkKTtcblx0XHRcdHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcblx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdH0pO1xuXHR9O1xuXG5cdGNvbnRyb2wgPSAobmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0aWYgKG5hbWUpIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbbmFtZV07XG5cdFx0cmV0dXJuIG51bGw7XG5cdH07XG5cblx0Zm9jdXMgPSAobmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0Ly9jb25zdCBjb250cm9sID0gdGhpcy5jb250cm9sKG5hbWUpO1xuXHRcdGNvbnN0IGVsID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcihcblx0XHRcdGBpbnB1dFtuYW1lPVwiJHtuYW1lfVwiXWBcblx0XHQpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cdFx0dGhpcy5jb250cm9sKG5hbWUpPy5tYXJrQXNUb3VjaGVkKCk7XG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRlbC5mb2N1cygpO1xuXHRcdH0sIDEwKTtcblx0fTtcblxuXHR2YWx1ZSA9IChpbnB1dD86IHN0cmluZykgPT4gdGhpcy5nZXRWYWx1ZShpbnB1dCk7XG5cblx0Z2V0VmFsdWUgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoaW5wdXQpIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHNbaW5wdXRdPy52YWx1ZTtcblx0XHRyZXR1cm4gdGhpcy5mb3JtLnZhbHVlO1xuXHR9O1xuXG5cdGlzVmFsaWQgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoaW5wdXQpIHJldHVybiB0aGlzLmZvcm0uZ2V0KGlucHV0KT8udmFsaWQ7XG5cdFx0cmV0dXJuIHRoaXMudmFsaWQ7XG5cdH07XG5cblx0aXNDb250cm9sUmVxdWlyZWQgPSAoY29udHJvbDogSUNvbnRyb2wpID0+IHtcblx0XHRyZXR1cm4gY29udHJvbC52YWxpZGF0aW9ucz8uZmluZChcblx0XHRcdCh2KSA9PiB2LnJ1bGU/LnRvTG93ZXJDYXNlKCkgPT0gXCJyZXF1aXJlZFwiXG5cdFx0KTtcblx0fTtcblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wgV0lUSE9VVCB0cmlnZ2VyaW5nIHRoZSBtb2RlbENoYW5nZSBldmVudFxuXHQgKiBAcGFyYW0ga2V5IGlucHV0IGtleSAoY29udHJvbCBuYW1lKVxuXHQgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gc2V0XG5cdCAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcblx0ICovXG5cdHNldFZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuXHRcdGNvbnN0IHZhbCA9IHRoaXMudHlwZVRvSW5wdXRWYWx1ZSh0aGlzLmNvbnRyb2xUeXBlc1trZXldLCB2YWx1ZSk7XG5cdFx0dGhpcy5mb3JtLmdldChrZXkpPy5zZXRWYWx1ZSh2YWwsIHtcblx0XHRcdGVtaXRFdmVudDogZmFsc2UsXG5cdFx0XHRlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6IGZhbHNlLFxuXHRcdH0pO1xuXHRcdHRoaXMubW9kZWxba2V5XSA9IHZhbDtcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0fTtcblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSdzIG1vZGVsIFdJVEhPVVQgdHJpZ2dlcmluZyB0aGUgbW9kZWxDaGFuZ2UgZXZlbnRcblx0ICogQHBhcmFtIG1vZGVsIHRoZSBtb2RlbCB0byBzZXRcblx0ICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuXHQgKi9cblx0c2V0ID0gKG1vZGVsOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBjdHJsIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdHRoaXMuc2V0VmFsdWUoY3RybC5uYW1lLCBtb2RlbFtjdHJsLm5hbWVdLCBkYXRlRm9ybWF0KTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9mIGEgY29udHJvbC4gVGhpcyBXSUxMIHRyaWdnZXIgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50XG5cdCAqIEBwYXJhbSBrZXkgaW5wdXQga2V5IChjb250cm9sIG5hbWUpXG5cdCAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBzZXRcblx0ICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuXHQgKi9cblx0cGF0Y2hWYWx1ZSA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRjb25zdCB2YWwgPSB0aGlzLnR5cGVUb0lucHV0VmFsdWUodGhpcy5jb250cm9sVHlwZXNba2V5XSwgdmFsdWUpO1xuXHRcdHRoaXMuc2V0VmFsdWUkKGtleSwgdmFsKTtcblx0XHR0aGlzLmZvcm0uZ2V0KGtleSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblx0XHR0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG5cdFx0dGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9mIHRoZSBmb3JtJ3MgbW9kZWwuIFRoaXMgV0lMTCB0cmlnZ2VyIHRoZSBtb2RlbENoYW5nZSBldmVudCBvbmNlIGZvciBlYWNoIGlucHV0XG5cdCAqIEBwYXJhbSBtb2RlbCBtb2RlbCB0byBzZXRcblx0ICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuXHQgKi9cblx0cGF0Y2ggPSAobW9kZWw6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRmb3IgKGNvbnN0IGN0cmwgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuXHRcdFx0dGhpcy5wYXRjaFZhbHVlKGN0cmwubmFtZSwgbW9kZWxbY3RybC5uYW1lXSwgZGF0ZUZvcm1hdCk7XG5cdFx0fVxuXHR9O1xuXG5cdGNoZWNrVmFsaWRpdHkgPSAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcblx0XHRcdHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXHRcdH1cblx0XHR0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuXHRcdHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuXHR9O1xuXG5cdHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSAodG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG5cdFx0dGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG5cdFx0aWYgKHRvdWNoZWQpIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cdFx0dGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG5cdH07XG5cblx0cmVzZXQgPSAoKSA9PiB7XG5cdFx0dGhpcy5mb3JtLnJlc2V0KClcblx0fVxuXG5cdHByb3RlY3RlZCBnZXQgPSAoY29udHJvbDogSUNvbnRyb2wpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtLmdldChbY29udHJvbC5uYW1lXSlcblx0fVxuXG5cdHByb3RlY3RlZCBoYXNFcnJvciA9IChjb250cm9sOiBJQ29udHJvbCwgdmFsaWRhdGlvbjogSUNvbnRyb2xWYWxpZGF0aW9uKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMuZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUsIGNvbnRyb2wubmFtZSlcblx0fVxuXG5cdHByb3RlY3RlZCBzaG91bGRTaG93RXJyb3IgPSAoY29udHJvbDogSUNvbnRyb2wsIHZhbGlkYXRpb246IElDb250cm9sVmFsaWRhdGlvbikgPT4ge1xuXHRcdGNvbnN0IGN0cmwgPSB0aGlzLmZvcm0uZ2V0KGNvbnRyb2wubmFtZSk7XG5cdFx0aWYgKGN0cmwgJiYgY3RybC5lcnJvcnMpIHtcblx0XHQgIGNvbnN0IGZpcnN0ID0gT2JqZWN0LmtleXMoY3RybC5lcnJvcnMpWzBdO1xuXHRcdCAgcmV0dXJuIGZpcnN0ID09PSB2YWxpZGF0aW9uLnJ1bGU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHByaXZhdGUgc2V0VmFsdWUkID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0Y29uc3QgdmFsID0gdGhpcy50eXBlVG9JbnB1dFZhbHVlKHRoaXMuY29udHJvbFR5cGVzW2tleV0sIHZhbHVlKTtcblx0XHR0aGlzLmZvcm0uZ2V0KGtleSk/LnBhdGNoVmFsdWUodmFsKTtcblx0XHR0aGlzLnZhbHVlc1trZXldID0gdmFsO1xuXHR9O1xuXG5cdHByaXZhdGUgdG9JbnB1dFZhbHVlID0gKGNvbnRyb2w6IElDb250cm9sLCB2YWx1ZTogYW55IHwgbnVsbCA9IG51bGwpID0+IHtcblx0XHRyZXR1cm4gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGNvbnRyb2wudHlwZSwgdmFsdWUsIGNvbnRyb2wudmFsdWUpO1xuXHR9O1xuXG5cdHByaXZhdGUgdHlwZVRvSW5wdXRWYWx1ZSA9IChcblx0XHR0eXBlOiBzdHJpbmcsXG5cdFx0dmFsdWU6IGFueSB8IG51bGwgPSBudWxsLFxuXHRcdGRlZmF1bHRWYWx1ZTogYW55IHwgbnVsbCA9IG51bGxcblx0KSA9PiB7XG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlIFwiZGF0ZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHQ/IHRoaXMudHJhbnNmb3JtRGF0ZShcblx0XHRcdFx0XHRcdFx0dHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZSxcblx0XHRcdFx0XHRcdFx0XCJ5eXl5LU1NLWRkXCJcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHRoaXMudHJhbnNmb3JtRGF0ZShkZWZhdWx0VmFsdWUsIFwieXl5eS1NTS1kZFwiKTtcblx0XHRcdGNhc2UgXCJkYXRldGltZVwiOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHQ/IHRoaXMudHJhbnNmb3JtRGF0ZShcblx0XHRcdFx0XHRcdFx0dHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZSxcblx0XHRcdFx0XHRcdFx0XCJ5eXl5LU1NLWRkVEhIOm1tXCJcblx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHQ6IHRoaXMudHJhbnNmb3JtRGF0ZShkZWZhdWx0VmFsdWUsIFwieXl5eS1NTS1kZFRISDptbVwiKTtcblx0XHRcdGNhc2UgXCJudW1iZXJcIjpcblx0XHRcdFx0cmV0dXJuIE51bWJlcih2YWx1ZSk7XG5cdFx0XHRjYXNlIFwic2VhcmNoU2VsZWN0XCI6XG5cdFx0XHRcdGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlITtcblx0XHRcdFx0fSBlbHNlIHJldHVybiBudWxsO1xuXHRcdFx0Y2FzZSBcInRvZ2dsZVwiOlxuXHRcdFx0XHRpZih2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSB0cnVlKVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRlbHNlIHJldHVybiBmYWxzZTtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSB8fCBkZWZhdWx0VmFsdWU7XG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgdHJhbnNmb3JtRGF0ZSA9ICh2YWx1ZTogYW55LCBmb3JtYXQ6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcblx0fTtcblxuXHRwdWJsaWMgcmVzaXplID0gKHRleHRBcmVhOiBIVE1MVGV4dEFyZWFFbGVtZW50KSA9PiB7XG5cdFx0Y29uc3QgaW5pdGlhbEhlaWdodCA9IHRleHRBcmVhLnN0eWxlLmhlaWdodDtcblx0XHR0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSBpbml0aWFsSGVpZ2h0O1xuXHRcdHRleHRBcmVhLnN0eWxlLmhlaWdodCA9IFwiXCIgKyB0ZXh0QXJlYS5zY3JvbGxIZWlnaHQgKyBcInB4XCI7XG5cdH07XG5cblx0cHVibGljIGRvU3VibWl0ID0gKCkgPT4ge1xuXHRcdHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cdFx0aWYgKHRoaXMudmFsaWQgJiYgdGhpcy5mb3JtLnZhbGlkKSB0aGlzLnN1Ym1pdD8uKHRoaXMuZm9ybS52YWx1ZSk7XG5cdH07XG5cblx0cHJpdmF0ZSBsb2cgPSAoZWw6IGFueSkgPT4ge1xuXHRcdC8vY29uc29sZS5sb2coZWwpO1xuXHR9O1xuXG5cdHByaXZhdGUgZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHtcblx0XHR0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcblx0XHR0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogdHJ1ZSB9KTtcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblx0fTtcblxuXHRwcml2YXRlIF9nZXRWYWxpZGF0b3JzID0gKHZhbGlkYXRpb25zPzogSUNvbnRyb2xWYWxpZGF0aW9uW10pID0+IHtcblx0XHRjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG5cdFx0aWYgKCF2YWxpZGF0aW9ucykgcmV0dXJuIHZhbGlkYXRvcnM7XG5cdFx0Ly9Td2l0Y2ggY2FzZSBicmVha3MgdGhlIG1vYmlsZSBhcHAgc28gd2UnbGwgZG8gaWYgc3RhdGVtZW50c1xuXHRcdGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiB2YWxpZGF0aW9ucykge1xuXHRcdFx0aWYgKHZhbGlkYXRpb24udmFsaWRhdG9yICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKHZhbGlkYXRpb24udmFsaWRhdG9yKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBydWxlID0gdmFsaWRhdGlvbi5ydWxlPy50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtaW5cIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBwZXRpdGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4odmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJtYXhcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJyZXF1aXJlZFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2UgY2hhbXBzIGVzdCByZXF1aXMgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2gocmVxdWlyZWQoKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcImVtYWlsXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSBhZHJlc3NlIGVtYWlsIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1pbmxlbmd0aFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1heGxlbmd0aFwiKSB7XG5cdFx0XHRcdHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIGdyYW5kZSAhXCI7XG5cdFx0XHRcdHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcInR5cGVcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIHZhbGV1ciBuJ2VzdCBwYXMgdmFsaWRlICFcIjtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKHR5cGUodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJ1bGUgPT0gXCJkZWNpbWFsXCIpIHtcblx0XHRcdFx0dmFsaWRhdGlvbi5kaXNwbGF5ID0gYExlIG5vbWJyZSBkZSBkw6ljaW1hbCBuJ2VzdCBwYXMgdmFsaWRlIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuXHRcdFx0XHR2YWxpZGF0b3JzLnB1c2goZGVjaW1hbCh2YWxpZGF0aW9uLnZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVsZSA9PSBcIm1heGRhdGVcIikge1xuXHRcdFx0XHR2YWxpZGF0aW9uLmRpc3BsYXkgPSBgQ2V0dGUgZGF0ZSBlc3QgdHJvcCBncmFuZGUgISAobWF4OiAke3ZhbGlkYXRpb24udmFsdWV9KSAhYDtcblx0XHRcdFx0dmFsaWRhdG9ycy5wdXNoKG1heERhdGUodmFsaWRhdGlvbi52YWx1ZSkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdmFsaWRhdG9ycztcblx0fTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIG1pbi1oLTUvNiBtdC0yXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYkRpc3BsYXkgfHwgIXNlY3Rpb25zXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2luZ2xlVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sczogY29udHJvbHN9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJEaXNwbGF5ICYmIHNlY3Rpb25zXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VjdGlvblRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c2VjdGlvbnM6IHNlY3Rpb25zfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJEaXNwbGF5ICYmIHNlY3Rpb25zXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFic1RlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c2VjdHM6IHNlY3Rpb25zfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Zvcm0+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0YWJzVGVtcGxhdGUgbGV0LXNlY3Rpb25zPSdzZWN0cyc+XG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8bWF0LXRhYi1ncm91cD5cbiAgICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnM7IHRyYWNrIHNlY3Rpb247IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgPG1hdC10YWIgW2xhYmVsXT1cInNlY3Rpb24udGl0bGUgfHwgJ8OJdGFwZSAnICsgKGluZGV4ICsgMSlcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemVkXCIgY2xhc3M9XCJtdC00XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICAgICAgQGZvciAoY3RybCBvZiBzZWN0aW9uLmNvbnRyb2xzOyB0cmFjayBpbmRleDsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXRcbiAgICAgICAgICBsYXN0ID1cbiAgICAgICAgICAkbGFzdClcbiAgICAgICAgICB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjdHJsLCBpbmRleDogaW5kZXgsIGxhc3Q6ICRsYXN0fVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICB9XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuICA8L2ZpZWxkc2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW5nbGVUZW1wbGF0ZSBsZXQtY29udHJvbHM9XCJjb250cm9sc1wiPlxuICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemVkXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNvbXBhY3QgPyAnZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTQnOidncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtMidcIj5cbiAgICAgIEBmb3IgKGNvbnRyb2wgb2YgY29udHJvbHM7IHRyYWNrIGNvbnRyb2w7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2w6IGNvbnRyb2wsIGluZGV4OiBpbmRleCwgbGFzdDogbGFzdH1cIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gIDwvZmllbGRzZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlY3Rpb25UZW1wbGF0ZSBsZXQtc2VjdGlvbnM9J3NlY3Rpb25zJz5cbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnM7IHRyYWNrIHNlY3Rpb247IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgIDxkaXY+XG4gICAgICBAaWYgKHNlY3Rpb24udGl0bGUpIHtcbiAgICAgIDxoMiBjbGFzcz1cIm1iLTIgZm9udC1ib2xkIHRleHQteGwgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgICAge3sgc2VjdGlvbi50aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIH1cbiAgICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbXBhY3QgPyAnZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTQnOidncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtMidcIj5cbiAgICAgICAgQGZvciAoY29udHJvbCBvZiBzZWN0aW9uLmNvbnRyb2xzOyB0cmFjayBpbmRleDsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXRcbiAgICAgICAgbGFzdCA9XG4gICAgICAgICRsYXN0KVxuICAgICAgICB7XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2w6IGNvbnRyb2wsIGluZGV4OiBpbmRleCwgbGFzdDogJGxhc3R9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoaW5kZXggIT0gKHNlY3Rpb25zfHxbXSkubGVuZ3RoIC0gMSAmJiAhY29tcGFjdCkge1xuICAgICAgPGRpdiBjbGFzcz1cInB5LTRcIj5cbiAgICAgICAgPGhyIGNsYXNzPVwiXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9maWVsZHNldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udHJvbFRlbXBsYXRlIGxldC1jb250cm9sPSdjb250cm9sJyBsZXQtbGFzdD0nbGFzdCcgbGV0LWluZGV4PSdpbmRleCc+XG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBoLW1pbiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgW25nQ2xhc3NdPVwie1xuICAgICdzbTpjb2wtc3Bhbi0yJzogKGNvbnRyb2wud2lkdGggPT0gJ3JvdycgJiYgIWNvbXBhY3QpIHx8IGNvbnRyb2wudHlwZT09J3RleHRBcmVhJyAmJiBjb21wYWN0ICYmIGNvbnRyb2wud2lkdGggIT0gJ3JvdycsXG4gICAgJ3NtOmNvbC1zcGFuLTQnOiBjb250cm9sLndpZHRoID09J3JvdycgJiYgY29tcGFjdCxcbiAgICB9XCI+XG4gICAgQGlmIChjb250cm9sLnR5cGU9PSdzZWFyY2hTZWxlY3QnKSB7XG4gICAgPGRpdiBhcHAtY2hyLXNlYXJjaC1zZWxlY3QgY2xhc3M9XCJyZWxhdGl2ZSBpbnB1dCB6LTAgdy1mdWxsXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIlxuICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgIFtkYXRhXT1cImNvbnRyb2wuZGF0YSB8fCBbXVwiIFtkaXNwbGF5XT1cImNvbnRyb2wuZm4hXCIgW25hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgIFtmaWx0ZXJzXT1cImNvbnRyb2wuZmlsdGVyc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGFic29sdXRlIHRleHQtc20gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIiBbZm9yXT1cImNvbnRyb2wubmFtZVwiPnt7XG4gICAgICAgIGNvbnRyb2wubGFiZWxcbiAgICAgICAgfX1cbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGNvbnRyb2wudmFsaWRhdGlvbnM7IHRyYWNrIHZhbGlkYXRpb24pIHtcbiAgICAgICAgICBAaWYgKFxuICAgICAgICAgIGdldChjb250cm9sKT8udG91Y2hlZCAmJlxuICAgICAgICAgIGhhc0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pICYmIHNob3VsZFNob3dFcnJvcihjb250cm9sLCB2YWxpZGF0aW9uKSkgeyBcbiAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB6LTAgdy1mdWxsIGdyb3VwL2lucHV0cyBjb250ZW50XCI+XG4gICAgICA8IS0tIEhlcmUgd2Ugd2lsbCAqbmdJZiBlYWNoIHR5cGUgb2YgaW5wdXQgY2F1c2UgaXQncyB0aGUgY2xlYW5lc3Qgd2F5IEkgY2FuIGltYWdpbmUtLT5cbiAgICAgIDwhLS1URVhULS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndGV4dCcpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cInRleHRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIFt2YWx1ZV09XCJtb2RlbD8uW2NvbnRyb2wubmFtZV0gfHwgY29udHJvbC52YWx1ZSB8fCAnJ1wiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tUEFTU1dPUkQtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdwYXNzd29yZCcpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cInBhc3N3b3JkXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLVRFWFQgQVJFQS0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RleHRBcmVhJykge1xuICAgICAgPHRleHRhcmVhICN0ZXh0QXJlYSBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgICAoaW5wdXQpPVwicmVzaXplKHRleHRBcmVhKVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJuby1zY3JvbGxiYXIgaW5wdXQgIXJlc2l6ZS1ub25lIGhlaWdodC1ub3JtYWxpemVkIGJsb2NrIHB5LTIgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiPjwvdGV4dGFyZWE+XG4gICAgICB9XG4gICAgICA8IS0tTlVNQkVSLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnbnVtYmVyJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLURBVEUtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRlJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwiZGF0ZVwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIgcHgtMCB3LWZ1bGwgaGVpZ2h0LW5vcm1hbGl6ZWQgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tQ09MT1ItLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdjb2xvcicpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cImNvbG9yXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiIHN0eWxlPVwiaGVpZ2h0OiA0MnB4O1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMS41IG0tMCBweC0wIHctZnVsbCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0b2dnbGUnKXtcbiAgICAgIDxpbnB1dCAjdG9nZ2xlIHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiaGlkZGVuIGNoZWNrYm94XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInJlbGF0aXZlIHRvZ2dsZS13cmFwcGVyIGJsb2NrIGlucHV0IGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYm9yZGVyLWdyYXktMzAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCI+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZT8uY2xpY2soKVwiIGNsYXNzPVwicmVsYXRpdmUgYmxvY2sgaW5wdXQgdG9nZ2xlXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSAhPSAnc2VhcmNoU2VsZWN0Jykge1xuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiIFtmb3JdPVwiY29udHJvbC5uYW1lXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYoY29udHJvbC5sYWJlbCAmJiBjb250cm9sLmxhYmVsICE9ICcnICYmIGNvbnRyb2wubGFiZWwgIT0gJyAnKXtcbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgZ2V0KGNvbnRyb2wpPy50b3VjaGVkICYmXG4gICAgICAgICAgaGFzRXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikgJiYgc2hvdWxkU2hvd0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pKSB7IFxuICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cInRleHQtcmVkLTUwMCBkYXJrOnRleHQtcmVkLTgwMFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9sYWJlbD5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC5pY29uICYmICFkaXNhYmxlZCkge1xuICAgICAgPHNwYW5cbiAgICAgICAgW25nQ2xhc3NdPVwiY29udHJvbC5pY29uQ2FsbGJhY2tEaXNhYmxlZCA/ICd0ZXh0LWdyYXktNDAwIGRhcms6dGV4dC1ncmF5LTUwMCc6J3RleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlJ1wiXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgcC0yLjUgYm90dG9tLTAgcmlnaHQtMFwiIFttYXRUb29sdGlwXT1cImNvbnRyb2wuaWNvblRvb2x0aXAgfHwgJydcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXG4gICAgICAgIChjbGljayk9XCIhY29udHJvbC5pY29uQ2FsbGJhY2tEaXNhYmxlZCAmJiBjb250cm9sLmljb25DYWxsYmFjaz8uKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udmFsdWUpXCI+PG1hdC1pY29uXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGlucHV0IGp1c3RpZnktY2VudGVyIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXIgY29udGVudC1jZW50ZXIgdGV4dC1sZ1wiPnt7Y29udHJvbC5pY29ufX08L21hdC1pY29uPjwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGNvbnRyb2wuc3Bhbikge1xuICAgIDxzcGFuXG4gICAgICBbbmdDbGFzc109XCIhZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMgfHwgIWZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCA/ICd0ZXh0LWdyYXktNjAwIGRhcms6dGV4dC1ncmF5LTMwMCcgOiAnIXRleHQtcmVkLTUwMCBkYXJrOiF0ZXh0LXJlZC04MDAnXCJcbiAgICAgIGNsYXNzPVwiaC0wIHRleHQteHNcIj57eyBjb250cm9sLnNwYW5cbiAgICAgIH19PC9zcGFuPlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -880,8 +880,8 @@ class ChrFormComponent {
|
|
|
880
880
|
* @param dateFormat optional date format for date and datetime inputs
|
|
881
881
|
*/
|
|
882
882
|
this.set = (model, dateFormat = null) => {
|
|
883
|
-
for (const
|
|
884
|
-
this.setValue(
|
|
883
|
+
for (const ctrl of this.flattenedControls) {
|
|
884
|
+
this.setValue(ctrl.name, model[ctrl.name], dateFormat);
|
|
885
885
|
}
|
|
886
886
|
};
|
|
887
887
|
/**
|
|
@@ -903,8 +903,8 @@ class ChrFormComponent {
|
|
|
903
903
|
* @param dateFormat optional date format for date and datetime inputs
|
|
904
904
|
*/
|
|
905
905
|
this.patch = (model, dateFormat = null) => {
|
|
906
|
-
for (const
|
|
907
|
-
this.patchValue(
|
|
906
|
+
for (const ctrl of this.flattenedControls) {
|
|
907
|
+
this.patchValue(ctrl.name, model[ctrl.name], dateFormat);
|
|
908
908
|
}
|
|
909
909
|
};
|
|
910
910
|
this.checkValidity = () => {
|