@tsi-developpement/tsi-shared-ui 1.10.5 → 1.10.7

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.
@@ -23,6 +23,7 @@ export class PresentationDesignerDirectiveBase {
23
23
  this._workflowConfigurationService = _workflowConfigurationService;
24
24
  this._presentationDesignerBaseService = _presentationDesignerBaseService;
25
25
  this.treated = false;
26
+ this.checkboxesAdded = false;
26
27
  this.tempTemplateRef = el.nativeElement;
27
28
  this.nexSiblingOfElement = this.el.nativeElement?.nextSibling;
28
29
  this.tempTemplateParentNode = this.el.nativeElement?.parentNode;
@@ -135,6 +136,7 @@ export class PresentationDesignerDirectiveBase {
135
136
  }
136
137
  this.renderer.removeClass(this.el.nativeElement, 'config-mode-border');
137
138
  this.viewContainerRef.clear();
139
+ this.checkboxesAdded = false;
138
140
  }
139
141
  removeElement() {
140
142
  if (!this.tempTemplateRef) {
@@ -207,6 +209,10 @@ export class PresentationDesignerDirectiveBase {
207
209
  });
208
210
  }
209
211
  addCheckboxesToInputs(presentationSetting) {
212
+ if (this.checkboxesAdded) {
213
+ return;
214
+ }
215
+ this.checkboxesAdded = true;
210
216
  if (!this._workflowConfigurationService.isDesginModeFromWorkflow) {
211
217
  this.showHideCheckboxComponentRef = this.viewContainerRef.createComponent(TsiCheckboxComponent);
212
218
  this.showHideCheckboxComponentRef.setInput("inputName", this.presentationDesigner);
@@ -239,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
239
245
  }], presentationDesignerBase: [{
240
246
  type: Input
241
247
  }] } });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLWRlc2lnbmVyLWJhc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1kaXJlY3RpdmVzL3ByZXNlbnRhdGlvbi1kZXNpZ25lci1iYXNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQStCLFNBQVMsRUFBYyxLQUFLLEVBQWlELE1BQU0sZUFBZSxDQUFDO0FBRXpJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBSTlHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBTTNDLE1BQU0sT0FBTyxpQ0FBaUM7SUFHNUMsSUFBYSxvQkFBb0IsQ0FBQyxLQUF5QjtRQUV6RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFhLHdCQUF3QixDQUFDLEtBQXlCO1FBRTdELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBRXRCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFVRCxZQUFzQixFQUFjLEVBQ3hCLFFBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxvQkFBeUMsRUFDekMsNkJBQTJELEVBQzNELGdDQUFpRTtRQUx2RCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLGtDQUE2QixHQUE3Qiw2QkFBNkIsQ0FBOEI7UUFDM0QscUNBQWdDLEdBQWhDLGdDQUFnQyxDQUFpQztRQVI3RSxZQUFPLEdBQVksS0FBSyxDQUFBO1FBVXRCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQTtRQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFBO1FBQzdELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUE7SUFDakUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBRTVDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUE7WUFDOUMsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQTtZQUMvRCxDQUFDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFBO1lBQ2pFLENBQUM7WUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBRUQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBd0I7UUFDM0MscUJBQXFCO1FBRXJCLGdEQUFnRDtRQUNoRCw2REFBNkQ7UUFDN0QseURBQXlEO1FBQ3pELEtBQUs7UUFFTCw2QkFBNkI7UUFDN0IsVUFBVTtRQUNWLHNDQUFzQztRQUN0QywrQ0FBK0M7UUFDL0Msd0RBQXdEO1FBQ3hELHNCQUFzQjtRQUN0Qiw4REFBOEQ7UUFFOUQsTUFBTTtRQUNOLElBQUk7SUFDTixDQUFDO0lBRUQsZUFBZTtJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFbEIsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsMEJBQTBCO1lBQ3hGLDRCQUE0QixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQjtZQUNwRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCO1lBQzFGLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxZQUFZO1NBQ3JFLENBQUE7UUFFRCxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFO2dCQUUzQixFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNyQyxFQUFFLEVBQUUsWUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQTtnQkFDaEMsSUFBSSxRQUFRLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDckMsQ0FBQztnQkFDRCx5Q0FBeUM7Z0JBQ3pDLG9GQUFvRjtnQkFDcEYsd0NBQXdDO2dCQUN4Qyx3Q0FBd0M7Z0JBQ3hDLGlEQUFpRDtnQkFDakQsNkNBQTZDO2dCQUM3QyxpQ0FBaUM7Z0JBQ2pDLDZEQUE2RDtnQkFDN0QscUVBQXFFO2dCQUVyRSxrQ0FBa0M7Z0JBQ2xDLGtCQUFrQjtnQkFDbEIscUNBQXFDO2dCQUNyQyxNQUFNO2dCQUNOLElBQUk7Z0JBQ0osU0FBUztnQkFDVCx5REFBeUQ7Z0JBRXpELHdGQUF3RjtnQkFFeEYsOENBQThDO2dCQUU5QyxpREFBaUQ7Z0JBQ2pELHVDQUF1QztnQkFDdkMsNkNBQTZDO2dCQUM3QyxpQ0FBaUM7Z0JBRWpDLGtDQUFrQztnQkFDbEMsa0JBQWtCO2dCQUNsQixxQ0FBcUM7Z0JBQ3JDLE1BQU07Z0JBQ04sSUFBSTtZQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsT0FBMEI7UUFDckQsb0RBQW9EO1FBQ3BELElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDdEMsOEVBQThFO1lBQzlFLEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzNCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDN0QsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFHLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLGtDQUFrQztZQUMvRSxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO1FBQzNDLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQTtRQUM5QyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUE7UUFDL0QsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFBO1FBQ2pFLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsT0FBTyxDQUFDLFNBQWtCLEVBQUUsYUFBdUI7UUFDakQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUMxRyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3RCLENBQUM7UUFDSCxDQUFDO2FBQ0ksQ0FBQztZQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtJQUNyQixDQUFDO0lBR0Qsb0JBQW9CO1FBQ2xCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUYsT0FBTyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsT0FBUSxJQUFJLENBQUMsZ0JBQXdCLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQztJQUM5RSxDQUFDO0lBRU8sNkJBQTZCLENBQUMsZUFBd0IsRUFBRSxjQUF1QjtRQUNyRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUUvRCxNQUFNLGNBQWMsR0FBRyxDQUNyQixNQUVDLEVBQ21DLEVBQUU7WUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBRWpELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNoRixXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWhELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFnQyxDQUFDO1lBQzlELFFBQVEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNwQyxRQUFRLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUE7WUFDekMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7WUFDeEIsUUFBUSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFBO1lBRTlDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXZFLDREQUE0RDtZQUM1RCx1REFBdUQ7WUFDdkQsNERBQTREO1lBQzVELHNEQUFzRDtZQUN0RCxvREFBb0Q7WUFFcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRWpELE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxjQUFjLENBQUM7WUFDakQsU0FBUyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDcEMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQix5QkFBeUI7WUFDOUQsU0FBUyxFQUFFLENBQUMsZUFBZTtZQUMzQixXQUFXLEVBQUUsVUFBVTtTQUN4QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsY0FBYyxDQUFDO1lBQ2pELFNBQVMsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQ3BDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsbUJBQW1CO1lBQ3hELFNBQVMsRUFBRSxDQUFDLGNBQWM7WUFDMUIsV0FBVyxFQUFFLFNBQVM7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELHFCQUFxQixDQUFDLG1CQUF5QztRQUU3RCxJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUVoRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtZQUNsRixJQUFJLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBb0IscUJBQXFCLENBQUMsQ0FBQTtZQUV4RyxJQUFJLGdCQUFnQixHQUFHLG1CQUFtQixFQUFFLDBCQUEwQjtpQkFDbkUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxjQUFjLElBQUksSUFBSSxDQUFDO1lBRS9FLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxRQUFnQyxDQUFDO1lBQ2xGLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztZQUdyQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdHLENBQUM7UUFJRCxJQUFJLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBR2hFLE1BQU0sZUFBZSxHQUFHLG1CQUFtQixFQUFFLDBCQUEwQjtpQkFDcEUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxjQUFjLElBQUksSUFBSSxDQUFDO1lBRWhGLE1BQU0sY0FBYyxHQUFHLG1CQUFtQixFQUFFLDBCQUEwQjtpQkFDbkUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxjQUFjLElBQUksSUFBSSxDQUFDO1lBRWhGLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLENBQUE7UUFDckUsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDdEUsQ0FBQzsrR0F2U1UsaUNBQWlDO21HQUFqQyxpQ0FBaUM7OzRGQUFqQyxpQ0FBaUM7a0JBSDdDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLCtDQUErQztpQkFDMUQ7aVFBSWMsb0JBQW9CO3NCQUFoQyxLQUFLO2dCQUtPLHdCQUF3QjtzQkFBcEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByZXNlbnRhdGlvblNldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBUc2lDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWNoZWNrYm94L3RzaS1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMYXlvdXRIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbGF5b3V0L2xheW91dC1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93b3JrZmxvdy93b3JrZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJlc2VudGF0aW9uLXNldHRpbmcvcHJlc2VudGF0aW9uLWRlc2lnbmVyLWJhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uL2VudW1zJztcclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1twcmVzZW50YXRpb25EZXNpZ25lckJhc2VdOm5vdCh0c2ktdGFiLXBhbmVsKSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFByZXNlbnRhdGlvbkRlc2lnbmVyRGlyZWN0aXZlQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxucHJpdmF0ZSBfcHJlc2VudGF0aW9uRGVzaWduZXIhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBwcmVzZW50YXRpb25EZXNpZ25lcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKVxyXG4gIHtcclxuICAgIHRoaXMuX3ByZXNlbnRhdGlvbkRlc2lnbmVyID0gdmFsdWU7XHJcbiAgfVxyXG4gIFxyXG4gIEBJbnB1dCgpIHNldCBwcmVzZW50YXRpb25EZXNpZ25lckJhc2UodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZClcclxuICB7XHJcbiAgICB0aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lciA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHByZXNlbnRhdGlvbkRlc2lnbmVyKCk6IHN0cmluZyB8IHVuZGVmaW5lZFxyXG4gIHtcclxuICAgIHJldHVybiB0aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lcjtcclxuICB9XHJcblxyXG4gIHNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWY6IGFueVxyXG4gIGRpc2FibGVkQ2hlY2tib3hDb21wb25lbnRSZWY6IGFueVxyXG4gIHRlbXBUZW1wbGF0ZVJlZjogYW55XHJcbiAgdGVtcFRlbXBsYXRlUGFyZW50Tm9kZTogYW55XHJcbiAgbmV4U2libGluZ09mRWxlbWVudDogYW55XHJcbiAgdHJlYXRlZDogYm9vbGVhbiA9IGZhbHNlXHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByb3RlY3RlZCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJvdGVjdGVkIF9sYXlvdXRIZWxwZXJTZXJ2aWNlOiBMYXlvdXRIZWxwZXJTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIF93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIF9wcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlOiBQcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnRlbXBUZW1wbGF0ZVJlZiA9IGVsLm5hdGl2ZUVsZW1lbnRcclxuICAgIHRoaXMubmV4U2libGluZ09mRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudD8ubmV4dFNpYmxpbmdcclxuICAgIHRoaXMudGVtcFRlbXBsYXRlUGFyZW50Tm9kZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudD8ucGFyZW50Tm9kZVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2xheW91dEhlbHBlclNlcnZpY2UuaXNEZXNpZ25Nb2RlKSB7XHJcblxyXG4gICAgICBpZiAoIXRoaXMudGVtcFRlbXBsYXRlUmVmKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wVGVtcGxhdGVSZWYgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLm5leFNpYmxpbmdPZkVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLm5leFNpYmxpbmdPZkVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ/Lm5leHRTaWJsaW5nXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy50ZW1wVGVtcGxhdGVQYXJlbnROb2RlKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wVGVtcGxhdGVQYXJlbnROb2RlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Py5wYXJlbnROb2RlXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZS5yZWdpc3Rlcih0aGlzKVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRW1wdHlBbmNlc3RvcnMobm9kZTogSFRNTEVsZW1lbnQgfCBudWxsKSB7XHJcbiAgICAvLyBpZiAoIW5vZGUpIHJldHVybjtcclxuXHJcbiAgICAvLyAvLyBDaGVjayBpZiB0aGUgbm9kZSBoYXMgYW55IGVsZW1lbnQgY2hpbGRyZW5cclxuICAgIC8vIGNvbnN0IGhhc0VsZW1lbnRDaGlsZHJlbiA9IEFycmF5LmZyb20obm9kZS5jaGlsZHJlbikuc29tZShcclxuICAgIC8vICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERVxyXG4gICAgLy8gKTtcclxuXHJcbiAgICAvLyBpZiAoIWhhc0VsZW1lbnRDaGlsZHJlbikge1xyXG4gICAgLy8gICB0cnkge1xyXG4gICAgLy8gICAgIGNvbnN0IHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTtcclxuICAgIC8vICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHBhcmVudCwgbm9kZSk7XHJcbiAgICAvLyAgICAgdGhpcy5yZW1vdmVFbXB0eUFuY2VzdG9ycyhwYXJlbnQgYXMgSFRNTEVsZW1lbnQpO1xyXG4gICAgLy8gICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8gICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciByZW1vdmluZyBlbXB0eSBhbmNlc3RvcjpcIiwgZXJyb3IpO1xyXG5cclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlLnVucmVnaXN0ZXIodGhpcylcclxuICB9XHJcblxyXG4gIGRpc2FibGVJbnB1dHMoKSB7XHJcbiAgICB0aGlzLmV4ZWN1dGUodHJ1ZSlcclxuXHJcbiAgICBjb25zdCB0c2lDb21wb25lbnRzU2VsZWN0b3JzID0gWydUc2ktVGV4dC1Cb3gnLCAnVHNpLUNoZWNrQm94JywgJ1RzaS1DdXJyZW5jeS1PdGhlci1JbnB1dCcsXHJcbiAgICAgICdUc2ktQ3VycmVuY3ktU29jaWV0ZS1JbnB1dCcsICdUc2ktRGF0ZS1QaWNrZXInLCAnVHNpLURlY2ltYWwtSW5wdXQnLFxyXG4gICAgICAnVHNpLUZpbGUtTWFuYWdlcicsICdUc2ktRm9ybXVsYS1Cb3gnLCAnVHNpLUludGVnZXInLCAnVHNpLVJhZGlvLUJ1dHRvbicsICdUc2ktUmF0ZS1JbnB1dCcsXHJcbiAgICAgICdUc2ktU2VhcmNoLUNvbWJvJywgJ1RzaS1UZXh0LUFyZWEnLCAndHNpLXRpbWUtcGlja2VyJywgJ1RzaS1CdXR0b24nXHJcbiAgICBdXHJcblxyXG4gICAgdHNpQ29tcG9uZW50c1NlbGVjdG9ycy5mb3JFYWNoKHNlbGVjdG9yID0+IHtcclxuICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XHJcbiAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsOiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgZWw/LmNsYXNzTGlzdD8uYWRkKCdkaXNhYmxlZC1pbnB1dCcpO1xyXG4gICAgICAgIGVsPy5zZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiLCBcIlwiKVxyXG4gICAgICAgIGlmIChzZWxlY3RvciA9PSAnVHNpLVNlYXJjaC1Db21ibycpIHtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZWxzZSBpZiAoc2VsZWN0b3IgPT0gJ1RzaS1DaGVja0JveCcpIHtcclxuICAgICAgICAvLyAgIGNvbnN0IGlucHV0RWwgPSBlbC5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICAgIC8vICAgY29uc3QgaXNDaGVja2VkID0gaW5wdXRFbD8uY2hlY2tlZDtcclxuICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCdDaGVja2VkPycsIGlzQ2hlY2tlZCk7XHJcbiAgICAgICAgLy8gICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICAgIC8vICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCd0c2ktcmVhZG9ubHktc3BhbicpO1xyXG4gICAgICAgIC8vICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCd3LWZ1bGwnKVxyXG4gICAgICAgIC8vICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCd0c2ktcmVhZG9ubHktc3BhbicsICd3LWZ1bGwnLCAncGknKTtcclxuICAgICAgICAvLyAgIHNwYW4uY2xhc3NMaXN0LmFkZChpc0NoZWNrZWQgPyAncGktY2hlY2stc3F1YXJlJyA6ICdwaS1zcXVhcmUnKTtcclxuXHJcbiAgICAgICAgLy8gICBjb25zdCBwYXJlbnQgPSBlbC5wYXJlbnROb2RlO1xyXG4gICAgICAgIC8vICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgIC8vICAgICBwYXJlbnQucmVwbGFjZUNoaWxkKHNwYW4sIGVsKTtcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSB7XHJcbiAgICAgICAgLy8gICAvL2NvbnN0IHZhbHVlID0gZWwuZ2V0QXR0cmlidXRlKCduZy1yZWZsZWN0LW1vZGVsJyk7XHJcblxyXG4gICAgICAgIC8vICAgY29uc3QgaW5wdXRWYWx1ZSA9IChlbD8uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVswXSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZVxyXG5cclxuICAgICAgICAvLyAgIGNvbnNvbGUubG9nKFwiaW5wdXRWYWx1ZSA9PiBcIiwgaW5wdXRWYWx1ZSlcclxuXHJcbiAgICAgICAgLy8gICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICAgIC8vICAgc3Bhbi5pbm5lclRleHQgPSBpbnB1dFZhbHVlID8/ICcnO1xyXG4gICAgICAgIC8vICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCd0c2ktcmVhZG9ubHktc3BhbicpO1xyXG4gICAgICAgIC8vICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCd3LWZ1bGwnKVxyXG5cclxuICAgICAgICAvLyAgIGNvbnN0IHBhcmVudCA9IGVsLnBhcmVudE5vZGU7XHJcbiAgICAgICAgLy8gICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgLy8gICAgIHBhcmVudC5yZXBsYWNlQ2hpbGQoc3BhbiwgZWwpO1xyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50SW5zdGFuY2UoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBhbnkpOiBhbnkge1xyXG4gICAgLy8gR2V0IHRoZSBjb21wb25lbnQgaW5zdGFuY2UgZnJvbSBBbmd1bGFyJ3MgY29udGV4dFxyXG4gICAgaWYgKGVsZW1lbnQuX19uZ0NvbnRleHRfXykge1xyXG4gICAgICBjb25zdCBjb250ZXh0ID0gZWxlbWVudC5fX25nQ29udGV4dF9fO1xyXG4gICAgICAvLyBUaGUgY29tcG9uZW50IGluc3RhbmNlIGlzIHVzdWFsbHkgdGhlIGZpcnN0IG5vbi1hcnJheS9ub24tb2JqZWN0IGluIGNvbnRleHRcclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbnRleHQpIHtcclxuICAgICAgICBpZiAoaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBpbnNlcnRFbGVtZW50KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUodGhpcy50ZW1wVGVtcGxhdGVQYXJlbnROb2RlLCB0aGlzLnRlbXBUZW1wbGF0ZVJlZiwgdGhpcy5uZXhTaWJsaW5nT2ZFbGVtZW50KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVTaG93SGlkZUNoZWNrYm94KCkge1xyXG4gICAgaWYgKHRoaXMuc2hvd0hpZGVDaGVja2JveENvbXBvbmVudFJlZikge1xyXG4gICAgICB0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYuZGVzdHJveSgpOyAvLyBkZXN0cm95cyB0aGUgY29tcG9uZW50IGluc3RhbmNlXHJcbiAgICAgIHRoaXMuc2hvd0hpZGVDaGVja2JveENvbXBvbmVudFJlZiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2NvbmZpZy1tb2RlLWJvcmRlcicpO1xyXG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVFbGVtZW50KCkge1xyXG4gICAgaWYgKCF0aGlzLnRlbXBUZW1wbGF0ZVJlZikge1xyXG4gICAgICB0aGlzLnRlbXBUZW1wbGF0ZVJlZiA9IHRoaXMuZWwubmF0aXZlRWxlbWVudFxyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5uZXhTaWJsaW5nT2ZFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMubmV4U2libGluZ09mRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudD8ubmV4dFNpYmxpbmdcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMudGVtcFRlbXBsYXRlUGFyZW50Tm9kZSkge1xyXG4gICAgICB0aGlzLnRlbXBUZW1wbGF0ZVBhcmVudE5vZGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ/LnBhcmVudE5vZGVcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgZXhlY3V0ZShjb25kaXRpb246IGJvb2xlYW4sIGNvbmZpZ3VyYXRpb24gPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoY29uZGl0aW9uKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUodGhpcy50ZW1wVGVtcGxhdGVQYXJlbnROb2RlLCB0aGlzLnRlbXBUZW1wbGF0ZVJlZiwgdGhpcy5uZXhTaWJsaW5nT2ZFbGVtZW50KTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZSwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICAgIHRoaXMudHJlYXRlZCA9IHRydWVcclxuICB9XHJcblxyXG5cclxuICBnZXRDb21wb25lbnRTZWxlY3RvcigpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY29tcG9uZW50SW5zdGFuY2UgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IuZ2V0KHRoaXMuZ2V0Q29tcG9uZW50VHlwZSgpLCBudWxsKTtcclxuICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZT8uY29uc3RydWN0b3I/Lsm1Y21wPy5zZWxlY3RvcnM/LlswXT8uWzBdIHx8IFwiXCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbXBvbmVudFR5cGUoKTogYW55IHtcclxuICAgIHJldHVybiAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSk/Ll9ob3N0TFZpZXc/Lls4XT8uY29uc3RydWN0b3IgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ2hlY2tib3hHcm91cFdpdGhMYWJlbHMoaXNCbG9ja0Rpc2FibGVkOiBib29sZWFuLCBpc0Jsb2NrVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgY29udGFpbmVyRGl2ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoY29udGFpbmVyRGl2LCAnY2hlY2tib3gtY29udGFpbmVyJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgY29udGFpbmVyRGl2KTtcclxuXHJcbiAgICBjb25zdCBjcmVhdGVDaGVja2JveCA9IChcclxuICAgICAgY29uZmlnOiB7IGlucHV0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBpbnB1dElkOiBzdHJpbmcsIGlzQ2hlY2tlZDogYm9vbGVhbiwgXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6IHN0cmluZ1xyXG4gICAgICB9XHJcbiAgICApOiBDb21wb25lbnRSZWY8VHNpQ2hlY2tib3hDb21wb25lbnQ+ID0+IHtcclxuICAgICAgY29uc3QgaXRlbURpdiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoaXRlbURpdiwgJ2NoZWNrYm94LWl0ZW0nKTtcclxuXHJcbiAgICAgIGNvbnN0IGNoZWNrYm94UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChUc2lDaGVja2JveENvbXBvbmVudCk7XHJcbiAgICAgIGNoZWNrYm94UmVmLnNldElucHV0KFwiaW5wdXROYW1lXCIsIGNvbmZpZy5pbnB1dE5hbWUpO1xyXG4gICAgICBjaGVja2JveFJlZi5zZXRJbnB1dChcImlucHV0SWRcIiwgY29uZmlnLmlucHV0SWQpO1xyXG5cclxuICAgICAgY29uc3QgaW5zdGFuY2UgPSBjaGVja2JveFJlZi5pbnN0YW5jZSBhcyBUc2lDaGVja2JveENvbXBvbmVudDtcclxuICAgICAgaW5zdGFuY2UuY2hlY2tlZCA9IGNvbmZpZy5pc0NoZWNrZWQ7XHJcbiAgICAgIGluc3RhbmNlLnRvb2x0aXBUZXh0ID0gY29uZmlnLnRvb2xUaXBUZXh0XHJcbiAgICAgIGluc3RhbmNlLmlzQmluYXJ5ID0gdHJ1ZVxyXG4gICAgICBpbnN0YW5jZS50b29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uVG9wXHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGl0ZW1EaXYsIGNoZWNrYm94UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuICAgICAgLy8gY29uc3QgbGFiZWxFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgIC8vIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobGFiZWxFbGVtZW50LCAnYmVsb3ctbGFiZWwnKTtcclxuICAgICAgLy8gY29uc3QgbGFiZWxUZXh0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KGNvbmZpZy5sYWJlbCk7XHJcbiAgICAgIC8vIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobGFiZWxFbGVtZW50LCBsYWJlbFRleHQpO1xyXG4gICAgICAvLyB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGl0ZW1EaXYsIGxhYmVsRWxlbWVudCk7XHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGNvbnRhaW5lckRpdiwgaXRlbURpdik7XHJcblxyXG4gICAgICByZXR1cm4gY2hlY2tib3hSZWY7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZGlzYWJsZWRDaGVja2JveENvbXBvbmVudFJlZiA9IGNyZWF0ZUNoZWNrYm94KHtcclxuICAgICAgaW5wdXROYW1lOiB0aGlzLnByZXNlbnRhdGlvbkRlc2lnbmVyLFxyXG4gICAgICBpbnB1dElkOiBgJHt0aGlzLnByZXNlbnRhdGlvbkRlc2lnbmVyfS1kaXNhYmxlLWlucHV0LWNoZWNrYm94YCxcclxuICAgICAgaXNDaGVja2VkOiAhaXNCbG9ja0Rpc2FibGVkLFxyXG4gICAgICB0b29sVGlwVGV4dDogJ0Rpc2FibGVkJ1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zaG93SGlkZUNoZWNrYm94Q29tcG9uZW50UmVmID0gY3JlYXRlQ2hlY2tib3goe1xyXG4gICAgICBpbnB1dE5hbWU6IHRoaXMucHJlc2VudGF0aW9uRGVzaWduZXIsXHJcbiAgICAgIGlucHV0SWQ6IGAke3RoaXMucHJlc2VudGF0aW9uRGVzaWduZXJ9LXZpc2libGUtY2hlY2tib3hgLFxyXG4gICAgICBpc0NoZWNrZWQ6ICFpc0Jsb2NrVmlzaWJsZSxcclxuICAgICAgdG9vbFRpcFRleHQ6ICdWaXNpYmxlJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYWRkQ2hlY2tib3hlc1RvSW5wdXRzKHByZXNlbnRhdGlvblNldHRpbmc/OiBQcmVzZW50YXRpb25TZXR0aW5nKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKCF0aGlzLl93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmlzRGVzZ2luTW9kZUZyb21Xb3JrZmxvdykge1xyXG4gICAgICB0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFRzaUNoZWNrYm94Q29tcG9uZW50KTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0hpZGVDaGVja2JveENvbXBvbmVudFJlZi5zZXRJbnB1dChcImlucHV0TmFtZVwiLCB0aGlzLnByZXNlbnRhdGlvbkRlc2lnbmVyKVxyXG4gICAgICB0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYuc2V0SW5wdXQoXCJpbnB1dElkXCIsIGAke3RoaXMucHJlc2VudGF0aW9uRGVzaWduZXJ9LXNob3ctaGlkZS1jaGVja2JveGApXHJcblxyXG4gICAgICBsZXQgaXNCbG9ja0Rpc3BsYXllZCA9IHByZXNlbnRhdGlvblNldHRpbmc/LnByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxzXHJcbiAgICAgICAgLmZpbmQoeCA9PiB4LmJsb2NrTmFtZSA9PSB0aGlzLnByZXNlbnRhdGlvbkRlc2lnbmVyKT8uaXNCbG9ja1Zpc2libGUgPz8gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBjaGVja2JveCA9IHRoaXMuc2hvd0hpZGVDaGVja2JveENvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBUc2lDaGVja2JveENvbXBvbmVudDtcclxuICAgICAgY2hlY2tib3guY2hlY2tlZCA9ICFpc0Jsb2NrRGlzcGxheWVkO1xyXG5cclxuXHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5pc0Rlc2dpbk1vZGVGcm9tV29ya2Zsb3cpIHtcclxuXHJcblxyXG4gICAgICBjb25zdCBpc0Jsb2NrRGlzYWJsZWQgPSBwcmVzZW50YXRpb25TZXR0aW5nPy5wcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsc1xyXG4gICAgICAgIC5maW5kKHggPT4geC5ibG9ja05hbWUgPT09IHRoaXMucHJlc2VudGF0aW9uRGVzaWduZXIpPy5pc0lucHV0RW5hYmxlZCA/PyB0cnVlO1xyXG5cclxuICAgICAgY29uc3QgaXNCbG9ja1Zpc2libGUgPSBwcmVzZW50YXRpb25TZXR0aW5nPy5wcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsc1xyXG4gICAgICAgIC5maW5kKHggPT4geC5ibG9ja05hbWUgPT09IHRoaXMucHJlc2VudGF0aW9uRGVzaWduZXIpPy5pc0Jsb2NrVmlzaWJsZSA/PyB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5jcmVhdGVDaGVja2JveEdyb3VwV2l0aExhYmVscyhpc0Jsb2NrRGlzYWJsZWQsIGlzQmxvY2tWaXNpYmxlKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnY29uZmlnLW1vZGUtYm9yZGVyJyk7XHJcbiAgfVxyXG59Il19
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLWRlc2lnbmVyLWJhc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1kaXJlY3RpdmVzL3ByZXNlbnRhdGlvbi1kZXNpZ25lci1iYXNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQStCLFNBQVMsRUFBYyxLQUFLLEVBQWlELE1BQU0sZUFBZSxDQUFDO0FBRXpJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBSTlHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBTTNDLE1BQU0sT0FBTyxpQ0FBaUM7SUFHNUMsSUFBYSxvQkFBb0IsQ0FBQyxLQUF5QjtRQUV6RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFhLHdCQUF3QixDQUFDLEtBQXlCO1FBRTdELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBRXRCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFXRCxZQUFzQixFQUFjLEVBQ3hCLFFBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxvQkFBeUMsRUFDekMsNkJBQTJELEVBQzNELGdDQUFpRTtRQUx2RCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLGtDQUE2QixHQUE3Qiw2QkFBNkIsQ0FBOEI7UUFDM0QscUNBQWdDLEdBQWhDLGdDQUFnQyxDQUFpQztRQVQ3RSxZQUFPLEdBQVksS0FBSyxDQUFBO1FBQ3hCLG9CQUFlLEdBQVks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WUFDbEYsUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLGdCQUFnQixDQUFDO1lBR3JDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0csQ0FBQztRQUlELElBQUksSUFBSSxDQUFDLDZCQUE2QixDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFHaEUsTUFBTSxlQUFlLEdBQUcsbUJBQW1CLEVBQUUsMEJBQTBCO2lCQUNwRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUM7WUFFaEYsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLEVBQUUsMEJBQTBCO2lCQUNuRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUM7WUFFaEYsSUFBSSxDQUFDLDZCQUE2QixDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUNyRSxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN0RSxDQUFDOytHQTlTVSxpQ0FBaUM7bUdBQWpDLGlDQUFpQzs7NEZBQWpDLGlDQUFpQztrQkFIN0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0NBQStDO2lCQUMxRDtpUUFJYyxvQkFBb0I7c0JBQWhDLEtBQUs7Z0JBS08sd0JBQXdCO3NCQUFwQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJlc2VudGF0aW9uU2V0dGluZyB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFRzaUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vdHNpLWNvbXBvbmVudHMvaW5wdXQtY29tcG9uZW50cy90c2ktY2hlY2tib3gvdHNpLWNoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExheW91dEhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sYXlvdXQvbGF5b3V0LWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dvcmtmbG93L3dvcmtmbG93LWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcmVzZW50YXRpb24tc2V0dGluZy9wcmVzZW50YXRpb24tZGVzaWduZXItYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vZW51bXMnO1xyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3ByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZV06bm90KHRzaS10YWItcGFuZWwpJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJlc2VudGF0aW9uRGVzaWduZXJEaXJlY3RpdmVCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5wcml2YXRlIF9wcmVzZW50YXRpb25EZXNpZ25lciE6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KCkgc2V0IHByZXNlbnRhdGlvbkRlc2lnbmVyKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpXHJcbiAge1xyXG4gICAgdGhpcy5fcHJlc2VudGF0aW9uRGVzaWduZXIgPSB2YWx1ZTtcclxuICB9XHJcbiAgXHJcbiAgQElucHV0KCkgc2V0IHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKVxyXG4gIHtcclxuICAgIHRoaXMuX3ByZXNlbnRhdGlvbkRlc2lnbmVyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgcHJlc2VudGF0aW9uRGVzaWduZXIoKTogc3RyaW5nIHwgdW5kZWZpbmVkXHJcbiAge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ByZXNlbnRhdGlvbkRlc2lnbmVyO1xyXG4gIH1cclxuXHJcbiAgc2hvd0hpZGVDaGVja2JveENvbXBvbmVudFJlZjogYW55XHJcbiAgZGlzYWJsZWRDaGVja2JveENvbXBvbmVudFJlZjogYW55XHJcbiAgdGVtcFRlbXBsYXRlUmVmOiBhbnlcclxuICB0ZW1wVGVtcGxhdGVQYXJlbnROb2RlOiBhbnlcclxuICBuZXhTaWJsaW5nT2ZFbGVtZW50OiBhbnlcclxuICB0cmVhdGVkOiBib29sZWFuID0gZmFsc2VcclxuICBjaGVja2JveGVzQWRkZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcm90ZWN0ZWQgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByb3RlY3RlZCBfbGF5b3V0SGVscGVyU2VydmljZTogTGF5b3V0SGVscGVyU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBfd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZTogV29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBfcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZTogUHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy50ZW1wVGVtcGxhdGVSZWYgPSBlbC5uYXRpdmVFbGVtZW50XHJcbiAgICB0aGlzLm5leFNpYmxpbmdPZkVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ/Lm5leHRTaWJsaW5nXHJcbiAgICB0aGlzLnRlbXBUZW1wbGF0ZVBhcmVudE5vZGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ/LnBhcmVudE5vZGVcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSkge1xyXG5cclxuICAgICAgaWYgKCF0aGlzLnRlbXBUZW1wbGF0ZVJlZikge1xyXG4gICAgICAgIHRoaXMudGVtcFRlbXBsYXRlUmVmID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5uZXhTaWJsaW5nT2ZFbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5uZXhTaWJsaW5nT2ZFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Py5uZXh0U2libGluZ1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMudGVtcFRlbXBsYXRlUGFyZW50Tm9kZSkge1xyXG4gICAgICAgIHRoaXMudGVtcFRlbXBsYXRlUGFyZW50Tm9kZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudD8ucGFyZW50Tm9kZVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3ByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZVNlcnZpY2UucmVnaXN0ZXIodGhpcylcclxuICB9XHJcblxyXG4gIHJlbW92ZUVtcHR5QW5jZXN0b3JzKG5vZGU6IEhUTUxFbGVtZW50IHwgbnVsbCkge1xyXG4gICAgLy8gaWYgKCFub2RlKSByZXR1cm47XHJcblxyXG4gICAgLy8gLy8gQ2hlY2sgaWYgdGhlIG5vZGUgaGFzIGFueSBlbGVtZW50IGNoaWxkcmVuXHJcbiAgICAvLyBjb25zdCBoYXNFbGVtZW50Q2hpbGRyZW4gPSBBcnJheS5mcm9tKG5vZGUuY2hpbGRyZW4pLnNvbWUoXHJcbiAgICAvLyAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREVcclxuICAgIC8vICk7XHJcblxyXG4gICAgLy8gaWYgKCFoYXNFbGVtZW50Q2hpbGRyZW4pIHtcclxuICAgIC8vICAgdHJ5IHtcclxuICAgIC8vICAgICBjb25zdCBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGU7XHJcbiAgICAvLyAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQsIG5vZGUpO1xyXG4gICAgLy8gICAgIHRoaXMucmVtb3ZlRW1wdHlBbmNlc3RvcnMocGFyZW50IGFzIEhUTUxFbGVtZW50KTtcclxuICAgIC8vICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIC8vICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgcmVtb3ZpbmcgZW1wdHkgYW5jZXN0b3I6XCIsIGVycm9yKTtcclxuXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZS51bnJlZ2lzdGVyKHRoaXMpXHJcbiAgfVxyXG5cclxuICBkaXNhYmxlSW5wdXRzKCkge1xyXG4gICAgdGhpcy5leGVjdXRlKHRydWUpXHJcblxyXG4gICAgY29uc3QgdHNpQ29tcG9uZW50c1NlbGVjdG9ycyA9IFsnVHNpLVRleHQtQm94JywgJ1RzaS1DaGVja0JveCcsICdUc2ktQ3VycmVuY3ktT3RoZXItSW5wdXQnLFxyXG4gICAgICAnVHNpLUN1cnJlbmN5LVNvY2lldGUtSW5wdXQnLCAnVHNpLURhdGUtUGlja2VyJywgJ1RzaS1EZWNpbWFsLUlucHV0JyxcclxuICAgICAgJ1RzaS1GaWxlLU1hbmFnZXInLCAnVHNpLUZvcm11bGEtQm94JywgJ1RzaS1JbnRlZ2VyJywgJ1RzaS1SYWRpby1CdXR0b24nLCAnVHNpLVJhdGUtSW5wdXQnLFxyXG4gICAgICAnVHNpLVNlYXJjaC1Db21ibycsICdUc2ktVGV4dC1BcmVhJywgJ3RzaS10aW1lLXBpY2tlcicsICdUc2ktQnV0dG9uJ1xyXG4gICAgXVxyXG5cclxuICAgIHRzaUNvbXBvbmVudHNTZWxlY3RvcnMuZm9yRWFjaChzZWxlY3RvciA9PiB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xyXG4gICAgICBlbGVtZW50cy5mb3JFYWNoKChlbDogYW55KSA9PiB7XHJcblxyXG4gICAgICAgIGVsPy5jbGFzc0xpc3Q/LmFkZCgnZGlzYWJsZWQtaW5wdXQnKTtcclxuICAgICAgICBlbD8uc2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIiwgXCJcIilcclxuICAgICAgICBpZiAoc2VsZWN0b3IgPT0gJ1RzaS1TZWFyY2gtQ29tYm8nKSB7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGVsc2UgaWYgKHNlbGVjdG9yID09ICdUc2ktQ2hlY2tCb3gnKSB7XHJcbiAgICAgICAgLy8gICBjb25zdCBpbnB1dEVsID0gZWwucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgICAgICAvLyAgIGNvbnN0IGlzQ2hlY2tlZCA9IGlucHV0RWw/LmNoZWNrZWQ7XHJcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZygnQ2hlY2tlZD8nLCBpc0NoZWNrZWQpO1xyXG4gICAgICAgIC8vICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgICAvLyAgIHNwYW4uY2xhc3NMaXN0LmFkZCgndHNpLXJlYWRvbmx5LXNwYW4nKTtcclxuICAgICAgICAvLyAgIHNwYW4uY2xhc3NMaXN0LmFkZCgndy1mdWxsJylcclxuICAgICAgICAvLyAgIHNwYW4uY2xhc3NMaXN0LmFkZCgndHNpLXJlYWRvbmx5LXNwYW4nLCAndy1mdWxsJywgJ3BpJyk7XHJcbiAgICAgICAgLy8gICBzcGFuLmNsYXNzTGlzdC5hZGQoaXNDaGVja2VkID8gJ3BpLWNoZWNrLXNxdWFyZScgOiAncGktc3F1YXJlJyk7XHJcblxyXG4gICAgICAgIC8vICAgY29uc3QgcGFyZW50ID0gZWwucGFyZW50Tm9kZTtcclxuICAgICAgICAvLyAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAvLyAgICAgcGFyZW50LnJlcGxhY2VDaGlsZChzcGFuLCBlbCk7XHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgIC8vICAgLy9jb25zdCB2YWx1ZSA9IGVsLmdldEF0dHJpYnV0ZSgnbmctcmVmbGVjdC1tb2RlbCcpO1xyXG5cclxuICAgICAgICAvLyAgIGNvbnN0IGlucHV0VmFsdWUgPSAoZWw/LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaW5wdXRcIilbMF0gYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWVcclxuXHJcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZyhcImlucHV0VmFsdWUgPT4gXCIsIGlucHV0VmFsdWUpXHJcblxyXG4gICAgICAgIC8vICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgICAvLyAgIHNwYW4uaW5uZXJUZXh0ID0gaW5wdXRWYWx1ZSA/PyAnJztcclxuICAgICAgICAvLyAgIHNwYW4uY2xhc3NMaXN0LmFkZCgndHNpLXJlYWRvbmx5LXNwYW4nKTtcclxuICAgICAgICAvLyAgIHNwYW4uY2xhc3NMaXN0LmFkZCgndy1mdWxsJylcclxuXHJcbiAgICAgICAgLy8gICBjb25zdCBwYXJlbnQgPSBlbC5wYXJlbnROb2RlO1xyXG4gICAgICAgIC8vICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgIC8vICAgICBwYXJlbnQucmVwbGFjZUNoaWxkKHNwYW4sIGVsKTtcclxuICAgICAgICAvLyAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbXBvbmVudEluc3RhbmNlKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgYW55KTogYW55IHtcclxuICAgIC8vIEdldCB0aGUgY29tcG9uZW50IGluc3RhbmNlIGZyb20gQW5ndWxhcidzIGNvbnRleHRcclxuICAgIGlmIChlbGVtZW50Ll9fbmdDb250ZXh0X18pIHtcclxuICAgICAgY29uc3QgY29udGV4dCA9IGVsZW1lbnQuX19uZ0NvbnRleHRfXztcclxuICAgICAgLy8gVGhlIGNvbXBvbmVudCBpbnN0YW5jZSBpcyB1c3VhbGx5IHRoZSBmaXJzdCBub24tYXJyYXkvbm9uLW9iamVjdCBpbiBjb250ZXh0XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb250ZXh0KSB7XHJcbiAgICAgICAgaWYgKGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgaW5zZXJ0RWxlbWVudCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKHRoaXMudGVtcFRlbXBsYXRlUGFyZW50Tm9kZSwgdGhpcy50ZW1wVGVtcGxhdGVSZWYsIHRoaXMubmV4U2libGluZ09mRWxlbWVudCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU2hvd0hpZGVDaGVja2JveCgpIHtcclxuICAgIGlmICh0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYpIHtcclxuICAgICAgdGhpcy5zaG93SGlkZUNoZWNrYm94Q29tcG9uZW50UmVmLmRlc3Ryb3koKTsgLy8gZGVzdHJveXMgdGhlIGNvbXBvbmVudCBpbnN0YW5jZVxyXG4gICAgICB0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdjb25maWctbW9kZS1ib3JkZXInKTtcclxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgdGhpcy5jaGVja2JveGVzQWRkZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUVsZW1lbnQoKSB7XHJcbiAgICBpZiAoIXRoaXMudGVtcFRlbXBsYXRlUmVmKSB7XHJcbiAgICAgIHRoaXMudGVtcFRlbXBsYXRlUmVmID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm5leFNpYmxpbmdPZkVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5uZXhTaWJsaW5nT2ZFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Py5uZXh0U2libGluZ1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy50ZW1wVGVtcGxhdGVQYXJlbnROb2RlKSB7XHJcbiAgICAgIHRoaXMudGVtcFRlbXBsYXRlUGFyZW50Tm9kZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudD8ucGFyZW50Tm9kZVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBleGVjdXRlKGNvbmRpdGlvbjogYm9vbGVhbiwgY29uZmlndXJhdGlvbiA/OiBzdHJpbmcpIHtcclxuICAgIGlmIChjb25kaXRpb24pIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZSh0aGlzLnRlbXBUZW1wbGF0ZVBhcmVudE5vZGUsIHRoaXMudGVtcFRlbXBsYXRlUmVmLCB0aGlzLm5leFNpYmxpbmdPZkVsZW1lbnQpO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy50cmVhdGVkID0gdHJ1ZVxyXG4gIH1cclxuXHJcblxyXG4gIGdldENvbXBvbmVudFNlbGVjdG9yKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5pbmplY3Rvci5nZXQodGhpcy5nZXRDb21wb25lbnRUeXBlKCksIG51bGwpO1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlPy5jb25zdHJ1Y3Rvcj8uybVjbXA/LnNlbGVjdG9ycz8uWzBdPy5bMF0gfHwgXCJcIjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50VHlwZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KT8uX2hvc3RMVmlldz8uWzhdPy5jb25zdHJ1Y3RvciB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDaGVja2JveEdyb3VwV2l0aExhYmVscyhpc0Jsb2NrRGlzYWJsZWQ6IGJvb2xlYW4sIGlzQmxvY2tWaXNpYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250YWluZXJEaXYgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhjb250YWluZXJEaXYsICdjaGVja2JveC1jb250YWluZXInKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCBjb250YWluZXJEaXYpO1xyXG5cclxuICAgIGNvbnN0IGNyZWF0ZUNoZWNrYm94ID0gKFxyXG4gICAgICBjb25maWc6IHsgaW5wdXROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsIGlucHV0SWQ6IHN0cmluZywgaXNDaGVja2VkOiBib29sZWFuLCBcclxuICAgICAgICB0b29sVGlwVGV4dDogc3RyaW5nXHJcbiAgICAgIH1cclxuICAgICk6IENvbXBvbmVudFJlZjxUc2lDaGVja2JveENvbXBvbmVudD4gPT4ge1xyXG4gICAgICBjb25zdCBpdGVtRGl2ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhpdGVtRGl2LCAnY2hlY2tib3gtaXRlbScpO1xyXG5cclxuICAgICAgY29uc3QgY2hlY2tib3hSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFRzaUNoZWNrYm94Q29tcG9uZW50KTtcclxuICAgICAgY2hlY2tib3hSZWYuc2V0SW5wdXQoXCJpbnB1dE5hbWVcIiwgY29uZmlnLmlucHV0TmFtZSk7XHJcbiAgICAgIGNoZWNrYm94UmVmLnNldElucHV0KFwiaW5wdXRJZFwiLCBjb25maWcuaW5wdXRJZCk7XHJcblxyXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGNoZWNrYm94UmVmLmluc3RhbmNlIGFzIFRzaUNoZWNrYm94Q29tcG9uZW50O1xyXG4gICAgICBpbnN0YW5jZS5jaGVja2VkID0gY29uZmlnLmlzQ2hlY2tlZDtcclxuICAgICAgaW5zdGFuY2UudG9vbHRpcFRleHQgPSBjb25maWcudG9vbFRpcFRleHRcclxuICAgICAgaW5zdGFuY2UuaXNCaW5hcnkgPSB0cnVlXHJcbiAgICAgIGluc3RhbmNlLnRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5Ub3BcclxuXHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoaXRlbURpdiwgY2hlY2tib3hSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XHJcblxyXG4gICAgICAvLyBjb25zdCBsYWJlbEVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgLy8gdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhsYWJlbEVsZW1lbnQsICdiZWxvdy1sYWJlbCcpO1xyXG4gICAgICAvLyBjb25zdCBsYWJlbFRleHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQoY29uZmlnLmxhYmVsKTtcclxuICAgICAgLy8gdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChsYWJlbEVsZW1lbnQsIGxhYmVsVGV4dCk7XHJcbiAgICAgIC8vIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoaXRlbURpdiwgbGFiZWxFbGVtZW50KTtcclxuXHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyRGl2LCBpdGVtRGl2KTtcclxuXHJcbiAgICAgIHJldHVybiBjaGVja2JveFJlZjtcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kaXNhYmxlZENoZWNrYm94Q29tcG9uZW50UmVmID0gY3JlYXRlQ2hlY2tib3goe1xyXG4gICAgICBpbnB1dE5hbWU6IHRoaXMucHJlc2VudGF0aW9uRGVzaWduZXIsXHJcbiAgICAgIGlucHV0SWQ6IGAke3RoaXMucHJlc2VudGF0aW9uRGVzaWduZXJ9LWRpc2FibGUtaW5wdXQtY2hlY2tib3hgLFxyXG4gICAgICBpc0NoZWNrZWQ6ICFpc0Jsb2NrRGlzYWJsZWQsXHJcbiAgICAgIHRvb2xUaXBUZXh0OiAnRGlzYWJsZWQnXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYgPSBjcmVhdGVDaGVja2JveCh7XHJcbiAgICAgIGlucHV0TmFtZTogdGhpcy5wcmVzZW50YXRpb25EZXNpZ25lcixcclxuICAgICAgaW5wdXRJZDogYCR7dGhpcy5wcmVzZW50YXRpb25EZXNpZ25lcn0tdmlzaWJsZS1jaGVja2JveGAsXHJcbiAgICAgIGlzQ2hlY2tlZDogIWlzQmxvY2tWaXNpYmxlLFxyXG4gICAgICB0b29sVGlwVGV4dDogJ1Zpc2libGUnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBhZGRDaGVja2JveGVzVG9JbnB1dHMocHJlc2VudGF0aW9uU2V0dGluZz86IFByZXNlbnRhdGlvblNldHRpbmcpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5jaGVja2JveGVzQWRkZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGVja2JveGVzQWRkZWQgPSB0cnVlO1xyXG5cclxuICAgIGlmICghdGhpcy5fd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZS5pc0Rlc2dpbk1vZGVGcm9tV29ya2Zsb3cpIHtcclxuICAgICAgdGhpcy5zaG93SGlkZUNoZWNrYm94Q29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChUc2lDaGVja2JveENvbXBvbmVudCk7XHJcblxyXG4gICAgICB0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYuc2V0SW5wdXQoXCJpbnB1dE5hbWVcIiwgdGhpcy5wcmVzZW50YXRpb25EZXNpZ25lcilcclxuICAgICAgdGhpcy5zaG93SGlkZUNoZWNrYm94Q29tcG9uZW50UmVmLnNldElucHV0KFwiaW5wdXRJZFwiLCBgJHt0aGlzLnByZXNlbnRhdGlvbkRlc2lnbmVyfS1zaG93LWhpZGUtY2hlY2tib3hgKVxyXG5cclxuICAgICAgbGV0IGlzQmxvY2tEaXNwbGF5ZWQgPSBwcmVzZW50YXRpb25TZXR0aW5nPy5wcmVzZW50YXRpb25TZXR0aW5nRGV0YWlsc1xyXG4gICAgICAgIC5maW5kKHggPT4geC5ibG9ja05hbWUgPT0gdGhpcy5wcmVzZW50YXRpb25EZXNpZ25lcik/LmlzQmxvY2tWaXNpYmxlID8/IHRydWU7XHJcblxyXG4gICAgICBsZXQgY2hlY2tib3ggPSB0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgVHNpQ2hlY2tib3hDb21wb25lbnQ7XHJcbiAgICAgIGNoZWNrYm94LmNoZWNrZWQgPSAhaXNCbG9ja0Rpc3BsYXllZDtcclxuXHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5zaG93SGlkZUNoZWNrYm94Q29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaWYgKHRoaXMuX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UuaXNEZXNnaW5Nb2RlRnJvbVdvcmtmbG93KSB7XHJcblxyXG5cclxuICAgICAgY29uc3QgaXNCbG9ja0Rpc2FibGVkID0gcHJlc2VudGF0aW9uU2V0dGluZz8ucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHNcclxuICAgICAgICAuZmluZCh4ID0+IHguYmxvY2tOYW1lID09PSB0aGlzLnByZXNlbnRhdGlvbkRlc2lnbmVyKT8uaXNJbnB1dEVuYWJsZWQgPz8gdHJ1ZTtcclxuXHJcbiAgICAgIGNvbnN0IGlzQmxvY2tWaXNpYmxlID0gcHJlc2VudGF0aW9uU2V0dGluZz8ucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHNcclxuICAgICAgICAuZmluZCh4ID0+IHguYmxvY2tOYW1lID09PSB0aGlzLnByZXNlbnRhdGlvbkRlc2lnbmVyKT8uaXNCbG9ja1Zpc2libGUgPz8gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuY3JlYXRlQ2hlY2tib3hHcm91cFdpdGhMYWJlbHMoaXNCbG9ja0Rpc2FibGVkLCBpc0Jsb2NrVmlzaWJsZSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2NvbmZpZy1tb2RlLWJvcmRlcicpO1xyXG4gIH1cclxufSJdfQ==
@@ -49,6 +49,10 @@ export class PresentationDesignerTabPanelDirective extends PresentationDesignerD
49
49
  this.setPanelVisible(false);
