@sbb-esta/lyne-elements-experimental 3.13.2 → 3.13.5
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/custom-elements.json +66 -4
- package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts +1 -0
- package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts.map +1 -1
- package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +9 -2
- package/development/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -1
- package/development/seat-reservation/seat-reservation/seat-reservation.component.js +7 -4
- package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts +6 -2
- package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +1 -1
- package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +52 -17
- package/package.json +2 -2
- package/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts +1 -0
- package/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts.map +1 -1
- package/seat-reservation/seat-reservation/seat-reservation-base-element.js +23 -22
- package/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -1
- package/seat-reservation/seat-reservation/seat-reservation.component.js +12 -13
- package/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts +6 -2
- package/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +1 -1
- package/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +146 -125
|
@@ -560,14 +560,13 @@ let SbbSeatReservationElement = (() => {
|
|
|
560
560
|
<sbb-seat-reservation-navigation-coach
|
|
561
561
|
@selectcoach=${(event) => this._onSelectNavCoach(event)}
|
|
562
562
|
@focuscoach=${() => this._onFocusNavCoach()}
|
|
563
|
-
class="${classMap({
|
|
564
|
-
"sbb-sr__navigation-coach--hover-scroll": this.hoveredScrollCoachIndex === index
|
|
565
|
-
})}"
|
|
566
563
|
index="${index}"
|
|
567
564
|
coach-id="${navigationCoach.id}"
|
|
568
565
|
.freePlacesByType="${navigationCoach.freePlaces}"
|
|
569
566
|
.selected=${this.selectedCoachIndex === index}
|
|
570
567
|
.focused=${this.focusedCoachIndex === index}
|
|
568
|
+
.hovered=${this.hoveredScrollCoachIndex === index}
|
|
569
|
+
.nativeFocusActive=${this.hasSeatReservationNativeFocus}
|
|
571
570
|
.propertyIds="${navigationCoach.propertyIds}"
|
|
572
571
|
.travelClass="${navigationCoach.travelClass}"
|
|
573
572
|
?driver-area="${navigationCoach.isDriverArea}"
|
|
@@ -840,6 +839,9 @@ let SbbSeatReservationElement = (() => {
|
|
|
840
839
|
const selectedPlace = selectPlaceEvent.detail;
|
|
841
840
|
this.preventCoachScrollByPlaceClick = true;
|
|
842
841
|
this.isCoachGridFocusable = false;
|
|
842
|
+
if (!this.hasSeatReservationNativeFocus) {
|
|
843
|
+
this.hasSeatReservationNativeFocus = true;
|
|
844
|
+
}
|
|
843
845
|
if (!this.preventPlaceClick) {
|
|
844
846
|
this.updateSelectedSeatReservationPlaces(selectedPlace);
|
|
845
847
|
this.updateCurrentSelectedPlaceInCoach(selectedPlace);
|
|
@@ -848,6 +850,7 @@ let SbbSeatReservationElement = (() => {
|
|
|
848
850
|
_onSelectNavCoach(event) {
|
|
849
851
|
const selectedNavCoachIndex = event.detail;
|
|
850
852
|
this.isKeyboardNavigation = false;
|
|
853
|
+
this.preventCoachScrollByPlaceClick = false;
|
|
851
854
|
if (selectedNavCoachIndex !== null && selectedNavCoachIndex !== this.currSelectedCoachIndex) {
|
|
852
855
|
this.unfocusPlaceElement();
|
|
853
856
|
this.scrollToSelectedNavCoach(selectedNavCoachIndex);
|
|
@@ -934,4 +937,4 @@ let SbbSeatReservationElement = (() => {
|
|
|
934
937
|
export {
|
|
935
938
|
SbbSeatReservationElement
|
|
936
939
|
};
|
|
937
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaHRtbCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwLmpzJztcbmltcG9ydCB7IHN0eWxlTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvc3R5bGUtbWFwLmpzJztcblxuaW1wb3J0IHsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvYWNoSXRlbSxcbiAgUGxhY2UsXG4gIEVsZW1lbnREaW1lbnNpb24sXG4gIEJhc2VFbGVtZW50LFxuICBQbGFjZVNlbGVjdGlvbixcbiAgU2VhdFJlc2VydmF0aW9uLFxuICBOYXZpZ2F0aW9uQ29hY2hJdGVtLFxufSBmcm9tICcuLi9jb21tb24uanMnO1xuXG5pbXBvcnQgeyBTZWF0UmVzZXJ2YXRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2J1dHRvbi5qcyc7XG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tYXJlYS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkLmpzJztcbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvcG9wb3Zlci9wb3BvdmVyLmpzJztcblxuLyoqXG4gKiBNYWluIGNvbXBvbmVudCBmb3IgdGhlIHNlYXQgcmVzZXJ2YXRpb24uXG4gKlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbicpXG5jbGFzcyBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50IGV4dGVuZHMgU2VhdFJlc2VydmF0aW9uQmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2NvYWNoZXNIdG1sVGVtcGxhdGU/OiBUZW1wbGF0ZVJlc3VsdDtcbiAgLy8gR3JhcGhpY3MgdGhhdCBzaG91bGQgbm90IGJlIHJlbmRlcmVkIHdpdGggYW4gYXJlYVxuICBwcml2YXRlIF9ub3RBcmVhRWxlbWVudHMgPSBbXG4gICAgJ0RSSVZFUl9BUkVBJyxcbiAgICAnQ09BQ0hfUEFTU0FHRScsXG4gICAgJ0NPQUNIX1dBTExfTk9fUEFTU0FHRScsXG4gICAgJ0NPTVBBUlRNRU5UX1BBU1NBR0UnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFX0hJR0gnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFX01JRERMRScsXG4gICAgJ0NPTVBBUlRNRU5UX1BBU1NBR0VfTE9XJyxcbiAgXTtcblxuICAvLyBBcmVhIGljb25zIHRoYXQgc2hvdWxkIG5vdCBiZSBmaXhlZCBkdXJpbmcgcm90YXRpb24gd2hlbiB2ZXJ0aWNhbCBtb2RlIGlzIHNlbGVjdGVkXG4gIHByaXZhdGUgX25vdEZpeGVkUm90YXRhYmxlQXJlYUljb25zID0gWydFTlRSWV9FWElUJ107XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdoYXNOYXZpZ2F0aW9uJykpIHtcbiAgICAgIGlmICh0aGlzLmhhc05hdmlnYXRpb24pIHtcbiAgICAgICAgdGhpcy5zaGFkb3dSb290XG4gICAgICAgICAgPy5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZScpXG4gICAgICAgICAgLmZvckVhY2goKHRhYmxlKSA9PiB0YWJsZS5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4JykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaGFkb3dSb290XG4gICAgICAgICAgPy5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZScpXG4gICAgICAgICAgLmZvckVhY2goKHRhYmxlKSA9PiB0YWJsZS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgLy8gV2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSBmaXJzdCB1cGRhdGUgaXMgY29tcGxldGUgdG8gaW5pdCBkaWZmZXJlbnQgaHRtbCBlbGVtZW50IGRpbWVuc2lvbnNcbiAgICB0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5pbml0TmF2aWdhdGlvblNlbGVjdGlvbkJ5U2Nyb2xsRXZlbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICB0aGlzLl9pbml0VmVoaWNsZVNlYXRSZXNlcnZhdGlvbkNvbnN0cnVjdGlvbigpO1xuICAgIHJldHVybiB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbml0VmVoaWNsZVNlYXRSZXNlcnZhdGlvbkNvbnN0cnVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlID0gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3JfX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNyIHNiYi1zcl9fZ3JpZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbi1maXJzdC1ncmlkXCI+XG4gICAgICAgICAgICAke3RoaXMuX3JlbmRlck5hdmlnYXRpb25Db250cm9sQnV0dG9uKCdESVJFQ1RJT05fTEVGVCcpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2JiLXNyX19jb21wb25lbnRcIlxuICAgICAgICAgICAgQGtleWRvd249JHsoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZ0KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNyLWdyaWQtaW5uZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncmlkXCI+JHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uKCl9PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2FjaGVzLWdyaWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNyX193cmFwcGVyLWNvYWNoLWRlY2tzXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNyX193cmFwcGVyLWRlY2stbGFiZWxzXCI+JHt0aGlzLl9yZW5kZXJEZWNrTGFiZWxzKCl9PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGlkPVwic2JiLXNyX193cmFwcGVyLXNjcm9sbGFyZWFcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1zcl9fd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIEBzY3JvbGw9JHsoKSA9PiB0aGlzLmNvYWNoQXJlYVNjcm9sbGVuZCgpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwic2JiLXNyX19wYXJlbnQtYXJlYVwiIGNsYXNzPVwic2JiLXNyX19wYXJlbnRcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiR7Y2xhc3NNYXAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2JiLXNyX19saXN0LWRlY2tzJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NiYi1zcl9fbGlzdC1kZWNrcy0tZ2FwJzogdGhpcy5oYXNNdWx0aXBsZURlY2tzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuc2VhdFJlc2VydmF0aW9ucz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VhdFJlc2VydmF0aW9uOiBTZWF0UmVzZXJ2YXRpb24sIGNvYWNoRGVja0luZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbGA8bGkgY2xhc3M9XCJzYmItc3JfX2xpc3QtaXRlbS1kZWNrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJzYmItc3JfX2xpc3QtY29hY2hlc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJDb2FjaGVzKHNlYXRSZXNlcnZhdGlvbiwgY29hY2hEZWNrSW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPmA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uLWxhc3QtZ3JpZFwiPlxuICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uQ29udHJvbEJ1dHRvbignRElSRUNUSU9OX1JJR0hUJyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlckRlY2tMYWJlbHMoKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghdGhpcy5oYXNNdWx0aXBsZURlY2tzKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLnNlYXRSZXNlcnZhdGlvbnMubWFwKChzZWF0UmVzZXJ2YXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGRlY2tEZXNjcmlwdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgIHNlYXRSZXNlcnZhdGlvbi5kZWNrQ29hY2hMZXZlbCxcbiAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gaHRtbGA8YiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2RlY2tEZXNjcmlwdGlvbn08L2I+YDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlck5hdmlnYXRpb25Db250cm9sQnV0dG9uKGJ0bkRpcmVjdGlvbjogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaGFzTmF2aWdhdGlvbiB8fCAhdGhpcy5zZWF0UmVzZXJ2YXRpb25zKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGJ0bklkID0gYnRuRGlyZWN0aW9uID09ICdESVJFQ1RJT05fUklHSFQnID8gJ2xhc3QtdGFiLWVsZW1lbnQnIDogJ2ZpcnN0LXRhYi1lbGVtZW50JztcbiAgICBjb25zdCBidG5JY29uID1cbiAgICAgIGJ0bkRpcmVjdGlvbiA9PSAnRElSRUNUSU9OX1JJR0hUJyA/ICdjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsJyA6ICdjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGwnO1xuICAgIGNvbnN0IGJ0bkFyaWFEZXNjcmlwdGlvbiA9XG4gICAgICBidG5EaXJlY3Rpb24gPT0gJ0RJUkVDVElPTl9SSUdIVCdcbiAgICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0VORCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICAgIDogZ2V0STE4blNlYXRSZXNlcnZhdGlvbignU0VBVF9SRVNFUlZBVElPTl9CRUdJTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpO1xuICAgIGxldCBidG5EaXNhYmxlZCA9IHRydWU7XG5cbiAgICBpZiAoYnRuRGlyZWN0aW9uID09ICdESVJFQ1RJT05fTEVGVCcgJiYgdGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPiAwKSB7XG4gICAgICBidG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBidG5EaXJlY3Rpb24gPT0gJ0RJUkVDVElPTl9SSUdIVCcgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4IDxcbiAgICAgICAgdGhpcy5zZWF0UmVzZXJ2YXRpb25zW3RoaXMuY3VyclNlbGVjdGVkRGVja0luZGV4XS5jb2FjaEl0ZW1zLmxlbmd0aCAtIDFcbiAgICApIHtcbiAgICAgIGJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgPHNiYi1zZWNvbmRhcnktYnV0dG9uXG4gICAgICBAY2xpY2s9XCIkeygpID0+IHRoaXMubmF2aWdhdGVCeURpcmVjdGlvbkJ0bihidG5EaXJlY3Rpb24pfVwiXG4gICAgICBpZD1cIiR7YnRuSWR9XCJcbiAgICAgIGNsYXNzPVwic2JiLXNyX19uYXZpZ2F0aW9uLWNvbnRyb2wtYnV0dG9uXCJcbiAgICAgIHNpemU9XCJzXCJcbiAgICAgIGljb24tbmFtZT1cIiR7YnRuSWNvbn1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBhcmlhLWxhYmVsPVwiJHtidG5BcmlhRGVzY3JpcHRpb259XCJcbiAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAuZGlzYWJsZWRJbnRlcmFjdGl2ZT1cIiR7YnRuRGlzYWJsZWQgfHwgbm90aGluZ31cIlxuICAgID48L3NiYi1zZWNvbmRhcnktYnV0dG9uPmA7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJOYXZpZ2F0aW9uKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmhhc05hdmlnYXRpb24gfHwgIXRoaXMuc2VhdFJlc2VydmF0aW9ucykgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLXNyLW5hdmlnYXRpb24td3JhcHBlclwiPlxuICAgICAgPG5hdiBpZD1cInNiYi1zci1uYXZpZ2F0aW9uXCIgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvblwiPlxuICAgICAgICA8dWxcbiAgICAgICAgICBpZD1cInNiYi1zcl9fbmF2aWdhdGlvbi1saXN0LWNvYWNoZXNcIlxuICAgICAgICAgIGNsYXNzPVwic2JiLXNyLW5hdmlnYXRpb25fX2xpc3QtY29hY2hlc1wiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIiR7Z2V0STE4blNlYXRSZXNlcnZhdGlvbihcbiAgICAgICAgICAgICdTRUFUX1JFU0VSVkFUSU9OX05BVklHQVRJT04nLFxuICAgICAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICAgICApfVwiXG4gICAgICAgID5cbiAgICAgICAgICAke3RoaXMuY29hY2hOYXZEYXRhLm1hcCgobmF2aWdhdGlvbkNvYWNoOiBOYXZpZ2F0aW9uQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaHRtbGA8bGk+XG4gICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoXG4gICAgICAgICAgICAgICAgQHNlbGVjdGNvYWNoPSR7KGV2ZW50OiBDdXN0b21FdmVudDxudW1iZXI+KSA9PiB0aGlzLl9vblNlbGVjdE5hdkNvYWNoKGV2ZW50KX1cbiAgICAgICAgICAgICAgICBAZm9jdXNjb2FjaD0keygpID0+IHRoaXMuX29uRm9jdXNOYXZDb2FjaCgpfVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7XG4gICAgICAgICAgICAgICAgICAnc2JiLXNyX19uYXZpZ2F0aW9uLWNvYWNoLS1ob3Zlci1zY3JvbGwnOiB0aGlzLmhvdmVyZWRTY3JvbGxDb2FjaEluZGV4ID09PSBpbmRleCxcbiAgICAgICAgICAgICAgICB9KX1cIlxuICAgICAgICAgICAgICAgIGluZGV4PVwiJHtpbmRleH1cIlxuICAgICAgICAgICAgICAgIGNvYWNoLWlkPVwiJHtuYXZpZ2F0aW9uQ29hY2guaWR9XCJcbiAgICAgICAgICAgICAgICAuZnJlZVBsYWNlc0J5VHlwZT1cIiR7bmF2aWdhdGlvbkNvYWNoLmZyZWVQbGFjZXN9XCJcbiAgICAgICAgICAgICAgICAuc2VsZWN0ZWQ9JHt0aGlzLnNlbGVjdGVkQ29hY2hJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgICAgLmZvY3VzZWQ9JHt0aGlzLmZvY3VzZWRDb2FjaEluZGV4ID09PSBpbmRleH1cbiAgICAgICAgICAgICAgICAucHJvcGVydHlJZHM9XCIke25hdmlnYXRpb25Db2FjaC5wcm9wZXJ0eUlkc31cIlxuICAgICAgICAgICAgICAgIC50cmF2ZWxDbGFzcz1cIiR7bmF2aWdhdGlvbkNvYWNoLnRyYXZlbENsYXNzfVwiXG4gICAgICAgICAgICAgICAgP2RyaXZlci1hcmVhPVwiJHtuYXZpZ2F0aW9uQ29hY2guaXNEcml2ZXJBcmVhfVwiXG4gICAgICAgICAgICAgICAgP2ZpcnN0PVwiJHtuYXZpZ2F0aW9uQ29hY2g/LmRyaXZlckFyZWFTaWRlPy5sZWZ0fVwiXG4gICAgICAgICAgICAgICAgP2xhc3Q9XCIke25hdmlnYXRpb25Db2FjaD8uZHJpdmVyQXJlYVNpZGU/LnJpZ2h0fVwiXG4gICAgICAgICAgICAgICAgP3ZlcnRpY2FsPVwiJHt0aGlzLmFsaWduVmVydGljYWx9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2g+XG4gICAgICAgICAgICA8L2xpPmA7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L25hdj5cbiAgICA8L2Rpdj5gO1xuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcmV0dXJuc1xuICAgKiBAcGFyYW0gc2VhdFJlc2VydmF0aW9uXG4gICAqIEBwYXJhbSBkZWNrSW5kZXhcbiAgICovXG4gIHByaXZhdGUgX3JlbmRlckNvYWNoZXMoXG4gICAgc2VhdFJlc2VydmF0aW9uOiBTZWF0UmVzZXJ2YXRpb24sXG4gICAgY29hY2hEZWNrSW5kZXg6IG51bWJlcixcbiAgKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGNvbnN0IGNvYWNoZXM6IENvYWNoSXRlbVtdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShzZWF0UmVzZXJ2YXRpb24/LmNvYWNoSXRlbXMpKTtcblxuICAgIGlmICghY29hY2hlcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjb2FjaGVzLm1hcCgoY29hY2hJdGVtOiBDb2FjaEl0ZW0sIGNvYWNoSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxsaSBjbGFzcz1cInNiYi1zcl9faXRlbS1jb2FjaFwiPlxuICAgICAgICAgICR7dGhpcy5fcmVuZGVyQ29hY2hFbGVtZW50KFxuICAgICAgICAgICAgY29hY2hJdGVtLFxuICAgICAgICAgICAgY29hY2hJbmRleCxcbiAgICAgICAgICAgIGNvYWNoRGVja0luZGV4LFxuICAgICAgICAgICAgc2VhdFJlc2VydmF0aW9uLmRlY2tDb2FjaEluZGV4LFxuICAgICAgICAgICl9XG4gICAgICAgIDwvbGk+XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyQ29hY2hFbGVtZW50KFxuICAgIGNvYWNoSXRlbTogQ29hY2hJdGVtLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICAgIHBsYWNlQ29hY2hEZWNrSW5kZXg6IG51bWJlcixcbiAgKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihjb2FjaEl0ZW0uZGltZW5zaW9uKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXMgPSB0aGlzLl9nZXREZXNjcmlwdGlvblRhYmxlQ29hY2goY29hY2hJdGVtKTtcblxuICAgIHJldHVybiBodG1sYDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgIHN0eWxlPSR7c3R5bGVNYXAoe1xuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQtd2lkdGgnOiBjYWxjdWxhdGVkQ29hY2hEaW1lbnNpb24udyxcbiAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkLWhlaWdodCc6IGNhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbi5oLFxuICAgICAgfSl9XG4gICAgPlxuICAgICAgJHt0aGlzLl9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW0pfVxuICAgICAgJHt0aGlzLl9nZXRSZW5kZXJlZEdyYXBoaWNhbEVsZW1lbnRzKFxuICAgICAgICBjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzIHx8IFtdLFxuICAgICAgICBjb2FjaEl0ZW0uZGltZW5zaW9uLFxuICAgICAgICBjb2FjaEluZGV4LFxuICAgICAgICBjb2FjaERlY2tJbmRleCxcbiAgICAgICl9XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKGNvYWNoSW5kZXgsIGNvYWNoRGVja0luZGV4LCBjb2FjaEl0ZW0uc2VydmljZUVsZW1lbnRzKX1cblxuICAgICAgPHRhYmxlXG4gICAgICAgIEBmb2N1cz0keygpID0+IHRoaXMub25Gb2N1c1RhYmxlQ29hY2hBbmRQcmVzZWxlY3RQbGFjZShjb2FjaEluZGV4KX1cbiAgICAgICAgaWQ9XCJzYmItc3ItY29hY2gtJHtjb2FjaEluZGV4fVwiXG4gICAgICAgIGNsYXNzPVwic2JiLXNyLWNvYWNoLXdyYXBwZXJfX3RhYmxlXCJcbiAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cInNiYi1zci1jb2FjaC1jYXB0aW9uLSR7Y29hY2hJbmRleH1cIlxuICAgICAgPlxuICAgICAgICA8Y2FwdGlvbiBpZD1cInNiYi1zci1jb2FjaC1jYXB0aW9uLSR7Y29hY2hJbmRleH1cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHtkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXN9PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICA8L2NhcHRpb24+XG4gICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRSb3dQbGFjZXMoY29hY2hJdGVtLCBjb2FjaEluZGV4LCBjb2FjaERlY2tJbmRleCwgcGxhY2VDb2FjaERlY2tJbmRleCl9XG4gICAgICA8L3RhYmxlPlxuICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPmA7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgYm9yZGVyIGdyYXBoaWMgKENPQUNIX0JPUkRFUl9NSURETEUpIG9mIGEgY29hY2ggd2l0aCBjYWxjdWxhdGVkIGJvcmRlciBnYXAgYW5kIGNvYWNoIHdpZHRoLFxuICAgKiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgY29hY2ggaXMgd2l0aCBhIGRyaXZlciBhcmVhIG9yIHdpdGhvdXQuXG4gICAqL1xuICBwcml2YXRlIF9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW06IENvYWNoSXRlbSk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCFjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IENPQUNIX1BBU1NBR0VfV0lEVEggPSAxO1xuICAgIGNvbnN0IGFsbEVsZW1lbnRzID0gY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cztcbiAgICBjb25zdCBkcml2ZXJBcmVhID0gYWxsRWxlbWVudHM/LmZpbmQoKGVsZW1lbnQ6IEJhc2VFbGVtZW50KSA9PiBlbGVtZW50Lmljb24gPT09ICdEUklWRVJfQVJFQScpO1xuICAgIGNvbnN0IGJvcmRlcldpZHRoID0gZHJpdmVyQXJlYVxuICAgICAgPyBjb2FjaEl0ZW0uZGltZW5zaW9uLncgLSBkcml2ZXJBcmVhLmRpbWVuc2lvbi53IC0gQ09BQ0hfUEFTU0FHRV9XSURUSFxuICAgICAgOiBjb2FjaEl0ZW0uZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIICogMjtcbiAgICBjb25zdCBib3JkZXJIZWlnaHQgPSAoY29hY2hJdGVtLmRpbWVuc2lvbi5oICsgdGhpcy5jb2FjaEJvcmRlck9mZnNldCAqIDIpICogdGhpcy5iYXNlR3JpZFNpemU7XG4gICAgY29uc3QgYm9yZGVyT2Zmc2V0WCA9XG4gICAgICBkcml2ZXJBcmVhICYmIGRyaXZlckFyZWEucG9zaXRpb24ueCA9PT0gMFxuICAgICAgICA/IGRyaXZlckFyZWE/LmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemVcbiAgICAgICAgOiB0aGlzLmJhc2VHcmlkU2l6ZTtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljXG4gICAgICAgIHN0eWxlPSR7c3R5bGVNYXAoe1xuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtd2lkdGgnOiBib3JkZXJXaWR0aCAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtaGVpZ2h0JzogYm9yZGVySGVpZ2h0LFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtdG9wJzogdGhpcy5jb2FjaEJvcmRlclBhZGRpbmcgKiAtMSxcbiAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLWxlZnQnOiBib3JkZXJPZmZzZXRYLFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtcG9zaXRpb24nOiAnYWJzb2x1dGUnLFxuICAgICAgICB9KX1cbiAgICAgICAgbmFtZT1cIkNPQUNIX0JPUkRFUl9NSURETEVcIlxuICAgICAgICA/c3RyZXRjaD0ke3RydWV9XG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRSb3dQbGFjZXMoXG4gICAgY29hY2g6IENvYWNoSXRlbSxcbiAgICBjb2FjaEluZGV4OiBudW1iZXIsXG4gICAgY29hY2hEZWNrSW5kZXg6IG51bWJlcixcbiAgICBwbGFjZUNvYWNoRGVja0luZGV4OiBudW1iZXIsXG4gICk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIWNvYWNoLnBsYWNlcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gUHJlcGFpciByb3dzIHdpdGggdGhlIHBsYWNlcyB0byByZW5kZXIgYSB0YWJsZVxuICAgIGNvbnN0IHRhYmxlUm93UGxhY2VzOiBSZWNvcmQ8bnVtYmVyLCBQbGFjZVtdPiA9IHt9O1xuICAgIGZvciAoY29uc3QgcGxhY2Ugb2YgY29hY2gucGxhY2VzKSB7XG4gICAgICBpZiAoIXRhYmxlUm93UGxhY2VzW3BsYWNlLnBvc2l0aW9uLnldKSB7XG4gICAgICAgIHRhYmxlUm93UGxhY2VzW3BsYWNlLnBvc2l0aW9uLnldID0gW3BsYWNlXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYmxlUm93UGxhY2VzW3BsYWNlLnBvc2l0aW9uLnldLnB1c2gocGxhY2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRhYmxlUm93UGxhY2VzKVxuICAgICAgLm1hcCgocm93UGxhY2VzOiBQbGFjZVtdLCBpbmRleCkgPT4ge1xuICAgICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgICA8dHIgaWQ9XCJyb3ctJHtjb2FjaEluZGV4fS0ke3Jvd1BsYWNlc1swXS5wb3NpdGlvbi55fVwiIGRhdGEtcm93LWluZGV4PSR7aW5kZXh9PlxuICAgICAgICAgICAgJHt0aGlzLl9nZXRSZW5kZXJlZENvbHVtblBsYWNlcyhcbiAgICAgICAgICAgICAgcm93UGxhY2VzLFxuICAgICAgICAgICAgICBjb2FjaEluZGV4LFxuICAgICAgICAgICAgICBjb2FjaERlY2tJbmRleCxcbiAgICAgICAgICAgICAgcGxhY2VDb2FjaERlY2tJbmRleCxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgYDtcbiAgICAgIH0pXG4gICAgICAuZmxhdE1hcCgocm93VGVtcGxhdGUpID0+IHJvd1RlbXBsYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkQ29sdW1uUGxhY2VzKFxuICAgIHBsYWNlczogUGxhY2VbXSxcbiAgICBjb2FjaEluZGV4OiBudW1iZXIsXG4gICAgZGVja0luZGV4OiBudW1iZXIsXG4gICAgcGxhY2VDb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgLy9Tb3J0cyBlYWNoIHBsYWNlIGJ5IGl0cyBhc2NlbmRpbmcgeCBjb29yZGluYXRlXG4gICAgcGxhY2VzLnNvcnQoXG4gICAgICAocGxhY2VBOiBQbGFjZSwgcGxhY2VCOiBQbGFjZSkgPT4gTnVtYmVyKHBsYWNlQS5wb3NpdGlvbi54KSAtIE51bWJlcihwbGFjZUIucG9zaXRpb24ueCksXG4gICAgKTtcblxuICAgIHJldHVybiBwbGFjZXM/Lm1hcCgocGxhY2U6IFBsYWNlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKHBsYWNlLmRpbWVuc2lvbik7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihwbGFjZS5wb3NpdGlvbik7XG4gICAgICBjb25zdCByb3RhdGlvbiA9IHBsYWNlLnJvdGF0aW9uIHx8IDA7XG4gICAgICBjb25zdCB0ZXh0Um90YXRpb24gPSB0aGlzLmFsaWduVmVydGljYWwgPyAtOTAgOiAwO1xuICAgICAgY29uc3QgcGxhY2VJZCA9IHRoaXMuZ2V0UGxhY2VFbGVtZW50SWQoZGVja0luZGV4LCBjb2FjaEluZGV4LCBwbGFjZS5udW1iZXIpO1xuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDx0ZFxuICAgICAgICAgIGlkPVwiY2VsbC0ke2RlY2tJbmRleH0tJHtjb2FjaEluZGV4fS0ke3BsYWNlLnBvc2l0aW9uLnl9LSR7aW5kZXh9XCJcbiAgICAgICAgICBjbGFzcz1cImdyYXBoaWNhbC1lbGVtZW50XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sXG4gICAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNjYWxlLXZhbHVlJzogTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAgICAgICAgIGNhbGN1bGF0ZWREaW1lbnNpb24uaCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC13aWR0aCc6IGNhbGN1bGF0ZWREaW1lbnNpb24udyxcbiAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1oZWlnaHQnOiBjYWxjdWxhdGVkRGltZW5zaW9uLmgsXG4gICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtdG9wJzogY2FsY3VsYXRlZFBvc2l0aW9uLnksXG4gICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtbGVmdCc6IGNhbGN1bGF0ZWRQb3NpdGlvbi54LFxuICAgICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXJvdGF0aW9uJzogcm90YXRpb24sXG4gICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtdGV4dC1yb3RhdGlvbic6IHRleHRSb3RhdGlvbixcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgQHNlbGVjdHBsYWNlPSR7KHNlbGVjdFBsYWNlRXZlbnQ6IEN1c3RvbUV2ZW50PFBsYWNlU2VsZWN0aW9uPikgPT5cbiAgICAgICAgICAgICAgdGhpcy5fb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50KX1cbiAgICAgICAgICAgIGV4cG9ydHBhcnRzPVwic2JiLXNyLXBsYWNlLXBhcnRcIlxuICAgICAgICAgICAgaWQ9JHtwbGFjZUlkfVxuICAgICAgICAgICAgY2xhc3M9XCJzZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcIlxuICAgICAgICAgICAgdGV4dD0ke3BsYWNlLm51bWJlcn1cbiAgICAgICAgICAgIHR5cGU9JHtwbGFjZS50eXBlfVxuICAgICAgICAgICAgc3RhdGU9JHtwbGFjZS5zdGF0ZX1cbiAgICAgICAgICAgIGNvYWNoLWluZGV4PSR7Y29hY2hJbmRleH1cbiAgICAgICAgICAgIGRlY2staW5kZXg9JHtwbGFjZUNvYWNoRGVja0luZGV4fVxuICAgICAgICAgICAgZGF0YS1kZWNrLWluZGV4PSR7ZGVja0luZGV4fVxuICAgICAgICAgICAgLnByb3BlcnR5SWRzPSR7cGxhY2UucHJvcGVydHlJZHN9XG4gICAgICAgICAgICAucHJldmVudENsaWNrPSR7dGhpcy5wcmV2ZW50UGxhY2VDbGlja31cbiAgICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sPlxuICAgICAgICA8L3RkPlxuICAgICAgYDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkR3JhcGhpY2FsRWxlbWVudHMoXG4gICAgZ3JhcGhpY2FsRWxlbWVudHM6IEJhc2VFbGVtZW50W10sXG4gICAgY29hY2hEaW1lbnNpb246IEVsZW1lbnREaW1lbnNpb24sXG4gICAgY29hY2hJbmRleDogbnVtYmVyLFxuICAgIGNvYWNoRGVja0luZGV4OiBudW1iZXIsXG4gICk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIWdyYXBoaWNhbEVsZW1lbnRzKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiBncmFwaGljYWxFbGVtZW50cz8ubWFwKChncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgaWNvbiA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvbiA/PyAnJztcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IGdyYXBoaWNhbEVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnQgPVxuICAgICAgICB0aGlzLl9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucy5pbmRleE9mKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiEpID09PSAtMTtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID1cbiAgICAgICAgdGhpcy5hbGlnblZlcnRpY2FsICYmIGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnRcbiAgICAgICAgICA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwXG4gICAgICAgICAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIC8vY2hlY2sgaWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBub3QgYW4gYXJlYSBlbGVtZW50LCBzaW5jZSB0aGlzIGVsZW1lbnQgaXMgZHJhd24gd2l0aG91dCBhbiBhcmVhIGNvbXBvbmVudFxuICAgICAgaWYgKHRoaXMuX25vdEFyZWFFbGVtZW50cy5maW5kSW5kZXgoKG5vdEFyZWFFbGVtZW50KSA9PiBub3RBcmVhRWxlbWVudCA9PT0gaWNvbikgPiAtMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UmVuZGVyRWxlbWVudFdpdGhvdXRBcmVhKGdyYXBoaWNhbEVsZW1lbnQsIGVsZW1lbnRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShcbiAgICAgICAgZ3JhcGhpY2FsRWxlbWVudCxcbiAgICAgICAgZWxlbWVudEZpeGVkUm90YXRpb24sXG4gICAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICAgICBjb2FjaEluZGV4LFxuICAgICAgICBjb2FjaERlY2tJbmRleCxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogY3JlYXRlcyBhIHJlbmRlcmVkIGVsZW1lbnQgd2l0aCBhbiBhcmVhIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZ3JhcGhpY2FsRWxlbWVudFxuICAgKiBAcGFyYW0gcm90YXRpb25cbiAgICogQHBhcmFtIGNvYWNoRGltZW5zaW9uXG4gICAqIEBwYXJhbSBjb2FjaEluZGV4IHVzZWQgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgaWQgZm9yIHRoZSBwb3BvdmVyIHRyaWdnZXJcbiAgICogQHBhcmFtIGNvYWNoRGVja0luZGV4IHVzZWQgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgaWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgLy8gZm9yIFRBQkxFLCB3ZSB1c2UgdGhlIGFyZWEgY29tcG9uZW50IGl0c2VsZiB0byBkaXNwbGF5IHRoZSB0YWJsZSBpbnN0ZWFkIG9mIHRoZSBTVkcgZ3JhcGhpYy5cbiAgICAvLyBEdWUgdG8gZGlmZmVyZW50IGhlaWdodHMgYW5kIHdpZHRocywgaXQgd291bGRuJ3Qgc2hvdyBjb3JyZWN0bHkuIFRvIGNvcnJlY3QgdGhpcywgd2Ugd291bGRcbiAgICAvLyBuZWVkIGRpZmZpY3VsdCBjYWxjdWxhdGlvbnMgZm9yIHBvc2l0aW9uLCByb3RhdGlvbiBhbmQgZGltZW5zaW9uLlxuICAgIGNvbnN0IGlzTm90VGFibGVHcmFwaGljID0gZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5pbmRleE9mKCdUQUJMRScpID09PSAtMTtcbiAgICBjb25zdCBhcmVhUHJvcGVydHkgPSBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgaXNOb3RUYWJsZUdyYXBoaWMgPyBncmFwaGljYWxFbGVtZW50Lmljb24gOiBudWxsO1xuICAgIGNvbnN0IHN0cmV0Y2hIZWlnaHQgPVxuICAgICAgdGhpcy5pc0VsZW1lbnREaXJlY3RseU9uQm9yZGVyKGdyYXBoaWNhbEVsZW1lbnQsIGNvYWNoRGltZW5zaW9uKSAmJlxuICAgICAgYXJlYVByb3BlcnR5ICE9PSAnRU5UUllfRVhJVCc7XG4gICAgY29uc3QgYXJpYUxhYmVsRm9yQXJlYSA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgIDogbm90aGluZztcblxuICAgIGNvbnN0IGNhbGN1bGF0ZWREaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN0cmV0Y2hIZWlnaHQsXG4gICAgKTtcblxuICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbixcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICAvL2dlbmVyYXRlIHVuaXF1ZSBpbmRleCBudW1iZXIgZm9yIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgICBjb25zdCB0cmlnZ2VySWQgPSBgcG9wb3Zlci10cmlnZ2VyLSR7Y29hY2hEZWNrSW5kZXh9LSR7Y29hY2hJbmRleH0tJHtjYWxjdWxhdGVkUG9zaXRpb24ueH0tJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1gO1xuICAgIGxldCBlbGVtZW50TW91bnRpbmcgPSAnZnJlZSc7XG5cbiAgICBpZiAoZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi55ID09PSB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0ICogLTEpIHtcbiAgICAgIGVsZW1lbnRNb3VudGluZyA9ICd1cHBlci1ib3JkZXInO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnkgKyBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbi5oID09PVxuICAgICAgY29hY2hEaW1lbnNpb24uaCArIHRoaXMuY29hY2hCb3JkZXJPZmZzZXRcbiAgICApIHtcbiAgICAgIGVsZW1lbnRNb3VudGluZyA9ICdsb3dlci1ib3JkZXInO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWFcbiAgICAgICAgaWQ9XCIke3RyaWdnZXJJZH1cIlxuICAgICAgICBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYS0tY3Vyc29yLXBvaW50ZXInOiBhcmVhUHJvcGVydHkgIT09IG51bGwgfSl9XCJcbiAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYS13aWR0aCc6IGNhbGN1bGF0ZWREaW1lbnNpb24udyxcbiAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhLWhlaWdodCc6IGNhbGN1bGF0ZWREaW1lbnNpb24uaCxcbiAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhLXRvcCc6IGNhbGN1bGF0ZWRQb3NpdGlvbi55LFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWEtbGVmdCc6IGNhbGN1bGF0ZWRQb3NpdGlvbi54LFxuICAgICAgICB9KX1cbiAgICAgICAgbW91bnRpbmc9JHtlbGVtZW50TW91bnRpbmd9XG4gICAgICAgIGJhY2tncm91bmQ9XCJkYXJrXCJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgJHthcmVhUHJvcGVydHlcbiAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljXG4gICAgICAgICAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLW1heC13aWR0aCc6IGNhbGN1bGF0ZWREaW1lbnNpb24udyxcbiAgICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtaGVpZ2h0JzogdGhpcy5iYXNlR3JpZFNpemUsXG4gICAgICAgICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXJvdGF0aW9uJzogcm90YXRpb24sXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgbmFtZT0ke2FyZWFQcm9wZXJ0eX1cbiAgICAgICAgICAgICAgICByb2xlPVwiaW1nXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0by13aWR0aFwiXG4gICAgICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgICAgICBgXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhPlxuICAgICAgJHthcmVhUHJvcGVydHkgPyB0aGlzLl9wb3BvdmVyKHRyaWdnZXJJZCwgYXJpYUxhYmVsRm9yQXJlYSkgOiBub3RoaW5nfVxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJFbGVtZW50V2l0aG91dEFyZWEoXG4gICAgZ3JhcGhpY2FsRWxlbWVudDogQmFzZUVsZW1lbnQsXG4gICAgcm90YXRpb246IG51bWJlcixcbiAgICBjb2FjaERpbWVuc2lvbjogRWxlbWVudERpbWVuc2lvbixcbiAgKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWREaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG4gICAgY29uc3QgY2FsY3VsYXRlZFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICApO1xuXG4gICAgLy8gSWYgdGhlIGljb24gaXMgdGhlIGRyaXZlciBhcmVhLCB0aGVuIGhlcmUgY29uY2F0IHRoZSB2ZWhpY2xlIHR5cGUgdG8gZ2V0IHRoZSByaWdodCB2ZWhpY2xlIGNoYXNzaWUgaWNvblxuICAgIGNvbnN0IGljb24gPVxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5pY29uICYmIGdyYXBoaWNhbEVsZW1lbnQuaWNvbi5pbmRleE9mKCdEUklWRVJfQVJFQScpID09PSAtMVxuICAgICAgICA/IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgICA6IGdyYXBoaWNhbEVsZW1lbnQuaWNvbj8uY29uY2F0KFxuICAgICAgICAgICAgJ18nLFxuICAgICAgICAgICAgdGhpcy5zZWF0UmVzZXJ2YXRpb25zW3RoaXMuY3VyclNlbGVjdGVkRGVja0luZGV4XS52ZWhpY2xlVHlwZSxcbiAgICAgICAgICApO1xuXG4gICAgcmV0dXJuIGh0bWxgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljXG4gICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy13aWR0aCc6IGNhbGN1bGF0ZWREaW1lbnNpb24udyxcbiAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1oZWlnaHQnOiBjYWxjdWxhdGVkRGltZW5zaW9uLmgsXG4gICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtdG9wJzogY2FsY3VsYXRlZFBvc2l0aW9uLnksXG4gICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtbGVmdCc6IGNhbGN1bGF0ZWRQb3NpdGlvbi54LFxuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXBvc2l0aW9uJzogJ2Fic29sdXRlJyxcbiAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1yb3RhdGlvbic6IHJvdGF0aW9uLFxuICAgICAgfSl9XG4gICAgICBuYW1lPSR7aWNvbiA/PyBub3RoaW5nfVxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPmA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFNlcnZpY2VFbGVtZW50cyhcbiAgICBjb2FjaEluZGV4OiBudW1iZXIsXG4gICAgY29hY2hEZWNrSW5kZXg6IG51bWJlcixcbiAgICBzZXJ2aWNlRWxlbWVudHM/OiBCYXNlRWxlbWVudFtdLFxuICApOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFzZXJ2aWNlRWxlbWVudHMpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHNlcnZpY2VFbGVtZW50cz8ubWFwKChzZXJ2aWNlRWxlbWVudDogQmFzZUVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHRpdGxlRGVzY3JpcHRpb24gPSBzZXJ2aWNlRWxlbWVudC5pY29uXG4gICAgICAgID8gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihzZXJ2aWNlRWxlbWVudC5pY29uLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KVxuICAgICAgICA6IG51bGw7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKHNlcnZpY2VFbGVtZW50LmRpbWVuc2lvbik7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihzZXJ2aWNlRWxlbWVudC5wb3NpdGlvbik7XG4gICAgICBjb25zdCBlbGVtZW50Um90YXRpb24gPSBzZXJ2aWNlRWxlbWVudC5yb3RhdGlvbiB8fCAwO1xuICAgICAgY29uc3QgZWxlbWVudEZpeGVkUm90YXRpb24gPSB0aGlzLmFsaWduVmVydGljYWwgPyBlbGVtZW50Um90YXRpb24gLSA5MCA6IGVsZW1lbnRSb3RhdGlvbjtcblxuICAgICAgLy9nZW5lcmF0ZSB1bmlxdWUgaW5kZXggbnVtYmVyIGZvciB0aGUgdHJpZ2dlciBlbGVtZW50XG4gICAgICBjb25zdCB0cmlnZ2VySWQgPSBgcG9wb3Zlci10cmlnZ2VyLSR7Y29hY2hEZWNrSW5kZXh9LSR7Y29hY2hJbmRleH0tJHtjYWxjdWxhdGVkUG9zaXRpb24ueH0tJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1gO1xuXG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICBpZD1cIiR7dHJpZ2dlcklkfVwiXG4gICAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1oZWlnaHQnOiBjYWxjdWxhdGVkRGltZW5zaW9uLmgsXG4gICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXRvcCc6IGNhbGN1bGF0ZWRQb3NpdGlvbi55LFxuICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1sZWZ0JzogY2FsY3VsYXRlZFBvc2l0aW9uLngsXG4gICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXBvc2l0aW9uJzogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtcm90YXRpb24nOiBlbGVtZW50Rml4ZWRSb3RhdGlvbixcbiAgICAgICAgICB9KX1cbiAgICAgICAgICBjbGFzcz1cInNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtLWN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICBuYW1lPSR7c2VydmljZUVsZW1lbnQuaWNvbiA/PyBub3RoaW5nfVxuICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgICR7dGhpcy5fcG9wb3Zlcih0cmlnZ2VySWQsIHRpdGxlRGVzY3JpcHRpb24pfVxuICAgICAgYDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5hZ2VzIHRoZSBzZWxlY3RlZCBwbGFjZSBldmVudCB0cmlnZ2VyZWQgZnJvbSB0aGUgcGxhY2VcbiAgICogRWFjaCBzZWxlY3Rpb24gZW1pdHMgYW4gYXJyYXkgb2YgYWxsIHNlbGVjdGVkIHBsYWNlc1xuICAgKiBAcGFyYW0gc2VsZWN0UGxhY2VFdmVudFxuICAgKi9cbiAgcHJpdmF0ZSBfb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudDxQbGFjZVNlbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZFBsYWNlID0gc2VsZWN0UGxhY2VFdmVudC5kZXRhaWw7XG4gICAgLy8gV2UgaGF2ZSB0byBzZXQgcHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrIHRvIHRydWUsIHRvIHByZXZlbnQgYXV0b21hdGljIHNjcm9sbGluZyB0byB0aGUgbmV3IGZvY3VzZWQgcGxhY2VcbiAgICB0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljayA9IHRydWU7XG4gICAgdGhpcy5pc0NvYWNoR3JpZEZvY3VzYWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLnByZXZlbnRQbGFjZUNsaWNrKSB7XG4gICAgICAvLyBBZGQgcGxhY2UgdG8gcGxhY2UgY29sbGVjdGlvblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyhzZWxlY3RlZFBsYWNlKTtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkUGxhY2VJbkNvYWNoKHNlbGVjdGVkUGxhY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0TmF2Q29hY2goZXZlbnQ6IEN1c3RvbUV2ZW50PG51bWJlcj4pOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZE5hdkNvYWNoSW5kZXggPSBldmVudC5kZXRhaWw7XG4gICAgdGhpcy5pc0tleWJvYXJkTmF2aWdhdGlvbiA9IGZhbHNlO1xuXG4gICAgaWYgKHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gbnVsbCAmJiBzZWxlY3RlZE5hdkNvYWNoSW5kZXggIT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51bmZvY3VzUGxhY2VFbGVtZW50KCk7XG4gICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWROYXZDb2FjaChzZWxlY3RlZE5hdkNvYWNoSW5kZXgpO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ID09PSB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXgpIHtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkQ29hY2goKTtcbiAgICAgIHRoaXMucHJlc2VsZWN0UGxhY2VJbkNvYWNoKCk7XG4gICAgfVxuXG4gICAgLy9jbG9zZSBhbGwgb3BlbmVkIHBvcG92ZXJzXG4gICAgdGhpcy5fY2xvc2VQb3BvdmVyKCk7XG4gIH1cblxuICBwcml2YXRlIF9vbkZvY3VzTmF2Q29hY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljaykge1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICB9XG4gICAgdGhpcy5pc0F1dG9TY3JvbGxpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcG9wb3ZlciBmb3IgZXh0cmEgc2VydmljZSBpbmZvcm1hdGlvblxuICAgKiBAcGFyYW0gdHJpZ2dlcklkXG4gICAqIEBwYXJhbSBwb3BvdmVyQ29udGVudFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfcG9wb3ZlcihcbiAgICB0cmlnZ2VySWQ6IHN0cmluZyxcbiAgICBwb3BvdmVyQ29udGVudDogc3RyaW5nIHwgbnVsbCB8IHR5cGVvZiBub3RoaW5nLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXBvcG92ZXIgdHJpZ2dlcj1cIiR7dHJpZ2dlcklkfVwiIGhvdmVyLXRyaWdnZXI9XCJcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJzYmItdGV4dC1zIHNiYi1zci1wb3BvdmVyXCI+JHtwb3BvdmVyQ29udGVudH08L3A+XG4gICAgICA8L3NiYi1wb3BvdmVyPlxuICAgIGA7XG4gIH1cblxuICAvKipcbiAgICogdHJpZ2dlciB0byBjbG9zZSBhbGwgb3BlbmVkIHBvcG92ZXJzIChub3JtYWxseSBvbmx5IG9uZSBpcyBvcGVuZWQgYXQgYSB0aW1lKVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hhZG93Um9vdFxuICAgICAgPy5xdWVyeVNlbGVjdG9yQWxsKCdzYmItcG9wb3ZlcltkYXRhLXN0YXRlPVwib3BlbmVkXCJdJylcbiAgICAgIC5mb3JFYWNoKChwb3BvdmVyKSA9PiBwb3BvdmVyLnNldEF0dHJpYnV0ZSgnZGF0YS1zdGF0ZScsICdjbG9zZWQnKSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXREZXNjcmlwdGlvblRhYmxlQ29hY2goY29hY2hJdGVtOiBDb2FjaEl0ZW0pOiBzdHJpbmcge1xuICAgIGlmICghY29hY2hJdGVtLnBsYWNlcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQkxPQ0tFRF9UQUJMRV9DQVBUSU9OJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW1xuICAgICAgICBjb2FjaEl0ZW0uaWQsXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBsZXQgdGFibGVDb2FjaERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgY29uc3QgYXJlYURlc2NyaXB0aW9ucyA9IHRoaXMuX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGNvYWNoSXRlbS5ncmFwaGljRWxlbWVudHMhKTtcbiAgICBjb25zdCBzZXJ2aWNlRGVzY3JpcHRpb25zID0gdGhpcy5fZ2V0VGl0bGVEZXNjcmlwdGlvbkxpc3RTdHJpbmcoY29hY2hJdGVtLnNlcnZpY2VFbGVtZW50cyEpO1xuXG4gICAgdGFibGVDb2FjaERlc2NyaXB0aW9uID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfVEFCTEVfQ0FQVElPTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsIFtcbiAgICAgIGNvYWNoSXRlbS5pZCxcbiAgICBdKTtcblxuICAgIGlmICghdGhpcy5oYXNOYXZpZ2F0aW9uKSB7XG4gICAgICAvLyBFeHBhbmRzIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHNlYXRzIGFuZCBiaWN5Y2xlIHNwYWNlcyBhcyBpbmZvXG4gICAgICBjb25zdCBmcmVlUGxhY2VzID0gdGhpcy5nZXRBdmFpbGFibGVGcmVlUGxhY2VzTnVtRnJvbUNvYWNoKGNvYWNoSXRlbS5wbGFjZXMpO1xuICAgICAgY29uc3QgZnJlZVBsYWNlc1R4dCA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICdDT0FDSF9BVkFJTEFCTEVfTlVNQkVSX09GX1BMQUNFUycsXG4gICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgIFtmcmVlUGxhY2VzLnNlYXRzLCBmcmVlUGxhY2VzLmJpY3ljbGVzXSxcbiAgICAgICk7XG4gICAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSB0YWJsZUNvYWNoRGVzY3JpcHRpb24uY29uY2F0KCcuICcpLmNvbmNhdChmcmVlUGxhY2VzVHh0KS5jb25jYXQoJy4gJyk7XG4gICAgfVxuXG4gICAgaWYgKCEhYXJlYURlc2NyaXB0aW9ucyB8fCAhIXNlcnZpY2VEZXNjcmlwdGlvbnMpIHtcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPVxuICAgICAgICAnLiAnICsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQVZBSUxBQkxFX1NFUlZJQ0VTJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkgKyAnOiAnO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uICs9IHNlcnZpY2VEZXNjcmlwdGlvbnMgKyAnLCAnICsgYXJlYURlc2NyaXB0aW9ucyArICcuJztcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlQ29hY2hEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGRlc2NyaXB0aW9uc0VsZW1lbnRzOiBCYXNlRWxlbWVudFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bmlxdWVEZXNjcmlwdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICByZXR1cm4gZGVzY3JpcHRpb25zRWxlbWVudHNcbiAgICAgID8ubWFwKChkZXNjcmlwdGlvbkVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWNvbiA9IGRlc2NyaXB0aW9uRWxlbWVudC5pY29uO1xuICAgICAgICBpZiAoIWljb24pIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uQWxyZWF5RXhpc3QgPSB1bmlxdWVEZXNjcmlwdGlvbnMuaW5kZXhPZihpY29uKSA+IC0xO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgZGVzY3JpcHRpb25FbGVtZW50Lmljb24hLFxuICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWREZXNjcmlwdGlvbiA9XG4gICAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihpY29uKSA9PT0gLTEgJiZcbiAgICAgICAgICB0aGlzLl9ub3RBcmVhRWxlbWVudHMuaW5kZXhPZihpY29uKSA9PT0gLTE7XG5cbiAgICAgICAgaWYgKCFkZXNjcmlwdGlvbkFscmVheUV4aXN0KSB7XG4gICAgICAgICAgdW5pcXVlRGVzY3JpcHRpb25zLnB1c2goZGVzY3JpcHRpb25FbGVtZW50Lmljb24hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0cmFuc2xhdGlvbiAmJiAhZGVzY3JpcHRpb25BbHJlYXlFeGlzdCAmJiBpc1ZhbGlkRGVzY3JpcHRpb24gPyB0cmFuc2xhdGlvbiA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZGVzY3JpcHRpb24pID0+ICEhZGVzY3JpcHRpb24pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24nOiBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQW9DTSw2QkFBeUIsTUFBQTs7MEJBRDlCLGNBQWMsc0JBQXNCLENBQUM7Ozs7b0JBQ0U7QUFBUixFQUFBLG1CQUFRLFlBQTBCO0FBQUE7O0FBR3hELFdBQUEsWUFBWSxJQUFJLHNCQUFzQixJQUFJO0FB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
|
|
940
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgaHRtbCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY3VzdG9tRWxlbWVudCB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwLmpzJztcbmltcG9ydCB7IHN0eWxlTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvc3R5bGUtbWFwLmpzJztcblxuaW1wb3J0IHsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbiB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvYWNoSXRlbSxcbiAgUGxhY2UsXG4gIEVsZW1lbnREaW1lbnNpb24sXG4gIEJhc2VFbGVtZW50LFxuICBQbGFjZVNlbGVjdGlvbixcbiAgU2VhdFJlc2VydmF0aW9uLFxuICBOYXZpZ2F0aW9uQ29hY2hJdGVtLFxufSBmcm9tICcuLi9jb21tb24uanMnO1xuXG5pbXBvcnQgeyBTZWF0UmVzZXJ2YXRpb25CYXNlRWxlbWVudCB9IGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi1iYXNlLWVsZW1lbnQuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2J1dHRvbi5qcyc7XG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tYXJlYS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkLmpzJztcbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvcG9wb3Zlci9wb3BvdmVyLmpzJztcblxuLyoqXG4gKiBNYWluIGNvbXBvbmVudCBmb3IgdGhlIHNlYXQgcmVzZXJ2YXRpb24uXG4gKlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbicpXG5jbGFzcyBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50IGV4dGVuZHMgU2VhdFJlc2VydmF0aW9uQmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2NvYWNoZXNIdG1sVGVtcGxhdGU/OiBUZW1wbGF0ZVJlc3VsdDtcbiAgLy8gR3JhcGhpY3MgdGhhdCBzaG91bGQgbm90IGJlIHJlbmRlcmVkIHdpdGggYW4gYXJlYVxuICBwcml2YXRlIF9ub3RBcmVhRWxlbWVudHMgPSBbXG4gICAgJ0RSSVZFUl9BUkVBJyxcbiAgICAnQ09BQ0hfUEFTU0FHRScsXG4gICAgJ0NPQUNIX1dBTExfTk9fUEFTU0FHRScsXG4gICAgJ0NPTVBBUlRNRU5UX1BBU1NBR0UnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFX0hJR0gnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFX01JRERMRScsXG4gICAgJ0NPTVBBUlRNRU5UX1BBU1NBR0VfTE9XJyxcbiAgXTtcblxuICAvLyBBcmVhIGljb25zIHRoYXQgc2hvdWxkIG5vdCBiZSBmaXhlZCBkdXJpbmcgcm90YXRpb24gd2hlbiB2ZXJ0aWNhbCBtb2RlIGlzIHNlbGVjdGVkXG4gIHByaXZhdGUgX25vdEZpeGVkUm90YXRhYmxlQXJlYUljb25zID0gWydFTlRSWV9FWElUJ107XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdoYXNOYXZpZ2F0aW9uJykpIHtcbiAgICAgIGlmICh0aGlzLmhhc05hdmlnYXRpb24pIHtcbiAgICAgICAgdGhpcy5zaGFkb3dSb290XG4gICAgICAgICAgPy5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZScpXG4gICAgICAgICAgLmZvckVhY2goKHRhYmxlKSA9PiB0YWJsZS5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4JykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaGFkb3dSb290XG4gICAgICAgICAgPy5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZScpXG4gICAgICAgICAgLmZvckVhY2goKHRhYmxlKSA9PiB0YWJsZS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgLy8gV2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSBmaXJzdCB1cGRhdGUgaXMgY29tcGxldGUgdG8gaW5pdCBkaWZmZXJlbnQgaHRtbCBlbGVtZW50IGRpbWVuc2lvbnNcbiAgICB0aGlzLnVwZGF0ZUNvbXBsZXRlLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5pbml0TmF2aWdhdGlvblNlbGVjdGlvbkJ5U2Nyb2xsRXZlbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICB0aGlzLl9pbml0VmVoaWNsZVNlYXRSZXNlcnZhdGlvbkNvbnN0cnVjdGlvbigpO1xuICAgIHJldHVybiB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9pbml0VmVoaWNsZVNlYXRSZXNlcnZhdGlvbkNvbnN0cnVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlID0gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3JfX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNyIHNiYi1zcl9fZ3JpZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbi1maXJzdC1ncmlkXCI+XG4gICAgICAgICAgICAke3RoaXMuX3JlbmRlck5hdmlnYXRpb25Db250cm9sQnV0dG9uKCdESVJFQ1RJT05fTEVGVCcpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwic2JiLXNyX19jb21wb25lbnRcIlxuICAgICAgICAgICAgQGtleWRvd249JHsoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZ0KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNyLWdyaWQtaW5uZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncmlkXCI+JHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uKCl9PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2FjaGVzLWdyaWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNyX193cmFwcGVyLWNvYWNoLWRlY2tzXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNyX193cmFwcGVyLWRlY2stbGFiZWxzXCI+JHt0aGlzLl9yZW5kZXJEZWNrTGFiZWxzKCl9PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGlkPVwic2JiLXNyX193cmFwcGVyLXNjcm9sbGFyZWFcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNiYi1zcl9fd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIEBzY3JvbGw9JHsoKSA9PiB0aGlzLmNvYWNoQXJlYVNjcm9sbGVuZCgpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwic2JiLXNyX19wYXJlbnQtYXJlYVwiIGNsYXNzPVwic2JiLXNyX19wYXJlbnRcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiR7Y2xhc3NNYXAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2JiLXNyX19saXN0LWRlY2tzJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NiYi1zcl9fbGlzdC1kZWNrcy0tZ2FwJzogdGhpcy5oYXNNdWx0aXBsZURlY2tzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuc2VhdFJlc2VydmF0aW9ucz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VhdFJlc2VydmF0aW9uOiBTZWF0UmVzZXJ2YXRpb24sIGNvYWNoRGVja0luZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbGA8bGkgY2xhc3M9XCJzYmItc3JfX2xpc3QtaXRlbS1kZWNrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJzYmItc3JfX2xpc3QtY29hY2hlc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJDb2FjaGVzKHNlYXRSZXNlcnZhdGlvbiwgY29hY2hEZWNrSW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPmA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uLWxhc3QtZ3JpZFwiPlxuICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uQ29udHJvbEJ1dHRvbignRElSRUNUSU9OX1JJR0hUJyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlckRlY2tMYWJlbHMoKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghdGhpcy5oYXNNdWx0aXBsZURlY2tzKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLnNlYXRSZXNlcnZhdGlvbnMubWFwKChzZWF0UmVzZXJ2YXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGRlY2tEZXNjcmlwdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgIHNlYXRSZXNlcnZhdGlvbi5kZWNrQ29hY2hMZXZlbCxcbiAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gaHRtbGA8YiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2RlY2tEZXNjcmlwdGlvbn08L2I+YDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlck5hdmlnYXRpb25Db250cm9sQnV0dG9uKGJ0bkRpcmVjdGlvbjogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaGFzTmF2aWdhdGlvbiB8fCAhdGhpcy5zZWF0UmVzZXJ2YXRpb25zKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGJ0bklkID0gYnRuRGlyZWN0aW9uID09ICdESVJFQ1RJT05fUklHSFQnID8gJ2xhc3QtdGFiLWVsZW1lbnQnIDogJ2ZpcnN0LXRhYi1lbGVtZW50JztcbiAgICBjb25zdCBidG5JY29uID1cbiAgICAgIGJ0bkRpcmVjdGlvbiA9PSAnRElSRUNUSU9OX1JJR0hUJyA/ICdjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsJyA6ICdjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGwnO1xuICAgIGNvbnN0IGJ0bkFyaWFEZXNjcmlwdGlvbiA9XG4gICAgICBidG5EaXJlY3Rpb24gPT0gJ0RJUkVDVElPTl9SSUdIVCdcbiAgICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0VORCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICAgIDogZ2V0STE4blNlYXRSZXNlcnZhdGlvbignU0VBVF9SRVNFUlZBVElPTl9CRUdJTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpO1xuICAgIGxldCBidG5EaXNhYmxlZCA9IHRydWU7XG5cbiAgICBpZiAoYnRuRGlyZWN0aW9uID09ICdESVJFQ1RJT05fTEVGVCcgJiYgdGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPiAwKSB7XG4gICAgICBidG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBidG5EaXJlY3Rpb24gPT0gJ0RJUkVDVElPTl9SSUdIVCcgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4IDxcbiAgICAgICAgdGhpcy5zZWF0UmVzZXJ2YXRpb25zW3RoaXMuY3VyclNlbGVjdGVkRGVja0luZGV4XS5jb2FjaEl0ZW1zLmxlbmd0aCAtIDFcbiAgICApIHtcbiAgICAgIGJ0bkRpc2FibGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgPHNiYi1zZWNvbmRhcnktYnV0dG9uXG4gICAgICBAY2xpY2s9XCIkeygpID0+IHRoaXMubmF2aWdhdGVCeURpcmVjdGlvbkJ0bihidG5EaXJlY3Rpb24pfVwiXG4gICAgICBpZD1cIiR7YnRuSWR9XCJcbiAgICAgIGNsYXNzPVwic2JiLXNyX19uYXZpZ2F0aW9uLWNvbnRyb2wtYnV0dG9uXCJcbiAgICAgIHNpemU9XCJzXCJcbiAgICAgIGljb24tbmFtZT1cIiR7YnRuSWNvbn1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBhcmlhLWxhYmVsPVwiJHtidG5BcmlhRGVzY3JpcHRpb259XCJcbiAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAuZGlzYWJsZWRJbnRlcmFjdGl2ZT1cIiR7YnRuRGlzYWJsZWQgfHwgbm90aGluZ31cIlxuICAgID48L3NiYi1zZWNvbmRhcnktYnV0dG9uPmA7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJOYXZpZ2F0aW9uKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmhhc05hdmlnYXRpb24gfHwgIXRoaXMuc2VhdFJlc2VydmF0aW9ucykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uLXdyYXBwZXJcIj5cbiAgICAgIDxuYXYgaWQ9XCJzYmItc3ItbmF2aWdhdGlvblwiIGNsYXNzPVwic2JiLXNyLW5hdmlnYXRpb25cIj5cbiAgICAgICAgPHVsXG4gICAgICAgICAgaWQ9XCJzYmItc3JfX25hdmlnYXRpb24tbGlzdC1jb2FjaGVzXCJcbiAgICAgICAgICBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19saXN0LWNvYWNoZXNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCIke2dldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgICAnU0VBVF9SRVNFUlZBVElPTl9OQVZJR0FUSU9OJyxcbiAgICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICAgKX1cIlxuICAgICAgICA+XG4gICAgICAgICAgJHt0aGlzLmNvYWNoTmF2RGF0YS5tYXAoKG5hdmlnYXRpb25Db2FjaDogTmF2aWdhdGlvbkNvYWNoSXRlbSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxgPGxpPlxuICAgICAgICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaFxuICAgICAgICAgICAgICAgIEBzZWxlY3Rjb2FjaD0keyhldmVudDogQ3VzdG9tRXZlbnQ8bnVtYmVyPikgPT4gdGhpcy5fb25TZWxlY3ROYXZDb2FjaChldmVudCl9XG4gICAgICAgICAgICAgICAgQGZvY3VzY29hY2g9JHsoKSA9PiB0aGlzLl9vbkZvY3VzTmF2Q29hY2goKX1cbiAgICAgICAgICAgICAgICBpbmRleD1cIiR7aW5kZXh9XCJcbiAgICAgICAgICAgICAgICBjb2FjaC1pZD1cIiR7bmF2aWdhdGlvbkNvYWNoLmlkfVwiXG4gICAgICAgICAgICAgICAgLmZyZWVQbGFjZXNCeVR5cGU9XCIke25hdmlnYXRpb25Db2FjaC5mcmVlUGxhY2VzfVwiXG4gICAgICAgICAgICAgICAgLnNlbGVjdGVkPSR7dGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPT09IGluZGV4fVxuICAgICAgICAgICAgICAgIC5mb2N1c2VkPSR7dGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgICAgLmhvdmVyZWQ9JHt0aGlzLmhvdmVyZWRTY3JvbGxDb2FjaEluZGV4ID09PSBpbmRleH1cbiAgICAgICAgICAgICAgICAubmF0aXZlRm9jdXNBY3RpdmU9JHt0aGlzLmhhc1NlYXRSZXNlcnZhdGlvbk5hdGl2ZUZvY3VzfVxuICAgICAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz1cIiR7bmF2aWdhdGlvbkNvYWNoLnByb3BlcnR5SWRzfVwiXG4gICAgICAgICAgICAgICAgLnRyYXZlbENsYXNzPVwiJHtuYXZpZ2F0aW9uQ29hY2gudHJhdmVsQ2xhc3N9XCJcbiAgICAgICAgICAgICAgICA/ZHJpdmVyLWFyZWE9XCIke25hdmlnYXRpb25Db2FjaC5pc0RyaXZlckFyZWF9XCJcbiAgICAgICAgICAgICAgICA/Zmlyc3Q9XCIke25hdmlnYXRpb25Db2FjaD8uZHJpdmVyQXJlYVNpZGU/LmxlZnR9XCJcbiAgICAgICAgICAgICAgICA/bGFzdD1cIiR7bmF2aWdhdGlvbkNvYWNoPy5kcml2ZXJBcmVhU2lkZT8ucmlnaHR9XCJcbiAgICAgICAgICAgICAgICA/dmVydGljYWw9XCIke3RoaXMuYWxpZ25WZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaD5cbiAgICAgICAgICAgIDwvbGk+YDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmF2PlxuICAgIDwvZGl2PmA7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEByZXR1cm5zXG4gICAqIEBwYXJhbSBzZWF0UmVzZXJ2YXRpb25cbiAgICogQHBhcmFtIGRlY2tJbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyQ29hY2hlcyhcbiAgICBzZWF0UmVzZXJ2YXRpb246IFNlYXRSZXNlcnZhdGlvbixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgY29uc3QgY29hY2hlczogQ29hY2hJdGVtW10gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtcykpO1xuXG4gICAgaWYgKCFjb2FjaGVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNvYWNoZXMubWFwKChjb2FjaEl0ZW06IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLXNyX19pdGVtLWNvYWNoXCI+XG4gICAgICAgICAgJHt0aGlzLl9yZW5kZXJDb2FjaEVsZW1lbnQoXG4gICAgICAgICAgICBjb2FjaEl0ZW0sXG4gICAgICAgICAgICBjb2FjaEluZGV4LFxuICAgICAgICAgICAgY29hY2hEZWNrSW5kZXgsXG4gICAgICAgICAgICBzZWF0UmVzZXJ2YXRpb24uZGVja0NvYWNoSW5kZXgsXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9saT5cbiAgICAgIGA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2FjaEVsZW1lbnQoXG4gICAgY29hY2hJdGVtOiBDb2FjaEl0ZW0sXG4gICAgY29hY2hJbmRleDogbnVtYmVyLFxuICAgIGNvYWNoRGVja0luZGV4OiBudW1iZXIsXG4gICAgcGxhY2VDb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoSXRlbS5kaW1lbnNpb24pO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uVGFibGVDb2FjaFdpdGhTZXJ2aWNlcyA9IHRoaXMuX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW0pO1xuXG4gICAgcmV0dXJuIGh0bWxgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZFxuICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZC13aWR0aCc6IGNhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbi53LFxuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQtaGVpZ2h0JzogY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uLmgsXG4gICAgICB9KX1cbiAgICA+XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkQ29hY2hCb3JkZXJzKGNvYWNoSXRlbSl9XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkR3JhcGhpY2FsRWxlbWVudHMoXG4gICAgICAgIGNvYWNoSXRlbS5ncmFwaGljRWxlbWVudHMgfHwgW10sXG4gICAgICAgIGNvYWNoSXRlbS5kaW1lbnNpb24sXG4gICAgICAgIGNvYWNoSW5kZXgsXG4gICAgICAgIGNvYWNoRGVja0luZGV4LFxuICAgICAgKX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRTZXJ2aWNlRWxlbWVudHMoY29hY2hJbmRleCwgY29hY2hEZWNrSW5kZXgsIGNvYWNoSXRlbS5zZXJ2aWNlRWxlbWVudHMpfVxuXG4gICAgICA8dGFibGVcbiAgICAgICAgQGZvY3VzPSR7KCkgPT4gdGhpcy5vbkZvY3VzVGFibGVDb2FjaEFuZFByZXNlbGVjdFBsYWNlKGNvYWNoSW5kZXgpfVxuICAgICAgICBpZD1cInNiYi1zci1jb2FjaC0ke2NvYWNoSW5kZXh9XCJcbiAgICAgICAgY2xhc3M9XCJzYmItc3ItY29hY2gtd3JhcHBlcl9fdGFibGVcIlxuICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtjb2FjaEluZGV4fVwiXG4gICAgICA+XG4gICAgICAgIDxjYXB0aW9uIGlkPVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtjb2FjaEluZGV4fVwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICA8c2JiLXNjcmVlbi1yZWFkZXItb25seT4ke2Rlc2NyaXB0aW9uVGFibGVDb2FjaFdpdGhTZXJ2aWNlc308L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICAgIDwvY2FwdGlvbj5cbiAgICAgICAgJHt0aGlzLl9nZXRSZW5kZXJlZFJvd1BsYWNlcyhjb2FjaEl0ZW0sIGNvYWNoSW5kZXgsIGNvYWNoRGVja0luZGV4LCBwbGFjZUNvYWNoRGVja0luZGV4KX1cbiAgICAgIDwvdGFibGU+XG4gICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBib3JkZXIgZ3JhcGhpYyAoQ09BQ0hfQk9SREVSX01JRERMRSkgb2YgYSBjb2FjaCB3aXRoIGNhbGN1bGF0ZWQgYm9yZGVyIGdhcCBhbmQgY29hY2ggd2lkdGgsXG4gICAqIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBjb2FjaCBpcyB3aXRoIGEgZHJpdmVyIGFyZWEgb3Igd2l0aG91dC5cbiAgICovXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkQ29hY2hCb3JkZXJzKGNvYWNoSXRlbTogQ29hY2hJdGVtKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICBpZiAoIWNvYWNoSXRlbS5ncmFwaGljRWxlbWVudHMpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgQ09BQ0hfUEFTU0FHRV9XSURUSCA9IDE7XG4gICAgY29uc3QgYWxsRWxlbWVudHMgPSBjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzO1xuICAgIGNvbnN0IGRyaXZlckFyZWEgPSBhbGxFbGVtZW50cz8uZmluZCgoZWxlbWVudDogQmFzZUVsZW1lbnQpID0+IGVsZW1lbnQuaWNvbiA9PT0gJ0RSSVZFUl9BUkVBJyk7XG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBkcml2ZXJBcmVhXG4gICAgICA/IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIGRyaXZlckFyZWEuZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIXG4gICAgICA6IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIENPQUNIX1BBU1NBR0VfV0lEVEggKiAyO1xuICAgIGNvbnN0IGJvcmRlckhlaWdodCA9IChjb2FjaEl0ZW0uZGltZW5zaW9uLmggKyB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0ICogMikgKiB0aGlzLmJhc2VHcmlkU2l6ZTtcbiAgICBjb25zdCBib3JkZXJPZmZzZXRYID1cbiAgICAgIGRyaXZlckFyZWEgJiYgZHJpdmVyQXJlYS5wb3NpdGlvbi54ID09PSAwXG4gICAgICAgID8gZHJpdmVyQXJlYT8uZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZVxuICAgICAgICA6IHRoaXMuYmFzZUdyaWRTaXplO1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy13aWR0aCc6IGJvcmRlcldpZHRoICogdGhpcy5iYXNlR3JpZFNpemUsXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1oZWlnaHQnOiBib3JkZXJIZWlnaHQsXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy10b3AnOiB0aGlzLmNvYWNoQm9yZGVyUGFkZGluZyAqIC0xLFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtbGVmdCc6IGJvcmRlck9mZnNldFgsXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1wb3NpdGlvbic6ICdhYnNvbHV0ZScsXG4gICAgICAgIH0pfVxuICAgICAgICBuYW1lPVwiQ09BQ0hfQk9SREVSX01JRERMRVwiXG4gICAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFJvd1BsYWNlcyhcbiAgICBjb2FjaDogQ29hY2hJdGVtLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICAgIHBsYWNlQ29hY2hEZWNrSW5kZXg6IG51bWJlcixcbiAgKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghY29hY2gucGxhY2VzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBQcmVwYWlyIHJvd3Mgd2l0aCB0aGUgcGxhY2VzIHRvIHJlbmRlciBhIHRhYmxlXG4gICAgY29uc3QgdGFibGVSb3dQbGFjZXM6IFJlY29yZDxudW1iZXIsIFBsYWNlW10+ID0ge307XG4gICAgZm9yIChjb25zdCBwbGFjZSBvZiBjb2FjaC5wbGFjZXMpIHtcbiAgICAgIGlmICghdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0pIHtcbiAgICAgICAgdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0gPSBbcGxhY2VdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0ucHVzaChwbGFjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGFibGVSb3dQbGFjZXMpXG4gICAgICAubWFwKChyb3dQbGFjZXM6IFBsYWNlW10sIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAgIDx0ciBpZD1cInJvdy0ke2NvYWNoSW5kZXh9LSR7cm93UGxhY2VzWzBdLnBvc2l0aW9uLnl9XCIgZGF0YS1yb3ctaW5kZXg9JHtpbmRleH0+XG4gICAgICAgICAgICAke3RoaXMuX2dldFJlbmRlcmVkQ29sdW1uUGxhY2VzKFxuICAgICAgICAgICAgICByb3dQbGFjZXMsXG4gICAgICAgICAgICAgIGNvYWNoSW5kZXgsXG4gICAgICAgICAgICAgIGNvYWNoRGVja0luZGV4LFxuICAgICAgICAgICAgICBwbGFjZUNvYWNoRGVja0luZGV4LFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICBgO1xuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChyb3dUZW1wbGF0ZSkgPT4gcm93VGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMoXG4gICAgcGxhY2VzOiBQbGFjZVtdLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBkZWNrSW5kZXg6IG51bWJlcixcbiAgICBwbGFjZUNvYWNoRGVja0luZGV4OiBudW1iZXIsXG4gICk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICAvL1NvcnRzIGVhY2ggcGxhY2UgYnkgaXRzIGFzY2VuZGluZyB4IGNvb3JkaW5hdGVcbiAgICBwbGFjZXMuc29ydChcbiAgICAgIChwbGFjZUE6IFBsYWNlLCBwbGFjZUI6IFBsYWNlKSA9PiBOdW1iZXIocGxhY2VBLnBvc2l0aW9uLngpIC0gTnVtYmVyKHBsYWNlQi5wb3NpdGlvbi54KSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHBsYWNlcz8ubWFwKChwbGFjZTogUGxhY2UsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWREaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24ocGxhY2UuZGltZW5zaW9uKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKHBsYWNlLnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IHJvdGF0aW9uID0gcGxhY2Uucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IHRleHRSb3RhdGlvbiA9IHRoaXMuYWxpZ25WZXJ0aWNhbCA/IC05MCA6IDA7XG4gICAgICBjb25zdCBwbGFjZUlkID0gdGhpcy5nZXRQbGFjZUVsZW1lbnRJZChkZWNrSW5kZXgsIGNvYWNoSW5kZXgsIHBsYWNlLm51bWJlcik7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPHRkXG4gICAgICAgICAgaWQ9XCJjZWxsLSR7ZGVja0luZGV4fS0ke2NvYWNoSW5kZXh9LSR7cGxhY2UucG9zaXRpb24ueX0tJHtpbmRleH1cIlxuICAgICAgICAgIGNsYXNzPVwiZ3JhcGhpY2FsLWVsZW1lbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcbiAgICAgICAgICAgIHN0eWxlPSR7c3R5bGVNYXAoe1xuICAgICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRleHQtc2NhbGUtdmFsdWUnOiBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICBjYWxjdWxhdGVkRGltZW5zaW9uLncsXG4gICAgICAgICAgICAgICAgY2FsY3VsYXRlZERpbWVuc2lvbi5oLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWhlaWdodCc6IGNhbGN1bGF0ZWREaW1lbnNpb24uaCxcbiAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10b3AnOiBjYWxjdWxhdGVkUG9zaXRpb24ueSxcbiAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1sZWZ0JzogY2FsY3VsYXRlZFBvc2l0aW9uLngsXG4gICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtcm90YXRpb24nOiByb3RhdGlvbixcbiAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXJvdGF0aW9uJzogdGV4dFJvdGF0aW9uLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBAc2VsZWN0cGxhY2U9JHsoc2VsZWN0UGxhY2VFdmVudDogQ3VzdG9tRXZlbnQ8UGxhY2VTZWxlY3Rpb24+KSA9PlxuICAgICAgICAgICAgICB0aGlzLl9vblNlbGVjdFBsYWNlKHNlbGVjdFBsYWNlRXZlbnQpfVxuICAgICAgICAgICAgZXhwb3J0cGFydHM9XCJzYmItc3ItcGxhY2UtcGFydFwiXG4gICAgICAgICAgICBpZD0ke3BsYWNlSWR9XG4gICAgICAgICAgICBjbGFzcz1cInNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbFwiXG4gICAgICAgICAgICB0ZXh0PSR7cGxhY2UubnVtYmVyfVxuICAgICAgICAgICAgdHlwZT0ke3BsYWNlLnR5cGV9XG4gICAgICAgICAgICBzdGF0ZT0ke3BsYWNlLnN0YXRlfVxuICAgICAgICAgICAgY29hY2gtaW5kZXg9JHtjb2FjaEluZGV4fVxuICAgICAgICAgICAgZGVjay1pbmRleD0ke3BsYWNlQ29hY2hEZWNrSW5kZXh9XG4gICAgICAgICAgICBkYXRhLWRlY2staW5kZXg9JHtkZWNrSW5kZXh9XG4gICAgICAgICAgICAucHJvcGVydHlJZHM9JHtwbGFjZS5wcm9wZXJ0eUlkc31cbiAgICAgICAgICAgIC5wcmV2ZW50Q2xpY2s9JHt0aGlzLnByZXZlbnRQbGFjZUNsaWNrfVxuICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2w+XG4gICAgICAgIDwvdGQ+XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhcbiAgICBncmFwaGljYWxFbGVtZW50czogQmFzZUVsZW1lbnRbXSxcbiAgICBjb2FjaERpbWVuc2lvbjogRWxlbWVudERpbWVuc2lvbixcbiAgICBjb2FjaEluZGV4OiBudW1iZXIsXG4gICAgY29hY2hEZWNrSW5kZXg6IG51bWJlcixcbiAgKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghZ3JhcGhpY2FsRWxlbWVudHMpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIGdyYXBoaWNhbEVsZW1lbnRzPy5tYXAoKGdyYXBoaWNhbEVsZW1lbnQ6IEJhc2VFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBpY29uID0gZ3JhcGhpY2FsRWxlbWVudC5pY29uID8/ICcnO1xuICAgICAgY29uc3QgZWxlbWVudFJvdGF0aW9uID0gZ3JhcGhpY2FsRWxlbWVudC5yb3RhdGlvbiB8fCAwO1xuICAgICAgY29uc3QgaXNOb3RGaXhlZFJvdGF0aW9uR3JhcGhpY2FsRWxlbWVudCA9XG4gICAgICAgIHRoaXMuX25vdEZpeGVkUm90YXRhYmxlQXJlYUljb25zLmluZGV4T2YoZ3JhcGhpY2FsRWxlbWVudC5pY29uISkgPT09IC0xO1xuICAgICAgY29uc3QgZWxlbWVudEZpeGVkUm90YXRpb24gPVxuICAgICAgICB0aGlzLmFsaWduVmVydGljYWwgJiYgaXNOb3RGaXhlZFJvdGF0aW9uR3JhcGhpY2FsRWxlbWVudFxuICAgICAgICAgID8gZWxlbWVudFJvdGF0aW9uIC0gOTBcbiAgICAgICAgICA6IGVsZW1lbnRSb3RhdGlvbjtcblxuICAgICAgLy9jaGVjayBpZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIG5vdCBhbiBhcmVhIGVsZW1lbnQsIHNpbmNlIHRoaXMgZWxlbWVudCBpcyBkcmF3biB3aXRob3V0IGFuIGFyZWEgY29tcG9uZW50XG4gICAgICBpZiAodGhpcy5fbm90QXJlYUVsZW1lbnRzLmZpbmRJbmRleCgobm90QXJlYUVsZW1lbnQpID0+IG5vdEFyZWFFbGVtZW50ID09PSBpY29uKSA+IC0xKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRSZW5kZXJFbGVtZW50V2l0aG91dEFyZWEoZ3JhcGhpY2FsRWxlbWVudCwgZWxlbWVudFJvdGF0aW9uLCBjb2FjaERpbWVuc2lvbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0UmVuZGVyRWxlbWVudFdpdGhBcmVhKFxuICAgICAgICBncmFwaGljYWxFbGVtZW50LFxuICAgICAgICBlbGVtZW50Rml4ZWRSb3RhdGlvbixcbiAgICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgICAgIGNvYWNoSW5kZXgsXG4gICAgICAgIGNvYWNoRGVja0luZGV4LFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjcmVhdGVzIGEgcmVuZGVyZWQgZWxlbWVudCB3aXRoIGFuIGFyZWEgY29tcG9uZW50XG4gICAqIEBwYXJhbSBncmFwaGljYWxFbGVtZW50XG4gICAqIEBwYXJhbSByb3RhdGlvblxuICAgKiBAcGFyYW0gY29hY2hEaW1lbnNpb25cbiAgICogQHBhcmFtIGNvYWNoSW5kZXggdXNlZCB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBpZCBmb3IgdGhlIHBvcG92ZXIgdHJpZ2dlclxuICAgKiBAcGFyYW0gY29hY2hEZWNrSW5kZXggdXNlZCB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBpZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyRWxlbWVudFdpdGhBcmVhKFxuICAgIGdyYXBoaWNhbEVsZW1lbnQ6IEJhc2VFbGVtZW50LFxuICAgIHJvdGF0aW9uOiBudW1iZXIsXG4gICAgY29hY2hEaW1lbnNpb246IEVsZW1lbnREaW1lbnNpb24sXG4gICAgY29hY2hJbmRleDogbnVtYmVyLFxuICAgIGNvYWNoRGVja0luZGV4OiBudW1iZXIsXG4gICk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAvLyBmb3IgVEFCTEUsIHdlIHVzZSB0aGUgYXJlYSBjb21wb25lbnQgaXRzZWxmIHRvIGRpc3BsYXkgdGhlIHRhYmxlIGluc3RlYWQgb2YgdGhlIFNWRyBncmFwaGljLlxuICAgIC8vIER1ZSB0byBkaWZmZXJlbnQgaGVpZ2h0cyBhbmQgd2lkdGhzLCBpdCB3b3VsZG4ndCBzaG93IGNvcnJlY3RseS4gVG8gY29ycmVjdCB0aGlzLCB3ZSB3b3VsZFxuICAgIC8vIG5lZWQgZGlmZmljdWx0IGNhbGN1bGF0aW9ucyBmb3IgcG9zaXRpb24sIHJvdGF0aW9uIGFuZCBkaW1lbnNpb24uXG4gICAgY29uc3QgaXNOb3RUYWJsZUdyYXBoaWMgPSBncmFwaGljYWxFbGVtZW50Lmljb24/LmluZGV4T2YoJ1RBQkxFJykgPT09IC0xO1xuICAgIGNvbnN0IGFyZWFQcm9wZXJ0eSA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvbiAmJiBpc05vdFRhYmxlR3JhcGhpYyA/IGdyYXBoaWNhbEVsZW1lbnQuaWNvbiA6IG51bGw7XG4gICAgY29uc3Qgc3RyZXRjaEhlaWdodCA9XG4gICAgICB0aGlzLmlzRWxlbWVudERpcmVjdGx5T25Cb3JkZXIoZ3JhcGhpY2FsRWxlbWVudCwgY29hY2hEaW1lbnNpb24pICYmXG4gICAgICBhcmVhUHJvcGVydHkgIT09ICdFTlRSWV9FWElUJztcbiAgICBjb25zdCBhcmlhTGFiZWxGb3JBcmVhID0gZ3JhcGhpY2FsRWxlbWVudC5pY29uXG4gICAgICA/IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oZ3JhcGhpY2FsRWxlbWVudC5pY29uLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KVxuICAgICAgOiBub3RoaW5nO1xuXG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgICB0cnVlLFxuICAgICAgc3RyZXRjaEhlaWdodCxcbiAgICApO1xuXG4gICAgY29uc3QgY2FsY3VsYXRlZFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIC8vZ2VuZXJhdGUgdW5pcXVlIGluZGV4IG51bWJlciBmb3IgdGhlIHRyaWdnZXIgZWxlbWVudFxuICAgIGNvbnN0IHRyaWdnZXJJZCA9IGBwb3BvdmVyLXRyaWdnZXItJHtjb2FjaERlY2tJbmRleH0tJHtjb2FjaEluZGV4fS0ke2NhbGN1bGF0ZWRQb3NpdGlvbi54fS0ke2NhbGN1bGF0ZWRQb3NpdGlvbi55fWA7XG4gICAgbGV0IGVsZW1lbnRNb3VudGluZyA9ICdmcmVlJztcblxuICAgIGlmIChncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnkgPT09IHRoaXMuY29hY2hCb3JkZXJPZmZzZXQgKiAtMSkge1xuICAgICAgZWxlbWVudE1vdW50aW5nID0gJ3VwcGVyLWJvcmRlcic7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24ueSArIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLmggPT09XG4gICAgICBjb2FjaERpbWVuc2lvbi5oICsgdGhpcy5jb2FjaEJvcmRlck9mZnNldFxuICAgICkge1xuICAgICAgZWxlbWVudE1vdW50aW5nID0gJ2xvd2VyLWJvcmRlcic7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYVxuICAgICAgICBpZD1cIiR7dHJpZ2dlcklkfVwiXG4gICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7ICdzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhLS1jdXJzb3ItcG9pbnRlcic6IGFyZWFQcm9wZXJ0eSAhPT0gbnVsbCB9KX1cIlxuICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhLXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWEtaGVpZ2h0JzogY2FsY3VsYXRlZERpbWVuc2lvbi5oLFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWEtdG9wJzogY2FsY3VsYXRlZFBvc2l0aW9uLnksXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYS1sZWZ0JzogY2FsY3VsYXRlZFBvc2l0aW9uLngsXG4gICAgICAgIH0pfVxuICAgICAgICBtb3VudGluZz0ke2VsZW1lbnRNb3VudGluZ31cbiAgICAgICAgYmFja2dyb3VuZD1cImRhcmtcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPlxuICAgICAgICAke2FyZWFQcm9wZXJ0eVxuICAgICAgICAgID8gaHRtbGBcbiAgICAgICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtbWF4LXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1oZWlnaHQnOiB0aGlzLmJhc2VHcmlkU2l6ZSxcbiAgICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtcm90YXRpb24nOiByb3RhdGlvbixcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICBuYW1lPSR7YXJlYVByb3BlcnR5fVxuICAgICAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvLXdpZHRoXCJcbiAgICAgICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgICAgICAgIGBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWE+XG4gICAgICAke2FyZWFQcm9wZXJ0eSA/IHRoaXMuX3BvcG92ZXIodHJpZ2dlcklkLCBhcmlhTGFiZWxGb3JBcmVhKSA6IG5vdGhpbmd9XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRob3V0QXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgKTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24sXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgaWNvbiBpcyB0aGUgZHJpdmVyIGFyZWEsIHRoZW4gaGVyZSBjb25jYXQgdGhlIHZlaGljbGUgdHlwZSB0byBnZXQgdGhlIHJpZ2h0IHZlaGljbGUgY2hhc3NpZSBpY29uXG4gICAgY29uc3QgaWNvbiA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgZ3JhcGhpY2FsRWxlbWVudC5pY29uLmluZGV4T2YoJ0RSSVZFUl9BUkVBJykgPT09IC0xXG4gICAgICAgID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uXG4gICAgICAgIDogZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5jb25jYXQoXG4gICAgICAgICAgICAnXycsXG4gICAgICAgICAgICB0aGlzLnNlYXRSZXNlcnZhdGlvbnNbdGhpcy5jdXJyU2VsZWN0ZWREZWNrSW5kZXhdLnZlaGljbGVUeXBlLFxuICAgICAgICAgICk7XG5cbiAgICByZXR1cm4gaHRtbGAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgIHN0eWxlPSR7c3R5bGVNYXAoe1xuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLWhlaWdodCc6IGNhbGN1bGF0ZWREaW1lbnNpb24uaCxcbiAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy10b3AnOiBjYWxjdWxhdGVkUG9zaXRpb24ueSxcbiAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1sZWZ0JzogY2FsY3VsYXRlZFBvc2l0aW9uLngsXG4gICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtcG9zaXRpb24nOiAnYWJzb2x1dGUnLFxuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXJvdGF0aW9uJzogcm90YXRpb24sXG4gICAgICB9KX1cbiAgICAgIG5hbWU9JHtpY29uID8/IG5vdGhpbmd9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgP3N0cmV0Y2g9JHt0cnVlfVxuICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+YDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICAgIHNlcnZpY2VFbGVtZW50cz86IEJhc2VFbGVtZW50W10sXG4gICk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIXNlcnZpY2VFbGVtZW50cykgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gc2VydmljZUVsZW1lbnRzPy5tYXAoKHNlcnZpY2VFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgdGl0bGVEZXNjcmlwdGlvbiA9IHNlcnZpY2VFbGVtZW50Lmljb25cbiAgICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKHNlcnZpY2VFbGVtZW50Lmljb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWREaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24oc2VydmljZUVsZW1lbnQuZGltZW5zaW9uKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKHNlcnZpY2VFbGVtZW50LnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IHNlcnZpY2VFbGVtZW50LnJvdGF0aW9uIHx8IDA7XG4gICAgICBjb25zdCBlbGVtZW50Rml4ZWRSb3RhdGlvbiA9IHRoaXMuYWxpZ25WZXJ0aWNhbCA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwIDogZWxlbWVudFJvdGF0aW9uO1xuXG4gICAgICAvL2dlbmVyYXRlIHVuaXF1ZSBpbmRleCBudW1iZXIgZm9yIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgICAgIGNvbnN0IHRyaWdnZXJJZCA9IGBwb3BvdmVyLXRyaWdnZXItJHtjb2FjaERlY2tJbmRleH0tJHtjb2FjaEluZGV4fS0ke2NhbGN1bGF0ZWRQb3NpdGlvbi54fS0ke2NhbGN1bGF0ZWRQb3NpdGlvbi55fWA7XG5cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgIGlkPVwiJHt0cmlnZ2VySWR9XCJcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtd2lkdGgnOiBjYWxjdWxhdGVkRGltZW5zaW9uLncsXG4gICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLWhlaWdodCc6IGNhbGN1bGF0ZWREaW1lbnNpb24uaCxcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtdG9wJzogY2FsY3VsYXRlZFBvc2l0aW9uLnksXG4gICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLWxlZnQnOiBjYWxjdWxhdGVkUG9zaXRpb24ueCxcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtcG9zaXRpb24nOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1yb3RhdGlvbic6IGVsZW1lbnRGaXhlZFJvdGF0aW9uLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIGNsYXNzPVwic2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy0tY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgIG5hbWU9JHtzZXJ2aWNlRWxlbWVudC5pY29uID8/IG5vdGhpbmd9XG4gICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgICAgJHt0aGlzLl9wb3BvdmVyKHRyaWdnZXJJZCwgdGl0bGVEZXNjcmlwdGlvbil9XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbmFnZXMgdGhlIHNlbGVjdGVkIHBsYWNlIGV2ZW50IHRyaWdnZXJlZCBmcm9tIHRoZSBwbGFjZVxuICAgKiBFYWNoIHNlbGVjdGlvbiBlbWl0cyBhbiBhcnJheSBvZiBhbGwgc2VsZWN0ZWQgcGxhY2VzXG4gICAqIEBwYXJhbSBzZWxlY3RQbGFjZUV2ZW50XG4gICAqL1xuICBwcml2YXRlIF9vblNlbGVjdFBsYWNlKHNlbGVjdFBsYWNlRXZlbnQ6IEN1c3RvbUV2ZW50PFBsYWNlU2VsZWN0aW9uPik6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2UgPSBzZWxlY3RQbGFjZUV2ZW50LmRldGFpbDtcbiAgICAvLyBXZSBoYXZlIHRvIHNldCBwcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgdG8gdHJ1ZSwgdG8gcHJldmVudCBhdXRvbWF0aWMgc2Nyb2xsaW5nIHRvIHRoZSBuZXcgZm9jdXNlZCBwbGFjZVxuICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBhbnkga2V5Ym9hcmQgZXZlbnQgd2FzIHRyaWdnZXJlZCBpbnNpZGUgdGhlIHNlYXQgcmVzZXJ2YXRpb24gY29tcG9uZW50LFxuICAgIC8vIHNvIHdlIGNhbiBzYXkgdGhlIG5hdGl2ZSBicm93c2VyIGZvY3VzIGxpZXMgb24gdGhlIHRoaXMgY29tcG9uZW50XG4gICAgaWYgKCF0aGlzLmhhc1NlYXRSZXNlcnZhdGlvbk5hdGl2ZUZvY3VzKSB7XG4gICAgICB0aGlzLmhhc1NlYXRSZXNlcnZhdGlvbk5hdGl2ZUZvY3VzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucHJldmVudFBsYWNlQ2xpY2spIHtcbiAgICAgIC8vIEFkZCBwbGFjZSB0byBwbGFjZSBjb2xsZWN0aW9uXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzKHNlbGVjdGVkUGxhY2UpO1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRQbGFjZUluQ29hY2goc2VsZWN0ZWRQbGFjZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25TZWxlY3ROYXZDb2FjaChldmVudDogQ3VzdG9tRXZlbnQ8bnVtYmVyPik6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkTmF2Q29hY2hJbmRleCA9IGV2ZW50LmRldGFpbDtcbiAgICB0aGlzLmlzS2V5Ym9hcmROYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgPSBmYWxzZTtcblxuICAgIGlmIChzZWxlY3RlZE5hdkNvYWNoSW5kZXggIT09IG51bGwgJiYgc2VsZWN0ZWROYXZDb2FjaEluZGV4ICE9PSB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXgpIHtcbiAgICAgIHRoaXMudW5mb2N1c1BsYWNlRWxlbWVudCgpO1xuICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkTmF2Q29hY2goc2VsZWN0ZWROYXZDb2FjaEluZGV4KTtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkTmF2Q29hY2hJbmRleCA9PT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRTZWxlY3RlZENvYWNoKCk7XG4gICAgICB0aGlzLnByZXNlbGVjdFBsYWNlSW5Db2FjaCgpO1xuICAgIH1cblxuICAgIC8vY2xvc2UgYWxsIG9wZW5lZCBwb3BvdmVyc1xuICAgIHRoaXMuX2Nsb3NlUG9wb3ZlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25Gb2N1c05hdkNvYWNoKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2spIHtcbiAgICAgIHRoaXMucHJlc2VsZWN0UGxhY2VJbkNvYWNoKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNQbGFjZUVsZW1lbnQodGhpcy5jdXJyU2VsZWN0ZWRQbGFjZSk7XG4gICAgfVxuICAgIHRoaXMuaXNBdXRvU2Nyb2xsaW5nID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBvcG92ZXIgZm9yIGV4dHJhIHNlcnZpY2UgaW5mb3JtYXRpb25cbiAgICogQHBhcmFtIHRyaWdnZXJJZFxuICAgKiBAcGFyYW0gcG9wb3ZlckNvbnRlbnRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3BvcG92ZXIoXG4gICAgdHJpZ2dlcklkOiBzdHJpbmcsXG4gICAgcG9wb3ZlckNvbnRlbnQ6IHN0cmluZyB8IG51bGwgfCB0eXBlb2Ygbm90aGluZyxcbiAgKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1wb3BvdmVyIHRyaWdnZXI9XCIke3RyaWdnZXJJZH1cIiBob3Zlci10cmlnZ2VyPVwiXCI+XG4gICAgICAgIDxwIGNsYXNzPVwic2JiLXRleHQtcyBzYmItc3ItcG9wb3ZlclwiPiR7cG9wb3ZlckNvbnRlbnR9PC9wPlxuICAgICAgPC9zYmItcG9wb3Zlcj5cbiAgICBgO1xuICB9XG5cbiAgLyoqXG4gICAqIHRyaWdnZXIgdG8gY2xvc2UgYWxsIG9wZW5lZCBwb3BvdmVycyAobm9ybWFsbHkgb25seSBvbmUgaXMgb3BlbmVkIGF0IGEgdGltZSlcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2Nsb3NlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgID8ucXVlcnlTZWxlY3RvckFsbCgnc2JiLXBvcG92ZXJbZGF0YS1zdGF0ZT1cIm9wZW5lZFwiXScpXG4gICAgICAuZm9yRWFjaCgocG9wb3ZlcikgPT4gcG9wb3Zlci5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCAnY2xvc2VkJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGVzY3JpcHRpb25UYWJsZUNvYWNoKGNvYWNoSXRlbTogQ29hY2hJdGVtKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvYWNoSXRlbS5wbGFjZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0JMT0NLRURfVEFCTEVfQ0FQVElPTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsIFtcbiAgICAgICAgY29hY2hJdGVtLmlkLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgbGV0IHRhYmxlQ29hY2hEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGNvbnN0IGFyZWFEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzISk7XG4gICAgY29uc3Qgc2VydmljZURlc2NyaXB0aW9ucyA9IHRoaXMuX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGNvYWNoSXRlbS5zZXJ2aWNlRWxlbWVudHMhKTtcblxuICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICBjb2FjaEl0ZW0uaWQsXG4gICAgXSk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgLy8gRXhwYW5kcyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBzZWF0cyBhbmQgYmljeWNsZSBzcGFjZXMgYXMgaW5mb1xuICAgICAgY29uc3QgZnJlZVBsYWNlcyA9IHRoaXMuZ2V0QXZhaWxhYmxlRnJlZVBsYWNlc051bUZyb21Db2FjaChjb2FjaEl0ZW0ucGxhY2VzKTtcbiAgICAgIGNvbnN0IGZyZWVQbGFjZXNUeHQgPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICAnQ09BQ0hfQVZBSUxBQkxFX05VTUJFUl9PRl9QTEFDRVMnLFxuICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgICBbZnJlZVBsYWNlcy5zZWF0cywgZnJlZVBsYWNlcy5iaWN5Y2xlc10sXG4gICAgICApO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uID0gdGFibGVDb2FjaERlc2NyaXB0aW9uLmNvbmNhdCgnLiAnKS5jb25jYXQoZnJlZVBsYWNlc1R4dCkuY29uY2F0KCcuICcpO1xuICAgIH1cblxuICAgIGlmICghIWFyZWFEZXNjcmlwdGlvbnMgfHwgISFzZXJ2aWNlRGVzY3JpcHRpb25zKSB7XG4gICAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gKz1cbiAgICAgICAgJy4gJyArIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0FWQUlMQUJMRV9TRVJWSUNFUycsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpICsgJzogJztcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPSBzZXJ2aWNlRGVzY3JpcHRpb25zICsgJywgJyArIGFyZWFEZXNjcmlwdGlvbnMgKyAnLic7XG4gICAgfVxuICAgIHJldHVybiB0YWJsZUNvYWNoRGVzY3JpcHRpb247XG4gIH1cblxuICBwcml2YXRlIF9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhkZXNjcmlwdGlvbnNFbGVtZW50czogQmFzZUVsZW1lbnRbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgdW5pcXVlRGVzY3JpcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uc0VsZW1lbnRzXG4gICAgICA/Lm1hcCgoZGVzY3JpcHRpb25FbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGljb24gPSBkZXNjcmlwdGlvbkVsZW1lbnQuaWNvbjtcbiAgICAgICAgaWYgKCFpY29uKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbkFscmVheUV4aXN0ID0gdW5pcXVlRGVzY3JpcHRpb25zLmluZGV4T2YoaWNvbikgPiAtMTtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICAgIGRlc2NyaXB0aW9uRWxlbWVudC5pY29uISxcbiAgICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBpc1ZhbGlkRGVzY3JpcHRpb24gPVxuICAgICAgICAgIHRoaXMuX25vdEZpeGVkUm90YXRhYmxlQXJlYUljb25zLmluZGV4T2YoaWNvbikgPT09IC0xICYmXG4gICAgICAgICAgdGhpcy5fbm90QXJlYUVsZW1lbnRzLmluZGV4T2YoaWNvbikgPT09IC0xO1xuXG4gICAgICAgIGlmICghZGVzY3JpcHRpb25BbHJlYXlFeGlzdCkge1xuICAgICAgICAgIHVuaXF1ZURlc2NyaXB0aW9ucy5wdXNoKGRlc2NyaXB0aW9uRWxlbWVudC5pY29uISk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICEhdHJhbnNsYXRpb24gJiYgIWRlc2NyaXB0aW9uQWxyZWF5RXhpc3QgJiYgaXNWYWxpZERlc2NyaXB0aW9uID8gdHJhbnNsYXRpb24gOiBudWxsO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGRlc2NyaXB0aW9uKSA9PiAhIWRlc2NyaXB0aW9uKVxuICAgICAgLmpvaW4oJywgJyk7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zZWF0LXJlc2VydmF0aW9uJzogU2JiU2VhdFJlc2VydmF0aW9uRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -14,10 +14,14 @@ export declare class SbbSeatReservationNavigationCoachElement extends LitElement
|
|
|
14
14
|
accessor coachId: string;
|
|
15
15
|
/** Coach service property ids, which are used to display the services in the navigation */
|
|
16
16
|
accessor propertyIds: string[];
|
|
17
|
-
/**
|
|
17
|
+
/** Select coach property */
|
|
18
18
|
accessor selected: boolean;
|
|
19
|
-
/**
|
|
19
|
+
/** Focus coach property */
|
|
20
20
|
accessor focused: boolean;
|
|
21
|
+
/** Hover coach property */
|
|
22
|
+
accessor hovered: boolean;
|
|
23
|
+
/** Native focus for this navigation coach is also set when the focused property is changed */
|
|
24
|
+
accessor nativeFocusActive: boolean;
|
|
21
25
|
accessor index: number;
|
|
22
26
|
/** Representation of places available for selecting, counting seat places and bicycle places separetely */
|
|
23
27
|
accessor freePlacesByType: CoachNumberOfFreePlaces;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-reservation-navigation-coach.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAW,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC7F,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAKvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAI9E,OAAO,+CAA+C,CAAC;AACvD,OAAO,4CAA4C,CAAC;AAEpD,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE7C;;GAEG;AACH,qBAEM,wCAAyC,SAAQ,UAAU;IAC/D,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;;MAGlB;IAEX,sEAAsE;IACtE,SAEgB,OAAO,EAAE,MAAM,CAAM;IAErC,2FAA2F;IAC3F,SACgB,WAAW,EAAE,MAAM,EAAE,CAAM;IAE3C,
|
|
1
|
+
{"version":3,"file":"seat-reservation-navigation-coach.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements-experimental/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAW,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC7F,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAKvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAI9E,OAAO,+CAA+C,CAAC;AACvD,OAAO,4CAA4C,CAAC;AAEpD,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE7C;;GAEG;AACH,qBAEM,wCAAyC,SAAQ,UAAU;IAC/D,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,gBAAuB,MAAM;;;MAGlB;IAEX,sEAAsE;IACtE,SAEgB,OAAO,EAAE,MAAM,CAAM;IAErC,2FAA2F;IAC3F,SACgB,WAAW,EAAE,MAAM,EAAE,CAAM;IAE3C,4BAA4B;IAC5B,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C,2BAA2B;IAC3B,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC,2BAA2B;IAC3B,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC,8FAA8F;IAC9F,SAEgB,iBAAiB,EAAE,OAAO,CAAQ;IAElD,SAEgB,KAAK,EAAE,MAAM,CAAK;IAElC,2GAA2G;IAC3G,SACgB,gBAAgB,EAAE,uBAAuB,CAA6B;IAEtF,gCAAgC;IAChC,SACgB,WAAW,EAAE,gBAAgB,EAAE,CAAiB;IAEhE,+CAA+C;IAC/C,SAEgB,UAAU,EAAE,OAAO,CAAS;IAE5C,kDAAkD;IAClD,SAEgB,KAAK,EAAE,OAAO,CAAS;IAEvC,iDAAiD;IACjD,SAEgB,IAAI,EAAE,OAAO,CAAS;IAEtC,mCAAmC;IACnC,SAEgB,OAAO,EAAE,OAAO,CAAS;IAEzC,6DAA6D;IAC7D,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C,OAAO,CAAC,SAAS,CAAmC;cAEjC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IA2B5E;;;;OAIG;cACgB,MAAM,IAAI,cAAc;IAsB3C,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,kCAAkC;IAmC1C,OAAO,CAAC,gCAAgC;IAYxC;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,2BAA2B;CASpC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,uCAAuC,EAAE,wCAAwC,CAAC;KACnF;CACF"}
|
|
@@ -68,14 +68,6 @@ const style = css`*,
|
|
|
68
68
|
);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
:host(.sbb-sr__navigation-coach--hover-scroll) {
|
|
72
|
-
--sbb-seat-reservation-navigation-btn-background-color: var(--sbb-color-cloud);
|
|
73
|
-
--sbb-seat-reservation-navigation-btn-background-color: light-dark(
|
|
74
|
-
var(--sbb-color-cloud),
|
|
75
|
-
var(--sbb-color-midnight)
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
71
|
.sbb-sr-navigation__item-coach {
|
|
80
72
|
display: flex;
|
|
81
73
|
flex-direction: column;
|
|
@@ -167,6 +159,14 @@ const style = css`*,
|
|
|
167
159
|
color: light-dark(var(--sbb-color-black), var(--sbb-color-white));
|
|
168
160
|
}
|
|
169
161
|
|
|
162
|
+
.sbb-sr-navigation__item-coach--hovered .sbb-sr-navigation__ctrl-button {
|
|
163
|
+
--sbb-seat-reservation-navigation-btn-background-color: var(--sbb-color-cloud);
|
|
164
|
+
--sbb-seat-reservation-navigation-btn-background-color: light-dark(
|
|
165
|
+
var(--sbb-color-cloud),
|
|
166
|
+
var(--sbb-color-midnight)
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
170
|
.sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button:focus-visible:not([disabled], :disabled) {
|
|
171
171
|
--sbb-seat-reservation-navigation-btn-background-color: var(
|
|
172
172
|
--sbb-seat-reservation-navigation-btn-background-color-selected
|
|
@@ -312,7 +312,7 @@ const style = css`*,
|
|
|
312
312
|
min-width: calc(36 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));
|
|
313
313
|
}`;
|
|
314
314
|
let SbbSeatReservationNavigationCoachElement = (() => {
|
|
315
|
-
var _coachId_accessor_storage, _propertyIds_accessor_storage, _selected_accessor_storage, _focused_accessor_storage, _index_accessor_storage, _freePlacesByType_accessor_storage, _travelClass_accessor_storage, _driverArea_accessor_storage, _first_accessor_storage, _last_accessor_storage, _disable_accessor_storage, _vertical_accessor_storage, _a;
|
|
315
|
+
var _coachId_accessor_storage, _propertyIds_accessor_storage, _selected_accessor_storage, _focused_accessor_storage, _hovered_accessor_storage, _nativeFocusActive_accessor_storage, _index_accessor_storage, _freePlacesByType_accessor_storage, _travelClass_accessor_storage, _driverArea_accessor_storage, _first_accessor_storage, _last_accessor_storage, _disable_accessor_storage, _vertical_accessor_storage, _a;
|
|
316
316
|
let _classDecorators = [customElement("sbb-seat-reservation-navigation-coach")];
|
|
317
317
|
let _classDescriptor;
|
|
318
318
|
let _classExtraInitializers = [];
|
|
@@ -330,6 +330,12 @@ let SbbSeatReservationNavigationCoachElement = (() => {
|
|
|
330
330
|
let _focused_decorators;
|
|
331
331
|
let _focused_initializers = [];
|
|
332
332
|
let _focused_extraInitializers = [];
|
|
333
|
+
let _hovered_decorators;
|
|
334
|
+
let _hovered_initializers = [];
|
|
335
|
+
let _hovered_extraInitializers = [];
|
|
336
|
+
let _nativeFocusActive_decorators;
|
|
337
|
+
let _nativeFocusActive_initializers = [];
|
|
338
|
+
let _nativeFocusActive_extraInitializers = [];
|
|
333
339
|
let _index_decorators;
|
|
334
340
|
let _index_initializers = [];
|
|
335
341
|
let _index_extraInitializers = [];
|
|
@@ -361,6 +367,8 @@ let SbbSeatReservationNavigationCoachElement = (() => {
|
|
|
361
367
|
__privateAdd(this, _propertyIds_accessor_storage);
|
|
362
368
|
__privateAdd(this, _selected_accessor_storage);
|
|
363
369
|
__privateAdd(this, _focused_accessor_storage);
|
|
370
|
+
__privateAdd(this, _hovered_accessor_storage);
|
|
371
|
+
__privateAdd(this, _nativeFocusActive_accessor_storage);
|
|
364
372
|
__privateAdd(this, _index_accessor_storage);
|
|
365
373
|
__privateAdd(this, _freePlacesByType_accessor_storage);
|
|
366
374
|
__privateAdd(this, _travelClass_accessor_storage);
|
|
@@ -373,7 +381,9 @@ let SbbSeatReservationNavigationCoachElement = (() => {
|
|
|
373
381
|
__privateSet(this, _propertyIds_accessor_storage, (__runInitializers(this, _coachId_extraInitializers), __runInitializers(this, _propertyIds_initializers, [])));
|
|
374
382
|
__privateSet(this, _selected_accessor_storage, (__runInitializers(this, _propertyIds_extraInitializers), __runInitializers(this, _selected_initializers, false)));
|
|
375
383
|
__privateSet(this, _focused_accessor_storage, (__runInitializers(this, _selected_extraInitializers), __runInitializers(this, _focused_initializers, false)));
|
|
376
|
-
__privateSet(this,
|
|
384
|
+
__privateSet(this, _hovered_accessor_storage, (__runInitializers(this, _focused_extraInitializers), __runInitializers(this, _hovered_initializers, false)));
|
|
385
|
+
__privateSet(this, _nativeFocusActive_accessor_storage, (__runInitializers(this, _hovered_extraInitializers), __runInitializers(this, _nativeFocusActive_initializers, true)));
|
|
386
|
+
__privateSet(this, _index_accessor_storage, (__runInitializers(this, _nativeFocusActive_extraInitializers), __runInitializers(this, _index_initializers, 0)));
|
|
377
387
|
__privateSet(this, _freePlacesByType_accessor_storage, (__runInitializers(this, _index_extraInitializers), __runInitializers(this, _freePlacesByType_initializers, { seats: 0, bicycles: 0 })));
|
|
378
388
|
__privateSet(this, _travelClass_accessor_storage, (__runInitializers(this, _freePlacesByType_extraInitializers), __runInitializers(this, _travelClass_initializers, ["ANY_CLASS"])));
|
|
379
389
|
__privateSet(this, _driverArea_accessor_storage, (__runInitializers(this, _travelClass_extraInitializers), __runInitializers(this, _driverArea_initializers, false)));
|
|
@@ -397,20 +407,34 @@ let SbbSeatReservationNavigationCoachElement = (() => {
|
|
|
397
407
|
set propertyIds(value) {
|
|
398
408
|
__privateSet(this, _propertyIds_accessor_storage, value);
|
|
399
409
|
}
|
|
400
|
-
/**
|
|
410
|
+
/** Select coach property */
|
|
401
411
|
get selected() {
|
|
402
412
|
return __privateGet(this, _selected_accessor_storage);
|
|
403
413
|
}
|
|
404
414
|
set selected(value) {
|
|
405
415
|
__privateSet(this, _selected_accessor_storage, value);
|
|
406
416
|
}
|
|
407
|
-
/**
|
|
417
|
+
/** Focus coach property */
|
|
408
418
|
get focused() {
|
|
409
419
|
return __privateGet(this, _focused_accessor_storage);
|
|
410
420
|
}
|
|
411
421
|
set focused(value) {
|
|
412
422
|
__privateSet(this, _focused_accessor_storage, value);
|
|
413
423
|
}
|
|
424
|
+
/** Hover coach property */
|
|
425
|
+
get hovered() {
|
|
426
|
+
return __privateGet(this, _hovered_accessor_storage);
|
|
427
|
+
}
|
|
428
|
+
set hovered(value) {
|
|
429
|
+
__privateSet(this, _hovered_accessor_storage, value);
|
|
430
|
+
}
|
|
431
|
+
/** Native focus for this navigation coach is also set when the focused property is changed */
|
|
432
|
+
get nativeFocusActive() {
|
|
433
|
+
return __privateGet(this, _nativeFocusActive_accessor_storage);
|
|
434
|
+
}
|
|
435
|
+
set nativeFocusActive(value) {
|
|
436
|
+
__privateSet(this, _nativeFocusActive_accessor_storage, value);
|
|
437
|
+
}
|
|
414
438
|
get index() {
|
|
415
439
|
return __privateGet(this, _index_accessor_storage);
|
|
416
440
|
}
|
|
@@ -471,13 +495,15 @@ let SbbSeatReservationNavigationCoachElement = (() => {
|
|
|
471
495
|
if (changedProperties.has("selected")) {
|
|
472
496
|
const selectedNavButtonElement = this.shadowRoot?.querySelector(".sbb-sr-navigation__ctrl-button");
|
|
473
497
|
if (this.selected && selectedNavButtonElement) {
|
|
474
|
-
|
|
498
|
+
if (this.nativeFocusActive) {
|
|
499
|
+
selectedNavButtonElement.focus();
|
|
500
|
+
}
|
|
475
501
|
this.dispatchEvent(new Event("focuscoach", { bubbles: true, composed: true }));
|
|
476
502
|
}
|
|
477
503
|
}
|
|
478
504
|
if (changedProperties.has("focused") && this.focused) {
|
|
479
505
|
const focusedNavButtonElement = this.shadowRoot?.querySelector(".sbb-sr-navigation__ctrl-button");
|
|
480
|
-
if (focusedNavButtonElement) {
|
|
506
|
+
if (focusedNavButtonElement && this.nativeFocusActive) {
|
|
481
507
|
focusedNavButtonElement.focus();
|
|
482
508
|
}
|
|
483
509
|
}
|
|
@@ -494,7 +520,8 @@ let SbbSeatReservationNavigationCoachElement = (() => {
|
|
|
494
520
|
"sbb-sr-navigation__item-coach": true,
|
|
495
521
|
"last-coach": this.last,
|
|
496
522
|
"first-coach": this.first,
|
|
497
|
-
"sbb-sr-navigation__item-coach--selected": this.selected
|
|
523
|
+
"sbb-sr-navigation__item-coach--selected": this.selected,
|
|
524
|
+
"sbb-sr-navigation__item-coach--hovered": this.hovered
|
|
498
525
|
})}"
|
|
499
526
|
>
|
|
500
527
|
${this._getNavigationButton()}
|
|
@@ -594,12 +621,14 @@ let SbbSeatReservationNavigationCoachElement = (() => {
|
|
|
594
621
|
return null;
|
|
595
622
|
}
|
|
596
623
|
}
|
|
597
|
-
}, _coachId_accessor_storage = new WeakMap(), _propertyIds_accessor_storage = new WeakMap(), _selected_accessor_storage = new WeakMap(), _focused_accessor_storage = new WeakMap(), _index_accessor_storage = new WeakMap(), _freePlacesByType_accessor_storage = new WeakMap(), _travelClass_accessor_storage = new WeakMap(), _driverArea_accessor_storage = new WeakMap(), _first_accessor_storage = new WeakMap(), _last_accessor_storage = new WeakMap(), _disable_accessor_storage = new WeakMap(), _vertical_accessor_storage = new WeakMap(), _classThis = _a, (() => {
|
|
624
|
+
}, _coachId_accessor_storage = new WeakMap(), _propertyIds_accessor_storage = new WeakMap(), _selected_accessor_storage = new WeakMap(), _focused_accessor_storage = new WeakMap(), _hovered_accessor_storage = new WeakMap(), _nativeFocusActive_accessor_storage = new WeakMap(), _index_accessor_storage = new WeakMap(), _freePlacesByType_accessor_storage = new WeakMap(), _travelClass_accessor_storage = new WeakMap(), _driverArea_accessor_storage = new WeakMap(), _first_accessor_storage = new WeakMap(), _last_accessor_storage = new WeakMap(), _disable_accessor_storage = new WeakMap(), _vertical_accessor_storage = new WeakMap(), _classThis = _a, (() => {
|
|
598
625
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
599
626
|
_coachId_decorators = [forceType(), property({ attribute: "coach-id" })];
|
|
600
627
|
_propertyIds_decorators = [property({ attribute: "property-ids", type: Array })];
|
|
601
628
|
_selected_decorators = [forceType(), property({ type: Boolean })];
|
|
602
629
|
_focused_decorators = [forceType(), property({ type: Boolean })];
|
|
630
|
+
_hovered_decorators = [forceType(), property({ type: Boolean })];
|
|
631
|
+
_nativeFocusActive_decorators = [forceType(), property({ type: Boolean })];
|
|
603
632
|
_index_decorators = [forceType(), property({ type: Number })];
|
|
604
633
|
_freePlacesByType_decorators = [property({ attribute: "free-places-by-type", type: Object })];
|
|
605
634
|
_travelClass_decorators = [property({ attribute: "travel-class", type: Array })];
|
|
@@ -620,6 +649,12 @@ let SbbSeatReservationNavigationCoachElement = (() => {
|
|
|
620
649
|
__esDecorate(_a, null, _focused_decorators, { kind: "accessor", name: "focused", static: false, private: false, access: { has: (obj) => "focused" in obj, get: (obj) => obj.focused, set: (obj, value) => {
|
|
621
650
|
obj.focused = value;
|
|
622
651
|
} }, metadata: _metadata }, _focused_initializers, _focused_extraInitializers);
|
|
652
|
+
__esDecorate(_a, null, _hovered_decorators, { kind: "accessor", name: "hovered", static: false, private: false, access: { has: (obj) => "hovered" in obj, get: (obj) => obj.hovered, set: (obj, value) => {
|
|
653
|
+
obj.hovered = value;
|
|
654
|
+
} }, metadata: _metadata }, _hovered_initializers, _hovered_extraInitializers);
|
|
655
|
+
__esDecorate(_a, null, _nativeFocusActive_decorators, { kind: "accessor", name: "nativeFocusActive", static: false, private: false, access: { has: (obj) => "nativeFocusActive" in obj, get: (obj) => obj.nativeFocusActive, set: (obj, value) => {
|
|
656
|
+
obj.nativeFocusActive = value;
|
|
657
|
+
} }, metadata: _metadata }, _nativeFocusActive_initializers, _nativeFocusActive_extraInitializers);
|
|
623
658
|
__esDecorate(_a, null, _index_decorators, { kind: "accessor", name: "index", static: false, private: false, access: { has: (obj) => "index" in obj, get: (obj) => obj.index, set: (obj, value) => {
|
|
624
659
|
obj.index = value;
|
|
625
660
|
} }, metadata: _metadata }, _index_initializers, _index_extraInitializers);
|
|
@@ -656,4 +691,4 @@ let SbbSeatReservationNavigationCoachElement = (() => {
|
|
|
656
691
|
export {
|
|
657
692
|
SbbSeatReservationNavigationCoachElement
|
|
658
693
|
};
|
|
659
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2guY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIG5vdGhpbmcsIHR5cGUgUHJvcGVydHlWYWx1ZXMsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwLmpzJztcblxuaW1wb3J0IHsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbiB9IGZyb20gJy4uL2NvbW1vbi90cmFuc2xhdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBDb2FjaE51bWJlck9mRnJlZVBsYWNlcywgUGxhY2VUcmF2ZWxDbGFzcyB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1zZXJ2aWNlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIFNlbGVjdENvYWNoRXZlbnREZXRhaWxzID0gbnVtYmVyO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHdpbGwgZGlzcGxheSB0aGUgbmF2aWdhdGlvbiBjb2FjaCBpdGVtIGZvciBTZWF0IHJlc2VydmF0aW9uLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbk5hdmlnYXRpb25Db2FjaEVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIHNlbGVjdGNvYWNoOiAnc2VsZWN0Y29hY2gnLFxuICAgIGZvY3VzY29hY2g6ICdmb2N1c2NvYWNoJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogQ29hY2ggSUQsIHdoaWNoIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNvYWNoIGluIHRoZSBuYXZpZ2F0aW9uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdjb2FjaC1pZCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGNvYWNoSWQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBDb2FjaCBzZXJ2aWNlIHByb3BlcnR5IGlkcywgd2hpY2ggYXJlIHVzZWQgdG8gZGlzcGxheSB0aGUgc2VydmljZXMgaW4gdGhlIG5hdmlnYXRpb24gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJvcGVydHktaWRzJywgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIGFjY2Vzc29yIHByb3BlcnR5SWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBQcmUtc2VsZWN0ZWQgY29hY2ggaW5kZXggcHJvcGVydHkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZvY3VzZWQgY29hY2ggaW5kZXggcHJvcGVydHkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBpbmRleDogbnVtYmVyID0gMDtcblxuICAvKiogUmVwcmVzZW50YXRpb24gb2YgcGxhY2VzIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW5nLCBjb3VudGluZyBzZWF0IHBsYWNlcyBhbmQgYmljeWNsZSBwbGFjZXMgc2VwYXJldGVseSAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmcmVlLXBsYWNlcy1ieS10eXBlJywgdHlwZTogT2JqZWN0IH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmcmVlUGxhY2VzQnlUeXBlOiBDb2FjaE51bWJlck9mRnJlZVBsYWNlcyA9IHsgc2VhdHM6IDAsIGJpY3ljbGVzOiAwIH07XG5cbiAgLyoqIFRyYXZlbCBjbGFzcyBvZiB0aGUgY29hY2ggKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAndHJhdmVsLWNsYXNzJywgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIGFjY2Vzc29yIHRyYXZlbENsYXNzOiBQbGFjZVRyYXZlbENsYXNzW10gPSBbJ0FOWV9DTEFTUyddO1xuXG4gIC8qKiBJZiB0aGUgY29hY2ggaXMgYSBkcml2ZXIvcmVzdHJpY3RlZCBhcmVhICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkcml2ZXItYXJlYScsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGRyaXZlckFyZWE6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSWYgdGhlIGNvYWNoIGlzIHRoZSBmaXJzdCBpbiB0aGUgbmF2aWdhdGlvbiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZmlyc3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSWYgdGhlIGNvYWNoIGlzIHRoZSBsYXN0IGluIHRoZSBuYXZpZ2F0aW9uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBsYXN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIERpc2FibGUgdGhlIGNvYWNoIG5hdmlnYXRpb24gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGUnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIElmIHRoZSBjb2FjaCBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkaXNwbGF5ZWQgdmVydGljYWxseSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSwgdXNlRGVmYXVsdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgdmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzZWxlY3RlZCcpKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZE5hdkJ1dHRvbkVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICcuc2JiLXNyLW5hdmlnYXRpb25fX2N0cmwtYnV0dG9uJyxcbiAgICAgICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCAmJiBzZWxlY3RlZE5hdkJ1dHRvbkVsZW1lbnQpIHtcbiAgICAgICAgc2VsZWN0ZWROYXZCdXR0b25FbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIC8qKiBFbWl0cyB3aGVuIGEgbmF2IGNvYWNoIGhhcyB0aGUgZm9jdXMgKi9cbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnZm9jdXNjb2FjaCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2ZvY3VzZWQnKSAmJiB0aGlzLmZvY3VzZWQpIHtcbiAgICAgIGNvbnN0IGZvY3VzZWROYXZCdXR0b25FbGVtZW50ID0gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnLnNiYi1zci1uYXZpZ2F0aW9uX19jdHJsLWJ1dHRvbicsXG4gICAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgICAgaWYgKGZvY3VzZWROYXZCdXR0b25FbGVtZW50KSB7XG4gICAgICAgIGZvY3VzZWROYXZCdXR0b25FbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBhIGxpc3Qgb2Ygc2VydmljZSBpY29ucyBwcm92aWRlZCBieSBhIGNhbGxlclxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCIke2NsYXNzTWFwKHtcbiAgICAgICAgICAnc2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gnOiB0cnVlLFxuICAgICAgICAgICdsYXN0LWNvYWNoJzogdGhpcy5sYXN0LFxuICAgICAgICAgICdmaXJzdC1jb2FjaCc6IHRoaXMuZmlyc3QsXG4gICAgICAgICAgJ3NiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLS1zZWxlY3RlZCc6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICAgIH0pfVwiXG4gICAgICA+XG4gICAgICAgICR7dGhpcy5fZ2V0TmF2aWdhdGlvbkJ1dHRvbigpfVxuICAgICAgICAke3RoaXMucHJvcGVydHlJZHM/Lmxlbmd0aFxuICAgICAgICAgID8gaHRtbGA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1zZXJ2aWNlc1xuICAgICAgICAgICAgICA/dmVydGljYWw9XCIke3RoaXMudmVydGljYWx9XCJcbiAgICAgICAgICAgICAgLnByb3BlcnR5SWRzPVwiJHt0aGlzLnByb3BlcnR5SWRzfVwiXG4gICAgICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLXNlcnZpY2VzPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TmF2aWdhdGlvbkJ1dHRvbigpOiBUZW1wbGF0ZVJlc3VsdCB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJTZXJ2aWNlQ2xhc3NOdW1iZXIgPSB0aGlzLl9nZXRDb2FjaFNlcnZpY2VDbGFzc051bWJlcigpO1xuICAgIGNvbnN0IHRpdGxlRGVzY3JpcHRpb25OYXZDb2FjaEJ1dHRvbiA9XG4gICAgICB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTmF2Q29hY2hCdXR0b24oY3VyclNlcnZpY2VDbGFzc051bWJlcik7XG4gICAgY29uc3QgYXJpYURlc2NyaXB0aW9uQ29hY2hTZXJ2aWNlcyA9IHRoaXMuX2dldEFyaWFEZXNjcmlwdGlvbkNvYWNoU2VydmljZXMoKTtcblxuICAgIHJldHVybiBodG1sYCA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA/ZGlzYWJsZWQ9XCIke3RoaXMuZGlzYWJsZX1cIlxuICAgICAgICBjbGFzcz1cIiR7Y2xhc3NNYXAoe1xuICAgICAgICAgICdzYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24nOiB0cnVlLFxuICAgICAgICAgICdzYmItc3ItbmF2aWdhdGlvbi1kcml2ZXItYXJlYSc6IHRoaXMuZHJpdmVyQXJlYSxcbiAgICAgICAgfSl9XCJcbiAgICAgICAgdGl0bGU9XCIke3RpdGxlRGVzY3JpcHRpb25OYXZDb2FjaEJ1dHRvbn1cIlxuICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwibmF2LWNvYWNoLXNlcnZpY2UtZGVzY3JpcHRpb25zLSR7dGhpcy5pbmRleH1cIlxuICAgICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9zZWxlY3ROYXZDb2FjaCh0aGlzLmluZGV4KX1cbiAgICAgID5cbiAgICAgICAgJHt0aGlzLl9nZXRCdG5JbmZvcm1hdGlvbihjdXJyU2VydmljZUNsYXNzTnVtYmVyKX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHkgaWQ9XCJuYXYtY29hY2gtc2VydmljZS1kZXNjcmlwdGlvbnMtJHt0aGlzLmluZGV4fVwiXG4gICAgICAgID4ke2FyaWFEZXNjcmlwdGlvbkNvYWNoU2VydmljZXN9PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5XG4gICAgICA+YDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEJ0bkluZm9ybWF0aW9uKHNlcnZpY2VDbGFzc051bWJlcjogbnVtYmVyIHwgbnVsbCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuZHJpdmVyQXJlYSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAke3NlcnZpY2VDbGFzc051bWJlciA9PT0gMVxuICAgICAgICA/IGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbi0tZmlyc3QtY2xhc3NcIj48L3NwYW4+YFxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAke3RoaXMudHJhdmVsQ2xhc3M/Lmxlbmd0aCA+IDAgfHwgdGhpcy5jb2FjaElkXG4gICAgICAgID8gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLXNyLW5hdmlnYXRpb25fX2FkZGl0aW9uYWwtaW5mb3JtYXRpb25cIj5cbiAgICAgICAgICAgICR7dGhpcy5jb2FjaElkXG4gICAgICAgICAgICAgID8gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gtbnVtYmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAke3RoaXMuY29hY2hJZH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgJHtzZXJ2aWNlQ2xhc3NOdW1iZXIgPz8gbm90aGluZ31cbiAgICAgICAgICAgICAgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC10cmF2ZWxjbGFzc1wiXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICR7c2VydmljZUNsYXNzTnVtYmVyfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+YFxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRpdGxlRGVzY3JpcHRpb25OYXZDb2FjaEJ1dHRvbihzZXJ2aWNlQ2xhc3NOdW1iZXI6IG51bWJlciB8IG51bGwpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmRyaXZlckFyZWEpIHtcbiAgICAgIHJldHVybiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdOQVZJR0FURV9DT0FDSF9CTE9DS0VEJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW1xuICAgICAgICB0aGlzLmNvYWNoSWQsXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBsZXQgbGFiZWwgPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdOQVZJR0FURV9UT19DT0FDSCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsIFt0aGlzLmNvYWNoSWRdKTtcblxuICAgIC8vSWYgc2VydmljZSBjbGFzcyBleGlzdCwgdGhlbiBleHBhbmQgbGFiZWwgd2l0aCBzZXJ2aWNlIGNsYXNzIHRyYW5zbGF0aW9uXG4gICAgaWYgKHNlcnZpY2VDbGFzc051bWJlcikge1xuICAgICAgY29uc3Qgc2VydmljZUNsYXNzVHJhbnNsYXRpb25LZXkgPVxuICAgICAgICBzZXJ2aWNlQ2xhc3NOdW1iZXIgPT09IDEgPyAnU0VSVklDRV9DTEFTU19GSVJTVCcgOiAnU0VSVklDRV9DTEFTU19TRUNPTkQnO1xuICAgICAgY29uc3Qgc2VydmljZUNsYXNzVHJhbnNsYXRpb24gPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICBzZXJ2aWNlQ2xhc3NUcmFuc2xhdGlvbktleSxcbiAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICk7XG4gICAgICBjb25zdCBzZXJ2aWNlQ2xhc3NMYWJlbCA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICdOQVZJR0FURV9UT19DT0FDSF9TRVJWSUNFX0NMQVNTX1NVQicsXG4gICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgIFtzZXJ2aWNlQ2xhc3NUcmFuc2xhdGlvbl0sXG4gICAgICApO1xuICAgICAgbGFiZWwgPSBsYWJlbC5jb25jYXQoc2VydmljZUNsYXNzTGFiZWwpO1xuICAgIH1cblxuICAgIC8vIEV4cGFuZHMgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgc2VhdHMgYW5kIGJpY3ljbGUgc3BhY2VzIGFzIGluZm9cbiAgICBjb25zdCBmcmVlUGxhY2VzVHh0ID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihcbiAgICAgICdDT0FDSF9BVkFJTEFCTEVfTlVNQkVSX09GX1BMQUNFUycsXG4gICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgW3RoaXMuZnJlZVBsYWNlc0J5VHlwZS5zZWF0cywgdGhpcy5mcmVlUGxhY2VzQnlUeXBlLmJpY3ljbGVzXSxcbiAgICApO1xuICAgIGxhYmVsID0gbGFiZWwuY29uY2F0KCcuICcpLmNvbmNhdChmcmVlUGxhY2VzVHh0KTtcbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICBwcml2YXRlIF9nZXRBcmlhRGVzY3JpcHRpb25Db2FjaFNlcnZpY2VzKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGxldCBhcmlhRGVzY3JpdGlvbiA9IG51bGw7XG4gICAgaWYgKHRoaXMucHJvcGVydHlJZHMubGVuZ3RoKSB7XG4gICAgICBhcmlhRGVzY3JpdGlvbiA9XG4gICAgICAgIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0FWQUlMQUJMRV9TRVJWSUNFUycsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpICsgJzogJztcbiAgICAgIGFyaWFEZXNjcml0aW9uICs9IHRoaXMucHJvcGVydHlJZHNcbiAgICAgICAgLm1hcCgocHJvcGVydHlJZCkgPT4gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihwcm9wZXJ0eUlkLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KSlcbiAgICAgICAgLmpvaW4oKTtcbiAgICB9XG4gICAgcmV0dXJuIGFyaWFEZXNjcml0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIGVtaXRzIHRoZSBpbmRleCBvZiB0aGUgY29hY2ggYXJyYXkgZm9yIHRoZSBtYWluIG5hdmlnYXRpb24uXG4gICAqIEBwYXJhbSBjb2FjaEluZGV4XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9zZWxlY3ROYXZDb2FjaChjb2FjaEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZHJpdmVyQXJlYSkge1xuICAgICAgLyoqXG4gICAgICAgKiBAdHlwZSB7Q3VzdG9tRXZlbnQ8U2VsZWN0Q29hY2hFdmVudERldGFpbHM+fVxuICAgICAgICogRW1pdHMgd2hlbiBhIGNvYWNoIHdpdGhpbiB0aGUgbmF2aWdhdGlvbiB3YXMgc2VsZWN0ZWQgYW5kIHJldHVybnMgdGhlIGNsaWNrZWQgY29hY2ggbmF2IGluZGV4LlxuICAgICAgICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudDxTZWxlY3RDb2FjaEV2ZW50RGV0YWlscz4oJ3NlbGVjdGNvYWNoJywge1xuICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgY29tcG9zZWQ6IHRydWUsXG4gICAgICAgICAgZGV0YWlsOiBjb2FjaEluZGV4LFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29hY2hTZXJ2aWNlQ2xhc3NOdW1iZXIoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMudHJhdmVsQ2xhc3M/LmluY2x1ZGVzKCdGSVJTVCcpKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHJhdmVsQ2xhc3M/LmluY2x1ZGVzKCdTRUNPTkQnKSkge1xuICAgICAgcmV0dXJuIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaCc6IFNiYlNlYXRSZXNlcnZhdGlvbk5hdmlnYXRpb25D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
|
|
694
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2guY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIG5vdGhpbmcsIHR5cGUgUHJvcGVydHlWYWx1ZXMsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwLmpzJztcblxuaW1wb3J0IHsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbiB9IGZyb20gJy4uL2NvbW1vbi90cmFuc2xhdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBDb2FjaE51bWJlck9mRnJlZVBsYWNlcywgUGxhY2VUcmF2ZWxDbGFzcyB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3NjcmVlbi1yZWFkZXItb25seS5qcyc7XG5pbXBvcnQgJy4uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1zZXJ2aWNlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIFNlbGVjdENvYWNoRXZlbnREZXRhaWxzID0gbnVtYmVyO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHdpbGwgZGlzcGxheSB0aGUgbmF2aWdhdGlvbiBjb2FjaCBpdGVtIGZvciBTZWF0IHJlc2VydmF0aW9uLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbk5hdmlnYXRpb25Db2FjaEVsZW1lbnQgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIHNlbGVjdGNvYWNoOiAnc2VsZWN0Y29hY2gnLFxuICAgIGZvY3VzY29hY2g6ICdmb2N1c2NvYWNoJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogQ29hY2ggSUQsIHdoaWNoIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNvYWNoIGluIHRoZSBuYXZpZ2F0aW9uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdjb2FjaC1pZCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIGNvYWNoSWQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBDb2FjaCBzZXJ2aWNlIHByb3BlcnR5IGlkcywgd2hpY2ggYXJlIHVzZWQgdG8gZGlzcGxheSB0aGUgc2VydmljZXMgaW4gdGhlIG5hdmlnYXRpb24gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncHJvcGVydHktaWRzJywgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIGFjY2Vzc29yIHByb3BlcnR5SWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBTZWxlY3QgY29hY2ggcHJvcGVydHkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEZvY3VzIGNvYWNoIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEhvdmVyIGNvYWNoIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBob3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIE5hdGl2ZSBmb2N1cyBmb3IgdGhpcyBuYXZpZ2F0aW9uIGNvYWNoIGlzIGFsc28gc2V0IHdoZW4gdGhlIGZvY3VzZWQgcHJvcGVydHkgaXMgY2hhbmdlZCAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbmF0aXZlRm9jdXNBY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGluZGV4OiBudW1iZXIgPSAwO1xuXG4gIC8qKiBSZXByZXNlbnRhdGlvbiBvZiBwbGFjZXMgYXZhaWxhYmxlIGZvciBzZWxlY3RpbmcsIGNvdW50aW5nIHNlYXQgcGxhY2VzIGFuZCBiaWN5Y2xlIHBsYWNlcyBzZXBhcmV0ZWx5ICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ZyZWUtcGxhY2VzLWJ5LXR5cGUnLCB0eXBlOiBPYmplY3QgfSlcbiAgcHVibGljIGFjY2Vzc29yIGZyZWVQbGFjZXNCeVR5cGU6IENvYWNoTnVtYmVyT2ZGcmVlUGxhY2VzID0geyBzZWF0czogMCwgYmljeWNsZXM6IDAgfTtcblxuICAvKiogVHJhdmVsIGNsYXNzIG9mIHRoZSBjb2FjaCAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICd0cmF2ZWwtY2xhc3MnLCB0eXBlOiBBcnJheSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgdHJhdmVsQ2xhc3M6IFBsYWNlVHJhdmVsQ2xhc3NbXSA9IFsnQU5ZX0NMQVNTJ107XG5cbiAgLyoqIElmIHRoZSBjb2FjaCBpcyBhIGRyaXZlci9yZXN0cmljdGVkIGFyZWEgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2RyaXZlci1hcmVhJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZHJpdmVyQXJlYTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBJZiB0aGUgY29hY2ggaXMgdGhlIGZpcnN0IGluIHRoZSBuYXZpZ2F0aW9uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBmaXJzdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBJZiB0aGUgY29hY2ggaXMgdGhlIGxhc3QgaW4gdGhlIG5hdmlnYXRpb24gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGxhc3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRGlzYWJsZSB0aGUgY29hY2ggbmF2aWdhdGlvbiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGlzYWJsZScsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGRpc2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSWYgdGhlIGNvYWNoIG5hdmlnYXRpb24gc2hvdWxkIGJlIGRpc3BsYXllZCB2ZXJ0aWNhbGx5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlLCB1c2VEZWZhdWx0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciB2ZXJ0aWNhbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NlbGVjdGVkJykpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTmF2QnV0dG9uRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJy5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24nLFxuICAgICAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkICYmIHNlbGVjdGVkTmF2QnV0dG9uRWxlbWVudCkge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c0FjdGl2ZSkge1xuICAgICAgICAgIHNlbGVjdGVkTmF2QnV0dG9uRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIC8qKiBFbWl0cyB3aGVuIGEgbmF2IGNvYWNoIGhhcyB0aGUgZm9jdXMgKi9cbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnZm9jdXNjb2FjaCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2ZvY3VzZWQnKSAmJiB0aGlzLmZvY3VzZWQpIHtcbiAgICAgIGNvbnN0IGZvY3VzZWROYXZCdXR0b25FbGVtZW50ID0gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnLnNiYi1zci1uYXZpZ2F0aW9uX19jdHJsLWJ1dHRvbicsXG4gICAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuXG4gICAgICBpZiAoZm9jdXNlZE5hdkJ1dHRvbkVsZW1lbnQgJiYgdGhpcy5uYXRpdmVGb2N1c0FjdGl2ZSkge1xuICAgICAgICBmb2N1c2VkTmF2QnV0dG9uRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgYSBsaXN0IG9mIHNlcnZpY2UgaWNvbnMgcHJvdmlkZWQgYnkgYSBjYWxsZXJcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7XG4gICAgICAgICAgJ3NiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoJzogdHJ1ZSxcbiAgICAgICAgICAnbGFzdC1jb2FjaCc6IHRoaXMubGFzdCxcbiAgICAgICAgICAnZmlyc3QtY29hY2gnOiB0aGlzLmZpcnN0LFxuICAgICAgICAgICdzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC0tc2VsZWN0ZWQnOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgICAgICdzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC0taG92ZXJlZCc6IHRoaXMuaG92ZXJlZCxcbiAgICAgICAgfSl9XCJcbiAgICAgID5cbiAgICAgICAgJHt0aGlzLl9nZXROYXZpZ2F0aW9uQnV0dG9uKCl9XG4gICAgICAgICR7dGhpcy5wcm9wZXJ0eUlkcz8ubGVuZ3RoXG4gICAgICAgICAgPyBodG1sYDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLXNlcnZpY2VzXG4gICAgICAgICAgICAgID92ZXJ0aWNhbD1cIiR7dGhpcy52ZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICAucHJvcGVydHlJZHM9XCIke3RoaXMucHJvcGVydHlJZHN9XCJcbiAgICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tc2VydmljZXM+YFxuICAgICAgICAgIDogbm90aGluZ31cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXROYXZpZ2F0aW9uQnV0dG9uKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgY29uc3QgY3VyclNlcnZpY2VDbGFzc051bWJlciA9IHRoaXMuX2dldENvYWNoU2VydmljZUNsYXNzTnVtYmVyKCk7XG4gICAgY29uc3QgdGl0bGVEZXNjcmlwdGlvbk5hdkNvYWNoQnV0dG9uID1cbiAgICAgIHRoaXMuX2dldFRpdGxlRGVzY3JpcHRpb25OYXZDb2FjaEJ1dHRvbihjdXJyU2VydmljZUNsYXNzTnVtYmVyKTtcbiAgICBjb25zdCBhcmlhRGVzY3JpcHRpb25Db2FjaFNlcnZpY2VzID0gdGhpcy5fZ2V0QXJpYURlc2NyaXB0aW9uQ29hY2hTZXJ2aWNlcygpO1xuXG4gICAgcmV0dXJuIGh0bWxgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5kaXNhYmxlfVwiXG4gICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7XG4gICAgICAgICAgJ3NiYi1zci1uYXZpZ2F0aW9uX19jdHJsLWJ1dHRvbic6IHRydWUsXG4gICAgICAgICAgJ3NiYi1zci1uYXZpZ2F0aW9uLWRyaXZlci1hcmVhJzogdGhpcy5kcml2ZXJBcmVhLFxuICAgICAgICB9KX1cIlxuICAgICAgICB0aXRsZT1cIiR7dGl0bGVEZXNjcmlwdGlvbk5hdkNvYWNoQnV0dG9ufVwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJuYXYtY29hY2gtc2VydmljZS1kZXNjcmlwdGlvbnMtJHt0aGlzLmluZGV4fVwiXG4gICAgICAgIEBjbGljaz0keygpID0+IHRoaXMuX3NlbGVjdE5hdkNvYWNoKHRoaXMuaW5kZXgpfVxuICAgICAgPlxuICAgICAgICAke3RoaXMuX2dldEJ0bkluZm9ybWF0aW9uKGN1cnJTZXJ2aWNlQ2xhc3NOdW1iZXIpfVxuICAgICAgPC9idXR0b24+XG4gICAgICA8c2JiLXNjcmVlbi1yZWFkZXItb25seSBpZD1cIm5hdi1jb2FjaC1zZXJ2aWNlLWRlc2NyaXB0aW9ucy0ke3RoaXMuaW5kZXh9XCJcbiAgICAgICAgPiR7YXJpYURlc2NyaXB0aW9uQ29hY2hTZXJ2aWNlc308L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHlcbiAgICAgID5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QnRuSW5mb3JtYXRpb24oc2VydmljZUNsYXNzTnVtYmVyOiBudW1iZXIgfCBudWxsKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5kcml2ZXJBcmVhKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgICR7c2VydmljZUNsYXNzTnVtYmVyID09PSAxXG4gICAgICAgID8gaHRtbGA8c3BhbiBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uLS1maXJzdC1jbGFzc1wiPjwvc3Bhbj5gXG4gICAgICAgIDogbm90aGluZ31cbiAgICAgICR7dGhpcy50cmF2ZWxDbGFzcz8ubGVuZ3RoID4gMCB8fCB0aGlzLmNvYWNoSWRcbiAgICAgICAgPyBodG1sYDxkaXYgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9fYWRkaXRpb25hbC1pbmZvcm1hdGlvblwiPlxuICAgICAgICAgICAgJHt0aGlzLmNvYWNoSWRcbiAgICAgICAgICAgICAgPyBodG1sYDxkaXYgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC1udW1iZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5jb2FjaElkfVxuICAgICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAke3NlcnZpY2VDbGFzc051bWJlciA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLXRyYXZlbGNsYXNzXCJcbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgJHtzZXJ2aWNlQ2xhc3NOdW1iZXJ9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5gXG4gICAgICAgIDogbm90aGluZ31cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VGl0bGVEZXNjcmlwdGlvbk5hdkNvYWNoQnV0dG9uKHNlcnZpY2VDbGFzc051bWJlcjogbnVtYmVyIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZHJpdmVyQXJlYSkge1xuICAgICAgcmV0dXJuIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ05BVklHQVRFX0NPQUNIX0JMT0NLRUQnLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICAgIHRoaXMuY29hY2hJZCxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGxldCBsYWJlbCA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ05BVklHQVRFX1RPX0NPQUNIJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW3RoaXMuY29hY2hJZF0pO1xuXG4gICAgLy9JZiBzZXJ2aWNlIGNsYXNzIGV4aXN0LCB0aGVuIGV4cGFuZCBsYWJlbCB3aXRoIHNlcnZpY2UgY2xhc3MgdHJhbnNsYXRpb25cbiAgICBpZiAoc2VydmljZUNsYXNzTnVtYmVyKSB7XG4gICAgICBjb25zdCBzZXJ2aWNlQ2xhc3NUcmFuc2xhdGlvbktleSA9XG4gICAgICAgIHNlcnZpY2VDbGFzc051bWJlciA9PT0gMSA/ICdTRVJWSUNFX0NMQVNTX0ZJUlNUJyA6ICdTRVJWSUNFX0NMQVNTX1NFQ09ORCc7XG4gICAgICBjb25zdCBzZXJ2aWNlQ2xhc3NUcmFuc2xhdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgIHNlcnZpY2VDbGFzc1RyYW5zbGF0aW9uS2V5LFxuICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNlcnZpY2VDbGFzc0xhYmVsID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihcbiAgICAgICAgJ05BVklHQVRFX1RPX0NPQUNIX1NFUlZJQ0VfQ0xBU1NfU1VCJyxcbiAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICAgW3NlcnZpY2VDbGFzc1RyYW5zbGF0aW9uXSxcbiAgICAgICk7XG4gICAgICBsYWJlbCA9IGxhYmVsLmNvbmNhdChzZXJ2aWNlQ2xhc3NMYWJlbCk7XG4gICAgfVxuXG4gICAgLy8gRXhwYW5kcyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBzZWF0cyBhbmQgYmljeWNsZSBzcGFjZXMgYXMgaW5mb1xuICAgIGNvbnN0IGZyZWVQbGFjZXNUeHQgPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgJ0NPQUNIX0FWQUlMQUJMRV9OVU1CRVJfT0ZfUExBQ0VTJyxcbiAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICBbdGhpcy5mcmVlUGxhY2VzQnlUeXBlLnNlYXRzLCB0aGlzLmZyZWVQbGFjZXNCeVR5cGUuYmljeWNsZXNdLFxuICAgICk7XG4gICAgbGFiZWwgPSBsYWJlbC5jb25jYXQoJy4gJykuY29uY2F0KGZyZWVQbGFjZXNUeHQpO1xuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEFyaWFEZXNjcmlwdGlvbkNvYWNoU2VydmljZXMoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgbGV0IGFyaWFEZXNjcml0aW9uID0gbnVsbDtcbiAgICBpZiAodGhpcy5wcm9wZXJ0eUlkcy5sZW5ndGgpIHtcbiAgICAgIGFyaWFEZXNjcml0aW9uID1cbiAgICAgICAgZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQVZBSUxBQkxFX1NFUlZJQ0VTJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkgKyAnOiAnO1xuICAgICAgYXJpYURlc2NyaXRpb24gKz0gdGhpcy5wcm9wZXJ0eUlkc1xuICAgICAgICAubWFwKChwcm9wZXJ0eUlkKSA9PiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKHByb3BlcnR5SWQsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpKVxuICAgICAgICAuam9pbigpO1xuICAgIH1cbiAgICByZXR1cm4gYXJpYURlc2NyaXRpb247XG4gIH1cblxuICAvKipcbiAgICogZW1pdHMgdGhlIGluZGV4IG9mIHRoZSBjb2FjaCBhcnJheSBmb3IgdGhlIG1haW4gbmF2aWdhdGlvbi5cbiAgICogQHBhcmFtIGNvYWNoSW5kZXhcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3NlbGVjdE5hdkNvYWNoKGNvYWNoSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5kcml2ZXJBcmVhKSB7XG4gICAgICAvKipcbiAgICAgICAqIEB0eXBlIHtDdXN0b21FdmVudDxTZWxlY3RDb2FjaEV2ZW50RGV0YWlscz59XG4gICAgICAgKiBFbWl0cyB3aGVuIGEgY29hY2ggd2l0aGluIHRoZSBuYXZpZ2F0aW9uIHdhcyBzZWxlY3RlZCBhbmQgcmV0dXJucyB0aGUgY2xpY2tlZCBjb2FjaCBuYXYgaW5kZXguXG4gICAgICAgKi9cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50PFNlbGVjdENvYWNoRXZlbnREZXRhaWxzPignc2VsZWN0Y29hY2gnLCB7XG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgICAgICBkZXRhaWw6IGNvYWNoSW5kZXgsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb2FjaFNlcnZpY2VDbGFzc051bWJlcigpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGhpcy50cmF2ZWxDbGFzcz8uaW5jbHVkZXMoJ0ZJUlNUJykpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSBpZiAodGhpcy50cmF2ZWxDbGFzcz8uaW5jbHVkZXMoJ1NFQ09ORCcpKSB7XG4gICAgICByZXR1cm4gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoJzogU2JiU2VhdFJlc2VydmF0aW9uTmF2aWdhdGlvbkNvYWNoRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFzQk0sNENBQXdDLE1BQUE7OzBCQUQ3QyxjQUFjLHVDQUF1QyxDQUFDOzs7O29CQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|