@quadrel-enterprise-ui/framework 18.31.4 → 18.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/esm2022/lib/comments/add-comment/add-comment-dialog.component.mjs +3 -4
  2. package/esm2022/lib/forms/checkbox-chips/checkbox-chips.component.mjs +3 -3
  3. package/esm2022/lib/forms/checkboxes/checkboxes.component.mjs +3 -3
  4. package/esm2022/lib/forms/datepicker/datepicker.component.mjs +3 -3
  5. package/esm2022/lib/forms/dropdown/dropdown.component.mjs +3 -3
  6. package/esm2022/lib/forms/file-upload/file-upload.component.mjs +3 -3
  7. package/esm2022/lib/forms/input/input.component.mjs +3 -3
  8. package/esm2022/lib/forms/multi-input/multi-input.component.mjs +3 -3
  9. package/esm2022/lib/forms/pin-code/pin-code.component.mjs +3 -3
  10. package/esm2022/lib/forms/radio-buttons/radio-buttons.component.mjs +3 -3
  11. package/esm2022/lib/forms/richtext/richtext.component.mjs +3 -3
  12. package/esm2022/lib/forms/switches/switches.component.mjs +3 -3
  13. package/esm2022/lib/forms/textarea/textarea.component.mjs +3 -3
  14. package/esm2022/lib/page/object-header/page-object-header.component.mjs +8 -4
  15. package/esm2022/lib/page/page.component.mjs +8 -2
  16. package/esm2022/lib/page/shared/services/form-group-manager.service.mjs +59 -14
  17. package/esm2022/lib/page/shared/services/page-submit-action.service.mjs +4 -2
  18. package/esm2022/lib/quick-edit/quick-edit.component.mjs +2 -2
  19. package/esm2022/lib/table/store/table.reducer.mjs +1 -1
  20. package/fesm2022/quadrel-enterprise-ui-framework.mjs +103 -47
  21. package/fesm2022/quadrel-enterprise-ui-framework.mjs.map +1 -1
  22. package/lib/comments/add-comment/add-comment-dialog.component.d.ts +0 -4
  23. package/lib/comments/add-comment/add-comment-dialog.component.d.ts.map +1 -1
  24. package/lib/page/object-header/page-object-header.component.d.ts.map +1 -1
  25. package/lib/page/page.component.d.ts +1 -0
  26. package/lib/page/page.component.d.ts.map +1 -1
  27. package/lib/page/shared/services/form-group-manager.service.d.ts +10 -0
  28. package/lib/page/shared/services/form-group-manager.service.d.ts.map +1 -1
  29. package/lib/page/shared/services/page-submit-action.service.d.ts +1 -0
  30. package/lib/page/shared/services/page-submit-action.service.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/esm2022/index.mjs +0 -74
  33. package/esm2022/lib/table/__mocks__/mock-secondary-actions.service.mjs +0 -26
  34. package/index.d.ts.map +0 -1
  35. package/lib/table/__mocks__/mock-secondary-actions.service.d.ts +0 -14
  36. package/lib/table/__mocks__/mock-secondary-actions.service.d.ts.map +0 -1
@@ -415,7 +415,7 @@ export class QdDatepickerComponent {
415
415
  useValue: true
416
416
  },
417
417
  QdFormsActionEmitterService
