bbj-screen-widget 2.4.54 → 2.4.55

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.
@@ -43,6 +43,7 @@ let BaiduMarkerLayerComponent = class BaiduMarkerLayerComponent extends BaseLaye
43
43
  space: 0,
44
44
  lineHeight: 0,
45
45
  };
46
+ this.shadow = { color: '', X: 0, Y: 0, Z: 0 };
46
47
  this.unselectOnClickBlank = true;
47
48
  this.groups = [];
48
49
  this._data = [
@@ -112,7 +113,23 @@ let BaiduMarkerLayerComponent = class BaiduMarkerLayerComponent extends BaseLaye
112
113
  // color: '#fff',
113
114
  // fontFamily: 'Microsoft Yahei',
114
115
  // fontSize: 14,
115
- flat: false, collides: true, offset: [this.labelOffsetX || 0, this.labelOffsetY || 0], padding: [2, 2], margin: [0, 0] });
116
+ flat: false, collides: true, offset: [this.labelOffsetX || 0, this.labelOffsetY || 0], stroke: {
117
+ color: this.stroke,
118
+ }, padding: [2, 2], margin: [0, 0] });
119
+ if (this.stroke && this.stroke !== 'rgba(0,0,0,0)') {
120
+ textOptions.stroke = { color: this.stroke };
121
+ }
122
+ if (this.strokeWidth) {
123
+ textOptions.lineWidth = this.strokeWidth;
124
+ }
125
+ if (this.shadow) {
126
+ textOptions.shadow = {
127
+ color: this.shadow.color,
128
+ blur: this.shadow.Z,
129
+ offsetX: this.shadow.X,
130
+ offsetY: this.shadow.Y,
131
+ };
132
+ }
116
133
  this.textLayer = new mapvgl.TextLayer(textOptions);
