@seniorsistemas/angular-components 17.31.4 → 17.31.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/bundles/seniorsistemas-angular-components.umd.js +262 -249
  2. package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
  3. package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
  4. package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
  5. package/components/dynamic-form/components/lookup/lookup.component.d.ts +3 -1
  6. package/esm2015/components/dynamic-form/components/fields/autocomplete/autocomplete-field.component.js +4 -4
  7. package/esm2015/components/dynamic-form/components/lookup/lookup.component.js +14 -5
  8. package/esm2015/components/file-upload/file-upload.component.js +2 -2
  9. package/esm2015/components/file-upload/file-upload.module.js +3 -3
  10. package/esm2015/seniorsistemas-angular-components.js +70 -70
  11. package/esm5/components/dynamic-form/components/fields/autocomplete/autocomplete-field.component.js +4 -4
  12. package/esm5/components/dynamic-form/components/lookup/lookup.component.js +18 -5
  13. package/esm5/components/file-upload/file-upload.component.js +2 -2
  14. package/esm5/components/file-upload/file-upload.module.js +3 -3
  15. package/esm5/seniorsistemas-angular-components.js +70 -70
  16. package/fesm2015/seniorsistemas-angular-components.js +177 -169
  17. package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
  18. package/fesm5/seniorsistemas-angular-components.js +190 -178
  19. package/fesm5/seniorsistemas-angular-components.js.map +1 -1
  20. package/package.json +1 -1
  21. package/seniorsistemas-angular-components.d.ts +69 -69
  22. package/seniorsistemas-angular-components.metadata.json +1 -1
@@ -28,7 +28,9 @@ export declare class LookupComponent implements ControlValueAccessor, OnChanges,
28
28
  lookupDisplayField: string;
29
29
  lookupDisplayFieldTooltip: boolean;
30
30
  lookupEmptyMessage: string;
31
- lookupAppendTo: string;
31
+ private _lookupAppendTo;
32
+ get lookupAppendTo(): string | undefined;
33
+ set lookupAppendTo(value: string | undefined);
32
34
  searchEmptyDescription: string;
33
35
  searchGridData: any[];
34
36
  searchTotalRecords: number;
