@colijnit/sharedcomponents 260.1.11 → 260.1.13

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 (31) hide show
  1. package/bundles/colijnit-sharedcomponents.umd.js +116 -12
  2. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
  3. package/colijnit-sharedcomponents.metadata.json +1 -1
  4. package/esm2015/lib/components/date-planning/component/agenda/agenda-header.component.js +83 -18
  5. package/esm2015/lib/components/date-planning/component/agenda/view-select.component.js +37 -4
  6. package/esm2015/lib/components/date-planning/component/calendar/calendar-view.component.js +2 -2
  7. package/esm2015/lib/components/date-planning/component/calendar/calendar.component.js +2 -2
  8. package/esm2015/lib/components/date-planning/date-planning.component.js +3 -3
  9. package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +4 -1
  10. package/esm2015/lib/enum/calendar-view.enum.js +3 -1
  11. package/esm2015/lib/enum/icon.enum.js +1 -1
  12. package/esm2015/lib/model/icon-svg.js +1 -1
  13. package/esm2015/lib/res/dictionary/dictionaries.js +1 -7
  14. package/esm2015/lib/utils/calendar.utils.js +73 -1
  15. package/fesm2015/colijnit-sharedcomponents.js +199 -30
  16. package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
  17. package/lib/components/date-planning/component/agenda/view-select.component.d.ts +2 -0
  18. package/lib/enum/calendar-view.enum.d.ts +2 -0
  19. package/lib/res/dictionary/dictionaries.d.ts +0 -31885
  20. package/lib/utils/calendar.utils.d.ts +3 -0
  21. package/package.json +1 -1
  22. package/358.645812766f7a400d0d38.js +0 -1
  23. package/3rdpartylicenses.txt +0 -2017
  24. package/7.3142e473803d1a7f9729.js +0 -1
  25. package/977.bd6291f9ee6f6ddf91f1.js +0 -1
  26. package/favicon.ico +0 -0
  27. package/index.html +0 -12
  28. package/main.0245847a0061efd03ea1.js +0 -1
  29. package/polyfills.907fe9d1887c5de17993.js +0 -1
  30. package/runtime.023dce2502cba6970a33.js +0 -1
  31. package/styles.1eab293def3e726bfaa4.css +0 -1
@@ -29,6 +29,70 @@ export class CalendarUtils {
29
29
  return datesByTheHour;
30
30
  }
