@dsivd/prestations-ng 16.5.1-beta.2 → 16.5.1-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ---
8
8
 
9
- ## [16.5.1]
9
+ ## [16.5.1] - must be aligned with prestations-be (16.5.1+)
10
10
 
11
11
  ### Added
12
12
 
@@ -18,7 +18,17 @@
18
18
  - [foehn-menu-item.component.ts](projects/prestations-ng/src/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.ts)
19
19
  - added `@Input() queryParamsHandling: QueryParamsHandling = ''` to configure the router link
20
20
 
21
- ## [16.5.0] - must be aligned with prestations-be (16.5.x)
21
+ ### Updated
22
+
23
+ - [bo-multi-upload.service.ts](projects/prestations-ng/src/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.ts)
24
+ - now opens redirect modal to cyberLogin when adding or deleting a document fails due to required authentification
25
+
26
+ ### Fixed
27
+
28
+ - [foehn-multiselect-autocomplete.component.ts](projects/prestations-ng/src/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.ts)
29
+ - fixed bug where multi-select would remain hidden after clearing the model (when all elements were selected)
30
+
31
+ ## [16.5.0] - must be aligned with prestations-be (16.5.0+)
22
32
 
23
33
  ### Updated
24
34
 
@@ -44,6 +44,12 @@ export class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComp
44
44
  this.hostName = this.hostId;
45
45
  this.excludeFromErrorSummary = true;
46
46
  }
