@c8y/ngx-components 1017.0.8 → 1017.0.10

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 (79) hide show
  1. package/core/dynamic-component/dynamic-component.component.d.ts +1 -0
  2. package/core/dynamic-component/dynamic-component.model.d.ts +45 -9
  3. package/esm2020/actility-device-registration/actility-device-registration.component.mjs +3 -3
  4. package/esm2020/context-dashboard/context-dashboard.component.mjs +3 -3
  5. package/esm2020/context-dashboard/dashboard-detail.component.mjs +3 -3
  6. package/esm2020/context-dashboard/device-info-dashboard/device-info-dashboard.component.mjs +43 -51
  7. package/esm2020/context-dashboard/widget-preview.component.mjs +3 -3
  8. package/esm2020/core/authentication/sms-challenge.component.mjs +3 -3
  9. package/esm2020/core/authentication/totp-challenge.component.mjs +3 -3
  10. package/esm2020/core/breadcrumb/breadcrumb-outlet.component.mjs +3 -3
  11. package/esm2020/core/dashboard/dashboard-child.component.mjs +3 -3
  12. package/esm2020/core/dashboard/widget-time-context.component.mjs +3 -3
  13. package/esm2020/core/data-grid/data-grid.component.mjs +3 -3
  14. package/esm2020/core/date-picker/date-picker.component.mjs +3 -3
  15. package/esm2020/core/drop-area/drop-area.component.mjs +3 -3
  16. package/esm2020/core/dynamic-component/dynamic-component.component.mjs +21 -5
  17. package/esm2020/core/dynamic-component/dynamic-component.model.mjs +7 -1
  18. package/esm2020/core/file-picker/file-picker.component.mjs +3 -3
  19. package/esm2020/core/header/application/app-switcher.component.mjs +3 -3
  20. package/esm2020/core/login/credentials.component.mjs +3 -3
  21. package/esm2020/core/login/login.component.mjs +3 -3
  22. package/esm2020/core/modal/modal.component.mjs +3 -3
  23. package/esm2020/core/select/typeahead.component.mjs +3 -3
  24. package/esm2020/device-grid/columns/alarms.cell-renderer.component.mjs +3 -3
  25. package/esm2020/loriot-device-registration/loriot-device-registration-button.component.mjs +3 -1
  26. package/esm2020/loriot-device-registration/loriot-device-registration.component.mjs +3 -3
  27. package/esm2020/operations/bulk-operations-list/bulk-operations-list.component.mjs +3 -3
  28. package/esm2020/operations/operations-list/operations-list-item.component.mjs +3 -3
  29. package/esm2020/operations/operations-list/operations-list.component.mjs +3 -3
  30. package/esm2020/register-device/bulk/bulk-device-registration-modal.component.mjs +3 -3
  31. package/esm2020/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.mjs +3 -3
  32. package/esm2020/register-device/extensible/single/extensible-device-registration-modal.component.mjs +3 -3
  33. package/esm2020/register-device/general/general-device-registration.component.mjs +3 -3
  34. package/esm2020/repository/software/device-tab/device-software-list.component.mjs +3 -3
  35. package/esm2020/repository/software/device-tab/installed-software.component.mjs +3 -3
  36. package/esm2020/repository/software/list/add-software-modal.component.mjs +3 -3
  37. package/esm2020/sigfox-device-registration/sigfox-device-registration.component.mjs +3 -3
  38. package/fesm2015/c8y-ngx-components-actility-device-registration.mjs +2 -2
  39. package/fesm2015/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  40. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +48 -56
  41. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  42. package/fesm2015/c8y-ngx-components-device-grid.mjs +2 -2
  43. package/fesm2015/c8y-ngx-components-device-grid.mjs.map +1 -1
  44. package/fesm2015/c8y-ngx-components-loriot-device-registration.mjs +4 -2
  45. package/fesm2015/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  46. package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.mjs +2 -2
  47. package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  48. package/fesm2015/c8y-ngx-components-operations-operations-list.mjs +4 -4
  49. package/fesm2015/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  50. package/fesm2015/c8y-ngx-components-register-device.mjs +8 -8
  51. package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
  52. package/fesm2015/c8y-ngx-components-repository-software.mjs +6 -6
  53. package/fesm2015/c8y-ngx-components-repository-software.mjs.map +1 -1
  54. package/fesm2015/c8y-ngx-components-sigfox-device-registration.mjs +2 -2
  55. package/fesm2015/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  56. package/fesm2015/c8y-ngx-components.mjs +72 -46
  57. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  58. package/fesm2020/c8y-ngx-components-actility-device-registration.mjs +2 -2
  59. package/fesm2020/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  60. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +48 -56
  61. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  62. package/fesm2020/c8y-ngx-components-device-grid.mjs +2 -2
  63. package/fesm2020/c8y-ngx-components-device-grid.mjs.map +1 -1
  64. package/fesm2020/c8y-ngx-components-loriot-device-registration.mjs +4 -2
  65. package/fesm2020/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  66. package/fesm2020/c8y-ngx-components-operations-bulk-operations-list.mjs +2 -2
  67. package/fesm2020/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  68. package/fesm2020/c8y-ngx-components-operations-operations-list.mjs +4 -4
  69. package/fesm2020/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  70. package/fesm2020/c8y-ngx-components-register-device.mjs +8 -8
  71. package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
  72. package/fesm2020/c8y-ngx-components-repository-software.mjs +6 -6
  73. package/fesm2020/c8y-ngx-components-repository-software.mjs.map +1 -1
  74. package/fesm2020/c8y-ngx-components-sigfox-device-registration.mjs +2 -2
  75. package/fesm2020/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  76. package/fesm2020/c8y-ngx-components.mjs +54 -32
  77. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  78. package/locales/locales.pot +6 -9
  79. package/package.json +2 -2
@@ -82,10 +82,10 @@ export class FilePickerComponent {
82
82
  }
83
83
  }
84
84
  FilePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
