barsa-tiles 2.0.123 → 2.0.126
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.
- package/esm2022/lib/barsa-shellbar/barsa-shellbar.component.mjs +5 -3
- package/esm2022/lib/shellbar/shellbar.component.mjs +4 -3
- package/esm2022/lib/tiles-viewer/tiles-viewer.component.mjs +3 -3
- package/fesm2022/barsa-tiles.mjs +9 -6
- package/fesm2022/barsa-tiles.mjs.map +1 -1
- package/lib/barsa-shellbar/barsa-shellbar.component.d.ts +2 -1
- package/lib/shellbar/shellbar.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -113,11 +113,11 @@ export class BarsaShellbarComponent extends BaseComponent {
|
|
|
113
113
|
this.cultureChanged.emit(culture);
|
|
114
114
|
}
|
|
115
115
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaShellbarComponent, deps: [{ token: i1.NotificationService }, { token: i2.DialogService }, { token: i3.Router }, { token: i1.PortalService }, { token: DOCUMENT }, { token: APP_VERSION }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
116
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: { cssCustomUrl: "cssCustomUrl", cssUrl: "cssUrl", multiLanguages: "multiLanguages", userLoggedIn: "userLoggedIn", settings: "settings", productMenuControl: "productMenuControl", deviceSize: "deviceSize", cultures: "cultures", shellbarData: "shellbarData", notificationCount: "notificationCount", notifcationLoaded: "notifcationLoaded", notificationLoading: "notificationLoading", notifications: "notifications", productMenuItems1: "productMenuItems1", bodyClick: "bodyClick", logo: "logo", actions: "actions", userMenu: "userMenu", productSwitcher: "productSwitcher", subtitle: "subtitle", isMobile: "isMobile", hideShellbarActions: "hideShellbarActions", showExtraButton: "showExtraButton", isTablet: "isTablet", userProfileImageUrl: "userProfileImageUrl", isDesktop: "isDesktop", isServiceDesk: "isServiceDesk", isOpenQuickAccess: "isOpenQuickAccess", sideMenuTemplate: "sideMenuTemplate" }, outputs: { isOpenQuickAccessChanged: "isOpenQuickAccessChanged", openNotificationPanel: "openNotificationPanel", openQuickAccessPanel: "openQuickAccessPanel", cultureChanged: "cultureChanged", notificationLoadMore: "notificationLoadMore", removeNotification: "removeNotification", notifiationActionClick: "notifiationActionClick", notificationViewed: "notificationViewed" }, viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (cssUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n} @if (cssCustomUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n}\n<fd-shellbar\n [size]=\"deviceSize\"\n [ngClass]=\"deviceSize\"\n routeFormChange\n (stateChanged)=\"onRouteFormStateChange()\"\n [handleBodyClick]=\"true\"\n>\n @if (sideMenuTemplate) {\n <fd-shellbar-action\n [glyph]=\"'apps'\"\n [label]=\"'Quick Access' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Quick Access' | bbbTranslate\"\n [callback]=\"onOpenQuickAccess\"\n >\n </fd-shellbar-action>\n } @if (sideMenuTemplate) {\n <button\n fd-shellbar-side-nav\n fd-button\n fdType=\"transparent\"\n glyph=\"menu2\"\n style=\"width: 2.75rem\"\n (click)=\"$event.stopPropagation(); isOpenQuickAccessChanged.emit(!isOpenQuickAccess)\"\n ></button>\n } @if (logo) {\n <fd-shellbar-logo>\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n } @if (!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0) {\n <fd-product-menu [control]=\"productMenuControl\" [closePopoverOnSelect]=\"true\" [items]=\"productMenuItems1\">\n </fd-product-menu>\n }\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }}</fd-shellbar-subtitle>\n @if (!hideShellbarActions&& user && (userMenu?.length || !settings?.HideLanguage)) {\n <fd-shellbar-actions [user]=\"user\" [userMenu]=\"userMenu\" #langRef>\n @for (action of actions; track action) {\n <fd-shellbar-action\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n notificationLabel=\"login\"\n >\n </fd-shellbar-action>\n } @if (deviceSize === 's' && userLoggedIn && !settings?.HideNotifications) {\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notifications' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\n [callback]=\"onBellNotification\"\n >\n </fd-shellbar-action>\n } @if (!settings?.HideNotifications && userLoggedIn) {\n <fd-popover\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [noArrow]=\"true\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"deviceSize === 's'\"\n #popoverComponent\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"notificationCount.unread\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-popover-body>\n </fd-popover>\n } @if (!settings?.HideLanguage && deviceSize !== 's' && multiLanguages) {\n <fd-shellbar-action [glyph]=\"'world'\" [label]=\"'language'\" [fdMenuTrigger]=\"menu\" (callback)=\"(onLanguage)\">\n </fd-shellbar-action>\n } @if (!settings?.HideLanguage && deviceSize === 's' && multiLanguages) { @for (culture of cultures | keyvalue;\n track culture) {\n <fd-shellbar-action\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n class=\"culture-abbrivation\"\n [glyph]=\"culture.key\"\n [ngClass]=\"'flags'\"\n >\n </fd-shellbar-action>\n } } @if (productSwitcher?.length) {\n <fd-product-switch>\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n }\n </fd-shellbar-actions>\n }\n</fd-shellbar>\n@if(showExtraButton){\n<div\n [class.fd-shellbar--xl]=\"isDesktop\"\n [class.fd-shellbar--m]=\"isTablet\"\n [class.fd-shellbar--s]=\"isMobile\"\n class=\"extra-button-wrapper\"\n [class.service-desk]=\"isServiceDesk\"\n>\n <ng-content select=\"button\"></ng-content>\n</div>\n}\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<div\n *ngIf=\"sideMenuTemplate\"\n class=\"sidemenu-h tw-fixed tw-bg-white tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\n [class.tw-w-screen]=\"isMobile\"\n [class.-tw-right-full]=\"isMobile\"\n [class.tw-w-96]=\"!isMobile\"\n [class.-tw-right-96]=\"!isMobile\"\n [class.!tw-right-0]=\"isOpenQuickAccess\"\n (click)=\"$event.stopPropagation()\"\n>\n <ng-container *ngTemplateOutlet=\"sideMenuTemplate\"></ng-container>\n</div>\n\n@if(isOpenQuickAccess) {\n<div\n class=\"sidemenu-h tw-fixed tw-right-0 tw-bg-slate-800/[.5] tw-z-[90] tw-w-screen tw-backdrop-blur-sm\"\n (click)=\"isOpenQuickAccessChanged.emit(false)\"\n></div>\n}\n<fd-menu #menu>\n <ul fd-list>\n @for (culture of cultures | keyvalue; track culture) {\n <li fd-list-item>\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\n </span>\n </a>\n </li>\n }\n </ul>\n</fd-menu>\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\n @if (!notifcationLoaded && notificationLoading === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bt-notification-group\n [notifications]=\"notifications\"\n [notificationCount]=\"notificationCount\"\n [loading]=\"notificationLoading === true\"\n (viewed)=\"onNotificationItemViewed($event)\"\n (remove)=\"onRemoveNotifications($event)\"\n (showEvent)=\"popoverComponent.close(); onShowNotification($event)\"\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\n (loadMore)=\"onNotificationLoadMore()\"\n [deviceSize]=\"deviceSize\"\n ></bt-notification-group>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\n </fd-dialog-header>\n <fd-dialog-body class=\"mobile\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;position:relative}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.sidemenu-h{top:var(--fdShellbar_Height);height:calc(100vh - var(--fdShellbar_Height))}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i7.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i7.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i8.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i8.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i8.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i9.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i10.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "disabled"] }, { kind: "component", type: i10.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode"], outputs: ["productsChange", "itemClicked"] }, { kind: "component", type: i11.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i11.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i11.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i12.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "breakpoints", "sideNav", "groupFlex"] }, { kind: "component", type: i12.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i12.ShellbarSubtitleComponent, selector: "fd-shellbar-subtitle" }, { kind: "component", type: i12.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect"], outputs: ["searchOpen"] }, { kind: "component", type: i12.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "glyphFont", "callback", "label", "notificationLabel", "notificationCount"] }, { kind: "component", type: i12.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "directive", type: i12.ShellbarSidenavDirective, selector: "[fdShellbarSidenav], [fd-shellbar-side-nav]" }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i1.RouteFormChangeDirective, selector: "[routeFormChange]", inputs: ["handleBodyClick"], outputs: ["stateChanged"] }, { kind: "component", type: i13.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i14.NotificationGroupComponent, selector: "bt-notification-group", inputs: ["notifications", "loading", "deviceSize", "notificationCount"], outputs: ["viewed", "remove", "actionClick", "showEvent", "loadMore"] }, { kind: "pipe", type: i4.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
116
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: { cssCustomUrl: "cssCustomUrl", cssUrl: "cssUrl", cssVariableUrl: "cssVariableUrl", multiLanguages: "multiLanguages", userLoggedIn: "userLoggedIn", settings: "settings", productMenuControl: "productMenuControl", deviceSize: "deviceSize", cultures: "cultures", shellbarData: "shellbarData", notificationCount: "notificationCount", notifcationLoaded: "notifcationLoaded", notificationLoading: "notificationLoading", notifications: "notifications", productMenuItems1: "productMenuItems1", bodyClick: "bodyClick", logo: "logo", actions: "actions", userMenu: "userMenu", productSwitcher: "productSwitcher", subtitle: "subtitle", isMobile: "isMobile", hideShellbarActions: "hideShellbarActions", showExtraButton: "showExtraButton", isTablet: "isTablet", userProfileImageUrl: "userProfileImageUrl", isDesktop: "isDesktop", isServiceDesk: "isServiceDesk", isOpenQuickAccess: "isOpenQuickAccess", sideMenuTemplate: "sideMenuTemplate" }, outputs: { isOpenQuickAccessChanged: "isOpenQuickAccessChanged", openNotificationPanel: "openNotificationPanel", openQuickAccessPanel: "openQuickAccessPanel", cultureChanged: "cultureChanged", notificationLoadMore: "notificationLoadMore", removeNotification: "removeNotification", notifiationActionClick: "notifiationActionClick", notificationViewed: "notificationViewed" }, viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (cssVariableUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssVariableUrl\" />\n} @if (cssUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n} @if (cssCustomUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n}\n<fd-shellbar\n [size]=\"deviceSize\"\n [ngClass]=\"deviceSize\"\n routeFormChange\n (stateChanged)=\"onRouteFormStateChange()\"\n [handleBodyClick]=\"true\"\n>\n @if (sideMenuTemplate) {\n <fd-shellbar-action\n [glyph]=\"'apps'\"\n [label]=\"'Quick Access' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Quick Access' | bbbTranslate\"\n [callback]=\"onOpenQuickAccess\"\n >\n </fd-shellbar-action>\n } @if (sideMenuTemplate) {\n <button\n fd-shellbar-side-nav\n fd-button\n fdType=\"transparent\"\n glyph=\"menu2\"\n style=\"width: 2.75rem\"\n (click)=\"$event.stopPropagation(); isOpenQuickAccessChanged.emit(!isOpenQuickAccess)\"\n ></button>\n } @if (logo) {\n <fd-shellbar-logo>\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n } @if (!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0) {\n <fd-product-menu [control]=\"productMenuControl\" [closePopoverOnSelect]=\"true\" [items]=\"productMenuItems1\">\n </fd-product-menu>\n }\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }}</fd-shellbar-subtitle>\n @if (!hideShellbarActions&& user && (userMenu?.length || !settings?.HideLanguage)) {\n <fd-shellbar-actions [user]=\"user\" [userMenu]=\"userMenu\" #langRef>\n @for (action of actions; track action) {\n <fd-shellbar-action\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n notificationLabel=\"login\"\n >\n </fd-shellbar-action>\n } @if (deviceSize === 's' && userLoggedIn && !settings?.HideNotifications) {\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notifications' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\n [callback]=\"onBellNotification\"\n >\n </fd-shellbar-action>\n } @if (!settings?.HideNotifications && userLoggedIn) {\n <fd-popover\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [noArrow]=\"true\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"deviceSize === 's'\"\n #popoverComponent\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"notificationCount.unread\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-popover-body>\n </fd-popover>\n } @if (!settings?.HideLanguage && deviceSize !== 's' && multiLanguages) {\n <fd-shellbar-action [glyph]=\"'world'\" [label]=\"'language'\" [fdMenuTrigger]=\"menu\" (callback)=\"(onLanguage)\">\n </fd-shellbar-action>\n } @if (!settings?.HideLanguage && deviceSize === 's' && multiLanguages) { @for (culture of cultures | keyvalue;\n track culture) {\n <fd-shellbar-action\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n class=\"culture-abbrivation\"\n [glyph]=\"culture.key\"\n [ngClass]=\"'flags'\"\n >\n </fd-shellbar-action>\n } } @if (productSwitcher?.length) {\n <fd-product-switch>\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n }\n </fd-shellbar-actions>\n }\n</fd-shellbar>\n@if(showExtraButton){\n<div\n [class.fd-shellbar--xl]=\"isDesktop\"\n [class.fd-shellbar--m]=\"isTablet\"\n [class.fd-shellbar--s]=\"isMobile\"\n class=\"extra-button-wrapper\"\n [class.service-desk]=\"isServiceDesk\"\n>\n <ng-content select=\"button\"></ng-content>\n</div>\n}\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<div\n *ngIf=\"sideMenuTemplate\"\n class=\"sidemenu-h tw-fixed tw-bg-white tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\n [class.tw-w-screen]=\"isMobile\"\n [class.-tw-right-full]=\"isMobile\"\n [class.tw-w-96]=\"!isMobile\"\n [class.-tw-right-96]=\"!isMobile\"\n [class.!tw-right-0]=\"isOpenQuickAccess\"\n (click)=\"$event.stopPropagation()\"\n>\n <ng-container *ngTemplateOutlet=\"sideMenuTemplate\"></ng-container>\n</div>\n\n@if(isOpenQuickAccess) {\n<div\n class=\"sidemenu-h tw-fixed tw-right-0 tw-bg-slate-800/[.5] tw-z-[90] tw-w-screen tw-backdrop-blur-sm\"\n (click)=\"isOpenQuickAccessChanged.emit(false)\"\n></div>\n}\n<fd-menu #menu>\n <ul fd-list>\n @for (culture of cultures | keyvalue; track culture) {\n <li fd-list-item>\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\n </span>\n </a>\n </li>\n }\n </ul>\n</fd-menu>\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\n @if (!notifcationLoaded && notificationLoading === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bt-notification-group\n [notifications]=\"notifications\"\n [notificationCount]=\"notificationCount\"\n [loading]=\"notificationLoading === true\"\n (viewed)=\"onNotificationItemViewed($event)\"\n (remove)=\"onRemoveNotifications($event)\"\n (showEvent)=\"popoverComponent.close(); onShowNotification($event)\"\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\n (loadMore)=\"onNotificationLoadMore()\"\n [deviceSize]=\"deviceSize\"\n ></bt-notification-group>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\n </fd-dialog-header>\n <fd-dialog-body class=\"mobile\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;position:relative}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.sidemenu-h{top:var(--fdShellbar_Height);height:calc(100vh - var(--fdShellbar_Height))}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i7.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i7.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i8.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i8.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i8.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i8.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "component", type: i9.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i10.ProductSwitchComponent, selector: "fd-product-switch", inputs: ["placement", "disabled"] }, { kind: "component", type: i10.ProductSwitchBodyComponent, selector: "fd-product-switch-body", inputs: ["dragAndDropEnabled", "products", "forceListMode"], outputs: ["productsChange", "itemClicked"] }, { kind: "component", type: i11.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i11.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i11.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i12.ShellbarComponent, selector: "fd-shellbar", inputs: ["size", "breakpoints", "sideNav", "groupFlex"] }, { kind: "component", type: i12.ProductMenuComponent, selector: "fd-product-menu", inputs: ["closeOnEscapeKey", "closeOnOutsideClick", "triggers", "placement", "disabled", "fillControlMode", "control", "items", "closePopoverOnSelect"] }, { kind: "component", type: i12.ShellbarSubtitleComponent, selector: "fd-shellbar-subtitle" }, { kind: "component", type: i12.ShellbarActionsComponent, selector: "fd-shellbar-actions", inputs: ["user", "userMenu", "closePopoverOnSelect"], outputs: ["searchOpen"] }, { kind: "component", type: i12.ShellbarActionComponent, selector: "fd-shellbar-action", inputs: ["glyph", "glyphFont", "callback", "label", "notificationLabel", "notificationCount"] }, { kind: "component", type: i12.ShellbarLogoComponent, selector: "fd-shellbar-logo" }, { kind: "directive", type: i12.ShellbarSidenavDirective, selector: "[fdShellbarSidenav], [fd-shellbar-side-nav]" }, { kind: "directive", type: i1.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i1.RouteFormChangeDirective, selector: "[routeFormChange]", inputs: ["handleBodyClick"], outputs: ["stateChanged"] }, { kind: "component", type: i13.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i14.NotificationGroupComponent, selector: "bt-notification-group", inputs: ["notifications", "loading", "deviceSize", "notificationCount"], outputs: ["viewed", "remove", "actionClick", "showEvent", "loadMore"] }, { kind: "pipe", type: i4.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
117
117
|
}
|
|
118
118
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: BarsaShellbarComponent, decorators: [{
|
|
119
119
|
type: Component,
|
|
120
|
-
args: [{ selector: 'bt-barsa-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (cssUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n} @if (cssCustomUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n}\n<fd-shellbar\n [size]=\"deviceSize\"\n [ngClass]=\"deviceSize\"\n routeFormChange\n (stateChanged)=\"onRouteFormStateChange()\"\n [handleBodyClick]=\"true\"\n>\n @if (sideMenuTemplate) {\n <fd-shellbar-action\n [glyph]=\"'apps'\"\n [label]=\"'Quick Access' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Quick Access' | bbbTranslate\"\n [callback]=\"onOpenQuickAccess\"\n >\n </fd-shellbar-action>\n } @if (sideMenuTemplate) {\n <button\n fd-shellbar-side-nav\n fd-button\n fdType=\"transparent\"\n glyph=\"menu2\"\n style=\"width: 2.75rem\"\n (click)=\"$event.stopPropagation(); isOpenQuickAccessChanged.emit(!isOpenQuickAccess)\"\n ></button>\n } @if (logo) {\n <fd-shellbar-logo>\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n } @if (!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0) {\n <fd-product-menu [control]=\"productMenuControl\" [closePopoverOnSelect]=\"true\" [items]=\"productMenuItems1\">\n </fd-product-menu>\n }\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }}</fd-shellbar-subtitle>\n @if (!hideShellbarActions&& user && (userMenu?.length || !settings?.HideLanguage)) {\n <fd-shellbar-actions [user]=\"user\" [userMenu]=\"userMenu\" #langRef>\n @for (action of actions; track action) {\n <fd-shellbar-action\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n notificationLabel=\"login\"\n >\n </fd-shellbar-action>\n } @if (deviceSize === 's' && userLoggedIn && !settings?.HideNotifications) {\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notifications' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\n [callback]=\"onBellNotification\"\n >\n </fd-shellbar-action>\n } @if (!settings?.HideNotifications && userLoggedIn) {\n <fd-popover\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [noArrow]=\"true\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"deviceSize === 's'\"\n #popoverComponent\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"notificationCount.unread\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-popover-body>\n </fd-popover>\n } @if (!settings?.HideLanguage && deviceSize !== 's' && multiLanguages) {\n <fd-shellbar-action [glyph]=\"'world'\" [label]=\"'language'\" [fdMenuTrigger]=\"menu\" (callback)=\"(onLanguage)\">\n </fd-shellbar-action>\n } @if (!settings?.HideLanguage && deviceSize === 's' && multiLanguages) { @for (culture of cultures | keyvalue;\n track culture) {\n <fd-shellbar-action\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n class=\"culture-abbrivation\"\n [glyph]=\"culture.key\"\n [ngClass]=\"'flags'\"\n >\n </fd-shellbar-action>\n } } @if (productSwitcher?.length) {\n <fd-product-switch>\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n }\n </fd-shellbar-actions>\n }\n</fd-shellbar>\n@if(showExtraButton){\n<div\n [class.fd-shellbar--xl]=\"isDesktop\"\n [class.fd-shellbar--m]=\"isTablet\"\n [class.fd-shellbar--s]=\"isMobile\"\n class=\"extra-button-wrapper\"\n [class.service-desk]=\"isServiceDesk\"\n>\n <ng-content select=\"button\"></ng-content>\n</div>\n}\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<div\n *ngIf=\"sideMenuTemplate\"\n class=\"sidemenu-h tw-fixed tw-bg-white tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\n [class.tw-w-screen]=\"isMobile\"\n [class.-tw-right-full]=\"isMobile\"\n [class.tw-w-96]=\"!isMobile\"\n [class.-tw-right-96]=\"!isMobile\"\n [class.!tw-right-0]=\"isOpenQuickAccess\"\n (click)=\"$event.stopPropagation()\"\n>\n <ng-container *ngTemplateOutlet=\"sideMenuTemplate\"></ng-container>\n</div>\n\n@if(isOpenQuickAccess) {\n<div\n class=\"sidemenu-h tw-fixed tw-right-0 tw-bg-slate-800/[.5] tw-z-[90] tw-w-screen tw-backdrop-blur-sm\"\n (click)=\"isOpenQuickAccessChanged.emit(false)\"\n></div>\n}\n<fd-menu #menu>\n <ul fd-list>\n @for (culture of cultures | keyvalue; track culture) {\n <li fd-list-item>\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\n </span>\n </a>\n </li>\n }\n </ul>\n</fd-menu>\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\n @if (!notifcationLoaded && notificationLoading === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bt-notification-group\n [notifications]=\"notifications\"\n [notificationCount]=\"notificationCount\"\n [loading]=\"notificationLoading === true\"\n (viewed)=\"onNotificationItemViewed($event)\"\n (remove)=\"onRemoveNotifications($event)\"\n (showEvent)=\"popoverComponent.close(); onShowNotification($event)\"\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\n (loadMore)=\"onNotificationLoadMore()\"\n [deviceSize]=\"deviceSize\"\n ></bt-notification-group>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\n </fd-dialog-header>\n <fd-dialog-body class=\"mobile\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;position:relative}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.sidemenu-h{top:var(--fdShellbar_Height);height:calc(100vh - var(--fdShellbar_Height))}\n"] }]
|
|
120
|
+
args: [{ selector: 'bt-barsa-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (cssVariableUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssVariableUrl\" />\n} @if (cssUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssUrl\" />\n} @if (cssCustomUrl) {\n<link type=\"text/css\" rel=\"stylesheet\" [href]=\"cssCustomUrl\" />\n}\n<fd-shellbar\n [size]=\"deviceSize\"\n [ngClass]=\"deviceSize\"\n routeFormChange\n (stateChanged)=\"onRouteFormStateChange()\"\n [handleBodyClick]=\"true\"\n>\n @if (sideMenuTemplate) {\n <fd-shellbar-action\n [glyph]=\"'apps'\"\n [label]=\"'Quick Access' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Quick Access' | bbbTranslate\"\n [callback]=\"onOpenQuickAccess\"\n >\n </fd-shellbar-action>\n } @if (sideMenuTemplate) {\n <button\n fd-shellbar-side-nav\n fd-button\n fdType=\"transparent\"\n glyph=\"menu2\"\n style=\"width: 2.75rem\"\n (click)=\"$event.stopPropagation(); isOpenQuickAccessChanged.emit(!isOpenQuickAccess)\"\n ></button>\n } @if (logo) {\n <fd-shellbar-logo>\n <a\n [style.backgroundImage]=\"'url(' + (logo?.FileId | picFieldSrc: 'GetPictureFromFileInfo':null) + ')'\"\n href=\"/\"\n class=\"fd-shellbar__logo fd-shellbar__logo--image-replaced\"\n aria-label=\"Barsa Novin Ray\"\n ></a>\n </fd-shellbar-logo>\n } @if (!settings?.HideProductMenu && productMenuItems1 && productMenuItems1.length > 0) {\n <fd-product-menu [control]=\"productMenuControl\" [closePopoverOnSelect]=\"true\" [items]=\"productMenuItems1\">\n </fd-product-menu>\n }\n <fd-shellbar-subtitle> {{ subtitle | bbbTranslate }}{{ showVersion ? appVersion : '' }}</fd-shellbar-subtitle>\n @if (!hideShellbarActions&& user && (userMenu?.length || !settings?.HideLanguage)) {\n <fd-shellbar-actions [user]=\"user\" [userMenu]=\"userMenu\" #langRef>\n @for (action of actions; track action) {\n <fd-shellbar-action\n [glyph]=\"action.Icon\"\n [callback]=\"action.Callback\"\n [label]=\"action.Label\"\n notificationLabel=\"login\"\n >\n </fd-shellbar-action>\n } @if (deviceSize === 's' && userLoggedIn && !settings?.HideNotifications) {\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notifications' | bbbTranslate\"\n [notificationCount]=\"notificationCount.unread ?? 0\"\n [notificationLabel]=\"'Notifications' | bbbTranslate\"\n [callback]=\"onBellNotification\"\n >\n </fd-shellbar-action>\n } @if (!settings?.HideNotifications && userLoggedIn) {\n <fd-popover\n [(isOpen)]=\"isOpenNotificatoin\"\n [triggers]=\"[]\"\n [focusTrapped]=\"true\"\n [noArrow]=\"true\"\n placement=\"bottom\"\n title=\"Notification Popover\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"deviceSize === 's'\"\n #popoverComponent\n >\n <fd-popover-control>\n <fd-shellbar-action\n [glyph]=\"'bell'\"\n [label]=\"'Notification'\"\n [notificationCount]=\"notificationCount.unread\"\n [notificationLabel]=\"'Notification Label'\"\n [callback]=\"onOpenNotification\"\n >\n </fd-shellbar-action>\n </fd-popover-control>\n <fd-popover-body style=\"min-width: 320px; overflow-x: auto; box-shadow: var(--sapContent_Shadow0)\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-popover-body>\n </fd-popover>\n } @if (!settings?.HideLanguage && deviceSize !== 's' && multiLanguages) {\n <fd-shellbar-action [glyph]=\"'world'\" [label]=\"'language'\" [fdMenuTrigger]=\"menu\" (callback)=\"(onLanguage)\">\n </fd-shellbar-action>\n } @if (!settings?.HideLanguage && deviceSize === 's' && multiLanguages) { @for (culture of cultures | keyvalue;\n track culture) {\n <fd-shellbar-action\n [label]=\"culture.value\"\n [callback]=\"onLanguage\"\n class=\"culture-abbrivation\"\n [glyph]=\"culture.key\"\n [ngClass]=\"'flags'\"\n >\n </fd-shellbar-action>\n } } @if (productSwitcher?.length) {\n <fd-product-switch>\n <fd-product-switch-body [products]=\"productSwitcher\" [forceListMode]=\"deviceSize === 's'\">\n </fd-product-switch-body>\n </fd-product-switch>\n }\n </fd-shellbar-actions>\n }\n</fd-shellbar>\n@if(showExtraButton){\n<div\n [class.fd-shellbar--xl]=\"isDesktop\"\n [class.fd-shellbar--m]=\"isTablet\"\n [class.fd-shellbar--s]=\"isMobile\"\n class=\"extra-button-wrapper\"\n [class.service-desk]=\"isServiceDesk\"\n>\n <ng-content select=\"button\"></ng-content>\n</div>\n}\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n\n<div\n *ngIf=\"sideMenuTemplate\"\n class=\"sidemenu-h tw-fixed tw-bg-white tw-transition-all tw-z-[100] tw-shadow-2xl tw-overflow-auto\"\n [class.tw-w-screen]=\"isMobile\"\n [class.-tw-right-full]=\"isMobile\"\n [class.tw-w-96]=\"!isMobile\"\n [class.-tw-right-96]=\"!isMobile\"\n [class.!tw-right-0]=\"isOpenQuickAccess\"\n (click)=\"$event.stopPropagation()\"\n>\n <ng-container *ngTemplateOutlet=\"sideMenuTemplate\"></ng-container>\n</div>\n\n@if(isOpenQuickAccess) {\n<div\n class=\"sidemenu-h tw-fixed tw-right-0 tw-bg-slate-800/[.5] tw-z-[90] tw-w-screen tw-backdrop-blur-sm\"\n (click)=\"isOpenQuickAccessChanged.emit(false)\"\n></div>\n}\n<fd-menu #menu>\n <ul fd-list>\n @for (culture of cultures | keyvalue; track culture) {\n <li fd-list-item>\n <a fd-list-link (click)=\"onCultureChange(culture.value)\">\n <span fd-list-title>\n <img width=\"14px\" height=\"12px\" [src]=\"'/assets/flags/' + culture.key + '.png'\" />\n <span class=\"culture-abbrivation\" [ngClass]=\"culture.key\"> {{ culture.key }}</span>\n </span>\n </a>\n </li>\n }\n </ul>\n</fd-menu>\n<ng-template #notificationGroupTpl let-notificationCount=\"notificationCount\">\n @if (!notifcationLoaded && notificationLoading === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bt-notification-group\n [notifications]=\"notifications\"\n [notificationCount]=\"notificationCount\"\n [loading]=\"notificationLoading === true\"\n (viewed)=\"onNotificationItemViewed($event)\"\n (remove)=\"onRemoveNotifications($event)\"\n (showEvent)=\"popoverComponent.close(); onShowNotification($event)\"\n (actionClick)=\"popoverComponent.close(); onNotificationAction($event)\"\n (loadMore)=\"onNotificationLoadMore()\"\n [deviceSize]=\"deviceSize\"\n ></bt-notification-group>\n</ng-template>\n\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #notificationsDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Notification' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss()\"></button>\n </fd-dialog-header>\n <fd-dialog-body class=\"mobile\">\n <ng-container\n *ngTemplateOutlet=\"notificationGroupTpl; context: { notificationCount: notificationCount }\"\n ></ng-container>\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;position:relative}:host ::ng-deep fd-shellbar-actions fd-avatar{background-color:transparent!important;color:var(--sapShell_InteractiveTextColor, #d1e8ff)}:host ::ng-deep fd-combobox .fd-input-group input{min-width:2rem;height:1.625rem;margin-top:.1875rem;margin-bottom:.1875rem;padding:0 .5rem;box-sizing:border-box}:host ::ng-deep fd-combobox .fd-input-group span{min-width:2rem;min-height:1.625rem}:host ::ng-deep .fd-shellbar__subtitle{font-size:1rem}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__subtitle{display:block;overflow:hidden;text-wrap:wrap;width:100%;word-break:break-all}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--product{flex:1}:host ::ng-deep .fd-shellbar--s ::ng-deep .fd-shellbar__group.fd-shellbar__group--actions{max-width:120px}.fd-shellbar__logo{min-height:3rem;height:3rem;width:3rem}.extra-button-wrapper{display:flex;height:100%;align-items:center;position:absolute;left:10px;top:0;gap:.285rem}.sidemenu-h{top:var(--fdShellbar_Height);height:calc(100vh - var(--fdShellbar_Height))}\n"] }]
|
|
121
121
|
}], ctorParameters: () => [{ type: i1.NotificationService }, { type: i2.DialogService }, { type: i3.Router }, { type: i1.PortalService }, { type: Document, decorators: [{
|
|
122
122
|
type: Inject,
|
|
123
123
|
args: [DOCUMENT]
|
|
@@ -128,6 +128,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
128
128
|
type: Input
|
|
129
129
|
}], cssUrl: [{
|
|
130
130
|
type: Input
|
|
131
|
+
}], cssVariableUrl: [{
|
|
132
|
+
type: Input
|
|
131
133
|
}], multiLanguages: [{
|
|
132
134
|
type: Input
|
|
133
135
|
}], userLoggedIn: [{
|
|
@@ -208,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
208
210
|
type: ViewChild,
|
|
209
211
|
args: ['notificationsDialog', { static: true, read: TemplateRef }]
|
|
210
212
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2Etc2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9iYXJzYS1zaGVsbGJhci9iYXJzYS1zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2JhcnNhLXNoZWxsYmFyL2JhcnNhLXNoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUNILGlCQUFpQixFQU1wQixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFDSCxhQUFhLEVBSWIsV0FBVyxFQU1kLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQjlCLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBeUVyRCxZQUNZLG9CQUF5QyxFQUN6QyxjQUE2QixFQUM3QixPQUFlLEVBQ2YsY0FBNkIsRUFDWCxTQUFtQixFQUNqQixVQUFrQjtRQUU5QyxLQUFLLEVBQUUsQ0FBQztRQVBBLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQ1gsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNqQixlQUFVLEdBQVYsVUFB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Q0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFdUIsaUJBQWlCO3NCQUE5QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDc0IsZ0JBQWdCO3NCQUFqRSxTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDdUIsb0JBQW9CO3NCQUExRixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgQ29tYm9ib3hDb21wb25lbnQsXG4gICAgRGlhbG9nU2VydmljZSxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtLFxuICAgIFNoZWxsYmFyTWVudUl0ZW0sXG4gICAgU2hlbGxiYXJVc2VyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQmFzZUNvbXBvbmVudCxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIEZpbGVQaWN0dXJlSW5mb01vZGVsLFxuICAgIE1vRm9yUmVwb3J0TW9kZWwsXG4gICAgQVBQX1ZFUlNJT04sXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBOb3RpZmljYXRpb25JdGVtLFxuICAgIE5vdGlmaWNhdGlvbkFjdGlvbixcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXG4gICAgUG9ydGFsU2VydmljZVxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbnRlcmZhY2UgU2hlbGxiYXJTZXR0aW5nIGV4dGVuZHMgTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgc3VidGl0bGU6IHN0cmluZztcbiAgICBjYWxjU3VidGl0bGU6IHN0cmluZztcbiAgICBsb2dvOiBGaWxlUGljdHVyZUluZm9Nb2RlbDtcbiAgICBQcm9kdWN0U3dpdGNoSXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgUHJvZHVjdE1lbnVJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBVc2VyTWVudUl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgIEFjdGlvbkl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2J0LWJhcnNhLXNoZWxsYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFyc2Etc2hlbGxiYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhcnNhLXNoZWxsYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQmFyc2FTaGVsbGJhckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNzc0N1c3RvbVVybDogU2FmZVJlc291cmNlVXJsIHwgbnVsbDtcbiAgICBASW5wdXQoKSBjc3NVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGw7XG4gICAgQElucHV0KCkgbXVsdGlMYW5ndWFnZXM6IGJvb2xlYW47XG4gICAgQElucHV0KCkgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIEBJbnB1dCgpIHByb2R1Y3RNZW51Q29udHJvbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBjdWx0dXJlczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBASW5wdXQoKSBzaGVsbGJhckRhdGE6IFNoZWxsYmFyU2V0dGluZztcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25Db3VudDogeyB1bnJlYWQ6IG51bWJlcjsgYWxsOiBudW1iZXIgfTtcbiAgICBASW5wdXQoKSBub3RpZmNhdGlvbkxvYWRlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25Mb2FkaW5nOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkl0ZW1bXTtcbiAgICBASW5wdXQoKSBwcm9kdWN0TWVudUl0ZW1zMTogU2hlbGxiYXJNZW51SXRlbVtdO1xuICAgIEBJbnB1dCgpIGJvZHlDbGljazogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxvZ286IHsgRmlsZUlkOiBzdHJpbmcgfTtcbiAgICBASW5wdXQoKSBhY3Rpb25zOiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcbiAgICBASW5wdXQoKSB1c2VyTWVudTogeyB0ZXh0OiBzdHJpbmc7IGNhbGxiYWNrOiAoKSA9PiB2b2lkIH1bXTtcbiAgICBASW5wdXQoKSBwcm9kdWN0U3dpdGNoZXI6IFByb2R1Y3RTd2l0Y2hJdGVtW107XG4gICAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBpc01vYmlsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlU2hlbGxiYXJBY3Rpb25zOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dFeHRyYUJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc1RhYmxldDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB1c2VyUHJvZmlsZUltYWdlVXJsOiBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpIGlzRGVza3RvcDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc1NlcnZpY2VEZXNrID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNPcGVuUXVpY2tBY2Nlc3M7XG4gICAgQElucHV0KCkgc2lkZU1lbnVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG5cbiAgICBAT3V0cHV0KCkgaXNPcGVuUXVpY2tBY2Nlc3NDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPihmYWxzZSk7XG4gICAgQE91dHB1dCgpIG9wZW5Ob3RpZmljYXRpb25QYW5lbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgb3BlblF1aWNrQWNjZXNzUGFuZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGN1bHR1cmVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIG5vdGlmaWNhdGlvbkxvYWRNb3JlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSByZW1vdmVOb3RpZmljYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTsgc2lsZW50OiBib29sZWFuIH0+KCk7XG4gICAgQE91dHB1dCgpIG5vdGlmaWF0aW9uQWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbTogTm90aWZpY2F0aW9uSXRlbTsgYnRuOiBOb3RpZmljYXRpb25BY3Rpb24gfT4oKTtcbiAgICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uVmlld2VkID0gbmV3IEV2ZW50RW1pdHRlcjxOb3RpZmljYXRpb25JdGVtPigpO1xuXG4gICAgQFZpZXdDaGlsZChDb21ib2JveENvbXBvbmVudCkgY29tYm9ib3hDb21wb25lbnQ6IENvbWJvYm94Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3BvcG92ZXJDb21wb25lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9wb3ZlckNvbXBvbmVudDogUG9wb3ZlckNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdub3RpZmljYXRpb25zRGlhbG9nJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF9ub3RpZmljYXRpb25zRGlhbG9nOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHJpdmF0ZSBfY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIEFycmF5ID0gQXJyYXk7XG4gICAgaXNPcGVuTm90aWZpY2F0b2luID0gZmFsc2U7XG5cbiAgICB1c2VyOiBTaGVsbGJhclVzZXIgPSB7XG4gICAgICAgIGluaXRpYWxzOiAnV1cnLFxuICAgICAgICBjb2xvckFjY2VudDogMVxuICAgIH07XG4gICAgc2VhcmNoVGVybXMgPSBbJ9mF2LHYrti124wnLCAn2YXYp9mF2YjYsduM2KonLCAn2KrbjNqp2KonLCAn2b7YsdmI2pjZhyddO1xuICAgIHNlYXJjaFRlcm06IHN0cmluZztcbiAgICBhY3Rpb25zJDogT2JzZXJ2YWJsZTxTaGVsbGJhck1lbnVJdGVtW10+O1xuXG4gICAgc2hvd1ZlcnNpb24gPSBmYWxzZTtcblxuICAgIF92aWV3ZWROb3RpZmljYXRpb25zJCA9IG5ldyBTdWJqZWN0PE5vdGlmaWNhdGlvbkl0ZW0+KCk7XG4gICAgb25CZWxsTm90aWZpY2F0aW9uID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLl9kb2N1bWVudD8uYm9keSAmJiB0aGlzLl9kb2N1bWVudC5ib2R5LmNsaWNrKCk7XG4gICAgICAgIHRoaXMuX2RpYWxvZ1NlcnZpY2VcbiAgICAgICAgICAgIC5vcGVuKHRoaXMuX25vdGlmaWNhdGlvbnNEaWFsb2csIHtcbiAgICAgICAgICAgICAgICBtb2JpbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgdmVydGljYWxQYWRkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hZnRlckxvYWRlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvblBhbmVsLmVtaXQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH07XG4gICAgX3ZpZXdlZE5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkl0ZW1bXSA9IFtdO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9ub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZSxcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBASW5qZWN0KEFQUF9WRVJTSU9OKSBwdWJsaWMgYXBwVmVyc2lvbjogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc2hvd1ZlcnNpb24gPSBmYWxzZTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICAgICAgY29uc3QgeyB1c2VyUHJvZmlsZUltYWdlVXJsIH0gPSBjaGFuZ2VzO1xuICAgICAgICBpZiAodXNlclByb2ZpbGVJbWFnZVVybCkge1xuICAgICAgICAgICAgdGhpcy51c2VyLmltYWdlID0gdXNlclByb2ZpbGVJbWFnZVVybC5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25Sb3V0ZUZvcm1TdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2xvc2VTaWRlTWVudSgpO1xuICAgIH1cbiAgICBvbkN1bHR1cmVDaGFuZ2UoY3VsdHVyZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VDdWx0dXJlKGN1bHR1cmUpO1xuICAgIH1cbiAgICBvblNob3dOb3RpZmljYXRpb24oZTogeyB0YWc6IHN0cmluZzsgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7IG5hbWE6IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuTm90aWZpY2F0b2luID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuU2hvd05vdGlmaWNhdGlvblJlbGF0ZWRNbyhlKTtcbiAgICB9XG4gICAgb25Ob3RpZmljYXRpb25JdGVtVmlld2VkKHZpZXdlZE1vOiBOb3RpZmljYXRpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uVmlld2VkLmVtaXQodmlld2VkTW8pO1xuICAgIH1cblxuICAgIG9uUmVtb3ZlTm90aWZpY2F0aW9ucyhlOiB7IGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107IHNpbGVudDogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlTm90aWZpY2F0aW9uLmVtaXQoZSk7XG4gICAgfVxuICAgIG9uT3BlblF1aWNrQWNjZXNzID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZC5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLm9wZW5RdWlja0FjY2Vzc1BhbmVsLmVtaXQoKTtcbiAgICB9O1xuICAgIG9uT3Blbk5vdGlmaWNhdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSB0cnVlO1xuICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb25QYW5lbC5lbWl0KCk7XG4gICAgfTtcbiAgICBvbk5vdGlmaWNhdGlvbkFjdGlvbihlOiB7IGl0ZW06IE5vdGlmaWNhdGlvbkl0ZW07IGJ0bjogTm90aWZpY2F0aW9uQWN0aW9uIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub3RpZmlhdGlvbkFjdGlvbkNsaWNrLmVtaXQoZSk7XG4gICAgfVxuICAgIG9uTGFuZ3VhZ2UgPSAoZSk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBjdWx0dXJlID0gZS5jdXJyZW50VGFyZ2V0LnRleHRDb250ZW50LnRyaW0oKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlQ3VsdHVyZShjdWx0dXJlKTtcbiAgICB9O1xuICAgIG9uTm90aWZpY2F0aW9uTG9hZE1vcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uTG9hZE1vcmUuZW1pdCgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9jbG9zZVNpZGVNZW51KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuUXVpY2tBY2Nlc3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hhbmdlQ3VsdHVyZShjdWx0dXJlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdWx0dXJlQ2hhbmdlZC5lbWl0KGN1bHR1cmUpO1xuICAgIH1cbn1cbiIsIkBpZiAoY3NzVXJsKSB7XG48bGluayB0eXBlPVwidGV4dC9jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgW2hyZWZdPVwiY3NzVXJsXCIgLz5cbn0gQGlmIChjc3NDdXN0b21VcmwpIHtcbjxsaW5rIHR5cGU9XCJ0ZXh0L2Nzc1wiIHJlbD1cInN0eWxlc2hlZXRcIiBbaHJlZl09XCJjc3NDdXN0b21VcmxcIiAvPlxufVxuPGZkLXNoZWxsYmFyXG4gICAgW3NpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgW25nQ2xhc3NdPVwiZGV2aWNlU2l6ZVwiXG4gICAgcm91dGVGb3JtQ2hhbmdlXG4gICAgKHN0YXRlQ2hhbmdlZCk9XCJvblJvdXRlRm9ybVN0YXRlQ2hhbmdlKClcIlxuICAgIFtoYW5kbGVCb2R5Q2xpY2tdPVwidHJ1ZVwiXG4+XG4gICAgQGlmIChzaWRlTWVudVRlbXBsYXRlKSB7XG4gICAgPGZkLXNoZWxsYmFyLWFjdGlvblxuICAgICAgICBbZ2x5cGhdPVwiJ2FwcHMnXCJcbiAgICAgICAgW2xhYmVsXT1cIidRdWljayBBY2Nlc3MnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIm5vdGlmaWNhdGlvbkNvdW50LnVucmVhZCA/PyAwXCJcbiAgICAgICAgW25vdGlmaWNhdGlvbkxhYmVsXT1cIidRdWljayBBY2Nlc3MnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgW2NhbGxiYWNrXT1cIm9uT3BlblF1aWNrQWNjZXNzXCJcbiAgICA+XG4gICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XG4gICAgfSBAaWYgKHNpZGVNZW51VGVtcGxhdGUpIHtcbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLXNoZWxsYmFyLXNpZGUtbmF2XG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIGdseXBoPVwibWVudTJcIlxuICAgICAgICBzdHlsZT1cIndpZHRoOiAyLjc1cmVtXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgaXNPcGVuUXVpY2tBY2Nlc3NDaGFuZ2VkLmVtaXQoIWlzT3BlblF1aWNrQWNjZXNzKVwiXG4gICAgPjwvYnV0dG9uPlxuICAgIH0gQGlmIChsb2dvKSB7XG4gICAgPGZkLXNoZWxsYmFyLWxvZ28+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZEltYWdlXT1cIid1cmwoJyArIChsb2dvPy5GaWxlSWQgfCBwaWNGaWVsZFNyYzogJ0dldFBpY3R1cmVGcm9tRmlsZUluZm8nOm51bGwpICsgJyknXCJcbiAgICAgICAgICAgIGhyZWY9XCIvXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtc2hlbGxiYXJfX2xvZ28gZmQtc2hlbGxiYXJfX2xvZ28tLWltYWdlLXJlcGxhY2VkXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJCYXJzYSBOb3ZpbiBSYXlcIlxuICAgICAgICA+PC9hPlxuICAgIDwvZmQtc2hlbGxiYXItbG9nbz5cbiAgICB9IEBpZiAoIXNldHRpbmdzPy5IaWRlUHJvZHVjdE1lbnUgJiYgcHJvZHVjdE1lbnVJdGVtczEgJiYgcHJvZHVjdE1lbnVJdGVtczEubGVuZ3RoID4gMCkge1xuICAgIDxmZC1wcm9kdWN0LW1lbnUgW2NvbnRyb2xdPVwicHJvZHVjdE1lbnVDb250cm9sXCIgW2Nsb3NlUG9wb3Zlck9uU2VsZWN0XT1cInRydWVcIiBbaXRlbXNdPVwicHJvZHVjdE1lbnVJdGVtczFcIj5cbiAgICA8L2ZkLXByb2R1Y3QtbWVudT5cbiAgICB9XG4gICAgPGZkLXNoZWxsYmFyLXN1YnRpdGxlPiB7eyBzdWJ0aXRsZSB8IGJiYlRyYW5zbGF0ZSB9fXt7IHNob3dWZXJzaW9uID8gYXBwVmVyc2lvbiA6ICcnIH19PC9mZC1zaGVsbGJhci1zdWJ0aXRsZT5cbiAgICBAaWYgKCFoaWRlU2hlbGxiYXJBY3Rpb25zJiYgdXNlciAmJiAodXNlck1lbnU/Lmxlbmd0aCB8fCAhc2V0dGluZ3M/LkhpZGVMYW5ndWFnZSkpIHtcbiAgICA8ZmQtc2hlbGxiYXItYWN0aW9ucyBbdXNlcl09XCJ1c2VyXCIgW3VzZXJNZW51XT1cInVzZXJNZW51XCIgI2xhbmdSZWY+XG4gICAgICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25zOyB0cmFjayBhY3Rpb24pIHtcbiAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxuICAgICAgICAgICAgW2dseXBoXT1cImFjdGlvbi5JY29uXCJcbiAgICAgICAgICAgIFtjYWxsYmFja109XCJhY3Rpb24uQ2FsbGJhY2tcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImFjdGlvbi5MYWJlbFwiXG4gICAgICAgICAgICBub3RpZmljYXRpb25MYWJlbD1cImxvZ2luXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgfSBAaWYgKGRldmljZVNpemUgPT09ICdzJyAmJiB1c2VyTG9nZ2VkSW4gJiYgIXNldHRpbmdzPy5IaWRlTm90aWZpY2F0aW9ucykge1xuICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uXG4gICAgICAgICAgICBbZ2x5cGhdPVwiJ2JlbGwnXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInTm90aWZpY2F0aW9ucycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIm5vdGlmaWNhdGlvbkNvdW50LnVucmVhZCA/PyAwXCJcbiAgICAgICAgICAgIFtub3RpZmljYXRpb25MYWJlbF09XCInTm90aWZpY2F0aW9ucycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgW2NhbGxiYWNrXT1cIm9uQmVsbE5vdGlmaWNhdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XG4gICAgICAgIH0gQGlmICghc2V0dGluZ3M/LkhpZGVOb3RpZmljYXRpb25zICYmIHVzZXJMb2dnZWRJbikge1xuICAgICAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAgICAgWyhpc09wZW4pXT1cImlzT3Blbk5vdGlmaWNhdG9pblwiXG4gICAgICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgICAgICAgICAgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtub0Fycm93XT1cInRydWVcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgIHRpdGxlPVwiTm90aWZpY2F0aW9uIFBvcG92ZXJcIlxuICAgICAgICAgICAgW2ZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbbW9iaWxlXT1cImRldmljZVNpemUgPT09ICdzJ1wiXG4gICAgICAgICAgICAjcG9wb3ZlckNvbXBvbmVudFxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cIidiZWxsJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInTm90aWZpY2F0aW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtub3RpZmljYXRpb25Db3VudF09XCJub3RpZmljYXRpb25Db3VudC51bnJlYWRcIlxuICAgICAgICAgICAgICAgICAgICBbbm90aWZpY2F0aW9uTGFiZWxdPVwiJ05vdGlmaWNhdGlvbiBMYWJlbCdcIlxuICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2tdPVwib25PcGVuTm90aWZpY2F0aW9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxmZC1wb3BvdmVyLWJvZHkgc3R5bGU9XCJtaW4td2lkdGg6IDMyMHB4OyBvdmVyZmxvdy14OiBhdXRvOyBib3gtc2hhZG93OiB2YXIoLS1zYXBDb250ZW50X1NoYWRvdzApXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5vdGlmaWNhdGlvbkdyb3VwVHBsOyBjb250ZXh0OiB7IG5vdGlmaWNhdGlvbkNvdW50OiBub3RpZmljYXRpb25Db3VudCB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgPC9mZC1wb3BvdmVyPlxuICAgICAgICB9IEBpZiAoIXNldHRpbmdzPy5IaWRlTGFuZ3VhZ2UgJiYgZGV2aWNlU2l6ZSAhPT0gJ3MnICYmIG11bHRpTGFuZ3VhZ2VzKSB7XG4gICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb24gW2dseXBoXT1cIid3b3JsZCdcIiBbbGFiZWxdPVwiJ2xhbmd1YWdlJ1wiIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIiAoY2FsbGJhY2spPVwiKG9uTGFuZ3VhZ2UpXCI+XG4gICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxuICAgICAgICB9IEBpZiAoIXNldHRpbmdzPy5IaWRlTGFuZ3VhZ2UgJiYgZGV2aWNlU2l6ZSA9PT0gJ3MnICYmIG11bHRpTGFuZ3VhZ2VzKSB7IEBmb3IgKGN1bHR1cmUgb2YgY3VsdHVyZXMgfCBrZXl2YWx1ZTtcbiAgICAgICAgdHJhY2sgY3VsdHVyZSkge1xuICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uXG4gICAgICAgICAgICBbbGFiZWxdPVwiY3VsdHVyZS52YWx1ZVwiXG4gICAgICAgICAgICBbY2FsbGJhY2tdPVwib25MYW5ndWFnZVwiXG4gICAgICAgICAgICBjbGFzcz1cImN1bHR1cmUtYWJicml2YXRpb25cIlxuICAgICAgICAgICAgW2dseXBoXT1cImN1bHR1cmUua2V5XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmbGFncydcIlxuICAgICAgICA+XG4gICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxuICAgICAgICB9IH0gQGlmIChwcm9kdWN0U3dpdGNoZXI/Lmxlbmd0aCkge1xuICAgICAgICA8ZmQtcHJvZHVjdC1zd2l0Y2g+XG4gICAgICAgICAgICA8ZmQtcHJvZHVjdC1zd2l0Y2gtYm9keSBbcHJvZHVjdHNdPVwicHJvZHVjdFN3aXRjaGVyXCIgW2ZvcmNlTGlzdE1vZGVdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCI+XG4gICAgICAgICAgICA8L2ZkLXByb2R1Y3Qtc3dpdGNoLWJvZHk+XG4gICAgICAgIDwvZmQtcHJvZHVjdC1zd2l0Y2g+XG4gICAgICAgIH1cbiAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbnM+XG4gICAgfVxuPC9mZC1zaGVsbGJhcj5cbkBpZihzaG93RXh0cmFCdXR0b24pe1xuPGRpdlxuICAgIFtjbGFzcy5mZC1zaGVsbGJhci0teGxdPVwiaXNEZXNrdG9wXCJcbiAgICBbY2xhc3MuZmQtc2hlbGxiYXItLW1dPVwiaXNUYWJsZXRcIlxuICAgIFtjbGFzcy5mZC1zaGVsbGJhci0tc109XCJpc01vYmlsZVwiXG4gICAgY2xhc3M9XCJleHRyYS1idXR0b24td3JhcHBlclwiXG4gICAgW2NsYXNzLnNlcnZpY2UtZGVza109XCJpc1NlcnZpY2VEZXNrXCJcbj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJidXR0b25cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbn1cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgICA8YnN1LW1hc2s+PC9ic3UtbWFzaz5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXZcbiAgICAqbmdJZj1cInNpZGVNZW51VGVtcGxhdGVcIlxuICAgIGNsYXNzPVwic2lkZW1lbnUtaCB0dy1maXhlZCB0dy1iZy13aGl0ZSB0dy10cmFuc2l0aW9uLWFsbCB0dy16LVsxMDBdIHR3LXNoYWRvdy0yeGwgdHctb3ZlcmZsb3ctYXV0b1wiXG4gICAgW2NsYXNzLnR3LXctc2NyZWVuXT1cImlzTW9iaWxlXCJcbiAgICBbY2xhc3MuLXR3LXJpZ2h0LWZ1bGxdPVwiaXNNb2JpbGVcIlxuICAgIFtjbGFzcy50dy13LTk2XT1cIiFpc01vYmlsZVwiXG4gICAgW2NsYXNzLi10dy1yaWdodC05Nl09XCIhaXNNb2JpbGVcIlxuICAgIFtjbGFzcy4hdHctcmlnaHQtMF09XCJpc09wZW5RdWlja0FjY2Vzc1wiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVNZW51VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG5AaWYoaXNPcGVuUXVpY2tBY2Nlc3MpIHtcbjxkaXZcbiAgICBjbGFzcz1cInNpZGVtZW51LWggdHctZml4ZWQgdHctcmlnaHQtMCB0dy1iZy1zbGF0ZS04MDAvWy41XSB0dy16LVs5MF0gdHctdy1zY3JlZW4gdHctYmFja2Ryb3AtYmx1ci1zbVwiXG4gICAgKGNsaWNrKT1cImlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZC5lbWl0KGZhbHNlKVwiXG4+PC9kaXY+XG59XG48ZmQtbWVudSAjbWVudT5cbiAgICA8dWwgZmQtbGlzdD5cbiAgICAgICAgQGZvciAoY3VsdHVyZSBvZiBjdWx0dXJlcyB8IGtleXZhbHVlOyB0cmFjayBjdWx0dXJlKSB7XG4gICAgICAgIDxsaSBmZC1saXN0LWl0ZW0+XG4gICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgKGNsaWNrKT1cIm9uQ3VsdHVyZUNoYW5nZShjdWx0dXJlLnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgd2lkdGg9XCIxNHB4XCIgaGVpZ2h0PVwiMTJweFwiIFtzcmNdPVwiJy9hc3NldHMvZmxhZ3MvJyArIGN1bHR1cmUua2V5ICsgJy5wbmcnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdWx0dXJlLWFiYnJpdmF0aW9uXCIgW25nQ2xhc3NdPVwiY3VsdHVyZS5rZXlcIj4ge3sgY3VsdHVyZS5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgPC91bD5cbjwvZmQtbWVudT5cbjxuZy10ZW1wbGF0ZSAjbm90aWZpY2F0aW9uR3JvdXBUcGwgbGV0LW5vdGlmaWNhdGlvbkNvdW50PVwibm90aWZpY2F0aW9uQ291bnRcIj5cbiAgICBAaWYgKCFub3RpZmNhdGlvbkxvYWRlZCAmJiBub3RpZmljYXRpb25Mb2FkaW5nID09PSB0cnVlKSB7XG4gICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiAxMDBweFwiPlxuICAgICAgICA8YnN1LW1hc2sgc2l6ZT1cInNcIj48L2JzdS1tYXNrPlxuICAgIDwvZGl2PlxuICAgIH1cbiAgICA8YnQtbm90aWZpY2F0aW9uLWdyb3VwXG4gICAgICAgIFtub3RpZmljYXRpb25zXT1cIm5vdGlmaWNhdGlvbnNcIlxuICAgICAgICBbbm90aWZpY2F0aW9uQ291bnRdPVwibm90aWZpY2F0aW9uQ291bnRcIlxuICAgICAgICBbbG9hZGluZ109XCJub3RpZmljYXRpb25Mb2FkaW5nID09PSB0cnVlXCJcbiAgICAgICAgKHZpZXdlZCk9XCJvbk5vdGlmaWNhdGlvbkl0ZW1WaWV3ZWQoJGV2ZW50KVwiXG4gICAgICAgIChyZW1vdmUpPVwib25SZW1vdmVOb3RpZmljYXRpb25zKCRldmVudClcIlxuICAgICAgICAoc2hvd0V2ZW50KT1cInBvcG92ZXJDb21wb25lbnQuY2xvc2UoKTsgb25TaG93Tm90aWZpY2F0aW9uKCRldmVudClcIlxuICAgICAgICAoYWN0aW9uQ2xpY2spPVwicG9wb3ZlckNvbXBvbmVudC5jbG9zZSgpOyBvbk5vdGlmaWNhdGlvbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgKGxvYWRNb3JlKT1cIm9uTm90aWZpY2F0aW9uTG9hZE1vcmUoKVwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgID48L2J0LW5vdGlmaWNhdGlvbi1ncm91cD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjbm90aWZpY2F0aW9uc0RpYWxvZz5cbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIj5cbiAgICAgICAgPGZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgICAgICA8aDEgaWQ9XCJmZC1kaWFsb2ctaGVhZGVyLTEwXCIgZmQtdGl0bGU+e3sgJ05vdGlmaWNhdGlvbicgfCBiYmJUcmFuc2xhdGUgfX08L2gxPlxuICAgICAgICAgICAgPGJ1dHRvbiBmZC1kaWFsb2ctY2xvc2UtYnV0dG9uIChjbGljayk9XCJkaWFsb2cuZGlzbWlzcygpXCI+PC9idXR0b24+XG4gICAgICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5IGNsYXNzPVwibW9iaWxlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub3RpZmljYXRpb25Hcm91cFRwbDsgY29udGV4dDogeyBub3RpZmljYXRpb25Db3VudDogbm90aWZpY2F0aW9uQ291bnQgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XG4gICAgPC9mZC1kaWFsb2c+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2Etc2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9iYXJzYS1zaGVsbGJhci9iYXJzYS1zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2JhcnNhLXNoZWxsYmFyL2JhcnNhLXNoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUNILGlCQUFpQixFQU1wQixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFDSCxhQUFhLEVBSWIsV0FBVyxFQU1kLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQjlCLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBMEVyRCxZQUNZLG9CQUF5QyxFQUN6QyxjQUE2QixFQUM3QixPQUFlLEVBQ2YsY0FBNkIsRUFDWCxTQUFtQixFQUNqQixVQUFrQjtRQUU5QyxLQUFLLEVBQUUsQ0FBQztRQVBBLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQ1gsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNqQixlQUFVLEdBQVYsVUFB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LGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUV1QixpQkFBaUI7c0JBQTlDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNzQixnQkFBZ0I7c0JBQWpFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUN1QixvQkFBb0I7c0JBQTFGLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBDb21ib2JveENvbXBvbmVudCxcbiAgICBEaWFsb2dTZXJ2aWNlLFxuICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgUHJvZHVjdFN3aXRjaEl0ZW0sXG4gICAgU2hlbGxiYXJNZW51SXRlbSxcbiAgICBTaGVsbGJhclVzZXJcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgRmlsZVBpY3R1cmVJbmZvTW9kZWwsXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcbiAgICBBUFBfVkVSU0lPTixcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIE5vdGlmaWNhdGlvbkl0ZW0sXG4gICAgTm90aWZpY2F0aW9uQWN0aW9uLFxuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBQb3J0YWxTZXJ2aWNlXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmludGVyZmFjZSBTaGVsbGJhclNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBzdWJ0aXRsZTogc3RyaW5nO1xuICAgIGNhbGNTdWJ0aXRsZTogc3RyaW5nO1xuICAgIGxvZ286IEZpbGVQaWN0dXJlSW5mb01vZGVsO1xuICAgIFByb2R1Y3RTd2l0Y2hJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBQcm9kdWN0TWVudUl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgIFVzZXJNZW51SXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgQWN0aW9uSXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnQtYmFyc2Etc2hlbGxiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS1zaGVsbGJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2Etc2hlbGxiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVNoZWxsYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgY3NzQ3VzdG9tVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsO1xuICAgIEBJbnB1dCgpIGNzc1VybDogU2FmZVJlc291cmNlVXJsIHwgbnVsbDtcbiAgICBASW5wdXQoKSBjc3NWYXJpYWJsZVVybDogU2FmZVJlc291cmNlVXJsIHwgbnVsbDtcbiAgICBASW5wdXQoKSBtdWx0aUxhbmd1YWdlczogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2V0dGluZ3M6IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgQElucHV0KCkgcHJvZHVjdE1lbnVDb250cm9sOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIGN1bHR1cmVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIEBJbnB1dCgpIHNoZWxsYmFyRGF0YTogU2hlbGxiYXJTZXR0aW5nO1xuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbkNvdW50OiB7IHVucmVhZDogbnVtYmVyOyBhbGw6IG51bWJlciB9O1xuICAgIEBJbnB1dCgpIG5vdGlmY2F0aW9uTG9hZGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbkxvYWRpbmc6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdO1xuICAgIEBJbnB1dCgpIHByb2R1Y3RNZW51SXRlbXMxOiBTaGVsbGJhck1lbnVJdGVtW107XG4gICAgQElucHV0KCkgYm9keUNsaWNrOiBzdHJpbmc7XG4gICAgQElucHV0KCkgbG9nbzogeyBGaWxlSWQ6IHN0cmluZyB9O1xuICAgIEBJbnB1dCgpIGFjdGlvbnM6IEFycmF5PE1ldGFvYmplY3REYXRhTW9kZWw+O1xuICAgIEBJbnB1dCgpIHVzZXJNZW51OiB7IHRleHQ6IHN0cmluZzsgY2FsbGJhY2s6ICgpID0+IHZvaWQgfVtdO1xuICAgIEBJbnB1dCgpIHByb2R1Y3RTd2l0Y2hlcjogUHJvZHVjdFN3aXRjaEl0ZW1bXTtcbiAgICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlzTW9iaWxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVTaGVsbGJhckFjdGlvbnM6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd0V4dHJhQnV0dG9uOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzVGFibGV0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHVzZXJQcm9maWxlSW1hZ2VVcmw6IHN0cmluZyB8IG51bGw7XG4gICAgQElucHV0KCkgaXNEZXNrdG9wOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGlzU2VydmljZURlc2sgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBpc09wZW5RdWlja0FjY2VzcztcbiAgICBASW5wdXQoKSBzaWRlTWVudVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbDtcblxuICAgIEBPdXRwdXQoKSBpc09wZW5RdWlja0FjY2Vzc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KGZhbHNlKTtcbiAgICBAT3V0cHV0KCkgb3Blbk5vdGlmaWNhdGlvblBhbmVsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBvcGVuUXVpY2tBY2Nlc3NQYW5lbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgY3VsdHVyZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgbm90aWZpY2F0aW9uTG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHJlbW92ZU5vdGlmaWNhdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdOyBzaWxlbnQ6IGJvb2xlYW4gfT4oKTtcbiAgICBAT3V0cHV0KCkgbm90aWZpYXRpb25BY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtOiBOb3RpZmljYXRpb25JdGVtOyBidG46IE5vdGlmaWNhdGlvbkFjdGlvbiB9PigpO1xuICAgIEBPdXRwdXQoKSBub3RpZmljYXRpb25WaWV3ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5vdGlmaWNhdGlvbkl0ZW0+KCk7XG5cbiAgICBAVmlld0NoaWxkKENvbWJvYm94Q29tcG9uZW50KSBjb21ib2JveENvbXBvbmVudDogQ29tYm9ib3hDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgncG9wb3ZlckNvbXBvbmVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwb3BvdmVyQ29tcG9uZW50OiBQb3BvdmVyQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ25vdGlmaWNhdGlvbnNEaWFsb2cnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgX25vdGlmaWNhdGlvbnNEaWFsb2c6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcml2YXRlIF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgQXJyYXkgPSBBcnJheTtcbiAgICBpc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcblxuICAgIHVzZXI6IFNoZWxsYmFyVXNlciA9IHtcbiAgICAgICAgaW5pdGlhbHM6ICdXVycsXG4gICAgICAgIGNvbG9yQWNjZW50OiAxXG4gICAgfTtcbiAgICBzZWFyY2hUZXJtcyA9IFsn2YXYsdiu2LXbjCcsICfZhdin2YXZiNix24zYqicsICfYqtuM2qnYqicsICfZvtix2YjamNmHJ107XG4gICAgc2VhcmNoVGVybTogc3RyaW5nO1xuICAgIGFjdGlvbnMkOiBPYnNlcnZhYmxlPFNoZWxsYmFyTWVudUl0ZW1bXT47XG5cbiAgICBzaG93VmVyc2lvbiA9IGZhbHNlO1xuXG4gICAgX3ZpZXdlZE5vdGlmaWNhdGlvbnMkID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uSXRlbT4oKTtcbiAgICBvbkJlbGxOb3RpZmljYXRpb24gPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuX2RvY3VtZW50Py5ib2R5ICYmIHRoaXMuX2RvY3VtZW50LmJvZHkuY2xpY2soKTtcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZVxuICAgICAgICAgICAgLm9wZW4odGhpcy5fbm90aWZpY2F0aW9uc0RpYWxvZywge1xuICAgICAgICAgICAgICAgIG1vYmlsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiB0cnVlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFmdGVyTG9hZGVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uUGFuZWwuZW1pdCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfTtcbiAgICBfdmlld2VkTm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdID0gW107XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX25vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIEBJbmplY3QoQVBQX1ZFUlNJT04pIHB1YmxpYyBhcHBWZXJzaW9uOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zaG93VmVyc2lvbiA9IGZhbHNlO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBjb25zdCB7IHVzZXJQcm9maWxlSW1hZ2VVcmwgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmICh1c2VyUHJvZmlsZUltYWdlVXJsKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXIuaW1hZ2UgPSB1c2VyUHJvZmlsZUltYWdlVXJsLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvblJvdXRlRm9ybVN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jbG9zZVNpZGVNZW51KCk7XG4gICAgfVxuICAgIG9uQ3VsdHVyZUNoYW5nZShjdWx0dXJlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XG4gICAgfVxuICAgIG9uU2hvd05vdGlmaWNhdGlvbihlOiB7IHRhZzogc3RyaW5nOyBtbzogTWV0YW9iamVjdERhdGFNb2RlbDsgbmFtYTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5TaG93Tm90aWZpY2F0aW9uUmVsYXRlZE1vKGUpO1xuICAgIH1cbiAgICBvbk5vdGlmaWNhdGlvbkl0ZW1WaWV3ZWQodmlld2VkTW86IE5vdGlmaWNhdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25WaWV3ZWQuZW1pdCh2aWV3ZWRNbyk7XG4gICAgfVxuXG4gICAgb25SZW1vdmVOb3RpZmljYXRpb25zKGU6IHsgaXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTsgc2lsZW50OiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVOb3RpZmljYXRpb24uZW1pdChlKTtcbiAgICB9XG4gICAgb25PcGVuUXVpY2tBY2Nlc3MgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaXNPcGVuUXVpY2tBY2Nlc3NDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgIHRoaXMub3BlblF1aWNrQWNjZXNzUGFuZWwuZW1pdCgpO1xuICAgIH07XG4gICAgb25PcGVuTm90aWZpY2F0aW9uID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IHRydWU7XG4gICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvblBhbmVsLmVtaXQoKTtcbiAgICB9O1xuICAgIG9uTm90aWZpY2F0aW9uQWN0aW9uKGU6IHsgaXRlbTogTm90aWZpY2F0aW9uSXRlbTsgYnRuOiBOb3RpZmljYXRpb25BY3Rpb24gfSk6IHZvaWQge1xuICAgICAgICB0aGlzLm5vdGlmaWF0aW9uQWN0aW9uQ2xpY2suZW1pdChlKTtcbiAgICB9XG4gICAgb25MYW5ndWFnZSA9IChlKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IGN1bHR1cmUgPSBlLmN1cnJlbnRUYXJnZXQudGV4dENvbnRlbnQudHJpbSgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VDdWx0dXJlKGN1bHR1cmUpO1xuICAgIH07XG4gICAgb25Ob3RpZmljYXRpb25Mb2FkTW9yZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25Mb2FkTW9yZS5lbWl0KCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2Nsb3NlU2lkZU1lbnUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc09wZW5RdWlja0FjY2Vzcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNPcGVuUXVpY2tBY2Nlc3NDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICBwcml2YXRlIF9jaGFuZ2VDdWx0dXJlKGN1bHR1cmU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1bHR1cmVDaGFuZ2VkLmVtaXQoY3VsdHVyZSk7XG4gICAgfVxufVxuIiwiQGlmIChjc3NWYXJpYWJsZVVybCkge1xuPGxpbmsgdHlwZT1cInRleHQvY3NzXCIgcmVsPVwic3R5bGVzaGVldFwiIFtocmVmXT1cImNzc1ZhcmlhYmxlVXJsXCIgLz5cbn0gQGlmIChjc3NVcmwpIHtcbjxsaW5rIHR5cGU9XCJ0ZXh0L2Nzc1wiIHJlbD1cInN0eWxlc2hlZXRcIiBbaHJlZl09XCJjc3NVcmxcIiAvPlxufSBAaWYgKGNzc0N1c3RvbVVybCkge1xuPGxpbmsgdHlwZT1cInRleHQvY3NzXCIgcmVsPVwic3R5bGVzaGVldFwiIFtocmVmXT1cImNzc0N1c3RvbVVybFwiIC8+XG59XG48ZmQtc2hlbGxiYXJcbiAgICBbc2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICBbbmdDbGFzc109XCJkZXZpY2VTaXplXCJcbiAgICByb3V0ZUZvcm1DaGFuZ2VcbiAgICAoc3RhdGVDaGFuZ2VkKT1cIm9uUm91dGVGb3JtU3RhdGVDaGFuZ2UoKVwiXG4gICAgW2hhbmRsZUJvZHlDbGlja109XCJ0cnVlXCJcbj5cbiAgICBAaWYgKHNpZGVNZW51VGVtcGxhdGUpIHtcbiAgICA8ZmQtc2hlbGxiYXItYWN0aW9uXG4gICAgICAgIFtnbHlwaF09XCInYXBwcydcIlxuICAgICAgICBbbGFiZWxdPVwiJ1F1aWNrIEFjY2VzcycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICBbbm90aWZpY2F0aW9uQ291bnRdPVwibm90aWZpY2F0aW9uQ291bnQudW5yZWFkID8/IDBcIlxuICAgICAgICBbbm90aWZpY2F0aW9uTGFiZWxdPVwiJ1F1aWNrIEFjY2VzcycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICBbY2FsbGJhY2tdPVwib25PcGVuUXVpY2tBY2Nlc3NcIlxuICAgID5cbiAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICB9IEBpZiAoc2lkZU1lbnVUZW1wbGF0ZSkge1xuICAgIDxidXR0b25cbiAgICAgICAgZmQtc2hlbGxiYXItc2lkZS1uYXZcbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgZ2x5cGg9XCJtZW51MlwiXG4gICAgICAgIHN0eWxlPVwid2lkdGg6IDIuNzVyZW1cIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBpc09wZW5RdWlja0FjY2Vzc0NoYW5nZWQuZW1pdCghaXNPcGVuUXVpY2tBY2Nlc3MpXCJcbiAgICA+PC9idXR0b24+XG4gICAgfSBAaWYgKGxvZ28pIHtcbiAgICA8ZmQtc2hlbGxiYXItbG9nbz5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kSW1hZ2VdPVwiJ3VybCgnICsgKGxvZ28/LkZpbGVJZCB8IHBpY0ZpZWxkU3JjOiAnR2V0UGljdHVyZUZyb21GaWxlSW5mbyc6bnVsbCkgKyAnKSdcIlxuICAgICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1zaGVsbGJhcl9fbG9nbyBmZC1zaGVsbGJhcl9fbG9nby0taW1hZ2UtcmVwbGFjZWRcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkJhcnNhIE5vdmluIFJheVwiXG4gICAgICAgID48L2E+XG4gICAgPC9mZC1zaGVsbGJhci1sb2dvPlxuICAgIH0gQGlmICghc2V0dGluZ3M/LkhpZGVQcm9kdWN0TWVudSAmJiBwcm9kdWN0TWVudUl0ZW1zMSAmJiBwcm9kdWN0TWVudUl0ZW1zMS5sZW5ndGggPiAwKSB7XG4gICAgPGZkLXByb2R1Y3QtbWVudSBbY29udHJvbF09XCJwcm9kdWN0TWVudUNvbnRyb2xcIiBbY2xvc2VQb3BvdmVyT25TZWxlY3RdPVwidHJ1ZVwiIFtpdGVtc109XCJwcm9kdWN0TWVudUl0ZW1zMVwiPlxuICAgIDwvZmQtcHJvZHVjdC1tZW51PlxuICAgIH1cbiAgICA8ZmQtc2hlbGxiYXItc3VidGl0bGU+IHt7IHN1YnRpdGxlIHwgYmJiVHJhbnNsYXRlIH19e3sgc2hvd1ZlcnNpb24gPyBhcHBWZXJzaW9uIDogJycgfX08L2ZkLXNoZWxsYmFyLXN1YnRpdGxlPlxuICAgIEBpZiAoIWhpZGVTaGVsbGJhckFjdGlvbnMmJiB1c2VyICYmICh1c2VyTWVudT8ubGVuZ3RoIHx8ICFzZXR0aW5ncz8uSGlkZUxhbmd1YWdlKSkge1xuICAgIDxmZC1zaGVsbGJhci1hY3Rpb25zIFt1c2VyXT1cInVzZXJcIiBbdXNlck1lbnVdPVwidXNlck1lbnVcIiAjbGFuZ1JlZj5cbiAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnM7IHRyYWNrIGFjdGlvbikge1xuICAgICAgICA8ZmQtc2hlbGxiYXItYWN0aW9uXG4gICAgICAgICAgICBbZ2x5cGhdPVwiYWN0aW9uLkljb25cIlxuICAgICAgICAgICAgW2NhbGxiYWNrXT1cImFjdGlvbi5DYWxsYmFja1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiYWN0aW9uLkxhYmVsXCJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbkxhYmVsPVwibG9naW5cIlxuICAgICAgICA+XG4gICAgICAgIDwvZmQtc2hlbGxiYXItYWN0aW9uPlxuICAgICAgICB9IEBpZiAoZGV2aWNlU2l6ZSA9PT0gJ3MnICYmIHVzZXJMb2dnZWRJbiAmJiAhc2V0dGluZ3M/LkhpZGVOb3RpZmljYXRpb25zKSB7XG4gICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb25cbiAgICAgICAgICAgIFtnbHlwaF09XCInYmVsbCdcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidOb3RpZmljYXRpb25zJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbbm90aWZpY2F0aW9uQ291bnRdPVwibm90aWZpY2F0aW9uQ291bnQudW5yZWFkID8/IDBcIlxuICAgICAgICAgICAgW25vdGlmaWNhdGlvbkxhYmVsXT1cIidOb3RpZmljYXRpb25zJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbY2FsbGJhY2tdPVwib25CZWxsTm90aWZpY2F0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgfSBAaWYgKCFzZXR0aW5ncz8uSGlkZU5vdGlmaWNhdGlvbnMgJiYgdXNlckxvZ2dlZEluKSB7XG4gICAgICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICAgICBbKGlzT3BlbildPVwiaXNPcGVuTm90aWZpY2F0b2luXCJcbiAgICAgICAgICAgIFt0cmlnZ2Vyc109XCJbXVwiXG4gICAgICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICAgICAgW25vQXJyb3ddPVwidHJ1ZVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgdGl0bGU9XCJOb3RpZmljYXRpb24gUG9wb3ZlclwiXG4gICAgICAgICAgICBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFttb2JpbGVdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCJcbiAgICAgICAgICAgICNwb3BvdmVyQ29tcG9uZW50XG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvblxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ2JlbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidOb3RpZmljYXRpb24nXCJcbiAgICAgICAgICAgICAgICAgICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIm5vdGlmaWNhdGlvbkNvdW50LnVucmVhZFwiXG4gICAgICAgICAgICAgICAgICAgIFtub3RpZmljYXRpb25MYWJlbF09XCInTm90aWZpY2F0aW9uIExhYmVsJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFja109XCJvbk9wZW5Ob3RpZmljYXRpb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2ZkLXNoZWxsYmFyLWFjdGlvbj5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keSBzdHlsZT1cIm1pbi13aWR0aDogMzIwcHg7IG92ZXJmbG93LXg6IGF1dG87IGJveC1zaGFkb3c6IHZhcigtLXNhcENvbnRlbnRfU2hhZG93MClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibm90aWZpY2F0aW9uR3JvdXBUcGw7IGNvbnRleHQ6IHsgbm90aWZpY2F0aW9uQ291bnQ6IG5vdGlmaWNhdGlvbkNvdW50IH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICA8L2ZkLXBvcG92ZXI+XG4gICAgICAgIH0gQGlmICghc2V0dGluZ3M/LkhpZGVMYW5ndWFnZSAmJiBkZXZpY2VTaXplICE9PSAncycgJiYgbXVsdGlMYW5ndWFnZXMpIHtcbiAgICAgICAgPGZkLXNoZWxsYmFyLWFjdGlvbiBbZ2x5cGhdPVwiJ3dvcmxkJ1wiIFtsYWJlbF09XCInbGFuZ3VhZ2UnXCIgW2ZkTWVudVRyaWdnZXJdPVwibWVudVwiIChjYWxsYmFjayk9XCIob25MYW5ndWFnZSlcIj5cbiAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XG4gICAgICAgIH0gQGlmICghc2V0dGluZ3M/LkhpZGVMYW5ndWFnZSAmJiBkZXZpY2VTaXplID09PSAncycgJiYgbXVsdGlMYW5ndWFnZXMpIHsgQGZvciAoY3VsdHVyZSBvZiBjdWx0dXJlcyB8IGtleXZhbHVlO1xuICAgICAgICB0cmFjayBjdWx0dXJlKSB7XG4gICAgICAgIDxmZC1zaGVsbGJhci1hY3Rpb25cbiAgICAgICAgICAgIFtsYWJlbF09XCJjdWx0dXJlLnZhbHVlXCJcbiAgICAgICAgICAgIFtjYWxsYmFja109XCJvbkxhbmd1YWdlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3VsdHVyZS1hYmJyaXZhdGlvblwiXG4gICAgICAgICAgICBbZ2x5cGhdPVwiY3VsdHVyZS5rZXlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZsYWdzJ1wiXG4gICAgICAgID5cbiAgICAgICAgPC9mZC1zaGVsbGJhci1hY3Rpb24+XG4gICAgICAgIH0gfSBAaWYgKHByb2R1Y3RTd2l0Y2hlcj8ubGVuZ3RoKSB7XG4gICAgICAgIDxmZC1wcm9kdWN0LXN3aXRjaD5cbiAgICAgICAgICAgIDxmZC1wcm9kdWN0LXN3aXRjaC1ib2R5IFtwcm9kdWN0c109XCJwcm9kdWN0U3dpdGNoZXJcIiBbZm9yY2VMaXN0TW9kZV09XCJkZXZpY2VTaXplID09PSAncydcIj5cbiAgICAgICAgICAgIDwvZmQtcHJvZHVjdC1zd2l0Y2gtYm9keT5cbiAgICAgICAgPC9mZC1wcm9kdWN0LXN3aXRjaD5cbiAgICAgICAgfVxuICAgIDwvZmQtc2hlbGxiYXItYWN0aW9ucz5cbiAgICB9XG48L2ZkLXNoZWxsYmFyPlxuQGlmKHNob3dFeHRyYUJ1dHRvbil7XG48ZGl2XG4gICAgW2NsYXNzLmZkLXNoZWxsYmFyLS14bF09XCJpc0Rlc2t0b3BcIlxuICAgIFtjbGFzcy5mZC1zaGVsbGJhci0tbV09XCJpc1RhYmxldFwiXG4gICAgW2NsYXNzLmZkLXNoZWxsYmFyLS1zXT1cImlzTW9iaWxlXCJcbiAgICBjbGFzcz1cImV4dHJhLWJ1dHRvbi13cmFwcGVyXCJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxuPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImJ1dHRvblwiPjwvbmctY29udGVudD5cbjwvZGl2PlxufVxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgIDxic3UtbWFzaz48L2JzdS1tYXNrPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdlxuICAgICpuZ0lmPVwic2lkZU1lbnVUZW1wbGF0ZVwiXG4gICAgY2xhc3M9XCJzaWRlbWVudS1oIHR3LWZpeGVkIHR3LWJnLXdoaXRlIHR3LXRyYW5zaXRpb24tYWxsIHR3LXotWzEwMF0gdHctc2hhZG93LTJ4bCB0dy1vdmVyZmxvdy1hdXRvXCJcbiAgICBbY2xhc3MudHctdy1zY3JlZW5dPVwiaXNNb2JpbGVcIlxuICAgIFtjbGFzcy4tdHctcmlnaHQtZnVsbF09XCJpc01vYmlsZVwiXG4gICAgW2NsYXNzLnR3LXctOTZdPVwiIWlzTW9iaWxlXCJcbiAgICBbY2xhc3MuLXR3LXJpZ2h0LTk2XT1cIiFpc01vYmlsZVwiXG4gICAgW2NsYXNzLiF0dy1yaWdodC0wXT1cImlzT3BlblF1aWNrQWNjZXNzXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZU1lbnVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbkBpZihpc09wZW5RdWlja0FjY2Vzcykge1xuPGRpdlxuICAgIGNsYXNzPVwic2lkZW1lbnUtaCB0dy1maXhlZCB0dy1yaWdodC0wIHR3LWJnLXNsYXRlLTgwMC9bLjVdIHR3LXotWzkwXSB0dy13LXNjcmVlbiB0dy1iYWNrZHJvcC1ibHVyLXNtXCJcbiAgICAoY2xpY2spPVwiaXNPcGVuUXVpY2tBY2Nlc3NDaGFuZ2VkLmVtaXQoZmFsc2UpXCJcbj48L2Rpdj5cbn1cbjxmZC1tZW51ICNtZW51PlxuICAgIDx1bCBmZC1saXN0PlxuICAgICAgICBAZm9yIChjdWx0dXJlIG9mIGN1bHR1cmVzIHwga2V5dmFsdWU7IHRyYWNrIGN1bHR1cmUpIHtcbiAgICAgICAgPGxpIGZkLWxpc3QtaXRlbT5cbiAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayAoY2xpY2spPVwib25DdWx0dXJlQ2hhbmdlKGN1bHR1cmUudmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGltZyB3aWR0aD1cIjE0cHhcIiBoZWlnaHQ9XCIxMnB4XCIgW3NyY109XCInL2Fzc2V0cy9mbGFncy8nICsgY3VsdHVyZS5rZXkgKyAnLnBuZydcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1bHR1cmUtYWJicml2YXRpb25cIiBbbmdDbGFzc109XCJjdWx0dXJlLmtleVwiPiB7eyBjdWx0dXJlLmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICA8L3VsPlxuPC9mZC1tZW51PlxuPG5nLXRlbXBsYXRlICNub3RpZmljYXRpb25Hcm91cFRwbCBsZXQtbm90aWZpY2F0aW9uQ291bnQ9XCJub3RpZmljYXRpb25Db3VudFwiPlxuICAgIEBpZiAoIW5vdGlmY2F0aW9uTG9hZGVkICYmIG5vdGlmaWNhdGlvbkxvYWRpbmcgPT09IHRydWUpIHtcbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMHB4XCI+XG4gICAgICAgIDxic3UtbWFzayBzaXplPVwic1wiPjwvYnN1LW1hc2s+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxidC1ub3RpZmljYXRpb24tZ3JvdXBcbiAgICAgICAgW25vdGlmaWNhdGlvbnNdPVwibm90aWZpY2F0aW9uc1wiXG4gICAgICAgIFtub3RpZmljYXRpb25Db3VudF09XCJub3RpZmljYXRpb25Db3VudFwiXG4gICAgICAgIFtsb2FkaW5nXT1cIm5vdGlmaWNhdGlvbkxvYWRpbmcgPT09IHRydWVcIlxuICAgICAgICAodmlld2VkKT1cIm9uTm90aWZpY2F0aW9uSXRlbVZpZXdlZCgkZXZlbnQpXCJcbiAgICAgICAgKHJlbW92ZSk9XCJvblJlbW92ZU5vdGlmaWNhdGlvbnMoJGV2ZW50KVwiXG4gICAgICAgIChzaG93RXZlbnQpPVwicG9wb3ZlckNvbXBvbmVudC5jbG9zZSgpOyBvblNob3dOb3RpZmljYXRpb24oJGV2ZW50KVwiXG4gICAgICAgIChhY3Rpb25DbGljayk9XCJwb3BvdmVyQ29tcG9uZW50LmNsb3NlKCk7IG9uTm90aWZpY2F0aW9uQWN0aW9uKCRldmVudClcIlxuICAgICAgICAobG9hZE1vcmUpPVwib25Ob3RpZmljYXRpb25Mb2FkTW9yZSgpXCJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgPjwvYnQtbm90aWZpY2F0aW9uLWdyb3VwPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNub3RpZmljYXRpb25zRGlhbG9nPlxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiPlxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICAgIDxoMSBpZD1cImZkLWRpYWxvZy1oZWFkZXItMTBcIiBmZC10aXRsZT57eyAnTm90aWZpY2F0aW9uJyB8IGJiYlRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgICAgICAgICA8YnV0dG9uIGZkLWRpYWxvZy1jbG9zZS1idXR0b24gKGNsaWNrKT1cImRpYWxvZy5kaXNtaXNzKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHkgY2xhc3M9XCJtb2JpbGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5vdGlmaWNhdGlvbkdyb3VwVHBsOyBjb250ZXh0OiB7IG5vdGlmaWNhdGlvbkNvdW50OiBub3RpZmljYXRpb25Db3VudCB9XCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1kaWFsb2ctYm9keT5cbiAgICA8L2ZkLWRpYWxvZz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -121,6 +121,7 @@ export class ShellbarComponent extends BaseComponent {
|
|
|
121
121
|
this.isServiceDesk = BarsaApi.LoginFormData.IsServiceDesk;
|
|
122
122
|
this.cultures = BarsaApi.LoginFormData.Cultures;
|
|
123
123
|
this.cssUrl$ = this._portalService.cssUrl$;
|
|
124
|
+
this.cssVariableUrl$ = this._portalService.cssVariableUrl$;
|
|
124
125
|
this.cssCustomUrl$ = this._portalService.cssCustomUrl$;
|
|
125
126
|
this.loginRouterLink$ = this._portalService.loginRoute$;
|
|
126
127
|
this.notificationsCount$ = this._notificationService.notificationCount$;
|
|
@@ -210,11 +211,11 @@ export class ShellbarComponent extends BaseComponent {
|
|
|
210
211
|
BarsaApi.Bw.NavigateTo('/');
|
|
211
212
|
}
|
|
212
213
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ShellbarComponent, deps: [{ token: i1.BbbTranslatePipe }, { token: i1.PortalService }, { token: i1.BreadcrumbService }, { token: i2.TilesService }, { token: i0.ChangeDetectorRef }, { token: i3.DomSanitizer }, { token: i1.NotificationService }, { token: APP_VERSION }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
213
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ShellbarComponent, selector: "bt-shellbar", viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notifiationCountLoaded$ | async; as notifiationCountLoaded) { @if\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"cssUrl$ | async\"\n [userProfileImageUrl]=\"userProfileImageUrl$ | async\"\n [cssCustomUrl]=\"cssCustomUrl$ | async\"\n [userLoggedIn]=\"true\"\n [deviceSize]=\"deviceSize\"\n [shellbarData]=\"shellbarData\"\n [productMenuControl]=\"productMenuControl\"\n [settings]=\"settings\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [multiLanguages]=\"multiLanguages\"\n [notificationCount]=\"(notificationsCount$ | async)!!\"\n [notifications]=\"(notifications$ | async) ?? []\"\n [notifcationLoaded]=\"notifcationLoaded\"\n [notificationLoading]=\"(notificationLoading$ | async) === true\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [isServiceDesk]=\"isServiceDesk\"\n [sideMenuTemplate]=\"QuickAccessTemplate\"\n [productMenuItems1]=\"productMenuItems1\"\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\n (cultureChanged)=\"onCultureChanged($event)\"\n (notificationViewed)=\"onNotificationItemViewed($event)\"\n (notifiationActionClick)=\"onNotificationAction($event)\"\n (removeNotification)=\"onRemoveNotifications($event)\"\n (notificationLoadMore)=\"onNotificationLoadMore()\"\n (openNotificationPanel)=\"onHandleOpenNotificationPanel()\"\n>\n</bt-barsa-shellbar>\n} } } } @else { @if (notificationsCount$ | async; as notificationCount) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"''\"\n [cssCustomUr]=\"''\"\n [userLoggedIn]=\"false\"\n [multiLanguages]=\"multiLanguages\"\n [userMenu]=\"userMenu\"\n [logo]=\"logo\"\n [productMenuItems1]=\"productMenuItems1\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [shellbarData]=\"shellbarData\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [isServiceDesk]=\"isServiceDesk\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productMenuControl]=\"productMenuControl\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [settings]=\"settings\"\n [notificationCount]=\"{ unread: 0, all: 0 }\"\n [notifications]=\"[]\"\n [notifcationLoaded]=\"true\"\n [notificationLoading]=\"false\"\n [hideShellbarActions]=\"true\"\n [showExtraButton]=\"true\"\n [cultures]=\"cultures\"\n [productMenuItems1]=\"productMenuItems1\"\n (cultureChanged)=\"onCultureChanged($event)\"\n>\n @for(btn of userMenu;track btn){\n <button\n class=\"extra_btn\"\n fd-button\n [label]=\"btn.text\"\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\n fdType=\"emphasized\"\n (click)=\"btn.callback()\"\n ></button>\n }\n</bt-barsa-shellbar>\n} }\n<ng-template #QuickAccessTemplate>\n @if ((notificationLoading$ | async) === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bnrc-report-container *ngIf=\"sidebarSettings\" [settings]=\"sidebarSettings\"> </bnrc-report-container>\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\n</ng-template>\n", styles: [":host{display:block;position:relative}:host .extra_btn{background-color:transparent;border-color:transparent}:host #menu_btn{background-color:transparent;border-color:transparent}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i1.ReportContainerComponent, selector: "bnrc-report-container", inputs: ["settings"] }, { kind: "component", type: i6.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i7.BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: ["cssCustomUrl", "cssUrl", "multiLanguages", "userLoggedIn", "settings", "productMenuControl", "deviceSize", "cultures", "shellbarData", "notificationCount", "notifcationLoaded", "notificationLoading", "notifications", "productMenuItems1", "bodyClick", "logo", "actions", "userMenu", "productSwitcher", "subtitle", "isMobile", "hideShellbarActions", "showExtraButton", "isTablet", "userProfileImageUrl", "isDesktop", "isServiceDesk", "isOpenQuickAccess", "sideMenuTemplate"], outputs: ["isOpenQuickAccessChanged", "openNotificationPanel", "openQuickAccessPanel", "cultureChanged", "notificationLoadMore", "removeNotification", "notifiationActionClick", "notificationViewed"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
214
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ShellbarComponent, selector: "bt-shellbar", viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notifiationCountLoaded$ | async; as notifiationCountLoaded) { @if\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"cssUrl$ | async\"\n [cssVariableUrl]=\"cssVariableUrl$ | async\"\n [userProfileImageUrl]=\"userProfileImageUrl$ | async\"\n [cssCustomUrl]=\"cssCustomUrl$ | async\"\n [userLoggedIn]=\"true\"\n [deviceSize]=\"deviceSize\"\n [shellbarData]=\"shellbarData\"\n [productMenuControl]=\"productMenuControl\"\n [settings]=\"settings\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [multiLanguages]=\"multiLanguages\"\n [notificationCount]=\"(notificationsCount$ | async)!!\"\n [notifications]=\"(notifications$ | async) ?? []\"\n [notifcationLoaded]=\"notifcationLoaded\"\n [notificationLoading]=\"(notificationLoading$ | async) === true\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [isServiceDesk]=\"isServiceDesk\"\n [sideMenuTemplate]=\"QuickAccessTemplate\"\n [productMenuItems1]=\"productMenuItems1\"\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\n (cultureChanged)=\"onCultureChanged($event)\"\n (notificationViewed)=\"onNotificationItemViewed($event)\"\n (notifiationActionClick)=\"onNotificationAction($event)\"\n (removeNotification)=\"onRemoveNotifications($event)\"\n (notificationLoadMore)=\"onNotificationLoadMore()\"\n (openNotificationPanel)=\"onHandleOpenNotificationPanel()\"\n>\n</bt-barsa-shellbar>\n} } } } @else { @if (notificationsCount$ | async; as notificationCount) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"''\"\n [cssVariableUrl]=\"''\"\n [cssCustomUr]=\"''\"\n [userLoggedIn]=\"false\"\n [multiLanguages]=\"multiLanguages\"\n [userMenu]=\"userMenu\"\n [logo]=\"logo\"\n [productMenuItems1]=\"productMenuItems1\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [shellbarData]=\"shellbarData\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [isServiceDesk]=\"isServiceDesk\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productMenuControl]=\"productMenuControl\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [settings]=\"settings\"\n [notificationCount]=\"{ unread: 0, all: 0 }\"\n [notifications]=\"[]\"\n [notifcationLoaded]=\"true\"\n [notificationLoading]=\"false\"\n [hideShellbarActions]=\"true\"\n [showExtraButton]=\"true\"\n [cultures]=\"cultures\"\n [productMenuItems1]=\"productMenuItems1\"\n (cultureChanged)=\"onCultureChanged($event)\"\n>\n @for(btn of userMenu;track btn){\n <button\n class=\"extra_btn\"\n fd-button\n [label]=\"btn.text\"\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\n fdType=\"emphasized\"\n (click)=\"btn.callback()\"\n ></button>\n }\n</bt-barsa-shellbar>\n} }\n<ng-template #QuickAccessTemplate>\n @if ((notificationLoading$ | async) === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bnrc-report-container *ngIf=\"sidebarSettings\" [settings]=\"sidebarSettings\"> </bnrc-report-container>\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\n</ng-template>\n", styles: [":host{display:block;position:relative}:host .extra_btn{background-color:transparent;border-color:transparent}:host #menu_btn{background-color:transparent;border-color:transparent}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i1.ReportContainerComponent, selector: "bnrc-report-container", inputs: ["settings"] }, { kind: "component", type: i6.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i7.BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: ["cssCustomUrl", "cssUrl", "cssVariableUrl", "multiLanguages", "userLoggedIn", "settings", "productMenuControl", "deviceSize", "cultures", "shellbarData", "notificationCount", "notifcationLoaded", "notificationLoading", "notifications", "productMenuItems1", "bodyClick", "logo", "actions", "userMenu", "productSwitcher", "subtitle", "isMobile", "hideShellbarActions", "showExtraButton", "isTablet", "userProfileImageUrl", "isDesktop", "isServiceDesk", "isOpenQuickAccess", "sideMenuTemplate"], outputs: ["isOpenQuickAccessChanged", "openNotificationPanel", "openQuickAccessPanel", "cultureChanged", "notificationLoadMore", "removeNotification", "notifiationActionClick", "notificationViewed"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
214
215
|
}
|
|
215
216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ShellbarComponent, decorators: [{
|
|
216
217
|
type: Component,
|
|
217
|
-
args: [{ selector: 'bt-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notifiationCountLoaded$ | async; as notifiationCountLoaded) { @if\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"cssUrl$ | async\"\n [userProfileImageUrl]=\"userProfileImageUrl$ | async\"\n [cssCustomUrl]=\"cssCustomUrl$ | async\"\n [userLoggedIn]=\"true\"\n [deviceSize]=\"deviceSize\"\n [shellbarData]=\"shellbarData\"\n [productMenuControl]=\"productMenuControl\"\n [settings]=\"settings\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [multiLanguages]=\"multiLanguages\"\n [notificationCount]=\"(notificationsCount$ | async)!!\"\n [notifications]=\"(notifications$ | async) ?? []\"\n [notifcationLoaded]=\"notifcationLoaded\"\n [notificationLoading]=\"(notificationLoading$ | async) === true\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [isServiceDesk]=\"isServiceDesk\"\n [sideMenuTemplate]=\"QuickAccessTemplate\"\n [productMenuItems1]=\"productMenuItems1\"\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\n (cultureChanged)=\"onCultureChanged($event)\"\n (notificationViewed)=\"onNotificationItemViewed($event)\"\n (notifiationActionClick)=\"onNotificationAction($event)\"\n (removeNotification)=\"onRemoveNotifications($event)\"\n (notificationLoadMore)=\"onNotificationLoadMore()\"\n (openNotificationPanel)=\"onHandleOpenNotificationPanel()\"\n>\n</bt-barsa-shellbar>\n} } } } @else { @if (notificationsCount$ | async; as notificationCount) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"''\"\n [cssCustomUr]=\"''\"\n [userLoggedIn]=\"false\"\n [multiLanguages]=\"multiLanguages\"\n [userMenu]=\"userMenu\"\n [logo]=\"logo\"\n [productMenuItems1]=\"productMenuItems1\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [shellbarData]=\"shellbarData\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [isServiceDesk]=\"isServiceDesk\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productMenuControl]=\"productMenuControl\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [settings]=\"settings\"\n [notificationCount]=\"{ unread: 0, all: 0 }\"\n [notifications]=\"[]\"\n [notifcationLoaded]=\"true\"\n [notificationLoading]=\"false\"\n [hideShellbarActions]=\"true\"\n [showExtraButton]=\"true\"\n [cultures]=\"cultures\"\n [productMenuItems1]=\"productMenuItems1\"\n (cultureChanged)=\"onCultureChanged($event)\"\n>\n @for(btn of userMenu;track btn){\n <button\n class=\"extra_btn\"\n fd-button\n [label]=\"btn.text\"\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\n fdType=\"emphasized\"\n (click)=\"btn.callback()\"\n ></button>\n }\n</bt-barsa-shellbar>\n} }\n<ng-template #QuickAccessTemplate>\n @if ((notificationLoading$ | async) === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bnrc-report-container *ngIf=\"sidebarSettings\" [settings]=\"sidebarSettings\"> </bnrc-report-container>\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\n</ng-template>\n", styles: [":host{display:block;position:relative}:host .extra_btn{background-color:transparent;border-color:transparent}:host #menu_btn{background-color:transparent;border-color:transparent}\n"] }]
|
|
218
|
+
args: [{ selector: 'bt-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notifiationCountLoaded$ | async; as notifiationCountLoaded) { @if\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"cssUrl$ | async\"\n [cssVariableUrl]=\"cssVariableUrl$ | async\"\n [userProfileImageUrl]=\"userProfileImageUrl$ | async\"\n [cssCustomUrl]=\"cssCustomUrl$ | async\"\n [userLoggedIn]=\"true\"\n [deviceSize]=\"deviceSize\"\n [shellbarData]=\"shellbarData\"\n [productMenuControl]=\"productMenuControl\"\n [settings]=\"settings\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [multiLanguages]=\"multiLanguages\"\n [notificationCount]=\"(notificationsCount$ | async)!!\"\n [notifications]=\"(notifications$ | async) ?? []\"\n [notifcationLoaded]=\"notifcationLoaded\"\n [notificationLoading]=\"(notificationLoading$ | async) === true\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [isServiceDesk]=\"isServiceDesk\"\n [sideMenuTemplate]=\"QuickAccessTemplate\"\n [productMenuItems1]=\"productMenuItems1\"\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\n (cultureChanged)=\"onCultureChanged($event)\"\n (notificationViewed)=\"onNotificationItemViewed($event)\"\n (notifiationActionClick)=\"onNotificationAction($event)\"\n (removeNotification)=\"onRemoveNotifications($event)\"\n (notificationLoadMore)=\"onNotificationLoadMore()\"\n (openNotificationPanel)=\"onHandleOpenNotificationPanel()\"\n>\n</bt-barsa-shellbar>\n} } } } @else { @if (notificationsCount$ | async; as notificationCount) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"''\"\n [cssVariableUrl]=\"''\"\n [cssCustomUr]=\"''\"\n [userLoggedIn]=\"false\"\n [multiLanguages]=\"multiLanguages\"\n [userMenu]=\"userMenu\"\n [logo]=\"logo\"\n [productMenuItems1]=\"productMenuItems1\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [shellbarData]=\"shellbarData\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [isServiceDesk]=\"isServiceDesk\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productMenuControl]=\"productMenuControl\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [settings]=\"settings\"\n [notificationCount]=\"{ unread: 0, all: 0 }\"\n [notifications]=\"[]\"\n [notifcationLoaded]=\"true\"\n [notificationLoading]=\"false\"\n [hideShellbarActions]=\"true\"\n [showExtraButton]=\"true\"\n [cultures]=\"cultures\"\n [productMenuItems1]=\"productMenuItems1\"\n (cultureChanged)=\"onCultureChanged($event)\"\n>\n @for(btn of userMenu;track btn){\n <button\n class=\"extra_btn\"\n fd-button\n [label]=\"btn.text\"\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\n fdType=\"emphasized\"\n (click)=\"btn.callback()\"\n ></button>\n }\n</bt-barsa-shellbar>\n} }\n<ng-template #QuickAccessTemplate>\n @if ((notificationLoading$ | async) === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bnrc-report-container *ngIf=\"sidebarSettings\" [settings]=\"sidebarSettings\"> </bnrc-report-container>\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\n</ng-template>\n", styles: [":host{display:block;position:relative}:host .extra_btn{background-color:transparent;border-color:transparent}:host #menu_btn{background-color:transparent;border-color:transparent}\n"] }]
|
|
218
219
|
}], ctorParameters: () => [{ type: i1.BbbTranslatePipe }, { type: i1.PortalService }, { type: i1.BreadcrumbService }, { type: i2.TilesService }, { type: i0.ChangeDetectorRef }, { type: i3.DomSanitizer }, { type: i1.NotificationService }, { type: undefined, decorators: [{
|
|
219
220
|
type: Inject,
|
|
220
221
|
args: [APP_VERSION]
|
|
@@ -228,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
228
229
|
type: ViewChild,
|
|
229
230
|
args: ['notificationsDialog', { static: true, read: TemplateRef }]
|
|
230
231
|
}] } });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9zaGVsbGJhci9zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3NoZWxsYmFyL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUNILGlCQUFpQixFQUtwQixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQU1SLFdBQVcsRUFNWCxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNwQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFzQjlCLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBa0NoRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FB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RSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQ29tYm9ib3hDb21wb25lbnQsXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICBQcm9kdWN0U3dpdGNoSXRlbSxcbiAgICBTaGVsbGJhck1lbnVJdGVtLFxuICAgIFNoZWxsYmFyVXNlclxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIEJhcnNhQXBpLFxuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgRmlsZVBpY3R1cmVJbmZvTW9kZWwsXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcbiAgICBQb3J0YWxTZXJ2aWNlLFxuICAgIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIEFQUF9WRVJTSU9OLFxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgTm90aWZpY2F0aW9uSXRlbSxcbiAgICBOb3RpZmljYXRpb25BY3Rpb24sXG4gICAgQmJiVHJhbnNsYXRlUGlwZSxcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXG4gICAgZ2V0RGV2aWNlSXNNb2JpbGUsXG4gICAgZ2V0RGV2aWNlSXNEZXNrdG9wLFxuICAgIGdldERldmljZUlzVGFibGV0XG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcblxuaW1wb3J0IHsgVGlsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vdGlsZXMuc2VydmljZSc7XG5cbmludGVyZmFjZSBTaGVsbGJhclNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICBzdWJ0aXRsZTogc3RyaW5nO1xuICAgIGNhbGNTdWJ0aXRsZTogc3RyaW5nO1xuICAgIGxvZ286IEZpbGVQaWN0dXJlSW5mb01vZGVsO1xuICAgIFByb2R1Y3RTd2l0Y2hJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBQcm9kdWN0TWVudUl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgIFVzZXJNZW51SXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgQWN0aW9uSXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgU2lkZWJhclJlcG9ydDogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBQcm9maWxlSW1hZ2VSZXBvcnQ6IE1ldGFvYmplY3REYXRhTW9kZWw7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnQtc2hlbGxiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaGVsbGJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2hlbGxiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTaGVsbGJhckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBWaWV3Q2hpbGQoQ29tYm9ib3hDb21wb25lbnQpIGNvbWJvYm94Q29tcG9uZW50OiBDb21ib2JveENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdwb3BvdmVyQ29tcG9uZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIHBvcG92ZXJDb21wb25lbnQ6IFBvcG92ZXJDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnbm90aWZpY2F0aW9uc0RpYWxvZycsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KSBfbm90aWZpY2F0aW9uc0RpYWxvZzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBzaGVsbGJhckRhdGE6IFNoZWxsYmFyU2V0dGluZztcbiAgICBzZXR0aW5nczogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICBpc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTxBYmJyZXZhdGlvbkRldmljZVNpemU+O1xuICAgIHByb2R1Y3RNZW51Q29udHJvbDogc3RyaW5nO1xuICAgIHVzZXI6IFNoZWxsYmFyVXNlciA9IHtcbiAgICAgICAgaW5pdGlhbHM6ICdXVycsXG4gICAgICAgIGNvbG9yQWNjZW50OiAxXG4gICAgfTtcblxuICAgIHByb2R1Y3RNZW51SXRlbXMxOiBTaGVsbGJhck1lbnVJdGVtW107XG4gICAgdXNlckxvZ2dlZEluJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBjc3NVcmwkOiBPYnNlcnZhYmxlPFNhZmVSZXNvdXJjZVVybCB8IG51bGw+O1xuICAgIGNzc0N1c3RvbVVybCQ6IE9ic2VydmFibGU8U2FmZVJlc291cmNlVXJsIHwgbnVsbD47XG4gICAgY3VsdHVyZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgbm90aWZpY2F0aW9uc0NvdW50JDogT2JzZXJ2YWJsZTx7IHVucmVhZDogbnVtYmVyOyBhbGw6IG51bWJlciB9PjtcbiAgICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25JdGVtW10+O1xuICAgIG5vdGlmaWNhdGlvbkxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG5vdGlmY2F0aW9uTG9hZGVkID0gZmFsc2U7XG4gICAgbm90aWZpYXRpb25Db3VudExvYWRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgX3ZpZXdlZE5vdGlmaWNhdGlvbnMkID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uSXRlbT4oKTtcbiAgICBfdmlld2VkTm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdID0gW107XG4gICAgYm9keUNsaWNrID0gJzskKFwiYm9keVwiKS5jbGljaygpJztcbiAgICBpc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XG4gICAgaXNEZXNrdG9wID0gZ2V0RGV2aWNlSXNEZXNrdG9wKCk7XG4gICAgaXNUYWJsZXQgPSBnZXREZXZpY2VJc1RhYmxldCgpO1xuICAgIGxvZ2luUm91dGVyTGluayQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBpc1NlcnZpY2VEZXNrID0gZmFsc2U7XG4gICAgaXNPcGVuUXVpY2tBY2Nlc3MgPSBmYWxzZTtcbiAgICB1c2VyUHJvZmlsZUltYWdlVXJsJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgICBnZXQgcmVwSWRQcm9maWxlSW1hZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhPy5Qcm9maWxlSW1hZ2VSZXBvcnQ/LklkO1xuICAgIH1cbiAgICBnZXQgc3VidGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLnNoZWxsYmFyRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUgPT09ICdzJyAmJiB0aGlzLnNoZWxsYmFyRGF0YS5Nb2JpbGVTdWJ0aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhLk1vYmlsZVN1YnRpdGxlXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLnNoZWxsYmFyRGF0YS5Nb2JpbGVTdWJ0aXRsZX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaGVsbGJhckRhdGE/LmNhbGNTdWJ0aXRsZSA9PT0gJ3N0cmluZycgPyB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgOiAnJ1xuICAgICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YS5TdWJ0aXRsZVxuICAgICAgICAgICAgPyBgJHt0aGlzLnNoZWxsYmFyRGF0YT8uU3VidGl0bGV9ICR7XG4gICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaGVsbGJhckRhdGE/LmNhbGNTdWJ0aXRsZSA9PT0gJ3N0cmluZycgPyB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgOiAnJ1xuICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgOiAnJztcbiAgICB9XG4gICAgZ2V0IGxvZ28oKTogeyBGaWxlSWQ6IHN0cmluZyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhPy5Mb2dvO1xuICAgIH1cbiAgICBnZXQgYWN0aW9ucygpOiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzPy5IaWRlVXNlck1lbnUgPyBbXSA6IHRoaXMuc2hlbGxiYXJEYXRhPy5BY3Rpb25JdGVtcz8uTW9EYXRhTGlzdCA/PyBbXTtcbiAgICB9XG4gICAgZ2V0IHNpZGViYXJTZXR0aW5ncygpOiBudWxsIHwgYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLnNoZWxsYmFyRGF0YT8uU2lkZWJhclJlcG9ydD8uSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBSZWxhdGVkUmVwb3J0OiB7IElkOiB0aGlzLnNoZWxsYmFyRGF0YT8uU2lkZWJhclJlcG9ydD8uSWQsICRDYXB0aW9uOiAnJyB9LFxuICAgICAgICAgICAgUm93Q2xpY2s6ICcnLFxuICAgICAgICAgICAgRGF0YU9ubHk6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldCB1c2VyTWVudSgpOiB7IHRleHQ6IHN0cmluZzsgY2FsbGJhY2s6ICgpID0+IHZvaWQgfVtdIHtcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuc2hlbGxiYXJEYXRhLCAnVXNlck1lbnVJdGVtcy5Nb0RhdGFMaXN0Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gbW9EYXRhTGlzdCA/IFsuLi5tb0RhdGFMaXN0XSA6IFtdO1xuICAgICAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGMudGV4dCA9IHRoaXMuX2JiYlRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKGMudGV4dCk7XG4gICAgICAgICAgICBjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghdGhpcy5Jc1VzZXJBbm9ueW1vdXMgJiYgdGhpcy5Jc1VzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgaXRlbXMuc3BsaWNlKDAsIDAsIHsgSWQ6ICctMScsICRDYXB0aW9uOiAnJywgdGV4dDogQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Vc2VyRGlzcGxheU5hbWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3M/LkhpZGVVc2VyTWVudSA/IFtdIDogKGl0ZW1zIGFzIGFueSk7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0U3dpdGNoZXIoKTogUHJvZHVjdFN3aXRjaEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiAodGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RTd2l0Y2hJdGVtcz8uTW9EYXRhTGlzdCA/PyBbXSkgYXMgdW5rbm93biBhcyBQcm9kdWN0U3dpdGNoSXRlbVtdO1xuICAgIH1cbiAgICBnZXQgbXVsdGlMYW5ndWFnZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YT8uTXVsdGlMYW5ndWFnZXM7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0TWVudUl0ZW1zKCk6IFNoZWxsYmFyTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RNZW51SXRlbXM/Lk1vRGF0YUxpc3QgPz8gW107XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IChjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKSkpO1xuICAgICAgICByZXR1cm4gaXRlbXMgYXMgdW5rbm93biBhcyBTaGVsbGJhck1lbnVJdGVtW107XG4gICAgfVxuICAgIGdldCBJc1VzZXJMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNVc2VyTG9nZ2VkSW47XG4gICAgfVxuICAgIGdldCBJc1VzZXJBbm9ueW1vdXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzQW5vbnltb3VzO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9iYmJUcmFuc2xhdGVQaXBlOiBCYmJUcmFuc2xhdGVQaXBlLFxuICAgICAgICBwcml2YXRlIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9icmVhZENydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3RpbGVzU2VydmljZTogVGlsZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9kb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChBUFBfVkVSU0lPTikgcHVibGljIGFwcFZlcnNpb246IHN0cmluZ1xuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMudXNlckxvZ2dlZEluJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UudXNlckxvZ2dlZEluJDtcbiAgICAgICAgdGhpcy5ub3RpZmlhdGlvbkNvdW50TG9hZGVkJCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9uQ291bnRMb2FkZWQkO1xuICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIHRhcCgoaXRlbSkgPT4gdGhpcy5fdmlld2VkTm90aWZpY2F0aW9ucy5wdXNoKGl0ZW0pKSxcbiAgICAgICAgICAgICAgICBtYXAoKGl0ZW0pID0+IHRoaXMuX3ZpZXdlZE5vdGlmaWNhdGlvbnMpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMDAwKSxcbiAgICAgICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uVGFnKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRhZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5zZXROb3RpZmljYXRpb25WaWV3ZWQodGFncyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLmlzU2VydmljZURlc2sgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzU2VydmljZURlc2s7XG5cbiAgICAgICAgdGhpcy5jdWx0dXJlcyA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ3VsdHVyZXM7XG4gICAgICAgIHRoaXMuY3NzVXJsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuY3NzVXJsJDtcbiAgICAgICAgdGhpcy5jc3NDdXN0b21VcmwkID0gdGhpcy5fcG9ydGFsU2VydmljZS5jc3NDdXN0b21VcmwkO1xuICAgICAgICB0aGlzLmxvZ2luUm91dGVyTGluayQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmxvZ2luUm91dGUkO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNDb3VudCQgPSB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmaWNhdGlvbkNvdW50JDtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25Db3VudCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRpbmckID0gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25Mb2FkaW5nJDtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9ucyQucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgIG1hcCgobm90aWZpY2F0aW9ucykgPT4gdGhpcy5fbWFwTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSlcbiAgICAgICAgKTtcbiAgICAgICAgQmFyc2FBcGkuQncuU2V0VXNlclBvcnRhbFNldHRpbmdzID0gKHVzZXJQb3J0YWxTZXR0aW5nczogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5zZXRVc2VyUG9ydGFsU2V0dGluZ3ModXNlclBvcnRhbFNldHRpbmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgQmFyc2FBcGkuQncuU2V0U2hlbGxiYXJTdWJ0aXRsZSA9IChjYWxjU3VidGl0bGU6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaGVsbGJhckRhdGEuY2FsY1N1YnRpdGxlID0gY2FsY1N1YnRpdGxlO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuXG4gICAgICAgIHRoaXMuX2JyZWFkQ3J1bWJTZXJ2aWNlLmJyZWFkY3J1bWJzJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChicmVhZENydW1icykgPT4ge1xuICAgICAgICAgICAgaWYgKGJyZWFkQ3J1bWJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RNZW51Q29udHJvbCA9IGJyZWFkQ3J1bWJzW2JyZWFkQ3J1bWJzLmxlbmd0aCAtIDFdLmxhYmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVJbWFnZVVybCQgPSB0aGlzLl90aWxlc1NlcnZpY2UudXNlclByb2ZpbGVJbWFnZVVybCQ7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zaGVsbGJhciQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hlbGxiYXJEYXRhID0gbW8gYXMgU2hlbGxiYXJTZXR0aW5nO1xuICAgICAgICAgICAgaWYgKHRoaXMuSXNVc2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFVzZXJQcm9maWxlSW1hZ2UodGhpcy5yZXBJZFByb2ZpbGVJbWFnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBmb3JrSm9pbihbb2YodGhpcy5wcm9kdWN0TWVudUl0ZW1zKSwgb2YoW10pXSkgLy8gdG8gYXBwZW5kIHVzZXIgZGVmaW5lZFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoW3MxLCBzMl0pID0+IFsuLi5zMSwgLi4uczJdKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdE1lbnVJdGVtczEgPSBjO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3M/LkFsbG93QW5vbnltb3VzKSB7XG4gICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFNoZWxsYmFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS51c2VyTG9nZ2VkSW4kLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGxvZ2dlZEluKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvZ2dlZEluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLmxvYWRTaGVsbGJhcigpO1xuICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5sb2FkVW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DdWx0dXJlQ2hhbmdlKGN1bHR1cmUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlQ3VsdHVyZShjdWx0dXJlKTtcbiAgICB9XG4gICAgb25TaG93Tm90aWZpY2F0aW9uKGU6IHsgdGFnOiBzdHJpbmc7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBuYW1hOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLlNob3dOb3RpZmljYXRpb25SZWxhdGVkTW8oZSk7XG4gICAgfVxuICAgIG9uTm90aWZpY2F0aW9uSXRlbVZpZXdlZCh2aWV3ZWRNbzogTm90aWZpY2F0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zJC5uZXh0KHZpZXdlZE1vKTtcbiAgICB9XG5cbiAgICBvblJlbW92ZU5vdGlmaWNhdGlvbnMoZTogeyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdOyBzaWxlbnQ6IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLnJlbW92ZU5vdGlmaWNhdGlvbihlLml0ZW1zKTtcbiAgICB9XG4gICAgb25PcGVuTm90aWZpY2F0aW9uID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IHRydWU7XG4gICAgICAgIHRoaXMuX2hhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpO1xuICAgIH07XG4gICAgb25Ob3RpZmljYXRpb25BY3Rpb24oZTogeyBpdGVtOiBOb3RpZmljYXRpb25JdGVtOyBidG46IE5vdGlmaWNhdGlvbkFjdGlvbiB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2UuRXhlY3V0ZU5vdGlmaWNhdGlvbkFjdGlvbihlLml0ZW0uVGFnLCBlLmJ0bi5UaXRsZSk7XG4gICAgfVxuICAgIG9uQ3VsdHVyZUNoYW5nZWQgPSAoY3VsdHVyZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XG4gICAgfTtcbiAgICBvbk5vdGlmaWNhdGlvbkxvYWRNb3JlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmxvYWRNb3JlKCk7XG4gICAgfVxuICAgIG9uTm90aWZpY2F0aW9uV29ya2Zsb3dDaG9pY2VTdWNjZXNzKHJlc3VsdCk6IHZvaWQge31cbiAgICBvbk5vdGlmaWNhdGlvbldvcmtmbG93Q2hvaWNlRmFpbGVkKGVycik6IHZvaWQge31cblxuICAgIG9uSGFuZGxlT3Blbk5vdGlmaWNhdGlvblBhbmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5vdGlmY2F0aW9uTG9hZGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3RpZmNhdGlvbkxvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UubG9hZE5vdGlmaWNhdGlvbnMoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbWFwTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKTogTm90aWZpY2F0aW9uSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMubWFwKChub3RpZmljYXRpb24pID0+ICh7XG4gICAgICAgICAgICAuLi5ub3RpZmljYXRpb24sXG4gICAgICAgICAgICBjb250ZW50U2FmZUh0bWw6IG5vdGlmaWNhdGlvbi5Db250ZW50XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwobm90aWZpY2F0aW9uLkNvbnRlbnQpXG4gICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICB9KSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoYW5nZUN1bHR1cmUoY3VsdHVyZTogc3RyaW5nIC8qIGN1bHR1cmUgc2FtcGxlIDpFbmdsaXNoICovKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlNldEN1bHR1cmVCeURpc3BsYXlOYW1lKGN1bHR1cmUpO1xuICAgICAgICBCYXJzYUFwaS5Cdy5OYXZpZ2F0ZVRvKCcvJyk7XG4gICAgfVxufVxuIiwiQGlmICh1c2VyTG9nZ2VkSW4kIHwgYXN5bmM7IGFzIHVzZXJsb2dnZW5kKSB7IEBpZiAobm90aWZpYXRpb25Db3VudExvYWRlZCQgfCBhc3luYzsgYXMgbm90aWZpYXRpb25Db3VudExvYWRlZCkgeyBAaWZcbihkZXZpY2VTaXplJCB8IGFzeW5jOyBhcyBkZXZpY2VTaXplKSB7IEBpZiAoc2hlbGxiYXJEYXRhKSB7XG48YnQtYmFyc2Etc2hlbGxiYXJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxuICAgIFtjc3NVcmxdPVwiY3NzVXJsJCB8IGFzeW5jXCJcbiAgICBbdXNlclByb2ZpbGVJbWFnZVVybF09XCJ1c2VyUHJvZmlsZUltYWdlVXJsJCB8IGFzeW5jXCJcbiAgICBbY3NzQ3VzdG9tVXJsXT1cImNzc0N1c3RvbVVybCQgfCBhc3luY1wiXG4gICAgW3VzZXJMb2dnZWRJbl09XCJ0cnVlXCJcbiAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICBbc2hlbGxiYXJEYXRhXT1cInNoZWxsYmFyRGF0YVwiXG4gICAgW3Byb2R1Y3RNZW51Q29udHJvbF09XCJwcm9kdWN0TWVudUNvbnRyb2xcIlxuICAgIFtzZXR0aW5nc109XCJzZXR0aW5nc1wiXG4gICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICBbaXNUYWJsZXRdPVwiaXNUYWJsZXRcIlxuICAgIFtpc0Rlc2t0b3BdPVwiaXNEZXNrdG9wXCJcbiAgICBbbXVsdGlMYW5ndWFnZXNdPVwibXVsdGlMYW5ndWFnZXNcIlxuICAgIFtub3RpZmljYXRpb25Db3VudF09XCIobm90aWZpY2F0aW9uc0NvdW50JCB8IGFzeW5jKSEhXCJcbiAgICBbbm90aWZpY2F0aW9uc109XCIobm90aWZpY2F0aW9ucyQgfCBhc3luYykgPz8gW11cIlxuICAgIFtub3RpZmNhdGlvbkxvYWRlZF09XCJub3RpZmNhdGlvbkxvYWRlZFwiXG4gICAgW25vdGlmaWNhdGlvbkxvYWRpbmddPVwiKG5vdGlmaWNhdGlvbkxvYWRpbmckIHwgYXN5bmMpID09PSB0cnVlXCJcbiAgICBbY3VsdHVyZXNdPVwiY3VsdHVyZXNcIlxuICAgIFtsb2dvXT1cImxvZ29cIlxuICAgIFthY3Rpb25zXT1cImFjdGlvbnNcIlxuICAgIFt1c2VyTWVudV09XCJ1c2VyTWVudVwiXG4gICAgW3Byb2R1Y3RTd2l0Y2hlcl09XCJwcm9kdWN0U3dpdGNoZXJcIlxuICAgIFtzdWJ0aXRsZV09XCJzdWJ0aXRsZVwiXG4gICAgW2lzU2VydmljZURlc2tdPVwiaXNTZXJ2aWNlRGVza1wiXG4gICAgW3NpZGVNZW51VGVtcGxhdGVdPVwiUXVpY2tBY2Nlc3NUZW1wbGF0ZVwiXG4gICAgW3Byb2R1Y3RNZW51SXRlbXMxXT1cInByb2R1Y3RNZW51SXRlbXMxXCJcbiAgICBbaXNPcGVuUXVpY2tBY2Nlc3NdPVwiaXNPcGVuUXVpY2tBY2Nlc3NcIlxuICAgIChpc09wZW5RdWlja0FjY2Vzc0NoYW5nZWQpPVwiaXNPcGVuUXVpY2tBY2Nlc3MgPSAkZXZlbnRcIlxuICAgIChjdWx0dXJlQ2hhbmdlZCk9XCJvbkN1bHR1cmVDaGFuZ2VkKCRldmVudClcIlxuICAgIChub3RpZmljYXRpb25WaWV3ZWQpPVwib25Ob3RpZmljYXRpb25JdGVtVmlld2VkKCRldmVudClcIlxuICAgIChub3RpZmlhdGlvbkFjdGlvbkNsaWNrKT1cIm9uTm90aWZpY2F0aW9uQWN0aW9uKCRldmVudClcIlxuICAgIChyZW1vdmVOb3RpZmljYXRpb24pPVwib25SZW1vdmVOb3RpZmljYXRpb25zKCRldmVudClcIlxuICAgIChub3RpZmljYXRpb25Mb2FkTW9yZSk9XCJvbk5vdGlmaWNhdGlvbkxvYWRNb3JlKClcIlxuICAgIChvcGVuTm90aWZpY2F0aW9uUGFuZWwpPVwib25IYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKVwiXG4+XG48L2J0LWJhcnNhLXNoZWxsYmFyPlxufSB9IH0gfSBAZWxzZSB7IEBpZiAobm90aWZpY2F0aW9uc0NvdW50JCB8IGFzeW5jOyBhcyBub3RpZmljYXRpb25Db3VudCkge1xuPGJ0LWJhcnNhLXNoZWxsYmFyXG4gICAgW2NsYXNzLnNlcnZpY2UtZGVza109XCJpc1NlcnZpY2VEZXNrXCJcbiAgICBbY3NzVXJsXT1cIicnXCJcbiAgICBbY3NzQ3VzdG9tVXJdPVwiJydcIlxuICAgIFt1c2VyTG9nZ2VkSW5dPVwiZmFsc2VcIlxuICAgIFttdWx0aUxhbmd1YWdlc109XCJtdWx0aUxhbmd1YWdlc1wiXG4gICAgW3VzZXJNZW51XT1cInVzZXJNZW51XCJcbiAgICBbbG9nb109XCJsb2dvXCJcbiAgICBbcHJvZHVjdE1lbnVJdGVtczFdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxuICAgIFtkZXZpY2VTaXplXT1cIihkZXZpY2VTaXplJCB8IGFzeW5jKSEhXCJcbiAgICBbc2hlbGxiYXJEYXRhXT1cInNoZWxsYmFyRGF0YVwiXG4gICAgW2N1bHR1cmVzXT1cImN1bHR1cmVzXCJcbiAgICBbbG9nb109XCJsb2dvXCJcbiAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgIFtpc1RhYmxldF09XCJpc1RhYmxldFwiXG4gICAgW2lzRGVza3RvcF09XCJpc0Rlc2t0b3BcIlxuICAgIFtpc1NlcnZpY2VEZXNrXT1cImlzU2VydmljZURlc2tcIlxuICAgIFthY3Rpb25zXT1cImFjdGlvbnNcIlxuICAgIFt1c2VyTWVudV09XCJ1c2VyTWVudVwiXG4gICAgW3Byb2R1Y3RNZW51Q29udHJvbF09XCJwcm9kdWN0TWVudUNvbnRyb2xcIlxuICAgIFtwcm9kdWN0U3dpdGNoZXJdPVwicHJvZHVjdFN3aXRjaGVyXCJcbiAgICBbc3VidGl0bGVdPVwic3VidGl0bGVcIlxuICAgIFtzZXR0aW5nc109XCJzZXR0aW5nc1wiXG4gICAgW25vdGlmaWNhdGlvbkNvdW50XT1cInsgdW5yZWFkOiAwLCBhbGw6IDAgfVwiXG4gICAgW25vdGlmaWNhdGlvbnNdPVwiW11cIlxuICAgIFtub3RpZmNhdGlvbkxvYWRlZF09XCJ0cnVlXCJcbiAgICBbbm90aWZpY2F0aW9uTG9hZGluZ109XCJmYWxzZVwiXG4gICAgW2hpZGVTaGVsbGJhckFjdGlvbnNdPVwidHJ1ZVwiXG4gICAgW3Nob3dFeHRyYUJ1dHRvbl09XCJ0cnVlXCJcbiAgICBbY3VsdHVyZXNdPVwiY3VsdHVyZXNcIlxuICAgIFtwcm9kdWN0TWVudUl0ZW1zMV09XCJwcm9kdWN0TWVudUl0ZW1zMVwiXG4gICAgKGN1bHR1cmVDaGFuZ2VkKT1cIm9uQ3VsdHVyZUNoYW5nZWQoJGV2ZW50KVwiXG4+XG4gICAgQGZvcihidG4gb2YgdXNlck1lbnU7dHJhY2sgYnRuKXtcbiAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiZXh0cmFfYnRuXCJcbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIFtsYWJlbF09XCJidG4udGV4dFwiXG4gICAgICAgIFtnbHlwaF09XCJidG4udGV4dCA9PT0gKCdMb2dpbicgfCBiYmJUcmFuc2xhdGUpID8gJ3BlcnNvbi1wbGFjZWhvbGRlcicgOiBudWxsXCJcbiAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgIChjbGljayk9XCJidG4uY2FsbGJhY2soKVwiXG4gICAgPjwvYnV0dG9uPlxuICAgIH1cbjwvYnQtYmFyc2Etc2hlbGxiYXI+XG59IH1cbjxuZy10ZW1wbGF0ZSAjUXVpY2tBY2Nlc3NUZW1wbGF0ZT5cbiAgICBAaWYgKChub3RpZmljYXRpb25Mb2FkaW5nJCB8IGFzeW5jKSA9PT0gdHJ1ZSkge1xuICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogMTAwcHhcIj5cbiAgICAgICAgPGJzdS1tYXNrIHNpemU9XCJzXCI+PC9ic3UtbWFzaz5cbiAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGJucmMtcmVwb3J0LWNvbnRhaW5lciAqbmdJZj1cInNpZGViYXJTZXR0aW5nc1wiIFtzZXR0aW5nc109XCJzaWRlYmFyU2V0dGluZ3NcIj4gPC9ibnJjLXJlcG9ydC1jb250YWluZXI+XG4gICAgPCEtLSA8YnQtcG9wb3Zlci1hcHAtZmluZGVyIChjbG9zZU1lbnUpPVwiaXNPcGVuUXVpY2tBY2Nlc3MgPSBmYWxzZVwiPjwvYnQtcG9wb3Zlci1hcHAtZmluZGVyPiAtLT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9zaGVsbGJhci9zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3NoZWxsYmFyL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUNILGlCQUFpQixFQUtwQixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQU1SLFdBQVcsRUFNWCxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNwQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFzQjlCLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBbUNoRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FB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b0I7c0JBQTFGLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3QsXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBDb21ib2JveENvbXBvbmVudCxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtLFxuICAgIFNoZWxsYmFyTWVudUl0ZW0sXG4gICAgU2hlbGxiYXJVc2VyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgQmFyc2FBcGksXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBGaWxlUGljdHVyZUluZm9Nb2RlbCxcbiAgICBNb0ZvclJlcG9ydE1vZGVsLFxuICAgIFBvcnRhbFNlcnZpY2UsXG4gICAgQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgQVBQX1ZFUlNJT04sXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBOb3RpZmljYXRpb25JdGVtLFxuICAgIE5vdGlmaWNhdGlvbkFjdGlvbixcbiAgICBCYmJUcmFuc2xhdGVQaXBlLFxuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcbiAgICBnZXREZXZpY2VJc0Rlc2t0b3AsXG4gICAgZ2V0RGV2aWNlSXNUYWJsZXRcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5pbXBvcnQgeyBUaWxlc1NlcnZpY2UgfSBmcm9tICcuLi90aWxlcy5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIFNoZWxsYmFyU2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIHN1YnRpdGxlOiBzdHJpbmc7XG4gICAgY2FsY1N1YnRpdGxlOiBzdHJpbmc7XG4gICAgbG9nbzogRmlsZVBpY3R1cmVJbmZvTW9kZWw7XG4gICAgUHJvZHVjdFN3aXRjaEl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgIFByb2R1Y3RNZW51SXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgVXNlck1lbnVJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBBY3Rpb25JdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBTaWRlYmFyUmVwb3J0OiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIFByb2ZpbGVJbWFnZVJlcG9ydDogTWV0YW9iamVjdERhdGFNb2RlbDtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdidC1zaGVsbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zaGVsbGJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNoZWxsYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZChDb21ib2JveENvbXBvbmVudCkgY29tYm9ib3hDb21wb25lbnQ6IENvbWJvYm94Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3BvcG92ZXJDb21wb25lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9wb3ZlckNvbXBvbmVudDogUG9wb3ZlckNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdub3RpZmljYXRpb25zRGlhbG9nJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF9ub3RpZmljYXRpb25zRGlhbG9nOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHNoZWxsYmFyRGF0YTogU2hlbGxiYXJTZXR0aW5nO1xuICAgIHNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIGlzT3Blbk5vdGlmaWNhdG9pbiA9IGZhbHNlO1xuICAgIGRldmljZVNpemUkOiBPYnNlcnZhYmxlPEFiYnJldmF0aW9uRGV2aWNlU2l6ZT47XG4gICAgcHJvZHVjdE1lbnVDb250cm9sOiBzdHJpbmc7XG4gICAgdXNlcjogU2hlbGxiYXJVc2VyID0ge1xuICAgICAgICBpbml0aWFsczogJ1dXJyxcbiAgICAgICAgY29sb3JBY2NlbnQ6IDFcbiAgICB9O1xuXG4gICAgcHJvZHVjdE1lbnVJdGVtczE6IFNoZWxsYmFyTWVudUl0ZW1bXTtcbiAgICB1c2VyTG9nZ2VkSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNzc1VybCQ6IE9ic2VydmFibGU8U2FmZVJlc291cmNlVXJsIHwgbnVsbD47XG4gICAgY3NzVmFyaWFibGVVcmwkOiBPYnNlcnZhYmxlPFNhZmVSZXNvdXJjZVVybCB8IG51bGw+O1xuICAgIGNzc0N1c3RvbVVybCQ6IE9ic2VydmFibGU8U2FmZVJlc291cmNlVXJsIHwgbnVsbD47XG4gICAgY3VsdHVyZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgbm90aWZpY2F0aW9uc0NvdW50JDogT2JzZXJ2YWJsZTx7IHVucmVhZDogbnVtYmVyOyBhbGw6IG51bWJlciB9PjtcbiAgICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25JdGVtW10+O1xuICAgIG5vdGlmaWNhdGlvbkxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG5vdGlmY2F0aW9uTG9hZGVkID0gZmFsc2U7XG4gICAgbm90aWZpYXRpb25Db3VudExvYWRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgX3ZpZXdlZE5vdGlmaWNhdGlvbnMkID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uSXRlbT4oKTtcbiAgICBfdmlld2VkTm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdID0gW107XG4gICAgYm9keUNsaWNrID0gJzskKFwiYm9keVwiKS5jbGljaygpJztcbiAgICBpc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XG4gICAgaXNEZXNrdG9wID0gZ2V0RGV2aWNlSXNEZXNrdG9wKCk7XG4gICAgaXNUYWJsZXQgPSBnZXREZXZpY2VJc1RhYmxldCgpO1xuICAgIGxvZ2luUm91dGVyTGluayQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBpc1NlcnZpY2VEZXNrID0gZmFsc2U7XG4gICAgaXNPcGVuUXVpY2tBY2Nlc3MgPSBmYWxzZTtcbiAgICB1c2VyUHJvZmlsZUltYWdlVXJsJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgICBnZXQgcmVwSWRQcm9maWxlSW1hZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhPy5Qcm9maWxlSW1hZ2VSZXBvcnQ/LklkO1xuICAgIH1cbiAgICBnZXQgc3VidGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLnNoZWxsYmFyRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUgPT09ICdzJyAmJiB0aGlzLnNoZWxsYmFyRGF0YS5Nb2JpbGVTdWJ0aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhLk1vYmlsZVN1YnRpdGxlXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLnNoZWxsYmFyRGF0YS5Nb2JpbGVTdWJ0aXRsZX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaGVsbGJhckRhdGE/LmNhbGNTdWJ0aXRsZSA9PT0gJ3N0cmluZycgPyB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgOiAnJ1xuICAgICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YS5TdWJ0aXRsZVxuICAgICAgICAgICAgPyBgJHt0aGlzLnNoZWxsYmFyRGF0YT8uU3VidGl0bGV9ICR7XG4gICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaGVsbGJhckRhdGE/LmNhbGNTdWJ0aXRsZSA9PT0gJ3N0cmluZycgPyB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgOiAnJ1xuICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgOiAnJztcbiAgICB9XG4gICAgZ2V0IGxvZ28oKTogeyBGaWxlSWQ6IHN0cmluZyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhPy5Mb2dvO1xuICAgIH1cbiAgICBnZXQgYWN0aW9ucygpOiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzPy5IaWRlVXNlck1lbnUgPyBbXSA6IHRoaXMuc2hlbGxiYXJEYXRhPy5BY3Rpb25JdGVtcz8uTW9EYXRhTGlzdCA/PyBbXTtcbiAgICB9XG4gICAgZ2V0IHNpZGViYXJTZXR0aW5ncygpOiBudWxsIHwgYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLnNoZWxsYmFyRGF0YT8uU2lkZWJhclJlcG9ydD8uSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBSZWxhdGVkUmVwb3J0OiB7IElkOiB0aGlzLnNoZWxsYmFyRGF0YT8uU2lkZWJhclJlcG9ydD8uSWQsICRDYXB0aW9uOiAnJyB9LFxuICAgICAgICAgICAgUm93Q2xpY2s6ICcnLFxuICAgICAgICAgICAgRGF0YU9ubHk6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldCB1c2VyTWVudSgpOiB7IHRleHQ6IHN0cmluZzsgY2FsbGJhY2s6ICgpID0+IHZvaWQgfVtdIHtcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuc2hlbGxiYXJEYXRhLCAnVXNlck1lbnVJdGVtcy5Nb0RhdGFMaXN0Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gbW9EYXRhTGlzdCA/IFsuLi5tb0RhdGFMaXN0XSA6IFtdO1xuICAgICAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGMudGV4dCA9IHRoaXMuX2JiYlRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKGMudGV4dCk7XG4gICAgICAgICAgICBjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghdGhpcy5Jc1VzZXJBbm9ueW1vdXMgJiYgdGhpcy5Jc1VzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgaXRlbXMuc3BsaWNlKDAsIDAsIHsgSWQ6ICctMScsICRDYXB0aW9uOiAnJywgdGV4dDogQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Vc2VyRGlzcGxheU5hbWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3M/LkhpZGVVc2VyTWVudSA/IFtdIDogKGl0ZW1zIGFzIGFueSk7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0U3dpdGNoZXIoKTogUHJvZHVjdFN3aXRjaEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiAodGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RTd2l0Y2hJdGVtcz8uTW9EYXRhTGlzdCA/PyBbXSkgYXMgdW5rbm93biBhcyBQcm9kdWN0U3dpdGNoSXRlbVtdO1xuICAgIH1cbiAgICBnZXQgbXVsdGlMYW5ndWFnZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YT8uTXVsdGlMYW5ndWFnZXM7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0TWVudUl0ZW1zKCk6IFNoZWxsYmFyTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RNZW51SXRlbXM/Lk1vRGF0YUxpc3QgPz8gW107XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IChjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKSkpO1xuICAgICAgICByZXR1cm4gaXRlbXMgYXMgdW5rbm93biBhcyBTaGVsbGJhck1lbnVJdGVtW107XG4gICAgfVxuICAgIGdldCBJc1VzZXJMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNVc2VyTG9nZ2VkSW47XG4gICAgfVxuICAgIGdldCBJc1VzZXJBbm9ueW1vdXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzQW5vbnltb3VzO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9iYmJUcmFuc2xhdGVQaXBlOiBCYmJUcmFuc2xhdGVQaXBlLFxuICAgICAgICBwcml2YXRlIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9icmVhZENydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3RpbGVzU2VydmljZTogVGlsZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9kb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChBUFBfVkVSU0lPTikgcHVibGljIGFwcFZlcnNpb246IHN0cmluZ1xuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMudXNlckxvZ2dlZEluJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UudXNlckxvZ2dlZEluJDtcbiAgICAgICAgdGhpcy5ub3RpZmlhdGlvbkNvdW50TG9hZGVkJCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9uQ291bnRMb2FkZWQkO1xuICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIHRhcCgoaXRlbSkgPT4gdGhpcy5fdmlld2VkTm90aWZpY2F0aW9ucy5wdXNoKGl0ZW0pKSxcbiAgICAgICAgICAgICAgICBtYXAoKGl0ZW0pID0+IHRoaXMuX3ZpZXdlZE5vdGlmaWNhdGlvbnMpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMDAwKSxcbiAgICAgICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uVGFnKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRhZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5zZXROb3RpZmljYXRpb25WaWV3ZWQodGFncyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLmlzU2VydmljZURlc2sgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzU2VydmljZURlc2s7XG5cbiAgICAgICAgdGhpcy5jdWx0dXJlcyA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ3VsdHVyZXM7XG4gICAgICAgIHRoaXMuY3NzVXJsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuY3NzVXJsJDtcbiAgICAgICAgdGhpcy5jc3NWYXJpYWJsZVVybCQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmNzc1ZhcmlhYmxlVXJsJDtcbiAgICAgICAgdGhpcy5jc3NDdXN0b21VcmwkID0gdGhpcy5fcG9ydGFsU2VydmljZS5jc3NDdXN0b21VcmwkO1xuICAgICAgICB0aGlzLmxvZ2luUm91dGVyTGluayQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmxvZ2luUm91dGUkO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNDb3VudCQgPSB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmaWNhdGlvbkNvdW50JDtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25Db3VudCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRpbmckID0gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25Mb2FkaW5nJDtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9ucyQucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgIG1hcCgobm90aWZpY2F0aW9ucykgPT4gdGhpcy5fbWFwTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSlcbiAgICAgICAgKTtcbiAgICAgICAgQmFyc2FBcGkuQncuU2V0VXNlclBvcnRhbFNldHRpbmdzID0gKHVzZXJQb3J0YWxTZXR0aW5nczogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5zZXRVc2VyUG9ydGFsU2V0dGluZ3ModXNlclBvcnRhbFNldHRpbmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgQmFyc2FBcGkuQncuU2V0U2hlbGxiYXJTdWJ0aXRsZSA9IChjYWxjU3VidGl0bGU6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaGVsbGJhckRhdGEuY2FsY1N1YnRpdGxlID0gY2FsY1N1YnRpdGxlO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuXG4gICAgICAgIHRoaXMuX2JyZWFkQ3J1bWJTZXJ2aWNlLmJyZWFkY3J1bWJzJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChicmVhZENydW1icykgPT4ge1xuICAgICAgICAgICAgaWYgKGJyZWFkQ3J1bWJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RNZW51Q29udHJvbCA9IGJyZWFkQ3J1bWJzW2JyZWFkQ3J1bWJzLmxlbmd0aCAtIDFdLmxhYmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVJbWFnZVVybCQgPSB0aGlzLl90aWxlc1NlcnZpY2UudXNlclByb2ZpbGVJbWFnZVVybCQ7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zaGVsbGJhciQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hlbGxiYXJEYXRhID0gbW8gYXMgU2hlbGxiYXJTZXR0aW5nO1xuICAgICAgICAgICAgaWYgKHRoaXMuSXNVc2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFVzZXJQcm9maWxlSW1hZ2UodGhpcy5yZXBJZFByb2ZpbGVJbWFnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBmb3JrSm9pbihbb2YodGhpcy5wcm9kdWN0TWVudUl0ZW1zKSwgb2YoW10pXSkgLy8gdG8gYXBwZW5kIHVzZXIgZGVmaW5lZFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoW3MxLCBzMl0pID0+IFsuLi5zMSwgLi4uczJdKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdE1lbnVJdGVtczEgPSBjO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3M/LkFsbG93QW5vbnltb3VzKSB7XG4gICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFNoZWxsYmFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS51c2VyTG9nZ2VkSW4kLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGxvZ2dlZEluKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvZ2dlZEluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLmxvYWRTaGVsbGJhcigpO1xuICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5sb2FkVW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DdWx0dXJlQ2hhbmdlKGN1bHR1cmUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlQ3VsdHVyZShjdWx0dXJlKTtcbiAgICB9XG4gICAgb25TaG93Tm90aWZpY2F0aW9uKGU6IHsgdGFnOiBzdHJpbmc7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBuYW1hOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLlNob3dOb3RpZmljYXRpb25SZWxhdGVkTW8oZSk7XG4gICAgfVxuICAgIG9uTm90aWZpY2F0aW9uSXRlbVZpZXdlZCh2aWV3ZWRNbzogTm90aWZpY2F0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zJC5uZXh0KHZpZXdlZE1vKTtcbiAgICB9XG5cbiAgICBvblJlbW92ZU5vdGlmaWNhdGlvbnMoZTogeyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdOyBzaWxlbnQ6IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLnJlbW92ZU5vdGlmaWNhdGlvbihlLml0ZW1zKTtcbiAgICB9XG4gICAgb25PcGVuTm90aWZpY2F0aW9uID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IHRydWU7XG4gICAgICAgIHRoaXMuX2hhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpO1xuICAgIH07XG4gICAgb25Ob3RpZmljYXRpb25BY3Rpb24oZTogeyBpdGVtOiBOb3RpZmljYXRpb25JdGVtOyBidG46IE5vdGlmaWNhdGlvbkFjdGlvbiB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2UuRXhlY3V0ZU5vdGlmaWNhdGlvbkFjdGlvbihlLml0ZW0uVGFnLCBlLmJ0bi5UaXRsZSk7XG4gICAgfVxuICAgIG9uQ3VsdHVyZUNoYW5nZWQgPSAoY3VsdHVyZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XG4gICAgfTtcbiAgICBvbk5vdGlmaWNhdGlvbkxvYWRNb3JlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmxvYWRNb3JlKCk7XG4gICAgfVxuICAgIG9uTm90aWZpY2F0aW9uV29ya2Zsb3dDaG9pY2VTdWNjZXNzKHJlc3VsdCk6IHZvaWQge31cbiAgICBvbk5vdGlmaWNhdGlvbldvcmtmbG93Q2hvaWNlRmFpbGVkKGVycik6IHZvaWQge31cblxuICAgIG9uSGFuZGxlT3Blbk5vdGlmaWNhdGlvblBhbmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5vdGlmY2F0aW9uTG9hZGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3RpZmNhdGlvbkxvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UubG9hZE5vdGlmaWNhdGlvbnMoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbWFwTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKTogTm90aWZpY2F0aW9uSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMubWFwKChub3RpZmljYXRpb24pID0+ICh7XG4gICAgICAgICAgICAuLi5ub3RpZmljYXRpb24sXG4gICAgICAgICAgICBjb250ZW50U2FmZUh0bWw6IG5vdGlmaWNhdGlvbi5Db250ZW50XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwobm90aWZpY2F0aW9uLkNvbnRlbnQpXG4gICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICB9KSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoYW5nZUN1bHR1cmUoY3VsdHVyZTogc3RyaW5nIC8qIGN1bHR1cmUgc2FtcGxlIDpFbmdsaXNoICovKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlNldEN1bHR1cmVCeURpc3BsYXlOYW1lKGN1bHR1cmUpO1xuICAgICAgICBCYXJzYUFwaS5Cdy5OYXZpZ2F0ZVRvKCcvJyk7XG4gICAgfVxufVxuIiwiQGlmICh1c2VyTG9nZ2VkSW4kIHwgYXN5bmM7IGFzIHVzZXJsb2dnZW5kKSB7IEBpZiAobm90aWZpYXRpb25Db3VudExvYWRlZCQgfCBhc3luYzsgYXMgbm90aWZpYXRpb25Db3VudExvYWRlZCkgeyBAaWZcbihkZXZpY2VTaXplJCB8IGFzeW5jOyBhcyBkZXZpY2VTaXplKSB7IEBpZiAoc2hlbGxiYXJEYXRhKSB7XG48YnQtYmFyc2Etc2hlbGxiYXJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxuICAgIFtjc3NVcmxdPVwiY3NzVXJsJCB8IGFzeW5jXCJcbiAgICBbY3NzVmFyaWFibGVVcmxdPVwiY3NzVmFyaWFibGVVcmwkIHwgYXN5bmNcIlxuICAgIFt1c2VyUHJvZmlsZUltYWdlVXJsXT1cInVzZXJQcm9maWxlSW1hZ2VVcmwkIHwgYXN5bmNcIlxuICAgIFtjc3NDdXN0b21VcmxdPVwiY3NzQ3VzdG9tVXJsJCB8IGFzeW5jXCJcbiAgICBbdXNlckxvZ2dlZEluXT1cInRydWVcIlxuICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgIFtzaGVsbGJhckRhdGFdPVwic2hlbGxiYXJEYXRhXCJcbiAgICBbcHJvZHVjdE1lbnVDb250cm9sXT1cInByb2R1Y3RNZW51Q29udHJvbFwiXG4gICAgW3NldHRpbmdzXT1cInNldHRpbmdzXCJcbiAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgIFtpc1RhYmxldF09XCJpc1RhYmxldFwiXG4gICAgW2lzRGVza3RvcF09XCJpc0Rlc2t0b3BcIlxuICAgIFttdWx0aUxhbmd1YWdlc109XCJtdWx0aUxhbmd1YWdlc1wiXG4gICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIihub3RpZmljYXRpb25zQ291bnQkIHwgYXN5bmMpISFcIlxuICAgIFtub3RpZmljYXRpb25zXT1cIihub3RpZmljYXRpb25zJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgW25vdGlmY2F0aW9uTG9hZGVkXT1cIm5vdGlmY2F0aW9uTG9hZGVkXCJcbiAgICBbbm90aWZpY2F0aW9uTG9hZGluZ109XCIobm90aWZpY2F0aW9uTG9hZGluZyQgfCBhc3luYykgPT09IHRydWVcIlxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXG4gICAgW2xvZ29dPVwibG9nb1wiXG4gICAgW2FjdGlvbnNdPVwiYWN0aW9uc1wiXG4gICAgW3VzZXJNZW51XT1cInVzZXJNZW51XCJcbiAgICBbcHJvZHVjdFN3aXRjaGVyXT1cInByb2R1Y3RTd2l0Y2hlclwiXG4gICAgW3N1YnRpdGxlXT1cInN1YnRpdGxlXCJcbiAgICBbaXNTZXJ2aWNlRGVza109XCJpc1NlcnZpY2VEZXNrXCJcbiAgICBbc2lkZU1lbnVUZW1wbGF0ZV09XCJRdWlja0FjY2Vzc1RlbXBsYXRlXCJcbiAgICBbcHJvZHVjdE1lbnVJdGVtczFdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxuICAgIFtpc09wZW5RdWlja0FjY2Vzc109XCJpc09wZW5RdWlja0FjY2Vzc1wiXG4gICAgKGlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZCk9XCJpc09wZW5RdWlja0FjY2VzcyA9ICRldmVudFwiXG4gICAgKGN1bHR1cmVDaGFuZ2VkKT1cIm9uQ3VsdHVyZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgKG5vdGlmaWNhdGlvblZpZXdlZCk9XCJvbk5vdGlmaWNhdGlvbkl0ZW1WaWV3ZWQoJGV2ZW50KVwiXG4gICAgKG5vdGlmaWF0aW9uQWN0aW9uQ2xpY2spPVwib25Ob3RpZmljYXRpb25BY3Rpb24oJGV2ZW50KVwiXG4gICAgKHJlbW92ZU5vdGlmaWNhdGlvbik9XCJvblJlbW92ZU5vdGlmaWNhdGlvbnMoJGV2ZW50KVwiXG4gICAgKG5vdGlmaWNhdGlvbkxvYWRNb3JlKT1cIm9uTm90aWZpY2F0aW9uTG9hZE1vcmUoKVwiXG4gICAgKG9wZW5Ob3RpZmljYXRpb25QYW5lbCk9XCJvbkhhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpXCJcbj5cbjwvYnQtYmFyc2Etc2hlbGxiYXI+XG59IH0gfSB9IEBlbHNlIHsgQGlmIChub3RpZmljYXRpb25zQ291bnQkIHwgYXN5bmM7IGFzIG5vdGlmaWNhdGlvbkNvdW50KSB7XG48YnQtYmFyc2Etc2hlbGxiYXJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxuICAgIFtjc3NVcmxdPVwiJydcIlxuICAgIFtjc3NWYXJpYWJsZVVybF09XCInJ1wiXG4gICAgW2Nzc0N1c3RvbVVyXT1cIicnXCJcbiAgICBbdXNlckxvZ2dlZEluXT1cImZhbHNlXCJcbiAgICBbbXVsdGlMYW5ndWFnZXNdPVwibXVsdGlMYW5ndWFnZXNcIlxuICAgIFt1c2VyTWVudV09XCJ1c2VyTWVudVwiXG4gICAgW2xvZ29dPVwibG9nb1wiXG4gICAgW3Byb2R1Y3RNZW51SXRlbXMxXT1cInByb2R1Y3RNZW51SXRlbXMxXCJcbiAgICBbZGV2aWNlU2l6ZV09XCIoZGV2aWNlU2l6ZSQgfCBhc3luYykhIVwiXG4gICAgW3NoZWxsYmFyRGF0YV09XCJzaGVsbGJhckRhdGFcIlxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXG4gICAgW2xvZ29dPVwibG9nb1wiXG4gICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICBbaXNUYWJsZXRdPVwiaXNUYWJsZXRcIlxuICAgIFtpc0Rlc2t0b3BdPVwiaXNEZXNrdG9wXCJcbiAgICBbaXNTZXJ2aWNlRGVza109XCJpc1NlcnZpY2VEZXNrXCJcbiAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcbiAgICBbdXNlck1lbnVdPVwidXNlck1lbnVcIlxuICAgIFtwcm9kdWN0TWVudUNvbnRyb2xdPVwicHJvZHVjdE1lbnVDb250cm9sXCJcbiAgICBbcHJvZHVjdFN3aXRjaGVyXT1cInByb2R1Y3RTd2l0Y2hlclwiXG4gICAgW3N1YnRpdGxlXT1cInN1YnRpdGxlXCJcbiAgICBbc2V0dGluZ3NdPVwic2V0dGluZ3NcIlxuICAgIFtub3RpZmljYXRpb25Db3VudF09XCJ7IHVucmVhZDogMCwgYWxsOiAwIH1cIlxuICAgIFtub3RpZmljYXRpb25zXT1cIltdXCJcbiAgICBbbm90aWZjYXRpb25Mb2FkZWRdPVwidHJ1ZVwiXG4gICAgW25vdGlmaWNhdGlvbkxvYWRpbmddPVwiZmFsc2VcIlxuICAgIFtoaWRlU2hlbGxiYXJBY3Rpb25zXT1cInRydWVcIlxuICAgIFtzaG93RXh0cmFCdXR0b25dPVwidHJ1ZVwiXG4gICAgW2N1bHR1cmVzXT1cImN1bHR1cmVzXCJcbiAgICBbcHJvZHVjdE1lbnVJdGVtczFdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxuICAgIChjdWx0dXJlQ2hhbmdlZCk9XCJvbkN1bHR1cmVDaGFuZ2VkKCRldmVudClcIlxuPlxuICAgIEBmb3IoYnRuIG9mIHVzZXJNZW51O3RyYWNrIGJ0bil7XG4gICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImV4dHJhX2J0blwiXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBbbGFiZWxdPVwiYnRuLnRleHRcIlxuICAgICAgICBbZ2x5cGhdPVwiYnRuLnRleHQgPT09ICgnTG9naW4nIHwgYmJiVHJhbnNsYXRlKSA/ICdwZXJzb24tcGxhY2Vob2xkZXInIDogbnVsbFwiXG4gICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAoY2xpY2spPVwiYnRuLmNhbGxiYWNrKClcIlxuICAgID48L2J1dHRvbj5cbiAgICB9XG48L2J0LWJhcnNhLXNoZWxsYmFyPlxufSB9XG48bmctdGVtcGxhdGUgI1F1aWNrQWNjZXNzVGVtcGxhdGU+XG4gICAgQGlmICgobm90aWZpY2F0aW9uTG9hZGluZyQgfCBhc3luYykgPT09IHRydWUpIHtcbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMHB4XCI+XG4gICAgICAgIDxic3UtbWFzayBzaXplPVwic1wiPjwvYnN1LW1hc2s+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxibnJjLXJlcG9ydC1jb250YWluZXIgKm5nSWY9XCJzaWRlYmFyU2V0dGluZ3NcIiBbc2V0dGluZ3NdPVwic2lkZWJhclNldHRpbmdzXCI+IDwvYm5yYy1yZXBvcnQtY29udGFpbmVyPlxuICAgIDwhLS0gPGJ0LXBvcG92ZXItYXBwLWZpbmRlciAoY2xvc2VNZW51KT1cImlzT3BlblF1aWNrQWNjZXNzID0gZmFsc2VcIj48L2J0LXBvcG92ZXItYXBwLWZpbmRlcj4gLS0+XG48L25nLXRlbXBsYXRlPlxuIl19
|