@@ -1,5 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
- import { ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from "@angular/core";
2
+ import { ChangeDetectorRef, Component, ElementRef, Input } from "@angular/core";
3
3
  let AutocompleteFieldComponent = class AutocompleteFieldComponent {
4
4
  constructor(changeDetectorRef, elementRef) {
5
5
  this.changeDetectorRef = changeDetectorRef;
@@ -10,7 +10,7 @@ let AutocompleteFieldComponent = class AutocompleteFieldComponent {
10
10
  this.changeDetectorRef.detectChanges();
11
11
  }
12
12
  setInputRef() {
13
- this.inputRef = this.elementRef.nativeElement.querySelector('input');
13
+ this.inputRef = this.elementRef.nativeElement.querySelector("input");
14
14
  }
15
15
  };
16
16
  AutocompleteFieldComponent.ctorParameters = () => [
@@ -25,8 +25,8 @@ __decorate([
25
25
  ], AutocompleteFieldComponent.prototype, "formControl", void 0);
26
26
  AutocompleteFieldComponent = __decorate([
27
27
  Component({
28
- template: "<s-field-label *ngIf=\"inputRef\" [field]=\"field\"\n [fieldContainerRef]=\"inputRef\"></s-field-label>\n \n<div\n [sTooltip]=\"field.tooltip\"\n tooltipPosition=\"top\"\n [showDelay]=\"500\">\n <s-lookup\n [id]=\"(field.id || field.name)\"\n [multiple]=\"field.multiple\"\n [formControl]=\"formControl\"\n [placeholder]=\"field.placeholder\"\n [lookupSuggestions]=\"field.suggestions\"\n [dataKey]=\"field.dataKey\"\n (onLookupRequest)=\"field.onSearch($event)\"\n [lookupDisplayField]=\"field.displayField\"\n [showSearch]=\"false\"\n [lookupAppendTo]=\"field.appendTo\"\n (onSelect)=\"field.onSelect ? field.onSelect($event) : null\"\n (onUnselect)=\"field.onUnselect ? field.onUnselect($event) : null\"\n (onClear)=\"field.onClear ? field.onClear($event) : null\"\n (onBlur)=\"field.onBlur ? field.onBlur($event) : null\"\n [lookupEmptyMessage]=\"field.emptyMessage\">\n </s-lookup>\n</div>\n"
28
+ template: "<s-field-label *ngIf=\"inputRef\" [field]=\"field\" [fieldContainerRef]=\"inputRef\"></s-field-label>\n\n<div [sTooltip]=\"field.tooltip\" tooltipPosition=\"top\" [showDelay]=\"500\">\n <s-lookup\n [id]=\"field.id || field.name\"\n [multiple]=\"field.multiple\"\n [formControl]=\"formControl\"\n [placeholder]=\"field.placeholder\"\n [lookupSuggestions]=\"field.suggestions\"\n [dataKey]=\"field.dataKey\"\n (onLookupRequest)=\"field.onSearch($event)\"\n [lookupDisplayField]=\"field.displayField\"\n [showSearch]=\"false\"\n [lookupAppendTo]=\"field.appendTo\"\n (onSelect)=\"field.onSelect ? field.onSelect($event) : null\"\n (onUnselect)=\"field.onUnselect ? field.onUnselect($event) : null\"\n (onClear)=\"field.onClear ? field.onClear($event) : null\"\n (onBlur)=\"field.onBlur ? field.onBlur($event) : null\"\n [lookupEmptyMessage]=\"field.emptyMessage\"\n >\n </s-lookup>\n</div>\n"
29
29
  })
30
30
  ], AutocompleteFieldComponent);
31
31
  export { AutocompleteFieldComponent };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2ZpZWxkcy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVEzRixJQUFhLDBCQUEwQixHQUF2QyxNQUFhLDBCQUEwQjtJQVFuQyxZQUE2QixpQkFBb0MsRUFDcEMsVUFBc0I7UUFEdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQ2hELENBQUM7SUFFRyxlQUFlO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0NBQ0osQ0FBQTs7WUFabUQsaUJBQWlCO1lBQ3hCLFVBQVU7O0FBUG5EO0lBREMsS0FBSyxFQUFFO3lEQUN3QjtBQUVoQztJQURDLEtBQUssRUFBRTsrREFDd0I7QUFKdkIsMEJBQTBCO0lBSHRDLFNBQVMsQ0FBQztRQUNQLDBnQ0FBZ0Q7S0FDbkQsQ0FBQztHQUNXLDBCQUEwQixDQW9CdEM7U0FwQlksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlRmllbGQgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlndXJhdGlvbnMvZmllbGRzL2F1dG9jb21wbGV0ZS1maWVsZFwiO1xuaW1wb3J0IHsgQmFzZUZpZWxkQ29tcG9uZW50Q29uZmlnIH0gZnJvbSBcIi4uL2Jhc2UtZmllbGQtY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiBcImF1dG9jb21wbGV0ZS1maWVsZC5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIEJhc2VGaWVsZENvbXBvbmVudENvbmZpZyB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmllbGQ6IEF1dG9jb21wbGV0ZUZpZWxkO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICAgIHB1YmxpYyBpbnB1dFJlZjogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0SW5wdXRSZWYoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbnB1dFJlZigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFJlZiA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgfVxufVxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2ZpZWxkcy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUWhGLElBQWEsMEJBQTBCLEdBQXZDLE1BQWEsMEJBQTBCO0lBUW5DLFlBQ3FCLGlCQUFvQyxFQUNwQyxVQUFzQjtRQUR0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDeEMsQ0FBQztJQUVHLGVBQWU7UUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU8sV0FBVztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDSixDQUFBOztZQVoyQyxpQkFBaUI7WUFDeEIsVUFBVTs7QUFSM0M7SUFEQyxLQUFLLEVBQUU7eURBQ3dCO0FBRWhDO0lBREMsS0FBSyxFQUFFOytEQUN3QjtBQUp2QiwwQkFBMEI7SUFIdEMsU0FBUyxDQUFDO1FBQ1Ascy9CQUFnRDtLQUNuRCxDQUFDO0dBQ1csMEJBQTBCLENBcUJ0QztTQXJCWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlRmllbGQgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlndXJhdGlvbnMvZmllbGRzL2F1dG9jb21wbGV0ZS1maWVsZFwiO1xuaW1wb3J0IHsgQmFzZUZpZWxkQ29tcG9uZW50Q29uZmlnIH0gZnJvbSBcIi4uL2Jhc2UtZmllbGQtY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiBcImF1dG9jb21wbGV0ZS1maWVsZC5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIEJhc2VGaWVsZENvbXBvbmVudENvbmZpZyB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmllbGQ6IEF1dG9jb21wbGV0ZUZpZWxkO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICAgIHB1YmxpYyBpbnB1dFJlZjogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRJbnB1dFJlZigpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldElucHV0UmVmKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0UmVmID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0XCIpO1xuICAgIH1cbn1cbiJdfQ==
@@ -22,7 +22,7 @@ let LookupComponent = LookupComponent_1 = class LookupComponent {
22
22
  this.autocompleteForceSelection = true;
23
23
  this.disabled = false;
24
24
  this.showSearch = true;
25
- this.lookupAppendTo = "body";
25
+ this._lookupAppendTo = "body";
26
26
  this.searchFields = [];
27
27
  this.showAddOption = false;
28
28
  this.showEditOption = false;
@@ -47,6 +47,12 @@ let LookupComponent = LookupComponent_1 = class LookupComponent {
47
47
  this.originalFormValues = {};
48
48
  this.ngUnsubscribe = new Subject();
49
49
  }
50
+ get lookupAppendTo() {
51
+ return this._lookupAppendTo;
52
+ }
53
+ set lookupAppendTo(value) {
54
+ this._lookupAppendTo = value !== null && value !== void 0 ? value : 'body';
55
+ }
50
56
  ngOnInit() {
51
57
  if (!this.searchGridFields) {
52
58
  this.searchGridFields = this.searchFields
@@ -191,10 +197,13 @@ let LookupComponent = LookupComponent_1 = class LookupComponent {
191
197
  this.dialogVisible = false;
192
198
  this.collapsed = false;
193
199
  this.hotkeysService.unpause([...this.hotkeysService.pausedHotkeys]);
194
- if (this.multiple)
200
+ if (this.multiple) {
195
201
  multiInputEL.nativeElement.focus();
196
- else
202
+ }
203
+ else {
197
204
  inputEL.nativeElement.focus();
205
+ }
206
+ this.formGroupDialog.reset(this.originalFormValues);
198
207
  }
199
208
  search() {
200
209
  this.resetTable();
@@ -427,7 +436,7 @@ __decorate([
427
436
  ], LookupComponent.prototype, "lookupEmptyMessage", void 0);
428
437
  __decorate([
429
438
  Input()
430
- ], LookupComponent.prototype, "lookupAppendTo", void 0);
439
+ ], LookupComponent.prototype, "lookupAppendTo", null);
431
440
  __decorate([
432
441
  Input()
433
442
  ], LookupComponent.prototype, "searchEmptyDescription", void 0);
@@ -586,4 +595,4 @@ LookupComponent = LookupComponent_1 = __decorate([
586
595
  })
587
596
  ], LookupComponent);
588
597
  export { LookupComponent };
589
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2xvb2t1cC9sb29rdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RyxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsVUFBVSxFQUNWLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUVyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVsQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUs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LEVBQUUsR0FBRztpQkFDYixDQUFDLENBQ0w7Z0JBQ0QsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0gsQ0FBQztZQUNGLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRTtnQkFDNUIsS0FBSyxDQUNELFFBQVEsRUFDUixLQUFLLENBQUM7b0JBQ0YsT0FBTyxFQUFFLENBQUM7aUJBQ2IsQ0FBQyxDQUNMO2dCQUNELEtBQUssQ0FDRCxRQUFRLEVBQ1IsS0FBSyxDQUFDO29CQUNGLE9BQU8sRUFBRSxDQUFDO2lCQUNiLENBQUMsQ0FDTDtnQkFDRCxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2FBQ3pELENBQUM7U0FDTDs7S0FDSixDQUFDO0dBQ1csZUFBZSxDQXluQjNCO1NBem5CWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgYW5pbWF0ZUNoaWxkLCBncm91cCwgcXVlcnksIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdGFibGUsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTWFza0NvbmZpZyB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvbmcyLWN1cnJlbmN5LW1hc2tcIjtcbmltcG9ydCB7IEhvdGtleSwgSG90a2V5c1NlcnZpY2UgfSBmcm9tIFwiYW5ndWxhcjItaG90a2V5c1wiO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tIFwiYmlnbnVtYmVyLmpzXCI7XG5pbXBvcnQgeyBTb3J0TWV0YSB9IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlIH0gZnJvbSBcInByaW1lbmcvYXV0b2NvbXBsZXRlXCI7XG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tIFwicHJpbWVuZy9kaWFsb2dcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gXCIuLi8uLlwiO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vYmFkZ2UvYmFkZ2UuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDYWxlbmRhckxvY2FsZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vbG9jYWxlL29wdGlvbnMvY2FsZW5kYXJcIjtcbmltcG9ydCB7IEJpZ251bWJlckZpZWxkQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbmZpZ3VyYXRpb25zL2ZpZWxkcy9iaWdudW1iZXItZmllbGRcIjtcbmltcG9ydCB7IEJvb2xlYW5PcHRpb25zTGFiZWwgfSBmcm9tIFwiLi4vLi4vY29uZmlndXJhdGlvbnMvZmllbGRzL2Jvb2xlYW4tZmllbGRcIjtcbmltcG9ydCB7IEZvcm1GaWVsZCB9IGZyb20gXCIuLi8uLi9jb25maWd1cmF0aW9ucy9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBEZWZhdWx0RmlsdGVyIH0gZnJvbSBcIi4vbW9kZWxzL2RlZmF1bHQtZmlsdGVyXCI7XG5cbkBJbmplY3RhYmxlKClcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtbG9va3VwXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9sb29rdXAuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vbG9va3VwLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExvb2t1cENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKFwiY29sbGFwc2VDb250ZW50XCIsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgIFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMHB4XCIsXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICBcInZpc2libGVcIixcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIipcIixcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oXCJ2aXNpYmxlIDw9PiBoaWRkZW5cIiwgW2dyb3VwKFtxdWVyeShcIkBjaGlsZENvbGxhcHNlQ29udGVudFwiLCBhbmltYXRlQ2hpbGQoKSksIGFuaW1hdGUoXCJ7e3RyYW5zaXRpb25QYXJhbXN9fVwiKV0pXSksXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKFwiY2hpbGRDb2xsYXBzZUNvbnRlbnRcIiwgW1xuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgXCI6bGVhdmVcIixcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICBcIjplbnRlclwiLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oXCIqIDw9PiAqXCIsIGFuaW1hdGUoXCJ7e3RyYW5zaXRpb25QYXJhbXN9fVwiKSksXG4gICAgICAgIF0pLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIExvb2t1cENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYHMtbG9va3VwLSR7TG9va3VwQ29tcG9uZW50Lm5leHRJZCsrfWA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVGb3JjZVNlbGVjdGlvbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRhdGFLZXk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dTZWFyY2ggPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwU3VnZ2VzdGlvbnM6IGFueVtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwRGlzcGxheUZpZWxkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb29rdXBEaXNwbGF5RmllbGRUb29sdGlwOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwRW1wdHlNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb29rdXBBcHBlbmRUbyA9IFwiYm9keVwiO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoRW1wdHlEZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoR3JpZERhdGE6IGFueVtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoVG90YWxSZWNvcmRzOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hGaWVsZHM6IEZvcm1GaWVsZFtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hHcmlkRmllbGRzOiBGb3JtRmllbGRbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpU29ydE1ldGE6IFNvcnRNZXRhW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc29ydGFibGVDb2x1bW5zRGlzYWJsZWQ6IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwUm93UHJvcHM6IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGVmYXVsdEZpbHRlcjogRGVmYXVsdEZpbHRlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0FkZE9wdGlvbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0VkaXRPcHRpb24gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dSZW1vdmVPcHRpb24gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpYWxvZ0Z1bGxzY3JlZW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkxvb2t1cFJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25TZWFyY2hSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uRm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uS2V5VXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25VbnNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQWRkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uRWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvblJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bltdPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQ2xlYXJCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoVGFibGUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyB0YWJsZTogVGFibGU7XG5cbiAgICBAVmlld0NoaWxkKERpYWxvZywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIGRpYWxvZzogRGlhbG9nO1xuXG4gICAgQFZpZXdDaGlsZChBdXRvQ29tcGxldGUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBhdXRvY29tcGxldGU6IEF1dG9Db21wbGV0ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaFRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBMb29rdXAgY2FuIGRvIHRoaXMgZm9yIHlvdS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hFbXB0eVRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBMb29rdXAgY2FuIGRvIHRoaXMgZm9yIHlvdS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hUb3RhbFJlY29yZHNMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgTG9va3VwIGNhbiBkbyB0aGlzIGZvciB5b3UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsdGVyVGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIExvb2t1cCBjYW4gZG8gdGhpcyBmb3IgeW91LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbHRlckxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBMb29rdXAgY2FuIGRvIHRoaXMgZm9yIHlvdS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjbGVhckxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBMb29rdXAgY2FuIGRvIHRoaXMgZm9yIHlvdS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgTG9va3VwIGNhbiBkbyB0aGlzIGZvciB5b3UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VsZWN0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIExvb2t1cCBjYW4gZG8gdGhpcyBmb3IgeW91LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVtcHR5RmllbGRMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgTG9va3VwIGNhbiBkbyB0aGlzIGZvciB5b3UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVjb3JkTGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIExvb2t1cCBjYW4gZG8gdGhpcyBmb3IgeW91LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlY29yZHNMYWJlbDogc3RyaW5nO1xuXG4gICAgcHVibGljIHZhbHVlOiBhbnk7XG4gICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgcHVibGljIGFuaW1hdGluZzogYm9vbGVhbjtcbiAgICBwdWJsaWMgZGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBjb2xsYXBzZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IGFueVtdID0gW107XG4gICAgcHVibGljIGZvcm1Hcm91cERpYWxvZzogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyB0cmFuc2l0aW9uT3B0aW9ucyA9IFwiNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpXCI7XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIG9uVG91Y2hlZDogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBvcmlnaW5hbEZvcm1WYWx1ZXMgPSB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaG90a2V5c1NlcnZpY2U6IEhvdGtleXNTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaEdyaWRGaWVsZHMpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoR3JpZEZpZWxkcyA9IHRoaXMuc2VhcmNoRmllbGRzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0udmlzaWJsZSB8fCBpdGVtLnZpc2libGU/LigpKVxuICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IG5ldyBGb3JtRmllbGQoeyAuLi5pdGVtIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoRmllbGRzID0gdGhpcy5zZWFyY2hGaWVsZHMubWFwKFxuICAgICAgICAgICAgKHZhbHVlOiBGb3JtRmllbGQpID0+XG4gICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDEyLCBsZzogMTIsIHhsOiAxMiB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zZWFyY2hHcmlkRmllbGRzID0gdGhpcy5zZWFyY2hHcmlkRmllbGRzXG4gICAgICAgICAgICAuZmlsdGVyKChncmlkRmllbGQ6IEZvcm1GaWVsZCkgPT4gIWdyaWRGaWVsZC52aXNpYmxlIHx8IGdyaWRGaWVsZC52aXNpYmxlPy4oKSlcbiAgICAgICAgICAgIC5tYXAoKGdyaWRGaWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3JpZEZpZWxkW1wid2lkdGhcIl0gPSB0aGlzLmdldENvbFdpZHRoKGdyaWRGaWVsZC5sYWJlbCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjYWxlbmRhck9wdGlvbnMgPSBuZXcgQ2FsZW5kYXJMb2NhbGVPcHRpb25zKHsgLi4uZ3JpZEZpZWxkLmNhbGVuZGFyTG9jYWxlT3B0aW9ucyB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChjYWxlbmRhck9wdGlvbnM/LmRhdGVGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChncmlkRmllbGQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhck9wdGlvbnMuZGF0ZUZvcm1hdCA9IHRoaXMuX2NvbnZlcnRUb01vbWVudERhdGVGb3JtYXQoY2FsZW5kYXJPcHRpb25zLmRhdGVGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuVGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhck9wdGlvbnMuZGF0ZUZvcm1hdCA9IHRoaXMuX2NvbnZlcnRUb01vbWVudEhvdXJGb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyT3B0aW9ucy5ob3VyRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhck9wdGlvbnMuZGF0ZUZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZ3JpZEZpZWxkLmNhbGVuZGFyTG9jYWxlT3B0aW9ucyA9IGNhbGVuZGFyT3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZ3JpZEZpZWxkO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5zZWFyY2hGaWVsZHMucmVkdWNlKChyZXN1bHQ6IGFueSwgZmllbGQpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IG5ldyBGb3JtQ29udHJvbChmaWVsZC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbEZvcm1WYWx1ZXNbZmllbGQubmFtZV0gPSBmaWVsZC5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXBEaWFsb2cgPSBuZXcgRm9ybUdyb3VwKGZvcm1Hcm91cCk7XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlRXZlbnRzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50UmVjb3JkVG90YWxpemVyKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRvdGFsUmVjb3Jkc0xhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hUb3RhbFJlY29yZHNMYWJlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlY29yZExhYmVsID0gdGhpcy5yZWNvcmRMYWJlbFxuICAgICAgICAgICAgPyBgJHt0aGlzLnNlYXJjaFRvdGFsUmVjb3Jkc30gJHt0aGlzLnJlY29yZExhYmVsfWBcbiAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMudG90YWxfcmVjb3JkXCIsIHsgY291bnQ6IHRoaXMuc2VhcmNoVG90YWxSZWNvcmRzIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlY29yZHNMYWJlbCA9IHRoaXMucmVjb3Jkc0xhYmVsXG4gICAgICAgICAgICA/IGAke3RoaXMuc2VhcmNoVG90YWxSZWNvcmRzfSAke3RoaXMucmVjb3Jkc0xhYmVsfWBcbiAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMudG90YWxfcmVjb3Jkc1wiLCB7IGNvdW50OiB0aGlzLnNlYXJjaFRvdGFsUmVjb3JkcyB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hUb3RhbFJlY29yZHMgPT09IDEgPyByZWNvcmRMYWJlbCA6IHJlY29yZHNMYWJlbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb252ZXJ0VG9Nb21lbnRIb3VyRm9ybWF0KGhvdXJGb3JtYXQ6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJkZC9tbS95eVwiKSB7XG4gICAgICAgICAgICAvLyB2YWxvciBwYWRyw6NvIHBhcmEgbyBmb3JtYXQuXG4gICAgICAgICAgICByZXR1cm4gXCJMVFNcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3VyRm9ybWF0ID09PSBcIjEyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxiSFxcYi8sIFwiaFwiKSAvLyBob3VyICgxMiBob3VyIHRpbWUpIChubyBsZWFkaW5nIHplcm8pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcYkhIXFxiLywgXCJoaFwiKTsgLy8gaG91ciAoMTIgaG91ciB0aW1lKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhvdXJGb3JtYXQgPT09IFwiMjRcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGJoXFxiLywgXCJIXCIpIC8vIGhvdXIgKDI0IGhvdXIgdGltZSkgKG5vIGxlYWRpbmcgemVybylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxiaGhcXGIvLCBcIkhIXCIpOyAvLyBob3VyICgyNCBob3VyIHRpbWUpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ybWF0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NvbnZlcnRUb01vbWVudERhdGVGb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAvLyBBIG9yZGVtIGRvcyByZXBsYWNlcyDDqSBpbXBvcnRhbnRlLlxuICAgICAgICByZXR1cm4gZm9ybWF0XG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiZFxcYi8sIFwiRFwiKSAvLyBkYXkgb2YgbW9udGggKG5vIGxlYWRpbmcgemVybylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXGJkZFxcYi8sIFwiRERcIikgLy8gZGF5IG9mIG1vbnRoXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxib1xcYi8sIFwiREREXCIpIC8vIGRheSBvZiB0aGUgeWVhciAobm8gbGVhZGluZyB6ZXJvKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYm9vXFxiLywgXCJEREREXCIpIC8vIGRheSBvZiB0aGUgeWVhclxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYk1cXGIvLCBcIk1NTVwiKSAvLyBtb250aCBuYW1lIHNob3J0XG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiTU1cXGIvLCBcIk1NTU1cIikgLy8gbW9udGggbmFtZSBsb25nXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxibVxcYi8sIFwiTVwiKSAvLyBtb250aCBvZiB5ZWFyIChubyBsZWFkaW5nKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYm1tXFxiLywgXCJNTVwiKSAvLyBtb250aCBvZiB5ZWFyXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxieVxcYi8sIFwiWVlcIikgLy8geWVhciAodHdvIGRpZ2l0cylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXGJ5eVxcYi8sIFwiWVlZWVwiKTsgLy8geWVhciAoZm91ciBkaWdpdHMpXG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGUub25PdmVybGF5QW5pbWF0aW9uRG9uZSA9IChldmVudCkgPT4ge307XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nVmlzaWJsZSAmJiBjaGFuZ2VzLnNlYXJjaEdyaWREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldEZvY3VzRmlsdGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0R3JpZERhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEdyaWREYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMb29rdXBTdWdnZXN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9va3VwU3VnZ2VzdGlvbnM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG1ha2VTZWFyY2hSZXF1ZXN0UGFyYW1zKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZm9ybUdyb3VwRGlhbG9nLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4uZXZlbnQsIGZpbHRlckRhdGE6IGZpbHRlcnMgfTtcbiAgICAgICAgY29uc3QgeyBtdWx0aVNvcnRNZXRhIH0gPSBldmVudDtcbiAgICAgICAgdGhpcy5tdWx0aVNvcnRNZXRhID0gbXVsdGlTb3J0TWV0YSB8fCB0aGlzLm11bHRpU29ydE1ldGE7XG5cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbGF6eUxvYWRHcmlkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgLy8gQW8gZGVmaW5pciB1bWEgb3JkZW5hw6fDo28gbmEgdGFiZWxhIGRvIGxvb2t1cCBlc3NlIG3DqXRvZG8gw6kgY2hhbWFkbyAyIHZlemVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmltZWZhY2VzL3ByaW1lbmcvaXNzdWVzLzU0ODBcbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5tYWtlU2VhcmNoUmVxdWVzdFBhcmFtcyhldmVudCk7XG4gICAgICAgIHRoaXMub25TZWFyY2hSZXF1ZXN0Lm5leHQocGFyYW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db21wbGV0ZU1ldGhvZChldmVudDogeyBvcmlnaW5hbEV2ZW50OiBJbnB1dEV2ZW50OyBxdWVyeTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZUZvcmNlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUgPT09IFwiXCIgPyBudWxsIDogdGhpcy52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uTG9va3VwUmVxdWVzdC5uZXh0KGV2ZW50LnF1ZXJ5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEZpbHRlcnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5kZWZhdWx0RmlsdGVyKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5kZWZhdWx0RmlsdGVyXG4gICAgICAgICAgICAuZmlsdGVyKCh7IGZpZWxkIH0pID0+IHRoaXMuZm9ybUdyb3VwRGlhbG9nLmNvbnRhaW5zKGZpZWxkKSAmJiAhdGhpcy5mb3JtR3JvdXBEaWFsb2cuZ2V0KFtmaWVsZF0pLmRpcnR5KVxuICAgICAgICAgICAgLmZvckVhY2goKHsgdmFsdWUsIGZpZWxkIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cERpYWxvZy5nZXQoW2ZpZWxkXSkucGF0Y2hWYWx1ZSh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gdmFsdWUoKSA6IHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93RGlhbG9nKCkge1xuICAgICAgICB0aGlzLnNldERlZmF1bHRGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuc2VhcmNoR3JpZERhdGEgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuaG90a2V5c1NlcnZpY2UucGF1c2UoWy4uLnRoaXMuaG90a2V5c1NlcnZpY2UuaG90a2V5c10pO1xuICAgICAgICB0aGlzLnNldEhvdGtleXMoKTtcblxuICAgICAgICBsZXQgc2VsZWN0ZWQ6IGFueSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkLmNvbmNhdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IFt0aGlzLnZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZURpYWxvZygpIHtcbiAgICAgICAgY29uc3QgeyBpbnB1dEVMLCBtdWx0aUlucHV0RUwgfSA9IHRoaXMuYXV0b2NvbXBsZXRlO1xuICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ob3RrZXlzU2VydmljZS51bnBhdXNlKFsuLi50aGlzLmhvdGtleXNTZXJ2aWNlLnBhdXNlZEhvdGtleXNdKTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkgbXVsdGlJbnB1dEVMLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgZWxzZSBpbnB1dEVMLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VhcmNoKCkge1xuICAgICAgICB0aGlzLnJlc2V0VGFibGUoKTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRpYWxvZy5tb3ZlT25Ub3AoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwRGlhbG9nLnJlc2V0KHRoaXMub3JpZ2luYWxGb3JtVmFsdWVzKTtcbiAgICAgICAgdGhpcy5yZXNldFRhYmxlKCk7XG4gICAgICAgIHRoaXMub25DbGVhckJ1dHRvbkNsaWNrLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzZXRUYWJsZSgpIHtcbiAgICAgICAgdGhpcy50YWJsZS5yZXNldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3QoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZC5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQgJiYgKHRoaXMubXVsdGlwbGUgPyB0aGlzLnNlbGVjdGVkIDogdGhpcy5zZWxlY3RlZFswXSk7XG4gICAgICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZDtcbiAgICAgICAgdGhpcy5vblNlbGVjdC5uZXh0KHNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5oaWRlRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkOiBhbnkpIHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZCkgcmV0dXJuO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkpIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgZWxzZSB0aGlzLnNlbGVjdGVkID0gW3NlbGVjdGVkXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmllbGRWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2UoKHJlc3VsdCwgcHJvcCkgPT4gKHJlc3VsdFtwcm9wXSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHJlc3VsdFtwcm9wXSksIG9iaik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJhZGdlRnJvbVZhbHVlKFxuICAgICAgICB2YWx1ZTogdW5rbm93bixcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgICAgIHZhbHVlOiB1bmtub3duO1xuICAgICAgICAgICAgYmFkZ2U/OiB7XG4gICAgICAgICAgICAgICAgdHlwZT86IEJhZGdlQ29tcG9uZW50W1widHlwZVwiXTtcbiAgICAgICAgICAgICAgICBjb2xvcj86IEJhZGdlQ29tcG9uZW50W1wiY29sb3JcIl07XG4gICAgICAgICAgICAgICAgaWNvbkNsYXNzPzogQmFkZ2VDb21wb25lbnRbXCJpY29uQ2xhc3NcIl07XG4gICAgICAgICAgICAgICAgaWNvblBvc2l0aW9uPzogQmFkZ2VDb21wb25lbnRbXCJpY29uUG9zaXRpb25cIl07XG4gICAgICAgICAgICB9O1xuICAgICAgICB9W11cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM/LmZpbmQoKG9wdCkgPT4gb3B0LnZhbHVlID09PSB2YWx1ZSk/LmJhZGdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMYWJlbEZvclZhbHVlKFxuICAgICAgICB2YWx1ZTogdW5rbm93bixcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgICAgIHZhbHVlOiB1bmtub3duO1xuICAgICAgICAgICAgYmFkZ2U/OiB7XG4gICAgICAgICAgICAgICAgdHlwZT86IEJhZGdlQ29tcG9uZW50W1widHlwZVwiXTtcbiAgICAgICAgICAgICAgICBjb2xvcj86IEJhZGdlQ29tcG9uZW50W1wiY29sb3JcIl07XG4gICAgICAgICAgICAgICAgaWNvbkNsYXNzPzogQmFkZ2VDb21wb25lbnRbXCJpY29uQ2xhc3NcIl07XG4gICAgICAgICAgICAgICAgaWNvblBvc2l0aW9uPzogQmFkZ2VDb21wb25lbnRbXCJpY29uUG9zaXRpb25cIl07XG4gICAgICAgICAgICB9O1xuICAgICAgICB9W11cbiAgICApIHtcbiAgICAgICAgaWYgKCFvcHRpb25zKSByZXR1cm4gdmFsdWU7XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHQpID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uLmxhYmVsIDogdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQm9vbGVhblZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldEZpZWxkVmFsdWUob2JqLCBwYXRoKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCb29sZWFuTGFiZWwob2JqOiBhbnksIHBhdGg6IHN0cmluZywgb3B0aW9uc0xhYmVsOiBCb29sZWFuT3B0aW9uc0xhYmVsKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlKG9iaiwgcGF0aCk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkgcmV0dXJuIG9wdGlvbnNMYWJlbC50cnVlO1xuICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHJldHVybiBvcHRpb25zTGFiZWwuZmFsc2U7XG4gICAgICAgIGVsc2UgcmV0dXJuIHRoaXMuZW1wdHlGaWVsZExhYmVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc051bWJlcihvYmo6IGFueSwgcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiAhbmV3IEJpZ051bWJlcih0aGlzLmdldEZpZWxkVmFsdWUob2JqLCBwYXRoKSkuaXNOYU4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0SG90a2V5cygpIHtcbiAgICAgICAgY29uc3QgY2xlYXJIb3RrZXkgPSB0aGlzLm5ld0hvdGtleShcImFsdCtzaGlmdCtsXCIsIHRoaXMuY2xlYXIuYmluZCh0aGlzKSk7XG4gICAgICAgIGNvbnN0IGZpbmRIb3RrZXkgPSB0aGlzLm5ld0hvdGtleShcImFsdCtzaGlmdCtmXCIsIHRoaXMuc2VhcmNoLmJpbmQodGhpcykpO1xuICAgICAgICBjb25zdCBoaWRlSG90a2V5ID0gdGhpcy5uZXdIb3RrZXkoXCJhbHQrc2hpZnQrY1wiLCB0aGlzLmhpZGVEaWFsb2cuYmluZCh0aGlzKSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdEhvdGtleSA9IHRoaXMubmV3SG90a2V5KFwiYWx0K3NoaWZ0K3NcIiwgdGhpcy5zZWxlY3QuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgY29uc3QgYmluZGVkSG90a2V5cyA9IFtjbGVhckhvdGtleSwgZmluZEhvdGtleSwgaGlkZUhvdGtleSwgc2VsZWN0SG90a2V5XTtcbiAgICAgICAgYmluZGVkSG90a2V5cy5mb3JFYWNoKChob3RrZXk6IEhvdGtleSkgPT4gdGhpcy5ob3RrZXlzU2VydmljZS5hZGQoaG90a2V5KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBuZXdIb3RrZXkoY29tYm86IHN0cmluZywgZm46IEZ1bmN0aW9uKTogSG90a2V5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBIb3RrZXkoY29tYm8sICgpID0+IHtcbiAgICAgICAgICAgIGZuKCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sIFtcIklOUFVUXCIsIFwiU0VMRUNUXCIsIFwiVEVYVEFSRUFcIl0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJUb2dnbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmFuaW1hdGluZykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSAhdGhpcy5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVG9nZ2xlRG9uZSgpIHtcbiAgICAgICAgdGhpcy5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgdGhlIHRhYmxlIGNvbHVtbiBzaXplLiBUaGUgbWluaW11bSB2YWx1ZSBpcyAxNC4yODZlbSwgd2hpY2ggaXMgZXF1YWxzIHRvIDIwMHB4IGR1byB0byB0aGUgY3VycmVudCBmb250IHNpemUuXG4gICAgICogQHBhcmFtIGxhYmVsIENvbHVtbiBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2xXaWR0aChsYWJlbDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBsYWJlbC5sZW5ndGg7XG4gICAgICAgIGlmIChzaXplIDwgMTQuMjg2KSByZXR1cm4gYDE0LjI4NmVtYDtcbiAgICAgICAgcmV0dXJuIGAke3NpemV9ZW1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTY2FsZShzY2FsZTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGdW5jdGlvbihzY2FsZSkgPyBzY2FsZSgpIDogc2NhbGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Z1bmN0aW9uKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldEludGVnZXJNYXNrQ29uZmlnKGNvbDogQmlnbnVtYmVyRmllbGRDb25maWcpOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjYWxlOiAwLFxuICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiBjb2wubnVtYmVyTG9jYWxlT3B0aW9ucz8udGhvdXNhbmRzU2VwYXJhdG9yLFxuICAgICAgICAgICAgcHJlZml4OiBcIlwiLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREb3VibGVNYXNrQ29uZmlnKGNvbDogQmlnbnVtYmVyRmllbGRDb25maWcpOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjYWxlOiB0aGlzLmdldFNjYWxlKGNvbC5zY2FsZSksXG4gICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiBjb2wubnVtYmVyTG9jYWxlT3B0aW9ucz8uZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIHByZWZpeDogXCJcIixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TW9uZXlNYXNrQ29uZmlnKGNvbDogQmlnbnVtYmVyRmllbGRDb25maWcpOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjYWxlOiB0aGlzLmdldFNjYWxlKGNvbC5zY2FsZSksXG4gICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiBjb2wubnVtYmVyTG9jYWxlT3B0aW9ucz8uZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIHByZWZpeDogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LmN1cnJlbmN5U3ltYm9sLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROdW1iZXJNYXNrQ29uZmlnKGNvbDogQmlnbnVtYmVyRmllbGRDb25maWcpOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjYWxlOiB0aGlzLmdldFNjYWxlKGNvbC5zY2FsZSksXG4gICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiBjb2wubnVtYmVyTG9jYWxlT3B0aW9ucz8uZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIHByZWZpeDogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LmN1cnJlbmN5U3ltYm9sLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRhYmxlUm93RG91YmxlQ2xpY2socm93RGF0YTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBbcm93RGF0YV07XG4gICAgICAgIHRoaXMuc2VsZWN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0Rm9jdXNGaWx0ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1Zpc2libGUgJiYgIXRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZGlhbG9nPy5jb250ZW50Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50Py5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlucHV0XCIpWzBdO1xuXG4gICAgICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICAoaW5wdXQgYXMgSFRNTElucHV0RWxlbWVudCkuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3N1YnNjcmliZUV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblNlYXJjaFJlcXVlc3QucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+ICh0aGlzLmxvYWRpbmcgPSB0cnVlKSk7XG5cbiAgICAgICAgdGhpcy5vblNlbGVjdC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKSk7XG5cbiAgICAgICAgdGhpcy5vblVuc2VsZWN0LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpKTtcblxuICAgICAgICB0aGlzLm9uQ2xlYXIucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vbkZvY3VzLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uQmx1ci5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlICYmIHRoaXMudmFsdWVbdGhpcy5sb29rdXBEaXNwbGF5RmllbGRdO1xuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gdGFyZ2V0O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSB8fCAhY3VycmVudFZhbHVlIHx8IGN1cnJlbnRWYWx1ZSA9PSB2YWx1ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IFwiXCI7XG4gICAgICAgICAgICB0YXJnZXQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
598
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2xvb2t1cC9sb29rdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RyxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsVUFBVSxFQUNWLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUVyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVsQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUs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QyxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0o7UUFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtRQUNyQyxVQUFVLEVBQUU7WUFDUixPQUFPLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ3ZCLEtBQUssQ0FDRCxRQUFRLEVBQ1IsS0FBSyxDQUFDO29CQUNGLEtBQUssRUFBRSxNQUFNO29CQUNiLE9BQU8sRUFBRSxDQUFDO2lCQUNiLENBQUMsQ0FDTDtnQkFDRCxLQUFLLENBQ0QsU0FBUyxFQUNULEtBQUssQ0FBQztvQkFDRixLQUFLLEVBQUUsR0FBRztpQkFDYixDQUFDLENBQ0w7Z0JBQ0QsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0gsQ0FBQztZQUNGLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRTtnQkFDNUIsS0FBSyxDQUNELFFBQVEsRUFDUixLQUFLLENBQUM7b0JBQ0YsT0FBTyxFQUFFLENBQUM7aUJBQ2IsQ0FBQyxDQUNMO2dCQUNELEtBQUssQ0FDRCxRQUFRLEVBQ1IsS0FBSyxDQUFDO29CQUNGLE9BQU8sRUFBRSxDQUFDO2lCQUNiLENBQUMsQ0FDTDtnQkFDRCxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2FBQ3pELENBQUM7U0FDTDs7S0FDSixDQUFDO0dBQ1csZUFBZSxDQW9vQjNCO1NBcG9CWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgYW5pbWF0ZUNoaWxkLCBncm91cCwgcXVlcnksIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdGFibGUsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgTWFza0NvbmZpZyB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvbmcyLWN1cnJlbmN5LW1hc2tcIjtcbmltcG9ydCB7IEhvdGtleSwgSG90a2V5c1NlcnZpY2UgfSBmcm9tIFwiYW5ndWxhcjItaG90a2V5c1wiO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tIFwiYmlnbnVtYmVyLmpzXCI7XG5pbXBvcnQgeyBTb3J0TWV0YSB9IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlIH0gZnJvbSBcInByaW1lbmcvYXV0b2NvbXBsZXRlXCI7XG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tIFwicHJpbWVuZy9kaWFsb2dcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gXCIuLi8uLlwiO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vYmFkZ2UvYmFkZ2UuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDYWxlbmRhckxvY2FsZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vbG9jYWxlL29wdGlvbnMvY2FsZW5kYXJcIjtcbmltcG9ydCB7IEJpZ251bWJlckZpZWxkQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvbmZpZ3VyYXRpb25zL2ZpZWxkcy9iaWdudW1iZXItZmllbGRcIjtcbmltcG9ydCB7IEJvb2xlYW5PcHRpb25zTGFiZWwgfSBmcm9tIFwiLi4vLi4vY29uZmlndXJhdGlvbnMvZmllbGRzL2Jvb2xlYW4tZmllbGRcIjtcbmltcG9ydCB7IEZvcm1GaWVsZCB9IGZyb20gXCIuLi8uLi9jb25maWd1cmF0aW9ucy9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBEZWZhdWx0RmlsdGVyIH0gZnJvbSBcIi4vbW9kZWxzL2RlZmF1bHQtZmlsdGVyXCI7XG5cbkBJbmplY3RhYmxlKClcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtbG9va3VwXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9sb29rdXAuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vbG9va3VwLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExvb2t1cENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKFwiY29sbGFwc2VDb250ZW50XCIsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgIFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMHB4XCIsXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICBcInZpc2libGVcIixcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIipcIixcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oXCJ2aXNpYmxlIDw9PiBoaWRkZW5cIiwgW2dyb3VwKFtxdWVyeShcIkBjaGlsZENvbGxhcHNlQ29udGVudFwiLCBhbmltYXRlQ2hpbGQoKSksIGFuaW1hdGUoXCJ7e3RyYW5zaXRpb25QYXJhbXN9fVwiKV0pXSksXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKFwiY2hpbGRDb2xsYXBzZUNvbnRlbnRcIiwgW1xuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgXCI6bGVhdmVcIixcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICBcIjplbnRlclwiLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oXCIqIDw9PiAqXCIsIGFuaW1hdGUoXCJ7e3RyYW5zaXRpb25QYXJhbXN9fVwiKSksXG4gICAgICAgIF0pLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIExvb2t1cENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYHMtbG9va3VwLSR7TG9va3VwQ29tcG9uZW50Lm5leHRJZCsrfWA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVGb3JjZVNlbGVjdGlvbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRhdGFLZXk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dTZWFyY2ggPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwU3VnZ2VzdGlvbnM6IGFueVtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwRGlzcGxheUZpZWxkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb29rdXBEaXNwbGF5RmllbGRUb29sdGlwOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwRW1wdHlNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9sb29rdXBBcHBlbmRUbyA9IFwiYm9keVwiO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBsb29rdXBBcHBlbmRUbygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cEFwcGVuZFRvO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGxvb2t1cEFwcGVuZFRvKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fbG9va3VwQXBwZW5kVG8gPSB2YWx1ZSA/PyAnYm9keSc7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoRW1wdHlEZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoR3JpZERhdGE6IGFueVtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoVG90YWxSZWNvcmRzOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hGaWVsZHM6IEZvcm1GaWVsZFtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hHcmlkRmllbGRzOiBGb3JtRmllbGRbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpU29ydE1ldGE6IFNvcnRNZXRhW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc29ydGFibGVDb2x1bW5zRGlzYWJsZWQ6IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwUm93UHJvcHM6IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGVmYXVsdEZpbHRlcjogRGVmYXVsdEZpbHRlcltdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0FkZE9wdGlvbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0VkaXRPcHRpb24gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dSZW1vdmVPcHRpb24gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpYWxvZ0Z1bGxzY3JlZW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkxvb2t1cFJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25TZWFyY2hSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uRm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uS2V5VXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25VbnNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvbkNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQWRkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uRWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvblJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bltdPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQ2xlYXJCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoVGFibGUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyB0YWJsZTogVGFibGU7XG5cbiAgICBAVmlld0NoaWxkKERpYWxvZywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIGRpYWxvZzogRGlhbG9nO1xuXG4gICAgQFZpZXdDaGlsZChBdXRvQ29tcGxldGUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBhdXRvY29tcGxldGU6IEF1dG9Db21wbGV0ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaFRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBMb29rdXAgY2FuIGRvIHRoaXMgZm9yIHlvdS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hFbXB0eVRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBMb29rdXAgY2FuIGRvIHRoaXMgZm9yIHlvdS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hUb3RhbFJlY29yZHNMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgTG9va3VwIGNhbiBkbyB0aGlzIGZvciB5b3UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsdGVyVGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIExvb2t1cCBjYW4gZG8gdGhpcyBmb3IgeW91LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbHRlckxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBMb29rdXAgY2FuIGRvIHRoaXMgZm9yIHlvdS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjbGVhckxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBMb29rdXAgY2FuIGRvIHRoaXMgZm9yIHlvdS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgTG9va3VwIGNhbiBkbyB0aGlzIGZvciB5b3UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VsZWN0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIExvb2t1cCBjYW4gZG8gdGhpcyBmb3IgeW91LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVtcHR5RmllbGRMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgTG9va3VwIGNhbiBkbyB0aGlzIGZvciB5b3UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVjb3JkTGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIExvb2t1cCBjYW4gZG8gdGhpcyBmb3IgeW91LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlY29yZHNMYWJlbDogc3RyaW5nO1xuXG4gICAgcHVibGljIHZhbHVlOiBhbnk7XG4gICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgcHVibGljIGFuaW1hdGluZzogYm9vbGVhbjtcbiAgICBwdWJsaWMgZGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBjb2xsYXBzZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IGFueVtdID0gW107XG4gICAgcHVibGljIGZvcm1Hcm91cERpYWxvZzogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyB0cmFuc2l0aW9uT3B0aW9ucyA9IFwiNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpXCI7XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIG9uVG91Y2hlZDogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBvcmlnaW5hbEZvcm1WYWx1ZXMgPSB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaG90a2V5c1NlcnZpY2U6IEhvdGtleXNTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaEdyaWRGaWVsZHMpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoR3JpZEZpZWxkcyA9IHRoaXMuc2VhcmNoRmllbGRzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0udmlzaWJsZSB8fCBpdGVtLnZpc2libGU/LigpKVxuICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IG5ldyBGb3JtRmllbGQoeyAuLi5pdGVtIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoRmllbGRzID0gdGhpcy5zZWFyY2hGaWVsZHMubWFwKFxuICAgICAgICAgICAgKHZhbHVlOiBGb3JtRmllbGQpID0+XG4gICAgICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiB7IHNtOiAxMiwgbWQ6IDEyLCBsZzogMTIsIHhsOiAxMiB9LFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zZWFyY2hHcmlkRmllbGRzID0gdGhpcy5zZWFyY2hHcmlkRmllbGRzXG4gICAgICAgICAgICAuZmlsdGVyKChncmlkRmllbGQ6IEZvcm1GaWVsZCkgPT4gIWdyaWRGaWVsZC52aXNpYmxlIHx8IGdyaWRGaWVsZC52aXNpYmxlPy4oKSlcbiAgICAgICAgICAgIC5tYXAoKGdyaWRGaWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3JpZEZpZWxkW1wid2lkdGhcIl0gPSB0aGlzLmdldENvbFdpZHRoKGdyaWRGaWVsZC5sYWJlbCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjYWxlbmRhck9wdGlvbnMgPSBuZXcgQ2FsZW5kYXJMb2NhbGVPcHRpb25zKHsgLi4uZ3JpZEZpZWxkLmNhbGVuZGFyTG9jYWxlT3B0aW9ucyB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChjYWxlbmRhck9wdGlvbnM/LmRhdGVGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChncmlkRmllbGQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhck9wdGlvbnMuZGF0ZUZvcm1hdCA9IHRoaXMuX2NvbnZlcnRUb01vbWVudERhdGVGb3JtYXQoY2FsZW5kYXJPcHRpb25zLmRhdGVGb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuVGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhck9wdGlvbnMuZGF0ZUZvcm1hdCA9IHRoaXMuX2NvbnZlcnRUb01vbWVudEhvdXJGb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyT3B0aW9ucy5ob3VyRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhck9wdGlvbnMuZGF0ZUZvcm1hdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZ3JpZEZpZWxkLmNhbGVuZGFyTG9jYWxlT3B0aW9ucyA9IGNhbGVuZGFyT3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZ3JpZEZpZWxkO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5zZWFyY2hGaWVsZHMucmVkdWNlKChyZXN1bHQ6IGFueSwgZmllbGQpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IG5ldyBGb3JtQ29udHJvbChmaWVsZC5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbEZvcm1WYWx1ZXNbZmllbGQubmFtZV0gPSBmaWVsZC5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXBEaWFsb2cgPSBuZXcgRm9ybUdyb3VwKGZvcm1Hcm91cCk7XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlRXZlbnRzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50UmVjb3JkVG90YWxpemVyKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRvdGFsUmVjb3Jkc0xhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hUb3RhbFJlY29yZHNMYWJlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlY29yZExhYmVsID0gdGhpcy5yZWNvcmRMYWJlbFxuICAgICAgICAgICAgPyBgJHt0aGlzLnNlYXJjaFRvdGFsUmVjb3Jkc30gJHt0aGlzLnJlY29yZExhYmVsfWBcbiAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMudG90YWxfcmVjb3JkXCIsIHsgY291bnQ6IHRoaXMuc2VhcmNoVG90YWxSZWNvcmRzIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlY29yZHNMYWJlbCA9IHRoaXMucmVjb3Jkc0xhYmVsXG4gICAgICAgICAgICA/IGAke3RoaXMuc2VhcmNoVG90YWxSZWNvcmRzfSAke3RoaXMucmVjb3Jkc0xhYmVsfWBcbiAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMudG90YWxfcmVjb3Jkc1wiLCB7IGNvdW50OiB0aGlzLnNlYXJjaFRvdGFsUmVjb3JkcyB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hUb3RhbFJlY29yZHMgPT09IDEgPyByZWNvcmRMYWJlbCA6IHJlY29yZHNMYWJlbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb252ZXJ0VG9Nb21lbnRIb3VyRm9ybWF0KGhvdXJGb3JtYXQ6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gXCJkZC9tbS95eVwiKSB7XG4gICAgICAgICAgICAvLyB2YWxvciBwYWRyw6NvIHBhcmEgbyBmb3JtYXQuXG4gICAgICAgICAgICByZXR1cm4gXCJMVFNcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3VyRm9ybWF0ID09PSBcIjEyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxiSFxcYi8sIFwiaFwiKSAvLyBob3VyICgxMiBob3VyIHRpbWUpIChubyBsZWFkaW5nIHplcm8pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcYkhIXFxiLywgXCJoaFwiKTsgLy8gaG91ciAoMTIgaG91ciB0aW1lKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhvdXJGb3JtYXQgPT09IFwiMjRcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGJoXFxiLywgXCJIXCIpIC8vIGhvdXIgKDI0IGhvdXIgdGltZSkgKG5vIGxlYWRpbmcgemVybylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxiaGhcXGIvLCBcIkhIXCIpOyAvLyBob3VyICgyNCBob3VyIHRpbWUpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ybWF0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NvbnZlcnRUb01vbWVudERhdGVGb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAvLyBBIG9yZGVtIGRvcyByZXBsYWNlcyDDqSBpbXBvcnRhbnRlLlxuICAgICAgICByZXR1cm4gZm9ybWF0XG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiZFxcYi8sIFwiRFwiKSAvLyBkYXkgb2YgbW9udGggKG5vIGxlYWRpbmcgemVybylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXGJkZFxcYi8sIFwiRERcIikgLy8gZGF5IG9mIG1vbnRoXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxib1xcYi8sIFwiREREXCIpIC8vIGRheSBvZiB0aGUgeWVhciAobm8gbGVhZGluZyB6ZXJvKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYm9vXFxiLywgXCJEREREXCIpIC8vIGRheSBvZiB0aGUgeWVhclxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYk1cXGIvLCBcIk1NTVwiKSAvLyBtb250aCBuYW1lIHNob3J0XG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiTU1cXGIvLCBcIk1NTU1cIikgLy8gbW9udGggbmFtZSBsb25nXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxibVxcYi8sIFwiTVwiKSAvLyBtb250aCBvZiB5ZWFyIChubyBsZWFkaW5nKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYm1tXFxiLywgXCJNTVwiKSAvLyBtb250aCBvZiB5ZWFyXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxieVxcYi8sIFwiWVlcIikgLy8geWVhciAodHdvIGRpZ2l0cylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXGJ5eVxcYi8sIFwiWVlZWVwiKTsgLy8geWVhciAoZm91ciBkaWdpdHMpXG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGUub25PdmVybGF5QW5pbWF0aW9uRG9uZSA9IChldmVudCkgPT4ge307XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nVmlzaWJsZSAmJiBjaGFuZ2VzLnNlYXJjaEdyaWREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldEZvY3VzRmlsdGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0R3JpZERhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEdyaWREYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMb29rdXBTdWdnZXN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9va3VwU3VnZ2VzdGlvbnM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG1ha2VTZWFyY2hSZXF1ZXN0UGFyYW1zKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgZmlsdGVycyA9IHRoaXMuZm9ybUdyb3VwRGlhbG9nLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4uZXZlbnQsIGZpbHRlckRhdGE6IGZpbHRlcnMgfTtcbiAgICAgICAgY29uc3QgeyBtdWx0aVNvcnRNZXRhIH0gPSBldmVudDtcbiAgICAgICAgdGhpcy5tdWx0aVNvcnRNZXRhID0gbXVsdGlTb3J0TWV0YSB8fCB0aGlzLm11bHRpU29ydE1ldGE7XG5cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbGF6eUxvYWRHcmlkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgLy8gQW8gZGVmaW5pciB1bWEgb3JkZW5hw6fDo28gbmEgdGFiZWxhIGRvIGxvb2t1cCBlc3NlIG3DqXRvZG8gw6kgY2hhbWFkbyAyIHZlemVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmltZWZhY2VzL3ByaW1lbmcvaXNzdWVzLzU0ODBcbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5tYWtlU2VhcmNoUmVxdWVzdFBhcmFtcyhldmVudCk7XG4gICAgICAgIHRoaXMub25TZWFyY2hSZXF1ZXN0Lm5leHQocGFyYW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db21wbGV0ZU1ldGhvZChldmVudDogeyBvcmlnaW5hbEV2ZW50OiBJbnB1dEV2ZW50OyBxdWVyeTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZUZvcmNlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUgPT09IFwiXCIgPyBudWxsIDogdGhpcy52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uTG9va3VwUmVxdWVzdC5uZXh0KGV2ZW50LnF1ZXJ5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEZpbHRlcnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5kZWZhdWx0RmlsdGVyKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5kZWZhdWx0RmlsdGVyXG4gICAgICAgICAgICAuZmlsdGVyKCh7IGZpZWxkIH0pID0+IHRoaXMuZm9ybUdyb3VwRGlhbG9nLmNvbnRhaW5zKGZpZWxkKSAmJiAhdGhpcy5mb3JtR3JvdXBEaWFsb2cuZ2V0KFtmaWVsZF0pLmRpcnR5KVxuICAgICAgICAgICAgLmZvckVhY2goKHsgdmFsdWUsIGZpZWxkIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cERpYWxvZy5nZXQoW2ZpZWxkXSkucGF0Y2hWYWx1ZSh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gdmFsdWUoKSA6IHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93RGlhbG9nKCkge1xuICAgICAgICB0aGlzLnNldERlZmF1bHRGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuc2VhcmNoR3JpZERhdGEgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuaG90a2V5c1NlcnZpY2UucGF1c2UoWy4uLnRoaXMuaG90a2V5c1NlcnZpY2UuaG90a2V5c10pO1xuICAgICAgICB0aGlzLnNldEhvdGtleXMoKTtcblxuICAgICAgICBsZXQgc2VsZWN0ZWQ6IGFueSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkLmNvbmNhdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IFt0aGlzLnZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZURpYWxvZygpIHtcbiAgICAgICAgY29uc3QgeyBpbnB1dEVMLCBtdWx0aUlucHV0RUwgfSA9IHRoaXMuYXV0b2NvbXBsZXRlO1xuICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ob3RrZXlzU2VydmljZS51bnBhdXNlKFsuLi50aGlzLmhvdGtleXNTZXJ2aWNlLnBhdXNlZEhvdGtleXNdKTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgbXVsdGlJbnB1dEVMLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlucHV0RUwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICB0aGlzLmZvcm1Hcm91cERpYWxvZy5yZXNldCh0aGlzLm9yaWdpbmFsRm9ybVZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5yZXNldFRhYmxlKCk7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kaWFsb2cubW92ZU9uVG9wKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cERpYWxvZy5yZXNldCh0aGlzLm9yaWdpbmFsRm9ybVZhbHVlcyk7XG4gICAgICAgIHRoaXMucmVzZXRUYWJsZSgpO1xuICAgICAgICB0aGlzLm9uQ2xlYXJCdXR0b25DbGljay5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc2V0VGFibGUoKSB7XG4gICAgICAgIHRoaXMudGFibGUucmVzZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0KCkge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWQubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkICYmICh0aGlzLm11bHRpcGxlID8gdGhpcy5zZWxlY3RlZCA6IHRoaXMuc2VsZWN0ZWRbMF0pO1xuICAgICAgICB0aGlzLnZhbHVlID0gc2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMub25TZWxlY3QubmV4dChzZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuaGlkZURpYWxvZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZDogYW55KSB7XG4gICAgICAgIGlmICghc2VsZWN0ZWQpIHJldHVybjtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgIGVsc2UgdGhpcy5zZWxlY3RlZCA9IFtzZWxlY3RlZF07XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpZWxkVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gcGF0aC5zcGxpdChcIi5cIikucmVkdWNlKChyZXN1bHQsIHByb3ApID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCA/IFwiXCIgOiByZXN1bHRbcHJvcF0pLCBvYmopO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCYWRnZUZyb21WYWx1ZShcbiAgICAgICAgdmFsdWU6IHVua25vd24sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgICB2YWx1ZTogdW5rbm93bjtcbiAgICAgICAgICAgIGJhZGdlPzoge1xuICAgICAgICAgICAgICAgIHR5cGU/OiBCYWRnZUNvbXBvbmVudFtcInR5cGVcIl07XG4gICAgICAgICAgICAgICAgY29sb3I/OiBCYWRnZUNvbXBvbmVudFtcImNvbG9yXCJdO1xuICAgICAgICAgICAgICAgIGljb25DbGFzcz86IEJhZGdlQ29tcG9uZW50W1wiaWNvbkNsYXNzXCJdO1xuICAgICAgICAgICAgICAgIGljb25Qb3NpdGlvbj86IEJhZGdlQ29tcG9uZW50W1wiaWNvblBvc2l0aW9uXCJdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVtdXG4gICAgKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zPy5maW5kKChvcHQpID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpPy5iYWRnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TGFiZWxGb3JWYWx1ZShcbiAgICAgICAgdmFsdWU6IHVua25vd24sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgICB2YWx1ZTogdW5rbm93bjtcbiAgICAgICAgICAgIGJhZGdlPzoge1xuICAgICAgICAgICAgICAgIHR5cGU/OiBCYWRnZUNvbXBvbmVudFtcInR5cGVcIl07XG4gICAgICAgICAgICAgICAgY29sb3I/OiBCYWRnZUNvbXBvbmVudFtcImNvbG9yXCJdO1xuICAgICAgICAgICAgICAgIGljb25DbGFzcz86IEJhZGdlQ29tcG9uZW50W1wiaWNvbkNsYXNzXCJdO1xuICAgICAgICAgICAgICAgIGljb25Qb3NpdGlvbj86IEJhZGdlQ29tcG9uZW50W1wiaWNvblBvc2l0aW9uXCJdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVtdXG4gICAgKSB7XG4gICAgICAgIGlmICghb3B0aW9ucykgcmV0dXJuIHZhbHVlO1xuXG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQudmFsdWUgPT09IHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbi5sYWJlbCA6IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0Jvb2xlYW5WYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlKG9iaiwgcGF0aCk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UpIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Qm9vbGVhbkxhYmVsKG9iajogYW55LCBwYXRoOiBzdHJpbmcsIG9wdGlvbnNMYWJlbDogQm9vbGVhbk9wdGlvbnNMYWJlbCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0RmllbGRWYWx1ZShvYmosIHBhdGgpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUpIHJldHVybiBvcHRpb25zTGFiZWwudHJ1ZTtcbiAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IGZhbHNlKSByZXR1cm4gb3B0aW9uc0xhYmVsLmZhbHNlO1xuICAgICAgICBlbHNlIHJldHVybiB0aGlzLmVtcHR5RmllbGRMYWJlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNOdW1iZXIob2JqOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gIW5ldyBCaWdOdW1iZXIodGhpcy5nZXRGaWVsZFZhbHVlKG9iaiwgcGF0aCkpLmlzTmFOKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEhvdGtleXMoKSB7XG4gICAgICAgIGNvbnN0IGNsZWFySG90a2V5ID0gdGhpcy5uZXdIb3RrZXkoXCJhbHQrc2hpZnQrbFwiLCB0aGlzLmNsZWFyLmJpbmQodGhpcykpO1xuICAgICAgICBjb25zdCBmaW5kSG90a2V5ID0gdGhpcy5uZXdIb3RrZXkoXCJhbHQrc2hpZnQrZlwiLCB0aGlzLnNlYXJjaC5iaW5kKHRoaXMpKTtcbiAgICAgICAgY29uc3QgaGlkZUhvdGtleSA9IHRoaXMubmV3SG90a2V5KFwiYWx0K3NoaWZ0K2NcIiwgdGhpcy5oaWRlRGlhbG9nLmJpbmQodGhpcykpO1xuICAgICAgICBjb25zdCBzZWxlY3RIb3RrZXkgPSB0aGlzLm5ld0hvdGtleShcImFsdCtzaGlmdCtzXCIsIHRoaXMuc2VsZWN0LmJpbmQodGhpcykpO1xuXG4gICAgICAgIGNvbnN0IGJpbmRlZEhvdGtleXMgPSBbY2xlYXJIb3RrZXksIGZpbmRIb3RrZXksIGhpZGVIb3RrZXksIHNlbGVjdEhvdGtleV07XG4gICAgICAgIGJpbmRlZEhvdGtleXMuZm9yRWFjaCgoaG90a2V5OiBIb3RrZXkpID0+IHRoaXMuaG90a2V5c1NlcnZpY2UuYWRkKGhvdGtleSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbmV3SG90a2V5KGNvbWJvOiBzdHJpbmcsIGZuOiBGdW5jdGlvbik6IEhvdGtleSB7XG4gICAgICAgIHJldHVybiBuZXcgSG90a2V5KGNvbWJvLCAoKSA9PiB7XG4gICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LCBbXCJJTlBVVFwiLCBcIlNFTEVDVFwiLCBcIlRFWFRBUkVBXCJdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlsdGVyVG9nZ2xlKCkge1xuICAgICAgICBpZiAodGhpcy5hbmltYXRpbmcpIHJldHVybjtcblxuICAgICAgICB0aGlzLmFuaW1hdGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvZ2dsZURvbmUoKSB7XG4gICAgICAgIHRoaXMuYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlIHRoZSB0YWJsZSBjb2x1bW4gc2l6ZS4gVGhlIG1pbmltdW0gdmFsdWUgaXMgMTQuMjg2ZW0sIHdoaWNoIGlzIGVxdWFscyB0byAyMDBweCBkdW8gdG8gdGhlIGN1cnJlbnQgZm9udCBzaXplLlxuICAgICAqIEBwYXJhbSBsYWJlbCBDb2x1bW4gbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29sV2lkdGgobGFiZWw6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzaXplID0gbGFiZWwubGVuZ3RoO1xuICAgICAgICBpZiAoc2l6ZSA8IDE0LjI4NikgcmV0dXJuIGAxNC4yODZlbWA7XG4gICAgICAgIHJldHVybiBgJHtzaXplfWVtYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2NhbGUoc2NhbGU6IGFueSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRnVuY3Rpb24oc2NhbGUpID8gc2NhbGUoKSA6IHNjYWxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGdW5jdGlvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbnRlZ2VyTWFza0NvbmZpZyhjb2w6IEJpZ251bWJlckZpZWxkQ29uZmlnKTogTWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY2FsZTogMCxcbiAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIHByZWZpeDogXCJcIixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RG91YmxlTWFza0NvbmZpZyhjb2w6IEJpZ251bWJlckZpZWxkQ29uZmlnKTogTWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY2FsZTogdGhpcy5nZXRTY2FsZShjb2wuc2NhbGUpLFxuICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IGNvbC5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICBwcmVmaXg6IFwiXCIsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vbmV5TWFza0NvbmZpZyhjb2w6IEJpZ251bWJlckZpZWxkQ29uZmlnKTogTWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY2FsZTogdGhpcy5nZXRTY2FsZShjb2wuc2NhbGUpLFxuICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IGNvbC5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICBwcmVmaXg6IGNvbC5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TnVtYmVyTWFza0NvbmZpZyhjb2w6IEJpZ251bWJlckZpZWxkQ29uZmlnKTogTWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY2FsZTogdGhpcy5nZXRTY2FsZShjb2wuc2NhbGUpLFxuICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IGNvbC5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICBwcmVmaXg6IGNvbC5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25UYWJsZVJvd0RvdWJsZUNsaWNrKHJvd0RhdGE6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gW3Jvd0RhdGFdO1xuICAgICAgICB0aGlzLnNlbGVjdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldEZvY3VzRmlsdGVyKCkge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dWaXNpYmxlICYmICF0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmRpYWxvZz8uY29udGVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudD8uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVswXTtcblxuICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgKGlucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25TZWFyY2hSZXF1ZXN0LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiAodGhpcy5sb2FkaW5nID0gdHJ1ZSkpO1xuXG4gICAgICAgIHRoaXMub25TZWxlY3QucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSkpO1xuXG4gICAgICAgIHRoaXMub25VbnNlbGVjdC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKSk7XG5cbiAgICAgICAgdGhpcy5vbkNsZWFyLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub25Gb2N1cy5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vbkJsdXIucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlW3RoaXMubG9va3VwRGlzcGxheUZpZWxkXTtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRhcmdldDtcblxuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgfHwgIWN1cnJlbnRWYWx1ZSB8fCBjdXJyZW50VmFsdWUgPT0gdmFsdWUpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBcIlwiO1xuICAgICAgICAgICAgdGFyZ2V0LnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -292,9 +292,9 @@ __decorate([
292
292
  FileUploadComponent = FileUploadComponent_1 = __decorate([
293
293
  Component({
294
294
  selector: "s-file-upload",
295
- template: "<div [id]=\"id\" class=\"s-fileupload\">\n <div class=\"s-fileupload-choose\">\n <input\n #inputUpload\n [id]=\"id + 'input-upload'\"\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileSelect($event.dataTransfer ? $event.dataTransfer.files : $event.target.files)\"\n />\n <s-button\n *ngIf=\"permissions.includes(ADD_PERMISSION)\"\n [id]=\"id + 'upload-button'\"\n [label]=\"chooseLabel || 'platform.angular_components.attach_files' | translate\"\n (onClick)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formGroup?.disabled || fileLimit === files?.length\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n\n <section *ngIf=\"files.length\" [id]=\"id + 'fileupload-list'\" class=\"s-fileupload-list\" role=\"grid\">\n <ng-container *ngFor=\"let file of files; let i = index\">\n <div class=\"s-fileupload-list-file\" role=\"row\">\n <div [id]=\"id + '-file-' + i + '-name'\" class=\"s-fileupload-list-file-name\" role=\"gridcell\">\n <div class=\"file-name-size\">\n <ng-container\n *ngTemplateOutlet=\"\n (permissions.includes(READ_PERMISSION) && file.savedFile) || file.progress === 100\n ? descriptionUrl\n : description;\n context: {\n $implicit: file,\n index: i\n }\n \"\n >\n </ng-container>\n \n <span>{{ formatFileSize(file.size) }}</span>\n </div>\n\n <span *ngIf=\"modifiedDate\" class=\"s-fileupload-list-file-name-date\">{{ modifiedDate }}</span>\n </div>\n <div class=\"s-fileupload-list-file-status\" role=\"gridcell\">\n <p-progressBar\n *ngIf=\"file.isUploading && !isSmallDevice\"\n [style]=\"{ width: '250px', 'background-color': '#d8d8d8', 'border-radius': '0px', height: '14px' }\"\n [value]=\"file.progress\"\n [showValue]=\"false\"\n role=\"alert\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\"\n >\n </p-progressBar>\n <span\n *ngIf=\"file.isUploading && isSmallDevice\"\n [id]=\"id + '-file-' + i + '-spin'\"\n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\"\n >\n </span>\n <span\n *ngIf=\"!file.isUploading && !file.error && file.progress === 100\"\n [id]=\"id + '-file-' + i + '-check'\"\n class=\"fas fa-check\"\n role=\"alert\"\n [attr.aria-label]=\"\n ariaLabelSuccess || successTooltip || 'platform.angular_components.file_attached_successfully' | translate\n \"\n [pTooltip]=\"successTooltip || 'platform.angular_components.file_attached_successfully' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n <span\n *ngIf=\"file.error?.message\"\n [id]=\"id + '-file-' + i + '-error'\"\n class=\"fas fa-times\"\n role=\"alert\"\n [pTooltip]=\"file.error?.message\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n </div>\n <div class=\"s-fileupload-list-file-actions\" role=\"gridcell\">\n <a\n *ngIf=\"file.isUploading\"\n [id]=\"id + '-file-' + i + '-cancel'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onCancelUpload(i)\"\n >\n {{ cancelLabel || \"platform.angular_components.cancel\" | translate }}\n </a>\n <a\n *ngIf=\"permissions.includes(REMOVE_PERMISSION) && !file.isUploading && !(disabled || !!formGroup?.disabled)\"\n role=\"button\"\n tabindex=\"0\"\n [id]=\"id + '-file-' + i + '-remove'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onRemoveFile(file)\"\n [attr.aria-label]=\"ariaLabelRemove || removeLabel || 'platform.angular_components.remove' | translate\"\n >\n {{ removeLabel || \"platform.angular_components.remove\" | translate }}\n </a>\n </div>\n </div>\n </ng-container>\n </section>\n</div>\n\n<ng-template #descriptionUrl let-file let-i=\"index\">\n <a [id]=\"id + '-file-' + i + '-name-link'\" tabindex=\"0\" (click)=\"onDowloadFile(i)\" [attr.aria-label]=\"ariaLabelFileName || file.name\"\n >{{ file.name }}\n </a>\n <a style=\"display: none\" [href]=\"file.objectURL\" target=\"_blank\" download #anchor> </a>\n</ng-template>\n\n<ng-template #description let-file>\n <span tabindex=\"0\" [attr.aria-label]=\"ariaLabelFileName || file.name\">\n {{ file.name }}\n </span>\n</ng-template>\n",
295
+ template: "<div [id]=\"id\" class=\"s-fileupload\">\n <div class=\"s-fileupload-choose\">\n <input\n #inputUpload\n [id]=\"id + 'input-upload'\"\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onFileSelect($event.dataTransfer ? $event.dataTransfer.files : $event.target.files)\"\n />\n <s-button\n *ngIf=\"permissions.includes(ADD_PERMISSION)\"\n [id]=\"id + 'upload-button'\"\n [label]=\"chooseLabel || 'platform.angular_components.attach_files' | translate\"\n (onClick)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formGroup?.disabled || fileLimit === files?.length\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n\n <section *ngIf=\"files.length\" [id]=\"id + 'fileupload-list'\" class=\"s-fileupload-list\" role=\"grid\">\n <ng-container *ngFor=\"let file of files; let i = index\">\n <div class=\"s-fileupload-list-file\" role=\"row\">\n <div [id]=\"id + '-file-' + i + '-name'\" class=\"s-fileupload-list-file-name\" role=\"gridcell\">\n <div class=\"file-name-size\">\n <ng-container\n *ngTemplateOutlet=\"\n (permissions.includes(READ_PERMISSION) && file.savedFile) || file.progress === 100\n ? descriptionUrl\n : description;\n context: {\n $implicit: file,\n index: i\n }\n \"\n >\n </ng-container>\n \n <span>{{ formatFileSize(file.size) }}</span>\n </div>\n\n <span *ngIf=\"modifiedDate\" class=\"s-fileupload-list-file-name-date\">{{ modifiedDate }}</span>\n </div>\n <div class=\"s-fileupload-list-file-status\" role=\"gridcell\">\n\n <div *ngIf=\"file.isUploading && !isSmallDevice\" style=\"width: 256px;\">\n <s-progressbar\n [value]=\"file.progress || 0\"\n [showValue]=\"false\"\n activeColor=\"blue\"\n ></s-progressbar>\n </div>\n <span\n *ngIf=\"file.isUploading && isSmallDevice\"\n [id]=\"id + '-file-' + i + '-spin'\"\n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"ariaLabelProgress || 'platform.angular_components.loading_file' | translate\"\n >\n </span>\n <span\n *ngIf=\"!file.isUploading && !file.error && file.progress === 100\"\n [id]=\"id + '-file-' + i + '-check'\"\n class=\"fas fa-check\"\n role=\"alert\"\n [attr.aria-label]=\"\n ariaLabelSuccess || successTooltip || 'platform.angular_components.file_attached_successfully' | translate\n \"\n [pTooltip]=\"successTooltip || 'platform.angular_components.file_attached_successfully' | translate\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n <span\n *ngIf=\"file.error?.message\"\n [id]=\"id + '-file-' + i + '-error'\"\n class=\"fas fa-times\"\n role=\"alert\"\n [pTooltip]=\"file.error?.message\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n </div>\n <div class=\"s-fileupload-list-file-actions\" role=\"gridcell\">\n <a\n *ngIf=\"file.isUploading\"\n [id]=\"id + '-file-' + i + '-cancel'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onCancelUpload(i)\"\n >\n {{ cancelLabel || \"platform.angular_components.cancel\" | translate }}\n </a>\n <a\n *ngIf=\"permissions.includes(REMOVE_PERMISSION) && !file.isUploading && !(disabled || !!formGroup?.disabled)\"\n role=\"button\"\n tabindex=\"0\"\n [id]=\"id + '-file-' + i + '-remove'\"\n class=\"s-fileupload-list-file-actions-action\"\n (click)=\"onRemoveFile(file)\"\n [attr.aria-label]=\"ariaLabelRemove || removeLabel || 'platform.angular_components.remove' | translate\"\n >\n {{ removeLabel || \"platform.angular_components.remove\" | translate }}\n </a>\n </div>\n </div>\n </ng-container>\n </section>\n</div>\n\n<ng-template #descriptionUrl let-file let-i=\"index\">\n <a [id]=\"id + '-file-' + i + '-name-link'\" tabindex=\"0\" (click)=\"onDowloadFile(i)\" [attr.aria-label]=\"ariaLabelFileName || file.name\"\n >{{ file.name }}\n </a>\n <a style=\"display: none\" [href]=\"file.objectURL\" target=\"_blank\" download #anchor> </a>\n</ng-template>\n\n<ng-template #description let-file>\n <span tabindex=\"0\" [attr.aria-label]=\"ariaLabelFileName || file.name\">\n {{ file.name }}\n </span>\n</ng-template>\n",
296
296
  styles: [".s-fileupload .s-fileupload-choose{position:relative;margin:15px 0;width:-webkit-max-content;width:max-content}.s-fileupload input[type=file]{display:none}.s-fileupload-list{border:1px solid #ccc}.s-fileupload-list-file:not(:first-child){border-top:1px solid #ccc}.s-fileupload-list .s-fileupload-list-file{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;padding:15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:center;align-self:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name .file-name-size{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;gap:20px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name .s-fileupload-list-file-name-date{font-size:.75rem;color:#999}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name>a{cursor:pointer;text-decoration:none}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.s-fileupload-list .s-fileupload-list-file .fas.fa-circle-notch{color:#d8d8d8;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-check{color:#0c9348;font-size:12px}.s-fileupload-list .s-fileupload-list-file .fas.fa-times{color:#c13018;font-size:12px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin-top:15px;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;width:100%}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action{text-decoration:none;color:#428bca}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :focus,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action :visited,.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions a.s-fileupload-list-file-actions-action:hover{text-decoration:none}@media (min-width:768px){.s-fileupload-list .s-fileupload-list-file{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-name{width:auto;-ms-flex-positive:2;flex-grow:2}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-status{margin:0 15px}.s-fileupload-list .s-fileupload-list-file .s-fileupload-list-file-actions{margin:0;width:auto}}"]
297
297
  })
298
298
  ], FileUploadComponent);
299
299
  export { FileUploadComponent };
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxRixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFPdkIsSUFBYSxtQkFBbUIsMkJBQWhDLE1BQWEsbUJBQW1CO0lBMkc1QixZQUNxQixTQUF1QixFQUN2QixpQkFBb0MsRUFDcEMsU0FBMkI7UUFGM0IsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBM0d6QyxtQkFBYyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztRQUMzQyxvQkFBZSxHQUFHLHFCQUFxQixDQUFDLElBQUks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Q3VCO0FBRy9CO0lBREMsS0FBSyxFQUFFO3NEQUNzQjtBQUc5QjtJQURDLEtBQUssRUFBRTtxREFDZ0I7QUFHeEI7SUFEQyxLQUFLLEVBQUU7K0RBQ21DO0FBRzNDO0lBREMsS0FBSyxFQUFFO3dEQUNzRDtBQUc5RDtJQURDLEtBQUssRUFBRTtnREFXUDtBQUdEO0lBREMsTUFBTSxFQUFFOzBEQUNxRTtBQUc5RTtJQURDLE1BQU0sRUFBRTt1REFDNEQ7QUFHckU7SUFEQyxNQUFNLEVBQUU7eURBQ3NEO0FBRy9EO0lBREMsTUFBTSxFQUFFO3lEQUNxRjtBQUc5RjtJQURDLE1BQU0sRUFBRTsyREFDNkQ7QUE0QnRFO0lBREMsWUFBWSxDQUFDLGVBQWUsQ0FBQzttREFHN0I7QUFqSVEsbUJBQW1CO0lBTC9CLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxlQUFlO1FBQ3pCLDRxTUFBMkM7O0tBRTlDLENBQUM7R0FDVyxtQkFBbUIsQ0EwUy9CO1NBMVNZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tIFwibW9tZW50XCI7XG5cbmltcG9ydCB7IEJyZWFrcG9pbnRzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBGaWxlVXBsb2FkU2VydmljZSB9IGZyb20gXCIuL2ZpbGUtdXBsb2FkLnNlcnZpY2VcIjtcbmltcG9ydCB7IExpc3RCbG9iTWV0YWRhdGFSZXNwb25zZSB9IGZyb20gXCIuL21vZGVscy9saXN0LWJsb2ItbWV0YWRhdGFcIjtcbmltcG9ydCB7IEZpbGVEdG8gfSBmcm9tIFwiLi9tb2RlbHMvZmlsZS1kdG9cIjtcbmltcG9ydCB7IFVwbG9hZEVycm9yIH0gZnJvbSBcIi4vbW9kZWxzL3VwbG9hZEVycm9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0ZUVycm9ycyB9IGZyb20gXCIuL21vZGVscy92YWxpZGF0ZS1lcnJvcnNcIjtcbmltcG9ydCB7IEZpbGVVcGxvYWRQZXJtaXNzaW9ucywgQUxMX1BFUk1JU1NJT05TIH0gZnJvbSBcIi4vbW9kZWxzL2ZpbGUtdXBsb2FkLXBlcm1pc3Npb25zXCI7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtZmlsZS11cGxvYWRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHB1YmxpYyBzdGF0aWMgbmV4dElkID0gMDtcblxuICAgIHB1YmxpYyBBRERfUEVSTUlTU0lPTiA9IEZpbGVVcGxvYWRQZXJtaXNzaW9ucy5BZGQ7XG4gICAgcHVibGljIFJFQURfUEVSTUlTU0lPTiA9IEZpbGVVcGxvYWRQZXJtaXNzaW9ucy5SZWFkO1xuICAgIHB1YmxpYyBSRU1PVkVfUEVSTUlTU0lPTiA9IEZpbGVVcGxvYWRQZXJtaXNzaW9ucy5SZW1vdmU7XG5cbiAgICBAVmlld0NoaWxkKFwiaW5wdXRVcGxvYWRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFVwbG9hZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoXCJhbmNob3JcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbmNob3I6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBzLWZpbGUtdXBsb2FkLSR7RmlsZVVwbG9hZENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2hvb3NlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlbW92ZUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3VjY2Vzc1Rvb2x0aXA6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWNjZXB0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdXBwb3J0ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsRmlsZU5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heEZpbGVTaXplOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhDb21iaW5lZEZpbGVTaXplOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWxlTGltaXQ6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbFByb2dyZXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxTdWNjZXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxFcnJvcjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsUmVtb3ZlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Db250cm9sO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dGaWxlVXBsb2FkRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGVybWlzc2lvbnM6IEZpbGVVcGxvYWRQZXJtaXNzaW9uc1tdID0gQUxMX1BFUk1JU1NJT05TO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGZpbGVzKGZpbGVzOiBGaWxlRHRvW10pIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0ZpbGVVcGxvYWREYXRlICYmIGZpbGVzWzBdPy5vYmplY3RJZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRVcGxvYWREYXRlKGZpbGVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWxlcyA9IGZpbGVzLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbWFnZShmaWxlKSkge1xuICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHVwbG9hZEhhbmRsZXI6IEV2ZW50RW1pdHRlcjx7IGZpbGVzOiBGaWxlRHRvW10gfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlRmlsZTogRXZlbnRFbWl0dGVyPHsgZmlsZTogRmlsZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxVcGxvYWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRvd25sb2FkRmlsZTogRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlcjsgYW5jaG9yOiBFbGVtZW50UmVmIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRlRXJyb3JzOiBFdmVudEVtaXR0ZXI8VXBsb2FkRXJyb3I+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfZmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwdWJsaWMgaXNTbWFsbERldmljZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgaW5wdXRWYWx1ZSA9IFwiXCI7XG4gICAgcHVibGljIG1vZGlmaWVkRGF0ZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsZVVwbG9hZFNlcnZpY2U6IEZpbGVVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zID0gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zLm1hcCgoZXh0ZW5zaW9uKSA9PiBleHRlbnNpb24ucmVwbGFjZShcIi5cIiwgXCJcIikudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICAgIHB1YmxpYyBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlU2VsZWN0KGZpbGVzOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3RmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGaWxlTGltaXRFeGNlZWRlZChmaWxlcykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfTElNSVQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRmlsZUNvbWJpbmVkU2l6ZUV4Y2VlZGVkKGZpbGVzKSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9ycy5lbWl0KHtcbiAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0NPTUJJTkVEX0ZJTEVfU0laRSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jbGVhckZpbGVJbnB1dCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Vuc3VwcG9ydGVkRmlsZUV4dGVuc2lvbihmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRlRXJyb3JzLlVOU1VQUE9SVEVEX0VYVEVOU0lPTixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNGaWxlU2l6ZUV4Y2VlZGVkKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9ycy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXM6IFtmaWxlXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfU0laRSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbmV3RmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmNvbmNhdChuZXdGaWxlcyk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEhhbmRsZXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXM6IG5ld0ZpbGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFyRmlsZUlucHV0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVtb3ZlRmlsZShmaWxlOiBGaWxlRHRvKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGVJbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGVzID0gdGhpcy5maWxlcy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcblxuICAgICAgICBpZiAocmVtb3ZlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlLmVtaXQoeyBmaWxlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2FuY2VsVXBsb2FkKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGVzID0gdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFVwbG9hZC5lbWl0KGluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Eb3dsb2FkRmlsZShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlLmVtaXQoe1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBhbmNob3I6IHRoaXMuYW5jaG9yLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVzKCk6IEZpbGVEdG9bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0RmlsZVNpemUoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIjAgQnl0ZXNcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrID0gMTAyNDtcbiAgICAgICAgY29uc3Qgc2l6ZXMgPSBbXCJieXRlc1wiLCBcIktCXCIsIFwiTUJcIiwgXCJHQlwiLCBcIlRCXCJdO1xuICAgICAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhzaXplKSAvIE1hdGgubG9nKGspKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoKHNpemUgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgyKSkgKyBcIiBcIiArIHNpemVzW2ldO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlKCkge1xuICAgICAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB0aGlzLmlzU21hbGxEZXZpY2UgPSB3aW5kb3dXaWR0aCA8PSBCcmVha3BvaW50cy5TTV9NQVg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ltYWdlKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eaW1hZ2VcXC8vLnRlc3QoZmlsZS50eXBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZUxpbWl0RXhjZWVkZWQoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZUxpbWl0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZXMubGVuZ3RoICsgZmlsZXMubGVuZ3RoID4gdGhpcy5maWxlTGltaXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpbGVDb21iaW5lZFNpemVFeGNlZWRlZChmaWxlczogRmlsZVtdKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tYXhDb21iaW5lZEZpbGVTaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlc0xpc3QgPSBbLi4uZmlsZXMsIC4uLnRoaXMuZmlsZXNdO1xuXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkU2l6ZSA9IGZpbGVzTGlzdC5yZWR1Y2UoKGNvbWJpbmVkU2l6ZSwgZmlsZSkgPT4gY29tYmluZWRTaXplICsgZmlsZS5zaXplLCAwKTtcblxuICAgICAgICByZXR1cm4gY29tYmluZWRTaXplID4gdGhpcy5tYXhDb21iaW5lZEZpbGVTaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlU2l6ZUV4Y2VlZGVkKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm1heEZpbGVTaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGUuc2l6ZSA+IHRoaXMubWF4RmlsZVNpemU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Vuc3VwcG9ydGVkRmlsZUV4dGVuc2lvbihmaWxlOiBGaWxlKSB7XG4gICAgICAgIGlmICh0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5uYW1lLnNwbGl0KFwiLlwiKS5wb3AoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnMuaW5jbHVkZXMoZXh0ZW5zaW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckZpbGVJbnB1dCgpIHtcbiAgICAgICAgdGhpcy5pbnB1dFVwbG9hZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFVwbG9hZERhdGUoYmxvYkZpbGU6IEZpbGVEdG9bXSk6IHZvaWQge1xuICAgICAgICBpZiAoIWJsb2JGaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0TWV0YWRhdGFDdXN0b21GaWVsZCh7IG9iamVjdElkOiBibG9iRmlsZVswXS5vYmplY3RJZCB9KVxuICAgICAgICAgICAgLnRoZW4oKG1ldGFkYXRhKSA9PiB0aGlzLnNldE1vZGlmaWVkRGF0ZShtZXRhZGF0YSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TW9kaWZpZWREYXRlKG1ldGFkYXRhOiBMaXN0QmxvYk1ldGFkYXRhUmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaG91ciA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiSEhcIik7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIm1tXCIpO1xuICAgICAgICBjb25zdCBkYXkgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIkREXCIpO1xuICAgICAgICBjb25zdCBtb250aCA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiTU1cIik7XG4gICAgICAgIGNvbnN0IGZ1bGxZZWFyID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5mb3JtYXQoXCJZWVlZXCIpO1xuXG4gICAgICAgIHRoaXMubW9kaWZpZWREYXRlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5kYXRlX21vZGlmaWVkX2N1c3RvbV9ibG9iXCIsIHtcbiAgICAgICAgICAgIGhvdXIsXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICBmdWxsWWVhcixcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxRixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFPdkIsSUFBYSxtQkFBbUIsMkJBQWhDLE1BQWEsbUJBQW1CO0lBMkc1QixZQUNxQixTQUF1QixFQUN2QixpQkFBb0MsRUFDcEMsU0FBMkI7UUFGM0IsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBM0d6QyxtQkFBYyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztRQUMzQyxvQkFBZSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQztRQUM3QyxzQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFTakQsT0FBRSxHQUFHLGlCQUFpQixxQkFBbUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBcUJyRCx3QkFBbUIsR0FBYSxFQUFFLENBQUM7UUE4Qm5DLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBR3BDLGdCQUFXLEdBQTRCLGVBQWUsQ0FBQztRQWdCdkQsa0JBQWEsR0FBdUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd2RSxlQUFVLEdBQWlDLElBQUksWUFBWSxFQUFFLENBQUM7UUFHOUQsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd4RCxpQkFBWSxHQUF3RCxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZGLG1CQUFjLEdBQThCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFOUQsV0FBTSxHQUFjLEVBQUUsQ0FBQztRQUNkLGlCQUFZLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFdEQsZUFBVSxHQUFHLEVBQUUsQ0FBQztJQU9wQixDQUFDO0lBckNKLElBQVcsS0FBSyxDQUFDLEtBQWdCOztRQUM3QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsV0FBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLDBDQUFFLFFBQVEsQ0FBQSxFQUFFO1lBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQzVGO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBNkJNLFFBQVE7UUFDWCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBR00sUUFBUTtRQUNYLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQWdCO1FBQ2hDLE1BQU0sUUFBUSxHQUFjLEVBQUUsQ0FBQztRQUUvQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUNuQjtRQUVELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUNyQixLQUFLO2dCQUNMLFVBQVUsRUFBRSxjQUFjLENBQUMsY0FBYzthQUM1QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEtBQUssRUFBRSxLQUFLO2dCQUNaLFVBQVUsRUFBRSxjQUFjLENBQUMsc0JBQXNCO2FBQ3BELENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixPQUFPO1NBQ1Y7UUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN0QixJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQztvQkFDYixVQUFVLEVBQUUsY0FBYyxDQUFDLHFCQUFxQjtpQkFDbkQsQ0FBQyxDQUFDO2dCQUNILFNBQVM7YUFDWjtZQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztvQkFDckIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDO29CQUNiLFVBQVUsRUFBRSxjQUFjLENBQUMsYUFBYTtpQkFDM0MsQ0FBQyxDQUFDO2dCQUNILFNBQVM7YUFDWjtZQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7UUFFRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDcEIsS0FBSyxFQUFFLFFBQVE7YUFDbEIsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFhO1FBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVyRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFhO1FBQy9CLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVqRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakM7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ25CLEtBQUs7WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDdEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVk7UUFDOUIsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ1osT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDZixNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sVUFBVSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sTUFBTTtRQUNWLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMzRCxDQUFDO0lBRU8sT0FBTyxDQUFDLElBQVU7UUFDdEIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsS0FBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsS0FBYTtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU1QyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFM0YsT0FBTyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ25ELENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFVO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUVPLDBCQUEwQixDQUFDLElBQVU7O1FBQ3pDLFVBQUksSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxNQUFNLEVBQUU7WUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0QsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUFFTyxhQUFhLENBQUMsUUFBbUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxpQkFBaUI7YUFDakIsc0JBQXNCLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQzFELElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTyxlQUFlLENBQUMsUUFBa0M7UUFDdEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx1REFBdUQsRUFBRTtZQUNoRyxJQUFJO1lBQ0osT0FBTztZQUNQLEdBQUc7WUFDSCxLQUFLO1lBQ0wsUUFBUTtTQUNYLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSixDQUFBO0FBelNpQiwwQkFBTSxHQUFHLENBQUMsQ0FBQzs7WUEyR08sWUFBWTtZQUNKLGlCQUFpQjtZQUN6QixnQkFBZ0I7O0FBdEdoRDtJQURDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7d0RBQ0g7QUFHekM7SUFEQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO21EQUNIO0FBR3BDO0lBREMsS0FBSyxFQUFFOytDQUNvRDtBQUc1RDtJQURDLEtBQUssRUFBRTt3REFDbUI7QUFHM0I7SUFEQyxLQUFLLEVBQUU7d0RBQ21CO0FBRzNCO0lBREMsS0FBSyxFQUFFO3dEQUNtQjtBQUczQjtJQURDLEtBQUssRUFBRTsyREFDc0I7QUFHOUI7SUFEQyxLQUFLLEVBQUU7cURBQ2lCO0FBR3pCO0lBREMsS0FBSyxFQUFFO21EQUNjO0FBR3RCO0lBREMsS0FBSyxFQUFFO2dFQUNrQztBQUcxQztJQURDLEtBQUssRUFBRTs4REFDeUI7QUFHakM7SUFEQyxLQUFLLEVBQUU7d0RBQ21CO0FBRzNCO0lBREMsS0FBSyxFQUFFO2dFQUMyQjtBQUduQztJQURDLEtBQUssRUFBRTtzREFDaUI7QUFHekI7SUFEQyxLQUFLLEVBQUU7OERBQ3lCO0FBR2pDO0lBREMsS0FBSyxFQUFFOzZEQUN3QjtBQUdoQztJQURDLEtBQUssRUFBRTsyREFDc0I7QUFHOUI7SUFEQyxLQUFLLEVBQUU7NERBQ3VCO0FBRy9CO0lBREMsS0FBSyxFQUFFO3NEQUNzQjtBQUc5QjtJQURDLEtBQUssRUFBRTtxREFDZ0I7QUFHeEI7SUFEQyxLQUFLLEVBQUU7K0RBQ21DO0FBRzNDO0lBREMsS0FBSyxFQUFFO3dEQUNzRDtBQUc5RDtJQURDLEtBQUssRUFBRTtnREFXUDtBQUdEO0lBREMsTUFBTSxFQUFFOzBEQUNxRTtBQUc5RTtJQURDLE1BQU0sRUFBRTt1REFDNEQ7QUFHckU7SUFEQyxNQUFNLEVBQUU7eURBQ3NEO0FBRy9EO0lBREMsTUFBTSxFQUFFO3lEQUNxRjtBQUc5RjtJQURDLE1BQU0sRUFBRTsyREFDNkQ7QUE0QnRFO0lBREMsWUFBWSxDQUFDLGVBQWUsQ0FBQzttREFHN0I7QUFqSVEsbUJBQW1CO0lBTC9CLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxlQUFlO1FBQ3pCLG1pTUFBMkM7O0tBRTlDLENBQUM7R0FDVyxtQkFBbUIsQ0EwUy9CO1NBMVNZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tIFwibW9tZW50XCI7XG5cbmltcG9ydCB7IEJyZWFrcG9pbnRzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBGaWxlVXBsb2FkU2VydmljZSB9IGZyb20gXCIuL2ZpbGUtdXBsb2FkLnNlcnZpY2VcIjtcbmltcG9ydCB7IExpc3RCbG9iTWV0YWRhdGFSZXNwb25zZSB9IGZyb20gXCIuL21vZGVscy9saXN0LWJsb2ItbWV0YWRhdGFcIjtcbmltcG9ydCB7IEZpbGVEdG8gfSBmcm9tIFwiLi9tb2RlbHMvZmlsZS1kdG9cIjtcbmltcG9ydCB7IFVwbG9hZEVycm9yIH0gZnJvbSBcIi4vbW9kZWxzL3VwbG9hZEVycm9yXCI7XG5pbXBvcnQgeyBWYWxpZGF0ZUVycm9ycyB9IGZyb20gXCIuL21vZGVscy92YWxpZGF0ZS1lcnJvcnNcIjtcbmltcG9ydCB7IEZpbGVVcGxvYWRQZXJtaXNzaW9ucywgQUxMX1BFUk1JU1NJT05TIH0gZnJvbSBcIi4vbW9kZWxzL2ZpbGUtdXBsb2FkLXBlcm1pc3Npb25zXCI7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtZmlsZS11cGxvYWRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHB1YmxpYyBzdGF0aWMgbmV4dElkID0gMDtcblxuICAgIHB1YmxpYyBBRERfUEVSTUlTU0lPTiA9IEZpbGVVcGxvYWRQZXJtaXNzaW9ucy5BZGQ7XG4gICAgcHVibGljIFJFQURfUEVSTUlTU0lPTiA9IEZpbGVVcGxvYWRQZXJtaXNzaW9ucy5SZWFkO1xuICAgIHB1YmxpYyBSRU1PVkVfUEVSTUlTU0lPTiA9IEZpbGVVcGxvYWRQZXJtaXNzaW9ucy5SZW1vdmU7XG5cbiAgICBAVmlld0NoaWxkKFwiaW5wdXRVcGxvYWRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFVwbG9hZDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoXCJhbmNob3JcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbmNob3I6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBzLWZpbGUtdXBsb2FkLSR7RmlsZVVwbG9hZENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2hvb3NlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlbW92ZUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3VjY2Vzc1Rvb2x0aXA6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWNjZXB0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdXBwb3J0ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsRmlsZU5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heEZpbGVTaXplOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhDb21iaW5lZEZpbGVTaXplOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWxlTGltaXQ6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFyaWFMYWJlbFByb2dyZXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxTdWNjZXNzOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxFcnJvcjogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsUmVtb3ZlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Db250cm9sO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dGaWxlVXBsb2FkRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGVybWlzc2lvbnM6IEZpbGVVcGxvYWRQZXJtaXNzaW9uc1tdID0gQUxMX1BFUk1JU1NJT05TO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGZpbGVzKGZpbGVzOiBGaWxlRHRvW10pIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0ZpbGVVcGxvYWREYXRlICYmIGZpbGVzWzBdPy5vYmplY3RJZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRVcGxvYWREYXRlKGZpbGVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWxlcyA9IGZpbGVzLm1hcCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbWFnZShmaWxlKSkge1xuICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHVwbG9hZEhhbmRsZXI6IEV2ZW50RW1pdHRlcjx7IGZpbGVzOiBGaWxlRHRvW10gfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVtb3ZlRmlsZTogRXZlbnRFbWl0dGVyPHsgZmlsZTogRmlsZSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjYW5jZWxVcGxvYWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRvd25sb2FkRmlsZTogRXZlbnRFbWl0dGVyPHsgaW5kZXg6IG51bWJlcjsgYW5jaG9yOiBFbGVtZW50UmVmIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRlRXJyb3JzOiBFdmVudEVtaXR0ZXI8VXBsb2FkRXJyb3I+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfZmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBwdWJsaWMgaXNTbWFsbERldmljZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgaW5wdXRWYWx1ZSA9IFwiXCI7XG4gICAgcHVibGljIG1vZGlmaWVkRGF0ZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsZVVwbG9hZFNlcnZpY2U6IEZpbGVVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zID0gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zLm1hcCgoZXh0ZW5zaW9uKSA9PiBleHRlbnNpb24ucmVwbGFjZShcIi5cIiwgXCJcIikudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICAgIHB1YmxpYyBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaWxlU2VsZWN0KGZpbGVzOiBGaWxlRHRvW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3RmlsZXM6IEZpbGVEdG9bXSA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGaWxlTGltaXRFeGNlZWRlZChmaWxlcykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfTElNSVQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRmlsZUNvbWJpbmVkU2l6ZUV4Y2VlZGVkKGZpbGVzKSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9ycy5lbWl0KHtcbiAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0NPTUJJTkVEX0ZJTEVfU0laRSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jbGVhckZpbGVJbnB1dCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Vuc3VwcG9ydGVkRmlsZUV4dGVuc2lvbihmaWxlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVFcnJvcnMuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzOiBbZmlsZV0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFZhbGlkYXRlRXJyb3JzLlVOU1VQUE9SVEVEX0VYVEVOU0lPTixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNGaWxlU2l6ZUV4Y2VlZGVkKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUVycm9ycy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXM6IFtmaWxlXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogVmFsaWRhdGVFcnJvcnMuTUFYX0ZJTEVfU0laRSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbmV3RmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdGaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmNvbmNhdChuZXdGaWxlcyk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEhhbmRsZXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgZmlsZXM6IG5ld0ZpbGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsZWFyRmlsZUlucHV0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVtb3ZlRmlsZShmaWxlOiBGaWxlRHRvKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbGVJbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGVzID0gdGhpcy5maWxlcy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcblxuICAgICAgICBpZiAocmVtb3ZlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlLmVtaXQoeyBmaWxlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2FuY2VsVXBsb2FkKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGVzID0gdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFVwbG9hZC5lbWl0KGluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Eb3dsb2FkRmlsZShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRGaWxlLmVtaXQoe1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBhbmNob3I6IHRoaXMuYW5jaG9yLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbGVzKCk6IEZpbGVEdG9bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0RmlsZVNpemUoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBcIjAgQnl0ZXNcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrID0gMTAyNDtcbiAgICAgICAgY29uc3Qgc2l6ZXMgPSBbXCJieXRlc1wiLCBcIktCXCIsIFwiTUJcIiwgXCJHQlwiLCBcIlRCXCJdO1xuICAgICAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhzaXplKSAvIE1hdGgubG9nKGspKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoKHNpemUgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgyKSkgKyBcIiBcIiArIHNpemVzW2ldO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlKCkge1xuICAgICAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICB0aGlzLmlzU21hbGxEZXZpY2UgPSB3aW5kb3dXaWR0aCA8PSBCcmVha3BvaW50cy5TTV9NQVg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ltYWdlKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eaW1hZ2VcXC8vLnRlc3QoZmlsZS50eXBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZUxpbWl0RXhjZWVkZWQoZmlsZXM6IEZpbGVEdG9bXSkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZUxpbWl0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZXMubGVuZ3RoICsgZmlsZXMubGVuZ3RoID4gdGhpcy5maWxlTGltaXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpbGVDb21iaW5lZFNpemVFeGNlZWRlZChmaWxlczogRmlsZVtdKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tYXhDb21iaW5lZEZpbGVTaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlc0xpc3QgPSBbLi4uZmlsZXMsIC4uLnRoaXMuZmlsZXNdO1xuXG4gICAgICAgIGNvbnN0IGNvbWJpbmVkU2l6ZSA9IGZpbGVzTGlzdC5yZWR1Y2UoKGNvbWJpbmVkU2l6ZSwgZmlsZSkgPT4gY29tYmluZWRTaXplICsgZmlsZS5zaXplLCAwKTtcblxuICAgICAgICByZXR1cm4gY29tYmluZWRTaXplID4gdGhpcy5tYXhDb21iaW5lZEZpbGVTaXplO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaWxlU2l6ZUV4Y2VlZGVkKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm1heEZpbGVTaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGUuc2l6ZSA+IHRoaXMubWF4RmlsZVNpemU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Vuc3VwcG9ydGVkRmlsZUV4dGVuc2lvbihmaWxlOiBGaWxlKSB7XG4gICAgICAgIGlmICh0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5uYW1lLnNwbGl0KFwiLlwiKS5wb3AoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnMuaW5jbHVkZXMoZXh0ZW5zaW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckZpbGVJbnB1dCgpIHtcbiAgICAgICAgdGhpcy5pbnB1dFVwbG9hZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFVwbG9hZERhdGUoYmxvYkZpbGU6IEZpbGVEdG9bXSk6IHZvaWQge1xuICAgICAgICBpZiAoIWJsb2JGaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0TWV0YWRhdGFDdXN0b21GaWVsZCh7IG9iamVjdElkOiBibG9iRmlsZVswXS5vYmplY3RJZCB9KVxuICAgICAgICAgICAgLnRoZW4oKG1ldGFkYXRhKSA9PiB0aGlzLnNldE1vZGlmaWVkRGF0ZShtZXRhZGF0YSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TW9kaWZpZWREYXRlKG1ldGFkYXRhOiBMaXN0QmxvYk1ldGFkYXRhUmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaG91ciA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiSEhcIik7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIm1tXCIpO1xuICAgICAgICBjb25zdCBkYXkgPSBtb21lbnQobWV0YWRhdGEubW9kaWZpZWQpLmZvcm1hdChcIkREXCIpO1xuICAgICAgICBjb25zdCBtb250aCA9IG1vbWVudChtZXRhZGF0YS5tb2RpZmllZCkuZm9ybWF0KFwiTU1cIik7XG4gICAgICAgIGNvbnN0IGZ1bGxZZWFyID0gbW9tZW50KG1ldGFkYXRhLm1vZGlmaWVkKS5mb3JtYXQoXCJZWVlZXCIpO1xuXG4gICAgICAgIHRoaXMubW9kaWZpZWREYXRlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5kYXRlX21vZGlmaWVkX2N1c3RvbV9ibG9iXCIsIHtcbiAgICAgICAgICAgIGhvdXIsXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICBmdWxsWWVhcixcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -2,11 +2,11 @@ import { __decorate } from "tslib";
2
2
  import { CommonModule } from "@angular/common";
3
3
  import { NgModule } from "@angular/core";
4
4
  import { TranslateModule } from "@ngx-translate/core";
5
- import { ProgressBarModule } from "primeng/progressbar";
6
5
  import { TooltipModule } from "primeng/tooltip";
7
6
  import { ButtonModule } from "../button/button.module";
8
- import { FileUploadService } from "./file-upload.service";
7
+ import { ProgressBarModule } from "../progressbar/progressbar.module";
9
8
  import { FileUploadComponent } from "./file-upload.component";
9
+ import { FileUploadService } from "./file-upload.service";
10
10
  let FileUploadModule = class FileUploadModule {
11
11
  };
12
12
  FileUploadModule = __decorate([
@@ -24,4 +24,4 @@ FileUploadModule = __decorate([
24
24
  })
25
25
  ], FileUploadModule);
26
26
  export { FileUploadModule };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQWM5RCxJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFnQjtDQUFHLENBQUE7QUFBbkIsZ0JBQWdCO0lBWjVCLFFBQVEsQ0FBQztRQUNOLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO1FBQ25DLE9BQU8sRUFBRTtZQUNMLFlBQVk7WUFDWixZQUFZO1lBQ1osYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixlQUFlO1NBQ2xCO1FBQ0QsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDOUIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7S0FDakMsQ0FBQztHQUNXLGdCQUFnQixDQUFHO1NBQW5CLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSBcInByaW1lbmcvcHJvZ3Jlc3NiYXJcIjtcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tIFwicHJpbWVuZy90b29sdGlwXCI7XG5cbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gXCIuLi9idXR0b24vYnV0dG9uLm1vZHVsZVwiO1xuaW1wb3J0IHsgRmlsZVVwbG9hZFNlcnZpY2UgfSBmcm9tIFwiLi9maWxlLXVwbG9hZC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSBcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbRmlsZVVwbG9hZENvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgVG9vbHRpcE1vZHVsZSxcbiAgICAgICAgUHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW0ZpbGVVcGxvYWRTZXJ2aWNlXSxcbiAgICBleHBvcnRzOiBbRmlsZVVwbG9hZENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRNb2R1bGUge31cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWMxRCxJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFnQjtDQUFHLENBQUE7QUFBbkIsZ0JBQWdCO0lBWjVCLFFBQVEsQ0FBQztRQUNOLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO1FBQ25DLE9BQU8sRUFBRTtZQUNMLFlBQVk7WUFDWixZQUFZO1lBQ1osYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixlQUFlO1NBQ2xCO1FBQ0QsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDOUIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7S0FDakMsQ0FBQztHQUNXLGdCQUFnQixDQUFHO1NBQW5CLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tIFwicHJpbWVuZy90b29sdGlwXCI7XG5cbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gXCIuLi9idXR0b24vYnV0dG9uLm1vZHVsZVwiO1xuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tIFwiLi4vcHJvZ3Jlc3NiYXIvcHJvZ3Jlc3NiYXIubW9kdWxlXCI7XG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSBcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBGaWxlVXBsb2FkU2VydmljZSB9IGZyb20gXCIuL2ZpbGUtdXBsb2FkLnNlcnZpY2VcIjtcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtGaWxlVXBsb2FkQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQnV0dG9uTW9kdWxlLFxuICAgICAgICBUb29sdGlwTW9kdWxlLFxuICAgICAgICBQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbRmlsZVVwbG9hZFNlcnZpY2VdLFxuICAgIGV4cG9ydHM6IFtGaWxlVXBsb2FkQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZE1vZHVsZSB7fVxuIl19