mis-crystal-design-system 18.2.13 → 18.2.16-test

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.
Files changed (34) hide show
  1. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +1 -0
  2. package/daterangepicker_v2/daterangepicker-constants.d.ts +4 -0
  3. package/daterangepicker_v2/daterangepicker.module.d.ts +9 -8
  4. package/daterangepicker_v2/models/drp-config.model.d.ts +14 -0
  5. package/daterangepicker_v2/public_api.d.ts +3 -1
  6. package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +2 -1
  7. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +24 -1
  8. package/daterangepicker_v2/tz-drp-mobile-container/tz-drp-mobile-container.component.d.ts +13 -0
  9. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +49 -33
  10. package/esm2022/daterangepicker_v2/daterangepicker-constants.mjs +12 -1
  11. package/esm2022/daterangepicker_v2/daterangepicker.module.mjs +5 -4
  12. package/esm2022/daterangepicker_v2/models/drp-config.model.mjs +1 -1
  13. package/esm2022/daterangepicker_v2/public_api.mjs +3 -1
  14. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +8 -3
  15. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +177 -50
  16. package/esm2022/daterangepicker_v2/tz-drp-mobile-container/tz-drp-mobile-container.component.mjs +267 -0
  17. package/esm2022/specificdatepicker/models/sdp-config.model.mjs +1 -1
  18. package/esm2022/specificdatepicker/specificdatepicker.module.mjs +4 -5
  19. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +277 -225
  20. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +33 -31
  21. package/esm2022/table/table.component.mjs +62 -63
  22. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +48 -32
  23. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  24. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +464 -61
  25. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  26. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +311 -257
  27. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  28. package/fesm2022/mis-crystal-design-system-table.mjs +61 -62
  29. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  30. package/package.json +7 -7
  31. package/specificdatepicker/models/sdp-config.model.d.ts +1 -0
  32. package/specificdatepicker/specificdatepicker.module.d.ts +2 -3
  33. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +10 -9
  34. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +4 -2
@@ -1,8 +1,7 @@
1
- import { OverlayConfig } from "@angular/cdk/overlay";
1
+ import { ConnectionPositionPair, OverlayConfig } from "@angular/cdk/overlay";
2
2
  import { ComponentPortal } from "@angular/cdk/portal";
3
3
  import { Directive, HostListener, Injector, input, output, Optional, signal, effect } from "@angular/core";
4
4
  import { take } from "rxjs/operators";
5
- import { genPositionPairs } from "mis-crystal-design-system/utils";
6
5
  import { CONTAINER_DATA, DATE_FORMAT } from "./daterangepicker-constants";
7
6
  import { TzDrpContainerComponent } from "./tz-sdp-container/tz-sdp-container.component";
8
7
  import * as i0 from "@angular/core";
