mmhglobal-dynamicform 2.0.4 → 2.0.6

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/README.md CHANGED
@@ -3,6 +3,14 @@
3
3
  This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.2.13.
4
4
 
5
5
  ## Changelog
6
+ `2.0.6`<br/>
7
+ [zudf] - fix zudf width issue if grid has too many columns<br/>
8
+
9
+ `2.0.5`<br/>
10
+ [zpostselectinput] - fix bug: CC OnChange bind CCValue to Value.<br/>
11
+ [zpostselectinput] - fix UI styling.<br/>
12
+ [zpostselectinput] - Added OnChange event for Value Field.<br/>
13
+
6
14
  `2.0.4`<br/>
7
15
  [zudf] - add more condition for validation.
8
16
 
@@ -14,7 +14,7 @@ export class InputFieldBase extends FieldBase {
14
14
  this.triggerEvent("inputfield-onClick", this.data.OnClick, event, fieldValue || event['OnClick']);
15
15
  }
16
16
  onChangeCC(event, fieldValue) {
17
- ZComponentHelper.setComponentModelValue(this.data, this.getFieldValue(event, fieldValue), this.group);
17
+ ZComponentHelper.setModelValue(this.data.CCValue, this.getFieldValue(event, fieldValue), this.group);
18
18
  this.triggerEvent("inputfield-onChangeCC", this.data.CCOnChange, event, fieldValue);
19
19
  }
