@smartbit4all/ng-client 2.1.3 → 2.2.0

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.
@@ -12,14 +12,31 @@ let SmartComponentApiClient = class SmartComponentApiClient {
12
12
  this.pageName = pageName;
13
13
  this._destroy$ = new Subject();
14
14
  this.sendDataChanges = false;
15
- this._useAutoSubmit = false;
16
- this._useAutoSubmitTurnedOff = new SmartSubject(this._destroy$);
15
+ // private _useAutoSubmit: boolean = false;
16
+ // private _useAutoSubmitTurnedOff: Subject<void> = new SmartSubject(this._destroy$);
17
+ // protected get useAutoSubmit(): boolean {
18
+ // return this._useAutoSubmit;
19
+ // }
20
+ // protected set useAutoSubmit(useAutoSubmit: boolean) {
21
+ // this._useAutoSubmit = useAutoSubmit;
22
+ // if (this._useAutoSubmit) {
23
+ // this.subscribeToAutoSubmit();
24
+ // this.reSubscribeToChange.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {
25
+ // this.subscribeToAutoSubmit();
26
+ // });
27
+ // } else {
28
+ // this._useAutoSubmitTurnedOff.next();
29
+ // }
30
+ // }
31
+ // private subscribeToAutoSubmit(): void {
32
+ // this.submit.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {
33
+ // this.submitForms();
34
+ // this.submit.complete();
35
+ // });
36
+ // }
17
37
  this.detectChange = new SmartSubject(this._destroy$);
18
38
  this.uiActionModels = [];
19
39
  this.dataChanged = new SmartSubject(this._destroy$);
20
- // UseUiAction
21
- this.submit = new SmartSubject(this._destroy$);
22
- this.reSubscribeToChange = new SmartSubject(this._destroy$);
23
40
  // Contained Widgets
24
41
  this.widgets = new WidgetMap();
25
42
  this.formWidgets = new WidgetMap();
@@ -30,27 +47,6 @@ let SmartComponentApiClient = class SmartComponentApiClient {
30
47
  this.uiActionService = inject.get(UiActionService);
31
48
  this.uiActionDescriptorService = inject.get(UiActionDescriptorService);
32
49
  }
33
- get useAutoSubmit() {
34
- return this._useAutoSubmit;
35
- }
36
- set useAutoSubmit(useAutoSubmit) {
37
- this._useAutoSubmit = useAutoSubmit;
38
- if (this._useAutoSubmit) {
39
- this.subscribeToAutoSubmit();
40
- this.reSubscribeToChange.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {
41
- this.subscribeToAutoSubmit();
42
- });
43
- }
44
- else {
45
- this._useAutoSubmitTurnedOff.next();
46
- }
47
- }
48
- subscribeToAutoSubmit() {
49
- this.submit.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {
50
- this.submitForms();
51
- this.submit.complete();
52
- });
53
- }
54
50
  get uuid() {
55
51
  return this._uuid;
56
52
  }
