@worktile/gantt 12.1.0-next.0 → 12.2.0-next.0
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.
- package/bundles/worktile-gantt.umd.js +819 -936
- package/bundles/worktile-gantt.umd.js.map +1 -1
- package/class/item.d.ts +7 -7
- package/class/link.d.ts +39 -0
- package/components/calendar/{grid/calendar-grid.component.d.ts → calendar.component.d.ts} +10 -8
- package/components/links/links.component.d.ts +5 -15
- package/components/main/gantt-main.component.d.ts +4 -4
- package/components/table/gantt-table.component.d.ts +39 -0
- package/esm2015/class/item.js +14 -3
- package/esm2015/class/link.js +14 -0
- package/esm2015/components/bar/bar-drag.js +6 -1
- package/esm2015/components/calendar/calendar.component.js +86 -0
- package/esm2015/components/links/links.component.js +93 -33
- package/esm2015/components/main/gantt-main.component.js +5 -5
- package/esm2015/components/table/gantt-table.component.js +153 -0
- package/esm2015/gantt-dom.service.js +2 -5
- package/esm2015/gantt-drag-container.js +2 -1
- package/esm2015/gantt-item-upper.js +4 -5
- package/esm2015/gantt-print.service.js +2 -2
- package/esm2015/gantt-upper.js +67 -35
- package/esm2015/gantt.component.js +17 -172
- package/esm2015/gantt.config.js +13 -0
- package/esm2015/gantt.module.js +22 -18
- package/esm2015/public-api.js +2 -1
- package/esm2015/root.component.js +7 -8
- package/esm2015/table/gantt-table.component.js +9 -3
- package/esm2015/utils/helpers.js +10 -9
- package/esm2015/views/day.js +2 -2
- package/esm2015/views/month.js +3 -3
- package/esm2015/views/quarter.js +3 -3
- package/esm2015/views/view.js +4 -2
- package/esm2015/views/week.js +3 -3
- package/esm2015/views/year.js +2 -2
- package/fesm2015/worktile-gantt.js +806 -898
- package/fesm2015/worktile-gantt.js.map +1 -1
- package/gantt-dom.service.d.ts +0 -1
- package/gantt-drag-container.d.ts +1 -0
- package/gantt-upper.d.ts +12 -5
- package/gantt.component.d.ts +5 -26
- package/gantt.config.d.ts +23 -0
- package/gantt.module.d.ts +13 -16
- package/main.bundle.scss +195 -234
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/table/gantt-table.component.d.ts +4 -2
- package/utils/helpers.d.ts +3 -5
- package/views/view.d.ts +2 -0
- package/components/calendar/header/calendar-header.component.d.ts +0 -21
- package/components/table/body/gantt-table-body.component.d.ts +0 -24
- package/components/table/header/gantt-table-header.component.d.ts +0 -29
- package/esm2015/components/calendar/grid/calendar-grid.component.js +0 -76
- package/esm2015/components/calendar/header/calendar-header.component.js +0 -70
- package/esm2015/components/table/body/gantt-table-body.component.js +0 -68
- package/esm2015/components/table/header/gantt-table-header.component.js +0 -126
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Component, HostBinding, Inject } from '@angular/core';
|
|
2
|
+
import { Subject, merge } from 'rxjs';
|
|
3
|
+
import { take, takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { headerHeight, todayHeight, todayWidth, todayBorderRadius } from '../../gantt.styles';
|
|
5
|
+
import { isNumber } from '../../utils/helpers';
|
|
6
|
+
import { GanttDate } from '../../utils/date';
|
|
7
|
+
import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
|
|
8
|
+
import { GanttViewType } from './../../class/view-type';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common";
|
|
11
|
+
import * as i2 from "../../gantt-upper";
|
|
12
|
+
const mainHeight = 5000;
|
|
13
|
+
export class GanttCalendarComponent {
|
|
14
|
+
constructor(ganttUpper, ngZone, elementRef) {
|
|
15
|
+
this.ganttUpper = ganttUpper;
|
|
16
|
+
this.ngZone = ngZone;
|
|
17
|
+
this.elementRef = elementRef;
|
|
18
|
+
this.unsubscribe$ = new Subject();
|
|
19
|
+
this.headerHeight = headerHeight;
|
|
20
|
+
this.mainHeight = mainHeight;
|
|
21
|
+
this.todayHeight = todayHeight;
|
|
22
|
+
this.todayWidth = todayWidth;
|
|
23
|
+
this.todayBorderRadius = todayBorderRadius;
|
|
24
|
+
this.viewTypes = GanttViewType;
|
|
25
|
+
this.className = true;
|
|
26
|
+
}
|
|
27
|
+
get view() {
|
|
28
|
+
return this.ganttUpper.view;
|
|
29
|
+
}
|
|
30
|
+
setTodayPoint() {
|
|
31
|
+
const x = this.view.getTodayXPoint();
|
|
32
|
+
const today = new GanttDate().getDate();
|
|
33
|
+
const todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0];
|
|
34
|
+
const rect = this.elementRef.nativeElement.getElementsByClassName('today-rect')[0];
|
|
35
|
+
const line = this.elementRef.nativeElement.getElementsByClassName('today-line')[0];
|
|
36
|
+
if (isNumber(x)) {
|
|
37
|
+
if (rect) {
|
|
38
|
+
rect.style.left = `${x - todayWidth / 2}px`;
|
|
39
|
+
rect.style.top = `${headerHeight - todayHeight}px`;
|
|
40
|
+
rect.innerHTML = today.toString();
|
|
41
|
+
}
|
|
42
|
+
if (line) {
|
|
43
|
+
line.style.left = `${x}px`;
|
|
44
|
+
line.style.top = `${headerHeight}px`;
|
|
45
|
+
line.style.bottom = `${-mainHeight}px`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
todayEle.style.display = 'none';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
ngOnInit() {
|
|
53
|
+
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
54
|
+
merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)
|
|
55
|
+
.pipe(takeUntil(this.unsubscribe$))
|
|
56
|
+
.subscribe(() => {
|
|
57
|
+
this.setTodayPoint();
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
ngAfterViewInit() { }
|
|
62
|
+
ngOnChanges(changes) { }
|
|
63
|
+
trackBy(index, point) {
|
|
64
|
+
return point.text || index;
|
|
65
|
+
}
|
|
66
|
+
ngOnDestroy() {
|
|
67
|
+
this.unsubscribe$.next();
|
|
68
|
+
this.unsubscribe$.complete();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
GanttCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttCalendarComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
72
|
+
GanttCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: GanttCalendarComponent, selector: "gantt-calendar-overlay", host: { properties: { "class.gantt-calendar-overlay": "this.className" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-overlay-main\" [attr.width]=\"view.width\" [attr.height]=\"headerHeight\">\n <g>\n <text class=\"primary-text\" *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text class=\"secondary-text\" [class.secondary-text-weekend]=\"point.additions?.isWeekend\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n </ng-container>\n\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line [attr.x1]=\"0\" [attr.x2]=\"view.width\" [attr.y1]=\"headerHeight\" [attr.y2]=\"headerHeight\" class=\"header-line\"></line>\n </g>\n </g>\n <g>\n <g *ngIf=\"view.showTimeline\">\n <line\n *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.cellWidth\"\n [attr.x2]=\"(i + 1) * view.cellWidth\"\n [attr.y1]=\"headerHeight\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n </g>\n</svg>\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttCalendarComponent, decorators: [{
|
|
74
|
+
type: Component,
|
|
75
|
+
args: [{
|
|
76
|
+
selector: 'gantt-calendar-overlay',
|
|
77
|
+
templateUrl: './calendar.component.html'
|
|
78
|
+
}]
|
|
79
|
+
}], ctorParameters: function () { return [{ type: i2.GanttUpper, decorators: [{
|
|
80
|
+
type: Inject,
|
|
81
|
+
args: [GANTT_UPPER_TOKEN]
|
|
82
|
+
}] }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { className: [{
|
|
83
|
+
type: HostBinding,
|
|
84
|
+
args: ['class.gantt-calendar-overlay']
|
|
85
|
+
}] } });
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxXQUFXLEVBS1gsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFFeEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBTXhCLE1BQU0sT0FBTyxzQkFBc0I7SUFxQi9CLFlBQ3NDLFVBQXNCLEVBQ2hELE1BQWMsRUFDZCxVQUFtQztRQUZULGVBQVUsR0FBVixVQUFVLENBQVk7UUFDaEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBbkJ2QyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFckMsaUJBQVksR0FBRyxZQUFZ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dUdBdEJwQixzQkFBc0IsK0pDM0JuQyxvL0RBb0RBOzJGRHpCYSxzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsV0FBVyxFQUFFLDJCQUEyQjtpQkFDM0M7OzBCQXVCUSxNQUFNOzJCQUFDLGlCQUFpQjswRkFIZ0IsU0FBUztzQkFBckQsV0FBVzt1QkFBQyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE5nWm9uZSxcbiAgICBJbmplY3QsXG4gICAgRWxlbWVudFJlZixcbiAgICBBZnRlclZpZXdJbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2FudHREYXRlUG9pbnQgfSBmcm9tICcuLi8uLi9jbGFzcy9kYXRlLXBvaW50JztcbmltcG9ydCB7IFN1YmplY3QsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBoZWFkZXJIZWlnaHQsIHRvZGF5SGVpZ2h0LCB0b2RheVdpZHRoLCB0b2RheUJvcmRlclJhZGl1cyB9IGZyb20gJy4uLy4uL2dhbnR0LnN0eWxlcyc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlcnMnO1xuaW1wb3J0IHsgR2FudHREYXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGF0ZSc7XG5pbXBvcnQgeyBHQU5UVF9VUFBFUl9UT0tFTiwgR2FudHRVcHBlciB9IGZyb20gJy4uLy4uL2dhbnR0LXVwcGVyJztcbmltcG9ydCB7IEdhbnR0Vmlld1R5cGUgfSBmcm9tICcuLy4uLy4uL2NsYXNzL3ZpZXctdHlwZSc7XG5cbmNvbnN0IG1haW5IZWlnaHQgPSA1MDAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dhbnR0LWNhbGVuZGFyLW92ZXJsYXknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR2FudHRDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIGdldCB2aWV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nYW50dFVwcGVyLnZpZXc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgaGVhZGVySGVpZ2h0ID0gaGVhZGVySGVpZ2h0O1xuXG4gICAgbWFpbkhlaWdodCA9IG1haW5IZWlnaHQ7XG5cbiAgICB0b2RheUhlaWdodCA9IHRvZGF5SGVpZ2h0O1xuXG4gICAgdG9kYXlXaWR0aCA9IHRvZGF5V2lkdGg7XG5cbiAgICB0b2RheUJvcmRlclJhZGl1cyA9IHRvZGF5Qm9yZGVyUmFkaXVzO1xuXG4gICAgdmlld1R5cGVzID0gR2FudHRWaWV3VHlwZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZ2FudHQtY2FsZW5kYXItb3ZlcmxheScpIGNsYXNzTmFtZSA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICApIHt9XG5cbiAgICBzZXRUb2RheVBvaW50KCkge1xuICAgICAgICBjb25zdCB4ID0gdGhpcy52aWV3LmdldFRvZGF5WFBvaW50KCk7XG4gICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IEdhbnR0RGF0ZSgpLmdldERhdGUoKTtcbiAgICAgICAgY29uc3QgdG9kYXlFbGUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnYW50dC1jYWxlbmRhci10b2RheS1vdmVybGF5JylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0b2RheS1yZWN0JylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0b2RheS1saW5lJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGlzTnVtYmVyKHgpKSB7XG4gICAgICAgICAgICBpZiAocmVjdCkge1xuICAgICAgICAgICAgICAgIHJlY3Quc3R5bGUubGVmdCA9IGAke3ggLSB0b2RheVdpZHRoIC8gMn1weGA7XG4gICAgICAgICAgICAgICAgcmVjdC5zdHlsZS50b3AgPSBgJHtoZWFkZXJIZWlnaHQgLSB0b2RheUhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgcmVjdC5pbm5lckhUTUwgPSB0b2RheS50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICAgICAgICBsaW5lLnN0eWxlLmxlZnQgPSBgJHt4fXB4YDtcbiAgICAgICAgICAgICAgICBsaW5lLnN0eWxlLnRvcCA9IGAke2hlYWRlckhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgbGluZS5zdHlsZS5ib3R0b20gPSBgJHstbWFpbkhlaWdodH1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b2RheUVsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIG1lcmdlKHRoaXMuZ2FudHRVcHBlci52aWV3Q2hhbmdlLCB0aGlzLmdhbnR0VXBwZXIudmlldy5zdGFydCQpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUb2RheVBvaW50KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7fVxuXG4gICAgdHJhY2tCeShpbmRleDogbnVtYmVyLCBwb2ludDogR2FudHREYXRlUG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHBvaW50LnRleHQgfHwgaW5kZXg7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2FudHQtY2FsZW5kYXItdG9kYXktb3ZlcmxheVwiIFtzdHlsZS53aWR0aC5weF09XCJ2aWV3LndpZHRoXCI+XG4gIDxzcGFuIGNsYXNzPVwidG9kYXktcmVjdFwiIFtoaWRkZW5dPVwiZ2FudHRVcHBlci52aWV3VHlwZSAhPT0gdmlld1R5cGVzLmRheVwiPiA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwidG9kYXktbGluZVwiICpuZ0lmPVwiZ2FudHRVcHBlci5zaG93VG9kYXlMaW5lXCI+IDwvc3Bhbj5cbjwvZGl2PlxuXG48c3ZnIGNsYXNzPVwiZ2FudHQtY2FsZW5kYXItb3ZlcmxheS1tYWluXCIgW2F0dHIud2lkdGhdPVwidmlldy53aWR0aFwiIFthdHRyLmhlaWdodF09XCJoZWFkZXJIZWlnaHRcIj5cbiAgPGc+XG4gICAgPHRleHQgY2xhc3M9XCJwcmltYXJ5LXRleHRcIiAqbmdGb3I9XCJsZXQgcG9pbnQgb2Ygdmlldy5wcmltYXJ5RGF0ZVBvaW50czsgdHJhY2tCeTogdHJhY2tCeVwiIFthdHRyLnhdPVwicG9pbnQueFwiIFthdHRyLnldPVwicG9pbnQueVwiPlxuICAgICAge3sgcG9pbnQudGV4dCB9fVxuICAgIDwvdGV4dD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwb2ludCBvZiB2aWV3LnNlY29uZGFyeURhdGVQb2ludHM7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICAgIDx0ZXh0IGNsYXNzPVwic2Vjb25kYXJ5LXRleHRcIiBbY2xhc3Muc2Vjb25kYXJ5LXRleHQtd2Vla2VuZF09XCJwb2ludC5hZGRpdGlvbnM/LmlzV2Vla2VuZFwiIFthdHRyLnhdPVwicG9pbnQueFwiIFthdHRyLnldPVwicG9pbnQueVwiPlxuICAgICAgICB7eyBwb2ludC50ZXh0IH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8Zz5cbiAgICAgIDxsaW5lXG4gICAgICAgICpuZ0Zvcj1cImxldCBwb2ludCBvZiB2aWV3LnByaW1hcnlEYXRlUG9pbnRzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgW2F0dHIueDFdPVwiKGkgKyAxKSAqIHZpZXcucHJpbWFyeVdpZHRoXCJcbiAgICAgICAgW2F0dHIueDJdPVwiKGkgKyAxKSAqIHZpZXcucHJpbWFyeVdpZHRoXCJcbiAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgIFthdHRyLnkyXT1cIm1haW5IZWlnaHRcIlxuICAgICAgICBjbGFzcz1cInByaW1hcnktbGluZVwiXG4gICAgICA+PC9saW5lPlxuICAgIDwvZz5cblxuICAgIDxnPlxuICAgICAgPGxpbmUgW2F0dHIueDFdPVwiMFwiIFthdHRyLngyXT1cInZpZXcud2lkdGhcIiBbYXR0ci55MV09XCJoZWFkZXJIZWlnaHRcIiBbYXR0ci55Ml09XCJoZWFkZXJIZWlnaHRcIiBjbGFzcz1cImhlYWRlci1saW5lXCI+PC9saW5lPlxuICAgIDwvZz5cbiAgPC9nPlxuICA8Zz5cbiAgICA8ZyAqbmdJZj1cInZpZXcuc2hvd1RpbWVsaW5lXCI+XG4gICAgICA8bGluZVxuICAgICAgICAqbmdGb3I9XCJsZXQgcG9pbnQgb2Ygdmlldy5zZWNvbmRhcnlEYXRlUG9pbnRzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgW2F0dHIueDFdPVwiKGkgKyAxKSAqIHZpZXcuY2VsbFdpZHRoXCJcbiAgICAgICAgW2F0dHIueDJdPVwiKGkgKyAxKSAqIHZpZXcuY2VsbFdpZHRoXCJcbiAgICAgICAgW2F0dHIueTFdPVwiaGVhZGVySGVpZ2h0XCJcbiAgICAgICAgW2F0dHIueTJdPVwibWFpbkhlaWdodFwiXG4gICAgICAgIGNsYXNzPVwic2Vjb25kYXJ5LWxpbmVcIlxuICAgICAgPjwvbGluZT5cbiAgICAgIDxsaW5lXG4gICAgICAgICpuZ0Zvcj1cImxldCBwb2ludCBvZiB2aWV3LnByaW1hcnlEYXRlUG9pbnRzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgW2F0dHIueDFdPVwiKGkgKyAxKSAqIHZpZXcucHJpbWFyeVdpZHRoXCJcbiAgICAgICAgW2F0dHIueDJdPVwiKGkgKyAxKSAqIHZpZXcucHJpbWFyeVdpZHRoXCJcbiAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgIFthdHRyLnkyXT1cIm1haW5IZWlnaHRcIlxuICAgICAgICBjbGFzcz1cInByaW1hcnktbGluZVwiXG4gICAgICA+PC9saW5lPlxuICAgIDwvZz5cbiAgPC9nPlxuPC9zdmc+XG4iXX0=
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, HostBinding, Inject } from '@angular/core';
|
|
2
2
|
import { merge, Subject } from 'rxjs';
|
|
3
3
|
import { takeUntil, skip } from 'rxjs/operators';
|
|
4
|
+
import { recursiveItems } from '../../utils/helpers';
|
|
4
5
|
import { GANTT_UPPER_TOKEN } from '../../gantt-upper';
|
|
6
|
+
import { LinkColors, GanttLinkType } from '../../class/link';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
import * as i1 from "../../gantt-drag-container";
|
|
7
9
|
import * as i2 from "@angular/common";
|
|
8
10
|
import * as i3 from "../../gantt-upper";
|
|
9
|
-
var LinkColors;
|
|
10
|
-
(function (LinkColors) {
|
|
11
|
-
LinkColors["default"] = "#cacaca";
|
|
12
|
-
LinkColors["blocked"] = "#FF7575";
|
|
13
|
-
LinkColors["active"] = "#348FE4";
|
|
14
|
-
})(LinkColors || (LinkColors = {}));
|
|
15
11
|
export class GanttLinksComponent {
|
|
16
12
|
constructor(ganttUpper, cdr, elementRef, ganttDragContainer) {
|
|
17
13
|
this.ganttUpper = ganttUpper;
|
|
18
14
|
this.cdr = cdr;
|
|
19
15
|
this.elementRef = elementRef;
|
|
20
16
|
this.ganttDragContainer = ganttDragContainer;
|
|
21
|
-
this.
|
|
17
|
+
this.groups = [];
|
|
18
|
+
this.items = [];
|
|
22
19
|
this.lineClick = new EventEmitter();
|
|
23
20
|
this.links = [];
|
|
24
21
|
this.linkItems = [];
|
|
@@ -28,8 +25,8 @@ export class GanttLinksComponent {
|
|
|
28
25
|
this.ganttLinksOverlay = true;
|
|
29
26
|
}
|
|
30
27
|
ngOnInit() {
|
|
31
|
-
this.firstChange = false;
|
|
32
28
|
this.buildLinks();
|
|
29
|
+
this.firstChange = false;
|
|
33
30
|
this.ganttDragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
|
|
34
31
|
this.elementRef.nativeElement.style.visibility = 'hidden';
|
|
35
32
|
});
|
|
@@ -50,28 +47,88 @@ export class GanttLinksComponent {
|
|
|
50
47
|
const lineHeight = this.ganttUpper.styles.lineHeight;
|
|
51
48
|
const barHeight = this.ganttUpper.styles.barHeight;
|
|
52
49
|
this.linkItems = [];
|
|
53
|
-
this.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
50
|
+
if (this.groups.length > 0) {
|
|
51
|
+
let itemNum = 0;
|
|
52
|
+
let groupNum = 0;
|
|
53
|
+
this.groups.forEach((group) => {
|
|
54
|
+
groupNum++;
|
|
55
|
+
if (group.expanded) {
|
|
56
|
+
const items = recursiveItems(group.items);
|
|
57
|
+
items.forEach((item, itemIndex) => {
|
|
58
|
+
const y = (groupNum + itemNum + itemIndex) * lineHeight + item.refs.y + barHeight / 2;
|
|
59
|
+
this.linkItems.push(Object.assign(Object.assign({}, item), { before: {
|
|
60
|
+
x: item.refs.x,
|
|
61
|
+
y
|
|
62
|
+
}, after: {
|
|
63
|
+
x: item.refs.x + item.refs.width,
|
|
64
|
+
y
|
|
65
|
+
} }));
|
|
66
|
+
});
|
|
67
|
+
itemNum += items.length;
|
|
65
68
|
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const items = recursiveItems(this.items);
|
|
73
|
+
items.forEach((item, itemIndex) => {
|
|
74
|
+
const y = itemIndex * lineHeight + item.refs.y + barHeight / 2;
|
|
75
|
+
this.linkItems.push(Object.assign(Object.assign({}, item), { before: {
|
|
76
|
+
x: item.refs.x,
|
|
77
|
+
y
|
|
78
|
+
}, after: {
|
|
79
|
+
x: item.refs.x + item.refs.width,
|
|
80
|
+
y
|
|
81
|
+
} }));
|
|
82
|
+
});
|
|
83
|
+
}
|
|
68
84
|
}
|
|
69
|
-
generatePath(source, target) {
|
|
85
|
+
generatePath(source, target, type) {
|
|
70
86
|
if (source.before && source.after && target.before && target.after) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
87
|
+
let x1 = source.after.x;
|
|
88
|
+
let y1 = source.after.y;
|
|
89
|
+
let x4 = target.before.x;
|
|
90
|
+
let y4 = target.before.y;
|
|
91
|
+
let isMirror;
|
|
92
|
+
const control = Math.abs(y4 - y1) / 2;
|
|
93
|
+
switch (type) {
|
|
94
|
+
case GanttLinkType.ss:
|
|
95
|
+
x1 = source.before.x;
|
|
96
|
+
y1 = source.before.y;
|
|
97
|
+
x4 = target.before.x;
|
|
98
|
+
y4 = target.before.y;
|
|
99
|
+
isMirror = y4 > y1 ? 0 : 1;
|
|
100
|
+
if (x4 > x1) {
|
|
101
|
+
return `M ${x1} ${y1}
|
|
102
|
+
A ${control} ${control} 0 1 ${isMirror} ${x1} ${y4}
|
|
103
|
+
L ${x1} ${y4} ${x4} ${y4}`;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
return `M ${x1} ${y1}
|
|
107
|
+
L ${x1} ${y1} ${x4} ${y1}
|
|
108
|
+
A ${control} ${control} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
109
|
+
}
|
|
110
|
+
case GanttLinkType.ff:
|
|
111
|
+
x1 = source.after.x;
|
|
112
|
+
y1 = source.after.y;
|
|
113
|
+
x4 = target.after.x;
|
|
114
|
+
y4 = target.after.y;
|
|
115
|
+
isMirror = y4 > y1 ? 1 : 0;
|
|
116
|
+
if (x4 > x1) {
|
|
117
|
+
return `M ${x1} ${y1}
|
|
118
|
+
L ${x1} ${y1} ${x4} ${y1}
|
|
119
|
+
A ${control} ${control} 0 1 ${isMirror} ${x4} ${y4}`;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return `M ${x1} ${y1}
|
|
123
|
+
A ${control} ${control} 0 1 ${isMirror} ${x1} ${y4}
|
|
124
|
+
L ${x1} ${y4} ${x4} ${y4}`;
|
|
125
|
+
}
|
|
126
|
+
case GanttLinkType.sf:
|
|
127
|
+
x1 = target.after.x;
|
|
128
|
+
y1 = target.after.y;
|
|
129
|
+
x4 = source.before.x;
|
|
130
|
+
y4 = source.before.y;
|
|
131
|
+
}
|
|
75
132
|
const dx = Math.abs(x4 - x1) * this.bezierWeight;
|
|
76
133
|
const x2 = x1 - dx;
|
|
77
134
|
const x3 = x4 + dx;
|
|
@@ -129,13 +186,14 @@ export class GanttLinksComponent {
|
|
|
129
186
|
this.links = [];
|
|
130
187
|
this.linkItems.forEach((source) => {
|
|
131
188
|
if (source.origin.start || source.origin.end) {
|
|
132
|
-
source.links.forEach((
|
|
133
|
-
const target = this.linkItems.find((item) => item.id ===
|
|
189
|
+
source.links.forEach((link) => {
|
|
190
|
+
const target = this.linkItems.find((item) => item.id === link.link);
|
|
134
191
|
if (target && (target.origin.start || target.origin.end)) {
|
|
135
192
|
this.links.push({
|
|
136
|
-
path: this.generatePath(source, target),
|
|
193
|
+
path: this.generatePath(source, target, link.type),
|
|
137
194
|
source: source.origin,
|
|
138
195
|
target: target.origin,
|
|
196
|
+
type: link.type,
|
|
139
197
|
color: source.end.getTime() > target.start.getTime() ? LinkColors.blocked : LinkColors.default
|
|
140
198
|
});
|
|
141
199
|
}
|
|
@@ -169,7 +227,7 @@ export class GanttLinksComponent {
|
|
|
169
227
|
}
|
|
170
228
|
}
|
|
171
229
|
GanttLinksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinksComponent, deps: [{ token: GANTT_UPPER_TOKEN }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.GanttDragContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
172
|
-
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: GanttLinksComponent, selector: "gantt-links-overlay", inputs: {
|
|
230
|
+
GanttLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: GanttLinksComponent, selector: "gantt-links-overlay", inputs: { groups: "groups", items: "items" }, outputs: { lineClick: "lineClick" }, host: { properties: { "class.gantt-links-overlay": "this.ganttLinksOverlay" } }, usesOnChanges: true, ngImport: i0, template: "<svg [attr.width]=\"ganttUpper.view.width\" class=\"gantt-links-overlay-main\">\n <ng-container *ngFor=\"let link of links; let i = index; trackBy: trackBy\">\n <path\n [attr.d]=\"link.path\"\n fill=\"transparent\"\n stroke-width=\"2\"\n [attr.stroke]=\"link.color\"\n pointer-events=\"none\"\n [style]=\"'marker-end: url(#triangle' + i + ')'\"\n ></path>\n <g>\n <path\n class=\"link-line\"\n (click)=\"onLineClick($event, link)\"\n (mouseenter)=\"mouseEnterPath(link)\"\n (mouseleave)=\"mouseLeavePath(link)\"\n [attr.d]=\"link.path\"\n stroke=\"transparent\"\n stroke-width=\"9\"\n fill=\"none\"\n cursor=\"pointer\"\n ></path>\n </g>\n <!-- <defs>\n <marker [id]=\"'triangle' + i\" markerUnits=\"strokeWidth\" markerWidth=\"5\" markerHeight=\"4\" refX=\"5\" refY=\"2\" orient=\"auto\">\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n </defs> -->\n </ng-container>\n <line class=\"link-dragging-line\"></line>\n</svg>\n", directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
173
231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttLinksComponent, decorators: [{
|
|
174
232
|
type: Component,
|
|
175
233
|
args: [{
|
|
@@ -179,7 +237,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
179
237
|
}], ctorParameters: function () { return [{ type: i3.GanttUpper, decorators: [{
|
|
180
238
|
type: Inject,
|
|
181
239
|
args: [GANTT_UPPER_TOKEN]
|
|
182
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.GanttDragContainer }]; }, propDecorators: {
|
|
240
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.GanttDragContainer }]; }, propDecorators: { groups: [{
|
|
241
|
+
type: Input
|
|
242
|
+
}], items: [{
|
|
183
243
|
type: Input
|
|
184
244
|
}], lineClick: [{
|
|
185
245
|
type: Output
|
|
@@ -187,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
187
247
|
type: HostBinding,
|
|
188
248
|
args: ['class.gantt-links-overlay']
|
|
189
249
|
}] } });
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUtULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNakQsT0FBTyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBRWxFLElBQUssVUFJSjtBQUpELFdBQUssVUFBVTtJQUNYLGlDQUFtQixDQUFBO0lBQ25CLGlDQUFtQixDQUFBO0lBQ25CLGdDQUFrQixDQUFBO0FBQ3RCLENBQUMsRUFKSSxVQUFVLEtBQVYsVUFBVSxRQUlkO0FBdUJELE1BQU0sT0FBTyxtQkFBbUI7SUFpQjVCLFlBQ3NDLFVBQXNCLEVBQ2hELEdBQXNCLEVBQ3RCLFVBQXNCLEVBQ3RCLGtCQUFzQztRQUhaLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDaEQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBcEJ6QyxhQUFRLEdBQStDLEVBQUUsQ0FBQztRQUV6RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFFdkQsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFFMUIsY0FBUyxHQUFvQixF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bEM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWtCO1FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7O2dIQTNMUSxtQkFBbUIsa0JBa0JoQixpQkFBaUI7b0dBbEJwQixtQkFBbUIsd09DakRoQyw0dEJBbUJBOzJGRDhCYSxtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLHdCQUF3QjtpQkFDeEM7OzBCQW1CUSxNQUFNOzJCQUFDLGlCQUFpQjtzSUFqQnBCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFZbUMsaUJBQWlCO3NCQUExRCxXQUFXO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR2FudHRHcm91cEludGVybmFsIH0gZnJvbSAnLi4vLi4vY2xhc3MvZ3JvdXAnO1xuaW1wb3J0IHsgR2FudHRJdGVtSW50ZXJuYWwsIEdhbnR0SXRlbSB9IGZyb20gJy4vLi4vLi4vY2xhc3MvaXRlbSc7XG5pbXBvcnQgeyBHYW50dExpbmVDbGlja0V2ZW50IH0gZnJvbSAnLi4vLi4vY2xhc3MvZXZlbnQnO1xuaW1wb3J0IHsgR2FudHREcmFnQ29udGFpbmVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtZHJhZy1jb250YWluZXInO1xuaW1wb3J0IHsgR2FudHREYXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGF0ZSc7XG5pbXBvcnQgeyBHQU5UVF9VUFBFUl9UT0tFTiwgR2FudHRVcHBlciB9IGZyb20gJy4uLy4uL2dhbnR0LXVwcGVyJztcblxuZW51bSBMaW5rQ29sb3JzIHtcbiAgICBkZWZhdWx0ID0gJyNjYWNhY2EnLFxuICAgIGJsb2NrZWQgPSAnI0ZGNzU3NScsXG4gICAgYWN0aXZlID0gJyMzNDhGRTQnXG59XG5cbmludGVyZmFjZSBHYW50dExpbmtJdGVtIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGJlZm9yZTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuICAgIGFmdGVyOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XG4gICAgc3RhcnQ6IEdhbnR0RGF0ZTtcbiAgICBlbmQ6IEdhbnR0RGF0ZTtcbiAgICBvcmlnaW46IEdhbnR0SXRlbTtcbiAgICBsaW5rczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBMaW5rSW50ZXJuYWwge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBzb3VyY2U6IEdhbnR0SXRlbTtcbiAgICB0YXJnZXQ6IEdhbnR0SXRlbTtcbiAgICBjb2xvcjogTGlua0NvbG9ycztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC1saW5rcy1vdmVybGF5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGlua3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0TGlua3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBmbGF0RGF0YTogKEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKVtdID0gW107XG5cbiAgICBAT3V0cHV0KCkgbGluZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHYW50dExpbmVDbGlja0V2ZW50PigpO1xuXG4gICAgcHVibGljIGxpbmtzOiBMaW5rSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBsaW5rSXRlbXM6IEdhbnR0TGlua0l0ZW1bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBiZXppZXJXZWlnaHQgPSAtMC41O1xuXG4gICAgcHJpdmF0ZSBmaXJzdENoYW5nZSA9IHRydWU7XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LWxpbmtzLW92ZXJsYXknKSBnYW50dExpbmtzT3ZlcmxheSA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGdhbnR0RHJhZ0NvbnRhaW5lcjogR2FudHREcmFnQ29udGFpbmVyXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZmlyc3RDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgIHRoaXMuZ2FudHREcmFnQ29udGFpbmVyLmRyYWdTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIudmlld0NoYW5nZSxcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci5leHBhbmRDaGFuZ2UsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIudmlldy5zdGFydCQsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIuZHJhZ0VuZGVkLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLmxpbmtEcmFnRW5kZWRcbiAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSwgc2tpcCgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVJdGVtUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGJhckhlaWdodCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMuYmFySGVpZ2h0O1xuICAgICAgICB0aGlzLmxpbmtJdGVtcyA9IFtdO1xuXG4gICAgICAgIHRoaXMuZmxhdERhdGEuZm9yRWFjaCgoaXRlbSwgaXRlbUluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoJ2l0ZW1zJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBnYW50dEl0ZW0gPSBpdGVtIGFzIEdhbnR0SXRlbUludGVybmFsO1xuICAgICAgICAgICAgICAgIGlmIChnYW50dEl0ZW0ucmVmcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gaXRlbUluZGV4ICogbGluZUhlaWdodCArIGdhbnR0SXRlbS5yZWZzLnkgKyBiYXJIZWlnaHQgLyAyO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbmtJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmdhbnR0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGdhbnR0SXRlbS5yZWZzLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZ2FudHRJdGVtLnJlZnMueCArIGdhbnR0SXRlbS5yZWZzLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlUGF0aChzb3VyY2U6IEdhbnR0TGlua0l0ZW0sIHRhcmdldDogR2FudHRMaW5rSXRlbSkge1xuICAgICAgICBpZiAoc291cmNlLmJlZm9yZSAmJiBzb3VyY2UuYWZ0ZXIgJiYgdGFyZ2V0LmJlZm9yZSAmJiB0YXJnZXQuYWZ0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHgxID0gc291cmNlLmFmdGVyLng7XG4gICAgICAgICAgICBjb25zdCB5MSA9IHNvdXJjZS5hZnRlci55O1xuXG4gICAgICAgICAgICBjb25zdCB4NCA9IHRhcmdldC5iZWZvcmUueDtcbiAgICAgICAgICAgIGNvbnN0IHk0ID0gdGFyZ2V0LmJlZm9yZS55O1xuXG4gICAgICAgICAgICBjb25zdCBkeCA9IE1hdGguYWJzKHg0IC0geDEpICogdGhpcy5iZXppZXJXZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCB4MiA9IHgxIC0gZHg7XG4gICAgICAgICAgICBjb25zdCB4MyA9IHg0ICsgZHg7XG5cbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclggPSAoeDEgKyB4NCkgLyAyO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyWSA9ICh5MSArIHk0KSAvIDI7XG5cbiAgICAgICAgICAgIGxldCBjb250cm9sWCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodCAvIDI7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sWSA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodCAvIDI7XG5cbiAgICAgICAgICAgIGlmICh4MSA+PSB4NCkge1xuICAgICAgICAgICAgICAgIGlmICh5NCA+IHkxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyh5NCAtIHkxKSA8PSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3gxICsgY29udHJvbFh9ICR7eTF9ICR7eDEgKyBjb250cm9sWH0gJHt5MSArIGNvbnRyb2xYfSAke3gxfSAke3kxICsgY29udHJvbFl9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDF9ICR7eTEgKyBjb250cm9sWX0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIE0gJHt4NH0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4NCAtIGNvbnRyb2xYfSAke3k0fSAke3g0IC0gY29udHJvbFh9ICR7eTQgLSBjb250cm9sWH0gJHt4NH0gJHt5NCAtIGNvbnRyb2xZfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3g0fSAke3k0IC0gY29udHJvbFl9ICR7Y2VudGVyWH0gJHtjZW50ZXJZfWA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sWCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3gxICsgY29udHJvbFh9ICR7eTF9ICR7eDEgKyBjb250cm9sWH0gJHt5MSArIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICBNICR7eDR9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDQgLSBjb250cm9sWH0gJHt5NH0gJHt4NCAtIGNvbnRyb2xYfSAke3k0IC0gY29udHJvbFh9ICR7Y2VudGVyWH0gJHtjZW50ZXJZfWA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoeTQgLSB5MSkgPD0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgLSBjb250cm9sWH0gJHt4MX0gJHt5MSAtIGNvbnRyb2xZfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3gxfSAke3kxIC0gY29udHJvbFl9ICR7Y2VudGVyWH0gJHtjZW50ZXJZfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBNICR7eDR9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDQgLSBjb250cm9sWH0gJHt5NH0gJHt4NCAtIGNvbnRyb2xYfSAke3k0ICsgY29udHJvbFh9ICR7eDR9ICR7eTQgKyBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4NH0gJHt5NCArIGNvbnRyb2xZfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sWCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3gxICsgY29udHJvbFh9ICR7eTF9ICR7eDEgKyBjb250cm9sWH0gJHt5MSAtIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgTSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDQgLSBjb250cm9sWH0gJHt5NCArIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX0gQyAke3gyfSAke3kxfSAke3gzfSAke3k0fSAke3g0fSAke3k0fWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBidWlsZExpbmtzKCkge1xuICAgICAgICB0aGlzLmNvbXB1dGVJdGVtUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5saW5rcyA9IFtdO1xuICAgICAgICB0aGlzLmxpbmtJdGVtcy5mb3JFYWNoKChzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGlmIChzb3VyY2Uub3JpZ2luLnN0YXJ0IHx8IHNvdXJjZS5vcmlnaW4uZW5kKSB7XG4gICAgICAgICAgICAgICAgc291cmNlLmxpbmtzLmZvckVhY2goKGxpbmtJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmxpbmtJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBsaW5rSWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICYmICh0YXJnZXQub3JpZ2luLnN0YXJ0IHx8IHRhcmdldC5vcmlnaW4uZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saW5rcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLmdlbmVyYXRlUGF0aChzb3VyY2UsIHRhcmdldCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBzb3VyY2Uub3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0Lm9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogc291cmNlLmVuZC5nZXRUaW1lKCkgPiB0YXJnZXQuc3RhcnQuZ2V0VGltZSgpID8gTGlua0NvbG9ycy5ibG9ja2VkIDogTGlua0NvbG9ycy5kZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmFja0J5KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIG9uTGluZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBsaW5rOiBMaW5rSW50ZXJuYWwpIHtcbiAgICAgICAgdGhpcy5saW5lQ2xpY2suZW1pdCh7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHNvdXJjZTogbGluay5zb3VyY2UsXG4gICAgICAgICAgICB0YXJnZXQ6IGxpbmsudGFyZ2V0XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1vdXNlRW50ZXJQYXRoKGxpbms6IExpbmtJbnRlcm5hbCkge1xuICAgICAgICBpZiAobGluay5jb2xvciA9PT0gTGlua0NvbG9ycy5kZWZhdWx0KSB7XG4gICAgICAgICAgICBsaW5rLmNvbG9yID0gTGlua0NvbG9ycy5hY3RpdmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3VzZUxlYXZlUGF0aChsaW5rOiBMaW5rSW50ZXJuYWwpIHtcbiAgICAgICAgaWYgKGxpbmsuY29sb3IgPT09IExpbmtDb2xvcnMuYWN0aXZlKSB7XG4gICAgICAgICAgICBsaW5rLmNvbG9yID0gTGlua0NvbG9ycy5kZWZhdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8c3ZnIFthdHRyLndpZHRoXT1cImdhbnR0VXBwZXIudmlldy53aWR0aFwiIGNsYXNzPVwiZ2FudHQtbGlua3Mtb3ZlcmxheS1tYWluXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxpbmsgb2YgbGlua3M7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICA8cGF0aCBbYXR0ci5kXT1cImxpbmsucGF0aFwiIGZpbGw9XCJ0cmFuc3BhcmVudFwiIHN0cm9rZS13aWR0aD1cIjJcIiBbYXR0ci5zdHJva2VdPVwibGluay5jb2xvclwiIHBvaW50ZXItZXZlbnRzPVwibm9uZVwiPjwvcGF0aD5cbiAgICA8Zz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGNsYXNzPVwibGluay1saW5lXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTGluZUNsaWNrKCRldmVudCwgbGluaylcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJtb3VzZUVudGVyUGF0aChsaW5rKVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmVQYXRoKGxpbmspXCJcbiAgICAgICAgW2F0dHIuZF09XCJsaW5rLnBhdGhcIlxuICAgICAgICBzdHJva2U9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjlcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIGN1cnNvcj1cInBvaW50ZXJcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L2c+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bGluZSBjbGFzcz1cImxpbmstZHJhZ2dpbmctbGluZVwiPjwvbGluZT5cbjwvc3ZnPlxuIl19
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbGlua3MvbGlua3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUtULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBK0IsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQU0xRixNQUFNLE9BQU8sbUJBQW1CO0lBbUI1QixZQUNzQyxVQUFzQixFQUNoRCxHQUFzQixFQUN0QixVQUFzQixFQUN0QixrQkFBc0M7UUFIWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2hELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXRCekMsV0FBTSxHQUF5QixFQUFFLENBQUM7UUFFbEMsVUFBSyxHQUF3QixFQUFFLENBQUM7UUFFL0IsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRXZELFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBRTFCLGNBQVMsR0FB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QkFBcUI7b0JBQy9CLFdBQVcsRUFBRSx3QkFBd0I7aUJBQ3hDOzswQkFxQlEsTUFBTTsyQkFBQyxpQkFBaUI7c0lBbkJwQixNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBWW1DLGlCQUFpQjtzQkFBMUQsV0FBVzt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEdhbnR0R3JvdXBJbnRlcm5hbCB9IGZyb20gJy4uLy4uL2NsYXNzL2dyb3VwJztcbmltcG9ydCB7IEdhbnR0SXRlbUludGVybmFsIH0gZnJvbSAnLi8uLi8uLi9jbGFzcy9pdGVtJztcbmltcG9ydCB7IEdhbnR0TGluZUNsaWNrRXZlbnQgfSBmcm9tICcuLi8uLi9jbGFzcy9ldmVudCc7XG5pbXBvcnQgeyBHYW50dERyYWdDb250YWluZXIgfSBmcm9tICcuLi8uLi9nYW50dC1kcmFnLWNvbnRhaW5lcic7XG5pbXBvcnQgeyByZWN1cnNpdmVJdGVtcyB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlcnMnO1xuaW1wb3J0IHsgR0FOVFRfVVBQRVJfVE9LRU4sIEdhbnR0VXBwZXIgfSBmcm9tICcuLi8uLi9nYW50dC11cHBlcic7XG5pbXBvcnQgeyBHYW50dExpbmtJdGVtLCBMaW5rSW50ZXJuYWwsIExpbmtDb2xvcnMsIEdhbnR0TGlua1R5cGUgfSBmcm9tICcuLi8uLi9jbGFzcy9saW5rJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYW50dC1saW5rcy1vdmVybGF5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGlua3MuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEdhbnR0TGlua3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBncm91cHM6IEdhbnR0R3JvdXBJbnRlcm5hbFtdID0gW107XG5cbiAgICBASW5wdXQoKSBpdGVtczogR2FudHRJdGVtSW50ZXJuYWxbXSA9IFtdO1xuXG4gICAgQE91dHB1dCgpIGxpbmVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R2FudHRMaW5lQ2xpY2tFdmVudD4oKTtcblxuICAgIHB1YmxpYyBsaW5rczogTGlua0ludGVybmFsW10gPSBbXTtcblxuICAgIHByaXZhdGUgbGlua0l0ZW1zOiBHYW50dExpbmtJdGVtW10gPSBbXTtcblxuICAgIHByaXZhdGUgYmV6aWVyV2VpZ2h0ID0gLTAuNTtcblxuICAgIHByaXZhdGUgZmlyc3RDaGFuZ2UgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5nYW50dC1saW5rcy1vdmVybGF5JykgZ2FudHRMaW5rc092ZXJsYXkgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoR0FOVFRfVVBQRVJfVE9LRU4pIHB1YmxpYyBnYW50dFVwcGVyOiBHYW50dFVwcGVyLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBnYW50dERyYWdDb250YWluZXI6IEdhbnR0RHJhZ0NvbnRhaW5lclxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmJ1aWxkTGlua3MoKTtcbiAgICAgICAgdGhpcy5maXJzdENoYW5nZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZ2FudHREcmFnQ29udGFpbmVyLmRyYWdTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIudmlld0NoYW5nZSxcbiAgICAgICAgICAgIHRoaXMuZ2FudHRVcHBlci5leHBhbmRDaGFuZ2UsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIudmlldy5zdGFydCQsXG4gICAgICAgICAgICB0aGlzLmdhbnR0VXBwZXIuZHJhZ0VuZGVkLFxuICAgICAgICAgICAgdGhpcy5nYW50dFVwcGVyLmxpbmtEcmFnRW5kZWRcbiAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSwgc2tpcCgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5idWlsZExpbmtzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVJdGVtUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGJhckhlaWdodCA9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMuYmFySGVpZ2h0O1xuICAgICAgICB0aGlzLmxpbmtJdGVtcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5ncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGl0ZW1OdW0gPSAwO1xuICAgICAgICAgICAgbGV0IGdyb3VwTnVtID0gMDtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3JvdXBOdW0rKztcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSByZWN1cnNpdmVJdGVtcyhncm91cC5pdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9IChncm91cE51bSArIGl0ZW1OdW0gKyBpdGVtSW5kZXgpICogbGluZUhlaWdodCArIGl0ZW0ucmVmcy55ICsgYmFySGVpZ2h0IC8gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlua0l0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGl0ZW0ucmVmcy54LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBpdGVtLnJlZnMueCArIGl0ZW0ucmVmcy53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbU51bSArPSBpdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlY3Vyc2l2ZUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaXRlbUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IGl0ZW1JbmRleCAqIGxpbmVIZWlnaHQgKyBpdGVtLnJlZnMueSArIGJhckhlaWdodCAvIDI7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rSXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgeDogaXRlbS5yZWZzLngsXG4gICAgICAgICAgICAgICAgICAgICAgICB5XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFmdGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4OiBpdGVtLnJlZnMueCArIGl0ZW0ucmVmcy53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlUGF0aChzb3VyY2U6IEdhbnR0TGlua0l0ZW0sIHRhcmdldDogR2FudHRMaW5rSXRlbSwgdHlwZTogR2FudHRMaW5rVHlwZSkge1xuICAgICAgICBpZiAoc291cmNlLmJlZm9yZSAmJiBzb3VyY2UuYWZ0ZXIgJiYgdGFyZ2V0LmJlZm9yZSAmJiB0YXJnZXQuYWZ0ZXIpIHtcbiAgICAgICAgICAgIGxldCB4MSA9IHNvdXJjZS5hZnRlci54O1xuICAgICAgICAgICAgbGV0IHkxID0gc291cmNlLmFmdGVyLnk7XG4gICAgICAgICAgICBsZXQgeDQgPSB0YXJnZXQuYmVmb3JlLng7XG4gICAgICAgICAgICBsZXQgeTQgPSB0YXJnZXQuYmVmb3JlLnk7XG4gICAgICAgICAgICBsZXQgaXNNaXJyb3I6IG51bWJlcjtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBNYXRoLmFicyh5NCAtIHkxKSAvIDI7XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgR2FudHRMaW5rVHlwZS5zczpcbiAgICAgICAgICAgICAgICAgICAgeDEgPSBzb3VyY2UuYmVmb3JlLng7XG4gICAgICAgICAgICAgICAgICAgIHkxID0gc291cmNlLmJlZm9yZS55O1xuICAgICAgICAgICAgICAgICAgICB4NCA9IHRhcmdldC5iZWZvcmUueDtcbiAgICAgICAgICAgICAgICAgICAgeTQgPSB0YXJnZXQuYmVmb3JlLnk7XG4gICAgICAgICAgICAgICAgICAgIGlzTWlycm9yID0geTQgPiB5MSA/IDAgOiAxO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh4NCA+IHgxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBICR7Y29udHJvbH0gJHtjb250cm9sfSAwIDEgJHtpc01pcnJvcn0gJHt4MX0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMICR7eDF9ICR7eTR9ICR7eDR9ICR7eTR9YDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3gxfSAke3kxfSAke3g0fSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgQSAke2NvbnRyb2x9ICR7Y29udHJvbH0gMCAxICR7aXNNaXJyb3J9ICR7eDR9ICR7eTR9YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSBHYW50dExpbmtUeXBlLmZmOlxuICAgICAgICAgICAgICAgICAgICB4MSA9IHNvdXJjZS5hZnRlci54O1xuICAgICAgICAgICAgICAgICAgICB5MSA9IHNvdXJjZS5hZnRlci55O1xuICAgICAgICAgICAgICAgICAgICB4NCA9IHRhcmdldC5hZnRlci54O1xuICAgICAgICAgICAgICAgICAgICB5NCA9IHRhcmdldC5hZnRlci55O1xuICAgICAgICAgICAgICAgICAgICBpc01pcnJvciA9IHk0ID4geTEgPyAxIDogMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHg0ID4geDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3gxfSAke3kxfSAke3g0fSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgQSAke2NvbnRyb2x9ICR7Y29udHJvbH0gMCAxICR7aXNNaXJyb3J9ICR7eDR9ICR7eTR9YDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgTSAke3gxfSAke3kxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgJHtjb250cm9sfSAke2NvbnRyb2x9IDAgMSAke2lzTWlycm9yfSAke3gxfSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4MX0gJHt5NH0gJHt4NH0gJHt5NH1gO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlIEdhbnR0TGlua1R5cGUuc2Y6XG4gICAgICAgICAgICAgICAgICAgIHgxID0gdGFyZ2V0LmFmdGVyLng7XG4gICAgICAgICAgICAgICAgICAgIHkxID0gdGFyZ2V0LmFmdGVyLnk7XG4gICAgICAgICAgICAgICAgICAgIHg0ID0gc291cmNlLmJlZm9yZS54O1xuICAgICAgICAgICAgICAgICAgICB5NCA9IHNvdXJjZS5iZWZvcmUueTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZHggPSBNYXRoLmFicyh4NCAtIHgxKSAqIHRoaXMuYmV6aWVyV2VpZ2h0O1xuXG4gICAgICAgICAgICBjb25zdCB4MiA9IHgxIC0gZHg7XG4gICAgICAgICAgICBjb25zdCB4MyA9IHg0ICsgZHg7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJYID0gKHgxICsgeDQpIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclkgPSAoeTEgKyB5NCkgLyAyO1xuXG4gICAgICAgICAgICBsZXQgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLyAyO1xuICAgICAgICAgICAgY29uc3QgY29udHJvbFkgPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQgLyAyO1xuXG4gICAgICAgICAgICBpZiAoeDEgPj0geDQpIHtcbiAgICAgICAgICAgICAgICBpZiAoeTQgPiB5MSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoeTQgLSB5MSkgPD0gdGhpcy5nYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgKyBjb250cm9sWH0gJHt4MX0gJHt5MSArIGNvbnRyb2xZfVxuICAgICAgICAgICAgICAgICAgICAgICAgTCAke3gxfSAke3kxICsgY29udHJvbFl9ICR7Y2VudGVyWH0gJHtjZW50ZXJZfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBNICR7eDR9ICR7eTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDQgLSBjb250cm9sWH0gJHt5NH0gJHt4NCAtIGNvbnRyb2xYfSAke3k0IC0gY29udHJvbFh9ICR7eDR9ICR7eTQgLSBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4NH0gJHt5NCAtIGNvbnRyb2xZfSAke2NlbnRlclh9ICR7Y2VudGVyWX1gO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgKyBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgTSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDQgLSBjb250cm9sWH0gJHt5NCAtIGNvbnRyb2xYfSAke2NlbnRlclh9ICR7Y2VudGVyWX1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHk0IC0geTEpIDw9IHRoaXMuZ2FudHRVcHBlci5zdHlsZXMubGluZUhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9XG4gICAgICAgICAgICAgICAgICAgICAgICBDICR7eDEgKyBjb250cm9sWH0gJHt5MX0gJHt4MSArIGNvbnRyb2xYfSAke3kxIC0gY29udHJvbFh9ICR7eDF9ICR7eTEgLSBjb250cm9sWX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEwgJHt4MX0gJHt5MSAtIGNvbnRyb2xZfSAke2NlbnRlclh9ICR7Y2VudGVyWX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgTSAke3g0fSAke3k0fVxuICAgICAgICAgICAgICAgICAgICAgICAgQyAke3g0IC0gY29udHJvbFh9ICR7eTR9ICR7eDQgLSBjb250cm9sWH0gJHt5NCArIGNvbnRyb2xYfSAke3g0fSAke3k0ICsgY29udHJvbFl9XG4gICAgICAgICAgICAgICAgICAgICAgICBMICR7eDR9ICR7eTQgKyBjb250cm9sWX0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG4gICAgICAgICAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFggPSB0aGlzLmdhbnR0VXBwZXIuc3R5bGVzLmxpbmVIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYE0gJHt4MX0gJHt5MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4MSArIGNvbnRyb2xYfSAke3kxfSAke3gxICsgY29udHJvbFh9ICR7eTEgLSBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIE0gJHt4NH0gJHt5NH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEMgJHt4NCAtIGNvbnRyb2xYfSAke3k0fSAke3g0IC0gY29udHJvbFh9ICR7eTQgKyBjb250cm9sWH0gJHtjZW50ZXJYfSAke2NlbnRlcll9YDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGBNICR7eDF9ICR7eTF9IEMgJHt4Mn0gJHt5MX0gJHt4M30gJHt5NH0gJHt4NH0gJHt5NH1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRMaW5rcygpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlSXRlbVBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMubGlua3MgPSBbXTtcbiAgICAgICAgdGhpcy5saW5rSXRlbXMuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoc291cmNlLm9yaWdpbi5zdGFydCB8fCBzb3VyY2Uub3JpZ2luLmVuZCkge1xuICAgICAgICAgICAgICAgIHNvdXJjZS5saW5rcy5mb3JFYWNoKChsaW5rKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMubGlua0l0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGxpbmsubGluayk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgKHRhcmdldC5vcmlnaW4uc3RhcnQgfHwgdGFyZ2V0Lm9yaWdpbi5lbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpbmtzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMuZ2VuZXJhdGVQYXRoKHNvdXJjZSwgdGFyZ2V0LCBsaW5rLnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogc291cmNlLm9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHRhcmdldC5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogbGluay50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBzb3VyY2UuZW5kLmdldFRpbWUoKSA+IHRhcmdldC5zdGFydC5nZXRUaW1lKCkgPyBMaW5rQ29sb3JzLmJsb2NrZWQgOiBMaW5rQ29sb3JzLmRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnkoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgb25MaW5lQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGxpbms6IExpbmtJbnRlcm5hbCkge1xuICAgICAgICB0aGlzLmxpbmVDbGljay5lbWl0KHtcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgc291cmNlOiBsaW5rLnNvdXJjZSxcbiAgICAgICAgICAgIHRhcmdldDogbGluay50YXJnZXRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbW91c2VFbnRlclBhdGgobGluazogTGlua0ludGVybmFsKSB7XG4gICAgICAgIGlmIChsaW5rLmNvbG9yID09PSBMaW5rQ29sb3JzLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIGxpbmsuY29sb3IgPSBMaW5rQ29sb3JzLmFjdGl2ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdXNlTGVhdmVQYXRoKGxpbms6IExpbmtJbnRlcm5hbCkge1xuICAgICAgICBpZiAobGluay5jb2xvciA9PT0gTGlua0NvbG9ycy5hY3RpdmUpIHtcbiAgICAgICAgICAgIGxpbmsuY29sb3IgPSBMaW5rQ29sb3JzLmRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxzdmcgW2F0dHIud2lkdGhdPVwiZ2FudHRVcHBlci52aWV3LndpZHRoXCIgY2xhc3M9XCJnYW50dC1saW5rcy1vdmVybGF5LW1haW5cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBsaW5rczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgIDxwYXRoXG4gICAgICBbYXR0ci5kXT1cImxpbmsucGF0aFwiXG4gICAgICBmaWxsPVwidHJhbnNwYXJlbnRcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci5zdHJva2VdPVwibGluay5jb2xvclwiXG4gICAgICBwb2ludGVyLWV2ZW50cz1cIm5vbmVcIlxuICAgICAgW3N0eWxlXT1cIidtYXJrZXItZW5kOiB1cmwoI3RyaWFuZ2xlJyArIGkgKyAnKSdcIlxuICAgID48L3BhdGg+XG4gICAgPGc+XG4gICAgICA8cGF0aFxuICAgICAgICBjbGFzcz1cImxpbmstbGluZVwiXG4gICAgICAgIChjbGljayk9XCJvbkxpbmVDbGljaygkZXZlbnQsIGxpbmspXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VFbnRlclBhdGgobGluaylcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlUGF0aChsaW5rKVwiXG4gICAgICAgIFthdHRyLmRdPVwibGluay5wYXRoXCJcbiAgICAgICAgc3Ryb2tlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCI5XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICBjdXJzb3I9XCJwb2ludGVyXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9nPlxuICAgIDwhLS0gPGRlZnM+XG4gICAgICA8bWFya2VyIFtpZF09XCIndHJpYW5nbGUnICsgaVwiIG1hcmtlclVuaXRzPVwic3Ryb2tlV2lkdGhcIiBtYXJrZXJXaWR0aD1cIjVcIiBtYXJrZXJIZWlnaHQ9XCI0XCIgcmVmWD1cIjVcIiByZWZZPVwiMlwiIG9yaWVudD1cImF1dG9cIj5cbiAgICAgICAgPHBhdGggW2F0dHIuZmlsbF09XCJsaW5rLmNvbG9yXCIgW2F0dHIuc3Ryb2tlXT1cImxpbmsuY29sb3JcIiBkPVwiTSAwIDAgTCA1IDIgTCAwIDQgelwiIC8+XG4gICAgICA8L21hcmtlcj5cbiAgICA8L2RlZnM+IC0tPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGxpbmUgY2xhc3M9XCJsaW5rLWRyYWdnaW5nLWxpbmVcIj48L2xpbmU+XG48L3N2Zz5cbiJdfQ==
|
|
@@ -15,12 +15,12 @@ export class GanttMainComponent {
|
|
|
15
15
|
this.ganttMainClass = true;
|
|
16
16
|
}
|
|
17
17
|
ngOnInit() { }
|
|
18
|
-
trackBy(
|
|
18
|
+
trackBy(index, item) {
|
|
19
19
|
return item.id || index;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
GanttMainComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttMainComponent, deps: [{ token: GANTT_UPPER_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
-
GanttMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: GanttMainComponent, selector: "gantt-main", inputs: {
|
|
23
|
+
GanttMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.2", type: GanttMainComponent, selector: "gantt-main", inputs: { groups: "groups", items: "items", groupHeaderTemplate: "groupHeaderTemplate", itemTemplate: "itemTemplate", barTemplate: "barTemplate", rangeTemplate: "rangeTemplate" }, outputs: { barClick: "barClick", lineClick: "lineClick" }, host: { properties: { "class.gantt-main-container": "this.ganttMainClass" } }, ngImport: i0, template: "<gantt-links-overlay [groups]=\"groups\" [items]=\"items\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<!-- groups -->\n<div class=\"gantt-main-groups\" *ngIf=\"groups && groups.length > 0; else itemsTemplate\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-group\" [ngClass]=\"group.class\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: group }\"></ng-template>\n </div>\n <div *ngIf=\"group.expanded\" class=\"gantt-items\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: group.items }\"></ng-template>\n </div>\n </ng-container>\n</div>\n<!-- items -->\n<ng-template #itemsTemplate>\n <div class=\"gantt-main-items\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items }\"></ng-template>\n </div>\n</ng-template>\n\n<ng-template #ganttItems let-items=\"items\">\n <ng-container *ngFor=\"let item of items; trackBy: trackBy\">\n <div class=\"gantt-item\" [style.height.px]=\"ganttUpper.styles.lineHeight\">\n <ng-container *ngIf=\"item.type | isGanttCustomItem\">\n <ng-template [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n </ng-container>\n <gantt-range *ngIf=\"item.type | isGanttRangeItem\" [template]=\"rangeTemplate\" [item]=\"item\"></gantt-range>\n <gantt-bar *ngIf=\"item.type | isGanttBarItem\" [item]=\"item\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n", components: [{ type: i1.GanttLinksComponent, selector: "gantt-links-overlay", inputs: ["groups", "items"], outputs: ["lineClick"] }, { type: i2.NgxGanttRangeComponent, selector: "ngx-gantt-range,gantt-range" }, { type: i3.NgxGanttBarComponent, selector: "ngx-gantt-bar,gantt-bar", outputs: ["barClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "isGanttCustomItem": i5.IsGanttCustomItemPipe, "isGanttRangeItem": i5.IsGanttRangeItemPipe, "isGanttBarItem": i5.IsGanttBarItemPipe } });
|
|
24
24
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImport: i0, type: GanttMainComponent, decorators: [{
|
|
25
25
|
type: Component,
|
|
26
26
|
args: [{
|
|
@@ -30,9 +30,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
30
30
|
}], ctorParameters: function () { return [{ type: i6.GanttUpper, decorators: [{
|
|
31
31
|
type: Inject,
|
|
32
32
|
args: [GANTT_UPPER_TOKEN]
|
|
33
|
-
}] }]; }, propDecorators: {
|
|
33
|
+
}] }]; }, propDecorators: { groups: [{
|
|
34
34
|
type: Input
|
|
35
|
-
}],
|
|
35
|
+
}], items: [{
|
|
36
36
|
type: Input
|
|
37
37
|
}], groupHeaderTemplate: [{
|
|
38
38
|
type: Input
|
|
@@ -50,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.2", ngImpor
|
|
|
50
50
|
type: HostBinding,
|
|
51
51
|
args: ['class.gantt-main-container']
|
|
52
52
|
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FudHQtbWFpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nYW50dC9zcmMvY29tcG9uZW50cy9tYWluL2dhbnR0LW1haW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2FudHQvc3JjL2NvbXBvbmVudHMvbWFpbi9nYW50dC1tYWluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsaUJBQWlCLEVBQWMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7QUFNbEUsTUFBTSxPQUFPLGtCQUFrQjtJQW1CM0IsWUFBOEMsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQU4xRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFFbEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRW5CLG1CQUFjLEdBQUcsSUFBSSxDQUFDO0lBRU0sQ0FBQztJQUV4RSxRQUFRLEtBQUksQ0FBQztJQUViLE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBNEM7UUFDL0QsT0FBTyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztJQUM1QixDQUFDOzsrR0F6QlEsa0JBQWtCLGtCQW1CUCxpQkFBaUI7bUdBbkI1QixrQkFBa0IsZ1hDUi9CLGc2REFtQ0E7MkZEM0JhLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsV0FBVyxFQUFFLDZCQUE2QjtpQkFDN0M7OzBCQW9CZ0IsTUFBTTsyQkFBQyxpQkFBaUI7NENBbEI1QixNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUVHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRW9DLGNBQWM7c0JBQXhELFdBQVc7dUJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdhbnR0R3JvdXBJbnRlcm5hbCwgR2FudHRJdGVtSW50ZXJuYWwsIEdhbnR0QmFyQ2xpY2tFdmVudCwgR2FudHRMaW5lQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL2NsYXNzJztcbmltcG9ydCB7IEdBTlRUX1VQUEVSX1RPS0VOLCBHYW50dFVwcGVyIH0gZnJvbSAnLi4vLi4vZ2FudHQtdXBwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2dhbnR0LW1haW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9nYW50dC1tYWluLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHYW50dE1haW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGdyb3VwczogR2FudHRHcm91cEludGVybmFsW107XG5cbiAgICBASW5wdXQoKSBpdGVtczogR2FudHRJdGVtSW50ZXJuYWxbXTtcblxuICAgIEBJbnB1dCgpIGdyb3VwSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpIHJhbmdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAT3V0cHV0KCkgYmFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0QmFyQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKSBsaW5lQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdhbnR0TGluZUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmdhbnR0LW1haW4tY29udGFpbmVyJykgZ2FudHRNYWluQ2xhc3MgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChHQU5UVF9VUFBFUl9UT0tFTikgcHVibGljIGdhbnR0VXBwZXI6IEdhbnR0VXBwZXIpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHt9XG5cbiAgICB0cmFja0J5KGluZGV4OiBudW1iZXIsIGl0ZW06IEdhbnR0R3JvdXBJbnRlcm5hbCB8IEdhbnR0SXRlbUludGVybmFsKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkIHx8IGluZGV4O1xuICAgIH1cbn1cbiIsIjxnYW50dC1saW5rcy1vdmVybGF5IFtncm91cHNdPVwiZ3JvdXBzXCIgW2l0ZW1zXT1cIml0ZW1zXCIgKGxpbmVDbGljayk9XCJsaW5lQ2xpY2suZW1pdCgkZXZlbnQpXCI+PC9nYW50dC1saW5rcy1vdmVybGF5PlxuPCEtLSBncm91cHMgLS0+XG48ZGl2IGNsYXNzPVwiZ2FudHQtbWFpbi1ncm91cHNcIiAqbmdJZj1cImdyb3VwcyAmJiBncm91cHMubGVuZ3RoID4gMDsgZWxzZSBpdGVtc1RlbXBsYXRlXCIgW3N0eWxlLndpZHRoLnB4XT1cImdhbnR0VXBwZXIudmlldy53aWR0aFwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHM7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ2FudHQtZ3JvdXBcIiBbbmdDbGFzc109XCJncm91cC5jbGFzc1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdyb3VwSGVhZGVyVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBncm91cDogZ3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImdyb3VwLmV4cGFuZGVkXCIgY2xhc3M9XCJnYW50dC1pdGVtc1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdhbnR0SXRlbXNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBpdGVtczogZ3JvdXAuaXRlbXMgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48IS0tIGl0ZW1zIC0tPlxuPG5nLXRlbXBsYXRlICNpdGVtc1RlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZ2FudHQtbWFpbi1pdGVtc1wiIFtzdHlsZS53aWR0aC5weF09XCJnYW50dFVwcGVyLnZpZXcud2lkdGhcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2FudHRJdGVtc1wiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW1zOiBpdGVtcyB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2dhbnR0SXRlbXMgbGV0LWl0ZW1zPVwiaXRlbXNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgIDxkaXYgY2xhc3M9XCJnYW50dC1pdGVtXCIgW3N0eWxlLmhlaWdodC5weF09XCJnYW50dFVwcGVyLnN0eWxlcy5saW5lSGVpZ2h0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50eXBlIHwgaXNHYW50dEN1c3RvbUl0ZW1cIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGl0ZW06IGl0ZW0ub3JpZ2luLCByZWZzOiBpdGVtLnJlZnMgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxnYW50dC1yYW5nZSAqbmdJZj1cIml0ZW0udHlwZSB8IGlzR2FudHRSYW5nZUl0ZW1cIiBbdGVtcGxhdGVdPVwicmFuZ2VUZW1wbGF0ZVwiIFtpdGVtXT1cIml0ZW1cIj48L2dhbnR0LXJhbmdlPlxuICAgICAgPGdhbnR0LWJhciAqbmdJZj1cIml0ZW0udHlwZSB8IGlzR2FudHRCYXJJdGVtXCIgW2l0ZW1dPVwiaXRlbVwiIFt0ZW1wbGF0ZV09XCJiYXJUZW1wbGF0ZVwiIChiYXJDbGljayk9XCJiYXJDbGljay5lbWl0KCRldmVudClcIj48L2dhbnR0LWJhcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ0lmPVwiaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmV4cGFuZGVkXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdhbnR0SXRlbXNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaXRlbXM6IGl0ZW0uY2hpbGRyZW4gfVwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|