tango-app-ui-analyse-trax 3.3.1-alpha-task.67 → 3.3.1-alpha-task.69
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/esm2022/lib/components/action-centre/action-centre.component.mjs +54 -36
- package/esm2022/lib/components/activity-log/activity-log.component.mjs +33 -9
- package/esm2022/lib/components/add-task/add-task.component.mjs +2 -2
- package/esm2022/lib/components/chip-dropdown/chip-dropdown.component.mjs +15 -8
- package/esm2022/lib/components/create-task/create-task.component.mjs +41 -14
- package/esm2022/lib/components/create-task/create-task.data.mjs +12 -12
- package/esm2022/lib/components/create-task/create-task.interface.mjs +1 -1
- package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +38 -71
- package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +3 -21
- package/esm2022/lib/components/gallery/gallery.component.mjs +25 -17
- package/esm2022/lib/services/trax.service.mjs +2 -2
- package/fesm2022/tango-app-ui-analyse-trax.mjs +213 -182
- package/fesm2022/tango-app-ui-analyse-trax.mjs.map +1 -1
- package/lib/components/action-centre/action-centre.component.d.ts +13 -8
- package/lib/components/activity-log/activity-log.component.d.ts +4 -1
- package/lib/components/chip-dropdown/chip-dropdown.component.d.ts +2 -1
- package/lib/components/create-task/create-task.component.d.ts +4 -1
- package/lib/components/create-task/create-task.data.d.ts +11 -11
- package/lib/components/create-task/create-task.interface.d.ts +2 -2
- package/lib/components/dashboard-info/dashboard-info.component.d.ts +2 -0
- package/lib/components/flags/flags.component.d.ts +2 -2
- package/lib/components/flags-info/flags-info.component.d.ts +3 -3
- package/lib/components/orders/orders.component.d.ts +1 -1
- package/lib/components/reports/reports.component.d.ts +2 -2
- package/lib/components/task-configure/task-configure.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -70,12 +70,6 @@ export class MonthlyperformanceDatepickerComponent {
|
|
|
70
70
|
.subscribe((data) => {
|
|
71
71
|
if (data) {
|
|
72
72
|
this.headerData = data;
|
|
73
|
-
// if (this.receivedData === 'Checklist') {
|
|
74
|
-
// this.getMonthlyPeformanceData();
|
|
75
|
-
// } else if (this.receivedData === 'User') {
|
|
76
|
-
// this.getMonthlyPeformanceData();
|
|
77
|
-
// } else {
|
|
78
|
-
// }
|
|
79
73
|
}
|
|
80
74
|
});
|
|
81
75
|
}
|
|
@@ -86,14 +80,6 @@ export class MonthlyperformanceDatepickerComponent {
|
|
|
86
80
|
fromDate: this.headerData.date.startDate,
|
|
87
81
|
toDate: this.headerData.date.endDate,
|
|
88
82
|
storeId: this.headerData.stores.filter((store) => store.checked).map((store) => store.storeId),
|
|
89
|
-
// storeId: [
|
|
90
|
-
// "11-1743",
|
|
91
|
-
// "11-178",
|
|
92
|
-
// "11-1413",
|
|
93
|
-
// "11-1833",
|
|
94
|
-
// "11-67",
|
|
95
|
-
// "11-709"
|
|
96
|
-
// ],
|
|
97
83
|
clientId: this.headerData.client,
|
|
98
84
|
groupByType: this.receivedData,
|
|
99
85
|
groupByValue: this.monthlyperformce,
|
|
@@ -122,17 +108,14 @@ export class MonthlyperformanceDatepickerComponent {
|
|
|
122
108
|
const daysInMonth = new Date(this.currentYear, this.currentMonth + 1, 0).getDate();
|
|
123
109
|
return Array.from({ length: daysInMonth }, (_, i) => i + 1);
|
|
124
110
|
}
|
|
125
|
-
// Get empty days to align the first day of the month with the correct day of the week
|
|
126
111
|
getEmptyDays() {
|
|
127
112
|
const firstDayOfMonth = new Date(this.currentYear, this.currentMonth, 1).getDay();
|
|
128
113
|
return Array(firstDayOfMonth === 0 ? 6 : firstDayOfMonth - 1).fill(0);
|
|
129
114
|
}
|
|
130
|
-
// Get the class name for a given day based on the performance data
|
|
131
115
|
getDayClass(day) {
|
|
132
116
|
const predefinedDay = this.performanceData.find(d => d.date === day);
|
|
133
117
|
return predefinedDay ? predefinedDay.colorClass : '';
|
|
134
118
|
}
|
|
135
|
-
// Navigate to the previous month
|
|
136
119
|
previousMonth() {
|
|
137
120
|
if (this.currentMonth === 0) {
|
|
138
121
|
this.currentMonth = 11;
|
|
@@ -146,7 +129,6 @@ export class MonthlyperformanceDatepickerComponent {
|
|
|
146
129
|
// let monthlyToDate = this.currentYear+"-"+(this.currentMonth - 1) +"-"+"25"
|
|
147
130
|
this.getMonthlyPeformanceData();
|
|
148
131
|
}
|
|
149
|
-
// Navigate to the next month
|
|
150
132
|
nextMonth() {
|
|
151
133
|
if (this.currentMonth === 11) {
|
|
152
134
|
this.currentMonth = 0;
|
|
@@ -161,12 +143,12 @@ export class MonthlyperformanceDatepickerComponent {
|
|
|
161
143
|
this.getMonthlyPeformanceData();
|
|
162
144
|
}
|
|
163
145
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MonthlyperformanceDatepickerComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.ToastService }, { token: i4.TraxService }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MonthlyperformanceDatepickerComponent, selector: "lib-monthlyperformance-datepicker", inputs: { monthlyperformce: "monthlyperformce" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"calendar-container p-5\">\r\n <!-- triggers=\"mouseenter:mouseleave\" -->\r\n <div class=\"performanceheading\">Monthly Performance <span class=\"cursor-pointer\"\r\n [ngbTooltip]=\"tooltipContent\"\r\n placement=\"bottom\"\r\n triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3701_29180)\">\r\n <path d=\"M7.9987 11.1666V8.49992M7.9987 5.83325H8.00536M14.6654 8.49992C14.6654 12.1818 11.6806 15.1666 7.9987 15.1666C4.3168 15.1666 1.33203 12.1818 1.33203 8.49992C1.33203 4.81802 4.3168 1.83325 7.9987 1.83325C11.6806 1.83325 14.6654 4.81802 14.6654 8.49992Z\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3701_29180\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n \r\n <ng-template #tooltipContent>\r\n <div class=\"tooltip-container\">\r\n <div class=\"performance-box\">\r\n <div class=\"performance-item\">\r\n <span class=\"number primary900\">1</span>\r\n <span class=\"performancetext\">Overall performance 86 to 100%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number blue33B5FF\">2</span>\r\n <span class=\"performancetext\">Overall performance 71 to 85%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number lightBlue6BCAFF\">3</span>\r\n <span class=\"performancetext\">Overall performance 56 to 70%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number orangeF79009\">4</span>\r\n <span class=\"performancetext\">Overall performance 41 to 55%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number redF04438\">5</span>\r\n <span class=\"performancetext\">Overall performance below 40%</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n \r\n <div class=\"calendar\">\r\n <div class=\"calendar-header my-3\">\r\n <span class=\"cursor-pointer\" (click)=\"previousMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M12.5 15L7.5 10L12.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span>{{ monthNames[currentMonth] }} {{ currentYear }}</span>\r\n <span class=\"cursor-pointer\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </div>\r\n <!-- add nodata -->\r\n <div class=\"calendar-body my-5\">\r\n <ng-container *ngIf=\"monthlyPeformanceLoading\">\r\n <div class=\"row loader no-scrollbar d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"monthlyPeformanceNoData && !monthlyPeformanceLoading\">\r\n <div class=\"row no-scrollbar\">\r\n <div class=\"col-lg-12 my-7\">\r\n <div class=\"card-body mb-6 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Monthly Performance\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container
|
|
146
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MonthlyperformanceDatepickerComponent, selector: "lib-monthlyperformance-datepicker", inputs: { monthlyperformce: "monthlyperformce" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"calendar-container p-5\">\r\n <!-- triggers=\"mouseenter:mouseleave\" -->\r\n <div class=\"performanceheading\">Monthly Performance <span class=\"cursor-pointer\"\r\n [ngbTooltip]=\"tooltipContent\"\r\n placement=\"bottom\"\r\n triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3701_29180)\">\r\n <path d=\"M7.9987 11.1666V8.49992M7.9987 5.83325H8.00536M14.6654 8.49992C14.6654 12.1818 11.6806 15.1666 7.9987 15.1666C4.3168 15.1666 1.33203 12.1818 1.33203 8.49992C1.33203 4.81802 4.3168 1.83325 7.9987 1.83325C11.6806 1.83325 14.6654 4.81802 14.6654 8.49992Z\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3701_29180\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n \r\n <ng-template #tooltipContent>\r\n <div class=\"tooltip-container\">\r\n <div class=\"performance-box\">\r\n <div class=\"performance-item\">\r\n <span class=\"number primary900\">1</span>\r\n <span class=\"performancetext\">Overall performance 86 to 100%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number blue33B5FF\">2</span>\r\n <span class=\"performancetext\">Overall performance 71 to 85%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number lightBlue6BCAFF\">3</span>\r\n <span class=\"performancetext\">Overall performance 56 to 70%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number orangeF79009\">4</span>\r\n <span class=\"performancetext\">Overall performance 41 to 55%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number redF04438\">5</span>\r\n <span class=\"performancetext\">Overall performance below 40%</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n \r\n <div class=\"calendar\">\r\n <div class=\"calendar-header my-3\">\r\n <span class=\"cursor-pointer\" (click)=\"previousMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M12.5 15L7.5 10L12.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span>{{ monthNames[currentMonth] }} {{ currentYear }}</span>\r\n <span class=\"cursor-pointer\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </div>\r\n <!-- add nodata -->\r\n <div class=\"calendar-body my-5\">\r\n <!-- <ng-container *ngIf=\"monthlyPeformanceLoading\">\r\n <div class=\"row loader no-scrollbar d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"monthlyPeformanceNoData && !monthlyPeformanceLoading\">\r\n <div class=\"row no-scrollbar\">\r\n <div class=\"col-lg-12 my-7\">\r\n <div class=\"card-body mb-6 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Monthly Performance\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container> -->\r\n <!-- *ngIf=\"!monthlyPeformanceLoading && !monthlyPeformanceNoData\" -->\r\n <div >\r\n <div class=\"day-names\">\r\n <div *ngFor=\"let day of dayNames\">{{ day }}</div>\r\n </div>\r\n <div class=\"calendar-days\">\r\n <!-- Empty days to align the start of the month -->\r\n <div *ngFor=\"let _ of getEmptyDays()\" class=\"empty-day\"></div>\r\n <!-- Calendar days with dynamic color assignment via CSS classes -->\r\n <div *ngFor=\"let day of getDaysInMonth()\" class=\"symbol symbol-35px symbol-circle\">\r\n <span [ngClass]=\"getDayClass(day)\" class=\"symbol-label\">\r\n {{ day }}\r\n </span>\r\n </div>\r\n <!-- <div *ngFor=\"let day of getDaysInMonth()\" [ngClass]=\"getDayClass(day)\" class=\"calendar-day\">\r\n {{ day }}\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n \r\n</div>\r\n\r\n", styles: [".calendar-container{display:flex;flex-direction:column;gap:12px;border-radius:8px;background:#fff}.calendar{display:flex;flex-direction:column;align-items:center;max-height:315px;overflow-y:scroll;scrollbar-width:none}.calendar::-webkit-scrollbar{display:none}.calendar-header{display:flex;justify-content:space-between;width:100%;color:var(--Gray-700, #344054);text-align:center;font-size:16px;font-style:normal;font-weight:500;line-height:24px;position:sticky!important;top:0!important;background-color:#fff;z-index:2}.calendar-body{display:flex;flex-direction:column;width:100%}.day-names{display:grid;grid-template-columns:repeat(7,1fr);font-weight:700;margin-bottom:10px;text-align:center}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.empty-day{visibility:hidden}.calendar-days div{text-align:center;border-radius:50%;cursor:not-allowed;margin-top:10%;margin-left:19%}.selected-day{background-color:#00a3ff;color:#fff}.disabled-day{cursor:not-allowed}button{background-color:transparent;border:none;cursor:pointer;font-size:16px}.performanceheading{color:var(--Gray-900, #101828);font-size:18px;font-style:normal;font-weight:600;line-height:28px}.primary900{background-color:var(--Primary-900, #0085D2);color:#fff}.blue33B5FF{background-color:#33b5ff;color:#fff}.lightBlue6BCAFF{background-color:#6bcaff;color:#fff}.orangeF79009{background-color:#f79009;color:#fff}.redF04438{background-color:#f04438;color:#fff}.calendar-day{width:85%;height:90%}.calendar-day:hover{opacity:.8}.empty-day{width:40px;height:40px;display:inline-block}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.custom-tooltip .tooltip-container{display:flex;flex-direction:column;padding:10px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 0 10px #0000001a;width:130%!important}.tooltip{display:flex;align-items:center}.tooltip-icon{font-weight:700;margin-right:5px}.tooltip-text{font-size:14px;color:#333}.performance-box{margin-top:10px}.performance-item{display:flex;align-items:center;margin-bottom:5px}.number{display:inline-block;width:25px;height:20px;text-align:center;border-radius:50%;margin-right:10px;margin-bottom:10px}.performancetext{color:#000;text-align:center;font-size:12px;font-weight:600;line-height:20px}.no-scrollbar{overflow:hidden;padding:0;margin:0}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] });
|
|
165
147
|
}
|
|
166
148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MonthlyperformanceDatepickerComponent, decorators: [{
|
|
167
149
|
type: Component,
|
|
168
|
-
args: [{ selector: 'lib-monthlyperformance-datepicker', template: "<div class=\"calendar-container p-5\">\r\n <!-- triggers=\"mouseenter:mouseleave\" -->\r\n <div class=\"performanceheading\">Monthly Performance <span class=\"cursor-pointer\"\r\n [ngbTooltip]=\"tooltipContent\"\r\n placement=\"bottom\"\r\n triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3701_29180)\">\r\n <path d=\"M7.9987 11.1666V8.49992M7.9987 5.83325H8.00536M14.6654 8.49992C14.6654 12.1818 11.6806 15.1666 7.9987 15.1666C4.3168 15.1666 1.33203 12.1818 1.33203 8.49992C1.33203 4.81802 4.3168 1.83325 7.9987 1.83325C11.6806 1.83325 14.6654 4.81802 14.6654 8.49992Z\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3701_29180\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n \r\n <ng-template #tooltipContent>\r\n <div class=\"tooltip-container\">\r\n <div class=\"performance-box\">\r\n <div class=\"performance-item\">\r\n <span class=\"number primary900\">1</span>\r\n <span class=\"performancetext\">Overall performance 86 to 100%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number blue33B5FF\">2</span>\r\n <span class=\"performancetext\">Overall performance 71 to 85%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number lightBlue6BCAFF\">3</span>\r\n <span class=\"performancetext\">Overall performance 56 to 70%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number orangeF79009\">4</span>\r\n <span class=\"performancetext\">Overall performance 41 to 55%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number redF04438\">5</span>\r\n <span class=\"performancetext\">Overall performance below 40%</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n \r\n <div class=\"calendar\">\r\n <div class=\"calendar-header my-3\">\r\n <span class=\"cursor-pointer\" (click)=\"previousMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M12.5 15L7.5 10L12.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span>{{ monthNames[currentMonth] }} {{ currentYear }}</span>\r\n <span class=\"cursor-pointer\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </div>\r\n <!-- add nodata -->\r\n <div class=\"calendar-body my-5\">\r\n <ng-container *ngIf=\"monthlyPeformanceLoading\">\r\n <div class=\"row loader no-scrollbar d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"monthlyPeformanceNoData && !monthlyPeformanceLoading\">\r\n <div class=\"row no-scrollbar\">\r\n <div class=\"col-lg-12 my-7\">\r\n <div class=\"card-body mb-6 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Monthly Performance\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container
|
|
150
|
+
args: [{ selector: 'lib-monthlyperformance-datepicker', template: "<div class=\"calendar-container p-5\">\r\n <!-- triggers=\"mouseenter:mouseleave\" -->\r\n <div class=\"performanceheading\">Monthly Performance <span class=\"cursor-pointer\"\r\n [ngbTooltip]=\"tooltipContent\"\r\n placement=\"bottom\"\r\n triggers=\"mouseenter:mouseleave\"\r\n tooltipClass=\"custom-tooltip\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3701_29180)\">\r\n <path d=\"M7.9987 11.1666V8.49992M7.9987 5.83325H8.00536M14.6654 8.49992C14.6654 12.1818 11.6806 15.1666 7.9987 15.1666C4.3168 15.1666 1.33203 12.1818 1.33203 8.49992C1.33203 4.81802 4.3168 1.83325 7.9987 1.83325C11.6806 1.83325 14.6654 4.81802 14.6654 8.49992Z\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3701_29180\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n \r\n <ng-template #tooltipContent>\r\n <div class=\"tooltip-container\">\r\n <div class=\"performance-box\">\r\n <div class=\"performance-item\">\r\n <span class=\"number primary900\">1</span>\r\n <span class=\"performancetext\">Overall performance 86 to 100%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number blue33B5FF\">2</span>\r\n <span class=\"performancetext\">Overall performance 71 to 85%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number lightBlue6BCAFF\">3</span>\r\n <span class=\"performancetext\">Overall performance 56 to 70%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number orangeF79009\">4</span>\r\n <span class=\"performancetext\">Overall performance 41 to 55%</span>\r\n </div>\r\n <div class=\"performance-item\">\r\n <span class=\"number redF04438\">5</span>\r\n <span class=\"performancetext\">Overall performance below 40%</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n \r\n <div class=\"calendar\">\r\n <div class=\"calendar-header my-3\">\r\n <span class=\"cursor-pointer\" (click)=\"previousMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M12.5 15L7.5 10L12.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n <span>{{ monthNames[currentMonth] }} {{ currentYear }}</span>\r\n <span class=\"cursor-pointer\" (click)=\"nextMonth()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </div>\r\n <!-- add nodata -->\r\n <div class=\"calendar-body my-5\">\r\n <!-- <ng-container *ngIf=\"monthlyPeformanceLoading\">\r\n <div class=\"row loader no-scrollbar d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"monthlyPeformanceNoData && !monthlyPeformanceLoading\">\r\n <div class=\"row no-scrollbar\">\r\n <div class=\"col-lg-12 my-7\">\r\n <div class=\"card-body mb-6 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Monthly Performance\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container> -->\r\n <!-- *ngIf=\"!monthlyPeformanceLoading && !monthlyPeformanceNoData\" -->\r\n <div >\r\n <div class=\"day-names\">\r\n <div *ngFor=\"let day of dayNames\">{{ day }}</div>\r\n </div>\r\n <div class=\"calendar-days\">\r\n <!-- Empty days to align the start of the month -->\r\n <div *ngFor=\"let _ of getEmptyDays()\" class=\"empty-day\"></div>\r\n <!-- Calendar days with dynamic color assignment via CSS classes -->\r\n <div *ngFor=\"let day of getDaysInMonth()\" class=\"symbol symbol-35px symbol-circle\">\r\n <span [ngClass]=\"getDayClass(day)\" class=\"symbol-label\">\r\n {{ day }}\r\n </span>\r\n </div>\r\n <!-- <div *ngFor=\"let day of getDaysInMonth()\" [ngClass]=\"getDayClass(day)\" class=\"calendar-day\">\r\n {{ day }}\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n \r\n \r\n</div>\r\n\r\n", styles: [".calendar-container{display:flex;flex-direction:column;gap:12px;border-radius:8px;background:#fff}.calendar{display:flex;flex-direction:column;align-items:center;max-height:315px;overflow-y:scroll;scrollbar-width:none}.calendar::-webkit-scrollbar{display:none}.calendar-header{display:flex;justify-content:space-between;width:100%;color:var(--Gray-700, #344054);text-align:center;font-size:16px;font-style:normal;font-weight:500;line-height:24px;position:sticky!important;top:0!important;background-color:#fff;z-index:2}.calendar-body{display:flex;flex-direction:column;width:100%}.day-names{display:grid;grid-template-columns:repeat(7,1fr);font-weight:700;margin-bottom:10px;text-align:center}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.empty-day{visibility:hidden}.calendar-days div{text-align:center;border-radius:50%;cursor:not-allowed;margin-top:10%;margin-left:19%}.selected-day{background-color:#00a3ff;color:#fff}.disabled-day{cursor:not-allowed}button{background-color:transparent;border:none;cursor:pointer;font-size:16px}.performanceheading{color:var(--Gray-900, #101828);font-size:18px;font-style:normal;font-weight:600;line-height:28px}.primary900{background-color:var(--Primary-900, #0085D2);color:#fff}.blue33B5FF{background-color:#33b5ff;color:#fff}.lightBlue6BCAFF{background-color:#6bcaff;color:#fff}.orangeF79009{background-color:#f79009;color:#fff}.redF04438{background-color:#f04438;color:#fff}.calendar-day{width:85%;height:90%}.calendar-day:hover{opacity:.8}.empty-day{width:40px;height:40px;display:inline-block}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.custom-tooltip .tooltip-container{display:flex;flex-direction:column;padding:10px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 0 10px #0000001a;width:130%!important}.tooltip{display:flex;align-items:center}.tooltip-icon{font-weight:700;margin-right:5px}.tooltip-text{font-size:14px;color:#333}.performance-box{margin-top:10px}.performance-item{display:flex;align-items:center;margin-bottom:5px}.number{display:inline-block;width:25px;height:20px;text-align:center;border-radius:50%;margin-right:10px;margin-bottom:10px}.performancetext{color:#000;text-align:center;font-size:12px;font-weight:600;line-height:20px}.no-scrollbar{overflow:hidden;padding:0;margin:0}\n"] }]
|
|
169
151
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.ToastService }, { type: i4.TraxService }], propDecorators: { monthlyperformce: [{
|
|
170
152
|
type: Input
|
|
171
153
|
}] } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhseXBlcmZvcm1hbmNlLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQtaW5mby9tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlci9tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC1pbmZvL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFFakgsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQWdDLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFJdEYsQ0FBQztBQU9ELE1BQU0sT0FBTyxxQ0FBcUM7SUFrQjVCO0lBQStCO0lBQXVCO0lBQWdDO0lBQTJDO0lBQzNJO0lBbEJWLFdBQVcsR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9DLFlBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdDLFFBQVEsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hFLFVBQVUsR0FBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxF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Y0FBYyxLQUFLLENBQUM7UUFDNUQsNkVBQTZFO1FBQ2pGLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7d0dBeEpVLHFDQUFxQzs0RkFBckMscUNBQXFDLGdKQ2JsRCx5bExBd0hBOzs0RkQzR2EscUNBQXFDO2tCQUxqRCxTQUFTOytCQUNFLG1DQUFtQzs4TkFrQnBDLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbW9udGhseXBlcmZvcm1hbmNlLWRhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb250aGx5cGVyZm9ybWFuY2VEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgY3VycmVudFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcclxuICBjdXJyZW50TW9udGg6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuICBkYXlOYW1lczogc3RyaW5nW10gPSBbJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJywgJ1N1J107XHJcbiAgbW9udGhOYW1lczogc3RyaW5nW10gPSBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXTtcclxuICBoZWFkZXJEYXRhOiBhbnk7XHJcblxyXG4gIHBlcmZvcm1hbmNlRGF0YTogYW55W10gPSBbXTsgLy8gVGhpcyB3aWxsIHN0b3JlIHRoZSBwZXJmb3JtYW5jZSBkYXRhIGZyb20gdGhlIEFQSSByZXNwb25zZVxyXG4gIHByaXZhdGUgZGV0YWNoID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICByZWNlaXZlZERhdGE6IHN0cmluZyA9IFwiQ2hlY2tsaXN0XCI7XHJcbiAgc2VsZWN0ZWR2YWx1ZTogYW55O1xyXG4gIG1vbnRobHlQZWZvcm1hbmNlTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbW9udGhseVBlZm9ybWFuY2VOb0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBtb250aGx5cGVyZm9ybWNlOiBzdHJpbmc7XHJcbiAgbW9udGhseVRvRGF0ZTogYW55O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBUcmF4U2VydmljZTogVHJheFNlcnZpY2UsXHJcbiAgKSB7IH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGV0YWNoLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRldGFjaC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcywpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhlYWRlckRhdGEpIHtcclxuICAgICAgdGhpcy5oZWFkZXJEYXRhO1xyXG4gICAgICB0aGlzLmdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvdXRlPy5xdWVyeVBhcmFtc1xyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSlcclxuICAgICAgLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgICAgaWYgKHBhcmFtcy50eXBlID09PSAnQ2hlY2tsaXN0Jykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZHZhbHVlID0gcGFyYW1zLmNoZWNrbGlzdFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnQ2hlY2tsaXN0JztcclxuICAgICAgICAgIC8vIHRoaXMuaW5mb0NhcmRzRGF0YSA9IHBhcmFtcy5jaGVja2xpc3REYXRhID8gSlNPTi5wYXJzZShwYXJhbXMuY2hlY2tsaXN0RGF0YSkgOiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnR5cGUgPT09ICdzdG9yZScpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWR2YWx1ZSA9IHBhcmFtcy5zdG9yZV9pZFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnU3RvcmUnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnR5cGUgPT09ICd1c2VyJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZHZhbHVlID0gcGFyYW1zLnVzZXJFbWFpbFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnVXNlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgLy8gaWYgKHRoaXMucmVjZWl2ZWREYXRhID09PSAnQ2hlY2tsaXN0Jykge1xyXG4gICAgICAgICAgLy8gICB0aGlzLmdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpO1xyXG4gICAgICAgICAgLy8gfSBlbHNlIGlmICh0aGlzLnJlY2VpdmVkRGF0YSA9PT0gJ1VzZXInKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuZ2V0TW9udGhseVBlZm9ybWFuY2VEYXRhKCk7XHJcbiAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcblxyXG5cclxuICB9XHJcblxyXG4gIGdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VOb0RhdGEgPSB0cnVlO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIC8vIHN0b3JlSWQ6IFtcclxuICAgICAgLy8gICBcIjExLTE3NDNcIixcclxuICAgICAgLy8gICBcIjExLTE3OFwiLFxyXG4gICAgICAvLyAgIFwiMTEtMTQxM1wiLFxyXG4gICAgICAvLyAgIFwiMTEtMTgzM1wiLFxyXG4gICAgICAvLyAgIFwiMTEtNjdcIixcclxuICAgICAgLy8gICBcIjExLTcwOVwiXHJcbiAgICAgIC8vIF0sXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBncm91cEJ5VHlwZTogdGhpcy5yZWNlaXZlZERhdGEsXHJcbiAgICAgIGdyb3VwQnlWYWx1ZTogdGhpcy5tb250aGx5cGVyZm9ybWNlLFxyXG4gICAgICBtb250aERhdGU6IHRoaXMubW9udGhseVRvRGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5UcmF4U2VydmljZS5nZXRNb250aGx5UGVmb3JtYW5jZURhdGEocmVxdWVzdERhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlRGF0YSA9IHJlc3BvbnNlLmRhdGE/Lm1vbnRobHlDaGFydERhdGEgfHwgW107XHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1vbnRobHlQZWZvcm1hbmNlTm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZURhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZU5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlRGF0YSA9IFtdXHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1vbnRobHlQZWZvcm1hbmNlTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREYXlzSW5Nb250aCgpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGRheXNJbk1vbnRoIH0sIChfLCBpKSA9PiBpICsgMSk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgZW1wdHkgZGF5cyB0byBhbGlnbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCB3aXRoIHRoZSBjb3JyZWN0IGRheSBvZiB0aGUgd2Vla1xyXG4gIGdldEVtcHR5RGF5cygpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgMSkuZ2V0RGF5KCk7XHJcbiAgICByZXR1cm4gQXJyYXkoZmlyc3REYXlPZk1vbnRoID09PSAwID8gNiA6IGZpcnN0RGF5T2ZNb250aCAtIDEpLmZpbGwoMCk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgdGhlIGNsYXNzIG5hbWUgZm9yIGEgZ2l2ZW4gZGF5IGJhc2VkIG9uIHRoZSBwZXJmb3JtYW5jZSBkYXRhXHJcbiAgZ2V0RGF5Q2xhc3MoZGF5OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcHJlZGVmaW5lZERheSA9IHRoaXMucGVyZm9ybWFuY2VEYXRhLmZpbmQoZCA9PiBkLmRhdGUgPT09IGRheSk7XHJcbiAgICByZXR1cm4gcHJlZGVmaW5lZERheSA/IHByZWRlZmluZWREYXkuY29sb3JDbGFzcyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gTmF2aWdhdGUgdG8gdGhlIHByZXZpb3VzIG1vbnRoXHJcbiAgcHJldmlvdXNNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IDExO1xyXG4gICAgICB0aGlzLmN1cnJlbnRZZWFyLS07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aC0tO1xyXG4gICAgfVxyXG4gICAgbGV0IGZvcm1hdHRlZE1vbnRoID0gKHRoaXMuY3VycmVudE1vbnRoICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgdGhpcy5tb250aGx5VG9EYXRlID0gYCR7dGhpcy5jdXJyZW50WWVhcn0tJHtmb3JtYXR0ZWRNb250aH0tMjVgO1xyXG4gICAgLy8gbGV0IG1vbnRobHlUb0RhdGUgPSB0aGlzLmN1cnJlbnRZZWFyK1wiLVwiKyh0aGlzLmN1cnJlbnRNb250aCAtIDEpICtcIi1cIitcIjI1XCJcclxuICAgIHRoaXMuZ2V0TW9udGhseVBlZm9ybWFuY2VEYXRhKCk7XHJcbiAgfVxyXG5cclxuICAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV4dCBtb250aFxyXG4gIG5leHRNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMTEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSAwO1xyXG4gICAgICB0aGlzLmN1cnJlbnRZZWFyKys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aCsrO1xyXG4gICAgfVxyXG4gICAgbGV0IGZvcm1hdHRlZE1vbnRoID0gKHRoaXMuY3VycmVudE1vbnRoICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgdGhpcy5tb250aGx5VG9EYXRlID0gYCR7dGhpcy5jdXJyZW50WWVhcn0tJHtmb3JtYXR0ZWRNb250aH0tMjVgO1xyXG4gICAgICAgIC8vIGxldCBtb250aGx5VG9EYXRlID0gdGhpcy5jdXJyZW50WWVhcitcIi1cIisodGhpcy5jdXJyZW50TW9udGggKyAxKSArXCItXCIrXCIyNVwiXHJcbiAgICB0aGlzLmdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNvbnRhaW5lciBwLTVcIj5cclxuICA8IS0tIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cInBlcmZvcm1hbmNlaGVhZGluZ1wiPk1vbnRobHkgUGVyZm9ybWFuY2UgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICBbbmdiVG9vbHRpcF09XCJ0b29sdGlwQ29udGVudFwiXHJcbiAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIlxyXG4gICAgdG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj5cclxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxN1wiIHZpZXdCb3g9XCIwIDAgMTYgMTdcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM3MDFfMjkxODApXCI+XHJcbiAgICAgIDxwYXRoIGQ9XCJNNy45OTg3IDExLjE2NjZWOC40OTk5Mk03Ljk5ODcgNS44MzMyNUg4LjAwNTM2TTE0LjY2NTQgOC40OTk5MkMxNC42NjU0IDEyLjE4MTggMTEuNjgwNiAxNS4xNjY2IDcuOTk4NyAxNS4xNjY2QzQuMzE2OCAxNS4xNjY2IDEuMzMyMDMgMTIuMTgxOCAxLjMzMjAzIDguNDk5OTJDMS4zMzIwMyA0LjgxODAyIDQuMzE2OCAxLjgzMzI1IDcuOTk4NyAxLjgzMzI1QzExLjY4MDYgMS44MzMyNSAxNC42NjU0IDQuODE4MDIgMTQuNjY1NCA4LjQ5OTkyWlwiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICA8L2c+XHJcbiAgICAgIDxkZWZzPlxyXG4gICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zNzAxXzI5MTgwXCI+XHJcbiAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNSlcIi8+XHJcbiAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgIDwvZGVmcz5cclxuICAgICAgPC9zdmc+XHJcbiAgPC9zcGFuPlxyXG4gIFxyXG4gIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcENvbnRlbnQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1hbmNlLWJveFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZS1pdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm51bWJlciBwcmltYXJ5OTAwXCI+MTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyZm9ybWFuY2V0ZXh0XCI+T3ZlcmFsbCBwZXJmb3JtYW5jZSA4NiB0byAxMDAlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZS1pdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm51bWJlciBibHVlMzNCNUZGXCI+Mjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyZm9ybWFuY2V0ZXh0XCI+T3ZlcmFsbCBwZXJmb3JtYW5jZSA3MSB0byA4NSU8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1hbmNlLWl0ZW1cIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibnVtYmVyIGxpZ2h0Qmx1ZTZCQ0FGRlwiPjM8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmZvcm1hbmNldGV4dFwiPk92ZXJhbGwgcGVyZm9ybWFuY2UgNTYgdG8gNzAlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZS1pdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm51bWJlciBvcmFuZ2VGNzkwMDlcIj40PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJmb3JtYW5jZXRleHRcIj5PdmVyYWxsIHBlcmZvcm1hbmNlIDQxIHRvIDU1JTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWFuY2UtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJudW1iZXIgcmVkRjA0NDM4XCI+NTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyZm9ybWFuY2V0ZXh0XCI+T3ZlcmFsbCBwZXJmb3JtYW5jZSBiZWxvdyA0MCU8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPC9kaXY+XHJcbiBcclxuICA8ZGl2ICBjbGFzcz1cImNhbGVuZGFyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyIG15LTNcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c01vbnRoKClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTIuNSAxNUw3LjUgMTBMMTIuNSA1XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4+e3sgbW9udGhOYW1lc1tjdXJyZW50TW9udGhdIH19IHt7IGN1cnJlbnRZZWFyIH19PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHRNb250aCgpXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTcuNSAxNUwxMi41IDEwTDcuNSA1XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBhZGQgbm9kYXRhIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHkgbXktNVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVBlZm9ybWFuY2VMb2FkaW5nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgbm8tc2Nyb2xsYmFyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVBlZm9ybWFuY2VOb0RhdGEgJiYgIW1vbnRobHlQZWZvcm1hbmNlTG9hZGluZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbm8tc2Nyb2xsYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBtYi02IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgTW9udGhseSBQZXJmb3JtYW5jZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgXHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhbW9udGhseVBlZm9ybWFuY2VMb2FkaW5nICYmICFtb250aGx5UGVmb3JtYW5jZU5vRGF0YVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF5LW5hbWVzXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheU5hbWVzXCI+e3sgZGF5IH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF5c1wiPlxyXG4gICAgICAgIDwhLS0gRW1wdHkgZGF5cyB0byBhbGlnbiB0aGUgc3RhcnQgb2YgdGhlIG1vbnRoIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IF8gb2YgZ2V0RW1wdHlEYXlzKClcIiBjbGFzcz1cImVtcHR5LWRheVwiPjwvZGl2PlxyXG4gICAgICAgIDwhLS0gQ2FsZW5kYXIgZGF5cyB3aXRoIGR5bmFtaWMgY29sb3IgYXNzaWdubWVudCB2aWEgQ1NTIGNsYXNzZXMgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGdldERheXNJbk1vbnRoKClcIiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJnZXREYXlDbGFzcyhkYXkpXCIgIGNsYXNzPVwic3ltYm9sLWxhYmVsXCI+XHJcbiAgICAgICAgICAgIHt7IGRheSB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgKm5nRm9yPVwibGV0IGRheSBvZiBnZXREYXlzSW5Nb250aCgpXCIgW25nQ2xhc3NdPVwiZ2V0RGF5Q2xhc3MoZGF5KVwiIGNsYXNzPVwiY2FsZW5kYXItZGF5XCI+XHJcbiAgICAgICAgICB7eyBkYXkgfX1cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPC9kaXY+XHJcbiBcclxuIFxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhseXBlcmZvcm1hbmNlLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQtaW5mby9tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlci9tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC1pbmZvL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFFakgsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQWdDLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFJdEYsQ0FBQztBQU9ELE1BQU0sT0FBTyxxQ0FBcUM7SUFrQjVCO0lBQStCO0lBQXVCO0lBQWdDO0lBQTJDO0lBQzNJO0lBbEJWLFdBQVcsR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9DLFlBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdDLFFBQVEsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hFLFVBQVUsR0FBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxF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IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tb250aGx5cGVyZm9ybWFuY2UtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vbnRobHlwZXJmb3JtYW5jZS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbW9udGhseXBlcmZvcm1hbmNlLWRhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb250aGx5cGVyZm9ybWFuY2VEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgY3VycmVudFllYXI6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcclxuICBjdXJyZW50TW9udGg6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuICBkYXlOYW1lczogc3RyaW5nW10gPSBbJ01vJywgJ1R1JywgJ1dlJywgJ1RoJywgJ0ZyJywgJ1NhJywgJ1N1J107XHJcbiAgbW9udGhOYW1lczogc3RyaW5nW10gPSBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXTtcclxuICBoZWFkZXJEYXRhOiBhbnk7XHJcblxyXG4gIHBlcmZvcm1hbmNlRGF0YTogYW55W10gPSBbXTsgLy8gVGhpcyB3aWxsIHN0b3JlIHRoZSBwZXJmb3JtYW5jZSBkYXRhIGZyb20gdGhlIEFQSSByZXNwb25zZVxyXG4gIHByaXZhdGUgZGV0YWNoID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICByZWNlaXZlZERhdGE6IHN0cmluZyA9IFwiQ2hlY2tsaXN0XCI7XHJcbiAgc2VsZWN0ZWR2YWx1ZTogYW55O1xyXG4gIG1vbnRobHlQZWZvcm1hbmNlTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbW9udGhseVBlZm9ybWFuY2VOb0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBtb250aGx5cGVyZm9ybWNlOiBzdHJpbmc7XHJcbiAgbW9udGhseVRvRGF0ZTogYW55O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBUcmF4U2VydmljZTogVHJheFNlcnZpY2UsXHJcbiAgKSB7IH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGV0YWNoLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRldGFjaC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcywpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhlYWRlckRhdGEpIHtcclxuICAgICAgdGhpcy5oZWFkZXJEYXRhO1xyXG4gICAgICB0aGlzLmdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvdXRlPy5xdWVyeVBhcmFtc1xyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSlcclxuICAgICAgLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgICAgaWYgKHBhcmFtcy50eXBlID09PSAnQ2hlY2tsaXN0Jykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZHZhbHVlID0gcGFyYW1zLmNoZWNrbGlzdFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnQ2hlY2tsaXN0JztcclxuICAgICAgICAgIC8vIHRoaXMuaW5mb0NhcmRzRGF0YSA9IHBhcmFtcy5jaGVja2xpc3REYXRhID8gSlNPTi5wYXJzZShwYXJhbXMuY2hlY2tsaXN0RGF0YSkgOiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnR5cGUgPT09ICdzdG9yZScpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWR2YWx1ZSA9IHBhcmFtcy5zdG9yZV9pZFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnU3RvcmUnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnR5cGUgPT09ICd1c2VyJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZHZhbHVlID0gcGFyYW1zLnVzZXJFbWFpbFxyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSAnVXNlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuXHJcblxyXG5cclxuICB9XHJcblxyXG4gIGdldE1vbnRobHlQZWZvcm1hbmNlRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VOb0RhdGEgPSB0cnVlO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBncm91cEJ5VHlwZTogdGhpcy5yZWNlaXZlZERhdGEsXHJcbiAgICAgIGdyb3VwQnlWYWx1ZTogdGhpcy5tb250aGx5cGVyZm9ybWNlLFxyXG4gICAgICBtb250aERhdGU6IHRoaXMubW9udGhseVRvRGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5UcmF4U2VydmljZS5nZXRNb250aGx5UGVmb3JtYW5jZURhdGEocmVxdWVzdERhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlRGF0YSA9IHJlc3BvbnNlLmRhdGE/Lm1vbnRobHlDaGFydERhdGEgfHwgW107XHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1vbnRobHlQZWZvcm1hbmNlTm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wZXJmb3JtYW5jZURhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMubW9udGhseVBlZm9ybWFuY2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZU5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnBlcmZvcm1hbmNlRGF0YSA9IFtdXHJcbiAgICAgICAgdGhpcy5tb250aGx5UGVmb3JtYW5jZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1vbnRobHlQZWZvcm1hbmNlTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREYXlzSW5Nb250aCgpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGRheXNJbk1vbnRoIH0sIChfLCBpKSA9PiBpICsgMSk7XHJcbiAgfVxyXG4gIGdldEVtcHR5RGF5cygpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBmaXJzdERheU9mTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgMSkuZ2V0RGF5KCk7XHJcbiAgICByZXR1cm4gQXJyYXkoZmlyc3REYXlPZk1vbnRoID09PSAwID8gNiA6IGZpcnN0RGF5T2ZNb250aCAtIDEpLmZpbGwoMCk7XHJcbiAgfVxyXG4gIGdldERheUNsYXNzKGRheTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHByZWRlZmluZWREYXkgPSB0aGlzLnBlcmZvcm1hbmNlRGF0YS5maW5kKGQgPT4gZC5kYXRlID09PSBkYXkpO1xyXG4gICAgcmV0dXJuIHByZWRlZmluZWREYXkgPyBwcmVkZWZpbmVkRGF5LmNvbG9yQ2xhc3MgOiAnJztcclxuICB9XHJcbiAgcHJldmlvdXNNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aCA9IDExO1xyXG4gICAgICB0aGlzLmN1cnJlbnRZZWFyLS07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb250aC0tO1xyXG4gICAgfVxyXG4gICAgbGV0IGZvcm1hdHRlZE1vbnRoID0gKHRoaXMuY3VycmVudE1vbnRoICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgdGhpcy5tb250aGx5VG9EYXRlID0gYCR7dGhpcy5jdXJyZW50WWVhcn0tJHtmb3JtYXR0ZWRNb250aH0tMjVgO1xyXG4gICAgLy8gbGV0IG1vbnRobHlUb0RhdGUgPSB0aGlzLmN1cnJlbnRZZWFyK1wiLVwiKyh0aGlzLmN1cnJlbnRNb250aCAtIDEpICtcIi1cIitcIjI1XCJcclxuICAgIHRoaXMuZ2V0TW9udGhseVBlZm9ybWFuY2VEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0TW9udGgoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50TW9udGggPT09IDExKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gMDtcclxuICAgICAgdGhpcy5jdXJyZW50WWVhcisrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50TW9udGgrKztcclxuICAgIH1cclxuICAgIGxldCBmb3JtYXR0ZWRNb250aCA9ICh0aGlzLmN1cnJlbnRNb250aCArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIHRoaXMubW9udGhseVRvRGF0ZSA9IGAke3RoaXMuY3VycmVudFllYXJ9LSR7Zm9ybWF0dGVkTW9udGh9LTI1YDtcclxuICAgICAgICAvLyBsZXQgbW9udGhseVRvRGF0ZSA9IHRoaXMuY3VycmVudFllYXIrXCItXCIrKHRoaXMuY3VycmVudE1vbnRoICsgMSkgK1wiLVwiK1wiMjVcIlxyXG4gICAgdGhpcy5nZXRNb250aGx5UGVmb3JtYW5jZURhdGEoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250YWluZXIgcC01XCI+XHJcbiAgPCEtLSB0cmlnZ2Vycz1cIm1vdXNlZW50ZXI6bW91c2VsZWF2ZVwiIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZWhlYWRpbmdcIj5Nb250aGx5IFBlcmZvcm1hbmNlIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgW25nYlRvb2x0aXBdPVwidG9vbHRpcENvbnRlbnRcIlxyXG4gICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCJcclxuICAgIHRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCI+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTdcIiB2aWV3Qm94PVwiMCAwIDE2IDE3XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zNzAxXzI5MTgwKVwiPlxyXG4gICAgICA8cGF0aCBkPVwiTTcuOTk4NyAxMS4xNjY2VjguNDk5OTJNNy45OTg3IDUuODMzMjVIOC4wMDUzNk0xNC42NjU0IDguNDk5OTJDMTQuNjY1NCAxMi4xODE4IDExLjY4MDYgMTUuMTY2NiA3Ljk5ODcgMTUuMTY2NkM0LjMxNjggMTUuMTY2NiAxLjMzMjAzIDEyLjE4MTggMS4zMzIwMyA4LjQ5OTkyQzEuMzMyMDMgNC44MTgwMiA0LjMxNjggMS44MzMyNSA3Ljk5ODcgMS44MzMyNUMxMS42ODA2IDEuODMzMjUgMTQuNjY1NCA0LjgxODAyIDE0LjY2NTQgOC40OTk5MlpcIiBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgPC9nPlxyXG4gICAgICA8ZGVmcz5cclxuICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzcwMV8yOTE4MFwiPlxyXG4gICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjUpXCIvPlxyXG4gICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICA8L2RlZnM+XHJcbiAgICAgIDwvc3ZnPlxyXG4gIDwvc3Bhbj5cclxuICBcclxuICA8bmctdGVtcGxhdGUgI3Rvb2x0aXBDb250ZW50PlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2x0aXAtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZS1ib3hcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWFuY2UtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJudW1iZXIgcHJpbWFyeTkwMFwiPjE8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmZvcm1hbmNldGV4dFwiPk92ZXJhbGwgcGVyZm9ybWFuY2UgODYgdG8gMTAwJTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWFuY2UtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJudW1iZXIgYmx1ZTMzQjVGRlwiPjI8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmZvcm1hbmNldGV4dFwiPk92ZXJhbGwgcGVyZm9ybWFuY2UgNzEgdG8gODUlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZXJmb3JtYW5jZS1pdGVtXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm51bWJlciBsaWdodEJsdWU2QkNBRkZcIj4zPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJmb3JtYW5jZXRleHRcIj5PdmVyYWxsIHBlcmZvcm1hbmNlIDU2IHRvIDcwJTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVyZm9ybWFuY2UtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJudW1iZXIgb3JhbmdlRjc5MDA5XCI+NDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyZm9ybWFuY2V0ZXh0XCI+T3ZlcmFsbCBwZXJmb3JtYW5jZSA0MSB0byA1NSU8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBlcmZvcm1hbmNlLWl0ZW1cIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibnVtYmVyIHJlZEYwNDQzOFwiPjU8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmZvcm1hbmNldGV4dFwiPk92ZXJhbGwgcGVyZm9ybWFuY2UgYmVsb3cgNDAlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwvZGl2PlxyXG4gXHJcbiAgPGRpdiAgY2xhc3M9XCJjYWxlbmRhclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlciBteS0zXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTEyLjUgMTVMNy41IDEwTDEyLjUgNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuPnt7IG1vbnRoTmFtZXNbY3VycmVudE1vbnRoXSB9fSB7eyBjdXJyZW50WWVhciB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0TW9udGgoKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk03LjUgMTVMMTIuNSAxMEw3LjUgNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gYWRkIG5vZGF0YSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5IG15LTVcIj5cclxuICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVBlZm9ybWFuY2VMb2FkaW5nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgbm8tc2Nyb2xsYmFyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9udGhseVBlZm9ybWFuY2VOb0RhdGEgJiYgIW1vbnRobHlQZWZvcm1hbmNlTG9hZGluZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbm8tc2Nyb2xsYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXktN1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBtYi02IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgTW9udGhseSBQZXJmb3JtYW5jZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgPCEtLSAqbmdJZj1cIiFtb250aGx5UGVmb3JtYW5jZUxvYWRpbmcgJiYgIW1vbnRobHlQZWZvcm1hbmNlTm9EYXRhXCIgLS0+XHJcbiAgICAgIDxkaXYgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF5LW5hbWVzXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheU5hbWVzXCI+e3sgZGF5IH19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF5c1wiPlxyXG4gICAgICAgIDwhLS0gRW1wdHkgZGF5cyB0byBhbGlnbiB0aGUgc3RhcnQgb2YgdGhlIG1vbnRoIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IF8gb2YgZ2V0RW1wdHlEYXlzKClcIiBjbGFzcz1cImVtcHR5LWRheVwiPjwvZGl2PlxyXG4gICAgICAgIDwhLS0gQ2FsZW5kYXIgZGF5cyB3aXRoIGR5bmFtaWMgY29sb3IgYXNzaWdubWVudCB2aWEgQ1NTIGNsYXNzZXMgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGdldERheXNJbk1vbnRoKClcIiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJnZXREYXlDbGFzcyhkYXkpXCIgIGNsYXNzPVwic3ltYm9sLWxhYmVsXCI+XHJcbiAgICAgICAgICAgIHt7IGRheSB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgKm5nRm9yPVwibGV0IGRheSBvZiBnZXREYXlzSW5Nb250aCgpXCIgW25nQ2xhc3NdPVwiZ2V0RGF5Q2xhc3MoZGF5KVwiIGNsYXNzPVwiY2FsZW5kYXItZGF5XCI+XHJcbiAgICAgICAgICB7eyBkYXkgfX1cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPC9kaXY+XHJcbiBcclxuIFxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|