@@ -159,6 +155,9 @@ let SmartComponentApiClient = class SmartComponentApiClient {
159
155
  getModel() {
160
156
  return this.data;
161
157
  }
158
+ submitForm(validate) {
159
+ this.submitForms(validate);
160
+ }
162
161
  async performUiActionRequest(uiActionRequest, widgetId, nodeId) {
163
162
  if (uiActionRequest.params['_files']) {
164
163
  const param = uiActionRequest.params['param'];
@@ -191,9 +190,9 @@ let SmartComponentApiClient = class SmartComponentApiClient {
191
190
  /**
192
191
  * Submits all the registered forms in the SmartComponent
193
192
  */
194
- submitForms() {
193
+ submitForms(validate) {
195
194
  Object.keys(this.formWidgets.widgets).map((key) => {
196
- this.formWidgets.widgets.get(key)?.submitForm();
195
+ this.formWidgets.widgets.get(key)?.submitForm(validate);
197
196
  });
198
197
  }
199
198
  addGrid(smartGrid, options, useAsDefaultGrid, componentReference) {
@@ -397,4 +396,4 @@ export class WidgetMap {
397
396
  return this.widgets.get(key);
398
397
  }
399
398
  }
400
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUlMLGNBQWMsRUFFZCx1QkFBdUIsRUFHdkIseUJBQXlCLEVBR3pCLGVBQWUsR0FHaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUdsQyxJQUFzQix1QkFBdUIsR0FBN0MsTUFBc0IsdUJBQXVCO0lBMkgzQyxZQUNZLE1BQWdCLEVBQ2hCLElBQXlDLEVBQ3JCLFFBQWdCO1FBRnBDLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBcUM7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQTdIdEMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXpDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRW5DLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLDRCQUF1QixHQUFrQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUF3QjFFLGlCQUFZLEdBQXVDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQTBEckYsbUJBQWMsR0FBb0IsRUFBRSxDQUFD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QXVCO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFDRCxTQUFTLENBQUMsR0FBVyxFQUFFLFNBQVksRUFBRSxNQUFnQjtRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELFlBQVksQ0FBQyxHQUFXO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU21hcnRGb3JtLCBTbWFydGZvcm1Db21wb25lbnQsIFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZm9ybSc7XHJcbmltcG9ydCB7IEdyaWRPcHRpb25zLCBTbWFydEdyaWQsIFNtYXJ0R3JpZENvbXBvbmVudCB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZ3JpZCc7XHJcbmltcG9ydCB7IFNtYXJ0U3ViamVjdCB9IGZyb20gJ0BzbWFydGJpdDRhbGwvc3ViamVjdCc7XHJcbmltcG9ydCB7IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtdHJlZS9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50TW9kZWwsXHJcbiAgQ29tcG9uZW50TW9kZWxDaGFuZ2UsXHJcbiAgRGF0YUNoYW5nZSxcclxuICBEYXRhQ2hhbmdlS2luZCxcclxuICBTbWFydFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXHJcbiAgVWlBY3Rpb24sXHJcbiAgVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zLFxyXG4gIFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UsXHJcbiAgVWlBY3Rpb25Nb2RlbCxcclxuICBVaUFjdGlvblJlcXVlc3QsXHJcbiAgVWlBY3Rpb25TZXJ2aWNlLFxyXG4gIFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZSxcclxuICBVc2VVaUFjdGlvbixcclxufSBmcm9tICcuLi92aWV3LWNvbnRleHQvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTbWFydEF1dGhlbnRpY2F0aW9uU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4vc21hcnQtYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU21hcnRDb21wb25lbnRBcGlDbGllbnQ8VD4gaW1wbGVtZW50cyBVc2VVaUFjdGlvbiB7XHJcbiAgcHJvdGVjdGVkIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHByb3RlY3RlZCBzZW5kRGF0YUNoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfdXNlQXV0b1N1Ym1pdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3VzZUF1dG9TdWJtaXRUdXJuZWRPZmY6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgcHJvdGVjdGVkIGdldCB1c2VBdXRvU3VibWl0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZUF1dG9TdWJtaXQ7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBzZXQgdXNlQXV0b1N1Ym1pdCh1c2VBdXRvU3VibWl0OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl91c2VBdXRvU3VibWl0ID0gdXNlQXV0b1N1Ym1pdDtcclxuICAgIGlmICh0aGlzLl91c2VBdXRvU3VibWl0KSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9BdXRvU3VibWl0KCk7XHJcbiAgICAgIHRoaXMucmVTdWJzY3JpYmVUb0NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91c2VBdXRvU3VibWl0VHVybmVkT2ZmKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnN1YnNjcmliZVRvQXV0b1N1Ym1pdCgpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3VzZUF1dG9TdWJtaXRUdXJuZWRPZmYubmV4dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0F1dG9TdWJtaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1Ym1pdC5waXBlKHRha2VVbnRpbCh0aGlzLl91c2VBdXRvU3VibWl0VHVybmVkT2ZmKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zdWJtaXRGb3JtcygpO1xyXG4gICAgICB0aGlzLnN1Ym1pdC5jb21wbGV0ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRldGVjdENoYW5nZTogU21hcnRTdWJqZWN0PENvbXBvbmVudE1vZGVsQ2hhbmdlPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG5cclxuICBwcml2YXRlIF91dWlkPzogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgZ2V0IHV1aWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl91dWlkO1xyXG4gIH1cclxuICBzZXQgdXVpZCh1dWlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIGxldCBmaXJzdFV1aWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMudXVpZCkge1xyXG4gICAgICB0aGlzLnZpZXdDb250ZXh0LnVuZm9sbG93KHRoaXMudXVpZCk7XHJcbiAgICAgIGZpcnN0VXVpZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdXVpZCA9IHV1aWQ7XHJcbiAgICBpZiAodXVpZCkge1xyXG4gICAgICB0aGlzLndpZGdldHMud2lkZ2V0cy5mb3JFYWNoKChyZWYsIGtleSkgPT4ge1xyXG4gICAgICAgIGlmIChyZWYgaW5zdGFuY2VvZiBTbWFydEdyaWRDb21wb25lbnQpIHtcclxuICAgICAgICAgIHJlZi51dWlkID0gdXVpZDtcclxuICAgICAgICB9IGVsc2UgaWYgKCFyZWYgJiYgIWZpcnN0VXVpZCkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgUHJvdmlkZWQgcmVmZXJlbmNlIGZvciAke2tleX0gaXMgdW5kZWZpbmVkIG9uIHV1aWQgY2hhbmdlLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghdGhpcy51dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWRTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLnV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZFN1YnNjcmlwdGlvbiA9IHRoaXMudmlld0NvbnRleHQudXVpZE9mUGFnZUhhc0JlZW5DaGFuZ2VkXHJcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocGFnZU5hbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHBhZ2VOYW1lID09PSB0aGlzLnBhZ2VOYW1lKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ydW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudmlld0NvbnRleHQuZm9sbG93KHRoaXMuX3V1aWQhLCB0aGlzLmRldGVjdENoYW5nZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9tb2RlbDogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGdldCBtb2RlbCgpOiBDb21wb25lbnRNb2RlbCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW9kZWw7XHJcbiAgfVxyXG4gIHNldCBtb2RlbChtb2RlbDogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgdGhpcy5pbml0Q29tcG9uZW50QnlNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF0YT86IFQ7XHJcblxyXG4gIGdldCBkYXRhKCk6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG4gIHNldCBkYXRhKG1vZGVsOiBUIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gbW9kZWw7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2VkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1aUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdID0gW107XHJcblxyXG4gIHB1YmxpYyBkYXRhQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG5cclxuICAvLyBVc2VVaUFjdGlvblxyXG4gIHN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG4gIHJlU3Vic2NyaWJlVG9DaGFuZ2U6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgLy8gR3JpZFxyXG4gIHNtYXJ0R3JpZD86IFNtYXJ0R3JpZDtcclxuXHJcbiAgLy8gU2VydmljZXNcclxuICBwcm90ZWN0ZWQgdmlld0NvbnRleHQ6IFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCB1aUFjdGlvblNlcnZpY2U6IFVpQWN0aW9uU2VydmljZTtcclxuICBwcm90ZWN0ZWQgdWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlPzogU21hcnRUcmFuc2xhdGVTZXJ2aWNlO1xyXG5cclxuICAvLyBUcmVlXHJcbiAgcHJpdmF0ZSBfc21hcnRUcmVlU2VydmljZT86IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlO1xyXG5cclxuICBwdWJsaWMgZ2V0IHNtYXJ0VHJlZVNlcnZpY2UoKTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2U7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgc21hcnRUcmVlU2VydmljZShzbWFydFRyZWVTZXJ2aWNlOiBTbWFydHRyZWVHZW5lcmljU2VydmljZSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBFcnJvcignVGhlIGRlZmF1bHQgdHJlZSBoYXMgYWxyZWFkeSBzZXQgdXAhJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zbWFydFRyZWVTZXJ2aWNlID0gc21hcnRUcmVlU2VydmljZTtcclxuICB9XHJcblxyXG4gIC8vIENvbnRhaW5lZCBXaWRnZXRzXHJcbiAgd2lkZ2V0czogV2lkZ2V0TWFwPFNtYXJ0R3JpZENvbXBvbmVudCB8IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHwgdW5kZWZpbmVkPiA9IG5ldyBXaWRnZXRNYXAoKTtcclxuXHJcbiAgZm9ybVdpZGdldHM6IFdpZGdldE1hcDxTbWFydGZvcm1Db21wb25lbnQgfCB1bmRlZmluZWQ+ID0gbmV3IFdpZGdldE1hcCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBpbmplY3Q6IEluamVjdG9yLFxyXG4gICAgcHJvdGVjdGVkIGF1dGg6IFNtYXJ0QXV0aGVudGljYXRpb25TZXJ2aWNlSW50ZXJmYWNlLFxyXG4gICAgQEluamVjdCgncGFnZU5hbWUnKSBwcm90ZWN0ZWQgcGFnZU5hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgdGhpcy5kZXRlY3RDaGFuZ2Uuc3Vic2NyaWJlKChjaGFuZ2U6IENvbXBvbmVudE1vZGVsQ2hhbmdlKSA9PiB7XHJcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlcyhjaGFuZ2UpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy52aWV3Q29udGV4dCA9IGluamVjdC5nZXQoU21hcnRWaWV3Q29udGV4dFNlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMudWlBY3Rpb25TZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIF9uZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucnVuKCk7XHJcbiAgfVxyXG4gIF9uZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld0NvbnRleHQudW5mb2xsb3codGhpcy51dWlkISk7XHJcbiAgICB0aGlzLndpZGdldHMuY2xlYXJXaWRnZXRzKCk7XHJcblxyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGluaXRDb21wb25lbnRCeU1vZGVsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0RGF0YSgpO1xyXG4gICAgdGhpcy5pbml0QWN0aW9ucygpO1xyXG5cclxuICAgIC8vIFRPRE86IGxheW91dCwgdmFsdWVTZXQsIHdpZGdldHNcclxuICB9XHJcblxyXG4gIGluaXREYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZWw/LmRhdGEpIHtcclxuICAgICAgdGhpcy5kYXRhID0gdGhpcy5tb2RlbD8uZGF0YSBhcyBhbnk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0QWN0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vZGVsPy5hY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB0aGlzLm1vZGVsPy5hY3Rpb25zLm1hcCgodWlBY3Rpb246IFVpQWN0aW9uKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHNlcnZpY2VUb1VzZTogdGhpcyxcclxuICAgICAgICAgIHVpQWN0aW9uLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcnVuKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXV0aC5iZmZBcGlzSGF2ZUJlZW5TZXRVcCkge1xyXG4gICAgICB0aGlzLmxvYWQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXV0aC5oZWFkZXJzVXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnV1aWQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFV1aWRPZlBhZ2UodGhpcy5wYWdlTmFtZSk7XHJcbiAgICB0aGlzLm1vZGVsID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5sb2FkKHRoaXMudXVpZCk7XHJcbiAgICAvLyBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmxvYWQyKHRoaXMudXVpZCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gVXNlVWlBY3Rpb25cclxuICBnZXRBZGRpdGlvbmFsUGFyYW1zKHVpQWN0aW9uOiBVaUFjdGlvbik6IFVpQWN0aW9uQWRkaXRpb25hbFBhcmFtcyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBmb3JUZXh0QXJlYTogJycsXHJcbiAgICAgIGZvclRleHRGaWVsZDogJycsXHJcbiAgICB9O1xyXG4gIH1cclxuICBnZXRNb2RlbCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE7XHJcbiAgfVxyXG5cclxuICBhc3luYyBwZXJmb3JtVWlBY3Rpb25SZXF1ZXN0KFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QsXHJcbiAgICB3aWRnZXRJZD86IHN0cmluZyxcclxuICAgIG5vZGVJZD86IHN0cmluZ1xyXG4gICk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAodWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snX2ZpbGVzJ10pIHtcclxuICAgICAgY29uc3QgcGFyYW0gPSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydwYXJhbSddO1xyXG4gICAgICBjb25zdCBmaWxlcyA9IHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ19maWxlcyddO1xyXG4gICAgICBjb25zdCBpc011bHRpcGxlID0gdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snaXNNdWx0aXBsZSddO1xyXG4gICAgICBkZWxldGUgdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1sncGFyYW0nXTtcclxuICAgICAgZGVsZXRlIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ19maWxlcyddO1xyXG4gICAgICBkZWxldGUgdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snaXNNdWx0aXBsZSddO1xyXG5cclxuICAgICAgaWYgKCFpc011bHRpcGxlKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtVXBsb2FkQWN0aW9uKHRoaXMudXVpZCEsIHVpQWN0aW9uUmVxdWVzdCwgcGFyYW0sIGZpbGVzWzBdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1VcGxvYWRNdWx0aXBsZUFjdGlvbihcclxuICAgICAgICAgIHRoaXMudXVpZCEsXHJcbiAgICAgICAgICB1aUFjdGlvblJlcXVlc3QsXHJcbiAgICAgICAgICBwYXJhbSxcclxuICAgICAgICAgIGZpbGVzXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh3aWRnZXRJZCAmJiBub2RlSWQpIHtcclxuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtV2lkZ2V0QWN0aW9uKHRoaXMudXVpZCEsIHdpZGdldElkLCBub2RlSWQsIHVpQWN0aW9uUmVxdWVzdCk7XHJcbiAgICB9IGVsc2UgaWYgKHdpZGdldElkKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMudmlld0NvbnRleHQucGVyZm9ybVdpZGdldE1haW5BY3Rpb24odGhpcy51dWlkISwgd2lkZ2V0SWQsIHVpQWN0aW9uUmVxdWVzdCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1BY3Rpb24odGhpcy51dWlkISwgdWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5KFxyXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuICApOiBQcm9taXNlPFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZT4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdoYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseSBtZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLyoqXHJcbiAgICogU3VibWl0cyBhbGwgdGhlIHJlZ2lzdGVyZWQgZm9ybXMgaW4gdGhlIFNtYXJ0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgcHVibGljIHN1Ym1pdEZvcm1zKCk6IHZvaWQge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtV2lkZ2V0cy53aWRnZXRzKS5tYXAoKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybVdpZGdldHMud2lkZ2V0cy5nZXQoa2V5KT8uc3VibWl0Rm9ybSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkR3JpZChcclxuICAgIHNtYXJ0R3JpZDogU21hcnRHcmlkLFxyXG4gICAgb3B0aW9uczogR3JpZE9wdGlvbnMsXHJcbiAgICB1c2VBc0RlZmF1bHRHcmlkPzogYm9vbGVhbixcclxuICAgIGNvbXBvbmVudFJlZmVyZW5jZT86IFNtYXJ0R3JpZENvbXBvbmVudFxyXG4gICk6IFNtYXJ0R3JpZCB7XHJcbiAgICBzbWFydEdyaWQub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICBzbWFydEdyaWQudWlBY3Rpb25TZXJ2aWNlID0gdGhpcy51aUFjdGlvblNlcnZpY2U7XHJcbiAgICBzbWFydEdyaWQudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSA9IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICAgIHNtYXJ0R3JpZC5zZXJ2aWNlVG9Vc2UgPSB0aGlzO1xyXG4gICAgc21hcnRHcmlkLnZpZXdDb250ZXh0U2VydmljZSA9IHRoaXMudmlld0NvbnRleHQ7XHJcblxyXG4gICAgdGhpcy53aWRnZXRzLmFkZFdpZGdldChzbWFydEdyaWQuZ3JpZElkZW50aWZpZXIsIGNvbXBvbmVudFJlZmVyZW5jZSk7XHJcblxyXG4gICAgaWYgKHVzZUFzRGVmYXVsdEdyaWQpIHtcclxuICAgICAgdGhpcy5zbWFydEdyaWQgPSBzbWFydEdyaWQ7XHJcbiAgICAgIHJldHVybiB0aGlzLnNtYXJ0R3JpZDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc21hcnRHcmlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEZvcm0oXHJcbiAgICBzbWFydEZvcm1JZDogc3RyaW5nLFxyXG4gICAgc21hcnRGb3JtOiBTbWFydEZvcm0sXHJcbiAgICBjb21wb25lbnRSZWZlcmVuY2U/OiBTbWFydGZvcm1Db21wb25lbnRcclxuICApOiBTbWFydEZvcm0ge1xyXG4gICAgdGhpcy5mb3JtV2lkZ2V0cy5hZGRXaWRnZXQoc21hcnRGb3JtSWQsIGNvbXBvbmVudFJlZmVyZW5jZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VuZERhdGFDaGFuZ2VzICYmIGNvbXBvbmVudFJlZmVyZW5jZSkge1xyXG4gICAgICBzbWFydEZvcm0udXNlT25WYWx1ZUNoYW5nZUV2ZW50ID0gdHJ1ZTtcclxuXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZS5zb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2VcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlQ2hhbmdlOiBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVDaGFuZ2VzKHZhbHVlQ2hhbmdlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc21hcnRGb3JtO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFVwRGVmYXVsdFRyZWUodHJlZUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRUcmVlU2VydmljZSA9IG5ldyBTbWFydHRyZWVHZW5lcmljU2VydmljZSh0aGlzLmluamVjdCwgdGhpcy5wYWdlTmFtZSwgdHJlZUlkKTtcclxuICAgIHRoaXMud2lkZ2V0cy5hZGRXaWRnZXQodHJlZUlkLCB0aGlzLnNtYXJ0VHJlZVNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZVRyZWVTZXJ2aWNlKHRyZWVJZDogc3RyaW5nKTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2Uge1xyXG4gICAgY29uc3QgdHJlZVNlcnZpY2UgPSBuZXcgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UodGhpcy5pbmplY3QsIHRoaXMucGFnZU5hbWUsIHRyZWVJZCk7XHJcbiAgICB0aGlzLndpZGdldHMuYWRkV2lkZ2V0KHRyZWVJZCwgdHJlZVNlcnZpY2UpO1xyXG5cclxuICAgIHJldHVybiB0cmVlU2VydmljZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRGaWxlVXBsb2FkZXIoXHJcbiAgICB1aUFjdGlvbkNvZGU6IHN0cmluZyxcclxuICAgIGZpbGVGb3JtYXRzPzogc3RyaW5nW10sXHJcbiAgICBtYXhTaXplTWI/OiBudW1iZXIsXHJcbiAgICBpc011bHRpcGxlPzogYm9vbGVhblxyXG4gICk6IFNtYXJ0RmlsZVVwbG9hZGVyIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpQWN0aW9uQ29kZSxcclxuICAgICAgc21hcnRDb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGZpbGVGb3JtYXRzLFxyXG4gICAgICBpc011bHRpcGxlLFxyXG4gICAgICBtYXhTaXplTWIsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBoYW5kbGUgY2hhbmdlc1xyXG4gIHByaXZhdGUgaGFuZGxlVmFsdWVDaGFuZ2VzKHZhbHVlQ2hhbmdlOiBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UpOiB2b2lkIHtcclxuICAgIGxldCBkYXRhQ2hhbmdlOiBEYXRhQ2hhbmdlO1xyXG4gICAgaWYgKHZhbHVlQ2hhbmdlLmtleS5pbmNsdWRlcygnLicpKSB7XHJcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHZhbHVlQ2hhbmdlLmtleS5zcGxpdCgnLicpWzBdO1xyXG4gICAgICBjb25zdCB2YWx1ZUtleSA9IHZhbHVlQ2hhbmdlLmtleS5zcGxpdCgnLicpWzFdO1xyXG4gICAgICBkYXRhQ2hhbmdlID0ge1xyXG4gICAgICAgIGtpbmQ6IHZhbHVlQ2hhbmdlLmtpbmQgPT09ICdiYXNpYycgPyBEYXRhQ2hhbmdlS2luZC5XaWRnZXQgOiBEYXRhQ2hhbmdlS2luZC5TZWxlY3Rpb24sXHJcbiAgICAgICAgc291cmNlLFxyXG4gICAgICAgIHZhbHVlczogW1t2YWx1ZUtleSwgdmFsdWVDaGFuZ2UudmFsdWVdXSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGFDaGFuZ2UgPSB7XHJcbiAgICAgICAga2luZDogdmFsdWVDaGFuZ2Uua2luZCA9PT0gJ2Jhc2ljJyA/IERhdGFDaGFuZ2VLaW5kLldpZGdldCA6IERhdGFDaGFuZ2VLaW5kLlNlbGVjdGlvbixcclxuICAgICAgICBzb3VyY2U6IHZhbHVlQ2hhbmdlLmtleSxcclxuICAgICAgICB2YWx1ZXM6IFtbdmFsdWVDaGFuZ2Uua2V5LCB2YWx1ZUNoYW5nZS52YWx1ZV1dLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlld0NvbnRleHQuZGF0YUNoYW5nZWQodGhpcy51dWlkISwgZGF0YUNoYW5nZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUNoYW5nZXMoY2hhbmdlOiBDb21wb25lbnRNb2RlbENoYW5nZSk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VkV2lkZ2V0cykge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlV2lkZ2V0cyhjaGFuZ2UuY2hhbmdlZFdpZGdldHMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZGF0YUNoYW5nZUhhc0JlZW5OZXh0ZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VzKSB7XHJcbiAgICAgICAgY29uc3QgY2hhbmdlcyA9IGNoYW5nZS5jaGFuZ2VzO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGNoYW5nZXMpLm1hcCgoY2hhbmdlS2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnZGF0YS4nKSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZURhdGFDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5LnN0YXJ0c1dpdGgoJ2xheW91dHMuJykgJiYgdGhpcy5tb2RlbD8ubGF5b3V0cykge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUxheW91dENoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnY29tcG9uZW50TGF5b3V0cy4nKSAmJiB0aGlzLm1vZGVsPy5sYXlvdXRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29tcG9uZW50TGF5b3V0Q2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZUtleS5zdGFydHNXaXRoKCd2YWx1ZVNldHMuJykgJiYgdGhpcy5tb2RlbD8udmFsdWVTZXRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVTZXRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnYWN0aW9ucycpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVBY3Rpb25DaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnY29uc3RyYWludHMnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29uc3RyYWludENoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBjaGFuZ2VzWycnXSBhcyBDb21wb25lbnRNb2RlbDtcclxuICAgICAgICAgICAgZGF0YUNoYW5nZUhhc0JlZW5OZXh0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoIWRhdGFDaGFuZ2VIYXNCZWVuTmV4dGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2VkLm5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB0aGlzLm1vZGVsID0gY2hhbmdlLnZhbHVlIGFzIENvbXBvbmVudE1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghY2hhbmdlLmNoYW5nZWRXaWRnZXRzICYmICFjaGFuZ2UuY2hhbmdlcyAmJiBjaGFuZ2UudmFsdWUpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IGNoYW5nZS52YWx1ZSBhcyBDb21wb25lbnRNb2RlbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ2hhbmdlV2lkZ2V0cyhjaGFuZ2VkV2lkZ2V0czogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGNoYW5nZWRXaWRnZXRzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMud2lkZ2V0cy5nZXQoa2V5KTtcclxuXHJcbiAgICAgIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiBTbWFydEdyaWRDb21wb25lbnQpIHtcclxuICAgICAgICByZWZlcmVuY2UucmVmcmVzaCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlKSB7XHJcbiAgICAgICAgcmVmZXJlbmNlLmluaXRpYWxpemUoKTtcclxuICAgICAgfSBlbHNlIGlmIChyZWZlcmVuY2UgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFByb3ZpZGVkIHJlZmVyZW5jZSBmb3IgJHtrZXl9IGlzIHVuZGVmaW5lZC5gKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFZhbHVlRGVlcGx5KG1vZGVsOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcclxuICAgIGxldCBzcGxpdHRlZEtleXMgPSBrZXkuc3BsaXQoJy4nKTtcclxuXHJcbiAgICBsZXQgZGVlcE1vZGVsOiBhbnlbXSA9IFttb2RlbF07XHJcbiAgICBsZXQgdGVtcE1vZGVsOiBhbnk7XHJcblxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNwbGl0dGVkS2V5cy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdGVtcE1vZGVsID0gZGVlcE1vZGVsW2luZGV4XTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnc3RyaW5nJyAmJlxyXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdib29sZWFuJyAmJlxyXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdudW1iZXInICYmXHJcbiAgICAgICAgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgZGVlcE1vZGVsLnB1c2godGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGluZGV4ID09PSBzcGxpdHRlZEtleXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSA9IHZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZURhdGFDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0VmFsdWVEZWVwbHkodGhpcy5tb2RlbCwgY2hhbmdlS2V5LCBjaGFuZ2VzW2NoYW5nZUtleV0pO1xyXG5cclxuICAgIHRoaXMuZm9ybVdpZGdldHMud2lkZ2V0cy5mb3JFYWNoKFxyXG4gICAgICAoZm9ybUNvbXBvbmVudDogU21hcnRmb3JtQ29tcG9uZW50IHwgdW5kZWZpbmVkLCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChmb3JtQ29tcG9uZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFByb3ZpZGVkIGZvcm0gcmVmZXJlbmNlIGZvciAke2tleX0gaXMgdW5kZWZpbmVkLmApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3JtQ29tcG9uZW50LnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUxheW91dENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGxheW91dEtleSA9IGNoYW5nZUtleS5zcGxpdCgnLicpWzFdO1xyXG4gICAgdGhpcy5tb2RlbCEubGF5b3V0c1tsYXlvdXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVDb21wb25lbnRMYXlvdXRDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBsYXlvdXRLZXkgPSBjaGFuZ2VLZXkuc3BsaXQoJy4nKVsxXTtcclxuICAgIGxldCBjb21wb25lbnRMYXlvdXRzOiB7IFtrZXk6IHN0cmluZ106IE9iamVjdCB9ID0gdGhpcy5tb2RlbCEuY29tcG9uZW50TGF5b3V0cyBhcyB7XHJcbiAgICAgIFtrZXk6IHN0cmluZ106IE9iamVjdDtcclxuICAgIH07XHJcbiAgICBjb21wb25lbnRMYXlvdXRzW2xheW91dEtleV0gPSBjaGFuZ2VzW2NoYW5nZUtleV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVZhbHVlU2V0Q2hhbmdlKGNoYW5nZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNoYW5nZUtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgdmFsdWVTZXRLZXkgPSBjaGFuZ2VLZXkuc3BsaXQoJy4nKVsxXTtcclxuICAgIHRoaXMubW9kZWwhLnZhbHVlU2V0cyFbdmFsdWVTZXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVBY3Rpb25DaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwhLmFjdGlvbnMgPSBjaGFuZ2VzW2NoYW5nZUtleV07XHJcbiAgICB0aGlzLmluaXRBY3Rpb25zKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUNvbnN0cmFpbnRDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwhLmNvbnN0cmFpbnRzID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwPFQ+IHtcclxuICBwcml2YXRlIF93aWRnZXRzOiBNYXA8c3RyaW5nLCBUPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgZ2V0IHdpZGdldHMoKTogTWFwPHN0cmluZywgVD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldHM7XHJcbiAgfVxyXG4gIHNldCB3aWRnZXRzKHdpZGdldHM6IE1hcDxzdHJpbmcsIFQ+KSB7XHJcbiAgICB0aGlzLl93aWRnZXRzID0gd2lkZ2V0cztcclxuICB9XHJcbiAgYWRkV2lkZ2V0KGtleTogc3RyaW5nLCByZWZlcmVuY2U6IFQsIGlzRm9ybT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3dpZGdldHMuc2V0KGtleSwgcmVmZXJlbmNlKTtcclxuICB9XHJcbiAgcmVtb3ZlV2lkZ2V0KGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl93aWRnZXRzLmRlbGV0ZShrZXkpO1xyXG4gIH1cclxuICBjbGVhcldpZGdldHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl93aWRnZXRzLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBnZXQoa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLndpZGdldHMuZ2V0KGtleSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0RmlsZVVwbG9hZGVyIHtcclxuICB1aUFjdGlvbkNvZGU6IHN0cmluZztcclxuICBtYXhTaXplTWI/OiBudW1iZXI7XHJcbiAgZmlsZUZvcm1hdHM/OiBzdHJpbmdbXTtcclxuICBpc011bHRpcGxlPzogYm9vbGVhbjtcclxuICBzbWFydENvbXBvbmVudDogU21hcnRDb21wb25lbnRBcGlDbGllbnQ8YW55PjtcclxufVxyXG4iXX0=
399
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jbGllbnQvc21hcnQtY29tcG9uZW50LWFwaS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUlMLGNBQWMsRUFFZCx1QkFBdUIsRUFHdkIseUJBQXlCLEVBR3pCLGVBQWUsR0FHaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUdsQyxJQUFzQix1QkFBdUIsR0FBN0MsTUFBc0IsdUJBQXVCO0lBMkgzQyxZQUNZLE1BQWdCLEVBQ2hCLElBQXlDLEVBQ3JCLFFBQWdCO1FBRnBDLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEIsU0FBSSxHQUFKLElBQUksQ0FBcUM7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQTdIdEMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXpDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRTNDLDJDQUEyQztRQUMzQyxxRkFBcUY7UUFFckYsMkNBQTJDO1FBQzNDLGdDQUFnQztRQUNoQyxJQUFJO1FBQ0osd0RBQXdEO1FBQ3hELHlDQUF5QztRQUN6QywrQkFBK0I7UUFDL0Isb0NBQW9DO1FBQ3BDLCtGQUErRjtRQUMvRixzQ0FBc0M7UUFDdEMsVUFBVTtRQUNWLGFBQWE7UUFDYiwyQ0FBMkM7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QUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE9BQStCLEVBQUUsU0FBaUI7UUFDL0UsSUFBSSxDQUFDLEtBQU0sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FHRixDQUFBO0FBcGRxQix1QkFBdUI7SUE4SHhDLFdBQUEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0dBOUhELHVCQUF1QixDQW9kNUM7U0FwZHFCLHVCQUF1QjtBQXNkN0MsTUFBTSxPQUFPLFNBQVM7SUFBdEI7UUFDVSxhQUFRLEdBQW1CLElBQUksR0FBRyxFQUFFLENBQUM7SUFxQi9DLENBQUM7SUFuQkMsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUF1QjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBQ0QsU0FBUyxDQUFDLEdBQVcsRUFBRSxTQUFZLEVBQUUsTUFBZ0I7UUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybSwgU21hcnRmb3JtQ29tcG9uZW50LCBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UgfSBmcm9tICdAc21hcnRiaXQ0YWxsL2Zvcm0nO1xyXG5pbXBvcnQgeyBHcmlkT3B0aW9ucywgU21hcnRHcmlkLCBTbWFydEdyaWRDb21wb25lbnQgfSBmcm9tICdAc21hcnRiaXQ0YWxsL2dyaWQnO1xyXG5pbXBvcnQgeyBTbWFydFN1YmplY3QgfSBmcm9tICdAc21hcnRiaXQ0YWxsL3N1YmplY3QnO1xyXG5pbXBvcnQgeyBTbWFydHRyZWVHZW5lcmljU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXRyZWUvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudE1vZGVsLFxyXG4gIENvbXBvbmVudE1vZGVsQ2hhbmdlLFxyXG4gIERhdGFDaGFuZ2UsXHJcbiAgRGF0YUNoYW5nZUtpbmQsXHJcbiAgU21hcnRUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gIFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlLFxyXG4gIFVpQWN0aW9uLFxyXG4gIFVpQWN0aW9uQWRkaXRpb25hbFBhcmFtcyxcclxuICBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlLFxyXG4gIFVpQWN0aW9uTW9kZWwsXHJcbiAgVWlBY3Rpb25SZXF1ZXN0LFxyXG4gIFVpQWN0aW9uU2VydmljZSxcclxuICBVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2UsXHJcbiAgVXNlVWlBY3Rpb24yLFxyXG59IGZyb20gJy4uL3ZpZXctY29udGV4dC9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0QXV0aGVudGljYXRpb25TZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi9zbWFydC1hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTbWFydENvbXBvbmVudEFwaUNsaWVudDxUPiBpbXBsZW1lbnRzIFVzZVVpQWN0aW9uMiB7XHJcbiAgcHJvdGVjdGVkIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHByb3RlY3RlZCBzZW5kRGF0YUNoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gcHJpdmF0ZSBfdXNlQXV0b1N1Ym1pdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIHByaXZhdGUgX3VzZUF1dG9TdWJtaXRUdXJuZWRPZmY6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgLy8gcHJvdGVjdGVkIGdldCB1c2VBdXRvU3VibWl0KCk6IGJvb2xlYW4ge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuX3VzZUF1dG9TdWJtaXQ7XHJcbiAgLy8gfVxyXG4gIC8vIHByb3RlY3RlZCBzZXQgdXNlQXV0b1N1Ym1pdCh1c2VBdXRvU3VibWl0OiBib29sZWFuKSB7XHJcbiAgLy8gICB0aGlzLl91c2VBdXRvU3VibWl0ID0gdXNlQXV0b1N1Ym1pdDtcclxuICAvLyAgIGlmICh0aGlzLl91c2VBdXRvU3VibWl0KSB7XHJcbiAgLy8gICAgIHRoaXMuc3Vic2NyaWJlVG9BdXRvU3VibWl0KCk7XHJcbiAgLy8gICAgIHRoaXMucmVTdWJzY3JpYmVUb0NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91c2VBdXRvU3VibWl0VHVybmVkT2ZmKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgICB0aGlzLnN1YnNjcmliZVRvQXV0b1N1Ym1pdCgpO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHRoaXMuX3VzZUF1dG9TdWJtaXRUdXJuZWRPZmYubmV4dCgpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBzdWJzY3JpYmVUb0F1dG9TdWJtaXQoKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLnN1Ym1pdC5waXBlKHRha2VVbnRpbCh0aGlzLl91c2VBdXRvU3VibWl0VHVybmVkT2ZmKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5zdWJtaXRGb3JtcygpO1xyXG4gIC8vICAgICB0aGlzLnN1Ym1pdC5jb21wbGV0ZSgpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICBwcml2YXRlIGRldGVjdENoYW5nZTogU21hcnRTdWJqZWN0PENvbXBvbmVudE1vZGVsQ2hhbmdlPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG5cclxuICBwcml2YXRlIF91dWlkPzogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgZ2V0IHV1aWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl91dWlkO1xyXG4gIH1cclxuICBzZXQgdXVpZCh1dWlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIGxldCBmaXJzdFV1aWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMudXVpZCkge1xyXG4gICAgICB0aGlzLnZpZXdDb250ZXh0LnVuZm9sbG93KHRoaXMudXVpZCk7XHJcbiAgICAgIGZpcnN0VXVpZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdXVpZCA9IHV1aWQ7XHJcbiAgICBpZiAodXVpZCkge1xyXG4gICAgICB0aGlzLndpZGdldHMud2lkZ2V0cy5mb3JFYWNoKChyZWYsIGtleSkgPT4ge1xyXG4gICAgICAgIGlmIChyZWYgaW5zdGFuY2VvZiBTbWFydEdyaWRDb21wb25lbnQpIHtcclxuICAgICAgICAgIHJlZi51dWlkID0gdXVpZDtcclxuICAgICAgICB9IGVsc2UgaWYgKCFyZWYgJiYgIWZpcnN0VXVpZCkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgUHJvdmlkZWQgcmVmZXJlbmNlIGZvciAke2tleX0gaXMgdW5kZWZpbmVkIG9uIHV1aWQgY2hhbmdlLmApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghdGhpcy51dWlkT2ZQYWdlSGFzQmVlbkNoYW5nZWRTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICB0aGlzLnV1aWRPZlBhZ2VIYXNCZWVuQ2hhbmdlZFN1YnNjcmlwdGlvbiA9IHRoaXMudmlld0NvbnRleHQudXVpZE9mUGFnZUhhc0JlZW5DaGFuZ2VkXHJcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocGFnZU5hbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHBhZ2VOYW1lID09PSB0aGlzLnBhZ2VOYW1lKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ydW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudmlld0NvbnRleHQuZm9sbG93KHRoaXMuX3V1aWQhLCB0aGlzLmRldGVjdENoYW5nZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9tb2RlbDogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGdldCBtb2RlbCgpOiBDb21wb25lbnRNb2RlbCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW9kZWw7XHJcbiAgfVxyXG4gIHNldCBtb2RlbChtb2RlbDogQ29tcG9uZW50TW9kZWwgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgdGhpcy5pbml0Q29tcG9uZW50QnlNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGF0YT86IFQ7XHJcblxyXG4gIGdldCBkYXRhKCk6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG4gIHNldCBkYXRhKG1vZGVsOiBUIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9kYXRhID0gbW9kZWw7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2VkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1aUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdID0gW107XHJcblxyXG4gIHB1YmxpYyBkYXRhQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG5cclxuICAvLyBVc2VVaUFjdGlvblxyXG4gIC8vIHN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG4gIC8vIHJlU3Vic2NyaWJlVG9DaGFuZ2U6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgLy8gR3JpZFxyXG4gIHNtYXJ0R3JpZD86IFNtYXJ0R3JpZDtcclxuXHJcbiAgLy8gU2VydmljZXNcclxuICBwcm90ZWN0ZWQgdmlld0NvbnRleHQ6IFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCB1aUFjdGlvblNlcnZpY2U6IFVpQWN0aW9uU2VydmljZTtcclxuICBwcm90ZWN0ZWQgdWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlPzogU21hcnRUcmFuc2xhdGVTZXJ2aWNlO1xyXG5cclxuICAvLyBUcmVlXHJcbiAgcHJpdmF0ZSBfc21hcnRUcmVlU2VydmljZT86IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlO1xyXG5cclxuICBwdWJsaWMgZ2V0IHNtYXJ0VHJlZVNlcnZpY2UoKTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2U7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgc21hcnRUcmVlU2VydmljZShzbWFydFRyZWVTZXJ2aWNlOiBTbWFydHRyZWVHZW5lcmljU2VydmljZSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX3NtYXJ0VHJlZVNlcnZpY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBFcnJvcignVGhlIGRlZmF1bHQgdHJlZSBoYXMgYWxyZWFkeSBzZXQgdXAhJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zbWFydFRyZWVTZXJ2aWNlID0gc21hcnRUcmVlU2VydmljZTtcclxuICB9XHJcblxyXG4gIC8vIENvbnRhaW5lZCBXaWRnZXRzXHJcbiAgd2lkZ2V0czogV2lkZ2V0TWFwPFNtYXJ0R3JpZENvbXBvbmVudCB8IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlIHwgdW5kZWZpbmVkPiA9IG5ldyBXaWRnZXRNYXAoKTtcclxuXHJcbiAgZm9ybVdpZGdldHM6IFdpZGdldE1hcDxTbWFydGZvcm1Db21wb25lbnQgfCB1bmRlZmluZWQ+ID0gbmV3IFdpZGdldE1hcCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBpbmplY3Q6IEluamVjdG9yLFxyXG4gICAgcHJvdGVjdGVkIGF1dGg6IFNtYXJ0QXV0aGVudGljYXRpb25TZXJ2aWNlSW50ZXJmYWNlLFxyXG4gICAgQEluamVjdCgncGFnZU5hbWUnKSBwcm90ZWN0ZWQgcGFnZU5hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgdGhpcy5kZXRlY3RDaGFuZ2Uuc3Vic2NyaWJlKChjaGFuZ2U6IENvbXBvbmVudE1vZGVsQ2hhbmdlKSA9PiB7XHJcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlcyhjaGFuZ2UpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy52aWV3Q29udGV4dCA9IGluamVjdC5nZXQoU21hcnRWaWV3Q29udGV4dFNlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMudWlBY3Rpb25TZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlID0gaW5qZWN0LmdldChVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIF9uZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucnVuKCk7XHJcbiAgfVxyXG4gIF9uZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld0NvbnRleHQudW5mb2xsb3codGhpcy51dWlkISk7XHJcbiAgICB0aGlzLndpZGdldHMuY2xlYXJXaWRnZXRzKCk7XHJcblxyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGluaXRDb21wb25lbnRCeU1vZGVsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0RGF0YSgpO1xyXG4gICAgdGhpcy5pbml0QWN0aW9ucygpO1xyXG5cclxuICAgIC8vIFRPRE86IGxheW91dCwgdmFsdWVTZXQsIHdpZGdldHNcclxuICB9XHJcblxyXG4gIGluaXREYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZWw/LmRhdGEpIHtcclxuICAgICAgdGhpcy5kYXRhID0gdGhpcy5tb2RlbD8uZGF0YSBhcyBhbnk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0QWN0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vZGVsPy5hY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB0aGlzLm1vZGVsPy5hY3Rpb25zLm1hcCgodWlBY3Rpb246IFVpQWN0aW9uKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHNlcnZpY2VUb1VzZTogdGhpcyxcclxuICAgICAgICAgIHVpQWN0aW9uLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcnVuKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXV0aC5iZmZBcGlzSGF2ZUJlZW5TZXRVcCkge1xyXG4gICAgICB0aGlzLmxvYWQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXV0aC5oZWFkZXJzVXBkYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnV1aWQgPSB0aGlzLnZpZXdDb250ZXh0LmdldFV1aWRPZlBhZ2UodGhpcy5wYWdlTmFtZSk7XHJcbiAgICB0aGlzLm1vZGVsID0gYXdhaXQgdGhpcy52aWV3Q29udGV4dC5sb2FkKHRoaXMudXVpZCk7XHJcbiAgICAvLyBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LmxvYWQyKHRoaXMudXVpZCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gVXNlVWlBY3Rpb25cclxuICBnZXRBZGRpdGlvbmFsUGFyYW1zKHVpQWN0aW9uOiBVaUFjdGlvbik6IFVpQWN0aW9uQWRkaXRpb25hbFBhcmFtcyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBmb3JUZXh0QXJlYTogJycsXHJcbiAgICAgIGZvclRleHRGaWVsZDogJycsXHJcbiAgICB9O1xyXG4gIH1cclxuICBnZXRNb2RlbCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRGb3JtKHZhbGlkYXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1Ym1pdEZvcm1zKHZhbGlkYXRlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHBlcmZvcm1VaUFjdGlvblJlcXVlc3QoXHJcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCxcclxuICAgIHdpZGdldElkPzogc3RyaW5nLFxyXG4gICAgbm9kZUlkPzogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICh1aUFjdGlvblJlcXVlc3QucGFyYW1zWydfZmlsZXMnXSkge1xyXG4gICAgICBjb25zdCBwYXJhbSA9IHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ3BhcmFtJ107XHJcbiAgICAgIGNvbnN0IGZpbGVzID0gdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snX2ZpbGVzJ107XHJcbiAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydpc011bHRpcGxlJ107XHJcbiAgICAgIGRlbGV0ZSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydwYXJhbSddO1xyXG4gICAgICBkZWxldGUgdWlBY3Rpb25SZXF1ZXN0LnBhcmFtc1snX2ZpbGVzJ107XHJcbiAgICAgIGRlbGV0ZSB1aUFjdGlvblJlcXVlc3QucGFyYW1zWydpc011bHRpcGxlJ107XHJcblxyXG4gICAgICBpZiAoIWlzTXVsdGlwbGUpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1VcGxvYWRBY3Rpb24odGhpcy51dWlkISwgdWlBY3Rpb25SZXF1ZXN0LCBwYXJhbSwgZmlsZXNbMF0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMudmlld0NvbnRleHQucGVyZm9ybVVwbG9hZE11bHRpcGxlQWN0aW9uKFxyXG4gICAgICAgICAgdGhpcy51dWlkISxcclxuICAgICAgICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgICAgICAgIHBhcmFtLFxyXG4gICAgICAgICAgZmlsZXNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHdpZGdldElkICYmIG5vZGVJZCkge1xyXG4gICAgICBhd2FpdCB0aGlzLnZpZXdDb250ZXh0LnBlcmZvcm1XaWRnZXRBY3Rpb24odGhpcy51dWlkISwgd2lkZ2V0SWQsIG5vZGVJZCwgdWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgIH0gZWxzZSBpZiAod2lkZ2V0SWQpIHtcclxuICAgICAgYXdhaXQgdGhpcy52aWV3Q29udGV4dC5wZXJmb3JtV2lkZ2V0TWFpbkFjdGlvbih0aGlzLnV1aWQhLCB3aWRnZXRJZCwgdWlBY3Rpb25SZXF1ZXN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHRoaXMudmlld0NvbnRleHQucGVyZm9ybUFjdGlvbih0aGlzLnV1aWQhLCB1aUFjdGlvblJlcXVlc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlU3BlY2lmaWNEZW1hbmRzQXN5bmNocm9ub3VzbHkoXHJcbiAgICB1aUFjdGlvbjogVWlBY3Rpb24sXHJcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdFxyXG4gICk6IFByb21pc2U8VWlBY3Rpb25TcGVjaWZpY0RlbWFuZFJlc3BvbnNlPiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2hhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5IG1ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvKipcclxuICAgKiBTdWJtaXRzIGFsbCB0aGUgcmVnaXN0ZXJlZCBmb3JtcyBpbiB0aGUgU21hcnRDb21wb25lbnRcclxuICAgKi9cclxuICBwdWJsaWMgc3VibWl0Rm9ybXModmFsaWRhdGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybVdpZGdldHMud2lkZ2V0cykubWFwKChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1XaWRnZXRzLndpZGdldHMuZ2V0KGtleSk/LnN1Ym1pdEZvcm0odmFsaWRhdGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkR3JpZChcclxuICAgIHNtYXJ0R3JpZDogU21hcnRHcmlkLFxyXG4gICAgb3B0aW9uczogR3JpZE9wdGlvbnMsXHJcbiAgICB1c2VBc0RlZmF1bHRHcmlkPzogYm9vbGVhbixcclxuICAgIGNvbXBvbmVudFJlZmVyZW5jZT86IFNtYXJ0R3JpZENvbXBvbmVudFxyXG4gICk6IFNtYXJ0R3JpZCB7XHJcbiAgICBzbWFydEdyaWQub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICBzbWFydEdyaWQudWlBY3Rpb25TZXJ2aWNlID0gdGhpcy51aUFjdGlvblNlcnZpY2U7XHJcbiAgICBzbWFydEdyaWQudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSA9IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICAgIHNtYXJ0R3JpZC5zZXJ2aWNlVG9Vc2UgPSB0aGlzO1xyXG4gICAgc21hcnRHcmlkLnZpZXdDb250ZXh0U2VydmljZSA9IHRoaXMudmlld0NvbnRleHQ7XHJcblxyXG4gICAgdGhpcy53aWRnZXRzLmFkZFdpZGdldChzbWFydEdyaWQuZ3JpZElkZW50aWZpZXIsIGNvbXBvbmVudFJlZmVyZW5jZSk7XHJcblxyXG4gICAgaWYgKHVzZUFzRGVmYXVsdEdyaWQpIHtcclxuICAgICAgdGhpcy5zbWFydEdyaWQgPSBzbWFydEdyaWQ7XHJcbiAgICAgIHJldHVybiB0aGlzLnNtYXJ0R3JpZDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc21hcnRHcmlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEZvcm0oXHJcbiAgICBzbWFydEZvcm1JZDogc3RyaW5nLFxyXG4gICAgc21hcnRGb3JtOiBTbWFydEZvcm0sXHJcbiAgICBjb21wb25lbnRSZWZlcmVuY2U/OiBTbWFydGZvcm1Db21wb25lbnRcclxuICApOiBTbWFydEZvcm0ge1xyXG4gICAgdGhpcy5mb3JtV2lkZ2V0cy5hZGRXaWRnZXQoc21hcnRGb3JtSWQsIGNvbXBvbmVudFJlZmVyZW5jZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VuZERhdGFDaGFuZ2VzICYmIGNvbXBvbmVudFJlZmVyZW5jZSkge1xyXG4gICAgICBzbWFydEZvcm0udXNlT25WYWx1ZUNoYW5nZUV2ZW50ID0gdHJ1ZTtcclxuXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZS5zb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2VcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlQ2hhbmdlOiBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVDaGFuZ2VzKHZhbHVlQ2hhbmdlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc21hcnRGb3JtO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFVwRGVmYXVsdFRyZWUodHJlZUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRUcmVlU2VydmljZSA9IG5ldyBTbWFydHRyZWVHZW5lcmljU2VydmljZSh0aGlzLmluamVjdCwgdGhpcy5wYWdlTmFtZSwgdHJlZUlkKTtcclxuICAgIHRoaXMud2lkZ2V0cy5hZGRXaWRnZXQodHJlZUlkLCB0aGlzLnNtYXJ0VHJlZVNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZVRyZWVTZXJ2aWNlKHRyZWVJZDogc3RyaW5nKTogU21hcnR0cmVlR2VuZXJpY1NlcnZpY2Uge1xyXG4gICAgY29uc3QgdHJlZVNlcnZpY2UgPSBuZXcgU21hcnR0cmVlR2VuZXJpY1NlcnZpY2UodGhpcy5pbmplY3QsIHRoaXMucGFnZU5hbWUsIHRyZWVJZCk7XHJcbiAgICB0aGlzLndpZGdldHMuYWRkV2lkZ2V0KHRyZWVJZCwgdHJlZVNlcnZpY2UpO1xyXG5cclxuICAgIHJldHVybiB0cmVlU2VydmljZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRGaWxlVXBsb2FkZXIoXHJcbiAgICB1aUFjdGlvbkNvZGU6IHN0cmluZyxcclxuICAgIGZpbGVGb3JtYXRzPzogc3RyaW5nW10sXHJcbiAgICBtYXhTaXplTWI/OiBudW1iZXIsXHJcbiAgICBpc011bHRpcGxlPzogYm9vbGVhblxyXG4gICk6IFNtYXJ0RmlsZVVwbG9hZGVyIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHVpQWN0aW9uQ29kZSxcclxuICAgICAgc21hcnRDb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGZpbGVGb3JtYXRzLFxyXG4gICAgICBpc011bHRpcGxlLFxyXG4gICAgICBtYXhTaXplTWIsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiBoYW5kbGUgY2hhbmdlc1xyXG4gIHByaXZhdGUgaGFuZGxlVmFsdWVDaGFuZ2VzKHZhbHVlQ2hhbmdlOiBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UpOiB2b2lkIHtcclxuICAgIGxldCBkYXRhQ2hhbmdlOiBEYXRhQ2hhbmdlO1xyXG4gICAgaWYgKHZhbHVlQ2hhbmdlLmtleS5pbmNsdWRlcygnLicpKSB7XHJcbiAgICAgIGNvbnN0IHNvdXJjZSA9IHZhbHVlQ2hhbmdlLmtleS5zcGxpdCgnLicpWzBdO1xyXG4gICAgICBjb25zdCB2YWx1ZUtleSA9IHZhbHVlQ2hhbmdlLmtleS5zcGxpdCgnLicpWzFdO1xyXG4gICAgICBkYXRhQ2hhbmdlID0ge1xyXG4gICAgICAgIGtpbmQ6IHZhbHVlQ2hhbmdlLmtpbmQgPT09ICdiYXNpYycgPyBEYXRhQ2hhbmdlS2luZC5XaWRnZXQgOiBEYXRhQ2hhbmdlS2luZC5TZWxlY3Rpb24sXHJcbiAgICAgICAgc291cmNlLFxyXG4gICAgICAgIHZhbHVlczogW1t2YWx1ZUtleSwgdmFsdWVDaGFuZ2UudmFsdWVdXSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGFDaGFuZ2UgPSB7XHJcbiAgICAgICAga2luZDogdmFsdWVDaGFuZ2Uua2luZCA9PT0gJ2Jhc2ljJyA/IERhdGFDaGFuZ2VLaW5kLldpZGdldCA6IERhdGFDaGFuZ2VLaW5kLlNlbGVjdGlvbixcclxuICAgICAgICBzb3VyY2U6IHZhbHVlQ2hhbmdlLmtleSxcclxuICAgICAgICB2YWx1ZXM6IFtbdmFsdWVDaGFuZ2Uua2V5LCB2YWx1ZUNoYW5nZS52YWx1ZV1dLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlld0NvbnRleHQuZGF0YUNoYW5nZWQodGhpcy51dWlkISwgZGF0YUNoYW5nZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUNoYW5nZXMoY2hhbmdlOiBDb21wb25lbnRNb2RlbENoYW5nZSk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VkV2lkZ2V0cykge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlV2lkZ2V0cyhjaGFuZ2UuY2hhbmdlZFdpZGdldHMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZGF0YUNoYW5nZUhhc0JlZW5OZXh0ZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VzKSB7XHJcbiAgICAgICAgY29uc3QgY2hhbmdlcyA9IGNoYW5nZS5jaGFuZ2VzO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGNoYW5nZXMpLm1hcCgoY2hhbmdlS2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnZGF0YS4nKSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZURhdGFDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5LnN0YXJ0c1dpdGgoJ2xheW91dHMuJykgJiYgdGhpcy5tb2RlbD8ubGF5b3V0cykge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUxheW91dENoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkuc3RhcnRzV2l0aCgnY29tcG9uZW50TGF5b3V0cy4nKSAmJiB0aGlzLm1vZGVsPy5sYXlvdXRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29tcG9uZW50TGF5b3V0Q2hhbmdlKGNoYW5nZXMsIGNoYW5nZUtleSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZUtleS5zdGFydHNXaXRoKCd2YWx1ZVNldHMuJykgJiYgdGhpcy5tb2RlbD8udmFsdWVTZXRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsdWVTZXRDaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnYWN0aW9ucycpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVBY3Rpb25DaGFuZ2UoY2hhbmdlcywgY2hhbmdlS2V5KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlS2V5ID09PSAnY29uc3RyYWludHMnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29uc3RyYWludENoYW5nZShjaGFuZ2VzLCBjaGFuZ2VLZXkpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2VLZXkgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBjaGFuZ2VzWycnXSBhcyBDb21wb25lbnRNb2RlbDtcclxuICAgICAgICAgICAgZGF0YUNoYW5nZUhhc0JlZW5OZXh0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoIWRhdGFDaGFuZ2VIYXNCZWVuTmV4dGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2VkLm5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB0aGlzLm1vZGVsID0gY2hhbmdlLnZhbHVlIGFzIENvbXBvbmVudE1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghY2hhbmdlLmNoYW5nZWRXaWRnZXRzICYmICFjaGFuZ2UuY2hhbmdlcyAmJiBjaGFuZ2UudmFsdWUpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IGNoYW5nZS52YWx1ZSBhcyBDb21wb25lbnRNb2RlbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ2hhbmdlV2lkZ2V0cyhjaGFuZ2VkV2lkZ2V0czogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGNoYW5nZWRXaWRnZXRzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMud2lkZ2V0cy5nZXQoa2V5KTtcclxuXHJcbiAgICAgIGlmIChyZWZlcmVuY2UgaW5zdGFuY2VvZiBTbWFydEdyaWRDb21wb25lbnQpIHtcclxuICAgICAgICByZWZlcmVuY2UucmVmcmVzaCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZSBpbnN0YW5jZW9mIFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlKSB7XHJcbiAgICAgICAgcmVmZXJlbmNlLmluaXRpYWxpemUoKTtcclxuICAgICAgfSBlbHNlIGlmIChyZWZlcmVuY2UgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFByb3ZpZGVkIHJlZmVyZW5jZSBmb3IgJHtrZXl9IGlzIHVuZGVmaW5lZC5gKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFZhbHVlRGVlcGx5KG1vZGVsOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcclxuICAgIGxldCBzcGxpdHRlZEtleXMgPSBrZXkuc3BsaXQoJy4nKTtcclxuXHJcbiAgICBsZXQgZGVlcE1vZGVsOiBhbnlbXSA9IFttb2RlbF07XHJcbiAgICBsZXQgdGVtcE1vZGVsOiBhbnk7XHJcblxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNwbGl0dGVkS2V5cy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdGVtcE1vZGVsID0gZGVlcE1vZGVsW2luZGV4XTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0eXBlb2YgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSAnc3RyaW5nJyAmJlxyXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdib29sZWFuJyAmJlxyXG4gICAgICAgIHR5cGVvZiB0ZW1wTW9kZWxbc3BsaXR0ZWRLZXlzW2luZGV4XV0gIT09ICdudW1iZXInICYmXHJcbiAgICAgICAgdGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dICE9PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgZGVlcE1vZGVsLnB1c2godGVtcE1vZGVsW3NwbGl0dGVkS2V5c1tpbmRleF1dKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGluZGV4ID09PSBzcGxpdHRlZEtleXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHRlbXBNb2RlbFtzcGxpdHRlZEtleXNbaW5kZXhdXSA9IHZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbW9kZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZURhdGFDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0VmFsdWVEZWVwbHkodGhpcy5tb2RlbCwgY2hhbmdlS2V5LCBjaGFuZ2VzW2NoYW5nZUtleV0pO1xyXG5cclxuICAgIHRoaXMuZm9ybVdpZGdldHMud2lkZ2V0cy5mb3JFYWNoKFxyXG4gICAgICAoZm9ybUNvbXBvbmVudDogU21hcnRmb3JtQ29tcG9uZW50IHwgdW5kZWZpbmVkLCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChmb3JtQ29tcG9uZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFByb3ZpZGVkIGZvcm0gcmVmZXJlbmNlIGZvciAke2tleX0gaXMgdW5kZWZpbmVkLmApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3JtQ29tcG9uZW50LnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUxheW91dENoYW5nZShjaGFuZ2VzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjaGFuZ2VLZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGxheW91dEtleSA9IGNoYW5nZUtleS5zcGxpdCgnLicpWzFdO1xyXG4gICAgdGhpcy5tb2RlbCEubGF5b3V0c1tsYXlvdXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVDb21wb25lbnRMYXlvdXRDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBsYXlvdXRLZXkgPSBjaGFuZ2VLZXkuc3BsaXQoJy4nKVsxXTtcclxuICAgIGxldCBjb21wb25lbnRMYXlvdXRzOiB7IFtrZXk6IHN0cmluZ106IE9iamVjdCB9ID0gdGhpcy5tb2RlbCEuY29tcG9uZW50TGF5b3V0cyBhcyB7XHJcbiAgICAgIFtrZXk6IHN0cmluZ106IE9iamVjdDtcclxuICAgIH07XHJcbiAgICBjb21wb25lbnRMYXlvdXRzW2xheW91dEtleV0gPSBjaGFuZ2VzW2NoYW5nZUtleV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVZhbHVlU2V0Q2hhbmdlKGNoYW5nZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGNoYW5nZUtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgdmFsdWVTZXRLZXkgPSBjaGFuZ2VLZXkuc3BsaXQoJy4nKVsxXTtcclxuICAgIHRoaXMubW9kZWwhLnZhbHVlU2V0cyFbdmFsdWVTZXRLZXldID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVBY3Rpb25DaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwhLmFjdGlvbnMgPSBjaGFuZ2VzW2NoYW5nZUtleV07XHJcbiAgICB0aGlzLmluaXRBY3Rpb25zKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUNvbnN0cmFpbnRDaGFuZ2UoY2hhbmdlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY2hhbmdlS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwhLmNvbnN0cmFpbnRzID0gY2hhbmdlc1tjaGFuZ2VLZXldO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV2lkZ2V0TWFwPFQ+IHtcclxuICBwcml2YXRlIF93aWRnZXRzOiBNYXA8c3RyaW5nLCBUPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgZ2V0IHdpZGdldHMoKTogTWFwPHN0cmluZywgVD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpZGdldHM7XHJcbiAgfVxyXG4gIHNldCB3aWRnZXRzKHdpZGdldHM6IE1hcDxzdHJpbmcsIFQ+KSB7XHJcbiAgICB0aGlzLl93aWRnZXRzID0gd2lkZ2V0cztcclxuICB9XHJcbiAgYWRkV2lkZ2V0KGtleTogc3RyaW5nLCByZWZlcmVuY2U6IFQsIGlzRm9ybT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3dpZGdldHMuc2V0KGtleSwgcmVmZXJlbmNlKTtcclxuICB9XHJcbiAgcmVtb3ZlV2lkZ2V0KGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl93aWRnZXRzLmRlbGV0ZShrZXkpO1xyXG4gIH1cclxuICBjbGVhcldpZGdldHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl93aWRnZXRzLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBnZXQoa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLndpZGdldHMuZ2V0KGtleSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0RmlsZVVwbG9hZGVyIHtcclxuICB1aUFjdGlvbkNvZGU6IHN0cmluZztcclxuICBtYXhTaXplTWI/OiBudW1iZXI7XHJcbiAgZmlsZUZvcm1hdHM/OiBzdHJpbmdbXTtcclxuICBpc011bHRpcGxlPzogYm9vbGVhbjtcclxuICBzbWFydENvbXBvbmVudDogU21hcnRDb21wb25lbnRBcGlDbGllbnQ8YW55PjtcclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50TW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvYXBpL21vZGVsL2NvbXBvbmVudE1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZpZXcgQVBJXG4gKiBWaWV3IEFQSVxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbmltcG9ydCB7IFNtYXJ0TGF5b3V0RGVmaW5pdGlvbiB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZm9ybSc7XG5pbXBvcnQgeyBDb21wb25lbnRDb25zdHJhaW50IH0gZnJvbSAnLi9jb21wb25lbnRDb25zdHJhaW50JztcbmltcG9ydCB7IFVpQWN0aW9uIH0gZnJvbSAnLi91aUFjdGlvbic7XG5pbXBvcnQgeyBWYWx1ZVNldCB9IGZyb20gJy4vdmFsdWVTZXQnO1xuXG4vKipcbiAqIE1vZGVsIG9mIGEgVUkgY29tcG9uZW50LiBDb250YWlucyBhbGwgaW5mb3JtYXRpb24gaW4gb25lIG9iamVjdCwgd2hpY2ggYXJlIG5lZWRlZCAgdG8gcmVuZGVyIGEgZnVsbHkgZnVuY3Rpb25pbiBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TW9kZWwge1xuICB1dWlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZGF0YT86IG9iamVjdDtcbiAgY29uc3RyYWludHM6IEFycmF5PENvbXBvbmVudENvbnN0cmFpbnQ+O1xuICBsYXlvdXRzOiB7IFtrZXk6IHN0cmluZ106IFNtYXJ0TGF5b3V0RGVmaW5pdGlvbiB9O1xuICBjb21wb25lbnRMYXlvdXRzPzogeyBba2V5OiBzdHJpbmddOiBPYmplY3QgfTtcbiAgYWN0aW9uczogQXJyYXk8VWlBY3Rpb24+O1xuICB2YWx1ZVNldHM/OiB7IFtrZXk6IHN0cmluZ106IFZhbHVlU2V0IH07XG4gIC8qKlxuICAgKiBMaXN0IG9mIHdpZGdldHMgKHdpZGdldElkcykuXG4gICAqL1xuICB3aWRnZXRzPzogQXJyYXk8c3RyaW5nPjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50TW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvYXBpL21vZGVsL2NvbXBvbmVudE1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVmlldyBBUElcclxuICogVmlldyBBUElcclxuICpcclxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXHJcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XHJcbiAqXHJcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXHJcbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxyXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXHJcbiAqL1xyXG5pbXBvcnQgeyBTbWFydExheW91dERlZmluaXRpb24gfSBmcm9tICdAc21hcnRiaXQ0YWxsL2Zvcm0nO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb25zdHJhaW50IH0gZnJvbSAnLi9jb21wb25lbnRDb25zdHJhaW50JztcclxuaW1wb3J0IHsgVWlBY3Rpb24gfSBmcm9tICcuL3VpQWN0aW9uJztcclxuaW1wb3J0IHsgVmFsdWVTZXQgfSBmcm9tICcuL3ZhbHVlU2V0JztcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIFVJIGNvbXBvbmVudC4gQ29udGFpbnMgYWxsIGluZm9ybWF0aW9uIGluIG9uZSBvYmplY3QsIHdoaWNoIGFyZSBuZWVkZWQgIHRvIHJlbmRlciBhIGZ1bGx5IGZ1bmN0aW9uaW4gY29tcG9uZW50LlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRNb2RlbCB7XHJcbiAgdXVpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBkYXRhPzogb2JqZWN0O1xyXG4gIGNvbnN0cmFpbnRzOiBBcnJheTxDb21wb25lbnRDb25zdHJhaW50PjtcclxuICBsYXlvdXRzOiB7IFtrZXk6IHN0cmluZ106IFNtYXJ0TGF5b3V0RGVmaW5pdGlvbiB9O1xyXG4gIGNvbXBvbmVudExheW91dHM/OiB7IFtrZXk6IHN0cmluZ106IE9iamVjdCB9O1xyXG4gIGFjdGlvbnM6IEFycmF5PFVpQWN0aW9uPjtcclxuICB2YWx1ZVNldHM/OiB7IFtrZXk6IHN0cmluZ106IFZhbHVlU2V0IH07XHJcbiAgLyoqXHJcbiAgICogTGlzdCBvZiB3aWRnZXRzICh3aWRnZXRJZHMpLlxyXG4gICAqL1xyXG4gIHdpZGdldHM/OiBBcnJheTxzdHJpbmc+O1xyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlBY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvYXBpL21vZGVsL3VpQWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZpZXcgQVBJXG4gKiBWaWV3IEFQSVxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbmltcG9ydCB7IFVpQWN0aW9uSW5wdXRUeXBlIH0gZnJvbSAnLi91aUFjdGlvbklucHV0VHlwZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBVaUFjdGlvbiB7IFxuICAgIGNvZGU/OiBzdHJpbmc7XG4gICAgcGF0aD86IHN0cmluZztcbiAgICBpZGVudGlmaWVyPzogc3RyaW5nO1xuICAgIGlucHV0VHlwZT86IFVpQWN0aW9uSW5wdXRUeXBlO1xuICAgIGlucHV0MlR5cGU/OiBVaUFjdGlvbklucHV0VHlwZTtcbiAgICBzdWJtaXQ/OiBib29sZWFuO1xuICAgIGNvbmZpcm0/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgZXhlY3V0aW5nIHRoZSBVSSBhY3Rpb24uICBcbiAgICAgKi9cbiAgICBwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IGFueTsgfTtcbn1cbmV4cG9ydCBuYW1lc3BhY2UgVWlBY3Rpb24ge1xufVxuXG5cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlBY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvYXBpL21vZGVsL3VpQWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZpZXcgQVBJXG4gKiBWaWV3IEFQSVxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbmltcG9ydCB7IFVpQWN0aW9uSW5wdXRUeXBlIH0gZnJvbSAnLi91aUFjdGlvbklucHV0VHlwZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBVaUFjdGlvbiB7IFxuICAgIGNvZGU/OiBzdHJpbmc7XG4gICAgcGF0aD86IHN0cmluZztcbiAgICBpZGVudGlmaWVyPzogc3RyaW5nO1xuICAgIGlucHV0VHlwZT86IFVpQWN0aW9uSW5wdXRUeXBlO1xuICAgIGlucHV0MlR5cGU/OiBVaUFjdGlvbklucHV0VHlwZTtcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlLCBVaUFjdGlvbiB3aWxsIHN1Ym1pdCB0aGUgZm9ybSAoY2F1c2luZyB2YWxpZGF0aW9uKSBhbmQgc2VuZHMgbW9kZWwgaW4gVWlBY3Rpb25SZXF1ZXN0LlxuICAgICAqL1xuICAgIHN1Ym1pdD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSwgVWlBY3Rpb24gd2lsbCBOT1Qgc3VibWl0IHRoZSBmb3JtIGFuZCBzZW5kcyBtb2RlbCBXSVRIT1VUIFZBTElEQVRJT04gaW4gVWlBY3Rpb25SZXF1ZXN0LlxuICAgICAqL1xuICAgIG1vZGVsPzogYm9vbGVhbjtcbiAgICBjb25maXJtPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGV4ZWN1dGluZyB0aGUgVUkgYWN0aW9uLiAgXG4gICAgICovXG4gICAgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBhbnk7IH07XG59XG5leHBvcnQgbmFtZXNwYWNlIFVpQWN0aW9uIHtcbn1cblxuXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWaWV3IEFQSVxuICogVmlldyBBUElcbiAqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogMS4wLjBcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG5pbXBvcnQgeyBWaWV3RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi92aWV3RXZlbnRIYW5kbGVyJztcbmltcG9ydCB7IFNtYXJ0TGF5b3V0RGVmaW5pdGlvbiB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZm9ybSc7XG5pbXBvcnQgeyBWaWV3U3RhdGUgfSBmcm9tICcuL3ZpZXdTdGF0ZSc7XG5pbXBvcnQgeyBVaUFjdGlvbiB9IGZyb20gJy4vdWlBY3Rpb24nO1xuaW1wb3J0IHsgVmFsdWVTZXQgfSBmcm9tICcuL3ZhbHVlU2V0JztcbmltcG9ydCB7IFZpZXdUeXBlIH0gZnJvbSAnLi92aWV3VHlwZSc7XG5pbXBvcnQgeyBWaWV3Q29uc3RyYWludCB9IGZyb20gJy4vdmlld0NvbnN0cmFpbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXcge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIFZpZXcuXG4gICAqL1xuICB1dWlkOiBzdHJpbmc7XG4gIHZpZXdOYW1lOiBzdHJpbmc7XG4gIG9iamVjdFVyaT86IHN0cmluZztcbiAgYnJhbmNoVXJpPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGluY29taW5nIHBhcmFtZXRlcnMgb2YgdGhlIHZpZXcuIElmIHdlIHJlc3RhcnQgdGhlIGdpdmVuIHZpZXcgd2l0aCB0aGUgc2FtZSBtb2RlbCB0aGVuIHRoaXMgcGFyYW1ldGVycyByZW1haW4uXG4gICAqL1xuICBwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICAvKipcbiAgICogVGhlIHZhcmlhYmxlIHRvIHN0b3JlIHdoaWxlIHRoZSBwYWdlIGlzIG9wZW5lZC4gSXQgd2lsbCBiZSBjbGVhcmVkIGlmIHdlIG9wZW4gaXQgYWdhaW4uXG4gICAqL1xuICB2YXJpYWJsZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIHN0YXRlOiBWaWV3U3RhdGU7XG4gIHR5cGU6IFZpZXdUeXBlO1xuICBjb250YWluZXJVdWlkPzogc3RyaW5nO1xuICBtb2RlbD86IG9iamVjdDtcbiAgY29uc3RyYWludD86IFZpZXdDb25zdHJhaW50O1xuICBjbG9zZWRDaGlsZHJlblZpZXdzOiBBcnJheTxWaWV3PjtcbiAgZG93bmxvYWRhYmxlSXRlbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIGFjdGlvbnM6IEFycmF5PFVpQWN0aW9uPjtcbiAgZXZlbnRIYW5kbGVyczogQXJyYXk8Vmlld0V2ZW50SGFuZGxlcj47XG4gIHdpZGdldE1vZGVsczogeyBba2V5OiBzdHJpbmddOiBvYmplY3QgfTtcbiAgdmFsdWVTZXRzOiB7IFtrZXk6IHN0cmluZ106IFZhbHVlU2V0IH07XG4gIGtlZXBNb2RlbE9uSW1wbGljaXRDbG9zZT86IGJvb2xlYW47XG4gIGNhbGxiYWNrczogeyBba2V5OiBzdHJpbmddOiBvYmplY3QgfTtcbiAgLyoqXG4gICAqIFRoZSBsYXlvdXRzIGRlZmluZWQgaW4gdGhlIHZpZXcuIFRoaXMgbmFtZWQgbGF5b3V0cyBjYW4gYmUgdXNlZCBieSB0aGUgVUkgdG8gcmVuZGVyXG4gICAqL1xuICBsYXlvdXRzOiB7IFtrZXk6IHN0cmluZ106IFNtYXJ0TGF5b3V0RGVmaW5pdGlvbiB9O1xuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgbGF5b3V0cyBkZWZpbmVkIGluIHRoZSB2aWV3LiBUaGlzIG5hbWVkIGxheW91dHMgY2FuIGJlIHVzZWQgYnkgdGhlIFVJIHRvIHJlbmRlclxuICAgKi9cbiAgY29tcG9uZW50TGF5b3V0czogeyBba2V5OiBzdHJpbmddOiBPYmplY3QgfTtcbn1cbmV4cG9ydCBuYW1lc3BhY2UgVmlldyB7fVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFZpZXcgQVBJXHJcbiAqIFZpZXcgQVBJXHJcbiAqXHJcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxyXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxyXG4gKlxyXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxyXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcclxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxyXG4gKi9cclxuaW1wb3J0IHsgVmlld0V2ZW50SGFuZGxlciB9IGZyb20gJy4vdmlld0V2ZW50SGFuZGxlcic7XHJcbmltcG9ydCB7IFNtYXJ0TGF5b3V0RGVmaW5pdGlvbiB9IGZyb20gJ0BzbWFydGJpdDRhbGwvZm9ybSc7XHJcbmltcG9ydCB7IFZpZXdTdGF0ZSB9IGZyb20gJy4vdmlld1N0YXRlJztcclxuaW1wb3J0IHsgVWlBY3Rpb24gfSBmcm9tICcuL3VpQWN0aW9uJztcclxuaW1wb3J0IHsgVmFsdWVTZXQgfSBmcm9tICcuL3ZhbHVlU2V0JztcclxuaW1wb3J0IHsgVmlld1R5cGUgfSBmcm9tICcuL3ZpZXdUeXBlJztcclxuaW1wb3J0IHsgVmlld0NvbnN0cmFpbnQgfSBmcm9tICcuL3ZpZXdDb25zdHJhaW50JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmlldyB7XHJcbiAgLyoqXHJcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIFZpZXcuXHJcbiAgICovXHJcbiAgdXVpZDogc3RyaW5nO1xyXG4gIHZpZXdOYW1lOiBzdHJpbmc7XHJcbiAgb2JqZWN0VXJpPzogc3RyaW5nO1xyXG4gIGJyYW5jaFVyaT86IHN0cmluZztcclxuICAvKipcclxuICAgKiBUaGUgaW5jb21pbmcgcGFyYW1ldGVycyBvZiB0aGUgdmlldy4gSWYgd2UgcmVzdGFydCB0aGUgZ2l2ZW4gdmlldyB3aXRoIHRoZSBzYW1lIG1vZGVsIHRoZW4gdGhpcyBwYXJhbWV0ZXJzIHJlbWFpbi5cclxuICAgKi9cclxuICBwYXJhbWV0ZXJzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG4gIC8qKlxyXG4gICAqIFRoZSB2YXJpYWJsZSB0byBzdG9yZSB3aGlsZSB0aGUgcGFnZSBpcyBvcGVuZWQuIEl0IHdpbGwgYmUgY2xlYXJlZCBpZiB3ZSBvcGVuIGl0IGFnYWluLlxyXG4gICAqL1xyXG4gIHZhcmlhYmxlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxuICBzdGF0ZTogVmlld1N0YXRlO1xyXG4gIHR5cGU6IFZpZXdUeXBlO1xyXG4gIGNvbnRhaW5lclV1aWQ/OiBzdHJpbmc7XHJcbiAgbW9kZWw/OiBvYmplY3Q7XHJcbiAgY29uc3RyYWludD86IFZpZXdDb25zdHJhaW50O1xyXG4gIGNsb3NlZENoaWxkcmVuVmlld3M6IEFycmF5PFZpZXc+O1xyXG4gIGRvd25sb2FkYWJsZUl0ZW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gIGFjdGlvbnM6IEFycmF5PFVpQWN0aW9uPjtcclxuICBldmVudEhhbmRsZXJzOiBBcnJheTxWaWV3RXZlbnRIYW5kbGVyPjtcclxuICB3aWRnZXRNb2RlbHM6IHsgW2tleTogc3RyaW5nXTogb2JqZWN0IH07XHJcbiAgdmFsdWVTZXRzOiB7IFtrZXk6IHN0cmluZ106IFZhbHVlU2V0IH07XHJcbiAga2VlcE1vZGVsT25JbXBsaWNpdENsb3NlPzogYm9vbGVhbjtcclxuICBjYWxsYmFja3M6IHsgW2tleTogc3RyaW5nXTogb2JqZWN0IH07XHJcbiAgLyoqXHJcbiAgICogVGhlIGxheW91dHMgZGVmaW5lZCBpbiB0aGUgdmlldy4gVGhpcyBuYW1lZCBsYXlvdXRzIGNhbiBiZSB1c2VkIGJ5IHRoZSBVSSB0byByZW5kZXJcclxuICAgKi9cclxuICBsYXlvdXRzOiB7IFtrZXk6IHN0cmluZ106IFNtYXJ0TGF5b3V0RGVmaW5pdGlvbiB9O1xyXG4gIC8qKlxyXG4gICAqIFRoZSBjb21wb25lbnRzIGxheW91dHMgZGVmaW5lZCBpbiB0aGUgdmlldy4gVGhpcyBuYW1lZCBsYXlvdXRzIGNhbiBiZSB1c2VkIGJ5IHRoZSBVSSB0byByZW5kZXJcclxuICAgKi9cclxuICBjb21wb25lbnRMYXlvdXRzOiB7IFtrZXk6IHN0cmluZ106IE9iamVjdCB9O1xyXG59XHJcbmV4cG9ydCBuYW1lc3BhY2UgVmlldyB7fVxyXG4iXX0=
@@ -4,4 +4,4 @@ export var UiActionDialogType;
4
4
  UiActionDialogType["confirmDialog"] = "confirmDialog";
5
5
  UiActionDialogType["dialog"] = "dialog";
6
6
  })(UiActionDialogType || (UiActionDialogType = {}));
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUNBLE1BQU0sQ0FBTixJQUFZLGtCQUlYO0FBSkQsV0FBWSxrQkFBa0I7SUFDN0IsaURBQTJCLENBQUE7SUFDM0IscURBQStCLENBQUE7SUFDL0IsdUNBQWlCLENBQUE7QUFDbEIsQ0FBQyxFQUpXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFJN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVpQWN0aW9uLCBVaUFjdGlvbkRlc2NyaXB0b3IsIFVpQWN0aW9uUmVxdWVzdCB9IGZyb20gJy4uL2FwaSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVpQWN0aW9uTW9kZWwge1xyXG5cdHVpQWN0aW9uOiBVaUFjdGlvbjtcclxuXHRzZXJ2aWNlVG9Vc2U6IFVzZVVpQWN0aW9uO1xyXG5cdGV4Y2VwdGlvbj86IGJvb2xlYW47XHJcblx0ZGVzY3JpcHRvcj86IFVpQWN0aW9uRGVzY3JpcHRvcjtcclxuXHRjc3NDbGFzcz86IHN0cmluZztcclxuXHR3aWRnZXRJZD86IHN0cmluZztcclxuXHRub2RlSWQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlVWlBY3Rpb24ge1xyXG5cdHN1Ym1pdDogU3ViamVjdDx2b2lkPjtcclxuXHRyZVN1YnNjcmliZVRvQ2hhbmdlOiBTdWJqZWN0PHZvaWQ+O1xyXG5cdGdldEFkZGl0aW9uYWxQYXJhbXModWlBY3Rpb246IFVpQWN0aW9uKTogVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zO1xyXG5cdGdldE1vZGVsKCk6IGFueTtcclxuXHRwZXJmb3JtVWlBY3Rpb25SZXF1ZXN0KHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0LCB3aWRnZXRJZD86IHN0cmluZywgbm9kZUlkPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xyXG5cdGhhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5KFxyXG5cdFx0dWlBY3Rpb246IFVpQWN0aW9uLFxyXG5cdFx0dWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuXHQpOiBQcm9taXNlPFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlBY3Rpb25TcGVjaWZpY0RlbWFuZFJlc3BvbnNlIHtcclxuXHRzaG91bGRQZXJmb3JtQWN0aW9uOiBib29sZWFuO1xyXG5cdHVpQWN0aW9uUmVxdWVzdD86IFVpQWN0aW9uUmVxdWVzdDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVaUFjdGlvbkFkZGl0aW9uYWxQYXJhbXMge1xyXG5cdGZvclRleHRGaWVsZD86IHN0cmluZztcclxuXHRmb3JUZXh0QXJlYT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVWlBY3Rpb25EaWFsb2dUeXBlIHtcclxuXHRpbnB1dERpYWxvZyA9ICdpbnB1dERpYWxvZycsXHJcblx0Y29uZmlybURpYWxvZyA9ICdjb25maXJtRGlhbG9nJyxcclxuXHRkaWFsb2cgPSAnZGlhbG9nJyxcclxufVxyXG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0RBLE1BQU0sQ0FBTixJQUFZLGtCQUlYO0FBSkQsV0FBWSxrQkFBa0I7SUFDNUIsaURBQTJCLENBQUE7SUFDM0IscURBQStCLENBQUE7SUFDL0IsdUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUpXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFJN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVpQWN0aW9uLCBVaUFjdGlvbkRlc2NyaXB0b3IsIFVpQWN0aW9uUmVxdWVzdCB9IGZyb20gJy4uL2FwaSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVpQWN0aW9uTW9kZWwge1xyXG4gIHVpQWN0aW9uOiBVaUFjdGlvbjtcclxuICBzZXJ2aWNlVG9Vc2U6IFVzZVVpQWN0aW9uIHwgVXNlVWlBY3Rpb24yO1xyXG4gIGV4Y2VwdGlvbj86IGJvb2xlYW47XHJcbiAgZGVzY3JpcHRvcj86IFVpQWN0aW9uRGVzY3JpcHRvcjtcclxuICBjc3NDbGFzcz86IHN0cmluZztcclxuICB3aWRnZXRJZD86IHN0cmluZztcclxuICBub2RlSWQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlVWlBY3Rpb24ge1xyXG4gIHN1Ym1pdDogU3ViamVjdDx2b2lkPjtcclxuICByZVN1YnNjcmliZVRvQ2hhbmdlOiBTdWJqZWN0PHZvaWQ+O1xyXG4gIGdldEFkZGl0aW9uYWxQYXJhbXModWlBY3Rpb246IFVpQWN0aW9uKTogVWlBY3Rpb25BZGRpdGlvbmFsUGFyYW1zO1xyXG4gIGdldE1vZGVsKCk6IGFueTtcclxuICBwZXJmb3JtVWlBY3Rpb25SZXF1ZXN0KFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QsXHJcbiAgICB3aWRnZXRJZD86IHN0cmluZyxcclxuICAgIG5vZGVJZD86IHN0cmluZ1xyXG4gICk6IFByb21pc2U8YW55PjtcclxuICBoYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseShcclxuICAgIHVpQWN0aW9uOiBVaUFjdGlvbixcclxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0XHJcbiAgKTogUHJvbWlzZTxVaUFjdGlvblNwZWNpZmljRGVtYW5kUmVzcG9uc2U+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVzZVVpQWN0aW9uMiB7XHJcbiAgc3VibWl0Rm9ybSh2YWxpZGF0ZTogYm9vbGVhbik6IHZvaWQ7XHJcbiAgZ2V0QWRkaXRpb25hbFBhcmFtcyh1aUFjdGlvbjogVWlBY3Rpb24pOiBVaUFjdGlvbkFkZGl0aW9uYWxQYXJhbXM7XHJcbiAgZ2V0TW9kZWwoKTogYW55O1xyXG4gIHBlcmZvcm1VaUFjdGlvblJlcXVlc3QoXHJcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCxcclxuICAgIHdpZGdldElkPzogc3RyaW5nLFxyXG4gICAgbm9kZUlkPzogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxhbnk+O1xyXG4gIGhhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5KFxyXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuICApOiBQcm9taXNlPFVpQWN0aW9uU3BlY2lmaWNEZW1hbmRSZXNwb25zZT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlBY3Rpb25TcGVjaWZpY0RlbWFuZFJlc3BvbnNlIHtcclxuICBzaG91bGRQZXJmb3JtQWN0aW9uOiBib29sZWFuO1xyXG4gIHVpQWN0aW9uUmVxdWVzdD86IFVpQWN0aW9uUmVxdWVzdDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVaUFjdGlvbkFkZGl0aW9uYWxQYXJhbXMge1xyXG4gIGZvclRleHRGaWVsZD86IHN0cmluZztcclxuICBmb3JUZXh0QXJlYT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVWlBY3Rpb25EaWFsb2dUeXBlIHtcclxuICBpbnB1dERpYWxvZyA9ICdpbnB1dERpYWxvZycsXHJcbiAgY29uZmlybURpYWxvZyA9ICdjb25maXJtRGlhbG9nJyxcclxuICBkaWFsb2cgPSAnZGlhbG9nJyxcclxufVxyXG4iXX0=
@@ -27,18 +27,28 @@ export class UiActionService {
27
27
  identifier: uiAction.identifier,
28
28
  params: uiAction.params ?? {},
29
29
  };
30
- if (uiAction.submit) {
31
- this.uiActionModel.serviceToUse.submit.next();
32
- try {
33
- await this.uiActionModel.serviceToUse.submit.toPromise();
34
- this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);
35
- this.uiActionModel.serviceToUse.reSubscribeToChange.next();
30
+ if (uiAction.submit || uiAction.model) {
31
+ // submit: with validation, model: without validation. both can be undefined
32
+ const validate = !uiAction.model;
33
+ if ('reSubscribeToChange' in this.uiActionModel.serviceToUse) {
34
+ if (!validate) {
35
+ console.error(`Validate = false, but UseUiAction doesn't support it`);
36
+ }
37
+ this.uiActionModel.serviceToUse.submit.next();
38
+ try {
39
+ await this.uiActionModel.serviceToUse.submit.toPromise();
40
+ this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);
41
+ this.uiActionModel.serviceToUse.reSubscribeToChange.next();
42
+ }
43
+ catch (error) {
44
+ console.error(error);
45
+ this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);
46
+ this.uiActionModel.serviceToUse.reSubscribeToChange.next();
47
+ return;
48
+ }
36
49
  }
37
- catch (error) {
38
- console.error(error);
39
- this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);
40
- this.uiActionModel.serviceToUse.reSubscribeToChange.next();
41
- return;
50
+ else {
51
+ this.uiActionModel.serviceToUse.submitForm(validate);
42
52
  }
43
53
  }
44
54
  if (uiAction.confirm) {
@@ -179,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
179
189
  providedIn: 'root',
180
190
  }]
181
191
  }], ctorParameters: function () { return [{ type: i1.UiActionConfirmDialogService }, { type: i2.UiActionInputDialogService }, { type: i3.UiActionFileUploadDialogService }, { type: i4.MatSnackBar }]; } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQVksb0JBQW9CLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sUUFBUSxDQUFDO0FBQzVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBS3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBaUJyRCxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUNVLG9CQUFrRCxFQUNsRCxzQkFBa0QsRUFDbEQsdUJBQXdELEVBQ3hELFNBQXNCO1FBSHRCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBOEI7UUFDbEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUE0QjtRQUNsRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWlDO1FBQ3hELGNBQVMsR0FBVCxTQUFTLENBQWE7UUFOeEIsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBTzlDLENBQUM7SUFFSixXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQWtCLEVBQUUsT0FBZ0M7UUFDaEUsSUFBSSxlQUE0QyxDQUFDO1FBRWpELGVBQWUsR0FBRztZQUNoQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUs7WUFDcEIsVUFBVSxF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RTthQUNsRCxDQUFDO1NBQ0g7YUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDMUIsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUM5RTtRQUVELElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUMxRCxlQUFlLEVBQ2YsT0FBTyxFQUFFLFFBQVEsRUFDakIsT0FBTyxFQUFFLE1BQU0sQ0FDaEIsQ0FBQztZQUVGLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxLQUFLLG9CQUFvQixDQUFDLFFBQVEsRUFBRTtnQkFDakYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2xDO1NBQ0Y7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQWtCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEVBQUU7WUFDekQsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJO1lBQ2xCLFVBQVUsRUFBRSxDQUFDLHdCQUF3QixDQUFDO1lBQ3RDLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NEdBdk9VLGVBQWU7Z0hBQWYsZUFBZSxjQUZkLE1BQU07MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5cclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbiwgVWlBY3Rpb25GZWVkYmFja1R5cGUsIFVpQWN0aW9uSW5wdXRUeXBlLCBVaUFjdGlvblJlcXVlc3QgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBTdWNjZXNzU25hY2tCYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc3VjY2Vzcy1zbmFjay1iYXIvc3VjY2Vzcy1zbmFjay1iYXIuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IFVpQWN0aW9uQ29uZmlybURpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZ3MvdWktYWN0aW9uLWNvbmZpcm0tZGlhbG9nL3VpLWFjdGlvbi1jb25maXJtLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25JbnB1dERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZ3MvdWktYWN0aW9uLWlucHV0LWRpYWxvZy91aS1hY3Rpb24taW5wdXQtZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbk1vZGVsIH0gZnJvbSAnLi91aS1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydFN1YmplY3QgfSBmcm9tICdAc21hcnRiaXQ0YWxsL3N1YmplY3QnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9kaWFsb2dzL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cvdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZVVpQWN0aW9uT3B0aW9ucyB7XHJcbiAgLyoqXHJcbiAgICogSW4gY2FzZSBvZiB1c2luZyBhIGdyaWQ6IGdyaWQuaWRlbnRpZmllclxyXG4gICAqL1xyXG4gIHdpZGdldElkPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEluIGNhc2Ugb2YgdXNpbmcgYSBncmlkOiBncmlkUm93LmlkXHJcbiAgICovXHJcbiAgbm9kZUlkPzogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlBY3Rpb25TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICB1aUFjdGlvbk1vZGVsITogVWlBY3Rpb25Nb2RlbDtcclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb25maXJtRGlhbG9nU2VydmljZTogVWlBY3Rpb25Db25maXJtRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgdGV4dEZpZWxkRGlhbG9nU2VydmljZTogVWlBY3Rpb25JbnB1dERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlOiBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc25hY2tCYXI6IE1hdFNuYWNrQmFyXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBleGVjdXRlKHVpQWN0aW9uOiBVaUFjdGlvbiwgb3B0aW9ucz86IEV4ZWN1dGVVaUFjdGlvbk9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICB1aUFjdGlvblJlcXVlc3QgPSB7XHJcbiAgICAgIGNvZGU6IHVpQWN0aW9uLmNvZGUhLFxyXG4gICAgICBpZGVudGlmaWVyOiB1aUFjdGlvbi5pZGVudGlmaWVyLFxyXG4gICAgICBwYXJhbXM6IHVpQWN0aW9uLnBhcmFtcyA/PyB7fSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHVpQWN0aW9uLnN1Ym1pdCkge1xyXG4gICAgICB0aGlzLnVpQWN0aW9uTW9kZWwuc2VydmljZVRvVXNlLnN1Ym1pdC5uZXh0KCk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy51aUFjdGlvbk1vZGVsLnNlcnZpY2VUb1VzZS5zdWJtaXQudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgdGhpcy51aUFjdGlvbk1vZGVsLnNlcnZpY2VUb1VzZS5zdWJtaXQgPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuICAgICAgICB0aGlzLnVpQWN0aW9uTW9kZWwuc2VydmljZVRvVXNlLnJlU3Vic2NyaWJlVG9DaGFuZ2UubmV4dCgpO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgdGhpcy51aUFjdGlvbk1vZGVsLnNlcnZpY2VUb1VzZS5zdWJtaXQgPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuICAgICAgICB0aGlzLnVpQWN0aW9uTW9kZWwuc2VydmljZVRvVXNlLnJlU3Vic2NyaWJlVG9DaGFuZ2UubmV4dCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh1aUFjdGlvbi5jb25maXJtKSB7XHJcbiAgICAgIHRoaXMuY29uZmlybURpYWxvZ1NlcnZpY2UuYWN0aW9uID0gdWlBY3Rpb247XHJcbiAgICAgIHRoaXMuY29uZmlybURpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZygpO1xyXG4gICAgICBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2dTZXJ2aWNlLm9uQWN0aW9uLnRvUHJvbWlzZSgpO1xyXG4gICAgICBpZiAoIXRoaXMuY29uZmlybURpYWxvZ1NlcnZpY2Uuc2hvdWxkRG9BY3Rpb24pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJbnB1dFR5cGVcclxuICAgIGlmICh1aUFjdGlvbi5pbnB1dFR5cGUpIHtcclxuICAgICAgdWlBY3Rpb25SZXF1ZXN0ID0gYXdhaXQgdGhpcy5oYW5kbGVJbnB1dFR5cGUoXHJcbiAgICAgICAgdWlBY3Rpb24uaW5wdXRUeXBlLFxyXG4gICAgICAgIHVpQWN0aW9uLFxyXG4gICAgICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgICAgICAnaW5wdXREaWFsb2cnXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghdWlBY3Rpb25SZXF1ZXN0KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDI1MCkpO1xyXG4gICAgfVxyXG4gICAgLy8gSW5wdXQyVHlwZVxyXG4gICAgaWYgKHVpQWN0aW9uLmlucHV0MlR5cGUpIHtcclxuICAgICAgdWlBY3Rpb25SZXF1ZXN0ID0gYXdhaXQgdGhpcy5oYW5kbGVJbnB1dFR5cGUoXHJcbiAgICAgICAgdWlBY3Rpb24uaW5wdXQyVHlwZSxcclxuICAgICAgICB1aUFjdGlvbixcclxuICAgICAgICB1aUFjdGlvblJlcXVlc3QsXHJcbiAgICAgICAgJ2lucHV0MkRpYWxvZydcclxuICAgICAgKTtcclxuICAgICAgaWYgKCF1aUFjdGlvblJlcXVlc3QpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy51aUFjdGlvbk1vZGVsLmV4Y2VwdGlvbikge1xyXG4gICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnVpQWN0aW9uTW9kZWwuc2VydmljZVRvVXNlLmhhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5KFxyXG4gICAgICAgIHVpQWN0aW9uLFxyXG4gICAgICAgIHVpQWN0aW9uUmVxdWVzdFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKCFyZXNwb25zZS5zaG91bGRQZXJmb3JtQWN0aW9uIHx8ICFyZXNwb25zZS51aUFjdGlvblJlcXVlc3QpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdWlBY3Rpb25SZXF1ZXN0ID0gcmVzcG9uc2UudWlBY3Rpb25SZXF1ZXN0O1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHRoaXMucGVyZm9ybUFjdGlvbih1aUFjdGlvbiwgdWlBY3Rpb25SZXF1ZXN0LCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlSW5wdXRUeXBlKFxyXG4gICAgaW5wdXRUeXBlOiBVaUFjdGlvbklucHV0VHlwZSxcclxuICAgIHVpQWN0aW9uOiBVaUFjdGlvbixcclxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0LFxyXG4gICAgaW5wdXRUeXBlTmFtZTogJ2lucHV0RGlhbG9nJyB8ICdpbnB1dDJEaWFsb2cnXHJcbiAgKTogUHJvbWlzZTxVaUFjdGlvblJlcXVlc3QgfCB1bmRlZmluZWQ+IHtcclxuICAgIHN3aXRjaCAoaW5wdXRUeXBlKSB7XHJcbiAgICAgIGNhc2UgVWlBY3Rpb25JbnB1dFR5cGUuTm9uZTpcclxuICAgICAgICByZXR1cm4gdWlBY3Rpb25SZXF1ZXN0O1xyXG4gICAgICBjYXNlIFVpQWN0aW9uSW5wdXRUeXBlLlRleHRhcmVhOlxyXG4gICAgICBjYXNlIFVpQWN0aW9uSW5wdXRUeXBlLlRleHRmaWVsZDpcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVJbnB1dFR5cGVUZXh0RmllbGQoaW5wdXRUeXBlTmFtZSwgdWlBY3Rpb24sIHVpQWN0aW9uUmVxdWVzdCk7XHJcbiAgICAgIGNhc2UgVWlBY3Rpb25JbnB1dFR5cGUuVXNlclNlbGVjdDpcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVJbnB1dFR5cGVVc2VyU2VsZWN0KGlucHV0VHlwZU5hbWUsIHVpQWN0aW9uLCB1aUFjdGlvblJlcXVlc3QpO1xyXG4gICAgICBjYXNlIFVpQWN0aW9uSW5wdXRUeXBlLkZpbGU6XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlSW5wdXRUeXBlVXBsb2FkKGlucHV0VHlwZU5hbWUsIHVpQWN0aW9uLCB1aUFjdGlvblJlcXVlc3QsIGZhbHNlKTtcclxuICAgICAgY2FzZSBVaUFjdGlvbklucHV0VHlwZS5NdWx0aXBsZUZpbGVzOlxyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZUlucHV0VHlwZVVwbG9hZChpbnB1dFR5cGVOYW1lLCB1aUFjdGlvbiwgdWlBY3Rpb25SZXF1ZXN0LCB0cnVlKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdWlBY3Rpb25SZXF1ZXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVJbnB1dFR5cGVUZXh0RmllbGQoXHJcbiAgICBpbnB1dFR5cGVOYW1lOiAnaW5wdXREaWFsb2cnIHwgJ2lucHV0MkRpYWxvZycsXHJcbiAgICB1aUFjdGlvbjogVWlBY3Rpb24sXHJcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdFxyXG4gICk6IFByb21pc2U8VWlBY3Rpb25SZXF1ZXN0IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBsZXQgYWRkaXRpb25hbFBhcmFtcyA9IHRoaXMudWlBY3Rpb25Nb2RlbC5zZXJ2aWNlVG9Vc2UuZ2V0QWRkaXRpb25hbFBhcmFtcyh1aUFjdGlvbik7XHJcbiAgICBsZXQgaW5wdXRUeXBlOiAnaW5wdXRUeXBlJyB8ICdpbnB1dDJUeXBlJyA9XHJcbiAgICAgIGlucHV0VHlwZU5hbWUgPT09ICdpbnB1dERpYWxvZycgPyAnaW5wdXRUeXBlJyA6ICdpbnB1dDJUeXBlJztcclxuXHJcbiAgICBpZiAodWlBY3Rpb25baW5wdXRUeXBlXSA9PT0gVWlBY3Rpb25JbnB1dFR5cGUuVGV4dGZpZWxkKSB7XHJcbiAgICAgIHRoaXMudGV4dEZpZWxkRGlhbG9nU2VydmljZS5ub2RlTmFtZSA9IGFkZGl0aW9uYWxQYXJhbXMuZm9yVGV4dEZpZWxkO1xyXG4gICAgfSBlbHNlIGlmICh1aUFjdGlvbltpbnB1dFR5cGVdID09PSBVaUFjdGlvbklucHV0VHlwZS5UZXh0YXJlYSkge1xyXG4gICAgICB0aGlzLnRleHRGaWVsZERpYWxvZ1NlcnZpY2Uubm9kZU5hbWUgPSBhZGRpdGlvbmFsUGFyYW1zLmZvclRleHRBcmVhO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGV4dEZpZWxkRGlhbG9nU2VydmljZS5pbnB1dFR5cGVOYW1lID0gaW5wdXRUeXBlTmFtZTtcclxuICAgIHRoaXMudGV4dEZpZWxkRGlhbG9nU2VydmljZS5hY3Rpb24gPSB1aUFjdGlvbjtcclxuXHJcbiAgICB0aGlzLnRleHRGaWVsZERpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZygpO1xyXG5cclxuICAgIGF3YWl0IHRoaXMudGV4dEZpZWxkRGlhbG9nU2VydmljZS5vbkFjdGlvbi50b1Byb21pc2UoKTtcclxuICAgIGxldCBwYXJhbXMgPSB0aGlzLnRleHRGaWVsZERpYWxvZ1NlcnZpY2UucGFyYW1zO1xyXG5cclxuICAgIGlmICghcGFyYW1zKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZXJlIHdhcyBubyByZXNwb25zZSBmcm9tIElucHV0RGlhbG9nJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXMgPSB7XHJcbiAgICAgIC4uLnVpQWN0aW9uUmVxdWVzdC5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gdWlBY3Rpb25SZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVJbnB1dFR5cGVVcGxvYWQoXHJcbiAgICBpbnB1dFR5cGVOYW1lOiAnaW5wdXREaWFsb2cnIHwgJ2lucHV0MkRpYWxvZycsXHJcbiAgICB1aUFjdGlvbjogVWlBY3Rpb24sXHJcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCxcclxuICAgIGlzTXVsdGlwbGU6IGJvb2xlYW5cclxuICApOiBQcm9taXNlPFVpQWN0aW9uUmVxdWVzdCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkRGlhbG9nU2VydmljZS5pbnB1dFR5cGVOYW1lID0gaW5wdXRUeXBlTmFtZTtcclxuICAgIHRoaXMuZmlsZVVwbG9hZERpYWxvZ1NlcnZpY2UuYWN0aW9uID0gdWlBY3Rpb247XHJcbiAgICB0aGlzLmZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlLmlzTXVsdGlwbGUgPSBpc011bHRpcGxlO1xyXG5cclxuICAgIHRoaXMuZmlsZVVwbG9hZERpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZygpO1xyXG5cclxuICAgIGF3YWl0IHRoaXMuZmlsZVVwbG9hZERpYWxvZ1NlcnZpY2Uub25BY3Rpb24udG9Qcm9taXNlKCk7XHJcbiAgICBsZXQgZmlsZXMgPSB0aGlzLmZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlLmZpbGVzO1xyXG5cclxuICAgIGlmICghZmlsZXMgfHwgIWZpbGVzLmxlbmd0aCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdUaGVyZSB3YXMgbm8gcmVzcG9uc2UgZnJvbSBJbnB1dERpYWxvZycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB1aUFjdGlvblJlcXVlc3QucGFyYW1zID0ge1xyXG4gICAgICAuLi51aUFjdGlvblJlcXVlc3QucGFyYW1zLFxyXG4gICAgICBfZmlsZXM6IGZpbGVzLFxyXG4gICAgICBpc011bHRpcGxlLFxyXG4gICAgICBwYXJhbTpcclxuICAgICAgICB1aUFjdGlvbi5pbnB1dFR5cGUgPT09ICdmaWxlJyB8fCB1aUFjdGlvbi5pbnB1dFR5cGUgPT09ICdtdWx0aXBsZV9maWxlcydcclxuICAgICAgICAgID8gJ0lOUFVUJ1xyXG4gICAgICAgICAgOiAnSU5QVVQyJyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gdWlBY3Rpb25SZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVJbnB1dFR5cGVVc2VyU2VsZWN0KFxyXG4gICAgaW5wdXRUeXBlTmFtZTogJ2lucHV0RGlhbG9nJyB8ICdpbnB1dDJEaWFsb2cnLFxyXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuICApOiBQcm9taXNlPFVpQWN0aW9uUmVxdWVzdCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy51aUFjdGlvbk1vZGVsLnNlcnZpY2VUb1VzZS5oYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseShcclxuICAgICAgdWlBY3Rpb24sXHJcbiAgICAgIHVpQWN0aW9uUmVxdWVzdFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXJlc3BvbnNlLnNob3VsZFBlcmZvcm1BY3Rpb24gfHwgIXJlc3BvbnNlLnVpQWN0aW9uUmVxdWVzdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB1aUFjdGlvblJlcXVlc3QgPSByZXNwb25zZS51aUFjdGlvblJlcXVlc3Q7XHJcbiAgICByZXR1cm4gdWlBY3Rpb25SZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBwZXJmb3JtQWN0aW9uKFxyXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QsXHJcbiAgICBvcHRpb25zPzogRXhlY3V0ZVVpQWN0aW9uT3B0aW9uc1xyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdWlBY3Rpb25SZXF1ZXN0LnBhcmFtcyB8fFxyXG4gICAgICAodWlBY3Rpb25SZXF1ZXN0LnBhcmFtcyAmJiAhT2JqZWN0LmtleXModWlBY3Rpb25SZXF1ZXN0LnBhcmFtcykubGVuZ3RoKVxyXG4gICAgKSB7XHJcbiAgICAgIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXMgPSB7XHJcbiAgICAgICAgbW9kZWw6IHRoaXMudWlBY3Rpb25Nb2RlbC5zZXJ2aWNlVG9Vc2UuZ2V0TW9kZWwoKSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSBpZiAodWlBY3Rpb24uc3VibWl0KSB7XHJcbiAgICAgIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ21vZGVsJ10gPSB0aGlzLnVpQWN0aW9uTW9kZWwuc2VydmljZVRvVXNlLmdldE1vZGVsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy51aUFjdGlvbk1vZGVsLnNlcnZpY2VUb1VzZS5wZXJmb3JtVWlBY3Rpb25SZXF1ZXN0KFxyXG4gICAgICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgICAgICBvcHRpb25zPy53aWRnZXRJZCxcclxuICAgICAgICBvcHRpb25zPy5ub2RlSWRcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uZmVlZGJhY2tUeXBlID09PSBVaUFjdGlvbkZlZWRiYWNrVHlwZS5TbmFja2Jhcikge1xyXG4gICAgICAgIHRoaXMuc2hvd1NhdmVkU25hY2tiYXIodWlBY3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd1NhdmVkU25hY2tiYXIodWlBY3Rpb246IFVpQWN0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zbmFja0Jhci5vcGVuRnJvbUNvbXBvbmVudChTdWNjZXNzU25hY2tCYXJDb21wb25lbnQsIHtcclxuICAgICAgZHVyYXRpb246IDUgKiAxMDAwLFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ2JhY2tncm91bmRDb2xvci1hY2NlbnQnXSxcclxuICAgICAgZGF0YTogdWlBY3Rpb24sXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQVksb0JBQW9CLEVBQUUsaUJBQWlCLEVBQW1CLE1BQU0sUUFBUSxDQUFDO0FBQzVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBS3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBaUJyRCxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUNVLG9CQUFrRCxFQUNsRCxzQkFBa0QsRUFDbEQsdUJBQXdELEVBQ3hELFNBQXNCO1FBSHRCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBOEI7UUFDbEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUE0QjtRQUNsRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWlDO1FBQ3hELGNBQVMsR0FBVCxTQUFTLENBQWE7UUFOeEIsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBTzlDLENBQUM7SUFFSixXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQWtCLEVBQUUsT0FBZ0M7UUFDaEUsSUFBSSxlQUE0QyxDQUFDO1FBRWpELGVBQWUsR0FBRztZQUNoQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUs7WUFDcEIsVUFBVSxF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QUksRUFBRSxRQUFRO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NEdBalBVLGVBQWU7Z0hBQWYsZUFBZSxjQUZkLE1BQU07MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5cclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbiwgVWlBY3Rpb25GZWVkYmFja1R5cGUsIFVpQWN0aW9uSW5wdXRUeXBlLCBVaUFjdGlvblJlcXVlc3QgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBTdWNjZXNzU25hY2tCYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc3VjY2Vzcy1zbmFjay1iYXIvc3VjY2Vzcy1zbmFjay1iYXIuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IFVpQWN0aW9uQ29uZmlybURpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZ3MvdWktYWN0aW9uLWNvbmZpcm0tZGlhbG9nL3VpLWFjdGlvbi1jb25maXJtLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25JbnB1dERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZ3MvdWktYWN0aW9uLWlucHV0LWRpYWxvZy91aS1hY3Rpb24taW5wdXQtZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbk1vZGVsIH0gZnJvbSAnLi91aS1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydFN1YmplY3QgfSBmcm9tICdAc21hcnRiaXQ0YWxsL3N1YmplY3QnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9kaWFsb2dzL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cvdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZVVpQWN0aW9uT3B0aW9ucyB7XHJcbiAgLyoqXHJcbiAgICogSW4gY2FzZSBvZiB1c2luZyBhIGdyaWQ6IGdyaWQuaWRlbnRpZmllclxyXG4gICAqL1xyXG4gIHdpZGdldElkPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEluIGNhc2Ugb2YgdXNpbmcgYSBncmlkOiBncmlkUm93LmlkXHJcbiAgICovXHJcbiAgbm9kZUlkPzogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlBY3Rpb25TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICB1aUFjdGlvbk1vZGVsITogVWlBY3Rpb25Nb2RlbDtcclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb25maXJtRGlhbG9nU2VydmljZTogVWlBY3Rpb25Db25maXJtRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgdGV4dEZpZWxkRGlhbG9nU2VydmljZTogVWlBY3Rpb25JbnB1dERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlOiBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc25hY2tCYXI6IE1hdFNuYWNrQmFyXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBleGVjdXRlKHVpQWN0aW9uOiBVaUFjdGlvbiwgb3B0aW9ucz86IEV4ZWN1dGVVaUFjdGlvbk9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICB1aUFjdGlvblJlcXVlc3QgPSB7XHJcbiAgICAgIGNvZGU6IHVpQWN0aW9uLmNvZGUhLFxyXG4gICAgICBpZGVudGlmaWVyOiB1aUFjdGlvbi5pZGVudGlmaWVyLFxyXG4gICAgICBwYXJhbXM6IHVpQWN0aW9uLnBhcmFtcyA/PyB7fSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHVpQWN0aW9uLnN1Ym1pdCB8fCB1aUFjdGlvbi5tb2RlbCkge1xyXG4gICAgICAvLyBzdWJtaXQ6IHdpdGggdmFsaWRhdGlvbiwgbW9kZWw6IHdpdGhvdXQgdmFsaWRhdGlvbi4gYm90aCBjYW4gYmUgdW5kZWZpbmVkXHJcbiAgICAgIGNvbnN0IHZhbGlkYXRlID0gIXVpQWN0aW9uLm1vZGVsO1xyXG5cclxuICAgICAgaWYgKCdyZVN1YnNjcmliZVRvQ2hhbmdlJyBpbiB0aGlzLnVpQWN0aW9uTW9kZWwuc2VydmljZVRvVXNlKSB7XHJcbiAgICAgICAgaWYgKCF2YWxpZGF0ZSkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgVmFsaWRhdGUgPSBmYWxzZSwgYnV0IFVzZVVpQWN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBpdGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVpQWN0aW9uTW9kZWwuc2VydmljZVRvVXNlLnN1Ym1pdC5uZXh0KCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMudWlBY3Rpb25Nb2RlbC5zZXJ2aWNlVG9Vc2Uuc3VibWl0LnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgdGhpcy51aUFjdGlvbk1vZGVsLnNlcnZpY2VUb1VzZS5zdWJtaXQgPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuICAgICAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbC5zZXJ2aWNlVG9Vc2UucmVTdWJzY3JpYmVUb0NoYW5nZS5uZXh0KCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB0aGlzLnVpQWN0aW9uTW9kZWwuc2VydmljZVRvVXNlLnN1Ym1pdCA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG4gICAgICAgICAgdGhpcy51aUFjdGlvbk1vZGVsLnNlcnZpY2VUb1VzZS5yZVN1YnNjcmliZVRvQ2hhbmdlLm5leHQoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy51aUFjdGlvbk1vZGVsLnNlcnZpY2VUb1VzZS5zdWJtaXRGb3JtKHZhbGlkYXRlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh1aUFjdGlvbi5jb25maXJtKSB7XHJcbiAgICAgIHRoaXMuY29uZmlybURpYWxvZ1NlcnZpY2UuYWN0aW9uID0gdWlBY3Rpb247XHJcbiAgICAgIHRoaXMuY29uZmlybURpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZygpO1xyXG4gICAgICBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2dTZXJ2aWNlLm9uQWN0aW9uLnRvUHJvbWlzZSgpO1xyXG4gICAgICBpZiAoIXRoaXMuY29uZmlybURpYWxvZ1NlcnZpY2Uuc2hvdWxkRG9BY3Rpb24pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJbnB1dFR5cGVcclxuICAgIGlmICh1aUFjdGlvbi5pbnB1dFR5cGUpIHtcclxuICAgICAgdWlBY3Rpb25SZXF1ZXN0ID0gYXdhaXQgdGhpcy5oYW5kbGVJbnB1dFR5cGUoXHJcbiAgICAgICAgdWlBY3Rpb24uaW5wdXRUeXBlLFxyXG4gICAgICAgIHVpQWN0aW9uLFxyXG4gICAgICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgICAgICAnaW5wdXREaWFsb2cnXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICghdWlBY3Rpb25SZXF1ZXN0KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDI1MCkpO1xyXG4gICAgfVxyXG4gICAgLy8gSW5wdXQyVHlwZVxyXG4gICAgaWYgKHVpQWN0aW9uLmlucHV0MlR5cGUpIHtcclxuICAgICAgdWlBY3Rpb25SZXF1ZXN0ID0gYXdhaXQgdGhpcy5oYW5kbGVJbnB1dFR5cGUoXHJcbiAgICAgICAgdWlBY3Rpb24uaW5wdXQyVHlwZSxcclxuICAgICAgICB1aUFjdGlvbixcclxuICAgICAgICB1aUFjdGlvblJlcXVlc3QsXHJcbiAgICAgICAgJ2lucHV0MkRpYWxvZydcclxuICAgICAgKTtcclxuICAgICAgaWYgKCF1aUFjdGlvblJlcXVlc3QpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy51aUFjdGlvbk1vZGVsLmV4Y2VwdGlvbikge1xyXG4gICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnVpQWN0aW9uTW9kZWwuc2VydmljZVRvVXNlLmhhbmRsZVNwZWNpZmljRGVtYW5kc0FzeW5jaHJvbm91c2x5KFxyXG4gICAgICAgIHVpQWN0aW9uLFxyXG4gICAgICAgIHVpQWN0aW9uUmVxdWVzdFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKCFyZXNwb25zZS5zaG91bGRQZXJmb3JtQWN0aW9uIHx8ICFyZXNwb25zZS51aUFjdGlvblJlcXVlc3QpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdWlBY3Rpb25SZXF1ZXN0ID0gcmVzcG9uc2UudWlBY3Rpb25SZXF1ZXN0O1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHRoaXMucGVyZm9ybUFjdGlvbih1aUFjdGlvbiwgdWlBY3Rpb25SZXF1ZXN0LCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlSW5wdXRUeXBlKFxyXG4gICAgaW5wdXRUeXBlOiBVaUFjdGlvbklucHV0VHlwZSxcclxuICAgIHVpQWN0aW9uOiBVaUFjdGlvbixcclxuICAgIHVpQWN0aW9uUmVxdWVzdDogVWlBY3Rpb25SZXF1ZXN0LFxyXG4gICAgaW5wdXRUeXBlTmFtZTogJ2lucHV0RGlhbG9nJyB8ICdpbnB1dDJEaWFsb2cnXHJcbiAgKTogUHJvbWlzZTxVaUFjdGlvblJlcXVlc3QgfCB1bmRlZmluZWQ+IHtcclxuICAgIHN3aXRjaCAoaW5wdXRUeXBlKSB7XHJcbiAgICAgIGNhc2UgVWlBY3Rpb25JbnB1dFR5cGUuTm9uZTpcclxuICAgICAgICByZXR1cm4gdWlBY3Rpb25SZXF1ZXN0O1xyXG4gICAgICBjYXNlIFVpQWN0aW9uSW5wdXRUeXBlLlRleHRhcmVhOlxyXG4gICAgICBjYXNlIFVpQWN0aW9uSW5wdXRUeXBlLlRleHRmaWVsZDpcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVJbnB1dFR5cGVUZXh0RmllbGQoaW5wdXRUeXBlTmFtZSwgdWlBY3Rpb24sIHVpQWN0aW9uUmVxdWVzdCk7XHJcbiAgICAgIGNhc2UgVWlBY3Rpb25JbnB1dFR5cGUuVXNlclNlbGVjdDpcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVJbnB1dFR5cGVVc2VyU2VsZWN0KGlucHV0VHlwZU5hbWUsIHVpQWN0aW9uLCB1aUFjdGlvblJlcXVlc3QpO1xyXG4gICAgICBjYXNlIFVpQWN0aW9uSW5wdXRUeXBlLkZpbGU6XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlSW5wdXRUeXBlVXBsb2FkKGlucHV0VHlwZU5hbWUsIHVpQWN0aW9uLCB1aUFjdGlvblJlcXVlc3QsIGZhbHNlKTtcclxuICAgICAgY2FzZSBVaUFjdGlvbklucHV0VHlwZS5NdWx0aXBsZUZpbGVzOlxyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZUlucHV0VHlwZVVwbG9hZChpbnB1dFR5cGVOYW1lLCB1aUFjdGlvbiwgdWlBY3Rpb25SZXF1ZXN0LCB0cnVlKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdWlBY3Rpb25SZXF1ZXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVJbnB1dFR5cGVUZXh0RmllbGQoXHJcbiAgICBpbnB1dFR5cGVOYW1lOiAnaW5wdXREaWFsb2cnIHwgJ2lucHV0MkRpYWxvZycsXHJcbiAgICB1aUFjdGlvbjogVWlBY3Rpb24sXHJcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdFxyXG4gICk6IFByb21pc2U8VWlBY3Rpb25SZXF1ZXN0IHwgdW5kZWZpbmVkPiB7XHJcbiAgICBsZXQgYWRkaXRpb25hbFBhcmFtcyA9IHRoaXMudWlBY3Rpb25Nb2RlbC5zZXJ2aWNlVG9Vc2UuZ2V0QWRkaXRpb25hbFBhcmFtcyh1aUFjdGlvbik7XHJcbiAgICBsZXQgaW5wdXRUeXBlOiAnaW5wdXRUeXBlJyB8ICdpbnB1dDJUeXBlJyA9XHJcbiAgICAgIGlucHV0VHlwZU5hbWUgPT09ICdpbnB1dERpYWxvZycgPyAnaW5wdXRUeXBlJyA6ICdpbnB1dDJUeXBlJztcclxuXHJcbiAgICBpZiAodWlBY3Rpb25baW5wdXRUeXBlXSA9PT0gVWlBY3Rpb25JbnB1dFR5cGUuVGV4dGZpZWxkKSB7XHJcbiAgICAgIHRoaXMudGV4dEZpZWxkRGlhbG9nU2VydmljZS5ub2RlTmFtZSA9IGFkZGl0aW9uYWxQYXJhbXMuZm9yVGV4dEZpZWxkO1xyXG4gICAgfSBlbHNlIGlmICh1aUFjdGlvbltpbnB1dFR5cGVdID09PSBVaUFjdGlvbklucHV0VHlwZS5UZXh0YXJlYSkge1xyXG4gICAgICB0aGlzLnRleHRGaWVsZERpYWxvZ1NlcnZpY2Uubm9kZU5hbWUgPSBhZGRpdGlvbmFsUGFyYW1zLmZvclRleHRBcmVhO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGV4dEZpZWxkRGlhbG9nU2VydmljZS5pbnB1dFR5cGVOYW1lID0gaW5wdXRUeXBlTmFtZTtcclxuICAgIHRoaXMudGV4dEZpZWxkRGlhbG9nU2VydmljZS5hY3Rpb24gPSB1aUFjdGlvbjtcclxuXHJcbiAgICB0aGlzLnRleHRGaWVsZERpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZygpO1xyXG5cclxuICAgIGF3YWl0IHRoaXMudGV4dEZpZWxkRGlhbG9nU2VydmljZS5vbkFjdGlvbi50b1Byb21pc2UoKTtcclxuICAgIGxldCBwYXJhbXMgPSB0aGlzLnRleHRGaWVsZERpYWxvZ1NlcnZpY2UucGFyYW1zO1xyXG5cclxuICAgIGlmICghcGFyYW1zKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZXJlIHdhcyBubyByZXNwb25zZSBmcm9tIElucHV0RGlhbG9nJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXMgPSB7XHJcbiAgICAgIC4uLnVpQWN0aW9uUmVxdWVzdC5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gdWlBY3Rpb25SZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVJbnB1dFR5cGVVcGxvYWQoXHJcbiAgICBpbnB1dFR5cGVOYW1lOiAnaW5wdXREaWFsb2cnIHwgJ2lucHV0MkRpYWxvZycsXHJcbiAgICB1aUFjdGlvbjogVWlBY3Rpb24sXHJcbiAgICB1aUFjdGlvblJlcXVlc3Q6IFVpQWN0aW9uUmVxdWVzdCxcclxuICAgIGlzTXVsdGlwbGU6IGJvb2xlYW5cclxuICApOiBQcm9taXNlPFVpQWN0aW9uUmVxdWVzdCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkRGlhbG9nU2VydmljZS5pbnB1dFR5cGVOYW1lID0gaW5wdXRUeXBlTmFtZTtcclxuICAgIHRoaXMuZmlsZVVwbG9hZERpYWxvZ1NlcnZpY2UuYWN0aW9uID0gdWlBY3Rpb247XHJcbiAgICB0aGlzLmZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlLmlzTXVsdGlwbGUgPSBpc011bHRpcGxlO1xyXG5cclxuICAgIHRoaXMuZmlsZVVwbG9hZERpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZygpO1xyXG5cclxuICAgIGF3YWl0IHRoaXMuZmlsZVVwbG9hZERpYWxvZ1NlcnZpY2Uub25BY3Rpb24udG9Qcm9taXNlKCk7XHJcbiAgICBsZXQgZmlsZXMgPSB0aGlzLmZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlLmZpbGVzO1xyXG5cclxuICAgIGlmICghZmlsZXMgfHwgIWZpbGVzLmxlbmd0aCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdUaGVyZSB3YXMgbm8gcmVzcG9uc2UgZnJvbSBJbnB1dERpYWxvZycpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB1aUFjdGlvblJlcXVlc3QucGFyYW1zID0ge1xyXG4gICAgICAuLi51aUFjdGlvblJlcXVlc3QucGFyYW1zLFxyXG4gICAgICBfZmlsZXM6IGZpbGVzLFxyXG4gICAgICBpc011bHRpcGxlLFxyXG4gICAgICBwYXJhbTpcclxuICAgICAgICB1aUFjdGlvbi5pbnB1dFR5cGUgPT09ICdmaWxlJyB8fCB1aUFjdGlvbi5pbnB1dFR5cGUgPT09ICdtdWx0aXBsZV9maWxlcydcclxuICAgICAgICAgID8gJ0lOUFVUJ1xyXG4gICAgICAgICAgOiAnSU5QVVQyJyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gdWlBY3Rpb25SZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVJbnB1dFR5cGVVc2VyU2VsZWN0KFxyXG4gICAgaW5wdXRUeXBlTmFtZTogJ2lucHV0RGlhbG9nJyB8ICdpbnB1dDJEaWFsb2cnLFxyXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3RcclxuICApOiBQcm9taXNlPFVpQWN0aW9uUmVxdWVzdCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy51aUFjdGlvbk1vZGVsLnNlcnZpY2VUb1VzZS5oYW5kbGVTcGVjaWZpY0RlbWFuZHNBc3luY2hyb25vdXNseShcclxuICAgICAgdWlBY3Rpb24sXHJcbiAgICAgIHVpQWN0aW9uUmVxdWVzdFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXJlc3BvbnNlLnNob3VsZFBlcmZvcm1BY3Rpb24gfHwgIXJlc3BvbnNlLnVpQWN0aW9uUmVxdWVzdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB1aUFjdGlvblJlcXVlc3QgPSByZXNwb25zZS51aUFjdGlvblJlcXVlc3Q7XHJcbiAgICByZXR1cm4gdWlBY3Rpb25SZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBwZXJmb3JtQWN0aW9uKFxyXG4gICAgdWlBY3Rpb246IFVpQWN0aW9uLFxyXG4gICAgdWlBY3Rpb25SZXF1ZXN0OiBVaUFjdGlvblJlcXVlc3QsXHJcbiAgICBvcHRpb25zPzogRXhlY3V0ZVVpQWN0aW9uT3B0aW9uc1xyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdWlBY3Rpb25SZXF1ZXN0LnBhcmFtcyB8fFxyXG4gICAgICAodWlBY3Rpb25SZXF1ZXN0LnBhcmFtcyAmJiAhT2JqZWN0LmtleXModWlBY3Rpb25SZXF1ZXN0LnBhcmFtcykubGVuZ3RoKVxyXG4gICAgKSB7XHJcbiAgICAgIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXMgPSB7XHJcbiAgICAgICAgbW9kZWw6IHRoaXMudWlBY3Rpb25Nb2RlbC5zZXJ2aWNlVG9Vc2UuZ2V0TW9kZWwoKSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSBpZiAodWlBY3Rpb24uc3VibWl0KSB7XHJcbiAgICAgIHVpQWN0aW9uUmVxdWVzdC5wYXJhbXNbJ21vZGVsJ10gPSB0aGlzLnVpQWN0aW9uTW9kZWwuc2VydmljZVRvVXNlLmdldE1vZGVsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy51aUFjdGlvbk1vZGVsLnNlcnZpY2VUb1VzZS5wZXJmb3JtVWlBY3Rpb25SZXF1ZXN0KFxyXG4gICAgICAgIHVpQWN0aW9uUmVxdWVzdCxcclxuICAgICAgICBvcHRpb25zPy53aWRnZXRJZCxcclxuICAgICAgICBvcHRpb25zPy5ub2RlSWRcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uZmVlZGJhY2tUeXBlID09PSBVaUFjdGlvbkZlZWRiYWNrVHlwZS5TbmFja2Jhcikge1xyXG4gICAgICAgIHRoaXMuc2hvd1NhdmVkU25hY2tiYXIodWlBY3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd1NhdmVkU25hY2tiYXIodWlBY3Rpb246IFVpQWN0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zbmFja0Jhci5vcGVuRnJvbUNvbXBvbmVudChTdWNjZXNzU25hY2tCYXJDb21wb25lbnQsIHtcclxuICAgICAgZHVyYXRpb246IDUgKiAxMDAwLFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ2JhY2tncm91bmRDb2xvci1hY2NlbnQnXSxcclxuICAgICAgZGF0YTogdWlBY3Rpb24sXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -4120,18 +4120,28 @@ class UiActionService {
4120
4120
  identifier: uiAction.identifier,
4121
4121
  params: (_a = uiAction.params) !== null && _a !== void 0 ? _a : {},
4122
4122
  };
