tango-app-ui-manage-users 3.7.0-alpha.1 → 3.7.0-alpha.3
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/tango-manage-users/assign-store-popup/assign-store-popup.component.mjs +19 -17
- package/esm2022/lib/components/tango-manage-users/brand-user/brand-user.component.mjs +25 -19
- package/esm2022/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.mjs +23 -12
- package/esm2022/lib/components-v2/add-users/add-users.component.mjs +3 -3
- package/esm2022/lib/components-v2/chip-select/chip-select.component.mjs +178 -0
- package/esm2022/lib/components-v2/teams-creation/teams-creation.component.mjs +21 -9
- package/esm2022/lib/components-v2/teams-list/teams-list.component.mjs +37 -26
- package/esm2022/lib/components-v2/users-manage/users-manage.component.mjs +12 -9
- package/esm2022/lib/services-v2/manage-users.service.mjs +5 -1
- package/esm2022/lib/tango-manage-users.module.mjs +6 -3
- package/fesm2022/tango-app-ui-manage-users.mjs +314 -95
- package/fesm2022/tango-app-ui-manage-users.mjs.map +1 -1
- package/lib/components/tango-manage-users/brand-user/brand-user.component.d.ts +4 -1
- package/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.d.ts +8 -4
- package/lib/components-v2/chip-select/chip-select.component.d.ts +36 -0
- package/lib/components-v2/teams-creation/teams-creation.component.d.ts +3 -0
- package/lib/components-v2/teams-list/teams-list.component.d.ts +2 -0
- package/lib/components-v2/users-manage/users-manage.component.d.ts +3 -1
- package/lib/services-v2/manage-users.service.d.ts +2 -0
- package/lib/tango-manage-users.module.d.ts +8 -7
- package/package.json +1 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services-v2/manage-users.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/forms";
|
|
6
|
+
export class ChipSelectComponent {
|
|
7
|
+
cd;
|
|
8
|
+
authService;
|
|
9
|
+
onClick(event) {
|
|
10
|
+
const target = event.target;
|
|
11
|
+
if (!target.closest('.dropdown')) {
|
|
12
|
+
this.showDropdown = false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
items;
|
|
16
|
+
searchField;
|
|
17
|
+
multi;
|
|
18
|
+
idField;
|
|
19
|
+
selectedValues = [];
|
|
20
|
+
disabled;
|
|
21
|
+
label;
|
|
22
|
+
badgeValue;
|
|
23
|
+
searchKey;
|
|
24
|
+
selected = new EventEmitter();
|
|
25
|
+
filteredValues = [];
|
|
26
|
+
showDropdown;
|
|
27
|
+
searchValue;
|
|
28
|
+
instanceId;
|
|
29
|
+
constructor(cd, authService) {
|
|
30
|
+
this.cd = cd;
|
|
31
|
+
this.authService = authService;
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
this.instanceId = crypto.randomUUID();
|
|
35
|
+
this.authService.dropDownTrigger.subscribe((e) => {
|
|
36
|
+
if (e !== this.instanceId) {
|
|
37
|
+
this.showDropdown = false;
|
|
38
|
+
this.cd.detectChanges();
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
ngOnChanges(changes) {
|
|
43
|
+
if (changes['items'] && this.items?.length) {
|
|
44
|
+
this.initializeItems();
|
|
45
|
+
}
|
|
46
|
+
if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue)) {
|
|
47
|
+
this.updateSelectedValues();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
initializeItems() {
|
|
51
|
+
this.filteredValues = this.items.map((item) => ({ ...item }));
|
|
52
|
+
this.updateSelectedValues();
|
|
53
|
+
}
|
|
54
|
+
updateSelectedValues() {
|
|
55
|
+
this.filteredValues?.forEach((filteredItem) => {
|
|
56
|
+
filteredItem.isSelected = false;
|
|
57
|
+
});
|
|
58
|
+
this.selectedValues?.forEach((selectedItem) => {
|
|
59
|
+
const item = this.filteredValues?.find((filteredItem) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);
|
|
60
|
+
if (item) {
|
|
61
|
+
item.isSelected = true;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
openDropdown(event) {
|
|
66
|
+
this.authService.dropDownTrigger.next(this.instanceId);
|
|
67
|
+
event.stopPropagation();
|
|
68
|
+
this.showDropdown = !this.showDropdown;
|
|
69
|
+
}
|
|
70
|
+
onInput(event) {
|
|
71
|
+
if (!event.target.value) {
|
|
72
|
+
this.filteredValues = [...this.items];
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const searchTerm = event?.target?.value.toLowerCase();
|
|
76
|
+
this.filteredValues = this.items?.filter((item) => this.searchField.some(field => item[field]?.toLowerCase().includes(searchTerm.toLowerCase())));
|
|
77
|
+
// this.filteredValues = this.items?.filter((item: any) =>
|
|
78
|
+
// item[this.searchField]?.toLowerCase().includes(searchTerm)
|
|
79
|
+
// );
|
|
80
|
+
}
|
|
81
|
+
this.updateSelectedValues();
|
|
82
|
+
this.cd.detectChanges();
|
|
83
|
+
}
|
|
84
|
+
onSelect(event, item) {
|
|
85
|
+
if (this.multi) {
|
|
86
|
+
if (event.currentTarget.checked) {
|
|
87
|
+
this.selectedValues.push(item);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.selectedValues = this.selectedValues.filter((elem) => elem[this.idField] !== item[this.idField]);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.selectedValues = [{ ...item }];
|
|
95
|
+
this.filteredValues.forEach((element) => {
|
|
96
|
+
if (element[this.idField] !== item[this.idField]) {
|
|
97
|
+
element.isSelected = false;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
this.showDropdown = false;
|
|
101
|
+
}
|
|
102
|
+
const valuesToEmit = this.selectedValues.map((value) => {
|
|
103
|
+
const selectedItem = { ...value };
|
|
104
|
+
delete selectedItem.isSelected;
|
|
105
|
+
return selectedItem;
|
|
106
|
+
});
|
|
107
|
+
this.cd.detectChanges();
|
|
108
|
+
this.emitSelectedValues(valuesToEmit);
|
|
109
|
+
}
|
|
110
|
+
onSelectAll(event) {
|
|
111
|
+
const selectAll = event.currentTarget.checked;
|
|
112
|
+
this.filteredValues.forEach((item) => item.isSelected = selectAll);
|
|
113
|
+
if (selectAll) {
|
|
114
|
+
this.selectedValues = [...this.filteredValues];
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this.selectedValues = [];
|
|
118
|
+
}
|
|
119
|
+
const valuesToEmit = this.selectedValues.map((value) => {
|
|
120
|
+
const { isSelected, ...selectedItem } = value;
|
|
121
|
+
return selectedItem;
|
|
122
|
+
});
|
|
123
|
+
this.cd.detectChanges();
|
|
124
|
+
this.emitSelectedValues(valuesToEmit);
|
|
125
|
+
}
|
|
126
|
+
emitSelectedValues(values) {
|
|
127
|
+
if (this.multi) {
|
|
128
|
+
this.selected.emit(values);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
this.selected.emit(values[0]);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
checkIfAllSelected() {
|
|
135
|
+
return this.filteredValues.every((item) => item.isSelected);
|
|
136
|
+
}
|
|
137
|
+
removeBadge(data, index) {
|
|
138
|
+
// this.removed.emit([data._id])
|
|
139
|
+
this.selectedValues = this.selectedValues.reduce((acc, item) => {
|
|
140
|
+
if (item._id !== data._id) {
|
|
141
|
+
acc.push(item);
|
|
142
|
+
}
|
|
143
|
+
return acc;
|
|
144
|
+
}, []);
|
|
145
|
+
this.emitSelectedValues(this.selectedValues);
|
|
146
|
+
this.updateSelectedValues();
|
|
147
|
+
}
|
|
148
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChipSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ManageUsersService }], target: i0.ɵɵFactoryTarget.Component });
|
|
149
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ChipSelectComponent, selector: "lib-chip-select", inputs: { items: "items", searchField: "searchField", multi: "multi", idField: "idField", selectedValues: "selectedValues", disabled: "disabled", label: "label", badgeValue: "badgeValue", searchKey: "searchKey" }, outputs: { selected: "selected" }, host: { listeners: { "document:click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"chip-box\">\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 selectedValues;let i=index\">\r\n <span *ngIf=\"i <= 9\" class=\"chip\">\r\n <span class=\"me-3\">{{item?.[searchKey[0]] || item?.[searchKey[1]]}}</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 <span *ngIf=\"selectedValues?.length > 9\" class=\"chip\"> +{{selectedValues?.length - 9}}</span>\r\n <input style=\"min-height: 44px;\" type=\"text\" class=\"form-control dropdown-input ps-3 me-3\" [(ngModel)]=\"searchValue\" (click)=\"openDropdown($event)\" (input)=\"onInput($event)\" id=\"searchInput\">\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-chip dropdown\" >\r\n <!-- <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div> -->\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\">\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n <!-- {{item[searchKey[0]] || item?.[searchKey[1]]}} -->\r\n {{item[searchField[0] || item?.[searchField[1]]]}}\r\n </span> <span class=\"badge-value ms-5\">\r\n {{item[badgeValue]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.chip-box{position:relative;background-color:#fff}.chip-box .form-select{font-size:1.1rem;font-weight:600;border-radius:8px!important;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;min-height:42.5px;max-height:300px!important}.chip-box .disable-input{pointer-events:none;background-color:#f9fafb!important}.chip-box .input-chip{position:absolute;width:100%;z-index:1}.chip-box .input-chip .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.chip-box .input-chip .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.chip-box .input-chip .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.chip-box .input-chip .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.chip-box .input-chip ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.chip-box .input-chip ul .selected{background:#f9fafb}.chip-box .input-chip ul li{list-style:none;padding:10px 16px;cursor:pointer}.chip-box .input-chip ul li label{cursor:pointer}.chip-box .input-chip ul li:hover{background:#f9fafb}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{min-height:auto;max-height:100px!important;overflow:auto;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}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge-value{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
150
|
+
}
|
|
151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChipSelectComponent, decorators: [{
|
|
152
|
+
type: Component,
|
|
153
|
+
args: [{ selector: 'lib-chip-select', template: "<div class=\"chip-box\">\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 selectedValues;let i=index\">\r\n <span *ngIf=\"i <= 9\" class=\"chip\">\r\n <span class=\"me-3\">{{item?.[searchKey[0]] || item?.[searchKey[1]]}}</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 <span *ngIf=\"selectedValues?.length > 9\" class=\"chip\"> +{{selectedValues?.length - 9}}</span>\r\n <input style=\"min-height: 44px;\" type=\"text\" class=\"form-control dropdown-input ps-3 me-3\" [(ngModel)]=\"searchValue\" (click)=\"openDropdown($event)\" (input)=\"onInput($event)\" id=\"searchInput\">\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-chip dropdown\" >\r\n <!-- <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div> -->\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\">\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n <!-- {{item[searchKey[0]] || item?.[searchKey[1]]}} -->\r\n {{item[searchField[0] || item?.[searchField[1]]]}}\r\n </span> <span class=\"badge-value ms-5\">\r\n {{item[badgeValue]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.chip-box{position:relative;background-color:#fff}.chip-box .form-select{font-size:1.1rem;font-weight:600;border-radius:8px!important;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;min-height:42.5px;max-height:300px!important}.chip-box .disable-input{pointer-events:none;background-color:#f9fafb!important}.chip-box .input-chip{position:absolute;width:100%;z-index:1}.chip-box .input-chip .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.chip-box .input-chip .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.chip-box .input-chip .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.chip-box .input-chip .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.chip-box .input-chip ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.chip-box .input-chip ul .selected{background:#f9fafb}.chip-box .input-chip ul li{list-style:none;padding:10px 16px;cursor:pointer}.chip-box .input-chip ul li label{cursor:pointer}.chip-box .input-chip ul li:hover{background:#f9fafb}.outer-container{position:relative}.outer-container .form-control{padding-top:0;padding-bottom:0}.outer-container .input-container{min-height:auto;max-height:100px!important;overflow:auto;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}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge-value{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}\n"] }]
|
|
154
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ManageUsersService }], propDecorators: { onClick: [{
|
|
155
|
+
type: HostListener,
|
|
156
|
+
args: ['document:click', ['$event']]
|
|
157
|
+
}], items: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], searchField: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], multi: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], idField: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], selectedValues: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], disabled: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], label: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], badgeValue: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], searchKey: [{
|
|
174
|
+
type: Input
|
|
175
|
+
}], selected: [{
|
|
176
|
+
type: Output
|
|
177
|
+
}] } });
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXVzZXJzL3NyYy9saWIvY29tcG9uZW50cy12Mi9jaGlwLXNlbGVjdC9jaGlwLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdXNlcnMvc3JjL2xpYi9jb21wb25lbnRzLXYyL2NoaXAtc2VsZWN0L2NoaXAtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7OztBQVFuSyxNQUFNLE9BQU8sbUJBQW1CO0lBMkJSO0lBQStCO0lBeEJuRCxPQUFPLENBQUMsS0FBaUI7UUFDdkIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRVEsS0FBSyxDQUFLO0lBQ1YsV0FBVyxDQUFNO0lBQ2pCLEtBQUssQ0FBUztJQUNkLE9BQU8sQ0FBUTtJQUNmLGNBQWMsR0FBUSxFQUFFLENBQUE7SUFDeEIsUUFBUSxDQUFxQjtJQUM3QixLQUFLLENBQVE7SUFDYixVQUFVLENBQVE7SUFDbEIsU0FBUyxDQUFNO0lBRWQsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUE7SUFDNUMsY0FBYyxHQUFRLEVBQUUsQ0FBQTtJQUN4QixZQUFZLENBQVM7SUFDckIsV0FBVyxDQUFRO0lBQ25CLFVBQVUsQ0FBTTtJQUdoQixZQUFvQixFQUFxQixFQUFVLFdBQStCO1FBQTlELE9B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Q29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hbmFnZVVzZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzLXYyL21hbmFnZS11c2Vycy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoaXAtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hpcC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jaGlwLXNlbGVjdC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENoaXBTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuZHJvcGRvd24nKSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgXHJcbiAgICBASW5wdXQoKSBpdGVtczogYW55XHJcbiAgICBASW5wdXQoKSBzZWFyY2hGaWVsZDphbnlbXVxyXG4gICAgQElucHV0KCkgbXVsdGk6IGJvb2xlYW5cclxuICAgIEBJbnB1dCgpIGlkRmllbGQ6IHN0cmluZ1xyXG4gICAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZXM6IGFueSA9IFtdXHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxyXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZ1xyXG4gICAgQElucHV0KCkgYmFkZ2VWYWx1ZTogc3RyaW5nXHJcbiAgICBASW5wdXQoKSBzZWFyY2hLZXk6IGFueTtcclxuICAgXHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxyXG4gICAgZmlsdGVyZWRWYWx1ZXM6IGFueSA9IFtdXHJcbiAgICBzaG93RHJvcGRvd246IGJvb2xlYW5cclxuICAgIHNlYXJjaFZhbHVlOiBzdHJpbmdcclxuICAgIGluc3RhbmNlSWQ6IGFueTtcclxuICAgXHJcbiAgIFxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgYXV0aFNlcnZpY2U6IE1hbmFnZVVzZXJzU2VydmljZSkgeyB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5pbnN0YW5jZUlkID0gY3J5cHRvLnJhbmRvbVVVSUQoKTtcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5kcm9wRG93blRyaWdnZXIuc3Vic2NyaWJlKChlKT0+eyAgICAgICAgICAgXHJcbiAgICAgICAgaWYoZSAhPT0gdGhpcy5pbnN0YW5jZUlkKXsgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgIFxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICBcclxuICAgICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gJiYgdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplSXRlbXMoKTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWRWYWx1ZXMnXSAmJiBBcnJheS5pc0FycmF5KGNoYW5nZXNbJ3NlbGVjdGVkVmFsdWVzJ10/LmN1cnJlbnRWYWx1ZSkpIHsgICAgICAgICAgICBcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgXHJcbiAgICBpbml0aWFsaXplSXRlbXMoKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB0aGlzLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoeyAuLi5pdGVtIH0pKTtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlcygpXHJcbiAgICB9XHJcbiAgIFxyXG4gICAgdXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKSB7IFxyXG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzPy5mb3JFYWNoKChmaWx0ZXJlZEl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGZpbHRlcmVkSXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzPy5mb3JFYWNoKChzZWxlY3RlZEl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlcmVkVmFsdWVzPy5maW5kKChmaWx0ZXJlZEl0ZW06IGFueSkgPT4gZmlsdGVyZWRJdGVtPy5bdGhpcy5pZEZpZWxkXSA9PT0gc2VsZWN0ZWRJdGVtPy5bdGhpcy5pZEZpZWxkXSk7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgXHJcbiAgICBvcGVuRHJvcGRvd24oZXZlbnQ6IGFueSkge1xyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmRyb3BEb3duVHJpZ2dlci5uZXh0KHRoaXMuaW5zdGFuY2VJZClcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gIXRoaXMuc2hvd0Ryb3Bkb3duO1xyXG4gICAgfVxyXG4gICBcclxuICAgIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xyXG4gICAgICBpZiAoIWV2ZW50LnRhcmdldC52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc2VhcmNoVGVybSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuaXRlbXM/LmZpbHRlcigoaXRlbTogYW55KSA9PiBcclxuICAgICAgICAgIHRoaXMuc2VhcmNoRmllbGQuc29tZShmaWVsZCA9PiBpdGVtW2ZpZWxkXT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuaXRlbXM/LmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gICAgICAgIC8vICAgaXRlbVt0aGlzLnNlYXJjaEZpZWxkXT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlcygpO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICAgXHJcbiAgICBvblNlbGVjdChldmVudDogYW55LCBpdGVtOiBhbnkpIHsgICAgXHJcbiAgICAgIGlmICh0aGlzLm11bHRpKSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKGl0ZW0gKTsgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoKGVsZW06IGFueSkgPT4gZWxlbVt0aGlzLmlkRmllbGRdICE9PSBpdGVtW3RoaXMuaWRGaWVsZF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gW3sgLi4uaXRlbSB9XTtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XHJcbiAgICAgICAgICBpZihlbGVtZW50W3RoaXMuaWRGaWVsZF0gIT09IGl0ZW1bdGhpcy5pZEZpZWxkXSl7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuaXNTZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZTtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB2YWx1ZXNUb0VtaXQgPSB0aGlzLnNlbGVjdGVkVmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHsgLi4udmFsdWUgfTtcclxuICAgICAgICBkZWxldGUgc2VsZWN0ZWRJdGVtLmlzU2VsZWN0ZWQ7XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbTtcclxuICAgICAgfSk7XHJcbiAgIFxyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5lbWl0U2VsZWN0ZWRWYWx1ZXModmFsdWVzVG9FbWl0KTtcclxuICAgXHJcbiAgICB9XHJcbiAgIFxyXG4gICAgb25TZWxlY3RBbGwoZXZlbnQ6IGFueSkge1xyXG4gICAgICBjb25zdCBzZWxlY3RBbGwgPSBldmVudC5jdXJyZW50VGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiBpdGVtLmlzU2VsZWN0ZWQgPSBzZWxlY3RBbGwpO1xyXG4gICBcclxuICAgICAgaWYgKHNlbGVjdEFsbCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbLi4udGhpcy5maWx0ZXJlZFZhbHVlc107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgIFxyXG4gICAgICBjb25zdCB2YWx1ZXNUb0VtaXQgPSB0aGlzLnNlbGVjdGVkVmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgaXNTZWxlY3RlZCwgLi4uc2VsZWN0ZWRJdGVtIH0gPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtO1xyXG4gICAgICB9KTtcclxuICAgXHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLmVtaXRTZWxlY3RlZFZhbHVlcyh2YWx1ZXNUb0VtaXQpO1xyXG4gICAgfVxyXG4gICBcclxuICAgXHJcbiAgICBlbWl0U2VsZWN0ZWRWYWx1ZXModmFsdWVzOiBhbnlbXSkge1xyXG4gICAgICBpZiAodGhpcy5tdWx0aSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZXNbMF0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgIFxyXG4gICAgY2hlY2tJZkFsbFNlbGVjdGVkKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFZhbHVlcy5ldmVyeSgoaXRlbTogYW55KSA9PiBpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcmVtb3ZlQmFkZ2UoZGF0YTphbnksIGluZGV4OmFueSkge1xyXG4gICAgICAvLyB0aGlzLnJlbW92ZWQuZW1pdChbZGF0YS5faWRdKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlcy5yZWR1Y2UoKGFjYzogYW55W10sIGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLl9pZCAhPT0gZGF0YS5faWQpIHtcclxuICAgICAgICAgICAgYWNjLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LCBbXSk7XHJcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGVkVmFsdWVzKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKCk7XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjaGlwLWJveFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIHctMTAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBmb3JtLWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZFZhbHVlcztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpIDw9IDlcIiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57e2l0ZW0/LltzZWFyY2hLZXlbMF1dIHx8IGl0ZW0/LltzZWFyY2hLZXlbMV1dfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZUJhZGdlKGl0ZW0saSlcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRWYWx1ZXM/Lmxlbmd0aCA+IDlcIiBjbGFzcz1cImNoaXBcIj4gK3t7c2VsZWN0ZWRWYWx1ZXM/Lmxlbmd0aCAtIDl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IHBzLTMgbWUtM1wiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiAoY2xpY2spPVwib3BlbkRyb3Bkb3duKCRldmVudClcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgaWQ9XCJzZWFyY2hJbnB1dFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInNob3dEcm9wZG93biA/ICcnIDogJ2Qtbm9uZSdcIiBjbGFzcz1cImlucHV0LWNoaXAgZHJvcGRvd25cIiA+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInctMTAwIGlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgdHlwZT1cInRleHRcIj4gIFxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwic2VhcmNoLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE3XCIgdmlld0JveD1cIjAgMCAxNiAxN1wiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDE0LjVMMTEuMSAxMS42TTEyLjY2NjcgNy44MzMzM0MxMi42NjY3IDEwLjc3ODkgMTAuMjc4OSAxMy4xNjY3IDcuMzMzMzMgMTMuMTY2N0M0LjM4NzgxIDEzLjE2NjcgMiAxMC43Nzg5IDIgNy44MzMzM0MyIDQuODg3ODEgNC4zODc4MSAyLjUgNy4zMzMzMyAyLjVDMTAuMjc4OSAyLjUgMTIuNjY2NyA0Ljg4NzgxIDEyLjY2NjcgNy44MzMzM1pcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8L3N2Zz4gIFxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJtdWx0aSAmJiBmaWx0ZXJlZFZhbHVlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrXCIgZm9yPVwic2VsZWN0QWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwib25TZWxlY3RBbGwoJGV2ZW50KVwiIFtjaGVja2VkXT1cImNoZWNrSWZBbGxTZWxlY3RlZCgpXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTNcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgQWxsXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkVmFsdWVzXCIgW25nQ2xhc3NdPVwiaXRlbS5pc1NlbGVjdGVkICYmICFtdWx0aSA/ICdzZWxlY3RlZCcgOiAnJ1wiID5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIml0ZW1baWRGaWVsZF0gKyBpbnN0YW5jZUlkXCIgW25nQ2xhc3NdPVwibXVsdGkgID8gJyc6ICdwcy0wJ1wiIGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbbmdDbGFzc109XCJtdWx0aSAgPyAnJzogJ2Qtbm9uZSdcIiAoY2hhbmdlKT1cIm9uU2VsZWN0KCRldmVudCwgaXRlbSlcIiBbKG5nTW9kZWwpXT1cIml0ZW0uaXNTZWxlY3RlZFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0zXCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaXRlbVtpZEZpZWxkXSArIGluc3RhbmNlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0ge3tpdGVtW3NlYXJjaEtleVswXV0gfHwgaXRlbT8uW3NlYXJjaEtleVsxXV19fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbVtzZWFyY2hGaWVsZFswXSB8fCBpdGVtPy5bc2VhcmNoRmllbGRbMV1dXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAgPHNwYW4gY2xhc3M9XCJiYWRnZS12YWx1ZSBtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbVtiYWRnZVZhbHVlXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpICpuZ0lmPVwiIWZpbHRlcmVkVmFsdWVzPy5sZW5ndGhcIiA+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiID5ObyBkYXRhIGZvdW5kPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+ICBcclxuICAgIDwvZGl2PiAgXHJcbiAgIFxyXG48L2Rpdj4iXX0=
|