@smartbit4all/ng-client 4.2.65 → 4.2.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/esm2022/lib/smart-client/smart-component-api-client.mjs +6 -4
  2. package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +2 -2
  3. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +1 -1
  4. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +5 -3
  5. package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +9 -1
  6. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +2 -2
  7. package/esm2022/lib/smart-grid/smart-grid.component.mjs +1 -1
  8. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +2 -2
  9. package/esm2022/lib/smart-tree/smarttree.component.mjs +1 -1
  10. package/esm2022/lib/view-context/smart-ui-action/components/action-badge/action-badge.component.mjs +2 -2
  11. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +18 -3
  12. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/voice-record-widget/voice-record-widget.component.mjs +3 -3
  13. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +79 -5
  14. package/fesm2022/smartbit4all-ng-client.mjs +119 -18
  15. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  16. package/lib/smart-client/smart-component-api-client.d.ts +1 -1
  17. package/lib/smart-filter-editor/smart-filter-editor.service.d.ts +8 -0
  18. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.d.ts +2 -0
  19. package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +20 -3
  20. package/package.json +1 -1
  21. package/smartbit4all-ng-client-4.2.67.tgz +0 -0
  22. package/smartbit4all-ng-client-4.2.65.tgz +0 -0
@@ -133,6 +133,10 @@ export class UiActionFileUploadDialogComponent {
133
133
  loadFilesIntoWidget(files) {
134
134
  if (ComponentLibrary.PRIMENG === this.compLib) {
135
135
  const dataTransfer = new DataTransfer();
136
+ const existingFiles = Array.from(this.fileUploadPrime.files);
137
+ existingFiles.forEach((file) => {
138
+ dataTransfer.items.add(file);
139
+ });
136
140
  for (const file of files) {
137
141
  dataTransfer.items.add(file);
138
142
  }
@@ -152,12 +156,23 @@ export class UiActionFileUploadDialogComponent {
152
156
  widgetNeeded(type) {
153
157
  return this.descriptor?.upload?.uploadWidgets?.includes(type) ?? false;
154
158
  }
159
+ downloadFile(file) {
160
+ const url = window.URL.createObjectURL(file);
161
+ const a = document.createElement('a');
162
+ a.href = url;
163
+ a.download = file.name;
164
+ a.click();
165
+ window.URL.revokeObjectURL(url);
166
+ }
167
+ removeFile(index) {
168
+ this.fileUploadPrime.removeUploadedFile(index);
169
+ }
155
170
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionFileUploadDialogComponent, deps: [{ token: 'fileUploadDialogService' }, { token: COMPONENT_LIBRARY }, { token: i1.UiActionDescriptorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
156
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionFileUploadDialogComponent, selector: "lib-ui-action-file-upload-dialog", viewQueries: [{ propertyName: "fileUploadPrime", first: true, predicate: ["fileUploadPrimeNg"], descendants: true }, { propertyName: "fileUploadMaterial", first: true, predicate: ["fileUploadMaterial"], descendants: true }], ngImport: i0, template: "<div class=\"folderNameDialogContainer\">\r\n <div class=\"headerContainer\">\r\n <h3 class=\"color-accent-700\">\r\n {{ getTitle() }}\r\n </h3>\r\n @if(compLib === componentLibrary.MATERIAL) {\r\n <button mat-icon-button (click)=\"cancel()\">\r\n <smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\r\n </button>\r\n }@else {\r\n <p-button icon=\"pi pi-times\" [rounded]=\"true\" [text]=\"true\" (click)=\"cancel()\" />\r\n }\r\n </div>\r\n <p>\r\n {{ getText() }}\r\n </p>\r\n\r\n <!-- IMAGE TYPE WIDGET -->\r\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.IMAGE) || widgetNeeded(uploadWidgetType.ALL)\">\r\n <photo-capture-widget\r\n [maxFileSize]=\"maxSizeMb * 1024 * 1024\"\r\n (photoCaptured)=\"uploadImage($event)\"\r\n >\r\n </photo-capture-widget>\r\n </ng-container>\r\n\r\n <!-- SOUND TYPE WIDGET -->\r\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.SOUND) || widgetNeeded(uploadWidgetType.ALL)\">\r\n <voice-record-widget (recordingSaved)=\"uploadRecording($event)\"> </voice-record-widget>\r\n </ng-container>\r\n\r\n @if(compLib === componentLibrary.PRIMENG) {\r\n\r\n <p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSend)=\"uploadFiles($event)\"\r\n (onSelect)=\"onSelect($event)\"\r\n (onRemove)=\"onRemove($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"this.descriptor?.upload?.formats ?? ''\"\r\n [maxFileSize]=\"maxSizeMb * 1024 * 1024\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n >\r\n <ng-template pTemplate=\"content\" *ngIf=\"!hasFiles && !isMobile()\">\r\n <div class=\"uploadField\">\r\n <smart-icon [icon]=\"'upload'\"></smart-icon>\r\n <span class=\"message\">H\u00FAzza ide a f\u00E1jlokat.</span>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n\r\n }@else{\r\n\r\n <smartfileuploader\r\n #fileUploadMaterial\r\n [i18n]=\"i18n\"\r\n [fileFormats]=\"fileFormats\"\r\n [maxSizeMb]=\"maxSizeMb\"\r\n [uploadCallback]=\"upload.bind(this)\"\r\n [isMultiple]=\"isMultiple\"\r\n ></smartfileuploader>\r\n }\r\n\r\n <div class=\"folderNameDialogButtonsContainer\">\r\n <ui-action-button [descriptor]=\"cancelButton\" (actionClick)=\"cancel()\"></ui-action-button>\r\n </div>\r\n</div>\r\n", styles: [".folderNameDialogContainer{display:flex;flex-direction:column;justify-content:center;gap:1rem;min-width:30vw}photo-capture-widget{width:100%;max-width:100%;overflow:hidden;display:flex;flex-direction:column;align-items:center}.headerContainer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:1rem}.headerContainer ::ng-deep button{color:var(--primary-color)}.headerContainer h3{margin:0}.folderNameDialogButtonsContainer{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.folderNameDialogButtonsContainer ::ng-deep button{border-radius:3px}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex!important;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{text-align:center;color:#6b7280}.uploadField{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:1rem;padding:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.folderNameDialogContainer ::ng-deep .p-fileupload-choose,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}.folderNameDialogContainer ::ng-deep .p-fileupload-choose:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover,.folderNameDialogButtonsContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.headerContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.1)}@media (max-width: 900px){.folderNameDialogContainer{width:100%}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i6.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { kind: "component", type: i7.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i8.SmartfileuploaderComponent, selector: "smartfileuploader", inputs: ["uploadCallback", "fileFormats", "maxSizeMb", "i18n", "useIconButton", "isMultiple"] }, { kind: "component", type: i9.VoiceRecordWidgetComponent, selector: "voice-record-widget", outputs: ["recordingSaved"] }, { kind: "component", type: i10.PhotoCaptureWidgetComponent, selector: "photo-capture-widget", inputs: ["maxFileSize"], outputs: ["photoCaptured"] }, { kind: "component", type: i11.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
171
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionFileUploadDialogComponent, selector: "lib-ui-action-file-upload-dialog", viewQueries: [{ propertyName: "fileUploadPrime", first: true, predicate: ["fileUploadPrimeNg"], descendants: true }, { propertyName: "fileUploadMaterial", first: true, predicate: ["fileUploadMaterial"], descendants: true }], ngImport: i0, template: "<div class=\"folderNameDialogContainer\">\r\n <div class=\"headerContainer\">\r\n <h3 class=\"color-accent-700\">\r\n {{ getTitle() }}\r\n </h3>\r\n @if(compLib === componentLibrary.MATERIAL) {\r\n <button mat-icon-button (click)=\"cancel()\">\r\n <smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\r\n </button>\r\n }@else {\r\n <p-button icon=\"pi pi-times\" [rounded]=\"true\" [text]=\"true\" (click)=\"cancel()\" />\r\n }\r\n </div>\r\n <p>\r\n {{ getText() }}\r\n </p>\r\n\r\n <!-- IMAGE TYPE WIDGET -->\r\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.IMAGE) || widgetNeeded(uploadWidgetType.ALL)\">\r\n <photo-capture-widget\r\n [maxFileSize]=\"maxSizeMb * 1024 * 1024\"\r\n (photoCaptured)=\"uploadImage($event)\"\r\n >\r\n </photo-capture-widget>\r\n </ng-container>\r\n\r\n <!-- SOUND TYPE WIDGET -->\r\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.SOUND) || widgetNeeded(uploadWidgetType.ALL)\">\r\n <voice-record-widget (recordingSaved)=\"uploadRecording($event)\"> </voice-record-widget>\r\n </ng-container>\r\n\r\n @if(compLib === componentLibrary.PRIMENG) {\r\n\r\n <p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSend)=\"uploadFiles($event)\"\r\n (onSelect)=\"onSelect($event)\"\r\n (onRemove)=\"onRemove($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"this.descriptor?.upload?.formats ?? ''\"\r\n [maxFileSize]=\"maxSizeMb * 1024 * 1024\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n >\r\n <ng-template pTemplate=\"content\" *ngIf=\"!hasFiles && !isMobile()\">\r\n <div class=\"uploadField\">\r\n <smart-icon [icon]=\"'upload'\"></smart-icon>\r\n <span class=\"message\">H\u00FAzza ide a f\u00E1jlokat.</span>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\r\n <div class=\"p-fileupload-file\">\r\n @if(file.objectURL){\r\n <img role=\"presentation\" [alt]=\"file.name\" [src]=\"file.objectURL\" width=\"50\" height=\"50\" />\r\n }@else {\r\n <i class=\"pi pi-file\" style=\"font-size: 2rem\"></i>\r\n }\r\n\r\n <div class=\"p-file-data\">\r\n <span class=\"file-name\">{{ file.name }}</span>\r\n <button\r\n pButton\r\n icon=\"pi pi-download\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"downloadFile(file)\"\r\n aria-label=\"Download\"\r\n style=\"color: var(--primary-color)\"\r\n ></button>\r\n <button\r\n pButton\r\n icon=\"pi pi-times\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"removeFile(i)\"\r\n aria-label=\"Remove\"\r\n style=\"color: rgb(239, 68, 68)\"\r\n ></button\r\n ></div>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n\r\n }@else{\r\n\r\n <smartfileuploader\r\n #fileUploadMaterial\r\n [i18n]=\"i18n\"\r\n [fileFormats]=\"fileFormats\"\r\n [maxSizeMb]=\"maxSizeMb\"\r\n [uploadCallback]=\"upload.bind(this)\"\r\n [isMultiple]=\"isMultiple\"\r\n ></smartfileuploader>\r\n }\r\n\r\n <div class=\"folderNameDialogButtonsContainer\">\r\n <ui-action-button [descriptor]=\"cancelButton\" (actionClick)=\"cancel()\"></ui-action-button>\r\n </div>\r\n</div>\r\n", styles: [".folderNameDialogContainer{display:flex;flex-direction:column;justify-content:center;gap:1rem;min-width:30vw}photo-capture-widget{width:100%;max-width:100%;overflow:hidden;display:flex;flex-direction:column;align-items:center}.headerContainer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:1rem}.headerContainer ::ng-deep button{color:var(--primary-color)}.headerContainer h3{margin:0}.folderNameDialogButtonsContainer{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.folderNameDialogButtonsContainer ::ng-deep button{border-radius:3px}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex!important;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{text-align:center;color:#6b7280}.uploadField{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:1rem;padding:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.folderNameDialogContainer ::ng-deep .p-fileupload-choose,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}.folderNameDialogContainer ::ng-deep .p-fileupload-choose:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover,.folderNameDialogButtonsContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.headerContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.1)}@media (max-width: 900px){.folderNameDialogContainer{width:100%}}.p-fileupload-file{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid #dee2e6}.p-file-data{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i6.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { kind: "component", type: i7.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i8.SmartfileuploaderComponent, selector: "smartfileuploader", inputs: ["uploadCallback", "fileFormats", "maxSizeMb", "i18n", "useIconButton", "isMultiple"] }, { kind: "component", type: i9.VoiceRecordWidgetComponent, selector: "voice-record-widget", outputs: ["recordingSaved"] }, { kind: "component", type: i10.PhotoCaptureWidgetComponent, selector: "photo-capture-widget", inputs: ["maxFileSize"], outputs: ["photoCaptured"] }, { kind: "component", type: i11.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
157
172
  }
158
173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionFileUploadDialogComponent, decorators: [{
159
174
  type: Component,
160
- args: [{ selector: 'lib-ui-action-file-upload-dialog', template: "<div class=\"folderNameDialogContainer\">\r\n <div class=\"headerContainer\">\r\n <h3 class=\"color-accent-700\">\r\n {{ getTitle() }}\r\n </h3>\r\n @if(compLib === componentLibrary.MATERIAL) {\r\n <button mat-icon-button (click)=\"cancel()\">\r\n <smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\r\n </button>\r\n }@else {\r\n <p-button icon=\"pi pi-times\" [rounded]=\"true\" [text]=\"true\" (click)=\"cancel()\" />\r\n }\r\n </div>\r\n <p>\r\n {{ getText() }}\r\n </p>\r\n\r\n <!-- IMAGE TYPE WIDGET -->\r\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.IMAGE) || widgetNeeded(uploadWidgetType.ALL)\">\r\n <photo-capture-widget\r\n [maxFileSize]=\"maxSizeMb * 1024 * 1024\"\r\n (photoCaptured)=\"uploadImage($event)\"\r\n >\r\n </photo-capture-widget>\r\n </ng-container>\r\n\r\n <!-- SOUND TYPE WIDGET -->\r\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.SOUND) || widgetNeeded(uploadWidgetType.ALL)\">\r\n <voice-record-widget (recordingSaved)=\"uploadRecording($event)\"> </voice-record-widget>\r\n </ng-container>\r\n\r\n @if(compLib === componentLibrary.PRIMENG) {\r\n\r\n <p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSend)=\"uploadFiles($event)\"\r\n (onSelect)=\"onSelect($event)\"\r\n (onRemove)=\"onRemove($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"this.descriptor?.upload?.formats ?? ''\"\r\n [maxFileSize]=\"maxSizeMb * 1024 * 1024\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n >\r\n <ng-template pTemplate=\"content\" *ngIf=\"!hasFiles && !isMobile()\">\r\n <div class=\"uploadField\">\r\n <smart-icon [icon]=\"'upload'\"></smart-icon>\r\n <span class=\"message\">H\u00FAzza ide a f\u00E1jlokat.</span>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n\r\n }@else{\r\n\r\n <smartfileuploader\r\n #fileUploadMaterial\r\n [i18n]=\"i18n\"\r\n [fileFormats]=\"fileFormats\"\r\n [maxSizeMb]=\"maxSizeMb\"\r\n [uploadCallback]=\"upload.bind(this)\"\r\n [isMultiple]=\"isMultiple\"\r\n ></smartfileuploader>\r\n }\r\n\r\n <div class=\"folderNameDialogButtonsContainer\">\r\n <ui-action-button [descriptor]=\"cancelButton\" (actionClick)=\"cancel()\"></ui-action-button>\r\n </div>\r\n</div>\r\n", styles: [".folderNameDialogContainer{display:flex;flex-direction:column;justify-content:center;gap:1rem;min-width:30vw}photo-capture-widget{width:100%;max-width:100%;overflow:hidden;display:flex;flex-direction:column;align-items:center}.headerContainer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:1rem}.headerContainer ::ng-deep button{color:var(--primary-color)}.headerContainer h3{margin:0}.folderNameDialogButtonsContainer{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.folderNameDialogButtonsContainer ::ng-deep button{border-radius:3px}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex!important;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{text-align:center;color:#6b7280}.uploadField{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:1rem;padding:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.folderNameDialogContainer ::ng-deep .p-fileupload-choose,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}.folderNameDialogContainer ::ng-deep .p-fileupload-choose:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover,.folderNameDialogButtonsContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.headerContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.1)}@media (max-width: 900px){.folderNameDialogContainer{width:100%}}\n"] }]
175
+ args: [{ selector: 'lib-ui-action-file-upload-dialog', template: "<div class=\"folderNameDialogContainer\">\r\n <div class=\"headerContainer\">\r\n <h3 class=\"color-accent-700\">\r\n {{ getTitle() }}\r\n </h3>\r\n @if(compLib === componentLibrary.MATERIAL) {\r\n <button mat-icon-button (click)=\"cancel()\">\r\n <smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\r\n </button>\r\n }@else {\r\n <p-button icon=\"pi pi-times\" [rounded]=\"true\" [text]=\"true\" (click)=\"cancel()\" />\r\n }\r\n </div>\r\n <p>\r\n {{ getText() }}\r\n </p>\r\n\r\n <!-- IMAGE TYPE WIDGET -->\r\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.IMAGE) || widgetNeeded(uploadWidgetType.ALL)\">\r\n <photo-capture-widget\r\n [maxFileSize]=\"maxSizeMb * 1024 * 1024\"\r\n (photoCaptured)=\"uploadImage($event)\"\r\n >\r\n </photo-capture-widget>\r\n </ng-container>\r\n\r\n <!-- SOUND TYPE WIDGET -->\r\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.SOUND) || widgetNeeded(uploadWidgetType.ALL)\">\r\n <voice-record-widget (recordingSaved)=\"uploadRecording($event)\"> </voice-record-widget>\r\n </ng-container>\r\n\r\n @if(compLib === componentLibrary.PRIMENG) {\r\n\r\n <p-fileUpload\r\n #fileUploadPrimeNg\r\n name=\"files[]\"\r\n url=\"\"\r\n (onSend)=\"uploadFiles($event)\"\r\n (onSelect)=\"onSelect($event)\"\r\n (onRemove)=\"onRemove($event)\"\r\n [multiple]=\"isMultiple\"\r\n [accept]=\"this.descriptor?.upload?.formats ?? ''\"\r\n [maxFileSize]=\"maxSizeMb * 1024 * 1024\"\r\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\r\n cancelLabel=\"M\u00E9gsem\"\r\n chooseLabel=\"V\u00E1laszt\u00E1s\"\r\n >\r\n <ng-template pTemplate=\"content\" *ngIf=\"!hasFiles && !isMobile()\">\r\n <div class=\"uploadField\">\r\n <smart-icon [icon]=\"'upload'\"></smart-icon>\r\n <span class=\"message\">H\u00FAzza ide a f\u00E1jlokat.</span>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\r\n <div class=\"p-fileupload-file\">\r\n @if(file.objectURL){\r\n <img role=\"presentation\" [alt]=\"file.name\" [src]=\"file.objectURL\" width=\"50\" height=\"50\" />\r\n }@else {\r\n <i class=\"pi pi-file\" style=\"font-size: 2rem\"></i>\r\n }\r\n\r\n <div class=\"p-file-data\">\r\n <span class=\"file-name\">{{ file.name }}</span>\r\n <button\r\n pButton\r\n icon=\"pi pi-download\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"downloadFile(file)\"\r\n aria-label=\"Download\"\r\n style=\"color: var(--primary-color)\"\r\n ></button>\r\n <button\r\n pButton\r\n icon=\"pi pi-times\"\r\n class=\"p-button-text file-action\"\r\n (click)=\"removeFile(i)\"\r\n aria-label=\"Remove\"\r\n style=\"color: rgb(239, 68, 68)\"\r\n ></button\r\n ></div>\r\n </div>\r\n </ng-template>\r\n </p-fileUpload>\r\n\r\n }@else{\r\n\r\n <smartfileuploader\r\n #fileUploadMaterial\r\n [i18n]=\"i18n\"\r\n [fileFormats]=\"fileFormats\"\r\n [maxSizeMb]=\"maxSizeMb\"\r\n [uploadCallback]=\"upload.bind(this)\"\r\n [isMultiple]=\"isMultiple\"\r\n ></smartfileuploader>\r\n }\r\n\r\n <div class=\"folderNameDialogButtonsContainer\">\r\n <ui-action-button [descriptor]=\"cancelButton\" (actionClick)=\"cancel()\"></ui-action-button>\r\n </div>\r\n</div>\r\n", styles: [".folderNameDialogContainer{display:flex;flex-direction:column;justify-content:center;gap:1rem;min-width:30vw}photo-capture-widget{width:100%;max-width:100%;overflow:hidden;display:flex;flex-direction:column;align-items:center}.headerContainer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:1rem}.headerContainer ::ng-deep button{color:var(--primary-color)}.headerContainer h3{margin:0}.folderNameDialogButtonsContainer{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.folderNameDialogButtonsContainer ::ng-deep button{border-radius:3px}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex!important;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{text-align:center;color:#6b7280}.uploadField{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:1rem;padding:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.folderNameDialogContainer ::ng-deep .p-fileupload-choose,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}.folderNameDialogContainer ::ng-deep .p-fileupload-choose:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover,.folderNameDialogButtonsContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.headerContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.1)}@media (max-width: 900px){.folderNameDialogContainer{width:100%}}.p-fileupload-file{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid #dee2e6}.p-file-data{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}\n"] }]
161
176
  }], ctorParameters: () => [{ type: i12.UiActionFileUploadDialogService, decorators: [{
162
177
  type: Inject,
163
178
  args: ['fileUploadDialogService']
@@ -171,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
171
186
  type: ViewChild,
172
187
  args: ['fileUploadMaterial']
173
188
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vZGlhbG9ncy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixFQUVsQixnQkFBZ0IsR0FDakIsTUFBTSxjQUFjLENBQUM7QUFJdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVN4RSxNQUFNLE9BQU8saUNBQWlDO0lBb0I1QyxZQUM2QyxPQUF3QyxFQUNqRCxPQUF5QixFQUNuRCxPQUFrQyxFQUNsQyxHQUFzQjtRQUhhLFlBQU8sR0FBUCxPQUFPLENBQWlDO1FBQ2pELFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ25ELFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ2xDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZmhDLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3BDLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBRXBD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QUM7Z0JBQ3pCLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBYSxZQUFZLENBQUMsS0FBSyxDQUFDO1lBRTlDLE1BQU0sU0FBUyxHQUFHO2dCQUNoQixNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFLFFBQVE7aUJBQ2hCO2dCQUNELElBQUksRUFBRSxRQUFRO2FBQ2YsQ0FBQztZQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFzQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3pFLENBQUM7K0dBM0tVLGlDQUFpQyxrQkFxQmxDLHlCQUF5QixhQUN6QixpQkFBaUI7bUdBdEJoQixpQ0FBaUMseVNDbkI5QyxrM0VBdUVBOzs0RkRwRGEsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLGtDQUFrQzs7MEJBeUJ6QyxNQUFNOzJCQUFDLHlCQUF5Qjs7MEJBQ2hDLE1BQU07MkJBQUMsaUJBQWlCO2lIQXJCSyxlQUFlO3NCQUE5QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRyxrQkFBa0I7c0JBQWxELFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEljb25Qb3NpdGlvbixcclxuICBVaUFjdGlvbkJ1dHRvblR5cGUsXHJcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxyXG4gIFVwbG9hZFdpZGdldFR5cGUsXHJcbn0gZnJvbSAnLi4vLi4vLi4vYXBpJztcclxuaW1wb3J0IHsgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3VpLWFjdGlvbi5kZXNjcmlwdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkZpbGVVcGxvYWREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEZpbGVVcGxvYWRlckkxOG4gfSBmcm9tICcuLi8uLi8uLi8uLi9zbWFydC1mb3JtL3NtYXJ0ZmlsZXVwbG9hZGVyL3NtYXJ0ZmlsZXVwbG9hZGVyLm1vZGVsJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi8uLi9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5pbXBvcnQgeyBTbWFydGZpbGV1cGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL3NtYXJ0LWZvcm0vc21hcnRmaWxldXBsb2FkZXIvc21hcnRmaWxldXBsb2FkZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpQWN0aW9uRmlsZVVwbG9hZERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZFByaW1lTmcnKSBmaWxlVXBsb2FkUHJpbWUhOiBGaWxlVXBsb2FkO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWRNYXRlcmlhbCcpIGZpbGVVcGxvYWRNYXRlcmlhbCE6IFNtYXJ0ZmlsZXVwbG9hZGVyQ29tcG9uZW50O1xyXG5cclxuICBjb2RlITogc3RyaW5nO1xyXG5cclxuICBkaWFsb2dUeXBlITogJ2RpYWxvZycgfCAnaW5wdXREaWFsb2cnIHwgJ2lucHV0MkRpYWxvZyc7XHJcblxyXG4gIGRlc2NyaXB0b3I/OiBVaUFjdGlvbkRlc2NyaXB0b3I7XHJcbiAgY29tcG9uZW50TGlicmFyeSA9IENvbXBvbmVudExpYnJhcnk7XHJcbiAgdXBsb2FkV2lkZ2V0VHlwZSA9IFVwbG9hZFdpZGdldFR5cGU7XHJcbiAgaTE4bj86IFNtYXJ0RmlsZVVwbG9hZGVySTE4bjtcclxuICBtYXhTaXplTWI6IG51bWJlciA9IDI1O1xyXG4gIGZpbGVGb3JtYXRzPzogc3RyaW5nW107XHJcbiAgaXNNdWx0aXBsZT86IGJvb2xlYW47XHJcbiAgaGFzRmlsZXM/OiBib29sZWFuO1xyXG5cclxuICB1cGxvYWRlZEZpbGVzOiBhbnlbXSA9IFtdO1xyXG4gIGNhbmNlbEJ1dHRvbiE6IFVpQWN0aW9uRGVzY3JpcHRvcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdmaWxlVXBsb2FkRGlhbG9nU2VydmljZScpIHByaXZhdGUgc2VydmljZTogVWlBY3Rpb25GaWxlVXBsb2FkRGlhbG9nU2VydmljZSxcclxuICAgIEBJbmplY3QoQ09NUE9ORU5UX0xJQlJBUlkpIHB1YmxpYyBjb21wTGliOiBDb21wb25lbnRMaWJyYXJ5LFxyXG4gICAgcHJpdmF0ZSBtYW5hZ2VyOiBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvZGUgPSB0aGlzLnNlcnZpY2UuYWN0aW9uLmNvZGUhO1xyXG4gICAgdGhpcy5zZXRVcCgpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5jYW5jZWwoKTtcclxuICB9XHJcblxyXG4gIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIC9pUGhvbmV8aVBhZHxpUG9kfEFuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2V0VXAoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmNhbmNlbEJ1dHRvbiA9IHtcclxuICAgICAgdGl0bGU6ICdNw6lnc2UnLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VELFxyXG4gICAgICBpY29uOiB0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORyA/ICd0aW1lcycgOiAnY2xvc2UnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZGVzY3JpcHRvciA9IGF3YWl0IHRoaXMubWFuYWdlci5nZXRBY3Rpb25EZXNjcmlwdG9yKHRoaXMuc2VydmljZS5hY3Rpb24pO1xyXG5cclxuICAgIHRoaXMuaXNNdWx0aXBsZSA9IHRoaXMuc2VydmljZS5pc011bHRpcGxlO1xyXG4gICAgdGhpcy5tYXhTaXplTWIgPSBOdW1iZXIodGhpcy5kZXNjcmlwdG9yLnVwbG9hZD8ubWF4U2l6ZSk7XHJcbiAgICBpZiAodGhpcy5kZXNjcmlwdG9yPy51cGxvYWQ/LmZvcm1hdHMpIHtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0cyA9IFt0aGlzLmRlc2NyaXB0b3IudXBsb2FkLmZvcm1hdHNdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGZpbGVGb3JtYXRzID0gdGhpcy5kZXNjcmlwdG9yLnVwbG9hZD8uZm9ybWF0cztcclxuICAgIHRoaXMuaTE4biA9IHtcclxuICAgICAgYWRkRmlsZTogdGhpcy5kZXNjcmlwdG9yLnVwbG9hZD8udGl0bGUgPz8gJ2Rva3VtZW50dW0gaG96esOhYWTDoXNhJyxcclxuICAgICAgYnJvd3NlT3JEcmFnOiB0aGlzLmRlc2NyaXB0b3IudXBsb2FkPy5kZXNjcmlwdGlvbiA/PyAndGFsbMOzesOhcyB2YWd5IGJlaMO6esOhcycsXHJcbiAgICAgIGZvcm1hdHM6IHRoaXMuZGVzY3JpcHRvci51cGxvYWQ/LmZvcm1hdHMgPz8gJycsXHJcbiAgICAgIG1heFNpemU6IHRoaXMuZGVzY3JpcHRvci51cGxvYWQ/Lm1heFNpemUgPz8gJycsXHJcbiAgICAgIHVwbG9hZDogdGhpcy5kZXNjcmlwdG9yLnVwbG9hZD8udXBsb2FkQnV0dG9uVGl0bGUsXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFRPRE8gc2V0IG1heCBzaXplIGFuZCBmaWxlIGZvcm1hdHMgYnkgVWlBY3Rpb24ucGFyYW1zXHJcblxyXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRvclt0aGlzLnNlcnZpY2UuaW5wdXRUeXBlTmFtZV0pIHtcclxuICAgICAgdGhpcy5kaWFsb2dUeXBlID0gdGhpcy5zZXJ2aWNlLmlucHV0VHlwZU5hbWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpYWxvZ1R5cGUgPSB0aGlzLmRlc2NyaXB0b3IuaW5wdXREaWFsb2cgPyAnaW5wdXREaWFsb2cnIDogJ2RpYWxvZyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRUaXRsZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yW3RoaXMuZGlhbG9nVHlwZV0/LnRpdGxlID8/ICdGw6FqbCBob3p6w6FhZMOhc2EnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGV4dCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yW3RoaXMuZGlhbG9nVHlwZV0/LnRleHQgPz8gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIGdldEFjdGlvbkJ1dHRvbkxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5kZXNjcmlwdG9yKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3JbdGhpcy5kaWFsb2dUeXBlXT8uYWN0aW9uQnV0dG9uLmNhcHRpb24gPz8gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIGdldEFjdGlvbkJ1dHRvbkNvbG9yKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5kZXNjcmlwdG9yKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3JbdGhpcy5kaWFsb2dUeXBlXT8uYWN0aW9uQnV0dG9uLmNvbG9yID8/ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuICBnZXRDYW5jZWxCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yW3RoaXMuZGlhbG9nVHlwZV0/LmNhbmNlbEJ1dHRvbi5jYXB0aW9uID8/ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuICBnZXRDYW5jZWxCdXR0b25Db2xvcigpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yW3RoaXMuZGlhbG9nVHlwZV0/LmNhbmNlbEJ1dHRvbi5jb2xvciA/PyAnJztcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHVwbG9hZChmaWxlczogYW55W10pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5vblNhdmUoZmlsZXMpO1xyXG4gIH1cclxuICBvblNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGZpbGUgb2YgZXZlbnQuZmlsZXMpIHtcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2goZmlsZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhhc0ZpbGVzID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uUmVtb3ZlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFtdO1xyXG4gICAgdGhpcy5oYXNGaWxlcyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkRmlsZXMoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLm9uU2F2ZSh0aGlzLnVwbG9hZGVkRmlsZXMpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLmNhbmNlbCgpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkUmVjb3JkaW5nKGZpbGU6IGFueSkge1xyXG4gICAgdGhpcy5sb2FkRmlsZXNJbnRvV2lkZ2V0KFtmaWxlXSk7XHJcbiAgICB0aGlzLmhhc0ZpbGVzID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEltYWdlKGZpbGVzOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZEZpbGVzSW50b1dpZGdldChmaWxlcyk7XHJcbiAgICB0aGlzLmhhc0ZpbGVzID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGxvYWRGaWxlc0ludG9XaWRnZXQoZmlsZXM6IEZpbGVbXSkge1xyXG4gICAgaWYgKENvbXBvbmVudExpYnJhcnkuUFJJTUVORyA9PT0gdGhpcy5jb21wTGliKSB7XHJcbiAgICAgIGNvbnN0IGRhdGFUcmFuc2ZlciA9IG5ldyBEYXRhVHJhbnNmZXIoKTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICAgIGRhdGFUcmFuc2Zlci5pdGVtcy5hZGQoZmlsZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGZpbGVMaXN0OiBGaWxlTGlzdCA9IGRhdGFUcmFuc2Zlci5maWxlcztcclxuXHJcbiAgICAgIGNvbnN0IGZha2VFdmVudCA9IHtcclxuICAgICAgICB0YXJnZXQ6IHtcclxuICAgICAgICAgIGZpbGVzOiBmaWxlTGlzdCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHR5cGU6ICdjaGFuZ2UnLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5maWxlVXBsb2FkUHJpbWUub25GaWxlU2VsZWN0KGZha2VFdmVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbGVVcGxvYWRNYXRlcmlhbC5maWxlcy5wdXNoKC4uLmZpbGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdpZGdldE5lZWRlZCh0eXBlOiBVcGxvYWRXaWRnZXRUeXBlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yPy51cGxvYWQ/LnVwbG9hZFdpZGdldHM/LmluY2x1ZGVzKHR5cGUpID8/IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9sZGVyTmFtZURpYWxvZ0NvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJDb250YWluZXJcIj5cclxuICAgIDxoMyBjbGFzcz1cImNvbG9yLWFjY2VudC03MDBcIj5cclxuICAgICAge3sgZ2V0VGl0bGUoKSB9fVxyXG4gICAgPC9oMz5cclxuICAgIEBpZihjb21wTGliID09PSBjb21wb25lbnRMaWJyYXJ5Lk1BVEVSSUFMKSB7XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIj5cclxuICAgICAgPHNtYXJ0LWljb24gW2NvbG9yXT1cIidwcmltYXJ5J1wiIFtpY29uXT1cIidYJ1wiPjwvc21hcnQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgfUBlbHNlIHtcclxuICAgIDxwLWJ1dHRvbiBpY29uPVwicGkgcGktdGltZXNcIiBbcm91bmRlZF09XCJ0cnVlXCIgW3RleHRdPVwidHJ1ZVwiIChjbGljayk9XCJjYW5jZWwoKVwiIC8+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPHA+XHJcbiAgICB7eyBnZXRUZXh0KCkgfX1cclxuICA8L3A+XHJcblxyXG4gIDwhLS0gSU1BR0UgVFlQRSBXSURHRVQgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndpZGdldE5lZWRlZCh1cGxvYWRXaWRnZXRUeXBlLklNQUdFKSB8fCB3aWRnZXROZWVkZWQodXBsb2FkV2lkZ2V0VHlwZS5BTEwpXCI+XHJcbiAgICA8cGhvdG8tY2FwdHVyZS13aWRnZXRcclxuICAgICAgW21heEZpbGVTaXplXT1cIm1heFNpemVNYiAqIDEwMjQgKiAxMDI0XCJcclxuICAgICAgKHBob3RvQ2FwdHVyZWQpPVwidXBsb2FkSW1hZ2UoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L3Bob3RvLWNhcHR1cmUtd2lkZ2V0PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIFNPVU5EIFRZUEUgV0lER0VUIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aWRnZXROZWVkZWQodXBsb2FkV2lkZ2V0VHlwZS5TT1VORCkgfHwgd2lkZ2V0TmVlZGVkKHVwbG9hZFdpZGdldFR5cGUuQUxMKVwiPlxyXG4gICAgPHZvaWNlLXJlY29yZC13aWRnZXQgKHJlY29yZGluZ1NhdmVkKT1cInVwbG9hZFJlY29yZGluZygkZXZlbnQpXCI+IDwvdm9pY2UtcmVjb3JkLXdpZGdldD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgQGlmKGNvbXBMaWIgPT09IGNvbXBvbmVudExpYnJhcnkuUFJJTUVORykge1xyXG5cclxuICA8cC1maWxlVXBsb2FkXHJcbiAgICAjZmlsZVVwbG9hZFByaW1lTmdcclxuICAgIG5hbWU9XCJmaWxlc1tdXCJcclxuICAgIHVybD1cIlwiXHJcbiAgICAob25TZW5kKT1cInVwbG9hZEZpbGVzKCRldmVudClcIlxyXG4gICAgKG9uU2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudClcIlxyXG4gICAgKG9uUmVtb3ZlKT1cIm9uUmVtb3ZlKCRldmVudClcIlxyXG4gICAgW211bHRpcGxlXT1cImlzTXVsdGlwbGVcIlxyXG4gICAgW2FjY2VwdF09XCJ0aGlzLmRlc2NyaXB0b3I/LnVwbG9hZD8uZm9ybWF0cyA/PyAnJ1wiXHJcbiAgICBbbWF4RmlsZVNpemVdPVwibWF4U2l6ZU1iICogMTAyNCAqIDEwMjRcIlxyXG4gICAgdXBsb2FkTGFiZWw9XCJGZWx0w7ZsdMOpc1wiXHJcbiAgICBjYW5jZWxMYWJlbD1cIk3DqWdzZW1cIlxyXG4gICAgY2hvb3NlTGFiZWw9XCJWw6FsYXN6dMOhc1wiXHJcbiAgPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiAqbmdJZj1cIiFoYXNGaWxlcyAmJiAhaXNNb2JpbGUoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkRmllbGRcIj5cclxuICAgICAgICA8c21hcnQtaWNvbiBbaWNvbl09XCIndXBsb2FkJ1wiPjwvc21hcnQtaWNvbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1lc3NhZ2VcIj5Iw7p6emEgaWRlIGEgZsOhamxva2F0Ljwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC1maWxlVXBsb2FkPlxyXG5cclxuICB9QGVsc2V7XHJcblxyXG4gIDxzbWFydGZpbGV1cGxvYWRlclxyXG4gICAgI2ZpbGVVcGxvYWRNYXRlcmlhbFxyXG4gICAgW2kxOG5dPVwiaTE4blwiXHJcbiAgICBbZmlsZUZvcm1hdHNdPVwiZmlsZUZvcm1hdHNcIlxyXG4gICAgW21heFNpemVNYl09XCJtYXhTaXplTWJcIlxyXG4gICAgW3VwbG9hZENhbGxiYWNrXT1cInVwbG9hZC5iaW5kKHRoaXMpXCJcclxuICAgIFtpc011bHRpcGxlXT1cImlzTXVsdGlwbGVcIlxyXG4gID48L3NtYXJ0ZmlsZXVwbG9hZGVyPlxyXG4gIH1cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZvbGRlck5hbWVEaWFsb2dCdXR0b25zQ29udGFpbmVyXCI+XHJcbiAgICA8dWktYWN0aW9uLWJ1dHRvbiBbZGVzY3JpcHRvcl09XCJjYW5jZWxCdXR0b25cIiAoYWN0aW9uQ2xpY2spPVwiY2FuY2VsKClcIj48L3VpLWFjdGlvbi1idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vZGlhbG9ncy91aS1hY3Rpb24tZmlsZS11cGxvYWQtZGlhbG9nL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixFQUVsQixnQkFBZ0IsR0FDakIsTUFBTSxjQUFjLENBQUM7QUFJdEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVN4RSxNQUFNLE9BQU8saUNBQWlDO0lBbUI1QyxZQUM2QyxPQUF3QyxFQUNqRCxPQUF5QixFQUNuRCxPQUFrQyxFQUNsQyxHQUFzQjtRQUhhLFlBQU8sR0FBUCxPQUFPLENBQWlDO1FBQ2pELFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ25ELFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ2xDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZmhDLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3BDLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBRXBD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dkIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQzsrR0EzTFUsaUNBQWlDLGtCQW9CbEMseUJBQXlCLGFBQ3pCLGlCQUFpQjttR0FyQmhCLGlDQUFpQyx5U0NuQjlDLHE3R0FvR0E7OzRGRGpGYSxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0Usa0NBQWtDOzswQkF3QnpDLE1BQU07MkJBQUMseUJBQXlCOzswQkFDaEMsTUFBTTsyQkFBQyxpQkFBaUI7aUhBcEJLLGVBQWU7c0JBQTlDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNHLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgSWNvblBvc2l0aW9uLFxyXG4gIFVpQWN0aW9uQnV0dG9uVHlwZSxcclxuICBVaUFjdGlvbkRlc2NyaXB0b3IsXHJcbiAgVXBsb2FkV2lkZ2V0VHlwZSxcclxufSBmcm9tICcuLi8uLi8uLi9hcGknO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdWktYWN0aW9uLmRlc2NyaXB0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uRmlsZVVwbG9hZERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0RmlsZVVwbG9hZGVySTE4biB9IGZyb20gJy4uLy4uLy4uLy4uL3NtYXJ0LWZvcm0vc21hcnRmaWxldXBsb2FkZXIvc21hcnRmaWxldXBsb2FkZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBDT01QT05FTlRfTElCUkFSWSwgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uLy4uLy4uL3Byb2plY3RzJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFNtYXJ0ZmlsZXVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vc21hcnQtZm9ybS9zbWFydGZpbGV1cGxvYWRlci9zbWFydGZpbGV1cGxvYWRlci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlBY3Rpb25GaWxlVXBsb2FkRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdmaWxlVXBsb2FkUHJpbWVOZycpIGZpbGVVcGxvYWRQcmltZSE6IEZpbGVVcGxvYWQ7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZE1hdGVyaWFsJykgZmlsZVVwbG9hZE1hdGVyaWFsITogU21hcnRmaWxldXBsb2FkZXJDb21wb25lbnQ7XHJcblxyXG4gIGNvZGUhOiBzdHJpbmc7XHJcbiAgZGlhbG9nVHlwZSE6ICdkaWFsb2cnIHwgJ2lucHV0RGlhbG9nJyB8ICdpbnB1dDJEaWFsb2cnO1xyXG5cclxuICBkZXNjcmlwdG9yPzogVWlBY3Rpb25EZXNjcmlwdG9yO1xyXG4gIGNvbXBvbmVudExpYnJhcnkgPSBDb21wb25lbnRMaWJyYXJ5O1xyXG4gIHVwbG9hZFdpZGdldFR5cGUgPSBVcGxvYWRXaWRnZXRUeXBlO1xyXG4gIGkxOG4/OiBTbWFydEZpbGVVcGxvYWRlckkxOG47XHJcbiAgbWF4U2l6ZU1iOiBudW1iZXIgPSAyNTtcclxuICBmaWxlRm9ybWF0cz86IHN0cmluZ1tdO1xyXG4gIGlzTXVsdGlwbGU/OiBib29sZWFuO1xyXG4gIGhhc0ZpbGVzPzogYm9vbGVhbjtcclxuXHJcbiAgdXBsb2FkZWRGaWxlczogYW55W10gPSBbXTtcclxuICBjYW5jZWxCdXR0b24hOiBVaUFjdGlvbkRlc2NyaXB0b3I7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnZmlsZVVwbG9hZERpYWxvZ1NlcnZpY2UnKSBwcml2YXRlIHNlcnZpY2U6IFVpQWN0aW9uRmlsZVVwbG9hZERpYWxvZ1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBwdWJsaWMgY29tcExpYjogQ29tcG9uZW50TGlicmFyeSxcclxuICAgIHByaXZhdGUgbWFuYWdlcjogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5jb2RlID0gdGhpcy5zZXJ2aWNlLmFjdGlvbi5jb2RlITtcclxuICAgIHRoaXMuc2V0VXAoKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgfVxyXG5cclxuICBpc01vYmlsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAvaVBob25lfGlQYWR8aVBvZHxBbmRyb2lkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNldFVwKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5jYW5jZWxCdXR0b24gPSB7XHJcbiAgICAgIHRpdGxlOiAnTcOpZ3NlJyxcclxuICAgICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLlJBSVNFRCxcclxuICAgICAgaWNvbjogdGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAndGltZXMnIDogJ2Nsb3NlJyxcclxuICAgICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmRlc2NyaXB0b3IgPSBhd2FpdCB0aGlzLm1hbmFnZXIuZ2V0QWN0aW9uRGVzY3JpcHRvcih0aGlzLnNlcnZpY2UuYWN0aW9uKTtcclxuXHJcbiAgICB0aGlzLmlzTXVsdGlwbGUgPSB0aGlzLnNlcnZpY2UuaXNNdWx0aXBsZTtcclxuICAgIHRoaXMubWF4U2l6ZU1iID0gTnVtYmVyKHRoaXMuZGVzY3JpcHRvci51cGxvYWQ/Lm1heFNpemUpO1xyXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRvcj8udXBsb2FkPy5mb3JtYXRzKSB7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdHMgPSBbdGhpcy5kZXNjcmlwdG9yLnVwbG9hZC5mb3JtYXRzXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBmaWxlRm9ybWF0cyA9IHRoaXMuZGVzY3JpcHRvci51cGxvYWQ/LmZvcm1hdHM7XHJcbiAgICB0aGlzLmkxOG4gPSB7XHJcbiAgICAgIGFkZEZpbGU6IHRoaXMuZGVzY3JpcHRvci51cGxvYWQ/LnRpdGxlID8/ICdkb2t1bWVudHVtIGhvenrDoWFkw6FzYScsXHJcbiAgICAgIGJyb3dzZU9yRHJhZzogdGhpcy5kZXNjcmlwdG9yLnVwbG9hZD8uZGVzY3JpcHRpb24gPz8gJ3RhbGzDs3rDoXMgdmFneSBiZWjDunrDoXMnLFxyXG4gICAgICBmb3JtYXRzOiB0aGlzLmRlc2NyaXB0b3IudXBsb2FkPy5mb3JtYXRzID8/ICcnLFxyXG4gICAgICBtYXhTaXplOiB0aGlzLmRlc2NyaXB0b3IudXBsb2FkPy5tYXhTaXplID8/ICcnLFxyXG4gICAgICB1cGxvYWQ6IHRoaXMuZGVzY3JpcHRvci51cGxvYWQ/LnVwbG9hZEJ1dHRvblRpdGxlLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBUT0RPIHNldCBtYXggc2l6ZSBhbmQgZmlsZSBmb3JtYXRzIGJ5IFVpQWN0aW9uLnBhcmFtc1xyXG5cclxuICAgIGlmICh0aGlzLmRlc2NyaXB0b3JbdGhpcy5zZXJ2aWNlLmlucHV0VHlwZU5hbWVdKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nVHlwZSA9IHRoaXMuc2VydmljZS5pbnB1dFR5cGVOYW1lO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaWFsb2dUeXBlID0gdGhpcy5kZXNjcmlwdG9yLmlucHV0RGlhbG9nID8gJ2lucHV0RGlhbG9nJyA6ICdkaWFsb2cnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGl0bGUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmRlc2NyaXB0b3IpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvclt0aGlzLmRpYWxvZ1R5cGVdPy50aXRsZSA/PyAnRsOhamwgaG96esOhYWTDoXNhJztcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldFRleHQoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmRlc2NyaXB0b3IpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvclt0aGlzLmRpYWxvZ1R5cGVdPy50ZXh0ID8/ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuICBnZXRBY3Rpb25CdXR0b25MYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yW3RoaXMuZGlhbG9nVHlwZV0/LmFjdGlvbkJ1dHRvbi5jYXB0aW9uID8/ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuICBnZXRBY3Rpb25CdXR0b25Db2xvcigpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZGVzY3JpcHRvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZXNjcmlwdG9yW3RoaXMuZGlhbG9nVHlwZV0/LmFjdGlvbkJ1dHRvbi5jb2xvciA/PyAnJztcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbiAgZ2V0Q2FuY2VsQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmRlc2NyaXB0b3IpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvclt0aGlzLmRpYWxvZ1R5cGVdPy5jYW5jZWxCdXR0b24uY2FwdGlvbiA/PyAnJztcclxuICAgIH1cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbiAgZ2V0Q2FuY2VsQnV0dG9uQ29sb3IoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmRlc2NyaXB0b3IpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvclt0aGlzLmRpYWxvZ1R5cGVdPy5jYW5jZWxCdXR0b24uY29sb3IgPz8gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICB1cGxvYWQoZmlsZXM6IGFueVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2Uub25TYXZlKGZpbGVzKTtcclxuICB9XHJcbiAgb25TZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy51cGxvYWRlZEZpbGVzID0gW107XHJcbiAgICBmb3IgKGxldCBmaWxlIG9mIGV2ZW50LmZpbGVzKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKGZpbGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5oYXNGaWxlcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuaGFzRmlsZXMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGVzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5vblNhdmUodGhpcy51cGxvYWRlZEZpbGVzKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5jYW5jZWwoKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZFJlY29yZGluZyhmaWxlOiBhbnkpIHtcclxuICAgIHRoaXMubG9hZEZpbGVzSW50b1dpZGdldChbZmlsZV0pO1xyXG4gICAgdGhpcy5oYXNGaWxlcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRJbWFnZShmaWxlczogYW55KSB7XHJcbiAgICB0aGlzLmxvYWRGaWxlc0ludG9XaWRnZXQoZmlsZXMpO1xyXG4gICAgdGhpcy5oYXNGaWxlcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBsb2FkRmlsZXNJbnRvV2lkZ2V0KGZpbGVzOiBGaWxlW10pIHtcclxuICAgIGlmIChDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPT09IHRoaXMuY29tcExpYikge1xyXG4gICAgICBjb25zdCBkYXRhVHJhbnNmZXIgPSBuZXcgRGF0YVRyYW5zZmVyKCk7XHJcbiAgICAgIGNvbnN0IGV4aXN0aW5nRmlsZXMgPSBBcnJheS5mcm9tKHRoaXMuZmlsZVVwbG9hZFByaW1lLmZpbGVzKTtcclxuXHJcbiAgICAgIGV4aXN0aW5nRmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICAgIGRhdGFUcmFuc2Zlci5pdGVtcy5hZGQoZmlsZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgICAgZGF0YVRyYW5zZmVyLml0ZW1zLmFkZChmaWxlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgZmlsZUxpc3Q6IEZpbGVMaXN0ID0gZGF0YVRyYW5zZmVyLmZpbGVzO1xyXG5cclxuICAgICAgY29uc3QgZmFrZUV2ZW50ID0ge1xyXG4gICAgICAgIHRhcmdldDoge1xyXG4gICAgICAgICAgZmlsZXM6IGZpbGVMaXN0LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogJ2NoYW5nZScsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLmZpbGVVcGxvYWRQcmltZS5vbkZpbGVTZWxlY3QoZmFrZUV2ZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZE1hdGVyaWFsLmZpbGVzLnB1c2goLi4uZmlsZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd2lkZ2V0TmVlZGVkKHR5cGU6IFVwbG9hZFdpZGdldFR5cGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRlc2NyaXB0b3I/LnVwbG9hZD8udXBsb2FkV2lkZ2V0cz8uaW5jbHVkZXModHlwZSkgPz8gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEZpbGUoZmlsZTogRmlsZSkge1xyXG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgYS5ocmVmID0gdXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGUubmFtZTtcclxuICAgIGEuY2xpY2soKTtcclxuICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgfVxyXG4gIHJlbW92ZUZpbGUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkUHJpbWUucmVtb3ZlVXBsb2FkZWRGaWxlKGluZGV4KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZvbGRlck5hbWVEaWFsb2dDb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyQ29udGFpbmVyXCI+XHJcbiAgICA8aDMgY2xhc3M9XCJjb2xvci1hY2NlbnQtNzAwXCI+XHJcbiAgICAgIHt7IGdldFRpdGxlKCkgfX1cclxuICAgIDwvaDM+XHJcbiAgICBAaWYoY29tcExpYiA9PT0gY29tcG9uZW50TGlicmFyeS5NQVRFUklBTCkge1xyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCI+XHJcbiAgICAgIDxzbWFydC1pY29uIFtjb2xvcl09XCIncHJpbWFyeSdcIiBbaWNvbl09XCInWCdcIj48L3NtYXJ0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIH1AZWxzZSB7XHJcbiAgICA8cC1idXR0b24gaWNvbj1cInBpIHBpLXRpbWVzXCIgW3JvdW5kZWRdPVwidHJ1ZVwiIFt0ZXh0XT1cInRydWVcIiAoY2xpY2spPVwiY2FuY2VsKClcIiAvPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIDxwPlxyXG4gICAge3sgZ2V0VGV4dCgpIH19XHJcbiAgPC9wPlxyXG5cclxuICA8IS0tIElNQUdFIFRZUEUgV0lER0VUIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aWRnZXROZWVkZWQodXBsb2FkV2lkZ2V0VHlwZS5JTUFHRSkgfHwgd2lkZ2V0TmVlZGVkKHVwbG9hZFdpZGdldFR5cGUuQUxMKVwiPlxyXG4gICAgPHBob3RvLWNhcHR1cmUtd2lkZ2V0XHJcbiAgICAgIFttYXhGaWxlU2l6ZV09XCJtYXhTaXplTWIgKiAxMDI0ICogMTAyNFwiXHJcbiAgICAgIChwaG90b0NhcHR1cmVkKT1cInVwbG9hZEltYWdlKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9waG90by1jYXB0dXJlLXdpZGdldD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBTT1VORCBUWVBFIFdJREdFVCAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwid2lkZ2V0TmVlZGVkKHVwbG9hZFdpZGdldFR5cGUuU09VTkQpIHx8IHdpZGdldE5lZWRlZCh1cGxvYWRXaWRnZXRUeXBlLkFMTClcIj5cclxuICAgIDx2b2ljZS1yZWNvcmQtd2lkZ2V0IChyZWNvcmRpbmdTYXZlZCk9XCJ1cGxvYWRSZWNvcmRpbmcoJGV2ZW50KVwiPiA8L3ZvaWNlLXJlY29yZC13aWRnZXQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIEBpZihjb21wTGliID09PSBjb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuXHJcbiAgPHAtZmlsZVVwbG9hZFxyXG4gICAgI2ZpbGVVcGxvYWRQcmltZU5nXHJcbiAgICBuYW1lPVwiZmlsZXNbXVwiXHJcbiAgICB1cmw9XCJcIlxyXG4gICAgKG9uU2VuZCk9XCJ1cGxvYWRGaWxlcygkZXZlbnQpXCJcclxuICAgIChvblNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQpXCJcclxuICAgIChvblJlbW92ZSk9XCJvblJlbW92ZSgkZXZlbnQpXCJcclxuICAgIFttdWx0aXBsZV09XCJpc011bHRpcGxlXCJcclxuICAgIFthY2NlcHRdPVwidGhpcy5kZXNjcmlwdG9yPy51cGxvYWQ/LmZvcm1hdHMgPz8gJydcIlxyXG4gICAgW21heEZpbGVTaXplXT1cIm1heFNpemVNYiAqIDEwMjQgKiAxMDI0XCJcclxuICAgIHVwbG9hZExhYmVsPVwiRmVsdMO2bHTDqXNcIlxyXG4gICAgY2FuY2VsTGFiZWw9XCJNw6lnc2VtXCJcclxuICAgIGNob29zZUxhYmVsPVwiVsOhbGFzenTDoXNcIlxyXG4gID5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCIgKm5nSWY9XCIhaGFzRmlsZXMgJiYgIWlzTW9iaWxlKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZEZpZWxkXCI+XHJcbiAgICAgICAgPHNtYXJ0LWljb24gW2ljb25dPVwiJ3VwbG9hZCdcIj48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXNzYWdlXCI+SMO6enphIGlkZSBhIGbDoWpsb2thdC48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWxlXCIgbGV0LWZpbGUgbGV0LWk9XCJpbmRleFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicC1maWxldXBsb2FkLWZpbGVcIj5cclxuICAgICAgICBAaWYoZmlsZS5vYmplY3RVUkwpe1xyXG4gICAgICAgIDxpbWcgcm9sZT1cInByZXNlbnRhdGlvblwiIFthbHRdPVwiZmlsZS5uYW1lXCIgW3NyY109XCJmaWxlLm9iamVjdFVSTFwiIHdpZHRoPVwiNTBcIiBoZWlnaHQ9XCI1MFwiIC8+XHJcbiAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZpbGVcIiBzdHlsZT1cImZvbnQtc2l6ZTogMnJlbVwiPjwvaT5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWZpbGUtZGF0YVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyBmaWxlLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLWRvd25sb2FkXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IGZpbGUtYWN0aW9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRmlsZShmaWxlKVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEb3dubG9hZFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpXCJcclxuICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgZmlsZS1hY3Rpb25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsZShpKVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZW1vdmVcIlxyXG4gICAgICAgICAgICBzdHlsZT1cImNvbG9yOiByZ2IoMjM5LCA2OCwgNjgpXCJcclxuICAgICAgICAgID48L2J1dHRvblxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC1maWxlVXBsb2FkPlxyXG5cclxuICB9QGVsc2V7XHJcblxyXG4gIDxzbWFydGZpbGV1cGxvYWRlclxyXG4gICAgI2ZpbGVVcGxvYWRNYXRlcmlhbFxyXG4gICAgW2kxOG5dPVwiaTE4blwiXHJcbiAgICBbZmlsZUZvcm1hdHNdPVwiZmlsZUZvcm1hdHNcIlxyXG4gICAgW21heFNpemVNYl09XCJtYXhTaXplTWJcIlxyXG4gICAgW3VwbG9hZENhbGxiYWNrXT1cInVwbG9hZC5iaW5kKHRoaXMpXCJcclxuICAgIFtpc011bHRpcGxlXT1cImlzTXVsdGlwbGVcIlxyXG4gID48L3NtYXJ0ZmlsZXVwbG9hZGVyPlxyXG4gIH1cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZvbGRlck5hbWVEaWFsb2dCdXR0b25zQ29udGFpbmVyXCI+XHJcbiAgICA8dWktYWN0aW9uLWJ1dHRvbiBbZGVzY3JpcHRvcl09XCJjYW5jZWxCdXR0b25cIiAoYWN0aW9uQ2xpY2spPVwiY2FuY2VsKClcIj48L3VpLWFjdGlvbi1idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -125,8 +125,8 @@ export class VoiceRecordWidgetComponent {
125
125
  if (this.recordedBlob) {
126
126
  const now = new Date();
127
127
  const formattedDate = now.toLocaleString('sv-SE').replace(' ', '_').replace(/:/g, '-');
128
- const fileName = `recording_${formattedDate}.mp3`;
129
- const file = new File([this.recordedBlob], fileName, { type: 'audio/mpeg' });
128
+ const fileName = `recording_${formattedDate}.webm`;
129
+ const file = new File([this.recordedBlob], fileName, { type: 'audio/webm' });
130
130
  this.recordingSaved.emit(file);
131
131
  this.recordedBlob = null;
132
132
  this.time = '00:00';
@@ -183,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
183
183
  }], recordingSaved: [{
184
184
  type: Output
185
185
  }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy92b2ljZS1yZWNvcmQtd2lkZ2V0L3ZvaWNlLXJlY29yZC13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi9kaWFsb2dzL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cvdm9pY2UtcmVjb3JkLXdpZGdldC92b2ljZS1yZWNvcmQtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsU0FBUyxFQUdULE1BQU0sRUFDTixRQUFRLEVBQ1IsWUFBWSxFQUNaLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxZQUFZLE1BQU0sc0NBQXNDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFM0YsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBc0IsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFPdkYsTUFBTSxPQUFPLDBCQUEwQjtJQTRDckMsWUFBbUQsT0FBMEI7UUF6Q25FLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQU1wRCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixpQkFBWSxHQUFnQixJQUFJ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biAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIElucHV0LFxyXG4gIEluamVjdCxcclxuICBPcHRpb25hbCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT3V0cHV0LFxyXG4gIE9uSW5pdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IFdhdmVTdXJmZXIgZnJvbSAnd2F2ZXN1cmZlci5qcyc7XHJcbmltcG9ydCBSZWNvcmRQbHVnaW4gZnJvbSAnd2F2ZXN1cmZlci5qcy9kaXN0L3BsdWdpbnMvcmVjb3JkLmpzJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBVaUFjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vdWktYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgSWNvblBvc2l0aW9uLCBVaUFjdGlvbkJ1dHRvblR5cGUsIFVpQWN0aW9uRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uLy4uLy4uL2FwaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ZvaWNlLXJlY29yZC13aWRnZXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92b2ljZS1yZWNvcmQtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92b2ljZS1yZWNvcmQtd2lkZ2V0LmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFZvaWNlUmVjb3JkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3dhdmVmb3JtJykgd2F2ZWZvcm1SZWYhOiBFbGVtZW50UmVmO1xyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkaW5nU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJsb2I+KCk7XHJcblxyXG4gIHByaXZhdGUgd2F2ZXN1cmZlciE6IFdhdmVTdXJmZXI7XHJcbiAgcHJpdmF0ZSByZWNvcmQhOiBSZWNvcmRQbHVnaW47XHJcblxyXG4gIGNvbXBMaWI6IENvbXBvbmVudExpYnJhcnk7XHJcbiAgY29tcG9uZW50TGlicmFyeSA9IENvbXBvbmVudExpYnJhcnk7XHJcblxyXG4gIGlzUmVjb3JkaW5nID0gZmFsc2U7XHJcbiAgcmVjb3JkZWRCbG9iOiBCbG9iIHwgbnVsbCA9IG51bGw7XHJcbiAgdGltZTogc3RyaW5nID0gJzAwOjAwJztcclxuICBpc1BsYXlpbmcgPSBmYWxzZTtcclxuXHJcbiAgbWljQnV0dG9uOiBVaUFjdGlvbkRlc2NyaXB0b3IgPSB7XHJcbiAgICB0aXRsZTogJycsXHJcbiAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgIGljb246ICdtaWNyb3Bob25lJyxcclxuICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgfTtcclxuXHJcbiAgc3RvcEJ1dHRvbjogVWlBY3Rpb25EZXNjcmlwdG9yID0ge1xyXG4gICAgdGl0bGU6ICcnLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICBpY29uOiAnc3RvcC1jaXJjbGUnLFxyXG4gICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgaWNvbkNvbG9yOiAncmVkJyxcclxuICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgfTtcclxuXHJcbiAgc2F2ZUJ1dHRvbjogVWlBY3Rpb25EZXNjcmlwdG9yID0ge1xyXG4gICAgdGl0bGU6ICcnLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICBpY29uOiAnc2F2ZScsXHJcbiAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gIH07XHJcblxyXG4gIHBsYXlCdXR0b24hOiBVaUFjdGlvbkRlc2NyaXB0b3I7XHJcbiAgc3RvcFBsYXliYWNrQnV0dG9uITogVWlBY3Rpb25EZXNjcmlwdG9yO1xyXG5cclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBjb21wTGliPzogQ29tcG9uZW50TGlicmFyeSkge1xyXG4gICAgdGhpcy5jb21wTGliID0gY29tcExpYiA/PyBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkc7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5wbGF5QnV0dG9uID0ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OLFxyXG4gICAgICBpY29uOiB0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORyA/ICdwbGF5LWNpcmNsZScgOiAncGxheV9jaXJjbGUnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zdG9wUGxheWJhY2tCdXR0b24gPSB7XHJcbiAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICAgIGljb246IHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ3N0b3AtY2lyY2xlJyA6ICdzdG9wX2NpcmNsZScsXHJcbiAgICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICAgICAgY29sb3I6ICdyZWQnLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGxldCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xyXG4gICAgbGV0IHByaW1hcnlDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoYm9keSEpLmdldFByb3BlcnR5VmFsdWUoJy0tcHJpbWFyeS1jb2xvcicpLnRyaW0oKTtcclxuXHJcbiAgICB0aGlzLndhdmVzdXJmZXIgPSBXYXZlU3VyZmVyLmNyZWF0ZSh7XHJcbiAgICAgIGNvbnRhaW5lcjogdGhpcy53YXZlZm9ybVJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB3YXZlQ29sb3I6IHByaW1hcnlDb2xvcixcclxuICAgICAgcHJvZ3Jlc3NDb2xvcjogdGhpcy5hZGRBbHBoYVRvQ29sb3IocHJpbWFyeUNvbG9yISwgMC41KSxcclxuICAgICAgaGVpZ2h0OiA0NSxcclxuICAgICAgYmFyV2lkdGg6IDUsXHJcbiAgICAgIGJhckdhcDogMSxcclxuICAgICAgYmFyUmFkaXVzOiA1LFxyXG4gICAgICBwbHVnaW5zOiBbXHJcbiAgICAgICAgUmVjb3JkUGx1Z2luLmNyZWF0ZSh7XHJcbiAgICAgICAgICByZW5kZXJSZWNvcmRlZEF1ZGlvOiB0cnVlLFxyXG4gICAgICAgICAgc2Nyb2xsaW5nV2F2ZWZvcm06IHRydWUsXHJcbiAgICAgICAgICBtaW1lVHlwZTogJ2F1ZGlvL3dlYm0nLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICBdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy53YXZlc3VyZmVyLnNldFZvbHVtZSgxKTtcclxuXHJcbiAgICB0aGlzLnJlY29yZCA9IHRoaXMud2F2ZXN1cmZlci5yZWdpc3RlclBsdWdpbihcclxuICAgICAgUmVjb3JkUGx1Z2luLmNyZWF0ZSh7XHJcbiAgICAgICAgcmVuZGVyUmVjb3JkZWRBdWRpbzogdHJ1ZSxcclxuICAgICAgICBzY3JvbGxpbmdXYXZlZm9ybTogdHJ1ZSxcclxuICAgICAgICBjb250aW51b3VzV2F2ZWZvcm06IGZhbHNlLFxyXG4gICAgICAgIGNvbnRpbnVvdXNXYXZlZm9ybUR1cmF0aW9uOiAxNSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy53YXZlc3VyZmVyLm9uKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgdGhpcy53YXZlc3VyZmVyLnBsYXkoKTtcclxuICAgICAgdGhpcy5pc1BsYXlpbmcgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlY29yZC5vbigncmVjb3JkLWVuZCcsIChibG9iOiBCbG9iKSA9PiB7XHJcbiAgICAgIHRoaXMucmVjb3JkZWRCbG9iID0gYmxvYjtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWNvcmQub24oJ3JlY29yZC1wcm9ncmVzcycsICh0aW1lKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3ModGltZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMud2F2ZXN1cmZlci5vbignZmluaXNoJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzdGFydFJlY29yZGluZygpIHtcclxuICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMuY2hlY2tIYXNSZWNvcmRlZCgpO1xyXG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5yZWNvcmQgJiYgIXRoaXMuaXNSZWNvcmRpbmcpIHtcclxuICAgICAgdGhpcy5yZWNvcmQuc3RhcnRSZWNvcmRpbmcoKTtcclxuICAgICAgdGhpcy5pc1JlY29yZGluZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tIYXNSZWNvcmRlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLnJlY29yZGVkQmxvYikge1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUHJvZ3Jlc3ModGltZTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZm9ybWF0dGVkVGltZSA9IFtNYXRoLmZsb29yKCh0aW1lICUgMzYwMDAwMCkgLyA2MDAwMCksIE1hdGguZmxvb3IoKHRpbWUgJSA2MDAwMCkgLyAxMDAwKV1cclxuICAgICAgLm1hcCgodikgPT4gKHYgPCAxMCA/ICcwJyArIHYgOiB2KSlcclxuICAgICAgLmpvaW4oJzonKTtcclxuICAgIHRoaXMudGltZSA9IGZvcm1hdHRlZFRpbWU7XHJcbiAgfVxyXG5cclxuICBzdG9wUmVjb3JkaW5nKCkge1xyXG4gICAgaWYgKHRoaXMucmVjb3JkICYmIHRoaXMuaXNSZWNvcmRpbmcpIHtcclxuICAgICAgdGhpcy5yZWNvcmQuc3RvcFJlY29yZGluZygpO1xyXG4gICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlUmVjb3JkaW5nKCkge1xyXG4gICAgaWYgKHRoaXMucmVjb3JkZWRCbG9iKSB7XHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBub3cudG9Mb2NhbGVTdHJpbmcoJ3N2LVNFJykucmVwbGFjZSgnICcsICdfJykucmVwbGFjZSgvOi9nLCAnLScpO1xyXG5cclxuICAgICAgY29uc3QgZmlsZU5hbWUgPSBgcmVjb3JkaW5nXyR7Zm9ybWF0dGVkRGF0ZX0ubXAzYDtcclxuICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFt0aGlzLnJlY29yZGVkQmxvYl0sIGZpbGVOYW1lLCB7IHR5cGU6ICdhdWRpby9tcGVnJyB9KTtcclxuXHJcbiAgICAgIHRoaXMucmVjb3JkaW5nU2F2ZWQuZW1pdChmaWxlKTtcclxuXHJcbiAgICAgIHRoaXMucmVjb3JkZWRCbG9iID0gbnVsbDtcclxuICAgICAgdGhpcy50aW1lID0gJzAwOjAwJztcclxuICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy53YXZlc3VyZmVyLmVtcHR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXBsYXlSZWNvcmRpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5yZWNvcmRlZEJsb2IpIHtcclxuICAgICAgdGhpcy5pc1BsYXlpbmcgPSAhdGhpcy5pc1BsYXlpbmc7XHJcbiAgICAgIHRoaXMud2F2ZXN1cmZlci5wbGF5UGF1c2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMud2F2ZXN1cmZlcikge1xyXG4gICAgICB0aGlzLndhdmVzdXJmZXIuZGVzdHJveSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRBbHBoYVRvQ29sb3IoaGV4Q29sb3I6IHN0cmluZywgYWxwaGE6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoL14jKFthLWZcXGRdKShbYS1mXFxkXSkoW2EtZlxcZF0pJC9pLnRlc3QoaGV4Q29sb3IpKSB7XHJcbiAgICAgIGhleENvbG9yID0gaGV4Q29sb3IucmVwbGFjZShcclxuICAgICAgICAvXiMoW2EtZlxcZF0pKFthLWZcXGRdKShbYS1mXFxkXSkkL2ksXHJcbiAgICAgICAgKF8sIHIsIGcsIGIpID0+IGAjJHtyfSR7cn0ke2d9JHtnfSR7Yn0ke2J9YFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhleE1hdGNoID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleENvbG9yKTtcclxuICAgIGlmIChoZXhNYXRjaCkge1xyXG4gICAgICBjb25zdCBbLCByLCBnLCBiXSA9IGhleE1hdGNoO1xyXG4gICAgICByZXR1cm4gYHJnYmEoJHtwYXJzZUludChyLCAxNil9LCAke3BhcnNlSW50KGcsIDE2KX0sICR7cGFyc2VJbnQoYiwgMTYpfSwgJHthbHBoYX0pYDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgaWYgKGN0eCkge1xyXG4gICAgICBjdHguZmlsbFN0eWxlID0gaGV4Q29sb3I7XHJcbiAgICAgIGNvbnN0IHBhcnNlZCA9IGN0eC5maWxsU3R5bGU7XHJcbiAgICAgIGNvbnN0IHJnYk1hdGNoID0gL15yZ2JcXCgoXFxkKyksXFxzKihcXGQrKSxcXHMqKFxcZCspXFwpJC8uZXhlYyhwYXJzZWQpO1xyXG4gICAgICBpZiAocmdiTWF0Y2gpIHtcclxuICAgICAgICBjb25zdCBbLCByLCBnLCBiXSA9IHJnYk1hdGNoO1xyXG4gICAgICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke2FscGhhfSlgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGhleENvbG9yO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicmVjb3JkZXJDb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVjb3JkZXJUb29sYmFyXCI+XHJcbiAgICA8IS0tIFN0YXJ0IFJlY29yZGluZyAtLT5cclxuICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiIWlzUmVjb3JkaW5nXCJcclxuICAgICAgW2Rlc2NyaXB0b3JdPVwibWljQnV0dG9uXCJcclxuICAgICAgKGFjdGlvbkNsaWNrKT1cInN0YXJ0UmVjb3JkaW5nKClcIlxyXG4gICAgPlxyXG4gICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG5cclxuICAgIDwhLS0gU3RvcCBSZWNvcmRpbmcgLS0+XHJcbiAgICA8dWktYWN0aW9uLWJ1dHRvbiAqbmdJZj1cImlzUmVjb3JkaW5nXCIgW2Rlc2NyaXB0b3JdPVwic3RvcEJ1dHRvblwiIChhY3Rpb25DbGljayk9XCJzdG9wUmVjb3JkaW5nKClcIj5cclxuICAgIDwvdWktYWN0aW9uLWJ1dHRvbj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj57eyB0aW1lIH19PC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIndhdmVmb3JtXCIgI3dhdmVmb3JtPjwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJlbmRCYXJcIj5cclxuICAgIDwhLS0gU2F2ZSBSZWNvcmRpbmcgLS0+XHJcbiAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAqbmdJZj1cInJlY29yZGVkQmxvYlwiXHJcbiAgICAgIFtkZXNjcmlwdG9yXT1cInNhdmVCdXR0b25cIlxyXG4gICAgICAoYWN0aW9uQ2xpY2spPVwic2F2ZVJlY29yZGluZygpXCJcclxuICAgID5cclxuICAgIDwvdWktYWN0aW9uLWJ1dHRvbj5cclxuXHJcbiAgICA8IS0tIFN0YXJ0IFBsYXkgIC0tPlxyXG4gICAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgICAgKm5nSWY9XCJyZWNvcmRlZEJsb2IgJiYgIWlzUGxheWluZ1wiXHJcbiAgICAgIFtkZXNjcmlwdG9yXT1cInBsYXlCdXR0b25cIlxyXG4gICAgICAoYWN0aW9uQ2xpY2spPVwicmVwbGF5UmVjb3JkaW5nKClcIlxyXG4gICAgPjwvdWktYWN0aW9uLWJ1dHRvbj5cclxuXHJcbiAgICA8IS0tIFN0b3AgUGxheSAgLS0+XHJcbiAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAqbmdJZj1cInJlY29yZGVkQmxvYiAmJiBpc1BsYXlpbmdcIlxyXG4gICAgICBbZGVzY3JpcHRvcl09XCJzdG9wUGxheWJhY2tCdXR0b25cIlxyXG4gICAgICAoYWN0aW9uQ2xpY2spPVwicmVwbGF5UmVjb3JkaW5nKClcIlxyXG4gICAgPjwvdWktYWN0aW9uLWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL2RpYWxvZ3MvdWktYWN0aW9uLWZpbGUtdXBsb2FkLWRpYWxvZy92b2ljZS1yZWNvcmQtd2lkZ2V0L3ZvaWNlLXJlY29yZC13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi9kaWFsb2dzL3VpLWFjdGlvbi1maWxlLXVwbG9hZC1kaWFsb2cvdm9pY2UtcmVjb3JkLXdpZGdldC92b2ljZS1yZWNvcmQtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsU0FBUyxFQUdULE1BQU0sRUFDTixRQUFRLEVBQ1IsWUFBWSxFQUNaLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxZQUFZLE1BQU0sc0NBQXNDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFM0YsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBc0IsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFPdkYsTUFBTSxPQUFPLDBCQUEwQjtJQTRDckMsWUFBbUQsT0FBMEI7UUF6Q25FLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQU1wRCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixpQkFBWSxHQUFnQixJQUFJ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biAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIElucHV0LFxyXG4gIEluamVjdCxcclxuICBPcHRpb25hbCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT3V0cHV0LFxyXG4gIE9uSW5pdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IFdhdmVTdXJmZXIgZnJvbSAnd2F2ZXN1cmZlci5qcyc7XHJcbmltcG9ydCBSZWNvcmRQbHVnaW4gZnJvbSAnd2F2ZXN1cmZlci5qcy9kaXN0L3BsdWdpbnMvcmVjb3JkLmpzJztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBVaUFjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vdWktYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgSWNvblBvc2l0aW9uLCBVaUFjdGlvbkJ1dHRvblR5cGUsIFVpQWN0aW9uRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uLy4uLy4uL2FwaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ZvaWNlLXJlY29yZC13aWRnZXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92b2ljZS1yZWNvcmQtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92b2ljZS1yZWNvcmQtd2lkZ2V0LmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFZvaWNlUmVjb3JkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3dhdmVmb3JtJykgd2F2ZWZvcm1SZWYhOiBFbGVtZW50UmVmO1xyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkaW5nU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJsb2I+KCk7XHJcblxyXG4gIHByaXZhdGUgd2F2ZXN1cmZlciE6IFdhdmVTdXJmZXI7XHJcbiAgcHJpdmF0ZSByZWNvcmQhOiBSZWNvcmRQbHVnaW47XHJcblxyXG4gIGNvbXBMaWI6IENvbXBvbmVudExpYnJhcnk7XHJcbiAgY29tcG9uZW50TGlicmFyeSA9IENvbXBvbmVudExpYnJhcnk7XHJcblxyXG4gIGlzUmVjb3JkaW5nID0gZmFsc2U7XHJcbiAgcmVjb3JkZWRCbG9iOiBCbG9iIHwgbnVsbCA9IG51bGw7XHJcbiAgdGltZTogc3RyaW5nID0gJzAwOjAwJztcclxuICBpc1BsYXlpbmcgPSBmYWxzZTtcclxuXHJcbiAgbWljQnV0dG9uOiBVaUFjdGlvbkRlc2NyaXB0b3IgPSB7XHJcbiAgICB0aXRsZTogJycsXHJcbiAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgIGljb246ICdtaWNyb3Bob25lJyxcclxuICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgfTtcclxuXHJcbiAgc3RvcEJ1dHRvbjogVWlBY3Rpb25EZXNjcmlwdG9yID0ge1xyXG4gICAgdGl0bGU6ICcnLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICBpY29uOiAnc3RvcC1jaXJjbGUnLFxyXG4gICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgaWNvbkNvbG9yOiAncmVkJyxcclxuICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgfTtcclxuXHJcbiAgc2F2ZUJ1dHRvbjogVWlBY3Rpb25EZXNjcmlwdG9yID0ge1xyXG4gICAgdGl0bGU6ICcnLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICBpY29uOiAnc2F2ZScsXHJcbiAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gIH07XHJcblxyXG4gIHBsYXlCdXR0b24hOiBVaUFjdGlvbkRlc2NyaXB0b3I7XHJcbiAgc3RvcFBsYXliYWNrQnV0dG9uITogVWlBY3Rpb25EZXNjcmlwdG9yO1xyXG5cclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBjb21wTGliPzogQ29tcG9uZW50TGlicmFyeSkge1xyXG4gICAgdGhpcy5jb21wTGliID0gY29tcExpYiA/PyBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkc7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5wbGF5QnV0dG9uID0ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OLFxyXG4gICAgICBpY29uOiB0aGlzLmNvbXBMaWIgPT09IENvbXBvbmVudExpYnJhcnkuUFJJTUVORyA/ICdwbGF5LWNpcmNsZScgOiAncGxheV9jaXJjbGUnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zdG9wUGxheWJhY2tCdXR0b24gPSB7XHJcbiAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLklDT04sXHJcbiAgICAgIGljb246IHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ3N0b3AtY2lyY2xlJyA6ICdzdG9wX2NpcmNsZScsXHJcbiAgICAgIGljb25Qb3NpdGlvbjogSWNvblBvc2l0aW9uLlBSRSxcclxuICAgICAgY29sb3I6ICdyZWQnLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGxldCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xyXG4gICAgbGV0IHByaW1hcnlDb2xvciA9IGdldENvbXB1dGVkU3R5bGUoYm9keSEpLmdldFByb3BlcnR5VmFsdWUoJy0tcHJpbWFyeS1jb2xvcicpLnRyaW0oKTtcclxuXHJcbiAgICB0aGlzLndhdmVzdXJmZXIgPSBXYXZlU3VyZmVyLmNyZWF0ZSh7XHJcbiAgICAgIGNvbnRhaW5lcjogdGhpcy53YXZlZm9ybVJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB3YXZlQ29sb3I6IHByaW1hcnlDb2xvcixcclxuICAgICAgcHJvZ3Jlc3NDb2xvcjogdGhpcy5hZGRBbHBoYVRvQ29sb3IocHJpbWFyeUNvbG9yISwgMC41KSxcclxuICAgICAgaGVpZ2h0OiA0NSxcclxuICAgICAgYmFyV2lkdGg6IDUsXHJcbiAgICAgIGJhckdhcDogMSxcclxuICAgICAgYmFyUmFkaXVzOiA1LFxyXG4gICAgICBwbHVnaW5zOiBbXHJcbiAgICAgICAgUmVjb3JkUGx1Z2luLmNyZWF0ZSh7XHJcbiAgICAgICAgICByZW5kZXJSZWNvcmRlZEF1ZGlvOiB0cnVlLFxyXG4gICAgICAgICAgc2Nyb2xsaW5nV2F2ZWZvcm06IHRydWUsXHJcbiAgICAgICAgICBtaW1lVHlwZTogJ2F1ZGlvL3dlYm0nLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICBdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy53YXZlc3VyZmVyLnNldFZvbHVtZSgxKTtcclxuXHJcbiAgICB0aGlzLnJlY29yZCA9IHRoaXMud2F2ZXN1cmZlci5yZWdpc3RlclBsdWdpbihcclxuICAgICAgUmVjb3JkUGx1Z2luLmNyZWF0ZSh7XHJcbiAgICAgICAgcmVuZGVyUmVjb3JkZWRBdWRpbzogdHJ1ZSxcclxuICAgICAgICBzY3JvbGxpbmdXYXZlZm9ybTogdHJ1ZSxcclxuICAgICAgICBjb250aW51b3VzV2F2ZWZvcm06IGZhbHNlLFxyXG4gICAgICAgIGNvbnRpbnVvdXNXYXZlZm9ybUR1cmF0aW9uOiAxNSxcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy53YXZlc3VyZmVyLm9uKCdkYmxjbGljaycsICgpID0+IHtcclxuICAgICAgdGhpcy53YXZlc3VyZmVyLnBsYXkoKTtcclxuICAgICAgdGhpcy5pc1BsYXlpbmcgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlY29yZC5vbigncmVjb3JkLWVuZCcsIChibG9iOiBCbG9iKSA9PiB7XHJcbiAgICAgIHRoaXMucmVjb3JkZWRCbG9iID0gYmxvYjtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWNvcmQub24oJ3JlY29yZC1wcm9ncmVzcycsICh0aW1lKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlUHJvZ3Jlc3ModGltZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMud2F2ZXN1cmZlci5vbignZmluaXNoJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzdGFydFJlY29yZGluZygpIHtcclxuICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMuY2hlY2tIYXNSZWNvcmRlZCgpO1xyXG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5yZWNvcmQgJiYgIXRoaXMuaXNSZWNvcmRpbmcpIHtcclxuICAgICAgdGhpcy5yZWNvcmQuc3RhcnRSZWNvcmRpbmcoKTtcclxuICAgICAgdGhpcy5pc1JlY29yZGluZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tIYXNSZWNvcmRlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLnJlY29yZGVkQmxvYikge1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUHJvZ3Jlc3ModGltZTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZm9ybWF0dGVkVGltZSA9IFtNYXRoLmZsb29yKCh0aW1lICUgMzYwMDAwMCkgLyA2MDAwMCksIE1hdGguZmxvb3IoKHRpbWUgJSA2MDAwMCkgLyAxMDAwKV1cclxuICAgICAgLm1hcCgodikgPT4gKHYgPCAxMCA/ICcwJyArIHYgOiB2KSlcclxuICAgICAgLmpvaW4oJzonKTtcclxuICAgIHRoaXMudGltZSA9IGZvcm1hdHRlZFRpbWU7XHJcbiAgfVxyXG5cclxuICBzdG9wUmVjb3JkaW5nKCkge1xyXG4gICAgaWYgKHRoaXMucmVjb3JkICYmIHRoaXMuaXNSZWNvcmRpbmcpIHtcclxuICAgICAgdGhpcy5yZWNvcmQuc3RvcFJlY29yZGluZygpO1xyXG4gICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlUmVjb3JkaW5nKCkge1xyXG4gICAgaWYgKHRoaXMucmVjb3JkZWRCbG9iKSB7XHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBub3cudG9Mb2NhbGVTdHJpbmcoJ3N2LVNFJykucmVwbGFjZSgnICcsICdfJykucmVwbGFjZSgvOi9nLCAnLScpO1xyXG5cclxuICAgICAgY29uc3QgZmlsZU5hbWUgPSBgcmVjb3JkaW5nXyR7Zm9ybWF0dGVkRGF0ZX0ud2VibWA7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbdGhpcy5yZWNvcmRlZEJsb2JdLCBmaWxlTmFtZSwgeyB0eXBlOiAnYXVkaW8vd2VibScgfSk7XHJcblxyXG4gICAgICB0aGlzLnJlY29yZGluZ1NhdmVkLmVtaXQoZmlsZSk7XHJcblxyXG4gICAgICB0aGlzLnJlY29yZGVkQmxvYiA9IG51bGw7XHJcbiAgICAgIHRoaXMudGltZSA9ICcwMDowMCc7XHJcbiAgICAgIHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMud2F2ZXN1cmZlci5lbXB0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVwbGF5UmVjb3JkaW5nKCkge1xyXG4gICAgaWYgKHRoaXMucmVjb3JkZWRCbG9iKSB7XHJcbiAgICAgIHRoaXMuaXNQbGF5aW5nID0gIXRoaXMuaXNQbGF5aW5nO1xyXG4gICAgICB0aGlzLndhdmVzdXJmZXIucGxheVBhdXNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLndhdmVzdXJmZXIpIHtcclxuICAgICAgdGhpcy53YXZlc3VyZmVyLmRlc3Ryb3koKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQWxwaGFUb0NvbG9yKGhleENvbG9yOiBzdHJpbmcsIGFscGhhOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKC9eIyhbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKSQvaS50ZXN0KGhleENvbG9yKSkge1xyXG4gICAgICBoZXhDb2xvciA9IGhleENvbG9yLnJlcGxhY2UoXHJcbiAgICAgICAgL14jKFthLWZcXGRdKShbYS1mXFxkXSkoW2EtZlxcZF0pJC9pLFxyXG4gICAgICAgIChfLCByLCBnLCBiKSA9PiBgIyR7cn0ke3J9JHtnfSR7Z30ke2J9JHtifWBcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBoZXhNYXRjaCA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXhDb2xvcik7XHJcbiAgICBpZiAoaGV4TWF0Y2gpIHtcclxuICAgICAgY29uc3QgWywgciwgZywgYl0gPSBoZXhNYXRjaDtcclxuICAgICAgcmV0dXJuIGByZ2JhKCR7cGFyc2VJbnQociwgMTYpfSwgJHtwYXJzZUludChnLCAxNil9LCAke3BhcnNlSW50KGIsIDE2KX0sICR7YWxwaGF9KWA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3R4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGlmIChjdHgpIHtcclxuICAgICAgY3R4LmZpbGxTdHlsZSA9IGhleENvbG9yO1xyXG4gICAgICBjb25zdCBwYXJzZWQgPSBjdHguZmlsbFN0eWxlO1xyXG4gICAgICBjb25zdCByZ2JNYXRjaCA9IC9ecmdiXFwoKFxcZCspLFxccyooXFxkKyksXFxzKihcXGQrKVxcKSQvLmV4ZWMocGFyc2VkKTtcclxuICAgICAgaWYgKHJnYk1hdGNoKSB7XHJcbiAgICAgICAgY29uc3QgWywgciwgZywgYl0gPSByZ2JNYXRjaDtcclxuICAgICAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHthbHBoYX0pYDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBoZXhDb2xvcjtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJlY29yZGVyQ29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlY29yZGVyVG9vbGJhclwiPlxyXG4gICAgPCEtLSBTdGFydCBSZWNvcmRpbmcgLS0+XHJcbiAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICAqbmdJZj1cIiFpc1JlY29yZGluZ1wiXHJcbiAgICAgIFtkZXNjcmlwdG9yXT1cIm1pY0J1dHRvblwiXHJcbiAgICAgIChhY3Rpb25DbGljayk9XCJzdGFydFJlY29yZGluZygpXCJcclxuICAgID5cclxuICAgIDwvdWktYWN0aW9uLWJ1dHRvbj5cclxuXHJcbiAgICA8IS0tIFN0b3AgUmVjb3JkaW5nIC0tPlxyXG4gICAgPHVpLWFjdGlvbi1idXR0b24gKm5nSWY9XCJpc1JlY29yZGluZ1wiIFtkZXNjcmlwdG9yXT1cInN0b3BCdXR0b25cIiAoYWN0aW9uQ2xpY2spPVwic3RvcFJlY29yZGluZygpXCI+XHJcbiAgICA8L3VpLWFjdGlvbi1idXR0b24+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCI+e3sgdGltZSB9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ3YXZlZm9ybVwiICN3YXZlZm9ybT48L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiZW5kQmFyXCI+XHJcbiAgICA8IS0tIFNhdmUgUmVjb3JkaW5nIC0tPlxyXG4gICAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgICAgKm5nSWY9XCJyZWNvcmRlZEJsb2JcIlxyXG4gICAgICBbZGVzY3JpcHRvcl09XCJzYXZlQnV0dG9uXCJcclxuICAgICAgKGFjdGlvbkNsaWNrKT1cInNhdmVSZWNvcmRpbmcoKVwiXHJcbiAgICA+XHJcbiAgICA8L3VpLWFjdGlvbi1idXR0b24+XHJcblxyXG4gICAgPCEtLSBTdGFydCBQbGF5ICAtLT5cclxuICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICpuZ0lmPVwicmVjb3JkZWRCbG9iICYmICFpc1BsYXlpbmdcIlxyXG4gICAgICBbZGVzY3JpcHRvcl09XCJwbGF5QnV0dG9uXCJcclxuICAgICAgKGFjdGlvbkNsaWNrKT1cInJlcGxheVJlY29yZGluZygpXCJcclxuICAgID48L3VpLWFjdGlvbi1idXR0b24+XHJcblxyXG4gICAgPCEtLSBTdG9wIFBsYXkgIC0tPlxyXG4gICAgPHVpLWFjdGlvbi1idXR0b25cclxuICAgICAgKm5nSWY9XCJyZWNvcmRlZEJsb2IgJiYgaXNQbGF5aW5nXCJcclxuICAgICAgW2Rlc2NyaXB0b3JdPVwic3RvcFBsYXliYWNrQnV0dG9uXCJcclxuICAgICAgKGFjdGlvbkNsaWNrKT1cInJlcGxheVJlY29yZGluZygpXCJcclxuICAgID48L3VpLWFjdGlvbi1idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Component, Inject, Input, } from '@angular/core';
1
+ import { Component, HostListener, Inject, Input, ViewChild, } from '@angular/core';
2
2
  import { Subject, takeUntil } from 'rxjs';
3
3
  import { IconPosition } from '../api';
4
4
  import { UiActionButtonType } from '../api/model/uiActionButtonType';
@@ -19,6 +19,25 @@ export class UiActionToolbarComponent {
19
19
  this._destroy$ = new Subject();
20
20
  this.componentLibrary = ComponentLibrary; // Expose the enum to the template
21
21
  this.pressedButtonActive = true;
22
+ this.scrollOnWrap = false;
23
+ this.isScrollable = false;
24
+ this.scrollSpeed = 5;
25
+ this.scrollDelay = 16;
26
+ this.scrollHoldDelay = 100;
27
+ this.buttonLeft = {
28
+ title: '',
29
+ color: 'primary',
30
+ type: UiActionButtonType.RAISED,
31
+ icon: this.compLib === ComponentLibrary.PRIMENG ? 'chevron-left' : 'arrow_back',
32
+ iconPosition: IconPosition.PRE,
33
+ };
34
+ this.buttonRight = {
35
+ title: '',
36
+ color: 'primary',
37
+ type: UiActionButtonType.RAISED,
38
+ icon: this.compLib === ComponentLibrary.PRIMENG ? 'chevron-right' : 'arrow_forward',
39
+ iconPosition: IconPosition.PRE,
40
+ };
22
41
  // Injects the basic UiActionDescriptorService provided by the AppModule
23
42
  this.manager = inject.get(UiActionDescriptorService);
24
43
  this.subscribeToLanguageChange();
@@ -31,6 +50,18 @@ export class UiActionToolbarComponent {
31
50
  }
32
51
  this.setUp();
33
52
  }
53
+ ngAfterViewInit() {
54
+ if (this.scrollOnWrap) {
55
+ setTimeout(() => {
56
+ this.checkScrollable();
57
+ });
58
+ }
59
+ }
60
+ onResize() {
61
+ if (this.scrollOnWrap) {
62
+ this.checkScrollable();
63
+ }
64
+ }
34
65
  ngOnChanges(changes) {
35
66
  if (changes['uiActionModels']) {
36
67
  let uiActionModels = changes['uiActionModels'].currentValue;
@@ -65,6 +96,8 @@ export class UiActionToolbarComponent {
65
96
  }
66
97
  this.uiActionModelsWithDescriptions = uiActionModelsWithDescriptions;
67
98
  this.changeDetector.markForCheck();
99
+ this.changeDetector.detectChanges();
100
+ setTimeout(() => this.checkScrollable());
68
101
  }
69
102
  }
70
103
  trackByFn(idx, m) {
@@ -178,20 +211,61 @@ export class UiActionToolbarComponent {
178
211
  getTooltipHideDelay(delay) {
179
212
  return delay ? delay : 2000;
180
213
  }
214
+ checkScrollable() {
215
+ if (!this.scrollOnWrap) {
216
+ return;
217
+ }
218
+ const scrollable = this.containerRef?.nativeElement;
219
+ if (scrollable) {
220
+ this.isScrollable = scrollable.scrollWidth > scrollable.clientWidth;
221
+ }
222
+ }
223
+ scrollLeft() {
224
+ this.containerRef.nativeElement.scrollLeft -= 100;
225
+ }
226
+ scrollRight() {
227
+ this.containerRef.nativeElement.scrollLeft += 100;
228
+ }
229
+ scrollStart(direction) {
230
+ this.scrollTimeout = setTimeout(() => {
231
+ const delta = direction === 'left' ? -this.scrollSpeed : this.scrollSpeed;
232
+ this.scrollInterval = setInterval(() => {
233
+ this.containerRef.nativeElement.scrollLeft += delta;
234
+ }, this.scrollDelay);
235
+ }, this.scrollHoldDelay);
236
+ }
237
+ stopScroll() {
238
+ if (this.scrollTimeout) {
239
+ clearTimeout(this.scrollTimeout);
240
+ this.scrollTimeout = null;
241
+ }
242
+ if (this.scrollInterval) {
243
+ clearInterval(this.scrollInterval);
244
+ this.scrollInterval = null;
245
+ }
246
+ }
181
247
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionToolbarComponent, deps: [{ token: i1.UiActionService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: COMPONENT_LIBRARY }], target: i0.ɵɵFactoryTarget.Component }); }
182
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: "uiActionModels", uiActionDescriptorService: "uiActionDescriptorService", id: "id" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"uiActionButtonsContainer\">\r\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\r\n @if(uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0 ){\r\n <ui-tiered-menu\r\n #menu\r\n [triggerAction]=\"uiActionModel.uiAction\"\r\n [subActions]=\"uiActionModel.uiAction.subActions!\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n ></ui-tiered-menu>\r\n }@else {\r\n <ui-action-button\r\n [descriptor]=\"uiActionModel.descriptor!\"\r\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\r\n [addedCssClass]=\"uiActionModel.cssClass\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\r\n >\r\n </ui-action-button>\r\n }\r\n </ng-container>\r\n</div>\r\n", styles: [".uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: i4.MenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu"], outputs: ["actionClick", "submenuOpened"] }] }); }
248
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: "uiActionModels", uiActionDescriptorService: "uiActionDescriptorService", id: "id", scrollOnWrap: "scrollOnWrap" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if(isScrollable && scrollOnWrap){\r\n<ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonLeft\"\r\n (actionClick)=\"scrollLeft()\"\r\n (mousedown)=\"scrollStart('left')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('left')\"\r\n (touchend)=\"stopScroll()\"\r\n/>\r\n}\r\n\r\n<div #container class=\"uiActionButtonsContainer\" [ngClass]=\"{ scrollableContent: scrollOnWrap }\">\r\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\r\n @if(uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0 ){\r\n <ui-tiered-menu\r\n #menu\r\n [triggerAction]=\"uiActionModel.uiAction\"\r\n [subActions]=\"uiActionModel.uiAction.subActions!\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n ></ui-tiered-menu>\r\n }@else {\r\n <ui-action-button\r\n [descriptor]=\"uiActionModel.descriptor!\"\r\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\r\n [addedCssClass]=\"uiActionModel.cssClass\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\r\n >\r\n </ui-action-button>\r\n }\r\n </ng-container>\r\n</div>\r\n\r\n@if(isScrollable && scrollOnWrap){\r\n<ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonRight\"\r\n (actionClick)=\"scrollRight()\"\r\n (mousedown)=\"scrollStart('right')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('right')\"\r\n (touchend)=\"stopScroll()\"\r\n/>\r\n}\r\n", styles: [":host{display:flex;flex-direction:row;justify-content:space-between;gap:1rem;width:100%;align-items:center}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;justify-content:space-between;scrollbar-width:none;padding:.5rem 0}.scrollableContent::-webkit-scrollbar{display:none!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: i4.MenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu"], outputs: ["actionClick", "submenuOpened"] }] }); }
183
249
  }