@@ -34,6 +33,7 @@ export class TzSpecificDatepickerDirective {
34
33
  this.offsetY = input(0);
35
34
  this.isSPickerSelected = input(false);
36
35
  this.isSingleDatePickerEnable = input(false);
36
+ this.isMobileView = input(false);
37
37
  // Outputs are now defined using `output()`
38
38
  this.dateChange = output();
39
39
  this.dateChangeRange = output();
@@ -41,10 +41,35 @@ export class TzSpecificDatepickerDirective {
41
41
  this.overlayRef = null;
42
42
  // Effect to handle the overlay position update reactively
43
43
  effect(() => {
44
- // Triggered by changes in any position-related input signals
45
- this.updateOverlayPosition();
44
+ const positions = this.buildPositions();
45
+ if (!this.overlayRef) {
46
+ return;
47
+ }
48
+ this.overlayRef.updatePositionStrategy(this.buildPositionStrategy(positions));
46
49
  });
47
50
  }
51
+ buildPositions() {
52
+ const x = this.positionX();
53
+ const y = this.positionY();
54
+ const offsetX = this.offsetX();
55
+ const offsetY = this.offsetY();
56
+ const oppositeY = y === "top" ? "bottom" : y === "bottom" ? "top" : "center";
57
+ const otherX = ["start", "center", "end"].filter(pos => pos !== x);
58
+ const pair = (originX, originY, overlayY) => new ConnectionPositionPair({ originX, originY }, { overlayX: originX, overlayY }, offsetX, offsetY);
59
+ return [
60
+ pair(x, y, oppositeY),
61
+ pair(x, oppositeY, y),
62
+ ...otherX.map(pos => pair(pos, y, oppositeY)),
63
+ ...otherX.map(pos => pair(pos, oppositeY, y))
64
+ ];
65
+ }
66
+ buildPositionStrategy(positions) {
67
+ return this.overlay
68
+ .position()
69
+ .flexibleConnectedTo(this.element)
70
+ .withPositions(positions)
71
+ .withPush(true);
72
+ }
48
73
  toggleDatePicker() {
49
74
  if (this.isOpen()) {
50
75
  this.close();
@@ -68,16 +93,7 @@ export class TzSpecificDatepickerDirective {
68
93
  }
69
94
  open() {
70
95
  this.isOpen.set(true);
71
- const positionStrategy = this.overlay
72
- .position()
73
- .flexibleConnectedTo(this.element)
74
- .withPositions(genPositionPairs({
75
- positionX: this.positionX(),
76
- positionY: this.positionY(),
77
- offsetX: this.offsetX(),
78
- offsetY: this.offsetY(),
79
- }, true))
80
- .withPush(true);
96
+ const positionStrategy = this.buildPositionStrategy(this.buildPositions());
81
97
  const config = new OverlayConfig({
82
98
  hasBackdrop: true,
83
99
  positionStrategy,
@@ -103,6 +119,7 @@ export class TzSpecificDatepickerDirective {
103
119
  noShow: this.noShows(),
104
120
  isSPickerSelected: this.isSPickerSelected(),
105
121
  isSingleDatePickerEnable: this.isSingleDatePickerEnable(),
122
+ isMobileView: this.isMobileView(),
106
123
  }
107
124
  }
108
125
  ]
@@ -115,21 +132,6 @@ export class TzSpecificDatepickerDirective {
115
132
  this.close();
116
133
  });
117
134
  }
118
- updateOverlayPosition() {
119
- if (this.overlayRef) {
120
- const positionStrategy = this.overlay
121
- .position()
122
- .flexibleConnectedTo(this.element)
123
- .withPositions(genPositionPairs({
124
- positionX: this.positionX(),
125
- positionY: this.positionY(),
126
- offsetX: this.offsetX(),
127
- offsetY: this.offsetY(),
128
- }, true))
129
- .withPush(true);
130
- this.overlayRef.updatePositionStrategy(positionStrategy);
131
- }
132
- }
133
135
  applyDate(dates) {
134
136
  this.dateChange.emit(dates);
135
137
  this.control?.control.patchValue(dates);
@@ -155,7 +157,7 @@ export class TzSpecificDatepickerDirective {
155
157
  static { this.ɵfac = function TzSpecificDatepickerDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TzSpecificDatepickerDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Overlay), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i2.NgControl, 8)); }; }
156
158
  static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: TzSpecificDatepickerDirective, selectors: [["input", "misTzSdp", ""]], hostBindings: function TzSpecificDatepickerDirective_HostBindings(rf, ctx) { if (rf & 1) {
157
159
  i0.ɵɵlistener("click", function TzSpecificDatepickerDirective_click_HostBindingHandler() { return ctx.toggleDatePicker(); })("keydown.enter", function TzSpecificDatepickerDirective_keydown_enter_HostBindingHandler() { return ctx.toggleDatePickerOnEnter(); })("keydown.esc", function TzSpecificDatepickerDirective_keydown_esc_HostBindingHandler() { return ctx.closeOnEsc(); });
158
- } }, inputs: { dpConfig: [1, "dpConfig"], selectedDates: [1, "selectedDates"], selectedDatesRange: [1, "selectedDatesRange"], datesDisabled: [1, "datesDisabled"], holidaysDates: [1, "holidaysDates"], weekOffsSelection: [1, "weekOffsSelection"], noShows: [1, "noShows"], dateMessages: [1, "dateMessages"], positionX: [1, "positionX"], positionY: [1, "positionY"], offsetX: [1, "offsetX"], offsetY: [1, "offsetY"], isSPickerSelected: [1, "isSPickerSelected"], isSingleDatePickerEnable: [1, "isSingleDatePickerEnable"] }, outputs: { dateChange: "dateChange", dateChangeRange: "dateChangeRange" } }); }
160
+ } }, inputs: { dpConfig: [1, "dpConfig"], selectedDates: [1, "selectedDates"], selectedDatesRange: [1, "selectedDatesRange"], datesDisabled: [1, "datesDisabled"], holidaysDates: [1, "holidaysDates"], weekOffsSelection: [1, "weekOffsSelection"], noShows: [1, "noShows"], dateMessages: [1, "dateMessages"], positionX: [1, "positionX"], positionY: [1, "positionY"], offsetX: [1, "offsetX"], offsetY: [1, "offsetY"], isSPickerSelected: [1, "isSPickerSelected"], isSingleDatePickerEnable: [1, "isSingleDatePickerEnable"], isMobileView: [1, "isMobileView"] }, outputs: { dateChange: "dateChange", dateChangeRange: "dateChangeRange" } }); }
159
161
  }
