@sbb-esta/lyne-elements-dev 5.0.0-next-dev.1776736853 → 5.0.0-next-dev.1776760633
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/autocomplete-base-element.js +1 -1
- package/autocomplete/autocomplete.component.js +1 -1
- package/{autocomplete-base-element-B7fDDO1F.js → autocomplete-base-element-gPLexIVc.js} +1 -1
- package/autocomplete.js +1 -1
- package/autocomplete.pure.js +1 -1
- package/core/overlay/overlay-trigger-attributes.js +3 -3
- package/core/styles/host-scrollbar.scss +6 -0
- package/core/styles/mixins/scrollbar.scss +5 -8
- package/core/styles/scrollbar.scss +10 -8
- package/core/styles/styles.js +2 -2
- package/core.css +2 -2
- package/core.js +3 -3
- package/custom-elements.json +26 -14
- package/datepicker/datepicker/datepicker.component.js +1 -1
- package/{datepicker.component-BBmEvmW3.js → datepicker.component-CNQGkdr-.js} +11 -11
- package/datepicker.js +1 -1
- package/datepicker.pure.js +1 -1
- package/development/autocomplete/autocomplete-base-element.js +1 -1
- package/development/autocomplete/autocomplete.component.js +1 -1
- package/development/{autocomplete-base-element-DnpaK_k3.js → autocomplete-base-element-8hV4-ys6.js} +2 -2
- package/development/autocomplete.js +1 -1
- package/development/autocomplete.pure.js +1 -1
- package/development/core/overlay/overlay-trigger-attributes.d.ts +4 -4
- package/development/core/overlay/overlay-trigger-attributes.d.ts.map +1 -1
- package/development/core/overlay/overlay-trigger-attributes.js +12 -12
- package/development/core/styles/styles.d.ts +1 -0
- package/development/core/styles/styles.d.ts.map +1 -1
- package/development/core/styles/styles.js +2 -2
- package/development/core.js +3 -3
- package/development/datepicker/datepicker/datepicker.component.d.ts.map +1 -1
- package/development/datepicker/datepicker/datepicker.component.js +1 -1
- package/development/datepicker.component-Chnvwnp7.js +212 -0
- package/development/datepicker.js +1 -1
- package/development/datepicker.pure.js +1 -1
- package/development/dialog/dialog/dialog.component.d.ts +0 -1
- package/development/dialog/dialog/dialog.component.d.ts.map +1 -1
- package/development/dialog/dialog/dialog.component.js +1 -1
- package/development/dialog/dialog-content/dialog-content.component.d.ts +1 -0
- package/development/dialog/dialog-content/dialog-content.component.d.ts.map +1 -1
- package/development/dialog/dialog-content/dialog-content.component.js +1 -1
- package/development/dialog-content.component-DlSxpY_e.js +34 -0
- package/development/{dialog.component-BYVTZAUU.js → dialog.component-B4cZfRCl.js} +1 -6
- package/development/dialog.js +2 -2
- package/development/dialog.pure.js +2 -2
- package/development/header/header/header.component.d.ts.map +1 -1
- package/development/header/header/header.component.js +1 -1
- package/development/{header.component-Hfgz9sSb.js → header.component-B2T2pmHs.js} +2 -3
- package/development/header.js +1 -1
- package/development/header.pure.js +1 -1
- package/development/icon-sidebar/icon-sidebar/icon-sidebar.component.d.ts.map +1 -1
- package/development/icon-sidebar/icon-sidebar/icon-sidebar.component.js +1 -1
- package/development/icon-sidebar/icon-sidebar-content/icon-sidebar-content.component.d.ts.map +1 -1
- package/development/icon-sidebar/icon-sidebar-content/icon-sidebar-content.component.js +1 -1
- package/development/icon-sidebar-content.component-CfkM9k--.js +35 -0
- package/development/{icon-sidebar.component-xzwoc_4y.js → icon-sidebar.component-Cgvuxg4k.js} +3 -3
- package/development/icon-sidebar.js +2 -2
- package/development/icon-sidebar.pure.js +2 -2
- package/development/map-container/map-container.component.js +1 -1
- package/development/{map-container.component-mzZ_K_fR.js → map-container.component-rgU7ZofE.js} +2 -2
- package/development/map-container.js +1 -1
- package/development/map-container.pure.js +1 -1
- package/development/menu/common/menu-action-common.js +1 -1
- package/development/menu/menu/menu.component.d.ts.map +1 -1
- package/development/menu/menu/menu.component.js +1 -1
- package/development/menu-action-common-CEnwq60Z.js +32 -0
- package/development/menu.component-DbNRrGYy.js +365 -0
- package/development/menu.js +2 -2
- package/development/menu.pure.js +2 -2
- package/development/navigation/navigation/navigation.component.d.ts.map +1 -1
- package/development/navigation/navigation/navigation.component.js +1 -1
- package/development/navigation/navigation-section/navigation-section.component.d.ts.map +1 -1
- package/development/navigation/navigation-section/navigation-section.component.js +1 -1
- package/development/{navigation-section.component-C_9myQKr.js → navigation-section.component-BSvxMUxM.js} +7 -9
- package/development/{navigation.component-C8MhqBLY.js → navigation.component-lgvLMF5e.js} +7 -9
- package/development/navigation.js +2 -2
- package/development/navigation.pure.js +2 -2
- package/development/overlay/overlay-base-element.d.ts.map +1 -1
- package/development/overlay/overlay-base-element.js +6 -6
- package/development/overlay/overlay.component.d.ts +0 -1
- package/development/overlay/overlay.component.d.ts.map +1 -1
- package/development/overlay/overlay.component.js +1 -1
- package/development/overlay.component-iy6QUYWU.js +211 -0
- package/development/overlay.js +1 -1
- package/development/overlay.pure.js +1 -1
- package/development/popover/popover.component.d.ts.map +1 -1
- package/development/popover/popover.component.js +1 -1
- package/development/popover.component-C-zVDwjc.js +527 -0
- package/development/popover.js +1 -1
- package/development/popover.pure.js +1 -1
- package/development/select/select.component.js +1 -1
- package/development/{select.component-CqwBdtsN.js → select.component-Ibby7Q-L.js} +2 -2
- package/development/select.js +1 -1
- package/development/select.pure.js +1 -1
- package/development/sidebar/sidebar/sidebar.component.js +1 -1
- package/development/sidebar/sidebar-content/sidebar-content.component.d.ts +1 -2
- package/development/sidebar/sidebar-content/sidebar-content.component.d.ts.map +1 -1
- package/development/sidebar/sidebar-content/sidebar-content.component.js +1 -1
- package/development/{sidebar-content.component-Os9gd7zB.js → sidebar-content.component-DbcREBUa.js} +8 -5
- package/development/{sidebar.component-CwuT6dno.js → sidebar.component-zMWbdz0h.js} +2 -2
- package/development/sidebar.js +2 -2
- package/development/sidebar.pure.js +2 -2
- package/development/{step-label.component-CxqPgbzK.js → step-label.component-B7M9Yqyz.js} +1 -3
- package/development/{step.component-B2qbHl0l.js → step.component-CVWxYkrv.js} +1 -3
- package/development/stepper/step/step.component.d.ts.map +1 -1
- package/development/stepper/step/step.component.js +1 -1
- package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
- package/development/stepper/step-label/step-label.component.js +1 -1
- package/development/stepper.js +2 -2
- package/development/stepper.pure.js +2 -2
- package/development/styles-DcuJgwEt.js +14 -0
- package/development/tab.component-BVhYPy5Y.js +68 -0
- package/development/table/table-wrapper/table-wrapper.component.d.ts.map +1 -1
- package/development/table/table-wrapper/table-wrapper.component.js +1 -1
- package/development/table-wrapper.component-DcLwEDzr.js +119 -0
- package/development/table.js +1 -1
- package/development/table.pure.js +1 -1
- package/development/tabs/tab/tab.component.d.ts.map +1 -1
- package/development/tabs/tab/tab.component.js +1 -1
- package/development/tabs.js +1 -1
- package/development/tabs.pure.js +1 -1
- package/development/tooltip/tooltip.component.d.ts.map +1 -1
- package/development/tooltip/tooltip.component.js +1 -1
- package/development/tooltip.component-lvElko6C.js +369 -0
- package/development/tooltip.js +1 -1
- package/development/tooltip.pure.js +1 -1
- package/development/train/train-formation/train-formation.component.js +1 -1
- package/development/{train-formation.component-CfdHRBsd.js → train-formation.component-BoQcwy6n.js} +2 -2
- package/development/train.js +1 -1
- package/development/train.pure.js +1 -1
- package/dialog/dialog/dialog.component.js +1 -1
- package/dialog/dialog-content/dialog-content.component.js +1 -1
- package/dialog-content.component-C_Gr8BNL.js +22 -0
- package/{dialog.component-ca14M0hZ.js → dialog.component-DTbAHlVd.js} +7 -10
- package/dialog.js +2 -2
- package/dialog.pure.js +2 -2
- package/header/header/header.component.js +1 -1
- package/{header.component-BxizSy1O.js → header.component-D-WVEMFn.js} +2 -2
- package/header.js +1 -1
- package/header.pure.js +1 -1
- package/icon-sidebar/icon-sidebar/icon-sidebar.component.js +1 -1
- package/icon-sidebar/icon-sidebar-content/icon-sidebar-content.component.js +1 -1
- package/{icon-sidebar-content.component-DlUqWEAX.js → icon-sidebar-content.component-lFstg91Y.js} +9 -5
- package/{icon-sidebar.component-DbA4omxc.js → icon-sidebar.component-D0TtF-kR.js} +11 -11
- package/icon-sidebar.js +2 -2
- package/icon-sidebar.pure.js +2 -2
- package/map-container/map-container.component.js +1 -1
- package/{map-container.component-Cqn9mKoo.js → map-container.component-De-8Tsau.js} +1 -1
- package/map-container.js +1 -1
- package/map-container.pure.js +1 -1
- package/menu/common/menu-action-common.js +1 -1
- package/menu/menu/menu.component.js +1 -1
- package/{menu-action-common-DY4RrfCy.js → menu-action-common-krzD_Ca2.js} +1 -1
- package/{menu.component-XvtyRok7.js → menu.component-KdXwqe55.js} +15 -15
- package/menu.js +2 -2
- package/menu.pure.js +2 -2
- package/navigation/navigation/navigation.component.js +1 -1
- package/navigation/navigation-section/navigation-section.component.js +1 -1
- package/{navigation-section.component-CLcdmPV3.js → navigation-section.component-DrnbQAZX.js} +17 -17
- package/{navigation.component-Cnyb5_4R.js → navigation.component-D6HU-F51.js} +16 -16
- package/navigation.js +2 -2
- package/navigation.pure.js +2 -2
- package/off-brand-theme.css +53 -55
- package/overlay/overlay-base-element.js +4 -4
- package/overlay/overlay.component.js +1 -1
- package/overlay.component-bHg2Xk6D.js +161 -0
- package/overlay.js +1 -1
- package/overlay.pure.js +1 -1
- package/package.json +2 -2
- package/popover/popover.component.js +1 -1
- package/{popover.component-BfSXNxKK.js → popover.component-BCLBnddM.js} +12 -12
- package/popover.js +1 -1
- package/popover.pure.js +1 -1
- package/safety-theme.css +53 -55
- package/scrollbar.css +51 -53
- package/select/select.component.js +1 -1
- package/{select.component-Cu3ewc4i.js → select.component-BcDZm7EM.js} +1 -1
- package/select.js +1 -1
- package/select.pure.js +1 -1
- package/sidebar/sidebar/sidebar.component.js +1 -1
- package/sidebar/sidebar-content/sidebar-content.component.js +1 -1
- package/{sidebar-content.component-DEgmt4BB.js → sidebar-content.component-CYupfsq_.js} +9 -5
- package/{sidebar.component-Bxt8pWMf.js → sidebar.component-Sw06otwx.js} +1 -1
- package/sidebar.js +2 -2
- package/sidebar.pure.js +2 -2
- package/standard-theme.css +53 -55
- package/{step-label.component-qdfunibJ.js → step-label.component-BXg13qOD.js} +3 -3
- package/{step.component-aBAfTJyO.js → step.component-sQbJslHx.js} +3 -3
- package/stepper/step/step.component.js +1 -1
- package/stepper/step-label/step-label.component.js +1 -1
- package/stepper.js +2 -2
- package/stepper.pure.js +2 -2
- package/styles-swTeDfst.js +5 -0
- package/{tab.component-DGzqld4u.js → tab.component-D6hfhlZw.js} +6 -6
- package/table/table-wrapper/table-wrapper.component.js +1 -1
- package/{table-wrapper.component-C36NdMWS.js → table-wrapper.component-Dxb8kzV3.js} +13 -13
- package/table.js +1 -1
- package/table.pure.js +1 -1
- package/tabs/tab/tab.component.js +1 -1
- package/tabs.js +1 -1
- package/tabs.pure.js +1 -1
- package/tooltip/tooltip.component.js +1 -1
- package/{tooltip.component-C5y6zCtF.js → tooltip.component-Do4V1jGd.js} +12 -12
- package/tooltip.js +1 -1
- package/tooltip.pure.js +1 -1
- package/train/train-formation/train-formation.component.js +1 -1
- package/{train-formation.component-5AASBGSX.js → train-formation.component-B8IFJ_7b.js} +1 -1
- package/train.js +1 -1
- package/train.pure.js +1 -1
- package/development/datepicker.component-AKlc7SAO.js +0 -214
- package/development/dialog-content.component-B3VB2ptp.js +0 -30
- package/development/icon-sidebar-content.component-CMzp1ewD.js +0 -31
- package/development/menu-action-common-Crx-dDgH.js +0 -32
- package/development/menu.component-DOv7PKIi.js +0 -367
- package/development/overlay.component-BuCkqG6Q.js +0 -216
- package/development/popover.component-B15jFLe9.js +0 -529
- package/development/styles-CcYw6JtZ.js +0 -8
- package/development/tab.component-DteuwiHv.js +0 -70
- package/development/table-wrapper.component-iSeT-FPH.js +0 -119
- package/development/tooltip.component-BtWTK2R0.js +0 -371
- package/dialog-content.component-DvJiuDJI.js +0 -19
- package/overlay.component-OzDUV8t1.js +0 -164
- package/styles-x5HG0xjp.js +0 -6
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import { SbbOverlayBaseElement, SbbOverlayCloseEvent, overlayRefs } from "./overlay/overlay-base-element.js";
|
|
2
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
3
|
-
import { unsafeCSS } from "lit";
|
|
4
|
-
import { property } from "lit/decorators.js";
|
|
5
|
-
import { SbbScreenReaderOnlyElement, boxSizingStyles, forceType, forwardEvent, i18nCloseDialog, isZeroAnimationDuration } from "./core.js";
|
|
6
|
-
import { html as html$1 } from "lit/static-html.js";
|
|
7
|
-
import { SbbSecondaryButtonElement } from "./button.pure.js";
|
|
8
|
-
import { ref } from "lit/directives/ref.js";
|
|
9
|
-
import { SbbContainerElement } from "./container.pure.js";
|
|
10
|
-
//#region src/elements/overlay/overlay.scss?inline
|
|
11
|
-
var overlay_default = ":host {\n --sbb-scrollbar-thumb-width: 0.125rem;\n --sbb-scrollbar-thumb-width-hover: 0.25rem;\n --sbb-scrollbar-width-firefox: thin;\n --sbb-scrollbar-color: color-mix(in srgb, var(--sbb-color-black) 30%, transparent);\n --sbb-scrollbar-color: light-dark(\n color-mix(in srgb, var(--sbb-color-black) 30%, transparent),\n color-mix(in srgb, var(--sbb-color-white) 30%, transparent)\n );\n --sbb-scrollbar-color-hover: color-mix(in srgb, var(--sbb-color-black) 60%, transparent);\n --sbb-scrollbar-color-hover: light-dark(\n color-mix(in srgb, var(--sbb-color-black) 60%, transparent),\n color-mix(in srgb, var(--sbb-color-white) 60%, transparent)\n );\n --sbb-scrollbar-track-color: transparent;\n --_sbb-overlay-padding-block: calc(\n var(--sbb-spacing-fixed-14x) + var(--sbb-spacing-responsive-l)\n );\n --sbb-overlay-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n display: var(--sbb-overlay-display);\n position: fixed;\n inset: var(--sbb-overlay-inset);\n z-index: var(--sbb-overlay-z-index, var(--sbb-overlay-default-z-index));\n}\n\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) {\n --sbb-overlay-display: block;\n --sbb-overlay-container-display: flex;\n}\n\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]))) {\n --sbb-overlay-pointer-events: all;\n}\n\n:host([negative]) {\n --sbb-scrollbar-color: color-mix(in srgb, var(--sbb-color-white) 30%, transparent);\n --sbb-scrollbar-color-hover: color-mix(in srgb, var(--sbb-color-white) 60%, transparent);\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n --sbb-overlay-color: var(--sbb-color-1-negative);\n --sbb-overlay-background-color: var(--sbb-background-color-3-negative);\n}\n\n:host(:not(:is(:state(state-closed),[state--state-closed]))) {\n --sbb-overlay-inset: 0;\n}\n\n.sbb-overlay__container {\n background-color: var(--sbb-overlay-background-color);\n pointer-events: var(--sbb-overlay-pointer-events);\n display: var(--sbb-overlay-container-display);\n align-items: center;\n position: fixed;\n inset: var(--sbb-overlay-inset);\n}\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) .sbb-overlay__container {\n animation-name: open;\n animation-duration: var(--sbb-overlay-animation-duration);\n animation-timing-function: var(--sbb-overlay-animation-easing);\n}\n:host(:is(:state(state-closing),[state--state-closing])) .sbb-overlay__container {\n pointer-events: none;\n animation-name: close;\n}\n\n.sbb-overlay {\n position: absolute;\n inset-inline: 0;\n margin: auto;\n padding: 0;\n border: none;\n height: var(--sbb-overlay-height);\n overflow: auto;\n color: var(--sbb-overlay-color);\n}\n:host(:is(:is(:state(state-opening),[state--state-opening]), :is(:state(state-opened),[state--state-opened]), :is(:state(state-closing),[state--state-closing]))) .sbb-overlay {\n animation-name: open-move-in;\n animation-duration: var(--sbb-overlay-animation-duration);\n animation-timing-function: var(--sbb-overlay-animation-easing);\n}\n:host(:is(:state(state-closing),[state--state-closing])) .sbb-overlay {\n animation-name: close-move-out;\n}\n\n.sbb-overlay__wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: var(--sbb-overlay-height);\n outline: none;\n position: fixed;\n}\n@media (min-width: calc(64rem)) {\n .sbb-overlay__wrapper {\n position: sticky;\n inset-block-start: 0;\n height: auto;\n }\n}\n\n.sbb-overlay__header {\n position: absolute;\n inset-inline-start: 0;\n display: flex;\n pointer-events: none;\n align-items: start;\n justify-content: space-between;\n width: 100%;\n padding: var(--sbb-spacing-responsive-xs);\n padding-block-end: 0;\n z-index: 1;\n}\n.sbb-overlay__header * {\n pointer-events: all;\n}\n\n.sbb-overlay__close {\n margin-inline-start: auto;\n}\n\n.sbb-overlay__content {\n --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);\n}\n.sbb-overlay__content::-webkit-scrollbar {\n width: var(--sbb-scrollbar-width);\n height: var(--sbb-scrollbar-width);\n background-color: var(--sbb-scrollbar-track-color, transparent);\n}\n.sbb-overlay__content::-webkit-scrollbar-corner {\n background-color: var(--sbb-scrollbar-track-color, transparent);\n}\n.sbb-overlay__content::-webkit-scrollbar-thumb {\n background-color: var(--sbb-scrollbar-color, currentcolor);\n border: calc(0.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width))) solid transparent;\n border-radius: var(--sbb-border-radius-4x);\n background-clip: padding-box;\n}\n.sbb-overlay__content::-webkit-scrollbar-thumb:hover {\n background-color: var(--sbb-scrollbar-color-hover, currentcolor);\n border-width: calc(0.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width-hover)));\n}\n.sbb-overlay__content::-webkit-scrollbar-button, .sbb-overlay__content::-webkit-scrollbar-corner {\n display: none;\n}\n@supports not selector(::-webkit-scrollbar) {\n .sbb-overlay__content {\n scrollbar-width: var(--sbb-scrollbar-width-firefox);\n scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);\n }\n}\n.sbb-overlay__content {\n height: 100vh;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.sbb-overlay__content-container {\n padding-block: var(--_sbb-overlay-padding-block);\n}\n\n@keyframes open {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes open-move-in {\n from {\n transform: translateY(var(--sbb-spacing-fixed-4x));\n }\n to {\n transform: translateY(0%);\n }\n}\n@keyframes close {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes close-move-out {\n from {\n transform: translateY(0%);\n }\n to {\n transform: translateY(var(--sbb-spacing-fixed-4x));\n }\n}";
|
|
12
|
-
//#endregion
|
|
13
|
-
//#region src/elements/overlay/overlay.component.ts
|
|
14
|
-
var nextId = 0;
|
|
15
|
-
/**
|
|
16
|
-
* It displays an interactive overlay element.
|
|
17
|
-
*
|
|
18
|
-
* @slot - Use the unnamed slot to provide a content for the overlay.
|
|
19
|
-
* @cssprop [--sbb-overlay-z-index=var(--sbb-overlay-default-z-index)] - To specify a custom stack order,
|
|
20
|
-
* the `z-index` can be overridden by defining this CSS variable. The default `z-index` of the
|
|
21
|
-
* component is set to `var(--sbb-overlay-default-z-index)` with a value of `1000`.
|
|
22
|
-
*/
|
|
23
|
-
var SbbOverlayElement = (() => {
|
|
24
|
-
let _classSuper = SbbOverlayBaseElement;
|
|
25
|
-
let _expanded_decorators;
|
|
26
|
-
let _expanded_initializers = [];
|
|
27
|
-
let _expanded_extraInitializers = [];
|
|
28
|
-
let _accessibilityCloseLabel_decorators;
|
|
29
|
-
let _accessibilityCloseLabel_initializers = [];
|
|
30
|
-
let _accessibilityCloseLabel_extraInitializers = [];
|
|
31
|
-
return class SbbOverlayElement extends _classSuper {
|
|
32
|
-
constructor() {
|
|
33
|
-
super(...arguments);
|
|
34
|
-
this.#expanded_accessor_storage = __runInitializers(this, _expanded_initializers, false);
|
|
35
|
-
this.#accessibilityCloseLabel_accessor_storage = (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _accessibilityCloseLabel_initializers, ""));
|
|
36
|
-
this.closeAttribute = (__runInitializers(this, _accessibilityCloseLabel_extraInitializers), "sbb-overlay-close");
|
|
37
|
-
this._overlayContentElement = null;
|
|
38
|
-
}
|
|
39
|
-
static {
|
|
40
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
41
|
-
_expanded_decorators = [forceType(), property({
|
|
42
|
-
reflect: true,
|
|
43
|
-
type: Boolean
|
|
44
|
-
})];
|
|
45
|
-
_accessibilityCloseLabel_decorators = [forceType(), property({ attribute: "accessibility-close-label" })];
|
|
46
|
-
__esDecorate(this, null, _expanded_decorators, {
|
|
47
|
-
kind: "accessor",
|
|
48
|
-
name: "expanded",
|
|
49
|
-
static: false,
|
|
50
|
-
private: false,
|
|
51
|
-
access: {
|
|
52
|
-
has: (obj) => "expanded" in obj,
|
|
53
|
-
get: (obj) => obj.expanded,
|
|
54
|
-
set: (obj, value) => {
|
|
55
|
-
obj.expanded = value;
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
metadata: _metadata
|
|
59
|
-
}, _expanded_initializers, _expanded_extraInitializers);
|
|
60
|
-
__esDecorate(this, null, _accessibilityCloseLabel_decorators, {
|
|
61
|
-
kind: "accessor",
|
|
62
|
-
name: "accessibilityCloseLabel",
|
|
63
|
-
static: false,
|
|
64
|
-
private: false,
|
|
65
|
-
access: {
|
|
66
|
-
has: (obj) => "accessibilityCloseLabel" in obj,
|
|
67
|
-
get: (obj) => obj.accessibilityCloseLabel,
|
|
68
|
-
set: (obj, value) => {
|
|
69
|
-
obj.accessibilityCloseLabel = value;
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
metadata: _metadata
|
|
73
|
-
}, _accessibilityCloseLabel_initializers, _accessibilityCloseLabel_extraInitializers);
|
|
74
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
75
|
-
enumerable: true,
|
|
76
|
-
configurable: true,
|
|
77
|
-
writable: true,
|
|
78
|
-
value: _metadata
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
static {
|
|
82
|
-
this.elementName = "sbb-overlay";
|
|
83
|
-
}
|
|
84
|
-
static {
|
|
85
|
-
this.elementDependencies = [
|
|
86
|
-
SbbSecondaryButtonElement,
|
|
87
|
-
SbbContainerElement,
|
|
88
|
-
SbbScreenReaderOnlyElement
|
|
89
|
-
];
|
|
90
|
-
}
|
|
91
|
-
static {
|
|
92
|
-
this.styles = [boxSizingStyles, unsafeCSS(overlay_default)];
|
|
93
|
-
}
|
|
94
|
-
static {
|
|
95
|
-
this.events = {
|
|
96
|
-
beforeopen: "beforeopen",
|
|
97
|
-
open: "open",
|
|
98
|
-
beforeclose: "beforeclose",
|
|
99
|
-
close: "close"
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
#expanded_accessor_storage;
|
|
103
|
-
/**
|
|
104
|
-
* Whether to allow the overlay content to stretch to full width.
|
|
105
|
-
* By default, the content has the appropriate page size.
|
|
106
|
-
*/
|
|
107
|
-
get expanded() {
|
|
108
|
-
return this.#expanded_accessor_storage;
|
|
109
|
-
}
|
|
110
|
-
set expanded(value) {
|
|
111
|
-
this.#expanded_accessor_storage = value;
|
|
112
|
-
}
|
|
113
|
-
#accessibilityCloseLabel_accessor_storage;
|
|
114
|
-
/** This will be forwarded as aria-label to the close button element. */
|
|
115
|
-
get accessibilityCloseLabel() {
|
|
116
|
-
return this.#accessibilityCloseLabel_accessor_storage;
|
|
117
|
-
}
|
|
118
|
-
set accessibilityCloseLabel(value) {
|
|
119
|
-
this.#accessibilityCloseLabel_accessor_storage = value;
|
|
120
|
-
}
|
|
121
|
-
connectedCallback() {
|
|
122
|
-
this.id ||= `sbb-overlay-${nextId++}`;
|
|
123
|
-
super.connectedCallback();
|
|
124
|
-
}
|
|
125
|
-
firstUpdated(changedProperties) {
|
|
126
|
-
super.firstUpdated(changedProperties);
|
|
127
|
-
if (this.isOpen) this.setAriaLiveRefContent();
|
|
128
|
-
}
|
|
129
|
-
isZeroAnimationDuration() {
|
|
130
|
-
return isZeroAnimationDuration(this, "--sbb-overlay-animation-duration");
|
|
131
|
-
}
|
|
132
|
-
handleOpening() {
|
|
133
|
-
this.state = "opened";
|
|
134
|
-
this.inertController.activate();
|
|
135
|
-
this.focusTrapController.focusInitialElement();
|
|
136
|
-
setTimeout(() => this.setAriaLiveRefContent(this.accessibilityLabel));
|
|
137
|
-
this.focusTrapController.enabled = true;
|
|
138
|
-
this.dispatchOpenEvent();
|
|
139
|
-
}
|
|
140
|
-
handleClosing() {
|
|
141
|
-
this._overlayContentElement?.scrollTo(0, 0);
|
|
142
|
-
this.state = "closed";
|
|
143
|
-
this.hidePopover?.();
|
|
144
|
-
this.inertController.deactivate();
|
|
145
|
-
if (!this.skipFocusRestoration) this.lastFocusedElement?.focus();
|
|
146
|
-
this.openOverlayController?.abort();
|
|
147
|
-
this.focusTrapController.enabled = false;
|
|
148
|
-
this.removeInstanceFromGlobalCollection();
|
|
149
|
-
if (!overlayRefs.length) this.scrollHandler.enableScroll();
|
|
150
|
-
this.escapableOverlayController.disconnect();
|
|
151
|
-
this.dispatchCloseEvent({
|
|
152
|
-
returnValue: this.returnValue,
|
|
153
|
-
closeTarget: this.overlayCloseElement
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
dispatchBeforeCloseEvent(_detail) {
|
|
157
|
-
/** @type {SbbOverlayCloseEvent} Emits whenever the component begins the closing transition. Can be canceled. */
|
|
158
|
-
return this.dispatchEvent(new SbbOverlayCloseEvent("beforeclose", {
|
|
159
|
-
cancelable: true,
|
|
160
|
-
closeAttribute: this.closeAttribute,
|
|
161
|
-
closeTarget: this.overlayCloseElement,
|
|
162
|
-
result: this.returnValue
|
|
163
|
-
}));
|
|
164
|
-
}
|
|
165
|
-
dispatchCloseEvent(_detail) {
|
|
166
|
-
/** @type {SbbOverlayCloseEvent} Emits whenever the component is closed. */
|
|
167
|
-
return this.dispatchEvent(new SbbOverlayCloseEvent("close", {
|
|
168
|
-
closeAttribute: this.closeAttribute,
|
|
169
|
-
closeTarget: this.overlayCloseElement,
|
|
170
|
-
result: this.returnValue
|
|
171
|
-
}));
|
|
172
|
-
}
|
|
173
|
-
render() {
|
|
174
|
-
return html$1`
|
|
175
|
-
<div class="sbb-overlay__container" @animationend=${this.onOverlayAnimationEnd}>
|
|
176
|
-
<div class="sbb-overlay">
|
|
177
|
-
<div
|
|
178
|
-
@click=${(event) => this.closeOnSbbOverlayCloseClick(event)}
|
|
179
|
-
class="sbb-overlay__wrapper"
|
|
180
|
-
>
|
|
181
|
-
<div class="sbb-overlay__header">
|
|
182
|
-
<sbb-secondary-button
|
|
183
|
-
class="sbb-overlay__close"
|
|
184
|
-
aria-label="${this.accessibilityCloseLabel || i18nCloseDialog[this.language.current]}"
|
|
185
|
-
?negative=${this.negative}
|
|
186
|
-
size="m"
|
|
187
|
-
type="button"
|
|
188
|
-
icon-name="cross-small"
|
|
189
|
-
sbb-overlay-close
|
|
190
|
-
></sbb-secondary-button>
|
|
191
|
-
</div>
|
|
192
|
-
<div
|
|
193
|
-
class="sbb-overlay__content"
|
|
194
|
-
${ref((el) => this._overlayContentElement = el)}
|
|
195
|
-
@scroll=${(e) => forwardEvent(e, document)}
|
|
196
|
-
>
|
|
197
|
-
<sbb-container
|
|
198
|
-
class="sbb-overlay__content-container"
|
|
199
|
-
?expanded=${this.expanded}
|
|
200
|
-
color="transparent"
|
|
201
|
-
>
|
|
202
|
-
<slot></slot>
|
|
203
|
-
</sbb-container>
|
|
204
|
-
</div>
|
|
205
|
-
</div>
|
|
206
|
-
</div>
|
|
207
|
-
</div>
|
|
208
|
-
<sbb-screen-reader-only aria-live="polite"></sbb-screen-reader-only>
|
|
209
|
-
`;
|
|
210
|
-
}
|
|
211
|
-
};
|
|
212
|
-
})();
|
|
213
|
-
//#endregion
|
|
214
|
-
export { SbbOverlayElement as t };
|
|
215
|
-
|
|
216
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQtQnVDa3FHNlEuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL292ZXJsYXkvb3ZlcmxheS5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgQGluY2x1ZGUgc2JiLnNjcm9sbGJhci12YXJpYWJsZXM7XG5cbiAgLS1fc2JiLW92ZXJsYXktcGFkZGluZy1ibG9jazogY2FsYyhcbiAgICB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xNHgpICsgdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS1sKVxuICApO1xuICAtLXNiYi1vdmVybGF5LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNngpXG4gICk7XG5cbiAgZGlzcGxheTogdmFyKC0tc2JiLW92ZXJsYXktZGlzcGxheSk7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQ6IHZhcigtLXNiYi1vdmVybGF5LWluc2V0KTtcbiAgei1pbmRleDogdmFyKC0tc2JiLW92ZXJsYXktei1pbmRleCwgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KSk7XG59XG5cbjpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSB7XG4gIC0tc2JiLW92ZXJsYXktZGlzcGxheTogYmxvY2s7XG4gIC0tc2JiLW92ZXJsYXktY29udGFpbmVyLWRpc3BsYXk6IGZsZXg7XG59XG5cbjpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpKSkge1xuICAtLXNiYi1vdmVybGF5LXBvaW50ZXItZXZlbnRzOiBhbGw7XG59XG5cbjpob3N0KFtuZWdhdGl2ZV0pIHtcbiAgQGluY2x1ZGUgc2JiLnNjcm9sbGJhci12YXJpYWJsZXMtLWNvbG9yLW5lZ2F0aXZlO1xuXG4gIC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3I6IHZhcigtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yLWRhcmspO1xuICAtLXNiYi1vdmVybGF5LWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMS1uZWdhdGl2ZSk7XG4gIC0tc2JiLW92ZXJsYXktYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMy1uZWdhdGl2ZSk7XG59XG5cbjpob3N0KDpub3QoOnN0YXRlKHN0YXRlLWNsb3NlZCkpKSB7XG4gIC0tc2JiLW92ZXJsYXktaW5zZXQ6IDA7XG59XG5cbi5zYmItb3ZlcmxheV9fY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLW92ZXJsYXktYmFja2dyb3VuZC1jb2xvcik7XG4gIHBvaW50ZXItZXZlbnRzOiB2YXIoLS1zYmItb3ZlcmxheS1wb2ludGVyLWV2ZW50cyk7XG4gIGRpc3BsYXk6IHZhcigtLXNiYi1vdmVybGF5LWNvbnRhaW5lci1kaXNwbGF5KTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBpbnNldDogdmFyKC0tc2JiLW92ZXJsYXktaW5zZXQpO1xuXG4gIDpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSAmIHtcbiAgICBhbmltYXRpb246IHtcbiAgICAgIG5hbWU6IG9wZW47XG4gICAgICBkdXJhdGlvbjogdmFyKC0tc2JiLW92ZXJsYXktYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICAgIHRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLW92ZXJsYXktYW5pbWF0aW9uLWVhc2luZyk7XG4gICAgfVxuICB9XG5cbiAgOmhvc3QoOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSAmIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBhbmltYXRpb24tbmFtZTogY2xvc2U7XG4gIH1cbn1cblxuLnNiYi1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldC1pbmxpbmU6IDA7XG4gIG1hcmdpbjogYXV0bztcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiBub25lO1xuICBoZWlnaHQ6IHZhcigtLXNiYi1vdmVybGF5LWhlaWdodCk7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBjb2xvcjogdmFyKC0tc2JiLW92ZXJsYXktY29sb3IpO1xuXG4gIDpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSAmIHtcbiAgICBhbmltYXRpb246IHtcbiAgICAgIG5hbWU6IG9wZW4tbW92ZS1pbjtcbiAgICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItb3ZlcmxheS1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItb3ZlcmxheS1hbmltYXRpb24tZWFzaW5nKTtcbiAgICB9XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtY2xvc2luZykpICYge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBjbG9zZS1tb3ZlLW91dDtcbiAgfVxufVxuXG4uc2JiLW92ZXJsYXlfX3dyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItb3ZlcmxheS1oZWlnaHQpO1xuICBvdXRsaW5lOiBub25lO1xuICBwb3NpdGlvbjogZml4ZWQ7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi5zYmItb3ZlcmxheV9faGVhZGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpO1xuICBwYWRkaW5nLWJsb2NrLWVuZDogMDtcbiAgei1pbmRleDogMTtcblxuICAqIHtcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICB9XG59XG5cbi5zYmItb3ZlcmxheV9fY2xvc2Uge1xuICBtYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvO1xufVxuXG4uc2JiLW92ZXJsYXlfX2NvbnRlbnQge1xuICBAaW5jbHVkZSBzYmIuc2Nyb2xsYmFyLXJ1bGVzO1xuXG4gIGhlaWdodDogMTAwdmg7XG4gIG92ZXJmbG93OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5zYmItb3ZlcmxheV9fY29udGVudC1jb250YWluZXIge1xuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1fc2JiLW92ZXJsYXktcGFkZGluZy1ibG9jayk7XG59XG5cbi8vIEl0IGlzIG5lY2Vzc2FyeSB0byB1c2UgYW5pbWF0aW9ucyB3aXRoIGtleWZyYW1lcyBpbnN0ZWFkIG9mIHRyYW5zaXRpb25zIGluIG9yZGVyIG5vdCB0byBhbHRlclxuLy8gdGhlIGRlZmF1bHQgYGRpc3BsYXk6IGJsb2NrYCBvZiB0aGUgbW9kYWwgb3RoZXJ3aXNlIGl0IGNhdXNlcyBzZXZlcmFsIHByb2JsZW1zLFxuLy8gZXNwZWNpYWxseSBmb3IgYWNjZXNzaWJpbGl0eS5cbkBrZXlmcmFtZXMgb3BlbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIG9wZW4tbW92ZS1pbiB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1zYmItc3BhY2luZy1maXhlZC00eCkpO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBjbG9zZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNsb3NlLW1vdmUtb3V0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgdHlwZSBQcm9wZXJ0eVZhbHVlcywgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBTYmJTZWNvbmRhcnlCdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vYnV0dG9uLnB1cmUudHMnO1xuaW1wb3J0IHsgU2JiQ29udGFpbmVyRWxlbWVudCB9IGZyb20gJy4uL2NvbnRhaW5lci5wdXJlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudFR5cGUsIFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyB9IGZyb20gJy4uL2NvcmUudHMnO1xuaW1wb3J0IHtcbiAgYm94U2l6aW5nU3R5bGVzLFxuICBmb3JjZVR5cGUsXG4gIGZvcndhcmRFdmVudCxcbiAgaTE4bkNsb3NlRGlhbG9nLFxuICBpc1plcm9BbmltYXRpb25EdXJhdGlvbixcbiAgU2JiU2NyZWVuUmVhZGVyT25seUVsZW1lbnQsXG59IGZyb20gJy4uL2NvcmUudHMnO1xuXG5pbXBvcnQge1xuICBvdmVybGF5UmVmcyxcbiAgU2JiT3ZlcmxheUJhc2VFbGVtZW50LFxuICBTYmJPdmVybGF5Q2xvc2VFdmVudCxcbn0gZnJvbSAnLi9vdmVybGF5LWJhc2UtZWxlbWVudC50cyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9vdmVybGF5LnNjc3M/aW5saW5lJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaW50ZXJhY3RpdmUgb3ZlcmxheSBlbGVtZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gcHJvdmlkZSBhIGNvbnRlbnQgZm9yIHRoZSBvdmVybGF5LlxuICogQGNzc3Byb3AgWy0tc2JiLW92ZXJsYXktei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheUVsZW1lbnQgZXh0ZW5kcyBTYmJPdmVybGF5QmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLW92ZXJsYXknO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbXG4gICAgU2JiU2Vjb25kYXJ5QnV0dG9uRWxlbWVudCxcbiAgICBTYmJDb250YWluZXJFbGVtZW50LFxuICAgIFNiYlNjcmVlblJlYWRlck9ubHlFbGVtZW50LFxuICBdO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCB1bnNhZmVDU1Moc3R5bGUpXTtcblxuICAvLyBUT0RPOiBmaXggdXNpbmcgLi4uc3VwZXIuZXZlbnRzIHJlcXVpcmVzOiBodHRwczovL2dpdGh1Yi5jb20vc2JiLWRlc2lnbi1zeXN0ZW1zL2x5bmUtY29tcG9uZW50cy9pc3N1ZXMvMjYwMFxuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBiZWZvcmVvcGVuOiAnYmVmb3Jlb3BlbicsXG4gICAgb3BlbjogJ29wZW4nLFxuICAgIGJlZm9yZWNsb3NlOiAnYmVmb3JlY2xvc2UnLFxuICAgIGNsb3NlOiAnY2xvc2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IHRoZSBvdmVybGF5IGNvbnRlbnQgdG8gc3RyZXRjaCB0byBmdWxsIHdpZHRoLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29udGVudCBoYXMgdGhlIGFwcHJvcHJpYXRlIHBhZ2Ugc2l6ZS5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGlzIHdpbGwgYmUgZm9yd2FyZGVkIGFzIGFyaWEtbGFiZWwgdG8gdGhlIGNsb3NlIGJ1dHRvbiBlbGVtZW50LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1jbG9zZS1sYWJlbCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlDbG9zZUxhYmVsOiBzdHJpbmcgPSAnJztcblxuICBwcm90ZWN0ZWQgY2xvc2VBdHRyaWJ1dGU6IHN0cmluZyA9ICdzYmItb3ZlcmxheS1jbG9zZSc7XG4gIHByaXZhdGUgX292ZXJsYXlDb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5pZCB8fD0gYHNiYi1vdmVybGF5LSR7bmV4dElkKyt9YDtcblxuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICAvLyBJZiB0aGUgY29tcG9uZW50IGlzIGFscmVhZHkgb3BlbiBvbiBmaXJzdFVwZGF0ZSwgYW5ub3VuY2UgdGhlIHRpdGxlXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLnNldEFyaWFMaXZlUmVmQ29udGVudCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLW92ZXJsYXktYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgdGhpcy5pbmVydENvbnRyb2xsZXIuYWN0aXZhdGUoKTtcbiAgICB0aGlzLmZvY3VzVHJhcENvbnRyb2xsZXIuZm9jdXNJbml0aWFsRWxlbWVudCgpO1xuICAgIC8vIFVzZSB0aW1lb3V0IHRvIHJlYWQgbGFiZWwgYWZ0ZXIgZm9jdXNlZCBlbGVtZW50XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEFyaWFMaXZlUmVmQ29udGVudCh0aGlzLmFjY2Vzc2liaWxpdHlMYWJlbCkpO1xuICAgIHRoaXMuZm9jdXNUcmFwQ29udHJvbGxlci5lbmFibGVkID0gdHJ1ZTtcbiAgICB0aGlzLmRpc3BhdGNoT3BlbkV2ZW50KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLl9vdmVybGF5Q29udGVudEVsZW1lbnQ/LnNjcm9sbFRvKDAsIDApO1xuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2VkJztcbiAgICB0aGlzLmhpZGVQb3BvdmVyPy4oKTtcbiAgICB0aGlzLmluZXJ0Q29udHJvbGxlci5kZWFjdGl2YXRlKCk7XG4gICAgaWYgKCF0aGlzLnNraXBGb2N1c1Jlc3RvcmF0aW9uKSB7XG4gICAgICAvLyBNYW51YWxseSBmb2N1cyBsYXN0IGZvY3VzZWQgZWxlbWVudFxuICAgICAgdGhpcy5sYXN0Rm9jdXNlZEVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMub3Blbk92ZXJsYXlDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuZm9jdXNUcmFwQ29udHJvbGxlci5lbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5yZW1vdmVJbnN0YW5jZUZyb21HbG9iYWxDb2xsZWN0aW9uKCk7XG4gICAgLy8gRW5hYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgb3ZlcmxheSBpZiBubyBvdmVybGF5IGlzIG9wZW5cbiAgICBpZiAoIW92ZXJsYXlSZWZzLmxlbmd0aCkge1xuICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgIH1cbiAgICB0aGlzLmVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLmRpc3BhdGNoQ2xvc2VFdmVudCh7XG4gICAgICByZXR1cm5WYWx1ZTogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgfSk7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmUgcGFyYW1ldGVyIGBkZXRhaWxgXG4gIHByb3RlY3RlZCBvdmVycmlkZSBkaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoX2RldGFpbD86IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyk6IGJvb2xlYW4ge1xuICAgIC8qKiBAdHlwZSB7U2JiT3ZlcmxheUNsb3NlRXZlbnR9IEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgYmVnaW5zIHRoZSBjbG9zaW5nIHRyYW5zaXRpb24uIENhbiBiZSBjYW5jZWxlZC4gKi9cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IFNiYk92ZXJsYXlDbG9zZUV2ZW50KCdiZWZvcmVjbG9zZScsIHtcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgY2xvc2VBdHRyaWJ1dGU6IHRoaXMuY2xvc2VBdHRyaWJ1dGUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICAgIHJlc3VsdDogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmUgcGFyYW1ldGVyIGBkZXRhaWxgXG4gIHByb3RlY3RlZCBvdmVycmlkZSBkaXNwYXRjaENsb3NlRXZlbnQoX2RldGFpbD86IFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyk6IGJvb2xlYW4ge1xuICAgIC8qKiBAdHlwZSB7U2JiT3ZlcmxheUNsb3NlRXZlbnR9IEVtaXRzIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgaXMgY2xvc2VkLiAqL1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgU2JiT3ZlcmxheUNsb3NlRXZlbnQoJ2Nsb3NlJywge1xuICAgICAgICBjbG9zZUF0dHJpYnV0ZTogdGhpcy5jbG9zZUF0dHJpYnV0ZSxcbiAgICAgICAgY2xvc2VUYXJnZXQ6IHRoaXMub3ZlcmxheUNsb3NlRWxlbWVudCxcbiAgICAgICAgcmVzdWx0OiB0aGlzLnJldHVyblZhbHVlLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19jb250YWluZXJcIiBAYW5pbWF0aW9uZW5kPSR7dGhpcy5vbk92ZXJsYXlBbmltYXRpb25FbmR9PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW92ZXJsYXlcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBAY2xpY2s9JHsoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLmNsb3NlT25TYmJPdmVybGF5Q2xvc2VDbGljayhldmVudCl9XG4gICAgICAgICAgICBjbGFzcz1cInNiYi1vdmVybGF5X193cmFwcGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW92ZXJsYXlfX2hlYWRlclwiPlxuICAgICAgICAgICAgICA8c2JiLXNlY29uZGFyeS1idXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1vdmVybGF5X19jbG9zZVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIiR7dGhpcy5hY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbCB8fFxuICAgICAgICAgICAgICAgIGkxOG5DbG9zZURpYWxvZ1t0aGlzLmxhbmd1YWdlLmN1cnJlbnRdfVwiXG4gICAgICAgICAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX1cbiAgICAgICAgICAgICAgICBzaXplPVwibVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgaWNvbi1uYW1lPVwiY3Jvc3Mtc21hbGxcIlxuICAgICAgICAgICAgICAgIHNiYi1vdmVybGF5LWNsb3NlXG4gICAgICAgICAgICAgID48L3NiYi1zZWNvbmRhcnktYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLW92ZXJsYXlfX2NvbnRlbnRcIlxuICAgICAgICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fb3ZlcmxheUNvbnRlbnRFbGVtZW50ID0gZWwgYXMgSFRNTERpdkVsZW1lbnQpKX1cbiAgICAgICAgICAgICAgQHNjcm9sbD0keyhlOiBFdmVudCkgPT4gZm9yd2FyZEV2ZW50KGUsIGRvY3VtZW50KX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNiYi1jb250YWluZXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1vdmVybGF5X19jb250ZW50LWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgP2V4cGFuZGVkPSR7dGhpcy5leHBhbmRlZH1cbiAgICAgICAgICAgICAgICBjb2xvcj1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgICAgICAgPC9zYmItY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8c2JiLXNjcmVlbi1yZWFkZXItb25seSBhcmlhLWxpdmU9XCJwb2xpdGVcIj48L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLW92ZXJsYXknOiBTYmJPdmVybGF5RWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FDd0JBLElBQUksU0FBUzs7Ozs7Ozs7O0lBVUEsMkJBQWlCO21CQUFTOzs7Ozs7O2NBQTFCLDBCQUEwQixZQUFxQjs7O0FBdUIxQyxTQUFBLDRCQUFBLGtCQUFBLE1BQUEsd0JBQW9CLE1BQUs7QUFLekIsU0FBQSw0Q0FBQSxrQkFBQSxNQUFBLDRCQUFBLEVBQUEsa0JBQUEsTUFBQSx1Q0FBa0MsR0FBRTtBQUUxQyxRQUFBLGtCQUFjLGtCQUFBLE1BQUEsMkNBQUEsRUFBVztBQUMzQixRQUFBLHlCQUE2Qzs7OzsyQkFWcEQsV0FBVyxFQUNYLFNBQVM7SUFBRSxTQUFTO0lBQU0sTUFBTTtJQUFTLENBQUMsQ0FBQTswQ0FJMUMsV0FBVyxFQUNYLFNBQVMsRUFBRSxXQUFXLDZCQUE2QixDQUFDLENBQUE7QUFKckQsZ0JBQUEsTUFBQSxNQUFBLHNCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsY0FBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFRLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBUixXQUFROztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsd0JBQUEsNEJBQUE7QUFLeEIsZ0JBQUEsTUFBQSxNQUFBLHFDQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsNkJBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBdUIsTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUF2QiwwQkFBdUI7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSx1Q0FBQSwyQ0FBQTs7Ozs7Ozs7O0FBM0JQLFFBQUEsY0FBc0I7OztBQUMvQixRQUFBLHNCQUF3QztJQUM3RDtJQUNBO0lBQ0E7SUFDRDs7O0FBQ3NCLFFBQUEsU0FBeUIsQ0FBQyxpQkFBaUIsVUFBVSxnQkFBTSxDQUFDOzs7QUFHbkQsUUFBQSxTQUFTO0lBQ3ZDLFlBQVk7SUFDWixNQUFNO0lBQ04sYUFBYTtJQUNiLE9BQU87SUFDQzs7RUFRVjs7Ozs7RUFBQSxJQUFnQixXQUFRO0FBQUEsVUFBQSxNQUFBOztFQUF4QixJQUFnQixTQUFRLE9BQUE7QUFBQSxTQUFBLDRCQUFBOztFQUt4Qjs7RUFBQSxJQUFnQiwwQkFBdUI7QUFBQSxVQUFBLE1BQUE7O0VBQXZDLElBQWdCLHdCQUF1QixPQUFBO0FBQUEsU0FBQSwyQ0FBQTs7RUFLdkIsb0JBQWlCO0FBQy9CLFFBQUssT0FBTyxlQUFlO0FBRTNCLFNBQU0sbUJBQW1COztFQUdSLGFBQWEsbUJBQXVDO0FBQ3JFLFNBQU0sYUFBYSxrQkFBa0I7QUFHckMsT0FBSSxLQUFLLE9BQ1AsTUFBSyx1QkFBdUI7O0VBSXRCLDBCQUF1QjtBQUMvQixVQUFPLHdCQUF3QixNQUFNLG1DQUFtQzs7RUFHaEUsZ0JBQWE7QUFDckIsUUFBSyxRQUFRO0FBQ2IsUUFBSyxnQkFBZ0IsVUFBVTtBQUMvQixRQUFLLG9CQUFvQixxQkFBcUI7QUFFOUMsb0JBQWlCLEtBQUssc0JBQXNCLEtBQUssbUJBQW1CLENBQUM7QUFDckUsUUFBSyxvQkFBb0IsVUFBVTtBQUNuQyxRQUFLLG1CQUFtQjs7RUFHUCxnQkFBYTtBQUM5QixRQUFLLHdCQUF3QixTQUFTLEdBQUcsRUFBRTtBQUMzQyxRQUFLLFFBQVE7QUFDYixRQUFLLGVBQWU7QUFDcEIsUUFBSyxnQkFBZ0IsWUFBWTtBQUNqQyxPQUFJLENBQUMsS0FBSyxxQkFFUixNQUFLLG9CQUFvQixPQUFPO0FBRWxDLFFBQUssdUJBQXVCLE9BQU87QUFDbkMsUUFBSyxvQkFBb0IsVUFBVTtBQUNuQyxRQUFLLG9DQUFvQztBQUV6QyxPQUFJLENBQUMsWUFBWSxPQUNmLE1BQUssY0FBYyxjQUFjO0FBRW5DLFFBQUssMkJBQTJCLFlBQVk7QUFDNUMsUUFBSyxtQkFBbUI7SUFDdEIsYUFBYSxLQUFLO0lBQ2xCLGFBQWEsS0FBSztJQUNuQixDQUFDOztFQUllLHlCQUF5QixTQUFxQzs7QUFFL0UsVUFBTyxLQUFLLGNBQ1YsSUFBSSxxQkFBcUIsZUFBZTtJQUN0QyxZQUFZO0lBQ1osZ0JBQWdCLEtBQUs7SUFDckIsYUFBYSxLQUFLO0lBQ2xCLFFBQVEsS0FBSztJQUNkLENBQUMsQ0FDSDs7RUFJZ0IsbUJBQW1CLFNBQXFDOztBQUV6RSxVQUFPLEtBQUssY0FDVixJQUFJLHFCQUFxQixTQUFTO0lBQ2hDLGdCQUFnQixLQUFLO0lBQ3JCLGFBQWEsS0FBSztJQUNsQixRQUFRLEtBQUs7SUFDZCxDQUFDLENBQ0g7O0VBR2dCLFNBQU07QUFDdkIsVUFBTyxNQUFJOzBEQUMyQyxLQUFLLHNCQUFxQjs7O3NCQUc5RCxVQUFpQixLQUFLLDRCQUE0QixNQUFNLENBQUE7Ozs7Ozs4QkFNaEQsS0FBSywyQkFDbkIsZ0JBQWdCLEtBQUssU0FBUyxTQUFROzRCQUMxQixLQUFLLFNBQUE7Ozs7Ozs7OztnQkFTakIsS0FBSyxPQUFrQixLQUFLLHlCQUF5QixHQUFzQixDQUFBO3lCQUNsRSxNQUFhLGFBQWEsR0FBRyxTQUFTLENBQUE7Ozs7NEJBSW5DLEtBQUssU0FBQSJ9
|