184
250
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionToolbarComponent, decorators: [{
185
251
  type: Component,
186
- args: [{ selector: 'smart-ui-action-toolbar', template: "<div class=\"uiActionButtonsContainer\">\r\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\r\n @if(uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0 ){\r\n <ui-tiered-menu\r\n #menu\r\n [triggerAction]=\"uiActionModel.uiAction\"\r\n [subActions]=\"uiActionModel.uiAction.subActions!\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n ></ui-tiered-menu>\r\n }@else {\r\n <ui-action-button\r\n [descriptor]=\"uiActionModel.descriptor!\"\r\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\r\n [addedCssClass]=\"uiActionModel.cssClass\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\r\n >\r\n </ui-action-button>\r\n }\r\n </ng-container>\r\n</div>\r\n", styles: [".uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}\n"] }]
252
+ args: [{ selector: 'smart-ui-action-toolbar', template: "@if(isScrollable && scrollOnWrap){\r\n<ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonLeft\"\r\n (actionClick)=\"scrollLeft()\"\r\n (mousedown)=\"scrollStart('left')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('left')\"\r\n (touchend)=\"stopScroll()\"\r\n/>\r\n}\r\n\r\n<div #container class=\"uiActionButtonsContainer\" [ngClass]=\"{ scrollableContent: scrollOnWrap }\">\r\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\r\n @if(uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0 ){\r\n <ui-tiered-menu\r\n #menu\r\n [triggerAction]=\"uiActionModel.uiAction\"\r\n [subActions]=\"uiActionModel.uiAction.subActions!\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n ></ui-tiered-menu>\r\n }@else {\r\n <ui-action-button\r\n [descriptor]=\"uiActionModel.descriptor!\"\r\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\r\n [addedCssClass]=\"uiActionModel.cssClass\"\r\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\r\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\r\n >\r\n </ui-action-button>\r\n }\r\n </ng-container>\r\n</div>\r\n\r\n@if(isScrollable && scrollOnWrap){\r\n<ui-action-button\r\n [disabled]=\"!isScrollable\"\r\n [descriptor]=\"buttonRight\"\r\n (actionClick)=\"scrollRight()\"\r\n (mousedown)=\"scrollStart('right')\"\r\n (mouseup)=\"stopScroll()\"\r\n (mouseleave)=\"stopScroll()\"\r\n (touchstart)=\"scrollStart('right')\"\r\n (touchend)=\"stopScroll()\"\r\n/>\r\n}\r\n", styles: [":host{display:flex;flex-direction:row;justify-content:space-between;gap:1rem;width:100%;align-items:center}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;justify-content:space-between;scrollbar-width:none;padding:.5rem 0}.scrollableContent::-webkit-scrollbar{display:none!important}\n"] }]
187
253
  }], ctorParameters: () => [{ type: i1.UiActionService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i5.ComponentLibrary, decorators: [{
188
254
  type: Inject,
189
255
  args: [COMPONENT_LIBRARY]
190
- }] }], propDecorators: { uiActionModels: [{
256
+ }] }], propDecorators: { containerRef: [{
257
+ type: ViewChild,
258
+ args: ['container', { static: false }]
259
+ }], uiActionModels: [{
191
260
  type: Input
192
261
  }], uiActionDescriptorService: [{
193
262
  type: Input
194
263
  }], id: [{
195
264
  type: Input
265
+ }], scrollOnWrap: [{
266
+ type: Input
267
+ }], onResize: [{
268
+ type: HostListener,
269
+ args: ['window:resize']
196
270
  }] } });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsTUFBTSxFQUVOLEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBc0MsTUFBTSxRQUFRLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7QUFRbEYsTUFBTSxPQUFPLHdCQUF3QjtJQWdCbkMsWUFDVSxPQUF3QixFQUN4QixNQUFnQixFQUNqQixjQUFpQyxFQUNOLE9BQXlCO1FBSG5ELFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDakIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ04sWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFuQnJELGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVqRCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLGtDQUFr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OytCQUNFLHlCQUF5Qjs7MEJBd0JoQyxNQUFNOzJCQUFDLGlCQUFpQjt5Q0FibEIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSW5qZWN0LFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJY29uUG9zaXRpb24sIFVpQWN0aW9uVG9vbHRpcFRvb2x0aXBQb3NpdGlvbkVudW0gfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkJ1dHRvblR5cGUgfSBmcm9tICcuLi9hcGkvbW9kZWwvdWlBY3Rpb25CdXR0b25UeXBlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSB9IGZyb20gJy4vdWktYWN0aW9uLmRlc2NyaXB0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uTW9kZWwgfSBmcm9tICcuL3VpLWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFVpQWN0aW9uU2VydmljZSB9IGZyb20gJy4vdWktYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDT01QT05FTlRfTElCUkFSWSwgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uL3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcbmltcG9ydCB7IEEgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzbWFydC11aS1hY3Rpb24tdG9vbGJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbXBvbmVudExpYnJhcnkgPSBDb21wb25lbnRMaWJyYXJ5OyAvLyBFeHBvc2UgdGhlIGVudW0gdG8gdGhlIHRlbXBsYXRlXHJcblxyXG4gIHByZXNzZWRCdXR0b25BY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSB1aUFjdGlvbk1vZGVscz86IFVpQWN0aW9uTW9kZWxbXTtcclxuICBASW5wdXQoKSB1aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlPzogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICBASW5wdXQoKSBpZD86IHN0cmluZztcclxuXHJcbiAgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zPzogVWlBY3Rpb25Nb2RlbFtdO1xyXG5cclxuICBwcml2YXRlIG1hbmFnZXIhOiBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xyXG4gIHByaXZhdGUgbGFuZ3VhZ2VDaGFuZ2VkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VydmljZTogVWlBY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmplY3Q6IEluamVjdG9yLFxyXG4gICAgcHVibGljIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoQ09NUE9ORU5UX0xJQlJBUlkpIHB1YmxpYyBjb21wTGliOiBDb21wb25lbnRMaWJyYXJ5XHJcbiAgKSB7XHJcbiAgICAvLyBJbmplY3RzIHRoZSBiYXNpYyBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlIHByb3ZpZGVkIGJ5IHRoZSBBcHBNb2R1bGVcclxuICAgIHRoaXMubWFuYWdlciA9IGluamVjdC5nZXQoVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpYmVUb0xhbmd1YWdlQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIE92ZXJyaWRlcyB0aGUgYmFzaWMgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSB3aXRoIGEgY3VzdG9tIG9uZSBpZiB0aGVyZSBpcyBvbmVcclxuICAgIGlmICh0aGlzLnVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5tYW5hZ2VyID0gdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xyXG4gICAgICB0aGlzLnN1YnNjcmliZVRvTGFuZ3VhZ2VDaGFuZ2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0VXAoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWyd1aUFjdGlvbk1vZGVscyddKSB7XHJcbiAgICAgIGxldCB1aUFjdGlvbk1vZGVscyA9IGNoYW5nZXNbJ3VpQWN0aW9uTW9kZWxzJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAodWlBY3Rpb25Nb2RlbHMpIHtcclxuICAgICAgICB0aGlzLnVpQWN0aW9uTW9kZWxzID0gdWlBY3Rpb25Nb2RlbHM7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0VXAoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0xhbmd1YWdlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sYW5ndWFnZUNoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5sYW5ndWFnZUNoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLm1hbmFnZXIubGFuZ3VhZ2VDaGFuZ2VkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0VXAoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRVcCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLnVpQWN0aW9uTW9kZWxzKSB7XHJcbiAgICAgIGxldCB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCB1aUFjdGlvbk1vZGVsIG9mIHRoaXMudWlBY3Rpb25Nb2RlbHMpIHtcclxuICAgICAgICBjb25zdCB1aUFjdGlvbiA9IHVpQWN0aW9uTW9kZWwudWlBY3Rpb247XHJcblxyXG4gICAgICAgIC8vIHVzaW5nIGVxdWFsaXR5IGlzIGEgbXVzdCBoZXJlLCB1bmRlZmluZWQgYW5kIG51bGwgc2hvdWxkIGJlIGVxdWFsXHJcbiAgICAgICAgaWYgKHRoaXMuaWQgPT0gdWlBY3Rpb24udG9vbGJhcikge1xyXG4gICAgICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yID0gYXdhaXQgdGhpcy5tYW5hZ2VyLmdldEFjdGlvbkRlc2NyaXB0b3IodWlBY3Rpb25Nb2RlbC51aUFjdGlvbik7XHJcbiAgICAgICAgICB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMucHVzaCh1aUFjdGlvbk1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMgPSB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnM7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Rm4oaWR4OiBudW1iZXIsIG06IFVpQWN0aW9uTW9kZWwpOiBzdHJpbmcgfCBudW1iZXIge1xyXG4gICAgcmV0dXJuIG0udWlBY3Rpb24uY29kZSA/PyBpZHg7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkFjdGlvbkNsaWNrZWQoZXZlbnQ6IGFueSwgdWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnByZXNzZWRCdXR0b25BY3RpdmUpIHtcclxuICAgICAgdGhpcy5wcmVzc2VkQnV0dG9uQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLnNlcnZpY2UudWlBY3Rpb25Nb2RlbCA9IHVpQWN0aW9uTW9kZWw7XHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIG5vZGVJZDogdWlBY3Rpb25Nb2RlbC5ub2RlSWQsXHJcbiAgICAgICAgd2lkZ2V0SWQ6IHVpQWN0aW9uTW9kZWwud2lkZ2V0SWQsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBsZXQgYWN0aW9uVG9FeGVjdXRlID0gdWlBY3Rpb25Nb2RlbC51aUFjdGlvbjtcclxuICAgICAgaWYgKGV2ZW50LmNvZGUpIHtcclxuICAgICAgICBhY3Rpb25Ub0V4ZWN1dGUgPSBldmVudDtcclxuICAgICAgfVxyXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuZXhlY3V0ZShhY3Rpb25Ub0V4ZWN1dGUsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgdGhpcy5wcmVzc2VkQnV0dG9uQWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQWN0aW9uRG91YmxlQ2xpY2tlZChldmVudDogYW55LCB1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogdm9pZCB7XHJcbiAgICAvLyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIC8vIFdlIGRvIG5vdCBoYW5kbGUgZG91YmxlIGNsaWNrc1xyXG4gIH1cclxuICBnZXRidG5DbGFzcyh1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogc3RyaW5nIHtcclxuICAgIGlmICh1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LmNvbG9yKSB7XHJcbiAgICAgIHJldHVybiAncC1idXR0b24tJyArIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uY29sb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIGdldFR5cGUodWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IGFueSB7XHJcbiAgICBpZiAoIXVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhgQWN0aW9uIGJ1dHRvbiB0eXBlIHVuc2V0OiAke3VpQWN0aW9uTW9kZWw/LnVpQWN0aW9uPy5jb2RlfWApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XHJcbiAgICAgIC8vIHJldHVybiAnJztcclxuXHJcbiAgICAgIC8vICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgLyogICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgJ3AtYnV0dG9uLW91dGxpbmVkJzogdHJ1ZSxcclxuICAqL1xyXG4gICAgICBzd2l0Y2ggKHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSkge1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk5PUk1BTDpcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GTEFUOlxyXG4gICAgICAgICAgcmV0dXJuIHsgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLlJBSVNFRDpcclxuICAgICAgICAgIHJldHVybiB7ICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlLCAncC1idXR0b24tcm91bmRlZCc6IHRydWUgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5TVFJPS0VEOlxyXG4gICAgICAgICAgcmV0dXJuIHsgJ3AtYnV0dG9uLW91dGxpbmVkJzogdHJ1ZSwgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUI6XHJcbiAgICAgICAgICByZXR1cm4geyAncC1idXR0b24tcm91bmRlZCc6IHRydWUsICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSwgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUgfTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXRleHQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tb3V0bGluZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3dpdGNoICh1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUpIHtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5OT1JNQUw6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtYnV0dG9uJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GTEFUOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWZsYXQtYnV0dG9uJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQ6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtcmFpc2VkLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuU1RST0tFRDpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1zdHJva2VkLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTjpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1pY29uLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUI6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtbWluaS1mYWInO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLkZBQjpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1mYWInO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhgVW5oYW5kbGVkIGFjdGlvbiBidXR0b24gdHlwZSBjYXNlOiAke3VpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZX1gKTtcclxuICAgICAgICAgIHJldHVybiBgbWF0LWJ1dHRvbmA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGljb25Qb3NpdGlvbigpOiB0eXBlb2YgSWNvblBvc2l0aW9uIHtcclxuICAgIHJldHVybiBJY29uUG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBpc09ubHlJY29uKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSA9PT0gVWlBY3Rpb25CdXR0b25UeXBlLklDT04gfHxcclxuICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUIgfHxcclxuICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuRkFCXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcFBvcyhwb3M/OiBVaUFjdGlvblRvb2x0aXBUb29sdGlwUG9zaXRpb25FbnVtKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIGlmIChwb3MpIHtcclxuICAgICAgcmV0dXJuIHBvcy50b0xvd2VyQ2FzZSgpIGFzIFRvb2x0aXBQb3NpdGlvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnYmVmb3JlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRvb2x0aXBEZWxheShkZWxheT86IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gZGVsYXkgPyBkZWxheSA6IDEwMDA7XHJcbiAgfVxyXG5cclxuICBnZXRUb29sdGlwSGlkZURlbGF5KGRlbGF5PzogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBkZWxheSA/IGRlbGF5IDogMjAwMDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInVpQWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVpQWN0aW9uTW9kZWwgb2YgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgIEBpZih1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLnN1YkFjdGlvbnMgJiYgdWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5zdWJBY3Rpb25zLmxlbmd0aCA+IDAgKXtcclxuICAgIDx1aS10aWVyZWQtbWVudVxyXG4gICAgICAjbWVudVxyXG4gICAgICBbdHJpZ2dlckFjdGlvbl09XCJ1aUFjdGlvbk1vZGVsLnVpQWN0aW9uXCJcclxuICAgICAgW3N1YkFjdGlvbnNdPVwidWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5zdWJBY3Rpb25zIVwiXHJcbiAgICAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbkNsaWNrZWQoJGV2ZW50LCB1aUFjdGlvbk1vZGVsKVwiXHJcbiAgICA+PC91aS10aWVyZWQtbWVudT5cclxuICAgIH1AZWxzZSB7XHJcbiAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICBbZGVzY3JpcHRvcl09XCJ1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3IhXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIiEhdWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5kaXNhYmxlZFwiXHJcbiAgICAgIFthZGRlZENzc0NsYXNzXT1cInVpQWN0aW9uTW9kZWwuY3NzQ2xhc3NcIlxyXG4gICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgICAoYWN0aW9uRG91YmxlQ2xpY2spPVwib25BY3Rpb25Eb3VibGVDbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgPlxyXG4gICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuIl19
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFFTixLQUFLLEVBS0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUEwRCxNQUFNLFFBQVEsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUczRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQU9sRixNQUFNLE9BQU8sd0JBQXdCO0lBMkJuQyxZQUNVLE9BQXdCLEVBQ3hCLE1BQWdCLEVBQ2pCLGNBQWlDLEVBQ04sT0FBeUI7UUFIbkQsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNqQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDTixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQTVCckQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRWpELHFCQUFnQixHQUFHLGdC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QUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQzsrR0EvUVUsd0JBQXdCLDBHQStCekIsaUJBQWlCO21HQS9CaEIsd0JBQXdCLHFZQzVCckMsZ3FEQStDQTs7NEZEbkJhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSx5QkFBeUI7OzBCQW1DaEMsTUFBTTsyQkFBQyxpQkFBaUI7eUNBOUJnQixZQUFZO3NCQUF0RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBUWhDLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQTRDeUIsUUFBUTtzQkFBdEMsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSWNvblBvc2l0aW9uLCBVaUFjdGlvbkRlc2NyaXB0b3IsIFVpQWN0aW9uVG9vbHRpcFRvb2x0aXBQb3NpdGlvbkVudW0gfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBVaUFjdGlvbkJ1dHRvblR5cGUgfSBmcm9tICcuLi9hcGkvbW9kZWwvdWlBY3Rpb25CdXR0b25UeXBlJztcclxuaW1wb3J0IHsgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSB9IGZyb20gJy4vdWktYWN0aW9uLmRlc2NyaXB0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFVpQWN0aW9uTW9kZWwgfSBmcm9tICcuL3VpLWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFVpQWN0aW9uU2VydmljZSB9IGZyb20gJy4vdWktYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDT01QT05FTlRfTElCUkFSWSwgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uL3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LXVpLWFjdGlvbi10b29sYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbXBvbmVudExpYnJhcnkgPSBDb21wb25lbnRMaWJyYXJ5OyAvLyBFeHBvc2UgdGhlIGVudW0gdG8gdGhlIHRlbXBsYXRlXHJcblxyXG4gIHByZXNzZWRCdXR0b25BY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSB1aUFjdGlvbk1vZGVscz86IFVpQWN0aW9uTW9kZWxbXTtcclxuICBASW5wdXQoKSB1aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlPzogVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICBASW5wdXQoKSBpZD86IHN0cmluZztcclxuICBASW5wdXQoKSBzY3JvbGxPbldyYXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zPzogVWlBY3Rpb25Nb2RlbFtdO1xyXG5cclxuICBwcml2YXRlIG1hbmFnZXIhOiBVaUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlO1xyXG4gIHByaXZhdGUgbGFuZ3VhZ2VDaGFuZ2VkU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBpc1Njcm9sbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxJbnRlcnZhbDogYW55O1xyXG4gIHByaXZhdGUgc2Nyb2xsVGltZW91dDogYW55O1xyXG4gIHByaXZhdGUgc2Nyb2xsU3BlZWQ6IG51bWJlciA9IDU7XHJcbiAgcHJpdmF0ZSBzY3JvbGxEZWxheTogbnVtYmVyID0gMTY7XHJcbiAgcHJpdmF0ZSBzY3JvbGxIb2xkRGVsYXk6IG51bWJlciA9IDEwMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFVpQWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgaW5qZWN0OiBJbmplY3RvcixcclxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBwdWJsaWMgY29tcExpYjogQ29tcG9uZW50TGlicmFyeVxyXG4gICkge1xyXG4gICAgLy8gSW5qZWN0cyB0aGUgYmFzaWMgVWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSBwcm92aWRlZCBieSB0aGUgQXBwTW9kdWxlXHJcbiAgICB0aGlzLm1hbmFnZXIgPSBpbmplY3QuZ2V0KFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaWJlVG9MYW5ndWFnZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBPdmVycmlkZXMgdGhlIGJhc2ljIFVpQWN0aW9uRGVzY3JpcHRvclNlcnZpY2Ugd2l0aCBhIGN1c3RvbSBvbmUgaWYgdGhlcmUgaXMgb25lXHJcbiAgICBpZiAodGhpcy51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMubWFuYWdlciA9IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUb0xhbmd1YWdlQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFVwKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zY3JvbGxPbldyYXApIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1Njcm9sbGFibGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJykgb25SZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5zY3JvbGxPbldyYXApIHtcclxuICAgICAgdGhpcy5jaGVja1Njcm9sbGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWyd1aUFjdGlvbk1vZGVscyddKSB7XHJcbiAgICAgIGxldCB1aUFjdGlvbk1vZGVscyA9IGNoYW5nZXNbJ3VpQWN0aW9uTW9kZWxzJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAodWlBY3Rpb25Nb2RlbHMpIHtcclxuICAgICAgICB0aGlzLnVpQWN0aW9uTW9kZWxzID0gdWlBY3Rpb25Nb2RlbHM7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0VXAoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0xhbmd1YWdlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sYW5ndWFnZUNoYW5nZWRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy5sYW5ndWFnZUNoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLm1hbmFnZXIubGFuZ3VhZ2VDaGFuZ2VkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0VXAoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRVcCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLnVpQWN0aW9uTW9kZWxzKSB7XHJcbiAgICAgIGxldCB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCB1aUFjdGlvbk1vZGVsIG9mIHRoaXMudWlBY3Rpb25Nb2RlbHMpIHtcclxuICAgICAgICBjb25zdCB1aUFjdGlvbiA9IHVpQWN0aW9uTW9kZWwudWlBY3Rpb247XHJcblxyXG4gICAgICAgIC8vIHVzaW5nIGVxdWFsaXR5IGlzIGEgbXVzdCBoZXJlLCB1bmRlZmluZWQgYW5kIG51bGwgc2hvdWxkIGJlIGVxdWFsXHJcbiAgICAgICAgaWYgKHRoaXMuaWQgPT0gdWlBY3Rpb24udG9vbGJhcikge1xyXG4gICAgICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yID0gYXdhaXQgdGhpcy5tYW5hZ2VyLmdldEFjdGlvbkRlc2NyaXB0b3IodWlBY3Rpb25Nb2RlbC51aUFjdGlvbik7XHJcbiAgICAgICAgICB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMucHVzaCh1aUFjdGlvbk1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnMgPSB1aUFjdGlvbk1vZGVsc1dpdGhEZXNjcmlwdGlvbnM7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja1Njcm9sbGFibGUoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Rm4oaWR4OiBudW1iZXIsIG06IFVpQWN0aW9uTW9kZWwpOiBzdHJpbmcgfCBudW1iZXIge1xyXG4gICAgcmV0dXJuIG0udWlBY3Rpb24uY29kZSA/PyBpZHg7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkFjdGlvbkNsaWNrZWQoZXZlbnQ6IGFueSwgdWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKHVpQWN0aW9uTW9kZWwudWlBY3Rpb24uZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnByZXNzZWRCdXR0b25BY3RpdmUpIHtcclxuICAgICAgdGhpcy5wcmVzc2VkQnV0dG9uQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLnNlcnZpY2UudWlBY3Rpb25Nb2RlbCA9IHVpQWN0aW9uTW9kZWw7XHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIG5vZGVJZDogdWlBY3Rpb25Nb2RlbC5ub2RlSWQsXHJcbiAgICAgICAgd2lkZ2V0SWQ6IHVpQWN0aW9uTW9kZWwud2lkZ2V0SWQsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBsZXQgYWN0aW9uVG9FeGVjdXRlID0gdWlBY3Rpb25Nb2RlbC51aUFjdGlvbjtcclxuICAgICAgaWYgKGV2ZW50LmNvZGUpIHtcclxuICAgICAgICBhY3Rpb25Ub0V4ZWN1dGUgPSBldmVudDtcclxuICAgICAgfVxyXG4gICAgICBhd2FpdCB0aGlzLnNlcnZpY2UuZXhlY3V0ZShhY3Rpb25Ub0V4ZWN1dGUsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgdGhpcy5wcmVzc2VkQnV0dG9uQWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQWN0aW9uRG91YmxlQ2xpY2tlZChldmVudDogYW55LCB1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogdm9pZCB7XHJcbiAgICAvLyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIC8vIFdlIGRvIG5vdCBoYW5kbGUgZG91YmxlIGNsaWNrc1xyXG4gIH1cclxuICBnZXRidG5DbGFzcyh1aUFjdGlvbk1vZGVsOiBVaUFjdGlvbk1vZGVsKTogc3RyaW5nIHtcclxuICAgIGlmICh1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LmNvbG9yKSB7XHJcbiAgICAgIHJldHVybiAncC1idXR0b24tJyArIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8uY29sb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIGdldFR5cGUodWlBY3Rpb25Nb2RlbDogVWlBY3Rpb25Nb2RlbCk6IGFueSB7XHJcbiAgICBpZiAoIXVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhgQWN0aW9uIGJ1dHRvbiB0eXBlIHVuc2V0OiAke3VpQWN0aW9uTW9kZWw/LnVpQWN0aW9uPy5jb2RlfWApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XHJcbiAgICAgIC8vIHJldHVybiAnJztcclxuXHJcbiAgICAgIC8vICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgLyogICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAncC1idXR0b24tcm91bmRlZCc6IHRydWUsXHJcbiAgICAgICAgJ3AtYnV0dG9uLW91dGxpbmVkJzogdHJ1ZSxcclxuICAqL1xyXG4gICAgICBzd2l0Y2ggKHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSkge1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLk5PUk1BTDpcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GTEFUOlxyXG4gICAgICAgICAgcmV0dXJuIHsgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUsICdwLWJ1dHRvbi1yb3VuZGVkJzogdHJ1ZSB9O1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLlJBSVNFRDpcclxuICAgICAgICAgIHJldHVybiB7ICdwLWJ1dHRvbi1yYWlzZWQnOiB0cnVlLCAncC1idXR0b24tcm91bmRlZCc6IHRydWUgfTtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5TVFJPS0VEOlxyXG4gICAgICAgICAgcmV0dXJuIHsgJ3AtYnV0dG9uLW91dGxpbmVkJzogdHJ1ZSwgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlIH07XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUI6XHJcbiAgICAgICAgICByZXR1cm4geyAncC1idXR0b24tcm91bmRlZCc6IHRydWUsICdwLWJ1dHRvbi10ZXh0JzogdHJ1ZSwgJ3AtYnV0dG9uLXJhaXNlZCc6IHRydWUgfTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXRleHQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tcmFpc2VkJzogdHJ1ZSxcclxuICAgICAgICAgICAgJ3AtYnV0dG9uLXJvdW5kZWQnOiB0cnVlLFxyXG4gICAgICAgICAgICAncC1idXR0b24tb3V0bGluZWQnOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3dpdGNoICh1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3I/LnR5cGUpIHtcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5OT1JNQUw6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtYnV0dG9uJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5GTEFUOlxyXG4gICAgICAgICAgcmV0dXJuICdtYXQtbWRjLWZsYXQtYnV0dG9uJztcclxuICAgICAgICBjYXNlIFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQ6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtcmFpc2VkLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuU1RST0tFRDpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1zdHJva2VkLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTjpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1pY29uLWJ1dHRvbic7XHJcbiAgICAgICAgY2FzZSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUI6XHJcbiAgICAgICAgICByZXR1cm4gJ21hdC1tZGMtbWluaS1mYWInO1xyXG4gICAgICAgIGNhc2UgVWlBY3Rpb25CdXR0b25UeXBlLkZBQjpcclxuICAgICAgICAgIHJldHVybiAnbWF0LW1kYy1mYWInO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhgVW5oYW5kbGVkIGFjdGlvbiBidXR0b24gdHlwZSBjYXNlOiAke3VpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZX1gKTtcclxuICAgICAgICAgIHJldHVybiBgbWF0LWJ1dHRvbmA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGljb25Qb3NpdGlvbigpOiB0eXBlb2YgSWNvblBvc2l0aW9uIHtcclxuICAgIHJldHVybiBJY29uUG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBpc09ubHlJY29uKHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHVpQWN0aW9uTW9kZWwuZGVzY3JpcHRvcj8udHlwZSA9PT0gVWlBY3Rpb25CdXR0b25UeXBlLklDT04gfHxcclxuICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuTUlOSV9GQUIgfHxcclxuICAgICAgdWlBY3Rpb25Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID09PSBVaUFjdGlvbkJ1dHRvblR5cGUuRkFCXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcFBvcyhwb3M/OiBVaUFjdGlvblRvb2x0aXBUb29sdGlwUG9zaXRpb25FbnVtKTogVG9vbHRpcFBvc2l0aW9uIHtcclxuICAgIGlmIChwb3MpIHtcclxuICAgICAgcmV0dXJuIHBvcy50b0xvd2VyQ2FzZSgpIGFzIFRvb2x0aXBQb3NpdGlvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnYmVmb3JlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRvb2x0aXBEZWxheShkZWxheT86IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gZGVsYXkgPyBkZWxheSA6IDEwMDA7XHJcbiAgfVxyXG5cclxuICBnZXRUb29sdGlwSGlkZURlbGF5KGRlbGF5PzogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBkZWxheSA/IGRlbGF5IDogMjAwMDtcclxuICB9XHJcblxyXG4gIGNoZWNrU2Nyb2xsYWJsZSgpIHtcclxuICAgIGlmICghdGhpcy5zY3JvbGxPbldyYXApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNjcm9sbGFibGUgPSB0aGlzLmNvbnRhaW5lclJlZj8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChzY3JvbGxhYmxlKSB7XHJcbiAgICAgIHRoaXMuaXNTY3JvbGxhYmxlID0gc2Nyb2xsYWJsZS5zY3JvbGxXaWR0aCA+IHNjcm9sbGFibGUuY2xpZW50V2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNjcm9sbExlZnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgLT0gMTAwO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsUmlnaHQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgKz0gMTAwO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsU3RhcnQoZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnKTogdm9pZCB7XHJcbiAgICB0aGlzLnNjcm9sbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZGVsdGEgPSBkaXJlY3Rpb24gPT09ICdsZWZ0JyA/IC10aGlzLnNjcm9sbFNwZWVkIDogdGhpcy5zY3JvbGxTcGVlZDtcclxuXHJcbiAgICAgIHRoaXMuc2Nyb2xsSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ICs9IGRlbHRhO1xyXG4gICAgICB9LCB0aGlzLnNjcm9sbERlbGF5KTtcclxuICAgIH0sIHRoaXMuc2Nyb2xsSG9sZERlbGF5KTtcclxuICB9XHJcblxyXG4gIHN0b3BTY3JvbGwoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zY3JvbGxUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbFRpbWVvdXQpO1xyXG4gICAgICB0aGlzLnNjcm9sbFRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2Nyb2xsSW50ZXJ2YWwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnNjcm9sbEludGVydmFsKTtcclxuICAgICAgdGhpcy5zY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidXR0b25MZWZ0OiBVaUFjdGlvbkRlc2NyaXB0b3IgPSB7XHJcbiAgICB0aXRsZTogJycsXHJcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgdHlwZTogVWlBY3Rpb25CdXR0b25UeXBlLlJBSVNFRCxcclxuICAgIGljb246IHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HID8gJ2NoZXZyb24tbGVmdCcgOiAnYXJyb3dfYmFjaycsXHJcbiAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgfTtcclxuXHJcbiAgYnV0dG9uUmlnaHQ6IFVpQWN0aW9uRGVzY3JpcHRvciA9IHtcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuUkFJU0VELFxyXG4gICAgaWNvbjogdGhpcy5jb21wTGliID09PSBDb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcgPyAnY2hldnJvbi1yaWdodCcgOiAnYXJyb3dfZm9yd2FyZCcsXHJcbiAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgfTtcclxufVxyXG4iLCJAaWYoaXNTY3JvbGxhYmxlICYmIHNjcm9sbE9uV3JhcCl7XHJcbjx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgW2Rpc2FibGVkXT1cIiFpc1Njcm9sbGFibGVcIlxyXG4gIFtkZXNjcmlwdG9yXT1cImJ1dHRvbkxlZnRcIlxyXG4gIChhY3Rpb25DbGljayk9XCJzY3JvbGxMZWZ0KClcIlxyXG4gIChtb3VzZWRvd24pPVwic2Nyb2xsU3RhcnQoJ2xlZnQnKVwiXHJcbiAgKG1vdXNldXApPVwic3RvcFNjcm9sbCgpXCJcclxuICAobW91c2VsZWF2ZSk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gICh0b3VjaHN0YXJ0KT1cInNjcm9sbFN0YXJ0KCdsZWZ0JylcIlxyXG4gICh0b3VjaGVuZCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4vPlxyXG59XHJcblxyXG48ZGl2ICNjb250YWluZXIgY2xhc3M9XCJ1aUFjdGlvbkJ1dHRvbnNDb250YWluZXJcIiBbbmdDbGFzc109XCJ7IHNjcm9sbGFibGVDb250ZW50OiBzY3JvbGxPbldyYXAgfVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVpQWN0aW9uTW9kZWwgb2YgdWlBY3Rpb25Nb2RlbHNXaXRoRGVzY3JpcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cclxuICAgIEBpZih1aUFjdGlvbk1vZGVsLnVpQWN0aW9uLnN1YkFjdGlvbnMgJiYgdWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5zdWJBY3Rpb25zLmxlbmd0aCA+IDAgKXtcclxuICAgIDx1aS10aWVyZWQtbWVudVxyXG4gICAgICAjbWVudVxyXG4gICAgICBbdHJpZ2dlckFjdGlvbl09XCJ1aUFjdGlvbk1vZGVsLnVpQWN0aW9uXCJcclxuICAgICAgW3N1YkFjdGlvbnNdPVwidWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5zdWJBY3Rpb25zIVwiXHJcbiAgICAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbkNsaWNrZWQoJGV2ZW50LCB1aUFjdGlvbk1vZGVsKVwiXHJcbiAgICA+PC91aS10aWVyZWQtbWVudT5cclxuICAgIH1AZWxzZSB7XHJcbiAgICA8dWktYWN0aW9uLWJ1dHRvblxyXG4gICAgICBbZGVzY3JpcHRvcl09XCJ1aUFjdGlvbk1vZGVsLmRlc2NyaXB0b3IhXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIiEhdWlBY3Rpb25Nb2RlbC51aUFjdGlvbi5kaXNhYmxlZFwiXHJcbiAgICAgIFthZGRlZENzc0NsYXNzXT1cInVpQWN0aW9uTW9kZWwuY3NzQ2xhc3NcIlxyXG4gICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25DbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgICAoYWN0aW9uRG91YmxlQ2xpY2spPVwib25BY3Rpb25Eb3VibGVDbGlja2VkKCRldmVudCwgdWlBY3Rpb25Nb2RlbClcIlxyXG4gICAgPlxyXG4gICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbkBpZihpc1Njcm9sbGFibGUgJiYgc2Nyb2xsT25XcmFwKXtcclxuPHVpLWFjdGlvbi1idXR0b25cclxuICBbZGlzYWJsZWRdPVwiIWlzU2Nyb2xsYWJsZVwiXHJcbiAgW2Rlc2NyaXB0b3JdPVwiYnV0dG9uUmlnaHRcIlxyXG4gIChhY3Rpb25DbGljayk9XCJzY3JvbGxSaWdodCgpXCJcclxuICAobW91c2Vkb3duKT1cInNjcm9sbFN0YXJ0KCdyaWdodCcpXCJcclxuICAobW91c2V1cCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4gIChtb3VzZWxlYXZlKT1cInN0b3BTY3JvbGwoKVwiXHJcbiAgKHRvdWNoc3RhcnQpPVwic2Nyb2xsU3RhcnQoJ3JpZ2h0JylcIlxyXG4gICh0b3VjaGVuZCk9XCJzdG9wU2Nyb2xsKClcIlxyXG4vPlxyXG59XHJcbiJdfQ==