4123
- if (uiAction.submit) {
4124
- this.uiActionModel.serviceToUse.submit.next();
4125
- try {
4126
- yield this.uiActionModel.serviceToUse.submit.toPromise();
4127
- this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);
4128
- this.uiActionModel.serviceToUse.reSubscribeToChange.next();
4123
+ if (uiAction.submit || uiAction.model) {
4124
+ // submit: with validation, model: without validation. both can be undefined
4125
+ const validate = !uiAction.model;
4126
+ if ('reSubscribeToChange' in this.uiActionModel.serviceToUse) {
4127
+ if (!validate) {
4128
+ console.error(`Validate = false, but UseUiAction doesn't support it`);
4129
+ }
4130
+ this.uiActionModel.serviceToUse.submit.next();
4131
+ try {
4132
+ yield this.uiActionModel.serviceToUse.submit.toPromise();
4133
+ this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);
4134
+ this.uiActionModel.serviceToUse.reSubscribeToChange.next();
4135
+ }
4136
+ catch (error) {
4137
+ console.error(error);
4138
+ this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);
4139
+ this.uiActionModel.serviceToUse.reSubscribeToChange.next();
4140
+ return;
4141
+ }
4129
4142
  }
4130
- catch (error) {
4131
- console.error(error);
4132
- this.uiActionModel.serviceToUse.submit = new SmartSubject(this._destroy$);
4133
- this.uiActionModel.serviceToUse.reSubscribeToChange.next();
4134
- return;
4143
+ else {
4144
+ this.uiActionModel.serviceToUse.submitForm(validate);
4135
4145
  }
4136
4146
  }