47
+ onModelChange(value) {
48
+ super.onModelChange(value);
49
+ if (!value || ObjectHelper.isEmpty(value)) {
50
+ this.manageSuggestionListAndFocusAfterRemovingAnItem(null);
51
+ }
52
+ }
47
53
  hasErrorsToDisplay() {
48
54
  return !!this.autocompleteComponent
49
55
  ? this.autocompleteComponent.hasErrorsToDisplay()
@@ -195,15 +201,19 @@ export class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComp
195
201
  manageSuggestionListAndFocusAfterRemovingAnItem(removedIndex) {
196
202
  // Hide message saying no more suggestions to display
197
203
  this.showEmptyListMessage = false;
198
- // Manually show autocomplete because there is at least one suggestions to display
199
- this.autocompleteComponent.inputElement.nativeElement.hidden = false;
200
- // Add back selected item to autocomplete suggestion list
201
- this.autocompleteComponent.elements = this.filterAutocompleteElements(this.elements);
202
- // When deleting a selected item, check were to set focus back when no more items to delete
203
- // eslint-disable-next-line rxjs-angular/prefer-async-pipe
204
- this.selectedElemRef.changes.pipe(first()).subscribe(() => {
205
- this.focusNextAreaAfterDelete(removedIndex);
206
- });
204
+ if (this.autocompleteComponent) {
205
+ // Manually show autocomplete because there is at least one suggestions to display
206
+ this.autocompleteComponent.inputElement.nativeElement.hidden = false;
207
+ // Add back selected item to autocomplete suggestion list
208
+ this.autocompleteComponent.elements = this.filterAutocompleteElements(this.elements);
209
+ }
210
+ if (removedIndex !== null) {
211
+ // When deleting a selected item, check were to set focus back when no more items to delete
212
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
213
+ this.selectedElemRef.changes.pipe(first()).subscribe(() => {
214
+ this.focusNextAreaAfterDelete(removedIndex);
215
+ });
216
+ }
207
217
  }
208
218
  showAlertMessageAndHideAutocomplete() {
209
219
  // Show a message to user indicating there is no more suggestions to display
@@ -271,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
271
281
  }], defaultElementValue: [{
272
282
  type: Input
273
283
  }] } });
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0gsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUlMLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQWlCeEQsTUFBTSxPQUFPLHFDQUNULFNBQVEsMEJBQTBCO0lBMkNsQyxZQUNJLE1BQWMsRUFDTixpQkFBdUM7UUFFL0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRk4sc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQXpCbkQ7OztXQUdHO1FBRUgsc0JBQWlCLEdBQVEsT0FBTyxDQUFDO1FBR2pDLDRCQUF1QixHQUNuQiwyREFBMkQsQ0FBQztRQUdoRSw0QkFBdUIsR0FDbkIsc0VBQXNFLENBQUM7UUFHM0UseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdC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O3NCQUR2QixLQUFLO2dCQVNGLG1CQUFtQjtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25Jbml0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4tYXV0b2NvbXBsZXRlL2ZvZWhuLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYmplY3RIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL29iamVjdC5oZWxwZXInO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZihcbiAgICAgICAgICAgICAgICAoKSA9PiBGb2Vobk11bHRpc2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5NdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5BdXRvY29tcGxldGVDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLm5hbWUnKVxuICAgIGhvc3ROYW1lOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGVDb21wb25lbnQnKVxuICAgIGF1dG9jb21wbGV0ZUNvbXBvbmVudDogRm9laG5BdXRvY29tcGxldGVDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdhbGVydE1lc3NhZ2VDb250YWluZXInKVxuICAgIGFsZXJ0TWVzc2FnZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ3NlbGVjdGVkRWxlbVJlZicpXG4gICAgc2VsZWN0ZWRFbGVtUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkcmVuKCdkZWZhdWx0RWxlbVJlZicpXG4gICAgZGVmYXVsdEVsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ2RlZmF1bHREZWxldGVGb2N1c0FyZWEnKVxuICAgIGRlZmF1bHREZWxldGVGb2N1c0FyZWE6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgaW4gdGhlIG9iamVjdC4gQ2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb25cbiAgICAgKiBEZWZhdWx0cyB0byBgbGFiZWxgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50QmFkZ2VMYWJlbDogYW55ID0gJ2xhYmVsJztcblxuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRJdGVtc0xpc3RMZWdlbmQgPVxuICAgICAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNlbGVjdGVkLWl0ZW1zLWxpc3QtbGVnZW5kJztcblxuICAgIEBJbnB1dCgpXG4gICAgbm9FbGVtZW50c1NlbGVjdGVkTGFiZWwgPVxuICAgICAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNyLWRlZmF1bHQtZm9jdXMubm8tZWxlbWVudC10by1kZWxldGUnO1xuXG4gICAgYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZTogc3RyaW5nO1xuICAgIHNob3dFbXB0eUxpc3RNZXNzYWdlID0gZmFsc2U7XG4gICAgc3JBbm5vdW5jZW1lbnRzID0gJyc7XG5cbiAgICBwcml2YXRlIGRlZmF1bHRFbGVtZW50VmFsdWVzXzogdW5rbm93bltdO1xuICAgIHByaXZhdGUgc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBTUl9BTk5PVU5DRU1FTlRfQ0xFQVJfVElNRU9VVF9JTlRFUlZBTF9NUyA9IDIwMDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKG5nWm9uZSk7XG4gICAgfVxuXG4gICAgZ2V0IGRlZmF1bHRFbGVtZW50VmFsdWVzKCk6IHVua25vd25bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzXztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZWZhdWx0RWxlbWVudFZhbHVlcyhpdGVtczogdW5rbm93bltdKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXNfID0gWy4uLml0ZW1zXTtcbiAgICAgICAgaWYgKCghdGhpcy5tb2RlbCB8fCAhdGhpcy5tb2RlbC5sZW5ndGgpICYmIGl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZShpdGVtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcyA9IFtpdGVtXTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgLy8gVGhlIGhvc3QgaXMgbm90IHJlbGF0ZWQgdG8gZm9laG4gZXJyb3IgbWFuYWdlbWVudCBidXQgZm9laG4tYXV0b2NvbXBsZXRlIGlzLlxuICAgICAgICB0aGlzLmhvc3RJZCA9IHRoaXMuYnVpbGRJZCgnUGFyZW50Q29udGFpbmVyJyk7XG4gICAgICAgIHRoaXMuaG9zdE5hbWUgPSB0aGlzLmhvc3RJZDtcbiAgICAgICAgdGhpcy5leGNsdWRlRnJvbUVycm9yU3VtbWFyeSA9IHRydWU7XG4gICAgfVxuXG4gICAgaGFzRXJyb3JzVG9EaXNwbGF5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgICAgICAgICAgPyB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5oYXNFcnJvcnNUb0Rpc3BsYXkoKVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICB1cGRhdGVNdWx0aXNlbGVjdEF1dG9jb21wbGV0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRJdGVtKGl0ZW06IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhaXRlbSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubW9kZWwuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVNdWx0aXNlbGVjdEF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJBZGRpbmdBbkl0ZW0oKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVJdGVtKGl0ZW06IHVua25vd24sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnVwZGF0ZU11bHRpc2VsZWN0QXV0b2NvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgICAgIHRoaXMubWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyUmVtb3ZpbmdBbkl0ZW0oaW5kZXgpO1xuICAgICAgICB0aGlzLm1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChpdGVtLCB0cnVlKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQubWFya0FzRGlydHkoKTtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBnZXRMYWJlbCh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZWxlbSA9IHRoaXMuZmluZEVsZW1lbnRCeU1vZGVsSXRlbSh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRMYWJlbChlbGVtKTtcbiAgICB9XG5cbiAgICBjYW5CZURlbGV0ZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMuZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICghdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcyB8fFxuICAgICAgICAgICAgICAgICF0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzLmluY2x1ZGVzKHRoaXMubW9kZWxbaW5kZXhdKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkF1dG9jb21wbGV0ZUVsZW1lbnRzTG9hZGVkKGVsZW1lbnRzOiBbXSk6IHZvaWQge1xuICAgICAgICAvLyBOZWVkIHRvIHdhaXQgZm9yIGNoaWxkVmlldyB0byBiZSBsb2FkZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzID0gdGhpcy5maWx0ZXJBdXRvY29tcGxldGVFbGVtZW50cyhcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzLmxlbmd0aFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2VBbmRIaWRlQXV0b2NvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREZWxldGVCdXR0b25BcmlhTGFiZWwoZWxlbWVudDogdW5rbm93bik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNlbGVjdGVkLmRlbGV0ZScsXG4gICAgICAgICAgICB7IGVsZW1lbnRMYWJlbDogdGhpcy5nZXRMYWJlbChlbGVtZW50KSB9XG4gICAgICAgICl9YDtcbiAgICB9XG5cbiAgICBoYXNEZWZhdWx0RGVsZXRlRm9jdXNBcmVhKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgIXRoaXMuZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICF0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzPy5sZW5ndGggJiZcbiAgICAgICAgICAgICF0aGlzLm1vZGVsPy5sZW5ndGhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCYWRnZUxhYmVsKGVsZW1lbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbGVtZW50QmFkZ2VMYWJlbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldExhYmVsKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRCYWRnZUxhYmVsKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEVsZW1lbnRCeU1vZGVsSXRlbShpdGVtOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgICAgIGlmICghIXRoaXMuZWxlbWVudHMgJiYgISF0aGlzLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbVZhbHVlOiB1bmtub3duID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgaXRlbSAhPT0gJ29iamVjdCcgPyBpdGVtIDogdGhpcy5nZXRWYWx1ZShpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGVsZW1lbnQ6IHVua25vd24pID0+IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCkgPT09IGl0ZW1WYWx1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghIWVsZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkVmFsdWUoKTogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsIHx8ICF0aGlzLm1vZGVsLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzTmV4dEFyZWFBZnRlckRlbGV0ZShyZW1vdmVkSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBBZGp1c3QgaW5kZXggZGVwZW5kaW5nIG9uIGRlZmF1bHQgZWxlbWVudHMgdGhhdCBhcmUgbm90IGRlbGV0YWJsZVxuICAgICAgICBpZiAoISF0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzKSB7XG4gICAgICAgICAgICByZW1vdmVkSW5kZXggLT0gdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xvc2VCdXR0b25zRWxlbVJlZkFycmF5ID0gWy4uLnRoaXMuc2VsZWN0ZWRFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgIC8vIE5lZWQgdG8gZmluZCBhbiBlbGVtZW50IHRvIGZvY3VzIG9uXG4gICAgICAgIGlmIChyZW1vdmVkSW5kZXggPT09IGNsb3NlQnV0dG9uc0VsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghIWNsb3NlQnV0dG9uc0VsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvc2VCdXR0b25zRWxlbVJlZkFycmF5W1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVkSW5kZXggLSAxXG4gICAgICAgICAgICAgICAgXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0RWxlbVJlZkFycmF5ID0gWy4uLnRoaXMuZGVmYXVsdEVsZW1SZWYudG9BcnJheSgpXTtcbiAgICAgICAgICAgIGlmICghIWRlZmF1bHRFbGVtUmVmQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRFbGVtUmVmQXJyYXlbXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRFbGVtUmVmQXJyYXkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIF0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdERlbGV0ZUZvY3VzQXJlYS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGZvY3VzIGVsZW1lbnQgYnkgRE9NIHJlcGxhY2VtZW50XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJBdXRvY29tcGxldGVFbGVtZW50cyhlbGVtZW50czogW10pOiB1bmtub3duIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRFbGVtZW50cyA9IE9iamVjdEhlbHBlci5kZWVwQ29weShlbGVtZW50cyk7XG4gICAgICAgIGlmICghIXRoaXMubW9kZWwgJiYgISF0aGlzLm1vZGVsLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5mb3JFYWNoKChzZWxlY3RlZDogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW2luZGV4LCB2YWx1ZV0gb2YgZmlsdGVyZWRFbGVtZW50cy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IHRoaXMuZmluZEVsZW1lbnRCeU1vZGVsSXRlbShzZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3RIZWxwZXIuaXNFcXVhbChlbGVtLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkRWxlbWVudHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkRWxlbWVudHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJBZGRpbmdBbkl0ZW0oKTogdm9pZCB7XG4gICAgICAgIC8vIEVtcHR5IGF1dG9jb21wbGV0ZSBpbnB1dFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0VmFsdWUgPSBudWxsO1xuICAgICAgICAvLyBSZW1vdmUgc2VsZWN0ZWQgaXRlbSBmcm9tIGF1dG9jb21wbGV0ZSBzdWdnZXN0aW9uIGxpc3RcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPSB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50c1xuICAgICAgICApO1xuICAgICAgICAvLyBDaGVjayBpZiB3ZSBzdGlsbCBoYXZlIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZUFuZEhpZGVBdXRvY29tcGxldGUoKTtcbiAgICAgICAgICAgIC8vIE5lZWQgc2V0VGltZW91dCB0byBlbnN1cmUgYWxlcnQgbWVzc2FnZSBpcyBvbiB0aGUgRE9NIGFuZCBjYW4gYmUgZm9jdXNhYmxlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGVydE1lc3NhZ2U6IEhUTUxFbGVtZW50ID0gdGhpcy5hbGVydE1lc3NhZ2VDb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAncCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChhbGVydE1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxlcnRNZXNzYWdlLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlclJlbW92aW5nQW5JdGVtKFxuICAgICAgICByZW1vdmVkSW5kZXg6IG51bWJlclxuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBIaWRlIG1lc3NhZ2Ugc2F5aW5nIG5vIG1vcmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICB0aGlzLnNob3dFbXB0eUxpc3RNZXNzYWdlID0gZmFsc2U7XG4gICAgICAgIC8vIE1hbnVhbGx5IHNob3cgYXV0b2NvbXBsZXRlIGJlY2F1c2UgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIC8vIEFkZCBiYWNrIHNlbGVjdGVkIGl0ZW0gdG8gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cyA9IHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlRWxlbWVudHMoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRzXG4gICAgICAgICk7XG4gICAgICAgIC8vIFdoZW4gZGVsZXRpbmcgYSBzZWxlY3RlZCBpdGVtLCBjaGVjayB3ZXJlIHRvIHNldCBmb2N1cyBiYWNrIHdoZW4gbm8gbW9yZSBpdGVtcyB0byBkZWxldGVcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbVJlZi5jaGFuZ2VzLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0QXJlYUFmdGVyRGVsZXRlKHJlbW92ZWRJbmRleCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0FsZXJ0TWVzc2FnZUFuZEhpZGVBdXRvY29tcGxldGUoKTogdm9pZCB7XG4gICAgICAgIC8vIFNob3cgYSBtZXNzYWdlIHRvIHVzZXIgaW5kaWNhdGluZyB0aGVyZSBpcyBubyBtb3JlIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgdGhpcy5zaG93RW1wdHlMaXN0TWVzc2FnZSA9IHRydWU7XG4gICAgICAgIC8vIE1hbnVhbGx5IHJlc2V0IGFuZCBoaWRlIGF1dG9jb21wbGV0ZSBiZWNhdXNlIHRoZXJlIGlzIG5vIG1vcmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0VmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KFxuICAgICAgICBlbGVtZW50OiB1bmtub3duLFxuICAgICAgICBpc0RlbGV0ZTogYm9vbGVhblxuICAgICk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIpO1xuICAgICAgICBpZiAoaXNEZWxldGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzICs9IGAke3RoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNyLWFubm91bmNlbWVudC5kZWxldGVkJyxcbiAgICAgICAgICAgICAgICB7IGVsZW1lbnRMYWJlbDogdGhpcy5nZXRMYWJlbChlbGVtZW50KSB9XG4gICAgICAgICAgICApfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50cyArPSBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1hbm5vdW5jZW1lbnQuYWRkZWQnLFxuICAgICAgICAgICAgICAgIHsgZWxlbWVudExhYmVsOiB0aGlzLmdldExhYmVsKGVsZW1lbnQpIH1cbiAgICAgICAgICAgICl9YDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgPSAnJztcbiAgICAgICAgfSwgdGhpcy5TUl9BTk5PVU5DRU1FTlRfQ0xFQVJfVElNRU9VVF9JTlRFUlZBTF9NUyk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cCBjb250YWluZXItYm94XCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbj5cbiAgICA8Zm9laG4tYXV0b2NvbXBsZXRlXG4gICAgICAgICNhdXRvY29tcGxldGVDb21wb25lbnRcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgIFtlbGVtZW50c109XCJlbGVtZW50c1wiXG4gICAgICAgIFtlbGVtZW50c1VybF09XCJlbGVtZW50c1VybFwiXG4gICAgICAgIFtlbGVtZW50VmFsdWVdPVwiZWxlbWVudFZhbHVlXCJcbiAgICAgICAgW2VsZW1lbnRMYWJlbF09XCJlbGVtZW50TGFiZWxcIlxuICAgICAgICBbZWxlbWVudFN1Z2dlc3Rpb25MYWJlbF09XCJlbGVtZW50U3VnZ2VzdGlvbkxhYmVsXCJcbiAgICAgICAgW2VsZW1lbnRWYWx1ZUlkZW50aXR5XT1cImVsZW1lbnRWYWx1ZUlkZW50aXR5XCJcbiAgICAgICAgW2VsZW1lbnREaXNhYmxlZF09XCJlbGVtZW50RGlzYWJsZWRcIlxuICAgICAgICBbZWxlbWVudEdyb3VwXT1cImVsZW1lbnRHcm91cFwiXG4gICAgICAgIFthbGxvd0N1c3RvbVZhbHVlXT1cImZhbHNlXCJcbiAgICAgICAgW3NlYXJjaFZhbHVlTWluQ2hhcnNDb3VudF09XCJzZWFyY2hWYWx1ZU1pbkNoYXJzQ291bnRcIlxuICAgICAgICBbY3VzdG9tVmFsdWVNb2RlbEdlbmVyYXRvcl09XCJjdXN0b21WYWx1ZU1vZGVsR2VuZXJhdG9yXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKHVzZXJJbnB1dCk9XCJhZGRJdGVtKCRldmVudClcIlxuICAgICAgICBbKG1vZGVsKV09XCJhdXRvY29tcGxldGVJbnB1dFZhbHVlXCJcbiAgICAgICAgKGVsZW1lbnRzTG9hZGVkKT1cIm9uQXV0b2NvbXBsZXRlRWxlbWVudHNMb2FkZWQoJGV2ZW50KVwiXG4gICAgICAgIFtzaG93RXJyb3JXaGVuRGlzYWJsZWRdPVwic2hvd0Vycm9yV2hlbkRpc2FibGVkXCJcbiAgICAgICAgW2hpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxdPVwiaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgIFtpdGVtSGVpZ2h0SW5TdWdnZXN0aW9uTGlzdEluUHhdPVwiaXRlbUhlaWdodEluU3VnZ2VzdGlvbkxpc3RJblB4XCJcbiAgICAgICAgW2Nhc2VTZW5zaXRpdmVTZWFyY2hdPVwiY2FzZVNlbnNpdGl2ZVNlYXJjaFwiXG4gICAgPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiIXNob3dFbXB0eUxpc3RNZXNzYWdlXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgnSGVscCcpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgaGVscFRleHRcbiAgICAgICAgICAgICAgICAgICAgPyBoZWxwVGV4dFxuICAgICAgICAgICAgICAgICAgICA6ICgnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZS5zY3JlZW4tcmVhZGVyLmxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnkpXG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9zbWFsbD5cblxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnQWxlcnRNZXNzYWdlQ29udGFpbmVyJylcIlxuICAgICAgICAgICAgcm9sZT1cInN0YXR1c1wiXG4gICAgICAgICAgICAjYWxlcnRNZXNzYWdlQ29udGFpbmVyXG4gICAgICAgID5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RW1wdHlMaXN0TWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG1iLTBcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUuZW1wdHktbWVzc2FnZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2ZvZWhuLWF1dG9jb21wbGV0ZT5cblxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1saXN0LWNvbnRhaW5lciBwdC0yXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzRGVmYXVsdERlbGV0ZUZvY3VzQXJlYSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5IG15LTBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJub0VsZW1lbnRzU2VsZWN0ZWRMYWJlbCB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICNkZWZhdWx0RGVsZXRlRm9jdXNBcmVhXG4gICAgICAgID48L3NtYWxsPlxuXG4gICAgICAgIDxwXG4gICAgICAgICAgICBbaWRdPVwiYnVpbGRDaGlsZElkKCdzck9ubHlBbm5vdW5jZW1lbnRzJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBzckFubm91bmNlbWVudHMgfX1cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxmaWVsZHNldFxuICAgICAgICAgICAgKm5nSWY9XCIhIW1vZGVsPy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTBcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZENoaWxkSWQoJ0xhYmVsJylcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bGVnZW5kXG4gICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnTGVnZW5kJylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5IHNtYWxsIG1iLTBcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRJdGVtc0xpc3RMZWdlbmQgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICA+PC9sZWdlbmQ+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1saXN0IGQtZmxleCBhbGlnbi1jb250ZW50LXN0cmV0Y2ggZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50IG9mIG1vZGVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5Rm5cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjYW5CZURlbGV0ZWQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1zZWNvbmRhcnkgbXItMSBtYi0xIHB5LTIgcHgtMyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJ1aWxkQ2hpbGRJZCgnTGVnZW5kJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI2RlZmF1bHRFbGVtUmVmXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEJhZGdlTGFiZWwoZWxlbWVudCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc3ItZGVmYXVsdC1zZWxlY3RlZC1lbGVtZW50J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYW5CZURlbGV0ZWQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJhZGdlIGJhZGdlLXBpbGwgbXItMSBtYi0xIHB5LTIgcHgtMyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYnVpbGRDaGlsZElkKCdMZWdlbmQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGVsZW1lbnQsIGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjc2VsZWN0ZWRFbGVtUmVmXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEJhZGdlTGFiZWwoZWxlbWVudCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLXRpbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJnZXREZWxldGVCdXR0b25BcmlhTGFiZWwoZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi10aW1lcz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQ0gsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUlMLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQWlCeEQsTUFBTSxPQUFPLHFDQUNULFNBQVEsMEJBQTBCO0lBMkNsQyxZQUNJLE1BQWMsRUFDTixpQkFBdUM7UUFFL0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRk4sc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQXpCbkQ7OztXQUdHO1FBRUgsc0JBQWlCLEdBQVEsT0FBTyxDQUFDO1FBR2pDLDRCQUF1QixHQUNuQiwyREFBMkQsQ0FBQztRQUdoRSw0QkFBdUIsR0FDbkIsc0VBQXNFLENBQUM7UUFHM0UseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdC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QUFTO3VCQUFDLHVCQUF1QjtnQkFJbEMscUJBQXFCO3NCQURwQixTQUFTO3VCQUFDLHVCQUF1QjtnQkFJbEMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGlCQUFpQjtnQkFJL0IsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQjtnQkFJOUIsc0JBQXNCO3NCQURyQixTQUFTO3VCQUFDLHdCQUF3QjtnQkFRbkMsaUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFLTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBd0JGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFTRixtQkFBbUI7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uSW5pdCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb2VobkF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWF1dG9jb21wbGV0ZS9mb2Vobi1hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JqZWN0SGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9vYmplY3QuaGVscGVyJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoXG4gICAgICAgICAgICAgICAgKCkgPT4gRm9laG5NdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuTXVsdGlzZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICBleHRlbmRzIEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5uYW1lJylcbiAgICBob3N0TmFtZTogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlQ29tcG9uZW50JylcbiAgICBhdXRvY29tcGxldGVDb21wb25lbnQ6IEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnYWxlcnRNZXNzYWdlQ29udGFpbmVyJylcbiAgICBhbGVydE1lc3NhZ2VDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdzZWxlY3RlZEVsZW1SZWYnKVxuICAgIHNlbGVjdGVkRWxlbVJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZHJlbignZGVmYXVsdEVsZW1SZWYnKVxuICAgIGRlZmF1bHRFbGVtUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0RGVsZXRlRm9jdXNBcmVhJylcbiAgICBkZWZhdWx0RGVsZXRlRm9jdXNBcmVhOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIGluIHRoZSBvYmplY3QuIENhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uXG4gICAgICogRGVmYXVsdHMgdG8gYGxhYmVsYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudEJhZGdlTGFiZWw6IGFueSA9ICdsYWJlbCc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkSXRlbXNMaXN0TGVnZW5kID1cbiAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zZWxlY3RlZC1pdGVtcy1saXN0LWxlZ2VuZCc7XG5cbiAgICBASW5wdXQoKVxuICAgIG5vRWxlbWVudHNTZWxlY3RlZExhYmVsID1cbiAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1kZWZhdWx0LWZvY3VzLm5vLWVsZW1lbnQtdG8tZGVsZXRlJztcblxuICAgIGF1dG9jb21wbGV0ZUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBzaG93RW1wdHlMaXN0TWVzc2FnZSA9IGZhbHNlO1xuICAgIHNyQW5ub3VuY2VtZW50cyA9ICcnO1xuXG4gICAgcHJpdmF0ZSBkZWZhdWx0RWxlbWVudFZhbHVlc186IHVua25vd25bXTtcbiAgICBwcml2YXRlIHNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lcjogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMgPSAyMDAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihuZ1pvbmUpO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0RWxlbWVudFZhbHVlcygpOiB1bmtub3duW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlc187XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZXMoaXRlbXM6IHVua25vd25bXSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzXyA9IFsuLi5pdGVtc107XG4gICAgICAgIGlmICgoIXRoaXMubW9kZWwgfHwgIXRoaXMubW9kZWwubGVuZ3RoKSAmJiBpdGVtcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRlZmF1bHRFbGVtZW50VmFsdWUoaXRlbTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMgPSBbaXRlbV07XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIC8vIFRoZSBob3N0IGlzIG5vdCByZWxhdGVkIHRvIGZvZWhuIGVycm9yIG1hbmFnZW1lbnQgYnV0IGZvZWhuLWF1dG9jb21wbGV0ZSBpcy5cbiAgICAgICAgdGhpcy5ob3N0SWQgPSB0aGlzLmJ1aWxkSWQoJ1BhcmVudENvbnRhaW5lcicpO1xuICAgICAgICB0aGlzLmhvc3ROYW1lID0gdGhpcy5ob3N0SWQ7XG4gICAgICAgIHRoaXMuZXhjbHVkZUZyb21FcnJvclN1bW1hcnkgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBzdXBlci5vbk1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCBPYmplY3RIZWxwZXIuaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMubWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyUmVtb3ZpbmdBbkl0ZW0obnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNFcnJvcnNUb0Rpc3BsYXkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgICAgICA/IHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50Lmhhc0Vycm9yc1RvRGlzcGxheSgpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIHVwZGF0ZU11bHRpc2VsZWN0QXV0b2NvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZEl0ZW0oaXRlbTogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBpZiAoISFpdGVtKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubW9kZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGVsID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb2RlbC5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU11bHRpc2VsZWN0QXV0b2NvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlckFkZGluZ0FuSXRlbSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUl0ZW0oaXRlbTogdW5rbm93biwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RBdXRvY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJSZW1vdmluZ0FuSXRlbShpbmRleCk7XG4gICAgICAgIHRoaXMubWFuYWdlU2NyZWVuUmVhZGVyQW5ub3VuY2VtZW50KGl0ZW0sIHRydWUpO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cblxuICAgIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGdldExhYmVsKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5maW5kRWxlbWVudEJ5TW9kZWxJdGVtKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldExhYmVsKGVsZW0pO1xuICAgIH1cblxuICAgIGNhbkJlRGVsZXRlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgKCF0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzIHx8XG4gICAgICAgICAgICAgICAgIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMuaW5jbHVkZXModGhpcy5tb2RlbFtpbmRleF0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uQXV0b2NvbXBsZXRlRWxlbWVudHNMb2FkZWQoZWxlbWVudHM6IFtdKTogdm9pZCB7XG4gICAgICAgIC8vIE5lZWQgdG8gd2FpdCBmb3IgY2hpbGRWaWV3IHRvIGJlIGxvYWRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPSB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50c1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMubGVuZ3RoXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZUFuZEhpZGVBdXRvY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50OiB1bmtub3duKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc2VsZWN0ZWQuZGVsZXRlJyxcbiAgICAgICAgICAgIHsgZWxlbWVudExhYmVsOiB0aGlzLmdldExhYmVsKGVsZW1lbnQpIH1cbiAgICAgICAgKX1gO1xuICAgIH1cblxuICAgIGhhc0RlZmF1bHREZWxldGVGb2N1c0FyZWEoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgIXRoaXMubW9kZWw/Lmxlbmd0aFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEJhZGdlTGFiZWwoZWxlbWVudDogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVsZW1lbnRCYWRnZUxhYmVsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGFiZWwoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudEJhZGdlTGFiZWwoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kRWxlbWVudEJ5TW9kZWxJdGVtKGl0ZW06IHVua25vd24pOiB1bmtub3duIHtcbiAgICAgICAgaWYgKCEhdGhpcy5lbGVtZW50cyAmJiAhIXRoaXMuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtVmFsdWU6IHVua25vd24gPVxuICAgICAgICAgICAgICAgIHR5cGVvZiBpdGVtICE9PSAnb2JqZWN0JyA/IGl0ZW0gOiB0aGlzLmdldFZhbHVlKGl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgZWxlbSA9IHRoaXMuZWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudDogdW5rbm93bikgPT4gdGhpcy5nZXRWYWx1ZShlbGVtZW50KSA9PT0gaXRlbVZhbHVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCEhZWxlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZSgpOiBudW1iZXJbXSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMubW9kZWwgfHwgIXRoaXMubW9kZWwubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbF8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNOZXh0QXJlYUFmdGVyRGVsZXRlKHJlbW92ZWRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIEFkanVzdCBpbmRleCBkZXBlbmRpbmcgb24gZGVmYXVsdCBlbGVtZW50cyB0aGF0IGFyZSBub3QgZGVsZXRhYmxlXG4gICAgICAgIGlmICghIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMpIHtcbiAgICAgICAgICAgIHJlbW92ZWRJbmRleCAtPSB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjbG9zZUJ1dHRvbnNFbGVtUmVmQXJyYXkgPSBbLi4udGhpcy5zZWxlY3RlZEVsZW1SZWYudG9BcnJheSgpXTtcbiAgICAgICAgLy8gTmVlZCB0byBmaW5kIGFuIGVsZW1lbnQgdG8gZm9jdXMgb25cbiAgICAgICAgaWYgKHJlbW92ZWRJbmRleCA9PT0gY2xvc2VCdXR0b25zRWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKCEhY2xvc2VCdXR0b25zRWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjbG9zZUJ1dHRvbnNFbGVtUmVmQXJyYXlbXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZWRJbmRleCAtIDFcbiAgICAgICAgICAgICAgICBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRFbGVtUmVmQXJyYXkgPSBbLi4udGhpcy5kZWZhdWx0RWxlbVJlZi50b0FycmF5KCldO1xuICAgICAgICAgICAgaWYgKCEhZGVmYXVsdEVsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdEVsZW1SZWZBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEVsZW1SZWZBcnJheS5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RGVsZXRlRm9jdXNBcmVhLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UgZm9jdXMgZWxlbWVudCBieSBET00gcmVwbGFjZW1lbnRcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKGVsZW1lbnRzOiBbXSk6IHVua25vd24ge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gT2JqZWN0SGVscGVyLmRlZXBDb3B5KGVsZW1lbnRzKTtcbiAgICAgICAgaWYgKCEhdGhpcy5tb2RlbCAmJiAhIXRoaXMubW9kZWwubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsLmZvckVhY2goKHNlbGVjdGVkOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIHZhbHVlXSBvZiBmaWx0ZXJlZEVsZW1lbnRzLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5maW5kRWxlbWVudEJ5TW9kZWxJdGVtKHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdEhlbHBlci5pc0VxdWFsKGVsZW0sIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRFbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyZWRFbGVtZW50cztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlckFkZGluZ0FuSXRlbSgpOiB2b2lkIHtcbiAgICAgICAgLy8gRW1wdHkgYXV0b2NvbXBsZXRlIGlucHV0XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgIC8vIFJlbW92ZSBzZWxlY3RlZCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cyA9IHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlRWxlbWVudHMoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRzXG4gICAgICAgICk7XG4gICAgICAgIC8vIENoZWNrIGlmIHdlIHN0aWxsIGhhdmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICBpZiAoIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlQW5kSGlkZUF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAgICAgLy8gTmVlZCBzZXRUaW1lb3V0IHRvIGVuc3VyZSBhbGVydCBtZXNzYWdlIGlzIG9uIHRoZSBET00gYW5kIGNhbiBiZSBmb2N1c2FibGVcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsZXJ0TWVzc2FnZTogSFRNTEVsZW1lbnQgPSB0aGlzLmFsZXJ0TWVzc2FnZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICdwJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGFsZXJ0TWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICBhbGVydE1lc3NhZ2UuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyUmVtb3ZpbmdBbkl0ZW0oXG4gICAgICAgIHJlbW92ZWRJbmRleDogbnVtYmVyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIC8vIEhpZGUgbWVzc2FnZSBzYXlpbmcgbm8gbW9yZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIHRoaXMuc2hvd0VtcHR5TGlzdE1lc3NhZ2UgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAvLyBNYW51YWxseSBzaG93IGF1dG9jb21wbGV0ZSBiZWNhdXNlIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIEFkZCBiYWNrIHNlbGVjdGVkIGl0ZW0gdG8gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdFxuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPSB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHNcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVtb3ZlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBXaGVuIGRlbGV0aW5nIGEgc2VsZWN0ZWQgaXRlbSwgY2hlY2sgd2VyZSB0byBzZXQgZm9jdXMgYmFjayB3aGVuIG5vIG1vcmUgaXRlbXMgdG8gZGVsZXRlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbVJlZi5jaGFuZ2VzLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTmV4dEFyZWFBZnRlckRlbGV0ZShyZW1vdmVkSW5kZXgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dBbGVydE1lc3NhZ2VBbmRIaWRlQXV0b2NvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICAvLyBTaG93IGEgbWVzc2FnZSB0byB1c2VyIGluZGljYXRpbmcgdGhlcmUgaXMgbm8gbW9yZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIHRoaXMuc2hvd0VtcHR5TGlzdE1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAvLyBNYW51YWxseSByZXNldCBhbmQgaGlkZSBhdXRvY29tcGxldGUgYmVjYXVzZSB0aGVyZSBpcyBubyBtb3JlIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChcbiAgICAgICAgZWxlbWVudDogdW5rbm93bixcbiAgICAgICAgaXNEZWxldGU6IGJvb2xlYW5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyKTtcbiAgICAgICAgaWYgKGlzRGVsZXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50cyArPSBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1hbm5vdW5jZW1lbnQuZGVsZXRlZCcsXG4gICAgICAgICAgICAgICAgeyBlbGVtZW50TGFiZWw6IHRoaXMuZ2V0TGFiZWwoZWxlbWVudCkgfVxuICAgICAgICAgICAgKX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgKz0gYCR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc3ItYW5ub3VuY2VtZW50LmFkZGVkJyxcbiAgICAgICAgICAgICAgICB7IGVsZW1lbnRMYWJlbDogdGhpcy5nZXRMYWJlbChlbGVtZW50KSB9XG4gICAgICAgICAgICApfWA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzID0gJyc7XG4gICAgICAgIH0sIHRoaXMuU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAgY29udGFpbmVyLWJveFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4+XG4gICAgPGZvZWhuLWF1dG9jb21wbGV0ZVxuICAgICAgICAjYXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICBbZWxlbWVudHNdPVwiZWxlbWVudHNcIlxuICAgICAgICBbZWxlbWVudHNVcmxdPVwiZWxlbWVudHNVcmxcIlxuICAgICAgICBbZWxlbWVudFZhbHVlXT1cImVsZW1lbnRWYWx1ZVwiXG4gICAgICAgIFtlbGVtZW50TGFiZWxdPVwiZWxlbWVudExhYmVsXCJcbiAgICAgICAgW2VsZW1lbnRTdWdnZXN0aW9uTGFiZWxdPVwiZWxlbWVudFN1Z2dlc3Rpb25MYWJlbFwiXG4gICAgICAgIFtlbGVtZW50VmFsdWVJZGVudGl0eV09XCJlbGVtZW50VmFsdWVJZGVudGl0eVwiXG4gICAgICAgIFtlbGVtZW50RGlzYWJsZWRdPVwiZWxlbWVudERpc2FibGVkXCJcbiAgICAgICAgW2VsZW1lbnRHcm91cF09XCJlbGVtZW50R3JvdXBcIlxuICAgICAgICBbYWxsb3dDdXN0b21WYWx1ZV09XCJmYWxzZVwiXG4gICAgICAgIFtzZWFyY2hWYWx1ZU1pbkNoYXJzQ291bnRdPVwic2VhcmNoVmFsdWVNaW5DaGFyc0NvdW50XCJcbiAgICAgICAgW2N1c3RvbVZhbHVlTW9kZWxHZW5lcmF0b3JdPVwiY3VzdG9tVmFsdWVNb2RlbEdlbmVyYXRvclwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICh1c2VySW5wdXQpPVwiYWRkSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgWyhtb2RlbCldPVwiYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZVwiXG4gICAgICAgIChlbGVtZW50c0xvYWRlZCk9XCJvbkF1dG9jb21wbGV0ZUVsZW1lbnRzTG9hZGVkKCRldmVudClcIlxuICAgICAgICBbc2hvd0Vycm9yV2hlbkRpc2FibGVkXT1cInNob3dFcnJvcldoZW5EaXNhYmxlZFwiXG4gICAgICAgIFtoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXT1cImhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICBbaXRlbUhlaWdodEluU3VnZ2VzdGlvbkxpc3RJblB4XT1cIml0ZW1IZWlnaHRJblN1Z2dlc3Rpb25MaXN0SW5QeFwiXG4gICAgICAgIFtjYXNlU2Vuc2l0aXZlU2VhcmNoXT1cImNhc2VTZW5zaXRpdmVTZWFyY2hcIlxuICAgID5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cIiFzaG93RW1wdHlMaXN0TWVzc2FnZVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoJ0hlbHAnKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgIGhlbHBUZXh0XG4gICAgICAgICAgICAgICAgICAgID8gaGVscFRleHRcbiAgICAgICAgICAgICAgICAgICAgOiAoJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUuc2NyZWVuLXJlYWRlci5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvc21hbGw+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoJ0FsZXJ0TWVzc2FnZUNvbnRhaW5lcicpXCJcbiAgICAgICAgICAgIHJvbGU9XCJzdGF0dXNcIlxuICAgICAgICAgICAgI2FsZXJ0TWVzc2FnZUNvbnRhaW5lclxuICAgICAgICA+XG4gICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0VtcHR5TGlzdE1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mbyBtYi0wXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuYXV0b2NvbXBsZXRlLmVtcHR5LW1lc3NhZ2UnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb2Vobi1hdXRvY29tcGxldGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdC1jb250YWluZXIgcHQtMlwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cImhhc0RlZmF1bHREZWxldGVGb2N1c0FyZWEoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeSBteS0wXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibm9FbGVtZW50c1NlbGVjdGVkTGFiZWwgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAjZGVmYXVsdERlbGV0ZUZvY3VzQXJlYVxuICAgICAgICA+PC9zbWFsbD5cblxuICAgICAgICA8cFxuICAgICAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnc3JPbmx5QW5ub3VuY2VtZW50cycpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3Itb25seVwiXG4gICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgYXJpYS1hdG9taWM9XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgc3JBbm5vdW5jZW1lbnRzIH19XG4gICAgICAgIDwvcD5cblxuICAgICAgICA8ZmllbGRzZXRcbiAgICAgICAgICAgICpuZ0lmPVwiISFtb2RlbD8ubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cCBtYi0wXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYnVpbGRDaGlsZElkKCdMYWJlbCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGxlZ2VuZFxuICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZENoaWxkSWQoJ0xlZ2VuZCcpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeSBzbWFsbCBtYi0wXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInNlbGVjdGVkSXRlbXNMaXN0TGVnZW5kIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgPjwvbGVnZW5kPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdCBkLWZsZXggYWxpZ24tY29udGVudC1zdHJldGNoIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCBvZiBtb2RlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZuXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY2FuQmVEZWxldGVkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2Utc2Vjb25kYXJ5IG1yLTEgbWItMSBweS0yIHB4LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZENoaWxkSWQoJ0xlZ2VuZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNkZWZhdWx0RWxlbVJlZlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRCYWRnZUxhYmVsKGVsZW1lbnQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNyLWRlZmF1bHQtc2VsZWN0ZWQtZWxlbWVudCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FuQmVEZWxldGVkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBiYWRnZSBiYWRnZS1waWxsIG1yLTEgbWItMSBweS0yIHB4LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJ1aWxkQ2hpbGRJZCgnTGVnZW5kJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbShlbGVtZW50LCBpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgI3NlbGVjdGVkRWxlbVJlZlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRCYWRnZUxhYmVsKGVsZW1lbnQpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tdGltZXM+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -10,13 +10,15 @@ import * as i2 from "../../foehn-growl/growl-broker.service";
10
10
  import * as i3 from "../../sdk-appinfo/application-info.service";
