@sd-angular/core 1.3.131 → 1.3.132

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.
@@ -307,11 +307,20 @@ export class SdChart {
307
307
  maintainAspectRatio: false,
308
308
  legend: {
309
309
  display: !option.hideLegend,
310
- onClick: (event) => {
310
+ onClick: (event, legendItem) => {
311
+ let index = legendItem.datasetIndex;
312
+ let ci = this.chart;
313
+ let meta = ci.getDatasetMeta(index);
311
314
  if (option.showTotalStack) {
312
315
  event.stopPropagation();
313
316
  }
314
- }
317
+ else {
318
+ // See controller.isDatasetVisible comment
319
+ meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;
320
+ // We hid a dataset ... rerender the chart
321
+ ci.update();
322
+ }
323
+ },
315
324
  },
316
325
  layout: {
317
326
  padding: {
@@ -633,10 +642,19 @@ export class SdChart {
633
642
  maintainAspectRatio: false,
634
643
  legend: {
635
644
  display: !option.hideLegend,
636
- onClick(event, legendItem) {
645
+ onClick: (event, legendItem) => {
646
+ let index = legendItem.datasetIndex;
647
+ let ci = this.chart;
648
+ let meta = ci.getDatasetMeta(index);
637
649
  if (option.showTotalStack) {
638
650
  event.stopPropagation();
639
651
  }
652
+ else {
653
+ // See controller.isDatasetVisible comment
654
+ meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;
655
+ // We hid a dataset ... rerender the chart
656
+ ci.update();
657
+ }
640
658
  },
641
659
  position: (_d = option === null || option === void 0 ? void 0 : option.legendPosition) !== null && _d !== void 0 ? _d : 'top'
642
660
  },
@@ -736,4 +754,4 @@ SdChart.propDecorators = {
736
754
  chartAxisRef: [{ type: ViewChild, args: ['chartAxis',] }],
737
755
  chartAreaWrapperExtendRef: [{ type: ViewChild, args: ['chartAreaWrapperExtend',] }]
738
756
  };
739
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9jaGFydC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY2hhcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsU0FBUyxFQUFjLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BJLE9BQU8sS0FBSyxLQUFLLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFTTCxZQUFZLEVBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBTzdCLE1BQU0sT0FBTyxPQUFPO0lBcUJsQixZQUNVLEdBQXNCLEVBQ1ksa0JBQXVDO1FBRHpFLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ1ksdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQjtRQXRCM0UsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFNUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQWNsQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsV0FBTSxHQUFHLE9BQU8sQ0FBQztRQTRyQmpCLGlCQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUMsQ0FBQTtRQVNELGlDQUF5QixDQUFDLFNBQTZDLEVBQXlDLEVBQUU7WUFDaEgsT0FBUTtnQkFDTixTQUFTLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxPQUFPOztvQkFDdEMsZ0JBQUksYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLElBQUksMENBQUUsUUFBUSwwQ0FBRSxNQUFNLEVBQUM7d0JBQ3hDLE1B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O1FBQ3RCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sTUFBTSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQzlDLENBQUM7Ozs7WUE1dEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsbWdCQUFxQzs7YUFFdEM7OztZQXJCd0UsaUJBQWlCOzRDQTZDckYsUUFBUSxZQUFJLE1BQU0sU0FBQyxZQUFZOzs7MEJBbEJqQyxLQUFLO3VCQU9MLFNBQVMsU0FBQyxPQUFPOzhCQUNqQixTQUFTLFNBQUMsY0FBYzsyQkFDeEIsU0FBUyxTQUFDLFdBQVc7d0NBQ3JCLFNBQVMsU0FBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9wdGlvbmFsLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgQ2hhcnQgZnJvbSAnY2hhcnQuanMnO1xyXG5pbXBvcnQge1xyXG4gIFNkQ2hhcnRPcHRpb24sXHJcbiAgQmFyQ2hhcnRPcHRpb24sXHJcbiAgTGluZUNoYXJ0T3B0aW9uLFxyXG4gIFBpZUNoYXJ0T3B0aW9uLFxyXG4gIEJhckxpbmVDaGFydE9wdGlvbixcclxuICBTdGFja0FyZWFDaGFydE9wdGlvbixcclxuICBIb3Jpem9udGFsQmFyQ2hhcnRPcHRpb24sXHJcbiAgSUNoYXJ0Q29uZmlndXJhdGlvbixcclxuICBDSEFSVF9DT05GSUcsXHJcbiAgRG91Z2hudXRDaGFydE9wdGlvblxyXG59IGZyb20gJy4vY2hhcnQubW9kZWwnO1xyXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1jaGFydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGFydC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZENoYXJ0IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBwQ2hhcnRPcHRpb246IFNkQ2hhcnRPcHRpb247XHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBjaGFydE9wdGlvbihjaGFydE9wdGlvbjogU2RDaGFydE9wdGlvbikge1xyXG4gICAgdGhpcy5wQ2hhcnRPcHRpb24gPSBjaGFydE9wdGlvbjtcclxuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyQ2hhcnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0JykgY2hhcnRSZWY6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY2hhcnRXcmFwcGVyJykgY2hhcnRXcmFwcGVyUmVmOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0QXhpcycpIGNoYXJ0QXhpc1JlZjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjaGFydEFyZWFXcmFwcGVyRXh0ZW5kJykgY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZjogRWxlbWVudFJlZjtcclxuICBjaGFydDogQ2hhcnQ7XHJcbiAgdmlzaWJsZSA9IHRydWU7XHJcbiAgaGVpZ2h0ID0gJzMwMHB4JztcclxuICBwcml2YXRlIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQ0hBUlRfQ09ORklHKSBwcml2YXRlIGNoYXJ0Q29uZmlndXJhdGlvbjogSUNoYXJ0Q29uZmlndXJhdGlvblxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnJlbmRlckNoYXJ0KHRydWUpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHJlbmRlckNoYXJ0KGZpcnN0UmVuZGVyPzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5oZWlnaHQgPSB0aGlzLnBDaGFydE9wdGlvbj8uaGVpZ2h0IHx8ICczMDBweCc7XHJcbiAgICBpZiAoIWZpcnN0UmVuZGVyKSB7XHJcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMjAwKSk7XHJcbiAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMjAwKSk7XHJcbiAgICBpZiAodGhpcy5jaGFydFJlZj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICBjb25zdCBjYW52YXMgPSB0aGlzLmNoYXJ0UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgICAgIHRoaXMuY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5wQ2hhcnRPcHRpb24udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ3BpZSc6XHJcbiAgICAgICAgICB0aGlzLnJlbmRlclBpZUNoYXJ0KHRoaXMucENoYXJ0T3B0aW9uKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2Jhcic6XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckJhckNoYXJ0KHRoaXMucENoYXJ0T3B0aW9uKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2hvcml6b250YWxCYXInOlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJIb3Jpem9udGFsQmFyQ2hhcnQodGhpcy5wQ2hhcnRPcHRpb24pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbGluZSc6XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckxpbmVDaGFydCh0aGlzLnBDaGFydE9wdGlvbik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzdGFja0FyZWEnOlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJTdGFja0FyZWFDaGFydCh0aGlzLnBDaGFydE9wdGlvbik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdiYXJsaW5lJzpcclxuICAgICAgICAgIHRoaXMucmVuZGVyQmFyTGluZUNoYXJ0KHRoaXMucENoYXJ0T3B0aW9uKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2RvdWdobnV0JzpcclxuICAgICAgICAgIHRoaXMucmVuZGVyRG91Z2hudXRDaGFydCh0aGlzLnBDaGFydE9wdGlvbik7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmRlclBpZUNoYXJ0KG9wdGlvbjogUGllQ2hhcnRPcHRpb24pIHtcclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IENoYXJ0LkNoYXJ0Q29uZmlndXJhdGlvbiA9IHtcclxuICAgICAgdHlwZTogJ3BpZScsXHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxyXG4gICAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICAgICAgdGV4dDogb3B0aW9uLnRpdGxlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsZWdlbmQ6IHtcclxuICAgICAgICAgIGRpc3BsYXk6ICFvcHRpb24uaGlkZUxlZ2VuZFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9vbHRpcHM6IHtcclxuICAgICAgICAgIGNhbGxiYWNrczoge1xyXG4gICAgICAgICAgICBsYWJlbDogKHRvb2x0aXBJdGVtLCBkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZGF0YXNldExhYmVsID0gZGF0YT8uZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XT8ubGFiZWw7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBkYXRhPy5sYWJlbHNbdG9vbHRpcEl0ZW0uaW5kZXhdIGFzIHN0cmluZztcclxuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGE/LmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0/LmRhdGFbdG9vbHRpcEl0ZW0uaW5kZXhdIGFzIG51bWJlcjtcclxuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRvb2x0aXBzPy5sYWJlbCh7XHJcbiAgICAgICAgICAgICAgICBkYXRhc2V0TGFiZWwsXHJcbiAgICAgICAgICAgICAgICBsYWJlbCxcclxuICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgfSkgfHwgYCR7ZGF0YXNldExhYmVsID8gYFske2RhdGFzZXRMYWJlbH1dIGAgOiAnJ30ke2xhYmVsfSA6ICR7TnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSl9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxhYmVsczogb3B0aW9uLmRhdGFzZXRzPy5tYXAoZSA9PiBlLmxhYmVsKSB8fCBbXSxcclxuICAgICAgICBkYXRhc2V0czogW3tcclxuICAgICAgICAgIGRhdGE6IG9wdGlvbi5kYXRhc2V0cz8ubWFwKGUgPT4gZS52YWx1ZSkgfHwgW10sXHJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IG9wdGlvbi5kYXRhc2V0cz8ubWFwKChlLCBpZHgpID0+IGUuYmFja2dyb3VuZENvbG9yXHJcbiAgICAgICAgICAgIHx8IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5kZWZhdWx0Q29sb3JzPy5baWR4XT8uYmFja2dyb3VuZENvbG9yXHJcbiAgICAgICAgICAgIHx8IHRoaXMuZHluYW1pY0NvbG9yKSB8fCBbXVxyXG4gICAgICAgIH1dXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKG9wdGlvbi5ob3ZlciA9PT0gJ1Nob3dBbGwnKSB7XHJcbiAgICAgIGNvbmZpZ3VyYXRpb24ub3B0aW9ucy50b29sdGlwcyA9IHtcclxuICAgICAgICAuLi5jb25maWd1cmF0aW9uLm9wdGlvbnMudG9vbHRpcHMsXHJcbiAgICAgICAgbW9kZTogJ2luZGV4JyxcclxuICAgICAgICBpbnRlcnNlY3Q6IGZhbHNlXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbmZpZ3VyYXRpb24ub3B0aW9ucy5ob3ZlciA9IHtcclxuICAgICAgICAuLi5jb25maWd1cmF0aW9uLm9wdGlvbnMuaG92ZXIsXHJcbiAgICAgICAgbW9kZTogJ2luZGV4JyxcclxuICAgICAgICBpbnRlcnNlY3Q6IGZhbHNlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCh0aGlzLmN0eCwgY29uZmlndXJhdGlvbik7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5kZXJEb3VnaG51dENoYXJ0KG9wdGlvbjpEb3VnaG51dENoYXJ0T3B0aW9uKXtcclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IENoYXJ0LkNoYXJ0Q29uZmlndXJhdGlvbiA9IHtcclxuICAgICAgdHlwZTogJ2RvdWdobnV0JyxcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXHJcbiAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzpmYWxzZSxcclxuICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgIHRleHQ6IG9wdGlvbi50aXRsZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGVnZW5kOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiAhb3B0aW9uLmhpZGVMZWdlbmRcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2x0aXBzOiB7XHJcbiAgICAgICAgICBjYWxsYmFja3M6IHtcclxuICAgICAgICAgICAgbGFiZWw6ICh0b29sdGlwSXRlbSwgZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGFzZXRMYWJlbCA9IGRhdGE/LmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0/LmxhYmVsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZGF0YT8ubGFiZWxzW3Rvb2x0aXBJdGVtLmluZGV4XSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhPy5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdPy5kYXRhW3Rvb2x0aXBJdGVtLmluZGV4XSBhcyBudW1iZXI7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50b29sdGlwcz8ubGFiZWwoe1xyXG4gICAgICAgICAgICAgICAgZGF0YXNldExhYmVsLFxyXG4gICAgICAgICAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgIH0pIHx8IGAke2RhdGFzZXRMYWJlbCA/IGBbJHtkYXRhc2V0TGFiZWx9XSBgIDogJyd9JHtsYWJlbH0gOiAke051bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsYWJlbHM6IG9wdGlvbi5kYXRhc2V0cz8ubWFwKGUgPT4gZS5sYWJlbCkgfHwgW10sXHJcbiAgICAgICAgZGF0YXNldHM6IFt7XHJcbiAgICAgICAgICBkYXRhOiBvcHRpb24uZGF0YXNldHM/Lm1hcChlID0+IGUudmFsdWUpIHx8IFtdLFxyXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBvcHRpb24uZGF0YXNldHM/Lm1hcCgoZSwgaWR4KSA9PiBlLmJhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgICB8fCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbj8uZGVmYXVsdENvbG9ycz8uW2lkeF0/LmJhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgICB8fCB0aGlzLmR5bmFtaWNDb2xvcikgfHwgW11cclxuICAgICAgICB9XVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChvcHRpb24uaG92ZXIgPT09ICdTaG93QWxsJykge1xyXG4gICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMudG9vbHRpcHMgPSB7XHJcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzLFxyXG4gICAgICAgIG1vZGU6ICdpbmRleCcsXHJcbiAgICAgICAgaW50ZXJzZWN0OiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMuaG92ZXIgPSB7XHJcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyLFxyXG4gICAgICAgIG1vZGU6ICdpbmRleCcsXHJcbiAgICAgICAgaW50ZXJzZWN0OiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jdHgsIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVuZGVyQmFyQ2hhcnQob3B0aW9uOiBCYXJDaGFydE9wdGlvbikge1xyXG4gICAgY29uc3QgbGFiZWxXaWR0aCA9IG9wdGlvbi5sYWJlbFdpZHRoID8/IDUwO1xyXG4gICAgaWYgKG9wdGlvbi5kYXRhc2V0cy5sZW5ndGgpIHtcclxuICAgICAgLy8gY29uc3QgbmV3d2lkdGggPSBNYXRoLm1heChvcHRpb24ubGFiZWxzLmxlbmd0aCAqIG9wdGlvbi5kYXRhc2V0cy5sZW5ndGggKiBsYWJlbFdpZHRoLCAkKHRoaXMuY2hhcnRXcmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKCkpO1xyXG4gICAgICAvLyAkKHRoaXMuY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZi5uYXRpdmVFbGVtZW50KS53aWR0aChuZXd3aWR0aCk7XHJcbiAgICAgIGNvbnN0IG5ld3dpZHRoID0gb3B0aW9uLmxhYmVscy5sZW5ndGggKiBvcHRpb24uZGF0YXNldHMubGVuZ3RoICogbGFiZWxXaWR0aDtcclxuICAgICAgJCh0aGlzLmNoYXJ0QXJlYVdyYXBwZXJFeHRlbmRSZWYubmF0aXZlRWxlbWVudCkuY3NzKCd3aWR0aCcsIGBtYXgoMTAwJSwke25ld3dpZHRofXB4KWApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogQ2hhcnQuQ2hhcnRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcclxuICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcclxuICAgICAgICBsZWdlbmQ6IHtcclxuICAgICAgICAgIGRpc3BsYXk6ICFvcHRpb24uaGlkZUxlZ2VuZFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgICB4QXhlczogW3tcclxuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgc2NhbGVMYWJlbDoge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICEhb3B0aW9uLnhUaXRsZSxcclxuICAgICAgICAgICAgICBsYWJlbFN0cmluZzogb3B0aW9uLnhUaXRsZSB8fCAnJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aWNrczoge1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWU6IG51bWJlciB8IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50aWNrcz8ueExhYmVsKHZhbHVlLCBpbmRleCkgfHwgKE51bWJlci5pc051bWJlcih2YWx1ZSkgPyBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKSA6IHZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgeUF4ZXM6IFt7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsXHJcbiAgICAgICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICAgICAgYmVnaW5BdFplcm86IG9wdGlvbi5iZWdpbkF0WmVybyA/PyB0cnVlLFxyXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWU6IG51bWJlciB8IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50aWNrcz8ueUxhYmVsKHZhbHVlLCBpbmRleCkgfHwgKE51bWJlci5pc051bWJlcih2YWx1ZSkgPyBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKSA6IHZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiAhIW9wdGlvbi55VGl0bGUsXHJcbiAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6IG9wdGlvbi55VGl0bGUgfHwgJydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfV1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2x0aXBzOiB7XHJcbiAgICAgICAgICBjYWxsYmFja3M6IHtcclxuICAgICAgICAgICAgbGFiZWw6ICh0b29sdGlwSXRlbSwgZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGFzZXRMYWJlbCA9IGRhdGE/LmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0/LmxhYmVsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZGF0YT8ubGFiZWxzW3Rvb2x0aXBJdGVtLmluZGV4XSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhPy5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdPy5kYXRhW3Rvb2x0aXBJdGVtLmluZGV4XSBhcyBudW1iZXI7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50b29sdGlwcz8ubGFiZWwoe1xyXG4gICAgICAgICAgICAgICAgZGF0YXNldExhYmVsLFxyXG4gICAgICAgICAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgIH0pIHx8IGAke2RhdGFzZXRMYWJlbH0gOiAke051bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHR5cGU6ICdiYXInLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGFiZWxzOiBvcHRpb24ubGFiZWxzLFxyXG4gICAgICAgIGRhdGFzZXRzOiBvcHRpb24uZGF0YXNldHMubWFwKChlLCBpZHgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGR5bmFtaWNDb2xvciA9IHRoaXMuZHluYW1pY0NvbG9yO1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBDaGFydC5DaGFydERhdGFTZXRzID0ge1xyXG4gICAgICAgICAgICBsYWJlbDogZS5sYWJlbCxcclxuICAgICAgICAgICAgZmlsbDogZS5iYWNrZ3JvdW5kQ29sb3IgfHwgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmRlZmF1bHRDb2xvcnM/LltpZHhdPy5iYWNrZ3JvdW5kQ29sb3IgfHwgZHluYW1pY0NvbG9yLFxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGUuYmFja2dyb3VuZENvbG9yIHx8IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5kZWZhdWx0Q29sb3JzPy5baWR4XT8uYmFja2dyb3VuZENvbG9yIHx8IGR5bmFtaWNDb2xvcixcclxuICAgICAgICAgICAgZGF0YTogZS5kYXRhLFxyXG4gICAgICAgICAgICBzdGFjazogZS5zdGFja1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9uLmhvdmVyID09PSAnU2hvd0FsbCcpIHtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy50b29sdGlwcyxcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy5ob3ZlcixcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY3R4LCBjb25maWd1cmF0aW9uKTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmRlckhvcml6b250YWxCYXJDaGFydChvcHRpb246IEhvcml6b250YWxCYXJDaGFydE9wdGlvbikge1xyXG4gICAgLy8gY29uc3QgbGFiZWxXaWR0aCA9IG9wdGlvbi5sYWJlbFdpZHRoID8/IDUwO1xyXG4gICAgLy8gaWYgKG9wdGlvbi5kYXRhc2V0cy5sZW5ndGgpIHtcclxuICAgIC8vICAgY29uc3QgbmV3d2lkdGggPSBNYXRoLm1heChvcHRpb24ubGFiZWxzLmxlbmd0aCAqIG9wdGlvbi5kYXRhc2V0cy5sZW5ndGggKiBsYWJlbFdpZHRoLCAkKHRoaXMuY2hhcnRXcmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKCkpO1xyXG4gICAgLy8gICAkKHRoaXMuY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZi5uYXRpdmVFbGVtZW50KS53aWR0aChuZXd3aWR0aCk7XHJcbiAgICAvLyB9XHJcbiAgICBjb25zdCBwbHVnaW5zOkNoYXJ0LlBsdWdpblNlcnZpY2VSZWdpc3RyYXRpb25PcHRpb25zW10gPSBbXTtcclxuICAgIGlmIChvcHRpb24uc2hvd1RvdGFsU3RhY2spe1xyXG4gICAgICBwbHVnaW5zLnB1c2godGhpcy4jZHJhd1RvdGFsT2ZTdGFja2VkQmFyKG9wdGlvbi50eXBlKSlcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IENoYXJ0LkNoYXJ0Q29uZmlndXJhdGlvbiA9IHtcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXHJcbiAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXHJcbiAgICAgICAgbGVnZW5kOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiAhb3B0aW9uLmhpZGVMZWdlbmQsXHJcbiAgICAgICAgICBvbkNsaWNrIDogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb24uc2hvd1RvdGFsU3RhY2spe1xyXG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGxheW91dDp7XHJcbiAgICAgICAgICBwYWRkaW5nOntcclxuICAgICAgICAgICAgcmlnaHQ6MjBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHNjYWxlczoge1xyXG4gICAgICAgICAgeEF4ZXM6IFt7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsXHJcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiAhIW9wdGlvbi54VGl0bGUsXHJcbiAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6IG9wdGlvbi54VGl0bGUgfHwgJycsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0YWNrZWQ6dHJ1ZSxcclxuICAgICAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgICAgICBiZWdpbkF0WmVybzogb3B0aW9uLmJlZ2luQXRaZXJvID8/IHRydWUsXHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRpY2tzPy54TGFiZWwodmFsdWUsIGluZGV4KSB8fCAoTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSA/IE51bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpIDogdmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgeUF4ZXM6IFt7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsXHJcbiAgICAgICAgICAgIHN0YWNrZWQ6dHJ1ZSxcclxuICAgICAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgICAgICBjYWxsYmFjazogKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udGlja3M/LnlMYWJlbCh2YWx1ZSwgaW5kZXgpIHx8IChOdW1iZXIuaXNOdW1iZXIodmFsdWUpID8gTnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSkgOiB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzY2FsZUxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogISFvcHRpb24ueVRpdGxlLFxyXG4gICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiBvcHRpb24ueVRpdGxlIHx8ICcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1dXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0b29sdGlwczoge1xyXG4gICAgICAgICAgY2FsbGJhY2tzOiB7XHJcbiAgICAgICAgICAgIGxhYmVsOiAodG9vbHRpcEl0ZW0sIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBkYXRhc2V0TGFiZWwgPSBkYXRhPy5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdPy5sYWJlbDtcclxuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGRhdGE/LmxhYmVsc1t0b29sdGlwSXRlbS5pbmRleF0gYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YT8uZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XT8uZGF0YVt0b29sdGlwSXRlbS5pbmRleF0gYXMgbnVtYmVyO1xyXG4gICAgICAgICAgICAgIHJldHVybiBvcHRpb24udG9vbHRpcHM/LmxhYmVsKHtcclxuICAgICAgICAgICAgICAgIGRhdGFzZXRMYWJlbCxcclxuICAgICAgICAgICAgICAgIGxhYmVsLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICB9KSB8fCBgJHtkYXRhc2V0TGFiZWx9IDogJHtOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB0eXBlOiAnaG9yaXpvbnRhbEJhcicsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsYWJlbHM6IG9wdGlvbi5sYWJlbHMsXHJcbiAgICAgICAgZGF0YXNldHM6IG9wdGlvbi5kYXRhc2V0cy5tYXAoKGUsIGlkeCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZHluYW1pY0NvbG9yID0gdGhpcy5keW5hbWljQ29sb3I7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IENoYXJ0LkNoYXJ0RGF0YVNldHMgPSB7XHJcbiAgICAgICAgICAgIGxhYmVsOiBlLmxhYmVsLFxyXG4gICAgICAgICAgICBmaWxsOiBlLmJhY2tncm91bmRDb2xvciB8fCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbj8uZGVmYXVsdENvbG9ycz8uW2lkeF0/LmJhY2tncm91bmRDb2xvciB8fCBkeW5hbWljQ29sb3IsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZS5iYWNrZ3JvdW5kQ29sb3IgfHwgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmRlZmF1bHRDb2xvcnM/LltpZHhdPy5iYWNrZ3JvdW5kQ29sb3IgfHwgZHluYW1pY0NvbG9yLFxyXG4gICAgICAgICAgICBkYXRhOiBlLmRhdGEsXHJcbiAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9KVxyXG4gICAgICB9LFxyXG4gICAgICBwbHVnaW5zOnBsdWdpbnNcclxuICAgIH07XHJcblxyXG4gICAgaWYgKG9wdGlvbi5ob3ZlciA9PT0gJ1Nob3dBbGwnKSB7XHJcbiAgICAgIGNvbmZpZ3VyYXRpb24ub3B0aW9ucy50b29sdGlwcyA9IHtcclxuICAgICAgICAuLi5jb25maWd1cmF0aW9uLm9wdGlvbnMudG9vbHRpcHMsXHJcbiAgICAgICAgbW9kZTogJ2luZGV4JyxcclxuICAgICAgICBpbnRlcnNlY3Q6IGZhbHNlXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbmZpZ3VyYXRpb24ub3B0aW9ucy5ob3ZlciA9IHtcclxuICAgICAgICAuLi5jb25maWd1cmF0aW9uLm9wdGlvbnMuaG92ZXIsXHJcbiAgICAgICAgbW9kZTogJ2luZGV4JyxcclxuICAgICAgICBpbnRlcnNlY3Q6IGZhbHNlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCh0aGlzLmN0eCwgY29uZmlndXJhdGlvbik7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5kZXJMaW5lQ2hhcnQob3B0aW9uOiBMaW5lQ2hhcnRPcHRpb24pIHtcclxuICAgIGNvbnN0IGxhYmVsV2lkdGggPSBvcHRpb24ubGFiZWxXaWR0aCA/PyA1MDtcclxuICAgIGlmIChvcHRpb24uZGF0YXNldHMubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGNvbnN0IG5ld3dpZHRoID0gTWF0aC5tYXgob3B0aW9uLmxhYmVscy5sZW5ndGggKiBsYWJlbFdpZHRoLCAkKHRoaXMuY2hhcnRXcmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKCkpO1xyXG4gICAgICAvLyAkKHRoaXMuY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZi5uYXRpdmVFbGVtZW50KS53aWR0aChuZXd3aWR0aCk7XHJcbiAgICAgIGNvbnN0IG5ld3dpZHRoID0gb3B0aW9uLmxhYmVscy5sZW5ndGggKiBsYWJlbFdpZHRoO1xyXG4gICAgICAkKHRoaXMuY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZi5uYXRpdmVFbGVtZW50KS5jc3MoJ3dpZHRoJywgYG1heCgxMDAlLCR7bmV3d2lkdGh9cHgpYCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBDaGFydC5DaGFydENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxyXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTogIW9wdGlvbi5oaWRlTGVnZW5kXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzY2FsZXM6IHtcclxuICAgICAgICAgIHhBeGVzOiBbe1xyXG4gICAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICAgICAgICBzY2FsZUxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogISFvcHRpb24ueFRpdGxlLFxyXG4gICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiBvcHRpb24ueFRpdGxlIHx8ICcnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRpY2tzPy54TGFiZWwodmFsdWUsIGluZGV4KSB8fCAoTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSA/IE51bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpIDogdmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgeUF4ZXM6IFt7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsXHJcbiAgICAgICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICAgICAgYmVnaW5BdFplcm86IG9wdGlvbi5iZWdpbkF0WmVybyA/PyB0cnVlLFxyXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWU6IG51bWJlciB8IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50aWNrcz8ueUxhYmVsKHZhbHVlLCBpbmRleCkgfHwgKE51bWJlci5pc051bWJlcih2YWx1ZSkgPyBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKSA6IHZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiAhIW9wdGlvbi55VGl0bGUsXHJcbiAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6IG9wdGlvbi55VGl0bGUgfHwgJydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfV1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2x0aXBzOiB7XHJcbiAgICAgICAgICBjYWxsYmFja3M6IHtcclxuICAgICAgICAgICAgbGFiZWw6ICh0b29sdGlwSXRlbSwgZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGFzZXRMYWJlbCA9IGRhdGE/LmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0/LmxhYmVsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZGF0YT8ubGFiZWxzW3Rvb2x0aXBJdGVtLmluZGV4XSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhPy5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdPy5kYXRhW3Rvb2x0aXBJdGVtLmluZGV4XSBhcyBudW1iZXI7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50b29sdGlwcz8ubGFiZWwoe1xyXG4gICAgICAgICAgICAgICAgZGF0YXNldExhYmVsLFxyXG4gICAgICAgICAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgIH0pIHx8IGAke2RhdGFzZXRMYWJlbH0gOiAke051bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHR5cGU6ICdsaW5lJyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxhYmVsczogb3B0aW9uLmxhYmVscyxcclxuICAgICAgICBkYXRhc2V0czogb3B0aW9uLmRhdGFzZXRzLm1hcCgoZSwgaWR4KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkeW5hbWljQ29sb3IgPSB0aGlzLmR5bmFtaWNDb2xvcjtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdDogQ2hhcnQuQ2hhcnREYXRhU2V0cyA9IHtcclxuICAgICAgICAgICAgbGFiZWw6IGUubGFiZWwsXHJcbiAgICAgICAgICAgIGZpbGw6IGUuYmFja2dyb3VuZENvbG9yIHx8IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5kZWZhdWx0Q29sb3JzPy5baWR4XT8uYmFja2dyb3VuZENvbG9yIHx8IGR5bmFtaWNDb2xvcixcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBlLmJhY2tncm91bmRDb2xvciB8fCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbj8uZGVmYXVsdENvbG9ycz8uW2lkeF0/LmJhY2tncm91bmRDb2xvciB8fCBkeW5hbWljQ29sb3IsXHJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBlLmJvcmRlckNvbG9yIHx8IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5kZWZhdWx0Q29sb3JzPy5baWR4XT8uYm9yZGVyQ29sb3IgfHwgZHluYW1pY0NvbG9yLFxyXG4gICAgICAgICAgICBkYXRhOiBlLmRhdGEsXHJcbiAgICAgICAgICAgIGxpbmVUZW5zaW9uOiAwLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9uLmhvdmVyID09PSAnU2hvd0FsbCcpIHtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy50b29sdGlwcyxcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy5ob3ZlcixcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY3R4LCBjb25maWd1cmF0aW9uKTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmRlclN0YWNrQXJlYUNoYXJ0KG9wdGlvbjogU3RhY2tBcmVhQ2hhcnRPcHRpb24pIHtcclxuICAgIGNvbnN0IGxhYmVsV2lkdGggPSBvcHRpb24ubGFiZWxXaWR0aCA/PyA1MDtcclxuICAgIGlmIChvcHRpb24uZGF0YXNldHMubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGNvbnN0IG5ld3dpZHRoID0gTWF0aC5tYXgob3B0aW9uLmxhYmVscy5sZW5ndGggKiBsYWJlbFdpZHRoLCAkKHRoaXMuY2hhcnRXcmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKCkpO1xyXG4gICAgICAvLyAkKHRoaXMuY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZi5uYXRpdmVFbGVtZW50KS53aWR0aChuZXd3aWR0aCk7XHJcbiAgICAgIGNvbnN0IG5ld3dpZHRoID0gb3B0aW9uLmxhYmVscy5sZW5ndGggKiBsYWJlbFdpZHRoO1xyXG4gICAgICAkKHRoaXMuY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZi5uYXRpdmVFbGVtZW50KS5jc3MoJ3dpZHRoJywgYG1heCgxMDAlLCR7bmV3d2lkdGh9cHgpYCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBDaGFydC5DaGFydENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxyXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTogIW9wdGlvbi5oaWRlTGVnZW5kXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzY2FsZXM6IHtcclxuICAgICAgICAgIHhBeGVzOiBbe1xyXG4gICAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICAgICAgICBzY2FsZUxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogISFvcHRpb24ueFRpdGxlLFxyXG4gICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiBvcHRpb24ueFRpdGxlIHx8ICcnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRpY2tzPy54TGFiZWwodmFsdWUsIGluZGV4KSB8fCAoTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSA/IE51bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpIDogdmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgeUF4ZXM6IFt7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsXHJcbiAgICAgICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICAgICAgYmVnaW5BdFplcm86IG9wdGlvbi5iZWdpbkF0WmVybyA/PyB0cnVlLFxyXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWU6IG51bWJlciB8IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50aWNrcz8ueUxhYmVsKHZhbHVlLCBpbmRleCkgfHwgKE51bWJlci5pc051bWJlcih2YWx1ZSkgPyBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKSA6IHZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0YWNrZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiAhIW9wdGlvbi55VGl0bGUsXHJcbiAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6IG9wdGlvbi55VGl0bGUgfHwgJydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfV1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2x0aXBzOiB7XHJcbiAgICAgICAgICBjYWxsYmFja3M6IHtcclxuICAgICAgICAgICAgbGFiZWw6ICh0b29sdGlwSXRlbSwgZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGFzZXRMYWJlbCA9IGRhdGE/LmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0/LmxhYmVsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZGF0YT8ubGFiZWxzW3Rvb2x0aXBJdGVtLmluZGV4XSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhPy5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdPy5kYXRhW3Rvb2x0aXBJdGVtLmluZGV4XSBhcyBudW1iZXI7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50b29sdGlwcz8ubGFiZWwoe1xyXG4gICAgICAgICAgICAgICAgZGF0YXNldExhYmVsLFxyXG4gICAgICAgICAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgIH0pIHx8IGAke2RhdGFzZXRMYWJlbH0gOiAke051bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHR5cGU6ICdsaW5lJyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxhYmVsczogb3B0aW9uLmxhYmVscyxcclxuICAgICAgICBkYXRhc2V0czogb3B0aW9uLmRhdGFzZXRzLm1hcCgoZSwgaWR4KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkeW5hbWljQ29sb3IgPSB0aGlzLmR5bmFtaWNDb2xvcjtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdDogQ2hhcnQuQ2hhcnREYXRhU2V0cyA9IHtcclxuICAgICAgICAgICAgbGFiZWw6IGUubGFiZWwsXHJcbiAgICAgICAgICAgIC8vIGZpbGw6IGUuYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGUuYmFja2dyb3VuZENvbG9yIHx8IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5kZWZhdWx0Q29sb3JzPy5baWR4XT8uYmFja2dyb3VuZENvbG9yIHx8IGR5bmFtaWNDb2xvcixcclxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGUuYm9yZGVyQ29sb3IgfHwgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmRlZmF1bHRDb2xvcnM/LltpZHhdPy5ib3JkZXJDb2xvciB8fCBkeW5hbWljQ29sb3IsXHJcbiAgICAgICAgICAgIGRhdGE6IGUuZGF0YSxcclxuICAgICAgICAgICAgbGluZVRlbnNpb246IDAsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChvcHRpb24uaG92ZXIgPT09ICdTaG93QWxsJykge1xyXG4gICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMudG9vbHRpcHMgPSB7XHJcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzLFxyXG4gICAgICAgIG1vZGU6ICdpbmRleCcsXHJcbiAgICAgICAgaW50ZXJzZWN0OiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMuaG92ZXIgPSB7XHJcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyLFxyXG4gICAgICAgIG1vZGU6ICdpbmRleCcsXHJcbiAgICAgICAgaW50ZXJzZWN0OiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jdHgsIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVuZGVyQmFyTGluZUNoYXJ0KG9wdGlvbjogQmFyTGluZUNoYXJ0T3B0aW9uKSB7XHJcbiAgICBjb25zdCBwbHVnaW5zOkNoYXJ0LlBsdWdpblNlcnZpY2VSZWdpc3RyYXRpb25PcHRpb25zW10gPSBbXTtcclxuICAgIGlmIChvcHRpb24uc2hvd1RvdGFsU3RhY2spe1xyXG4gICAgICBwbHVnaW5zLnB1c2godGhpcy4jZHJhd1RvdGFsT2ZTdGFja2VkQmFyKG9wdGlvbi50eXBlKSlcclxuICAgIH1cclxuICAgIGNvbnN0IGxhYmVsV2lkdGggPSBvcHRpb24ubGFiZWxXaWR0aCA/PyA1MDtcclxuICAgIGlmIChvcHRpb24uZGF0YXNldHMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IG51bWJlck9mQmFycyA9IG9wdGlvbi5kYXRhc2V0cy5maWx0ZXIoZSA9PiBlLnR5cGUgPT09ICdiYXInKS5sZW5ndGg7XHJcbiAgICAgIGlmIChudW1iZXJPZkJhcnMgPD0gMSkge1xyXG4gICAgICAgIC8vIGNvbnN0IG5ld3dpZHRoID0gTWF0aC5tYXgob3B0aW9uLmxhYmVscy5sZW5ndGggKiBsYWJlbFdpZHRoLCAkKHRoaXMuY2hhcnRXcmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKCkpO1xyXG4gICAgICAgIC8vICQodGhpcy5jaGFydEFyZWFXcmFwcGVyRXh0ZW5kUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKG5ld3dpZHRoKTtcclxuICAgICAgICBjb25zdCBuZXd3aWR0aCA9IG9wdGlvbi5sYWJlbHMubGVuZ3RoICogbGFiZWxXaWR0aDtcclxuICAgICAgICAkKHRoaXMuY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZi5uYXRpdmVFbGVtZW50KS5jc3MoJ3dpZHRoJywgYG1heCgxMDAlLCR7bmV3d2lkdGh9cHgpYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gY29uc3QgbmV3d2lkdGggPSBNYXRoLm1heChvcHRpb24ubGFiZWxzLmxlbmd0aCAqIG51bWJlck9mQmFycyAqIGxhYmVsV2lkdGgsICQodGhpcy5jaGFydFdyYXBwZXJSZWYubmF0aXZlRWxlbWVudCkud2lkdGgoKSk7XHJcbiAgICAgICAgLy8gJCh0aGlzLmNoYXJ0QXJlYVdyYXBwZXJFeHRlbmRSZWYubmF0aXZlRWxlbWVudCkud2lkdGgobmV3d2lkdGgpO1xyXG4gICAgICAgIGNvbnN0IG5ld3dpZHRoID0gb3B0aW9uLmxhYmVscy5sZW5ndGggKiBudW1iZXJPZkJhcnMgKiBsYWJlbFdpZHRoO1xyXG4gICAgICAgICQodGhpcy5jaGFydEFyZWFXcmFwcGVyRXh0ZW5kUmVmLm5hdGl2ZUVsZW1lbnQpLmNzcygnd2lkdGgnLCBgbWF4KDEwMCUsJHtuZXd3aWR0aH1weClgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgbGVmdElkID0gYEkke3V1aWQudjQoKX1gO1xyXG4gICAgY29uc3QgcmlnaHRJZCA9IGBJJHt1dWlkLnY0KCl9YDtcclxuICAgIGNvbnN0IHlBeGVzID0gW3tcclxuICAgICAgdHlwZTogJ2xpbmVhcicsXHJcbiAgICAgIGRpc3BsYXk6IHRydWUsXHJcbiAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXHJcbiAgICAgIGlkOiBsZWZ0SWQsXHJcbiAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgYmVnaW5BdFplcm86IG9wdGlvbi5iZWdpbkF0WmVybyA/PyB0cnVlLFxyXG4gICAgICAgIHN1Z2dlc3RlZE1pbjogMCxcclxuICAgICAgICBjYWxsYmFjazogKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIHJldHVybiBvcHRpb24udGlja3M/LnlMYWJlbCh2YWx1ZSwgaW5kZXgpIHx8IChOdW1iZXIuaXNOdW1iZXIodmFsdWUpID8gTnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSkgOiB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBzY2FsZUxhYmVsOiB7XHJcbiAgICAgICAgZGlzcGxheTogISFvcHRpb24ueVRpdGxlLFxyXG4gICAgICAgIGxhYmVsU3RyaW5nOiBvcHRpb24ueVRpdGxlIHx8ICcnLFxyXG4gICAgICB9LFxyXG4gICAgICBzdGFja2VkOiEhb3B0aW9uLnlTdGFja2VkLFxyXG4gICAgfV07XHJcbiAgICBpZiAob3B0aW9uLmRhdGFzZXRzLnNvbWUoZSA9PiBlLnlBbGlnbiA9PT0gJ3JpZ2h0JykpIHtcclxuICAgICAgeUF4ZXMucHVzaCh7XHJcbiAgICAgICAgdHlwZTogJ2xpbmVhcicsXHJcbiAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICBwb3NpdGlvbjogJ3JpZ2h0JyxcclxuICAgICAgICBpZDogcmlnaHRJZCxcclxuICAgICAgICB0aWNrczoge1xyXG4gICAgICAgICAgYmVnaW5BdFplcm86IG9wdGlvbi5iZWdpbkF0WmVybyA/PyB0cnVlLFxyXG4gICAgICAgICAgc3VnZ2VzdGVkTWluOiAwLFxyXG4gICAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBvcHRpb24udGlja3M/LnlSaWdodExhYmVsKHZhbHVlLCBpbmRleCkgfHwgKE51bWJlci5pc051bWJlcih2YWx1ZSkgPyBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKSA6IHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHNjYWxlTGFiZWw6IHtcclxuICAgICAgICAgIGRpc3BsYXk6ICEhb3B0aW9uLnlSaWdodFRpdGxlLFxyXG4gICAgICAgICAgbGFiZWxTdHJpbmc6IG9wdGlvbi55UmlnaHRUaXRsZSB8fCAnJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3RhY2tlZDohIW9wdGlvbi55U3RhY2tlZCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBDaGFydC5DaGFydENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxyXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTogIW9wdGlvbi5oaWRlTGVnZW5kLFxyXG4gICAgICAgICAgb25DbGljayhldmVudCwgbGVnZW5kSXRlbSkge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9uLnNob3dUb3RhbFN0YWNrICl7XHJcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBwb3NpdGlvbjogb3B0aW9uPy5sZWdlbmRQb3NpdGlvbiA/PyAndG9wJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGF5b3V0OntcclxuICAgICAgICAgIHBhZGRpbmc6MTBcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICAgICAgdGV4dDogb3B0aW9uLnRpdGxlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzY2FsZXM6IHtcclxuICAgICAgICAgIHhBeGVzOiBbe1xyXG4gICAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICAgICAgICBzY2FsZUxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogISFvcHRpb24ueFRpdGxlLFxyXG4gICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiBvcHRpb24ueFRpdGxlIHx8ICcnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRpY2tzPy54TGFiZWwodmFsdWUsIGluZGV4KSB8fCAoTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSA/IE51bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpIDogdmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RhY2tlZDogISFvcHRpb24ueFN0YWNrZWRcclxuICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgeUF4ZXNcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2x0aXBzOiB7ICAgICAgICAgIFxyXG4gICAgICAgICAgY2FsbGJhY2tzOiB7XHJcbiAgICAgICAgICAgIGxhYmVsOiAodG9vbHRpcEl0ZW0sIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBkYXRhc2V0TGFiZWwgPSBkYXRhPy5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdPy5sYWJlbDtcclxuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGRhdGE/LmxhYmVsc1t0b29sdGlwSXRlbS5pbmRleF0gYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YT8uZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XT8uZGF0YVt0b29sdGlwSXRlbS5pbmRleF0gYXMgbnVtYmVyO1xyXG4gICAgICAgICAgICAgIHJldHVybiBvcHRpb24udG9vbHRpcHM/LmxhYmVsKHtcclxuICAgICAgICAgICAgICAgIGRhdGFzZXRMYWJlbCxcclxuICAgICAgICAgICAgICAgIGxhYmVsLFxyXG4gICAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgICAgICBkYXRhc2V0SW5kZXg6IHRvb2x0aXBJdGVtLmRhdGFzZXRJbmRleCxcclxuICAgICAgICAgICAgICAgIGRhdGFJbmRleDp0b29sdGlwSXRlbS5pbmRleFxyXG4gICAgICAgICAgICAgIH0pIHx8IGAke2RhdGFzZXRMYWJlbCA/IGBbJHtkYXRhc2V0TGFiZWx9XSBgIDogJyd9ICR7bGFiZWx9IDogJHtOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGFiZWxzOiBvcHRpb24ubGFiZWxzLFxyXG4gICAgICAgIGRhdGFzZXRzOiBvcHRpb24uZGF0YXNldHMubWFwKChlLCBpZHgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGR5bmFtaWNDb2xvciA9IHRoaXMuZHluYW1pY0NvbG9yO1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBDaGFydC5DaGFydERhdGFTZXRzID0ge1xyXG4gICAgICAgICAgICB0eXBlOiBlLnR5cGUsXHJcbiAgICAgICAgICAgIGxhYmVsOiBlLmxhYmVsLFxyXG4gICAgICAgICAgICBmaWxsOiBlLmJhY2tncm91bmRDb2xvciB8fCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbj8uZGVmYXVsdENvbG9ycz8uW2lkeF0/LmJhY2tncm91bmRDb2xvciB8fCBkeW5hbWljQ29sb3IsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZS5iYWNrZ3JvdW5kQ29sb3IgfHwgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmRlZmF1bHRDb2xvcnM/LltpZHhdPy5iYWNrZ3JvdW5kQ29sb3IgfHwgZHluYW1pY0NvbG9yLFxyXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogZS5ib3JkZXJDb2xvciB8fCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbj8uZGVmYXVsdENvbG9ycz8uW2lkeF0/LmJvcmRlckNvbG9yIHx8IGR5bmFtaWNDb2xvcixcclxuICAgICAgICAgICAgZGF0YTogZS5kYXRhLFxyXG4gICAgICAgICAgICB5QXhpc0lEOiBlLnlBbGlnbiA9PT0gJ3JpZ2h0JyA/IHJpZ2h0SWQgOiBsZWZ0SWQsXHJcbiAgICAgICAgICAgIGxpbmVUZW5zaW9uOiAwLFxyXG4gICAgICAgICAgICBvcmRlcjplLm9yZGVyID8/IDFcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0pLFxyXG4gICAgICB9LFxyXG4gICAgICBwbHVnaW5zOiBwbHVnaW5zXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChvcHRpb24uaG92ZXIgPT09ICdTaG93QWxsJykge1xyXG4gICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMudG9vbHRpcHMgPSB7XHJcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzLFxyXG4gICAgICAgIG1vZGU6ICdpbmRleCcsXHJcbiAgICAgICAgaW50ZXJzZWN0OiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMuaG92ZXIgPSB7XHJcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyLFxyXG4gICAgICAgIG1vZGU6ICdpbmRleCcsXHJcbiAgICAgICAgaW50ZXJzZWN0OiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jdHgsIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGxvYWRpbmdTdGFydCA9ICgpID0+IHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGR5bmFtaWNDb2xvcigpIHtcclxuICAgIGNvbnN0IHIgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTUpO1xyXG4gICAgY29uc3QgZyA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI1NSk7XHJcbiAgICBjb25zdCBiID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjU1KTtcclxuICAgIHJldHVybiAncmdiKCcgKyByICsgJywnICsgZyArICcsJyArIGIgKyAnKSc7XHJcbiAgfVxyXG5cclxuICAjZHJhd1RvdGFsT2ZTdGFja2VkQmFyID0gKGNoYXJ0VHlwZTonYmFybGluZScgfCAnYmFyJyB8ICdob3Jpem9udGFsQmFyJyk6Q2hhcnQuUGx1Z2luU2VydmljZVJlZ2lzdHJhdGlvbk9wdGlvbnMgPT4ge1xyXG4gICAgcmV0dXJuICB7XHJcbiAgICAgIGFmdGVyRHJhdyhjaGFydEluc3RhbmNlLCBlYXNpbmcsIG9wdGlvbnMpIHtcclxuICAgICAgICBpZiAoY2hhcnRJbnN0YW5jZT8uZGF0YT8uZGF0YXNldHM/Lmxlbmd0aCl7XHJcbiAgICAgICAgICBjb25zdCBjdHggPSBjaGFydEluc3RhbmNlLmN0eDtcclxuICAgICAgICAgIGNoYXJ0SW5zdGFuY2UuZGF0YS5kYXRhc2V0c1swXS5kYXRhLmZvckVhY2goICAoZGF0YVBvaW50LGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGN1ckxhc3RJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgbGV0IGN1clRvdGFsID0gMDtcclxuICAgICAgICAgICAgICBjaGFydEluc3RhbmNlLmRhdGEuZGF0YXNldHMuZm9yRWFjaCggKGRhdGFzZXQsc2V0SW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhc2V0LmRhdGFbaW5kZXhdICE9IDAgJiYgKCFkYXRhc2V0LmhpZGRlbikgJiYgZGF0YXNldC50eXBlICE9PSAnbGluZScpe1xyXG4gICAgICAgICAgICAgICAgICBjdXJMYXN0SW5kZXggPSBzZXRJbmRleDtcclxuICAgICAgICAgICAgICAgICAgaWYgKE51bWJlci5pc051bWJlcihkYXRhc2V0LmRhdGFbaW5kZXhdKSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VyVG90YWwgKz0gTnVtYmVyKGRhdGFzZXQuZGF0YVtpbmRleF0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGVsc2UgY3VyVG90YWwgKz0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIGNvbnN0IHt4LHl9ID0gY2hhcnRJbnN0YW5jZS5nZXREYXRhc2V0TWV0YShjdXJMYXN0SW5kZXgpLmRhdGFbaW5kZXhdLl9tb2RlbDtcclxuICAgICAgICAgICAgICBjb25zdCB0ZXh0V2lkdGggPSBjdHgubWVhc3VyZVRleHQoY3VyVG90YWwudG9TdHJpbmcoKSkud2lkdGg7XHJcbiAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZT0gJ2JsYWNrJztcclxuICAgICAgICAgICAgICBsZXQgeFRleHRQb3NpdGlvbiA9ICh4LXRleHRXaWR0aC8yICkgLSB0ZXh0V2lkdGggPiAwID8gKHgtdGV4dFdpZHRoLzIgKSA6IDA7XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID09IDApe1xyXG4gICAgICAgICAgICAgICAgeFRleHRQb3NpdGlvbiA9IHggKyAxMDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSBpZiAoaW5kZXggPT09IGNoYXJ0SW5zdGFuY2UuZGF0YS5kYXRhc2V0c1swXS5kYXRhLmxlbmd0aCAtIDEgKXtcclxuICAgICAgICAgICAgICAgIHhUZXh0UG9zaXRpb24gPSB4IC0gdGV4dFdpZHRoIC0gMTA7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGN0eC5mb250ID0gJzMwMCAxMHB4J1xyXG4gICAgICAgICAgICAgIGN0eC5maWxsVGV4dChjdXJUb3RhbC50b1N0cmluZygpLCBjaGFydFR5cGUgPT09ICdob3Jpem9udGFsQmFyJyA/IHggKyAxMCA6IHhUZXh0UG9zaXRpb24sIGNoYXJ0VHlwZSA9PT0gJ2hvcml6b250YWxCYXInID8geSA6IHktMTApO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSAgICAgICAgIFxyXG4gICAgICB9LFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
757
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9jaGFydC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY2hhcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsU0FBUyxFQUFjLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BJLE9BQU8sS0FBSyxLQUFLLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFTTCxZQUFZLEVBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBTzdCLE1BQU0sT0FBTyxPQUFPO0lBcUJsQixZQUNVLEdBQXNCLEVBQ1ksa0JBQXVDO1FBRHpFLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ1ksdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFxQjtRQXRCM0UsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFNUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQWNsQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsV0FBTSxHQUFHLE9BQU8sQ0FBQztRQWl0QmpCLGlCQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUMsQ0FBQTtRQVNELGlDQUF5QixDQUFDLFNBQTZDLEVBQXlDLEVBQUU7WUFDaEgsT0FBUTtnQkFDTixTQUFTLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxPQUFPOztvQkFDdEMsZ0JBQUksYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLElBQUksMENBQUUsUUFBUSwwQ0FBRSxNQUFNLEVBQUM7d0JBQ3hDLE1B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LENBQUM7UUFDMUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDMUMsT0FBTyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDOUMsQ0FBQzs7OztZQWp2QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxVQUFVO2dCQUNwQixtZ0JBQXFDOzthQUV0Qzs7O1lBckJ3RSxpQkFBaUI7NENBNkNyRixRQUFRLFlBQUksTUFBTSxTQUFDLFlBQVk7OzswQkFsQmpDLEtBQUs7dUJBT0wsU0FBUyxTQUFDLE9BQU87OEJBQ2pCLFNBQVMsU0FBQyxjQUFjOzJCQUN4QixTQUFTLFNBQUMsV0FBVzt3Q0FDckIsU0FBUyxTQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBDaGFydCBmcm9tICdjaGFydC5qcyc7XHJcbmltcG9ydCB7XHJcbiAgU2RDaGFydE9wdGlvbixcclxuICBCYXJDaGFydE9wdGlvbixcclxuICBMaW5lQ2hhcnRPcHRpb24sXHJcbiAgUGllQ2hhcnRPcHRpb24sXHJcbiAgQmFyTGluZUNoYXJ0T3B0aW9uLFxyXG4gIFN0YWNrQXJlYUNoYXJ0T3B0aW9uLFxyXG4gIEhvcml6b250YWxCYXJDaGFydE9wdGlvbixcclxuICBJQ2hhcnRDb25maWd1cmF0aW9uLFxyXG4gIENIQVJUX0NPTkZJRyxcclxuICBEb3VnaG51dENoYXJ0T3B0aW9uXHJcbn0gZnJvbSAnLi9jaGFydC5tb2RlbCc7XHJcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWNoYXJ0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNkQ2hhcnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIHBDaGFydE9wdGlvbjogU2RDaGFydE9wdGlvbjtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc2V0IGNoYXJ0T3B0aW9uKGNoYXJ0T3B0aW9uOiBTZENoYXJ0T3B0aW9uKSB7XHJcbiAgICB0aGlzLnBDaGFydE9wdGlvbiA9IGNoYXJ0T3B0aW9uO1xyXG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcclxuICAgICAgdGhpcy5yZW5kZXJDaGFydCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnY2hhcnQnKSBjaGFydFJlZjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjaGFydFdyYXBwZXInKSBjaGFydFdyYXBwZXJSZWY6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY2hhcnRBeGlzJykgY2hhcnRBeGlzUmVmOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0QXJlYVdyYXBwZXJFeHRlbmQnKSBjaGFydEFyZWFXcmFwcGVyRXh0ZW5kUmVmOiBFbGVtZW50UmVmO1xyXG4gIGNoYXJ0OiBDaGFydDtcclxuICB2aXNpYmxlID0gdHJ1ZTtcclxuICBoZWlnaHQgPSAnMzAwcHgnO1xyXG4gIHByaXZhdGUgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChDSEFSVF9DT05GSUcpIHByaXZhdGUgY2hhcnRDb25maWd1cmF0aW9uOiBJQ2hhcnRDb25maWd1cmF0aW9uXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMucmVuZGVyQ2hhcnQodHJ1ZSk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcmVuZGVyQ2hhcnQoZmlyc3RSZW5kZXI/OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmhlaWdodCA9IHRoaXMucENoYXJ0T3B0aW9uPy5oZWlnaHQgfHwgJzMwMHB4JztcclxuICAgIGlmICghZmlyc3RSZW5kZXIpIHtcclxuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAyMDApKTtcclxuICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAyMDApKTtcclxuICAgIGlmICh0aGlzLmNoYXJ0UmVmPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuY2hhcnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MQ2FudmFzRWxlbWVudDtcclxuICAgICAgdGhpcy5jdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgc3dpdGNoICh0aGlzLnBDaGFydE9wdGlvbi50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAncGllJzpcclxuICAgICAgICAgIHRoaXMucmVuZGVyUGllQ2hhcnQodGhpcy5wQ2hhcnRPcHRpb24pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnYmFyJzpcclxuICAgICAgICAgIHRoaXMucmVuZGVyQmFyQ2hhcnQodGhpcy5wQ2hhcnRPcHRpb24pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnaG9yaXpvbnRhbEJhcic6XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckhvcml6b250YWxCYXJDaGFydCh0aGlzLnBDaGFydE9wdGlvbik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgIHRoaXMucmVuZGVyTGluZUNoYXJ0KHRoaXMucENoYXJ0T3B0aW9uKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3N0YWNrQXJlYSc6XHJcbiAgICAgICAgICB0aGlzLnJlbmRlclN0YWNrQXJlYUNoYXJ0KHRoaXMucENoYXJ0T3B0aW9uKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2JhcmxpbmUnOlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJCYXJMaW5lQ2hhcnQodGhpcy5wQ2hhcnRPcHRpb24pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZG91Z2hudXQnOlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJEb3VnaG51dENoYXJ0KHRoaXMucENoYXJ0T3B0aW9uKTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVuZGVyUGllQ2hhcnQob3B0aW9uOiBQaWVDaGFydE9wdGlvbikge1xyXG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogQ2hhcnQuQ2hhcnRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICB0eXBlOiAncGllJyxcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXHJcbiAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IHRydWUsXHJcbiAgICAgICAgICB0ZXh0OiBvcHRpb24udGl0bGVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTogIW9wdGlvbi5oaWRlTGVnZW5kXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0b29sdGlwczoge1xyXG4gICAgICAgICAgY2FsbGJhY2tzOiB7XHJcbiAgICAgICAgICAgIGxhYmVsOiAodG9vbHRpcEl0ZW0sIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBkYXRhc2V0TGFiZWwgPSBkYXRhPy5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdPy5sYWJlbDtcclxuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGRhdGE/LmxhYmVsc1t0b29sdGlwSXRlbS5pbmRleF0gYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YT8uZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XT8uZGF0YVt0b29sdGlwSXRlbS5pbmRleF0gYXMgbnVtYmVyO1xyXG4gICAgICAgICAgICAgIHJldHVybiBvcHRpb24udG9vbHRpcHM/LmxhYmVsKHtcclxuICAgICAgICAgICAgICAgIGRhdGFzZXRMYWJlbCxcclxuICAgICAgICAgICAgICAgIGxhYmVsLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICB9KSB8fCBgJHtkYXRhc2V0TGFiZWwgPyBgWyR7ZGF0YXNldExhYmVsfV0gYCA6ICcnfSR7bGFiZWx9IDogJHtOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGFiZWxzOiBvcHRpb24uZGF0YXNldHM/Lm1hcChlID0+IGUubGFiZWwpIHx8IFtdLFxyXG4gICAgICAgIGRhdGFzZXRzOiBbe1xyXG4gICAgICAgICAgZGF0YTogb3B0aW9uLmRhdGFzZXRzPy5tYXAoZSA9PiBlLnZhbHVlKSB8fCBbXSxcclxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogb3B0aW9uLmRhdGFzZXRzPy5tYXAoKGUsIGlkeCkgPT4gZS5iYWNrZ3JvdW5kQ29sb3JcclxuICAgICAgICAgICAgfHwgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmRlZmF1bHRDb2xvcnM/LltpZHhdPy5iYWNrZ3JvdW5kQ29sb3JcclxuICAgICAgICAgICAgfHwgdGhpcy5keW5hbWljQ29sb3IpIHx8IFtdXHJcbiAgICAgICAgfV1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9uLmhvdmVyID09PSAnU2hvd0FsbCcpIHtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy50b29sdGlwcyxcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy5ob3ZlcixcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY3R4LCBjb25maWd1cmF0aW9uKTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmRlckRvdWdobnV0Q2hhcnQob3B0aW9uOkRvdWdobnV0Q2hhcnRPcHRpb24pe1xyXG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogQ2hhcnQuQ2hhcnRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICB0eXBlOiAnZG91Z2hudXQnLFxyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcclxuICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOmZhbHNlLFxyXG4gICAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICAgICAgdGV4dDogb3B0aW9uLnRpdGxlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsZWdlbmQ6IHtcclxuICAgICAgICAgIGRpc3BsYXk6ICFvcHRpb24uaGlkZUxlZ2VuZFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9vbHRpcHM6IHtcclxuICAgICAgICAgIGNhbGxiYWNrczoge1xyXG4gICAgICAgICAgICBsYWJlbDogKHRvb2x0aXBJdGVtLCBkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZGF0YXNldExhYmVsID0gZGF0YT8uZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XT8ubGFiZWw7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBkYXRhPy5sYWJlbHNbdG9vbHRpcEl0ZW0uaW5kZXhdIGFzIHN0cmluZztcclxuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGE/LmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0/LmRhdGFbdG9vbHRpcEl0ZW0uaW5kZXhdIGFzIG51bWJlcjtcclxuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRvb2x0aXBzPy5sYWJlbCh7XHJcbiAgICAgICAgICAgICAgICBkYXRhc2V0TGFiZWwsXHJcbiAgICAgICAgICAgICAgICBsYWJlbCxcclxuICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgfSkgfHwgYCR7ZGF0YXNldExhYmVsID8gYFske2RhdGFzZXRMYWJlbH1dIGAgOiAnJ30ke2xhYmVsfSA6ICR7TnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSl9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxhYmVsczogb3B0aW9uLmRhdGFzZXRzPy5tYXAoZSA9PiBlLmxhYmVsKSB8fCBbXSxcclxuICAgICAgICBkYXRhc2V0czogW3tcclxuICAgICAgICAgIGRhdGE6IG9wdGlvbi5kYXRhc2V0cz8ubWFwKGUgPT4gZS52YWx1ZSkgfHwgW10sXHJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IG9wdGlvbi5kYXRhc2V0cz8ubWFwKChlLCBpZHgpID0+IGUuYmFja2dyb3VuZENvbG9yXHJcbiAgICAgICAgICAgIHx8IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5kZWZhdWx0Q29sb3JzPy5baWR4XT8uYmFja2dyb3VuZENvbG9yXHJcbiAgICAgICAgICAgIHx8IHRoaXMuZHluYW1pY0NvbG9yKSB8fCBbXVxyXG4gICAgICAgIH1dXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKG9wdGlvbi5ob3ZlciA9PT0gJ1Nob3dBbGwnKSB7XHJcbiAgICAgIGNvbmZpZ3VyYXRpb24ub3B0aW9ucy50b29sdGlwcyA9IHtcclxuICAgICAgICAuLi5jb25maWd1cmF0aW9uLm9wdGlvbnMudG9vbHRpcHMsXHJcbiAgICAgICAgbW9kZTogJ2luZGV4JyxcclxuICAgICAgICBpbnRlcnNlY3Q6IGZhbHNlXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbmZpZ3VyYXRpb24ub3B0aW9ucy5ob3ZlciA9IHtcclxuICAgICAgICAuLi5jb25maWd1cmF0aW9uLm9wdGlvbnMuaG92ZXIsXHJcbiAgICAgICAgbW9kZTogJ2luZGV4JyxcclxuICAgICAgICBpbnRlcnNlY3Q6IGZhbHNlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCh0aGlzLmN0eCwgY29uZmlndXJhdGlvbik7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5kZXJCYXJDaGFydChvcHRpb246IEJhckNoYXJ0T3B0aW9uKSB7XHJcbiAgICBjb25zdCBsYWJlbFdpZHRoID0gb3B0aW9uLmxhYmVsV2lkdGggPz8gNTA7XHJcbiAgICBpZiAob3B0aW9uLmRhdGFzZXRzLmxlbmd0aCkge1xyXG4gICAgICAvLyBjb25zdCBuZXd3aWR0aCA9IE1hdGgubWF4KG9wdGlvbi5sYWJlbHMubGVuZ3RoICogb3B0aW9uLmRhdGFzZXRzLmxlbmd0aCAqIGxhYmVsV2lkdGgsICQodGhpcy5jaGFydFdyYXBwZXJSZWYubmF0aXZlRWxlbWVudCkud2lkdGgoKSk7XHJcbiAgICAgIC8vICQodGhpcy5jaGFydEFyZWFXcmFwcGVyRXh0ZW5kUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKG5ld3dpZHRoKTtcclxuICAgICAgY29uc3QgbmV3d2lkdGggPSBvcHRpb24ubGFiZWxzLmxlbmd0aCAqIG9wdGlvbi5kYXRhc2V0cy5sZW5ndGggKiBsYWJlbFdpZHRoO1xyXG4gICAgICAkKHRoaXMuY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZi5uYXRpdmVFbGVtZW50KS5jc3MoJ3dpZHRoJywgYG1heCgxMDAlLCR7bmV3d2lkdGh9cHgpYCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBDaGFydC5DaGFydENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICByZXNwb25zaXZlOiB0cnVlLFxyXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTogIW9wdGlvbi5oaWRlTGVnZW5kXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzY2FsZXM6IHtcclxuICAgICAgICAgIHhBeGVzOiBbe1xyXG4gICAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICAgICAgICBzY2FsZUxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogISFvcHRpb24ueFRpdGxlLFxyXG4gICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiBvcHRpb24ueFRpdGxlIHx8ICcnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRpY2tzPy54TGFiZWwodmFsdWUsIGluZGV4KSB8fCAoTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSA/IE51bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpIDogdmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfV0sXHJcbiAgICAgICAgICB5QXhlczogW3tcclxuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgICAgICBiZWdpbkF0WmVybzogb3B0aW9uLmJlZ2luQXRaZXJvID8/IHRydWUsXHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRpY2tzPy55TGFiZWwodmFsdWUsIGluZGV4KSB8fCAoTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSA/IE51bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpIDogdmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2NhbGVMYWJlbDoge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICEhb3B0aW9uLnlUaXRsZSxcclxuICAgICAgICAgICAgICBsYWJlbFN0cmluZzogb3B0aW9uLnlUaXRsZSB8fCAnJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9vbHRpcHM6IHtcclxuICAgICAgICAgIGNhbGxiYWNrczoge1xyXG4gICAgICAgICAgICBsYWJlbDogKHRvb2x0aXBJdGVtLCBkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZGF0YXNldExhYmVsID0gZGF0YT8uZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XT8ubGFiZWw7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBkYXRhPy5sYWJlbHNbdG9vbHRpcEl0ZW0uaW5kZXhdIGFzIHN0cmluZztcclxuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGE/LmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0/LmRhdGFbdG9vbHRpcEl0ZW0uaW5kZXhdIGFzIG51bWJlcjtcclxuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRvb2x0aXBzPy5sYWJlbCh7XHJcbiAgICAgICAgICAgICAgICBkYXRhc2V0TGFiZWwsXHJcbiAgICAgICAgICAgICAgICBsYWJlbCxcclxuICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgfSkgfHwgYCR7ZGF0YXNldExhYmVsfSA6ICR7TnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSl9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgdHlwZTogJ2JhcicsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsYWJlbHM6IG9wdGlvbi5sYWJlbHMsXHJcbiAgICAgICAgZGF0YXNldHM6IG9wdGlvbi5kYXRhc2V0cy5tYXAoKGUsIGlkeCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZHluYW1pY0NvbG9yID0gdGhpcy5keW5hbWljQ29sb3I7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IENoYXJ0LkNoYXJ0RGF0YVNldHMgPSB7XHJcbiAgICAgICAgICAgIGxhYmVsOiBlLmxhYmVsLFxyXG4gICAgICAgICAgICBmaWxsOiBlLmJhY2tncm91bmRDb2xvciB8fCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbj8uZGVmYXVsdENvbG9ycz8uW2lkeF0/LmJhY2tncm91bmRDb2xvciB8fCBkeW5hbWljQ29sb3IsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZS5iYWNrZ3JvdW5kQ29sb3IgfHwgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmRlZmF1bHRDb2xvcnM/LltpZHhdPy5iYWNrZ3JvdW5kQ29sb3IgfHwgZHluYW1pY0NvbG9yLFxyXG4gICAgICAgICAgICBkYXRhOiBlLmRhdGEsXHJcbiAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChvcHRpb24uaG92ZXIgPT09ICdTaG93QWxsJykge1xyXG4gICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMudG9vbHRpcHMgPSB7XHJcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzLFxyXG4gICAgICAgIG1vZGU6ICdpbmRleCcsXHJcbiAgICAgICAgaW50ZXJzZWN0OiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMuaG92ZXIgPSB7XHJcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyLFxyXG4gICAgICAgIG1vZGU6ICdpbmRleCcsXHJcbiAgICAgICAgaW50ZXJzZWN0OiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jdHgsIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVuZGVySG9yaXpvbnRhbEJhckNoYXJ0KG9wdGlvbjogSG9yaXpvbnRhbEJhckNoYXJ0T3B0aW9uKSB7XHJcbiAgICAvLyBjb25zdCBsYWJlbFdpZHRoID0gb3B0aW9uLmxhYmVsV2lkdGggPz8gNTA7XHJcbiAgICAvLyBpZiAob3B0aW9uLmRhdGFzZXRzLmxlbmd0aCkge1xyXG4gICAgLy8gICBjb25zdCBuZXd3aWR0aCA9IE1hdGgubWF4KG9wdGlvbi5sYWJlbHMubGVuZ3RoICogb3B0aW9uLmRhdGFzZXRzLmxlbmd0aCAqIGxhYmVsV2lkdGgsICQodGhpcy5jaGFydFdyYXBwZXJSZWYubmF0aXZlRWxlbWVudCkud2lkdGgoKSk7XHJcbiAgICAvLyAgICQodGhpcy5jaGFydEFyZWFXcmFwcGVyRXh0ZW5kUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKG5ld3dpZHRoKTtcclxuICAgIC8vIH1cclxuICAgIGNvbnN0IHBsdWdpbnM6Q2hhcnQuUGx1Z2luU2VydmljZVJlZ2lzdHJhdGlvbk9wdGlvbnNbXSA9IFtdO1xyXG4gICAgaWYgKG9wdGlvbi5zaG93VG90YWxTdGFjayl7XHJcbiAgICAgIHBsdWdpbnMucHVzaCh0aGlzLiNkcmF3VG90YWxPZlN0YWNrZWRCYXIob3B0aW9uLnR5cGUpKVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogQ2hhcnQuQ2hhcnRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcclxuICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcclxuICAgICAgICBsZWdlbmQ6IHtcclxuICAgICAgICAgIGRpc3BsYXk6ICFvcHRpb24uaGlkZUxlZ2VuZCxcclxuICAgICAgICAgIG9uQ2xpY2s6IChldmVudCwgbGVnZW5kSXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSBsZWdlbmRJdGVtLmRhdGFzZXRJbmRleDtcclxuICAgICAgICAgICAgbGV0IGNpID0gdGhpcy5jaGFydDtcclxuICAgICAgICAgICAgbGV0IG1ldGEgPSBjaS5nZXREYXRhc2V0TWV0YShpbmRleCk7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb24uc2hvd1RvdGFsU3RhY2spe1xyXG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIC8vIFNlZSBjb250cm9sbGVyLmlzRGF0YXNldFZpc2libGUgY29tbWVudFxyXG4gICAgICAgICAgICBtZXRhLmhpZGRlbiA9IG1ldGEuaGlkZGVuID09PSBudWxsID8gIWNpLmRhdGEuZGF0YXNldHNbaW5kZXhdLmhpZGRlbiA6IG51bGw7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIFdlIGhpZCBhIGRhdGFzZXQgLi4uIHJlcmVuZGVyIHRoZSBjaGFydFxyXG4gICAgICAgICAgICBjaS51cGRhdGUoKTsgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGF5b3V0OntcclxuICAgICAgICAgIHBhZGRpbmc6e1xyXG4gICAgICAgICAgICByaWdodDoyMFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgICB4QXhlczogW3tcclxuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgc2NhbGVMYWJlbDoge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICEhb3B0aW9uLnhUaXRsZSxcclxuICAgICAgICAgICAgICBsYWJlbFN0cmluZzogb3B0aW9uLnhUaXRsZSB8fCAnJyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RhY2tlZDp0cnVlLFxyXG4gICAgICAgICAgICB0aWNrczoge1xyXG4gICAgICAgICAgICAgIGJlZ2luQXRaZXJvOiBvcHRpb24uYmVnaW5BdFplcm8gPz8gdHJ1ZSxcclxuICAgICAgICAgICAgICBjYWxsYmFjazogKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udGlja3M/LnhMYWJlbCh2YWx1ZSwgaW5kZXgpIHx8IChOdW1iZXIuaXNOdW1iZXIodmFsdWUpID8gTnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSkgOiB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfV0sXHJcbiAgICAgICAgICB5QXhlczogW3tcclxuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgc3RhY2tlZDp0cnVlLFxyXG4gICAgICAgICAgICB0aWNrczoge1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWU6IG51bWJlciB8IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50aWNrcz8ueUxhYmVsKHZhbHVlLCBpbmRleCkgfHwgKE51bWJlci5pc051bWJlcih2YWx1ZSkgPyBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKSA6IHZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiAhIW9wdGlvbi55VGl0bGUsXHJcbiAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6IG9wdGlvbi55VGl0bGUgfHwgJydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfV1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvb2x0aXBzOiB7XHJcbiAgICAgICAgICBjYWxsYmFja3M6IHtcclxuICAgICAgICAgICAgbGFiZWw6ICh0b29sdGlwSXRlbSwgZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGFzZXRMYWJlbCA9IGRhdGE/LmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0/LmxhYmVsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZGF0YT8ubGFiZWxzW3Rvb2x0aXBJdGVtLmluZGV4XSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBkYXRhPy5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdPy5kYXRhW3Rvb2x0aXBJdGVtLmluZGV4XSBhcyBudW1iZXI7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50b29sdGlwcz8ubGFiZWwoe1xyXG4gICAgICAgICAgICAgICAgZGF0YXNldExhYmVsLFxyXG4gICAgICAgICAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICAgIH0pIHx8IGAke2RhdGFzZXRMYWJlbH0gOiAke051bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHR5cGU6ICdob3Jpem9udGFsQmFyJyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxhYmVsczogb3B0aW9uLmxhYmVscyxcclxuICAgICAgICBkYXRhc2V0czogb3B0aW9uLmRhdGFzZXRzLm1hcCgoZSwgaWR4KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkeW5hbWljQ29sb3IgPSB0aGlzLmR5bmFtaWNDb2xvcjtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdDogQ2hhcnQuQ2hhcnREYXRhU2V0cyA9IHtcclxuICAgICAgICAgICAgbGFiZWw6IGUubGFiZWwsXHJcbiAgICAgICAgICAgIGZpbGw6IGUuYmFja2dyb3VuZENvbG9yIHx8IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5kZWZhdWx0Q29sb3JzPy5baWR4XT8uYmFja2dyb3VuZENvbG9yIHx8IGR5bmFtaWNDb2xvcixcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBlLmJhY2tncm91bmRDb2xvciB8fCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbj8uZGVmYXVsdENvbG9ycz8uW2lkeF0/LmJhY2tncm91bmRDb2xvciB8fCBkeW5hbWljQ29sb3IsXHJcbiAgICAgICAgICAgIGRhdGE6IGUuZGF0YSxcclxuICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2tcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH0sXHJcbiAgICAgIHBsdWdpbnM6cGx1Z2luc1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9uLmhvdmVyID09PSAnU2hvd0FsbCcpIHtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy50b29sdGlwcyxcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy5ob3ZlcixcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY3R4LCBjb25maWd1cmF0aW9uKTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmRlckxpbmVDaGFydChvcHRpb246IExpbmVDaGFydE9wdGlvbikge1xyXG4gICAgY29uc3QgbGFiZWxXaWR0aCA9IG9wdGlvbi5sYWJlbFdpZHRoID8/IDUwO1xyXG4gICAgaWYgKG9wdGlvbi5kYXRhc2V0cy5sZW5ndGgpIHtcclxuICAgICAgLy8gY29uc3QgbmV3d2lkdGggPSBNYXRoLm1heChvcHRpb24ubGFiZWxzLmxlbmd0aCAqIGxhYmVsV2lkdGgsICQodGhpcy5jaGFydFdyYXBwZXJSZWYubmF0aXZlRWxlbWVudCkud2lkdGgoKSk7XHJcbiAgICAgIC8vICQodGhpcy5jaGFydEFyZWFXcmFwcGVyRXh0ZW5kUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKG5ld3dpZHRoKTtcclxuICAgICAgY29uc3QgbmV3d2lkdGggPSBvcHRpb24ubGFiZWxzLmxlbmd0aCAqIGxhYmVsV2lkdGg7XHJcbiAgICAgICQodGhpcy5jaGFydEFyZWFXcmFwcGVyRXh0ZW5kUmVmLm5hdGl2ZUVsZW1lbnQpLmNzcygnd2lkdGgnLCBgbWF4KDEwMCUsJHtuZXd3aWR0aH1weClgKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IENoYXJ0LkNoYXJ0Q29uZmlndXJhdGlvbiA9IHtcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXHJcbiAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXHJcbiAgICAgICAgbGVnZW5kOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiAhb3B0aW9uLmhpZGVMZWdlbmRcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNjYWxlczoge1xyXG4gICAgICAgICAgeEF4ZXM6IFt7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsXHJcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiAhIW9wdGlvbi54VGl0bGUsXHJcbiAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6IG9wdGlvbi54VGl0bGUgfHwgJydcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgICAgICBjYWxsYmFjazogKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udGlja3M/LnhMYWJlbCh2YWx1ZSwgaW5kZXgpIHx8IChOdW1iZXIuaXNOdW1iZXIodmFsdWUpID8gTnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSkgOiB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfV0sXHJcbiAgICAgICAgICB5QXhlczogW3tcclxuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgICAgICBiZWdpbkF0WmVybzogb3B0aW9uLmJlZ2luQXRaZXJvID8/IHRydWUsXHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRpY2tzPy55TGFiZWwodmFsdWUsIGluZGV4KSB8fCAoTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSA/IE51bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpIDogdmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2NhbGVMYWJlbDoge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICEhb3B0aW9uLnlUaXRsZSxcclxuICAgICAgICAgICAgICBsYWJlbFN0cmluZzogb3B0aW9uLnlUaXRsZSB8fCAnJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9vbHRpcHM6IHtcclxuICAgICAgICAgIGNhbGxiYWNrczoge1xyXG4gICAgICAgICAgICBsYWJlbDogKHRvb2x0aXBJdGVtLCBkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZGF0YXNldExhYmVsID0gZGF0YT8uZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XT8ubGFiZWw7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBkYXRhPy5sYWJlbHNbdG9vbHRpcEl0ZW0uaW5kZXhdIGFzIHN0cmluZztcclxuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGE/LmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0/LmRhdGFbdG9vbHRpcEl0ZW0uaW5kZXhdIGFzIG51bWJlcjtcclxuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRvb2x0aXBzPy5sYWJlbCh7XHJcbiAgICAgICAgICAgICAgICBkYXRhc2V0TGFiZWwsXHJcbiAgICAgICAgICAgICAgICBsYWJlbCxcclxuICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgfSkgfHwgYCR7ZGF0YXNldExhYmVsfSA6ICR7TnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSl9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgdHlwZTogJ2xpbmUnLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGFiZWxzOiBvcHRpb24ubGFiZWxzLFxyXG4gICAgICAgIGRhdGFzZXRzOiBvcHRpb24uZGF0YXNldHMubWFwKChlLCBpZHgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGR5bmFtaWNDb2xvciA9IHRoaXMuZHluYW1pY0NvbG9yO1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0OiBDaGFydC5DaGFydERhdGFTZXRzID0ge1xyXG4gICAgICAgICAgICBsYWJlbDogZS5sYWJlbCxcclxuICAgICAgICAgICAgZmlsbDogZS5iYWNrZ3JvdW5kQ29sb3IgfHwgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmRlZmF1bHRDb2xvcnM/LltpZHhdPy5iYWNrZ3JvdW5kQ29sb3IgfHwgZHluYW1pY0NvbG9yLFxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGUuYmFja2dyb3VuZENvbG9yIHx8IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5kZWZhdWx0Q29sb3JzPy5baWR4XT8uYmFja2dyb3VuZENvbG9yIHx8IGR5bmFtaWNDb2xvcixcclxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGUuYm9yZGVyQ29sb3IgfHwgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmRlZmF1bHRDb2xvcnM/LltpZHhdPy5ib3JkZXJDb2xvciB8fCBkeW5hbWljQ29sb3IsXHJcbiAgICAgICAgICAgIGRhdGE6IGUuZGF0YSxcclxuICAgICAgICAgICAgbGluZVRlbnNpb246IDAsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChvcHRpb24uaG92ZXIgPT09ICdTaG93QWxsJykge1xyXG4gICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMudG9vbHRpcHMgPSB7XHJcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzLFxyXG4gICAgICAgIG1vZGU6ICdpbmRleCcsXHJcbiAgICAgICAgaW50ZXJzZWN0OiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgICBjb25maWd1cmF0aW9uLm9wdGlvbnMuaG92ZXIgPSB7XHJcbiAgICAgICAgLi4uY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyLFxyXG4gICAgICAgIG1vZGU6ICdpbmRleCcsXHJcbiAgICAgICAgaW50ZXJzZWN0OiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jdHgsIGNvbmZpZ3VyYXRpb24pO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVuZGVyU3RhY2tBcmVhQ2hhcnQob3B0aW9uOiBTdGFja0FyZWFDaGFydE9wdGlvbikge1xyXG4gICAgY29uc3QgbGFiZWxXaWR0aCA9IG9wdGlvbi5sYWJlbFdpZHRoID8/IDUwO1xyXG4gICAgXHJcbiAgICBpZiAob3B0aW9uLmRhdGFzZXRzLmxlbmd0aCkge1xyXG4gICAgICAvLyBjb25zdCBuZXd3aWR0aCA9IE1hdGgubWF4KG9wdGlvbi5sYWJlbHMubGVuZ3RoICogbGFiZWxXaWR0aCwgJCh0aGlzLmNoYXJ0V3JhcHBlclJlZi5uYXRpdmVFbGVtZW50KS53aWR0aCgpKTtcclxuICAgICAgLy8gJCh0aGlzLmNoYXJ0QXJlYVdyYXBwZXJFeHRlbmRSZWYubmF0aXZlRWxlbWVudCkud2lkdGgobmV3d2lkdGgpO1xyXG4gICAgICBjb25zdCBuZXd3aWR0aCA9IG9wdGlvbi5sYWJlbHMubGVuZ3RoICogbGFiZWxXaWR0aDtcclxuICAgICAgJCh0aGlzLmNoYXJ0QXJlYVdyYXBwZXJFeHRlbmRSZWYubmF0aXZlRWxlbWVudCkuY3NzKCd3aWR0aCcsIGBtYXgoMTAwJSwke25ld3dpZHRofXB4KWApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogQ2hhcnQuQ2hhcnRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcclxuICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcclxuICAgICAgICBsZWdlbmQ6IHtcclxuICAgICAgICAgIGRpc3BsYXk6ICFvcHRpb24uaGlkZUxlZ2VuZFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgICB4QXhlczogW3tcclxuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgc2NhbGVMYWJlbDoge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICEhb3B0aW9uLnhUaXRsZSxcclxuICAgICAgICAgICAgICBsYWJlbFN0cmluZzogb3B0aW9uLnhUaXRsZSB8fCAnJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aWNrczoge1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWU6IG51bWJlciB8IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50aWNrcz8ueExhYmVsKHZhbHVlLCBpbmRleCkgfHwgKE51bWJlci5pc051bWJlcih2YWx1ZSkgPyBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKSA6IHZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9XSxcclxuICAgICAgICAgIHlBeGVzOiBbe1xyXG4gICAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICAgICAgICB0aWNrczoge1xyXG4gICAgICAgICAgICAgIGJlZ2luQXRaZXJvOiBvcHRpb24uYmVnaW5BdFplcm8gPz8gdHJ1ZSxcclxuICAgICAgICAgICAgICBjYWxsYmFjazogKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udGlja3M/LnlMYWJlbCh2YWx1ZSwgaW5kZXgpIHx8IChOdW1iZXIuaXNOdW1iZXIodmFsdWUpID8gTnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSkgOiB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdGFja2VkOiB0cnVlLFxyXG4gICAgICAgICAgICBzY2FsZUxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogISFvcHRpb24ueVRpdGxlLFxyXG4gICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiBvcHRpb24ueVRpdGxlIHx8ICcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1dXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0b29sdGlwczoge1xyXG4gICAgICAgICAgY2FsbGJhY2tzOiB7XHJcbiAgICAgICAgICAgIGxhYmVsOiAodG9vbHRpcEl0ZW0sIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBkYXRhc2V0TGFiZWwgPSBkYXRhPy5kYXRhc2V0c1t0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXhdPy5sYWJlbDtcclxuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGRhdGE/LmxhYmVsc1t0b29sdGlwSXRlbS5pbmRleF0gYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YT8uZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XT8uZGF0YVt0b29sdGlwSXRlbS5pbmRleF0gYXMgbnVtYmVyO1xyXG4gICAgICAgICAgICAgIHJldHVybiBvcHRpb24udG9vbHRpcHM/LmxhYmVsKHtcclxuICAgICAgICAgICAgICAgIGRhdGFzZXRMYWJlbCxcclxuICAgICAgICAgICAgICAgIGxhYmVsLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICB9KSB8fCBgJHtkYXRhc2V0TGFiZWx9IDogJHtOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB0eXBlOiAnbGluZScsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBsYWJlbHM6IG9wdGlvbi5sYWJlbHMsXHJcbiAgICAgICAgZGF0YXNldHM6IG9wdGlvbi5kYXRhc2V0cy5tYXAoKGUsIGlkeCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZHluYW1pY0NvbG9yID0gdGhpcy5keW5hbWljQ29sb3I7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IENoYXJ0LkNoYXJ0RGF0YVNldHMgPSB7XHJcbiAgICAgICAgICAgIGxhYmVsOiBlLmxhYmVsLFxyXG4gICAgICAgICAgICAvLyBmaWxsOiBlLmJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBlLmJhY2tncm91bmRDb2xvciB8fCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbj8uZGVmYXVsdENvbG9ycz8uW2lkeF0/LmJhY2tncm91bmRDb2xvciB8fCBkeW5hbWljQ29sb3IsXHJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBlLmJvcmRlckNvbG9yIHx8IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5kZWZhdWx0Q29sb3JzPy5baWR4XT8uYm9yZGVyQ29sb3IgfHwgZHluYW1pY0NvbG9yLFxyXG4gICAgICAgICAgICBkYXRhOiBlLmRhdGEsXHJcbiAgICAgICAgICAgIGxpbmVUZW5zaW9uOiAwLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9uLmhvdmVyID09PSAnU2hvd0FsbCcpIHtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy50b29sdGlwcyxcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy5ob3ZlcixcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY3R4LCBjb25maWd1cmF0aW9uKTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmRlckJhckxpbmVDaGFydChvcHRpb246IEJhckxpbmVDaGFydE9wdGlvbikge1xyXG4gICAgY29uc3QgcGx1Z2luczpDaGFydC5QbHVnaW5TZXJ2aWNlUmVnaXN0cmF0aW9uT3B0aW9uc1tdID0gW107XHJcbiAgICBpZiAob3B0aW9uLnNob3dUb3RhbFN0YWNrKXtcclxuICAgICAgcGx1Z2lucy5wdXNoKHRoaXMuI2RyYXdUb3RhbE9mU3RhY2tlZEJhcihvcHRpb24udHlwZSkpXHJcbiAgICB9XHJcbiAgICBjb25zdCBsYWJlbFdpZHRoID0gb3B0aW9uLmxhYmVsV2lkdGggPz8gNTA7XHJcbiAgICBpZiAob3B0aW9uLmRhdGFzZXRzLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBudW1iZXJPZkJhcnMgPSBvcHRpb24uZGF0YXNldHMuZmlsdGVyKGUgPT4gZS50eXBlID09PSAnYmFyJykubGVuZ3RoO1xyXG4gICAgICBpZiAobnVtYmVyT2ZCYXJzIDw9IDEpIHtcclxuICAgICAgICAvLyBjb25zdCBuZXd3aWR0aCA9IE1hdGgubWF4KG9wdGlvbi5sYWJlbHMubGVuZ3RoICogbGFiZWxXaWR0aCwgJCh0aGlzLmNoYXJ0V3JhcHBlclJlZi5uYXRpdmVFbGVtZW50KS53aWR0aCgpKTtcclxuICAgICAgICAvLyAkKHRoaXMuY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZi5uYXRpdmVFbGVtZW50KS53aWR0aChuZXd3aWR0aCk7XHJcbiAgICAgICAgY29uc3QgbmV3d2lkdGggPSBvcHRpb24ubGFiZWxzLmxlbmd0aCAqIGxhYmVsV2lkdGg7XHJcbiAgICAgICAgJCh0aGlzLmNoYXJ0QXJlYVdyYXBwZXJFeHRlbmRSZWYubmF0aXZlRWxlbWVudCkuY3NzKCd3aWR0aCcsIGBtYXgoMTAwJSwke25ld3dpZHRofXB4KWApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGNvbnN0IG5ld3dpZHRoID0gTWF0aC5tYXgob3B0aW9uLmxhYmVscy5sZW5ndGggKiBudW1iZXJPZkJhcnMgKiBsYWJlbFdpZHRoLCAkKHRoaXMuY2hhcnRXcmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKCkpO1xyXG4gICAgICAgIC8vICQodGhpcy5jaGFydEFyZWFXcmFwcGVyRXh0ZW5kUmVmLm5hdGl2ZUVsZW1lbnQpLndpZHRoKG5ld3dpZHRoKTtcclxuICAgICAgICBjb25zdCBuZXd3aWR0aCA9IG9wdGlvbi5sYWJlbHMubGVuZ3RoICogbnVtYmVyT2ZCYXJzICogbGFiZWxXaWR0aDtcclxuICAgICAgICAkKHRoaXMuY2hhcnRBcmVhV3JhcHBlckV4dGVuZFJlZi5uYXRpdmVFbGVtZW50KS5jc3MoJ3dpZHRoJywgYG1heCgxMDAlLCR7bmV3d2lkdGh9cHgpYCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGxlZnRJZCA9IGBJJHt1dWlkLnY0KCl9YDtcclxuICAgIGNvbnN0IHJpZ2h0SWQgPSBgSSR7dXVpZC52NCgpfWA7XHJcbiAgICBjb25zdCB5QXhlcyA9IFt7XHJcbiAgICAgIHR5cGU6ICdsaW5lYXInLFxyXG4gICAgICBkaXNwbGF5OiB0cnVlLFxyXG4gICAgICBwb3NpdGlvbjogJ2xlZnQnLFxyXG4gICAgICBpZDogbGVmdElkLFxyXG4gICAgICB0aWNrczoge1xyXG4gICAgICAgIGJlZ2luQXRaZXJvOiBvcHRpb24uYmVnaW5BdFplcm8gPz8gdHJ1ZSxcclxuICAgICAgICBzdWdnZXN0ZWRNaW46IDAsXHJcbiAgICAgICAgY2FsbGJhY2s6ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLnRpY2tzPy55TGFiZWwodmFsdWUsIGluZGV4KSB8fCAoTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSA/IE51bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpIDogdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgc2NhbGVMYWJlbDoge1xyXG4gICAgICAgIGRpc3BsYXk6ICEhb3B0aW9uLnlUaXRsZSxcclxuICAgICAgICBsYWJlbFN0cmluZzogb3B0aW9uLnlUaXRsZSB8fCAnJyxcclxuICAgICAgfSxcclxuICAgICAgc3RhY2tlZDohIW9wdGlvbi55U3RhY2tlZCxcclxuICAgIH1dO1xyXG4gICAgaWYgKG9wdGlvbi5kYXRhc2V0cy5zb21lKGUgPT4gZS55QWxpZ24gPT09ICdyaWdodCcpKSB7XHJcbiAgICAgIHlBeGVzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6ICdsaW5lYXInLFxyXG4gICAgICAgIGRpc3BsYXk6IHRydWUsXHJcbiAgICAgICAgcG9zaXRpb246ICdyaWdodCcsXHJcbiAgICAgICAgaWQ6IHJpZ2h0SWQsXHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGJlZ2luQXRaZXJvOiBvcHRpb24uYmVnaW5BdFplcm8gPz8gdHJ1ZSxcclxuICAgICAgICAgIHN1Z2dlc3RlZE1pbjogMCxcclxuICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWU6IG51bWJlciB8IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRpY2tzPy55UmlnaHRMYWJlbCh2YWx1ZSwgaW5kZXgpIHx8IChOdW1iZXIuaXNOdW1iZXIodmFsdWUpID8gTnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSkgOiB2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzY2FsZUxhYmVsOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiAhIW9wdGlvbi55UmlnaHRUaXRsZSxcclxuICAgICAgICAgIGxhYmVsU3RyaW5nOiBvcHRpb24ueVJpZ2h0VGl0bGUgfHwgJydcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0YWNrZWQ6ISFvcHRpb24ueVN0YWNrZWQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogQ2hhcnQuQ2hhcnRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcclxuICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcclxuICAgICAgICBsZWdlbmQ6IHtcclxuICAgICAgICAgIGRpc3BsYXk6ICFvcHRpb24uaGlkZUxlZ2VuZCxcclxuICAgICAgICAgIG9uQ2xpY2s6IChldmVudCwgbGVnZW5kSXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSBsZWdlbmRJdGVtLmRhdGFzZXRJbmRleDtcclxuICAgICAgICAgICAgbGV0IGNpID0gdGhpcy5jaGFydDtcclxuICAgICAgICAgICAgbGV0IG1ldGEgPSBjaS5nZXREYXRhc2V0TWV0YShpbmRleCk7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb24uc2hvd1RvdGFsU3RhY2spe1xyXG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIC8vIFNlZSBjb250cm9sbGVyLmlzRGF0YXNldFZpc2libGUgY29tbWVudFxyXG4gICAgICAgICAgICBtZXRhLmhpZGRlbiA9IG1ldGEuaGlkZGVuID09PSBudWxsID8gIWNpLmRhdGEuZGF0YXNldHNbaW5kZXhdLmhpZGRlbiA6IG51bGw7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIFdlIGhpZCBhIGRhdGFzZXQgLi4uIHJlcmVuZGVyIHRoZSBjaGFydFxyXG4gICAgICAgICAgICBjaS51cGRhdGUoKTsgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcG9zaXRpb246IG9wdGlvbj8ubGVnZW5kUG9zaXRpb24gPz8gJ3RvcCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxheW91dDp7XHJcbiAgICAgICAgICBwYWRkaW5nOjEwXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgIHRleHQ6IG9wdGlvbi50aXRsZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgICB4QXhlczogW3tcclxuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgc2NhbGVMYWJlbDoge1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICEhb3B0aW9uLnhUaXRsZSxcclxuICAgICAgICAgICAgICBsYWJlbFN0cmluZzogb3B0aW9uLnhUaXRsZSB8fCAnJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aWNrczoge1xyXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiAodmFsdWU6IG51bWJlciB8IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50aWNrcz8ueExhYmVsKHZhbHVlLCBpbmRleCkgfHwgKE51bWJlci5pc051bWJlcih2YWx1ZSkgPyBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKSA6IHZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0YWNrZWQ6ICEhb3B0aW9uLnhTdGFja2VkXHJcbiAgICAgICAgICB9XSxcclxuICAgICAgICAgIHlBeGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0b29sdGlwczogeyAgICAgICAgICBcclxuICAgICAgICAgIGNhbGxiYWNrczoge1xyXG4gICAgICAgICAgICBsYWJlbDogKHRvb2x0aXBJdGVtLCBkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZGF0YXNldExhYmVsID0gZGF0YT8uZGF0YXNldHNbdG9vbHRpcEl0ZW0uZGF0YXNldEluZGV4XT8ubGFiZWw7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBkYXRhPy5sYWJlbHNbdG9vbHRpcEl0ZW0uaW5kZXhdIGFzIHN0cmluZztcclxuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGE/LmRhdGFzZXRzW3Rvb2x0aXBJdGVtLmRhdGFzZXRJbmRleF0/LmRhdGFbdG9vbHRpcEl0ZW0uaW5kZXhdIGFzIG51bWJlcjtcclxuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRvb2x0aXBzPy5sYWJlbCh7XHJcbiAgICAgICAgICAgICAgICBkYXRhc2V0TGFiZWwsXHJcbiAgICAgICAgICAgICAgICBsYWJlbCxcclxuICAgICAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgICAgICAgZGF0YXNldEluZGV4OiB0b29sdGlwSXRlbS5kYXRhc2V0SW5kZXgsXHJcbiAgICAgICAgICAgICAgICBkYXRhSW5kZXg6dG9vbHRpcEl0ZW0uaW5kZXhcclxuICAgICAgICAgICAgICB9KSB8fCBgJHtkYXRhc2V0TGFiZWwgPyBgWyR7ZGF0YXNldExhYmVsfV0gYCA6ICcnfSAke2xhYmVsfSA6ICR7TnVtYmVyLnRvVk5DdXJyZW5jeSh2YWx1ZSl9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxhYmVsczogb3B0aW9uLmxhYmVscyxcclxuICAgICAgICBkYXRhc2V0czogb3B0aW9uLmRhdGFzZXRzLm1hcCgoZSwgaWR4KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkeW5hbWljQ29sb3IgPSB0aGlzLmR5bmFtaWNDb2xvcjtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdDogQ2hhcnQuQ2hhcnREYXRhU2V0cyA9IHtcclxuICAgICAgICAgICAgdHlwZTogZS50eXBlLFxyXG4gICAgICAgICAgICBsYWJlbDogZS5sYWJlbCxcclxuICAgICAgICAgICAgZmlsbDogZS5iYWNrZ3JvdW5kQ29sb3IgfHwgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmRlZmF1bHRDb2xvcnM/LltpZHhdPy5iYWNrZ3JvdW5kQ29sb3IgfHwgZHluYW1pY0NvbG9yLFxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGUuYmFja2dyb3VuZENvbG9yIHx8IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5kZWZhdWx0Q29sb3JzPy5baWR4XT8uYmFja2dyb3VuZENvbG9yIHx8IGR5bmFtaWNDb2xvcixcclxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGUuYm9yZGVyQ29sb3IgfHwgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmRlZmF1bHRDb2xvcnM/LltpZHhdPy5ib3JkZXJDb2xvciB8fCBkeW5hbWljQ29sb3IsXHJcbiAgICAgICAgICAgIGRhdGE6IGUuZGF0YSxcclxuICAgICAgICAgICAgeUF4aXNJRDogZS55QWxpZ24gPT09ICdyaWdodCcgPyByaWdodElkIDogbGVmdElkLFxyXG4gICAgICAgICAgICBsaW5lVGVuc2lvbjogMCxcclxuICAgICAgICAgICAgb3JkZXI6ZS5vcmRlciA/PyAxXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9KSxcclxuICAgICAgfSxcclxuICAgICAgcGx1Z2luczogcGx1Z2luc1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9uLmhvdmVyID09PSAnU2hvd0FsbCcpIHtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLnRvb2x0aXBzID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy50b29sdGlwcyxcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgY29uZmlndXJhdGlvbi5vcHRpb25zLmhvdmVyID0ge1xyXG4gICAgICAgIC4uLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy5ob3ZlcixcclxuICAgICAgICBtb2RlOiAnaW5kZXgnLFxyXG4gICAgICAgIGludGVyc2VjdDogZmFsc2VcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY3R4LCBjb25maWd1cmF0aW9uKTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBsb2FkaW5nU3RhcnQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBkeW5hbWljQ29sb3IoKSB7XHJcbiAgICBjb25zdCByID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjU1KTtcclxuICAgIGNvbnN0IGcgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyNTUpO1xyXG4gICAgY29uc3QgYiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI1NSk7XHJcbiAgICByZXR1cm4gJ3JnYignICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJyknO1xyXG4gIH1cclxuXHJcbiAgI2RyYXdUb3RhbE9mU3RhY2tlZEJhciA9IChjaGFydFR5cGU6J2JhcmxpbmUnIHwgJ2JhcicgfCAnaG9yaXpvbnRhbEJhcicpOkNoYXJ0LlBsdWdpblNlcnZpY2VSZWdpc3RyYXRpb25PcHRpb25zID0+IHtcclxuICAgIHJldHVybiAge1xyXG4gICAgICBhZnRlckRyYXcoY2hhcnRJbnN0YW5jZSwgZWFzaW5nLCBvcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKGNoYXJ0SW5zdGFuY2U/LmRhdGE/LmRhdGFzZXRzPy5sZW5ndGgpe1xyXG4gICAgICAgICAgY29uc3QgY3R4ID0gY2hhcnRJbnN0YW5jZS5jdHg7XHJcbiAgICAgICAgICBjaGFydEluc3RhbmNlLmRhdGEuZGF0YXNldHNbMF0uZGF0YS5mb3JFYWNoKCAgKGRhdGFQb2ludCxpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBjdXJMYXN0SW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgIGxldCBjdXJUb3RhbCA9IDA7XHJcbiAgICAgICAgICAgICAgY2hhcnRJbnN0YW5jZS5kYXRhLmRhdGFzZXRzLmZvckVhY2goIChkYXRhc2V0LHNldEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YXNldC5kYXRhW2luZGV4XSAhPSAwICYmICghZGF0YXNldC5oaWRkZW4pICYmIGRhdGFzZXQudHlwZSAhPT0gJ2xpbmUnKXtcclxuICAgICAgICAgICAgICAgICAgY3VyTGFzdEluZGV4ID0gc2V0SW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChOdW1iZXIuaXNOdW1iZXIoZGF0YXNldC5kYXRhW2luZGV4XSkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGN1clRvdGFsICs9IE51bWJlcihkYXRhc2V0LmRhdGFbaW5kZXhdKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBlbHNlIGN1clRvdGFsICs9IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICBjb25zdCB7eCx5fSA9IGNoYXJ0SW5zdGFuY2UuZ2V0RGF0YXNldE1ldGEoY3VyTGFzdEluZGV4KS5kYXRhW2luZGV4XS5fbW9kZWw7XHJcbiAgICAgICAgICAgICAgY29uc3QgdGV4dFdpZHRoID0gY3R4Lm1lYXN1cmVUZXh0KGN1clRvdGFsLnRvU3RyaW5nKCkpLndpZHRoO1xyXG4gICAgICAgICAgICAgIGN0eC5maWxsU3R5bGU9ICdibGFjayc7XHJcbiAgICAgICAgICAgICAgbGV0IHhUZXh0UG9zaXRpb24gPSAoeC10ZXh0V2lkdGgvMiApIC0gdGV4dFdpZHRoID4gMCA/ICh4LXRleHRXaWR0aC8yICkgOiAwO1xyXG4gICAgICAgICAgICAgIGlmIChpbmRleCA9PSAwKXtcclxuICAgICAgICAgICAgICAgIHhUZXh0UG9zaXRpb24gPSB4ICsgMTA7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKGluZGV4ID09PSBjaGFydEluc3RhbmNlLmRhdGEuZGF0YXNldHNbMF0uZGF0YS5sZW5ndGggLSAxICl7XHJcbiAgICAgICAgICAgICAgICB4VGV4dFBvc2l0aW9uID0geCAtIHRleHRXaWR0aCAtIDEwO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjdHguZm9udCA9ICczMDAgMTBweCdcclxuICAgICAgICAgICAgICBjdHguZmlsbFRleHQoY3VyVG90YWwudG9TdHJpbmcoKSwgY2hhcnRUeXBlID09PSAnaG9yaXpvbnRhbEJhcicgPyB4ICsgMTAgOiB4VGV4dFBvc2l0aW9uLCBjaGFydFR5cGUgPT09ICdob3Jpem9udGFsQmFyJyA/IHkgOiB5LTEwKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gICAgICAgICBcclxuICAgICAgfSxcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -399,11 +399,20 @@ class SdChart {
399
399
  maintainAspectRatio: false,
400
400
  legend: {
401
401
  display: !option.hideLegend,
402
- onClick: (event) => {
402
+ onClick: (event, legendItem) => {
403
+ let index = legendItem.datasetIndex;
404
+ let ci = this.chart;
405
+ let meta = ci.getDatasetMeta(index);
403
406
  if (option.showTotalStack) {
404
407
  event.stopPropagation();
405
408
  }
406
- }
409
+ else {
410
+ // See controller.isDatasetVisible comment
411
+ meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;
412
+ // We hid a dataset ... rerender the chart
413
+ ci.update();
414
+ }
415
+ },
407
416
  },
408
417
  layout: {
409
418
  padding: {
@@ -725,10 +734,19 @@ class SdChart {
725
734
  maintainAspectRatio: false,
726
735
  legend: {
727
736
  display: !option.hideLegend,
728
- onClick(event, legendItem) {
737
+ onClick: (event, legendItem) => {
738
+ let index = legendItem.datasetIndex;
739
+ let ci = this.chart;
740
+ let meta = ci.getDatasetMeta(index);
729
741
  if (option.showTotalStack) {
730
742
  event.stopPropagation();
731
743
  }
744
+ else {
745
+ // See controller.isDatasetVisible comment
746
+ meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;
747
+ // We hid a dataset ... rerender the chart
748
+ ci.update();
749
+ }
732
750
  },
733
751
  position: (_d = option === null || option === void 0 ? void 0 : option.legendPosition) !== null && _d !== void 0 ? _d : 'top'
734
752
  },