160
162
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TzSpecificDatepickerDirective, [{
161
163
  type: Directive,
@@ -174,4 +176,4 @@ export class TzSpecificDatepickerDirective {
174
176
  type: HostListener,
175
177
  args: ["keydown.esc"]
176
178
  }] }); })();
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc3BlY2lmaWNkYXRlcGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zcGVjaWZpY2RhdGVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFvQixNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpJLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7O0FBS3hGLE1BQU0sT0FBTyw2QkFBNkI7SUE2QnhDLFlBQ1UsT0FBbUIsRUFDbkIsT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ3RCLE9BQWtCO1FBSDlCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFoQ3hDLHlDQUF5QztRQUN6QixhQUFRLEdBQUcsS0FBSyxDQUFxQjtZQUNuRCxNQUFNLEVBQUUsV0FBVztZQUNuQixPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsUUFBUSxFQUFFLGNBQWM7U0FD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S0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUM7UUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLFNBQVMsSUFBSSxPQUFPLFNBQVMsQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdkQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQzs4SEE1S1UsNkJBQTZCO29FQUE3Qiw2QkFBNkI7WUFBN0Isa0dBQUEsc0JBQWtCLElBQVcscUdBQTdCLDZCQUF5QixJQUFJLGlHQUE3QixnQkFBWSxJQUFpQjs7O2lGQUE3Qiw2QkFBNkI7Y0FIekMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7YUFDNUI7O3NCQWtDSSxRQUFRO3FCQVVYLGdCQUFnQjtrQkFEZixZQUFZO21CQUFDLE9BQU87WUFVckIsdUJBQXVCO2tCQUR0QixZQUFZO21CQUFDLGVBQWU7WUFVN0IsVUFBVTtrQkFEVCxZQUFZO21CQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBpbnB1dCwgb3V0cHV0LCBPcHRpb25hbCwgVmlld0NvbnRhaW5lclJlZiwgc2lnbmFsLCBlZmZlY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBnZW5Qb3NpdGlvblBhaXJzIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdXRpbHNcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9EQVRBLCBEQVRFX0ZPUk1BVCB9IGZyb20gXCIuL2RhdGVyYW5nZXBpY2tlci1jb25zdGFudHNcIjtcbmltcG9ydCB7IElTRGF0ZVBpY2tlckNvbmZpZywgSVNEYXRlUGlja2VyVG9hc3RUZXh0LCBJU1NlbGVjdGVkRGF0ZXNDb25maWcsIElSU2VsZWN0ZWREYXRlc0NvbmZpZyB9IGZyb20gXCIuL21vZGVscy9zZHAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBUekRycENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gXCIuL3R6LXNkcC1jb250YWluZXIvdHotc2RwLWNvbnRhaW5lci5jb21wb25lbnRcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcImlucHV0W21pc1R6U2RwXVwiXG59KVxuZXhwb3J0IGNsYXNzIFR6U3BlY2lmaWNEYXRlcGlja2VyRGlyZWN0aXZlIHtcbiAgLy8gSW5wdXRzIGFyZSBub3cgZGVmaW5lZCB1c2luZyBgaW5wdXQoKWBcbiAgcHVibGljIHJlYWRvbmx5IGRwQ29uZmlnID0gaW5wdXQ8SVNEYXRlUGlja2VyQ29uZmlnPih7XG4gICAgZm9ybWF0OiBEQVRFX0ZPUk1BVCxcbiAgICBtaW5EYXRlOiBcIlwiLFxuICAgIG1heERhdGU6IFwiXCIsXG4gICAgdGltZXpvbmU6IFwiQXNpYS9Lb2xrYXRhXCJcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZERhdGVzID0gaW5wdXQ8SVNTZWxlY3RlZERhdGVzQ29uZmlnW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkRGF0ZXNSYW5nZSA9IGlucHV0PElSU2VsZWN0ZWREYXRlc0NvbmZpZz4oe3N0YXJ0RGF0ZTogbnVsbCwgZW5kRGF0ZTogbnVsbH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZXNEaXNhYmxlZCA9IGlucHV0PHN0cmluZ1tdPihbXSk7XG4gIHB1YmxpYyByZWFkb25seSBob2xpZGF5c0RhdGVzID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IHdlZWtPZmZzU2VsZWN0aW9uID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IG5vU2hvd3MgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZU1lc3NhZ2VzID0gaW5wdXQ8SVNEYXRlUGlja2VyVG9hc3RUZXh0W10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uWCA9IGlucHV0PFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiPihcImNlbnRlclwiKTtcbiAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uWSA9IGlucHV0PFwidG9wXCIgfCBcImNlbnRlclwiIHwgXCJib3R0b21cIj4oXCJib3R0b21cIik7XG4gIHB1YmxpYyByZWFkb25seSBvZmZzZXRYID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgcHVibGljIHJlYWRvbmx5IG9mZnNldFkgPSBpbnB1dDxudW1iZXI+KDApO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNTUGlja2VyU2VsZWN0ZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpc1NpbmdsZURhdGVQaWNrZXJFbmFibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIFxuICAvLyBPdXRwdXRzIGFyZSBub3cgZGVmaW5lZCB1c2luZyBgb3V0cHV0KClgXG4gIHB1YmxpYyByZWFkb25seSBkYXRlQ2hhbmdlID0gb3V0cHV0PElTU2VsZWN0ZWREYXRlc0NvbmZpZ1tdPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZUNoYW5nZVJhbmdlID0gb3V0cHV0PElSU2VsZWN0ZWREYXRlc0NvbmZpZz4oKTtcbiAgXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbFxuICApIHtcbiAgICAvLyBFZmZlY3QgdG8gaGFuZGxlIHRoZSBvdmVybGF5IHBvc2l0aW9uIHVwZGF0ZSByZWFjdGl2ZWx5XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIC8vIFRyaWdnZXJlZCBieSBjaGFuZ2VzIGluIGFueSBwb3NpdGlvbi1yZWxhdGVkIGlucHV0IHNpZ25hbHNcbiAgICAgIHRoaXMudXBkYXRlT3ZlcmxheVBvc2l0aW9uKCk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwiY2xpY2tcIilcbiAgdG9nZ2xlRGF0ZVBpY2tlcigpIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwia2V5ZG93bi5lbnRlclwiKVxuICB0b2dnbGVEYXRlUGlja2VyT25FbnRlcigpIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwia2V5ZG93bi5lc2NcIilcbiAgY2xvc2VPbkVzYygpIHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlbigpIHtcbiAgICB0aGlzLmlzT3Blbi5zZXQodHJ1ZSk7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudClcbiAgICAgIC53aXRoUG9zaXRpb25zKFxuICAgICAgICBnZW5Qb3NpdGlvblBhaXJzKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvc2l0aW9uWDogdGhpcy5wb3NpdGlvblgoKSxcbiAgICAgICAgICAgIHBvc2l0aW9uWTogdGhpcy5wb3NpdGlvblkoKSxcbiAgICAgICAgICAgIG9mZnNldFg6IHRoaXMub2Zmc2V0WCgpLFxuICAgICAgICAgICAgb2Zmc2V0WTogdGhpcy5vZmZzZXRZKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC53aXRoUHVzaCh0cnVlKTtcbiAgICAgIFxuICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBiYWNrZHJvcENsYXNzOiBcImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XG4gICAgY29uc3QgdGVtcFJlZiA9IG5ldyBDb21wb25lbnRQb3J0YWwoXG4gICAgICBUekRycENvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENPTlRBSU5FUl9EQVRBLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZXM6IHRoaXMuZGF0ZU1lc3NhZ2VzKCksXG4gICAgICAgICAgICAgIGRhdGVzOiB0aGlzLmNvbnRyb2w/LmNvbnRyb2wudmFsdWUgfHwgdGhpcy5zZWxlY3RlZERhdGVzKCksXG4gICAgICAgICAgICAgIGRhdGVzUmFuZ2U6IHRoaXMuY29udHJvbD8uY29udHJvbC52YWx1ZSB8fCB0aGlzLnNlbGVjdGVkRGF0ZXNSYW5nZSgpLFxuICAgICAgICAgICAgICBkcENvbmZpZzogdGhpcy5kcENvbmZpZygpLFxuICAgICAgICAgICAgICBkYXRlc0Rpc2FibGVkOiB0aGlzLmRhdGVzRGlzYWJsZWQoKSxcbiAgICAgICAgICAgICAgZGF0ZUNoYW5nZTogdGhpcy5hcHBseURhdGUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgZGF0ZUNoYW5nZVJhbmdlOiB0aGlzLmFwcGx5RGF0ZVJhbmdlLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIGNsb3NlOiB0aGlzLmNsb3NlLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHdlZWtPZmZzOiB0aGlzLndlZWtPZmZzU2VsZWN0aW9uKCksXG4gICAgICAgICAgICAgIGhvbGlkYXlzOiB0aGlzLmhvbGlkYXlzRGF0ZXMoKSxcbiAgICAgICAgICAgICAgbm9TaG93OiB0aGlzLm5vU2hvd3MoKSxcbiAgICAgICAgICAgICAgaXNTUGlja2VyU2VsZWN0ZWQ6IHRoaXMuaXNTUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgaXNTaW5nbGVEYXRlUGlja2VyRW5hYmxlOiB0aGlzLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZSgpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGVtcFJlZik7XG4gICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAuYmFja2Ryb3BDbGljaygpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0pO1xuICB9XG4gIFxuICBwcml2YXRlIHVwZGF0ZU92ZXJsYXlQb3NpdGlvbigpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudClcbiAgICAgICAgLndpdGhQb3NpdGlvbnMoXG4gICAgICAgICAgZ2VuUG9zaXRpb25QYWlycyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcG9zaXRpb25YOiB0aGlzLnBvc2l0aW9uWCgpLFxuICAgICAgICAgICAgICBwb3NpdGlvblk6IHRoaXMucG9zaXRpb25ZKCksXG4gICAgICAgICAgICAgIG9mZnNldFg6IHRoaXMub2Zmc2V0WCgpLFxuICAgICAgICAgICAgICBvZmZzZXRZOiB0aGlzLm9mZnNldFkoKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC53aXRoUHVzaCh0cnVlKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5RGF0ZShkYXRlczogSVNTZWxlY3RlZERhdGVzQ29uZmlnW10pIHtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChkYXRlcyk7XG4gICAgdGhpcy5jb250cm9sPy5jb250cm9sLnBhdGNoVmFsdWUoZGF0ZXMpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuICBcbiAgYXBwbHlEYXRlUmFuZ2UoZGF0ZXM6IElSU2VsZWN0ZWREYXRlc0NvbmZpZykge1xuICAgIHRoaXMuZGF0ZUNoYW5nZVJhbmdlLmVtaXQoZGF0ZXMpO1xuICAgIHRoaXMuY29udHJvbD8uY29udHJvbC5wYXRjaFZhbHVlKGRhdGVzKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbiAgXG4gIGNsb3NlKCkge1xuICAgIGNvbnN0IHRyaWdnZXJFbCA9IHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0cmlnZ2VyRWwgJiYgdHlwZW9mIHRyaWdnZXJFbC5mb2N1cyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRyaWdnZXJFbC5mb2N1cygpLCAxMCk7XG4gICAgfVxuICB9XG59XG5cblxuIl19
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc3BlY2lmaWNkYXRlcGlja2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zcGVjaWZpY2RhdGVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBb0MsYUFBYSxFQUFxQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2xKLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQW9CLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekksT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFMUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7QUFLeEYsTUFBTSxPQUFPLDZCQUE2QjtJQThCeEMsWUFDVSxPQUFtQixFQUNuQixPQUFnQixFQUNoQixnQkFBa0MsRUFDdEIsT0FBa0I7UUFIOUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQWpDeEMseUNBQXlDO1FBQ3pCLGFBQVEsR0FBRyxLQUFLLENBQXFCO1lBQ25ELE1BQU0sRUFBRSxXQUFXO1lBQ25CLE9BQU8sRUFBRSxFQUFFO1lBQ1gsT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRLEVBQUUsY0FBYztTQUN6QixDQUFDLENBQUM7UUFDYSxrQkFBYSxHQUFHLEtB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TSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxTQUFTLElBQUksT0FBTyxTQUFTLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3ZELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7OEhBdktVLDZCQUE2QjtvRUFBN0IsNkJBQTZCO1lBQTdCLGtHQUFBLHNCQUFrQixJQUFXLHFHQUE3Qiw2QkFBeUIsSUFBSSxpR0FBN0IsZ0JBQVksSUFBaUI7OztpRkFBN0IsNkJBQTZCO2NBSHpDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCOztzQkFtQ0ksUUFBUTtxQkF1Q1gsZ0JBQWdCO2tCQURmLFlBQVk7bUJBQUMsT0FBTztZQVVyQix1QkFBdUI7a0JBRHRCLFlBQVk7bUJBQUMsZUFBZTtZQVU3QixVQUFVO2tCQURULFlBQVk7bUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIEhvcml6b250YWxDb25uZWN0aW9uUG9zLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmLCBWZXJ0aWNhbENvbm5lY3Rpb25Qb3MgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIGlucHV0LCBvdXRwdXQsIE9wdGlvbmFsLCBWaWV3Q29udGFpbmVyUmVmLCBzaWduYWwsIGVmZmVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IHRha2UgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9EQVRBLCBEQVRFX0ZPUk1BVCB9IGZyb20gXCIuL2RhdGVyYW5nZXBpY2tlci1jb25zdGFudHNcIjtcbmltcG9ydCB7IElTRGF0ZVBpY2tlckNvbmZpZywgSVNEYXRlUGlja2VyVG9hc3RUZXh0LCBJU1NlbGVjdGVkRGF0ZXNDb25maWcsIElSU2VsZWN0ZWREYXRlc0NvbmZpZyB9IGZyb20gXCIuL21vZGVscy9zZHAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBUekRycENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gXCIuL3R6LXNkcC1jb250YWluZXIvdHotc2RwLWNvbnRhaW5lci5jb21wb25lbnRcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcImlucHV0W21pc1R6U2RwXVwiXG59KVxuZXhwb3J0IGNsYXNzIFR6U3BlY2lmaWNEYXRlcGlja2VyRGlyZWN0aXZlIHtcbiAgLy8gSW5wdXRzIGFyZSBub3cgZGVmaW5lZCB1c2luZyBgaW5wdXQoKWBcbiAgcHVibGljIHJlYWRvbmx5IGRwQ29uZmlnID0gaW5wdXQ8SVNEYXRlUGlja2VyQ29uZmlnPih7XG4gICAgZm9ybWF0OiBEQVRFX0ZPUk1BVCxcbiAgICBtaW5EYXRlOiBcIlwiLFxuICAgIG1heERhdGU6IFwiXCIsXG4gICAgdGltZXpvbmU6IFwiQXNpYS9Lb2xrYXRhXCJcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZERhdGVzID0gaW5wdXQ8SVNTZWxlY3RlZERhdGVzQ29uZmlnW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkRGF0ZXNSYW5nZSA9IGlucHV0PElSU2VsZWN0ZWREYXRlc0NvbmZpZz4oe3N0YXJ0RGF0ZTogbnVsbCwgZW5kRGF0ZTogbnVsbH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZXNEaXNhYmxlZCA9IGlucHV0PHN0cmluZ1tdPihbXSk7XG4gIHB1YmxpYyByZWFkb25seSBob2xpZGF5c0RhdGVzID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IHdlZWtPZmZzU2VsZWN0aW9uID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IG5vU2hvd3MgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZU1lc3NhZ2VzID0gaW5wdXQ8SVNEYXRlUGlja2VyVG9hc3RUZXh0W10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uWCA9IGlucHV0PFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiPihcImNlbnRlclwiKTtcbiAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uWSA9IGlucHV0PFwidG9wXCIgfCBcImNlbnRlclwiIHwgXCJib3R0b21cIj4oXCJib3R0b21cIik7XG4gIHB1YmxpYyByZWFkb25seSBvZmZzZXRYID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgcHVibGljIHJlYWRvbmx5IG9mZnNldFkgPSBpbnB1dDxudW1iZXI+KDApO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNTUGlja2VyU2VsZWN0ZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpc1NpbmdsZURhdGVQaWNrZXJFbmFibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpc01vYmlsZVZpZXcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIFxuICAvLyBPdXRwdXRzIGFyZSBub3cgZGVmaW5lZCB1c2luZyBgb3V0cHV0KClgXG4gIHB1YmxpYyByZWFkb25seSBkYXRlQ2hhbmdlID0gb3V0cHV0PElTU2VsZWN0ZWREYXRlc0NvbmZpZ1tdPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZUNoYW5nZVJhbmdlID0gb3V0cHV0PElSU2VsZWN0ZWREYXRlc0NvbmZpZz4oKTtcbiAgXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbFxuICApIHtcbiAgICAvLyBFZmZlY3QgdG8gaGFuZGxlIHRoZSBvdmVybGF5IHBvc2l0aW9uIHVwZGF0ZSByZWFjdGl2ZWx5XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IHRoaXMuYnVpbGRQb3NpdGlvbnMoKTtcbiAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuYnVpbGRQb3NpdGlvblN0cmF0ZWd5KHBvc2l0aW9ucykpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBvc2l0aW9ucygpOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10ge1xuICAgIGNvbnN0IHggPSB0aGlzLnBvc2l0aW9uWCgpO1xuICAgIGNvbnN0IHkgPSB0aGlzLnBvc2l0aW9uWSgpO1xuICAgIGNvbnN0IG9mZnNldFggPSB0aGlzLm9mZnNldFgoKTtcbiAgICBjb25zdCBvZmZzZXRZID0gdGhpcy5vZmZzZXRZKCk7XG4gICAgY29uc3Qgb3Bwb3NpdGVZOiBWZXJ0aWNhbENvbm5lY3Rpb25Qb3MgPSB5ID09PSBcInRvcFwiID8gXCJib3R0b21cIiA6IHkgPT09IFwiYm90dG9tXCIgPyBcInRvcFwiIDogXCJjZW50ZXJcIjtcbiAgICBjb25zdCBvdGhlclggPSAoW1wic3RhcnRcIiwgXCJjZW50ZXJcIiwgXCJlbmRcIl0gYXMgSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3NbXSkuZmlsdGVyKHBvcyA9PiBwb3MgIT09IHgpO1xuICAgIGNvbnN0IHBhaXIgPSAob3JpZ2luWDogSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3MsIG9yaWdpblk6IFZlcnRpY2FsQ29ubmVjdGlvblBvcywgb3ZlcmxheVk6IFZlcnRpY2FsQ29ubmVjdGlvblBvcykgPT5cbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWCwgb3JpZ2luWSB9LCB7IG92ZXJsYXlYOiBvcmlnaW5YLCBvdmVybGF5WSB9LCBvZmZzZXRYLCBvZmZzZXRZKTtcblxuICAgIHJldHVybiBbXG4gICAgICBwYWlyKHgsIHksIG9wcG9zaXRlWSksXG4gICAgICBwYWlyKHgsIG9wcG9zaXRlWSwgeSksXG4gICAgICAuLi5vdGhlclgubWFwKHBvcyA9PiBwYWlyKHBvcywgeSwgb3Bwb3NpdGVZKSksXG4gICAgICAuLi5vdGhlclgubWFwKHBvcyA9PiBwYWlyKHBvcywgb3Bwb3NpdGVZLCB5KSlcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBvc2l0aW9uU3RyYXRlZ3kocG9zaXRpb25zOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10pIHtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50KVxuICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIpXG4gIHRvZ2dsZURhdGVQaWNrZXIoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24uZW50ZXJcIilcbiAgdG9nZ2xlRGF0ZVBpY2tlck9uRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcImtleWRvd24uZXNjXCIpXG4gIGNsb3NlT25Fc2MoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW4oKSB7XG4gICAgdGhpcy5pc09wZW4uc2V0KHRydWUpO1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLmJ1aWxkUG9zaXRpb25TdHJhdGVneSh0aGlzLmJ1aWxkUG9zaXRpb25zKCkpO1xuICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBiYWNrZHJvcENsYXNzOiBcImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XG4gICAgY29uc3QgdGVtcFJlZiA9IG5ldyBDb21wb25lbnRQb3J0YWwoXG4gICAgICBUekRycENvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENPTlRBSU5FUl9EQVRBLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgbWVzc2FnZXM6IHRoaXMuZGF0ZU1lc3NhZ2VzKCksXG4gICAgICAgICAgICAgIGRhdGVzOiB0aGlzLmNvbnRyb2w/LmNvbnRyb2wudmFsdWUgfHwgdGhpcy5zZWxlY3RlZERhdGVzKCksXG4gICAgICAgICAgICAgIGRhdGVzUmFuZ2U6IHRoaXMuY29udHJvbD8uY29udHJvbC52YWx1ZSB8fCB0aGlzLnNlbGVjdGVkRGF0ZXNSYW5nZSgpLFxuICAgICAgICAgICAgICBkcENvbmZpZzogdGhpcy5kcENvbmZpZygpLFxuICAgICAgICAgICAgICBkYXRlc0Rpc2FibGVkOiB0aGlzLmRhdGVzRGlzYWJsZWQoKSxcbiAgICAgICAgICAgICAgZGF0ZUNoYW5nZTogdGhpcy5hcHBseURhdGUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgZGF0ZUNoYW5nZVJhbmdlOiB0aGlzLmFwcGx5RGF0ZVJhbmdlLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIGNsb3NlOiB0aGlzLmNsb3NlLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHdlZWtPZmZzOiB0aGlzLndlZWtPZmZzU2VsZWN0aW9uKCksXG4gICAgICAgICAgICAgIGhvbGlkYXlzOiB0aGlzLmhvbGlkYXlzRGF0ZXMoKSxcbiAgICAgICAgICAgICAgbm9TaG93OiB0aGlzLm5vU2hvd3MoKSxcbiAgICAgICAgICAgICAgaXNTUGlja2VyU2VsZWN0ZWQ6IHRoaXMuaXNTUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgaXNTaW5nbGVEYXRlUGlja2VyRW5hYmxlOiB0aGlzLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZSgpLFxuICAgICAgICAgICAgICBpc01vYmlsZVZpZXc6IHRoaXMuaXNNb2JpbGVWaWV3KCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0ZW1wUmVmKTtcbiAgICB0aGlzLm92ZXJsYXlSZWZcbiAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBhcHBseURhdGUoZGF0ZXM6IElTU2VsZWN0ZWREYXRlc0NvbmZpZ1tdKSB7XG4gICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoZGF0ZXMpO1xuICAgIHRoaXMuY29udHJvbD8uY29udHJvbC5wYXRjaFZhbHVlKGRhdGVzKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbiAgXG4gIGFwcGx5RGF0ZVJhbmdlKGRhdGVzOiBJUlNlbGVjdGVkRGF0ZXNDb25maWcpIHtcbiAgICB0aGlzLmRhdGVDaGFuZ2VSYW5nZS5lbWl0KGRhdGVzKTtcbiAgICB0aGlzLmNvbnRyb2w/LmNvbnRyb2wucGF0Y2hWYWx1ZShkYXRlcyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG4gIFxuICBjbG9zZSgpIHtcbiAgICBjb25zdCB0cmlnZ2VyRWwgPSB0aGlzLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodHJpZ2dlckVsICYmIHR5cGVvZiB0cmlnZ2VyRWwuZm9jdXMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0cmlnZ2VyRWwuZm9jdXMoKSwgMTApO1xuICAgIH1cbiAgfVxufVxuXG5cbiJdfQ==