11
11
  import * as i4 from "../../sdk-dictionary/sdk-dictionary.service";
12
12
  import * as i5 from "../foehn-upload-progress-bar/upload-progress.service";
13
+ import * as i6 from "../../sdk-redirect/iam-expired-interceptor.service";
13
14
  export class BoMultiUploadService {
14
- constructor(httpClient, growlService, applicationInfoService, dictionaryService, uploadProgressService) {
15
+ constructor(httpClient, growlService, applicationInfoService, dictionaryService, uploadProgressService, iamInterceptor) {
15
16
  this.httpClient = httpClient;
16
17
  this.growlService = growlService;
17
18
  this.applicationInfoService = applicationInfoService;
18
19
  this.dictionaryService = dictionaryService;
19
20
  this.uploadProgressService = uploadProgressService;
21
+ this.iamInterceptor = iamInterceptor;
20
22
  // A way to have a unique Id per file
21
23
  this.globalSequence = 0;
22
24
  this.NB_CONCURRENT_FILES_TO_UPLOAD = 3;
@@ -68,6 +70,7 @@ export class BoMultiUploadService {
68
70
  this.growlService.addWithType(GrowlType.SUCCESS, message);
69
71
  }), catchError((e) => {
70
72
  const message = this.dictionaryService.getKeySync('foehn-uploader.delete-error-message');
73
+ this.manageBeneficiaryRequiredError(e);
71
74
  this.growlService.addWithType(GrowlType.DANGER, message);
72
75
  return throwError(() => e);
73
76
  }));
@@ -96,16 +99,26 @@ export class BoMultiUploadService {
96
99
  this.uploadProgressService.showProgress.next(false);
97
100
  const message = this.dictionaryService.getKeySync('foehn-uploader.transmission-error-message');
98
101
  this.growlService.addWithType(GrowlType.DANGER, message);
102
+ this.manageBeneficiaryRequiredError(e);
99
103
  return throwError(() => e);
100
104
  }));