85
- FilePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FilePickerComponent, selector: "c8y-file-picker", inputs: { maxAllowedFiles: "maxAllowedFiles", uploadChoice: "uploadChoice", fileUrl: "fileUrl", fileBinary: "fileBinary", config: "config", fileUrlPopover: "fileUrlPopover" }, outputs: { onFilesPicked: "onFilesPicked" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "accept"], outputs: ["dropped"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }] });
85
+ FilePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FilePickerComponent, selector: "c8y-file-picker", inputs: { maxAllowedFiles: "maxAllowedFiles", uploadChoice: "uploadChoice", fileUrl: "fileUrl", fileBinary: "fileBinary", config: "config", fileUrlPopover: "fileUrlPopover" }, outputs: { onFilesPicked: "onFilesPicked" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "accept"], outputs: ["dropped"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }] });
86
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilePickerComponent, decorators: [{
87
87
  type: Component,
88
- args: [{ selector: 'c8y-file-picker', template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n" }]
88
+ args: [{ selector: 'c8y-file-picker', template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n" }]
89
89
  }], propDecorators: { dropArea: [{
90
90
  type: ViewChild,
91
91
  args: [DropAreaComponent, { static: true }]
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
104
104
  }], fileUrlPopover: [{
105
105
  type: Input
106
106
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9maWxlLXBpY2tlci9maWxlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7QUFHcEM7Ozs7Ozs7Ozs7O0dBV0c7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBTVksa0JBQWEsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvRCxvQkFBZSxHQUFXLFFBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFpQyxjQUFjLENBQUM7UUFHNUQsV0FBTSxHQUFxQixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQWlFekQ7SUF4REM7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsWUFBMkI7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDdEIsWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLEdBQUcsRUFBRSxTQUFTO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFlBQVksRUFBRSxTQUFTO1NBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZSxDQUFDLE1BQU07UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixHQUFHLEVBQUUsTUFBTTtTQUNaLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O2dIQXZFVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw4VEFDbkIsaUJBQWlCLDhEQ3hCOUIsMG5FQTBFQTsyRkRuRGEsbUJBQW1CO2tCQUovQixTQUFTOytCQUNFLGlCQUFpQjs4QkFJcUIsUUFBUTtzQkFBdkQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ3BDLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0UsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcm9wcGVkRmlsZSwgRHJvcEFyZWFDb21wb25lbnQgfSBmcm9tICcuLi9kcm9wLWFyZWEvZHJvcC1hcmVhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaWNrZWRGaWxlcyB9IGZyb20gJy4vZmlsZS1waWNrZXIubW9kZWwnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBGaWxlUGlja2VyQ29uZmlnIH0gZnJvbSAnLi9maWxlLXBpY2tlci1jb25maWcubW9kZWwnO1xuXG4vKipcbiAqIFVzZXIgY2FuIHVwbG9hZCBhIGJpbmFyeSBkaXJlY3RseSBvciB1c2UgYW4gVVJMLlxuICpcbiAqICMjIFVzYWdlIEV4YW1wbGU6XG4gKlxuICogYGBgaHRtbFxuICogPGRpdj5cbiAqIDxjOHktZmlsZS1waWNrZXIgW21heEFsbG93ZWRGaWxlc109XCIxXCIgKG9uRmlsZXNQaWNrZWQpPVwib25GaWxlKCRldmVudClcIj5cbiAqIDwvYzh5LWZpbGUtcGlja2VyPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmlsZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKERyb3BBcmVhQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wQXJlYTogRHJvcEFyZWFDb21wb25lbnQ7XG4gIEBPdXRwdXQoKSBvbkZpbGVzUGlja2VkOiBFdmVudEVtaXR0ZXI8UGlja2VkRmlsZXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXM6IG51bWJlciA9IEluZmluaXR5O1xuICBASW5wdXQoKSB1cGxvYWRDaG9pY2U6ICd1cGxvYWRCaW5hcnknIHwgJ3VwbG9hZFVybCcgPSAndXBsb2FkQmluYXJ5JztcbiAgQElucHV0KCkgZmlsZVVybDogc3RyaW5nO1xuICBASW5wdXQoKSBmaWxlQmluYXJ5OiBEcm9wcGVkRmlsZTtcbiAgQElucHV0KCkgY29uZmlnOiBGaWxlUGlja2VyQ29uZmlnID0geyBtYXhsZW5ndGg6IDIwNDggfTtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgc3RyaW5nIHRvIGJlIGRpc3BsYXllZCBpbiBhIHBvcG92ZXIuXG4gICAqL1xuICBASW5wdXQoKSBmaWxlVXJsUG9wb3Zlcjogc3RyaW5nO1xuXG4gIGRyb3BwZWRGaWxlczogRHJvcHBlZEZpbGVbXTtcbiAgcHJpdmF0ZSBmaWxlVG9TYXZlOiBQaWNrZWRGaWxlcztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsZUJpbmFyeSkge1xuICAgICAgdGhpcy5kcm9wcGVkRmlsZXMgPSBbdGhpcy5maWxlQmluYXJ5XTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIGJ5IGRyb3BwZWQgZmlsZSBpbiBjb21wb25lbnQgYW5kIHBhc3MgaXQgaW50byBkcm9wLWFyZWEgY29tcG9uZW50LlxuICAgKi9cbiAgb25GaWxlRHJvcHBlZChkcm9wcGVkRmlsZXM6IERyb3BwZWRGaWxlW10pOiB2b2lkIHtcbiAgICB0aGlzLm9uRmlsZXNQaWNrZWQuZW1pdCh7XG4gICAgICBkcm9wcGVkRmlsZXNcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiB1c2VyIGNoYW5nZXMgdXBsb2FkIGNob2ljZSwgZnJvbSB1cGxvYWQgdXJsIHRvIHVwbG9hZCBiaW5hcnkuXG4gICAqL1xuICBjbGVhcklucHV0RnJvbVVybCgpOiB2b2lkIHtcbiAgICBkZWxldGUgdGhpcy5maWxlVXJsO1xuICAgIHRoaXMuZmlsZVRvU2F2ZSA9IHtcbiAgICAgIHVybDogdW5kZWZpbmVkXG4gICAgfTtcbiAgICB0aGlzLm9uRmlsZXNQaWNrZWQuZW1pdCh0aGlzLmZpbGVUb1NhdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIHVzZXIgY2hhbmdlcyB1cGxvYWQgY2hvaWNlLCB0byBhdm9pZCBjdW11bGF0aW9uIG9mIGRyb3BwZWRGaWxlcy5cbiAgICovXG4gIGNsZWFyU2VsZWN0ZWRGaWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3BBcmVhLm9uRGVsZXRlKCk7XG4gICAgdGhpcy5maWxlVG9TYXZlID0ge1xuICAgICAgZHJvcHBlZEZpbGVzOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIHRoaXMub25GaWxlc1BpY2tlZC5lbWl0KHRoaXMuZmlsZVRvU2F2ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gdXNlciBwdXRzIGJpbmFyeSdzIHVybCB0byB1cGxvYWQuXG4gICAqL1xuICBvbkZpbGVVcmxDaGFuZ2UodXJsU3RyKTogdm9pZCB7XG4gICAgdGhpcy5maWxlVG9TYXZlID0ge1xuICAgICAgdXJsOiB1cmxTdHJcbiAgICB9O1xuICAgIHRoaXMub25GaWxlc1BpY2tlZC5lbWl0KHRoaXMuZmlsZVRvU2F2ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIHBvcG92ZXIgdG8gZGlzcGxheS5cbiAgICovXG4gIGlzUG9wb3ZlclVzZWQoKSB7XG4gICAgcmV0dXJuICFpc0VtcHR5KHRoaXMuZmlsZVVybFBvcG92ZXIpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWwgdGl0bGU9XCJ7eyAnVXBsb2FkIGEgYmluYXJ5JyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZVwiPlxuICAgIDxpbnB1dFxuICAgICAgI3JhZGlvXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJ1cGxvYWRCaW5hcnlcIlxuICAgICAgbmFtZT1cInVwbG9hZENob2ljZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInVwbG9hZENob2ljZVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dEZyb21VcmwoKVwiXG4gICAgLz5cbiAgICA8c3Bhbj48L3NwYW4+XG4gICAgPHNwYW4+e3sgJ1VwbG9hZCBhIGJpbmFyeScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvbGFiZWw+XG4gIDxsYWJlbCB0aXRsZT1cInt7ICdQcm92aWRlIGEgZmlsZSBwYXRoJyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZSBtLWwtOFwiPlxuICAgIDxpbnB1dFxuICAgICAgI3JhZGlvXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJ1cGxvYWRVcmxcIlxuICAgICAgbmFtZT1cInVwbG9hZENob2ljZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInVwbG9hZENob2ljZVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJTZWxlY3RlZEZpbGVzKClcIlxuICAgIC8+XG4gICAgPHNwYW4+PC9zcGFuPlxuICAgIDxzcGFuPlxuICAgICAge3sgJ1Byb3ZpZGUgYSBmaWxlIHBhdGgnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiaXNQb3BvdmVyVXNlZCgpXCJcbiAgICAgIGNsYXNzPVwiYnRuLWhlbHBcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBwb3BvdmVyPVwie3sgZmlsZVVybFBvcG92ZXIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPlxuICAgICAgPGkgW2M4eUljb25dPVwiJ3F1ZXN0aW9uLWNpcmNsZS1vJ1wiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9sYWJlbD5cbjwvZGl2PlxuXG48ZGl2IFtoaWRkZW5dPVwidXBsb2FkQ2hvaWNlICE9PSAndXBsb2FkQmluYXJ5J1wiPlxuICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLTBcIj5cbiAgICA8Yzh5LWRyb3AtYXJlYVxuICAgICAgY2xhc3M9XCJkcm9wLWFyZWEtc21cIlxuICAgICAgKGRyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICAgIFt0aXRsZV09XCInRHJvcCBmaWxlIG9yIGNsaWNrIHRvIGJyb3dzZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW21heEFsbG93ZWRGaWxlc109XCJtYXhBbGxvd2VkRmlsZXNcIlxuICAgICAgW2ZpbGVzXT1cImRyb3BwZWRGaWxlc1wiXG4gICAgPjwvYzh5LWRyb3AtYXJlYT5cbiAgPC9jOHktZm9ybS1ncm91cD5cbjwvZGl2PlxuXG48ZGl2IFtoaWRkZW5dPVwidXBsb2FkQ2hvaWNlICE9PSAndXBsb2FkVXJsJ1wiPlxuICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibS1iLTQgcC1iLThcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImdsb2JlXCI+PC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgbmFtZT1cImZpbGVVcmxcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsZVVybFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWxlVXJsQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IGh0dHA6Ly9leGFtcGxlLmNvbS9iaW5hcnkuemlwXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCJ7eyBjb25maWcubWF4bGVuZ3RoIH19XCJcbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG48L2Rpdj5cbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9maWxlLXBpY2tlci9maWxlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7QUFHcEM7Ozs7Ozs7Ozs7O0dBV0c7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBSmhDO1FBTVksa0JBQWEsR0FBOEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvRCxvQkFBZSxHQUFXLFFBQVEsQ0FBQztRQUNuQyxpQkFBWSxHQUFpQyxjQUFjLENBQUM7UUFHNUQsV0FBTSxHQUFxQixFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQWlFekQ7SUF4REM7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhLENBQUMsWUFBMkI7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDdEIsWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLEdBQUcsRUFBRSxTQUFTO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFlBQVksRUFBRSxTQUFTO1NBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZSxDQUFDLE1BQU07UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixHQUFHLEVBQUUsTUFBTTtTQUNaLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O2dIQXZFVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw4VEFDbkIsaUJBQWlCLDhEQ3hCOUIsa3NFQTJFQTsyRkRwRGEsbUJBQW1CO2tCQUovQixTQUFTOytCQUNFLGlCQUFpQjs4QkFJcUIsUUFBUTtzQkFBdkQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ3BDLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0UsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcm9wcGVkRmlsZSwgRHJvcEFyZWFDb21wb25lbnQgfSBmcm9tICcuLi9kcm9wLWFyZWEvZHJvcC1hcmVhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaWNrZWRGaWxlcyB9IGZyb20gJy4vZmlsZS1waWNrZXIubW9kZWwnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBGaWxlUGlja2VyQ29uZmlnIH0gZnJvbSAnLi9maWxlLXBpY2tlci1jb25maWcubW9kZWwnO1xuXG4vKipcbiAqIFVzZXIgY2FuIHVwbG9hZCBhIGJpbmFyeSBkaXJlY3RseSBvciB1c2UgYW4gVVJMLlxuICpcbiAqICMjIFVzYWdlIEV4YW1wbGU6XG4gKlxuICogYGBgaHRtbFxuICogPGRpdj5cbiAqIDxjOHktZmlsZS1waWNrZXIgW21heEFsbG93ZWRGaWxlc109XCIxXCIgKG9uRmlsZXNQaWNrZWQpPVwib25GaWxlKCRldmVudClcIj5cbiAqIDwvYzh5LWZpbGUtcGlja2VyPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmlsZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKERyb3BBcmVhQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wQXJlYTogRHJvcEFyZWFDb21wb25lbnQ7XG4gIEBPdXRwdXQoKSBvbkZpbGVzUGlja2VkOiBFdmVudEVtaXR0ZXI8UGlja2VkRmlsZXM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtYXhBbGxvd2VkRmlsZXM6IG51bWJlciA9IEluZmluaXR5O1xuICBASW5wdXQoKSB1cGxvYWRDaG9pY2U6ICd1cGxvYWRCaW5hcnknIHwgJ3VwbG9hZFVybCcgPSAndXBsb2FkQmluYXJ5JztcbiAgQElucHV0KCkgZmlsZVVybDogc3RyaW5nO1xuICBASW5wdXQoKSBmaWxlQmluYXJ5OiBEcm9wcGVkRmlsZTtcbiAgQElucHV0KCkgY29uZmlnOiBGaWxlUGlja2VyQ29uZmlnID0geyBtYXhsZW5ndGg6IDIwNDggfTtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgc3RyaW5nIHRvIGJlIGRpc3BsYXllZCBpbiBhIHBvcG92ZXIuXG4gICAqL1xuICBASW5wdXQoKSBmaWxlVXJsUG9wb3Zlcjogc3RyaW5nO1xuXG4gIGRyb3BwZWRGaWxlczogRHJvcHBlZEZpbGVbXTtcbiAgcHJpdmF0ZSBmaWxlVG9TYXZlOiBQaWNrZWRGaWxlcztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsZUJpbmFyeSkge1xuICAgICAgdGhpcy5kcm9wcGVkRmlsZXMgPSBbdGhpcy5maWxlQmluYXJ5XTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIGJ5IGRyb3BwZWQgZmlsZSBpbiBjb21wb25lbnQgYW5kIHBhc3MgaXQgaW50byBkcm9wLWFyZWEgY29tcG9uZW50LlxuICAgKi9cbiAgb25GaWxlRHJvcHBlZChkcm9wcGVkRmlsZXM6IERyb3BwZWRGaWxlW10pOiB2b2lkIHtcbiAgICB0aGlzLm9uRmlsZXNQaWNrZWQuZW1pdCh7XG4gICAgICBkcm9wcGVkRmlsZXNcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiB1c2VyIGNoYW5nZXMgdXBsb2FkIGNob2ljZSwgZnJvbSB1cGxvYWQgdXJsIHRvIHVwbG9hZCBiaW5hcnkuXG4gICAqL1xuICBjbGVhcklucHV0RnJvbVVybCgpOiB2b2lkIHtcbiAgICBkZWxldGUgdGhpcy5maWxlVXJsO1xuICAgIHRoaXMuZmlsZVRvU2F2ZSA9IHtcbiAgICAgIHVybDogdW5kZWZpbmVkXG4gICAgfTtcbiAgICB0aGlzLm9uRmlsZXNQaWNrZWQuZW1pdCh0aGlzLmZpbGVUb1NhdmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIHVzZXIgY2hhbmdlcyB1cGxvYWQgY2hvaWNlLCB0byBhdm9pZCBjdW11bGF0aW9uIG9mIGRyb3BwZWRGaWxlcy5cbiAgICovXG4gIGNsZWFyU2VsZWN0ZWRGaWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3BBcmVhLm9uRGVsZXRlKCk7XG4gICAgdGhpcy5maWxlVG9TYXZlID0ge1xuICAgICAgZHJvcHBlZEZpbGVzOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIHRoaXMub25GaWxlc1BpY2tlZC5lbWl0KHRoaXMuZmlsZVRvU2F2ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gdXNlciBwdXRzIGJpbmFyeSdzIHVybCB0byB1cGxvYWQuXG4gICAqL1xuICBvbkZpbGVVcmxDaGFuZ2UodXJsU3RyKTogdm9pZCB7XG4gICAgdGhpcy5maWxlVG9TYXZlID0ge1xuICAgICAgdXJsOiB1cmxTdHJcbiAgICB9O1xuICAgIHRoaXMub25GaWxlc1BpY2tlZC5lbWl0KHRoaXMuZmlsZVRvU2F2ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIHBvcG92ZXIgdG8gZGlzcGxheS5cbiAgICovXG4gIGlzUG9wb3ZlclVzZWQoKSB7XG4gICAgcmV0dXJuICFpc0VtcHR5KHRoaXMuZmlsZVVybFBvcG92ZXIpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWwgdGl0bGU9XCJ7eyAnVXBsb2FkIGEgYmluYXJ5JyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZVwiPlxuICAgIDxpbnB1dFxuICAgICAgI3JhZGlvXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJ1cGxvYWRCaW5hcnlcIlxuICAgICAgbmFtZT1cInVwbG9hZENob2ljZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInVwbG9hZENob2ljZVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dEZyb21VcmwoKVwiXG4gICAgLz5cbiAgICA8c3Bhbj48L3NwYW4+XG4gICAgPHNwYW4+e3sgJ1VwbG9hZCBhIGJpbmFyeScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvbGFiZWw+XG4gIDxsYWJlbCB0aXRsZT1cInt7ICdQcm92aWRlIGEgZmlsZSBwYXRoJyB8IHRyYW5zbGF0ZSB9fVwiIGNsYXNzPVwiYzh5LXJhZGlvIHJhZGlvLWlubGluZSBtLWwtOFwiPlxuICAgIDxpbnB1dFxuICAgICAgI3JhZGlvXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJ1cGxvYWRVcmxcIlxuICAgICAgbmFtZT1cInVwbG9hZENob2ljZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInVwbG9hZENob2ljZVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJTZWxlY3RlZEZpbGVzKClcIlxuICAgIC8+XG4gICAgPHNwYW4+PC9zcGFuPlxuICAgIDxzcGFuPlxuICAgICAge3sgJ1Byb3ZpZGUgYSBmaWxlIHBhdGgnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiaXNQb3BvdmVyVXNlZCgpXCJcbiAgICAgIGNsYXNzPVwiYnRuLWhlbHBcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBwb3BvdmVyPVwie3sgZmlsZVVybFBvcG92ZXIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPlxuICAgICAgPGkgW2M4eUljb25dPVwiJ3F1ZXN0aW9uLWNpcmNsZS1vJ1wiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9sYWJlbD5cbjwvZGl2PlxuXG48ZGl2IFtoaWRkZW5dPVwidXBsb2FkQ2hvaWNlICE9PSAndXBsb2FkQmluYXJ5J1wiPlxuICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLTBcIj5cbiAgICA8Yzh5LWRyb3AtYXJlYVxuICAgICAgY2xhc3M9XCJkcm9wLWFyZWEtc21cIlxuICAgICAgKGRyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICAgIFt0aXRsZV09XCInRHJvcCBmaWxlIG9yIGNsaWNrIHRvIGJyb3dzZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRHJvcCBmaWxlIG9yIGNsaWNrIHRvIGJyb3dzZScgfCB0cmFuc2xhdGVcIlxuICAgICAgW21heEFsbG93ZWRGaWxlc109XCJtYXhBbGxvd2VkRmlsZXNcIlxuICAgICAgW2ZpbGVzXT1cImRyb3BwZWRGaWxlc1wiXG4gICAgPjwvYzh5LWRyb3AtYXJlYT5cbiAgPC9jOHktZm9ybS1ncm91cD5cbjwvZGl2PlxuXG48ZGl2IFtoaWRkZW5dPVwidXBsb2FkQ2hvaWNlICE9PSAndXBsb2FkVXJsJ1wiPlxuICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibS1iLTQgcC1iLThcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cImdsb2JlXCI+PC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgbmFtZT1cImZpbGVVcmxcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsZVVybFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWxlVXJsQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IGh0dHA6Ly9leGFtcGxlLmNvbS9iaW5hcnkuemlwXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCJ7eyBjb25maWcubWF4bGVuZ3RoIH19XCJcbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG48L2Rpdj5cbiJdfQ==
@@ -19,9 +19,9 @@ export class AppSwitcherComponent {
19
19
  }
20
20
  }
21
21
  AppSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppSwitcherComponent, deps: [{ token: i1.AppSwitcherService }], target: i0.ɵɵFactoryTarget.Component });
22
- AppSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppSwitcherComponent, selector: "c8y-app-switcher", ngImport: i0, template: "<div class=\"app-switcher-dropdown\" dropdown #appSwitcherDropdown=\"bs-dropdown\" [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\">\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div *ngIf=\"!(switcherService.finishedLoading$ | async)\" class=\"d-flex a-i-center j-c-center p-4\">\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i7.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "component", type: i8.AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "pipe", type: i9.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i11.AppHrefPipe, name: "appHref" }, { kind: "pipe", type: i12.IsActiveAppPipe, name: "isActiveApp" }] });
22
+ AppSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppSwitcherComponent, selector: "c8y-app-switcher", ngImport: i0, template: "<div\n class=\"app-switcher-dropdown\"\n dropdown\n #appSwitcherDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\"\n>\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div\n *ngIf=\"!(switcherService.finishedLoading$ | async)\"\n class=\"d-flex a-i-center j-c-center p-4\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [name]=\"app.name\"\n [contextPath]=\"app.contextPath\"\n ></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i7.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "component", type: i8.AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "pipe", type: i9.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: i11.AppHrefPipe, name: "appHref" }, { kind: "pipe", type: i12.IsActiveAppPipe, name: "isActiveApp" }] });
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppSwitcherComponent, decorators: [{
24
24
  type: Component,
25
- args: [{ selector: 'c8y-app-switcher', template: "<div class=\"app-switcher-dropdown\" dropdown #appSwitcherDropdown=\"bs-dropdown\" [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\">\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div *ngIf=\"!(switcherService.finishedLoading$ | async)\" class=\"d-flex a-i-center j-c-center p-4\">\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n" }]
25
+ args: [{ selector: 'c8y-app-switcher', template: "<div\n class=\"app-switcher-dropdown\"\n dropdown\n #appSwitcherDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\"\n>\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div\n *ngIf=\"!(switcherService.finishedLoading$ | async)\"\n class=\"d-flex a-i-center j-c-center p-4\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [name]=\"app.name\"\n [contextPath]=\"app.contextPath\"\n ></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n" }]
26
26
  }], ctorParameters: function () { return [{ type: i1.AppSwitcherService }]; } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN3aXRjaGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvaGVhZGVyL2FwcGxpY2F0aW9uL2FwcC1zd2l0Y2hlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb3JlL2hlYWRlci9hcHBsaWNhdGlvbi9hcHAtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFLNUQsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFtQixlQUFtQztRQUFuQyxvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7SUFBRyxDQUFDOztpSEFEL0Msb0JBQW9CO3FHQUFwQixvQkFBb0Isd0RDTmpDLDJxRUFxREE7MkZEL0NhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcFN3aXRjaGVyU2VydmljZSB9IGZyb20gJy4vYXBwLXN3aXRjaGVyLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFwcC1zd2l0Y2hlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFwcFN3aXRjaGVyQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIHN3aXRjaGVyU2VydmljZTogQXBwU3dpdGNoZXJTZXJ2aWNlKSB7fVxufVxuIiwiPGRpdiBjbGFzcz1cImFwcC1zd2l0Y2hlci1kcm9wZG93blwiIGRyb3Bkb3duICNhcHBTd2l0Y2hlckRyb3Bkb3duPVwiYnMtZHJvcGRvd25cIiBbY2RrVHJhcEZvY3VzXT1cImFwcFN3aXRjaGVyRHJvcGRvd24uaXNPcGVuXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cIm1haW4taGVhZGVyLWJ1dHRvbiBjOHktZHJvcGRvd24gZHJvcGRvd24tdG9nZ2xlXCJcbiAgICBpZD1cImFwcFN3aXRjaGVyRHJvcGRvd25cIlxuICAgIGRyb3Bkb3duVG9nZ2xlXG4gICAgdGl0bGU9XCJ7eyAnQXBwbGljYXRpb24gc3dpdGNoZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJ0aFwiIGNsYXNzPVwiaWNvbi0yeFwiPjwvaT5cbiAgPC9idXR0b24+XG4gIDxkaXZcbiAgICAqZHJvcGRvd25NZW51XG4gICAgY2xhc3M9XCJhcHAtc3dpdGNoZXItZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51XCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhcHBTd2l0Y2hlckRyb3Bkb3duXCJcbiAgICByb2xlPVwiZ3JvdXBcIlxuICA+XG4gICAgPGRpdiAqbmdJZj1cIiEoc3dpdGNoZXJTZXJ2aWNlLmZpbmlzaGVkTG9hZGluZyQgfCBhc3luYylcIiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyIGotYy1jZW50ZXIgcC00XCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3dpdGNoZXJTZXJ2aWNlLm9uZUNsb3VkQXBwcyQgfCBhc3luYyBhcyBvbmVDbG91ZEFwcHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc3dpdGNoZXItc2FnY2xvdWRcIiAqbmdJZj1cIm9uZUNsb3VkQXBwcy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgdGl0bGU9XCJ7eyBhcHAubmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19XCJcbiAgICAgICAgICBjbGFzcz1cImFwcExpbmtcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBhcHAgb2Ygb25lQ2xvdWRBcHBzXCJcbiAgICAgICAgICBbaHJlZl09XCJhcHAgfCBhcHBIcmVmXCJcbiAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgIFthY3Rpb25OYW1lXT1cIidhcHBTd2l0Y2hlZCdcIlxuICAgICAgICAgIFthY3Rpb25EYXRhXT1cInsgYXBwbGljYXRpb25OYW1lOiBhcHAgJiYgYXBwLm5hbWUgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWFwcC1pY29uIFthcHBdPVwiYXBwXCIgW25hbWVdPVwiYXBwLm5hbWVcIiBbY29udGV4dFBhdGhdPVwiYXBwLmNvbnRleHRQYXRoXCI+PC9jOHktYXBwLWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlLXdyYXBcIj57eyBhcHAgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImFwcC1zd2l0Y2hlclwiICpuZ0lmPVwic3dpdGNoZXJTZXJ2aWNlLmFwcHMkIHwgYXN5bmMgYXMgYXBwc1wiPlxuICAgICAgPGFcbiAgICAgICAgdGl0bGU9XCJ7eyBhcHAubmFtZSB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19XCJcbiAgICAgICAgY2xhc3M9XCJhcHBMaW5rXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGFwcCB8IGlzQWN0aXZlQXBwIHwgYXN5bmMpID8gJ2FjdGl2ZScgOiAnJ1wiXG4gICAgICAgICpuZ0Zvcj1cImxldCBhcHAgb2YgYXBwc1wiXG4gICAgICAgIFtocmVmXT1cImFwcCB8IGFwcEhyZWZcIlxuICAgICAgICBbcmVsXT1cImFwcC50eXBlID09PSAnRVhURVJOQUwnID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInIDogJydcIlxuICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICBbYWN0aW9uTmFtZV09XCInYXBwU3dpdGNoZWQnXCJcbiAgICAgICAgW2FjdGlvbkRhdGFdPVwieyBhcHBsaWNhdGlvbk5hbWU6IGFwcCAmJiBhcHAubmFtZSB9XCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1hcHAtaWNvbiBbYXBwXT1cImFwcFwiIFtuYW1lXT1cImFwcC5uYW1lXCIgW2NvbnRleHRQYXRoXT1cImFwcC5jb250ZXh0UGF0aFwiPjwvYzh5LWFwcC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUtd3JhcFwiPnt7IGFwcCB8IGh1bWFuaXplQXBwTmFtZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN3aXRjaGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvaGVhZGVyL2FwcGxpY2F0aW9uL2FwcC1zd2l0Y2hlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb3JlL2hlYWRlci9hcHBsaWNhdGlvbi9hcHAtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFLNUQsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFtQixlQUFtQztRQUFuQyxvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7SUFBRyxDQUFDOztpSEFEL0Msb0JBQW9CO3FHQUFwQixvQkFBb0Isd0RDTmpDLGd3RUFpRUE7MkZEM0RhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcFN3aXRjaGVyU2VydmljZSB9IGZyb20gJy4vYXBwLXN3aXRjaGVyLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFwcC1zd2l0Y2hlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFwcFN3aXRjaGVyQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIHN3aXRjaGVyU2VydmljZTogQXBwU3dpdGNoZXJTZXJ2aWNlKSB7fVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImFwcC1zd2l0Y2hlci1kcm9wZG93blwiXG4gIGRyb3Bkb3duXG4gICNhcHBTd2l0Y2hlckRyb3Bkb3duPVwiYnMtZHJvcGRvd25cIlxuICBbY2RrVHJhcEZvY3VzXT1cImFwcFN3aXRjaGVyRHJvcGRvd24uaXNPcGVuXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwibWFpbi1oZWFkZXItYnV0dG9uIGM4eS1kcm9wZG93biBkcm9wZG93bi10b2dnbGVcIlxuICAgIGlkPVwiYXBwU3dpdGNoZXJEcm9wZG93blwiXG4gICAgZHJvcGRvd25Ub2dnbGVcbiAgICB0aXRsZT1cInt7ICdBcHBsaWNhdGlvbiBzd2l0Y2hlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInRoXCIgY2xhc3M9XCJpY29uLTJ4XCI+PC9pPlxuICA8L2J1dHRvbj5cbiAgPGRpdlxuICAgICpkcm9wZG93bk1lbnVcbiAgICBjbGFzcz1cImFwcC1zd2l0Y2hlci1kcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImFwcFN3aXRjaGVyRHJvcGRvd25cIlxuICAgIHJvbGU9XCJncm91cFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIiEoc3dpdGNoZXJTZXJ2aWNlLmZpbmlzaGVkTG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlciBqLWMtY2VudGVyIHAtNFwiXG4gICAgPlxuICAgICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN3aXRjaGVyU2VydmljZS5vbmVDbG91ZEFwcHMkIHwgYXN5bmMgYXMgb25lQ2xvdWRBcHBzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwLXN3aXRjaGVyLXNhZ2Nsb3VkXCIgKm5nSWY9XCJvbmVDbG91ZEFwcHMubGVuZ3RoID4gMFwiPlxuICAgICAgICA8YVxuICAgICAgICAgIHRpdGxlPVwie3sgYXBwLm5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fVwiXG4gICAgICAgICAgY2xhc3M9XCJhcHBMaW5rXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgYXBwIG9mIG9uZUNsb3VkQXBwc1wiXG4gICAgICAgICAgW2hyZWZdPVwiYXBwIHwgYXBwSHJlZlwiXG4gICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICBbYWN0aW9uTmFtZV09XCInYXBwU3dpdGNoZWQnXCJcbiAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7IGFwcGxpY2F0aW9uTmFtZTogYXBwICYmIGFwcC5uYW1lIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1hcHAtaWNvblxuICAgICAgICAgICAgW2FwcF09XCJhcHBcIlxuICAgICAgICAgICAgW25hbWVdPVwiYXBwLm5hbWVcIlxuICAgICAgICAgICAgW2NvbnRleHRQYXRoXT1cImFwcC5jb250ZXh0UGF0aFwiXG4gICAgICAgICAgPjwvYzh5LWFwcC1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwXCI+e3sgYXBwIHwgaHVtYW5pemVBcHBOYW1lIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJhcHAtc3dpdGNoZXJcIiAqbmdJZj1cInN3aXRjaGVyU2VydmljZS5hcHBzJCB8IGFzeW5jIGFzIGFwcHNcIj5cbiAgICAgIDxhXG4gICAgICAgIHRpdGxlPVwie3sgYXBwLm5hbWUgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fVwiXG4gICAgICAgIGNsYXNzPVwiYXBwTGlua1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihhcHAgfCBpc0FjdGl2ZUFwcCB8IGFzeW5jKSA/ICdhY3RpdmUnIDogJydcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgYXBwIG9mIGFwcHNcIlxuICAgICAgICBbaHJlZl09XCJhcHAgfCBhcHBIcmVmXCJcbiAgICAgICAgW3JlbF09XCJhcHAudHlwZSA9PT0gJ0VYVEVSTkFMJyA/ICdub29wZW5lciBub3JlZmVycmVyJyA6ICcnXCJcbiAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgW2FjdGlvbk5hbWVdPVwiJ2FwcFN3aXRjaGVkJ1wiXG4gICAgICAgIFthY3Rpb25EYXRhXT1cInsgYXBwbGljYXRpb25OYW1lOiBhcHAgJiYgYXBwLm5hbWUgfVwiXG4gICAgICA+XG4gICAgICAgIDxjOHktYXBwLWljb24gW2FwcF09XCJhcHBcIiBbbmFtZV09XCJhcHAubmFtZVwiIFtjb250ZXh0UGF0aF09XCJhcHAuY29udGV4dFBhdGhcIj48L2M4eS1hcHAtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlLXdyYXBcIj57eyBhcHAgfCBodW1hbml6ZUFwcE5hbWUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -114,13 +114,13 @@ export class CredentialsComponent {
114
114
  }
115
115
  }
116
116
  CredentialsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CredentialsComponent, deps: [{ token: i1.LoginService }, { token: i2.AlertService }, { token: i3.AppStateService }, { token: i4.CredentialsFromQueryParamsService }], target: i0.ɵɵFactoryTarget.Component });
117
- CredentialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CredentialsComponent, selector: "c8y-credentials", inputs: { loginViewParams: "loginViewParams" }, outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<div id=\"oauth\" *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\">\n <button\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n class=\"btn btn-block btn-lg form-group\"\n >\n <i [c8yIcon]=\"'sign-in'\" class=\"pull-left\"></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form class=\"loginForm\" (ngSubmit)=\"login()\" #loginForm=\"ngForm\" *ngIf=\"showLoginForm\" novalidate>\n <div\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </div>\n <ng-template #orLegend>\n <div class=\"legend form-block center\" translate>or</div>\n </ng-template>\n\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"showTenant\">\n <label for=\"tenant\" translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n type=\"text\"\n name=\"tenant\"\n id=\"tenant\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"user\" translate>Username</label>\n <input\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n type=\"text\"\n name=\"user\"\n id=\"user\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>Password</label>\n <input\n [(ngModel)]=\"model.password\"\n #password=\"ngModel\"\n type=\"password\"\n name=\"password\"\n id=\"password\"\n class=\"form-control\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <div class=\"form-group\" *ngIf=\"showBasicAuth\">\n <label title=\"{{ 'Remember me' | translate }}\" class=\"c8y-checkbox\">\n <input type=\"checkbox\" name=\"remember\" [(ngModel)]=\"loginService.rememberMe\" />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n title=\"{{ 'Log in' | translate }}\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <a\n title=\"{{ 'Forgot password?' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </a>\n </div>\n <div class=\"text-center m-t-8\" *ngIf=\"!!(ui.state$ | async).loginExtraLink\">\n <a\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n class=\"btn btn-link btn-sm\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i10.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i11.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }] });
117
+ CredentialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CredentialsComponent, selector: "c8y-credentials", inputs: { loginViewParams: "loginViewParams" }, outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<div id=\"oauth\" *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\">\n <button\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n class=\"btn btn-block btn-lg form-group\"\n >\n <i [c8yIcon]=\"'sign-in'\" class=\"pull-left\"></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form class=\"loginForm\" (ngSubmit)=\"login()\" #loginForm=\"ngForm\" *ngIf=\"showLoginForm\" novalidate>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n <ng-template #orLegend>\n <div class=\"legend form-block center\" translate>or</div>\n </ng-template>\n\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"showTenant\">\n <label for=\"tenant\" translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n type=\"text\"\n name=\"tenant\"\n id=\"tenant\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"user\" translate>Username</label>\n <input\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n type=\"text\"\n name=\"user\"\n id=\"user\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>Password</label>\n <input\n [(ngModel)]=\"model.password\"\n #password=\"ngModel\"\n type=\"password\"\n name=\"password\"\n id=\"password\"\n class=\"form-control\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <div class=\"form-group\" *ngIf=\"showBasicAuth\">\n <label title=\"{{ 'Remember me' | translate }}\" class=\"c8y-checkbox\">\n <input type=\"checkbox\" name=\"remember\" [(ngModel)]=\"loginService.rememberMe\" />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n title=\"{{ 'Log in' | translate }}\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n type=\"button\"\n title=\"{{ 'Forgot password?' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n <div class=\"text-center m-t-8\" *ngIf=\"!!(ui.state$ | async).loginExtraLink\">\n <a\n role=\"button\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n class=\"btn btn-link btn-sm\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i7.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i10.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i11.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }] });
118
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CredentialsComponent, decorators: [{
119
119
  type: Component,
120
- args: [{ selector: 'c8y-credentials', template: "<div id=\"oauth\" *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\">\n <button\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n class=\"btn btn-block btn-lg form-group\"\n >\n <i [c8yIcon]=\"'sign-in'\" class=\"pull-left\"></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form class=\"loginForm\" (ngSubmit)=\"login()\" #loginForm=\"ngForm\" *ngIf=\"showLoginForm\" novalidate>\n <div\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </div>\n <ng-template #orLegend>\n <div class=\"legend form-block center\" translate>or</div>\n </ng-template>\n\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"showTenant\">\n <label for=\"tenant\" translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n type=\"text\"\n name=\"tenant\"\n id=\"tenant\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"user\" translate>Username</label>\n <input\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n type=\"text\"\n name=\"user\"\n id=\"user\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>Password</label>\n <input\n [(ngModel)]=\"model.password\"\n #password=\"ngModel\"\n type=\"password\"\n name=\"password\"\n id=\"password\"\n class=\"form-control\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <div class=\"form-group\" *ngIf=\"showBasicAuth\">\n <label title=\"{{ 'Remember me' | translate }}\" class=\"c8y-checkbox\">\n <input type=\"checkbox\" name=\"remember\" [(ngModel)]=\"loginService.rememberMe\" />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n title=\"{{ 'Log in' | translate }}\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <a\n title=\"{{ 'Forgot password?' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </a>\n </div>\n <div class=\"text-center m-t-8\" *ngIf=\"!!(ui.state$ | async).loginExtraLink\">\n <a\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n class=\"btn btn-link btn-sm\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </div>\n</form>\n" }]
120
+ args: [{ selector: 'c8y-credentials', template: "<div id=\"oauth\" *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\">\n <button\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n (click)=\"redirectToOauth()\"\n class=\"btn btn-block btn-lg form-group\"\n >\n <i [c8yIcon]=\"'sign-in'\" class=\"pull-left\"></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form class=\"loginForm\" (ngSubmit)=\"login()\" #loginForm=\"ngForm\" *ngIf=\"showLoginForm\" novalidate>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n <ng-template #orLegend>\n <div class=\"legend form-block center\" translate>or</div>\n </ng-template>\n\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"showTenant\">\n <label for=\"tenant\" translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenant\"\n #tenant=\"ngModel\"\n type=\"text\"\n name=\"tenant\"\n id=\"tenant\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n placeholder-no-required-hint\n [readonly]=\"loginViewParams.disableTenant\"\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"user\" translate>Username</label>\n <input\n [(ngModel)]=\"model.user\"\n #user=\"ngModel\"\n type=\"text\"\n name=\"user\"\n id=\"user\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>Password</label>\n <input\n [(ngModel)]=\"model.password\"\n #password=\"ngModel\"\n type=\"password\"\n name=\"password\"\n id=\"password\"\n class=\"form-control\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <div class=\"form-group\" *ngIf=\"showBasicAuth\">\n <label title=\"{{ 'Remember me' | translate }}\" class=\"c8y-checkbox\">\n <input type=\"checkbox\" name=\"remember\" [(ngModel)]=\"loginService.rememberMe\" />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n title=\"{{ 'Log in' | translate }}\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n type=\"button\"\n title=\"{{ 'Forgot password?' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n <div class=\"text-center m-t-8\" *ngIf=\"!!(ui.state$ | async).loginExtraLink\">\n <a\n role=\"button\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n class=\"btn btn-link btn-sm\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </div>\n</form>\n" }]
121
121
  }], ctorParameters: function () { return [{ type: i1.LoginService }, { type: i2.AlertService }, { type: i3.AppStateService }, { type: i4.CredentialsFromQueryParamsService }]; }, propDecorators: { onChangeView: [{
122
122
  type: Output
123
123
  }], loginViewParams: [{
124
124
  type: Input
125
125
  }] } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9jcmVkZW50aWFscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2NyZWRlbnRpYWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRNUYsTUFBTSxPQUFPLG9CQUFvQjtJQW1CL0IsWUFDUyxZQUEwQixFQUMxQixLQUFtQixFQUNuQixFQUFtQixFQUNsQixpQ0FBb0U7UUFIckUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFpQjtRQUNsQixzQ0FBaUMsR0FBakMsaUNBQWlDLENBQW1DO1FBdEJwRSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkMsb0JBQWUsR0FBK0I7WUFDckQsYUFBYSxFQUFFLEtBQUs7WUFDcEIsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztRQUVGLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBQ3pCLGNB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RU8sa0JBQWtCLENBQUMsT0FBZTtRQUN4QyxJQUFJLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDaEIsT0FBTyxDQUNMLHNHQUFzRyxDQUN2RyxDQUNGLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hCLE9BQU8sQ0FDTCxnTEFBZ0wsQ0FDakwsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7aUhBN0dVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGtKQ2ZqQywrdkdBd0dBOzJGRHpGYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzRNQUtqQixZQUFZO3NCQUFyQixNQUFNO2dCQUVFLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBJbnB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IExvZ2luVmlld3MgfSBmcm9tICcuL2xvZ2luLm1vZGVsJztcbmltcG9ydCB7IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZSB9IGZyb20gJy4vY3JlZGVudGlhbHMtZnJvbS1xdWVyeS1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc0NvbXBvbmVudFBhcmFtcyB9IGZyb20gJy4vY3JlZGVudGlhbHMtY29tcG9uZW50LXBhcmFtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jcmVkZW50aWFscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVkZW50aWFscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgQ3JlZGVudGlhbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgb25DaGFuZ2VWaWV3ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIGxvZ2luVmlld1BhcmFtczogQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgPSB7XG4gICAgZGlzYWJsZVRlbmFudDogZmFsc2UsXG4gICAgc2hvd1RlbmFudDogZmFsc2VcbiAgfTtcblxuICBMT0dJTl9WSUVXUyA9IExvZ2luVmlld3M7XG4gIG1vZGVsOiBJQ3JlZGVudGlhbHMgPSB7fTtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dMb2dpbkZvcm06IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0Jhc2ljQXV0aDogYm9vbGVhbiA9IGZhbHNlO1xuICBvYXV0aE9wdGlvbnM6IGFueSA9IHt9O1xuICBzaG93VGVuYW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBQQVNTV09SRF9SRVNFVF9IRUFERVJfTkFNRSA9ICdwYXNzd29yZHJlc2V0dG9rZW4nO1xuICBwcml2YXRlIHJlYWRvbmx5IE5PX1BIT05FX0hFQURFUl9OQU1FID0gJ05vUGhvbmVIZWFkZXInO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcbiAgICBwdWJsaWMgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwdWJsaWMgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZTogQ3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB7IG9hdXRoT3B0aW9ucywgbG9naW5Nb2RlIH0gPSB0aGlzLmxvZ2luU2VydmljZTtcbiAgICB0aGlzLm1vZGVsLnRlbmFudCA9IHRoaXMubG9naW5TZXJ2aWNlLmdldFRlbmFudCgpO1xuICAgIHRoaXMuc2hvd0xvZ2luRm9ybSA9XG4gICAgICB0eXBlb2YgbG9naW5Nb2RlLnZpc2libGVPbkxvZ2luUGFnZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbG9naW5Nb2RlLnZpc2libGVPbkxvZ2luUGFnZTtcbiAgICB0aGlzLnNob3dCYXNpY0F1dGggPSBsb2dpbk1vZGUudHlwZSA9PT0gJ0JBU0lDJztcbiAgICB0aGlzLm9hdXRoT3B0aW9ucyA9IG9hdXRoT3B0aW9ucztcbiAgICBjb25zdCBjcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcyA9XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZS5nZXRDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcygpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbCwgY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXMpO1xuICAgIHRoaXMuc2hvd1RlbmFudCA9IHRoaXMubG9naW5WaWV3UGFyYW1zLnNob3dUZW5hbnQgfHwgdGhpcy5sb2dpblNlcnZpY2Uuc2hvd1RlbmFudCgpO1xuICB9XG5cbiAgcmVkaXJlY3RUb09hdXRoKCkge1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlZGlyZWN0VG9PYXV0aCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBsb2dpbiBpbnRvIHRoZSBhcHBsaWNhdGlvbiB1c2luZyBiYXNpYyBhdXRoLlxuICAgKiBJZiBzdWNjZXNzZnVsIGxvZ2dlZCBpbiB0aGUgY2xpZW50IGlzIHNldCBpbiBzaGFyZWQvY3VtdWxvY2l0eS5zZXJ2aWNlLnRzXG4gICAqL1xuICBhc3luYyBsb2dpbigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgYmFzaWNBdXRoID0gdGhpcy5sb2dpblNlcnZpY2UudXNlQmFzaWNBdXRoKHRoaXMubW9kZWwpO1xuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2UubG9naW4oYmFzaWNBdXRoLCB0aGlzLm1vZGVsKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5yZXMgJiYgZS5yZXMuaGVhZGVycyAmJiBlLnJlcy5oZWFkZXJzLmdldCh0aGlzLlBBU1NXT1JEX1JFU0VUX0hFQURFUl9OQU1FKSkge1xuICAgICAgICB0aGlzLmhhbmRsZVBhc3N3b3JkUmVzZXQoZS5yZXMpO1xuICAgICAgfSBlbHNlIGlmIChlLnJlcyAmJiBlLnJlcy5zdGF0dXMgPT09IDQwMSAmJiAvcGluL2kudGVzdChlLmRhdGEubWVzc2FnZSkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTbXNDaGFsbGVuZ2UoZS5kYXRhLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIGlmIChlLnJlcyAmJiBlLnJlcy5zdGF0dXMgPT09IDQwMSAmJiAvVE9UUC9pLnRlc3QoZS5kYXRhLm1lc3NhZ2UpKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlVG90cENoYWxsZW5nZShlLmRhdGEubWVzc2FnZSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBlLnJlcyAmJlxuICAgICAgICBlLnJlcy5oZWFkZXJzICYmXG4gICAgICAgIGUucmVzLmhlYWRlcnMuZ2V0KHRoaXMuTk9fUEhPTkVfSEVBREVSX05BTUUpICYmXG4gICAgICAgICF0aGlzLmxvZ2luU2VydmljZS5pc1N1cHBvcnRVc2VyKHRoaXMubW9kZWwpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5oYW5kbGVOb1Bob25lTnVtYmVyUHJvdmlkZWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLmdlbmVyYXRlT2F1dGhUb2tlbih0aGlzLm1vZGVsKTtcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcbiAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUGFzc3dvcmRSZXNldChlOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0LnJlbW92ZUxhc3REYW5nZXIoKTtcbiAgICB0aGlzLm1vZGVsLnRva2VuID0gZS5oZWFkZXJzLmdldCh0aGlzLlBBU1NXT1JEX1JFU0VUX0hFQURFUl9OQU1FKTtcbiAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5DaGFuZ2VQYXNzd29yZCwgY3JlZGVudGlhbHM6IHRoaXMubW9kZWwgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRvdHBDaGFsbGVuZ2UobWVzc2FnZSkge1xuICAgIGlmICgvVE9UUCBzZXR1cCByZXF1aXJlZC9pLnRlc3QobWVzc2FnZSkpIHtcbiAgICAgIHRoaXMub25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMb2dpblZpZXdzLlRvdHBTZXR1cCwgY3JlZGVudGlhbHM6IHRoaXMubW9kZWwgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMb2dpblZpZXdzLlRvdHBDaGFsbGVuZ2UsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU21zQ2hhbGxlbmdlKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGlmICgvcGluIGhhcyBhbHJlYWR5IGJlZW4gZ2VuZXJhdGVkL2kudGVzdChtZXNzYWdlKSkge1xuICAgICAgdGhpcy5hbGVydC53YXJuaW5nKFxuICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgICdUaGUgdmVyaWZpY2F0aW9uIGNvZGUgd2FzIGFscmVhZHkgc2VudC4gRm9yIGEgbmV3IHZlcmlmaWNhdGlvbiBjb2RlLCBwbGVhc2UgY2xpY2sgb24gdGhlIGxpbmsgYWJvdmUuJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmFsZXJ0LnJlbW92ZUxhc3REYW5nZXIoKTtcbiAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5TbXNDaGFsbGVuZ2UsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOb1Bob25lTnVtYmVyUHJvdmlkZWQoKSB7XG4gICAgdGhpcy5vbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExvZ2luVmlld3MuUHJvdmlkZVBob25lTnVtYmVyLCBjcmVkZW50aWFsczogdGhpcy5tb2RlbCB9KTtcbiAgICB0aGlzLmFsZXJ0Lndhcm5pbmcoXG4gICAgICBnZXR0ZXh0KFxuICAgICAgICAnVHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiBoYXMgYmVlbiB0dXJuZWQgb24gZm9yIHRoaXMgYWNjb3VudC4gUHJvdmlkZSB5b3VyIHBob25lIG51bWJlciBhYm92ZSB0byBzYXZlIGl0IGluIHlvdXIgdXNlciBwcm9maWxlIGFuZCBzdGFydCByZWNlaXZpbmcgdmVyaWZpY2F0aW9uIGNvZGVzIHZpYSBTTVMuJ1xuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJvYXV0aFwiICpuZ0lmPVwib2F1dGhPcHRpb25zLmluaXRSZXF1ZXN0ICYmIG9hdXRoT3B0aW9ucy52aXNpYmxlT25Mb2dpblBhZ2VcIj5cbiAgPGJ1dHRvblxuICAgIHRpdGxlPVwie3sgb2F1dGhPcHRpb25zLmJ1dHRvbk5hbWUgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJyZWRpcmVjdFRvT2F1dGgoKVwiXG4gICAgY2xhc3M9XCJidG4gYnRuLWJsb2NrIGJ0bi1sZyBmb3JtLWdyb3VwXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cIidzaWduLWluJ1wiIGNsYXNzPVwicHVsbC1sZWZ0XCI+PC9pPlxuICAgIHt7IG9hdXRoT3B0aW9ucy5idXR0b25OYW1lIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxmb3JtIGNsYXNzPVwibG9naW5Gb3JtXCIgKG5nU3VibWl0KT1cImxvZ2luKClcIiAjbG9naW5Gb3JtPVwibmdGb3JtXCIgKm5nSWY9XCJzaG93TG9naW5Gb3JtXCIgbm92YWxpZGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2sgY2VudGVyXCJcbiAgICAqbmdJZj1cIiEob2F1dGhPcHRpb25zLmluaXRSZXF1ZXN0ICYmIG9hdXRoT3B0aW9ucy52aXNpYmxlT25Mb2dpblBhZ2UpOyBlbHNlIG9yTGVnZW5kXCJcbiAgICB0cmFuc2xhdGVcbiAgPlxuICAgIExvZ2luXG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI29yTGVnZW5kPlxuICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9jayBjZW50ZXJcIiB0cmFuc2xhdGU+b3I8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJ0ZW5hbnRGaWVsZFwiIGlkPVwidGVuYW50RmllbGRcIiAqbmdJZj1cInNob3dUZW5hbnRcIj5cbiAgICA8bGFiZWwgZm9yPVwidGVuYW50XCIgdHJhbnNsYXRlPlRlbmFudCBJRDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnRlbmFudFwiXG4gICAgICAjdGVuYW50PVwibmdNb2RlbFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBuYW1lPVwidGVuYW50XCJcbiAgICAgIGlkPVwidGVuYW50XCJcbiAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IHQxMjM0NVwiXG4gICAgICBwbGFjZWhvbGRlci1uby1yZXF1aXJlZC1oaW50XG4gICAgICBbcmVhZG9ubHldPVwibG9naW5WaWV3UGFyYW1zLmRpc2FibGVUZW5hbnRcIlxuICAgICAgcmVxdWlyZWRcbiAgICAvPlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgPGxhYmVsIGZvcj1cInVzZXJcIiB0cmFuc2xhdGU+VXNlcm5hbWU8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC51c2VyXCJcbiAgICAgICN1c2VyPVwibmdNb2RlbFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBuYW1lPVwidXNlclwiXG4gICAgICBpZD1cInVzZXJcIlxuICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBqb2Ugb3Igam9lLmRvZUBleGFtcGxlLmNvbWBMT0NBTElaRWAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHBsYWNlaG9sZGVyLW5vLXJlcXVpcmVkLWhpbnRcbiAgICAgIHJlcXVpcmVkXG4gICAgLz5cbiAgPC9jOHktZm9ybS1ncm91cD5cbiAgPGM4eS1mb3JtLWdyb3VwPlxuICAgIDxsYWJlbCBmb3I9XCJwYXNzd29yZFwiIHRyYW5zbGF0ZT5QYXNzd29yZDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnBhc3N3b3JkXCJcbiAgICAgICNwYXNzd29yZD1cIm5nTW9kZWxcIlxuICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgIG5hbWU9XCJwYXNzd29yZFwiXG4gICAgICBpZD1cInBhc3N3b3JkXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIHBsYWNlaG9sZGVyLW5vLXJlcXVpcmVkLWhpbnRcbiAgICAgIHJlcXVpcmVkXG4gICAgLz5cbiAgPC9jOHktZm9ybS1ncm91cD5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdJZj1cInNob3dCYXNpY0F1dGhcIj5cbiAgICA8bGFiZWwgdGl0bGU9XCJ7eyAnUmVtZW1iZXIgbWUnIHwgdHJhbnNsYXRlIH19XCIgY2xhc3M9XCJjOHktY2hlY2tib3hcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwicmVtZW1iZXJcIiBbKG5nTW9kZWwpXT1cImxvZ2luU2VydmljZS5yZW1lbWJlck1lXCIgLz5cbiAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuPnt7ICdSZW1lbWJlciBtZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG4gIDxidXR0b25cbiAgICB0aXRsZT1cInt7ICdMb2cgaW4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICBbZGlzYWJsZWRdPVwiIWxvZ2luRm9ybS5mb3JtLnZhbGlkIHx8IGlzTG9hZGluZ1wiXG4gICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWxnIGJ0bi1ibG9jayBmb3JtLWdyb3VwXCJcbiAgPlxuICAgIHt7ICdMb2cgaW4nIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS10LThcIj5cbiAgICA8YVxuICAgICAgdGl0bGU9XCJ7eyAnRm9yZ290IHBhc3N3b3JkPycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtXCJcbiAgICAgIChjbGljayk9XCJvbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExPR0lOX1ZJRVdTLlJlY292ZXJQYXNzd29yZCB9KVwiXG4gICAgPlxuICAgICAge3sgJ0ZvcmdvdCBwYXNzd29yZD8nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9hPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG0tdC04XCIgKm5nSWY9XCIhISh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmtcIj5cbiAgICA8YVxuICAgICAgdGl0bGU9XCJ7eyAodWkuc3RhdGUkIHwgYXN5bmMpLmxvZ2luRXh0cmFMaW5rLmxhYmVsIH19XCJcbiAgICAgIFtocmVmXT1cIih1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsudXJsXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbVwiXG4gICAgPlxuICAgICAge3sgKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGluay5sYWJlbCB9fVxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9jcmVkZW50aWFscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2NyZWRlbnRpYWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRNUYsTUFBTSxPQUFPLG9CQUFvQjtJQW1CL0IsWUFDUyxZQUEwQixFQUMxQixLQUFtQixFQUNuQixFQUFtQixFQUNsQixpQ0FBb0U7UUFIckUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFpQjtRQUNsQixzQ0FBaUMsR0FBakMsaUNBQWlDLENBQW1DO1FBdEJwRSxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkMsb0JBQWUsR0FBK0I7WUFDckQsYUFBYSxFQUFFLEtBQUs7WUFDcEIsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztRQUVGLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLFVBQUssR0FBaUIsRUFBRSxDQUFDO1FBQ3pCLGNB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RU8sa0JBQWtCLENBQUMsT0FBZTtRQUN4QyxJQUFJLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDaEIsT0FBTyxDQUNMLHNHQUFzRyxDQUN2RyxDQUNGLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hCLE9BQU8sQ0FDTCxnTEFBZ0wsQ0FDakwsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7aUhBN0dVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGtKQ2ZqQyx5ekdBMEdBOzJGRDNGYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzRNQUtqQixZQUFZO3NCQUFyQixNQUFNO2dCQUVFLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBJbnB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IExvZ2luVmlld3MgfSBmcm9tICcuL2xvZ2luLm1vZGVsJztcbmltcG9ydCB7IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZSB9IGZyb20gJy4vY3JlZGVudGlhbHMtZnJvbS1xdWVyeS1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc0NvbXBvbmVudFBhcmFtcyB9IGZyb20gJy4vY3JlZGVudGlhbHMtY29tcG9uZW50LXBhcmFtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jcmVkZW50aWFscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVkZW50aWFscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgQ3JlZGVudGlhbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgb25DaGFuZ2VWaWV3ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIGxvZ2luVmlld1BhcmFtczogQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgPSB7XG4gICAgZGlzYWJsZVRlbmFudDogZmFsc2UsXG4gICAgc2hvd1RlbmFudDogZmFsc2VcbiAgfTtcblxuICBMT0dJTl9WSUVXUyA9IExvZ2luVmlld3M7XG4gIG1vZGVsOiBJQ3JlZGVudGlhbHMgPSB7fTtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dMb2dpbkZvcm06IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0Jhc2ljQXV0aDogYm9vbGVhbiA9IGZhbHNlO1xuICBvYXV0aE9wdGlvbnM6IGFueSA9IHt9O1xuICBzaG93VGVuYW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBQQVNTV09SRF9SRVNFVF9IRUFERVJfTkFNRSA9ICdwYXNzd29yZHJlc2V0dG9rZW4nO1xuICBwcml2YXRlIHJlYWRvbmx5IE5PX1BIT05FX0hFQURFUl9OQU1FID0gJ05vUGhvbmVIZWFkZXInO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcbiAgICBwdWJsaWMgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwdWJsaWMgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZTogQ3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB7IG9hdXRoT3B0aW9ucywgbG9naW5Nb2RlIH0gPSB0aGlzLmxvZ2luU2VydmljZTtcbiAgICB0aGlzLm1vZGVsLnRlbmFudCA9IHRoaXMubG9naW5TZXJ2aWNlLmdldFRlbmFudCgpO1xuICAgIHRoaXMuc2hvd0xvZ2luRm9ybSA9XG4gICAgICB0eXBlb2YgbG9naW5Nb2RlLnZpc2libGVPbkxvZ2luUGFnZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbG9naW5Nb2RlLnZpc2libGVPbkxvZ2luUGFnZTtcbiAgICB0aGlzLnNob3dCYXNpY0F1dGggPSBsb2dpbk1vZGUudHlwZSA9PT0gJ0JBU0lDJztcbiAgICB0aGlzLm9hdXRoT3B0aW9ucyA9IG9hdXRoT3B0aW9ucztcbiAgICBjb25zdCBjcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcyA9XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZS5nZXRDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcygpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbCwgY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXMpO1xuICAgIHRoaXMuc2hvd1RlbmFudCA9IHRoaXMubG9naW5WaWV3UGFyYW1zLnNob3dUZW5hbnQgfHwgdGhpcy5sb2dpblNlcnZpY2Uuc2hvd1RlbmFudCgpO1xuICB9XG5cbiAgcmVkaXJlY3RUb09hdXRoKCkge1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlZGlyZWN0VG9PYXV0aCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBsb2dpbiBpbnRvIHRoZSBhcHBsaWNhdGlvbiB1c2luZyBiYXNpYyBhdXRoLlxuICAgKiBJZiBzdWNjZXNzZnVsIGxvZ2dlZCBpbiB0aGUgY2xpZW50IGlzIHNldCBpbiBzaGFyZWQvY3VtdWxvY2l0eS5zZXJ2aWNlLnRzXG4gICAqL1xuICBhc3luYyBsb2dpbigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgYmFzaWNBdXRoID0gdGhpcy5sb2dpblNlcnZpY2UudXNlQmFzaWNBdXRoKHRoaXMubW9kZWwpO1xuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2UubG9naW4oYmFzaWNBdXRoLCB0aGlzLm1vZGVsKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5yZXMgJiYgZS5yZXMuaGVhZGVycyAmJiBlLnJlcy5oZWFkZXJzLmdldCh0aGlzLlBBU1NXT1JEX1JFU0VUX0hFQURFUl9OQU1FKSkge1xuICAgICAgICB0aGlzLmhhbmRsZVBhc3N3b3JkUmVzZXQoZS5yZXMpO1xuICAgICAgfSBlbHNlIGlmIChlLnJlcyAmJiBlLnJlcy5zdGF0dXMgPT09IDQwMSAmJiAvcGluL2kudGVzdChlLmRhdGEubWVzc2FnZSkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTbXNDaGFsbGVuZ2UoZS5kYXRhLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIGlmIChlLnJlcyAmJiBlLnJlcy5zdGF0dXMgPT09IDQwMSAmJiAvVE9UUC9pLnRlc3QoZS5kYXRhLm1lc3NhZ2UpKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlVG90cENoYWxsZW5nZShlLmRhdGEubWVzc2FnZSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBlLnJlcyAmJlxuICAgICAgICBlLnJlcy5oZWFkZXJzICYmXG4gICAgICAgIGUucmVzLmhlYWRlcnMuZ2V0KHRoaXMuTk9fUEhPTkVfSEVBREVSX05BTUUpICYmXG4gICAgICAgICF0aGlzLmxvZ2luU2VydmljZS5pc1N1cHBvcnRVc2VyKHRoaXMubW9kZWwpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5oYW5kbGVOb1Bob25lTnVtYmVyUHJvdmlkZWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLmdlbmVyYXRlT2F1dGhUb2tlbih0aGlzLm1vZGVsKTtcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UucmVzZXQoKTtcbiAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUGFzc3dvcmRSZXNldChlOiBhbnkpIHtcbiAgICB0aGlzLmFsZXJ0LnJlbW92ZUxhc3REYW5nZXIoKTtcbiAgICB0aGlzLm1vZGVsLnRva2VuID0gZS5oZWFkZXJzLmdldCh0aGlzLlBBU1NXT1JEX1JFU0VUX0hFQURFUl9OQU1FKTtcbiAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5DaGFuZ2VQYXNzd29yZCwgY3JlZGVudGlhbHM6IHRoaXMubW9kZWwgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRvdHBDaGFsbGVuZ2UobWVzc2FnZSkge1xuICAgIGlmICgvVE9UUCBzZXR1cCByZXF1aXJlZC9pLnRlc3QobWVzc2FnZSkpIHtcbiAgICAgIHRoaXMub25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMb2dpblZpZXdzLlRvdHBTZXR1cCwgY3JlZGVudGlhbHM6IHRoaXMubW9kZWwgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMb2dpblZpZXdzLlRvdHBDaGFsbGVuZ2UsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU21zQ2hhbGxlbmdlKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGlmICgvcGluIGhhcyBhbHJlYWR5IGJlZW4gZ2VuZXJhdGVkL2kudGVzdChtZXNzYWdlKSkge1xuICAgICAgdGhpcy5hbGVydC53YXJuaW5nKFxuICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgICdUaGUgdmVyaWZpY2F0aW9uIGNvZGUgd2FzIGFscmVhZHkgc2VudC4gRm9yIGEgbmV3IHZlcmlmaWNhdGlvbiBjb2RlLCBwbGVhc2UgY2xpY2sgb24gdGhlIGxpbmsgYWJvdmUuJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmFsZXJ0LnJlbW92ZUxhc3REYW5nZXIoKTtcbiAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5TbXNDaGFsbGVuZ2UsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOb1Bob25lTnVtYmVyUHJvdmlkZWQoKSB7XG4gICAgdGhpcy5vbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExvZ2luVmlld3MuUHJvdmlkZVBob25lTnVtYmVyLCBjcmVkZW50aWFsczogdGhpcy5tb2RlbCB9KTtcbiAgICB0aGlzLmFsZXJ0Lndhcm5pbmcoXG4gICAgICBnZXR0ZXh0KFxuICAgICAgICAnVHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiBoYXMgYmVlbiB0dXJuZWQgb24gZm9yIHRoaXMgYWNjb3VudC4gUHJvdmlkZSB5b3VyIHBob25lIG51bWJlciBhYm92ZSB0byBzYXZlIGl0IGluIHlvdXIgdXNlciBwcm9maWxlIGFuZCBzdGFydCByZWNlaXZpbmcgdmVyaWZpY2F0aW9uIGNvZGVzIHZpYSBTTVMuJ1xuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJvYXV0aFwiICpuZ0lmPVwib2F1dGhPcHRpb25zLmluaXRSZXF1ZXN0ICYmIG9hdXRoT3B0aW9ucy52aXNpYmxlT25Mb2dpblBhZ2VcIj5cbiAgPGJ1dHRvblxuICAgIHRpdGxlPVwie3sgb2F1dGhPcHRpb25zLmJ1dHRvbk5hbWUgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJyZWRpcmVjdFRvT2F1dGgoKVwiXG4gICAgY2xhc3M9XCJidG4gYnRuLWJsb2NrIGJ0bi1sZyBmb3JtLWdyb3VwXCJcbiAgPlxuICAgIDxpIFtjOHlJY29uXT1cIidzaWduLWluJ1wiIGNsYXNzPVwicHVsbC1sZWZ0XCI+PC9pPlxuICAgIHt7IG9hdXRoT3B0aW9ucy5idXR0b25OYW1lIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxmb3JtIGNsYXNzPVwibG9naW5Gb3JtXCIgKG5nU3VibWl0KT1cImxvZ2luKClcIiAjbG9naW5Gb3JtPVwibmdGb3JtXCIgKm5nSWY9XCJzaG93TG9naW5Gb3JtXCIgbm92YWxpZGF0ZT5cbiAgPHNwYW5cbiAgICBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIGNlbnRlclwiXG4gICAgKm5nSWY9XCIhKG9hdXRoT3B0aW9ucy5pbml0UmVxdWVzdCAmJiBvYXV0aE9wdGlvbnMudmlzaWJsZU9uTG9naW5QYWdlKTsgZWxzZSBvckxlZ2VuZFwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBMb2dpblxuICA8L3NwYW4+XG4gIDxuZy10ZW1wbGF0ZSAjb3JMZWdlbmQ+XG4gICAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrIGNlbnRlclwiIHRyYW5zbGF0ZT5vcjwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cInRlbmFudEZpZWxkXCIgaWQ9XCJ0ZW5hbnRGaWVsZFwiICpuZ0lmPVwic2hvd1RlbmFudFwiPlxuICAgIDxsYWJlbCBmb3I9XCJ0ZW5hbnRcIiB0cmFuc2xhdGU+VGVuYW50IElEPC9sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIFsobmdNb2RlbCldPVwibW9kZWwudGVuYW50XCJcbiAgICAgICN0ZW5hbnQ9XCJuZ01vZGVsXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIG5hbWU9XCJ0ZW5hbnRcIlxuICAgICAgaWQ9XCJ0ZW5hbnRcIlxuICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gdDEyMzQ1XCJcbiAgICAgIHBsYWNlaG9sZGVyLW5vLXJlcXVpcmVkLWhpbnRcbiAgICAgIFtyZWFkb25seV09XCJsb2dpblZpZXdQYXJhbXMuZGlzYWJsZVRlbmFudFwiXG4gICAgICByZXF1aXJlZFxuICAgIC8+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDxjOHktZm9ybS1ncm91cD5cbiAgICA8bGFiZWwgZm9yPVwidXNlclwiIHRyYW5zbGF0ZT5Vc2VybmFtZTwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnVzZXJcIlxuICAgICAgI3VzZXI9XCJuZ01vZGVsXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIG5hbWU9XCJ1c2VyXCJcbiAgICAgIGlkPVwidXNlclwiXG4gICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIGpvZSBvciBqb2UuZG9lQGV4YW1wbGUuY29tYExPQ0FMSVpFYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgcGxhY2Vob2xkZXItbm8tcmVxdWlyZWQtaGludFxuICAgICAgcmVxdWlyZWRcbiAgICAvPlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgPGxhYmVsIGZvcj1cInBhc3N3b3JkXCIgdHJhbnNsYXRlPlBhc3N3b3JkPC9sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIFsobmdNb2RlbCldPVwibW9kZWwucGFzc3dvcmRcIlxuICAgICAgI3Bhc3N3b3JkPVwibmdNb2RlbFwiXG4gICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgIGlkPVwicGFzc3dvcmRcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgcGxhY2Vob2xkZXItbm8tcmVxdWlyZWQtaGludFxuICAgICAgcmVxdWlyZWRcbiAgICAvPlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0lmPVwic2hvd0Jhc2ljQXV0aFwiPlxuICAgIDxsYWJlbCB0aXRsZT1cInt7ICdSZW1lbWJlciBtZScgfCB0cmFuc2xhdGUgfX1cIiBjbGFzcz1cImM4eS1jaGVja2JveFwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJyZW1lbWJlclwiIFsobmdNb2RlbCldPVwibG9naW5TZXJ2aWNlLnJlbWVtYmVyTWVcIiAvPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPHNwYW4+e3sgJ1JlbWVtYmVyIG1lJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGJ1dHRvblxuICAgIHRpdGxlPVwie3sgJ0xvZyBpbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIFtkaXNhYmxlZF09XCIhbG9naW5Gb3JtLmZvcm0udmFsaWQgfHwgaXNMb2FkaW5nXCJcbiAgICB0eXBlPVwic3VibWl0XCJcbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tbGcgYnRuLWJsb2NrIGZvcm0tZ3JvdXBcIlxuICA+XG4gICAge3sgJ0xvZyBpbicgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtLXQtOFwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9XCJ7eyAnRm9yZ290IHBhc3N3b3JkPycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtXCJcbiAgICAgIChjbGljayk9XCJvbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExPR0lOX1ZJRVdTLlJlY292ZXJQYXNzd29yZCB9KVwiXG4gICAgPlxuICAgICAge3sgJ0ZvcmdvdCBwYXNzd29yZD8nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS10LThcIiAqbmdJZj1cIiEhKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGlua1wiPlxuICAgIDxhXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIHRpdGxlPVwie3sgKHVpLnN0YXRlJCB8IGFzeW5jKS5sb2dpbkV4dHJhTGluay5sYWJlbCB9fVwiXG4gICAgICBbaHJlZl09XCIodWkuc3RhdGUkIHwgYXN5bmMpLmxvZ2luRXh0cmFMaW5rLnVybFwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc21cIlxuICAgID5cbiAgICAgIHt7ICh1aS5zdGF0ZSQgfCBhc3luYykubG9naW5FeHRyYUxpbmsubGFiZWwgfX1cbiAgICA8L2E+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
@@ -110,14 +110,14 @@ export class LoginComponent {
110
110
  }
111
111
  }
