@sbb-esta/lyne-elements-dev 4.9.0-dev.1774354777 → 4.9.0-dev.1774426040

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.
@@ -0,0 +1,456 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { css, html, nothing } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { SbbElement } from "./core/base-elements.js";
5
+ import { forceType, hostAttributes } from "./core/decorators.js";
6
+ import { SbbDisabledMixin, SbbFormAssociatedMixin, SbbReadonlyMixin } from "./core/mixins.js";
7
+ import { boxSizingStyles } from "./core/styles.js";
8
+ import "./icon.js";
9
+ import { ref } from "lit/directives/ref.js";
10
+ //#region src/elements/slider/slider.scss?lit&inline
11
+ var slider_default = css`@charset "UTF-8";
12
+ :host {
13
+ --_sbb-slider-value-fraction: 0;
14
+ outline: none !important;
15
+ display: inline-block;
16
+ min-width: var(--sbb-slider-min-width);
17
+ width: min(var(--sbb-slider-width), 100%);
18
+ }
19
+
20
+ :host(:disabled) {
21
+ --sbb-slider-icon-color: var(--sbb-color-graphite);
22
+ --sbb-slider-icon-color: light-dark(var(--sbb-color-graphite), var(--sbb-color-smoke));
23
+ --sbb-slider-knob-border-color: var(--sbb-border-color-5);
24
+ --sbb-slider-knob-border-size: var(--sbb-border-width-2x);
25
+ --sbb-slider-knob-border-style: dashed;
26
+ }
27
+
28
+ :host([readonly]) {
29
+ --sbb-slider-icon-color: var(--sbb-color-5);
30
+ --sbb-slider-knob-border-color: var(--sbb-slider-selected-line-disabled-color);
31
+ }
32
+
33
+ :host(:disabled),
34
+ :host([readonly]) {
35
+ --sbb-slider-line-color: var(--sbb-slider-line-disabled-color);
36
+ --sbb-slider-selected-line-color: var(--sbb-slider-selected-line-disabled-color);
37
+ }
38
+ @media (forced-colors: active) {
39
+ :host(:disabled),
40
+ :host([readonly]) {
41
+ --sbb-slider-icon-color: GrayText;
42
+ --sbb-slider-selected-line-disabled-color: GrayText;
43
+ --sbb-slider-line-disabled-color: GrayText;
44
+ }
45
+ }
46
+
47
+ .sbb-slider__height-container {
48
+ display: flex;
49
+ flex-direction: column;
50
+ }
51
+ .sbb-slider__height-container::before {
52
+ content: "​";
53
+ user-select: none;
54
+ width: 0;
55
+ height: 0;
56
+ }
57
+
58
+ .sbb-slider__wrapper {
59
+ display: flex;
60
+ gap: var(--sbb-slider-gap);
61
+ padding-block: var(--sbb-slider-padding-block);
62
+ color: var(--sbb-slider-icon-color);
63
+ }
64
+
65
+ .sbb-slider__container {
66
+ position: relative;
67
+ min-height: var(--sbb-size-icon-ui-small);
68
+ flex-grow: 1;
69
+ }
70
+
71
+ .sbb-slider__range-input {
72
+ position: absolute;
73
+ width: 100%;
74
+ inset: 0;
75
+ opacity: 0;
76
+ margin: 0;
77
+ }
78
+
79
+ .sbb-slider__line {
80
+ position: absolute;
81
+ top: 50%;
82
+ transform: translateY(-50%);
83
+ height: var(--sbb-slider-line-height);
84
+ width: 100%;
85
+ background-color: var(--sbb-slider-line-color);
86
+ border-radius: var(--sbb-slider-line-height);
87
+ overflow: hidden;
88
+ pointer-events: none;
89
+ }
90
+
91
+ .sbb-slider__selected-line {
92
+ position: relative;
93
+ height: 100%;
94
+ background-color: var(--sbb-slider-selected-line-color);
95
+ width: calc(var(--_sbb-slider-value-fraction) * 100%);
96
+ }
97
+
98
+ .sbb-slider__knob {
99
+ position: absolute;
100
+ top: 50%;
101
+ transform: translateY(-50%);
102
+ box-shadow: var(--sbb-box-shadow-level-5-hard);
103
+ width: var(--sbb-slider-knob-size);
104
+ height: var(--sbb-slider-knob-size);
105
+ inset-inline-start: calc(var(--_sbb-slider-value-fraction) * 100% - var(--sbb-slider-knob-size) * var(--_sbb-slider-value-fraction));
106
+ transition-property: width, height;
107
+ transition-duration: var(--sbb-disable-animation-duration, var(--sbb-animation-duration-1x));
108
+ transition-timing-function: ease-in;
109
+ background-color: var(--sbb-slider-knob-color);
110
+ border: var(--sbb-slider-knob-border-size) var(--sbb-slider-knob-border-style) var(--sbb-slider-knob-border-color);
111
+ border-radius: 50%;
112
+ pointer-events: none;
113
+ }
114
+ :host(:focus-visible) .sbb-slider__knob {
115
+ outline-offset: var(--sbb-focus-outline-offset);
116
+ outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
117
+ --sbb-slider-knob-size: var(--sbb-slider-knob-size-active);
118
+ }
119
+ :host(:not(:is(:disabled, [readonly]))) .sbb-slider__range-input:active ~ .sbb-slider__knob {
120
+ --sbb-slider-knob-size: var(--sbb-slider-knob-size-active);
121
+ }`;
122
+ //#endregion
123
+ //#region src/elements/slider/slider.component.ts
124
+ /**
125
+ * It displays an input knob that can be moved in a range.
126
+ *
127
+ * @slot prefix - Use this slot to render an icon on the left side of the input.
128
+ * @slot suffix - Use this slot to render an icon on the right side of the input.
129
+ * @event {InputEvent} input - The input event fires when the value has been changed as a direct result of a user action.
130
+ */
131
+ var SbbSliderElement = (() => {
132
+ let _classDecorators = [hostAttributes({ tabindex: "0" })];
133
+ let _classDescriptor;
134
+ let _classExtraInitializers = [];
135
+ let _classThis;
136
+ let _classSuper = SbbDisabledMixin(SbbReadonlyMixin(SbbFormAssociatedMixin(SbbElement)));
137
+ let _instanceExtraInitializers = [];
138
+ let _set_value_decorators;
139
+ let _set_valueAsNumber_decorators;
140
+ let _set_min_decorators;
141
+ let _set_max_decorators;
142
+ let _startIcon_decorators;
143
+ let _startIcon_initializers = [];
144
+ let _startIcon_extraInitializers = [];
145
+ let _endIcon_decorators;
146
+ let _endIcon_initializers = [];
147
+ let _endIcon_extraInitializers = [];
148
+ var SbbSliderElement = class extends _classSuper {
149
+ static {
150
+ _classThis = this;
151
+ }
152
+ static {
153
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
154
+ _set_value_decorators = [property()];
155
+ _set_valueAsNumber_decorators = [property({
156
+ attribute: "value-as-number",
157
+ type: Number
158
+ })];
159
+ _set_min_decorators = [property()];
160
+ _set_max_decorators = [property()];
161
+ _startIcon_decorators = [forceType(), property({ attribute: "start-icon" })];
162
+ _endIcon_decorators = [forceType(), property({ attribute: "end-icon" })];
163
+ __esDecorate(this, null, _set_value_decorators, {
164
+ kind: "setter",
165
+ name: "value",
166
+ static: false,
167
+ private: false,
168
+ access: {
169
+ has: (obj) => "value" in obj,
170
+ set: (obj, value) => {
171
+ obj.value = value;
172
+ }
173
+ },
174
+ metadata: _metadata
175
+ }, null, _instanceExtraInitializers);
176
+ __esDecorate(this, null, _set_valueAsNumber_decorators, {
177
+ kind: "setter",
178
+ name: "valueAsNumber",
179
+ static: false,
180
+ private: false,
181
+ access: {
182
+ has: (obj) => "valueAsNumber" in obj,
183
+ set: (obj, value) => {
184
+ obj.valueAsNumber = value;
185
+ }
186
+ },
187
+ metadata: _metadata
188
+ }, null, _instanceExtraInitializers);
189
+ __esDecorate(this, null, _set_min_decorators, {
190
+ kind: "setter",
191
+ name: "min",
192
+ static: false,
193
+ private: false,
194
+ access: {
195
+ has: (obj) => "min" in obj,
196
+ set: (obj, value) => {
197
+ obj.min = value;
198
+ }
199
+ },
200
+ metadata: _metadata
201
+ }, null, _instanceExtraInitializers);
202
+ __esDecorate(this, null, _set_max_decorators, {
203
+ kind: "setter",
204
+ name: "max",
205
+ static: false,
206
+ private: false,
207
+ access: {
208
+ has: (obj) => "max" in obj,
209
+ set: (obj, value) => {
210
+ obj.max = value;
211
+ }
212
+ },
213
+ metadata: _metadata
214
+ }, null, _instanceExtraInitializers);
215
+ __esDecorate(this, null, _startIcon_decorators, {
216
+ kind: "accessor",
217
+ name: "startIcon",
218
+ static: false,
219
+ private: false,
220
+ access: {
221
+ has: (obj) => "startIcon" in obj,
222
+ get: (obj) => obj.startIcon,
223
+ set: (obj, value) => {
224
+ obj.startIcon = value;
225
+ }
226
+ },
227
+ metadata: _metadata
228
+ }, _startIcon_initializers, _startIcon_extraInitializers);
229
+ __esDecorate(this, null, _endIcon_decorators, {
230
+ kind: "accessor",
231
+ name: "endIcon",
232
+ static: false,
233
+ private: false,
234
+ access: {
235
+ has: (obj) => "endIcon" in obj,
236
+ get: (obj) => obj.endIcon,
237
+ set: (obj, value) => {
238
+ obj.endIcon = value;
239
+ }
240
+ },
241
+ metadata: _metadata
242
+ }, _endIcon_initializers, _endIcon_extraInitializers);
243
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, {
244
+ kind: "class",
245
+ name: _classThis.name,
246
+ metadata: _metadata
247
+ }, null, _classExtraInitializers);
248
+ SbbSliderElement = _classThis = _classDescriptor.value;
249
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, {
250
+ enumerable: true,
251
+ configurable: true,
252
+ writable: true,
253
+ value: _metadata
254
+ });
255
+ }
256
+ static {
257
+ this.elementName = "sbb-slider";
258
+ }
259
+ static {
260
+ this.role = "slider";
261
+ }
262
+ static {
263
+ this.styles = [boxSizingStyles, slider_default];
264
+ }
265
+ static {
266
+ this.events = { didChange: "didChange" };
267
+ }
268
+ /**
269
+ * Value of the form element.
270
+ * If no value is provided, default is the middle point between min and max.
271
+ */
272
+ set value(value) {
273
+ if (this._isValidNumber(value)) this._value = this._boundBetweenMinMax(value);
274
+ else this._value = null;
275
+ this.internals.ariaValueNow = this.value;
276
+ }
277
+ get value() {
278
+ return this._value ?? this._defaultValue();
279
+ }
280
+ /** Numeric value for the inner HTMLInputElement. */
281
+ set valueAsNumber(value) {
282
+ this.value = value?.toString() ?? null;
283
+ }
284
+ get valueAsNumber() {
285
+ return Number(this.value);
286
+ }
287
+ /** Minimum acceptable value for the inner HTMLInputElement. */
288
+ set min(value) {
289
+ if (!this._isValidNumber(value)) return;
290
+ this._min = value;
291
+ this.internals.ariaValueMin = this.min;
292
+ const boundValue = this._boundBetweenMinMax(this.value);
293
+ if (this.value !== boundValue) this.value = boundValue;
294
+ }
295
+ get min() {
296
+ return this._min;
297
+ }
298
+ /** Maximum acceptable value for the inner HTMLInputElement. */
299
+ set max(value) {
300
+ if (!this._isValidNumber(value)) return;
301
+ this._max = value;
302
+ this.internals.ariaValueMax = this.max;
303
+ const boundValue = this._boundBetweenMinMax(this.value);
304
+ if (this.value !== boundValue) this.value = boundValue;
305
+ }
306
+ get max() {
307
+ return this._max;
308
+ }
309
+ #startIcon_accessor_storage;
310
+ /** Name of the icon at component's start, which will be forward to the nested `sbb-icon`. */
311
+ get startIcon() {
312
+ return this.#startIcon_accessor_storage;
313
+ }
314
+ set startIcon(value) {
315
+ this.#startIcon_accessor_storage = value;
316
+ }
317
+ #endIcon_accessor_storage;
318
+ /** Name of the icon at component's end, which will be forward to the nested `sbb-icon`. */
319
+ get endIcon() {
320
+ return this.#endIcon_accessor_storage;
321
+ }
322
+ set endIcon(value) {
323
+ this.#endIcon_accessor_storage = value;
324
+ }
325
+ /**
326
+ * Form type of element.
327
+ * @default 'range'
328
+ */
329
+ get type() {
330
+ return "range";
331
+ }
332
+ constructor() {
333
+ super();
334
+ this._value = (__runInitializers(this, _instanceExtraInitializers), null);
335
+ this._min = "0";
336
+ this._max = "100";
337
+ this.#startIcon_accessor_storage = __runInitializers(this, _startIcon_initializers, "");
338
+ this.#endIcon_accessor_storage = (__runInitializers(this, _startIcon_extraInitializers), __runInitializers(this, _endIcon_initializers, ""));
339
+ /** Reference to the inner HTMLInputElement with type='range'. */
340
+ this._rangeInput = __runInitializers(this, _endIcon_extraInitializers);
341
+ this.addEventListener?.("keydown", (e) => this._handleKeydown(e));
342
+ }
343
+ willUpdate(changedProperties) {
344
+ super.willUpdate(changedProperties);
345
+ if (changedProperties.has("readOnly")) this.internals.ariaReadOnly = Boolean(this.readOnly).toString();
346
+ this.style?.setProperty("--_sbb-slider-value-fraction", this._valueFraction().toString());
347
+ }
348
+ /**
349
+ * The reset value is the attribute value (the setup value). If not present, calculates the default.
350
+ * @internal
351
+ */
352
+ formResetCallback() {
353
+ this.value = this.getAttribute("value") ?? this._defaultValue();
354
+ }
355
+ /**
356
+ * @internal
357
+ */
358
+ formStateRestoreCallback(state, _reason) {
359
+ this.value = state;
360
+ }
361
+ /**
362
+ * If no value is provided, default is the middle point between min and max
363
+ * (see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range#value)
364
+ */
365
+ _defaultValue() {
366
+ return (+this.min + (+this.max - +this.min) / 2).toString();
367
+ }
368
+ _isValidNumber(value) {
369
+ return !!value && !isNaN(Number(value));
370
+ }
371
+ /**
372
+ * Restrains the value between the min and max
373
+ */
374
+ _boundBetweenMinMax(value) {
375
+ return Math.max(+this.min, Math.min(+this.max, +value)).toString();
376
+ }
377
+ _valueFraction() {
378
+ const value = this.valueAsNumber;
379
+ const min = +this.min;
380
+ const max = +this.max;
381
+ const mathFraction = (value - min) / (max - min);
382
+ return isNaN(mathFraction) ? 0 : Math.max(0, Math.min(1, mathFraction));
383
+ }
384
+ async _handleKeydown(event) {
385
+ if (event.key !== "Tab") event.preventDefault();
386
+ if (this.readOnly) return;
387
+ if (event.key === "Home") this._rangeInput.value = this.min;
388
+ else if (event.key === "End") this._rangeInput.value = this.max;
389
+ else if (event.key === "ArrowLeft" || event.key === "ArrowDown") this._rangeInput.stepDown();
390
+ else if (event.key === "ArrowRight" || event.key === "ArrowUp") this._rangeInput.stepUp();
391
+ else if (event.key === "PageDown") this._rangeInput.stepDown((+this.max - +this.min) / 10);
392
+ else if (event.key === "PageUp") this._rangeInput.stepUp((+this.max - +this.min) / 10);
393
+ else return;
394
+ this._rangeInput.dispatchEvent(new InputEvent("input", {
395
+ bubbles: true,
396
+ cancelable: true,
397
+ composed: true
398
+ }));
399
+ this._rangeInput.dispatchEvent(new Event("change", { bubbles: true }));
400
+ }
401
+ /** Emits the change event. */
402
+ _dispatchChangeEvent() {
403
+ /**
404
+ * The change event is fired when the user modifies the element's value.
405
+ * Unlike the input event, the change event is not necessarily fired
406
+ * for each alteration to an element's value.
407
+ */
408
+ this.dispatchEvent(new Event("change", { bubbles: true }));
409
+ /**
410
+ * Deprecated. Mirrors change event for React. Will be removed once React properly supports change events.
411
+ * @deprecated
412
+ */
413
+ this.dispatchEvent(new Event("didChange", { bubbles: true }));
414
+ }
415
+ render() {
416
+ return html`
417
+ <div class="sbb-slider__height-container">
418
+ <div class="sbb-slider__wrapper">
419
+ <slot name="prefix">
420
+ ${this.startIcon ? html`<sbb-icon name="${this.startIcon}"></sbb-icon>` : nothing}
421
+ </slot>
422
+ <div class="sbb-slider__container">
423
+ <input
424
+ tabindex="-1"
425
+ min=${this.min}
426
+ max=${this.max}
427
+ ?disabled=${this.disabled || this.formDisabled || this.readOnly}
428
+ value=${this.value || nothing}
429
+ class="sbb-slider__range-input"
430
+ type="range"
431
+ @change=${() => this._dispatchChangeEvent()}
432
+ @input=${() => this.value = this._rangeInput.value}
433
+ ${ref((input) => this._rangeInput = input)}
434
+ />
435
+ <div class="sbb-slider__line">
436
+ <div class="sbb-slider__selected-line"></div>
437
+ </div>
438
+ <div class="sbb-slider__knob"></div>
439
+ </div>
440
+ <slot name="suffix">
441
+ ${this.endIcon ? html`<sbb-icon name="${this.endIcon}"></sbb-icon>` : nothing}
442
+ </slot>
443
+ </div>
444
+ </div>
445
+ `;
446
+ }
447
+ static {
448
+ __runInitializers(_classThis, _classExtraInitializers);
449
+ }
450
+ };
451
+ return _classThis;
452
+ })();
453
+ //#endregion
454
+ export { SbbSliderElement as t };
455
+
456
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC1RekY3QThZbC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMvc2xpZGVyL3NsaWRlci5zY3NzP2xpdCZpbmxpbmUiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAtLV9zYmItc2xpZGVyLXZhbHVlLWZyYWN0aW9uOiAwO1xuXG4gIC8vIFVzZSAhaW1wb3J0YW50IGhlcmUgdG8gbm90IGludGVyZmVyZSB3aXRoIEZpcmVmb3ggZm9jdXMgcmluZyBkZWZpbml0aW9uXG4gIC8vIHdoaWNoIGFwcGVhcnMgaW4gbm9ybWFsaXplIENTUyBvZiBzZXZlcmFsIGZyYW1ld29ya3MuXG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtaW4td2lkdGg6IHZhcigtLXNiYi1zbGlkZXItbWluLXdpZHRoKTtcbiAgd2lkdGg6IG1pbih2YXIoLS1zYmItc2xpZGVyLXdpZHRoKSwgMTAwJSk7XG59XG5cbjpob3N0KDpkaXNhYmxlZCkge1xuICAtLXNiYi1zbGlkZXItaWNvbi1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3JhcGhpdGUpLCB2YXIoLS1zYmItY29sb3Itc21va2UpKTtcbiAgLS1zYmItc2xpZGVyLWtub2ItYm9yZGVyLWNvbG9yOiB2YXIoLS1zYmItYm9yZGVyLWNvbG9yLTUpO1xuICAtLXNiYi1zbGlkZXIta25vYi1ib3JkZXItc2l6ZTogdmFyKC0tc2JiLWJvcmRlci13aWR0aC0yeCk7XG4gIC0tc2JiLXNsaWRlci1rbm9iLWJvcmRlci1zdHlsZTogZGFzaGVkO1xufVxuXG46aG9zdChbcmVhZG9ubHldKSB7XG4gIC0tc2JiLXNsaWRlci1pY29uLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItNSk7XG4gIC0tc2JiLXNsaWRlci1rbm9iLWJvcmRlci1jb2xvcjogdmFyKC0tc2JiLXNsaWRlci1zZWxlY3RlZC1saW5lLWRpc2FibGVkLWNvbG9yKTtcbn1cblxuOmhvc3QoOmRpc2FibGVkKSxcbjpob3N0KFtyZWFkb25seV0pIHtcbiAgLS1zYmItc2xpZGVyLWxpbmUtY29sb3I6IHZhcigtLXNiYi1zbGlkZXItbGluZS1kaXNhYmxlZC1jb2xvcik7XG4gIC0tc2JiLXNsaWRlci1zZWxlY3RlZC1saW5lLWNvbG9yOiB2YXIoLS1zYmItc2xpZGVyLXNlbGVjdGVkLWxpbmUtZGlzYWJsZWQtY29sb3IpO1xuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1zbGlkZXItaWNvbi1jb2xvcjogR3JheVRleHQ7XG4gICAgLS1zYmItc2xpZGVyLXNlbGVjdGVkLWxpbmUtZGlzYWJsZWQtY29sb3I6IEdyYXlUZXh0O1xuICAgIC0tc2JiLXNsaWRlci1saW5lLWRpc2FibGVkLWNvbG9yOiBHcmF5VGV4dDtcbiAgfVxufVxuXG4uc2JiLXNsaWRlcl9faGVpZ2h0LWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgQGluY2x1ZGUgc2JiLnplcm8td2lkdGgtc3BhY2U7XG59XG5cbi5zYmItc2xpZGVyX193cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiB2YXIoLS1zYmItc2xpZGVyLWdhcCk7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNiYi1zbGlkZXItcGFkZGluZy1ibG9jayk7XG4gIGNvbG9yOiB2YXIoLS1zYmItc2xpZGVyLWljb24tY29sb3IpO1xufVxuXG4uc2JiLXNsaWRlcl9fY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiB2YXIoLS1zYmItc2l6ZS1pY29uLXVpLXNtYWxsKTtcbiAgZmxleC1ncm93OiAxO1xufVxuXG4uc2JiLXNsaWRlcl9fcmFuZ2UtaW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBpbnNldDogMDtcbiAgb3BhY2l0eTogMDtcbiAgbWFyZ2luOiAwO1xufVxuXG4uc2JiLXNsaWRlcl9fbGluZSB7XG4gIEBpbmNsdWRlIHNiYi5hYnNvbHV0ZS1jZW50ZXIteTtcblxuICBoZWlnaHQ6IHZhcigtLXNiYi1zbGlkZXItbGluZS1oZWlnaHQpO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXNsaWRlci1saW5lLWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2JiLXNsaWRlci1saW5lLWhlaWdodCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uc2JiLXNsaWRlcl9fc2VsZWN0ZWQtbGluZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItc2xpZGVyLXNlbGVjdGVkLWxpbmUtY29sb3IpO1xuICB3aWR0aDogY2FsYyh2YXIoLS1fc2JiLXNsaWRlci12YWx1ZS1mcmFjdGlvbikgKiAxMDAlKTtcbn1cblxuLnNiYi1zbGlkZXJfX2tub2Ige1xuICBAaW5jbHVkZSBzYmIuYWJzb2x1dGUtY2VudGVyLXk7XG5cbiAgYm94LXNoYWRvdzogdmFyKC0tc2JiLWJveC1zaGFkb3ctbGV2ZWwtNS1oYXJkKTtcbiAgd2lkdGg6IHZhcigtLXNiYi1zbGlkZXIta25vYi1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItc2xpZGVyLWtub2Itc2l6ZSk7XG4gIGluc2V0LWlubGluZS1zdGFydDogY2FsYyhcbiAgICBjYWxjKHZhcigtLV9zYmItc2xpZGVyLXZhbHVlLWZyYWN0aW9uKSAqIDEwMCUpIC0gdmFyKC0tc2JiLXNsaWRlci1rbm9iLXNpemUpICpcbiAgICAgIHZhcigtLV9zYmItc2xpZGVyLXZhbHVlLWZyYWN0aW9uKVxuICApO1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB3aWR0aCwgaGVpZ2h0O1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sIHZhcigtLXNiYi1hbmltYXRpb24tZHVyYXRpb24tMXgpKTtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1zbGlkZXIta25vYi1jb2xvcik7XG4gIGJvcmRlcjogdmFyKC0tc2JiLXNsaWRlci1rbm9iLWJvcmRlci1zaXplKSB2YXIoLS1zYmItc2xpZGVyLWtub2ItYm9yZGVyLXN0eWxlKVxuICAgIHZhcigtLXNiYi1zbGlkZXIta25vYi1ib3JkZXItY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gIDpob3N0KDpmb2N1cy12aXNpYmxlKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIuZm9jdXMtb3V0bGluZTtcblxuICAgIC0tc2JiLXNsaWRlci1rbm9iLXNpemU6IHZhcigtLXNiYi1zbGlkZXIta25vYi1zaXplLWFjdGl2ZSk7XG4gIH1cblxuICAvLyBzbGlkZXIga25vYiByZXNpemUgb24gY2xpY2sgKGFjdGl2ZSAvIGZvY3VzKVxuICA6aG9zdCg6bm90KDppcyg6ZGlzYWJsZWQsIFtyZWFkb25seV0pKSkgLnNiYi1zbGlkZXJfX3JhbmdlLWlucHV0OmFjdGl2ZSB+ICYge1xuICAgIC0tc2JiLXNsaWRlci1rbm9iLXNpemU6IHZhcigtLXNiYi1zbGlkZXIta25vYi1zaXplLWFjdGl2ZSk7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgcmVmIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvcmVmLmpzJztcblxuaW1wb3J0IHsgU2JiRWxlbWVudCB9IGZyb20gJy4uL2NvcmUvYmFzZS1lbGVtZW50cy50cyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUsIGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7XG4gIHR5cGUgRm9ybVJlc3RvcmVSZWFzb24sXG4gIHR5cGUgRm9ybVJlc3RvcmVTdGF0ZSxcbiAgU2JiRGlzYWJsZWRNaXhpbixcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbiAgU2JiUmVhZG9ubHlNaXhpbixcbn0gZnJvbSAnLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vY29yZS9zdHlsZXMudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zbGlkZXIuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi9pY29uLnRzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpbnB1dCBrbm9iIHRoYXQgY2FuIGJlIG1vdmVkIGluIGEgcmFuZ2UuXG4gKlxuICogQHNsb3QgcHJlZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBpbnB1dC5cbiAqIEBzbG90IHN1ZmZpeCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGljb24gb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQGV2ZW50IHtJbnB1dEV2ZW50fSBpbnB1dCAtIFRoZSBpbnB1dCBldmVudCBmaXJlcyB3aGVuIHRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGFzIGEgZGlyZWN0IHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLlxuICovXG5leHBvcnRcbkBob3N0QXR0cmlidXRlcyh7XG4gIHRhYmluZGV4OiAnMCcsXG59KVxuY2xhc3MgU2JiU2xpZGVyRWxlbWVudCBleHRlbmRzIFNiYkRpc2FibGVkTWl4aW4oXG4gIFNiYlJlYWRvbmx5TWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50KSksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1zbGlkZXInO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnc2xpZGVyJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBkaWRDaGFuZ2U6ICdkaWRDaGFuZ2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBvZiB0aGUgZm9ybSBlbGVtZW50LlxuICAgKiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgZGVmYXVsdCBpcyB0aGUgbWlkZGxlIHBvaW50IGJldHdlZW4gbWluIGFuZCBtYXguXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuX2lzVmFsaWROdW1iZXIodmFsdWUpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2JvdW5kQmV0d2Vlbk1pbk1heCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYVZhbHVlTm93ID0gdGhpcy52YWx1ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8/IHRoaXMuX2RlZmF1bHRWYWx1ZSgpO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvKiogTnVtZXJpYyB2YWx1ZSBmb3IgdGhlIGlubmVyIEhUTUxJbnB1dEVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3ZhbHVlLWFzLW51bWJlcicsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgc2V0IHZhbHVlQXNOdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU/LnRvU3RyaW5nKCkgPz8gbnVsbDtcbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlQXNOdW1iZXIoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIE51bWJlcih0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBNaW5pbXVtIGFjY2VwdGFibGUgdmFsdWUgZm9yIHRoZSBpbm5lciBIVE1MSW5wdXRFbGVtZW50LiAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgc2V0IG1pbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLl9pc1ZhbGlkTnVtYmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX21pbiA9IHZhbHVlO1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFWYWx1ZU1pbiA9IHRoaXMubWluO1xuICAgIGNvbnN0IGJvdW5kVmFsdWUgPSB0aGlzLl9ib3VuZEJldHdlZW5NaW5NYXgodGhpcy52YWx1ZSk7XG4gICAgaWYgKHRoaXMudmFsdWUgIT09IGJvdW5kVmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBib3VuZFZhbHVlO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IG1pbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9taW47XG4gIH1cbiAgcHJpdmF0ZSBfbWluOiBzdHJpbmcgPSAnMCc7XG5cbiAgLyoqIE1heGltdW0gYWNjZXB0YWJsZSB2YWx1ZSBmb3IgdGhlIGlubmVyIEhUTUxJbnB1dEVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSgpXG4gIHB1YmxpYyBzZXQgbWF4KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2lzVmFsaWROdW1iZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWF4ID0gdmFsdWU7XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYVZhbHVlTWF4ID0gdGhpcy5tYXg7XG4gICAgY29uc3QgYm91bmRWYWx1ZSA9IHRoaXMuX2JvdW5kQmV0d2Vlbk1pbk1heCh0aGlzLnZhbHVlKTtcbiAgICBpZiAodGhpcy52YWx1ZSAhPT0gYm91bmRWYWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IGJvdW5kVmFsdWU7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgbWF4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX21heDtcbiAgfVxuICBwcml2YXRlIF9tYXg6IHN0cmluZyA9ICcxMDAnO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBpY29uIGF0IGNvbXBvbmVudCdzIHN0YXJ0LCB3aGljaCB3aWxsIGJlIGZvcndhcmQgdG8gdGhlIG5lc3RlZCBgc2JiLWljb25gLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc3RhcnQtaWNvbicgfSlcbiAgcHVibGljIGFjY2Vzc29yIHN0YXJ0SWNvbjogc3RyaW5nID0gJyc7XG5cbiAgLyoqIE5hbWUgb2YgdGhlIGljb24gYXQgY29tcG9uZW50J3MgZW5kLCB3aGljaCB3aWxsIGJlIGZvcndhcmQgdG8gdGhlIG5lc3RlZCBgc2JiLWljb25gLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZW5kLWljb24nIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBlbmRJY29uOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogRm9ybSB0eXBlIG9mIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0ICdyYW5nZSdcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAncmFuZ2UnO1xuICB9XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgaW5uZXIgSFRNTElucHV0RWxlbWVudCB3aXRoIHR5cGU9J3JhbmdlJy4gKi9cbiAgcHJpdmF0ZSBfcmFuZ2VJbnB1dCE6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2tleWRvd24nLCAoZSkgPT4gdGhpcy5faGFuZGxlS2V5ZG93bihlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3JlYWRPbmx5JykpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFSZWFkT25seSA9IEJvb2xlYW4odGhpcy5yZWFkT25seSkudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tX3NiYi1zbGlkZXItdmFsdWUtZnJhY3Rpb24nLCB0aGlzLl92YWx1ZUZyYWN0aW9uKCkudG9TdHJpbmcoKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlc2V0IHZhbHVlIGlzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgKHRoZSBzZXR1cCB2YWx1ZSkuIElmIG5vdCBwcmVzZW50LCBjYWxjdWxhdGVzIHRoZSBkZWZhdWx0LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykgPz8gdGhpcy5fZGVmYXVsdFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZm9ybVN0YXRlUmVzdG9yZUNhbGxiYWNrKFxuICAgIHN0YXRlOiBGb3JtUmVzdG9yZVN0YXRlIHwgbnVsbCxcbiAgICBfcmVhc29uOiBGb3JtUmVzdG9yZVJlYXNvbixcbiAgKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHN0YXRlIGFzIHN0cmluZyB8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBkZWZhdWx0IGlzIHRoZSBtaWRkbGUgcG9pbnQgYmV0d2VlbiBtaW4gYW5kIG1heFxuICAgKiAgKHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQvcmFuZ2UjdmFsdWUpXG4gICAqL1xuICBwcml2YXRlIF9kZWZhdWx0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKCt0aGlzLm1pbiArICgrdGhpcy5tYXggLSArdGhpcy5taW4pIC8gMikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzVmFsaWROdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2YWx1ZSBpcyBzdHJpbmcge1xuICAgIHJldHVybiAhIXZhbHVlICYmICFpc05hTihOdW1iZXIodmFsdWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0cmFpbnMgdGhlIHZhbHVlIGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4XG4gICAqL1xuICBwcml2YXRlIF9ib3VuZEJldHdlZW5NaW5NYXgodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1hdGgubWF4KCt0aGlzLm1pbiwgTWF0aC5taW4oK3RoaXMubWF4LCArdmFsdWUpKS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsdWVGcmFjdGlvbigpOiBudW1iZXIge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZUFzTnVtYmVyITtcbiAgICBjb25zdCBtaW4gPSArdGhpcy5taW47XG4gICAgY29uc3QgbWF4ID0gK3RoaXMubWF4O1xuXG4gICAgY29uc3QgbWF0aEZyYWN0aW9uOiBudW1iZXIgPSAodmFsdWUgLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgcmV0dXJuIGlzTmFOKG1hdGhGcmFjdGlvbikgPyAwIDogTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgbWF0aEZyYWN0aW9uKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ1RhYicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnSG9tZScpIHtcbiAgICAgIHRoaXMuX3JhbmdlSW5wdXQudmFsdWUgPSB0aGlzLm1pbjtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VuZCcpIHtcbiAgICAgIHRoaXMuX3JhbmdlSW5wdXQudmFsdWUgPSB0aGlzLm1heDtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgdGhpcy5fcmFuZ2VJbnB1dC5zdGVwRG93bigpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIHRoaXMuX3JhbmdlSW5wdXQuc3RlcFVwKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdQYWdlRG93bicpIHtcbiAgICAgIHRoaXMuX3JhbmdlSW5wdXQuc3RlcERvd24oKCt0aGlzLm1heCAtICt0aGlzLm1pbikgLyAxMCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdQYWdlVXAnKSB7XG4gICAgICB0aGlzLl9yYW5nZUlucHV0LnN0ZXBVcCgoK3RoaXMubWF4IC0gK3RoaXMubWluKSAvIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdlIGhhdmUgdG8gbWFudWFsbHkgZmlyZSBldmVudHMgYmVjYXVzZSBwcm9ncmFtbWF0aWMgY2hhbmdlcyBkb24ndCB0cmlnZ2VyIHRoZW1cbiAgICB0aGlzLl9yYW5nZUlucHV0LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pLFxuICAgICk7XG4gICAgdGhpcy5fcmFuZ2VJbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyB0aGUgY2hhbmdlIGV2ZW50LiAqL1xuICBwcml2YXRlIF9kaXNwYXRjaENoYW5nZUV2ZW50KCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLlxuICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICogZm9yIGVhY2ggYWx0ZXJhdGlvbiB0byBhbiBlbGVtZW50J3MgdmFsdWUuXG4gICAgICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcblxuICAgIC8qKlxuICAgICAqIERlcHJlY2F0ZWQuIE1pcnJvcnMgY2hhbmdlIGV2ZW50IGZvciBSZWFjdC4gV2lsbCBiZSByZW1vdmVkIG9uY2UgUmVhY3QgcHJvcGVybHkgc3VwcG9ydHMgY2hhbmdlIGV2ZW50cy5cbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2RpZENoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2xpZGVyX19oZWlnaHQtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2xpZGVyX193cmFwcGVyXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInByZWZpeFwiPlxuICAgICAgICAgICAgJHt0aGlzLnN0YXJ0SWNvbiA/IGh0bWxgPHNiYi1pY29uIG5hbWU9XCIke3RoaXMuc3RhcnRJY29ufVwiPjwvc2JiLWljb24+YCA6IG5vdGhpbmd9XG4gICAgICAgICAgPC9zbG90PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc2xpZGVyX19jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgbWluPSR7dGhpcy5taW59XG4gICAgICAgICAgICAgIG1heD0ke3RoaXMubWF4fVxuICAgICAgICAgICAgICA/ZGlzYWJsZWQ9JHt0aGlzLmRpc2FibGVkIHx8IHRoaXMuZm9ybURpc2FibGVkIHx8IHRoaXMucmVhZE9ubHl9XG4gICAgICAgICAgICAgIHZhbHVlPSR7dGhpcy52YWx1ZSB8fCBub3RoaW5nfVxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1zbGlkZXJfX3JhbmdlLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgICAgICAgQGNoYW5nZT0keygpID0+IHRoaXMuX2Rpc3BhdGNoQ2hhbmdlRXZlbnQoKX1cbiAgICAgICAgICAgICAgQGlucHV0PSR7KCkgPT4gKHRoaXMudmFsdWUgPSB0aGlzLl9yYW5nZUlucHV0LnZhbHVlKX1cbiAgICAgICAgICAgICAgJHtyZWYoKGlucHV0PzogRWxlbWVudCkgPT4gKHRoaXMuX3JhbmdlSW5wdXQgPSBpbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50KSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zbGlkZXJfX2xpbmVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zbGlkZXJfX3NlbGVjdGVkLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zbGlkZXJfX2tub2JcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwic3VmZml4XCI+XG4gICAgICAgICAgICAke3RoaXMuZW5kSWNvbiA/IGh0bWxgPHNiYi1pY29uIG5hbWU9XCIke3RoaXMuZW5kSWNvbn1cIj48L3NiYi1pY29uPmAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItc2xpZGVyJzogU2JiU2xpZGVyRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDK0JNLDBCQUFnQjt5QkFIckIsZUFBZSxFQUNkLFVBQVUsS0FDWCxDQUFDLENBQUE7Ozs7bUJBQzZCLGlCQUM3QixpQkFBaUIsdUJBQXVCLFdBQVcsQ0FBQyxDQUNyRDs7Ozs7Ozs7Ozs7O3NDQUY4QixZQUU5Qjs7Ozs7OzRCQVlF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
@@ -1,4 +1,4 @@
1
- import { t as SbbSliderElement } from "./slider.component-w_WtVNx-.js";
1
+ import { t as SbbSliderElement } from "./slider.component-QzF7A8Yl.js";
2
2
  import "./slider.pure.js";
3
3
  //#region src/elements/slider.ts
4
4
  /** @entrypoint */
@@ -1,2 +1,2 @@
1
- import { t as SbbSliderElement } from "./slider.component-w_WtVNx-.js";
1
+ import { t as SbbSliderElement } from "./slider.component-QzF7A8Yl.js";
2
2
  export { SbbSliderElement };