101
105
  }
106
+ manageBeneficiaryRequiredError(httpErrorResponse) {
107
+ if (!!httpErrorResponse) {
108
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
+ const { error } = httpErrorResponse;
110
+ if (error?.code === 'BENEFICIARY_REQUIRED') {
111
+ this.iamInterceptor.setIamSessionExpiredManually();
112
+ }
113
+ }
114
+ }
102
115
  }
103
- BoMultiUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BoMultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.ApplicationInfoService }, { token: i4.SdkDictionaryService }, { token: i5.UploadProgressService }], target: i0.ɵɵFactoryTarget.Injectable });
116
+ BoMultiUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BoMultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.ApplicationInfoService }, { token: i4.SdkDictionaryService }, { token: i5.UploadProgressService }, { token: i6.IamExpiredInterceptorService }], target: i0.ɵɵFactoryTarget.Injectable });
104
117
  BoMultiUploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BoMultiUploadService, providedIn: 'root' });
105
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BoMultiUploadService, decorators: [{
106
119
  type: Injectable,
107
120
  args: [{
108
121
  providedIn: 'root'
109
122
  }]
110
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.GrowlBrokerService }, { type: i3.ApplicationInfoService }, { type: i4.SdkDictionaryService }, { type: i5.UploadProgressService }]; } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm8tbXVsdGktdXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLWJvLW11bHRpLXVwbG9hZC9iby1tdWx0aS11cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQWMsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQUsvRCxNQUFNLE9BQU8sb0JBQW9CO0lBTTdCLFlBQ1ksVUFBc0IsRUFDdEIsWUFBZ0MsRUFDaEMsc0JBQThDLEVBQzlDLGlCQUF1QyxFQUN2QyxxQkFBNEM7UUFKNUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFWeEQscUNBQXFDO1FBQzdCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBRVYsa0NBQTZCLEdBQUcsQ0FBQyxDQUFDO1FBZ0szQyw2QkFBd0IsR0FBRyxDQUMvQiwwQkFBbUQsRUFDOUIsRUFBRTtZQUN2QixNQUFNLGNBQWMsR0FBMEIsSUFBSSxxQkFB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Qy9CLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDOztrSEFsS1Esb0JBQW9CO3NIQUFwQixvQkFBb0IsY0FGakIsTUFBTTs0RkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb25jYXQsIE9ic2VydmFibGUsIHRocm93RXJyb3IsIHRvQXJyYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEdyb3dsQnJva2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWdyb3dsL2dyb3dsLWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb3dsVHlwZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWdyb3dsL2dyb3dsLXR5cGVzJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50UmVmZXJlbmNlIH0gZnJvbSAnLi4vZG9jdW1lbnQtcmVmZXJlbmNlJztcbmltcG9ydCB7IFVwbG9hZFByb2dyZXNzU2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXIvdXBsb2FkLXByb2dyZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkZXJIZWxwZXIgfSBmcm9tICcuLi91cGxvYWRlci5oZWxwZXInO1xuaW1wb3J0IHsgQm9Eb2N1bWVudHNXaXRoRXJyb3JzIH0gZnJvbSAnLi9iby1tdWx0aS11cGxvYWQudHlwZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQm9NdWx0aVVwbG9hZFNlcnZpY2Uge1xuICAgIC8vIEEgd2F5IHRvIGhhdmUgYSB1bmlxdWUgSWQgcGVyIGZpbGVcbiAgICBwcml2YXRlIGdsb2JhbFNlcXVlbmNlID0gMDtcbiAgICBwcml2YXRlIHVwbG9hZGVySGVscGVyOiBVcGxvYWRlckhlbHBlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE5CX0NPTkNVUlJFTlRfRklMRVNfVE9fVVBMT0FEID0gMztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xTZXJ2aWNlOiBHcm93bEJyb2tlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25JbmZvU2VydmljZTogQXBwbGljYXRpb25JbmZvU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlOiBVcGxvYWRQcm9ncmVzc1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy51cGxvYWRlckhlbHBlciA9IG5ldyBVcGxvYWRlckhlbHBlcihcbiAgICAgICAgICAgIGRpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICAgICAgYXBwbGljYXRpb25JbmZvU2VydmljZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVwbG9hZERvY3VtZW50cyhcbiAgICAgICAgdXJsOiBzdHJpbmcsXG4gICAgICAgIGZvcm1LZXk6IHN0cmluZyxcbiAgICAgICAgbGFiZWw6IHN0cmluZyxcbiAgICAgICAgZmlsZXM6IEZpbGVbXSxcbiAgICAgICAga2V5OiBzdHJpbmcsXG4gICAgICAgIGlzTXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgICAgIGxhbmd1YWdlOiBzdHJpbmcsXG4gICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb246IGJvb2xlYW5cbiAgICApOiBPYnNlcnZhYmxlPEJvRG9jdW1lbnRzV2l0aEVycm9ycz4ge1xuICAgICAgICBjb25zdCBmaWxlc1RvR3JvdXAgPSBbLi4uZmlsZXNdO1xuICAgICAgICBjb25zdCBncm91cHNPZkZpbGVzOiBGaWxlW11bXSA9IFtdO1xuXG4gICAgICAgIHdoaWxlICghIWZpbGVzVG9Hcm91cC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGdyb3Vwc09mRmlsZXMucHVzaChcbiAgICAgICAgICAgICAgICBmaWxlc1RvR3JvdXAuc3BsaWNlKDAsIHRoaXMuTkJfQ09OQ1VSUkVOVF9GSUxFU19UT19VUExPQUQpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEJvRG9jdW1lbnRzV2l0aEVycm9ycz5bXSA9IGdyb3Vwc09mRmlsZXMubWFwKFxuICAgICAgICAgICAgKGdyb3VwT2ZGaWxlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50cyA9IGdyb3VwT2ZGaWxlLm1hcChmaWxlID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIubWFwVG9Eb2N1bWVudFJlZmVyZW5jZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2xvYmFsU2VxdWVuY2UrK1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMudXBsb2FkZXJIZWxwZXIubWFwVG9Gb3JtRGF0YShcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICBmb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RG9jdW1lbnRzV2l0aEVycm9yc09ic2VydmFibGUoXG4gICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBncm91cHNPZkZpbGVzLmxlbmd0aFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGFycmF5T2ZEb2N1bWVudHNXaXRoRXJyb3JzT2JzZXJ2YWJsZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBhcnJheU9mRG9jdW1lbnRzV2l0aEVycm9yc09ic2VydmFibGVbMF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyAgY29uY2F0KCkgb3BlcmF0b3Igc2VxdWVudGlhbGx5IGVtaXRzIGFsbCB2YWx1ZXMgZnJvbSB0aGUgZ2l2ZW4gT2JzZXJ2YWJsZSBhbmQgdGhlbiBwcm9jZWVkIHRvIHRoZSBuZXh0IG9uZS5cbiAgICAgICAgcmV0dXJuIGNvbmNhdCguLi5hcnJheU9mRG9jdW1lbnRzV2l0aEVycm9yc09ic2VydmFibGUpLnBpcGUoXG4gICAgICAgICAgICAvLyAgdG9BcnJheSgpIG9wZXJhdG9yIGNvbGxlY3RzIGFsbCB0aGUgdmFsdWVzIGVtaXR0ZWQgYnkgdGhlIHNvdXJjZSBvYnNlcnZhYmxlIGludG8gYW4gYXJyYXkgYW5kIHNlbmRzIGl0IHRvIHRoZSBvYnNlcnZlclxuICAgICAgICAgICAgdG9BcnJheSgpLFxuICAgICAgICAgICAgbWFwKHRoaXMubWVyZ2VEb2N1bWVudHNXaXRoRXJyb3JzLmJpbmQodGhpcykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGVsZXRlRG9jdW1lbnQoXG4gICAgICAgIGJhc2VVcmw6IHN0cmluZyxcbiAgICAgICAgZG9jdW1lbnQ6IERvY3VtZW50UmVmZXJlbmNlXG4gICAgKTogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS8ke2RvY3VtZW50LnJlZmVyZW5jZX1gO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlKHVybCkucGlwZShcbiAgICAgICAgICAgIC8vIFJlZmxlY3QgdGhlIGRvY3VtZW50IG9uY2UgdGhlIHVwZGF0ZSBpcyBkb25lIHRvIGVhc2UgY2hhaW5pbmcgb2JzZXJ2YWJsZXMuXG4gICAgICAgICAgICBtYXAoKCkgPT4gZG9jdW1lbnQpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZmlsZXMtZGVsZXRlZC1zdWNjZXNzLW1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgICAgICB7IGZpbGVuYW1lOiBkb2N1bWVudC5maWxlbmFtZSB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShHcm93bFR5cGUuU1VDQ0VTUywgbWVzc2FnZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZGVsZXRlLWVycm9yLW1lc3NhZ2UnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShHcm93bFR5cGUuREFOR0VSLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0RG93bmxvYWRVcmwoYmFzZVVybDogc3RyaW5nLCBkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2UpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtkb2N1bWVudC5yZWZlcmVuY2V9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlKFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgZm9ybURhdGE6IEZvcm1EYXRhLFxuICAgICAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uOiBib29sZWFuLFxuICAgICAgICBwYWNrYWdlSW5kZXg6IG51bWJlciA9IDAsXG4gICAgICAgIG5iUGFja2FnZXM6IG51bWJlciA9IDFcbiAgICApOiBPYnNlcnZhYmxlPEJvRG9jdW1lbnRzV2l0aEVycm9ycz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdDxCb0RvY3VtZW50c1dpdGhFcnJvcnM+KHVybCwgZm9ybURhdGEsIHtcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZTogSHR0cEV2ZW50PEJvRG9jdW1lbnRzV2l0aEVycm9ycz4pID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlLm1hbmFnZVVwbG9hZEV2ZW50RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5iUGFja2FnZXNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAoZTogSHR0cEV2ZW50PEJvRG9jdW1lbnRzV2l0aEVycm9ycz4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoZSBhcyBIdHRwUmVzcG9uc2U8Qm9Eb2N1bWVudHNXaXRoRXJyb3JzPikuYm9keVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxEb2N1bWVudHNDb3VudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZG9jdW1lbnRzICYmIHJlc3VsdC5kb2N1bWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsRG9jdW1lbnRzQ291bnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWRlci5maWxlcy1zYXZlZC1zdWNjZXNzLW1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bERvY3VtZW50c0NvdW50OiBzdWNjZXNzZnVsRG9jdW1lbnRzQ291bnQudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm93bFR5cGUuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzU2VydmljZS5hbmFseXNpc1Byb2dyZXNzLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzU2VydmljZS5zaG93UHJvZ3Jlc3MubmV4dChmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWRlci50cmFuc21pc3Npb24tZXJyb3ItbWVzc2FnZSdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuYWRkV2l0aFR5cGUoR3Jvd2xUeXBlLkRBTkdFUiwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWVyZ2VEb2N1bWVudHNXaXRoRXJyb3JzID0gKFxuICAgICAgICBhcnJheU9mRG9jdW1lbnRzV2l0aEVycm9yczogQm9Eb2N1bWVudHNXaXRoRXJyb3JzW11cbiAgICApOiBCb0RvY3VtZW50c1dpdGhFcnJvcnMgPT4ge1xuICAgICAgICBjb25zdCBtZXJnZWRSZXNwb25zZTogQm9Eb2N1bWVudHNXaXRoRXJyb3JzID0gbmV3IEJvRG9jdW1lbnRzV2l0aEVycm9ycygpO1xuICAgICAgICBhcnJheU9mRG9jdW1lbnRzV2l0aEVycm9ycy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKCEhaXRlbS5kb2N1bWVudHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZXJnZWRSZXNwb25zZS5kb2N1bWVudHMgPSBtZXJnZWRSZXNwb25zZS5kb2N1bWVudHMuY29uY2F0KFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmRvY3VtZW50c1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoISFpdGVtLmVycm9ycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtZXJnZWRSZXNwb25zZS5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZXJyb3JzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmVycm9ycyA9IG1lcmdlZFJlc3BvbnNlLmVycm9ycy5jb25jYXQoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZXJyb3JzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtZXJnZWRSZXNwb25zZTtcbiAgICB9O1xufVxuIl19
123
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.GrowlBrokerService }, { type: i3.ApplicationInfoService }, { type: i4.SdkDictionaryService }, { type: i5.UploadProgressService }, { type: i6.IamExpiredInterceptorService }]; } });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm8tbXVsdGktdXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLWJvLW11bHRpLXVwbG9hZC9iby1tdWx0aS11cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQWMsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBTTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7QUFLL0QsTUFBTSxPQUFPLG9CQUFvQjtJQU03QixZQUNZLFVBQXNCLEVBQ3RCLFlBQWdDLEVBQ2hDLHNCQUE4QyxFQUM5QyxpQkFBdUMsRUFDdkMscUJBQTRDLEVBQzVDLGNBQTRDO1FBTDVDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2hDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLG1CQUFjLEdBQWQsY0FBYyxDQUE4QjtRQVh4RCxxQ0FBcUM7UUFDN0IsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFFVixrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFtSzNDLDZCQUF3QixHQUFHLENBQy9CLDBCQUFtRCxF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UyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBc0IsQ0FBQyxDQUFDO1lBQzVELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDVixDQUFDO0lBMkJPLDhCQUE4QixDQUNsQyxpQkFBb0M7UUFFcEMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUU7WUFDckIsOERBQThEO1lBQzlELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBUSxpQkFBaUIsQ0FBQztZQUN6QyxJQUFJLEtBQUssRUFBRSxJQUFJLEtBQUssc0JBQXNCLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsNEJBQTRCLEVBQUUsQ0FBQzthQUN0RDtTQUNKO0lBQ0wsQ0FBQzs7a0hBMU1RLG9CQUFvQjtzSEFBcEIsb0JBQW9CLGNBRmpCLE1BQU07NEZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSHR0cENsaWVudCxcbiAgICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgICBIdHRwRXZlbnQsXG4gICAgSHR0cFJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbmNhdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgdG9BcnJheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgR3Jvd2xCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtYnJva2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3Jvd2xUeXBlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtdHlwZXMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSWFtRXhwaXJlZEludGVyY2VwdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1yZWRpcmVjdC9pYW0tZXhwaXJlZC1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50UmVmZXJlbmNlIH0gZnJvbSAnLi4vZG9jdW1lbnQtcmVmZXJlbmNlJztcbmltcG9ydCB7IFVwbG9hZFByb2dyZXNzU2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXIvdXBsb2FkLXByb2dyZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkZXJIZWxwZXIgfSBmcm9tICcuLi91cGxvYWRlci5oZWxwZXInO1xuaW1wb3J0IHsgQm9Eb2N1bWVudHNXaXRoRXJyb3JzIH0gZnJvbSAnLi9iby1tdWx0aS11cGxvYWQudHlwZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQm9NdWx0aVVwbG9hZFNlcnZpY2Uge1xuICAgIC8vIEEgd2F5IHRvIGhhdmUgYSB1bmlxdWUgSWQgcGVyIGZpbGVcbiAgICBwcml2YXRlIGdsb2JhbFNlcXVlbmNlID0gMDtcbiAgICBwcml2YXRlIHVwbG9hZGVySGVscGVyOiBVcGxvYWRlckhlbHBlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE5CX0NPTkNVUlJFTlRfRklMRVNfVE9fVVBMT0FEID0gMztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xTZXJ2aWNlOiBHcm93bEJyb2tlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25JbmZvU2VydmljZTogQXBwbGljYXRpb25JbmZvU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlOiBVcGxvYWRQcm9ncmVzc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaWFtSW50ZXJjZXB0b3I6IElhbUV4cGlyZWRJbnRlcmNlcHRvclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy51cGxvYWRlckhlbHBlciA9IG5ldyBVcGxvYWRlckhlbHBlcihcbiAgICAgICAgICAgIGRpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICAgICAgYXBwbGljYXRpb25JbmZvU2VydmljZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVwbG9hZERvY3VtZW50cyhcbiAgICAgICAgdXJsOiBzdHJpbmcsXG4gICAgICAgIGZvcm1LZXk6IHN0cmluZyxcbiAgICAgICAgbGFiZWw6IHN0cmluZyxcbiAgICAgICAgZmlsZXM6IEZpbGVbXSxcbiAgICAgICAga2V5OiBzdHJpbmcsXG4gICAgICAgIGlzTXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgICAgIGxhbmd1YWdlOiBzdHJpbmcsXG4gICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb246IGJvb2xlYW5cbiAgICApOiBPYnNlcnZhYmxlPEJvRG9jdW1lbnRzV2l0aEVycm9ycz4ge1xuICAgICAgICBjb25zdCBmaWxlc1RvR3JvdXAgPSBbLi4uZmlsZXNdO1xuICAgICAgICBjb25zdCBncm91cHNPZkZpbGVzOiBGaWxlW11bXSA9IFtdO1xuXG4gICAgICAgIHdoaWxlICghIWZpbGVzVG9Hcm91cC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGdyb3Vwc09mRmlsZXMucHVzaChcbiAgICAgICAgICAgICAgICBmaWxlc1RvR3JvdXAuc3BsaWNlKDAsIHRoaXMuTkJfQ09OQ1VSUkVOVF9GSUxFU19UT19VUExPQUQpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEJvRG9jdW1lbnRzV2l0aEVycm9ycz5bXSA9IGdyb3Vwc09mRmlsZXMubWFwKFxuICAgICAgICAgICAgKGdyb3VwT2ZGaWxlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50cyA9IGdyb3VwT2ZGaWxlLm1hcChmaWxlID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIubWFwVG9Eb2N1bWVudFJlZmVyZW5jZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2xvYmFsU2VxdWVuY2UrK1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMudXBsb2FkZXJIZWxwZXIubWFwVG9Gb3JtRGF0YShcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICBmb3JtS2V5LFxuICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RG9jdW1lbnRzV2l0aEVycm9yc09ic2VydmFibGUoXG4gICAgICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBncm91cHNPZkZpbGVzLmxlbmd0aFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGFycmF5T2ZEb2N1bWVudHNXaXRoRXJyb3JzT2JzZXJ2YWJsZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBhcnJheU9mRG9jdW1lbnRzV2l0aEVycm9yc09ic2VydmFibGVbMF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyAgY29uY2F0KCkgb3BlcmF0b3Igc2VxdWVudGlhbGx5IGVtaXRzIGFsbCB2YWx1ZXMgZnJvbSB0aGUgZ2l2ZW4gT2JzZXJ2YWJsZSBhbmQgdGhlbiBwcm9jZWVkIHRvIHRoZSBuZXh0IG9uZS5cbiAgICAgICAgcmV0dXJuIGNvbmNhdCguLi5hcnJheU9mRG9jdW1lbnRzV2l0aEVycm9yc09ic2VydmFibGUpLnBpcGUoXG4gICAgICAgICAgICAvLyAgdG9BcnJheSgpIG9wZXJhdG9yIGNvbGxlY3RzIGFsbCB0aGUgdmFsdWVzIGVtaXR0ZWQgYnkgdGhlIHNvdXJjZSBvYnNlcnZhYmxlIGludG8gYW4gYXJyYXkgYW5kIHNlbmRzIGl0IHRvIHRoZSBvYnNlcnZlclxuICAgICAgICAgICAgdG9BcnJheSgpLFxuICAgICAgICAgICAgbWFwKHRoaXMubWVyZ2VEb2N1bWVudHNXaXRoRXJyb3JzLmJpbmQodGhpcykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGVsZXRlRG9jdW1lbnQoXG4gICAgICAgIGJhc2VVcmw6IHN0cmluZyxcbiAgICAgICAgZG9jdW1lbnQ6IERvY3VtZW50UmVmZXJlbmNlXG4gICAgKTogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS8ke2RvY3VtZW50LnJlZmVyZW5jZX1gO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlKHVybCkucGlwZShcbiAgICAgICAgICAgIC8vIFJlZmxlY3QgdGhlIGRvY3VtZW50IG9uY2UgdGhlIHVwZGF0ZSBpcyBkb25lIHRvIGVhc2UgY2hhaW5pbmcgb2JzZXJ2YWJsZXMuXG4gICAgICAgICAgICBtYXAoKCkgPT4gZG9jdW1lbnQpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZmlsZXMtZGVsZXRlZC1zdWNjZXNzLW1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgICAgICB7IGZpbGVuYW1lOiBkb2N1bWVudC5maWxlbmFtZSB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShHcm93bFR5cGUuU1VDQ0VTUywgbWVzc2FnZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZGVsZXRlLWVycm9yLW1lc3NhZ2UnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZUJlbmVmaWNpYXJ5UmVxdWlyZWRFcnJvcihlIGFzIEh0dHBFcnJvclJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShHcm93bFR5cGUuREFOR0VSLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0RG93bmxvYWRVcmwoYmFzZVVybDogc3RyaW5nLCBkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2UpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtkb2N1bWVudC5yZWZlcmVuY2V9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERvY3VtZW50c1dpdGhFcnJvcnNPYnNlcnZhYmxlKFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgZm9ybURhdGE6IEZvcm1EYXRhLFxuICAgICAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uOiBib29sZWFuLFxuICAgICAgICBwYWNrYWdlSW5kZXg6IG51bWJlciA9IDAsXG4gICAgICAgIG5iUGFja2FnZXM6IG51bWJlciA9IDFcbiAgICApOiBPYnNlcnZhYmxlPEJvRG9jdW1lbnRzV2l0aEVycm9ycz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdDxCb0RvY3VtZW50c1dpdGhFcnJvcnM+KHVybCwgZm9ybURhdGEsIHtcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZTogSHR0cEV2ZW50PEJvRG9jdW1lbnRzV2l0aEVycm9ycz4pID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlLm1hbmFnZVVwbG9hZEV2ZW50RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5iUGFja2FnZXNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAoZTogSHR0cEV2ZW50PEJvRG9jdW1lbnRzV2l0aEVycm9ycz4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoZSBhcyBIdHRwUmVzcG9uc2U8Qm9Eb2N1bWVudHNXaXRoRXJyb3JzPikuYm9keVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxEb2N1bWVudHNDb3VudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZG9jdW1lbnRzICYmIHJlc3VsdC5kb2N1bWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsRG9jdW1lbnRzQ291bnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWRlci5maWxlcy1zYXZlZC1zdWNjZXNzLW1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bERvY3VtZW50c0NvdW50OiBzdWNjZXNzZnVsRG9jdW1lbnRzQ291bnQudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm93bFR5cGUuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzU2VydmljZS5hbmFseXNpc1Byb2dyZXNzLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzU2VydmljZS5zaG93UHJvZ3Jlc3MubmV4dChmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWRlci50cmFuc21pc3Npb24tZXJyb3ItbWVzc2FnZSdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuYWRkV2l0aFR5cGUoR3Jvd2xUeXBlLkRBTkdFUiwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlQmVuZWZpY2lhcnlSZXF1aXJlZEVycm9yKGUgYXMgSHR0cEVycm9yUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1lcmdlRG9jdW1lbnRzV2l0aEVycm9ycyA9IChcbiAgICAgICAgYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnM6IEJvRG9jdW1lbnRzV2l0aEVycm9yc1tdXG4gICAgKTogQm9Eb2N1bWVudHNXaXRoRXJyb3JzID0+IHtcbiAgICAgICAgY29uc3QgbWVyZ2VkUmVzcG9uc2U6IEJvRG9jdW1lbnRzV2l0aEVycm9ycyA9IG5ldyBCb0RvY3VtZW50c1dpdGhFcnJvcnMoKTtcbiAgICAgICAgYXJyYXlPZkRvY3VtZW50c1dpdGhFcnJvcnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICghIWl0ZW0uZG9jdW1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1lcmdlZFJlc3BvbnNlLmRvY3VtZW50cykge1xuICAgICAgICAgICAgICAgICAgICBtZXJnZWRSZXNwb25zZS5kb2N1bWVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzID0gbWVyZ2VkUmVzcG9uc2UuZG9jdW1lbnRzLmNvbmNhdChcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kb2N1bWVudHNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEhaXRlbS5lcnJvcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmICghbWVyZ2VkUmVzcG9uc2UuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZFJlc3BvbnNlLmVycm9ycyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZXJnZWRSZXNwb25zZS5lcnJvcnMgPSBtZXJnZWRSZXNwb25zZS5lcnJvcnMuY29uY2F0KFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmVycm9yc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWVyZ2VkUmVzcG9uc2U7XG4gICAgfTtcblxuICAgIHByaXZhdGUgbWFuYWdlQmVuZWZpY2lhcnlSZXF1aXJlZEVycm9yKFxuICAgICAgICBodHRwRXJyb3JSZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2VcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhaHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBjb25zdCB7IGVycm9yIH06IGFueSA9IGh0dHBFcnJvclJlc3BvbnNlO1xuICAgICAgICAgICAgaWYgKGVycm9yPy5jb2RlID09PSAnQkVORUZJQ0lBUllfUkVRVUlSRUQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pYW1JbnRlcmNlcHRvci5zZXRJYW1TZXNzaW9uRXhwaXJlZE1hbnVhbGx5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -11388,6 +11388,12 @@ class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComponent {
11388
11388
  this.hostName = this.hostId;
11389
11389
  this.excludeFromErrorSummary = true;
11390
11390
  }
