@colijnit/corecomponents_v12 255.1.12 → 255.1.14

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 (28) hide show
  1. package/bundles/colijnit-corecomponents_v12.umd.js +357 -4
  2. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
  3. package/colijnit-corecomponents_v12.metadata.json +1 -1
  4. package/esm2015/lib/components/calendar/calendar-template.component.js +6 -4
  5. package/esm2015/lib/components/hour-scheduling/components/hour-scheduling-test-object/hour-scheduling-test-object.component.js +2 -2
  6. package/esm2015/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component.js +55 -0
  7. package/esm2015/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.component.js +323 -0
  8. package/esm2015/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.module.js +25 -0
  9. package/esm2015/public-api.js +5 -1
  10. package/fesm2015/colijnit-corecomponents_v12.js +403 -5
  11. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
  12. package/lib/components/hour-scheduling/components/hour-scheduling-test-object/style/_layout.scss +2 -0
  13. package/lib/components/hour-scheduling/components/hour-scheduling-test-object/style/_theme.scss +2 -2
  14. package/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component.d.ts +10 -0
  15. package/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/style/_layout.scss +4 -0
  16. package/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/style/_material-definition.scss +0 -0
  17. package/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/style/_theme.scss +4 -0
  18. package/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/style/material.scss +4 -0
  19. package/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.component.d.ts +78 -0
  20. package/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.module.d.ts +2 -0
  21. package/lib/components/hour-scheduling-expandable/style/_layout.scss +114 -0
  22. package/lib/components/hour-scheduling-expandable/style/_material-definition.scss +0 -0
  23. package/lib/components/hour-scheduling-expandable/style/_theme.scss +4 -0
  24. package/lib/components/hour-scheduling-expandable/style/material.scss +4 -0
  25. package/lib/components/input-checkbox/style/_material-definition.scss +2 -2
  26. package/package.json +1 -1
  27. package/public-api.d.ts +4 -0
  28. package/colijnit-corecomponents_v12-255.1.11.tgz +0 -0
