mis-crystal-design-system 14.0.83 → 14.0.84

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.
@@ -914,8 +914,13 @@ export class DynamicFormComponent {
914
914
  return index >= 0 ? formField.itemsList[index] : "";
915
915
  };
916
916
  if (formField.fieldInputType === "dropdown") {
917
- if (!formValue)
918
- control.setValue(formField.itemsList[0]);
917
+ if (!formValue) {
918
+ if (formField?.fieldConfig?.markInitialValueAsSelected === false) {
919
+ control.setValue(null);
920
+ }
921
+ else
922
+ control.setValue(formField.itemsList[0]);
923
+ }
919
924
  else
920
925
  control.setValue(findSelectedValue());
921
926
  }
@@ -1101,4 +1106,4 @@ export const dynamicFieldValidator = (validators) => {
1101
1106
  return errors;
1102
1107
  };
1103
1108
  };
1104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWdCLEtBQUssRUFBcUIsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWlDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBKLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1FqQiw2QkFBc0c7SUFDcEcsMkJBTWU7SUFDakIsMEJBQWU7Ozs7Ozs7OztJQU5YLGVBQWlDO0lBQWpDLHNDQUFpQyw2T0FBQTs7O0lBSHZDLDhCQUF5TjtJQUN2Tiw0R0FRZTtJQUNqQixpQkFBTTs7O0lBVHNDLGVBQTZDO0lBQTdDLHFFQUE2Qzs7OztJQVgzRixnQ0FBa0g7SUFDOUcsMkJBUWE7SUFDZixvRkFVTTtJQUNSLDBCQUFlOzs7Ozs7SUFyQkQsb0NBQW1CO0lBRTdCLGVBQWlDO0lBQWpDLHNDQUFpQyxpSUFBQTtJQVFKLGVBQXdMO0lBQXhMLGthQUF3TDs7Ozs7SUFvQnpOLDZCQUF5RTtJQUN2RSxpSUFHZTtJQUNqQiwwQkFBZTs7Ozs7OztJQUhYLGVBQTBDO0lBQTFDLGdFQUEwQywrRkFBQTs7O0lBUXJCLDRCQUE4RDtJQUFDLGtCQUFDO0lBQUEsaUJBQU87Ozs7SUFRNUYsMkJBSWU7Ozs7O0lBSGIsc0NBQXVD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O2dCQUNSLEtBQUssV0FBVztvQkFDZCxLQUFLLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDdkQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQTtvQkFDdEQsSUFBRyxLQUFLO3dCQUFFLEtBQUssR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQTtvQkFDeEMsTUFBTTtnQkFDUixLQUFLLE9BQU87b0JBQ1YsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQ2pDLElBQUcsS0FBSzt3QkFBRSxLQUFLLEdBQUcsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLENBQUE7b0JBQ2xDLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQ3pELElBQUcsS0FBSzt3QkFBRSxLQUFLLEdBQUcsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLENBQUE7b0JBQ25DLE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTTthQUNUO1lBQ0QsSUFBSSxLQUFLO2dCQUFFLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUE7UUFDN0MsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5zRHluYW1pY0Zvcm0gfSBmcm9tIFwiLi9keW5hbWljLWZvcm0ubmFtZXNwYWNlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtZHluYW1pYy1mb3JtXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9keW5hbWljLWZvcm0uY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBmb3JtRmllbGRzOiAgRHluYW1pYyBmaWVsZHMgcmVjaWV2ZWQgZnJvbSB0aGUgQVBJIG1ldGFkYXRhIHRvIGJ1aWxkIGEgZHluYW1pYyBmb3JtXG4gICAqIGZvcm1WYWx1ZXM6ICBIb2xkcyB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZm9ybSB3aXRoIFwia2V5XCIgYmVpbmcgZHluYW1pYyBmaWVsZCBcInRpdGxlXCJcbiAgICogICAgICAgICAgICAgIGFuZCB2YWx1ZSBiZWluZyB0aGUgdXNlciBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGZvcm1GaWVsZHM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4gPSBbXTtcbiAgQElucHV0KCkgZm9ybVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAvLyBOZWVkIHRvIGRlcHJlY2F0ZSB0aGVzZSBpbnB1dHMgYW5kIHVzZSBjb25zdGFudHMuXG4gIEBJbnB1dCgpIGFjdGl2ZUJ0bkljb25VcmwgPSBcIlwiO1xuICBASW5wdXQoKSBjYWxlbmRhckljb25VcmwgPSBcIlwiO1xuICBASW5wdXQoKSByZW1vdmVJY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIGR5bmFtaWNGb3JtOiBDb25zdHJ1Y3RlZCB1c2luZyBmb3JtRmllbGRzIGFuZCBmb3JtVmFsdWVzKGluIGNhc2Ugb2YgZWRpdClcbiAgICovXG4gIGR5bmFtaWNGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBmb3JtVXBkYXRlZDogRW1pdHMgZm9ybVZhbHVlcyBPYmplY3Qgd2hlbmV2ZXIgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIGR5bmFtaWMgZm9ybS5cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4oKTtcbiAgLyoqXG4gICAqIGZvcm1WYWxpZDogRW1pdHMgYm9vbGVhbiBkZXBlbmRpbmcgb24gdmFsaWRpdHkgb2YgdGhlIGZvcm1cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qKlxuICAgKiBmb3JtSW5pdGlhbGl6ZWQ6IEVtaXRzIGR5bmFtaWMgZm9ybSBBUEkgb24gZm9ybSBpbml0aWxpemF0aW9uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybUluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmaWVsZFJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4oKTtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tSW5wdXRUZXh0TnVtYmVyXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dFRleHROdW1iZXI6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBcbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUlucHV0VGV4dGFyZWFcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbUlucHV0VGV4dGFyZWE6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21JbnB1dERhdGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbUlucHV0RGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUJvb2xlYW5Ub2dnbGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbUJvb2xlYW5Ub2dnbGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21TaW5nbGVTZWxlY3REcm9wZG93blwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd246IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21TaW5nbGVTZWxlY3RSYWRpb1wiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW86IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21NdWx0aVNlbGVjdENoZWNrYm94XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21NdWx0aVNlbGVjdENoZWNrYm94OiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tTXVsdGlTZWxlY3REcm9wZG93blwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tTXVsdGlTZWxlY3REcm9wZG93bjogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgZHluYW1pY0Zvcm1BUEk6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGb3JtQVBJO1xuICB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEJ1aWxkaW5nIHRoZSBmb3JtXG4gICAgdGhpcy5keW5hbWljRm9ybSA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRm9ybSh0aGlzLmZvcm1GaWVsZHMsIHRoaXMuZm9ybVZhbHVlcyk7XG5cbiAgICAvLyBTdWJzY3JpYmluZyB0byBmb3JtIGNoYW5nZXMgYW5kIGVtaXRpbmcgdmFsdWVzLlxuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJCA9IHRoaXMuZHluYW1pY0Zvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShmb3JtVmFsdWUgPT4ge1xuICAgICAgdGhpcy5vbkZvcm1WYWx1ZUNoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIC8vYXBpIHRvIGV4cG9zZSBmdW5jdGlvbnNcbiAgICB0aGlzLmR5bmFtaWNGb3JtQVBJID0ge1xuICAgICAgdXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdDogdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0LmJpbmQodGhpcyksXG4gICAgICBkZWZhdWx0Rm9ybVZhbHVlczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdCh0aGlzLmR5bmFtaWNGb3JtLnZhbHVlLmR5bmFtaWNGaWVsZHMpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtQVBJKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuICBvbkZvcm1WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgbGV0IGZvcm1WYWx1ZXMgPSB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgdGhpcy5mb3JtVmFsaWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtLnZhbGlkKTtcbiAgICB0aGlzLmZvcm1VcGRhdGVkLmVtaXQoZm9ybVZhbHVlcyk7XG4gICAgY29uc29sZS5sb2coZm9ybVZhbHVlcylcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdChmb3JtVmFsdWVzOiBBcnJheTxhbnk+KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgbGV0IGR5bmFtaWNGaWVsZHNWYWx1ZSA9IHt9O1xuICAgIGZvcm1WYWx1ZXMuZm9yRWFjaCgoZmllbGRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgIGlmKHR5cGVvZiBmaWVsZFZhbHVlPy52YWx1ZSA9PT0gJ3N0cmluZycpIGZpZWxkVmFsdWUudmFsdWUgPSBmaWVsZFZhbHVlPy52YWx1ZT8udHJpbSgpXG4gICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0sIGZpZWxkVmFsdWUudmFsdWUpO1xuICAgICAgaWYgKGZpZWxkVmFsdWUuc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXMgPSB7fVxuICAgICAgICBsZXQgc3ViRmllbGQgPSB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLnN1YkZpZWxkc1xuICAgICAgICBpZih0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgfHwgdGhpcy5mb3JtRmllbGRzW2luZGV4XS5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgICAgICBzdWJGaWVsZCA9IHN1YkZpZWxkLmZpbHRlcigoc3ViRmllbGQpID0+IHN1YkZpZWxkLnBhcmVudENvbmZpZ1ZhbHVlID09PSBmaWVsZFZhbHVlLnZhbHVlLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBmaWVsZFZhbHVlLnN1YkZpZWxkcy5mb3JFYWNoKChzdWJGaWVsZFZhbHVlLCBzdWJJbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzdWJGb3JtRmllbGQgPSBzdWJGaWVsZFtzdWJJbmRleF1cbiAgICAgICAgICBpZih0eXBlb2Ygc3ViRmllbGRWYWx1ZT8udmFsdWUgPT09ICdzdHJpbmcnKSBzdWJGaWVsZFZhbHVlLnZhbHVlID0gc3ViRmllbGRWYWx1ZT8udmFsdWU/LnRyaW0oKVxuICAgICAgICAgIGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlc1tzdWJGb3JtRmllbGQuY29uZmlnTmFtZV0gPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHN1YkZvcm1GaWVsZCwgc3ViRmllbGRWYWx1ZSlcbiAgICAgICAgfSlcbiAgICAgICAgZHluYW1pY0ZpZWxkc1ZhbHVlW3RoaXMuZm9ybUZpZWxkc1tpbmRleF0uY29uZmlnTmFtZV0gPSB7XG4gICAgICAgICAgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgIHN1YkZpZWxkczogZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkeW5hbWljRmllbGRzVmFsdWU7XG4gIH1cbiAgZ2VuZXJhdGVEeW5hbWljRm9ybShcbiAgICBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+LFxuICAgIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgbGV0IGZvcm1BcnJheSA9IG5ldyBVbnR5cGVkRm9ybUFycmF5KFtdKVxuXG4gICAgZm9yIChsZXQgZmllbGQgb2YgZm9ybUZpZWxkcykge1xuICAgICAgbGV0IGZpZWxkVmFsdWUgPSBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdPy52YWx1ZSA/IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0udmFsdWUgOiBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdXG4gICAgICBsZXQgZmllbGRDb250cm9sID0gdGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmaWVsZCwgZmllbGRWYWx1ZSk7XG4gICAgICBsZXQgc3ViRmllbGRzQ29udHJvbHMgPSB0aGlzLmdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhmb3JtVmFsdWVzLCBmaWVsZCwgZmllbGRDb250cm9sLnZhbHVlKTtcbiAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgICAgdmFsdWU6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgc3ViRmllbGRzOiBzdWJGaWVsZHNDb250cm9sc1xuICAgICAgfSkpXG4gICAgfSAgXG4gICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgIGR5bmFtaWNGaWVsZHM6IGZvcm1BcnJheVxuICAgIH0pXG4gIH1cbiAgXG4gIGdldER5bmFtaWNGaWVsZHNDb250cm9scygpOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5keW5hbWljRm9ybS5nZXQoXCJkeW5hbWljRmllbGRzXCIpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cbiAgdXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChmaWVsZC5zdWJGaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKHRoaXMuZm9ybVZhbHVlcywgZmllbGQsIHZhbHVlKTtcbiAgICAgIGZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzdWJGaWVsZHMnKVxuICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woJ3N1YkZpZWxkcycsIHN1YkZpZWxkc0NvbnRyb2xzKVxuICAgIH1cbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChjb250cm9sLnZhbHVlPy52YWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMudXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybUdyb3VwLCB2YWx1ZSk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZXM6IEFycmF5PGFueT5cbiAgKTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdGVkVmFsdWVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfT4gPSBjb250cm9sLnZhbHVlO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgbGV0IGl0ZW1JbmRleCA9IHNlbGVjdGVkVmFsdWVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ubGFiZWwgPT09IHZhbHVlLmxhYmVsKTtcbiAgICAgIGlmIChpdGVtSW5kZXggPiAtMSkge1xuICAgICAgICBzZWxlY3RlZFZhbHVlcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnB1c2goeyAuLi52YWx1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlcyk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgaXNDaGVja0JveFNlbGVjdGVkKHZhbHVlOiBzdHJpbmcsIHNlbGVjdGVkVmFsdWVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUpID4gLTE7XG4gIH1cblxuICBmaW5kU2VsZWN0ZWRTdWJGaWVsZENvbmZpZyhzdWJmaWVsZHMsIHZhbHVlLCBzdWJGaWVsZEluZGV4KSB7XG4gICAgdHJ5e1xuICAgICAgY29uc3Qgc2VsZWN0ZWRTdWJGaWVsZENvbmZpZyA9IHN1YmZpZWxkcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnBhcmVudENvbmZpZ1ZhbHVlID09PSB2YWx1ZSlbc3ViRmllbGRJbmRleF07XG4gICAgICByZXR1cm4gc2VsZWN0ZWRTdWJGaWVsZENvbmZpZztcbiAgICB9XG4gICAgY2F0Y2goZSl7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N1YmZpZWxkIGluZGV4IG5vdCBmb3VuZCcpO1xuICAgIH1cbiAgfVxuXG4gIG1hdGNoUGFyZW50Q29uZmlnKHN1YmZpZWxkcywgdmFsdWUpIHtcbiAgICBpZiAoIXN1YmZpZWxkcyB8fCBzdWJmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzdWJmaWVsZHMuc29tZShpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKTtcbiAgfVxuXG4gIGdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmb3JtVmFsdWVzOiBhbnksXG4gICAgcGFyZW50RmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBwYXJlbnRWYWx1ZTogQXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+IHwge2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5cbiAgKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgbGV0IGNvbnRyb2xzID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG4gICAgbGV0IHN1YkZpZWxkcyA9IHBhcmVudEZpZWxkLnN1YkZpZWxkc1xuICAgIGxldCBzdWJGaWVsZHNWYWx1ZXMgPSBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdPy5zdWJGaWVsZHMgPyBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdLnN1YkZpZWxkcyA6IHt9XG4gICAgaWYoIXN1YkZpZWxkcykgcmV0dXJuIGNvbnRyb2xzO1xuICAgIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnKSB7XG4gICAgICBzdWJGaWVsZHMgPSBzdWJGaWVsZHMuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09ICg8e2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfT5wYXJlbnRWYWx1ZSk/LnZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGFyZW50RmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnKSB7XG4gICAgICBsZXQgcGFyZW50VmFsdWVzID0gbmV3IFNldCgoPEFycmF5PHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB9Pj5wYXJlbnRWYWx1ZSkubWFwKCh2YWx1ZSkgPT4gdmFsdWUudmFsdWUpKTtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBwYXJlbnRWYWx1ZXMuaGFzKHN1YkZpZWxkLnBhcmVudENvbmZpZ1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgaWYgKHN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGxldCBzdWJGaWVsZCBvZiBzdWJGaWVsZHMpIHtcbiAgICAgICAgICBjb250cm9scy5wdXNoKHRoaXMubWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoc3ViRmllbGQsIHN1YkZpZWxkc1ZhbHVlc1tzdWJGaWVsZC5jb25maWdOYW1lXSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICByZXR1cm4gY29udHJvbHM7XG4gIH1cbiAgbWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoZm9ybUZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsIGZvcm1WYWx1ZTogYW55KTogYW55IHtcbiAgICBsZXQgdmFsaWRhdG9ycyA9IGZvcm1GaWVsZC52YWxpZGF0b3JzID8gW2R5bmFtaWNGaWVsZFZhbGlkYXRvcihmb3JtRmllbGQudmFsaWRhdG9ycyldOiBbXVxuICAgIGxldCBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IFwiXCIpO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IDApO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICBpZiAoZm9ybVZhbHVlICYmIHR5cGVvZiBmb3JtVmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudChmb3JtVmFsdWUpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudCgpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgY29uc3QgZmluZFNlbGVjdGVkVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gZm9ybVZhbHVlKVxuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IGZvcm1GaWVsZC5pdGVtc0xpc3RbaW5kZXhdOiBcIlwiO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkcm9wZG93blwiKSB7XG4gICAgICAgIGlmICghZm9ybVZhbHVlKSBjb250cm9sLnNldFZhbHVlKGZvcm1GaWVsZC5pdGVtc0xpc3RbMF0pO1xuICAgICAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJyYWRpb1wiKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgaWYgKGZvcm1WYWx1ZSAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGZvcm1WYWx1ZSkge1xuICAgICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4uZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKCEhZm9ybVZhbHVlKTtcbiAgICB9IGVsc2UgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuICBtYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSByZXR1cm4gZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSByZXR1cm4gK2Zvcm1WYWx1ZTtcbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudC50eihmb3JtVmFsdWUsIGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQsIGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkudmFsdWVPZigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8udmFsdWUgPz8gJyc7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcIm11bHRpU2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU/Lm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU7XG4gICAgfSBlbHNlIHJldHVybiBmb3JtVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGR5bmFtaWNGaWVsZFZhbGlkYXRvciA9ICh2YWxpZGF0b3JzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGRWYWxpZGF0b3I+KTogVmFsaWRhdG9yRm4gPT4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBsZXQgdmFsdWUgPSBjb250cm9sLnZhbHVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFsdWUgPSB2YWx1ZT8udmFsdWUgPyB2YWx1ZS52YWx1ZSA6ICcnXG4gICAgfVxuICAgIGxldCBlcnJvcnMgPSBudWxsXG5cbiAgICB2YWxpZGF0b3JzLmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xuICAgICAgbGV0IGVycm9yID0gbnVsbFxuICAgICAgbGV0IG1lc3NhZ2UgPSB2YWxpZGF0b3IubWVzc2FnZVxuICAgICAgc3dpdGNoICh2YWxpZGF0b3IudHlwZSkge1xuICAgICAgICBjYXNlIFwiUmVxdWlyZWRcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucmVxdWlyZWQoY29udHJvbCk7XG4gICAgICAgICAgaWYgKCFlcnJvciAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgIGVycm9yID0geyBSZXF1aXJlZDogbWVzc2FnZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7UmVxdWlyZWQ6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNaW5MZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWluTGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5taW5sZW5ndGgucmVxdWlyZWRMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNaW5MZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTWF4TGVuZ3RoXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLm1heExlbmd0aCgrdmFsaWRhdG9yLnZhbHVlKShjb250cm9sKVxuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoJyR7MH0nLCBlcnJvcj8uYWN0dWFsTGVuZ3RoKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHsgTWF4TGVuZ3RoOiBtZXNzYWdlIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkVtYWlsXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLmVtYWlsKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0VtYWlsOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQ3VzdG9tXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLnBhdHRlcm4oYCR7dmFsaWRhdG9yLnZhbHVlfWApKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0N1c3RvbTogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvcikgZXJyb3JzID0geyAuLi5lcnJvcnMsIC4uLmVycm9yIH1cbiAgICB9KVxuICAgIHJldHVybiBlcnJvcnNcbiAgfVxufSIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZHluYW1pY0Zvcm1cIj5cbiAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwiZHluYW1pY0ZpZWxkc1wiPlxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiICpuZ0Zvcj1cImxldCBmaWVsZENvbnRyb2wgb2YgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICRpbXBsaWNpdDogZm9ybUZpZWxkc1tpXSxcbiAgICAgICAgICBmb3JtR3JvdXA6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgICBjb250cm9sOiBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWVcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWItZHluYW1pYy1mb3JtXCIgKm5nSWY9XCJmaWVsZENvbnRyb2wudmFsdWUgJiYgKCEhZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzICYmIGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcz8ubGVuZ3RoID4gMCAmJiBtYXRjaFBhcmVudENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZS52YWx1ZS52YWx1ZSkpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YkZpZWxkQ29udHJvbCBvZiBmaWVsZENvbnRyb2wuY29udHJvbHMuc3ViRmllbGRzLmNvbnRyb2xzOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogZmluZFNlbGVjdGVkU3ViRmllbGRDb25maWcoZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzLCBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWUudmFsdWUudmFsdWUsaiksXG4gICAgICAgICAgICAgIGNvbnRyb2w6IHN1YkZpZWxkQ29udHJvbFxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cblxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZCBsZXQtZmllbGQgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWZvcm1ncm91cD1cImZvcm1Hcm91cFwiPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAndGV4dCcgfCAnbnVtYmVyJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiAoZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICd0ZXh0JyB8fCBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ251bWJlcicpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUlucHV0VGV4dE51bWJlcjsgZWxzZSBkZWZhdWx0SW5wdXRUZXh0TnVtYmVyXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSW5wdXRUZXh0TnVtYmVyXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0VGV4dE51bWJlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQ/LnRpdGxlIH19IDxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dC1maWVsZCBpcC10ZXh0XCIgW3R5cGVdPVwiZmllbGQuZmllbGRJbnB1dFR5cGVcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCIgXG4gICAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXInOiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnMgPyAnMXB4IHNvbGlkICNCMDAwMjAnOiAnJ31cIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclRleHQgPyBmaWVsZC5wbGFjZWhvbGRlclRleHQgOiAnSW5wdXQgVGV4dCdcIiBcbiAgICAgICAgICBbbWluXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJyA/IDAgOiAnJyBcIi8+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiIFxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiXG4gICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAndGV4dGFyZWEnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dGFyZWEnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUlucHV0VGV4dGFyZWE7IGVsc2UgZGVmYXVsdElucHV0VGV4dGFyZWFcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSW5wdXRUZXh0YXJlYVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0VGV4dGFyZWE+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJpbnB1dC1maWVsZCBpcC10ZXh0YXJlYVwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyVGV4dCA/IGZpZWxkLnBsYWNlaG9sZGVyVGV4dCA6ICdJbnB1dCBUZXh0J1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIFxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ2RhdGUnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZGF0ZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tSW5wdXREYXRlOyBlbHNlIGRlZmF1bHRJbnB1dERhdGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JbnB1dERhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXREYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIlxuICAgICAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fSA8c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImRhdGUtcGlja2VyXCIgcmVhZG9ubHkgbWlzVHpEcCBbZHBDb25maWddPVwiZmllbGQuZmllbGRDb25maWdcIlxuICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwiY29udHJvbC5zZXRWYWx1ZSgkZXZlbnQpXCIgW3NlbGVjdGVkRGF0ZV09XCJjb250cm9sLnZhbHVlXCIgW29mZnNldFldPVwiMFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiY29udHJvbC52YWx1ZVwiICNkcCAvPlxuICAgICAgICAgIDxpbWcgYWx0PVwiZGF0YS1waWNrZXJcIiAqbmdJZj1cImNhbGVuZGFySWNvblVybFwiIGNsYXNzPVwiZGF0ZS1waWNrZXItaWNvblwiIFtzcmNdPVwiY2FsZW5kYXJJY29uVXJsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkcC5jbGljaygpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnYm9vbGVhbicgZmllbGRJbnB1dFR5cGU6ICd0b2dnbGUnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnYm9vbGVhbicgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICd0b2dnbGUnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUJvb2xlYW5Ub2dnbGU7IGVsc2UgZGVmYXVsdEJvb2xlYW5Ub2dnbGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21Cb29sZWFuVG9nZ2xlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEJvb2xlYW5Ub2dnbGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG1pcy1zd2l0Y2ggW2NvbnRyb2xdPVwiY29udHJvbFwiICh2YWx1ZUNoYW5nZWQpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC9taXMtc3dpdGNoPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj4gICAgXG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdzaW5nbGVTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21TaW5nbGVTZWxlY3REcm9wZG93bjsgZWxzZSBkZWZhdWx0U2luZ2xlU2VsZWN0RHJvcGRvd25cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21TaW5nbGVTZWxlY3REcm9wZG93blwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTaW5nbGVTZWxlY3REcm9wZG93bj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydyZW1vdmVhYmxlLWNvbnRhaW5lcicgOiBmaWVsZD8uaXNSZW1vdmVhYmxlfVwiPlxuICAgICAgICAgIDxtaXMtZHJvcGRvd24gW3NlYXJjaEVuYWJsZWRdPVwiZmFsc2VcIiBbd2lkdGhdPVwiJzE0MHB4J1wiIFtkYXRhXT1cImZpZWxkLml0ZW1zTGlzdFwiIFtzZWxlY3RlZEl0ZW1dPVwiY29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj5cbiAgICAgICAgICA8L21pcy1kcm9wZG93bj5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwiZmllbGQuaXNSZW1vdmVhYmxlICYmIHJlbW92ZUljb25VcmxcIiBjbGFzcz1cInJlbW92ZS1pY29uXCIgW3NyY109XCJyZW1vdmVJY29uVXJsXCIgKGNsaWNrKT1cImZpZWxkUmVtb3ZlZC5lbWl0KGZpZWxkKVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXIgPlxuICBcblxuICA8IS0tIGZpZWxkVHlwZTogJ3NpbmdsZVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdyYWRpbycgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAncmFkaW8nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvOyBlbHNlIGRlZmF1bHRTaW5nbGVTZWxlY3RSYWRpb1wiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNpbmdsZVNlbGVjdFJhZGlvPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWNoZWNrYm94LWNvbW1vblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGVja2JveC1hY3RpdmUnOiBpdGVtLmxhYmVsID09PSBjb250cm9sLnZhbHVlPy5sYWJlbCB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIGl0ZW0pO1wiPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIihpdGVtLmxhYmVsID09PSBjb250cm9sLnZhbHVlPy5sYWJlbCkgJiYgYWN0aXZlQnRuSWNvblVybFwiIFtzcmNdPVwiYWN0aXZlQnRuSWNvblVybFwiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImg2XCI+e3sgaXRlbS5sYWJlbCB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICBcblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2NoZWNrYm94JyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21NdWx0aVNlbGVjdENoZWNrYm94OyBlbHNlIGRlZmF1bHRNdWx0aVNlbGVjdENoZWNrYm94XCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNdWx0aVNlbGVjdENoZWNrYm94PlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWNoZWNrYm94LWNvbW1vblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGVja2JveC1hY3RpdmUnOiBpc0NoZWNrQm94U2VsZWN0ZWQoaXRlbS5sYWJlbCwgY29udHJvbC52YWx1ZSkgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIFtpdGVtXSlcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpc0NoZWNrQm94U2VsZWN0ZWQoaXRlbS5sYWJlbCwgY29udHJvbC52YWx1ZSkgJiYgYWN0aXZlQnRuSWNvblVybFwiIFtzcmNdPVwiYWN0aXZlQnRuSWNvblVybFwiXG4gICAgICAgICAgICAgIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImg2XCI+e3sgaXRlbS5sYWJlbCB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdtdWx0aVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdkcm9wZG93bicgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tTXVsdGlTZWxlY3REcm9wZG93bjsgZWxzZSBkZWZhdWx0TXVsdGlTZWxlY3REcm9wZG93blwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd25cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TXVsdGlTZWxlY3REcm9wZG93bj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8bWlzLW11bHRpLXNlbGVjdC1kcm9wZG93biBbd2lkdGhdPVwiJzE0MHB4J1wiIFtzaG93U2VsZWN0ZWRDb3VudF09XCJ0cnVlXCIgW2Ryb3Bkb3duTGlzdFdpZHRoXT1cIicyNTZweCdcIlxuICAgICAgICAgIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW2hpZGVBcHBseUJ1dHRvbl09XCJ0cnVlXCIgW2RhdGFdPVwiZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtc109XCJjb250cm9sLnZhbHVlXCIgKG9uQ2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCAkZXZlbnQpO1wiPjwvbWlzLW11bHRpLXNlbGVjdC1kcm9wZG93bj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY0ZpZWxkRXJyb3JzIGxldC1lcnJvcnM+XG4gIDxkaXYgaWQ9XCJlcnJvci1tZXNzYWdlcy1jb250YWluZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnMgfCBrZXl2YWx1ZVwiPlxuICAgICAgPHAgY2xhc3M9XCJoOFwiPlxuICAgICAgICB7e1wiIOKAoiAmbmJzcDtcIiArIGVycm9yLnZhbHVlfX1cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgW25nU3R5bGVdPVwieyAnZmxleC1iYXNpcyc6ICcxMDAlJywgJ2hlaWdodCc6ICcwJyB9XCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
1109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWdCLEtBQUssRUFBcUIsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWlDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBKLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1FqQiw2QkFBc0c7SUFDcEcsMkJBTWU7SUFDakIsMEJBQWU7Ozs7Ozs7OztJQU5YLGVBQWlDO0lBQWpDLHNDQUFpQyw2T0FBQTs7O0lBSHZDLDhCQUF5TjtJQUN2Tiw0R0FRZTtJQUNqQixpQkFBTTs7O0lBVHNDLGVBQTZDO0lBQTdDLHFFQUE2Qzs7OztJQVgzRixnQ0FBa0g7SUFDOUcsMkJBUWE7SUFDZixvRkFVTTtJQUNSLDBCQUFlOzs7Ozs7SUFyQkQsb0NBQW1CO0lBRTdCLGVBQWlDO0lBQWpDLHNDQUFpQyxpSUFBQTtJQVFKLGVBQXdMO0lBQXhMLGthQUF3TDs7Ozs7SUFvQnpOLDZCQUF5RTtJQUN2RSxpSUFHZTtJQUNqQiwwQkFBZTs7Ozs7OztJQUhYLGVBQTBDO0lBQTFDLGdFQUEwQywrRkFBQTs7O0lBUXJCLDRCQUE4RDtJQUFDLGtCQUFDO0lBQUEsaUJBQU87Ozs7SUFRNUYsMkJBSWU7Ozs7O0lBSGIsc0NBQXVDLDRFQUFBOzs7Ozs7SUFaM0MsK0JBQytILFlBQUE7SUFFM0gsWUFBbUI7SUFBQSxtSEFBdUU7SUFDNUYsaUJBQUk7SUFDSiwwQkFBb0M7SUFDcEMsaUNBSXVEO0lBSHJELGdWQUFpQixlQUFBLGdFQUFnRCxDQUFBLElBQUM7SUFEcEUsaUJBSXVEO0lBQ3ZELG1JQUllO0lBQ2pCLGlCQUFNOzs7Ozs7O0lBZkosaVZBQTRIO0lBRTFILGVBQW1CO0lBQW5CLDJFQUFtQjtJQUFPLGVBQXFEO0lBQXJELDhFQUFxRDtJQUc5QyxlQUE2QjtJQUE3QiwrQ0FBNkIsNEJBQUEsK0dBQUEscUZBQUEsdURBQUE7SUFLakQsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFuQjVELDZCQUE0SDtJQUMxSCxxSEFLZTtJQUNmLHFKQWtCYztJQUNoQiwwQkFBZTs7OztJQXpCRSxlQUE2QjtJQUE3QixvREFBNkIsa0JBQUE7Ozs7SUE2QjVDLDZCQUFxRTtJQUNuRSxpSUFHYTtJQUNmLDBCQUFlOzs7Ozs7O0lBSGIsZUFBd0M7SUFBeEMsOERBQXdDLCtGQUFBOzs7SUFRbkIsNEJBQThEO0lBQUMsa0JBQUM7SUFBQSxpQkFBTzs7O0lBTXhGLDJCQUVlOzs7OztJQUZ5QyxzQ0FBdUMsNEVBQUE7Ozs7SUFUbkcsK0JBQzZILFlBQUE7SUFFekgsWUFBaUI7SUFBQSxtSEFBdUU7SUFDMUYsaUJBQUk7SUFDSiwwQkFBb0M7SUFDcEMsb0NBRTBLO0lBQW5FLG1WQUFpQixlQUFBLGdFQUFnRCxDQUFBLElBQUM7SUFBQyxpQkFBVztJQUNuTCxtSUFFZTtJQUNuQixpQkFBTTs7Ozs7OztJQVhOLGlWQUE0SDtJQUV4SCxlQUFpQjtJQUFqQiwrQ0FBaUI7SUFBTyxlQUFxRDtJQUFyRCw4RUFBcUQ7SUFJN0UsZUFBbUY7SUFBbkYsMkhBQW1GLHFGQUFBLDRCQUFBO0lBRXBFLGVBQXVDO0lBQXZDLGdFQUF1Qzs7O0lBakI5RCw2QkFBeUY7SUFDdkYscUhBS2U7SUFDZixxSkFjYztJQUNoQiwwQkFBZTs7OztJQXJCRSxlQUEyQjtJQUEzQixrREFBMkIsa0JBQUE7Ozs7SUF5QjFDLDZCQUE2RDtJQUMzRCxpSUFHZTtJQUNqQiwwQkFBZTs7Ozs7OztJQUhYLGVBQW9DO0lBQXBDLDBEQUFvQywrRkFBQTs7O0lBU2hCLDRCQUE4RDtJQUFDLGtCQUFDO0lBQUEsaUJBQU87Ozs7SUFNekYsK0JBQ3lCO0lBQXZCLGlPQUFTLGVBQUEsWUFBVSxDQUFBLElBQUM7SUFEdEIsaUJBQ3lCOzs7SUFEK0MsK0RBQXVCOzs7SUFHakcsMkJBRWU7Ozs7O0lBRnlDLHNDQUF1Qyw0RUFBQTs7OztJQWJqRywrQkFFeUUsWUFBQTtJQUVyRSxZQUFrQjtJQUFBLHlIQUF1RTtJQUMzRixpQkFBSTtJQUNKLCtCQUFtQyxvQkFBQTtJQUUvQiwwT0FBYyxlQUFBLDRCQUF3QixDQUFBLElBQUM7SUFEekMsaUJBRWdDO0lBQ2hDLHVIQUN5QjtJQUMzQixpQkFBTTtJQUNOLHlJQUVlO0lBQ2pCLGlCQUFNOzs7Ozs7O0lBZk4saVZBQTRIO0lBR3hILGVBQWtCO0lBQWxCLGdEQUFrQjtJQUFPLGVBQXFEO0lBQXJELDhFQUFxRDtJQUdsQyxlQUE4QjtJQUE5QixnREFBOEIsbUNBQUEsY0FBQSw0QkFBQTtJQUdsRCxlQUFxQjtJQUFyQiw4Q0FBcUI7SUFHaEMsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFieEQsa0hBZ0JNOzs7SUFkSCw2RkFBb0U7OztJQVYzRSw2QkFBcUY7SUFDbkYscUhBS2U7SUFDZixvSkFrQmM7SUFDaEIsMEJBQWU7Ozs7SUF6QkUsZUFBdUI7SUFBdkIsOENBQXVCLGtCQUFBOzs7O0lBNkJ0Qyw2QkFBcUU7SUFDbkUsaUlBR2U7SUFDakIsMEJBQWU7Ozs7Ozs7SUFIWCxlQUF3QztJQUF4Qyw4REFBd0MsK0ZBQUE7OztJQVFyQiw0QkFBOEQ7SUFBQyxrQkFBQztJQUFBLGlCQUFPOzs7SUFHMUYsMkJBRWU7Ozs7O0lBRnlDLHNDQUF1Qyw0RUFBQTs7OztJQU5qRywrQkFDNkgsWUFBQTtJQUV6SCxZQUFpQjtJQUFBLG1IQUF1RTtJQUMxRixpQkFBSTtJQUNKLHNDQUFrRztJQUFsRSxtVkFBZ0IsZUFBQSxnRUFBZ0QsQ0FBQSxJQUFDO0lBQUMsaUJBQWE7SUFDL0csbUlBRWU7SUFDakIsaUJBQU07Ozs7Ozs7SUFSTixpVkFBNEg7SUFFeEgsZUFBaUI7SUFBakIsK0NBQWlCO0lBQU8sZUFBcUQ7SUFBckQsOEVBQXFEO0lBRW5FLGVBQW1CO0lBQW5CLHFDQUFtQjtJQUNoQixlQUF1QztJQUF2QyxnRUFBdUM7OztJQWQ1RCw2QkFBeUY7SUFDdkYscUhBS2U7SUFDZixvSkFXYztJQUNoQiwwQkFBZTs7OztJQWxCRSxlQUEyQjtJQUEzQixrREFBMkIsa0JBQUE7Ozs7SUFzQjFDLDZCQUFtRjtJQUNqRixpSUFHZTtJQUNqQiwwQkFBZTs7Ozs7OztJQUhYLGVBQStDO0lBQS9DLHFFQUErQywrRkFBQTs7O0lBUTVCLDRCQUE4RDtJQUFDLGtCQUFDO0lBQUEsaUJBQU87Ozs7SUFNeEYsK0JBQThIO0lBQW5DLDRQQUFTLGVBQUEsb0NBQXdCLENBQUEsSUFBQztJQUE3SCxpQkFBOEg7OztJQUF6RCw2REFBcUI7OztJQUU1RiwyQkFFZTs7Ozs7SUFGeUMsc0NBQXVDLDRFQUFBOzs7OztJQVhqRywrQkFDK0gsWUFBQTtJQUUzSCxZQUFpQjtJQUFBLG1IQUF1RTtJQUMxRixpQkFBSTtJQUNKLCtCQUFnRSx1QkFBQTtJQUU5RCxrWEFBWSxlQUFBLHlGQUFxRSxDQUFBLElBQUU7SUFDbkYsaUJBQWU7SUFDZixpSEFBOEg7SUFDaEksaUJBQU07SUFDTixtSUFFZTtJQUNqQixpQkFBTTs7Ozs7OztJQWJKLGtWQUE0SDtJQUUxSCxlQUFpQjtJQUFqQiwrQ0FBaUI7SUFBTyxlQUFxRDtJQUFyRCw4RUFBcUQ7SUFFMUUsZUFBMEQ7SUFBMUQseUdBQTBEO0lBQy9DLGVBQXVCO0lBQXZCLHFDQUF1QixrQkFBQSw2QkFBQSxtQ0FBQTtJQUcvQixlQUF5QztJQUF6QyxzRUFBeUM7SUFFbEMsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFuQjVELDZCQUFnRztJQUM5RixxSEFLZTtJQUNmLHFKQWdCYztJQUNoQiwwQkFBZ0I7Ozs7SUF2QkMsZUFBa0M7SUFBbEMseURBQWtDLGtCQUFBOzs7O0lBNEJqRCw2QkFBNkU7SUFDM0UsaUlBR2U7SUFDakIsMEJBQWU7Ozs7Ozs7SUFIWCxlQUE0QztJQUE1QyxrRUFBNEMsK0ZBQUE7OztJQVF6Qiw0QkFBOEQ7SUFBQyxrQkFBQztJQUFBLGlCQUFPOzs7SUFPdEYsMEJBQXlHOzs7SUFBbEMsaUVBQXdCOzs7OztJQUhqRywrQkFFaUY7SUFBL0Usc2FBQVMsZUFBQSw2RkFBbUUsQ0FBQSxJQUFFO0lBQzlFLHVIQUF5RztJQUN6Ryw2QkFBYztJQUFBLFlBQWdCO0lBQUEsaUJBQUksRUFBQTs7Ozs7SUFIbEMsdUlBQXNFO0lBRWhFLGVBQStEO0lBQS9ELG9JQUErRDtJQUN2RCxlQUFnQjtJQUFoQixxQ0FBZ0I7OztJQUdsQywyQkFFZTs7Ozs7SUFGeUMsc0NBQXVDLDRFQUFBOzs7SUFkakcsK0JBQzZILFlBQUE7SUFFekgsWUFBaUI7SUFBQSxtSEFBdUU7SUFDMUYsaUJBQUk7SUFDSiwwQkFBb0M7SUFDcEMsK0JBQStCO0lBQzdCLGlIQUtNO0lBQ1IsaUJBQU07SUFDTixtSUFFZTtJQUNqQixpQkFBTTs7Ozs7OztJQWhCTixpVkFBNEg7SUFFeEgsZUFBaUI7SUFBakIsK0NBQWlCO0lBQU8sZUFBcUQ7SUFBckQsOEVBQXFEO0lBSXpCLGVBQWtCO0lBQWxCLDZDQUFrQjtJQU96RCxlQUF1QztJQUF2QyxnRUFBdUM7OztJQXRCNUQsNkJBQTZGO0lBQzNGLHFIQUtlO0lBQ2Ysb0pBbUJjO0lBQ2hCLDBCQUFlOzs7O0lBMUJFLGVBQStCO0lBQS9CLHNEQUErQixrQkFBQTs7OztJQStCOUMsNkJBQWlGO0lBQy9FLGlJQUdlO0lBQ2pCLDBCQUFlOzs7Ozs7O0lBSFgsZUFBOEM7SUFBOUMscUVBQThDLCtGQUFBOzs7SUFRM0IsNEJBQThEO0lBQUMsa0JBQUM7SUFBQSxpQkFBTzs7O0lBT3RGLDBCQUNXOzs7SUFEb0UsaUVBQXdCOzs7O0lBSHpHLCtCQUVpRjtJQUEvRSxzYUFBUyxlQUFBLDhGQUFvRSxDQUFBLElBQUM7SUFDOUUsdUhBQ1c7SUFDWCw2QkFBYztJQUFBLFlBQWdCO0lBQUEsaUJBQUksRUFBQTs7Ozs7SUFKbEMsc0hBQWdGO0lBRTFFLGVBQXVFO0lBQXZFLG1IQUF1RTtJQUUvRCxlQUFnQjtJQUFoQixxQ0FBZ0I7OztJQUdsQywyQkFFZTs7Ozs7SUFGeUMsc0NBQXVDLDRFQUFBOzs7SUFmakcsK0JBQzZILFlBQUE7SUFFekgsWUFBaUI7SUFBQSxtSEFBdUU7SUFDMUYsaUJBQUk7SUFDSiwwQkFBb0M7SUFDcEMsK0JBQStCO0lBQzdCLGlIQU1NO0lBQ1IsaUJBQU07SUFDTixtSUFFZTtJQUNqQixpQkFBTTs7Ozs7OztJQWpCTixrVkFBNEg7SUFFeEgsZUFBaUI7SUFBakIsK0NBQWlCO0lBQU8sZUFBcUQ7SUFBckQsOEVBQXFEO0lBSXpCLGVBQWtCO0lBQWxCLDZDQUFrQjtJQVF6RCxlQUF1QztJQUF2QyxnRUFBdUM7OztJQXZCNUQsNkJBQStGO0lBQzdGLHFIQUtlO0lBQ2Ysb0pBb0JjO0lBQ2hCLDBCQUFlOzs7O0lBM0JFLGVBQWlDO0lBQWpDLHdEQUFpQyxtQkFBQTs7OztJQWdDaEQsNkJBQWlGO0lBQy9FLGlJQUdlO0lBQ2pCLDBCQUFlOzs7Ozs7O0lBSFgsZUFBOEM7SUFBOUMscUVBQThDLCtGQUFBOzs7SUFRM0IsNEJBQThEO0lBQUMsa0JBQUM7SUFBQSxpQkFBTzs7O0lBSzFGLDJCQUVlOzs7OztJQUZ5QyxzQ0FBdUMsNEVBQUE7Ozs7SUFSakcsK0JBQzZILFlBQUE7SUFFekgsWUFBaUI7SUFBQSxtSEFBdUU7SUFDMUYsaUJBQUk7SUFDSixxREFFcUg7SUFBbkYscVlBQVksZUFBQSx5RkFBb0UsQ0FBQSxJQUFFO0lBQUMsaUJBQTRCO0lBQ2pKLG1JQUVlO0lBQ2pCLGlCQUFNOzs7Ozs7O0lBVk4sbVZBQTRIO0lBRXhILGVBQWlCO0lBQWpCLCtDQUFpQjtJQUFPLGVBQXFEO0lBQXJELDhFQUFxRDtJQUVwRCxlQUFpQjtJQUFqQiwrQkFBaUIsMkJBQUEsOEJBQUEsd0JBQUEseUJBQUEsNkJBQUEsb0NBQUE7SUFHN0IsZUFBdUM7SUFBdkMsZ0VBQXVDOzs7SUFoQjVELDZCQUErRjtJQUM3RixxSEFLZTtJQUNmLHFKQWFjO0lBQ2hCLDBCQUFlOzs7O0lBcEJFLGVBQWlDO0lBQWpDLHdEQUFpQyxtQkFBQTs7O0lBck1sRCxzR0EwQmU7SUFHZixzR0FzQmU7SUFHZixzR0EwQmU7SUFHZixzR0FtQmU7SUFHZixzR0F3QmdCO0lBSWhCLHNHQTJCZTtJQUlmLHNHQTRCZTtJQUlmLHNHQXFCZTs7O0lBek5BLHdJQUEyRztJQTZCM0csZUFBd0U7SUFBeEUsaUdBQXdFO0lBeUJ4RSxlQUFvRTtJQUFwRSw2RkFBb0U7SUE2QnBFLGVBQXdFO0lBQXhFLGlHQUF3RTtJQXNCeEUsZUFBK0U7SUFBL0Usd0dBQStFO0lBNEIvRSxlQUE0RTtJQUE1RSxxR0FBNEU7SUErQjVFLGVBQThFO0lBQTlFLHVHQUE4RTtJQWdDOUUsZUFBOEU7SUFBOUUsdUdBQThFOzs7O0lBMkIzRiw2QkFBc0Q7SUFDcEQsNkJBQWM7SUFDWixZQUNGO0lBQUEsaUJBQUk7SUFDSiwwQkFBK0Q7SUFDakUsMEJBQWU7OztJQUhYLGVBQ0Y7SUFERSxvRUFDRjtJQUNLLGVBQW1EO0lBQW5ELHFEQUFtRDs7O0lBTDVELCtCQUFtQztJQUNqQyxxR0FLZTs7SUFDakIsaUJBQU07OztJQU40QixlQUFvQjtJQUFwQiwyREFBb0I7O0FEalB4RCxNQUFNLE9BQU8sb0JBQW9CO0lBMkQvQjtRQTFEQTs7OztXQUlHO1FBQ00sZUFBVSxHQUF1QyxFQUFFLENBQUM7UUFDcEQsZUFBVSxHQUEyQixFQUFFLENBQUM7UUFDakQsb0RBQW9EO1FBQzNDLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQiwrQkFBMEIsR0FBRyxLQUFLLENBQUM7UUFNNUM7O1dBRUc7UUFDTyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQ25FOztXQUVHO1FBQ08sY0FBUyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbEQ7O1dBRUc7UUFDTyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDMUMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBK0IsQ0FBQztJQTZCMUQsQ0FBQztJQUVoQixRQUFRO1FBQ04sb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlFLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ25GLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsa0NBQWtDLEVBQUUsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdEYsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO2dCQUN0QixPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRixDQUFDO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBQ0QsZ0NBQWdDLENBQUMsVUFBc0I7UUFDckQsSUFBSSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDNUIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN2QyxJQUFHLE9BQU8sVUFBVSxFQUFFLEtBQUssS0FBSyxRQUFRO2dCQUFFLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQTtZQUN0RixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUYsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3BDLElBQUksd0JBQXdCLEdBQUcsRUFBRSxDQUFBO2dCQUNqQyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQTtnQkFDL0MsSUFBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsS0FBSyxjQUFjLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEtBQUssYUFBYSxFQUFFO29CQUM1RyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLGlCQUFpQixLQUFLLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2pHO2dCQUNELFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFO29CQUN2RCxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7b0JBQ3JDLElBQUcsT0FBTyxhQUFhLEVBQUUsS0FBSyxLQUFLLFFBQVE7d0JBQUUsYUFBYSxDQUFDLEtBQUssR0FBRyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFBO29CQUMvRix3QkFBd0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQTtnQkFDL0csQ0FBQyxDQUFDLENBQUE7Z0JBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRztvQkFDdEQsS0FBSyxFQUFFLGNBQWM7b0JBQ3JCLFNBQVMsRUFBRSx3QkFBd0I7aUJBQ3BDLENBQUE7YUFDRjtpQkFDSTtnQkFDSCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQzthQUN4RTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDO0lBQ0QsbUJBQW1CLENBQ2pCLFVBQThDLEVBQzlDLFVBQWtDO1FBRWxDLElBQUksU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFeEMsS0FBSyxJQUFJLEtBQUssSUFBSSxVQUFVLEVBQUU7WUFDNUIsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ3hILElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbkUsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0YsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDO2dCQUNsQyxLQUFLLEVBQUUsWUFBWTtnQkFDbkIsU0FBUyxFQUFFLGlCQUFpQjthQUM3QixDQUFDLENBQUMsQ0FBQTtTQUNKO1FBQ0QsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1lBQzFCLGFBQWEsRUFBRSxTQUFTO1NBQ3pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQXFCLENBQUM7SUFDbkUsQ0FBQztJQUNELHNCQUFzQixDQUNwQixLQUFrQyxFQUNsQyxTQUEyQixFQUMzQixLQUFVO1FBRVYsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckYsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNwQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO1NBQ3JEO0lBQ0gsQ0FBQztJQUNELGtDQUFrQyxDQUNoQyxLQUFrQyxFQUNsQyxPQUEyQixFQUMzQixTQUEyQixFQUMzQixLQUFVO1FBRVYsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7O1lBQ0ksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELGlDQUFpQyxDQUMvQixLQUFrQyxFQUNsQyxPQUEyQixFQUMzQixTQUEyQixFQUMzQixNQUFrQjtRQUVsQixJQUFJLGNBQWMsR0FBeUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUN6RSxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRTtZQUN4QixJQUFJLFNBQVMsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0UsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xCLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3JDO2lCQUFNO2dCQUNMLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDbkM7U0FDRjtRQUNELE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxLQUFhLEVBQUUsY0FBdUQ7UUFDdkYsT0FBTyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsMEJBQTBCLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxhQUFhO1FBQ3hELElBQUc7WUFDRCxNQUFNLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekcsT0FBTyxzQkFBc0IsQ0FBQztTQUMvQjtRQUNELE9BQU0sQ0FBQyxFQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLFNBQVMsRUFBRSxLQUFLO1FBQ2hDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsd0JBQXdCLENBQ3RCLFVBQWUsRUFDZixXQUF3QyxFQUN4QyxXQUEySDtRQUUzSCxJQUFJLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZDLElBQUksU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUE7UUFDckMsSUFBSSxlQUFlLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDdkgsSUFBRyxDQUFDLFNBQVM7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUMvQixJQUFJLFdBQVcsQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFO1lBQzVDLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEtBQXVDLFdBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNsSTthQUNJLElBQUksV0FBVyxDQUFDLFNBQVMsS0FBSyxhQUFhLEVBQUU7WUFDaEQsSUFBSSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQW9ELFdBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hILFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7U0FDMUY7UUFFRCxJQUFJLFNBQVMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLEtBQUssSUFBSSxRQUFRLElBQUksU0FBUyxFQUFFO2dCQUM5QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDNUY7U0FDRjtRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxTQUFzQyxFQUFFLFNBQWM7UUFDNUUsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ3pGLElBQUksT0FBTyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXZELElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUU7WUFDbkMsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLE1BQU0sSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzVILElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN2RixJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssTUFBTSxFQUFFO2dCQUM1QyxJQUFJLFNBQVMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7b0JBQzlDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQzdHO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDcEc7YUFDRjtTQUNGO2FBQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLGNBQWMsRUFBRTtZQUNqRCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtnQkFDN0IsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFBO2dCQUMzRSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxDQUFDLENBQUE7WUFDRCxJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssVUFBVSxFQUFFO2dCQUMzQyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNkLElBQUksU0FBUyxFQUFFLFdBQVcsRUFBRSwwQkFBMEIsS0FBSyxLQUFLLEVBQUU7d0JBQ2hFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3hCOzt3QkFFQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDNUM7O29CQUNJLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFBO2FBQzNDO2lCQUNJLElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxPQUFPLEVBQUU7Z0JBQzdDLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFBO2FBQ3RDO1NBQ0Y7YUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssYUFBYSxFQUFFO1lBQ2hELElBQUksU0FBUyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxJQUFJLEtBQUssSUFBSSxTQUFTLEVBQUU7b0JBQzNCLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztvQkFDeEUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO3dCQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN4RTtnQkFDRCxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEI7U0FDRjthQUFNLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0I7O1lBQU0sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBQ0QsdUJBQXVCLENBQUMsU0FBc0MsRUFBRSxTQUFjO1FBQzVFLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUU7WUFDbkMsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLE1BQU0sSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLFVBQVU7Z0JBQUUsT0FBTyxTQUFTLENBQUM7aUJBQ2hHLElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7aUJBQzdELElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxNQUFNLEVBQUU7Z0JBQzVDLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNyRztTQUNGO2FBQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLGNBQWMsRUFBRTtZQUNqRCxPQUFPLFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1NBQy9CO2FBQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLGFBQWEsRUFBRTtZQUNoRCxPQUFPLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0M7YUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQzVDLE9BQU8sU0FBUyxDQUFDO1NBQ2xCOztZQUFNLE9BQU8sU0FBUyxDQUFDO0lBQzFCLENBQUM7O3dGQWpTVSxvQkFBb0I7dUVBQXBCLG9CQUFvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUNiakMsK0JBQWdDO1FBQzlCLGdDQUE0QztRQUMxQyx1RkFxQmU7UUFDakIsMEJBQWU7UUFDakIsaUJBQU87UUFHUCxzSEE4TmM7UUFFZCxzSEFTYzs7UUFyUVIsMkNBQXlCO1FBRWdDLGVBQXdDO1FBQXhDLGlFQUF3Qzs7dUZEVzFGLG9CQUFvQjtjQUxoQyxTQUFTOzJCQUNFLGtCQUFrQjtzQ0FVbkIsVUFBVTtrQkFBbEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFFRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLDBCQUEwQjtrQkFBbEMsS0FBSztZQVNJLFdBQVc7a0JBQXBCLE1BQU07WUFJRyxTQUFTO2tCQUFsQixNQUFNO1lBSUcsZUFBZTtrQkFBeEIsTUFBTTtZQUNHLFlBQVk7a0JBQXJCLE1BQU07WUFHUCxxQkFBcUI7a0JBRHBCLFlBQVk7bUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBSXhELG1CQUFtQjtrQkFEbEIsWUFBWTttQkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFJdEQsZUFBZTtrQkFEZCxZQUFZO21CQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUlsRCxtQkFBbUI7a0JBRGxCLFlBQVk7bUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBSXRELDBCQUEwQjtrQkFEekIsWUFBWTttQkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFJN0QsdUJBQXVCO2tCQUR0QixZQUFZO21CQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUkxRCx5QkFBeUI7a0JBRHhCLFlBQVk7bUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBSTVELHlCQUF5QjtrQkFEeEIsWUFBWTttQkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0FBK085RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFVBQXVELEVBQWUsRUFBRTtJQUM1RyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQ3pCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQztTQUNiO2FBQ0ksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDbEMsS0FBSyxHQUFHLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtTQUN4QztRQUNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQTtRQUVqQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFBO1lBQ2hCLElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUE7WUFDL0IsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUN0QixLQUFLLFVBQVU7b0JBQ2IsS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7d0JBQzlELEtBQUssR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztxQkFDL0I7b0JBQ0QsSUFBRyxLQUFLO3dCQUFFLEtBQUssR0FBRyxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsQ0FBQTtvQkFDckMsTUFBTTtnQkFDUixLQUFLLFdBQVc7b0JBQ2QsS0FBSyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQ3ZELE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFBO29CQUNsRSxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFBO29CQUN4QyxNQUFNO2dCQUNSLEtBQUssV0FBVztvQkFDZCxLQUFLLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDdkQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQTtvQkFDdEQsSUFBRyxLQUFLO3dCQUFFLEtBQUssR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQTtvQkFDeEMsTUFBTTtnQkFDUixLQUFLLE9BQU87b0JBQ1YsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQ2pDLElBQUcsS0FBSzt3QkFBRSxLQUFLLEdBQUcsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLENBQUE7b0JBQ2xDLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQ3pELElBQUcsS0FBSzt3QkFBRSxLQUFLLEdBQUcsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLENBQUE7b0JBQ25DLE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTTthQUNUO1lBQ0QsSUFBSSxLQUFLO2dCQUFFLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUE7UUFDN0MsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5zRHluYW1pY0Zvcm0gfSBmcm9tIFwiLi9keW5hbWljLWZvcm0ubmFtZXNwYWNlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtZHluYW1pYy1mb3JtXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9keW5hbWljLWZvcm0uY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBmb3JtRmllbGRzOiAgRHluYW1pYyBmaWVsZHMgcmVjaWV2ZWQgZnJvbSB0aGUgQVBJIG1ldGFkYXRhIHRvIGJ1aWxkIGEgZHluYW1pYyBmb3JtXG4gICAqIGZvcm1WYWx1ZXM6ICBIb2xkcyB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZm9ybSB3aXRoIFwia2V5XCIgYmVpbmcgZHluYW1pYyBmaWVsZCBcInRpdGxlXCJcbiAgICogICAgICAgICAgICAgIGFuZCB2YWx1ZSBiZWluZyB0aGUgdXNlciBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGZvcm1GaWVsZHM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4gPSBbXTtcbiAgQElucHV0KCkgZm9ybVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAvLyBOZWVkIHRvIGRlcHJlY2F0ZSB0aGVzZSBpbnB1dHMgYW5kIHVzZSBjb25zdGFudHMuXG4gIEBJbnB1dCgpIGFjdGl2ZUJ0bkljb25VcmwgPSBcIlwiO1xuICBASW5wdXQoKSBjYWxlbmRhckljb25VcmwgPSBcIlwiO1xuICBASW5wdXQoKSByZW1vdmVJY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIGR5bmFtaWNGb3JtOiBDb25zdHJ1Y3RlZCB1c2luZyBmb3JtRmllbGRzIGFuZCBmb3JtVmFsdWVzKGluIGNhc2Ugb2YgZWRpdClcbiAgICovXG4gIGR5bmFtaWNGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBmb3JtVXBkYXRlZDogRW1pdHMgZm9ybVZhbHVlcyBPYmplY3Qgd2hlbmV2ZXIgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIGR5bmFtaWMgZm9ybS5cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBhbnkgfT4oKTtcbiAgLyoqXG4gICAqIGZvcm1WYWxpZDogRW1pdHMgYm9vbGVhbiBkZXBlbmRpbmcgb24gdmFsaWRpdHkgb2YgdGhlIGZvcm1cbiAgICovXG4gIEBPdXRwdXQoKSBmb3JtVmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qKlxuICAgKiBmb3JtSW5pdGlhbGl6ZWQ6IEVtaXRzIGR5bmFtaWMgZm9ybSBBUEkgb24gZm9ybSBpbml0aWxpemF0aW9uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybUluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmaWVsZFJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4oKTtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tSW5wdXRUZXh0TnVtYmVyXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dFRleHROdW1iZXI6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBcbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUlucHV0VGV4dGFyZWFcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbUlucHV0VGV4dGFyZWE6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21JbnB1dERhdGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbUlucHV0RGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUJvb2xlYW5Ub2dnbGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbUJvb2xlYW5Ub2dnbGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21TaW5nbGVTZWxlY3REcm9wZG93blwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd246IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21TaW5nbGVTZWxlY3RSYWRpb1wiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW86IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21NdWx0aVNlbGVjdENoZWNrYm94XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21NdWx0aVNlbGVjdENoZWNrYm94OiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tTXVsdGlTZWxlY3REcm9wZG93blwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tTXVsdGlTZWxlY3REcm9wZG93bjogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgZHluYW1pY0Zvcm1BUEk6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGb3JtQVBJO1xuICB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEJ1aWxkaW5nIHRoZSBmb3JtXG4gICAgdGhpcy5keW5hbWljRm9ybSA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRm9ybSh0aGlzLmZvcm1GaWVsZHMsIHRoaXMuZm9ybVZhbHVlcyk7XG5cbiAgICAvLyBTdWJzY3JpYmluZyB0byBmb3JtIGNoYW5nZXMgYW5kIGVtaXRpbmcgdmFsdWVzLlxuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJCA9IHRoaXMuZHluYW1pY0Zvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShmb3JtVmFsdWUgPT4ge1xuICAgICAgdGhpcy5vbkZvcm1WYWx1ZUNoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIC8vYXBpIHRvIGV4cG9zZSBmdW5jdGlvbnNcbiAgICB0aGlzLmR5bmFtaWNGb3JtQVBJID0ge1xuICAgICAgdXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdDogdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0LmJpbmQodGhpcyksXG4gICAgICBkZWZhdWx0Rm9ybVZhbHVlczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdCh0aGlzLmR5bmFtaWNGb3JtLnZhbHVlLmR5bmFtaWNGaWVsZHMpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtQVBJKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuICBvbkZvcm1WYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgbGV0IGZvcm1WYWx1ZXMgPSB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgdGhpcy5mb3JtVmFsaWQuZW1pdCh0aGlzLmR5bmFtaWNGb3JtLnZhbGlkKTtcbiAgICB0aGlzLmZvcm1VcGRhdGVkLmVtaXQoZm9ybVZhbHVlcyk7XG4gICAgY29uc29sZS5sb2coZm9ybVZhbHVlcylcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGaWVsZHNWYWx1ZU9iamVjdChmb3JtVmFsdWVzOiBBcnJheTxhbnk+KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgbGV0IGR5bmFtaWNGaWVsZHNWYWx1ZSA9IHt9O1xuICAgIGZvcm1WYWx1ZXMuZm9yRWFjaCgoZmllbGRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgIGlmKHR5cGVvZiBmaWVsZFZhbHVlPy52YWx1ZSA9PT0gJ3N0cmluZycpIGZpZWxkVmFsdWUudmFsdWUgPSBmaWVsZFZhbHVlPy52YWx1ZT8udHJpbSgpXG4gICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0sIGZpZWxkVmFsdWUudmFsdWUpO1xuICAgICAgaWYgKGZpZWxkVmFsdWUuc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXMgPSB7fVxuICAgICAgICBsZXQgc3ViRmllbGQgPSB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLnN1YkZpZWxkc1xuICAgICAgICBpZih0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgfHwgdGhpcy5mb3JtRmllbGRzW2luZGV4XS5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgICAgICBzdWJGaWVsZCA9IHN1YkZpZWxkLmZpbHRlcigoc3ViRmllbGQpID0+IHN1YkZpZWxkLnBhcmVudENvbmZpZ1ZhbHVlID09PSBmaWVsZFZhbHVlLnZhbHVlLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBmaWVsZFZhbHVlLnN1YkZpZWxkcy5mb3JFYWNoKChzdWJGaWVsZFZhbHVlLCBzdWJJbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzdWJGb3JtRmllbGQgPSBzdWJGaWVsZFtzdWJJbmRleF1cbiAgICAgICAgICBpZih0eXBlb2Ygc3ViRmllbGRWYWx1ZT8udmFsdWUgPT09ICdzdHJpbmcnKSBzdWJGaWVsZFZhbHVlLnZhbHVlID0gc3ViRmllbGRWYWx1ZT8udmFsdWU/LnRyaW0oKVxuICAgICAgICAgIGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlc1tzdWJGb3JtRmllbGQuY29uZmlnTmFtZV0gPSB0aGlzLm1hcEZvcm1GaWVsZFRvRm9ybVZhbHVlKHN1YkZvcm1GaWVsZCwgc3ViRmllbGRWYWx1ZSlcbiAgICAgICAgfSlcbiAgICAgICAgZHluYW1pY0ZpZWxkc1ZhbHVlW3RoaXMuZm9ybUZpZWxkc1tpbmRleF0uY29uZmlnTmFtZV0gPSB7XG4gICAgICAgICAgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgIHN1YkZpZWxkczogZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkeW5hbWljRmllbGRzVmFsdWU7XG4gIH1cbiAgZ2VuZXJhdGVEeW5hbWljRm9ybShcbiAgICBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+LFxuICAgIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgbGV0IGZvcm1BcnJheSA9IG5ldyBVbnR5cGVkRm9ybUFycmF5KFtdKVxuXG4gICAgZm9yIChsZXQgZmllbGQgb2YgZm9ybUZpZWxkcykge1xuICAgICAgbGV0IGZpZWxkVmFsdWUgPSBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdPy52YWx1ZSA/IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0udmFsdWUgOiBmb3JtVmFsdWVzW2ZpZWxkLmNvbmZpZ05hbWVdXG4gICAgICBsZXQgZmllbGRDb250cm9sID0gdGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmaWVsZCwgZmllbGRWYWx1ZSk7XG4gICAgICBsZXQgc3ViRmllbGRzQ29udHJvbHMgPSB0aGlzLmdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhmb3JtVmFsdWVzLCBmaWVsZCwgZmllbGRDb250cm9sLnZhbHVlKTtcbiAgICAgIGZvcm1BcnJheS5wdXNoKG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgICAgdmFsdWU6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgc3ViRmllbGRzOiBzdWJGaWVsZHNDb250cm9sc1xuICAgICAgfSkpXG4gICAgfSAgXG4gICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICAgIGR5bmFtaWNGaWVsZHM6IGZvcm1BcnJheVxuICAgIH0pXG4gIH1cbiAgXG4gIGdldER5bmFtaWNGaWVsZHNDb250cm9scygpOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5keW5hbWljRm9ybS5nZXQoXCJkeW5hbWljRmllbGRzXCIpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cbiAgdXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChmaWVsZC5zdWJGaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKHRoaXMuZm9ybVZhbHVlcywgZmllbGQsIHZhbHVlKTtcbiAgICAgIGZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzdWJGaWVsZHMnKVxuICAgICAgZm9ybUdyb3VwLmFkZENvbnRyb2woJ3N1YkZpZWxkcycsIHN1YkZpZWxkc0NvbnRyb2xzKVxuICAgIH1cbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZTogYW55XG4gICk6IHZvaWQge1xuICAgIGlmIChjb250cm9sLnZhbHVlPy52YWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMudXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybUdyb3VwLCB2YWx1ZSk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLFxuICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcbiAgICB2YWx1ZXM6IEFycmF5PGFueT5cbiAgKTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdGVkVmFsdWVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfT4gPSBjb250cm9sLnZhbHVlO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgbGV0IGl0ZW1JbmRleCA9IHNlbGVjdGVkVmFsdWVzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ubGFiZWwgPT09IHZhbHVlLmxhYmVsKTtcbiAgICAgIGlmIChpdGVtSW5kZXggPiAtMSkge1xuICAgICAgICBzZWxlY3RlZFZhbHVlcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnB1c2goeyAuLi52YWx1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlcyk7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgaXNDaGVja0JveFNlbGVjdGVkKHZhbHVlOiBzdHJpbmcsIHNlbGVjdGVkVmFsdWVzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUpID4gLTE7XG4gIH1cblxuICBmaW5kU2VsZWN0ZWRTdWJGaWVsZENvbmZpZyhzdWJmaWVsZHMsIHZhbHVlLCBzdWJGaWVsZEluZGV4KSB7XG4gICAgdHJ5e1xuICAgICAgY29uc3Qgc2VsZWN0ZWRTdWJGaWVsZENvbmZpZyA9IHN1YmZpZWxkcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnBhcmVudENvbmZpZ1ZhbHVlID09PSB2YWx1ZSlbc3ViRmllbGRJbmRleF07XG4gICAgICByZXR1cm4gc2VsZWN0ZWRTdWJGaWVsZENvbmZpZztcbiAgICB9XG4gICAgY2F0Y2goZSl7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N1YmZpZWxkIGluZGV4IG5vdCBmb3VuZCcpO1xuICAgIH1cbiAgfVxuXG4gIG1hdGNoUGFyZW50Q29uZmlnKHN1YmZpZWxkcywgdmFsdWUpIHtcbiAgICBpZiAoIXN1YmZpZWxkcyB8fCBzdWJmaWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzdWJmaWVsZHMuc29tZShpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKTtcbiAgfVxuXG4gIGdlbmVyYXRlU3ViRHluYW1pY0ZpZWxkcyhcbiAgICBmb3JtVmFsdWVzOiBhbnksXG4gICAgcGFyZW50RmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBwYXJlbnRWYWx1ZTogQXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+IHwge2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5cbiAgKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgbGV0IGNvbnRyb2xzID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG4gICAgbGV0IHN1YkZpZWxkcyA9IHBhcmVudEZpZWxkLnN1YkZpZWxkc1xuICAgIGxldCBzdWJGaWVsZHNWYWx1ZXMgPSBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdPy5zdWJGaWVsZHMgPyBmb3JtVmFsdWVzW3BhcmVudEZpZWxkLmNvbmZpZ05hbWVdLnN1YkZpZWxkcyA6IHt9XG4gICAgaWYoIXN1YkZpZWxkcykgcmV0dXJuIGNvbnRyb2xzO1xuICAgIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnKSB7XG4gICAgICBzdWJGaWVsZHMgPSBzdWJGaWVsZHMuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09ICg8e2xhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfT5wYXJlbnRWYWx1ZSk/LnZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGFyZW50RmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnKSB7XG4gICAgICBsZXQgcGFyZW50VmFsdWVzID0gbmV3IFNldCgoPEFycmF5PHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB9Pj5wYXJlbnRWYWx1ZSkubWFwKCh2YWx1ZSkgPT4gdmFsdWUudmFsdWUpKTtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBwYXJlbnRWYWx1ZXMuaGFzKHN1YkZpZWxkLnBhcmVudENvbmZpZ1ZhbHVlKSk7XG4gICAgfVxuXG4gICAgaWYgKHN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGxldCBzdWJGaWVsZCBvZiBzdWJGaWVsZHMpIHtcbiAgICAgICAgICBjb250cm9scy5wdXNoKHRoaXMubWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoc3ViRmllbGQsIHN1YkZpZWxkc1ZhbHVlc1tzdWJGaWVsZC5jb25maWdOYW1lXSkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICByZXR1cm4gY29udHJvbHM7XG4gIH1cbiAgbWFwRm9ybVZhbHVlVG9Gb3JtRmllbGQoZm9ybUZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsIGZvcm1WYWx1ZTogYW55KTogYW55IHtcbiAgICBsZXQgdmFsaWRhdG9ycyA9IGZvcm1GaWVsZC52YWxpZGF0b3JzID8gW2R5bmFtaWNGaWVsZFZhbGlkYXRvcihmb3JtRmllbGQudmFsaWRhdG9ycyldOiBbXVxuICAgIGxldCBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IFwiXCIpO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSBjb250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSA/IGZvcm1WYWx1ZSA6IDApO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcImRhdGVcIikge1xuICAgICAgICBpZiAoZm9ybVZhbHVlICYmIHR5cGVvZiBmb3JtVmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudChmb3JtVmFsdWUpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG1vbWVudCgpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgY29uc3QgZmluZFNlbGVjdGVkVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gZm9ybVZhbHVlKVxuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IGZvcm1GaWVsZC5pdGVtc0xpc3RbaW5kZXhdOiBcIlwiO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkcm9wZG93blwiKSB7XG4gICAgICAgIGlmICghZm9ybVZhbHVlKSB7XG4gICAgICAgICAgaWYgKGZvcm1GaWVsZD8uZmllbGRDb25maWc/Lm1hcmtJbml0aWFsVmFsdWVBc1NlbGVjdGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShmb3JtRmllbGQuaXRlbXNMaXN0WzBdKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJyYWRpb1wiKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgaWYgKGZvcm1WYWx1ZSAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGZvcm1WYWx1ZSkge1xuICAgICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4uZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKCEhZm9ybVZhbHVlKTtcbiAgICB9IGVsc2UgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuICBtYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSByZXR1cm4gZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSByZXR1cm4gK2Zvcm1WYWx1ZTtcbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIG1vbWVudC50eihmb3JtVmFsdWUsIGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQsIGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkudmFsdWVPZigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8udmFsdWUgPz8gJyc7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcIm11bHRpU2VsZWN0XCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU/Lm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBmb3JtVmFsdWU7XG4gICAgfSBlbHNlIHJldHVybiBmb3JtVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGR5bmFtaWNGaWVsZFZhbGlkYXRvciA9ICh2YWxpZGF0b3JzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGRWYWxpZGF0b3I+KTogVmFsaWRhdG9yRm4gPT4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBsZXQgdmFsdWUgPSBjb250cm9sLnZhbHVlXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdmFsdWUgPSB2YWx1ZT8udmFsdWUgPyB2YWx1ZS52YWx1ZSA6ICcnXG4gICAgfVxuICAgIGxldCBlcnJvcnMgPSBudWxsXG5cbiAgICB2YWxpZGF0b3JzLmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xuICAgICAgbGV0IGVycm9yID0gbnVsbFxuICAgICAgbGV0IG1lc3NhZ2UgPSB2YWxpZGF0b3IubWVzc2FnZVxuICAgICAgc3dpdGNoICh2YWxpZGF0b3IudHlwZSkge1xuICAgICAgICBjYXNlIFwiUmVxdWlyZWRcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucmVxdWlyZWQoY29udHJvbCk7XG4gICAgICAgICAgaWYgKCFlcnJvciAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgIGVycm9yID0geyBSZXF1aXJlZDogbWVzc2FnZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7UmVxdWlyZWQ6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNaW5MZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWluTGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5taW5sZW5ndGgucmVxdWlyZWRMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNaW5MZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTWF4TGVuZ3RoXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLm1heExlbmd0aCgrdmFsaWRhdG9yLnZhbHVlKShjb250cm9sKVxuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoJyR7MH0nLCBlcnJvcj8uYWN0dWFsTGVuZ3RoKVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHsgTWF4TGVuZ3RoOiBtZXNzYWdlIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkVtYWlsXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLmVtYWlsKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0VtYWlsOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQ3VzdG9tXCI6XG4gICAgICAgICAgZXJyb3IgPSBWYWxpZGF0b3JzLnBhdHRlcm4oYCR7dmFsaWRhdG9yLnZhbHVlfWApKGNvbnRyb2wpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0ge0N1c3RvbTogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJvcikgZXJyb3JzID0geyAuLi5lcnJvcnMsIC4uLmVycm9yIH1cbiAgICB9KVxuICAgIHJldHVybiBlcnJvcnNcbiAgfVxufSIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZHluYW1pY0Zvcm1cIj5cbiAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwiZHluYW1pY0ZpZWxkc1wiPlxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiICpuZ0Zvcj1cImxldCBmaWVsZENvbnRyb2wgb2YgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICRpbXBsaWNpdDogZm9ybUZpZWxkc1tpXSxcbiAgICAgICAgICBmb3JtR3JvdXA6IGZpZWxkQ29udHJvbCxcbiAgICAgICAgICBjb250cm9sOiBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWVcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWItZHluYW1pYy1mb3JtXCIgKm5nSWY9XCJmaWVsZENvbnRyb2wudmFsdWUgJiYgKCEhZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzICYmIGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcz8ubGVuZ3RoID4gMCAmJiBtYXRjaFBhcmVudENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZS52YWx1ZS52YWx1ZSkpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YkZpZWxkQ29udHJvbCBvZiBmaWVsZENvbnRyb2wuY29udHJvbHMuc3ViRmllbGRzLmNvbnRyb2xzOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogZmluZFNlbGVjdGVkU3ViRmllbGRDb25maWcoZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzLCBmaWVsZENvbnRyb2wuY29udHJvbHMudmFsdWUudmFsdWUudmFsdWUsaiksXG4gICAgICAgICAgICAgIGNvbnRyb2w6IHN1YkZpZWxkQ29udHJvbFxuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cblxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZCBsZXQtZmllbGQgbGV0LWNvbnRyb2w9XCJjb250cm9sXCIgbGV0LWZvcm1ncm91cD1cImZvcm1Hcm91cFwiPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAndGV4dCcgfCAnbnVtYmVyJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiAoZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICd0ZXh0JyB8fCBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ251bWJlcicpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUlucHV0VGV4dE51bWJlcjsgZWxzZSBkZWZhdWx0SW5wdXRUZXh0TnVtYmVyXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSW5wdXRUZXh0TnVtYmVyXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0VGV4dE51bWJlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQ/LnRpdGxlIH19IDxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dC1maWVsZCBpcC10ZXh0XCIgW3R5cGVdPVwiZmllbGQuZmllbGRJbnB1dFR5cGVcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCIgXG4gICAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXInOiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnMgPyAnMXB4IHNvbGlkICNCMDAwMjAnOiAnJ31cIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclRleHQgPyBmaWVsZC5wbGFjZWhvbGRlclRleHQgOiAnSW5wdXQgVGV4dCdcIiBcbiAgICAgICAgICBbbWluXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnbnVtYmVyJyA/IDAgOiAnJyBcIi8+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiIFxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiXG4gICAgICAgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgXG4gIDwhLS0gZmllbGRUeXBlOiAnaW5wdXQnIGZpZWxkSW5wdXRUeXBlOiAndGV4dGFyZWEnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dGFyZWEnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUlucHV0VGV4dGFyZWE7IGVsc2UgZGVmYXVsdElucHV0VGV4dGFyZWFcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSW5wdXRUZXh0YXJlYVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0VGV4dGFyZWE+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDcgZmllbGQtdGl0bGUtc21cIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1iYXNpczogMTAwJVwiPjwvZGl2PlxuICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJpbnB1dC1maWVsZCBpcC10ZXh0YXJlYVwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IGNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycyA/ICcxcHggc29saWQgI0IwMDAyMCc6ICcnfVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyVGV4dCA/IGZpZWxkLnBsYWNlaG9sZGVyVGV4dCA6ICdJbnB1dCBUZXh0J1wiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIFxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ2RhdGUnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnaW5wdXQnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZGF0ZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tSW5wdXREYXRlOyBlbHNlIGRlZmF1bHRJbnB1dERhdGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JbnB1dERhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SW5wdXREYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIlxuICAgICAgICAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fSA8c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImRhdGUtcGlja2VyXCIgcmVhZG9ubHkgbWlzVHpEcCBbZHBDb25maWddPVwiZmllbGQuZmllbGRDb25maWdcIlxuICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwiY29udHJvbC5zZXRWYWx1ZSgkZXZlbnQpXCIgW3NlbGVjdGVkRGF0ZV09XCJjb250cm9sLnZhbHVlXCIgW29mZnNldFldPVwiMFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiY29udHJvbC52YWx1ZVwiICNkcCAvPlxuICAgICAgICAgIDxpbWcgYWx0PVwiZGF0YS1waWNrZXJcIiAqbmdJZj1cImNhbGVuZGFySWNvblVybFwiIGNsYXNzPVwiZGF0ZS1waWNrZXItaWNvblwiIFtzcmNdPVwiY2FsZW5kYXJJY29uVXJsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkcC5jbGljaygpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnYm9vbGVhbicgZmllbGRJbnB1dFR5cGU6ICd0b2dnbGUnIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnYm9vbGVhbicgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICd0b2dnbGUnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUJvb2xlYW5Ub2dnbGU7IGVsc2UgZGVmYXVsdEJvb2xlYW5Ub2dnbGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21Cb29sZWFuVG9nZ2xlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEJvb2xlYW5Ub2dnbGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG1pcy1zd2l0Y2ggW2NvbnRyb2xdPVwiY29udHJvbFwiICh2YWx1ZUNoYW5nZWQpPVwidXBkYXRlU3ViRHluYW1pY0ZpZWxkcyhmaWVsZCwgZm9ybWdyb3VwLCAkZXZlbnQpXCI+PC9taXMtc3dpdGNoPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj4gICAgXG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdzaW5nbGVTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21TaW5nbGVTZWxlY3REcm9wZG93bjsgZWxzZSBkZWZhdWx0U2luZ2xlU2VsZWN0RHJvcGRvd25cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21TaW5nbGVTZWxlY3REcm9wZG93blwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTaW5nbGVTZWxlY3REcm9wZG93bj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydyZW1vdmVhYmxlLWNvbnRhaW5lcicgOiBmaWVsZD8uaXNSZW1vdmVhYmxlfVwiPlxuICAgICAgICAgIDxtaXMtZHJvcGRvd24gW3NlYXJjaEVuYWJsZWRdPVwiZmFsc2VcIiBbd2lkdGhdPVwiJzE0MHB4J1wiIFtkYXRhXT1cImZpZWxkLml0ZW1zTGlzdFwiIFtzZWxlY3RlZEl0ZW1dPVwiY29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj5cbiAgICAgICAgICA8L21pcy1kcm9wZG93bj5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwiZmllbGQuaXNSZW1vdmVhYmxlICYmIHJlbW92ZUljb25VcmxcIiBjbGFzcz1cInJlbW92ZS1pY29uXCIgW3NyY109XCJyZW1vdmVJY29uVXJsXCIgKGNsaWNrKT1cImZpZWxkUmVtb3ZlZC5lbWl0KGZpZWxkKVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXIgPlxuICBcblxuICA8IS0tIGZpZWxkVHlwZTogJ3NpbmdsZVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdyYWRpbycgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdzaW5nbGVTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAncmFkaW8nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvOyBlbHNlIGRlZmF1bHRTaW5nbGVTZWxlY3RSYWRpb1wiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNpbmdsZVNlbGVjdFJhZGlvPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWNoZWNrYm94LWNvbW1vblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGVja2JveC1hY3RpdmUnOiBpdGVtLmxhYmVsID09PSBjb250cm9sLnZhbHVlPy5sYWJlbCB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIGl0ZW0pO1wiPlxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIihpdGVtLmxhYmVsID09PSBjb250cm9sLnZhbHVlPy5sYWJlbCkgJiYgYWN0aXZlQnRuSWNvblVybFwiIFtzcmNdPVwiYWN0aXZlQnRuSWNvblVybFwiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImg2XCI+e3sgaXRlbS5sYWJlbCB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICBcblxuICA8IS0tIGZpZWxkVHlwZTogJ211bHRpU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2NoZWNrYm94JyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21NdWx0aVNlbGVjdENoZWNrYm94OyBlbHNlIGRlZmF1bHRNdWx0aVNlbGVjdENoZWNrYm94XCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNdWx0aVNlbGVjdENoZWNrYm94PlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cImNoZWNrYm94ZXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWNoZWNrYm94LWNvbW1vblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGVja2JveC1hY3RpdmUnOiBpc0NoZWNrQm94U2VsZWN0ZWQoaXRlbS5sYWJlbCwgY29udHJvbC52YWx1ZSkgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvck11bHRpU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsIFtpdGVtXSlcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpc0NoZWNrQm94U2VsZWN0ZWQoaXRlbS5sYWJlbCwgY29udHJvbC52YWx1ZSkgJiYgYWN0aXZlQnRuSWNvblVybFwiIFtzcmNdPVwiYWN0aXZlQnRuSWNvblVybFwiXG4gICAgICAgICAgICAgIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImg2XCI+e3sgaXRlbS5sYWJlbCB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdtdWx0aVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdkcm9wZG93bicgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tTXVsdGlTZWxlY3REcm9wZG93bjsgZWxzZSBkZWZhdWx0TXVsdGlTZWxlY3REcm9wZG93blwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd25cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TXVsdGlTZWxlY3REcm9wZG93bj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8bWlzLW11bHRpLXNlbGVjdC1kcm9wZG93biBbd2lkdGhdPVwiJzE0MHB4J1wiIFtzaG93U2VsZWN0ZWRDb3VudF09XCJ0cnVlXCIgW2Ryb3Bkb3duTGlzdFdpZHRoXT1cIicyNTZweCdcIlxuICAgICAgICAgIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW2hpZGVBcHBseUJ1dHRvbl09XCJ0cnVlXCIgW2RhdGFdPVwiZmllbGQuaXRlbXNMaXN0XCJcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtc109XCJjb250cm9sLnZhbHVlXCIgKG9uQ2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCAkZXZlbnQpO1wiPjwvbWlzLW11bHRpLXNlbGVjdC1kcm9wZG93bj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZHluYW1pY0ZpZWxkRXJyb3JzIGxldC1lcnJvcnM+XG4gIDxkaXYgaWQ9XCJlcnJvci1tZXNzYWdlcy1jb250YWluZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnMgfCBrZXl2YWx1ZVwiPlxuICAgICAgPHAgY2xhc3M9XCJoOFwiPlxuICAgICAgICB7e1wiIOKAoiAmbmJzcDtcIiArIGVycm9yLnZhbHVlfX1cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgW25nU3R5bGVdPVwieyAnZmxleC1iYXNpcyc6ICcxMDAlJywgJ2hlaWdodCc6ICcwJyB9XCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -1057,6 +1057,7 @@ class DynamicFormComponent {
1057
1057
  return controls;
1058
1058
  }