418
- ], viewQueries: [{ propertyName: "popover", first: true, predicate: ["qdPopoverOnClick"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<qd-input\n *ngIf=\"!readonly && !viewonly\"\n [value]=\"config?.timePicker && displayedDateTime ? displayedDateTime : displayedDate\"\n (valueChange)=\"config?.timePicker ? handleUpdatedDateTime($event) : handleUpdatedDate($event)\"\n [config]=\"{ disabled, readonly, viewonly, placeholder: config?.placeholder }\"\n [isError]=\"hasError\"\n>\n <button\n type=\"button\"\n class=\"datepicker-toggle\"\n qdIconButton\n [qdPopoverOnClick]=\"disabled ? null : calendar\"\n [qdPopoverMaxWidth]=\"332\"\n qdPopoverCloseStrategy=\"onOutsideClick\"\n #qdPopoverOnClick=\"qdPopoverOnClick\"\n >\n <qd-icon [icon]=\"'calendar'\"></qd-icon>\n </button>\n</qd-input>\n\n<ng-template #calendar>\n <qd-calendar\n [selectedDate]=\"config?.timePicker && displayedDateTime ? displayedDateTime : displayedDate\"\n [language]=\"language\"\n [disabledDates]=\"config?.disabledDates\"\n (selectedChange)=\"handleUpdatedDate($event)\"\n ></qd-calendar>\n <qd-dropdown\n class=\"timepicker-dropdown\"\n *ngIf=\"timePicker\"\n [value]=\"displayedTime\"\n (valueChange)=\"handleUpdatedTime($event)\"\n [config]=\"timePicker\"\n [qdPopoverMaxHeight]=\"300\"\n ></qd-dropdown>\n</ng-template>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <qd-form-hint\n [hint]=\"hint\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[displayedDate]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[displayedDate]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: ["qd-datepicker{position:relative;display:block;width:100%;margin-bottom:.75rem}qd-datepicker .calendar{padding:1rem}qd-datepicker .calendar mat-calendar{display:block}qd-datepicker .datepicker-toggle{background-color:unset}qd-datepicker:not(.qd-datepicker-calendar-only) qd-input{height:2.25rem;margin-bottom:.375rem!important}qd-datepicker:not(.qd-datepicker-calendar-only) qd-input .qd-form-label,qd-datepicker:not(.qd-datepicker-calendar-only) qd-input .qd-form-hint{display:none}qd-datepicker .qd-form-disabled .datepicker-toggle{color:#979797;cursor:default}qd-datepicker.qd-datepicker-calendar-only{margin-bottom:0}qd-datepicker.qd-datepicker-calendar-only qd-input{margin:0}qd-datepicker.qd-datepicker-calendar-only .qd-form-label,qd-datepicker.qd-datepicker-calendar-only .qd-form-hint,qd-datepicker.qd-datepicker-calendar-only .qd-input-input input{display:none}qd-datepicker.qd-datepicker-calendar-only .qd-input-input{height:initial!important;padding:0!important;border:none!important;margin:0!important}qd-datepicker.qd-datepicker-calendar-only .qd-input-suffix{margin-left:0!important}.timepicker-dropdown{margin:.75rem}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "directive", type: i8.QdPopoverOnClickDirective, selector: "[qdPopoverOnClick]", inputs: ["qdPopoverOnClick", "positionStrategy", "qdPopoverCloseStrategy", "qdPopoverDisabled", "qdPopoverStopPropagation", "qdPopoverBackgroundColor", "qdPopoverMaxHeight", "qdPopoverMinWidth", "qdPopoverMaxWidth", "qdPopoverAutoSize", "qdPopoverEnableKeyControl"], outputs: ["opened", "closed"], exportAs: ["qdPopoverOnClick"] }, { kind: "component", type: i9.QdCalendarComponent, selector: "qd-calendar", inputs: ["selectedDate", "language", "disabledDates"], outputs: ["selectedChange"] }, { kind: "component", type: i10.QdDropdownComponent, selector: "qd-dropdown", inputs: ["value", "id", "formControlName", "config", "data-test-id", "qdPopoverMaxHeight", "dense"], outputs: ["valueChange", "enterClick", "clickHint", "clickReadonly", "clickViewonly"] }, { kind: "component", type: i11.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i12.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i13.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i14.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "component", type: i15.QdInputComponent, selector: "qd-input", inputs: ["formControlName", "value", "config", "isError", "data-test-id"], outputs: ["valueChange", "enterClick", "clickClear", "clickHint", "clickReadonly", "clickViewonly"] }], encapsulation: i0.ViewEncapsulation.None });
418
+ ], viewQueries: [{ propertyName: "popover", first: true, predicate: ["qdPopoverOnClick"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<qd-input\n *ngIf=\"!readonly && !viewonly\"\n [value]=\"config?.timePicker && displayedDateTime ? displayedDateTime : displayedDate\"\n (valueChange)=\"config?.timePicker ? handleUpdatedDateTime($event) : handleUpdatedDate($event)\"\n [config]=\"{ disabled, readonly, viewonly, placeholder: config?.placeholder }\"\n [isError]=\"hasError\"\n>\n <button\n type=\"button\"\n class=\"datepicker-toggle\"\n qdIconButton\n [qdPopoverOnClick]=\"disabled ? null : calendar\"\n [qdPopoverMaxWidth]=\"332\"\n qdPopoverCloseStrategy=\"onOutsideClick\"\n #qdPopoverOnClick=\"qdPopoverOnClick\"\n >\n <qd-icon [icon]=\"'calendar'\"></qd-icon>\n </button>\n</qd-input>\n\n<ng-template #calendar>\n <qd-calendar\n [selectedDate]=\"config?.timePicker && displayedDateTime ? displayedDateTime : displayedDate\"\n [language]=\"language\"\n [disabledDates]=\"config?.disabledDates\"\n (selectedChange)=\"handleUpdatedDate($event)\"\n ></qd-calendar>\n <qd-dropdown\n class=\"timepicker-dropdown\"\n *ngIf=\"timePicker\"\n [value]=\"displayedTime\"\n (valueChange)=\"handleUpdatedTime($event)\"\n [config]=\"timePicker\"\n [qdPopoverMaxHeight]=\"300\"\n ></qd-dropdown>\n</ng-template>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly && (hint || hasError)\"\n [hint]=\"hint\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[displayedDate]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[displayedDate]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: ["qd-datepicker{position:relative;display:block;width:100%;margin-bottom:.75rem}qd-datepicker .calendar{padding:1rem}qd-datepicker .calendar mat-calendar{display:block}qd-datepicker .datepicker-toggle{background-color:unset}qd-datepicker:not(.qd-datepicker-calendar-only) qd-input{height:2.25rem;margin-bottom:.375rem!important}qd-datepicker:not(.qd-datepicker-calendar-only) qd-input .qd-form-label,qd-datepicker:not(.qd-datepicker-calendar-only) qd-input .qd-form-hint{display:none}qd-datepicker .qd-form-disabled .datepicker-toggle{color:#979797;cursor:default}qd-datepicker.qd-datepicker-calendar-only{margin-bottom:0}qd-datepicker.qd-datepicker-calendar-only qd-input{margin:0}qd-datepicker.qd-datepicker-calendar-only .qd-form-label,qd-datepicker.qd-datepicker-calendar-only .qd-form-hint,qd-datepicker.qd-datepicker-calendar-only .qd-input-input input{display:none}qd-datepicker.qd-datepicker-calendar-only .qd-input-input{height:initial!important;padding:0!important;border:none!important;margin:0!important}qd-datepicker.qd-datepicker-calendar-only .qd-input-suffix{margin-left:0!important}.timepicker-dropdown{margin:.75rem}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "directive", type: i8.QdPopoverOnClickDirective, selector: "[qdPopoverOnClick]", inputs: ["qdPopoverOnClick", "positionStrategy", "qdPopoverCloseStrategy", "qdPopoverDisabled", "qdPopoverStopPropagation", "qdPopoverBackgroundColor", "qdPopoverMaxHeight", "qdPopoverMinWidth", "qdPopoverMaxWidth", "qdPopoverAutoSize", "qdPopoverEnableKeyControl"], outputs: ["opened", "closed"], exportAs: ["qdPopoverOnClick"] }, { kind: "component", type: i9.QdCalendarComponent, selector: "qd-calendar", inputs: ["selectedDate", "language", "disabledDates"], outputs: ["selectedChange"] }, { kind: "component", type: i10.QdDropdownComponent, selector: "qd-dropdown", inputs: ["value", "id", "formControlName", "config", "data-test-id", "qdPopoverMaxHeight", "dense"], outputs: ["valueChange", "enterClick", "clickHint", "clickReadonly", "clickViewonly"] }, { kind: "component", type: i11.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i12.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i13.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i14.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "component", type: i15.QdInputComponent, selector: "qd-input", inputs: ["formControlName", "value", "config", "isError", "data-test-id"], outputs: ["valueChange", "enterClick", "clickClear", "clickHint", "clickReadonly", "clickViewonly"] }], encapsulation: i0.ViewEncapsulation.None });
419
419
  }
420
420
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdDatepickerComponent, decorators: [{
421
421
  type: Component,
@@ -430,7 +430,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
430
430
  useValue: true
431
431
  },
432
432
  QdFormsActionEmitterService
433
- ], template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<qd-input\n *ngIf=\"!readonly && !viewonly\"\n [value]=\"config?.timePicker && displayedDateTime ? displayedDateTime : displayedDate\"\n (valueChange)=\"config?.timePicker ? handleUpdatedDateTime($event) : handleUpdatedDate($event)\"\n [config]=\"{ disabled, readonly, viewonly, placeholder: config?.placeholder }\"\n [isError]=\"hasError\"\n>\n <button\n type=\"button\"\n class=\"datepicker-toggle\"\n qdIconButton\n [qdPopoverOnClick]=\"disabled ? null : calendar\"\n [qdPopoverMaxWidth]=\"332\"\n qdPopoverCloseStrategy=\"onOutsideClick\"\n #qdPopoverOnClick=\"qdPopoverOnClick\"\n >\n <qd-icon [icon]=\"'calendar'\"></qd-icon>\n </button>\n</qd-input>\n\n<ng-template #calendar>\n <qd-calendar\n [selectedDate]=\"config?.timePicker && displayedDateTime ? displayedDateTime : displayedDate\"\n [language]=\"language\"\n [disabledDates]=\"config?.disabledDates\"\n (selectedChange)=\"handleUpdatedDate($event)\"\n ></qd-calendar>\n <qd-dropdown\n class=\"timepicker-dropdown\"\n *ngIf=\"timePicker\"\n [value]=\"displayedTime\"\n (valueChange)=\"handleUpdatedTime($event)\"\n [config]=\"timePicker\"\n [qdPopoverMaxHeight]=\"300\"\n ></qd-dropdown>\n</ng-template>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <qd-form-hint\n [hint]=\"hint\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[displayedDate]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[displayedDate]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: ["qd-datepicker{position:relative;display:block;width:100%;margin-bottom:.75rem}qd-datepicker .calendar{padding:1rem}qd-datepicker .calendar mat-calendar{display:block}qd-datepicker .datepicker-toggle{background-color:unset}qd-datepicker:not(.qd-datepicker-calendar-only) qd-input{height:2.25rem;margin-bottom:.375rem!important}qd-datepicker:not(.qd-datepicker-calendar-only) qd-input .qd-form-label,qd-datepicker:not(.qd-datepicker-calendar-only) qd-input .qd-form-hint{display:none}qd-datepicker .qd-form-disabled .datepicker-toggle{color:#979797;cursor:default}qd-datepicker.qd-datepicker-calendar-only{margin-bottom:0}qd-datepicker.qd-datepicker-calendar-only qd-input{margin:0}qd-datepicker.qd-datepicker-calendar-only .qd-form-label,qd-datepicker.qd-datepicker-calendar-only .qd-form-hint,qd-datepicker.qd-datepicker-calendar-only .qd-input-input input{display:none}qd-datepicker.qd-datepicker-calendar-only .qd-input-input{height:initial!important;padding:0!important;border:none!important;margin:0!important}qd-datepicker.qd-datepicker-calendar-only .qd-input-suffix{margin-left:0!important}.timepicker-dropdown{margin:.75rem}\n"] }]
433
+ ], template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<qd-input\n *ngIf=\"!readonly && !viewonly\"\n [value]=\"config?.timePicker && displayedDateTime ? displayedDateTime : displayedDate\"\n (valueChange)=\"config?.timePicker ? handleUpdatedDateTime($event) : handleUpdatedDate($event)\"\n [config]=\"{ disabled, readonly, viewonly, placeholder: config?.placeholder }\"\n [isError]=\"hasError\"\n>\n <button\n type=\"button\"\n class=\"datepicker-toggle\"\n qdIconButton\n [qdPopoverOnClick]=\"disabled ? null : calendar\"\n [qdPopoverMaxWidth]=\"332\"\n qdPopoverCloseStrategy=\"onOutsideClick\"\n #qdPopoverOnClick=\"qdPopoverOnClick\"\n >\n <qd-icon [icon]=\"'calendar'\"></qd-icon>\n </button>\n</qd-input>\n\n<ng-template #calendar>\n <qd-calendar\n [selectedDate]=\"config?.timePicker && displayedDateTime ? displayedDateTime : displayedDate\"\n [language]=\"language\"\n [disabledDates]=\"config?.disabledDates\"\n (selectedChange)=\"handleUpdatedDate($event)\"\n ></qd-calendar>\n <qd-dropdown\n class=\"timepicker-dropdown\"\n *ngIf=\"timePicker\"\n [value]=\"displayedTime\"\n (valueChange)=\"handleUpdatedTime($event)\"\n [config]=\"timePicker\"\n [qdPopoverMaxHeight]=\"300\"\n ></qd-dropdown>\n</ng-template>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly && (hint || hasError)\"\n [hint]=\"hint\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[displayedDate]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[displayedDate]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: ["qd-datepicker{position:relative;display:block;width:100%;margin-bottom:.75rem}qd-datepicker .calendar{padding:1rem}qd-datepicker .calendar mat-calendar{display:block}qd-datepicker .datepicker-toggle{background-color:unset}qd-datepicker:not(.qd-datepicker-calendar-only) qd-input{height:2.25rem;margin-bottom:.375rem!important}qd-datepicker:not(.qd-datepicker-calendar-only) qd-input .qd-form-label,qd-datepicker:not(.qd-datepicker-calendar-only) qd-input .qd-form-hint{display:none}qd-datepicker .qd-form-disabled .datepicker-toggle{color:#979797;cursor:default}qd-datepicker.qd-datepicker-calendar-only{margin-bottom:0}qd-datepicker.qd-datepicker-calendar-only qd-input{margin:0}qd-datepicker.qd-datepicker-calendar-only .qd-form-label,qd-datepicker.qd-datepicker-calendar-only .qd-form-hint,qd-datepicker.qd-datepicker-calendar-only .qd-input-input input{display:none}qd-datepicker.qd-datepicker-calendar-only .qd-input-input{height:initial!important;padding:0!important;border:none!important;margin:0!important}qd-datepicker.qd-datepicker-calendar-only .qd-input-suffix{margin-left:0!important}.timepicker-dropdown{margin:.75rem}\n"] }]
434
434
  }], ctorParameters: () => [{ type: i1.QdFormsActionEmitterService }, { type: i2.TimePickerService }, { type: i3.TranslateService, decorators: [{
435
435
  type: Optional
436
436
  }] }, { type: i4.ControlContainer, decorators: [{
@@ -487,4 +487,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
487
487
  type: HostBinding,
488
488
  args: ['class.qd-datepicker-error']
489
489
  }] } });
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvZm9ybXMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixJQUFJLEVBQ0osV0FBVyxFQUNYLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFTM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsV0FBVyxFQUNYLE9BQU8sRUFDUCxhQUFhLEVBQ2IsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGlCQUFpQixFQUNsQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFN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QVFFLGFBQWE7c0JBRHJCLE1BQU07Z0JBUUUsYUFBYTtzQkFEckIsTUFBTTtnQkFHd0IsT0FBTztzQkFBckMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRzdCLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBSTNDLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBSTNDLFVBQVU7c0JBRFQsV0FBVzt1QkFBQywyQkFBMkI7Z0JBSXhDLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBS2pDLFFBQVE7c0JBRlgsV0FBVzt1QkFBQyxxQkFBcUI7O3NCQUNqQyxXQUFXO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1zdHJpY3QtaWdub3JlXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3QsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBRZFBvcG92ZXJPbkNsaWNrRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vY29yZS9wb3BvdmVyL3BvcG92ZXItb24tY2xpY2svcG9wb3Zlci1vbi1jbGljay5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgUWREaXNhYmxlZERhdGVzVmFsaWRhdGlvbixcbiAgUWREaXNhYmxlZFRpbWVzVmFsaWRhdGlvbixcbiAgUWRGb3JtRGF0ZXBpY2tlckNvbmZpZ3VyYXRpb24sXG4gIFFkRm9ybVRpbWVwaWNrZXJDb25maWd1cmF0aW9uLFxuICBRZElucHV0VmFsdWUsXG4gIFFkSW5wdXRWYWx1ZVdpdGhVbml0XG59IGZyb20gJy4uL21vZGVsL2Zvcm1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZEZvcm1Db250cm9sLCBRZFZhbGlkYXRvcnMgfSBmcm9tICcuLi9xZC1mb3JtLm1vZHVsZSc7XG5pbXBvcnQge1xuICBnZXREaXNhYmxlZCxcbiAgZ2V0SGludCxcbiAgZ2V0SGludEFjdGlvbixcbiAgZ2V0TGFiZWwsXG4gIGdldFJlYWRvbmx5LFxuICBnZXRSZWFkb25seUFjdGlvbixcbiAgZ2V0Vmlld29ubHksXG4gIGdldFZpZXdvbmx5QWN0aW9uXG59IGZyb20gJy4uL3NoYXJlZC9oZWxwZXJzL2Zvcm1zLmhlbHBlcnMnO1xuaW1wb3J0IHsgUURfUE9QT1ZFUl9UT1BfRklSU1QgfSBmcm9tICcuLi8uLi9jb3JlL2NvcmUubW9kdWxlJztcbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRGF0ZUFkYXB0ZXIsIFFkRm9ybWF0dGVkRGF0ZSB9IGZyb20gJy4vYWRhcHRlci9kYXRlLWFkYXB0ZXInO1xuaW1wb3J0IHsgVGltZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UvdGltZXBpY2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRXZlbnRCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9ldmVudC1icm9rZXIuc2VydmljZSc7XG5cbnR5cGUgUWRJbnB1dFJhd0V2ZW50VmFsdWUgPSBRZElucHV0VmFsdWUgfCBRZElucHV0VmFsdWVXaXRoVW5pdCB8IHVuZGVmaW5lZDtcblxuY29uc3QgREVGQVVMVF9MQU5HVUFHRSA9ICdkZSc7XG5cbi8qKlxuICogVGhlICoqUWREYXRlcGlja2VyKiogY29tcG9uZW50IHByb3ZpZGVzIGEgRm9ybUVsZW1lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBkYXRlLjxiciAvPlxuICogVGhlIGZvcm1hdCBvZiB0aGUgaW5wdXQgYW5kIHRoZSBvdXRwdXQgaXMgdGhlIEphdmFzY3JpcHQgRGF0ZSBPYmplY3QuIEl0IGNhbiBiZSB1c2VkIHdpdGggUXVhZHJlbCBSZWFjdGl2ZSBGb3JtcyBvciB3aXRoIG1vZGVsIGJpbmRpbmcuXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBSZWFjdGl2ZSBGb3JtcyoqXG4gKlxuICogYGBgdHNcbiAqIGZvcm0gPSBuZXcgUWRGb3JtR3JvdXAoe1xuICogICBkYXRlcGlja2VyOiBuZXcgUWRGb3JtQ29udHJvbChuZXcgRGF0ZSgyMDIzLCAzLCAyMiksIFFkVmFsaWRhdG9ycy5kYXRlKCkpXG4gKiB9KTtcbiAqIGBgYFxuICogYGBgaHRtbFxuICogPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gKiAgIDxxZC1kYXRlcGlja2VyIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0ZXBpY2tlclwiIFtjb25maWddPVwiY29uZmlnXCI+PC9xZC1kYXRlcGlja2VyPlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBNb2RlbCBCaW5kaW5nKipcbiAqIGBgYHRzXG4gKiB2YWx1ZSA9IG5ldyBEYXRlKDIwMjMsIDMsIDIyKTtcbiAqIGBgYFxuICogYGBgaHRtbFxuICogPHFkLWRhdGVwaWNrZXIgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtZGF0ZXBpY2tlcj5cbiAqIGBgYFxuICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLWRhdGVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUWREYXRlcGlja2VyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFFEX1BPUE9WRVJfVE9QX0ZJUlNULFxuICAgICAgdXNlVmFsdWU6IHRydWVcbiAgICB9LFxuICAgIFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFFkRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHtcbiAgICogICBcImxhYmVsXCI6IHtcbiAgICogICAgIFwiaTE4blwiOiBcImkxOG4ubGFiZWxcIlxuICAgKiAgIH0sXG4gICAqICAgXCJoaW50XCI6IHtcbiAgICogICAgIFwiaTE4blwiOiBcImkxOG4uaGludFwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqL1xuICBASW5wdXQoKVxuICBjb25maWc6IFFkRm9ybURhdGVwaWNrZXJDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIG5hbWUgY2FuIGJlIGFzc2lnbmVkIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIFJlYWN0aXZlIEZvcm1zLlxuICAgKi9cbiAgQElucHV0KClcbiAgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGZvcm0gaXRlbSB2YWx1ZSwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGggTW9kZWwgQmluZGluZy5cbiAgICogKiBJbnB1dCBmb3JtYXQ6IEphdmFzY3JpcHQgRGF0ZSBvYmplY3QuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDxxZC1kYXRlcGlja2VyIFsodmFsdWUpXT1cInZhbHVlXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLWRhdGVwaWNrZXI+XG4gICAqL1xuICBASW5wdXQoKVxuICB2YWx1ZTogRGF0ZTtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIGxheW91dCBvZiB0aGUgZGF0ZXBpY2tlciBjb21wb25lbnQuIElmIHNldCB0byBcInRydWVcIiwgYSBjb21wYWN0IG1vZGUgaXMgYWN0aXZhdGVkIGFuZCBvbmx5IHRoZSBjYWxlbmRhciBpY29uIGlzIGRpc3BsYXllZC5cbiAgICogSXQgYWxzbyBzZXRzIGFsbCBtYXJnaW5zIHRvIHplcm8uXG4gICAqXG4gICAqIEFuIGV4YW1wbGUgb2YgYSB1c2UgY2FzZSBpcyB0aGUgaW1wbGVtZW50YXRpb24gaW4gdGhlIFF1YWRyZWwgZmlsdGVyLlxuICAgKlxuICAgKiAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWRhdGVwaWNrZXItY2FsZW5kYXItb25seScpXG4gIEBJbnB1dCgpXG4gIGhhc0NhbGVuZGFyT25seSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRpYyB0ZXN0IElEIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgc2V0LiA8YnIgLz5cbiAgICogVGhlIHZhbHVlIGZvciB0aGUgSFRNTCBhdHRyaWJ1dGUgW2RhdGEtdGVzdC1pZF0uXG4gICAqL1xuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpXG4gIHRlc3RJZCA9ICdkYXRlcGlja2VyJztcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQuXG4gICAqIFJldHVybiB2YWx1ZSBtYXRjaGVzIHRoZSBjdXJyZW50IHZhbHVlLlxuICAgKiAqIE91dHB1dCBmb3JtYXQ6IEphdmFzY3JpcHQgRGF0ZSBvYmplY3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgYHRydWVgLCB3aGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgJy0nIGluIHRoZSB0aW1lcGlja2VyIGRyb3Bkb3duIGxpc3QuXG4gICAqICogT3V0cHV0IGZvcm1hdDogYSBib29sZWFuLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGNsaWNrVGltZVBsYWNlaG9sZGVyOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIGhpbnQgaXMgY2xpY2tlZC90YXBwZWQuIGBoaW50QWN0aW9uYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqIE5vIFBhcmFtZXRlciBoZXJlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGNsaWNrSGludDogRXZlbnRFbWl0dGVyPG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSByZWFkb25seSB2YWx1ZSBpcyBjbGlja2VkL3RhcHBlZC4gYGNsaWNrUmVhZG9ubHkgYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqIE5vIFBhcmFtZXRlciBoZXJlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGNsaWNrUmVhZG9ubHk6IEV2ZW50RW1pdHRlcjxudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmlld29ubHkgdmFsdWUgaXMgY2xpY2tlZC90YXBwZWQuIGBjbGlja1ZpZXdvbmx5IGAgbXVzdCBiZSBzZXQgdG8gYHRydWVgIGZvciB0aGlzLlxuICAgKiBObyBQYXJhbWV0ZXIgaGVyZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBjbGlja1ZpZXdvbmx5OiBFdmVudEVtaXR0ZXI8bnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgncWRQb3BvdmVyT25DbGljaycpIHBvcG92ZXI6IFFkUG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kYXRlcGlja2VyLXJlYWRvbmx5JylcbiAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWRhdGVwaWNrZXItdmlld29ubHknKVxuICB2aWV3b25seSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1oaW50LWFjdGlvbicpXG4gIGhpbnRBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZGlzYWJsZWQnKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1lcnJvcicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZGF0ZXBpY2tlci1lcnJvcicpXG4gIGdldCBoYXNFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sID8gdGhpcy5jb250cm9sLnRvdWNoZWQgJiYgdGhpcy5jb250cm9sLmludmFsaWQgOiBmYWxzZTtcbiAgfVxuXG4gIGRpc3BsYXllZERhdGUgPSAnJztcbiAgZGlzcGxheWVkVGltZSA9ICcnO1xuICBkaXNwbGF5ZWREYXRlVGltZSA9ICcnO1xuXG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhpbnQ6IHN0cmluZztcbiAgcmVhZG9ubHlBY3Rpb24gPSBmYWxzZTtcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcbiAgbGFuZ3VhZ2UgPSBERUZBVUxUX0xBTkdVQUdFO1xuICBxZFBvcG92ZXJPbkNsaWNrOiBRZFBvcG92ZXJPbkNsaWNrRGlyZWN0aXZlO1xuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG4gIHRpbWVQaWNrZXI/OiBRZEZvcm1UaW1lcGlja2VyQ29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9kaXNhYmxlZERhdGVzVmFsaWRhdG9yO1xuICBwcml2YXRlIF9kaXNhYmxlZFRpbWVzVmFsaWRhdG9yO1xuICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCAnSW52YWxpZCBEYXRlJykgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoZWQ6ICh2YWx1ZTogRGF0ZSB8ICdJbnZhbGlkIERhdGUnKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25FbWl0dGVyU2VydmljZTogUWRGb3Jtc0FjdGlvbkVtaXR0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGltZVBpY2tlclNlcnZpY2U6IFRpbWVQaWNrZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGV2ZW50QnJva2VyU2VydmljZTogUWRFdmVudEJyb2tlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubGFuZ3VhZ2UgPz89IHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZztcblxuICAgIHRoaXMuc3Vic2NyaWJlVG9MYW5ndWFnZUNoYW5nZSgpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9BY3Rpb25FbWl0dGVyRXZlbnRzKCk7XG4gICAgdGhpcy5pbml0Q29udHJvbCgpO1xuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0ZVRpbWUoKTtcbiAgICB0aGlzLnZhbGlkYXRlRGlzYWJsZWREYXRlcygpO1xuICAgIHRoaXMudmFsaWRhdGVEaXNhYmxlZFRpbWVzKCk7XG5cbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmluaXRPcE1vZGVTdWJzY3JpcHRpb24oKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuY29uZmlnKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oKTtcbiAgICAgIHRoaXMudmFsaWRhdGVEaXNhYmxlZERhdGVzKCk7XG4gICAgICB0aGlzLnZhbGlkYXRlRGlzYWJsZWRUaW1lcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9IGRhdGUgPyBRZERhdGVBZGFwdGVyLmZvcm1hdFRvRGF0ZUxvY2FsZVN0cmluZyhkYXRlKSA6ICcnO1xuICAgIHRoaXMuZGlzcGxheWVkRGF0ZVRpbWUgPSBkYXRlID8gUWREYXRlQWRhcHRlci5mb3JtYXRUb0RhdGVUaW1lTG9jYWxlU3RyaW5nKGRhdGUsIHRoaXMuY29uZmlnPy5lbmFibGVTZWNvbmRzKSA6ICcnO1xuICAgIHRoaXMuZGlzcGxheWVkVGltZSA9IGRhdGUgPyBRZERhdGVBZGFwdGVyLmZvcm1hdFRvVGltZUxvY2FsZVN0cmluZyhkYXRlLCB0aGlzLmNvbmZpZz8uZW5hYmxlU2Vjb25kcykgOiAnJztcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZGF0ZSk7XG4gICAgdGhpcy5fb25DaGFuZ2UoZGF0ZSk7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlZERhdGUoJHJhd1ZhbHVlOiBRZElucHV0UmF3RXZlbnRWYWx1ZSk6IHZvaWQge1xuICAgIGNvbnN0ICRldmVudCA9IHRoaXMuZXh0cmFjdElucHV0U3RyaW5nVmFsdWUoJHJhd1ZhbHVlKTtcblxuICAgIGlmICgkZXZlbnQgPT09ICcnKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZERhdGUgPSAnJztcbiAgICAgIHRoaXMuX29uQ2hhbmdlKG51bGwpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKG51bGwpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgdGhpcy5wb3BvdmVyPy5jbG9zZSgpO1xuXG4gICAgICBpZiAoIXRoaXMuY29udHJvbENvbnRhaW5lcikgdGhpcy5jb250cm9sLnNldFZhbHVlKG51bGwpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWREYXRlSW5wdXQoJGV2ZW50KSkge1xuICAgICAgdGhpcy5fb25DaGFuZ2UoJ0ludmFsaWQgRGF0ZScpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCdJbnZhbGlkIERhdGUnKTtcblxuICAgICAgaWYgKCF0aGlzLmNvbnRyb2xDb250YWluZXIpIHtcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKCdJbnZhbGlkIERhdGUnKTtcbiAgICAgICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgdGhpcy5wb3BvdmVyPy5jbG9zZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG5ld0RhdGU6IERhdGU7XG5cbiAgICBpZiAodGhpcy5kaXNwbGF5ZWRUaW1lID09PSAnJykge1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy50aW1lUGlja2VyPy5sYWJlbD8uaTE4biA9PT0gJ2kxOG4ucWQuZmlsdGVyLmRhdGVSYW5nZS5lbmQnKSB7XG4gICAgICAgIG5ld0RhdGUgPSBRZERhdGVBZGFwdGVyLnBhcnNlVG9EYXRlVGltZSgkZXZlbnQsICcyMzo1OTo1OScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3RGF0ZSA9IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb0RhdGUoJGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9ICRldmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3RGF0ZSA9IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb0RhdGVUaW1lKCRldmVudCwgdGhpcy5kaXNwbGF5ZWRUaW1lKTtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9EYXRlTG9jYWxlU3RyaW5nKG5ld0RhdGUpO1xuICAgICAgdGhpcy5kaXNwbGF5ZWRUaW1lID0gUWREYXRlQWRhcHRlci5mb3JtYXRUb1RpbWVMb2NhbGVTdHJpbmcobmV3RGF0ZSwgdGhpcy5jb25maWc/LmVuYWJsZVNlY29uZHMpO1xuICAgICAgdGhpcy5kaXNwbGF5ZWREYXRlVGltZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9EYXRlVGltZUxvY2FsZVN0cmluZyhuZXdEYXRlLCB0aGlzLmNvbmZpZz8uZW5hYmxlU2Vjb25kcyk7XG4gICAgfVxuXG4gICAgdGhpcy5fb25DaGFuZ2UobmV3RGF0ZSk7XG4gICAgdGhpcy5fb25Ub3VjaGVkKG5ld0RhdGUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdEYXRlKTtcblxuICAgIGlmICghdGhpcy5jb250cm9sQ29udGFpbmVyKSB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobmV3RGF0ZSk7XG5cbiAgICB0aGlzLnBvcG92ZXI/LmNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVVcGRhdGVkVGltZSgkZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGlzUGxhY2Vob2xkZXJWYWx1ZVNlbGVjdGVkID0gJGV2ZW50ID09PSBudWxsO1xuICAgIGxldCBuZXdEYXRlOiBEYXRlO1xuXG4gICAgaWYgKGlzUGxhY2Vob2xkZXJWYWx1ZVNlbGVjdGVkICYmIHRoaXMuZGlzcGxheWVkRGF0ZSkge1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy50aW1lUGlja2VyPy5sYWJlbD8uaTE4biA9PT0gJ2kxOG4ucWQuZmlsdGVyLmRhdGVSYW5nZS5lbmQnKSB7XG4gICAgICAgIG5ld0RhdGUgPSBRZERhdGVBZGFwdGVyLnBhcnNlVG9EYXRlVGltZSh0aGlzLmRpc3BsYXllZERhdGUsICcyMzo1OTo1OScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3RGF0ZSA9IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb0RhdGUodGhpcy5kaXNwbGF5ZWREYXRlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9EYXRlTG9jYWxlU3RyaW5nKG5ld0RhdGUpO1xuICAgICAgdGhpcy5kaXNwbGF5ZWRUaW1lID0gJyc7XG4gICAgICB0aGlzLmRpc3BsYXllZERhdGVUaW1lID0gUWREYXRlQWRhcHRlci5mb3JtYXRUb0RhdGVUaW1lTG9jYWxlU3RyaW5nKG5ld0RhdGUsIHRoaXMuY29uZmlnPy5lbmFibGVTZWNvbmRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEkZXZlbnQpICRldmVudCA9IHRoaXMuZGlzcGxheWVkVGltZTtcblxuICAgICAgdGhpcy5kaXNwbGF5ZWRUaW1lID0gJGV2ZW50O1xuICAgICAgbmV3RGF0ZSA9IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb0RhdGVUaW1lKHRoaXMuZGlzcGxheWVkRGF0ZSwgJGV2ZW50KTtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0ZVRpbWUgPSBRZERhdGVBZGFwdGVyLmZvcm1hdFRvRGF0ZVRpbWVMb2NhbGVTdHJpbmcobmV3RGF0ZSwgdGhpcy5jb25maWc/LmVuYWJsZVNlY29uZHMpO1xuICAgIH1cblxuICAgIHRoaXMuX29uQ2hhbmdlKG5ld0RhdGUpO1xuICAgIHRoaXMuX29uVG91Y2hlZChuZXdEYXRlKTtcbiAgICB0aGlzLmNsaWNrVGltZVBsYWNlaG9sZGVyLmVtaXQoaXNQbGFjZWhvbGRlclZhbHVlU2VsZWN0ZWQpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdEYXRlKTtcbiAgfVxuXG4gIGhhbmRsZVVwZGF0ZWREYXRlVGltZSgkcmF3VmFsdWU6IFFkSW5wdXRSYXdFdmVudFZhbHVlKTogdm9pZCB7XG4gICAgY29uc3QgJGV2ZW50ID0gdGhpcy5leHRyYWN0SW5wdXRTdHJpbmdWYWx1ZSgkcmF3VmFsdWUpO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWREYXRlVGltZUlucHV0KCRldmVudCkpIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlKCdJbnZhbGlkIERhdGUnKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZCgnSW52YWxpZCBEYXRlJyk7XG5cbiAgICAgIGlmICghdGhpcy5jb250cm9sQ29udGFpbmVyKSB7XG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnSW52YWxpZCBEYXRlJyk7XG4gICAgICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgIHRoaXMucG9wb3Zlcj8uY2xvc2UoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZDogRGF0ZSB8IG51bGwgPSAkZXZlbnQgPT09ICcnID8gbnVsbCA6IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb0RhdGVUaW1lKCRldmVudCwgdGhpcy5kaXNwbGF5ZWRUaW1lKTtcblxuICAgIHRoaXMuX29uQ2hhbmdlKHBhcnNlZCk7XG4gICAgdGhpcy5fb25Ub3VjaGVkKHBhcnNlZCk7XG5cbiAgICB0aGlzLmRpc3BsYXllZERhdGUgPSBRZERhdGVBZGFwdGVyLmZvcm1hdFRvRGF0ZUxvY2FsZVN0cmluZyhwYXJzZWQpO1xuICAgIHRoaXMuZGlzcGxheWVkVGltZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9UaW1lTG9jYWxlU3RyaW5nKHBhcnNlZCwgdGhpcy5jb25maWc/LmVuYWJsZVNlY29uZHMpO1xuICAgIHRoaXMuZGlzcGxheWVkRGF0ZVRpbWUgPSAkZXZlbnQ7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHBhcnNlZCk7XG5cbiAgICBpZiAoIXRoaXMuY29udHJvbENvbnRhaW5lcikgdGhpcy5jb250cm9sLnNldFZhbHVlKHBhcnNlZCk7XG5cbiAgICB0aGlzLnBvcG92ZXI/LmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvTGFuZ3VhZ2VDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vicy5hZGQoXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgoeyBsYW5nIH0pID0+ICh0aGlzLmxhbmd1YWdlID0gbGFuZykpLFxuICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvQWN0aW9uRW1pdHRlckV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLmhpbnRFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrSGludC5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLnJlYWRvbmx5RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2Uudmlld29ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrVmlld29ubHkuZW1pdCgpKSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDb250cm9sKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250cm9sQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLmluaXRJbm5lckNvbnRyb2woKTtcblxuICAgICAgaWYgKCF0aGlzLnZhbHVlKSByZXR1cm47XG5cbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9EYXRlTG9jYWxlU3RyaW5nKHRoaXMudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbC5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdRRC1VSSB8IFFkRGF0ZXBpY2tlckNvbXBvbmVudCAtIE1pc3NpbmcgRm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSBmcm9tIGhvc3QgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRJbm5lckNvbnRyb2woKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sID0gbmV3IFFkRm9ybUNvbnRyb2wobnVsbCwgUWRWYWxpZGF0b3JzLmRhdGUoKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbCA9IGdldExhYmVsKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmhpbnQgPSBnZXRIaW50KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnJlYWRvbmx5ID0gZ2V0UmVhZG9ubHkodGhpcy5jb25maWcsIHRoaXMucmVhZG9ubHkpO1xuICAgIHRoaXMudmlld29ubHkgPSBnZXRWaWV3b25seSh0aGlzLmNvbmZpZywgdGhpcy52aWV3b25seSk7XG4gICAgdGhpcy5oaW50QWN0aW9uID0gZ2V0SGludEFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5yZWFkb25seUFjdGlvbiA9IGdldFJlYWRvbmx5QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnZpZXdvbmx5QWN0aW9uID0gZ2V0Vmlld29ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBnZXREaXNhYmxlZCh0aGlzLmNvbmZpZykgfHwgISF0aGlzLmNvbnRyb2w/LmRpc2FibGVkO1xuICAgIGlmICh0aGlzLmNvbmZpZz8udGltZVBpY2tlcikge1xuICAgICAgdGhpcy50aW1lUGlja2VyID0gdGhpcy50aW1lUGlja2VyU2VydmljZS5nZXRDb25maWcoe1xuICAgICAgICAuLi50aGlzLmNvbmZpZy50aW1lUGlja2VyLFxuICAgICAgICB2aWV3b25seTogdGhpcy52aWV3b25seVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5ZWREYXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRyb2wgfHwgIXRoaXMudmFsdWUpIHJldHVybjtcblxuICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9EYXRlTG9jYWxlU3RyaW5nKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5ZWREYXRlVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlIHx8IHRoaXMuY29udHJvbC52YWx1ZTtcblxuICAgIGlmICghY3VycmVudFZhbHVlKSByZXR1cm47XG5cbiAgICB0aGlzLmRpc3BsYXllZERhdGVUaW1lID0gUWREYXRlQWRhcHRlci5mb3JtYXRUb0RhdGVUaW1lTG9jYWxlU3RyaW5nKGN1cnJlbnRWYWx1ZSwgdGhpcy5jb25maWc/LmVuYWJsZVNlY29uZHMpO1xuICAgIHRoaXMuZGlzcGxheWVkVGltZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9UaW1lTG9jYWxlU3RyaW5nKGN1cnJlbnRWYWx1ZSwgdGhpcy5jb25maWc/LmVuYWJsZVNlY29uZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURpc2FibGVkRGF0ZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2wpIHJldHVybjtcblxuICAgIGlmICh0aGlzLl9kaXNhYmxlZERhdGVzVmFsaWRhdG9yKSB7XG4gICAgICB0aGlzLmNvbnRyb2wucmVtb3ZlVmFsaWRhdG9ycyh0aGlzLl9kaXNhYmxlZERhdGVzVmFsaWRhdG9yKTtcbiAgICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnPy5kaXNhYmxlZERhdGVzICYmIHRoaXMuY29uZmlnPy5kaXNhYmxlZERhdGVzVmFsaWRhdGlvbikge1xuICAgICAgY29uc3QgaGFzQ3VzdG9tRXJyb3JLZXkgPSAoZGlzYWJsZWREYXRlc1ZhbGlkYXRpb24pOiBkaXNhYmxlZERhdGVzVmFsaWRhdGlvbiBpcyBRZERpc2FibGVkRGF0ZXNWYWxpZGF0aW9uID0+XG4gICAgICAgIGRpc2FibGVkRGF0ZXNWYWxpZGF0aW9uLmVycm9yS2V5O1xuXG4gICAgICB0aGlzLl9kaXNhYmxlZERhdGVzVmFsaWRhdG9yID0gaGFzQ3VzdG9tRXJyb3JLZXkodGhpcy5jb25maWcuZGlzYWJsZWREYXRlc1ZhbGlkYXRpb24pXG4gICAgICAgID8gUWRWYWxpZGF0b3JzLmRpc2FibGVkRGF0ZXModGhpcy5jb25maWcuZGlzYWJsZWREYXRlcywgdGhpcy5jb25maWcuZGlzYWJsZWREYXRlc1ZhbGlkYXRpb24uZXJyb3JLZXkpXG4gICAgICAgIDogUWRWYWxpZGF0b3JzLmRpc2FibGVkRGF0ZXModGhpcy5jb25maWcuZGlzYWJsZWREYXRlcyk7XG5cbiAgICAgIHRoaXMuY29udHJvbC5hZGRWYWxpZGF0b3JzKHRoaXMuX2Rpc2FibGVkRGF0ZXNWYWxpZGF0b3IpO1xuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRGlzYWJsZWRUaW1lcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkVGltZXNWYWxpZGF0b3IpIHtcbiAgICAgIHRoaXMuY29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKHRoaXMuX2Rpc2FibGVkVGltZXNWYWxpZGF0b3IpO1xuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWc/LnRpbWVQaWNrZXI/LmRpc2FibGVkVGltZXMgJiYgdGhpcy5jb25maWc/LnRpbWVQaWNrZXI/LmRpc2FibGVkVGltZXNWYWxpZGF0aW9uKSB7XG4gICAgICBjb25zdCBoYXNDdXN0b21FcnJvcktleSA9IChkaXNhYmxlZFRpbWVzVmFsaWRhdGlvbik6IGRpc2FibGVkVGltZXNWYWxpZGF0aW9uIGlzIFFkRGlzYWJsZWRUaW1lc1ZhbGlkYXRpb24gPT5cbiAgICAgICAgZGlzYWJsZWRUaW1lc1ZhbGlkYXRpb24uZXJyb3JLZXk7XG5cbiAgICAgIHRoaXMuX2Rpc2FibGVkVGltZXNWYWxpZGF0b3IgPSBoYXNDdXN0b21FcnJvcktleSh0aGlzLmNvbmZpZz8udGltZVBpY2tlcj8uZGlzYWJsZWRUaW1lc1ZhbGlkYXRpb24pXG4gICAgICAgID8gUWRWYWxpZGF0b3JzLmRpc2FibGVkVGltZXMoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy50aW1lUGlja2VyPy5kaXNhYmxlZFRpbWVzLFxuICAgICAgICAgICAgdGhpcy5jb25maWcudGltZVBpY2tlcj8uZGlzYWJsZWRUaW1lc1ZhbGlkYXRpb24uZXJyb3JLZXlcbiAgICAgICAgICApXG4gICAgICAgIDogUWRWYWxpZGF0b3JzLmRpc2FibGVkVGltZXModGhpcy5jb25maWcudGltZVBpY2tlcj8uZGlzYWJsZWRUaW1lcyk7XG5cbiAgICAgIHRoaXMuY29udHJvbC5hZGRWYWxpZGF0b3JzKHRoaXMuX2Rpc2FibGVkVGltZXNWYWxpZGF0b3IpO1xuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWREYXRlSW5wdXQoZm9ybWF0dGVkOiBRZEZvcm1hdHRlZERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5pc0xvY2FsaXplZERhdGVTdHJpbmdWYWxpZChmb3JtYXR0ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkRGF0ZVRpbWVJbnB1dChmb3JtYXR0ZWQ6IFFkRm9ybWF0dGVkRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBRZERhdGVBZGFwdGVyLmlzTG9jYWxpemVkRGF0ZVRpbWVTdHJpbmdWYWxpZChmb3JtYXR0ZWQsIHRoaXMuY29uZmlnPy5lbmFibGVTZWNvbmRzKSB8fFxuICAgICAgdGhpcy5pc1ZhbGlkRGF0ZUlucHV0KGZvcm1hdHRlZClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3BNb2RlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IHZvaWQge1xuICAgIGlmICghdGhpcy5ldmVudEJyb2tlclNlcnZpY2UpIHJldHVybjtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50QnJva2VyU2VydmljZS5jb25zdW1lPHsgaXNWaWV3b25seTogYm9vbGVhbiB9Pignb3BlcmF0aW9uX21vZGVfY2hhbmdlZCcpLnN1YnNjcmliZSh0b3BpYyA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLnZpZXdvbmx5ID09PSAnYm9vbGVhbicpIHJldHVybjtcblxuICAgICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0b3BpYy5wYXlsb2FkLmlzVmlld29ubHkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0SW5wdXRTdHJpbmdWYWx1ZSgkcmF3VmFsdWU6IFFkSW5wdXRSYXdFdmVudFZhbHVlKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mICRyYXdWYWx1ZSA9PT0gJ29iamVjdCcgJiYgJHJhd1ZhbHVlICE9PSBudWxsICYmICd2YWx1ZScgaW4gJHJhd1ZhbHVlKVxuICAgICAgcmV0dXJuICRyYXdWYWx1ZS52YWx1ZSAhPSBudWxsID8gU3RyaW5nKCRyYXdWYWx1ZS52YWx1ZSkgOiAnJztcblxuICAgIHJldHVybiAkcmF3VmFsdWUgIT0gbnVsbCA/IFN0cmluZygkcmF3VmFsdWUpIDogJyc7XG4gIH1cbn1cbiIsIjxxZC1mb3JtLWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIFt2aWV3b25seV09XCJ2aWV3b25seVwiXG4gIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICBbdG9vbHRpcF09XCJjb25maWc/LnRvb2x0aXBcIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLWxhYmVsPlxuXG48cWQtaW5wdXRcbiAgKm5nSWY9XCIhcmVhZG9ubHkgJiYgIXZpZXdvbmx5XCJcbiAgW3ZhbHVlXT1cImNvbmZpZz8udGltZVBpY2tlciAmJiBkaXNwbGF5ZWREYXRlVGltZSA/IGRpc3BsYXllZERhdGVUaW1lIDogZGlzcGxheWVkRGF0ZVwiXG4gICh2YWx1ZUNoYW5nZSk9XCJjb25maWc/LnRpbWVQaWNrZXIgPyBoYW5kbGVVcGRhdGVkRGF0ZVRpbWUoJGV2ZW50KSA6IGhhbmRsZVVwZGF0ZWREYXRlKCRldmVudClcIlxuICBbY29uZmlnXT1cInsgZGlzYWJsZWQsIHJlYWRvbmx5LCB2aWV3b25seSwgcGxhY2Vob2xkZXI6IGNvbmZpZz8ucGxhY2Vob2xkZXIgfVwiXG4gIFtpc0Vycm9yXT1cImhhc0Vycm9yXCJcbj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiZGF0ZXBpY2tlci10b2dnbGVcIlxuICAgIHFkSWNvbkJ1dHRvblxuICAgIFtxZFBvcG92ZXJPbkNsaWNrXT1cImRpc2FibGVkID8gbnVsbCA6IGNhbGVuZGFyXCJcbiAgICBbcWRQb3BvdmVyTWF4V2lkdGhdPVwiMzMyXCJcbiAgICBxZFBvcG92ZXJDbG9zZVN0cmF0ZWd5PVwib25PdXRzaWRlQ2xpY2tcIlxuICAgICNxZFBvcG92ZXJPbkNsaWNrPVwicWRQb3BvdmVyT25DbGlja1wiXG4gID5cbiAgICA8cWQtaWNvbiBbaWNvbl09XCInY2FsZW5kYXInXCI+PC9xZC1pY29uPlxuICA8L2J1dHRvbj5cbjwvcWQtaW5wdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjY2FsZW5kYXI+XG4gIDxxZC1jYWxlbmRhclxuICAgIFtzZWxlY3RlZERhdGVdPVwiY29uZmlnPy50aW1lUGlja2VyICYmIGRpc3BsYXllZERhdGVUaW1lID8gZGlzcGxheWVkRGF0ZVRpbWUgOiBkaXNwbGF5ZWREYXRlXCJcbiAgICBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2VcIlxuICAgIFtkaXNhYmxlZERhdGVzXT1cImNvbmZpZz8uZGlzYWJsZWREYXRlc1wiXG4gICAgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVVwZGF0ZWREYXRlKCRldmVudClcIlxuICA+PC9xZC1jYWxlbmRhcj5cbiAgPHFkLWRyb3Bkb3duXG4gICAgY2xhc3M9XCJ0aW1lcGlja2VyLWRyb3Bkb3duXCJcbiAgICAqbmdJZj1cInRpbWVQaWNrZXJcIlxuICAgIFt2YWx1ZV09XCJkaXNwbGF5ZWRUaW1lXCJcbiAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlVXBkYXRlZFRpbWUoJGV2ZW50KVwiXG4gICAgW2NvbmZpZ109XCJ0aW1lUGlja2VyXCJcbiAgICBbcWRQb3BvdmVyTWF4SGVpZ2h0XT1cIjMwMFwiXG4gID48L3FkLWRyb3Bkb3duPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZWFkb25seSAmJiAhdmlld29ubHlcIj5cbiAgPHFkLWZvcm0taGludFxuICAgIFtoaW50XT1cImhpbnRcIlxuICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICAgIFtoYXNFcnJvcl09XCJoYXNFcnJvclwiXG4gICAgW2hpbnRBY3Rpb25dPVwiaGludEFjdGlvblwiXG4gICAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuICA+PC9xZC1mb3JtLWhpbnQ+XG48L25nLWNvbnRhaW5lcj5cblxuPHFkLWZvcm0tcmVhZG9ubHlcbiAgKm5nSWY9XCJyZWFkb25seVwiXG4gIFt2YWx1ZXNdPVwiW2Rpc3BsYXllZERhdGVdXCJcbiAgW3JlYWRvbmx5QWN0aW9uXT1cInJlYWRvbmx5QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1yZWFkb25seT5cblxuPHFkLWZvcm0tdmlld29ubHlcbiAgKm5nSWY9XCJ2aWV3b25seVwiXG4gIFt2YWx1ZXNdPVwiW2Rpc3BsYXllZERhdGVdXCJcbiAgW3ZpZXdvbmx5QWN0aW9uXT1cInZpZXdvbmx5QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS12aWV3b25seT5cbiJdfQ==
490
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvZm9ybXMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixJQUFJLEVBQ0osV0FBVyxFQUNYLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFTM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsV0FBVyxFQUNYLE9BQU8sRUFDUCxhQUFhLEVBQ2IsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLGlCQUFpQixFQUNsQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFN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QVFFLGFBQWE7c0JBRHJCLE1BQU07Z0JBUUUsYUFBYTtzQkFEckIsTUFBTTtnQkFHd0IsT0FBTztzQkFBckMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRzdCLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBSTNDLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBSTNDLFVBQVU7c0JBRFQsV0FBVzt1QkFBQywyQkFBMkI7Z0JBSXhDLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBS2pDLFFBQVE7c0JBRlgsV0FBVzt1QkFBQyxxQkFBcUI7O3NCQUNqQyxXQUFXO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1zdHJpY3QtaWdub3JlXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3QsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBRZFBvcG92ZXJPbkNsaWNrRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vY29yZS9wb3BvdmVyL3BvcG92ZXItb24tY2xpY2svcG9wb3Zlci1vbi1jbGljay5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgUWREaXNhYmxlZERhdGVzVmFsaWRhdGlvbixcbiAgUWREaXNhYmxlZFRpbWVzVmFsaWRhdGlvbixcbiAgUWRGb3JtRGF0ZXBpY2tlckNvbmZpZ3VyYXRpb24sXG4gIFFkRm9ybVRpbWVwaWNrZXJDb25maWd1cmF0aW9uLFxuICBRZElucHV0VmFsdWUsXG4gIFFkSW5wdXRWYWx1ZVdpdGhVbml0XG59IGZyb20gJy4uL21vZGVsL2Zvcm1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZEZvcm1Db250cm9sLCBRZFZhbGlkYXRvcnMgfSBmcm9tICcuLi9xZC1mb3JtLm1vZHVsZSc7XG5pbXBvcnQge1xuICBnZXREaXNhYmxlZCxcbiAgZ2V0SGludCxcbiAgZ2V0SGludEFjdGlvbixcbiAgZ2V0TGFiZWwsXG4gIGdldFJlYWRvbmx5LFxuICBnZXRSZWFkb25seUFjdGlvbixcbiAgZ2V0Vmlld29ubHksXG4gIGdldFZpZXdvbmx5QWN0aW9uXG59IGZyb20gJy4uL3NoYXJlZC9oZWxwZXJzL2Zvcm1zLmhlbHBlcnMnO1xuaW1wb3J0IHsgUURfUE9QT1ZFUl9UT1BfRklSU1QgfSBmcm9tICcuLi8uLi9jb3JlL2NvcmUubW9kdWxlJztcbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRGF0ZUFkYXB0ZXIsIFFkRm9ybWF0dGVkRGF0ZSB9IGZyb20gJy4vYWRhcHRlci9kYXRlLWFkYXB0ZXInO1xuaW1wb3J0IHsgVGltZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UvdGltZXBpY2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRXZlbnRCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9ldmVudC1icm9rZXIuc2VydmljZSc7XG5cbnR5cGUgUWRJbnB1dFJhd0V2ZW50VmFsdWUgPSBRZElucHV0VmFsdWUgfCBRZElucHV0VmFsdWVXaXRoVW5pdCB8IHVuZGVmaW5lZDtcblxuY29uc3QgREVGQVVMVF9MQU5HVUFHRSA9ICdkZSc7XG5cbi8qKlxuICogVGhlICoqUWREYXRlcGlja2VyKiogY29tcG9uZW50IHByb3ZpZGVzIGEgRm9ybUVsZW1lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBkYXRlLjxiciAvPlxuICogVGhlIGZvcm1hdCBvZiB0aGUgaW5wdXQgYW5kIHRoZSBvdXRwdXQgaXMgdGhlIEphdmFzY3JpcHQgRGF0ZSBPYmplY3QuIEl0IGNhbiBiZSB1c2VkIHdpdGggUXVhZHJlbCBSZWFjdGl2ZSBGb3JtcyBvciB3aXRoIG1vZGVsIGJpbmRpbmcuXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBSZWFjdGl2ZSBGb3JtcyoqXG4gKlxuICogYGBgdHNcbiAqIGZvcm0gPSBuZXcgUWRGb3JtR3JvdXAoe1xuICogICBkYXRlcGlja2VyOiBuZXcgUWRGb3JtQ29udHJvbChuZXcgRGF0ZSgyMDIzLCAzLCAyMiksIFFkVmFsaWRhdG9ycy5kYXRlKCkpXG4gKiB9KTtcbiAqIGBgYFxuICogYGBgaHRtbFxuICogPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gKiAgIDxxZC1kYXRlcGlja2VyIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0ZXBpY2tlclwiIFtjb25maWddPVwiY29uZmlnXCI+PC9xZC1kYXRlcGlja2VyPlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBNb2RlbCBCaW5kaW5nKipcbiAqIGBgYHRzXG4gKiB2YWx1ZSA9IG5ldyBEYXRlKDIwMjMsIDMsIDIyKTtcbiAqIGBgYFxuICogYGBgaHRtbFxuICogPHFkLWRhdGVwaWNrZXIgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtZGF0ZXBpY2tlcj5cbiAqIGBgYFxuICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLWRhdGVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUWREYXRlcGlja2VyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFFEX1BPUE9WRVJfVE9QX0ZJUlNULFxuICAgICAgdXNlVmFsdWU6IHRydWVcbiAgICB9LFxuICAgIFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFFkRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHtcbiAgICogICBcImxhYmVsXCI6IHtcbiAgICogICAgIFwiaTE4blwiOiBcImkxOG4ubGFiZWxcIlxuICAgKiAgIH0sXG4gICAqICAgXCJoaW50XCI6IHtcbiAgICogICAgIFwiaTE4blwiOiBcImkxOG4uaGludFwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqL1xuICBASW5wdXQoKVxuICBjb25maWc6IFFkRm9ybURhdGVwaWNrZXJDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIG5hbWUgY2FuIGJlIGFzc2lnbmVkIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIFJlYWN0aXZlIEZvcm1zLlxuICAgKi9cbiAgQElucHV0KClcbiAgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGZvcm0gaXRlbSB2YWx1ZSwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGggTW9kZWwgQmluZGluZy5cbiAgICogKiBJbnB1dCBmb3JtYXQ6IEphdmFzY3JpcHQgRGF0ZSBvYmplY3QuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDxxZC1kYXRlcGlja2VyIFsodmFsdWUpXT1cInZhbHVlXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLWRhdGVwaWNrZXI+XG4gICAqL1xuICBASW5wdXQoKVxuICB2YWx1ZTogRGF0ZTtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIGxheW91dCBvZiB0aGUgZGF0ZXBpY2tlciBjb21wb25lbnQuIElmIHNldCB0byBcInRydWVcIiwgYSBjb21wYWN0IG1vZGUgaXMgYWN0aXZhdGVkIGFuZCBvbmx5IHRoZSBjYWxlbmRhciBpY29uIGlzIGRpc3BsYXllZC5cbiAgICogSXQgYWxzbyBzZXRzIGFsbCBtYXJnaW5zIHRvIHplcm8uXG4gICAqXG4gICAqIEFuIGV4YW1wbGUgb2YgYSB1c2UgY2FzZSBpcyB0aGUgaW1wbGVtZW50YXRpb24gaW4gdGhlIFF1YWRyZWwgZmlsdGVyLlxuICAgKlxuICAgKiAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWRhdGVwaWNrZXItY2FsZW5kYXItb25seScpXG4gIEBJbnB1dCgpXG4gIGhhc0NhbGVuZGFyT25seSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRpYyB0ZXN0IElEIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgc2V0LiA8YnIgLz5cbiAgICogVGhlIHZhbHVlIGZvciB0aGUgSFRNTCBhdHRyaWJ1dGUgW2RhdGEtdGVzdC1pZF0uXG4gICAqL1xuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpXG4gIHRlc3RJZCA9ICdkYXRlcGlja2VyJztcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQuXG4gICAqIFJldHVybiB2YWx1ZSBtYXRjaGVzIHRoZSBjdXJyZW50IHZhbHVlLlxuICAgKiAqIE91dHB1dCBmb3JtYXQ6IEphdmFzY3JpcHQgRGF0ZSBvYmplY3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgYHRydWVgLCB3aGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgJy0nIGluIHRoZSB0aW1lcGlja2VyIGRyb3Bkb3duIGxpc3QuXG4gICAqICogT3V0cHV0IGZvcm1hdDogYSBib29sZWFuLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGNsaWNrVGltZVBsYWNlaG9sZGVyOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIGhpbnQgaXMgY2xpY2tlZC90YXBwZWQuIGBoaW50QWN0aW9uYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqIE5vIFBhcmFtZXRlciBoZXJlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGNsaWNrSGludDogRXZlbnRFbWl0dGVyPG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSByZWFkb25seSB2YWx1ZSBpcyBjbGlja2VkL3RhcHBlZC4gYGNsaWNrUmVhZG9ubHkgYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqIE5vIFBhcmFtZXRlciBoZXJlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGNsaWNrUmVhZG9ubHk6IEV2ZW50RW1pdHRlcjxudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmlld29ubHkgdmFsdWUgaXMgY2xpY2tlZC90YXBwZWQuIGBjbGlja1ZpZXdvbmx5IGAgbXVzdCBiZSBzZXQgdG8gYHRydWVgIGZvciB0aGlzLlxuICAgKiBObyBQYXJhbWV0ZXIgaGVyZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBjbGlja1ZpZXdvbmx5OiBFdmVudEVtaXR0ZXI8bnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgncWRQb3BvdmVyT25DbGljaycpIHBvcG92ZXI6IFFkUG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kYXRlcGlja2VyLXJlYWRvbmx5JylcbiAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWRhdGVwaWNrZXItdmlld29ubHknKVxuICB2aWV3b25seSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1oaW50LWFjdGlvbicpXG4gIGhpbnRBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZGlzYWJsZWQnKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1lcnJvcicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZGF0ZXBpY2tlci1lcnJvcicpXG4gIGdldCBoYXNFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sID8gdGhpcy5jb250cm9sLnRvdWNoZWQgJiYgdGhpcy5jb250cm9sLmludmFsaWQgOiBmYWxzZTtcbiAgfVxuXG4gIGRpc3BsYXllZERhdGUgPSAnJztcbiAgZGlzcGxheWVkVGltZSA9ICcnO1xuICBkaXNwbGF5ZWREYXRlVGltZSA9ICcnO1xuXG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhpbnQ6IHN0cmluZztcbiAgcmVhZG9ubHlBY3Rpb24gPSBmYWxzZTtcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcbiAgbGFuZ3VhZ2UgPSBERUZBVUxUX0xBTkdVQUdFO1xuICBxZFBvcG92ZXJPbkNsaWNrOiBRZFBvcG92ZXJPbkNsaWNrRGlyZWN0aXZlO1xuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG4gIHRpbWVQaWNrZXI/OiBRZEZvcm1UaW1lcGlja2VyQ29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9kaXNhYmxlZERhdGVzVmFsaWRhdG9yO1xuICBwcml2YXRlIF9kaXNhYmxlZFRpbWVzVmFsaWRhdG9yO1xuICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCAnSW52YWxpZCBEYXRlJykgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoZWQ6ICh2YWx1ZTogRGF0ZSB8ICdJbnZhbGlkIERhdGUnKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25FbWl0dGVyU2VydmljZTogUWRGb3Jtc0FjdGlvbkVtaXR0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGltZVBpY2tlclNlcnZpY2U6IFRpbWVQaWNrZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGV2ZW50QnJva2VyU2VydmljZTogUWRFdmVudEJyb2tlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubGFuZ3VhZ2UgPz89IHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZztcblxuICAgIHRoaXMuc3Vic2NyaWJlVG9MYW5ndWFnZUNoYW5nZSgpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9BY3Rpb25FbWl0dGVyRXZlbnRzKCk7XG4gICAgdGhpcy5pbml0Q29udHJvbCgpO1xuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0ZVRpbWUoKTtcbiAgICB0aGlzLnZhbGlkYXRlRGlzYWJsZWREYXRlcygpO1xuICAgIHRoaXMudmFsaWRhdGVEaXNhYmxlZFRpbWVzKCk7XG5cbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmluaXRPcE1vZGVTdWJzY3JpcHRpb24oKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuY29uZmlnKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oKTtcbiAgICAgIHRoaXMudmFsaWRhdGVEaXNhYmxlZERhdGVzKCk7XG4gICAgICB0aGlzLnZhbGlkYXRlRGlzYWJsZWRUaW1lcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9IGRhdGUgPyBRZERhdGVBZGFwdGVyLmZvcm1hdFRvRGF0ZUxvY2FsZVN0cmluZyhkYXRlKSA6ICcnO1xuICAgIHRoaXMuZGlzcGxheWVkRGF0ZVRpbWUgPSBkYXRlID8gUWREYXRlQWRhcHRlci5mb3JtYXRUb0RhdGVUaW1lTG9jYWxlU3RyaW5nKGRhdGUsIHRoaXMuY29uZmlnPy5lbmFibGVTZWNvbmRzKSA6ICcnO1xuICAgIHRoaXMuZGlzcGxheWVkVGltZSA9IGRhdGUgPyBRZERhdGVBZGFwdGVyLmZvcm1hdFRvVGltZUxvY2FsZVN0cmluZyhkYXRlLCB0aGlzLmNvbmZpZz8uZW5hYmxlU2Vjb25kcykgOiAnJztcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZGF0ZSk7XG4gICAgdGhpcy5fb25DaGFuZ2UoZGF0ZSk7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlZERhdGUoJHJhd1ZhbHVlOiBRZElucHV0UmF3RXZlbnRWYWx1ZSk6IHZvaWQge1xuICAgIGNvbnN0ICRldmVudCA9IHRoaXMuZXh0cmFjdElucHV0U3RyaW5nVmFsdWUoJHJhd1ZhbHVlKTtcblxuICAgIGlmICgkZXZlbnQgPT09ICcnKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZERhdGUgPSAnJztcbiAgICAgIHRoaXMuX29uQ2hhbmdlKG51bGwpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKG51bGwpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgdGhpcy5wb3BvdmVyPy5jbG9zZSgpO1xuXG4gICAgICBpZiAoIXRoaXMuY29udHJvbENvbnRhaW5lcikgdGhpcy5jb250cm9sLnNldFZhbHVlKG51bGwpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWREYXRlSW5wdXQoJGV2ZW50KSkge1xuICAgICAgdGhpcy5fb25DaGFuZ2UoJ0ludmFsaWQgRGF0ZScpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCdJbnZhbGlkIERhdGUnKTtcblxuICAgICAgaWYgKCF0aGlzLmNvbnRyb2xDb250YWluZXIpIHtcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKCdJbnZhbGlkIERhdGUnKTtcbiAgICAgICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgdGhpcy5wb3BvdmVyPy5jbG9zZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG5ld0RhdGU6IERhdGU7XG5cbiAgICBpZiAodGhpcy5kaXNwbGF5ZWRUaW1lID09PSAnJykge1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy50aW1lUGlja2VyPy5sYWJlbD8uaTE4biA9PT0gJ2kxOG4ucWQuZmlsdGVyLmRhdGVSYW5nZS5lbmQnKSB7XG4gICAgICAgIG5ld0RhdGUgPSBRZERhdGVBZGFwdGVyLnBhcnNlVG9EYXRlVGltZSgkZXZlbnQsICcyMzo1OTo1OScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3RGF0ZSA9IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb0RhdGUoJGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9ICRldmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3RGF0ZSA9IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb0RhdGVUaW1lKCRldmVudCwgdGhpcy5kaXNwbGF5ZWRUaW1lKTtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9EYXRlTG9jYWxlU3RyaW5nKG5ld0RhdGUpO1xuICAgICAgdGhpcy5kaXNwbGF5ZWRUaW1lID0gUWREYXRlQWRhcHRlci5mb3JtYXRUb1RpbWVMb2NhbGVTdHJpbmcobmV3RGF0ZSwgdGhpcy5jb25maWc/LmVuYWJsZVNlY29uZHMpO1xuICAgICAgdGhpcy5kaXNwbGF5ZWREYXRlVGltZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9EYXRlVGltZUxvY2FsZVN0cmluZyhuZXdEYXRlLCB0aGlzLmNvbmZpZz8uZW5hYmxlU2Vjb25kcyk7XG4gICAgfVxuXG4gICAgdGhpcy5fb25DaGFuZ2UobmV3RGF0ZSk7XG4gICAgdGhpcy5fb25Ub3VjaGVkKG5ld0RhdGUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdEYXRlKTtcblxuICAgIGlmICghdGhpcy5jb250cm9sQ29udGFpbmVyKSB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobmV3RGF0ZSk7XG5cbiAgICB0aGlzLnBvcG92ZXI/LmNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVVcGRhdGVkVGltZSgkZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGlzUGxhY2Vob2xkZXJWYWx1ZVNlbGVjdGVkID0gJGV2ZW50ID09PSBudWxsO1xuICAgIGxldCBuZXdEYXRlOiBEYXRlO1xuXG4gICAgaWYgKGlzUGxhY2Vob2xkZXJWYWx1ZVNlbGVjdGVkICYmIHRoaXMuZGlzcGxheWVkRGF0ZSkge1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy50aW1lUGlja2VyPy5sYWJlbD8uaTE4biA9PT0gJ2kxOG4ucWQuZmlsdGVyLmRhdGVSYW5nZS5lbmQnKSB7XG4gICAgICAgIG5ld0RhdGUgPSBRZERhdGVBZGFwdGVyLnBhcnNlVG9EYXRlVGltZSh0aGlzLmRpc3BsYXllZERhdGUsICcyMzo1OTo1OScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3RGF0ZSA9IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb0RhdGUodGhpcy5kaXNwbGF5ZWREYXRlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9EYXRlTG9jYWxlU3RyaW5nKG5ld0RhdGUpO1xuICAgICAgdGhpcy5kaXNwbGF5ZWRUaW1lID0gJyc7XG4gICAgICB0aGlzLmRpc3BsYXllZERhdGVUaW1lID0gUWREYXRlQWRhcHRlci5mb3JtYXRUb0RhdGVUaW1lTG9jYWxlU3RyaW5nKG5ld0RhdGUsIHRoaXMuY29uZmlnPy5lbmFibGVTZWNvbmRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEkZXZlbnQpICRldmVudCA9IHRoaXMuZGlzcGxheWVkVGltZTtcblxuICAgICAgdGhpcy5kaXNwbGF5ZWRUaW1lID0gJGV2ZW50O1xuICAgICAgbmV3RGF0ZSA9IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb0RhdGVUaW1lKHRoaXMuZGlzcGxheWVkRGF0ZSwgJGV2ZW50KTtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0ZVRpbWUgPSBRZERhdGVBZGFwdGVyLmZvcm1hdFRvRGF0ZVRpbWVMb2NhbGVTdHJpbmcobmV3RGF0ZSwgdGhpcy5jb25maWc/LmVuYWJsZVNlY29uZHMpO1xuICAgIH1cblxuICAgIHRoaXMuX29uQ2hhbmdlKG5ld0RhdGUpO1xuICAgIHRoaXMuX29uVG91Y2hlZChuZXdEYXRlKTtcbiAgICB0aGlzLmNsaWNrVGltZVBsYWNlaG9sZGVyLmVtaXQoaXNQbGFjZWhvbGRlclZhbHVlU2VsZWN0ZWQpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdEYXRlKTtcbiAgfVxuXG4gIGhhbmRsZVVwZGF0ZWREYXRlVGltZSgkcmF3VmFsdWU6IFFkSW5wdXRSYXdFdmVudFZhbHVlKTogdm9pZCB7XG4gICAgY29uc3QgJGV2ZW50ID0gdGhpcy5leHRyYWN0SW5wdXRTdHJpbmdWYWx1ZSgkcmF3VmFsdWUpO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWREYXRlVGltZUlucHV0KCRldmVudCkpIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlKCdJbnZhbGlkIERhdGUnKTtcbiAgICAgIHRoaXMuX29uVG91Y2hlZCgnSW52YWxpZCBEYXRlJyk7XG5cbiAgICAgIGlmICghdGhpcy5jb250cm9sQ29udGFpbmVyKSB7XG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnSW52YWxpZCBEYXRlJyk7XG4gICAgICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgIHRoaXMucG9wb3Zlcj8uY2xvc2UoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZDogRGF0ZSB8IG51bGwgPSAkZXZlbnQgPT09ICcnID8gbnVsbCA6IFFkRGF0ZUFkYXB0ZXIucGFyc2VUb0RhdGVUaW1lKCRldmVudCwgdGhpcy5kaXNwbGF5ZWRUaW1lKTtcblxuICAgIHRoaXMuX29uQ2hhbmdlKHBhcnNlZCk7XG4gICAgdGhpcy5fb25Ub3VjaGVkKHBhcnNlZCk7XG5cbiAgICB0aGlzLmRpc3BsYXllZERhdGUgPSBRZERhdGVBZGFwdGVyLmZvcm1hdFRvRGF0ZUxvY2FsZVN0cmluZyhwYXJzZWQpO1xuICAgIHRoaXMuZGlzcGxheWVkVGltZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9UaW1lTG9jYWxlU3RyaW5nKHBhcnNlZCwgdGhpcy5jb25maWc/LmVuYWJsZVNlY29uZHMpO1xuICAgIHRoaXMuZGlzcGxheWVkRGF0ZVRpbWUgPSAkZXZlbnQ7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHBhcnNlZCk7XG5cbiAgICBpZiAoIXRoaXMuY29udHJvbENvbnRhaW5lcikgdGhpcy5jb250cm9sLnNldFZhbHVlKHBhcnNlZCk7XG5cbiAgICB0aGlzLnBvcG92ZXI/LmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvTGFuZ3VhZ2VDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vicy5hZGQoXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgoeyBsYW5nIH0pID0+ICh0aGlzLmxhbmd1YWdlID0gbGFuZykpLFxuICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvQWN0aW9uRW1pdHRlckV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLmhpbnRFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrSGludC5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLnJlYWRvbmx5RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2Uudmlld29ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrVmlld29ubHkuZW1pdCgpKSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDb250cm9sKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250cm9sQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLmluaXRJbm5lckNvbnRyb2woKTtcblxuICAgICAgaWYgKCF0aGlzLnZhbHVlKSByZXR1cm47XG5cbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9EYXRlTG9jYWxlU3RyaW5nKHRoaXMudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbC5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdRRC1VSSB8IFFkRGF0ZXBpY2tlckNvbXBvbmVudCAtIE1pc3NpbmcgRm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSBmcm9tIGhvc3QgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRJbm5lckNvbnRyb2woKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sID0gbmV3IFFkRm9ybUNvbnRyb2wobnVsbCwgUWRWYWxpZGF0b3JzLmRhdGUoKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5sYWJlbCA9IGdldExhYmVsKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmhpbnQgPSBnZXRIaW50KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnJlYWRvbmx5ID0gZ2V0UmVhZG9ubHkodGhpcy5jb25maWcsIHRoaXMucmVhZG9ubHkpO1xuICAgIHRoaXMudmlld29ubHkgPSBnZXRWaWV3b25seSh0aGlzLmNvbmZpZywgdGhpcy52aWV3b25seSk7XG4gICAgdGhpcy5oaW50QWN0aW9uID0gZ2V0SGludEFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5yZWFkb25seUFjdGlvbiA9IGdldFJlYWRvbmx5QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnZpZXdvbmx5QWN0aW9uID0gZ2V0Vmlld29ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBnZXREaXNhYmxlZCh0aGlzLmNvbmZpZykgfHwgISF0aGlzLmNvbnRyb2w/LmRpc2FibGVkO1xuICAgIGlmICh0aGlzLmNvbmZpZz8udGltZVBpY2tlcikge1xuICAgICAgdGhpcy50aW1lUGlja2VyID0gdGhpcy50aW1lUGlja2VyU2VydmljZS5nZXRDb25maWcoe1xuICAgICAgICAuLi50aGlzLmNvbmZpZy50aW1lUGlja2VyLFxuICAgICAgICB2aWV3b25seTogdGhpcy52aWV3b25seVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5ZWREYXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRyb2wgfHwgIXRoaXMudmFsdWUpIHJldHVybjtcblxuICAgIHRoaXMuZGlzcGxheWVkRGF0ZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9EYXRlTG9jYWxlU3RyaW5nKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5ZWREYXRlVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlIHx8IHRoaXMuY29udHJvbC52YWx1ZTtcblxuICAgIGlmICghY3VycmVudFZhbHVlKSByZXR1cm47XG5cbiAgICB0aGlzLmRpc3BsYXllZERhdGVUaW1lID0gUWREYXRlQWRhcHRlci5mb3JtYXRUb0RhdGVUaW1lTG9jYWxlU3RyaW5nKGN1cnJlbnRWYWx1ZSwgdGhpcy5jb25maWc/LmVuYWJsZVNlY29uZHMpO1xuICAgIHRoaXMuZGlzcGxheWVkVGltZSA9IFFkRGF0ZUFkYXB0ZXIuZm9ybWF0VG9UaW1lTG9jYWxlU3RyaW5nKGN1cnJlbnRWYWx1ZSwgdGhpcy5jb25maWc/LmVuYWJsZVNlY29uZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURpc2FibGVkRGF0ZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2wpIHJldHVybjtcblxuICAgIGlmICh0aGlzLl9kaXNhYmxlZERhdGVzVmFsaWRhdG9yKSB7XG4gICAgICB0aGlzLmNvbnRyb2wucmVtb3ZlVmFsaWRhdG9ycyh0aGlzLl9kaXNhYmxlZERhdGVzVmFsaWRhdG9yKTtcbiAgICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnPy5kaXNhYmxlZERhdGVzICYmIHRoaXMuY29uZmlnPy5kaXNhYmxlZERhdGVzVmFsaWRhdGlvbikge1xuICAgICAgY29uc3QgaGFzQ3VzdG9tRXJyb3JLZXkgPSAoZGlzYWJsZWREYXRlc1ZhbGlkYXRpb24pOiBkaXNhYmxlZERhdGVzVmFsaWRhdGlvbiBpcyBRZERpc2FibGVkRGF0ZXNWYWxpZGF0aW9uID0+XG4gICAgICAgIGRpc2FibGVkRGF0ZXNWYWxpZGF0aW9uLmVycm9yS2V5O1xuXG4gICAgICB0aGlzLl9kaXNhYmxlZERhdGVzVmFsaWRhdG9yID0gaGFzQ3VzdG9tRXJyb3JLZXkodGhpcy5jb25maWcuZGlzYWJsZWREYXRlc1ZhbGlkYXRpb24pXG4gICAgICAgID8gUWRWYWxpZGF0b3JzLmRpc2FibGVkRGF0ZXModGhpcy5jb25maWcuZGlzYWJsZWREYXRlcywgdGhpcy5jb25maWcuZGlzYWJsZWREYXRlc1ZhbGlkYXRpb24uZXJyb3JLZXkpXG4gICAgICAgIDogUWRWYWxpZGF0b3JzLmRpc2FibGVkRGF0ZXModGhpcy5jb25maWcuZGlzYWJsZWREYXRlcyk7XG5cbiAgICAgIHRoaXMuY29udHJvbC5hZGRWYWxpZGF0b3JzKHRoaXMuX2Rpc2FibGVkRGF0ZXNWYWxpZGF0b3IpO1xuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRGlzYWJsZWRUaW1lcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkVGltZXNWYWxpZGF0b3IpIHtcbiAgICAgIHRoaXMuY29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKHRoaXMuX2Rpc2FibGVkVGltZXNWYWxpZGF0b3IpO1xuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWc/LnRpbWVQaWNrZXI/LmRpc2FibGVkVGltZXMgJiYgdGhpcy5jb25maWc/LnRpbWVQaWNrZXI/LmRpc2FibGVkVGltZXNWYWxpZGF0aW9uKSB7XG4gICAgICBjb25zdCBoYXNDdXN0b21FcnJvcktleSA9IChkaXNhYmxlZFRpbWVzVmFsaWRhdGlvbik6IGRpc2FibGVkVGltZXNWYWxpZGF0aW9uIGlzIFFkRGlzYWJsZWRUaW1lc1ZhbGlkYXRpb24gPT5cbiAgICAgICAgZGlzYWJsZWRUaW1lc1ZhbGlkYXRpb24uZXJyb3JLZXk7XG5cbiAgICAgIHRoaXMuX2Rpc2FibGVkVGltZXNWYWxpZGF0b3IgPSBoYXNDdXN0b21FcnJvcktleSh0aGlzLmNvbmZpZz8udGltZVBpY2tlcj8uZGlzYWJsZWRUaW1lc1ZhbGlkYXRpb24pXG4gICAgICAgID8gUWRWYWxpZGF0b3JzLmRpc2FibGVkVGltZXMoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy50aW1lUGlja2VyPy5kaXNhYmxlZFRpbWVzLFxuICAgICAgICAgICAgdGhpcy5jb25maWcudGltZVBpY2tlcj8uZGlzYWJsZWRUaW1lc1ZhbGlkYXRpb24uZXJyb3JLZXlcbiAgICAgICAgICApXG4gICAgICAgIDogUWRWYWxpZGF0b3JzLmRpc2FibGVkVGltZXModGhpcy5jb25maWcudGltZVBpY2tlcj8uZGlzYWJsZWRUaW1lcyk7XG5cbiAgICAgIHRoaXMuY29udHJvbC5hZGRWYWxpZGF0b3JzKHRoaXMuX2Rpc2FibGVkVGltZXNWYWxpZGF0b3IpO1xuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWREYXRlSW5wdXQoZm9ybWF0dGVkOiBRZEZvcm1hdHRlZERhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUWREYXRlQWRhcHRlci5pc0xvY2FsaXplZERhdGVTdHJpbmdWYWxpZChmb3JtYXR0ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkRGF0ZVRpbWVJbnB1dChmb3JtYXR0ZWQ6IFFkRm9ybWF0dGVkRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBRZERhdGVBZGFwdGVyLmlzTG9jYWxpemVkRGF0ZVRpbWVTdHJpbmdWYWxpZChmb3JtYXR0ZWQsIHRoaXMuY29uZmlnPy5lbmFibGVTZWNvbmRzKSB8fFxuICAgICAgdGhpcy5pc1ZhbGlkRGF0ZUlucHV0KGZvcm1hdHRlZClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3BNb2RlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IHZvaWQge1xuICAgIGlmICghdGhpcy5ldmVudEJyb2tlclNlcnZpY2UpIHJldHVybjtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50QnJva2VyU2VydmljZS5jb25zdW1lPHsgaXNWaWV3b25seTogYm9vbGVhbiB9Pignb3BlcmF0aW9uX21vZGVfY2hhbmdlZCcpLnN1YnNjcmliZSh0b3BpYyA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLnZpZXdvbmx5ID09PSAnYm9vbGVhbicpIHJldHVybjtcblxuICAgICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0b3BpYy5wYXlsb2FkLmlzVmlld29ubHkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0SW5wdXRTdHJpbmdWYWx1ZSgkcmF3VmFsdWU6IFFkSW5wdXRSYXdFdmVudFZhbHVlKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mICRyYXdWYWx1ZSA9PT0gJ29iamVjdCcgJiYgJHJhd1ZhbHVlICE9PSBudWxsICYmICd2YWx1ZScgaW4gJHJhd1ZhbHVlKVxuICAgICAgcmV0dXJuICRyYXdWYWx1ZS52YWx1ZSAhPSBudWxsID8gU3RyaW5nKCRyYXdWYWx1ZS52YWx1ZSkgOiAnJztcblxuICAgIHJldHVybiAkcmF3VmFsdWUgIT0gbnVsbCA/IFN0cmluZygkcmF3VmFsdWUpIDogJyc7XG4gIH1cbn1cbiIsIjxxZC1mb3JtLWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIFt2aWV3b25seV09XCJ2aWV3b25seVwiXG4gIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICBbdG9vbHRpcF09XCJjb25maWc/LnRvb2x0aXBcIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLWxhYmVsPlxuXG48cWQtaW5wdXRcbiAgKm5nSWY9XCIhcmVhZG9ubHkgJiYgIXZpZXdvbmx5XCJcbiAgW3ZhbHVlXT1cImNvbmZpZz8udGltZVBpY2tlciAmJiBkaXNwbGF5ZWREYXRlVGltZSA/IGRpc3BsYXllZERhdGVUaW1lIDogZGlzcGxheWVkRGF0ZVwiXG4gICh2YWx1ZUNoYW5nZSk9XCJjb25maWc/LnRpbWVQaWNrZXIgPyBoYW5kbGVVcGRhdGVkRGF0ZVRpbWUoJGV2ZW50KSA6IGhhbmRsZVVwZGF0ZWREYXRlKCRldmVudClcIlxuICBbY29uZmlnXT1cInsgZGlzYWJsZWQsIHJlYWRvbmx5LCB2aWV3b25seSwgcGxhY2Vob2xkZXI6IGNvbmZpZz8ucGxhY2Vob2xkZXIgfVwiXG4gIFtpc0Vycm9yXT1cImhhc0Vycm9yXCJcbj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiZGF0ZXBpY2tlci10b2dnbGVcIlxuICAgIHFkSWNvbkJ1dHRvblxuICAgIFtxZFBvcG92ZXJPbkNsaWNrXT1cImRpc2FibGVkID8gbnVsbCA6IGNhbGVuZGFyXCJcbiAgICBbcWRQb3BvdmVyTWF4V2lkdGhdPVwiMzMyXCJcbiAgICBxZFBvcG92ZXJDbG9zZVN0cmF0ZWd5PVwib25PdXRzaWRlQ2xpY2tcIlxuICAgICNxZFBvcG92ZXJPbkNsaWNrPVwicWRQb3BvdmVyT25DbGlja1wiXG4gID5cbiAgICA8cWQtaWNvbiBbaWNvbl09XCInY2FsZW5kYXInXCI+PC9xZC1pY29uPlxuICA8L2J1dHRvbj5cbjwvcWQtaW5wdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjY2FsZW5kYXI+XG4gIDxxZC1jYWxlbmRhclxuICAgIFtzZWxlY3RlZERhdGVdPVwiY29uZmlnPy50aW1lUGlja2VyICYmIGRpc3BsYXllZERhdGVUaW1lID8gZGlzcGxheWVkRGF0ZVRpbWUgOiBkaXNwbGF5ZWREYXRlXCJcbiAgICBbbGFuZ3VhZ2VdPVwibGFuZ3VhZ2VcIlxuICAgIFtkaXNhYmxlZERhdGVzXT1cImNvbmZpZz8uZGlzYWJsZWREYXRlc1wiXG4gICAgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVVwZGF0ZWREYXRlKCRldmVudClcIlxuICA+PC9xZC1jYWxlbmRhcj5cbiAgPHFkLWRyb3Bkb3duXG4gICAgY2xhc3M9XCJ0aW1lcGlja2VyLWRyb3Bkb3duXCJcbiAgICAqbmdJZj1cInRpbWVQaWNrZXJcIlxuICAgIFt2YWx1ZV09XCJkaXNwbGF5ZWRUaW1lXCJcbiAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlVXBkYXRlZFRpbWUoJGV2ZW50KVwiXG4gICAgW2NvbmZpZ109XCJ0aW1lUGlja2VyXCJcbiAgICBbcWRQb3BvdmVyTWF4SGVpZ2h0XT1cIjMwMFwiXG4gID48L3FkLWRyb3Bkb3duPlxuPC9uZy10ZW1wbGF0ZT5cblxuPHFkLWZvcm0taGludFxuICAqbmdJZj1cIiFyZWFkb25seSAmJiAhdmlld29ubHkgJiYgKGhpbnQgfHwgaGFzRXJyb3IpXCJcbiAgW2hpbnRdPVwiaGludFwiXG4gIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICBbaGFzRXJyb3JdPVwiaGFzRXJyb3JcIlxuICBbaGludEFjdGlvbl09XCJoaW50QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1oaW50PlxuXG48cWQtZm9ybS1yZWFkb25seVxuICAqbmdJZj1cInJlYWRvbmx5XCJcbiAgW3ZhbHVlc109XCJbZGlzcGxheWVkRGF0ZV1cIlxuICBbcmVhZG9ubHlBY3Rpb25dPVwicmVhZG9ubHlBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLXJlYWRvbmx5PlxuXG48cWQtZm9ybS12aWV3b25seVxuICAqbmdJZj1cInZpZXdvbmx5XCJcbiAgW3ZhbHVlc109XCJbZGlzcGxheWVkRGF0ZV1cIlxuICBbdmlld29ubHlBY3Rpb25dPVwidmlld29ubHlBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLXZpZXdvbmx5PlxuIl19
@@ -382,7 +382,7 @@ export class QdDropdownComponent {
382
382
  provide: QD_FOCUSABLE_TOKEN,
383
383
  useExisting: QdDropdownComponent
384
384
  }
385
- ], viewQueries: [{ propertyName: "dropdownOptions", first: true, predicate: QdDropdownOptionsComponent, descendants: true }, { propertyName: "dropdownDirective", first: true, predicate: QdPopoverOnClickDirective, descendants: true }, { propertyName: "box", first: true, predicate: ["box"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-dropdown__wrapper\">\n <div\n class=\"qd-dropdown__box\"\n tabindex=\"0\"\n *ngIf=\"!readonly && !viewonly && hasOptions\"\n [qdPopoverOnClick]=\"dropdownMenu\"\n [qdPopoverCloseStrategy]=\"'onOutsideClick'\"\n [qdPopoverStopPropagation]=\"true\"\n [qdPopoverDisabled]=\"disabled\"\n [qdPopoverMaxHeight]=\"qdPopoverMaxHeight\"\n [qdPopoverAutoSize]=\"{ width: true }\"\n [qdPopoverEnableKeyControl]=\"true\"\n (opened)=\"onOpenDropdown()\"\n (closed)=\"onDropdownClosed()\"\n (click)=\"enterClick.emit()\"\n [positionStrategy]=\"positionStrategy\"\n >\n {{ (selectedOption?.i18n | translate) || placeholder }}\n\n <div class=\"qd-dropdown-suffix\">\n <qd-icon *ngIf=\"hasError\" class=\"qd-error-icon\" icon=\"exclamationCircleSolid\"></qd-icon>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <qd-form-hint\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[selectedOption]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[selectedOption]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n\n<ng-template #dropdownMenu>\n <qd-dropdown-options\n [filter]=\"filter\"\n [filterText]=\"filterText\"\n [testId]=\"testId\"\n [id]=\"id\"\n (filterChange)=\"handleFilterChange($event)\"\n (optionClick)=\"handleClick($event)\"\n ></qd-dropdown-options>\n</ng-template>\n", styles: [".qd-dropdown__wrapper{position:relative;margin-bottom:.375rem}.qd-dropdown__wrapper.dense{margin-bottom:0}.qd-dropdown__wrapper .qd-dropdown__box{display:flex;overflow:hidden;width:100%;height:2.25rem;justify-content:space-between;padding:0 .75rem;border:.0625rem solid rgb(180,180,180);margin-bottom:.25rem;background:#fff;color:#fff;font-size:.875rem;font-weight:400;line-height:2.25rem;text-overflow:ellipsis;white-space:nowrap}.qd-dropdown__wrapper .qd-dropdown__box.dense{margin-bottom:0}.qd-dropdown-selected .qd-dropdown__wrapper .qd-dropdown__box{color:#171717}.qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown__wrapper .qd-dropdown__box:active,.qd-dropdown__wrapper .qd-dropdown__box:hover{padding:0 .6875rem;border-width:.125rem;border-color:#171717;line-height:2.125rem;outline:0}.qd-dropdown__wrapper .qd-dropdown__box:active{color:#b4b4b4}.qd-dropdown__wrapper .qd-dropdown__box:hover:after{border-top-color:#b4b4b4}.qd-dropdown__wrapper .qd-dropdown__box:after{position:absolute;z-index:5;top:1rem;right:.75rem;width:0;height:0;border-top:.3125rem solid rgb(180,180,180);border-right:.3125rem solid rgba(255,255,255,0);border-left:.3125rem solid rgba(255,255,255,0);content:\"\";pointer-events:none}.qd-dropdown__wrapper .qd-dropdown__box .qd-dropdown-suffix{position:relative;z-index:8;margin-right:1rem;background:#fff}.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box{background:#f5f5f5;color:#979797}.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:active{padding:0 .75rem;border:.0625rem solid rgb(180,180,180);line-height:2.25rem}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box{height:inherit;padding:0;border:none;line-height:2.25rem}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:active{color:inherit}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:after{display:none}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box{height:inherit;padding:0;border:none;line-height:2.25rem}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:active{color:inherit}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:after{display:none}.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly{color:#069;cursor:pointer}.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:hover,.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:active,.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:focus{color:#069;text-decoration:underline}.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly{color:#069;cursor:pointer}.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:hover,.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:active,.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:focus{color:#069;text-decoration:underline}.qd-dropdown-error .qd-dropdown__box{padding:0 .75rem;border:.0625rem solid rgb(199,0,35);line-height:2.25rem}.qd-dropdown-error .qd-dropdown__box:focus,.qd-dropdown-error .qd-dropdown__box:hover,.qd-dropdown-error .qd-dropdown__box:active{padding:0 .6875rem;border:.125rem solid rgb(199,0,35);line-height:2.125rem}.qd-dropdown-error .qd-dropdown__box .qd-error-icon{color:#c70023}.qd-dropdown{display:block;height:4.5rem;margin-bottom:.75rem}.qd-dropdown.dense{width:100%;height:auto;margin-bottom:0}.qd-dropdown.dense .qd-dropdown__wrapper,.qd-dropdown.dense .qd-dropdown__box{margin-bottom:0}.qd-dropdown-open .qd-dropdown__wrapper .qd-dropdown__box{padding:0 .6875rem;border-width:.125rem;border-color:#069;line-height:2.125rem}.qd-dropdown-open .qd-dropdown__wrapper .qd-dropdown__box:after{border-top:none;border-bottom:.3125rem solid rgb(23,23,23)}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "directive", type: i9.QdPopoverOnClickDirective, selector: "[qdPopoverOnClick]", inputs: ["qdPopoverOnClick", "positionStrategy", "qdPopoverCloseStrategy", "qdPopoverDisabled", "qdPopoverStopPropagation", "qdPopoverBackgroundColor", "qdPopoverMaxHeight", "qdPopoverMinWidth", "qdPopoverMaxWidth", "qdPopoverAutoSize", "qdPopoverEnableKeyControl"], outputs: ["opened", "closed"], exportAs: ["qdPopoverOnClick"] }, { kind: "component", type: i10.QdDropdownOptionsComponent, selector: "qd-dropdown-options", inputs: ["filter", "filterText", "testId", "id"], outputs: ["filterChange", "optionClick"] }, { kind: "component", type: i11.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i12.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i13.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i14.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
385
+ ], viewQueries: [{ propertyName: "dropdownOptions", first: true, predicate: QdDropdownOptionsComponent, descendants: true }, { propertyName: "dropdownDirective", first: true, predicate: QdPopoverOnClickDirective, descendants: true }, { propertyName: "box", first: true, predicate: ["box"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-dropdown__wrapper\">\n <div\n class=\"qd-dropdown__box\"\n tabindex=\"0\"\n *ngIf=\"!readonly && !viewonly && hasOptions\"\n [qdPopoverOnClick]=\"dropdownMenu\"\n [qdPopoverCloseStrategy]=\"'onOutsideClick'\"\n [qdPopoverStopPropagation]=\"true\"\n [qdPopoverDisabled]=\"disabled\"\n [qdPopoverMaxHeight]=\"qdPopoverMaxHeight\"\n [qdPopoverAutoSize]=\"{ width: true }\"\n [qdPopoverEnableKeyControl]=\"true\"\n (opened)=\"onOpenDropdown()\"\n (closed)=\"onDropdownClosed()\"\n (click)=\"enterClick.emit()\"\n [positionStrategy]=\"positionStrategy\"\n >\n {{ (selectedOption?.i18n | translate) || placeholder }}\n\n <div class=\"qd-dropdown-suffix\">\n <qd-icon *ngIf=\"hasError\" class=\"qd-error-icon\" icon=\"exclamationCircleSolid\"></qd-icon>\n </div>\n </div>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly && (hasHint || hasError)\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[selectedOption]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[selectedOption]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n\n<ng-template #dropdownMenu>\n <qd-dropdown-options\n [filter]=\"filter\"\n [filterText]=\"filterText\"\n [testId]=\"testId\"\n [id]=\"id\"\n (filterChange)=\"handleFilterChange($event)\"\n (optionClick)=\"handleClick($event)\"\n ></qd-dropdown-options>\n</ng-template>\n", styles: [".qd-dropdown__wrapper{position:relative;margin-bottom:.375rem}.qd-dropdown__wrapper.dense{margin-bottom:0}.qd-dropdown__wrapper .qd-dropdown__box{display:flex;overflow:hidden;width:100%;height:2.25rem;justify-content:space-between;padding:0 .75rem;border:.0625rem solid rgb(180,180,180);margin-bottom:.25rem;background:#fff;color:#fff;font-size:.875rem;font-weight:400;line-height:2.25rem;text-overflow:ellipsis;white-space:nowrap}.qd-dropdown__wrapper .qd-dropdown__box.dense{margin-bottom:0}.qd-dropdown-selected .qd-dropdown__wrapper .qd-dropdown__box{color:#171717}.qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown__wrapper .qd-dropdown__box:active,.qd-dropdown__wrapper .qd-dropdown__box:hover{padding:0 .6875rem;border-width:.125rem;border-color:#171717;line-height:2.125rem;outline:0}.qd-dropdown__wrapper .qd-dropdown__box:active{color:#b4b4b4}.qd-dropdown__wrapper .qd-dropdown__box:hover:after{border-top-color:#b4b4b4}.qd-dropdown__wrapper .qd-dropdown__box:after{position:absolute;z-index:5;top:1rem;right:.75rem;width:0;height:0;border-top:.3125rem solid rgb(180,180,180);border-right:.3125rem solid rgba(255,255,255,0);border-left:.3125rem solid rgba(255,255,255,0);content:\"\";pointer-events:none}.qd-dropdown__wrapper .qd-dropdown__box .qd-dropdown-suffix{position:relative;z-index:8;margin-right:1rem;background:#fff}.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box{background:#f5f5f5;color:#979797}.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:active{padding:0 .75rem;border:.0625rem solid rgb(180,180,180);line-height:2.25rem}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box{height:inherit;padding:0;border:none;line-height:2.25rem}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:active{color:inherit}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:after{display:none}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box{height:inherit;padding:0;border:none;line-height:2.25rem}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:active{color:inherit}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:after{display:none}.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly{color:#069;cursor:pointer}.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:hover,.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:active,.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:focus{color:#069;text-decoration:underline}.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly{color:#069;cursor:pointer}.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:hover,.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:active,.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:focus{color:#069;text-decoration:underline}.qd-dropdown-error .qd-dropdown__box{padding:0 .75rem;border:.0625rem solid rgb(199,0,35);line-height:2.25rem}.qd-dropdown-error .qd-dropdown__box:focus,.qd-dropdown-error .qd-dropdown__box:hover,.qd-dropdown-error .qd-dropdown__box:active{padding:0 .6875rem;border:.125rem solid rgb(199,0,35);line-height:2.125rem}.qd-dropdown-error .qd-dropdown__box .qd-error-icon{color:#c70023}.qd-dropdown{display:block;height:4.5rem;margin-bottom:.75rem}.qd-dropdown.dense{width:100%;height:auto;margin-bottom:0}.qd-dropdown.dense .qd-dropdown__wrapper,.qd-dropdown.dense .qd-dropdown__box{margin-bottom:0}.qd-dropdown-open .qd-dropdown__wrapper .qd-dropdown__box{padding:0 .6875rem;border-width:.125rem;border-color:#069;line-height:2.125rem}.qd-dropdown-open .qd-dropdown__wrapper .qd-dropdown__box:after{border-top:none;border-bottom:.3125rem solid rgb(23,23,23)}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "directive", type: i9.QdPopoverOnClickDirective, selector: "[qdPopoverOnClick]", inputs: ["qdPopoverOnClick", "positionStrategy", "qdPopoverCloseStrategy", "qdPopoverDisabled", "qdPopoverStopPropagation", "qdPopoverBackgroundColor", "qdPopoverMaxHeight", "qdPopoverMinWidth", "qdPopoverMaxWidth", "qdPopoverAutoSize", "qdPopoverEnableKeyControl"], outputs: ["opened", "closed"], exportAs: ["qdPopoverOnClick"] }, { kind: "component", type: i10.QdDropdownOptionsComponent, selector: "qd-dropdown-options", inputs: ["filter", "filterText", "testId", "id"], outputs: ["filterChange", "optionClick"] }, { kind: "component", type: i11.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i12.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i13.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i14.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
386
386
  }
387
387
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdDropdownComponent, decorators: [{
388
388
  type: Component,
@@ -400,7 +400,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
400
400
  provide: QD_FOCUSABLE_TOKEN,
401
401
  useExisting: QdDropdownComponent
402
402
  }
403
- ], encapsulation: ViewEncapsulation.None, host: { class: 'qd-dropdown' }, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-dropdown__wrapper\">\n <div\n class=\"qd-dropdown__box\"\n tabindex=\"0\"\n *ngIf=\"!readonly && !viewonly && hasOptions\"\n [qdPopoverOnClick]=\"dropdownMenu\"\n [qdPopoverCloseStrategy]=\"'onOutsideClick'\"\n [qdPopoverStopPropagation]=\"true\"\n [qdPopoverDisabled]=\"disabled\"\n [qdPopoverMaxHeight]=\"qdPopoverMaxHeight\"\n [qdPopoverAutoSize]=\"{ width: true }\"\n [qdPopoverEnableKeyControl]=\"true\"\n (opened)=\"onOpenDropdown()\"\n (closed)=\"onDropdownClosed()\"\n (click)=\"enterClick.emit()\"\n [positionStrategy]=\"positionStrategy\"\n >\n {{ (selectedOption?.i18n | translate) || placeholder }}\n\n <div class=\"qd-dropdown-suffix\">\n <qd-icon *ngIf=\"hasError\" class=\"qd-error-icon\" icon=\"exclamationCircleSolid\"></qd-icon>\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <qd-form-hint\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[selectedOption]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[selectedOption]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n\n<ng-template #dropdownMenu>\n <qd-dropdown-options\n [filter]=\"filter\"\n [filterText]=\"filterText\"\n [testId]=\"testId\"\n [id]=\"id\"\n (filterChange)=\"handleFilterChange($event)\"\n (optionClick)=\"handleClick($event)\"\n ></qd-dropdown-options>\n</ng-template>\n", styles: [".qd-dropdown__wrapper{position:relative;margin-bottom:.375rem}.qd-dropdown__wrapper.dense{margin-bottom:0}.qd-dropdown__wrapper .qd-dropdown__box{display:flex;overflow:hidden;width:100%;height:2.25rem;justify-content:space-between;padding:0 .75rem;border:.0625rem solid rgb(180,180,180);margin-bottom:.25rem;background:#fff;color:#fff;font-size:.875rem;font-weight:400;line-height:2.25rem;text-overflow:ellipsis;white-space:nowrap}.qd-dropdown__wrapper .qd-dropdown__box.dense{margin-bottom:0}.qd-dropdown-selected .qd-dropdown__wrapper .qd-dropdown__box{color:#171717}.qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown__wrapper .qd-dropdown__box:active,.qd-dropdown__wrapper .qd-dropdown__box:hover{padding:0 .6875rem;border-width:.125rem;border-color:#171717;line-height:2.125rem;outline:0}.qd-dropdown__wrapper .qd-dropdown__box:active{color:#b4b4b4}.qd-dropdown__wrapper .qd-dropdown__box:hover:after{border-top-color:#b4b4b4}.qd-dropdown__wrapper .qd-dropdown__box:after{position:absolute;z-index:5;top:1rem;right:.75rem;width:0;height:0;border-top:.3125rem solid rgb(180,180,180);border-right:.3125rem solid rgba(255,255,255,0);border-left:.3125rem solid rgba(255,255,255,0);content:\"\";pointer-events:none}.qd-dropdown__wrapper .qd-dropdown__box .qd-dropdown-suffix{position:relative;z-index:8;margin-right:1rem;background:#fff}.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box{background:#f5f5f5;color:#979797}.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:active{padding:0 .75rem;border:.0625rem solid rgb(180,180,180);line-height:2.25rem}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box{height:inherit;padding:0;border:none;line-height:2.25rem}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:active{color:inherit}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:after{display:none}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box{height:inherit;padding:0;border:none;line-height:2.25rem}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:active{color:inherit}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:after{display:none}.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly{color:#069;cursor:pointer}.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:hover,.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:active,.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:focus{color:#069;text-decoration:underline}.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly{color:#069;cursor:pointer}.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:hover,.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:active,.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:focus{color:#069;text-decoration:underline}.qd-dropdown-error .qd-dropdown__box{padding:0 .75rem;border:.0625rem solid rgb(199,0,35);line-height:2.25rem}.qd-dropdown-error .qd-dropdown__box:focus,.qd-dropdown-error .qd-dropdown__box:hover,.qd-dropdown-error .qd-dropdown__box:active{padding:0 .6875rem;border:.125rem solid rgb(199,0,35);line-height:2.125rem}.qd-dropdown-error .qd-dropdown__box .qd-error-icon{color:#c70023}.qd-dropdown{display:block;height:4.5rem;margin-bottom:.75rem}.qd-dropdown.dense{width:100%;height:auto;margin-bottom:0}.qd-dropdown.dense .qd-dropdown__wrapper,.qd-dropdown.dense .qd-dropdown__box{margin-bottom:0}.qd-dropdown-open .qd-dropdown__wrapper .qd-dropdown__box{padding:0 .6875rem;border-width:.125rem;border-color:#069;line-height:2.125rem}.qd-dropdown-open .qd-dropdown__wrapper .qd-dropdown__box:after{border-top:none;border-bottom:.3125rem solid rgb(23,23,23)}\n"] }]
403
+ ], encapsulation: ViewEncapsulation.None, host: { class: 'qd-dropdown' }, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-dropdown__wrapper\">\n <div\n class=\"qd-dropdown__box\"\n tabindex=\"0\"\n *ngIf=\"!readonly && !viewonly && hasOptions\"\n [qdPopoverOnClick]=\"dropdownMenu\"\n [qdPopoverCloseStrategy]=\"'onOutsideClick'\"\n [qdPopoverStopPropagation]=\"true\"\n [qdPopoverDisabled]=\"disabled\"\n [qdPopoverMaxHeight]=\"qdPopoverMaxHeight\"\n [qdPopoverAutoSize]=\"{ width: true }\"\n [qdPopoverEnableKeyControl]=\"true\"\n (opened)=\"onOpenDropdown()\"\n (closed)=\"onDropdownClosed()\"\n (click)=\"enterClick.emit()\"\n [positionStrategy]=\"positionStrategy\"\n >\n {{ (selectedOption?.i18n | translate) || placeholder }}\n\n <div class=\"qd-dropdown-suffix\">\n <qd-icon *ngIf=\"hasError\" class=\"qd-error-icon\" icon=\"exclamationCircleSolid\"></qd-icon>\n </div>\n </div>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly && (hasHint || hasError)\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[selectedOption]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[selectedOption]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n\n<ng-template #dropdownMenu>\n <qd-dropdown-options\n [filter]=\"filter\"\n [filterText]=\"filterText\"\n [testId]=\"testId\"\n [id]=\"id\"\n (filterChange)=\"handleFilterChange($event)\"\n (optionClick)=\"handleClick($event)\"\n ></qd-dropdown-options>\n</ng-template>\n", styles: [".qd-dropdown__wrapper{position:relative;margin-bottom:.375rem}.qd-dropdown__wrapper.dense{margin-bottom:0}.qd-dropdown__wrapper .qd-dropdown__box{display:flex;overflow:hidden;width:100%;height:2.25rem;justify-content:space-between;padding:0 .75rem;border:.0625rem solid rgb(180,180,180);margin-bottom:.25rem;background:#fff;color:#fff;font-size:.875rem;font-weight:400;line-height:2.25rem;text-overflow:ellipsis;white-space:nowrap}.qd-dropdown__wrapper .qd-dropdown__box.dense{margin-bottom:0}.qd-dropdown-selected .qd-dropdown__wrapper .qd-dropdown__box{color:#171717}.qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown__wrapper .qd-dropdown__box:active,.qd-dropdown__wrapper .qd-dropdown__box:hover{padding:0 .6875rem;border-width:.125rem;border-color:#171717;line-height:2.125rem;outline:0}.qd-dropdown__wrapper .qd-dropdown__box:active{color:#b4b4b4}.qd-dropdown__wrapper .qd-dropdown__box:hover:after{border-top-color:#b4b4b4}.qd-dropdown__wrapper .qd-dropdown__box:after{position:absolute;z-index:5;top:1rem;right:.75rem;width:0;height:0;border-top:.3125rem solid rgb(180,180,180);border-right:.3125rem solid rgba(255,255,255,0);border-left:.3125rem solid rgba(255,255,255,0);content:\"\";pointer-events:none}.qd-dropdown__wrapper .qd-dropdown__box .qd-dropdown-suffix{position:relative;z-index:8;margin-right:1rem;background:#fff}.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box{background:#f5f5f5;color:#979797}.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-disabled .qd-dropdown__wrapper .qd-dropdown__box:active{padding:0 .75rem;border:.0625rem solid rgb(180,180,180);line-height:2.25rem}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box{height:inherit;padding:0;border:none;line-height:2.25rem}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:active{color:inherit}.qd-dropdown-readonly .qd-dropdown__wrapper .qd-dropdown__box:after{display:none}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box{height:inherit;padding:0;border:none;line-height:2.25rem}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:focus,.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:hover,.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:active{color:inherit}.qd-dropdown-viewonly .qd-dropdown__wrapper .qd-dropdown__box:after{display:none}.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly{color:#069;cursor:pointer}.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:hover,.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:active,.qd-dropdown--readonly-action .qd-dropdown__box.qd-dropdown__box--readonly:focus{color:#069;text-decoration:underline}.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly{color:#069;cursor:pointer}.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:hover,.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:active,.qd-dropdown--viewonly-action .qd-dropdown__box.qd-dropdown__box--viewonly:focus{color:#069;text-decoration:underline}.qd-dropdown-error .qd-dropdown__box{padding:0 .75rem;border:.0625rem solid rgb(199,0,35);line-height:2.25rem}.qd-dropdown-error .qd-dropdown__box:focus,.qd-dropdown-error .qd-dropdown__box:hover,.qd-dropdown-error .qd-dropdown__box:active{padding:0 .6875rem;border:.125rem solid rgb(199,0,35);line-height:2.125rem}.qd-dropdown-error .qd-dropdown__box .qd-error-icon{color:#c70023}.qd-dropdown{display:block;height:4.5rem;margin-bottom:.75rem}.qd-dropdown.dense{width:100%;height:auto;margin-bottom:0}.qd-dropdown.dense .qd-dropdown__wrapper,.qd-dropdown.dense .qd-dropdown__box{margin-bottom:0}.qd-dropdown-open .qd-dropdown__wrapper .qd-dropdown__box{padding:0 .6875rem;border-width:.125rem;border-color:#069;line-height:2.125rem}.qd-dropdown-open .qd-dropdown__wrapper .qd-dropdown__box:after{border-top:none;border-bottom:.3125rem solid rgb(23,23,23)}\n"] }]
404
404
  }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i2.QdFormsActionEmitterService }, { type: i3.QdFormOptionsResolverRegistry }, { type: i4.QdFormOptionsService }, { type: i0.Injector }, { type: i5.ControlContainer, decorators: [{
405
405
  type: Optional
406
406
  }, {
@@ -488,4 +488,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
488
488
  type: HostBinding,
489
489
  args: ['class.qd-dropdown-selected']
490
490
  }] } });