117
134
  if (this.showLabelMinZoom != null) {
118
135
  this.parent.init$.then(() => {
@@ -296,6 +313,20 @@ let BaiduMarkerLayerComponent = class BaiduMarkerLayerComponent extends BaseLaye
296
313
  textOptions.fontFamily = font.family;
297
314
  if (font.color)
298
315
  textOptions.color = font.color;
316
+ // switch (font.weight) {
317
+ // case 'lighter':
318
+ // textOptions.lineWidth = 1;
319
+ // break;
320
+ // case 'normal':
321
+ // textOptions.lineWidth = 2;
322
+ // break;
323
+ // case 'bold':
324
+ // textOptions.lineWidth = 3;
325
+ // break;
326
+ // case 'bolder':
327
+ // textOptions.lineWidth = 4;
328
+ // break;
329
+ // }
299
330
  }
300
331
  return textOptions;
301
332
  }
@@ -516,6 +547,22 @@ __decorate([
516
547
  Property('标签字体', { ui: { widget: 'myFont', visibleIf: { showLabel: [true] } } }),
517
548
  __metadata("design:type", Object)
518
549
  ], BaiduMarkerLayerComponent.prototype, "labelFont", void 0);
550
+ __decorate([
551
+ Property('描边颜色', {
552
+ ui: {
553
+ widget: 'myColor',
554
+ },
555
+ }),
556
+ __metadata("design:type", String)
557
+ ], BaiduMarkerLayerComponent.prototype, "stroke", void 0);
558
+ __decorate([
559
+ Property('描边粗细', { type: 'integer' }),
560
+ __metadata("design:type", Number)
561
+ ], BaiduMarkerLayerComponent.prototype, "strokeWidth", void 0);
562
+ __decorate([
563
+ Property('阴影', { ui: { widget: 'myShadow' } }),
564
+ __metadata("design:type", Object)
565
+ ], BaiduMarkerLayerComponent.prototype, "shadow", void 0);
519
566
  __decorate([
520
567
  Property('标签偏移x', { ui: { widget: 'number', visibleIf: { showLabel: [true] } } }),
521
568
  __metadata("design:type", Number)
@@ -682,4 +729,4 @@ BaiduMarkerLayerComponent = __decorate([
682
729
  ], BaiduMarkerLayerComponent);
683
730
  export { BaiduMarkerLayerComponent };
684
731
  export { ɵ0, ɵ1, ɵ2 };
685
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFpZHUtbWFya2VyLWxheWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjcmVlbi13aWRnZXQvc3JjL2xpYi9jdXN0b20tYmFpZHUtbWFwL2JhaWR1LW1hcmtlci1sYXllci9iYWlkdS1tYXJrZXItbGF5ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixNQUFNLEVBS04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSXZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztXQXNLakMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0F3QjdCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BYS9CLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBM0w5Qix5QkFB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LElBQWlDO2dCQUNuQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3hDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDcEMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2FBQ3JDO1NBQ0Y7S0FDRixDQUFDOzs2REFDOEI7QUFFaEM7SUFEQyxTQUFTLENBQUMsTUFBTSxDQUFDOzs2REFDQztBQVduQjtJQVZDLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFDWCxNQUFNLEVBQUU7WUFDTixVQUFVLEVBQUU7Z0JBQ1YsRUFBRSxJQUFpQztnQkFDbkMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN4QyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3BDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUNyQztTQUNGO0tBQ0YsQ0FBQzs7MERBQzJCO0FBbE1sQix5QkFBeUI7SUFOckMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSxFQUFFO1FBQ1QsSUFBSSxFQUFFLEVBQUU7UUFDUixNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUM7cUNBcU5vQix1QkFBdUI7UUFDekIsTUFBTTtRQUNFLGNBQWM7UUFDUixvQkFBb0I7R0F2TnpDLHlCQUF5QixDQXNsQnJDO1NBdGxCWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhLCBEYXRhT3V0cHV0LCBQcm9wZXJ0eSwgV2lkZ2V0LCBFdmVudCwgRGF0YUlucHV0IH0gZnJvbSAnYmJqLXdpZGdldC1iYXNlJztcbmltcG9ydCB7IFBhcmVudENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcmVudC1jb250YWluZXIvcGFyZW50LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU0ZBcnJheVdpZGdldFNjaGVtYSB9IGZyb20gJ0BkZWxvbi9mb3JtJztcbmltcG9ydCB7IGdldEZvbnRTdHlsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC91dGlsL3N0eWxlLnV0aWwnO1xuaW1wb3J0IHsgQ3VzdG9tQmFpZHVNYXBDb21wb25lbnQgfSBmcm9tICcuLi9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlTGF5ZXIgfSBmcm9tICcuLi9iYXNlLWxheWVyJztcbmltcG9ydCB7IEZpbGVVcmxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2UvZmlsZS11cmwuc2VydmljZSc7XG5pbXBvcnQgeyBOekNvbnRleHRNZW51U2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZHJvcGRvd24nO1xuaW1wb3J0IHsgU2Nyb2xsRGlzcGF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgZ2V0VVVJRCB9IGZyb20gJy4uLy4uL3NoYXJlZC91dGlsL2Jhc2UudXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmRlY2xhcmUgY29uc3QgbWFwdmdsO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYy1iYWlkdS1tYXJrZXItbGF5ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFpZHUtbWFya2VyLWxheWVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFpZHUtbWFya2VyLWxheWVyLmNvbXBvbmVudC5sZXNzJ10sXG4gIHByb3ZpZGVyczogW1Njcm9sbERpc3BhdGNoZXJdLCAvLyDpmLLmraLomZrmi5/mu5rliLDlr7zoh7Tmta7lsYLlhbPpl61cbn0pXG5AV2lkZ2V0KCfmoIforrDlsYInLCB7XG4gIGdyb3VwOiAnY29tcG9uZW50JyxcbiAgaW1hZ2U6ICcnLFxuICBpY29uOiAnJyxcbiAgaGlkZGVuOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBCYWlkdU1hcmtlckxheWVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUxheWVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBQcm9wZXJ0eSgnJywgeyBtaW46IDEsIHVpOiB7IHdpZGdldDogJ215UGljdHVyZScsIHNwYW5MYWJlbDogMCwgc3BhbkNvbnRyb2w6IDI0IH0gfSlcbiAgaWNvblVybCA9ICdhc3NldHMvaW1nL3NjcmVlbi9tYXJrZXIucG5nJztcbiAgQFByb3BlcnR5KCflm77moIflrr0nLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gIGljb25XaWR0aCA9IDI1O1xuICBAUHJvcGVydHkoJ+Wbvuagh+mrmCcsIHsgdHlwZTogJ251bWJlcicgfSlcbiAgaWNvbkhlaWdodCA9IDM4LjI1O1xuICBAUHJvcGVydHkoJ+Wbvuagh+WBj+enu3gnLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gIGljb25PZmZzZXRYID0gMDtcbiAgQFByb3BlcnR5KCflm77moIflgY/np7t5JywgeyB0eXBlOiAnbnVtYmVyJyB9KVxuICBpY29uT2Zmc2V0WSA9IC0xOS4xMjU7XG4gIC8vIEBQcm9wZXJ0eSgn5YiG57uEJywge3R5cGU6ICdzdHJpbmcnfSlcbiAgLy8gZ3JvdXAgPSAnJztcblxuICBAUHJvcGVydHkoJ+enu+iHs+S4reW/gycpXG4gIHRvQ2VudGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBQcm9wZXJ0eSgn54K56IGa5ZCIJylcbiAgZW5hYmxlTWFya2VyQ2x1c3RlcmVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBQcm9wZXJ0eSgn6IGa5ZCI5pyA5bCP55u05b6EJywgeyB0eXBlOiAnbnVtYmVyJywgdWk6IHsgdmlzaWJsZUlmOiB7IGVuYWJsZU1hcmtlckNsdXN0ZXJlcjogW3RydWVdIH0gfSB9KVxuICBjbHVzdGVyTWluU2l6ZSA9IDI1O1xuICBAUHJvcGVydHkoJ+iBmuWQiOacgOWkp+ebtOW+hCcsIHsgdHlwZTogJ251bWJlcicsIHVpOiB7IHZpc2libGVJZjogeyBlbmFibGVNYXJrZXJDbHVzdGVyZXI6IFt0cnVlXSB9IH0gfSlcbiAgY2x1c3Rlck1heFNpemUgPSA0MDtcbiAgQFByb3BlcnR5KCfogZrlkIjlrZfkvZMnLCB7IHVpOiB7IHdpZGdldDogJ215Rm9udCcgfSB9KVxuICBjbHVzdGVyRm9udDogYW55ID0ge1xuICAgIGNvbG9yOiAnI2ZmZmZmZicsXG4gICAgc2l6ZTogMTYsXG4gIH07XG4gIEBQcm9wZXJ0eSgn6IGa5ZCI6aKc6ImyJywge1xuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdzZXJpZXNDb2xvcicsXG4gICAgICB2aXNpYmxlSWY6IHsgZW5hYmxlTWFya2VyQ2x1c3RlcmVyOiBbdHJ1ZV0gfSxcbiAgICB9LFxuICB9KVxuICBjbHVzdGVyR3JhZGllbnQ6IHN0cmluZ1tdO1xuICBAUHJvcGVydHkoJ+iBmuWQiOacgOWkp+e6p+WIqycsIHsgdHlwZTogJ251bWJlcicsIHVpOiB7IHZpc2libGVJZjogeyBlbmFibGVNYXJrZXJDbHVzdGVyZXI6IFt0cnVlXSB9IH0gfSlcbiAgY2x1c3Rlck1heFpvb20gPSA0O1xuICBAUHJvcGVydHkoJ+aYvuekuuagh+etvicsIHsgdWk6IHsgdmlzaWJsZUlmOiB7IGVuYWJsZU1hcmtlckNsdXN0ZXJlcjogW2ZhbHNlXSB9IH0gfSlcbiAgc2hvd0xhYmVsOiBib29sZWFuO1xuICBAUHJvcGVydHkoJ+agh+etvuaYvuekuue8qeaUvuetiee6pycsIHsgdWk6IHsgdmlzaWJsZUlmOiB7IHNob3dMYWJlbDogW3RydWVdIH0gfSB9KVxuICBzaG93TGFiZWxNaW5ab29tOiBudW1iZXI7XG4gIC8vIEBQcm9wZXJ0eSgn5qCH562+5bqV6ImyJywgeyB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJywgdmlzaWJsZUlmOiB7IHNob3dMYWJlbDogW3RydWVdIH0gfSB9KVxuICAvLyBsYWJlbEJhY2tncm91bmQ6IHN0cmluZztcbiAgQFByb3BlcnR5KCfmoIfnrb7lrZfkvZMnLCB7IHVpOiB7IHdpZGdldDogJ215Rm9udCcsIHZpc2libGVJZjogeyBzaG93TGFiZWw6IFt0cnVlXSB9IH0gfSlcbiAgbGFiZWxGb250OiBhbnkgPSB7XG4gICAgZmFtaWx5OiAnJyxcbiAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgIHdlaWdodDogJ25vcm1hbCcsXG4gICAgc2l6ZTogMTYsXG4gICAgc3BhY2U6IDAsXG4gICAgbGluZUhlaWdodDogMCxcbiAgfTtcbiAgQFByb3BlcnR5KCfmoIfnrb7lgY/np7t4JywgeyB1aTogeyB3aWRnZXQ6ICdudW1iZXInLCB2aXNpYmxlSWY6IHsgc2hvd0xhYmVsOiBbdHJ1ZV0gfSB9IH0pXG4gIGxhYmVsT2Zmc2V0WDogbnVtYmVyO1xuICBAUHJvcGVydHkoJ+agh+etvuWBj+enu3knLCB7IHVpOiB7IHdpZGdldDogJ251bWJlcicsIHZpc2libGVJZjogeyBzaG93TGFiZWw6IFt0cnVlXSB9IH0gfSlcbiAgbGFiZWxPZmZzZXRZOiBudW1iZXI7XG4gIEBQcm9wZXJ0eSgn6YCJ5Lit5pS+5aSnJylcbiAgZW5sYXJnZU9uU2VsZWN0OiBib29sZWFuO1xuICBAUHJvcGVydHkoJ+eCueWHu+epuueZveWPlua2iOmAieS4rScsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiB0cnVlIH0pXG4gIHVuc2VsZWN0T25DbGlja0JsYW5rID0gdHJ1ZTtcbiAgQFByb3BlcnR5KCfmoIforrDliIbnu4QnLCB7XG4gICAgdHlwZTogJ2FycmF5JyxcbiAgICB0aXRsZTogJ+agh+iusOWIhue7hCcsXG4gICAgbWF4SXRlbXM6IDEwLFxuICAgIGl0ZW1zOiB7XG4gICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZ3JvdXA6IHtcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB0aXRsZTogJ+WIhue7hCcsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICB0aXRsZTogJ+exu+WeiycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgZW51bTogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ+WbvuaghycsXG4gICAgICAgICAgICAgIHZhbHVlOiAnaWNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ+WchueCuScsXG4gICAgICAgICAgICAgIHZhbHVlOiAnY2lyY2xlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAn5q2j5pa55b2iJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICdzcXVhcmUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICfms6LnurknLFxuICAgICAgICAgICAgICB2YWx1ZTogJ3dhdmUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICfmianmlaMnLFxuICAgICAgICAgICAgICB2YWx1ZTogJ2J1YmJsZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgZGVmYXVsdDogJ2ljb24nLFxuICAgICAgICB9LFxuICAgICAgICBjb2xvcjoge1xuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIHRpdGxlOiAn6aKc6ImyJyxcbiAgICAgICAgICB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJywgdmlzaWJsZUlmOiB7IHR5cGU6IFsnY2lyY2xlJywgJ3NxdWFyZSddIH0gfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2l6ZToge1xuICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgIHRpdGxlOiAn5bC65a+4JyxcbiAgICAgICAgICB1aTogeyB2aXNpYmxlSWY6IHsgdHlwZTogWydjaXJjbGUnLCAnc3F1YXJlJywgJ3dhdmUnLCAnYnViYmxlJ10gfSB9LFxuICAgICAgICB9LFxuICAgICAgICBpbWFnZVVybDoge1xuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIHRpdGxlOiAn5Zu+54mHJyxcbiAgICAgICAgICB1aToge1xuICAgICAgICAgICAgd2lkZ2V0OiAnbXlQaWN0dXJlJyxcbiAgICAgICAgICAgIHZpc2libGVJZjogeyB0eXBlOiBbJ2ljb24nXSB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgdGl0bGU6ICflrr3luqYnLFxuICAgICAgICAgIGRlZmF1bHQ6IDE5LFxuICAgICAgICAgIHVpOiB7IHZpc2libGVJZjogeyB0eXBlOiBbJ2ljb24nXSB9IH0sXG4gICAgICAgIH0sXG4gICAgICAgIGhlaWdodDoge1xuICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgIHRpdGxlOiAn6auY5bqmJyxcbiAgICAgICAgICBkZWZhdWx0OiAyNSxcbiAgICAgICAgICB1aTogeyB2aXNpYmxlSWY6IHsgdHlwZTogWydpY29uJ10gfSB9LFxuICAgICAgICB9LFxuICAgICAgICBYT2Zmc2V0OiB7XG4gICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgdGl0bGU6ICdY6L205YGP56e7JyxcbiAgICAgICAgICB1aTogeyB2aXNpYmxlSWY6IHsgdHlwZTogWydpY29uJ10gfSB9LFxuICAgICAgICB9LFxuICAgICAgICBZT2Zmc2V0OiB7XG4gICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgdGl0bGU6ICdZ6L205YGP56e7JyxcbiAgICAgICAgICB1aTogeyB2aXNpYmxlSWY6IHsgdHlwZTogWydpY29uJ10gfSB9LFxuICAgICAgICB9LFxuICAgICAgICBlbmFibGVNYXJrZXJDbHVzdGVyZXI6IHtcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgdGl0bGU6ICfmmK/lkKbogZrlkIgnLFxuICAgICAgICAgIHVpOiB7IHZpc2libGVJZjogeyB0eXBlOiBbJ2ljb24nXSB9IH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcmVxdWlyZWQ6IFtdLFxuICAgIH0sXG4gICAgdWk6IHsgZ3JpZDogeyBhcnJheVNwYW46IDI0IH0sIHNwYW5Db250cm9sOiAyNCB9IGFzIFNGQXJyYXlXaWRnZXRTY2hlbWEsXG4gIH0pXG4gIGdyb3VwcyA9IFtdO1xuICBARGF0YSh7XG4gICAgcHJvcGVydGllczoge1xuICAgICAgaWQ6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnaWQnIH0sXG4gICAgICBhZGRyZXNzOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ+WcsOeCuScgfSxcbiAgICAgIGluZm9ybWF0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ+S/oeaBrycgfSxcbiAgICAgIGdyb3VwOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ+agh+iusOWIhue7hCcgfSxcbiAgICAgIGxuZzogeyB0eXBlOiAnbnVtYmVyJywgdGl0bGU6ICfnu4/luqYnIH0sXG4gICAgICBsYXQ6IHsgdHlwZTogJ251bWJlcicsIHRpdGxlOiAn57qs5bqmJyB9LFxuICAgICAgaWNvbjogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICflm77moIcnIH0sXG4gICAgfSxcbiAgfSlcbiAgX2RhdGE6IGFueVtdID0gW1xuICAgIHtcbiAgICAgIGlkOiAnMScsXG4gICAgICBhZGRyZXNzOiAnJyxcbiAgICAgIGluZm9ybWF0aW9uOiAn5pqC5peg5L+h5oGvJyxcbiAgICAgIGdyb3VwOiAnJyxcbiAgICAgIGxuZzogJzEyMC43JyxcbiAgICAgIGxhdDogJzI4JyxcbiAgICB9LFxuICBdO1xuICAvLyBpZDogc3RyaW5nO1xuICBARGF0YU91dHB1dChbJ2lkJywgJ2FkZHJlc3MnLCAnbG5nJywgJ2xhdCddKVxuICBARXZlbnQoJ+mAieS4reWAvOaUueWPmCcsIHtcbiAgICBwYXJhbXM6IHtcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgaWQ6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAnaWQnIH0sXG4gICAgICAgIGFkZHJlc3M6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAn5Zyw54K5JyB9LFxuICAgICAgICBsbmc6IHsgdHlwZTogJ251bWJlcicsIHRpdGxlOiAn57uP5bqmJyB9LFxuICAgICAgICBsYXQ6IHsgdHlwZTogJ251bWJlcicsIHRpdGxlOiAn57qs5bqmJyB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KVxuICBtYWtlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBARGF0YUlucHV0KCfpgInkuK1pZCcpXG4gIHNlbGVjdGVkSWQ6IHN0cmluZztcbiAgQEV2ZW50KCfngrnlh7snLCB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ2lkJyB9LFxuICAgICAgICBhZGRyZXNzOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ+WcsOeCuScgfSxcbiAgICAgICAgbG5nOiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e7j+W6picgfSxcbiAgICAgICAgbGF0OiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e6rOW6picgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcbiAgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBsYXllcnMgPSBbXTtcbiAgaW5pdGVkOiBib29sZWFuO1xuICAvLyBkZWZhdWx0TGF5ZXI6IGFueTtcbiAgbGF5ZXJNYXAgPSB7fTtcbiAgY2xpY2tEYXRhOiBhbnk7XG4gIGNsaWNrVGltZW91dDogYW55O1xuICBAVmlld0NoaWxkKCdtZW51JylcbiAgbWVudTogYW55O1xuICBzdWJNYXJrZXJzOiBhbnlbXTtcbiAgZGF0YU1hcCA9IHt9O1xuICBncm91cERhdGE6IHt9O1xuICBsYXN0U2VsZWN0OiBhbnk7XG4gIGN1cnJlbnRTZWxlY3RlZElkOiBzdHJpbmc7XG4gIHRleHRMYXllcjogYW55O1xuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBwYXJlbnQ6IEN1c3RvbUJhaWR1TWFwQ29tcG9uZW50LFxuICAgIHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBmaWxlVXJsU2VydmljZTogRmlsZVVybFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuekNvbnRleHRNZW51U2VydmljZTogTnpDb250ZXh0TWVudVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKHBhcmVudCwgem9uZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIGlmICh0aGlzLnNob3dMYWJlbCAmJiB0aGlzLnNob3dMYWJlbE1pblpvb20gIT0gbnVsbCkge1xuICAgICAgdGhpcy5wYXJlbnQuem9vbUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh6b29tKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlVGV4dFZpc2libGUoem9vbSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMuaW5pdGVkKSB7XG4gICAgICBpZiAoY2hhbmdlcy5fZGF0YSkge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuZ2VzLnNlbGVjdGVkSWQpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJZCAhPSB0aGlzLmN1cnJlbnRTZWxlY3RlZElkKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWxlY3RlZElkLCB7IG1vdmU6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGNyZWF0ZUxheWVycygpOiBhbnlbXSB7XG4gICAgY29uc3QgbGF5ZXJzID0gW107XG4gICAgdGhpcy5sYXllck1hcCA9IHt9O1xuICAgIGNvbnN0IGRlZmF1bHRMYXllciA9IHRoaXMuY3JlYXRlTGF5ZXIoKTtcbiAgICB0aGlzLmxheWVyTWFwWycnXSA9IGRlZmF1bHRMYXllcjtcbiAgICBsYXllcnMucHVzaChkZWZhdWx0TGF5ZXIpO1xuICAgIGlmICh0aGlzLmdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBpZiAoZ3JvdXAuZ3JvdXApIHtcbiAgICAgICAgICBjb25zdCBsYXllciA9IHRoaXMuY3JlYXRlTGF5ZXIoZ3JvdXApO1xuICAgICAgICAgIHRoaXMubGF5ZXJNYXBbZ3JvdXAuZ3JvdXBdID0gbGF5ZXI7XG4gICAgICAgICAgbGF5ZXJzLnB1c2gobGF5ZXIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmVuYWJsZU1hcmtlckNsdXN0ZXJlciAmJiB0aGlzLnNob3dMYWJlbCkge1xuICAgICAgY29uc3QgdGV4dE9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRoaXMuZ2V0VGV4dE9wdGlvbnModGhpcy5sYWJlbEZvbnQpLFxuICAgICAgICAvLyBjb2xvcjogJyNmZmYnLFxuICAgICAgICAvLyBmb250RmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJyxcbiAgICAgICAgLy8gZm9udFNpemU6IDE0LFxuICAgICAgICBmbGF0OiBmYWxzZSxcbiAgICAgICAgY29sbGlkZXM6IHRydWUsXG4gICAgICAgIG9mZnNldDogW3RoaXMubGFiZWxPZmZzZXRYIHx8IDAsIHRoaXMubGFiZWxPZmZzZXRZIHx8IDBdLFxuICAgICAgICBwYWRkaW5nOiBbMiwgMl0sXG4gICAgICAgIG1hcmdpbjogWzAsIDBdLFxuICAgICAgfTtcbiAgICAgIHRoaXMudGV4dExheWVyID0gbmV3IG1hcHZnbC5UZXh0TGF5ZXIodGV4dE9wdGlvbnMpO1xuICAgICAgaWYgKHRoaXMuc2hvd0xhYmVsTWluWm9vbSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMucGFyZW50LmluaXQkLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHpvb20gPSB0aGlzLnBhcmVudC5tYXAuZ2V0Wm9vbSgpO1xuICAgICAgICAgIHRoaXMudXBkYXRlVGV4dFZpc2libGUoem9vbSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgbGF5ZXJzLnB1c2godGhpcy50ZXh0TGF5ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gbGF5ZXJzO1xuICB9XG5cbiAgY3JlYXRlTGF5ZXIoZ3JvdXA/OiBhbnkpIHtcbiAgICBsZXQgbGF5ZXI6IGFueTtcbiAgICBjb25zdCB0eXBlID0gZ3JvdXA/LnR5cGU7XG4gICAgaWYgKHR5cGUgPT09ICdjaXJjbGUnIHx8IHR5cGUgPT09ICdzcXVhcmUnKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICBzaGFwZTogdHlwZSxcbiAgICAgICAgY29sb3I6IGdyb3VwPy5jb2xvciB8fCAncmdiYSg1MCwgNTAsIDIwMCwgMSknLFxuICAgICAgICBzaXplOiBncm91cD8uc2l6ZSB8fCAxMCxcbiAgICAgIH07XG4gICAgICB0aGlzLmFkZFBpY2tFdmVudChvcHRpb25zKTtcbiAgICAgIGxheWVyID0gbmV3IG1hcHZnbC5Qb2ludExheWVyKG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2J1YmJsZScgfHwgdHlwZSA9PT0gJ3dhdmUnKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICB0eXBlLFxuICAgICAgICBjb2xvcjogZ3JvdXA/LmNvbG9yIHx8ICdyZ2JhKDI1NSwgMCwgMCwgMSknLFxuICAgICAgICBzaXplOiBncm91cD8uc2l6ZSB8fCAxMCxcbiAgICAgICAgZHVyYXRpb246IDEsXG4gICAgICAgIHRyYWlsOiAxLFxuICAgICAgfTtcbiAgICAgIHRoaXMuYWRkUGlja0V2ZW50KG9wdGlvbnMpO1xuICAgICAgbGF5ZXIgPSBuZXcgbWFwdmdsLkNpcmNsZUxheWVyKG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpY29uT3B0aW9ucyA9IHRoaXMuZ2V0SWNvbk9wdGlvbnMoZ3JvdXApO1xuICAgICAgaWYgKHRoaXMuZW5hYmxlTWFya2VyQ2x1c3RlcmVyIHx8IGdyb3VwPy5lbmFibGVNYXJrZXJDbHVzdGVyZXIpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgICAgIGljb25PcHRpb25zLFxuICAgICAgICAgIHRleHRPcHRpb25zOiB0aGlzLmdldFRleHRPcHRpb25zKHRoaXMuY2x1c3RlckZvbnQpLFxuICAgICAgICAgIG1pblNpemU6IHRoaXMuY2x1c3Rlck1pblNpemUgfHwgMjUsXG4gICAgICAgICAgbWF4U2l6ZTogdGhpcy5jbHVzdGVyTWF4U2l6ZSB8fCA0MCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuY2x1c3RlckdyYWRpZW50Py5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBncmFkaWVudDogYW55ID0ge307XG4gICAgICAgICAgZ3JhZGllbnRbMF0gPSB0aGlzLmNsdXN0ZXJHcmFkaWVudFswXTtcbiAgICAgICAgICB0aGlzLmNsdXN0ZXJHcmFkaWVudC5zbGljZSgxKS5mb3JFYWNoKChnLCBpKSA9PiB7XG4gICAgICAgICAgICBncmFkaWVudFsoaSArIDEpIC8gdGhpcy5jbHVzdGVyR3JhZGllbnQubGVuZ3RoXSA9IGc7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3B0aW9ucy5ncmFkaWVudCA9IGdyYWRpZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNsdXN0ZXJNYXhab29tICE9IG51bGwpIHtcbiAgICAgICAgICBvcHRpb25zLm1heFpvb20gPSB0aGlzLmNsdXN0ZXJNYXhab29tO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkUGlja0V2ZW50KG9wdGlvbnMpO1xuICAgICAgICBsYXllciA9IG5ldyBtYXB2Z2wuQ2x1c3RlckxheWVyKG9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRQaWNrRXZlbnQoaWNvbk9wdGlvbnMpO1xuICAgICAgICBsYXllciA9IG5ldyBtYXB2Z2wuSWNvbkxheWVyKGljb25PcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgdXBkYXRlVGV4dFZpc2libGUoem9vbT86IG51bWJlcikge1xuICAgIGlmICh0aGlzLnRleHRMYXllcikge1xuICAgICAgaWYgKHpvb20gPj0gdGhpcy5zaG93TGFiZWxNaW5ab29tKSB7XG4gICAgICAgIHRoaXMudGV4dExheWVyLnNob3coKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGV4dExheWVyLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVEYXRhKCkge1xuICAgIHRoaXMuZGF0YU1hcCA9IHt9O1xuICAgIGlmICh0aGlzLnRvQ2VudGVyICYmIHRoaXMuX2RhdGEubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IG1heExuZyA9IC0xODA7XG4gICAgICBsZXQgbWluTG5nID0gMTgwO1xuICAgICAgbGV0IG1heExhdCA9IC05MDtcbiAgICAgIGxldCBtaW5MYXQgPSA5MDtcbiAgICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgocmVzKSA9PiB7XG4gICAgICAgIG1heExuZyA9IE1hdGgubWF4KG1heExuZywgcmVzLmxuZyk7XG4gICAgICAgIG1pbkxuZyA9IE1hdGgubWluKG1pbkxuZywgcmVzLmxuZyk7XG4gICAgICAgIG1heExhdCA9IE1hdGgubWF4KG1heExhdCwgcmVzLmxhdCk7XG4gICAgICAgIG1pbkxhdCA9IE1hdGgubWluKG1pbkxhdCwgcmVzLmxhdCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucGFyZW50LnNldFJlY3RDZW50ZXJBbmRab29tKG1pbkxuZywgbWF4TG5nLCBtaW5MYXQsIG1heExhdCk7XG4gICAgfVxuICAgIGNvbnN0IGdyb3VwRGF0YSA9IHt9O1xuICAgIHRoaXMuZ3JvdXBEYXRhID0gZ3JvdXBEYXRhO1xuICAgIGNvbnN0IHRleHREYXRhID0gW107XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXModGhpcy5sYXllck1hcCk7XG4gICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICBncm91cERhdGFbZ3JvdXBdID0gW107XG4gICAgfSk7XG4gICAgLy8gY29uc3QgZGVmYXVsdERhdGEgPSBbXTtcbiAgICB0aGlzLl9kYXRhLmZvckVhY2goKHJlY29yZCkgPT4ge1xuICAgICAgbGV0IGdyb3VwTmFtZSA9IHJlY29yZC5ncm91cDtcbiAgICAgIGlmIChncm91cE5hbWUgPT0gbnVsbCB8fCB0aGlzLmxheWVyTWFwW2dyb3VwTmFtZV0gPT0gbnVsbCkge1xuICAgICAgICBncm91cE5hbWUgPSAnJztcbiAgICAgIH1cbiAgICAgIGxldCBpZCA9IHJlY29yZC5pZF92YWx1ZSB8fCByZWNvcmQuaWQ7XG4gICAgICBpZiAoaWQgPT0gbnVsbCB8fCBpZCA9PSAnJykge1xuICAgICAgICBpZCA9IGdldFVVSUQoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGl0ZW06IGFueSA9IHtcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbcmVjb3JkLmxuZywgcmVjb3JkLmxhdF0sXG4gICAgICAgIH0sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICB0ZXh0OiByZWNvcmQuYWRkcmVzcyxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBncm91cDogZ3JvdXBOYW1lLFxuICAgICAgICAgIHJhdzogcmVjb3JkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIC8vIE1hcFZHTOeahGJ1Z++8jENsdXN0ZXJMYXllcueahGljb25PcHRpb25z5peg5pWI77yM5Y+q6IO96YCa6L+HcHJvcGVydGllc+iuvue9rlxuXG4gICAgICBjb25zdCBsYXllciA9IHRoaXMubGF5ZXJNYXBbZ3JvdXBOYW1lXTtcbiAgICAgIGlmIChsYXllciAhPSBudWxsICYmIGxheWVyIGluc3RhbmNlb2YgbWFwdmdsLkNsdXN0ZXJMYXllcikge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gbGF5ZXIuZ2V0T3B0aW9ucygpO1xuICAgICAgICBpZiAob3B0aW9ucy5pY29uT3B0aW9ucykge1xuICAgICAgICAgIGNvbnN0IHsgaGVpZ2h0LCB3aWR0aCwgb2Zmc2V0LCBpY29uIH0gPSBvcHRpb25zLmljb25PcHRpb25zO1xuICAgICAgICAgIGl0ZW0ucHJvcGVydGllcyA9IHsgaGVpZ2h0LCB3aWR0aCwgb2Zmc2V0LCBpY29uLCAuLi5pdGVtLnByb3BlcnRpZXMgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlY29yZC5pY29uKSB7XG4gICAgICAgIGl0ZW0ucHJvcGVydGllcy5pY29uID0gdGhpcy5maWxlVXJsU2VydmljZS5nZXRVcmwocmVjb3JkLmljb24pO1xuICAgICAgfVxuICAgICAgLy8gaWYgKHRoaXMuc2VsZWN0ZWRJZCAmJiB0aGlzLnNlbGVjdGVkSWQgPT0gaWQpIHtcbiAgICAgIC8vICAgdGhpcy51cGRhdGVTaXplKGl0ZW0sIDEuNSk7XG4gICAgICAvLyAgIHRoaXMubGFzdFNlbGVjdCA9IGl0ZW07XG4gICAgICAvLyB9XG4gICAgICBncm91cERhdGFbZ3JvdXBOYW1lXS5wdXNoKGl0ZW0pO1xuICAgICAgdGhpcy5kYXRhTWFwW2l0ZW0ucHJvcGVydGllcy5pZF0gPSBpdGVtO1xuICAgICAgaWYgKHRoaXMudGV4dExheWVyKSB7XG4gICAgICAgIHRleHREYXRhLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJZCkge1xuICAgICAgdGhpcy5zZWxlY3QodGhpcy5zZWxlY3RlZElkLCB7IG1vdmU6IHRoaXMuc2VsZWN0ZWRJZCAhPSB0aGlzLmN1cnJlbnRTZWxlY3RlZElkLCByZXNldExheWVyOiBmYWxzZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICAgIGdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgY29uc3QgbGF5ZXIgPSB0aGlzLmxheWVyTWFwW2dyb3VwXTtcbiAgICAgIGNvbnN0IGRhdGEgPSBncm91cERhdGFbZ3JvdXBdO1xuICAgICAgbGF5ZXIuc2V0RGF0YShkYXRhKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy50ZXh0TGF5ZXIpIHtcbiAgICAgIHRoaXMudGV4dExheWVyLnNldERhdGEodGV4dERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGdldEljb25PcHRpb25zKGdyb3VwOiBhbnkpIHtcbiAgICBsZXQgaWNvbiA9IHRoaXMuaWNvblVybCB8fCAnYXNzZXRzL2ltZy9zY3JlZW4vbWFya2VyLnBuZyc7XG4gICAgbGV0IGhlaWdodCA9IHRoaXMuaWNvbkhlaWdodCB8fCAzOC4yNTtcbiAgICBsZXQgd2lkdGggPSB0aGlzLmljb25XaWR0aCB8fCAyNTtcbiAgICBsZXQgb2Zmc2V0WCA9IHRoaXMuaWNvbk9mZnNldFggPT0gbnVsbCA/IDAgOiB0aGlzLmljb25PZmZzZXRYO1xuICAgIGxldCBvZmZzZXRZID0gdGhpcy5pY29uT2Zmc2V0WSA9PSBudWxsID8gLWhlaWdodCAvIDIgOiB0aGlzLmljb25PZmZzZXRZO1xuICAgIGlmIChncm91cCAmJiBncm91cC5pbWFnZVVybCkge1xuICAgICAgaWNvbiA9IHRoaXMuZmlsZVVybFNlcnZpY2UuZ2V0VXJsKGdyb3VwLmltYWdlVXJsKTtcbiAgICAgIHdpZHRoID0gZ3JvdXAud2lkdGggfHwgd2lkdGg7XG4gICAgICBoZWlnaHQgPSBncm91cC5oZWlnaHQgfHwgaGVpZ2h0O1xuICAgICAgb2Zmc2V0WCA9IGdyb3VwLlhPZmZzZXQgIT0gbnVsbCA/IGdyb3VwLlhPZmZzZXQgOiAwO1xuICAgICAgb2Zmc2V0WSA9IGdyb3VwLllPZmZzZXQgIT0gbnVsbCA/IGdyb3VwLllPZmZzZXQgOiAtaGVpZ2h0IC8gMjtcbiAgICB9XG4gICAgY29uc3QgaWNvbk9wdGlvbnM6IGFueSA9IHtcbiAgICAgIGljb24sXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIG9mZnNldDogW29mZnNldFgsIG9mZnNldFldLFxuICAgIH07XG4gICAgcmV0dXJuIGljb25PcHRpb25zO1xuICB9XG5cbiAgZ2V0VGV4dE9wdGlvbnMoZm9udDogYW55KSB7XG4gICAgY29uc3QgdGV4dE9wdGlvbnM6IGFueSA9IHt9O1xuICAgIGlmIChmb250KSB7XG4gICAgICBpZiAoZm9udC5zaXplKSB0ZXh0T3B0aW9ucy5mb250U2l6ZSA9IGZvbnQuc2l6ZTtcbiAgICAgIGlmIChmb250LmZhbWlseSkgdGV4dE9wdGlvbnMuZm9udEZhbWlseSA9IGZvbnQuZmFtaWx5O1xuICAgICAgaWYgKGZvbnQuY29sb3IpIHRleHRPcHRpb25zLmNvbG9yID0gZm9udC5jb2xvcjtcbiAgICB9XG4gICAgcmV0dXJuIHRleHRPcHRpb25zO1xuICB9XG5cbiAgYWRkUGlja0V2ZW50KG9wdGlvbnM6IGFueSkge1xuICAgIG9wdGlvbnMuZW5hYmxlUGlja2VkID0gdHJ1ZTtcbiAgICBvcHRpb25zLm9uQ2xpY2sgPSAoeyBkYXRhSXRlbSB9KSA9PiB7XG4gICAgICAvLyDmr4/kuKrlm77lsYLpg73kvJrop6blj5HkuIDmrKFjbGlja+S6i+S7tu+8jOWmguaenOavj+S4quWbvuWxgumDveayoeacieeCueS4reagh+iusOeCue+8jOS8oOWHum51bGxcbiAgICAgIGlmIChkYXRhSXRlbSkge1xuICAgICAgICB0aGlzLmNsaWNrRGF0YSA9IGRhdGFJdGVtO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudW5zZWxlY3RPbkNsaWNrQmxhbmsgIT09IGZhbHNlICYmIHRoaXMuY2xpY2tUaW1lb3V0ID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jbGlja1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jbGlja0RhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZElkID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNsaWNrVGltZW91dCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5jbGlja0RhdGEgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc3ViTWFya2VycyA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGFJdGVtKSB7XG4gICAgICAgIGlmIChkYXRhSXRlbS50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGRhdGFJdGVtLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgICAgIHRoaXMucGFyZW50LnNldENlbnRlckFuZFpvb20oY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdLCB0aGlzLnBhcmVudC5tYXAuZ2V0Wm9vbSgpICsgMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IGRhdGFJdGVtLnByb3BlcnRpZXMucmF3O1xuICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSWQgPSBkYXRhSXRlbS5wcm9wZXJ0aWVzLmlkO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QoZGF0YUl0ZW0ucHJvcGVydGllcy5pZCk7XG4gICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoeyAuLi5kYXRhLCBpZDogZGF0YS5pZF92YWx1ZSB8fCBkYXRhLmlkIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAodGhpcy5wYXJlbnQuc2hvd1R5cGUgPT09ICdtb3VzZW92ZXInKSB7XG4gICAgICBsZXQgaW5mb1dpbmRvdyA9IG51bGw7XG4gICAgICBsZXQgaW5mb1dpbmRvd0RhdGEgPSBudWxsO1xuICAgICAgb3B0aW9ucy5vbk1vdXNlbW92ZSA9ICh7IGRhdGFJdGVtIH0pID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGRhdGFJdGVtICE9IG51bGwgPyBkYXRhSXRlbS5wcm9wZXJ0aWVzLnJhdyA6IG51bGw7XG4gICAgICAgIGlmIChpbmZvV2luZG93ICE9IG51bGwgJiYgaW5mb1dpbmRvd0RhdGEgIT0gZGF0YSkge1xuICAgICAgICAgIGluZm9XaW5kb3cuY2xvc2UoKTtcbiAgICAgICAgICBpbmZvV2luZG93ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmluZm9ybWF0aW9uICYmIGluZm9XaW5kb3cgPT0gbnVsbCkge1xuICAgICAgICAgIGluZm9XaW5kb3dEYXRhID0gZGF0YTtcbiAgICAgICAgICBpbmZvV2luZG93ID0gdGhpcy5wYXJlbnQub3BlbkluZm9XaW5kb3coZGF0YSwgZGF0YS5sbmcsIGRhdGEubGF0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3QoaWQ6IGFueSwgb3B0aW9uczogeyBtb3ZlPzogYm9vbGVhbjsgcmVzZXRMYXllcj86IGJvb2xlYW47IGZvcmNlPzogYm9vbGVhbiB9ID0ge30pIHtcbiAgICBpZiAoaWQgIT0gdGhpcy5jdXJyZW50U2VsZWN0ZWRJZCB8fCBvcHRpb25zLmZvcmNlKSB7XG4gICAgICBsZXQgaXRlbTogYW55O1xuICAgICAgaWYgKGlkICE9IG51bGwgJiYgaWQgIT09ICcnKSB7XG4gICAgICAgIGl0ZW0gPSB0aGlzLmRhdGFNYXBbaWRdO1xuICAgICAgICAvLyDlpoLmnpzmib7kuI3liLDmlbDmja7vvIzlj6/og73mmK/mlbDmja7ov5jmsqHliqDovb3vvIznrYnmlbDmja7liqDovb3kuoblho3miafooYxcbiAgICAgICAgaWYgKGl0ZW0gPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50U2VsZWN0ZWRJZCA9IGlkO1xuICAgICAgbGV0IGxhc3RTZWxlY3RHcm91cDogc3RyaW5nO1xuICAgICAgbGV0IGN1cnJlbnRTZWxlY3RHcm91cDogc3RyaW5nO1xuICAgICAgbGV0IHNlbGVjdGVkRGF0YTogYW55O1xuICAgICAgaWYgKHRoaXMubGFzdFNlbGVjdCkge1xuICAgICAgICBsYXN0U2VsZWN0R3JvdXAgPSB0aGlzLmxhc3RTZWxlY3QucHJvcGVydGllcy5ncm91cDtcbiAgICAgICAgdGhpcy51cGRhdGVTaXplKHRoaXMubGFzdFNlbGVjdCwgMSk7XG4gICAgICAgIHRoaXMubGFzdFNlbGVjdCA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBjdXJyZW50U2VsZWN0R3JvdXAgPSBpdGVtLnByb3BlcnRpZXMuZ3JvdXA7XG4gICAgICAgIHRoaXMudXBkYXRlU2l6ZShpdGVtLCAxLjUpO1xuICAgICAgICB0aGlzLmxhc3RTZWxlY3QgPSBpdGVtO1xuICAgICAgICBzZWxlY3RlZERhdGEgPSBpdGVtLnByb3BlcnRpZXMucmF3O1xuICAgICAgICBpZiAob3B0aW9ucy5tb3ZlKSB7XG4gICAgICAgICAgY29uc3QgbGF5ZXIgPSB0aGlzLmxheWVyTWFwW2N1cnJlbnRTZWxlY3RHcm91cF07XG4gICAgICAgICAgbGV0IHpvb20gPSB0aGlzLnBhcmVudC5tYXAuZ2V0Wm9vbSgpO1xuICAgICAgICAgIGlmIChsYXllciBpbnN0YW5jZW9mIG1hcHZnbC5DbHVzdGVyTGF5ZXIgJiYgdGhpcy5jbHVzdGVyTWF4Wm9vbSAhPSBudWxsICYmIHpvb20gPD0gdGhpcy5jbHVzdGVyTWF4Wm9vbSkge1xuICAgICAgICAgICAgem9vbSA9IHRoaXMuY2x1c3Rlck1heFpvb20gKyAyO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBhcmVudC5zZXRDZW50ZXJBbmRab29tKHNlbGVjdGVkRGF0YS5sbmcsIHNlbGVjdGVkRGF0YS5sYXQsIHpvb20pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5pbmZvcm1hdGlvbiAmJiB0aGlzLnBhcmVudC5zaG93VHlwZSAhPT0gJ21vdXNlb3ZlcicpIHtcbiAgICAgICAgICAvLyDpmLLmraLlhbbku5blm77lsYLlsIbkv6Hmga/nqpflj6PlhbPpl61cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50Lm9wZW5JbmZvV2luZG93KHNlbGVjdGVkRGF0YSwgc2VsZWN0ZWREYXRhLmxuZywgc2VsZWN0ZWREYXRhLmxhdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGVjdGVkRGF0YSA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMucmVzZXRMYXllciAhPT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RHcm91cCAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5yZXNldExheWVyRGF0YShjdXJyZW50U2VsZWN0R3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYXN0U2VsZWN0R3JvdXAgIT0gbnVsbCAmJiBsYXN0U2VsZWN0R3JvdXAgIT09IGN1cnJlbnRTZWxlY3RHcm91cCkge1xuICAgICAgICAgIHRoaXMucmVzZXRMYXllckRhdGEobGFzdFNlbGVjdEdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8g5aaC5p6c6YCJ5Lit55qEaWTmib7kuI3liLDlr7nlupTmlbDmja4s5Y+v6IO95piv5pWw5o2u6L+Y5rKh5Yqg6L2977yMXG4gICAgICBpZiAoaWQgPT0gbnVsbCB8fCBpdGVtICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5tYWtlckNsaWNrLmVtaXQoeyAuLi5zZWxlY3RlZERhdGEsIGlkOiBzZWxlY3RlZERhdGEuaWRfdmFsdWUgfHwgc2VsZWN0ZWREYXRhLmlkIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXNldExheWVyRGF0YShncm91cDogc3RyaW5nKSB7XG4gICAgY29uc3QgbGF5ZXIgPSB0aGlzLmxheWVyTWFwW2dyb3VwXTtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ncm91cERhdGFbZ3JvdXBdO1xuICAgIGlmIChsYXllciAmJiBkYXRhKSB7XG4gICAgICBsYXllci5zZXREYXRhKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVNpemUoaXRlbTogYW55LCBzY2FsZTogbnVtYmVyKSB7XG4gICAgaWYgKGl0ZW0gJiYgdGhpcy5lbmxhcmdlT25TZWxlY3QpIHtcbiAgICAgIGNvbnN0IGxheWVyID0gdGhpcy5sYXllck1hcFtpdGVtLnByb3BlcnRpZXMuZ3JvdXBdO1xuICAgICAgbGV0IG9wdGlvbnM6IGFueTtcblxuICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgbWFwdmdsLkNsdXN0ZXJMYXllcikge1xuICAgICAgICBvcHRpb25zID0gbGF5ZXIuZ2V0T3B0aW9ucygpLmljb25PcHRpb25zO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IGxheWVyLmdldE9wdGlvbnMoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgaGVpZ2h0LCB3aWR0aCwgb2Zmc2V0IH0gPSBvcHRpb25zO1xuICAgICAgaXRlbS5wcm9wZXJ0aWVzLmhlaWdodCA9IGhlaWdodCAqIHNjYWxlO1xuICAgICAgaXRlbS5wcm9wZXJ0aWVzLndpZHRoID0gd2lkdGggKiBzY2FsZTtcbiAgICAgIGlmIChpdGVtLnByb3BlcnRpZXMub2Zmc2V0KSB7XG4gICAgICAgIGl0ZW0ucHJvcGVydGllcy5vZmZzZXQgPSBbb2Zmc2V0WzBdICogc2NhbGUsIG9mZnNldFsxXSAqIHNjYWxlXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
732
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFpZHUtbWFya2VyLWxheWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjcmVlbi13aWRnZXQvc3JjL2xpYi9jdXN0b20tYmFpZHUtbWFwL2JhaWR1LW1hcmtlci1sYXllci9iYWlkdS1tYXJrZXItbGF5ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixNQUFNLEVBS04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSXZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztXQWdMakMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0F3QjdCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BYS9CLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBck05Qix5QkFB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhLCBEYXRhT3V0cHV0LCBQcm9wZXJ0eSwgV2lkZ2V0LCBFdmVudCwgRGF0YUlucHV0IH0gZnJvbSAnYmJqLXdpZGdldC1iYXNlJztcbmltcG9ydCB7IFBhcmVudENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcmVudC1jb250YWluZXIvcGFyZW50LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU0ZBcnJheVdpZGdldFNjaGVtYSB9IGZyb20gJ0BkZWxvbi9mb3JtJztcbmltcG9ydCB7IGdldEZvbnRTdHlsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC91dGlsL3N0eWxlLnV0aWwnO1xuaW1wb3J0IHsgQ3VzdG9tQmFpZHVNYXBDb21wb25lbnQgfSBmcm9tICcuLi9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlTGF5ZXIgfSBmcm9tICcuLi9iYXNlLWxheWVyJztcbmltcG9ydCB7IEZpbGVVcmxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2UvZmlsZS11cmwuc2VydmljZSc7XG5pbXBvcnQgeyBOekNvbnRleHRNZW51U2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZHJvcGRvd24nO1xuaW1wb3J0IHsgU2Nyb2xsRGlzcGF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgZ2V0VVVJRCB9IGZyb20gJy4uLy4uL3NoYXJlZC91dGlsL2Jhc2UudXRpbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmRlY2xhcmUgY29uc3QgbWFwdmdsO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYy1iYWlkdS1tYXJrZXItbGF5ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFpZHUtbWFya2VyLWxheWVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFpZHUtbWFya2VyLWxheWVyLmNvbXBvbmVudC5sZXNzJ10sXG4gIHByb3ZpZGVyczogW1Njcm9sbERpc3BhdGNoZXJdLCAvLyDpmLLmraLomZrmi5/mu5rliLDlr7zoh7Tmta7lsYLlhbPpl61cbn0pXG5AV2lkZ2V0KCfmoIforrDlsYInLCB7XG4gIGdyb3VwOiAnY29tcG9uZW50JyxcbiAgaW1hZ2U6ICcnLFxuICBpY29uOiAnJyxcbiAgaGlkZGVuOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBCYWlkdU1hcmtlckxheWVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUxheWVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBQcm9wZXJ0eSgnJywgeyBtaW46IDEsIHVpOiB7IHdpZGdldDogJ215UGljdHVyZScsIHNwYW5MYWJlbDogMCwgc3BhbkNvbnRyb2w6IDI0IH0gfSlcbiAgaWNvblVybCA9ICdhc3NldHMvaW1nL3NjcmVlbi9tYXJrZXIucG5nJztcbiAgQFByb3BlcnR5KCflm77moIflrr0nLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gIGljb25XaWR0aCA9IDI1O1xuICBAUHJvcGVydHkoJ+Wbvuagh+mrmCcsIHsgdHlwZTogJ251bWJlcicgfSlcbiAgaWNvbkhlaWdodCA9IDM4LjI1O1xuICBAUHJvcGVydHkoJ+Wbvuagh+WBj+enu3gnLCB7IHR5cGU6ICdudW1iZXInIH0pXG4gIGljb25PZmZzZXRYID0gMDtcbiAgQFByb3BlcnR5KCflm77moIflgY/np7t5JywgeyB0eXBlOiAnbnVtYmVyJyB9KVxuICBpY29uT2Zmc2V0WSA9IC0xOS4xMjU7XG4gIC8vIEBQcm9wZXJ0eSgn5YiG57uEJywge3R5cGU6ICdzdHJpbmcnfSlcbiAgLy8gZ3JvdXAgPSAnJztcblxuICBAUHJvcGVydHkoJ+enu+iHs+S4reW/gycpXG4gIHRvQ2VudGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBQcm9wZXJ0eSgn54K56IGa5ZCIJylcbiAgZW5hYmxlTWFya2VyQ2x1c3RlcmVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBQcm9wZXJ0eSgn6IGa5ZCI5pyA5bCP55u05b6EJywgeyB0eXBlOiAnbnVtYmVyJywgdWk6IHsgdmlzaWJsZUlmOiB7IGVuYWJsZU1hcmtlckNsdXN0ZXJlcjogW3RydWVdIH0gfSB9KVxuICBjbHVzdGVyTWluU2l6ZSA9IDI1O1xuICBAUHJvcGVydHkoJ+iBmuWQiOacgOWkp+ebtOW+hCcsIHsgdHlwZTogJ251bWJlcicsIHVpOiB7IHZpc2libGVJZjogeyBlbmFibGVNYXJrZXJDbHVzdGVyZXI6IFt0cnVlXSB9IH0gfSlcbiAgY2x1c3Rlck1heFNpemUgPSA0MDtcbiAgQFByb3BlcnR5KCfogZrlkIjlrZfkvZMnLCB7IHVpOiB7IHdpZGdldDogJ215Rm9udCcgfSB9KVxuICBjbHVzdGVyRm9udDogYW55ID0ge1xuICAgIGNvbG9yOiAnI2ZmZmZmZicsXG4gICAgc2l6ZTogMTYsXG4gIH07XG4gIEBQcm9wZXJ0eSgn6IGa5ZCI6aKc6ImyJywge1xuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdzZXJpZXNDb2xvcicsXG4gICAgICB2aXNpYmxlSWY6IHsgZW5hYmxlTWFya2VyQ2x1c3RlcmVyOiBbdHJ1ZV0gfSxcbiAgICB9LFxuICB9KVxuICBjbHVzdGVyR3JhZGllbnQ6IHN0cmluZ1tdO1xuICBAUHJvcGVydHkoJ+iBmuWQiOacgOWkp+e6p+WIqycsIHsgdHlwZTogJ251bWJlcicsIHVpOiB7IHZpc2libGVJZjogeyBlbmFibGVNYXJrZXJDbHVzdGVyZXI6IFt0cnVlXSB9IH0gfSlcbiAgY2x1c3Rlck1heFpvb20gPSA0O1xuICBAUHJvcGVydHkoJ+aYvuekuuagh+etvicsIHsgdWk6IHsgdmlzaWJsZUlmOiB7IGVuYWJsZU1hcmtlckNsdXN0ZXJlcjogW2ZhbHNlXSB9IH0gfSlcbiAgc2hvd0xhYmVsOiBib29sZWFuO1xuICBAUHJvcGVydHkoJ+agh+etvuaYvuekuue8qeaUvuetiee6pycsIHsgdWk6IHsgdmlzaWJsZUlmOiB7IHNob3dMYWJlbDogW3RydWVdIH0gfSB9KVxuICBzaG93TGFiZWxNaW5ab29tOiBudW1iZXI7XG4gIC8vIEBQcm9wZXJ0eSgn5qCH562+5bqV6ImyJywgeyB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJywgdmlzaWJsZUlmOiB7IHNob3dMYWJlbDogW3RydWVdIH0gfSB9KVxuICAvLyBsYWJlbEJhY2tncm91bmQ6IHN0cmluZztcbiAgQFByb3BlcnR5KCfmoIfnrb7lrZfkvZMnLCB7IHVpOiB7IHdpZGdldDogJ215Rm9udCcsIHZpc2libGVJZjogeyBzaG93TGFiZWw6IFt0cnVlXSB9IH0gfSlcbiAgbGFiZWxGb250OiBhbnkgPSB7XG4gICAgZmFtaWx5OiAnJyxcbiAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgIHdlaWdodDogJ25vcm1hbCcsXG4gICAgc2l6ZTogMTYsXG4gICAgc3BhY2U6IDAsXG4gICAgbGluZUhlaWdodDogMCxcbiAgfTtcbiAgQFByb3BlcnR5KCfmj4/ovrnpopzoibInLCB7XG4gICAgdWk6IHtcbiAgICAgIHdpZGdldDogJ215Q29sb3InLFxuICAgIH0sXG4gIH0pXG4gIHN0cm9rZTogc3RyaW5nO1xuICBAUHJvcGVydHkoJ+aPj+i+ueeyl+e7hicsIHsgdHlwZTogJ2ludGVnZXInIH0pXG4gIHN0cm9rZVdpZHRoOiBudW1iZXI7XG4gIEBQcm9wZXJ0eSgn6Zi05b2xJywgeyB1aTogeyB3aWRnZXQ6ICdteVNoYWRvdycgfSB9KVxuICBzaGFkb3c6IGFueSA9IHsgY29sb3I6ICcnLCBYOiAwLCBZOiAwLCBaOiAwIH07XG4gIEBQcm9wZXJ0eSgn5qCH562+5YGP56e7eCcsIHsgdWk6IHsgd2lkZ2V0OiAnbnVtYmVyJywgdmlzaWJsZUlmOiB7IHNob3dMYWJlbDogW3RydWVdIH0gfSB9KVxuICBsYWJlbE9mZnNldFg6IG51bWJlcjtcbiAgQFByb3BlcnR5KCfmoIfnrb7lgY/np7t5JywgeyB1aTogeyB3aWRnZXQ6ICdudW1iZXInLCB2aXNpYmxlSWY6IHsgc2hvd0xhYmVsOiBbdHJ1ZV0gfSB9IH0pXG4gIGxhYmVsT2Zmc2V0WTogbnVtYmVyO1xuICBAUHJvcGVydHkoJ+mAieS4reaUvuWkpycpXG4gIGVubGFyZ2VPblNlbGVjdDogYm9vbGVhbjtcbiAgQFByb3BlcnR5KCfngrnlh7vnqbrnmb3lj5bmtojpgInkuK0nLCB7IHR5cGU6ICdib29sZWFuJywgZGVmYXVsdDogdHJ1ZSB9KVxuICB1bnNlbGVjdE9uQ2xpY2tCbGFuayA9IHRydWU7XG4gIEBQcm9wZXJ0eSgn5qCH6K6w5YiG57uEJywge1xuICAgIHR5cGU6ICdhcnJheScsXG4gICAgdGl0bGU6ICfmoIforrDliIbnu4QnLFxuICAgIG1heEl0ZW1zOiAxMCxcbiAgICBpdGVtczoge1xuICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGdyb3VwOiB7XG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgdGl0bGU6ICfliIbnu4QnLFxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgdGl0bGU6ICfnsbvlnosnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGVudW06IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICflm77moIcnLFxuICAgICAgICAgICAgICB2YWx1ZTogJ2ljb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICflnIbngrknLFxuICAgICAgICAgICAgICB2YWx1ZTogJ2NpcmNsZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ+ato+aWueW9oicsXG4gICAgICAgICAgICAgIHZhbHVlOiAnc3F1YXJlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAn5rOi57q5JyxcbiAgICAgICAgICAgICAgdmFsdWU6ICd3YXZlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAn5omp5pWjJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICdidWJibGUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGRlZmF1bHQ6ICdpY29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB0aXRsZTogJ+minOiJsicsXG4gICAgICAgICAgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicsIHZpc2libGVJZjogeyB0eXBlOiBbJ2NpcmNsZScsICdzcXVhcmUnXSB9IH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNpemU6IHtcbiAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICB0aXRsZTogJ+WwuuWvuCcsXG4gICAgICAgICAgdWk6IHsgdmlzaWJsZUlmOiB7IHR5cGU6IFsnY2lyY2xlJywgJ3NxdWFyZScsICd3YXZlJywgJ2J1YmJsZSddIH0gfSxcbiAgICAgICAgfSxcbiAgICAgICAgaW1hZ2VVcmw6IHtcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB0aXRsZTogJ+WbvueJhycsXG4gICAgICAgICAgdWk6IHtcbiAgICAgICAgICAgIHdpZGdldDogJ215UGljdHVyZScsXG4gICAgICAgICAgICB2aXNpYmxlSWY6IHsgdHlwZTogWydpY29uJ10gfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgIHRpdGxlOiAn5a695bqmJyxcbiAgICAgICAgICBkZWZhdWx0OiAxOSxcbiAgICAgICAgICB1aTogeyB2aXNpYmxlSWY6IHsgdHlwZTogWydpY29uJ10gfSB9LFxuICAgICAgICB9LFxuICAgICAgICBoZWlnaHQ6IHtcbiAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICB0aXRsZTogJ+mrmOW6picsXG4gICAgICAgICAgZGVmYXVsdDogMjUsXG4gICAgICAgICAgdWk6IHsgdmlzaWJsZUlmOiB7IHR5cGU6IFsnaWNvbiddIH0gfSxcbiAgICAgICAgfSxcbiAgICAgICAgWE9mZnNldDoge1xuICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgIHRpdGxlOiAnWOi9tOWBj+enuycsXG4gICAgICAgICAgdWk6IHsgdmlzaWJsZUlmOiB7IHR5cGU6IFsnaWNvbiddIH0gfSxcbiAgICAgICAgfSxcbiAgICAgICAgWU9mZnNldDoge1xuICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgIHRpdGxlOiAnWei9tOWBj+enuycsXG4gICAgICAgICAgdWk6IHsgdmlzaWJsZUlmOiB7IHR5cGU6IFsnaWNvbiddIH0gfSxcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlTWFya2VyQ2x1c3RlcmVyOiB7XG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgIHRpdGxlOiAn5piv5ZCm6IGa5ZCIJyxcbiAgICAgICAgICB1aTogeyB2aXNpYmxlSWY6IHsgdHlwZTogWydpY29uJ10gfSB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlcXVpcmVkOiBbXSxcbiAgICB9LFxuICAgIHVpOiB7IGdyaWQ6IHsgYXJyYXlTcGFuOiAyNCB9LCBzcGFuQ29udHJvbDogMjQgfSBhcyBTRkFycmF5V2lkZ2V0U2NoZW1hLFxuICB9KVxuICBncm91cHMgPSBbXTtcbiAgQERhdGEoe1xuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ2lkJyB9LFxuICAgICAgYWRkcmVzczogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICflnLDngrknIH0sXG4gICAgICBpbmZvcm1hdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICfkv6Hmga8nIH0sXG4gICAgICBncm91cDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICfmoIforrDliIbnu4QnIH0sXG4gICAgICBsbmc6IHsgdHlwZTogJ251bWJlcicsIHRpdGxlOiAn57uP5bqmJyB9LFxuICAgICAgbGF0OiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e6rOW6picgfSxcbiAgICAgIGljb246IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAn5Zu+5qCHJyB9LFxuICAgIH0sXG4gIH0pXG4gIF9kYXRhOiBhbnlbXSA9IFtcbiAgICB7XG4gICAgICBpZDogJzEnLFxuICAgICAgYWRkcmVzczogJycsXG4gICAgICBpbmZvcm1hdGlvbjogJ+aaguaXoOS/oeaBrycsXG4gICAgICBncm91cDogJycsXG4gICAgICBsbmc6ICcxMjAuNycsXG4gICAgICBsYXQ6ICcyOCcsXG4gICAgfSxcbiAgXTtcbiAgLy8gaWQ6IHN0cmluZztcbiAgQERhdGFPdXRwdXQoWydpZCcsICdhZGRyZXNzJywgJ2xuZycsICdsYXQnXSlcbiAgQEV2ZW50KCfpgInkuK3lgLzmlLnlj5gnLCB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ2lkJyB9LFxuICAgICAgICBhZGRyZXNzOiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ+WcsOeCuScgfSxcbiAgICAgICAgbG5nOiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e7j+W6picgfSxcbiAgICAgICAgbGF0OiB7IHR5cGU6ICdudW1iZXInLCB0aXRsZTogJ+e6rOW6picgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcbiAgbWFrZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQERhdGFJbnB1dCgn6YCJ5LitaWQnKVxuICBzZWxlY3RlZElkOiBzdHJpbmc7XG4gIEBFdmVudCgn54K55Ye7Jywge1xuICAgIHBhcmFtczoge1xuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICdpZCcgfSxcbiAgICAgICAgYWRkcmVzczogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICflnLDngrknIH0sXG4gICAgICAgIGxuZzogeyB0eXBlOiAnbnVtYmVyJywgdGl0bGU6ICfnu4/luqYnIH0sXG4gICAgICAgIGxhdDogeyB0eXBlOiAnbnVtYmVyJywgdGl0bGU6ICfnuqzluqYnIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgbGF5ZXJzID0gW107XG4gIGluaXRlZDogYm9vbGVhbjtcbiAgLy8gZGVmYXVsdExheWVyOiBhbnk7XG4gIGxheWVyTWFwID0ge307XG4gIGNsaWNrRGF0YTogYW55O1xuICBjbGlja1RpbWVvdXQ6IGFueTtcbiAgQFZpZXdDaGlsZCgnbWVudScpXG4gIG1lbnU6IGFueTtcbiAgc3ViTWFya2VyczogYW55W107XG4gIGRhdGFNYXAgPSB7fTtcbiAgZ3JvdXBEYXRhOiB7fTtcbiAgbGFzdFNlbGVjdDogYW55O1xuICBjdXJyZW50U2VsZWN0ZWRJZDogc3RyaW5nO1xuICB0ZXh0TGF5ZXI6IGFueTtcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcGFyZW50OiBDdXN0b21CYWlkdU1hcENvbXBvbmVudCxcbiAgICBwcm90ZWN0ZWQgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgZmlsZVVybFNlcnZpY2U6IEZpbGVVcmxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbnpDb250ZXh0TWVudVNlcnZpY2U6IE56Q29udGV4dE1lbnVTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihwYXJlbnQsIHpvbmUpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZiAodGhpcy5zaG93TGFiZWwgJiYgdGhpcy5zaG93TGFiZWxNaW5ab29tICE9IG51bGwpIHtcbiAgICAgIHRoaXMucGFyZW50Lnpvb21DaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoem9vbSkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVRleHRWaXNpYmxlKHpvb20pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLmluaXRlZCkge1xuICAgICAgaWYgKGNoYW5nZXMuX2RhdGEpIHtcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZElkKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSWQgIT0gdGhpcy5jdXJyZW50U2VsZWN0ZWRJZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VsZWN0ZWRJZCwgeyBtb3ZlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBjcmVhdGVMYXllcnMoKTogYW55W10ge1xuICAgIGNvbnN0IGxheWVycyA9IFtdO1xuICAgIHRoaXMubGF5ZXJNYXAgPSB7fTtcbiAgICBjb25zdCBkZWZhdWx0TGF5ZXIgPSB0aGlzLmNyZWF0ZUxheWVyKCk7XG4gICAgdGhpcy5sYXllck1hcFsnJ10gPSBkZWZhdWx0TGF5ZXI7XG4gICAgbGF5ZXJzLnB1c2goZGVmYXVsdExheWVyKTtcbiAgICBpZiAodGhpcy5ncm91cHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgaWYgKGdyb3VwLmdyb3VwKSB7XG4gICAgICAgICAgY29uc3QgbGF5ZXIgPSB0aGlzLmNyZWF0ZUxheWVyKGdyb3VwKTtcbiAgICAgICAgICB0aGlzLmxheWVyTWFwW2dyb3VwLmdyb3VwXSA9IGxheWVyO1xuICAgICAgICAgIGxheWVycy5wdXNoKGxheWVyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5lbmFibGVNYXJrZXJDbHVzdGVyZXIgJiYgdGhpcy5zaG93TGFiZWwpIHtcbiAgICAgIGNvbnN0IHRleHRPcHRpb25zID0ge1xuICAgICAgICAuLi50aGlzLmdldFRleHRPcHRpb25zKHRoaXMubGFiZWxGb250KSxcbiAgICAgICAgLy8gY29sb3I6ICcjZmZmJyxcbiAgICAgICAgLy8gZm9udEZhbWlseTogJ01pY3Jvc29mdCBZYWhlaScsXG4gICAgICAgIC8vIGZvbnRTaXplOiAxNCxcbiAgICAgICAgZmxhdDogZmFsc2UsXG4gICAgICAgIGNvbGxpZGVzOiB0cnVlLFxuICAgICAgICBvZmZzZXQ6IFt0aGlzLmxhYmVsT2Zmc2V0WCB8fCAwLCB0aGlzLmxhYmVsT2Zmc2V0WSB8fCAwXSxcbiAgICAgICAgc3Ryb2tlOiB7XG4gICAgICAgICAgY29sb3I6IHRoaXMuc3Ryb2tlLFxuICAgICAgICB9LFxuICAgICAgICBwYWRkaW5nOiBbMiwgMl0sXG4gICAgICAgIG1hcmdpbjogWzAsIDBdLFxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLnN0cm9rZSAmJiB0aGlzLnN0cm9rZSAhPT0gJ3JnYmEoMCwwLDAsMCknKSB7XG4gICAgICAgIHRleHRPcHRpb25zLnN0cm9rZSA9IHsgY29sb3I6IHRoaXMuc3Ryb2tlIH07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdHJva2VXaWR0aCkge1xuICAgICAgICB0ZXh0T3B0aW9ucy5saW5lV2lkdGggPSB0aGlzLnN0cm9rZVdpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2hhZG93KSB7XG4gICAgICAgIHRleHRPcHRpb25zLnNoYWRvdyA9IHtcbiAgICAgICAgICBjb2xvcjogdGhpcy5zaGFkb3cuY29sb3IsXG4gICAgICAgICAgYmx1cjogdGhpcy5zaGFkb3cuWixcbiAgICAgICAgICBvZmZzZXRYOiB0aGlzLnNoYWRvdy5YLFxuICAgICAgICAgIG9mZnNldFk6IHRoaXMuc2hhZG93LlksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLnRleHRMYXllciA9IG5ldyBtYXB2Z2wuVGV4dExheWVyKHRleHRPcHRpb25zKTtcbiAgICAgIGlmICh0aGlzLnNob3dMYWJlbE1pblpvb20gIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnBhcmVudC5pbml0JC50aGVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB6b29tID0gdGhpcy5wYXJlbnQubWFwLmdldFpvb20oKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRleHRWaXNpYmxlKHpvb20pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGxheWVycy5wdXNoKHRoaXMudGV4dExheWVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxuXG4gIGNyZWF0ZUxheWVyKGdyb3VwPzogYW55KSB7XG4gICAgbGV0IGxheWVyOiBhbnk7XG4gICAgY29uc3QgdHlwZSA9IGdyb3VwPy50eXBlO1xuICAgIGlmICh0eXBlID09PSAnY2lyY2xlJyB8fCB0eXBlID09PSAnc3F1YXJlJykge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgc2hhcGU6IHR5cGUsXG4gICAgICAgIGNvbG9yOiBncm91cD8uY29sb3IgfHwgJ3JnYmEoNTAsIDUwLCAyMDAsIDEpJyxcbiAgICAgICAgc2l6ZTogZ3JvdXA/LnNpemUgfHwgMTAsXG4gICAgICB9O1xuICAgICAgdGhpcy5hZGRQaWNrRXZlbnQob3B0aW9ucyk7XG4gICAgICBsYXllciA9IG5ldyBtYXB2Z2wuUG9pbnRMYXllcihvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdidWJibGUnIHx8IHR5cGUgPT09ICd3YXZlJykge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgY29sb3I6IGdyb3VwPy5jb2xvciB8fCAncmdiYSgyNTUsIDAsIDAsIDEpJyxcbiAgICAgICAgc2l6ZTogZ3JvdXA/LnNpemUgfHwgMTAsXG4gICAgICAgIGR1cmF0aW9uOiAxLFxuICAgICAgICB0cmFpbDogMSxcbiAgICAgIH07XG4gICAgICB0aGlzLmFkZFBpY2tFdmVudChvcHRpb25zKTtcbiAgICAgIGxheWVyID0gbmV3IG1hcHZnbC5DaXJjbGVMYXllcihvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaWNvbk9wdGlvbnMgPSB0aGlzLmdldEljb25PcHRpb25zKGdyb3VwKTtcbiAgICAgIGlmICh0aGlzLmVuYWJsZU1hcmtlckNsdXN0ZXJlciB8fCBncm91cD8uZW5hYmxlTWFya2VyQ2x1c3RlcmVyKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHtcbiAgICAgICAgICBpY29uT3B0aW9ucyxcbiAgICAgICAgICB0ZXh0T3B0aW9uczogdGhpcy5nZXRUZXh0T3B0aW9ucyh0aGlzLmNsdXN0ZXJGb250KSxcbiAgICAgICAgICBtaW5TaXplOiB0aGlzLmNsdXN0ZXJNaW5TaXplIHx8IDI1LFxuICAgICAgICAgIG1heFNpemU6IHRoaXMuY2x1c3Rlck1heFNpemUgfHwgNDAsXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLmNsdXN0ZXJHcmFkaWVudD8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgZ3JhZGllbnQ6IGFueSA9IHt9O1xuICAgICAgICAgIGdyYWRpZW50WzBdID0gdGhpcy5jbHVzdGVyR3JhZGllbnRbMF07XG4gICAgICAgICAgdGhpcy5jbHVzdGVyR3JhZGllbnQuc2xpY2UoMSkuZm9yRWFjaCgoZywgaSkgPT4ge1xuICAgICAgICAgICAgZ3JhZGllbnRbKGkgKyAxKSAvIHRoaXMuY2x1c3RlckdyYWRpZW50Lmxlbmd0aF0gPSBnO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIG9wdGlvbnMuZ3JhZGllbnQgPSBncmFkaWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jbHVzdGVyTWF4Wm9vbSAhPSBudWxsKSB7XG4gICAgICAgICAgb3B0aW9ucy5tYXhab29tID0gdGhpcy5jbHVzdGVyTWF4Wm9vbTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZFBpY2tFdmVudChvcHRpb25zKTtcbiAgICAgICAgbGF5ZXIgPSBuZXcgbWFwdmdsLkNsdXN0ZXJMYXllcihvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWRkUGlja0V2ZW50KGljb25PcHRpb25zKTtcbiAgICAgICAgbGF5ZXIgPSBuZXcgbWFwdmdsLkljb25MYXllcihpY29uT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsYXllcjtcbiAgfVxuXG4gIHVwZGF0ZVRleHRWaXNpYmxlKHpvb20/OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy50ZXh0TGF5ZXIpIHtcbiAgICAgIGlmICh6b29tID49IHRoaXMuc2hvd0xhYmVsTWluWm9vbSkge1xuICAgICAgICB0aGlzLnRleHRMYXllci5zaG93KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRleHRMYXllci5oaWRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRGF0YSgpIHtcbiAgICB0aGlzLmRhdGFNYXAgPSB7fTtcbiAgICBpZiAodGhpcy50b0NlbnRlciAmJiB0aGlzLl9kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBtYXhMbmcgPSAtMTgwO1xuICAgICAgbGV0IG1pbkxuZyA9IDE4MDtcbiAgICAgIGxldCBtYXhMYXQgPSAtOTA7XG4gICAgICBsZXQgbWluTGF0ID0gOTA7XG4gICAgICB0aGlzLl9kYXRhLmZvckVhY2goKHJlcykgPT4ge1xuICAgICAgICBtYXhMbmcgPSBNYXRoLm1heChtYXhMbmcsIHJlcy5sbmcpO1xuICAgICAgICBtaW5MbmcgPSBNYXRoLm1pbihtaW5MbmcsIHJlcy5sbmcpO1xuICAgICAgICBtYXhMYXQgPSBNYXRoLm1heChtYXhMYXQsIHJlcy5sYXQpO1xuICAgICAgICBtaW5MYXQgPSBNYXRoLm1pbihtaW5MYXQsIHJlcy5sYXQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnBhcmVudC5zZXRSZWN0Q2VudGVyQW5kWm9vbShtaW5MbmcsIG1heExuZywgbWluTGF0LCBtYXhMYXQpO1xuICAgIH1cbiAgICBjb25zdCBncm91cERhdGEgPSB7fTtcbiAgICB0aGlzLmdyb3VwRGF0YSA9IGdyb3VwRGF0YTtcbiAgICBjb25zdCB0ZXh0RGF0YSA9IFtdO1xuICAgIGNvbnN0IGdyb3VwcyA9IE9iamVjdC5rZXlzKHRoaXMubGF5ZXJNYXApO1xuICAgIGdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgZ3JvdXBEYXRhW2dyb3VwXSA9IFtdO1xuICAgIH0pO1xuICAgIC8vIGNvbnN0IGRlZmF1bHREYXRhID0gW107XG4gICAgdGhpcy5fZGF0YS5mb3JFYWNoKChyZWNvcmQpID0+IHtcbiAgICAgIGxldCBncm91cE5hbWUgPSByZWNvcmQuZ3JvdXA7XG4gICAgICBpZiAoZ3JvdXBOYW1lID09IG51bGwgfHwgdGhpcy5sYXllck1hcFtncm91cE5hbWVdID09IG51bGwpIHtcbiAgICAgICAgZ3JvdXBOYW1lID0gJyc7XG4gICAgICB9XG4gICAgICBsZXQgaWQgPSByZWNvcmQuaWRfdmFsdWUgfHwgcmVjb3JkLmlkO1xuICAgICAgaWYgKGlkID09IG51bGwgfHwgaWQgPT0gJycpIHtcbiAgICAgICAgaWQgPSBnZXRVVUlEKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtOiBhbnkgPSB7XG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgICBjb29yZGluYXRlczogW3JlY29yZC5sbmcsIHJlY29yZC5sYXRdLFxuICAgICAgICB9LFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgdGV4dDogcmVjb3JkLmFkZHJlc3MsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgZ3JvdXA6IGdyb3VwTmFtZSxcbiAgICAgICAgICByYXc6IHJlY29yZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICAvLyBNYXBWR0znmoRidWfvvIxDbHVzdGVyTGF5ZXLnmoRpY29uT3B0aW9uc+aXoOaViO+8jOWPquiDvemAmui/h3Byb3BlcnRpZXPorr7nva5cblxuICAgICAgY29uc3QgbGF5ZXIgPSB0aGlzLmxheWVyTWFwW2dyb3VwTmFtZV07XG4gICAgICBpZiAobGF5ZXIgIT0gbnVsbCAmJiBsYXllciBpbnN0YW5jZW9mIG1hcHZnbC5DbHVzdGVyTGF5ZXIpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGxheWVyLmdldE9wdGlvbnMoKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuaWNvbk9wdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCB7IGhlaWdodCwgd2lkdGgsIG9mZnNldCwgaWNvbiB9ID0gb3B0aW9ucy5pY29uT3B0aW9ucztcbiAgICAgICAgICBpdGVtLnByb3BlcnRpZXMgPSB7IGhlaWdodCwgd2lkdGgsIG9mZnNldCwgaWNvbiwgLi4uaXRlbS5wcm9wZXJ0aWVzIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyZWNvcmQuaWNvbikge1xuICAgICAgICBpdGVtLnByb3BlcnRpZXMuaWNvbiA9IHRoaXMuZmlsZVVybFNlcnZpY2UuZ2V0VXJsKHJlY29yZC5pY29uKTtcbiAgICAgIH1cbiAgICAgIC8vIGlmICh0aGlzLnNlbGVjdGVkSWQgJiYgdGhpcy5zZWxlY3RlZElkID09IGlkKSB7XG4gICAgICAvLyAgIHRoaXMudXBkYXRlU2l6ZShpdGVtLCAxLjUpO1xuICAgICAgLy8gICB0aGlzLmxhc3RTZWxlY3QgPSBpdGVtO1xuICAgICAgLy8gfVxuICAgICAgZ3JvdXBEYXRhW2dyb3VwTmFtZV0ucHVzaChpdGVtKTtcbiAgICAgIHRoaXMuZGF0YU1hcFtpdGVtLnByb3BlcnRpZXMuaWRdID0gaXRlbTtcbiAgICAgIGlmICh0aGlzLnRleHRMYXllcikge1xuICAgICAgICB0ZXh0RGF0YS5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VsZWN0ZWRJZCwgeyBtb3ZlOiB0aGlzLnNlbGVjdGVkSWQgIT0gdGhpcy5jdXJyZW50U2VsZWN0ZWRJZCwgcmVzZXRMYXllcjogZmFsc2UsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH1cbiAgICBncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgIGNvbnN0IGxheWVyID0gdGhpcy5sYXllck1hcFtncm91cF07XG4gICAgICBjb25zdCBkYXRhID0gZ3JvdXBEYXRhW2dyb3VwXTtcbiAgICAgIGxheWVyLnNldERhdGEoZGF0YSk7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMudGV4dExheWVyKSB7XG4gICAgICB0aGlzLnRleHRMYXllci5zZXREYXRhKHRleHREYXRhKTtcbiAgICB9XG4gIH1cblxuICBnZXRJY29uT3B0aW9ucyhncm91cDogYW55KSB7XG4gICAgbGV0IGljb24gPSB0aGlzLmljb25VcmwgfHwgJ2Fzc2V0cy9pbWcvc2NyZWVuL21hcmtlci5wbmcnO1xuICAgIGxldCBoZWlnaHQgPSB0aGlzLmljb25IZWlnaHQgfHwgMzguMjU7XG4gICAgbGV0IHdpZHRoID0gdGhpcy5pY29uV2lkdGggfHwgMjU7XG4gICAgbGV0IG9mZnNldFggPSB0aGlzLmljb25PZmZzZXRYID09IG51bGwgPyAwIDogdGhpcy5pY29uT2Zmc2V0WDtcbiAgICBsZXQgb2Zmc2V0WSA9IHRoaXMuaWNvbk9mZnNldFkgPT0gbnVsbCA/IC1oZWlnaHQgLyAyIDogdGhpcy5pY29uT2Zmc2V0WTtcbiAgICBpZiAoZ3JvdXAgJiYgZ3JvdXAuaW1hZ2VVcmwpIHtcbiAgICAgIGljb24gPSB0aGlzLmZpbGVVcmxTZXJ2aWNlLmdldFVybChncm91cC5pbWFnZVVybCk7XG4gICAgICB3aWR0aCA9IGdyb3VwLndpZHRoIHx8IHdpZHRoO1xuICAgICAgaGVpZ2h0ID0gZ3JvdXAuaGVpZ2h0IHx8IGhlaWdodDtcbiAgICAgIG9mZnNldFggPSBncm91cC5YT2Zmc2V0ICE9IG51bGwgPyBncm91cC5YT2Zmc2V0IDogMDtcbiAgICAgIG9mZnNldFkgPSBncm91cC5ZT2Zmc2V0ICE9IG51bGwgPyBncm91cC5ZT2Zmc2V0IDogLWhlaWdodCAvIDI7XG4gICAgfVxuICAgIGNvbnN0IGljb25PcHRpb25zOiBhbnkgPSB7XG4gICAgICBpY29uLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICBvZmZzZXQ6IFtvZmZzZXRYLCBvZmZzZXRZXSxcbiAgICB9O1xuICAgIHJldHVybiBpY29uT3B0aW9ucztcbiAgfVxuXG4gIGdldFRleHRPcHRpb25zKGZvbnQ6IGFueSkge1xuICAgIGNvbnN0IHRleHRPcHRpb25zOiBhbnkgPSB7fTtcbiAgICBpZiAoZm9udCkge1xuICAgICAgaWYgKGZvbnQuc2l6ZSkgdGV4dE9wdGlvbnMuZm9udFNpemUgPSBmb250LnNpemU7XG4gICAgICBpZiAoZm9udC5mYW1pbHkpIHRleHRPcHRpb25zLmZvbnRGYW1pbHkgPSBmb250LmZhbWlseTtcbiAgICAgIGlmIChmb250LmNvbG9yKSB0ZXh0T3B0aW9ucy5jb2xvciA9IGZvbnQuY29sb3I7XG4gICAgICAvLyBzd2l0Y2ggKGZvbnQud2VpZ2h0KSB7XG4gICAgICAvLyAgIGNhc2UgJ2xpZ2h0ZXInOlxuICAgICAgLy8gICAgIHRleHRPcHRpb25zLmxpbmVXaWR0aCA9IDE7XG4gICAgICAvLyAgICAgYnJlYWs7XG4gICAgICAvLyAgIGNhc2UgJ25vcm1hbCc6XG4gICAgICAvLyAgICAgdGV4dE9wdGlvbnMubGluZVdpZHRoID0gMjtcbiAgICAgIC8vICAgICBicmVhaztcbiAgICAgIC8vICAgY2FzZSAnYm9sZCc6XG4gICAgICAvLyAgICAgdGV4dE9wdGlvbnMubGluZVdpZHRoID0gMztcbiAgICAgIC8vICAgICBicmVhaztcbiAgICAgIC8vICAgY2FzZSAnYm9sZGVyJzpcbiAgICAgIC8vICAgICB0ZXh0T3B0aW9ucy5saW5lV2lkdGggPSA0O1xuICAgICAgLy8gICAgIGJyZWFrO1xuICAgICAgLy8gfVxuICAgIH1cbiAgICByZXR1cm4gdGV4dE9wdGlvbnM7XG4gIH1cblxuICBhZGRQaWNrRXZlbnQob3B0aW9uczogYW55KSB7XG4gICAgb3B0aW9ucy5lbmFibGVQaWNrZWQgPSB0cnVlO1xuICAgIG9wdGlvbnMub25DbGljayA9ICh7IGRhdGFJdGVtIH0pID0+IHtcbiAgICAgIC8vIOavj+S4quWbvuWxgumDveS8muinpuWPkeS4gOasoWNsaWNr5LqL5Lu277yM5aaC5p6c5q+P5Liq5Zu+5bGC6YO95rKh5pyJ54K55Lit5qCH6K6w54K577yM5Lyg5Ye6bnVsbFxuICAgICAgaWYgKGRhdGFJdGVtKSB7XG4gICAgICAgIHRoaXMuY2xpY2tEYXRhID0gZGF0YUl0ZW07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy51bnNlbGVjdE9uQ2xpY2tCbGFuayAhPT0gZmFsc2UgJiYgdGhpcy5jbGlja1RpbWVvdXQgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNsaWNrVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNsaWNrRGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSWQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2xpY2tUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmNsaWNrRGF0YSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5zdWJNYXJrZXJzID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZGF0YUl0ZW0pIHtcbiAgICAgICAgaWYgKGRhdGFJdGVtLnR5cGUgPT09ICdGZWF0dXJlJykge1xuICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZGF0YUl0ZW0uZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICAgICAgdGhpcy5wYXJlbnQuc2V0Q2VudGVyQW5kWm9vbShjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0sIHRoaXMucGFyZW50Lm1hcC5nZXRab29tKCkgKyAyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gZGF0YUl0ZW0ucHJvcGVydGllcy5yYXc7XG4gICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZCA9IGRhdGFJdGVtLnByb3BlcnRpZXMuaWQ7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdChkYXRhSXRlbS5wcm9wZXJ0aWVzLmlkKTtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IC4uLmRhdGEsIGlkOiBkYXRhLmlkX3ZhbHVlIHx8IGRhdGEuaWQgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGlmICh0aGlzLnBhcmVudC5zaG93VHlwZSA9PT0gJ21vdXNlb3ZlcicpIHtcbiAgICAgIGxldCBpbmZvV2luZG93ID0gbnVsbDtcbiAgICAgIGxldCBpbmZvV2luZG93RGF0YSA9IG51bGw7XG4gICAgICBvcHRpb25zLm9uTW91c2Vtb3ZlID0gKHsgZGF0YUl0ZW0gfSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gZGF0YUl0ZW0gIT0gbnVsbCA/IGRhdGFJdGVtLnByb3BlcnRpZXMucmF3IDogbnVsbDtcbiAgICAgICAgaWYgKGluZm9XaW5kb3cgIT0gbnVsbCAmJiBpbmZvV2luZG93RGF0YSAhPSBkYXRhKSB7XG4gICAgICAgICAgaW5mb1dpbmRvdy5jbG9zZSgpO1xuICAgICAgICAgIGluZm9XaW5kb3cgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEuaW5mb3JtYXRpb24gJiYgaW5mb1dpbmRvdyA9PSBudWxsKSB7XG4gICAgICAgICAgaW5mb1dpbmRvd0RhdGEgPSBkYXRhO1xuICAgICAgICAgIGluZm9XaW5kb3cgPSB0aGlzLnBhcmVudC5vcGVuSW5mb1dpbmRvdyhkYXRhLCBkYXRhLmxuZywgZGF0YS5sYXQpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChpZDogYW55LCBvcHRpb25zOiB7IG1vdmU/OiBib29sZWFuOyByZXNldExheWVyPzogYm9vbGVhbjsgZm9yY2U/OiBib29sZWFuIH0gPSB7fSkge1xuICAgIGlmIChpZCAhPSB0aGlzLmN1cnJlbnRTZWxlY3RlZElkIHx8IG9wdGlvbnMuZm9yY2UpIHtcbiAgICAgIGxldCBpdGVtOiBhbnk7XG4gICAgICBpZiAoaWQgIT0gbnVsbCAmJiBpZCAhPT0gJycpIHtcbiAgICAgICAgaXRlbSA9IHRoaXMuZGF0YU1hcFtpZF07XG4gICAgICAgIC8vIOWmguaenOaJvuS4jeWIsOaVsOaNru+8jOWPr+iDveaYr+aVsOaNrui/mOayoeWKoOi9ve+8jOetieaVsOaNruWKoOi9veS6huWGjeaJp+ihjFxuICAgICAgICBpZiAoaXRlbSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmN1cnJlbnRTZWxlY3RlZElkID0gaWQ7XG4gICAgICBsZXQgbGFzdFNlbGVjdEdyb3VwOiBzdHJpbmc7XG4gICAgICBsZXQgY3VycmVudFNlbGVjdEdyb3VwOiBzdHJpbmc7XG4gICAgICBsZXQgc2VsZWN0ZWREYXRhOiBhbnk7XG4gICAgICBpZiAodGhpcy5sYXN0U2VsZWN0KSB7XG4gICAgICAgIGxhc3RTZWxlY3RHcm91cCA9IHRoaXMubGFzdFNlbGVjdC5wcm9wZXJ0aWVzLmdyb3VwO1xuICAgICAgICB0aGlzLnVwZGF0ZVNpemUodGhpcy5sYXN0U2VsZWN0LCAxKTtcbiAgICAgICAgdGhpcy5sYXN0U2VsZWN0ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIGN1cnJlbnRTZWxlY3RHcm91cCA9IGl0ZW0ucHJvcGVydGllcy5ncm91cDtcbiAgICAgICAgdGhpcy51cGRhdGVTaXplKGl0ZW0sIDEuNSk7XG4gICAgICAgIHRoaXMubGFzdFNlbGVjdCA9IGl0ZW07XG4gICAgICAgIHNlbGVjdGVkRGF0YSA9IGl0ZW0ucHJvcGVydGllcy5yYXc7XG4gICAgICAgIGlmIChvcHRpb25zLm1vdmUpIHtcbiAgICAgICAgICBjb25zdCBsYXllciA9IHRoaXMubGF5ZXJNYXBbY3VycmVudFNlbGVjdEdyb3VwXTtcbiAgICAgICAgICBsZXQgem9vbSA9IHRoaXMucGFyZW50Lm1hcC5nZXRab29tKCk7XG4gICAgICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgbWFwdmdsLkNsdXN0ZXJMYXllciAmJiB0aGlzLmNsdXN0ZXJNYXhab29tICE9IG51bGwgJiYgem9vbSA8PSB0aGlzLmNsdXN0ZXJNYXhab29tKSB7XG4gICAgICAgICAgICB6b29tID0gdGhpcy5jbHVzdGVyTWF4Wm9vbSArIDI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucGFyZW50LnNldENlbnRlckFuZFpvb20oc2VsZWN0ZWREYXRhLmxuZywgc2VsZWN0ZWREYXRhLmxhdCwgem9vbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VsZWN0ZWREYXRhLmluZm9ybWF0aW9uICYmIHRoaXMucGFyZW50LnNob3dUeXBlICE9PSAnbW91c2VvdmVyJykge1xuICAgICAgICAgIC8vIOmYsuatouWFtuS7luWbvuWxguWwhuS/oeaBr+eql+WPo+WFs+mXrVxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQub3BlbkluZm9XaW5kb3coc2VsZWN0ZWREYXRhLCBzZWxlY3RlZERhdGEubG5nLCBzZWxlY3RlZERhdGEubGF0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWREYXRhID0ge307XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5yZXNldExheWVyICE9PSBmYWxzZSkge1xuICAgICAgICBpZiAoY3VycmVudFNlbGVjdEdyb3VwICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0TGF5ZXJEYXRhKGN1cnJlbnRTZWxlY3RHcm91cCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxhc3RTZWxlY3RHcm91cCAhPSBudWxsICYmIGxhc3RTZWxlY3RHcm91cCAhPT0gY3VycmVudFNlbGVjdEdyb3VwKSB7XG4gICAgICAgICAgdGhpcy5yZXNldExheWVyRGF0YShsYXN0U2VsZWN0R3JvdXApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyDlpoLmnpzpgInkuK3nmoRpZOaJvuS4jeWIsOWvueW6lOaVsOaNrizlj6/og73mmK/mlbDmja7ov5jmsqHliqDovb3vvIxcbiAgICAgIGlmIChpZCA9PSBudWxsIHx8IGl0ZW0gIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm1ha2VyQ2xpY2suZW1pdCh7IC4uLnNlbGVjdGVkRGF0YSwgaWQ6IHNlbGVjdGVkRGF0YS5pZF92YWx1ZSB8fCBzZWxlY3RlZERhdGEuaWQgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlc2V0TGF5ZXJEYXRhKGdyb3VwOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsYXllciA9IHRoaXMubGF5ZXJNYXBbZ3JvdXBdO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdyb3VwRGF0YVtncm91cF07XG4gICAgaWYgKGxheWVyICYmIGRhdGEpIHtcbiAgICAgIGxheWVyLnNldERhdGEoZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2l6ZShpdGVtOiBhbnksIHNjYWxlOiBudW1iZXIpIHtcbiAgICBpZiAoaXRlbSAmJiB0aGlzLmVubGFyZ2VPblNlbGVjdCkge1xuICAgICAgY29uc3QgbGF5ZXIgPSB0aGlzLmxheWVyTWFwW2l0ZW0ucHJvcGVydGllcy5ncm91cF07XG4gICAgICBsZXQgb3B0aW9uczogYW55O1xuXG4gICAgICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBtYXB2Z2wuQ2x1c3RlckxheWVyKSB7XG4gICAgICAgIG9wdGlvbnMgPSBsYXllci5nZXRPcHRpb25zKCkuaWNvbk9wdGlvbnM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zID0gbGF5ZXIuZ2V0T3B0aW9ucygpO1xuICAgICAgfVxuICAgICAgY29uc3QgeyBoZWlnaHQsIHdpZHRoLCBvZmZzZXQgfSA9IG9wdGlvbnM7XG4gICAgICBpdGVtLnByb3BlcnRpZXMuaGVpZ2h0ID0gaGVpZ2h0ICogc2NhbGU7XG4gICAgICBpdGVtLnByb3BlcnRpZXMud2lkdGggPSB3aWR0aCAqIHNjYWxlO1xuICAgICAgaWYgKGl0ZW0ucHJvcGVydGllcy5vZmZzZXQpIHtcbiAgICAgICAgaXRlbS5wcm9wZXJ0aWVzLm9mZnNldCA9IFtvZmZzZXRbMF0gKiBzY2FsZSwgb2Zmc2V0WzFdICogc2NhbGVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19