@sbb-esta/lyne-elements 4.4.0 → 4.5.0
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 +69 -56
- package/button/common.js +1 -1
- package/button/mini-button-group/mini-button-group.component.js +14 -14
- package/button.js +1 -1
- package/core/a11y/focus-trap-controller.js +10 -10
- package/core/datetime.js +15 -12
- package/core/styles/core.scss +14 -0
- package/core.css +54 -0
- package/custom-elements.json +75 -17
- package/datepicker/common.js +5 -3
- package/datepicker/datepicker-next-day/datepicker-next-day.component.js +13 -11
- package/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +12 -10
- package/datepicker/datepicker-toggle/datepicker-toggle.component.js +21 -19
- package/datepicker-button-Debzp_As.js +5 -0
- package/datepicker.js +6 -4
- package/development/autocomplete/autocomplete-base-element.d.ts +6 -1
- package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/development/autocomplete/autocomplete-base-element.js +28 -5
- package/development/button/common.js +1 -1
- package/development/button/mini-button-group/mini-button-group.component.js +10 -14
- package/development/button.js +1 -1
- package/development/core/a11y/focus-trap-controller.d.ts.map +1 -1
- package/development/core/a11y/focus-trap-controller.js +4 -3
- package/development/core/controllers/overlay-position-controller.d.ts.map +1 -1
- package/development/core/controllers/overlay-position-controller.js +1 -1
- package/development/core/datetime.d.ts +1 -0
- package/development/core/datetime.d.ts.map +1 -1
- package/development/core/datetime.js +5 -2
- package/development/datepicker/common.d.ts.map +1 -1
- package/development/datepicker/common.js +4 -2
- package/development/datepicker/datepicker-next-day/datepicker-next-day.component.d.ts.map +1 -1
- package/development/datepicker/datepicker-next-day/datepicker-next-day.component.js +7 -8
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.d.ts.map +1 -1
- package/development/datepicker/datepicker-previous-day/datepicker-previous-day.component.js +7 -8
- package/development/datepicker/datepicker-toggle/datepicker-toggle.component.d.ts.map +1 -1
- package/development/datepicker/datepicker-toggle/datepicker-toggle.component.js +7 -8
- package/development/datepicker-button-BDlxIp9r.js +9 -0
- package/development/datepicker.js +4 -2
- package/development/{mini-button-label-common-0DeEC1qs.js → mini-button-label-common-BaMSfSTe.js} +13 -63
- package/development/radio-button/radio-button-group/radio-button-group.component.d.ts.map +1 -1
- package/development/radio-button/radio-button-group/radio-button-group.component.js +1 -1
- package/development/select/select.component.d.ts +1 -1
- package/development/select/select.component.d.ts.map +1 -1
- package/development/select/select.component.js +17 -8
- package/development/tabs/tab/tab.component.d.ts.map +1 -1
- package/development/tabs/tab/tab.component.js +2 -1
- package/development/tabs/tab-group/tab-group.component.d.ts +6 -7
- package/development/tabs/tab-group/tab-group.component.d.ts.map +1 -1
- package/development/tabs/tab-group/tab-group.component.js +23 -66
- package/mini-button-label-common-Dx9JhmQ6.js +11 -0
- package/off-brand-theme.css +54 -0
- package/package.json +1 -1
- package/safety-theme.css +54 -0
- package/select/select.component.js +20 -20
- package/standard-theme.css +54 -0
- package/tabs/tab/tab.component.js +4 -4
- package/tabs/tab-group/tab-group.component.js +55 -56
- package/mini-button-label-common-BOB7JQKi.js +0 -11
|
@@ -307,7 +307,7 @@ const style = css`.sbb-gap-fix-wrapper {
|
|
|
307
307
|
}`;
|
|
308
308
|
const ariaRoleOnHost = isSafari;
|
|
309
309
|
let SbbAutocompleteBaseElement = (() => {
|
|
310
|
-
var _origin_accessor_storage, _trigger_accessor_storage, _preserveIconSpace_accessor_storage, _autoActiveFirstOption_accessor_storage, _displayWith_accessor_storage, _size_accessor_storage, _autoSelectActiveOption_accessor_storage, _requireSelection_accessor_storage, _position_accessor_storage, _a;
|
|
310
|
+
var _origin_accessor_storage, _trigger_accessor_storage, _preserveIconSpace_accessor_storage, _autoActiveFirstOption_accessor_storage, _displayWith_accessor_storage, _size_accessor_storage, _autoSelectActiveOption_accessor_storage, _autoSelectActiveOptionOnBlur_accessor_storage, _requireSelection_accessor_storage, _position_accessor_storage, _a;
|
|
311
311
|
let _classSuper = SbbNegativeMixin(SbbHydrationMixin(SbbOpenCloseBaseElement));
|
|
312
312
|
let _origin_decorators;
|
|
313
313
|
let _origin_initializers = [];
|
|
@@ -330,6 +330,9 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
330
330
|
let _autoSelectActiveOption_decorators;
|
|
331
331
|
let _autoSelectActiveOption_initializers = [];
|
|
332
332
|
let _autoSelectActiveOption_extraInitializers = [];
|
|
333
|
+
let _autoSelectActiveOptionOnBlur_decorators;
|
|
334
|
+
let _autoSelectActiveOptionOnBlur_initializers = [];
|
|
335
|
+
let _autoSelectActiveOptionOnBlur_extraInitializers = [];
|
|
333
336
|
let _requireSelection_decorators;
|
|
334
337
|
let _requireSelection_initializers = [];
|
|
335
338
|
let _requireSelection_extraInitializers = [];
|
|
@@ -346,6 +349,7 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
346
349
|
__privateAdd(this, _displayWith_accessor_storage);
|
|
347
350
|
__privateAdd(this, _size_accessor_storage);
|
|
348
351
|
__privateAdd(this, _autoSelectActiveOption_accessor_storage);
|
|
352
|
+
__privateAdd(this, _autoSelectActiveOptionOnBlur_accessor_storage);
|
|
349
353
|
__privateAdd(this, _requireSelection_accessor_storage);
|
|
350
354
|
__privateAdd(this, _position_accessor_storage);
|
|
351
355
|
__privateSet(this, _origin_accessor_storage, __runInitializers(this, _origin_initializers, null));
|
|
@@ -355,7 +359,8 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
355
359
|
__privateSet(this, _displayWith_accessor_storage, (__runInitializers(this, _autoActiveFirstOption_extraInitializers), __runInitializers(this, _displayWith_initializers, null)));
|
|
356
360
|
__privateSet(this, _size_accessor_storage, (__runInitializers(this, _displayWith_extraInitializers), __runInitializers(this, _size_initializers, isLean() ? "s" : "m")));
|
|
357
361
|
__privateSet(this, _autoSelectActiveOption_accessor_storage, (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _autoSelectActiveOption_initializers, false)));
|
|
358
|
-
__privateSet(this,
|
|
362
|
+
__privateSet(this, _autoSelectActiveOptionOnBlur_accessor_storage, (__runInitializers(this, _autoSelectActiveOption_extraInitializers), __runInitializers(this, _autoSelectActiveOptionOnBlur_initializers, false)));
|
|
363
|
+
__privateSet(this, _requireSelection_accessor_storage, (__runInitializers(this, _autoSelectActiveOptionOnBlur_extraInitializers), __runInitializers(this, _requireSelection_initializers, false)));
|
|
359
364
|
__privateSet(this, _position_accessor_storage, (__runInitializers(this, _requireSelection_extraInitializers), __runInitializers(this, _position_initializers, "auto")));
|
|
360
365
|
this._triggerElement = __runInitializers(this, _position_extraInitializers);
|
|
361
366
|
this.activeOption = null;
|
|
@@ -461,6 +466,16 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
461
466
|
set autoSelectActiveOption(value) {
|
|
462
467
|
__privateSet(this, _autoSelectActiveOption_accessor_storage, value);
|
|
463
468
|
}
|
|
469
|
+
/**
|
|
470
|
+
* When enabled, the active option is automatically selected on blur.
|
|
471
|
+
* This is an experimental feature. It might be subject to changes.
|
|
472
|
+
*/
|
|
473
|
+
get autoSelectActiveOptionOnBlur() {
|
|
474
|
+
return __privateGet(this, _autoSelectActiveOptionOnBlur_accessor_storage);
|
|
475
|
+
}
|
|
476
|
+
set autoSelectActiveOptionOnBlur(value) {
|
|
477
|
+
__privateSet(this, _autoSelectActiveOptionOnBlur_accessor_storage, value);
|
|
478
|
+
}
|
|
464
479
|
/**
|
|
465
480
|
* Whether the user is required to make a selection when they're interacting with the
|
|
466
481
|
* autocomplete. If the user moves away from the autocomplete without selecting an option from
|
|
@@ -483,7 +498,7 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
483
498
|
set position(value) {
|
|
484
499
|
__privateSet(this, _position_accessor_storage, value);
|
|
485
500
|
}
|
|
486
|
-
/** Returns the element where autocomplete overlay is attached to. */
|
|
501
|
+
/** Returns the element where the autocomplete overlay is attached to. */
|
|
487
502
|
get originElement() {
|
|
488
503
|
return this.origin ?? this.closest?.("sbb-form-field")?.shadowRoot?.querySelector?.("#overlay-anchor") ?? this.trigger ?? null;
|
|
489
504
|
}
|
|
@@ -770,6 +785,10 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
770
785
|
});
|
|
771
786
|
this.triggerElement?.addEventListener("blur", (e) => {
|
|
772
787
|
if (!this.contains(e.relatedTarget)) {
|
|
788
|
+
if (this.autoSelectActiveOptionOnBlur && this.activeOption && this.triggerElement?.value) {
|
|
789
|
+
this.activeOption.selected = true;
|
|
790
|
+
this._setValueAndDispatchEvents(this.activeOption);
|
|
791
|
+
}
|
|
773
792
|
this.close();
|
|
774
793
|
}
|
|
775
794
|
}, {
|
|
@@ -819,7 +838,7 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
819
838
|
</div>
|
|
820
839
|
`;
|
|
821
840
|
}
|
|
822
|
-
}, _origin_accessor_storage = new WeakMap(), _trigger_accessor_storage = new WeakMap(), _preserveIconSpace_accessor_storage = new WeakMap(), _autoActiveFirstOption_accessor_storage = new WeakMap(), _displayWith_accessor_storage = new WeakMap(), _size_accessor_storage = new WeakMap(), _autoSelectActiveOption_accessor_storage = new WeakMap(), _requireSelection_accessor_storage = new WeakMap(), _position_accessor_storage = new WeakMap(), (() => {
|
|
841
|
+
}, _origin_accessor_storage = new WeakMap(), _trigger_accessor_storage = new WeakMap(), _preserveIconSpace_accessor_storage = new WeakMap(), _autoActiveFirstOption_accessor_storage = new WeakMap(), _displayWith_accessor_storage = new WeakMap(), _size_accessor_storage = new WeakMap(), _autoSelectActiveOption_accessor_storage = new WeakMap(), _autoSelectActiveOptionOnBlur_accessor_storage = new WeakMap(), _requireSelection_accessor_storage = new WeakMap(), _position_accessor_storage = new WeakMap(), (() => {
|
|
823
842
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
824
843
|
_origin_decorators = [idReference(), property()];
|
|
825
844
|
_trigger_decorators = [idReference(), property()];
|
|
@@ -828,6 +847,7 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
828
847
|
_displayWith_decorators = [property({ attribute: false })];
|
|
829
848
|
_size_decorators = [property({ reflect: true })];
|
|
830
849
|
_autoSelectActiveOption_decorators = [forceType(), property({ attribute: "auto-select-active-option", type: Boolean })];
|
|
850
|
+
_autoSelectActiveOptionOnBlur_decorators = [forceType(), property({ attribute: "auto-select-active-option-on-blur", type: Boolean })];
|
|
831
851
|
_requireSelection_decorators = [forceType(), property({ attribute: "require-selection", type: Boolean })];
|
|
832
852
|
_position_decorators = [property()];
|
|
833
853
|
__esDecorate(_a, null, _origin_decorators, { kind: "accessor", name: "origin", static: false, private: false, access: { has: (obj) => "origin" in obj, get: (obj) => obj.origin, set: (obj, value) => {
|
|
@@ -851,6 +871,9 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
851
871
|
__esDecorate(_a, null, _autoSelectActiveOption_decorators, { kind: "accessor", name: "autoSelectActiveOption", static: false, private: false, access: { has: (obj) => "autoSelectActiveOption" in obj, get: (obj) => obj.autoSelectActiveOption, set: (obj, value) => {
|
|
852
872
|
obj.autoSelectActiveOption = value;
|
|
853
873
|
} }, metadata: _metadata }, _autoSelectActiveOption_initializers, _autoSelectActiveOption_extraInitializers);
|
|
874
|
+
__esDecorate(_a, null, _autoSelectActiveOptionOnBlur_decorators, { kind: "accessor", name: "autoSelectActiveOptionOnBlur", static: false, private: false, access: { has: (obj) => "autoSelectActiveOptionOnBlur" in obj, get: (obj) => obj.autoSelectActiveOptionOnBlur, set: (obj, value) => {
|
|
875
|
+
obj.autoSelectActiveOptionOnBlur = value;
|
|
876
|
+
} }, metadata: _metadata }, _autoSelectActiveOptionOnBlur_initializers, _autoSelectActiveOptionOnBlur_extraInitializers);
|
|
854
877
|
__esDecorate(_a, null, _requireSelection_decorators, { kind: "accessor", name: "requireSelection", static: false, private: false, access: { has: (obj) => "requireSelection" in obj, get: (obj) => obj.requireSelection, set: (obj, value) => {
|
|
855
878
|
obj.requireSelection = value;
|
|
856
879
|
} }, metadata: _metadata }, _requireSelection_initializers, _requireSelection_extraInitializers);
|
|
@@ -863,4 +886,4 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
863
886
|
export {
|
|
864
887
|
SbbAutocompleteBaseElement
|
|
865
888
|
};
|
|
866
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7XG4gIFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIsXG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxufSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaXNMZWFuLCBpc1NhZmFyaSwgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiwgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7XG4gIGlzRXZlbnRPbkVsZW1lbnQsXG4gIG92ZXJsYXlHYXBGaXhDb3JuZXJzLFxuICByZW1vdmVBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzLFxuICBzZXRPdmVybGF5UG9zaXRpb24sXG59IGZyb20gJy4uL2NvcmUvb3ZlcmxheS50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkZvcm1GaWVsZEVsZW1lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oXG4gIFNiYkh5ZHJhdGlvbk1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBhdHRhY2guXG4gICAqIElmIG5vdCBzZXQsIGFzIGZhbGxiYWNrIHRoZXJlIGFyZSB0d28gZWxlbWVudHMgd2hpY2ggY2FuIGFjdCBhcyBvcmlnaW4gd2l0aCBmb2xsb3dpbmcgcHJpb3JpdHkgb3JkZXI6XG4gICAqIDEuIGBzYmItZm9ybS1maWVsZGAgaWYgaXQgaXMgYW4gYW5jZXN0b3IuXG4gICAqIDIuIHRyaWdnZXIgZWxlbWVudCBpZiBzZXQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIG9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGF1dG9jb21wbGV0ZSBvcGVuaW5nLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgb3BlbiBvbiBmb2N1cywgY2xpY2ssIGlucHV0IG9yIGBBcnJvd0Rvd25gIGtleXByZXNzIG9mIHRoZSAndHJpZ2dlcicgZWxlbWVudC5cbiAgICogSWYgbm90IHNldCwgd2lsbCBzZWFyY2ggZm9yIHRoZSBmaXJzdCAnaW5wdXQnIGNoaWxkIG9mIGEgJ3NiYi1mb3JtLWZpZWxkJyBhbmNlc3Rvci5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJlc2VydmUtaWNvbi1zcGFjZScsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHByZXNlcnZlSWNvblNwYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGZpcnN0IG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCB3aGVuIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1hY3RpdmUtZmlyc3Qtb3B0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhbiBvcHRpb24ncyBjb250cm9sIHZhbHVlIHRvIGl0cyBkaXNwbGF5IHZhbHVlIGluIHRoZSB0cmlnZ2VyLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNwbGF5V2l0aDogKCh2YWx1ZTogVCkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBhY3RpdmUgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBhcyB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1zZWxlY3QtYWN0aXZlLW9wdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGF1dG9TZWxlY3RBY3RpdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdXNlciBpcyByZXF1aXJlZCB0byBtYWtlIGEgc2VsZWN0aW9uIHdoZW4gdGhleSdyZSBpbnRlcmFjdGluZyB3aXRoIHRoZVxuICAgKiBhdXRvY29tcGxldGUuIElmIHRoZSB1c2VyIG1vdmVzIGF3YXkgZnJvbSB0aGUgYXV0b2NvbXBsZXRlIHdpdGhvdXQgc2VsZWN0aW5nIGFuIG9wdGlvbiBmcm9tXG4gICAqIHRoZSBsaXN0LCB0aGUgdmFsdWUgd2lsbCBiZSByZXNldC4gSWYgdGhlIHVzZXIgb3BlbnMgdGhlIHBhbmVsIGFuZCBjbG9zZXMgaXQgd2l0aG91dFxuICAgKiBpbnRlcmFjdGluZyBvciBzZWxlY3RpbmcgYSB2YWx1ZSwgdGhlIGluaXRpYWwgdmFsdWUgd2lsbCBiZSBrZXB0LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3JlcXVpcmUtc2VsZWN0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZVNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlci5cbiAgICogQGRlZmF1bHQgJ2F1dG8nXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgcG9zaXRpb246ICdhdXRvJyB8ICdhYm92ZScgfCAnYmVsb3cnID0gJ2F1dG8nO1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbGVtZW50IHdoZXJlIGF1dG9jb21wbGV0ZSBvdmVybGF5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICBwdWJsaWMgZ2V0IG9yaWdpbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5vcmlnaW4gPz9cbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy4oJyNvdmVybGF5LWFuY2hvcicpID8/XG4gICAgICB0aGlzLnRyaWdnZXIgPz9cbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHRyaWdnZXIgZWxlbWVudC4gKi9cbiAgcHVibGljIGdldCB0cmlnZ2VyRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXJFbGVtZW50ID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcmxheUlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYW5lbFJvbGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIHBlbmRpbmdBdXRvU2VsZWN0ZWRPcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX29yaWdpblJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZUNvbnRyb2xsZXIodGhpcywge1xuICAgIHRhcmdldDogbnVsbCxcbiAgICBza2lwSW5pdGlhbDogdHJ1ZSxcbiAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnKSB7XG4gICAgICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuICAvKiogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiB0aGUgYGRpc2FibGVkYCBvciBgcmVhZG9ubHlgIGF0dHJpYnV0ZSBvZiB0aGUgdHJpZ2dlci4gKi9cbiAgcHJpdmF0ZSBfdHJpZ2dlckF0dHJpYnV0ZU9ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gbXV0YXRpb25zWzBdLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBpZiAoaW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpIHx8IGlucHV0Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSkge1xuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG4gIHByaXZhdGUgX292ZXJsYXkhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfb3B0aW9uQ29udGFpbmVyITogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG4gIHByaXZhdGUgX2lzUG9pbnRlckRvd25FdmVudE9uTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlciA9IG5ldyBTYmJFc2NhcGFibGVPdmVybGF5Q29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfb3B0aW9uc0NvdW50ID0gMDtcblxuICAvKiogVHJhY2tzIGlucHV0IGZyb20ga2V5Ym9hcmQuICovXG4gIHByaXZhdGUgX2xhc3RVc2VySW5wdXQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgb3B0aW9ucygpOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPltdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdvcHRpb25zZWxlY3RlZCcsIChlOiBFdmVudCkgPT4gdGhpcy5vbk9wdGlvblNlbGVjdGVkKGUpKTtcbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgKCkgPT4gdGhpcy5jbG9zZXN0PFNiYkZvcm1GaWVsZEVsZW1lbnQ+KCdzYmItZm9ybS1maWVsZCcpLFxuICAgICAgICB7XG4gICAgICAgICAgbmVnYXRpdmU6IChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5lZ2F0aXZlID0gZS5uZWdhdGl2ZTtcbiAgICAgICAgICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBib3JkZXJsZXNzOiAoZSkgPT4gdGhpcy50b2dnbGVTdGF0ZSgnb3B0aW9uLXBhbmVsLW9yaWdpbi1ib3JkZXJsZXNzJywgZS5ib3JkZXJsZXNzKSxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzeW5jTmVnYXRpdmUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQ7XG5cbiAgLyoqIE9wZW5zIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJyB8fFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcgfHxcbiAgICAgICF0aGlzLl9vdmVybGF5IHx8XG4gICAgICB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwIHx8XG4gICAgICB0aGlzLl9yZWFkb25seSgpIHx8XG4gICAgICAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93UG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCB0cnVlKTtcbiAgICBjb25zdCBvcmlnaW5FbGVtZW50ID0gdGhpcy5vcmlnaW5FbGVtZW50O1xuICAgIGlmICghb3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IGZpbmQgdGhlIG9yaWdpbiBlbGVtZW50LiBQbGVhc2Ugc3BlY2lmeSBhIHZhbGlkIGVsZW1lbnQgb3IgY2hlY2sgdGhlIHVzYWdlIG9mIHRoZSBcIm9yaWdpblwiIHByb3BlcnR5IGZyb20gdGhlIGRvY3VtZW50YXRpb24nLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbkVsZW1lbnQpO1xuICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgIHRoaXMuX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmNvbm5lY3QoKTtcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJyB8fCB0aGlzLnN0YXRlID09PSAnY2xvc2VkJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEEgJ3BlbmRpbmcgc2VsZWN0aW9uJyBpcyBjb25maXJtZWQgb24gcGFuZWwgY2xvc2VcbiAgICBpZiAodGhpcy5wZW5kaW5nQXV0b1NlbGVjdGVkT3B0aW9uKSB7XG4gICAgICB0aGlzLnBlbmRpbmdBdXRvU2VsZWN0ZWRPcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyh0aGlzLnBlbmRpbmdBdXRvU2VsZWN0ZWRPcHRpb24pO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJyk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5hYm9ydCgpO1xuICAgIGlmICh0aGlzLm9yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX29yaWdpblJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLm9yaWdpbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBjbG9zZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKHRoaXMsICctLXNiYi1vcHRpb25zLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3ZlciA9ICdtYW51YWwnO1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgaWYgKGFyaWFSb2xlT25Ib3N0KSB7XG4gICAgICB0aGlzLmlkIHx8PSB0aGlzLm92ZXJsYXlJZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICAgIH1cbiAgICB0aGlzLnN5bmNOZWdhdGl2ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLnN5bmNOZWdhdGl2ZSgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2F1dG9BY3RpdmVGaXJzdE9wdGlvbicpICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcblxuICAgIGlmIChpc1NlcnZlciB8fCAhdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghbmFtZSB8fCBuYW1lID09PSAndHJpZ2dlcicpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZVRyaWdnZXIoKTtcbiAgICB9IGVsc2UgaWYgKCghbmFtZSB8fCBuYW1lID09PSAnb3JpZ2luJykgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZCwgdXBkYXRlIHRoZSBpbnB1dCB2YWx1ZSBhbmQgY2xvc2UgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHJvdGVjdGVkIG9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+O1xuICAgIHRoaXMuX3NldFZhbHVlQW5kRGlzcGF0Y2hFdmVudHModGFyZ2V0KTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgcHJvdGVjdGVkIG9uT3B0aW9uQXJyb3dzU2VsZWN0ZWQoX2FjdGl2ZU9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIEEgJ3BlbmRpbmcgc2VsZWN0aW9uJyBzZXRzIHRoZSBvcHRpb24gdmFsdWUgaW4gdGhlIGlucHV0IGVsZW1lbnQgd2l0aG91dCBlbWl0dGluZyBldmVudHMuXG4gICAqIEEgJ3BlbmRpbmcgc2VsZWN0aW9uJyBpcyBjb25maXJtZWQgd2hlbiB0aGUgcGFuZWwgY2xvc2VzLiBBbnkgb3RoZXIgdXNlciBpbnRlcmFjdGlvblxuICAgKiB3aWxsIHJlc2V0IHRoZSBwZW5kaW5nIHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNldFBlbmRpbmdTZWxlY3Rpb24oYWN0aXZlT3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPik6IHZvaWQge1xuICAgIHRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbiA9IGFjdGl2ZU9wdGlvbjtcbiAgICB0aGlzLl9zZXRJbnB1dFZhbHVlKGFjdGl2ZU9wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIF9zZXRWYWx1ZUFuZERpc3BhdGNoRXZlbnRzKHNlbGVjdGVkT3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPik6IHZvaWQge1xuICAgIC8vIERlc2VsZWN0IHRoZSBwcmV2aW91cyBvcHRpb25zXG4gICAgdGhpcy5vcHRpb25zXG4gICAgICAuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi5pZCAhPT0gc2VsZWN0ZWRPcHRpb24uaWQgJiYgb3B0aW9uLnNlbGVjdGVkKVxuICAgICAgLmZvckVhY2goKG9wdGlvbikgPT4gKG9wdGlvbi5zZWxlY3RlZCA9IGZhbHNlKSk7XG4gICAgdGhpcy5wZW5kaW5nQXV0b1NlbGVjdGVkT3B0aW9uID0gbnVsbDtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLl9zZXRJbnB1dFZhbHVlKHNlbGVjdGVkT3B0aW9uKTtcblxuICAgICAgLy8gTWFudWFsbHkgdHJpZ2dlciB0aGUgY2hhbmdlIGV2ZW50c1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcblxuICAgICAgLy8gRGlzcGF0Y2hpbmcgdGhlIGlucHV0IGV2ZW50IGNoYW5nZXMgX2xhc3RJbnB1dCwgd2hpY2ggc2hvdWxkIHN0YXkgZW1wdHkgc2luY2UgdGhlcmUncyBubyBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAgICAgIHRoaXMuX2xhc3RVc2VySW5wdXQgPSBudWxsO1xuXG4gICAgICAvLyBDdXN0b20gaW5wdXQgZXZlbnQgZW1pdHRlZCB3aGVuIGlucHV0IHZhbHVlIGNoYW5nZXMgYWZ0ZXIgYW4gb3B0aW9uIGlzIHNlbGVjdGVkXG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudDx7IG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfT4oJ2lucHV0QXV0b2NvbXBsZXRlJywge1xuICAgICAgICAgIGRldGFpbDogeyBvcHRpb246IHNlbGVjdGVkT3B0aW9uIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogU2V0IHRoZSBvcHRpb24gdmFsdWUgd2l0aGluIHRoZSBpbnB1dCBlbGVtZW50ICovXG4gIHByaXZhdGUgX3NldElucHV0VmFsdWUob3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGlmICghdGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuIGEgdmFsdWUsIHJldHVybnMgdGhlIHN0cmluZyB0aGF0IHNob3VsZCBiZSBzaG93biB3aXRoaW4gdGhlIGlucHV0LlxuICAgIGNvbnN0IHRvRGlzcGxheSA9IHRoaXMuZGlzcGxheVdpdGg/LihvcHRpb24udmFsdWUgYXMgVCkgPz8gb3B0aW9uLnZhbHVlO1xuXG4gICAgLy8gU2V0IHRoZSBvcHRpb24gdmFsdWVcbiAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IFJlYWN0IG9uQ2hhbmdlIGV2ZW50LCB3ZSBoYXZlIHRvIGdldCB0aGUgc2V0dGVyIGFuZCBjYWxsIGl0LlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTE2MDAjaXNzdWVjb21tZW50LTM0NTgxMzEzMFxuICAgIGNvbnN0IHNldFZhbHVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZSwgJ3ZhbHVlJykhLnNldCE7XG4gICAgc2V0VmFsdWUuY2FsbCh0aGlzLnRyaWdnZXJFbGVtZW50LCB0b0Rpc3BsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKHRoaXMudHJpZ2dlckVsZW1lbnQ/LnZhbHVlKTtcblxuICAgIC8qKlxuICAgICAqIEl0J3MgcG9zc2libGUgdG8gZmlsdGVyIG91dCBvcHRpb25zIHdpdGggYW4gb3BlbmVkIHBhbmVsIG9uIGlucHV0IGNoYW5nZS5cbiAgICAgKiBJbiB0aGlzIGNhc2UsIHRoZSBwYW5lbCdzIHBvc2l0aW9uIG11c3QgYmUgcmVjYWxjdWxhdGVkIGNvbnNpZGVyaW5nIHRoZSBuZXcgb3B0aW9uJ3MgbGlzdC5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG5cbiAgICAgIC8vIElmIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbiBhbmQgdGhlIG9wdGlvbiBjb3VudCBnZXRzIHRvIHplcm8sIHdlIGNsb3NlIHRoZSBhdXRvY29tcGxldGUuXG4gICAgICBpZiAodGhpcy5fb3B0aW9uc0NvdW50ID4gMCAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgLy8gSWYgdGhlICdpbnB1dCcgaXMgZm9jdXNlZCBhbmQgdGhlIGNvdW50IG9mIG9wdGlvbnMgY2hhbmdlcyBmcm9tIDAgdG8gPiAwLFxuICAgICAgLy8gdGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgb3BlbiBhdXRvbWF0aWNhbGx5LlxuICAgICAgZG9jdW1lbnQ/LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMudHJpZ2dlckVsZW1lbnQgJiZcbiAgICAgIHRoaXMuX29wdGlvbnNDb3VudCA9PT0gMCAmJlxuICAgICAgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIHRoaXMuX29wdGlvbnNDb3VudCA9IHRoaXMub3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIF9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKSB7XG4gICAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgdGhpcy5zZXROZXh0QWN0aXZlT3B0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBhdXRvY29tcGxldGUgc2hvdWxkIGluaGVyaXQgJ3JlYWRvbmx5JyBzdGF0ZSBmcm9tIHRoZSB0cmlnZ2VyLiAqL1xuICBwcml2YXRlIF9yZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyRWxlbWVudD8uaGFzQXR0cmlidXRlKCdyZWFkb25seScpID8/IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcG9uZW50U2V0dXAoKTogdm9pZCB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlVHJpZ2dlcigpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyRWxlbWVudCA9ICh0aGlzLnRyaWdnZXIgPz9cbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAodHJpZ2dlckVsZW1lbnQgPT09IHRoaXMudHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXModGhpcy50cmlnZ2VyRWxlbWVudCk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJyk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyRWxlbWVudDtcblxuICAgIGlmICghdGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGNhbiBiZSB0aGUgZmFsbGJhY2sgb2YgdGhlIG9yaWdpbiwgd2UgZXZlbnR1YWxseSBoYXZlIHRvIHVwZGF0ZSB0aGUgcG9zaXRpb24uXG4gICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IHRoaXMub3JpZ2luRWxlbWVudDtcbiAgICBpZiAodGhpcy50cmlnZ2VyRWxlbWVudCA9PT0gb3JpZ2luRWxlbWVudCAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLnRyaWdnZXJFbGVtZW50ISwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydkaXNhYmxlZCcsICdyZWFkb25seSddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLnRyaWdnZXJFbGVtZW50KTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gT3BlbiB0aGUgb3ZlcmxheSBvbiBmb2N1cywgY2xpY2ssIGlucHV0IGFuZCBgQXJyb3dEb3duYCBldmVudFxuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2lucHV0JyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fbGFzdFVzZXJJbnB1dCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnBlbmRpbmdBdXRvU2VsZWN0ZWRPcHRpb24gPSBudWxsO1xuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLl9jbG9zZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQpLFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAvLyBXZSBuZWVkIGtleSBldmVudCB0byBydW4gYmVmb3JlIGFueSBvdGhlciBzdWJzY3JpcHRpb24gdG8gZ3VhcmFudGVlIGEgY29ycmVjdFxuICAgICAgICAvLyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIGNvbXBvbmVudHMgKG5lY2Vzc2FyeSBmb3IgdGhlICdzYmItY2hpcC1ncm91cCcgdXNlIGNhc2UpLlxuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLy8gU2V0IG92ZXJsYXkgcG9zaXRpb24sIHdpZHRoIGFuZCBtYXggaGVpZ2h0XG4gIHByaXZhdGUgX3NldE92ZXJsYXlQb3NpdGlvbihvcmlnaW5FbGVtZW50ID0gdGhpcy5vcmlnaW5FbGVtZW50KTogdm9pZCB7XG4gICAgLy8gQW4gdW5kZWZpbmVkIG9yaWdpbkVsZW1lbnQgc2hvdWxkIG9ubHkgb2NjdXIgaW4gdGhlIHVubGlrZWx5IGV2ZW50XG4gICAgLy8gdGhhdCB0aGUgYXV0b2NvbXBsZXRlIGxvc2VzIGl0cyBvcmlnaW5FbGVtZW50IGFuZCB0cmlnZ2VyRWxlbWVudCBkdXJpbmcgYW4gb3BlbiBzdGF0ZS5cbiAgICBpZiAoIW9yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0T3ZlcmxheVBvc2l0aW9uKFxuICAgICAgdGhpcy5fb3ZlcmxheSxcbiAgICAgIG9yaWdpbkVsZW1lbnQsXG4gICAgICB0aGlzLl9vcHRpb25Db250YWluZXIsXG4gICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJy5zYmItYXV0b2NvbXBsZXRlX19jb250YWluZXInKSEsXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIG9wZW4vY2xvc2UgYW5pbWF0aW9uIGVuZC5cbiAgICogSW4gcmFyZSBjYXNlcyBpdCBjYW4gYmUgdGhhdCB0aGUgYW5pbWF0aW9uRW5kIGV2ZW50IGlzIHRyaWdnZXJlZCB0d2ljZS5cbiAgICogVG8gYXZvaWQgZW50ZXJpbmcgYSBjb3JydXB0IHN0YXRlLCBleGl0IHdoZW4gc3RhdGUgaXMgbm90IGV4cGVjdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfb25BbmltYXRpb25FbmQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdvcGVuJyAmJiB0aGlzLnN0YXRlID09PSAnb3BlbmluZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmFuaW1hdGlvbk5hbWUgPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT3BlbmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5lZCc7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLm9yaWdpbkVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuICAgIHRoaXMuZGlzcGF0Y2hPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zZWQnO1xuICAgIHRoaXMuaGlkZVBvcG92ZXI/LigpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuXG4gICAgLy8gQ2xlYXJzIHRoZSBpbnB1dCBpZiB0aGVyZSdzIHVzZXIgaW50ZXJhY3Rpb24gd2l0aG91dCBzZWxlY3Rpb24gKHNlbGVjdGlvbiBjbGVhcnMgYF9sYXN0VXNlcklucHV0YCkuXG4gICAgaWYgKHRoaXMucmVxdWlyZVNlbGVjdGlvbiAmJiB0aGlzLnRyaWdnZXJFbGVtZW50ICYmIHRoaXMuX2xhc3RVc2VySW5wdXQpIHtcbiAgICAgIGNvbnN0IHNldFZhbHVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZSwgJ3ZhbHVlJykhLnNldCE7XG4gICAgICBzZXRWYWx1ZS5jYWxsKHRoaXMudHJpZ2dlckVsZW1lbnQsICcnKTtcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnMoJycpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICB9XG4gICAgdGhpcy5yZXNldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICB0aGlzLl9vcHRpb25Db250YWluZXIuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLl9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaENsb3NlRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gUmVjYWxjdWxhdGUgdGhlIG92ZXJsYXkgcG9zaXRpb24gb24gc2Nyb2xsIGFuZCB3aW5kb3cgcmVzaXplXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgLy8gV2l0aG91dCBjYXB0dXJlLCBvdGhlciBzY3JvbGwgY29udGV4dHMgd291bGQgbm90IGJ1YmJsZSB0byB0aGlzIGV2ZW50IGxpc3RlbmVyLlxuICAgICAgLy8gQ2FwdHVyZSBhbGxvd3MgdXMgdG8gcmVhY3QgdG8gYWxsIHNjcm9sbCBjb250ZXh0cyBpbiB0aGlzIERPTS5cbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIC8vIENsb3NlIGF1dG9jb21wbGV0ZSBvbiBiYWNrZHJvcCBjbGlja1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIChldikgPT4gdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lcihldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIChldikgPT4gdGhpcy5fY2xvc2VPbkJhY2tkcm9wQ2xpY2soZXYpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ8m1ZGlzYWJsZWRjaGFuZ2UnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24/LmRpc2FibGVkKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBLZXlib2FyZCBpbnRlcmFjdGlvbnNcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLm9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIC8vIFdlIG5lZWQga2V5IGV2ZW50IHRvIHJ1biBiZWZvcmUgYW55IG90aGVyIHN1YnNjcmlwdGlvbiB0byBndWFyYW50ZWUgYSBjb3JyZWN0XG4gICAgICAgIC8vIGludGVyYWN0aW9uIHdpdGggb3RoZXIgY29tcG9uZW50cyAobmVjZXNzYXJ5IGZvciB0aGUgJ3NiYi1jaGlwLWdyb3VwJyB1c2UgY2FzZSkuXG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2JsdXInLFxuICAgICAgKGUpID0+IHtcbiAgICAgICAgLy8gSWYgdGhlIG5ldyBmb2N1cyBpcyB0aGUgYXV0b2NvbXBsZXRlIG9yIGluc2lkZSBvZiBpdCB0aGVuIGFuIG9wdGlvblxuICAgICAgICAvLyB3YXMgc2VsZWN0ZWQgYW5kIHRoZXJlIGlzIGEgc2VwYXJhdGUgbWVjaGFuaXNtIHRoYXQgY2xvc2VzIHRoaXMgaW5zdGFuY2UuXG4gICAgICAgIGlmICghdGhpcy5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgbWVudS5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ID0gaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCk7XG4gIH07XG5cbiAgLy8gSWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgdGhlIGF1dG9jb21wbGV0ZSwgY2xvc2VzIHRoZSBwYW5lbC5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgJiZcbiAgICAgICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5vcmlnaW5FbGVtZW50LCBldmVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJyB8fCB0aGlzLnN0YXRlID09PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKiogSGlnaGxpZ2h0IHRoZSBzZWFyY2hlZCB0ZXh0IG9uIHRoZSBvcHRpb25zLiAqL1xuICBwcml2YXRlIF9oaWdobGlnaHRPcHRpb25zKHNlYXJjaFRlcm0/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoc2VhcmNoVGVybSA9PT0gbnVsbCB8fCBzZWFyY2hUZXJtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4gb3B0aW9uLmhpZ2hsaWdodChzZWFyY2hUZXJtKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAvLyBTY3JvbGwgYXJlYXMgd2l0aG91dCBjb250YWluaW5nIGFuIGludGVyYWN0aXZlIGVsZW1lbnQgd2lsbCByZWNlaXZlIGZvY3VzIHdoZW4gdGFiYmluZyB0aHJvdWdoIHRoZSBkb2N1bWVudC5cbiAgICAvLyBJZiB0aGVyZSBhcmUgYSBsb3Qgb2Ygb3B0aW9ucyBhbmQgd2hlbiBwcmVzc2luZyB0YWIga2V5LCB0aGUgc2Nyb2xsIGFyZWEgb24gc2JiLWF1dG9jb21wbGV0ZV9fb3B0aW9ucyBnZXRzIGZvY3VzLlxuICAgIC8vIEFzIGVsZW1lbnRzIGluc2lkZSB0aGUgcGFuZWwgc2hvdWxkIG5ldmVyIGdldCBmb2N1cywgd2UgaGF2ZSB0byBhdm9pZCB0aGF0IGJ5IHNldHRpbmcgdGFiaW5kZXg9LTEuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fZ2FwLWZpeFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fZ2FwLWZpeFwiPiR7b3ZlcmxheUdhcEZpeENvcm5lcnMoKX08L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHt0aGlzLl9vbkFuaW1hdGlvbkVuZH1cbiAgICAgICAgICBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3BhbmVsXCJcbiAgICAgICAgICAke3JlZigob3ZlcmxheVJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9vdmVybGF5ID0gb3ZlcmxheVJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19vcHRpb25zXCJcbiAgICAgICAgICAgICAgcm9sZT0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMucGFuZWxSb2xlIDogbm90aGluZ31cbiAgICAgICAgICAgICAgaWQ9JHshYXJpYVJvbGVPbkhvc3QgPyB0aGlzLm92ZXJsYXlJZCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAke3JlZigoY29udGFpbmVyUmVmKSA9PiAodGhpcy5fb3B0aW9uQ29udGFpbmVyID0gY29udGFpbmVyUmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBpbnB1dEF1dG9jb21wbGV0ZTogQ3VzdG9tRXZlbnQ8eyBvcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PGFueT4gfT47XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
889
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7XG4gIFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIsXG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxufSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaXNMZWFuLCBpc1NhZmFyaSwgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiwgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7XG4gIGlzRXZlbnRPbkVsZW1lbnQsXG4gIG92ZXJsYXlHYXBGaXhDb3JuZXJzLFxuICByZW1vdmVBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzLFxuICBzZXRPdmVybGF5UG9zaXRpb24sXG59IGZyb20gJy4uL2NvcmUvb3ZlcmxheS50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkZvcm1GaWVsZEVsZW1lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oXG4gIFNiYkh5ZHJhdGlvbk1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBhdHRhY2guXG4gICAqIElmIG5vdCBzZXQsIGFzIGZhbGxiYWNrIHRoZXJlIGFyZSB0d28gZWxlbWVudHMgd2hpY2ggY2FuIGFjdCBhcyBvcmlnaW4gd2l0aCBmb2xsb3dpbmcgcHJpb3JpdHkgb3JkZXI6XG4gICAqIDEuIGBzYmItZm9ybS1maWVsZGAgaWYgaXQgaXMgYW4gYW5jZXN0b3IuXG4gICAqIDIuIHRyaWdnZXIgZWxlbWVudCBpZiBzZXQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIG9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGF1dG9jb21wbGV0ZSBvcGVuaW5nLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgb3BlbiBvbiBmb2N1cywgY2xpY2ssIGlucHV0IG9yIGBBcnJvd0Rvd25gIGtleXByZXNzIG9mIHRoZSAndHJpZ2dlcicgZWxlbWVudC5cbiAgICogSWYgbm90IHNldCwgd2lsbCBzZWFyY2ggZm9yIHRoZSBmaXJzdCAnaW5wdXQnIGNoaWxkIG9mIGEgJ3NiYi1mb3JtLWZpZWxkJyBhbmNlc3Rvci5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJlc2VydmUtaWNvbi1zcGFjZScsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHByZXNlcnZlSWNvblNwYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGZpcnN0IG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCB3aGVuIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1hY3RpdmUtZmlyc3Qtb3B0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhbiBvcHRpb24ncyBjb250cm9sIHZhbHVlIHRvIGl0cyBkaXNwbGF5IHZhbHVlIGluIHRoZSB0cmlnZ2VyLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNwbGF5V2l0aDogKCh2YWx1ZTogVCkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBhY3RpdmUgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBhcyB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1zZWxlY3QtYWN0aXZlLW9wdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGF1dG9TZWxlY3RBY3RpdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgYWN0aXZlIG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uIGJsdXIuXG4gICAqIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUuIEl0IG1pZ2h0IGJlIHN1YmplY3QgdG8gY2hhbmdlcy5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhdXRvLXNlbGVjdC1hY3RpdmUtb3B0aW9uLW9uLWJsdXInLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBhdXRvU2VsZWN0QWN0aXZlT3B0aW9uT25CbHVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHVzZXIgaXMgcmVxdWlyZWQgdG8gbWFrZSBhIHNlbGVjdGlvbiB3aGVuIHRoZXkncmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGVcbiAgICogYXV0b2NvbXBsZXRlLiBJZiB0aGUgdXNlciBtb3ZlcyBhd2F5IGZyb20gdGhlIGF1dG9jb21wbGV0ZSB3aXRob3V0IHNlbGVjdGluZyBhbiBvcHRpb24gZnJvbVxuICAgKiB0aGUgbGlzdCwgdGhlIHZhbHVlIHdpbGwgYmUgcmVzZXQuIElmIHRoZSB1c2VyIG9wZW5zIHRoZSBwYW5lbCBhbmQgY2xvc2VzIGl0IHdpdGhvdXRcbiAgICogaW50ZXJhY3Rpbmcgb3Igc2VsZWN0aW5nIGEgdmFsdWUsIHRoZSBpbml0aWFsIHZhbHVlIHdpbGwgYmUga2VwdC5cbiAgICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdyZXF1aXJlLXNlbGVjdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHJlcXVpcmVTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBhdXRvY29tcGxldGUgcGFuZWwgcmVsYXRpdmUgdG8gdGhlIHRyaWdnZXIuXG4gICAqIEBkZWZhdWx0ICdhdXRvJ1xuICAgKi9cbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIHBvc2l0aW9uOiAnYXV0bycgfCAnYWJvdmUnIHwgJ2JlbG93JyA9ICdhdXRvJztcblxuICAvKiogUmV0dXJucyB0aGUgZWxlbWVudCB3aGVyZSB0aGUgYXV0b2NvbXBsZXRlIG92ZXJsYXkgaXMgYXR0YWNoZWQgdG8uICovXG4gIHB1YmxpYyBnZXQgb3JpZ2luRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm9yaWdpbiA/P1xuICAgICAgdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3I/LignI292ZXJsYXktYW5jaG9yJykgPz9cbiAgICAgIHRoaXMudHJpZ2dlciA/P1xuICAgICAgbnVsbFxuICAgICk7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgdHJpZ2dlciBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IHRyaWdnZXJFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckVsZW1lbnQgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIF90cmlnZ2VyRWxlbWVudD86IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvdmVybGF5SWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHBhbmVsUm9sZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWN0aXZlT3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPiB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgcGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3JpZ2luUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG4gIC8qKiBMaXN0ZW5zIHRvIHRoZSBjaGFuZ2VzIG9uIHRoZSBgZGlzYWJsZWRgIG9yIGByZWFkb25seWAgYXR0cmlidXRlIG9mIHRoZSB0cmlnZ2VyLiAqL1xuICBwcml2YXRlIF90cmlnZ2VyQXR0cmlidXRlT2JzZXJ2ZXIgPSAhaXNTZXJ2ZXJcbiAgICA/IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBtdXRhdGlvbnNbMF0udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlmIChpbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgfHwgaW5wdXQuaGFzQXR0cmlidXRlKCdyZWFkb25seScpKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIDogbnVsbDtcbiAgcHJpdmF0ZSBfb3ZlcmxheSE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcHRpb25Db250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9vcHRpb25zQ291bnQgPSAwO1xuXG4gIC8qKiBUcmFja3MgaW5wdXQgZnJvbSBrZXlib2FyZC4gKi9cbiAgcHJpdmF0ZSBfbGFzdFVzZXJJbnB1dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+W107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ29wdGlvbnNlbGVjdGVkJywgKGU6IEV2ZW50KSA9PiB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQoZSkpO1xuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICAoKSA9PiB0aGlzLmNsb3Nlc3Q8U2JiRm9ybUZpZWxkRWxlbWVudD4oJ3NiYi1mb3JtLWZpZWxkJyksXG4gICAgICAgIHtcbiAgICAgICAgICBuZWdhdGl2ZTogKGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmVnYXRpdmUgPSBlLm5lZ2F0aXZlO1xuICAgICAgICAgICAgdGhpcy5zeW5jTmVnYXRpdmUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvcmRlcmxlc3M6IChlKSA9PiB0aGlzLnRvZ2dsZVN0YXRlKCdvcHRpb24tcGFuZWwtb3JpZ2luLWJvcmRlcmxlc3MnLCBlLmJvcmRlcmxlc3MpLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHN5bmNOZWdhdGl2ZSgpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0VHJpZ2dlckF0dHJpYnV0ZXMoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvcGVuZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2VsZWN0QnlLZXlib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXROZXh0QWN0aXZlT3B0aW9uKGV2ZW50PzogS2V5Ym9hcmRFdmVudCk6IHZvaWQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZXNldEFjdGl2ZUVsZW1lbnQoKTogdm9pZDtcblxuICAvKiogT3BlbnMgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnIHx8XG4gICAgICB0aGlzLnN0YXRlID09PSAnb3BlbmVkJyB8fFxuICAgICAgIXRoaXMuX292ZXJsYXkgfHxcbiAgICAgIHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDAgfHxcbiAgICAgIHRoaXMuX3JlYWRvbmx5KCkgfHxcbiAgICAgICF0aGlzLmRpc3BhdGNoQmVmb3JlT3BlbkV2ZW50KClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dQb3BvdmVyPy4oKTtcbiAgICB0aGlzLnN0YXRlID0gJ29wZW5pbmcnO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcsIHRydWUpO1xuICAgIGNvbnN0IG9yaWdpbkVsZW1lbnQgPSB0aGlzLm9yaWdpbkVsZW1lbnQ7XG4gICAgaWYgKCFvcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZmluZCB0aGUgb3JpZ2luIGVsZW1lbnQuIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgZWxlbWVudCBvciBjaGVjayB0aGUgdXNhZ2Ugb2YgdGhlIFwib3JpZ2luXCIgcHJvcGVydHkgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbicsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24ob3JpZ2luRWxlbWVudCk7XG4gICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG4gICAgdGhpcy5fYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk7XG4gICAgdGhpcy5fZXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIuY29ubmVjdCgpO1xuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYG9wZW5lZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZU9wZW5pbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2VzIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2Nsb3NpbmcnIHx8IHRoaXMuc3RhdGUgPT09ICdjbG9zZWQnIHx8ICF0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQSAncGVuZGluZyBzZWxlY3Rpb24nIGlzIGNvbmZpcm1lZCBvbiBwYW5lbCBjbG9zZVxuICAgIGlmICh0aGlzLnBlbmRpbmdBdXRvU2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgIHRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLl9zZXRWYWx1ZUFuZERpc3BhdGNoRXZlbnRzKHRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLmFib3J0KCk7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMub3JpZ2luRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLW9wdGlvbnMtcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAoYXJpYVJvbGVPbkhvc3QpIHtcbiAgICAgIHRoaXMuaWQgfHw9IHRoaXMub3ZlcmxheUlkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gICAgfVxuICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnYXV0b0FjdGl2ZUZpcnN0T3B0aW9uJykgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKGlzU2VydmVyIHx8ICF0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH0gZWxzZSBpZiAoKCFuYW1lIHx8IG5hbWUgPT09ICdvcmlnaW4nKSAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHNlbGVjdGVkLCB1cGRhdGUgdGhlIGlucHV0IHZhbHVlIGFuZCBjbG9zZSB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD47XG4gICAgdGhpcy5fc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyh0YXJnZXQpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKiBAZGVwcmVjYXRlZCAqL1xuICBwcm90ZWN0ZWQgb25PcHRpb25BcnJvd3NTZWxlY3RlZChfYWN0aXZlT3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPik6IHZvaWQge31cblxuICAvKipcbiAgICogQSAncGVuZGluZyBzZWxlY3Rpb24nIHNldHMgdGhlIG9wdGlvbiB2YWx1ZSBpbiB0aGUgaW5wdXQgZWxlbWVudCB3aXRob3V0IGVtaXR0aW5nIGV2ZW50cy5cbiAgICogQSAncGVuZGluZyBzZWxlY3Rpb24nIGlzIGNvbmZpcm1lZCB3aGVuIHRoZSBwYW5lbCBjbG9zZXMuIEFueSBvdGhlciB1c2VyIGludGVyYWN0aW9uXG4gICAqIHdpbGwgcmVzZXQgdGhlIHBlbmRpbmcgdmFsdWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0UGVuZGluZ1NlbGVjdGlvbihhY3RpdmVPcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nQXV0b1NlbGVjdGVkT3B0aW9uID0gYWN0aXZlT3B0aW9uO1xuICAgIHRoaXMuX3NldElucHV0VmFsdWUoYWN0aXZlT3B0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFZhbHVlQW5kRGlzcGF0Y2hFdmVudHMoc2VsZWN0ZWRPcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgLy8gRGVzZWxlY3QgdGhlIHByZXZpb3VzIG9wdGlvbnNcbiAgICB0aGlzLm9wdGlvbnNcbiAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLmlkICE9PSBzZWxlY3RlZE9wdGlvbi5pZCAmJiBvcHRpb24uc2VsZWN0ZWQpXG4gICAgICAuZm9yRWFjaCgob3B0aW9uKSA9PiAob3B0aW9uLnNlbGVjdGVkID0gZmFsc2UpKTtcbiAgICB0aGlzLnBlbmRpbmdBdXRvU2VsZWN0ZWRPcHRpb24gPSBudWxsO1xuXG4gICAgaWYgKHRoaXMudHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX3NldElucHV0VmFsdWUoc2VsZWN0ZWRPcHRpb24pO1xuXG4gICAgICAvLyBNYW51YWxseSB0cmlnZ2VyIHRoZSBjaGFuZ2UgZXZlbnRzXG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuXG4gICAgICAvLyBEaXNwYXRjaGluZyB0aGUgaW5wdXQgZXZlbnQgY2hhbmdlcyBfbGFzdElucHV0LCB3aGljaCBzaG91bGQgc3RheSBlbXB0eSBzaW5jZSB0aGVyZSdzIG5vIGtleWJvYXJkIGludGVyYWN0aW9uLlxuICAgICAgdGhpcy5fbGFzdFVzZXJJbnB1dCA9IG51bGw7XG5cbiAgICAgIC8vIEN1c3RvbSBpbnB1dCBldmVudCBlbWl0dGVkIHdoZW4gaW5wdXQgdmFsdWUgY2hhbmdlcyBhZnRlciBhbiBvcHRpb24gaXMgc2VsZWN0ZWRcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50PHsgb3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPiB9PignaW5wdXRBdXRvY29tcGxldGUnLCB7XG4gICAgICAgICAgZGV0YWlsOiB7IG9wdGlvbjogc2VsZWN0ZWRPcHRpb24gfSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZXQgdGhlIG9wdGlvbiB2YWx1ZSB3aXRoaW4gdGhlIGlucHV0IGVsZW1lbnQgKi9cbiAgcHJpdmF0ZSBfc2V0SW5wdXRWYWx1ZShvcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW4gYSB2YWx1ZSwgcmV0dXJucyB0aGUgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHNob3duIHdpdGhpbiB0aGUgaW5wdXQuXG4gICAgY29uc3QgdG9EaXNwbGF5ID0gdGhpcy5kaXNwbGF5V2l0aD8uKG9wdGlvbi52YWx1ZSBhcyBUKSA/PyBvcHRpb24udmFsdWU7XG5cbiAgICAvLyBTZXQgdGhlIG9wdGlvbiB2YWx1ZVxuICAgIC8vIEluIG9yZGVyIHRvIHN1cHBvcnQgUmVhY3Qgb25DaGFuZ2UgZXZlbnQsIHdlIGhhdmUgdG8gZ2V0IHRoZSBzZXR0ZXIgYW5kIGNhbGwgaXQuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMTYwMCNpc3N1ZWNvbW1lbnQtMzQ1ODEzMTMwXG4gICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICBzZXRWYWx1ZS5jYWxsKHRoaXMudHJpZ2dlckVsZW1lbnQsIHRvRGlzcGxheSk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Y2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnModGhpcy50cmlnZ2VyRWxlbWVudD8udmFsdWUpO1xuXG4gICAgLyoqXG4gICAgICogSXQncyBwb3NzaWJsZSB0byBmaWx0ZXIgb3V0IG9wdGlvbnMgd2l0aCBhbiBvcGVuZWQgcGFuZWwgb24gaW5wdXQgY2hhbmdlLlxuICAgICAqIEluIHRoaXMgY2FzZSwgdGhlIHBhbmVsJ3MgcG9zaXRpb24gbXVzdCBiZSByZWNhbGN1bGF0ZWQgY29uc2lkZXJpbmcgdGhlIG5ldyBvcHRpb24ncyBsaXN0LlxuICAgICAqL1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTtcblxuICAgICAgLy8gSWYgdGhlIGF1dG9jb21wbGV0ZSBpcyBvcGVuIGFuZCB0aGUgb3B0aW9uIGNvdW50IGdldHMgdG8gemVybywgd2UgY2xvc2UgdGhlIGF1dG9jb21wbGV0ZS5cbiAgICAgIGlmICh0aGlzLl9vcHRpb25zQ291bnQgPiAwICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICAvLyBJZiB0aGUgJ2lucHV0JyBpcyBmb2N1c2VkIGFuZCB0aGUgY291bnQgb2Ygb3B0aW9ucyBjaGFuZ2VzIGZyb20gMCB0byA+IDAsXG4gICAgICAvLyB0aGUgYXV0b2NvbXBsZXRlIHNob3VsZCBvcGVuIGF1dG9tYXRpY2FsbHkuXG4gICAgICBkb2N1bWVudD8uYWN0aXZlRWxlbWVudCA9PT0gdGhpcy50cmlnZ2VyRWxlbWVudCAmJlxuICAgICAgdGhpcy5fb3B0aW9uc0NvdW50ID09PSAwICYmXG4gICAgICB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb3B0aW9uc0NvdW50ID0gdGhpcy5vcHRpb25zLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvQWN0aXZlRmlyc3RPcHRpb24pIHtcbiAgICAgIHRoaXMucmVzZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oKTtcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgaW5oZXJpdCAncmVhZG9ubHknIHN0YXRlIGZyb20gdGhlIHRyaWdnZXIuICovXG4gIHByaXZhdGUgX3JlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jb21wb25lbnRTZXR1cCgpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVUcmlnZ2VyKCk6IHZvaWQge1xuICAgIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gKHRoaXMudHJpZ2dlciA/P1xuICAgICAgdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykpIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICh0cmlnZ2VyRWxlbWVudCA9PT0gdGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgcmVtb3ZlQXJpYUNvbWJvQm94QXR0cmlidXRlcyh0aGlzLnRyaWdnZXJFbGVtZW50KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHRyaWdnZXJFbGVtZW50O1xuXG4gICAgaWYgKCF0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQXMgdGhlIHRyaWdnZXIgY2FuIGJlIHRoZSBmYWxsYmFjayBvZiB0aGUgb3JpZ2luLCB3ZSBldmVudHVhbGx5IGhhdmUgdG8gdXBkYXRlIHRoZSBwb3NpdGlvbi5cbiAgICBjb25zdCBvcmlnaW5FbGVtZW50ID0gdGhpcy5vcmlnaW5FbGVtZW50O1xuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50ID09PSBvcmlnaW5FbGVtZW50ICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24ob3JpZ2luRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckF0dHJpYnV0ZU9ic2VydmVyPy5vYnNlcnZlKHRoaXMudHJpZ2dlckVsZW1lbnQhLCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2Rpc2FibGVkJywgJ3JlYWRvbmx5J10sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNldFRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMudHJpZ2dlckVsZW1lbnQpO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAvLyBPcGVuIHRoZSBvdmVybGF5IG9uIGZvY3VzLCBjbGljaywgaW5wdXQgYW5kIGBBcnJvd0Rvd25gIGV2ZW50XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHRoaXMub3BlbigpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnaW5wdXQnLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnModmFsdWUpO1xuICAgICAgICB0aGlzLl9sYXN0VXNlcklucHV0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMucGVuZGluZ0F1dG9TZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMuX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIC8vIFdlIG5lZWQga2V5IGV2ZW50IHRvIHJ1biBiZWZvcmUgYW55IG90aGVyIHN1YnNjcmlwdGlvbiB0byBndWFyYW50ZWUgYSBjb3JyZWN0XG4gICAgICAgIC8vIGludGVyYWN0aW9uIHdpdGggb3RoZXIgY29tcG9uZW50cyAobmVjZXNzYXJ5IGZvciB0aGUgJ3NiYi1jaGlwLWdyb3VwJyB1c2UgY2FzZSkuXG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvLyBTZXQgb3ZlcmxheSBwb3NpdGlvbiwgd2lkdGggYW5kIG1heCBoZWlnaHRcbiAgcHJpdmF0ZSBfc2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbkVsZW1lbnQgPSB0aGlzLm9yaWdpbkVsZW1lbnQpOiB2b2lkIHtcbiAgICAvLyBBbiB1bmRlZmluZWQgb3JpZ2luRWxlbWVudCBzaG91bGQgb25seSBvY2N1ciBpbiB0aGUgdW5saWtlbHkgZXZlbnRcbiAgICAvLyB0aGF0IHRoZSBhdXRvY29tcGxldGUgbG9zZXMgaXRzIG9yaWdpbkVsZW1lbnQgYW5kIHRyaWdnZXJFbGVtZW50IGR1cmluZyBhbiBvcGVuIHN0YXRlLlxuICAgIGlmICghb3JpZ2luRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRPdmVybGF5UG9zaXRpb24oXG4gICAgICB0aGlzLl9vdmVybGF5LFxuICAgICAgb3JpZ2luRWxlbWVudCxcbiAgICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lcixcbiAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1hdXRvY29tcGxldGVfX2NvbnRhaW5lcicpISxcbiAgICAgIHRoaXMsXG4gICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogT24gb3Blbi9jbG9zZSBhbmltYXRpb24gZW5kLlxuICAgKiBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAgKiBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gICAqL1xuICBwcml2YXRlIF9vbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICBpZiAodGhpcy5vcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aGlzLl9vcmlnaW5SZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMub3JpZ2luRWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5oaWRlUG9wb3Zlcj8uKCk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAvLyBDbGVhcnMgdGhlIGlucHV0IGlmIHRoZXJlJ3MgdXNlciBpbnRlcmFjdGlvbiB3aXRob3V0IHNlbGVjdGlvbiAoc2VsZWN0aW9uIGNsZWFycyBgX2xhc3RVc2VySW5wdXRgKS5cbiAgICBpZiAodGhpcy5yZXF1aXJlU2VsZWN0aW9uICYmIHRoaXMudHJpZ2dlckVsZW1lbnQgJiYgdGhpcy5fbGFzdFVzZXJJbnB1dCkge1xuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy50cmlnZ2VyRWxlbWVudCwgJycpO1xuICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9ucygnJyk7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lci5zY3JvbGxUb3AgPSAwO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLmRpc3BhdGNoQ2xvc2VFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgb3ZlcmxheSBwb3NpdGlvbiBvbiBzY3JvbGwgYW5kIHdpbmRvdyByZXNpemVcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICAvLyBXaXRob3V0IGNhcHR1cmUsIG90aGVyIHNjcm9sbCBjb250ZXh0cyB3b3VsZCBub3QgYnViYmxlIHRvIHRoaXMgZXZlbnQgbGlzdGVuZXIuXG4gICAgICAvLyBDYXB0dXJlIGFsbG93cyB1cyB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGNvbnRleHRzIGluIHRoaXMgRE9NLlxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgYXV0b2NvbXBsZXRlIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgKGV2KSA9PiB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayhldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnybVkaXNhYmxlZGNoYW5nZScsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbj8uZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIEtleWJvYXJkIGludGVyYWN0aW9uc1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50KSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgLy8gV2UgbmVlZCBrZXkgZXZlbnQgdG8gcnVuIGJlZm9yZSBhbnkgb3RoZXIgc3Vic2NyaXB0aW9uIHRvIGd1YXJhbnRlZSBhIGNvcnJlY3RcbiAgICAgICAgLy8gaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzIChuZWNlc3NhcnkgZm9yIHRoZSAnc2JiLWNoaXAtZ3JvdXAnIHVzZSBjYXNlKS5cbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnYmx1cicsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICAvLyBJZiB0aGUgbmV3IGZvY3VzIGlzIHRoZSBhdXRvY29tcGxldGUgb3IgaW5zaWRlIG9mIGl0IHRoZW4gYW4gb3B0aW9uXG4gICAgICAgIC8vIHdhcyBzZWxlY3RlZCBhbmQgdGhlcmUgaXMgYSBzZXBhcmF0ZSBtZWNoYW5pc20gdGhhdCBjbG9zZXMgdGhpcyBpbnN0YW5jZS5cbiAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuYXV0b1NlbGVjdEFjdGl2ZU9wdGlvbk9uQmx1ciAmJlxuICAgICAgICAgICAgdGhpcy5hY3RpdmVPcHRpb24gJiZcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnZhbHVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZUFuZERpc3BhdGNoRXZlbnRzKHRoaXMuYWN0aXZlT3B0aW9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgbWVudS5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ID0gaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCk7XG4gIH07XG5cbiAgLy8gSWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgdGhlIGF1dG9jb21wbGV0ZSwgY2xvc2VzIHRoZSBwYW5lbC5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgJiZcbiAgICAgICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5vcmlnaW5FbGVtZW50LCBldmVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJyB8fCB0aGlzLnN0YXRlID09PSAnb3BlbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKiogSGlnaGxpZ2h0IHRoZSBzZWFyY2hlZCB0ZXh0IG9uIHRoZSBvcHRpb25zLiAqL1xuICBwcml2YXRlIF9oaWdobGlnaHRPcHRpb25zKHNlYXJjaFRlcm0/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoc2VhcmNoVGVybSA9PT0gbnVsbCB8fCBzZWFyY2hUZXJtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4gb3B0aW9uLmhpZ2hsaWdodChzZWFyY2hUZXJtKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAvLyBTY3JvbGwgYXJlYXMgd2l0aG91dCBjb250YWluaW5nIGFuIGludGVyYWN0aXZlIGVsZW1lbnQgd2lsbCByZWNlaXZlIGZvY3VzIHdoZW4gdGFiYmluZyB0aHJvdWdoIHRoZSBkb2N1bWVudC5cbiAgICAvLyBJZiB0aGVyZSBhcmUgYSBsb3Qgb2Ygb3B0aW9ucyBhbmQgd2hlbiBwcmVzc2luZyB0YWIga2V5LCB0aGUgc2Nyb2xsIGFyZWEgb24gc2JiLWF1dG9jb21wbGV0ZV9fb3B0aW9ucyBnZXRzIGZvY3VzLlxuICAgIC8vIEFzIGVsZW1lbnRzIGluc2lkZSB0aGUgcGFuZWwgc2hvdWxkIG5ldmVyIGdldCBmb2N1cywgd2UgaGF2ZSB0byBhdm9pZCB0aGF0IGJ5IHNldHRpbmcgdGFiaW5kZXg9LTEuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fZ2FwLWZpeFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fZ2FwLWZpeFwiPiR7b3ZlcmxheUdhcEZpeENvcm5lcnMoKX08L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIEBhbmltYXRpb25lbmQ9JHt0aGlzLl9vbkFuaW1hdGlvbkVuZH1cbiAgICAgICAgICBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3BhbmVsXCJcbiAgICAgICAgICAke3JlZigob3ZlcmxheVJlZj86IEVsZW1lbnQpID0+ICh0aGlzLl9vdmVybGF5ID0gb3ZlcmxheVJlZiBhcyBIVE1MRWxlbWVudCkpfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19vcHRpb25zXCJcbiAgICAgICAgICAgICAgcm9sZT0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMucGFuZWxSb2xlIDogbm90aGluZ31cbiAgICAgICAgICAgICAgaWQ9JHshYXJpYVJvbGVPbkhvc3QgPyB0aGlzLm92ZXJsYXlJZCA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAke3JlZigoY29udGFpbmVyUmVmKSA9PiAodGhpcy5fb3B0aW9uQ29udGFpbmVyID0gY29udGFpbmVyUmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBpbnB1dEF1dG9jb21wbGV0ZTogQ3VzdG9tRXZlbnQ8eyBvcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PGFueT4gfT47XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUNBLE1BQU0saUJBQWlCO0lBRUQsOEJBQTBCLE1BQUE7O0FBQXFCLE1BQUEsY0FBQSxpQkFDbkUsa0JB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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SbbButtonCommonElementMixin } from "./common/button-common.js";
|
|
2
|
-
import { a, b, p, s, t, m, c } from "../mini-button-label-common-
|
|
2
|
+
import { a, b, p, s, t, m, c } from "../mini-button-label-common-BaMSfSTe.js";
|
|
3
3
|
export {
|
|
4
4
|
SbbButtonCommonElementMixin,
|
|
5
5
|
a as buttonAccentStyle,
|
|
@@ -14,14 +14,6 @@ import { SbbNegativeMixin, SbbNamedSlotListMixin } from "../../core/mixins.js";
|
|
|
14
14
|
import { boxSizingStyles } from "../../core/styles.js";
|
|
15
15
|
const style = css`:host {
|
|
16
16
|
display: block;
|
|
17
|
-
--sbb-mini-button-group-background: var(--sbb-background-color-1);
|
|
18
|
-
--sbb-mini-button-group-border-color: var(--sbb-border-color-4-inverted);
|
|
19
|
-
--sbb-mini-button-group-border-width: var(--sbb-border-width-2x);
|
|
20
|
-
--sbb-mini-button-group-border: var(--sbb-mini-button-group-border-width) solid
|
|
21
|
-
var(--sbb-mini-button-group-border-color);
|
|
22
|
-
--sbb-mini-button-group-gap: var(--sbb-spacing-fixed-2x);
|
|
23
|
-
--sbb-mini-button-group-min-height: var(--sbb-size-element-s);
|
|
24
|
-
--sbb-mini-button-group-padding-inline: var(--sbb-spacing-fixed-3x);
|
|
25
17
|
}
|
|
26
18
|
|
|
27
19
|
:host([negative]) {
|
|
@@ -35,6 +27,11 @@ const style = css`:host {
|
|
|
35
27
|
--sbb-mini-button-group-padding-inline: var(--sbb-spacing-fixed-2x);
|
|
36
28
|
}
|
|
37
29
|
|
|
30
|
+
:host([size=m]) {
|
|
31
|
+
--sbb-mini-button-group-min-height: var(--sbb-size-element-s);
|
|
32
|
+
--sbb-mini-button-group-padding-inline: var(--sbb-spacing-fixed-3x);
|
|
33
|
+
}
|
|
34
|
+
|
|
38
35
|
:host([size=l]) {
|
|
39
36
|
--sbb-mini-button-group-min-height: var(--sbb-size-element-m);
|
|
40
37
|
}
|
|
@@ -50,9 +47,8 @@ const style = css`:host {
|
|
|
50
47
|
|
|
51
48
|
::slotted(sbb-divider) {
|
|
52
49
|
--sbb-divider-border-width: var(--sbb-border-width-1x);
|
|
53
|
-
padding
|
|
54
|
-
|
|
55
|
-
height: var(--sbb-size-icon-ui-small);
|
|
50
|
+
padding: var(--sbb-mini-button-group-divider-padding);
|
|
51
|
+
height: var(--sbb-mini-button-group-divider-height);
|
|
56
52
|
}
|
|
57
53
|
|
|
58
54
|
.sbb-mini-button-group {
|
|
@@ -67,8 +63,8 @@ const style = css`:host {
|
|
|
67
63
|
width: fit-content;
|
|
68
64
|
min-height: var(--sbb-mini-button-group-min-height);
|
|
69
65
|
background-color: var(--sbb-mini-button-group-background);
|
|
70
|
-
border: var(--sbb-mini-button-group-border);
|
|
71
|
-
border-radius: var(--sbb-border-radius
|
|
66
|
+
border: var(--sbb-mini-button-group-border-width) solid var(--sbb-mini-button-group-border-color);
|
|
67
|
+
border-radius: var(--sbb-mini-button-group-border-radius);
|
|
72
68
|
padding-inline: calc(var(--sbb-mini-button-group-padding-inline) - var(--sbb-mini-button-group-border-width));
|
|
73
69
|
}`;
|
|
74
70
|
let SbbMiniButtonGroupElement = (() => {
|
|
@@ -148,4 +144,4 @@ let SbbMiniButtonGroupElement = (() => {
|
|
|
148
144
|
export {
|
|
149
145
|
SbbMiniButtonGroupElement
|
|
150
146
|
};
|
|
151
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaS1idXR0b24tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvYnV0dG9uL21pbmktYnV0dG9uLWdyb3VwL21pbmktYnV0dG9uLWdyb3VwLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLnRzJztcbmltcG9ydCB7IFNiYk5hbWVkU2xvdExpc3RNaXhpbiwgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uLy4uL2NvcmUvc3R5bGVzLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRGl2aWRlckVsZW1lbnQgfSBmcm9tICcuLi8uLi9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiTWluaUJ1dHRvbkVsZW1lbnQgfSBmcm9tICcuLi9taW5pLWJ1dHRvbi9taW5pLWJ1dHRvbi5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9taW5pLWJ1dHRvbi1ncm91cC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgdHlwZSBTYmJNaW5pQnV0dG9uR3JvdXBTaXplID0gJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJztcblxuLyoqXG4gKiBEaXNwbGF5IGEgbGlzdCBvZiBgc2JiLW1pbmktYnV0dG9uYCBlbGVtZW50cyBpbiBhIGhvcml6b250YWwgY29udGFpbmVyLFxuICogcG9zc2libHkgc2VwYXJhdGVkIGJ5IGEgYHNiYi1kaXZpZGVyYCBjb21wb25lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1taW5pLWJ1dHRvbmAgYW5kIGBzYmItZGl2aWRlcmAgZWxlbWVudHMuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1taW5pLWJ1dHRvbi1ncm91cCcpXG5jbGFzcyBTYmJNaW5pQnV0dG9uR3JvdXBFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihcbiAgU2JiTmFtZWRTbG90TGlzdE1peGluPFNiYk1pbmlCdXR0b25FbGVtZW50LCB0eXBlb2YgTGl0RWxlbWVudD4oTGl0RWxlbWVudCksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgbGlzdENoaWxkTG9jYWxOYW1lcyA9IFtcbiAgICAnc2JiLW1pbmktYnV0dG9uJyxcbiAgICAnc2JiLW1pbmktYnV0dG9uLWxpbmsnLFxuICAgICdzYmItZGl2aWRlcicsXG4gIF07XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgbGlzdCB0aGF0IGNvbnRhaW5zIHRoZSBidXR0b25zLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIHMsIG0sIGwgb3IgeGwuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6IFNiYk1pbmlCdXR0b25Hcm91cFNpemUgPSBpc0xlYW4oKSA/ICdzJyA6ICdtJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3Byb3h5TmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wcm94eU5lZ2F0aXZlKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYkRpdmlkZXJFbGVtZW50IHwgU2JiTWluaUJ1dHRvbkVsZW1lbnQ+KFxuICAgICAgJ3NiYi1kaXZpZGVyLCBzYmItbWluaS1idXR0b24sIHNiYi1taW5pLWJ1dHRvbi1saW5rJyxcbiAgICApLmZvckVhY2goKGUpID0+
|
|
147
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaS1idXR0b24tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvYnV0dG9uL21pbmktYnV0dG9uLWdyb3VwL21pbmktYnV0dG9uLWdyb3VwLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLnRzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLnRzJztcbmltcG9ydCB7IFNiYk5hbWVkU2xvdExpc3RNaXhpbiwgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uLy4uL2NvcmUvc3R5bGVzLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRGl2aWRlckVsZW1lbnQgfSBmcm9tICcuLi8uLi9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiTWluaUJ1dHRvbkVsZW1lbnQgfSBmcm9tICcuLi9taW5pLWJ1dHRvbi9taW5pLWJ1dHRvbi5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9taW5pLWJ1dHRvbi1ncm91cC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5leHBvcnQgdHlwZSBTYmJNaW5pQnV0dG9uR3JvdXBTaXplID0gJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJztcblxuLyoqXG4gKiBEaXNwbGF5IGEgbGlzdCBvZiBgc2JiLW1pbmktYnV0dG9uYCBlbGVtZW50cyBpbiBhIGhvcml6b250YWwgY29udGFpbmVyLFxuICogcG9zc2libHkgc2VwYXJhdGVkIGJ5IGEgYHNiYi1kaXZpZGVyYCBjb21wb25lbnQuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1taW5pLWJ1dHRvbmAgYW5kIGBzYmItZGl2aWRlcmAgZWxlbWVudHMuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1taW5pLWJ1dHRvbi1ncm91cCcpXG5jbGFzcyBTYmJNaW5pQnV0dG9uR3JvdXBFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihcbiAgU2JiTmFtZWRTbG90TGlzdE1peGluPFNiYk1pbmlCdXR0b25FbGVtZW50LCB0eXBlb2YgTGl0RWxlbWVudD4oTGl0RWxlbWVudCksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgc3R5bGVdO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgbGlzdENoaWxkTG9jYWxOYW1lcyA9IFtcbiAgICAnc2JiLW1pbmktYnV0dG9uJyxcbiAgICAnc2JiLW1pbmktYnV0dG9uLWxpbmsnLFxuICAgICdzYmItZGl2aWRlcicsXG4gIF07XG5cbiAgLyoqIFRoaXMgd2lsbCBiZSBmb3J3YXJkZWQgYXMgYXJpYS1sYWJlbCB0byB0aGUgbGlzdCB0aGF0IGNvbnRhaW5zIHRoZSBidXR0b25zLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYWNjZXNzaWJpbGl0eS1sYWJlbCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGFjY2Vzc2liaWxpdHlMYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFNpemUgdmFyaWFudCwgZWl0aGVyIHMsIG0sIGwgb3IgeGwuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6IFNiYk1pbmlCdXR0b25Hcm91cFNpemUgPSBpc0xlYW4oKSA/ICdzJyA6ICdtJztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3Byb3h5TmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wcm94eU5lZ2F0aXZlKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYkRpdmlkZXJFbGVtZW50IHwgU2JiTWluaUJ1dHRvbkVsZW1lbnQ+KFxuICAgICAgJ3NiYi1kaXZpZGVyLCBzYmItbWluaS1idXR0b24sIHNiYi1taW5pLWJ1dHRvbi1saW5rJyxcbiAgICApLmZvckVhY2goKGUpID0+IChlLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAke3RoaXMucmVuZGVyTGlzdChcbiAgICAgICAgeyBhcmlhTGFiZWw6IHRoaXMuYWNjZXNzaWJpbGl0eUxhYmVsIH0sXG4gICAgICAgIHsgbG9jYWxOYW1lVmlzdWFsT25seTogWydzYmItZGl2aWRlciddIH0sXG4gICAgICApfVxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1taW5pLWJ1dHRvbi1ncm91cCc6IFNiYk1pbmlCdXR0b25Hcm91cEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF1Qk0sNkJBQXlCLE1BQUE7OzBCQUQ5QixjQUFjLHVCQUF1QixDQUFDOzs7O0FBQ0MsTUFBQSxjQUFBLGlCQUN0QyxzQkFBK0QsVUFBVSxDQUFDOzs7Ozs7O0FBRDVDLEVBQUEsbUJBQVEsWUFFdkM7QUFBQTs7QUFXQztBQU02QjtBQWZELFdBQUEsc0JBQXNCO0FBQUEsUUFDaEQ7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQUE7QUFNYyx5QkFBQSxzQ0FBQSxrQkFBQSxNQUFBLGtDQUE2QixFQUFFO0FBTUYseUJBQUEseUJBQUEsa0JBQUEsTUFBQSxxQ0FBQSxHQUFBLGtCQUFBLE1BQUEsb0JBQStCLE9BQUEsSUFBVyxNQUFNLEdBQUc7Ozs7SUFOaEcsSUFBZ0IscUJBQWtCO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFsQyxJQUFnQixtQkFBa0IsT0FBQTtBQUFBLHlCQUFBLHNDQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFNTCxJQUFnQixPQUFJO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUFwQixJQUFnQixLQUFJLE9BQUE7QUFBQSx5QkFBQSx3QkFBQTtBQUFBLElBQUE7QUFBQSxJQUU5QixXQUFXLG1CQUF1QztBQUNuRSxZQUFNLFdBQVcsaUJBQWlCO0FBRWxDLFVBQUksa0JBQWtCLElBQUksVUFBVSxHQUFHO0FBQ3JDLGFBQUssZUFBQTtBQUFBLE1BQ1A7QUFBQSxJQUNGO0FBQUEsSUFFUSxpQkFBYztBQUNwQixXQUFLLG1CQUNILG9EQUFvRCxFQUNwRCxRQUFRLENBQUMsTUFBTyxFQUFFLFdBQVcsS0FBSyxRQUFTO0FBQUEsSUFDL0M7QUFBQSxJQUVtQixTQUFNO0FBQ3ZCLGFBQU87QUFBQSxRQUNILEtBQUssV0FDTCxFQUFFLFdBQVcsS0FBSyxtQkFBQSxHQUNsQixFQUFFLHFCQUFxQixDQUFDLGFBQWEsR0FBRyxDQUN6QztBQUFBO0FBQUEsSUFFTDtBQUFBLEtBN0JBLHNEQU02Qjs7c0NBUjVCLGFBQ0EsU0FBUyxFQUFFLFdBQVcsc0JBQUEsQ0FBdUIsQ0FBQztBQU85Qyx1QkFBQSxDQUFBLFNBQVMsRUFBRSxTQUFTLEtBQUEsQ0FBTSxDQUFDO0FBTjVCLGlCQUFBLElBQUEsTUFBQSxnQ0FBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLHNCQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLHdCQUFBLEtBQUEsS0FBQSxDQUFBLFFBQUEsSUFBZ0Isb0JBQWtCLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFsQixxQkFBa0I7QUFBQSxJQUFBLEtBQUEsVUFBQSxVQUFBLEdBQUEsa0NBQUEscUNBQUE7QUFNTCxpQkFBQSxJQUFBLE1BQUEsa0JBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxRQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLFVBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFnQixNQUFJLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFKLE9BQUk7QUFBQSxJQUFBLEtBQUEsVUFBQSxVQUFBLEdBQUEsb0JBQUEsdUJBQUE7QUFuQm5ELGlCQUFBLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFHeUIsR0FBQSxTQUF5QixDQUFDLGlCQUFpQixLQUFLLEdBSG5FLGtCQUFBLFlBQUEsdUJBQUEsR0FBMEI7OzsifQ==
|
package/development/button.js
CHANGED
|
@@ -14,7 +14,7 @@ import { SbbSecondaryButtonStaticElement } from "./button/secondary-button-stati
|
|
|
14
14
|
import { SbbAccentButtonStaticElement } from "./button/accent-button-static/accent-button-static.component.js";
|
|
15
15
|
import { SbbTransparentButtonStaticElement } from "./button/transparent-button-static/transparent-button-static.component.js";
|
|
16
16
|
import { SbbButtonCommonElementMixin } from "./button/common/button-common.js";
|
|
17
|
-
import { a, b, p, s, t, m, c } from "./mini-button-label-common-
|
|
17
|
+
import { a, b, p, s, t, m, c } from "./mini-button-label-common-BaMSfSTe.js";
|
|
18
18
|
export {
|
|
19
19
|
SbbAccentButtonElement,
|
|
20
20
|
SbbAccentButtonLinkElement,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-trap-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/a11y/focus-trap-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAItE,qBAAa,sBAAuB,YAAW,kBAAkB;IAkB5C,OAAO,CAAC,KAAK;IAjBhC;;;OAGG;IACH,IAAW,OAAO,CAAC,OAAO,EAAE,OAAO,EAMlC;IACD,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,OAAO,CAAC,gBAAgB,CAAgC;gBAE7B,KAAK,EAAE,sBAAsB,GAAG,WAAW;IAI/D,gBAAgB,IAAI,IAAI;IAI/B;;;OAGG;IACI,mBAAmB,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO;IAuB3D;;;OAGG;IACI,yBAAyB,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO;IAUjE;;;OAGG;IACI,wBAAwB,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO;IAUhE,OAAO,CAAC,KAAK;IA2Bb,qEAAqE;IACrE,OAAO,CAAC,wBAAwB;IA6BhC,oEAAoE;IACpE,OAAO,CAAC,uBAAuB;
|
|
1
|
+
{"version":3,"file":"focus-trap-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/a11y/focus-trap-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAItE,qBAAa,sBAAuB,YAAW,kBAAkB;IAkB5C,OAAO,CAAC,KAAK;IAjBhC;;;OAGG;IACH,IAAW,OAAO,CAAC,OAAO,EAAE,OAAO,EAMlC;IACD,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,OAAO,CAAC,gBAAgB,CAAgC;gBAE7B,KAAK,EAAE,sBAAsB,GAAG,WAAW;IAI/D,gBAAgB,IAAI,IAAI;IAI/B;;;OAGG;IACI,mBAAmB,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO;IAuB3D;;;OAGG;IACI,yBAAyB,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO;IAUjE;;;OAGG;IACI,wBAAwB,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO;IAUhE,OAAO,CAAC,KAAK;IA2Bb,qEAAqE;IACrE,OAAO,CAAC,wBAAwB;IA6BhC,oEAAoE;IACpE,OAAO,CAAC,uBAAuB;IAgC/B,OAAO,CAAC,OAAO;CAIhB"}
|
|
@@ -98,8 +98,9 @@ class SbbFocusTrapController {
|
|
|
98
98
|
}
|
|
99
99
|
/** Get the last tabbable element from a DOM subtree (inclusive). */
|
|
100
100
|
_getLastTabbableElement(root) {
|
|
101
|
+
let result = null;
|
|
101
102
|
if (root !== this._host && interactivityChecker.isFocusable(root) && interactivityChecker.isTabbable(root)) {
|
|
102
|
-
|
|
103
|
+
result = root;
|
|
103
104
|
}
|
|
104
105
|
const children = root.shadowRoot ? root.shadowRoot.children : root.localName === "slot" ? root.assignedElements() : root.children;
|
|
105
106
|
for (let i = children.length - 1; i >= 0; i--) {
|
|
@@ -108,7 +109,7 @@ class SbbFocusTrapController {
|
|
|
108
109
|
return tabbableChild;
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
|
-
return
|
|
112
|
+
return result;
|
|
112
113
|
}
|
|
113
114
|
_untrap() {
|
|
114
115
|
this._abortController?.abort();
|
|
@@ -118,4 +119,4 @@ class SbbFocusTrapController {
|
|
|
118
119
|
export {
|
|
119
120
|
SbbFocusTrapController
|
|
120
121
|
};
|
|
121
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC1jb250cm9sbGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9hMTF5L2ZvY3VzLXRyYXAtY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlYWN0aXZlQ29udHJvbGxlciwgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IGludGVyYWN0aXZpdHlDaGVja2VyIH0gZnJvbSAnLi9pbnRlcmFjdGl2aXR5LWNoZWNrZXIudHMnO1xuXG5leHBvcnQgY2xhc3MgU2JiRm9jdXNUcmFwQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmb2N1cyBpcyB0cmFwIGlzIGVuYWJsZWQuXG4gICAqIEBwYXJhbSBlbmFibGVkXG4gICAqL1xuICBwdWJsaWMgc2V0IGVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChlbmFibGVkKSB7XG4gICAgICB0aGlzLl90cmFwKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3VudHJhcCgpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fYWJvcnRDb250cm9sbGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyPy4odGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl91bnRyYXAoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VzIHRoZSBlbGVtZW50IHRoYXQgc2hvdWxkIGJlIGZvY3VzZWQgd2hlbiB0aGUgZm9jdXMgdHJhcCBpcyBpbml0aWFsaXplZC5cbiAgICogQHJldHVybnMgV2hldGhlciBmb2N1cyB3YXMgbW92ZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgcHVibGljIGZvY3VzSW5pdGlhbEVsZW1lbnQob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZGlyZWN0VG9FbGVtZW50ID0gdGhpcy5faG9zdC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignW3NiYi1mb2N1cy1pbml0aWFsXScpO1xuXG4gICAgaWYgKHJlZGlyZWN0VG9FbGVtZW50KSB7XG4gICAgICAvLyBXYXJuIHRoZSBjb25zdW1lciBpZiB0aGUgZWxlbWVudCB0aGV5J3ZlIHBvaW50ZWQgdG9cbiAgICAgIC8vIGlzbid0IGZvY3VzYWJsZSwgd2hlbiBub3QgaW4gcHJvZHVjdGlvbiBtb2RlLlxuICAgICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgIWludGVyYWN0aXZpdHlDaGVja2VyLmlzRm9jdXNhYmxlKHJlZGlyZWN0VG9FbGVtZW50KSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYEVsZW1lbnQgbWF0Y2hpbmcgJ1tzYmItZm9jdXMtaW5pdGlhbF0nIGlzIG5vdCBmb2N1c2FibGUuYCwgcmVkaXJlY3RUb0VsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWludGVyYWN0aXZpdHlDaGVja2VyLmlzRm9jdXNhYmxlKHJlZGlyZWN0VG9FbGVtZW50KSkge1xuICAgICAgICBjb25zdCBmb2N1c2FibGVDaGlsZCA9IHRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHJlZGlyZWN0VG9FbGVtZW50KTtcbiAgICAgICAgZm9jdXNhYmxlQ2hpbGQ/LmZvY3VzKG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gISFmb2N1c2FibGVDaGlsZDtcbiAgICAgIH1cblxuICAgICAgcmVkaXJlY3RUb0VsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGZpcnN0IHRhYmJhYmxlIGVsZW1lbnQgd2l0aGluIHRoZSBmb2N1cyB0cmFwIHJlZ2lvbi5cbiAgICogQHJldHVybnMgV2hldGhlciBmb2N1cyB3YXMgbW92ZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgcHVibGljIGZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZGlyZWN0VG9FbGVtZW50ID0gdGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQodGhpcy5faG9zdCk7XG5cbiAgICBpZiAocmVkaXJlY3RUb0VsZW1lbnQpIHtcbiAgICAgIHJlZGlyZWN0VG9FbGVtZW50LmZvY3VzKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiAhIXJlZGlyZWN0VG9FbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGxhc3QgdGFiYmFibGUgZWxlbWVudCB3aXRoaW4gdGhlIGZvY3VzIHRyYXAgcmVnaW9uLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIGZvY3VzIHdhcyBtb3ZlZCBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBwdWJsaWMgZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWRpcmVjdFRvRWxlbWVudCA9IHRoaXMuX2dldExhc3RUYWJiYWJsZUVsZW1lbnQodGhpcy5faG9zdCk7XG5cbiAgICBpZiAocmVkaXJlY3RUb0VsZW1lbnQpIHtcbiAgICAgIHJlZGlyZWN0VG9FbGVtZW50LmZvY3VzKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiAhIXJlZGlyZWN0VG9FbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhcCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5faG9zdC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgIT09ICdUYWInKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGNvbnN0IGxhc3RGb2N1c2FibGVFbGVtZW50ID0gdGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9ob3N0KTtcbiAgICAgICAgICBpZiAobGFzdEZvY3VzYWJsZUVsZW1lbnQgJiYgZXZlbnQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMobGFzdEZvY3VzYWJsZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9ob3N0KT8uZm9jdXMoKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlRWxlbWVudCA9IHRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHRoaXMuX2hvc3QpO1xuICAgICAgICAgIGlmIChmaXJzdEZvY3VzYWJsZUVsZW1lbnQgJiYgZXZlbnQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMoZmlyc3RGb2N1c2FibGVFbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9ob3N0KT8uZm9jdXMoKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX2Fib3J0Q29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgZmlyc3QgdGFiYmFibGUgZWxlbWVudCBmcm9tIGEgRE9NIHN1YnRyZWUgKGluY2x1c2l2ZSkuICovXG4gIHByaXZhdGUgX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHJvb3Q6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoXG4gICAgICByb290ICE9PSB0aGlzLl9ob3N0ICYmXG4gICAgICBpbnRlcmFjdGl2aXR5Q2hlY2tlci5pc0ZvY3VzYWJsZShyb290KSAmJlxuICAgICAgaW50ZXJhY3Rpdml0eUNoZWNrZXIuaXNUYWJiYWJsZShyb290KVxuICAgICkge1xuICAgICAgcmV0dXJuIHJvb3Q7XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGRyZW4gPSByb290LnNoYWRvd1Jvb3RcbiAgICAgID8gcm9vdC5zaGFkb3dSb290LmNoaWxkcmVuXG4gICAgICA6IHJvb3QubG9jYWxOYW1lID09PSAnc2xvdCdcbiAgICAgICAgPyAocm9vdCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKVxuICAgICAgICA6IHJvb3QuY2hpbGRyZW47XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB0YWJiYWJsZUNoaWxkID1cbiAgICAgICAgY2hpbGRyZW5baV0ubm9kZVR5cGUgPT09IGRvY3VtZW50LkVMRU1FTlRfTk9ERVxuICAgICAgICAgID8gdGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQoY2hpbGRyZW5baV0gYXMgSFRNTEVsZW1lbnQpXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICBpZiAodGFiYmFibGVDaGlsZCkge1xuICAgICAgICByZXR1cm4gdGFiYmFibGVDaGlsZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxhc3QgdGFiYmFibGUgZWxlbWVudCBmcm9tIGEgRE9NIHN1YnRyZWUgKGluY2x1c2l2ZSkuICovXG4gIHByaXZhdGUgX2dldExhc3RUYWJiYWJsZUVsZW1lbnQocm9vdDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGlmIChcbiAgICAgIHJvb3QgIT09IHRoaXMuX2hvc3QgJiZcbiAgICAgIGludGVyYWN0aXZpdHlDaGVja2VyLmlzRm9jdXNhYmxlKHJvb3QpICYmXG4gICAgICBpbnRlcmFjdGl2aXR5Q2hlY2tlci5pc1RhYmJhYmxlKHJvb3QpXG4gICAgKSB7XG4gICAgICByZXR1cm4gcm9vdDtcbiAgICB9XG5cbiAgICBjb25zdCBjaGlsZHJlbiA9IHJvb3Quc2hhZG93Um9vdFxuICAgICAgPyByb290LnNoYWRvd1Jvb3QuY2hpbGRyZW5cbiAgICAgIDogcm9vdC5sb2NhbE5hbWUgPT09ICdzbG90J1xuICAgICAgICA/IChyb290IGFzIEhUTUxTbG90RWxlbWVudCkuYXNzaWduZWRFbGVtZW50cygpXG4gICAgICAgIDogcm9vdC5jaGlsZHJlbjtcblxuICAgIC8vIEl0ZXJhdGUgaW4gcmV2ZXJzZSBET00gb3JkZXIuXG4gICAgZm9yIChsZXQgaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCB0YWJiYWJsZUNoaWxkID1cbiAgICAgICAgY2hpbGRyZW5baV0ubm9kZVR5cGUgPT09IGRvY3VtZW50LkVMRU1FTlRfTk9ERVxuICAgICAgICAgID8gdGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudChjaGlsZHJlbltpXSBhcyBIVE1MRWxlbWVudClcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIGlmICh0YWJiYWJsZUNoaWxkKSB7XG4gICAgICAgIHJldHVybiB0YWJiYWJsZUNoaWxkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW50cmFwKCk6IHZvaWQge1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIgPSBudWxsO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtNQUlhLHVCQUFzQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLakMsSUFBVyxRQUFRLFNBQWdCO0FBQ2pDLFFBQUksU0FBUztBQUNYLFdBQUssTUFBQTtBQUFBLElBQ1AsT0FBTztBQUNMLFdBQUssUUFBQTtBQUFBLElBQ1A7QUFBQSxFQUNGO0FBQUEsRUFDQSxJQUFXLFVBQU87QUFDaEIsV0FBTyxDQUFDLENBQUMsS0FBSztBQUFBLEVBQ2hCO0FBQUEsRUFJQSxZQUEyQixPQUEyQztBQUEzQyxTQUFBLFFBQUE7QUFGbkIsU0FBQSxtQkFBMkM7QUFHakQsU0FBSyxNQUFNLGdCQUFnQixJQUFJO0FBQUEsRUFDakM7QUFBQSxFQUVPLG1CQUFnQjtBQUNyQixTQUFLLFFBQUE7QUFBQSxFQUNQO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLG9CQUFvQixTQUFzQjtBQUMvQyxVQUFNLG9CQUFvQixLQUFLLE1BQU0sY0FBMkIscUJBQXFCO0FBRXJGLFFBQUksbUJBQW1CO0FBT3JCLFVBQUksQ0FBQyxxQkFBcUIsWUFBWSxpQkFBaUIsR0FBRztBQUN4RCxjQUFNLGlCQUFpQixLQUFLLHlCQUF5QixpQkFBaUI7QUFDdEUsd0JBQWdCLE1BQU0sT0FBTztBQUM3QixlQUFPLENBQUMsQ0FBQztBQUFBLE1BQ1g7QUFFQSx3QkFBa0IsTUFBTSxPQUFPO0FBQy9CLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxLQUFLLDBCQUEwQixPQUFPO0FBQUEsRUFDL0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sMEJBQTBCLFNBQXNCO0FBQ3JELFVBQU0sb0JBQW9CLEtBQUsseUJBQXlCLEtBQUssS0FBSztBQUVsRSxRQUFJLG1CQUFtQjtBQUNyQix3QkFBa0IsTUFBTSxPQUFP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
|
|
122
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC1jb250cm9sbGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9hMTF5L2ZvY3VzLXRyYXAtY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlYWN0aXZlQ29udHJvbGxlciwgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IGludGVyYWN0aXZpdHlDaGVja2VyIH0gZnJvbSAnLi9pbnRlcmFjdGl2aXR5LWNoZWNrZXIudHMnO1xuXG5leHBvcnQgY2xhc3MgU2JiRm9jdXNUcmFwQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmb2N1cyBpcyB0cmFwIGlzIGVuYWJsZWQuXG4gICAqIEBwYXJhbSBlbmFibGVkXG4gICAqL1xuICBwdWJsaWMgc2V0IGVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChlbmFibGVkKSB7XG4gICAgICB0aGlzLl90cmFwKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3VudHJhcCgpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fYWJvcnRDb250cm9sbGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyPy4odGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl91bnRyYXAoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VzIHRoZSBlbGVtZW50IHRoYXQgc2hvdWxkIGJlIGZvY3VzZWQgd2hlbiB0aGUgZm9jdXMgdHJhcCBpcyBpbml0aWFsaXplZC5cbiAgICogQHJldHVybnMgV2hldGhlciBmb2N1cyB3YXMgbW92ZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgcHVibGljIGZvY3VzSW5pdGlhbEVsZW1lbnQob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZGlyZWN0VG9FbGVtZW50ID0gdGhpcy5faG9zdC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignW3NiYi1mb2N1cy1pbml0aWFsXScpO1xuXG4gICAgaWYgKHJlZGlyZWN0VG9FbGVtZW50KSB7XG4gICAgICAvLyBXYXJuIHRoZSBjb25zdW1lciBpZiB0aGUgZWxlbWVudCB0aGV5J3ZlIHBvaW50ZWQgdG9cbiAgICAgIC8vIGlzbid0IGZvY3VzYWJsZSwgd2hlbiBub3QgaW4gcHJvZHVjdGlvbiBtb2RlLlxuICAgICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgIWludGVyYWN0aXZpdHlDaGVja2VyLmlzRm9jdXNhYmxlKHJlZGlyZWN0VG9FbGVtZW50KSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYEVsZW1lbnQgbWF0Y2hpbmcgJ1tzYmItZm9jdXMtaW5pdGlhbF0nIGlzIG5vdCBmb2N1c2FibGUuYCwgcmVkaXJlY3RUb0VsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWludGVyYWN0aXZpdHlDaGVja2VyLmlzRm9jdXNhYmxlKHJlZGlyZWN0VG9FbGVtZW50KSkge1xuICAgICAgICBjb25zdCBmb2N1c2FibGVDaGlsZCA9IHRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHJlZGlyZWN0VG9FbGVtZW50KTtcbiAgICAgICAgZm9jdXNhYmxlQ2hpbGQ/LmZvY3VzKG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gISFmb2N1c2FibGVDaGlsZDtcbiAgICAgIH1cblxuICAgICAgcmVkaXJlY3RUb0VsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGZpcnN0IHRhYmJhYmxlIGVsZW1lbnQgd2l0aGluIHRoZSBmb2N1cyB0cmFwIHJlZ2lvbi5cbiAgICogQHJldHVybnMgV2hldGhlciBmb2N1cyB3YXMgbW92ZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgcHVibGljIGZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZGlyZWN0VG9FbGVtZW50ID0gdGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQodGhpcy5faG9zdCk7XG5cbiAgICBpZiAocmVkaXJlY3RUb0VsZW1lbnQpIHtcbiAgICAgIHJlZGlyZWN0VG9FbGVtZW50LmZvY3VzKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiAhIXJlZGlyZWN0VG9FbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGxhc3QgdGFiYmFibGUgZWxlbWVudCB3aXRoaW4gdGhlIGZvY3VzIHRyYXAgcmVnaW9uLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIGZvY3VzIHdhcyBtb3ZlZCBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBwdWJsaWMgZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWRpcmVjdFRvRWxlbWVudCA9IHRoaXMuX2dldExhc3RUYWJiYWJsZUVsZW1lbnQodGhpcy5faG9zdCk7XG5cbiAgICBpZiAocmVkaXJlY3RUb0VsZW1lbnQpIHtcbiAgICAgIHJlZGlyZWN0VG9FbGVtZW50LmZvY3VzKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiAhIXJlZGlyZWN0VG9FbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhcCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5faG9zdC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgIT09ICdUYWInKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGNvbnN0IGxhc3RGb2N1c2FibGVFbGVtZW50ID0gdGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9ob3N0KTtcbiAgICAgICAgICBpZiAobGFzdEZvY3VzYWJsZUVsZW1lbnQgJiYgZXZlbnQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMobGFzdEZvY3VzYWJsZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9ob3N0KT8uZm9jdXMoKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlRWxlbWVudCA9IHRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHRoaXMuX2hvc3QpO1xuICAgICAgICAgIGlmIChmaXJzdEZvY3VzYWJsZUVsZW1lbnQgJiYgZXZlbnQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMoZmlyc3RGb2N1c2FibGVFbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9ob3N0KT8uZm9jdXMoKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX2Fib3J0Q29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgZmlyc3QgdGFiYmFibGUgZWxlbWVudCBmcm9tIGEgRE9NIHN1YnRyZWUgKGluY2x1c2l2ZSkuICovXG4gIHByaXZhdGUgX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHJvb3Q6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoXG4gICAgICByb290ICE9PSB0aGlzLl9ob3N0ICYmXG4gICAgICBpbnRlcmFjdGl2aXR5Q2hlY2tlci5pc0ZvY3VzYWJsZShyb290KSAmJlxuICAgICAgaW50ZXJhY3Rpdml0eUNoZWNrZXIuaXNUYWJiYWJsZShyb290KVxuICAgICkge1xuICAgICAgcmV0dXJuIHJvb3Q7XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGRyZW4gPSByb290LnNoYWRvd1Jvb3RcbiAgICAgID8gcm9vdC5zaGFkb3dSb290LmNoaWxkcmVuXG4gICAgICA6IHJvb3QubG9jYWxOYW1lID09PSAnc2xvdCdcbiAgICAgICAgPyAocm9vdCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKVxuICAgICAgICA6IHJvb3QuY2hpbGRyZW47XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB0YWJiYWJsZUNoaWxkID1cbiAgICAgICAgY2hpbGRyZW5baV0ubm9kZVR5cGUgPT09IGRvY3VtZW50LkVMRU1FTlRfTk9ERVxuICAgICAgICAgID8gdGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQoY2hpbGRyZW5baV0gYXMgSFRNTEVsZW1lbnQpXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgICBpZiAodGFiYmFibGVDaGlsZCkge1xuICAgICAgICByZXR1cm4gdGFiYmFibGVDaGlsZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxhc3QgdGFiYmFibGUgZWxlbWVudCBmcm9tIGEgRE9NIHN1YnRyZWUgKGluY2x1c2l2ZSkuICovXG4gIHByaXZhdGUgX2dldExhc3RUYWJiYWJsZUVsZW1lbnQocm9vdDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGxldCByZXN1bHQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAoXG4gICAgICByb290ICE9PSB0aGlzLl9ob3N0ICYmXG4gICAgICBpbnRlcmFjdGl2aXR5Q2hlY2tlci5pc0ZvY3VzYWJsZShyb290KSAmJlxuICAgICAgaW50ZXJhY3Rpdml0eUNoZWNrZXIuaXNUYWJiYWJsZShyb290KVxuICAgICkge1xuICAgICAgcmVzdWx0ID0gcm9vdDtcbiAgICB9XG5cbiAgICBjb25zdCBjaGlsZHJlbiA9IHJvb3Quc2hhZG93Um9vdFxuICAgICAgPyByb290LnNoYWRvd1Jvb3QuY2hpbGRyZW5cbiAgICAgIDogcm9vdC5sb2NhbE5hbWUgPT09ICdzbG90J1xuICAgICAgICA/IChyb290IGFzIEhUTUxTbG90RWxlbWVudCkuYXNzaWduZWRFbGVtZW50cygpXG4gICAgICAgIDogcm9vdC5jaGlsZHJlbjtcblxuICAgIC8vIEl0ZXJhdGUgaW4gcmV2ZXJzZSBET00gb3JkZXIuXG4gICAgZm9yIChsZXQgaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCB0YWJiYWJsZUNoaWxkID1cbiAgICAgICAgY2hpbGRyZW5baV0ubm9kZVR5cGUgPT09IGRvY3VtZW50LkVMRU1FTlRfTk9ERVxuICAgICAgICAgID8gdGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudChjaGlsZHJlbltpXSBhcyBIVE1MRWxlbWVudClcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIGlmICh0YWJiYWJsZUNoaWxkKSB7XG4gICAgICAgIHJldHVybiB0YWJiYWJsZUNoaWxkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIF91bnRyYXAoKTogdm9pZCB7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IG51bGw7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO01BSWEsdUJBQXNCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtqQyxJQUFXLFFBQVEsU0FBZ0I7QUFDakMsUUFBSSxTQUFTO0FBQ1gsV0FBSyxNQUFBO0FBQUEsSUFDUCxPQUFPO0FBQ0wsV0FBSyxRQUFBO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLElBQVcsVUFBTztBQUNoQixXQUFPLENBQUMsQ0FBQyxLQUFLO0FBQUEsRUFDaEI7QUFBQSxFQUlBLFlBQTJCLE9BQTJDO0FBQTNDLFNBQUEsUUFBQTtBQUZuQixTQUFBLG1CQUEyQztBQUdqRCxTQUFLLE1BQU0sZ0JBQWdCLElBQUk7QUFBQSxFQUNqQztBQUFBLEVBRU8sbUJBQWdCO0FBQ3JCLFNBQUssUUFBQTtBQUFBLEVBQ1A7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sb0JBQW9CLFNBQXNCO0FBQy9DLFVBQU0sb0JBQW9CLEtBQUssTUFBTSxjQUEyQixxQkFBcUI7QUFFckYsUUFBSSxtQkFBbUI7QUFPckIsVUFBSSxDQUFDLHFCQUFxQixZQUFZLGlCQUFpQixHQUFHO0FBQ3hELGNBQU0saUJBQWlCLEtBQUsseUJBQXlCLGlCQUFpQjtBQUN0RSx3QkFBZ0IsTUFBTSxPQUFPO0FBQzdCLGVBQU8sQ0FBQyxDQUFDO0FBQUEsTUFDWDtBQUVBLHdCQUFrQixNQUFNLE9BQU87QUFDL0IsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFPLEtBQUssMEJBQTBCLE9BQU87QUFBQSxFQUMvQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTywwQkFBMEIsU0FBc0I7QUFDckQsVUFBTSxvQkFBb0IsS0FBSyx5QkFBeUIs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay-position-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/overlay-position-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAErF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAqDjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,4BAA6B,YAAW,kBAAkB;IAyBnE,OAAO,CAAC,YAAY;IAxBtB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAEtB;IACV,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsE;IAC/F,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAsB;IAC7C,OAAO,CAAC,MAAM,CAAC,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,aAAa,CAAC,CAAS;IAE/B,oEAAoE;IACpE,IAAW,eAAe,IAAI,MAAM,CAOnC;gBAGC,IAAI,EAAE,sBAAsB,GAAG,WAAW,GAAG,4BAA4B,EACjE,YAAY,UAA8B;IAM7C,aAAa,IAAI,IAAI;IASrB,UAAU,IAAI,IAAI;IAOzB;;;;OAIG;IACI,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAmClC,UAAU,IAAI,IAAI;IAOzB,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,kBAAkB;IAa1B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"overlay-position-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/overlay-position-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAErF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAqDjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,4BAA6B,YAAW,kBAAkB;IAyBnE,OAAO,CAAC,YAAY;IAxBtB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAEtB;IACV,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsE;IAC/F,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAsB;IAC7C,OAAO,CAAC,MAAM,CAAC,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,aAAa,CAAC,CAAS;IAE/B,oEAAoE;IACpE,IAAW,eAAe,IAAI,MAAM,CAOnC;gBAGC,IAAI,EAAE,sBAAsB,GAAG,WAAW,GAAG,4BAA4B,EACjE,YAAY,UAA8B;IAM7C,aAAa,IAAI,IAAI;IASrB,UAAU,IAAI,IAAI;IAOzB;;;;OAIG;IACI,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAmClC,UAAU,IAAI,IAAI;IAOzB,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,kBAAkB;IAa1B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAkL3B,OAAO,CAAC,qBAAqB;IAM7B;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;CA6B9B"}
|