@acorex/components 20.3.35 → 20.3.36

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.
@@ -38,6 +38,7 @@ class AXPopoverComponent extends MXBaseComponent {
38
38
  /** @ignore */
39
39
  this._disabled = false;
40
40
  this.width = input('fit-content', ...(ngDevMode ? [{ debugName: "width" }] : []));
41
+ this.forceDisableActionSheetStyle = input(false, ...(ngDevMode ? [{ debugName: "forceDisableActionSheetStyle" }] : []));
41
42
  this.translateService = inject(AXTranslationService);
42
43
  this.#init = afterNextRender(() => {
43
44
  const lang = this.translateService.getActiveLang();
@@ -502,7 +503,7 @@ class AXPopoverComponent extends MXBaseComponent {
502
503
  panelClass: panelClasses,
503
504
  width: this.width(),
504
505
  onDispose: () => this.handleOverlayDisposed(),
505
- actionSheetStyle: this.isActionsheetStyle,
506
+ actionSheetStyle: this.forceDisableActionSheetStyle() ? false : this.isActionsheetStyle,
506
507
  });
507
508
  // Store component ref if it's a component
508
509
  if (this._overlayRef.instance && 'instance' in this._overlayRef.instance) {
@@ -587,7 +588,7 @@ class AXPopoverComponent extends MXBaseComponent {
587
588
  }
588
589
  }
