@sbb-esta/lyne-elements-dev 5.0.0-next.1-dev.1777534945 → 5.0.0-next.1-dev.1777543026
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-CSCv_WVh.js → autocomplete-base-element-BiLyvcN-.js} +1 -1
- package/autocomplete.js +1 -1
- package/autocomplete.pure.js +1 -1
- package/core/styles/mixins/scrollbar.scss +0 -6
- package/core/styles/scrollbar.scss +19 -24
- package/core/styles/styles.js +2 -2
- package/core.css +0 -37
- package/core.js +2 -2
- package/custom-elements.json +66 -16
- package/development/autocomplete/autocomplete-base-element.js +1 -1
- package/development/autocomplete/autocomplete.component.js +1 -1
- package/development/{autocomplete-base-element-Bwkns3IL.js → autocomplete-base-element-BxBpn8_e.js} +2 -2
- package/development/autocomplete.js +1 -1
- package/development/autocomplete.pure.js +1 -1
- 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 +2 -2
- 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-B7Grxjk6.js → dialog-content.component-Bzt-PL6f.js} +10 -3
- package/development/dialog.js +1 -1
- package/development/dialog.pure.js +1 -1
- package/development/file-selector/common/file-selector-common.d.ts +1 -2
- package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
- package/development/file-selector/common/file-selector-common.js +2 -2
- package/development/file-selector/file-selector/file-selector.component.d.ts +1 -2
- package/development/file-selector/file-selector/file-selector.component.d.ts.map +1 -1
- package/development/file-selector/file-selector/file-selector.component.js +3 -6
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.d.ts.map +1 -1
- package/development/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/development/file-selector-common-BH_iIjcB.js +417 -0
- package/development/{file-selector-dropzone.component-DRUUWI1A.js → file-selector-dropzone.component-ZCanLwF-.js} +4 -8
- package/development/file-selector.js +3 -3
- package/development/file-selector.pure.js +3 -3
- package/development/map-container/map-container.component.d.ts.map +1 -1
- package/development/map-container/map-container.component.js +1 -1
- package/development/map-container.component-DoFCVBoh.js +180 -0
- package/development/map-container.js +1 -1
- package/development/map-container.pure.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.component-CDBUaD8s.js +369 -0
- package/development/menu.js +1 -1
- package/development/menu.pure.js +1 -1
- 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-D3_XVwyt.js +350 -0
- package/development/navigation.component-Cco4llBt.js +319 -0
- package/development/navigation.js +2 -2
- package/development/navigation.pure.js +2 -2
- package/development/overlay/overlay.component.d.ts.map +1 -1
- package/development/overlay/overlay.component.js +1 -1
- package/development/overlay.component-DBzb0PdD.js +206 -0
- package/development/overlay.js +1 -1
- package/development/overlay.pure.js +1 -1
- package/development/popover/popover.component.d.ts +1 -0
- package/development/popover/popover.component.d.ts.map +1 -1
- package/development/popover/popover.component.js +1 -1
- package/development/popover.component-Dj0INQsI.js +564 -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-C1Xfvvii.js → select.component-D_9pjl7T.js} +2 -2
- package/development/select.js +1 -1
- package/development/select.pure.js +1 -1
- package/development/sidebar/sidebar/sidebar.component.d.ts.map +1 -1
- package/development/sidebar/sidebar/sidebar.component.js +1 -1
- package/development/sidebar.component-CYLbI1Vp.js +356 -0
- package/development/sidebar.js +1 -1
- package/development/sidebar.pure.js +1 -1
- package/development/styles-B_IWjHc5.js +22 -0
- package/development/table/table-wrapper/table-wrapper.component.js +1 -1
- package/development/table-wrapper.component-D8IFPow6.js +119 -0
- package/development/table.js +1 -1
- package/development/table.pure.js +1 -1
- package/dialog/dialog-content/dialog-content.component.js +1 -1
- package/{dialog-content.component-are-UBx3.js → dialog-content.component-iRLHPKPb.js} +7 -2
- package/dialog.js +1 -1
- package/dialog.pure.js +1 -1
- package/file-selector/common/file-selector-common.js +2 -2
- package/file-selector/file-selector/file-selector.component.js +10 -13
- package/file-selector/file-selector-dropzone/file-selector-dropzone.component.js +1 -1
- package/{file-selector-common-jpJmVqAw.js → file-selector-common-PcqPdsnN.js} +44 -38
- package/{file-selector-dropzone.component-DDRTu6p2.js → file-selector-dropzone.component-2XUfh1NC.js} +20 -24
- package/file-selector.js +5 -5
- package/file-selector.pure.js +4 -4
- package/map-container/map-container.component.js +1 -1
- package/{map-container.component-Btnl3n9d.js → map-container.component-5I5DW5dJ.js} +23 -16
- package/map-container.js +1 -1
- package/map-container.pure.js +1 -1
- package/menu/menu/menu.component.js +1 -1
- package/{menu.component-CpNMheMG.js → menu.component-Bd37u3Ps.js} +26 -22
- package/menu.js +1 -1
- package/menu.pure.js +1 -1
- package/navigation/navigation/navigation.component.js +1 -1
- package/navigation/navigation-section/navigation-section.component.js +1 -1
- package/{navigation-section.component-219JlVIe.js → navigation-section.component-B_0xi30L.js} +24 -20
- package/{navigation.component-gLrMCbh9.js → navigation.component-CmrLIeDB.js} +24 -20
- package/navigation.js +2 -2
- package/navigation.pure.js +2 -2
- package/off-brand-theme.css +33 -134
- package/overlay/overlay.component.js +1 -1
- package/overlay.component-D2jtCeeb.js +156 -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-DnY9obd7.js → popover.component-CiMeNnO-.js} +27 -24
- package/popover.js +1 -1
- package/popover.pure.js +1 -1
- package/safety-theme.css +33 -134
- package/scrollbar.css +33 -97
- package/select/select.component.js +1 -1
- package/{select.component-Bhvd_sUV.js → select.component-BXPU7X_X.js} +1 -1
- package/select.js +1 -1
- package/select.pure.js +1 -1
- package/sidebar/sidebar/sidebar.component.js +1 -1
- package/{sidebar.component-Dpf9jZ1P.js → sidebar.component-CeUPJaqy.js} +28 -21
- package/sidebar.js +1 -1
- package/sidebar.pure.js +1 -1
- package/standard-theme.css +33 -134
- package/styles-Cb4jdMeE.js +5 -0
- package/table/table-wrapper/table-wrapper.component.js +1 -1
- package/{table-wrapper.component-DGL8RaxF.js → table-wrapper.component-CZ90q3pY.js} +1 -1
- package/table.js +1 -1
- package/table.pure.js +1 -1
- package/development/file-selector-common-BwkZZzA0.js +0 -409
- package/development/map-container.component-BLF21LG7.js +0 -173
- package/development/menu.component-BpKGNICN.js +0 -365
- package/development/navigation-section.component-DumXFFfg.js +0 -346
- package/development/navigation.component-CpoBEP55.js +0 -315
- package/development/overlay.component-CC_quHYI.js +0 -206
- package/development/popover.component-DT-cfDqo.js +0 -561
- package/development/sidebar.component-DR2JGwnM.js +0 -349
- package/development/styles-6T7UvhxK.js +0 -18
- package/development/table-wrapper.component-CjMOENHV.js +0 -119
- package/overlay.component-B00EoAd5.js +0 -156
- package/styles-D5okOWF1.js +0 -5
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { html, isServer, unsafeCSS } from "lit";
|
|
3
|
-
import { property, state } from "lit/decorators.js";
|
|
4
|
-
import { SbbEscapableOverlayController, SbbFocusTrapController, SbbInertController, SbbLanguageController, SbbOpenCloseBaseElement, SbbScrollHandler, SbbUpdateSchedulerMixin, boxSizingStyles, forceType, i18nCloseNavigation, idReference, isEventOnElement, isZeroAnimationDuration, removeAriaOverlayTriggerProperties, setAriaOverlayTriggerProperties } from "./core.js";
|
|
5
|
-
import { SbbTransparentButtonElement } from "./button.pure.js";
|
|
6
|
-
import { ResizeController } from "@lit-labs/observers/resize-controller.js";
|
|
7
|
-
import { ref } from "lit/directives/ref.js";
|
|
8
|
-
//#region src/elements/navigation/navigation/navigation.scss?inline
|
|
9
|
-
var navigation_default = ":host {\n --sbb-navigation-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-3x)\n );\n --sbb-focus-outline-color: var(--sbb-focus-outline-color-dark);\n display: none;\n position: fixed;\n inset: var(--sbb-navigation-inset);\n z-index: var(--sbb-navigation-z-index, var(--sbb-overlay-default-z-index));\n overflow: hidden;\n}\n@media (min-width: calc(64rem)) {\n :host {\n --sbb-navigation-animation-duration: var(\n --sbb-disable-animation-duration,\n var(--sbb-animation-duration-6x)\n );\n --sbb-navigation-width: calc(100% + var(--sbb-layout-base-offset-responsive));\n }\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 display: block;\n}\n\n:host(:is(:state(state-opened),[state--state-opened])) {\n --sbb-navigation-animation-easing: ease-out;\n}\n\n:host(:is(:is(:state(state-opened),[state--state-opened]), :is(:state(state-opening),[state--state-opening]))) {\n --sbb-navigation-backdrop-visibility: visible;\n --sbb-navigation-backdrop-pointer-events: all;\n}\n\n:host(:not(:is(:state(state-closed),[state--state-closed]))) {\n --sbb-navigation-inset: 0;\n --sbb-navigation-translate: none;\n}\n\n:host(:is(:state(state-closing),[state--state-closing])) {\n --sbb-navigation-backdrop-animation-name: backdrop-close;\n}\n\n:host(:is(:state(has-open-navigation-section),[state--has-open-navigation-section])) {\n --sbb-navigation-content-translate: -100% 0;\n}\n@media (min-width: calc(64rem)) {\n :host(:is(:state(has-open-navigation-section),[state--has-open-navigation-section])) {\n --sbb-navigation-expanded-width: 100dvw;\n --sbb-navigation-content-translate: 0;\n }\n}\n\n:host(:is(:state(resize-disable-animation),[state--resize-disable-animation])) {\n --sbb-disable-animation-duration: 0s;\n}\n\n.sbb-navigation__container {\n display: grid;\n gap: var(--sbb-grid-base-gutter-responsive);\n grid-template-columns: repeat(var(--sbb-grid-base-columns), 1fr);\n padding-inline: 0;\n pointer-events: none;\n translate: var(--sbb-navigation-translate);\n}\n@media (min-width: calc(64rem)) {\n .sbb-navigation__container {\n padding-inline: var(--sbb-layout-base-offset-responsive);\n }\n .sbb-navigation__container::before {\n transition-duration: var(--sbb-navigation-animation-duration);\n transition-timing-function: var(--sbb-navigation-animation-easing);\n transition-property: visibility;\n animation-name: var(--sbb-navigation-backdrop-animation-name);\n animation-duration: var(--sbb-navigation-animation-duration);\n animation-timing-function: var(--sbb-navigation-animation-easing);\n content: \"\";\n visibility: var(--sbb-navigation-backdrop-visibility, hidden);\n pointer-events: var(--sbb-navigation-backdrop-pointer-events, none);\n position: fixed;\n inset: var(--sbb-navigation-inset);\n background-color: var(--sbb-navigation-backdrop-color);\n }\n}\n\n.sbb-navigation {\n transition-duration: var(--sbb-navigation-animation-duration);\n transition-timing-function: var(--sbb-navigation-animation-easing);\n transition-property: width;\n display: none;\n width: var(--sbb-navigation-width);\n grid-column: var(--sbb-navigation-grid-column);\n padding: 0;\n margin: 0;\n position: relative;\n inset-inline-start: var(--sbb-navigation-inline-start, 0);\n inset-block-start: 0;\n border: none;\n pointer-events: none;\n height: var(--sbb-navigation-height);\n color: var(--sbb-navigation-color);\n background-color: var(--sbb-navigation-background-color);\n}\n.sbb-navigation::before {\n transition-duration: var(--sbb-navigation-animation-duration);\n transition-timing-function: var(--sbb-navigation-animation-easing);\n transition-property: width;\n content: \"\";\n position: absolute;\n width: var(--sbb-navigation-expanded-width);\n height: var(--sbb-navigation-height);\n background-color: var(--sbb-navigation-background-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-navigation {\n display: block;\n pointer-events: all;\n animation-name: open;\n animation-duration: var(--sbb-navigation-animation-duration);\n animation-timing-function: var(--sbb-navigation-animation-easing);\n}\n:host(:is(:state(state-closing),[state--state-closing])) .sbb-navigation {\n pointer-events: none;\n animation-name: close;\n}\n@media (forced-colors: active) {\n .sbb-navigation {\n outline: var(--sbb-border-width-1x) solid CanvasText;\n }\n}\n\n.sbb-navigation__wrapper {\n outline: none;\n}\n\n.sbb-navigation__header {\n transition-duration: var(--sbb-navigation-animation-duration);\n transition-timing-function: var(--sbb-navigation-animation-easing);\n transition-property: width;\n display: flex;\n justify-content: flex-end;\n position: absolute;\n width: var(--sbb-navigation-expanded-width);\n pointer-events: none;\n padding: var(--sbb-spacing-responsive-xs);\n z-index: calc(var(--sbb-navigation-z-index, var(--sbb-overlay-default-z-index)) + 1);\n}\n\n.sbb-navigation__close {\n pointer-events: all;\n}\n\n.sbb-navigation__content {\n transition-duration: var(--sbb-navigation-animation-duration);\n transition-timing-function: var(--sbb-navigation-animation-easing);\n transition-property: translate;\n --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);\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-white) 30%, transparent);\n --sbb-scrollbar-color-hover: color-mix(in srgb, var(--sbb-color-white) 60%, transparent);\n --sbb-scrollbar-track-color: transparent;\n}\n.sbb-navigation__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-navigation__content::-webkit-scrollbar-corner {\n background-color: var(--sbb-scrollbar-track-color, transparent);\n}\n.sbb-navigation__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-navigation__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-navigation__content::-webkit-scrollbar-button, .sbb-navigation__content::-webkit-scrollbar-corner {\n display: none;\n}\n@supports not selector(::-webkit-scrollbar) {\n .sbb-navigation__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-navigation__content {\n display: flex;\n flex-direction: column;\n gap: var(--sbb-navigation-content-gap);\n position: relative;\n height: var(--sbb-navigation-height);\n padding-inline: var(--sbb-navigation-padding-inline);\n padding-block: var(--sbb-navigation-padding-block-start) var(--sbb-navigation-padding-block-end);\n overflow-y: auto;\n translate: var(--sbb-navigation-content-translate);\n}\n\n::slotted(:first-child) {\n margin-block-start: var(--sbb-navigation-list-margin-block-start);\n}\n\n@keyframes open {\n from {\n translate: -100% 0;\n }\n to {\n translate: 0;\n }\n}\n@keyframes close {\n from {\n translate: 0;\n }\n to {\n translate: -100% 0;\n }\n}\n@keyframes backdrop-open {\n from {\n background-color: transparent;\n }\n}\n@keyframes backdrop-close {\n to {\n background-color: transparent;\n }\n}";
|
|
10
|
-
//#endregion
|
|
11
|
-
//#region src/elements/navigation/navigation/navigation.component.ts
|
|
12
|
-
var DEBOUNCE_TIME = 150;
|
|
13
|
-
/**
|
|
14
|
-
* It displays a navigation menu, wrapping one or more `sbb-navigation-*` components.
|
|
15
|
-
*
|
|
16
|
-
* @slot - Use the unnamed slot to add `sbb-navigation-button`/`sbb-navigation-link` elements into the sbb-navigation menu.
|
|
17
|
-
* @cssprop [--sbb-navigation-z-index=var(--sbb-overlay-default-z-index)] - To specify a custom stack order,
|
|
18
|
-
* the `z-index` can be overridden by defining this CSS variable. The default `z-index` of the
|
|
19
|
-
* component is set to `var(--sbb-overlay-default-z-index)` with a value of `1000`.
|
|
20
|
-
*/
|
|
21
|
-
var SbbNavigationElement = (() => {
|
|
22
|
-
let _classSuper = SbbUpdateSchedulerMixin(SbbOpenCloseBaseElement);
|
|
23
|
-
let _trigger_decorators;
|
|
24
|
-
let _trigger_initializers = [];
|
|
25
|
-
let _trigger_extraInitializers = [];
|
|
26
|
-
let _accessibilityCloseLabel_decorators;
|
|
27
|
-
let _accessibilityCloseLabel_initializers = [];
|
|
28
|
-
let _accessibilityCloseLabel_extraInitializers = [];
|
|
29
|
-
let __activeNavigationSection_decorators;
|
|
30
|
-
let __activeNavigationSection_initializers = [];
|
|
31
|
-
let __activeNavigationSection_extraInitializers = [];
|
|
32
|
-
return class SbbNavigationElement extends _classSuper {
|
|
33
|
-
static {
|
|
34
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
35
|
-
_trigger_decorators = [idReference(), property()];
|
|
36
|
-
_accessibilityCloseLabel_decorators = [forceType(), property({ attribute: "accessibility-close-label" })];
|
|
37
|
-
__activeNavigationSection_decorators = [state()];
|
|
38
|
-
__esDecorate(this, null, _trigger_decorators, {
|
|
39
|
-
kind: "accessor",
|
|
40
|
-
name: "trigger",
|
|
41
|
-
static: false,
|
|
42
|
-
private: false,
|
|
43
|
-
access: {
|
|
44
|
-
has: (obj) => "trigger" in obj,
|
|
45
|
-
get: (obj) => obj.trigger,
|
|
46
|
-
set: (obj, value) => {
|
|
47
|
-
obj.trigger = value;
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
metadata: _metadata
|
|
51
|
-
}, _trigger_initializers, _trigger_extraInitializers);
|
|
52
|
-
__esDecorate(this, null, _accessibilityCloseLabel_decorators, {
|
|
53
|
-
kind: "accessor",
|
|
54
|
-
name: "accessibilityCloseLabel",
|
|
55
|
-
static: false,
|
|
56
|
-
private: false,
|
|
57
|
-
access: {
|
|
58
|
-
has: (obj) => "accessibilityCloseLabel" in obj,
|
|
59
|
-
get: (obj) => obj.accessibilityCloseLabel,
|
|
60
|
-
set: (obj, value) => {
|
|
61
|
-
obj.accessibilityCloseLabel = value;
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
metadata: _metadata
|
|
65
|
-
}, _accessibilityCloseLabel_initializers, _accessibilityCloseLabel_extraInitializers);
|
|
66
|
-
__esDecorate(this, null, __activeNavigationSection_decorators, {
|
|
67
|
-
kind: "accessor",
|
|
68
|
-
name: "_activeNavigationSection",
|
|
69
|
-
static: false,
|
|
70
|
-
private: false,
|
|
71
|
-
access: {
|
|
72
|
-
has: (obj) => "_activeNavigationSection" in obj,
|
|
73
|
-
get: (obj) => obj._activeNavigationSection,
|
|
74
|
-
set: (obj, value) => {
|
|
75
|
-
obj._activeNavigationSection = value;
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
metadata: _metadata
|
|
79
|
-
}, __activeNavigationSection_initializers, __activeNavigationSection_extraInitializers);
|
|
80
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
81
|
-
enumerable: true,
|
|
82
|
-
configurable: true,
|
|
83
|
-
writable: true,
|
|
84
|
-
value: _metadata
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
static {
|
|
88
|
-
this.elementName = "sbb-navigation";
|
|
89
|
-
}
|
|
90
|
-
static {
|
|
91
|
-
this.elementDependencies = [SbbTransparentButtonElement];
|
|
92
|
-
}
|
|
93
|
-
static {
|
|
94
|
-
this.role = "navigation";
|
|
95
|
-
}
|
|
96
|
-
static {
|
|
97
|
-
this.styles = [boxSizingStyles, unsafeCSS(navigation_default)];
|
|
98
|
-
}
|
|
99
|
-
#trigger_accessor_storage;
|
|
100
|
-
/**
|
|
101
|
-
* The element that will trigger the navigation.
|
|
102
|
-
*
|
|
103
|
-
* For attribute usage, provide an id reference.
|
|
104
|
-
*/
|
|
105
|
-
get trigger() {
|
|
106
|
-
return this.#trigger_accessor_storage;
|
|
107
|
-
}
|
|
108
|
-
set trigger(value) {
|
|
109
|
-
this.#trigger_accessor_storage = value;
|
|
110
|
-
}
|
|
111
|
-
#accessibilityCloseLabel_accessor_storage;
|
|
112
|
-
/** This will be forwarded as aria-label to the close button element. */
|
|
113
|
-
get accessibilityCloseLabel() {
|
|
114
|
-
return this.#accessibilityCloseLabel_accessor_storage;
|
|
115
|
-
}
|
|
116
|
-
set accessibilityCloseLabel(value) {
|
|
117
|
-
this.#accessibilityCloseLabel_accessor_storage = value;
|
|
118
|
-
}
|
|
119
|
-
#_activeNavigationSection_accessor_storage;
|
|
120
|
-
/** Whether a navigation section is displayed. */
|
|
121
|
-
get _activeNavigationSection() {
|
|
122
|
-
return this.#_activeNavigationSection_accessor_storage;
|
|
123
|
-
}
|
|
124
|
-
set _activeNavigationSection(value) {
|
|
125
|
-
this.#_activeNavigationSection_accessor_storage = value;
|
|
126
|
-
}
|
|
127
|
-
/** Returns the active navigation section element. */
|
|
128
|
-
get activeNavigationSection() {
|
|
129
|
-
return this._activeNavigationSection;
|
|
130
|
-
}
|
|
131
|
-
/** Returns the close button element. */
|
|
132
|
-
get closeButton() {
|
|
133
|
-
return this.shadowRoot?.querySelector("#sbb-navigation-close-button") ?? null;
|
|
134
|
-
}
|
|
135
|
-
/** Returns the navigation content element. */
|
|
136
|
-
get navigationContent() {
|
|
137
|
-
return this.shadowRoot?.querySelector(".sbb-navigation__content") ?? null;
|
|
138
|
-
}
|
|
139
|
-
constructor() {
|
|
140
|
-
super();
|
|
141
|
-
this.#trigger_accessor_storage = __runInitializers(this, _trigger_initializers, null);
|
|
142
|
-
this.#accessibilityCloseLabel_accessor_storage = (__runInitializers(this, _trigger_extraInitializers), __runInitializers(this, _accessibilityCloseLabel_initializers, ""));
|
|
143
|
-
this.#_activeNavigationSection_accessor_storage = (__runInitializers(this, _accessibilityCloseLabel_extraInitializers), __runInitializers(this, __activeNavigationSection_initializers, null));
|
|
144
|
-
this._navigation = __runInitializers(this, __activeNavigationSection_extraInitializers);
|
|
145
|
-
this._triggerElement = null;
|
|
146
|
-
this._language = new SbbLanguageController(this);
|
|
147
|
-
this._inertController = new SbbInertController(this);
|
|
148
|
-
this._escapableOverlayController = new SbbEscapableOverlayController(this);
|
|
149
|
-
this._focusTrapController = new SbbFocusTrapController(this);
|
|
150
|
-
this._scrollHandler = new SbbScrollHandler();
|
|
151
|
-
this._isPointerDownEventOnNavigation = false;
|
|
152
|
-
this._resizeObserverTimeout = null;
|
|
153
|
-
this._navigationResizeObserver = new ResizeController(this, {
|
|
154
|
-
skipInitial: true,
|
|
155
|
-
callback: () => this._onNavigationResize()
|
|
156
|
-
});
|
|
157
|
-
this._pointerDownListener = (event) => {
|
|
158
|
-
this._isPointerDownEventOnNavigation = isEventOnElement(this._navigation, event) || isEventOnElement(this.querySelector("sbb-navigation-section:is(:state(state-opened),[state--state-opened])")?.shadowRoot?.querySelector("nav.sbb-navigation-section"), event);
|
|
159
|
-
};
|
|
160
|
-
this._closeOnBackdropClick = (event) => {
|
|
161
|
-
if (!this._isPointerDownEventOnNavigation && !isEventOnElement(this._navigation, event)) this.close();
|
|
162
|
-
};
|
|
163
|
-
this.addEventListener?.("click", (event) => this._handleNavigationClose(event));
|
|
164
|
-
this.addEventListener?.("pointerup", (event) => this._closeOnBackdropClick(event));
|
|
165
|
-
this.addEventListener?.("pointerdown", (event) => this._pointerDownListener(event));
|
|
166
|
-
this.addEventListener?.("ɵnavigationsectionopening", (event) => {
|
|
167
|
-
this._activeNavigationSection = event.target;
|
|
168
|
-
this.toggleState("has-open-navigation-section", !!this._activeNavigationSection);
|
|
169
|
-
}, { capture: true });
|
|
170
|
-
this.addEventListener?.("ɵnavigationsectionclosing", (event) => {
|
|
171
|
-
if (this._activeNavigationSection === event.target) {
|
|
172
|
-
this._activeNavigationSection = null;
|
|
173
|
-
this.internals.states.delete("has-open-navigation-section");
|
|
174
|
-
}
|
|
175
|
-
}, { capture: true });
|
|
176
|
-
}
|
|
177
|
-
/** Opens the navigation. */
|
|
178
|
-
open() {
|
|
179
|
-
if (this.state !== "closed" || !this.hasUpdated || !this.dispatchBeforeOpenEvent()) return;
|
|
180
|
-
this.showPopover?.();
|
|
181
|
-
this.state = "opening";
|
|
182
|
-
this._checkActiveActions();
|
|
183
|
-
this._checkActiveSection();
|
|
184
|
-
this.startUpdate();
|
|
185
|
-
this._scrollHandler.disableScroll();
|
|
186
|
-
if (this._triggerElement) this._triggerElement.ariaExpanded = "true";
|
|
187
|
-
if (this._isZeroAnimationDuration()) this._handleOpening();
|
|
188
|
-
}
|
|
189
|
-
_checkActiveSection() {
|
|
190
|
-
this.querySelector("sbb-navigation-button.sbb-active")?.connectedSection?.open();
|
|
191
|
-
}
|
|
192
|
-
_checkActiveActions() {
|
|
193
|
-
Array.from(this.querySelectorAll(":is(sbb-navigation-button, sbb-navigation-link).sbb-active"))?.forEach((action) => action.marker?.select(action));
|
|
194
|
-
}
|
|
195
|
-
/** Closes the navigation. */
|
|
196
|
-
close() {
|
|
197
|
-
if (this.state !== "opened" || !this.dispatchBeforeCloseEvent()) return;
|
|
198
|
-
this.state = "closing";
|
|
199
|
-
this.startUpdate();
|
|
200
|
-
if (this._triggerElement) this._triggerElement.ariaExpanded = "false";
|
|
201
|
-
if (this._isZeroAnimationDuration()) this._handleClosing();
|
|
202
|
-
}
|
|
203
|
-
_isZeroAnimationDuration() {
|
|
204
|
-
return isZeroAnimationDuration(this, "--sbb-navigation-animation-duration");
|
|
205
|
-
}
|
|
206
|
-
_handleClosing() {
|
|
207
|
-
this.state = "closed";
|
|
208
|
-
this.hidePopover?.();
|
|
209
|
-
this.navigationContent?.scrollTo(0, 0);
|
|
210
|
-
this._inertController.deactivate();
|
|
211
|
-
this._triggerElement?.focus();
|
|
212
|
-
this._escapableOverlayController.disconnect();
|
|
213
|
-
this.dispatchCloseEvent();
|
|
214
|
-
this._navigationResizeObserver.unobserve(this);
|
|
215
|
-
this._resetMarkers();
|
|
216
|
-
this._focusTrapController.enabled = false;
|
|
217
|
-
this._scrollHandler.enableScroll();
|
|
218
|
-
this.completeUpdate();
|
|
219
|
-
}
|
|
220
|
-
_handleOpening() {
|
|
221
|
-
this.state = "opened";
|
|
222
|
-
this._navigationResizeObserver.observe(this);
|
|
223
|
-
this._inertController.activate();
|
|
224
|
-
this._escapableOverlayController.connect();
|
|
225
|
-
this._focusTrapController.focusInitialElement();
|
|
226
|
-
this._focusTrapController.enabled = true;
|
|
227
|
-
this.completeUpdate();
|
|
228
|
-
this.dispatchOpenEvent();
|
|
229
|
-
}
|
|
230
|
-
_configureTrigger() {
|
|
231
|
-
if (this.trigger === this._triggerElement) return;
|
|
232
|
-
this._triggerAbortController?.abort();
|
|
233
|
-
removeAriaOverlayTriggerProperties(this._triggerElement);
|
|
234
|
-
this._triggerElement = this.trigger;
|
|
235
|
-
if (!this._triggerElement) return;
|
|
236
|
-
setAriaOverlayTriggerProperties(this, this._triggerElement, "menu", this.state);
|
|
237
|
-
this._triggerAbortController = new AbortController();
|
|
238
|
-
this._triggerElement.addEventListener("click", () => this.open(), { signal: this._triggerAbortController.signal });
|
|
239
|
-
}
|
|
240
|
-
_onAnimationEnd(event) {
|
|
241
|
-
if (event.animationName === "open" && this.state === "opening") this._handleOpening();
|
|
242
|
-
else if (event.animationName === "close" && this.state === "closing") this._handleClosing();
|
|
243
|
-
}
|
|
244
|
-
_resetMarkers() {
|
|
245
|
-
Array.from(this.querySelectorAll(":is(sbb-navigation-button, sbb-navigation-link):is(:state(action-active),[state--action-active]):not(.sbb-active)"))?.forEach((action) => action.marker?.reset());
|
|
246
|
-
}
|
|
247
|
-
_handleNavigationClose(event) {
|
|
248
|
-
if (event.composedPath().filter((el) => el instanceof window.HTMLElement).some((el) => this._isCloseElement(el))) this.close();
|
|
249
|
-
}
|
|
250
|
-
_isCloseElement(element) {
|
|
251
|
-
return element.nodeName === "A" || element.hasAttribute("sbb-navigation-close") && !element.hasAttribute("disabled");
|
|
252
|
-
}
|
|
253
|
-
_onNavigationResize() {
|
|
254
|
-
if (this.state !== "opened") return;
|
|
255
|
-
if (this._resizeObserverTimeout) clearTimeout(this._resizeObserverTimeout);
|
|
256
|
-
this.internals.states.add("resize-disable-animation");
|
|
257
|
-
this._resizeObserverTimeout = setTimeout(() => this.internals.states.delete("resize-disable-animation"), DEBOUNCE_TIME);
|
|
258
|
-
}
|
|
259
|
-
connectedCallback() {
|
|
260
|
-
super.connectedCallback();
|
|
261
|
-
this.popover = "manual";
|
|
262
|
-
if (this.hasUpdated) this._configureTrigger();
|
|
263
|
-
}
|
|
264
|
-
disconnectedCallback() {
|
|
265
|
-
super.disconnectedCallback();
|
|
266
|
-
this._triggerElement = null;
|
|
267
|
-
this._triggerAbortController?.abort();
|
|
268
|
-
this._scrollHandler.enableScroll();
|
|
269
|
-
}
|
|
270
|
-
requestUpdate(name, oldValue, options) {
|
|
271
|
-
super.requestUpdate(name, oldValue, options);
|
|
272
|
-
if (!isServer && (!name || name === "trigger") && this.hasUpdated) this._configureTrigger();
|
|
273
|
-
}
|
|
274
|
-
firstUpdated(changedProperties) {
|
|
275
|
-
super.firstUpdated(changedProperties);
|
|
276
|
-
this._configureTrigger();
|
|
277
|
-
}
|
|
278
|
-
render() {
|
|
279
|
-
const closeButton = html`
|
|
280
|
-
<sbb-transparent-button
|
|
281
|
-
id="sbb-navigation-close-button"
|
|
282
|
-
class="sbb-navigation__close"
|
|
283
|
-
aria-label=${this.accessibilityCloseLabel || i18nCloseNavigation[this._language.current]}
|
|
284
|
-
aria-controls="sbb-navigation-overlay"
|
|
285
|
-
negative
|
|
286
|
-
size="m"
|
|
287
|
-
icon-name="cross-small"
|
|
288
|
-
sbb-navigation-close
|
|
289
|
-
></sbb-transparent-button>
|
|
290
|
-
`;
|
|
291
|
-
return html`
|
|
292
|
-
<div class="sbb-navigation__container">
|
|
293
|
-
<div
|
|
294
|
-
id="sbb-navigation-overlay"
|
|
295
|
-
@animationend=${this._onAnimationEnd}
|
|
296
|
-
class="sbb-navigation"
|
|
297
|
-
${ref((navigationRef) => this._navigation = navigationRef)}
|
|
298
|
-
>
|
|
299
|
-
<div class="sbb-navigation__header">${closeButton}</div>
|
|
300
|
-
<div class="sbb-navigation__wrapper">
|
|
301
|
-
<div class="sbb-navigation__content">
|
|
302
|
-
<slot></slot>
|
|
303
|
-
</div>
|
|
304
|
-
</div>
|
|
305
|
-
</div>
|
|
306
|
-
<slot name="navigation-section"></slot>
|
|
307
|
-
</div>
|
|
308
|
-
`;
|
|
309
|
-
}
|
|
310
|
-
};
|
|
311
|
-
})();
|
|
312
|
-
//#endregion
|
|
313
|
-
export { SbbNavigationElement as t };
|
|
314
|
-
|
|
315
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5jb21wb25lbnQtQ3BvQkVQNTUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL25hdmlnYXRpb24vbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNjc3M/aW5saW5lIiwiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL25hdmlnYXRpb24vbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICcuLi8uLi9jb3JlL3N0eWxlcycgYXMgc2JiO1xuXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcGVydGllcy4uLikge1xuICB0cmFuc2l0aW9uOiB7XG4gICAgZHVyYXRpb246IHZhcigtLXNiYi1uYXZpZ2F0aW9uLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1hbmltYXRpb24tZWFzaW5nKTtcbiAgICBwcm9wZXJ0eTogJHByb3BlcnRpZXM7XG4gIH1cbn1cblxuOmhvc3Qge1xuICAtLXNiYi1uYXZpZ2F0aW9uLWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tM3gpXG4gICk7XG4gIC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3I6IHZhcigtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yLWRhcmspO1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQ6IHZhcigtLXNiYi1uYXZpZ2F0aW9uLWluc2V0KTtcbiAgei1pbmRleDogdmFyKC0tc2JiLW5hdmlnYXRpb24tei1pbmRleCwgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIC0tc2JiLW5hdmlnYXRpb24tYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgICAtLXNiYi1kaXNhYmxlLWFuaW1hdGlvbi1kdXJhdGlvbixcbiAgICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNngpXG4gICAgKTtcbiAgICAtLXNiYi1uYXZpZ2F0aW9uLXdpZHRoOiBjYWxjKDEwMCUgKyB2YXIoLS1zYmItbGF5b3V0LWJhc2Utb2Zmc2V0LXJlc3BvbnNpdmUpKTtcbiAgfVxufVxuXG46aG9zdCg6aXMoOnN0YXRlKHN0YXRlLW9wZW5pbmcpLCA6c3RhdGUoc3RhdGUtb3BlbmVkKSwgOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSkge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuOmhvc3QoOnN0YXRlKHN0YXRlLW9wZW5lZCkpIHtcbiAgLS1zYmItbmF2aWdhdGlvbi1hbmltYXRpb24tZWFzaW5nOiBlYXNlLW91dDtcbn1cblxuOmhvc3QoOmlzKDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtb3BlbmluZykpKSB7XG4gIC0tc2JiLW5hdmlnYXRpb24tYmFja2Ryb3AtdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgLS1zYmItbmF2aWdhdGlvbi1iYWNrZHJvcC1wb2ludGVyLWV2ZW50czogYWxsO1xufVxuXG46aG9zdCg6bm90KDpzdGF0ZShzdGF0ZS1jbG9zZWQpKSkge1xuICAtLXNiYi1uYXZpZ2F0aW9uLWluc2V0OiAwO1xuICAtLXNiYi1uYXZpZ2F0aW9uLXRyYW5zbGF0ZTogbm9uZTtcbn1cblxuOmhvc3QoOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSB7XG4gIC0tc2JiLW5hdmlnYXRpb24tYmFja2Ryb3AtYW5pbWF0aW9uLW5hbWU6IGJhY2tkcm9wLWNsb3NlO1xufVxuXG46aG9zdCg6c3RhdGUoaGFzLW9wZW4tbmF2aWdhdGlvbi1zZWN0aW9uKSkge1xuICAtLXNiYi1uYXZpZ2F0aW9uLWNvbnRlbnQtdHJhbnNsYXRlOiAtMTAwJSAwO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogJ2xhcmdlJykge1xuICAgIC0tc2JiLW5hdmlnYXRpb24tZXhwYW5kZWQtd2lkdGg6IDEwMGR2dztcbiAgICAtLXNiYi1uYXZpZ2F0aW9uLWNvbnRlbnQtdHJhbnNsYXRlOiAwO1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZShyZXNpemUtZGlzYWJsZS1hbmltYXRpb24pKSB7XG4gIEBpbmNsdWRlIHNiYi5kaXNhYmxlLWFuaW1hdGlvbjtcbn1cblxuLnNiYi1uYXZpZ2F0aW9uX19jb250YWluZXIge1xuICBAaW5jbHVkZSBzYmIuZ3JpZC1iYXNlO1xuXG4gIHBhZGRpbmctaW5saW5lOiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNsYXRlOiB2YXIoLS1zYmItbmF2aWdhdGlvbi10cmFuc2xhdGUpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tc2JiLWxheW91dC1iYXNlLW9mZnNldC1yZXNwb25zaXZlKTtcblxuICAgIC8vIE5hdmlnYXRpb24gYmFja2Ryb3AgKG5vdCB2aXNpYmxlIG9uIG1vYmlsZSlcbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbih2aXNpYmlsaXR5KTtcblxuICAgICAgYW5pbWF0aW9uOiB7XG4gICAgICAgIG5hbWU6IHZhcigtLXNiYi1uYXZpZ2F0aW9uLWJhY2tkcm9wLWFuaW1hdGlvbi1uYW1lKTtcbiAgICAgICAgZHVyYXRpb246IHZhcigtLXNiYi1uYXZpZ2F0aW9uLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgICAgIHRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLW5hdmlnYXRpb24tYW5pbWF0aW9uLWVhc2luZyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgdmlzaWJpbGl0eTogdmFyKC0tc2JiLW5hdmlnYXRpb24tYmFja2Ryb3AtdmlzaWJpbGl0eSwgaGlkZGVuKTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1iYWNrZHJvcC1wb2ludGVyLWV2ZW50cywgbm9uZSk7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBpbnNldDogdmFyKC0tc2JiLW5hdmlnYXRpb24taW5zZXQpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLW5hdmlnYXRpb24tYmFja2Ryb3AtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4uc2JiLW5hdmlnYXRpb24ge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKHdpZHRoKTtcblxuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogdmFyKC0tc2JiLW5hdmlnYXRpb24td2lkdGgpO1xuICBncmlkLWNvbHVtbjogdmFyKC0tc2JiLW5hdmlnYXRpb24tZ3JpZC1jb2x1bW4pO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiB2YXIoLS1zYmItbmF2aWdhdGlvbi1pbmxpbmUtc3RhcnQsIDApO1xuICBpbnNldC1ibG9jay1zdGFydDogMDtcbiAgYm9yZGVyOiBub25lO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItbmF2aWdhdGlvbi1oZWlnaHQpO1xuICBjb2xvcjogdmFyKC0tc2JiLW5hdmlnYXRpb24tY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1iYWNrZ3JvdW5kLWNvbG9yKTtcblxuICAmOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24od2lkdGgpO1xuXG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1leHBhbmRlZC13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zYmItbmF2aWdhdGlvbi1oZWlnaHQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1uYXZpZ2F0aW9uLWJhY2tncm91bmQtY29sb3IpO1xuICB9XG5cbiAgOmhvc3QoOmlzKDpzdGF0ZShzdGF0ZS1vcGVuaW5nKSwgOnN0YXRlKHN0YXRlLW9wZW5lZCksIDpzdGF0ZShzdGF0ZS1jbG9zaW5nKSkpICYge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XG5cbiAgICBhbmltYXRpb246IHtcbiAgICAgIG5hbWU6IG9wZW47XG4gICAgICBkdXJhdGlvbjogdmFyKC0tc2JiLW5hdmlnYXRpb24tYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICAgIHRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLW5hdmlnYXRpb24tYW5pbWF0aW9uLWVhc2luZyk7XG4gICAgfVxuICB9XG5cbiAgOmhvc3QoOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSAmIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBhbmltYXRpb24tbmFtZTogY2xvc2U7XG4gIH1cblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgb3V0bGluZTogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0xeCkgc29saWQgQ2FudmFzVGV4dDtcbiAgfVxufVxuXG4uc2JiLW5hdmlnYXRpb25fX3dyYXBwZXIge1xuICBvdXRsaW5lOiBub25lO1xufVxuXG4uc2JiLW5hdmlnYXRpb25fX2hlYWRlciB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24od2lkdGgpO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IHZhcigtLXNiYi1uYXZpZ2F0aW9uLWV4cGFuZGVkLXdpZHRoKTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBhZGRpbmc6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpO1xuICB6LWluZGV4OiBjYWxjKHZhcigtLXNiYi1uYXZpZ2F0aW9uLXotaW5kZXgsIHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCkpICsgMSk7XG59XG5cbi5zYmItbmF2aWdhdGlvbl9fY2xvc2Uge1xuICBwb2ludGVyLWV2ZW50czogYWxsO1xufVxuXG4uc2JiLW5hdmlnYXRpb25fX2NvbnRlbnQge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zbGF0ZSk7XG4gIEBpbmNsdWRlIHNiYi5zY3JvbGxiYXIoJG5lZ2F0aXZlOiB0cnVlKTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNiYi1uYXZpZ2F0aW9uLWNvbnRlbnQtZ2FwKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IHZhcigtLXNiYi1uYXZpZ2F0aW9uLWhlaWdodCk7XG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1wYWRkaW5nLWlubGluZSk7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNiYi1uYXZpZ2F0aW9uLXBhZGRpbmctYmxvY2stc3RhcnQpIHZhcigtLXNiYi1uYXZpZ2F0aW9uLXBhZGRpbmctYmxvY2stZW5kKTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgdHJhbnNsYXRlOiB2YXIoLS1zYmItbmF2aWdhdGlvbi1jb250ZW50LXRyYW5zbGF0ZSk7XG59XG5cbjo6c2xvdHRlZCg6Zmlyc3QtY2hpbGQpIHtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zYmItbmF2aWdhdGlvbi1saXN0LW1hcmdpbi1ibG9jay1zdGFydCk7XG59XG5cbkBrZXlmcmFtZXMgb3BlbiB7XG4gIGZyb20ge1xuICAgIHRyYW5zbGF0ZTogLTEwMCUgMDtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2xhdGU6IDA7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBjbG9zZSB7XG4gIGZyb20ge1xuICAgIHRyYW5zbGF0ZTogMDtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2xhdGU6IC0xMDAlIDA7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBiYWNrZHJvcC1vcGVuIHtcbiAgZnJvbSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBiYWNrZHJvcC1jbG9zZSB7XG4gIHRvIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUmVzaXplQ29udHJvbGxlciB9IGZyb20gJ0BsaXQtbGFicy9vYnNlcnZlcnMvcmVzaXplLWNvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIHR5cGUgUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdW5zYWZlQ1NTLFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgU2JiVHJhbnNwYXJlbnRCdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9uLnB1cmUudHMnO1xuaW1wb3J0IHtcbiAgYm94U2l6aW5nU3R5bGVzLFxuICBmb3JjZVR5cGUsXG4gIGkxOG5DbG9zZU5hdmlnYXRpb24sXG4gIGlkUmVmZXJlbmNlLFxuICBpc0V2ZW50T25FbGVtZW50LFxuICBpc1plcm9BbmltYXRpb25EdXJhdGlvbixcbiAgcmVtb3ZlQXJpYU92ZXJsYXlUcmlnZ2VyUHJvcGVydGllcyxcbiAgdHlwZSBTYmJFbGVtZW50VHlwZSxcbiAgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIsXG4gIFNiYkZvY3VzVHJhcENvbnRyb2xsZXIsXG4gIFNiYkluZXJ0Q29udHJvbGxlcixcbiAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLFxuICBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgU2JiU2Nyb2xsSGFuZGxlcixcbiAgU2JiVXBkYXRlU2NoZWR1bGVyTWl4aW4sXG4gIHNldEFyaWFPdmVybGF5VHJpZ2dlclByb3BlcnRpZXMsXG59IGZyb20gJy4uLy4uL2NvcmUudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJOYXZpZ2F0aW9uQnV0dG9uRWxlbWVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tYnV0dG9uL25hdmlnYXRpb24tYnV0dG9uLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk5hdmlnYXRpb25MaW5rRWxlbWVudCB9IGZyb20gJy4uL25hdmlnYXRpb24tbGluay9uYXZpZ2F0aW9uLWxpbmsuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiTmF2aWdhdGlvblNlY3Rpb25FbGVtZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1zZWN0aW9uL25hdmlnYXRpb24tc2VjdGlvbi5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9uYXZpZ2F0aW9uLnNjc3M/aW5saW5lJztcblxuY29uc3QgREVCT1VOQ0VfVElNRSA9IDE1MDtcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhIG5hdmlnYXRpb24gbWVudSwgd3JhcHBpbmcgb25lIG9yIG1vcmUgYHNiYi1uYXZpZ2F0aW9uLSpgIGNvbXBvbmVudHMuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1uYXZpZ2F0aW9uLWJ1dHRvbmAvYHNiYi1uYXZpZ2F0aW9uLWxpbmtgIGVsZW1lbnRzIGludG8gdGhlIHNiYi1uYXZpZ2F0aW9uIG1lbnUuXG4gKiBAY3NzcHJvcCBbLS1zYmItbmF2aWdhdGlvbi16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJOYXZpZ2F0aW9uRWxlbWVudCBleHRlbmRzIFNiYlVwZGF0ZVNjaGVkdWxlck1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItbmF2aWdhdGlvbic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgZWxlbWVudERlcGVuZGVuY2llczogU2JiRWxlbWVudFR5cGVbXSA9IFtTYmJUcmFuc3BhcmVudEJ1dHRvbkVsZW1lbnRdO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnbmF2aWdhdGlvbic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBjbG9zZSBidXR0b24gZWxlbWVudC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktY2xvc2UtbGFiZWwnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqIFdoZXRoZXIgYSBuYXZpZ2F0aW9uIHNlY3Rpb24gaXMgZGlzcGxheWVkLiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIGFjY2Vzc29yIF9hY3RpdmVOYXZpZ2F0aW9uU2VjdGlvbjogU2JiTmF2aWdhdGlvblNlY3Rpb25FbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFJldHVybnMgdGhlIGFjdGl2ZSBuYXZpZ2F0aW9uIHNlY3Rpb24gZWxlbWVudC4gKi9cbiAgcHVibGljIGdldCBhY3RpdmVOYXZpZ2F0aW9uU2VjdGlvbigpOiBTYmJOYXZpZ2F0aW9uU2VjdGlvbkVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlTmF2aWdhdGlvblNlY3Rpb247XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgY2xvc2UgYnV0dG9uIGVsZW1lbnQuICovXG4gIHB1YmxpYyBnZXQgY2xvc2VCdXR0b24oKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCcjc2JiLW5hdmlnYXRpb24tY2xvc2UtYnV0dG9uJykgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBuYXZpZ2F0aW9uIGNvbnRlbnQgZWxlbWVudC4gKi9cbiAgcHVibGljIGdldCBuYXZpZ2F0aW9uQ29udGVudCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoJy5zYmItbmF2aWdhdGlvbl9fY29udGVudCcpID8/IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9uYXZpZ2F0aW9uITogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF90cmlnZ2VyQWJvcnRDb250cm9sbGVyITogQWJvcnRDb250cm9sbGVyO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2luZXJ0Q29udHJvbGxlciA9IG5ldyBTYmJJbmVydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9mb2N1c1RyYXBDb250cm9sbGVyID0gbmV3IFNiYkZvY3VzVHJhcENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX3Njcm9sbEhhbmRsZXIgPSBuZXcgU2JiU2Nyb2xsSGFuZGxlcigpO1xuICBwcml2YXRlIF9pc1BvaW50ZXJEb3duRXZlbnRPbk5hdmlnYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXJUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9uYXZpZ2F0aW9uUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgc2tpcEluaXRpYWw6IHRydWUsXG4gICAgY2FsbGJhY2s6ICgpID0+IHRoaXMuX29uTmF2aWdhdGlvblJlc2l6ZSgpLFxuICB9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LignY2xpY2snLCAoZXZlbnQpID0+IHRoaXMuX2hhbmRsZU5hdmlnYXRpb25DbG9zZShldmVudCkpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdwb2ludGVydXAnLCAoZXZlbnQpID0+IHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrKGV2ZW50KSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ3BvaW50ZXJkb3duJywgKGV2ZW50KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2ZW50KSk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oXG4gICAgICAnybVuYXZpZ2F0aW9uc2VjdGlvbm9wZW5pbmcnLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZU5hdmlnYXRpb25TZWN0aW9uID0gZXZlbnQudGFyZ2V0IGFzIFNiYk5hdmlnYXRpb25TZWN0aW9uRWxlbWVudDtcbiAgICAgICAgdGhpcy50b2dnbGVTdGF0ZSgnaGFzLW9wZW4tbmF2aWdhdGlvbi1zZWN0aW9uJywgISF0aGlzLl9hY3RpdmVOYXZpZ2F0aW9uU2VjdGlvbik7XG4gICAgICB9LFxuICAgICAgeyBjYXB0dXJlOiB0cnVlIH0sXG4gICAgKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/LihcbiAgICAgICfJtW5hdmlnYXRpb25zZWN0aW9uY2xvc2luZycsXG4gICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZU5hdmlnYXRpb25TZWN0aW9uID09PSBldmVudC50YXJnZXQpIHtcbiAgICAgICAgICB0aGlzLl9hY3RpdmVOYXZpZ2F0aW9uU2VjdGlvbiA9IG51bGw7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgnaGFzLW9wZW4tbmF2aWdhdGlvbi1zZWN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqIE9wZW5zIHRoZSBuYXZpZ2F0aW9uLiAqL1xuICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gJ2Nsb3NlZCcgfHwgIXRoaXMuaGFzVXBkYXRlZCB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93UG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLl9jaGVja0FjdGl2ZUFjdGlvbnMoKTtcbiAgICB0aGlzLl9jaGVja0FjdGl2ZVNlY3Rpb24oKTtcbiAgICB0aGlzLnN0YXJ0VXBkYXRlKCk7XG5cbiAgICAvLyBEaXNhYmxlIHNjcm9sbGluZyBmb3IgY29udGVudCBiZWxvdyB0aGUgbmF2aWdhdGlvblxuICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIuZGlzYWJsZVNjcm9sbCgpO1xuICAgIGlmICh0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYXJpYUV4cGFuZGVkID0gJ3RydWUnO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tBY3RpdmVTZWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUFjdGlvbiA9IHRoaXMucXVlcnlTZWxlY3RvcihcbiAgICAgICdzYmItbmF2aWdhdGlvbi1idXR0b24uc2JiLWFjdGl2ZScsXG4gICAgKSBhcyBTYmJOYXZpZ2F0aW9uQnV0dG9uRWxlbWVudDtcbiAgICBhY3RpdmVBY3Rpb24/LmNvbm5lY3RlZFNlY3Rpb24/Lm9wZW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrQWN0aXZlQWN0aW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVBY3Rpb25zID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnOmlzKHNiYi1uYXZpZ2F0aW9uLWJ1dHRvbiwgc2JiLW5hdmlnYXRpb24tbGluaykuc2JiLWFjdGl2ZScpLFxuICAgICkgYXMgKFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IHwgU2JiTmF2aWdhdGlvbkxpbmtFbGVtZW50KVtdO1xuICAgIGFjdGl2ZUFjdGlvbnM/LmZvckVhY2goKGFjdGlvbikgPT4gYWN0aW9uLm1hcmtlcj8uc2VsZWN0KGFjdGlvbikpO1xuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgbmF2aWdhdGlvbi4gKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSAnb3BlbmVkJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy5zdGFydFVwZGF0ZSgpO1xuICAgIGlmICh0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYXJpYUV4cGFuZGVkID0gJ2ZhbHNlJztcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGR1cmF0aW9uIGlzIHplcm8sIHRoZSBhbmltYXRpb25lbmQgZXZlbnQgaXMgbm90IGFsd2F5cyBmaXJlZCByZWxpYWJseS5cbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZGlyZWN0bHkgc2V0IHRoZSBgY2xvc2VkYCBzdGF0ZS5cbiAgICBpZiAodGhpcy5faXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKSkge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1plcm9BbmltYXRpb25EdXJhdGlvbih0aGlzLCAnLS1zYmItbmF2aWdhdGlvbi1hbmltYXRpb24tZHVyYXRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuICAgIHRoaXMubmF2aWdhdGlvbkNvbnRlbnQ/LnNjcm9sbFRvKDAsIDApO1xuICAgIHRoaXMuX2luZXJ0Q29udHJvbGxlci5kZWFjdGl2YXRlKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuZGlzcGF0Y2hDbG9zZUV2ZW50KCk7XG4gICAgdGhpcy5fbmF2aWdhdGlvblJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzKTtcbiAgICB0aGlzLl9yZXNldE1hcmtlcnMoKTtcbiAgICB0aGlzLl9mb2N1c1RyYXBDb250cm9sbGVyLmVuYWJsZWQgPSBmYWxzZTtcblxuICAgIC8vIEVuYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG5hdmlnYXRpb25cbiAgICB0aGlzLl9zY3JvbGxIYW5kbGVyLmVuYWJsZVNjcm9sbCgpO1xuICAgIHRoaXMuY29tcGxldGVVcGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIHRoaXMuX25hdmlnYXRpb25SZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMpO1xuICAgIHRoaXMuX2luZXJ0Q29udHJvbGxlci5hY3RpdmF0ZSgpO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmNvbm5lY3QoKTtcbiAgICB0aGlzLl9mb2N1c1RyYXBDb250cm9sbGVyLmZvY3VzSW5pdGlhbEVsZW1lbnQoKTtcbiAgICB0aGlzLl9mb2N1c1RyYXBDb250cm9sbGVyLmVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuY29tcGxldGVVcGRhdGUoKTtcbiAgICB0aGlzLmRpc3BhdGNoT3BlbkV2ZW50KCk7XG4gIH1cblxuICAvLyBSZW1vdmVzIHRyaWdnZXIgY2xpY2sgbGlzdGVuZXIgb24gdHJpZ2dlciBjaGFuZ2UuXG4gIC8vIENoZWNrIGlmIHRoZSB0cmlnZ2VyIGlzIHZhbGlkIGFuZCBhdHRhY2ggY2xpY2sgZXZlbnQgbGlzdGVuZXJzLlxuICBwcml2YXRlIF9jb25maWd1cmVUcmlnZ2VyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyaWdnZXIgPT09IHRoaXMuX3RyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICByZW1vdmVBcmlhT3ZlcmxheVRyaWdnZXJQcm9wZXJ0aWVzKHRoaXMuX3RyaWdnZXJFbGVtZW50KTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHRoaXMudHJpZ2dlcjtcblxuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRBcmlhT3ZlcmxheVRyaWdnZXJQcm9wZXJ0aWVzKHRoaXMsIHRoaXMuX3RyaWdnZXJFbGVtZW50LCAnbWVudScsIHRoaXMuc3RhdGUpO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEluIHJhcmUgY2FzZXMgaXQgY2FuIGJlIHRoYXQgdGhlIGFuaW1hdGlvbkVuZCBldmVudCBpcyB0cmlnZ2VyZWQgdHdpY2UuXG4gIC8vIFRvIGF2b2lkIGVudGVyaW5nIGEgY29ycnVwdCBzdGF0ZSwgZXhpdCB3aGVuIHN0YXRlIGlzIG5vdCBleHBlY3RlZC5cbiAgcHJpdmF0ZSBfb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRNYXJrZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUFjdGlvbnMgPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAnOmlzKHNiYi1uYXZpZ2F0aW9uLWJ1dHRvbiwgc2JiLW5hdmlnYXRpb24tbGluayk6c3RhdGUoYWN0aW9uLWFjdGl2ZSk6bm90KC5zYmItYWN0aXZlKScsXG4gICAgICApLFxuICAgICkgYXMgKFNiYk5hdmlnYXRpb25CdXR0b25FbGVtZW50IHwgU2JiTmF2aWdhdGlvbkxpbmtFbGVtZW50KVtdO1xuICAgIGFjdGl2ZUFjdGlvbnM/LmZvckVhY2goKGFjdGlvbikgPT4gYWN0aW9uLm1hcmtlcj8ucmVzZXQoKSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVOYXZpZ2F0aW9uQ2xvc2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9zZWRQYXRoRWxlbWVudHMgPSBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuZmlsdGVyKChlbCkgPT4gZWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQpO1xuICAgIGlmIChjb21wb3NlZFBhdGhFbGVtZW50cy5zb21lKChlbCkgPT4gdGhpcy5faXNDbG9zZUVsZW1lbnQoZWwgYXMgSFRNTEVsZW1lbnQpKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzQ2xvc2VFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGVsZW1lbnQubm9kZU5hbWUgPT09ICdBJyB8fFxuICAgICAgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdzYmItbmF2aWdhdGlvbi1jbG9zZScpICYmICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSlcbiAgICApO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHBvaW50ZXJkb3duIGV2ZW50IHRhcmdldCBpcyB0cmlnZ2VyZWQgb24gdGhlIG5hdmlnYXRpb24uXG4gIHByaXZhdGUgX3BvaW50ZXJEb3duTGlzdGVuZXIgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTmF2aWdhdGlvbiA9XG4gICAgICBpc0V2ZW50T25FbGVtZW50KHRoaXMuX25hdmlnYXRpb24sIGV2ZW50KSB8fFxuICAgICAgaXNFdmVudE9uRWxlbWVudChcbiAgICAgICAgdGhpcy5xdWVyeVNlbGVjdG9yKCdzYmItbmF2aWdhdGlvbi1zZWN0aW9uOnN0YXRlKHN0YXRlLW9wZW5lZCknKT8uc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAnbmF2LnNiYi1uYXZpZ2F0aW9uLXNlY3Rpb24nLFxuICAgICAgICApIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICBldmVudCxcbiAgICAgICk7XG4gIH07XG5cbiAgLy8gQ2xvc2UgbmF2aWdhdGlvbiBvbiBiYWNrZHJvcCBjbGljay5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25OYXZpZ2F0aW9uICYmICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX25hdmlnYXRpb24sIGV2ZW50KSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9vbk5hdmlnYXRpb25SZXNpemUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc2l6ZU9ic2VydmVyVGltZW91dCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmFkZCgncmVzaXplLWRpc2FibGUtYW5pbWF0aW9uJyk7XG5cbiAgICAvLyBEaXNhYmxlIHRoZSBhbmltYXRpb24gd2hlbiByZXNpemluZyB0aGUgbmF2aWdhdGlvbiB0byBhdm9pZCBzdHJhbmdlIGhlaWdodCB0cmFuc2l0aW9uIGVmZmVjdHMuXG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXJUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICgpID0+IHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoJ3Jlc2l6ZS1kaXNhYmxlLWFuaW1hdGlvbicpLFxuICAgICAgREVCT1VOQ0VfVElNRSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgaWYgKHRoaXMuaGFzVXBkYXRlZCkge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX3Njcm9sbEhhbmRsZXIuZW5hYmxlU2Nyb2xsKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcblxuICAgIGlmICghaXNTZXJ2ZXIgJiYgKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykgJiYgdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIHRoaXMuX2NvbmZpZ3VyZVRyaWdnZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGNsb3NlQnV0dG9uID0gaHRtbGBcbiAgICAgIDxzYmItdHJhbnNwYXJlbnQtYnV0dG9uXG4gICAgICAgIGlkPVwic2JiLW5hdmlnYXRpb24tY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJzYmItbmF2aWdhdGlvbl9fY2xvc2VcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7dGhpcy5hY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbCB8fCBpMThuQ2xvc2VOYXZpZ2F0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfVxuICAgICAgICBhcmlhLWNvbnRyb2xzPVwic2JiLW5hdmlnYXRpb24tb3ZlcmxheVwiXG4gICAgICAgIG5lZ2F0aXZlXG4gICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgaWNvbi1uYW1lPVwiY3Jvc3Mtc21hbGxcIlxuICAgICAgICBzYmItbmF2aWdhdGlvbi1jbG9zZVxuICAgICAgPjwvc2JiLXRyYW5zcGFyZW50LWJ1dHRvbj5cbiAgICBgO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLW5hdmlnYXRpb25fX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgaWQ9XCJzYmItbmF2aWdhdGlvbi1vdmVybGF5XCJcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25BbmltYXRpb25FbmR9XG4gICAgICAgICAgY2xhc3M9XCJzYmItbmF2aWdhdGlvblwiXG4gICAgICAgICAgJHtyZWYoKG5hdmlnYXRpb25SZWY/OiBFbGVtZW50KSA9PiAodGhpcy5fbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25SZWYgYXMgSFRNTERpdkVsZW1lbnQpKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbmF2aWdhdGlvbl9faGVhZGVyXCI+JHtjbG9zZUJ1dHRvbn08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLW5hdmlnYXRpb25fX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItbmF2aWdhdGlvbl9fY29udGVudFwiPlxuICAgICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzbG90IG5hbWU9XCJuYXZpZ2F0aW9uLXNlY3Rpb25cIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItbmF2aWdhdGlvbic6IFNiYk5hdmlnYXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FDc0NBLElBQU0sZ0JBQWdCOzs7Ozs7Ozs7SUFVVCw4QkFBb0I7bUJBQVMsd0JBQXdCLHdCQUF3Qjs7Ozs7Ozs7OztjQUE3RSw2QkFBNkIsWUFBZ0Q7OzswQkFXdkYsYUFBYSxFQUNiLFVBQVUsQ0FBQTswQ0FJVixXQUFXLEVBQ1gsU0FBUyxFQUFFLFdBQVcsNkJBQTZCLENBQUMsQ0FBQTsyQ0FJcEQsT0FBTyxDQUFBO0FBUlIsZ0JBQUEsTUFBQSxNQUFBLHFCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsYUFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFPLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBUCxVQUFPOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsdUJBQUEsMkJBQUE7QUFLdkIsZ0JBQUEsTUFBQSxNQUFBLHFDQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsNkJBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBdUIsTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUF2QiwwQkFBdUI7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSx1Q0FBQSwyQ0FBQTtBQUc5QixnQkFBQSxNQUFBLE1BQUEsc0NBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSw4QkFBQTtLQUFBLE1BQUEsUUFBQSxJQUFpQjtLQUF3QixNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQXhCLDJCQUF3Qjs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLHdDQUFBLDRDQUFBOzs7Ozs7Ozs7QUFwQmxCLFFBQUEsY0FBc0I7OztBQUMvQixRQUFBLHNCQUF3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
|
|
@@ -1,206 +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 { 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-width: var(--sbb-spacing-fixed-3x);\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::-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
|
-
/**
|
|
15
|
-
* It displays an interactive overlay element.
|
|
16
|
-
*
|
|
17
|
-
* @slot - Use the unnamed slot to provide a content for the overlay.
|
|
18
|
-
* @cssprop [--sbb-overlay-z-index=var(--sbb-overlay-default-z-index)] - To specify a custom stack order,
|
|
19
|
-
* the `z-index` can be overridden by defining this CSS variable. The default `z-index` of the
|
|
20
|
-
* component is set to `var(--sbb-overlay-default-z-index)` with a value of `1000`.
|
|
21
|
-
*/
|
|
22
|
-
var SbbOverlayElement = (() => {
|
|
23
|
-
let _classSuper = SbbOverlayBaseElement;
|
|
24
|
-
let _expanded_decorators;
|
|
25
|
-
let _expanded_initializers = [];
|
|
26
|
-
let _expanded_extraInitializers = [];
|
|
27
|
-
let _accessibilityCloseLabel_decorators;
|
|
28
|
-
let _accessibilityCloseLabel_initializers = [];
|
|
29
|
-
let _accessibilityCloseLabel_extraInitializers = [];
|
|
30
|
-
return class SbbOverlayElement extends _classSuper {
|
|
31
|
-
constructor() {
|
|
32
|
-
super(...arguments);
|
|
33
|
-
this.#expanded_accessor_storage = __runInitializers(this, _expanded_initializers, false);
|
|
34
|
-
this.#accessibilityCloseLabel_accessor_storage = (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _accessibilityCloseLabel_initializers, ""));
|
|
35
|
-
this.closeAttribute = (__runInitializers(this, _accessibilityCloseLabel_extraInitializers), "sbb-overlay-close");
|
|
36
|
-
this._overlayContentElement = null;
|
|
37
|
-
}
|
|
38
|
-
static {
|
|
39
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
40
|
-
_expanded_decorators = [forceType(), property({
|
|
41
|
-
reflect: true,
|
|
42
|
-
type: Boolean
|
|
43
|
-
})];
|
|
44
|
-
_accessibilityCloseLabel_decorators = [forceType(), property({ attribute: "accessibility-close-label" })];
|
|
45
|
-
__esDecorate(this, null, _expanded_decorators, {
|
|
46
|
-
kind: "accessor",
|
|
47
|
-
name: "expanded",
|
|
48
|
-
static: false,
|
|
49
|
-
private: false,
|
|
50
|
-
access: {
|
|
51
|
-
has: (obj) => "expanded" in obj,
|
|
52
|
-
get: (obj) => obj.expanded,
|
|
53
|
-
set: (obj, value) => {
|
|
54
|
-
obj.expanded = value;
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
metadata: _metadata
|
|
58
|
-
}, _expanded_initializers, _expanded_extraInitializers);
|
|
59
|
-
__esDecorate(this, null, _accessibilityCloseLabel_decorators, {
|
|
60
|
-
kind: "accessor",
|
|
61
|
-
name: "accessibilityCloseLabel",
|
|
62
|
-
static: false,
|
|
63
|
-
private: false,
|
|
64
|
-
access: {
|
|
65
|
-
has: (obj) => "accessibilityCloseLabel" in obj,
|
|
66
|
-
get: (obj) => obj.accessibilityCloseLabel,
|
|
67
|
-
set: (obj, value) => {
|
|
68
|
-
obj.accessibilityCloseLabel = value;
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
metadata: _metadata
|
|
72
|
-
}, _accessibilityCloseLabel_initializers, _accessibilityCloseLabel_extraInitializers);
|
|
73
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
74
|
-
enumerable: true,
|
|
75
|
-
configurable: true,
|
|
76
|
-
writable: true,
|
|
77
|
-
value: _metadata
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
static {
|
|
81
|
-
this.elementName = "sbb-overlay";
|
|
82
|
-
}
|
|
83
|
-
static {
|
|
84
|
-
this.elementDependencies = [SbbSecondaryButtonElement, SbbContainerElement];
|
|
85
|
-
}
|
|
86
|
-
static {
|
|
87
|
-
this.styles = [unsafeCSS(overlay_default)];
|
|
88
|
-
}
|
|
89
|
-
static {
|
|
90
|
-
this.events = {
|
|
91
|
-
beforeopen: "beforeopen",
|
|
92
|
-
open: "open",
|
|
93
|
-
beforeclose: "beforeclose",
|
|
94
|
-
close: "close"
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
#expanded_accessor_storage;
|
|
98
|
-
/**
|
|
99
|
-
* Whether to allow the overlay content to stretch to full width.
|
|
100
|
-
* By default, the content has the appropriate page size.
|
|
101
|
-
*/
|
|
102
|
-
get expanded() {
|
|
103
|
-
return this.#expanded_accessor_storage;
|
|
104
|
-
}
|
|
105
|
-
set expanded(value) {
|
|
106
|
-
this.#expanded_accessor_storage = value;
|
|
107
|
-
}
|
|
108
|
-
#accessibilityCloseLabel_accessor_storage;
|
|
109
|
-
/** This will be forwarded as aria-label to the close button element. */
|
|
110
|
-
get accessibilityCloseLabel() {
|
|
111
|
-
return this.#accessibilityCloseLabel_accessor_storage;
|
|
112
|
-
}
|
|
113
|
-
set accessibilityCloseLabel(value) {
|
|
114
|
-
this.#accessibilityCloseLabel_accessor_storage = value;
|
|
115
|
-
}
|
|
116
|
-
firstUpdated(changedProperties) {
|
|
117
|
-
super.firstUpdated(changedProperties);
|
|
118
|
-
if (this.isOpen) this.setAriaLiveRefContent();
|
|
119
|
-
}
|
|
120
|
-
isZeroAnimationDuration() {
|
|
121
|
-
return isZeroAnimationDuration(this, "--sbb-overlay-animation-duration");
|
|
122
|
-
}
|
|
123
|
-
handleOpening() {
|
|
124
|
-
this.state = "opened";
|
|
125
|
-
this.inertController.activate();
|
|
126
|
-
this.focusTrapController.focusInitialElement();
|
|
127
|
-
setTimeout(() => this.setAriaLiveRefContent(this.accessibilityLabel));
|
|
128
|
-
this.focusTrapController.enabled = true;
|
|
129
|
-
this.dispatchOpenEvent();
|
|
130
|
-
}
|
|
131
|
-
handleClosing() {
|
|
132
|
-
this._overlayContentElement?.scrollTo(0, 0);
|
|
133
|
-
this.state = "closed";
|
|
134
|
-
this.hidePopover?.();
|
|
135
|
-
this.inertController.deactivate();
|
|
136
|
-
if (!this.skipFocusRestoration) this.lastFocusedElement?.focus();
|
|
137
|
-
this.openOverlayController?.abort();
|
|
138
|
-
this.focusTrapController.enabled = false;
|
|
139
|
-
this.removeInstanceFromGlobalCollection();
|
|
140
|
-
if (!overlayRefs.length) this.scrollHandler.enableScroll();
|
|
141
|
-
this.escapableOverlayController.disconnect();
|
|
142
|
-
this.dispatchCloseEvent({
|
|
143
|
-
returnValue: this.returnValue,
|
|
144
|
-
closeTarget: this.overlayCloseElement
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
dispatchBeforeCloseEvent(_detail) {
|
|
148
|
-
/** @type {SbbOverlayCloseEvent} Emits whenever the component begins the closing transition. Can be canceled. */
|
|
149
|
-
return this.dispatchEvent(new SbbOverlayCloseEvent("beforeclose", {
|
|
150
|
-
cancelable: true,
|
|
151
|
-
closeAttribute: this.closeAttribute,
|
|
152
|
-
closeTarget: this.overlayCloseElement,
|
|
153
|
-
result: this.returnValue
|
|
154
|
-
}));
|
|
155
|
-
}
|
|
156
|
-
dispatchCloseEvent(_detail) {
|
|
157
|
-
/** @type {SbbOverlayCloseEvent} Emits whenever the component is closed. */
|
|
158
|
-
return this.dispatchEvent(new SbbOverlayCloseEvent("close", {
|
|
159
|
-
closeAttribute: this.closeAttribute,
|
|
160
|
-
closeTarget: this.overlayCloseElement,
|
|
161
|
-
result: this.returnValue
|
|
162
|
-
}));
|
|
163
|
-
}
|
|
164
|
-
render() {
|
|
165
|
-
return html$1`
|
|
166
|
-
<div class="sbb-overlay__container" @animationend=${this.onOverlayAnimationEnd}>
|
|
167
|
-
<div class="sbb-overlay">
|
|
168
|
-
<div
|
|
169
|
-
@click=${(event) => this.closeOnSbbOverlayCloseClick(event)}
|
|
170
|
-
class="sbb-overlay__wrapper"
|
|
171
|
-
>
|
|
172
|
-
<div class="sbb-overlay__header">
|
|
173
|
-
<sbb-secondary-button
|
|
174
|
-
class="sbb-overlay__close"
|
|
175
|
-
aria-label="${this.accessibilityCloseLabel || i18nCloseDialog[this.language.current]}"
|
|
176
|
-
?negative=${this.negative}
|
|
177
|
-
size="m"
|
|
178
|
-
icon-name="cross-small"
|
|
179
|
-
sbb-overlay-close
|
|
180
|
-
></sbb-secondary-button>
|
|
181
|
-
</div>
|
|
182
|
-
<div
|
|
183
|
-
class="sbb-overlay__content"
|
|
184
|
-
${ref((el) => this._overlayContentElement = el)}
|
|
185
|
-
@scroll=${(e) => forwardEvent(e, document)}
|
|
186
|
-
>
|
|
187
|
-
<sbb-container
|
|
188
|
-
class="sbb-overlay__content-container"
|
|
189
|
-
?expanded=${this.expanded}
|
|
190
|
-
color="transparent"
|
|
191
|
-
>
|
|
192
|
-
<slot></slot>
|
|
193
|
-
</sbb-container>
|
|
194
|
-
</div>
|
|
195
|
-
</div>
|
|
196
|
-
</div>
|
|
197
|
-
</div>
|
|
198
|
-
<span class="sbb-screen-reader-only" aria-live="polite"></span>
|
|
199
|
-
`;
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
})();
|
|
203
|
-
//#endregion
|
|
204
|
-
export { SbbOverlayElement as t };
|
|
205
|
-
|
|
206
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5jb21wb25lbnQtQ0NfcXVIWUkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL292ZXJsYXkvb3ZlcmxheS5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4uL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5cbjpob3N0IHtcbiAgQGluY2x1ZGUgc2JiLnNjcm9sbGJhci12YXJpYWJsZXM7XG5cbiAgLS1fc2JiLW92ZXJsYXktcGFkZGluZy1ibG9jazogY2FsYyhcbiAgICB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0xNHgpICsgdmFyKC0tc2JiLXNwYWNpbmctcmVzcG9uc2l2ZS1sKVxuICApO1xuICAtLXNiYi1vdmVybGF5LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKFxuICAgIC0tc2JiLWRpc2FibGUtYW5pbWF0aW9uLWR1cmF0aW9uLFxuICAgIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tNngpXG4gICk7XG5cbiAgZGlzcGxheTogdmFyKC0tc2JiLW92ZXJsYXktZGlzcGxheSk7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQ6IHZhcigtLXNiYi1vdmVybGF5LWluc2V0KTtcbiAgei1pbmRleDogdmFyKC0tc2JiLW92ZXJsYXktei1pbmRleCwgdmFyKC0tc2JiLW92ZXJsYXktZGVmYXVsdC16LWluZGV4KSk7XG59XG5cbjpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSB7XG4gIC0tc2JiLW92ZXJsYXktZGlzcGxheTogYmxvY2s7XG4gIC0tc2JiLW92ZXJsYXktY29udGFpbmVyLWRpc3BsYXk6IGZsZXg7XG59XG5cbjpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpKSkge1xuICAtLXNiYi1vdmVybGF5LXBvaW50ZXItZXZlbnRzOiBhbGw7XG59XG5cbjpob3N0KFtuZWdhdGl2ZV0pIHtcbiAgQGluY2x1ZGUgc2JiLnNjcm9sbGJhci12YXJpYWJsZXMtLWNvbG9yLW5lZ2F0aXZlO1xuXG4gIC0tc2JiLWZvY3VzLW91dGxpbmUtY29sb3I6IHZhcigtLXNiYi1mb2N1cy1vdXRsaW5lLWNvbG9yLWRhcmspO1xuICAtLXNiYi1vdmVybGF5LWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMS1uZWdhdGl2ZSk7XG4gIC0tc2JiLW92ZXJsYXktYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMy1uZWdhdGl2ZSk7XG59XG5cbjpob3N0KDpub3QoOnN0YXRlKHN0YXRlLWNsb3NlZCkpKSB7XG4gIC0tc2JiLW92ZXJsYXktaW5zZXQ6IDA7XG59XG5cbi5zYmItb3ZlcmxheV9fY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLW92ZXJsYXktYmFja2dyb3VuZC1jb2xvcik7XG4gIHBvaW50ZXItZXZlbnRzOiB2YXIoLS1zYmItb3ZlcmxheS1wb2ludGVyLWV2ZW50cyk7XG4gIGRpc3BsYXk6IHZhcigtLXNiYi1vdmVybGF5LWNvbnRhaW5lci1kaXNwbGF5KTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBpbnNldDogdmFyKC0tc2JiLW92ZXJsYXktaW5zZXQpO1xuXG4gIDpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSAmIHtcbiAgICBhbmltYXRpb246IHtcbiAgICAgIG5hbWU6IG9wZW47XG4gICAgICBkdXJhdGlvbjogdmFyKC0tc2JiLW92ZXJsYXktYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICAgIHRpbWluZy1mdW5jdGlvbjogdmFyKC0tc2JiLW92ZXJsYXktYW5pbWF0aW9uLWVhc2luZyk7XG4gICAgfVxuICB9XG5cbiAgOmhvc3QoOnN0YXRlKHN0YXRlLWNsb3NpbmcpKSAmIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBhbmltYXRpb24tbmFtZTogY2xvc2U7XG4gIH1cbn1cblxuLnNiYi1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldC1pbmxpbmU6IDA7XG4gIG1hcmdpbjogYXV0bztcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiBub25lO1xuICBoZWlnaHQ6IHZhcigtLXNiYi1vdmVybGF5LWhlaWdodCk7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBjb2xvcjogdmFyKC0tc2JiLW92ZXJsYXktY29sb3IpO1xuXG4gIDpob3N0KDppcyg6c3RhdGUoc3RhdGUtb3BlbmluZyksIDpzdGF0ZShzdGF0ZS1vcGVuZWQpLCA6c3RhdGUoc3RhdGUtY2xvc2luZykpKSAmIHtcbiAgICBhbmltYXRpb246IHtcbiAgICAgIG5hbWU6IG9wZW4tbW92ZS1pbjtcbiAgICAgIGR1cmF0aW9uOiB2YXIoLS1zYmItb3ZlcmxheS1hbmltYXRpb24tZHVyYXRpb24pO1xuICAgICAgdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1zYmItb3ZlcmxheS1hbmltYXRpb24tZWFzaW5nKTtcbiAgICB9XG4gIH1cblxuICA6aG9zdCg6c3RhdGUoc3RhdGUtY2xvc2luZykpICYge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBjbG9zZS1tb3ZlLW91dDtcbiAgfVxufVxuXG4uc2JiLW92ZXJsYXlfX3dyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItb3ZlcmxheS1oZWlnaHQpO1xuICBvdXRsaW5lOiBub25lO1xuICBwb3NpdGlvbjogZml4ZWQ7XG5cbiAgQGluY2x1ZGUgc2JiLm1xKCRmcm9tOiBsYXJnZSkge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi5zYmItb3ZlcmxheV9faGVhZGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IHZhcigtLXNiYi1zcGFjaW5nLXJlc3BvbnNpdmUteHMpO1xuICBwYWRkaW5nLWJsb2NrLWVuZDogMDtcbiAgei1pbmRleDogMTtcblxuICAqIHtcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICB9XG59XG5cbi5zYmItb3ZlcmxheV9fY2xvc2Uge1xuICBtYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvO1xufVxuXG4uc2JiLW92ZXJsYXlfX2NvbnRlbnQge1xuICBAaW5jbHVkZSBzYmIuc2Nyb2xsYmFyLXJ1bGVzO1xuXG4gIGhlaWdodDogMTAwdmg7XG4gIG92ZXJmbG93OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5zYmItb3ZlcmxheV9fY29udGVudC1jb250YWluZXIge1xuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1fc2JiLW92ZXJsYXktcGFkZGluZy1ibG9jayk7XG59XG5cbi8vIEl0IGlzIG5lY2Vzc2FyeSB0byB1c2UgYW5pbWF0aW9ucyB3aXRoIGtleWZyYW1lcyBpbnN0ZWFkIG9mIHRyYW5zaXRpb25zIGluIG9yZGVyIG5vdCB0byBhbHRlclxuLy8gdGhlIGRlZmF1bHQgYGRpc3BsYXk6IGJsb2NrYCBvZiB0aGUgbW9kYWwgb3RoZXJ3aXNlIGl0IGNhdXNlcyBzZXZlcmFsIHByb2JsZW1zLFxuLy8gZXNwZWNpYWxseSBmb3IgYWNjZXNzaWJpbGl0eS5cbkBrZXlmcmFtZXMgb3BlbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIG9wZW4tbW92ZS1pbiB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1zYmItc3BhY2luZy1maXhlZC00eCkpO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBjbG9zZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNsb3NlLW1vdmUtb3V0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgdHlwZSBDU1NSZXN1bHRHcm91cCwgdHlwZSBQcm9wZXJ0eVZhbHVlcywgdHlwZSBUZW1wbGF0ZVJlc3VsdCwgdW5zYWZlQ1NTIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcbmltcG9ydCB7IGh0bWwgfSBmcm9tICdsaXQvc3RhdGljLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBTYmJTZWNvbmRhcnlCdXR0b25FbGVtZW50IH0gZnJvbSAnLi4vYnV0dG9uLnB1cmUudHMnO1xuaW1wb3J0IHsgU2JiQ29udGFpbmVyRWxlbWVudCB9IGZyb20gJy4uL2NvbnRhaW5lci5wdXJlLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRWxlbWVudFR5cGUsIFNiYk92ZXJsYXlDbG9zZUV2ZW50RGV0YWlscyB9IGZyb20gJy4uL2NvcmUudHMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlLCBmb3J3YXJkRXZlbnQsIGkxOG5DbG9zZURpYWxvZywgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi9jb3JlLnRzJztcblxuaW1wb3J0IHtcbiAgb3ZlcmxheVJlZnMsXG4gIFNiYk92ZXJsYXlCYXNlRWxlbWVudCxcbiAgU2JiT3ZlcmxheUNsb3NlRXZlbnQsXG59IGZyb20gJy4vb3ZlcmxheS1iYXNlLWVsZW1lbnQudHMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vb3ZlcmxheS5zY3NzP2lubGluZSc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaW50ZXJhY3RpdmUgb3ZlcmxheSBlbGVtZW50LlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gcHJvdmlkZSBhIGNvbnRlbnQgZm9yIHRoZSBvdmVybGF5LlxuICogQGNzc3Byb3AgWy0tc2JiLW92ZXJsYXktei1pbmRleD12YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpXSAtIFRvIHNwZWNpZnkgYSBjdXN0b20gc3RhY2sgb3JkZXIsXG4gKiB0aGUgYHotaW5kZXhgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nIHRoaXMgQ1NTIHZhcmlhYmxlLiBUaGUgZGVmYXVsdCBgei1pbmRleGAgb2YgdGhlXG4gKiBjb21wb25lbnQgaXMgc2V0IHRvIGB2YXIoLS1zYmItb3ZlcmxheS1kZWZhdWx0LXotaW5kZXgpYCB3aXRoIGEgdmFsdWUgb2YgYDEwMDBgLlxuICovXG5leHBvcnQgY2xhc3MgU2JiT3ZlcmxheUVsZW1lbnQgZXh0ZW5kcyBTYmJPdmVybGF5QmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IGVsZW1lbnROYW1lOiBzdHJpbmcgPSAnc2JiLW92ZXJsYXknO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbXG4gICAgU2JiU2Vjb25kYXJ5QnV0dG9uRWxlbWVudCxcbiAgICBTYmJDb250YWluZXJFbGVtZW50LFxuICBdO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgLy8gVE9ETzogZml4IHVzaW5nIC4uLnN1cGVyLmV2ZW50cyByZXF1aXJlczogaHR0cHM6Ly9naXRodWIuY29tL3NiYi1kZXNpZ24tc3lzdGVtcy9seW5lLWNvbXBvbmVudHMvaXNzdWVzLzI2MDBcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBldmVudHMgPSB7XG4gICAgYmVmb3Jlb3BlbjogJ2JlZm9yZW9wZW4nLFxuICAgIG9wZW46ICdvcGVuJyxcbiAgICBiZWZvcmVjbG9zZTogJ2JlZm9yZWNsb3NlJyxcbiAgICBjbG9zZTogJ2Nsb3NlJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyB0aGUgb3ZlcmxheSBjb250ZW50IHRvIHN0cmV0Y2ggdG8gZnVsbCB3aWR0aC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbnRlbnQgaGFzIHRoZSBhcHByb3ByaWF0ZSBwYWdlIHNpemUuXG4gICAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogVGhpcyB3aWxsIGJlIGZvcndhcmRlZCBhcyBhcmlhLWxhYmVsIHRvIHRoZSBjbG9zZSBidXR0b24gZWxlbWVudC4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FjY2Vzc2liaWxpdHktY2xvc2UtbGFiZWwnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhY2Nlc3NpYmlsaXR5Q2xvc2VMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgcHJvdGVjdGVkIGNsb3NlQXR0cmlidXRlOiBzdHJpbmcgPSAnc2JiLW92ZXJsYXktY2xvc2UnO1xuICBwcml2YXRlIF9vdmVybGF5Q29udGVudEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgLy8gSWYgdGhlIGNvbXBvbmVudCBpcyBhbHJlYWR5IG9wZW4gb24gZmlyc3RVcGRhdGUsIGFubm91bmNlIHRoZSB0aXRsZVxuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5zZXRBcmlhTGl2ZVJlZkNvbnRlbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKHRoaXMsICctLXNiYi1vdmVybGF5LWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIHRoaXMuaW5lcnRDb250cm9sbGVyLmFjdGl2YXRlKCk7XG4gICAgdGhpcy5mb2N1c1RyYXBDb250cm9sbGVyLmZvY3VzSW5pdGlhbEVsZW1lbnQoKTtcbiAgICAvLyBVc2UgdGltZW91dCB0byByZWFkIGxhYmVsIGFmdGVyIGZvY3VzZWQgZWxlbWVudFxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRBcmlhTGl2ZVJlZkNvbnRlbnQodGhpcy5hY2Nlc3NpYmlsaXR5TGFiZWwpKTtcbiAgICB0aGlzLmZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGhhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5fb3ZlcmxheUNvbnRlbnRFbGVtZW50Py5zY3JvbGxUbygwLCAwKTtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5oaWRlUG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5pbmVydENvbnRyb2xsZXIuZGVhY3RpdmF0ZSgpO1xuICAgIGlmICghdGhpcy5za2lwRm9jdXNSZXN0b3JhdGlvbikge1xuICAgICAgLy8gTWFudWFsbHkgZm9jdXMgbGFzdCBmb2N1c2VkIGVsZW1lbnRcbiAgICAgIHRoaXMubGFzdEZvY3VzZWRFbGVtZW50Py5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLm9wZW5PdmVybGF5Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLmZvY3VzVHJhcENvbnRyb2xsZXIuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMucmVtb3ZlSW5zdGFuY2VGcm9tR2xvYmFsQ29sbGVjdGlvbigpO1xuICAgIC8vIEVuYWJsZSBzY3JvbGxpbmcgZm9yIGNvbnRlbnQgYmVsb3cgdGhlIG92ZXJsYXkgaWYgbm8gb3ZlcmxheSBpcyBvcGVuXG4gICAgaWYgKCFvdmVybGF5UmVmcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5lbmFibGVTY3JvbGwoKTtcbiAgICB9XG4gICAgdGhpcy5lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaENsb3NlRXZlbnQoe1xuICAgICAgcmV0dXJuVmFsdWU6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICBjbG9zZVRhcmdldDogdGhpcy5vdmVybGF5Q2xvc2VFbGVtZW50LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gVE9ETzogcmVtb3ZlIHBhcmFtZXRlciBgZGV0YWlsYFxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZGlzcGF0Y2hCZWZvcmVDbG9zZUV2ZW50KF9kZXRhaWw/OiBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMpOiBib29sZWFuIHtcbiAgICAvKiogQHR5cGUge1NiYk92ZXJsYXlDbG9zZUV2ZW50fSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGJlZ2lucyB0aGUgY2xvc2luZyB0cmFuc2l0aW9uLiBDYW4gYmUgY2FuY2VsZWQuICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBTYmJPdmVybGF5Q2xvc2VFdmVudCgnYmVmb3JlY2xvc2UnLCB7XG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGNsb3NlQXR0cmlidXRlOiB0aGlzLmNsb3NlQXR0cmlidXRlLFxuICAgICAgICBjbG9zZVRhcmdldDogdGhpcy5vdmVybGF5Q2xvc2VFbGVtZW50LFxuICAgICAgICByZXN1bHQ6IHRoaXMucmV0dXJuVmFsdWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLy8gVE9ETzogcmVtb3ZlIHBhcmFtZXRlciBgZGV0YWlsYFxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZGlzcGF0Y2hDbG9zZUV2ZW50KF9kZXRhaWw/OiBTYmJPdmVybGF5Q2xvc2VFdmVudERldGFpbHMpOiBib29sZWFuIHtcbiAgICAvKiogQHR5cGUge1NiYk92ZXJsYXlDbG9zZUV2ZW50fSBFbWl0cyB3aGVuZXZlciB0aGUgY29tcG9uZW50IGlzIGNsb3NlZC4gKi9cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IFNiYk92ZXJsYXlDbG9zZUV2ZW50KCdjbG9zZScsIHtcbiAgICAgICAgY2xvc2VBdHRyaWJ1dGU6IHRoaXMuY2xvc2VBdHRyaWJ1dGUsXG4gICAgICAgIGNsb3NlVGFyZ2V0OiB0aGlzLm92ZXJsYXlDbG9zZUVsZW1lbnQsXG4gICAgICAgIHJlc3VsdDogdGhpcy5yZXR1cm5WYWx1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGFpbmVyXCIgQGFuaW1hdGlvbmVuZD0ke3RoaXMub25PdmVybGF5QW5pbWF0aW9uRW5kfT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgQGNsaWNrPSR7KGV2ZW50OiBFdmVudCkgPT4gdGhpcy5jbG9zZU9uU2JiT3ZlcmxheUNsb3NlQ2xpY2soZXZlbnQpfVxuICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fd3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1vdmVybGF5X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHNiYi1zZWNvbmRhcnktYnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY2xvc2VcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCIke3RoaXMuYWNjZXNzaWJpbGl0eUNsb3NlTGFiZWwgfHxcbiAgICAgICAgICAgICAgICBpMThuQ2xvc2VEaWFsb2dbdGhpcy5sYW5ndWFnZS5jdXJyZW50XX1cIlxuICAgICAgICAgICAgICAgID9uZWdhdGl2ZT0ke3RoaXMubmVnYXRpdmV9XG4gICAgICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgICAgIGljb24tbmFtZT1cImNyb3NzLXNtYWxsXCJcbiAgICAgICAgICAgICAgICBzYmItb3ZlcmxheS1jbG9zZVxuICAgICAgICAgICAgICA+PC9zYmItc2Vjb25kYXJ5LWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1vdmVybGF5X19jb250ZW50XCJcbiAgICAgICAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX292ZXJsYXlDb250ZW50RWxlbWVudCA9IGVsIGFzIEhUTUxEaXZFbGVtZW50KSl9XG4gICAgICAgICAgICAgIEBzY3JvbGw9JHsoZTogRXZlbnQpID0+IGZvcndhcmRFdmVudChlLCBkb2N1bWVudCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzYmItY29udGFpbmVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItb3ZlcmxheV9fY29udGVudC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgID9leHBhbmRlZD0ke3RoaXMuZXhwYW5kZWR9XG4gICAgICAgICAgICAgICAgY29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgICAgIDwvc2JiLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc2NyZWVuLXJlYWRlci1vbmx5XCIgYXJpYS1saXZlPVwicG9saXRlXCI+PC9zcGFuPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1vdmVybGF5JzogU2JiT3ZlcmxheUVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDeUJhLDJCQUFpQjttQkFBUzs7Ozs7OztjQUExQiwwQkFBMEIsWUFBcUI7OztBQXNCMUMsU0FBQSw0QkFBQSxrQkFBQSxNQUFBLHdCQUFvQixNQUFLO0FBS3pCLFNBQUEsNENBQUEsa0JBQUEsTUFBQSw0QkFBQSxFQUFBLGtCQUFBLE1BQUEsdUNBQWtDLEdBQUU7QUFFMUMsUUFBQSxrQkFBYyxrQkFBQSxNQUFBLDJDQUFBLEVBQVc7QUFDM0IsUUFBQSx5QkFBNkM7Ozs7MkJBVnBELFdBQVcsRUFDWCxTQUFTO0lBQUUsU0FBUztJQUFNLE1BQU07SUFBUyxDQUFDLENBQUE7MENBSTFDLFdBQVcsRUFDWCxTQUFTLEVBQUUsV0FBVyw2QkFBNkIsQ0FBQyxDQUFBO0FBSnJELGdCQUFBLE1BQUEsTUFBQSxzQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGNBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBUSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVIsV0FBUTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLHdCQUFBLDRCQUFBO0FBS3hCLGdCQUFBLE1BQUEsTUFBQSxxQ0FBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLDZCQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQXVCLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBdkIsMEJBQXVCOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsdUNBQUEsMkNBQUE7Ozs7Ozs7OztBQTFCUCxRQUFBLGNBQXNCOzs7QUFDL0IsUUFBQSxzQkFBd0MsQ0FDN0QsMkJBQ0Esb0JBQ0Q7OztBQUNzQixRQUFBLFNBQXlCLENBQUMsVUFBVSxnQkFBTSxDQUFDOzs7QUFHbEMsUUFBQSxTQUFTO0lBQ3ZDLFlBQVk7SUFDWixNQUFNO0lBQ04sYUFBYTtJQUNiLE9BQU87SUFDQzs7RUFRVjs7Ozs7RUFBQSxJQUFnQixXQUFRO0FBQUEsVUFBQSxNQUFBOztFQUF4QixJQUFnQixTQUFRLE9BQUE7QUFBQSxTQUFBLDRCQUFBOztFQUt4Qjs7RUFBQSxJQUFnQiwwQkFBdUI7QUFBQSxVQUFBLE1BQUE7O0VBQXZDLElBQWdCLHdCQUF1QixPQUFBO0FBQUEsU0FBQSwyQ0FBQTs7RUFLcEIsYUFBYSxtQkFBdUM7QUFDckUsU0FBTSxhQUFhLGtCQUFrQjtBQUdyQyxPQUFJLEtBQUssT0FDUCxNQUFLLHVCQUF1Qjs7RUFJdEIsMEJBQXVCO0FBQy9CLFVBQU8sd0JBQXdCLE1BQU0sbUNBQW1DOztFQUdoRSxnQkFBYTtBQUNyQixRQUFLLFFBQVE7QUFDYixRQUFLLGdCQUFnQixVQUFVO0FBQy9CLFFBQUssb0JBQW9CLHFCQUFxQjtBQUU5QyxvQkFBaUIsS0FBSyxzQkFBc0IsS0FBSyxtQkFBbUIsQ0FBQztBQUNyRSxRQUFLLG9CQUFvQixVQUFVO0FBQ25DLFFBQUssbUJBQW1COztFQUdQLGdCQUFhO0FBQzlCLFFBQUssd0JBQXdCLFNBQVMsR0FBRyxFQUFFO0FBQzNDLFFBQUssUUFBUTtBQUNiLFFBQUssZUFBZTtBQUNwQixRQUFLLGdCQUFnQixZQUFZO0FBQ2pDLE9BQUksQ0FBQyxLQUFLLHFCQUVSLE1BQUssb0JBQW9CLE9BQU87QUFFbEMsUUFBSyx1QkFBdUIsT0FBTztBQUNuQyxRQUFLLG9CQUFvQixVQUFVO0FBQ25DLFFBQUssb0NBQW9DO0FBRXpDLE9BQUksQ0FBQyxZQUFZLE9BQ2YsTUFBSyxjQUFjLGNBQWM7QUFFbkMsUUFBSywyQkFBMkIsWUFBWTtBQUM1QyxRQUFLLG1CQUFtQjtJQUN0QixhQUFhLEtBQUs7SUFDbEIsYUFBYSxLQUFLO0lBQ25CLENBQUM7O0VBSWUseUJBQXlCLFNBQXFDOztBQUUvRSxVQUFPLEtBQUssY0FDVixJQUFJLHFCQUFxQixlQUFlO0lBQ3RDLFlBQVk7SUFDWixnQkFBZ0IsS0FBSztJQUNyQixhQUFhLEtBQUs7SUFDbEIsUUFBUSxLQUFLO0lBQ2QsQ0FBQyxDQUNIOztFQUlnQixtQkFBbUIsU0FBcUM7O0FBRXpFLFVBQU8sS0FBSyxjQUNWLElBQUkscUJBQXFCLFNBQVM7SUFDaEMsZ0JBQWdCLEtBQUs7SUFDckIsYUFBYSxLQUFLO0lBQ2xCLFFBQVEsS0FBSztJQUNkLENBQUMsQ0FDSDs7RUFHZ0IsU0FBTTtBQUN2QixVQUFPLE1BQUk7MERBQzJDLEtBQUssc0JBQXFCOzs7c0JBRzlELFVBQWlCLEtBQUssNEJBQTRCLE1BQU0sQ0FBQTs7Ozs7OzhCQU1oRCxLQUFLLDJCQUNuQixnQkFBZ0IsS0FBSyxTQUFTLFNBQVE7NEJBQzFCLEtBQUssU0FBQTs7Ozs7Ozs7Z0JBUWpCLEtBQUssT0FBa0IsS0FBSyx5QkFBeUIsR0FBc0IsQ0FBQTt5QkFDbEUsTUFBYSxhQUFhLEdBQUcsU0FBUyxDQUFBOzs7OzRCQUluQyxLQUFLLFNBQUEifQ==
|