@libs-ui/components-popover 0.2.8 → 0.2.10-6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm2022/index.mjs CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './popover.component';
2
2
  export * from './interfaces';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcbiJdfQ==
3
+ export * from './defines/get-popover-timer-destroy.define';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLDRDQUE0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWZpbmVzL2dldC1wb3BvdmVyLXRpbWVyLWRlc3Ryb3kuZGVmaW5lJztcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW50ZXJmYWNlcy9vdmVybGF5LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04sIFRZUEVfUE9QT1ZFUl9QT1NJVElPTl9NT0RFIH0gZnJvbSAnLi9wb3BvdmVyLnR5cGUnO1xuaW1wb3J0IHsgVFlQRV9PQkpFQ1QgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IElTY3JvbGxPdmVybGF5T3B0aW9ucyB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtc2Nyb2xsLW92ZXJsYXknO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQb3BvdmVyT3ZlcmxheSB7XG4gIGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQ/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG4gIHdpZHRoQnlQYXJlbnQ/OiBib29sZWFuOyAvLyBu4bq/dSBtdeG7kW4gcG9wdXAgUG9wb3ZlciB0byBi4bqxbmcgdGjhursgY2hhXG4gIHBhcmVudEJvcmRlcldpZHRoPzogbnVtYmVyO1xuICB3aWR0aD86IG51bWJlcjtcbiAgbWluV2lkdGg/OiBudW1iZXI7XG4gIG1heFdpZHRoPzogbnVtYmVyO1xuICBtYXhIZWlnaHQ/OiBudW1iZXIgfCBudWxsOyAvLyBzZXQgbWF4SGVpZ2h0ID0gbnVsbCDEkeG7gyB04buxIMSR4buZbmcgdMOtbmggdG/DoW4gbWF4SGVpZ2h0IHRoZW8gd2luZG93IGhlaWdodFxuICBwYWRkaW5nVG9wPzogbnVtYmVyO1xuICBwYWRkaW5nUmlnaHQ/OiBudW1iZXI7XG4gIHBhZGRpbmdMZWZ0PzogbnVtYmVyO1xuICBwYWRkaW5nQm90dG9tPzogbnVtYmVyO1xuICBjb250ZW50Pzogc3RyaW5nOyAvLyBEw7luZyBjb250ZW50IHRow6wga28gZMO5bmcgdGVtcGxhdGVcbiAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+OyAvLyBEw7luZyB0ZW1wbGF0ZSB0aMOsIGtow7RuZyBkw7luZyBjb250ZW50XG4gIGl0ZW1Db250ZXh0PzogYW55O1xuICBjbGFzc0luY2x1ZGVPdmVybGF5Qm9keT86IHN0cmluZztcbiAgd2hpdGVUaGVtZT86IGJvb2xlYW47XG4gIHRpbWVyRGVzdHJveT86IG51bWJlcjtcbiAgekluZGV4PzogbnVtYmVyO1xuICBkaXJlY3Rpb24/OiBUWVBFX1BPUE9WRVJfRElSRUNUSU9OO1xuICBkaXJlY3Rpb25EaXN0YW5jZT86IG51bWJlcjtcbiAgcG9zaXRpb24/OiB7XG4gICAgbW9kZTogVFlQRV9QT1BPVkVSX1BPU0lUSU9OX01PREU7XG4gICAgZGlzdGFuY2U6IG51bWJlcjtcbiAgICBhdXRvVXBkYXRlUG9zaXRpb24/OiB7XG4gICAgICBzdGFydERpc3RhbmNlOiBudW1iZXI7XG4gICAgICBlbmREaXN0YW5jZTogbnVtYmVyO1xuICAgIH07XG4gIH07XG4gIGlnbm9yZUFycm93PzogYm9vbGVhbjtcbiAgYXJyb3dQb3NpdGlvbkN1c3RvbT86IG51bWJlcjtcbiAgbmdTdHlsZXM/OiBUWVBFX09CSkVDVDtcbiAgYW5pbWF0aW9uQ29uZmlnPzoge1xuICAgIHRpbWU/OiBudW1iZXI7XG4gICAgZGlzdGFuY2U/OiBudW1iZXI7XG4gIH07XG4gIHNjcm9sbE92ZXJsYXlPcHRpb25zPzogSVNjcm9sbE92ZXJsYXlPcHRpb25zO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvaW50ZXJmYWNlcy9vdmVybGF5LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04sIFRZUEVfUE9QT1ZFUl9QT1NJVElPTl9NT0RFIH0gZnJvbSAnLi9wb3BvdmVyLnR5cGUnO1xuaW1wb3J0IHsgSVNjcm9sbE92ZXJsYXlPcHRpb25zIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zY3JvbGwtb3ZlcmxheSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBvcG92ZXJPdmVybGF5IHtcbiAgaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudD86IGJvb2xlYW47XG4gIGNsYXNzSW5jbHVkZT86IHN0cmluZztcbiAgd2lkdGhCeVBhcmVudD86IGJvb2xlYW47IC8vIG7hur91IG114buRbiBwb3B1cCBQb3BvdmVyIHRvIGLhurFuZyB0aOG6uyBjaGFcbiAgcGFyZW50Qm9yZGVyV2lkdGg/OiBudW1iZXI7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBtaW5XaWR0aD86IG51bWJlcjtcbiAgbWF4V2lkdGg/OiBudW1iZXI7XG4gIG1heEhlaWdodD86IG51bWJlciB8IG51bGw7IC8vIHNldCBtYXhIZWlnaHQgPSBudWxsIMSR4buDIHThu7EgxJHhu5luZyB0w61uaCB0b8OhbiBtYXhIZWlnaHQgdGhlbyB3aW5kb3cgaGVpZ2h0XG4gIHBhZGRpbmdUb3A/OiBudW1iZXI7XG4gIHBhZGRpbmdSaWdodD86IG51bWJlcjtcbiAgcGFkZGluZ0xlZnQ/OiBudW1iZXI7XG4gIHBhZGRpbmdCb3R0b20/OiBudW1iZXI7XG4gIGNvbnRlbnQ/OiBzdHJpbmc7IC8vIETDuW5nIGNvbnRlbnQgdGjDrCBrbyBkw7luZyB0ZW1wbGF0ZVxuICB0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47IC8vIETDuW5nIHRlbXBsYXRlIHRow6wga2jDtG5nIGTDuW5nIGNvbnRlbnRcbiAgaXRlbUNvbnRleHQ/OiBhbnk7XG4gIGNsYXNzSW5jbHVkZU92ZXJsYXlCb2R5Pzogc3RyaW5nO1xuICB3aGl0ZVRoZW1lPzogYm9vbGVhbjtcbiAgdGltZXJEZXN0cm95PzogbnVtYmVyO1xuICB6SW5kZXg/OiBudW1iZXI7XG4gIGRpcmVjdGlvbj86IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT047XG4gIGRpcmVjdGlvbkRpc3RhbmNlPzogbnVtYmVyO1xuICBwb3NpdGlvbj86IHtcbiAgICBtb2RlOiBUWVBFX1BPUE9WRVJfUE9TSVRJT05fTU9ERTtcbiAgICBkaXN0YW5jZTogbnVtYmVyO1xuICAgIGF1dG9VcGRhdGVQb3NpdGlvbj86IHtcbiAgICAgIHN0YXJ0RGlzdGFuY2U6IG51bWJlcjtcbiAgICAgIGVuZERpc3RhbmNlOiBudW1iZXI7XG4gICAgfTtcbiAgfTtcbiAgaWdub3JlQXJyb3c/OiBib29sZWFuO1xuICBhcnJvd1Bvc2l0aW9uQ3VzdG9tPzogbnVtYmVyO1xuICBuZ1N0eWxlcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGFuaW1hdGlvbkNvbmZpZz86IHtcbiAgICB0aW1lPzogbnVtYmVyO1xuICAgIGRpc3RhbmNlPzogbnVtYmVyO1xuICB9O1xuICBzY3JvbGxPdmVybGF5T3B0aW9ucz86IElTY3JvbGxPdmVybGF5T3B0aW9ucztcbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { AsyncPipe, NgStyle, NgTemplateOutlet } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, ElementRef, inject, signal, viewChild } from '@angular/core';
3
- import { LibsUIComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';
3
+ import { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';
4
4
  import { UtilsUrlSearchParams, cloneDeep, cloneIBoundingClientRect, getViewport } from '@libs-ui/utils';
5
5
  import { TranslateModule } from '@ngx-translate/core';
6
6
  import { Subject, interval, take, takeUntil } from 'rxjs';
@@ -284,10 +284,10 @@ export class LibsUiComponentsPopoverOverlayComponent {
284
284
  this.onDestroy.complete();
285
285
  }
286
286
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsPopoverOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
287
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsPopoverOverlayComponent, isStandalone: true, selector: "libs_ui-components-popover-overlay", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUIComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUIComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: LibsUIComponentsScrollOverlayDirective, selector: "[LibsUIComponentsScrollOverlayDirective]", inputs: ["options"], outputs: ["outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
287
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsPopoverOverlayComponent, isStandalone: true, selector: "libs_ui-components-popover-overlay", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
288
288
  }
289
289
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsPopoverOverlayComponent, decorators: [{
290
290
  type: Component,
291
- args: [{ selector: 'libs_ui-components-popover-overlay', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgStyle, AsyncPipe, LibsUIComponentsScrollOverlayDirective, NgTemplateOutlet], template: "<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUIComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUIComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"] }]
291
+ args: [{ selector: 'libs_ui-components-popover-overlay', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgStyle, AsyncPipe, LibsUiComponentsScrollOverlayDirective, NgTemplateOutlet], template: "<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"] }]
292
292
  }], ctorParameters: () => [] });
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9wb3BvdmVyL3NyYy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFZMUQsTUFBTSxPQUFPLHVDQUF1QztJQUNsRCxnQkFBZ0I7SUFDTixnQkFBZ0IsR0FBRyxNQUFNLENBQXlCLFFBQVEsQ0FBQyxDQUFDO0lBQzVELFVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDaEMsR0FBRyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUIs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TUFBTSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsK0NBQStDLEVBQUUsR0FBRyxXQUFXLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsZUFBZSxFQUFFLFFBQVEsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xNLENBQUM7SUFFRCxXQUFXO1FBQ1QsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQTdVVSx1Q0FBdUM7NEZBQXZDLHVDQUF1QyxzTkNsQnBELHlqRUE4Q0EsKzdDRDlCWSxlQUFlLDRGQUFFLE9BQU8sc0VBQUUsU0FBUyw4Q0FBRSxzQ0FBc0Msb0xBQUUsZ0JBQWdCOzs0RkFFNUYsdUNBQXVDO2tCQVRuRCxTQUFTOytCQUVFLG9DQUFvQyxjQUdsQyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQ0FBc0MsRUFBRSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIGluamVjdCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVSUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zY3JvbGwtb3ZlcmxheSc7XG5pbXBvcnQgeyBJQm91bmRpbmdDbGllbnRSZWN0IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBVdGlsc1VybFNlYXJjaFBhcmFtcywgY2xvbmVEZWVwLCBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QsIGdldFZpZXdwb3J0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBpbnRlcnZhbCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJUG9wb3Zlck92ZXJsYXkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL292ZXJsYXkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvcG92ZXIudHlwZSc7XG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlci1vdmVybGF5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL292ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vdmVybGF5LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBOZ1N0eWxlLCBBc3luY1BpcGUsIExpYnNVSUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzUG9wb3Zlck92ZXJsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUSUVTICovXG4gIHByb3RlY3RlZCBjdXJyZW50RGlyZWN0aW9uID0gc2lnbmFsPFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04+KCdib3R0b20nKTtcbiAgcHJvdGVjdGVkIGFycm93Q2xhc3MgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByb3RlY3RlZCB0b3AgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGxlZnQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGFycm93TGVmdCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgYXJyb3dUb3AgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGNvbmZpZyA9IHNpZ25hbDxJUG9wb3Zlck92ZXJsYXk+KHt9KTtcblxuICBwcml2YXRlIGRpcmVjdGlvbnMgPSBzaWduYWw8TWFwPHN0cmluZywgQXJyYXk8VFlQRV9QT1BPVkVSX0RJUkVDVElPTj4+PihuZXcgTWFwKCkpO1xuICBwcml2YXRlIHRpbWVvdXQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRFdmVudDogU3ViamVjdDxUWVBFX1BPUE9WRVJfRElSRUNUSU9OPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyogVklFVyBDSElMRCAqL1xuICBwcml2YXRlIGNvbnRhaW5lciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignY29udGFpbmVyJyk7XG5cbiAgLyogSU5KRUNUICovXG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRpcmVjdGlvbnMoKS5zZXQoJ2JvdHRvbScsIFsnYm90dG9tJywgJ3RvcCcsICdyaWdodCcsICdsZWZ0J10pO1xuICAgIHRoaXMuZGlyZWN0aW9ucygpLnNldCgncmlnaHQnLCBbJ3JpZ2h0JywgJ2xlZnQnLCAnYm90dG9tJywgJ3RvcCddKTtcbiAgICB0aGlzLmRpcmVjdGlvbnMoKS5zZXQoJ2xlZnQnLCBbJ2xlZnQnLCAncmlnaHQnLCAnYm90dG9tJywgJ3RvcCddKTtcbiAgICB0aGlzLmRpcmVjdGlvbnMoKS5zZXQoJ3RvcCcsIFsndG9wJywgJ2JvdHRvbScsICdyaWdodCcsICdsZWZ0J10pO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TKi9cbiAgcHVibGljIGdldCBFbGVtZW50UmVmKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWY7XG4gIH1cblxuICBwdWJsaWMgZ2V0IENvbnRhaW5lckVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyKCkubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25maWcocmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgY29uZmlnOiBJUG9wb3Zlck92ZXJsYXksIGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQ/OiBib29sZWFuKSB7XG4gICAgaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudCA9IGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQgfHwgY29uZmlnLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQ7XG4gICAgcmVjdE9yaWdpbiA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdChyZWN0T3JpZ2luKTtcbiAgICB0aGlzLmNvbmZpZy5zZXQoY2xvbmVEZWVwKGNvbmZpZykpO1xuXG4gICAgdGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgIGlmICh0aGlzLmNvbmZpZygpLndpZHRoQnlQYXJlbnQpIHtcbiAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnLCB3aWR0aDogcmVjdE9yaWdpbi53aWR0aCAtIChjb25maWc/LnBhcmVudEJvcmRlcldpZHRoIHx8IDApICogMiB9KSk7XG4gICAgfVxuICAgIGxldCB2aWV3UG9ydCA9IGdldFZpZXdwb3J0KCk7XG4gICAgbGV0IHJlY3RGcmFtZTogSUJvdW5kaW5nQ2xpZW50UmVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50KSB7XG4gICAgICB2aWV3UG9ydCA9IGdldFZpZXdwb3J0KHdpbmRvdy5wYXJlbnQpO1xuICAgICAgY29uc3QgdXJsID0gbmV3IFV0aWxzVXJsU2VhcmNoUGFyYW1zKGxvY2F0aW9uLmhyZWYpO1xuICAgICAgY29uc3QgaWZyYW1lSWQgPSB1cmwuZ2V0KCdpZnJhbWVJZCcpO1xuXG4gICAgICByZWN0RnJhbWUgPSB3aW5kb3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBpZnJhbWUtJHtpZnJhbWVJZH1gKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocmVjdEZyYW1lKSB7XG4gICAgICAgIHJlY3RPcmlnaW4udG9wICs9IHJlY3RGcmFtZS50b3A7XG4gICAgICAgIHJlY3RPcmlnaW4ubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcoKS5tYXhIZWlnaHQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnLCBtYXhIZWlnaHQ6IHZpZXdQb3J0LmhlaWdodCAtIHJlY3RPcmlnaW4udG9wIC0gNDQgfSkpO1xuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQoKSk7XG4gICAgdGhpcy5zZXRWYXJpYWJsZUNzcygpO1xuICAgIHRoaXMuc2V0RGlyZWN0aW9ucyhyZWN0T3JpZ2luLCB2aWV3UG9ydCwgcmVjdEZyYW1lKTtcbiAgICBsZXQgcmVjdENvbnRlbnQgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgIGlmIChyZWN0RnJhbWUpIHtcbiAgICAgIHJlY3RDb250ZW50LnRvcCArPSByZWN0RnJhbWUudG9wO1xuICAgICAgcmVjdENvbnRlbnQubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICB9XG5cbiAgICBpbnRlcnZhbCgyNTApLnBpcGUodGFrZSg0KSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlY3QgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgICAgaWYgKHJlY3RGcmFtZSkge1xuICAgICAgICByZWN0LnRvcCArPSByZWN0RnJhbWUudG9wO1xuICAgICAgICByZWN0LmxlZnQgKz0gcmVjdEZyYW1lLmxlZnQ7XG4gICAgICB9XG4gICAgICBpZiAocmVjdC53aWR0aCAhPT0gcmVjdENvbnRlbnQud2lkdGggfHwgcmVjdC5oZWlnaHQgIT09IHJlY3RDb250ZW50LmhlaWdodCB8fCByZWN0LnRvcCAhPT0gcmVjdENvbnRlbnQudG9wIHx8IHJlY3QubGVmdCAhPT0gcmVjdENvbnRlbnQubGVmdCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KCkpO1xuICAgICAgICB0aGlzLnNldERpcmVjdGlvbnMocmVjdE9yaWdpbiwgdmlld1BvcnQsIHJlY3RGcmFtZSk7XG4gICAgICAgIHJlY3RDb250ZW50ID0gcmVjdDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlyZWN0aW9ucyhyZWN0T3JpZ2luOiBJQm91bmRpbmdDbGllbnRSZWN0LCB2aWV3UG9ydDogeyB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9LCByZWN0RnJhbWU/OiBJQm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgY29uc3QgZGlyZWN0aW9ucyA9IHRoaXMuZGlyZWN0aW9ucygpLmdldCh0aGlzLmNvbmZpZygpLmRpcmVjdGlvbiB8fCAnYm90dG9tJykgfHwgWydib3R0b20nLCAncmlnaHQnLCAnbGVmdCcsICd0b3AnXTtcbiAgICBjb25zdCBwb3NpdGlvbkxhc3QgPSBkaXJlY3Rpb25zLmxlbmd0aCAtIDE7XG5cbiAgICB0aGlzLnRpbWVvdXQuc2V0KHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVjdENvbnRlbnQgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgICAgaWYgKHJlY3RGcmFtZSkge1xuICAgICAgICByZWN0Q29udGVudC50b3AgKz0gcmVjdEZyYW1lLnRvcDtcbiAgICAgICAgcmVjdENvbnRlbnQubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgaW5kZXggaW4gZGlyZWN0aW9ucykge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5sb29wRGlyZWN0aW9uKHJlY3RPcmlnaW4sIHJlY3RDb250ZW50LCBkaXJlY3Rpb25zW2luZGV4XSwgcG9zaXRpb25MYXN0ID09PSAraW5kZXgsIHZpZXdQb3J0KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDUwKSk7XG4gIH1cblxuICBwcml2YXRlIGxvb3BEaXJlY3Rpb24ocmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgcmVjdENvbnRlbnQ6IElCb3VuZGluZ0NsaWVudFJlY3QsIGRpcmVjdGlvbjogVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgaXNMYXN0OiBib29sZWFuLCB2aWV3UG9ydDogeyB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY29uc3QgcG9zaXRpb25Nb2RlID0gdGhpcy5jb25maWcoKS5wb3NpdGlvbj8ubW9kZSB8fCAnc3RhcnQnO1xuICAgICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gdGhpcy5jb25maWcoKTtcbiAgICAgIGxldCByZXN1bHQgPSB0aGlzLnNldFBvc2l0aW9uKGRpcmVjdGlvbiwgcmVjdE9yaWdpbiwgKHJlY3RDb250ZW50IGFzIElCb3VuZGluZ0NsaWVudFJlY3QpLCB2aWV3UG9ydCwgaXNMYXN0KTtcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcblxuICAgICAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgICAgICBwb3NpdGlvbi5tb2RlID0gcG9zaXRpb25Nb2RlID09PSAnY2VudGVyJyB8fCBwb3NpdGlvbk1vZGUgPT09ICdzdGFydCcgPyAnZW5kJyA6ICdzdGFydCc7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbmZpZygpLmlnbm9yZUFycm93ICYmIHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbikge1xuICAgICAgICAgICAgcG9zaXRpb24uZGlzdGFuY2UgPSBwb3NpdGlvbi5tb2RlID09PSAnZW5kJyA/IHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbi5lbmREaXN0YW5jZSA6IHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbi5zdGFydERpc3RhbmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy5zZXRQb3NpdGlvbihkaXJlY3Rpb24sIHJlY3RPcmlnaW4sIChyZWN0Q29udGVudCBhcyBJQm91bmRpbmdDbGllbnRSZWN0KSwgdmlld1BvcnQsIGlzTGFzdCk7XG4gICAgICB9XG4gICAgICBpZiAoIXJlc3VsdCAmJiBwb3NpdGlvbk1vZGUgPT09ICdjZW50ZXInKSB7XG4gICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgIHBvc2l0aW9uLm1vZGUgPSBwb3NpdGlvbi5tb2RlID09PSAnc3RhcnQnID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgICAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB0aGlzLnNldFBvc2l0aW9uKGRpcmVjdGlvbiwgcmVjdE9yaWdpbiwgKHJlY3RDb250ZW50IGFzIElCb3VuZGluZ0NsaWVudFJlY3QpLCB2aWV3UG9ydCwgaXNMYXN0KTtcbiAgICAgIH1cbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgIHBvc2l0aW9uLm1vZGUgPSBwb3NpdGlvbk1vZGU7XG4gICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uLnNldChkaXJlY3Rpb24pO1xuICAgICAgdGhpcy5zZXRWYXJpYWJsZUNzcygpO1xuICAgICAgdGhpcy5zZXRDbGFzc0Fycm93KGRpcmVjdGlvbik7XG4gICAgICB0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3BhY2l0eSA9IDE7XG4gICAgICB0aGlzLm91dEV2ZW50Lm5leHQoZGlyZWN0aW9uKTtcblxuICAgICAgcmV0dXJuIHJlc29sdmUodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uKGRpcmVjdGlvbjogVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgcmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgcmVjdENvbnRlbnQ6IElCb3VuZGluZ0NsaWVudFJlY3QsIHZpZXdQb3J0OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0sIGlzTGFzdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhbGZTcXVhcmUgPSA2O1xuICAgIGNvbnN0IGRpc3RhbmNlQXJyb3cgPSA0O1xuICAgIGxldCBib3R0b21Qb3NpdGlvblJlY3RDb250ZW50ID0gMDtcbiAgICBsZXQgcG9zaXRpb25Ub3AgPSAwO1xuICAgIGxldCBwb3NpdGlvbkxlZnQgPSAwO1xuICAgIGxldCB0b3AgPSAwO1xuICAgIGxldCBsZWZ0ID0gMDtcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcG9zaXRpb25Ub3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0ICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgcmVjdE9yaWdpbi53aWR0aCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICB0b3AgPSBwb3NpdGlvblRvcCArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSByZWN0Q29udGVudC53aWR0aCAvIDIgKyBoYWxmU3F1YXJlO1xuICAgICAgICBpZiAoY29uZmlnVmFsdWUuaWdub3JlQXJyb3cpIHtcbiAgICAgICAgICB0b3AgPSB0b3AgLSBoYWxmU3F1YXJlIC0gZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuICAgICAgICB0b3AgKz0gY29uZmlnVmFsdWUuZGlyZWN0aW9uRGlzdGFuY2UgfHwgMDtcbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLSByZWN0Q29udGVudC53aWR0aCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZWZ0ICs9IChjb25maWdWYWx1ZS5wYXJlbnRCb3JkZXJXaWR0aCB8fCAwKTtcblxuICAgICAgICB0aGlzLmFycm93TGVmdC5zZXQocG9zaXRpb25MZWZ0IC0gbGVmdCk7XG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KC02KTtcbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIGlmICh0b3AgKyByZWN0Q29udGVudC5oZWlnaHQgPCB2aWV3UG9ydC5oZWlnaHQgJiYgbGVmdCA+PSAwICYmIGxlZnQgKyByZWN0Q29udGVudC53aWR0aCA8IHZpZXdQb3J0LndpZHRoKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIG1heEhlaWdodDogdmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3AgLSByZWN0T3JpZ2luLmhlaWdodCB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxlZnQgPSBsZWZ0ID49IDAgPyBsZWZ0IDogMDtcbiAgICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHBvc2l0aW9uVG9wID0gcmVjdE9yaWdpbi50b3AgKyByZWN0T3JpZ2luLmhlaWdodCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICBwb3NpdGlvbkxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyByZWN0T3JpZ2luLndpZHRoICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgLSByZWN0Q29udGVudC5oZWlnaHQgLyAyICsgaGFsZlNxdWFyZTtcbiAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCArIGhhbGZTcXVhcmU7XG5cbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLmlnbm9yZUFycm93KSB7XG4gICAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIH1cblxuICAgICAgICBsZWZ0ICs9IGNvbmZpZ1ZhbHVlLmRpcmVjdGlvbkRpc3RhbmNlIHx8IDA7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIHRvcCA9IHJlY3RPcmlnaW4udG9wICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0IC0gcmVjdENvbnRlbnQuaGVpZ2h0ICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA9IHRvcCArIHJlY3RDb250ZW50LmhlaWdodDtcblxuICAgICAgICBpZiAoYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA+IHZpZXdQb3J0LmhlaWdodCkge1xuICAgICAgICAgIHRvcCA9IHRvcCAtIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50IC0gdmlld1BvcnQuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHBvc2l0aW9uVG9wIC0gdG9wICsgMik7XG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldCgtOSk7XG5cbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIGlmICh0b3AgPiAwICYmIGxlZnQgKyByZWN0Q29udGVudC53aWR0aCA8IHZpZXdQb3J0LndpZHRoKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBwb3NpdGlvblRvcCA9IHJlY3RPcmlnaW4udG9wICsgcmVjdE9yaWdpbi5oZWlnaHQgLyAyIC0gaGFsZlNxdWFyZTtcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0IC0gKGhhbGZTcXVhcmUgKiAyKSAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIHRvcCA9IHBvc2l0aW9uVG9wIC0gcmVjdENvbnRlbnQuaGVpZ2h0IC8gMiArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSByZWN0Q29udGVudC53aWR0aCArIGhhbGZTcXVhcmU7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5pZ25vcmVBcnJvdykge1xuICAgICAgICAgIGxlZnQgPSBsZWZ0ICsgaGFsZlNxdWFyZSArIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIH1cblxuICAgICAgICBsZWZ0IC09IGNvbmZpZ1ZhbHVlPy5kaXJlY3Rpb25EaXN0YW5jZSB8fCAwO1xuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0IC0gcmVjdENvbnRlbnQuaGVpZ2h0ICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA9IHRvcCArIHJlY3RDb250ZW50LmhlaWdodDtcblxuICAgICAgICBpZiAoYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA+IHZpZXdQb3J0LmhlaWdodCkge1xuICAgICAgICAgIHRvcCA9IHRvcCAtIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50IC0gdmlld1BvcnQuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHBvc2l0aW9uVG9wIC0gdG9wICsgMik7XG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldChyZWN0Q29udGVudC53aWR0aCAtIDMpO1xuXG4gICAgICAgIHRoaXMudG9wLnNldCh0b3ApO1xuICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICBpZiAobGVmdCA+IDAgJiYgdG9wID4gMCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBwb3NpdGlvblRvcCA9IHJlY3RPcmlnaW4udG9wIC0gKGhhbGZTcXVhcmUgKiAyKSAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIHBvc2l0aW9uTGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLyAyIC0gaGFsZlNxdWFyZTtcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgLSByZWN0Q29udGVudC5oZWlnaHQgKyBoYWxmU3F1YXJlO1xuICAgICAgICBsZWZ0ID0gcG9zaXRpb25MZWZ0IC0gcmVjdENvbnRlbnQud2lkdGggLyAyICsgaGFsZlNxdWFyZTtcblxuICAgICAgICBpZiAoY29uZmlnVmFsdWUuaWdub3JlQXJyb3cpIHtcbiAgICAgICAgICB0b3AgPSB0b3AgKyBoYWxmU3F1YXJlICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuXG4gICAgICAgIHRvcCAtPSBjb25maWdWYWx1ZS5kaXJlY3Rpb25EaXN0YW5jZSB8fCAwO1xuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbiAmJiBjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyAoY29uZmlnVmFsdWUucG9zaXRpb24uZGlzdGFuY2UgfHwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24gJiYgY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLSByZWN0Q29udGVudC53aWR0aCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxlZnQgKz0gKGNvbmZpZ1ZhbHVlLnBhcmVudEJvcmRlcldpZHRoIHx8IDApO1xuICAgICAgICB0aGlzLmFycm93TGVmdC5zZXQocG9zaXRpb25MZWZ0IC0gbGVmdCk7XG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHJlY3RDb250ZW50LmhlaWdodCk7XG4gICAgICAgIHRoaXMudG9wLnNldCh0b3ApO1xuICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICBpZiAodG9wID4gMCAmJiBsZWZ0ID49IDAgJiYgbGVmdCArIHJlY3RDb250ZW50LndpZHRoIDwgdmlld1BvcnQud2lkdGgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZywgbWF4SGVpZ2h0OiB2aWV3UG9ydC5oZWlnaHQgLSAodmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3ApIH0pKTtcbiAgICAgICAgICB0b3AgPSAwO1xuICAgICAgICAgIGxlZnQgPSBsZWZ0ID49IDAgPyBsZWZ0IDogMDtcbiAgICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2xhc3NBcnJvdyhkaXJlY3Rpb246IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04pIHtcbiAgICBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctcmlnaHQnKTtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctbGVmdCcpO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID09PSAndG9wJykge1xuICAgICAgcmV0dXJuIHRoaXMuYXJyb3dDbGFzcy5zZXQoJ2xpYnMtdWktcG9wb3Zlci1vdmVybGF5LWFycm93LWRvd24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctdXAnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFyaWFibGVDc3MoKSB7XG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSB0aGlzLmNvbmZpZygpO1xuICAgIHRoaXMuQ29udGFpbmVyRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saWJzLXVpLXBvcG92ZXItb3ZlcmxheS10aW1lLWFuaW1hdGlvbi10aW1lJywgYCR7Y29uZmlnVmFsdWUuYW5pbWF0aW9uQ29uZmlnPy50aW1lIHx8IC40fXNgKTtcbiAgICB0aGlzLkNvbnRhaW5lckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGlicy11aS1wb3BvdmVyLW92ZXJsYXktdGltZS1hbmltYXRpb24tZGlzdGFuY2UnLCBgJHt0aGlzLmN1cnJlbnREaXJlY3Rpb24oKSA9PT0gJ3RvcCcgPyAnLScgOiAnJ30ke2NvbmZpZ1ZhbHVlLmFuaW1hdGlvbkNvbmZpZz8uZGlzdGFuY2UgfHwgMTJ9cHhgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQoKSk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIiwiPGRpdiAjY29udGFpbmVyXG4gIGNsYXNzPVwibGlicy11aS1wb3BvdmVyLW92ZXJsYXkge3sgY29uZmlnKCkuY2xhc3NJbmNsdWRlIHx8ICcnIH19XCJcbiAgW2NsYXNzLmxpYnMtdWktcG9wb3Zlci1vdmVybGF5LXdoaXRlLXRoZW1lXT1cImNvbmZpZygpLndoaXRlVGhlbWVcIlxuICBbY2xhc3MubGlicy11aS1wb3BvdmVyLW92ZXJsYXktYW5pbWF0aW9uLW1vdmVdPVwiY29uZmlnKCkuYW5pbWF0aW9uQ29uZmlnXCJcbiAgW25nU3R5bGVdPVwiY29uZmlnKCkubmdTdHlsZXMgfHwge31cIlxuICBbc3R5bGUud2lkdGhdPVwiY29uZmlnKCkud2lkdGggPyBjb25maWcoKS53aWR0aCArICdweCcgOiAnYXV0bydcIlxuICBbc3R5bGUubWF4V2lkdGgucHhdPVwiY29uZmlnKCkubWF4V2lkdGhcIlxuICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImNvbmZpZygpLm1heEhlaWdodFwiXG4gIFtzdHlsZS50b3AucHhdPVwidG9wKClcIlxuICBbc3R5bGUubGVmdC5weF09XCJsZWZ0KClcIlxuICBbc3R5bGUuekluZGV4XT1cImNvbmZpZygpLnpJbmRleCB8fCAxMFwiPlxuICBAaWYgKGNvbmZpZygpKSB7XG4gICAgQGlmICghY29uZmlnKCkuaWdub3JlQXJyb3cpIHtcbiAgICAgIDxkaXYgY2xhc3M9J3JlbGF0aXZlJz5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIFtjbGFzc109XCInbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3cgJysgYXJyb3dDbGFzcygpICsgKCBjb25maWcoKS53aGl0ZVRoZW1lID8gJyBsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS13aGl0ZS10aGVtZSAnIDogJycpXCJcbiAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cImFycm93VG9wKClcIlxuICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImFycm93TGVmdCgpXCJcbiAgICAgICAgICBbYXR0ci5kaXJlY3Rpb25dPSdvdXRFdmVudCB8IGFzeW5jJz5cbiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCIwLDAgNiw2IDEyLDBcIiAvPlxuICAgICAgICAgIFNvcnJ5LCB5b3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgU1ZHLlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLnRlbXBsYXRlOyBhcyB0ZW1wbGF0ZUNvbmZpZykge1xuICAgICAgPGRpdiBMaWJzVUlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgICAgICBjbGFzcz1cImxpYnMtdWktcG9wb3Zlci1vdmVybGF5LWJvZHkge3sgY29uZmlnKCkuY2xhc3NJbmNsdWRlT3ZlcmxheUJvZHkgfHwgJycgfX1cIlxuICAgICAgICBbYXR0ci5pc1RlbXBsYXRlXT1cInRydWVcIlxuICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCIoY29uZmlnKCkubWF4SGVpZ2h0KSsncHgnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbmZpZztjb250ZXh0OntpdGVtQ29udGV4dDpjb25maWcoKS5pdGVtQ29udGV4dH1cIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS1wb3BvdmVyLW92ZXJsYXktYm9keSBsaWJzLXVpLWZvbnQtaDdyIHt7IGNvbmZpZygpLmNsYXNzSW5jbHVkZU92ZXJsYXlCb2R5IHx8ICcnIH19XCJcbiAgICAgICAgTGlic1VJQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmVcbiAgICAgICAgW29wdGlvbnNdPVwiY29uZmlnKCkuc2Nyb2xsT3ZlcmxheU9wdGlvbnNcIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImNvbmZpZygpLm1heEhlaWdodFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nVG9wLnB4XT1cImNvbmZpZygpLnBhZGRpbmdUb3AgPz8gOFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nUmlnaHQucHhdPVwiY29uZmlnKCkucGFkZGluZ1JpZ2h0ID8/IDhcIlxuICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiY29uZmlnKCkucGFkZGluZ0xlZnQgPz8gOFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nQm90dG9tLnB4XT1cImNvbmZpZygpLnBhZGRpbmdCb3R0b20gPz8gOFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiKGNvbmZpZygpLmNvbnRlbnQgfHwgJyAnKSB8IHRyYW5zbGF0ZVwiPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9XG5cbjwvZGl2PlxuIl19
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9wb3BvdmVyL3NyYy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFZMUQsTUFBTSxPQUFPLHVDQUF1QztJQUNsRCxnQkFBZ0I7SUFDTixnQkFBZ0IsR0FBRyxNQUFNLENBQXlCLFFBQVEsQ0FBQyxDQUFDO0lBQzVELFVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDaEMsR0FBRyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUIs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TUFBTSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsK0NBQStDLEVBQUUsR0FBRyxXQUFXLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsZUFBZSxFQUFFLFFBQVEsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xNLENBQUM7SUFFRCxXQUFXO1FBQ1QsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQTdVVSx1Q0FBdUM7NEZBQXZDLHVDQUF1QyxzTkNsQnBELHlqRUE4Q0EsKzdDRDlCWSxlQUFlLDRGQUFFLE9BQU8sc0VBQUUsU0FBUyw4Q0FBRSxzQ0FBc0MsOFFBQUUsZ0JBQWdCOzs0RkFFNUYsdUNBQXVDO2tCQVRuRCxTQUFTOytCQUVFLG9DQUFvQyxjQUdsQyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQ0FBc0MsRUFBRSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIGluamVjdCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zY3JvbGwtb3ZlcmxheSc7XG5pbXBvcnQgeyBJQm91bmRpbmdDbGllbnRSZWN0IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBVdGlsc1VybFNlYXJjaFBhcmFtcywgY2xvbmVEZWVwLCBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QsIGdldFZpZXdwb3J0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBpbnRlcnZhbCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJUG9wb3Zlck92ZXJsYXkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL292ZXJsYXkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvcG92ZXIudHlwZSc7XG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlci1vdmVybGF5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL292ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vdmVybGF5LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBOZ1N0eWxlLCBBc3luY1BpcGUsIExpYnNVaUNvbXBvbmVudHNTY3JvbGxPdmVybGF5RGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzUG9wb3Zlck92ZXJsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUSUVTICovXG4gIHByb3RlY3RlZCBjdXJyZW50RGlyZWN0aW9uID0gc2lnbmFsPFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04+KCdib3R0b20nKTtcbiAgcHJvdGVjdGVkIGFycm93Q2xhc3MgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByb3RlY3RlZCB0b3AgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGxlZnQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGFycm93TGVmdCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgYXJyb3dUb3AgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIGNvbmZpZyA9IHNpZ25hbDxJUG9wb3Zlck92ZXJsYXk+KHt9KTtcblxuICBwcml2YXRlIGRpcmVjdGlvbnMgPSBzaWduYWw8TWFwPHN0cmluZywgQXJyYXk8VFlQRV9QT1BPVkVSX0RJUkVDVElPTj4+PihuZXcgTWFwKCkpO1xuICBwcml2YXRlIHRpbWVvdXQgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRFdmVudDogU3ViamVjdDxUWVBFX1BPUE9WRVJfRElSRUNUSU9OPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyogVklFVyBDSElMRCAqL1xuICBwcml2YXRlIGNvbnRhaW5lciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignY29udGFpbmVyJyk7XG5cbiAgLyogSU5KRUNUICovXG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRpcmVjdGlvbnMoKS5zZXQoJ2JvdHRvbScsIFsnYm90dG9tJywgJ3RvcCcsICdyaWdodCcsICdsZWZ0J10pO1xuICAgIHRoaXMuZGlyZWN0aW9ucygpLnNldCgncmlnaHQnLCBbJ3JpZ2h0JywgJ2xlZnQnLCAnYm90dG9tJywgJ3RvcCddKTtcbiAgICB0aGlzLmRpcmVjdGlvbnMoKS5zZXQoJ2xlZnQnLCBbJ2xlZnQnLCAncmlnaHQnLCAnYm90dG9tJywgJ3RvcCddKTtcbiAgICB0aGlzLmRpcmVjdGlvbnMoKS5zZXQoJ3RvcCcsIFsndG9wJywgJ2JvdHRvbScsICdyaWdodCcsICdsZWZ0J10pO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TKi9cbiAgcHVibGljIGdldCBFbGVtZW50UmVmKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWY7XG4gIH1cblxuICBwdWJsaWMgZ2V0IENvbnRhaW5lckVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyKCkubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25maWcocmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgY29uZmlnOiBJUG9wb3Zlck92ZXJsYXksIGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQ/OiBib29sZWFuKSB7XG4gICAgaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudCA9IGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQgfHwgY29uZmlnLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQ7XG4gICAgcmVjdE9yaWdpbiA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdChyZWN0T3JpZ2luKTtcbiAgICB0aGlzLmNvbmZpZy5zZXQoY2xvbmVEZWVwKGNvbmZpZykpO1xuXG4gICAgdGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgIGlmICh0aGlzLmNvbmZpZygpLndpZHRoQnlQYXJlbnQpIHtcbiAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnLCB3aWR0aDogcmVjdE9yaWdpbi53aWR0aCAtIChjb25maWc/LnBhcmVudEJvcmRlcldpZHRoIHx8IDApICogMiB9KSk7XG4gICAgfVxuICAgIGxldCB2aWV3UG9ydCA9IGdldFZpZXdwb3J0KCk7XG4gICAgbGV0IHJlY3RGcmFtZTogSUJvdW5kaW5nQ2xpZW50UmVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChpc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50KSB7XG4gICAgICB2aWV3UG9ydCA9IGdldFZpZXdwb3J0KHdpbmRvdy5wYXJlbnQpO1xuICAgICAgY29uc3QgdXJsID0gbmV3IFV0aWxzVXJsU2VhcmNoUGFyYW1zKGxvY2F0aW9uLmhyZWYpO1xuICAgICAgY29uc3QgaWZyYW1lSWQgPSB1cmwuZ2V0KCdpZnJhbWVJZCcpO1xuXG4gICAgICByZWN0RnJhbWUgPSB3aW5kb3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBpZnJhbWUtJHtpZnJhbWVJZH1gKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocmVjdEZyYW1lKSB7XG4gICAgICAgIHJlY3RPcmlnaW4udG9wICs9IHJlY3RGcmFtZS50b3A7XG4gICAgICAgIHJlY3RPcmlnaW4ubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcoKS5tYXhIZWlnaHQgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnLCBtYXhIZWlnaHQ6IHZpZXdQb3J0LmhlaWdodCAtIHJlY3RPcmlnaW4udG9wIC0gNDQgfSkpO1xuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQoKSk7XG4gICAgdGhpcy5zZXRWYXJpYWJsZUNzcygpO1xuICAgIHRoaXMuc2V0RGlyZWN0aW9ucyhyZWN0T3JpZ2luLCB2aWV3UG9ydCwgcmVjdEZyYW1lKTtcbiAgICBsZXQgcmVjdENvbnRlbnQgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgIGlmIChyZWN0RnJhbWUpIHtcbiAgICAgIHJlY3RDb250ZW50LnRvcCArPSByZWN0RnJhbWUudG9wO1xuICAgICAgcmVjdENvbnRlbnQubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICB9XG5cbiAgICBpbnRlcnZhbCgyNTApLnBpcGUodGFrZSg0KSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlY3QgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgICAgaWYgKHJlY3RGcmFtZSkge1xuICAgICAgICByZWN0LnRvcCArPSByZWN0RnJhbWUudG9wO1xuICAgICAgICByZWN0LmxlZnQgKz0gcmVjdEZyYW1lLmxlZnQ7XG4gICAgICB9XG4gICAgICBpZiAocmVjdC53aWR0aCAhPT0gcmVjdENvbnRlbnQud2lkdGggfHwgcmVjdC5oZWlnaHQgIT09IHJlY3RDb250ZW50LmhlaWdodCB8fCByZWN0LnRvcCAhPT0gcmVjdENvbnRlbnQudG9wIHx8IHJlY3QubGVmdCAhPT0gcmVjdENvbnRlbnQubGVmdCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KCkpO1xuICAgICAgICB0aGlzLnNldERpcmVjdGlvbnMocmVjdE9yaWdpbiwgdmlld1BvcnQsIHJlY3RGcmFtZSk7XG4gICAgICAgIHJlY3RDb250ZW50ID0gcmVjdDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlyZWN0aW9ucyhyZWN0T3JpZ2luOiBJQm91bmRpbmdDbGllbnRSZWN0LCB2aWV3UG9ydDogeyB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9LCByZWN0RnJhbWU/OiBJQm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgY29uc3QgZGlyZWN0aW9ucyA9IHRoaXMuZGlyZWN0aW9ucygpLmdldCh0aGlzLmNvbmZpZygpLmRpcmVjdGlvbiB8fCAnYm90dG9tJykgfHwgWydib3R0b20nLCAncmlnaHQnLCAnbGVmdCcsICd0b3AnXTtcbiAgICBjb25zdCBwb3NpdGlvbkxhc3QgPSBkaXJlY3Rpb25zLmxlbmd0aCAtIDE7XG5cbiAgICB0aGlzLnRpbWVvdXQuc2V0KHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVjdENvbnRlbnQgPSBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QodGhpcy5jb250YWluZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgICAgaWYgKHJlY3RGcmFtZSkge1xuICAgICAgICByZWN0Q29udGVudC50b3AgKz0gcmVjdEZyYW1lLnRvcDtcbiAgICAgICAgcmVjdENvbnRlbnQubGVmdCArPSByZWN0RnJhbWUubGVmdDtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgaW5kZXggaW4gZGlyZWN0aW9ucykge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5sb29wRGlyZWN0aW9uKHJlY3RPcmlnaW4sIHJlY3RDb250ZW50LCBkaXJlY3Rpb25zW2luZGV4XSwgcG9zaXRpb25MYXN0ID09PSAraW5kZXgsIHZpZXdQb3J0KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDUwKSk7XG4gIH1cblxuICBwcml2YXRlIGxvb3BEaXJlY3Rpb24ocmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgcmVjdENvbnRlbnQ6IElCb3VuZGluZ0NsaWVudFJlY3QsIGRpcmVjdGlvbjogVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgaXNMYXN0OiBib29sZWFuLCB2aWV3UG9ydDogeyB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY29uc3QgcG9zaXRpb25Nb2RlID0gdGhpcy5jb25maWcoKS5wb3NpdGlvbj8ubW9kZSB8fCAnc3RhcnQnO1xuICAgICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gdGhpcy5jb25maWcoKTtcbiAgICAgIGxldCByZXN1bHQgPSB0aGlzLnNldFBvc2l0aW9uKGRpcmVjdGlvbiwgcmVjdE9yaWdpbiwgKHJlY3RDb250ZW50IGFzIElCb3VuZGluZ0NsaWVudFJlY3QpLCB2aWV3UG9ydCwgaXNMYXN0KTtcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcblxuICAgICAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgICAgICBwb3NpdGlvbi5tb2RlID0gcG9zaXRpb25Nb2RlID09PSAnY2VudGVyJyB8fCBwb3NpdGlvbk1vZGUgPT09ICdzdGFydCcgPyAnZW5kJyA6ICdzdGFydCc7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbmZpZygpLmlnbm9yZUFycm93ICYmIHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbikge1xuICAgICAgICAgICAgcG9zaXRpb24uZGlzdGFuY2UgPSBwb3NpdGlvbi5tb2RlID09PSAnZW5kJyA/IHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbi5lbmREaXN0YW5jZSA6IHBvc2l0aW9uLmF1dG9VcGRhdGVQb3NpdGlvbi5zdGFydERpc3RhbmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy5zZXRQb3NpdGlvbihkaXJlY3Rpb24sIHJlY3RPcmlnaW4sIChyZWN0Q29udGVudCBhcyBJQm91bmRpbmdDbGllbnRSZWN0KSwgdmlld1BvcnQsIGlzTGFzdCk7XG4gICAgICB9XG4gICAgICBpZiAoIXJlc3VsdCAmJiBwb3NpdGlvbk1vZGUgPT09ICdjZW50ZXInKSB7XG4gICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgIHBvc2l0aW9uLm1vZGUgPSBwb3NpdGlvbi5tb2RlID09PSAnc3RhcnQnID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgICAgICAgIHRoaXMuY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB0aGlzLnNldFBvc2l0aW9uKGRpcmVjdGlvbiwgcmVjdE9yaWdpbiwgKHJlY3RDb250ZW50IGFzIElCb3VuZGluZ0NsaWVudFJlY3QpLCB2aWV3UG9ydCwgaXNMYXN0KTtcbiAgICAgIH1cbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICAgIHBvc2l0aW9uLm1vZGUgPSBwb3NpdGlvbk1vZGU7XG4gICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uLnNldChkaXJlY3Rpb24pO1xuICAgICAgdGhpcy5zZXRWYXJpYWJsZUNzcygpO1xuICAgICAgdGhpcy5zZXRDbGFzc0Fycm93KGRpcmVjdGlvbik7XG4gICAgICB0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUub3BhY2l0eSA9IDE7XG4gICAgICB0aGlzLm91dEV2ZW50Lm5leHQoZGlyZWN0aW9uKTtcblxuICAgICAgcmV0dXJuIHJlc29sdmUodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uKGRpcmVjdGlvbjogVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgcmVjdE9yaWdpbjogSUJvdW5kaW5nQ2xpZW50UmVjdCwgcmVjdENvbnRlbnQ6IElCb3VuZGluZ0NsaWVudFJlY3QsIHZpZXdQb3J0OiB7IHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH0sIGlzTGFzdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhbGZTcXVhcmUgPSA2O1xuICAgIGNvbnN0IGRpc3RhbmNlQXJyb3cgPSA0O1xuICAgIGxldCBib3R0b21Qb3NpdGlvblJlY3RDb250ZW50ID0gMDtcbiAgICBsZXQgcG9zaXRpb25Ub3AgPSAwO1xuICAgIGxldCBwb3NpdGlvbkxlZnQgPSAwO1xuICAgIGxldCB0b3AgPSAwO1xuICAgIGxldCBsZWZ0ID0gMDtcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IHRoaXMuY29uZmlnKCk7XG5cbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcG9zaXRpb25Ub3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0ICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0ICsgcmVjdE9yaWdpbi53aWR0aCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICB0b3AgPSBwb3NpdGlvblRvcCArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSByZWN0Q29udGVudC53aWR0aCAvIDIgKyBoYWxmU3F1YXJlO1xuICAgICAgICBpZiAoY29uZmlnVmFsdWUuaWdub3JlQXJyb3cpIHtcbiAgICAgICAgICB0b3AgPSB0b3AgLSBoYWxmU3F1YXJlIC0gZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuICAgICAgICB0b3AgKz0gY29uZmlnVmFsdWUuZGlyZWN0aW9uRGlzdGFuY2UgfHwgMDtcbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5tb2RlID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLSByZWN0Q29udGVudC53aWR0aCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZWZ0ICs9IChjb25maWdWYWx1ZS5wYXJlbnRCb3JkZXJXaWR0aCB8fCAwKTtcblxuICAgICAgICB0aGlzLmFycm93TGVmdC5zZXQocG9zaXRpb25MZWZ0IC0gbGVmdCk7XG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KC02KTtcbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIGlmICh0b3AgKyByZWN0Q29udGVudC5oZWlnaHQgPCB2aWV3UG9ydC5oZWlnaHQgJiYgbGVmdCA+PSAwICYmIGxlZnQgKyByZWN0Q29udGVudC53aWR0aCA8IHZpZXdQb3J0LndpZHRoKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIG1heEhlaWdodDogdmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3AgLSByZWN0T3JpZ2luLmhlaWdodCB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxlZnQgPSBsZWZ0ID49IDAgPyBsZWZ0IDogMDtcbiAgICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHBvc2l0aW9uVG9wID0gcmVjdE9yaWdpbi50b3AgKyByZWN0T3JpZ2luLmhlaWdodCAvIDIgLSBoYWxmU3F1YXJlO1xuICAgICAgICBwb3NpdGlvbkxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyByZWN0T3JpZ2luLndpZHRoICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgLSByZWN0Q29udGVudC5oZWlnaHQgLyAyICsgaGFsZlNxdWFyZTtcbiAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCArIGhhbGZTcXVhcmU7XG5cbiAgICAgICAgaWYgKGNvbmZpZ1ZhbHVlLmlnbm9yZUFycm93KSB7XG4gICAgICAgICAgbGVmdCA9IHBvc2l0aW9uTGVmdCAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIH1cblxuICAgICAgICBsZWZ0ICs9IGNvbmZpZ1ZhbHVlLmRpcmVjdGlvbkRpc3RhbmNlIHx8IDA7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIHRvcCA9IHJlY3RPcmlnaW4udG9wICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uPy5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0IC0gcmVjdENvbnRlbnQuaGVpZ2h0ICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA9IHRvcCArIHJlY3RDb250ZW50LmhlaWdodDtcblxuICAgICAgICBpZiAoYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA+IHZpZXdQb3J0LmhlaWdodCkge1xuICAgICAgICAgIHRvcCA9IHRvcCAtIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50IC0gdmlld1BvcnQuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHBvc2l0aW9uVG9wIC0gdG9wICsgMik7XG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldCgtOSk7XG5cbiAgICAgICAgdGhpcy50b3Auc2V0KHRvcCk7XG4gICAgICAgIHRoaXMubGVmdC5zZXQobGVmdCk7XG4gICAgICAgIGlmICh0b3AgPiAwICYmIGxlZnQgKyByZWN0Q29udGVudC53aWR0aCA8IHZpZXdQb3J0LndpZHRoKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBwb3NpdGlvblRvcCA9IHJlY3RPcmlnaW4udG9wICsgcmVjdE9yaWdpbi5oZWlnaHQgLyAyIC0gaGFsZlNxdWFyZTtcbiAgICAgICAgcG9zaXRpb25MZWZ0ID0gcmVjdE9yaWdpbi5sZWZ0IC0gKGhhbGZTcXVhcmUgKiAyKSAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIHRvcCA9IHBvc2l0aW9uVG9wIC0gcmVjdENvbnRlbnQuaGVpZ2h0IC8gMiArIGhhbGZTcXVhcmU7XG4gICAgICAgIGxlZnQgPSBwb3NpdGlvbkxlZnQgLSByZWN0Q29udGVudC53aWR0aCArIGhhbGZTcXVhcmU7XG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5pZ25vcmVBcnJvdykge1xuICAgICAgICAgIGxlZnQgPSBsZWZ0ICsgaGFsZlNxdWFyZSArIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIH1cblxuICAgICAgICBsZWZ0IC09IGNvbmZpZ1ZhbHVlPy5kaXJlY3Rpb25EaXN0YW5jZSB8fCAwO1xuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICB0b3AgPSByZWN0T3JpZ2luLnRvcCArIHJlY3RPcmlnaW4uaGVpZ2h0IC0gcmVjdENvbnRlbnQuaGVpZ2h0ICsgKGNvbmZpZ1ZhbHVlLnBvc2l0aW9uLmRpc3RhbmNlIHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA9IHRvcCArIHJlY3RDb250ZW50LmhlaWdodDtcblxuICAgICAgICBpZiAoYm90dG9tUG9zaXRpb25SZWN0Q29udGVudCA+IHZpZXdQb3J0LmhlaWdodCkge1xuICAgICAgICAgIHRvcCA9IHRvcCAtIChib3R0b21Qb3NpdGlvblJlY3RDb250ZW50IC0gdmlld1BvcnQuaGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHBvc2l0aW9uVG9wIC0gdG9wICsgMik7XG4gICAgICAgIHRoaXMuYXJyb3dMZWZ0LnNldChyZWN0Q29udGVudC53aWR0aCAtIDMpO1xuXG4gICAgICAgIHRoaXMudG9wLnNldCh0b3ApO1xuICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICBpZiAobGVmdCA+IDAgJiYgdG9wID4gMCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBwb3NpdGlvblRvcCA9IHJlY3RPcmlnaW4udG9wIC0gKGhhbGZTcXVhcmUgKiAyKSAtIGRpc3RhbmNlQXJyb3c7XG4gICAgICAgIHBvc2l0aW9uTGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLyAyIC0gaGFsZlNxdWFyZTtcbiAgICAgICAgdG9wID0gcG9zaXRpb25Ub3AgLSByZWN0Q29udGVudC5oZWlnaHQgKyBoYWxmU3F1YXJlO1xuICAgICAgICBsZWZ0ID0gcG9zaXRpb25MZWZ0IC0gcmVjdENvbnRlbnQud2lkdGggLyAyICsgaGFsZlNxdWFyZTtcblxuICAgICAgICBpZiAoY29uZmlnVmFsdWUuaWdub3JlQXJyb3cpIHtcbiAgICAgICAgICB0b3AgPSB0b3AgKyBoYWxmU3F1YXJlICsgZGlzdGFuY2VBcnJvdztcbiAgICAgICAgfVxuXG4gICAgICAgIHRvcCAtPSBjb25maWdWYWx1ZS5kaXJlY3Rpb25EaXN0YW5jZSB8fCAwO1xuXG4gICAgICAgIGlmIChjb25maWdWYWx1ZS5wb3NpdGlvbiAmJiBjb25maWdWYWx1ZS5wb3NpdGlvbj8ubW9kZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGxlZnQgPSByZWN0T3JpZ2luLmxlZnQgKyAoY29uZmlnVmFsdWUucG9zaXRpb24uZGlzdGFuY2UgfHwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnVmFsdWUucG9zaXRpb24gJiYgY29uZmlnVmFsdWUucG9zaXRpb24/Lm1vZGUgPT09ICdlbmQnKSB7XG4gICAgICAgICAgbGVmdCA9IHJlY3RPcmlnaW4ubGVmdCArIHJlY3RPcmlnaW4ud2lkdGggLSByZWN0Q29udGVudC53aWR0aCArIChjb25maWdWYWx1ZS5wb3NpdGlvbi5kaXN0YW5jZSB8fCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxlZnQgKz0gKGNvbmZpZ1ZhbHVlLnBhcmVudEJvcmRlcldpZHRoIHx8IDApO1xuICAgICAgICB0aGlzLmFycm93TGVmdC5zZXQocG9zaXRpb25MZWZ0IC0gbGVmdCk7XG4gICAgICAgIHRoaXMuYXJyb3dUb3Auc2V0KHJlY3RDb250ZW50LmhlaWdodCk7XG4gICAgICAgIHRoaXMudG9wLnNldCh0b3ApO1xuICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICBpZiAodG9wID4gMCAmJiBsZWZ0ID49IDAgJiYgbGVmdCArIHJlY3RDb250ZW50LndpZHRoIDwgdmlld1BvcnQud2lkdGgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy51cGRhdGUoY29uZmlnID0+ICh7IC4uLmNvbmZpZywgbWF4SGVpZ2h0OiB2aWV3UG9ydC5oZWlnaHQgLSAodmlld1BvcnQuaGVpZ2h0IC0gcmVjdE9yaWdpbi50b3ApIH0pKTtcbiAgICAgICAgICB0b3AgPSAwO1xuICAgICAgICAgIGxlZnQgPSBsZWZ0ID49IDAgPyBsZWZ0IDogMDtcbiAgICAgICAgICB0aGlzLmxlZnQuc2V0KGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2xhc3NBcnJvdyhkaXJlY3Rpb246IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04pIHtcbiAgICBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctcmlnaHQnKTtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctbGVmdCcpO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0aW9uID09PSAndG9wJykge1xuICAgICAgcmV0dXJuIHRoaXMuYXJyb3dDbGFzcy5zZXQoJ2xpYnMtdWktcG9wb3Zlci1vdmVybGF5LWFycm93LWRvd24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcnJvd0NsYXNzLnNldCgnbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3ctdXAnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFyaWFibGVDc3MoKSB7XG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSB0aGlzLmNvbmZpZygpO1xuICAgIHRoaXMuQ29udGFpbmVyRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saWJzLXVpLXBvcG92ZXItb3ZlcmxheS10aW1lLWFuaW1hdGlvbi10aW1lJywgYCR7Y29uZmlnVmFsdWUuYW5pbWF0aW9uQ29uZmlnPy50aW1lIHx8IC40fXNgKTtcbiAgICB0aGlzLkNvbnRhaW5lckVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGlicy11aS1wb3BvdmVyLW92ZXJsYXktdGltZS1hbmltYXRpb24tZGlzdGFuY2UnLCBgJHt0aGlzLmN1cnJlbnREaXJlY3Rpb24oKSA9PT0gJ3RvcCcgPyAnLScgOiAnJ30ke2NvbmZpZ1ZhbHVlLmFuaW1hdGlvbkNvbmZpZz8uZGlzdGFuY2UgfHwgMTJ9cHhgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQoKSk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIiwiPGRpdiAjY29udGFpbmVyXG4gIGNsYXNzPVwibGlicy11aS1wb3BvdmVyLW92ZXJsYXkge3sgY29uZmlnKCkuY2xhc3NJbmNsdWRlIHx8ICcnIH19XCJcbiAgW2NsYXNzLmxpYnMtdWktcG9wb3Zlci1vdmVybGF5LXdoaXRlLXRoZW1lXT1cImNvbmZpZygpLndoaXRlVGhlbWVcIlxuICBbY2xhc3MubGlicy11aS1wb3BvdmVyLW92ZXJsYXktYW5pbWF0aW9uLW1vdmVdPVwiY29uZmlnKCkuYW5pbWF0aW9uQ29uZmlnXCJcbiAgW25nU3R5bGVdPVwiY29uZmlnKCkubmdTdHlsZXMgfHwge31cIlxuICBbc3R5bGUud2lkdGhdPVwiY29uZmlnKCkud2lkdGggPyBjb25maWcoKS53aWR0aCArICdweCcgOiAnYXV0bydcIlxuICBbc3R5bGUubWF4V2lkdGgucHhdPVwiY29uZmlnKCkubWF4V2lkdGhcIlxuICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImNvbmZpZygpLm1heEhlaWdodFwiXG4gIFtzdHlsZS50b3AucHhdPVwidG9wKClcIlxuICBbc3R5bGUubGVmdC5weF09XCJsZWZ0KClcIlxuICBbc3R5bGUuekluZGV4XT1cImNvbmZpZygpLnpJbmRleCB8fCAxMFwiPlxuICBAaWYgKGNvbmZpZygpKSB7XG4gICAgQGlmICghY29uZmlnKCkuaWdub3JlQXJyb3cpIHtcbiAgICAgIDxkaXYgY2xhc3M9J3JlbGF0aXZlJz5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIFtjbGFzc109XCInbGlicy11aS1wb3BvdmVyLW92ZXJsYXktYXJyb3cgJysgYXJyb3dDbGFzcygpICsgKCBjb25maWcoKS53aGl0ZVRoZW1lID8gJyBsaWJzLXVpLXBvcG92ZXItb3ZlcmxheS13aGl0ZS10aGVtZSAnIDogJycpXCJcbiAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cImFycm93VG9wKClcIlxuICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImFycm93TGVmdCgpXCJcbiAgICAgICAgICBbYXR0ci5kaXJlY3Rpb25dPSdvdXRFdmVudCB8IGFzeW5jJz5cbiAgICAgICAgICA8cG9seWdvbiBwb2ludHM9XCIwLDAgNiw2IDEyLDBcIiAvPlxuICAgICAgICAgIFNvcnJ5LCB5b3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgU1ZHLlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGNvbmZpZygpLnRlbXBsYXRlOyBhcyB0ZW1wbGF0ZUNvbmZpZykge1xuICAgICAgPGRpdiBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZVxuICAgICAgICBjbGFzcz1cImxpYnMtdWktcG9wb3Zlci1vdmVybGF5LWJvZHkge3sgY29uZmlnKCkuY2xhc3NJbmNsdWRlT3ZlcmxheUJvZHkgfHwgJycgfX1cIlxuICAgICAgICBbYXR0ci5pc1RlbXBsYXRlXT1cInRydWVcIlxuICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCIoY29uZmlnKCkubWF4SGVpZ2h0KSsncHgnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZUNvbmZpZztjb250ZXh0OntpdGVtQ29udGV4dDpjb25maWcoKS5pdGVtQ29udGV4dH1cIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS1wb3BvdmVyLW92ZXJsYXktYm9keSBsaWJzLXVpLWZvbnQtaDdyIHt7IGNvbmZpZygpLmNsYXNzSW5jbHVkZU92ZXJsYXlCb2R5IHx8ICcnIH19XCJcbiAgICAgICAgTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmVcbiAgICAgICAgW29wdGlvbnNdPVwiY29uZmlnKCkuc2Nyb2xsT3ZlcmxheU9wdGlvbnNcIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImNvbmZpZygpLm1heEhlaWdodFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nVG9wLnB4XT1cImNvbmZpZygpLnBhZGRpbmdUb3AgPz8gOFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nUmlnaHQucHhdPVwiY29uZmlnKCkucGFkZGluZ1JpZ2h0ID8/IDhcIlxuICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiY29uZmlnKCkucGFkZGluZ0xlZnQgPz8gOFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nQm90dG9tLnB4XT1cImNvbmZpZygpLnBhZGRpbmdCb3R0b20gPz8gOFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiKGNvbmZpZygpLmNvbnRlbnQgfHwgJyAnKSB8IHRyYW5zbGF0ZVwiPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9XG5cbjwvZGl2PlxuIl19