112
112
  LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginComponent, deps: [{ token: i1.LoginService }, { token: i2.OptionsService }, { token: i3.AlertService }, { token: i4.CredentialsFromQueryParamsService }], target: i0.ɵɵFactoryTarget.Component });
113
- LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoginComponent, selector: "c8y-login", inputs: { name: "name" }, host: { listeners: { "keyup": "onkeyup($event)" } }, ngImport: i0, template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <div class=\"card-block p-b-0\">\n <div class=\"mainlogo\"></div>\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n >\n </c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n >\n </c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i6.SmsChallengeComponent, selector: "c8y-sms-challenge", inputs: ["credentials"], outputs: ["onCancel"] }, { kind: "component", type: i7.ProvidePhoneNumberComponent, selector: "c8y-provide-phone-number", inputs: ["credentials"], outputs: ["onCancel", "onChangeView"] }, { kind: "component", type: i8.AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: i9.RecoverPasswordComponent, selector: "c8y-recover-password", outputs: ["onChangeView"] }, { kind: "component", type: i10.ChangePasswordComponent, selector: "c8y-change-password", inputs: ["credentials"], outputs: ["onChangeView"] }, { kind: "component", type: i11.CredentialsComponent, selector: "c8y-credentials", inputs: ["loginViewParams"], outputs: ["onChangeView"] }, { kind: "component", type: i12.TotpAuthComponent, selector: "c8y-totp-auth", inputs: ["credentials", "view"], outputs: ["onCancel"] }, { kind: "component", type: i13.TenantIdSetupComponent, selector: "c8y-tenant-id-setup", outputs: ["onChangeView"] }] });
113
+ LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoginComponent, selector: "c8y-login", inputs: { name: "name" }, host: { listeners: { "keyup": "onkeyup($event)" } }, ngImport: i0, template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i6.SmsChallengeComponent, selector: "c8y-sms-challenge", inputs: ["credentials"], outputs: ["onCancel"] }, { kind: "component", type: i7.ProvidePhoneNumberComponent, selector: "c8y-provide-phone-number", inputs: ["credentials"], outputs: ["onCancel", "onChangeView"] }, { kind: "component", type: i8.AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: i9.RecoverPasswordComponent, selector: "c8y-recover-password", outputs: ["onChangeView"] }, { kind: "component", type: i10.ChangePasswordComponent, selector: "c8y-change-password", inputs: ["credentials"], outputs: ["onChangeView"] }, { kind: "component", type: i11.CredentialsComponent, selector: "c8y-credentials", inputs: ["loginViewParams"], outputs: ["onChangeView"] }, { kind: "component", type: i12.TotpAuthComponent, selector: "c8y-totp-auth", inputs: ["credentials", "view"], outputs: ["onCancel"] }, { kind: "component", type: i13.TenantIdSetupComponent, selector: "c8y-tenant-id-setup", outputs: ["onChangeView"] }] });
114
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginComponent, decorators: [{
115
115
  type: Component,
116
- args: [{ selector: 'c8y-login', template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <div class=\"card-block p-b-0\">\n <div class=\"mainlogo\"></div>\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n >\n </c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n >\n </c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </div>\n</div>\n" }]
116
+ args: [{ selector: 'c8y-login', template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n" }]
117
117
  }], ctorParameters: function () { return [{ type: i1.LoginService }, { type: i2.OptionsService }, { type: i3.AlertService }, { type: i4.CredentialsFromQueryParamsService }]; }, propDecorators: { name: [{
118
118
  type: Input
119
119
  }], onkeyup: [{
120
120
  type: HostListener,
121
121
  args: ['keyup', ['$event']]
122
122
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFRNUYsTUFBTSxPQUFPLGNBQWM7SUFhekI7O09BRUc7SUFDSCxZQUNTLFlBQTBCLEVBQ3pCLE9BQXVCLEVBQ3ZCLEtBQW1CLEVBQ25CLGlDQUFvRTtRQUhyRSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFuQjlFLGdCQUFXLEdBQWUsVUFBVSxDQUFDLElBQUksQ0FBQztRQUMxQyxnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUV6QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSWpCLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUMvQixvQkFBZSxHQUF3RCxFQUFFLENB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Q0FBQyxDQUFDO1NBQzlEO2FBQU07WUFDTCxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7U0FDaEU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OzJHQWhHVSxjQUFjOytGQUFkLGNBQWMsZ0lDZjNCLHF4REF1REE7MkZEeENhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVzsyTUFVWixJQUFJO3NCQUFaLEtBQUs7Z0JBeUM2QixPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDcmVkZW50aWFscywgVGVuYW50TG9naW5PcHRpb25UeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblZpZXdzIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlIH0gZnJvbSAnLi9jcmVkZW50aWFscy1mcm9tLXF1ZXJ5LXBhcmFtcy5zZXJ2aWNlJztcbmltcG9ydCB7IENyZWRlbnRpYWxzQ29tcG9uZW50UGFyYW1zIH0gZnJvbSAnLi9jcmVkZW50aWFscy1jb21wb25lbnQtcGFyYW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxvZ2luJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY3VycmVudFZpZXc6IExvZ2luVmlld3MgPSBMb2dpblZpZXdzLk5vbmU7XG4gIExPR0lOX1ZJRVdTID0gTG9naW5WaWV3cztcblxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICBjcmVkZW50aWFsczogSUNyZWRlbnRpYWxzID0ge307XG4gIGxvZ2luVmlld1BhcmFtczogQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIGRpc3BsYXlBbGVydHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBUT0tFTl9QQVJBTSA9ICd0b2tlbic7XG5cbiAgLyoqXG4gICAqIEp1c3QgREkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2U6IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFJlc2V0UGFzc3dvcmRUb2tlbigpO1xuICAgIGlmICh0aGlzLmxvZ2luU2VydmljZS5pc0ZpcnN0TG9naW4pIHtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgdGhpcy5sb2dpbkF1dG9tYXRpY2FsbHkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbHMudG9rZW4gPSB0b2tlbjtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxvZ2luU2VydmljZS5pc0ZpcnN0TG9naW4gPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCBoYXZlIGFueSBxdWVyeVBhcmFtZXRlcnMgcmVsYXRlZCB0byBjcmVkZW50aWFscyBhZnRlciBsb2dnaW5nIGluIG9yIGV2ZW4gaWYgd2Ugd2VyZSBhbHJlYWR5IGxvZ2dlZCBpbi5cbiAgICB0aGlzLmNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZS5yZW1vdmVDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcygpO1xuICB9XG5cbiAgaGFuZGxlTG9naW5UZW1wbGF0ZShldmVudCkge1xuICAgIHRoaXMuY3VycmVudFZpZXcgPSBldmVudC52aWV3O1xuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBldmVudC5jcmVkZW50aWFscyB8fCB7fTtcbiAgICB0aGlzLmxvZ2luVmlld1BhcmFtcyA9IGV2ZW50LmxvZ2luVmlld1BhcmFtcyB8fCB7fTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSkgb25rZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgIT09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMubG9naW5TZXJ2aWNlLmNsZWFuTWVzc2FnZXMoKTtcbiAgICB9XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5yZXNldCgpO1xuICAgIHRoaXMuc2V0VmlldygpO1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLmNsZWFuTWVzc2FnZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9naW5BdXRvbWF0aWNhbGx5KCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5sb2dpbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IHByZWZlcnJlZExvZ2luT3B0aW9uVHlwZSA9IHRoaXMubG9naW5TZXJ2aWNlLmxvZ2luTW9kZS50eXBlO1xuICAgICAgaWYgKHByZWZlcnJlZExvZ2luT3B0aW9uVHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMikge1xuICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5yZWRpcmVjdFRvT2F1dGgoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZWZlcnJlZExvZ2luT3B0aW9uVHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMl9JTlRFUk5BTCAmJlxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCAhPT0gJ2h0dHBzOidcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5hbGVydC5kYW5nZXIoZ2V0dGV4dCgnQ3VycmVudCBsb2dpbiBtb2RlIG9ubHkgc3VwcG9ydHMgSFRUUFMuJykpO1xuICAgICAgICB9IGVsc2UgaWYgKGUucmVzICYmIGUucmVzLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWaWV3KCkge1xuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxzICYmIHRoaXMuY3JlZGVudGlhbHMudG9rZW4pIHtcbiAgICAgIHRoaXMuaGFuZGxlTG9naW5UZW1wbGF0ZSh7IHZpZXc6IExvZ2luVmlld3MuQ2hhbmdlUGFzc3dvcmQsIGNyZWRlbnRpYWxzOiB0aGlzLmNyZWRlbnRpYWxzIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sb2dpblNlcnZpY2Uuc2hvd1RlbmFudFNldHVwKCkpIHtcbiAgICAgIHRoaXMuaGFuZGxlTG9naW5UZW1wbGF0ZSh7IHZpZXc6IExvZ2luVmlld3MuVGVuYW50SWRTZXR1cCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVMb2dpblRlbXBsYXRlKHsgdmlldzogTG9naW5WaWV3cy5DcmVkZW50aWFscyB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJlc2V0UGFzc3dvcmRUb2tlbigpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMub3B0aW9ucy5nZXQodGhpcy5UT0tFTl9QQVJBTSk7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuc2V0KHRoaXMuVE9LRU5fUEFSQU0sIHVuZGVmaW5lZCk7IC8vIG9ubHkgdXNlIG9uY2VcbiAgICB9XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibG9hZGluZyBjYXJkIGZhZGVJblVwIGFuaW1hdGVkIHNoYWRvdzVcIlxuICAqbmdJZj1cImN1cnJlbnRWaWV3ICE9PSBMT0dJTl9WSUVXUy5Ob25lXCJcbiAgW25nU3dpdGNoXT1cImN1cnJlbnRWaWV3XCJcbj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC1iLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWFpbmxvZ29cIj48L2Rpdj5cbiAgICA8Yzh5LWNyZWRlbnRpYWxzXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuQ3JlZGVudGlhbHNcIlxuICAgICAgKG9uQ2hhbmdlVmlldyk9XCJoYW5kbGVMb2dpblRlbXBsYXRlKCRldmVudClcIlxuICAgICAgW2xvZ2luVmlld1BhcmFtc109XCJsb2dpblZpZXdQYXJhbXNcIlxuICAgID48L2M4eS1jcmVkZW50aWFscz5cbiAgICA8Yzh5LXJlY292ZXItcGFzc3dvcmRcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5SZWNvdmVyUGFzc3dvcmRcIlxuICAgICAgKG9uQ2hhbmdlVmlldyk9XCJoYW5kbGVMb2dpblRlbXBsYXRlKCRldmVudClcIlxuICAgID48L2M4eS1yZWNvdmVyLXBhc3N3b3JkPlxuICAgIDxjOHktY2hhbmdlLXBhc3N3b3JkXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuQ2hhbmdlUGFzc3dvcmRcIlxuICAgICAgKG9uQ2hhbmdlVmlldyk9XCJoYW5kbGVMb2dpblRlbXBsYXRlKCRldmVudClcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+PC9jOHktY2hhbmdlLXBhc3N3b3JkPlxuICAgIDxjOHktdG90cC1hdXRoXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuVG90cENoYWxsZW5nZVwiXG4gICAgICAob25DYW5jZWwpPVwicmVzZXQoKVwiXG4gICAgICBbdmlld109XCJjdXJyZW50Vmlld1wiXG4gICAgICBbY3JlZGVudGlhbHNdPVwiY3JlZGVudGlhbHNcIlxuICAgID5cbiAgICA8L2M4eS10b3RwLWF1dGg+XG4gICAgPGM4eS10b3RwLWF1dGhcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5Ub3RwU2V0dXBcIlxuICAgICAgKG9uQ2FuY2VsKT1cInJlc2V0KClcIlxuICAgICAgW3ZpZXddPVwiY3VycmVudFZpZXdcIlxuICAgICAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgICA+XG4gICAgPC9jOHktdG90cC1hdXRoPlxuICAgIDxjOHktc21zLWNoYWxsZW5nZVxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlNtc0NoYWxsZW5nZVwiXG4gICAgICAob25DYW5jZWwpPVwicmVzZXQoKVwiXG4gICAgICBbY3JlZGVudGlhbHNdPVwiY3JlZGVudGlhbHNcIlxuICAgID48L2M4eS1zbXMtY2hhbGxlbmdlPlxuXG4gICAgPGM4eS1wcm92aWRlLXBob25lLW51bWJlclxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlByb3ZpZGVQaG9uZU51bWJlclwiXG4gICAgICAob25DYW5jZWwpPVwicmVzZXQoKVwiXG4gICAgICAob25DaGFuZ2VWaWV3KT1cImhhbmRsZUxvZ2luVGVtcGxhdGUoJGV2ZW50KVwiXG4gICAgICBbY3JlZGVudGlhbHNdPVwiY3JlZGVudGlhbHNcIlxuICAgID48L2M4eS1wcm92aWRlLXBob25lLW51bWJlcj5cbiAgICA8Yzh5LXRlbmFudC1pZC1zZXR1cFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlRlbmFudElkU2V0dXBcIlxuICAgICAgKG9uQ2hhbmdlVmlldyk9XCJoYW5kbGVMb2dpblRlbXBsYXRlKCRldmVudClcIlxuICAgID48L2M4eS10ZW5hbnQtaWQtc2V0dXA+XG5cbiAgICA8Yzh5LWFsZXJ0LW91dGxldCBwb3NpdGlvbj1cInN0YXRpY1wiPjwvYzh5LWFsZXJ0LW91dGxldD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFRNUYsTUFBTSxPQUFPLGNBQWM7SUFhekI7O09BRUc7SUFDSCxZQUNTLFlBQTBCLEVBQ3pCLE9BQXVCLEVBQ3ZCLEtBQW1CLEVBQ25CLGlDQUFvRTtRQUhyRSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFuQjlFLGdCQUFXLEdBQWUsVUFBVSxDQUFDLElBQUksQ0FBQztRQUMxQyxnQkFBVyxHQUFHLFVBQVUsQ0FBQztRQUV6QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSWpCLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUMvQixvQkFBZSxHQUF3RCxFQUFFLENB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Q0FBQyxDQUFDO1NBQzlEO2FBQU07WUFDTCxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7U0FDaEU7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OzJHQWhHVSxjQUFjOytGQUFkLGNBQWMsZ0lDZjNCLCt3REFzREE7MkZEdkNhLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVzsyTUFVWixJQUFJO3NCQUFaLEtBQUs7Z0JBeUM2QixPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDcmVkZW50aWFscywgVGVuYW50TG9naW5PcHRpb25UeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblZpZXdzIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlIH0gZnJvbSAnLi9jcmVkZW50aWFscy1mcm9tLXF1ZXJ5LXBhcmFtcy5zZXJ2aWNlJztcbmltcG9ydCB7IENyZWRlbnRpYWxzQ29tcG9uZW50UGFyYW1zIH0gZnJvbSAnLi9jcmVkZW50aWFscy1jb21wb25lbnQtcGFyYW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxvZ2luJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY3VycmVudFZpZXc6IExvZ2luVmlld3MgPSBMb2dpblZpZXdzLk5vbmU7XG4gIExPR0lOX1ZJRVdTID0gTG9naW5WaWV3cztcblxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICBjcmVkZW50aWFsczogSUNyZWRlbnRpYWxzID0ge307XG4gIGxvZ2luVmlld1BhcmFtczogQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIGRpc3BsYXlBbGVydHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBUT0tFTl9QQVJBTSA9ICd0b2tlbic7XG5cbiAgLyoqXG4gICAqIEp1c3QgREkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2U6IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFJlc2V0UGFzc3dvcmRUb2tlbigpO1xuICAgIGlmICh0aGlzLmxvZ2luU2VydmljZS5pc0ZpcnN0TG9naW4pIHtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgdGhpcy5sb2dpbkF1dG9tYXRpY2FsbHkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3JlZGVudGlhbHMudG9rZW4gPSB0b2tlbjtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxvZ2luU2VydmljZS5pc0ZpcnN0TG9naW4gPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCBoYXZlIGFueSBxdWVyeVBhcmFtZXRlcnMgcmVsYXRlZCB0byBjcmVkZW50aWFscyBhZnRlciBsb2dnaW5nIGluIG9yIGV2ZW4gaWYgd2Ugd2VyZSBhbHJlYWR5IGxvZ2dlZCBpbi5cbiAgICB0aGlzLmNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZS5yZW1vdmVDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcygpO1xuICB9XG5cbiAgaGFuZGxlTG9naW5UZW1wbGF0ZShldmVudCkge1xuICAgIHRoaXMuY3VycmVudFZpZXcgPSBldmVudC52aWV3O1xuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBldmVudC5jcmVkZW50aWFscyB8fCB7fTtcbiAgICB0aGlzLmxvZ2luVmlld1BhcmFtcyA9IGV2ZW50LmxvZ2luVmlld1BhcmFtcyB8fCB7fTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSkgb25rZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgIT09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMubG9naW5TZXJ2aWNlLmNsZWFuTWVzc2FnZXMoKTtcbiAgICB9XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5yZXNldCgpO1xuICAgIHRoaXMuc2V0VmlldygpO1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLmNsZWFuTWVzc2FnZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9naW5BdXRvbWF0aWNhbGx5KCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmxvZ2luU2VydmljZS5sb2dpbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IHByZWZlcnJlZExvZ2luT3B0aW9uVHlwZSA9IHRoaXMubG9naW5TZXJ2aWNlLmxvZ2luTW9kZS50eXBlO1xuICAgICAgaWYgKHByZWZlcnJlZExvZ2luT3B0aW9uVHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMikge1xuICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5yZWRpcmVjdFRvT2F1dGgoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZWZlcnJlZExvZ2luT3B0aW9uVHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMl9JTlRFUk5BTCAmJlxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCAhPT0gJ2h0dHBzOidcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5hbGVydC5kYW5nZXIoZ2V0dGV4dCgnQ3VycmVudCBsb2dpbiBtb2RlIG9ubHkgc3VwcG9ydHMgSFRUUFMuJykpO1xuICAgICAgICB9IGVsc2UgaWYgKGUucmVzICYmIGUucmVzLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWaWV3KCkge1xuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxzICYmIHRoaXMuY3JlZGVudGlhbHMudG9rZW4pIHtcbiAgICAgIHRoaXMuaGFuZGxlTG9naW5UZW1wbGF0ZSh7IHZpZXc6IExvZ2luVmlld3MuQ2hhbmdlUGFzc3dvcmQsIGNyZWRlbnRpYWxzOiB0aGlzLmNyZWRlbnRpYWxzIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sb2dpblNlcnZpY2Uuc2hvd1RlbmFudFNldHVwKCkpIHtcbiAgICAgIHRoaXMuaGFuZGxlTG9naW5UZW1wbGF0ZSh7IHZpZXc6IExvZ2luVmlld3MuVGVuYW50SWRTZXR1cCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVMb2dpblRlbXBsYXRlKHsgdmlldzogTG9naW5WaWV3cy5DcmVkZW50aWFscyB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFJlc2V0UGFzc3dvcmRUb2tlbigpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMub3B0aW9ucy5nZXQodGhpcy5UT0tFTl9QQVJBTSk7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuc2V0KHRoaXMuVE9LRU5fUEFSQU0sIHVuZGVmaW5lZCk7IC8vIG9ubHkgdXNlIG9uY2VcbiAgICB9XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibG9hZGluZyBjYXJkIGZhZGVJblVwIGFuaW1hdGVkIHNoYWRvdzVcIlxuICAqbmdJZj1cImN1cnJlbnRWaWV3ICE9PSBMT0dJTl9WSUVXUy5Ob25lXCJcbiAgW25nU3dpdGNoXT1cImN1cnJlbnRWaWV3XCJcbj5cbiAgPG1haW4gY2xhc3M9XCJjYXJkLWJsb2NrIHAtYi0wXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtYWlubG9nb1wiPjwvc3Bhbj5cblxuICAgIDxjOHktY3JlZGVudGlhbHNcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5DcmVkZW50aWFsc1wiXG4gICAgICAob25DaGFuZ2VWaWV3KT1cImhhbmRsZUxvZ2luVGVtcGxhdGUoJGV2ZW50KVwiXG4gICAgICBbbG9naW5WaWV3UGFyYW1zXT1cImxvZ2luVmlld1BhcmFtc1wiXG4gICAgPjwvYzh5LWNyZWRlbnRpYWxzPlxuICAgIDxjOHktcmVjb3Zlci1wYXNzd29yZFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlJlY292ZXJQYXNzd29yZFwiXG4gICAgICAob25DaGFuZ2VWaWV3KT1cImhhbmRsZUxvZ2luVGVtcGxhdGUoJGV2ZW50KVwiXG4gICAgPjwvYzh5LXJlY292ZXItcGFzc3dvcmQ+XG4gICAgPGM4eS1jaGFuZ2UtcGFzc3dvcmRcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5DaGFuZ2VQYXNzd29yZFwiXG4gICAgICAob25DaGFuZ2VWaWV3KT1cImhhbmRsZUxvZ2luVGVtcGxhdGUoJGV2ZW50KVwiXG4gICAgICBbY3JlZGVudGlhbHNdPVwiY3JlZGVudGlhbHNcIlxuICAgID48L2M4eS1jaGFuZ2UtcGFzc3dvcmQ+XG4gICAgPGM4eS10b3RwLWF1dGhcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJMT0dJTl9WSUVXUy5Ub3RwQ2hhbGxlbmdlXCJcbiAgICAgIChvbkNhbmNlbCk9XCJyZXNldCgpXCJcbiAgICAgIFt2aWV3XT1cImN1cnJlbnRWaWV3XCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LXRvdHAtYXV0aD5cbiAgICA8Yzh5LXRvdHAtYXV0aFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIkxPR0lOX1ZJRVdTLlRvdHBTZXR1cFwiXG4gICAgICAob25DYW5jZWwpPVwicmVzZXQoKVwiXG4gICAgICBbdmlld109XCJjdXJyZW50Vmlld1wiXG4gICAgICBbY3JlZGVudGlhbHNdPVwiY3JlZGVudGlhbHNcIlxuICAgID48L2M4eS10b3RwLWF1dGg+XG4gICAgPGM4eS1zbXMtY2hhbGxlbmdlXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuU21zQ2hhbGxlbmdlXCJcbiAgICAgIChvbkNhbmNlbCk9XCJyZXNldCgpXCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LXNtcy1jaGFsbGVuZ2U+XG5cbiAgICA8Yzh5LXByb3ZpZGUtcGhvbmUtbnVtYmVyXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuUHJvdmlkZVBob25lTnVtYmVyXCJcbiAgICAgIChvbkNhbmNlbCk9XCJyZXNldCgpXCJcbiAgICAgIChvbkNoYW5nZVZpZXcpPVwiaGFuZGxlTG9naW5UZW1wbGF0ZSgkZXZlbnQpXCJcbiAgICAgIFtjcmVkZW50aWFsc109XCJjcmVkZW50aWFsc1wiXG4gICAgPjwvYzh5LXByb3ZpZGUtcGhvbmUtbnVtYmVyPlxuICAgIDxjOHktdGVuYW50LWlkLXNldHVwXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiTE9HSU5fVklFV1MuVGVuYW50SWRTZXR1cFwiXG4gICAgICAob25DaGFuZ2VWaWV3KT1cImhhbmRsZUxvZ2luVGVtcGxhdGUoJGV2ZW50KVwiXG4gICAgPjwvYzh5LXRlbmFudC1pZC1zZXR1cD5cblxuICAgIDxjOHktYWxlcnQtb3V0bGV0IHBvc2l0aW9uPVwic3RhdGljXCI+PC9jOHktYWxlcnQtb3V0bGV0PlxuICA8L21haW4+XG48L2Rpdj5cbiJdfQ==
@@ -108,10 +108,10 @@ export class ModalComponent {
108
108
  }
109
109
  }
110
110
  ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalComponent, deps: [{ token: i1.BsModalRef, optional: true }], target: i0.ɵɵFactoryTarget.Component });
111
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ModalComponent, selector: "c8y-modal", inputs: { disabled: "disabled", close: "close", dismiss: "dismiss", title: "title", body: "body", customFooter: "customFooter", headerClasses: "headerClasses", labels: "labels" }, outputs: { onDismiss: "onDismiss", onClose: "onClose" }, host: { listeners: { "document:keydown.enter": "onEnterKeyDown($event)" } }, ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header {{ headerClasses }}\" [ngClass]=\"{ separator: title }\">\n <ng-content select=\"[c8y-modal-title]\"></ng-content>\n <h3 [hidden]=\"!title\" id=\"modal-title\">\n {{ title | translate }}\n </h3>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div [ngClass]=\"{ 'modal-body': !customFooter, 'd-contents': customFooter }\">\n <p *ngIf=\"title\" class=\"text-center text-break-word\">\n {{ body }}\n </p>\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"modal-footer\" *ngIf=\"!customFooter\">\n <ng-content select=\"[c8y-modal-footer]\"></ng-content>\n <button\n title=\"{{ labels.cancel | translate }}\"\n *ngIf=\"labels.cancel\"\n class=\"btn btn-default\"\n (click)=\"_dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n title=\"{{ labels.ok | translate }}\"\n *ngIf=\"labels.ok\"\n class=\"btn btn-primary\"\n (click)=\"_close()\"\n [disabled]=\"disabled\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
111
+ ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ModalComponent, selector: "c8y-modal", inputs: { disabled: "disabled", close: "close", dismiss: "dismiss", title: "title", body: "body", customFooter: "customFooter", headerClasses: "headerClasses", labels: "labels" }, outputs: { onDismiss: "onDismiss", onClose: "onClose" }, host: { listeners: { "document:keydown.enter": "onEnterKeyDown($event)" } }, ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header {{ headerClasses }}\" [ngClass]=\"{ separator: title }\">\n <ng-content select=\"[c8y-modal-title]\"></ng-content>\n <div [hidden]=\"!title\" id=\"modal-title\" class=\"modal-title\">\n {{ title | translate }}\n </div>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div [ngClass]=\"{ 'modal-body': !customFooter, 'd-contents': customFooter }\">\n <p *ngIf=\"title\" class=\"text-center text-break-word\">\n {{ body }}\n </p>\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"modal-footer\" *ngIf=\"!customFooter\">\n <ng-content select=\"[c8y-modal-footer]\"></ng-content>\n <button\n type=\"button\"\n title=\"{{ labels.cancel | translate }}\"\n *ngIf=\"labels.cancel\"\n class=\"btn btn-default\"\n (click)=\"_dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n type=\"button\"\n title=\"{{ labels.ok | translate }}\"\n *ngIf=\"labels.ok\"\n class=\"btn btn-primary\"\n (click)=\"_close()\"\n [disabled]=\"disabled\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
112
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalComponent, decorators: [{
113
113
  type: Component,
114
- args: [{ selector: 'c8y-modal', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header {{ headerClasses }}\" [ngClass]=\"{ separator: title }\">\n <ng-content select=\"[c8y-modal-title]\"></ng-content>\n <h3 [hidden]=\"!title\" id=\"modal-title\">\n {{ title | translate }}\n </h3>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div [ngClass]=\"{ 'modal-body': !customFooter, 'd-contents': customFooter }\">\n <p *ngIf=\"title\" class=\"text-center text-break-word\">\n {{ body }}\n </p>\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"modal-footer\" *ngIf=\"!customFooter\">\n <ng-content select=\"[c8y-modal-footer]\"></ng-content>\n <button\n title=\"{{ labels.cancel | translate }}\"\n *ngIf=\"labels.cancel\"\n class=\"btn btn-default\"\n (click)=\"_dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n title=\"{{ labels.ok | translate }}\"\n *ngIf=\"labels.ok\"\n class=\"btn btn-primary\"\n (click)=\"_close()\"\n [disabled]=\"disabled\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n" }]
114
+ args: [{ selector: 'c8y-modal', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header {{ headerClasses }}\" [ngClass]=\"{ separator: title }\">\n <ng-content select=\"[c8y-modal-title]\"></ng-content>\n <div [hidden]=\"!title\" id=\"modal-title\" class=\"modal-title\">\n {{ title | translate }}\n </div>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div [ngClass]=\"{ 'modal-body': !customFooter, 'd-contents': customFooter }\">\n <p *ngIf=\"title\" class=\"text-center text-break-word\">\n {{ body }}\n </p>\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"modal-footer\" *ngIf=\"!customFooter\">\n <ng-content select=\"[c8y-modal-footer]\"></ng-content>\n <button\n type=\"button\"\n title=\"{{ labels.cancel | translate }}\"\n *ngIf=\"labels.cancel\"\n class=\"btn btn-default\"\n (click)=\"_dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n type=\"button\"\n title=\"{{ labels.ok | translate }}\"\n *ngIf=\"labels.ok\"\n class=\"btn btn-primary\"\n (click)=\"_close()\"\n [disabled]=\"disabled\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n" }]
115
115
  }], ctorParameters: function () { return [{ type: i1.BsModalRef, decorators: [{
116
116
  type: Optional
117
117
  }] }]; }, propDecorators: { onDismiss: [{
@@ -138,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
138
138
  type: HostListener,
139
139
  args: ['document:keydown.enter', ['$event']]
140
140
  }] } });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBR2pDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RHO0FBS0gsTUFBTSxPQUFPLGNBQWM7SUFvQnpCLFlBQWdDLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFuQnZDLGNBQVMsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxZQUFPLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUtqQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQVM1QixZQUFPLEdBQWdCLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFFNUIsQ0FBQztJQVZyRCxJQUFhLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQWU7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFNRCxRQUFRO1FBQ04sSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN0QixJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckIsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDOUI7UUFDRCxJQUFJLEVBQUUsRUFBRTtZQUNOLEVBQUUsRUFBRSxDQUFDO1NBQ047UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3JCLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxFQUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsQ0FBQztTQUNOO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVtRCxjQUFjLENBQUMsTUFBcUI7UUFDdEYsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRixNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNuRSxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzdFLElBQUksZ0JBQWdCLElBQUksaUJBQWlCLEVBQUU7WUFDekMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxnQkFBZ0IsSUFBSSxhQUFhLEVBQUU7WUFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDOzsyR0F0RFUsY0FBYzsrRkFBZCxjQUFjLDJXQy9EM0IseW9DQW9DQTsyRkQyQmEsY0FBYztrQkFKMUIsU0FBUzsrQkFDRSxXQUFXOzswQkF1QlIsUUFBUTs0Q0FuQlgsU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDTyxNQUFNO3NCQUFsQixLQUFLO2dCQWtDOEMsY0FBYztzQkFBakUsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTW9kYWxMYWJlbHMgfSBmcm9tICcuLi9zZWxlY3QtbW9kYWwvc2VsZWN0LW1vZGFsLm1vZGVsJztcblxuLyoqXG4gKiBDOHkgbW9kYWwgY29tcG9uZW50LlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBDcmVhdGluZyBjdXN0b20gbW9kYWw6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbiAqICBpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgc2VsZWN0b3I6IFwibXktbW9kYWxcIixcbiAqICB0ZW1wbGF0ZTogYFxuICogICAgPGM4eS1tb2RhbCB0aXRsZT1cIkN1c3RvbVRpdGxlXCJcbiAqICAgICAgKG9uQ2xvc2UpPVwib25DbG9zZSgkZXZlbnQpXCJcbiAqICAgICAgKG9uRGlzbWlzcyk9XCJvbkRpc21pc3MoJGV2ZW50KVwiXG4gKiAgICAgIFtsYWJlbHNdPVwibGFiZWxzXCJcbiAqICAgICAgW2Rpc2FibGVkXT1cInRydWVcIiA8LSB3aWxsIGRpc2FibGUgb2sgYnV0dG9uXG4gKiAgICAgID5cbiAqICAgICAgICA8c3Bhbj5JIGFtIGJvZHkgb2YgbW9kYWw8L3NwYW4+XG4gKiAgICAgICAgPHNwYW4+Rm9yIHNpbXBsZSBzdHJpbmcgdXNlIGJvZHk9XCJzdHJpbmdcIjwvc3Bhbj5cbiAqICAgIDwvYzh5LW1vZGFsPmBcbiAqIH0pXG4gKlxuICogZXhwb3J0IGNsYXNzIE15TW9kYWxDb21wb25lbnQge1xuICpcbiAqICBjbG9zZVN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuICogIGxhYmVscyA6IE1vZGFsTGFiZWxzID0ge29rOiBcImN1c3RvbU9LXCIsIGNhbmNlbDogXCJjdXN0b21DYW5jZWxcIn07XG4gKlxuICogIG9uRGlzbWlzcyhldmVudCl7XG4gKiAgICB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAqICB9XG4gKlxuICogIG9uQ2xvc2UoZXZlbnQpIHtcbiAqICAgIHRoaXMuY2xvc2VTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gKiAgfVxuICogfVxuICogYGBgXG4gKiBTaG93aW5nIG1vZGFsOlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9tb2RhbFwiO1xuICpcbiAqIGNvbnN0cnVjdG9yKFxuICogIHB1YmxpYyBic01vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gKiApIHt9XG4gKlxuICogc2hvd01vZGFsKCkge1xuICogIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5ic01vZGFsU2VydmljZS5zaG93KE15TW9kYWxDb21wb25lbnQpO1xuICogIG1vZGFsUmVmLmNvbnRlbnQuY2xvc2VTdWJqZWN0LnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICogICAgY29uc29sZS5sb2coJ3Jlc3VsdHM6JywgcmVzdWx0KTtcbiAqICB9KTtcbiAqIH1cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IHtcbiAgQE91dHB1dCgpIG9uRGlzbWlzczogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DbG9zZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjbG9zZTogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgZGlzbWlzczogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgYm9keTogc3RyaW5nO1xuICBASW5wdXQoKSBjdXN0b21Gb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGVhZGVyQ2xhc3Nlczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNldCBsYWJlbHMoeyBvaywgY2FuY2VsIH06IE1vZGFsTGFiZWxzKSB7XG4gICAgdGhpcy5fbGFiZWxzID0geyBvaywgY2FuY2VsIH07XG4gIH1cblxuICBnZXQgbGFiZWxzKCk6IE1vZGFsTGFiZWxzIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxzO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGFiZWxzOiBNb2RhbExhYmVscyA9IHsgb2s6IGdldHRleHQoJ09LJyksIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJykgfTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIG1vZGFsOiBCc01vZGFsUmVmKSB7fVxuXG4gIF9kaXNtaXNzKCkge1xuICAgIGxldCBmbiA9IHRoaXMuZGlzbWlzcztcbiAgICBpZiAoIWZuICYmIHRoaXMubW9kYWwpIHtcbiAgICAgIGZuID0gKCkgPT4gdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgfVxuICAgIGlmIChmbikge1xuICAgICAgZm4oKTtcbiAgICB9XG4gICAgdGhpcy5vbkRpc21pc3MuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIF9jbG9zZSgpIHtcbiAgICBsZXQgZm4gPSB0aGlzLmNsb3NlO1xuICAgIGlmICghZm4gJiYgdGhpcy5tb2RhbCkge1xuICAgICAgZm4gPSAoKSA9PiB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICB9XG4gICAgaWYgKGZuKSB7XG4gICAgICBmbigpO1xuICAgIH1cbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW50ZXInLCBbJyRldmVudCddKSBvbkVudGVyS2V5RG93bihfZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBoYXNPbmx5T25lQnV0dG9uID0gaXNFbXB0eSh0aGlzLmxhYmVscy5vaykgIT09IGlzRW1wdHkodGhpcy5sYWJlbHMuY2FuY2VsKTtcbiAgICBjb25zdCBpc0NhbmNlbENsaWNrYWJsZSA9ICF0aGlzLmN1c3RvbUZvb3RlciAmJiB0aGlzLmxhYmVscy5jYW5jZWw7XG4gICAgY29uc3QgaXNPa0NsaWNrYWJsZSA9ICF0aGlzLmN1c3RvbUZvb3RlciAmJiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmxhYmVscy5vaztcbiAgICBpZiAoaGFzT25seU9uZUJ1dHRvbiAmJiBpc0NhbmNlbENsaWNrYWJsZSkge1xuICAgICAgdGhpcy5fZGlzbWlzcygpO1xuICAgIH1cbiAgICBpZiAoaGFzT25seU9uZUJ1dHRvbiAmJiBpc09rQ2xpY2thYmxlKSB7XG4gICAgICB0aGlzLl9jbG9zZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIge3sgaGVhZGVyQ2xhc3NlcyB9fVwiIFtuZ0NsYXNzXT1cInsgc2VwYXJhdG9yOiB0aXRsZSB9XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2M4eS1tb2RhbC10aXRsZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgPGgzIFtoaWRkZW5dPVwiIXRpdGxlXCIgaWQ9XCJtb2RhbC10aXRsZVwiPlxuICAgICAge3sgdGl0bGUgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2gzPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWlubmVyLXNjcm9sbFwiIGlkPVwibW9kYWwtYm9keVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnbW9kYWwtYm9keSc6ICFjdXN0b21Gb290ZXIsICdkLWNvbnRlbnRzJzogY3VzdG9tRm9vdGVyIH1cIj5cbiAgICAgIDxwICpuZ0lmPVwidGl0bGVcIiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtYnJlYWstd29yZFwiPlxuICAgICAgICB7eyBib2R5IH19XG4gICAgICA8L3A+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCIgKm5nSWY9XCIhY3VzdG9tRm9vdGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2M4eS1tb2RhbC1mb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgIDxidXR0b25cbiAgICAgIHRpdGxlPVwie3sgbGFiZWxzLmNhbmNlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAqbmdJZj1cImxhYmVscy5jYW5jZWxcIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgKGNsaWNrKT1cIl9kaXNtaXNzKClcIlxuICAgID5cbiAgICAgIHt7IGxhYmVscy5jYW5jZWwgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0aXRsZT1cInt7IGxhYmVscy5vayB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAqbmdJZj1cImxhYmVscy5va1wiXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwiX2Nsb3NlKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICA+XG4gICAgICB7eyBsYWJlbHMub2sgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBR2pDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RHO0FBS0gsTUFBTSxPQUFPLGNBQWM7SUFvQnpCLFlBQWdDLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFuQnZDLGNBQVMsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxZQUFPLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUtqQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQVM1QixZQUFPLEdBQWdCLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFFNUIsQ0FBQztJQVZyRCxJQUFhLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQWU7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFNRCxRQUFRO1FBQ04sSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN0QixJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckIsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDOUI7UUFDRCxJQUFJLEVBQUUsRUFBRTtZQUNOLEVBQUUsRUFBRSxDQUFDO1NBQ047UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3JCLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxFQUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsQ0FBQztTQUNOO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVtRCxjQUFjLENBQUMsTUFBcUI7UUFDdEYsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRixNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNuRSxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzdFLElBQUksZ0JBQWdCLElBQUksaUJBQWlCLEVBQUU7WUFDekMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsSUFBSSxnQkFBZ0IsSUFBSSxhQUFhLEVBQUU7WUFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDOzsyR0F0RFUsY0FBYzsrRkFBZCxjQUFjLDJXQy9EM0IsK3NDQXNDQTsyRkR5QmEsY0FBYztrQkFKMUIsU0FBUzsrQkFDRSxXQUFXOzswQkF1QlIsUUFBUTs0Q0FuQlgsU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDTyxNQUFNO3NCQUFsQixLQUFLO2dCQWtDOEMsY0FBYztzQkFBakUsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTW9kYWxMYWJlbHMgfSBmcm9tICcuLi9zZWxlY3QtbW9kYWwvc2VsZWN0LW1vZGFsLm1vZGVsJztcblxuLyoqXG4gKiBDOHkgbW9kYWwgY29tcG9uZW50LlxuICogIyMgRXhhbXBsZTpcbiAqXG4gKiBDcmVhdGluZyBjdXN0b20gbW9kYWw6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbiAqICBpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgc2VsZWN0b3I6IFwibXktbW9kYWxcIixcbiAqICB0ZW1wbGF0ZTogYFxuICogICAgPGM4eS1tb2RhbCB0aXRsZT1cIkN1c3RvbVRpdGxlXCJcbiAqICAgICAgKG9uQ2xvc2UpPVwib25DbG9zZSgkZXZlbnQpXCJcbiAqICAgICAgKG9uRGlzbWlzcyk9XCJvbkRpc21pc3MoJGV2ZW50KVwiXG4gKiAgICAgIFtsYWJlbHNdPVwibGFiZWxzXCJcbiAqICAgICAgW2Rpc2FibGVkXT1cInRydWVcIiA8LSB3aWxsIGRpc2FibGUgb2sgYnV0dG9uXG4gKiAgICAgID5cbiAqICAgICAgICA8c3Bhbj5JIGFtIGJvZHkgb2YgbW9kYWw8L3NwYW4+XG4gKiAgICAgICAgPHNwYW4+Rm9yIHNpbXBsZSBzdHJpbmcgdXNlIGJvZHk9XCJzdHJpbmdcIjwvc3Bhbj5cbiAqICAgIDwvYzh5LW1vZGFsPmBcbiAqIH0pXG4gKlxuICogZXhwb3J0IGNsYXNzIE15TW9kYWxDb21wb25lbnQge1xuICpcbiAqICBjbG9zZVN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuICogIGxhYmVscyA6IE1vZGFsTGFiZWxzID0ge29rOiBcImN1c3RvbU9LXCIsIGNhbmNlbDogXCJjdXN0b21DYW5jZWxcIn07XG4gKlxuICogIG9uRGlzbWlzcyhldmVudCl7XG4gKiAgICB0aGlzLmNsb3NlU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAqICB9XG4gKlxuICogIG9uQ2xvc2UoZXZlbnQpIHtcbiAqICAgIHRoaXMuY2xvc2VTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gKiAgfVxuICogfVxuICogYGBgXG4gKiBTaG93aW5nIG1vZGFsOlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9tb2RhbFwiO1xuICpcbiAqIGNvbnN0cnVjdG9yKFxuICogIHB1YmxpYyBic01vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gKiApIHt9XG4gKlxuICogc2hvd01vZGFsKCkge1xuICogIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5ic01vZGFsU2VydmljZS5zaG93KE15TW9kYWxDb21wb25lbnQpO1xuICogIG1vZGFsUmVmLmNvbnRlbnQuY2xvc2VTdWJqZWN0LnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICogICAgY29uc29sZS5sb2coJ3Jlc3VsdHM6JywgcmVzdWx0KTtcbiAqICB9KTtcbiAqIH1cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IHtcbiAgQE91dHB1dCgpIG9uRGlzbWlzczogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DbG9zZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjbG9zZTogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgZGlzbWlzczogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgYm9keTogc3RyaW5nO1xuICBASW5wdXQoKSBjdXN0b21Gb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGVhZGVyQ2xhc3Nlczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNldCBsYWJlbHMoeyBvaywgY2FuY2VsIH06IE1vZGFsTGFiZWxzKSB7XG4gICAgdGhpcy5fbGFiZWxzID0geyBvaywgY2FuY2VsIH07XG4gIH1cblxuICBnZXQgbGFiZWxzKCk6IE1vZGFsTGFiZWxzIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxzO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGFiZWxzOiBNb2RhbExhYmVscyA9IHsgb2s6IGdldHRleHQoJ09LJyksIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJykgfTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIG1vZGFsOiBCc01vZGFsUmVmKSB7fVxuXG4gIF9kaXNtaXNzKCkge1xuICAgIGxldCBmbiA9IHRoaXMuZGlzbWlzcztcbiAgICBpZiAoIWZuICYmIHRoaXMubW9kYWwpIHtcbiAgICAgIGZuID0gKCkgPT4gdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgfVxuICAgIGlmIChmbikge1xuICAgICAgZm4oKTtcbiAgICB9XG4gICAgdGhpcy5vbkRpc21pc3MuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIF9jbG9zZSgpIHtcbiAgICBsZXQgZm4gPSB0aGlzLmNsb3NlO1xuICAgIGlmICghZm4gJiYgdGhpcy5tb2RhbCkge1xuICAgICAgZm4gPSAoKSA9PiB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICB9XG4gICAgaWYgKGZuKSB7XG4gICAgICBmbigpO1xuICAgIH1cbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW50ZXInLCBbJyRldmVudCddKSBvbkVudGVyS2V5RG93bihfZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBoYXNPbmx5T25lQnV0dG9uID0gaXNFbXB0eSh0aGlzLmxhYmVscy5vaykgIT09IGlzRW1wdHkodGhpcy5sYWJlbHMuY2FuY2VsKTtcbiAgICBjb25zdCBpc0NhbmNlbENsaWNrYWJsZSA9ICF0aGlzLmN1c3RvbUZvb3RlciAmJiB0aGlzLmxhYmVscy5jYW5jZWw7XG4gICAgY29uc3QgaXNPa0NsaWNrYWJsZSA9ICF0aGlzLmN1c3RvbUZvb3RlciAmJiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmxhYmVscy5vaztcbiAgICBpZiAoaGFzT25seU9uZUJ1dHRvbiAmJiBpc0NhbmNlbENsaWNrYWJsZSkge1xuICAgICAgdGhpcy5fZGlzbWlzcygpO1xuICAgIH1cbiAgICBpZiAoaGFzT25seU9uZUJ1dHRvbiAmJiBpc09rQ2xpY2thYmxlKSB7XG4gICAgICB0aGlzLl9jbG9zZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIge3sgaGVhZGVyQ2xhc3NlcyB9fVwiIFtuZ0NsYXNzXT1cInsgc2VwYXJhdG9yOiB0aXRsZSB9XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2M4eS1tb2RhbC10aXRsZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBbaGlkZGVuXT1cIiF0aXRsZVwiIGlkPVwibW9kYWwtdGl0bGVcIiBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XG4gICAgICB7eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWlubmVyLXNjcm9sbFwiIGlkPVwibW9kYWwtYm9keVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnbW9kYWwtYm9keSc6ICFjdXN0b21Gb290ZXIsICdkLWNvbnRlbnRzJzogY3VzdG9tRm9vdGVyIH1cIj5cbiAgICAgIDxwICpuZ0lmPVwidGl0bGVcIiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtYnJlYWstd29yZFwiPlxuICAgICAgICB7eyBib2R5IH19XG4gICAgICA8L3A+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCIgKm5nSWY9XCIhY3VzdG9tRm9vdGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2M4eS1tb2RhbC1mb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9XCJ7eyBsYWJlbHMuY2FuY2VsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICpuZ0lmPVwibGFiZWxzLmNhbmNlbFwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAoY2xpY2spPVwiX2Rpc21pc3MoKVwiXG4gICAgPlxuICAgICAge3sgbGFiZWxzLmNhbmNlbCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgdGl0bGU9XCJ7eyBsYWJlbHMub2sgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgKm5nSWY9XCJsYWJlbHMub2tcIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cIl9jbG9zZSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPlxuICAgICAge3sgbGFiZWxzLm9rIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=