@alfresco/adf-content-services 8.1.0-16342534841 → 8.1.0-16344390102

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.
@@ -322,7 +322,7 @@ export class AlfrescoViewerComponent {
322
322
  this.nodeActionsService.downloadNode(this.nodeEntry);
323
323
  }
324
324
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlfrescoViewerComponent, deps: [{ token: i1.AlfrescoApiService }, { token: i2.NodesApiService }, { token: i3.RenditionService }, { token: i4.ViewUtilService }, { token: i5.ContentService }, { token: i6.UploadService }, { token: i7.MatDialog }, { token: i0.ChangeDetectorRef }, { token: i8.NodeActionsService }], target: i0.ɵɵFactoryTarget.Component }); }
325
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlfrescoViewerComponent, isStandalone: true, selector: "adf-alfresco-viewer", inputs: { nodeId: "nodeId", versionId: "versionId", sharedLinkId: "sharedLinkId", showViewer: "showViewer", maxRetries: "maxRetries", allowGoBack: "allowGoBack", showToolbar: "showToolbar", overlayMode: "overlayMode", allowNavigate: "allowNavigate", canNavigateBefore: "canNavigateBefore", canNavigateNext: "canNavigateNext", allowLeftSidebar: "allowLeftSidebar", allowRightSidebar: "allowRightSidebar", showRightSidebar: "showRightSidebar", showLeftSidebar: "showLeftSidebar", allowDownload: "allowDownload", allowPrint: "allowPrint", allowFullScreen: "allowFullScreen", hideInfoButton: "hideInfoButton", closeButtonPosition: "closeButtonPosition", sidebarRightTemplate: "sidebarRightTemplate", sidebarLeftTemplate: "sidebarLeftTemplate", readOnly: "readOnly", showToolbarDividers: "showToolbarDividers" }, outputs: { invalidSharedLink: "invalidSharedLink", navigateBefore: "navigateBefore", navigateNext: "navigateNext", showViewerChange: "showViewerChange" }, host: { classAttribute: "adf-alfresco-viewer" }, providers: [ViewUtilService], queries: [{ propertyName: "toolbar", first: true, predicate: ViewerToolbarComponent, descendants: true }, { propertyName: "sidebar", first: true, predicate: ViewerSidebarComponent, descendants: true }, { propertyName: "toolbarActions", first: true, predicate: ViewerToolbarActionsComponent, descendants: true }, { propertyName: "moreActions", first: true, predicate: ViewerMoreActionsComponent, descendants: true }, { propertyName: "openWith", first: true, predicate: ViewerOpenWithComponent, descendants: true }, { propertyName: "viewerExtensions", first: true, predicate: ["viewerExtensions"], descendants: true }], viewQueries: [{ propertyName: "adfViewer", first: true, predicate: ["adfViewer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<adf-viewer\n #adfViewer\n [(showViewer)]=\"showViewer\"\n [allowGoBack]=\"allowGoBack\"\n [showToolbar]=\"showToolbar\"\n [overlayMode]=\"overlayMode\"\n [allowNavigate]=\"allowNavigate\"\n [canNavigateBefore]=\"canNavigateBefore\"\n [canNavigateNext]=\"canNavigateNext\"\n [allowLeftSidebar]=\"allowLeftSidebar\"\n [allowRightSidebar]=\"allowRightSidebar\"\n [showRightSidebar]=\"showRightSidebar\"\n [showLeftSidebar]=\"showLeftSidebar\"\n [allowFullScreen]=\"allowFullScreen\"\n [sidebarRightTemplate]=\"sidebarRightTemplate\"\n [sidebarLeftTemplate]=\"sidebarLeftTemplate\"\n [sidebarRightTemplateContext]=\"sidebarRightTemplateContext\"\n [sidebarLeftTemplateContext]=\"sidebarLeftTemplateContext\"\n [closeButtonPosition]=\"closeButtonPosition\"\n [hideInfoButton]=\"hideInfoButton\"\n [fileName]=\"fileName\"\n [mimeType]=\"mimeType\"\n [nodeMimeType]=\"nodeMimeType\"\n [urlFile]=\"urlFileContent\"\n [tracks]=\"tracks\"\n [readOnly]=\"readOnly || !canEditNode\"\n [showToolbarDividers]=\"showToolbarDividers\"\n [allowedEditActions]=\"allowedEditActions\"\n [viewerExtensions]=\"viewerExtensions\"\n [nodeId]=\"nodeId\"\n (downloadFile)=\"onDownloadFile()\"\n (navigateBefore)=\"onNavigateBeforeClick($event)\"\n (navigateNext)=\"onNavigateNextClick($event)\"\n (showViewerChange)=\"onClose()\"\n (submitFile)=\"onSubmitFile($event)\">\n\n <adf-viewer-toolbar *ngIf=\"toolbar\">\n <ng-content select=\"adf-viewer-toolbar\" />\n </adf-viewer-toolbar>\n\n <adf-viewer-toolbar-actions *ngIf=\"toolbarActions\">\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n </adf-viewer-toolbar-actions>\n\n <adf-viewer-more-actions *ngIf=\"moreActions\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </adf-viewer-more-actions>\n\n <adf-viewer-open-with *ngIf=\"openWith\">\n <ng-content select=\"adf-viewer-open-with\" />\n </adf-viewer-open-with>\n\n <adf-viewer-sidebar *ngIf=\"sidebar\">\n <ng-content select=\"adf-viewer-sidebar\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-toolbar-custom-actions *ngIf=\"allowDownload || allowPrint\">\n <button id=\"adf-alfresco-viewer-download\"\n *ngIf=\"allowDownload\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate }}\"\n data-automation-id=\"adf-toolbar-download\"\n [adfNodeDownload]=\"nodeEntry\"\n [version]=\"versionEntry\">\n <mat-icon>file_download</mat-icon>\n </button>\n\n <button id=\"adf-alfresco-viewer-print\"\n *ngIf=\"allowPrint\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PRINT' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PRINT' | translate }}\"\n data-automation-id=\"adf-toolbar-print\"\n (click)=\"onPrintContent($event)\">\n <mat-icon>print</mat-icon>\n </button>\n </adf-viewer-toolbar-custom-actions>\n</adf-viewer>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.ViewerToolbarComponent, selector: "adf-viewer-toolbar" }, { kind: "component", type: i4.ViewerSidebarComponent, selector: "adf-viewer-sidebar" }, { kind: "component", type: i4.ViewerOpenWithComponent, selector: "adf-viewer-open-with" }, { kind: "component", type: i4.ViewerMoreActionsComponent, selector: "adf-viewer-more-actions" }, { kind: "component", type: i4.ViewerToolbarActionsComponent, selector: "adf-viewer-toolbar-actions" }, { kind: "component", type: i4.ViewerComponent, selector: "adf-viewer", inputs: ["urlFile", "blobFile", "showViewer", "allowGoBack", "allowFullScreen", "showToolbar", "overlayMode", "allowNavigate", "canNavigateBefore", "canNavigateNext", "allowLeftSidebar", "allowRightSidebar", "showRightSidebar", "showLeftSidebar", "sidebarRightTemplate", "sidebarLeftTemplate", "readOnly", "allowedEditActions", "tracks", "mimeType", "sidebarRightTemplateContext", "sidebarLeftTemplateContext", "closeButtonPosition", "hideInfoButton", "viewerExtensions", "nodeId", "nodeMimeType", "customError", "showToolbarDividers", "fileName"], outputs: ["downloadFile", "navigateBefore", "navigateNext", "showViewerChange", "submitFile"] }, { kind: "component", type: i4.ViewerToolbarCustomActionsComponent, selector: "adf-viewer-toolbar-custom-actions" }, { kind: "directive", type: NodeDownloadDirective, selector: "[adfNodeDownload]", inputs: ["adfNodeDownload", "version"] }], encapsulation: i0.ViewEncapsulation.None }); }
325
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlfrescoViewerComponent, isStandalone: true, selector: "adf-alfresco-viewer", inputs: { nodeId: "nodeId", versionId: "versionId", sharedLinkId: "sharedLinkId", showViewer: "showViewer", maxRetries: "maxRetries", allowGoBack: "allowGoBack", showToolbar: "showToolbar", overlayMode: "overlayMode", allowNavigate: "allowNavigate", canNavigateBefore: "canNavigateBefore", canNavigateNext: "canNavigateNext", allowLeftSidebar: "allowLeftSidebar", allowRightSidebar: "allowRightSidebar", showRightSidebar: "showRightSidebar", showLeftSidebar: "showLeftSidebar", allowDownload: "allowDownload", allowPrint: "allowPrint", allowFullScreen: "allowFullScreen", hideInfoButton: "hideInfoButton", closeButtonPosition: "closeButtonPosition", sidebarRightTemplate: "sidebarRightTemplate", sidebarLeftTemplate: "sidebarLeftTemplate", readOnly: "readOnly", showToolbarDividers: "showToolbarDividers" }, outputs: { invalidSharedLink: "invalidSharedLink", navigateBefore: "navigateBefore", navigateNext: "navigateNext", showViewerChange: "showViewerChange" }, host: { classAttribute: "adf-alfresco-viewer" }, providers: [ViewUtilService], queries: [{ propertyName: "toolbar", first: true, predicate: ViewerToolbarComponent, descendants: true }, { propertyName: "sidebar", first: true, predicate: ViewerSidebarComponent, descendants: true }, { propertyName: "toolbarActions", first: true, predicate: ViewerToolbarActionsComponent, descendants: true }, { propertyName: "moreActions", first: true, predicate: ViewerMoreActionsComponent, descendants: true }, { propertyName: "openWith", first: true, predicate: ViewerOpenWithComponent, descendants: true }, { propertyName: "viewerExtensions", first: true, predicate: ["viewerExtensions"], descendants: true }], viewQueries: [{ propertyName: "adfViewer", first: true, predicate: ["adfViewer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<adf-viewer\n #adfViewer\n [(showViewer)]=\"showViewer\"\n [allowGoBack]=\"allowGoBack\"\n [showToolbar]=\"showToolbar\"\n [overlayMode]=\"overlayMode\"\n [allowNavigate]=\"allowNavigate\"\n [canNavigateBefore]=\"canNavigateBefore\"\n [canNavigateNext]=\"canNavigateNext\"\n [allowLeftSidebar]=\"allowLeftSidebar\"\n [allowRightSidebar]=\"allowRightSidebar\"\n [showRightSidebar]=\"showRightSidebar\"\n [showLeftSidebar]=\"showLeftSidebar\"\n [allowFullScreen]=\"allowFullScreen\"\n [sidebarRightTemplate]=\"sidebarRightTemplate\"\n [sidebarLeftTemplate]=\"sidebarLeftTemplate\"\n [sidebarRightTemplateContext]=\"sidebarRightTemplateContext\"\n [sidebarLeftTemplateContext]=\"sidebarLeftTemplateContext\"\n [closeButtonPosition]=\"closeButtonPosition\"\n [hideInfoButton]=\"hideInfoButton\"\n [fileName]=\"fileName\"\n [mimeType]=\"mimeType\"\n [nodeMimeType]=\"nodeMimeType\"\n [urlFile]=\"urlFileContent\"\n [tracks]=\"tracks\"\n [readOnly]=\"readOnly || !canEditNode\"\n [showToolbarDividers]=\"showToolbarDividers\"\n [allowedEditActions]=\"allowedEditActions\"\n [viewerExtensions]=\"viewerExtensions\"\n [nodeId]=\"nodeId\"\n (downloadFile)=\"onDownloadFile()\"\n (navigateBefore)=\"onNavigateBeforeClick($event)\"\n (navigateNext)=\"onNavigateNextClick($event)\"\n (showViewerChange)=\"onClose()\"\n (submitFile)=\"onSubmitFile($event)\">\n\n <adf-viewer-toolbar *ngIf=\"toolbar\">\n <ng-content select=\"adf-viewer-toolbar\" />\n </adf-viewer-toolbar>\n\n <adf-viewer-toolbar-actions *ngIf=\"toolbarActions\">\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n </adf-viewer-toolbar-actions>\n\n <adf-viewer-more-actions *ngIf=\"moreActions\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </adf-viewer-more-actions>\n\n <adf-viewer-open-with *ngIf=\"openWith\">\n <ng-content select=\"adf-viewer-open-with\" />\n </adf-viewer-open-with>\n\n <adf-viewer-sidebar *ngIf=\"sidebar\">\n <ng-content select=\"adf-viewer-sidebar\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-toolbar-custom-actions *ngIf=\"allowDownload || allowPrint\">\n <button id=\"adf-alfresco-viewer-download\"\n *ngIf=\"allowDownload\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate }}\"\n data-automation-id=\"adf-toolbar-download\"\n [adfNodeDownload]=\"nodeEntry\"\n [version]=\"versionEntry\">\n <mat-icon>file_download</mat-icon>\n </button>\n\n <button id=\"adf-alfresco-viewer-print\"\n *ngIf=\"allowPrint\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PRINT' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PRINT' | translate }}\"\n data-automation-id=\"adf-toolbar-print\"\n (click)=\"onPrintContent($event)\">\n <mat-icon>print</mat-icon>\n </button>\n </adf-viewer-toolbar-custom-actions>\n</adf-viewer>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.ViewerToolbarComponent, selector: "adf-viewer-toolbar" }, { kind: "component", type: i4.ViewerSidebarComponent, selector: "adf-viewer-sidebar" }, { kind: "component", type: i4.ViewerOpenWithComponent, selector: "adf-viewer-open-with" }, { kind: "component", type: i4.ViewerMoreActionsComponent, selector: "adf-viewer-more-actions" }, { kind: "component", type: i4.ViewerToolbarActionsComponent, selector: "adf-viewer-toolbar-actions" }, { kind: "component", type: i4.ViewerComponent, selector: "adf-viewer", inputs: ["urlFile", "blobFile", "showViewer", "allowGoBack", "allowFullScreen", "showToolbar", "overlayMode", "allowNavigate", "canNavigateBefore", "canNavigateNext", "allowLeftSidebar", "allowRightSidebar", "showRightSidebar", "showLeftSidebar", "sidebarRightTemplate", "sidebarLeftTemplate", "readOnly", "allowedEditActions", "tracks", "mimeType", "sidebarRightTemplateContext", "sidebarLeftTemplateContext", "closeButtonPosition", "hideInfoButton", "viewerExtensions", "nodeId", "nodeMimeType", "customError", "showToolbarDividers", "fileName", "title"], outputs: ["downloadFile", "navigateBefore", "navigateNext", "showViewerChange", "submitFile"] }, { kind: "component", type: i4.ViewerToolbarCustomActionsComponent, selector: "adf-viewer-toolbar-custom-actions" }, { kind: "directive", type: NodeDownloadDirective, selector: "[adfNodeDownload]", inputs: ["adfNodeDownload", "version"] }], encapsulation: i0.ViewEncapsulation.None }); }
326
326
  }
327
327
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlfrescoViewerComponent, decorators: [{
328
328
  type: Component,
@@ -405,4 +405,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
405
405
  }], showViewerChange: [{
406
406
  type: Output
407
407
  }] } });
408
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxmcmVzY28tdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvYWxmcmVzY28tdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvYWxmcmVzY28tdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxtQkFBbUIsRUFFbkIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBQ3RCLGVBQWUsRUFDbEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFtQixRQUFRLEVBQWtCLGNBQWMsRUFBeUIsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0ksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7O0FBWWhFLE1BQU0sT0FBTyx1QkFBdUI7SUFrS2hDLElBQUksY0FBYztRQUNkLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakcsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFHRCxJQUFJLFdBQVc7UUFDWCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBR0QsSUFBSSxRQUFRO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMvRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUdELElBQUksVUFBVTtRQUNWLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDckYsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFJRCxZQUNZLFVBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLGdCQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyxjQUE4QixFQUM5QixhQUE0QixFQUM3QixNQUFpQixFQUNoQixHQUFzQixFQUN0QixrQkFBc0M7UUFSdEMsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFDOUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUE5S2xELG1DQUFtQztRQUVuQyxXQUFNLEdBQVcsSUFBSSxDQUFDO1FBRXRCLHNDQUFzQztRQUV0QyxjQUFTLEdBQVcsSUFBSSxDQUFDO1FBRXpCLCtDQUErQztRQUUvQyxpQkFBWSxHQUFXLElBQUksQ0FBQztRQUU1Qiw4QkFBOEI7UUFFOUIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUVsQjs7O1dBR0c7UUFFSCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLCtCQUErQjtRQUUvQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQiwrQkFBK0I7UUFFL0IsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFbkI7OztXQUdHO1FBRUgsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEI7OztXQUdHO1FBRUgsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFdEIsaUZBQWlGO1FBRWpGLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUV6Qiw2RUFBNkU7UUFFN0Usb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFdkIsa0NBQWtDO1FBRWxDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6QiwrQkFBK0I7UUFFL0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLDBGQUEwRjtRQUUxRixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekIsd0ZBQXdGO1FBRXhGLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLDJCQUEyQjtRQUUzQixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQix3QkFBd0I7UUFFeEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQix5Q0FBeUM7UUFFekMsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFdkIsZ0NBQWdDO1FBRWhDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGtEQUFrRDtRQUVsRCx3QkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7UUFFL0MsOEZBQThGO1FBRTlGLHlCQUFvQixHQUFxQixJQUFJLENBQUM7UUFFOUMsNkZBQTZGO1FBRTdGLHdCQUFtQixHQUFxQixJQUFJLENBQUM7UUFFN0MsMkNBQTJDO1FBRTNDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsa0NBQWtDO1FBRWxDLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUUzQixzREFBc0Q7UUFFdEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU3QywrREFBK0Q7UUFFL0QsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUVoRSw2REFBNkQ7UUFFN0QsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUU5RCxvQ0FBb0M7UUFFcEMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQVUvQyxXQUFNLEdBQVksRUFBRSxDQUFDO1FBQ3JCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHVCQUFrQixHQUErQjtZQUM3QyxNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUVGLGdDQUEyQixHQUFtQixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3RCwrQkFBMEIsR0FBbUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7UUEwQjNDLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFhN0MsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDbEQsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVc7YUFDM0IsSUFBSSxDQUNELE1BQU0sQ0FDRixDQUFDLElBQUksRUFBRSxFQUFFLENBQ0wsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQ2pJLEVBQ0Qsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUN0QzthQUNBLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQVU7UUFDbEMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFFakMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsSUFBVTtRQUNyQyxPQUFPLElBQUksRUFBRSxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVPLEtBQUssQ0FBQyxlQUFlO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXpCLElBQUksQ0FBQztZQUNELE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25GLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQztZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUN6QyxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxTQUFTO1FBQ25CLElBQUksQ0FBQztZQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEcsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkYsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUUsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFjLEVBQUUsV0FBcUI7UUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRixJQUFJLFFBQWdCLENBQUM7UUFDckIsSUFBSSxZQUFvQixDQUFDO1FBQ3pCLElBQUksY0FBc0IsQ0FBQztRQUUzQixJQUFJLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUN2QixRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDNUMsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsWUFBWSxHQUFHLFFBQVEsQ0FBQztRQUV4QixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQzdFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDakUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QixjQUFjLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUksY0FBYyxHQUFHLGNBQWMsR0FBRyxHQUFHLEdBQUcsa0JBQWtCLENBQUM7UUFFM0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFL0UsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBSSxhQUFhLENBQUM7WUFDbEIsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDZCxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUYsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUUsQ0FBQztZQUNELElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2hCLGNBQWMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO2dCQUVuQyxZQUFZLEdBQUcsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7Z0JBQzNDLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQztnQkFDakQsUUFBUSxHQUFHLGlCQUFpQixJQUFJLFlBQVksQ0FBQztZQUNqRCxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksVUFBVSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUMvRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDakQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFDcEQsQ0FBQztJQUVPLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFZO1FBQzFDLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRS9FLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLENBQUMsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sS0FBSyxDQUFDLHNCQUFzQixDQUFDLFFBQWdCO1FBQ2pELElBQUksQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFtQixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2xELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRixPQUFPLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztZQUNoRSxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUM7Z0JBQ0QsTUFBTSxTQUFTLEdBQW1CLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQzNHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ2xELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO29CQUN6RixPQUFPLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7Z0JBQzFELENBQUM7WUFDTCxDQUFDO1lBQUMsT0FBTyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8seUJBQXlCO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxjQUFjLENBQUMsS0FBaUI7UUFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkUsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQWtCO1FBQzNCLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkUsTUFBTSxZQUFZLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdkksTUFBTSxPQUFPLEdBQUcsSUFBSSxTQUFTLENBQ3pCLFlBQVksRUFDWjtnQkFDSSxZQUFZLEVBQUUsS0FBSztnQkFDbkIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRO2dCQUMxQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVE7YUFDdEQsRUFDRCxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQzdCLENBQUM7WUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDL0MsQ0FBQztJQUNMLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFpQztRQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBaUM7UUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGVBQWU7UUFDWCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO2dCQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxZQUFZLEtBQUssT0FBTyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQztnQkFDakUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekQsQ0FBQzsrR0FuWlEsdUJBQXVCO21HQUF2Qix1QkFBdUIsc2pDQUZyQixDQUFDLGVBQWUsQ0FBQywrREFNZCxzQkFBc0IsMEVBR3RCLHNCQUFzQixpRkFHdEIsNkJBQTZCLDhFQUc3QiwwQkFBMEIsMkVBRzFCLHVCQUF1QixvUkN4RnpDLDZwR0ErRUEseUREZGMsWUFBWSw4SEFBRSxhQUFhLGlEQUFFLGVBQWUsNElBQUUsYUFBYSx5OENBQXdCLHFCQUFxQjs7NEZBT3pHLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDSSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsaUJBQWlCLEVBQUUscUJBQXFCLENBQUMsUUFHN0csRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsaUJBQ3ZCLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxlQUFlLENBQUM7b1VBSTVCLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXO2dCQUl0QixPQUFPO3NCQUROLFlBQVk7dUJBQUMsc0JBQXNCO2dCQUlwQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsc0JBQXNCO2dCQUlwQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsNkJBQTZCO2dCQUkzQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsMEJBQTBCO2dCQUl4QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUlyQyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBS25ELE1BQU07c0JBREwsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFRTixVQUFVO3NCQURULEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFRTixXQUFXO3NCQURWLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFLTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1AsY0FBYztzQkFEYixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2xvc2VCdXR0b25Qb3NpdGlvbixcbiAgICBUcmFjayxcbiAgICBWSUVXRVJfRElSRUNUSVZFUyxcbiAgICBWaWV3ZXJDb21wb25lbnQsXG4gICAgVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQsXG4gICAgVmlld2VyT3BlbldpdGhDb21wb25lbnQsXG4gICAgVmlld2VyU2lkZWJhckNvbXBvbmVudCxcbiAgICBWaWV3ZXJUb29sYmFyQWN0aW9uc0NvbXBvbmVudCxcbiAgICBWaWV3ZXJUb29sYmFyQ29tcG9uZW50LFxuICAgIFZpZXdVdGlsU2VydmljZVxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxmcmVzY28tYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGVudEFwaSwgTm9kZSwgTm9kZUVudHJ5LCBOb2Rlc0FwaSwgUmVuZGl0aW9uRW50cnksIFNoYXJlZGxpbmtzQXBpLCBWZXJzaW9uLCBWZXJzaW9uRW50cnksIFZlcnNpb25zQXBpIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBSZW5kaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL3JlbmRpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZXNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL25vZGVzLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9maWxlLm1vZGVsJztcbmltcG9ydCB7IE5vZGVBY3Rpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL2RvY3VtZW50LWxpc3QnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBOb2RlRG93bmxvYWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtYWxmcmVzY28tdmlld2VyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZVBpcGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgLi4uVklFV0VSX0RJUkVDVElWRVMsIE5vZGVEb3dubG9hZERpcmVjdGl2ZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FsZnJlc2NvLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYWxmcmVzY28tdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi1hbGZyZXNjby12aWV3ZXInIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtWaWV3VXRpbFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEFsZnJlc2NvVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2FkZlZpZXdlcicpXG4gICAgYWRmVmlld2VyOiBWaWV3ZXJDb21wb25lbnQ8eyBub2RlOiBOb2RlIH0+O1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJUb29sYmFyQ29tcG9uZW50KVxuICAgIHRvb2xiYXI6IFZpZXdlclRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlclNpZGViYXJDb21wb25lbnQpXG4gICAgc2lkZWJhcjogVmlld2VyU2lkZWJhckNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoVmlld2VyVG9vbGJhckFjdGlvbnNDb21wb25lbnQpXG4gICAgdG9vbGJhckFjdGlvbnM6IFZpZXdlclRvb2xiYXJBY3Rpb25zQ29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJNb3JlQWN0aW9uc0NvbXBvbmVudClcbiAgICBtb3JlQWN0aW9uczogVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlck9wZW5XaXRoQ29tcG9uZW50KVxuICAgIG9wZW5XaXRoOiBWaWV3ZXJPcGVuV2l0aENvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3ZpZXdlckV4dGVuc2lvbnMnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICB2aWV3ZXJFeHRlbnNpb25zOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIE5vZGUgSWQgb2YgdGhlIGZpbGUgdG8gbG9hZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKiBWZXJzaW9uIElkIG9mIHRoZSBmaWxlIHRvIGxvYWQuICovXG4gICAgQElucHV0KClcbiAgICB2ZXJzaW9uSWQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKiogU2hhcmVkIGxpbmsgaWQgKHRvIGRpc3BsYXkgc2hhcmVkIGZpbGUpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hhcmVkTGlua0lkOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqIEhpZGUgb3Igc2hvdyB0aGUgdmlld2VyICovXG4gICAgQElucHV0KClcbiAgICBzaG93Vmlld2VyID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIE51bWJlciBvZiB0aW1lcyB0aGUgVmlld2VyIHdpbGwgcmV0cnkgZmV0Y2hpbmcgY29udGVudCBSZW5kaXRpb24uXG4gICAgICogVGhlcmUgaXMgYSBkZWxheSBvZiBhdCBsZWFzdCBvbmUgc2Vjb25kIGJldHdlZW4gYXR0ZW1wdHMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtYXhSZXRyaWVzID0gMzA7XG5cbiAgICAvKiogQWxsb3dzIGBiYWNrYCBuYXZpZ2F0aW9uICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd0dvQmFjayA9IHRydWU7XG5cbiAgICAvKiogSGlkZSBvciBzaG93IHRoZSB0b29sYmFyICovXG4gICAgQElucHV0KClcbiAgICBzaG93VG9vbGJhciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJZiBgdHJ1ZWAgdGhlbiBzaG93IHRoZSBWaWV3ZXIgYXMgYSBmdWxsIHBhZ2Ugb3ZlciB0aGUgY3VycmVudCBjb250ZW50LlxuICAgICAqIE90aGVyd2lzZSwgZml0IGluc2lkZSB0aGUgcGFyZW50IGRpdi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG92ZXJsYXlNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIGJlZm9yZS9uZXh0IG5hdmlnYXRpb24uIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBidXR0b25zIHRvIG5hdmlnYXRlXG4gICAgICogYmV0d2VlbiBkb2N1bWVudHMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd05hdmlnYXRlID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgXCJiZWZvcmVcIiAoXCI8XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZUJlZm9yZSA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgbmV4dCAoXCI+XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZU5leHQgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93IHRoZSBsZWZ0IHRoZSBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dMZWZ0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIEFsbG93IHRoZSByaWdodCBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dSaWdodFNpZGViYXIgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHJpZ2h0IHNpZGViYXIgdmlzaWJpbGl0eS4gUmVxdWlyZXMgYGFsbG93UmlnaHRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1JpZ2h0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgbGVmdCBzaWRlYmFyIHZpc2liaWxpdHkuIFJlcXVpcmVzIGBhbGxvd0xlZnRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0xlZnRTaWRlYmFyID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyBkb3dubG9hZGluZy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RG93bmxvYWQgPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgcHJpbnRpbmcuICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd1ByaW50ID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgJ0Z1bGwgU2NyZWVuJyBmZWF0dXJlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dGdWxsU2NyZWVuID0gdHJ1ZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSAnSW5mbyBCdXR0b24nICovXG4gICAgQElucHV0KClcbiAgICBoaWRlSW5mb0J1dHRvbiA9IGZhbHNlO1xuXG4gICAgLyoqIENoYW5nZSB0aGUgY2xvc2UgYnV0dG9uIHBvc2l0aW9uIFJpZ2h0L0xlZnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlQnV0dG9uUG9zaXRpb24gPSBDbG9zZUJ1dHRvblBvc2l0aW9uLkxlZnQ7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgcmlnaHQgc2lkZWJhci4gVGhlIHRlbXBsYXRlIGNvbnRleHQgY29udGFpbnMgdGhlIGxvYWRlZCBub2RlIGRhdGEuICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyUmlnaHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgbGVmdCBzaWRlYmFyLiBUaGUgdGVtcGxhdGUgY29udGV4dCBjb250YWlucyB0aGUgbG9hZGVkIG5vZGUgZGF0YS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNpZGViYXJMZWZ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqIFNob3VsZCB2aWV3ZXIgd29yayBpbiByZWFkIG9ubHkgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIGRpdmlkZXJzIHZpc2liaWxpdHkgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dUb29sYmFyRGl2aWRlcnMgPSB0cnVlO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgc2hhcmVkIGxpbmsgdXNlZCBpcyBub3QgdmFsaWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgaW52YWxpZFNoYXJlZExpbmsgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzICdOYXZpZ2F0ZSBCZWZvcmUnIChcIjxcIikgYnV0dG9uLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG5hdmlnYXRlQmVmb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdXNlciBjbGlja3MgJ05hdmlnYXRlIE5leHQnIChcIj5cIikgYnV0dG9uLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG5hdmlnYXRlTmV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB2aWV3ZXIgY2xvc2UgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzaG93Vmlld2VyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBjYWNoZUJ1c3Rlck51bWJlcjogbnVtYmVyO1xuXG4gICAgdmVyc2lvbkVudHJ5OiBWZXJzaW9uRW50cnk7XG4gICAgdXJsRmlsZUNvbnRlbnQ6IHN0cmluZztcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuICAgIG1pbWVUeXBlOiBzdHJpbmc7XG4gICAgbm9kZU1pbWVUeXBlOiBzdHJpbmc7XG4gICAgbm9kZUVudHJ5OiBOb2RlRW50cnk7XG4gICAgdHJhY2tzOiBUcmFja1tdID0gW107XG4gICAgY2FuRWRpdE5vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBhbGxvd2VkRWRpdEFjdGlvbnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICAgICAgICByb3RhdGU6IHRydWUsXG4gICAgICAgIGNyb3A6IHRydWVcbiAgICB9O1xuXG4gICAgc2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0OiB7IG5vZGU6IE5vZGUgfSA9IHsgbm9kZTogbnVsbCB9O1xuICAgIHNpZGViYXJMZWZ0VGVtcGxhdGVDb250ZXh0OiB7IG5vZGU6IE5vZGUgfSA9IHsgbm9kZTogbnVsbCB9O1xuXG4gICAgcHJpdmF0ZSBfc2hhcmVkTGlua3NBcGk6IFNoYXJlZGxpbmtzQXBpO1xuICAgIGdldCBzaGFyZWRMaW5rc0FwaSgpOiBTaGFyZWRsaW5rc0FwaSB7XG4gICAgICAgIHRoaXMuX3NoYXJlZExpbmtzQXBpID0gdGhpcy5fc2hhcmVkTGlua3NBcGkgPz8gbmV3IFNoYXJlZGxpbmtzQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NoYXJlZExpbmtzQXBpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZlcnNpb25zQXBpOiBWZXJzaW9uc0FwaTtcbiAgICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgICAgICB0aGlzLl92ZXJzaW9uc0FwaSA9IHRoaXMuX3ZlcnNpb25zQXBpID8/IG5ldyBWZXJzaW9uc0FwaSh0aGlzLmFwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl92ZXJzaW9uc0FwaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9ub2Rlc0FwaTogTm9kZXNBcGk7XG4gICAgZ2V0IG5vZGVzQXBpKCk6IE5vZGVzQXBpIHtcbiAgICAgICAgdGhpcy5fbm9kZXNBcGkgPSB0aGlzLl9ub2Rlc0FwaSA/PyBuZXcgTm9kZXNBcGkodGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXNBcGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29udGVudEFwaTogQ29udGVudEFwaTtcbiAgICBnZXQgY29udGVudEFwaSgpOiBDb250ZW50QXBpIHtcbiAgICAgICAgdGhpcy5fY29udGVudEFwaSA9IHRoaXMuX2NvbnRlbnRBcGkgPz8gbmV3IENvbnRlbnRBcGkodGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudEFwaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVuZGl0aW9uU2VydmljZTogUmVuZGl0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3VXRpbFNlcnZpY2U6IFZpZXdVdGlsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcbiAgICAgICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgbm9kZUFjdGlvbnNTZXJ2aWNlOiBOb2RlQWN0aW9uc1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgcmVuZGl0aW9uU2VydmljZS5tYXhSZXRyaWVzID0gdGhpcy5tYXhSZXRyaWVzO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAobm9kZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgJiYgbm9kZS5pZCA9PT0gdGhpcy5ub2RlSWQgJiYgdGhpcy5nZXROb2RlVmVyc2lvblByb3BlcnR5KHRoaXMubm9kZUVudHJ5LmVudHJ5KSAhPT0gdGhpcy5nZXROb2RlVmVyc2lvblByb3BlcnR5KG5vZGUpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobm9kZSkgPT4gdGhpcy5vbk5vZGVVcGRhdGVkKG5vZGUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIG9uTm9kZVVwZGF0ZWQobm9kZTogTm9kZSkge1xuICAgICAgICBpZiAobm9kZSAmJiBub2RlLmlkID09PSB0aGlzLm5vZGVJZCkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUNhY2hlQnVzdGVyTnVtYmVyKCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0VXBOb2RlRmlsZShub2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Tm9kZVZlcnNpb25Qcm9wZXJ0eShub2RlOiBOb2RlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5vZGU/LnByb3BlcnRpZXNbJ2NtOnZlcnNpb25MYWJlbCddID8/ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0dXBTaGFyZWRMaW5rKCkge1xuICAgICAgICB0aGlzLmFsbG93R29CYWNrID0gZmFsc2U7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNoYXJlZExpbmtFbnRyeSA9IGF3YWl0IHRoaXMuc2hhcmVkTGlua3NBcGkuZ2V0U2hhcmVkTGluayh0aGlzLnNoYXJlZExpbmtJZCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldFVwU2hhcmVkTGlua0ZpbGUoc2hhcmVkTGlua0VudHJ5KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZFNoYXJlZExpbmsubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZSA9ICdpbnZhbGlkLWxpbmsnO1xuICAgICAgICAgICAgdGhpcy51cmxGaWxlQ29udGVudCA9ICdpbnZhbGlkLWZpbGUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZXR1cE5vZGUoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLm5vZGVFbnRyeSA9IGF3YWl0IHRoaXMubm9kZXNBcGkuZ2V0Tm9kZSh0aGlzLm5vZGVJZCwgeyBpbmNsdWRlOiBbJ2FsbG93YWJsZU9wZXJhdGlvbnMnXSB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnZlcnNpb25JZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmVyc2lvbkVudHJ5ID0gYXdhaXQgdGhpcy52ZXJzaW9uc0FwaS5nZXRWZXJzaW9uKHRoaXMubm9kZUlkLCB0aGlzLnZlcnNpb25JZCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRVcE5vZGVGaWxlKHRoaXMubm9kZUVudHJ5LmVudHJ5LCB0aGlzLnZlcnNpb25FbnRyeS5lbnRyeSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0VXBOb2RlRmlsZSh0aGlzLm5vZGVFbnRyeS5lbnRyeSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy51cmxGaWxlQ29udGVudCA9ICdpbnZhbGlkLW5vZGUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZXRVcE5vZGVGaWxlKG5vZGVEYXRhOiBOb2RlLCB2ZXJzaW9uRGF0YT86IFZlcnNpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5jYW5FZGl0Tm9kZSA9IHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhub2RlRGF0YSwgJ3VwZGF0ZScpO1xuICAgICAgICBsZXQgbWltZVR5cGU6IHN0cmluZztcbiAgICAgICAgbGV0IG5vZGVNaW1lVHlwZTogc3RyaW5nO1xuICAgICAgICBsZXQgdXJsRmlsZUNvbnRlbnQ6IHN0cmluZztcblxuICAgICAgICBpZiAodmVyc2lvbkRhdGE/LmNvbnRlbnQpIHtcbiAgICAgICAgICAgIG1pbWVUeXBlID0gdmVyc2lvbkRhdGEuY29udGVudC5taW1lVHlwZTtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlRGF0YS5jb250ZW50KSB7XG4gICAgICAgICAgICBtaW1lVHlwZSA9IG5vZGVEYXRhLmNvbnRlbnQubWltZVR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZU1pbWVUeXBlID0gbWltZVR5cGU7XG5cbiAgICAgICAgY29uc3QgY3VycmVudEZpbGVWZXJzaW9uID0gdGhpcy5ub2RlRW50cnk/LmVudHJ5Py5wcm9wZXJ0aWVzPy5bJ2NtOnZlcnNpb25MYWJlbCddXG4gICAgICAgICAgICA/IGVuY29kZVVSSSh0aGlzLm5vZGVFbnRyeT8uZW50cnk/LnByb3BlcnRpZXNbJ2NtOnZlcnNpb25MYWJlbCddKVxuICAgICAgICAgICAgOiBlbmNvZGVVUkkoJzEuMCcpO1xuXG4gICAgICAgIHVybEZpbGVDb250ZW50ID0gdmVyc2lvbkRhdGEgPyB0aGlzLmNvbnRlbnRBcGkuZ2V0VmVyc2lvbkNvbnRlbnRVcmwodGhpcy5ub2RlSWQsIHZlcnNpb25EYXRhLmlkKSA6IHRoaXMuY29udGVudEFwaS5nZXRDb250ZW50VXJsKHRoaXMubm9kZUlkKTtcbiAgICAgICAgdXJsRmlsZUNvbnRlbnQgPSB1cmxGaWxlQ29udGVudCArICcmJyArIGN1cnJlbnRGaWxlVmVyc2lvbjtcblxuICAgICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gdGhpcy52aWV3VXRpbFNlcnZpY2UuZ2V0RmlsZUV4dGVuc2lvbih2ZXJzaW9uRGF0YSA/IHZlcnNpb25EYXRhLm5hbWUgOiBub2RlRGF0YS5uYW1lKTtcbiAgICAgICAgY29uc3Qgdmlld2VyVHlwZSA9IHRoaXMudmlld1V0aWxTZXJ2aWNlLmdldFZpZXdlclR5cGUoZmlsZUV4dGVuc2lvbiwgbWltZVR5cGUpO1xuXG4gICAgICAgIGlmICh2aWV3ZXJUeXBlID09PSAndW5rbm93bicpIHtcbiAgICAgICAgICAgIGxldCBub2RlUmVuZGl0aW9uO1xuICAgICAgICAgICAgaWYgKHZlcnNpb25EYXRhKSB7XG4gICAgICAgICAgICAgICAgbm9kZVJlbmRpdGlvbiA9IGF3YWl0IHRoaXMucmVuZGl0aW9uU2VydmljZS5nZXROb2RlUmVuZGl0aW9uKG5vZGVEYXRhLmlkLCB2ZXJzaW9uRGF0YS5pZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVSZW5kaXRpb24gPSBhd2FpdCB0aGlzLnJlbmRpdGlvblNlcnZpY2UuZ2V0Tm9kZVJlbmRpdGlvbihub2RlRGF0YS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZVJlbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIHVybEZpbGVDb250ZW50ID0gbm9kZVJlbmRpdGlvbi51cmw7XG5cbiAgICAgICAgICAgICAgICBub2RlTWltZVR5cGUgPSBub2RlRGF0YT8uY29udGVudD8ubWltZVR5cGU7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVuZGl0aW9uTWltZVR5cGUgPSBub2RlUmVuZGl0aW9uLm1pbWVUeXBlO1xuICAgICAgICAgICAgICAgIG1pbWVUeXBlID0gcmVuZGl0aW9uTWltZVR5cGUgfHwgbm9kZU1pbWVUeXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHZpZXdlclR5cGUgPT09ICdtZWRpYScpIHtcbiAgICAgICAgICAgIHRoaXMudHJhY2tzID0gYXdhaXQgdGhpcy5yZW5kaXRpb25TZXJ2aWNlLmdlbmVyYXRlTWVkaWFUcmFja3NSZW5kaXRpb24odGhpcy5ub2RlSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5taW1lVHlwZSA9IG1pbWVUeXBlO1xuICAgICAgICB0aGlzLm5vZGVNaW1lVHlwZSA9IG5vZGVNaW1lVHlwZTtcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9IHZlcnNpb25EYXRhID8gdmVyc2lvbkRhdGEubmFtZSA6IG5vZGVEYXRhLm5hbWU7XG4gICAgICAgIHRoaXMudXJsRmlsZUNvbnRlbnQgPSB1cmxGaWxlQ29udGVudCArICh0aGlzLmNhY2hlQnVzdGVyTnVtYmVyID8gJyYnICsgdGhpcy5jYWNoZUJ1c3Rlck51bWJlciA6ICcnKTtcbiAgICAgICAgdGhpcy5zaWRlYmFyUmlnaHRUZW1wbGF0ZUNvbnRleHQubm9kZSA9IG5vZGVEYXRhO1xuICAgICAgICB0aGlzLnNpZGViYXJMZWZ0VGVtcGxhdGVDb250ZXh0Lm5vZGUgPSBub2RlRGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNldFVwU2hhcmVkTGlua0ZpbGUoZGV0YWlsczogYW55KSB7XG4gICAgICAgIGxldCBtaW1lVHlwZSA9IGRldGFpbHMuZW50cnkuY29udGVudC5taW1lVHlwZTtcbiAgICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IHRoaXMudmlld1V0aWxTZXJ2aWNlLmdldEZpbGVFeHRlbnNpb24oZGV0YWlscy5lbnRyeS5uYW1lKTtcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9IGRldGFpbHMuZW50cnkubmFtZTtcbiAgICAgICAgbGV0IHVybEZpbGVDb250ZW50ID0gdGhpcy5jb250ZW50QXBpLmdldFNoYXJlZExpbmtDb250ZW50VXJsKHRoaXMuc2hhcmVkTGlua0lkLCBmYWxzZSk7XG4gICAgICAgIGNvbnN0IHZpZXdlclR5cGUgPSB0aGlzLnZpZXdVdGlsU2VydmljZS5nZXRWaWV3ZXJUeXBlKGZpbGVFeHRlbnNpb24sIG1pbWVUeXBlKTtcblxuICAgICAgICBpZiAodmlld2VyVHlwZSA9PT0gJ3Vua25vd24nKSB7XG4gICAgICAgICAgICAoeyB1cmw6IHVybEZpbGVDb250ZW50LCBtaW1lVHlwZSB9ID0gYXdhaXQgdGhpcy5nZXRTaGFyZWRMaW5rUmVuZGl0aW9uKHRoaXMuc2hhcmVkTGlua0lkKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5taW1lVHlwZSA9IG1pbWVUeXBlO1xuICAgICAgICB0aGlzLnVybEZpbGVDb250ZW50ID0gdXJsRmlsZUNvbnRlbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRTaGFyZWRMaW5rUmVuZGl0aW9uKHNoYXJlZElkOiBzdHJpbmcpOiBQcm9taXNlPHsgdXJsOiBzdHJpbmc7IG1pbWVUeXBlOiBzdHJpbmcgfT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVuZGl0aW9uOiBSZW5kaXRpb25FbnRyeSA9IGF3YWl0IHRoaXMuc2hhcmVkTGlua3NBcGkuZ2V0U2hhcmVkTGlua1JlbmRpdGlvbihzaGFyZWRJZCwgJ3BkZicpO1xuICAgICAgICAgICAgaWYgKHJlbmRpdGlvbi5lbnRyeS5zdGF0dXMudG9TdHJpbmcoKSA9PT0gJ0NSRUFURUQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsRmlsZUNvbnRlbnQgPSB0aGlzLmNvbnRlbnRBcGkuZ2V0U2hhcmVkTGlua1JlbmRpdGlvblVybChzaGFyZWRJZCwgJ3BkZicpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHVybDogdXJsRmlsZUNvbnRlbnQsIG1pbWVUeXBlOiAnYXBwbGljYXRpb24vcGRmJyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZW5kaXRpb246IFJlbmRpdGlvbkVudHJ5ID0gYXdhaXQgdGhpcy5zaGFyZWRMaW5rc0FwaS5nZXRTaGFyZWRMaW5rUmVuZGl0aW9uKHNoYXJlZElkLCAnaW1ncHJldmlldycpO1xuICAgICAgICAgICAgICAgIGlmIChyZW5kaXRpb24uZW50cnkuc3RhdHVzLnRvU3RyaW5nKCkgPT09ICdDUkVBVEVEJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxGaWxlQ29udGVudCA9IHRoaXMuY29udGVudEFwaS5nZXRTaGFyZWRMaW5rUmVuZGl0aW9uVXJsKHNoYXJlZElkLCAnaW1ncHJldmlldycpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB1cmw6IHVybEZpbGVDb250ZW50LCBtaW1lVHlwZTogJ2ltYWdlL3BuZycgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChyZW5kaXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUNhY2hlQnVzdGVyTnVtYmVyKCkge1xuICAgICAgICB0aGlzLmNhY2hlQnVzdGVyTnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjbG9zZSB0aGUgdmlld2VyXG4gICAgICovXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zaG93Vmlld2VyQ2hhbmdlLmVtaXQodGhpcy5zaG93Vmlld2VyKTtcbiAgICB9XG5cbiAgICBvblByaW50Q29udGVudChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5hbGxvd1ByaW50KSB7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRpdGlvblNlcnZpY2UucHJpbnRGaWxlR2VuZXJpYyh0aGlzLm5vZGVJZCwgdGhpcy5taW1lVHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN1Ym1pdEZpbGUobmV3SW1hZ2VCbG9iOiBCbG9iKSB7XG4gICAgICAgIGlmICh0aGlzPy5ub2RlRW50cnk/LmVudHJ5Py5pZCAmJiAhdGhpcy5yZWFkT25seSAmJiB0aGlzLmNhbkVkaXROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdJbWFnZUZpbGU6IEZpbGUgPSBuZXcgRmlsZShbbmV3SW1hZ2VCbG9iXSwgdGhpcz8ubm9kZUVudHJ5Py5lbnRyeT8ubmFtZSwgeyB0eXBlOiB0aGlzPy5ub2RlRW50cnk/LmVudHJ5Py5jb250ZW50Py5taW1lVHlwZSB9KTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBuZXcgRmlsZU1vZGVsKFxuICAgICAgICAgICAgICAgIG5ld0ltYWdlRmlsZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1ham9yVmVyc2lvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZlcnNpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB0aGlzPy5ub2RlRW50cnk/LmVudHJ5Py5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgbm9kZVR5cGU6IHRoaXM/Lm5vZGVFbnRyeT8uZW50cnk/LmNvbnRlbnQ/Lm1pbWVUeXBlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aGlzPy5ub2RlRW50cnk/LmVudHJ5Py5pZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5hZGRUb1F1ZXVlKC4uLltuZXdGaWxlXSk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZXNJblRoZVF1ZXVlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5hdmlnYXRlQmVmb3JlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVCZWZvcmUubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgb25OYXZpZ2F0ZU5leHRDbGljayhldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZU5leHQubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgaXNTb3VyY2VEZWZpbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5ub2RlSWQgfHwgdGhpcy5zaGFyZWRMaW5rSWQpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1ZpZXdlcikge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU291cmNlRGVmaW5lZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBIGNvbnRlbnQgc291cmNlIGF0dHJpYnV0ZSB2YWx1ZSBpcyBtaXNzaW5nLicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5ub2RlSWQ/LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5ub2RlSWQ/LnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwTm9kZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNoYXJlZExpbmtJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBTaGFyZWRMaW5rKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRvd25sb2FkRmlsZSgpIHtcbiAgICAgICAgdGhpcy5ub2RlQWN0aW9uc1NlcnZpY2UuZG93bmxvYWROb2RlKHRoaXMubm9kZUVudHJ5KTtcbiAgICB9XG59XG4iLCI8YWRmLXZpZXdlclxuICAgICNhZGZWaWV3ZXJcbiAgICBbKHNob3dWaWV3ZXIpXT1cInNob3dWaWV3ZXJcIlxuICAgIFthbGxvd0dvQmFja109XCJhbGxvd0dvQmFja1wiXG4gICAgW3Nob3dUb29sYmFyXT1cInNob3dUb29sYmFyXCJcbiAgICBbb3ZlcmxheU1vZGVdPVwib3ZlcmxheU1vZGVcIlxuICAgIFthbGxvd05hdmlnYXRlXT1cImFsbG93TmF2aWdhdGVcIlxuICAgIFtjYW5OYXZpZ2F0ZUJlZm9yZV09XCJjYW5OYXZpZ2F0ZUJlZm9yZVwiXG4gICAgW2Nhbk5hdmlnYXRlTmV4dF09XCJjYW5OYXZpZ2F0ZU5leHRcIlxuICAgIFthbGxvd0xlZnRTaWRlYmFyXT1cImFsbG93TGVmdFNpZGViYXJcIlxuICAgIFthbGxvd1JpZ2h0U2lkZWJhcl09XCJhbGxvd1JpZ2h0U2lkZWJhclwiXG4gICAgW3Nob3dSaWdodFNpZGViYXJdPVwic2hvd1JpZ2h0U2lkZWJhclwiXG4gICAgW3Nob3dMZWZ0U2lkZWJhcl09XCJzaG93TGVmdFNpZGViYXJcIlxuICAgIFthbGxvd0Z1bGxTY3JlZW5dPVwiYWxsb3dGdWxsU2NyZWVuXCJcbiAgICBbc2lkZWJhclJpZ2h0VGVtcGxhdGVdPVwic2lkZWJhclJpZ2h0VGVtcGxhdGVcIlxuICAgIFtzaWRlYmFyTGVmdFRlbXBsYXRlXT1cInNpZGViYXJMZWZ0VGVtcGxhdGVcIlxuICAgIFtzaWRlYmFyUmlnaHRUZW1wbGF0ZUNvbnRleHRdPVwic2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0XCJcbiAgICBbc2lkZWJhckxlZnRUZW1wbGF0ZUNvbnRleHRdPVwic2lkZWJhckxlZnRUZW1wbGF0ZUNvbnRleHRcIlxuICAgIFtjbG9zZUJ1dHRvblBvc2l0aW9uXT1cImNsb3NlQnV0dG9uUG9zaXRpb25cIlxuICAgIFtoaWRlSW5mb0J1dHRvbl09XCJoaWRlSW5mb0J1dHRvblwiXG4gICAgW2ZpbGVOYW1lXT1cImZpbGVOYW1lXCJcbiAgICBbbWltZVR5cGVdPVwibWltZVR5cGVcIlxuICAgIFtub2RlTWltZVR5cGVdPVwibm9kZU1pbWVUeXBlXCJcbiAgICBbdXJsRmlsZV09XCJ1cmxGaWxlQ29udGVudFwiXG4gICAgW3RyYWNrc109XCJ0cmFja3NcIlxuICAgIFtyZWFkT25seV09XCJyZWFkT25seSB8fCAhY2FuRWRpdE5vZGVcIlxuICAgIFtzaG93VG9vbGJhckRpdmlkZXJzXT1cInNob3dUb29sYmFyRGl2aWRlcnNcIlxuICAgIFthbGxvd2VkRWRpdEFjdGlvbnNdPVwiYWxsb3dlZEVkaXRBY3Rpb25zXCJcbiAgICBbdmlld2VyRXh0ZW5zaW9uc109XCJ2aWV3ZXJFeHRlbnNpb25zXCJcbiAgICBbbm9kZUlkXT1cIm5vZGVJZFwiXG4gICAgKGRvd25sb2FkRmlsZSk9XCJvbkRvd25sb2FkRmlsZSgpXCJcbiAgICAobmF2aWdhdGVCZWZvcmUpPVwib25OYXZpZ2F0ZUJlZm9yZUNsaWNrKCRldmVudClcIlxuICAgIChuYXZpZ2F0ZU5leHQpPVwib25OYXZpZ2F0ZU5leHRDbGljaygkZXZlbnQpXCJcbiAgICAoc2hvd1ZpZXdlckNoYW5nZSk9XCJvbkNsb3NlKClcIlxuICAgIChzdWJtaXRGaWxlKT1cIm9uU3VibWl0RmlsZSgkZXZlbnQpXCI+XG5cbiAgICA8YWRmLXZpZXdlci10b29sYmFyICpuZ0lmPVwidG9vbGJhclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLXRvb2xiYXJcIiAvPlxuICAgIDwvYWRmLXZpZXdlci10b29sYmFyPlxuXG4gICAgPGFkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zICpuZ0lmPVwidG9vbGJhckFjdGlvbnNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnNcIiAvPlxuICAgIDwvYWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnM+XG5cbiAgICA8YWRmLXZpZXdlci1tb3JlLWFjdGlvbnMgKm5nSWY9XCJtb3JlQWN0aW9uc1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLW1vcmUtYWN0aW9uc1wiIC8+XG4gICAgPC9hZGYtdmlld2VyLW1vcmUtYWN0aW9ucz5cblxuICAgIDxhZGYtdmlld2VyLW9wZW4td2l0aCAqbmdJZj1cIm9wZW5XaXRoXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItb3Blbi13aXRoXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItb3Blbi13aXRoPlxuXG4gICAgPGFkZi12aWV3ZXItc2lkZWJhciAqbmdJZj1cInNpZGViYXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItc2lkZWJhcj5cblxuICAgIDxhZGYtdmlld2VyLXRvb2xiYXItY3VzdG9tLWFjdGlvbnMgKm5nSWY9XCJhbGxvd0Rvd25sb2FkIHx8IGFsbG93UHJpbnRcIj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cImFkZi1hbGZyZXNjby12aWV3ZXItZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dEb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkRPV05MT0FEJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLkRPV05MT0FEJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgIFthZGZOb2RlRG93bmxvYWRdPVwibm9kZUVudHJ5XCJcbiAgICAgICAgICAgICAgICBbdmVyc2lvbl09XCJ2ZXJzaW9uRW50cnlcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiBpZD1cImFkZi1hbGZyZXNjby12aWV3ZXItcHJpbnRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dQcmludFwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLlBSSU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLlBSSU5UJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItcHJpbnRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblByaW50Q29udGVudCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+cHJpbnQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2FkZi12aWV3ZXItdG9vbGJhci1jdXN0b20tYWN0aW9ucz5cbjwvYWRmLXZpZXdlcj5cbiJdfQ==
408
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxmcmVzY28tdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvYWxmcmVzY28tdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvYWxmcmVzY28tdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxtQkFBbUIsRUFFbkIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBQ3RCLGVBQWUsRUFDbEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFtQixRQUFRLEVBQWtCLGNBQWMsRUFBeUIsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0ksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0s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VixLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFRTixXQUFXO3NCQURWLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFLTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1AsY0FBYztzQkFEYixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2xvc2VCdXR0b25Qb3NpdGlvbixcbiAgICBUcmFjayxcbiAgICBWSUVXRVJfRElSRUNUSVZFUyxcbiAgICBWaWV3ZXJDb21wb25lbnQsXG4gICAgVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQsXG4gICAgVmlld2VyT3BlbldpdGhDb21wb25lbnQsXG4gICAgVmlld2VyU2lkZWJhckNvbXBvbmVudCxcbiAgICBWaWV3ZXJUb29sYmFyQWN0aW9uc0NvbXBvbmVudCxcbiAgICBWaWV3ZXJUb29sYmFyQ29tcG9uZW50LFxuICAgIFZpZXdVdGlsU2VydmljZVxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxmcmVzY28tYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGVudEFwaSwgTm9kZSwgTm9kZUVudHJ5LCBOb2Rlc0FwaSwgUmVuZGl0aW9uRW50cnksIFNoYXJlZGxpbmtzQXBpLCBWZXJzaW9uLCBWZXJzaW9uRW50cnksIFZlcnNpb25zQXBpIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBSZW5kaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL3JlbmRpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZXNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL25vZGVzLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9maWxlLm1vZGVsJztcbmltcG9ydCB7IE5vZGVBY3Rpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL2RvY3VtZW50LWxpc3QnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBOb2RlRG93bmxvYWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtYWxmcmVzY28tdmlld2VyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZVBpcGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgLi4uVklFV0VSX0RJUkVDVElWRVMsIE5vZGVEb3dubG9hZERpcmVjdGl2ZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FsZnJlc2NvLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYWxmcmVzY28tdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi1hbGZyZXNjby12aWV3ZXInIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtWaWV3VXRpbFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEFsZnJlc2NvVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoJ2FkZlZpZXdlcicpXG4gICAgYWRmVmlld2VyOiBWaWV3ZXJDb21wb25lbnQ8eyBub2RlOiBOb2RlIH0+O1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJUb29sYmFyQ29tcG9uZW50KVxuICAgIHRvb2xiYXI6IFZpZXdlclRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlclNpZGViYXJDb21wb25lbnQpXG4gICAgc2lkZWJhcjogVmlld2VyU2lkZWJhckNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoVmlld2VyVG9vbGJhckFjdGlvbnNDb21wb25lbnQpXG4gICAgdG9vbGJhckFjdGlvbnM6IFZpZXdlclRvb2xiYXJBY3Rpb25zQ29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJNb3JlQWN0aW9uc0NvbXBvbmVudClcbiAgICBtb3JlQWN0aW9uczogVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlck9wZW5XaXRoQ29tcG9uZW50KVxuICAgIG9wZW5XaXRoOiBWaWV3ZXJPcGVuV2l0aENvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3ZpZXdlckV4dGVuc2lvbnMnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICB2aWV3ZXJFeHRlbnNpb25zOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIE5vZGUgSWQgb2YgdGhlIGZpbGUgdG8gbG9hZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKiBWZXJzaW9uIElkIG9mIHRoZSBmaWxlIHRvIGxvYWQuICovXG4gICAgQElucHV0KClcbiAgICB2ZXJzaW9uSWQ6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKiogU2hhcmVkIGxpbmsgaWQgKHRvIGRpc3BsYXkgc2hhcmVkIGZpbGUpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hhcmVkTGlua0lkOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqIEhpZGUgb3Igc2hvdyB0aGUgdmlld2VyICovXG4gICAgQElucHV0KClcbiAgICBzaG93Vmlld2VyID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIE51bWJlciBvZiB0aW1lcyB0aGUgVmlld2VyIHdpbGwgcmV0cnkgZmV0Y2hpbmcgY29udGVudCBSZW5kaXRpb24uXG4gICAgICogVGhlcmUgaXMgYSBkZWxheSBvZiBhdCBsZWFzdCBvbmUgc2Vjb25kIGJldHdlZW4gYXR0ZW1wdHMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtYXhSZXRyaWVzID0gMzA7XG5cbiAgICAvKiogQWxsb3dzIGBiYWNrYCBuYXZpZ2F0aW9uICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd0dvQmFjayA9IHRydWU7XG5cbiAgICAvKiogSGlkZSBvciBzaG93IHRoZSB0b29sYmFyICovXG4gICAgQElucHV0KClcbiAgICBzaG93VG9vbGJhciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJZiBgdHJ1ZWAgdGhlbiBzaG93IHRoZSBWaWV3ZXIgYXMgYSBmdWxsIHBhZ2Ugb3ZlciB0aGUgY3VycmVudCBjb250ZW50LlxuICAgICAqIE90aGVyd2lzZSwgZml0IGluc2lkZSB0aGUgcGFyZW50IGRpdi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG92ZXJsYXlNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIGJlZm9yZS9uZXh0IG5hdmlnYXRpb24uIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBidXR0b25zIHRvIG5hdmlnYXRlXG4gICAgICogYmV0d2VlbiBkb2N1bWVudHMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd05hdmlnYXRlID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgXCJiZWZvcmVcIiAoXCI8XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZUJlZm9yZSA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgbmV4dCAoXCI+XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZU5leHQgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93IHRoZSBsZWZ0IHRoZSBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dMZWZ0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIEFsbG93IHRoZSByaWdodCBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dSaWdodFNpZGViYXIgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHJpZ2h0IHNpZGViYXIgdmlzaWJpbGl0eS4gUmVxdWlyZXMgYGFsbG93UmlnaHRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1JpZ2h0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgbGVmdCBzaWRlYmFyIHZpc2liaWxpdHkuIFJlcXVpcmVzIGBhbGxvd0xlZnRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0xlZnRTaWRlYmFyID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyBkb3dubG9hZGluZy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RG93bmxvYWQgPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgcHJpbnRpbmcuICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd1ByaW50ID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgJ0Z1bGwgU2NyZWVuJyBmZWF0dXJlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dGdWxsU2NyZWVuID0gdHJ1ZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSAnSW5mbyBCdXR0b24nICovXG4gICAgQElucHV0KClcbiAgICBoaWRlSW5mb0J1dHRvbiA9IGZhbHNlO1xuXG4gICAgLyoqIENoYW5nZSB0aGUgY2xvc2UgYnV0dG9uIHBvc2l0aW9uIFJpZ2h0L0xlZnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlQnV0dG9uUG9zaXRpb24gPSBDbG9zZUJ1dHRvblBvc2l0aW9uLkxlZnQ7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgcmlnaHQgc2lkZWJhci4gVGhlIHRlbXBsYXRlIGNvbnRleHQgY29udGFpbnMgdGhlIGxvYWRlZCBub2RlIGRhdGEuICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyUmlnaHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgbGVmdCBzaWRlYmFyLiBUaGUgdGVtcGxhdGUgY29udGV4dCBjb250YWlucyB0aGUgbG9hZGVkIG5vZGUgZGF0YS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNpZGViYXJMZWZ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqIFNob3VsZCB2aWV3ZXIgd29yayBpbiByZWFkIG9ubHkgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIGRpdmlkZXJzIHZpc2liaWxpdHkgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dUb29sYmFyRGl2aWRlcnMgPSB0cnVlO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgc2hhcmVkIGxpbmsgdXNlZCBpcyBub3QgdmFsaWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgaW52YWxpZFNoYXJlZExpbmsgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzICdOYXZpZ2F0ZSBCZWZvcmUnIChcIjxcIikgYnV0dG9uLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG5hdmlnYXRlQmVmb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdXNlciBjbGlja3MgJ05hdmlnYXRlIE5leHQnIChcIj5cIikgYnV0dG9uLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG5hdmlnYXRlTmV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB2aWV3ZXIgY2xvc2UgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzaG93Vmlld2VyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBjYWNoZUJ1c3Rlck51bWJlcjogbnVtYmVyO1xuXG4gICAgdmVyc2lvbkVudHJ5OiBWZXJzaW9uRW50cnk7XG4gICAgdXJsRmlsZUNvbnRlbnQ6IHN0cmluZztcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuICAgIG1pbWVUeXBlOiBzdHJpbmc7XG4gICAgbm9kZU1pbWVUeXBlOiBzdHJpbmc7XG4gICAgbm9kZUVudHJ5OiBOb2RlRW50cnk7XG4gICAgdHJhY2tzOiBUcmFja1tdID0gW107XG4gICAgY2FuRWRpdE5vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBhbGxvd2VkRWRpdEFjdGlvbnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICAgICAgICByb3RhdGU6IHRydWUsXG4gICAgICAgIGNyb3A6IHRydWVcbiAgICB9O1xuXG4gICAgc2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0OiB7IG5vZGU6IE5vZGUgfSA9IHsgbm9kZTogbnVsbCB9O1xuICAgIHNpZGViYXJMZWZ0VGVtcGxhdGVDb250ZXh0OiB7IG5vZGU6IE5vZGUgfSA9IHsgbm9kZTogbnVsbCB9O1xuXG4gICAgcHJpdmF0ZSBfc2hhcmVkTGlua3NBcGk6IFNoYXJlZGxpbmtzQXBpO1xuICAgIGdldCBzaGFyZWRMaW5rc0FwaSgpOiBTaGFyZWRsaW5rc0FwaSB7XG4gICAgICAgIHRoaXMuX3NoYXJlZExpbmtzQXBpID0gdGhpcy5fc2hhcmVkTGlua3NBcGkgPz8gbmV3IFNoYXJlZGxpbmtzQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NoYXJlZExpbmtzQXBpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZlcnNpb25zQXBpOiBWZXJzaW9uc0FwaTtcbiAgICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgICAgICB0aGlzLl92ZXJzaW9uc0FwaSA9IHRoaXMuX3ZlcnNpb25zQXBpID8/IG5ldyBWZXJzaW9uc0FwaSh0aGlzLmFwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl92ZXJzaW9uc0FwaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9ub2Rlc0FwaTogTm9kZXNBcGk7XG4gICAgZ2V0IG5vZGVzQXBpKCk6IE5vZGVzQXBpIHtcbiAgICAgICAgdGhpcy5fbm9kZXNBcGkgPSB0aGlzLl9ub2Rlc0FwaSA/PyBuZXcgTm9kZXNBcGkodGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXNBcGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29udGVudEFwaTogQ29udGVudEFwaTtcbiAgICBnZXQgY29udGVudEFwaSgpOiBDb250ZW50QXBpIHtcbiAgICAgICAgdGhpcy5fY29udGVudEFwaSA9IHRoaXMuX2NvbnRlbnRBcGkgPz8gbmV3IENvbnRlbnRBcGkodGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudEFwaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVuZGl0aW9uU2VydmljZTogUmVuZGl0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3VXRpbFNlcnZpY2U6IFZpZXdVdGlsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSxcbiAgICAgICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgbm9kZUFjdGlvbnNTZXJ2aWNlOiBOb2RlQWN0aW9uc1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgcmVuZGl0aW9uU2VydmljZS5tYXhSZXRyaWVzID0gdGhpcy5tYXhSZXRyaWVzO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLm5vZGVzQXBpU2VydmljZS5ub2RlVXBkYXRlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAobm9kZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgJiYgbm9kZS5pZCA9PT0gdGhpcy5ub2RlSWQgJiYgdGhpcy5nZXROb2RlVmVyc2lvblByb3BlcnR5KHRoaXMubm9kZUVudHJ5LmVudHJ5KSAhPT0gdGhpcy5nZXROb2RlVmVyc2lvblByb3BlcnR5KG5vZGUpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobm9kZSkgPT4gdGhpcy5vbk5vZGVVcGRhdGVkKG5vZGUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIG9uTm9kZVVwZGF0ZWQobm9kZTogTm9kZSkge1xuICAgICAgICBpZiAobm9kZSAmJiBub2RlLmlkID09PSB0aGlzLm5vZGVJZCkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUNhY2hlQnVzdGVyTnVtYmVyKCk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0VXBOb2RlRmlsZShub2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Tm9kZVZlcnNpb25Qcm9wZXJ0eShub2RlOiBOb2RlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5vZGU/LnByb3BlcnRpZXNbJ2NtOnZlcnNpb25MYWJlbCddID8/ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0dXBTaGFyZWRMaW5rKCkge1xuICAgICAgICB0aGlzLmFsbG93R29CYWNrID0gZmFsc2U7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNoYXJlZExpbmtFbnRyeSA9IGF3YWl0IHRoaXMuc2hhcmVkTGlua3NBcGkuZ2V0U2hhcmVkTGluayh0aGlzLnNoYXJlZExpbmtJZCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldFVwU2hhcmVkTGlua0ZpbGUoc2hhcmVkTGlua0VudHJ5KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZFNoYXJlZExpbmsubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZSA9ICdpbnZhbGlkLWxpbmsnO1xuICAgICAgICAgICAgdGhpcy51cmxGaWxlQ29udGVudCA9ICdpbnZhbGlkLWZpbGUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZXR1cE5vZGUoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLm5vZGVFbnRyeSA9IGF3YWl0IHRoaXMubm9kZXNBcGkuZ2V0Tm9kZSh0aGlzLm5vZGVJZCwgeyBpbmNsdWRlOiBbJ2FsbG93YWJsZU9wZXJhdGlvbnMnXSB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLnZlcnNpb25JZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmVyc2lvbkVudHJ5ID0gYXdhaXQgdGhpcy52ZXJzaW9uc0FwaS5nZXRWZXJzaW9uKHRoaXMubm9kZUlkLCB0aGlzLnZlcnNpb25JZCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRVcE5vZGVGaWxlKHRoaXMubm9kZUVudHJ5LmVudHJ5LCB0aGlzLnZlcnNpb25FbnRyeS5lbnRyeSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0VXBOb2RlRmlsZSh0aGlzLm5vZGVFbnRyeS5lbnRyeSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy51cmxGaWxlQ29udGVudCA9ICdpbnZhbGlkLW5vZGUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZXRVcE5vZGVGaWxlKG5vZGVEYXRhOiBOb2RlLCB2ZXJzaW9uRGF0YT86IFZlcnNpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5jYW5FZGl0Tm9kZSA9IHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhub2RlRGF0YSwgJ3VwZGF0ZScpO1xuICAgICAgICBsZXQgbWltZVR5cGU6IHN0cmluZztcbiAgICAgICAgbGV0IG5vZGVNaW1lVHlwZTogc3RyaW5nO1xuICAgICAgICBsZXQgdXJsRmlsZUNvbnRlbnQ6IHN0cmluZztcblxuICAgICAgICBpZiAodmVyc2lvbkRhdGE/LmNvbnRlbnQpIHtcbiAgICAgICAgICAgIG1pbWVUeXBlID0gdmVyc2lvbkRhdGEuY29udGVudC5taW1lVHlwZTtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlRGF0YS5jb250ZW50KSB7XG4gICAgICAgICAgICBtaW1lVHlwZSA9IG5vZGVEYXRhLmNvbnRlbnQubWltZVR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZU1pbWVUeXBlID0gbWltZVR5cGU7XG5cbiAgICAgICAgY29uc3QgY3VycmVudEZpbGVWZXJzaW9uID0gdGhpcy5ub2RlRW50cnk/LmVudHJ5Py5wcm9wZXJ0aWVzPy5bJ2NtOnZlcnNpb25MYWJlbCddXG4gICAgICAgICAgICA/IGVuY29kZVVSSSh0aGlzLm5vZGVFbnRyeT8uZW50cnk/LnByb3BlcnRpZXNbJ2NtOnZlcnNpb25MYWJlbCddKVxuICAgICAgICAgICAgOiBlbmNvZGVVUkkoJzEuMCcpO1xuXG4gICAgICAgIHVybEZpbGVDb250ZW50ID0gdmVyc2lvbkRhdGEgPyB0aGlzLmNvbnRlbnRBcGkuZ2V0VmVyc2lvbkNvbnRlbnRVcmwodGhpcy5ub2RlSWQsIHZlcnNpb25EYXRhLmlkKSA6IHRoaXMuY29udGVudEFwaS5nZXRDb250ZW50VXJsKHRoaXMubm9kZUlkKTtcbiAgICAgICAgdXJsRmlsZUNvbnRlbnQgPSB1cmxGaWxlQ29udGVudCArICcmJyArIGN1cnJlbnRGaWxlVmVyc2lvbjtcblxuICAgICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gdGhpcy52aWV3VXRpbFNlcnZpY2UuZ2V0RmlsZUV4dGVuc2lvbih2ZXJzaW9uRGF0YSA/IHZlcnNpb25EYXRhLm5hbWUgOiBub2RlRGF0YS5uYW1lKTtcbiAgICAgICAgY29uc3Qgdmlld2VyVHlwZSA9IHRoaXMudmlld1V0aWxTZXJ2aWNlLmdldFZpZXdlclR5cGUoZmlsZUV4dGVuc2lvbiwgbWltZVR5cGUpO1xuXG4gICAgICAgIGlmICh2aWV3ZXJUeXBlID09PSAndW5rbm93bicpIHtcbiAgICAgICAgICAgIGxldCBub2RlUmVuZGl0aW9uO1xuICAgICAgICAgICAgaWYgKHZlcnNpb25EYXRhKSB7XG4gICAgICAgICAgICAgICAgbm9kZVJlbmRpdGlvbiA9IGF3YWl0IHRoaXMucmVuZGl0aW9uU2VydmljZS5nZXROb2RlUmVuZGl0aW9uKG5vZGVEYXRhLmlkLCB2ZXJzaW9uRGF0YS5pZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVSZW5kaXRpb24gPSBhd2FpdCB0aGlzLnJlbmRpdGlvblNlcnZpY2UuZ2V0Tm9kZVJlbmRpdGlvbihub2RlRGF0YS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZVJlbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIHVybEZpbGVDb250ZW50ID0gbm9kZVJlbmRpdGlvbi51cmw7XG5cbiAgICAgICAgICAgICAgICBub2RlTWltZVR5cGUgPSBub2RlRGF0YT8uY29udGVudD8ubWltZVR5cGU7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVuZGl0aW9uTWltZVR5cGUgPSBub2RlUmVuZGl0aW9uLm1pbWVUeXBlO1xuICAgICAgICAgICAgICAgIG1pbWVUeXBlID0gcmVuZGl0aW9uTWltZVR5cGUgfHwgbm9kZU1pbWVUeXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHZpZXdlclR5cGUgPT09ICdtZWRpYScpIHtcbiAgICAgICAgICAgIHRoaXMudHJhY2tzID0gYXdhaXQgdGhpcy5yZW5kaXRpb25TZXJ2aWNlLmdlbmVyYXRlTWVkaWFUcmFja3NSZW5kaXRpb24odGhpcy5ub2RlSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5taW1lVHlwZSA9IG1pbWVUeXBlO1xuICAgICAgICB0aGlzLm5vZGVNaW1lVHlwZSA9IG5vZGVNaW1lVHlwZTtcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9IHZlcnNpb25EYXRhID8gdmVyc2lvbkRhdGEubmFtZSA6IG5vZGVEYXRhLm5hbWU7XG4gICAgICAgIHRoaXMudXJsRmlsZUNvbnRlbnQgPSB1cmxGaWxlQ29udGVudCArICh0aGlzLmNhY2hlQnVzdGVyTnVtYmVyID8gJyYnICsgdGhpcy5jYWNoZUJ1c3Rlck51bWJlciA6ICcnKTtcbiAgICAgICAgdGhpcy5zaWRlYmFyUmlnaHRUZW1wbGF0ZUNvbnRleHQubm9kZSA9IG5vZGVEYXRhO1xuICAgICAgICB0aGlzLnNpZGViYXJMZWZ0VGVtcGxhdGVDb250ZXh0Lm5vZGUgPSBub2RlRGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNldFVwU2hhcmVkTGlua0ZpbGUoZGV0YWlsczogYW55KSB7XG4gICAgICAgIGxldCBtaW1lVHlwZSA9IGRldGFpbHMuZW50cnkuY29udGVudC5taW1lVHlwZTtcbiAgICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IHRoaXMudmlld1V0aWxTZXJ2aWNlLmdldEZpbGVFeHRlbnNpb24oZGV0YWlscy5lbnRyeS5uYW1lKTtcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9IGRldGFpbHMuZW50cnkubmFtZTtcbiAgICAgICAgbGV0IHVybEZpbGVDb250ZW50ID0gdGhpcy5jb250ZW50QXBpLmdldFNoYXJlZExpbmtDb250ZW50VXJsKHRoaXMuc2hhcmVkTGlua0lkLCBmYWxzZSk7XG4gICAgICAgIGNvbnN0IHZpZXdlclR5cGUgPSB0aGlzLnZpZXdVdGlsU2VydmljZS5nZXRWaWV3ZXJUeXBlKGZpbGVFeHRlbnNpb24sIG1pbWVUeXBlKTtcblxuICAgICAgICBpZiAodmlld2VyVHlwZSA9PT0gJ3Vua25vd24nKSB7XG4gICAgICAgICAgICAoeyB1cmw6IHVybEZpbGVDb250ZW50LCBtaW1lVHlwZSB9ID0gYXdhaXQgdGhpcy5nZXRTaGFyZWRMaW5rUmVuZGl0aW9uKHRoaXMuc2hhcmVkTGlua0lkKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5taW1lVHlwZSA9IG1pbWVUeXBlO1xuICAgICAgICB0aGlzLnVybEZpbGVDb250ZW50ID0gdXJsRmlsZUNvbnRlbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRTaGFyZWRMaW5rUmVuZGl0aW9uKHNoYXJlZElkOiBzdHJpbmcpOiBQcm9taXNlPHsgdXJsOiBzdHJpbmc7IG1pbWVUeXBlOiBzdHJpbmcgfT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVuZGl0aW9uOiBSZW5kaXRpb25FbnRyeSA9IGF3YWl0IHRoaXMuc2hhcmVkTGlua3NBcGkuZ2V0U2hhcmVkTGlua1JlbmRpdGlvbihzaGFyZWRJZCwgJ3BkZicpO1xuICAgICAgICAgICAgaWYgKHJlbmRpdGlvbi5lbnRyeS5zdGF0dXMudG9TdHJpbmcoKSA9PT0gJ0NSRUFURUQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsRmlsZUNvbnRlbnQgPSB0aGlzLmNvbnRlbnRBcGkuZ2V0U2hhcmVkTGlua1JlbmRpdGlvblVybChzaGFyZWRJZCwgJ3BkZicpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHVybDogdXJsRmlsZUNvbnRlbnQsIG1pbWVUeXBlOiAnYXBwbGljYXRpb24vcGRmJyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZW5kaXRpb246IFJlbmRpdGlvbkVudHJ5ID0gYXdhaXQgdGhpcy5zaGFyZWRMaW5rc0FwaS5nZXRTaGFyZWRMaW5rUmVuZGl0aW9uKHNoYXJlZElkLCAnaW1ncHJldmlldycpO1xuICAgICAgICAgICAgICAgIGlmIChyZW5kaXRpb24uZW50cnkuc3RhdHVzLnRvU3RyaW5nKCkgPT09ICdDUkVBVEVEJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmxGaWxlQ29udGVudCA9IHRoaXMuY29udGVudEFwaS5nZXRTaGFyZWRMaW5rUmVuZGl0aW9uVXJsKHNoYXJlZElkLCAnaW1ncHJldmlldycpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB1cmw6IHVybEZpbGVDb250ZW50LCBtaW1lVHlwZTogJ2ltYWdlL3BuZycgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChyZW5kaXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUNhY2hlQnVzdGVyTnVtYmVyKCkge1xuICAgICAgICB0aGlzLmNhY2hlQnVzdGVyTnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjbG9zZSB0aGUgdmlld2VyXG4gICAgICovXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgdGhpcy5zaG93Vmlld2VyQ2hhbmdlLmVtaXQodGhpcy5zaG93Vmlld2VyKTtcbiAgICB9XG5cbiAgICBvblByaW50Q29udGVudChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5hbGxvd1ByaW50KSB7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRpdGlvblNlcnZpY2UucHJpbnRGaWxlR2VuZXJpYyh0aGlzLm5vZGVJZCwgdGhpcy5taW1lVHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN1Ym1pdEZpbGUobmV3SW1hZ2VCbG9iOiBCbG9iKSB7XG4gICAgICAgIGlmICh0aGlzPy5ub2RlRW50cnk/LmVudHJ5Py5pZCAmJiAhdGhpcy5yZWFkT25seSAmJiB0aGlzLmNhbkVkaXROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdJbWFnZUZpbGU6IEZpbGUgPSBuZXcgRmlsZShbbmV3SW1hZ2VCbG9iXSwgdGhpcz8ubm9kZUVudHJ5Py5lbnRyeT8ubmFtZSwgeyB0eXBlOiB0aGlzPy5ub2RlRW50cnk/LmVudHJ5Py5jb250ZW50Py5taW1lVHlwZSB9KTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBuZXcgRmlsZU1vZGVsKFxuICAgICAgICAgICAgICAgIG5ld0ltYWdlRmlsZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1ham9yVmVyc2lvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZlcnNpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB0aGlzPy5ub2RlRW50cnk/LmVudHJ5Py5wYXJlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgbm9kZVR5cGU6IHRoaXM/Lm5vZGVFbnRyeT8uZW50cnk/LmNvbnRlbnQ/Lm1pbWVUeXBlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aGlzPy5ub2RlRW50cnk/LmVudHJ5Py5pZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5hZGRUb1F1ZXVlKC4uLltuZXdGaWxlXSk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZXNJblRoZVF1ZXVlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5hdmlnYXRlQmVmb3JlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVCZWZvcmUubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgb25OYXZpZ2F0ZU5leHRDbGljayhldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZU5leHQubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgaXNTb3VyY2VEZWZpbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5ub2RlSWQgfHwgdGhpcy5zaGFyZWRMaW5rSWQpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1ZpZXdlcikge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU291cmNlRGVmaW5lZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBIGNvbnRlbnQgc291cmNlIGF0dHJpYnV0ZSB2YWx1ZSBpcyBtaXNzaW5nLicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5ub2RlSWQ/LmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy5ub2RlSWQ/LnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwTm9kZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNoYXJlZExpbmtJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBTaGFyZWRMaW5rKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRvd25sb2FkRmlsZSgpIHtcbiAgICAgICAgdGhpcy5ub2RlQWN0aW9uc1NlcnZpY2UuZG93bmxvYWROb2RlKHRoaXMubm9kZUVudHJ5KTtcbiAgICB9XG59XG4iLCI8YWRmLXZpZXdlclxuICAgICNhZGZWaWV3ZXJcbiAgICBbKHNob3dWaWV3ZXIpXT1cInNob3dWaWV3ZXJcIlxuICAgIFthbGxvd0dvQmFja109XCJhbGxvd0dvQmFja1wiXG4gICAgW3Nob3dUb29sYmFyXT1cInNob3dUb29sYmFyXCJcbiAgICBbb3ZlcmxheU1vZGVdPVwib3ZlcmxheU1vZGVcIlxuICAgIFthbGxvd05hdmlnYXRlXT1cImFsbG93TmF2aWdhdGVcIlxuICAgIFtjYW5OYXZpZ2F0ZUJlZm9yZV09XCJjYW5OYXZpZ2F0ZUJlZm9yZVwiXG4gICAgW2Nhbk5hdmlnYXRlTmV4dF09XCJjYW5OYXZpZ2F0ZU5leHRcIlxuICAgIFthbGxvd0xlZnRTaWRlYmFyXT1cImFsbG93TGVmdFNpZGViYXJcIlxuICAgIFthbGxvd1JpZ2h0U2lkZWJhcl09XCJhbGxvd1JpZ2h0U2lkZWJhclwiXG4gICAgW3Nob3dSaWdodFNpZGViYXJdPVwic2hvd1JpZ2h0U2lkZWJhclwiXG4gICAgW3Nob3dMZWZ0U2lkZWJhcl09XCJzaG93TGVmdFNpZGViYXJcIlxuICAgIFthbGxvd0Z1bGxTY3JlZW5dPVwiYWxsb3dGdWxsU2NyZWVuXCJcbiAgICBbc2lkZWJhclJpZ2h0VGVtcGxhdGVdPVwic2lkZWJhclJpZ2h0VGVtcGxhdGVcIlxuICAgIFtzaWRlYmFyTGVmdFRlbXBsYXRlXT1cInNpZGViYXJMZWZ0VGVtcGxhdGVcIlxuICAgIFtzaWRlYmFyUmlnaHRUZW1wbGF0ZUNvbnRleHRdPVwic2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0XCJcbiAgICBbc2lkZWJhckxlZnRUZW1wbGF0ZUNvbnRleHRdPVwic2lkZWJhckxlZnRUZW1wbGF0ZUNvbnRleHRcIlxuICAgIFtjbG9zZUJ1dHRvblBvc2l0aW9uXT1cImNsb3NlQnV0dG9uUG9zaXRpb25cIlxuICAgIFtoaWRlSW5mb0J1dHRvbl09XCJoaWRlSW5mb0J1dHRvblwiXG4gICAgW2ZpbGVOYW1lXT1cImZpbGVOYW1lXCJcbiAgICBbbWltZVR5cGVdPVwibWltZVR5cGVcIlxuICAgIFtub2RlTWltZVR5cGVdPVwibm9kZU1pbWVUeXBlXCJcbiAgICBbdXJsRmlsZV09XCJ1cmxGaWxlQ29udGVudFwiXG4gICAgW3RyYWNrc109XCJ0cmFja3NcIlxuICAgIFtyZWFkT25seV09XCJyZWFkT25seSB8fCAhY2FuRWRpdE5vZGVcIlxuICAgIFtzaG93VG9vbGJhckRpdmlkZXJzXT1cInNob3dUb29sYmFyRGl2aWRlcnNcIlxuICAgIFthbGxvd2VkRWRpdEFjdGlvbnNdPVwiYWxsb3dlZEVkaXRBY3Rpb25zXCJcbiAgICBbdmlld2VyRXh0ZW5zaW9uc109XCJ2aWV3ZXJFeHRlbnNpb25zXCJcbiAgICBbbm9kZUlkXT1cIm5vZGVJZFwiXG4gICAgKGRvd25sb2FkRmlsZSk9XCJvbkRvd25sb2FkRmlsZSgpXCJcbiAgICAobmF2aWdhdGVCZWZvcmUpPVwib25OYXZpZ2F0ZUJlZm9yZUNsaWNrKCRldmVudClcIlxuICAgIChuYXZpZ2F0ZU5leHQpPVwib25OYXZpZ2F0ZU5leHRDbGljaygkZXZlbnQpXCJcbiAgICAoc2hvd1ZpZXdlckNoYW5nZSk9XCJvbkNsb3NlKClcIlxuICAgIChzdWJtaXRGaWxlKT1cIm9uU3VibWl0RmlsZSgkZXZlbnQpXCI+XG5cbiAgICA8YWRmLXZpZXdlci10b29sYmFyICpuZ0lmPVwidG9vbGJhclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLXRvb2xiYXJcIiAvPlxuICAgIDwvYWRmLXZpZXdlci10b29sYmFyPlxuXG4gICAgPGFkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zICpuZ0lmPVwidG9vbGJhckFjdGlvbnNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnNcIiAvPlxuICAgIDwvYWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnM+XG5cbiAgICA8YWRmLXZpZXdlci1tb3JlLWFjdGlvbnMgKm5nSWY9XCJtb3JlQWN0aW9uc1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLW1vcmUtYWN0aW9uc1wiIC8+XG4gICAgPC9hZGYtdmlld2VyLW1vcmUtYWN0aW9ucz5cblxuICAgIDxhZGYtdmlld2VyLW9wZW4td2l0aCAqbmdJZj1cIm9wZW5XaXRoXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItb3Blbi13aXRoXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItb3Blbi13aXRoPlxuXG4gICAgPGFkZi12aWV3ZXItc2lkZWJhciAqbmdJZj1cInNpZGViYXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICA8L2FkZi12aWV3ZXItc2lkZWJhcj5cblxuICAgIDxhZGYtdmlld2VyLXRvb2xiYXItY3VzdG9tLWFjdGlvbnMgKm5nSWY9XCJhbGxvd0Rvd25sb2FkIHx8IGFsbG93UHJpbnRcIj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cImFkZi1hbGZyZXNjby12aWV3ZXItZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dEb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkRPV05MT0FEJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLkRPV05MT0FEJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgIFthZGZOb2RlRG93bmxvYWRdPVwibm9kZUVudHJ5XCJcbiAgICAgICAgICAgICAgICBbdmVyc2lvbl09XCJ2ZXJzaW9uRW50cnlcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5maWxlX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiBpZD1cImFkZi1hbGZyZXNjby12aWV3ZXItcHJpbnRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dQcmludFwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLlBSSU5UJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLlBSSU5UJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItcHJpbnRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblByaW50Q29udGVudCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+cHJpbnQ8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2FkZi12aWV3ZXItdG9vbGJhci1jdXN0b20tYWN0aW9ucz5cbjwvYWRmLXZpZXdlcj5cbiJdfQ==
@@ -25897,7 +25897,7 @@ class AlfrescoViewerComponent {
25897
25897
  this.nodeActionsService.downloadNode(this.nodeEntry);
25898
25898
  }
25899
25899
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlfrescoViewerComponent, deps: [{ token: AlfrescoApiService }, { token: NodesApiService }, { token: RenditionService }, { token: i1.ViewUtilService }, { token: ContentService }, { token: UploadService }, { token: i1$1.MatDialog }, { token: i0.ChangeDetectorRef }, { token: NodeActionsService }], target: i0.ɵɵFactoryTarget.Component }); }
25900
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlfrescoViewerComponent, isStandalone: true, selector: "adf-alfresco-viewer", inputs: { nodeId: "nodeId", versionId: "versionId", sharedLinkId: "sharedLinkId", showViewer: "showViewer", maxRetries: "maxRetries", allowGoBack: "allowGoBack", showToolbar: "showToolbar", overlayMode: "overlayMode", allowNavigate: "allowNavigate", canNavigateBefore: "canNavigateBefore", canNavigateNext: "canNavigateNext", allowLeftSidebar: "allowLeftSidebar", allowRightSidebar: "allowRightSidebar", showRightSidebar: "showRightSidebar", showLeftSidebar: "showLeftSidebar", allowDownload: "allowDownload", allowPrint: "allowPrint", allowFullScreen: "allowFullScreen", hideInfoButton: "hideInfoButton", closeButtonPosition: "closeButtonPosition", sidebarRightTemplate: "sidebarRightTemplate", sidebarLeftTemplate: "sidebarLeftTemplate", readOnly: "readOnly", showToolbarDividers: "showToolbarDividers" }, outputs: { invalidSharedLink: "invalidSharedLink", navigateBefore: "navigateBefore", navigateNext: "navigateNext", showViewerChange: "showViewerChange" }, host: { classAttribute: "adf-alfresco-viewer" }, providers: [ViewUtilService], queries: [{ propertyName: "toolbar", first: true, predicate: ViewerToolbarComponent, descendants: true }, { propertyName: "sidebar", first: true, predicate: ViewerSidebarComponent, descendants: true }, { propertyName: "toolbarActions", first: true, predicate: ViewerToolbarActionsComponent, descendants: true }, { propertyName: "moreActions", first: true, predicate: ViewerMoreActionsComponent, descendants: true }, { propertyName: "openWith", first: true, predicate: ViewerOpenWithComponent, descendants: true }, { propertyName: "viewerExtensions", first: true, predicate: ["viewerExtensions"], descendants: true }], viewQueries: [{ propertyName: "adfViewer", first: true, predicate: ["adfViewer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<adf-viewer\n #adfViewer\n [(showViewer)]=\"showViewer\"\n [allowGoBack]=\"allowGoBack\"\n [showToolbar]=\"showToolbar\"\n [overlayMode]=\"overlayMode\"\n [allowNavigate]=\"allowNavigate\"\n [canNavigateBefore]=\"canNavigateBefore\"\n [canNavigateNext]=\"canNavigateNext\"\n [allowLeftSidebar]=\"allowLeftSidebar\"\n [allowRightSidebar]=\"allowRightSidebar\"\n [showRightSidebar]=\"showRightSidebar\"\n [showLeftSidebar]=\"showLeftSidebar\"\n [allowFullScreen]=\"allowFullScreen\"\n [sidebarRightTemplate]=\"sidebarRightTemplate\"\n [sidebarLeftTemplate]=\"sidebarLeftTemplate\"\n [sidebarRightTemplateContext]=\"sidebarRightTemplateContext\"\n [sidebarLeftTemplateContext]=\"sidebarLeftTemplateContext\"\n [closeButtonPosition]=\"closeButtonPosition\"\n [hideInfoButton]=\"hideInfoButton\"\n [fileName]=\"fileName\"\n [mimeType]=\"mimeType\"\n [nodeMimeType]=\"nodeMimeType\"\n [urlFile]=\"urlFileContent\"\n [tracks]=\"tracks\"\n [readOnly]=\"readOnly || !canEditNode\"\n [showToolbarDividers]=\"showToolbarDividers\"\n [allowedEditActions]=\"allowedEditActions\"\n [viewerExtensions]=\"viewerExtensions\"\n [nodeId]=\"nodeId\"\n (downloadFile)=\"onDownloadFile()\"\n (navigateBefore)=\"onNavigateBeforeClick($event)\"\n (navigateNext)=\"onNavigateNextClick($event)\"\n (showViewerChange)=\"onClose()\"\n (submitFile)=\"onSubmitFile($event)\">\n\n <adf-viewer-toolbar *ngIf=\"toolbar\">\n <ng-content select=\"adf-viewer-toolbar\" />\n </adf-viewer-toolbar>\n\n <adf-viewer-toolbar-actions *ngIf=\"toolbarActions\">\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n </adf-viewer-toolbar-actions>\n\n <adf-viewer-more-actions *ngIf=\"moreActions\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </adf-viewer-more-actions>\n\n <adf-viewer-open-with *ngIf=\"openWith\">\n <ng-content select=\"adf-viewer-open-with\" />\n </adf-viewer-open-with>\n\n <adf-viewer-sidebar *ngIf=\"sidebar\">\n <ng-content select=\"adf-viewer-sidebar\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-toolbar-custom-actions *ngIf=\"allowDownload || allowPrint\">\n <button id=\"adf-alfresco-viewer-download\"\n *ngIf=\"allowDownload\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate }}\"\n data-automation-id=\"adf-toolbar-download\"\n [adfNodeDownload]=\"nodeEntry\"\n [version]=\"versionEntry\">\n <mat-icon>file_download</mat-icon>\n </button>\n\n <button id=\"adf-alfresco-viewer-print\"\n *ngIf=\"allowPrint\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PRINT' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PRINT' | translate }}\"\n data-automation-id=\"adf-toolbar-print\"\n (click)=\"onPrintContent($event)\">\n <mat-icon>print</mat-icon>\n </button>\n </adf-viewer-toolbar-custom-actions>\n</adf-viewer>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i1.ViewerToolbarComponent, selector: "adf-viewer-toolbar" }, { kind: "component", type: i1.ViewerSidebarComponent, selector: "adf-viewer-sidebar" }, { kind: "component", type: i1.ViewerOpenWithComponent, selector: "adf-viewer-open-with" }, { kind: "component", type: i1.ViewerMoreActionsComponent, selector: "adf-viewer-more-actions" }, { kind: "component", type: i1.ViewerToolbarActionsComponent, selector: "adf-viewer-toolbar-actions" }, { kind: "component", type: i1.ViewerComponent, selector: "adf-viewer", inputs: ["urlFile", "blobFile", "showViewer", "allowGoBack", "allowFullScreen", "showToolbar", "overlayMode", "allowNavigate", "canNavigateBefore", "canNavigateNext", "allowLeftSidebar", "allowRightSidebar", "showRightSidebar", "showLeftSidebar", "sidebarRightTemplate", "sidebarLeftTemplate", "readOnly", "allowedEditActions", "tracks", "mimeType", "sidebarRightTemplateContext", "sidebarLeftTemplateContext", "closeButtonPosition", "hideInfoButton", "viewerExtensions", "nodeId", "nodeMimeType", "customError", "showToolbarDividers", "fileName"], outputs: ["downloadFile", "navigateBefore", "navigateNext", "showViewerChange", "submitFile"] }, { kind: "component", type: i1.ViewerToolbarCustomActionsComponent, selector: "adf-viewer-toolbar-custom-actions" }, { kind: "directive", type: NodeDownloadDirective, selector: "[adfNodeDownload]", inputs: ["adfNodeDownload", "version"] }], encapsulation: i0.ViewEncapsulation.None }); }
25900
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlfrescoViewerComponent, isStandalone: true, selector: "adf-alfresco-viewer", inputs: { nodeId: "nodeId", versionId: "versionId", sharedLinkId: "sharedLinkId", showViewer: "showViewer", maxRetries: "maxRetries", allowGoBack: "allowGoBack", showToolbar: "showToolbar", overlayMode: "overlayMode", allowNavigate: "allowNavigate", canNavigateBefore: "canNavigateBefore", canNavigateNext: "canNavigateNext", allowLeftSidebar: "allowLeftSidebar", allowRightSidebar: "allowRightSidebar", showRightSidebar: "showRightSidebar", showLeftSidebar: "showLeftSidebar", allowDownload: "allowDownload", allowPrint: "allowPrint", allowFullScreen: "allowFullScreen", hideInfoButton: "hideInfoButton", closeButtonPosition: "closeButtonPosition", sidebarRightTemplate: "sidebarRightTemplate", sidebarLeftTemplate: "sidebarLeftTemplate", readOnly: "readOnly", showToolbarDividers: "showToolbarDividers" }, outputs: { invalidSharedLink: "invalidSharedLink", navigateBefore: "navigateBefore", navigateNext: "navigateNext", showViewerChange: "showViewerChange" }, host: { classAttribute: "adf-alfresco-viewer" }, providers: [ViewUtilService], queries: [{ propertyName: "toolbar", first: true, predicate: ViewerToolbarComponent, descendants: true }, { propertyName: "sidebar", first: true, predicate: ViewerSidebarComponent, descendants: true }, { propertyName: "toolbarActions", first: true, predicate: ViewerToolbarActionsComponent, descendants: true }, { propertyName: "moreActions", first: true, predicate: ViewerMoreActionsComponent, descendants: true }, { propertyName: "openWith", first: true, predicate: ViewerOpenWithComponent, descendants: true }, { propertyName: "viewerExtensions", first: true, predicate: ["viewerExtensions"], descendants: true }], viewQueries: [{ propertyName: "adfViewer", first: true, predicate: ["adfViewer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<adf-viewer\n #adfViewer\n [(showViewer)]=\"showViewer\"\n [allowGoBack]=\"allowGoBack\"\n [showToolbar]=\"showToolbar\"\n [overlayMode]=\"overlayMode\"\n [allowNavigate]=\"allowNavigate\"\n [canNavigateBefore]=\"canNavigateBefore\"\n [canNavigateNext]=\"canNavigateNext\"\n [allowLeftSidebar]=\"allowLeftSidebar\"\n [allowRightSidebar]=\"allowRightSidebar\"\n [showRightSidebar]=\"showRightSidebar\"\n [showLeftSidebar]=\"showLeftSidebar\"\n [allowFullScreen]=\"allowFullScreen\"\n [sidebarRightTemplate]=\"sidebarRightTemplate\"\n [sidebarLeftTemplate]=\"sidebarLeftTemplate\"\n [sidebarRightTemplateContext]=\"sidebarRightTemplateContext\"\n [sidebarLeftTemplateContext]=\"sidebarLeftTemplateContext\"\n [closeButtonPosition]=\"closeButtonPosition\"\n [hideInfoButton]=\"hideInfoButton\"\n [fileName]=\"fileName\"\n [mimeType]=\"mimeType\"\n [nodeMimeType]=\"nodeMimeType\"\n [urlFile]=\"urlFileContent\"\n [tracks]=\"tracks\"\n [readOnly]=\"readOnly || !canEditNode\"\n [showToolbarDividers]=\"showToolbarDividers\"\n [allowedEditActions]=\"allowedEditActions\"\n [viewerExtensions]=\"viewerExtensions\"\n [nodeId]=\"nodeId\"\n (downloadFile)=\"onDownloadFile()\"\n (navigateBefore)=\"onNavigateBeforeClick($event)\"\n (navigateNext)=\"onNavigateNextClick($event)\"\n (showViewerChange)=\"onClose()\"\n (submitFile)=\"onSubmitFile($event)\">\n\n <adf-viewer-toolbar *ngIf=\"toolbar\">\n <ng-content select=\"adf-viewer-toolbar\" />\n </adf-viewer-toolbar>\n\n <adf-viewer-toolbar-actions *ngIf=\"toolbarActions\">\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n </adf-viewer-toolbar-actions>\n\n <adf-viewer-more-actions *ngIf=\"moreActions\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </adf-viewer-more-actions>\n\n <adf-viewer-open-with *ngIf=\"openWith\">\n <ng-content select=\"adf-viewer-open-with\" />\n </adf-viewer-open-with>\n\n <adf-viewer-sidebar *ngIf=\"sidebar\">\n <ng-content select=\"adf-viewer-sidebar\" />\n </adf-viewer-sidebar>\n\n <adf-viewer-toolbar-custom-actions *ngIf=\"allowDownload || allowPrint\">\n <button id=\"adf-alfresco-viewer-download\"\n *ngIf=\"allowDownload\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.DOWNLOAD' | translate }}\"\n data-automation-id=\"adf-toolbar-download\"\n [adfNodeDownload]=\"nodeEntry\"\n [version]=\"versionEntry\">\n <mat-icon>file_download</mat-icon>\n </button>\n\n <button id=\"adf-alfresco-viewer-print\"\n *ngIf=\"allowPrint\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PRINT' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PRINT' | translate }}\"\n data-automation-id=\"adf-toolbar-print\"\n (click)=\"onPrintContent($event)\">\n <mat-icon>print</mat-icon>\n </button>\n </adf-viewer-toolbar-custom-actions>\n</adf-viewer>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i1.ViewerToolbarComponent, selector: "adf-viewer-toolbar" }, { kind: "component", type: i1.ViewerSidebarComponent, selector: "adf-viewer-sidebar" }, { kind: "component", type: i1.ViewerOpenWithComponent, selector: "adf-viewer-open-with" }, { kind: "component", type: i1.ViewerMoreActionsComponent, selector: "adf-viewer-more-actions" }, { kind: "component", type: i1.ViewerToolbarActionsComponent, selector: "adf-viewer-toolbar-actions" }, { kind: "component", type: i1.ViewerComponent, selector: "adf-viewer", inputs: ["urlFile", "blobFile", "showViewer", "allowGoBack", "allowFullScreen", "showToolbar", "overlayMode", "allowNavigate", "canNavigateBefore", "canNavigateNext", "allowLeftSidebar", "allowRightSidebar", "showRightSidebar", "showLeftSidebar", "sidebarRightTemplate", "sidebarLeftTemplate", "readOnly", "allowedEditActions", "tracks", "mimeType", "sidebarRightTemplateContext", "sidebarLeftTemplateContext", "closeButtonPosition", "hideInfoButton", "viewerExtensions", "nodeId", "nodeMimeType", "customError", "showToolbarDividers", "fileName", "title"], outputs: ["downloadFile", "navigateBefore", "navigateNext", "showViewerChange", "submitFile"] }, { kind: "component", type: i1.ViewerToolbarCustomActionsComponent, selector: "adf-viewer-toolbar-custom-actions" }, { kind: "directive", type: NodeDownloadDirective, selector: "[adfNodeDownload]", inputs: ["adfNodeDownload", "version"] }], encapsulation: i0.ViewEncapsulation.None }); }
25901
25901
  }
25902
25902
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlfrescoViewerComponent, decorators: [{
25903
25903
  type: Component,