@@ -0,0 +1,323 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation, } from '@angular/core';
2
+ export class HourSchedulingExpandableComponent {
3
+ constructor(cdRef, eRef) {
4
+ this.cdRef = cdRef;
5
+ this.eRef = eRef;
6
+ this.hourLabels = [];
7
+ this.scheduledObjects = [];
8
+ this.resizing = false;
9
+ this.currentResizingObject = null;
10
+ this.currentDraggingObject = null;
11
+ this.MIN_HEIGHT = 30;
12
+ this._schedule = {};
13
+ this.timeChangeEvent = new EventEmitter();
14
+ this.newObjectPlanEvent = new EventEmitter();
15
+ this.moveBetweenCalendarsEvent = new EventEmitter();
16
+ this.showClass = true;
17
+ }
18
+ set schedule(value) {
19
+ if (value && value !== this._schedule) {
20
+ this.renderObjects();
21
+ }
22
+ this._schedule = value;
23
+ }
24
+ get schedule() {
25
+ return this._schedule;
26
+ }
27
+ onResize(event) {
28
+ event.target.innerWidth;
29
+ }
30
+ clickOut(event) {
31
+ if (!this.eRef.nativeElement.contains(event.target)) {
32
+ this.handleDeselectAll();
33
+ }
34
+ }
35
+ ngOnInit() {
36
+ this.generateTimeBlocks();
37
+ if (this.schedule) {
38
+ this.renderObjects();
39
+ }
40
+ this._calculateSchedulingObjectProperties();
41
+ }
42
+ // Calculate properties for each scheduled object to determine resizer visibility
43
+ _calculateSchedulingObjectProperties() {
44
+ const scheduleStart = this.convertDateToEuropean(this.schedule[this.childProp][this.startTimeProp]);
45
+ const scheduleEnd = this.convertDateToEuropean(this.schedule[this.childProp][this.endTimeProp]);
46
+ this.scheduledObjects.forEach(obj => {
47
+ obj.showTopResizer = this.timeDifference(scheduleStart, obj.start) > 0; // Show top resizer if the start time differs
48
+ obj.showBottomResizer = this.timeDifference(scheduleEnd, obj.end) > 0; // Show bottom resizer if the end time differs
49
+ });
50
+ }
51
+ // Find the next object in the scheduledObjects list
52
+ _findNextObject(currentObject) {
53
+ const currentIndex = this.scheduledObjects.indexOf(currentObject);
54
+ if (currentIndex >= 0 && currentIndex < this.scheduledObjects.length - 1) {
55
+ return this.scheduledObjects[currentIndex + 1]; // The next object in the list
56
+ }
57
+ return null; // No next object (it's the last one)
58
+ }
59
+ // Find the previous object in the scheduledObjects list
60
+ _findPreviousObject(currentObject) {
61
+ const currentIndex = this.scheduledObjects.indexOf(currentObject);
62
+ if (currentIndex > 0) {
63
+ return this.scheduledObjects[currentIndex - 1]; // The previous object in the list
64
+ }
65
+ return null; // No previous object (it's the first one)
66
+ }
67
+ renderObjects() {
68
+ if (this.schedule) {
69
+ if (this.scheduledObjects.length > 1) {
70
+ this.scheduledObjects = [];
71
+ }
72
+ let objects = this.schedule[this.objectsProp];
73
+ let schedulingObjects = [];
74
+ if (objects && objects.length > 0) {
75
+ objects.forEach(object => {
76
+ let topDifference = this.timeDifference(this.schedule[this.childProp][this.startTimeProp], object[this.startTimeProp]);
77
+ schedulingObjects.push({
78
+ title: object['title'],
79
+ subTitle: object['subTitle'],
80
+ start: this.convertDateToEuropean(object[this.startTimeProp]),
81
+ end: this.convertDateToEuropean(object[this.endTimeProp]),
82
+ id: object[this.idProp],
83
+ height: this.timeDifference(object[this.startTimeProp], object[this.endTimeProp]),
84
+ top: topDifference,
85
+ selected: false
86
+ });
87
+ });
88
+ }
89
+ this.scheduledObjects = schedulingObjects;
90
+ this.cdRef.markForCheck();
91
+ this.cdRef.detectChanges();
92
+ }
93
+ }
94
+ onSelectBlock(obj) {
95
+ obj.selected = !obj.selected;
96
+ if (obj.selected) {
97
+ this.scheduledObjects.forEach((scheduledObject) => {
98
+ if (scheduledObject.selected && scheduledObject !== obj) {
99
+ scheduledObject.selected = false;
100
+ }
101
+ });
102
+ }
103
+ this.currentResizingObject = obj;
104
+ }
105
+ onDragStartCustom(obj) {
106
+ this.currentDraggingObject = obj;
107
+ }
108
+ handleDrop(dragEvent, hour) {
109
+ if (this.currentDraggingObject) {
110
+ //The order was scheduled and needs to be moved
111
+ let start = this.currentDraggingObject.start;
112
+ let hourSplit = hour.split(":");
113
+ start.setHours(parseInt(hourSplit[0]));
114
+ start.setMinutes(parseInt(hourSplit[1]));
115
+ let scheduledObject = this.scheduledObjects.find(scheduledObject => scheduledObject.id === this.currentDraggingObject.id);
116
+ scheduledObject.start = start;
117
+ let originalObject = this.schedule[this.objectsProp].find((object) => object[this.idProp] === this.currentDraggingObject.id);
118
+ originalObject[this.startTimeProp] = start;
119
+ let end = this.addMinutes(originalObject[this.startTimeProp], this.currentDraggingObject.height);
120
+ originalObject[this.endTimeProp] = end;
121
+ scheduledObject.end = end;
122
+ scheduledObject.top = this.timeDifference(this.schedule[this.childProp][this.startTimeProp], scheduledObject.start);
123
+ scheduledObject.height = this.timeDifference(scheduledObject.start, scheduledObject.end);
124
+ this.timeChangeEvent.emit(originalObject);
125
+ this.currentDraggingObject = undefined;
126
+ }
127
+ else {
128
+ let parsed = this.tryParseJSONObject(dragEvent.dataTransfer.getData("text"));
129
+ if (!parsed) {
130
+ this.newObjectPlanEvent.emit({ currentHour: hour, data: parsed.toString() });
131
+ return;
132
+ }
133
+ this.moveBetweenCalendarsEvent.emit({ hour: hour, data: parsed });
134
+ }
135
+ }
136
+ allowDrop(event, hour) {
137
+ event.preventDefault();
138
+ event.stopPropagation();
139
+ if (this.currentDraggingObject) {
140
+ let newStartDate = this.convertDateToEuropean(this.currentDraggingObject.start);
141
+ let hourSplit = hour.split(":");
142
+ newStartDate.setHours(parseInt(hourSplit[0]));
143
+ newStartDate.setHours(parseInt(hourSplit[1]));
144
+ if (this.scheduledObjects.find((scheduledObject) => scheduledObject.start === newStartDate)) {
145
+ return false;
146
+ }
147
+ else {
148
+ return true;
149
+ }
150
+ }
151
+ }
152
+ // Triggered when resizing starts
153
+ onResizeStart(event, obj, direction) {
154
+ this.resizing = true;
155
+ this.resizeDirection = direction;
156
+ this.currentResizingObject = obj;
157
+ this.initialY = event.clientY;
158
+ this.initialHeight = obj.height || 0;
159
+ this.initialTop = obj.top || 0;
160
+ // Listen to mousemove and mouseup events globally
161
+ document.addEventListener('mousemove', this.onResizing.bind(this));
162
+ document.addEventListener('mouseup', this.onResizeEnd.bind(this));
163
+ }
164
+ // Handle resizing with snapping to 30px increments and minimum height restriction
165
+ onResizing(event) {
166
+ if (!this.resizing || !this.currentResizingObject)
167
+ return;
168
+ const deltaY = event.clientY - this.initialY;
169
+ const snappedDeltaY = Math.round(deltaY / 30) * 30;
170
+ if (this.resizeDirection === 'bottom') {
171
+ const nextObject = this._findNextObject(this.currentResizingObject);
172
+ const maxHeight = nextObject ? nextObject.top - this.currentResizingObject.top : Infinity;
173
+ // Block expanding beyond the next object and shrinking below 30px
174
+ const newHeight = Math.max(this.initialHeight + snappedDeltaY, this.MIN_HEIGHT);
175
+ this.currentResizingObject.height = Math.min(newHeight, maxHeight);
176
+ }
177
+ else if (this.resizeDirection === 'top') {
178
+ const previousObject = this._findPreviousObject(this.currentResizingObject);
179
+ const minTop = previousObject ? previousObject.top + previousObject.height : 0;
180
+ const newHeight = Math.max(this.initialHeight - snappedDeltaY, this.MIN_HEIGHT);
181
+ const newTop = this.initialTop + (this.initialHeight - newHeight);
182
+ // Block moving above the previous object's bottom and shrinking below MIN_HEIGHT
183
+ if (newHeight >= this.MIN_HEIGHT && newTop >= minTop) {
184
+ this.currentResizingObject.top = newTop;
185
+ this.currentResizingObject.height = newHeight;
186
+ }
187
+ }
188
+ // Ensure change detection happens
189
+ this.cdRef.detectChanges();
190
+ }
191
+ // Triggered when resizing ends
192
+ onResizeEnd(event) {
193
+ let object = this.currentResizingObject;
194
+ if (object && object.selected) {
195
+ let originalObject = this.schedule[this.objectsProp].find((scheduledObject) => scheduledObject[this.idProp] === object.id);
196
+ if (originalObject) {
197
+ // Start date calculation first
198
+ originalObject[this.startTimeProp] = this.addMinutes(this.convertDateToEuropean(this.schedule[this.childProp][this.startTimeProp]), object.top);
199
+ // Then end date calculation based on the height of the object
200
+ originalObject[this.endTimeProp] = this.addMinutes(this.convertDateToEuropean(originalObject[this.startTimeProp]), object.height);
201
+ }
202
+ this.timeChangeEvent.emit(originalObject);
203
+ this.resizing = false;
204
+ this.currentResizingObject.selected = false;
205
+ this.currentResizingObject = null;
206
+ }
207
+ // Remove global event listeners
208
+ document.removeEventListener('mousemove', this.onResizing.bind(this));
209
+ document.removeEventListener('mouseup', this.onResizeEnd.bind(this));
210
+ }
211
+ timeDifference(date1, date2) {
212
+ let difference = this.convertDateToEuropean(date1).getTime() / 1000 - this.convertDateToEuropean(date2).getTime() / 1000;
213
+ return Math.abs(difference / 60);
214
+ }
215
+ generateTimeBlocks() {
216
+ let startUnix = !this.childProp ? this.dateToUnixEpoch(this.convertDateToEuropean(this.schedule[this.startTimeProp])) : this.dateToUnixEpoch(this.convertDateToEuropean(this.schedule[this.childProp][this.startTimeProp]));
217
+ let endUnix = !this.childProp ? this.dateToUnixEpoch(this.convertDateToEuropean(this.schedule[this.endTimeProp])) : this.dateToUnixEpoch(this.convertDateToEuropean(this.schedule[this.childProp][this.endTimeProp]));
218
+ let interval = 60 * 60;
219
+ for (let hourCount = startUnix; hourCount <= endUnix; hourCount += interval) {
220
+ let hour = new Date(hourCount * 1000);
221
+ let hourString = `${hour.getHours()}:${hour.getMinutes() === 0 ? '00' : hour.getMinutes()}`;
222
+ this.hourLabels.push(hourString);
223
+ }
224
+ }
225
+ dateToUnixEpoch(date) {
226
+ return Math.floor(date.getTime()) / 1000;
227
+ }
228
+ addMinutes(date, minutes) {
229
+ return new Date(date.getTime() + minutes * 60000);
230
+ }
231
+ tryParseJSONObject(jsonString) {
232
+ try {
233
+ let o = JSON.parse(jsonString);
234
+ if (o && typeof o === "object") {
235
+ return o;
236
+ }
237
+ }
238
+ catch (e) {
239
+ }
240
+ return false;
241
+ }
242
+ addHalfHour(hour) {
243
+ let split = hour.split(":");
244
+ split[1] = "30";
245
+ return split.join(':');
246
+ }
247
+ convertTZ(date, tzString) {
248
+ return new Date((typeof date === "string" ? new Date(date) : date).toLocaleString("en-US", { timeZone: tzString }));
249
+ }
250
+ convertDateToEuropean(date) {
251
+ return this.convertTZ(date, 'Europe/Amsterdam');
252
+ }
253
+ handleDeselectAll() {
254
+ this.scheduledObjects.forEach((scheduledObject) => {
255
+ if (scheduledObject.selected) {
256
+ scheduledObject.selected = false;
257
+ }
258
+ });
259
+ }
260
+ }
261
+ HourSchedulingExpandableComponent.decorators = [
262
+ { type: Component, args: [{
263
+ selector: 'co-hour-scheduling-expandable',
264
+ template: `
265
+ <div class="wrapper">
266
+ <div class="time-block" *ngFor="let hour of hourLabels">
267
+ <div class="hour-label"><span [textContent]="hour"></span></div>
268
+
269
+ <div class="object-display">
270
+ <div class="first-half-hour object-half" (dragover)="allowDrop($event, hour)"
271
+ (drop)="handleDrop($event, hour)">
272
+ </div>
273
+
274
+ <div class="second-half-hour object-half" (dragover)="allowDrop($event, addHalfHour(hour))"
275
+ (drop)="handleDrop($event, addHalfHour(hour))">
276
+ </div>
277
+ </div>
278
+ </div>
279
+
280
+ <div class="scheduled-objects" >
281
+ <ng-container>
282
+ <ng-template
283
+ [ngTemplateOutlet]="customTemplate"
284
+ [ngTemplateOutletContext]="{
285
+ objects: scheduledObjects,
286
+ onSelectBlock: this.onSelectBlock.bind(this),
287
+ onResizeStart: this.onResizeStart.bind(this),
288
+ onDragStartCustom: this.onDragStartCustom.bind(this)
289
+
290
+ }"
291
+ >
292
+ <ng-content></ng-content>
293
+ </ng-template>
294
+ </ng-container>
295
+ </div>
296
+
297
+ </div>
298
+
299
+ `,
300
+ changeDetection: ChangeDetectionStrategy.OnPush,
301
+ encapsulation: ViewEncapsulation.None
302
+ },] }
303
+ ];
304
+ HourSchedulingExpandableComponent.ctorParameters = () => [
305
+ { type: ChangeDetectorRef },
306
+ { type: ElementRef }
307
+ ];
308
+ HourSchedulingExpandableComponent.propDecorators = {
309
+ schedule: [{ type: Input }],
310
+ startTimeProp: [{ type: Input }],
311
+ endTimeProp: [{ type: Input }],
312
+ objectsProp: [{ type: Input }],
313
+ childProp: [{ type: Input }],
314
+ customTemplate: [{ type: Input }],
315
+ idProp: [{ type: Input }],
316
+ timeChangeEvent: [{ type: Output }],
317
+ newObjectPlanEvent: [{ type: Output }],
318
+ moveBetweenCalendarsEvent: [{ type: Output }],
319
+ showClass: [{ type: HostBinding, args: ['class.co-hour-scheduling-expandable',] }],
320
+ onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }],
321
+ clickOut: [{ type: HostListener, args: ['document:click', ['$event'],] }]
322
+ };
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQUUsVUFBVSxFQUNyQixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQTREdkIsTUFBTSxPQUFPLGlDQUFpQztJQTZENUMsWUFDVSxLQUF3QixFQUN4QixJQUFnQjtRQURoQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBN0RuQixlQUFVLEdBQWEsRUFBRSxDQUFDO1FBQzFCLHFCQUFnQixHQUF1QixFQUFFLENBQUM7UUFHekMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUsxQiwwQkFBcUIsR0FBNEIsSUFBSSxDQUFDO1FBQ3RELDBCQUFxQixHQUE0QixJQUFJLENBQUM7UUFDdEQsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBdUJkLG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbkUsdUJBQWtCLEdBQXdELElBQUksWUFBWSxFQUd2RyxDQUFDO1FBRVksOEJBQXlCLEdBQXdELElBQUksWUFBWSxFQUF5QyxDQUFDO1FBR3JKLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFtQmpDLENBQUM7SUFoREQsSUFBb0IsUUFBUSxDQUFFLEtBQWE7UUFDekMsSUFBRyxLQUFLLElBQUksS0FBSyxLQUFLLElBQUks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TCxNQUFNO2lDQUNOLE1BQU07d0NBS04sTUFBTTt3QkFFTixXQUFXLFNBQUMscUNBQXFDO3VCQUdqRCxZQUFZLFNBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO3VCQUt4QyxZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbnRlcmZhY2UgU2NoZWR1bGluZ09iamVjdCB7XHJcbiAgc3RhcnQ6IERhdGU7XHJcbiAgZW5kOiBEYXRlO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHN1YlRpdGxlPzogc3RyaW5nO1xyXG4gIGhlaWdodD86IG51bWJlcjtcclxuICB0b3A/OiBudW1iZXI7XHJcbiAgaWQ6IG51bWJlciB8IHN0cmluZztcclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuICBzaG93VG9wUmVzaXplcj86IGJvb2xlYW47XHJcbiAgc2hvd0JvdHRvbVJlc2l6ZXI/OiBib29sZWFuO1xyXG5cclxuXHJcbiAgW2tleTogc3RyaW5nXTogYW55OyAvLyBBbGxvd3MgZHluYW1pYyBwcm9wZXJ0aWVzIGluY2x1ZGluZyB1bmlxdWUgaWRlbnRpZmllcnNcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWJsb2NrXCIgKm5nRm9yPVwibGV0IGhvdXIgb2YgaG91ckxhYmVsc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJob3VyLWxhYmVsXCI+PHNwYW4gW3RleHRDb250ZW50XT1cImhvdXJcIj48L3NwYW4+PC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtZGlzcGxheVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpcnN0LWhhbGYtaG91ciBvYmplY3QtaGFsZlwiIChkcmFnb3Zlcik9XCJhbGxvd0Ryb3AoJGV2ZW50LCBob3VyKVwiXHJcbiAgICAgICAgICAgICAgIChkcm9wKT1cImhhbmRsZURyb3AoJGV2ZW50LCBob3VyKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY29uZC1oYWxmLWhvdXIgb2JqZWN0LWhhbGZcIiAoZHJhZ292ZXIpPVwiYWxsb3dEcm9wKCRldmVudCwgYWRkSGFsZkhvdXIoaG91cikpXCJcclxuICAgICAgICAgICAgICAgKGRyb3ApPVwiaGFuZGxlRHJvcCgkZXZlbnQsIGFkZEhhbGZIb3VyKGhvdXIpKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInNjaGVkdWxlZC1vYmplY3RzXCIgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAgIG9iamVjdHM6IHNjaGVkdWxlZE9iamVjdHMsXHJcbiAgICAgICAgICAgICAgb25TZWxlY3RCbG9jazogdGhpcy5vblNlbGVjdEJsb2NrLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgb25SZXNpemVTdGFydDogdGhpcy5vblJlc2l6ZVN0YXJ0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgb25EcmFnU3RhcnRDdXN0b206IHRoaXMub25EcmFnU3RhcnRDdXN0b20uYmluZCh0aGlzKVxyXG5cclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICBgLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwdWJsaWMgaG91ckxhYmVsczogc3RyaW5nW10gPSBbXTtcclxuICBwdWJsaWMgc2NoZWR1bGVkT2JqZWN0czogU2NoZWR1bGluZ09iamVjdFtdID0gW107XHJcblxyXG5cclxuICBwcml2YXRlIHJlc2l6aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSByZXNpemVEaXJlY3Rpb246ICd0b3AnIHwgJ2JvdHRvbSc7XHJcbiAgcHJpdmF0ZSBpbml0aWFsWTogbnVtYmVyO1xyXG4gIHByaXZhdGUgaW5pdGlhbEhlaWdodDogbnVtYmVyO1xyXG4gIHByaXZhdGUgaW5pdGlhbFRvcDogbnVtYmVyO1xyXG4gIHByaXZhdGUgY3VycmVudFJlc2l6aW5nT2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBjdXJyZW50RHJhZ2dpbmdPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIE1JTl9IRUlHSFQgPSAzMDtcclxuICBwcml2YXRlIF9zY2hlZHVsZTogT2JqZWN0ID0ge307XHJcblxyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHNjaGVkdWxlKCB2YWx1ZTogT2JqZWN0KSB7XHJcbiAgICBpZih2YWx1ZSAmJiB2YWx1ZSAhPT0gdGhpcy5fc2NoZWR1bGUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJPYmplY3RzKCk7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5fc2NoZWR1bGUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2NoZWR1bGUoKTogT2JqZWN0IHtcclxuICAgIHJldHVybiB0aGlzLl9zY2hlZHVsZTtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc3RhcnRUaW1lUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlbmRUaW1lUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvYmplY3RzUHJvcDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGlsZFByb3A6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgcHVibGljIGlkUHJvcDogc3RyaW5nOyAgLy8gSW5wdXQgZm9yIHVuaXF1ZSBpZGVudGlmaWVyIHByb3BlcnR5XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgdGltZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbmV3T2JqZWN0UGxhbkV2ZW50OiBFdmVudEVtaXR0ZXI8eyBjdXJyZW50SG91cjogc3RyaW5nLCBkYXRhOiBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIGN1cnJlbnRIb3VyOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBzdHJpbmdcclxuICB9PigpO1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIG1vdmVCZXR3ZWVuQ2FsZW5kYXJzRXZlbnQ6IEV2ZW50RW1pdHRlcjx7aG91cjogc3RyaW5nLCBkYXRhOlNjaGVkdWxpbmdPYmplY3R9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e2hvdXI6IHN0cmluZywgZGF0YTpTY2hlZHVsaW5nT2JqZWN0fT4oKTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZScpXHJcbiAgcHVibGljIHNob3dDbGFzczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBvblJlc2l6ZShldmVudDogeyB0YXJnZXQ6IHsgaW5uZXJXaWR0aDogYW55OyB9OyB9KSB7XHJcbiAgICBldmVudC50YXJnZXQuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgY2xpY2tPdXQoZXZlbnQ6IHsgdGFyZ2V0OiBhbnk7IH0pIHtcclxuICAgIGlmKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRGVzZWxlY3RBbGwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2VuZXJhdGVUaW1lQmxvY2tzKCk7XHJcbiAgICBpZih0aGlzLnNjaGVkdWxlKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyT2JqZWN0cygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLl9jYWxjdWxhdGVTY2hlZHVsaW5nT2JqZWN0UHJvcGVydGllcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2FsY3VsYXRlIHByb3BlcnRpZXMgZm9yIGVhY2ggc2NoZWR1bGVkIG9iamVjdCB0byBkZXRlcm1pbmUgcmVzaXplciB2aXNpYmlsaXR5XHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlU2NoZWR1bGluZ09iamVjdFByb3BlcnRpZXMoKSB7XHJcbiAgICBjb25zdCBzY2hlZHVsZVN0YXJ0ID0gdGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4odGhpcy5zY2hlZHVsZVt0aGlzLmNoaWxkUHJvcF1bdGhpcy5zdGFydFRpbWVQcm9wXSk7XHJcbiAgICBjb25zdCBzY2hlZHVsZUVuZCA9IHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuZW5kVGltZVByb3BdKTtcclxuXHJcbiAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHMuZm9yRWFjaChvYmogPT4ge1xyXG4gICAgICBvYmouc2hvd1RvcFJlc2l6ZXIgPSB0aGlzLnRpbWVEaWZmZXJlbmNlKHNjaGVkdWxlU3RhcnQsIG9iai5zdGFydCkgPiAwOyAvLyBTaG93IHRvcCByZXNpemVyIGlmIHRoZSBzdGFydCB0aW1lIGRpZmZlcnNcclxuICAgICAgb2JqLnNob3dCb3R0b21SZXNpemVyID0gdGhpcy50aW1lRGlmZmVyZW5jZShzY2hlZHVsZUVuZCwgb2JqLmVuZCkgPiAwOyAvLyBTaG93IGJvdHRvbSByZXNpemVyIGlmIHRoZSBlbmQgdGltZSBkaWZmZXJzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIEZpbmQgdGhlIG5leHQgb2JqZWN0IGluIHRoZSBzY2hlZHVsZWRPYmplY3RzIGxpc3RcclxuICBwcml2YXRlIF9maW5kTmV4dE9iamVjdChjdXJyZW50T2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0KTogU2NoZWR1bGluZ09iamVjdCB8IG51bGwge1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5zY2hlZHVsZWRPYmplY3RzLmluZGV4T2YoY3VycmVudE9iamVjdCk7XHJcbiAgICBpZiAoY3VycmVudEluZGV4ID49IDAgJiYgY3VycmVudEluZGV4IDwgdGhpcy5zY2hlZHVsZWRPYmplY3RzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVkT2JqZWN0c1tjdXJyZW50SW5kZXggKyAxXTsgLy8gVGhlIG5leHQgb2JqZWN0IGluIHRoZSBsaXN0XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDsgLy8gTm8gbmV4dCBvYmplY3QgKGl0J3MgdGhlIGxhc3Qgb25lKVxyXG4gIH1cclxuXHJcbiAgLy8gRmluZCB0aGUgcHJldmlvdXMgb2JqZWN0IGluIHRoZSBzY2hlZHVsZWRPYmplY3RzIGxpc3RcclxuICBwcml2YXRlIF9maW5kUHJldmlvdXNPYmplY3QoY3VycmVudE9iamVjdDogU2NoZWR1bGluZ09iamVjdCk6IFNjaGVkdWxpbmdPYmplY3QgfCBudWxsIHtcclxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5pbmRleE9mKGN1cnJlbnRPYmplY3QpO1xyXG4gICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVkT2JqZWN0c1tjdXJyZW50SW5kZXggLSAxXTsgLy8gVGhlIHByZXZpb3VzIG9iamVjdCBpbiB0aGUgbGlzdFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7IC8vIE5vIHByZXZpb3VzIG9iamVjdCAoaXQncyB0aGUgZmlyc3Qgb25lKVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyByZW5kZXJPYmplY3RzKCkge1xyXG4gICAgaWYodGhpcy5zY2hlZHVsZSkge1xyXG4gICAgICBpZiAodGhpcy5zY2hlZHVsZWRPYmplY3RzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgb2JqZWN0czogT2JqZWN0W10gPSB0aGlzLnNjaGVkdWxlW3RoaXMub2JqZWN0c1Byb3BdO1xyXG5cclxuICAgICAgbGV0IHNjaGVkdWxpbmdPYmplY3RzOiBTY2hlZHVsaW5nT2JqZWN0W10gPSBbXTtcclxuXHJcblxyXG4gICAgICBpZiAob2JqZWN0cyAmJiBvYmplY3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBvYmplY3RzLmZvckVhY2gob2JqZWN0ID0+IHtcclxuICAgICAgICAgIGxldCB0b3BEaWZmZXJlbmNlOiBudW1iZXIgPSB0aGlzLnRpbWVEaWZmZXJlbmNlKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0sIG9iamVjdFt0aGlzLnN0YXJ0VGltZVByb3BdKTtcclxuICAgICAgICAgIHNjaGVkdWxpbmdPYmplY3RzLnB1c2goXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogb2JqZWN0Wyd0aXRsZSddLFxyXG4gICAgICAgICAgICAgIHN1YlRpdGxlOiBvYmplY3RbJ3N1YlRpdGxlJ10sXHJcblxyXG4gICAgICAgICAgICAgIHN0YXJ0OiB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbihvYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSksXHJcbiAgICAgICAgICAgICAgZW5kOiB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbihvYmplY3RbdGhpcy5lbmRUaW1lUHJvcF0pLFxyXG4gICAgICAgICAgICAgIGlkOiBvYmplY3RbdGhpcy5pZFByb3BdLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogdGhpcy50aW1lRGlmZmVyZW5jZShvYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSwgb2JqZWN0W3RoaXMuZW5kVGltZVByb3BdKSxcclxuICAgICAgICAgICAgICB0b3A6IHRvcERpZmZlcmVuY2UsXHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNjaGVkdWxlZE9iamVjdHMgPSBzY2hlZHVsaW5nT2JqZWN0cztcclxuXHJcbiAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2VsZWN0QmxvY2sob2JqOiBTY2hlZHVsaW5nT2JqZWN0KSB7XHJcbiAgICBvYmouc2VsZWN0ZWQgPSAhb2JqLnNlbGVjdGVkO1xyXG4gICAgaWYob2JqLnNlbGVjdGVkKSB7XHJcbiAgICAgIHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5mb3JFYWNoKChzY2hlZHVsZWRPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QpID0+IHtcclxuICAgICAgICBpZiAoc2NoZWR1bGVkT2JqZWN0LnNlbGVjdGVkICYmIHNjaGVkdWxlZE9iamVjdCAhPT0gb2JqKSB7XHJcbiAgICAgICAgICBzY2hlZHVsZWRPYmplY3Quc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QgPSBvYmo7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EcmFnU3RhcnRDdXN0b20ob2JqOiBTY2hlZHVsaW5nT2JqZWN0KSB7XHJcbiAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdCA9IG9iajtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgaGFuZGxlRHJvcChkcmFnRXZlbnQ6IERyYWdFdmVudCwgaG91cjogc3RyaW5nKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0KSB7XHJcbiAgICAgIC8vVGhlIG9yZGVyIHdhcyBzY2hlZHVsZWQgYW5kIG5lZWRzIHRvIGJlIG1vdmVkXHJcblxyXG4gICAgICBsZXQgc3RhcnQ6IERhdGUgPSB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdC5zdGFydDtcclxuICAgICAgbGV0IGhvdXJTcGxpdCA9IGhvdXIuc3BsaXQoXCI6XCIpXHJcbiAgICAgIHN0YXJ0LnNldEhvdXJzKHBhcnNlSW50KGhvdXJTcGxpdFswXSkpO1xyXG4gICAgICBzdGFydC5zZXRNaW51dGVzKHBhcnNlSW50KGhvdXJTcGxpdFsxXSkpO1xyXG4gICAgICBsZXQgc2NoZWR1bGVkT2JqZWN0ID0gdGhpcy5zY2hlZHVsZWRPYmplY3RzLmZpbmQoIHNjaGVkdWxlZE9iamVjdCA9PiBzY2hlZHVsZWRPYmplY3QuaWQgPT09IHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0LmlkKTtcclxuICAgICAgc2NoZWR1bGVkT2JqZWN0LnN0YXJ0ID0gc3RhcnQ7XHJcblxyXG4gICAgICBsZXQgb3JpZ2luYWxPYmplY3Q6IE9iamVjdCA9IHRoaXMuc2NoZWR1bGVbdGhpcy5vYmplY3RzUHJvcF0uZmluZCggKG9iamVjdDogT2JqZWN0KSA9PiBvYmplY3RbdGhpcy5pZFByb3BdID09PSB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdC5pZCk7XHJcbiAgICAgIG9yaWdpbmFsT2JqZWN0W3RoaXMuc3RhcnRUaW1lUHJvcF0gPSBzdGFydDtcclxuICAgICAgbGV0IGVuZDogRGF0ZSA9IHRoaXMuYWRkTWludXRlcyhvcmlnaW5hbE9iamVjdFt0aGlzLnN0YXJ0VGltZVByb3BdLCB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdC5oZWlnaHQpO1xyXG4gICAgICBvcmlnaW5hbE9iamVjdFt0aGlzLmVuZFRpbWVQcm9wXSA9IGVuZDtcclxuICAgICAgc2NoZWR1bGVkT2JqZWN0LmVuZCA9IGVuZDtcclxuICAgICAgc2NoZWR1bGVkT2JqZWN0LnRvcCA9IHRoaXMudGltZURpZmZlcmVuY2UodGhpcy5zY2hlZHVsZVt0aGlzLmNoaWxkUHJvcF1bdGhpcy5zdGFydFRpbWVQcm9wXSwgc2NoZWR1bGVkT2JqZWN0LnN0YXJ0KTtcclxuICAgICAgc2NoZWR1bGVkT2JqZWN0LmhlaWdodCA9IHRoaXMudGltZURpZmZlcmVuY2Uoc2NoZWR1bGVkT2JqZWN0LnN0YXJ0LCBzY2hlZHVsZWRPYmplY3QuZW5kKTtcclxuXHJcbiAgICAgIHRoaXMudGltZUNoYW5nZUV2ZW50LmVtaXQob3JpZ2luYWxPYmplY3QpO1xyXG4gICAgICB0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdCA9IHVuZGVmaW5lZDtcclxuXHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGxldCBwYXJzZWQ6IFNjaGVkdWxpbmdPYmplY3QgPSB0aGlzLnRyeVBhcnNlSlNPTk9iamVjdChkcmFnRXZlbnQuZGF0YVRyYW5zZmVyIS5nZXREYXRhKFwidGV4dFwiKSk7XHJcblxyXG4gICAgICBpZiAoIXBhcnNlZCkge1xyXG4gICAgICAgIHRoaXMubmV3T2JqZWN0UGxhbkV2ZW50LmVtaXQoe2N1cnJlbnRIb3VyOiBob3VyLCBkYXRhOiBwYXJzZWQudG9TdHJpbmcoKX0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5tb3ZlQmV0d2VlbkNhbGVuZGFyc0V2ZW50LmVtaXQoe2hvdXI6IGhvdXIsIGRhdGE6IHBhcnNlZH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgYWxsb3dEcm9wKGV2ZW50OiBEcmFnRXZlbnQsIGhvdXI6IHN0cmluZykge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmKHRoaXMuY3VycmVudERyYWdnaW5nT2JqZWN0KSB7XHJcbiAgICAgIGxldCBuZXdTdGFydERhdGU6IERhdGUgPSB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLmN1cnJlbnREcmFnZ2luZ09iamVjdC5zdGFydCk7XHJcbiAgICAgIGxldCBob3VyU3BsaXQ6IHN0cmluZ1tdID0gaG91ci5zcGxpdChcIjpcIik7XHJcbiAgICAgIG5ld1N0YXJ0RGF0ZS5zZXRIb3VycyhwYXJzZUludChob3VyU3BsaXRbMF0pKTtcclxuICAgICAgbmV3U3RhcnREYXRlLnNldEhvdXJzKHBhcnNlSW50KGhvdXJTcGxpdFsxXSkpO1xyXG5cclxuICAgICAgaWYodGhpcy5zY2hlZHVsZWRPYmplY3RzLmZpbmQoIChzY2hlZHVsZWRPYmplY3Q6IFNjaGVkdWxpbmdPYmplY3QpID0+IHNjaGVkdWxlZE9iamVjdC5zdGFydCA9PT0gbmV3U3RhcnREYXRlICkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIC8vIFRyaWdnZXJlZCB3aGVuIHJlc2l6aW5nIHN0YXJ0c1xyXG5cclxuICBwdWJsaWMgb25SZXNpemVTdGFydChldmVudDogTW91c2VFdmVudCwgb2JqOiBTY2hlZHVsaW5nT2JqZWN0LCBkaXJlY3Rpb246ICd0b3AnIHwgJ2JvdHRvbScpIHtcclxuICAgIHRoaXMucmVzaXppbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5yZXNpemVEaXJlY3Rpb24gPSBkaXJlY3Rpb247XHJcbiAgICB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdCA9IG9iajtcclxuICAgIHRoaXMuaW5pdGlhbFkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgdGhpcy5pbml0aWFsSGVpZ2h0ID0gb2JqLmhlaWdodCB8fCAwO1xyXG4gICAgdGhpcy5pbml0aWFsVG9wID0gb2JqLnRvcCB8fCAwO1xyXG5cclxuICAgIC8vIExpc3RlbiB0byBtb3VzZW1vdmUgYW5kIG1vdXNldXAgZXZlbnRzIGdsb2JhbGx5XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXppbmcuYmluZCh0aGlzKSk7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZUVuZC5iaW5kKHRoaXMpKTtcclxuICB9XHJcbiAgLy8gSGFuZGxlIHJlc2l6aW5nIHdpdGggc25hcHBpbmcgdG8gMzBweCBpbmNyZW1lbnRzIGFuZCBtaW5pbXVtIGhlaWdodCByZXN0cmljdGlvblxyXG5cclxuICBwdWJsaWMgb25SZXNpemluZyhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLnJlc2l6aW5nIHx8ICF0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGRlbHRhWSA9IGV2ZW50LmNsaWVudFkgLSB0aGlzLmluaXRpYWxZO1xyXG4gICAgY29uc3Qgc25hcHBlZERlbHRhWSA9IE1hdGgucm91bmQoZGVsdGFZIC8gMzApICogMzA7XHJcblxyXG4gICAgaWYgKHRoaXMucmVzaXplRGlyZWN0aW9uID09PSAnYm90dG9tJykge1xyXG4gICAgICBjb25zdCBuZXh0T2JqZWN0ID0gdGhpcy5fZmluZE5leHRPYmplY3QodGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QpO1xyXG4gICAgICBjb25zdCBtYXhIZWlnaHQgPSBuZXh0T2JqZWN0ID8gbmV4dE9iamVjdC50b3AgLSB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdC50b3AgOiBJbmZpbml0eTtcclxuXHJcbiAgICAgIC8vIEJsb2NrIGV4cGFuZGluZyBiZXlvbmQgdGhlIG5leHQgb2JqZWN0IGFuZCBzaHJpbmtpbmcgYmVsb3cgMzBweFxyXG4gICAgICBjb25zdCBuZXdIZWlnaHQgPSBNYXRoLm1heCh0aGlzLmluaXRpYWxIZWlnaHQgKyBzbmFwcGVkRGVsdGFZLCB0aGlzLk1JTl9IRUlHSFQpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRSZXNpemluZ09iamVjdC5oZWlnaHQgPSBNYXRoLm1pbihuZXdIZWlnaHQsIG1heEhlaWdodCk7XHJcblxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJlc2l6ZURpcmVjdGlvbiA9PT0gJ3RvcCcpIHtcclxuICAgICAgY29uc3QgcHJldmlvdXNPYmplY3QgPSB0aGlzLl9maW5kUHJldmlvdXNPYmplY3QodGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QpO1xyXG4gICAgICBjb25zdCBtaW5Ub3AgPSBwcmV2aW91c09iamVjdCA/IHByZXZpb3VzT2JqZWN0LnRvcCArIHByZXZpb3VzT2JqZWN0LmhlaWdodCA6IDA7XHJcblxyXG4gICAgICBjb25zdCBuZXdIZWlnaHQgPSBNYXRoLm1heCh0aGlzLmluaXRpYWxIZWlnaHQgLSBzbmFwcGVkRGVsdGFZLCB0aGlzLk1JTl9IRUlHSFQpO1xyXG4gICAgICBjb25zdCBuZXdUb3AgPSB0aGlzLmluaXRpYWxUb3AgKyAodGhpcy5pbml0aWFsSGVpZ2h0IC0gbmV3SGVpZ2h0KTtcclxuXHJcbiAgICAgIC8vIEJsb2NrIG1vdmluZyBhYm92ZSB0aGUgcHJldmlvdXMgb2JqZWN0J3MgYm90dG9tIGFuZCBzaHJpbmtpbmcgYmVsb3cgTUlOX0hFSUdIVFxyXG4gICAgICBpZiAobmV3SGVpZ2h0ID49IHRoaXMuTUlOX0hFSUdIVCAmJiBuZXdUb3AgPj0gbWluVG9wKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QudG9wID0gbmV3VG9wO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0LmhlaWdodCA9IG5ld0hlaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEVuc3VyZSBjaGFuZ2UgZGV0ZWN0aW9uIGhhcHBlbnNcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyBUcmlnZ2VyZWQgd2hlbiByZXNpemluZyBlbmRzXHJcblxyXG4gIHB1YmxpYyBvblJlc2l6ZUVuZChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgbGV0IG9iamVjdDogU2NoZWR1bGluZ09iamVjdCA9IHRoaXMuY3VycmVudFJlc2l6aW5nT2JqZWN0O1xyXG5cclxuICAgIGlmKG9iamVjdCAmJiBvYmplY3Quc2VsZWN0ZWQpIHtcclxuICAgICAgbGV0IG9yaWdpbmFsT2JqZWN0ID0gdGhpcy5zY2hlZHVsZVt0aGlzLm9iamVjdHNQcm9wXS5maW5kKChzY2hlZHVsZWRPYmplY3Q6IE9iamVjdCkgPT4gc2NoZWR1bGVkT2JqZWN0W3RoaXMuaWRQcm9wXSA9PT0gb2JqZWN0LmlkKTtcclxuXHJcbiAgICAgIGlmIChvcmlnaW5hbE9iamVjdCkge1xyXG4gICAgICAgIC8vIFN0YXJ0IGRhdGUgY2FsY3VsYXRpb24gZmlyc3RcclxuICAgICAgICBvcmlnaW5hbE9iamVjdFt0aGlzLnN0YXJ0VGltZVByb3BdID0gdGhpcy5hZGRNaW51dGVzKHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0pLCBvYmplY3QudG9wKTtcclxuXHJcbiAgICAgICAgLy8gVGhlbiAgZW5kIGRhdGUgY2FsY3VsYXRpb24gYmFzZWQgb24gdGhlIGhlaWdodCBvZiB0aGUgb2JqZWN0XHJcbiAgICAgICAgb3JpZ2luYWxPYmplY3RbdGhpcy5lbmRUaW1lUHJvcF0gPSB0aGlzLmFkZE1pbnV0ZXModGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4ob3JpZ2luYWxPYmplY3RbdGhpcy5zdGFydFRpbWVQcm9wXSksIG9iamVjdC5oZWlnaHQpO1xyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRpbWVDaGFuZ2VFdmVudC5lbWl0KG9yaWdpbmFsT2JqZWN0KTtcclxuXHJcbiAgICAgIHRoaXMucmVzaXppbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3Quc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jdXJyZW50UmVzaXppbmdPYmplY3QgPSBudWxsO1xyXG5cclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIFJlbW92ZSBnbG9iYWwgZXZlbnQgbGlzdGVuZXJzXHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXppbmcuYmluZCh0aGlzKSk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZUVuZC5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0aW1lRGlmZmVyZW5jZShkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpIHtcclxuICAgIGxldCBkaWZmZXJlbmNlID0gdGhpcy5jb252ZXJ0RGF0ZVRvRXVyb3BlYW4oZGF0ZTEpLmdldFRpbWUoKSAvIDEwMDAgLSB0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbihkYXRlMikuZ2V0VGltZSgpIC8gMTAwMDtcclxuICAgIHJldHVybiBNYXRoLmFicyhkaWZmZXJlbmNlIC8gNjApO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBnZW5lcmF0ZVRpbWVCbG9ja3MoKSB7XHJcbiAgICBsZXQgc3RhcnRVbml4OiBudW1iZXIgPSAhdGhpcy5jaGlsZFByb3AgPyB0aGlzLmRhdGVUb1VuaXhFcG9jaCh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLnNjaGVkdWxlW3RoaXMuc3RhcnRUaW1lUHJvcF0pKSA6IHRoaXMuZGF0ZVRvVW5peEVwb2NoKHRoaXMuY29udmVydERhdGVUb0V1cm9wZWFuKHRoaXMuc2NoZWR1bGVbdGhpcy5jaGlsZFByb3BdW3RoaXMuc3RhcnRUaW1lUHJvcF0pKTtcclxuICAgIGxldCBlbmRVbml4OiBudW1iZXIgPSAhdGhpcy5jaGlsZFByb3AgPyB0aGlzLmRhdGVUb1VuaXhFcG9jaCh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLnNjaGVkdWxlW3RoaXMuZW5kVGltZVByb3BdKSkgOiB0aGlzLmRhdGVUb1VuaXhFcG9jaCh0aGlzLmNvbnZlcnREYXRlVG9FdXJvcGVhbih0aGlzLnNjaGVkdWxlW3RoaXMuY2hpbGRQcm9wXVt0aGlzLmVuZFRpbWVQcm9wXSkpO1xyXG5cclxuICAgIGxldCBpbnRlcnZhbCA9IDYwICogNjA7XHJcblxyXG4gICAgZm9yIChsZXQgaG91ckNvdW50ID0gc3RhcnRVbml4OyBob3VyQ291bnQgPD0gZW5kVW5peDsgaG91ckNvdW50ICs9IGludGVydmFsKSB7XHJcbiAgICAgIGxldCBob3VyID0gbmV3IERhdGUoaG91ckNvdW50ICogMTAwMClcclxuICAgICAgbGV0IGhvdXJTdHJpbmcgPSBgJHtob3VyLmdldEhvdXJzKCl9OiR7aG91ci5nZXRNaW51dGVzKCkgPT09IDAgPyAnMDAnIDogaG91ci5nZXRNaW51dGVzKCl9YDtcclxuICAgICAgdGhpcy5ob3VyTGFiZWxzLnB1c2goaG91clN0cmluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGF0ZVRvVW5peEVwb2NoKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoZGF0ZS5nZXRUaW1lKCkpIC8gMTAwMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRNaW51dGVzKGRhdGU6IERhdGUsIG1pbnV0ZXM6IG51bWJlcik6IERhdGUge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgbWludXRlcyAqIDYwMDAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cnlQYXJzZUpTT05PYmplY3QoanNvblN0cmluZzogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgbyA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XHJcbiAgICAgIGlmIChvICYmIHR5cGVvZiBvID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgcmV0dXJuIG87XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkSGFsZkhvdXIoaG91cjogc3RyaW5nKSB7XHJcbiAgICBsZXQgc3BsaXQgPSBob3VyLnNwbGl0KFwiOlwiKTtcclxuICAgIHNwbGl0WzFdID0gXCIzMFwiO1xyXG4gICAgcmV0dXJuIHNwbGl0LmpvaW4oJzonKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0VFooZGF0ZSwgdHpTdHJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSgodHlwZW9mIGRhdGUgPT09IFwic3RyaW5nXCIgPyBuZXcgRGF0ZShkYXRlKSA6IGRhdGUpLnRvTG9jYWxlU3RyaW5nKFwiZW4tVVNcIiwge3RpbWVab25lOiB0elN0cmluZ30pKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0RGF0ZVRvRXVyb3BlYW4oZGF0ZTogRGF0ZSk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRaKGRhdGUsICdFdXJvcGUvQW1zdGVyZGFtJylcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEZXNlbGVjdEFsbCgpIHtcclxuICAgIHRoaXMuc2NoZWR1bGVkT2JqZWN0cy5mb3JFYWNoKCAoc2NoZWR1bGVkT2JqZWN0OiBTY2hlZHVsaW5nT2JqZWN0KSA9PiB7XHJcbiAgICAgIGlmKHNjaGVkdWxlZE9iamVjdC5zZWxlY3RlZCkge1xyXG4gICAgICAgIHNjaGVkdWxlZE9iamVjdC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,25 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule, DatePipe } from "@angular/common";
3
+ import { HourSchedulingExpandableComponent } from "./hour-scheduling-expandable.component";
4
+ import { HourSchedulingComponentModule } from "../hour-scheduling/hour-scheduling.module";
5
+ import { HourSchedulingExpandableTemplateComponent } from "./components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component";
6
+ export class HourSchedulingExpandableComponentModule {
7
+ }
8
+ HourSchedulingExpandableComponentModule.decorators = [
9
+ { type: NgModule, args: [{
10
+ imports: [
11
+ CommonModule,
12
+ HourSchedulingComponentModule,
13
+ ],
14
+ declarations: [
15
+ HourSchedulingExpandableComponent,
16
+ HourSchedulingExpandableTemplateComponent
17
+ ],
18
+ exports: [
19
+ HourSchedulingExpandableComponent,
20
+ HourSchedulingExpandableTemplateComponent
21
+ ],
22
+ providers: [DatePipe]
23
+ },] }
24
+ ];
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUUsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDekYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDeEYsT0FBTyxFQUNMLHlDQUF5QyxFQUMxQyxNQUFNLGdHQUFnRyxDQUFDO0FBb0J4RyxNQUFNLE9BQU8sdUNBQXVDOzs7WUFoQm5ELFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWiw2QkFBNkI7aUJBQzlCO2dCQUNDLFlBQVksRUFBRTtvQkFDVixpQ0FBaUM7b0JBQ25DLHlDQUF5QztpQkFDMUM7Z0JBQ0gsT0FBTyxFQUFFO29CQUNQLGlDQUFpQztvQkFDakMseUNBQXlDO2lCQUMxQztnQkFDRCxTQUFTLEVBQUUsQ0FBRSxRQUFRLENBQUM7YUFFdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZSwgRGF0ZVBpcGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVDb21wb25lbnR9IGZyb20gXCIuL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0hvdXJTY2hlZHVsaW5nQ29tcG9uZW50TW9kdWxlfSBmcm9tIFwiLi4vaG91ci1zY2hlZHVsaW5nL2hvdXItc2NoZWR1bGluZy5tb2R1bGVcIjtcclxuaW1wb3J0IHtcclxuICBIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVUZW1wbGF0ZUNvbXBvbmVudFxyXG59IGZyb20gXCIuL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUtdGVtcGxhdGUuY29tcG9uZW50XCI7XHJcblxyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSG91clNjaGVkdWxpbmdDb21wb25lbnRNb2R1bGUsXHJcbiAgXSxcclxuICAgIGRlY2xhcmF0aW9uczogW1xyXG4gICAgICAgIEhvdXJTY2hlZHVsaW5nRXhwYW5kYWJsZUNvbXBvbmVudCxcclxuICAgICAgSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlVGVtcGxhdGVDb21wb25lbnRcclxuICAgIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlQ29tcG9uZW50LFxyXG4gICAgSG91clNjaGVkdWxpbmdFeHBhbmRhYmxlVGVtcGxhdGVDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogWyBEYXRlUGlwZV1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb3VyU2NoZWR1bGluZ0V4cGFuZGFibGVDb21wb25lbnRNb2R1bGV7XHJcbn1cclxuIl19
@@ -130,5 +130,9 @@ export * from './lib/service/base-module.service';
130
130
  export * from './lib/translation/core-components-translation.module';