491
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxnQkFBZ0IsRUFFaEIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFMUUsT0FBTyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsYUFBYSxFQUNiLFFBQVEsRUFDUixVQUFVLEVBQ1YsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDN0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHM0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQXVCSCxNQUFNLE9BQU8sbUJBQW1CO0lBdU1YO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNnQztJQUNwQjtJQTdNL0I7Ozs7O09BS0c7SUFDSCxJQUNJLEtBQUssQ0FBQyxLQUFvQjtRQUM1QixNQUFNLE9BQU8sR0FBRyxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLE9BQU8sSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJO1lBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7T0FHRztJQUNNLEVBQUUsQ0FBQztJQUVaOztPQUVHO0lBQ00sZUFBZSxDQUFTO0lBRWpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BK0JHO0lBQ00sTUFBTSxDQUE4QjtJQUU3Qzs7O09BR0c7SUFDb0IsTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUUzQzs7T0FFRztJQUNNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztJQUVsQzs7T0FFRztJQUNnQixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUU1RDs7T0FFRztJQUVNLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXpDOztPQUVHO0lBQ2dCLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWxEOztPQUVHO0lBQ2dCLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXREOztPQUVHO0lBQ2dCLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBR3RELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFHakIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUd2QixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBR2pCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFJdkIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUluQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBSWpCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFZCxLQUFLLENBQVM7SUFDZCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsT0FBTyxDQUFpQjtJQUN4QixVQUFVLENBQUs7SUFDZixPQUFPLENBQWtCO0lBQ3pCLGdCQUFnQixDQUFzQjtJQUU5QixNQUFNLEdBQWtCLElBQUksQ0FBQztJQUM3QixlQUFlLEdBQXdCLElBQUksQ0FBQztJQUM1QyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUzQixTQUFTLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzFCLFFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFHakMsZUFBZSxDQUE2QjtJQUc1QyxpQkFBaUIsQ0FBNkI7SUFHOUMsR0FBRyxDQUFhO0lBR2hCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFZixJQUVJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDN0UsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQy9ELENBQUM7SUFFRCxJQUNJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRWhDLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBUTtZQUNwRixDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUc7WUFDekUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVE7WUFDeEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFlBQ21CLGdCQUFrQyxFQUNsQyxpQkFBb0MsRUFDcEMsb0JBQWlELEVBQ2pELGdCQUErQyxFQUMvQyxjQUFvQyxFQUNwQyxRQUFrQixFQUNjLGdCQUFrQyxFQUN0RCxrQkFBd0MsRUFDM0IsaUJBQTBCO1FBUm5ELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTZCO1FBQ2pELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBK0I7UUFDL0MsbUJBQWMsR0FBZCxjQUFjLENBQXNCO1FBQ3BDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDYyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3RELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7UUFHckUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25HLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBTztRQUNqQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUUzQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7Z0JBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQW9CO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSztRQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWlCO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFvQjtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBb0I7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQU07UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsaUJBQTBCO1FBQ3BELE1BQU0sR0FBRyxHQUF3QjtZQUMvQjtnQkFDRSxPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsS0FBSzthQUNoQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLE1BQU0sRUFBRSxHQUFHO2FBQ1o7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMxRSxDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN2RSxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDakMsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLG9HQUFvRyxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7UUFDckUsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBTztRQUNoQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBb0I7UUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTztRQUVoRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3RGLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0I7WUFBRSxPQUFPO1FBRXJDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBMEIsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUcsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxLQUFLLFNBQVM7Z0JBQUUsT0FBTztZQUV2RCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQWhZVSxtQkFBbUIsdVdBK01SLG9CQUFvQjsyRkEvTS9CLG1CQUFtQixzaENBbEJuQjtZQUNULDJCQUEyQjtZQUMzQiw2QkFBNkI7WUFDN0IscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQjtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLG1CQUFtQjthQUNqQztTQUNGLDJFQWlKVSwwQkFBMEIsb0ZBRzFCLHlCQUF5QixrSkMzUHRDLDI1REFvRUE7OzJGRHVDYSxtQkFBbUI7a0JBdEIvQixTQUFTOytCQUNFLGFBQWEsYUFHWjt3QkFDVCwyQkFBMkI7d0JBQzNCLDZCQUE2Qjt3QkFDN0IscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLHFCQUFxQjt5QkFDakM7cUJBQ0YsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7OzBCQStNM0IsUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksUUFBUTs7MEJBQzVCLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0JBQW9CO3lDQXZNdEMsS0FBSztzQkFEUixLQUFLO2dCQWtCRyxFQUFFO3NCQUFWLEtBQUs7Z0JBS0csZUFBZTtzQkFBdkIsS0FBSztnQkFrQ0csTUFBTTtzQkFBZCxLQUFLO2dCQU1pQixNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBS1osa0JBQWtCO3NCQUExQixLQUFLO2dCQUthLFdBQVc7c0JBQTdCLE1BQU07Z0JBTUUsVUFBVTtzQkFEbEIsTUFBTTtnQkFNWSxTQUFTO3NCQUEzQixNQUFNO2dCQUtZLGFBQWE7c0JBQS9CLE1BQU07Z0JBS1ksYUFBYTtzQkFBL0IsTUFBTTtnQkFHUCxRQUFRO3NCQURQLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUl6QyxjQUFjO3NCQURiLFdBQVc7dUJBQUMsb0NBQW9DO2dCQUlqRCxRQUFRO3NCQURQLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUl6QyxjQUFjO3NCQURiLFdBQVc7dUJBQUMsb0NBQW9DO2dCQUtqRCxVQUFVO3NCQUZULFdBQVc7dUJBQUMsMkJBQTJCOztzQkFDdkMsV0FBVzt1QkFBQyxnQ0FBZ0M7Z0JBSzdDLFFBQVE7c0JBRlAsV0FBVzt1QkFBQyx3QkFBd0I7O3NCQUNwQyxXQUFXO3VCQUFDLDRCQUE0QjtnQkFLekMsS0FBSztzQkFGSixXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixLQUFLO2dCQWtCTixlQUFlO3NCQURkLFNBQVM7dUJBQUMsMEJBQTBCO2dCQUlyQyxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMseUJBQXlCO2dCQUlwQyxHQUFHO3NCQURGLFNBQVM7dUJBQUMsS0FBSztnQkFJaEIsTUFBTTtzQkFETCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFLakMsUUFBUTtzQkFGWCxXQUFXO3VCQUFDLHFCQUFxQjs7c0JBQ2pDLFdBQVc7dUJBQUMseUJBQXlCO2dCQWNsQyxVQUFVO3NCQURiLFdBQVc7dUJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTa2lwU2VsZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbENvbnRhaW5lcixcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sRGlyZWN0aXZlLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuXG5pbXBvcnQgeyBRZEZvY3VzYWJsZSB9IGZyb20gJy4uLy4uL2NvcmUvZm9jdXNhYmxlL2ZvY3VzYWJsZSc7XG5pbXBvcnQgeyBRRF9GT0NVU0FCTEVfVE9LRU4gfSBmcm9tICcuLi8uLi9jb3JlL2ZvY3VzYWJsZS9mb2N1c2FibGUudG9rZW4nO1xuaW1wb3J0IHsgUWRGb3JtRHJvcGRvd25Db25maWd1cmF0aW9uLCBRZEZvcm1PcHRpb24gfSBmcm9tICcuLi9tb2RlbC9mb3Jtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgZ2V0RGlzYWJsZWQsXG4gIGdldEZpbHRlcixcbiAgZ2V0SGludEFjdGlvbixcbiAgZ2V0TGFiZWwsXG4gIGdldE9wdGlvbnMsXG4gIGdldFJlYWRvbmx5LFxuICBnZXRSZWFkb25seUFjdGlvbixcbiAgZ2V0Vmlld29ubHksXG4gIGdldFZpZXdvbmx5QWN0aW9uXG59IGZyb20gJy4uL3NoYXJlZC9oZWxwZXJzL2Zvcm1zLmhlbHBlcnMnO1xuaW1wb3J0IHsgaGFzVmFsaWRhdGlvbktleSB9IGZyb20gJy4uL3NoYXJlZC9oZWxwZXJzL2hhcy12YWxpZGF0b3JzLmhlbHBlcnMnO1xuaW1wb3J0IHsgUURfUE9QT1ZFUl9UT1BfRklSU1QgfSBmcm9tICcuLi8uLi9jb3JlL2NvcmUubW9kdWxlJztcbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRXZlbnRCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9ldmVudC1icm9rZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZEZvcm1PcHRpb25zUmVzb2x2ZXJSZWdpc3RyeSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9vcHRpb25zLXJlc29sdmVyLnJlZ2lzdHJ5JztcbmltcG9ydCB7IFFkRm9ybU9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL2Zvcm0tb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRm9ybUtleWJvYXJkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9mb3JtLWtleWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWREcm9wZG93bk9wdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL29wdGlvbnMvZHJvcGRvd24tb3B0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUWRQb3BvdmVyT25DbGlja0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2NvcmUvcG9wb3Zlci9wb3BvdmVyLW9uLWNsaWNrL3BvcG92ZXItb24tY2xpY2suZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG4vKipcbiAqIFRoZSAqKlFkRHJvcGRvd24qKiBpcyBhbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGRyb3Bkb3duIGZvcm0gZWxlbWVudC48YnIgLz5cbiAqIEl0IGNhbiBiZSB1c2VkIHdpdGggUXVhZHJlbCBSZWFjdGl2ZSBGb3JtcyBvciB3aXRoIG1vZGVsIGJpbmRpbmcuXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBSZWFjdGl2ZSBGb3JtcyoqXG4gKlxuICogYGBgdHNcbiAqIGZvcm0gPSBuZXcgUWRGb3JtR3JvdXAoe1xuICogICBkcm9wZG93bjogbmV3IFFkRm9ybUNvbnRyb2woKVxuICogfSk7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICogICA8cWQtZHJvcGRvd24gW2Zvcm1Db250cm9sTmFtZV09XCJkcm9wZG93blwiIFtjb25maWddPVwiY29uZmlnXCI+PC9xZC1kcm9wZG93bj5cbiAqIDwvZm9ybT5cbiAqIGBgYFxuICpcbiAqICMjIyMqKlVzYWdlIHdpdGggTW9kZWwgQmluZGluZyoqXG4gKiBgYGB0c1xuICogdmFsdWU7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxxZC1kcm9wZG93biBbKHZhbHVlKV09XCJ2YWx1ZVwiIFtjb25maWddPVwiY29uZmlnXCI+PC9xZC1kcm9wZG93bj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSxcbiAgICBRZEZvcm1PcHRpb25zUmVzb2x2ZXJSZWdpc3RyeSxcbiAgICBRZEZvcm1LZXlib2FyZFNlcnZpY2UsXG4gICAgUWRGb3JtT3B0aW9uc1NlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBRZERyb3Bkb3duQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBRRF9GT0NVU0FCTEVfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogUWREcm9wZG93bkNvbXBvbmVudFxuICAgIH1cbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ3FkLWRyb3Bkb3duJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUWRGb2N1c2FibGUge1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZm9ybSBpdGVtIHZhbHVlLCBpZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBNb2RlbCBCaW5kaW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiA8cWQtZHJvcGRvd24gWyh2YWx1ZSldPVwiZHJvcGRvd25WYWx1ZVwiIFtjb25maWddPVwiY29uZmlnXCI+PC9xZC1kcm9wZG93bj5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB2YWx1ZSAhPT0gdGhpcy5fdmFsdWU7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAoY2hhbmdlZCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDdXJyZW50IHNlbGVjdGVkIHZhbHVlXG4gICAqL1xuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8/IHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24uYWN0aXZlKT8udmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogSWRlbnRpZmllciB0byBkaXN0aW5ndWlzaCBjbGljayBldmVudHMgb24gc2FtZSBvcHRpb25zIGluIGRpZmZlcmVudCBkcm9wZG93bnMuXG4gICAqIElmIG5vdCBnaXZlbiBhIHJhbmRvbSBpZCBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbiAgICovXG4gIEBJbnB1dCgpIGlkO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIG5hbWUgY2FuIGJlIGFzc2lnbmVkIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIFJlYWN0aXZlIEZvcm1zLlxuICAgKi9cbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHtcbiAgICogICBcImxhYmVsXCI6IHtcbiAgICogICAgIFwiaTE4blwiOiBcIkRyb3Bkb3duXCJcbiAgICogICB9LFxuICAgKiAgIFwiaGludFwiOiB7XG4gICAqICAgICBcImkxOG5cIjogXCJIZWxwZXJ0ZXh0XCJcbiAgICogICB9LFxuICAgKiAgIFwiZmlsdGVyXCI6IGZhbHNlLFxuICAgKiAgIFwiZGlzYWJsZWRcIjogZmFsc2UsXG4gICAqICAgXCJyZWFkb25seVwiOiBmYWxzZSxcbiAgICogICBcInZpZXdvbmx5XCI6IGZhbHNlLFxuICAgKiAgIFwib3B0aW9uc1wiOiBbXG4gICAqICAgICB7XG4gICAqICAgICAgIFwiaTE4blwiOiBcImkxOG4uaW1wb3J0XCIsXG4gICAqICAgICAgIFwidmFsdWVcIjogXCJpbXBvcnRcIlxuICAgKiAgICAgfSxcbiAgICogICAgIHtcbiAgICogICAgICAgXCJpMThuXCI6IFwiaTE4bi5leHBvcnRcIixcbiAgICogICAgICAgXCJ2YWx1ZVwiOiBcImV4cG9ydFwiXG4gICAqICAgICB9LFxuICAgKiAgICAge1xuICAgKiAgICAgICBcImkxOG5cIjogXCJpMThuLnRyYW5zaXRcIixcbiAgICogICAgICAgXCJ2YWx1ZVwiOiBcInRyYW5zaXRcIixcbiAgICogICAgICAgXCJkaXNhYmxlZFwiOiB0cnVlXG4gICAqICAgICB9XG4gICAqICAgXVxuICAgKiB9XG4gICAqL1xuICBASW5wdXQoKSBjb25maWc6IFFkRm9ybURyb3Bkb3duQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQSBzdGF0aWMgdGVzdCBJRCBmb3IgaW50ZWdyYXRpb24gdGVzdHMgY2FuIGJlIHNldC4gPGJyIC8+XG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIEhUTUwgYXR0cmlidXRlIFtkYXRhLXRlc3QtaWRdLlxuICAgKi9cbiAgQElucHV0KCdkYXRhLXRlc3QtaWQnKSB0ZXN0SWQgPSAnZHJvcGRvd24nO1xuXG4gIC8qKlxuICAgKiBUT0RPIFtSRU1PVkVdOiBUaGUgcHJvcGVydHkgYmVsb3cgaXMgQVBJLXJlbGV2YW50IGFuZCAqKm11c3Qgbm90KiogYmUgdXNlZCB0byBzb2x2ZSBzdHlsaW5nIGlzc3Vlcy4gUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIHByb3BlciBzdHlsaW5nIHNvbHV0aW9ucyBhcmUgaW4gcGxhY2UuXG4gICAqL1xuICBASW5wdXQoKSBxZFBvcG92ZXJNYXhIZWlnaHQgPSAyNTA7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHZhbHVlIGhhcyBjaGFuZ2VkLiBSZXR1cm4gdmFsdWUgbWF0Y2hlcyB0aGUgY3VycmVudCB2YWx1ZS5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZC4gTm90ZTogRW1pdHMgb24ga2V5dXAuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgZW50ZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgY2xpY2tSZWFkb25seSBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1JlYWRvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2aWV3b25seSB2YWx1ZSBpcyBjbGlja2VkL3RhcHBlZC4gYGNsaWNrVmlld29ubHkgYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tWaWV3b25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWRyb3Bkb3duLXJlYWRvbmx5JylcbiAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWRyb3Bkb3duLS1yZWFkb25seS1hY3Rpb24nKVxuICByZWFkb25seUFjdGlvbiA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tdmlld29ubHknKVxuICB2aWV3b25seSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tLXZpZXdvbmx5LWFjdGlvbicpXG4gIHZpZXdvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWhpbnQtYWN0aW9uJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi0taGludC1hY3Rpb24nKVxuICBoaW50QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWRpc2FibGVkJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi1kaXNhYmxlZCcpXG4gIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kZW5zZScpXG4gIEBJbnB1dCgpXG4gIGRlbnNlID0gZmFsc2U7XG5cbiAgbGFiZWw6IHN0cmluZztcbiAgZmlsdGVyID0gZmFsc2U7XG4gIG9wdGlvbnM6IFFkRm9ybU9wdGlvbltdO1xuICBmaWx0ZXJUZXh0OiAnJztcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBwb3NpdGlvblN0cmF0ZWd5OiBDb25uZWN0ZWRQb3NpdGlvbltdO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRPcHRpb246IFFkRm9ybU9wdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgQFZpZXdDaGlsZChRZERyb3Bkb3duT3B0aW9uc0NvbXBvbmVudClcbiAgZHJvcGRvd25PcHRpb25zOiBRZERyb3Bkb3duT3B0aW9uc0NvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKFFkUG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmUpXG4gIGRyb3Bkb3duRGlyZWN0aXZlITogUWRQb3BvdmVyT25DbGlja0RpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdib3gnKVxuICBib3g6IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi1vcGVuJylcbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWVycm9yJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi1lcnJvcicpXG4gIGdldCBoYXNFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sID8gdGhpcy5jb250cm9sLnRvdWNoZWQgJiYgdGhpcy5jb250cm9sLmludmFsaWQgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZE9wdGlvbigpOiBRZEZvcm1PcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRPcHRpb247XG4gIH1cblxuICBnZXQgaGFzSGludCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LmhpbnQ/LmkxOG4gJiYgIXRoaXMuY29uZmlnLmhpbnQuZGlzYWJsZWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWRyb3Bkb3duLXNlbGVjdGVkJylcbiAgZ2V0IGlzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBlcnJvcnMoKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCA/IHRoaXMuY29udHJvbC5lcnJvcnMgOiBbXTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyUHJlZml4ICsgdGhpcy5wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIGhhc1ZhbGlkYXRpb25LZXkodGhpcy5jb250cm9sLCAncmVxdWlyZWQnKTtcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlclByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8ucGxhY2Vob2xkZXJQcmVmaXg/LmkxOG4gJiYgIXRoaXMuY29uZmlnLnBsYWNlaG9sZGVyUHJlZml4LmRpc2FibGVkXG4gICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuY29uZmlnLnBsYWNlaG9sZGVyUHJlZml4LmkxOG4pICsgJyAnXG4gICAgICA6ICcnO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5wbGFjZWhvbGRlcj8uaTE4biAmJiAhdGhpcy5jb25maWcucGxhY2Vob2xkZXIuZGlzYWJsZWRcbiAgICAgID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5jb25maWcucGxhY2Vob2xkZXIuaTE4bilcbiAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2kxOG4ucWQuZHJvcGRvd24uZGVmYXVsdFZhbHVlJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25FbWl0dGVyU2VydmljZTogUWRGb3Jtc0FjdGlvbkVtaXR0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZXJSZWdpc3RyeTogUWRGb3JtT3B0aW9uc1Jlc29sdmVyUmVnaXN0cnksXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zU2VydmljZTogUWRGb3JtT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBldmVudEJyb2tlclNlcnZpY2U6IFFkRXZlbnRCcm9rZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUURfUE9QT1ZFUl9UT1BfRklSU1QpIGlzUG9wb3ZlclRvcEZpcnN0OiBib29sZWFuXG4gICkge1xuICAgIGlmICghdGhpcy5pZCkgdGhpcy5pZCA9IHV1aWQoKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uU3RyYXRlZ3koaXNQb3BvdmVyVG9wRmlyc3QpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XG4gICAgaWYgKHRoaXMuY29uZmlnKSB0aGlzLmxvYWRPcHRpb25zRm9yQ3VycmVudENvbmZpZygpO1xuICAgIHRoaXMucmVzb2x2ZUNvbnRyb2woKTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKHRoaXMudmFsdWUpO1xuXG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5hY3Rpb25FbWl0dGVyU2VydmljZS5oaW50RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja0hpbnQuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5hY3Rpb25FbWl0dGVyU2VydmljZS5yZWFkb25seUV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tSZWFkb25seS5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLnZpZXdvbmx5RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja1ZpZXdvbmx5LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuaW5pdE9wTW9kZVN1YnNjcmlwdGlvbigpKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jb25maWcpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgICBpZiAodGhpcy5oYXZlT3B0aW9uc0NoYW5nZWQoY2hhbmdlcykpIHRoaXMuaGFuZGxlT3B0aW9uc0NoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub3B0aW9uc1NlcnZpY2UucmVzZXQoKTtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmJveC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb24odmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICBoYXNPcHRpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNTZXJ2aWNlLmhhc09wdGlvbnMoKTtcbiAgfVxuXG4gIGhhbmRsZU9wdGlvblNlbGVjdGVkKG9wdGlvbjogUWRGb3JtT3B0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgdGhpcy5fc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XG4gICAgdGhpcy5fb25DaGFuZ2Uob3B0aW9uLnZhbHVlKTtcbiAgICB0aGlzLl9vblRvdWNoKG9wdGlvbi52YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG9wdGlvbi52YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVDbGljayhvcHRpb246IFFkRm9ybU9wdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlKG9wdGlvbi52YWx1ZSk7XG4gICAgdGhpcy5fb25Ub3VjaChvcHRpb24udmFsdWUpO1xuICAgIHRoaXMudmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgdGhpcy5fc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG9wdGlvbi52YWx1ZSk7XG4gICAgdGhpcy5kcm9wZG93bkRpcmVjdGl2ZT8uY2xvc2UoKTtcbiAgfVxuXG4gIGhhbmRsZUZpbHRlckNoYW5nZSgkZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlclRleHQgPSAkZXZlbnQ7XG4gICAgdGhpcy5vcHRpb25zU2VydmljZS5sb2FkKCRldmVudCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvbk9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5sb2FkT3B0aW9uc0ZvckN1cnJlbnRDb25maWcoKTtcbiAgICB0aGlzLmRyb3Bkb3duT3B0aW9ucz8ub25PcGVuKCk7XG4gIH1cblxuICBvbkRyb3Bkb3duQ2xvc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuX3ZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICAgIHRoaXMuX29uVG91Y2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFBvc2l0aW9uU3RyYXRlZ3koaXNQb3BvdmVyVG9wRmlyc3Q6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBhcnI6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgd2VpZ2h0OiAwLjhcbiAgICAgIH1cbiAgICBdO1xuXG4gICAgdGhpcy5wb3NpdGlvblN0cmF0ZWd5ID0gaXNQb3BvdmVyVG9wRmlyc3QgPyBhcnIuc2xpY2UoKS5yZXZlcnNlKCkgOiBhcnI7XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcHRpb25zRm9yQ3VycmVudENvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLmluaXRpYWxpemUodGhpcy5jb25maWcpO1xuICAgIHRoaXMub3B0aW9uc1NlcnZpY2UudmFsaWRhdGVPcHRpb25zU2V0dXAoJ1FkRHJvcGRvd24nKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUNvbnRyb2woKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udHJvbENvbnRhaW5lciAmJiB0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgdGhpcy5jb250cm9sID0gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yLmdldChGb3JtQ29udHJvbERpcmVjdGl2ZSwgbnVsbCk7XG4gICAgaWYgKGRpcmVjdGl2ZSkge1xuICAgICAgdGhpcy5jb250cm9sID0gZGlyZWN0aXZlLmNvbnRyb2w7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS53YXJuKCdRRC1VSSB8IFFkRHJvcGRvd25Db21wb25lbnQgLSBNaXNzaW5nIEZvcm1Db250cm9sTmFtZSBkaXJlY3RpdmUgZnJvbSBob3N0IGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudCcpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMubGFiZWwgPSBnZXRMYWJlbCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5yZWFkb25seSA9IGdldFJlYWRvbmx5KHRoaXMuY29uZmlnLCB0aGlzLnJlYWRvbmx5KTtcbiAgICB0aGlzLnZpZXdvbmx5ID0gZ2V0Vmlld29ubHkodGhpcy5jb25maWcsIHRoaXMudmlld29ubHkpO1xuICAgIHRoaXMuaGludEFjdGlvbiA9IGdldEhpbnRBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMucmVhZG9ubHlBY3Rpb24gPSBnZXRSZWFkb25seUFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy52aWV3b25seUFjdGlvbiA9IGdldFZpZXdvbmx5QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmRpc2FibGVkID0gZ2V0RGlzYWJsZWQodGhpcy5jb25maWcpIHx8ICEhdGhpcy5jb250cm9sPy5kaXNhYmxlZDtcbiAgICB0aGlzLmZpbHRlciA9IGdldEZpbHRlcih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zID0gZ2V0T3B0aW9ucyh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGhhdmVPcHRpb25zQ2hhbmdlZChjaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc0VxdWFsKGNoYW5nZXMuY29uZmlnLnByZXZpb3VzVmFsdWU/Lm9wdGlvbnMsIGNoYW5nZXMuY29uZmlnLmN1cnJlbnRWYWx1ZT8ub3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU9wdGlvbnNDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsdWUgJiYgIXRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLl9vbkNoYW5nZSgnJyk7XG4gICAgICB0aGlzLnZhbHVlID0gJyc7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoJycpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb24odGhpcy52YWx1ZSk7XG5cbiAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLnVwZGF0ZVN0YXRpY09wdGlvbnModGhpcy5jb25maWcub3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZy5vcHRpb25zKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmNvbmZpZy5vcHRpb25zLmZpbmQob3B0ID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpID8/IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGluaXRPcE1vZGVTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHwgdm9pZCB7XG4gICAgaWYgKCF0aGlzLmV2ZW50QnJva2VyU2VydmljZSkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCcm9rZXJTZXJ2aWNlLmNvbnN1bWU8eyBpc1ZpZXdvbmx5OiBib29sZWFuIH0+KCdvcGVyYXRpb25fbW9kZV9jaGFuZ2VkJykuc3Vic2NyaWJlKHRvcGljID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWc/LnZpZXdvbmx5ID09PSAnYm9vbGVhbicpIHJldHVybjtcblxuICAgICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0b3BpYy5wYXlsb2FkLmlzVmlld29ubHkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cWQtZm9ybS1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbdmlld29ubHldPVwidmlld29ubHlcIlxuICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgW3Rvb2x0aXBdPVwiY29uZmlnPy50b29sdGlwXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1sYWJlbD5cblxuPGRpdiBjbGFzcz1cInFkLWRyb3Bkb3duX193cmFwcGVyXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInFkLWRyb3Bkb3duX19ib3hcIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgKm5nSWY9XCIhcmVhZG9ubHkgJiYgIXZpZXdvbmx5ICYmIGhhc09wdGlvbnNcIlxuICAgIFtxZFBvcG92ZXJPbkNsaWNrXT1cImRyb3Bkb3duTWVudVwiXG4gICAgW3FkUG9wb3ZlckNsb3NlU3RyYXRlZ3ldPVwiJ29uT3V0c2lkZUNsaWNrJ1wiXG4gICAgW3FkUG9wb3ZlclN0b3BQcm9wYWdhdGlvbl09XCJ0cnVlXCJcbiAgICBbcWRQb3BvdmVyRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtxZFBvcG92ZXJNYXhIZWlnaHRdPVwicWRQb3BvdmVyTWF4SGVpZ2h0XCJcbiAgICBbcWRQb3BvdmVyQXV0b1NpemVdPVwieyB3aWR0aDogdHJ1ZSB9XCJcbiAgICBbcWRQb3BvdmVyRW5hYmxlS2V5Q29udHJvbF09XCJ0cnVlXCJcbiAgICAob3BlbmVkKT1cIm9uT3BlbkRyb3Bkb3duKClcIlxuICAgIChjbG9zZWQpPVwib25Ecm9wZG93bkNsb3NlZCgpXCJcbiAgICAoY2xpY2spPVwiZW50ZXJDbGljay5lbWl0KClcIlxuICAgIFtwb3NpdGlvblN0cmF0ZWd5XT1cInBvc2l0aW9uU3RyYXRlZ3lcIlxuICA+XG4gICAge3sgKHNlbGVjdGVkT3B0aW9uPy5pMThuIHwgdHJhbnNsYXRlKSB8fCBwbGFjZWhvbGRlciB9fVxuXG4gICAgPGRpdiBjbGFzcz1cInFkLWRyb3Bkb3duLXN1ZmZpeFwiPlxuICAgICAgPHFkLWljb24gKm5nSWY9XCJoYXNFcnJvclwiIGNsYXNzPVwicWQtZXJyb3ItaWNvblwiIGljb249XCJleGNsYW1hdGlvbkNpcmNsZVNvbGlkXCI+PC9xZC1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seVwiPlxuICA8cWQtZm9ybS1oaW50XG4gICAgW2hpbnRdPVwiaGFzSGludCA/IGNvbmZpZy5oaW50LmkxOG4gOiAnJ1wiXG4gICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgICBbaGludEFjdGlvbl09XCJoaW50QWN0aW9uXCJcbiAgICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4gID48L3FkLWZvcm0taGludD5cbjwvbmctY29udGFpbmVyPlxuXG48cWQtZm9ybS1yZWFkb25seVxuICAqbmdJZj1cInJlYWRvbmx5XCJcbiAgW3ZhbHVlc109XCJbc2VsZWN0ZWRPcHRpb25dXCJcbiAgW3JlYWRvbmx5QWN0aW9uXT1cInJlYWRvbmx5QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1yZWFkb25seT5cblxuPHFkLWZvcm0tdmlld29ubHlcbiAgKm5nSWY9XCJ2aWV3b25seVwiXG4gIFt2YWx1ZXNdPVwiW3NlbGVjdGVkT3B0aW9uXVwiXG4gIFt2aWV3b25seUFjdGlvbl09XCJ2aWV3b25seUFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0tdmlld29ubHk+XG5cbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd25NZW51PlxuICA8cWQtZHJvcGRvd24tb3B0aW9uc1xuICAgIFtmaWx0ZXJdPVwiZmlsdGVyXCJcbiAgICBbZmlsdGVyVGV4dF09XCJmaWx0ZXJUZXh0XCJcbiAgICBbdGVzdElkXT1cInRlc3RJZFwiXG4gICAgW2lkXT1cImlkXCJcbiAgICAoZmlsdGVyQ2hhbmdlKT1cImhhbmRsZUZpbHRlckNoYW5nZSgkZXZlbnQpXCJcbiAgICAob3B0aW9uQ2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiXG4gID48L3FkLWRyb3Bkb3duLW9wdGlvbnM+XG48L25nLXRlbXBsYXRlPlxuIl19
491
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxnQkFBZ0IsRUFFaEIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFMUUsT0FBTyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsYUFBYSxFQUNiLFFBQVEsRUFDUixVQUFVLEVBQ1YsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENB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L0IsTUFBTTtnQkFHUCxRQUFRO3NCQURQLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUl6QyxjQUFjO3NCQURiLFdBQVc7dUJBQUMsb0NBQW9DO2dCQUlqRCxRQUFRO3NCQURQLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUl6QyxjQUFjO3NCQURiLFdBQVc7dUJBQUMsb0NBQW9DO2dCQUtqRCxVQUFVO3NCQUZULFdBQVc7dUJBQUMsMkJBQTJCOztzQkFDdkMsV0FBVzt1QkFBQyxnQ0FBZ0M7Z0JBSzdDLFFBQVE7c0JBRlAsV0FBVzt1QkFBQyx3QkFBd0I7O3NCQUNwQyxXQUFXO3VCQUFDLDRCQUE0QjtnQkFLekMsS0FBSztzQkFGSixXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixLQUFLO2dCQWtCTixlQUFlO3NCQURkLFNBQVM7dUJBQUMsMEJBQTBCO2dCQUlyQyxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMseUJBQXlCO2dCQUlwQyxHQUFHO3NCQURGLFNBQVM7dUJBQUMsS0FBSztnQkFJaEIsTUFBTTtzQkFETCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFLakMsUUFBUTtzQkFGWCxXQUFXO3VCQUFDLHFCQUFxQjs7c0JBQ2pDLFdBQVc7dUJBQUMseUJBQXlCO2dCQWNsQyxVQUFVO3NCQURiLFdBQVc7dUJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTa2lwU2VsZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbENvbnRhaW5lcixcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sRGlyZWN0aXZlLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuXG5pbXBvcnQgeyBRZEZvY3VzYWJsZSB9IGZyb20gJy4uLy4uL2NvcmUvZm9jdXNhYmxlL2ZvY3VzYWJsZSc7XG5pbXBvcnQgeyBRRF9GT0NVU0FCTEVfVE9LRU4gfSBmcm9tICcuLi8uLi9jb3JlL2ZvY3VzYWJsZS9mb2N1c2FibGUudG9rZW4nO1xuaW1wb3J0IHsgUWRGb3JtRHJvcGRvd25Db25maWd1cmF0aW9uLCBRZEZvcm1PcHRpb24gfSBmcm9tICcuLi9tb2RlbC9mb3Jtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgZ2V0RGlzYWJsZWQsXG4gIGdldEZpbHRlcixcbiAgZ2V0SGludEFjdGlvbixcbiAgZ2V0TGFiZWwsXG4gIGdldE9wdGlvbnMsXG4gIGdldFJlYWRvbmx5LFxuICBnZXRSZWFkb25seUFjdGlvbixcbiAgZ2V0Vmlld29ubHksXG4gIGdldFZpZXdvbmx5QWN0aW9uXG59IGZyb20gJy4uL3NoYXJlZC9oZWxwZXJzL2Zvcm1zLmhlbHBlcnMnO1xuaW1wb3J0IHsgaGFzVmFsaWRhdGlvbktleSB9IGZyb20gJy4uL3NoYXJlZC9oZWxwZXJzL2hhcy12YWxpZGF0b3JzLmhlbHBlcnMnO1xuaW1wb3J0IHsgUURfUE9QT1ZFUl9UT1BfRklSU1QgfSBmcm9tICcuLi8uLi9jb3JlL2NvcmUubW9kdWxlJztcbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRXZlbnRCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9ldmVudC1icm9rZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZEZvcm1PcHRpb25zUmVzb2x2ZXJSZWdpc3RyeSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9vcHRpb25zLXJlc29sdmVyLnJlZ2lzdHJ5JztcbmltcG9ydCB7IFFkRm9ybU9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL2Zvcm0tb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRm9ybUtleWJvYXJkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9mb3JtLWtleWJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWREcm9wZG93bk9wdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL29wdGlvbnMvZHJvcGRvd24tb3B0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUWRQb3BvdmVyT25DbGlja0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2NvcmUvcG9wb3Zlci9wb3BvdmVyLW9uLWNsaWNrL3BvcG92ZXItb24tY2xpY2suZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG4vKipcbiAqIFRoZSAqKlFkRHJvcGRvd24qKiBpcyBhbiBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGRyb3Bkb3duIGZvcm0gZWxlbWVudC48YnIgLz5cbiAqIEl0IGNhbiBiZSB1c2VkIHdpdGggUXVhZHJlbCBSZWFjdGl2ZSBGb3JtcyBvciB3aXRoIG1vZGVsIGJpbmRpbmcuXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBSZWFjdGl2ZSBGb3JtcyoqXG4gKlxuICogYGBgdHNcbiAqIGZvcm0gPSBuZXcgUWRGb3JtR3JvdXAoe1xuICogICBkcm9wZG93bjogbmV3IFFkRm9ybUNvbnRyb2woKVxuICogfSk7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICogICA8cWQtZHJvcGRvd24gW2Zvcm1Db250cm9sTmFtZV09XCJkcm9wZG93blwiIFtjb25maWddPVwiY29uZmlnXCI+PC9xZC1kcm9wZG93bj5cbiAqIDwvZm9ybT5cbiAqIGBgYFxuICpcbiAqICMjIyMqKlVzYWdlIHdpdGggTW9kZWwgQmluZGluZyoqXG4gKiBgYGB0c1xuICogdmFsdWU7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxxZC1kcm9wZG93biBbKHZhbHVlKV09XCJ2YWx1ZVwiIFtjb25maWddPVwiY29uZmlnXCI+PC9xZC1kcm9wZG93bj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSxcbiAgICBRZEZvcm1PcHRpb25zUmVzb2x2ZXJSZWdpc3RyeSxcbiAgICBRZEZvcm1LZXlib2FyZFNlcnZpY2UsXG4gICAgUWRGb3JtT3B0aW9uc1NlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBRZERyb3Bkb3duQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBRRF9GT0NVU0FCTEVfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogUWREcm9wZG93bkNvbXBvbmVudFxuICAgIH1cbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ3FkLWRyb3Bkb3duJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUWRGb2N1c2FibGUge1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZm9ybSBpdGVtIHZhbHVlLCBpZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBNb2RlbCBCaW5kaW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiA8cWQtZHJvcGRvd24gWyh2YWx1ZSldPVwiZHJvcGRvd25WYWx1ZVwiIFtjb25maWddPVwiY29uZmlnXCI+PC9xZC1kcm9wZG93bj5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB2YWx1ZSAhPT0gdGhpcy5fdmFsdWU7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAoY2hhbmdlZCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDdXJyZW50IHNlbGVjdGVkIHZhbHVlXG4gICAqL1xuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8/IHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24uYWN0aXZlKT8udmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogSWRlbnRpZmllciB0byBkaXN0aW5ndWlzaCBjbGljayBldmVudHMgb24gc2FtZSBvcHRpb25zIGluIGRpZmZlcmVudCBkcm9wZG93bnMuXG4gICAqIElmIG5vdCBnaXZlbiBhIHJhbmRvbSBpZCBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cbiAgICovXG4gIEBJbnB1dCgpIGlkO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIG5hbWUgY2FuIGJlIGFzc2lnbmVkIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIFJlYWN0aXZlIEZvcm1zLlxuICAgKi9cbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHtcbiAgICogICBcImxhYmVsXCI6IHtcbiAgICogICAgIFwiaTE4blwiOiBcIkRyb3Bkb3duXCJcbiAgICogICB9LFxuICAgKiAgIFwiaGludFwiOiB7XG4gICAqICAgICBcImkxOG5cIjogXCJIZWxwZXJ0ZXh0XCJcbiAgICogICB9LFxuICAgKiAgIFwiZmlsdGVyXCI6IGZhbHNlLFxuICAgKiAgIFwiZGlzYWJsZWRcIjogZmFsc2UsXG4gICAqICAgXCJyZWFkb25seVwiOiBmYWxzZSxcbiAgICogICBcInZpZXdvbmx5XCI6IGZhbHNlLFxuICAgKiAgIFwib3B0aW9uc1wiOiBbXG4gICAqICAgICB7XG4gICAqICAgICAgIFwiaTE4blwiOiBcImkxOG4uaW1wb3J0XCIsXG4gICAqICAgICAgIFwidmFsdWVcIjogXCJpbXBvcnRcIlxuICAgKiAgICAgfSxcbiAgICogICAgIHtcbiAgICogICAgICAgXCJpMThuXCI6IFwiaTE4bi5leHBvcnRcIixcbiAgICogICAgICAgXCJ2YWx1ZVwiOiBcImV4cG9ydFwiXG4gICAqICAgICB9LFxuICAgKiAgICAge1xuICAgKiAgICAgICBcImkxOG5cIjogXCJpMThuLnRyYW5zaXRcIixcbiAgICogICAgICAgXCJ2YWx1ZVwiOiBcInRyYW5zaXRcIixcbiAgICogICAgICAgXCJkaXNhYmxlZFwiOiB0cnVlXG4gICAqICAgICB9XG4gICAqICAgXVxuICAgKiB9XG4gICAqL1xuICBASW5wdXQoKSBjb25maWc6IFFkRm9ybURyb3Bkb3duQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQSBzdGF0aWMgdGVzdCBJRCBmb3IgaW50ZWdyYXRpb24gdGVzdHMgY2FuIGJlIHNldC4gPGJyIC8+XG4gICAqIFRoZSB2YWx1ZSBmb3IgdGhlIEhUTUwgYXR0cmlidXRlIFtkYXRhLXRlc3QtaWRdLlxuICAgKi9cbiAgQElucHV0KCdkYXRhLXRlc3QtaWQnKSB0ZXN0SWQgPSAnZHJvcGRvd24nO1xuXG4gIC8qKlxuICAgKiBUT0RPIFtSRU1PVkVdOiBUaGUgcHJvcGVydHkgYmVsb3cgaXMgQVBJLXJlbGV2YW50IGFuZCAqKm11c3Qgbm90KiogYmUgdXNlZCB0byBzb2x2ZSBzdHlsaW5nIGlzc3Vlcy4gUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIHByb3BlciBzdHlsaW5nIHNvbHV0aW9ucyBhcmUgaW4gcGxhY2UuXG4gICAqL1xuICBASW5wdXQoKSBxZFBvcG92ZXJNYXhIZWlnaHQgPSAyNTA7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHZhbHVlIGhhcyBjaGFuZ2VkLiBSZXR1cm4gdmFsdWUgbWF0Y2hlcyB0aGUgY3VycmVudCB2YWx1ZS5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZC4gTm90ZTogRW1pdHMgb24ga2V5dXAuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgZW50ZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgY2xpY2tSZWFkb25seSBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1JlYWRvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2aWV3b25seSB2YWx1ZSBpcyBjbGlja2VkL3RhcHBlZC4gYGNsaWNrVmlld29ubHkgYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tWaWV3b25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWRyb3Bkb3duLXJlYWRvbmx5JylcbiAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWRyb3Bkb3duLS1yZWFkb25seS1hY3Rpb24nKVxuICByZWFkb25seUFjdGlvbiA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tdmlld29ubHknKVxuICB2aWV3b25seSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tLXZpZXdvbmx5LWFjdGlvbicpXG4gIHZpZXdvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWhpbnQtYWN0aW9uJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi0taGludC1hY3Rpb24nKVxuICBoaW50QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWRpc2FibGVkJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi1kaXNhYmxlZCcpXG4gIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kZW5zZScpXG4gIEBJbnB1dCgpXG4gIGRlbnNlID0gZmFsc2U7XG5cbiAgbGFiZWw6IHN0cmluZztcbiAgZmlsdGVyID0gZmFsc2U7XG4gIG9wdGlvbnM6IFFkRm9ybU9wdGlvbltdO1xuICBmaWx0ZXJUZXh0OiAnJztcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBwb3NpdGlvblN0cmF0ZWd5OiBDb25uZWN0ZWRQb3NpdGlvbltdO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRPcHRpb246IFFkRm9ybU9wdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgQFZpZXdDaGlsZChRZERyb3Bkb3duT3B0aW9uc0NvbXBvbmVudClcbiAgZHJvcGRvd25PcHRpb25zOiBRZERyb3Bkb3duT3B0aW9uc0NvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKFFkUG9wb3Zlck9uQ2xpY2tEaXJlY3RpdmUpXG4gIGRyb3Bkb3duRGlyZWN0aXZlITogUWRQb3BvdmVyT25DbGlja0RpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdib3gnKVxuICBib3g6IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi1vcGVuJylcbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWVycm9yJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi1lcnJvcicpXG4gIGdldCBoYXNFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sID8gdGhpcy5jb250cm9sLnRvdWNoZWQgJiYgdGhpcy5jb250cm9sLmludmFsaWQgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZE9wdGlvbigpOiBRZEZvcm1PcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRPcHRpb247XG4gIH1cblxuICBnZXQgaGFzSGludCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LmhpbnQ/LmkxOG4gJiYgIXRoaXMuY29uZmlnLmhpbnQuZGlzYWJsZWQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWRyb3Bkb3duLXNlbGVjdGVkJylcbiAgZ2V0IGlzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBlcnJvcnMoKTogVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCA/IHRoaXMuY29udHJvbC5lcnJvcnMgOiBbXTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyUHJlZml4ICsgdGhpcy5wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIGhhc1ZhbGlkYXRpb25LZXkodGhpcy5jb250cm9sLCAncmVxdWlyZWQnKTtcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlclByZWZpeCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8ucGxhY2Vob2xkZXJQcmVmaXg/LmkxOG4gJiYgIXRoaXMuY29uZmlnLnBsYWNlaG9sZGVyUHJlZml4LmRpc2FibGVkXG4gICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuY29uZmlnLnBsYWNlaG9sZGVyUHJlZml4LmkxOG4pICsgJyAnXG4gICAgICA6ICcnO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5wbGFjZWhvbGRlcj8uaTE4biAmJiAhdGhpcy5jb25maWcucGxhY2Vob2xkZXIuZGlzYWJsZWRcbiAgICAgID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy5jb25maWcucGxhY2Vob2xkZXIuaTE4bilcbiAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2kxOG4ucWQuZHJvcGRvd24uZGVmYXVsdFZhbHVlJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25FbWl0dGVyU2VydmljZTogUWRGb3Jtc0FjdGlvbkVtaXR0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZXJSZWdpc3RyeTogUWRGb3JtT3B0aW9uc1Jlc29sdmVyUmVnaXN0cnksXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zU2VydmljZTogUWRGb3JtT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBldmVudEJyb2tlclNlcnZpY2U6IFFkRXZlbnRCcm9rZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUURfUE9QT1ZFUl9UT1BfRklSU1QpIGlzUG9wb3ZlclRvcEZpcnN0OiBib29sZWFuXG4gICkge1xuICAgIGlmICghdGhpcy5pZCkgdGhpcy5pZCA9IHV1aWQoKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uU3RyYXRlZ3koaXNQb3BvdmVyVG9wRmlyc3QpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XG4gICAgaWYgKHRoaXMuY29uZmlnKSB0aGlzLmxvYWRPcHRpb25zRm9yQ3VycmVudENvbmZpZygpO1xuICAgIHRoaXMucmVzb2x2ZUNvbnRyb2woKTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKHRoaXMudmFsdWUpO1xuXG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5hY3Rpb25FbWl0dGVyU2VydmljZS5oaW50RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja0hpbnQuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5hY3Rpb25FbWl0dGVyU2VydmljZS5yZWFkb25seUV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tSZWFkb25seS5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLnZpZXdvbmx5RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja1ZpZXdvbmx5LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuaW5pdE9wTW9kZVN1YnNjcmlwdGlvbigpKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jb25maWcpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgICBpZiAodGhpcy5oYXZlT3B0aW9uc0NoYW5nZWQoY2hhbmdlcykpIHRoaXMuaGFuZGxlT3B0aW9uc0NoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub3B0aW9uc1NlcnZpY2UucmVzZXQoKTtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmJveC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb24odmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICBoYXNPcHRpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNTZXJ2aWNlLmhhc09wdGlvbnMoKTtcbiAgfVxuXG4gIGhhbmRsZU9wdGlvblNlbGVjdGVkKG9wdGlvbjogUWRGb3JtT3B0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgdGhpcy5fc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XG4gICAgdGhpcy5fb25DaGFuZ2Uob3B0aW9uLnZhbHVlKTtcbiAgICB0aGlzLl9vblRvdWNoKG9wdGlvbi52YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG9wdGlvbi52YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVDbGljayhvcHRpb246IFFkRm9ybU9wdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlKG9wdGlvbi52YWx1ZSk7XG4gICAgdGhpcy5fb25Ub3VjaChvcHRpb24udmFsdWUpO1xuICAgIHRoaXMudmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgdGhpcy5fc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG9wdGlvbi52YWx1ZSk7XG4gICAgdGhpcy5kcm9wZG93bkRpcmVjdGl2ZT8uY2xvc2UoKTtcbiAgfVxuXG4gIGhhbmRsZUZpbHRlckNoYW5nZSgkZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlclRleHQgPSAkZXZlbnQ7XG4gICAgdGhpcy5vcHRpb25zU2VydmljZS5sb2FkKCRldmVudCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvbk9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5sb2FkT3B0aW9uc0ZvckN1cnJlbnRDb25maWcoKTtcbiAgICB0aGlzLmRyb3Bkb3duT3B0aW9ucz8ub25PcGVuKCk7XG4gIH1cblxuICBvbkRyb3Bkb3duQ2xvc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuX3ZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICAgIHRoaXMuX29uVG91Y2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFBvc2l0aW9uU3RyYXRlZ3koaXNQb3BvdmVyVG9wRmlyc3Q6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBhcnI6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgd2VpZ2h0OiAwLjhcbiAgICAgIH1cbiAgICBdO1xuXG4gICAgdGhpcy5wb3NpdGlvblN0cmF0ZWd5ID0gaXNQb3BvdmVyVG9wRmlyc3QgPyBhcnIuc2xpY2UoKS5yZXZlcnNlKCkgOiBhcnI7XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcHRpb25zRm9yQ3VycmVudENvbmZpZygpOiB2b2lkIHtcbiAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLmluaXRpYWxpemUodGhpcy5jb25maWcpO1xuICAgIHRoaXMub3B0aW9uc1NlcnZpY2UudmFsaWRhdGVPcHRpb25zU2V0dXAoJ1FkRHJvcGRvd24nKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUNvbnRyb2woKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udHJvbENvbnRhaW5lciAmJiB0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgdGhpcy5jb250cm9sID0gdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3RpdmUgPSB0aGlzLmluamVjdG9yLmdldChGb3JtQ29udHJvbERpcmVjdGl2ZSwgbnVsbCk7XG4gICAgaWYgKGRpcmVjdGl2ZSkge1xuICAgICAgdGhpcy5jb250cm9sID0gZGlyZWN0aXZlLmNvbnRyb2w7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS53YXJuKCdRRC1VSSB8IFFkRHJvcGRvd25Db21wb25lbnQgLSBNaXNzaW5nIEZvcm1Db250cm9sTmFtZSBkaXJlY3RpdmUgZnJvbSBob3N0IGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudCcpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMubGFiZWwgPSBnZXRMYWJlbCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5yZWFkb25seSA9IGdldFJlYWRvbmx5KHRoaXMuY29uZmlnLCB0aGlzLnJlYWRvbmx5KTtcbiAgICB0aGlzLnZpZXdvbmx5ID0gZ2V0Vmlld29ubHkodGhpcy5jb25maWcsIHRoaXMudmlld29ubHkpO1xuICAgIHRoaXMuaGludEFjdGlvbiA9IGdldEhpbnRBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMucmVhZG9ubHlBY3Rpb24gPSBnZXRSZWFkb25seUFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy52aWV3b25seUFjdGlvbiA9IGdldFZpZXdvbmx5QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmRpc2FibGVkID0gZ2V0RGlzYWJsZWQodGhpcy5jb25maWcpIHx8ICEhdGhpcy5jb250cm9sPy5kaXNhYmxlZDtcbiAgICB0aGlzLmZpbHRlciA9IGdldEZpbHRlcih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zID0gZ2V0T3B0aW9ucyh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGhhdmVPcHRpb25zQ2hhbmdlZChjaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc0VxdWFsKGNoYW5nZXMuY29uZmlnLnByZXZpb3VzVmFsdWU/Lm9wdGlvbnMsIGNoYW5nZXMuY29uZmlnLmN1cnJlbnRWYWx1ZT8ub3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU9wdGlvbnNDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsdWUgJiYgIXRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLl9vbkNoYW5nZSgnJyk7XG4gICAgICB0aGlzLnZhbHVlID0gJyc7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoJycpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb24odGhpcy52YWx1ZSk7XG5cbiAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLnVwZGF0ZVN0YXRpY09wdGlvbnModGhpcy5jb25maWcub3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZy5vcHRpb25zKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmNvbmZpZy5vcHRpb25zLmZpbmQob3B0ID0+IG9wdC52YWx1ZSA9PT0gdmFsdWUpID8/IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGluaXRPcE1vZGVTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHwgdm9pZCB7XG4gICAgaWYgKCF0aGlzLmV2ZW50QnJva2VyU2VydmljZSkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCcm9rZXJTZXJ2aWNlLmNvbnN1bWU8eyBpc1ZpZXdvbmx5OiBib29sZWFuIH0+KCdvcGVyYXRpb25fbW9kZV9jaGFuZ2VkJykuc3Vic2NyaWJlKHRvcGljID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWc/LnZpZXdvbmx5ID09PSAnYm9vbGVhbicpIHJldHVybjtcblxuICAgICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0b3BpYy5wYXlsb2FkLmlzVmlld29ubHkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cWQtZm9ybS1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbdmlld29ubHldPVwidmlld29ubHlcIlxuICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgW3Rvb2x0aXBdPVwiY29uZmlnPy50b29sdGlwXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1sYWJlbD5cblxuPGRpdiBjbGFzcz1cInFkLWRyb3Bkb3duX193cmFwcGVyXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInFkLWRyb3Bkb3duX19ib3hcIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgKm5nSWY9XCIhcmVhZG9ubHkgJiYgIXZpZXdvbmx5ICYmIGhhc09wdGlvbnNcIlxuICAgIFtxZFBvcG92ZXJPbkNsaWNrXT1cImRyb3Bkb3duTWVudVwiXG4gICAgW3FkUG9wb3ZlckNsb3NlU3RyYXRlZ3ldPVwiJ29uT3V0c2lkZUNsaWNrJ1wiXG4gICAgW3FkUG9wb3ZlclN0b3BQcm9wYWdhdGlvbl09XCJ0cnVlXCJcbiAgICBbcWRQb3BvdmVyRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtxZFBvcG92ZXJNYXhIZWlnaHRdPVwicWRQb3BvdmVyTWF4SGVpZ2h0XCJcbiAgICBbcWRQb3BvdmVyQXV0b1NpemVdPVwieyB3aWR0aDogdHJ1ZSB9XCJcbiAgICBbcWRQb3BvdmVyRW5hYmxlS2V5Q29udHJvbF09XCJ0cnVlXCJcbiAgICAob3BlbmVkKT1cIm9uT3BlbkRyb3Bkb3duKClcIlxuICAgIChjbG9zZWQpPVwib25Ecm9wZG93bkNsb3NlZCgpXCJcbiAgICAoY2xpY2spPVwiZW50ZXJDbGljay5lbWl0KClcIlxuICAgIFtwb3NpdGlvblN0cmF0ZWd5XT1cInBvc2l0aW9uU3RyYXRlZ3lcIlxuICA+XG4gICAge3sgKHNlbGVjdGVkT3B0aW9uPy5pMThuIHwgdHJhbnNsYXRlKSB8fCBwbGFjZWhvbGRlciB9fVxuXG4gICAgPGRpdiBjbGFzcz1cInFkLWRyb3Bkb3duLXN1ZmZpeFwiPlxuICAgICAgPHFkLWljb24gKm5nSWY9XCJoYXNFcnJvclwiIGNsYXNzPVwicWQtZXJyb3ItaWNvblwiIGljb249XCJleGNsYW1hdGlvbkNpcmNsZVNvbGlkXCI+PC9xZC1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48cWQtZm9ybS1oaW50XG4gICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seSAmJiAoaGFzSGludCB8fCBoYXNFcnJvcilcIlxuICBbaGludF09XCJoYXNIaW50ID8gY29uZmlnLmhpbnQuaTE4biA6ICcnXCJcbiAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gIFtoYXNFcnJvcl09XCJoYXNFcnJvclwiXG4gIFtoaW50QWN0aW9uXT1cImhpbnRBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLWhpbnQ+XG5cbjxxZC1mb3JtLXJlYWRvbmx5XG4gICpuZ0lmPVwicmVhZG9ubHlcIlxuICBbdmFsdWVzXT1cIltzZWxlY3RlZE9wdGlvbl1cIlxuICBbcmVhZG9ubHlBY3Rpb25dPVwicmVhZG9ubHlBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLXJlYWRvbmx5PlxuXG48cWQtZm9ybS12aWV3b25seVxuICAqbmdJZj1cInZpZXdvbmx5XCJcbiAgW3ZhbHVlc109XCJbc2VsZWN0ZWRPcHRpb25dXCJcbiAgW3ZpZXdvbmx5QWN0aW9uXT1cInZpZXdvbmx5QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS12aWV3b25seT5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93bk1lbnU+XG4gIDxxZC1kcm9wZG93bi1vcHRpb25zXG4gICAgW2ZpbHRlcl09XCJmaWx0ZXJcIlxuICAgIFtmaWx0ZXJUZXh0XT1cImZpbHRlclRleHRcIlxuICAgIFt0ZXN0SWRdPVwidGVzdElkXCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIChmaWx0ZXJDaGFuZ2UpPVwiaGFuZGxlRmlsdGVyQ2hhbmdlKCRldmVudClcIlxuICAgIChvcHRpb25DbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgPjwvcWQtZHJvcGRvd24tb3B0aW9ucz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=