4137
4147
  if (uiAction.confirm) {
@@ -5912,14 +5922,31 @@ let SmartComponentApiClient = class SmartComponentApiClient {
5912
5922
  this.pageName = pageName;
5913
5923
  this._destroy$ = new Subject();
5914
5924
  this.sendDataChanges = false;
5915
- this._useAutoSubmit = false;
5916
- this._useAutoSubmitTurnedOff = new SmartSubject(this._destroy$);
5925
+ // private _useAutoSubmit: boolean = false;
5926
+ // private _useAutoSubmitTurnedOff: Subject<void> = new SmartSubject(this._destroy$);
5927
+ // protected get useAutoSubmit(): boolean {
5928
+ // return this._useAutoSubmit;
5929
+ // }
5930
+ // protected set useAutoSubmit(useAutoSubmit: boolean) {
5931
+ // this._useAutoSubmit = useAutoSubmit;
5932
+ // if (this._useAutoSubmit) {
5933
+ // this.subscribeToAutoSubmit();
5934
+ // this.reSubscribeToChange.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {
5935
+ // this.subscribeToAutoSubmit();
5936
+ // });
5937
+ // } else {
5938
+ // this._useAutoSubmitTurnedOff.next();
5939
+ // }
5940
+ // }
5941
+ // private subscribeToAutoSubmit(): void {
5942
+ // this.submit.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {
5943
+ // this.submitForms();
5944
+ // this.submit.complete();
5945
+ // });
5946
+ // }
5917
5947
  this.detectChange = new SmartSubject(this._destroy$);
5918
5948
  this.uiActionModels = [];
5919
5949
  this.dataChanged = new SmartSubject(this._destroy$);
5920
- // UseUiAction
5921
- this.submit = new SmartSubject(this._destroy$);
5922
- this.reSubscribeToChange = new SmartSubject(this._destroy$);
5923
5950
  // Contained Widgets
5924
5951
  this.widgets = new WidgetMap();
5925
5952
  this.formWidgets = new WidgetMap();
@@ -5930,27 +5957,6 @@ let SmartComponentApiClient = class SmartComponentApiClient {
5930
5957
  this.uiActionService = inject.get(UiActionService);
5931
5958
  this.uiActionDescriptorService = inject.get(UiActionDescriptorService);
5932
5959
  }
5933
- get useAutoSubmit() {
5934
- return this._useAutoSubmit;
5935
- }
5936
- set useAutoSubmit(useAutoSubmit) {
5937
- this._useAutoSubmit = useAutoSubmit;
5938
- if (this._useAutoSubmit) {
5939
- this.subscribeToAutoSubmit();
5940
- this.reSubscribeToChange.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {
5941
- this.subscribeToAutoSubmit();
5942
- });
5943
- }
5944
- else {
5945
- this._useAutoSubmitTurnedOff.next();
5946
- }
5947
- }
5948
- subscribeToAutoSubmit() {
5949
- this.submit.pipe(takeUntil(this._useAutoSubmitTurnedOff)).subscribe(() => {
5950
- this.submitForms();
5951
- this.submit.complete();
5952
- });
5953
- }
5954
5960
  get uuid() {
5955
5961
  return this._uuid;
5956
5962
  }
@@ -6063,6 +6069,9 @@ let SmartComponentApiClient = class SmartComponentApiClient {
6063
6069
  getModel() {
6064
6070
  return this.data;
6065
6071
  }
6072
+ submitForm(validate) {
6073
+ this.submitForms(validate);
6074
+ }
6066
6075
  performUiActionRequest(uiActionRequest, widgetId, nodeId) {
6067
6076
  return __awaiter(this, void 0, void 0, function* () {
6068
6077
  if (uiActionRequest.params['_files']) {
@@ -6097,10 +6106,10 @@ let SmartComponentApiClient = class SmartComponentApiClient {
6097
6106
  /**
6098
6107
  * Submits all the registered forms in the SmartComponent
6099
6108
  */
6100
- submitForms() {
6109
+ submitForms(validate) {
6101
6110
  Object.keys(this.formWidgets.widgets).map((key) => {
6102
6111
  var _a;
6103
- (_a = this.formWidgets.widgets.get(key)) === null || _a === void 0 ? void 0 : _a.submitForm();
6112
+ (_a = this.formWidgets.widgets.get(key)) === null || _a === void 0 ? void 0 : _a.submitForm(validate);
6104
6113
  });
6105
6114
  }
6106
6115
  addGrid(smartGrid, options, useAsDefaultGrid, componentReference) {