tango-app-ui-analyse-trax 3.0.0-dev → 3.3.1-alpha-task.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/esm2022/lib/components/action-centre/action-centre.component.mjs +303 -0
  2. package/esm2022/lib/components/activity-log/activity-log.component.mjs +94 -0
  3. package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +1439 -0
  4. package/esm2022/lib/components/checklist/checklist.component.mjs +252 -0
  5. package/esm2022/lib/components/checklist-configure/checklist-configure.component.mjs +1954 -0
  6. package/esm2022/lib/components/checklistlayout/checklistlayout.component.mjs +12 -0
  7. package/esm2022/lib/components/chip-dropdown/chip-dropdown.component.mjs +84 -0
  8. package/esm2022/lib/components/create-task/create-task.component.mjs +367 -0
  9. package/esm2022/lib/components/create-task/create-task.data.mjs +306 -0
  10. package/esm2022/lib/components/create-task/create-task.interface.mjs +2 -0
  11. package/esm2022/lib/components/custom-select/custom-select.component.mjs +236 -0
  12. package/esm2022/lib/components/dashboard/dashboard.component.mjs +597 -0
  13. package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +635 -0
  14. package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +172 -0
  15. package/esm2022/lib/components/dashboard-layout/dashboard-layout.component.mjs +12 -0
  16. package/esm2022/lib/components/export-gallery/export-gallery.component.mjs +119 -0
  17. package/esm2022/lib/components/flag-layout/flag-layout.component.mjs +12 -0
  18. package/esm2022/lib/components/flags/flags.component.mjs +257 -0
  19. package/esm2022/lib/components/flags/flags.interface.mjs +2 -0
  20. package/esm2022/lib/components/flags-info/flags-info.component.mjs +388 -0
  21. package/esm2022/lib/components/flags-info/flags-info.interface.mjs +2 -0
  22. package/esm2022/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.mjs +71 -0
  23. package/esm2022/lib/components/gallery/gallery.component.mjs +1181 -0
  24. package/esm2022/lib/components/group-select/group-select.component.mjs +155 -0
  25. package/esm2022/lib/components/managechecklist/managechecklist.component.mjs +172 -0
  26. package/esm2022/lib/components/multi-date-datepicker/multi-date-datepicker.component.mjs +117 -0
  27. package/esm2022/lib/components/orders/orders.component.mjs +171 -0
  28. package/esm2022/lib/components/pagination/pagination.component.mjs +62 -0
  29. package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +105 -0
  30. package/esm2022/lib/components/reports/date-picker/date-picker.component.mjs +60 -0
  31. package/esm2022/lib/components/reports/reports.component.mjs +299 -0
  32. package/esm2022/lib/components/reports/reports.interface.mjs +2 -0
  33. package/esm2022/lib/components/tango-analyse-trax/tango-analyse-trax.component.mjs +27 -6
  34. package/esm2022/lib/components/task/task.component.mjs +271 -0
  35. package/esm2022/lib/components/task-configure/task-configure.component.mjs +504 -0
  36. package/esm2022/lib/components/task-configure/task-configure.interface.mjs +2 -0
  37. package/esm2022/lib/components/task-info/task-info.component.mjs +300 -0
  38. package/esm2022/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.mjs +203 -0
  39. package/esm2022/lib/components/task-layout/task-layout.component.mjs +12 -0
  40. package/esm2022/lib/components/trax-store/trax-store.component.mjs +153 -0
  41. package/esm2022/lib/components/traxpopup/traxpopup.component.mjs +67 -0
  42. package/esm2022/lib/services/trax.service.mjs +334 -0
  43. package/esm2022/lib/tango-analyse-trax-routing.module.mjs +124 -6
  44. package/esm2022/lib/tango-analyse-trax.module.mjs +144 -9
  45. package/fesm2022/tango-app-ui-analyse-trax.mjs +11412 -21
  46. package/fesm2022/tango-app-ui-analyse-trax.mjs.map +1 -1
  47. package/lib/components/action-centre/action-centre.component.d.ts +56 -0
  48. package/lib/components/activity-log/activity-log.component.d.ts +30 -0
  49. package/lib/components/add-checklist/add-checklist.component.d.ts +99 -0
  50. package/lib/components/checklist/checklist.component.d.ts +39 -0
  51. package/lib/components/checklist-configure/checklist-configure.component.d.ts +160 -0
  52. package/lib/components/checklistlayout/checklistlayout.component.d.ts +5 -0
  53. package/lib/components/chip-dropdown/chip-dropdown.component.d.ts +24 -0
  54. package/lib/components/create-task/create-task.component.d.ts +58 -0
  55. package/lib/components/create-task/create-task.data.d.ts +244 -0
  56. package/lib/components/create-task/create-task.interface.d.ts +147 -0
  57. package/lib/components/custom-select/custom-select.component.d.ts +35 -0
  58. package/lib/components/dashboard/dashboard.component.d.ts +75 -0
  59. package/lib/components/dashboard-info/dashboard-info.component.d.ts +102 -0
  60. package/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.d.ts +40 -0
  61. package/lib/components/dashboard-layout/dashboard-layout.component.d.ts +5 -0
  62. package/lib/components/export-gallery/export-gallery.component.d.ts +33 -0
  63. package/lib/components/flag-layout/flag-layout.component.d.ts +5 -0
  64. package/lib/components/flags/flags.component.d.ts +51 -0
  65. package/lib/components/flags/flags.interface.d.ts +64 -0
  66. package/lib/components/flags-info/flags-info.component.d.ts +62 -0
  67. package/lib/components/flags-info/flags-info.interface.d.ts +212 -0
  68. package/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.d.ts +13 -0
  69. package/lib/components/gallery/gallery.component.d.ts +125 -0
  70. package/lib/components/group-select/group-select.component.d.ts +33 -0
  71. package/lib/components/managechecklist/managechecklist.component.d.ts +32 -0
  72. package/lib/components/multi-date-datepicker/multi-date-datepicker.component.d.ts +27 -0
  73. package/lib/components/orders/orders.component.d.ts +38 -0
  74. package/lib/components/pagination/pagination.component.d.ts +16 -0
  75. package/lib/components/reactive-select/reactive-select.component.d.ts +32 -0
  76. package/lib/components/reports/date-picker/date-picker.component.d.ts +23 -0
  77. package/lib/components/reports/reports.component.d.ts +55 -0
  78. package/lib/components/reports/reports.interface.d.ts +46 -0
  79. package/lib/components/tango-analyse-trax/tango-analyse-trax.component.d.ts +10 -1
  80. package/lib/components/task/task.component.d.ts +59 -0
  81. package/lib/components/task-configure/task-configure.component.d.ts +69 -0
  82. package/lib/components/task-configure/task-configure.interface.d.ts +124 -0
  83. package/lib/components/task-info/task-info.component.d.ts +68 -0
  84. package/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.d.ts +60 -0
  85. package/lib/components/task-layout/task-layout.component.d.ts +5 -0
  86. package/lib/components/trax-store/trax-store.component.d.ts +44 -0
  87. package/lib/components/traxpopup/traxpopup.component.d.ts +23 -0
  88. package/lib/services/trax.service.d.ts +107 -0
  89. package/lib/tango-analyse-trax.module.d.ts +42 -3
  90. package/package.json +1 -1