31
31
  static GetDaysOfWeek(date) {
32
+ let day = date ? new Date(date) : new Date();
33
+ day = CalendarUtils.getMonday(day);
34
+ const daysOfWeek = [];
35
+ let options;
36
+ let month;
37
+ for (let i = 0; i < 7; i++) {
38
+ const dayPerWeek = new Weekday();
39
+ const dayHours = CalendarUtils.GetDayHours(day);
40
+ dayPerWeek.newMonth = day.getMonth() !== month;
41
+ dayPerWeek.weekdaySelected = day.getDay() === date.getDay();
42
+ dayPerWeek.weekdayDay = day.getDate();
43
+ options = { weekday: "short" };
44
+ dayPerWeek.weekdayShort = day.toLocaleDateString(CalendarUtils.Locale, options);
45
+ options = { weekday: "long" };
46
+ dayPerWeek.weekdayLong = day.toLocaleDateString(CalendarUtils.Locale, options);
47
+ options = { month: "short" };
48
+ dayPerWeek.weekdayMonthShort = day.toLocaleDateString(CalendarUtils.Locale, options);
49
+ options = { month: "long" };
50
+ dayPerWeek.weekdayMonthLong = day.toLocaleDateString(CalendarUtils.Locale, options);
51
+ dayPerWeek.weekdayYear = day.getFullYear();
52
+ dayPerWeek.date = new Date(day);
53
+ dayPerWeek.datesByTheHour = dayHours;
54
+ daysOfWeek.push(dayPerWeek);
55
+ month = day.getMonth();
56
+ day = new Date(day);
57
+ day.setDate(day.getDate() + 1);
58
+ }
59
+ const week = new Week();
60
+ week.weekDays = daysOfWeek;
61
+ return week;
62
+ }
63
+ static GetWorkDaysOfWeek(date) {
64
+ let day = date ? new Date(date) : new Date();
65
+ day = CalendarUtils.getMonday(day);
66
+ const daysOfWeek = [];
67
+ let options;
68
+ let month;
69
+ for (let i = 0; i < 5; i++) {
70
+ const dayPerWeek = new Weekday();
71
+ const dayHours = CalendarUtils.GetDayHours(day);
72
+ dayPerWeek.newMonth = day.getMonth() !== month;
73
+ dayPerWeek.weekdaySelected = day.getDay() === date.getDay();
74
+ dayPerWeek.weekdayDay = day.getDate();
75
+ options = { weekday: "short" };
76
+ dayPerWeek.weekdayShort = day.toLocaleDateString(CalendarUtils.Locale, options);
77
+ options = { weekday: "long" };
78
+ dayPerWeek.weekdayLong = day.toLocaleDateString(CalendarUtils.Locale, options);
79
+ options = { month: "short" };
80
+ dayPerWeek.weekdayMonthShort = day.toLocaleDateString(CalendarUtils.Locale, options);
81
+ options = { month: "long" };
82
+ dayPerWeek.weekdayMonthLong = day.toLocaleDateString(CalendarUtils.Locale, options);
83
+ dayPerWeek.weekdayYear = day.getFullYear();
84
+ dayPerWeek.date = new Date(day);
85
+ dayPerWeek.datesByTheHour = dayHours;
86
+ daysOfWeek.push(dayPerWeek);
87
+ month = day.getMonth();
88
+ day = new Date(day);
89
+ day.setDate(day.getDate() + 1);
90
+ }
91
+ const week = new Week();
92
+ week.weekDays = daysOfWeek;
93
+ return week;
94
+ }
95
+ static GetThreeDays(date) {
32
96
  let day;
33
97
  if (!date) {
34
98
  day = new Date();
@@ -98,10 +162,18 @@ export class CalendarUtils {
98
162
  week.weekDays = daysAround;
99
163
  return week;
100
164
  }
165
+ static getMonday(date) {
166
+ const d = new Date(date);
167
+ const day = d.getDay(); // 0 (Sun) - 6 (Sat)
168
+ const diff = (day === 0 ? -6 : 1) - day;
169
+ d.setDate(d.getDate() + diff);
170
+ d.setHours(0, 0, 0, 0);
171
+ return d;
172
+ }
101
173
  }
102
174
  CalendarUtils.Locale = undefined;
103
175
  CalendarUtils.Now = new Date();
104
176
  CalendarUtils.ctorParameters = () => [
105
177
  { type: LanguageCode, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }
106
178
  ];
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvdXRpbHMvY2FsZW5kYXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFekMsTUFBTSxPQUFPLGFBQWE7SUFLdEIsWUFDd0MsT0FBcUI7UUFBckIsWUFBTyxHQUFQLE9BQU8sQ0FBYztRQUV6RCxhQUFhLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLHFDQUFxQztJQUNyQyxJQUFJO0lBQ0osRUFBRTtJQUNGLDRDQUE0QztJQUM1Qyx5Q0FBeUM7SUFDekMsSUFBSTtJQUVHLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBUztRQUMvQixNQUFNLGNBQWMsR0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxHQUFHLEVBQUU7WUFDTCxJQUFJLE9BQU8sR0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdCLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0IsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFD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QU8sQ0FBQyxDQUFDO1lBRS9FLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUM3QixVQUFVLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDckYsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzVCLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRixVQUFVLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUUzQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLFVBQVUsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1lBQ3JDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFNUIsdUJBQXVCO1lBQ3ZCLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O0FBL0dlLG9CQUFNLEdBQWlCLFNBQVMsQ0FBQztBQUVqQyxpQkFBRyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7O1lBTmpDLFlBQVksdUJBU1gsTUFBTSxTQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RhdGVVdGlsc30gZnJvbSBcIi4vZGF0ZS11dGlsc1wiO1xyXG5pbXBvcnQge1dlZWtkYXl9IGZyb20gXCIuLi9tb2RlbC93ZWVrZGF5Lm1vZGVsXCI7XHJcbmltcG9ydCB7SW5qZWN0LCBMT0NBTEVfSUR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TGFuZ3VhZ2VDb2RlfSBmcm9tIFwiLi4vZW51bS9sYW5ndWFnZS1jb2RlLmVudW1cIjtcclxuaW1wb3J0IHtXZWVrfSBmcm9tIFwiLi4vbW9kZWwvd2Vlay5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyVXRpbHMge1xyXG4gICAgcHVibGljIHN0YXRpYyBMb2NhbGU6IExhbmd1YWdlQ29kZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIE5vdzogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChMT0NBTEVfSUQpIHByaXZhdGUgcmVhZG9ubHkgX2xvY2FsZTogTGFuZ3VhZ2VDb2RlXHJcbiAgICApIHtcclxuICAgICAgICBDYWxlbmRhclV0aWxzLkxvY2FsZSA9IF9sb2NhbGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHVibGljIHN0YXRpYyBHZXRDdXJyZW50WWVhcigpOiBudW1iZXIge1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLk5vdy5nZXRGdWxsWWVhcigpO1xyXG4gICAgLy8gfVxyXG4gICAgLy9cclxuICAgIC8vIHB1YmxpYyBzdGF0aWMgR2V0Q3VycmVudE1vbnRoKCk6IG51bWJlciB7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuTm93LmdldFVUQ01vbnRoKCkgKyAxO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0RGF5SG91cnMoZGF5OiBEYXRlKTogRGF0ZVtdIHtcclxuICAgICAgICBjb25zdCBkYXRlc0J5VGhlSG91cjogRGF0ZVtdID0gW107XHJcbiAgICAgICAgaWYgKGRheSkge1xyXG4gICAgICAgICAgICBsZXQgbmV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKGRheSk7XHJcbiAgICAgICAgICAgIG5ld0RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgICAgIGRhdGVzQnlUaGVIb3VyLnB1c2gobmV3RGF0ZSk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCAyMzsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdEYXRlID0gbmV3IERhdGUobmV3RGF0ZSk7XHJcbiAgICAgICAgICAgICAgICBuZXdEYXRlLnNldEhvdXJzKG5ld0RhdGUuZ2V0SG91cnMoKSArIDEpO1xyXG4gICAgICAgICAgICAgICAgZGF0ZXNCeVRoZUhvdXIucHVzaChuZXdEYXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZXNCeVRoZUhvdXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBHZXREYXlzT2ZXZWVrKGRhdGU6IERhdGUpOiBXZWVrIHtcclxuICAgICAgbGV0IGRheTtcclxuICAgICAgaWYoIWRhdGUpIHtcclxuICAgICAgIGRheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF5ID0gZGF0ZTtcclxuICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRheXNPZldlZWs6IFdlZWtkYXlbXSA9IFtdO1xyXG4gICAgICAgIGxldCBvcHRpb25zOiBhbnk7XHJcbiAgICAgICAgbGV0IG1vbnRoOiBudW1iZXI7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IDM7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBkYXlQZXJXZWVrOiBXZWVrZGF5ID0gbmV3IFdlZWtkYXkoKTtcclxuICAgICAgICAgICAgY29uc3QgZGF5SG91cnM6IERhdGVbXSA9IENhbGVuZGFyVXRpbHMuR2V0RGF5SG91cnMoZGF5KTtcclxuICAgICAgICAgICAgZGF5UGVyV2Vlay5uZXdNb250aCA9IGRheS5nZXRNb250aCgpICE9PSBtb250aDtcclxuICAgICAgICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5U2VsZWN0ZWQgPSBkYXkuZ2V0RGF5KCkgPT09IGRhdGUuZ2V0RGF5KCk7XHJcbiAgICAgICAgICAgIGRheVBlcldlZWsud2Vla2RheURheSA9IGRheS5nZXREYXRlKCk7XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7IHdlZWtkYXk6IFwic2hvcnRcIiB9O1xyXG4gICAgICAgICAgICBkYXlQZXJXZWVrLndlZWtkYXlTaG9ydCA9IGRheS50b0xvY2FsZURhdGVTdHJpbmcoQ2FsZW5kYXJVdGlscy5Mb2NhbGUsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICBvcHRpb25zID0geyB3ZWVrZGF5OiBcImxvbmdcIiB9O1xyXG4gICAgICAgICAgICBkYXlQZXJXZWVrLndlZWtkYXlMb25nID0gZGF5LnRvTG9jYWxlRGF0ZVN0cmluZyhDYWxlbmRhclV0aWxzLkxvY2FsZSwgb3B0aW9ucyk7XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zID0geyBtb250aDogXCJzaG9ydFwiIH07XHJcbiAgICAgICAgICAgIGRheVBlcldlZWsud2Vla2RheU1vbnRoU2hvcnQgPSBkYXkudG9Mb2NhbGVEYXRlU3RyaW5nKENhbGVuZGFyVXRpbHMuTG9jYWxlLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgb3B0aW9ucyA9IHsgbW9udGg6IFwibG9uZ1wiIH07XHJcbiAgICAgICAgICAgIGRheVBlcldlZWsud2Vla2RheU1vbnRoTG9uZyA9IGRheS50b0xvY2FsZURhdGVTdHJpbmcoQ2FsZW5kYXJVdGlscy5Mb2NhbGUsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICBkYXlQZXJXZWVrLndlZWtkYXlZZWFyID0gZGF5LmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgICAgICAgICBkYXlQZXJXZWVrLmRhdGUgPSBuZXcgRGF0ZShkYXkpO1xyXG4gICAgICAgICAgICBkYXlQZXJXZWVrLmRhdGVzQnlUaGVIb3VyID0gZGF5SG91cnM7XHJcbiAgICAgICAgICAgIGRheXNPZldlZWsucHVzaChkYXlQZXJXZWVrKTtcclxuICAgICAgICAgICAgbW9udGggPSBkYXkuZ2V0TW9udGgoKTtcclxuICAgICAgICAgICAgZGF5ID0gbmV3IERhdGUoZGF5KTtcclxuICAgICAgICAgICAgZGF5LnNldERhdGUoZGF5LmdldERhdGUoKSArIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB3ZWVrOiBXZWVrID0gbmV3IFdlZWsoKTtcclxuICAgICAgICB3ZWVrLndlZWtEYXlzID0gZGF5c09mV2VlaztcclxuICAgICAgICByZXR1cm4gd2VlaztcclxuICAgIH1cclxuICBwdWJsaWMgc3RhdGljIEdldERheXNBcm91bmQoZGF0ZTogRGF0ZSk6IFdlZWsge1xyXG4gICAgY29uc3QgZGF5c0Fyb3VuZDogV2Vla2RheVtdID0gW107XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IGRhdGUgPyBuZXcgRGF0ZShkYXRlKSA6IG5ldyBEYXRlKCk7XHJcbiAgICBjdXJyZW50RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgZGF5IGFuZCBnbyB0d28gZGF5cyBiYWNrXHJcbiAgICBsZXQgZGF5ID0gbmV3IERhdGUoY3VycmVudERhdGUpO1xyXG4gICAgZGF5LnNldERhdGUoZGF5LmdldERhdGUoKSAtIDIpO1xyXG5cclxuICAgIC8vIExvb3AgdG8gZ2V0IHRoZSB0d28gZGF5cyBiZWZvcmUgYW5kIGZvdXIgZGF5cyBhZnRlciB0aGUgY3VycmVudCBkYXlcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGRheVBlcldlZWs6IFdlZWtkYXkgPSBuZXcgV2Vla2RheSgpO1xyXG4gICAgICBjb25zdCBkYXlIb3VyczogRGF0ZVtdID0gQ2FsZW5kYXJVdGlscy5HZXREYXlIb3VycyhkYXkpO1xyXG5cclxuICAgICAgZGF5UGVyV2Vlay5uZXdNb250aCA9IGRheS5nZXRNb250aCgpICE9PSBjdXJyZW50RGF0ZS5nZXRNb250aCgpO1xyXG4gICAgICBkYXlQZXJXZWVrLndlZWtkYXlTZWxlY3RlZCA9IGRheS5nZXREYXRlKCkgPT09IGN1cnJlbnREYXRlLmdldERhdGUoKTtcclxuICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5RGF5ID0gZGF5LmdldERhdGUoKTtcclxuXHJcbiAgICAgIGxldCBvcHRpb25zOiBhbnkgPSB7IHdlZWtkYXk6IFwic2hvcnRcIiB9O1xyXG4gICAgICBkYXlQZXJXZWVrLndlZWtkYXlTaG9ydCA9IGRheS50b0xvY2FsZURhdGVTdHJpbmcoQ2FsZW5kYXJVdGlscy5Mb2NhbGUsIG9wdGlvbnMpO1xyXG4gICAgICBvcHRpb25zID0geyB3ZWVrZGF5OiBcImxvbmdcIiB9O1xyXG4gICAgICBkYXlQZXJXZWVrLndlZWtkYXlMb25nID0gZGF5LnRvTG9jYWxlRGF0ZVN0cmluZyhDYWxlbmRhclV0aWxzLkxvY2FsZSwgb3B0aW9ucyk7XHJcblxyXG4gICAgICBvcHRpb25zID0geyBtb250aDogXCJzaG9ydFwiIH07XHJcbiAgICAgIGRheVBlcldlZWsud2Vla2RheU1vbnRoU2hvcnQgPSBkYXkudG9Mb2NhbGVEYXRlU3RyaW5nKENhbGVuZGFyVXRpbHMuTG9jYWxlLCBvcHRpb25zKTtcclxuICAgICAgb3B0aW9ucyA9IHsgbW9udGg6IFwibG9uZ1wiIH07XHJcbiAgICAgIGRheVBlcldlZWsud2Vla2RheU1vbnRoTG9uZyA9IGRheS50b0xvY2FsZURhdGVTdHJpbmcoQ2FsZW5kYXJVdGlscy5Mb2NhbGUsIG9wdGlvbnMpO1xyXG4gICAgICBkYXlQZXJXZWVrLndlZWtkYXlZZWFyID0gZGF5LmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgICBkYXlQZXJXZWVrLmRhdGUgPSBuZXcgRGF0ZShkYXkpO1xyXG4gICAgICBkYXlQZXJXZWVrLmRhdGVzQnlUaGVIb3VyID0gZGF5SG91cnM7XHJcbiAgICAgIGRheXNBcm91bmQucHVzaChkYXlQZXJXZWVrKTtcclxuXHJcbiAgICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgZGF5XHJcbiAgICAgIGRheS5zZXREYXRlKGRheS5nZXREYXRlKCkgKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB3ZWVrOiBXZWVrID0gbmV3IFdlZWsoKTtcclxuICAgIHdlZWsud2Vla0RheXMgPSBkYXlzQXJvdW5kO1xyXG4gICAgcmV0dXJuIHdlZWs7XHJcbiAgfVxyXG59XHJcbiJdfQ==
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvdXRpbHMvY2FsZW5kYXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFekMsTUFBTSxPQUFPLGFBQWE7SUFLdEIsWUFDd0MsT0FBcUI7UUFBckIsWUFBTyxHQUFQLE9BQU8sQ0FBYztRQUV6RCxhQUFhLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLHFDQUFxQztJQUNyQyxJQUFJO0lBQ0osRUFBRTtJQUNGLDRDQUE0QztJQUM1Qyx5Q0FBeUM7SUFDekMsSUFBSTtJQUVHLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBUztRQUMvQixNQUFNLGNBQWMsR0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxHQUFHLEVBQUU7WUFDTCxJQUFJLE9BQU8sR0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdCLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0IsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFD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QUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUU1Qix1QkFBdUI7WUFDdkIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEM7UUFFRCxNQUFNLElBQUksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBVTtRQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxvQkFBb0I7UUFDNUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDOztBQTdMZSxvQkFBTSxHQUFpQixTQUFTLENBQUM7QUFFakMsaUJBQUcsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDOztZQU5qQyxZQUFZLHVCQVNYLE1BQU0sU0FBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEYXRlVXRpbHN9IGZyb20gXCIuL2RhdGUtdXRpbHNcIjtcclxuaW1wb3J0IHtXZWVrZGF5fSBmcm9tIFwiLi4vbW9kZWwvd2Vla2RheS5tb2RlbFwiO1xyXG5pbXBvcnQge0luamVjdCwgTE9DQUxFX0lEfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0xhbmd1YWdlQ29kZX0gZnJvbSBcIi4uL2VudW0vbGFuZ3VhZ2UtY29kZS5lbnVtXCI7XHJcbmltcG9ydCB7V2Vla30gZnJvbSBcIi4uL21vZGVsL3dlZWsubW9kZWxcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhclV0aWxzIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgTG9jYWxlOiBMYW5ndWFnZUNvZGUgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBOb3c6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTE9DQUxFX0lEKSBwcml2YXRlIHJlYWRvbmx5IF9sb2NhbGU6IExhbmd1YWdlQ29kZVxyXG4gICAgKSB7XHJcbiAgICAgICAgQ2FsZW5kYXJVdGlscy5Mb2NhbGUgPSBfbG9jYWxlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHB1YmxpYyBzdGF0aWMgR2V0Q3VycmVudFllYXIoKTogbnVtYmVyIHtcclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5Ob3cuZ2V0RnVsbFllYXIoKTtcclxuICAgIC8vIH1cclxuICAgIC8vXHJcbiAgICAvLyBwdWJsaWMgc3RhdGljIEdldEN1cnJlbnRNb250aCgpOiBudW1iZXIge1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLk5vdy5nZXRVVENNb250aCgpICsgMTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldERheUhvdXJzKGRheTogRGF0ZSk6IERhdGVbXSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZXNCeVRoZUhvdXI6IERhdGVbXSA9IFtdO1xyXG4gICAgICAgIGlmIChkYXkpIHtcclxuICAgICAgICAgICAgbGV0IG5ld0RhdGU6IERhdGUgPSBuZXcgRGF0ZShkYXkpO1xyXG4gICAgICAgICAgICBuZXdEYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG4gICAgICAgICAgICBkYXRlc0J5VGhlSG91ci5wdXNoKG5ld0RhdGUpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgMjM7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbmV3RGF0ZSA9IG5ldyBEYXRlKG5ld0RhdGUpO1xyXG4gICAgICAgICAgICAgICAgbmV3RGF0ZS5zZXRIb3VycyhuZXdEYXRlLmdldEhvdXJzKCkgKyAxKTtcclxuICAgICAgICAgICAgICAgIGRhdGVzQnlUaGVIb3VyLnB1c2gobmV3RGF0ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRhdGVzQnlUaGVIb3VyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0RGF5c09mV2VlayhkYXRlOiBEYXRlKTogV2VlayB7XHJcbiAgICAgIGxldCBkYXkgPSBkYXRlID8gbmV3IERhdGUoZGF0ZSkgOiBuZXcgRGF0ZSgpO1xyXG4gICAgICBkYXkgPSBDYWxlbmRhclV0aWxzLmdldE1vbmRheShkYXkpO1xyXG4gICAgICAgIGNvbnN0IGRheXNPZldlZWs6IFdlZWtkYXlbXSA9IFtdO1xyXG4gICAgICAgIGxldCBvcHRpb25zOiBhbnk7XHJcbiAgICAgICAgbGV0IG1vbnRoOiBudW1iZXI7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IDc7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBkYXlQZXJXZWVrOiBXZWVrZGF5ID0gbmV3IFdlZWtkYXkoKTtcclxuICAgICAgICAgICAgY29uc3QgZGF5SG91cnM6IERhdGVbXSA9IENhbGVuZGFyVXRpbHMuR2V0RGF5SG91cnMoZGF5KTtcclxuICAgICAgICAgICAgZGF5UGVyV2Vlay5uZXdNb250aCA9IGRheS5nZXRNb250aCgpICE9PSBtb250aDtcclxuICAgICAgICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5U2VsZWN0ZWQgPSBkYXkuZ2V0RGF5KCkgPT09IGRhdGUuZ2V0RGF5KCk7XHJcbiAgICAgICAgICAgIGRheVBlcldlZWsud2Vla2RheURheSA9IGRheS5nZXREYXRlKCk7XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSB7IHdlZWtkYXk6IFwic2hvcnRcIiB9O1xyXG4gICAgICAgICAgICBkYXlQZXJXZWVrLndlZWtkYXlTaG9ydCA9IGRheS50b0xvY2FsZURhdGVTdHJpbmcoQ2FsZW5kYXJVdGlscy5Mb2NhbGUsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICBvcHRpb25zID0geyB3ZWVrZGF5OiBcImxvbmdcIiB9O1xyXG4gICAgICAgICAgICBkYXlQZXJXZWVrLndlZWtkYXlMb25nID0gZGF5LnRvTG9jYWxlRGF0ZVN0cmluZyhDYWxlbmRhclV0aWxzLkxvY2FsZSwgb3B0aW9ucyk7XHJcblxyXG4gICAgICAgICAgICBvcHRpb25zID0geyBtb250aDogXCJzaG9ydFwiIH07XHJcbiAgICAgICAgICAgIGRheVBlcldlZWsud2Vla2RheU1vbnRoU2hvcnQgPSBkYXkudG9Mb2NhbGVEYXRlU3RyaW5nKENhbGVuZGFyVXRpbHMuTG9jYWxlLCBvcHRpb25zKTtcclxuICAgICAgICAgICAgb3B0aW9ucyA9IHsgbW9udGg6IFwibG9uZ1wiIH07XHJcbiAgICAgICAgICAgIGRheVBlcldlZWsud2Vla2RheU1vbnRoTG9uZyA9IGRheS50b0xvY2FsZURhdGVTdHJpbmcoQ2FsZW5kYXJVdGlscy5Mb2NhbGUsIG9wdGlvbnMpO1xyXG4gICAgICAgICAgICBkYXlQZXJXZWVrLndlZWtkYXlZZWFyID0gZGF5LmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgICAgICAgICBkYXlQZXJXZWVrLmRhdGUgPSBuZXcgRGF0ZShkYXkpO1xyXG4gICAgICAgICAgICBkYXlQZXJXZWVrLmRhdGVzQnlUaGVIb3VyID0gZGF5SG91cnM7XHJcbiAgICAgICAgICAgIGRheXNPZldlZWsucHVzaChkYXlQZXJXZWVrKTtcclxuICAgICAgICAgICAgbW9udGggPSBkYXkuZ2V0TW9udGgoKTtcclxuICAgICAgICAgICAgZGF5ID0gbmV3IERhdGUoZGF5KTtcclxuICAgICAgICAgICAgZGF5LnNldERhdGUoZGF5LmdldERhdGUoKSArIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB3ZWVrOiBXZWVrID0gbmV3IFdlZWsoKTtcclxuICAgICAgICB3ZWVrLndlZWtEYXlzID0gZGF5c09mV2VlaztcclxuICAgICAgICByZXR1cm4gd2VlaztcclxuICAgIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBHZXRXb3JrRGF5c09mV2VlayhkYXRlOiBEYXRlKTogV2VlayB7XHJcbiAgICBsZXQgZGF5ID0gZGF0ZSA/IG5ldyBEYXRlKGRhdGUpIDogbmV3IERhdGUoKTtcclxuICAgIGRheSA9IENhbGVuZGFyVXRpbHMuZ2V0TW9uZGF5KGRheSk7XHJcbiAgICBjb25zdCBkYXlzT2ZXZWVrOiBXZWVrZGF5W10gPSBbXTtcclxuICAgIGxldCBvcHRpb25zOiBhbnk7XHJcbiAgICBsZXQgbW9udGg6IG51bWJlcjtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCA1OyBpKyspIHtcclxuICAgICAgY29uc3QgZGF5UGVyV2VlazogV2Vla2RheSA9IG5ldyBXZWVrZGF5KCk7XHJcbiAgICAgIGNvbnN0IGRheUhvdXJzOiBEYXRlW10gPSBDYWxlbmRhclV0aWxzLkdldERheUhvdXJzKGRheSk7XHJcbiAgICAgIGRheVBlcldlZWsubmV3TW9udGggPSBkYXkuZ2V0TW9udGgoKSAhPT0gbW9udGg7XHJcbiAgICAgIGRheVBlcldlZWsud2Vla2RheVNlbGVjdGVkID0gZGF5LmdldERheSgpID09PSBkYXRlLmdldERheSgpO1xyXG4gICAgICBkYXlQZXJXZWVrLndlZWtkYXlEYXkgPSBkYXkuZ2V0RGF0ZSgpO1xyXG4gICAgICBvcHRpb25zID0geyB3ZWVrZGF5OiBcInNob3J0XCIgfTtcclxuICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5U2hvcnQgPSBkYXkudG9Mb2NhbGVEYXRlU3RyaW5nKENhbGVuZGFyVXRpbHMuTG9jYWxlLCBvcHRpb25zKTtcclxuICAgICAgb3B0aW9ucyA9IHsgd2Vla2RheTogXCJsb25nXCIgfTtcclxuICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5TG9uZyA9IGRheS50b0xvY2FsZURhdGVTdHJpbmcoQ2FsZW5kYXJVdGlscy5Mb2NhbGUsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgb3B0aW9ucyA9IHsgbW9udGg6IFwic2hvcnRcIiB9O1xyXG4gICAgICBkYXlQZXJXZWVrLndlZWtkYXlNb250aFNob3J0ID0gZGF5LnRvTG9jYWxlRGF0ZVN0cmluZyhDYWxlbmRhclV0aWxzLkxvY2FsZSwgb3B0aW9ucyk7XHJcbiAgICAgIG9wdGlvbnMgPSB7IG1vbnRoOiBcImxvbmdcIiB9O1xyXG4gICAgICBkYXlQZXJXZWVrLndlZWtkYXlNb250aExvbmcgPSBkYXkudG9Mb2NhbGVEYXRlU3RyaW5nKENhbGVuZGFyVXRpbHMuTG9jYWxlLCBvcHRpb25zKTtcclxuICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5WWVhciA9IGRheS5nZXRGdWxsWWVhcigpO1xyXG5cclxuICAgICAgZGF5UGVyV2Vlay5kYXRlID0gbmV3IERhdGUoZGF5KTtcclxuICAgICAgZGF5UGVyV2Vlay5kYXRlc0J5VGhlSG91ciA9IGRheUhvdXJzO1xyXG4gICAgICBkYXlzT2ZXZWVrLnB1c2goZGF5UGVyV2Vlayk7XHJcbiAgICAgIG1vbnRoID0gZGF5LmdldE1vbnRoKCk7XHJcbiAgICAgIGRheSA9IG5ldyBEYXRlKGRheSk7XHJcbiAgICAgIGRheS5zZXREYXRlKGRheS5nZXREYXRlKCkgKyAxKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHdlZWs6IFdlZWsgPSBuZXcgV2VlaygpO1xyXG4gICAgd2Vlay53ZWVrRGF5cyA9IGRheXNPZldlZWs7XHJcbiAgICByZXR1cm4gd2VlaztcclxuICB9XHJcbiAgcHVibGljIHN0YXRpYyBHZXRUaHJlZURheXMoZGF0ZTogRGF0ZSk6IFdlZWsge1xyXG4gICAgbGV0IGRheTtcclxuICAgIGlmKCFkYXRlKSB7XHJcbiAgICAgIGRheSA9IG5ldyBEYXRlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkYXkgPSBkYXRlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGF5c09mV2VlazogV2Vla2RheVtdID0gW107XHJcbiAgICBsZXQgb3B0aW9uczogYW55O1xyXG4gICAgbGV0IG1vbnRoOiBudW1iZXI7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgMzsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGRheVBlcldlZWs6IFdlZWtkYXkgPSBuZXcgV2Vla2RheSgpO1xyXG4gICAgICBjb25zdCBkYXlIb3VyczogRGF0ZVtdID0gQ2FsZW5kYXJVdGlscy5HZXREYXlIb3VycyhkYXkpO1xyXG4gICAgICBkYXlQZXJXZWVrLm5ld01vbnRoID0gZGF5LmdldE1vbnRoKCkgIT09IG1vbnRoO1xyXG4gICAgICBkYXlQZXJXZWVrLndlZWtkYXlTZWxlY3RlZCA9IGRheS5nZXREYXkoKSA9PT0gZGF0ZS5nZXREYXkoKTtcclxuICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5RGF5ID0gZGF5LmdldERhdGUoKTtcclxuICAgICAgb3B0aW9ucyA9IHsgd2Vla2RheTogXCJzaG9ydFwiIH07XHJcbiAgICAgIGRheVBlcldlZWsud2Vla2RheVNob3J0ID0gZGF5LnRvTG9jYWxlRGF0ZVN0cmluZyhDYWxlbmRhclV0aWxzLkxvY2FsZSwgb3B0aW9ucyk7XHJcbiAgICAgIG9wdGlvbnMgPSB7IHdlZWtkYXk6IFwibG9uZ1wiIH07XHJcbiAgICAgIGRheVBlcldlZWsud2Vla2RheUxvbmcgPSBkYXkudG9Mb2NhbGVEYXRlU3RyaW5nKENhbGVuZGFyVXRpbHMuTG9jYWxlLCBvcHRpb25zKTtcclxuXHJcbiAgICAgIG9wdGlvbnMgPSB7IG1vbnRoOiBcInNob3J0XCIgfTtcclxuICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5TW9udGhTaG9ydCA9IGRheS50b0xvY2FsZURhdGVTdHJpbmcoQ2FsZW5kYXJVdGlscy5Mb2NhbGUsIG9wdGlvbnMpO1xyXG4gICAgICBvcHRpb25zID0geyBtb250aDogXCJsb25nXCIgfTtcclxuICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5TW9udGhMb25nID0gZGF5LnRvTG9jYWxlRGF0ZVN0cmluZyhDYWxlbmRhclV0aWxzLkxvY2FsZSwgb3B0aW9ucyk7XHJcbiAgICAgIGRheVBlcldlZWsud2Vla2RheVllYXIgPSBkYXkuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICAgIGRheVBlcldlZWsuZGF0ZSA9IG5ldyBEYXRlKGRheSk7XHJcbiAgICAgIGRheVBlcldlZWsuZGF0ZXNCeVRoZUhvdXIgPSBkYXlIb3VycztcclxuICAgICAgZGF5c09mV2Vlay5wdXNoKGRheVBlcldlZWspO1xyXG4gICAgICBtb250aCA9IGRheS5nZXRNb250aCgpO1xyXG4gICAgICBkYXkgPSBuZXcgRGF0ZShkYXkpO1xyXG4gICAgICBkYXkuc2V0RGF0ZShkYXkuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB3ZWVrOiBXZWVrID0gbmV3IFdlZWsoKTtcclxuICAgIHdlZWsud2Vla0RheXMgPSBkYXlzT2ZXZWVrO1xyXG4gICAgcmV0dXJuIHdlZWs7XHJcbiAgfVxyXG4gIHB1YmxpYyBzdGF0aWMgR2V0RGF5c0Fyb3VuZChkYXRlOiBEYXRlKTogV2VlayB7XHJcbiAgICBjb25zdCBkYXlzQXJvdW5kOiBXZWVrZGF5W10gPSBbXTtcclxuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gZGF0ZSA/IG5ldyBEYXRlKGRhdGUpIDogbmV3IERhdGUoKTtcclxuICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG5cclxuICAgIC8vIEdldCB0aGUgY3VycmVudCBkYXkgYW5kIGdvIHR3byBkYXlzIGJhY2tcclxuICAgIGxldCBkYXkgPSBuZXcgRGF0ZShjdXJyZW50RGF0ZSk7XHJcbiAgICBkYXkuc2V0RGF0ZShkYXkuZ2V0RGF0ZSgpIC0gMik7XHJcblxyXG4gICAgLy8gTG9vcCB0byBnZXQgdGhlIHR3byBkYXlzIGJlZm9yZSBhbmQgZm91ciBkYXlzIGFmdGVyIHRoZSBjdXJyZW50IGRheVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHtcclxuICAgICAgY29uc3QgZGF5UGVyV2VlazogV2Vla2RheSA9IG5ldyBXZWVrZGF5KCk7XHJcbiAgICAgIGNvbnN0IGRheUhvdXJzOiBEYXRlW10gPSBDYWxlbmRhclV0aWxzLkdldERheUhvdXJzKGRheSk7XHJcblxyXG4gICAgICBkYXlQZXJXZWVrLm5ld01vbnRoID0gZGF5LmdldE1vbnRoKCkgIT09IGN1cnJlbnREYXRlLmdldE1vbnRoKCk7XHJcbiAgICAgIGRheVBlcldlZWsud2Vla2RheVNlbGVjdGVkID0gZGF5LmdldERhdGUoKSA9PT0gY3VycmVudERhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgICBkYXlQZXJXZWVrLndlZWtkYXlEYXkgPSBkYXkuZ2V0RGF0ZSgpO1xyXG5cclxuICAgICAgbGV0IG9wdGlvbnM6IGFueSA9IHsgd2Vla2RheTogXCJzaG9ydFwiIH07XHJcbiAgICAgIGRheVBlcldlZWsud2Vla2RheVNob3J0ID0gZGF5LnRvTG9jYWxlRGF0ZVN0cmluZyhDYWxlbmRhclV0aWxzLkxvY2FsZSwgb3B0aW9ucyk7XHJcbiAgICAgIG9wdGlvbnMgPSB7IHdlZWtkYXk6IFwibG9uZ1wiIH07XHJcbiAgICAgIGRheVBlcldlZWsud2Vla2RheUxvbmcgPSBkYXkudG9Mb2NhbGVEYXRlU3RyaW5nKENhbGVuZGFyVXRpbHMuTG9jYWxlLCBvcHRpb25zKTtcclxuXHJcbiAgICAgIG9wdGlvbnMgPSB7IG1vbnRoOiBcInNob3J0XCIgfTtcclxuICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5TW9udGhTaG9ydCA9IGRheS50b0xvY2FsZURhdGVTdHJpbmcoQ2FsZW5kYXJVdGlscy5Mb2NhbGUsIG9wdGlvbnMpO1xyXG4gICAgICBvcHRpb25zID0geyBtb250aDogXCJsb25nXCIgfTtcclxuICAgICAgZGF5UGVyV2Vlay53ZWVrZGF5TW9udGhMb25nID0gZGF5LnRvTG9jYWxlRGF0ZVN0cmluZyhDYWxlbmRhclV0aWxzLkxvY2FsZSwgb3B0aW9ucyk7XHJcbiAgICAgIGRheVBlcldlZWsud2Vla2RheVllYXIgPSBkYXkuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICAgIGRheVBlcldlZWsuZGF0ZSA9IG5ldyBEYXRlKGRheSk7XHJcbiAgICAgIGRheVBlcldlZWsuZGF0ZXNCeVRoZUhvdXIgPSBkYXlIb3VycztcclxuICAgICAgZGF5c0Fyb3VuZC5wdXNoKGRheVBlcldlZWspO1xyXG5cclxuICAgICAgLy8gTW92ZSB0byB0aGUgbmV4dCBkYXlcclxuICAgICAgZGF5LnNldERhdGUoZGF5LmdldERhdGUoKSArIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHdlZWs6IFdlZWsgPSBuZXcgV2VlaygpO1xyXG4gICAgd2Vlay53ZWVrRGF5cyA9IGRheXNBcm91bmQ7XHJcbiAgICByZXR1cm4gd2VlaztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldE1vbmRheShkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICBjb25zdCBkID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBjb25zdCBkYXkgPSBkLmdldERheSgpOyAvLyAwIChTdW4pIC0gNiAoU2F0KVxyXG4gICAgY29uc3QgZGlmZiA9IChkYXkgPT09IDAgPyAtNiA6IDEpIC0gZGF5O1xyXG4gICAgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgZGlmZik7XHJcbiAgICBkLnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG4gICAgcmV0dXJuIGQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=