20
20
  onChange(event, fieldValue) {
@@ -204,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
204
204
  type: Output,
205
205
  args: ['triggerContainerEvent']
206
206
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRmaWVsZGJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dGZpZWxkYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBeUIsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQU8vRCwySUFBMkk7QUFDM0ksTUFBTSxPQUFPLGNBQWUsU0FBUSxTQUFTO0lBRTNDLFlBQVksV0FBOEI7UUFDeEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRlksMEJBQXFCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFHL0YsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFVLEVBQUUsVUFBZ0I7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBVSxFQUFFLFVBQWdCO1FBQzVDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxZQUFZ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d0dBSWtDLHFCQUFxQjtzQkFBckQsTUFBTTt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50IH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5pbXBvcnQgeyBGaWVsZEJhc2UgfSBmcm9tIFwiLi9maWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCwgb2YsIHN3aXRjaE1hcCwgdGFrZVdoaWxlLCB0YXAgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogYGAsXHJcbn0pXHJcblxyXG4vLyBGb3I6IHpjaGVja2JveCwgemNoaXAsIHpkYXRldGltZSwgemltZywgemlucHV0LWNvbnRhaW5lciwgemxhYmVsLCB6bnVtZXJpYywgenBvc3RzZWxlY3RpbnB1dCwgenNlbGVjdG11bHRpcGxlLCB6dGV4dCwgenRleHRhcmVhLCB6dXBsb2FkXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEZpZWxkQmFzZSBleHRlbmRzIEZpZWxkQmFzZSB7XHJcbiAgQE91dHB1dCgndHJpZ2dlckNvbnRhaW5lckV2ZW50JykgdHJpZ2dlckNvbnRhaW5lckV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBjb25zdHJ1Y3Rvcihjb21wU2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNvbXBTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBhbnksIGZpZWxkVmFsdWU/OiBhbnkpIHtcclxuICAgIHRoaXMudHJpZ2dlckV2ZW50KFwiaW5wdXRmaWVsZC1vbkNsaWNrXCIsIHRoaXMuZGF0YS5PbkNsaWNrLCBldmVudCwgZmllbGRWYWx1ZSB8fCBldmVudFsnT25DbGljayddKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZUNDKGV2ZW50OiBhbnksIGZpZWxkVmFsdWU/OiBhbnkpIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0Q29tcG9uZW50TW9kZWxWYWx1ZSh0aGlzLmRhdGEsIHRoaXMuZ2V0RmllbGRWYWx1ZShldmVudCwgZmllbGRWYWx1ZSksIHRoaXMuZ3JvdXApO1xyXG4gICAgdGhpcy50cmlnZ2VyRXZlbnQoXCJpbnB1dGZpZWxkLW9uQ2hhbmdlQ0NcIiwgdGhpcy5kYXRhLkNDT25DaGFuZ2UsIGV2ZW50LCBmaWVsZFZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZShldmVudDogYW55LCBmaWVsZFZhbHVlPzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLlN1YlR5cGUgJiYgdGhpcy5kYXRhLlN1YlR5cGUgPT09ICd6dWRmJykge1xyXG4gICAgICB0aGlzLmhhbmRsZVp1ZGZDaGFuZ2UoZXZlbnQsIGZpZWxkVmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgWkNvbXBvbmVudEhlbHBlci5zZXRDb21wb25lbnRNb2RlbFZhbHVlKHRoaXMuZGF0YSwgdGhpcy5nZXRGaWVsZFZhbHVlKGV2ZW50LCBmaWVsZFZhbHVlKSwgdGhpcy5ncm91cCk7XHJcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KFwiaW5wdXRmaWVsZC1vbkNoYW5nZVwiLCB0aGlzLmRhdGEuT25DaGFuZ2UsIGV2ZW50LCBmaWVsZFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkl0ZW1DbGljayhldmVudDogYW55LCBmaWVsZFZhbHVlPzogYW55KSB7XHJcbiAgICB0aGlzLnRyaWdnZXJFdmVudChcImlucHV0ZmllbGQtb25JdGVtQ2xpY2tcIiwgdGhpcy5kYXRhLk9uSXRlbUNsaWNrLCBldmVudCwgZmllbGRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JY29uQ2xpY2soY2xpY2tBY3Rpb25FeHByOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudHJpZ2dlckV2ZW50KFwiaW5wdXRmaWVsZC1vbkljb25DbGlja1wiLCBjbGlja0FjdGlvbkV4cHIsIG51bGwsIHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZGF0YS5WYWx1ZV0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFJlYWRPbmx5VmFsdWUoKSB7XHJcbiAgICBjb25zdCByZWFkT25seVZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5SZWFkT25seSk7XHJcbiAgICBpZiAodHlwZW9mIHJlYWRPbmx5VmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSByZWFkT25seVZhbHVlLmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICByZXR1cm4gY2FsbEZ1bmModGhpcy5ncm91cCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVhZE9ubHlWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRJc1JlcXVpcmVkVmFsdWUoKSB7XHJcbiAgICBjb25zdCBJc1JlcXVpcmVkVmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLklzUmVxdWlyZWQpO1xyXG4gICAgaWYgKHR5cGVvZiBJc1JlcXVpcmVkVmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSBJc1JlcXVpcmVkVmFsdWUuYmluZCh0aGlzLmdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgIHJldHVybiBjYWxsRnVuYyh0aGlzLmdyb3VwKTtcclxuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gSXNSZXF1aXJlZFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0Q29tcG9uZW50TW9kZWxWYWx1ZSh0aGlzLmRhdGEsIHZhbHVlLCB0aGlzLmdyb3VwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRBZGRPblZhbHVlKGFkZE9ucz86IGFueSkge1xyXG4gICAgdGhpcy50cmlnZ2VyQ29udGFpbmVyRXZlbnQuZW1pdCh7IHR5cGU6ICdzZXRBZGRPblZhbHVlJywgZGF0YTogYWRkT25zIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHRyaWdnZXJFdmVudCh0eXBlOiBzdHJpbmcsIHRhcmdldDogYW55LCBldmVudDogYW55LCBmaWVsZFZhbHVlPzogYW55KSB7XHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgIHRoaXMuZ3JvdXAuc3ViamVjdC5uZXh0KHtcclxuICAgICAgICB0eXBlOiB0eXBlLFxyXG4gICAgICAgIHRhcmdldDogdGFyZ2V0LFxyXG4gICAgICAgIGV2ZW50LFxyXG4gICAgICAgIGRhdGE6IHsgdmFsdWU6IHRoaXMuZ2V0RmllbGRWYWx1ZShldmVudCwgZmllbGRWYWx1ZSksIGZpZWxkOiB0aGlzLmRhdGEsIGNvbXA6IHRoaXMgfVxyXG4gICAgICB9IGFzIFpDb21wb25lbnRPdXRwdXRFdmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpZWxkVmFsdWUoZXZlbnQ6IGFueSwgZmllbGRWYWx1ZT86IGFueSkge1xyXG4gICAgaWYgKGZpZWxkVmFsdWUgPT0gbnVsbCB8fCBmaWVsZFZhbHVlID09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gZXZlbnQ/LnZhbHVlIHx8IGV2ZW50Py50YXJnZXQ/LnZhbHVlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGRWYWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlWnVkZkNoYW5nZShldmVudDogYW55LCBmaWVsZFZhbHVlPzogYW55KSB7XHJcbiAgICBjb25zdCB6dWRmRmllbGRWYWx1ZSA9IHRoaXMuZ2V0RmllbGRWYWx1ZShldmVudCwgZmllbGRWYWx1ZSk7XHJcbiAgICBjb25zdCB6dWRmU2NvcGUgPSBaQ29tcG9uZW50SGVscGVyLmdldFp1ZGZTY29wZSh0aGlzLmdyb3VwLCB0aGlzLmRhdGEuVmFsdWUpO1xyXG5cclxuICAgIGlmICghenVkZlNjb3BlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCd6dWRmIHNjb3BlIGlzIG51bGwgZm9yIGZpZWxkIG9uY2hhbmdlLicpO1xyXG4gICAgfVxyXG5cclxuICAgIHp1ZGZTY29wZS56TW9kZWxbdGhpcy5kYXRhLlZhbHVlXSA9IHp1ZGZGaWVsZFZhbHVlO1xyXG4gICAgb2Yoe30pLnBpcGUoXHJcbiAgICAgIHRhcChyZXMgPT4ge1xyXG4gICAgICAgIGlmICh6dWRmU2NvcGUubGlua2VkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICB0aGlzLmNhc2NhZGluZ0hhbmRsaW5nKHp1ZGZTY29wZSwgdGhpcy5kYXRhLlZhbHVlLCBmaWVsZFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAocmVzID0+IHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhWydBdXRvUG9wdWxhdGVDaGlsZEZpZWxkVmFsdWUnXSkge1xyXG4gICAgICAgICAgLy8gWlVERi4gQXV0byBQb3B1bGF0ZSBjaGlsZCBmaWVsZCB2YWx1ZVxyXG4gICAgICAgICAgY29uc3QgY2hpbGRGaWVsZHMgPSB0aGlzLmRhdGFbJ0NoaWxkRmllbGRzJ107XHJcbiAgICAgICAgICBpZiAoY2hpbGRGaWVsZHMpIHtcclxuICAgICAgICAgICAgbGV0IHNlbGVjdGVkRGF0YU9wdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChmaWVsZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBzZWxlY3RlZCBkYXRhIGZ1bGwgaW5mb1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGFPcHRpb24gPSB0aGlzLmdyb3VwLnpEYXRhW3RoaXMuZGF0YVsnWkRhdGFPcHRpb25OYW1lJ11dO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZGF0YU9wdGlvbikge1xyXG4gICAgICAgICAgICAgICAgZGF0YU9wdGlvbi5mb3JFYWNoKG9wdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24uSWQgPT09IGZpZWxkVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGFPcHRpb24gPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBzZXQgdG8gYWxsIHJlbGF0ZWQgek1vZGUgb2YgdGhlIGRyb3Bkb3duXHJcbiAgICAgICAgICAgIGxldCBmZzogRm9ybUdyb3VwID0genVkZlNjb3BlLmZvcm0gYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgICAgICBjaGlsZEZpZWxkcy5mb3JFYWNoKGNoaWxkRmllbGQgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIHJlbW92ZSBzeW1ib2wuXHJcbiAgICAgICAgICAgICAgbGV0IGNoaWxkRmllbGROYW1lID0gZW5jb2RlVVJJKGNoaWxkRmllbGQucmVwbGFjZSgvW15hLXowLTldL2dpLCBcIlwiKSk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmllbGRNb2RlbE5hbWUgPSB0aGlzLmRhdGEuTmFtZSArIGNoaWxkRmllbGROYW1lO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHpNb2RlbHMgPSB6dWRmU2NvcGUuek1vZGVsO1xyXG5cclxuICAgICAgICAgICAgICBjb25zdCBjaGlsZENvbXBvbmVudCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0Q29tcG9uZW50KHRoaXMuZ3JvdXAsICd0ZXh0XycgKyBmaWVsZE1vZGVsTmFtZSk7XHJcbiAgICAgICAgICAgICAgaWYgKGNoaWxkQ29tcG9uZW50WydkYXRhJ11bJ1JlYWRPbmx5J10gJiYgIWZpZWxkVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNsZWFyIGNoaWxkIGZpZWxkIGlmIG9ubHkgcmVhZG9ubHkgaXMgdHJ1ZS5cclxuICAgICAgICAgICAgICAgIHpNb2RlbHNbZmllbGRNb2RlbE5hbWVdID0gIWZpZWxkVmFsdWUgPyBudWxsIDogc2VsZWN0ZWREYXRhT3B0aW9uID8gc2VsZWN0ZWREYXRhT3B0aW9uW2NoaWxkRmllbGROYW1lXSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRGF0YU9wdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICB6TW9kZWxzW2ZpZWxkTW9kZWxOYW1lXSA9IHNlbGVjdGVkRGF0YU9wdGlvbltjaGlsZEZpZWxkTmFtZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGZnLnBhdGNoVmFsdWUoek1vZGVscyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcChyZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50TmFtZSA9ICd0cmlnZ2VyVmFsaWRhdGlvbic7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmdyb3VwW2V2ZW50TmFtZV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBbZXZlbnROYW1lXSh0aGlzLmdyb3VwLCBldmVudCwgZmllbGRWYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnRyaWdnZXJFdmVudChcImlucHV0ZmllbGQtb25DaGFuZ2VcIiwgdGhpcy5kYXRhLk9uQ2hhbmdlLCBldmVudCwgZmllbGRWYWx1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FzY2FkaW5nSGFuZGxpbmcoenVkZlNjb3BlOiBhbnksIGZpZWxkTmFtZTogYW55LCBmaWVsZFZhbHVlPzogYW55KSB7XHJcbiAgICBjb25zdCBsaW5rZWRDb21wb25lbnRTY29wZSA9IHp1ZGZTY29wZS5saW5rZWRDb21wb25lbnQ7XHJcbiAgICAvLyAjMSBjaGVjayBpcyB0aGUgb25jaGFuZ2UgY29tcG9uZW50IGxpbmtlZCB0byBvdGhlciBjb21wb25lbnQuXHJcbiAgICAvLyAjMiBpZiBsaW5rZWQgdG8gb3RoZXIgY29tcG9uZW50KGxldHMgY2FsbCBpdCBjaGlsZCBjb21wb25lbnQpLFxyXG4gICAgLy8gICAgYmFzZSBvbiB0aGUgbGlua2VkQ29tcG9uZW50U2NvcGUgdmFsdWUsIGZpbmQgdGhlIGNoaWxkIGNvbXBvbmVudC5cclxuICAgIC8vICMzIGtlZXAgdGhlIG9yaWdpbmFsIFNlbGVjdE9wdGlvbnMgaW4gdGhlIGNvbXBvbmVudC5cclxuICAgIC8vICM0IGNsZWFyIHRoZSBjaGlsZCB6bW9kZWwgYW5kIGZpbHRlciB0aGUgY2hpbGQgY29tcG9uZW50IG9wdGlvbnMuXHJcbiAgICAvLyAjNSBhdXRvIHNlbGVjdCBkZWZhdWx0IHptb2RlbCBpZiBvbmx5IGhhdmUgMSBvcHRpb24gYW5kIGlzIHJlcXVpcmVkLlxyXG4gICAgLy8gIzYgaGFuZGxlIGNoaWxkIG5lc3RlZCBsaW5rZWQgY29tcG9uZW50LlxyXG4gICAgbGlua2VkQ29tcG9uZW50U2NvcGUuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgY29uc3QgZGF0YVZhbHVlU2VnbWVudHMgPSBmaWVsZE5hbWUuc3BsaXQoJ18nKTtcclxuICAgICAgY29uc3QgbGlua2VkQ29tcG9uZW50U2VnbWVudHMgPSBpdGVtLmxpbmtlZENvbXBvbmVudC5zcGxpdCgnXycpO1xyXG4gICAgICBsZXQgaXNMaW5rZWRDb21wb25lbnQgPSBmYWxzZTtcclxuXHJcbiAgICAgIC8vIGNoZWNrIGlzIGl0IGxpbmtlZGNvbXBvbmVudFxyXG4gICAgICBpZiAobGlua2VkQ29tcG9uZW50U2VnbWVudHMubGVuZ3RoID4gMSAmJiBkYXRhVmFsdWVTZWdtZW50cy5sZW5ndGggPiAzKSB7XHJcbiAgICAgICAgY29uc3QgbGFzdFR3b1NlZ21lbnRzID0gZGF0YVZhbHVlU2VnbWVudHMuc2xpY2UoLTIpLmpvaW4oJ18nKTtcclxuICAgICAgICBpZiAobGlua2VkQ29tcG9uZW50U2VnbWVudHMuam9pbignXycpID09PSBsYXN0VHdvU2VnbWVudHMpIHtcclxuICAgICAgICAgIGlzTGlua2VkQ29tcG9uZW50ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAobGlua2VkQ29tcG9uZW50U2VnbWVudHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29uc3QgbGFzdFNlZ21lbnQgPSBkYXRhVmFsdWVTZWdtZW50c1tkYXRhVmFsdWVTZWdtZW50cy5sZW5ndGggLSAxXTtcclxuICAgICAgICBpZiAobGlua2VkQ29tcG9uZW50U2VnbWVudHNbMF0gPT09IGxhc3RTZWdtZW50KSB7XHJcbiAgICAgICAgICBpc0xpbmtlZENvbXBvbmVudCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNMaW5rZWRDb21wb25lbnQpIHtcclxuICAgICAgICBjb25zdCBjaGlsZENvbXBvbmVudCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0Q29tcG9uZW50QnlWYWx1ZSh0aGlzLmdyb3VwLCBpdGVtLnZhbHVlKTtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbFNlbGVjdE9wdGlvbnMgPSBjaGlsZENvbXBvbmVudC5kYXRhWydvcmlnaW5hbFNlbGVjdE9wdGlvbnMnXSA/PyBPYmplY3QuYXNzaWduKFtdLCBjaGlsZENvbXBvbmVudC5kYXRhLlNlbGVjdE9wdGlvbnMpO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkU2VsZWN0aW9uT3B0aW9ucyA9IG9yaWdpbmFsU2VsZWN0T3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5wYXJlbnRFeHByZXNzaW9uID09IGZpZWxkVmFsdWUpO1xyXG5cclxuICAgICAgICAvL2NoaWxkQ29tcG9uZW50LmNsZWFyRGF0YSgpOyAvL3VuYWJsZSB0byB1c2UgY2xlYXJEYXRhLiBub3QgaGFuZGxlZCBmb3IgenVkZiB0eXBlXHJcbiAgICAgICAgLy8gbWFudWFsbCBwYXRjaCB0aGUgY29tcG9uZW50IGZvcm1jb250cm9sIHZhbHVlXHJcbiAgICAgICAgY29uc3QgenVkZkZvcm0gPSB6dWRmU2NvcGUuZm9ybSBhcyBGb3JtR3JvdXA7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50Rm9ybUNvbnRyb2wgPSB6dWRmRm9ybS5jb250cm9sc1tpdGVtLnZhbHVlXSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICB6dWRmU2NvcGUuek1vZGVsW2l0ZW0udmFsdWVdID0gbnVsbDtcclxuICAgICAgICBjb21wb25lbnRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHp1ZGZTY29wZS56TW9kZWxbaXRlbS52YWx1ZV0pO1xyXG5cclxuICAgICAgICBjaGlsZENvbXBvbmVudC5kYXRhWydvcmlnaW5hbFNlbGVjdE9wdGlvbnMnXSA9IG9yaWdpbmFsU2VsZWN0T3B0aW9ucztcclxuICAgICAgICBjaGlsZENvbXBvbmVudC5zZXRTZWxlY3RPcHRpb24oZmlsdGVyZWRTZWxlY3Rpb25PcHRpb25zKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IGRyb3Bkb3duIHNlbGVjdGVkIHZhbHVlIGlmIG9ubHkgMSBvcHRpb24uXHJcbiAgICAgICAgY29uc3QgY2hpbGRDb21wb25lbnRUeXBlID0gY2hpbGRDb21wb25lbnQuZGF0YS5UeXBlO1xyXG4gICAgICAgIGlmIChmaWx0ZXJlZFNlbGVjdGlvbk9wdGlvbnMubGVuZ3RoID09PSAxICYmIGNoaWxkQ29tcG9uZW50LmRhdGEuSXNSZXF1aXJlZCAmJiAoY2hpbGRDb21wb25lbnRUeXBlID09PSAnenVpc2VsZWN0bXVsdGlwbGUnIHx8IGNoaWxkQ29tcG9uZW50VHlwZSA9PT0gJ3pzZWxlY3RtdWx0aXBsZScpKSB7XHJcbiAgICAgICAgICB6dWRmU2NvcGUuek1vZGVsW2l0ZW0udmFsdWVdID0gZmlsdGVyZWRTZWxlY3Rpb25PcHRpb25zWzBdW2NoaWxkQ29tcG9uZW50Lml0ZW1WYWx1ZUZpZWxkXTtcclxuICAgICAgICAgIGNvbXBvbmVudEZvcm1Db250cm9sLnBhdGNoVmFsdWUoenVkZlNjb3BlLnpNb2RlbFtpdGVtLnZhbHVlXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBsb29wIGNoaWxkcmVuIGluY2FzZSBvZiBuZXN0ZWQgY2hpbGQuXHJcbiAgICAgICAgY29uc3QgY2hpbGRDb21wb25lbnRWYWx1ZVNlZ21lbnRzID0gY2hpbGRDb21wb25lbnQuZGF0YS5WYWx1ZS5zcGxpdCgnXycpO1xyXG4gICAgICAgIHRoaXMuY2FzY2FkaW5nSGFuZGxpbmcoenVkZlNjb3BlLCBjaGlsZENvbXBvbmVudFZhbHVlU2VnbWVudHNbY2hpbGRDb21wb25lbnRWYWx1ZVNlZ21lbnRzLmxlbmd0aCAtIDFdLCB6dWRmU2NvcGUuek1vZGVsW2l0ZW0udmFsdWVdKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBmb2N1c09uRGVmYXVsdChmb2N1c0Z1bmN0aW9uOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuSXNGb2N1cykge1xyXG4gICAgICBsZXQgY291bnRlciA9IDA7XHJcbiAgICAgIGxldCBpc0ZvY3VzZWQgPSBmYWxzZTtcclxuICAgICAgaW50ZXJ2YWwoNTAwKS5waXBlKFxyXG4gICAgICAgIHRha2VXaGlsZSh4ID0+IGNvdW50ZXIgPCA1ICYmICFpc0ZvY3VzZWQpLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICBpc0ZvY3VzZWQgPSBmb2N1c0Z1bmN0aW9uKCk7XHJcbiAgICAgICAgICBjb3VudGVyKys7XHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRmaWVsZGJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dGZpZWxkYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBeUIsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQU8vRCwySUFBMkk7QUFDM0ksTUFBTSxPQUFPLGNBQWUsU0FBUSxTQUFTO0lBRTNDLFlBQVksV0FBOEI7UUFDeEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRlksMEJBQXFCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFHL0YsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFVLEVBQUUsVUFBZ0I7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBVSxFQUFFLFVBQWdCO1FBQzVDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckcsSUFBSSxD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RTtpQkFDYjt3R0FJa0MscUJBQXFCO3NCQUFyRCxNQUFNO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50T3V0cHV0RXZlbnQgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IEZpZWxkQmFzZSB9IGZyb20gXCIuL2ZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGludGVydmFsLCBvZiwgc3dpdGNoTWFwLCB0YWtlV2hpbGUsIHRhcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiBgYCxcclxufSlcclxuXHJcbi8vIEZvcjogemNoZWNrYm94LCB6Y2hpcCwgemRhdGV0aW1lLCB6aW1nLCB6aW5wdXQtY29udGFpbmVyLCB6bGFiZWwsIHpudW1lcmljLCB6cG9zdHNlbGVjdGlucHV0LCB6c2VsZWN0bXVsdGlwbGUsIHp0ZXh0LCB6dGV4dGFyZWEsIHp1cGxvYWRcclxuZXhwb3J0IGNsYXNzIElucHV0RmllbGRCYXNlIGV4dGVuZHMgRmllbGRCYXNlIHtcclxuICBAT3V0cHV0KCd0cmlnZ2VyQ29udGFpbmVyRXZlbnQnKSB0cmlnZ2VyQ29udGFpbmVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNvbnN0cnVjdG9yKGNvbXBTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSkge1xyXG4gICAgc3VwZXIoY29tcFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IGFueSwgZmllbGRWYWx1ZT86IGFueSkge1xyXG4gICAgdGhpcy50cmlnZ2VyRXZlbnQoXCJpbnB1dGZpZWxkLW9uQ2xpY2tcIiwgdGhpcy5kYXRhLk9uQ2xpY2ssIGV2ZW50LCBmaWVsZFZhbHVlIHx8IGV2ZW50WydPbkNsaWNrJ10pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlQ0MoZXZlbnQ6IGFueSwgZmllbGRWYWx1ZT86IGFueSkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKHRoaXMuZGF0YS5DQ1ZhbHVlLCB0aGlzLmdldEZpZWxkVmFsdWUoZXZlbnQsIGZpZWxkVmFsdWUpLCB0aGlzLmdyb3VwKTtcclxuICAgIHRoaXMudHJpZ2dlckV2ZW50KFwiaW5wdXRmaWVsZC1vbkNoYW5nZUNDXCIsIHRoaXMuZGF0YS5DQ09uQ2hhbmdlLCBldmVudCwgZmllbGRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGRWYWx1ZT86IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5TdWJUeXBlICYmIHRoaXMuZGF0YS5TdWJUeXBlID09PSAnenVkZicpIHtcclxuICAgICAgdGhpcy5oYW5kbGVadWRmQ2hhbmdlKGV2ZW50LCBmaWVsZFZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFpDb21wb25lbnRIZWxwZXIuc2V0Q29tcG9uZW50TW9kZWxWYWx1ZSh0aGlzLmRhdGEsIHRoaXMuZ2V0RmllbGRWYWx1ZShldmVudCwgZmllbGRWYWx1ZSksIHRoaXMuZ3JvdXApO1xyXG4gICAgICB0aGlzLnRyaWdnZXJFdmVudChcImlucHV0ZmllbGQtb25DaGFuZ2VcIiwgdGhpcy5kYXRhLk9uQ2hhbmdlLCBldmVudCwgZmllbGRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JdGVtQ2xpY2soZXZlbnQ6IGFueSwgZmllbGRWYWx1ZT86IGFueSkge1xyXG4gICAgdGhpcy50cmlnZ2VyRXZlbnQoXCJpbnB1dGZpZWxkLW9uSXRlbUNsaWNrXCIsIHRoaXMuZGF0YS5Pbkl0ZW1DbGljaywgZXZlbnQsIGZpZWxkVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSWNvbkNsaWNrKGNsaWNrQWN0aW9uRXhwcjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRyaWdnZXJFdmVudChcImlucHV0ZmllbGQtb25JY29uQ2xpY2tcIiwgY2xpY2tBY3Rpb25FeHByLCBudWxsLCB0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmRhdGEuVmFsdWVdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSZWFkT25seVZhbHVlKCkge1xyXG4gICAgY29uc3QgcmVhZE9ubHlWYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuUmVhZE9ubHkpO1xyXG4gICAgaWYgKHR5cGVvZiByZWFkT25seVZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxGdW5jID0gcmVhZE9ubHlWYWx1ZS5iaW5kKHRoaXMuZ3JvdXAuY3RybFNjb3BlKTtcclxuICAgICAgcmV0dXJuIGNhbGxGdW5jKHRoaXMuZ3JvdXApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlYWRPbmx5VmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SXNSZXF1aXJlZFZhbHVlKCkge1xyXG4gICAgY29uc3QgSXNSZXF1aXJlZFZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5Jc1JlcXVpcmVkKTtcclxuICAgIGlmICh0eXBlb2YgSXNSZXF1aXJlZFZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxGdW5jID0gSXNSZXF1aXJlZFZhbHVlLmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICByZXR1cm4gY2FsbEZ1bmModGhpcy5ncm91cCk7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIElzUmVxdWlyZWRWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudE1vZGVsVmFsdWUodGhpcy5kYXRhLCB2YWx1ZSwgdGhpcy5ncm91cCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0QWRkT25WYWx1ZShhZGRPbnM/OiBhbnkpIHtcclxuICAgIHRoaXMudHJpZ2dlckNvbnRhaW5lckV2ZW50LmVtaXQoeyB0eXBlOiAnc2V0QWRkT25WYWx1ZScsIGRhdGE6IGFkZE9ucyB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB0cmlnZ2VyRXZlbnQodHlwZTogc3RyaW5nLCB0YXJnZXQ6IGFueSwgZXZlbnQ6IGFueSwgZmllbGRWYWx1ZT86IGFueSkge1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICB0YXJnZXQ6IHRhcmdldCxcclxuICAgICAgICBldmVudCxcclxuICAgICAgICBkYXRhOiB7IHZhbHVlOiB0aGlzLmdldEZpZWxkVmFsdWUoZXZlbnQsIGZpZWxkVmFsdWUpLCBmaWVsZDogdGhpcy5kYXRhLCBjb21wOiB0aGlzIH1cclxuICAgICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZFZhbHVlKGV2ZW50OiBhbnksIGZpZWxkVmFsdWU/OiBhbnkpIHtcclxuICAgIGlmIChmaWVsZFZhbHVlID09IG51bGwgfHwgZmllbGRWYWx1ZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGV2ZW50Py52YWx1ZSB8fCBldmVudD8udGFyZ2V0Py52YWx1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpZWxkVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVp1ZGZDaGFuZ2UoZXZlbnQ6IGFueSwgZmllbGRWYWx1ZT86IGFueSkge1xyXG4gICAgY29uc3QgenVkZkZpZWxkVmFsdWUgPSB0aGlzLmdldEZpZWxkVmFsdWUoZXZlbnQsIGZpZWxkVmFsdWUpO1xyXG4gICAgY29uc3QgenVkZlNjb3BlID0gWkNvbXBvbmVudEhlbHBlci5nZXRadWRmU2NvcGUodGhpcy5ncm91cCwgdGhpcy5kYXRhLlZhbHVlKTtcclxuXHJcbiAgICBpZiAoIXp1ZGZTY29wZSkge1xyXG4gICAgICBjb25zb2xlLmxvZygnenVkZiBzY29wZSBpcyBudWxsIGZvciBmaWVsZCBvbmNoYW5nZS4nKTtcclxuICAgIH1cclxuXHJcbiAgICB6dWRmU2NvcGUuek1vZGVsW3RoaXMuZGF0YS5WYWx1ZV0gPSB6dWRmRmllbGRWYWx1ZTtcclxuICAgIG9mKHt9KS5waXBlKFxyXG4gICAgICB0YXAocmVzID0+IHtcclxuICAgICAgICBpZiAoenVkZlNjb3BlLmxpbmtlZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgdGhpcy5jYXNjYWRpbmdIYW5kbGluZyh6dWRmU2NvcGUsIHRoaXMuZGF0YS5WYWx1ZSwgZmllbGRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGFwKHJlcyA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YVsnQXV0b1BvcHVsYXRlQ2hpbGRGaWVsZFZhbHVlJ10pIHtcclxuICAgICAgICAgIC8vIFpVREYuIEF1dG8gUG9wdWxhdGUgY2hpbGQgZmllbGQgdmFsdWVcclxuICAgICAgICAgIGNvbnN0IGNoaWxkRmllbGRzID0gdGhpcy5kYXRhWydDaGlsZEZpZWxkcyddO1xyXG4gICAgICAgICAgaWYgKGNoaWxkRmllbGRzKSB7XHJcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZERhdGFPcHRpb24gPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoZmllbGRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIC8vIGdldCB0aGUgc2VsZWN0ZWQgZGF0YSBmdWxsIGluZm9cclxuICAgICAgICAgICAgICBjb25zdCBkYXRhT3B0aW9uID0gdGhpcy5ncm91cC56RGF0YVt0aGlzLmRhdGFbJ1pEYXRhT3B0aW9uTmFtZSddXTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGRhdGFPcHRpb24pIHtcclxuICAgICAgICAgICAgICAgIGRhdGFPcHRpb24uZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAob3B0aW9uLklkID09PSBmaWVsZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhT3B0aW9uID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gc2V0IHRvIGFsbCByZWxhdGVkIHpNb2RlIG9mIHRoZSBkcm9wZG93blxyXG4gICAgICAgICAgICBsZXQgZmc6IEZvcm1Hcm91cCA9IHp1ZGZTY29wZS5mb3JtIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgICAgY2hpbGRGaWVsZHMuZm9yRWFjaChjaGlsZEZpZWxkID0+IHtcclxuICAgICAgICAgICAgICAvLyByZW1vdmUgc3ltYm9sLlxyXG4gICAgICAgICAgICAgIGxldCBjaGlsZEZpZWxkTmFtZSA9IGVuY29kZVVSSShjaGlsZEZpZWxkLnJlcGxhY2UoL1teYS16MC05XS9naSwgXCJcIikpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZpZWxkTW9kZWxOYW1lID0gdGhpcy5kYXRhLk5hbWUgKyBjaGlsZEZpZWxkTmFtZTtcclxuICAgICAgICAgICAgICBjb25zdCB6TW9kZWxzID0genVkZlNjb3BlLnpNb2RlbDtcclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRDb21wb25lbnQgPSBaQ29tcG9uZW50SGVscGVyLmdldENvbXBvbmVudCh0aGlzLmdyb3VwLCAndGV4dF8nICsgZmllbGRNb2RlbE5hbWUpO1xyXG4gICAgICAgICAgICAgIGlmIChjaGlsZENvbXBvbmVudFsnZGF0YSddWydSZWFkT25seSddICYmICFmaWVsZFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjbGVhciBjaGlsZCBmaWVsZCBpZiBvbmx5IHJlYWRvbmx5IGlzIHRydWUuXHJcbiAgICAgICAgICAgICAgICB6TW9kZWxzW2ZpZWxkTW9kZWxOYW1lXSA9ICFmaWVsZFZhbHVlID8gbnVsbCA6IHNlbGVjdGVkRGF0YU9wdGlvbiA/IHNlbGVjdGVkRGF0YU9wdGlvbltjaGlsZEZpZWxkTmFtZV0gOiBudWxsO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZERhdGFPcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgek1vZGVsc1tmaWVsZE1vZGVsTmFtZV0gPSBzZWxlY3RlZERhdGFPcHRpb25bY2hpbGRGaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmZy5wYXRjaFZhbHVlKHpNb2RlbHMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBzd2l0Y2hNYXAocmVzID0+IHtcclxuICAgICAgICBjb25zdCBldmVudE5hbWUgPSAndHJpZ2dlclZhbGlkYXRpb24nO1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5ncm91cFtldmVudE5hbWVdKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyb3VwW2V2ZW50TmFtZV0odGhpcy5ncm91cCwgZXZlbnQsIGZpZWxkVmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoXCJpbnB1dGZpZWxkLW9uQ2hhbmdlXCIsIHRoaXMuZGF0YS5PbkNoYW5nZSwgZXZlbnQsIGZpZWxkVmFsdWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhc2NhZGluZ0hhbmRsaW5nKHp1ZGZTY29wZTogYW55LCBmaWVsZE5hbWU6IGFueSwgZmllbGRWYWx1ZT86IGFueSkge1xyXG4gICAgY29uc3QgbGlua2VkQ29tcG9uZW50U2NvcGUgPSB6dWRmU2NvcGUubGlua2VkQ29tcG9uZW50O1xyXG4gICAgLy8gIzEgY2hlY2sgaXMgdGhlIG9uY2hhbmdlIGNvbXBvbmVudCBsaW5rZWQgdG8gb3RoZXIgY29tcG9uZW50LlxyXG4gICAgLy8gIzIgaWYgbGlua2VkIHRvIG90aGVyIGNvbXBvbmVudChsZXRzIGNhbGwgaXQgY2hpbGQgY29tcG9uZW50KSxcclxuICAgIC8vICAgIGJhc2Ugb24gdGhlIGxpbmtlZENvbXBvbmVudFNjb3BlIHZhbHVlLCBmaW5kIHRoZSBjaGlsZCBjb21wb25lbnQuXHJcbiAgICAvLyAjMyBrZWVwIHRoZSBvcmlnaW5hbCBTZWxlY3RPcHRpb25zIGluIHRoZSBjb21wb25lbnQuXHJcbiAgICAvLyAjNCBjbGVhciB0aGUgY2hpbGQgem1vZGVsIGFuZCBmaWx0ZXIgdGhlIGNoaWxkIGNvbXBvbmVudCBvcHRpb25zLlxyXG4gICAgLy8gIzUgYXV0byBzZWxlY3QgZGVmYXVsdCB6bW9kZWwgaWYgb25seSBoYXZlIDEgb3B0aW9uIGFuZCBpcyByZXF1aXJlZC5cclxuICAgIC8vICM2IGhhbmRsZSBjaGlsZCBuZXN0ZWQgbGlua2VkIGNvbXBvbmVudC5cclxuICAgIGxpbmtlZENvbXBvbmVudFNjb3BlLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGFWYWx1ZVNlZ21lbnRzID0gZmllbGROYW1lLnNwbGl0KCdfJyk7XHJcbiAgICAgIGNvbnN0IGxpbmtlZENvbXBvbmVudFNlZ21lbnRzID0gaXRlbS5saW5rZWRDb21wb25lbnQuc3BsaXQoJ18nKTtcclxuICAgICAgbGV0IGlzTGlua2VkQ29tcG9uZW50ID0gZmFsc2U7XHJcblxyXG4gICAgICAvLyBjaGVjayBpcyBpdCBsaW5rZWRjb21wb25lbnRcclxuICAgICAgaWYgKGxpbmtlZENvbXBvbmVudFNlZ21lbnRzLmxlbmd0aCA+IDEgJiYgZGF0YVZhbHVlU2VnbWVudHMubGVuZ3RoID4gMykge1xyXG4gICAgICAgIGNvbnN0IGxhc3RUd29TZWdtZW50cyA9IGRhdGFWYWx1ZVNlZ21lbnRzLnNsaWNlKC0yKS5qb2luKCdfJyk7XHJcbiAgICAgICAgaWYgKGxpbmtlZENvbXBvbmVudFNlZ21lbnRzLmpvaW4oJ18nKSA9PT0gbGFzdFR3b1NlZ21lbnRzKSB7XHJcbiAgICAgICAgICBpc0xpbmtlZENvbXBvbmVudCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGxpbmtlZENvbXBvbmVudFNlZ21lbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIGNvbnN0IGxhc3RTZWdtZW50ID0gZGF0YVZhbHVlU2VnbWVudHNbZGF0YVZhbHVlU2VnbWVudHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgaWYgKGxpbmtlZENvbXBvbmVudFNlZ21lbnRzWzBdID09PSBsYXN0U2VnbWVudCkge1xyXG4gICAgICAgICAgaXNMaW5rZWRDb21wb25lbnQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzTGlua2VkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRDb21wb25lbnQgPSBaQ29tcG9uZW50SGVscGVyLmdldENvbXBvbmVudEJ5VmFsdWUodGhpcy5ncm91cCwgaXRlbS52YWx1ZSk7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTZWxlY3RPcHRpb25zID0gY2hpbGRDb21wb25lbnQuZGF0YVsnb3JpZ2luYWxTZWxlY3RPcHRpb25zJ10gPz8gT2JqZWN0LmFzc2lnbihbXSwgY2hpbGRDb21wb25lbnQuZGF0YS5TZWxlY3RPcHRpb25zKTtcclxuICAgICAgICBjb25zdCBmaWx0ZXJlZFNlbGVjdGlvbk9wdGlvbnMgPSBvcmlnaW5hbFNlbGVjdE9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24ucGFyZW50RXhwcmVzc2lvbiA9PSBmaWVsZFZhbHVlKTtcclxuXHJcbiAgICAgICAgLy9jaGlsZENvbXBvbmVudC5jbGVhckRhdGEoKTsgLy91bmFibGUgdG8gdXNlIGNsZWFyRGF0YS4gbm90IGhhbmRsZWQgZm9yIHp1ZGYgdHlwZVxyXG4gICAgICAgIC8vIG1hbnVhbGwgcGF0Y2ggdGhlIGNvbXBvbmVudCBmb3JtY29udHJvbCB2YWx1ZVxyXG4gICAgICAgIGNvbnN0IHp1ZGZGb3JtID0genVkZlNjb3BlLmZvcm0gYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEZvcm1Db250cm9sID0genVkZkZvcm0uY29udHJvbHNbaXRlbS52YWx1ZV0gYXMgRm9ybUNvbnRyb2w7XHJcbiAgICAgICAgenVkZlNjb3BlLnpNb2RlbFtpdGVtLnZhbHVlXSA9IG51bGw7XHJcbiAgICAgICAgY29tcG9uZW50Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh6dWRmU2NvcGUuek1vZGVsW2l0ZW0udmFsdWVdKTtcclxuXHJcbiAgICAgICAgY2hpbGRDb21wb25lbnQuZGF0YVsnb3JpZ2luYWxTZWxlY3RPcHRpb25zJ10gPSBvcmlnaW5hbFNlbGVjdE9wdGlvbnM7XHJcbiAgICAgICAgY2hpbGRDb21wb25lbnQuc2V0U2VsZWN0T3B0aW9uKGZpbHRlcmVkU2VsZWN0aW9uT3B0aW9ucyk7XHJcblxyXG4gICAgICAgIC8vIHNldCBkcm9wZG93biBzZWxlY3RlZCB2YWx1ZSBpZiBvbmx5IDEgb3B0aW9uLlxyXG4gICAgICAgIGNvbnN0IGNoaWxkQ29tcG9uZW50VHlwZSA9IGNoaWxkQ29tcG9uZW50LmRhdGEuVHlwZTtcclxuICAgICAgICBpZiAoZmlsdGVyZWRTZWxlY3Rpb25PcHRpb25zLmxlbmd0aCA9PT0gMSAmJiBjaGlsZENvbXBvbmVudC5kYXRhLklzUmVxdWlyZWQgJiYgKGNoaWxkQ29tcG9uZW50VHlwZSA9PT0gJ3p1aXNlbGVjdG11bHRpcGxlJyB8fCBjaGlsZENvbXBvbmVudFR5cGUgPT09ICd6c2VsZWN0bXVsdGlwbGUnKSkge1xyXG4gICAgICAgICAgenVkZlNjb3BlLnpNb2RlbFtpdGVtLnZhbHVlXSA9IGZpbHRlcmVkU2VsZWN0aW9uT3B0aW9uc1swXVtjaGlsZENvbXBvbmVudC5pdGVtVmFsdWVGaWVsZF07XHJcbiAgICAgICAgICBjb21wb25lbnRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHp1ZGZTY29wZS56TW9kZWxbaXRlbS52YWx1ZV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbG9vcCBjaGlsZHJlbiBpbmNhc2Ugb2YgbmVzdGVkIGNoaWxkLlxyXG4gICAgICAgIGNvbnN0IGNoaWxkQ29tcG9uZW50VmFsdWVTZWdtZW50cyA9IGNoaWxkQ29tcG9uZW50LmRhdGEuVmFsdWUuc3BsaXQoJ18nKTtcclxuICAgICAgICB0aGlzLmNhc2NhZGluZ0hhbmRsaW5nKHp1ZGZTY29wZSwgY2hpbGRDb21wb25lbnRWYWx1ZVNlZ21lbnRzW2NoaWxkQ29tcG9uZW50VmFsdWVTZWdtZW50cy5sZW5ndGggLSAxXSwgenVkZlNjb3BlLnpNb2RlbFtpdGVtLnZhbHVlXSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZm9jdXNPbkRlZmF1bHQoZm9jdXNGdW5jdGlvbjogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLklzRm9jdXMpIHtcclxuICAgICAgbGV0IGNvdW50ZXIgPSAwO1xyXG4gICAgICBsZXQgaXNGb2N1c2VkID0gZmFsc2U7XHJcbiAgICAgIGludGVydmFsKDUwMCkucGlwZShcclxuICAgICAgICB0YWtlV2hpbGUoeCA9PiBjb3VudGVyIDwgNSAmJiAhaXNGb2N1c2VkKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgaXNGb2N1c2VkID0gZm9jdXNGdW5jdGlvbigpO1xyXG4gICAgICAgICAgY291bnRlcisrO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -14,9 +14,9 @@ import * as i4 from "@fortawesome/angular-fontawesome";
14
14
  import * as i5 from "@ionic/angular";
15
15
  import * as i6 from "../uivalidationmessage/uivalidationmessage.component";
16
16
  import * as i7 from "@progress/kendo-angular-dropdowns";
17
- import * as i8 from "@angular/forms";
18
- import * as i9 from "@angular/common";
19
- import * as i10 from "@progress/kendo-angular-inputs";
17
+ import * as i8 from "../ztext/ztext.component";
18
+ import * as i9 from "@angular/forms";
19
+ import * as i10 from "@angular/common";
20
20
  export class ZpostselectinputComponent extends InputFieldBase {
21
21
  constructor(resourceApiService, webApiService, cacheService, compService) {
22
22
  super(compService);
@@ -120,8 +120,8 @@ export class ZpostselectinputComponent extends InputFieldBase {
120
120
  }
121
121
  console.warn(this.data.Name, ' - Invalid setting for OptionName: ', optionName);
122
122
  }
123
- onChange_desktop(event) {
124
- super.onChange(null, event);
123
+ onChangeCC_desktop(event) {
124
+ super.onChangeCC(null, event);
125
125
  this.handleInfiniteScrollOnChange(event);
126
126
  }
127
127
  onChange_mobile(event) {
@@ -297,10 +297,10 @@ export class ZpostselectinputComponent extends InputFieldBase {
297
297
  }
298
298
  }
299
299
  ZpostselectinputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZpostselectinputComponent, deps: [{ token: i1.ResourceApiService }, { token: i1.WebApiService }, { token: i1.CacheService }, { token: i2.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
300
- ZpostselectinputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ZpostselectinputComponent, selector: "app-zpostselectinput", viewQueries: [{ propertyName: "comboBox", first: true, predicate: ["comboBox"], descendants: true }, { propertyName: "selectComponent", first: true, predicate: ["selectComponent"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"zpostselectinput-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div *ngIf=\"isMobileScreen() && !isLoading\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span style=\"flex-basis: 35%;\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n <ionic-selectable #selectComponent item-content [id]=\"data.CCValue\" headerColor=\"primary\" clearButtonText=\"Clear\"\r\n [canClear]=\"true\" searchFailText=\"Nothing found :(\" [canSearch]=\"!data['disable-search']\"\r\n [placeholder]=\"data.CCPlaceHolder\" [(ngModel)]=\"group.zModel[data.CCValue]\"\r\n [shouldFocusSearchbar]=\"!data['disable-search']\" [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\"\r\n (onSearch)=\"onSearch($event)\" (onInfiniteScroll)=\"getInfiniteData($event)\" [isMultiple]=\"data.Multiple\"\r\n [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [items]=\"getItemsData()\" [itemValueField]=\"itemValueField\" [itemTextField]=\"itemTextField\"\r\n [shouldStoreItemValue]=\"true\" [canAddItem]=\"!!data.OnAddItem\" (onAddItem)=\"onAddItem($event)\"\r\n (onChange)=\"onChange_mobile($event)\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n\r\n <ng-template ionicSelectableItemIconTemplate let-item=\"item\" let-isItemSelected=\"isItemSelected\">\r\n <fa-icon slot=\"start\" class=\"isItemSelected e1tag-style4\" [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n size=\"sm\" [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\" [style]=\"componentProperties.style.style4\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableCloseButtonTemplate>\r\n <!-- <ion-icon name=\"close-circle\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times-circle'\" size=\"md\" class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableTitleTemplate>\r\n {{data.Label}}\r\n <ion-text\r\n *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">*</ion-text>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableItemTemplate let-item=\"item\">\r\n {{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}\r\n <!-- <ng-template zselectitemelement [item]=\"item\"></ng-template> -->\r\n </ng-template>\r\n </ionic-selectable>\r\n </span>\r\n <span style=\"flex-basis: 60%; margin-left: 5px;\" [formGroup]=\"form\">\r\n <ion-input [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" [type]=\"'text'\" [formControlName]=\"data.Value\"\r\n [readonly]=\"data.ReadOnly\" [inputmode]=\"'text'\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></ion-input>\r\n </span>\r\n <app-uivalidationmessage style=\"flex-basis: 5%;\" [group]=\"group\" [data]=\"data\" [form]=\"form\">\r\n </app-uivalidationmessage>\r\n </div>\r\n <div *ngIf=\"!isMobileScreen()\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span style=\"flex-basis: 35%;\" [style]=\"componentProperties.style.style2\" class=\"e1tag-style2\">\r\n <kendo-combobox [id]=\"data.CCValue\" [data]=\"getItemsData()\" [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\" [formControlName]=\"data.CCValue\" [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.CCPlaceHolder\" (valueChange)=\"onChange_desktop($event)\" [filterable]=\"!!data.HasInfiniteScroll\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (filterChange)=\"handleFilter($event)\" (open)=\"handleOpen()\" (close)=\"handleClose()\" (blur)=\"handleBlur()\"\r\n class=\"input-field e1tag-style3\" [loading]=\"isLoading\" [style]=\"componentProperties.style.style3\"\r\n #comboBox>\r\n </kendo-combobox>\r\n </span>\r\n <span style=\"flex-basis: 60%; margin-left: 5px;\" [formGroup]=\"form\">\r\n <input kendoTextBox [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" type=\"text\" [formControlName]=\"data.Value\"\r\n style=\"margin: 7px 0 0 0; width: 100%\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"/>\r\n </span>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-combobox:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}\n"], components: [{ type: i3.IonicSelectableComponent, selector: "ionic-selectable", inputs: ["items", "modalCssClass", "modalEnterAnimation", "modalLeaveAnimation", "isConfirmButtonEnabled", "itemValueField", "itemTextField", "groupValueField", "groupTextField", "canSearch", "hasInfiniteScroll", "hasVirtualScroll", "virtualScrollApproxItemHeight", "searchPlaceholder", "placeholder", "searchFailText", "clearButtonText", "addButtonText", "confirmButtonText", "closeButtonText", "shouldFocusSearchbar", "headerColor", "groupColor", "closeButtonSlot", "itemIconSlot", "searchDebounce", "disabledItems", "shouldStoreItemValue", "canSaveItem", "canDeleteItem", "virtualScrollHeaderFn", "isEnabled", "shouldBackdropClose", "hasConfirmButton", "isOnSearchEnabled", "canClear", "isMultiple", "canAddItem"], outputs: ["itemsChange", "onChange", "onSearch", "onSearchFail", "onSearchSuccess", "onInfiniteScroll", "onOpen", "onClose", "onSelect", "onClear", "onSaveItem", "onDeleteItem", "onAddItem"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i5.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i6.UivalidationmessageComponent, selector: "app-uivalidationmessage", inputs: ["group", "data", "form"] }, { type: i7.ComboBoxComponent, selector: "kendo-combobox", inputs: ["focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "popupSettings", "listHeight", "iconClass", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoComboBox"] }], directives: [{ type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.IonicSelectableItemIconTemplateDirective, selector: "[ionicSelectableItemIconTemplate]" }, { type: i3.IonicSelectableCloseButtonTemplateDirective, selector: "[ionicSelectableCloseButtonTemplate]" }, { type: i3.IonicSelectableTitleTemplateDirective, selector: "[ionicSelectableTitleTemplate]" }, { type: i3.IonicSelectableItemTemplateDirective, selector: "[ionicSelectableItemTemplate]" }, { type: i5.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i10.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }] });
300
+ ZpostselectinputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ZpostselectinputComponent, selector: "app-zpostselectinput", viewQueries: [{ propertyName: "comboBox", first: true, predicate: ["comboBox"], descendants: true }, { propertyName: "selectComponent", first: true, predicate: ["selectComponent"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"zpostselectinput-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div *ngIf=\"isMobileScreen() && !isLoading\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span class=\"ccinput-ccvalue-container e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n <ionic-selectable #selectComponent item-content [id]=\"data.CCValue\" headerColor=\"primary\" clearButtonText=\"Clear\"\r\n [canClear]=\"true\" searchFailText=\"Nothing found :(\" [canSearch]=\"!data['disable-search']\"\r\n [placeholder]=\"data.CCPlaceHolder\" [(ngModel)]=\"group.zModel[data.CCValue]\"\r\n [shouldFocusSearchbar]=\"!data['disable-search']\" [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\"\r\n (onSearch)=\"onSearch($event)\" (onInfiniteScroll)=\"getInfiniteData($event)\" [isMultiple]=\"data.Multiple\"\r\n [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [items]=\"getItemsData()\" [itemValueField]=\"itemValueField\" [itemTextField]=\"itemTextField\"\r\n [shouldStoreItemValue]=\"true\" [canAddItem]=\"!!data.OnAddItem\" (onAddItem)=\"onAddItem($event)\"\r\n (onChange)=\"onChange_mobile($event)\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n\r\n <ng-template ionicSelectableItemIconTemplate let-item=\"item\" let-isItemSelected=\"isItemSelected\">\r\n <fa-icon slot=\"start\" class=\"isItemSelected e1tag-style4\" [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n size=\"sm\" [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\" [style]=\"componentProperties.style.style4\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableCloseButtonTemplate>\r\n <!-- <ion-icon name=\"close-circle\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times-circle'\" size=\"md\" class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableTitleTemplate>\r\n {{data.Label}}\r\n <ion-text\r\n *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">*</ion-text>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableItemTemplate let-item=\"item\">\r\n {{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}\r\n <!-- <ng-template zselectitemelement [item]=\"item\"></ng-template> -->\r\n </ng-template>\r\n </ionic-selectable>\r\n </span>\r\n <span [formGroup]=\"form\" class=\"ccinput-value-container e1tag-style7\" [style]=\"componentProperties.containerStyle.style7\">\r\n <ion-input [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" [type]=\"'text'\" [formControlName]=\"data.Value\"\r\n [readonly]=\"data.ReadOnly\" [inputmode]=\"'text'\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></ion-input>\r\n </span>\r\n <app-uivalidationmessage style=\"flex-basis: 5%;\" [group]=\"group\" [data]=\"data\" [form]=\"form\">\r\n </app-uivalidationmessage>\r\n </div>\r\n <div *ngIf=\"!isMobileScreen()\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span [style]=\"componentProperties.style.style2\" class=\"ccinput-ccvalue-container e1tag-style2\">\r\n <kendo-combobox [id]=\"data.CCValue\" [data]=\"getItemsData()\" [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\" [formControlName]=\"data.CCValue\" [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.CCPlaceHolder\" (valueChange)=\"onChangeCC_desktop($event)\" [filterable]=\"!!data.HasInfiniteScroll\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (filterChange)=\"handleFilter($event)\" (open)=\"handleOpen()\" (close)=\"handleClose()\" (blur)=\"handleBlur()\"\r\n class=\"input-field e1tag-style3\" [loading]=\"isLoading\" [style]=\"componentProperties.style.style3\"\r\n #comboBox>\r\n </kendo-combobox>\r\n </span>\r\n <span [formGroup]=\"form\" class=\"ccinput-value-container e1tag-style7\" [style]=\"componentProperties.containerStyle.style7\">\r\n <app-ztext [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n </app-ztext>\r\n </span>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-combobox:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.ccinput-value-container{flex-basis:60%;margin-left:5px}.ccinput-ccvalue-container{flex-basis:35%}\n"], components: [{ type: i3.IonicSelectableComponent, selector: "ionic-selectable", inputs: ["items", "modalCssClass", "modalEnterAnimation", "modalLeaveAnimation", "isConfirmButtonEnabled", "itemValueField", "itemTextField", "groupValueField", "groupTextField", "canSearch", "hasInfiniteScroll", "hasVirtualScroll", "virtualScrollApproxItemHeight", "searchPlaceholder", "placeholder", "searchFailText", "clearButtonText", "addButtonText", "confirmButtonText", "closeButtonText", "shouldFocusSearchbar", "headerColor", "groupColor", "closeButtonSlot", "itemIconSlot", "searchDebounce", "disabledItems", "shouldStoreItemValue", "canSaveItem", "canDeleteItem", "virtualScrollHeaderFn", "isEnabled", "shouldBackdropClose", "hasConfirmButton", "isOnSearchEnabled", "canClear", "isMultiple", "canAddItem"], outputs: ["itemsChange", "onChange", "onSearch", "onSearchFail", "onSearchSuccess", "onInfiniteScroll", "onOpen", "onClose", "onSelect", "onClear", "onSaveItem", "onDeleteItem", "onAddItem"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i5.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i6.UivalidationmessageComponent, selector: "app-uivalidationmessage", inputs: ["group", "data", "form"] }, { type: i7.ComboBoxComponent, selector: "kendo-combobox", inputs: ["focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "popupSettings", "listHeight", "iconClass", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoComboBox"] }, { type: i8.ZtextComponent, selector: "app-ztext" }], directives: [{ type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.IonicSelectableItemIconTemplateDirective, selector: "[ionicSelectableItemIconTemplate]" }, { type: i3.IonicSelectableCloseButtonTemplateDirective, selector: "[ionicSelectableCloseButtonTemplate]" }, { type: i3.IonicSelectableTitleTemplateDirective, selector: "[ionicSelectableTitleTemplate]" }, { type: i3.IonicSelectableItemTemplateDirective, selector: "[ionicSelectableItemTemplate]" }, { type: i5.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
301
301
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ZpostselectinputComponent, decorators: [{
302
302
  type: Component,
303
- args: [{ selector: "app-zpostselectinput", template: "<div [formGroup]=\"form\" class=\"zpostselectinput-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div *ngIf=\"isMobileScreen() && !isLoading\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span style=\"flex-basis: 35%;\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n <ionic-selectable #selectComponent item-content [id]=\"data.CCValue\" headerColor=\"primary\" clearButtonText=\"Clear\"\r\n [canClear]=\"true\" searchFailText=\"Nothing found :(\" [canSearch]=\"!data['disable-search']\"\r\n [placeholder]=\"data.CCPlaceHolder\" [(ngModel)]=\"group.zModel[data.CCValue]\"\r\n [shouldFocusSearchbar]=\"!data['disable-search']\" [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\"\r\n (onSearch)=\"onSearch($event)\" (onInfiniteScroll)=\"getInfiniteData($event)\" [isMultiple]=\"data.Multiple\"\r\n [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [items]=\"getItemsData()\" [itemValueField]=\"itemValueField\" [itemTextField]=\"itemTextField\"\r\n [shouldStoreItemValue]=\"true\" [canAddItem]=\"!!data.OnAddItem\" (onAddItem)=\"onAddItem($event)\"\r\n (onChange)=\"onChange_mobile($event)\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n\r\n <ng-template ionicSelectableItemIconTemplate let-item=\"item\" let-isItemSelected=\"isItemSelected\">\r\n <fa-icon slot=\"start\" class=\"isItemSelected e1tag-style4\" [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n size=\"sm\" [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\" [style]=\"componentProperties.style.style4\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableCloseButtonTemplate>\r\n <!-- <ion-icon name=\"close-circle\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times-circle'\" size=\"md\" class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableTitleTemplate>\r\n {{data.Label}}\r\n <ion-text\r\n *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">*</ion-text>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableItemTemplate let-item=\"item\">\r\n {{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}\r\n <!-- <ng-template zselectitemelement [item]=\"item\"></ng-template> -->\r\n </ng-template>\r\n </ionic-selectable>\r\n </span>\r\n <span style=\"flex-basis: 60%; margin-left: 5px;\" [formGroup]=\"form\">\r\n <ion-input [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" [type]=\"'text'\" [formControlName]=\"data.Value\"\r\n [readonly]=\"data.ReadOnly\" [inputmode]=\"'text'\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></ion-input>\r\n </span>\r\n <app-uivalidationmessage style=\"flex-basis: 5%;\" [group]=\"group\" [data]=\"data\" [form]=\"form\">\r\n </app-uivalidationmessage>\r\n </div>\r\n <div *ngIf=\"!isMobileScreen()\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span style=\"flex-basis: 35%;\" [style]=\"componentProperties.style.style2\" class=\"e1tag-style2\">\r\n <kendo-combobox [id]=\"data.CCValue\" [data]=\"getItemsData()\" [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\" [formControlName]=\"data.CCValue\" [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.CCPlaceHolder\" (valueChange)=\"onChange_desktop($event)\" [filterable]=\"!!data.HasInfiniteScroll\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (filterChange)=\"handleFilter($event)\" (open)=\"handleOpen()\" (close)=\"handleClose()\" (blur)=\"handleBlur()\"\r\n class=\"input-field e1tag-style3\" [loading]=\"isLoading\" [style]=\"componentProperties.style.style3\"\r\n #comboBox>\r\n </kendo-combobox>\r\n </span>\r\n <span style=\"flex-basis: 60%; margin-left: 5px;\" [formGroup]=\"form\">\r\n <input kendoTextBox [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" type=\"text\" [formControlName]=\"data.Value\"\r\n style=\"margin: 7px 0 0 0; width: 100%\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"/>\r\n </span>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-combobox:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}\n"] }]
303
+ args: [{ selector: "app-zpostselectinput", template: "<div [formGroup]=\"form\" class=\"zpostselectinput-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div *ngIf=\"isMobileScreen() && !isLoading\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span class=\"ccinput-ccvalue-container e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n <ionic-selectable #selectComponent item-content [id]=\"data.CCValue\" headerColor=\"primary\" clearButtonText=\"Clear\"\r\n [canClear]=\"true\" searchFailText=\"Nothing found :(\" [canSearch]=\"!data['disable-search']\"\r\n [placeholder]=\"data.CCPlaceHolder\" [(ngModel)]=\"group.zModel[data.CCValue]\"\r\n [shouldFocusSearchbar]=\"!data['disable-search']\" [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\"\r\n (onSearch)=\"onSearch($event)\" (onInfiniteScroll)=\"getInfiniteData($event)\" [isMultiple]=\"data.Multiple\"\r\n [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [items]=\"getItemsData()\" [itemValueField]=\"itemValueField\" [itemTextField]=\"itemTextField\"\r\n [shouldStoreItemValue]=\"true\" [canAddItem]=\"!!data.OnAddItem\" (onAddItem)=\"onAddItem($event)\"\r\n (onChange)=\"onChange_mobile($event)\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n\r\n <ng-template ionicSelectableItemIconTemplate let-item=\"item\" let-isItemSelected=\"isItemSelected\">\r\n <fa-icon slot=\"start\" class=\"isItemSelected e1tag-style4\" [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n size=\"sm\" [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\" [style]=\"componentProperties.style.style4\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableCloseButtonTemplate>\r\n <!-- <ion-icon name=\"close-circle\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times-circle'\" size=\"md\" class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableTitleTemplate>\r\n {{data.Label}}\r\n <ion-text\r\n *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">*</ion-text>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableItemTemplate let-item=\"item\">\r\n {{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}\r\n <!-- <ng-template zselectitemelement [item]=\"item\"></ng-template> -->\r\n </ng-template>\r\n </ionic-selectable>\r\n </span>\r\n <span [formGroup]=\"form\" class=\"ccinput-value-container e1tag-style7\" [style]=\"componentProperties.containerStyle.style7\">\r\n <ion-input [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" [type]=\"'text'\" [formControlName]=\"data.Value\"\r\n [readonly]=\"data.ReadOnly\" [inputmode]=\"'text'\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></ion-input>\r\n </span>\r\n <app-uivalidationmessage style=\"flex-basis: 5%;\" [group]=\"group\" [data]=\"data\" [form]=\"form\">\r\n </app-uivalidationmessage>\r\n </div>\r\n <div *ngIf=\"!isMobileScreen()\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <span [style]=\"componentProperties.style.style2\" class=\"ccinput-ccvalue-container e1tag-style2\">\r\n <kendo-combobox [id]=\"data.CCValue\" [data]=\"getItemsData()\" [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\" [formControlName]=\"data.CCValue\" [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.CCPlaceHolder\" (valueChange)=\"onChangeCC_desktop($event)\" [filterable]=\"!!data.HasInfiniteScroll\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (filterChange)=\"handleFilter($event)\" (open)=\"handleOpen()\" (close)=\"handleClose()\" (blur)=\"handleBlur()\"\r\n class=\"input-field e1tag-style3\" [loading]=\"isLoading\" [style]=\"componentProperties.style.style3\"\r\n #comboBox>\r\n </kendo-combobox>\r\n </span>\r\n <span [formGroup]=\"form\" class=\"ccinput-value-container e1tag-style7\" [style]=\"componentProperties.containerStyle.style7\">\r\n <app-ztext [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n </app-ztext>\r\n </span>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-combobox:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.ccinput-value-container{flex-basis:60%;margin-left:5px}.ccinput-ccvalue-container{flex-basis:35%}\n"] }]
304
304
  }], ctorParameters: function () { return [{ type: i1.ResourceApiService }, { type: i1.WebApiService }, { type: i1.CacheService }, { type: i2.ZComponentService }]; }, propDecorators: { comboBox: [{
305
305
  type: ViewChild,
306
306
  args: ["comboBox"]
@@ -308,4 +308,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
308
308
  type: ViewChild,
309
309
  args: ["selectComponent", { static: true }]
310
310
  }] } });
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienBvc3RzZWxlY3RpbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cG9zdHNlbGVjdGlucHV0L3pwb3N0c2VsZWN0aW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenBvc3RzZWxlY3RpbnB1dC96cG9zdHNlbGVjdGlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLeEUsOEJBQThCO0FBQzlCLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUVPLGdCQUFnQixFQUFpQyxvQkFBb0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVXhFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxjQUFjO0lBdUIzRCxZQUNVLGtCQUFzQyxFQUN0QyxhQUE0QixFQUM1QixZQUEwQixFQUNsQyxXQUE4QjtRQUM1QixLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFKWix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBdEJwQyxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBRXZCLGtCQUFhLEdBQWUsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQiw4QkFBOEI7UUFD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SSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzt1SEE3VVUseUJBQXlCOzJHQUF6Qix5QkFBeUIsNFNDekJ0Qyx1ckpBNERBOzRGRG5DYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usc0JBQXNCO2dNQUtULFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFFckIsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBJb25pY1NlbGVjdGFibGVDb21wb25lbnQgfSBmcm9tIFwiaW9uaWMtc2VsZWN0YWJsZVwiO1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHtcclxuICBDYWNoZVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZSwgV2ViQXBpU2VydmljZSxcclxuICBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaU2VsZWN0TXVsdGlwbGVUZW1wbGF0ZVBhcmFtcywgWlNlbGVjdFBvc3RBcGlQYXJhbXN9IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuaW1wb3J0IHsgSW5wdXRGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9pbnB1dGZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbWJvQm94Q29tcG9uZW50IH0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC16cG9zdHNlbGVjdGlucHV0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi96cG9zdHNlbGVjdGlucHV0LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3pwb3N0c2VsZWN0aW5wdXQuY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFpwb3N0c2VsZWN0aW5wdXRDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKFwiY29tYm9Cb3hcIikgY29tYm9Cb3g6IENvbWJvQm94Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJzZWxlY3RDb21wb25lbnRcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBzZWxlY3RDb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDtcclxuICBpdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIG1vZGVsekRhdGE6IEFycmF5PGFueT47XHJcbiAgaW5maW5pdGV6RGF0YTogQXJyYXk8YW55PiA9IFtdO1xyXG4gIGluZmluaXRlU2VhcmNoVGV4dCA9IG51bGw7XHJcbiAgLy8gc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgdG9nZ2xlU2VsZWN0YWJsZSA9IHRydWU7XHJcbiAgaXRlbVZhbHVlRmllbGQ6IHN0cmluZyA9IG51bGw7XHJcbiAgaXRlbVRleHRGaWVsZDogc3RyaW5nID0gbnVsbDtcclxuICBpdGVtRGF0YUZpZWxkOiBzdHJpbmcgPSBudWxsO1xyXG4gIGl0ZW1UZW1wbGF0ZSA9IFwie3tpdGVtW2l0ZW1UZXh0RmllbGRdfX1cIjtcclxuICBpbmZpbml0ZVNjcm9sbFBhZ2VObyA9IDA7XHJcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcclxuICBwcml2YXRlIGRlYm91bmNlU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgZGF0YUluZm86IHt9ID0ge1xyXG4gICAgXCJpdGVtc1Jlc291cmNlVVJMXCI6IFwiXCIsXHJcbiAgICBcIm9wdGlvbkZpbHRlcnNcIjogXCJcIixcclxuICAgIFwidG90YWxDb3VudFwiOiAwXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSxcclxuICAgIGNvbXBTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZVxyXG4gICkgeyBzdXBlcihjb21wU2VydmljZSkgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIC8vIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VTdWIpIHtcclxuICAgICAgdGhpcy5kZWJvdW5jZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICBzdXBlci5zZXR1cElubmVyRmllbGQoKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0U2VsZWN0TXVsdGlwbGVUZXh0VmFsdWUodGhpcy5kYXRhLkNDU2VsZWN0T3B0aW9ucywgdGhpcyk7XHJcblxyXG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuZGF0YS5DQ1ZhbHVlO1xyXG4gICAgbGV0IGdldHpEYXRhRm9yek1vZGVsJDogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCAmJiB0aGlzLmRhdGEuSW5maW5pdGVTY3JvbGwkXHJcbiAgICAgICYmIHRoaXMuZ3JvdXAuek1vZGVsICYmIHRoaXMuZ3JvdXAuek1vZGVsW2ZpZWxkVmFsdWVdKSB7XHJcbiAgICAgIGNvbnN0IHJlY29yZElkID0gdGhpcy5ncm91cC56TW9kZWxbZmllbGRWYWx1ZV07XHJcbiAgICAgIGdldHpEYXRhRm9yek1vZGVsJCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0SW5maW5pdGVEYXRhKG51bGwsICcnLCB0aGlzLCByZWNvcmRJZC50b1N0cmluZygpKTtcclxuICAgICAgaWYgKGdldHpEYXRhRm9yek1vZGVsJCkge1xyXG4gICAgICAgIGdldHpEYXRhRm9yek1vZGVsJC5zdWJzY3JpYmUoKHpkYXRhKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGEuTmFtZSwgJyAtIGluaXRpYWwgekRhdGEgbG9hZDogJywgemRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghWkNvbXBvbmVudEhlbHBlci5pc01vYmlsZVNjcmVlbigpKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVGaWx0ZXIobnVsbCwgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuQ0NPcHRpb25SZXNvdXJjZVVSTCkge1xyXG4gICAgICAgIHRoaXMubGF6eUxvYWREYXRhT3B0aW9ucygpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHN1cGVyLmZvY3VzT25EZWZhdWx0KHRoaXMuZm9jdXMuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBsYXp5TG9hZERhdGFPcHRpb25zKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCByZXNvdXJjZVVybCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcclxuICAgICAgdGhpcy5kYXRhLkNDT3B0aW9uUmVzb3VyY2VVUkxcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyUGFyYW0gPSBuZXcgWlNlbGVjdFBvc3RBcGlQYXJhbXMoKTtcclxuICAgIGZpbHRlclBhcmFtLnNvcnRzID0gdGhpcy5kYXRhLkNDT3B0aW9uU29ydDtcclxuICAgIGZpbHRlclBhcmFtLmNvbHVtbnMgPSB0aGlzLmRhdGEuQ0NPcHRpb25Db2x1bW5zO1xyXG4gICAgZmlsdGVyUGFyYW0uZmlsdGVycyA9IHRoaXMuZGF0YS5DQ09wdGlvbkZpbHRlcjtcclxuXHJcbiAgICByZXR1cm4gWkNvbXBvbmVudEhlbHBlci5nZXREYXRhT3B0aW9ucyhcclxuICAgICAgdGhpcy5kYXRhLkNDT3B0aW9uTmFtZSxcclxuICAgICAgZmlsdGVyUGFyYW0sXHJcbiAgICAgIHRoaXMuZ3JvdXAsXHJcbiAgICAgIHJlc291cmNlVXJsLFxyXG4gICAgICB0aGlzLmNhY2hlU2VydmljZSxcclxuICAgICAgdGhpcy53ZWJBcGlTZXJ2aWNlLFxyXG4gICAgICB0aGlzLmRhdGFbJ0Rpc2FibGVDYWNoZSddXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEl0ZW1zRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5maW5pdGV6RGF0YTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9wdGlvbk5hbWUgPSB0aGlzLmRhdGEuQ0NPcHRpb25OYW1lIHx8IHRoaXMuaXRlbURhdGFGaWVsZCB8fCAnZ3JvdXAuekRhdGEuJyArIHRoaXMuZGF0YS5OYW1lO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhLkNDU2VsZWN0T3B0aW9ucykgJiYgIXRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildKSB7XHJcbiAgICAgIC8vIHJldHVybiBzZWxlY3Rpb25PcHRpb25zO1xyXG4gICAgICAvLyByZXR1cm4gdGhpcy5kYXRhLlNlbGVjdE9wdGlvbnM7XHJcbiAgICAgIHRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildID0gdGhpcy5kYXRhLkNDU2VsZWN0T3B0aW9ucztcclxuICAgICAgdGhpcy5pdGVtRGF0YUZpZWxkID0gb3B0aW9uTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9uTmFtZS5zdGFydHNXaXRoKCd6RGF0YS4nKSkge1xyXG4gICAgICAvLyB0aGlzLml0ZW1zID0gdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDYpXTtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSg2KV0gfHwgW107XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9uTmFtZS5zdGFydHNXaXRoKCdncm91cC56RGF0YS4nKSkge1xyXG4gICAgICAvLyB0aGlzLml0ZW1zID0gdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV07XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIC8vIHRoaXMuaXRlbXMgPSB0aGlzLmdyb3VwW29wdGlvbk5hbWUuc2xpY2UoNildO1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cFtvcHRpb25OYW1lLnNsaWNlKDYpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lKSB7XHJcbiAgICAgIC8vIHRoaXMuaXRlbXMgPSB0aGlzLmdyb3VwW29wdGlvbk5hbWVdO1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cFtvcHRpb25OYW1lXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUud2Fybih0aGlzLmRhdGEuTmFtZSwgJyAtIEludmFsaWQgc2V0dGluZyBmb3IgT3B0aW9uTmFtZTogJywgb3B0aW9uTmFtZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlX2Rlc2t0b3AoZXZlbnQ6IGFueSkge1xyXG4gICAgc3VwZXIub25DaGFuZ2UobnVsbCwgZXZlbnQpXHJcbiAgICB0aGlzLmhhbmRsZUluZmluaXRlU2Nyb2xsT25DaGFuZ2UoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlX21vYmlsZShldmVudDogeyBjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDsgdmFsdWU6IGFueSB9KSB7XHJcbiAgICBzdXBlci5vbkNoYW5nZShldmVudClcclxuICAgIGNvbnN0IGZjID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5DQ1ZhbHVlXTtcclxuICAgIHRoaXMuaGFuZGxlQ2xvc2UoKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHN1cGVyLmdldElzUmVxdWlyZWRWYWx1ZSgpICYmIChldmVudC52YWx1ZSA9PT0gbnVsbCB8fCBldmVudC52YWx1ZS5sZW5ndGggPT09IDApXHJcbiAgICApIHtcclxuICAgICAgZmMuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmYy5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVJbmZpbml0ZVNjcm9sbE9uQ2hhbmdlKGV2ZW50LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSW5maW5pdGVTY3JvbGxPbkNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsICYmICEhdGhpcy5kYXRhLkluZmluaXRlU2Nyb2xsJCkge1xyXG4gICAgICBjb25zdCB0ZXh0RmllbGQgPSB0aGlzLml0ZW1UZXh0RmllbGQudG9TdHJpbmcoKTtcclxuICAgICAgY29uc3QgdmFsdWVGaWVsZCA9IHRoaXMuaXRlbVZhbHVlRmllbGQudG9TdHJpbmcoKTtcclxuICAgICAgbGV0IHpkYXRhTW9kZWwgPSBbXTtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgemRhdGFNb2RlbCA9IHRoaXMuaW5maW5pdGV6RGF0YS5maWx0ZXIoeCA9PiB4W3ZhbHVlRmllbGRdID09PSB2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5tb2RlbHpEYXRhID0gemRhdGFNb2RlbC5zbGljZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLml0ZW1EYXRhRmllbGQuc3RhcnRzV2l0aCgnZ3JvdXAuekRhdGEuJykpIHtcclxuICAgICAgICB0aGlzLmdyb3VwLnpEYXRhW3RoaXMuaXRlbURhdGFGaWVsZC5zbGljZSgxMildID0gemRhdGFNb2RlbDtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLml0ZW1EYXRhRmllbGQuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICB0aGlzLmdyb3VwW3RoaXMuaXRlbURhdGFGaWVsZC5zbGljZSg2KV0gPSB6ZGF0YU1vZGVsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhckl0ZW1zKCkge1xyXG4gICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY2xlYXIoKTtcclxuICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVJdGVtcygpIHtcclxuICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LnRvZ2dsZUl0ZW1zKHRoaXMudG9nZ2xlU2VsZWN0YWJsZSk7XHJcbiAgICB0aGlzLnRvZ2dsZVNlbGVjdGFibGUgPSAhdGhpcy50b2dnbGVTZWxlY3RhYmxlO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybUl0ZW1zKCkge1xyXG4gICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY29uZmlybSgpO1xyXG4gICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKGV2ZW50OiB7IGNvbXBvbmVudDogSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50OyB0ZXh0OiBzdHJpbmcgfSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJBdCB6c2VsZWN0bXVsdGlwbGUuY29tcG9uZW50IChvblNlYXJjaCk6IFwiLCBldmVudCk7XHJcbiAgICBjb25zdCBjb21wb25lbnQgPSBldmVudC5jb21wb25lbnQ7XHJcbiAgICBpZiAoY29tcG9uZW50KSB7XHJcbiAgICAgIGNvbXBvbmVudC5zdGFydFNlYXJjaCgpO1xyXG4gICAgICBjb21wb25lbnQuZW5hYmxlSW5maW5pdGVTY3JvbGwoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgIC8vICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAgIGlmIChldmVudC50ZXh0ICE9PSBudWxsICYmIGV2ZW50LnRleHQgIT09IHRoaXMuaW5maW5pdGVTZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2VObyA9IDA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXRJbmZpbml0ZURhdGEoZXZlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2VObyA9IDA7XHJcbiAgICAgIGlmIChjb21wb25lbnQpIHtcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgcmVmZXJJZDogbnVsbCxcclxuICAgICAgICBwYWdlTm86IDAsXHJcbiAgICAgICAgcGFnZVNpemU6IDE1LFxyXG4gICAgICAgIHNvcnRDb2x1bW5OYW1lOiBcIlwiLFxyXG4gICAgICAgIHNvcnRPcmRlcjogXCJcIixcclxuICAgICAgICBzb3J0Q29sdW1uTmFtZXM6IFtdLFxyXG4gICAgICAgIHNvcnRPcmRlcnM6IFtdLFxyXG4gICAgICAgIGZpbHRlclBhcmFtczogW10sXHJcbiAgICAgICAgcGFyYW1ldGVyczogXCJcIlxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBzZWFyY2hGaWVsZHMgPSB0aGlzLmRhdGEuU2VhcmNoRmllbGRzXHJcbiAgICAgICAgPyB0aGlzLmRhdGEuU2VhcmNoRmllbGRzXHJcbiAgICAgICAgOiB0aGlzLml0ZW1UZXh0RmllbGQ7XHJcbiAgICAgIGNvbnN0IGZpbHRlcml0ZW1zID0gWkNvbXBvbmVudEhlbHBlci5maWx0ZXJTZWFyY2hJdGVtcyhcclxuICAgICAgICB0aGlzLmdldEl0ZW1zRGF0YSgpLFxyXG4gICAgICAgIC8vIHRoaXMuaXRlbXMsXHJcbiAgICAgICAgZXZlbnQudGV4dCxcclxuICAgICAgICBzZWFyY2hGaWVsZHMsXHJcbiAgICAgICAgcGFyYW1zLnBhZ2VObyxcclxuICAgICAgICBwYXJhbXMucGFnZVNpemVcclxuICAgICAgKTtcclxuICAgICAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gY29tcG9uZW50Lml0ZW1zLmNvbmNhdChmaWx0ZXJpdGVtcyk7XHJcbiAgICAgICAgY29tcG9uZW50Lml0ZW1zID0gaXRlbXM7XHJcbiAgICAgICAgY29tcG9uZW50LmVuZEluZmluaXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgY29tcG9uZW50LmVuZFNlYXJjaCgpO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEluZmluaXRlRGF0YShldmVudDoge1xyXG4gICAgY29tcG9uZW50OiBJb25pY1NlbGVjdGFibGVDb21wb25lbnQ7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgfSkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5nZXRJbmZpbml0ZURhdGEoZXZlbnQuY29tcG9uZW50LCBldmVudC50ZXh0LCB0aGlzKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbHRlcih2YWx1ZTogYW55LCBqdXN0T25lVGltZT86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLmRlYm91bmNlU3ViKSB7XHJcbiAgICAgIHRoaXMuZGVib3VuY2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGVib3VuY2VTdWIgPSBvZihbXSkucGlwZShkZWxheSg1MDApKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMub25TZWFyY2goeyBjb21wb25lbnQ6IG51bGwsIHRleHQ6IHZhbHVlIH0pO1xyXG4gICAgICAvLyBpZiAodGhpcy5sb2FkSW5maW5pdGVEYXRhU3ViKSB7XHJcbiAgICAgIC8vICAgdGhpcy5sb2FkSW5maW5pdGVEYXRhU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gdGhpcy5sb2FkSW5maW5pdGVEYXRhU3ViID0gbmV3IFN1YmplY3QoZmFsc2UpO1xyXG4gICAgICAvLyB0aGlzLmhhbmRsZUZpbHRlcihudWxsKTtcclxuICAgICAgLy8gaW50ZXJ2YWwoMjAwMCkucGlwZSh0YWtlVW50aWwodGhpcy5sb2FkSW5maW5pdGVEYXRhU3ViKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgLy8gICB0aGlzLm9uU2VhcmNoKHsgY29tcG9uZW50OiBudWxsLCB0ZXh0OiB2YWx1ZSB9KTtcclxuICAgICAgLy8gICBpZiAoanVzdE9uZVRpbWUpIHtcclxuICAgICAgLy8gICAgIHRoaXMuaGFuZGxlQ2xvc2UoKTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPcGVuKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUZpbHRlcihudWxsKTtcclxuICAgICAgLy8gICAvLyBpZiAodGhpcy5sb2FkSW5maW5pdGVEYXRhU3ViKSB7XHJcbiAgICAgIC8vICAgLy8gICB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgLy8gICAvLyB9XHJcbiAgICAgIC8vICAgLy8gdGhpcy5sb2FkSW5maW5pdGVEYXRhU3ViID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgLy8gICAvLyAvLyB0aGlzLmhhbmRsZUZpbHRlcihudWxsKTtcclxuICAgICAgLy8gICAvLyBpbnRlcnZhbCgzMDAwKS5waXBlKHRha2VVbnRpbCh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyB0aGlzLmhhbmRsZUZpbHRlcihudWxsKTtcclxuICAgICAgLy8gICAvLyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsb3NlKCkge1xyXG4gICAgLy8gaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCkge1xyXG4gICAgLy8gICBpZiAodGhpcy5sb2FkSW5maW5pdGVEYXRhU3ViKSB7XHJcbiAgICAvLyAgICAgdGhpcy5sb2FkSW5maW5pdGVEYXRhU3ViLm5leHQodHJ1ZSk7XHJcbiAgICAvLyAgICAgLy8gdGhpcy5sb2FkSW5maW5pdGVEYXRhU3ViLmNvbXBsZXRlKCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUJsdXIoKSB7XHJcbiAgICAvLyB0aGlzLmhhbmRsZUNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRJdGVtVGVtcGxhdGUoXHJcbiAgICBpdGVtOiBhbnksXHJcbiAgICBkYXRhOiBhbnksXHJcbiAgICBncm91cDogYW55LFxyXG4gICAgaXRlbVZhbHVlRmllbGQ6IHN0cmluZyxcclxuICAgIGl0ZW1UZXh0RmllbGQ6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgLy8gVG9ETzogaXRlbVZhbHVlRmllbGQgYW5kIGl0ZW1UZXh0RmllbGRcclxuICAgIGlmICh0aGlzLmRhdGEuSXRlbVRlbXBsYXRlKSB7XHJcbiAgICAgIGNvbnN0IGdldFRlbXBsYXRlRnVuYyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHRoaXMuZGF0YS5JdGVtVGVtcGxhdGVcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGdldFRlbXBsYXRlRnVuYyh7XHJcbiAgICAgICAgaXRlbSxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGdyb3VwLFxyXG4gICAgICAgIGl0ZW1WYWx1ZUZpZWxkLFxyXG4gICAgICAgIGl0ZW1UZXh0RmllbGRcclxuICAgICAgfSBhcyBaU2VsZWN0TXVsdGlwbGVUZW1wbGF0ZVBhcmFtcyk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW1UZXh0RmllbGQpIHtcclxuICAgICAgcmV0dXJuIGl0ZW1baXRlbVRleHRGaWVsZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyByZXR1cm4gaXRlbVtpdGVtVGV4dEZpZWxkXTtcclxuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaXRlbSkuam9pbihcIiwgXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BZGRJdGVtKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGYgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9uQWRkSXRlbSk7XHJcbiAgICBpZiAodHlwZW9mIGYgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSBmLmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICByZXR1cm4gY2FsbEZ1bmMoKTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUud2FybignSW52YWxpZCBkZWNsYXJhdGlvbiBvZiBPbkFkZEl0ZW06ICcsIGYpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMuY29tYm9Cb3gpIHtcclxuICAgICAgdGhpcy5jb21ib0JveC5mb2N1cygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cInpwb3N0c2VsZWN0aW5wdXQtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8ZGl2ICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKSAmJiAhaXNMb2FkaW5nXCIgc3R5bGU9XCJkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjsgd2lkdGg6IDEwMCVcIiBjbGFzcz1cImUxdGFnLXN0eWxlMVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiPlxyXG4gICAgPHNwYW4gc3R5bGU9XCJmbGV4LWJhc2lzOiAzNSU7XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTJcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTJcIj5cclxuICAgICAgPGlvbmljLXNlbGVjdGFibGUgI3NlbGVjdENvbXBvbmVudCBpdGVtLWNvbnRlbnQgW2lkXT1cImRhdGEuQ0NWYWx1ZVwiIGhlYWRlckNvbG9yPVwicHJpbWFyeVwiIGNsZWFyQnV0dG9uVGV4dD1cIkNsZWFyXCJcclxuICAgICAgICBbY2FuQ2xlYXJdPVwidHJ1ZVwiIHNlYXJjaEZhaWxUZXh0PVwiTm90aGluZyBmb3VuZCA6KFwiIFtjYW5TZWFyY2hdPVwiIWRhdGFbJ2Rpc2FibGUtc2VhcmNoJ11cIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLkNDUGxhY2VIb2xkZXJcIiBbKG5nTW9kZWwpXT1cImdyb3VwLnpNb2RlbFtkYXRhLkNDVmFsdWVdXCJcclxuICAgICAgICBbc2hvdWxkRm9jdXNTZWFyY2hiYXJdPVwiIWRhdGFbJ2Rpc2FibGUtc2VhcmNoJ11cIiBbaGFzSW5maW5pdGVTY3JvbGxdPVwiISFkYXRhLkhhc0luZmluaXRlU2Nyb2xsXCJcclxuICAgICAgICAob25TZWFyY2gpPVwib25TZWFyY2goJGV2ZW50KVwiIChvbkluZmluaXRlU2Nyb2xsKT1cImdldEluZmluaXRlRGF0YSgkZXZlbnQpXCIgW2lzTXVsdGlwbGVdPVwiZGF0YS5NdWx0aXBsZVwiXHJcbiAgICAgICAgW2lzRW5hYmxlZF09XCIhKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICBbaXRlbXNdPVwiZ2V0SXRlbXNEYXRhKClcIiBbaXRlbVZhbHVlRmllbGRdPVwiaXRlbVZhbHVlRmllbGRcIiBbaXRlbVRleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCJcclxuICAgICAgICBbc2hvdWxkU3RvcmVJdGVtVmFsdWVdPVwidHJ1ZVwiIFtjYW5BZGRJdGVtXT1cIiEhZGF0YS5PbkFkZEl0ZW1cIiAob25BZGRJdGVtKT1cIm9uQWRkSXRlbSgkZXZlbnQpXCJcclxuICAgICAgICAob25DaGFuZ2UpPVwib25DaGFuZ2VfbW9iaWxlKCRldmVudClcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTNcIiBjbGFzcz1cImUxdGFnLXN0eWxlM1wiPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlSXRlbUljb25UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaXNJdGVtU2VsZWN0ZWQ9XCJpc0l0ZW1TZWxlY3RlZFwiPlxyXG4gICAgICAgICAgPGZhLWljb24gc2xvdD1cInN0YXJ0XCIgY2xhc3M9XCJpc0l0ZW1TZWxlY3RlZCBlMXRhZy1zdHlsZTRcIiBbaWNvbl09XCJbJ2ZhcicsIGlzSXRlbVNlbGVjdGVkID8gJ2NoZWNrLWNpcmNsZSc6ICdjaXJjbGUnXVwiXHJcbiAgICAgICAgICAgIHNpemU9XCJzbVwiIFtzdHlsZXNdPVwieydjb2xvcic6IGlzSXRlbVNlbGVjdGVkID8gJ2RvZGdlckJsdWUnIDogJ2xpZ2h0R3JheSd9XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU0XCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBpb25pY1NlbGVjdGFibGVDbG9zZUJ1dHRvblRlbXBsYXRlPlxyXG4gICAgICAgICAgPCEtLSA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZVwiPjwvaW9uLWljb24+IC0tPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3RpbWVzLWNpcmNsZSdcIiBzaXplPVwibWRcIiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNVwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlVGl0bGVUZW1wbGF0ZT5cclxuICAgICAgICAgIHt7ZGF0YS5MYWJlbH19XHJcbiAgICAgICAgICA8aW9uLXRleHRcclxuICAgICAgICAgICAgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZClcIlxyXG4gICAgICAgICAgICBjb2xvcj1cImRhbmdlclwiPio8L2lvbi10ZXh0PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBpb25pY1NlbGVjdGFibGVJdGVtVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICB7eyBnZXRJdGVtVGVtcGxhdGUoaXRlbSwgZGF0YSwgZ3JvdXAsIGl0ZW1WYWx1ZUZpZWxkLCBpdGVtVGV4dEZpZWxkKSB9fVxyXG4gICAgICAgICAgPCEtLSA8bmctdGVtcGxhdGUgenNlbGVjdGl0ZW1lbGVtZW50IFtpdGVtXT1cIml0ZW1cIj48L25nLXRlbXBsYXRlPiAtLT5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2lvbmljLXNlbGVjdGFibGU+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBzdHlsZT1cImZsZXgtYmFzaXM6IDYwJTsgbWFyZ2luLWxlZnQ6IDVweDtcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgICAgPGlvbi1pbnB1dCBbaWRdPVwiZGF0YS5WYWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCIgW3R5cGVdPVwiJ3RleHQnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwiZGF0YS5SZWFkT25seVwiIFtpbnB1dG1vZGVdPVwiJ3RleHQnXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU2XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTZcIj48L2lvbi1pbnB1dD5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxhcHAtdWl2YWxpZGF0aW9ubWVzc2FnZSBzdHlsZT1cImZsZXgtYmFzaXM6IDUlO1wiIFtncm91cF09XCJncm91cFwiIFtkYXRhXT1cImRhdGFcIiBbZm9ybV09XCJmb3JtXCI+XHJcbiAgICA8L2FwcC11aXZhbGlkYXRpb25tZXNzYWdlPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKVwiIHN0eWxlPVwiZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHdpZHRoOiAxMDAlXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgIDxzcGFuIHN0eWxlPVwiZmxleC1iYXNpczogMzUlO1wiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMlwiIGNsYXNzPVwiZTF0YWctc3R5bGUyXCI+XHJcbiAgICAgIDxrZW5kby1jb21ib2JveCBbaWRdPVwiZGF0YS5DQ1ZhbHVlXCIgW2RhdGFdPVwiZ2V0SXRlbXNEYXRhKClcIiBbdmFsdWVGaWVsZF09XCJpdGVtVmFsdWVGaWVsZFwiXHJcbiAgICAgICAgW3RleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLkNDVmFsdWVcIiBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuQ0NQbGFjZUhvbGRlclwiICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZV9kZXNrdG9wKCRldmVudClcIiBbZmlsdGVyYWJsZV09XCIhIWRhdGEuSGFzSW5maW5pdGVTY3JvbGxcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwiaGFuZGxlRmlsdGVyKCRldmVudClcIiAob3Blbik9XCJoYW5kbGVPcGVuKClcIiAoY2xvc2UpPVwiaGFuZGxlQ2xvc2UoKVwiIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTNcIiBbbG9hZGluZ109XCJpc0xvYWRpbmdcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTNcIlxyXG4gICAgICAgICNjb21ib0JveD5cclxuICAgICAgPC9rZW5kby1jb21ib2JveD5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxzcGFuIHN0eWxlPVwiZmxleC1iYXNpczogNjAlOyBtYXJnaW4tbGVmdDogNXB4O1wiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgICA8aW5wdXQga2VuZG9UZXh0Qm94IFtpZF09XCJkYXRhLlZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIiB0eXBlPVwidGV4dFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW46IDdweCAwIDAgMDsgd2lkdGg6IDEwMCVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTZcIiBjbGFzcz1cImUxdGFnLXN0eWxlNlwiLz5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienBvc3RzZWxlY3RpbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cG9zdHNlbGVjdGlucHV0L3pwb3N0c2VsZWN0aW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenBvc3RzZWxlY3RpbnB1dC96cG9zdHNlbGVjdGlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLeEUsOEJBQThCO0FBQzlCLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QywyQ0FBMkM7QUFDM0MsT0FBTyxFQUVPLGdCQUFnQixFQUFpQyxvQkFBb0IsRUFDbEYsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7OztBQVV4RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsY0FBYztJQXVCM0QsWUFDVSxrQkFBc0MsRUFDdEMsYUFBNEIsRUFDNUIsWUFBMEIsRUFDbEMsV0FBOEI7UUFDNUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBSlosdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXRCcEMsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUV2QixrQkFBYSxHQUFlLEVBQUUsQ0FBQztRQUMvQix1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsOEJBQThCO1FB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QUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7dUhBNVVVLHlCQUF5QjsyR0FBekIseUJBQXlCLDRTQzFCdEMsdzBKQThEQTs0RkRwQ2EseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHNCQUFzQjtnTUFLVCxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBRXJCLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50IH0gZnJvbSBcImlvbmljLXNlbGVjdGFibGVcIjtcclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgQ2FjaGVTZXJ2aWNlLCBSZXNvdXJjZUFwaVNlcnZpY2UsIFdlYkFwaVNlcnZpY2UsXHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWlNlbGVjdE11bHRpcGxlVGVtcGxhdGVQYXJhbXMsIFpTZWxlY3RQb3N0QXBpUGFyYW1zXHJcbn0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5pbXBvcnQgeyBJbnB1dEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29tYm9Cb3hDb21wb25lbnQgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZHJvcGRvd25zXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpwb3N0c2VsZWN0aW5wdXRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pwb3N0c2VsZWN0aW5wdXQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4venBvc3RzZWxlY3RpbnB1dC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWnBvc3RzZWxlY3RpbnB1dENvbXBvbmVudCBleHRlbmRzIElucHV0RmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoXCJjb21ib0JveFwiKSBjb21ib0JveDogQ29tYm9Cb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInNlbGVjdENvbXBvbmVudFwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHNlbGVjdENvbXBvbmVudDogSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50O1xyXG4gIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbW9kZWx6RGF0YTogQXJyYXk8YW55PjtcclxuICBpbmZpbml0ZXpEYXRhOiBBcnJheTxhbnk+ID0gW107XHJcbiAgaW5maW5pdGVTZWFyY2hUZXh0ID0gbnVsbDtcclxuICAvLyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICB0b2dnbGVTZWxlY3RhYmxlID0gdHJ1ZTtcclxuICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nID0gbnVsbDtcclxuICBpdGVtVGV4dEZpZWxkOiBzdHJpbmcgPSBudWxsO1xyXG4gIGl0ZW1EYXRhRmllbGQ6IHN0cmluZyA9IG51bGw7XHJcbiAgaXRlbVRlbXBsYXRlID0gXCJ7e2l0ZW1baXRlbVRleHRGaWVsZF19fVwiO1xyXG4gIGluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICBpc0xvYWRpbmcgPSB0cnVlO1xyXG4gIHByaXZhdGUgZGVib3VuY2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICBkYXRhSW5mbzoge30gPSB7XHJcbiAgICBcIml0ZW1zUmVzb3VyY2VVUkxcIjogXCJcIixcclxuICAgIFwib3B0aW9uRmlsdGVyc1wiOiBcIlwiLFxyXG4gICAgXCJ0b3RhbENvdW50XCI6IDBcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlLFxyXG4gICAgY29tcFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlXHJcbiAgKSB7IHN1cGVyKGNvbXBTZXJ2aWNlKSB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy8gaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAvLyAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAodGhpcy5kZWJvdW5jZVN1Yikge1xyXG4gICAgICB0aGlzLmRlYm91bmNlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHN1cGVyLnNldHVwSW5uZXJGaWVsZCgpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRTZWxlY3RNdWx0aXBsZVRleHRWYWx1ZSh0aGlzLmRhdGEuQ0NTZWxlY3RPcHRpb25zLCB0aGlzKTtcclxuXHJcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5kYXRhLkNDVmFsdWU7XHJcbiAgICBsZXQgZ2V0ekRhdGFGb3J6TW9kZWwkOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsICYmIHRoaXMuZGF0YS5JbmZpbml0ZVNjcm9sbCRcclxuICAgICAgJiYgdGhpcy5ncm91cC56TW9kZWwgJiYgdGhpcy5ncm91cC56TW9kZWxbZmllbGRWYWx1ZV0pIHtcclxuICAgICAgY29uc3QgcmVjb3JkSWQgPSB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZFZhbHVlXTtcclxuICAgICAgZ2V0ekRhdGFGb3J6TW9kZWwkID0gWkNvbXBvbmVudEhlbHBlci5nZXRJbmZpbml0ZURhdGEobnVsbCwgJycsIHRoaXMsIHJlY29yZElkLnRvU3RyaW5nKCkpO1xyXG4gICAgICBpZiAoZ2V0ekRhdGFGb3J6TW9kZWwkKSB7XHJcbiAgICAgICAgZ2V0ekRhdGFGb3J6TW9kZWwkLnN1YnNjcmliZSgoemRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YS5OYW1lLCAnIC0gaW5pdGlhbCB6RGF0YSBsb2FkOiAnLCB6ZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCkpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUZpbHRlcihudWxsLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5DQ09wdGlvblJlc291cmNlVVJMKSB7XHJcbiAgICAgICAgdGhpcy5sYXp5TG9hZERhdGFPcHRpb25zKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3VwZXIuZm9jdXNPbkRlZmF1bHQodGhpcy5mb2N1cy5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIGxhenlMb2FkRGF0YU9wdGlvbnMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHJlc291cmNlVXJsID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKFxyXG4gICAgICB0aGlzLmRhdGEuQ0NPcHRpb25SZXNvdXJjZVVSTFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJQYXJhbSA9IG5ldyBaU2VsZWN0UG9zdEFwaVBhcmFtcygpO1xyXG4gICAgZmlsdGVyUGFyYW0uc29ydHMgPSB0aGlzLmRhdGEuQ0NPcHRpb25Tb3J0O1xyXG4gICAgZmlsdGVyUGFyYW0uY29sdW1ucyA9IHRoaXMuZGF0YS5DQ09wdGlvbkNvbHVtbnM7XHJcbiAgICBmaWx0ZXJQYXJhbS5maWx0ZXJzID0gdGhpcy5kYXRhLkNDT3B0aW9uRmlsdGVyO1xyXG5cclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmdldERhdGFPcHRpb25zKFxyXG4gICAgICB0aGlzLmRhdGEuQ0NPcHRpb25OYW1lLFxyXG4gICAgICBmaWx0ZXJQYXJhbSxcclxuICAgICAgdGhpcy5ncm91cCxcclxuICAgICAgcmVzb3VyY2VVcmwsXHJcbiAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLFxyXG4gICAgICB0aGlzLndlYkFwaVNlcnZpY2UsXHJcbiAgICAgIHRoaXMuZGF0YVsnRGlzYWJsZUNhY2hlJ11cclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0SXRlbXNEYXRhKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbmZpbml0ZXpEYXRhO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3B0aW9uTmFtZSA9IHRoaXMuZGF0YS5DQ09wdGlvbk5hbWUgfHwgdGhpcy5pdGVtRGF0YUZpZWxkIHx8ICdncm91cC56RGF0YS4nICsgdGhpcy5kYXRhLk5hbWU7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuQ0NTZWxlY3RPcHRpb25zKSAmJiAhdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0pIHtcclxuICAgICAgLy8gcmV0dXJuIHNlbGVjdGlvbk9wdGlvbnM7XHJcbiAgICAgIC8vIHJldHVybiB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucztcclxuICAgICAgdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0gPSB0aGlzLmRhdGEuQ0NTZWxlY3RPcHRpb25zO1xyXG4gICAgICB0aGlzLml0ZW1EYXRhRmllbGQgPSBvcHRpb25OYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ3pEYXRhLicpKSB7XHJcbiAgICAgIC8vIHRoaXMuaXRlbXMgPSB0aGlzLmdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoNildO1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDYpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLnpEYXRhLicpKSB7XHJcbiAgICAgIC8vIHRoaXMuaXRlbXMgPSB0aGlzLmdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXTtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbk5hbWUuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgLy8gdGhpcy5pdGVtcyA9IHRoaXMuZ3JvdXBbb3B0aW9uTmFtZS5zbGljZSg2KV07XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwW29wdGlvbk5hbWUuc2xpY2UoNildIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbk5hbWUpIHtcclxuICAgICAgLy8gdGhpcy5pdGVtcyA9IHRoaXMuZ3JvdXBbb3B0aW9uTmFtZV07XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwW29wdGlvbk5hbWVdIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS53YXJuKHRoaXMuZGF0YS5OYW1lLCAnIC0gSW52YWxpZCBzZXR0aW5nIGZvciBPcHRpb25OYW1lOiAnLCBvcHRpb25OYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZUNDX2Rlc2t0b3AoZXZlbnQ6IGFueSkge1xyXG4gICAgc3VwZXIub25DaGFuZ2VDQyhudWxsLCBldmVudClcclxuICAgIHRoaXMuaGFuZGxlSW5maW5pdGVTY3JvbGxPbkNoYW5nZShldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2VfbW9iaWxlKGV2ZW50OiB7IGNvbXBvbmVudDogSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50OyB2YWx1ZTogYW55IH0pIHtcclxuICAgIHN1cGVyLm9uQ2hhbmdlKGV2ZW50KVxyXG4gICAgY29uc3QgZmMgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5kYXRhLkNDVmFsdWVdO1xyXG4gICAgdGhpcy5oYW5kbGVDbG9zZSgpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgc3VwZXIuZ2V0SXNSZXF1aXJlZFZhbHVlKCkgJiYgKGV2ZW50LnZhbHVlID09PSBudWxsIHx8IGV2ZW50LnZhbHVlLmxlbmd0aCA9PT0gMClcclxuICAgICkge1xyXG4gICAgICBmYy5zZXRFcnJvcnMoeyByZXF1aXJlZDogdHJ1ZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZjLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZUluZmluaXRlU2Nyb2xsT25DaGFuZ2UoZXZlbnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJbmZpbml0ZVNjcm9sbE9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwgJiYgISF0aGlzLmRhdGEuSW5maW5pdGVTY3JvbGwkKSB7XHJcbiAgICAgIGNvbnN0IHRleHRGaWVsZCA9IHRoaXMuaXRlbVRleHRGaWVsZC50b1N0cmluZygpO1xyXG4gICAgICBjb25zdCB2YWx1ZUZpZWxkID0gdGhpcy5pdGVtVmFsdWVGaWVsZC50b1N0cmluZygpO1xyXG4gICAgICBsZXQgemRhdGFNb2RlbCA9IFtdO1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICB6ZGF0YU1vZGVsID0gdGhpcy5pbmZpbml0ZXpEYXRhLmZpbHRlcih4ID0+IHhbdmFsdWVGaWVsZF0gPT09IHZhbHVlKTtcclxuICAgICAgICB0aGlzLm1vZGVsekRhdGEgPSB6ZGF0YU1vZGVsLnNsaWNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbURhdGFGaWVsZC5zdGFydHNXaXRoKCdncm91cC56RGF0YS4nKSkge1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuekRhdGFbdGhpcy5pdGVtRGF0YUZpZWxkLnNsaWNlKDEyKV0gPSB6ZGF0YU1vZGVsO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbURhdGFGaWVsZC5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICAgIHRoaXMuZ3JvdXBbdGhpcy5pdGVtRGF0YUZpZWxkLnNsaWNlKDYpXSA9IHpkYXRhTW9kZWw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFySXRlbXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jbGVhcigpO1xyXG4gICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUl0ZW1zKCkge1xyXG4gICAgdGhpcy5zZWxlY3RDb21wb25lbnQudG9nZ2xlSXRlbXModGhpcy50b2dnbGVTZWxlY3RhYmxlKTtcclxuICAgIHRoaXMudG9nZ2xlU2VsZWN0YWJsZSA9ICF0aGlzLnRvZ2dsZVNlbGVjdGFibGU7XHJcbiAgfVxyXG5cclxuICBjb25maXJtSXRlbXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jb25maXJtKCk7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZXZlbnQ6IHsgY29tcG9uZW50OiBJb25pY1NlbGVjdGFibGVDb21wb25lbnQ7IHRleHQ6IHN0cmluZyB9KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkF0IHpzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQgKG9uU2VhcmNoKTogXCIsIGV2ZW50KTtcclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IGV2ZW50LmNvbXBvbmVudDtcclxuICAgIGlmIChjb21wb25lbnQpIHtcclxuICAgICAgY29tcG9uZW50LnN0YXJ0U2VhcmNoKCk7XHJcbiAgICAgIGNvbXBvbmVudC5lbmFibGVJbmZpbml0ZVNjcm9sbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwpIHtcclxuICAgICAgaWYgKGV2ZW50LnRleHQgIT09IG51bGwgJiYgZXZlbnQudGV4dCAhPT0gdGhpcy5pbmZpbml0ZVNlYXJjaFRleHQpIHtcclxuICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdldEluZmluaXRlRGF0YShldmVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICAgICAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgICAgIGNvbXBvbmVudC5pdGVtcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICByZWZlcklkOiBudWxsLFxyXG4gICAgICAgIHBhZ2VObzogMCxcclxuICAgICAgICBwYWdlU2l6ZTogMTUsXHJcbiAgICAgICAgc29ydENvbHVtbk5hbWU6IFwiXCIsXHJcbiAgICAgICAgc29ydE9yZGVyOiBcIlwiLFxyXG4gICAgICAgIHNvcnRDb2x1bW5OYW1lczogW10sXHJcbiAgICAgICAgc29ydE9yZGVyczogW10sXHJcbiAgICAgICAgZmlsdGVyUGFyYW1zOiBbXSxcclxuICAgICAgICBwYXJhbWV0ZXJzOiBcIlwiXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IHNlYXJjaEZpZWxkcyA9IHRoaXMuZGF0YS5TZWFyY2hGaWVsZHNcclxuICAgICAgICA/IHRoaXMuZGF0YS5TZWFyY2hGaWVsZHNcclxuICAgICAgICA6IHRoaXMuaXRlbVRleHRGaWVsZDtcclxuICAgICAgY29uc3QgZmlsdGVyaXRlbXMgPSBaQ29tcG9uZW50SGVscGVyLmZpbHRlclNlYXJjaEl0ZW1zKFxyXG4gICAgICAgIHRoaXMuZ2V0SXRlbXNEYXRhKCksXHJcbiAgICAgICAgLy8gdGhpcy5pdGVtcyxcclxuICAgICAgICBldmVudC50ZXh0LFxyXG4gICAgICAgIHNlYXJjaEZpZWxkcyxcclxuICAgICAgICBwYXJhbXMucGFnZU5vLFxyXG4gICAgICAgIHBhcmFtcy5wYWdlU2l6ZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoY29tcG9uZW50KSB7XHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSBjb21wb25lbnQuaXRlbXMuY29uY2F0KGZpbHRlcml0ZW1zKTtcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMgPSBpdGVtcztcclxuICAgICAgICBjb21wb25lbnQuZW5kSW5maW5pdGVTY3JvbGwoKTtcclxuICAgICAgICBjb21wb25lbnQuZW5kU2VhcmNoKCk7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SW5maW5pdGVEYXRhKGV2ZW50OiB7XHJcbiAgICBjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDtcclxuICAgIHRleHQ6IHN0cmluZztcclxuICB9KSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmdldEluZmluaXRlRGF0YShldmVudC5jb21wb25lbnQsIGV2ZW50LnRleHQsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmlsdGVyKHZhbHVlOiBhbnksIGp1c3RPbmVUaW1lPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VTdWIpIHtcclxuICAgICAgdGhpcy5kZWJvdW5jZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kZWJvdW5jZVN1YiA9IG9mKFtdKS5waXBlKGRlbGF5KDUwMCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vblNlYXJjaCh7IGNvbXBvbmVudDogbnVsbCwgdGV4dDogdmFsdWUgfSk7XHJcbiAgICAgIC8vIGlmICh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpIHtcclxuICAgICAgLy8gICB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIgPSBuZXcgU3ViamVjdChmYWxzZSk7XHJcbiAgICAgIC8vIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyBpbnRlcnZhbCgyMDAwKS5waXBlKHRha2VVbnRpbCh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyAgIHRoaXMub25TZWFyY2goeyBjb21wb25lbnQ6IG51bGwsIHRleHQ6IHZhbHVlIH0pO1xyXG4gICAgICAvLyAgIGlmIChqdXN0T25lVGltZSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5oYW5kbGVDbG9zZSgpO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9wZW4oKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyAgIC8vIGlmICh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpIHtcclxuICAgICAgLy8gICAvLyAgIHRoaXMubG9hZEluZmluaXRlRGF0YVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAvLyAgIC8vIH1cclxuICAgICAgLy8gICAvLyB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICAvLyAgIC8vIC8vIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyAgIC8vIGludGVydmFsKDMwMDApLnBpcGUodGFrZVVudGlsKHRoaXMubG9hZEluZmluaXRlRGF0YVN1YikpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICAvLyAgIC8vIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xvc2UoKSB7XHJcbiAgICAvLyBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAvLyAgIGlmICh0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIpIHtcclxuICAgIC8vICAgICB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIubmV4dCh0cnVlKTtcclxuICAgIC8vICAgICAvLyB0aGlzLmxvYWRJbmZpbml0ZURhdGFTdWIuY29tcGxldGUoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQmx1cigpIHtcclxuICAgIC8vIHRoaXMuaGFuZGxlQ2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGdldEl0ZW1UZW1wbGF0ZShcclxuICAgIGl0ZW06IGFueSxcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGdyb3VwOiBhbnksXHJcbiAgICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nLFxyXG4gICAgaXRlbVRleHRGaWVsZDogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICAvLyBUb0RPOiBpdGVtVmFsdWVGaWVsZCBhbmQgaXRlbVRleHRGaWVsZFxyXG4gICAgaWYgKHRoaXMuZGF0YS5JdGVtVGVtcGxhdGUpIHtcclxuICAgICAgY29uc3QgZ2V0VGVtcGxhdGVGdW5jID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgdGhpcy5kYXRhLkl0ZW1UZW1wbGF0ZVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jKHtcclxuICAgICAgICBpdGVtLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgZ3JvdXAsXHJcbiAgICAgICAgaXRlbVZhbHVlRmllbGQsXHJcbiAgICAgICAgaXRlbVRleHRGaWVsZFxyXG4gICAgICB9IGFzIFpTZWxlY3RNdWx0aXBsZVRlbXBsYXRlUGFyYW1zKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbVRleHRGaWVsZCkge1xyXG4gICAgICByZXR1cm4gaXRlbVtpdGVtVGV4dEZpZWxkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHJldHVybiBpdGVtW2l0ZW1UZXh0RmllbGRdO1xyXG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpdGVtKS5qb2luKFwiLCBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFkZEl0ZW0oZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZiA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT25BZGRJdGVtKTtcclxuICAgIGlmICh0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCBjYWxsRnVuYyA9IGYuYmluZCh0aGlzLmdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgIHJldHVybiBjYWxsRnVuYygpO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS53YXJuKCdJbnZhbGlkIGRlY2xhcmF0aW9uIG9mIE9uQWRkSXRlbTogJywgZik7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZm9jdXMoKSB7XHJcbiAgICBpZiAodGhpcy5jb21ib0JveCkge1xyXG4gICAgICB0aGlzLmNvbWJvQm94LmZvY3VzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwienBvc3RzZWxlY3RpbnB1dC1jb250YWluZXIgZTF0YWctc3R5bGVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZVwiPlxyXG4gIDxkaXYgKm5nSWY9XCJpc01vYmlsZVNjcmVlbigpICYmICFpc0xvYWRpbmdcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB3aWR0aDogMTAwJVwiIGNsYXNzPVwiZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImNjaW5wdXQtY2N2YWx1ZS1jb250YWluZXIgZTF0YWctc3R5bGUyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+XHJcbiAgICAgIDxpb25pYy1zZWxlY3RhYmxlICNzZWxlY3RDb21wb25lbnQgaXRlbS1jb250ZW50IFtpZF09XCJkYXRhLkNDVmFsdWVcIiBoZWFkZXJDb2xvcj1cInByaW1hcnlcIiBjbGVhckJ1dHRvblRleHQ9XCJDbGVhclwiXHJcbiAgICAgICAgW2NhbkNsZWFyXT1cInRydWVcIiBzZWFyY2hGYWlsVGV4dD1cIk5vdGhpbmcgZm91bmQgOihcIiBbY2FuU2VhcmNoXT1cIiFkYXRhWydkaXNhYmxlLXNlYXJjaCddXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5DQ1BsYWNlSG9sZGVyXCIgWyhuZ01vZGVsKV09XCJncm91cC56TW9kZWxbZGF0YS5DQ1ZhbHVlXVwiXHJcbiAgICAgICAgW3Nob3VsZEZvY3VzU2VhcmNoYmFyXT1cIiFkYXRhWydkaXNhYmxlLXNlYXJjaCddXCIgW2hhc0luZmluaXRlU2Nyb2xsXT1cIiEhZGF0YS5IYXNJbmZpbml0ZVNjcm9sbFwiXHJcbiAgICAgICAgKG9uU2VhcmNoKT1cIm9uU2VhcmNoKCRldmVudClcIiAob25JbmZpbml0ZVNjcm9sbCk9XCJnZXRJbmZpbml0ZURhdGEoJGV2ZW50KVwiIFtpc011bHRpcGxlXT1cImRhdGEuTXVsdGlwbGVcIlxyXG4gICAgICAgIFtpc0VuYWJsZWRdPVwiISghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgW2l0ZW1zXT1cImdldEl0ZW1zRGF0YSgpXCIgW2l0ZW1WYWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCIgW2l0ZW1UZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiXHJcbiAgICAgICAgW3Nob3VsZFN0b3JlSXRlbVZhbHVlXT1cInRydWVcIiBbY2FuQWRkSXRlbV09XCIhIWRhdGEuT25BZGRJdGVtXCIgKG9uQWRkSXRlbSk9XCJvbkFkZEl0ZW0oJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlX21vYmlsZSgkZXZlbnQpXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTNcIj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGlvbmljU2VsZWN0YWJsZUl0ZW1JY29uVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWlzSXRlbVNlbGVjdGVkPVwiaXNJdGVtU2VsZWN0ZWRcIj5cclxuICAgICAgICAgIDxmYS1pY29uIHNsb3Q9XCJzdGFydFwiIGNsYXNzPVwiaXNJdGVtU2VsZWN0ZWQgZTF0YWctc3R5bGU0XCIgW2ljb25dPVwiWydmYXInLCBpc0l0ZW1TZWxlY3RlZCA/ICdjaGVjay1jaXJjbGUnOiAnY2lyY2xlJ11cIlxyXG4gICAgICAgICAgICBzaXplPVwic21cIiBbc3R5bGVzXT1cInsnY29sb3InOiBpc0l0ZW1TZWxlY3RlZCA/ICdkb2RnZXJCbHVlJyA6ICdsaWdodEdyYXknfVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlQ2xvc2VCdXR0b25UZW1wbGF0ZT5cclxuICAgICAgICAgIDwhLS0gPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGVcIj48L2lvbi1pY29uPiAtLT5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIid0aW1lcy1jaXJjbGUnXCIgc2l6ZT1cIm1kXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGlvbmljU2VsZWN0YWJsZVRpdGxlVGVtcGxhdGU+XHJcbiAgICAgICAgICB7e2RhdGEuTGFiZWx9fVxyXG4gICAgICAgICAgPGlvbi10ZXh0XHJcbiAgICAgICAgICAgICpuZ0lmPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWQpXCJcclxuICAgICAgICAgICAgY29sb3I9XCJkYW5nZXJcIj4qPC9pb24tdGV4dD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlSXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICAgICAge3sgZ2V0SXRlbVRlbXBsYXRlKGl0ZW0sIGRhdGEsIGdyb3VwLCBpdGVtVmFsdWVGaWVsZCwgaXRlbVRleHRGaWVsZCkgfX1cclxuICAgICAgICAgIDwhLS0gPG5nLXRlbXBsYXRlIHpzZWxlY3RpdGVtZWxlbWVudCBbaXRlbV09XCJpdGVtXCI+PC9uZy10ZW1wbGF0ZT4gLS0+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9pb25pYy1zZWxlY3RhYmxlPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPHNwYW4gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJjY2lucHV0LXZhbHVlLWNvbnRhaW5lciBlMXRhZy1zdHlsZTdcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTdcIj5cclxuICAgICAgPGlvbi1pbnB1dCBbaWRdPVwiZGF0YS5WYWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCIgW3R5cGVdPVwiJ3RleHQnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwiZGF0YS5SZWFkT25seVwiIFtpbnB1dG1vZGVdPVwiJ3RleHQnXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU2XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTZcIj48L2lvbi1pbnB1dD5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxhcHAtdWl2YWxpZGF0aW9ubWVzc2FnZSBzdHlsZT1cImZsZXgtYmFzaXM6IDUlO1wiIFtncm91cF09XCJncm91cFwiIFtkYXRhXT1cImRhdGFcIiBbZm9ybV09XCJmb3JtXCI+XHJcbiAgICA8L2FwcC11aXZhbGlkYXRpb25tZXNzYWdlPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKVwiIHN0eWxlPVwiZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHdpZHRoOiAxMDAlXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgIDxzcGFuIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMlwiIGNsYXNzPVwiY2NpbnB1dC1jY3ZhbHVlLWNvbnRhaW5lciBlMXRhZy1zdHlsZTJcIj5cclxuICAgICAgPGtlbmRvLWNvbWJvYm94IFtpZF09XCJkYXRhLkNDVmFsdWVcIiBbZGF0YV09XCJnZXRJdGVtc0RhdGEoKVwiIFt2YWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCJcclxuICAgICAgICBbdGV4dEZpZWxkXT1cIml0ZW1UZXh0RmllbGRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuQ0NWYWx1ZVwiIFt2YWx1ZVByaW1pdGl2ZV09XCJ0cnVlXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5DQ1BsYWNlSG9sZGVyXCIgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlQ0NfZGVza3RvcCgkZXZlbnQpXCIgW2ZpbHRlcmFibGVdPVwiISFkYXRhLkhhc0luZmluaXRlU2Nyb2xsXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAoZmlsdGVyQ2hhbmdlKT1cImhhbmRsZUZpbHRlcigkZXZlbnQpXCIgKG9wZW4pPVwiaGFuZGxlT3BlbigpXCIgKGNsb3NlKT1cImhhbmRsZUNsb3NlKClcIiAoYmx1cik9XCJoYW5kbGVCbHVyKClcIlxyXG4gICAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUzXCIgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzXCJcclxuICAgICAgICAjY29tYm9Cb3g+XHJcbiAgICAgIDwva2VuZG8tY29tYm9ib3g+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImNjaW5wdXQtdmFsdWUtY29udGFpbmVyIGUxdGFnLXN0eWxlN1wiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlN1wiPlxyXG4gICAgICAgIDxhcHAtenRleHQgW2RhdGFdPVwiZGF0YVwiIFtncm91cF09XCJncm91cFwiIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgIFtjb250YWluZXJGaWVsZF09XCJjb250YWluZXJGaWVsZFwiIFtjb21wb25lbnRQcm9wZXJ0aWVzXT1cImNvbXBvbmVudFByb3BlcnRpZXNcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZTZcIlxyXG4gICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlNlwiPlxyXG4gICAgICA8L2FwcC16dGV4dD5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==