11391
+ onModelChange(value) {
11392
+ super.onModelChange(value);
11393
+ if (!value || ObjectHelper.isEmpty(value)) {
11394
+ this.manageSuggestionListAndFocusAfterRemovingAnItem(null);
11395
+ }
11396
+ }
11391
11397
  hasErrorsToDisplay() {
11392
11398
  return !!this.autocompleteComponent
11393
11399
  ? this.autocompleteComponent.hasErrorsToDisplay()
@@ -11540,15 +11546,19 @@ class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComponent {
11540
11546
  manageSuggestionListAndFocusAfterRemovingAnItem(removedIndex) {
11541
11547
  // Hide message saying no more suggestions to display
11542
11548
  this.showEmptyListMessage = false;
11543
- // Manually show autocomplete because there is at least one suggestions to display
11544
- this.autocompleteComponent.inputElement.nativeElement.hidden = false;
11545
- // Add back selected item to autocomplete suggestion list
11546
- this.autocompleteComponent.elements = this.filterAutocompleteElements(this.elements);
11547
- // When deleting a selected item, check were to set focus back when no more items to delete
11548
- // eslint-disable-next-line rxjs-angular/prefer-async-pipe
11549
- this.selectedElemRef.changes.pipe(first()).subscribe(() => {
11550
- this.focusNextAreaAfterDelete(removedIndex);
11551
- });
11549
+ if (this.autocompleteComponent) {
11550
+ // Manually show autocomplete because there is at least one suggestions to display
11551
+ this.autocompleteComponent.inputElement.nativeElement.hidden = false;
11552
+ // Add back selected item to autocomplete suggestion list
11553
+ this.autocompleteComponent.elements = this.filterAutocompleteElements(this.elements);
11554
+ }
11555
+ if (removedIndex !== null) {
11556
+ // When deleting a selected item, check were to set focus back when no more items to delete
11557
+ // eslint-disable-next-line rxjs-angular/prefer-async-pipe
11558
+ this.selectedElemRef.changes.pipe(first()).subscribe(() => {
11559
+ this.focusNextAreaAfterDelete(removedIndex);
11560
+ });
11561
+ }
11552
11562
  }
11553
11563
  showAlertMessageAndHideAutocomplete() {
11554
11564
  // Show a message to user indicating there is no more suggestions to display
@@ -13652,12 +13662,13 @@ class BoDocumentsWithErrors {
13652
13662
  }
13653
13663
 
13654
13664
  class BoMultiUploadService {
13655
- constructor(httpClient, growlService, applicationInfoService, dictionaryService, uploadProgressService) {
13665
+ constructor(httpClient, growlService, applicationInfoService, dictionaryService, uploadProgressService, iamInterceptor) {
13656
13666
  this.httpClient = httpClient;
13657
13667
  this.growlService = growlService;
13658
13668
  this.applicationInfoService = applicationInfoService;
13659
13669
  this.dictionaryService = dictionaryService;
13660
13670
  this.uploadProgressService = uploadProgressService;
13671
+ this.iamInterceptor = iamInterceptor;
13661
13672
  // A way to have a unique Id per file
13662
13673
  this.globalSequence = 0;
13663
13674
  this.NB_CONCURRENT_FILES_TO_UPLOAD = 3;
@@ -13710,6 +13721,7 @@ class BoMultiUploadService {
13710
13721
  this.growlService.addWithType(GrowlType.SUCCESS, message);
13711
13722
  }), catchError((e) => {
13712
13723
  const message = this.dictionaryService.getKeySync('foehn-uploader.delete-error-message');
13724
+ this.manageBeneficiaryRequiredError(e);
13713
13725
  this.growlService.addWithType(GrowlType.DANGER, message);
13714
13726
  return throwError(() => e);
13715
13727
  }));
@@ -13738,18 +13750,28 @@ class BoMultiUploadService {
13738
13750
  this.uploadProgressService.showProgress.next(false);
13739
13751
  const message = this.dictionaryService.getKeySync('foehn-uploader.transmission-error-message');
13740
13752
  this.growlService.addWithType(GrowlType.DANGER, message);
13753
+ this.manageBeneficiaryRequiredError(e);
13741
13754
  return throwError(() => e);
13742
13755
  }));
13743
13756
  }
13757
+ manageBeneficiaryRequiredError(httpErrorResponse) {
13758
+ if (!!httpErrorResponse) {
13759
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13760
+ const { error } = httpErrorResponse;
13761
+ if ((error === null || error === void 0 ? void 0 : error.code) === 'BENEFICIARY_REQUIRED') {
13762
+ this.iamInterceptor.setIamSessionExpiredManually();
13763
+ }
13764
+ }
13765
+ }
13744
13766
  }
