@messaia/cdk 13.3.3-rc21 → 13.3.3-rc24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/chips/components/chips.component.mjs +13 -6
- package/esm2020/lib/forms/components/generic-form/generic-form.component.mjs +3 -3
- package/esm2020/lib/forms/models/form-field-definition.mjs +1 -2
- package/esm2020/lib/select/components/select.component.mjs +14 -12
- package/fesm2015/messaia-cdk.mjs +27 -19
- package/fesm2015/messaia-cdk.mjs.map +1 -1
- package/fesm2020/messaia-cdk.mjs +27 -19
- package/fesm2020/messaia-cdk.mjs.map +1 -1
- package/lib/chips/components/chips.component.d.ts +2 -2
- package/lib/forms/models/form-field-definition.d.ts +1 -1
- package/lib/select/components/select.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -148,13 +148,20 @@ export class VdChipsComponent extends AbstractMatFormField {
|
|
|
148
148
|
this._endpointChange.next([this.endpoint, this.path, this.params, this.projection]);
|
|
149
149
|
}
|
|
150
150
|
/**
|
|
151
|
-
*
|
|
151
|
+
* params: any
|
|
152
152
|
*/
|
|
153
153
|
get params() { return this._params; }
|
|
154
|
-
set params(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
154
|
+
set params(params) {
|
|
155
|
+
/* Remove empty params */
|
|
156
|
+
Object.keys(params).forEach((key) => {
|
|
157
|
+
if ((params[key] == null || params[key] == '' || params[key] == 'undefined')) {
|
|
158
|
+
delete params[key];
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
if (JSON.stringify(this._params) !== JSON.stringify(params)) {
|
|
162
|
+
this._params = params;
|
|
163
|
+
this._endpointChange.next([this.endpoint, this.path, this._params, this.projection]);
|
|
164
|
+
}
|
|
158
165
|
}
|
|
159
166
|
/**
|
|
160
167
|
* projection: any
|
|
@@ -416,4 +423,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
|
|
|
416
423
|
}], default: [{
|
|
417
424
|
type: Input
|
|
418
425
|
}] } });
|
|
419
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY2hpcHMvY29tcG9uZW50cy9jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jaGlwcy9jb21wb25lbnRzL2NoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUs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QUFtQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRTtLQUMvRCxvRUE2Q2EsZUFBZSw2RkFNZiw2QkFBNkIsMkZBdkNoQyxRQUFRLHFGQ3ZEcEIscXlFQW1DbUI7MkZEVU4sZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNDLFVBQVUsYUFHVDt3QkFDVixFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLGtCQUFrQixFQUFFO3FCQUMvRDs7MEJBeVAwQyxRQUFROzswQkFBSSxJQUFJOzswQkFBMEIsUUFBUTs7MEJBQXdCLFFBQVE7Z0lBNU90SCxTQUFTO3NCQURmLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkE0QjlCLEtBQUs7c0JBRFgsS0FBSztnQkFPQyxZQUFZO3NCQURsQixZQUFZO3VCQUFDLGVBQWU7Z0JBT3RCLDBCQUEwQjtzQkFEaEMsWUFBWTt1QkFBQyw2QkFBNkI7Z0JBWXZDLFFBQVE7c0JBRFgsS0FBSztnQkFpQkYsTUFBTTtzQkFEVCxLQUFLO2dCQWlCRixVQUFVO3NCQURiLEtBQUs7Z0JBaUJGLElBQUk7c0JBRFAsS0FBSztnQkF3QkMsR0FBRztzQkFEVCxLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsWUFBWTtzQkFEbEIsS0FBSztnQkFPQyxhQUFhO3NCQURuQixLQUFLO2dCQU9DLEtBQUs7c0JBRFgsS0FBSztnQkFPYSxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBTVYsVUFBVTtzQkFEaEIsTUFBTTtnQkFPQSxRQUFRO3NCQURkLE1BQU07Z0JBT0EsT0FBTztzQkFEYixNQUFNO2dCQU1XLFFBQVE7c0JBQXpCLE1BQU07dUJBQUMsUUFBUTtnQkFRVCxTQUFTO3NCQURmLE1BQU07Z0JBWUgsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBDZGtQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGYsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL2NvbW1vbi9mdW5jdGlvbnMvdXRpbHMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdE1hdEZvcm1GaWVsZCB9IGZyb20gJy4uLy4uL2Zvcm1zL2hlbHBlcnMvYWJzdHJhY3QtbWF0LWZvcm0tZmllbGQnO1xyXG5cclxuLyoqXHJcbiAqIFZkQ2hpcERpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWNoaXBdbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZENoaXBEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG5cdGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcblx0XHRzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcblx0fVxyXG59XHJcblxyXG4vKipcclxuICogVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1hdXRvY29tcGxldGUtb3B0aW9uXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG5cdGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcblx0XHRzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcblx0fVxyXG59XHJcblxyXG4vKipcclxuICogVmRDaGlwc0NvbXBvbmVudCBjbGFzc1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICd2ZC1jaGlwcycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0eyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogVmRDaGlwc0NvbXBvbmVudCB9XHJcblx0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmRDaGlwc0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0TWF0Rm9ybUZpZWxkPGFueT4ge1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgaHR0cCBzZXJ2aWNlIGZyb20gdG8gZ2V0IHRoZSBkYXRhXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQgPSBudWxsO1xyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIHNlbGVjdCBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0SW5wdXQsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIGNoaXBJbnB1dDogTWF0SW5wdXQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlcHJlc2VudHMgYSB2YWx1ZSB0aGF0IGNoYW5nZXMgb3ZlciB0aW1lLiBcclxuXHQgKiBPYnNlcnZlcnMgY2FuIHN1YnNjcmliZSB0byB0aGUgc3ViamVjdCB0byByZWNlaXZlIHBkZiBmaWxlIGNoYW5nZXNcclxuXHQgKi9cclxuXHRwcml2YXRlIF9lbmRwb2ludENoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB1cCByZWFjdGl2ZSBmb3JtY29udHJvbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhdXRvQ29tcGxldGVDaGlwTGlzdDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGxpc3Qgb2YgZmlsdGVyZWQgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IGFueVtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWFyY2hPcGVyYXRvcnM6IHN0cmluZ1tdXHJcblx0ICovXHJcblx0cHVibGljIHNlYXJjaE9wZXJhdG9yczogc3RyaW5nW10gPSBbXCIhPVwiLCBcIiFcIiwgXCI8PlwiLCBcIj49XCIsIFwiPlwiLCBcIjw9XCIsIFwiPFwiLCBcIl5cIiwgXCIkXCIsIFwiflwiXTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGxpc3Qgb2YgY2hpcHNcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjaGlwcyA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBWZENoaXAgdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkQ2hpcERpcmVjdGl2ZSlcclxuXHRwdWJsaWMgY2hpcFRlbXBsYXRlOiBWZENoaXBEaXJlY3RpdmU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEF1dG9jb21wbGV0ZU9wdGlvbiB0ZW1wbGF0ZVxyXG5cdCAqL1xyXG5cdEBDb250ZW50Q2hpbGQoVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmUpXHJcblx0cHVibGljIGF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlOiBWZEF1dG9jb21wbGV0ZU9wdGlvbkRpcmVjdGl2ZTtcclxuXHJcblx0LyoqXHJcblx0ICogX2VuZHBvaW50OiBzdHJpbmdcclxuXHQgKi9cclxuXHRwdWJsaWMgX2VuZHBvaW50OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgb3Igc2V0cyBlbmRwb2ludFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IGVuZHBvaW50KCk6IGFueSB7IHJldHVybiB0aGlzLl9lbmRwb2ludDsgfVxyXG5cdHNldCBlbmRwb2ludChlbmRwb2ludDogYW55KSB7XHJcblx0XHR0aGlzLl9lbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdFx0dGhpcy5jbGVhcigpO1xyXG5cdFx0dGhpcy5fZW5kcG9pbnRDaGFuZ2UubmV4dChbdGhpcy5lbmRwb2ludCwgdGhpcy5wYXRoLCB0aGlzLnBhcmFtcywgdGhpcy5wcm9qZWN0aW9uXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBfcGFyYW1zOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhcmFtczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIG9yIHNldHMgcGFyYW1zXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1zOyB9XHJcblx0c2V0IHBhcmFtcyhxdWVyeSkge1xyXG5cdFx0dGhpcy5fcGFyYW1zID0gcXVlcnk7XHJcblx0XHR0aGlzLmNsZWFyKCk7XHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLnBhdGgsIHRoaXMucGFyYW1zLCB0aGlzLnByb2plY3Rpb25dKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3Byb2plY3Rpb246IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogcHJvamVjdGlvbjogYW55XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcHJvamVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX3Byb2plY3Rpb247IH1cclxuXHRzZXQgcHJvamVjdGlvbihwcm9qZWN0aW9uOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuX3Byb2plY3Rpb24gPSBwcm9qZWN0aW9uO1xyXG5cdFx0dGhpcy5jbGVhcigpO1xyXG5cdFx0dGhpcy5fZW5kcG9pbnRDaGFuZ2UubmV4dChbdGhpcy5lbmRwb2ludCwgdGhpcy5wYXRoLCB0aGlzLnBhcmFtcywgdGhpcy5wcm9qZWN0aW9uXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBfcGF0aDogYW55XHJcblx0ICovXHJcblx0cHVibGljIF9wYXRoOiBhbnkgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBvciBzZXRzIHBhdGhcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwYXRoKCkgeyByZXR1cm4gdGhpcy5fcGF0aDsgfVxyXG5cdHNldCBwYXRoKHBhdGgpIHtcclxuXHRcdHRoaXMuX3BhdGggPSBwYXRoO1xyXG5cdFx0dGhpcy5jbGVhcigpO1xyXG5cdFx0dGhpcy5fZW5kcG9pbnRDaGFuZ2UubmV4dChbdGhpcy5lbmRwb2ludCwgdGhpcy5wYXRoLCB0aGlzLnBhcmFtcywgdGhpcy5wcm9qZWN0aW9uXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIHRoZSBkaXNhYmxlZC5cclxuXHQgKiBAcGFyYW0gZGlzYWJsZWRcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IGRpc2FibGVkKCkge1xyXG5cdFx0aWYgKHRoaXMuX3JlYWRvbmx5KSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBzdXBlci5kaXNhYmxlZDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGtleTogc3RyaW5nXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMga2V5OiBzdHJpbmcgPSAnaWQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWFyY2hGaWVsZDogc3RyaW5nXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VhcmNoRmllbGQ6IHN0cmluZyA9ICdzZWFyY2gnO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWFyY2hGaWVsZHM6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHNlYXJjaEZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogdGVybU1pbmxlbmd0aDogbnVtYmVyXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgdGVybU1pbmxlbmd0aDogbnVtYmVyID0gMjtcclxuXHJcblx0LyoqXHJcblx0ICogbGltaXQ6IG51bWJlclxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGxpbWl0OiBudW1iZXIgPSAzMDtcclxuXHJcblx0LyoqXHJcblx0ICogZGVib3VuY2U/OiBudW1iZXJcclxuXHQgKiBEZWJvdW5jZSB0aW1lb3V0IGJldHdlZW4ga2V5cHJlc3Nlcy4gRGVmYXVsdHMgdG8gNDAwLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgnZGVib3VuY2UnKSBkZWJvdW5jZTogbnVtYmVyID0gNDAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBpbml0U2VsZWN0PzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgaW5pdFNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogY2xlYXJlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIGNsZWFyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxhdW5jaD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnbGF1bmNoJykgb25MYXVuY2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNoaXBGb2N1cz86IGZ1bmN0aW9uXHJcblx0ICogTWV0aG9kIHRvIGJlIGV4ZWN1dGVkIHdoZW4gYSBjaGlwIGlzIGZvY3VzZWQuXHJcblx0ICogU2VuZHMgY2hpcCB2YWx1ZSBhcyBldmVudC5cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgY2hpcEZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKiogXHJcblx0ICogV2hldGhlciB0aGUgc2VsZWN0IGhhcyBhIHZhbHVlLlxyXG5cdCAqL1xyXG5cdGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY2hpcHMubGVuZ3RoIDw9IDA7IH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVmYXVsdCBjaGlwXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgZGVmYXVsdCgpIHsgcmV0dXJuIHRoaXMuY2hpcHNbMF07IH1cclxuXHRzZXQgZGVmYXVsdChfY2hpcCkge1xyXG5cdFx0aWYgKF9jaGlwKSB7XHJcblx0XHRcdC8qIEFkZCBjaGlwIGZvciBzZWxlY3RlZCBvcHRpb24gKi9cclxuXHRcdFx0dGhpcy5jaGlwcyA9IFtfY2hpcF07XHJcblxyXG5cdFx0XHQvKiBcdFNldCB0aGUgdmFsdWUgKG5nTW9kZWwpICovXHJcblx0XHRcdHRoaXMudmFsdWUgPSBfY2hpcFt0aGlzLmtleV07XHJcblxyXG5cdFx0XHQvKiBEaWFibGVkIHRoZSBpbnB1dCwgYWxsb3cgb25seSBvbmUgY2hpcCAqL1xyXG5cdFx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmRpc2FibGUoKTtcclxuXHJcblx0XHRcdC8qIFJlc2V0IHRoZSBhdXRvY29tcGxldGUgaW5wdXQgdGV4dCB2YWx1ZSAqL1xyXG5cdFx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBgTWF0Rm9ybUZpZWxkYCBsYWJlbCBzaG91bGQgdHJ5IHRvIGZsb2F0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiBzdXBlci5zaG91bGRMYWJlbEZsb2F0IHx8ICF0aGlzLmNoaXBJbnB1dD8uZW1wdHk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBsb2FkaW5nOiBib29sZWFuXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRpbmc6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIGVtcHR5UmVzdWx0OiBib29sZWFuXHJcblx0ICovXHJcblx0cHVibGljIGVtcHR5UmVzdWx0OiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSBuZ0NvbnRyb2wgXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm0gXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm1Hcm91cCBcclxuXHQgKiBAcGFyYW0gZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyIFxyXG5cdCAqIEBwYXJhbSBmb2N1c01vbml0b3IgXHJcblx0ICogQHBhcmFtIGVsZW1lbnRSZWYgXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvciwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLCBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSwgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlciwgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuXHRcdHN1cGVyKFwiYXBwLXZkLWNoaXBzXCIsIG5nQ29udHJvbCwgcGFyZW50Rm9ybSwgcGFyZW50Rm9ybUdyb3VwLCBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsIGZvY3VzTW9uaXRvciwgZWxlbWVudFJlZik7XHJcblx0XHR0aGlzLmh0dHAgPSBpbmplY3Rvci5nZXQoSHR0cENsaWVudCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuXHRcdC8qIFNldCB0aGUgdmFsdWUgKi9cclxuXHRcdHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcblxyXG5cdFx0LyogQ2xlYXIgdGhlIGNoaXBzIGxpc3QgKi9cclxuXHRcdHRoaXMuY2hpcHMgPSBbXTtcclxuXHJcblx0XHRpZiAodmFsdWUgJiYgdGhpcy5jaGlwcz8ubGVuZ3RoIDw9IDApIHtcclxuXHRcdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHRcdFx0bGV0IF9wYXJhbXM6IGFueSA9IHt9O1xyXG5cclxuXHRcdFx0LyogQWRkIGluY2x1ZGVzLCBpZiBhbnkgKi9cclxuXHRcdFx0aWYgKHRoaXMuX3BhcmFtcz8uaW5jbHVkZXMpIHtcclxuXHRcdFx0XHRfcGFyYW1zLmluY2x1ZGVzID0gdGhpcy5fcGFyYW1zLmluY2x1ZGVzO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBBZGQgcHJvamVjdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdGlmICh0aGlzLnByb2plY3Rpb24pIHtcclxuXHRcdFx0XHRfcGFyYW1zLnByb2plY3Rpb24gPSB0aGlzLnByb2plY3Rpb247XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEdldCBiYXNlIHVybCAqL1xyXG5cdFx0XHR2YXIgdXJsUGFydHMgPSB0aGlzLmVuZHBvaW50LnNwbGl0KCc/Jyk7XHJcblx0XHRcdHRoaXMuaHR0cC5nZXQoYCR7dXJsUGFydHNbMF19LyR7dmFsdWV9JHt1cmxQYXJ0cy5sZW5ndGggPiAxID8gYD8ke3VybFBhcnRzWzFdfWAgOiAnJ31gLCB7IHBhcmFtczogVXRpbHMuY2xlYW5PYmplY3QoX3BhcmFtcykgfSkuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuXHRcdFx0XHQvKiBBZGQgY2hpcCBmb3Igc2VsZWN0ZWQgb3B0aW9uICovXHJcblx0XHRcdFx0dGhpcy5jaGlwcy5wdXNoKHgpO1xyXG5cclxuXHRcdFx0XHQvKiBFbWl0IHNlbGVjdGVkIGV2ZW50ICovXHJcblx0XHRcdFx0dGhpcy5pbml0U2VsZWN0LmVtaXQoeCk7XHJcblxyXG5cdFx0XHRcdC8qIERpYWJsZWQgdGhlIGlucHV0LCBhbGxvdyBvbmx5IG9uZSBjaGlwICovXHJcblx0XHRcdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5kaXNhYmxlKCk7XHJcblx0XHRcdH0sIF8gPT4gdGhpcy5sb2FkaW5nID0gZmFsc2UpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5jbGVhcihmYWxzZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIGNvbnRyb2wgZm9jdXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZm9jdXMoKTogdm9pZCB7XHJcblx0XHR0aGlzLmNoaXBJbnB1dD8uZm9jdXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBvZiBhIFxyXG5cdCAqIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LnZhbHVlQ2hhbmdlc1xyXG5cdFx0XHQucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpXHJcblx0XHRcdC5zdWJzY3JpYmUodiA9PiB0aGlzLmZpbHRlck9wdGlvbnModikpO1xyXG5cclxuXHRcdHRoaXMubmdDb250cm9sPy52YWx1ZUNoYW5nZXM/LnBpcGUoc2tpcCgxKSkuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcblx0XHRcdGlmICghdmFsdWUpIHtcclxuXHRcdFx0XHR0aGlzLmNoaXBzID0gW107XHJcblx0XHRcdFx0dGhpcy5fdmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3Quc2V0VmFsdWUoXCJcIik7XHJcblx0XHRcdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5lbmFibGUoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIGEgY2hpcFxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKiBAcGFyYW0gaW5wdXQgXHJcblx0ICovXHJcblx0cHVibGljIGFkZENoaXAoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsIGlucHV0OiBhbnkpOiB2b2lkIHtcclxuXHRcdC8qIERlZmluZSBzZWxlY3Rpb24gY29uc3RhbnQgKi9cclxuXHRcdGNvbnN0IHNlbGVjdGlvbiA9IGV2ZW50Lm9wdGlvbi52YWx1ZTtcclxuXHJcblx0XHQvKiBBZGQgY2hpcCBmb3Igc2VsZWN0ZWQgb3B0aW9uICovXHJcblx0XHR0aGlzLmNoaXBzLnB1c2goc2VsZWN0aW9uKTtcclxuXHJcblx0XHQvKiBFbWl0IHNlbGVjdGVkIGV2ZW50ICovXHJcblx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoc2VsZWN0aW9uKTtcclxuXHJcblx0XHQvKiBcdFNldCB0aGUgdmFsdWUgKG5nTW9kZWwpICovXHJcblx0XHR0aGlzLnZhbHVlID0gc2VsZWN0aW9uW3RoaXMua2V5XTtcclxuXHJcblx0XHQvKiBEaWFibGVkIHRoZSBpbnB1dCwgYWxsb3cgb25seSBvbmUgY2hpcCAqL1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5kaXNhYmxlKCk7XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dCB0ZXh0IHZhbHVlICovXHJcblx0XHRpZiAoaW5wdXQpIHtcclxuXHRcdFx0aW5wdXQudmFsdWUgPSAnJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbW92ZXMgYWxsIGNoaXBzXHJcblx0ICovXHJcblx0cHVibGljIGNsZWFyKHRyaWdnZXJTdGF0ZUNoYW5nZXM6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcblx0XHQvKiBSZW1vdmUga2V5IGZyb20gY2hpcHMgYXJyYXkgKi9cclxuXHRcdHRoaXMudmFsdWUgPSBudWxsO1xyXG5cdFx0dGhpcy5jaGlwcyA9IFtdO1xyXG5cclxuXHRcdC8qIE1hcmsgdGhlIGNvbnRyb2wgYXMgdG91Y2hlZCAqL1xyXG5cdFx0aWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wpIHtcclxuXHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIHZhbHVlIChuZ01vZGVsKSAqL1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5zZXRWYWx1ZShcIlwiKTtcclxuXHJcblx0XHRpZiAodHJpZ2dlclN0YXRlQ2hhbmdlcykge1xyXG5cdFx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogRW5hYmxlIHRoZSBpbnB1dCAqL1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5lbmFibGUoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZpbHRlcnMgb3B0aW9uc1xyXG5cdCAqIEBwYXJhbSB0ZXh0IFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZmlsdGVyT3B0aW9ucyh0ZXh0OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW107XHJcblx0XHRpZiAodGhpcy5lbmRwb2ludCAmJiB0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycgJiYgdGV4dC5sZW5ndGggPj0gdGhpcy50ZXJtTWlubGVuZ3RoKSB7XHJcblx0XHRcdC8qIEluaXQgcGFyYW1zIGlmIG51bGwgKi9cclxuXHRcdFx0dGhpcy5fcGFyYW1zID0gdGhpcy5fcGFyYW1zIHx8IHt9O1xyXG5cclxuXHRcdFx0LyogQWRkIHNlYXJjaCB3b3JkIHRvIHRoZSBwYXJhbXMgKi9cclxuXHRcdFx0aWYgKHRoaXMuc2VhcmNoRmllbGQgJiYgdGhpcy5zZWFyY2hGaWVsZHMubGVuZ3RoIDw9IDApIHtcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0gbmV3IFJlZ0V4cChgKFxcXFwke3RoaXMuc2VhcmNoT3BlcmF0b3JzLmpvaW4oJ3xcXFxcJyl9KT8oLiopYCkuZXhlYyh0aGlzLnNlYXJjaEZpZWxkKTtcclxuXHRcdFx0XHR0aGlzLl9wYXJhbXNbcmVzdWx0WzJdXSA9IGAke3Jlc3VsdFsxXSA/IHJlc3VsdFsxXSA6ICcnfSR7dGV4dH1gO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBBZGQgc2VhcmNoIHdvcmQgdG8gdGhlIHBhcmFtcyAqL1xyXG5cdFx0XHR0aGlzLnNlYXJjaEZpZWxkcz8ubWFwKHggPT4geC50cmltKCkpPy5mb3JFYWNoKHggPT4ge1xyXG5cdFx0XHRcdHZhciByZXN1bHQgPSBuZXcgUmVnRXhwKGAoXFxcXCR7dGhpcy5zZWFyY2hPcGVyYXRvcnMuam9pbignfFxcXFwnKX0pPyguKilgKS5leGVjKHgpO1xyXG5cdFx0XHRcdHRoaXMuX3BhcmFtc1tyZXN1bHRbMl1dID0gYCR7cmVzdWx0WzFdID8gcmVzdWx0WzFdIDogJyd9JHt0ZXh0fWA7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogQWRkIGxpbWl0IHRvIHRoZSBwYXJhbXMgKi9cclxuXHRcdFx0dGhpcy5fcGFyYW1zLmxpbWl0ID0gdGhpcy5saW1pdDtcclxuXHJcblx0XHRcdC8qIEFkZCBwcm9qZWN0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0aWYgKHRoaXMucHJvamVjdGlvbikge1xyXG5cdFx0XHRcdHRoaXMuX3BhcmFtcy5wcm9qZWN0aW9uID0gdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBHZXQgcmVzdWx0cyBmcm9tIHNlcnZlciAqL1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW5kcG9pbnR9JHt0aGlzLnBhdGggfHwgJyd9YCwgeyBwYXJhbXM6IFV0aWxzLmNsZWFuT2JqZWN0KHRoaXMuX3BhcmFtcykgfSlcclxuXHRcdFx0XHQuc3Vic2NyaWJlKCh4OiBhbnlbXSkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHg7XHJcblx0XHRcdFx0XHR0aGlzLmVtcHR5UmVzdWx0ID0gIXggfHwgIXgubGVuZ3RoO1xyXG5cdFx0XHRcdH0sIF8gPT4gdGhpcy5sb2FkaW5nID0gZmFsc2UpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBsYXVuY2ggYnV0dG9uIGNsaWNrXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUxhdW5jaENsaWNrZWQoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5jaGlwcz8ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLm9uTGF1bmNoLmVtaXQodGhpcy5jaGlwc1swXSk7XHJcblx0XHR9XHJcblx0fVxyXG59IiwiPG1hdC1jaGlwLWxpc3QgI2NoaXBMaXN0IFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiPlxyXG5cdDwhLS0gI3JlZ2lvbiBDaGlwcyAtLT5cclxuXHQ8bmctdGVtcGxhdGUgbGV0LWNoaXAgbGV0LWZpcnN0PVwiZmlyc3RcIiBsZXQtaW5kZXg9XCJpbmRleFwiIG5nRm9yIFtuZ0Zvck9mXT1cImNoaXBzXCI+XHJcblx0XHQ8bWF0LWJhc2ljLWNoaXAgW3NlbGVjdGFibGVdPVwiIXJlYWRvbmx5XCIgW3JlbW92YWJsZV09XCIhcmVhZG9ubHlcIiAocmVtb3ZlZCk9XCJjbGVhcmVkLm9ic2VydmVycy5sZW5ndGg/Y2xlYXJlZC5lbWl0KHZhbHVlKTpjbGVhcigpXCIgZGlzYWJsZVJpcHBsZT5cclxuXHRcdFx0PHNwYW4gY2xhc3M9XCJ2ZC1jaGlwLWNvbnRlbnRcIj5cclxuXHRcdFx0XHQ8c3BhbiAqbmdJZj1cIiFjaGlwVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+XHJcblx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cIiFhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIj57eyBjaGlwIH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uOiBjaGlwIH1cIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJjaGlwVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hpcFRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNoaXA6IGNoaXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0PG1hdC1pY29uICpuZ0lmPVwib25MYXVuY2g/Lm9ic2VydmVycz8ubGVuZ3RoID4gMFwiIGNsYXNzPVwidmQtY2hpcC1sYXVuY2hcIiBbbmdDbGFzc109XCJ7J3JlbW92YWJsZSc6ICFyZWFkb25seX1cIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBoYW5kbGVMYXVuY2hDbGlja2VkKClcIj5sYXVuY2g8L21hdC1pY29uPlxyXG5cdFx0XHQ8bWF0LWljb24gbWF0Q2hpcFJlbW92ZSAqbmdJZj1cIiFyZWFkb25seVwiPmJhY2tzcGFjZTwvbWF0LWljb24+XHJcblx0XHQ8L21hdC1iYXNpYy1jaGlwPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHQ8IS0tICNyZWdpb24gU2VhcmNoIGJveCAtLT5cclxuXHQ8aW5wdXQgbWF0SW5wdXQgW2hpZGRlbl09XCJ2YWx1ZSAmJiAhZW1wdHlcIiBwbGFjZWhvbGRlcj1cInt7cGxhY2Vob2xkZXJ9fVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbZm9ybUNvbnRyb2xdPVwiYXV0b0NvbXBsZXRlQ2hpcExpc3RcIiAjY2hpcElucHV0IC8+XHJcblx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuXHQ8IS0tICNyZWdpb24gUHJvZ3Jlc3MgLS0+XHJcblx0PG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMThcIiAqbmdJZj1cImxvYWRpbmdcIj48L21hdC1zcGlubmVyPlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuPC9tYXQtY2hpcC1saXN0PlxyXG5cclxuPCEtLSAjcmVnaW9uIEF1dG9jb21wbGV0ZSAtLT5cclxuPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwiYWRkQ2hpcCgkZXZlbnQsIGNoaXBJbnB1dClcIj5cclxuXHQ8bmctdGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWZpcnN0PVwiZmlyc3RcIiBuZ0ZvciBbbmdGb3JPZl09XCJmaWx0ZXJlZE9wdGlvbnNcIj5cclxuXHRcdDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XHJcblx0XHRcdDxzcGFuICpuZ0lmPVwiIWF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiPnt7IGl0ZW0gfX08L3NwYW4+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbjogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdDwvbWF0LW9wdGlvbj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG48L21hdC1hdXRvY29tcGxldGU+XHJcbjwhLS0gI2VuZHJlZ2lvbiAtLT4iXX0=
|
|
426
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY2hpcHMvY29tcG9uZW50cy9jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jaGlwcy9jb21wb25lbnRzL2NoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUs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S0FBSztnQkFPQyxhQUFhO3NCQURuQixLQUFLO2dCQU9DLEtBQUs7c0JBRFgsS0FBSztnQkFPYSxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBTVYsVUFBVTtzQkFEaEIsTUFBTTtnQkFPQSxRQUFRO3NCQURkLE1BQU07Z0JBT0EsT0FBTztzQkFEYixNQUFNO2dCQU1XLFFBQVE7c0JBQXpCLE1BQU07dUJBQUMsUUFBUTtnQkFRVCxTQUFTO3NCQURmLE1BQU07Z0JBWUgsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBDZGtQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGYsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL2NvbW1vbi9mdW5jdGlvbnMvdXRpbHMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdE1hdEZvcm1GaWVsZCB9IGZyb20gJy4uLy4uL2Zvcm1zL2hlbHBlcnMvYWJzdHJhY3QtbWF0LWZvcm0tZmllbGQnO1xyXG5cclxuLyoqXHJcbiAqIFZkQ2hpcERpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWNoaXBdbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZENoaXBEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG5cdGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcblx0XHRzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcblx0fVxyXG59XHJcblxyXG4vKipcclxuICogVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1hdXRvY29tcGxldGUtb3B0aW9uXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG5cdGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcblx0XHRzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcblx0fVxyXG59XHJcblxyXG4vKipcclxuICogVmRDaGlwc0NvbXBvbmVudCBjbGFzc1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICd2ZC1jaGlwcycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0eyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogVmRDaGlwc0NvbXBvbmVudCB9XHJcblx0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmRDaGlwc0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0TWF0Rm9ybUZpZWxkPGFueT4ge1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgaHR0cCBzZXJ2aWNlIGZyb20gdG8gZ2V0IHRoZSBkYXRhXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQgPSBudWxsO1xyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIHNlbGVjdCBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0SW5wdXQsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIGNoaXBJbnB1dDogTWF0SW5wdXQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlcHJlc2VudHMgYSB2YWx1ZSB0aGF0IGNoYW5nZXMgb3ZlciB0aW1lLiBcclxuXHQgKiBPYnNlcnZlcnMgY2FuIHN1YnNjcmliZSB0byB0aGUgc3ViamVjdCB0byByZWNlaXZlIHBkZiBmaWxlIGNoYW5nZXNcclxuXHQgKi9cclxuXHRwcml2YXRlIF9lbmRwb2ludENoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB1cCByZWFjdGl2ZSBmb3JtY29udHJvbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhdXRvQ29tcGxldGVDaGlwTGlzdDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGxpc3Qgb2YgZmlsdGVyZWQgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IGFueVtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWFyY2hPcGVyYXRvcnM6IHN0cmluZ1tdXHJcblx0ICovXHJcblx0cHVibGljIHNlYXJjaE9wZXJhdG9yczogc3RyaW5nW10gPSBbXCIhPVwiLCBcIiFcIiwgXCI8PlwiLCBcIj49XCIsIFwiPlwiLCBcIjw9XCIsIFwiPFwiLCBcIl5cIiwgXCIkXCIsIFwiflwiXTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGxpc3Qgb2YgY2hpcHNcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjaGlwcyA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBWZENoaXAgdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkQ2hpcERpcmVjdGl2ZSlcclxuXHRwdWJsaWMgY2hpcFRlbXBsYXRlOiBWZENoaXBEaXJlY3RpdmU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEF1dG9jb21wbGV0ZU9wdGlvbiB0ZW1wbGF0ZVxyXG5cdCAqL1xyXG5cdEBDb250ZW50Q2hpbGQoVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmUpXHJcblx0cHVibGljIGF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlOiBWZEF1dG9jb21wbGV0ZU9wdGlvbkRpcmVjdGl2ZTtcclxuXHJcblx0LyoqXHJcblx0ICogX2VuZHBvaW50OiBzdHJpbmdcclxuXHQgKi9cclxuXHRwdWJsaWMgX2VuZHBvaW50OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgb3Igc2V0cyBlbmRwb2ludFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IGVuZHBvaW50KCk6IGFueSB7IHJldHVybiB0aGlzLl9lbmRwb2ludDsgfVxyXG5cdHNldCBlbmRwb2ludChlbmRwb2ludDogYW55KSB7XHJcblx0XHR0aGlzLl9lbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdFx0dGhpcy5jbGVhcigpO1xyXG5cdFx0dGhpcy5fZW5kcG9pbnRDaGFuZ2UubmV4dChbdGhpcy5lbmRwb2ludCwgdGhpcy5wYXRoLCB0aGlzLnBhcmFtcywgdGhpcy5wcm9qZWN0aW9uXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBfcGFyYW1zOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhcmFtczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBwYXJhbXM6IGFueVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHBhcmFtcygpIHsgcmV0dXJuIHRoaXMuX3BhcmFtczsgfVxyXG5cdHNldCBwYXJhbXMocGFyYW1zOiBhbnkpIHtcclxuXHRcdC8qIFJlbW92ZSBlbXB0eSBwYXJhbXMgKi9cclxuXHRcdE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcblx0XHRcdGlmICgocGFyYW1zW2tleV0gPT0gbnVsbCB8fCBwYXJhbXNba2V5XSA9PSAnJyB8fCBwYXJhbXNba2V5XSA9PSAndW5kZWZpbmVkJykpIHtcclxuXHRcdFx0XHRkZWxldGUgcGFyYW1zW2tleV07XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLl9wYXJhbXMpICE9PSBKU09OLnN0cmluZ2lmeShwYXJhbXMpKSB7XHJcblx0XHRcdHRoaXMuX3BhcmFtcyA9IHBhcmFtcztcclxuXHRcdFx0dGhpcy5fZW5kcG9pbnRDaGFuZ2UubmV4dChbdGhpcy5lbmRwb2ludCwgdGhpcy5wYXRoLCB0aGlzLl9wYXJhbXMsIHRoaXMucHJvamVjdGlvbl0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogX3Byb2plY3Rpb246IGFueVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcHJvamVjdGlvbjogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBwcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwcm9qZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fcHJvamVjdGlvbjsgfVxyXG5cdHNldCBwcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZykge1xyXG5cdFx0dGhpcy5fcHJvamVjdGlvbiA9IHByb2plY3Rpb247XHJcblx0XHR0aGlzLmNsZWFyKCk7XHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLnBhdGgsIHRoaXMucGFyYW1zLCB0aGlzLnByb2plY3Rpb25dKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wYXRoOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhdGg6IGFueSA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIG9yIHNldHMgcGF0aFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHBhdGgoKSB7IHJldHVybiB0aGlzLl9wYXRoOyB9XHJcblx0c2V0IHBhdGgocGF0aCkge1xyXG5cdFx0dGhpcy5fcGF0aCA9IHBhdGg7XHJcblx0XHR0aGlzLmNsZWFyKCk7XHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLnBhdGgsIHRoaXMucGFyYW1zLCB0aGlzLnByb2plY3Rpb25dKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgdGhlIGRpc2FibGVkLlxyXG5cdCAqIEBwYXJhbSBkaXNhYmxlZFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XHJcblx0XHRpZiAodGhpcy5fcmVhZG9ubHkpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHN1cGVyLmRpc2FibGVkO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICoga2V5OiBzdHJpbmdcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBrZXk6IHN0cmluZyA9ICdpZCc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNlYXJjaEZpZWxkOiBzdHJpbmdcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzZWFyY2hGaWVsZDogc3RyaW5nID0gJ3NlYXJjaCc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNlYXJjaEZpZWxkczogc3RyaW5nXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VhcmNoRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiB0ZXJtTWlubGVuZ3RoOiBudW1iZXJcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyB0ZXJtTWlubGVuZ3RoOiBudW1iZXIgPSAyO1xyXG5cclxuXHQvKipcclxuXHQgKiBsaW1pdDogbnVtYmVyXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgbGltaXQ6IG51bWJlciA9IDMwO1xyXG5cclxuXHQvKipcclxuXHQgKiBkZWJvdW5jZT86IG51bWJlclxyXG5cdCAqIERlYm91bmNlIHRpbWVvdXQgYmV0d2VlbiBrZXlwcmVzc2VzLiBEZWZhdWx0cyB0byA0MDAuXHJcblx0ICovXHJcblx0QElucHV0KCdkZWJvdW5jZScpIGRlYm91bmNlOiBudW1iZXIgPSA0MDA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGluaXRTZWxlY3Q/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBpbml0U2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWxlY3RlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBjbGVhcmVkPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgY2xlYXJlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogbGF1bmNoPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdsYXVuY2gnKSBvbkxhdW5jaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogY2hpcEZvY3VzPzogZnVuY3Rpb25cclxuXHQgKiBNZXRob2QgdG8gYmUgZXhlY3V0ZWQgd2hlbiBhIGNoaXAgaXMgZm9jdXNlZC5cclxuXHQgKiBTZW5kcyBjaGlwIHZhbHVlIGFzIGV2ZW50LlxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBjaGlwRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBXaGV0aGVyIHRoZSBzZWxlY3QgaGFzIGEgdmFsdWUuXHJcblx0ICovXHJcblx0Z2V0IGVtcHR5KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jaGlwcy5sZW5ndGggPD0gMDsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBEZWZhdWx0IGNoaXBcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBkZWZhdWx0KCkgeyByZXR1cm4gdGhpcy5jaGlwc1swXTsgfVxyXG5cdHNldCBkZWZhdWx0KF9jaGlwKSB7XHJcblx0XHRpZiAoX2NoaXApIHtcclxuXHRcdFx0LyogQWRkIGNoaXAgZm9yIHNlbGVjdGVkIG9wdGlvbiAqL1xyXG5cdFx0XHR0aGlzLmNoaXBzID0gW19jaGlwXTtcclxuXHJcblx0XHRcdC8qIFx0U2V0IHRoZSB2YWx1ZSAobmdNb2RlbCkgKi9cclxuXHRcdFx0dGhpcy52YWx1ZSA9IF9jaGlwW3RoaXMua2V5XTtcclxuXHJcblx0XHRcdC8qIERpYWJsZWQgdGhlIGlucHV0LCBhbGxvdyBvbmx5IG9uZSBjaGlwICovXHJcblx0XHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QuZGlzYWJsZSgpO1xyXG5cclxuXHRcdFx0LyogUmVzZXQgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dCB0ZXh0IHZhbHVlICovXHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGBNYXRGb3JtRmllbGRgIGxhYmVsIHNob3VsZCB0cnkgdG8gZmxvYXQuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHN1cGVyLnNob3VsZExhYmVsRmxvYXQgfHwgIXRoaXMuY2hpcElucHV0Py5lbXB0eTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxvYWRpbmc6IGJvb2xlYW5cclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZGluZzogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogZW1wdHlSZXN1bHQ6IGJvb2xlYW5cclxuXHQgKi9cclxuXHRwdWJsaWMgZW1wdHlSZXN1bHQ6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICogQHBhcmFtIG5nQ29udHJvbCBcclxuXHQgKiBAcGFyYW0gcGFyZW50Rm9ybSBcclxuXHQgKiBAcGFyYW0gcGFyZW50Rm9ybUdyb3VwIFxyXG5cdCAqIEBwYXJhbSBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIgXHJcblx0ICogQHBhcmFtIGZvY3VzTW9uaXRvciBcclxuXHQgKiBAcGFyYW0gZWxlbWVudFJlZiBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLCBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLCBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sIEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLCBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLCBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvciwgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG5cdFx0c3VwZXIoXCJhcHAtdmQtY2hpcHNcIiwgbmdDb250cm9sLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgZm9jdXNNb25pdG9yLCBlbGVtZW50UmVmKTtcclxuXHRcdHRoaXMuaHR0cCA9IGluamVjdG9yLmdldChIdHRwQ2xpZW50KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG5cdFx0LyogU2V0IHRoZSB2YWx1ZSAqL1xyXG5cdFx0dGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuXHJcblx0XHQvKiBDbGVhciB0aGUgY2hpcHMgbGlzdCAqL1xyXG5cdFx0dGhpcy5jaGlwcyA9IFtdO1xyXG5cclxuXHRcdGlmICh2YWx1ZSAmJiB0aGlzLmNoaXBzPy5sZW5ndGggPD0gMCkge1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRsZXQgX3BhcmFtczogYW55ID0ge307XHJcblxyXG5cdFx0XHQvKiBBZGQgaW5jbHVkZXMsIGlmIGFueSAqL1xyXG5cdFx0XHRpZiAodGhpcy5fcGFyYW1zPy5pbmNsdWRlcykge1xyXG5cdFx0XHRcdF9wYXJhbXMuaW5jbHVkZXMgPSB0aGlzLl9wYXJhbXMuaW5jbHVkZXM7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEFkZCBwcm9qZWN0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0aWYgKHRoaXMucHJvamVjdGlvbikge1xyXG5cdFx0XHRcdF9wYXJhbXMucHJvamVjdGlvbiA9IHRoaXMucHJvamVjdGlvbjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogR2V0IGJhc2UgdXJsICovXHJcblx0XHRcdHZhciB1cmxQYXJ0cyA9IHRoaXMuZW5kcG9pbnQuc3BsaXQoJz8nKTtcclxuXHRcdFx0dGhpcy5odHRwLmdldChgJHt1cmxQYXJ0c1swXX0vJHt2YWx1ZX0ke3VybFBhcnRzLmxlbmd0aCA+IDEgPyBgPyR7dXJsUGFydHNbMV19YCA6ICcnfWAsIHsgcGFyYW1zOiBVdGlscy5jbGVhbk9iamVjdChfcGFyYW1zKSB9KS5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdC8qIEFkZCBjaGlwIGZvciBzZWxlY3RlZCBvcHRpb24gKi9cclxuXHRcdFx0XHR0aGlzLmNoaXBzLnB1c2goeCk7XHJcblxyXG5cdFx0XHRcdC8qIEVtaXQgc2VsZWN0ZWQgZXZlbnQgKi9cclxuXHRcdFx0XHR0aGlzLmluaXRTZWxlY3QuZW1pdCh4KTtcclxuXHJcblx0XHRcdFx0LyogRGlhYmxlZCB0aGUgaW5wdXQsIGFsbG93IG9ubHkgb25lIGNoaXAgKi9cclxuXHRcdFx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmRpc2FibGUoKTtcclxuXHRcdFx0fSwgXyA9PiB0aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmNsZWFyKGZhbHNlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgY29udHJvbCBmb2N1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcclxuXHRcdHRoaXMuY2hpcElucHV0Py5mb2N1cygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIG9mIGEgXHJcblx0ICogZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QudmFsdWVDaGFuZ2VzXHJcblx0XHRcdC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSlcclxuXHRcdFx0LnN1YnNjcmliZSh2ID0+IHRoaXMuZmlsdGVyT3B0aW9ucyh2KSk7XHJcblxyXG5cdFx0dGhpcy5uZ0NvbnRyb2w/LnZhbHVlQ2hhbmdlcz8ucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0aWYgKCF2YWx1ZSkge1xyXG5cdFx0XHRcdHRoaXMuY2hpcHMgPSBbXTtcclxuXHRcdFx0XHR0aGlzLl92YWx1ZSA9IFwiXCI7XHJcblx0XHRcdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5zZXRWYWx1ZShcIlwiKTtcclxuXHRcdFx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmVuYWJsZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZHMgYSBjaGlwXHJcblx0ICogQHBhcmFtIGV2ZW50IFxyXG5cdCAqIEBwYXJhbSBpbnB1dCBcclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkQ2hpcChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCwgaW5wdXQ6IGFueSk6IHZvaWQge1xyXG5cdFx0LyogRGVmaW5lIHNlbGVjdGlvbiBjb25zdGFudCAqL1xyXG5cdFx0Y29uc3Qgc2VsZWN0aW9uID0gZXZlbnQub3B0aW9uLnZhbHVlO1xyXG5cclxuXHRcdC8qIEFkZCBjaGlwIGZvciBzZWxlY3RlZCBvcHRpb24gKi9cclxuXHRcdHRoaXMuY2hpcHMucHVzaChzZWxlY3Rpb24pO1xyXG5cclxuXHRcdC8qIEVtaXQgc2VsZWN0ZWQgZXZlbnQgKi9cclxuXHRcdHRoaXMuc2VsZWN0ZWQuZW1pdChzZWxlY3Rpb24pO1xyXG5cclxuXHRcdC8qIFx0U2V0IHRoZSB2YWx1ZSAobmdNb2RlbCkgKi9cclxuXHRcdHRoaXMudmFsdWUgPSBzZWxlY3Rpb25bdGhpcy5rZXldO1xyXG5cclxuXHRcdC8qIERpYWJsZWQgdGhlIGlucHV0LCBhbGxvdyBvbmx5IG9uZSBjaGlwICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmRpc2FibGUoKTtcclxuXHJcblx0XHQvKiBSZXNldCB0aGUgYXV0b2NvbXBsZXRlIGlucHV0IHRleHQgdmFsdWUgKi9cclxuXHRcdGlmIChpbnB1dCkge1xyXG5cdFx0XHRpbnB1dC52YWx1ZSA9ICcnO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhbGwgY2hpcHNcclxuXHQgKi9cclxuXHRwdWJsaWMgY2xlYXIodHJpZ2dlclN0YXRlQ2hhbmdlczogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuXHRcdC8qIFJlbW92ZSBrZXkgZnJvbSBjaGlwcyBhcnJheSAqL1xyXG5cdFx0dGhpcy52YWx1ZSA9IG51bGw7XHJcblx0XHR0aGlzLmNoaXBzID0gW107XHJcblxyXG5cdFx0LyogTWFyayB0aGUgY29udHJvbCBhcyB0b3VjaGVkICovXHJcblx0XHRpZiAodGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xyXG5cdFx0XHR0aGlzLm5nQ29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBSZXNldCB0aGUgdmFsdWUgKG5nTW9kZWwpICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LnNldFZhbHVlKFwiXCIpO1xyXG5cclxuXHRcdGlmICh0cmlnZ2VyU3RhdGVDaGFuZ2VzKSB7XHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBFbmFibGUgdGhlIGlucHV0ICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmVuYWJsZSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRmlsdGVycyBvcHRpb25zXHJcblx0ICogQHBhcmFtIHRleHQgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBmaWx0ZXJPcHRpb25zKHRleHQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXTtcclxuXHRcdGlmICh0aGlzLmVuZHBvaW50ICYmIHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+PSB0aGlzLnRlcm1NaW5sZW5ndGgpIHtcclxuXHRcdFx0LyogSW5pdCBwYXJhbXMgaWYgbnVsbCAqL1xyXG5cdFx0XHR0aGlzLl9wYXJhbXMgPSB0aGlzLl9wYXJhbXMgfHwge307XHJcblxyXG5cdFx0XHQvKiBBZGQgc2VhcmNoIHdvcmQgdG8gdGhlIHBhcmFtcyAqL1xyXG5cdFx0XHRpZiAodGhpcy5zZWFyY2hGaWVsZCAmJiB0aGlzLnNlYXJjaEZpZWxkcy5sZW5ndGggPD0gMCkge1xyXG5cdFx0XHRcdHZhciByZXN1bHQgPSBuZXcgUmVnRXhwKGAoXFxcXCR7dGhpcy5zZWFyY2hPcGVyYXRvcnMuam9pbignfFxcXFwnKX0pPyguKilgKS5leGVjKHRoaXMuc2VhcmNoRmllbGQpO1xyXG5cdFx0XHRcdHRoaXMuX3BhcmFtc1tyZXN1bHRbMl1dID0gYCR7cmVzdWx0WzFdID8gcmVzdWx0WzFdIDogJyd9JHt0ZXh0fWA7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEFkZCBzZWFyY2ggd29yZCB0byB0aGUgcGFyYW1zICovXHJcblx0XHRcdHRoaXMuc2VhcmNoRmllbGRzPy5tYXAoeCA9PiB4LnRyaW0oKSk/LmZvckVhY2goeCA9PiB7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IG5ldyBSZWdFeHAoYChcXFxcJHt0aGlzLnNlYXJjaE9wZXJhdG9ycy5qb2luKCd8XFxcXCcpfSk/KC4qKWApLmV4ZWMoeCk7XHJcblx0XHRcdFx0dGhpcy5fcGFyYW1zW3Jlc3VsdFsyXV0gPSBgJHtyZXN1bHRbMV0gPyByZXN1bHRbMV0gOiAnJ30ke3RleHR9YDtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBBZGQgbGltaXQgdG8gdGhlIHBhcmFtcyAqL1xyXG5cdFx0XHR0aGlzLl9wYXJhbXMubGltaXQgPSB0aGlzLmxpbWl0O1xyXG5cclxuXHRcdFx0LyogQWRkIHByb2plY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0XHRpZiAodGhpcy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdFx0dGhpcy5fcGFyYW1zLnByb2plY3Rpb24gPSB0aGlzLnByb2plY3Rpb247XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEdldCByZXN1bHRzIGZyb20gc2VydmVyICovXHJcblx0XHRcdHRoaXMubG9hZGluZyA9IHRydWU7XHJcblx0XHRcdHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbmRwb2ludH0ke3RoaXMucGF0aCB8fCAnJ31gLCB7IHBhcmFtczogVXRpbHMuY2xlYW5PYmplY3QodGhpcy5fcGFyYW1zKSB9KVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKHg6IGFueVtdKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0geDtcclxuXHRcdFx0XHRcdHRoaXMuZW1wdHlSZXN1bHQgPSAheCB8fCAheC5sZW5ndGg7XHJcblx0XHRcdFx0fSwgXyA9PiB0aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIGxhdW5jaCBidXR0b24gY2xpY2tcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlTGF1bmNoQ2xpY2tlZCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmNoaXBzPy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMub25MYXVuY2guZW1pdCh0aGlzLmNoaXBzWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCI8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3QgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCI+XHJcblx0PCEtLSAjcmVnaW9uIENoaXBzIC0tPlxyXG5cdDxuZy10ZW1wbGF0ZSBsZXQtY2hpcCBsZXQtZmlyc3Q9XCJmaXJzdFwiIGxldC1pbmRleD1cImluZGV4XCIgbmdGb3IgW25nRm9yT2ZdPVwiY2hpcHNcIj5cclxuXHRcdDxtYXQtYmFzaWMtY2hpcCBbc2VsZWN0YWJsZV09XCIhcmVhZG9ubHlcIiBbcmVtb3ZhYmxlXT1cIiFyZWFkb25seVwiIChyZW1vdmVkKT1cImNsZWFyZWQub2JzZXJ2ZXJzLmxlbmd0aD9jbGVhcmVkLmVtaXQodmFsdWUpOmNsZWFyKClcIiBkaXNhYmxlUmlwcGxlPlxyXG5cdFx0XHQ8c3BhbiBjbGFzcz1cInZkLWNoaXAtY29udGVudFwiPlxyXG5cdFx0XHRcdDxzcGFuICpuZ0lmPVwiIWNoaXBUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIj5cclxuXHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiIWF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiPnt7IGNoaXAgfX08L3NwYW4+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb246IGNoaXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNoaXBUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlwVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY2hpcDogY2hpcCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0PC9zcGFuPlxyXG5cdFx0XHQ8bWF0LWljb24gKm5nSWY9XCJvbkxhdW5jaD8ub2JzZXJ2ZXJzPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJ2ZC1jaGlwLWxhdW5jaFwiIFtuZ0NsYXNzXT1cInsncmVtb3ZhYmxlJzogIXJlYWRvbmx5fVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGhhbmRsZUxhdW5jaENsaWNrZWQoKVwiPmxhdW5jaDwvbWF0LWljb24+XHJcblx0XHRcdDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlICpuZ0lmPVwiIXJlYWRvbmx5XCI+YmFja3NwYWNlPC9tYXQtaWNvbj5cclxuXHRcdDwvbWF0LWJhc2ljLWNoaXA+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBTZWFyY2ggYm94IC0tPlxyXG5cdDxpbnB1dCBtYXRJbnB1dCBbaGlkZGVuXT1cInZhbHVlICYmICFlbXB0eVwiIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFtmb3JtQ29udHJvbF09XCJhdXRvQ29tcGxldGVDaGlwTGlzdFwiICNjaGlwSW5wdXQgLz5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBQcm9ncmVzcyAtLT5cclxuXHQ8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCIxOFwiICpuZ0lmPVwibG9hZGluZ1wiPjwvbWF0LXNwaW5uZXI+XHJcblx0PCEtLSAjZW5kcmVnaW9uIC0tPlxyXG48L21hdC1jaGlwLWxpc3Q+XHJcblxyXG48IS0tICNyZWdpb24gQXV0b2NvbXBsZXRlIC0tPlxyXG48bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIChvcHRpb25TZWxlY3RlZCk9XCJhZGRDaGlwKCRldmVudCwgY2hpcElucHV0KVwiPlxyXG5cdDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBsZXQtZmlyc3Q9XCJmaXJzdFwiIG5nRm9yIFtuZ0Zvck9mXT1cImZpbHRlcmVkT3B0aW9uc1wiPlxyXG5cdFx0PG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW1cIj5cclxuXHRcdFx0PHNwYW4gKm5nSWY9XCIhYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+e3sgaXRlbSB9fTwvc3Bhbj5cclxuXHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uOiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0PC9tYXQtb3B0aW9uPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcbjwvbWF0LWF1dG9jb21wbGV0ZT5cclxuPCEtLSAjZW5kcmVnaW9uIC0tPiJdfQ==
|
|
@@ -184,10 +184,10 @@ export class VdGenericFormComponent {
|
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
/** @nocollapse */ /** @nocollapse */ VdGenericFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdGenericFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
187
|
-
/** @nocollapse */ /** @nocollapse */ VdGenericFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: VdGenericFormComponent, selector: "vd-generic-form", inputs: { formGroup: "formGroup", fieldGroups: "fieldGroups", groupName: "groupName", separatorKeysCodes: "separatorKeysCodes" }, queries: [{ propertyName: "editorTemplate", first: true, predicate: VdEditorDirective, descendants: true }, { propertyName: "codeTemplate", first: true, predicate: VdCodeDirective, descendants: true }, { propertyName: "fileTemplate", first: true, predicate: VdFileDirective, descendants: true }, { propertyName: "customTemplate", first: true, predicate: VdCustomDirective, descendants: true }], ngImport: i0, template: "<div *ngIf=\"formGroup && fieldRows\" [formGroup]=\"formGroup\">\r\n <!-- #region Fields -->\r\n <div layout-gt-sm=\"row\" layout=\"column\" *ngFor=\"let fields of fieldRows\">\r\n <ng-container *ngFor=\"let field of fields\" [ngSwitch]=\"field.type\">\r\n <!-- #region Error handling -->\r\n <ng-template #fieldErrors>\r\n <div *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value, formGroup)\">\r\n <!-- #region Text input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Text\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input [type]=\"field.inputType\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" matInput [formControlName]=\"field.name\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Text area -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.TextArea\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <textarea matInput [formControlName]=\"field.name\" rows=\"field.rows||2\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\"></textarea>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Enum -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Enum\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-select [formControlName]=\"field.name\" [enum]=\"field.enumType\" [key]=\"field.optionValue\" [text]=\"field.optionText\" [multiple]=\"field.multiple\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <div [innerHTML]=\"field.triggerTemplate(trigger)\"></div>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <div [outerHTML]=\"field.optionTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdSelect -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdSelect\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-select [formControlName]=\"field.name\" [endpoint]=\"field.endpoint\" [params]=\"field.params\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [key]=\"field.optionValue\" [text]=\"field.optionText\" [multiple]=\"field.multiple\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <div [innerHTML]=\"field.triggerTemplate(trigger)\"></div>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <div [outerHTML]=\"field.optionTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Chips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Chips\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <mat-chip-list #chipList [formControlName]=\"field.name\" [disableControl]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-chip *ngFor=\"let chip of formGroup.controls[field.name]?.value\" (removed)=\"removeChip(field, chip)\" color=\"primary\" selectable=\"true\" selected>\r\n <span>{{chip}}</span>\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <input [placeholder]=\"field.header\" #chipInput [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matAutocomplete]=\"chipAutocomplete\" (input)=\"filterAutocomplete(field, chipInput)\" (matChipInputTokenEnd)=\"addChip(field, $event)\" autocomplete=\"off\">\r\n </mat-chip-list>\r\n <mat-autocomplete autoActiveFirstOption #chipAutocomplete=\"matAutocomplete\" (optionSelected)=\"autocompleteValueSelected(field, $event, chipInput)\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdChips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdChips\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-chips #vdChip [formControlName]=\"field.name\" [endpoint]=\"field.endpoint\" [searchField]=\"field.searchField\" [projection]=\"field.projection\" [key]=\"field.optionValue\" flex>\r\n <ng-template vd-chip let-chip=\"chip\" *ngIf=\"field.chipTemplate\">\r\n <div [outerHTML]=\"field.chipTemplate(chip)\"></div>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-option=\"option\" *ngIf=\"field.autocompleteTemplate\">\r\n <div [outerHTML]=\"field.autocompleteTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-hint *ngIf=\"vdChip.emptyResult\" class=\"tc-red-400\" i18n=\"@@noResultsFound\">No results found</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Select -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Select\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <mat-select [formControlName]=\"field.name\" [multiple]=\"field.multiple\" flex>\r\n <mat-option *ngFor=\"let option of field.options\" [value]=\"option.id\">{{option.name}}</mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Autocomplete -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Autocomplete\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input type=\"text\" matInput [formControlName]=\"field.name\" [matAutocomplete]=\"auto\" #autocompleteInput (input)=\"filterAutocomplete(field, autocompleteInput)\" autocomplete=\"off\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Date -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Date\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input matInput [formControlName]=\"field.name\" autocomplete=\"off\" [matDatepicker]=\"datePicker\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datePicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datePicker></mat-datepicker>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Checkbox -->\r\n <div *ngSwitchCase=\"FormFieldType.Checkbox\" layout-margin appearance=\"outline\" class=\"pad-bottom-xs\">\r\n <mat-checkbox [formControlName]=\"field.name\" [disableControl]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">{{field.header}}</mat-checkbox>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Editor -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Editor\">\r\n <ng-template *ngIf=\"editorTemplate?.templateRef\" [ngTemplateOutlet]=\"editorTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Code -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Code\">\r\n <ng-template *ngIf=\"codeTemplate?.templateRef\" [ngTemplateOutlet]=\"codeTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region File -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.File\">\r\n <ng-template *ngIf=\"fileTemplate?.templateRef\" [ngTemplateOutlet]=\"fileTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Custom\">\r\n <ng-template *ngIf=\"customTemplate?.templateRef\" [ngTemplateOutlet]=\"customTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <!-- #endregion -->\r\n</div>", styles: [""], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.VdSelectComponent, selector: "vd-select", inputs: ["multiple", "disabled", "sorted", "textPrefix", "endpoint", "params", "projection", "enum", "key", "text", "prefix", "options", "filteredOptions", "filterable", "cache", "sortBy", "mapper", "compareWith", "searchField"], outputs: ["change", "itemChange", "selected", "itemSelected", "launch"] }, { type: i3.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.VdChipsComponent, selector: "vd-chips", inputs: ["chips", "endpoint", "params", "projection", "path", "key", "searchField", "searchFields", "termMinlength", "limit", "debounce", "default"], outputs: ["initSelect", "selected", "cleared", "launch", "chipFocus"] }, { type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i9.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i9.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i12.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i11.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i13.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { type: i1.MatLabel, selector: "mat-label" }, { type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i12.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i12.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i12.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i12.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i15.VdSelectTriggerDirective, selector: "[vd-select-trigger]ng-template" }, { type: i16.VdSelectOptionDirective, selector: "[vd-select-option]ng-template" }, { type: i17.DisableControlDirective, selector: "[disableControl]", inputs: ["disableControl"] }, { type: i3.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3.MatChipRemove, selector: "[matChipRemove]" }, { type: i3.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i7.VdChipDirective, selector: "[vd-chip]ng-template" }, { type: i7.VdAutocompleteOptionDirective, selector: "[vd-autocomplete-option]ng-template" }, { type: i9.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i1.MatSuffix, selector: "[matSuffix]" }] });
|
|
187
|
+
/** @nocollapse */ /** @nocollapse */ VdGenericFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: VdGenericFormComponent, selector: "vd-generic-form", inputs: { formGroup: "formGroup", fieldGroups: "fieldGroups", groupName: "groupName", separatorKeysCodes: "separatorKeysCodes" }, queries: [{ propertyName: "editorTemplate", first: true, predicate: VdEditorDirective, descendants: true }, { propertyName: "codeTemplate", first: true, predicate: VdCodeDirective, descendants: true }, { propertyName: "fileTemplate", first: true, predicate: VdFileDirective, descendants: true }, { propertyName: "customTemplate", first: true, predicate: VdCustomDirective, descendants: true }], ngImport: i0, template: "<div *ngIf=\"formGroup && fieldRows\" [formGroup]=\"formGroup\">\r\n <!-- #region Fields -->\r\n <div layout-gt-sm=\"row\" layout=\"column\" *ngFor=\"let fields of fieldRows\">\r\n <ng-container *ngFor=\"let field of fields\" [ngSwitch]=\"field.type\">\r\n <!-- #region Error handling -->\r\n <ng-template #fieldErrors>\r\n <div *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value, formGroup)\">\r\n <!-- #region Text input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Text\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input [type]=\"field.inputType\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" matInput [formControlName]=\"field.name\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Text area -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.TextArea\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <textarea matInput [formControlName]=\"field.name\" rows=\"field.rows||2\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\"></textarea>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Enum -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Enum\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-select [formControlName]=\"field.name\" [enum]=\"field.enumType\" [key]=\"field.optionValue\" [text]=\"field.optionText\" [multiple]=\"field.multiple\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <div [innerHTML]=\"field.triggerTemplate(trigger)\"></div>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <div [outerHTML]=\"field.optionTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdSelect -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdSelect\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-select [formControlName]=\"field.name\" [endpoint]=\"field.endpoint\" [params]=\"field.params?field.params(formGroup.value, formGroup):{}\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [key]=\"field.optionValue\" [text]=\"field.optionText\" [multiple]=\"field.multiple\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <div [innerHTML]=\"field.triggerTemplate(trigger)\"></div>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <div [outerHTML]=\"field.optionTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Chips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Chips\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <mat-chip-list #chipList [formControlName]=\"field.name\" [disableControl]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-chip *ngFor=\"let chip of formGroup.controls[field.name]?.value\" (removed)=\"removeChip(field, chip)\" color=\"primary\" selectable=\"true\" selected>\r\n <span>{{chip}}</span>\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <input [placeholder]=\"field.header\" #chipInput [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matAutocomplete]=\"chipAutocomplete\" (input)=\"filterAutocomplete(field, chipInput)\" (matChipInputTokenEnd)=\"addChip(field, $event)\" autocomplete=\"off\">\r\n </mat-chip-list>\r\n <mat-autocomplete autoActiveFirstOption #chipAutocomplete=\"matAutocomplete\" (optionSelected)=\"autocompleteValueSelected(field, $event, chipInput)\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdChips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdChips\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-chips #vdChip [formControlName]=\"field.name\" [endpoint]=\"field.endpoint\" [params]=\"field.params?field.params(formGroup?.value, formGroup):{}\" [searchField]=\"field.searchField\" [projection]=\"field.projection\" [key]=\"field.optionValue\" flex>\r\n <ng-template vd-chip let-chip=\"chip\" *ngIf=\"field.chipTemplate\">\r\n <div [outerHTML]=\"field.chipTemplate(chip)\"></div>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-option=\"option\" *ngIf=\"field.autocompleteTemplate\">\r\n <div [outerHTML]=\"field.autocompleteTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-hint *ngIf=\"vdChip.emptyResult\" class=\"tc-red-400\" i18n=\"@@noResultsFound\">No results found</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Select -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Select\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <mat-select [formControlName]=\"field.name\" [multiple]=\"field.multiple\" flex>\r\n <mat-option *ngFor=\"let option of field.options\" [value]=\"option.id\">{{option.name}}</mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Autocomplete -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Autocomplete\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input type=\"text\" matInput [formControlName]=\"field.name\" [matAutocomplete]=\"auto\" #autocompleteInput (input)=\"filterAutocomplete(field, autocompleteInput)\" autocomplete=\"off\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Date -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Date\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input matInput [formControlName]=\"field.name\" autocomplete=\"off\" [matDatepicker]=\"datePicker\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datePicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datePicker></mat-datepicker>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Checkbox -->\r\n <div *ngSwitchCase=\"FormFieldType.Checkbox\" layout-margin appearance=\"outline\" class=\"pad-bottom-xs\">\r\n <mat-checkbox [formControlName]=\"field.name\" [disableControl]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">{{field.header}}</mat-checkbox>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Editor -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Editor\">\r\n <ng-template *ngIf=\"editorTemplate?.templateRef\" [ngTemplateOutlet]=\"editorTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Code -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Code\">\r\n <ng-template *ngIf=\"codeTemplate?.templateRef\" [ngTemplateOutlet]=\"codeTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region File -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.File\">\r\n <ng-template *ngIf=\"fileTemplate?.templateRef\" [ngTemplateOutlet]=\"fileTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Custom\">\r\n <ng-template *ngIf=\"customTemplate?.templateRef\" [ngTemplateOutlet]=\"customTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <!-- #endregion -->\r\n</div>", styles: [""], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.VdSelectComponent, selector: "vd-select", inputs: ["multiple", "disabled", "sorted", "textPrefix", "endpoint", "params", "projection", "enum", "key", "text", "prefix", "options", "filteredOptions", "filterable", "cache", "sortBy", "mapper", "compareWith", "searchField"], outputs: ["change", "itemChange", "selected", "itemSelected", "launch"] }, { type: i3.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.VdChipsComponent, selector: "vd-chips", inputs: ["chips", "endpoint", "params", "projection", "path", "key", "searchField", "searchFields", "termMinlength", "limit", "debounce", "default"], outputs: ["initSelect", "selected", "cleared", "launch", "chipFocus"] }, { type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i9.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { type: i9.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { type: i10.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i12.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i11.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i13.MatFormFieldReadonlyDirective, selector: "mat-form-field" }, { type: i1.MatLabel, selector: "mat-label" }, { type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i12.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i12.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i12.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i12.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }, { type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i15.VdSelectTriggerDirective, selector: "[vd-select-trigger]ng-template" }, { type: i16.VdSelectOptionDirective, selector: "[vd-select-option]ng-template" }, { type: i17.DisableControlDirective, selector: "[disableControl]", inputs: ["disableControl"] }, { type: i3.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i3.MatChipRemove, selector: "[matChipRemove]" }, { type: i3.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i7.VdChipDirective, selector: "[vd-chip]ng-template" }, { type: i7.VdAutocompleteOptionDirective, selector: "[vd-autocomplete-option]ng-template" }, { type: i9.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { type: i1.MatSuffix, selector: "[matSuffix]" }] });
|
|
188
188
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdGenericFormComponent, decorators: [{
|
|
189
189
|
type: Component,
|
|
190
|
-
args: [{ selector: 'vd-generic-form', template: "<div *ngIf=\"formGroup && fieldRows\" [formGroup]=\"formGroup\">\r\n <!-- #region Fields -->\r\n <div layout-gt-sm=\"row\" layout=\"column\" *ngFor=\"let fields of fieldRows\">\r\n <ng-container *ngFor=\"let field of fields\" [ngSwitch]=\"field.type\">\r\n <!-- #region Error handling -->\r\n <ng-template #fieldErrors>\r\n <div *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value, formGroup)\">\r\n <!-- #region Text input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Text\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input [type]=\"field.inputType\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" matInput [formControlName]=\"field.name\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Text area -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.TextArea\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <textarea matInput [formControlName]=\"field.name\" rows=\"field.rows||2\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\"></textarea>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Enum -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Enum\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-select [formControlName]=\"field.name\" [enum]=\"field.enumType\" [key]=\"field.optionValue\" [text]=\"field.optionText\" [multiple]=\"field.multiple\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <div [innerHTML]=\"field.triggerTemplate(trigger)\"></div>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <div [outerHTML]=\"field.optionTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdSelect -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdSelect\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-select [formControlName]=\"field.name\" [endpoint]=\"field.endpoint\" [params]=\"field.params\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [key]=\"field.optionValue\" [text]=\"field.optionText\" [multiple]=\"field.multiple\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <div [innerHTML]=\"field.triggerTemplate(trigger)\"></div>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <div [outerHTML]=\"field.optionTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Chips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Chips\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <mat-chip-list #chipList [formControlName]=\"field.name\" [disableControl]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-chip *ngFor=\"let chip of formGroup.controls[field.name]?.value\" (removed)=\"removeChip(field, chip)\" color=\"primary\" selectable=\"true\" selected>\r\n <span>{{chip}}</span>\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <input [placeholder]=\"field.header\" #chipInput [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matAutocomplete]=\"chipAutocomplete\" (input)=\"filterAutocomplete(field, chipInput)\" (matChipInputTokenEnd)=\"addChip(field, $event)\" autocomplete=\"off\">\r\n </mat-chip-list>\r\n <mat-autocomplete autoActiveFirstOption #chipAutocomplete=\"matAutocomplete\" (optionSelected)=\"autocompleteValueSelected(field, $event, chipInput)\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdChips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdChips\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-chips #vdChip [formControlName]=\"field.name\" [endpoint]=\"field.endpoint\" [searchField]=\"field.searchField\" [projection]=\"field.projection\" [key]=\"field.optionValue\" flex>\r\n <ng-template vd-chip let-chip=\"chip\" *ngIf=\"field.chipTemplate\">\r\n <div [outerHTML]=\"field.chipTemplate(chip)\"></div>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-option=\"option\" *ngIf=\"field.autocompleteTemplate\">\r\n <div [outerHTML]=\"field.autocompleteTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-hint *ngIf=\"vdChip.emptyResult\" class=\"tc-red-400\" i18n=\"@@noResultsFound\">No results found</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Select -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Select\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <mat-select [formControlName]=\"field.name\" [multiple]=\"field.multiple\" flex>\r\n <mat-option *ngFor=\"let option of field.options\" [value]=\"option.id\">{{option.name}}</mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Autocomplete -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Autocomplete\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input type=\"text\" matInput [formControlName]=\"field.name\" [matAutocomplete]=\"auto\" #autocompleteInput (input)=\"filterAutocomplete(field, autocompleteInput)\" autocomplete=\"off\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Date -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Date\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input matInput [formControlName]=\"field.name\" autocomplete=\"off\" [matDatepicker]=\"datePicker\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datePicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datePicker></mat-datepicker>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Checkbox -->\r\n <div *ngSwitchCase=\"FormFieldType.Checkbox\" layout-margin appearance=\"outline\" class=\"pad-bottom-xs\">\r\n <mat-checkbox [formControlName]=\"field.name\" [disableControl]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">{{field.header}}</mat-checkbox>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Editor -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Editor\">\r\n <ng-template *ngIf=\"editorTemplate?.templateRef\" [ngTemplateOutlet]=\"editorTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Code -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Code\">\r\n <ng-template *ngIf=\"codeTemplate?.templateRef\" [ngTemplateOutlet]=\"codeTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region File -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.File\">\r\n <ng-template *ngIf=\"fileTemplate?.templateRef\" [ngTemplateOutlet]=\"fileTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Custom\">\r\n <ng-template *ngIf=\"customTemplate?.templateRef\" [ngTemplateOutlet]=\"customTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <!-- #endregion -->\r\n</div>", styles: [""] }]
|
|
190
|
+
args: [{ selector: 'vd-generic-form', template: "<div *ngIf=\"formGroup && fieldRows\" [formGroup]=\"formGroup\">\r\n <!-- #region Fields -->\r\n <div layout-gt-sm=\"row\" layout=\"column\" *ngFor=\"let fields of fieldRows\">\r\n <ng-container *ngFor=\"let field of fields\" [ngSwitch]=\"field.type\">\r\n <!-- #region Error handling -->\r\n <ng-template #fieldErrors>\r\n <div *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value, formGroup)\">\r\n <!-- #region Text input -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Text\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input [type]=\"field.inputType\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" matInput [formControlName]=\"field.name\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Text area -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.TextArea\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <textarea matInput [formControlName]=\"field.name\" rows=\"field.rows||2\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\"></textarea>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Enum -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Enum\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-select [formControlName]=\"field.name\" [enum]=\"field.enumType\" [key]=\"field.optionValue\" [text]=\"field.optionText\" [multiple]=\"field.multiple\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <div [innerHTML]=\"field.triggerTemplate(trigger)\"></div>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <div [outerHTML]=\"field.optionTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdSelect -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdSelect\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-select [formControlName]=\"field.name\" [endpoint]=\"field.endpoint\" [params]=\"field.params?field.params(formGroup.value, formGroup):{}\" [projection]=\"field.projection\" [mapper]=\"field.mapper\" [compareWith]=\"field.compareWith\" [key]=\"field.optionValue\" [text]=\"field.optionText\" [multiple]=\"field.multiple\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\" flex>\r\n <ng-template vd-select-trigger let-trigger=\"trigger\" *ngIf=\"field.triggerTemplate\">\r\n <div [innerHTML]=\"field.triggerTemplate(trigger)\"></div>\r\n </ng-template>\r\n <ng-template vd-select-option let-option=\"option\" *ngIf=\"field.optionTemplate\">\r\n <div [outerHTML]=\"field.optionTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Chips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Chips\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <mat-chip-list #chipList [formControlName]=\"field.name\" [disableControl]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-chip *ngFor=\"let chip of formGroup.controls[field.name]?.value\" (removed)=\"removeChip(field, chip)\" color=\"primary\" selectable=\"true\" selected>\r\n <span>{{chip}}</span>\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <input [placeholder]=\"field.header\" #chipInput [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matAutocomplete]=\"chipAutocomplete\" (input)=\"filterAutocomplete(field, chipInput)\" (matChipInputTokenEnd)=\"addChip(field, $event)\" autocomplete=\"off\">\r\n </mat-chip-list>\r\n <mat-autocomplete autoActiveFirstOption #chipAutocomplete=\"matAutocomplete\" (optionSelected)=\"autocompleteValueSelected(field, $event, chipInput)\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdChips -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdChips\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-chips #vdChip [formControlName]=\"field.name\" [endpoint]=\"field.endpoint\" [params]=\"field.params?field.params(formGroup?.value, formGroup):{}\" [searchField]=\"field.searchField\" [projection]=\"field.projection\" [key]=\"field.optionValue\" flex>\r\n <ng-template vd-chip let-chip=\"chip\" *ngIf=\"field.chipTemplate\">\r\n <div [outerHTML]=\"field.chipTemplate(chip)\"></div>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-option=\"option\" *ngIf=\"field.autocompleteTemplate\">\r\n <div [outerHTML]=\"field.autocompleteTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-hint *ngIf=\"vdChip.emptyResult\" class=\"tc-red-400\" i18n=\"@@noResultsFound\">No results found</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Select -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Select\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <mat-select [formControlName]=\"field.name\" [multiple]=\"field.multiple\" flex>\r\n <mat-option *ngFor=\"let option of field.options\" [value]=\"option.id\">{{option.name}}</mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Autocomplete -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Autocomplete\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input type=\"text\" matInput [formControlName]=\"field.name\" [matAutocomplete]=\"auto\" #autocompleteInput (input)=\"filterAutocomplete(field, autocompleteInput)\" autocomplete=\"off\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Date -->\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Date\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input matInput [formControlName]=\"field.name\" autocomplete=\"off\" [matDatepicker]=\"datePicker\" [readonly]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datePicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datePicker></mat-datepicker>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Checkbox -->\r\n <div *ngSwitchCase=\"FormFieldType.Checkbox\" layout-margin appearance=\"outline\" class=\"pad-bottom-xs\">\r\n <mat-checkbox [formControlName]=\"field.name\" [disableControl]=\"field.readonly && field.readonly(formGroup?.value, formGroup)\">{{field.header}}</mat-checkbox>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Editor -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Editor\">\r\n <ng-template *ngIf=\"editorTemplate?.templateRef\" [ngTemplateOutlet]=\"editorTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Code -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Code\">\r\n <ng-template *ngIf=\"codeTemplate?.templateRef\" [ngTemplateOutlet]=\"codeTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region File -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.File\">\r\n <ng-template *ngIf=\"fileTemplate?.templateRef\" [ngTemplateOutlet]=\"fileTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom -->\r\n <ng-container *ngSwitchCase=\"FormFieldType.Custom\">\r\n <ng-template *ngIf=\"customTemplate?.templateRef\" [ngTemplateOutlet]=\"customTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <!-- #endregion -->\r\n</div>", styles: [""] }]
|
|
191
191
|
}], propDecorators: { formGroup: [{
|
|
192
192
|
type: Input
|
|
193
193
|
}], fieldGroups: [{
|
|
@@ -209,4 +209,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
|
|
|
209
209
|
type: ContentChild,
|
|
210
210
|
args: [VdCustomDirective]
|
|
211
211
|
}] } });
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2dlbmVyaWMtZm9ybS9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUk1RDs7R0FFRztBQUVILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUFTO0lBQzVDLFlBQVksV0FBNkIsRUFBRSxnQkFBa0M7UUFDekUsS0FBSyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O29KQUhRLGlCQUFpQjt3SUFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7O0FBT2pEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWdCLFNBQVEsU0FBUztJQUMxQyxZQUFZLFdBQTZCLEVBQUUsZ0JBQWtDO1FBQ3pFLEtBQUssQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN6QyxDQUFDOztrSkFIUSxlQUFlO3NJQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRTs7QUFPL0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxTQUFTO0lBQzFDLFlBQVksV0FBNkIsRUFBRSxnQkFBa0M7UUFDekUsS0FBSyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O2tKQUhRLGVBQWU7c0lBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFOztBQU8vQzs7R0FFRztBQUVILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUFTO0lBQzVDLFlBQVksV0FBNkIsRUFBRSxnQkFBa0M7UUFDekUsS0FBSyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O29KQUhRLGlCQUFpQjt3SUFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7O0FBWWpELE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUF3Qkk7O1dBRUc7UUFFSSx1QkFBa0IsR0FBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQU9yRDs7V0FFRztRQUNJLGtCQUFhLEdBQXlCLGFBQWEsQ0FBQztRQTBCM0Q7O1dBRUc7UUFDSSxnQ0FBMkIsR0FBTyxFQUFFLENBQUM7S0F1Ry9DO0lBckdHOzs7Ozs7T0FNRztJQUNILFFBQVE7UUFDSixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBRXBHLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsRixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzFGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxrQkFBa0IsQ0FBQyxLQUEwQixFQUFFLEtBQVU7UUFDNUQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9KLENBQUM7SUFFRDs7OztPQUlHO0lBQ0kseUJBQXlCLENBQUMsS0FBMEIsRUFBRSxLQUFtQyxFQUFFLGNBQW1CO1FBQ2pILElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsY0FBYyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsS0FBMEIsRUFBRSxLQUF3QjtRQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsS0FBSyxDQUFDLFNBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxLQUEwQixFQUFFLElBQVM7UUFDbkQsK0NBQStDO1FBQy9DLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCwrQkFBK0I7UUFDL0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQzNDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxRQUFRLENBQUMsS0FBMEIsRUFBRSxLQUFhO1FBQ3RELCtDQUErQztRQUMvQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkQsK0JBQStCO1FBQy9CLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUU7WUFDbEIsUUFBUSxLQUFLLENBQUMsU0FBUyxFQUFFO2dCQUNyQixLQUFLLFFBQVE7b0JBQ1QsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3QixJQUFJLE1BQU0sRUFBRTt3QkFDUixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDOUI7b0JBQ0QsTUFBTTtnQkFFVixLQUFLLE9BQU87b0JBQ1IsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM5QixJQUFJLEtBQUssRUFBRTt3QkFDUCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDN0I7b0JBQ0QsTUFBTTtnQkFFVjtvQkFDSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsTUFBTTthQUNiO1lBRUQsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDM0M7SUFDTCxDQUFDOzt5SkFwS1Esc0JBQXNCOzZJQUF0QixzQkFBc0IscU9Bc0NqQixpQkFBaUIsK0VBTWpCLGVBQWUsK0VBTWYsZUFBZSxpRkFNZixpQkFBaUIsZ0RDL0duQyxteGFBMExNOzJGRG5JTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksaUJBQWlCOzhCQVNwQixTQUFTO3NCQURmLEtBQUs7Z0JBT0MsV0FBVztzQkFEakIsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0Msa0JBQWtCO3NCQUR4QixLQUFLO2dCQWlCQyxjQUFjO3NCQURwQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFPeEIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxlQUFlO2dCQU90QixZQUFZO3NCQURsQixZQUFZO3VCQUFDLGVBQWU7Z0JBT3RCLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgQ2RrUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvZm9ybS1maWVsZC10eXBlJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWZpZWxkLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRHcm91cCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwJztcclxuXHJcbi8qKlxyXG4gKiBWZEVkaXRvckRpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWVkaXRvcl1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkRWRpdG9yRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogVmRDb2RlRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtY29kZV1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkQ29kZURpcmVjdGl2ZSBleHRlbmRzIENka1BvcnRhbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFZkRmlsZURpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWZpbGVdbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZEZpbGVEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWZEN1c3RvbURpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWN1c3RvbV1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkQ3VzdG9tRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmQtZ2VuZXJpYy1mb3JtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkR2VuZXJpY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBmb3JtOiBGb3JtR3JvdXBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZpZWxkR3JvdXBzOiBGb3JtRmllbGRHcm91cFtdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZmllbGRHcm91cHM6IEZvcm1GaWVsZEdyb3VwW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHcm91cCBuYW1lXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ3JvdXBOYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmllbGRSb3dzOiBGb3JtRmllbGREZWZpbml0aW9uW11cclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpZWxkUm93czogW0Zvcm1GaWVsZERlZmluaXRpb25bXV07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtRmllbGRUeXBlOiB0eXBlb2YgRm9ybUZpZWxkVHlwZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgRm9ybUZpZWxkVHlwZTogdHlwZW9mIEZvcm1GaWVsZFR5cGUgPSBGb3JtRmllbGRUeXBlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWRpdG9yIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRFZGl0b3JEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgZWRpdG9yVGVtcGxhdGU6IFZkRWRpdG9yRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29kZSB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFZkQ29kZURpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjb2RlVGVtcGxhdGU6IFZkQ29kZURpcmVjdGl2ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbGUgdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZEZpbGVEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgZmlsZVRlbXBsYXRlOiBWZEZpbGVEaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZEN1c3RvbURpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjdXN0b21UZW1wbGF0ZTogVmRDdXN0b21EaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJkIG9wdGlvbnMgZm9yIGF1dG9jb21wbGV0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zOiB7fSA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxyXG4gICAgICogZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0b3IgaGFzIGNoZWNrZWQgdGhlIGRpcmVjdGl2ZSdzXHJcbiAgICAgKiBkYXRhLWJvdW5kIHByb3BlcnRpZXMgZm9yIHRoZSBmaXJzdCB0aW1lLFxyXG4gICAgICogYW5kIGJlZm9yZSBhbnkgb2YgdGhlIHZpZXcgb3IgY29udGVudCBjaGlsZHJlbiBoYXZlIGJlZW4gY2hlY2tlZC5cclxuICAgICAqIEl0IGlzIGludm9rZWQgb25seSBvbmNlIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBpbnN0YW50aWF0ZWQuXHJcbiAgICAgKi9cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmllbGRSb3dzID0gdGhpcy5maWVsZEdyb3Vwcz8uZmlsdGVyKHggPT4geC5uYW1lPy50cmltKCkgPT0gdGhpcy5ncm91cE5hbWU/LnRyaW0oKSlbMF0/Lmdyb3VwcztcclxuXHJcbiAgICAgICAgLyogU3Vic2NyaWUgdG8gY2hhbmdlIGV2ZW50ICovXHJcbiAgICAgICAgdGhpcy5maWVsZFJvd3M/LnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKT8uZmlsdGVyKHkgPT4geS5jaGFuZ2UpPy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoeC5uYW1lKT8udmFsdWVDaGFuZ2VzPy5zdWJzY3JpYmUoeSA9PiB4LmNoYW5nZSh5LCB0aGlzLmZvcm1Hcm91cCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBhdXRvY29tcGxldGUgZXZlbnRcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbHRlckF1dG9jb21wbGV0ZShmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWVdID0gZmllbGQub3B0aW9ucz8uZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnZhbHVlPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgY2hpcCB3aGVuIGEgYXV0b2NvbXBsZXRlIHZhbHVlIGlzIHNlbGVjdGVkXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVWYWx1ZVNlbGVjdGVkKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCwgY2hpcElucHV0RXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2FkZENoaXAoZmllbGQsIGV2ZW50Lm9wdGlvbi52aWV3VmFsdWUpO1xyXG4gICAgICAgIGNoaXBJbnB1dEV2ZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgY2hpcFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fYWRkQ2hpcChmaWVsZCwgZXZlbnQudmFsdWUpO1xyXG4gICAgICAgIGV2ZW50LmNoaXBJbnB1dCEuY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgYSBjaGlwXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKiBAcGFyYW0gY2hpcCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlbW92ZUNoaXAoZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGNoaXA6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIC8qIEdldCB0aGUgZm9ybSBjb250cm9sIHVzaW5nIHRoZSBmaWVsZCBuYW1lICovXHJcbiAgICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cD8uY29udHJvbHNbZmllbGQubmFtZV07XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgaW5kZXggb2YgdGhlIGNoaXAgKi9cclxuICAgICAgICBjb25zdCBpbmRleCA9IGNvbnRyb2wudmFsdWUuaW5kZXhPZihjaGlwKTtcclxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICBjb250cm9sLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWRkQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIC8qIEdldCB0aGUgZm9ybSBjb250cm9sIHVzaW5nIHRoZSBmaWVsZCBuYW1lICovXHJcbiAgICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cD8uY29udHJvbHNbZmllbGQubmFtZV07XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgdmFsdWUgb2YgdGhlIGNoaXAgKi9cclxuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSB8fCAnJykudHJpbSgpO1xyXG4gICAgICAgIGlmIChjb250cm9sICYmIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuaW5wdXRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2gobnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvYXQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmbG9hdCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmbG9hdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2goZmxvYXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPGRpdiAqbmdJZj1cImZvcm1Hcm91cCAmJiBmaWVsZFJvd3NcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxyXG4gICAgPCEtLSAjcmVnaW9uIEZpZWxkcyAtLT5cclxuICAgIDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCIgKm5nRm9yPVwibGV0IGZpZWxkcyBvZiBmaWVsZFJvd3NcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZHNcIiBbbmdTd2l0Y2hdPVwiZmllbGQudHlwZVwiPlxyXG4gICAgICAgICAgICA8IS0tICNyZWdpb24gRXJyb3IgaGFuZGxpbmcgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmllbGRFcnJvcnM+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC5oaWRlIHx8ICFmaWVsZC5oaWRlKGZvcm1Hcm91cD8udmFsdWUsIGZvcm1Hcm91cClcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBUZXh0IGlucHV0IC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlRleHRcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmhlYWRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFt0eXBlXT1cImZpZWxkLmlucHV0VHlwZVwiIFttaW5sZW5ndGhdPVwiZmllbGQubWluTGVuZ3RofHxudWxsXCIgW21heGxlbmd0aF09XCJmaWVsZC5tYXhMZW5ndGh8fG51bGxcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybUdyb3VwPy52YWx1ZSwgZm9ybUdyb3VwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkRXJyb3JzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBUZXh0IGFyZWEgLS0+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVGV4dEFyZWFcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmhlYWRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIHJvd3M9XCJmaWVsZC5yb3dzfHwyXCIgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1Hcm91cD8udmFsdWUsIGZvcm1Hcm91cClcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkRXJyb3JzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBFbnVtIC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkVudW1cIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmhlYWRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkLXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbZW51bV09XCJmaWVsZC5lbnVtVHlwZVwiIFtrZXldPVwiZmllbGQub3B0aW9uVmFsdWVcIiBbdGV4dF09XCJmaWVsZC5vcHRpb25UZXh0XCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1Hcm91cD8udmFsdWUsIGZvcm1Hcm91cClcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LXRyaWdnZXIgbGV0LXRyaWdnZXI9XCJ0cmlnZ2VyXCIgKm5nSWY9XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGUodHJpZ2dlcilcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQub3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW291dGVySFRNTF09XCJmaWVsZC5vcHRpb25UZW1wbGF0ZShvcHRpb24pXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRFcnJvcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFZkU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlZkU2VsZWN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5oZWFkZXJ9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW2VuZHBvaW50XT1cImZpZWxkLmVuZHBvaW50XCIgW3BhcmFtc109XCJmaWVsZC5wYXJhbXNcIiBbcHJvamVjdGlvbl09XCJmaWVsZC5wcm9qZWN0aW9uXCIgW21hcHBlcl09XCJmaWVsZC5tYXBwZXJcIiBbY29tcGFyZVdpdGhdPVwiZmllbGQuY29tcGFyZVdpdGhcIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3RleHRdPVwiZmllbGQub3B0aW9uVGV4dFwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtR3JvdXA/LnZhbHVlLCBmb3JtR3JvdXApXCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC10cmlnZ2VyIGxldC10cmlnZ2VyPVwidHJpZ2dlclwiICpuZ0lmPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlKHRyaWdnZXIpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3Qtb3B0aW9uIGxldC1vcHRpb249XCJvcHRpb25cIiAqbmdJZj1cImZpZWxkLm9wdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtvdXRlckhUTUxdPVwiZmllbGQub3B0aW9uVGVtcGxhdGUob3B0aW9uKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkRXJyb3JzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDaGlwcyAtLT5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5DaGlwc1wiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIGxheW91dC1tYXJnaW4gYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQuaGVhZGVyfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW2Rpc2FibGVDb250cm9sXT1cImZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1Hcm91cD8udmFsdWUsIGZvcm1Hcm91cClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCBjaGlwIG9mIGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lXT8udmFsdWVcIiAocmVtb3ZlZCk9XCJyZW1vdmVDaGlwKGZpZWxkLCBjaGlwKVwiIGNvbG9yPVwicHJpbWFyeVwiIHNlbGVjdGFibGU9XCJ0cnVlXCIgc2VsZWN0ZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2NoaXB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cImZpZWxkLmhlYWRlclwiICNjaGlwSW5wdXQgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImNoaXBBdXRvY29tcGxldGVcIiAoaW5wdXQpPVwiZmlsdGVyQXV0b2NvbXBsZXRlKGZpZWxkLCBjaGlwSW5wdXQpXCIgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZENoaXAoZmllbGQsICRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNjaGlwQXV0b2NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cImF1dG9jb21wbGV0ZVZhbHVlU2VsZWN0ZWQoZmllbGQsICRldmVudCwgY2hpcElucHV0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGF1dG9jb21wbGV0ZUZpbHRlcmVkT3B0aW9uc1tmaWVsZC5uYW1lXVwiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkRXJyb3JzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBWZENoaXBzIC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlZkQ2hpcHNcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmhlYWRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkLWNoaXBzICN2ZENoaXAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW2VuZHBvaW50XT1cImZpZWxkLmVuZHBvaW50XCIgW3NlYXJjaEZpZWxkXT1cImZpZWxkLnNlYXJjaEZpZWxkXCIgW3Byb2plY3Rpb25dPVwiZmllbGQucHJvamVjdGlvblwiIFtrZXldPVwiZmllbGQub3B0aW9uVmFsdWVcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtY2hpcCBsZXQtY2hpcD1cImNoaXBcIiAqbmdJZj1cImZpZWxkLmNoaXBUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbb3V0ZXJIVE1MXT1cImZpZWxkLmNoaXBUZW1wbGF0ZShjaGlwKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtYXV0b2NvbXBsZXRlLW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5hdXRvY29tcGxldGVUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbb3V0ZXJIVE1MXT1cImZpZWxkLmF1dG9jb21wbGV0ZVRlbXBsYXRlKG9wdGlvbilcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3ZkLWNoaXBzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwidmRDaGlwLmVtcHR5UmVzdWx0XCIgY2xhc3M9XCJ0Yy1yZWQtNDAwXCIgaTE4bj1cIkBAbm9SZXN1bHRzRm91bmRcIj5ObyByZXN1bHRzIGZvdW5kPC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRFcnJvcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFNlbGVjdCAtLT5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5TZWxlY3RcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmhlYWRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWVsZC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPnt7b3B0aW9uLm5hbWV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRFcnJvcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEF1dG9jb21wbGV0ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5BdXRvY29tcGxldGVcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmhlYWRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgI2F1dG9jb21wbGV0ZUlucHV0IChpbnB1dCk9XCJmaWx0ZXJBdXRvY29tcGxldGUoZmllbGQsIGF1dG9jb21wbGV0ZUlucHV0KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtR3JvdXA/LnZhbHVlLCBmb3JtR3JvdXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWVdXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRFcnJvcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIERhdGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRGF0ZVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIGxheW91dC1tYXJnaW4gYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQuaGVhZGVyfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtR3JvdXA/LnZhbHVlLCBmb3JtR3JvdXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkYXRlUGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNkYXRlUGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRFcnJvcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5DaGVja2JveFwiIGxheW91dC1tYXJnaW4gYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInBhZC1ib3R0b20teHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFtkaXNhYmxlQ29udHJvbF09XCJmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtR3JvdXA/LnZhbHVlLCBmb3JtR3JvdXApXCI+e3tmaWVsZC5oZWFkZXJ9fTwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEVkaXRvciAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRWRpdG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiZWRpdG9yVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdG9yVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBmb3JtR3JvdXA6IGZvcm1Hcm91cCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDb2RlIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5Db2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY29kZVRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvZGVUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGZvcm1Hcm91cDogZm9ybUdyb3VwIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEZpbGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJmaWxlVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsZVRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQ3VzdG9tIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5DdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjdXN0b21UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGZvcm1Hcm91cDogZm9ybUdyb3VwIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbjwvZGl2PiJdfQ==
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2dlbmVyaWMtZm9ybS9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUk1RDs7R0FFRztBQUVILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxTQUFTO0lBQzVDLFlBQVksV0FBNkIsRUFBRSxnQkFBa0M7UUFDekUsS0FBSyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O29KQUhRLGlCQUFpQjt3SUFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7O0FBT2pEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWdCLFNBQVEsU0FBUztJQUMxQyxZQUFZLFdBQTZCLEVBQUUsZ0JBQWtDO1FBQ3pFLEtBQUssQ0FBQyxXQUFX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RUFBRTt3QkFDUixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDOUI7b0JBQ0QsTUFBTTtnQkFFVixLQUFLLE9BQU87b0JBQ1IsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM5QixJQUFJLEtBQUssRUFBRTt3QkFDUCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDN0I7b0JBQ0QsTUFBTTtnQkFFVjtvQkFDSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsTUFBTTthQUNiO1lBRUQsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDM0M7SUFDTCxDQUFDOzt5SkFwS1Esc0JBQXNCOzZJQUF0QixzQkFBc0IscU9Bc0NqQixpQkFBaUIsK0VBTWpCLGVBQWUsK0VBTWYsZUFBZSxpRkFNZixpQkFBaUIsZ0RDL0duQyxzNGFBMExNOzJGRG5JTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksaUJBQWlCOzhCQVNwQixTQUFTO3NCQURmLEtBQUs7Z0JBT0MsV0FBVztzQkFEakIsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0Msa0JBQWtCO3NCQUR4QixLQUFLO2dCQWlCQyxjQUFjO3NCQURwQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFPeEIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxlQUFlO2dCQU90QixZQUFZO3NCQURsQixZQUFZO3VCQUFDLGVBQWU7Z0JBT3RCLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgQ2RrUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvZm9ybS1maWVsZC10eXBlJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWZpZWxkLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRHcm91cCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwJztcclxuXHJcbi8qKlxyXG4gKiBWZEVkaXRvckRpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWVkaXRvcl1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkRWRpdG9yRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogVmRDb2RlRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtY29kZV1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkQ29kZURpcmVjdGl2ZSBleHRlbmRzIENka1BvcnRhbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFZkRmlsZURpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWZpbGVdbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZEZpbGVEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWZEN1c3RvbURpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWN1c3RvbV1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkQ3VzdG9tRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmQtZ2VuZXJpYy1mb3JtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkR2VuZXJpY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBmb3JtOiBGb3JtR3JvdXBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZpZWxkR3JvdXBzOiBGb3JtRmllbGRHcm91cFtdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZmllbGRHcm91cHM6IEZvcm1GaWVsZEdyb3VwW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHcm91cCBuYW1lXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ3JvdXBOYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmllbGRSb3dzOiBGb3JtRmllbGREZWZpbml0aW9uW11cclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpZWxkUm93czogW0Zvcm1GaWVsZERlZmluaXRpb25bXV07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtRmllbGRUeXBlOiB0eXBlb2YgRm9ybUZpZWxkVHlwZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgRm9ybUZpZWxkVHlwZTogdHlwZW9mIEZvcm1GaWVsZFR5cGUgPSBGb3JtRmllbGRUeXBlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWRpdG9yIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRFZGl0b3JEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgZWRpdG9yVGVtcGxhdGU6IFZkRWRpdG9yRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29kZSB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFZkQ29kZURpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjb2RlVGVtcGxhdGU6IFZkQ29kZURpcmVjdGl2ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbGUgdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZEZpbGVEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgZmlsZVRlbXBsYXRlOiBWZEZpbGVEaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZEN1c3RvbURpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjdXN0b21UZW1wbGF0ZTogVmRDdXN0b21EaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJkIG9wdGlvbnMgZm9yIGF1dG9jb21wbGV0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zOiB7fSA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxyXG4gICAgICogZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0b3IgaGFzIGNoZWNrZWQgdGhlIGRpcmVjdGl2ZSdzXHJcbiAgICAgKiBkYXRhLWJvdW5kIHByb3BlcnRpZXMgZm9yIHRoZSBmaXJzdCB0aW1lLFxyXG4gICAgICogYW5kIGJlZm9yZSBhbnkgb2YgdGhlIHZpZXcgb3IgY29udGVudCBjaGlsZHJlbiBoYXZlIGJlZW4gY2hlY2tlZC5cclxuICAgICAqIEl0IGlzIGludm9rZWQgb25seSBvbmNlIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBpbnN0YW50aWF0ZWQuXHJcbiAgICAgKi9cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZmllbGRSb3dzID0gdGhpcy5maWVsZEdyb3Vwcz8uZmlsdGVyKHggPT4geC5uYW1lPy50cmltKCkgPT0gdGhpcy5ncm91cE5hbWU/LnRyaW0oKSlbMF0/Lmdyb3VwcztcclxuXHJcbiAgICAgICAgLyogU3Vic2NyaWUgdG8gY2hhbmdlIGV2ZW50ICovXHJcbiAgICAgICAgdGhpcy5maWVsZFJvd3M/LnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKT8uZmlsdGVyKHkgPT4geS5jaGFuZ2UpPy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoeC5uYW1lKT8udmFsdWVDaGFuZ2VzPy5zdWJzY3JpYmUoeSA9PiB4LmNoYW5nZSh5LCB0aGlzLmZvcm1Hcm91cCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBhdXRvY29tcGxldGUgZXZlbnRcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbHRlckF1dG9jb21wbGV0ZShmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWVdID0gZmllbGQub3B0aW9ucz8uZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnZhbHVlPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgY2hpcCB3aGVuIGEgYXV0b2NvbXBsZXRlIHZhbHVlIGlzIHNlbGVjdGVkXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVWYWx1ZVNlbGVjdGVkKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCwgY2hpcElucHV0RXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2FkZENoaXAoZmllbGQsIGV2ZW50Lm9wdGlvbi52aWV3VmFsdWUpO1xyXG4gICAgICAgIGNoaXBJbnB1dEV2ZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgY2hpcFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fYWRkQ2hpcChmaWVsZCwgZXZlbnQudmFsdWUpO1xyXG4gICAgICAgIGV2ZW50LmNoaXBJbnB1dCEuY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgYSBjaGlwXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKiBAcGFyYW0gY2hpcCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlbW92ZUNoaXAoZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGNoaXA6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIC8qIEdldCB0aGUgZm9ybSBjb250cm9sIHVzaW5nIHRoZSBmaWVsZCBuYW1lICovXHJcbiAgICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cD8uY29udHJvbHNbZmllbGQubmFtZV07XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgaW5kZXggb2YgdGhlIGNoaXAgKi9cclxuICAgICAgICBjb25zdCBpbmRleCA9IGNvbnRyb2wudmFsdWUuaW5kZXhPZihjaGlwKTtcclxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICBjb250cm9sLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWRkQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIC8qIEdldCB0aGUgZm9ybSBjb250cm9sIHVzaW5nIHRoZSBmaWVsZCBuYW1lICovXHJcbiAgICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cD8uY29udHJvbHNbZmllbGQubmFtZV07XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgdmFsdWUgb2YgdGhlIGNoaXAgKi9cclxuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSB8fCAnJykudHJpbSgpO1xyXG4gICAgICAgIGlmIChjb250cm9sICYmIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuaW5wdXRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2gobnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvYXQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmbG9hdCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmbG9hdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2goZmxvYXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPGRpdiAqbmdJZj1cImZvcm1Hcm91cCAmJiBmaWVsZFJvd3NcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxyXG4gICAgPCEtLSAjcmVnaW9uIEZpZWxkcyAtLT5cclxuICAgIDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCIgKm5nRm9yPVwibGV0IGZpZWxkcyBvZiBmaWVsZFJvd3NcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZHNcIiBbbmdTd2l0Y2hdPVwiZmllbGQudHlwZVwiPlxyXG4gICAgICAgICAgICA8IS0tICNyZWdpb24gRXJyb3IgaGFuZGxpbmcgLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmllbGRFcnJvcnM+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWVsZC5oaWRlIHx8ICFmaWVsZC5oaWRlKGZvcm1Hcm91cD8udmFsdWUsIGZvcm1Hcm91cClcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBUZXh0IGlucHV0IC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlRleHRcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmhlYWRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFt0eXBlXT1cImZpZWxkLmlucHV0VHlwZVwiIFttaW5sZW5ndGhdPVwiZmllbGQubWluTGVuZ3RofHxudWxsXCIgW21heGxlbmd0aF09XCJmaWVsZC5tYXhMZW5ndGh8fG51bGxcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybUdyb3VwPy52YWx1ZSwgZm9ybUdyb3VwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkRXJyb3JzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBUZXh0IGFyZWEgLS0+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVGV4dEFyZWFcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmhlYWRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIHJvd3M9XCJmaWVsZC5yb3dzfHwyXCIgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1Hcm91cD8udmFsdWUsIGZvcm1Hcm91cClcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkRXJyb3JzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBFbnVtIC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkVudW1cIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmhlYWRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkLXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbZW51bV09XCJmaWVsZC5lbnVtVHlwZVwiIFtrZXldPVwiZmllbGQub3B0aW9uVmFsdWVcIiBbdGV4dF09XCJmaWVsZC5vcHRpb25UZXh0XCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1Hcm91cD8udmFsdWUsIGZvcm1Hcm91cClcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LXRyaWdnZXIgbGV0LXRyaWdnZXI9XCJ0cmlnZ2VyXCIgKm5nSWY9XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGUodHJpZ2dlcilcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQub3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW291dGVySFRNTF09XCJmaWVsZC5vcHRpb25UZW1wbGF0ZShvcHRpb24pXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRFcnJvcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFZkU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlZkU2VsZWN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5oZWFkZXJ9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lXCIgW2VuZHBvaW50XT1cImZpZWxkLmVuZHBvaW50XCIgW3BhcmFtc109XCJmaWVsZC5wYXJhbXM/ZmllbGQucGFyYW1zKGZvcm1Hcm91cC52YWx1ZSwgZm9ybUdyb3VwKTp7fVwiIFtwcm9qZWN0aW9uXT1cImZpZWxkLnByb2plY3Rpb25cIiBbbWFwcGVyXT1cImZpZWxkLm1hcHBlclwiIFtjb21wYXJlV2l0aF09XCJmaWVsZC5jb21wYXJlV2l0aFwiIFtrZXldPVwiZmllbGQub3B0aW9uVmFsdWVcIiBbdGV4dF09XCJmaWVsZC5vcHRpb25UZXh0XCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1Hcm91cD8udmFsdWUsIGZvcm1Hcm91cClcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LXRyaWdnZXIgbGV0LXRyaWdnZXI9XCJ0cmlnZ2VyXCIgKm5nSWY9XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGUodHJpZ2dlcilcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQub3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW291dGVySFRNTF09XCJmaWVsZC5vcHRpb25UZW1wbGF0ZShvcHRpb24pXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRFcnJvcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENoaXBzIC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNoaXBzXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5oZWFkZXJ9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1saXN0ICNjaGlwTGlzdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbZGlzYWJsZUNvbnRyb2xdPVwiZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybUdyb3VwPy52YWx1ZSwgZm9ybUdyb3VwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAgKm5nRm9yPVwibGV0IGNoaXAgb2YgZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdPy52YWx1ZVwiIChyZW1vdmVkKT1cInJlbW92ZUNoaXAoZmllbGQsIGNoaXApXCIgY29sb3I9XCJwcmltYXJ5XCIgc2VsZWN0YWJsZT1cInRydWVcIiBzZWxlY3RlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Y2hpcH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwiZmllbGQuaGVhZGVyXCIgI2NoaXBJbnB1dCBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCIgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiIFttYXRBdXRvY29tcGxldGVdPVwiY2hpcEF1dG9jb21wbGV0ZVwiIChpbnB1dCk9XCJmaWx0ZXJBdXRvY29tcGxldGUoZmllbGQsIGNoaXBJbnB1dClcIiAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkQ2hpcChmaWVsZCwgJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXAtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2NoaXBBdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwiYXV0b2NvbXBsZXRlVmFsdWVTZWxlY3RlZChmaWVsZCwgJGV2ZW50LCBjaGlwSW5wdXQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWVdXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRFcnJvcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFZkQ2hpcHMgLS0+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRDaGlwc1wiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIGxheW91dC1tYXJnaW4gYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQuaGVhZGVyfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8dmQtY2hpcHMgI3ZkQ2hpcCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbZW5kcG9pbnRdPVwiZmllbGQuZW5kcG9pbnRcIiBbcGFyYW1zXT1cImZpZWxkLnBhcmFtcz9maWVsZC5wYXJhbXMoZm9ybUdyb3VwPy52YWx1ZSwgZm9ybUdyb3VwKTp7fVwiIFtzZWFyY2hGaWVsZF09XCJmaWVsZC5zZWFyY2hGaWVsZFwiIFtwcm9qZWN0aW9uXT1cImZpZWxkLnByb2plY3Rpb25cIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLWNoaXAgbGV0LWNoaXA9XCJjaGlwXCIgKm5nSWY9XCJmaWVsZC5jaGlwVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW291dGVySFRNTF09XCJmaWVsZC5jaGlwVGVtcGxhdGUoY2hpcClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLWF1dG9jb21wbGV0ZS1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQuYXV0b2NvbXBsZXRlVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW291dGVySFRNTF09XCJmaWVsZC5hdXRvY29tcGxldGVUZW1wbGF0ZShvcHRpb24pXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZC1jaGlwcz5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cInZkQ2hpcC5lbXB0eVJlc3VsdFwiIGNsYXNzPVwidGMtcmVkLTQwMFwiIGkxOG49XCJAQG5vUmVzdWx0c0ZvdW5kXCI+Tm8gcmVzdWx0cyBmb3VuZDwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkRXJyb3JzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBTZWxlY3QgLS0+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuU2VsZWN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5oZWFkZXJ9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIGZsZXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmllbGQub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj57e29wdGlvbi5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkRXJyb3JzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBBdXRvY29tcGxldGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQXV0b2NvbXBsZXRlXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgbGF5b3V0LW1hcmdpbiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5oZWFkZXJ9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiICNhdXRvY29tcGxldGVJbnB1dCAoaW5wdXQpPVwiZmlsdGVyQXV0b2NvbXBsZXRlKGZpZWxkLCBhdXRvY29tcGxldGVJbnB1dClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybUdyb3VwPy52YWx1ZSwgZm9ybUdyb3VwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGF1dG9jb21wbGV0ZUZpbHRlcmVkT3B0aW9uc1tmaWVsZC5uYW1lXVwiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkRXJyb3JzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBEYXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkRhdGVcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmhlYWRlcn19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIiBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybUdyb3VwPy52YWx1ZSwgZm9ybUdyb3VwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZVBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZGF0ZVBpY2tlcj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkRXJyb3JzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDaGVja2JveCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ2hlY2tib3hcIiBsYXlvdXQtbWFyZ2luIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJwYWQtYm90dG9tLXhzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWVcIiBbZGlzYWJsZUNvbnRyb2xdPVwiZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybUdyb3VwPy52YWx1ZSwgZm9ybUdyb3VwKVwiPnt7ZmllbGQuaGVhZGVyfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBFZGl0b3IgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkVkaXRvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImVkaXRvclRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVkaXRvclRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQ29kZSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNvZGVUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2RlVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBmb3JtR3JvdXA6IGZvcm1Hcm91cCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBGaWxlIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5GaWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiZmlsZVRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbGVUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGZvcm1Hcm91cDogZm9ybUdyb3VwIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEN1c3RvbSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ3VzdG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY3VzdG9tVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBmb3JtR3JvdXA6IGZvcm1Hcm91cCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG48L2Rpdj4iXX0=
|
|
@@ -8,7 +8,6 @@ export class FormFieldDefinition {
|
|
|
8
8
|
this.inputType = 'text';
|
|
9
9
|
this.compareWith = (o1, o2) => o1 === o2;
|
|
10
10
|
this.searchField = 'search';
|
|
11
|
-
this.params = {};
|
|
12
11
|
this.multiple = false;
|
|
13
12
|
this.optionValue = 'id';
|
|
14
13
|
this.optionText = 'name';
|
|
@@ -17,4 +16,4 @@ export class FormFieldDefinition {
|
|
|
17
16
|
Object.assign(this, init);
|
|
18
17
|
}
|
|
19
18
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvbW9kZWxzL2Zvcm0tZmllbGQtZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sbUJBQW1CO0lBc0M1Qjs7O09BR0c7SUFDSCxZQUFtQixJQUFtQztRQXRDL0MsZ0JBQVcsR0FBWSxTQUFTLENBQUEsb0JBQW9CLENBQUM7UUFLckQsY0FBUyxHQUFZLE1BQU0sQ0FBQztRQUk1QixnQkFBVyxHQUFjLENBQUMsRUFBTyxFQUFFLEVBQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN6RCxnQkFBVyxHQUFZLFFBQVEsQ0FBQztRQUdoQyxhQUFRLEdBQWEsS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLGVBQVUsR0FBWSxNQUFNLENBQUM7UUFJN0IsYUFBUSxHQUFZLE1BQU0sQ0FBQztRQUUzQixxQkFBZ0IsR0FBWSxNQUFNLENBQUM7UUFrQnRDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1GaWVsZFR5cGUgfSBmcm9tIFwiLi4vZW51bXMvZm9ybS1maWVsZC10eXBlXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkRGVmaW5pdGlvbiB7XHJcbiAgICBwdWJsaWMgcm93OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaW5kZXg/OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgZ3JvdXBOYW1lPzogc3RyaW5nO1xyXG4gICAgcHVibGljIGdyb3VwSGVhZGVyPzogc3RyaW5nID0gJGxvY2FsaXplYDpAQGRldGFpbHM6RGV0YWlsc2A7XHJcbiAgICBwdWJsaWMgbmFtZT86IHN0cmluZztcclxuICAgIHB1YmxpYyBoZWFkZXI/OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgaGludD86IHN0cmluZztcclxuICAgIHB1YmxpYyB0eXBlPzogRm9ybUZpZWxkVHlwZTtcclxuICAgIHB1YmxpYyBpbnB1dFR5cGU/OiBzdHJpbmcgPSAndGV4dCc7XHJcbiAgICBwdWJsaWMgZW51bVR5cGU/OiBhbnk7XHJcbiAgICBwdWJsaWMgZW5kcG9pbnQ/OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgbWFwcGVyPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgY29tcGFyZVdpdGg/OiBGdW5jdGlvbiA9IChvMTogYW55LCBvMjogYW55KSA9PiBvMSA9PT0gbzI7XHJcbiAgICBwdWJsaWMgc2VhcmNoRmllbGQ/OiBzdHJpbmcgPSAnc2VhcmNoJztcclxuICAgIHB1YmxpYyBwcm9qZWN0aW9uPzogc3RyaW5nO1xyXG4gICAgcHVibGljIHBhcmFtcz86IEZ1bmN0aW9uO1xyXG4gICAgcHVibGljIG11bHRpcGxlPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIG9wdGlvblZhbHVlPzogc3RyaW5nID0gJ2lkJztcclxuICAgIHB1YmxpYyBvcHRpb25UZXh0Pzogc3RyaW5nID0gJ25hbWUnO1xyXG4gICAgcHVibGljIG9wdGlvblRlbXBsYXRlPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgdHJpZ2dlclRlbXBsYXRlPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgY2hhbmdlPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgY2hpcFRleHQ/OiBzdHJpbmcgPSAnbmFtZSc7XHJcbiAgICBwdWJsaWMgY2hpcFRlbXBsYXRlPzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlVGV4dD86IHN0cmluZyA9ICduYW1lJztcclxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVUZW1wbGF0ZT86IEZ1bmN0aW9uO1xyXG4gICAgcHVibGljIG9wdGlvbnM/OiB7IGlkOiBhbnksIG5hbWU6IHN0cmluZyB9W107XHJcbiAgICBwdWJsaWMgZmlsZVBhdGg/OiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgaXNQdWJsaWNGaWxlPzogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBmaWxlRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIGZsZXg/OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgcm93cz86IG51bWJlcjtcclxuICAgIHB1YmxpYyBtaW5MZW5ndGg/OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gICAgcHVibGljIHJlYWRvbmx5PzogRnVuY3Rpb247XHJcbiAgICBwdWJsaWMgaGlkZT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogY29uc3RydWN0b3JcclxuICAgICAqIEBwYXJhbSBpbml0IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaW5pdD86IFBhcnRpYWw8Rm9ybUZpZWxkRGVmaW5pdGlvbj4pIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xyXG4gICAgfVxyXG59Il19
|