@sbb-esta/lyne-elements 4.0.1 → 4.0.3
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.d.ts.map +1 -1
- package/autocomplete/autocomplete-base-element.js +6 -5
- package/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/autocomplete/autocomplete.component.js +8 -9
- package/calendar/calendar.component.d.ts +3 -0
- package/calendar/calendar.component.d.ts.map +1 -1
- package/calendar/calendar.component.js +89 -86
- package/core/styles/core.scss +7 -9
- package/core/styles/mixins/link.scss +4 -7
- package/core/styles/mixins/lists.scss +3 -3
- package/core/styles/mixins/pearl-chain-bullet.scss +3 -8
- package/core/styles/mixins/scrollbar.scss +1 -0
- package/core/styles/mixins/table.scss +15 -17
- package/custom-elements.json +1022 -1003
- package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
- package/development/autocomplete/autocomplete-base-element.js +7 -6
- package/development/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/development/autocomplete/autocomplete.component.js +13 -15
- package/development/calendar/calendar.component.d.ts +3 -0
- package/development/calendar/calendar.component.d.ts.map +1 -1
- package/development/calendar/calendar.component.js +44 -35
- package/development/notification/notification.component.js +9 -11
- package/development/option/option/option-base-element.js +2 -2
- package/loading-indicator-circle/loading-indicator-circle.component.js +1 -1
- package/notification/notification.component.js +1 -1
- package/option/option/option-base-element.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete-base-element.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete-base-element.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAInB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAIb,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAgBnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;;AAUzD,8BAAsB,0BAA0B,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,+BAEpE;IACC,OAAuB,MAAM,EAAE,cAAc,CAA4B;IAEzE;;;;;;;OAOG;IACH,SAEgB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAQ;IAElD;;;;;;OAMG;IACH,SAEgB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAExD,+DAA+D;IAC/D,SAEgB,iBAAiB,EAAE,OAAO,CAAS;IAEnD,2FAA2F;IAC3F,SAEgB,qBAAqB,EAAE,OAAO,CAAS;IAEvD,wFAAwF;IACxF,SACgB,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAQ;IAElE;;;OAGG;IACH,SAA6C,IAAI,EAAE,GAAG,GAAG,GAAG,CAAwB;IAEpF,8EAA8E;IAC9E,SAEgB,sBAAsB,EAAE,OAAO,CAAS;IAExD;;;;;OAKG;IACH,SAEgB,gBAAgB,EAAE,OAAO,CAAS;IAElD;;;OAGG;IACH,SACgB,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAU;IAE9D,qEAAqE;IACrE,IAAW,aAAa,IAAI,WAAW,GAAG,IAAI,CAO7C;IAED,mCAAmC;IACnC,IAAW,cAAc,IAAI,gBAAgB,GAAG,IAAI,CAEnD;IACD,OAAO,CAAC,eAAe,CAAC,CAA0B;IAElD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAQ;IAC9D,OAAO,CAAC,qBAAqB,CAQ1B;IACH,uFAAuF;IACvF,OAAO,CAAC,yBAAyB,CAOxB;IACT,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,0BAA0B,CAAmB;IACrD,OAAO,CAAC,yBAAyB,CAAkB;IACnD,OAAO,CAAC,2BAA2B,CAA2C;IAC9E,OAAO,CAAC,aAAa,CAAK;IAE1B,kCAAkC;IAClC,OAAO,CAAC,cAAc,CAAuB;IAE7C,SAAS,CAAC,QAAQ,KAAK,OAAO,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;;IAoB5D,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI;IACvC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IACxE,SAAS,CAAC,QAAQ,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAC7E,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAC/D,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IACnE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,IAAI;IAE7C,8BAA8B;IACvB,IAAI,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"autocomplete-base-element.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete-base-element.ts"],"names":[],"mappings":"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"}
|
|
@@ -488,7 +488,7 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
488
488
|
}
|
|
489
489
|
/** Opens the autocomplete. */
|
|
490
490
|
open() {
|
|
491
|
-
if (this.state
|
|
491
|
+
if (this.state === "opening" || this.state === "opened" || !this._overlay || this.options.length === 0 || this._readonly() || !this.dispatchBeforeOpenEvent()) {
|
|
492
492
|
return;
|
|
493
493
|
}
|
|
494
494
|
this.showPopover?.();
|
|
@@ -500,13 +500,15 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
500
500
|
}
|
|
501
501
|
this._setOverlayPosition(originElement);
|
|
502
502
|
this._setNextActiveOptionIfAutoActiveFirstOption();
|
|
503
|
+
this._attachOpenPanelEvents();
|
|
504
|
+
this._escapableOverlayController.connect();
|
|
503
505
|
if (this._isZeroAnimationDuration()) {
|
|
504
506
|
this._handleOpening();
|
|
505
507
|
}
|
|
506
508
|
}
|
|
507
509
|
/** Closes the autocomplete. */
|
|
508
510
|
close() {
|
|
509
|
-
if (this.state
|
|
511
|
+
if (this.state === "closing" || this.state === "closed" || !this.dispatchBeforeCloseEvent()) {
|
|
510
512
|
return;
|
|
511
513
|
}
|
|
512
514
|
this.state = "closing";
|
|
@@ -684,12 +686,10 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
684
686
|
}
|
|
685
687
|
_handleOpening() {
|
|
686
688
|
this.state = "opened";
|
|
687
|
-
this._attachOpenPanelEvents();
|
|
688
689
|
if (this.originElement) {
|
|
689
690
|
this._originResizeObserver.observe(this.originElement);
|
|
690
691
|
}
|
|
691
692
|
this.triggerElement?.setAttribute("aria-expanded", "true");
|
|
692
|
-
this._escapableOverlayController.connect();
|
|
693
693
|
this.dispatchOpenEvent();
|
|
694
694
|
}
|
|
695
695
|
_handleClosing() {
|
|
@@ -743,7 +743,7 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
743
743
|
});
|
|
744
744
|
}
|
|
745
745
|
_closedPanelKeyboardInteraction(event) {
|
|
746
|
-
if (this.state
|
|
746
|
+
if (this.state === "opening" || this.state === "opened") {
|
|
747
747
|
return;
|
|
748
748
|
}
|
|
749
749
|
switch (event.key) {
|
|
@@ -776,6 +776,7 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
776
776
|
class="sbb-autocomplete__options"
|
|
777
777
|
role=${!ariaRoleOnHost ? this.panelRole : nothing}
|
|
778
778
|
id=${!ariaRoleOnHost ? this.overlayId : nothing}
|
|
779
|
+
tabindex="-1"
|
|
779
780
|
${ref((containerRef) => this._optionContainer = containerRef)}
|
|
780
781
|
>
|
|
781
782
|
<slot @slotchange=${this._handleSlotchange}></slot>
|
|
@@ -829,4 +830,4 @@ let SbbAutocompleteBaseElement = (() => {
|
|
|
829
830
|
export {
|
|
830
831
|
SbbAutocompleteBaseElement
|
|
831
832
|
};
|
|
832
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7XG4gIFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIsXG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxufSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaXNMZWFuLCBpc1NhZmFyaSwgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiwgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7XG4gIGlzRXZlbnRPbkVsZW1lbnQsXG4gIG92ZXJsYXlHYXBGaXhDb3JuZXJzLFxuICByZW1vdmVBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzLFxuICBzZXRPdmVybGF5UG9zaXRpb24sXG59IGZyb20gJy4uL2NvcmUvb3ZlcmxheS50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkZvcm1GaWVsZEVsZW1lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oXG4gIFNiYkh5ZHJhdGlvbk1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBhdHRhY2guXG4gICAqIElmIG5vdCBzZXQsIGFzIGZhbGxiYWNrIHRoZXJlIGFyZSB0d28gZWxlbWVudHMgd2hpY2ggY2FuIGFjdCBhcyBvcmlnaW4gd2l0aCBmb2xsb3dpbmcgcHJpb3JpdHkgb3JkZXI6XG4gICAqIDEuIGBzYmItZm9ybS1maWVsZGAgaWYgaXQgaXMgYW4gYW5jZXN0b3IuXG4gICAqIDIuIHRyaWdnZXIgZWxlbWVudCBpZiBzZXQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIG9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGF1dG9jb21wbGV0ZSBvcGVuaW5nLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgb3BlbiBvbiBmb2N1cywgY2xpY2ssIGlucHV0IG9yIGBBcnJvd0Rvd25gIGtleXByZXNzIG9mIHRoZSAndHJpZ2dlcicgZWxlbWVudC5cbiAgICogSWYgbm90IHNldCwgd2lsbCBzZWFyY2ggZm9yIHRoZSBmaXJzdCAnaW5wdXQnIGNoaWxkIG9mIGEgJ3NiYi1mb3JtLWZpZWxkJyBhbmNlc3Rvci5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJlc2VydmUtaWNvbi1zcGFjZScsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHByZXNlcnZlSWNvblNwYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGZpcnN0IG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCB3aGVuIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1hY3RpdmUtZmlyc3Qtb3B0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhbiBvcHRpb24ncyBjb250cm9sIHZhbHVlIHRvIGl0cyBkaXNwbGF5IHZhbHVlIGluIHRoZSB0cmlnZ2VyLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNwbGF5V2l0aDogKCh2YWx1ZTogVCkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBhY3RpdmUgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBhcyB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1zZWxlY3QtYWN0aXZlLW9wdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGF1dG9TZWxlY3RBY3RpdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdXNlciBpcyByZXF1aXJlZCB0byBtYWtlIGEgc2VsZWN0aW9uIHdoZW4gdGhleSdyZSBpbnRlcmFjdGluZyB3aXRoIHRoZVxuICAgKiBhdXRvY29tcGxldGUuIElmIHRoZSB1c2VyIG1vdmVzIGF3YXkgZnJvbSB0aGUgYXV0b2NvbXBsZXRlIHdpdGhvdXQgc2VsZWN0aW5nIGFuIG9wdGlvbiBmcm9tXG4gICAqIHRoZSBsaXN0LCB0aGUgdmFsdWUgd2lsbCBiZSByZXNldC4gSWYgdGhlIHVzZXIgb3BlbnMgdGhlIHBhbmVsIGFuZCBjbG9zZXMgaXQgd2l0aG91dFxuICAgKiBpbnRlcmFjdGluZyBvciBzZWxlY3RpbmcgYSB2YWx1ZSwgdGhlIGluaXRpYWwgdmFsdWUgd2lsbCBiZSBrZXB0LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3JlcXVpcmUtc2VsZWN0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZVNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlci5cbiAgICogQGRlZmF1bHQgJ2F1dG8nXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgcG9zaXRpb246ICdhdXRvJyB8ICdhYm92ZScgfCAnYmVsb3cnID0gJ2F1dG8nO1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbGVtZW50IHdoZXJlIGF1dG9jb21wbGV0ZSBvdmVybGF5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICBwdWJsaWMgZ2V0IG9yaWdpbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5vcmlnaW4gPz9cbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy4oJyNvdmVybGF5LWFuY2hvcicpID8/XG4gICAgICB0aGlzLnRyaWdnZXIgPz9cbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHRyaWdnZXIgZWxlbWVudC4gKi9cbiAgcHVibGljIGdldCB0cmlnZ2VyRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXJFbGVtZW50ID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcmxheUlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYW5lbFJvbGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3JpZ2luUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG4gIC8qKiBMaXN0ZW5zIHRvIHRoZSBjaGFuZ2VzIG9uIHRoZSBgZGlzYWJsZWRgIG9yIGByZWFkb25seWAgYXR0cmlidXRlIG9mIHRoZSB0cmlnZ2VyLiAqL1xuICBwcml2YXRlIF90cmlnZ2VyQXR0cmlidXRlT2JzZXJ2ZXIgPSAhaXNTZXJ2ZXJcbiAgICA/IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBtdXRhdGlvbnNbMF0udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlmIChpbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgfHwgaW5wdXQuaGFzQXR0cmlidXRlKCdyZWFkb25seScpKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIDogbnVsbDtcbiAgcHJpdmF0ZSBfb3ZlcmxheSE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcHRpb25Db250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9vcHRpb25zQ291bnQgPSAwO1xuXG4gIC8qKiBUcmFja3MgaW5wdXQgZnJvbSBrZXlib2FyZC4gKi9cbiAgcHJpdmF0ZSBfbGFzdFVzZXJJbnB1dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+W107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgKCkgPT4gdGhpcy5jbG9zZXN0PFNiYkZvcm1GaWVsZEVsZW1lbnQ+KCdzYmItZm9ybS1maWVsZCcpLFxuICAgICAgICB7XG4gICAgICAgICAgbmVnYXRpdmU6IChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5lZ2F0aXZlID0gZS5uZWdhdGl2ZTtcbiAgICAgICAgICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBib3JkZXJsZXNzOiAoZSkgPT4gdGhpcy50b2dnbGVTdGF0ZSgnb3B0aW9uLXBhbmVsLW9yaWdpbi1ib3JkZXJsZXNzJywgZS5ib3JkZXJsZXNzKSxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzeW5jTmVnYXRpdmUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQ7XG5cbiAgLyoqIE9wZW5zIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnIHx8XG4gICAgICAhdGhpcy5fb3ZlcmxheSB8fFxuICAgICAgdGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgdGhpcy5fcmVhZG9ubHkoKSB8fFxuICAgICAgIXRoaXMuZGlzcGF0Y2hCZWZvcmVPcGVuRXZlbnQoKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1BvcG92ZXI/LigpO1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmluZyc7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8udG9nZ2xlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJywgdHJ1ZSk7XG4gICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IHRoaXMub3JpZ2luRWxlbWVudDtcbiAgICBpZiAoIW9yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBmaW5kIHRoZSBvcmlnaW4gZWxlbWVudC4gUGxlYXNlIHNwZWNpZnkgYSB2YWxpZCBlbGVtZW50IG9yIGNoZWNrIHRoZSB1c2FnZSBvZiB0aGUgXCJvcmlnaW5cIiBwcm9wZXJ0eSBmcm9tIHRoZSBkb2N1bWVudGF0aW9uJyxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbihvcmlnaW5FbGVtZW50KTtcbiAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTtcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdvcGVuZWQnIHx8ICF0aGlzLmRpc3BhdGNoQmVmb3JlQ2xvc2VFdmVudCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9ICdjbG9zaW5nJztcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnKTtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLmFib3J0KCk7XG4gICAgaWYgKHRoaXMub3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhpcy5fb3JpZ2luUmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMub3JpZ2luRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBkdXJhdGlvbiBpcyB6ZXJvLCB0aGUgYW5pbWF0aW9uZW5kIGV2ZW50IGlzIG5vdCBhbHdheXMgZmlyZWQgcmVsaWFibHkuXG4gICAgLy8gSW4gdGhpcyBjYXNlIHdlIGRpcmVjdGx5IHNldCB0aGUgYGNsb3NlZGAgc3RhdGUuXG4gICAgaWYgKHRoaXMuX2lzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKCkpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24odGhpcywgJy0tc2JiLW9wdGlvbnMtcGFuZWwtYW5pbWF0aW9uLWR1cmF0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyID0gJ21hbnVhbCc7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAoYXJpYVJvbGVPbkhvc3QpIHtcbiAgICAgIHRoaXMuaWQgfHw9IHRoaXMub3ZlcmxheUlkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFNldHVwKCk7XG4gICAgfVxuICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnYXV0b0FjdGl2ZUZpcnN0T3B0aW9uJykgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXF1ZXN0VXBkYXRlKFxuICAgIG5hbWU/OiBQcm9wZXJ0eUtleSxcbiAgICBvbGRWYWx1ZT86IHVua25vd24sXG4gICAgb3B0aW9ucz86IFByb3BlcnR5RGVjbGFyYXRpb24sXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnJlcXVlc3RVcGRhdGUobmFtZSwgb2xkVmFsdWUsIG9wdGlvbnMpO1xuXG4gICAgaWYgKGlzU2VydmVyIHx8ICF0aGlzLmhhc1VwZGF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFuYW1lIHx8IG5hbWUgPT09ICd0cmlnZ2VyJykge1xuICAgICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICAgIH0gZWxzZSBpZiAoKCFuYW1lIHx8IG5hbWUgPT09ICdvcmlnaW4nKSAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFdoZW4gYW4gb3B0aW9uIGlzIHNlbGVjdGVkLCB1cGRhdGUgdGhlIGlucHV0IHZhbHVlIGFuZCBjbG9zZSB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwcm90ZWN0ZWQgb25PcHRpb25TZWxlY3RlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD47XG4gICAgdGhpcy5fc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyh0YXJnZXQpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKiBXaGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZCwgdXBkYXRlIHRoZSBpbnB1dCB2YWx1ZSBhbmQgY2xvc2UgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHJvdGVjdGVkIG9uT3B0aW9uQXJyb3dzU2VsZWN0ZWQoYWN0aXZlT3B0aW9uOiBTYmJPcHRpb25CYXNlRWxlbWVudDxUPik6IHZvaWQge1xuICAgIGFjdGl2ZU9wdGlvbi5zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5fc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyhhY3RpdmVPcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0VmFsdWVBbmREaXNwYXRjaEV2ZW50cyhzZWxlY3RlZE9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICAvLyBEZXNlbGVjdCB0aGUgcHJldmlvdXMgb3B0aW9uc1xuICAgIHRoaXMub3B0aW9uc1xuICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uaWQgIT09IHNlbGVjdGVkT3B0aW9uLmlkICYmIG9wdGlvbi5zZWxlY3RlZClcbiAgICAgIC5mb3JFYWNoKChvcHRpb24pID0+IChvcHRpb24uc2VsZWN0ZWQgPSBmYWxzZSkpO1xuXG4gICAgaWYgKHRoaXMudHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIC8vIEdpdmVuIGEgdmFsdWUsIHJldHVybnMgdGhlIHN0cmluZyB0aGF0IHNob3VsZCBiZSBzaG93biB3aXRoaW4gdGhlIGlucHV0LlxuICAgICAgY29uc3QgdG9EaXNwbGF5ID0gdGhpcy5kaXNwbGF5V2l0aD8uKHNlbGVjdGVkT3B0aW9uLnZhbHVlIGFzIFQpID8/IHNlbGVjdGVkT3B0aW9uLnZhbHVlO1xuXG4gICAgICAvLyBTZXQgdGhlIG9wdGlvbiB2YWx1ZVxuICAgICAgLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCBSZWFjdCBvbkNoYW5nZSBldmVudCwgd2UgaGF2ZSB0byBnZXQgdGhlIHNldHRlciBhbmQgY2FsbCBpdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTE2MDAjaXNzdWVjb21tZW50LTM0NTgxMzEzMFxuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy50cmlnZ2VyRWxlbWVudCwgdG9EaXNwbGF5KTtcblxuICAgICAgLy8gTWFudWFsbHkgdHJpZ2dlciB0aGUgY2hhbmdlIGV2ZW50c1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcblxuICAgICAgLy8gRGlzcGF0Y2hpbmcgdGhlIGlucHV0IGV2ZW50IGNoYW5nZXMgX2xhc3RJbnB1dCwgd2hpY2ggc2hvdWxkIHN0YXkgZW1wdHkgc2luY2UgdGhlcmUncyBubyBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAgICAgIHRoaXMuX2xhc3RVc2VySW5wdXQgPSBudWxsO1xuXG4gICAgICAvLyBDdXN0b20gaW5wdXQgZXZlbnQgZW1pdHRlZCB3aGVuIGlucHV0IHZhbHVlIGNoYW5nZXMgYWZ0ZXIgYW4gb3B0aW9uIGlzIHNlbGVjdGVkXG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudDx7IG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfT4oJ2lucHV0QXV0b2NvbXBsZXRlJywge1xuICAgICAgICAgIGRldGFpbDogeyBvcHRpb246IHNlbGVjdGVkT3B0aW9uIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVTbG90Y2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnModGhpcy50cmlnZ2VyRWxlbWVudD8udmFsdWUpO1xuXG4gICAgLyoqXG4gICAgICogSXQncyBwb3NzaWJsZSB0byBmaWx0ZXIgb3V0IG9wdGlvbnMgd2l0aCBhbiBvcGVuZWQgcGFuZWwgb24gaW5wdXQgY2hhbmdlLlxuICAgICAqIEluIHRoaXMgY2FzZSwgdGhlIHBhbmVsJ3MgcG9zaXRpb24gbXVzdCBiZSByZWNhbGN1bGF0ZWQgY29uc2lkZXJpbmcgdGhlIG5ldyBvcHRpb24ncyBsaXN0LlxuICAgICAqL1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTtcblxuICAgICAgLy8gSWYgdGhlIGF1dG9jb21wbGV0ZSBpcyBvcGVuIGFuZCB0aGUgb3B0aW9uIGNvdW50IGdldHMgdG8gemVybywgd2UgY2xvc2UgdGhlIGF1dG9jb21wbGV0ZS5cbiAgICAgIGlmICh0aGlzLl9vcHRpb25zQ291bnQgPiAwICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICAvLyBJZiB0aGUgJ2lucHV0JyBpcyBmb2N1c2VkIGFuZCB0aGUgY291bnQgb2Ygb3B0aW9ucyBjaGFuZ2VzIGZyb20gMCB0byA+IDAsXG4gICAgICAvLyB0aGUgYXV0b2NvbXBsZXRlIHNob3VsZCBvcGVuIGF1dG9tYXRpY2FsbHkuXG4gICAgICBkb2N1bWVudD8uYWN0aXZlRWxlbWVudCA9PT0gdGhpcy50cmlnZ2VyRWxlbWVudCAmJlxuICAgICAgdGhpcy5fb3B0aW9uc0NvdW50ID09PSAwICYmXG4gICAgICB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb3B0aW9uc0NvdW50ID0gdGhpcy5vcHRpb25zLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvQWN0aXZlRmlyc3RPcHRpb24pIHtcbiAgICAgIHRoaXMucmVzZXRBY3RpdmVFbGVtZW50KCk7XG4gICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oKTtcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgaW5oZXJpdCAncmVhZG9ubHknIHN0YXRlIGZyb20gdGhlIHRyaWdnZXIuICovXG4gIHByaXZhdGUgX3JlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jb21wb25lbnRTZXR1cCgpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25maWd1cmVUcmlnZ2VyKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWd1cmVUcmlnZ2VyKCk6IHZvaWQge1xuICAgIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gKHRoaXMudHJpZ2dlciA/P1xuICAgICAgdGhpcy5jbG9zZXN0Py4oJ3NiYi1mb3JtLWZpZWxkJyk/LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykpIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICh0cmlnZ2VyRWxlbWVudCA9PT0gdGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgcmVtb3ZlQXJpYUNvbWJvQm94QXR0cmlidXRlcyh0aGlzLnRyaWdnZXJFbGVtZW50KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnKTtcbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudCA9IHRyaWdnZXJFbGVtZW50O1xuXG4gICAgaWYgKCF0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQXMgdGhlIHRyaWdnZXIgY2FuIGJlIHRoZSBmYWxsYmFjayBvZiB0aGUgb3JpZ2luLCB3ZSBldmVudHVhbGx5IGhhdmUgdG8gdXBkYXRlIHRoZSBwb3NpdGlvbi5cbiAgICBjb25zdCBvcmlnaW5FbGVtZW50ID0gdGhpcy5vcmlnaW5FbGVtZW50O1xuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50ID09PSBvcmlnaW5FbGVtZW50ICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24ob3JpZ2luRWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJpZ2dlckF0dHJpYnV0ZU9ic2VydmVyPy5vYnNlcnZlKHRoaXMudHJpZ2dlckVsZW1lbnQhLCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2Rpc2FibGVkJywgJ3JlYWRvbmx5J10sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNldFRyaWdnZXJBdHRyaWJ1dGVzKHRoaXMudHJpZ2dlckVsZW1lbnQpO1xuICAgIHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAvLyBPcGVuIHRoZSBvdmVybGF5IG9uIGZvY3VzLCBjbGljaywgaW5wdXQgYW5kIGBBcnJvd0Rvd25gIGV2ZW50XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHRoaXMub3BlbigpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnaW5wdXQnLFxuICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9ucyh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX2xhc3RVc2VySW5wdXQgPSB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdrZXlkb3duJyxcbiAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5fY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50KSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgLy8gV2UgbmVlZCBrZXkgZXZlbnQgdG8gcnVuIGJlZm9yZSBhbnkgb3RoZXIgc3Vic2NyaXB0aW9uIHRvIGd1YXJhbnRlZSBhIGNvcnJlY3RcbiAgICAgICAgLy8gaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzIChuZWNlc3NhcnkgZm9yIHRoZSAnc2JiLWNoaXAtZ3JvdXAnIHVzZSBjYXNlKS5cbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNldCBvdmVybGF5IHBvc2l0aW9uLCB3aWR0aCBhbmQgbWF4IGhlaWdodFxuICBwcml2YXRlIF9zZXRPdmVybGF5UG9zaXRpb24ob3JpZ2luRWxlbWVudCA9IHRoaXMub3JpZ2luRWxlbWVudCk6IHZvaWQge1xuICAgIC8vIEFuIHVuZGVmaW5lZCBvcmlnaW5FbGVtZW50IHNob3VsZCBvbmx5IG9jY3VyIGluIHRoZSB1bmxpa2VseSBldmVudFxuICAgIC8vIHRoYXQgdGhlIGF1dG9jb21wbGV0ZSBsb3NlcyBpdHMgb3JpZ2luRWxlbWVudCBhbmQgdHJpZ2dlckVsZW1lbnQgZHVyaW5nIGFuIG9wZW4gc3RhdGUuXG4gICAgaWYgKCFvcmlnaW5FbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNldE92ZXJsYXlQb3NpdGlvbihcbiAgICAgIHRoaXMuX292ZXJsYXksXG4gICAgICBvcmlnaW5FbGVtZW50LFxuICAgICAgdGhpcy5fb3B0aW9uQ29udGFpbmVyLFxuICAgICAgdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCcuc2JiLWF1dG9jb21wbGV0ZV9fY29udGFpbmVyJykhLFxuICAgICAgdGhpcyxcbiAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBvcGVuL2Nsb3NlIGFuaW1hdGlvbiBlbmQuXG4gICAqIEluIHJhcmUgY2FzZXMgaXQgY2FuIGJlIHRoYXQgdGhlIGFuaW1hdGlvbkVuZCBldmVudCBpcyB0cmlnZ2VyZWQgdHdpY2UuXG4gICAqIFRvIGF2b2lkIGVudGVyaW5nIGEgY29ycnVwdCBzdGF0ZSwgZXhpdCB3aGVuIHN0YXRlIGlzIG5vdCBleHBlY3RlZC5cbiAgICovXG4gIHByaXZhdGUgX29uQW5pbWF0aW9uRW5kKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnb3BlbicgJiYgdGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfSBlbHNlIGlmIChldmVudC5hbmltYXRpb25OYW1lID09PSAnY2xvc2UnICYmIHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlQ2xvc2luZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZU9wZW5pbmcoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuZWQnO1xuICAgIHRoaXMuX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpO1xuICAgIGlmICh0aGlzLm9yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX29yaWdpblJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5vcmlnaW5FbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICB0aGlzLl9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5jb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5oaWRlUG9wb3Zlcj8uKCk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gICAgLy8gQ2xlYXJzIHRoZSBpbnB1dCBpZiB0aGVyZSdzIHVzZXIgaW50ZXJhY3Rpb24gd2l0aG91dCBzZWxlY3Rpb24gKHNlbGVjdGlvbiBjbGVhcnMgYF9sYXN0VXNlcklucHV0YCkuXG4gICAgaWYgKHRoaXMucmVxdWlyZVNlbGVjdGlvbiAmJiB0aGlzLnRyaWdnZXJFbGVtZW50ICYmIHRoaXMuX2xhc3RVc2VySW5wdXQpIHtcbiAgICAgIGNvbnN0IHNldFZhbHVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZSwgJ3ZhbHVlJykhLnNldCE7XG4gICAgICBzZXRWYWx1ZS5jYWxsKHRoaXMudHJpZ2dlckVsZW1lbnQsICcnKTtcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnMoJycpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcbiAgICB9XG4gICAgdGhpcy5yZXNldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICB0aGlzLl9vcHRpb25Db250YWluZXIuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLl9lc2NhcGFibGVPdmVybGF5Q29udHJvbGxlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5kaXNwYXRjaENsb3NlRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gUmVjYWxjdWxhdGUgdGhlIG92ZXJsYXkgcG9zaXRpb24gb24gc2Nyb2xsIGFuZCB3aW5kb3cgcmVzaXplXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgLy8gV2l0aG91dCBjYXB0dXJlLCBvdGhlciBzY3JvbGwgY29udGV4dHMgd291bGQgbm90IGJ1YmJsZSB0byB0aGlzIGV2ZW50IGxpc3RlbmVyLlxuICAgICAgLy8gQ2FwdHVyZSBhbGxvd3MgdXMgdG8gcmVhY3QgdG8gYWxsIHNjcm9sbCBjb250ZXh0cyBpbiB0aGlzIERPTS5cbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIC8vIENsb3NlIGF1dG9jb21wbGV0ZSBvbiBiYWNrZHJvcCBjbGlja1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIChldikgPT4gdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lcihldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIChldikgPT4gdGhpcy5fY2xvc2VPbkJhY2tkcm9wQ2xpY2soZXYpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ8m1ZGlzYWJsZWRjaGFuZ2UnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24/LmRpc2FibGVkKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBLZXlib2FyZCBpbnRlcmFjdGlvbnNcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLm9wZW5lZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIC8vIFdlIG5lZWQga2V5IGV2ZW50IHRvIHJ1biBiZWZvcmUgYW55IG90aGVyIHN1YnNjcmlwdGlvbiB0byBndWFyYW50ZWUgYSBjb3JyZWN0XG4gICAgICAgIC8vIGludGVyYWN0aW9uIHdpdGggb3RoZXIgY29tcG9uZW50cyAobmVjZXNzYXJ5IGZvciB0aGUgJ3NiYi1jaGlwLWdyb3VwJyB1c2UgY2FzZSkuXG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgcG9pbnRlcmRvd24gZXZlbnQgdGFyZ2V0IGlzIHRyaWdnZXJlZCBvbiB0aGUgbWVudS5cbiAgcHJpdmF0ZSBfcG9pbnRlckRvd25MaXN0ZW5lciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5faXNQb2ludGVyRG93bkV2ZW50T25NZW51ID0gaXNFdmVudE9uRWxlbWVudCh0aGlzLl9vdmVybGF5LCBldmVudCk7XG4gIH07XG5cbiAgLy8gSWYgdGhlIGNsaWNrIGlzIG91dHNpZGUgdGhlIGF1dG9jb21wbGV0ZSwgY2xvc2VzIHRoZSBwYW5lbC5cbiAgcHJpdmF0ZSBfY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgJiZcbiAgICAgICFpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5vcmlnaW5FbGVtZW50LCBldmVudClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfY2xvc2VkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIaWdobGlnaHQgdGhlIHNlYXJjaGVkIHRleHQgb24gdGhlIG9wdGlvbnMuICovXG4gIHByaXZhdGUgX2hpZ2hsaWdodE9wdGlvbnMoc2VhcmNoVGVybT86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzZWFyY2hUZXJtID09PSBudWxsIHx8IHNlYXJjaFRlcm0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uaGlnaGxpZ2h0KHNlYXJjaFRlcm0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2dhcC1maXhcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX2dhcC1maXhcIj4ke292ZXJsYXlHYXBGaXhDb3JuZXJzKCl9PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBAYW5pbWF0aW9uZW5kPSR7dGhpcy5fb25BbmltYXRpb25FbmR9XG4gICAgICAgICAgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19wYW5lbFwiXG4gICAgICAgICAgJHtyZWYoKG92ZXJsYXlSZWY/OiBFbGVtZW50KSA9PiAodGhpcy5fb3ZlcmxheSA9IG92ZXJsYXlSZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX193cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fb3B0aW9uc1wiXG4gICAgICAgICAgICAgIHJvbGU9JHshYXJpYVJvbGVPbkhvc3QgPyB0aGlzLnBhbmVsUm9sZSA6IG5vdGhpbmd9XG4gICAgICAgICAgICAgIGlkPSR7IWFyaWFSb2xlT25Ib3N0ID8gdGhpcy5vdmVybGF5SWQgOiBub3RoaW5nfVxuICAgICAgICAgICAgICAke3JlZigoY29udGFpbmVyUmVmKSA9PiAodGhpcy5fb3B0aW9uQ29udGFpbmVyID0gY29udGFpbmVyUmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5faGFuZGxlU2xvdGNoYW5nZX0+PC9zbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBpbnB1dEF1dG9jb21wbGV0ZTogQ3VzdG9tRXZlbnQ8eyBvcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PGFueT4gfT47XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
833
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtYmFzZS1lbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc2l6ZUNvbnRyb2xsZXIgfSBmcm9tICdAbGl0LWxhYnMvb2JzZXJ2ZXJzL3Jlc2l6ZS1jb250cm9sbGVyLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB0eXBlIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHJlZiB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3JlZi5qcyc7XG5cbmltcG9ydCB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vY29yZS9iYXNlLWVsZW1lbnRzLnRzJztcbmltcG9ydCB7XG4gIFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIsXG4gIFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLFxufSBmcm9tICcuLi9jb3JlL2NvbnRyb2xsZXJzLnRzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgaWRSZWZlcmVuY2UgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaXNMZWFuLCBpc1NhZmFyaSwgaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBTYmJIeWRyYXRpb25NaXhpbiwgU2JiTmVnYXRpdmVNaXhpbiB9IGZyb20gJy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7XG4gIGlzRXZlbnRPbkVsZW1lbnQsXG4gIG92ZXJsYXlHYXBGaXhDb3JuZXJzLFxuICByZW1vdmVBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzLFxuICBzZXRPdmVybGF5UG9zaXRpb24sXG59IGZyb20gJy4uL2NvcmUvb3ZlcmxheS50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYkZvcm1GaWVsZEVsZW1lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJPcHRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4uL29wdGlvbi50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2F1dG9jb21wbGV0ZS1iYXNlLWVsZW1lbnQuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBPbiBTYWZhcmksIHRoZSBhcmlhIHJvbGUgJ2xpc3Rib3gnIG11c3QgYmUgb24gdGhlIGhvc3QgZWxlbWVudCwgb3IgZWxzZSBWb2ljZU92ZXIgd29uJ3Qgd29yayBhdCBhbGwuXG4gKiBPbiB0aGUgb3RoZXIgaGFuZCwgSkFXUyBhbmQgTlZEQSBuZWVkIHRoZSByb2xlIHRvIGJlIFwiY2xvc2VyXCIgdG8gdGhlIG9wdGlvbnMsIG9yIGVsc2Ugb3B0Z3JvdXBzIHdvbid0IHdvcmsuXG4gKi9cbmNvbnN0IGFyaWFSb2xlT25Ib3N0ID0gaXNTYWZhcmk7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oXG4gIFNiYkh5ZHJhdGlvbk1peGluKFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHdoZXJlIHRoZSBhdXRvY29tcGxldGUgd2lsbCBhdHRhY2guXG4gICAqIElmIG5vdCBzZXQsIGFzIGZhbGxiYWNrIHRoZXJlIGFyZSB0d28gZWxlbWVudHMgd2hpY2ggY2FuIGFjdCBhcyBvcmlnaW4gd2l0aCBmb2xsb3dpbmcgcHJpb3JpdHkgb3JkZXI6XG4gICAqIDEuIGBzYmItZm9ybS1maWVsZGAgaWYgaXQgaXMgYW4gYW5jZXN0b3IuXG4gICAqIDIuIHRyaWdnZXIgZWxlbWVudCBpZiBzZXQuXG4gICAqXG4gICAqIEZvciBhdHRyaWJ1dGUgdXNhZ2UsIHByb3ZpZGUgYW4gaWQgcmVmZXJlbmNlLlxuICAgKi9cbiAgQGlkUmVmZXJlbmNlKClcbiAgQHByb3BlcnR5KClcbiAgcHVibGljIGFjY2Vzc29yIG9yaWdpbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGlucHV0IGVsZW1lbnQgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGF1dG9jb21wbGV0ZSBvcGVuaW5nLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgYXV0b2NvbXBsZXRlIHdpbGwgb3BlbiBvbiBmb2N1cywgY2xpY2ssIGlucHV0IG9yIGBBcnJvd0Rvd25gIGtleXByZXNzIG9mIHRoZSAndHJpZ2dlcicgZWxlbWVudC5cbiAgICogSWYgbm90IHNldCwgd2lsbCBzZWFyY2ggZm9yIHRoZSBmaXJzdCAnaW5wdXQnIGNoaWxkIG9mIGEgJ3NiYi1mb3JtLWZpZWxkJyBhbmNlc3Rvci5cbiAgICpcbiAgICogRm9yIGF0dHJpYnV0ZSB1c2FnZSwgcHJvdmlkZSBhbiBpZCByZWZlcmVuY2UuXG4gICAqL1xuICBAaWRSZWZlcmVuY2UoKVxuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgdHJpZ2dlcjogSFRNTElucHV0RWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBpY29uIHNwYWNlIGlzIHByZXNlcnZlZCB3aGVuIG5vIGljb24gaXMgc2V0LiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJlc2VydmUtaWNvbi1zcGFjZScsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHByZXNlcnZlSWNvblNwYWNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGZpcnN0IG9wdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCB3aGVuIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1hY3RpdmUtZmlyc3Qtb3B0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgbWFwcyBhbiBvcHRpb24ncyBjb250cm9sIHZhbHVlIHRvIGl0cyBkaXNwbGF5IHZhbHVlIGluIHRoZSB0cmlnZ2VyLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNwbGF5V2l0aDogKCh2YWx1ZTogVCkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBTaXplIHZhcmlhbnQsIGVpdGhlciBtIG9yIHMuXG4gICAqIEBkZWZhdWx0ICdtJyAvICdzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGFjY2Vzc29yIHNpemU6ICdtJyB8ICdzJyA9IGlzTGVhbigpID8gJ3MnIDogJ20nO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBhY3RpdmUgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBhcyB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnYXV0by1zZWxlY3QtYWN0aXZlLW9wdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGF1dG9TZWxlY3RBY3RpdmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdXNlciBpcyByZXF1aXJlZCB0byBtYWtlIGEgc2VsZWN0aW9uIHdoZW4gdGhleSdyZSBpbnRlcmFjdGluZyB3aXRoIHRoZVxuICAgKiBhdXRvY29tcGxldGUuIElmIHRoZSB1c2VyIG1vdmVzIGF3YXkgZnJvbSB0aGUgYXV0b2NvbXBsZXRlIHdpdGhvdXQgc2VsZWN0aW5nIGFuIG9wdGlvbiBmcm9tXG4gICAqIHRoZSBsaXN0LCB0aGUgdmFsdWUgd2lsbCBiZSByZXNldC4gSWYgdGhlIHVzZXIgb3BlbnMgdGhlIHBhbmVsIGFuZCBjbG9zZXMgaXQgd2l0aG91dFxuICAgKiBpbnRlcmFjdGluZyBvciBzZWxlY3RpbmcgYSB2YWx1ZSwgdGhlIGluaXRpYWwgdmFsdWUgd2lsbCBiZSBrZXB0LlxuICAgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3JlcXVpcmUtc2VsZWN0aW9uJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZVNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlci5cbiAgICogQGRlZmF1bHQgJ2F1dG8nXG4gICAqL1xuICBAcHJvcGVydHkoKVxuICBwdWJsaWMgYWNjZXNzb3IgcG9zaXRpb246ICdhdXRvJyB8ICdhYm92ZScgfCAnYmVsb3cnID0gJ2F1dG8nO1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbGVtZW50IHdoZXJlIGF1dG9jb21wbGV0ZSBvdmVybGF5IGlzIGF0dGFjaGVkIHRvLiAqL1xuICBwdWJsaWMgZ2V0IG9yaWdpbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5vcmlnaW4gPz9cbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy4oJyNvdmVybGF5LWFuY2hvcicpID8/XG4gICAgICB0aGlzLnRyaWdnZXIgPz9cbiAgICAgIG51bGxcbiAgICApO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHRyaWdnZXIgZWxlbWVudC4gKi9cbiAgcHVibGljIGdldCB0cmlnZ2VyRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyaWdnZXJFbGVtZW50ID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQ/OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcmxheUlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYW5lbFJvbGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3JpZ2luUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplQ29udHJvbGxlcih0aGlzLCB7XG4gICAgdGFyZ2V0OiBudWxsLFxuICAgIHNraXBJbml0aWFsOiB0cnVlLFxuICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG4gIC8qKiBMaXN0ZW5zIHRvIHRoZSBjaGFuZ2VzIG9uIHRoZSBgZGlzYWJsZWRgIG9yIGByZWFkb25seWAgYXR0cmlidXRlIG9mIHRoZSB0cmlnZ2VyLiAqL1xuICBwcml2YXRlIF90cmlnZ2VyQXR0cmlidXRlT2JzZXJ2ZXIgPSAhaXNTZXJ2ZXJcbiAgICA/IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBtdXRhdGlvbnNbMF0udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlmIChpbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgfHwgaW5wdXQuaGFzQXR0cmlidXRlKCdyZWFkb25seScpKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIDogbnVsbDtcbiAgcHJpdmF0ZSBfb3ZlcmxheSE6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9vcHRpb25Db250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfdHJpZ2dlckFib3J0Q29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSBfaXNQb2ludGVyRG93bkV2ZW50T25NZW51OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyID0gbmV3IFNiYkVzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9vcHRpb25zQ291bnQgPSAwO1xuXG4gIC8qKiBUcmFja3MgaW5wdXQgZnJvbSBrZXlib2FyZC4gKi9cbiAgcHJpdmF0ZSBfbGFzdFVzZXJJbnB1dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBvcHRpb25zKCk6IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+W107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgKCkgPT4gdGhpcy5jbG9zZXN0PFNiYkZvcm1GaWVsZEVsZW1lbnQ+KCdzYmItZm9ybS1maWVsZCcpLFxuICAgICAgICB7XG4gICAgICAgICAgbmVnYXRpdmU6IChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5lZ2F0aXZlID0gZS5uZWdhdGl2ZTtcbiAgICAgICAgICAgIHRoaXMuc3luY05lZ2F0aXZlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBib3JkZXJsZXNzOiAoZSkgPT4gdGhpcy50b2dnbGVTdGF0ZSgnb3B0aW9uLXBhbmVsLW9yaWdpbi1ib3JkZXJsZXNzJywgZS5ib3JkZXJsZXNzKSxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzeW5jTmVnYXRpdmUoKTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNlbGVjdEJ5S2V5Ym9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TmV4dEFjdGl2ZU9wdGlvbihldmVudD86IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQ7XG5cbiAgLyoqIE9wZW5zIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJyB8fFxuICAgICAgdGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcgfHxcbiAgICAgICF0aGlzLl9vdmVybGF5IHx8XG4gICAgICB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwIHx8XG4gICAgICB0aGlzLl9yZWFkb25seSgpIHx8XG4gICAgICAhdGhpcy5kaXNwYXRjaEJlZm9yZU9wZW5FdmVudCgpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93UG9wb3Zlcj8uKCk7XG4gICAgdGhpcy5zdGF0ZSA9ICdvcGVuaW5nJztcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZXhwYW5kZWQnLCB0cnVlKTtcbiAgICBjb25zdCBvcmlnaW5FbGVtZW50ID0gdGhpcy5vcmlnaW5FbGVtZW50O1xuICAgIGlmICghb3JpZ2luRWxlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IGZpbmQgdGhlIG9yaWdpbiBlbGVtZW50LiBQbGVhc2Ugc3BlY2lmeSBhIHZhbGlkIGVsZW1lbnQgb3IgY2hlY2sgdGhlIHVzYWdlIG9mIHRoZSBcIm9yaWdpblwiIHByb3BlcnR5IGZyb20gdGhlIGRvY3VtZW50YXRpb24nLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbkVsZW1lbnQpO1xuICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgIHRoaXMuX2F0dGFjaE9wZW5QYW5lbEV2ZW50cygpO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmNvbm5lY3QoKTtcblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBvcGVuZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVPcGVuaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgYXV0b2NvbXBsZXRlLiAqL1xuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdjbG9zaW5nJyB8fCB0aGlzLnN0YXRlID09PSAnY2xvc2VkJyB8fCAhdGhpcy5kaXNwYXRjaEJlZm9yZUNsb3NlRXZlbnQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUgPSAnY2xvc2luZyc7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJyk7XG4gICAgdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5hYm9ydCgpO1xuICAgIGlmICh0aGlzLm9yaWdpbkVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX29yaWdpblJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLm9yaWdpbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBhbmltYXRpb24gZHVyYXRpb24gaXMgemVybywgdGhlIGFuaW1hdGlvbmVuZCBldmVudCBpcyBub3QgYWx3YXlzIGZpcmVkIHJlbGlhYmx5LlxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkaXJlY3RseSBzZXQgdGhlIGBjbG9zZWRgIHN0YXRlLlxuICAgIGlmICh0aGlzLl9pc1plcm9BbmltYXRpb25EdXJhdGlvbigpKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbG9zaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNaZXJvQW5pbWF0aW9uRHVyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzWmVyb0FuaW1hdGlvbkR1cmF0aW9uKHRoaXMsICctLXNiYi1vcHRpb25zLXBhbmVsLWFuaW1hdGlvbi1kdXJhdGlvbicpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3ZlciA9ICdtYW51YWwnO1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgaWYgKGFyaWFSb2xlT25Ib3N0KSB7XG4gICAgICB0aGlzLmlkIHx8PSB0aGlzLm92ZXJsYXlJZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRTZXR1cCgpO1xuICAgIH1cbiAgICB0aGlzLnN5bmNOZWdhdGl2ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLnN5bmNOZWdhdGl2ZSgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2F1dG9BY3RpdmVGaXJzdE9wdGlvbicpICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLl9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVxdWVzdFVwZGF0ZShcbiAgICBuYW1lPzogUHJvcGVydHlLZXksXG4gICAgb2xkVmFsdWU/OiB1bmtub3duLFxuICAgIG9wdGlvbnM/OiBQcm9wZXJ0eURlY2xhcmF0aW9uLFxuICApOiB2b2lkIHtcbiAgICBzdXBlci5yZXF1ZXN0VXBkYXRlKG5hbWUsIG9sZFZhbHVlLCBvcHRpb25zKTtcblxuICAgIGlmIChpc1NlcnZlciB8fCAhdGhpcy5oYXNVcGRhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghbmFtZSB8fCBuYW1lID09PSAndHJpZ2dlcicpIHtcbiAgICAgIHRoaXMuX2NvbmZpZ3VyZVRyaWdnZXIoKTtcbiAgICB9IGVsc2UgaWYgKCghbmFtZSB8fCBuYW1lID09PSAnb3JpZ2luJykgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZCwgdXBkYXRlIHRoZSBpbnB1dCB2YWx1ZSBhbmQgY2xvc2UgdGhlIGF1dG9jb21wbGV0ZS4gKi9cbiAgcHJvdGVjdGVkIG9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+O1xuICAgIHRoaXMuX3NldFZhbHVlQW5kRGlzcGF0Y2hFdmVudHModGFyZ2V0KTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKiogV2hlbiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQsIHVwZGF0ZSB0aGUgaW5wdXQgdmFsdWUgYW5kIGNsb3NlIHRoZSBhdXRvY29tcGxldGUuICovXG4gIHByb3RlY3RlZCBvbk9wdGlvbkFycm93c1NlbGVjdGVkKGFjdGl2ZU9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICBhY3RpdmVPcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xuICAgIHRoaXMuX3NldFZhbHVlQW5kRGlzcGF0Y2hFdmVudHMoYWN0aXZlT3B0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFZhbHVlQW5kRGlzcGF0Y2hFdmVudHMoc2VsZWN0ZWRPcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgLy8gRGVzZWxlY3QgdGhlIHByZXZpb3VzIG9wdGlvbnNcbiAgICB0aGlzLm9wdGlvbnNcbiAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLmlkICE9PSBzZWxlY3RlZE9wdGlvbi5pZCAmJiBvcHRpb24uc2VsZWN0ZWQpXG4gICAgICAuZm9yRWFjaCgob3B0aW9uKSA9PiAob3B0aW9uLnNlbGVjdGVkID0gZmFsc2UpKTtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJFbGVtZW50KSB7XG4gICAgICAvLyBHaXZlbiBhIHZhbHVlLCByZXR1cm5zIHRoZSBzdHJpbmcgdGhhdCBzaG91bGQgYmUgc2hvd24gd2l0aGluIHRoZSBpbnB1dC5cbiAgICAgIGNvbnN0IHRvRGlzcGxheSA9IHRoaXMuZGlzcGxheVdpdGg/LihzZWxlY3RlZE9wdGlvbi52YWx1ZSBhcyBUKSA/PyBzZWxlY3RlZE9wdGlvbi52YWx1ZTtcblxuICAgICAgLy8gU2V0IHRoZSBvcHRpb24gdmFsdWVcbiAgICAgIC8vIEluIG9yZGVyIHRvIHN1cHBvcnQgUmVhY3Qgb25DaGFuZ2UgZXZlbnQsIHdlIGhhdmUgdG8gZ2V0IHRoZSBzZXR0ZXIgYW5kIGNhbGwgaXQuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzExNjAwI2lzc3VlY29tbWVudC0zNDU4MTMxMzBcbiAgICAgIGNvbnN0IHNldFZhbHVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZSwgJ3ZhbHVlJykhLnNldCE7XG4gICAgICBzZXRWYWx1ZS5jYWxsKHRoaXMudHJpZ2dlckVsZW1lbnQsIHRvRGlzcGxheSk7XG5cbiAgICAgIC8vIE1hbnVhbGx5IHRyaWdnZXIgdGhlIGNoYW5nZSBldmVudHNcbiAgICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KSk7XG5cbiAgICAgIC8vIERpc3BhdGNoaW5nIHRoZSBpbnB1dCBldmVudCBjaGFuZ2VzIF9sYXN0SW5wdXQsIHdoaWNoIHNob3VsZCBzdGF5IGVtcHR5IHNpbmNlIHRoZXJlJ3Mgbm8ga2V5Ym9hcmQgaW50ZXJhY3Rpb24uXG4gICAgICB0aGlzLl9sYXN0VXNlcklucHV0ID0gbnVsbDtcblxuICAgICAgLy8gQ3VzdG9tIGlucHV0IGV2ZW50IGVtaXR0ZWQgd2hlbiBpbnB1dCB2YWx1ZSBjaGFuZ2VzIGFmdGVyIGFuIG9wdGlvbiBpcyBzZWxlY3RlZFxuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQ8eyBvcHRpb246IFNiYk9wdGlvbkJhc2VFbGVtZW50PFQ+IH0+KCdpbnB1dEF1dG9jb21wbGV0ZScsIHtcbiAgICAgICAgICBkZXRhaWw6IHsgb3B0aW9uOiBzZWxlY3RlZE9wdGlvbiB9LFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlU2xvdGNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9oaWdobGlnaHRPcHRpb25zKHRoaXMudHJpZ2dlckVsZW1lbnQ/LnZhbHVlKTtcblxuICAgIC8qKlxuICAgICAqIEl0J3MgcG9zc2libGUgdG8gZmlsdGVyIG91dCBvcHRpb25zIHdpdGggYW4gb3BlbmVkIHBhbmVsIG9uIGlucHV0IGNoYW5nZS5cbiAgICAgKiBJbiB0aGlzIGNhc2UsIHRoZSBwYW5lbCdzIHBvc2l0aW9uIG11c3QgYmUgcmVjYWxjdWxhdGVkIGNvbnNpZGVyaW5nIHRoZSBuZXcgb3B0aW9uJ3MgbGlzdC5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX3NldE92ZXJsYXlQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fc2V0TmV4dEFjdGl2ZU9wdGlvbklmQXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk7XG5cbiAgICAgIC8vIElmIHRoZSBhdXRvY29tcGxldGUgaXMgb3BlbiBhbmQgdGhlIG9wdGlvbiBjb3VudCBnZXRzIHRvIHplcm8sIHdlIGNsb3NlIHRoZSBhdXRvY29tcGxldGUuXG4gICAgICBpZiAodGhpcy5fb3B0aW9uc0NvdW50ID4gMCAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgLy8gSWYgdGhlICdpbnB1dCcgaXMgZm9jdXNlZCBhbmQgdGhlIGNvdW50IG9mIG9wdGlvbnMgY2hhbmdlcyBmcm9tIDAgdG8gPiAwLFxuICAgICAgLy8gdGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgb3BlbiBhdXRvbWF0aWNhbGx5LlxuICAgICAgZG9jdW1lbnQ/LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMudHJpZ2dlckVsZW1lbnQgJiZcbiAgICAgIHRoaXMuX29wdGlvbnNDb3VudCA9PT0gMCAmJlxuICAgICAgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIHRoaXMuX29wdGlvbnNDb3VudCA9IHRoaXMub3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIF9zZXROZXh0QWN0aXZlT3B0aW9uSWZBdXRvQWN0aXZlRmlyc3RPcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKSB7XG4gICAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgdGhpcy5zZXROZXh0QWN0aXZlT3B0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRoZSBhdXRvY29tcGxldGUgc2hvdWxkIGluaGVyaXQgJ3JlYWRvbmx5JyBzdGF0ZSBmcm9tIHRoZSB0cmlnZ2VyLiAqL1xuICBwcml2YXRlIF9yZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyRWxlbWVudD8uaGFzQXR0cmlidXRlKCdyZWFkb25seScpID8/IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcG9uZW50U2V0dXAoKTogdm9pZCB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY29uZmlndXJlVHJpZ2dlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlVHJpZ2dlcigpOiB2b2lkIHtcbiAgICBjb25zdCB0cmlnZ2VyRWxlbWVudCA9ICh0aGlzLnRyaWdnZXIgPz9cbiAgICAgIHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpPy5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAodHJpZ2dlckVsZW1lbnQgPT09IHRoaXMudHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHJlbW92ZUFyaWFDb21ib0JveEF0dHJpYnV0ZXModGhpcy50cmlnZ2VyRWxlbWVudCk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJyk7XG4gICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0cmlnZ2VyRWxlbWVudDtcblxuICAgIGlmICghdGhpcy50cmlnZ2VyRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGNhbiBiZSB0aGUgZmFsbGJhY2sgb2YgdGhlIG9yaWdpbiwgd2UgZXZlbnR1YWxseSBoYXZlIHRvIHVwZGF0ZSB0aGUgcG9zaXRpb24uXG4gICAgY29uc3Qgb3JpZ2luRWxlbWVudCA9IHRoaXMub3JpZ2luRWxlbWVudDtcbiAgICBpZiAodGhpcy50cmlnZ2VyRWxlbWVudCA9PT0gb3JpZ2luRWxlbWVudCAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuX3RyaWdnZXJBdHRyaWJ1dGVPYnNlcnZlcj8ub2JzZXJ2ZSh0aGlzLnRyaWdnZXJFbGVtZW50ISwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydkaXNhYmxlZCcsICdyZWFkb25seSddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRUcmlnZ2VyQXR0cmlidXRlcyh0aGlzLnRyaWdnZXJFbGVtZW50KTtcbiAgICB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgLy8gT3BlbiB0aGUgb3ZlcmxheSBvbiBmb2N1cywgY2xpY2ssIGlucHV0IGFuZCBgQXJyb3dEb3duYCBldmVudFxuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB0aGlzLm9wZW4oKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl90cmlnZ2VyQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuKCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2lucHV0JyxcbiAgICAgIChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgY29uc3QgdmFsdWU6IHN0cmluZyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbnModmFsdWUpO1xuICAgICAgICB0aGlzLl9sYXN0VXNlcklucHV0ID0gdmFsdWU7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IHRoaXMuX3RyaWdnZXJBYm9ydENvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMuX2Nsb3NlZFBhbmVsS2V5Ym9hcmRJbnRlcmFjdGlvbihldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fdHJpZ2dlckFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIC8vIFdlIG5lZWQga2V5IGV2ZW50IHRvIHJ1biBiZWZvcmUgYW55IG90aGVyIHN1YnNjcmlwdGlvbiB0byBndWFyYW50ZWUgYSBjb3JyZWN0XG4gICAgICAgIC8vIGludGVyYWN0aW9uIHdpdGggb3RoZXIgY29tcG9uZW50cyAobmVjZXNzYXJ5IGZvciB0aGUgJ3NiYi1jaGlwLWdyb3VwJyB1c2UgY2FzZSkuXG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvLyBTZXQgb3ZlcmxheSBwb3NpdGlvbiwgd2lkdGggYW5kIG1heCBoZWlnaHRcbiAgcHJpdmF0ZSBfc2V0T3ZlcmxheVBvc2l0aW9uKG9yaWdpbkVsZW1lbnQgPSB0aGlzLm9yaWdpbkVsZW1lbnQpOiB2b2lkIHtcbiAgICAvLyBBbiB1bmRlZmluZWQgb3JpZ2luRWxlbWVudCBzaG91bGQgb25seSBvY2N1ciBpbiB0aGUgdW5saWtlbHkgZXZlbnRcbiAgICAvLyB0aGF0IHRoZSBhdXRvY29tcGxldGUgbG9zZXMgaXRzIG9yaWdpbkVsZW1lbnQgYW5kIHRyaWdnZXJFbGVtZW50IGR1cmluZyBhbiBvcGVuIHN0YXRlLlxuICAgIGlmICghb3JpZ2luRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRPdmVybGF5UG9zaXRpb24oXG4gICAgICB0aGlzLl9vdmVybGF5LFxuICAgICAgb3JpZ2luRWxlbWVudCxcbiAgICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lcixcbiAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignLnNiYi1hdXRvY29tcGxldGVfX2NvbnRhaW5lcicpISxcbiAgICAgIHRoaXMsXG4gICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogT24gb3Blbi9jbG9zZSBhbmltYXRpb24gZW5kLlxuICAgKiBJbiByYXJlIGNhc2VzIGl0IGNhbiBiZSB0aGF0IHRoZSBhbmltYXRpb25FbmQgZXZlbnQgaXMgdHJpZ2dlcmVkIHR3aWNlLlxuICAgKiBUbyBhdm9pZCBlbnRlcmluZyBhIGNvcnJ1cHQgc3RhdGUsIGV4aXQgd2hlbiBzdGF0ZSBpcyBub3QgZXhwZWN0ZWQuXG4gICAqL1xuICBwcml2YXRlIF9vbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ29wZW4nICYmIHRoaXMuc3RhdGUgPT09ICdvcGVuaW5nJykge1xuICAgICAgdGhpcy5faGFuZGxlT3BlbmluZygpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ2Nsb3NlJyAmJiB0aGlzLnN0YXRlID09PSAnY2xvc2luZycpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNsb3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPcGVuaW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSAnb3BlbmVkJztcbiAgICBpZiAodGhpcy5vcmlnaW5FbGVtZW50KSB7XG4gICAgICB0aGlzLl9vcmlnaW5SZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMub3JpZ2luRWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgdGhpcy5kaXNwYXRjaE9wZW5FdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlQ2xvc2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlID0gJ2Nsb3NlZCc7XG4gICAgdGhpcy5oaWRlUG9wb3Zlcj8uKCk7XG4gICAgdGhpcy50cmlnZ2VyRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAvLyBDbGVhcnMgdGhlIGlucHV0IGlmIHRoZXJlJ3MgdXNlciBpbnRlcmFjdGlvbiB3aXRob3V0IHNlbGVjdGlvbiAoc2VsZWN0aW9uIGNsZWFycyBgX2xhc3RVc2VySW5wdXRgKS5cbiAgICBpZiAodGhpcy5yZXF1aXJlU2VsZWN0aW9uICYmIHRoaXMudHJpZ2dlckVsZW1lbnQgJiYgdGhpcy5fbGFzdFVzZXJJbnB1dCkge1xuICAgICAgY29uc3Qgc2V0VmFsdWUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlLCAndmFsdWUnKSEuc2V0ITtcbiAgICAgIHNldFZhbHVlLmNhbGwodGhpcy50cmlnZ2VyRWxlbWVudCwgJycpO1xuICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9ucygnJyk7XG4gICAgICB0aGlzLnRyaWdnZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICAgICAgdGhpcy50cmlnZ2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIH1cbiAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgIHRoaXMuX29wdGlvbkNvbnRhaW5lci5zY3JvbGxUb3AgPSAwO1xuICAgIHRoaXMuX2VzY2FwYWJsZU92ZXJsYXlDb250cm9sbGVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLmRpc3BhdGNoQ2xvc2VFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXR0YWNoT3BlblBhbmVsRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgb3ZlcmxheSBwb3NpdGlvbiBvbiBzY3JvbGwgYW5kIHdpbmRvdyByZXNpemVcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB0aGlzLl9zZXRPdmVybGF5UG9zaXRpb24oKSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgICAvLyBXaXRob3V0IGNhcHR1cmUsIG90aGVyIHNjcm9sbCBjb250ZXh0cyB3b3VsZCBub3QgYnViYmxlIHRvIHRoaXMgZXZlbnQgbGlzdGVuZXIuXG4gICAgICAvLyBDYXB0dXJlIGFsbG93cyB1cyB0byByZWFjdCB0byBhbGwgc2Nyb2xsIGNvbnRleHRzIGluIHRoaXMgRE9NLlxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4gdGhpcy5fc2V0T3ZlcmxheVBvc2l0aW9uKCksIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBzaWduYWw6IHRoaXMuX29wZW5QYW5lbEV2ZW50c0NvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xvc2UgYXV0b2NvbXBsZXRlIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGV2KSA9PiB0aGlzLl9wb2ludGVyRG93bkxpc3RlbmVyKGV2KSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgKGV2KSA9PiB0aGlzLl9jbG9zZU9uQmFja2Ryb3BDbGljayhldiksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5fb3BlblBhbmVsRXZlbnRzQ29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnybVkaXNhYmxlZGNoYW5nZScsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbj8uZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldE5leHRBY3RpdmVPcHRpb25JZkF1dG9BY3RpdmVGaXJzdE9wdGlvbigpO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIEtleWJvYXJkIGludGVyYWN0aW9uc1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAna2V5ZG93bicsXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50KSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9vcGVuUGFuZWxFdmVudHNDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgLy8gV2UgbmVlZCBrZXkgZXZlbnQgdG8gcnVuIGJlZm9yZSBhbnkgb3RoZXIgc3Vic2NyaXB0aW9uIHRvIGd1YXJhbnRlZSBhIGNvcnJlY3RcbiAgICAgICAgLy8gaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzIChuZWNlc3NhcnkgZm9yIHRoZSAnc2JiLWNoaXAtZ3JvdXAnIHVzZSBjYXNlKS5cbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBwb2ludGVyZG93biBldmVudCB0YXJnZXQgaXMgdHJpZ2dlcmVkIG9uIHRoZSBtZW51LlxuICBwcml2YXRlIF9wb2ludGVyRG93bkxpc3RlbmVyID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICB0aGlzLl9pc1BvaW50ZXJEb3duRXZlbnRPbk1lbnUgPSBpc0V2ZW50T25FbGVtZW50KHRoaXMuX292ZXJsYXksIGV2ZW50KTtcbiAgfTtcblxuICAvLyBJZiB0aGUgY2xpY2sgaXMgb3V0c2lkZSB0aGUgYXV0b2NvbXBsZXRlLCBjbG9zZXMgdGhlIHBhbmVsLlxuICBwcml2YXRlIF9jbG9zZU9uQmFja2Ryb3BDbGljayA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2lzUG9pbnRlckRvd25FdmVudE9uTWVudSAmJlxuICAgICAgIWlzRXZlbnRPbkVsZW1lbnQodGhpcy5fb3ZlcmxheSwgZXZlbnQpICYmXG4gICAgICAhaXNFdmVudE9uRWxlbWVudCh0aGlzLm9yaWdpbkVsZW1lbnQsIGV2ZW50KVxuICAgICkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9jbG9zZWRQYW5lbEtleWJvYXJkSW50ZXJhY3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ29wZW5pbmcnIHx8IHRoaXMuc3RhdGUgPT09ICdvcGVuZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIaWdobGlnaHQgdGhlIHNlYXJjaGVkIHRleHQgb24gdGhlIG9wdGlvbnMuICovXG4gIHByaXZhdGUgX2hpZ2hsaWdodE9wdGlvbnMoc2VhcmNoVGVybT86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzZWFyY2hUZXJtID09PSBudWxsIHx8IHNlYXJjaFRlcm0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiBvcHRpb24uaGlnaGxpZ2h0KHNlYXJjaFRlcm0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIC8vIFNjcm9sbCBhcmVhcyB3aXRob3V0IGNvbnRhaW5pbmcgYW4gaW50ZXJhY3RpdmUgZWxlbWVudCB3aWxsIHJlY2VpdmUgZm9jdXMgd2hlbiB0YWJiaW5nIHRocm91Z2ggdGhlIGRvY3VtZW50LlxuICAgIC8vIElmIHRoZXJlIGFyZSBhIGxvdCBvZiBvcHRpb25zIGFuZCB3aGVuIHByZXNzaW5nIHRhYiBrZXksIHRoZSBzY3JvbGwgYXJlYSBvbiBzYmItYXV0b2NvbXBsZXRlX19vcHRpb25zIGdldHMgZm9jdXMuXG4gICAgLy8gQXMgZWxlbWVudHMgaW5zaWRlIHRoZSBwYW5lbCBzaG91bGQgbmV2ZXIgZ2V0IGZvY3VzLCB3ZSBoYXZlIHRvIGF2b2lkIHRoYXQgYnkgc2V0dGluZyB0YWJpbmRleD0tMS5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19nYXAtZml4XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYmItYXV0b2NvbXBsZXRlX19nYXAtZml4XCI+JHtvdmVybGF5R2FwRml4Q29ybmVycygpfTwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgQGFuaW1hdGlvbmVuZD0ke3RoaXMuX29uQW5pbWF0aW9uRW5kfVxuICAgICAgICAgIGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fcGFuZWxcIlxuICAgICAgICAgICR7cmVmKChvdmVybGF5UmVmPzogRWxlbWVudCkgPT4gKHRoaXMuX292ZXJsYXkgPSBvdmVybGF5UmVmIGFzIEhUTUxFbGVtZW50KSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWF1dG9jb21wbGV0ZV9fd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1hdXRvY29tcGxldGVfX29wdGlvbnNcIlxuICAgICAgICAgICAgICByb2xlPSR7IWFyaWFSb2xlT25Ib3N0ID8gdGhpcy5wYW5lbFJvbGUgOiBub3RoaW5nfVxuICAgICAgICAgICAgICBpZD0keyFhcmlhUm9sZU9uSG9zdCA/IHRoaXMub3ZlcmxheUlkIDogbm90aGluZ31cbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICR7cmVmKChjb250YWluZXJSZWYpID0+ICh0aGlzLl9vcHRpb25Db250YWluZXIgPSBjb250YWluZXJSZWYgYXMgSFRNTEVsZW1lbnQpKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9oYW5kbGVTbG90Y2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50RXZlbnRNYXAge1xuICAgIGlucHV0QXV0b2NvbXBsZXRlOiBDdXN0b21FdmVudDx7IG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8YW55PiB9PjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQ0EsTUFBTSxpQkFBaUI7SUFFRCw4QkFBMEIsTUFBQTs7QUFBcUIsTUFBQSxjQUFBLGlCQUNuRSxrQkFBa0IsdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFEdEIsU0FBQSxtQkFBK0MsWUFFcEU7QUFBQSxJQXNIQyxjQUFBO0FBQ0UsWUFBQTtBQTFHRjtBQVdBO0FBS0E7QUFLQTtBQUlBO0FBTTZCO0FBSzdCO0FBVUE7QUFPQTtBQXJEZ0IseUJBQUEsMEJBQUEsa0JBQUEsTUFBQSxzQkFBNkIsSUFBSTtBQVdqQyx5QkFBQSw0QkFBQSxrQkFBQSxNQUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAU5E;;;;;;;GAOG;AACH,qBAEM,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IAC5E,gBAAgC,IAAI,gBAAqC;IACzE,SAAS,CAAC,SAAS,SAAkC;IACrD,SAAS,CAAC,SAAS,SAAa;IAEhC,SAAS,KAAK,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAE7C;;IAOD,SAAS,CAAC,YAAY,IAAI,IAAI;IAM9B,SAAS,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAU5E;;;;;;;GAOG;AACH,qBAEM,sBAAsB,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IAC5E,gBAAgC,IAAI,gBAAqC;IACzE,SAAS,CAAC,SAAS,SAAkC;IACrD,SAAS,CAAC,SAAS,SAAa;IAEhC,SAAS,KAAK,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAE7C;;IAOD,SAAS,CAAC,YAAY,IAAI,IAAI;IAM9B,SAAS,CAAC,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAiBpE,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAMtD,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI;IA2B1D,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAMpC,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;CAGhE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,kBAAkB,EAAE,sBAAsB,CAAC;KAC5C;CACF"}
|
|
@@ -27,20 +27,18 @@ let SbbAutocompleteElement = (() => {
|
|
|
27
27
|
this.querySelectorAll?.("sbb-divider, sbb-option-hint").forEach((el) => el.negative = this.negative);
|
|
28
28
|
}
|
|
29
29
|
openedPanelKeyboardInteraction(event) {
|
|
30
|
-
if (this.state
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this.setNextActiveOption(event);
|
|
43
|
-
break;
|
|
30
|
+
if ((this.state === "opening" || this.state === "opened") && event.key === "Tab") {
|
|
31
|
+
this.close();
|
|
32
|
+
} else if (this.isOpen) {
|
|
33
|
+
switch (event.key) {
|
|
34
|
+
case "Enter":
|
|
35
|
+
this.selectByKeyboard(event);
|
|
36
|
+
break;
|
|
37
|
+
case "ArrowDown":
|
|
38
|
+
case "ArrowUp":
|
|
39
|
+
this.setNextActiveOption(event);
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
44
42
|
}
|
|
45
43
|
}
|
|
46
44
|
selectByKeyboard(event) {
|
|
@@ -84,4 +82,4 @@ let SbbAutocompleteElement = (() => {
|
|
|
84
82
|
export {
|
|
85
83
|
SbbAutocompleteElement
|
|
86
84
|
};
|
|
87
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGdldE5leHRFbGVtZW50SW5kZXggfSBmcm9tICcuLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICcuLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9vdmVybGF5LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRGl2aWRlckVsZW1lbnQgfSBmcm9tICcuLi9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiT3B0aW9uRWxlbWVudCwgU2JiT3B0aW9uSGludEVsZW1lbnQgfSBmcm9tICcuLi9vcHRpb24udHMnO1xuXG5pbXBvcnQgeyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudCB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC50cyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIE9uIFNhZmFyaSwgdGhlIGFyaWEgcm9sZSAnbGlzdGJveCcgbXVzdCBiZSBvbiB0aGUgaG9zdCBlbGVtZW50LCBvciBlbHNlIFZvaWNlT3ZlciB3b24ndCB3b3JrIGF0IGFsbC5cbiAqIE9uIHRoZSBvdGhlciBoYW5kLCBKQVdTIGFuZCBOVkRBIG5lZWQgdGhlIHJvbGUgdG8gYmUgXCJjbG9zZXJcIiB0byB0aGUgb3B0aW9ucywgb3IgZWxzZSBvcHRncm91cHMgd29uJ3Qgd29yay5cbiAqL1xuY29uc3QgYXJpYVJvbGVPbkhvc3QgPSBpc1NhZmFyaTtcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgbmF0aXZlIGlucHV0LCBpdCBkaXNwbGF5cyBhIHBhbmVsIHdpdGggYSBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItb3B0aW9uYCBvciBgc2JiLW9wdGdyb3VwYCBlbGVtZW50cyB0byB0aGUgYHNiYi1hdXRvY29tcGxldGVgLlxuICogQGNzc3Byb3AgWy0tc2JiLWF1dG9jb21wbGV0ZS16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1hdXRvY29tcGxldGUnKVxuY2xhc3MgU2JiQXV0b2NvbXBsZXRlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50PFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gYXJpYVJvbGVPbkhvc3QgPyAnbGlzdGJveCcgOiBudWxsO1xuICBwcm90ZWN0ZWQgb3ZlcmxheUlkID0gYHNiYi1hdXRvY29tcGxldGUtJHsrK25leHRJZH1gO1xuICBwcm90ZWN0ZWQgcGFuZWxSb2xlID0gJ2xpc3Rib3gnO1xuXG4gIHByb3RlY3RlZCBnZXQgb3B0aW9ucygpOiBTYmJPcHRpb25FbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYk9wdGlvbkVsZW1lbnQ8VD4+KCdzYmItb3B0aW9uJykgPz8gW10pO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ29wdGlvbnNlbGVjdGVkJywgKGU6IEV2ZW50KSA9PiB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQoZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IGdldE5leHRFbGVtZW50SW5kZXggfSBmcm9tICcuLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICcuLi9jb3JlL2RvbS50cyc7XG5pbXBvcnQgeyBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vY29yZS9vdmVybGF5LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRGl2aWRlckVsZW1lbnQgfSBmcm9tICcuLi9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiT3B0aW9uRWxlbWVudCwgU2JiT3B0aW9uSGludEVsZW1lbnQgfSBmcm9tICcuLi9vcHRpb24udHMnO1xuXG5pbXBvcnQgeyBTYmJBdXRvY29tcGxldGVCYXNlRWxlbWVudCB9IGZyb20gJy4vYXV0b2NvbXBsZXRlLWJhc2UtZWxlbWVudC50cyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIE9uIFNhZmFyaSwgdGhlIGFyaWEgcm9sZSAnbGlzdGJveCcgbXVzdCBiZSBvbiB0aGUgaG9zdCBlbGVtZW50LCBvciBlbHNlIFZvaWNlT3ZlciB3b24ndCB3b3JrIGF0IGFsbC5cbiAqIE9uIHRoZSBvdGhlciBoYW5kLCBKQVdTIGFuZCBOVkRBIG5lZWQgdGhlIHJvbGUgdG8gYmUgXCJjbG9zZXJcIiB0byB0aGUgb3B0aW9ucywgb3IgZWxzZSBvcHRncm91cHMgd29uJ3Qgd29yay5cbiAqL1xuY29uc3QgYXJpYVJvbGVPbkhvc3QgPSBpc1NhZmFyaTtcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGEgbmF0aXZlIGlucHV0LCBpdCBkaXNwbGF5cyBhIHBhbmVsIHdpdGggYSBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItb3B0aW9uYCBvciBgc2JiLW9wdGdyb3VwYCBlbGVtZW50cyB0byB0aGUgYHNiYi1hdXRvY29tcGxldGVgLlxuICogQGNzc3Byb3AgWy0tc2JiLWF1dG9jb21wbGV0ZS16LWluZGV4PXZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleCldIC0gVG8gc3BlY2lmeSBhIGN1c3RvbSBzdGFjayBvcmRlcixcbiAqIHRoZSBgei1pbmRleGAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgdGhpcyBDU1MgdmFyaWFibGUuIFRoZSBkZWZhdWx0IGB6LWluZGV4YCBvZiB0aGVcbiAqIGNvbXBvbmVudCBpcyBzZXQgdG8gYHZhcigtLXNiYi1vdmVybGF5LWRlZmF1bHQtei1pbmRleClgIHdpdGggYSB2YWx1ZSBvZiBgMTAwMGAuXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1hdXRvY29tcGxldGUnKVxuY2xhc3MgU2JiQXV0b2NvbXBsZXRlRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYkF1dG9jb21wbGV0ZUJhc2VFbGVtZW50PFQ+IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gYXJpYVJvbGVPbkhvc3QgPyAnbGlzdGJveCcgOiBudWxsO1xuICBwcm90ZWN0ZWQgb3ZlcmxheUlkID0gYHNiYi1hdXRvY29tcGxldGUtJHsrK25leHRJZH1gO1xuICBwcm90ZWN0ZWQgcGFuZWxSb2xlID0gJ2xpc3Rib3gnO1xuXG4gIHByb3RlY3RlZCBnZXQgb3B0aW9ucygpOiBTYmJPcHRpb25FbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uPFNiYk9wdGlvbkVsZW1lbnQ8VD4+KCdzYmItb3B0aW9uJykgPz8gW10pO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ29wdGlvbnNlbGVjdGVkJywgKGU6IEV2ZW50KSA9PiB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQoZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJEaXZpZGVyRWxlbWVudCB8IFNiYk9wdGlvbkhpbnRFbGVtZW50PihcbiAgICAgICdzYmItZGl2aWRlciwgc2JiLW9wdGlvbi1oaW50JyxcbiAgICApLmZvckVhY2goKGVsKSA9PiAoZWwubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbmVkUGFuZWxLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCh0aGlzLnN0YXRlID09PSAnb3BlbmluZycgfHwgdGhpcy5zdGF0ZSA9PT0gJ29wZW5lZCcpICYmIGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgdGhpcy5zZWxlY3RCeUtleWJvYXJkKGV2ZW50KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICB0aGlzLnNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RCeUtleWJvYXJkKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHRoaXMuYWN0aXZlT3B0aW9uPy5bJ3NlbGVjdFZpYVVzZXJJbnRlcmFjdGlvbiddKHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldE5leHRBY3RpdmVPcHRpb24oZXZlbnQ/OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKChvcHQpID0+ICFvcHQubWF0Y2hlcygnOnN0YXRlKGRpc2FibGVkKScpKTtcblxuICAgIC8vIFJlc2V0IHBvdGVudGlhbGx5IGFjdGl2ZSBvcHRpb25cbiAgICB0aGlzLmFjdGl2ZU9wdGlvbj8uc2V0QWN0aXZlKGZhbHNlKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuXG4gICAgaWYgKCFlbmFibGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVJdGVtSW5kZXggPSB0aGlzLmFjdGl2ZU9wdGlvblxuICAgICAgPyBlbmFibGVkT3B0aW9ucy5pbmRleE9mKHRoaXMuYWN0aXZlT3B0aW9uIGFzIFNiYk9wdGlvbkVsZW1lbnQ8VD4pXG4gICAgICA6IC0xO1xuXG4gICAgLy8gR2V0IGFuZCBhY3RpdmF0ZSB0aGUgbmV4dCBhY3RpdmUgb3B0aW9uXG4gICAgY29uc3QgbmV4dCA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZlbnQsIGFjdGl2ZUl0ZW1JbmRleCwgZW5hYmxlZE9wdGlvbnMubGVuZ3RoKTtcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IGVuYWJsZWRPcHRpb25zW25leHRdO1xuICAgIHRoaXMuYWN0aXZlT3B0aW9uLnNldEFjdGl2ZSh0cnVlKTtcbiAgICB0aGlzLnRyaWdnZXJFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIHRoaXMuYWN0aXZlT3B0aW9uLmlkKTtcbiAgICB0aGlzLmFjdGl2ZU9wdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgaWYgKHRoaXMuYXV0b1NlbGVjdEFjdGl2ZU9wdGlvbikge1xuICAgICAgdGhpcy5vbk9wdGlvbkFycm93c1NlbGVjdGVkKHRoaXMuYWN0aXZlT3B0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzZXRBY3RpdmVFbGVtZW50KCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlT3B0aW9uPy5zZXRBY3RpdmUoZmFsc2UpO1xuICAgIHRoaXMudHJpZ2dlckVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gICAgdGhpcy5hY3RpdmVPcHRpb24gPSBudWxsO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFRyaWdnZXJBdHRyaWJ1dGVzKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcbiAgICBzZXRBcmlhQ29tYm9Cb3hBdHRyaWJ1dGVzKGVsZW1lbnQsIGFyaWFSb2xlT25Ib3N0ID8gdGhpcy5pZCA6IHRoaXMub3ZlcmxheUlkLCBmYWxzZSk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1hdXRvY29tcGxldGUnOiBTYmJBdXRvY29tcGxldGVFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBVUEsSUFBSSxTQUFTO0FBTWIsTUFBTSxpQkFBaUI7SUFZakIsMEJBQXNCLE1BQUE7OzBCQUQzQixjQUFjLGtCQUFrQixDQUFDOzs7O29CQUNlO0FBQVIsRUFBQSxtQkFBUSxZQUE2QjtBQUFBLElB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
|
|
@@ -63,6 +63,7 @@ export declare class SbbCalendarElement<T = Date> extends SbbCalendarElement_bas
|
|
|
63
63
|
/** The current wide property considering property value and breakpoints. From zero to small `wide` has always to be false. */
|
|
64
64
|
private set _wide(value);
|
|
65
65
|
private get _wide();
|
|
66
|
+
private _wideInternal;
|
|
66
67
|
private accessor _calendarView;
|
|
67
68
|
private _nextCalendarView;
|
|
68
69
|
/** Information about the rendered day view; used in keyboard navigation. */
|
|
@@ -93,6 +94,8 @@ export declare class SbbCalendarElement<T = Date> extends SbbCalendarElement_bas
|
|
|
93
94
|
private _chosenMonth?;
|
|
94
95
|
/** Whether the focus should be reset on focusCell. */
|
|
95
96
|
private _resetFocus;
|
|
97
|
+
/** Whether an element inside the calendar is currently focused. */
|
|
98
|
+
private _containingFocus;
|
|
96
99
|
private accessor _initialized;
|
|
97
100
|
private _language;
|
|
98
101
|
private _mediaMatcher;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/calendar/calendar.component.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAGnB,UAAU,EAEV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;AAgCb,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAM5D,OAAO,+BAA+B,CAAC;AACvC,OAAO,YAAY,CAAC;AACpB,OAAO,0BAA0B,CAAC;AAwClC,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI;IAC3B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,CAAC,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;;AAEpD;;GAEG;AACH,qBAEM,kBAAkB,CAAC,CAAC,GAAG,IAAI,CAAE,SAAQ,uBAAuD;IAChG,OAAuB,MAAM,EAAE,cAAc,CAA4B;IACzE,gBAAuB,MAAM;;MAElB;IAEX,+CAA+C;IAC/C,SAEgB,IAAI,EAAE,OAAO,CAAS;IAEtC,6EAA6E;IAC7E,SAA4B,IAAI,EAAE,YAAY,CAAS;IAEvD;;;OAGG;IACH,SAEgB,GAAG,EAAE,CAAC,GAAG,IAAI,CAAQ;IAErC;;;OAGG;IACH,SAEgB,GAAG,EAAE,CAAC,GAAG,IAAI,CAAQ;IAErC,+DAA+D;IAC/D,SAKgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;OAEG;IACH,IACW,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAyBxC;IACD,IAAW,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAEpC;IACQ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAE3D,2CAA2C;IAC3C,SACgB,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,GAAG,IAAI,CAAQ;IAExE,+CAA+C;IAC/C,SAA6C,WAAW,EAAE,cAAc,CAAgB;IAExF,2EAA2E;IAC3E,SAEgB,WAAW,EAAE,OAAO,CAAS;IAE7C,OAAO,CAAC,YAAY,CAA4E;IAEhG,iCAAiC;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAErE,8HAA8H;IAE9H,OAAO,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"calendar.component.d.ts","sourceRoot":"","sources":["../../../../src/elements/calendar/calendar.component.ts"],"names":[],"mappings":"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"}
|