@@ -0,0 +1,12 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/router";
4
+ export class ChecklistlayoutComponent {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChecklistlayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ChecklistlayoutComponent, selector: "lib-checklistlayout", ngImport: i0, template: "<router-outlet></router-outlet>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChecklistlayoutComponent, decorators: [{
9
+ type: Component,
10
+ args: [{ selector: 'lib-checklistlayout', template: "<router-outlet></router-outlet>\r\n" }]
11
+ }] });
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0bGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvY2hlY2tsaXN0bGF5b3V0L2NoZWNrbGlzdGxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrbGlzdGxheW91dC9jaGVja2xpc3RsYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTzFDLE1BQU0sT0FBTyx3QkFBd0I7d0dBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLDJEQ1ByQyxxQ0FDQTs7NEZETWEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY2hlY2tsaXN0bGF5b3V0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tsaXN0bGF5b3V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY2hlY2tsaXN0bGF5b3V0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tsaXN0bGF5b3V0Q29tcG9uZW50IHtcclxuXHJcbn1cclxuIiwiPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG4iXX0=
@@ -0,0 +1,84 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/trax.service";
4
+ import * as i2 from "@angular/common";
5
+ export class ChipDropdownComponent {
6
+ traxService;
7
+ cd;
8
+ data;
9
+ selectedData = [];
10
+ selectedList = new EventEmitter();
11
+ showDropdown = false;
12
+ dummyData;
13
+ instanceId;
14
+ constructor(traxService, cd) {
15
+ this.traxService = traxService;
16
+ this.cd = cd;
17
+ this.instanceId = crypto.randomUUID();
18
+ this.traxService.dropdownCloseTrigger.subscribe((val) => {
19
+ if (val && this.instanceId !== val) {
20
+ this.showDropdown = false;
21
+ }
22
+ });
23
+ }
24
+ ngOnInit() {
25
+ this.selectedData = this.selectedData ? JSON.parse(JSON.stringify(this.selectedData)) : [];
26
+ }
27
+ ngOnChanges(changes) {
28
+ if (changes['data']) {
29
+ let selectedEmail = this.selectedData.map((item) => item.value);
30
+ this.data = this.data.filter((ele) => !selectedEmail.includes(ele.value));
31
+ this.dummyData = this.data ? JSON.parse(JSON.stringify(this.data)) : [];
32
+ console.log(432);
33
+ }
34
+ }
35
+ addBadge(data, index) {
36
+ this.selectedData.push(data);
37
+ this.data.splice(index, 1);
38
+ this.selectedList.emit(this.selectedData);
39
+ }
40
+ removeBadge(data, index) {
41
+ this.data.push(data);
42
+ this.selectedData.splice(index, 1);
43
+ this.selectedList.emit(this.selectedData);
44
+ }
45
+ debounceTimer = null;
46
+ findValue(event) {
47
+ if (event.target.value) {
48
+ this.showDropdown = true;
49
+ }
50
+ clearTimeout(this.debounceTimer);
51
+ this.debounceTimer = setTimeout(() => {
52
+ this.data = this.dummyData.filter((ele) => {
53
+ return ele.name.toLowerCase().includes(event.target.value.toLowerCase());
54
+ });
55
+ this.cd.detectChanges();
56
+ }, 1000);
57
+ }
58
+ toggleDropdown() {
59
+ this.showDropdown = !this.showDropdown;
60
+ this.traxService.dropdownCloseTrigger.next(this.instanceId);
61
+ }
62
+ clickOutside(event) {
63
+ const clickedInside = event.target.closest(".dropdown-close");
64
+ if (!clickedInside) {
65
+ this.showDropdown = false;
66
+ }
67
+ }
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChipDropdownComponent, deps: [{ token: i1.TraxService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
69
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ChipDropdownComponent, selector: "lib-chip-dropdown", inputs: { data: "data", selectedData: "selectedData" }, outputs: { selectedList: "selectedList" }, host: { listeners: { "document:click": "clickOutside($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\" position-relative\" (clickOutside)=\"showDropdown = false;\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div class=\"outer-container d-flex align-items-center position-relative w-100\">\r\n <div class=\"input-container form-control\">\r\n <ng-container *ngFor=\"let item of selectedData;let i=index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{item.name}}</span>\r\n <span (click)=\"removeBadge(item,i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\" type=\"text\" class=\"form-control dropdown-input\" (click)=\"toggleDropdown()\" (change)=\"findValue($event)\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"px-4 pe-3 dropdown-menu custom-dropdown-menu w-90 mt-3\" *ngIf=\"showDropdown\">\r\n <div [class]=\"data?.length > 5 ? 'h-200px overflow-auto' : 'h-auto'\">\r\n @for( element of data; track element.value; let i = $index){\r\n <div class=\"dropdown-item form-check custom-dropdown-item\" (click)=\"addBadge(element,i)\">\r\n <label class=\"form-check-label\" >{{element.name}}</label>\r\n </div>\r\n }@empty() {\r\n <div>\r\n <label class=\"form-check-label\" >No data found</label>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;display:block;box-sizing:border-box}.dropdown-item{padding:8px 12px}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.formSeach{width:95%}.storetext{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;text-transform:lowercase}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{height:100%;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChipDropdownComponent, decorators: [{
72
+ type: Component,
73
+ args: [{ selector: 'lib-chip-dropdown', template: "<div class=\" position-relative\" (clickOutside)=\"showDropdown = false;\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div class=\"outer-container d-flex align-items-center position-relative w-100\">\r\n <div class=\"input-container form-control\">\r\n <ng-container *ngFor=\"let item of selectedData;let i=index\">\r\n <span class=\"chip\">\r\n <span class=\"me-3\">{{item.name}}</span>\r\n <span (click)=\"removeBadge(item,i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\" type=\"text\" class=\"form-control dropdown-input\" (click)=\"toggleDropdown()\" (change)=\"findValue($event)\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"px-4 pe-3 dropdown-menu custom-dropdown-menu w-90 mt-3\" *ngIf=\"showDropdown\">\r\n <div [class]=\"data?.length > 5 ? 'h-200px overflow-auto' : 'h-auto'\">\r\n @for( element of data; track element.value; let i = $index){\r\n <div class=\"dropdown-item form-check custom-dropdown-item\" (click)=\"addBadge(element,i)\">\r\n <label class=\"form-check-label\" >{{element.name}}</label>\r\n </div>\r\n }@empty() {\r\n <div>\r\n <label class=\"form-check-label\" >No data found</label>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;display:block;box-sizing:border-box}.dropdown-item{padding:8px 12px}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.formSeach{width:95%}.storetext{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;text-transform:lowercase}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{height:100%;width:100%;display:flex;flex-wrap:wrap}.outer-container .input-container input{all:unset;flex:1;min-width:50px}.outer-container .input-container .chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .chip:nth-child(1){margin-left:0}\n"] }]
74
+ }], ctorParameters: () => [{ type: i1.TraxService }, { type: i0.ChangeDetectorRef }], propDecorators: { data: [{
75
+ type: Input
76
+ }], selectedData: [{
77
+ type: Input
78
+ }], selectedList: [{
79
+ type: Output
80
+ }], clickOutside: [{
81
+ type: HostListener,
82
+ args: ["document:click", ["$event"]]
83
+ }] } });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2NoaXAtZHJvcGRvd24vY2hpcC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2NoaXAtZHJvcGRvd24vY2hpcC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7OztBQVExSSxNQUFNLE9BQU8scUJBQXFCO0lBUVo7SUFBaUM7SUFQNUMsSUFBSSxDQUFLO0lBQ1QsWUFBWSxHQUFPLEVBQUUsQ0FBQztJQUNyQixZQUFZLEdBQTBCLElBQUksWUFBWSxFQUFZLENBQUM7SUFDN0UsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUM5QixTQUFTLENBQUs7SUFDZCxVQUFVLENBQU87SUFFakIsWUFBb0IsV0FBdUIsRUFBVSxFQUFvQjtRQUFyRCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQWtCO1FBQ3ZFLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBRXJDLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFDLEVBQUU7WUFDckQsSUFBRyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUM7Z0JBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO2FBQzFCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFSixDQUFDO0lB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LENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzt3R0EzRVUscUJBQXFCOzRGQUFyQixxQkFBcUIsb1BDUmxDLDZpRUFrQ007OzRGRDFCTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO2dIQUtwQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQWtFUCxZQUFZO3NCQURYLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY2hpcC1kcm9wZG93bicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoaXAtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jaGlwLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hpcERyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlc3tcclxuICBASW5wdXQoKSBkYXRhOmFueTtcclxuICBASW5wdXQoKSBzZWxlY3RlZERhdGE6YW55ID0gW107XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkTGlzdDpFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuICBzaG93RHJvcGRvd246Ym9vbGVhbiA9ICBmYWxzZTtcclxuICBkdW1teURhdGE6YW55O1xyXG4gIGluc3RhbmNlSWQ6c3RyaW5nXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJheFNlcnZpY2U6VHJheFNlcnZpY2UsIHByaXZhdGUgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWYpe1xyXG4gICAgdGhpcy5pbnN0YW5jZUlkID0gY3J5cHRvLnJhbmRvbVVVSUQoKVxyXG5cclxuICAgIHRoaXMudHJheFNlcnZpY2UuZHJvcGRvd25DbG9zZVRyaWdnZXIuc3Vic2NyaWJlKCh2YWwpPT57XHJcbiAgICAgIGlmKHZhbCAmJiB0aGlzLmluc3RhbmNlSWQgIT09IHZhbCl7XHJcbiAgICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQgeyAgXHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IHRoaXMuc2VsZWN0ZWREYXRhID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRGF0YSkpIDpbXTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmKGNoYW5nZXNbJ2RhdGEnXSkge1xyXG4gICAgICBsZXQgc2VsZWN0ZWRFbWFpbCA9IHRoaXMuc2VsZWN0ZWREYXRhLm1hcCgoaXRlbTphbnkpID0+IGl0ZW0udmFsdWUpO1xyXG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKChlbGU6YW55KSA9PiAhc2VsZWN0ZWRFbWFpbC5pbmNsdWRlcyhlbGUudmFsdWUpKVxyXG4gICAgICB0aGlzLmR1bW15RGF0YSA9IHRoaXMuZGF0YSA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSkgOiBbXTsgXHJcbiAgICAgIGNvbnNvbGUubG9nKDQzMik7XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuICBcclxuXHJcbiAgYWRkQmFkZ2UoZGF0YTphbnksaW5kZXg6YW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YS5wdXNoKGRhdGEpO1xyXG4gICAgdGhpcy5kYXRhLnNwbGljZShpbmRleCwxKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaXN0LmVtaXQodGhpcy5zZWxlY3RlZERhdGEpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQmFkZ2UoZGF0YTphbnksaW5kZXg6bnVtYmVyKSB7XHJcbiAgICB0aGlzLmRhdGEucHVzaChkYXRhKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhLnNwbGljZShpbmRleCwxKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaXN0LmVtaXQodGhpcy5zZWxlY3RlZERhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGVib3VuY2VUaW1lcjogYW55ID0gbnVsbDsgXHJcblxyXG5maW5kVmFsdWUoZXZlbnQ6IGFueSkge1xyXG4gIGlmIChldmVudC50YXJnZXQudmFsdWUpIHtcclxuICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZXIpO1xyXG5cclxuICB0aGlzLmRlYm91bmNlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIHRoaXMuZGF0YSA9IHRoaXMuZHVtbXlEYXRhLmZpbHRlcigoZWxlOiBhbnkpID0+e1xyXG4gICAgICByZXR1cm4gZWxlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSlcclxuICB9KTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgfSwgMTAwMCk7XHJcbn1cclxuXHJcbiAgdG9nZ2xlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLnNob3dEcm9wZG93biA9ICF0aGlzLnNob3dEcm9wZG93bjtcclxuICAgIHRoaXMudHJheFNlcnZpY2UuZHJvcGRvd25DbG9zZVRyaWdnZXIubmV4dCh0aGlzLmluc3RhbmNlSWQpXHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIGNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoXCIuZHJvcGRvd24tY2xvc2VcIik7XHJcbiAgICBcclxuICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xyXG4gICAgICB0aGlzLnNob3dEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiIHBvc2l0aW9uLXJlbGF0aXZlXCIgKGNsaWNrT3V0c2lkZSk9XCJzaG93RHJvcGRvd24gPSBmYWxzZTtcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jbG9zZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZERhdGE7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57e2l0ZW0ubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZUJhZGdlKGl0ZW0saSlcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJtaW4taGVpZ2h0OiA0NHB4O1wiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZHJvcGRvd24taW5wdXRcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiIChjaGFuZ2UpPVwiZmluZFZhbHVlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNCBwZS0zIGRyb3Bkb3duLW1lbnUgY3VzdG9tLWRyb3Bkb3duLW1lbnUgdy05MCBtdC0zXCIgKm5nSWY9XCJzaG93RHJvcGRvd25cIj5cclxuICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiZGF0YT8ubGVuZ3RoID4gNSA/ICdoLTIwMHB4IG92ZXJmbG93LWF1dG8nIDogJ2gtYXV0bydcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IoIGVsZW1lbnQgb2YgZGF0YTsgdHJhY2sgZWxlbWVudC52YWx1ZTsgbGV0IGkgPSAkaW5kZXgpe1xyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGZvcm0tY2hlY2sgY3VzdG9tLWRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwiYWRkQmFkZ2UoZWxlbWVudCxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgPnt7ZWxlbWVudC5uYW1lfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfUBlbXB0eSgpIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgPk5vIGRhdGEgZm91bmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=