50
50
  }
51
51
  addCheckboxesToInputs(presentationSetting) {
52
+ if (this.checkboxesAdded) {
53
+ return;
54
+ }
55
+ this.checkboxesAdded = true;
52
56
  const isBlockVisible = presentationSetting?.presentationSettingDetails
53
57
  .find(x => x.blockName == this.presentationDesigner)?.isBlockVisible ?? true;
54
58
  this.panel.designerChecked = !isBlockVisible;
@@ -69,6 +73,7 @@ export class PresentationDesignerTabPanelDirective extends PresentationDesignerD
69
73
  removeShowHideCheckbox() {
70
74
  this.panel.designerCheckboxVisible = false;
71
75
  this.showHideCheckboxComponentRef = null;
76
+ this.checkboxesAdded = false;
72
77
  this.tabView?.refreshTabs();
73
78
  }
74
79
  disableInputs() {
@@ -91,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
91
96
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i1.LayoutHelperService }, { type: i2.WorkflowConfigurationService }, { type: i3.PresentationDesignerBaseService }, { type: i4.TsiTabPanelComponent }, { type: i5.TsiTabViewComponent, decorators: [{
92
97
  type: Optional
93
98
  }] }] });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLWRlc2lnbmVyLXRhYi1wYW5lbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWRpcmVjdGl2ZXMvcHJlc2VudGF0aW9uLWRlc2lnbmVyLXRhYi1wYW5lbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxRQUFRLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7O0FBTzNGOzs7Ozs7Ozs7O0dBVUc7QUFJSCxNQUFNLE9BQU8scUNBQXNDLFNBQVEsaUNBQWlDO0lBRXhGLFlBQ3VCLEVBQWMsRUFDZCxRQUFtQixFQUNuQixnQkFBa0MsRUFDbEMsb0JBQXlDLEVBQ3pDLDZCQUEyRCxFQUMzRCxnQ0FBaUUsRUFDNUUsS0FBMkIsRUFDZixPQUFtQztRQUV2RCxLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSw2QkFBNkIsRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFBO1FBVHpHLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQThCO1FBQzNELHFDQUFnQyxHQUFoQyxnQ0FBZ0MsQ0FBaUM7UUFDNUUsVUFBSyxHQUFMLEtBQUssQ0FBc0I7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUE0QjtJQUczRCxDQUFDO0lBRVEsUUFBUTtRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFBO1FBRXhELHNFQUFzRTtRQUN0RSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQy9CLENBQUM7UUFFRCxJQUFJLENBQUMsZ0NBQWdDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFFUSxPQUFPLENBQUMsU0FBa0IsRUFBRSxhQUFzQjtRQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0lBQ3ZCLENBQUM7SUFFUSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVRLGFBQWE7UUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRVEscUJBQXFCLENBQUMsbUJBQXlDO1FBQ3BFLE1BQU0sY0FBYyxHQUFHLG1CQUFtQixFQUFFLDBCQUEwQjthQUNqRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUM7UUFFakYsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFFMUMsb0VBQW9FO1FBQ3BFLHVFQUF1RTtRQUN2RSw4REFBOEQ7UUFDOUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsNEJBQTRCLEdBQUc7WUFDaEMsUUFBUSxFQUFFO2dCQUNOLElBQUksUUFBUTtvQkFDUixPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUM7Z0JBQ2pDLENBQUM7YUFDSjtTQUNKLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFUSxzQkFBc0I7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFUSxhQUFhO1FBQ2xCLHNFQUFzRTtRQUN0RSxvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQWdCO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7K0dBN0VRLHFDQUFxQzttR0FBckMscUNBQXFDOzs0RkFBckMscUNBQXFDO2tCQUhqRCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQ0FBcUM7aUJBQ2xEOzswQkFXUSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPcHRpb25hbCwgUmVuZGVyZXIyLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFByZXNlbnRhdGlvblNldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMvcHJlc2VudGF0aW9uLXNldHRpbmdzL3ByZXNlbnRhdGlvbi1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IFByZXNlbnRhdGlvbkRlc2lnbmVyRGlyZWN0aXZlQmFzZSB9IGZyb20gJy4vcHJlc2VudGF0aW9uLWRlc2lnbmVyLWJhc2UuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVHNpVGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi90c2ktY29tcG9uZW50cy90c2ktdGFiLXBhbmVsL3RzaS10YWItcGFuZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpVGFiVmlld0NvbXBvbmVudCB9IGZyb20gJy4uL3RzaS1jb21wb25lbnRzL3RzaS10YWItdmlldy90c2ktdGFiLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0SGVscGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xheW91dC9sYXlvdXQtaGVscGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvd29ya2Zsb3cvd29ya2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ByZXNlbnRhdGlvbi1zZXR0aW5nL3ByZXNlbnRhdGlvbi1kZXNpZ25lci1iYXNlLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIFByZXNlbnRhdGlvbi1kZXNpZ25lciBwYXJ0aWNpcGF0aW9uIGZvciBhbiBpbmRpdmlkdWFsIHRhYiBwYW5lbC5cclxuICpcclxuICogQSB0c2ktdGFiLXBhbmVsIGlzIG5vdCBhIGZyZWUtc3RhbmRpbmcgRE9NIGJsb2NrOiBpdHMgaG9zdCBlbGVtZW50IGlzIG5ldmVyXHJcbiAqIGF0dGFjaGVkIHRvIHRoZSBET00g4oCUIFRzaVRhYlZpZXdDb21wb25lbnQgY29uc3VtZXMgaXQgdGhyb3VnaCBhIGNvbnRlbnQgcXVlcnlcclxuICogYW5kIHJlbmRlcnMgdGhlIHRhYiBoZWFkZXIvY29udGVudCBpdHNlbGYuIFNvIHRoZSBiYXNlIGRpcmVjdGl2ZSdzIERPTVxyXG4gKiBkZXRhY2gvcmUtYXR0YWNoIG1lY2hhbmlzbSBpcyBhIG5vLW9wIGhlcmUuIEluc3RlYWQsIGV2ZXJ5IGhpZGUvc2hvdyBlbnRyeVxyXG4gKiBwb2ludCBvZiB0aGUgcHJlc2VudGF0aW9uLWRlc2lnbmVyIGNvbnRyYWN0IGlzIHJlLXRhcmdldGVkIHRvIHRoZSBwYW5lbCdzXHJcbiAqIGB2aXNpYmxlYCBmbGFnLCB3aGljaCB0aGUgdGFiIHZpZXcgdXNlcyB0byBkZWNpZGUgd2hldGhlciB0byByZW5kZXIgdGhlXHJcbiAqIHBhbmVsIChoZWFkZXIgYW5kIGNvbnRlbnQpIGF0IGFsbC5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICd0c2ktdGFiLXBhbmVsW3ByZXNlbnRhdGlvbkRlc2lnbmVyXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFByZXNlbnRhdGlvbkRlc2lnbmVyVGFiUGFuZWxEaXJlY3RpdmUgZXh0ZW5kcyBQcmVzZW50YXRpb25EZXNpZ25lckRpcmVjdGl2ZUJhc2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBvdmVycmlkZSBlbDogRWxlbWVudFJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2xheW91dEhlbHBlclNlcnZpY2U6IExheW91dEhlbHBlclNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIF93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBvdmVycmlkZSBfcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZTogUHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHBhbmVsOiBUc2lUYWJQYW5lbENvbXBvbmVudCxcclxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHRhYlZpZXc6IFRzaVRhYlZpZXdDb21wb25lbnQgfCBudWxsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihlbCwgcmVuZGVyZXIsIHZpZXdDb250YWluZXJSZWYsIF9sYXlvdXRIZWxwZXJTZXJ2aWNlLCBfd29ya2Zsb3dDb25maWd1cmF0aW9uU2VydmljZSwgX3ByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZVNlcnZpY2UpXHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5wYW5lbC5kZXNpZ25lckJsb2NrTmFtZSA9IHRoaXMucHJlc2VudGF0aW9uRGVzaWduZXJcclxuXHJcbiAgICAgICAgLy8gTWlycm9ycyB0aGUgYmFzZSBwYXR0ZXJuOiBoaWRlIGZpcnN0LCB0aGUgb3JjaGVzdHJhdG9yIHJlLXNob3dzIHZpYVxyXG4gICAgICAgIC8vIGV4ZWN1dGUodHJ1ZSkgd2hlbiB0aGUgcGVyc2lzdGVkIHNldHRpbmcgc2F5cyB2aXNpYmxlIG9yIG5vbmUgZXhpc3RzLlxyXG4gICAgICAgIGlmICghdGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5pc0Rlc2lnbk1vZGUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRQYW5lbFZpc2libGUoZmFsc2UpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlLnJlZ2lzdGVyKHRoaXMpXHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgZXhlY3V0ZShjb25kaXRpb246IGJvb2xlYW4sIGNvbmZpZ3VyYXRpb24/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldFBhbmVsVmlzaWJsZShjb25kaXRpb24pXHJcbiAgICAgICAgdGhpcy50cmVhdGVkID0gdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIG92ZXJyaWRlIGluc2VydEVsZW1lbnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXRQYW5lbFZpc2libGUodHJ1ZSlcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSByZW1vdmVFbGVtZW50KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0UGFuZWxWaXNpYmxlKGZhbHNlKVxyXG4gICAgfVxyXG5cclxuICAgIG92ZXJyaWRlIGFkZENoZWNrYm94ZXNUb0lucHV0cyhwcmVzZW50YXRpb25TZXR0aW5nPzogUHJlc2VudGF0aW9uU2V0dGluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGlzQmxvY2tWaXNpYmxlID0gcHJlc2VudGF0aW9uU2V0dGluZz8ucHJlc2VudGF0aW9uU2V0dGluZ0RldGFpbHNcclxuICAgICAgICAgICAgLmZpbmQoeCA9PiB4LmJsb2NrTmFtZSA9PSB0aGlzLnByZXNlbnRhdGlvbkRlc2lnbmVyKT8uaXNCbG9ja1Zpc2libGUgPz8gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5wYW5lbC5kZXNpZ25lckNoZWNrZWQgPSAhaXNCbG9ja1Zpc2libGU7XHJcbiAgICAgICAgdGhpcy5wYW5lbC5kZXNpZ25lckNoZWNrYm94VmlzaWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIFRoZSBjaGVja2JveCBpdHNlbGYgaXMgcmVuZGVyZWQgYnkgVHNpVGFiVmlld0NvbXBvbmVudCBpbiB0aGUgdGFiXHJcbiAgICAgICAgLy8gaGVhZGVyOyBleHBvc2UgaXRzIHN0YXRlIHRocm91Z2ggdGhlIHNoYXBlIHRoZSBvcmNoZXN0cmF0b3JzIHJlYWQgYXRcclxuICAgICAgICAvLyBzYXZlIHRpbWUgKHNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYuaW5zdGFuY2UuX2NoZWNrZWQpLlxyXG4gICAgICAgIGNvbnN0IHBhbmVsID0gdGhpcy5wYW5lbDtcclxuICAgICAgICB0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYgPSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlOiB7XHJcbiAgICAgICAgICAgICAgICBnZXQgX2NoZWNrZWQoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhbmVsLmRlc2lnbmVyQ2hlY2tlZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMudGFiVmlldz8ucmVmcmVzaFRhYnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSByZW1vdmVTaG93SGlkZUNoZWNrYm94KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFuZWwuZGVzaWduZXJDaGVja2JveFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dIaWRlQ2hlY2tib3hDb21wb25lbnRSZWYgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudGFiVmlldz8ucmVmcmVzaFRhYnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBkaXNhYmxlSW5wdXRzKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFRoZSBwYW5lbCBob3N0IGlzIGVtcHR5IGFuZCBkZXRhY2hlZCDigJQgdGhlcmUgYXJlIG5vIGlucHV0cyB0byByZWFjaFxyXG4gICAgICAgIC8vIGhlcmUuIElucHV0cyBpbnNpZGUgdGhlIHBhbmVsIGNvbnRlbnQgY2FycnkgdGhlaXIgb3duIGRpcmVjdGl2ZXMuXHJcbiAgICAgICAgdGhpcy5leGVjdXRlKHRydWUpXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRQYW5lbFZpc2libGUodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFuZWwudmlzaWJsZSA9IHZpc2libGU7XHJcbiAgICAgICAgdGhpcy50YWJWaWV3Py5yZWZyZXNoVGFicygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLWRlc2lnbmVyLXRhYi1wYW5lbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWRpcmVjdGl2ZXMvcHJlc2VudGF0aW9uLWRlc2lnbmVyLXRhYi1wYW5lbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxRQUFRLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7O0FBTzNGOzs7Ozs7Ozs7O0dBVUc7QUFJSCxNQUFNLE9BQU8scUNBQXNDLFNBQVEsaUNBQWlDO0lBRXhGLFlBQ3VCLEVBQWMsRUFDZCxRQUFtQixFQUNuQixnQkFBa0MsRUFDbEMsb0JBQXlDLEVBQ3pDLDZCQUEyRCxFQUMzRCxnQ0FBaUUsRUFDNUUsS0FBMkIsRUFDZixPQUFtQztRQUV2RCxLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSw2QkFBNkIsRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFBO1FBVHpHLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQThCO1FBQzNELHFDQUFnQyxHQUFoQyxnQ0FBZ0MsQ0FBaUM7UUFDNUUsVUFBSyxHQUFMLEtBQUssQ0FBc0I7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUE0QjtJQUczRCxDQUFDO0lBRVEsUUFBUTtRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFBO1FBRXhELHNFQUFzRTtRQUN0RSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQy9CLENBQUM7UUFFRCxJQUFJLENBQUMsZ0NBQWdDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFFUSxPQUFPLENBQUMsU0FBa0IsRUFBRSxhQUFzQjtRQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0lBQ3ZCLENBQUM7SUFFUSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVRLGFBQWE7UUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRVEscUJBQXFCLENBQUMsbUJBQXlDO1FBQ3BFLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFFNUIsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLEVBQUUsMEJBQTBCO2FBQ2pFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQztRQUVqRixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLGNBQWMsQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztRQUUxQyxvRUFBb0U7UUFDcEUsdUVBQXVFO1FBQ3ZFLDhEQUE4RDtRQUM5RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyw0QkFBNEIsR0FBRztZQUNoQyxRQUFRLEVBQUU7Z0JBQ04sSUFBSSxRQUFRO29CQUNSLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQztnQkFDakMsQ0FBQzthQUNKO1NBQ0osQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVRLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUMzQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVRLGFBQWE7UUFDbEIsc0VBQXNFO1FBQ3RFLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3RCLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBZ0I7UUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQzsrR0FuRlEscUNBQXFDO21HQUFyQyxxQ0FBcUM7OzRGQUFyQyxxQ0FBcUM7a0JBSGpELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFDQUFxQztpQkFDbEQ7OzBCQVdRLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJlc2VudGF0aW9uU2V0dGluZyB9IGZyb20gJy4uL21vZGVscy9wcmVzZW50YXRpb24tc2V0dGluZ3MvcHJlc2VudGF0aW9uLXNldHRpbmdzJztcclxuaW1wb3J0IHsgUHJlc2VudGF0aW9uRGVzaWduZXJEaXJlY3RpdmVCYXNlIH0gZnJvbSAnLi9wcmVzZW50YXRpb24tZGVzaWduZXItYmFzZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUc2lUYWJQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uL3RzaS1jb21wb25lbnRzL3RzaS10YWItcGFuZWwvdHNpLXRhYi1wYW5lbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lUYWJWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vdHNpLWNvbXBvbmVudHMvdHNpLXRhYi12aWV3L3RzaS10YWItdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMYXlvdXRIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbGF5b3V0L2xheW91dC1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy93b3JrZmxvdy93b3JrZmxvdy1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJlc2VudGF0aW9uLXNldHRpbmcvcHJlc2VudGF0aW9uLWRlc2lnbmVyLWJhc2Uuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogUHJlc2VudGF0aW9uLWRlc2lnbmVyIHBhcnRpY2lwYXRpb24gZm9yIGFuIGluZGl2aWR1YWwgdGFiIHBhbmVsLlxyXG4gKlxyXG4gKiBBIHRzaS10YWItcGFuZWwgaXMgbm90IGEgZnJlZS1zdGFuZGluZyBET00gYmxvY2s6IGl0cyBob3N0IGVsZW1lbnQgaXMgbmV2ZXJcclxuICogYXR0YWNoZWQgdG8gdGhlIERPTSDigJQgVHNpVGFiVmlld0NvbXBvbmVudCBjb25zdW1lcyBpdCB0aHJvdWdoIGEgY29udGVudCBxdWVyeVxyXG4gKiBhbmQgcmVuZGVycyB0aGUgdGFiIGhlYWRlci9jb250ZW50IGl0c2VsZi4gU28gdGhlIGJhc2UgZGlyZWN0aXZlJ3MgRE9NXHJcbiAqIGRldGFjaC9yZS1hdHRhY2ggbWVjaGFuaXNtIGlzIGEgbm8tb3AgaGVyZS4gSW5zdGVhZCwgZXZlcnkgaGlkZS9zaG93IGVudHJ5XHJcbiAqIHBvaW50IG9mIHRoZSBwcmVzZW50YXRpb24tZGVzaWduZXIgY29udHJhY3QgaXMgcmUtdGFyZ2V0ZWQgdG8gdGhlIHBhbmVsJ3NcclxuICogYHZpc2libGVgIGZsYWcsIHdoaWNoIHRoZSB0YWIgdmlldyB1c2VzIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHJlbmRlciB0aGVcclxuICogcGFuZWwgKGhlYWRlciBhbmQgY29udGVudCkgYXQgYWxsLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ3RzaS10YWItcGFuZWxbcHJlc2VudGF0aW9uRGVzaWduZXJdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJlc2VudGF0aW9uRGVzaWduZXJUYWJQYW5lbERpcmVjdGl2ZSBleHRlbmRzIFByZXNlbnRhdGlvbkRlc2lnbmVyRGlyZWN0aXZlQmFzZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByb3RlY3RlZCBvdmVycmlkZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBvdmVycmlkZSBfbGF5b3V0SGVscGVyU2VydmljZTogTGF5b3V0SGVscGVyU2VydmljZSxcclxuICAgICAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3dvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2U6IFdvcmtmbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9wcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlOiBQcmVzZW50YXRpb25EZXNpZ25lckJhc2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcGFuZWw6IFRzaVRhYlBhbmVsQ29tcG9uZW50LFxyXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGFiVmlldzogVHNpVGFiVmlld0NvbXBvbmVudCB8IG51bGxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGVsLCByZW5kZXJlciwgdmlld0NvbnRhaW5lclJlZiwgX2xheW91dEhlbHBlclNlcnZpY2UsIF93b3JrZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBfcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlU2VydmljZSlcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhbmVsLmRlc2lnbmVyQmxvY2tOYW1lID0gdGhpcy5wcmVzZW50YXRpb25EZXNpZ25lclxyXG5cclxuICAgICAgICAvLyBNaXJyb3JzIHRoZSBiYXNlIHBhdHRlcm46IGhpZGUgZmlyc3QsIHRoZSBvcmNoZXN0cmF0b3IgcmUtc2hvd3MgdmlhXHJcbiAgICAgICAgLy8gZXhlY3V0ZSh0cnVlKSB3aGVuIHRoZSBwZXJzaXN0ZWQgc2V0dGluZyBzYXlzIHZpc2libGUgb3Igbm9uZSBleGlzdHMuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhbmVsVmlzaWJsZShmYWxzZSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZVNlcnZpY2UucmVnaXN0ZXIodGhpcylcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBleGVjdXRlKGNvbmRpdGlvbjogYm9vbGVhbiwgY29uZmlndXJhdGlvbj86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2V0UGFuZWxWaXNpYmxlKGNvbmRpdGlvbilcclxuICAgICAgICB0aGlzLnRyZWF0ZWQgPSB0cnVlXHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgaW5zZXJ0RWxlbWVudCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNldFBhbmVsVmlzaWJsZSh0cnVlKVxyXG4gICAgfVxyXG5cclxuICAgIG92ZXJyaWRlIHJlbW92ZUVsZW1lbnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXRQYW5lbFZpc2libGUoZmFsc2UpXHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgYWRkQ2hlY2tib3hlc1RvSW5wdXRzKHByZXNlbnRhdGlvblNldHRpbmc/OiBQcmVzZW50YXRpb25TZXR0aW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tib3hlc0FkZGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGVja2JveGVzQWRkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBpc0Jsb2NrVmlzaWJsZSA9IHByZXNlbnRhdGlvblNldHRpbmc/LnByZXNlbnRhdGlvblNldHRpbmdEZXRhaWxzXHJcbiAgICAgICAgICAgIC5maW5kKHggPT4geC5ibG9ja05hbWUgPT0gdGhpcy5wcmVzZW50YXRpb25EZXNpZ25lcik/LmlzQmxvY2tWaXNpYmxlID8/IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMucGFuZWwuZGVzaWduZXJDaGVja2VkID0gIWlzQmxvY2tWaXNpYmxlO1xyXG4gICAgICAgIHRoaXMucGFuZWwuZGVzaWduZXJDaGVja2JveFZpc2libGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyBUaGUgY2hlY2tib3ggaXRzZWxmIGlzIHJlbmRlcmVkIGJ5IFRzaVRhYlZpZXdDb21wb25lbnQgaW4gdGhlIHRhYlxyXG4gICAgICAgIC8vIGhlYWRlcjsgZXhwb3NlIGl0cyBzdGF0ZSB0aHJvdWdoIHRoZSBzaGFwZSB0aGUgb3JjaGVzdHJhdG9ycyByZWFkIGF0XHJcbiAgICAgICAgLy8gc2F2ZSB0aW1lIChzaG93SGlkZUNoZWNrYm94Q29tcG9uZW50UmVmLmluc3RhbmNlLl9jaGVja2VkKS5cclxuICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMucGFuZWw7XHJcbiAgICAgICAgdGhpcy5zaG93SGlkZUNoZWNrYm94Q29tcG9uZW50UmVmID0ge1xyXG4gICAgICAgICAgICBpbnN0YW5jZToge1xyXG4gICAgICAgICAgICAgICAgZ2V0IF9jaGVja2VkKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYW5lbC5kZXNpZ25lckNoZWNrZWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnRhYlZpZXc/LnJlZnJlc2hUYWJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgcmVtb3ZlU2hvd0hpZGVDaGVja2JveCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBhbmVsLmRlc2lnbmVyQ2hlY2tib3hWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93SGlkZUNoZWNrYm94Q29tcG9uZW50UmVmID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNoZWNrYm94ZXNBZGRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGFiVmlldz8ucmVmcmVzaFRhYnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBkaXNhYmxlSW5wdXRzKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFRoZSBwYW5lbCBob3N0IGlzIGVtcHR5IGFuZCBkZXRhY2hlZCDigJQgdGhlcmUgYXJlIG5vIGlucHV0cyB0byByZWFjaFxyXG4gICAgICAgIC8vIGhlcmUuIElucHV0cyBpbnNpZGUgdGhlIHBhbmVsIGNvbnRlbnQgY2FycnkgdGhlaXIgb3duIGRpcmVjdGl2ZXMuXHJcbiAgICAgICAgdGhpcy5leGVjdXRlKHRydWUpXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRQYW5lbFZpc2libGUodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucGFuZWwudmlzaWJsZSA9IHZpc2libGU7XHJcbiAgICAgICAgdGhpcy50YWJWaWV3Py5yZWZyZXNoVGFicygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -389,7 +389,7 @@ const AdministrationEndpoints = {
389
389
  getSqlColumns: (businessClassName) => `${Segment.base}/${AdministrationSegments.entityInfoController}/${AdministrationSegments.sqlColumns}/${businessClassName}`,
390
390
  getWorkflowConditionPassageOperatorEnum: () => `${Segment.base}/${AdministrationSegments.workflow}/${AdministrationSegments.getWorkflowConditionPassageOperatorEnum}`,
391
391
  getConnectedUsers: () => `${Segment.base}/${AdministrationSegments.admin}/${AdministrationSegments.getConnectedUsers}`,
392
- getWorkflowEtatFormByClassName: (className) => `${Segment.base}/${AdministrationSegments.workflowEtat}/${AdministrationSegments.getWorkflowEtatFormByClassName}/${className}`,
392
+ getWorkflowEtatFormByClassName: (className, descriminatorValue) => `${Segment.base}/${AdministrationSegments.workflowEtat}/${AdministrationSegments.getWorkflowEtatFormByClassName}/${className}${descriminatorValue ? `/${descriminatorValue}` : ""}`,
393
393
  // getAlertByCodeModule: () => `${Segment.base}/${AdministrationSegments.alert}/${AdministrationSegments.getByCodeModule}`,
394
394
  getAlertByCodeModule: (codeModule, alertDisplay) => `${Segment.base}/${AdministrationSegments.alert}/${codeModule}/${alertDisplay}`,
395
395
  getColonnesByClassNameAsKeyValuePair: (parentEntityName, columnName) => `${Segment.base}/${AdministrationSegments.modeleImport}/${AdministrationSegments.colonneByClassNameAsKeyValuePair}/${parentEntityName}/${columnName}`,
@@ -2318,19 +2318,40 @@ class WorkflowConfigurationService {
2318
2318
  get isDesginModeFromWorkflow() {
2319
2319
  return this._isDesginModeFromWorkflow;
2320
2320
  }
2321
- set workflowEtatFormForCurrentForm(value) {
2322
- this._workflowEtatFormForCurrentForm = value;
2323
- }
2324
- get workflowEtatFormForCurrentForm() {
2325
- return this._workflowEtatFormForCurrentForm;
2321
+ _workflowEtatFormCacheKey(businessClass, descriminatorValue) {
2322
+ return descriminatorValue ? `${businessClass}::${descriminatorValue}` : businessClass;
2323
+ }
2324
+ /** Returns the cached rule set for a class(+discriminator) if present, without triggering a load. */
2325
+ getWorkflowEtatFormFromCacheSync(businessClass, descriminatorValue) {
2326
+ return businessClass ? this._workflowEtatFormDictionary.get(this._workflowEtatFormCacheKey(businessClass, descriminatorValue)) : undefined;
2327
+ }
2328
+ /** Returns the cached rule set for a class(+discriminator), loading and caching it on first request. Concurrent requests for the same key share one HTTP call. */
2329
+ async getWorkflowEtatFormForClassFromCache(businessClass, descriminatorValue) {
2330
+ const key = this._workflowEtatFormCacheKey(businessClass, descriminatorValue);
2331
+ const cached = this._workflowEtatFormDictionary.get(key);
2332
+ if (cached) {
2333
+ return cached;
2334
+ }
2335
+ let inFlight = this._workflowEtatFormInFlight.get(key);
2336
+ if (!inFlight) {
2337
+ inFlight = firstValueFrom(this.getWorkflowEtatFormByClassName(businessClass, descriminatorValue))
2338
+ .then(result => {
2339
+ this._workflowEtatFormDictionary.set(key, result);
2340
+ return result;
2341
+ })
2342
+ .finally(() => this._workflowEtatFormInFlight.delete(key));
2343
+ this._workflowEtatFormInFlight.set(key, inFlight);
2344
+ }
2345
+ return inFlight;
2326
2346
  }
2327
2347
  constructor(_httpClient) {
2328
2348
  this._httpClient = _httpClient;
2329
2349
  this._isDesginModeFromWorkflow = false;
2330
- this._workflowEtatFormForCurrentForm = [];
2350
+ this._workflowEtatFormDictionary = new Map();
2351
+ this._workflowEtatFormInFlight = new Map();
2331
2352
  }
2332
- getWorkflowEtatFormByClassName(className) {
2333
- return this._httpClient.get(AdministrationEndpoints.getWorkflowEtatFormByClassName(className));
2353
+ getWorkflowEtatFormByClassName(className, descriminatorValue) {
2354
+ return this._httpClient.get(AdministrationEndpoints.getWorkflowEtatFormByClassName(className, descriminatorValue));
2334
2355
  }
2335
2356
  getCurrentEntityWorklfowInstanceInformation(request) {
2336
2357
  return this._httpClient.post(AdministrationEndpoints.getEntityWorklfowInstanceInformation(), request);
@@ -2426,6 +2447,7 @@ class PresentationDesignerDirectiveBase {
2426
2447
  this._workflowConfigurationService = _workflowConfigurationService;
2427
2448
  this._presentationDesignerBaseService = _presentationDesignerBaseService;
2428
2449
  this.treated = false;
2450
+ this.checkboxesAdded = false;
2429
2451
  this.tempTemplateRef = el.nativeElement;
2430
2452
  this.nexSiblingOfElement = this.el.nativeElement?.nextSibling;
2431
2453
  this.tempTemplateParentNode = this.el.nativeElement?.parentNode;
@@ -2538,6 +2560,7 @@ class PresentationDesignerDirectiveBase {
2538
2560
  }
2539
2561
  this.renderer.removeClass(this.el.nativeElement, 'config-mode-border');
2540
2562
  this.viewContainerRef.clear();
2563
+ this.checkboxesAdded = false;
2541
2564
  }
2542
2565
  removeElement() {
2543
2566
  if (!this.tempTemplateRef) {
@@ -2610,6 +2633,10 @@ class PresentationDesignerDirectiveBase {
2610
2633
  });
2611
2634
  }
2612
2635
  addCheckboxesToInputs(presentationSetting) {
2636
+ if (this.checkboxesAdded) {
2637
+ return;
2638
+ }
2639
+ this.checkboxesAdded = true;
2613
2640
  if (!this._workflowConfigurationService.isDesginModeFromWorkflow) {
2614
2641
  this.showHideCheckboxComponentRef = this.viewContainerRef.createComponent(TsiCheckboxComponent);
2615
2642
  this.showHideCheckboxComponentRef.setInput("inputName", this.presentationDesigner);
@@ -2952,6 +2979,10 @@ class PresentationDesignerTabPanelDirective extends PresentationDesignerDirectiv
2952
2979
  this.setPanelVisible(false);
2953
2980
  }
2954
2981
  addCheckboxesToInputs(presentationSetting) {
2982
+ if (this.checkboxesAdded) {
2983
+ return;
2984
+ }
2985
+ this.checkboxesAdded = true;
2955
2986
  const isBlockVisible = presentationSetting?.presentationSettingDetails
2956
2987
  .find(x => x.blockName == this.presentationDesigner)?.isBlockVisible ?? true;
2957
2988
  this.panel.designerChecked = !isBlockVisible;
@@ -2972,6 +3003,7 @@ class PresentationDesignerTabPanelDirective extends PresentationDesignerDirectiv
2972
3003
  removeShowHideCheckbox() {
2973
3004
  this.panel.designerCheckboxVisible = false;
2974
3005
  this.showHideCheckboxComponentRef = null;
3006
+ this.checkboxesAdded = false;
2975
3007
  this.tabView?.refreshTabs();
2976
3008
  }
2977
3009
  disableInputs() {
@@ -14354,7 +14386,6 @@ class TsiGenericCrudComponent {
14354
14386
  this._formEndpoint = undefined;
14355
14387
  this.filterIcon = 'pi pi-filter';
14356
14388
  this.filterTooltip = 'show_filter';
14357
- this._isWorkflowEtatFormLoaded = false;
14358
14389
  this.buttonType = ButtonType;
14359
14390
  this.tooltipPosition = TooltipPosition;
14360
14391
  this.configModeButtonId = "confg-mode-button-from-list";
@@ -14447,41 +14478,11 @@ class TsiGenericCrudComponent {
14447
14478
  // ngAfterContentChecked(): void {
14448
14479
  // this._cdRef.detectChanges();
14449
14480
  // }
14450
- async getWorkflowEtatFormForCurrentBusinessClass() {
14451
- if (this.businessClass && !this._isWorkflowEtatFormLoaded) {
14452
- this._isWorkflowEtatFormLoaded = true;
14453
- try {
14454
- const result = await firstValueFrom(this._workflowConfigurationService.getWorkflowEtatFormByClassName(this.businessClass));
14455
- this._workflowConfigurationService.workflowEtatFormForCurrentForm = result;
14456
- }
14457
- catch (error) {
14458
- console.error('Error fetching workflow state form:', error);
14459
- }
14460
- }
14461
- }
14462
- async getWorkflowEntityInformation(businessClass, uidObject) {
14463
- let result = undefined;
14464
- try {
14465
- let request = new GetWorkflowInstanceInformationRequest();
14466
- request.className = businessClass;
14467
- request.uidObjet = uidObject;
14468
- request.discriminatorClassName = this.entityInfo?.discriminatorClassName;
14469
- request.discriminatorPropertyName = this.entityInfo?.discriminatorPropertyName;
14470
- request.discriminatorValue = this.descriminatorValue;
14471
- result = await firstValueFrom(this._workflowConfigurationService.getCurrentEntityWorklfowInstanceInformation(request));
14472
- // if (result) {
14473
- // let workflowEtatForm = this._workflowConfigurationService.workflowEtatFormForCurrentForm
14474
- // ?.find(x => x.uid == result?.workflowEtat)
14475
- // if (workflowEtatForm) {
14476
- // // this._workflowConfigurationService.workflowEtatForForCurrentEntityForm =
14477
- // // this._workflowConfigurationService.mapWorkflowEtatFormToPresentationSetting(workflowEtatForm.workflowEtatsForms)
14478
- // }
14479
- // }
14480
- }
14481
- catch (error) {
14482
- console.error(error);
14481
+ getWorkflowEtatFormForCurrentBusinessClass() {
14482
+ if (this.businessClass) {
14483
+ this._workflowConfigurationService.getWorkflowEtatFormForClassFromCache(this.businessClass, this.descriminatorValue)
14484
+ .catch(error => console.error('Error fetching workflow state form:', error));
14483
14485
  }
14484
- return result;
14485
14486
  }
14486
14487
  searchFieldValueChanges(newSearchFieldValues) {
14487
14488
  this.searchFieldsValueChanged.emit(newSearchFieldValues);
@@ -15011,11 +15012,9 @@ class TsiGenericCrudComponent {
15011
15012
  }
15012
15013
  async _openModal(mode, itemKey, data) {
15013
15014
  this.crudService.isDuplicate = mode === Modes.duplicate;
15014
- let workflowEntityInformation = undefined;
15015
15015
  if (this.businessClass) {
15016
15016
  try {
15017
15017
  this.entityInfo = await this._entityConfigService.getEntityInfoFromCache(this.businessClass);
15018
- workflowEntityInformation = await this.getWorkflowEntityInformation(this.businessClass, itemKey);
15019
15018
  }
15020
15019
  catch (error) {
15021
15020
  console.error(error);
@@ -15024,7 +15023,7 @@ class TsiGenericCrudComponent {
15024
15023
  let conf;
15025
15024
  if (this.modalSize != null && this.modalSize != undefined) {
15026
15025
  conf = {
15027
- data: { id: itemKey, mode: mode, customData: data, workflowInformation: workflowEntityInformation, entityInfo: this.entityInfo },
15026
+ data: { id: itemKey, mode: mode, customData: data, entityInfo: this.entityInfo },
15028
15027
  styleClass: '',
15029
15028
  width: this.modalSize.width,
15030
15029
  height: this.modalSize.height,
@@ -15036,7 +15035,7 @@ class TsiGenericCrudComponent {
15036
15035
  }
15037
15036
  else {
15038
15037
  conf = {
15039
- data: { id: itemKey, mode: mode, customData: data, workflowInformation: workflowEntityInformation },
15038
+ data: { id: itemKey, mode: mode, customData: data },
15040
15039
  maximizable: true,
15041
15040
  };
15042
15041
  }
@@ -17124,6 +17123,9 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17124
17123
  this._businessClass = value;
17125
17124
  this.formEndpoint = this.businessClass;
17126
17125
  this._genericValidationStateService?.loadEntityValidationInfos(this._businessClass);
17126
+ if (this._businessClass) {
17127
+ this._fetchWorkflowEntityInformation();
17128
+ }
17127
17129
  }
17128
17130
  set componentDescriminator(value) {
17129
17131
  this._componentDescriminator = value;
@@ -17136,7 +17138,12 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17136
17138
  this.directiveElements = [...this._presentationDesignerService.getDirectives(),
17137
17139
  ...this._presentationDesignerBaseService.getDirectives()
17138
17140
  ];
17139
- this.addInputs(this.presentationRequest, !this._layoutHelperService?.isDesignMode);
17141
+ this._ensureWorkflowDataReady().then(() => {
17142
+ this.directiveElements = [...this._presentationDesignerService.getDirectives(),
17143
+ ...this._presentationDesignerBaseService.getDirectives()
17144
+ ];
17145
+ this.addInputs(this.presentationRequest, !this._layoutHelperService?.isDesignMode);
17146
+ });
17140
17147
  // this._reportingService.getReportDecriminator(req).subscribe({
17141
17148
  // next: async (result) => {
17142
17149
  // this.descriminatorValue = result.propertyValue;
@@ -17170,6 +17177,15 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17170
17177
  set mode(value) {
17171
17178
  this._mode = value;
17172
17179
  }
17180
+ get id() {
17181
+ return this._id;
17182
+ }
17183
+ set id(value) {
17184
+ this._id = value;
17185
+ if (this.businessClass) {
17186
+ this._fetchWorkflowEntityInformation();
17187
+ }
17188
+ }
17173
17189
  set isloading(value) {
17174
17190
  this._isloading = value;
17175
17191
  console.log('isloading set to', value);
@@ -17258,7 +17274,7 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17258
17274
  this._initModalRef();
17259
17275
  this.initModalData();
17260
17276
  this._addedDirectiveSubscritpion = this._presentationDesignerService.addedDirectiveObservable
17261
- .subscribe(data => {
17277
+ .subscribe(async (data) => {
17262
17278
  if (data.treated) {
17263
17279
  return;
17264
17280
  }
@@ -17270,14 +17286,16 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17270
17286
  this.entityInfo = this._workflowConfigurationService.currentWorkflowEntityInfo;
17271
17287
  }
17272
17288
  if (!this.entityInfo?.discriminatorPropertyName && !this.entityInfo?.discriminatorClassName) {
17289
+ await this._ensureWorkflowDataReady();
17273
17290
  this.processSingleElement(data);
17274
17291
  }
17275
17292
  else if (this.descriminatorValue) {
17293
+ await this._ensureWorkflowDataReady();
17276
17294
  this.processSingleElement(data);
17277
17295
  }
17278
17296
  });
17279
17297
  this._addedDirectiveBaseSubscritpion = this._presentationDesignerBaseService.addedDirectiveObservable
17280
- .subscribe(data => {
17298
+ .subscribe(async (data) => {
17281
17299
  if (data.treated) {
17282
17300
  return;
17283
17301
  }
@@ -17289,9 +17307,11 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17289
17307
  this.entityInfo = this._workflowConfigurationService.currentWorkflowEntityInfo;
17290
17308
  }
17291
17309
  if (!this.entityInfo?.discriminatorPropertyName && !this.entityInfo?.discriminatorClassName) {
17310
+ await this._ensureWorkflowDataReady();
17292
17311
  this.processSingleElement(data);
17293
17312
  }
17294
17313
  else if (this.descriminatorValue) {
17314
+ await this._ensureWorkflowDataReady();
17295
17315
  this.processSingleElement(data);
17296
17316
  }
17297
17317
  });
@@ -17520,7 +17540,6 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17520
17540
  this.form.id = this.id;
17521
17541
  this.form.mode = this.mode;
17522
17542
  this.form.formEndpoint = this.formEndpoint;
17523
- this.refreshWorkflowInformation(this.id);
17524
17543
  }
17525
17544
  }
17526
17545
  if (this.form) {
@@ -17536,6 +17555,10 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17536
17555
  this.hide(apiResponse);
17537
17556
  }
17538
17557
  async openWorkflow() {
17558
+ if (!this.entityInfo?.isWorkflow) {
17559
+ this._messageInfoService.error('tsi_form_entity_not_marked_as_workflow');
17560
+ return;
17561
+ }
17539
17562
  const descriminator = this.form?.ignoreDescriminator ? undefined : this.descriminatorValue;
17540
17563
  try {
17541
17564
  const match = await firstValueFrom(this._workflowConfigurationService.getWorkflowByClasseAndDescriminator(this.businessClass, descriminator));
@@ -17545,33 +17568,60 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17545
17568
  : { data: { mode: Modes.create, customData: { workflow: { classe: this.businessClass, descriminatorValue: descriminator } } },
17546
17569
  styleClass: '', width: ModalSizeEnum.ExtraLarge.width, height: ModalSizeEnum.ExtraLarge.height, maximizable: true };
17547
17570
  const dialogRef = this._workflowModalService.open(TypeRegistryHelper.getType('CreateOrEditWorkflowsComponent'), conf);
17548
- dialogRef.onClose.subscribe(() => this.refreshWorkflowInformation(this.id));
17571
+ dialogRef.onClose.subscribe(() => this._fetchWorkflowEntityInformation());
17549
17572
  }
17550
17573
  catch (error) {
17551
17574
  console.error("Error when getting workflow information", error);
17552
17575
  }
17553
17576
  }
17554
- refreshWorkflowInformation(id) {
17577
+ _fetchWorkflowEntityInformation() {
17578
+ if (!this.businessClass)
17579
+ return Promise.resolve();
17580
+ if (!this._workflowEntityInformationPromise) {
17581
+ this._workflowEntityInformationPromise = this._fetchWorkflowEntityInformationCore()
17582
+ .finally(() => { this._workflowEntityInformationPromise = undefined; });
17583
+ }
17584
+ return this._workflowEntityInformationPromise;
17585
+ }
17586
+ async _fetchWorkflowEntityInformationCore() {
17587
+ await this.getEntityInformation(this.businessClass);
17588
+ const requiresDescriminator = !!(this.entityInfo?.discriminatorClassName || this.entityInfo?.discriminatorPropertyName);
17589
+ if (requiresDescriminator && !this.descriminatorValue) {
17590
+ return;
17591
+ }
17555
17592
  let request = new GetWorkflowInstanceInformationRequest();
17556
17593
  request.className = this.businessClass;
17557
- request.uidObjet = id;
17594
+ request.uidObjet = this.id;
17558
17595
  request.discriminatorClassName = this.entityInfo?.discriminatorClassName;
17559
17596
  request.discriminatorPropertyName = this.entityInfo?.discriminatorPropertyName;
17560
17597
  request.discriminatorValue = this.descriminatorValue;
17561
- this._workflowConfigurationService.getCurrentEntityWorklfowInstanceInformation(request).subscribe({
17562
- next: (response) => {
17563
- if (this.form) {
17564
- this.form.workflowInformation = response;
17565
- }
17566
- },
17567
- error: (error) => {
17568
- console.error("Error while getting workflowInformation", error);
17598
+ try {
17599
+ const response = await firstValueFrom(this._workflowConfigurationService.getCurrentEntityWorklfowInstanceInformation(request));
17600
+ this.workflowInformation = response;
17601
+ if (this.form) {
17602
+ this.form.workflowInformation = response ?? new workflowInstanceInformationResponse();
17569
17603
  }
17570
- });
17604
+ this.directiveElements = [...this._presentationDesignerService.getDirectives(),
17605
+ ...this._presentationDesignerBaseService.getDirectives()
17606
+ ];
17607
+ }
17608
+ catch (error) {
17609
+ console.error("Error while getting workflowInformation", error);
17610
+ }
17611
+ }
17612
+ async _ensureWorkflowDataReady() {
17613
+ if (!this.businessClass)
17614
+ return;
17615
+ await Promise.all([
17616
+ this._workflowConfigurationService.getWorkflowEtatFormForClassFromCache(this.businessClass, this.descriminatorValue).catch(error => {
17617
+ console.error("Error while getting workflow etat form configuration", error);
17618
+ }),
17619
+ this._fetchWorkflowEntityInformation()
17620
+ ]);
17571
17621
  }
17572
17622
  //#endregion traiter multiple combo
17573
17623
  getWorkflowEtatForm() {
17574
- let workflowEtatForm = this._workflowConfigurationService.workflowEtatFormForCurrentForm
17624
+ let workflowEtatForm = this._workflowConfigurationService.getWorkflowEtatFormFromCacheSync(this.businessClass, this.descriminatorValue)
17575
17625
  ?.find(x => x.uid == this.workflowInformation?.workflowEtat);
17576
17626
  if (workflowEtatForm) {
17577
17627
  let workflowEtat = this._workflowConfigurationService.mapWorkflowEtatFormToPresentationSetting(workflowEtatForm?.workflowEtatsForms);
@@ -17583,7 +17633,8 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17583
17633
  addInputs(presentationRequest, applyGridConfig = true, workflowEtat, directiveElements = this.directiveElements) {
17584
17634
  if ((!workflowEtat || workflowEtat.presentationSettingDetails.length == 0)
17585
17635
  && this.workflowInformation
17586
- && this.workflowInformation?.workflowEtat) {
17636
+ && this.workflowInformation?.workflowEtat
17637
+ && !this._workflowConfigurationService.isDesginModeFromWorkflow) {
17587
17638
  workflowEtat = this.getWorkflowEtatForm();
17588
17639
  }
17589
17640
  const hasPresentationRequest = presentationRequest?.presentationSettingDetails?.length > 0;
@@ -17594,7 +17645,7 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17594
17645
  directiveElements?.forEach(directive => {
17595
17646
  const presentationSettingDetail = presentationRequest.presentationSettingDetails.find(x => x.blockName == directive.presentationDesigner);
17596
17647
  if (presentationSettingDetail == undefined || presentationSettingDetail.isBlockVisible) {
17597
- let worfkflowEtatForm = this.getWorkflowEtatForm();
17648
+ let worfkflowEtatForm = this._workflowConfigurationService.isDesginModeFromWorkflow ? undefined : this.getWorkflowEtatForm();
17598
17649
  if (worfkflowEtatForm) {
17599
17650
  let workflowConfig = worfkflowEtatForm.presentationSettingDetails.find(x => x.blockName == directive.presentationDesigner);
17600
17651
  if (!workflowConfig) {
@@ -17709,7 +17760,7 @@ class TsiFormComponentBaseComponent extends AppBaseComponent {
17709
17760
  this.presentationRequest = this._presentationSettingService.getPresentationSettingByComponentIdentifierSync(this.getComponentIdentifier(), this.descriminatorValue) ?? new PresentationSetting();
17710
17761
  let presentationSettingDetail = this.presentationRequest?.presentationSettingDetails?.find(x => x.blockName == directive.presentationDesigner);
17711
17762
  if (presentationSettingDetail == undefined || presentationSettingDetail.isBlockVisible) {
17712
- let worfkflowEtatForm = this.getWorkflowEtatForm();
17763
+ let worfkflowEtatForm = this._workflowConfigurationService.isDesginModeFromWorkflow ? undefined : this.getWorkflowEtatForm();
17713
17764
  if (worfkflowEtatForm) {
17714
17765
  let workflowConfig = worfkflowEtatForm.presentationSettingDetails.find(x => x.blockName == directive.presentationDesigner);
17715
17766
  if (!workflowConfig) {