@magicx-eng/ai-autocomplete-angular 0.25.1 → 0.25.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.
@@ -265,6 +265,7 @@ export class AIAutocompleteDropdownComponent {
265
265
  activeIndex: dd.activeIndex,
266
266
  isActivePillSelected: dd.isActivePillSelected,
267
267
  isLoading: dd.isLoading,
268
+ skeletonExiting: Boolean(dd.skeletonExiting),
268
269
  showsPills,
269
270
  showsSkip,
270
271
  skipDisabled: dd.isLoading || Boolean(dd.inSelectionAnimation),
@@ -326,7 +327,7 @@ export class AIAutocompleteDropdownComponent {
326
327
  }
327
328
  }
328
329
  AIAutocompleteDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AIAutocompleteDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
329
- AIAutocompleteDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AIAutocompleteDropdownComponent, isStandalone: true, selector: "ai-autocomplete-dropdown", inputs: { controller: "controller", showPills: "showPills", showSkipButton: "showSkipButton", showOptionIcons: "showOptionIcons", showOptionImages: "showOptionImages", showOptionCounts: "showOptionCounts", productsLayout: "productsLayout", className: "className", mode: "mode" }, viewQueries: [{ propertyName: "dropdownRootRef", first: true, predicate: ["dropdownRoot"], descendants: true }, { propertyName: "scrollArrowRef", first: true, predicate: ["scrollArrow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"vm$ | async as vm\"\n #dropdownRoot\n [id]=\"controller.listboxId\"\n role=\"listbox\"\n data-aia-dropdown=\"\"\n [attr.data-aia-loading]=\"vm.isLoading ? '' : null\"\n [attr.data-mode]=\"resolvedMode\"\n [attr.data-options-position]=\"vm.optionsPosition\"\n [attr.data-aia-has-products]=\"vm.products.length > 0 ? '' : null\"\n [class]=\"rootClass\"\n [class.magicx-aia-dropdown-visible]=\"vm.isVisible\"\n (mousedown)=\"preventBlur($event)\"\n>\n <aia-stack space=\"8px\">\n <aia-cluster\n *ngIf=\"vm.showsPills || vm.showsSkip\"\n class=\"magicx-aia-dropdown-pillbar\"\n data-aia-pillbar=\"\"\n [noWrap]=\"true\"\n >\n <!-- The scroll + right-edge fade live on this wrapper (not the bar) so\n the skip button stays outside the masked region \u2014 pinned and fully\n opaque while overflowing pills fade under it. Absent in a skip-only\n row (pills rendered elsewhere via pillPlacement inline/hidden). -->\n <span *ngIf=\"vm.showsPills\" class=\"magicx-aia-pill-scroll\" data-aia-pill-scroll=\"\">\n <aia-pill-list\n [pills]=\"vm.pills\"\n [activePillIndex]=\"0\"\n [activeSelected]=\"vm.isActivePillSelected\"\n [rounded]=\"true\"\n [loading]=\"vm.isLoading\"\n (selectPill)=\"onPillClick($event)\"\n ></aia-pill-list>\n </span>\n <button\n *ngIf=\"vm.showsSkip\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-skip\"\n data-aia-skip=\"\"\n [disabled]=\"vm.skipDisabled\"\n [attr.aria-label]=\"vm.activePillLabel ? 'Skip ' + vm.activePillLabel : 'Skip'\"\n (click)=\"onSkip()\"\n >\n skip\n </button>\n </aia-cluster>\n\n <aia-suggestion-grid\n *ngIf=\"vm.showsOptions\"\n [options]=\"vm.options\"\n [activeIndex]=\"vm.activeIndex\"\n [listboxId]=\"controller.listboxId\"\n [loading]=\"vm.isLoading\"\n [groupKey]=\"vm.groupKey\"\n [optionsPosition]=\"vm.optionsPosition\"\n [showIcons]=\"vm.showOptionIcons\"\n [showImages]=\"vm.showOptionImages\"\n [showCounts]=\"vm.showOptionCounts\"\n (select)=\"onSelect($event)\"\n (highlight)=\"onHighlight($event)\"\n ></aia-suggestion-grid>\n\n <aia-date-grid\n *ngIf=\"vm.showsDateGrid\"\n [options]=\"vm.options\"\n [activeIndex]=\"vm.activeIndex\"\n [listboxId]=\"controller.listboxId\"\n [view]=\"vm.dateView\"\n [selection]=\"vm.dateSelection\"\n (select)=\"onSelect($event)\"\n (highlight)=\"onHighlight($event)\"\n (previousMonth)=\"onPreviousMonth()\"\n (nextMonth)=\"onNextMonth()\"\n ></aia-date-grid>\n\n <div\n *ngIf=\"vm.showsFallbackSkeleton\"\n class=\"magicx-aia-dropdown-skeleton-bars\"\n data-aia-skeleton-bars=\"\"\n >\n <span\n *ngFor=\"let w of fallbackSkeletonBarWidths; trackBy: trackByWidth\"\n class=\"magicx-aia-dropdown-skeleton-bar\"\n [style.width.px]=\"w\"\n ></span>\n </div>\n\n <!-- *ngIf, not just the section's own guard inside the component: the host\n element is an in-flow child of .aia-stack (display:flex; gap:8px), so\n an always-instantiated zero-height host would add a SECOND 8px gap\n between the grid and the footer \u2014 in every dropdown, products or not.\n The grid's --aia-grid-overlap-bottom is tuned for exactly one gap, so\n the footer would land 8px below the band it is meant to cover. -->\n <aia-product-strip\n *ngIf=\"vm.products.length > 0\"\n [products]=\"vm.products\"\n [listboxId]=\"controller.listboxId\"\n [focusable]=\"vm.isVisible\"\n [layout]=\"productsLayout\"\n (select)=\"onProductSelect($event)\"\n (focusChange)=\"onProductFocusChange($event)\"\n ></aia-product-strip>\n\n <footer class=\"magicx-aia-footer\" data-aia-footer=\"\">\n <div class=\"magicx-aia-footer-row\">\n <span class=\"magicx-aia-footer-hint-group\">\n <kbd class=\"magicx-aia-footer-key\">{{ vm.footerKey }}</kbd>\n <span class=\"magicx-aia-footer-hint\">{{ vm.footerHint }}</span>\n </span>\n <a\n class=\"magicx-aia-footer-brand-link\"\n [href]=\"brandHref\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span class=\"magicx-aia-footer-brand\">AI</span>\n <span class=\"magicx-aia-footer-badge\">Autocomplete</span>\n </a>\n </div>\n </footer>\n </aia-stack>\n <!-- \"More below\" arrow \u2014 an overlay on the panel, not a section of the\n stack. Shown/positioned by the core's scroll-arrow controller (see\n syncScrollArrow); markup mirrors vanilla's createScrollArrowButton. -->\n <button\n #scrollArrow\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-scroll-arrow\"\n data-aia-scroll-arrow=\"\"\n [attr.aria-label]=\"scrollArrowLabel\"\n aria-hidden=\"true\"\n >\n <svg\n viewBox=\"0 0 16 16\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M4 6.5 8 10.5l4-4\" />\n </svg>\n </button>\n</div>\n", styles: [":where(.magicx-aia){box-sizing:border-box}:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html),:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html):before,:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html):after{all:revert;box-sizing:border-box}:where([data-aia-input-wrapper],[data-aia-dropdown]):not(html):not(html):not(html):not(html):not(html){line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-align:start;text-shadow:none;font-style:normal;font-variant:normal;white-space:normal;visibility:visible;cursor:auto}:where([data-aia-input-wrapper] svg,[data-aia-dropdown] svg):not(:where([data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html){display:revert;vertical-align:revert;position:revert;inset:revert;float:revert;margin:revert;padding:revert;border:revert;border-radius:revert;outline:revert;background:revert;box-shadow:revert;min-width:revert;max-width:revert;min-height:revert;max-height:revert;flex:revert;transition:revert;animation:revert;rotate:revert;scale:revert;translate:revert}:where([data-aia-input-wrapper] svg *,[data-aia-dropdown] svg *):not(:where([data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html){transition:revert;animation:revert}:where(.magicx-aia){--aia-primitive-neutral-0: #000000;--aia-primitive-neutral-150: #1a1b1d;--aia-primitive-neutral-250: #323232;--aia-primitive-neutral-300: #333539;--aia-primitive-neutral-400: #4a4a4a;--aia-primitive-neutral-500: #505050;--aia-primitive-neutral-700: #b0b0b0;--aia-primitive-neutral-750: #bdbdbd;--aia-primitive-neutral-900: #e7e7e7;--aia-primitive-neutral-1000: #ffffff;--aia-primitive-blue-50: #eef2ff;--aia-primitive-neutral-750-a50: rgba(189, 189, 189, .51);--aia-primitive-neutral-750-a25: rgba(189, 189, 189, .25);--aia-primitive-neutral-750-a35: rgba(189, 189, 189, .35);--aia-primitive-neutral-750-a30: rgba(189, 189, 189, .3);--aia-primitive-neutral-750-a15: rgba(189, 189, 189, .15);--aia-primitive-neutral-750-a105: rgba(189, 189, 189, .105);--aia-primitive-neutral-700-a40: rgba(176, 176, 176, .4);--aia-primitive-neutral-900-a50: rgba(231, 231, 231, .5);--aia-primitive-neutral-400-a50: rgba(74, 74, 74, .5)}:where(.magicx-aia),:where(.magicx-aia[data-mode=\"light\"]){--aia-surface: var(--aia-primitive-neutral-1000);--aia-border: var(--aia-primitive-neutral-700);--aia-shadow: none;--aia-dropdown-border: var(--aia-primitive-neutral-900-a50);--aia-dropdown-shadow: none;--aia-pill-bg: var(--aia-primitive-neutral-750);--aia-pill-color: var(--aia-primitive-neutral-300);--aia-pill-font-size: 16px;--aia-completed-pill-bg: var(--aia-primitive-neutral-750-a105);--aia-completed-pill-bg-active: var(--aia-primitive-neutral-750-a35);--aia-completed-pill-color: var(--aia-primitive-neutral-0);--aia-option-bg: var(--aia-primitive-blue-50);--aia-option-color: var(--aia-primitive-neutral-150);--aia-option-color-selected: var(--aia-primitive-neutral-0);--aia-option-font-size: 16px;--aia-written-text-color: var(--aia-primitive-neutral-0);--aia-written-text-font-size: 16px;--aia-caret-color: var(--aia-written-text-color, #000000);--aia-submit-bg: var(--aia-primitive-neutral-0);--aia-submit-color: var(--aia-primitive-neutral-1000);--aia-color-text-muted: #6b7280;--aia-skeleton-bg: var(--aia-primitive-neutral-750-a25);--aia-streak-rgb: 99, 102, 241;--aia-footer-hint-color: var(--aia-primitive-neutral-500);--aia-footer-brand-color: var(--aia-primitive-neutral-700);--aia-footer-badge-border: var(--aia-primitive-neutral-750-a50)}:where(.magicx-aia[data-mode=\"dark\"]){--aia-surface: var(--aia-primitive-neutral-0);--aia-border: var(--aia-primitive-neutral-500);--aia-shadow: none;--aia-dropdown-border: var(--aia-primitive-neutral-400-a50);--aia-dropdown-shadow: none;--aia-pill-bg: var(--aia-primitive-neutral-750);--aia-pill-color: var(--aia-primitive-neutral-700);--aia-pill-font-size: 16px;--aia-completed-pill-bg: var(--aia-primitive-neutral-750-a15);--aia-completed-pill-bg-active: var(--aia-primitive-neutral-750-a35);--aia-completed-pill-color: var(--aia-primitive-neutral-1000);--aia-option-bg: var(--aia-primitive-neutral-250);--aia-option-color: var(--aia-primitive-neutral-900);--aia-option-color-selected: var(--aia-primitive-neutral-1000);--aia-option-font-size: 16px;--aia-written-text-color: var(--aia-primitive-neutral-1000);--aia-written-text-font-size: 16px;--aia-caret-color: var(--aia-written-text-color, #ffffff);--aia-submit-bg: var(--aia-primitive-neutral-1000);--aia-submit-color: var(--aia-primitive-neutral-0);--aia-color-text-muted: #c1c4cb;--aia-skeleton-bg: var(--aia-primitive-neutral-150);--aia-streak-rgb: 255, 255, 255;--aia-footer-hint-color: var(--aia-primitive-neutral-700);--aia-footer-brand-color: var(--aia-primitive-neutral-500);--aia-footer-badge-border: var(--aia-primitive-neutral-500)}[data-aia-dropdown]{--aia-footer-row-height: 23px;--aia-footer-band: calc(var(--aia-footer-gap, 12px) + var(--aia-footer-row-height, 23px));--aia-grid-scroll-bottom: var(--aia-footer-band);--aia-grid-overlap-bottom: calc(-1 * (var(--aia-footer-band) + 8px));--aia-footer-fade-lead: 20px;--aia-footer-fade-inset: calc(-1 * var(--aia-footer-fade-lead)) 0 0}[data-aia-dropdown] [data-aia-pillbar] .aia-pill-list{padding-inline:10px}[data-aia-dropdown] [data-aia-pillbar] .aia-pill{justify-content:flex-start;border-inline-width:0;padding-inline:0}[data-aia-dropdown] .aia-grid[data-scroll]{padding-top:var(--aia-grid-scroll-top, 0);padding-bottom:var(--aia-grid-scroll-bottom, 0);margin-top:var(--aia-grid-overlap-top, 0);margin-bottom:var(--aia-grid-overlap-bottom, 0)}[data-aia-dropdown] [data-aia-footer]:before{content:\"\";position:absolute;inset:var(--aia-footer-fade-inset, -20px 0 0);z-index:-1;pointer-events:none;background:linear-gradient(to bottom,transparent,var(--aia-surface, #ffffff))}[data-aia-dropdown][data-aia-surface=glass]{--aia-footer-chip-bg: transparent}[data-aia-dropdown][data-aia-surface=glass] [data-aia-footer]:before{display:none}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown],[data-aia-dropdown][data-options-position=above]{--aia-grid-scroll-bottom: 0px;--aia-grid-overlap-bottom: 0px;--aia-grid-scroll-top: var(--aia-footer-band);--aia-grid-overlap-top: calc(-1 * (var(--aia-footer-band) + 8px));--aia-footer-fade-inset: 0 0 calc(-1 * var(--aia-footer-fade-lead));transform-origin:50% 100%;top:auto;bottom:100%;margin-top:0;margin-bottom:6px}[data-aia-dropdown][data-aia-has-products]{--aia-grid-scroll-bottom: 0px;--aia-grid-overlap-bottom: 0px;--aia-grid-scroll-top: 0px;--aia-grid-overlap-top: 0px;--aia-footer-fade-lead: 0px}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] .aia-stack,[data-aia-dropdown][data-options-position=above] .aia-stack{flex-direction:column-reverse}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer],[data-aia-dropdown][data-options-position=above] [data-aia-footer]{padding:0 0 var(--aia-footer-gap, 12px) 8px}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer]:before,[data-aia-dropdown][data-options-position=above] [data-aia-footer]:before{background:linear-gradient(to top,transparent,var(--aia-surface, #ffffff))}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] .magicx-aia-footer,[data-aia-dropdown][data-options-position=above] .magicx-aia-footer{flex-direction:column-reverse}@media (min-width: 769px){[data-aia-dropdown] [data-aia-footer]:before,[data-aia-dropdown][data-options-position=above] [data-aia-footer]:before,:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer]:before{inset:0;background:var(--aia-surface, #ffffff)}}\n", ".magicx-aia-dropdown{position:absolute;left:0;right:0;top:100%;max-width:544px;margin-top:6px;display:flex;flex-direction:column;box-sizing:border-box;padding:10px 8px 10px max(0px,calc(var(--aia-content-inset-left, 16px) - 10px));overflow:hidden;container-type:inline-size;z-index:10;opacity:0;pointer-events:none;transform-origin:50% 0;transform:scaleY(var(--aia-dropdown-reveal-scale, .02));transition:opacity .4s cubic-bezier(.4,0,.2,1),transform 0s .4s;background:var(--aia-surface, #ffffff);border:1px solid var(--aia-dropdown-border, rgba(231, 231, 231, .5));border-radius:9px;box-shadow:var(--aia-dropdown-shadow, none)}.magicx-aia-dropdown:has([data-aia-datepicker]){max-width:var(--aia-date-panel-width, 312px)}.magicx-aia-dropdown[data-aia-surface=glass]{background:transparent;border-color:transparent;box-shadow:#fff -3.2px -3.2px 3.2px -3.2px inset,#fff 6.4px 6.4px 1.6px -8px inset,var(--aia-dropdown-bg, transparent) -6.4px 6.4px 1.6px -8px inset,var(--aia-dropdown-bg, transparent) 6.4px -6.4px 1.6px -8px inset,#ffffff26 -1.6px 0 0 -1.6px inset,#ffffff26 0 -1.6px 0 -1.6px inset,#ffffff4d 0 1.6px inset,#ffffff4d 1.6px 0 inset,inset 0 0 30px 5px #0000000d;backdrop-filter:blur(30px)}.magicx-aia-dropdown-visible{opacity:1;pointer-events:auto;transform:scaleY(1);transition:opacity .1s cubic-bezier(.4,0,.2,1),transform .32s cubic-bezier(.22,1.28,.36,1)}.magicx-aia-scroll-arrow{position:absolute;left:50%;bottom:var(--aia-scroll-arrow-bottom, 8px);z-index:4;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin:0 0 0 -16px;padding:0;border:0;border-radius:0;background:transparent;color:var( --aia-scroll-arrow-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );box-shadow:none;cursor:pointer;pointer-events:none;opacity:0;transition:opacity 1s cubic-bezier(.4,0,.2,1);animation:magicx-aia-scroll-arrow-bob 2.6s ease-in-out infinite}@keyframes magicx-aia-scroll-arrow-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.magicx-aia-scroll-arrow[data-aia-visible]{pointer-events:auto;opacity:1}.magicx-aia-scroll-arrow:disabled{cursor:default}.magicx-aia-scroll-arrow svg{width:14px;height:14px;fill:none;stroke:currentColor}.magicx-aia-scroll-arrow svg path{fill:none;stroke:currentColor}.magicx-aia-scroll-arrow:hover{color:var( --aia-scroll-arrow-color-hover, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}@media (prefers-reduced-motion: reduce){.magicx-aia-scroll-arrow,.magicx-aia-dropdown{animation-duration:0s;animation-delay:0s;transition-duration:0s}}.magicx-aia-dropdown-pillbar{overflow:hidden}.magicx-aia-pill-scroll{display:inline-flex;align-items:center;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 48px),transparent 100%);-webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 48px),transparent 100%)}.magicx-aia-pill-scroll::-webkit-scrollbar{display:none}.magicx-aia-skip{display:inline-flex;align-items:center;margin-inline-start:auto;flex-shrink:0;padding:5px 8px;border:none;border-radius:6px;background:transparent;font-family:inherit;font-size:var(--aia-skip-font-size, 10px);line-height:18px;color:var(--aia-skip-color, var(--aia-footer-hint-color, #505050));cursor:pointer;white-space:nowrap;transition:color .15s ease-out,background-color .15s ease-out}.magicx-aia-skip:hover{color:var(--aia-skip-color-hover, var(--aia-pill-color, var(--aia-color-text-muted, #c1c4cb)));background:var(--aia-skip-hover-bg, var(--aia-option-bg, transparent))}.magicx-aia-skip:disabled{pointer-events:none;cursor:default;opacity:.5}.magicx-aia-footer{display:flex;flex-direction:column;gap:8px;padding:var(--aia-footer-gap, 12px) 0 0 8px;position:relative;z-index:3;pointer-events:none}.magicx-aia-footer-row{display:flex;align-items:center;justify-content:space-between}.magicx-aia-footer-hint-group{display:inline-flex;align-items:center;gap:5px}.magicx-aia-footer-hint-group,.magicx-aia-footer-brand-link{pointer-events:auto}.magicx-aia-footer-brand-link{display:inline-flex;align-items:center;gap:2px;text-decoration:none;cursor:pointer;transition:opacity .15s ease-out}.magicx-aia-footer-hint-group,.magicx-aia-footer-brand-link{background:var( --aia-footer-chip-bg, color-mix(in srgb, var(--aia-surface, #ffffff) 65%, transparent) );padding-inline:4px;border-radius:6px}.magicx-aia-footer-brand-link{background:var(--aia-footer-brand-pill-bg, var(--aia-surface, #ffffff));border-radius:999px;padding:2px 4px;gap:4px}.magicx-aia-footer-brand-link:hover{opacity:.7}.magicx-aia-footer-key{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:22px;padding:2px 6px;border:.5px solid var(--aia-footer-hint-color, #505050);border-radius:5px;font-family:inherit;font-size:11px;line-height:18px;color:var(--aia-footer-hint-color, #505050)}.magicx-aia-footer-hint{font-family:inherit;font-size:11px;line-height:18px;color:var(--aia-footer-hint-color, #505050)}.magicx-aia-footer-brand{font-family:inherit;font-size:10px;line-height:18px;color:var(--aia-footer-brand-color, #b0b0b0)}.magicx-aia-footer-badge{display:inline-flex;align-items:center;height:var(--aia-footer-row-height, 23px);padding:2.5px 5.5px;border:.5px solid var(--aia-footer-badge-border, rgba(189, 189, 189, .51));border-radius:999px;font-family:inherit;font-size:10px;line-height:18px;color:var(--aia-footer-brand-color, #b0b0b0)}@media (max-width: 768px){.magicx-aia-footer-hint-group{display:none}.magicx-aia-footer-row{justify-content:flex-end}}.magicx-aia-dropdown-skeleton-bars{display:flex;flex-direction:column;gap:20px;padding:7px 8px}.magicx-aia-dropdown-skeleton-bar{display:block;height:14px;border-radius:999px;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));opacity:.5;animation:aiaDropdownSkeletonPulse 1.4s ease-in-out infinite}.magicx-aia-dropdown-skeleton-bar:nth-child(2){animation-delay:.15s}.magicx-aia-dropdown-skeleton-bar:nth-child(3){animation-delay:.3s}@keyframes aiaDropdownSkeletonPulse{0%,to{opacity:.5}50%{opacity:.25}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: PillListComponent, selector: "aia-pill-list", inputs: ["pills", "activePillIndex", "rounded", "loading", "activeSelected"], outputs: ["selectPill"] }, { kind: "component", type: ProductStripComponent, selector: "aia-product-strip", inputs: ["products", "listboxId", "focusable", "layout"], outputs: ["select", "focusChange"] }, { kind: "component", type: SuggestionGridComponent, selector: "aia-suggestion-grid", inputs: ["options", "activeIndex", "listboxId", "loading", "groupKey", "optionsPosition", "showIcons", "showImages", "showCounts"], outputs: ["select", "highlight"] }, { kind: "component", type: DateGridComponent, selector: "aia-date-grid", inputs: ["options", "activeIndex", "listboxId", "view", "selection"], outputs: ["select", "highlight", "previousMonth", "nextMonth"] }, { kind: "component", type: StackComponent, selector: "aia-stack", inputs: ["space", "align"] }, { kind: "component", type: ClusterComponent, selector: "aia-cluster", inputs: ["gap", "align", "justify", "noWrap", "inline"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
330
+ AIAutocompleteDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AIAutocompleteDropdownComponent, isStandalone: true, selector: "ai-autocomplete-dropdown", inputs: { controller: "controller", showPills: "showPills", showSkipButton: "showSkipButton", showOptionIcons: "showOptionIcons", showOptionImages: "showOptionImages", showOptionCounts: "showOptionCounts", productsLayout: "productsLayout", className: "className", mode: "mode" }, viewQueries: [{ propertyName: "dropdownRootRef", first: true, predicate: ["dropdownRoot"], descendants: true }, { propertyName: "scrollArrowRef", first: true, predicate: ["scrollArrow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"vm$ | async as vm\"\n #dropdownRoot\n [id]=\"controller.listboxId\"\n role=\"listbox\"\n data-aia-dropdown=\"\"\n [attr.data-aia-loading]=\"vm.isLoading ? '' : null\"\n [attr.data-aia-skeleton-exiting]=\"vm.skeletonExiting ? '' : null\"\n [attr.data-mode]=\"resolvedMode\"\n [attr.data-options-position]=\"vm.optionsPosition\"\n [attr.data-aia-has-products]=\"vm.products.length > 0 ? '' : null\"\n [class]=\"rootClass\"\n [class.magicx-aia-dropdown-visible]=\"vm.isVisible\"\n (mousedown)=\"preventBlur($event)\"\n>\n <aia-stack space=\"8px\">\n <aia-cluster\n *ngIf=\"vm.showsPills || vm.showsSkip\"\n class=\"magicx-aia-dropdown-pillbar\"\n data-aia-pillbar=\"\"\n [noWrap]=\"true\"\n >\n <!-- The scroll + right-edge fade live on this wrapper (not the bar) so\n the skip button stays outside the masked region \u2014 pinned and fully\n opaque while overflowing pills fade under it. Absent in a skip-only\n row (pills rendered elsewhere via pillPlacement inline/hidden). -->\n <span *ngIf=\"vm.showsPills\" class=\"magicx-aia-pill-scroll\" data-aia-pill-scroll=\"\">\n <aia-pill-list\n [pills]=\"vm.pills\"\n [activePillIndex]=\"0\"\n [activeSelected]=\"vm.isActivePillSelected\"\n [rounded]=\"true\"\n [loading]=\"vm.isLoading\"\n (selectPill)=\"onPillClick($event)\"\n ></aia-pill-list>\n </span>\n <button\n *ngIf=\"vm.showsSkip\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-skip\"\n data-aia-skip=\"\"\n [disabled]=\"vm.skipDisabled\"\n [attr.aria-label]=\"vm.activePillLabel ? 'Skip ' + vm.activePillLabel : 'Skip'\"\n (click)=\"onSkip()\"\n >\n skip\n </button>\n </aia-cluster>\n\n <aia-suggestion-grid\n *ngIf=\"vm.showsOptions\"\n [options]=\"vm.options\"\n [activeIndex]=\"vm.activeIndex\"\n [listboxId]=\"controller.listboxId\"\n [loading]=\"vm.isLoading\"\n [groupKey]=\"vm.groupKey\"\n [optionsPosition]=\"vm.optionsPosition\"\n [showIcons]=\"vm.showOptionIcons\"\n [showImages]=\"vm.showOptionImages\"\n [showCounts]=\"vm.showOptionCounts\"\n (select)=\"onSelect($event)\"\n (highlight)=\"onHighlight($event)\"\n ></aia-suggestion-grid>\n\n <aia-date-grid\n *ngIf=\"vm.showsDateGrid\"\n [options]=\"vm.options\"\n [activeIndex]=\"vm.activeIndex\"\n [listboxId]=\"controller.listboxId\"\n [view]=\"vm.dateView\"\n [selection]=\"vm.dateSelection\"\n (select)=\"onSelect($event)\"\n (highlight)=\"onHighlight($event)\"\n (previousMonth)=\"onPreviousMonth()\"\n (nextMonth)=\"onNextMonth()\"\n ></aia-date-grid>\n\n <div\n *ngIf=\"vm.showsFallbackSkeleton\"\n class=\"magicx-aia-dropdown-skeleton-bars\"\n data-aia-skeleton-bars=\"\"\n >\n <span\n *ngFor=\"let w of fallbackSkeletonBarWidths; trackBy: trackByWidth\"\n class=\"magicx-aia-dropdown-skeleton-bar\"\n [style.width.px]=\"w\"\n ></span>\n </div>\n\n <!-- *ngIf, not just the section's own guard inside the component: the host\n element is an in-flow child of .aia-stack (display:flex; gap:8px), so\n an always-instantiated zero-height host would add a SECOND 8px gap\n between the grid and the footer \u2014 in every dropdown, products or not.\n The grid's --aia-grid-overlap-bottom is tuned for exactly one gap, so\n the footer would land 8px below the band it is meant to cover. -->\n <aia-product-strip\n *ngIf=\"vm.products.length > 0\"\n [products]=\"vm.products\"\n [listboxId]=\"controller.listboxId\"\n [focusable]=\"vm.isVisible\"\n [layout]=\"productsLayout\"\n (select)=\"onProductSelect($event)\"\n (focusChange)=\"onProductFocusChange($event)\"\n ></aia-product-strip>\n\n <footer class=\"magicx-aia-footer\" data-aia-footer=\"\">\n <div class=\"magicx-aia-footer-row\">\n <span class=\"magicx-aia-footer-hint-group\">\n <kbd class=\"magicx-aia-footer-key\">{{ vm.footerKey }}</kbd>\n <span class=\"magicx-aia-footer-hint\">{{ vm.footerHint }}</span>\n </span>\n <a\n class=\"magicx-aia-footer-brand-link\"\n [href]=\"brandHref\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span class=\"magicx-aia-footer-brand\">AI</span>\n <span class=\"magicx-aia-footer-badge\">Autocomplete</span>\n </a>\n </div>\n </footer>\n </aia-stack>\n <!-- \"More below\" arrow \u2014 an overlay on the panel, not a section of the\n stack. Shown/positioned by the core's scroll-arrow controller (see\n syncScrollArrow); markup mirrors vanilla's createScrollArrowButton. -->\n <button\n #scrollArrow\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-scroll-arrow\"\n data-aia-scroll-arrow=\"\"\n [attr.aria-label]=\"scrollArrowLabel\"\n aria-hidden=\"true\"\n >\n <svg\n viewBox=\"0 0 16 16\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M4 6.5 8 10.5l4-4\" />\n </svg>\n </button>\n</div>\n", styles: [":where(.magicx-aia){box-sizing:border-box}:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html),:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html):before,:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html):after{all:revert;box-sizing:border-box}:where([data-aia-input-wrapper],[data-aia-dropdown]):not(html):not(html):not(html):not(html):not(html){line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-align:start;text-shadow:none;font-style:normal;font-variant:normal;white-space:normal;visibility:visible;cursor:auto}:where([data-aia-input-wrapper] svg,[data-aia-dropdown] svg):not(:where([data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html){display:revert;vertical-align:revert;position:revert;inset:revert;float:revert;margin:revert;padding:revert;border:revert;border-radius:revert;outline:revert;background:revert;box-shadow:revert;min-width:revert;max-width:revert;min-height:revert;max-height:revert;flex:revert;transition:revert;animation:revert;rotate:revert;scale:revert;translate:revert}:where([data-aia-input-wrapper] svg *,[data-aia-dropdown] svg *):not(:where([data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html){transition:revert;animation:revert}:where(.magicx-aia){--aia-primitive-neutral-0: #000000;--aia-primitive-neutral-150: #1a1b1d;--aia-primitive-neutral-250: #323232;--aia-primitive-neutral-300: #333539;--aia-primitive-neutral-400: #4a4a4a;--aia-primitive-neutral-500: #505050;--aia-primitive-neutral-700: #b0b0b0;--aia-primitive-neutral-750: #bdbdbd;--aia-primitive-neutral-900: #e7e7e7;--aia-primitive-neutral-1000: #ffffff;--aia-primitive-blue-50: #eef2ff;--aia-primitive-neutral-750-a50: rgba(189, 189, 189, .51);--aia-primitive-neutral-750-a25: rgba(189, 189, 189, .25);--aia-primitive-neutral-750-a8: rgba(189, 189, 189, .083);--aia-primitive-neutral-750-a35: rgba(189, 189, 189, .35);--aia-primitive-neutral-750-a30: rgba(189, 189, 189, .3);--aia-primitive-neutral-750-a15: rgba(189, 189, 189, .15);--aia-primitive-neutral-750-a105: rgba(189, 189, 189, .105);--aia-primitive-neutral-700-a40: rgba(176, 176, 176, .4);--aia-primitive-neutral-900-a50: rgba(231, 231, 231, .5);--aia-primitive-neutral-400-a50: rgba(74, 74, 74, .5)}:where(.magicx-aia),:where(.magicx-aia[data-mode=\"light\"]){--aia-surface: var(--aia-primitive-neutral-1000);--aia-border: var(--aia-primitive-neutral-700);--aia-shadow: none;--aia-dropdown-border: var(--aia-primitive-neutral-900-a50);--aia-dropdown-shadow: none;--aia-pill-bg: var(--aia-primitive-neutral-750);--aia-pill-color: var(--aia-primitive-neutral-300);--aia-pill-font-size: 16px;--aia-completed-pill-bg: var(--aia-primitive-neutral-750-a105);--aia-completed-pill-bg-active: var(--aia-primitive-neutral-750-a35);--aia-completed-pill-color: var(--aia-primitive-neutral-0);--aia-option-bg: var(--aia-primitive-blue-50);--aia-option-color: var(--aia-primitive-neutral-150);--aia-option-color-selected: var(--aia-primitive-neutral-0);--aia-option-font-size: 16px;--aia-written-text-color: var(--aia-primitive-neutral-0);--aia-written-text-font-size: 16px;--aia-caret-color: var(--aia-written-text-color, #000000);--aia-submit-bg: var(--aia-primitive-neutral-0);--aia-submit-color: var(--aia-primitive-neutral-1000);--aia-color-text-muted: #6b7280;--aia-skeleton-bg: var(--aia-primitive-neutral-750-a8);--aia-streak-rgb: 99, 102, 241;--aia-footer-hint-color: var(--aia-primitive-neutral-500);--aia-footer-brand-color: var(--aia-primitive-neutral-700);--aia-footer-badge-border: var(--aia-primitive-neutral-750-a50)}:where(.magicx-aia[data-mode=\"dark\"]){--aia-surface: var(--aia-primitive-neutral-0);--aia-border: var(--aia-primitive-neutral-500);--aia-shadow: none;--aia-dropdown-border: var(--aia-primitive-neutral-400-a50);--aia-dropdown-shadow: none;--aia-pill-bg: var(--aia-primitive-neutral-750);--aia-pill-color: var(--aia-primitive-neutral-700);--aia-pill-font-size: 16px;--aia-completed-pill-bg: var(--aia-primitive-neutral-750-a15);--aia-completed-pill-bg-active: var(--aia-primitive-neutral-750-a35);--aia-completed-pill-color: var(--aia-primitive-neutral-1000);--aia-option-bg: var(--aia-primitive-neutral-250);--aia-option-color: var(--aia-primitive-neutral-900);--aia-option-color-selected: var(--aia-primitive-neutral-1000);--aia-option-font-size: 16px;--aia-written-text-color: var(--aia-primitive-neutral-1000);--aia-written-text-font-size: 16px;--aia-caret-color: var(--aia-written-text-color, #ffffff);--aia-submit-bg: var(--aia-primitive-neutral-1000);--aia-submit-color: var(--aia-primitive-neutral-0);--aia-color-text-muted: #c1c4cb;--aia-skeleton-bg: var(--aia-primitive-neutral-150);--aia-streak-rgb: 255, 255, 255;--aia-footer-hint-color: var(--aia-primitive-neutral-700);--aia-footer-brand-color: var(--aia-primitive-neutral-500);--aia-footer-badge-border: var(--aia-primitive-neutral-500)}[data-aia-dropdown]{--aia-footer-row-height: 23px;--aia-footer-band: calc(var(--aia-footer-gap, 12px) + var(--aia-footer-row-height, 23px));--aia-grid-scroll-bottom: var(--aia-footer-band);--aia-grid-overlap-bottom: calc(-1 * (var(--aia-footer-band) + 8px));--aia-footer-fade-lead: 20px;--aia-footer-fade-inset: calc(-1 * var(--aia-footer-fade-lead)) 0 0}[data-aia-dropdown] [data-aia-pillbar] .aia-pill-list{padding-inline:10px}[data-aia-dropdown] [data-aia-pillbar] .aia-pill{justify-content:flex-start;border-inline-width:0;padding-inline:0}[data-aia-dropdown] .aia-grid[data-scroll]{padding-top:var(--aia-grid-scroll-top, 0);padding-bottom:var(--aia-grid-scroll-bottom, 0);margin-top:var(--aia-grid-overlap-top, 0);margin-bottom:var(--aia-grid-overlap-bottom, 0)}[data-aia-dropdown] [data-aia-footer]:before{content:\"\";position:absolute;inset:var(--aia-footer-fade-inset, -20px 0 0);z-index:-1;pointer-events:none;background:linear-gradient(to bottom,transparent,var(--aia-surface, #ffffff))}[data-aia-dropdown][data-aia-surface=glass]{--aia-footer-chip-bg: transparent}[data-aia-dropdown][data-aia-surface=glass] [data-aia-footer]:before{display:none}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown],[data-aia-dropdown][data-options-position=above]{--aia-grid-scroll-bottom: 0px;--aia-grid-overlap-bottom: 0px;--aia-grid-scroll-top: var(--aia-footer-band);--aia-grid-overlap-top: calc(-1 * (var(--aia-footer-band) + 8px));--aia-footer-fade-inset: 0 0 calc(-1 * var(--aia-footer-fade-lead));transform-origin:50% 100%;top:auto;bottom:100%;margin-top:0;margin-bottom:6px}[data-aia-dropdown][data-aia-has-products]{--aia-grid-scroll-bottom: 0px;--aia-grid-overlap-bottom: 0px;--aia-grid-scroll-top: 0px;--aia-grid-overlap-top: 0px;--aia-footer-fade-lead: 0px}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] .aia-stack,[data-aia-dropdown][data-options-position=above] .aia-stack{flex-direction:column-reverse}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer],[data-aia-dropdown][data-options-position=above] [data-aia-footer]{padding:0 0 var(--aia-footer-gap, 12px) 8px}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer]:before,[data-aia-dropdown][data-options-position=above] [data-aia-footer]:before{background:linear-gradient(to top,transparent,var(--aia-surface, #ffffff))}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] .magicx-aia-footer,[data-aia-dropdown][data-options-position=above] .magicx-aia-footer{flex-direction:column-reverse}@media (min-width: 769px){[data-aia-dropdown] [data-aia-footer]:before,[data-aia-dropdown][data-options-position=above] [data-aia-footer]:before,:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer]:before{inset:0;background:var(--aia-surface, #ffffff)}}\n", ".magicx-aia-dropdown{position:absolute;left:0;right:0;top:100%;max-width:544px;margin-top:6px;display:flex;flex-direction:column;box-sizing:border-box;padding:10px 8px 10px max(0px,calc(var(--aia-content-inset-left, 16px) - 10px));overflow:hidden;container-type:inline-size;z-index:10;opacity:0;pointer-events:none;transform-origin:50% 0;transform:scaleY(var(--aia-dropdown-reveal-scale, .02));transition:opacity .4s cubic-bezier(.4,0,.2,1),transform 0s .4s;background:var(--aia-surface, #ffffff);border:1px solid var(--aia-dropdown-border, rgba(231, 231, 231, .5));border-radius:9px;box-shadow:var(--aia-dropdown-shadow, none)}.magicx-aia-dropdown:has([data-aia-datepicker]){max-width:var(--aia-date-panel-width, 312px)}.magicx-aia-dropdown[data-aia-surface=glass]{background:transparent;border-color:transparent;box-shadow:#fff -3.2px -3.2px 3.2px -3.2px inset,#fff 6.4px 6.4px 1.6px -8px inset,var(--aia-dropdown-bg, transparent) -6.4px 6.4px 1.6px -8px inset,var(--aia-dropdown-bg, transparent) 6.4px -6.4px 1.6px -8px inset,#ffffff26 -1.6px 0 0 -1.6px inset,#ffffff26 0 -1.6px 0 -1.6px inset,#ffffff4d 0 1.6px inset,#ffffff4d 1.6px 0 inset,inset 0 0 30px 5px #0000000d;backdrop-filter:blur(30px)}.magicx-aia-dropdown-visible{opacity:1;pointer-events:auto;transform:scaleY(1);transition:opacity .1s cubic-bezier(.4,0,.2,1),transform .32s cubic-bezier(.22,1.28,.36,1)}.magicx-aia-scroll-arrow{position:absolute;left:50%;bottom:var(--aia-scroll-arrow-bottom, 8px);z-index:4;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin:0 0 0 -16px;padding:0;border:0;border-radius:0;background:transparent;color:var( --aia-scroll-arrow-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );box-shadow:none;cursor:pointer;pointer-events:none;opacity:0;transition:opacity 1s cubic-bezier(.4,0,.2,1);animation:magicx-aia-scroll-arrow-bob 2.6s ease-in-out infinite}@keyframes magicx-aia-scroll-arrow-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.magicx-aia-scroll-arrow[data-aia-visible]{pointer-events:auto;opacity:1}.magicx-aia-scroll-arrow:disabled{cursor:default}.magicx-aia-scroll-arrow svg{width:14px;height:14px;fill:none;stroke:currentColor}.magicx-aia-scroll-arrow svg path{fill:none;stroke:currentColor}.magicx-aia-scroll-arrow:hover{color:var( --aia-scroll-arrow-color-hover, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}@media (prefers-reduced-motion: reduce){.magicx-aia-scroll-arrow,.magicx-aia-dropdown{animation-duration:0s;animation-delay:0s;transition-duration:0s}}.magicx-aia-dropdown-pillbar{overflow:hidden}.magicx-aia-pill-scroll{display:inline-flex;align-items:center;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 48px),transparent 100%);-webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 48px),transparent 100%)}.magicx-aia-pill-scroll::-webkit-scrollbar{display:none}.magicx-aia-skip{display:inline-flex;align-items:center;margin-inline-start:auto;flex-shrink:0;padding:5px 8px;border:none;border-radius:6px;background:transparent;font-family:inherit;font-size:var(--aia-skip-font-size, 10px);line-height:18px;color:var(--aia-skip-color, var(--aia-footer-hint-color, #505050));cursor:pointer;white-space:nowrap;transition:color .15s ease-out,background-color .15s ease-out}.magicx-aia-skip:hover{color:var(--aia-skip-color-hover, var(--aia-pill-color, var(--aia-color-text-muted, #c1c4cb)));background:var(--aia-skip-hover-bg, var(--aia-option-bg, transparent))}.magicx-aia-skip:disabled{pointer-events:none;cursor:default;opacity:.5}.magicx-aia-footer{display:flex;flex-direction:column;gap:8px;padding:var(--aia-footer-gap, 12px) 0 0 8px;position:relative;z-index:3;pointer-events:none}.magicx-aia-footer-row{display:flex;align-items:center;justify-content:space-between}.magicx-aia-footer-hint-group{display:inline-flex;align-items:center;gap:5px}.magicx-aia-footer-hint-group,.magicx-aia-footer-brand-link{pointer-events:auto}.magicx-aia-footer-brand-link{display:inline-flex;align-items:center;gap:2px;text-decoration:none;cursor:pointer;transition:opacity .15s ease-out}.magicx-aia-footer-hint-group,.magicx-aia-footer-brand-link{background:var( --aia-footer-chip-bg, color-mix(in srgb, var(--aia-surface, #ffffff) 65%, transparent) );padding-inline:4px;border-radius:6px}.magicx-aia-footer-brand-link{background:var(--aia-footer-brand-pill-bg, var(--aia-surface, #ffffff));border-radius:999px;padding:2px 4px;gap:4px}.magicx-aia-footer-brand-link:hover{opacity:.7}.magicx-aia-footer-key{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:22px;padding:2px 6px;border:.5px solid var(--aia-footer-hint-color, #505050);border-radius:5px;font-family:inherit;font-size:11px;line-height:18px;color:var(--aia-footer-hint-color, #505050)}.magicx-aia-footer-hint{font-family:inherit;font-size:11px;line-height:18px;color:var(--aia-footer-hint-color, #505050)}.magicx-aia-footer-brand{font-family:inherit;font-size:10px;line-height:18px;color:var(--aia-footer-brand-color, #b0b0b0)}.magicx-aia-footer-badge{display:inline-flex;align-items:center;height:var(--aia-footer-row-height, 23px);padding:2.5px 5.5px;border:.5px solid var(--aia-footer-badge-border, rgba(189, 189, 189, .51));border-radius:999px;font-family:inherit;font-size:10px;line-height:18px;color:var(--aia-footer-brand-color, #b0b0b0)}@media (max-width: 768px){.magicx-aia-footer-hint-group{display:none}.magicx-aia-footer-row{justify-content:flex-end}}.magicx-aia-dropdown-skeleton-bars{display:flex;flex-direction:column;gap:20px;padding:7px 8px;animation:aiaSkeletonBarsIn .1s ease-out}[data-aia-skeleton-exiting] .magicx-aia-dropdown-skeleton-bars{animation:aiaSkeletonBarsOut .1s ease-in forwards}@keyframes aiaSkeletonBarsOut{to{opacity:0}}@keyframes aiaSkeletonBarsIn{0%{opacity:0}}.magicx-aia-dropdown-skeleton-bar{display:block;height:14px;border-radius:999px;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));opacity:.5;animation:aiaDropdownSkeletonPulse 1.4s ease-in-out infinite}.magicx-aia-dropdown-skeleton-bar:nth-child(2){animation-delay:.15s}.magicx-aia-dropdown-skeleton-bar:nth-child(3){animation-delay:.3s}@keyframes aiaDropdownSkeletonPulse{0%,to{opacity:.5}50%{opacity:.25}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: PillListComponent, selector: "aia-pill-list", inputs: ["pills", "activePillIndex", "rounded", "loading", "activeSelected"], outputs: ["selectPill"] }, { kind: "component", type: ProductStripComponent, selector: "aia-product-strip", inputs: ["products", "listboxId", "focusable", "layout"], outputs: ["select", "focusChange"] }, { kind: "component", type: SuggestionGridComponent, selector: "aia-suggestion-grid", inputs: ["options", "activeIndex", "listboxId", "loading", "groupKey", "optionsPosition", "showIcons", "showImages", "showCounts"], outputs: ["select", "highlight"] }, { kind: "component", type: DateGridComponent, selector: "aia-date-grid", inputs: ["options", "activeIndex", "listboxId", "view", "selection"], outputs: ["select", "highlight", "previousMonth", "nextMonth"] }, { kind: "component", type: StackComponent, selector: "aia-stack", inputs: ["space", "align"] }, { kind: "component", type: ClusterComponent, selector: "aia-cluster", inputs: ["gap", "align", "justify", "noWrap", "inline"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
330
331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AIAutocompleteDropdownComponent, decorators: [{
331
332
  type: Component,
332
333
  args: [{ selector: "ai-autocomplete-dropdown", standalone: true, imports: [
@@ -337,7 +338,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
337
338
  DateGridComponent,
338
339
  StackComponent,
339
340
  ClusterComponent,
340
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n *ngIf=\"vm$ | async as vm\"\n #dropdownRoot\n [id]=\"controller.listboxId\"\n role=\"listbox\"\n data-aia-dropdown=\"\"\n [attr.data-aia-loading]=\"vm.isLoading ? '' : null\"\n [attr.data-mode]=\"resolvedMode\"\n [attr.data-options-position]=\"vm.optionsPosition\"\n [attr.data-aia-has-products]=\"vm.products.length > 0 ? '' : null\"\n [class]=\"rootClass\"\n [class.magicx-aia-dropdown-visible]=\"vm.isVisible\"\n (mousedown)=\"preventBlur($event)\"\n>\n <aia-stack space=\"8px\">\n <aia-cluster\n *ngIf=\"vm.showsPills || vm.showsSkip\"\n class=\"magicx-aia-dropdown-pillbar\"\n data-aia-pillbar=\"\"\n [noWrap]=\"true\"\n >\n <!-- The scroll + right-edge fade live on this wrapper (not the bar) so\n the skip button stays outside the masked region \u2014 pinned and fully\n opaque while overflowing pills fade under it. Absent in a skip-only\n row (pills rendered elsewhere via pillPlacement inline/hidden). -->\n <span *ngIf=\"vm.showsPills\" class=\"magicx-aia-pill-scroll\" data-aia-pill-scroll=\"\">\n <aia-pill-list\n [pills]=\"vm.pills\"\n [activePillIndex]=\"0\"\n [activeSelected]=\"vm.isActivePillSelected\"\n [rounded]=\"true\"\n [loading]=\"vm.isLoading\"\n (selectPill)=\"onPillClick($event)\"\n ></aia-pill-list>\n </span>\n <button\n *ngIf=\"vm.showsSkip\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-skip\"\n data-aia-skip=\"\"\n [disabled]=\"vm.skipDisabled\"\n [attr.aria-label]=\"vm.activePillLabel ? 'Skip ' + vm.activePillLabel : 'Skip'\"\n (click)=\"onSkip()\"\n >\n skip\n </button>\n </aia-cluster>\n\n <aia-suggestion-grid\n *ngIf=\"vm.showsOptions\"\n [options]=\"vm.options\"\n [activeIndex]=\"vm.activeIndex\"\n [listboxId]=\"controller.listboxId\"\n [loading]=\"vm.isLoading\"\n [groupKey]=\"vm.groupKey\"\n [optionsPosition]=\"vm.optionsPosition\"\n [showIcons]=\"vm.showOptionIcons\"\n [showImages]=\"vm.showOptionImages\"\n [showCounts]=\"vm.showOptionCounts\"\n (select)=\"onSelect($event)\"\n (highlight)=\"onHighlight($event)\"\n ></aia-suggestion-grid>\n\n <aia-date-grid\n *ngIf=\"vm.showsDateGrid\"\n [options]=\"vm.options\"\n [activeIndex]=\"vm.activeIndex\"\n [listboxId]=\"controller.listboxId\"\n [view]=\"vm.dateView\"\n [selection]=\"vm.dateSelection\"\n (select)=\"onSelect($event)\"\n (highlight)=\"onHighlight($event)\"\n (previousMonth)=\"onPreviousMonth()\"\n (nextMonth)=\"onNextMonth()\"\n ></aia-date-grid>\n\n <div\n *ngIf=\"vm.showsFallbackSkeleton\"\n class=\"magicx-aia-dropdown-skeleton-bars\"\n data-aia-skeleton-bars=\"\"\n >\n <span\n *ngFor=\"let w of fallbackSkeletonBarWidths; trackBy: trackByWidth\"\n class=\"magicx-aia-dropdown-skeleton-bar\"\n [style.width.px]=\"w\"\n ></span>\n </div>\n\n <!-- *ngIf, not just the section's own guard inside the component: the host\n element is an in-flow child of .aia-stack (display:flex; gap:8px), so\n an always-instantiated zero-height host would add a SECOND 8px gap\n between the grid and the footer \u2014 in every dropdown, products or not.\n The grid's --aia-grid-overlap-bottom is tuned for exactly one gap, so\n the footer would land 8px below the band it is meant to cover. -->\n <aia-product-strip\n *ngIf=\"vm.products.length > 0\"\n [products]=\"vm.products\"\n [listboxId]=\"controller.listboxId\"\n [focusable]=\"vm.isVisible\"\n [layout]=\"productsLayout\"\n (select)=\"onProductSelect($event)\"\n (focusChange)=\"onProductFocusChange($event)\"\n ></aia-product-strip>\n\n <footer class=\"magicx-aia-footer\" data-aia-footer=\"\">\n <div class=\"magicx-aia-footer-row\">\n <span class=\"magicx-aia-footer-hint-group\">\n <kbd class=\"magicx-aia-footer-key\">{{ vm.footerKey }}</kbd>\n <span class=\"magicx-aia-footer-hint\">{{ vm.footerHint }}</span>\n </span>\n <a\n class=\"magicx-aia-footer-brand-link\"\n [href]=\"brandHref\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span class=\"magicx-aia-footer-brand\">AI</span>\n <span class=\"magicx-aia-footer-badge\">Autocomplete</span>\n </a>\n </div>\n </footer>\n </aia-stack>\n <!-- \"More below\" arrow \u2014 an overlay on the panel, not a section of the\n stack. Shown/positioned by the core's scroll-arrow controller (see\n syncScrollArrow); markup mirrors vanilla's createScrollArrowButton. -->\n <button\n #scrollArrow\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-scroll-arrow\"\n data-aia-scroll-arrow=\"\"\n [attr.aria-label]=\"scrollArrowLabel\"\n aria-hidden=\"true\"\n >\n <svg\n viewBox=\"0 0 16 16\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M4 6.5 8 10.5l4-4\" />\n </svg>\n </button>\n</div>\n", styles: [":where(.magicx-aia){box-sizing:border-box}:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html),:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html):before,:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html):after{all:revert;box-sizing:border-box}:where([data-aia-input-wrapper],[data-aia-dropdown]):not(html):not(html):not(html):not(html):not(html){line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-align:start;text-shadow:none;font-style:normal;font-variant:normal;white-space:normal;visibility:visible;cursor:auto}:where([data-aia-input-wrapper] svg,[data-aia-dropdown] svg):not(:where([data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html){display:revert;vertical-align:revert;position:revert;inset:revert;float:revert;margin:revert;padding:revert;border:revert;border-radius:revert;outline:revert;background:revert;box-shadow:revert;min-width:revert;max-width:revert;min-height:revert;max-height:revert;flex:revert;transition:revert;animation:revert;rotate:revert;scale:revert;translate:revert}:where([data-aia-input-wrapper] svg *,[data-aia-dropdown] svg *):not(:where([data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html){transition:revert;animation:revert}:where(.magicx-aia){--aia-primitive-neutral-0: #000000;--aia-primitive-neutral-150: #1a1b1d;--aia-primitive-neutral-250: #323232;--aia-primitive-neutral-300: #333539;--aia-primitive-neutral-400: #4a4a4a;--aia-primitive-neutral-500: #505050;--aia-primitive-neutral-700: #b0b0b0;--aia-primitive-neutral-750: #bdbdbd;--aia-primitive-neutral-900: #e7e7e7;--aia-primitive-neutral-1000: #ffffff;--aia-primitive-blue-50: #eef2ff;--aia-primitive-neutral-750-a50: rgba(189, 189, 189, .51);--aia-primitive-neutral-750-a25: rgba(189, 189, 189, .25);--aia-primitive-neutral-750-a35: rgba(189, 189, 189, .35);--aia-primitive-neutral-750-a30: rgba(189, 189, 189, .3);--aia-primitive-neutral-750-a15: rgba(189, 189, 189, .15);--aia-primitive-neutral-750-a105: rgba(189, 189, 189, .105);--aia-primitive-neutral-700-a40: rgba(176, 176, 176, .4);--aia-primitive-neutral-900-a50: rgba(231, 231, 231, .5);--aia-primitive-neutral-400-a50: rgba(74, 74, 74, .5)}:where(.magicx-aia),:where(.magicx-aia[data-mode=\"light\"]){--aia-surface: var(--aia-primitive-neutral-1000);--aia-border: var(--aia-primitive-neutral-700);--aia-shadow: none;--aia-dropdown-border: var(--aia-primitive-neutral-900-a50);--aia-dropdown-shadow: none;--aia-pill-bg: var(--aia-primitive-neutral-750);--aia-pill-color: var(--aia-primitive-neutral-300);--aia-pill-font-size: 16px;--aia-completed-pill-bg: var(--aia-primitive-neutral-750-a105);--aia-completed-pill-bg-active: var(--aia-primitive-neutral-750-a35);--aia-completed-pill-color: var(--aia-primitive-neutral-0);--aia-option-bg: var(--aia-primitive-blue-50);--aia-option-color: var(--aia-primitive-neutral-150);--aia-option-color-selected: var(--aia-primitive-neutral-0);--aia-option-font-size: 16px;--aia-written-text-color: var(--aia-primitive-neutral-0);--aia-written-text-font-size: 16px;--aia-caret-color: var(--aia-written-text-color, #000000);--aia-submit-bg: var(--aia-primitive-neutral-0);--aia-submit-color: var(--aia-primitive-neutral-1000);--aia-color-text-muted: #6b7280;--aia-skeleton-bg: var(--aia-primitive-neutral-750-a25);--aia-streak-rgb: 99, 102, 241;--aia-footer-hint-color: var(--aia-primitive-neutral-500);--aia-footer-brand-color: var(--aia-primitive-neutral-700);--aia-footer-badge-border: var(--aia-primitive-neutral-750-a50)}:where(.magicx-aia[data-mode=\"dark\"]){--aia-surface: var(--aia-primitive-neutral-0);--aia-border: var(--aia-primitive-neutral-500);--aia-shadow: none;--aia-dropdown-border: var(--aia-primitive-neutral-400-a50);--aia-dropdown-shadow: none;--aia-pill-bg: var(--aia-primitive-neutral-750);--aia-pill-color: var(--aia-primitive-neutral-700);--aia-pill-font-size: 16px;--aia-completed-pill-bg: var(--aia-primitive-neutral-750-a15);--aia-completed-pill-bg-active: var(--aia-primitive-neutral-750-a35);--aia-completed-pill-color: var(--aia-primitive-neutral-1000);--aia-option-bg: var(--aia-primitive-neutral-250);--aia-option-color: var(--aia-primitive-neutral-900);--aia-option-color-selected: var(--aia-primitive-neutral-1000);--aia-option-font-size: 16px;--aia-written-text-color: var(--aia-primitive-neutral-1000);--aia-written-text-font-size: 16px;--aia-caret-color: var(--aia-written-text-color, #ffffff);--aia-submit-bg: var(--aia-primitive-neutral-1000);--aia-submit-color: var(--aia-primitive-neutral-0);--aia-color-text-muted: #c1c4cb;--aia-skeleton-bg: var(--aia-primitive-neutral-150);--aia-streak-rgb: 255, 255, 255;--aia-footer-hint-color: var(--aia-primitive-neutral-700);--aia-footer-brand-color: var(--aia-primitive-neutral-500);--aia-footer-badge-border: var(--aia-primitive-neutral-500)}[data-aia-dropdown]{--aia-footer-row-height: 23px;--aia-footer-band: calc(var(--aia-footer-gap, 12px) + var(--aia-footer-row-height, 23px));--aia-grid-scroll-bottom: var(--aia-footer-band);--aia-grid-overlap-bottom: calc(-1 * (var(--aia-footer-band) + 8px));--aia-footer-fade-lead: 20px;--aia-footer-fade-inset: calc(-1 * var(--aia-footer-fade-lead)) 0 0}[data-aia-dropdown] [data-aia-pillbar] .aia-pill-list{padding-inline:10px}[data-aia-dropdown] [data-aia-pillbar] .aia-pill{justify-content:flex-start;border-inline-width:0;padding-inline:0}[data-aia-dropdown] .aia-grid[data-scroll]{padding-top:var(--aia-grid-scroll-top, 0);padding-bottom:var(--aia-grid-scroll-bottom, 0);margin-top:var(--aia-grid-overlap-top, 0);margin-bottom:var(--aia-grid-overlap-bottom, 0)}[data-aia-dropdown] [data-aia-footer]:before{content:\"\";position:absolute;inset:var(--aia-footer-fade-inset, -20px 0 0);z-index:-1;pointer-events:none;background:linear-gradient(to bottom,transparent,var(--aia-surface, #ffffff))}[data-aia-dropdown][data-aia-surface=glass]{--aia-footer-chip-bg: transparent}[data-aia-dropdown][data-aia-surface=glass] [data-aia-footer]:before{display:none}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown],[data-aia-dropdown][data-options-position=above]{--aia-grid-scroll-bottom: 0px;--aia-grid-overlap-bottom: 0px;--aia-grid-scroll-top: var(--aia-footer-band);--aia-grid-overlap-top: calc(-1 * (var(--aia-footer-band) + 8px));--aia-footer-fade-inset: 0 0 calc(-1 * var(--aia-footer-fade-lead));transform-origin:50% 100%;top:auto;bottom:100%;margin-top:0;margin-bottom:6px}[data-aia-dropdown][data-aia-has-products]{--aia-grid-scroll-bottom: 0px;--aia-grid-overlap-bottom: 0px;--aia-grid-scroll-top: 0px;--aia-grid-overlap-top: 0px;--aia-footer-fade-lead: 0px}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] .aia-stack,[data-aia-dropdown][data-options-position=above] .aia-stack{flex-direction:column-reverse}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer],[data-aia-dropdown][data-options-position=above] [data-aia-footer]{padding:0 0 var(--aia-footer-gap, 12px) 8px}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer]:before,[data-aia-dropdown][data-options-position=above] [data-aia-footer]:before{background:linear-gradient(to top,transparent,var(--aia-surface, #ffffff))}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] .magicx-aia-footer,[data-aia-dropdown][data-options-position=above] .magicx-aia-footer{flex-direction:column-reverse}@media (min-width: 769px){[data-aia-dropdown] [data-aia-footer]:before,[data-aia-dropdown][data-options-position=above] [data-aia-footer]:before,:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer]:before{inset:0;background:var(--aia-surface, #ffffff)}}\n", ".magicx-aia-dropdown{position:absolute;left:0;right:0;top:100%;max-width:544px;margin-top:6px;display:flex;flex-direction:column;box-sizing:border-box;padding:10px 8px 10px max(0px,calc(var(--aia-content-inset-left, 16px) - 10px));overflow:hidden;container-type:inline-size;z-index:10;opacity:0;pointer-events:none;transform-origin:50% 0;transform:scaleY(var(--aia-dropdown-reveal-scale, .02));transition:opacity .4s cubic-bezier(.4,0,.2,1),transform 0s .4s;background:var(--aia-surface, #ffffff);border:1px solid var(--aia-dropdown-border, rgba(231, 231, 231, .5));border-radius:9px;box-shadow:var(--aia-dropdown-shadow, none)}.magicx-aia-dropdown:has([data-aia-datepicker]){max-width:var(--aia-date-panel-width, 312px)}.magicx-aia-dropdown[data-aia-surface=glass]{background:transparent;border-color:transparent;box-shadow:#fff -3.2px -3.2px 3.2px -3.2px inset,#fff 6.4px 6.4px 1.6px -8px inset,var(--aia-dropdown-bg, transparent) -6.4px 6.4px 1.6px -8px inset,var(--aia-dropdown-bg, transparent) 6.4px -6.4px 1.6px -8px inset,#ffffff26 -1.6px 0 0 -1.6px inset,#ffffff26 0 -1.6px 0 -1.6px inset,#ffffff4d 0 1.6px inset,#ffffff4d 1.6px 0 inset,inset 0 0 30px 5px #0000000d;backdrop-filter:blur(30px)}.magicx-aia-dropdown-visible{opacity:1;pointer-events:auto;transform:scaleY(1);transition:opacity .1s cubic-bezier(.4,0,.2,1),transform .32s cubic-bezier(.22,1.28,.36,1)}.magicx-aia-scroll-arrow{position:absolute;left:50%;bottom:var(--aia-scroll-arrow-bottom, 8px);z-index:4;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin:0 0 0 -16px;padding:0;border:0;border-radius:0;background:transparent;color:var( --aia-scroll-arrow-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );box-shadow:none;cursor:pointer;pointer-events:none;opacity:0;transition:opacity 1s cubic-bezier(.4,0,.2,1);animation:magicx-aia-scroll-arrow-bob 2.6s ease-in-out infinite}@keyframes magicx-aia-scroll-arrow-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.magicx-aia-scroll-arrow[data-aia-visible]{pointer-events:auto;opacity:1}.magicx-aia-scroll-arrow:disabled{cursor:default}.magicx-aia-scroll-arrow svg{width:14px;height:14px;fill:none;stroke:currentColor}.magicx-aia-scroll-arrow svg path{fill:none;stroke:currentColor}.magicx-aia-scroll-arrow:hover{color:var( --aia-scroll-arrow-color-hover, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}@media (prefers-reduced-motion: reduce){.magicx-aia-scroll-arrow,.magicx-aia-dropdown{animation-duration:0s;animation-delay:0s;transition-duration:0s}}.magicx-aia-dropdown-pillbar{overflow:hidden}.magicx-aia-pill-scroll{display:inline-flex;align-items:center;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 48px),transparent 100%);-webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 48px),transparent 100%)}.magicx-aia-pill-scroll::-webkit-scrollbar{display:none}.magicx-aia-skip{display:inline-flex;align-items:center;margin-inline-start:auto;flex-shrink:0;padding:5px 8px;border:none;border-radius:6px;background:transparent;font-family:inherit;font-size:var(--aia-skip-font-size, 10px);line-height:18px;color:var(--aia-skip-color, var(--aia-footer-hint-color, #505050));cursor:pointer;white-space:nowrap;transition:color .15s ease-out,background-color .15s ease-out}.magicx-aia-skip:hover{color:var(--aia-skip-color-hover, var(--aia-pill-color, var(--aia-color-text-muted, #c1c4cb)));background:var(--aia-skip-hover-bg, var(--aia-option-bg, transparent))}.magicx-aia-skip:disabled{pointer-events:none;cursor:default;opacity:.5}.magicx-aia-footer{display:flex;flex-direction:column;gap:8px;padding:var(--aia-footer-gap, 12px) 0 0 8px;position:relative;z-index:3;pointer-events:none}.magicx-aia-footer-row{display:flex;align-items:center;justify-content:space-between}.magicx-aia-footer-hint-group{display:inline-flex;align-items:center;gap:5px}.magicx-aia-footer-hint-group,.magicx-aia-footer-brand-link{pointer-events:auto}.magicx-aia-footer-brand-link{display:inline-flex;align-items:center;gap:2px;text-decoration:none;cursor:pointer;transition:opacity .15s ease-out}.magicx-aia-footer-hint-group,.magicx-aia-footer-brand-link{background:var( --aia-footer-chip-bg, color-mix(in srgb, var(--aia-surface, #ffffff) 65%, transparent) );padding-inline:4px;border-radius:6px}.magicx-aia-footer-brand-link{background:var(--aia-footer-brand-pill-bg, var(--aia-surface, #ffffff));border-radius:999px;padding:2px 4px;gap:4px}.magicx-aia-footer-brand-link:hover{opacity:.7}.magicx-aia-footer-key{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:22px;padding:2px 6px;border:.5px solid var(--aia-footer-hint-color, #505050);border-radius:5px;font-family:inherit;font-size:11px;line-height:18px;color:var(--aia-footer-hint-color, #505050)}.magicx-aia-footer-hint{font-family:inherit;font-size:11px;line-height:18px;color:var(--aia-footer-hint-color, #505050)}.magicx-aia-footer-brand{font-family:inherit;font-size:10px;line-height:18px;color:var(--aia-footer-brand-color, #b0b0b0)}.magicx-aia-footer-badge{display:inline-flex;align-items:center;height:var(--aia-footer-row-height, 23px);padding:2.5px 5.5px;border:.5px solid var(--aia-footer-badge-border, rgba(189, 189, 189, .51));border-radius:999px;font-family:inherit;font-size:10px;line-height:18px;color:var(--aia-footer-brand-color, #b0b0b0)}@media (max-width: 768px){.magicx-aia-footer-hint-group{display:none}.magicx-aia-footer-row{justify-content:flex-end}}.magicx-aia-dropdown-skeleton-bars{display:flex;flex-direction:column;gap:20px;padding:7px 8px}.magicx-aia-dropdown-skeleton-bar{display:block;height:14px;border-radius:999px;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));opacity:.5;animation:aiaDropdownSkeletonPulse 1.4s ease-in-out infinite}.magicx-aia-dropdown-skeleton-bar:nth-child(2){animation-delay:.15s}.magicx-aia-dropdown-skeleton-bar:nth-child(3){animation-delay:.3s}@keyframes aiaDropdownSkeletonPulse{0%,to{opacity:.5}50%{opacity:.25}}\n"] }]
341
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n *ngIf=\"vm$ | async as vm\"\n #dropdownRoot\n [id]=\"controller.listboxId\"\n role=\"listbox\"\n data-aia-dropdown=\"\"\n [attr.data-aia-loading]=\"vm.isLoading ? '' : null\"\n [attr.data-aia-skeleton-exiting]=\"vm.skeletonExiting ? '' : null\"\n [attr.data-mode]=\"resolvedMode\"\n [attr.data-options-position]=\"vm.optionsPosition\"\n [attr.data-aia-has-products]=\"vm.products.length > 0 ? '' : null\"\n [class]=\"rootClass\"\n [class.magicx-aia-dropdown-visible]=\"vm.isVisible\"\n (mousedown)=\"preventBlur($event)\"\n>\n <aia-stack space=\"8px\">\n <aia-cluster\n *ngIf=\"vm.showsPills || vm.showsSkip\"\n class=\"magicx-aia-dropdown-pillbar\"\n data-aia-pillbar=\"\"\n [noWrap]=\"true\"\n >\n <!-- The scroll + right-edge fade live on this wrapper (not the bar) so\n the skip button stays outside the masked region \u2014 pinned and fully\n opaque while overflowing pills fade under it. Absent in a skip-only\n row (pills rendered elsewhere via pillPlacement inline/hidden). -->\n <span *ngIf=\"vm.showsPills\" class=\"magicx-aia-pill-scroll\" data-aia-pill-scroll=\"\">\n <aia-pill-list\n [pills]=\"vm.pills\"\n [activePillIndex]=\"0\"\n [activeSelected]=\"vm.isActivePillSelected\"\n [rounded]=\"true\"\n [loading]=\"vm.isLoading\"\n (selectPill)=\"onPillClick($event)\"\n ></aia-pill-list>\n </span>\n <button\n *ngIf=\"vm.showsSkip\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-skip\"\n data-aia-skip=\"\"\n [disabled]=\"vm.skipDisabled\"\n [attr.aria-label]=\"vm.activePillLabel ? 'Skip ' + vm.activePillLabel : 'Skip'\"\n (click)=\"onSkip()\"\n >\n skip\n </button>\n </aia-cluster>\n\n <aia-suggestion-grid\n *ngIf=\"vm.showsOptions\"\n [options]=\"vm.options\"\n [activeIndex]=\"vm.activeIndex\"\n [listboxId]=\"controller.listboxId\"\n [loading]=\"vm.isLoading\"\n [groupKey]=\"vm.groupKey\"\n [optionsPosition]=\"vm.optionsPosition\"\n [showIcons]=\"vm.showOptionIcons\"\n [showImages]=\"vm.showOptionImages\"\n [showCounts]=\"vm.showOptionCounts\"\n (select)=\"onSelect($event)\"\n (highlight)=\"onHighlight($event)\"\n ></aia-suggestion-grid>\n\n <aia-date-grid\n *ngIf=\"vm.showsDateGrid\"\n [options]=\"vm.options\"\n [activeIndex]=\"vm.activeIndex\"\n [listboxId]=\"controller.listboxId\"\n [view]=\"vm.dateView\"\n [selection]=\"vm.dateSelection\"\n (select)=\"onSelect($event)\"\n (highlight)=\"onHighlight($event)\"\n (previousMonth)=\"onPreviousMonth()\"\n (nextMonth)=\"onNextMonth()\"\n ></aia-date-grid>\n\n <div\n *ngIf=\"vm.showsFallbackSkeleton\"\n class=\"magicx-aia-dropdown-skeleton-bars\"\n data-aia-skeleton-bars=\"\"\n >\n <span\n *ngFor=\"let w of fallbackSkeletonBarWidths; trackBy: trackByWidth\"\n class=\"magicx-aia-dropdown-skeleton-bar\"\n [style.width.px]=\"w\"\n ></span>\n </div>\n\n <!-- *ngIf, not just the section's own guard inside the component: the host\n element is an in-flow child of .aia-stack (display:flex; gap:8px), so\n an always-instantiated zero-height host would add a SECOND 8px gap\n between the grid and the footer \u2014 in every dropdown, products or not.\n The grid's --aia-grid-overlap-bottom is tuned for exactly one gap, so\n the footer would land 8px below the band it is meant to cover. -->\n <aia-product-strip\n *ngIf=\"vm.products.length > 0\"\n [products]=\"vm.products\"\n [listboxId]=\"controller.listboxId\"\n [focusable]=\"vm.isVisible\"\n [layout]=\"productsLayout\"\n (select)=\"onProductSelect($event)\"\n (focusChange)=\"onProductFocusChange($event)\"\n ></aia-product-strip>\n\n <footer class=\"magicx-aia-footer\" data-aia-footer=\"\">\n <div class=\"magicx-aia-footer-row\">\n <span class=\"magicx-aia-footer-hint-group\">\n <kbd class=\"magicx-aia-footer-key\">{{ vm.footerKey }}</kbd>\n <span class=\"magicx-aia-footer-hint\">{{ vm.footerHint }}</span>\n </span>\n <a\n class=\"magicx-aia-footer-brand-link\"\n [href]=\"brandHref\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span class=\"magicx-aia-footer-brand\">AI</span>\n <span class=\"magicx-aia-footer-badge\">Autocomplete</span>\n </a>\n </div>\n </footer>\n </aia-stack>\n <!-- \"More below\" arrow \u2014 an overlay on the panel, not a section of the\n stack. Shown/positioned by the core's scroll-arrow controller (see\n syncScrollArrow); markup mirrors vanilla's createScrollArrowButton. -->\n <button\n #scrollArrow\n type=\"button\"\n tabindex=\"-1\"\n class=\"magicx-aia-scroll-arrow\"\n data-aia-scroll-arrow=\"\"\n [attr.aria-label]=\"scrollArrowLabel\"\n aria-hidden=\"true\"\n >\n <svg\n viewBox=\"0 0 16 16\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M4 6.5 8 10.5l4-4\" />\n </svg>\n </button>\n</div>\n", styles: [":where(.magicx-aia){box-sizing:border-box}:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html),:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html):before,:where([data-aia-input-wrapper],[data-aia-input-wrapper] *,[data-aia-dropdown],[data-aia-dropdown] *):not(:where(svg,svg *,[data-aia-submit-slot],[data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html):after{all:revert;box-sizing:border-box}:where([data-aia-input-wrapper],[data-aia-dropdown]):not(html):not(html):not(html):not(html):not(html){line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-align:start;text-shadow:none;font-style:normal;font-variant:normal;white-space:normal;visibility:visible;cursor:auto}:where([data-aia-input-wrapper] svg,[data-aia-dropdown] svg):not(:where([data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html){display:revert;vertical-align:revert;position:revert;inset:revert;float:revert;margin:revert;padding:revert;border:revert;border-radius:revert;outline:revert;background:revert;box-shadow:revert;min-width:revert;max-width:revert;min-height:revert;max-height:revert;flex:revert;transition:revert;animation:revert;rotate:revert;scale:revert;translate:revert}:where([data-aia-input-wrapper] svg *,[data-aia-dropdown] svg *):not(:where([data-aia-submit-slot] *)):not(html):not(html):not(html):not(html):not(html){transition:revert;animation:revert}:where(.magicx-aia){--aia-primitive-neutral-0: #000000;--aia-primitive-neutral-150: #1a1b1d;--aia-primitive-neutral-250: #323232;--aia-primitive-neutral-300: #333539;--aia-primitive-neutral-400: #4a4a4a;--aia-primitive-neutral-500: #505050;--aia-primitive-neutral-700: #b0b0b0;--aia-primitive-neutral-750: #bdbdbd;--aia-primitive-neutral-900: #e7e7e7;--aia-primitive-neutral-1000: #ffffff;--aia-primitive-blue-50: #eef2ff;--aia-primitive-neutral-750-a50: rgba(189, 189, 189, .51);--aia-primitive-neutral-750-a25: rgba(189, 189, 189, .25);--aia-primitive-neutral-750-a8: rgba(189, 189, 189, .083);--aia-primitive-neutral-750-a35: rgba(189, 189, 189, .35);--aia-primitive-neutral-750-a30: rgba(189, 189, 189, .3);--aia-primitive-neutral-750-a15: rgba(189, 189, 189, .15);--aia-primitive-neutral-750-a105: rgba(189, 189, 189, .105);--aia-primitive-neutral-700-a40: rgba(176, 176, 176, .4);--aia-primitive-neutral-900-a50: rgba(231, 231, 231, .5);--aia-primitive-neutral-400-a50: rgba(74, 74, 74, .5)}:where(.magicx-aia),:where(.magicx-aia[data-mode=\"light\"]){--aia-surface: var(--aia-primitive-neutral-1000);--aia-border: var(--aia-primitive-neutral-700);--aia-shadow: none;--aia-dropdown-border: var(--aia-primitive-neutral-900-a50);--aia-dropdown-shadow: none;--aia-pill-bg: var(--aia-primitive-neutral-750);--aia-pill-color: var(--aia-primitive-neutral-300);--aia-pill-font-size: 16px;--aia-completed-pill-bg: var(--aia-primitive-neutral-750-a105);--aia-completed-pill-bg-active: var(--aia-primitive-neutral-750-a35);--aia-completed-pill-color: var(--aia-primitive-neutral-0);--aia-option-bg: var(--aia-primitive-blue-50);--aia-option-color: var(--aia-primitive-neutral-150);--aia-option-color-selected: var(--aia-primitive-neutral-0);--aia-option-font-size: 16px;--aia-written-text-color: var(--aia-primitive-neutral-0);--aia-written-text-font-size: 16px;--aia-caret-color: var(--aia-written-text-color, #000000);--aia-submit-bg: var(--aia-primitive-neutral-0);--aia-submit-color: var(--aia-primitive-neutral-1000);--aia-color-text-muted: #6b7280;--aia-skeleton-bg: var(--aia-primitive-neutral-750-a8);--aia-streak-rgb: 99, 102, 241;--aia-footer-hint-color: var(--aia-primitive-neutral-500);--aia-footer-brand-color: var(--aia-primitive-neutral-700);--aia-footer-badge-border: var(--aia-primitive-neutral-750-a50)}:where(.magicx-aia[data-mode=\"dark\"]){--aia-surface: var(--aia-primitive-neutral-0);--aia-border: var(--aia-primitive-neutral-500);--aia-shadow: none;--aia-dropdown-border: var(--aia-primitive-neutral-400-a50);--aia-dropdown-shadow: none;--aia-pill-bg: var(--aia-primitive-neutral-750);--aia-pill-color: var(--aia-primitive-neutral-700);--aia-pill-font-size: 16px;--aia-completed-pill-bg: var(--aia-primitive-neutral-750-a15);--aia-completed-pill-bg-active: var(--aia-primitive-neutral-750-a35);--aia-completed-pill-color: var(--aia-primitive-neutral-1000);--aia-option-bg: var(--aia-primitive-neutral-250);--aia-option-color: var(--aia-primitive-neutral-900);--aia-option-color-selected: var(--aia-primitive-neutral-1000);--aia-option-font-size: 16px;--aia-written-text-color: var(--aia-primitive-neutral-1000);--aia-written-text-font-size: 16px;--aia-caret-color: var(--aia-written-text-color, #ffffff);--aia-submit-bg: var(--aia-primitive-neutral-1000);--aia-submit-color: var(--aia-primitive-neutral-0);--aia-color-text-muted: #c1c4cb;--aia-skeleton-bg: var(--aia-primitive-neutral-150);--aia-streak-rgb: 255, 255, 255;--aia-footer-hint-color: var(--aia-primitive-neutral-700);--aia-footer-brand-color: var(--aia-primitive-neutral-500);--aia-footer-badge-border: var(--aia-primitive-neutral-500)}[data-aia-dropdown]{--aia-footer-row-height: 23px;--aia-footer-band: calc(var(--aia-footer-gap, 12px) + var(--aia-footer-row-height, 23px));--aia-grid-scroll-bottom: var(--aia-footer-band);--aia-grid-overlap-bottom: calc(-1 * (var(--aia-footer-band) + 8px));--aia-footer-fade-lead: 20px;--aia-footer-fade-inset: calc(-1 * var(--aia-footer-fade-lead)) 0 0}[data-aia-dropdown] [data-aia-pillbar] .aia-pill-list{padding-inline:10px}[data-aia-dropdown] [data-aia-pillbar] .aia-pill{justify-content:flex-start;border-inline-width:0;padding-inline:0}[data-aia-dropdown] .aia-grid[data-scroll]{padding-top:var(--aia-grid-scroll-top, 0);padding-bottom:var(--aia-grid-scroll-bottom, 0);margin-top:var(--aia-grid-overlap-top, 0);margin-bottom:var(--aia-grid-overlap-bottom, 0)}[data-aia-dropdown] [data-aia-footer]:before{content:\"\";position:absolute;inset:var(--aia-footer-fade-inset, -20px 0 0);z-index:-1;pointer-events:none;background:linear-gradient(to bottom,transparent,var(--aia-surface, #ffffff))}[data-aia-dropdown][data-aia-surface=glass]{--aia-footer-chip-bg: transparent}[data-aia-dropdown][data-aia-surface=glass] [data-aia-footer]:before{display:none}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown],[data-aia-dropdown][data-options-position=above]{--aia-grid-scroll-bottom: 0px;--aia-grid-overlap-bottom: 0px;--aia-grid-scroll-top: var(--aia-footer-band);--aia-grid-overlap-top: calc(-1 * (var(--aia-footer-band) + 8px));--aia-footer-fade-inset: 0 0 calc(-1 * var(--aia-footer-fade-lead));transform-origin:50% 100%;top:auto;bottom:100%;margin-top:0;margin-bottom:6px}[data-aia-dropdown][data-aia-has-products]{--aia-grid-scroll-bottom: 0px;--aia-grid-overlap-bottom: 0px;--aia-grid-scroll-top: 0px;--aia-grid-overlap-top: 0px;--aia-footer-fade-lead: 0px}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] .aia-stack,[data-aia-dropdown][data-options-position=above] .aia-stack{flex-direction:column-reverse}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer],[data-aia-dropdown][data-options-position=above] [data-aia-footer]{padding:0 0 var(--aia-footer-gap, 12px) 8px}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer]:before,[data-aia-dropdown][data-options-position=above] [data-aia-footer]:before{background:linear-gradient(to top,transparent,var(--aia-surface, #ffffff))}:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] .magicx-aia-footer,[data-aia-dropdown][data-options-position=above] .magicx-aia-footer{flex-direction:column-reverse}@media (min-width: 769px){[data-aia-dropdown] [data-aia-footer]:before,[data-aia-dropdown][data-options-position=above] [data-aia-footer]:before,:where(.magicx-aia[data-options-position=\"above\"]) [data-aia-dropdown] [data-aia-footer]:before{inset:0;background:var(--aia-surface, #ffffff)}}\n", ".magicx-aia-dropdown{position:absolute;left:0;right:0;top:100%;max-width:544px;margin-top:6px;display:flex;flex-direction:column;box-sizing:border-box;padding:10px 8px 10px max(0px,calc(var(--aia-content-inset-left, 16px) - 10px));overflow:hidden;container-type:inline-size;z-index:10;opacity:0;pointer-events:none;transform-origin:50% 0;transform:scaleY(var(--aia-dropdown-reveal-scale, .02));transition:opacity .4s cubic-bezier(.4,0,.2,1),transform 0s .4s;background:var(--aia-surface, #ffffff);border:1px solid var(--aia-dropdown-border, rgba(231, 231, 231, .5));border-radius:9px;box-shadow:var(--aia-dropdown-shadow, none)}.magicx-aia-dropdown:has([data-aia-datepicker]){max-width:var(--aia-date-panel-width, 312px)}.magicx-aia-dropdown[data-aia-surface=glass]{background:transparent;border-color:transparent;box-shadow:#fff -3.2px -3.2px 3.2px -3.2px inset,#fff 6.4px 6.4px 1.6px -8px inset,var(--aia-dropdown-bg, transparent) -6.4px 6.4px 1.6px -8px inset,var(--aia-dropdown-bg, transparent) 6.4px -6.4px 1.6px -8px inset,#ffffff26 -1.6px 0 0 -1.6px inset,#ffffff26 0 -1.6px 0 -1.6px inset,#ffffff4d 0 1.6px inset,#ffffff4d 1.6px 0 inset,inset 0 0 30px 5px #0000000d;backdrop-filter:blur(30px)}.magicx-aia-dropdown-visible{opacity:1;pointer-events:auto;transform:scaleY(1);transition:opacity .1s cubic-bezier(.4,0,.2,1),transform .32s cubic-bezier(.22,1.28,.36,1)}.magicx-aia-scroll-arrow{position:absolute;left:50%;bottom:var(--aia-scroll-arrow-bottom, 8px);z-index:4;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin:0 0 0 -16px;padding:0;border:0;border-radius:0;background:transparent;color:var( --aia-scroll-arrow-color, var(--aia-option-color, var(--aia-color-text-muted, #c1c4cb)) );box-shadow:none;cursor:pointer;pointer-events:none;opacity:0;transition:opacity 1s cubic-bezier(.4,0,.2,1);animation:magicx-aia-scroll-arrow-bob 2.6s ease-in-out infinite}@keyframes magicx-aia-scroll-arrow-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.magicx-aia-scroll-arrow[data-aia-visible]{pointer-events:auto;opacity:1}.magicx-aia-scroll-arrow:disabled{cursor:default}.magicx-aia-scroll-arrow svg{width:14px;height:14px;fill:none;stroke:currentColor}.magicx-aia-scroll-arrow svg path{fill:none;stroke:currentColor}.magicx-aia-scroll-arrow:hover{color:var( --aia-scroll-arrow-color-hover, var(--aia-option-color-selected, var(--aia-color-text-default, #fff)) )}@media (prefers-reduced-motion: reduce){.magicx-aia-scroll-arrow,.magicx-aia-dropdown{animation-duration:0s;animation-delay:0s;transition-duration:0s}}.magicx-aia-dropdown-pillbar{overflow:hidden}.magicx-aia-pill-scroll{display:inline-flex;align-items:center;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 48px),transparent 100%);-webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 48px),transparent 100%)}.magicx-aia-pill-scroll::-webkit-scrollbar{display:none}.magicx-aia-skip{display:inline-flex;align-items:center;margin-inline-start:auto;flex-shrink:0;padding:5px 8px;border:none;border-radius:6px;background:transparent;font-family:inherit;font-size:var(--aia-skip-font-size, 10px);line-height:18px;color:var(--aia-skip-color, var(--aia-footer-hint-color, #505050));cursor:pointer;white-space:nowrap;transition:color .15s ease-out,background-color .15s ease-out}.magicx-aia-skip:hover{color:var(--aia-skip-color-hover, var(--aia-pill-color, var(--aia-color-text-muted, #c1c4cb)));background:var(--aia-skip-hover-bg, var(--aia-option-bg, transparent))}.magicx-aia-skip:disabled{pointer-events:none;cursor:default;opacity:.5}.magicx-aia-footer{display:flex;flex-direction:column;gap:8px;padding:var(--aia-footer-gap, 12px) 0 0 8px;position:relative;z-index:3;pointer-events:none}.magicx-aia-footer-row{display:flex;align-items:center;justify-content:space-between}.magicx-aia-footer-hint-group{display:inline-flex;align-items:center;gap:5px}.magicx-aia-footer-hint-group,.magicx-aia-footer-brand-link{pointer-events:auto}.magicx-aia-footer-brand-link{display:inline-flex;align-items:center;gap:2px;text-decoration:none;cursor:pointer;transition:opacity .15s ease-out}.magicx-aia-footer-hint-group,.magicx-aia-footer-brand-link{background:var( --aia-footer-chip-bg, color-mix(in srgb, var(--aia-surface, #ffffff) 65%, transparent) );padding-inline:4px;border-radius:6px}.magicx-aia-footer-brand-link{background:var(--aia-footer-brand-pill-bg, var(--aia-surface, #ffffff));border-radius:999px;padding:2px 4px;gap:4px}.magicx-aia-footer-brand-link:hover{opacity:.7}.magicx-aia-footer-key{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:22px;padding:2px 6px;border:.5px solid var(--aia-footer-hint-color, #505050);border-radius:5px;font-family:inherit;font-size:11px;line-height:18px;color:var(--aia-footer-hint-color, #505050)}.magicx-aia-footer-hint{font-family:inherit;font-size:11px;line-height:18px;color:var(--aia-footer-hint-color, #505050)}.magicx-aia-footer-brand{font-family:inherit;font-size:10px;line-height:18px;color:var(--aia-footer-brand-color, #b0b0b0)}.magicx-aia-footer-badge{display:inline-flex;align-items:center;height:var(--aia-footer-row-height, 23px);padding:2.5px 5.5px;border:.5px solid var(--aia-footer-badge-border, rgba(189, 189, 189, .51));border-radius:999px;font-family:inherit;font-size:10px;line-height:18px;color:var(--aia-footer-brand-color, #b0b0b0)}@media (max-width: 768px){.magicx-aia-footer-hint-group{display:none}.magicx-aia-footer-row{justify-content:flex-end}}.magicx-aia-dropdown-skeleton-bars{display:flex;flex-direction:column;gap:20px;padding:7px 8px;animation:aiaSkeletonBarsIn .1s ease-out}[data-aia-skeleton-exiting] .magicx-aia-dropdown-skeleton-bars{animation:aiaSkeletonBarsOut .1s ease-in forwards}@keyframes aiaSkeletonBarsOut{to{opacity:0}}@keyframes aiaSkeletonBarsIn{0%{opacity:0}}.magicx-aia-dropdown-skeleton-bar{display:block;height:14px;border-radius:999px;background:var(--aia-skeleton-bg, var(--aia-pill-bg, rgba(189, 189, 189, .25)));opacity:.5;animation:aiaDropdownSkeletonPulse 1.4s ease-in-out infinite}.magicx-aia-dropdown-skeleton-bar:nth-child(2){animation-delay:.15s}.magicx-aia-dropdown-skeleton-bar:nth-child(3){animation-delay:.3s}@keyframes aiaDropdownSkeletonPulse{0%,to{opacity:.5}50%{opacity:.25}}\n"] }]
341
342
  }], propDecorators: { controller: [{
342
343
  type: Input
343
344
  }], showPills: [{
@@ -363,4 +364,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
363
364
  type: ViewChild,
364
365
  args: ["scrollArrow", { static: false }]
365
366
  }] } });
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktYXV0b2NvbXBsZXRlLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYWktYXV0b2NvbXBsZXRlLWRyb3Bkb3duL2FpLWF1dG9jb21wbGV0ZS1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL2FpLWF1dG9jb21wbGV0ZS1kcm9wZG93bi9haS1hdXRvY29tcGxldGUtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUtOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixtQkFBbUIsRUFHbkIsYUFBYSxFQUNiLGdCQUFnQixFQUdoQixrQkFBa0IsR0FJbkIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBbUIsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7O0FBNkNo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cUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxnQkFBZ0I7cUJBQ2pCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQVc1QixVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBU0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFLRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLElBQUk7c0JBQVosS0FBSztnQkF3QmdELGVBQWU7c0JBQXBFLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFcEMsY0FBYztzQkFEckIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgdHlwZSBBZnRlclZpZXdDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgdHlwZSBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgaW5qZWN0LFxuICB0eXBlIE9uQ2hhbmdlcyxcbiAgdHlwZSBPbkRlc3Ryb3ksXG4gIHR5cGUgT25Jbml0LFxuICB0eXBlIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICB0eXBlIEFwcGVhcmFuY2VNb2RlLFxuICBhdHRhY2hTY3JvbGxBcnJvdyxcbiAgYnVpbGRBdHRyaWJ1dGlvblVybCxcbiAgdHlwZSBEYXRlTW9udGhWaWV3LFxuICB0eXBlIERhdGVTZWxlY3Rpb24sXG4gIGdldEZvb3RlckhpbnQsXG4gIGlzQ2FsZW5kYXJGb3JtYXQsXG4gIHR5cGUgUHJvZHVjdCxcbiAgdHlwZSBQcm9kdWN0c0xheW91dCxcbiAgU0NST0xMX0FSUk9XX0xBQkVMLFxuICB0eXBlIFNjcm9sbEFycm93Q29udHJvbGxlcixcbiAgdHlwZSBTdWdnZXN0aW9uLFxuICB0eXBlIFN1Z2dlc3Rpb25PcHRpb24sXG59IGZyb20gXCJAbWFnaWN4LWVuZy9haS1hdXRvY29tcGxldGUtdmFuaWxsYVwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCB0eXBlIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgdHlwZSB7IEFJQXV0b2NvbXBsZXRlQ29udHJvbGxlciB9IGZyb20gXCIuLi9jb250cm9sbGVyL2FpLWF1dG9jb21wbGV0ZS5jb250cm9sbGVyXCI7XG5pbXBvcnQgeyBEYXRlR3JpZENvbXBvbmVudCB9IGZyb20gXCIuLi9pbnRlcm5hbC9kYXRlLWdyaWQvZGF0ZS1ncmlkLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ2x1c3RlckNvbXBvbmVudCB9IGZyb20gXCIuLi9pbnRlcm5hbC9sYXlvdXQvY2x1c3Rlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IFN0YWNrQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ludGVybmFsL2xheW91dC9zdGFjay5jb21wb25lbnRcIjtcbmltcG9ydCB7IFBpbGxMaXN0Q29tcG9uZW50IH0gZnJvbSBcIi4uL2ludGVybmFsL3BpbGwtbGlzdC9waWxsLWxpc3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBQcm9kdWN0U3RyaXBDb21wb25lbnQgfSBmcm9tIFwiLi4vaW50ZXJuYWwvcHJvZHVjdC1zdHJpcC9wcm9kdWN0LXN0cmlwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU3VnZ2VzdGlvbkdyaWRDb21wb25lbnQgfSBmcm9tIFwiLi4vaW50ZXJuYWwvc3VnZ2VzdGlvbi1ncmlkL3N1Z2dlc3Rpb24tZ3JpZC5jb21wb25lbnRcIjtcblxuaW50ZXJmYWNlIERyb3Bkb3duVm0ge1xuICBwaWxsczogU3VnZ2VzdGlvbltdO1xuICBvcHRpb25zOiBTdWdnZXN0aW9uT3B0aW9uW107XG4gIGFjdGl2ZUluZGV4OiBudW1iZXI7XG4gIGlzQWN0aXZlUGlsbFNlbGVjdGVkOiBib29sZWFuO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIHNob3dzUGlsbHM6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBwaWxsYmFyIGVuZHMgaW4gdGhlIHRyYWlsaW5nIFwic2tpcFwiIGJ1dHRvbi4gKi9cbiAgc2hvd3NTa2lwOiBib29sZWFuO1xuICAvKipcbiAgICogRGlzYWJsZWQgc3RhdGUgZm9yIHRoZSBza2lwIGJ1dHRvbjogbG9hZGluZywgb3IgdGhlIHBvc3Qtc2VsZWN0aW9uIHdpbmRvd1xuICAgKiB3aGVyZSBpc0xvYWRpbmcgaXMgc3VwcHJlc3NlZCBidXQgdGhlIGNvcmUncyBza2lwQWN0aXZlUGlsbCgpIG5vLW9wcy5cbiAgICovXG4gIHNraXBEaXNhYmxlZDogYm9vbGVhbjtcbiAgLyoqIEFjdGl2ZSBwaWxsJ3MgbGFiZWwsIGZvciB0aGUgc2tpcCBidXR0b24ncyBhcmlhLWxhYmVsLiAqL1xuICBhY3RpdmVQaWxsTGFiZWw6IHN0cmluZztcbiAgc2hvd3NPcHRpb25zOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgY2FsZW5kYXIgYm9keSByZW5kZXJzIGluIHBsYWNlIG9mIHRoZSBvcHRpb25zIGdyaWQuICovXG4gIHNob3dzRGF0ZUdyaWQ6IGJvb2xlYW47XG4gIC8qKiBUaGUgbW9udGggdGhlIGNhbGVuZGFyIHNob3dzLiBOdWxsIHVubGVzcyBgc2hvd3NEYXRlR3JpZGAuICovXG4gIGRhdGVWaWV3OiBEYXRlTW9udGhWaWV3IHwgbnVsbDtcbiAgLyoqIFdoYXQgdGhlIGNhbGVuZGFyIHBhaW50cyBhcyBhbnN3ZXJlZCDigJQgc2VlIHRoZSBjb3JlJ3MgYGRhdGVTZWxlY3Rpb25Gb3JgLiAqL1xuICBkYXRlU2VsZWN0aW9uOiBEYXRlU2VsZWN0aW9uO1xuICBzaG93c0ZhbGxiYWNrU2tlbGV0b246IGJvb2xlYW47XG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcbiAgLyoqIFByb2R1Y3QgY2FyZHMgZm9yIHRoZSBzdHJpcC4gRW1wdHkgdW5sZXNzIGBwcm9kdWN0c2AgaXMgY29uZmlndXJlZC4gKi9cbiAgcHJvZHVjdHM6IFByb2R1Y3RbXTtcbiAgLyoqIElkZW50aXR5IG9mIHRoZSBzdWdnZXN0aW9uIHRoZSBvcHRpb25zIGJlbG9uZyB0byDigJQgZHJpdmVzIHRoZSBncmlkJ3Mgc2Nyb2xsIHJlc2V0LiAqL1xuICBncm91cEtleTogc3RyaW5nO1xuICBmb290ZXJLZXk6IHN0cmluZztcbiAgZm9vdGVySGludDogc3RyaW5nO1xuICBvcHRpb25zUG9zaXRpb246IFwiYWJvdmVcIiB8IFwiYmVsb3dcIjtcbiAgLyoqIFdoZXRoZXIgb3B0aW9uIHJvd3MgZHJhdyB0aGVpciBgaWNvbl9zdmdgIGJlZm9yZSB0aGUgdGV4dC4gKi9cbiAgc2hvd09wdGlvbkljb25zOiBib29sZWFuO1xuICAvKiogV2hldGhlciBvcHRpb24gcm93cyBkcmF3IHRoZWlyIGBpbWFnZV91cmxgIGFzIGEgdGh1bWJuYWlsIGJlZm9yZSB0aGUgdGV4dC4gKi9cbiAgc2hvd09wdGlvbkltYWdlczogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgb3B0aW9uIHJvd3Mgc2hvdyB0aGVpciBgaXRlbV9jb3VudGAgYXQgdGhlIHRyYWlsaW5nIGVkZ2UuICovXG4gIHNob3dPcHRpb25Db3VudHM6IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgY29udGVudC1iZWFyaW5nIGZpZWxkcyBvZiB0aGUgdmlldy1tb2RlbCAoZXZlcnl0aGluZyBidXQgYGlzVmlzaWJsZWApLiAqL1xudHlwZSBEcm9wZG93bkNvbnRlbnQgPSBPbWl0PERyb3Bkb3duVm0sIFwiaXNWaXNpYmxlXCI+O1xuXG4vKipcbiAqIFRpZXIgMiBkcm9wZG93biBjb21wb25lbnQg4oCUIHRoZSBBbmd1bGFyIGVxdWl2YWxlbnQgb2YgUmVhY3Qnc1xuICogYDxBSUF1dG9jb21wbGV0ZURyb3Bkb3duIC8+YC4gUmVuZGVycyB0aGUgcGlsbGJhciwgb3B0aW9ucyBncmlkLCBhbmRcbiAqIGxvYWRpbmcgc2tlbGV0b24gYmFzZWQgb24gdGhlIHN1cHBsaWVkIGNvbnRyb2xsZXIncyBgZHJvcGRvd24kYCBzbmFwc2hvdC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8YWktYXV0b2NvbXBsZXRlLWRyb3Bkb3duIFtjb250cm9sbGVyXT1cImFjXCI+PC9haS1hdXRvY29tcGxldGUtZHJvcGRvd24+XG4gKiBgYGBcbiAqXG4gKiBBbGwgYWN0aW9ucyAocGlsbCBjbGljaywgb3B0aW9uIHNlbGVjdCwgb3B0aW9uIGhpZ2hsaWdodCkgYXJlIGZvcndhcmRlZCB0b1xuICogdGhlIGNvbnRyb2xsZXIuIENvbnN1bWVycyB3aG8gbmVlZCB0byBvYnNlcnZlIHRoZXNlIGV2ZW50cyBjYW4gc3Vic2NyaWJlXG4gKiB0byB0aGUgY29udHJvbGxlcidzIHBlci1maWVsZCBvYnNlcnZhYmxlcy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhaS1hdXRvY29tcGxldGUtZHJvcGRvd25cIixcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQaWxsTGlzdENvbXBvbmVudCxcbiAgICBQcm9kdWN0U3RyaXBDb21wb25lbnQsXG4gICAgU3VnZ2VzdGlvbkdyaWRDb21wb25lbnQsXG4gICAgRGF0ZUdyaWRDb21wb25lbnQsXG4gICAgU3RhY2tDb21wb25lbnQsXG4gICAgQ2x1c3RlckNvbXBvbmVudCxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWktYXV0b2NvbXBsZXRlLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sXCIsXG4gIC8vIFRoZSBzaGFyZWQgYXBwZWFyYW5jZSBsYXllciBjYXJyaWVzIHRoZSBkZXNpZ24gdG9rZW5zICsgYm94LXNpemluZyByZXNldCArXG4gIC8vIG9wdGlvbnNQb3NpdGlvbiByZXZlcnNhbCwgc28gYSBzdGFuZGFsb25lIGRyb3Bkb3duIChubyBUaWVyIDEgY29tcG9uZW50IG9uXG4gIC8vIHRoZSBwYWdlKSBpcyBmdWxseSBzdHlsZWQgb25jZSBgbW9kZWAgaXMgc2V0LlxuICBzdHlsZVVybHM6IFtcIi4uL3NoYXJlZC9hcHBlYXJhbmNlLmNzc1wiLCBcIi4vYWktYXV0b2NvbXBsZXRlLWRyb3Bkb3duLmNvbXBvbmVudC5jc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEFJQXV0b2NvbXBsZXRlRHJvcGRvd25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95XG57XG4gIC8qKiBUaGUgY29udHJvbGxlciB0aGF0IG93bnMgdGhlIGF1dG9jb21wbGV0ZSBzdGF0ZS4gUmVxdWlyZWQuICovXG4gIEBJbnB1dCgpIGNvbnRyb2xsZXIhOiBBSUF1dG9jb21wbGV0ZUNvbnRyb2xsZXI7XG4gIC8qKiBXaGV0aGVyIHRvIHJlbmRlciB0aGUgcGlsbGJhciBhYm92ZSB0aGUgb3B0aW9ucyBncmlkLiBEZWZhdWx0OiB0cnVlLiAqL1xuICBASW5wdXQoKSBzaG93UGlsbHMgPSB0cnVlO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcGlsbGJhciBlbmRzIGluIGEgc21hbGwgXCJza2lwXCIgYnV0dG9uIHRoYXQgZGlzbWlzc2VzIHRoZVxuICAgKiBhY3RpdmUgcGlsbCDigJQgc2FtZSBhY3Rpb24gYXMgcHJlc3Npbmcg4oaSIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0LiBJdCBzaXRzXG4gICAqIGF0IHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSBiYXI6IHZpc3VhbGx5IHRvcC1yaWdodCB3aGVuIHRoZSBkcm9wZG93blxuICAgKiBvcGVucyBiZWxvdyB0aGUgaW5wdXQsIGJvdHRvbS1yaWdodCB3aGVuIGBvcHRpb25zUG9zaXRpb25gIGlzIFwiYWJvdmVcIi5cbiAgICogRGVmYXVsdDogdHJ1ZS4gSGlkZGVuIGF1dG9tYXRpY2FsbHkgZHVyaW5nIHJlLWVkaXQgYW5kIHdoaWxlIHRoZSBmYWxsYmFja1xuICAgKiBza2VsZXRvbiByZW5kZXJzLlxuICAgKi9cbiAgQElucHV0KCkgc2hvd1NraXBCdXR0b24gPSB0cnVlO1xuICAvKipcbiAgICogV2hldGhlciBvcHRpb24gcm93cyBkcmF3IHRoZWlyIGBpY29uX3N2Z2AgYmVmb3JlIHRoZSB0ZXh0LiBEZWZhdWx0OiB0cnVlLlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gcmVuZGVyIG9wdGlvbiByb3dzIGFzIHRleHQgb25seS5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dPcHRpb25JY29ucyA9IHRydWU7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9wdGlvbiByb3dzIGRyYXcgdGhlaXIgYGltYWdlX3VybGAgYXMgYSBzcXVhcmUgdGh1bWJuYWlsIGJlZm9yZVxuICAgKiB0aGUgdGV4dCwgaW4gcGxhY2Ugb2YgdGhlIGljb24uIERlZmF1bHQ6IHRydWUuIFNldCB0byBmYWxzZSB0byByZW5kZXJcbiAgICogb3B0aW9uIHJvd3Mgd2l0aG91dCBwaWN0dXJlcy5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dPcHRpb25JbWFnZXMgPSB0cnVlO1xuICAvKipcbiAgICogV2hldGhlciBvcHRpb24gcm93cyBzaG93IHRoZWlyIGBpdGVtX2NvdW50YCBhcyBhIG11dGVkIGxhYmVsIGF0IHRoZVxuICAgKiB0cmFpbGluZyBlZGdlIChcIjEyIGl0ZW1zXCIpLiBEZWZhdWx0OiB0cnVlLiBTZXQgdG8gZmFsc2UgdG8gaGlkZSB0aGUgY291bnRzLlxuICAgKi9cbiAgQElucHV0KCkgc2hvd09wdGlvbkNvdW50cyA9IHRydWU7XG4gIC8qKlxuICAgKiBIb3cgdGhlIHByb2R1Y3Qgc3RyaXAgbGF5cyBpdHMgY2FyZHMgb3V0OiBhIGhvcml6b250YWxseSBzY3JvbGxpbmcgcm93XG4gICAqICh0aGUgZGVmYXVsdCksIG9yIHRoZSBzYW1lIGNhcmRzIHN0YWNrZWQgYXMgZnVsbC13aWR0aCByb3dzLlxuICAgKi9cbiAgQElucHV0KCkgcHJvZHVjdHNMYXlvdXQ6IFByb2R1Y3RzTGF5b3V0ID0gXCJyb3dcIjtcbiAgLyoqIE9wdGlvbmFsIENTUyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBkcm9wZG93biByb290LiAqL1xuICBASW5wdXQoKSBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb2xvciBtb2RlIGZvciBhIHN0YW5kYWxvbmUgZHJvcGRvd24uIFdoZW4gc2V0LCB0aGUgZHJvcGRvd24gc2VsZi1zY29wZXMgdGhlXG4gICAqIGRlc2lnbiB0b2tlbnMgdG8gaXRzIG93biByb290IChhZGRzIGBtYWdpY3gtYWlhYCArIGBkYXRhLW1vZGVgKSwgc28gaXQgbmVlZHNcbiAgICogbm8gYC5tYWdpY3gtYWlhYCB3cmFwcGVyLiBgXCJhdXRvXCJgIGZvbGxvd3MgYHByZWZlcnMtY29sb3Itc2NoZW1lYC4gTGVhdmUgaXRcbiAgICogdW5zZXQgd2hlbiB0aGUgZHJvcGRvd24gc2l0cyBpbnNpZGUgYSBgLm1hZ2ljeC1haWFgIGFuY2VzdG9yIChlLmcuIFRpZXIgMSkuXG4gICAqL1xuICBASW5wdXQoKSBtb2RlPzogQXBwZWFyYW5jZU1vZGU7XG5cbiAgLyoqIENvbmNyZXRlIHJlc29sdmVkIG1vZGUsIG9yIG51bGwgd2hlbiBgbW9kZWAgaXMgdW5zZXQgKGluaGVyaXQgZnJvbSBhbmNlc3RvcikuICovXG4gIHJlc29sdmVkTW9kZTogXCJsaWdodFwiIHwgXCJkYXJrXCIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBtb2RlTXFsPzogTWVkaWFRdWVyeUxpc3Q7XG4gIHByaXZhdGUgbW9kZUxpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIC8qKiBSb290IGNsYXNzIGxpc3Qg4oCUIGFkZHMgYG1hZ2ljeC1haWFgIG9ubHkgd2hlbiBzZWxmLXNjb3BpbmcgdmlhIGBtb2RlYC4gKi9cbiAgZ2V0IHJvb3RDbGFzcygpOiBzdHJpbmcge1xuICAgIGxldCBjbHMgPSBcIm1hZ2ljeC1haWEtZHJvcGRvd25cIjtcbiAgICBpZiAodGhpcy5yZXNvbHZlZE1vZGUpIGNscyArPSBcIiBtYWdpY3gtYWlhXCI7XG4gICAgaWYgKHRoaXMuY2xhc3NOYW1lKSBjbHMgKz0gYCAke3RoaXMuY2xhc3NOYW1lfWA7XG4gICAgcmV0dXJuIGNscztcbiAgfVxuXG4gIC8qKiBGYWxsYmFjayBza2VsZXRvbi1iYXIgd2lkdGhzIHVzZWQgd2hlbiBsb2FkaW5nIHdpdGggemVybyBjYWNoZWQgb3B0aW9ucy4gKi9cbiAgcmVhZG9ubHkgZmFsbGJhY2tTa2VsZXRvbkJhcldpZHRocyA9IFsxNTksIDExOSwgMTY0XTtcblxuICAvKiogQWNjZXNzaWJsZSBuYW1lIG9mIHRoZSBcIm1vcmUgYmVsb3dcIiBzY3JvbGwgYXJyb3cuICovXG4gIHJlYWRvbmx5IHNjcm9sbEFycm93TGFiZWwgPSBTQ1JPTExfQVJST1dfTEFCRUw7XG5cbiAgLy8gVGhlIGRyb3Bkb3duIHJvb3QgYW5kIHRoZSBhcnJvdyBidXR0b24gbGl2ZSB1bmRlciB0aGUgYCpuZ0lmYCBvbiB2bSQsIHNvXG4gIC8vIHRoZXkgY29tZSBhbmQgZ28gd2l0aCBpdCDigJQgaGVuY2Ugbm9uLXN0YXRpYyBxdWVyaWVzLCByZS1yZWFkIGV2ZXJ5IGNoZWNrLlxuICBAVmlld0NoaWxkKFwiZHJvcGRvd25Sb290XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGRyb3Bkb3duUm9vdFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKFwic2Nyb2xsQXJyb3dcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgc2Nyb2xsQXJyb3dSZWY/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgLyoqIFRoZSBncmlkIHRoZSBzY3JvbGwtYXJyb3cgY29udHJvbGxlciBpcyBjdXJyZW50bHkgYm91bmQgdG8uICovXG4gIHByaXZhdGUgc2Nyb2xsQXJyb3dCaW5kaW5nOiB7IGdyaWQ6IEhUTUxFbGVtZW50OyBjb250cm9sbGVyOiBTY3JvbGxBcnJvd0NvbnRyb2xsZXIgfSB8IG51bGwgPVxuICAgIG51bGw7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0aW9uL2JyYW5kaW5nIGxpbmsgVVJMIGZvciB0aGUgZm9vdGVyLCB3aXRoIGEgYHV0bV9zb3VyY2VgIGRlcml2ZWRcbiAgICogZnJvbSB0aGUgZW1iZWRkaW5nIHBhZ2UncyBob3N0bmFtZSAoc2VlIHtAbGluayBidWlsZEF0dHJpYnV0aW9uVXJsfSkuXG4gICAqL1xuICByZWFkb25seSBicmFuZEhyZWYgPSBidWlsZEF0dHJpYnV0aW9uVXJsKCk7XG5cbiAgLyoqXG4gICAqIFZpZXctbW9kZWwgZGVyaXZlZCBmcm9tIHRoZSBjb250cm9sbGVyJ3MgYGRyb3Bkb3duJGAuIEFkZHMgdGhyZWUgYm9vbGVhbnNcbiAgICogKGBzaG93c1BpbGxzYCwgYHNob3dzT3B0aW9uc2AsIGBzaG93c0ZhbGxiYWNrU2tlbGV0b25gLCBgaXNWaXNpYmxlYCkgdGhhdFxuICAgKiBrZWVwIHRlbXBsYXRlLWxldmVsIGxvZ2ljIHRvIGEgcHJvcGVydHkgcmVhZCBwZXIgwqcxOS42LlxuICAgKlxuICAgKiBJbml0aWFsaXplZCBvbmNlIGluIGBuZ09uSW5pdGAg4oCUIG11c3QgTk9UIGJlIGEgZ2V0dGVyLiBBIGdldHRlciByZXR1cm5zIGFcbiAgICogZnJlc2ggYE9ic2VydmFibGVgIGluc3RhbmNlIG9uIGV2ZXJ5IHByb3BlcnR5IHJlYWQ7IHdpdGggT25QdXNoICsgYGFzeW5jYFxuICAgKiBwaXBlIHRoYXQgbWVhbnMgZWFjaCBjaGFuZ2UtZGV0ZWN0aW9uIGN5Y2xlIHVuc3Vic2NyaWJlcy9yZXN1YnNjcmliZXMsXG4gICAqIGNhdXNpbmcgdGhlIGAqbmdJZj1cInZtJCB8IGFzeW5jIGFzIHZtXCJgIHJvb3QgdG8gYnJpZWZseSByZXNvbHZlIGBudWxsYFxuICAgKiBhbmQgZmxpY2tlciB0aGUgZW50aXJlIGRyb3Bkb3duIERPTS5cbiAgICovXG4gIHZtJCE6IE9ic2VydmFibGU8RHJvcGRvd25WbT47XG5cbiAgLy8gQnJpZGdlIGZvciB0aGUgQElucHV0IGBzaG93UGlsbHNgIGludG8gdGhlIHJlYWN0aXZlIHBpcGVsaW5lLiBXaXRob3V0IHRoaXMsXG4gIC8vIGNoYW5naW5nIHRoZSBpbnB1dCBhZnRlciBpbml0IHdvdWxkbid0IHRyaWdnZXIgYSBuZXcgdm0gZW1pc3Npb24gdW50aWwgdGhlXG4gIC8vIG5leHQgY29udHJvbGxlci5kcm9wZG93biQgdGljayDigJQgYW5kIHdlJ2QgbG9zZSB0aGUgc2hvd1BpbGxzIHVwZGF0ZSBlbnRpcmVseVxuICAvLyBpZiB0aGUgY29udHJvbGxlciBpcyBpZGxlLiBVcGRhdGVkIGZyb20gbmdPbkNoYW5nZXMgYmVsb3cuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd1BpbGxzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8vIFNhbWUgYnJpZGdlLCBmb3IgYHNob3dTa2lwQnV0dG9uYC5cbiAgcHJpdmF0ZSByZWFkb25seSBzaG93U2tpcEJ1dHRvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAvLyBTYW1lIGJyaWRnZSwgZm9yIGBzaG93T3B0aW9uSWNvbnNgLlxuICBwcml2YXRlIHJlYWRvbmx5IHNob3dPcHRpb25JY29ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAvLyBTYW1lIGJyaWRnZSwgZm9yIGBzaG93T3B0aW9uSW1hZ2VzYCBhbmQgYHNob3dPcHRpb25Db3VudHNgLlxuICBwcml2YXRlIHJlYWRvbmx5IHNob3dPcHRpb25JbWFnZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG93T3B0aW9uQ291bnRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgLy8gTGFzdCBjb250ZW50IGVtaXR0ZWQgd2hpbGUgdGhlIGRyb3Bkb3duIHdhcyB2aXNpYmxlLiBSZXVzZWQgZHVyaW5nIHRoZVxuICAvLyBjbG9zZSBmYWRlIHNvIHRoZSBwb3B1bGF0ZWQgZHJvcGRvd24gZmFkZXMgb3V0IGFzIG9uZSDigJQgc2VlIGluaXRWbS5cbiAgcHJpdmF0ZSBsYXN0VmlzaWJsZUNvbnRlbnQ6IERyb3Bkb3duQ29udGVudCB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIFNlZWQgdGhlIGlucHV0IGJyaWRnZXMgZnJvbSB0aGVpciByZXNvbHZlZCB2YWx1ZXMgYXQgaW5pdCB0aW1lLlxuICAgIHRoaXMuc2hvd1BpbGxzJC5uZXh0KHRoaXMuc2hvd1BpbGxzKTtcbiAgICB0aGlzLnNob3dTa2lwQnV0dG9uJC5uZXh0KHRoaXMuc2hvd1NraXBCdXR0b24pO1xuICAgIHRoaXMuc2hvd09wdGlvbkljb25zJC5uZXh0KHRoaXMuc2hvd09wdGlvbkljb25zKTtcbiAgICB0aGlzLnNob3dPcHRpb25JbWFnZXMkLm5leHQodGhpcy5zaG93T3B0aW9uSW1hZ2VzKTtcbiAgICB0aGlzLnNob3dPcHRpb25Db3VudHMkLm5leHQodGhpcy5zaG93T3B0aW9uQ291bnRzKTtcbiAgICB0aGlzLmFwcGx5TW9kZSgpO1xuICAgIHRoaXMuaW5pdFZtKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbXCJzaG93UGlsbHNcIl0pIHtcbiAgICAgIHRoaXMuc2hvd1BpbGxzJC5uZXh0KHRoaXMuc2hvd1BpbGxzKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbXCJzaG93U2tpcEJ1dHRvblwiXSkge1xuICAgICAgdGhpcy5zaG93U2tpcEJ1dHRvbiQubmV4dCh0aGlzLnNob3dTa2lwQnV0dG9uKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbXCJzaG93T3B0aW9uSWNvbnNcIl0pIHtcbiAgICAgIHRoaXMuc2hvd09wdGlvbkljb25zJC5uZXh0KHRoaXMuc2hvd09wdGlvbkljb25zKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbXCJzaG93T3B0aW9uSW1hZ2VzXCJdKSB7XG4gICAgICB0aGlzLnNob3dPcHRpb25JbWFnZXMkLm5leHQodGhpcy5zaG93T3B0aW9uSW1hZ2VzKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbXCJzaG93T3B0aW9uQ291bnRzXCJdKSB7XG4gICAgICB0aGlzLnNob3dPcHRpb25Db3VudHMkLm5leHQodGhpcy5zaG93T3B0aW9uQ291bnRzKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbXCJtb2RlXCJdICYmICFjaGFuZ2VzW1wibW9kZVwiXS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5hcHBseU1vZGUoKTtcbiAgICB9XG4gICAgLy8gUmUtYmluZCB2bSQgd2hlbiB0aGUgY29udHJvbGxlciBASW5wdXQgaXMgc3dhcHBlZCAoZS5nLiBhIG11bHRpLXN0ZXAgZm9ybVxuICAgIC8vIHRvZ2dsaW5nIGJldHdlZW4gY29udHJvbGxlcnMpLiBXaXRob3V0IHRoaXMsIHZtJCBzdGF5cyBzdWJzY3JpYmVkIHRvIHRoZVxuICAgIC8vIHByZXZpb3VzIGNvbnRyb2xsZXIncyBkcm9wZG93biQg4oCUIHJlbmRlcmluZyBzdGFsZSBvcHRpb25zLCBvciwgaWYgdGhhdFxuICAgIC8vIGNvbnRyb2xsZXIgd2FzIGRlc3Ryb3koKS1lZCwgcmVjZWl2aW5nIGEgY29tcGxldGlvbiB0aGF0IGNvbGxhcHNlcyB0aGVcbiAgICAvLyBkcm9wZG93biBwZXJtYW5lbnRseS4gU2tpcCB0aGUgZmlyc3QgY2hhbmdlOiBuZ09uQ2hhbmdlcyBmaXJlcyBiZWZvcmVcbiAgICAvLyBuZ09uSW5pdCwgd2hpY2ggb3ducyB0aGUgaW5pdGlhbCBjcmVhdGlvbi5cbiAgICBpZiAoY2hhbmdlc1tcImNvbnRyb2xsZXJcIl0gJiYgIWNoYW5nZXNbXCJjb250cm9sbGVyXCJdLmZpcnN0Q2hhbmdlICYmIHRoaXMuY29udHJvbGxlcikge1xuICAgICAgdGhpcy5pbml0Vm0oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogS2VlcCB0aGUgY29yZSdzIFwibW9yZSBiZWxvd1wiIGFycm93IGNvbnRyb2xsZXIgYm91bmQgdG8gd2hpY2hldmVyIG9wdGlvbnNcbiAgICogZ3JpZCBpcyBjdXJyZW50bHkgcmVuZGVyZWQg4oCUIHRoZSBBbmd1bGFyIGFuYWxvZ3VlIG9mIFJlYWN0J3NcbiAgICogdXNlU2Nyb2xsQXJyb3cuIFRoZSBjb250cm9sbGVyIG93bnMgdGhlIGJlaGF2aW91ciAobWVhc3VyaW5nLCB2aXNpYmlsaXR5LFxuICAgKiB0aGUgcGFnZS1zY3JvbGwgb24gY2xpY2sg4oCUIHNlZSB0aGUgY29yZSdzIHNjcm9sbEFycm93LnRzKTsgdGhpcyBvbmx5IGhhbmRzXG4gICAqIGl0IHRoZSBsaXZlIGVsZW1lbnRzIGFmdGVyIGVhY2ggdmlldyBjaGVjaywgcmUtYXR0YWNoaW5nIHdoZW4gdGhlIGdyaWRcbiAgICogZWxlbWVudCBpcyByZXBsYWNlZCBhbmQgdGVhcmluZyBkb3duIHdoZW4gdGhlcmUgaXMgbm8gZ3JpZC5cbiAgICovXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5kcm9wZG93blJvb3RSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5zY3JvbGxBcnJvd1JlZj8ubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBncmlkID0gcm9vdD8ucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXCIuYWlhLWdyaWRbZGF0YS1zY3JvbGxdXCIpID8/IG51bGw7XG4gICAgaWYgKHRoaXMuc2Nyb2xsQXJyb3dCaW5kaW5nICYmIHRoaXMuc2Nyb2xsQXJyb3dCaW5kaW5nLmdyaWQgIT09IGdyaWQpIHtcbiAgICAgIHRoaXMuc2Nyb2xsQXJyb3dCaW5kaW5nLmNvbnRyb2xsZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5zY3JvbGxBcnJvd0JpbmRpbmcgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoIXJvb3QgfHwgIWJ1dHRvbiB8fCAhZ3JpZCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5zY3JvbGxBcnJvd0JpbmRpbmcpIHtcbiAgICAgIHRoaXMuc2Nyb2xsQXJyb3dCaW5kaW5nID0ge1xuICAgICAgICBncmlkLFxuICAgICAgICBjb250cm9sbGVyOiBhdHRhY2hTY3JvbGxBcnJvdyh7IGRyb3Bkb3duOiByb290LCBncmlkLCBidXR0b24gfSksXG4gICAgICB9O1xuICAgICAgcmV0dXJuOyAvLyBhdHRhY2goKSBydW5zIHRoZSBmaXJzdCB1cGRhdGUgaXRzZWxmXG4gICAgfVxuICAgIHRoaXMuc2Nyb2xsQXJyb3dCaW5kaW5nLmNvbnRyb2xsZXIudXBkYXRlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnRlYXJkb3duTW9kZUxpc3RlbmVyKCk7XG4gICAgdGhpcy5zY3JvbGxBcnJvd0JpbmRpbmc/LmNvbnRyb2xsZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc2Nyb2xsQXJyb3dCaW5kaW5nID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHRoZSBgbW9kZWAgaW5wdXQgaW50byBgcmVzb2x2ZWRNb2RlYC4gVW5zZXQg4oaSIG51bGwgKHRoZSBkcm9wZG93blxuICAgKiBzdGF5cyBjbGFzcy1sZXNzIGFuZCBpbmhlcml0cyBmcm9tIGEgYC5tYWdpY3gtYWlhYCBhbmNlc3RvcikuIGBcImF1dG9cImAgcmVhZHNcbiAgICogYHByZWZlcnMtY29sb3Itc2NoZW1lYCBhbmQgdHJhY2tzIGl0IGxpdmUgdmlhIGEgbWVkaWEtcXVlcnkgbGlzdGVuZXIuXG4gICAqL1xuICBwcml2YXRlIGFwcGx5TW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRlYXJkb3duTW9kZUxpc3RlbmVyKCk7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJlc29sdmVkTW9kZSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09IFwibGlnaHRcIiB8fCB0aGlzLm1vZGUgPT09IFwiZGFya1wiKSB7XG4gICAgICB0aGlzLnJlc29sdmVkTW9kZSA9IHRoaXMubW9kZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gXCJhdXRvXCJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIiB8fCB0eXBlb2Ygd2luZG93Lm1hdGNoTWVkaWEgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5yZXNvbHZlZE1vZGUgPSBcImxpZ2h0XCI7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubW9kZU1xbCA9IHdpbmRvdy5tYXRjaE1lZGlhKFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiKTtcbiAgICB0aGlzLnJlc29sdmVkTW9kZSA9IHRoaXMubW9kZU1xbC5tYXRjaGVzID8gXCJkYXJrXCIgOiBcImxpZ2h0XCI7XG4gICAgdGhpcy5tb2RlTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVkTW9kZSA9IHRoaXMubW9kZU1xbD8ubWF0Y2hlcyA/IFwiZGFya1wiIDogXCJsaWdodFwiO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfTtcbiAgICB0aGlzLm1vZGVNcWwuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCB0aGlzLm1vZGVMaXN0ZW5lcik7XG4gIH1cblxuICBwcml2YXRlIHRlYXJkb3duTW9kZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGVNcWwgJiYgdGhpcy5tb2RlTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMubW9kZU1xbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIHRoaXMubW9kZUxpc3RlbmVyKTtcbiAgICB9XG4gICAgdGhpcy5tb2RlTXFsID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubW9kZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIEJ1aWxkIHRoZSB2aWV3LW1vZGVsIHN0cmVhbSBmcm9tIHRoZSBjdXJyZW50IGNvbnRyb2xsZXIgKyBzaG93UGlsbHMkLiAqL1xuICBwcml2YXRlIGluaXRWbSgpOiB2b2lkIHtcbiAgICB0aGlzLnZtJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jb250cm9sbGVyLmRyb3Bkb3duJCxcbiAgICAgIHRoaXMuc2hvd1BpbGxzJCxcbiAgICAgIHRoaXMuc2hvd1NraXBCdXR0b24kLFxuICAgICAgdGhpcy5zaG93T3B0aW9uSWNvbnMkLFxuICAgICAgdGhpcy5zaG93T3B0aW9uSW1hZ2VzJCxcbiAgICAgIHRoaXMuc2hvd09wdGlvbkNvdW50cyQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKFtkZCwgc2hvd1BpbGxzLCBzaG93U2tpcEJ1dHRvbiwgc2hvd09wdGlvbkljb25zLCBzaG93T3B0aW9uSW1hZ2VzLCBzaG93T3B0aW9uQ291bnRzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZVN1Z2dlc3Rpb24gPSBkZC5zdWdnZXN0aW9uc1swXTtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gYWN0aXZlU3VnZ2VzdGlvbj8ub3B0aW9ucyA/PyBbXTtcbiAgICAgICAgICBjb25zdCBzaG93c1BpbGxzID0gc2hvd1BpbGxzICYmIChkZC5waWxscy5sZW5ndGggPiAwIHx8IGRkLmlzTG9hZGluZyk7XG4gICAgICAgICAgLy8gVGhlIHRyYWlsaW5nIFwic2tpcFwiIGJ1dHRvbiBvbmx5IG1ha2VzIHNlbnNlIG5leHQgdG8gYSByZWFsLFxuICAgICAgICAgIC8vIHNraXBwYWJsZSBwaWxsIOKAlCBuZXZlciBvbiB0aGUgZmFsbGJhY2sgc2tlbGV0b24gYmFyLCBhbmQgbmV2ZXJcbiAgICAgICAgICAvLyBkdXJpbmcgcmUtZWRpdCAodGhlIGJhciB0aGVuIHNob3dzIGFuIGFscmVhZHkgYW5zd2VyZWQgcGFyYW0pLlxuICAgICAgICAgIC8vIERlbGliZXJhdGVseSBOT1QgZ2F0ZWQgb24gc2hvd3NQaWxsczogd2l0aCBwaWxscyByZW5kZXJlZCBlbHNld2hlcmVcbiAgICAgICAgICAvLyAocGlsbFBsYWNlbWVudCBcImlubGluZVwiL1wiaGlkZGVuXCIpIHRoZSBiYXIgcmVuZGVycyBhcyBhIHNraXAtb25seVxuICAgICAgICAgIC8vIHJvdyBob2xkaW5nIGp1c3QgdGhlIGJ1dHRvbi4gSGlkZGVuIHdoaWxlIHRoZSBpbnB1dCBpcyBlbXB0eSDigJQgdGhlXG4gICAgICAgICAgLy8gZm9vdGVyIGhpbnQgZG9lc24ndCBhZHZlcnRpc2UgXCLihpIgdG8gc2tpcFwiIHVudGlsIHRoZSB1c2VyIGhhcyB0eXBlZCxcbiAgICAgICAgICAvLyBzbyB0aGUgcHJpc3RpbmUgc3RhcnRpbmcgc3RhdGUgc3RheXMgZnJlZSBvZiB0aGUgYWZmb3JkYW5jZSB0b28uXG4gICAgICAgICAgY29uc3Qgc2hvd3NTa2lwID1cbiAgICAgICAgICAgIGRkLnBpbGxzLmxlbmd0aCA+IDAgJiYgc2hvd1NraXBCdXR0b24gJiYgIWRkLmlzRWRpdGluZyAmJiAhZGQuaXNJbnB1dEVtcHR5O1xuICAgICAgICAgIC8vIEV4YWN0bHkgb25lIGJvZHkgcmVuZGVycy4gYG9wdGlvbnNgIGFib3ZlIGFscmVhZHkgaG9sZHMgdGhlIHZpc2libGVcbiAgICAgICAgICAvLyBtb250aCdzIGNlbGxzIHdoZW4gdGhpcyBpcyBhIGRhdGUg4oCUIHRoZSBjb3JlIHN3YXBwZWQgdGhlbSBpbiBpdHNcbiAgICAgICAgICAvLyBkZXJpdmUgbGF5ZXIg4oCUIHNvIHRoZSB0d28gYXJlIHRoZSBzYW1lIGxpc3QgZHJhd24gdHdvIGRpZmZlcmVudFxuICAgICAgICAgIC8vIHdheXMsIGFuZCBuZXZlciBib3RoIGF0IG9uY2UgKHR3byBlbGVtZW50cyBhbnN3ZXJpbmcgdG8gdGhlIHNhbWVcbiAgICAgICAgICAvLyBvcHRpb24gaWQgd291bGQgYnJlYWsga2V5Ym9hcmQgY29tbWl0KS5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIEEgY2FsZW5kYXIgaXMgd2l0aGhlbGQgd2hpbGUgYSByZXF1ZXN0IGlzIGluIGZsaWdodC4gVGhlIG9wdGlvbnNcbiAgICAgICAgICAvLyBncmlkIGRyYXdzIGl0cyBjYWNoZWQgb3B0aW9ucyBhcyBza2VsZXRvbiByb3dzIGZvciB0aGF0IHdpbmRvdywgYnV0XG4gICAgICAgICAgLy8gYSBtb250aCBvZiBkYXkgY2VsbHMgaGFzIG5vIHNrZWxldG9uIGZvcm0gd29ydGggZHJhd2luZyDigJQgYW5kIGEgbGl2ZVxuICAgICAgICAgIC8vIGNhbGVuZGFyIG92ZXIgYSBsb2FkaW5nIHBpbGwgYmFyIGludml0ZXMgYW4gYW5zd2VyIGFnYWluc3RcbiAgICAgICAgICAvLyBzdWdnZXN0aW9ucyB0aGUgcmVzcG9uc2UgaXMgYWJvdXQgdG8gcmVwbGFjZS4gVGhlIGZhbGxiYWNrIGJhcnNcbiAgICAgICAgICAvLyBzdGFuZCBpbiB1bnRpbCBpdCBsYW5kcy5cbiAgICAgICAgICBjb25zdCBpc0RhdGUgPSBpc0NhbGVuZGFyRm9ybWF0KGRkLmZvcm1hdFR5cGUgPz8gXCJvcHRpb25zXCIpICYmIGRkLmRhdGVWaWV3ICE9IG51bGw7XG4gICAgICAgICAgY29uc3Qgc2hvd3NPcHRpb25zID0gb3B0aW9ucy5sZW5ndGggPiAwICYmICFpc0RhdGU7XG4gICAgICAgICAgY29uc3Qgc2hvd3NEYXRlR3JpZCA9IG9wdGlvbnMubGVuZ3RoID4gMCAmJiBpc0RhdGUgJiYgIWRkLmlzTG9hZGluZztcbiAgICAgICAgICBjb25zdCBzaG93c0ZhbGxiYWNrU2tlbGV0b24gPSBkZC5pc0xvYWRpbmcgJiYgIXNob3dzT3B0aW9ucyAmJiAhc2hvd3NEYXRlR3JpZDtcbiAgICAgICAgICAvLyBFaXRoZXIgaGFsZiBpcyBlbm91Z2ggdG8ga2VlcCB0aGUgcGFuZWwgdXA6IHByb2R1Y3RzIHJlbmRlciB3aXRoIG5vXG4gICAgICAgICAgLy8gc3VnZ2VzdGlvbnMsIHN1Z2dlc3Rpb25zIHJlbmRlciB3aXRoIG5vIHByb2R1Y3RzLlxuICAgICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9XG4gICAgICAgICAgICBkZC5pc09wZW4gJiZcbiAgICAgICAgICAgIChzaG93c09wdGlvbnMgfHwgc2hvd3NEYXRlR3JpZCB8fCBzaG93c1BpbGxzIHx8IGRkLmlzTG9hZGluZyB8fCBkZC5wcm9kdWN0cy5sZW5ndGggPiAwKTtcblxuICAgICAgICAgIC8vIFdoaWxlIGNsb3NpbmcsIHJldXNlIHRoZSBsYXN0IHZpc2libGUgY29udGVudCBzbyB0aGUgcG9wdWxhdGVkXG4gICAgICAgICAgLy8gZHJvcGRvd24gZmFkZXMgb3V0IGFzIG9uZS4gT3RoZXJ3aXNlIHRoZSBwaWxscy9vcHRpb25zIHZhbmlzaCB0aGVcbiAgICAgICAgICAvLyBpbnN0YW50IHRoZSBzdGF0ZSBlbXB0aWVzIChlLmcuIHNraXBwaW5nIHRoZSBsYXN0IHBpbGwgd2l0aCDihpIpLFxuICAgICAgICAgIC8vIGxlYXZpbmcgdGhlIGFsd2F5cy1wcmVzZW50IGZvb3RlciBhbG9uZSBmb3IgYSBmbGFzaCBvZiBhIGZvb3Rlci1vbmx5XG4gICAgICAgICAgLy8gXCJubyBvcHRpb25zXCIgYm94IG1pZC1mYWRlLiBPbmx5IGBpc1Zpc2libGVgIHRyYWNrcyBsaXZlIHN0YXRlIHRvXG4gICAgICAgICAgLy8gZHJpdmUgdGhlIG9wYWNpdHkgdHJhbnNpdGlvbi5cbiAgICAgICAgICBpZiAoIWlzVmlzaWJsZSAmJiB0aGlzLmxhc3RWaXNpYmxlQ29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5sYXN0VmlzaWJsZUNvbnRlbnQsIGlzVmlzaWJsZTogZmFsc2UgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBvcHRpb25IaWdobGlnaHRlZCA9XG4gICAgICAgICAgICBkZC5hY3RpdmVJbmRleCA+PSAwICYmIEJvb2xlYW4ob3B0aW9uc1tkZC5hY3RpdmVJbmRleF0/LmlzX3RhcHBhYmxlKTtcbiAgICAgICAgICBjb25zdCB7IGtleTogZm9vdGVyS2V5LCBoaW50OiBmb290ZXJIaW50IH0gPSBnZXRGb290ZXJIaW50KFxuICAgICAgICAgICAgb3B0aW9uSGlnaGxpZ2h0ZWQsXG4gICAgICAgICAgICBkZC5pc0lucHV0RW1wdHksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBjb250ZW50OiBEcm9wZG93bkNvbnRlbnQgPSB7XG4gICAgICAgICAgICBwaWxsczogZGQucGlsbHMsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGRkLmFjdGl2ZUluZGV4LFxuICAgICAgICAgICAgaXNBY3RpdmVQaWxsU2VsZWN0ZWQ6IGRkLmlzQWN0aXZlUGlsbFNlbGVjdGVkLFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBkZC5pc0xvYWRpbmcsXG4gICAgICAgICAgICBzaG93c1BpbGxzLFxuICAgICAgICAgICAgc2hvd3NTa2lwLFxuICAgICAgICAgICAgc2tpcERpc2FibGVkOiBkZC5pc0xvYWRpbmcgfHwgQm9vbGVhbihkZC5pblNlbGVjdGlvbkFuaW1hdGlvbiksXG4gICAgICAgICAgICBhY3RpdmVQaWxsTGFiZWw6IGRkLnBpbGxzWzBdPy50ZXh0ID8/IFwiXCIsXG4gICAgICAgICAgICBzaG93c09wdGlvbnMsXG4gICAgICAgICAgICBzaG93c0RhdGVHcmlkLFxuICAgICAgICAgICAgZGF0ZVZpZXc6IGRkLmRhdGVWaWV3ID8/IG51bGwsXG4gICAgICAgICAgICBkYXRlU2VsZWN0aW9uOiB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXNvOiBkZC5zZWxlY3RlZERhdGVJc28gPz8gbnVsbCxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZTogZGQuc2VsZWN0ZWREYXRlUmFuZ2UgPz8gbnVsbCxcbiAgICAgICAgICAgICAgcmFuZ2VTdGFydDogZGQuZGF0ZVJhbmdlU3RhcnQgPz8gbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaG93c0ZhbGxiYWNrU2tlbGV0b24sXG4gICAgICAgICAgICBwcm9kdWN0czogZGQucHJvZHVjdHMsXG4gICAgICAgICAgICBncm91cEtleTogYWN0aXZlU3VnZ2VzdGlvbiA/IGAke2FjdGl2ZVN1Z2dlc3Rpb24udHlwZX0gJHthY3RpdmVTdWdnZXN0aW9uLnRleHR9YCA6IFwiXCIsXG4gICAgICAgICAgICBmb290ZXJLZXksXG4gICAgICAgICAgICBmb290ZXJIaW50LFxuICAgICAgICAgICAgb3B0aW9uc1Bvc2l0aW9uOiBkZC5vcHRpb25zUG9zaXRpb24sXG4gICAgICAgICAgICBzaG93T3B0aW9uSWNvbnMsXG4gICAgICAgICAgICBzaG93T3B0aW9uSW1hZ2VzLFxuICAgICAgICAgICAgc2hvd09wdGlvbkNvdW50cyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChpc1Zpc2libGUpIHRoaXMubGFzdFZpc2libGVDb250ZW50ID0gY29udGVudDtcbiAgICAgICAgICByZXR1cm4geyAuLi5jb250ZW50LCBpc1Zpc2libGUgfTtcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHRyYWNrQnlXaWR0aCA9IChfOiBudW1iZXIsIHc6IG51bWJlcik6IG51bWJlciA9PiB3O1xuXG4gIG9uUGlsbENsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2V0QWN0aXZlUGlsbChpbmRleCk7XG4gIH1cblxuICBvblNraXAoKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sbGVyLnNraXBBY3RpdmVQaWxsKCk7XG4gIH1cblxuICBvblNlbGVjdChvcHRpb246IFN1Z2dlc3Rpb25PcHRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2VsZWN0T3B0aW9uKG9wdGlvbik7XG4gIH1cblxuICBvblByZXZpb3VzTW9udGgoKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sbGVyLnNob3dQcmV2aW91c01vbnRoKCk7XG4gIH1cblxuICBvbk5leHRNb250aCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2hvd05leHRNb250aCgpO1xuICB9XG5cbiAgb25IaWdobGlnaHQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5zZXRBY3RpdmVEcm9wZG93bkluZGV4KGluZGV4KTtcbiAgfVxuXG4gIG9uUHJvZHVjdFNlbGVjdChwcm9kdWN0OiBQcm9kdWN0KTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sbGVyLnNlbGVjdFByb2R1Y3QocHJvZHVjdCk7XG4gIH1cblxuICAvKipcbiAgICogQSBjYXJkIHRha2luZyBmb2N1cyBibHVycyB0aGUgZWRpdG9yLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgY2xvc2UgdGhlXG4gICAqIHBhbmVsIG91dCBmcm9tIHVuZGVyIHRoZSBjYXJkIHRoZSB1c2VyIGp1c3QgdGFiYmVkIHRvLlxuICAgKi9cbiAgb25Qcm9kdWN0Rm9jdXNDaGFuZ2UoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5zZXRGb2N1c2VkKGZvY3VzZWQpO1xuICB9XG5cbiAgcHJldmVudEJsdXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gUHJldmVudCB0aGUgZWRpdG9yIGZyb20gbG9zaW5nIGZvY3VzIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZHJvcGRvd24uXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cInZtJCB8IGFzeW5jIGFzIHZtXCJcbiAgI2Ryb3Bkb3duUm9vdFxuICBbaWRdPVwiY29udHJvbGxlci5saXN0Ym94SWRcIlxuICByb2xlPVwibGlzdGJveFwiXG4gIGRhdGEtYWlhLWRyb3Bkb3duPVwiXCJcbiAgW2F0dHIuZGF0YS1haWEtbG9hZGluZ109XCJ2bS5pc0xvYWRpbmcgPyAnJyA6IG51bGxcIlxuICBbYXR0ci5kYXRhLW1vZGVdPVwicmVzb2x2ZWRNb2RlXCJcbiAgW2F0dHIuZGF0YS1vcHRpb25zLXBvc2l0aW9uXT1cInZtLm9wdGlvbnNQb3NpdGlvblwiXG4gIFthdHRyLmRhdGEtYWlhLWhhcy1wcm9kdWN0c109XCJ2bS5wcm9kdWN0cy5sZW5ndGggPiAwID8gJycgOiBudWxsXCJcbiAgW2NsYXNzXT1cInJvb3RDbGFzc1wiXG4gIFtjbGFzcy5tYWdpY3gtYWlhLWRyb3Bkb3duLXZpc2libGVdPVwidm0uaXNWaXNpYmxlXCJcbiAgKG1vdXNlZG93bik9XCJwcmV2ZW50Qmx1cigkZXZlbnQpXCJcbj5cbiAgPGFpYS1zdGFjayBzcGFjZT1cIjhweFwiPlxuICAgIDxhaWEtY2x1c3RlclxuICAgICAgKm5nSWY9XCJ2bS5zaG93c1BpbGxzIHx8IHZtLnNob3dzU2tpcFwiXG4gICAgICBjbGFzcz1cIm1hZ2ljeC1haWEtZHJvcGRvd24tcGlsbGJhclwiXG4gICAgICBkYXRhLWFpYS1waWxsYmFyPVwiXCJcbiAgICAgIFtub1dyYXBdPVwidHJ1ZVwiXG4gICAgPlxuICAgICAgPCEtLSBUaGUgc2Nyb2xsICsgcmlnaHQtZWRnZSBmYWRlIGxpdmUgb24gdGhpcyB3cmFwcGVyIChub3QgdGhlIGJhcikgc29cbiAgICAgICAgICAgdGhlIHNraXAgYnV0dG9uIHN0YXlzIG91dHNpZGUgdGhlIG1hc2tlZCByZWdpb24g4oCUIHBpbm5lZCBhbmQgZnVsbHlcbiAgICAgICAgICAgb3BhcXVlIHdoaWxlIG92ZXJmbG93aW5nIHBpbGxzIGZhZGUgdW5kZXIgaXQuIEFic2VudCBpbiBhIHNraXAtb25seVxuICAgICAgICAgICByb3cgKHBpbGxzIHJlbmRlcmVkIGVsc2V3aGVyZSB2aWEgcGlsbFBsYWNlbWVudCBpbmxpbmUvaGlkZGVuKS4gLS0+XG4gICAgICA8c3BhbiAqbmdJZj1cInZtLnNob3dzUGlsbHNcIiBjbGFzcz1cIm1hZ2ljeC1haWEtcGlsbC1zY3JvbGxcIiBkYXRhLWFpYS1waWxsLXNjcm9sbD1cIlwiPlxuICAgICAgICA8YWlhLXBpbGwtbGlzdFxuICAgICAgICAgIFtwaWxsc109XCJ2bS5waWxsc1wiXG4gICAgICAgICAgW2FjdGl2ZVBpbGxJbmRleF09XCIwXCJcbiAgICAgICAgICBbYWN0aXZlU2VsZWN0ZWRdPVwidm0uaXNBY3RpdmVQaWxsU2VsZWN0ZWRcIlxuICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxuICAgICAgICAgIFtsb2FkaW5nXT1cInZtLmlzTG9hZGluZ1wiXG4gICAgICAgICAgKHNlbGVjdFBpbGwpPVwib25QaWxsQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgID48L2FpYS1waWxsLWxpc3Q+XG4gICAgICA8L3NwYW4+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwidm0uc2hvd3NTa2lwXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBjbGFzcz1cIm1hZ2ljeC1haWEtc2tpcFwiXG4gICAgICAgIGRhdGEtYWlhLXNraXA9XCJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidm0uc2tpcERpc2FibGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ2bS5hY3RpdmVQaWxsTGFiZWwgPyAnU2tpcCAnICsgdm0uYWN0aXZlUGlsbExhYmVsIDogJ1NraXAnXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2tpcCgpXCJcbiAgICAgID5cbiAgICAgICAgc2tpcFxuICAgICAgPC9idXR0b24+XG4gICAgPC9haWEtY2x1c3Rlcj5cblxuICAgIDxhaWEtc3VnZ2VzdGlvbi1ncmlkXG4gICAgICAqbmdJZj1cInZtLnNob3dzT3B0aW9uc1wiXG4gICAgICBbb3B0aW9uc109XCJ2bS5vcHRpb25zXCJcbiAgICAgIFthY3RpdmVJbmRleF09XCJ2bS5hY3RpdmVJbmRleFwiXG4gICAgICBbbGlzdGJveElkXT1cImNvbnRyb2xsZXIubGlzdGJveElkXCJcbiAgICAgIFtsb2FkaW5nXT1cInZtLmlzTG9hZGluZ1wiXG4gICAgICBbZ3JvdXBLZXldPVwidm0uZ3JvdXBLZXlcIlxuICAgICAgW29wdGlvbnNQb3NpdGlvbl09XCJ2bS5vcHRpb25zUG9zaXRpb25cIlxuICAgICAgW3Nob3dJY29uc109XCJ2bS5zaG93T3B0aW9uSWNvbnNcIlxuICAgICAgW3Nob3dJbWFnZXNdPVwidm0uc2hvd09wdGlvbkltYWdlc1wiXG4gICAgICBbc2hvd0NvdW50c109XCJ2bS5zaG93T3B0aW9uQ291bnRzXCJcbiAgICAgIChzZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAoaGlnaGxpZ2h0KT1cIm9uSGlnaGxpZ2h0KCRldmVudClcIlxuICAgID48L2FpYS1zdWdnZXN0aW9uLWdyaWQ+XG5cbiAgICA8YWlhLWRhdGUtZ3JpZFxuICAgICAgKm5nSWY9XCJ2bS5zaG93c0RhdGVHcmlkXCJcbiAgICAgIFtvcHRpb25zXT1cInZtLm9wdGlvbnNcIlxuICAgICAgW2FjdGl2ZUluZGV4XT1cInZtLmFjdGl2ZUluZGV4XCJcbiAgICAgIFtsaXN0Ym94SWRdPVwiY29udHJvbGxlci5saXN0Ym94SWRcIlxuICAgICAgW3ZpZXddPVwidm0uZGF0ZVZpZXdcIlxuICAgICAgW3NlbGVjdGlvbl09XCJ2bS5kYXRlU2VsZWN0aW9uXCJcbiAgICAgIChzZWxlY3QpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAoaGlnaGxpZ2h0KT1cIm9uSGlnaGxpZ2h0KCRldmVudClcIlxuICAgICAgKHByZXZpb3VzTW9udGgpPVwib25QcmV2aW91c01vbnRoKClcIlxuICAgICAgKG5leHRNb250aCk9XCJvbk5leHRNb250aCgpXCJcbiAgICA+PC9haWEtZGF0ZS1ncmlkPlxuXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJ2bS5zaG93c0ZhbGxiYWNrU2tlbGV0b25cIlxuICAgICAgY2xhc3M9XCJtYWdpY3gtYWlhLWRyb3Bkb3duLXNrZWxldG9uLWJhcnNcIlxuICAgICAgZGF0YS1haWEtc2tlbGV0b24tYmFycz1cIlwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nRm9yPVwibGV0IHcgb2YgZmFsbGJhY2tTa2VsZXRvbkJhcldpZHRoczsgdHJhY2tCeTogdHJhY2tCeVdpZHRoXCJcbiAgICAgICAgY2xhc3M9XCJtYWdpY3gtYWlhLWRyb3Bkb3duLXNrZWxldG9uLWJhclwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJ3XCJcbiAgICAgID48L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tICpuZ0lmLCBub3QganVzdCB0aGUgc2VjdGlvbidzIG93biBndWFyZCBpbnNpZGUgdGhlIGNvbXBvbmVudDogdGhlIGhvc3RcbiAgICAgICAgIGVsZW1lbnQgaXMgYW4gaW4tZmxvdyBjaGlsZCBvZiAuYWlhLXN0YWNrIChkaXNwbGF5OmZsZXg7IGdhcDo4cHgpLCBzb1xuICAgICAgICAgYW4gYWx3YXlzLWluc3RhbnRpYXRlZCB6ZXJvLWhlaWdodCBob3N0IHdvdWxkIGFkZCBhIFNFQ09ORCA4cHggZ2FwXG4gICAgICAgICBiZXR3ZWVuIHRoZSBncmlkIGFuZCB0aGUgZm9vdGVyIOKAlCBpbiBldmVyeSBkcm9wZG93biwgcHJvZHVjdHMgb3Igbm90LlxuICAgICAgICAgVGhlIGdyaWQncyAtLWFpYS1ncmlkLW92ZXJsYXAtYm90dG9tIGlzIHR1bmVkIGZvciBleGFjdGx5IG9uZSBnYXAsIHNvXG4gICAgICAgICB0aGUgZm9vdGVyIHdvdWxkIGxhbmQgOHB4IGJlbG93IHRoZSBiYW5kIGl0IGlzIG1lYW50IHRvIGNvdmVyLiAtLT5cbiAgICA8YWlhLXByb2R1Y3Qtc3RyaXBcbiAgICAgICpuZ0lmPVwidm0ucHJvZHVjdHMubGVuZ3RoID4gMFwiXG4gICAgICBbcHJvZHVjdHNdPVwidm0ucHJvZHVjdHNcIlxuICAgICAgW2xpc3Rib3hJZF09XCJjb250cm9sbGVyLmxpc3Rib3hJZFwiXG4gICAgICBbZm9jdXNhYmxlXT1cInZtLmlzVmlzaWJsZVwiXG4gICAgICBbbGF5b3V0XT1cInByb2R1Y3RzTGF5b3V0XCJcbiAgICAgIChzZWxlY3QpPVwib25Qcm9kdWN0U2VsZWN0KCRldmVudClcIlxuICAgICAgKGZvY3VzQ2hhbmdlKT1cIm9uUHJvZHVjdEZvY3VzQ2hhbmdlKCRldmVudClcIlxuICAgID48L2FpYS1wcm9kdWN0LXN0cmlwPlxuXG4gICAgPGZvb3RlciBjbGFzcz1cIm1hZ2ljeC1haWEtZm9vdGVyXCIgZGF0YS1haWEtZm9vdGVyPVwiXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFnaWN4LWFpYS1mb290ZXItcm93XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWFnaWN4LWFpYS1mb290ZXItaGludC1ncm91cFwiPlxuICAgICAgICAgIDxrYmQgY2xhc3M9XCJtYWdpY3gtYWlhLWZvb3Rlci1rZXlcIj57eyB2bS5mb290ZXJLZXkgfX08L2tiZD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hZ2ljeC1haWEtZm9vdGVyLWhpbnRcIj57eyB2bS5mb290ZXJIaW50IH19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJtYWdpY3gtYWlhLWZvb3Rlci1icmFuZC1saW5rXCJcbiAgICAgICAgICBbaHJlZl09XCJicmFuZEhyZWZcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hZ2ljeC1haWEtZm9vdGVyLWJyYW5kXCI+QUk8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWdpY3gtYWlhLWZvb3Rlci1iYWRnZVwiPkF1dG9jb21wbGV0ZTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gIDwvYWlhLXN0YWNrPlxuICA8IS0tIFwiTW9yZSBiZWxvd1wiIGFycm93IOKAlCBhbiBvdmVybGF5IG9uIHRoZSBwYW5lbCwgbm90IGEgc2VjdGlvbiBvZiB0aGVcbiAgICAgICBzdGFjay4gU2hvd24vcG9zaXRpb25lZCBieSB0aGUgY29yZSdzIHNjcm9sbC1hcnJvdyBjb250cm9sbGVyIChzZWVcbiAgICAgICBzeW5jU2Nyb2xsQXJyb3cpOyBtYXJrdXAgbWlycm9ycyB2YW5pbGxhJ3MgY3JlYXRlU2Nyb2xsQXJyb3dCdXR0b24uIC0tPlxuICA8YnV0dG9uXG4gICAgI3Njcm9sbEFycm93XG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgY2xhc3M9XCJtYWdpY3gtYWlhLXNjcm9sbC1hcnJvd1wiXG4gICAgZGF0YS1haWEtc2Nyb2xsLWFycm93PVwiXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNjcm9sbEFycm93TGFiZWxcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gID5cbiAgICA8c3ZnXG4gICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgIHN0cm9rZS13aWR0aD1cIjEuNzVcIlxuICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgID5cbiAgICAgIDxwYXRoIGQ9XCJNNCA2LjUgOCAxMC41bDQtNFwiIC8+XG4gICAgPC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktYXV0b2NvbXBsZXRlLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYWktYXV0b2NvbXBsZXRlLWRyb3Bkb3duL2FpLWF1dG9jb21wbGV0ZS1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL2FpLWF1dG9jb21wbGV0ZS1kcm9wZG93bi9haS1hdXRvY29tcGxldGUtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUtOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixtQkFBbUIsRUFHbkIsYUFBYSxFQUNiLGdCQUFnQixFQUdoQixrQkFBa0IsR0FJbkIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBbUIsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQzs7O0FBK0No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Y0FDeEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGdCQUFnQjtxQkFDakIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OEJBVzVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFTRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUtHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csSUFBSTtzQkFBWixLQUFLO2dCQXdCZ0QsZUFBZTtzQkFBcEUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVwQyxjQUFjO3NCQURyQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICB0eXBlIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICB0eXBlIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBpbmplY3QsXG4gIHR5cGUgT25DaGFuZ2VzLFxuICB0eXBlIE9uRGVzdHJveSxcbiAgdHlwZSBPbkluaXQsXG4gIHR5cGUgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIHR5cGUgQXBwZWFyYW5jZU1vZGUsXG4gIGF0dGFjaFNjcm9sbEFycm93LFxuICBidWlsZEF0dHJpYnV0aW9uVXJsLFxuICB0eXBlIERhdGVNb250aFZpZXcsXG4gIHR5cGUgRGF0ZVNlbGVjdGlvbixcbiAgZ2V0Rm9vdGVySGludCxcbiAgaXNDYWxlbmRhckZvcm1hdCxcbiAgdHlwZSBQcm9kdWN0LFxuICB0eXBlIFByb2R1Y3RzTGF5b3V0LFxuICBTQ1JPTExfQVJST1dfTEFCRUwsXG4gIHR5cGUgU2Nyb2xsQXJyb3dDb250cm9sbGVyLFxuICB0eXBlIFN1Z2dlc3Rpb24sXG4gIHR5cGUgU3VnZ2VzdGlvbk9wdGlvbixcbn0gZnJvbSBcIkBtYWdpY3gtZW5nL2FpLWF1dG9jb21wbGV0ZS12YW5pbGxhXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIHR5cGUgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB0eXBlIHsgQUlBdXRvY29tcGxldGVDb250cm9sbGVyIH0gZnJvbSBcIi4uL2NvbnRyb2xsZXIvYWktYXV0b2NvbXBsZXRlLmNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IERhdGVHcmlkQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ludGVybmFsL2RhdGUtZ3JpZC9kYXRlLWdyaWQuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDbHVzdGVyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ludGVybmFsL2xheW91dC9jbHVzdGVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU3RhY2tDb21wb25lbnQgfSBmcm9tIFwiLi4vaW50ZXJuYWwvbGF5b3V0L3N0YWNrLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgUGlsbExpc3RDb21wb25lbnQgfSBmcm9tIFwiLi4vaW50ZXJuYWwvcGlsbC1saXN0L3BpbGwtbGlzdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2R1Y3RTdHJpcENvbXBvbmVudCB9IGZyb20gXCIuLi9pbnRlcm5hbC9wcm9kdWN0LXN0cmlwL3Byb2R1Y3Qtc3RyaXAuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTdWdnZXN0aW9uR3JpZENvbXBvbmVudCB9IGZyb20gXCIuLi9pbnRlcm5hbC9zdWdnZXN0aW9uLWdyaWQvc3VnZ2VzdGlvbi1ncmlkLmNvbXBvbmVudFwiO1xuXG5pbnRlcmZhY2UgRHJvcGRvd25WbSB7XG4gIHBpbGxzOiBTdWdnZXN0aW9uW107XG4gIG9wdGlvbnM6IFN1Z2dlc3Rpb25PcHRpb25bXTtcbiAgYWN0aXZlSW5kZXg6IG51bWJlcjtcbiAgaXNBY3RpdmVQaWxsU2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgLyoqIFRoZSBsb2FkaW5nIHNrZWxldG9uIGlzIGZhZGluZyBvdXQgYmVmb3JlIHRoZSByZXNwb25zZSdzIG9wdGlvbnMgcmVwbGFjZSBpdC4gKi9cbiAgc2tlbGV0b25FeGl0aW5nOiBib29sZWFuO1xuICBzaG93c1BpbGxzOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgcGlsbGJhciBlbmRzIGluIHRoZSB0cmFpbGluZyBcInNraXBcIiBidXR0b24uICovXG4gIHNob3dzU2tpcDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGVkIHN0YXRlIGZvciB0aGUgc2tpcCBidXR0b246IGxvYWRpbmcsIG9yIHRoZSBwb3N0LXNlbGVjdGlvbiB3aW5kb3dcbiAgICogd2hlcmUgaXNMb2FkaW5nIGlzIHN1cHByZXNzZWQgYnV0IHRoZSBjb3JlJ3Mgc2tpcEFjdGl2ZVBpbGwoKSBuby1vcHMuXG4gICAqL1xuICBza2lwRGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8qKiBBY3RpdmUgcGlsbCdzIGxhYmVsLCBmb3IgdGhlIHNraXAgYnV0dG9uJ3MgYXJpYS1sYWJlbC4gKi9cbiAgYWN0aXZlUGlsbExhYmVsOiBzdHJpbmc7XG4gIHNob3dzT3B0aW9uczogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGNhbGVuZGFyIGJvZHkgcmVuZGVycyBpbiBwbGFjZSBvZiB0aGUgb3B0aW9ucyBncmlkLiAqL1xuICBzaG93c0RhdGVHcmlkOiBib29sZWFuO1xuICAvKiogVGhlIG1vbnRoIHRoZSBjYWxlbmRhciBzaG93cy4gTnVsbCB1bmxlc3MgYHNob3dzRGF0ZUdyaWRgLiAqL1xuICBkYXRlVmlldzogRGF0ZU1vbnRoVmlldyB8IG51bGw7XG4gIC8qKiBXaGF0IHRoZSBjYWxlbmRhciBwYWludHMgYXMgYW5zd2VyZWQg4oCUIHNlZSB0aGUgY29yZSdzIGBkYXRlU2VsZWN0aW9uRm9yYC4gKi9cbiAgZGF0ZVNlbGVjdGlvbjogRGF0ZVNlbGVjdGlvbjtcbiAgc2hvd3NGYWxsYmFja1NrZWxldG9uOiBib29sZWFuO1xuICBpc1Zpc2libGU6IGJvb2xlYW47XG4gIC8qKiBQcm9kdWN0IGNhcmRzIGZvciB0aGUgc3RyaXAuIEVtcHR5IHVubGVzcyBgcHJvZHVjdHNgIGlzIGNvbmZpZ3VyZWQuICovXG4gIHByb2R1Y3RzOiBQcm9kdWN0W107XG4gIC8qKiBJZGVudGl0eSBvZiB0aGUgc3VnZ2VzdGlvbiB0aGUgb3B0aW9ucyBiZWxvbmcgdG8g4oCUIGRyaXZlcyB0aGUgZ3JpZCdzIHNjcm9sbCByZXNldC4gKi9cbiAgZ3JvdXBLZXk6IHN0cmluZztcbiAgZm9vdGVyS2V5OiBzdHJpbmc7XG4gIGZvb3RlckhpbnQ6IHN0cmluZztcbiAgb3B0aW9uc1Bvc2l0aW9uOiBcImFib3ZlXCIgfCBcImJlbG93XCI7XG4gIC8qKiBXaGV0aGVyIG9wdGlvbiByb3dzIGRyYXcgdGhlaXIgYGljb25fc3ZnYCBiZWZvcmUgdGhlIHRleHQuICovXG4gIHNob3dPcHRpb25JY29uczogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgb3B0aW9uIHJvd3MgZHJhdyB0aGVpciBgaW1hZ2VfdXJsYCBhcyBhIHRodW1ibmFpbCBiZWZvcmUgdGhlIHRleHQuICovXG4gIHNob3dPcHRpb25JbWFnZXM6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIG9wdGlvbiByb3dzIHNob3cgdGhlaXIgYGl0ZW1fY291bnRgIGF0IHRoZSB0cmFpbGluZyBlZGdlLiAqL1xuICBzaG93T3B0aW9uQ291bnRzOiBib29sZWFuO1xufVxuXG4vKiogVGhlIGNvbnRlbnQtYmVhcmluZyBmaWVsZHMgb2YgdGhlIHZpZXctbW9kZWwgKGV2ZXJ5dGhpbmcgYnV0IGBpc1Zpc2libGVgKS4gKi9cbnR5cGUgRHJvcGRvd25Db250ZW50ID0gT21pdDxEcm9wZG93blZtLCBcImlzVmlzaWJsZVwiPjtcblxuLyoqXG4gKiBUaWVyIDIgZHJvcGRvd24gY29tcG9uZW50IOKAlCB0aGUgQW5ndWxhciBlcXVpdmFsZW50IG9mIFJlYWN0J3NcbiAqIGA8QUlBdXRvY29tcGxldGVEcm9wZG93biAvPmAuIFJlbmRlcnMgdGhlIHBpbGxiYXIsIG9wdGlvbnMgZ3JpZCwgYW5kXG4gKiBsb2FkaW5nIHNrZWxldG9uIGJhc2VkIG9uIHRoZSBzdXBwbGllZCBjb250cm9sbGVyJ3MgYGRyb3Bkb3duJGAgc25hcHNob3QuXG4gKlxuICogYGBgaHRtbFxuICogPGFpLWF1dG9jb21wbGV0ZS1kcm9wZG93biBbY29udHJvbGxlcl09XCJhY1wiPjwvYWktYXV0b2NvbXBsZXRlLWRyb3Bkb3duPlxuICogYGBgXG4gKlxuICogQWxsIGFjdGlvbnMgKHBpbGwgY2xpY2ssIG9wdGlvbiBzZWxlY3QsIG9wdGlvbiBoaWdobGlnaHQpIGFyZSBmb3J3YXJkZWQgdG9cbiAqIHRoZSBjb250cm9sbGVyLiBDb25zdW1lcnMgd2hvIG5lZWQgdG8gb2JzZXJ2ZSB0aGVzZSBldmVudHMgY2FuIHN1YnNjcmliZVxuICogdG8gdGhlIGNvbnRyb2xsZXIncyBwZXItZmllbGQgb2JzZXJ2YWJsZXMuXG4gKlxuICogQHB1YmxpY1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYWktYXV0b2NvbXBsZXRlLWRyb3Bkb3duXCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUGlsbExpc3RDb21wb25lbnQsXG4gICAgUHJvZHVjdFN0cmlwQ29tcG9uZW50LFxuICAgIFN1Z2dlc3Rpb25HcmlkQ29tcG9uZW50LFxuICAgIERhdGVHcmlkQ29tcG9uZW50LFxuICAgIFN0YWNrQ29tcG9uZW50LFxuICAgIENsdXN0ZXJDb21wb25lbnQsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZVVybDogXCIuL2FpLWF1dG9jb21wbGV0ZS1kcm9wZG93bi5jb21wb25lbnQuaHRtbFwiLFxuICAvLyBUaGUgc2hhcmVkIGFwcGVhcmFuY2UgbGF5ZXIgY2FycmllcyB0aGUgZGVzaWduIHRva2VucyArIGJveC1zaXppbmcgcmVzZXQgK1xuICAvLyBvcHRpb25zUG9zaXRpb24gcmV2ZXJzYWwsIHNvIGEgc3RhbmRhbG9uZSBkcm9wZG93biAobm8gVGllciAxIGNvbXBvbmVudCBvblxuICAvLyB0aGUgcGFnZSkgaXMgZnVsbHkgc3R5bGVkIG9uY2UgYG1vZGVgIGlzIHNldC5cbiAgc3R5bGVVcmxzOiBbXCIuLi9zaGFyZWQvYXBwZWFyYW5jZS5jc3NcIiwgXCIuL2FpLWF1dG9jb21wbGV0ZS1kcm9wZG93bi5jb21wb25lbnQuY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBBSUF1dG9jb21wbGV0ZURyb3Bkb3duQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveVxue1xuICAvKiogVGhlIGNvbnRyb2xsZXIgdGhhdCBvd25zIHRoZSBhdXRvY29tcGxldGUgc3RhdGUuIFJlcXVpcmVkLiAqL1xuICBASW5wdXQoKSBjb250cm9sbGVyITogQUlBdXRvY29tcGxldGVDb250cm9sbGVyO1xuICAvKiogV2hldGhlciB0byByZW5kZXIgdGhlIHBpbGxiYXIgYWJvdmUgdGhlIG9wdGlvbnMgZ3JpZC4gRGVmYXVsdDogdHJ1ZS4gKi9cbiAgQElucHV0KCkgc2hvd1BpbGxzID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBpbGxiYXIgZW5kcyBpbiBhIHNtYWxsIFwic2tpcFwiIGJ1dHRvbiB0aGF0IGRpc21pc3NlcyB0aGVcbiAgICogYWN0aXZlIHBpbGwg4oCUIHNhbWUgYWN0aW9uIGFzIHByZXNzaW5nIOKGkiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dC4gSXQgc2l0c1xuICAgKiBhdCB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYmFyOiB2aXN1YWxseSB0b3AtcmlnaHQgd2hlbiB0aGUgZHJvcGRvd25cbiAgICogb3BlbnMgYmVsb3cgdGhlIGlucHV0LCBib3R0b20tcmlnaHQgd2hlbiBgb3B0aW9uc1Bvc2l0aW9uYCBpcyBcImFib3ZlXCIuXG4gICAqIERlZmF1bHQ6IHRydWUuIEhpZGRlbiBhdXRvbWF0aWNhbGx5IGR1cmluZyByZS1lZGl0IGFuZCB3aGlsZSB0aGUgZmFsbGJhY2tcbiAgICogc2tlbGV0b24gcmVuZGVycy5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dTa2lwQnV0dG9uID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3B0aW9uIHJvd3MgZHJhdyB0aGVpciBgaWNvbl9zdmdgIGJlZm9yZSB0aGUgdGV4dC4gRGVmYXVsdDogdHJ1ZS5cbiAgICogU2V0IHRvIGZhbHNlIHRvIHJlbmRlciBvcHRpb24gcm93cyBhcyB0ZXh0IG9ubHkuXG4gICAqL1xuICBASW5wdXQoKSBzaG93T3B0aW9uSWNvbnMgPSB0cnVlO1xuICAvKipcbiAgICogV2hldGhlciBvcHRpb24gcm93cyBkcmF3IHRoZWlyIGBpbWFnZV91cmxgIGFzIGEgc3F1YXJlIHRodW1ibmFpbCBiZWZvcmVcbiAgICogdGhlIHRleHQsIGluIHBsYWNlIG9mIHRoZSBpY29uLiBEZWZhdWx0OiB0cnVlLiBTZXQgdG8gZmFsc2UgdG8gcmVuZGVyXG4gICAqIG9wdGlvbiByb3dzIHdpdGhvdXQgcGljdHVyZXMuXG4gICAqL1xuICBASW5wdXQoKSBzaG93T3B0aW9uSW1hZ2VzID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3B0aW9uIHJvd3Mgc2hvdyB0aGVpciBgaXRlbV9jb3VudGAgYXMgYSBtdXRlZCBsYWJlbCBhdCB0aGVcbiAgICogdHJhaWxpbmcgZWRnZSAoXCIxMiBpdGVtc1wiKS4gRGVmYXVsdDogdHJ1ZS4gU2V0IHRvIGZhbHNlIHRvIGhpZGUgdGhlIGNvdW50cy5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dPcHRpb25Db3VudHMgPSB0cnVlO1xuICAvKipcbiAgICogSG93IHRoZSBwcm9kdWN0IHN0cmlwIGxheXMgaXRzIGNhcmRzIG91dDogYSBob3Jpem9udGFsbHkgc2Nyb2xsaW5nIHJvd1xuICAgKiAodGhlIGRlZmF1bHQpLCBvciB0aGUgc2FtZSBjYXJkcyBzdGFja2VkIGFzIGZ1bGwtd2lkdGggcm93cy5cbiAgICovXG4gIEBJbnB1dCgpIHByb2R1Y3RzTGF5b3V0OiBQcm9kdWN0c0xheW91dCA9IFwicm93XCI7XG4gIC8qKiBPcHRpb25hbCBDU1MgY2xhc3MgYXBwbGllZCB0byB0aGUgZHJvcGRvd24gcm9vdC4gKi9cbiAgQElucHV0KCkgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQ29sb3IgbW9kZSBmb3IgYSBzdGFuZGFsb25lIGRyb3Bkb3duLiBXaGVuIHNldCwgdGhlIGRyb3Bkb3duIHNlbGYtc2NvcGVzIHRoZVxuICAgKiBkZXNpZ24gdG9rZW5zIHRvIGl0cyBvd24gcm9vdCAoYWRkcyBgbWFnaWN4LWFpYWAgKyBgZGF0YS1tb2RlYCksIHNvIGl0IG5lZWRzXG4gICAqIG5vIGAubWFnaWN4LWFpYWAgd3JhcHBlci4gYFwiYXV0b1wiYCBmb2xsb3dzIGBwcmVmZXJzLWNvbG9yLXNjaGVtZWAuIExlYXZlIGl0XG4gICAqIHVuc2V0IHdoZW4gdGhlIGRyb3Bkb3duIHNpdHMgaW5zaWRlIGEgYC5tYWdpY3gtYWlhYCBhbmNlc3RvciAoZS5nLiBUaWVyIDEpLlxuICAgKi9cbiAgQElucHV0KCkgbW9kZT86IEFwcGVhcmFuY2VNb2RlO1xuXG4gIC8qKiBDb25jcmV0ZSByZXNvbHZlZCBtb2RlLCBvciBudWxsIHdoZW4gYG1vZGVgIGlzIHVuc2V0IChpbmhlcml0IGZyb20gYW5jZXN0b3IpLiAqL1xuICByZXNvbHZlZE1vZGU6IFwibGlnaHRcIiB8IFwiZGFya1wiIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbW9kZU1xbD86IE1lZGlhUXVlcnlMaXN0O1xuICBwcml2YXRlIG1vZGVMaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAvKiogUm9vdCBjbGFzcyBsaXN0IOKAlCBhZGRzIGBtYWdpY3gtYWlhYCBvbmx5IHdoZW4gc2VsZi1zY29waW5nIHZpYSBgbW9kZWAuICovXG4gIGdldCByb290Q2xhc3MoKTogc3RyaW5nIHtcbiAgICBsZXQgY2xzID0gXCJtYWdpY3gtYWlhLWRyb3Bkb3duXCI7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRNb2RlKSBjbHMgKz0gXCIgbWFnaWN4LWFpYVwiO1xuICAgIGlmICh0aGlzLmNsYXNzTmFtZSkgY2xzICs9IGAgJHt0aGlzLmNsYXNzTmFtZX1gO1xuICAgIHJldHVybiBjbHM7XG4gIH1cblxuICAvKiogRmFsbGJhY2sgc2tlbGV0b24tYmFyIHdpZHRocyB1c2VkIHdoZW4gbG9hZGluZyB3aXRoIHplcm8gY2FjaGVkIG9wdGlvbnMuICovXG4gIHJlYWRvbmx5IGZhbGxiYWNrU2tlbGV0b25CYXJXaWR0aHMgPSBbMTU5LCAxMTksIDE2NF07XG5cbiAgLyoqIEFjY2Vzc2libGUgbmFtZSBvZiB0aGUgXCJtb3JlIGJlbG93XCIgc2Nyb2xsIGFycm93LiAqL1xuICByZWFkb25seSBzY3JvbGxBcnJvd0xhYmVsID0gU0NST0xMX0FSUk9XX0xBQkVMO1xuXG4gIC8vIFRoZSBkcm9wZG93biByb290IGFuZCB0aGUgYXJyb3cgYnV0dG9uIGxpdmUgdW5kZXIgdGhlIGAqbmdJZmAgb24gdm0kLCBzb1xuICAvLyB0aGV5IGNvbWUgYW5kIGdvIHdpdGggaXQg4oCUIGhlbmNlIG5vbi1zdGF0aWMgcXVlcmllcywgcmUtcmVhZCBldmVyeSBjaGVjay5cbiAgQFZpZXdDaGlsZChcImRyb3Bkb3duUm9vdFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSBkcm9wZG93blJvb3RSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChcInNjcm9sbEFycm93XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIHNjcm9sbEFycm93UmVmPzogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIC8qKiBUaGUgZ3JpZCB0aGUgc2Nyb2xsLWFycm93IGNvbnRyb2xsZXIgaXMgY3VycmVudGx5IGJvdW5kIHRvLiAqL1xuICBwcml2YXRlIHNjcm9sbEFycm93QmluZGluZzogeyBncmlkOiBIVE1MRWxlbWVudDsgY29udHJvbGxlcjogU2Nyb2xsQXJyb3dDb250cm9sbGVyIH0gfCBudWxsID1cbiAgICBudWxsO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGlvbi9icmFuZGluZyBsaW5rIFVSTCBmb3IgdGhlIGZvb3Rlciwgd2l0aCBhIGB1dG1fc291cmNlYCBkZXJpdmVkXG4gICAqIGZyb20gdGhlIGVtYmVkZGluZyBwYWdlJ3MgaG9zdG5hbWUgKHNlZSB7QGxpbmsgYnVpbGRBdHRyaWJ1dGlvblVybH0pLlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmRIcmVmID0gYnVpbGRBdHRyaWJ1dGlvblVybCgpO1xuXG4gIC8qKlxuICAgKiBWaWV3LW1vZGVsIGRlcml2ZWQgZnJvbSB0aGUgY29udHJvbGxlcidzIGBkcm9wZG93biRgLiBBZGRzIHRocmVlIGJvb2xlYW5zXG4gICAqIChgc2hvd3NQaWxsc2AsIGBzaG93c09wdGlvbnNgLCBgc2hvd3NGYWxsYmFja1NrZWxldG9uYCwgYGlzVmlzaWJsZWApIHRoYXRcbiAgICoga2VlcCB0ZW1wbGF0ZS1sZXZlbCBsb2dpYyB0byBhIHByb3BlcnR5IHJlYWQgcGVyIMKnMTkuNi5cbiAgICpcbiAgICogSW5pdGlhbGl6ZWQgb25jZSBpbiBgbmdPbkluaXRgIOKAlCBtdXN0IE5PVCBiZSBhIGdldHRlci4gQSBnZXR0ZXIgcmV0dXJucyBhXG4gICAqIGZyZXNoIGBPYnNlcnZhYmxlYCBpbnN0YW5jZSBvbiBldmVyeSBwcm9wZXJ0eSByZWFkOyB3aXRoIE9uUHVzaCArIGBhc3luY2BcbiAgICogcGlwZSB0aGF0IG1lYW5zIGVhY2ggY2hhbmdlLWRldGVjdGlvbiBjeWNsZSB1bnN1YnNjcmliZXMvcmVzdWJzY3JpYmVzLFxuICAgKiBjYXVzaW5nIHRoZSBgKm5nSWY9XCJ2bSQgfCBhc3luYyBhcyB2bVwiYCByb290IHRvIGJyaWVmbHkgcmVzb2x2ZSBgbnVsbGBcbiAgICogYW5kIGZsaWNrZXIgdGhlIGVudGlyZSBkcm9wZG93biBET00uXG4gICAqL1xuICB2bSQhOiBPYnNlcnZhYmxlPERyb3Bkb3duVm0+O1xuXG4gIC8vIEJyaWRnZSBmb3IgdGhlIEBJbnB1dCBgc2hvd1BpbGxzYCBpbnRvIHRoZSByZWFjdGl2ZSBwaXBlbGluZS4gV2l0aG91dCB0aGlzLFxuICAvLyBjaGFuZ2luZyB0aGUgaW5wdXQgYWZ0ZXIgaW5pdCB3b3VsZG4ndCB0cmlnZ2VyIGEgbmV3IHZtIGVtaXNzaW9uIHVudGlsIHRoZVxuICAvLyBuZXh0IGNvbnRyb2xsZXIuZHJvcGRvd24kIHRpY2sg4oCUIGFuZCB3ZSdkIGxvc2UgdGhlIHNob3dQaWxscyB1cGRhdGUgZW50aXJlbHlcbiAgLy8gaWYgdGhlIGNvbnRyb2xsZXIgaXMgaWRsZS4gVXBkYXRlZCBmcm9tIG5nT25DaGFuZ2VzIGJlbG93LlxuICBwcml2YXRlIHJlYWRvbmx5IHNob3dQaWxscyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAvLyBTYW1lIGJyaWRnZSwgZm9yIGBzaG93U2tpcEJ1dHRvbmAuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd1NraXBCdXR0b24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgLy8gU2FtZSBicmlkZ2UsIGZvciBgc2hvd09wdGlvbkljb25zYC5cbiAgcHJpdmF0ZSByZWFkb25seSBzaG93T3B0aW9uSWNvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgLy8gU2FtZSBicmlkZ2UsIGZvciBgc2hvd09wdGlvbkltYWdlc2AgYW5kIGBzaG93T3B0aW9uQ291bnRzYC5cbiAgcHJpdmF0ZSByZWFkb25seSBzaG93T3B0aW9uSW1hZ2VzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd09wdGlvbkNvdW50cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIC8vIExhc3QgY29udGVudCBlbWl0dGVkIHdoaWxlIHRoZSBkcm9wZG93biB3YXMgdmlzaWJsZS4gUmV1c2VkIGR1cmluZyB0aGVcbiAgLy8gY2xvc2UgZmFkZSBzbyB0aGUgcG9wdWxhdGVkIGRyb3Bkb3duIGZhZGVzIG91dCBhcyBvbmUg4oCUIHNlZSBpbml0Vm0uXG4gIHByaXZhdGUgbGFzdFZpc2libGVDb250ZW50OiBEcm9wZG93bkNvbnRlbnQgfCBudWxsID0gbnVsbDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTZWVkIHRoZSBpbnB1dCBicmlkZ2VzIGZyb20gdGhlaXIgcmVzb2x2ZWQgdmFsdWVzIGF0IGluaXQgdGltZS5cbiAgICB0aGlzLnNob3dQaWxscyQubmV4dCh0aGlzLnNob3dQaWxscyk7XG4gICAgdGhpcy5zaG93U2tpcEJ1dHRvbiQubmV4dCh0aGlzLnNob3dTa2lwQnV0dG9uKTtcbiAgICB0aGlzLnNob3dPcHRpb25JY29ucyQubmV4dCh0aGlzLnNob3dPcHRpb25JY29ucyk7XG4gICAgdGhpcy5zaG93T3B0aW9uSW1hZ2VzJC5uZXh0KHRoaXMuc2hvd09wdGlvbkltYWdlcyk7XG4gICAgdGhpcy5zaG93T3B0aW9uQ291bnRzJC5uZXh0KHRoaXMuc2hvd09wdGlvbkNvdW50cyk7XG4gICAgdGhpcy5hcHBseU1vZGUoKTtcbiAgICB0aGlzLmluaXRWbSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wic2hvd1BpbGxzXCJdKSB7XG4gICAgICB0aGlzLnNob3dQaWxscyQubmV4dCh0aGlzLnNob3dQaWxscyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzW1wic2hvd1NraXBCdXR0b25cIl0pIHtcbiAgICAgIHRoaXMuc2hvd1NraXBCdXR0b24kLm5leHQodGhpcy5zaG93U2tpcEJ1dHRvbik7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzW1wic2hvd09wdGlvbkljb25zXCJdKSB7XG4gICAgICB0aGlzLnNob3dPcHRpb25JY29ucyQubmV4dCh0aGlzLnNob3dPcHRpb25JY29ucyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzW1wic2hvd09wdGlvbkltYWdlc1wiXSkge1xuICAgICAgdGhpcy5zaG93T3B0aW9uSW1hZ2VzJC5uZXh0KHRoaXMuc2hvd09wdGlvbkltYWdlcyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzW1wic2hvd09wdGlvbkNvdW50c1wiXSkge1xuICAgICAgdGhpcy5zaG93T3B0aW9uQ291bnRzJC5uZXh0KHRoaXMuc2hvd09wdGlvbkNvdW50cyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzW1wibW9kZVwiXSAmJiAhY2hhbmdlc1tcIm1vZGVcIl0uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuYXBwbHlNb2RlKCk7XG4gICAgfVxuICAgIC8vIFJlLWJpbmQgdm0kIHdoZW4gdGhlIGNvbnRyb2xsZXIgQElucHV0IGlzIHN3YXBwZWQgKGUuZy4gYSBtdWx0aS1zdGVwIGZvcm1cbiAgICAvLyB0b2dnbGluZyBiZXR3ZWVuIGNvbnRyb2xsZXJzKS4gV2l0aG91dCB0aGlzLCB2bSQgc3RheXMgc3Vic2NyaWJlZCB0byB0aGVcbiAgICAvLyBwcmV2aW91cyBjb250cm9sbGVyJ3MgZHJvcGRvd24kIOKAlCByZW5kZXJpbmcgc3RhbGUgb3B0aW9ucywgb3IsIGlmIHRoYXRcbiAgICAvLyBjb250cm9sbGVyIHdhcyBkZXN0cm95KCktZWQsIHJlY2VpdmluZyBhIGNvbXBsZXRpb24gdGhhdCBjb2xsYXBzZXMgdGhlXG4gICAgLy8gZHJvcGRvd24gcGVybWFuZW50bHkuIFNraXAgdGhlIGZpcnN0IGNoYW5nZTogbmdPbkNoYW5nZXMgZmlyZXMgYmVmb3JlXG4gICAgLy8gbmdPbkluaXQsIHdoaWNoIG93bnMgdGhlIGluaXRpYWwgY3JlYXRpb24uXG4gICAgaWYgKGNoYW5nZXNbXCJjb250cm9sbGVyXCJdICYmICFjaGFuZ2VzW1wiY29udHJvbGxlclwiXS5maXJzdENoYW5nZSAmJiB0aGlzLmNvbnRyb2xsZXIpIHtcbiAgICAgIHRoaXMuaW5pdFZtKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEtlZXAgdGhlIGNvcmUncyBcIm1vcmUgYmVsb3dcIiBhcnJvdyBjb250cm9sbGVyIGJvdW5kIHRvIHdoaWNoZXZlciBvcHRpb25zXG4gICAqIGdyaWQgaXMgY3VycmVudGx5IHJlbmRlcmVkIOKAlCB0aGUgQW5ndWxhciBhbmFsb2d1ZSBvZiBSZWFjdCdzXG4gICAqIHVzZVNjcm9sbEFycm93LiBUaGUgY29udHJvbGxlciBvd25zIHRoZSBiZWhhdmlvdXIgKG1lYXN1cmluZywgdmlzaWJpbGl0eSxcbiAgICogdGhlIHBhZ2Utc2Nyb2xsIG9uIGNsaWNrIOKAlCBzZWUgdGhlIGNvcmUncyBzY3JvbGxBcnJvdy50cyk7IHRoaXMgb25seSBoYW5kc1xuICAgKiBpdCB0aGUgbGl2ZSBlbGVtZW50cyBhZnRlciBlYWNoIHZpZXcgY2hlY2ssIHJlLWF0dGFjaGluZyB3aGVuIHRoZSBncmlkXG4gICAqIGVsZW1lbnQgaXMgcmVwbGFjZWQgYW5kIHRlYXJpbmcgZG93biB3aGVuIHRoZXJlIGlzIG5vIGdyaWQuXG4gICAqL1xuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZHJvcGRvd25Sb290UmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuc2Nyb2xsQXJyb3dSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgZ3JpZCA9IHJvb3Q/LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFwiLmFpYS1ncmlkW2RhdGEtc2Nyb2xsXVwiKSA/PyBudWxsO1xuICAgIGlmICh0aGlzLnNjcm9sbEFycm93QmluZGluZyAmJiB0aGlzLnNjcm9sbEFycm93QmluZGluZy5ncmlkICE9PSBncmlkKSB7XG4gICAgICB0aGlzLnNjcm9sbEFycm93QmluZGluZy5jb250cm9sbGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuc2Nyb2xsQXJyb3dCaW5kaW5nID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKCFyb290IHx8ICFidXR0b24gfHwgIWdyaWQpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuc2Nyb2xsQXJyb3dCaW5kaW5nKSB7XG4gICAgICB0aGlzLnNjcm9sbEFycm93QmluZGluZyA9IHtcbiAgICAgICAgZ3JpZCxcbiAgICAgICAgY29udHJvbGxlcjogYXR0YWNoU2Nyb2xsQXJyb3coeyBkcm9wZG93bjogcm9vdCwgZ3JpZCwgYnV0dG9uIH0pLFxuICAgICAgfTtcbiAgICAgIHJldHVybjsgLy8gYXR0YWNoKCkgcnVucyB0aGUgZmlyc3QgdXBkYXRlIGl0c2VsZlxuICAgIH1cbiAgICB0aGlzLnNjcm9sbEFycm93QmluZGluZy5jb250cm9sbGVyLnVwZGF0ZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy50ZWFyZG93bk1vZGVMaXN0ZW5lcigpO1xuICAgIHRoaXMuc2Nyb2xsQXJyb3dCaW5kaW5nPy5jb250cm9sbGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLnNjcm9sbEFycm93QmluZGluZyA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgYG1vZGVgIGlucHV0IGludG8gYHJlc29sdmVkTW9kZWAuIFVuc2V0IOKGkiBudWxsICh0aGUgZHJvcGRvd25cbiAgICogc3RheXMgY2xhc3MtbGVzcyBhbmQgaW5oZXJpdHMgZnJvbSBhIGAubWFnaWN4LWFpYWAgYW5jZXN0b3IpLiBgXCJhdXRvXCJgIHJlYWRzXG4gICAqIGBwcmVmZXJzLWNvbG9yLXNjaGVtZWAgYW5kIHRyYWNrcyBpdCBsaXZlIHZpYSBhIG1lZGlhLXF1ZXJ5IGxpc3RlbmVyLlxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy50ZWFyZG93bk1vZGVMaXN0ZW5lcigpO1xuICAgIGlmICh0aGlzLm1vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yZXNvbHZlZE1vZGUgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RlID09PSBcImxpZ2h0XCIgfHwgdGhpcy5tb2RlID09PSBcImRhcmtcIikge1xuICAgICAgdGhpcy5yZXNvbHZlZE1vZGUgPSB0aGlzLm1vZGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFwiYXV0b1wiXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIgfHwgdHlwZW9mIHdpbmRvdy5tYXRjaE1lZGlhICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRoaXMucmVzb2x2ZWRNb2RlID0gXCJsaWdodFwiO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1vZGVNcWwgPSB3aW5kb3cubWF0Y2hNZWRpYShcIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylcIik7XG4gICAgdGhpcy5yZXNvbHZlZE1vZGUgPSB0aGlzLm1vZGVNcWwubWF0Y2hlcyA/IFwiZGFya1wiIDogXCJsaWdodFwiO1xuICAgIHRoaXMubW9kZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlZE1vZGUgPSB0aGlzLm1vZGVNcWw/Lm1hdGNoZXMgPyBcImRhcmtcIiA6IFwibGlnaHRcIjtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH07XG4gICAgdGhpcy5tb2RlTXFsLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgdGhpcy5tb2RlTGlzdGVuZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZWFyZG93bk1vZGVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RlTXFsICYmIHRoaXMubW9kZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLm1vZGVNcWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCB0aGlzLm1vZGVMaXN0ZW5lcik7XG4gICAgfVxuICAgIHRoaXMubW9kZU1xbCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1vZGVMaXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBCdWlsZCB0aGUgdmlldy1tb2RlbCBzdHJlYW0gZnJvbSB0aGUgY3VycmVudCBjb250cm9sbGVyICsgc2hvd1BpbGxzJC4gKi9cbiAgcHJpdmF0ZSBpbml0Vm0oKTogdm9pZCB7XG4gICAgdGhpcy52bSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY29udHJvbGxlci5kcm9wZG93biQsXG4gICAgICB0aGlzLnNob3dQaWxscyQsXG4gICAgICB0aGlzLnNob3dTa2lwQnV0dG9uJCxcbiAgICAgIHRoaXMuc2hvd09wdGlvbkljb25zJCxcbiAgICAgIHRoaXMuc2hvd09wdGlvbkltYWdlcyQsXG4gICAgICB0aGlzLnNob3dPcHRpb25Db3VudHMkLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChbZGQsIHNob3dQaWxscywgc2hvd1NraXBCdXR0b24sIHNob3dPcHRpb25JY29ucywgc2hvd09wdGlvbkltYWdlcywgc2hvd09wdGlvbkNvdW50c10pID0+IHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVTdWdnZXN0aW9uID0gZGQuc3VnZ2VzdGlvbnNbMF07XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGFjdGl2ZVN1Z2dlc3Rpb24/Lm9wdGlvbnMgPz8gW107XG4gICAgICAgICAgY29uc3Qgc2hvd3NQaWxscyA9IHNob3dQaWxscyAmJiAoZGQucGlsbHMubGVuZ3RoID4gMCB8fCBkZC5pc0xvYWRpbmcpO1xuICAgICAgICAgIC8vIFRoZSB0cmFpbGluZyBcInNraXBcIiBidXR0b24gb25seSBtYWtlcyBzZW5zZSBuZXh0IHRvIGEgcmVhbCxcbiAgICAgICAgICAvLyBza2lwcGFibGUgcGlsbCDigJQgbmV2ZXIgb24gdGhlIGZhbGxiYWNrIHNrZWxldG9uIGJhciwgYW5kIG5ldmVyXG4gICAgICAgICAgLy8gZHVyaW5nIHJlLWVkaXQgKHRoZSBiYXIgdGhlbiBzaG93cyBhbiBhbHJlYWR5IGFuc3dlcmVkIHBhcmFtKS5cbiAgICAgICAgICAvLyBEZWxpYmVyYXRlbHkgTk9UIGdhdGVkIG9uIHNob3dzUGlsbHM6IHdpdGggcGlsbHMgcmVuZGVyZWQgZWxzZXdoZXJlXG4gICAgICAgICAgLy8gKHBpbGxQbGFjZW1lbnQgXCJpbmxpbmVcIi9cImhpZGRlblwiKSB0aGUgYmFyIHJlbmRlcnMgYXMgYSBza2lwLW9ubHlcbiAgICAgICAgICAvLyByb3cgaG9sZGluZyBqdXN0IHRoZSBidXR0b24uIEhpZGRlbiB3aGlsZSB0aGUgaW5wdXQgaXMgZW1wdHkg4oCUIHRoZVxuICAgICAgICAgIC8vIGZvb3RlciBoaW50IGRvZXNuJ3QgYWR2ZXJ0aXNlIFwi4oaSIHRvIHNraXBcIiB1bnRpbCB0aGUgdXNlciBoYXMgdHlwZWQsXG4gICAgICAgICAgLy8gc28gdGhlIHByaXN0aW5lIHN0YXJ0aW5nIHN0YXRlIHN0YXlzIGZyZWUgb2YgdGhlIGFmZm9yZGFuY2UgdG9vLlxuICAgICAgICAgIGNvbnN0IHNob3dzU2tpcCA9XG4gICAgICAgICAgICBkZC5waWxscy5sZW5ndGggPiAwICYmIHNob3dTa2lwQnV0dG9uICYmICFkZC5pc0VkaXRpbmcgJiYgIWRkLmlzSW5wdXRFbXB0eTtcbiAgICAgICAgICAvLyBFeGFjdGx5IG9uZSBib2R5IHJlbmRlcnMuIGBvcHRpb25zYCBhYm92ZSBhbHJlYWR5IGhvbGRzIHRoZSB2aXNpYmxlXG4gICAgICAgICAgLy8gbW9udGgncyBjZWxscyB3aGVuIHRoaXMgaXMgYSBkYXRlIOKAlCB0aGUgY29yZSBzd2FwcGVkIHRoZW0gaW4gaXRzXG4gICAgICAgICAgLy8gZGVyaXZlIGxheWVyIOKAlCBzbyB0aGUgdHdvIGFyZSB0aGUgc2FtZSBsaXN0IGRyYXduIHR3byBkaWZmZXJlbnRcbiAgICAgICAgICAvLyB3YXlzLCBhbmQgbmV2ZXIgYm90aCBhdCBvbmNlICh0d28gZWxlbWVudHMgYW5zd2VyaW5nIHRvIHRoZSBzYW1lXG4gICAgICAgICAgLy8gb3B0aW9uIGlkIHdvdWxkIGJyZWFrIGtleWJvYXJkIGNvbW1pdCkuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBBIGNhbGVuZGFyIGlzIHdpdGhoZWxkIHdoaWxlIGEgcmVxdWVzdCBpcyBpbiBmbGlnaHQuIFRoZSBvcHRpb25zXG4gICAgICAgICAgLy8gZ3JpZCBkcmF3cyBpdHMgY2FjaGVkIG9wdGlvbnMgYXMgc2tlbGV0b24gcm93cyBmb3IgdGhhdCB3aW5kb3csIGJ1dFxuICAgICAgICAgIC8vIGEgbW9udGggb2YgZGF5IGNlbGxzIGhhcyBubyBza2VsZXRvbiBmb3JtIHdvcnRoIGRyYXdpbmcg4oCUIGFuZCBhIGxpdmVcbiAgICAgICAgICAvLyBjYWxlbmRhciBvdmVyIGEgbG9hZGluZyBwaWxsIGJhciBpbnZpdGVzIGFuIGFuc3dlciBhZ2FpbnN0XG4gICAgICAgICAgLy8gc3VnZ2VzdGlvbnMgdGhlIHJlc3BvbnNlIGlzIGFib3V0IHRvIHJlcGxhY2UuIFRoZSBmYWxsYmFjayBiYXJzXG4gICAgICAgICAgLy8gc3RhbmQgaW4gdW50aWwgaXQgbGFuZHMuXG4gICAgICAgICAgY29uc3QgaXNEYXRlID0gaXNDYWxlbmRhckZvcm1hdChkZC5mb3JtYXRUeXBlID8/IFwib3B0aW9uc1wiKSAmJiBkZC5kYXRlVmlldyAhPSBudWxsO1xuICAgICAgICAgIGNvbnN0IHNob3dzT3B0aW9ucyA9IG9wdGlvbnMubGVuZ3RoID4gMCAmJiAhaXNEYXRlO1xuICAgICAgICAgIGNvbnN0IHNob3dzRGF0ZUdyaWQgPSBvcHRpb25zLmxlbmd0aCA+IDAgJiYgaXNEYXRlICYmICFkZC5pc0xvYWRpbmc7XG4gICAgICAgICAgY29uc3Qgc2hvd3NGYWxsYmFja1NrZWxldG9uID0gZGQuaXNMb2FkaW5nICYmICFzaG93c09wdGlvbnMgJiYgIXNob3dzRGF0ZUdyaWQ7XG4gICAgICAgICAgLy8gRWl0aGVyIGhhbGYgaXMgZW5vdWdoIHRvIGtlZXAgdGhlIHBhbmVsIHVwOiBwcm9kdWN0cyByZW5kZXIgd2l0aCBub1xuICAgICAgICAgIC8vIHN1Z2dlc3Rpb25zLCBzdWdnZXN0aW9ucyByZW5kZXIgd2l0aCBubyBwcm9kdWN0cy5cbiAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPVxuICAgICAgICAgICAgZGQuaXNPcGVuICYmXG4gICAgICAgICAgICAoc2hvd3NPcHRpb25zIHx8IHNob3dzRGF0ZUdyaWQgfHwgc2hvd3NQaWxscyB8fCBkZC5pc0xvYWRpbmcgfHwgZGQucHJvZHVjdHMubGVuZ3RoID4gMCk7XG5cbiAgICAgICAgICAvLyBXaGlsZSBjbG9zaW5nLCByZXVzZSB0aGUgbGFzdCB2aXNpYmxlIGNvbnRlbnQgc28gdGhlIHBvcHVsYXRlZFxuICAgICAgICAgIC8vIGRyb3Bkb3duIGZhZGVzIG91dCBhcyBvbmUuIE90aGVyd2lzZSB0aGUgcGlsbHMvb3B0aW9ucyB2YW5pc2ggdGhlXG4gICAgICAgICAgLy8gaW5zdGFudCB0aGUgc3RhdGUgZW1wdGllcyAoZS5nLiBza2lwcGluZyB0aGUgbGFzdCBwaWxsIHdpdGgg4oaSKSxcbiAgICAgICAgICAvLyBsZWF2aW5nIHRoZSBhbHdheXMtcHJlc2VudCBmb290ZXIgYWxvbmUgZm9yIGEgZmxhc2ggb2YgYSBmb290ZXItb25seVxuICAgICAgICAgIC8vIFwibm8gb3B0aW9uc1wiIGJveCBtaWQtZmFkZS4gT25seSBgaXNWaXNpYmxlYCB0cmFja3MgbGl2ZSBzdGF0ZSB0b1xuICAgICAgICAgIC8vIGRyaXZlIHRoZSBvcGFjaXR5IHRyYW5zaXRpb24uXG4gICAgICAgICAgaWYgKCFpc1Zpc2libGUgJiYgdGhpcy5sYXN0VmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnRoaXMubGFzdFZpc2libGVDb250ZW50LCBpc1Zpc2libGU6IGZhbHNlIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgb3B0aW9uSGlnaGxpZ2h0ZWQgPVxuICAgICAgICAgICAgZGQuYWN0aXZlSW5kZXggPj0gMCAmJiBCb29sZWFuKG9wdGlvbnNbZGQuYWN0aXZlSW5kZXhdPy5pc190YXBwYWJsZSk7XG4gICAgICAgICAgY29uc3QgeyBrZXk6IGZvb3RlcktleSwgaGludDogZm9vdGVySGludCB9ID0gZ2V0Rm9vdGVySGludChcbiAgICAgICAgICAgIG9wdGlvbkhpZ2hsaWdodGVkLFxuICAgICAgICAgICAgZGQuaXNJbnB1dEVtcHR5LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgY29udGVudDogRHJvcGRvd25Db250ZW50ID0ge1xuICAgICAgICAgICAgcGlsbHM6IGRkLnBpbGxzLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGFjdGl2ZUluZGV4OiBkZC5hY3RpdmVJbmRleCxcbiAgICAgICAgICAgIGlzQWN0aXZlUGlsbFNlbGVjdGVkOiBkZC5pc0FjdGl2ZVBpbGxTZWxlY3RlZCxcbiAgICAgICAgICAgIGlzTG9hZGluZzogZGQuaXNMb2FkaW5nLFxuICAgICAgICAgICAgc2tlbGV0b25FeGl0aW5nOiBCb29sZWFuKGRkLnNrZWxldG9uRXhpdGluZyksXG4gICAgICAgICAgICBzaG93c1BpbGxzLFxuICAgICAgICAgICAgc2hvd3NTa2lwLFxuICAgICAgICAgICAgc2tpcERpc2FibGVkOiBkZC5pc0xvYWRpbmcgfHwgQm9vbGVhbihkZC5pblNlbGVjdGlvbkFuaW1hdGlvbiksXG4gICAgICAgICAgICBhY3RpdmVQaWxsTGFiZWw6IGRkLnBpbGxzWzBdPy50ZXh0ID8/IFwiXCIsXG4gICAgICAgICAgICBzaG93c09wdGlvbnMsXG4gICAgICAgICAgICBzaG93c0RhdGVHcmlkLFxuICAgICAgICAgICAgZGF0ZVZpZXc6IGRkLmRhdGVWaWV3ID8/IG51bGwsXG4gICAgICAgICAgICBkYXRlU2VsZWN0aW9uOiB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXNvOiBkZC5zZWxlY3RlZERhdGVJc28gPz8gbnVsbCxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZTogZGQuc2VsZWN0ZWREYXRlUmFuZ2UgPz8gbnVsbCxcbiAgICAgICAgICAgICAgcmFuZ2VTdGFydDogZGQuZGF0ZVJhbmdlU3RhcnQgPz8gbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaG93c0ZhbGxiYWNrU2tlbGV0b24sXG4gICAgICAgICAgICBwcm9kdWN0czogZGQucHJvZHVjdHMsXG4gICAgICAgICAgICBncm91cEtleTogYWN0aXZlU3VnZ2VzdGlvbiA/IGAke2FjdGl2ZVN1Z2dlc3Rpb24udHlwZX0gJHthY3RpdmVTdWdnZXN0aW9uLnRleHR9YCA6IFwiXCIsXG4gICAgICAgICAgICBmb290ZXJLZXksXG4gICAgICAgICAgICBmb290ZXJIaW50LFxuICAgICAgICAgICAgb3B0aW9uc1Bvc2l0aW9uOiBkZC5vcHRpb25zUG9zaXRpb24sXG4gICAgICAgICAgICBzaG93T3B0aW9uSWNvbnMsXG4gICAgICAgICAgICBzaG93T3B0aW9uSW1hZ2VzLFxuICAgICAgICAgICAgc2hvd09wdGlvbkNvdW50cyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChpc1Zpc2libGUpIHRoaXMubGFzdFZpc2libGVDb250ZW50ID0gY29udGVudDtcbiAgICAgICAgICByZXR1cm4geyAuLi5jb250ZW50LCBpc1Zpc2libGUgfTtcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHRyYWNrQnlXaWR0aCA9IChfOiBudW1iZXIsIHc6IG51bWJlcik6IG51bWJlciA9PiB3O1xuXG4gIG9uUGlsbENsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2V0QWN0aXZlUGlsbChpbmRleCk7XG4gIH1cblxuICBvblNraXAoKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sbGVyLnNraXBBY3RpdmVQaWxsKCk7XG4gIH1cblxuICBvblNlbGVjdChvcHRpb246IFN1Z2dlc3Rpb25PcHRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2VsZWN0T3B0aW9uKG9wdGlvbik7XG4gIH1cblxuICBvblByZXZpb3VzTW9udGgoKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sbGVyLnNob3dQcmV2aW91c01vbnRoKCk7XG4gIH1cblxuICBvbk5leHRNb250aCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIuc2hvd05leHRNb250aCgpO1xuICB9XG5cbiAgb25IaWdobGlnaHQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5zZXRBY3RpdmVEcm9wZG93bkluZGV4KGluZGV4KTtcbiAgfVxuXG4gIG9uUHJvZHVjdFNlbGVjdChwcm9kdWN0OiBQcm9kdWN0KTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sbGVyLnNlbGVjdFByb2R1Y3QocHJvZHVjdCk7XG4gIH1cblxuICAvKipcbiAgICogQSBjYXJkIHRha2luZyBmb2N1cyBibHVycyB0aGUgZWRpdG9yLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgY2xvc2UgdGhlXG4gICAqIHBhbmVsIG91dCBmcm9tIHVuZGVyIHRoZSBjYXJkIHRoZSB1c2VyIGp1c3QgdGFiYmVkIHRvLlxuICAgKi9cbiAgb25Qcm9kdWN0Rm9jdXNDaGFuZ2UoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbGxlci5zZXRGb2N1c2VkKGZvY3VzZWQpO1xuICB9XG5cbiAgcHJldmVudEJsdXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgLy8gUHJldmVudCB0aGUgZWRpdG9yIGZyb20gbG9zaW5nIGZvY3VzIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZHJvcGRvd24uXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cInZtJCB8IGFzeW5jIGFzIHZtXCJcbiAgI2Ryb3Bkb3duUm9vdFxuICBbaWRdPVwiY29udHJvbGxlci5saXN0Ym94SWRcIlxuICByb2xlPVwibGlzdGJveFwiXG4gIGRhdGEtYWlhLWRyb3Bkb3duPVwiXCJcbiAgW2F0dHIuZGF0YS1haWEtbG9hZGluZ109XCJ2bS5pc0xvYWRpbmcgPyAnJyA6IG51bGxcIlxuICBbYXR0ci5kYXRhLWFpYS1za2VsZXRvbi1leGl0aW5nXT1cInZtLnNrZWxldG9uRXhpdGluZyA/ICcnIDogbnVsbFwiXG4gIFthdHRyLmRhdGEtbW9kZV09XCJyZXNvbHZlZE1vZGVcIlxuICBbYXR0ci5kYXRhLW9wdGlvbnMtcG9zaXRpb25dPVwidm0ub3B0aW9uc1Bvc2l0aW9uXCJcbiAgW2F0dHIuZGF0YS1haWEtaGFzLXByb2R1Y3RzXT1cInZtLnByb2R1Y3RzLmxlbmd0aCA+IDAgPyAnJyA6IG51bGxcIlxuICBbY2xhc3NdPVwicm9vdENsYXNzXCJcbiAgW2NsYXNzLm1hZ2ljeC1haWEtZHJvcGRvd24tdmlzaWJsZV09XCJ2bS5pc1Zpc2libGVcIlxuICAobW91c2Vkb3duKT1cInByZXZlbnRCbHVyKCRldmVudClcIlxuPlxuICA8YWlhLXN0YWNrIHNwYWNlPVwiOHB4XCI+XG4gICAgPGFpYS1jbHVzdGVyXG4gICAgICAqbmdJZj1cInZtLnNob3dzUGlsbHMgfHwgdm0uc2hvd3NTa2lwXCJcbiAgICAgIGNsYXNzPVwibWFnaWN4LWFpYS1kcm9wZG93bi1waWxsYmFyXCJcbiAgICAgIGRhdGEtYWlhLXBpbGxiYXI9XCJcIlxuICAgICAgW25vV3JhcF09XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8IS0tIFRoZSBzY3JvbGwgKyByaWdodC1lZGdlIGZhZGUgbGl2ZSBvbiB0aGlzIHdyYXBwZXIgKG5vdCB0aGUgYmFyKSBzb1xuICAgICAgICAgICB0aGUgc2tpcCBidXR0b24gc3RheXMgb3V0c2lkZSB0aGUgbWFza2VkIHJlZ2lvbiDigJQgcGlubmVkIGFuZCBmdWxseVxuICAgICAgICAgICBvcGFxdWUgd2hpbGUgb3ZlcmZsb3dpbmcgcGlsbHMgZmFkZSB1bmRlciBpdC4gQWJzZW50IGluIGEgc2tpcC1vbmx5XG4gICAgICAgICAgIHJvdyAocGlsbHMgcmVuZGVyZWQgZWxzZXdoZXJlIHZpYSBwaWxsUGxhY2VtZW50IGlubGluZS9oaWRkZW4pLiAtLT5cbiAgICAgIDxzcGFuICpuZ0lmPVwidm0uc2hvd3NQaWxsc1wiIGNsYXNzPVwibWFnaWN4LWFpYS1waWxsLXNjcm9sbFwiIGRhdGEtYWlhLXBpbGwtc2Nyb2xsPVwiXCI+XG4gICAgICAgIDxhaWEtcGlsbC1saXN0XG4gICAgICAgICAgW3BpbGxzXT1cInZtLnBpbGxzXCJcbiAgICAgICAgICBbYWN0aXZlUGlsbEluZGV4XT1cIjBcIlxuICAgICAgICAgIFthY3RpdmVTZWxlY3RlZF09XCJ2bS5pc0FjdGl2ZVBpbGxTZWxlY3RlZFwiXG4gICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2xvYWRpbmddPVwidm0uaXNMb2FkaW5nXCJcbiAgICAgICAgICAoc2VsZWN0UGlsbCk9XCJvblBpbGxDbGljaygkZXZlbnQpXCJcbiAgICAgICAgPjwvYWlhLXBpbGwtbGlzdD5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJ2bS5zaG93c1NraXBcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwibWFnaWN4LWFpYS1za2lwXCJcbiAgICAgICAgZGF0YS1haWEtc2tpcD1cIlwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJ2bS5za2lwRGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInZtLmFjdGl2ZVBpbGxMYWJlbCA/ICdTa2lwICcgKyB2bS5hY3RpdmVQaWxsTGFiZWwgOiAnU2tpcCdcIlxuICAgICAgICAoY2xpY2spPVwib25Ta2lwKClcIlxuICAgICAgPlxuICAgICAgICBza2lwXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2FpYS1jbHVzdGVyPlxuXG4gICAgPGFpYS1zdWdnZXN0aW9uLWdyaWRcbiAgICAgICpuZ0lmPVwidm0uc2hvd3NPcHRpb25zXCJcbiAgICAgIFtvcHRpb25zXT1cInZtLm9wdGlvbnNcIlxuICAgICAgW2FjdGl2ZUluZGV4XT1cInZtLmFjdGl2ZUluZGV4XCJcbiAgICAgIFtsaXN0Ym94SWRdPVwiY29udHJvbGxlci5saXN0Ym94SWRcIlxuICAgICAgW2xvYWRpbmddPVwidm0uaXNMb2FkaW5nXCJcbiAgICAgIFtncm91cEtleV09XCJ2bS5ncm91cEtleVwiXG4gICAgICBbb3B0aW9uc1Bvc2l0aW9uXT1cInZtLm9wdGlvbnNQb3NpdGlvblwiXG4gICAgICBbc2hvd0ljb25zXT1cInZtLnNob3dPcHRpb25JY29uc1wiXG4gICAgICBbc2hvd0ltYWdlc109XCJ2bS5zaG93T3B0aW9uSW1hZ2VzXCJcbiAgICAgIFtzaG93Q291bnRzXT1cInZtLnNob3dPcHRpb25Db3VudHNcIlxuICAgICAgKHNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgIChoaWdobGlnaHQpPVwib25IaWdobGlnaHQoJGV2ZW50KVwiXG4gICAgPjwvYWlhLXN1Z2dlc3Rpb24tZ3JpZD5cblxuICAgIDxhaWEtZGF0ZS1ncmlkXG4gICAgICAqbmdJZj1cInZtLnNob3dzRGF0ZUdyaWRcIlxuICAgICAgW29wdGlvbnNdPVwidm0ub3B0aW9uc1wiXG4gICAgICBbYWN0aXZlSW5kZXhdPVwidm0uYWN0aXZlSW5kZXhcIlxuICAgICAgW2xpc3Rib3hJZF09XCJjb250cm9sbGVyLmxpc3Rib3hJZFwiXG4gICAgICBbdmlld109XCJ2bS5kYXRlVmlld1wiXG4gICAgICBbc2VsZWN0aW9uXT1cInZtLmRhdGVTZWxlY3Rpb25cIlxuICAgICAgKHNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgIChoaWdobGlnaHQpPVwib25IaWdobGlnaHQoJGV2ZW50KVwiXG4gICAgICAocHJldmlvdXNNb250aCk9XCJvblByZXZpb3VzTW9udGgoKVwiXG4gICAgICAobmV4dE1vbnRoKT1cIm9uTmV4dE1vbnRoKClcIlxuICAgID48L2FpYS1kYXRlLWdyaWQ+XG5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInZtLnNob3dzRmFsbGJhY2tTa2VsZXRvblwiXG4gICAgICBjbGFzcz1cIm1hZ2ljeC1haWEtZHJvcGRvd24tc2tlbGV0b24tYmFyc1wiXG4gICAgICBkYXRhLWFpYS1za2VsZXRvbi1iYXJzPVwiXCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICAqbmdGb3I9XCJsZXQgdyBvZiBmYWxsYmFja1NrZWxldG9uQmFyV2lkdGhzOyB0cmFja0J5OiB0cmFja0J5V2lkdGhcIlxuICAgICAgICBjbGFzcz1cIm1hZ2ljeC1haWEtZHJvcGRvd24tc2tlbGV0b24tYmFyXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIndcIlxuICAgICAgPjwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gKm5nSWYsIG5vdCBqdXN0IHRoZSBzZWN0aW9uJ3Mgb3duIGd1YXJkIGluc2lkZSB0aGUgY29tcG9uZW50OiB0aGUgaG9zdFxuICAgICAgICAgZWxlbWVudCBpcyBhbiBpbi1mbG93IGNoaWxkIG9mIC5haWEtc3RhY2sgKGRpc3BsYXk6ZmxleDsgZ2FwOjhweCksIHNvXG4gICAgICAgICBhbiBhbHdheXMtaW5zdGFudGlhdGVkIHplcm8taGVpZ2h0IGhvc3Qgd291bGQgYWRkIGEgU0VDT05EIDhweCBnYXBcbiAgICAgICAgIGJldHdlZW4gdGhlIGdyaWQgYW5kIHRoZSBmb290ZXIg4oCUIGluIGV2ZXJ5IGRyb3Bkb3duLCBwcm9kdWN0cyBvciBub3QuXG4gICAgICAgICBUaGUgZ3JpZCdzIC0tYWlhLWdyaWQtb3ZlcmxhcC1ib3R0b20gaXMgdHVuZWQgZm9yIGV4YWN0bHkgb25lIGdhcCwgc29cbiAgICAgICAgIHRoZSBmb290ZXIgd291bGQgbGFuZCA4cHggYmVsb3cgdGhlIGJhbmQgaXQgaXMgbWVhbnQgdG8gY292ZXIuIC0tPlxuICAgIDxhaWEtcHJvZHVjdC1zdHJpcFxuICAgICAgKm5nSWY9XCJ2bS5wcm9kdWN0cy5sZW5ndGggPiAwXCJcbiAgICAgIFtwcm9kdWN0c109XCJ2bS5wcm9kdWN0c1wiXG4gICAgICBbbGlzdGJveElkXT1cImNvbnRyb2xsZXIubGlzdGJveElkXCJcbiAgICAgIFtmb2N1c2FibGVdPVwidm0uaXNWaXNpYmxlXCJcbiAgICAgIFtsYXlvdXRdPVwicHJvZHVjdHNMYXlvdXRcIlxuICAgICAgKHNlbGVjdCk9XCJvblByb2R1Y3RTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAoZm9jdXNDaGFuZ2UpPVwib25Qcm9kdWN0Rm9jdXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwvYWlhLXByb2R1Y3Qtc3RyaXA+XG5cbiAgICA8Zm9vdGVyIGNsYXNzPVwibWFnaWN4LWFpYS1mb290ZXJcIiBkYXRhLWFpYS1mb290ZXI9XCJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYWdpY3gtYWlhLWZvb3Rlci1yb3dcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWdpY3gtYWlhLWZvb3Rlci1oaW50LWdyb3VwXCI+XG4gICAgICAgICAgPGtiZCBjbGFzcz1cIm1hZ2ljeC1haWEtZm9vdGVyLWtleVwiPnt7IHZtLmZvb3RlcktleSB9fTwva2JkPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFnaWN4LWFpYS1mb290ZXItaGludFwiPnt7IHZtLmZvb3RlckhpbnQgfX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cIm1hZ2ljeC1haWEtZm9vdGVyLWJyYW5kLWxpbmtcIlxuICAgICAgICAgIFtocmVmXT1cImJyYW5kSHJlZlwiXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFnaWN4LWFpYS1mb290ZXItYnJhbmRcIj5BSTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hZ2ljeC1haWEtZm9vdGVyLWJhZGdlXCI+QXV0b2NvbXBsZXRlPC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9haWEtc3RhY2s+XG4gIDwhLS0gXCJNb3JlIGJlbG93XCIgYXJyb3cg4oCUIGFuIG92ZXJsYXkgb24gdGhlIHBhbmVsLCBub3QgYSBzZWN0aW9uIG9mIHRoZVxuICAgICAgIHN0YWNrLiBTaG93bi9wb3NpdGlvbmVkIGJ5IHRoZSBjb3JlJ3Mgc2Nyb2xsLWFycm93IGNvbnRyb2xsZXIgKHNlZVxuICAgICAgIHN5bmNTY3JvbGxBcnJvdyk7IG1hcmt1cCBtaXJyb3JzIHZhbmlsbGEncyBjcmVhdGVTY3JvbGxBcnJvd0J1dHRvbi4gLS0+XG4gIDxidXR0b25cbiAgICAjc2Nyb2xsQXJyb3dcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBjbGFzcz1cIm1hZ2ljeC1haWEtc2Nyb2xsLWFycm93XCJcbiAgICBkYXRhLWFpYS1zY3JvbGwtYXJyb3c9XCJcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic2Nyb2xsQXJyb3dMYWJlbFwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgPlxuICAgIDxzdmdcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgd2lkdGg9XCIxOFwiXG4gICAgICBoZWlnaHQ9XCIxOFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMS43NVwiXG4gICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgPlxuICAgICAgPHBhdGggZD1cIk00IDYuNSA4IDEwLjVsNC00XCIgLz5cbiAgICA8L3N2Zz5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==