131
131
  export * from './lib/translation/core-components-translation.service';
132
132
  export * from './lib/components/hour-scheduling/hour-scheduling.component';
133
+ export * from './lib/components/hour-scheduling-expandable/hour-scheduling-expandable.component';
134
+ export * from './lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component';
133
135
  export * from './lib/components/hour-scheduling/hour-scheduling.module';
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsd0NB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QUM7QUFFM0QsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLDJEQUEyRCxDQUFDO0FBRTFFLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDRDQUE0QyxDQUFDO0FBRTNELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLHVEQUF1RCxDQUFDO0FBRXRFLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyx5REFBeUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY29yZWNvbXBvbmVudHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hcnRpY2xlLXRpbGUvYXJ0aWNsZS10aWxlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FydGljbGUtdGlsZS9hcnRpY2xlLXRpbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYXJkL2NhcmQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwtM2QvY2Fyb3VzZWwtM2QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwtM2QvY2Fyb3VzZWwtM2QubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY28tZGlhbG9nL2NvLWRpYWxvZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jby1kaWFsb2cvY28tZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvLWRpYWxvZy13aXphcmQvY28tZGlhbG9nLXdpemFyZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jby1kaWFsb2ctd2l6YXJkL2NvLWRpYWxvZy13aXphcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29sbGFwc2libGUvY29sbGFwc2libGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29sbGFwc2libGUvY29sbGFwc2libGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlL2Zvcm0tbWFzdGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9ncmlkLXRvb2xiYXIvZ3JpZC10b29sYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ3JpZC10b29sYmFyLWJ1dHRvbi9ncmlkLXRvb2xiYXItYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2dyaWQtdG9vbGJhci1idXR0b24vZ3JpZC10b29sYmFyLWJ1dHRvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pY29uL2ljb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaWNvbi9pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb24tY29sbGFwc2UtaGFuZGxlL2ljb24tY29sbGFwc2UtaGFuZGxlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb24tY29sbGFwc2UtaGFuZGxlL2ljb24tY29sbGFwc2UtaGFuZGxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2VudW0vY28tZGlyZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZW51bS9jby1vcmllbnRhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2VudW0vZmlsdGVySXRlbS1tb2RlLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbWFnZS9pbWFnZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbWFnZS9pbWFnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1jaGVja2JveC9pbnB1dC1jaGVja2JveC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1jaGVja2JveC9pbnB1dC1jaGVja2JveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1kYXRlLXBpY2tlci9pbnB1dC1kYXRlLXBpY2tlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1kYXRlLXBpY2tlci9pbnB1dC1kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kb3VibGUtY2FsZW5kYXIvZG91YmxlLWNhbGVuZGFyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvdWJsZS1jYWxlbmRhci9kb3VibGUtY2FsZW5kYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQtZGF0ZS1yYW5nZS1waWNrZXIvaW5wdXQtZGF0ZS1yYW5nZS1waWNrZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQtZGF0ZS1yYW5nZS1waWNrZXIvaW5wdXQtZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmFzZS1pbnB1dC1kYXRlLXBpY2tlci9iYXNlLWlucHV0LWRhdGUtcGlja2VyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LW51bWJlci1waWNrZXIvaW5wdXQtbnVtYmVyLXBpY2tlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1udW1iZXItcGlja2VyL2lucHV0LW51bWJlci1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQtcmFkaW8tYnV0dG9uL2lucHV0LXJhZGlvLWJ1dHRvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1yYWRpby1idXR0b24vaW5wdXQtcmFkaW8tYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LXNlYXJjaC9pbnB1dC1zZWFyY2guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQtc2VhcmNoL2lucHV0LXNlYXJjaC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC10ZXh0L2lucHV0LXRleHQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQtdGV4dC9pbnB1dC10ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LXRleHRhcmVhL2lucHV0LXRleHRhcmVhLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LXRleHRhcmVhL2lucHV0LXRleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xldmVsLWluZGljYXRvci9sZXZlbC1pbmRpY2F0b3IubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGV2ZWwtaW5kaWNhdG9yL2xldmVsLWluZGljYXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wb3B1cC9wb3B1cC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wb3B1cC90ZXh0LWlucHV0LXBvcHVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BvcHVwL3BvcHVwLXdpbmRvdy1zaGVsbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wb3B1cC9wb3B1cC1tZXNzYWdlLWRpc3BsYXkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcG9wdXAvcG9wdXAtYnV0dG9ucy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wb3B1cC9zZXJ2aWNlL3Byb21wdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcG9wdXAvcG9wdXAtYnV0dG9ucy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaW1wbGUtZ3JpZC9zaW1wbGUtZ3JpZC1jb2x1bW4uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2ltcGxlLWdyaWQvc2ltcGxlLWdyaWQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2ltcGxlLWdyaWQvc2ltcGxlLWdyaWQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGlsZS90aWxlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RpbGUvdGlsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9lbnVtL2NvcmUtY29tcG9uZW50cy1pY29uLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pY29uL2ljb24tY2FjaGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZpZXctbW9kZS1idXR0b25zL3ZpZXctbW9kZS1idXR0b25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZpZXctbW9kZS1idXR0b25zL3ZpZXctbW9kZS1idXR0b25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3ZpZXctbW9kZS1idXR0b25zL2NvbnRlbnQtdmlldy1tb2RlLmVudW0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9saXN0LW9mLXZhbHVlcy9saXN0LW9mLXZhbHVlcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9saXN0LW9mLXZhbHVlcy9saXN0LW9mLXZhbHVlcy1wb3B1cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9saXN0LW9mLXZhbHVlcy9saXN0LW9mLXZhbHVlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9saXN0LW9mLWljb25zL2xpc3Qtb2YtaWNvbnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGlzdC1vZi1pY29ucy9saXN0LW9mLWljb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Jlc3BvbnNpdmUtdGV4dC9yZXNwb25zaXZlLXRleHQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcmVzcG9uc2l2ZS10ZXh0L3Jlc3BvbnNpdmUtdGV4dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9jb2xvci1waWNrZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29yZS1kaWFsb2cvY29yZS1kaWFsb2cubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29yZS1kaWFsb2cvY29yZS1kaWFsb2cuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbHRlci1pdGVtL2ZpbHRlci1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbHRlci1pdGVtL2ZpbHRlci1pdGVtLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi1iYXIvcGFnaW5hdGlvbi1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi1iYXIvcGFnaW5hdGlvbi1iYXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hlY2ttYXJrLW92ZXJsYXkvY2hlY2ttYXJrLW92ZXJsYXkubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsdGVyLWl0ZW0vZmlsdGVyLWl0ZW0tdmlld21vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsdGVyLWl0ZW0vZmlsdGVyLXZpZXdtb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LXNjYW5uZXIvaW5wdXQtc2Nhbm5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1zY2FubmVyL2lucHV0LXNjYW5uZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbG9hZGVyL2xvYWRlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RpbGUtc2VsZWN0L3RpbGUtc2VsZWN0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RpbGUtc2VsZWN0L3RpbGUtc2VsZWN0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3ByaWNlLWRpc3BsYXkucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9wcmljZS1kaXNwbGF5LXBpcGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2ZpbHRlci5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2ZpbHRlci5waXBlLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdmFsaWRhdG9yL2VxdWFsLnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3ZhbGlkYXRvci9wYXNzd29yZC52YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS92YWxpZGF0b3IvZW1haWwudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdmFsaWRhdG9yL3JlcXVpcmVkLnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3ZhbGlkYXRvci9wcmVjaXNpb24tc2NhbGUudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdmFsaWRhdG9yL21heC1zdHJpbmctbGVuZ3RoLnZhbGlkYXRvcic7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb3JlL3NlcnZpY2UvZm9ybS1pbnB1dC11c2VyLWNoYW5nZS1saXN0ZW5lci5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29yZS9zZXJ2aWNlL25nLXpvbmUtd3JhcHBlci5zZXJ2aWNlXCI7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvY2xpY2tvdXRzaWRlL2NsaWNrb3V0c2lkZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9vYnNlcnZlLXZpc2liaWxpdHkvb2JzZXJ2ZS12aXNpYmlsaXR5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL292ZXJsYXkvb3ZlcmxheS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAtZGlyZWN0aXZlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3NjcmVlbi1jb25maWd1cmF0aW9uL3NjcmVlbi1jb25maWd1cmF0aW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3NjcmVlbi1jb25maWd1cmF0aW9uL3NjcmVlbi1jb25maWd1cmF0aW9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3RlbXBsYXRlLXdyYXBwZXIvdGVtcGxhdGUtd3JhcHBlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy90ZW1wbGF0ZS13cmFwcGVyL3RlbXBsYXRlLXdyYXBwZXIubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9zY3JlZW4tY29uZmlnLWFkYXB0ZXItY29tcG9uZW50LWludGVyZmFjZS1uYW1lJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvc2NyZWVuLWNvbmZpZy1hZGFwdGVyLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9kaWFsb2ctcmVzcG9uc2UuaW50ZXJmYWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9jb2xvci1zZXF1ZW5jZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2Uvb3ZlcmxheS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvYmFzZS1tb2R1bGUtc2NyZWVuLWNvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvYmFzZS1tb2R1bGUuc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYW5zbGF0aW9uL2NvcmUtY29tcG9uZW50cy10cmFuc2xhdGlvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsYXRpb24vY29yZS1jb21wb25lbnRzLXRyYW5zbGF0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy9ob3VyLXNjaGVkdWxpbmcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nL2hvdXItc2NoZWR1bGluZy5tb2R1bGUnO1xuIl19
136
+ export * from './lib/components/hour-scheduling-expandable/hour-scheduling-expandable.module';
137
+ export * from './lib/components/hour-scheduling-expandable/hour-scheduling-expandable.module';
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsd0NB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QUM7QUFFM0QsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLDJEQUEyRCxDQUFDO0FBRTFFLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDRDQUE0QyxDQUFDO0FBRTNELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLHVEQUF1RCxDQUFDO0FBRXRFLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyxrRkFBa0YsQ0FBQztBQUNqRyxjQUFjLDBJQUEwSSxDQUFDO0FBQ3pKLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYywrRUFBK0UsQ0FBQztBQUM5RixjQUFjLCtFQUErRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlY29tcG9uZW50c1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FydGljbGUtdGlsZS9hcnRpY2xlLXRpbGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYXJ0aWNsZS10aWxlL2FydGljbGUtdGlsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NhcmQvY2FyZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYXJvdXNlbC0zZC9jYXJvdXNlbC0zZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYXJvdXNlbC0zZC9jYXJvdXNlbC0zZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jby1kaWFsb2cvY28tZGlhbG9nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvLWRpYWxvZy9jby1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY28tZGlhbG9nLXdpemFyZC9jby1kaWFsb2ctd2l6YXJkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvLWRpYWxvZy13aXphcmQvY28tZGlhbG9nLXdpemFyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb2xsYXBzaWJsZS9jb2xsYXBzaWJsZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb2xsYXBzaWJsZS9jb2xsYXBzaWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm0ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2UvZm9ybS1tYXN0ZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2dyaWQtdG9vbGJhci9ncmlkLXRvb2xiYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ3JpZC10b29sYmFyL2dyaWQtdG9vbGJhci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9ncmlkLXRvb2xiYXItYnV0dG9uL2dyaWQtdG9vbGJhci1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZ3JpZC10b29sYmFyLWJ1dHRvbi9ncmlkLXRvb2xiYXItYnV0dG9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb24vaWNvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pY29uL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaWNvbi1jb2xsYXBzZS1oYW5kbGUvaWNvbi1jb2xsYXBzZS1oYW5kbGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaWNvbi1jb2xsYXBzZS1oYW5kbGUvaWNvbi1jb2xsYXBzZS1oYW5kbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZW51bS9jby1kaXJlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9lbnVtL2NvLW9yaWVudGF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZW51bS9maWx0ZXJJdGVtLW1vZGUuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ltYWdlL2ltYWdlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ltYWdlL2ltYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LWNoZWNrYm94L2lucHV0LWNoZWNrYm94Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LWNoZWNrYm94L2lucHV0LWNoZWNrYm94LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LWRhdGUtcGlja2VyL2lucHV0LWRhdGUtcGlja2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LWRhdGUtcGlja2VyL2lucHV0LWRhdGUtcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RvdWJsZS1jYWxlbmRhci9kb3VibGUtY2FsZW5kYXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG91YmxlLWNhbGVuZGFyL2RvdWJsZS1jYWxlbmRhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlLXBpY2tlci9pbnB1dC1kYXRlLXJhbmdlLXBpY2tlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlLXBpY2tlci9pbnB1dC1kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlLWlucHV0LWRhdGUtcGlja2VyL2Jhc2UtaW5wdXQtZGF0ZS1waWNrZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyLXBpY2tlci9pbnB1dC1udW1iZXItcGlja2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LW51bWJlci1waWNrZXIvaW5wdXQtbnVtYmVyLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1yYWRpby1idXR0b24vaW5wdXQtcmFkaW8tYnV0dG9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LXJhZGlvLWJ1dHRvbi9pbnB1dC1yYWRpby1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQtc2VhcmNoL2lucHV0LXNlYXJjaC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC1zZWFyY2gvaW5wdXQtc2VhcmNoLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LXRleHQvaW5wdXQtdGV4dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC10ZXh0L2lucHV0LXRleHQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQtdGV4dGFyZWEvaW5wdXQtdGV4dGFyZWEubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQtdGV4dGFyZWEvaW5wdXQtdGV4dGFyZWEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGV2ZWwtaW5kaWNhdG9yL2xldmVsLWluZGljYXRvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sZXZlbC1pbmRpY2F0b3IvbGV2ZWwtaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BvcHVwL3BvcHVwLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BvcHVwL3RleHQtaW5wdXQtcG9wdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcG9wdXAvcG9wdXAtd2luZG93LXNoZWxsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BvcHVwL3BvcHVwLW1lc3NhZ2UtZGlzcGxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wb3B1cC9wb3B1cC1idXR0b25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BvcHVwL3NlcnZpY2UvcHJvbXB0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wb3B1cC9wb3B1cC1idXR0b25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NpbXBsZS1ncmlkL3NpbXBsZS1ncmlkLWNvbHVtbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaW1wbGUtZ3JpZC9zaW1wbGUtZ3JpZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaW1wbGUtZ3JpZC9zaW1wbGUtZ3JpZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90aWxlL3RpbGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGlsZS90aWxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb24vaWNvbi1jYWNoZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmlldy1tb2RlLWJ1dHRvbnMvdmlldy1tb2RlLWJ1dHRvbnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmlldy1tb2RlLWJ1dHRvbnMvdmlldy1tb2RlLWJ1dHRvbnMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmlldy1tb2RlLWJ1dHRvbnMvY29udGVudC12aWV3LW1vZGUuZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xpc3Qtb2YtdmFsdWVzL2xpc3Qtb2YtdmFsdWVzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xpc3Qtb2YtdmFsdWVzL2xpc3Qtb2YtdmFsdWVzLXBvcHVwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xpc3Qtb2YtdmFsdWVzL2xpc3Qtb2YtdmFsdWVzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xpc3Qtb2YtaWNvbnMvbGlzdC1vZi1pY29ucy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9saXN0LW9mLWljb25zL2xpc3Qtb2YtaWNvbnMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcmVzcG9uc2l2ZS10ZXh0L3Jlc3BvbnNpdmUtdGV4dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9yZXNwb25zaXZlLXRleHQvcmVzcG9uc2l2ZS10ZXh0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9jb2xvci1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb3JlLWRpYWxvZy9jb3JlLWRpYWxvZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb3JlLWRpYWxvZy9jb3JlLWRpYWxvZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsdGVyLWl0ZW0vZmlsdGVyLWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZmlsdGVyLWl0ZW0vZmlsdGVyLWl0ZW0ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uLWJhci9wYWdpbmF0aW9uLWJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uLWJhci9wYWdpbmF0aW9uLWJhci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGVja21hcmstb3ZlcmxheS9jaGVja21hcmstb3ZlcmxheS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWx0ZXItaXRlbS9maWx0ZXItaXRlbS12aWV3bW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9maWx0ZXItaXRlbS9maWx0ZXItdmlld21vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaW5wdXQtc2Nhbm5lci9pbnB1dC1zY2FubmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0LXNjYW5uZXIvaW5wdXQtc2Nhbm5lci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sb2FkZXIvbG9hZGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGlsZS1zZWxlY3QvdGlsZS1zZWxlY3QubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGlsZS1zZWxlY3QvdGlsZS1zZWxlY3QuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcHJpY2UtZGlzcGxheS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL3ByaWNlLWRpc3BsYXktcGlwZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvZmlsdGVyLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvZmlsdGVyLnBpcGUubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS92YWxpZGF0b3IvZXF1YWwudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdmFsaWRhdG9yL3Bhc3N3b3JkLnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3ZhbGlkYXRvci9lbWFpbC52YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS92YWxpZGF0b3IvcmVxdWlyZWQudmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvdmFsaWRhdG9yL3ByZWNpc2lvbi1zY2FsZS52YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS92YWxpZGF0b3IvbWF4LXN0cmluZy1sZW5ndGgudmFsaWRhdG9yJztcblxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb3JlL3NlcnZpY2Uvbmctem9uZS13cmFwcGVyLnNlcnZpY2VcIjtcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jbGlja291dHNpZGUvY2xpY2tvdXRzaWRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL29ic2VydmUtdmlzaWJpbGl0eS9vYnNlcnZlLXZpc2liaWxpdHkubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvb3ZlcmxheS9vdmVybGF5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3Rvb2x0aXAvdG9vbHRpcC1kaXJlY3RpdmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvc2NyZWVuLWNvbmZpZ3VyYXRpb24vc2NyZWVuLWNvbmZpZ3VyYXRpb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvc2NyZWVuLWNvbmZpZ3VyYXRpb24vc2NyZWVuLWNvbmZpZ3VyYXRpb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvdGVtcGxhdGUtd3JhcHBlci90ZW1wbGF0ZS13cmFwcGVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3RlbXBsYXRlLXdyYXBwZXIvdGVtcGxhdGUtd3JhcHBlci5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL3NjcmVlbi1jb25maWctYWRhcHRlci1jb21wb25lbnQtaW50ZXJmYWNlLW5hbWUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy9zY3JlZW4tY29uZmlnLWFkYXB0ZXIuY29tcG9uZW50LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL2RpYWxvZy1yZXNwb25zZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2NvbG9yLXNlcXVlbmNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9vdmVybGF5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9iYXNlLW1vZHVsZS1zY3JlZW4tY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9iYXNlLW1vZHVsZS5zZXJ2aWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsYXRpb24vY29yZS1jb21wb25lbnRzLXRyYW5zbGF0aW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmFuc2xhdGlvbi9jb3JlLWNvbXBvbmVudHMtdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nL2hvdXItc2NoZWR1bGluZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS9ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9ob3VyLXNjaGVkdWxpbmctZXhwYW5kYWJsZS9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLXRlbXBsYXRlL2hvdXItc2NoZWR1bGluZy1leHBhbmRhYmxlLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2hvdXItc2NoZWR1bGluZy9ob3VyLXNjaGVkdWxpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUvaG91ci1zY2hlZHVsaW5nLWV4cGFuZGFibGUubW9kdWxlJztcblxuIl19