589
590
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
590
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: AXPopoverComponent, isStandalone: true, selector: "ax-popover", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, offsetX: { classPropertyName: "offsetX", publicName: "offsetX", isSignal: false, isRequired: false, transformFunction: null }, offsetY: { classPropertyName: "offsetY", publicName: "offsetY", isSignal: false, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: false, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: false, isRequired: false, transformFunction: null }, openOn: { classPropertyName: "openOn", publicName: "openOn", isSignal: false, isRequired: false, transformFunction: null }, closeOn: { classPropertyName: "closeOn", publicName: "closeOn", isSignal: false, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: false, isRequired: false, transformFunction: null }, openAfter: { classPropertyName: "openAfter", publicName: "openAfter", isSignal: false, isRequired: false, transformFunction: null }, closeAfter: { classPropertyName: "closeAfter", publicName: "closeAfter", isSignal: false, isRequired: false, transformFunction: null }, repositionOnScroll: { classPropertyName: "repositionOnScroll", publicName: "repositionOnScroll", isSignal: false, isRequired: false, transformFunction: null }, backdropClass: { classPropertyName: "backdropClass", publicName: "backdropClass", isSignal: false, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: false, isRequired: false, transformFunction: null }, adaptivityEnabled: { classPropertyName: "adaptivityEnabled", publicName: "adaptivityEnabled", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onOpened: "onOpened", onClosed: "onClosed" }, providers: [
591
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: AXPopoverComponent, isStandalone: true, selector: "ax-popover", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, forceDisableActionSheetStyle: { classPropertyName: "forceDisableActionSheetStyle", publicName: "forceDisableActionSheetStyle", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, offsetX: { classPropertyName: "offsetX", publicName: "offsetX", isSignal: false, isRequired: false, transformFunction: null }, offsetY: { classPropertyName: "offsetY", publicName: "offsetY", isSignal: false, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: false, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: false, isRequired: false, transformFunction: null }, openOn: { classPropertyName: "openOn", publicName: "openOn", isSignal: false, isRequired: false, transformFunction: null }, closeOn: { classPropertyName: "closeOn", publicName: "closeOn", isSignal: false, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: false, isRequired: false, transformFunction: null }, openAfter: { classPropertyName: "openAfter", publicName: "openAfter", isSignal: false, isRequired: false, transformFunction: null }, closeAfter: { classPropertyName: "closeAfter", publicName: "closeAfter", isSignal: false, isRequired: false, transformFunction: null }, repositionOnScroll: { classPropertyName: "repositionOnScroll", publicName: "repositionOnScroll", isSignal: false, isRequired: false, transformFunction: null }, backdropClass: { classPropertyName: "backdropClass", publicName: "backdropClass", isSignal: false, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: false, isRequired: false, transformFunction: null }, adaptivityEnabled: { classPropertyName: "adaptivityEnabled", publicName: "adaptivityEnabled", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onOpened: "onOpened", onClosed: "onClosed" }, providers: [
591
592
  { provide: AXFocusableComponent, useExisting: AXPopoverComponent },
592
593
  { provide: AXComponent, useExisting: AXPopoverComponent },
593
594
  ], viewQueries: [{ propertyName: "_baseTemplate", first: true, predicate: ["baseTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #baseTemplate>\n <ng-content></ng-content>\n</ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
@@ -598,7 +599,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
598
599
  { provide: AXFocusableComponent, useExisting: AXPopoverComponent },
599
600
  { provide: AXComponent, useExisting: AXPopoverComponent },
600
601
  ], template: "<ng-template #baseTemplate>\n <ng-content></ng-content>\n</ng-template>\n" }]
601
- }], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], disabled: [{
602
+ }], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], forceDisableActionSheetStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "forceDisableActionSheetStyle", required: false }] }], disabled: [{
602
603
  type: Input
603
604
  }], offsetX: [{
604
605
  type: Input
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-popover.mjs","sources":["../tmp-esm2022/popover/lib/popover.component.js","../tmp-esm2022/popover/lib/popover.module.js","../tmp-esm2022/popover/acorex-components-popover.js"],"sourcesContent":["import { AXComponent, AXFocusableComponent, MXBaseComponent, convertToPlacement, } from '@acorex/cdk/common';\nimport { AXOverlayService } from '@acorex/cdk/overlay';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DOCUMENT, ElementRef, EventEmitter, Input, Output, PLATFORM_ID, TemplateRef, ViewChild, ViewEncapsulation, afterNextRender, inject, input, } from '@angular/core';\nimport { Subject, delay, fromEvent } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * @category Components\n * A popover component with custom encapsulation and change detection settings.\n */\nexport class AXPopoverComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.platform = inject(AXPlatform);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.overlayService = inject(AXOverlayService);\n this.onKeyDownHandler = null;\n /** @ignore */\n this._overlayRef = null;\n /** @ignore */\n this._lastActiveElement = null;\n /** @ignore */\n this._targetEvents = {};\n /** @ignore */\n this._outsideClickHandler = null;\n /** @ignore */\n this._scrollHandler = null;\n /** @ignore */\n this._scrollListenerActive = false;\n /** @ignore */\n this.resizeObserver = null;\n /** @ignore */\n this.resize$ = new Subject();\n /** @ignore */\n this._disabled = false;\n this.width = input('fit-content', ...(ngDevMode ? [{ debugName: \"width\" }] : []));\n this.translateService = inject(AXTranslationService);\n this.#init = afterNextRender(() => {\n const lang = this.translateService.getActiveLang();\n let defaultPlacementDirection;\n if (lang === 'en-US') {\n defaultPlacementDirection = 'bottom-start';\n }\n else {\n defaultPlacementDirection = 'bottom-end';\n }\n if (!this.placement)\n this.placement = defaultPlacementDirection;\n const converted = this.placement\n ? convertToPlacement(this.placement)\n : convertToPlacement(defaultPlacementDirection);\n this._placements = converted;\n this.resize$.subscribe(() => {\n if (this.isOpen) {\n this.updatePosition();\n }\n });\n });\n /** @ignore */\n this._offsetX = 0;\n /** @ignore */\n this._offsetY = 0;\n /** @ignore */\n this._placements = [];\n /** @ignore */\n this._placement = null;\n /** @ignore */\n this._componentRef = null;\n /** @ignore */\n this._openOn = 'toggle';\n /** @ignore */\n this._closeOn = 'clickOut';\n /**\n * Determines if a backdrop should be displayed behind the popover.\n */\n this.hasBackdrop = false;\n /**\n * Delay in milliseconds before the popover opens after a trigger event.\n */\n this._openAfter = 200;\n /**\n * Delay in milliseconds before the popover closes after a trigger event.\n */\n this._closeAfter = 200;\n /**\n * Whether to update the popover position when scrolling.\n */\n this.repositionOnScroll = true;\n /**\n * Enables or disables adaptivity.\n */\n this.adaptivityEnabled = false;\n /**\n * Emits when the component is opened.\n * @event\n */\n this.onOpened = new EventEmitter();\n /**\n * Emits when the component is closed.\n * @event\n */\n this.onClosed = new EventEmitter();\n }\n #init;\n /**\n * Gets or sets whether the popover is disabled.\n * When disabled, the popover will not open and will close if already open.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(v) {\n this._disabled = v;\n if (this._disabled && this.isOpen) {\n this.close();\n }\n }\n /**\n * Gets or sets the horizontal offset and updates it accordingly.\n */\n get offsetX() {\n return this._offsetX;\n }\n /**\n * Sets the horizontal offset and updates it with a callback.\n */\n set offsetX(v) {\n this.setOption({\n name: 'offsetX',\n value: v,\n afterCallback: () => {\n this.updateOffset();\n },\n });\n }\n /**\n * Vertical offset with update callback.\n */\n get offsetY() {\n return this._offsetY;\n }\n /**\n * Sets the vertical offset and updates the component position.\n */\n set offsetY(v) {\n this.setOption({\n name: 'offsetY',\n value: v,\n afterCallback: () => {\n this.updateOffset();\n },\n });\n }\n /**\n * Gets or sets the target element, supporting Element, ElementRef, or MXBaseComponent.\n */\n get target() {\n return this._target;\n }\n /**\n * Sets the target element and updates event bindings.\n */\n set target(v) {\n this.removeTargetEvents();\n if (v instanceof Element)\n this._target = v;\n else if (v instanceof ElementRef)\n this._target = v.nativeElement;\n else if (typeof v?.getHostElement == 'function')\n this._target = v.getHostElement();\n this.bindTargetEvents();\n }\n /**\n * Gets the current placement of the component.\n */\n get placement() {\n return this._placement;\n }\n /**\n * Sets the component's placement and updates its position settings.\n */\n set placement(v) {\n this.setOption({\n name: 'placement',\n value: v,\n afterCallback: (o, n) => {\n if (!n)\n return;\n const converted = convertToPlacement(n);\n this._placements = converted;\n this.updateOffset();\n if (this._overlayRef) {\n this._overlayRef.updatePosition();\n }\n },\n });\n }\n /**\n * Gets the reference to the component.\n */\n get componentRef() {\n return this._componentRef;\n }\n /**\n * Gets or sets the trigger for opening the popover and updates target events.\n */\n get openOn() {\n return this._openOn;\n }\n /**\n * Sets the trigger for opening the popover and updates target events.\n */\n set openOn(v) {\n this.setOption({\n name: 'openOn',\n value: v,\n afterCallback: () => {\n this.bindTargetEvents();\n },\n });\n }\n /**\n * Gets or sets the trigger for closing the popover.\n */\n get closeOn() {\n return this._closeOn;\n }\n /**\n * Sets the trigger for closing the popover and rebinds target events.\n */\n set closeOn(v) {\n this.setOption({\n name: 'closeOn',\n value: v,\n afterCallback: () => {\n this.bindTargetEvents();\n },\n });\n }\n get openAfter() {\n return this._openAfter;\n }\n set openAfter(value) {\n this._openAfter = value;\n this.bindTargetEvents();\n }\n get closeAfter() {\n return this._closeAfter;\n }\n set closeAfter(value) {\n this._closeAfter = value;\n this.bindTargetEvents();\n }\n /** @ignore */\n _emitOnOpenedEvent() {\n this.onOpened.emit({\n component: this,\n htmlElement: this.getHostElement(),\n });\n }\n /** @ignore */\n _emitOnClosedEvent() {\n this.onClosed.emit({\n component: this,\n htmlElement: this.getHostElement(),\n });\n }\n /** @ignore */\n removeTargetEvents() {\n Object.entries(this._targetEvents).forEach((e) => {\n e[1]?.unsubscribe();\n });\n this._targetEvents = {};\n }\n /** @ignore */\n bindTargetEvents() {\n this.removeTargetEvents();\n if (!this._target)\n return;\n const targetMouseEnter$ = fromEvent(this._target, 'mouseenter');\n const targetMouseLeave$ = fromEvent(this._target, 'mouseleave');\n if (this.openOn === 'hover') {\n this._targetEvents.mouseenter = targetMouseEnter$.pipe(delay(this.openAfter)).subscribe(() => {\n this.open();\n });\n }\n if (this.closeOn === 'leave') {\n this._targetEvents.mouseleave = targetMouseLeave$.pipe(delay(this.closeAfter)).subscribe(() => {\n this.close();\n });\n }\n if (this.openOn === 'click' || this.openOn === 'toggle') {\n const click$ = fromEvent(this._target, 'click');\n this._targetEvents.click = click$.subscribe(() => {\n this.openOn === 'toggle' ? this.toggle() : this.open();\n });\n }\n }\n /** @ignore */\n bindOverlayEvents() {\n const overlayElement = this._overlayRef?.overlayElement;\n if (!overlayElement)\n return;\n overlayElement.style.pointerEvents = 'none';\n // Outside click handler\n if (this.closeOn === 'clickOut') {\n this._outsideClickHandler = (e) => {\n const el = e.target;\n if (this.isOpen && !this._target?.contains(el) && !overlayElement?.contains(el)) {\n // Check if the click is inside a child overlay (e.g., selectbox dropdown)\n // Child overlays have a higher z-index than this popover\n if (this.isClickInsideChildOverlay(el)) {\n return;\n }\n this.close();\n }\n };\n this.document.addEventListener('mousedown', this._outsideClickHandler);\n }\n // Scroll listener to close on scroll\n this.setupScrollListener();\n // Resize observer\n this.initializeResizeObserver();\n setTimeout(() => {\n overlayElement.style.pointerEvents = 'auto';\n }, this.openAfter);\n }\n /** @ignore */\n removeOverlayEvents() {\n if (this._outsideClickHandler) {\n this.document.removeEventListener('mousedown', this._outsideClickHandler);\n this._outsideClickHandler = null;\n }\n this.removeScrollListener();\n }\n /** @ignore */\n setupScrollListener() {\n if (!this.repositionOnScroll || !isPlatformBrowser(this.platformID)) {\n return;\n }\n this._scrollHandler = () => {\n // Ignore scroll events during initial setup\n if (!this._scrollListenerActive) {\n return;\n }\n // Update popover position to follow the anchor element\n this._overlayRef?.updatePosition();\n };\n // Listen on document with capture to catch all scroll events\n this.document.addEventListener('scroll', this._scrollHandler, true);\n window.addEventListener('scroll', this._scrollHandler, true);\n // Delay activation to prevent initial layout scroll events from triggering\n requestAnimationFrame(() => {\n this._scrollListenerActive = true;\n });\n }\n /** @ignore */\n removeScrollListener() {\n if (this._scrollHandler) {\n this.document.removeEventListener('scroll', this._scrollHandler, true);\n window.removeEventListener('scroll', this._scrollHandler, true);\n this._scrollHandler = null;\n }\n this._scrollListenerActive = false;\n }\n /**\n * Checks if the clicked element is inside a child overlay (e.g., selectbox dropdown).\n * Child overlays are identified by having a higher z-index than this popover's overlay.\n * @ignore\n */\n isClickInsideChildOverlay(element) {\n const overlayElement = this._overlayRef?.overlayElement;\n if (!overlayElement)\n return false;\n // Find if the clicked element is inside any overlay container\n const clickedOverlay = element.closest('.ax-overlay-container');\n if (!clickedOverlay)\n return false;\n // Get z-index values\n const popoverZIndex = parseInt(overlayElement.style.zIndex || '0', 10);\n const clickedZIndex = parseInt(clickedOverlay.style.zIndex || '0', 10);\n // If the clicked overlay has a higher z-index, it's a child overlay\n return clickedZIndex > popoverZIndex;\n }\n /** @ignore */\n handleOverlayDisposed() {\n // Called when overlay is disposed externally (e.g., by scroll)\n this.disconnectResizeObserver();\n this.removeOverlayEvents();\n this.removeKeyDownListener();\n this._overlayRef = null;\n this._componentRef = null;\n this.restoreFocus();\n this._emitOnClosedEvent();\n }\n /**\n * Toggles the component's open state.\n */\n toggle() {\n this.isOpen ? this.close() : this.open();\n }\n /**\n * Closes the component if it's open, detaches the overlay, restores focus, and emits the closed event.\n */\n close() {\n if (!this.isOpen) {\n return;\n }\n this.disconnectResizeObserver();\n this.removeOverlayEvents();\n this.removeKeyDownListener();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._componentRef = null;\n this.restoreFocus();\n this._emitOnClosedEvent();\n }\n /**\n * Opens the component if it's not already open, saves focus, opens the overlay, and emits the opened event.\n */\n async open() {\n if (this.isOpen || this.disabled) {\n return;\n }\n this.addKeyDownListener();\n this.saveFocus();\n await this.openOverlayInternal();\n this._emitOnOpenedEvent();\n }\n /** @ignore */\n addKeyDownListener() {\n if (isPlatformBrowser(this.platformID)) {\n this.onKeyDownHandler = (e) => {\n if (e.key === 'Escape') {\n this.close();\n }\n };\n this.document.addEventListener('keydown', this.onKeyDownHandler);\n }\n }\n /** @ignore */\n removeKeyDownListener() {\n if (this.onKeyDownHandler) {\n this.document.removeEventListener('keydown', this.onKeyDownHandler);\n this.onKeyDownHandler = null;\n }\n }\n /** @ignore */\n saveFocus() {\n if (isPlatformBrowser(this.platformID)) {\n this._lastActiveElement = this.document.activeElement;\n }\n }\n /** @ignore */\n restoreFocus() {\n if (this._lastActiveElement instanceof HTMLElement) {\n this._lastActiveElement?.focus?.();\n }\n }\n /** @ignore */\n async openOverlayInternal() {\n const targetRef = this._target;\n if (!targetRef)\n return;\n // Build panel classes\n const panelClasses = ['ax-animate-fadeIn', 'ax-animate-faster'];\n if (this.platform.isDark()) {\n panelClasses.push('ax-dark');\n }\n if (this.panelClass) {\n panelClasses.push(this.panelClass);\n }\n // Determine content to display\n let contentToRender;\n let inputs;\n if (this.content instanceof TemplateRef) {\n contentToRender = this.content;\n }\n else if (typeof this.content === 'function') {\n contentToRender = this.content;\n inputs = this.context;\n }\n else {\n contentToRender = this._baseTemplate;\n }\n // Create the overlay\n this._overlayRef = await this.overlayService.create(contentToRender, {\n inputs,\n anchorOptions: {\n anchor: targetRef,\n placement: this._placement,\n offsetX: this._offsetX,\n offsetY: this._offsetY,\n autoFlip: true,\n },\n panelClass: panelClasses,\n width: this.width(),\n onDispose: () => this.handleOverlayDisposed(),\n actionSheetStyle: this.isActionsheetStyle,\n });\n // Store component ref if it's a component\n if (this._overlayRef.instance && 'instance' in this._overlayRef.instance) {\n this._componentRef = this._overlayRef.instance;\n if (this.context && this._componentRef.instance) {\n Object.assign(this._componentRef.instance, this.context);\n }\n }\n // Bind overlay events\n this.bindOverlayEvents();\n }\n /**\n * Checks if the overlay is currently open.\n * @returns {boolean}\n */\n get isOpen() {\n return this._overlayRef !== null;\n }\n /**\n * Determines if the actionsheet style should be applied.\n * @returns {boolean}\n */\n get isActionsheetStyle() {\n return this.platform.is('SM');\n }\n /** @ignore */\n updateOffset() {\n this._placements?.forEach((p) => {\n if (this._offsetY != null)\n p.offsetY = this._offsetY;\n if (this._offsetX != null)\n p.offsetX = this._offsetX;\n });\n }\n /**\n * Updates the position of the overlay and focuses on it.\n */\n updatePosition() {\n this._overlayRef?.updatePosition();\n this.focus();\n }\n /**\n * Focuses the overlay element.\n */\n focus() {\n // Optional focus behavior\n }\n /**\n * Brings this popover to the front of all other overlays.\n */\n bringToFront() {\n this._overlayRef?.bringToFront();\n }\n /** @ignore */\n initializeResizeObserver() {\n if (!isPlatformBrowser(this.platformID) || !this._overlayRef?.overlayElement) {\n return;\n }\n this.disconnectResizeObserver();\n this.resizeObserver = new ResizeObserver(() => {\n this.resize$.next();\n });\n this.resizeObserver.observe(this._overlayRef.overlayElement);\n }\n /** @ignore */\n disconnectResizeObserver() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n /** @ignore */\n ngOnDestroy() {\n this.disconnectResizeObserver();\n this.resize$.complete();\n this.removeTargetEvents();\n this.removeOverlayEvents();\n this.removeKeyDownListener();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.16\", type: AXPopoverComponent, isStandalone: true, selector: \"ax-popover\", inputs: { width: { classPropertyName: \"width\", publicName: \"width\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, offsetX: { classPropertyName: \"offsetX\", publicName: \"offsetX\", isSignal: false, isRequired: false, transformFunction: null }, offsetY: { classPropertyName: \"offsetY\", publicName: \"offsetY\", isSignal: false, isRequired: false, transformFunction: null }, target: { classPropertyName: \"target\", publicName: \"target\", isSignal: false, isRequired: false, transformFunction: null }, placement: { classPropertyName: \"placement\", publicName: \"placement\", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: \"content\", publicName: \"content\", isSignal: false, isRequired: false, transformFunction: null }, openOn: { classPropertyName: \"openOn\", publicName: \"openOn\", isSignal: false, isRequired: false, transformFunction: null }, closeOn: { classPropertyName: \"closeOn\", publicName: \"closeOn\", isSignal: false, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: \"hasBackdrop\", publicName: \"hasBackdrop\", isSignal: false, isRequired: false, transformFunction: null }, openAfter: { classPropertyName: \"openAfter\", publicName: \"openAfter\", isSignal: false, isRequired: false, transformFunction: null }, closeAfter: { classPropertyName: \"closeAfter\", publicName: \"closeAfter\", isSignal: false, isRequired: false, transformFunction: null }, repositionOnScroll: { classPropertyName: \"repositionOnScroll\", publicName: \"repositionOnScroll\", isSignal: false, isRequired: false, transformFunction: null }, backdropClass: { classPropertyName: \"backdropClass\", publicName: \"backdropClass\", isSignal: false, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: \"panelClass\", publicName: \"panelClass\", isSignal: false, isRequired: false, transformFunction: null }, adaptivityEnabled: { classPropertyName: \"adaptivityEnabled\", publicName: \"adaptivityEnabled\", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onOpened: \"onOpened\", onClosed: \"onClosed\" }, providers: [\n { provide: AXFocusableComponent, useExisting: AXPopoverComponent },\n { provide: AXComponent, useExisting: AXPopoverComponent },\n ], viewQueries: [{ propertyName: \"_baseTemplate\", first: true, predicate: [\"baseTemplate\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<ng-template #baseTemplate>\\n <ng-content></ng-content>\\n</ng-template>\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-popover', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: AXFocusableComponent, useExisting: AXPopoverComponent },\n { provide: AXComponent, useExisting: AXPopoverComponent },\n ], template: \"<ng-template #baseTemplate>\\n <ng-content></ng-content>\\n</ng-template>\\n\" }]\n }], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: \"width\", required: false }] }], disabled: [{\n type: Input\n }], offsetX: [{\n type: Input\n }], offsetY: [{\n type: Input\n }], target: [{\n type: Input\n }], placement: [{\n type: Input\n }], _baseTemplate: [{\n type: ViewChild,\n args: ['baseTemplate', { static: true }]\n }], content: [{\n type: Input\n }], openOn: [{\n type: Input\n }], closeOn: [{\n type: Input\n }], hasBackdrop: [{\n type: Input\n }], openAfter: [{\n type: Input\n }], closeAfter: [{\n type: Input\n }], repositionOnScroll: [{\n type: Input\n }], backdropClass: [{\n type: Input\n }], panelClass: [{\n type: Input\n }], adaptivityEnabled: [{\n type: Input\n }], onOpened: [{\n type: Output\n }], onClosed: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3BvcG92ZXIvc3JjL2xpYi9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvbGliL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFHWCxvQkFBb0IsRUFFcEIsZUFBZSxFQUNmLGtCQUFrQixHQUNuQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNL0Q7OztHQUdHO0FBV0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGVBQWU7SUFWdkQ7O1FBV1UsYUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFN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QUFDLE1BQU0sYUFDcEM7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxvQkFBb0IsRUFBRTt3QkFDbEUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsb0JBQW9CLEVBQUU7cUJBQzFEOztzQkEwRUEsS0FBSzs7c0JBaUJMLEtBQUs7O3NCQXdCTCxLQUFLOztzQkF3QkwsS0FBSzs7c0JBeUJMLEtBQUs7O3NCQXdDTCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O3NCQU0xQyxLQUFLOztzQkFTTCxLQUFLOztzQkF3QkwsS0FBSzs7c0JBcUJMLEtBQUs7O3NCQVFMLEtBQUs7O3NCQWVMLEtBQUs7O3NCQWFMLEtBQUs7O3NCQU1MLEtBQUs7O3NCQU1MLEtBQUs7O3NCQU1MLEtBQUs7O3NCQU9MLE1BQU07O3NCQU9OLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENvbXBvbmVudCxcbiAgQVhDb25uZWN0ZWRQb3NpdGlvbixcbiAgQVhFdmVudCxcbiAgQVhGb2N1c2FibGVDb21wb25lbnQsXG4gIEFYUGxhY2VtZW50VHlwZSxcbiAgTVhCYXNlQ29tcG9uZW50LFxuICBjb252ZXJ0VG9QbGFjZW1lbnQsXG59IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWE92ZXJsYXlSZWYsIEFYT3ZlcmxheVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEFYQ29tcG9uZW50VHlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS9jb21wb25lbnRzJztcbmltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBET0NVTUVOVCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGVsYXksIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBBWFBvcG92ZXJPcGVuVHJpZ2dlciA9ICdtYW51YWwnIHwgJ2NsaWNrJyB8ICdob3ZlcicgfCAndG9nZ2xlJztcblxuZXhwb3J0IHR5cGUgQVhQb3BvdmVyQ2xvc2VUcmlnZ2VyID0gJ21hbnVhbCcgfCAnY2xpY2tPdXQnIHwgJ2xlYXZlJztcblxuLyoqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICogQSBwb3BvdmVyIGNvbXBvbmVudCB3aXRoIGN1c3RvbSBlbmNhcHN1bGF0aW9uIGFuZCBjaGFuZ2UgZGV0ZWN0aW9uIHNldHRpbmdzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1wb3BvdmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWEZvY3VzYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUG9wb3ZlckNvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFBvcG92ZXJDb21wb25lbnQgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQb3BvdmVyQ29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBwbGF0Zm9ybSA9IGluamVjdChBWFBsYXRmb3JtKTtcbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgb3ZlcmxheVNlcnZpY2UgPSBpbmplY3QoQVhPdmVybGF5U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBvbktleURvd25IYW5kbGVyOiAoKGU6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogQVhPdmVybGF5UmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfbGFzdEFjdGl2ZUVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF90YXJnZXRFdmVudHM6IHtcbiAgICBtb3VzZWVudGVyPzogU3Vic2NyaXB0aW9uO1xuICAgIG1vdXNlbGVhdmU/OiBTdWJzY3JpcHRpb247XG4gICAgY2xpY2s/OiBTdWJzY3JpcHRpb247XG4gIH0gPSB7fTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9vdXRzaWRlQ2xpY2tIYW5kbGVyOiAoKGU6IE1vdXNlRXZlbnQpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfc2Nyb2xsSGFuZGxlcjogKChlOiBFdmVudCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9zY3JvbGxMaXN0ZW5lckFjdGl2ZSA9IGZhbHNlO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVzaXplJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICByZWFkb25seSB3aWR0aCA9IGlucHV0PHN0cmluZz4oJ2ZpdC1jb250ZW50Jyk7XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICAjaW5pdCA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgY29uc3QgbGFuZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXRBY3RpdmVMYW5nKCk7XG5cbiAgICBsZXQgZGVmYXVsdFBsYWNlbWVudERpcmVjdGlvbjogQVhQbGFjZW1lbnRUeXBlO1xuXG4gICAgaWYgKGxhbmcgPT09ICdlbi1VUycpIHtcbiAgICAgIGRlZmF1bHRQbGFjZW1lbnREaXJlY3Rpb24gPSAnYm90dG9tLXN0YXJ0JztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVmYXVsdFBsYWNlbWVudERpcmVjdGlvbiA9ICdib3R0b20tZW5kJztcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGxhY2VtZW50KSB0aGlzLnBsYWNlbWVudCA9IGRlZmF1bHRQbGFjZW1lbnREaXJlY3Rpb247XG5cbiAgICBjb25zdCBjb252ZXJ0ZWQgPSB0aGlzLnBsYWNlbWVudFxuICAgICAgPyBjb252ZXJ0VG9QbGFjZW1lbnQodGhpcy5wbGFjZW1lbnQpXG4gICAgICA6IGNvbnZlcnRUb1BsYWNlbWVudChkZWZhdWx0UGxhY2VtZW50RGlyZWN0aW9uKTtcblxuICAgIHRoaXMuX3BsYWNlbWVudHMgPSBjb252ZXJ0ZWQ7XG5cbiAgICB0aGlzLnJlc2l6ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBHZXRzIG9yIHNldHMgd2hldGhlciB0aGUgcG9wb3ZlciBpcyBkaXNhYmxlZC5cbiAgICogV2hlbiBkaXNhYmxlZCwgdGhlIHBvcG92ZXIgd2lsbCBub3Qgb3BlbiBhbmQgd2lsbCBjbG9zZSBpZiBhbHJlYWR5IG9wZW4uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHY7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfb2Zmc2V0WCA9IDA7XG5cbiAgLyoqXG4gICAqIEdldHMgb3Igc2V0cyB0aGUgaG9yaXpvbnRhbCBvZmZzZXQgYW5kIHVwZGF0ZXMgaXQgYWNjb3JkaW5nbHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IG9mZnNldFgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb2Zmc2V0WDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBob3Jpem9udGFsIG9mZnNldCBhbmQgdXBkYXRlcyBpdCB3aXRoIGEgY2FsbGJhY2suXG4gICAqL1xuICBwdWJsaWMgc2V0IG9mZnNldFgodjogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ29mZnNldFgnLFxuICAgICAgdmFsdWU6IHYsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlT2Zmc2V0KCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfb2Zmc2V0WSA9IDA7XG5cbiAgLyoqXG4gICAqIFZlcnRpY2FsIG9mZnNldCB3aXRoIHVwZGF0ZSBjYWxsYmFjay5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgb2Zmc2V0WSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9vZmZzZXRZO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZlcnRpY2FsIG9mZnNldCBhbmQgdXBkYXRlcyB0aGUgY29tcG9uZW50IHBvc2l0aW9uLlxuICAgKi9cbiAgcHVibGljIHNldCBvZmZzZXRZKHY6IG51bWJlcikge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdvZmZzZXRZJyxcbiAgICAgIHZhbHVlOiB2LFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZU9mZnNldCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX3RhcmdldCE6IEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEdldHMgb3Igc2V0cyB0aGUgdGFyZ2V0IGVsZW1lbnQsIHN1cHBvcnRpbmcgRWxlbWVudCwgRWxlbWVudFJlZiwgb3IgTVhCYXNlQ29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB0YXJnZXQoKTogRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBNWEJhc2VDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLl90YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdGFyZ2V0IGVsZW1lbnQgYW5kIHVwZGF0ZXMgZXZlbnQgYmluZGluZ3MuXG4gICAqL1xuICBwdWJsaWMgc2V0IHRhcmdldCh2OiBFbGVtZW50IHwgRWxlbWVudFJlZiB8IE1YQmFzZUNvbXBvbmVudCkge1xuICAgIHRoaXMucmVtb3ZlVGFyZ2V0RXZlbnRzKCk7XG4gICAgaWYgKHYgaW5zdGFuY2VvZiBFbGVtZW50KSB0aGlzLl90YXJnZXQgPSB2O1xuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBFbGVtZW50UmVmKSB0aGlzLl90YXJnZXQgPSB2Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgZWxzZSBpZiAodHlwZW9mIHY/LmdldEhvc3RFbGVtZW50ID09ICdmdW5jdGlvbicpIHRoaXMuX3RhcmdldCA9IHYuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICB0aGlzLmJpbmRUYXJnZXRFdmVudHMoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX3BsYWNlbWVudHM6IEFYQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtdO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX3BsYWNlbWVudDogQVhQbGFjZW1lbnRUeXBlID0gbnVsbDtcblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBwbGFjZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgcGxhY2VtZW50KCk6IEFYUGxhY2VtZW50VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb21wb25lbnQncyBwbGFjZW1lbnQgYW5kIHVwZGF0ZXMgaXRzIHBvc2l0aW9uIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIHNldCBwbGFjZW1lbnQodjogQVhQbGFjZW1lbnRUeXBlKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3BsYWNlbWVudCcsXG4gICAgICB2YWx1ZTogdixcbiAgICAgIGFmdGVyQ2FsbGJhY2s6IChvLCBuKSA9PiB7XG4gICAgICAgIGlmICghbikgcmV0dXJuO1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWQgPSBjb252ZXJ0VG9QbGFjZW1lbnQobik7XG4gICAgICAgIHRoaXMuX3BsYWNlbWVudHMgPSBjb252ZXJ0ZWQ7XG4gICAgICAgIHRoaXMudXBkYXRlT2Zmc2V0KCk7XG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogR2V0cyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNvbXBvbmVudFJlZigpOiBDb21wb25lbnRSZWY8dW5rbm93bj4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50UmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvbGRzIHRoZSBjb250ZXh0IGRhdGEgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgY29udGV4dDogdW5rbm93bjtcblxuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKCdiYXNlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBfYmFzZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgY29udGVudCB0byBiZSBkaXNwbGF5ZWQsIHdoaWNoIGNhbiBiZSBhIHRlbXBsYXRlIG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgY29udGVudDogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBBWENvbXBvbmVudFR5cGU8dW5rbm93bj47XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfb3Blbk9uOiBBWFBvcG92ZXJPcGVuVHJpZ2dlciA9ICd0b2dnbGUnO1xuXG4gIC8qKlxuICAgKiBHZXRzIG9yIHNldHMgdGhlIHRyaWdnZXIgZm9yIG9wZW5pbmcgdGhlIHBvcG92ZXIgYW5kIHVwZGF0ZXMgdGFyZ2V0IGV2ZW50cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgb3Blbk9uKCk6IEFYUG9wb3Zlck9wZW5UcmlnZ2VyIHtcbiAgICByZXR1cm4gdGhpcy5fb3Blbk9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRyaWdnZXIgZm9yIG9wZW5pbmcgdGhlIHBvcG92ZXIgYW5kIHVwZGF0ZXMgdGFyZ2V0IGV2ZW50cy5cbiAgICovXG4gIHB1YmxpYyBzZXQgb3Blbk9uKHY6IEFYUG9wb3Zlck9wZW5UcmlnZ2VyKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ29wZW5PbicsXG4gICAgICB2YWx1ZTogdixcbiAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5iaW5kVGFyZ2V0RXZlbnRzKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfY2xvc2VPbjogQVhQb3BvdmVyQ2xvc2VUcmlnZ2VyID0gJ2NsaWNrT3V0JztcblxuICAvKipcbiAgICogR2V0cyBvciBzZXRzIHRoZSB0cmlnZ2VyIGZvciBjbG9zaW5nIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBjbG9zZU9uKCk6IEFYUG9wb3ZlckNsb3NlVHJpZ2dlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlT247XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdHJpZ2dlciBmb3IgY2xvc2luZyB0aGUgcG9wb3ZlciBhbmQgcmViaW5kcyB0YXJnZXQgZXZlbnRzLlxuICAgKi9cbiAgcHVibGljIHNldCBjbG9zZU9uKHY6IEFYUG9wb3ZlckNsb3NlVHJpZ2dlcikge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdjbG9zZU9uJyxcbiAgICAgIHZhbHVlOiB2LFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLmJpbmRUYXJnZXRFdmVudHMoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGJhY2tkcm9wIHNob3VsZCBiZSBkaXNwbGF5ZWQgYmVoaW5kIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgQElucHV0KClcbiAgaGFzQmFja2Ryb3AgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgcG9wb3ZlciBvcGVucyBhZnRlciBhIHRyaWdnZXIgZXZlbnQuXG4gICAqL1xuICBwcml2YXRlIF9vcGVuQWZ0ZXIgPSAyMDA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBvcGVuQWZ0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5BZnRlcjtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgb3BlbkFmdGVyKHZhbHVlKSB7XG4gICAgdGhpcy5fb3BlbkFmdGVyID0gdmFsdWU7XG4gICAgdGhpcy5iaW5kVGFyZ2V0RXZlbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgcG9wb3ZlciBjbG9zZXMgYWZ0ZXIgYSB0cmlnZ2VyIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfY2xvc2VBZnRlciA9IDIwMDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGNsb3NlQWZ0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlQWZ0ZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0IGNsb3NlQWZ0ZXIodmFsdWUpIHtcbiAgICB0aGlzLl9jbG9zZUFmdGVyID0gdmFsdWU7XG4gICAgdGhpcy5iaW5kVGFyZ2V0RXZlbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byB1cGRhdGUgdGhlIHBvcG92ZXIgcG9zaXRpb24gd2hlbiBzY3JvbGxpbmcuXG4gICAqL1xuICBASW5wdXQoKVxuICByZXBvc2l0aW9uT25TY3JvbGwgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGJhY2tkcm9wIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBiYWNrZHJvcENsYXNzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgcGFuZWwgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHBhbmVsQ2xhc3M6IHN0cmluZztcblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhZGFwdGl2aXR5LlxuICAgKi9cbiAgQElucHV0KClcbiAgYWRhcHRpdml0eUVuYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgY29tcG9uZW50IGlzIG9wZW5lZC5cbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25PcGVuZWQ6IEV2ZW50RW1pdHRlcjxBWEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhFdmVudD4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGNsb3NlZC5cbiAgICogQGV2ZW50XG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25DbG9zZWQ6IEV2ZW50RW1pdHRlcjxBWEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhFdmVudD4oKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9lbWl0T25PcGVuZWRFdmVudCgpIHtcbiAgICB0aGlzLm9uT3BlbmVkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX2VtaXRPbkNsb3NlZEV2ZW50KCkge1xuICAgIHRoaXMub25DbG9zZWQuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZW1vdmVUYXJnZXRFdmVudHMoKTogdm9pZCB7XG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5fdGFyZ2V0RXZlbnRzKS5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBlWzFdPy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuX3RhcmdldEV2ZW50cyA9IHt9O1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBiaW5kVGFyZ2V0RXZlbnRzKCkge1xuICAgIHRoaXMucmVtb3ZlVGFyZ2V0RXZlbnRzKCk7XG4gICAgaWYgKCF0aGlzLl90YXJnZXQpIHJldHVybjtcbiAgICBjb25zdCB0YXJnZXRNb3VzZUVudGVyJCA9IGZyb21FdmVudCh0aGlzLl90YXJnZXQsICdtb3VzZWVudGVyJyk7XG4gICAgY29uc3QgdGFyZ2V0TW91c2VMZWF2ZSQgPSBmcm9tRXZlbnQodGhpcy5fdGFyZ2V0LCAnbW91c2VsZWF2ZScpO1xuXG4gICAgaWYgKHRoaXMub3Blbk9uID09PSAnaG92ZXInKSB7XG4gICAgICB0aGlzLl90YXJnZXRFdmVudHMubW91c2VlbnRlciA9IHRhcmdldE1vdXNlRW50ZXIkLnBpcGUoZGVsYXkodGhpcy5vcGVuQWZ0ZXIpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNsb3NlT24gPT09ICdsZWF2ZScpIHtcbiAgICAgIHRoaXMuX3RhcmdldEV2ZW50cy5tb3VzZWxlYXZlID0gdGFyZ2V0TW91c2VMZWF2ZSQucGlwZShkZWxheSh0aGlzLmNsb3NlQWZ0ZXIpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcGVuT24gPT09ICdjbGljaycgfHwgdGhpcy5vcGVuT24gPT09ICd0b2dnbGUnKSB7XG4gICAgICBjb25zdCBjbGljayQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fdGFyZ2V0LCAnY2xpY2snKTtcbiAgICAgIHRoaXMuX3RhcmdldEV2ZW50cy5jbGljayA9IGNsaWNrJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9wZW5PbiA9PT0gJ3RvZ2dsZScgPyB0aGlzLnRvZ2dsZSgpIDogdGhpcy5vcGVuKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGJpbmRPdmVybGF5RXZlbnRzKCkge1xuICAgIGNvbnN0IG92ZXJsYXlFbGVtZW50ID0gdGhpcy5fb3ZlcmxheVJlZj8ub3ZlcmxheUVsZW1lbnQ7XG4gICAgaWYgKCFvdmVybGF5RWxlbWVudCkgcmV0dXJuO1xuICAgIG92ZXJsYXlFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG5cbiAgICAvLyBPdXRzaWRlIGNsaWNrIGhhbmRsZXJcbiAgICBpZiAodGhpcy5jbG9zZU9uID09PSAnY2xpY2tPdXQnKSB7XG4gICAgICB0aGlzLl9vdXRzaWRlQ2xpY2tIYW5kbGVyID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSBlLnRhcmdldCBhcyBFbGVtZW50O1xuICAgICAgICBpZiAodGhpcy5pc09wZW4gJiYgIXRoaXMuX3RhcmdldD8uY29udGFpbnMoZWwpICYmICFvdmVybGF5RWxlbWVudD8uY29udGFpbnMoZWwpKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNsaWNrIGlzIGluc2lkZSBhIGNoaWxkIG92ZXJsYXkgKGUuZy4sIHNlbGVjdGJveCBkcm9wZG93bilcbiAgICAgICAgICAvLyBDaGlsZCBvdmVybGF5cyBoYXZlIGEgaGlnaGVyIHotaW5kZXggdGhhbiB0aGlzIHBvcG92ZXJcbiAgICAgICAgICBpZiAodGhpcy5pc0NsaWNrSW5zaWRlQ2hpbGRPdmVybGF5KGVsKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuX291dHNpZGVDbGlja0hhbmRsZXIpO1xuICAgIH1cblxuICAgIC8vIFNjcm9sbCBsaXN0ZW5lciB0byBjbG9zZSBvbiBzY3JvbGxcbiAgICB0aGlzLnNldHVwU2Nyb2xsTGlzdGVuZXIoKTtcblxuICAgIC8vIFJlc2l6ZSBvYnNlcnZlclxuICAgIHRoaXMuaW5pdGlhbGl6ZVJlc2l6ZU9ic2VydmVyKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG92ZXJsYXlFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnYXV0byc7XG4gICAgfSwgdGhpcy5vcGVuQWZ0ZXIpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZW1vdmVPdmVybGF5RXZlbnRzKCkge1xuICAgIGlmICh0aGlzLl9vdXRzaWRlQ2xpY2tIYW5kbGVyKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuX291dHNpZGVDbGlja0hhbmRsZXIpO1xuICAgICAgdGhpcy5fb3V0c2lkZUNsaWNrSGFuZGxlciA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMucmVtb3ZlU2Nyb2xsTGlzdGVuZXIoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgc2V0dXBTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICBpZiAoIXRoaXMucmVwb3NpdGlvbk9uU2Nyb2xsIHx8ICFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2Nyb2xsSGFuZGxlciA9ICgpID0+IHtcbiAgICAgIC8vIElnbm9yZSBzY3JvbGwgZXZlbnRzIGR1cmluZyBpbml0aWFsIHNldHVwXG4gICAgICBpZiAoIXRoaXMuX3Njcm9sbExpc3RlbmVyQWN0aXZlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIHBvcG92ZXIgcG9zaXRpb24gdG8gZm9sbG93IHRoZSBhbmNob3IgZWxlbWVudFxuICAgICAgdGhpcy5fb3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTtcbiAgICB9O1xuXG4gICAgLy8gTGlzdGVuIG9uIGRvY3VtZW50IHdpdGggY2FwdHVyZSB0byBjYXRjaCBhbGwgc2Nyb2xsIGV2ZW50c1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fc2Nyb2xsSGFuZGxlciwgdHJ1ZSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbEhhbmRsZXIsIHRydWUpO1xuXG4gICAgLy8gRGVsYXkgYWN0aXZhdGlvbiB0byBwcmV2ZW50IGluaXRpYWwgbGF5b3V0IHNjcm9sbCBldmVudHMgZnJvbSB0cmlnZ2VyaW5nXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuX3Njcm9sbExpc3RlbmVyQWN0aXZlID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVtb3ZlU2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgaWYgKHRoaXMuX3Njcm9sbEhhbmRsZXIpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fc2Nyb2xsSGFuZGxlciwgdHJ1ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fc2Nyb2xsSGFuZGxlciwgdHJ1ZSk7XG4gICAgICB0aGlzLl9zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5fc2Nyb2xsTGlzdGVuZXJBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNsaWNrZWQgZWxlbWVudCBpcyBpbnNpZGUgYSBjaGlsZCBvdmVybGF5IChlLmcuLCBzZWxlY3Rib3ggZHJvcGRvd24pLlxuICAgKiBDaGlsZCBvdmVybGF5cyBhcmUgaWRlbnRpZmllZCBieSBoYXZpbmcgYSBoaWdoZXIgei1pbmRleCB0aGFuIHRoaXMgcG9wb3ZlcidzIG92ZXJsYXkuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgaXNDbGlja0luc2lkZUNoaWxkT3ZlcmxheShlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3ZlcmxheUVsZW1lbnQgPSB0aGlzLl9vdmVybGF5UmVmPy5vdmVybGF5RWxlbWVudDtcbiAgICBpZiAoIW92ZXJsYXlFbGVtZW50KSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBGaW5kIGlmIHRoZSBjbGlja2VkIGVsZW1lbnQgaXMgaW5zaWRlIGFueSBvdmVybGF5IGNvbnRhaW5lclxuICAgIGNvbnN0IGNsaWNrZWRPdmVybGF5ID0gZWxlbWVudC5jbG9zZXN0KCcuYXgtb3ZlcmxheS1jb250YWluZXInKTtcbiAgICBpZiAoIWNsaWNrZWRPdmVybGF5KSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBHZXQgei1pbmRleCB2YWx1ZXNcbiAgICBjb25zdCBwb3BvdmVyWkluZGV4ID0gcGFyc2VJbnQob3ZlcmxheUVsZW1lbnQuc3R5bGUuekluZGV4IHx8ICcwJywgMTApO1xuICAgIGNvbnN0IGNsaWNrZWRaSW5kZXggPSBwYXJzZUludCgoY2xpY2tlZE92ZXJsYXkgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnpJbmRleCB8fCAnMCcsIDEwKTtcblxuICAgIC8vIElmIHRoZSBjbGlja2VkIG92ZXJsYXkgaGFzIGEgaGlnaGVyIHotaW5kZXgsIGl0J3MgYSBjaGlsZCBvdmVybGF5XG4gICAgcmV0dXJuIGNsaWNrZWRaSW5kZXggPiBwb3BvdmVyWkluZGV4O1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBoYW5kbGVPdmVybGF5RGlzcG9zZWQoKSB7XG4gICAgLy8gQ2FsbGVkIHdoZW4gb3ZlcmxheSBpcyBkaXNwb3NlZCBleHRlcm5hbGx5IChlLmcuLCBieSBzY3JvbGwpXG4gICAgdGhpcy5kaXNjb25uZWN0UmVzaXplT2JzZXJ2ZXIoKTtcbiAgICB0aGlzLnJlbW92ZU92ZXJsYXlFdmVudHMoKTtcbiAgICB0aGlzLnJlbW92ZUtleURvd25MaXN0ZW5lcigpO1xuICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgdGhpcy5yZXN0b3JlRm9jdXMoKTtcbiAgICB0aGlzLl9lbWl0T25DbG9zZWRFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGNvbXBvbmVudCdzIG9wZW4gc3RhdGUuXG4gICAqL1xuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5pc09wZW4gPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIGNvbXBvbmVudCBpZiBpdCdzIG9wZW4sIGRldGFjaGVzIHRoZSBvdmVybGF5LCByZXN0b3JlcyBmb2N1cywgYW5kIGVtaXRzIHRoZSBjbG9zZWQgZXZlbnQuXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlzY29ubmVjdFJlc2l6ZU9ic2VydmVyKCk7XG4gICAgdGhpcy5yZW1vdmVPdmVybGF5RXZlbnRzKCk7XG4gICAgdGhpcy5yZW1vdmVLZXlEb3duTGlzdGVuZXIoKTtcblxuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgdGhpcy5yZXN0b3JlRm9jdXMoKTtcbiAgICB0aGlzLl9lbWl0T25DbG9zZWRFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBjb21wb25lbnQgaWYgaXQncyBub3QgYWxyZWFkeSBvcGVuLCBzYXZlcyBmb2N1cywgb3BlbnMgdGhlIG92ZXJsYXksIGFuZCBlbWl0cyB0aGUgb3BlbmVkIGV2ZW50LlxuICAgKi9cbiAgYXN5bmMgb3BlbigpIHtcbiAgICBpZiAodGhpcy5pc09wZW4gfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWRkS2V5RG93bkxpc3RlbmVyKCk7XG4gICAgdGhpcy5zYXZlRm9jdXMoKTtcbiAgICBhd2FpdCB0aGlzLm9wZW5PdmVybGF5SW50ZXJuYWwoKTtcbiAgICB0aGlzLl9lbWl0T25PcGVuZWRFdmVudCgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBhZGRLZXlEb3duTGlzdGVuZXIoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHRoaXMub25LZXlEb3duSGFuZGxlciA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLm9uS2V5RG93bkhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVtb3ZlS2V5RG93bkxpc3RlbmVyKCkge1xuICAgIGlmICh0aGlzLm9uS2V5RG93bkhhbmRsZXIpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMub25LZXlEb3duSGFuZGxlcik7XG4gICAgICB0aGlzLm9uS2V5RG93bkhhbmRsZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgc2F2ZUZvY3VzKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICB0aGlzLl9sYXN0QWN0aXZlRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBFbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVzdG9yZUZvY3VzKCkge1xuICAgIGlmICh0aGlzLl9sYXN0QWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICB0aGlzLl9sYXN0QWN0aXZlRWxlbWVudD8uZm9jdXM/LigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgYXN5bmMgb3Blbk92ZXJsYXlJbnRlcm5hbCgpIHtcbiAgICBjb25zdCB0YXJnZXRSZWYgPSB0aGlzLl90YXJnZXQ7XG4gICAgaWYgKCF0YXJnZXRSZWYpIHJldHVybjtcblxuICAgIC8vIEJ1aWxkIHBhbmVsIGNsYXNzZXNcbiAgICBjb25zdCBwYW5lbENsYXNzZXMgPSBbJ2F4LWFuaW1hdGUtZmFkZUluJywgJ2F4LWFuaW1hdGUtZmFzdGVyJ107XG4gICAgaWYgKHRoaXMucGxhdGZvcm0uaXNEYXJrKCkpIHtcbiAgICAgIHBhbmVsQ2xhc3Nlcy5wdXNoKCdheC1kYXJrJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnBhbmVsQ2xhc3MpIHtcbiAgICAgIHBhbmVsQ2xhc3Nlcy5wdXNoKHRoaXMucGFuZWxDbGFzcyk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIGNvbnRlbnQgdG8gZGlzcGxheVxuICAgIGxldCBjb250ZW50VG9SZW5kZXI6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgQVhDb21wb25lbnRUeXBlPHVua25vd24+O1xuICAgIGxldCBpbnB1dHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRoaXMuY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICBjb250ZW50VG9SZW5kZXIgPSB0aGlzLmNvbnRlbnQ7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb250ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb250ZW50VG9SZW5kZXIgPSB0aGlzLmNvbnRlbnQ7XG4gICAgICBpbnB1dHMgPSB0aGlzLmNvbnRleHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnRUb1JlbmRlciA9IHRoaXMuX2Jhc2VUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIG92ZXJsYXlcbiAgICB0aGlzLl9vdmVybGF5UmVmID0gYXdhaXQgdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoY29udGVudFRvUmVuZGVyLCB7XG4gICAgICBpbnB1dHMsXG4gICAgICBhbmNob3JPcHRpb25zOiB7XG4gICAgICAgIGFuY2hvcjogdGFyZ2V0UmVmIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICBwbGFjZW1lbnQ6IHRoaXMuX3BsYWNlbWVudCxcbiAgICAgICAgb2Zmc2V0WDogdGhpcy5fb2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogdGhpcy5fb2Zmc2V0WSxcbiAgICAgICAgYXV0b0ZsaXA6IHRydWUsXG4gICAgICB9LFxuICAgICAgcGFuZWxDbGFzczogcGFuZWxDbGFzc2VzLFxuICAgICAgd2lkdGg6IHRoaXMud2lkdGgoKSxcbiAgICAgIG9uRGlzcG9zZTogKCkgPT4gdGhpcy5oYW5kbGVPdmVybGF5RGlzcG9zZWQoKSxcbiAgICAgIGFjdGlvblNoZWV0U3R5bGU6IHRoaXMuaXNBY3Rpb25zaGVldFN0eWxlLFxuICAgIH0pO1xuXG4gICAgLy8gU3RvcmUgY29tcG9uZW50IHJlZiBpZiBpdCdzIGEgY29tcG9uZW50XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYuaW5zdGFuY2UgJiYgJ2luc3RhbmNlJyBpbiB0aGlzLl9vdmVybGF5UmVmLmluc3RhbmNlKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYgPSB0aGlzLl9vdmVybGF5UmVmLmluc3RhbmNlIGFzIHVua25vd24gYXMgQ29tcG9uZW50UmVmPHVua25vd24+O1xuICAgICAgaWYgKHRoaXMuY29udGV4dCAmJiB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UsIHRoaXMuY29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmluZCBvdmVybGF5IGV2ZW50c1xuICAgIHRoaXMuYmluZE92ZXJsYXlFdmVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIG92ZXJsYXkgaXMgY3VycmVudGx5IG9wZW4uXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZiAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBhY3Rpb25zaGVldCBzdHlsZSBzaG91bGQgYmUgYXBwbGllZC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNBY3Rpb25zaGVldFN0eWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLmlzKCdTTScpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSB1cGRhdGVPZmZzZXQoKSB7XG4gICAgdGhpcy5fcGxhY2VtZW50cz8uZm9yRWFjaCgocCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX29mZnNldFkgIT0gbnVsbCkgcC5vZmZzZXRZID0gdGhpcy5fb2Zmc2V0WTtcbiAgICAgIGlmICh0aGlzLl9vZmZzZXRYICE9IG51bGwpIHAub2Zmc2V0WCA9IHRoaXMuX29mZnNldFg7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIG92ZXJsYXkgYW5kIGZvY3VzZXMgb24gaXQuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fb3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTtcbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgb3ZlcmxheSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIC8vIE9wdGlvbmFsIGZvY3VzIGJlaGF2aW9yXG4gIH1cblxuICAvKipcbiAgICogQnJpbmdzIHRoaXMgcG9wb3ZlciB0byB0aGUgZnJvbnQgb2YgYWxsIG90aGVyIG92ZXJsYXlzLlxuICAgKi9cbiAgcHVibGljIGJyaW5nVG9Gcm9udCgpOiB2b2lkIHtcbiAgICB0aGlzLl9vdmVybGF5UmVmPy5icmluZ1RvRnJvbnQoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVJlc2l6ZU9ic2VydmVyKCk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSB8fCAhdGhpcy5fb3ZlcmxheVJlZj8ub3ZlcmxheUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNjb25uZWN0UmVzaXplT2JzZXJ2ZXIoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgIHRoaXMucmVzaXplJC5uZXh0KCk7XG4gICAgfSk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBkaXNjb25uZWN0UmVzaXplT2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVzaXplT2JzZXJ2ZXIoKTtcbiAgICB0aGlzLnJlc2l6ZSQuY29tcGxldGUoKTtcbiAgICB0aGlzLnJlbW92ZVRhcmdldEV2ZW50cygpO1xuICAgIHRoaXMucmVtb3ZlT3ZlcmxheUV2ZW50cygpO1xuICAgIHRoaXMucmVtb3ZlS2V5RG93bkxpc3RlbmVyKCk7XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2Jhc2VUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXPopoverComponent } from './popover.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPopoverModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverModule, imports: [CommonModule, AXPopoverComponent], exports: [AXPopoverComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AXPopoverComponent],\n exports: [AXPopoverComponent],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3BvcG92ZXIvc3JjL2xpYi9wb3BvdmVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFPekQsTUFBTSxPQUFPLGVBQWU7K0dBQWYsZUFBZTtnSEFBZixlQUFlLFlBSmhCLFlBQVksRUFBRSxrQkFBa0IsYUFDaEMsa0JBQWtCO2dIQUdqQixlQUFlLFlBSmhCLFlBQVk7OzRGQUlYLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDO29CQUMzQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0IsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4vcG9wb3Zlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWFBvcG92ZXJDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQVhQb3BvdmVyQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQb3BvdmVyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtcG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvYWNvcmV4LWNvbXBvbmVudHMtcG9wb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-popover.mjs","sources":["../tmp-esm2022/popover/lib/popover.component.js","../tmp-esm2022/popover/lib/popover.module.js","../tmp-esm2022/popover/acorex-components-popover.js"],"sourcesContent":["import { AXComponent, AXFocusableComponent, MXBaseComponent, convertToPlacement, } from '@acorex/cdk/common';\nimport { AXOverlayService } from '@acorex/cdk/overlay';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DOCUMENT, ElementRef, EventEmitter, Input, Output, PLATFORM_ID, TemplateRef, ViewChild, ViewEncapsulation, afterNextRender, inject, input, } from '@angular/core';\nimport { Subject, delay, fromEvent } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * @category Components\n * A popover component with custom encapsulation and change detection settings.\n */\nexport class AXPopoverComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.platform = inject(AXPlatform);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.overlayService = inject(AXOverlayService);\n this.onKeyDownHandler = null;\n /** @ignore */\n this._overlayRef = null;\n /** @ignore */\n this._lastActiveElement = null;\n /** @ignore */\n this._targetEvents = {};\n /** @ignore */\n this._outsideClickHandler = null;\n /** @ignore */\n this._scrollHandler = null;\n /** @ignore */\n this._scrollListenerActive = false;\n /** @ignore */\n this.resizeObserver = null;\n /** @ignore */\n this.resize$ = new Subject();\n /** @ignore */\n this._disabled = false;\n this.width = input('fit-content', ...(ngDevMode ? [{ debugName: \"width\" }] : []));\n this.forceDisableActionSheetStyle = input(false, ...(ngDevMode ? [{ debugName: \"forceDisableActionSheetStyle\" }] : []));\n this.translateService = inject(AXTranslationService);\n this.#init = afterNextRender(() => {\n const lang = this.translateService.getActiveLang();\n let defaultPlacementDirection;\n if (lang === 'en-US') {\n defaultPlacementDirection = 'bottom-start';\n }\n else {\n defaultPlacementDirection = 'bottom-end';\n }\n if (!this.placement)\n this.placement = defaultPlacementDirection;\n const converted = this.placement\n ? convertToPlacement(this.placement)\n : convertToPlacement(defaultPlacementDirection);\n this._placements = converted;\n this.resize$.subscribe(() => {\n if (this.isOpen) {\n this.updatePosition();\n }\n });\n });\n /** @ignore */\n this._offsetX = 0;\n /** @ignore */\n this._offsetY = 0;\n /** @ignore */\n this._placements = [];\n /** @ignore */\n this._placement = null;\n /** @ignore */\n this._componentRef = null;\n /** @ignore */\n this._openOn = 'toggle';\n /** @ignore */\n this._closeOn = 'clickOut';\n /**\n * Determines if a backdrop should be displayed behind the popover.\n */\n this.hasBackdrop = false;\n /**\n * Delay in milliseconds before the popover opens after a trigger event.\n */\n this._openAfter = 200;\n /**\n * Delay in milliseconds before the popover closes after a trigger event.\n */\n this._closeAfter = 200;\n /**\n * Whether to update the popover position when scrolling.\n */\n this.repositionOnScroll = true;\n /**\n * Enables or disables adaptivity.\n */\n this.adaptivityEnabled = false;\n /**\n * Emits when the component is opened.\n * @event\n */\n this.onOpened = new EventEmitter();\n /**\n * Emits when the component is closed.\n * @event\n */\n this.onClosed = new EventEmitter();\n }\n #init;\n /**\n * Gets or sets whether the popover is disabled.\n * When disabled, the popover will not open and will close if already open.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(v) {\n this._disabled = v;\n if (this._disabled && this.isOpen) {\n this.close();\n }\n }\n /**\n * Gets or sets the horizontal offset and updates it accordingly.\n */\n get offsetX() {\n return this._offsetX;\n }\n /**\n * Sets the horizontal offset and updates it with a callback.\n */\n set offsetX(v) {\n this.setOption({\n name: 'offsetX',\n value: v,\n afterCallback: () => {\n this.updateOffset();\n },\n });\n }\n /**\n * Vertical offset with update callback.\n */\n get offsetY() {\n return this._offsetY;\n }\n /**\n * Sets the vertical offset and updates the component position.\n */\n set offsetY(v) {\n this.setOption({\n name: 'offsetY',\n value: v,\n afterCallback: () => {\n this.updateOffset();\n },\n });\n }\n /**\n * Gets or sets the target element, supporting Element, ElementRef, or MXBaseComponent.\n */\n get target() {\n return this._target;\n }\n /**\n * Sets the target element and updates event bindings.\n */\n set target(v) {\n this.removeTargetEvents();\n if (v instanceof Element)\n this._target = v;\n else if (v instanceof ElementRef)\n this._target = v.nativeElement;\n else if (typeof v?.getHostElement == 'function')\n this._target = v.getHostElement();\n this.bindTargetEvents();\n }\n /**\n * Gets the current placement of the component.\n */\n get placement() {\n return this._placement;\n }\n /**\n * Sets the component's placement and updates its position settings.\n */\n set placement(v) {\n this.setOption({\n name: 'placement',\n value: v,\n afterCallback: (o, n) => {\n if (!n)\n return;\n const converted = convertToPlacement(n);\n this._placements = converted;\n this.updateOffset();\n if (this._overlayRef) {\n this._overlayRef.updatePosition();\n }\n },\n });\n }\n /**\n * Gets the reference to the component.\n */\n get componentRef() {\n return this._componentRef;\n }\n /**\n * Gets or sets the trigger for opening the popover and updates target events.\n */\n get openOn() {\n return this._openOn;\n }\n /**\n * Sets the trigger for opening the popover and updates target events.\n */\n set openOn(v) {\n this.setOption({\n name: 'openOn',\n value: v,\n afterCallback: () => {\n this.bindTargetEvents();\n },\n });\n }\n /**\n * Gets or sets the trigger for closing the popover.\n */\n get closeOn() {\n return this._closeOn;\n }\n /**\n * Sets the trigger for closing the popover and rebinds target events.\n */\n set closeOn(v) {\n this.setOption({\n name: 'closeOn',\n value: v,\n afterCallback: () => {\n this.bindTargetEvents();\n },\n });\n }\n get openAfter() {\n return this._openAfter;\n }\n set openAfter(value) {\n this._openAfter = value;\n this.bindTargetEvents();\n }\n get closeAfter() {\n return this._closeAfter;\n }\n set closeAfter(value) {\n this._closeAfter = value;\n this.bindTargetEvents();\n }\n /** @ignore */\n _emitOnOpenedEvent() {\n this.onOpened.emit({\n component: this,\n htmlElement: this.getHostElement(),\n });\n }\n /** @ignore */\n _emitOnClosedEvent() {\n this.onClosed.emit({\n component: this,\n htmlElement: this.getHostElement(),\n });\n }\n /** @ignore */\n removeTargetEvents() {\n Object.entries(this._targetEvents).forEach((e) => {\n e[1]?.unsubscribe();\n });\n this._targetEvents = {};\n }\n /** @ignore */\n bindTargetEvents() {\n this.removeTargetEvents();\n if (!this._target)\n return;\n const targetMouseEnter$ = fromEvent(this._target, 'mouseenter');\n const targetMouseLeave$ = fromEvent(this._target, 'mouseleave');\n if (this.openOn === 'hover') {\n this._targetEvents.mouseenter = targetMouseEnter$.pipe(delay(this.openAfter)).subscribe(() => {\n this.open();\n });\n }\n if (this.closeOn === 'leave') {\n this._targetEvents.mouseleave = targetMouseLeave$.pipe(delay(this.closeAfter)).subscribe(() => {\n this.close();\n });\n }\n if (this.openOn === 'click' || this.openOn === 'toggle') {\n const click$ = fromEvent(this._target, 'click');\n this._targetEvents.click = click$.subscribe(() => {\n this.openOn === 'toggle' ? this.toggle() : this.open();\n });\n }\n }\n /** @ignore */\n bindOverlayEvents() {\n const overlayElement = this._overlayRef?.overlayElement;\n if (!overlayElement)\n return;\n overlayElement.style.pointerEvents = 'none';\n // Outside click handler\n if (this.closeOn === 'clickOut') {\n this._outsideClickHandler = (e) => {\n const el = e.target;\n if (this.isOpen && !this._target?.contains(el) && !overlayElement?.contains(el)) {\n // Check if the click is inside a child overlay (e.g., selectbox dropdown)\n // Child overlays have a higher z-index than this popover\n if (this.isClickInsideChildOverlay(el)) {\n return;\n }\n this.close();\n }\n };\n this.document.addEventListener('mousedown', this._outsideClickHandler);\n }\n // Scroll listener to close on scroll\n this.setupScrollListener();\n // Resize observer\n this.initializeResizeObserver();\n setTimeout(() => {\n overlayElement.style.pointerEvents = 'auto';\n }, this.openAfter);\n }\n /** @ignore */\n removeOverlayEvents() {\n if (this._outsideClickHandler) {\n this.document.removeEventListener('mousedown', this._outsideClickHandler);\n this._outsideClickHandler = null;\n }\n this.removeScrollListener();\n }\n /** @ignore */\n setupScrollListener() {\n if (!this.repositionOnScroll || !isPlatformBrowser(this.platformID)) {\n return;\n }\n this._scrollHandler = () => {\n // Ignore scroll events during initial setup\n if (!this._scrollListenerActive) {\n return;\n }\n // Update popover position to follow the anchor element\n this._overlayRef?.updatePosition();\n };\n // Listen on document with capture to catch all scroll events\n this.document.addEventListener('scroll', this._scrollHandler, true);\n window.addEventListener('scroll', this._scrollHandler, true);\n // Delay activation to prevent initial layout scroll events from triggering\n requestAnimationFrame(() => {\n this._scrollListenerActive = true;\n });\n }\n /** @ignore */\n removeScrollListener() {\n if (this._scrollHandler) {\n this.document.removeEventListener('scroll', this._scrollHandler, true);\n window.removeEventListener('scroll', this._scrollHandler, true);\n this._scrollHandler = null;\n }\n this._scrollListenerActive = false;\n }\n /**\n * Checks if the clicked element is inside a child overlay (e.g., selectbox dropdown).\n * Child overlays are identified by having a higher z-index than this popover's overlay.\n * @ignore\n */\n isClickInsideChildOverlay(element) {\n const overlayElement = this._overlayRef?.overlayElement;\n if (!overlayElement)\n return false;\n // Find if the clicked element is inside any overlay container\n const clickedOverlay = element.closest('.ax-overlay-container');\n if (!clickedOverlay)\n return false;\n // Get z-index values\n const popoverZIndex = parseInt(overlayElement.style.zIndex || '0', 10);\n const clickedZIndex = parseInt(clickedOverlay.style.zIndex || '0', 10);\n // If the clicked overlay has a higher z-index, it's a child overlay\n return clickedZIndex > popoverZIndex;\n }\n /** @ignore */\n handleOverlayDisposed() {\n // Called when overlay is disposed externally (e.g., by scroll)\n this.disconnectResizeObserver();\n this.removeOverlayEvents();\n this.removeKeyDownListener();\n this._overlayRef = null;\n this._componentRef = null;\n this.restoreFocus();\n this._emitOnClosedEvent();\n }\n /**\n * Toggles the component's open state.\n */\n toggle() {\n this.isOpen ? this.close() : this.open();\n }\n /**\n * Closes the component if it's open, detaches the overlay, restores focus, and emits the closed event.\n */\n close() {\n if (!this.isOpen) {\n return;\n }\n this.disconnectResizeObserver();\n this.removeOverlayEvents();\n this.removeKeyDownListener();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._componentRef = null;\n this.restoreFocus();\n this._emitOnClosedEvent();\n }\n /**\n * Opens the component if it's not already open, saves focus, opens the overlay, and emits the opened event.\n */\n async open() {\n if (this.isOpen || this.disabled) {\n return;\n }\n this.addKeyDownListener();\n this.saveFocus();\n await this.openOverlayInternal();\n this._emitOnOpenedEvent();\n }\n /** @ignore */\n addKeyDownListener() {\n if (isPlatformBrowser(this.platformID)) {\n this.onKeyDownHandler = (e) => {\n if (e.key === 'Escape') {\n this.close();\n }\n };\n this.document.addEventListener('keydown', this.onKeyDownHandler);\n }\n }\n /** @ignore */\n removeKeyDownListener() {\n if (this.onKeyDownHandler) {\n this.document.removeEventListener('keydown', this.onKeyDownHandler);\n this.onKeyDownHandler = null;\n }\n }\n /** @ignore */\n saveFocus() {\n if (isPlatformBrowser(this.platformID)) {\n this._lastActiveElement = this.document.activeElement;\n }\n }\n /** @ignore */\n restoreFocus() {\n if (this._lastActiveElement instanceof HTMLElement) {\n this._lastActiveElement?.focus?.();\n }\n }\n /** @ignore */\n async openOverlayInternal() {\n const targetRef = this._target;\n if (!targetRef)\n return;\n // Build panel classes\n const panelClasses = ['ax-animate-fadeIn', 'ax-animate-faster'];\n if (this.platform.isDark()) {\n panelClasses.push('ax-dark');\n }\n if (this.panelClass) {\n panelClasses.push(this.panelClass);\n }\n // Determine content to display\n let contentToRender;\n let inputs;\n if (this.content instanceof TemplateRef) {\n contentToRender = this.content;\n }\n else if (typeof this.content === 'function') {\n contentToRender = this.content;\n inputs = this.context;\n }\n else {\n contentToRender = this._baseTemplate;\n }\n // Create the overlay\n this._overlayRef = await this.overlayService.create(contentToRender, {\n inputs,\n anchorOptions: {\n anchor: targetRef,\n placement: this._placement,\n offsetX: this._offsetX,\n offsetY: this._offsetY,\n autoFlip: true,\n },\n panelClass: panelClasses,\n width: this.width(),\n onDispose: () => this.handleOverlayDisposed(),\n actionSheetStyle: this.forceDisableActionSheetStyle() ? false : this.isActionsheetStyle,\n });\n // Store component ref if it's a component\n if (this._overlayRef.instance && 'instance' in this._overlayRef.instance) {\n this._componentRef = this._overlayRef.instance;\n if (this.context && this._componentRef.instance) {\n Object.assign(this._componentRef.instance, this.context);\n }\n }\n // Bind overlay events\n this.bindOverlayEvents();\n }\n /**\n * Checks if the overlay is currently open.\n * @returns {boolean}\n */\n get isOpen() {\n return this._overlayRef !== null;\n }\n /**\n * Determines if the actionsheet style should be applied.\n * @returns {boolean}\n */\n get isActionsheetStyle() {\n return this.platform.is('SM');\n }\n /** @ignore */\n updateOffset() {\n this._placements?.forEach((p) => {\n if (this._offsetY != null)\n p.offsetY = this._offsetY;\n if (this._offsetX != null)\n p.offsetX = this._offsetX;\n });\n }\n /**\n * Updates the position of the overlay and focuses on it.\n */\n updatePosition() {\n this._overlayRef?.updatePosition();\n this.focus();\n }\n /**\n * Focuses the overlay element.\n */\n focus() {\n // Optional focus behavior\n }\n /**\n * Brings this popover to the front of all other overlays.\n */\n bringToFront() {\n this._overlayRef?.bringToFront();\n }\n /** @ignore */\n initializeResizeObserver() {\n if (!isPlatformBrowser(this.platformID) || !this._overlayRef?.overlayElement) {\n return;\n }\n this.disconnectResizeObserver();\n this.resizeObserver = new ResizeObserver(() => {\n this.resize$.next();\n });\n this.resizeObserver.observe(this._overlayRef.overlayElement);\n }\n /** @ignore */\n disconnectResizeObserver() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n /** @ignore */\n ngOnDestroy() {\n this.disconnectResizeObserver();\n this.resize$.complete();\n this.removeTargetEvents();\n this.removeOverlayEvents();\n this.removeKeyDownListener();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.16\", type: AXPopoverComponent, isStandalone: true, selector: \"ax-popover\", inputs: { width: { classPropertyName: \"width\", publicName: \"width\", isSignal: true, isRequired: false, transformFunction: null }, forceDisableActionSheetStyle: { classPropertyName: \"forceDisableActionSheetStyle\", publicName: \"forceDisableActionSheetStyle\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, offsetX: { classPropertyName: \"offsetX\", publicName: \"offsetX\", isSignal: false, isRequired: false, transformFunction: null }, offsetY: { classPropertyName: \"offsetY\", publicName: \"offsetY\", isSignal: false, isRequired: false, transformFunction: null }, target: { classPropertyName: \"target\", publicName: \"target\", isSignal: false, isRequired: false, transformFunction: null }, placement: { classPropertyName: \"placement\", publicName: \"placement\", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: \"content\", publicName: \"content\", isSignal: false, isRequired: false, transformFunction: null }, openOn: { classPropertyName: \"openOn\", publicName: \"openOn\", isSignal: false, isRequired: false, transformFunction: null }, closeOn: { classPropertyName: \"closeOn\", publicName: \"closeOn\", isSignal: false, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: \"hasBackdrop\", publicName: \"hasBackdrop\", isSignal: false, isRequired: false, transformFunction: null }, openAfter: { classPropertyName: \"openAfter\", publicName: \"openAfter\", isSignal: false, isRequired: false, transformFunction: null }, closeAfter: { classPropertyName: \"closeAfter\", publicName: \"closeAfter\", isSignal: false, isRequired: false, transformFunction: null }, repositionOnScroll: { classPropertyName: \"repositionOnScroll\", publicName: \"repositionOnScroll\", isSignal: false, isRequired: false, transformFunction: null }, backdropClass: { classPropertyName: \"backdropClass\", publicName: \"backdropClass\", isSignal: false, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: \"panelClass\", publicName: \"panelClass\", isSignal: false, isRequired: false, transformFunction: null }, adaptivityEnabled: { classPropertyName: \"adaptivityEnabled\", publicName: \"adaptivityEnabled\", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onOpened: \"onOpened\", onClosed: \"onClosed\" }, providers: [\n { provide: AXFocusableComponent, useExisting: AXPopoverComponent },\n { provide: AXComponent, useExisting: AXPopoverComponent },\n ], viewQueries: [{ propertyName: \"_baseTemplate\", first: true, predicate: [\"baseTemplate\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<ng-template #baseTemplate>\\n <ng-content></ng-content>\\n</ng-template>\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-popover', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n { provide: AXFocusableComponent, useExisting: AXPopoverComponent },\n { provide: AXComponent, useExisting: AXPopoverComponent },\n ], template: \"<ng-template #baseTemplate>\\n <ng-content></ng-content>\\n</ng-template>\\n\" }]\n }], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: \"width\", required: false }] }], forceDisableActionSheetStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: \"forceDisableActionSheetStyle\", required: false }] }], disabled: [{\n type: Input\n }], offsetX: [{\n type: Input\n }], offsetY: [{\n type: Input\n }], target: [{\n type: Input\n }], placement: [{\n type: Input\n }], _baseTemplate: [{\n type: ViewChild,\n args: ['baseTemplate', { static: true }]\n }], content: [{\n type: Input\n }], openOn: [{\n type: Input\n }], closeOn: [{\n type: Input\n }], hasBackdrop: [{\n type: Input\n }], openAfter: [{\n type: Input\n }], closeAfter: [{\n type: Input\n }], repositionOnScroll: [{\n type: Input\n }], backdropClass: [{\n type: Input\n }], panelClass: [{\n type: Input\n }], adaptivityEnabled: [{\n type: Input\n }], onOpened: [{\n type: Output\n }], onClosed: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3BvcG92ZXIvc3JjL2xpYi9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvbGliL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFHWCxvQkFBb0IsRUFFcEIsZUFBZSxFQUNmLGtCQUFrQixHQUNuQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNL0Q7OztHQUdHO0FBV0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGVBQWU7SUFWdkQ7O1FBV1UsYUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUxQyxxQkFBZ0IsR0FBd0MsSUFBSSxDQUFDO1FBRXJFLGNBQWM7UUFDTixnQkFBVyxHQUFpQyxJQUFJLENBQUM7UUFFekQsY0FBYztRQUNOLHVCQUFrQixHQUFtQixJQUFJLENBQUM7UUFFbEQsY0FBYztRQUNOLGtCQUFhLEdBSWpCLEVBQUUsQ0FBQztRQUVQLGNBQWM7UUFDTix5QkFBb0IsR0FBcUMsSUFBSSxDQUFDO1FBRXRFLGNBQWM7UUFDTixtQkFBYyxHQUFnQyxJQUFJLENBQUM7UUFFM0QsY0FBYztRQUNOLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUV0QyxjQUFjO1FBQ04sbUJBQWMsR0FBMEIsSUFBSSxDQUFDO1FBQ3JELGNBQWM7UUFDTixZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV0QyxjQUFjO1FBQ04sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVqQixVQUFLLEdBQUcsS0FBSyxDQUFTLGFBQWEsaURBQUMsQ0FBQztRQUVyQyxpQ0FBNEIsR0FBRyxLQUFLLENBQUMsS0FBSyx3RUFBQyxDQUFDO1FBRTdDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXhELFVBQUssR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVuRCxJQUFJLHlCQUEwQyxDQUFDO1lBRS9DLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNyQix5QkFBeUIsR0FBRyxjQUFjLENBQUM7WUFDN0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHlCQUF5QixHQUFHLFlBQVksQ0FBQztZQUMzQyxDQUFDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO2dCQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcseUJBQXlCLENBQUM7WUFFaEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVM7Z0JBQzlCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsa0JBQWtCLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUVsRCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztZQUU3QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzFCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBaUJILGNBQWM7UUFDTixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBdUJyQixjQUFjO1FBQ04sYUFBUSxHQUFHLENBQUMsQ0FBQztRQTZDckIsY0FBYztRQUNOLGdCQUFXLEdBQTBCLEVBQUUsQ0FBQztRQUVoRCxjQUFjO1FBQ04sZUFBVSxHQUFvQixJQUFJLENBQUM7UUE2QjNDLGNBQWM7UUFDTixrQkFBYSxHQUFpQyxJQUFJLENBQUM7UUF3QjNELGNBQWM7UUFDTixZQUFPLEdBQXlCLFFBQVEsQ0FBQztRQXVCakQsY0FBYztRQUNOLGFBQVEsR0FBMEIsVUFBVSxDQUFDO1FBdUJyRDs7V0FFRztRQUVILGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCOztXQUVHO1FBQ0ssZUFBVSxHQUFHLEdBQUcsQ0FBQztRQVl6Qjs7V0FFRztRQUNLLGdCQUFXLEdBQUcsR0FBRyxDQUFDO1FBWTFCOztXQUVHO1FBRUgsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBYzFCOztXQUVHO1FBRUgsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCOzs7V0FHRztRQUVILGFBQVEsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU5RDs7O1dBR0c7UUFFSCxhQUFRLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7S0FvWC9EO0lBcnBCQyxLQUFLLENBd0JGO0lBRUg7OztPQUdHO0lBQ0gsSUFDVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsQ0FBVTtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBS0Q7O09BRUc7SUFDSCxJQUNXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsT0FBTyxDQUFDLENBQVM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLENBQUM7WUFDUixhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFLRDs7T0FFRztJQUNILElBQ1csT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxPQUFPLENBQUMsQ0FBUztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsQ0FBQztZQUNSLGFBQWEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUtEOztPQUVHO0lBQ0gsSUFDVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsTUFBTSxDQUFDLENBQXlDO1FBQ3pELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLE9BQU87WUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQzthQUN0QyxJQUFJLENBQUMsWUFBWSxVQUFVO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO2FBQzVELElBQUksT0FBTyxDQUFDLEVBQUUsY0FBYyxJQUFJLFVBQVU7WUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuRixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUNXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsU0FBUyxDQUFDLENBQWtCO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsQ0FBQztZQUNSLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLENBQUM7b0JBQUUsT0FBTztnQkFDZixNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3BDLENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUtEOztPQUVHO0lBQ0gsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBb0JEOztPQUVHO0lBQ0gsSUFDVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsTUFBTSxDQUFDLENBQXVCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxDQUFDO1lBQ1IsYUFBYSxFQUFFLEdBQUcsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFLRDs7T0FFRztJQUNILElBQ1csT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxPQUFPLENBQUMsQ0FBd0I7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLENBQUM7WUFDUixhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQWFELElBQ1csU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsU0FBUyxDQUFDLEtBQUs7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQU9ELElBQ1csVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsVUFBVSxDQUFDLEtBQUs7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQXdDRCxjQUFjO0lBQ04sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7U0FDbkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDakIsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTtTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLGtCQUFrQjtRQUN4QixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNOLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQzFCLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDaEUsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUVoRSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUMzRixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUM1RixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDeEQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFhLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUNOLGlCQUFpQjtRQUN2QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQztRQUN4RCxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFDNUIsY0FBYyxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1FBRTVDLHdCQUF3QjtRQUN4QixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBYSxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFpQixDQUFDO2dCQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDaEYsMEVBQTBFO29CQUMxRSx5REFBeUQ7b0JBQ3pELElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7d0JBQ3ZDLE9BQU87b0JBQ1QsQ0FBQztvQkFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsQ0FBQztZQUNILENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0Isa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRWhDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxjQUFjLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7UUFDOUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYztJQUNOLG1CQUFtQjtRQUN6QixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO0lBQ04sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwRSxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLDRDQUE0QztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ2hDLE9BQU87WUFDVCxDQUFDO1lBRUQsdURBQXVEO1lBQ3ZELElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDO1FBRUYsNkRBQTZEO1FBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTdELDJFQUEyRTtRQUMzRSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sb0JBQW9CO1FBQzFCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdkUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0sseUJBQXlCLENBQUMsT0FBZ0I7UUFDaEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUVsQyw4REFBOEQ7UUFDOUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFbEMscUJBQXFCO1FBQ3JCLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkUsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFFLGNBQThCLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFeEYsb0VBQW9FO1FBQ3BFLE9BQU8sYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztJQUNOLHFCQUFxQjtRQUMzQiwrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTdCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYztJQUNOLGtCQUFrQjtRQUN4QixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQWdCLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsQ0FBQztZQUNILENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUNOLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO0lBQ04sU0FBUztRQUNmLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBd0IsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWM7SUFDTixZQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLGtCQUFrQixZQUFZLFdBQVcsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUNOLEtBQUssQ0FBQyxtQkFBbUI7UUFDL0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFFdkIsc0JBQXNCO1FBQ3RCLE1BQU0sWUFBWSxHQUFHLENBQUMsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUNoRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUMzQixZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsK0JBQStCO1FBQy9CLElBQUksZUFBZ0UsQ0FBQztRQUNyRSxJQUFJLE1BQTJDLENBQUM7UUFFaEQsSUFBSSxJQUFJLENBQUMsT0FBTyxZQUFZLFdBQVcsRUFBRSxDQUFDO1lBQ3hDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM5QyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUMvQixNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQWtDLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxDQUFDO1FBRUQscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDbkUsTUFBTTtZQUNOLGFBQWEsRUFBRTtnQkFDYixNQUFNLEVBQUUsU0FBd0I7Z0JBQ2hDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN0QixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3RCLFFBQVEsRUFBRSxJQUFJO2FBQ2Y7WUFDRCxVQUFVLEVBQUUsWUFBWTtZQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNuQixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzdDLGdCQUFnQixFQUFFLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0I7U0FDeEYsQ0FBQyxDQUFDO1FBRUgsMENBQTBDO1FBQzFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQTRDLENBQUM7WUFDbkYsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNELENBQUM7UUFDSCxDQUFDO1FBRUQsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjO0lBQ04sWUFBWTtRQUNsQixJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJO2dCQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNyRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSTtnQkFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjO1FBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLDBCQUEwQjtJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWM7SUFDTix3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDN0UsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsY0FBYztJQUNOLHdCQUF3QjtRQUM5QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDVCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7K0dBaHNCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw0NUVBTGxCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFO1lBQ2xFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUU7U0FDMUQsOEtDbERILDRFQUdBOzs0RkRpRGEsa0JBQWtCO2tCQVY5QixTQUFTOytCQUNFLFlBQVksaUJBRVAsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLG9CQUFvQixFQUFFO3dCQUNsRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxvQkFBb0IsRUFBRTtxQkFDMUQ7O3NCQTRFQSxLQUFLOztzQkFpQkwsS0FBSzs7c0JBd0JMLEtBQUs7O3NCQXdCTCxLQUFLOztzQkF5QkwsS0FBSzs7c0JBd0NMLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7c0JBTTFDLEtBQUs7O3NCQVNMLEtBQUs7O3NCQXdCTCxLQUFLOztzQkFxQkwsS0FBSzs7c0JBUUwsS0FBSzs7c0JBZUwsS0FBSzs7c0JBYUwsS0FBSzs7c0JBTUwsS0FBSzs7c0JBTUwsS0FBSzs7c0JBTUwsS0FBSzs7c0JBT0wsTUFBTTs7c0JBT04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ29tcG9uZW50LFxuICBBWENvbm5lY3RlZFBvc2l0aW9uLFxuICBBWEV2ZW50LFxuICBBWEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgQVhQbGFjZW1lbnRUeXBlLFxuICBNWEJhc2VDb21wb25lbnQsXG4gIGNvbnZlcnRUb1BsYWNlbWVudCxcbn0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYT3ZlcmxheVJlZiwgQVhPdmVybGF5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQVhDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQbGF0Zm9ybSB9IGZyb20gJ0BhY29yZXgvY29yZS9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIERPQ1VNRU5ULFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWxheSwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIEFYUG9wb3Zlck9wZW5UcmlnZ2VyID0gJ21hbnVhbCcgfCAnY2xpY2snIHwgJ2hvdmVyJyB8ICd0b2dnbGUnO1xuXG5leHBvcnQgdHlwZSBBWFBvcG92ZXJDbG9zZVRyaWdnZXIgPSAnbWFudWFsJyB8ICdjbGlja091dCcgfCAnbGVhdmUnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKiBBIHBvcG92ZXIgY29tcG9uZW50IHdpdGggY3VzdG9tIGVuY2Fwc3VsYXRpb24gYW5kIGNoYW5nZSBkZXRlY3Rpb24gc2V0dGluZ3MuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXBvcG92ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEFYRm9jdXNhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQb3BvdmVyQ29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUG9wb3ZlckNvbXBvbmVudCB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBvcG92ZXJDb21wb25lbnQgZXh0ZW5kcyBNWEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHBsYXRmb3JtID0gaW5qZWN0KEFYUGxhdGZvcm0pO1xuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybUlEID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgcHJpdmF0ZSBvdmVybGF5U2VydmljZSA9IGluamVjdChBWE92ZXJsYXlTZXJ2aWNlKTtcblxuICBwcml2YXRlIG9uS2V5RG93bkhhbmRsZXI6ICgoZTogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9vdmVybGF5UmVmOiBBWE92ZXJsYXlSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbDtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9sYXN0QWN0aXZlRWxlbWVudDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX3RhcmdldEV2ZW50czoge1xuICAgIG1vdXNlZW50ZXI/OiBTdWJzY3JpcHRpb247XG4gICAgbW91c2VsZWF2ZT86IFN1YnNjcmlwdGlvbjtcbiAgICBjbGljaz86IFN1YnNjcmlwdGlvbjtcbiAgfSA9IHt9O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX291dHNpZGVDbGlja0hhbmRsZXI6ICgoZTogTW91c2VFdmVudCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9zY3JvbGxIYW5kbGVyOiAoKGU6IEV2ZW50KSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX3Njcm9sbExpc3RlbmVyQWN0aXZlID0gZmFsc2U7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZXNpemUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHdpZHRoID0gaW5wdXQ8c3RyaW5nPignZml0LWNvbnRlbnQnKTtcblxuICByZWFkb25seSBmb3JjZURpc2FibGVBY3Rpb25TaGVldFN0eWxlID0gaW5wdXQoZmFsc2UpO1xuXG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG5cbiAgI2luaXQgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0QWN0aXZlTGFuZygpO1xuXG4gICAgbGV0IGRlZmF1bHRQbGFjZW1lbnREaXJlY3Rpb246IEFYUGxhY2VtZW50VHlwZTtcblxuICAgIGlmIChsYW5nID09PSAnZW4tVVMnKSB7XG4gICAgICBkZWZhdWx0UGxhY2VtZW50RGlyZWN0aW9uID0gJ2JvdHRvbS1zdGFydCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmF1bHRQbGFjZW1lbnREaXJlY3Rpb24gPSAnYm90dG9tLWVuZCc7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBsYWNlbWVudCkgdGhpcy5wbGFjZW1lbnQgPSBkZWZhdWx0UGxhY2VtZW50RGlyZWN0aW9uO1xuXG4gICAgY29uc3QgY29udmVydGVkID0gdGhpcy5wbGFjZW1lbnRcbiAgICAgID8gY29udmVydFRvUGxhY2VtZW50KHRoaXMucGxhY2VtZW50KVxuICAgICAgOiBjb252ZXJ0VG9QbGFjZW1lbnQoZGVmYXVsdFBsYWNlbWVudERpcmVjdGlvbik7XG5cbiAgICB0aGlzLl9wbGFjZW1lbnRzID0gY29udmVydGVkO1xuXG4gICAgdGhpcy5yZXNpemUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICAvKipcbiAgICogR2V0cyBvciBzZXRzIHdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgZGlzYWJsZWQuXG4gICAqIFdoZW4gZGlzYWJsZWQsIHRoZSBwb3BvdmVyIHdpbGwgbm90IG9wZW4gYW5kIHdpbGwgY2xvc2UgaWYgYWxyZWFkeSBvcGVuLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2O1xuICAgIGlmICh0aGlzLl9kaXNhYmxlZCAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX29mZnNldFggPSAwO1xuXG4gIC8qKlxuICAgKiBHZXRzIG9yIHNldHMgdGhlIGhvcml6b250YWwgb2Zmc2V0IGFuZCB1cGRhdGVzIGl0IGFjY29yZGluZ2x5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBvZmZzZXRYKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX29mZnNldFg7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaG9yaXpvbnRhbCBvZmZzZXQgYW5kIHVwZGF0ZXMgaXQgd2l0aCBhIGNhbGxiYWNrLlxuICAgKi9cbiAgcHVibGljIHNldCBvZmZzZXRYKHY6IG51bWJlcikge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdvZmZzZXRYJyxcbiAgICAgIHZhbHVlOiB2LFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZU9mZnNldCgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX29mZnNldFkgPSAwO1xuXG4gIC8qKlxuICAgKiBWZXJ0aWNhbCBvZmZzZXQgd2l0aCB1cGRhdGUgY2FsbGJhY2suXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IG9mZnNldFkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb2Zmc2V0WTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2ZXJ0aWNhbCBvZmZzZXQgYW5kIHVwZGF0ZXMgdGhlIGNvbXBvbmVudCBwb3NpdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzZXQgb2Zmc2V0WSh2OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnb2Zmc2V0WScsXG4gICAgICB2YWx1ZTogdixcbiAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVPZmZzZXQoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF90YXJnZXQhOiBFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBHZXRzIG9yIHNldHMgdGhlIHRhcmdldCBlbGVtZW50LCBzdXBwb3J0aW5nIEVsZW1lbnQsIEVsZW1lbnRSZWYsIG9yIE1YQmFzZUNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgdGFyZ2V0KCk6IEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgTVhCYXNlQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRhcmdldCBlbGVtZW50IGFuZCB1cGRhdGVzIGV2ZW50IGJpbmRpbmdzLlxuICAgKi9cbiAgcHVibGljIHNldCB0YXJnZXQodjogRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBNWEJhc2VDb21wb25lbnQpIHtcbiAgICB0aGlzLnJlbW92ZVRhcmdldEV2ZW50cygpO1xuICAgIGlmICh2IGluc3RhbmNlb2YgRWxlbWVudCkgdGhpcy5fdGFyZ2V0ID0gdjtcbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgRWxlbWVudFJlZikgdGhpcy5fdGFyZ2V0ID0gdi5uYXRpdmVFbGVtZW50O1xuICAgIGVsc2UgaWYgKHR5cGVvZiB2Py5nZXRIb3N0RWxlbWVudCA9PSAnZnVuY3Rpb24nKSB0aGlzLl90YXJnZXQgPSB2LmdldEhvc3RFbGVtZW50KCk7XG4gICAgdGhpcy5iaW5kVGFyZ2V0RXZlbnRzKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9wbGFjZW1lbnRzOiBBWENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9wbGFjZW1lbnQ6IEFYUGxhY2VtZW50VHlwZSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgcGxhY2VtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHBsYWNlbWVudCgpOiBBWFBsYWNlbWVudFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29tcG9uZW50J3MgcGxhY2VtZW50IGFuZCB1cGRhdGVzIGl0cyBwb3NpdGlvbiBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBzZXQgcGxhY2VtZW50KHY6IEFYUGxhY2VtZW50VHlwZSkge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdwbGFjZW1lbnQnLFxuICAgICAgdmFsdWU6IHYsXG4gICAgICBhZnRlckNhbGxiYWNrOiAobywgbikgPT4ge1xuICAgICAgICBpZiAoIW4pIHJldHVybjtcbiAgICAgICAgY29uc3QgY29udmVydGVkID0gY29udmVydFRvUGxhY2VtZW50KG4pO1xuICAgICAgICB0aGlzLl9wbGFjZW1lbnRzID0gY29udmVydGVkO1xuICAgICAgICB0aGlzLnVwZGF0ZU9mZnNldCgpO1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX2NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGdldCBjb21wb25lbnRSZWYoKTogQ29tcG9uZW50UmVmPHVua25vd24+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudFJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb2xkcyB0aGUgY29udGV4dCBkYXRhIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGNvbnRleHQ6IHVua25vd247XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQFZpZXdDaGlsZCgnYmFzZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgX2Jhc2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGNvbnRlbnQgdG8gYmUgZGlzcGxheWVkLCB3aGljaCBjYW4gYmUgYSB0ZW1wbGF0ZSBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgQVhDb21wb25lbnRUeXBlPHVua25vd24+O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX29wZW5PbjogQVhQb3BvdmVyT3BlblRyaWdnZXIgPSAndG9nZ2xlJztcblxuICAvKipcbiAgICogR2V0cyBvciBzZXRzIHRoZSB0cmlnZ2VyIGZvciBvcGVuaW5nIHRoZSBwb3BvdmVyIGFuZCB1cGRhdGVzIHRhcmdldCBldmVudHMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IG9wZW5PbigpOiBBWFBvcG92ZXJPcGVuVHJpZ2dlciB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5PbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmlnZ2VyIGZvciBvcGVuaW5nIHRoZSBwb3BvdmVyIGFuZCB1cGRhdGVzIHRhcmdldCBldmVudHMuXG4gICAqL1xuICBwdWJsaWMgc2V0IG9wZW5Pbih2OiBBWFBvcG92ZXJPcGVuVHJpZ2dlcikge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdvcGVuT24nLFxuICAgICAgdmFsdWU6IHYsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYmluZFRhcmdldEV2ZW50cygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX2Nsb3NlT246IEFYUG9wb3ZlckNsb3NlVHJpZ2dlciA9ICdjbGlja091dCc7XG5cbiAgLyoqXG4gICAqIEdldHMgb3Igc2V0cyB0aGUgdHJpZ2dlciBmb3IgY2xvc2luZyB0aGUgcG9wb3Zlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgY2xvc2VPbigpOiBBWFBvcG92ZXJDbG9zZVRyaWdnZXIge1xuICAgIHJldHVybiB0aGlzLl9jbG9zZU9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRyaWdnZXIgZm9yIGNsb3NpbmcgdGhlIHBvcG92ZXIgYW5kIHJlYmluZHMgdGFyZ2V0IGV2ZW50cy5cbiAgICovXG4gIHB1YmxpYyBzZXQgY2xvc2VPbih2OiBBWFBvcG92ZXJDbG9zZVRyaWdnZXIpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnY2xvc2VPbicsXG4gICAgICB2YWx1ZTogdixcbiAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5iaW5kVGFyZ2V0RXZlbnRzKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSBiYWNrZHJvcCBzaG91bGQgYmUgZGlzcGxheWVkIGJlaGluZCB0aGUgcG9wb3Zlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGhhc0JhY2tkcm9wID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERlbGF5IGluIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIHBvcG92ZXIgb3BlbnMgYWZ0ZXIgYSB0cmlnZ2VyIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfb3BlbkFmdGVyID0gMjAwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgb3BlbkFmdGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9vcGVuQWZ0ZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0IG9wZW5BZnRlcih2YWx1ZSkge1xuICAgIHRoaXMuX29wZW5BZnRlciA9IHZhbHVlO1xuICAgIHRoaXMuYmluZFRhcmdldEV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGF5IGluIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIHBvcG92ZXIgY2xvc2VzIGFmdGVyIGEgdHJpZ2dlciBldmVudC5cbiAgICovXG4gIHByaXZhdGUgX2Nsb3NlQWZ0ZXIgPSAyMDA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBjbG9zZUFmdGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9jbG9zZUFmdGVyO1xuICB9XG5cbiAgcHVibGljIHNldCBjbG9zZUFmdGVyKHZhbHVlKSB7XG4gICAgdGhpcy5fY2xvc2VBZnRlciA9IHZhbHVlO1xuICAgIHRoaXMuYmluZFRhcmdldEV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBkYXRlIHRoZSBwb3BvdmVyIHBvc2l0aW9uIHdoZW4gc2Nyb2xsaW5nLlxuICAgKi9cbiAgQElucHV0KClcbiAgcmVwb3NpdGlvbk9uU2Nyb2xsID0gdHJ1ZTtcblxuICAvKipcbiAgICogQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBiYWNrZHJvcCBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgYmFja2Ryb3BDbGFzczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIHBhbmVsIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwYW5lbENsYXNzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYWRhcHRpdml0eS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGFkYXB0aXZpdHlFbmFibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBvcGVuZWQuXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uT3BlbmVkOiBFdmVudEVtaXR0ZXI8QVhFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBjbG9zZWQuXG4gICAqIEBldmVudFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ2xvc2VkOiBFdmVudEVtaXR0ZXI8QVhFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRXZlbnQ+KCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfZW1pdE9uT3BlbmVkRXZlbnQoKSB7XG4gICAgdGhpcy5vbk9wZW5lZC5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9lbWl0T25DbG9zZWRFdmVudCgpIHtcbiAgICB0aGlzLm9uQ2xvc2VkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVtb3ZlVGFyZ2V0RXZlbnRzKCk6IHZvaWQge1xuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuX3RhcmdldEV2ZW50cykuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgZVsxXT8udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgICB0aGlzLl90YXJnZXRFdmVudHMgPSB7fTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgYmluZFRhcmdldEV2ZW50cygpIHtcbiAgICB0aGlzLnJlbW92ZVRhcmdldEV2ZW50cygpO1xuICAgIGlmICghdGhpcy5fdGFyZ2V0KSByZXR1cm47XG4gICAgY29uc3QgdGFyZ2V0TW91c2VFbnRlciQgPSBmcm9tRXZlbnQodGhpcy5fdGFyZ2V0LCAnbW91c2VlbnRlcicpO1xuICAgIGNvbnN0IHRhcmdldE1vdXNlTGVhdmUkID0gZnJvbUV2ZW50KHRoaXMuX3RhcmdldCwgJ21vdXNlbGVhdmUnKTtcblxuICAgIGlmICh0aGlzLm9wZW5PbiA9PT0gJ2hvdmVyJykge1xuICAgICAgdGhpcy5fdGFyZ2V0RXZlbnRzLm1vdXNlZW50ZXIgPSB0YXJnZXRNb3VzZUVudGVyJC5waXBlKGRlbGF5KHRoaXMub3BlbkFmdGVyKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbG9zZU9uID09PSAnbGVhdmUnKSB7XG4gICAgICB0aGlzLl90YXJnZXRFdmVudHMubW91c2VsZWF2ZSA9IHRhcmdldE1vdXNlTGVhdmUkLnBpcGUoZGVsYXkodGhpcy5jbG9zZUFmdGVyKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3Blbk9uID09PSAnY2xpY2snIHx8IHRoaXMub3Blbk9uID09PSAndG9nZ2xlJykge1xuICAgICAgY29uc3QgY2xpY2skID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuX3RhcmdldCwgJ2NsaWNrJyk7XG4gICAgICB0aGlzLl90YXJnZXRFdmVudHMuY2xpY2sgPSBjbGljayQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuT24gPT09ICd0b2dnbGUnID8gdGhpcy50b2dnbGUoKSA6IHRoaXMub3BlbigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBiaW5kT3ZlcmxheUV2ZW50cygpIHtcbiAgICBjb25zdCBvdmVybGF5RWxlbWVudCA9IHRoaXMuX292ZXJsYXlSZWY/Lm92ZXJsYXlFbGVtZW50O1xuICAgIGlmICghb3ZlcmxheUVsZW1lbnQpIHJldHVybjtcbiAgICBvdmVybGF5RWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuXG4gICAgLy8gT3V0c2lkZSBjbGljayBoYW5kbGVyXG4gICAgaWYgKHRoaXMuY2xvc2VPbiA9PT0gJ2NsaWNrT3V0Jykge1xuICAgICAgdGhpcy5fb3V0c2lkZUNsaWNrSGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gZS50YXJnZXQgYXMgRWxlbWVudDtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmICF0aGlzLl90YXJnZXQ/LmNvbnRhaW5zKGVsKSAmJiAhb3ZlcmxheUVsZW1lbnQ/LmNvbnRhaW5zKGVsKSkge1xuICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBjbGljayBpcyBpbnNpZGUgYSBjaGlsZCBvdmVybGF5IChlLmcuLCBzZWxlY3Rib3ggZHJvcGRvd24pXG4gICAgICAgICAgLy8gQ2hpbGQgb3ZlcmxheXMgaGF2ZSBhIGhpZ2hlciB6LWluZGV4IHRoYW4gdGhpcyBwb3BvdmVyXG4gICAgICAgICAgaWYgKHRoaXMuaXNDbGlja0luc2lkZUNoaWxkT3ZlcmxheShlbCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLl9vdXRzaWRlQ2xpY2tIYW5kbGVyKTtcbiAgICB9XG5cbiAgICAvLyBTY3JvbGwgbGlzdGVuZXIgdG8gY2xvc2Ugb24gc2Nyb2xsXG4gICAgdGhpcy5zZXR1cFNjcm9sbExpc3RlbmVyKCk7XG5cbiAgICAvLyBSZXNpemUgb2JzZXJ2ZXJcbiAgICB0aGlzLmluaXRpYWxpemVSZXNpemVPYnNlcnZlcigpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvdmVybGF5RWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ2F1dG8nO1xuICAgIH0sIHRoaXMub3BlbkFmdGVyKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVtb3ZlT3ZlcmxheUV2ZW50cygpIHtcbiAgICBpZiAodGhpcy5fb3V0c2lkZUNsaWNrSGFuZGxlcikge1xuICAgICAgdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLl9vdXRzaWRlQ2xpY2tIYW5kbGVyKTtcbiAgICAgIHRoaXMuX291dHNpZGVDbGlja0hhbmRsZXIgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZVNjcm9sbExpc3RlbmVyKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIHNldHVwU2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgaWYgKCF0aGlzLnJlcG9zaXRpb25PblNjcm9sbCB8fCAhaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAvLyBJZ25vcmUgc2Nyb2xsIGV2ZW50cyBkdXJpbmcgaW5pdGlhbCBzZXR1cFxuICAgICAgaWYgKCF0aGlzLl9zY3JvbGxMaXN0ZW5lckFjdGl2ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBwb3BvdmVyIHBvc2l0aW9uIHRvIGZvbGxvdyB0aGUgYW5jaG9yIGVsZW1lbnRcbiAgICAgIHRoaXMuX292ZXJsYXlSZWY/LnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgfTtcblxuICAgIC8vIExpc3RlbiBvbiBkb2N1bWVudCB3aXRoIGNhcHR1cmUgdG8gY2F0Y2ggYWxsIHNjcm9sbCBldmVudHNcbiAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbEhhbmRsZXIsIHRydWUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLl9zY3JvbGxIYW5kbGVyLCB0cnVlKTtcblxuICAgIC8vIERlbGF5IGFjdGl2YXRpb24gdG8gcHJldmVudCBpbml0aWFsIGxheW91dCBzY3JvbGwgZXZlbnRzIGZyb20gdHJpZ2dlcmluZ1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aGlzLl9zY3JvbGxMaXN0ZW5lckFjdGl2ZSA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIHJlbW92ZVNjcm9sbExpc3RlbmVyKCkge1xuICAgIGlmICh0aGlzLl9zY3JvbGxIYW5kbGVyKSB7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbEhhbmRsZXIsIHRydWUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX3Njcm9sbEhhbmRsZXIsIHRydWUpO1xuICAgICAgdGhpcy5fc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX3Njcm9sbExpc3RlbmVyQWN0aXZlID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjbGlja2VkIGVsZW1lbnQgaXMgaW5zaWRlIGEgY2hpbGQgb3ZlcmxheSAoZS5nLiwgc2VsZWN0Ym94IGRyb3Bkb3duKS5cbiAgICogQ2hpbGQgb3ZlcmxheXMgYXJlIGlkZW50aWZpZWQgYnkgaGF2aW5nIGEgaGlnaGVyIHotaW5kZXggdGhhbiB0aGlzIHBvcG92ZXIncyBvdmVybGF5LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGlzQ2xpY2tJbnNpZGVDaGlsZE92ZXJsYXkoZWxlbWVudDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG92ZXJsYXlFbGVtZW50ID0gdGhpcy5fb3ZlcmxheVJlZj8ub3ZlcmxheUVsZW1lbnQ7XG4gICAgaWYgKCFvdmVybGF5RWxlbWVudCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gRmluZCBpZiB0aGUgY2xpY2tlZCBlbGVtZW50IGlzIGluc2lkZSBhbnkgb3ZlcmxheSBjb250YWluZXJcbiAgICBjb25zdCBjbGlja2VkT3ZlcmxheSA9IGVsZW1lbnQuY2xvc2VzdCgnLmF4LW92ZXJsYXktY29udGFpbmVyJyk7XG4gICAgaWYgKCFjbGlja2VkT3ZlcmxheSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gR2V0IHotaW5kZXggdmFsdWVzXG4gICAgY29uc3QgcG9wb3ZlclpJbmRleCA9IHBhcnNlSW50KG92ZXJsYXlFbGVtZW50LnN0eWxlLnpJbmRleCB8fCAnMCcsIDEwKTtcbiAgICBjb25zdCBjbGlja2VkWkluZGV4ID0gcGFyc2VJbnQoKGNsaWNrZWRPdmVybGF5IGFzIEhUTUxFbGVtZW50KS5zdHlsZS56SW5kZXggfHwgJzAnLCAxMCk7XG5cbiAgICAvLyBJZiB0aGUgY2xpY2tlZCBvdmVybGF5IGhhcyBhIGhpZ2hlciB6LWluZGV4LCBpdCdzIGEgY2hpbGQgb3ZlcmxheVxuICAgIHJldHVybiBjbGlja2VkWkluZGV4ID4gcG9wb3ZlclpJbmRleDtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgaGFuZGxlT3ZlcmxheURpc3Bvc2VkKCkge1xuICAgIC8vIENhbGxlZCB3aGVuIG92ZXJsYXkgaXMgZGlzcG9zZWQgZXh0ZXJuYWxseSAoZS5nLiwgYnkgc2Nyb2xsKVxuICAgIHRoaXMuZGlzY29ubmVjdFJlc2l6ZU9ic2VydmVyKCk7XG4gICAgdGhpcy5yZW1vdmVPdmVybGF5RXZlbnRzKCk7XG4gICAgdGhpcy5yZW1vdmVLZXlEb3duTGlzdGVuZXIoKTtcbiAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYgPSBudWxsO1xuICAgIHRoaXMucmVzdG9yZUZvY3VzKCk7XG4gICAgdGhpcy5fZW1pdE9uQ2xvc2VkRXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBjb21wb25lbnQncyBvcGVuIHN0YXRlLlxuICAgKi9cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMuaXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBjb21wb25lbnQgaWYgaXQncyBvcGVuLCBkZXRhY2hlcyB0aGUgb3ZlcmxheSwgcmVzdG9yZXMgZm9jdXMsIGFuZCBlbWl0cyB0aGUgY2xvc2VkIGV2ZW50LlxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc2Nvbm5lY3RSZXNpemVPYnNlcnZlcigpO1xuICAgIHRoaXMucmVtb3ZlT3ZlcmxheUV2ZW50cygpO1xuICAgIHRoaXMucmVtb3ZlS2V5RG93bkxpc3RlbmVyKCk7XG5cbiAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9jb21wb25lbnRSZWYgPSBudWxsO1xuICAgIHRoaXMucmVzdG9yZUZvY3VzKCk7XG4gICAgdGhpcy5fZW1pdE9uQ2xvc2VkRXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgY29tcG9uZW50IGlmIGl0J3Mgbm90IGFscmVhZHkgb3Blbiwgc2F2ZXMgZm9jdXMsIG9wZW5zIHRoZSBvdmVybGF5LCBhbmQgZW1pdHMgdGhlIG9wZW5lZCBldmVudC5cbiAgICovXG4gIGFzeW5jIG9wZW4oKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hZGRLZXlEb3duTGlzdGVuZXIoKTtcbiAgICB0aGlzLnNhdmVGb2N1cygpO1xuICAgIGF3YWl0IHRoaXMub3Blbk92ZXJsYXlJbnRlcm5hbCgpO1xuICAgIHRoaXMuX2VtaXRPbk9wZW5lZEV2ZW50KCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGFkZEtleURvd25MaXN0ZW5lcigpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgdGhpcy5vbktleURvd25IYW5kbGVyID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMub25LZXlEb3duSGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZW1vdmVLZXlEb3duTGlzdGVuZXIoKSB7XG4gICAgaWYgKHRoaXMub25LZXlEb3duSGFuZGxlcikge1xuICAgICAgdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vbktleURvd25IYW5kbGVyKTtcbiAgICAgIHRoaXMub25LZXlEb3duSGFuZGxlciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBzYXZlRm9jdXMoKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHRoaXMuX2xhc3RBY3RpdmVFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZXN0b3JlRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMuX2xhc3RBY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2xhc3RBY3RpdmVFbGVtZW50Py5mb2N1cz8uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBhc3luYyBvcGVuT3ZlcmxheUludGVybmFsKCkge1xuICAgIGNvbnN0IHRhcmdldFJlZiA9IHRoaXMuX3RhcmdldDtcbiAgICBpZiAoIXRhcmdldFJlZikgcmV0dXJuO1xuXG4gICAgLy8gQnVpbGQgcGFuZWwgY2xhc3Nlc1xuICAgIGNvbnN0IHBhbmVsQ2xhc3NlcyA9IFsnYXgtYW5pbWF0ZS1mYWRlSW4nLCAnYXgtYW5pbWF0ZS1mYXN0ZXInXTtcbiAgICBpZiAodGhpcy5wbGF0Zm9ybS5pc0RhcmsoKSkge1xuICAgICAgcGFuZWxDbGFzc2VzLnB1c2goJ2F4LWRhcmsnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGFuZWxDbGFzcykge1xuICAgICAgcGFuZWxDbGFzc2VzLnB1c2godGhpcy5wYW5lbENsYXNzKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgY29udGVudCB0byBkaXNwbGF5XG4gICAgbGV0IGNvbnRlbnRUb1JlbmRlcjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBBWENvbXBvbmVudFR5cGU8dW5rbm93bj47XG4gICAgbGV0IGlucHV0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5jb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgIGNvbnRlbnRUb1JlbmRlciA9IHRoaXMuY29udGVudDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbnRlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnRlbnRUb1JlbmRlciA9IHRoaXMuY29udGVudDtcbiAgICAgIGlucHV0cyA9IHRoaXMuY29udGV4dCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudFRvUmVuZGVyID0gdGhpcy5fYmFzZVRlbXBsYXRlO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgb3ZlcmxheVxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSBhd2FpdCB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZShjb250ZW50VG9SZW5kZXIsIHtcbiAgICAgIGlucHV0cyxcbiAgICAgIGFuY2hvck9wdGlvbnM6IHtcbiAgICAgICAgYW5jaG9yOiB0YXJnZXRSZWYgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgIHBsYWNlbWVudDogdGhpcy5fcGxhY2VtZW50LFxuICAgICAgICBvZmZzZXRYOiB0aGlzLl9vZmZzZXRYLFxuICAgICAgICBvZmZzZXRZOiB0aGlzLl9vZmZzZXRZLFxuICAgICAgICBhdXRvRmxpcDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiBwYW5lbENsYXNzZXMsXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCgpLFxuICAgICAgb25EaXNwb3NlOiAoKSA9PiB0aGlzLmhhbmRsZU92ZXJsYXlEaXNwb3NlZCgpLFxuICAgICAgYWN0aW9uU2hlZXRTdHlsZTogdGhpcy5mb3JjZURpc2FibGVBY3Rpb25TaGVldFN0eWxlKCkgPyBmYWxzZSA6IHRoaXMuaXNBY3Rpb25zaGVldFN0eWxlLFxuICAgIH0pO1xuXG4gICAgLy8gU3RvcmUgY29tcG9uZW50IHJlZiBpZiBpdCdzIGEgY29tcG9uZW50XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYuaW5zdGFuY2UgJiYgJ2luc3RhbmNlJyBpbiB0aGlzLl9vdmVybGF5UmVmLmluc3RhbmNlKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYgPSB0aGlzLl9vdmVybGF5UmVmLmluc3RhbmNlIGFzIHVua25vd24gYXMgQ29tcG9uZW50UmVmPHVua25vd24+O1xuICAgICAgaWYgKHRoaXMuY29udGV4dCAmJiB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UsIHRoaXMuY29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmluZCBvdmVybGF5IGV2ZW50c1xuICAgIHRoaXMuYmluZE92ZXJsYXlFdmVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIG92ZXJsYXkgaXMgY3VycmVudGx5IG9wZW4uXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZiAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBhY3Rpb25zaGVldCBzdHlsZSBzaG91bGQgYmUgYXBwbGllZC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNBY3Rpb25zaGVldFN0eWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLmlzKCdTTScpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSB1cGRhdGVPZmZzZXQoKSB7XG4gICAgdGhpcy5fcGxhY2VtZW50cz8uZm9yRWFjaCgocCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX29mZnNldFkgIT0gbnVsbCkgcC5vZmZzZXRZID0gdGhpcy5fb2Zmc2V0WTtcbiAgICAgIGlmICh0aGlzLl9vZmZzZXRYICE9IG51bGwpIHAub2Zmc2V0WCA9IHRoaXMuX29mZnNldFg7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIG92ZXJsYXkgYW5kIGZvY3VzZXMgb24gaXQuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fb3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTtcbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgb3ZlcmxheSBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIC8vIE9wdGlvbmFsIGZvY3VzIGJlaGF2aW9yXG4gIH1cblxuICAvKipcbiAgICogQnJpbmdzIHRoaXMgcG9wb3ZlciB0byB0aGUgZnJvbnQgb2YgYWxsIG90aGVyIG92ZXJsYXlzLlxuICAgKi9cbiAgcHVibGljIGJyaW5nVG9Gcm9udCgpOiB2b2lkIHtcbiAgICB0aGlzLl9vdmVybGF5UmVmPy5icmluZ1RvRnJvbnQoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVJlc2l6ZU9ic2VydmVyKCk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSB8fCAhdGhpcy5fb3ZlcmxheVJlZj8ub3ZlcmxheUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNjb25uZWN0UmVzaXplT2JzZXJ2ZXIoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgIHRoaXMucmVzaXplJC5uZXh0KCk7XG4gICAgfSk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBkaXNjb25uZWN0UmVzaXplT2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVzaXplT2JzZXJ2ZXIoKTtcbiAgICB0aGlzLnJlc2l6ZSQuY29tcGxldGUoKTtcbiAgICB0aGlzLnJlbW92ZVRhcmdldEV2ZW50cygpO1xuICAgIHRoaXMucmVtb3ZlT3ZlcmxheUV2ZW50cygpO1xuICAgIHRoaXMucmVtb3ZlS2V5RG93bkxpc3RlbmVyKCk7XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2Jhc2VUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXPopoverComponent } from './popover.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPopoverModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverModule, imports: [CommonModule, AXPopoverComponent], exports: [AXPopoverComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPopoverModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AXPopoverComponent],\n exports: [AXPopoverComponent],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3BvcG92ZXIvc3JjL2xpYi9wb3BvdmVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFPekQsTUFBTSxPQUFPLGVBQWU7K0dBQWYsZUFBZTtnSEFBZixlQUFlLFlBSmhCLFlBQVksRUFBRSxrQkFBa0IsYUFDaEMsa0JBQWtCO2dIQUdqQixlQUFlLFlBSmhCLFlBQVk7OzRGQUlYLGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDO29CQUMzQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0IsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4vcG9wb3Zlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWFBvcG92ZXJDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQVhQb3BvdmVyQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQb3BvdmVyTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtcG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvYWNvcmV4LWNvbXBvbmVudHMtcG9wb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}