gamma-app-controller 1.1.9 → 1.1.12
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/esm2020/lib/application-controller/application-controller.module.mjs +10 -4
- package/esm2020/lib/application-controller/application-dataset-call.service.mjs +19 -4
- package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +19 -4
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-json/create-dataset-json.component.mjs +1 -1
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.mjs +5 -5
- package/esm2020/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.mjs +6 -5
- package/esm2020/lib/application-controller/application-dataset-component/dataset-rest-api/dataset-rest-api.component.mjs +5 -5
- package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs +12 -7
- package/esm2020/lib/application-controller/application-menu-controller/application-create-menu/application-create-menu.component.mjs +25 -6
- package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +28 -7
- package/esm2020/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.mjs +50 -26
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +3 -8
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-geo-chart/gamma-geo-chart.component.mjs +154 -26
- package/esm2020/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.mjs +124 -2
- package/esm2020/lib/application-controller/support-components/dash-chart/dash-chart.component.mjs +5 -5
- package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +9 -21
- package/esm2020/lib/application-controller/support-components/dash-today-previous/dash-today-previous.component.mjs +1 -2
- package/esm2020/lib/application-controller/support-components/geo-map/geo-map.component.mjs +36 -4
- package/esm2020/lib/application-controller/support-components/single-card/single-card.component.mjs +274 -0
- package/fesm2015/gamma-app-controller.mjs +799 -169
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +795 -168
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/application-controller.module.d.ts +12 -11
- package/lib/application-controller/application-menu-controller/application-create-menu/application-create-menu.component.d.ts +1 -0
- package/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.d.ts +13 -3
- package/lib/application-controller/shared/advanced-component/gamma-geo-chart/gamma-geo-chart.component.d.ts +4 -0
- package/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.d.ts +4 -0
- package/lib/application-controller/support-components/geo-map/geo-map.component.d.ts +11 -0
- package/lib/application-controller/support-components/single-card/single-card.component.d.ts +59 -0
- package/package.json +1 -1
|
@@ -6,9 +6,10 @@ import * as i2 from "ngx-toastr";
|
|
|
6
6
|
import * as i3 from "@angular/common";
|
|
7
7
|
import * as i4 from "../../loader/loader.component";
|
|
8
8
|
export class GammSingleNumberCardComponent {
|
|
9
|
-
constructor(commonService, toastr) {
|
|
9
|
+
constructor(commonService, toastr, cdr) {
|
|
10
10
|
this.commonService = commonService;
|
|
11
11
|
this.toastr = toastr;
|
|
12
|
+
this.cdr = cdr;
|
|
12
13
|
this.isLoader = true;
|
|
13
14
|
this.colors = [
|
|
14
15
|
"text-green-500",
|
|
@@ -19,37 +20,46 @@ export class GammSingleNumberCardComponent {
|
|
|
19
20
|
];
|
|
20
21
|
}
|
|
21
22
|
set chartDataSource(value) {
|
|
22
|
-
|
|
23
|
+
this.objectdataSource = value;
|
|
24
|
+
if (!this.objectdataSource || this.objectdataSource.length === 0) {
|
|
25
|
+
this.isChartvisible = false;
|
|
23
26
|
return;
|
|
24
27
|
}
|
|
25
28
|
else {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
this.isLoader = true;
|
|
30
|
+
this.selectedColumn = value.kpiConfig?.dataConfig?.columns?.[0]?.dataField || "";
|
|
31
|
+
this.sortBy = value.kpiConfig?.dataConfig?.sortBy;
|
|
32
|
+
if (value.kpiConfig.dataSource?.length) {
|
|
33
|
+
this.page_config = value;
|
|
34
|
+
let sortedData = value.kpiConfig.dataSource;
|
|
35
|
+
if (this.sortBy?.length) {
|
|
36
|
+
let sortKey = this.sortBy[0];
|
|
37
|
+
sortedData = sortedData.sort((a, b) => moment(b[sortKey], "YYYY-MM-DD").diff(moment(a[sortKey], "YYYY-MM-DD")));
|
|
32
38
|
}
|
|
33
|
-
|
|
39
|
+
if (value.kpiConfig.formate === "daily") {
|
|
40
|
+
this.currentDateData = sortedData.length ? this.commonService.abbreviateNumber(sortedData[0][this.selectedColumn] || 0) : "0";
|
|
41
|
+
}
|
|
42
|
+
else if (value.kpiConfig.formate === "monthly") {
|
|
43
|
+
let total = sortedData.reduce((sum, item) => {
|
|
44
|
+
let value = Number(item[this.selectedColumn]) || 0;
|
|
45
|
+
return sum + value;
|
|
46
|
+
}, 0);
|
|
47
|
+
this.currentDateData = this.commonService.abbreviateNumber(total);
|
|
34
48
|
}
|
|
35
49
|
this.isLoader = false;
|
|
36
50
|
}
|
|
37
|
-
else {
|
|
38
|
-
}
|
|
39
51
|
}
|
|
40
52
|
}
|
|
41
53
|
getDynamicValue(data) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (dynamicKey) {
|
|
45
|
-
let value = data[dynamicKey];
|
|
46
|
-
const numericValue = Number(value);
|
|
47
|
-
if (!isNaN(numericValue)) {
|
|
48
|
-
return this.commonService.abbreviateNumber(numericValue);
|
|
49
|
-
}
|
|
50
|
-
return value;
|
|
54
|
+
if (!this.selectedColumn || !data.hasOwnProperty(this.selectedColumn)) {
|
|
55
|
+
return null;
|
|
51
56
|
}
|
|
52
|
-
|
|
57
|
+
let value = data[this.selectedColumn];
|
|
58
|
+
const numericValue = Number(value);
|
|
59
|
+
if (!isNaN(numericValue)) {
|
|
60
|
+
return this.commonService.abbreviateNumber(numericValue);
|
|
61
|
+
}
|
|
62
|
+
return value;
|
|
53
63
|
}
|
|
54
64
|
ngOnInit() {
|
|
55
65
|
this.randomColorClass = this.getRandomColor();
|
|
@@ -58,14 +68,28 @@ export class GammSingleNumberCardComponent {
|
|
|
58
68
|
const randomIndex = Math.floor(Math.random() * this.colors.length);
|
|
59
69
|
return this.colors[randomIndex];
|
|
60
70
|
}
|
|
71
|
+
formatNumber(value) {
|
|
72
|
+
if (value >= 1e9) {
|
|
73
|
+
return (value / 1e9).toFixed(1) + 'B';
|
|
74
|
+
}
|
|
75
|
+
else if (value >= 1e6) {
|
|
76
|
+
return (value / 1e6).toFixed(1) + 'M';
|
|
77
|
+
}
|
|
78
|
+
else if (value >= 1e3) {
|
|
79
|
+
return (value / 1e3).toFixed(1) + 'K';
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return value.toString();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
61
85
|
}
|
|
62
|
-
GammSingleNumberCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammSingleNumberCardComponent, deps: [{ token: i1.CommonService }, { token: i2.ToastrService }], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
-
GammSingleNumberCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GammSingleNumberCardComponent, selector: "app-gamm-single-number-card", inputs: { chartDataSource: "chartDataSource" }, ngImport: i0, template: "<div class=\"flex flex-row justify-center items-start bg-gray-800 p-4 mx-2 text-center\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"flex justify-center items-center text-4xl font-bold p-2 {{randomColorClass}}\">\n {{
|
|
86
|
+
GammSingleNumberCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammSingleNumberCardComponent, deps: [{ token: i1.CommonService }, { token: i2.ToastrService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
87
|
+
GammSingleNumberCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GammSingleNumberCardComponent, selector: "app-gamm-single-number-card", inputs: { chartDataSource: "chartDataSource" }, ngImport: i0, template: "<div class=\"flex flex-row justify-center items-start bg-gray-800 p-4 mx-2 text-center\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"flex justify-center items-center text-4xl font-bold p-2 {{randomColorClass}}\">\n {{ currentDateData }}\n </div>\n </ng-container>\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.LoaderComponent, selector: "app-loader" }] });
|
|
64
88
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammSingleNumberCardComponent, decorators: [{
|
|
65
89
|
type: Component,
|
|
66
|
-
args: [{ selector: 'app-gamm-single-number-card', template: "<div class=\"flex flex-row justify-center items-start bg-gray-800 p-4 mx-2 text-center\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"flex justify-center items-center text-4xl font-bold p-2 {{randomColorClass}}\">\n {{
|
|
67
|
-
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.ToastrService }]; }, propDecorators: { chartDataSource: [{
|
|
90
|
+
args: [{ selector: 'app-gamm-single-number-card', template: "<div class=\"flex flex-row justify-center items-start bg-gray-800 p-4 mx-2 text-center\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"flex justify-center items-center text-4xl font-bold p-2 {{randomColorClass}}\">\n {{ currentDateData }}\n </div>\n </ng-container>\n\n</div>" }]
|
|
91
|
+
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.ToastrService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { chartDataSource: [{
|
|
68
92
|
type: Input,
|
|
69
93
|
args: ['chartDataSource']
|
|
70
94
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbS1zaW5nbGUtbnVtYmVyLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbS1zaW5nbGUtbnVtYmVyLWNhcmQvZ2FtbS1zaW5nbGUtbnVtYmVyLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbS1zaW5nbGUtbnVtYmVyLWNhcmQvZ2FtbS1zaW5nbGUtbnVtYmVyLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUFROUMsTUFBTSxPQUFPLDZCQUE2QjtJQXFCeEMsWUFDUyxhQUE0QixFQUMzQixNQUFxQixFQUNyQixHQUFzQjtRQUZ2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBYmhDLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFekIsV0FBTSxHQUFHO1lBQ1AsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGlCQUFpQjtTQUNsQixDQUFDO0lBT0UsQ0FBQztJQUVMLElBQ0ksZUFBZSxDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5QixJQUFJLENBQUMsSUFB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QixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBSUQsY0FBYztRQUNaLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBSztRQUNoQixJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUU7WUFDaEIsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3ZDO2FBQU0sSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUN2QzthQUFNLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRTtZQUN2QixPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDdkM7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7MEhBNUdVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLG1IQ1YxQywwWkFVTTsyRkRBTyw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0UsNkJBQTZCO2dLQWlDbkMsZUFBZTtzQkFEbEIsS0FBSzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgbW9tZW50IGZyb20gJy4vLi4vLi4vLi4vbW9tZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWdhbW0tc2luZ2xlLW51bWJlci1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbW0tc2luZ2xlLW51bWJlci1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2FtbS1zaW5nbGUtbnVtYmVyLWNhcmQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHYW1tU2luZ2xlTnVtYmVyQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIG9iamVjdGRhdGFTb3VyY2U6IGFueTtcbiAgaXNDaGFydHZpc2libGU6IGJvb2xlYW47XG4gIHBhZ2VfY29uZmlnOiBhbnk7XG4gIGN1cnJlbnREYXRlRGF0YTogYW55O1xuICBwcmV2b3VzRGF5c0RhdGE6IGFueTtcbiAgY2FsY3VsYXRlZFZhbHVlOiBhbnk7XG4gIGlzUHJldmlvdXNEYXk6IGJvb2xlYW47XG4gIHNvcnRCeTogYW55O1xuICBzZWxlY3RlZENvbHVtbjogYW55O1xuICBzdWJzY3JpYmVyX2NvdW50O1xuICBpc0xvYWRlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29sb3JzID0gW1xuICAgIFwidGV4dC1ncmVlbi01MDBcIixcbiAgICBcInRleHQtb3JhbmdlLTUwMFwiLFxuICAgIFwidGV4dC1ibHVlLTUwMFwiLFxuICAgIFwidGV4dC1wdXJwbGUtNTAwXCIsXG4gICAgXCJ0ZXh0LXllbGxvdy01MDBcIlxuICBdO1xuICByYW5kb21Db2xvckNsYXNzOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBcbiAgKSB7IH1cblxuICBASW5wdXQoJ2NoYXJ0RGF0YVNvdXJjZScpXG4gIHNldCBjaGFydERhdGFTb3VyY2UodmFsdWUpIHtcbiAgICB0aGlzLm9iamVjdGRhdGFTb3VyY2UgPSB2YWx1ZTtcbiAgXG4gICAgaWYgKCF0aGlzLm9iamVjdGRhdGFTb3VyY2UgfHwgdGhpcy5vYmplY3RkYXRhU291cmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5pc0NoYXJ0dmlzaWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW4gPSB2YWx1ZS5rcGlDb25maWc/LmRhdGFDb25maWc/LmNvbHVtbnM/LlswXT8uZGF0YUZpZWxkIHx8IFwiXCI7XG4gICAgICB0aGlzLnNvcnRCeSA9IHZhbHVlLmtwaUNvbmZpZz8uZGF0YUNvbmZpZz8uc29ydEJ5O1xuICBcbiAgICAgIGlmICh2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZT8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucGFnZV9jb25maWcgPSB2YWx1ZTtcbiAgICAgICAgbGV0IHNvcnRlZERhdGEgPSB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZTtcbiAgXG4gICAgICAgIGlmICh0aGlzLnNvcnRCeT8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IHNvcnRLZXkgPSB0aGlzLnNvcnRCeVswXTtcbiAgICAgICAgICBzb3J0ZWREYXRhID0gc29ydGVkRGF0YS5zb3J0KChhLCBiKSA9PiBcbiAgICAgICAgICAgIG1vbWVudChiW3NvcnRLZXldLCBcIllZWVktTU0tRERcIikuZGlmZihtb21lbnQoYVtzb3J0S2V5XSwgXCJZWVlZLU1NLUREXCIpKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgXG4gICAgICAgIGlmICh2YWx1ZS5rcGlDb25maWcuZm9ybWF0ZSA9PT0gXCJkYWlseVwiKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50RGF0ZURhdGEgPSBzb3J0ZWREYXRhLmxlbmd0aCA/IHRoaXMuY29tbW9uU2VydmljZS5hYmJyZXZpYXRlTnVtYmVyKHNvcnRlZERhdGFbMF1bdGhpcy5zZWxlY3RlZENvbHVtbl0gfHwgMCkgOiBcIjBcIjtcblxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLmtwaUNvbmZpZy5mb3JtYXRlID09PSBcIm1vbnRobHlcIikge1xuICAgICAgICAgIGxldCB0b3RhbCA9IHNvcnRlZERhdGEucmVkdWNlKChzdW0sIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IE51bWJlcihpdGVtW3RoaXMuc2VsZWN0ZWRDb2x1bW5dKSB8fCAwO1xuICAgICAgICAgICAgcmV0dXJuIHN1bSArIHZhbHVlO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICAgIHRoaXMuY3VycmVudERhdGVEYXRhID0gdGhpcy5jb21tb25TZXJ2aWNlLmFiYnJldmlhdGVOdW1iZXIodG90YWwpO1xuICAgICAgICB9XG4gICAgXG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgXG4gICAgfVxuICB9XG4gIFxuICAgICAgXG5cbmdldER5bmFtaWNWYWx1ZShkYXRhOiBhbnkpOiBudW1iZXIgfCBzdHJpbmcgfCBhbnkge1xuXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkQ29sdW1uIHx8ICFkYXRhLmhhc093blByb3BlcnR5KHRoaXMuc2VsZWN0ZWRDb2x1bW4pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBkYXRhW3RoaXMuc2VsZWN0ZWRDb2x1bW5dO1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gICAgaWYgKCFpc05hTihudW1lcmljVmFsdWUpKSB7XG4gICAgICAvLyBsZXQgY2FsX251bWJlciA9IE1hdGguYWJzKG51bWVyaWNWYWx1ZSlcbiAgICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2UuYWJicmV2aWF0ZU51bWJlcihudW1lcmljVmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmFuZG9tQ29sb3JDbGFzcyA9IHRoaXMuZ2V0UmFuZG9tQ29sb3IoKTtcbiAgfVxuXG5cblxuICBnZXRSYW5kb21Db2xvcigpIHtcbiAgICBjb25zdCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMuY29sb3JzLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMuY29sb3JzW3JhbmRvbUluZGV4XTtcbiAgfVxuXG4gIGZvcm1hdE51bWJlcih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA+PSAxZTkpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTkpLnRvRml4ZWQoMSkgKyAnQic7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxZTYpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTYpLnRvRml4ZWQoMSkgKyAnTSc7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxZTMpIHtcbiAgICAgIHJldHVybiAodmFsdWUgLyAxZTMpLnRvRml4ZWQoMSkgKyAnSyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNlbnRlciBpdGVtcy1zdGFydCBiZy1ncmF5LTgwMCBwLTQgbXgtMiB0ZXh0LWNlbnRlclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRlclwiPlxuICAgICAgICA8YXBwLWxvYWRlcj48L2FwcC1sb2FkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdGV4dC00eGwgZm9udC1ib2xkIHAtMiB7e3JhbmRvbUNvbG9yQ2xhc3N9fVwiPlxuICAgICAgICAgICAge3sgY3VycmVudERhdGVEYXRhIH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG48L2Rpdj4iXX0=
|