1059
1059
  mapFormValueToFormField(formField, formValue) {
1060
+ var _a;
1060
1061
  let validators = formField.validators ? [dynamicFieldValidator(formField.validators)] : [];
1061
1062
  let control = new UntypedFormControl(null, validators);
1062
1063
  if (formField.fieldType === "input") {
@@ -1079,8 +1080,13 @@ class DynamicFormComponent {
1079
1080
  return index >= 0 ? formField.itemsList[index] : "";
1080
1081
  };
1081
1082
  if (formField.fieldInputType === "dropdown") {
1082
- if (!formValue)
1083
- control.setValue(formField.itemsList[0]);
1083
+ if (!formValue) {
1084
+ if (((_a = formField === null || formField === void 0 ? void 0 : formField.fieldConfig) === null || _a === void 0 ? void 0 : _a.markInitialValueAsSelected) === false) {
1085
+ control.setValue(null);
1086
+ }
1087
+ else
1088
+ control.setValue(formField.itemsList[0]);
1089
+ }
1084
1090
  else
1085
1091
  control.setValue(findSelectedValue());
1086
1092
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-dynamic-form.mjs","sources":["../../../projects/mis-components/dynamic-form/dynamic-form.component.html","../../../projects/mis-components/dynamic-form/dynamic-form.component.ts","../../../projects/mis-components/dynamic-form/dynamic-form.module.ts","../../../projects/mis-components/dynamic-form/mis-crystal-design-system-dynamic-form.ts"],"sourcesContent":["<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" • &nbsp;\" + error.value}}\n </p>\n <div [ngStyle]=\"{ 'flex-basis': '100%', 'height': '0' }\"></div>\n </ng-container>\n </div>\n</ng-template>","import { Component, ContentChild, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, TemplateRef } from \"@angular/core\";\nimport { NsDynamicForm } from \"./dynamic-form.namespace\";\nimport { AbstractControl, UntypedFormArray, UntypedFormControl, UntypedFormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\n\nimport moment from \"moment-timezone\";\nimport \"moment-timezone\";\nimport { Subscription } from \"rxjs\";\n\n@Component({\n selector: \"mis-dynamic-form\",\n templateUrl: \"./dynamic-form.component.html\",\n styleUrls: [\"./dynamic-form.component.scss\"]\n})\nexport class DynamicFormComponent implements OnInit, OnDestroy {\n /**\n * formFields: Dynamic fields recieved from the API metadata to build a dynamic form\n * formValues: Holds the value of the dynamic form with \"key\" being dynamic field \"title\"\n * and value being the user input.\n */\n @Input() formFields: Array<NsDynamicForm.IDynamicField> = [];\n @Input() formValues: { [key: string]: any } = {};\n // Need to deprecate these inputs and use constants.\n @Input() activeBtnIconUrl = \"\";\n @Input() calendarIconUrl = \"\";\n @Input() removeIconUrl = \"\";\n @Input() removeSepratorForSubFields = false;\n /**\n * dynamicForm: Constructed using formFields and formValues(in case of edit)\n */\n dynamicForm: UntypedFormGroup;\n\n /**\n * formUpdated: Emits formValues Object whenever there is a change in the dynamic form.\n */\n @Output() formUpdated = new EventEmitter<{ [key: string]: any }>();\n /**\n * formValid: Emits boolean depending on validity of the form\n */\n @Output() formValid = new EventEmitter<boolean>();\n /**\n * formInitialized: Emits dynamic form API on form initilization\n */\n @Output() formInitialized = new EventEmitter<any>();\n @Output() fieldRemoved = new EventEmitter<NsDynamicForm.IDynamicField>();\n\n @ContentChild(\"customInputTextNumber\", { static: false })\n customInputTextNumber: TemplateRef<Element>;\n \n @ContentChild(\"customInputTextarea\", { static: false })\n customInputTextarea: TemplateRef<Element>;\n\n @ContentChild(\"customInputDate\", { static: false })\n customInputDate: TemplateRef<Element>;\n\n @ContentChild(\"customBooleanToggle\", { static: false })\n customBooleanToggle: TemplateRef<Element>;\n\n @ContentChild(\"customSingleSelectDropdown\", { static: false })\n customSingleSelectDropdown: TemplateRef<Element>;\n\n @ContentChild(\"customSingleSelectRadio\", { static: false })\n customSingleSelectRadio: TemplateRef<Element>;\n\n @ContentChild(\"customMultiSelectCheckbox\", { static: false })\n customMultiSelectCheckbox: TemplateRef<Element>;\n\n @ContentChild(\"customMultiSelectDropdown\", { static: false })\n customMultiSelectDropdown: TemplateRef<Element>;\n\n dynamicFormAPI: NsDynamicForm.IDynamicFormAPI;\n valueChangesSubscription$: Subscription;\n\n constructor() {}\n\n ngOnInit(): void {\n // Building the form\n this.dynamicForm = this.generateDynamicForm(this.formFields, this.formValues);\n\n // Subscribing to form changes and emiting values.\n this.valueChangesSubscription$ = this.dynamicForm.valueChanges.subscribe(formValue => {\n this.onFormValueChanges();\n });\n\n //api to expose functions\n this.dynamicFormAPI = {\n updateSelectedValueForSingleSelect: this.updateSelectedValueForSingleSelect.bind(this),\n defaultFormValues: () => {\n return this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);\n }\n };\n this.formInitialized.emit(this.dynamicFormAPI);\n this.formValid.emit(this.dynamicForm.valid);\n }\n ngOnDestroy(): void {\n this.valueChangesSubscription$?.unsubscribe();\n }\n onFormValueChanges(): void {\n let formValues = this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);\n this.formValid.emit(this.dynamicForm.valid);\n this.formUpdated.emit(formValues);\n console.log(formValues)\n }\n generateDynamicFieldsValueObject(formValues: Array<any>): { [key: string]: any } {\n let dynamicFieldsValue = {};\n formValues.forEach((fieldValue, index) => {\n if(typeof fieldValue?.value === 'string') fieldValue.value = fieldValue?.value?.trim()\n let formattedValue = this.mapFormFieldToFormValue(this.formFields[index], fieldValue.value);\n if (fieldValue.subFields?.length > 0) {\n let formattedSubFieldsValues = {}\n let subField = this.formFields[index].subFields\n if(this.formFields[index].fieldType === 'singleSelect' || this.formFields[index].fieldType === 'multiSelect') {\n subField = subField.filter((subField) => subField.parentConfigValue === fieldValue.value.value);\n }\n fieldValue.subFields.forEach((subFieldValue, subIndex) => {\n let subFormField = subField[subIndex]\n if(typeof subFieldValue?.value === 'string') subFieldValue.value = subFieldValue?.value?.trim()\n formattedSubFieldsValues[subFormField.configName] = this.mapFormFieldToFormValue(subFormField, subFieldValue)\n })\n dynamicFieldsValue[this.formFields[index].configName] = {\n value: formattedValue,\n subFields: formattedSubFieldsValues\n }\n }\n else {\n dynamicFieldsValue[this.formFields[index].configName] = formattedValue;\n }\n });\n return dynamicFieldsValue;\n }\n generateDynamicForm(\n formFields: Array<NsDynamicForm.IDynamicField>,\n formValues: { [key: string]: any }\n ): UntypedFormGroup {\n let formArray = new UntypedFormArray([])\n\n for (let field of formFields) {\n let fieldValue = formValues[field.configName]?.value ? formValues[field.configName].value : formValues[field.configName]\n let fieldControl = this.mapFormValueToFormField(field, fieldValue);\n let subFieldsControls = this.generateSubDynamicFields(formValues, field, fieldControl.value);\n formArray.push(new UntypedFormGroup({\n value: fieldControl,\n subFields: subFieldsControls\n }))\n } \n return new UntypedFormGroup({\n dynamicFields: formArray\n })\n }\n \n getDynamicFieldsControls(): UntypedFormArray {\n return this.dynamicForm.get(\"dynamicFields\") as UntypedFormArray;\n }\n updateSubDynamicFields(\n field: NsDynamicForm.IDynamicField,\n formGroup: UntypedFormGroup,\n value: any\n ): void {\n if (field.subFields?.length > 0) {\n let subFieldsControls = this.generateSubDynamicFields(this.formValues, field, value);\n formGroup.removeControl('subFields')\n formGroup.addControl('subFields', subFieldsControls)\n }\n }\n updateSelectedValueForSingleSelect(\n field: NsDynamicForm.IDynamicField,\n control: UntypedFormControl,\n formGroup: UntypedFormGroup,\n value: any\n ): void {\n if (control.value?.value !== value.value) {\n control.setValue(value);\n }\n else control.setValue('');\n this.updateSubDynamicFields(field, formGroup, value);\n control.markAsTouched();\n }\n updateSelectedValueForMultiSelect(\n field: NsDynamicForm.IDynamicField,\n control: UntypedFormControl,\n formGroup: UntypedFormGroup,\n values: Array<any>\n ): void {\n let selectedValues: Array<{ label: string; value: any }> = control.value;\n for (let value of values) {\n let itemIndex = selectedValues.findIndex(item => item.label === value.label);\n if (itemIndex > -1) {\n selectedValues.splice(itemIndex, 1);\n } else {\n selectedValues.push({ ...value });\n }\n }\n control.setValue(selectedValues);\n this.updateSubDynamicFields(field, formGroup, values);\n control.markAsTouched();\n }\n isCheckBoxSelected(value: string, selectedValues: Array<{ label: string; value: string }>): boolean {\n return selectedValues.findIndex(item => item.label === value) > -1;\n }\n\n findSelectedSubFieldConfig(subfields, value, subFieldIndex) {\n try{\n const selectedSubFieldConfig = subfields.filter(item => item.parentConfigValue === value)[subFieldIndex];\n return selectedSubFieldConfig;\n }\n catch(e){\n throw new Error('Subfield index not found');\n }\n }\n\n matchParentConfig(subfields, value) {\n if (!subfields || subfields.length === 0) {\n return false;\n }\n return subfields.some(item => item.parentConfigValue === value);\n }\n\n generateSubDynamicFields(\n formValues: any,\n parentField: NsDynamicForm.IDynamicField,\n parentValue: Array<{ label: string, value: string | number }> | {label: string, value: string } | string | number | boolean\n ): UntypedFormArray {\n let controls = new UntypedFormArray([])\n let subFields = parentField.subFields\n let subFieldsValues = formValues[parentField.configName]?.subFields ? formValues[parentField.configName].subFields : {}\n if(!subFields) return controls;\n if (parentField.fieldType === 'singleSelect') {\n subFields = subFields.filter((subField) => subField.parentConfigValue === (<{label: string, value: string }>parentValue)?.value);\n }\n else if (parentField.fieldType === 'multiSelect') {\n let parentValues = new Set((<Array<{ label: string, value: string | number }>>parentValue).map((value) => value.value));\n subFields = subFields.filter((subField) => parentValues.has(subField.parentConfigValue));\n }\n\n if (subFields?.length > 0) {\n for (let subField of subFields) {\n controls.push(this.mapFormValueToFormField(subField, subFieldsValues[subField.configName]))\n }\n }\n return controls;\n }\n mapFormValueToFormField(formField: NsDynamicForm.IDynamicField, formValue: any): any {\n let validators = formField.validators ? [dynamicFieldValidator(formField.validators)]: []\n let control = new UntypedFormControl(null, validators);\n\n if (formField.fieldType === \"input\") {\n if (formField.fieldInputType === \"text\" || formField.fieldInputType === \"textarea\") control.setValue(formValue ? formValue : \"\");\n else if (formField.fieldInputType === \"number\") control.setValue(formValue ? formValue : 0);\n else if (formField.fieldInputType === \"date\") {\n if (formValue && typeof formValue === \"number\") {\n control.setValue(moment(formValue).tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));\n } else {\n control.setValue(moment().tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));\n }\n }\n } else if (formField.fieldType === \"singleSelect\") {\n const findSelectedValue = () => {\n let index = formField.itemsList.findIndex(item => item.value === formValue)\n return index >= 0 ? formField.itemsList[index]: \"\";\n }\n if (formField.fieldInputType === \"dropdown\") {\n if (!formValue) control.setValue(formField.itemsList[0]);\n else control.setValue(findSelectedValue())\n }\n else if (formField.fieldInputType === \"radio\") {\n control.setValue(findSelectedValue())\n }\n } else if (formField.fieldType === \"multiSelect\") {\n if (formValue && Array.isArray(formValue)) {\n let selectedValues = [];\n for (let value of formValue) {\n let index = formField.itemsList.findIndex(item => item.value === value);\n if (index > -1) selectedValues.push({ ...formField.itemsList[index] });\n }\n control.setValue(selectedValues);\n } else {\n control.setValue([]);\n }\n } else if (formField.fieldType === \"boolean\") {\n control.setValue(!!formValue);\n } else control.setValue(null);\n return control;\n }\n mapFormFieldToFormValue(formField: NsDynamicForm.IDynamicField, formValue: any): any {\n if (formField.fieldType === \"input\") {\n if (formField.fieldInputType === \"text\" || formField.fieldInputType === \"textarea\") return formValue;\n else if (formField.fieldInputType === \"number\") return +formValue;\n else if (formField.fieldInputType === \"date\") {\n return moment.tz(formValue, formField.fieldConfig.format, formField.fieldConfig.timezone).valueOf();\n }\n } else if (formField.fieldType === \"singleSelect\") {\n return formValue?.value ?? '';\n } else if (formField.fieldType === \"multiSelect\") {\n return formValue?.map(item => item.value);\n } else if (formField.fieldType === \"boolean\") {\n return formValue;\n } else return formValue;\n }\n}\n\nexport const dynamicFieldValidator = (validators: Array<NsDynamicForm.IDynamicFieldValidator>): ValidatorFn => {\n return (control: AbstractControl): ValidationErrors | null => {\n let value = control.value\n if (Array.isArray(value)) {\n return null;\n }\n else if (typeof value === 'object') {\n value = value?.value ? value.value : ''\n }\n let errors = null\n\n validators.forEach((validator) => {\n let error = null\n let message = validator.message\n switch (validator.type) {\n case \"Required\":\n error = Validators.required(control);\n if (!error && typeof value === 'string' && value.trim() === '') {\n error = { Required: message };\n }\n if(error) error = {Required: message}\n break;\n case \"MinLength\":\n error = Validators.minLength(+validator.value)(control)\n message = message.replace('${0}', error?.minlength.requiredLength)\n if(error) error = { MinLength: message }\n break;\n case \"MaxLength\":\n error = Validators.maxLength(+validator.value)(control)\n message = message.replace('${0}', error?.actualLength)\n if(error) error = { MaxLength: message }\n break;\n case \"Email\":\n error = Validators.email(control)\n if(error) error = {Email: message}\n break;\n case \"Custom\":\n error = Validators.pattern(`${validator.value}`)(control)\n if(error) error = {Custom: message}\n break;\n default:\n break;\n }\n if (error) errors = { ...errors, ...error }\n })\n return errors\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ScrollingModule } from \"@angular/cdk-experimental/scrolling\";\nimport { DropdownModule } from \"mis-crystal-design-system/dropdown\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { DynamicFormComponent } from \"./dynamic-form.component\";\nimport { SwitchModule } from \"mis-crystal-design-system/switch\";\nimport { MultiSelectDropdownModule } from \"mis-crystal-design-system/multi-select-dropdown\";\nimport { DatepickerModuleV2 } from \"mis-crystal-design-system/datepicker_v2\";\n\n@NgModule({\n declarations: [DynamicFormComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n OverlayModule,\n ScrollingModule,\n DropdownModule,\n SwitchModule,\n MultiSelectDropdownModule,\n DatepickerModuleV2\n ],\n exports: [DynamicFormComponent]\n})\nexport class DynamicFormModule {\n static forRoot(): ModuleWithProviders<DynamicFormModule> {\n return { ngModule: DynamicFormModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-dynamic-form.mjs","sources":["../../../projects/mis-components/dynamic-form/dynamic-form.component.html","../../../projects/mis-components/dynamic-form/dynamic-form.component.ts","../../../projects/mis-components/dynamic-form/dynamic-form.module.ts","../../../projects/mis-components/dynamic-form/mis-crystal-design-system-dynamic-form.ts"],"sourcesContent":["<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" • &nbsp;\" + error.value}}\n </p>\n <div [ngStyle]=\"{ 'flex-basis': '100%', 'height': '0' }\"></div>\n </ng-container>\n </div>\n</ng-template>","import { Component, ContentChild, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, TemplateRef } from \"@angular/core\";\nimport { NsDynamicForm } from \"./dynamic-form.namespace\";\nimport { AbstractControl, UntypedFormArray, UntypedFormControl, UntypedFormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\n\nimport moment from \"moment-timezone\";\nimport \"moment-timezone\";\nimport { Subscription } from \"rxjs\";\n\n@Component({\n selector: \"mis-dynamic-form\",\n templateUrl: \"./dynamic-form.component.html\",\n styleUrls: [\"./dynamic-form.component.scss\"]\n})\nexport class DynamicFormComponent implements OnInit, OnDestroy {\n /**\n * formFields: Dynamic fields recieved from the API metadata to build a dynamic form\n * formValues: Holds the value of the dynamic form with \"key\" being dynamic field \"title\"\n * and value being the user input.\n */\n @Input() formFields: Array<NsDynamicForm.IDynamicField> = [];\n @Input() formValues: { [key: string]: any } = {};\n // Need to deprecate these inputs and use constants.\n @Input() activeBtnIconUrl = \"\";\n @Input() calendarIconUrl = \"\";\n @Input() removeIconUrl = \"\";\n @Input() removeSepratorForSubFields = false;\n /**\n * dynamicForm: Constructed using formFields and formValues(in case of edit)\n */\n dynamicForm: UntypedFormGroup;\n\n /**\n * formUpdated: Emits formValues Object whenever there is a change in the dynamic form.\n */\n @Output() formUpdated = new EventEmitter<{ [key: string]: any }>();\n /**\n * formValid: Emits boolean depending on validity of the form\n */\n @Output() formValid = new EventEmitter<boolean>();\n /**\n * formInitialized: Emits dynamic form API on form initilization\n */\n @Output() formInitialized = new EventEmitter<any>();\n @Output() fieldRemoved = new EventEmitter<NsDynamicForm.IDynamicField>();\n\n @ContentChild(\"customInputTextNumber\", { static: false })\n customInputTextNumber: TemplateRef<Element>;\n \n @ContentChild(\"customInputTextarea\", { static: false })\n customInputTextarea: TemplateRef<Element>;\n\n @ContentChild(\"customInputDate\", { static: false })\n customInputDate: TemplateRef<Element>;\n\n @ContentChild(\"customBooleanToggle\", { static: false })\n customBooleanToggle: TemplateRef<Element>;\n\n @ContentChild(\"customSingleSelectDropdown\", { static: false })\n customSingleSelectDropdown: TemplateRef<Element>;\n\n @ContentChild(\"customSingleSelectRadio\", { static: false })\n customSingleSelectRadio: TemplateRef<Element>;\n\n @ContentChild(\"customMultiSelectCheckbox\", { static: false })\n customMultiSelectCheckbox: TemplateRef<Element>;\n\n @ContentChild(\"customMultiSelectDropdown\", { static: false })\n customMultiSelectDropdown: TemplateRef<Element>;\n\n dynamicFormAPI: NsDynamicForm.IDynamicFormAPI;\n valueChangesSubscription$: Subscription;\n\n constructor() {}\n\n ngOnInit(): void {\n // Building the form\n this.dynamicForm = this.generateDynamicForm(this.formFields, this.formValues);\n\n // Subscribing to form changes and emiting values.\n this.valueChangesSubscription$ = this.dynamicForm.valueChanges.subscribe(formValue => {\n this.onFormValueChanges();\n });\n\n //api to expose functions\n this.dynamicFormAPI = {\n updateSelectedValueForSingleSelect: this.updateSelectedValueForSingleSelect.bind(this),\n defaultFormValues: () => {\n return this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);\n }\n };\n this.formInitialized.emit(this.dynamicFormAPI);\n this.formValid.emit(this.dynamicForm.valid);\n }\n ngOnDestroy(): void {\n this.valueChangesSubscription$?.unsubscribe();\n }\n onFormValueChanges(): void {\n let formValues = this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);\n this.formValid.emit(this.dynamicForm.valid);\n this.formUpdated.emit(formValues);\n console.log(formValues)\n }\n generateDynamicFieldsValueObject(formValues: Array<any>): { [key: string]: any } {\n let dynamicFieldsValue = {};\n formValues.forEach((fieldValue, index) => {\n if(typeof fieldValue?.value === 'string') fieldValue.value = fieldValue?.value?.trim()\n let formattedValue = this.mapFormFieldToFormValue(this.formFields[index], fieldValue.value);\n if (fieldValue.subFields?.length > 0) {\n let formattedSubFieldsValues = {}\n let subField = this.formFields[index].subFields\n if(this.formFields[index].fieldType === 'singleSelect' || this.formFields[index].fieldType === 'multiSelect') {\n subField = subField.filter((subField) => subField.parentConfigValue === fieldValue.value.value);\n }\n fieldValue.subFields.forEach((subFieldValue, subIndex) => {\n let subFormField = subField[subIndex]\n if(typeof subFieldValue?.value === 'string') subFieldValue.value = subFieldValue?.value?.trim()\n formattedSubFieldsValues[subFormField.configName] = this.mapFormFieldToFormValue(subFormField, subFieldValue)\n })\n dynamicFieldsValue[this.formFields[index].configName] = {\n value: formattedValue,\n subFields: formattedSubFieldsValues\n }\n }\n else {\n dynamicFieldsValue[this.formFields[index].configName] = formattedValue;\n }\n });\n return dynamicFieldsValue;\n }\n generateDynamicForm(\n formFields: Array<NsDynamicForm.IDynamicField>,\n formValues: { [key: string]: any }\n ): UntypedFormGroup {\n let formArray = new UntypedFormArray([])\n\n for (let field of formFields) {\n let fieldValue = formValues[field.configName]?.value ? formValues[field.configName].value : formValues[field.configName]\n let fieldControl = this.mapFormValueToFormField(field, fieldValue);\n let subFieldsControls = this.generateSubDynamicFields(formValues, field, fieldControl.value);\n formArray.push(new UntypedFormGroup({\n value: fieldControl,\n subFields: subFieldsControls\n }))\n } \n return new UntypedFormGroup({\n dynamicFields: formArray\n })\n }\n \n getDynamicFieldsControls(): UntypedFormArray {\n return this.dynamicForm.get(\"dynamicFields\") as UntypedFormArray;\n }\n updateSubDynamicFields(\n field: NsDynamicForm.IDynamicField,\n formGroup: UntypedFormGroup,\n value: any\n ): void {\n if (field.subFields?.length > 0) {\n let subFieldsControls = this.generateSubDynamicFields(this.formValues, field, value);\n formGroup.removeControl('subFields')\n formGroup.addControl('subFields', subFieldsControls)\n }\n }\n updateSelectedValueForSingleSelect(\n field: NsDynamicForm.IDynamicField,\n control: UntypedFormControl,\n formGroup: UntypedFormGroup,\n value: any\n ): void {\n if (control.value?.value !== value.value) {\n control.setValue(value);\n }\n else control.setValue('');\n this.updateSubDynamicFields(field, formGroup, value);\n control.markAsTouched();\n }\n updateSelectedValueForMultiSelect(\n field: NsDynamicForm.IDynamicField,\n control: UntypedFormControl,\n formGroup: UntypedFormGroup,\n values: Array<any>\n ): void {\n let selectedValues: Array<{ label: string; value: any }> = control.value;\n for (let value of values) {\n let itemIndex = selectedValues.findIndex(item => item.label === value.label);\n if (itemIndex > -1) {\n selectedValues.splice(itemIndex, 1);\n } else {\n selectedValues.push({ ...value });\n }\n }\n control.setValue(selectedValues);\n this.updateSubDynamicFields(field, formGroup, values);\n control.markAsTouched();\n }\n isCheckBoxSelected(value: string, selectedValues: Array<{ label: string; value: string }>): boolean {\n return selectedValues.findIndex(item => item.label === value) > -1;\n }\n\n findSelectedSubFieldConfig(subfields, value, subFieldIndex) {\n try{\n const selectedSubFieldConfig = subfields.filter(item => item.parentConfigValue === value)[subFieldIndex];\n return selectedSubFieldConfig;\n }\n catch(e){\n throw new Error('Subfield index not found');\n }\n }\n\n matchParentConfig(subfields, value) {\n if (!subfields || subfields.length === 0) {\n return false;\n }\n return subfields.some(item => item.parentConfigValue === value);\n }\n\n generateSubDynamicFields(\n formValues: any,\n parentField: NsDynamicForm.IDynamicField,\n parentValue: Array<{ label: string, value: string | number }> | {label: string, value: string } | string | number | boolean\n ): UntypedFormArray {\n let controls = new UntypedFormArray([])\n let subFields = parentField.subFields\n let subFieldsValues = formValues[parentField.configName]?.subFields ? formValues[parentField.configName].subFields : {}\n if(!subFields) return controls;\n if (parentField.fieldType === 'singleSelect') {\n subFields = subFields.filter((subField) => subField.parentConfigValue === (<{label: string, value: string }>parentValue)?.value);\n }\n else if (parentField.fieldType === 'multiSelect') {\n let parentValues = new Set((<Array<{ label: string, value: string | number }>>parentValue).map((value) => value.value));\n subFields = subFields.filter((subField) => parentValues.has(subField.parentConfigValue));\n }\n\n if (subFields?.length > 0) {\n for (let subField of subFields) {\n controls.push(this.mapFormValueToFormField(subField, subFieldsValues[subField.configName]))\n }\n }\n return controls;\n }\n mapFormValueToFormField(formField: NsDynamicForm.IDynamicField, formValue: any): any {\n let validators = formField.validators ? [dynamicFieldValidator(formField.validators)]: []\n let control = new UntypedFormControl(null, validators);\n\n if (formField.fieldType === \"input\") {\n if (formField.fieldInputType === \"text\" || formField.fieldInputType === \"textarea\") control.setValue(formValue ? formValue : \"\");\n else if (formField.fieldInputType === \"number\") control.setValue(formValue ? formValue : 0);\n else if (formField.fieldInputType === \"date\") {\n if (formValue && typeof formValue === \"number\") {\n control.setValue(moment(formValue).tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));\n } else {\n control.setValue(moment().tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));\n }\n }\n } else if (formField.fieldType === \"singleSelect\") {\n const findSelectedValue = () => {\n let index = formField.itemsList.findIndex(item => item.value === formValue)\n return index >= 0 ? formField.itemsList[index]: \"\";\n }\n if (formField.fieldInputType === \"dropdown\") {\n if (!formValue) {\n if (formField?.fieldConfig?.markInitialValueAsSelected === false) {\n control.setValue(null);\n }\n else\n control.setValue(formField.itemsList[0]);\n }\n else control.setValue(findSelectedValue())\n }\n else if (formField.fieldInputType === \"radio\") {\n control.setValue(findSelectedValue())\n }\n } else if (formField.fieldType === \"multiSelect\") {\n if (formValue && Array.isArray(formValue)) {\n let selectedValues = [];\n for (let value of formValue) {\n let index = formField.itemsList.findIndex(item => item.value === value);\n if (index > -1) selectedValues.push({ ...formField.itemsList[index] });\n }\n control.setValue(selectedValues);\n } else {\n control.setValue([]);\n }\n } else if (formField.fieldType === \"boolean\") {\n control.setValue(!!formValue);\n } else control.setValue(null);\n return control;\n }\n mapFormFieldToFormValue(formField: NsDynamicForm.IDynamicField, formValue: any): any {\n if (formField.fieldType === \"input\") {\n if (formField.fieldInputType === \"text\" || formField.fieldInputType === \"textarea\") return formValue;\n else if (formField.fieldInputType === \"number\") return +formValue;\n else if (formField.fieldInputType === \"date\") {\n return moment.tz(formValue, formField.fieldConfig.format, formField.fieldConfig.timezone).valueOf();\n }\n } else if (formField.fieldType === \"singleSelect\") {\n return formValue?.value ?? '';\n } else if (formField.fieldType === \"multiSelect\") {\n return formValue?.map(item => item.value);\n } else if (formField.fieldType === \"boolean\") {\n return formValue;\n } else return formValue;\n }\n}\n\nexport const dynamicFieldValidator = (validators: Array<NsDynamicForm.IDynamicFieldValidator>): ValidatorFn => {\n return (control: AbstractControl): ValidationErrors | null => {\n let value = control.value\n if (Array.isArray(value)) {\n return null;\n }\n else if (typeof value === 'object') {\n value = value?.value ? value.value : ''\n }\n let errors = null\n\n validators.forEach((validator) => {\n let error = null\n let message = validator.message\n switch (validator.type) {\n case \"Required\":\n error = Validators.required(control);\n if (!error && typeof value === 'string' && value.trim() === '') {\n error = { Required: message };\n }\n if(error) error = {Required: message}\n break;\n case \"MinLength\":\n error = Validators.minLength(+validator.value)(control)\n message = message.replace('${0}', error?.minlength.requiredLength)\n if(error) error = { MinLength: message }\n break;\n case \"MaxLength\":\n error = Validators.maxLength(+validator.value)(control)\n message = message.replace('${0}', error?.actualLength)\n if(error) error = { MaxLength: message }\n break;\n case \"Email\":\n error = Validators.email(control)\n if(error) error = {Email: message}\n break;\n case \"Custom\":\n error = Validators.pattern(`${validator.value}`)(control)\n if(error) error = {Custom: message}\n break;\n default:\n break;\n }\n if (error) errors = { ...errors, ...error }\n })\n return errors\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ScrollingModule } from \"@angular/cdk-experimental/scrolling\";\nimport { DropdownModule } from \"mis-crystal-design-system/dropdown\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { DynamicFormComponent } from \"./dynamic-form.component\";\nimport { SwitchModule } from \"mis-crystal-design-system/switch\";\nimport { MultiSelectDropdownModule } from \"mis-crystal-design-system/multi-select-dropdown\";\nimport { DatepickerModuleV2 } from \"mis-crystal-design-system/datepicker_v2\";\n\n@NgModule({\n declarations: [DynamicFormComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n OverlayModule,\n ScrollingModule,\n DropdownModule,\n SwitchModule,\n MultiSelectDropdownModule,\n DatepickerModuleV2\n ],\n exports: [DynamicFormComponent]\n})\nexport class DynamicFormModule {\n static forRoot(): ModuleWithProviders<DynamicFormModule> {\n return { ngModule: DynamicFormModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -921,8 +921,13 @@ class DynamicFormComponent {
921
921
  return index >= 0 ? formField.itemsList[index] : "";
922
922
  };
923
923
  if (formField.fieldInputType === "dropdown") {
924
- if (!formValue)
925
- control.setValue(formField.itemsList[0]);
924
+ if (!formValue) {
925
+ if (formField?.fieldConfig?.markInitialValueAsSelected === false) {
926
+ control.setValue(null);
927
+ }
928
+ else
929
+ control.setValue(formField.itemsList[0]);
930
+ }
926
931
  else
927
932
  control.setValue(findSelectedValue());
928
933
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-dynamic-form.mjs","sources":["../../../projects/mis-components/dynamic-form/dynamic-form.component.html","../../../projects/mis-components/dynamic-form/dynamic-form.component.ts","../../../projects/mis-components/dynamic-form/dynamic-form.module.ts","../../../projects/mis-components/dynamic-form/mis-crystal-design-system-dynamic-form.ts"],"sourcesContent":["<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" • &nbsp;\" + error.value}}\n </p>\n <div [ngStyle]=\"{ 'flex-basis': '100%', 'height': '0' }\"></div>\n </ng-container>\n </div>\n</ng-template>","import { Component, ContentChild, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, TemplateRef } from \"@angular/core\";\nimport { NsDynamicForm } from \"./dynamic-form.namespace\";\nimport { AbstractControl, UntypedFormArray, UntypedFormControl, UntypedFormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\n\nimport moment from \"moment-timezone\";\nimport \"moment-timezone\";\nimport { Subscription } from \"rxjs\";\n\n@Component({\n selector: \"mis-dynamic-form\",\n templateUrl: \"./dynamic-form.component.html\",\n styleUrls: [\"./dynamic-form.component.scss\"]\n})\nexport class DynamicFormComponent implements OnInit, OnDestroy {\n /**\n * formFields: Dynamic fields recieved from the API metadata to build a dynamic form\n * formValues: Holds the value of the dynamic form with \"key\" being dynamic field \"title\"\n * and value being the user input.\n */\n @Input() formFields: Array<NsDynamicForm.IDynamicField> = [];\n @Input() formValues: { [key: string]: any } = {};\n // Need to deprecate these inputs and use constants.\n @Input() activeBtnIconUrl = \"\";\n @Input() calendarIconUrl = \"\";\n @Input() removeIconUrl = \"\";\n @Input() removeSepratorForSubFields = false;\n /**\n * dynamicForm: Constructed using formFields and formValues(in case of edit)\n */\n dynamicForm: UntypedFormGroup;\n\n /**\n * formUpdated: Emits formValues Object whenever there is a change in the dynamic form.\n */\n @Output() formUpdated = new EventEmitter<{ [key: string]: any }>();\n /**\n * formValid: Emits boolean depending on validity of the form\n */\n @Output() formValid = new EventEmitter<boolean>();\n /**\n * formInitialized: Emits dynamic form API on form initilization\n */\n @Output() formInitialized = new EventEmitter<any>();\n @Output() fieldRemoved = new EventEmitter<NsDynamicForm.IDynamicField>();\n\n @ContentChild(\"customInputTextNumber\", { static: false })\n customInputTextNumber: TemplateRef<Element>;\n \n @ContentChild(\"customInputTextarea\", { static: false })\n customInputTextarea: TemplateRef<Element>;\n\n @ContentChild(\"customInputDate\", { static: false })\n customInputDate: TemplateRef<Element>;\n\n @ContentChild(\"customBooleanToggle\", { static: false })\n customBooleanToggle: TemplateRef<Element>;\n\n @ContentChild(\"customSingleSelectDropdown\", { static: false })\n customSingleSelectDropdown: TemplateRef<Element>;\n\n @ContentChild(\"customSingleSelectRadio\", { static: false })\n customSingleSelectRadio: TemplateRef<Element>;\n\n @ContentChild(\"customMultiSelectCheckbox\", { static: false })\n customMultiSelectCheckbox: TemplateRef<Element>;\n\n @ContentChild(\"customMultiSelectDropdown\", { static: false })\n customMultiSelectDropdown: TemplateRef<Element>;\n\n dynamicFormAPI: NsDynamicForm.IDynamicFormAPI;\n valueChangesSubscription$: Subscription;\n\n constructor() {}\n\n ngOnInit(): void {\n // Building the form\n this.dynamicForm = this.generateDynamicForm(this.formFields, this.formValues);\n\n // Subscribing to form changes and emiting values.\n this.valueChangesSubscription$ = this.dynamicForm.valueChanges.subscribe(formValue => {\n this.onFormValueChanges();\n });\n\n //api to expose functions\n this.dynamicFormAPI = {\n updateSelectedValueForSingleSelect: this.updateSelectedValueForSingleSelect.bind(this),\n defaultFormValues: () => {\n return this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);\n }\n };\n this.formInitialized.emit(this.dynamicFormAPI);\n this.formValid.emit(this.dynamicForm.valid);\n }\n ngOnDestroy(): void {\n this.valueChangesSubscription$?.unsubscribe();\n }\n onFormValueChanges(): void {\n let formValues = this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);\n this.formValid.emit(this.dynamicForm.valid);\n this.formUpdated.emit(formValues);\n console.log(formValues)\n }\n generateDynamicFieldsValueObject(formValues: Array<any>): { [key: string]: any } {\n let dynamicFieldsValue = {};\n formValues.forEach((fieldValue, index) => {\n if(typeof fieldValue?.value === 'string') fieldValue.value = fieldValue?.value?.trim()\n let formattedValue = this.mapFormFieldToFormValue(this.formFields[index], fieldValue.value);\n if (fieldValue.subFields?.length > 0) {\n let formattedSubFieldsValues = {}\n let subField = this.formFields[index].subFields\n if(this.formFields[index].fieldType === 'singleSelect' || this.formFields[index].fieldType === 'multiSelect') {\n subField = subField.filter((subField) => subField.parentConfigValue === fieldValue.value.value);\n }\n fieldValue.subFields.forEach((subFieldValue, subIndex) => {\n let subFormField = subField[subIndex]\n if(typeof subFieldValue?.value === 'string') subFieldValue.value = subFieldValue?.value?.trim()\n formattedSubFieldsValues[subFormField.configName] = this.mapFormFieldToFormValue(subFormField, subFieldValue)\n })\n dynamicFieldsValue[this.formFields[index].configName] = {\n value: formattedValue,\n subFields: formattedSubFieldsValues\n }\n }\n else {\n dynamicFieldsValue[this.formFields[index].configName] = formattedValue;\n }\n });\n return dynamicFieldsValue;\n }\n generateDynamicForm(\n formFields: Array<NsDynamicForm.IDynamicField>,\n formValues: { [key: string]: any }\n ): UntypedFormGroup {\n let formArray = new UntypedFormArray([])\n\n for (let field of formFields) {\n let fieldValue = formValues[field.configName]?.value ? formValues[field.configName].value : formValues[field.configName]\n let fieldControl = this.mapFormValueToFormField(field, fieldValue);\n let subFieldsControls = this.generateSubDynamicFields(formValues, field, fieldControl.value);\n formArray.push(new UntypedFormGroup({\n value: fieldControl,\n subFields: subFieldsControls\n }))\n } \n return new UntypedFormGroup({\n dynamicFields: formArray\n })\n }\n \n getDynamicFieldsControls(): UntypedFormArray {\n return this.dynamicForm.get(\"dynamicFields\") as UntypedFormArray;\n }\n updateSubDynamicFields(\n field: NsDynamicForm.IDynamicField,\n formGroup: UntypedFormGroup,\n value: any\n ): void {\n if (field.subFields?.length > 0) {\n let subFieldsControls = this.generateSubDynamicFields(this.formValues, field, value);\n formGroup.removeControl('subFields')\n formGroup.addControl('subFields', subFieldsControls)\n }\n }\n updateSelectedValueForSingleSelect(\n field: NsDynamicForm.IDynamicField,\n control: UntypedFormControl,\n formGroup: UntypedFormGroup,\n value: any\n ): void {\n if (control.value?.value !== value.value) {\n control.setValue(value);\n }\n else control.setValue('');\n this.updateSubDynamicFields(field, formGroup, value);\n control.markAsTouched();\n }\n updateSelectedValueForMultiSelect(\n field: NsDynamicForm.IDynamicField,\n control: UntypedFormControl,\n formGroup: UntypedFormGroup,\n values: Array<any>\n ): void {\n let selectedValues: Array<{ label: string; value: any }> = control.value;\n for (let value of values) {\n let itemIndex = selectedValues.findIndex(item => item.label === value.label);\n if (itemIndex > -1) {\n selectedValues.splice(itemIndex, 1);\n } else {\n selectedValues.push({ ...value });\n }\n }\n control.setValue(selectedValues);\n this.updateSubDynamicFields(field, formGroup, values);\n control.markAsTouched();\n }\n isCheckBoxSelected(value: string, selectedValues: Array<{ label: string; value: string }>): boolean {\n return selectedValues.findIndex(item => item.label === value) > -1;\n }\n\n findSelectedSubFieldConfig(subfields, value, subFieldIndex) {\n try{\n const selectedSubFieldConfig = subfields.filter(item => item.parentConfigValue === value)[subFieldIndex];\n return selectedSubFieldConfig;\n }\n catch(e){\n throw new Error('Subfield index not found');\n }\n }\n\n matchParentConfig(subfields, value) {\n if (!subfields || subfields.length === 0) {\n return false;\n }\n return subfields.some(item => item.parentConfigValue === value);\n }\n\n generateSubDynamicFields(\n formValues: any,\n parentField: NsDynamicForm.IDynamicField,\n parentValue: Array<{ label: string, value: string | number }> | {label: string, value: string } | string | number | boolean\n ): UntypedFormArray {\n let controls = new UntypedFormArray([])\n let subFields = parentField.subFields\n let subFieldsValues = formValues[parentField.configName]?.subFields ? formValues[parentField.configName].subFields : {}\n if(!subFields) return controls;\n if (parentField.fieldType === 'singleSelect') {\n subFields = subFields.filter((subField) => subField.parentConfigValue === (<{label: string, value: string }>parentValue)?.value);\n }\n else if (parentField.fieldType === 'multiSelect') {\n let parentValues = new Set((<Array<{ label: string, value: string | number }>>parentValue).map((value) => value.value));\n subFields = subFields.filter((subField) => parentValues.has(subField.parentConfigValue));\n }\n\n if (subFields?.length > 0) {\n for (let subField of subFields) {\n controls.push(this.mapFormValueToFormField(subField, subFieldsValues[subField.configName]))\n }\n }\n return controls;\n }\n mapFormValueToFormField(formField: NsDynamicForm.IDynamicField, formValue: any): any {\n let validators = formField.validators ? [dynamicFieldValidator(formField.validators)]: []\n let control = new UntypedFormControl(null, validators);\n\n if (formField.fieldType === \"input\") {\n if (formField.fieldInputType === \"text\" || formField.fieldInputType === \"textarea\") control.setValue(formValue ? formValue : \"\");\n else if (formField.fieldInputType === \"number\") control.setValue(formValue ? formValue : 0);\n else if (formField.fieldInputType === \"date\") {\n if (formValue && typeof formValue === \"number\") {\n control.setValue(moment(formValue).tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));\n } else {\n control.setValue(moment().tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));\n }\n }\n } else if (formField.fieldType === \"singleSelect\") {\n const findSelectedValue = () => {\n let index = formField.itemsList.findIndex(item => item.value === formValue)\n return index >= 0 ? formField.itemsList[index]: \"\";\n }\n if (formField.fieldInputType === \"dropdown\") {\n if (!formValue) control.setValue(formField.itemsList[0]);\n else control.setValue(findSelectedValue())\n }\n else if (formField.fieldInputType === \"radio\") {\n control.setValue(findSelectedValue())\n }\n } else if (formField.fieldType === \"multiSelect\") {\n if (formValue && Array.isArray(formValue)) {\n let selectedValues = [];\n for (let value of formValue) {\n let index = formField.itemsList.findIndex(item => item.value === value);\n if (index > -1) selectedValues.push({ ...formField.itemsList[index] });\n }\n control.setValue(selectedValues);\n } else {\n control.setValue([]);\n }\n } else if (formField.fieldType === \"boolean\") {\n control.setValue(!!formValue);\n } else control.setValue(null);\n return control;\n }\n mapFormFieldToFormValue(formField: NsDynamicForm.IDynamicField, formValue: any): any {\n if (formField.fieldType === \"input\") {\n if (formField.fieldInputType === \"text\" || formField.fieldInputType === \"textarea\") return formValue;\n else if (formField.fieldInputType === \"number\") return +formValue;\n else if (formField.fieldInputType === \"date\") {\n return moment.tz(formValue, formField.fieldConfig.format, formField.fieldConfig.timezone).valueOf();\n }\n } else if (formField.fieldType === \"singleSelect\") {\n return formValue?.value ?? '';\n } else if (formField.fieldType === \"multiSelect\") {\n return formValue?.map(item => item.value);\n } else if (formField.fieldType === \"boolean\") {\n return formValue;\n } else return formValue;\n }\n}\n\nexport const dynamicFieldValidator = (validators: Array<NsDynamicForm.IDynamicFieldValidator>): ValidatorFn => {\n return (control: AbstractControl): ValidationErrors | null => {\n let value = control.value\n if (Array.isArray(value)) {\n return null;\n }\n else if (typeof value === 'object') {\n value = value?.value ? value.value : ''\n }\n let errors = null\n\n validators.forEach((validator) => {\n let error = null\n let message = validator.message\n switch (validator.type) {\n case \"Required\":\n error = Validators.required(control);\n if (!error && typeof value === 'string' && value.trim() === '') {\n error = { Required: message };\n }\n if(error) error = {Required: message}\n break;\n case \"MinLength\":\n error = Validators.minLength(+validator.value)(control)\n message = message.replace('${0}', error?.minlength.requiredLength)\n if(error) error = { MinLength: message }\n break;\n case \"MaxLength\":\n error = Validators.maxLength(+validator.value)(control)\n message = message.replace('${0}', error?.actualLength)\n if(error) error = { MaxLength: message }\n break;\n case \"Email\":\n error = Validators.email(control)\n if(error) error = {Email: message}\n break;\n case \"Custom\":\n error = Validators.pattern(`${validator.value}`)(control)\n if(error) error = {Custom: message}\n break;\n default:\n break;\n }\n if (error) errors = { ...errors, ...error }\n })\n return errors\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ScrollingModule } from \"@angular/cdk-experimental/scrolling\";\nimport { DropdownModule } from \"mis-crystal-design-system/dropdown\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { DynamicFormComponent } from \"./dynamic-form.component\";\nimport { SwitchModule } from \"mis-crystal-design-system/switch\";\nimport { MultiSelectDropdownModule } from \"mis-crystal-design-system/multi-select-dropdown\";\nimport { DatepickerModuleV2 } from \"mis-crystal-design-system/datepicker_v2\";\n\n@NgModule({\n declarations: [DynamicFormComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n OverlayModule,\n ScrollingModule,\n DropdownModule,\n SwitchModule,\n MultiSelectDropdownModule,\n DatepickerModuleV2\n ],\n exports: [DynamicFormComponent]\n})\nexport class DynamicFormModule {\n static forRoot(): ModuleWithProviders<DynamicFormModule> {\n return { ngModule: DynamicFormModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-dynamic-form.mjs","sources":["../../../projects/mis-components/dynamic-form/dynamic-form.component.html","../../../projects/mis-components/dynamic-form/dynamic-form.component.ts","../../../projects/mis-components/dynamic-form/dynamic-form.module.ts","../../../projects/mis-components/dynamic-form/mis-crystal-design-system-dynamic-form.ts"],"sourcesContent":["<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" • &nbsp;\" + error.value}}\n </p>\n <div [ngStyle]=\"{ 'flex-basis': '100%', 'height': '0' }\"></div>\n </ng-container>\n </div>\n</ng-template>","import { Component, ContentChild, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, TemplateRef } from \"@angular/core\";\nimport { NsDynamicForm } from \"./dynamic-form.namespace\";\nimport { AbstractControl, UntypedFormArray, UntypedFormControl, UntypedFormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\n\nimport moment from \"moment-timezone\";\nimport \"moment-timezone\";\nimport { Subscription } from \"rxjs\";\n\n@Component({\n selector: \"mis-dynamic-form\",\n templateUrl: \"./dynamic-form.component.html\",\n styleUrls: [\"./dynamic-form.component.scss\"]\n})\nexport class DynamicFormComponent implements OnInit, OnDestroy {\n /**\n * formFields: Dynamic fields recieved from the API metadata to build a dynamic form\n * formValues: Holds the value of the dynamic form with \"key\" being dynamic field \"title\"\n * and value being the user input.\n */\n @Input() formFields: Array<NsDynamicForm.IDynamicField> = [];\n @Input() formValues: { [key: string]: any } = {};\n // Need to deprecate these inputs and use constants.\n @Input() activeBtnIconUrl = \"\";\n @Input() calendarIconUrl = \"\";\n @Input() removeIconUrl = \"\";\n @Input() removeSepratorForSubFields = false;\n /**\n * dynamicForm: Constructed using formFields and formValues(in case of edit)\n */\n dynamicForm: UntypedFormGroup;\n\n /**\n * formUpdated: Emits formValues Object whenever there is a change in the dynamic form.\n */\n @Output() formUpdated = new EventEmitter<{ [key: string]: any }>();\n /**\n * formValid: Emits boolean depending on validity of the form\n */\n @Output() formValid = new EventEmitter<boolean>();\n /**\n * formInitialized: Emits dynamic form API on form initilization\n */\n @Output() formInitialized = new EventEmitter<any>();\n @Output() fieldRemoved = new EventEmitter<NsDynamicForm.IDynamicField>();\n\n @ContentChild(\"customInputTextNumber\", { static: false })\n customInputTextNumber: TemplateRef<Element>;\n \n @ContentChild(\"customInputTextarea\", { static: false })\n customInputTextarea: TemplateRef<Element>;\n\n @ContentChild(\"customInputDate\", { static: false })\n customInputDate: TemplateRef<Element>;\n\n @ContentChild(\"customBooleanToggle\", { static: false })\n customBooleanToggle: TemplateRef<Element>;\n\n @ContentChild(\"customSingleSelectDropdown\", { static: false })\n customSingleSelectDropdown: TemplateRef<Element>;\n\n @ContentChild(\"customSingleSelectRadio\", { static: false })\n customSingleSelectRadio: TemplateRef<Element>;\n\n @ContentChild(\"customMultiSelectCheckbox\", { static: false })\n customMultiSelectCheckbox: TemplateRef<Element>;\n\n @ContentChild(\"customMultiSelectDropdown\", { static: false })\n customMultiSelectDropdown: TemplateRef<Element>;\n\n dynamicFormAPI: NsDynamicForm.IDynamicFormAPI;\n valueChangesSubscription$: Subscription;\n\n constructor() {}\n\n ngOnInit(): void {\n // Building the form\n this.dynamicForm = this.generateDynamicForm(this.formFields, this.formValues);\n\n // Subscribing to form changes and emiting values.\n this.valueChangesSubscription$ = this.dynamicForm.valueChanges.subscribe(formValue => {\n this.onFormValueChanges();\n });\n\n //api to expose functions\n this.dynamicFormAPI = {\n updateSelectedValueForSingleSelect: this.updateSelectedValueForSingleSelect.bind(this),\n defaultFormValues: () => {\n return this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);\n }\n };\n this.formInitialized.emit(this.dynamicFormAPI);\n this.formValid.emit(this.dynamicForm.valid);\n }\n ngOnDestroy(): void {\n this.valueChangesSubscription$?.unsubscribe();\n }\n onFormValueChanges(): void {\n let formValues = this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);\n this.formValid.emit(this.dynamicForm.valid);\n this.formUpdated.emit(formValues);\n console.log(formValues)\n }\n generateDynamicFieldsValueObject(formValues: Array<any>): { [key: string]: any } {\n let dynamicFieldsValue = {};\n formValues.forEach((fieldValue, index) => {\n if(typeof fieldValue?.value === 'string') fieldValue.value = fieldValue?.value?.trim()\n let formattedValue = this.mapFormFieldToFormValue(this.formFields[index], fieldValue.value);\n if (fieldValue.subFields?.length > 0) {\n let formattedSubFieldsValues = {}\n let subField = this.formFields[index].subFields\n if(this.formFields[index].fieldType === 'singleSelect' || this.formFields[index].fieldType === 'multiSelect') {\n subField = subField.filter((subField) => subField.parentConfigValue === fieldValue.value.value);\n }\n fieldValue.subFields.forEach((subFieldValue, subIndex) => {\n let subFormField = subField[subIndex]\n if(typeof subFieldValue?.value === 'string') subFieldValue.value = subFieldValue?.value?.trim()\n formattedSubFieldsValues[subFormField.configName] = this.mapFormFieldToFormValue(subFormField, subFieldValue)\n })\n dynamicFieldsValue[this.formFields[index].configName] = {\n value: formattedValue,\n subFields: formattedSubFieldsValues\n }\n }\n else {\n dynamicFieldsValue[this.formFields[index].configName] = formattedValue;\n }\n });\n return dynamicFieldsValue;\n }\n generateDynamicForm(\n formFields: Array<NsDynamicForm.IDynamicField>,\n formValues: { [key: string]: any }\n ): UntypedFormGroup {\n let formArray = new UntypedFormArray([])\n\n for (let field of formFields) {\n let fieldValue = formValues[field.configName]?.value ? formValues[field.configName].value : formValues[field.configName]\n let fieldControl = this.mapFormValueToFormField(field, fieldValue);\n let subFieldsControls = this.generateSubDynamicFields(formValues, field, fieldControl.value);\n formArray.push(new UntypedFormGroup({\n value: fieldControl,\n subFields: subFieldsControls\n }))\n } \n return new UntypedFormGroup({\n dynamicFields: formArray\n })\n }\n \n getDynamicFieldsControls(): UntypedFormArray {\n return this.dynamicForm.get(\"dynamicFields\") as UntypedFormArray;\n }\n updateSubDynamicFields(\n field: NsDynamicForm.IDynamicField,\n formGroup: UntypedFormGroup,\n value: any\n ): void {\n if (field.subFields?.length > 0) {\n let subFieldsControls = this.generateSubDynamicFields(this.formValues, field, value);\n formGroup.removeControl('subFields')\n formGroup.addControl('subFields', subFieldsControls)\n }\n }\n updateSelectedValueForSingleSelect(\n field: NsDynamicForm.IDynamicField,\n control: UntypedFormControl,\n formGroup: UntypedFormGroup,\n value: any\n ): void {\n if (control.value?.value !== value.value) {\n control.setValue(value);\n }\n else control.setValue('');\n this.updateSubDynamicFields(field, formGroup, value);\n control.markAsTouched();\n }\n updateSelectedValueForMultiSelect(\n field: NsDynamicForm.IDynamicField,\n control: UntypedFormControl,\n formGroup: UntypedFormGroup,\n values: Array<any>\n ): void {\n let selectedValues: Array<{ label: string; value: any }> = control.value;\n for (let value of values) {\n let itemIndex = selectedValues.findIndex(item => item.label === value.label);\n if (itemIndex > -1) {\n selectedValues.splice(itemIndex, 1);\n } else {\n selectedValues.push({ ...value });\n }\n }\n control.setValue(selectedValues);\n this.updateSubDynamicFields(field, formGroup, values);\n control.markAsTouched();\n }\n isCheckBoxSelected(value: string, selectedValues: Array<{ label: string; value: string }>): boolean {\n return selectedValues.findIndex(item => item.label === value) > -1;\n }\n\n findSelectedSubFieldConfig(subfields, value, subFieldIndex) {\n try{\n const selectedSubFieldConfig = subfields.filter(item => item.parentConfigValue === value)[subFieldIndex];\n return selectedSubFieldConfig;\n }\n catch(e){\n throw new Error('Subfield index not found');\n }\n }\n\n matchParentConfig(subfields, value) {\n if (!subfields || subfields.length === 0) {\n return false;\n }\n return subfields.some(item => item.parentConfigValue === value);\n }\n\n generateSubDynamicFields(\n formValues: any,\n parentField: NsDynamicForm.IDynamicField,\n parentValue: Array<{ label: string, value: string | number }> | {label: string, value: string } | string | number | boolean\n ): UntypedFormArray {\n let controls = new UntypedFormArray([])\n let subFields = parentField.subFields\n let subFieldsValues = formValues[parentField.configName]?.subFields ? formValues[parentField.configName].subFields : {}\n if(!subFields) return controls;\n if (parentField.fieldType === 'singleSelect') {\n subFields = subFields.filter((subField) => subField.parentConfigValue === (<{label: string, value: string }>parentValue)?.value);\n }\n else if (parentField.fieldType === 'multiSelect') {\n let parentValues = new Set((<Array<{ label: string, value: string | number }>>parentValue).map((value) => value.value));\n subFields = subFields.filter((subField) => parentValues.has(subField.parentConfigValue));\n }\n\n if (subFields?.length > 0) {\n for (let subField of subFields) {\n controls.push(this.mapFormValueToFormField(subField, subFieldsValues[subField.configName]))\n }\n }\n return controls;\n }\n mapFormValueToFormField(formField: NsDynamicForm.IDynamicField, formValue: any): any {\n let validators = formField.validators ? [dynamicFieldValidator(formField.validators)]: []\n let control = new UntypedFormControl(null, validators);\n\n if (formField.fieldType === \"input\") {\n if (formField.fieldInputType === \"text\" || formField.fieldInputType === \"textarea\") control.setValue(formValue ? formValue : \"\");\n else if (formField.fieldInputType === \"number\") control.setValue(formValue ? formValue : 0);\n else if (formField.fieldInputType === \"date\") {\n if (formValue && typeof formValue === \"number\") {\n control.setValue(moment(formValue).tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));\n } else {\n control.setValue(moment().tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));\n }\n }\n } else if (formField.fieldType === \"singleSelect\") {\n const findSelectedValue = () => {\n let index = formField.itemsList.findIndex(item => item.value === formValue)\n return index >= 0 ? formField.itemsList[index]: \"\";\n }\n if (formField.fieldInputType === \"dropdown\") {\n if (!formValue) {\n if (formField?.fieldConfig?.markInitialValueAsSelected === false) {\n control.setValue(null);\n }\n else\n control.setValue(formField.itemsList[0]);\n }\n else control.setValue(findSelectedValue())\n }\n else if (formField.fieldInputType === \"radio\") {\n control.setValue(findSelectedValue())\n }\n } else if (formField.fieldType === \"multiSelect\") {\n if (formValue && Array.isArray(formValue)) {\n let selectedValues = [];\n for (let value of formValue) {\n let index = formField.itemsList.findIndex(item => item.value === value);\n if (index > -1) selectedValues.push({ ...formField.itemsList[index] });\n }\n control.setValue(selectedValues);\n } else {\n control.setValue([]);\n }\n } else if (formField.fieldType === \"boolean\") {\n control.setValue(!!formValue);\n } else control.setValue(null);\n return control;\n }\n mapFormFieldToFormValue(formField: NsDynamicForm.IDynamicField, formValue: any): any {\n if (formField.fieldType === \"input\") {\n if (formField.fieldInputType === \"text\" || formField.fieldInputType === \"textarea\") return formValue;\n else if (formField.fieldInputType === \"number\") return +formValue;\n else if (formField.fieldInputType === \"date\") {\n return moment.tz(formValue, formField.fieldConfig.format, formField.fieldConfig.timezone).valueOf();\n }\n } else if (formField.fieldType === \"singleSelect\") {\n return formValue?.value ?? '';\n } else if (formField.fieldType === \"multiSelect\") {\n return formValue?.map(item => item.value);\n } else if (formField.fieldType === \"boolean\") {\n return formValue;\n } else return formValue;\n }\n}\n\nexport const dynamicFieldValidator = (validators: Array<NsDynamicForm.IDynamicFieldValidator>): ValidatorFn => {\n return (control: AbstractControl): ValidationErrors | null => {\n let value = control.value\n if (Array.isArray(value)) {\n return null;\n }\n else if (typeof value === 'object') {\n value = value?.value ? value.value : ''\n }\n let errors = null\n\n validators.forEach((validator) => {\n let error = null\n let message = validator.message\n switch (validator.type) {\n case \"Required\":\n error = Validators.required(control);\n if (!error && typeof value === 'string' && value.trim() === '') {\n error = { Required: message };\n }\n if(error) error = {Required: message}\n break;\n case \"MinLength\":\n error = Validators.minLength(+validator.value)(control)\n message = message.replace('${0}', error?.minlength.requiredLength)\n if(error) error = { MinLength: message }\n break;\n case \"MaxLength\":\n error = Validators.maxLength(+validator.value)(control)\n message = message.replace('${0}', error?.actualLength)\n if(error) error = { MaxLength: message }\n break;\n case \"Email\":\n error = Validators.email(control)\n if(error) error = {Email: message}\n break;\n case \"Custom\":\n error = Validators.pattern(`${validator.value}`)(control)\n if(error) error = {Custom: message}\n break;\n default:\n break;\n }\n if (error) errors = { ...errors, ...error }\n })\n return errors\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { ScrollingModule } from \"@angular/cdk-experimental/scrolling\";\nimport { DropdownModule } from \"mis-crystal-design-system/dropdown\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { DynamicFormComponent } from \"./dynamic-form.component\";\nimport { SwitchModule } from \"mis-crystal-design-system/switch\";\nimport { MultiSelectDropdownModule } from \"mis-crystal-design-system/multi-select-dropdown\";\nimport { DatepickerModuleV2 } from \"mis-crystal-design-system/datepicker_v2\";\n\n@NgModule({\n declarations: [DynamicFormComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n OverlayModule,\n ScrollingModule,\n DropdownModule,\n SwitchModule,\n MultiSelectDropdownModule,\n DatepickerModuleV2\n ],\n exports: [DynamicFormComponent]\n})\nexport class DynamicFormModule {\n static forRoot(): ModuleWithProviders<DynamicFormModule> {\n return { ngModule: DynamicFormModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mis-crystal-design-system",
3
- "version": "14.0.83",
3
+ "version": "14.0.84",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "*",
6
6
  "@angular/core": "*",