13745
- BoMultiUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BoMultiUploadService, deps: [{ token: i1.HttpClient }, { token: GrowlBrokerService }, { token: ApplicationInfoService }, { token: SdkDictionaryService }, { token: UploadProgressService }], target: i0.ɵɵFactoryTarget.Injectable });
13767
+ BoMultiUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BoMultiUploadService, deps: [{ token: i1.HttpClient }, { token: GrowlBrokerService }, { token: ApplicationInfoService }, { token: SdkDictionaryService }, { token: UploadProgressService }, { token: IamExpiredInterceptorService }], target: i0.ɵɵFactoryTarget.Injectable });
13746
13768
  BoMultiUploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BoMultiUploadService, providedIn: 'root' });
13747
13769
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BoMultiUploadService, decorators: [{
13748
13770
  type: Injectable,
13749
13771
  args: [{
13750
13772
  providedIn: 'root'
13751
13773
  }]
13752
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: GrowlBrokerService }, { type: ApplicationInfoService }, { type: SdkDictionaryService }, { type: UploadProgressService }]; } });
13774
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: GrowlBrokerService }, { type: ApplicationInfoService }, { type: SdkDictionaryService }, { type: UploadProgressService }, { type: IamExpiredInterceptorService }]; } });
13753
13775
 
13754
13776
  class FoehnBoMultiUploadComponent extends AbstractFoehnUploaderComponent {
13755
13777
  constructor(boMultiUploadService, applicationInfoService, confirmModalService, dictionaryService, growlService, pageUploadLimitService) {