nuxeo-development-framework 5.7.6 → 5.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/nuxeo-development-framework.umd.js +41 -25
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +37 -24
- package/esm2015/lib/components/dynamic-form/components/form-wrappers/user-selector-wrapper/user-selector-wrapper.component.js +1 -1
- package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +1 -1
- package/fesm2015/nuxeo-development-framework.js +37 -24
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.d.ts +5 -3
- package/package.json +1 -1
|
@@ -68,6 +68,9 @@ export class DynamicFormSelectUsersComponent {
|
|
|
68
68
|
/*Empty*/
|
|
69
69
|
};
|
|
70
70
|
this.pageIndex = 0;
|
|
71
|
+
this.fetchUsersByCustomApi = false;
|
|
72
|
+
this.onSearch = new EventEmitter();
|
|
73
|
+
this.searchFn = (term, item) => true;
|
|
71
74
|
if (this.control) {
|
|
72
75
|
this.control.valueAccessor = this;
|
|
73
76
|
}
|
|
@@ -82,6 +85,17 @@ export class DynamicFormSelectUsersComponent {
|
|
|
82
85
|
const { dirty, touched } = this.control;
|
|
83
86
|
return this.invalid ? dirty || touched : false;
|
|
84
87
|
}
|
|
88
|
+
set fetchedUsers(res) {
|
|
89
|
+
this.loading = true;
|
|
90
|
+
let newData = this.constructUserArray(res, 'id');
|
|
91
|
+
this.data = this.data.concat(newData);
|
|
92
|
+
this.isNextPageAvailable = false;
|
|
93
|
+
this.buffer = (this.data || []).slice(0, this.bufferSize);
|
|
94
|
+
this.buffer.map((item) => {
|
|
95
|
+
item.isSelected = false;
|
|
96
|
+
});
|
|
97
|
+
this.loading = false;
|
|
98
|
+
}
|
|
85
99
|
emitSelection(event) {
|
|
86
100
|
if (this.multiple) {
|
|
87
101
|
this.selectionstrg = `${this.selection.length} ${this.suffix}`;
|
|
@@ -112,12 +126,21 @@ export class DynamicFormSelectUsersComponent {
|
|
|
112
126
|
}
|
|
113
127
|
}
|
|
114
128
|
ngOnInit() {
|
|
129
|
+
var _a;
|
|
115
130
|
this.allUsers = this.deptTitle === 'all' ? true : false;
|
|
116
|
-
this.selection = (this.multiple ? [] : undefined);
|
|
117
|
-
if (this.
|
|
118
|
-
this.
|
|
131
|
+
this.selection = (_a = this.selection) !== null && _a !== void 0 ? _a : (this.multiple ? [] : undefined);
|
|
132
|
+
if (!this.fetchUsersByCustomApi) {
|
|
133
|
+
if (this.allUsers) {
|
|
134
|
+
this.loadUsers();
|
|
135
|
+
}
|
|
136
|
+
this.getDepartments();
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
this.searchFn = (term, item) => {
|
|
140
|
+
const fullName = `${item.properties.firstName} ${item.properties.lastName}`.toLowerCase();
|
|
141
|
+
return fullName.includes(term.toLowerCase());
|
|
142
|
+
};
|
|
119
143
|
}
|
|
120
|
-
this.getDepartments();
|
|
121
144
|
this.translation.isArabic.subscribe((ar) => {
|
|
122
145
|
this.isArabic = ar;
|
|
123
146
|
ar
|
|
@@ -206,13 +229,12 @@ export class DynamicFormSelectUsersComponent {
|
|
|
206
229
|
}
|
|
207
230
|
writeValue(value) {
|
|
208
231
|
if (value) {
|
|
209
|
-
this.
|
|
232
|
+
this.selection = value;
|
|
210
233
|
if (this.multiple) {
|
|
211
|
-
this.selectionstrg = `${this.
|
|
234
|
+
this.selectionstrg = `${this.selection.length} ${this.suffix}`;
|
|
212
235
|
}
|
|
213
236
|
}
|
|
214
237
|
else {
|
|
215
|
-
this.writedValue = null;
|
|
216
238
|
this.selection = null;
|
|
217
239
|
this.selectionstrg = null;
|
|
218
240
|
}
|
|
@@ -258,23 +280,8 @@ export class DynamicFormSelectUsersComponent {
|
|
|
258
280
|
ConstructedData = this.insertFUllName(data);
|
|
259
281
|
}
|
|
260
282
|
ConstructedData = this.filterUsers(data, filterValue);
|
|
261
|
-
// Due to not using bindValue, we need to hold the selected value as the full user object, not just the username
|
|
262
|
-
if (this.writedValue) {
|
|
263
|
-
this.handleWrittedValue(ConstructedData);
|
|
264
|
-
}
|
|
265
283
|
return ConstructedData;
|
|
266
284
|
}
|
|
267
|
-
handleWrittedValue(users) {
|
|
268
|
-
const userId = (value) => {
|
|
269
|
-
return (typeof (value) === 'string') ? value : value.id;
|
|
270
|
-
};
|
|
271
|
-
this.selection = (this.multiple) ? users.filter(user => this.writedValue.some(value => user.properties.username === userId(value)))
|
|
272
|
-
: users.filter(user => user.properties.username === userId(this.writedValue))[0];
|
|
273
|
-
if (this.selection) {
|
|
274
|
-
this.writedValue = null;
|
|
275
|
-
this.emitSelection(this.selection);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
285
|
insertFUllName(data) {
|
|
279
286
|
return data.map((user) => {
|
|
280
287
|
var _a, _b;
|
|
@@ -299,7 +306,7 @@ export class DynamicFormSelectUsersComponent {
|
|
|
299
306
|
}
|
|
300
307
|
}
|
|
301
308
|
DynamicFormSelectUsersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicFormSelectUsersComponent, deps: [{ token: i1.UsersInDepartmentsApiService }, { token: i2.TranslateService }, { token: i3.TranslationService }, { token: i4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
302
|
-
DynamicFormSelectUsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicFormSelectUsersComponent, selector: "cts-dynamic-form-select-users", inputs: { deptTitle: "deptTitle", groupName: "groupName", label: "label", bindValue: "bindValue", bindLabel: "bindLabel", arabicBindLabel: "arabicBindLabel", placeholder: "placeholder", multiple: "multiple", searchable: "searchable", closeOnSelect: "closeOnSelect", hideSelectedItems: "hideSelectedItems", preSelectedValues: "preSelectedValues", usePreSelectedValue: "usePreSelectedValue", disabled: "disabled", filter: "filter", useArabicName: "useArabicName" }, outputs: { onSelectItems: "onSelectItems" }, viewQueries: [{ propertyName: "ngSelectComponent", first: true, predicate: ["ngSelectComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"label\">\r\n\t<div>\r\n\t\t<label class=\"select-label\"\r\n\t\t\t>{{ label | translate }}<span *ngIf=\"isRequired()\" class=\"text-danger mx-1\">*</span></label\r\n\t\t>\r\n\t</div>\r\n</ng-container>\r\n<div class=\"user-select\" [ngClass]=\"{ 'multiple-wrapper': multiple }\" SetRtl>\r\n\t<ng-select\r\n\t\t#ngSelectComponent\r\n\t\t[items]=\"buffer\"\r\n\t\t[bindLabel]=\"useArabicName ? (isArabic ? arabicBindLabel : bindLabel) : bindLabel\"\r\n\t\t[placeholder]=\"multiple && selection && selection.length > 0 ? selectionstrg : placeholder\"\r\n\t\t[multiple]=\"multiple\"\r\n\t\t[searchable]=\"searchable\"\r\n\t\t[closeOnSelect]=\"closeOnSelect\"\r\n\t\t[hideSelected]=\"hideSelectedItems\"\r\n\t\t[loading]=\"loading\"\r\n\t\t(scrollToEnd)=\"onScrollToEnd()\"\r\n\t\t[disabled]=\"disabled\"\r\n\t\t[typeahead]=\"userNameInput$\"\r\n\t\t[compareWith]=\"compareFn\"\r\n\t\t[(ngModel)]=\"selection\"\r\n\t\t(change)=\"emitSelection($event)\"\r\n\t>\r\n\t\t<ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\" *ngIf=\"!loading\">\r\n\t\t\t<span style=\"display: flex; align-items: center; column-gap: 4px; font-size: 16px\">\r\n\t\t\t\t<div style=\"width: 30px; height: 30px\">\r\n\t\t\t\t\t<cts-avatar [user]=\"item\"></cts-avatar>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"user-name\">\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\titem?.id === 'system'\r\n\t\t\t\t\t\t\t? ('SYSTEM_ADMIN' | translate)\r\n\t\t\t\t\t\t\t: useArabicName\r\n\t\t\t\t\t\t\t? isArabic\r\n\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t: item?.properties?.firstName + ' ' + item?.properties?.lastName\r\n\t\t\t\t\t}}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\">\u00D7</span>\r\n\t\t\t\t</div>\r\n\t\t\t</span>\r\n\t\t</ng-template>\r\n\r\n\t\t<ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n\t\t\t<span style=\"display: flex; align-items: center; column-gap: 4px; font-size: 16px\">\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t*ngIf=\"multiple\"\r\n\t\t\t\t\tid=\"item-{{ index }}\"\r\n\t\t\t\t\t[ngModel]=\"item$.selected\"\r\n\t\t\t\t\t(click)=\"(false)\"\r\n\t\t\t\t></mat-checkbox>\r\n\t\t\t\t<div style=\"width: 30px; height: 30px\">\r\n\t\t\t\t\t<cts-avatar [user]=\"item\"></cts-avatar>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\titem?.id === 'system'\r\n\t\t\t\t\t\t\t? ('SYSTEM_ADMIN' | translate)\r\n\t\t\t\t\t\t\t: useArabicName\r\n\t\t\t\t\t\t\t? isArabic\r\n\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t: item?.properties?.firstName + ' ' + item?.properties?.lastName\r\n\t\t\t\t\t}}\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div></div>\r\n\t\t\t</span>\r\n\t\t</ng-template>\r\n\t</ng-select>\r\n</div>\r\n<mat-error [attr.data-automation-id]=\"'card-textitem-error-'\" class=\"app-textitem-editable-error\" *ngIf=\"hasErrors()\">\r\n\t<ul>\r\n\t\t<li *ngIf=\"control.errors.required\">\r\n\t\t\t{{ 'VALIDATORS.REQUIRED' | translate }}\r\n\t\t</li>\r\n\t</ul>\r\n</mat-error>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.select-label{color:#8f98aa;font-size:12px;margin-bottom:0}.user-select .ng-select-container{border:1px solid #ccc!important;border-radius:5px!important;background-color:#8f98aa1a!important}.user-select .ng-select-container .ng-value-container{padding:5px 7px 0!important}.user-select .ng-select-container .ng-value-container .ng-placeholder{padding:0 5px;font-size:12px}.user-select .ng-select-container .ng-value-container .ng-value{color:#495057}.user-select .ng-select-container .ng-arrow-wrapper{padding:0 20px}.user-select .ng-select-container .ng-input{left:10px;right:10px;width:auto}.user-select .mat-checkbox-ripple .mat-ripple-element,.user-select .mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#33e3b7!important}.user-select .mat-checkbox-ripple .mat-ripple-element{position:fixed;left:inherit;top:inherit;transform:translate(-3px,-3px)!important}.user-select mat-checkbox .mat-checkbox-background{background-color:#d9dce2!important}.multiple-wrapper .ng-select-container{overflow:visible!important}.multiple-wrapper .ng-select-container.ng-has-value{margin-bottom:65px}.multiple-wrapper .ng-select-container .ng-value-container{position:absolute;top:40px;width:100%;max-height:65px;overflow-y:auto}.multiple-wrapper .ng-select-container .ng-value-container .ng-placeholder{display:block;position:absolute;top:-26px!important}.multiple-wrapper .ng-select-container .ng-value-container .ng-value{padding:5px 10px}.multiple-wrapper .ng-select-container .ng-value-container .ng-value .user-name{font-size:12px}.multiple-wrapper .ng-select-container .ng-value-container .ng-input{position:absolute;top:-35px!important}.multiple-wrapper .ng-select-container .ng-clear-wrapper{display:none}.multiple-wrapper .ng-select-container .ng-arrow-wrapper{position:absolute;right:5px}.multiple-wrapper .ng-select-filtered .ng-value-container .ng-placeholder{display:none!important}.multiple-wrapper.rtl .ng-select-container .ng-value-container .ng-value{padding:5px 10px}.multiple-wrapper.rtl .ng-select-container .ng-value-container .ng-value .ng-value-icon{border-left:none!important;border-right:1px solid #b8dbff}.multiple-wrapper.rtl .ng-select-container .ng-arrow-wrapper{left:5px;right:auto}.ng-select-disabled .ng-select-container{background-color:#e9ecef!important}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper{position:relative}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper input{visibility:hidden;width:20px;height:20px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper{position:absolute;top:0px;left:0px;width:20px;height:20px;border:1px solid #2e62df;display:flex;justify-content:center;align-items:center}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper .icon{color:#2e62df;display:none;justify-content:center;align-items:center;font-weight:bold}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .check-box-wrapper .icon-wrapper .icon{display:flex}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .label-wrapper{color:#2e62df}.ng-select .ng-select-focused:not(.ng-select-opened) .ng-select-container{border-color:#ccc;box-shadow:none}\n"], components: [{ type: i5.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: i6.AvatarComponent, selector: "cts-avatar", inputs: ["user"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.SetRtlDirective, selector: "[SetRtl]" }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.ɵh, selector: "[ng-label-tmp]" }, { type: i5.ɵf, selector: "[ng-option-tmp]" }, { type: i10.MatError, selector: "mat-error", inputs: ["id"] }], pipes: { "translate": i2.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
309
|
+
DynamicFormSelectUsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicFormSelectUsersComponent, selector: "cts-dynamic-form-select-users", inputs: { deptTitle: "deptTitle", groupName: "groupName", label: "label", bindValue: "bindValue", bindLabel: "bindLabel", arabicBindLabel: "arabicBindLabel", placeholder: "placeholder", multiple: "multiple", searchable: "searchable", closeOnSelect: "closeOnSelect", hideSelectedItems: "hideSelectedItems", preSelectedValues: "preSelectedValues", usePreSelectedValue: "usePreSelectedValue", disabled: "disabled", filter: "filter", useArabicName: "useArabicName", fetchUsersByCustomApi: "fetchUsersByCustomApi", fetchedUsers: "fetchedUsers" }, outputs: { onSelectItems: "onSelectItems", onSearch: "onSearch" }, viewQueries: [{ propertyName: "ngSelectComponent", first: true, predicate: ["ngSelectComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"label\">\r\n\t<div>\r\n\t\t<label class=\"select-label\"\r\n\t\t\t>{{ label | translate }}<span *ngIf=\"isRequired()\" class=\"text-danger mx-1\">*</span></label\r\n\t\t>\r\n\t</div>\r\n</ng-container>\r\n<div class=\"user-select\" [ngClass]=\"{ 'multiple-wrapper': multiple }\" SetRtl>\r\n\t<ng-select\r\n\t\t#ngSelectComponent\r\n\t\t[items]=\"buffer\"\r\n\t\t[bindLabel]=\"useArabicName ? (isArabic ? arabicBindLabel : bindLabel) : bindLabel\"\r\n\t\t[placeholder]=\"multiple && selection && selection.length > 0 ? selectionstrg : placeholder\"\r\n\t\t[multiple]=\"multiple\"\r\n\t\t[searchable]=\"searchable\"\r\n\t\t[closeOnSelect]=\"closeOnSelect\"\r\n\t\t[hideSelected]=\"hideSelectedItems\"\r\n\t\t[loading]=\"loading\"\r\n\t\t(scrollToEnd)=\"onScrollToEnd()\"\r\n\t\t[disabled]=\"disabled\"\r\n\t\t[typeahead]=\"userNameInput$\"\r\n\t\t[compareWith]=\"compareFn\"\r\n\t\t[(ngModel)]=\"selection\"\r\n\t\t[searchFn]=\"searchFn\"\r\n\t\t(change)=\"emitSelection($event)\"\r\n\t>\r\n\t\t<ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\" *ngIf=\"!loading\">\r\n\t\t\t<span style=\"display: flex; align-items: center; column-gap: 4px; font-size: 16px\">\r\n\t\t\t\t<div style=\"width: 30px; height: 30px\">\r\n\t\t\t\t\t<cts-avatar [user]=\"item\"></cts-avatar>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"user-name\">\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\titem?.id === 'system'\r\n\t\t\t\t\t\t\t? ('SYSTEM_ADMIN' | translate)\r\n\t\t\t\t\t\t\t: useArabicName\r\n\t\t\t\t\t\t\t? isArabic\r\n\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t: item?.properties?.firstName + ' ' + item?.properties?.lastName\r\n\t\t\t\t\t}}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\">\u00D7</span>\r\n\t\t\t\t</div>\r\n\t\t\t</span>\r\n\t\t</ng-template>\r\n\r\n\t\t<ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n\t\t\t<span style=\"display: flex; align-items: center; column-gap: 4px; font-size: 16px\">\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t*ngIf=\"multiple\"\r\n\t\t\t\t\tid=\"item-{{ index }}\"\r\n\t\t\t\t\t[ngModel]=\"item$.selected\"\r\n\t\t\t\t\t(click)=\"(false)\"\r\n\t\t\t\t></mat-checkbox>\r\n\t\t\t\t<div style=\"width: 30px; height: 30px\">\r\n\t\t\t\t\t<cts-avatar [user]=\"item\"></cts-avatar>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\titem?.id === 'system'\r\n\t\t\t\t\t\t\t? ('SYSTEM_ADMIN' | translate)\r\n\t\t\t\t\t\t\t: useArabicName\r\n\t\t\t\t\t\t\t? isArabic\r\n\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t: item?.properties?.firstName + ' ' + item?.properties?.lastName\r\n\t\t\t\t\t}}\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div></div>\r\n\t\t\t</span>\r\n\t\t</ng-template>\r\n\t</ng-select>\r\n</div>\r\n<mat-error [attr.data-automation-id]=\"'card-textitem-error-'\" class=\"app-textitem-editable-error\" *ngIf=\"hasErrors()\">\r\n\t<ul>\r\n\t\t<li *ngIf=\"control.errors.required\">\r\n\t\t\t{{ 'VALIDATORS.REQUIRED' | translate }}\r\n\t\t</li>\r\n\t</ul>\r\n</mat-error>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.select-label{color:#8f98aa;font-size:12px;margin-bottom:0}.user-select .ng-select-container{border:1px solid #ccc!important;border-radius:5px!important;background-color:#8f98aa1a!important}.user-select .ng-select-container .ng-value-container{padding:5px 7px 0!important}.user-select .ng-select-container .ng-value-container .ng-placeholder{padding:0 5px;font-size:12px}.user-select .ng-select-container .ng-value-container .ng-value{color:#495057}.user-select .ng-select-container .ng-arrow-wrapper{padding:0 20px}.user-select .ng-select-container .ng-input{left:10px;right:10px;width:auto}.user-select .mat-checkbox-ripple .mat-ripple-element,.user-select .mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#33e3b7!important}.user-select .mat-checkbox-ripple .mat-ripple-element{position:fixed;left:inherit;top:inherit;transform:translate(-3px,-3px)!important}.user-select mat-checkbox .mat-checkbox-background{background-color:#d9dce2!important}.multiple-wrapper .ng-select-container{overflow:visible!important}.multiple-wrapper .ng-select-container.ng-has-value{margin-bottom:65px}.multiple-wrapper .ng-select-container .ng-value-container{position:absolute;top:40px;width:100%;max-height:65px;overflow-y:auto}.multiple-wrapper .ng-select-container .ng-value-container .ng-placeholder{display:block;position:absolute;top:-26px!important}.multiple-wrapper .ng-select-container .ng-value-container .ng-value{padding:5px 10px}.multiple-wrapper .ng-select-container .ng-value-container .ng-value .user-name{font-size:12px}.multiple-wrapper .ng-select-container .ng-value-container .ng-input{position:absolute;top:-35px!important}.multiple-wrapper .ng-select-container .ng-clear-wrapper{display:none}.multiple-wrapper .ng-select-container .ng-arrow-wrapper{position:absolute;right:5px}.multiple-wrapper .ng-select-filtered .ng-value-container .ng-placeholder{display:none!important}.multiple-wrapper.rtl .ng-select-container .ng-value-container .ng-value{padding:5px 10px}.multiple-wrapper.rtl .ng-select-container .ng-value-container .ng-value .ng-value-icon{border-left:none!important;border-right:1px solid #b8dbff}.multiple-wrapper.rtl .ng-select-container .ng-arrow-wrapper{left:5px;right:auto}.ng-select-disabled .ng-select-container{background-color:#e9ecef!important}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper{position:relative}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper input{visibility:hidden;width:20px;height:20px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper{position:absolute;top:0px;left:0px;width:20px;height:20px;border:1px solid #2e62df;display:flex;justify-content:center;align-items:center}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper .icon{color:#2e62df;display:none;justify-content:center;align-items:center;font-weight:bold}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .check-box-wrapper .icon-wrapper .icon{display:flex}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .label-wrapper{color:#2e62df}.ng-select .ng-select-focused:not(.ng-select-opened) .ng-select-container{border-color:#ccc;box-shadow:none}\n"], components: [{ type: i5.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: i6.AvatarComponent, selector: "cts-avatar", inputs: ["user"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.SetRtlDirective, selector: "[SetRtl]" }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.ɵh, selector: "[ng-label-tmp]" }, { type: i5.ɵf, selector: "[ng-option-tmp]" }, { type: i10.MatError, selector: "mat-error", inputs: ["id"] }], pipes: { "translate": i2.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
303
310
|
__decorate([
|
|
304
311
|
Cacheable({
|
|
305
312
|
maxCacheCount: 1000,
|
|
@@ -355,5 +362,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
355
362
|
type: Input
|
|
356
363
|
}], onSelectItems: [{
|
|
357
364
|
type: Output
|
|
365
|
+
}], fetchUsersByCustomApi: [{
|
|
366
|
+
type: Input
|
|
367
|
+
}], fetchedUsers: [{
|
|
368
|
+
type: Input
|
|
369
|
+
}], onSearch: [{
|
|
370
|
+
type: Output
|
|
358
371
|
}], getUsersSuggestions: [] } });
|
|
359
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zZWxlY3QtdXNlcnMvZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zZWxlY3QtdXNlcnMvZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUVKLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFTdkIsT0FBTyxFQUFrQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUVMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7OztBQUN6Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQztBQU9yQixNQUFNLE9BQU8sK0JBQStCO0lBdUUxQyxZQUNVLGNBQTRDLEVBQzdDLFNBQTJCLEVBQzFCLFdBQStCLEVBQ1os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QVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OzZIQXRVVSwrQkFBK0I7aUhBQS9CLCtCQUErQiwrc0JDdkQ1Qyx3c0dBc0ZBO0FEbVBFO0lBSkMsU0FBUyxDQUFDO1FBQ1QsYUFBYSxFQUFFLElBQUk7UUFDbkIsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUFNO0tBQ25CLENBQUM7MEVBR0Q7NEZBcFJVLCtCQUErQjtrQkFOM0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO29CQUN6QyxXQUFXLEVBQUUsNENBQTRDO29CQUN6RCxTQUFTLEVBQUUsQ0FBQyw0Q0FBNEMsQ0FBQztvQkFDekQsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzswQkE0RUksSUFBSTs7MEJBQUksUUFBUTs0Q0F6RWEsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFNckIsU0FBUztzQkFBakIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0ksYUFBYTtzQkFBdEIsTUFBTTtnQkF5T1AsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFNlbGYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIE5nQ29udHJvbCxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgY2F0Y2hFcnJvcixcclxuICBkZWJvdW5jZVRpbWUsXHJcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXHJcbiAgc3dpdGNoTWFwLFxyXG4gIHRhcCxcclxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJzSW5EZXBhcnRtZW50c0FwaVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3VzZXItYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IENhY2hlYWJsZSB9IGZyb20gJ3RzLWNhY2hlYWJsZSc7XHJcbi8qKlxyXG4gKiBVc2VycyBkcm9wZG93biBpbnB1dCBpbnRlZ3JhdGVkIHdpdGggdXNlcnMgQVBJLFxyXG4gKiB0aGF0IGNhbiBiZSB1c2VkIGluc2lkZSByZWFjdGl2ZSBvciB0ZW1wbGF0ZSBkcml2ZW4gZm9ybXNcclxuICogQHRpdGxlXHJcbiAqIFVzZXJzIGRyb3Bkb3duXHJcbiAqIEBleGFtcGxlXHJcbiAqIDxjdHMtZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vyc1xyXG4gKiAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29udHJvbE5hbWVcIlxyXG4gKiAgICAgW2JpbmRWYWx1ZV09XCJiaW5kVG9Qcm9wZXJ0eVwiXHJcbiAqICAgICBbYmluZExhYmVsXT1cIidiaW5kVG9MYWJlbCdcIlxyXG4gKiAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAqICAgICBbbGFiZWxdPVwiJ1BBVEguVE8uVFJBTlNMQVRJT04nXCJcclxuICogICAgIFtkZXB0VGl0bGVdPVwiJ2FsbCdcIlxyXG4gKiAgID48L2N0cy1keW5hbWljLWZvcm0tc2VsZWN0LXVzZXJzPlxyXG4gKi9cclxuY29uc3QgbWludXRlID0gNjAwMDA7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY3RzLWR5bmFtaWMtZm9ybS1zZWxlY3QtdXNlcnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm0tc2VsZWN0LXVzZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWZvcm0tc2VsZWN0LXVzZXJzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtU2VsZWN0VXNlcnNDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQFZpZXdDaGlsZCgnbmdTZWxlY3RDb21wb25lbnQnKSBuZ1NlbGVjdENvbXBvbmVudDogTmdTZWxlY3RDb21wb25lbnQ7XHJcbiAgc2VsZWN0aW9uc3RyZzogc3RyaW5nO1xyXG4gIGRhdGEgPSBbXTtcclxuICBhbGxVc2VyczogYm9vbGVhbjtcclxuICB1c2VyTmFtZUlucHV0JCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAvKiogZmlsdGVyIHVzZXJzIGJ5IGRlcGFydG1lbnQgKGRlcGFydG1lbnROYW1lIHwgYWxsKSAqL1xyXG4gIEBJbnB1dCgpIGRlcHRUaXRsZTogc3RyaW5nO1xyXG4gIC8qKiBmaWx0ZXIgdXNlcnMgYnkgZ3JvdXAgbmFtZSA9PiB0aGlzIHdpbGwgcmVwbGNlIGRlcCB0aXRsZSAqL1xyXG4gIEBJbnB1dCgpIGdyb3VwTmFtZTogc3RyaW5nO1xyXG4gIC8qKiBGaWVsZCBMYWJlbCAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgLyoqIEJpbmQgdmFsdWUgdG8gb2JqZWN0IHByb3BlcnR5ICovXHJcbiAgQElucHV0KCkgYmluZFZhbHVlO1xyXG4gIC8qKiBCaW5kIGxhYmVsIHRvIG9iamVjdCBwcm9wZXJ0eSAqL1xyXG4gIEBJbnB1dCgpIGJpbmRMYWJlbDtcclxuICBASW5wdXQoKSBhcmFiaWNCaW5kTGFiZWw7XHJcbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgKi9cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjtcclxuICAvKiogQ2FuIHNlbGVjdCBtdWx0aXBsZSAqL1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgLyoqIGlzIGRyb3Bkb3duIHNlYXJjaGFibGUgKi9cclxuICBASW5wdXQoKSBzZWFyY2hhYmxlID0gZmFsc2U7XHJcbiAgLyoqIHNob3VsZCBjbG9zZSBkcm9wZG93biBvbiB2YWx1ZSBzZWxlY3Rpb24gKi9cclxuICBASW5wdXQoKSBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcclxuICAvKiogc2hvdWxkIGhpZGUgc2VsZWN0ZWQgaXRlbXMgKi9cclxuICBASW5wdXQoKSBoaWRlU2VsZWN0ZWRJdGVtcyA9IGZhbHNlO1xyXG4gIC8qKiBQcmUgU2VsZWN0ZWQgdmFsdWVzICovXHJcbiAgQElucHV0KCkgcHJlU2VsZWN0ZWRWYWx1ZXM7XHJcbiAgLyoqIGZsYWdlIHRvIHVzZSBwcmVzZWxlY3RlZCB2YWx1ZXMgb3Igbm90ICovXHJcbiAgQElucHV0KCkgdXNlUHJlU2VsZWN0ZWRWYWx1ZSA9IGZhbHNlO1xyXG4gIC8qKiBpcyBEaXNhYmxlZCAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgLyoqIExpc3Qgb2YgdXNlcm5hbWVzIHRoYXQgc2hvdWxkIGJlIGV4bHVkZWQgICovXHJcbiAgQElucHV0KCkgZmlsdGVyOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAvKiogZmxhZ2UgdG8gaW5kaWNhdGUgaWYgdXNlIGZ1bGwgYXJhYmljIG5hbWUgb3Igbm90IGJlc2lkZSBmdWxsTmFtZSAgKi9cclxuICBASW5wdXQoKSB1c2VBcmFiaWNOYW1lID0gZmFsc2U7XHJcblxyXG4gIC8qKiBldmVudCBlbWl0dGVkIHdoZW4gaXRlbSBpcyBzZWxlY3RlZCAqL1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdEl0ZW1zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICBzZWxlY3Rpb247XHJcbiAgd3JpdGVkVmFsdWU6IGFueTtcclxuICBidWZmZXIgPSBbXTtcclxuICBidWZmZXJTaXplID0gMTAwMDtcclxuICBudW1iZXJPZkl0ZW1zRnJvbUVuZEJlZm9yZUZldGNoaW5nTW9yZSA9IDEwO1xyXG4gIHN1ZmZpeDtcclxuXHJcbiAgcHJvcGFnYXRlQ2hhbmdlOiBhbnkgPSAoKSA9PiB7IH07XHJcbiAgdmFsaWRhdGVGbjogYW55ID0gKCkgPT4geyB9O1xyXG4gIGlzQXJhYmljID0gZmFsc2U7XHJcbiAgcHVibGljIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge1xyXG4gICAgLypFbXB0eSovXHJcbiAgfTtcclxuICBwYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgaXNOZXh0UGFnZUF2YWlsYWJsZTogYm9vbGVhbjtcclxuICBwdWJsaWMgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sID8gdGhpcy5jb250cm9sLmludmFsaWQgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hvd0Vycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHsgZGlydHksIHRvdWNoZWQgfSA9IHRoaXMuY29udHJvbDtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gZGlydHkgfHwgdG91Y2hlZCA6IGZhbHNlO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXNlckFwaVNlcnZpY2U6IFVzZXJzSW5EZXBhcnRtZW50c0FwaVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29udHJvbDogTmdDb250cm9sXHJcbiAgKSB7XHJcbiAgICBpZiAodGhpcy5jb250cm9sKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVtaXRTZWxlY3Rpb24oZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uc3RyZyA9IGAke3RoaXMuc2VsZWN0aW9uLmxlbmd0aH0gJHt0aGlzLnN1ZmZpeH1gO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3Rpb24pO1xyXG4gICAgdGhpcy5vblNlbGVjdEl0ZW1zLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25TY3JvbGxUb0VuZCgpIHtcclxuICAgIHRoaXMuZmV0Y2hNb3JlKCk7XHJcbiAgICArK3RoaXMucGFnZUluZGV4O1xyXG4gICAgaWYgKHRoaXMuaXNOZXh0UGFnZUF2YWlsYWJsZSAmJiB0aGlzLmFsbFVzZXJzKSB7XHJcbiAgICAgIHRoaXMuZ2V0RGVwYXJ0bWVudHModGhpcy5wYWdlSW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaE1vcmUoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgbGVuID0gdGhpcy5idWZmZXIubGVuZ3RoO1xyXG4gICAgY29uc3QgbW9yZSA9IHRoaXMuZGF0YS5zbGljZShsZW4sIHRoaXMuYnVmZmVyU2l6ZSArIGxlbik7XHJcbiAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuZGF0YS5jb25jYXQobW9yZSk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKChjaGFuZ2VzLmRlcHRUaXRsZSAmJiAhY2hhbmdlcy5kZXB0VGl0bGU/LmZpcnN0Q2hhbmdlKSB8fCAoY2hhbmdlcy5ncm91cE5hbWUgJiYgIWNoYW5nZXMuZ3JvdXBOYW1lPy5maXJzdENoYW5nZSkpIHtcclxuICAgICAgdGhpcy5kYXRhID0gW107XHJcbiAgICAgIHRoaXMuYnVmZmVyID0gW107XHJcbiAgICAgIHRoaXMuZ2V0RGVwYXJ0bWVudHMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hbGxVc2VycyA9IHRoaXMuZGVwdFRpdGxlID09PSAnYWxsJyA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0aW9uID0gKHRoaXMubXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZCk7XHJcbiAgICBpZiAodGhpcy5hbGxVc2Vycykge1xyXG4gICAgICB0aGlzLmxvYWRVc2VycygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXREZXBhcnRtZW50cygpO1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbi5pc0FyYWJpYy5zdWJzY3JpYmUoKGFyKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNBcmFiaWMgPSBhcjtcclxuICAgICAgYXJcclxuICAgICAgICA/ICh0aGlzLnN1ZmZpeCA9ICfZhdiz2KrYrtiv2YUg2KrZhSDYpdiu2KrZitin2LHZhycpXHJcbiAgICAgICAgOiAodGhpcy5zdWZmaXggPSAnVXNlcnMgU2VsZWN0ZWQnKTtcclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbnN0cmcgPSBgJHt0aGlzLnNlbGVjdGlvbi5sZW5ndGh9ICR7dGhpcy5zdWZmaXh9YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREZXBhcnRtZW50cyhwYWdlID0gMCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmdyb3VwTmFtZSkge1xyXG4gICAgICB0aGlzLnVzZXJBcGlTZXJ2aWNlLmdldFVzZXJzVW5kZXJDZXJ0YWluR3JvdXAodGhpcy5ncm91cE5hbWUpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICBsZXQgbmV3RGF0YSA9IHRoaXMuY29uc3RydWN0VXNlckFycmF5KFxyXG4gICAgICAgICAgZGF0YS51c2VycyxcclxuICAgICAgICAgICdwcm9wZXJ0aWVzLnVzZXJuYW1lJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmNvbmNhdChuZXdEYXRhKTtcclxuICAgICAgICB0aGlzLmlzTmV4dFBhZ2VBdmFpbGFibGUgPSBkYXRhLmlzTmV4dFBhZ2VBdmFpbGFibGU7XHJcbiAgICAgICAgdGhpcy5idWZmZXIgPSAodGhpcy5kYXRhIHx8IFtdKS5zbGljZSgwLCB0aGlzLmJ1ZmZlclNpemUpO1xyXG4gICAgICAgIHRoaXMuYnVmZmVyLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVwdFRpdGxlKSB7XHJcbiAgICAgIGlmICh0aGlzLmFsbFVzZXJzKSB7XHJcbiAgICAgICAgdGhpcy5nZXRBbGxVc2VycyhwYWdlKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICAgIGxldCBuZXdEYXRhID0gdGhpcy5jb25zdHJ1Y3RVc2VyQXJyYXkoZGF0YS5lbnRyaWVzLCAnaWQnKTtcclxuICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5jb25jYXQobmV3RGF0YSk7XHJcbiAgICAgICAgICB0aGlzLmlzTmV4dFBhZ2VBdmFpbGFibGUgPSBkYXRhLmlzTmV4dFBhZ2VBdmFpbGFibGU7XHJcbiAgICAgICAgICB0aGlzLmJ1ZmZlciA9ICh0aGlzLmRhdGEgfHwgW10pLnNsaWNlKDAsIHRoaXMuYnVmZmVyU2l6ZSk7XHJcbiAgICAgICAgICB0aGlzLmJ1ZmZlci5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOyAvLyBmb3IgbG9hZGluZyBzcGlubmVyXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXRDdHNVc2Vycyh0aGlzLmRlcHRUaXRsZSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBsZXQgbmV3RGF0YSA9IHRoaXMuY29uc3RydWN0VXNlckFycmF5KFxyXG4gICAgICAgICAgICBkYXRhLnVzZXJzLFxyXG4gICAgICAgICAgICAncHJvcGVydGllcy51c2VybmFtZSdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuY29uY2F0KG5ld0RhdGEpO1xyXG4gICAgICAgICAgdGhpcy5pc05leHRQYWdlQXZhaWxhYmxlID0gZGF0YS5pc05leHRQYWdlQXZhaWxhYmxlO1xyXG4gICAgICAgICAgdGhpcy5idWZmZXIgPSAodGhpcy5kYXRhIHx8IFtdKS5zbGljZSgwLCB0aGlzLmJ1ZmZlclNpemUpO1xyXG4gICAgICAgICAgdGhpcy5idWZmZXIubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsVXNlcnMocGFnZSA9IDApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckFwaVNlcnZpY2UuZ2V0QWxsVXNlcnMoe1xyXG4gICAgICBjdXJyZW50UGFnZUluZGV4OiBwYWdlLFxyXG4gICAgICBwYWdlU2l6ZTogMTAwLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRVc2VycygpIHtcclxuICAgIHRoaXMudXNlck5hbWVJbnB1dCRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZyA9IHRydWUpKSxcclxuICAgICAgICBzd2l0Y2hNYXAoKHRlcm0pID0+IHtcclxuICAgICAgICAgIGlmICh0ZXJtICYmIHRlcm0ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFVzZXJzU3VnZ2VzdGlvbnModGVybSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBbGxVc2VycygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZGF0YS5lbnRyaWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBsZXQgbmV3RGF0YSA9IHRoaXMuY29uc3RydWN0VXNlckFycmF5KGRhdGEuZW50cmllcywgJ2lkJyk7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyID0gKG5ld0RhdGEgfHwgW10pLnNsaWNlKDAsIHRoaXMuYnVmZmVyU2l6ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNOZXh0UGFnZUF2YWlsYWJsZSA9IGRhdGEuaXNOZXh0UGFnZUF2YWlsYWJsZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmJ1ZmZlciA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5idWZmZXIgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy53cml0ZWRWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uc3RyZyA9IGAke3RoaXMud3JpdGVkVmFsdWUubGVuZ3RofSAke3RoaXMuc3VmZml4fWA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud3JpdGVkVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uc3RyZyA9IG51bGxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBhcmVGbihpdGVtLCBzZWxlY3RlZCkge1xyXG4gICAgY29uc29sZS5sb2coXCJpdGVtIDFcIiwgaXRlbSk7XHJcbiAgICBjb25zb2xlLmxvZyhcIkl0ZW0gMlwiLCBzZWxlY3RlZCk7XHJcbiAgICByZXR1cm4gaXRlbS5pZCA9PT0gc2VsZWN0ZWQuaWQ7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuKSB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUZuKGMpO1xyXG4gIH1cclxuICBpc1JlcXVpcmVkKCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbnRyb2wgfHwgIXRoaXMuY29udHJvbC5jb250cm9sLnZhbGlkYXRvcikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsaWRhdG9yID0gdGhpcy5jb250cm9sLmNvbnRyb2wudmFsaWRhdG9yKHt9IGFzIEFic3RyYWN0Q29udHJvbCk7XHJcbiAgICByZXR1cm4gdmFsaWRhdG9yICYmIHZhbGlkYXRvci5yZXF1aXJlZDtcclxuICB9XHJcbiAgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvd0Vycm9yO1xyXG4gIH1cclxuXHJcbiAgLy8gQENhY2hlYWJsZSh7XHJcbiAgLy8gICBtYXhDYWNoZUNvdW50OiAxMDAwLFxyXG4gIC8vICAgbWF4QWdlOiAyMDAwMCxcclxuICAvLyB9KVxyXG5cclxuICBnZXRDdHNVc2VycyhkZXB0VGl0bGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckFwaVNlcnZpY2UuZ2V0Q3RzVXNlcnMoZGVwdFRpdGxlKTtcclxuICB9XHJcblxyXG4gIEBDYWNoZWFibGUoe1xyXG4gICAgbWF4Q2FjaGVDb3VudDogMTAwMCxcclxuICAgIG1heEFnZTogNSAqIG1pbnV0ZSxcclxuICB9KVxyXG4gIGdldFVzZXJzU3VnZ2VzdGlvbnModGVybSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyQXBpU2VydmljZS5nZXRVc2Vyc1N1Z2dlc3Rpb25zKHRlcm0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RVc2VyQXJyYXkoZGF0YSwgZmlsdGVyVmFsdWU6IHN0cmluZykge1xyXG4gICAgbGV0IENvbnN0cnVjdGVkRGF0YTogYW55W107XHJcbiAgICAvLyBpZiBub3QgdXNpbmcgYXJhYmljIG5hbWUgdGhlbiBjb25zdHJ1Y3QgZnVsbCBuYW1lIGhlcmVcclxuICAgIGlmICghdGhpcy51c2VBcmFiaWNOYW1lKSB7XHJcbiAgICAgIENvbnN0cnVjdGVkRGF0YSA9IHRoaXMuaW5zZXJ0RlVsbE5hbWUoZGF0YSk7XHJcbiAgICB9XHJcbiAgICBDb25zdHJ1Y3RlZERhdGEgPSB0aGlzLmZpbHRlclVzZXJzKGRhdGEsIGZpbHRlclZhbHVlKTtcclxuICAgIC8vIER1ZSB0byBub3QgdXNpbmcgYmluZFZhbHVlLCB3ZSBuZWVkIHRvIGhvbGQgdGhlIHNlbGVjdGVkIHZhbHVlIGFzIHRoZSBmdWxsIHVzZXIgb2JqZWN0LCBub3QganVzdCB0aGUgdXNlcm5hbWVcclxuICAgIGlmICh0aGlzLndyaXRlZFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlV3JpdHRlZFZhbHVlKENvbnN0cnVjdGVkRGF0YSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gQ29uc3RydWN0ZWREYXRhO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlV3JpdHRlZFZhbHVlKHVzZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10pIHtcclxuICAgIGNvbnN0IHVzZXJJZCA9ICh2YWx1ZSkgPT4ge1xyXG4gICAgICByZXR1cm4gKHR5cGVvZiAodmFsdWUpID09PSAnc3RyaW5nJykgPyB2YWx1ZSA6IHZhbHVlLmlkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3Rpb24gPSAodGhpcy5tdWx0aXBsZSkgPyB1c2Vycy5maWx0ZXIodXNlciA9PiB0aGlzLndyaXRlZFZhbHVlLnNvbWUodmFsdWUgPT4gdXNlci5wcm9wZXJ0aWVzLnVzZXJuYW1lID09PSB1c2VySWQodmFsdWUpKSlcclxuICAgICAgOiB1c2Vycy5maWx0ZXIodXNlciA9PiB1c2VyLnByb3BlcnRpZXMudXNlcm5hbWUgPT09IHVzZXJJZCh0aGlzLndyaXRlZFZhbHVlKSlbMF07XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy53cml0ZWRWYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbih0aGlzLnNlbGVjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgaW5zZXJ0RlVsbE5hbWUoZGF0YSkge1xyXG4gICAgcmV0dXJuIGRhdGEubWFwKCh1c2VyKSA9PiB7XHJcbiAgICAgIHVzZXIuZnVsbE5hbWUgPSBgJHt1c2VyLnByb3BlcnRpZXM/LmZpcnN0TmFtZX0gJHt1c2VyLnByb3BlcnRpZXM/Lmxhc3ROYW1lfWA7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBmaWx0ZXJVc2VycyhkYXRhLCBwYXRoOiBzdHJpbmcpIHtcclxuICAgIGxldCBmaWx0ZXJEYXRhID0gZGF0YS5maWx0ZXIoKHVzZXIpID0+IHtcclxuICAgICAgY29uc3QgaW5jbHVkZWRJbkZpbHRlciA9XHJcbiAgICAgICAgdGhpcy5maWx0ZXIuaW5jbHVkZXMoXy5nZXQodXNlciwgcGF0aCkpIHx8XHJcbiAgICAgICAgXy5nZXQodXNlciwgcGF0aCkgPT09ICdBZG1pbmlzdHJhdG9yJztcclxuICAgICAgcmV0dXJuICFpbmNsdWRlZEluRmlsdGVyO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZmlsdGVyRGF0YTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJzVW5kZXJDZXJ0YWluR3JvdXAoKSB7XHJcblxyXG4gIH1cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMubmdTZWxlY3RDb21wb25lbnQuaGFuZGxlQ2xlYXJDbGljaygpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudXNlck5hbWVJbnB1dCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+XHJcblx0PGRpdj5cclxuXHRcdDxsYWJlbCBjbGFzcz1cInNlbGVjdC1sYWJlbFwiXHJcblx0XHRcdD57eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fTxzcGFuICpuZ0lmPVwiaXNSZXF1aXJlZCgpXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlciBteC0xXCI+Kjwvc3Bhbj48L2xhYmVsXHJcblx0XHQ+XHJcblx0PC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG48ZGl2IGNsYXNzPVwidXNlci1zZWxlY3RcIiBbbmdDbGFzc109XCJ7ICdtdWx0aXBsZS13cmFwcGVyJzogbXVsdGlwbGUgfVwiIFNldFJ0bD5cclxuXHQ8bmctc2VsZWN0XHJcblx0XHQjbmdTZWxlY3RDb21wb25lbnRcclxuXHRcdFtpdGVtc109XCJidWZmZXJcIlxyXG5cdFx0W2JpbmRMYWJlbF09XCJ1c2VBcmFiaWNOYW1lID8gKGlzQXJhYmljID8gYXJhYmljQmluZExhYmVsIDogYmluZExhYmVsKSA6IGJpbmRMYWJlbFwiXHJcblx0XHRbcGxhY2Vob2xkZXJdPVwibXVsdGlwbGUgJiYgc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5sZW5ndGggPiAwID8gc2VsZWN0aW9uc3RyZyA6IHBsYWNlaG9sZGVyXCJcclxuXHRcdFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXHJcblx0XHRbc2VhcmNoYWJsZV09XCJzZWFyY2hhYmxlXCJcclxuXHRcdFtjbG9zZU9uU2VsZWN0XT1cImNsb3NlT25TZWxlY3RcIlxyXG5cdFx0W2hpZGVTZWxlY3RlZF09XCJoaWRlU2VsZWN0ZWRJdGVtc1wiXHJcblx0XHRbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuXHRcdChzY3JvbGxUb0VuZCk9XCJvblNjcm9sbFRvRW5kKClcIlxyXG5cdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuXHRcdFt0eXBlYWhlYWRdPVwidXNlck5hbWVJbnB1dCRcIlxyXG5cdFx0W2NvbXBhcmVXaXRoXT1cImNvbXBhcmVGblwiXHJcblx0XHRbKG5nTW9kZWwpXT1cInNlbGVjdGlvblwiXHJcblx0XHQoY2hhbmdlKT1cImVtaXRTZWxlY3Rpb24oJGV2ZW50KVwiXHJcblx0PlxyXG5cdFx0PG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtY2xlYXI9XCJjbGVhclwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cclxuXHRcdFx0PHNwYW4gc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBjb2x1bW4tZ2FwOiA0cHg7IGZvbnQtc2l6ZTogMTZweFwiPlxyXG5cdFx0XHRcdDxkaXYgc3R5bGU9XCJ3aWR0aDogMzBweDsgaGVpZ2h0OiAzMHB4XCI+XHJcblx0XHRcdFx0XHQ8Y3RzLWF2YXRhciBbdXNlcl09XCJpdGVtXCI+PC9jdHMtYXZhdGFyPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyLW5hbWVcIj5cclxuXHRcdFx0XHRcdHt7XHJcblx0XHRcdFx0XHRcdGl0ZW0/LmlkID09PSAnc3lzdGVtJ1xyXG5cdFx0XHRcdFx0XHRcdD8gKCdTWVNURU1fQURNSU4nIHwgdHJhbnNsYXRlKVxyXG5cdFx0XHRcdFx0XHRcdDogdXNlQXJhYmljTmFtZVxyXG5cdFx0XHRcdFx0XHRcdD8gaXNBcmFiaWNcclxuXHRcdFx0XHRcdFx0XHRcdD8gaXRlbT8uZnVsbE5hbWVBclxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGl0ZW0/LmZ1bGxOYW1lQXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OiBpdGVtPy5mdWxsTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0OiBpdGVtPy5mdWxsTmFtZVxyXG5cdFx0XHRcdFx0XHRcdDogaXRlbT8ucHJvcGVydGllcz8uZmlyc3ROYW1lICsgJyAnICsgaXRlbT8ucHJvcGVydGllcz8ubGFzdE5hbWVcclxuXHRcdFx0XHRcdH19XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibmctdmFsdWUtaWNvbiByaWdodFwiIChjbGljayk9XCJjbGVhcihpdGVtKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPsOXPC9zcGFuPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L3NwYW4+XHJcblx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cclxuXHRcdDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pdGVtJD1cIml0ZW0kXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cclxuXHRcdFx0PHNwYW4gc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBjb2x1bW4tZ2FwOiA0cHg7IGZvbnQtc2l6ZTogMTZweFwiPlxyXG5cdFx0XHRcdDxtYXQtY2hlY2tib3hcclxuXHRcdFx0XHRcdCpuZ0lmPVwibXVsdGlwbGVcIlxyXG5cdFx0XHRcdFx0aWQ9XCJpdGVtLXt7IGluZGV4IH19XCJcclxuXHRcdFx0XHRcdFtuZ01vZGVsXT1cIml0ZW0kLnNlbGVjdGVkXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCIoZmFsc2UpXCJcclxuXHRcdFx0XHQ+PC9tYXQtY2hlY2tib3g+XHJcblx0XHRcdFx0PGRpdiBzdHlsZT1cIndpZHRoOiAzMHB4OyBoZWlnaHQ6IDMwcHhcIj5cclxuXHRcdFx0XHRcdDxjdHMtYXZhdGFyIFt1c2VyXT1cIml0ZW1cIj48L2N0cy1hdmF0YXI+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdHt7XHJcblx0XHRcdFx0XHRcdGl0ZW0/LmlkID09PSAnc3lzdGVtJ1xyXG5cdFx0XHRcdFx0XHRcdD8gKCdTWVNURU1fQURNSU4nIHwgdHJhbnNsYXRlKVxyXG5cdFx0XHRcdFx0XHRcdDogdXNlQXJhYmljTmFtZVxyXG5cdFx0XHRcdFx0XHRcdD8gaXNBcmFiaWNcclxuXHRcdFx0XHRcdFx0XHRcdD8gaXRlbT8uZnVsbE5hbWVBclxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGl0ZW0/LmZ1bGxOYW1lQXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OiBpdGVtPy5mdWxsTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0OiBpdGVtPy5mdWxsTmFtZVxyXG5cdFx0XHRcdFx0XHRcdDogaXRlbT8ucHJvcGVydGllcz8uZmlyc3ROYW1lICsgJyAnICsgaXRlbT8ucHJvcGVydGllcz8ubGFzdE5hbWVcclxuXHRcdFx0XHRcdH19XHJcblx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdDxkaXY+PC9kaXY+XHJcblx0XHRcdDwvc3Bhbj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0PC9uZy1zZWxlY3Q+XHJcbjwvZGl2PlxyXG48bWF0LWVycm9yIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInY2FyZC10ZXh0aXRlbS1lcnJvci0nXCIgY2xhc3M9XCJhcHAtdGV4dGl0ZW0tZWRpdGFibGUtZXJyb3JcIiAqbmdJZj1cImhhc0Vycm9ycygpXCI+XHJcblx0PHVsPlxyXG5cdFx0PGxpICpuZ0lmPVwiY29udHJvbC5lcnJvcnMucmVxdWlyZWRcIj5cclxuXHRcdFx0e3sgJ1ZBTElEQVRPUlMuUkVRVUlSRUQnIHwgdHJhbnNsYXRlIH19XHJcblx0XHQ8L2xpPlxyXG5cdDwvdWw+XHJcbjwvbWF0LWVycm9yPlxyXG4iXX0=
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zZWxlY3QtdXNlcnMvZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS1zZWxlY3QtdXNlcnMvZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUVKLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFTdkIsT0FBTyxFQUFrQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUVMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7OztBQUN6Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQztBQU9yQixNQUFNLE9BQU8sK0JBQStCO0lBb0YxQyxZQUNVLGNBQTRDLEVBQzdDLFNBQTJCLEVBQzFCLFdBQStCLEVBQ1os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O2dCQUdJLGFBQWE7c0JBQXRCLE1BQU07Z0JBNkJFLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDTyxZQUFZO3NCQUF4QixLQUFLO2dCQVdJLFFBQVE7c0JBQWpCLE1BQU07Z0JBbU5QLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBTZWxmLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBGb3JtQ29udHJvbCxcclxuICBOZ0NvbnRyb2wsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ1NlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIGNhdGNoRXJyb3IsXHJcbiAgZGVib3VuY2VUaW1lLFxyXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gIHN3aXRjaE1hcCxcclxuICB0YXAsXHJcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2Vyc0luRGVwYXJ0bWVudHNBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2VyLWFwaS5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBDYWNoZWFibGUgfSBmcm9tICd0cy1jYWNoZWFibGUnO1xyXG4vKipcclxuICogVXNlcnMgZHJvcGRvd24gaW5wdXQgaW50ZWdyYXRlZCB3aXRoIHVzZXJzIEFQSSxcclxuICogdGhhdCBjYW4gYmUgdXNlZCBpbnNpZGUgcmVhY3RpdmUgb3IgdGVtcGxhdGUgZHJpdmVuIGZvcm1zXHJcbiAqIEB0aXRsZVxyXG4gKiBVc2VycyBkcm9wZG93blxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8Y3RzLWR5bmFtaWMtZm9ybS1zZWxlY3QtdXNlcnNcclxuICogICAgIGZvcm1Db250cm9sTmFtZT1cImNvbnRyb2xOYW1lXCJcclxuICogICAgIFtiaW5kVmFsdWVdPVwiYmluZFRvUHJvcGVydHlcIlxyXG4gKiAgICAgW2JpbmRMYWJlbF09XCInYmluZFRvTGFiZWwnXCJcclxuICogICAgIFtzZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gKiAgICAgW2xhYmVsXT1cIidQQVRILlRPLlRSQU5TTEFUSU9OJ1wiXHJcbiAqICAgICBbZGVwdFRpdGxlXT1cIidhbGwnXCJcclxuICogICA+PC9jdHMtZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycz5cclxuICovXHJcbmNvbnN0IG1pbnV0ZSA9IDYwMDAwO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2N0cy1keW5hbWljLWZvcm0tc2VsZWN0LXVzZXJzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy1mb3JtLXNlbGVjdC11c2Vycy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybVNlbGVjdFVzZXJzQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBWaWV3Q2hpbGQoJ25nU2VsZWN0Q29tcG9uZW50JykgbmdTZWxlY3RDb21wb25lbnQ6IE5nU2VsZWN0Q29tcG9uZW50O1xyXG4gIHNlbGVjdGlvbnN0cmc6IHN0cmluZztcclxuICBkYXRhID0gW107XHJcbiAgYWxsVXNlcnM6IGJvb2xlYW47XHJcbiAgdXNlck5hbWVJbnB1dCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgLyoqIGZpbHRlciB1c2VycyBieSBkZXBhcnRtZW50IChkZXBhcnRtZW50TmFtZSB8IGFsbCkgKi9cclxuICBASW5wdXQoKSBkZXB0VGl0bGU6IHN0cmluZztcclxuICAvKiogZmlsdGVyIHVzZXJzIGJ5IGdyb3VwIG5hbWUgPT4gdGhpcyB3aWxsIHJlcGxjZSBkZXAgdGl0bGUgKi9cclxuICBASW5wdXQoKSBncm91cE5hbWU6IHN0cmluZztcclxuICAvKiogRmllbGQgTGFiZWwgKi9cclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xyXG4gIC8qKiBCaW5kIHZhbHVlIHRvIG9iamVjdCBwcm9wZXJ0eSAqL1xyXG4gIEBJbnB1dCgpIGJpbmRWYWx1ZTtcclxuICAvKiogQmluZCBsYWJlbCB0byBvYmplY3QgcHJvcGVydHkgKi9cclxuICBASW5wdXQoKSBiaW5kTGFiZWw7XHJcbiAgQElucHV0KCkgYXJhYmljQmluZExhYmVsO1xyXG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0ICovXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI7XHJcbiAgLyoqIENhbiBzZWxlY3QgbXVsdGlwbGUgKi9cclxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIC8qKiBpcyBkcm9wZG93biBzZWFyY2hhYmxlICovXHJcbiAgQElucHV0KCkgc2VhcmNoYWJsZSA9IGZhbHNlO1xyXG4gIC8qKiBzaG91bGQgY2xvc2UgZHJvcGRvd24gb24gdmFsdWUgc2VsZWN0aW9uICovXHJcbiAgQElucHV0KCkgY2xvc2VPblNlbGVjdCA9IHRydWU7XHJcbiAgLyoqIHNob3VsZCBoaWRlIHNlbGVjdGVkIGl0ZW1zICovXHJcbiAgQElucHV0KCkgaGlkZVNlbGVjdGVkSXRlbXMgPSBmYWxzZTtcclxuICAvKiogUHJlIFNlbGVjdGVkIHZhbHVlcyAqL1xyXG4gIEBJbnB1dCgpIHByZVNlbGVjdGVkVmFsdWVzO1xyXG4gIC8qKiBmbGFnZSB0byB1c2UgcHJlc2VsZWN0ZWQgdmFsdWVzIG9yIG5vdCAqL1xyXG4gIEBJbnB1dCgpIHVzZVByZVNlbGVjdGVkVmFsdWUgPSBmYWxzZTtcclxuICAvKiogaXMgRGlzYWJsZWQgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIC8qKiBMaXN0IG9mIHVzZXJuYW1lcyB0aGF0IHNob3VsZCBiZSBleGx1ZGVkICAqL1xyXG4gIEBJbnB1dCgpIGZpbHRlcjogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgLyoqIGZsYWdlIHRvIGluZGljYXRlIGlmIHVzZSBmdWxsIGFyYWJpYyBuYW1lIG9yIG5vdCBiZXNpZGUgZnVsbE5hbWUgICovXHJcbiAgQElucHV0KCkgdXNlQXJhYmljTmFtZSA9IGZhbHNlO1xyXG5cclxuICAvKiogZXZlbnQgZW1pdHRlZCB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQgKi9cclxuICBAT3V0cHV0KCkgb25TZWxlY3RJdGVtcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgc2VsZWN0aW9uO1xyXG4gIGJ1ZmZlciA9IFtdO1xyXG4gIGJ1ZmZlclNpemUgPSAxMDAwO1xyXG4gIG51bWJlck9mSXRlbXNGcm9tRW5kQmVmb3JlRmV0Y2hpbmdNb3JlID0gMTA7XHJcbiAgc3VmZml4O1xyXG5cclxuICBwcm9wYWdhdGVDaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcclxuICB2YWxpZGF0ZUZuOiBhbnkgPSAoKSA9PiB7IH07XHJcbiAgaXNBcmFiaWMgPSBmYWxzZTtcclxuICBwdWJsaWMgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7XHJcbiAgICAvKkVtcHR5Ki9cclxuICB9O1xyXG4gIHBhZ2VJbmRleDogbnVtYmVyID0gMDtcclxuICBpc05leHRQYWdlQXZhaWxhYmxlOiBib29sZWFuO1xyXG4gIHB1YmxpYyBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2wgPyB0aGlzLmNvbnRyb2wuaW52YWxpZCA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzaG93RXJyb3IoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuY29udHJvbCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBkaXJ0eSwgdG91Y2hlZCB9ID0gdGhpcy5jb250cm9sO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmludmFsaWQgPyBkaXJ0eSB8fCB0b3VjaGVkIDogZmFsc2U7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGZldGNoVXNlcnNCeUN1c3RvbUFwaTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNldCBmZXRjaGVkVXNlcnMocmVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10pIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgbmV3RGF0YSA9IHRoaXMuY29uc3RydWN0VXNlckFycmF5KHJlcywgJ2lkJyk7XHJcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuY29uY2F0KG5ld0RhdGEpO1xyXG4gICAgdGhpcy5pc05leHRQYWdlQXZhaWxhYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmJ1ZmZlciA9ICh0aGlzLmRhdGEgfHwgW10pLnNsaWNlKDAsIHRoaXMuYnVmZmVyU2l6ZSk7XHJcbiAgICB0aGlzLmJ1ZmZlci5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuICBAT3V0cHV0KCkgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBzZWFyY2hGbiA9ICh0ZXJtOiBzdHJpbmcsIGl0ZW06IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHRydWU7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHVzZXJBcGlTZXJ2aWNlOiBVc2Vyc0luRGVwYXJ0bWVudHNBcGlTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIGNvbnRyb2w6IE5nQ29udHJvbFxyXG4gICkge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWl0U2VsZWN0aW9uKGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbnN0cmcgPSBgJHt0aGlzLnNlbGVjdGlvbi5sZW5ndGh9ICR7dGhpcy5zdWZmaXh9YDtcclxuICAgIH1cclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0aW9uKTtcclxuICAgIHRoaXMub25TZWxlY3RJdGVtcy5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsVG9FbmQoKSB7XHJcbiAgICB0aGlzLmZldGNoTW9yZSgpO1xyXG4gICAgKyt0aGlzLnBhZ2VJbmRleDtcclxuICAgIGlmICh0aGlzLmlzTmV4dFBhZ2VBdmFpbGFibGUgJiYgdGhpcy5hbGxVc2Vycykge1xyXG4gICAgICB0aGlzLmdldERlcGFydG1lbnRzKHRoaXMucGFnZUluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hNb3JlKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IGxlbiA9IHRoaXMuYnVmZmVyLmxlbmd0aDtcclxuICAgIGNvbnN0IG1vcmUgPSB0aGlzLmRhdGEuc2xpY2UobGVuLCB0aGlzLmJ1ZmZlclNpemUgKyBsZW4pO1xyXG4gICAgdGhpcy5idWZmZXIgPSB0aGlzLmRhdGEuY29uY2F0KG1vcmUpO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICgoY2hhbmdlcy5kZXB0VGl0bGUgJiYgIWNoYW5nZXMuZGVwdFRpdGxlPy5maXJzdENoYW5nZSkgfHwgKGNoYW5nZXMuZ3JvdXBOYW1lICYmICFjaGFuZ2VzLmdyb3VwTmFtZT8uZmlyc3RDaGFuZ2UpKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgICB0aGlzLmJ1ZmZlciA9IFtdO1xyXG4gICAgICB0aGlzLmdldERlcGFydG1lbnRzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYWxsVXNlcnMgPSB0aGlzLmRlcHRUaXRsZSA9PT0gJ2FsbCcgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uID8/ICh0aGlzLm11bHRpcGxlID8gW10gOiB1bmRlZmluZWQpO1xyXG4gICAgaWYgKCF0aGlzLmZldGNoVXNlcnNCeUN1c3RvbUFwaSkge1xyXG4gICAgICBpZiAodGhpcy5hbGxVc2Vycykge1xyXG4gICAgICAgIHRoaXMubG9hZFVzZXJzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXREZXBhcnRtZW50cygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWFyY2hGbiA9ICh0ZXJtOiBzdHJpbmcsIGl0ZW06IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHtcclxuICAgICAgICBjb25zdCBmdWxsTmFtZSA9IGAke2l0ZW0ucHJvcGVydGllcy5maXJzdE5hbWV9ICR7aXRlbS5wcm9wZXJ0aWVzLmxhc3ROYW1lfWAudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gZnVsbE5hbWUuaW5jbHVkZXModGVybS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy50cmFuc2xhdGlvbi5pc0FyYWJpYy5zdWJzY3JpYmUoKGFyKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNBcmFiaWMgPSBhcjtcclxuICAgICAgYXJcclxuICAgICAgICA/ICh0aGlzLnN1ZmZpeCA9ICfZhdiz2KrYrtiv2YUg2KrZhSDYpdiu2KrZitin2LHZhycpXHJcbiAgICAgICAgOiAodGhpcy5zdWZmaXggPSAnVXNlcnMgU2VsZWN0ZWQnKTtcclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbnN0cmcgPSBgJHt0aGlzLnNlbGVjdGlvbi5sZW5ndGh9ICR7dGhpcy5zdWZmaXh9YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREZXBhcnRtZW50cyhwYWdlID0gMCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmdyb3VwTmFtZSkge1xyXG4gICAgICB0aGlzLnVzZXJBcGlTZXJ2aWNlLmdldFVzZXJzVW5kZXJDZXJ0YWluR3JvdXAodGhpcy5ncm91cE5hbWUpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICBsZXQgbmV3RGF0YSA9IHRoaXMuY29uc3RydWN0VXNlckFycmF5KFxyXG4gICAgICAgICAgZGF0YS51c2VycyxcclxuICAgICAgICAgICdwcm9wZXJ0aWVzLnVzZXJuYW1lJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmNvbmNhdChuZXdEYXRhKTtcclxuICAgICAgICB0aGlzLmlzTmV4dFBhZ2VBdmFpbGFibGUgPSBkYXRhLmlzTmV4dFBhZ2VBdmFpbGFibGU7XHJcbiAgICAgICAgdGhpcy5idWZmZXIgPSAodGhpcy5kYXRhIHx8IFtdKS5zbGljZSgwLCB0aGlzLmJ1ZmZlclNpemUpO1xyXG4gICAgICAgIHRoaXMuYnVmZmVyLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVwdFRpdGxlKSB7XHJcbiAgICAgIGlmICh0aGlzLmFsbFVzZXJzKSB7XHJcbiAgICAgICAgdGhpcy5nZXRBbGxVc2VycyhwYWdlKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICAgIGxldCBuZXdEYXRhID0gdGhpcy5jb25zdHJ1Y3RVc2VyQXJyYXkoZGF0YS5lbnRyaWVzLCAnaWQnKTtcclxuICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5jb25jYXQobmV3RGF0YSk7XHJcbiAgICAgICAgICB0aGlzLmlzTmV4dFBhZ2VBdmFpbGFibGUgPSBkYXRhLmlzTmV4dFBhZ2VBdmFpbGFibGU7XHJcbiAgICAgICAgICB0aGlzLmJ1ZmZlciA9ICh0aGlzLmRhdGEgfHwgW10pLnNsaWNlKDAsIHRoaXMuYnVmZmVyU2l6ZSk7XHJcbiAgICAgICAgICB0aGlzLmJ1ZmZlci5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOyAvLyBmb3IgbG9hZGluZyBzcGlubmVyXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXRDdHNVc2Vycyh0aGlzLmRlcHRUaXRsZSkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBsZXQgbmV3RGF0YSA9IHRoaXMuY29uc3RydWN0VXNlckFycmF5KFxyXG4gICAgICAgICAgICBkYXRhLnVzZXJzLFxyXG4gICAgICAgICAgICAncHJvcGVydGllcy51c2VybmFtZSdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuY29uY2F0KG5ld0RhdGEpO1xyXG4gICAgICAgICAgdGhpcy5pc05leHRQYWdlQXZhaWxhYmxlID0gZGF0YS5pc05leHRQYWdlQXZhaWxhYmxlO1xyXG4gICAgICAgICAgdGhpcy5idWZmZXIgPSAodGhpcy5kYXRhIHx8IFtdKS5zbGljZSgwLCB0aGlzLmJ1ZmZlclNpemUpO1xyXG4gICAgICAgICAgdGhpcy5idWZmZXIubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBbGxVc2VycyhwYWdlID0gMCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyQXBpU2VydmljZS5nZXRBbGxVc2Vycyh7XHJcbiAgICAgIGN1cnJlbnRQYWdlSW5kZXg6IHBhZ2UsXHJcbiAgICAgIHBhZ2VTaXplOiAxMDAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFVzZXJzKCkge1xyXG4gICAgdGhpcy51c2VyTmFtZUlucHV0JFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgIHRhcCgoKSA9PiAodGhpcy5sb2FkaW5nID0gdHJ1ZSkpLFxyXG4gICAgICAgIHN3aXRjaE1hcCgodGVybSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRlcm0gJiYgdGVybS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VXNlcnNTdWdnZXN0aW9ucyh0ZXJtKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFsbFVzZXJzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChkYXRhLmVudHJpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdEYXRhID0gdGhpcy5jb25zdHJ1Y3RVc2VyQXJyYXkoZGF0YS5lbnRyaWVzLCAnaWQnKTtcclxuICAgICAgICAgICAgdGhpcy5idWZmZXIgPSAobmV3RGF0YSB8fCBbXSkuc2xpY2UoMCwgdGhpcy5idWZmZXJTaXplKTtcclxuICAgICAgICAgICAgdGhpcy5pc05leHRQYWdlQXZhaWxhYmxlID0gZGF0YS5pc05leHRQYWdlQXZhaWxhYmxlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyID0gW107XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmJ1ZmZlciA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWUpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbiA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uc3RyZyA9IGAke3RoaXMuc2VsZWN0aW9uLmxlbmd0aH0gJHt0aGlzLnN1ZmZpeH1gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbiA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uc3RyZyA9IG51bGxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBhcmVGbihpdGVtLCBzZWxlY3RlZCkge1xyXG4gICAgY29uc29sZS5sb2coXCJpdGVtIDFcIiwgaXRlbSk7XHJcbiAgICBjb25zb2xlLmxvZyhcIkl0ZW0gMlwiLCBzZWxlY3RlZCk7XHJcbiAgICByZXR1cm4gaXRlbS5pZCA9PT0gc2VsZWN0ZWQuaWQ7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuKSB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XHJcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUZuKGMpO1xyXG4gIH1cclxuICBpc1JlcXVpcmVkKCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbnRyb2wgfHwgIXRoaXMuY29udHJvbC5jb250cm9sLnZhbGlkYXRvcikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsaWRhdG9yID0gdGhpcy5jb250cm9sLmNvbnRyb2wudmFsaWRhdG9yKHt9IGFzIEFic3RyYWN0Q29udHJvbCk7XHJcbiAgICByZXR1cm4gdmFsaWRhdG9yICYmIHZhbGlkYXRvci5yZXF1aXJlZDtcclxuICB9XHJcbiAgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvd0Vycm9yO1xyXG4gIH1cclxuXHJcbiAgLy8gQENhY2hlYWJsZSh7XHJcbiAgLy8gICBtYXhDYWNoZUNvdW50OiAxMDAwLFxyXG4gIC8vICAgbWF4QWdlOiAyMDAwMCxcclxuICAvLyB9KVxyXG5cclxuICBnZXRDdHNVc2VycyhkZXB0VGl0bGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckFwaVNlcnZpY2UuZ2V0Q3RzVXNlcnMoZGVwdFRpdGxlKTtcclxuICB9XHJcblxyXG4gIEBDYWNoZWFibGUoe1xyXG4gICAgbWF4Q2FjaGVDb3VudDogMTAwMCxcclxuICAgIG1heEFnZTogNSAqIG1pbnV0ZSxcclxuICB9KVxyXG4gIGdldFVzZXJzU3VnZ2VzdGlvbnModGVybSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyQXBpU2VydmljZS5nZXRVc2Vyc1N1Z2dlc3Rpb25zKHRlcm0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RVc2VyQXJyYXkoZGF0YSwgZmlsdGVyVmFsdWU6IHN0cmluZykge1xyXG4gICAgbGV0IENvbnN0cnVjdGVkRGF0YTogYW55W107XHJcbiAgICAvLyBpZiBub3QgdXNpbmcgYXJhYmljIG5hbWUgdGhlbiBjb25zdHJ1Y3QgZnVsbCBuYW1lIGhlcmVcclxuICAgIGlmICghdGhpcy51c2VBcmFiaWNOYW1lKSB7XHJcbiAgICAgIENvbnN0cnVjdGVkRGF0YSA9IHRoaXMuaW5zZXJ0RlVsbE5hbWUoZGF0YSk7XHJcbiAgICB9XHJcbiAgICBDb25zdHJ1Y3RlZERhdGEgPSB0aGlzLmZpbHRlclVzZXJzKGRhdGEsIGZpbHRlclZhbHVlKTtcclxuICAgIHJldHVybiBDb25zdHJ1Y3RlZERhdGE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluc2VydEZVbGxOYW1lKGRhdGEpIHtcclxuICAgIHJldHVybiBkYXRhLm1hcCgodXNlcikgPT4ge1xyXG4gICAgICB1c2VyLmZ1bGxOYW1lID0gYCR7dXNlci5wcm9wZXJ0aWVzPy5maXJzdE5hbWV9ICR7dXNlci5wcm9wZXJ0aWVzPy5sYXN0TmFtZX1gO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgZmlsdGVyVXNlcnMoZGF0YSwgcGF0aDogc3RyaW5nKSB7XHJcbiAgICBsZXQgZmlsdGVyRGF0YSA9IGRhdGEuZmlsdGVyKCh1c2VyKSA9PiB7XHJcbiAgICAgIGNvbnN0IGluY2x1ZGVkSW5GaWx0ZXIgPVxyXG4gICAgICAgIHRoaXMuZmlsdGVyLmluY2x1ZGVzKF8uZ2V0KHVzZXIsIHBhdGgpKSB8fFxyXG4gICAgICAgIF8uZ2V0KHVzZXIsIHBhdGgpID09PSAnQWRtaW5pc3RyYXRvcic7XHJcbiAgICAgIHJldHVybiAhaW5jbHVkZWRJbkZpbHRlcjtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZpbHRlckRhdGE7XHJcbiAgfVxyXG5cclxuICBnZXRVc2Vyc1VuZGVyQ2VydGFpbkdyb3VwKCkge1xyXG5cclxuICB9XHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLm5nU2VsZWN0Q29tcG9uZW50LmhhbmRsZUNsZWFyQ2xpY2soKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXJOYW1lSW5wdXQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJsYWJlbFwiPlxyXG5cdDxkaXY+XHJcblx0XHQ8bGFiZWwgY2xhc3M9XCJzZWxlY3QtbGFiZWxcIlxyXG5cdFx0XHQ+e3sgbGFiZWwgfCB0cmFuc2xhdGUgfX08c3BhbiAqbmdJZj1cImlzUmVxdWlyZWQoKVwiIGNsYXNzPVwidGV4dC1kYW5nZXIgbXgtMVwiPio8L3NwYW4+PC9sYWJlbFxyXG5cdFx0PlxyXG5cdDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPGRpdiBjbGFzcz1cInVzZXItc2VsZWN0XCIgW25nQ2xhc3NdPVwieyAnbXVsdGlwbGUtd3JhcHBlcic6IG11bHRpcGxlIH1cIiBTZXRSdGw+XHJcblx0PG5nLXNlbGVjdFxyXG5cdFx0I25nU2VsZWN0Q29tcG9uZW50XHJcblx0XHRbaXRlbXNdPVwiYnVmZmVyXCJcclxuXHRcdFtiaW5kTGFiZWxdPVwidXNlQXJhYmljTmFtZSA/IChpc0FyYWJpYyA/IGFyYWJpY0JpbmRMYWJlbCA6IGJpbmRMYWJlbCkgOiBiaW5kTGFiZWxcIlxyXG5cdFx0W3BsYWNlaG9sZGVyXT1cIm11bHRpcGxlICYmIHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ubGVuZ3RoID4gMCA/IHNlbGVjdGlvbnN0cmcgOiBwbGFjZWhvbGRlclwiXHJcblx0XHRbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxyXG5cdFx0W3NlYXJjaGFibGVdPVwic2VhcmNoYWJsZVwiXHJcblx0XHRbY2xvc2VPblNlbGVjdF09XCJjbG9zZU9uU2VsZWN0XCJcclxuXHRcdFtoaWRlU2VsZWN0ZWRdPVwiaGlkZVNlbGVjdGVkSXRlbXNcIlxyXG5cdFx0W2xvYWRpbmddPVwibG9hZGluZ1wiXHJcblx0XHQoc2Nyb2xsVG9FbmQpPVwib25TY3JvbGxUb0VuZCgpXCJcclxuXHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcblx0XHRbdHlwZWFoZWFkXT1cInVzZXJOYW1lSW5wdXQkXCJcclxuXHRcdFtjb21wYXJlV2l0aF09XCJjb21wYXJlRm5cIlxyXG5cdFx0WyhuZ01vZGVsKV09XCJzZWxlY3Rpb25cIlxyXG5cdFx0W3NlYXJjaEZuXT1cInNlYXJjaEZuXCJcclxuXHRcdChjaGFuZ2UpPVwiZW1pdFNlbGVjdGlvbigkZXZlbnQpXCJcclxuXHQ+XHJcblx0XHQ8bmctdGVtcGxhdGUgbmctbGFiZWwtdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1jbGVhcj1cImNsZWFyXCIgKm5nSWY9XCIhbG9hZGluZ1wiPlxyXG5cdFx0XHQ8c3BhbiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGNvbHVtbi1nYXA6IDRweDsgZm9udC1zaXplOiAxNnB4XCI+XHJcblx0XHRcdFx0PGRpdiBzdHlsZT1cIndpZHRoOiAzMHB4OyBoZWlnaHQ6IDMwcHhcIj5cclxuXHRcdFx0XHRcdDxjdHMtYXZhdGFyIFt1c2VyXT1cIml0ZW1cIj48L2N0cy1hdmF0YXI+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInVzZXItbmFtZVwiPlxyXG5cdFx0XHRcdFx0e3tcclxuXHRcdFx0XHRcdFx0aXRlbT8uaWQgPT09ICdzeXN0ZW0nXHJcblx0XHRcdFx0XHRcdFx0PyAoJ1NZU1RFTV9BRE1JTicgfCB0cmFuc2xhdGUpXHJcblx0XHRcdFx0XHRcdFx0OiB1c2VBcmFiaWNOYW1lXHJcblx0XHRcdFx0XHRcdFx0PyBpc0FyYWJpY1xyXG5cdFx0XHRcdFx0XHRcdFx0PyBpdGVtPy5mdWxsTmFtZUFyXHJcblx0XHRcdFx0XHRcdFx0XHRcdD8gaXRlbT8uZnVsbE5hbWVBclxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IGl0ZW0/LmZ1bGxOYW1lXHJcblx0XHRcdFx0XHRcdFx0XHQ6IGl0ZW0/LmZ1bGxOYW1lXHJcblx0XHRcdFx0XHRcdFx0OiBpdGVtPy5wcm9wZXJ0aWVzPy5maXJzdE5hbWUgKyAnICcgKyBpdGVtPy5wcm9wZXJ0aWVzPy5sYXN0TmFtZVxyXG5cdFx0XHRcdFx0fX1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1pY29uIHJpZ2h0XCIgKGNsaWNrKT1cImNsZWFyKGl0ZW0pXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+w5c8L3NwYW4+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvc3Bhbj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdFx0PG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG5cdFx0XHQ8c3BhbiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGNvbHVtbi1nYXA6IDRweDsgZm9udC1zaXplOiAxNnB4XCI+XHJcblx0XHRcdFx0PG1hdC1jaGVja2JveFxyXG5cdFx0XHRcdFx0Km5nSWY9XCJtdWx0aXBsZVwiXHJcblx0XHRcdFx0XHRpZD1cIml0ZW0te3sgaW5kZXggfX1cIlxyXG5cdFx0XHRcdFx0W25nTW9kZWxdPVwiaXRlbSQuc2VsZWN0ZWRcIlxyXG5cdFx0XHRcdFx0KGNsaWNrKT1cIihmYWxzZSlcIlxyXG5cdFx0XHRcdD48L21hdC1jaGVja2JveD5cclxuXHRcdFx0XHQ8ZGl2IHN0eWxlPVwid2lkdGg6IDMwcHg7IGhlaWdodDogMzBweFwiPlxyXG5cdFx0XHRcdFx0PGN0cy1hdmF0YXIgW3VzZXJdPVwiaXRlbVwiPjwvY3RzLWF2YXRhcj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0e3tcclxuXHRcdFx0XHRcdFx0aXRlbT8uaWQgPT09ICdzeXN0ZW0nXHJcblx0XHRcdFx0XHRcdFx0PyAoJ1NZU1RFTV9BRE1JTicgfCB0cmFuc2xhdGUpXHJcblx0XHRcdFx0XHRcdFx0OiB1c2VBcmFiaWNOYW1lXHJcblx0XHRcdFx0XHRcdFx0PyBpc0FyYWJpY1xyXG5cdFx0XHRcdFx0XHRcdFx0PyBpdGVtPy5mdWxsTmFtZUFyXHJcblx0XHRcdFx0XHRcdFx0XHRcdD8gaXRlbT8uZnVsbE5hbWVBclxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6IGl0ZW0/LmZ1bGxOYW1lXHJcblx0XHRcdFx0XHRcdFx0XHQ6IGl0ZW0/LmZ1bGxOYW1lXHJcblx0XHRcdFx0XHRcdFx0OiBpdGVtPy5wcm9wZXJ0aWVzPy5maXJzdE5hbWUgKyAnICcgKyBpdGVtPy5wcm9wZXJ0aWVzPy5sYXN0TmFtZVxyXG5cdFx0XHRcdFx0fX1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0PGRpdj48L2Rpdj5cclxuXHRcdFx0PC9zcGFuPlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHQ8L25nLXNlbGVjdD5cclxuPC9kaXY+XHJcbjxtYXQtZXJyb3IgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidjYXJkLXRleHRpdGVtLWVycm9yLSdcIiBjbGFzcz1cImFwcC10ZXh0aXRlbS1lZGl0YWJsZS1lcnJvclwiICpuZ0lmPVwiaGFzRXJyb3JzKClcIj5cclxuXHQ8dWw+XHJcblx0XHQ8bGkgKm5nSWY9XCJjb250cm9sLmVycm9ycy5yZXF1aXJlZFwiPlxyXG5cdFx0XHR7eyAnVkFMSURBVE9SUy5SRVFVSVJFRCcgfCB0cmFuc2xhdGUgfX1cclxuXHRcdDwvbGk+XHJcblx0PC91bD5cclxuPC9tYXQtZXJyb3I+XHJcbiJdfQ==
|
|
@@ -54,7 +54,7 @@ export class UserSelectorWrapperComponent {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
UserSelectorWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UserSelectorWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
-
UserSelectorWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: UserSelectorWrapperComponent, selector: "lib-user-selector-wrapper", inputs: { value: "value", multipleMode: "multipleMode", customOptions: "customOptions" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<cts-dynamic-form-select-users placeholder=\"{{ 'CREATE.PLACE_HOLDER' | translate }} {{'CREATE.USER' | translate}}\"\r\n [multiple]=\"multipleMode\"\r\n [searchable]=\"true\"\r\n [bindLabel]=\"'fullName'\"\r\n [closeOnSelect]=\"!multipleMode\"\r\n [searchable]=\"true\"\r\n [deptTitle]=\"'all'\"\r\n [preSelectedValues]=\"[]\"\r\n [usePreSelectedValue]=\"true\"\r\n (onSelectItems)=\"executeFunction($event)\"\r\n (ngModelChange)=\"checkChange($event)\"\r\n [(ngModel)]=\"bindedValue\" >\r\n</cts-dynamic-form-select-users>\r\n <!-- -->\r\n\r\n<!-- <div>{{customOptions | json}}</div>\r\n<div>{{multipleMode}}</div> -->", styles: [""], components: [{ type: i1.DynamicFormSelectUsersComponent, selector: "cts-dynamic-form-select-users", inputs: ["deptTitle", "groupName", "label", "bindValue", "bindLabel", "arabicBindLabel", "placeholder", "multiple", "searchable", "closeOnSelect", "hideSelectedItems", "preSelectedValues", "usePreSelectedValue", "disabled", "filter", "useArabicName"], outputs: ["onSelectItems"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.TranslatePipe } });
|
|
57
|
+
UserSelectorWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: UserSelectorWrapperComponent, selector: "lib-user-selector-wrapper", inputs: { value: "value", multipleMode: "multipleMode", customOptions: "customOptions" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<cts-dynamic-form-select-users placeholder=\"{{ 'CREATE.PLACE_HOLDER' | translate }} {{'CREATE.USER' | translate}}\"\r\n [multiple]=\"multipleMode\"\r\n [searchable]=\"true\"\r\n [bindLabel]=\"'fullName'\"\r\n [closeOnSelect]=\"!multipleMode\"\r\n [searchable]=\"true\"\r\n [deptTitle]=\"'all'\"\r\n [preSelectedValues]=\"[]\"\r\n [usePreSelectedValue]=\"true\"\r\n (onSelectItems)=\"executeFunction($event)\"\r\n (ngModelChange)=\"checkChange($event)\"\r\n [(ngModel)]=\"bindedValue\" >\r\n</cts-dynamic-form-select-users>\r\n <!-- -->\r\n\r\n<!-- <div>{{customOptions | json}}</div>\r\n<div>{{multipleMode}}</div> -->", styles: [""], components: [{ type: i1.DynamicFormSelectUsersComponent, selector: "cts-dynamic-form-select-users", inputs: ["deptTitle", "groupName", "label", "bindValue", "bindLabel", "arabicBindLabel", "placeholder", "multiple", "searchable", "closeOnSelect", "hideSelectedItems", "preSelectedValues", "usePreSelectedValue", "disabled", "filter", "useArabicName", "fetchUsersByCustomApi", "fetchedUsers"], outputs: ["onSelectItems", "onSearch"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.TranslatePipe } });
|
|
58
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UserSelectorWrapperComponent, decorators: [{
|
|
59
59
|
type: Component,
|
|
60
60
|
args: [{
|
|
@@ -34,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
34
34
|
]
|
|
35
35
|
}]
|
|
36
36
|
}] });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlbGwtY2hlY2tlci1maWVsZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3NwZWxsLWNoZWNrZXItZmllbGQvc3BlbGwtY2hlY2tlci1maWVsZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7QUFrQi9HLE1BQU0sT0FBTyx1QkFBdUI7O3FIQUF2Qix1QkFBdUI7c0hBQXZCLHVCQUF1QixpQkFaaEMsOEJBQThCLGFBRzlCLFlBQVk7UUFDWixXQUFXO1FBQ1gsZUFBZTtRQUNmLG1CQUFtQixhQUduQiw4QkFBOEI7c0hBR3JCLHVCQUF1QixZQVZ6QjtZQUNQLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZTtZQUNmLG1CQUFtQjtTQUNwQjs0RkFLVSx1QkFBdUI7a0JBZG5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDhCQUE4QjtxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDhCQUE4QjtxQkFDL0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IFNwZWxsQ2hlY2tlclRleHRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vc3BlbGwtY2hlY2tlci10ZXh0LWZpZWxkL3NwZWxsLWNoZWNrZXItdGV4dC1maWVsZC5jb21wb25lbnQnO1xuXG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU3BlbGxDaGVja2VyVGV4dEZpZWxkQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNwZWxsQ2hlY2tlclRleHRGaWVsZENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNwZWxsQ2hlY2tlckZpZWxkTW9kdWxlIHsgfVxuIl19
|
|
@@ -11003,6 +11003,9 @@ class DynamicFormSelectUsersComponent {
|
|
|
11003
11003
|
/*Empty*/
|
|
11004
11004
|
};
|
|
11005
11005
|
this.pageIndex = 0;
|
|
11006
|
+
this.fetchUsersByCustomApi = false;
|
|
11007
|
+
this.onSearch = new EventEmitter();
|
|
11008
|
+
this.searchFn = (term, item) => true;
|
|
11006
11009
|
if (this.control) {
|
|
11007
11010
|
this.control.valueAccessor = this;
|
|
11008
11011
|
}
|
|
@@ -11017,6 +11020,17 @@ class DynamicFormSelectUsersComponent {
|
|
|
11017
11020
|
const { dirty, touched } = this.control;
|
|
11018
11021
|
return this.invalid ? dirty || touched : false;
|
|
11019
11022
|
}
|
|
11023
|
+
set fetchedUsers(res) {
|
|
11024
|
+
this.loading = true;
|
|
11025
|
+
let newData = this.constructUserArray(res, 'id');
|
|
11026
|
+
this.data = this.data.concat(newData);
|
|
11027
|
+
this.isNextPageAvailable = false;
|
|
11028
|
+
this.buffer = (this.data || []).slice(0, this.bufferSize);
|
|
11029
|
+
this.buffer.map((item) => {
|
|
11030
|
+
item.isSelected = false;
|
|
11031
|
+
});
|
|
11032
|
+
this.loading = false;
|
|
11033
|
+
}
|
|
11020
11034
|
emitSelection(event) {
|
|
11021
11035
|
if (this.multiple) {
|
|
11022
11036
|
this.selectionstrg = `${this.selection.length} ${this.suffix}`;
|
|
@@ -11047,12 +11061,21 @@ class DynamicFormSelectUsersComponent {
|
|
|
11047
11061
|
}
|
|
11048
11062
|
}
|
|
11049
11063
|
ngOnInit() {
|
|
11064
|
+
var _a;
|
|
11050
11065
|
this.allUsers = this.deptTitle === 'all' ? true : false;
|
|
11051
|
-
this.selection = (this.multiple ? [] : undefined);
|
|
11052
|
-
if (this.
|
|
11053
|
-
this.
|
|
11066
|
+
this.selection = (_a = this.selection) !== null && _a !== void 0 ? _a : (this.multiple ? [] : undefined);
|
|
11067
|
+
if (!this.fetchUsersByCustomApi) {
|
|
11068
|
+
if (this.allUsers) {
|
|
11069
|
+
this.loadUsers();
|
|
11070
|
+
}
|
|
11071
|
+
this.getDepartments();
|
|
11072
|
+
}
|
|
11073
|
+
else {
|
|
11074
|
+
this.searchFn = (term, item) => {
|
|
11075
|
+
const fullName = `${item.properties.firstName} ${item.properties.lastName}`.toLowerCase();
|
|
11076
|
+
return fullName.includes(term.toLowerCase());
|
|
11077
|
+
};
|
|
11054
11078
|
}
|
|
11055
|
-
this.getDepartments();
|
|
11056
11079
|
this.translation.isArabic.subscribe((ar) => {
|
|
11057
11080
|
this.isArabic = ar;
|
|
11058
11081
|
ar
|
|
@@ -11141,13 +11164,12 @@ class DynamicFormSelectUsersComponent {
|
|
|
11141
11164
|
}
|
|
11142
11165
|
writeValue(value) {
|
|
11143
11166
|
if (value) {
|
|
11144
|
-
this.
|
|
11167
|
+
this.selection = value;
|
|
11145
11168
|
if (this.multiple) {
|
|
11146
|
-
this.selectionstrg = `${this.
|
|
11169
|
+
this.selectionstrg = `${this.selection.length} ${this.suffix}`;
|
|
11147
11170
|
}
|
|
11148
11171
|
}
|
|
11149
11172
|
else {
|
|
11150
|
-
this.writedValue = null;
|
|
11151
11173
|
this.selection = null;
|
|
11152
11174
|
this.selectionstrg = null;
|
|
11153
11175
|
}
|
|
@@ -11193,23 +11215,8 @@ class DynamicFormSelectUsersComponent {
|
|
|
11193
11215
|
ConstructedData = this.insertFUllName(data);
|
|
11194
11216
|
}
|
|
11195
11217
|
ConstructedData = this.filterUsers(data, filterValue);
|
|
11196
|
-
// Due to not using bindValue, we need to hold the selected value as the full user object, not just the username
|
|
11197
|
-
if (this.writedValue) {
|
|
11198
|
-
this.handleWrittedValue(ConstructedData);
|
|
11199
|
-
}
|
|
11200
11218
|
return ConstructedData;
|
|
11201
11219
|
}
|
|
11202
|
-
handleWrittedValue(users) {
|
|
11203
|
-
const userId = (value) => {
|
|
11204
|
-
return (typeof (value) === 'string') ? value : value.id;
|
|
11205
|
-
};
|
|
11206
|
-
this.selection = (this.multiple) ? users.filter(user => this.writedValue.some(value => user.properties.username === userId(value)))
|
|
11207
|
-
: users.filter(user => user.properties.username === userId(this.writedValue))[0];
|
|
11208
|
-
if (this.selection) {
|
|
11209
|
-
this.writedValue = null;
|
|
11210
|
-
this.emitSelection(this.selection);
|
|
11211
|
-
}
|
|
11212
|
-
}
|
|
11213
11220
|
insertFUllName(data) {
|
|
11214
11221
|
return data.map((user) => {
|
|
11215
11222
|
var _a, _b;
|
|
@@ -11234,7 +11241,7 @@ class DynamicFormSelectUsersComponent {
|
|
|
11234
11241
|
}
|
|
11235
11242
|
}
|
|
11236
11243
|
DynamicFormSelectUsersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicFormSelectUsersComponent, deps: [{ token: UsersInDepartmentsApiService }, { token: i1.TranslateService }, { token: TranslationService }, { token: i2$4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
11237
|
-
DynamicFormSelectUsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicFormSelectUsersComponent, selector: "cts-dynamic-form-select-users", inputs: { deptTitle: "deptTitle", groupName: "groupName", label: "label", bindValue: "bindValue", bindLabel: "bindLabel", arabicBindLabel: "arabicBindLabel", placeholder: "placeholder", multiple: "multiple", searchable: "searchable", closeOnSelect: "closeOnSelect", hideSelectedItems: "hideSelectedItems", preSelectedValues: "preSelectedValues", usePreSelectedValue: "usePreSelectedValue", disabled: "disabled", filter: "filter", useArabicName: "useArabicName" }, outputs: { onSelectItems: "onSelectItems" }, viewQueries: [{ propertyName: "ngSelectComponent", first: true, predicate: ["ngSelectComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"label\">\r\n\t<div>\r\n\t\t<label class=\"select-label\"\r\n\t\t\t>{{ label | translate }}<span *ngIf=\"isRequired()\" class=\"text-danger mx-1\">*</span></label\r\n\t\t>\r\n\t</div>\r\n</ng-container>\r\n<div class=\"user-select\" [ngClass]=\"{ 'multiple-wrapper': multiple }\" SetRtl>\r\n\t<ng-select\r\n\t\t#ngSelectComponent\r\n\t\t[items]=\"buffer\"\r\n\t\t[bindLabel]=\"useArabicName ? (isArabic ? arabicBindLabel : bindLabel) : bindLabel\"\r\n\t\t[placeholder]=\"multiple && selection && selection.length > 0 ? selectionstrg : placeholder\"\r\n\t\t[multiple]=\"multiple\"\r\n\t\t[searchable]=\"searchable\"\r\n\t\t[closeOnSelect]=\"closeOnSelect\"\r\n\t\t[hideSelected]=\"hideSelectedItems\"\r\n\t\t[loading]=\"loading\"\r\n\t\t(scrollToEnd)=\"onScrollToEnd()\"\r\n\t\t[disabled]=\"disabled\"\r\n\t\t[typeahead]=\"userNameInput$\"\r\n\t\t[compareWith]=\"compareFn\"\r\n\t\t[(ngModel)]=\"selection\"\r\n\t\t(change)=\"emitSelection($event)\"\r\n\t>\r\n\t\t<ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\" *ngIf=\"!loading\">\r\n\t\t\t<span style=\"display: flex; align-items: center; column-gap: 4px; font-size: 16px\">\r\n\t\t\t\t<div style=\"width: 30px; height: 30px\">\r\n\t\t\t\t\t<cts-avatar [user]=\"item\"></cts-avatar>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"user-name\">\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\titem?.id === 'system'\r\n\t\t\t\t\t\t\t? ('SYSTEM_ADMIN' | translate)\r\n\t\t\t\t\t\t\t: useArabicName\r\n\t\t\t\t\t\t\t? isArabic\r\n\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t: item?.properties?.firstName + ' ' + item?.properties?.lastName\r\n\t\t\t\t\t}}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\">\u00D7</span>\r\n\t\t\t\t</div>\r\n\t\t\t</span>\r\n\t\t</ng-template>\r\n\r\n\t\t<ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n\t\t\t<span style=\"display: flex; align-items: center; column-gap: 4px; font-size: 16px\">\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t*ngIf=\"multiple\"\r\n\t\t\t\t\tid=\"item-{{ index }}\"\r\n\t\t\t\t\t[ngModel]=\"item$.selected\"\r\n\t\t\t\t\t(click)=\"(false)\"\r\n\t\t\t\t></mat-checkbox>\r\n\t\t\t\t<div style=\"width: 30px; height: 30px\">\r\n\t\t\t\t\t<cts-avatar [user]=\"item\"></cts-avatar>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\titem?.id === 'system'\r\n\t\t\t\t\t\t\t? ('SYSTEM_ADMIN' | translate)\r\n\t\t\t\t\t\t\t: useArabicName\r\n\t\t\t\t\t\t\t? isArabic\r\n\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t: item?.properties?.firstName + ' ' + item?.properties?.lastName\r\n\t\t\t\t\t}}\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div></div>\r\n\t\t\t</span>\r\n\t\t</ng-template>\r\n\t</ng-select>\r\n</div>\r\n<mat-error [attr.data-automation-id]=\"'card-textitem-error-'\" class=\"app-textitem-editable-error\" *ngIf=\"hasErrors()\">\r\n\t<ul>\r\n\t\t<li *ngIf=\"control.errors.required\">\r\n\t\t\t{{ 'VALIDATORS.REQUIRED' | translate }}\r\n\t\t</li>\r\n\t</ul>\r\n</mat-error>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.select-label{color:#8f98aa;font-size:12px;margin-bottom:0}.user-select .ng-select-container{border:1px solid #ccc!important;border-radius:5px!important;background-color:#8f98aa1a!important}.user-select .ng-select-container .ng-value-container{padding:5px 7px 0!important}.user-select .ng-select-container .ng-value-container .ng-placeholder{padding:0 5px;font-size:12px}.user-select .ng-select-container .ng-value-container .ng-value{color:#495057}.user-select .ng-select-container .ng-arrow-wrapper{padding:0 20px}.user-select .ng-select-container .ng-input{left:10px;right:10px;width:auto}.user-select .mat-checkbox-ripple .mat-ripple-element,.user-select .mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#33e3b7!important}.user-select .mat-checkbox-ripple .mat-ripple-element{position:fixed;left:inherit;top:inherit;transform:translate(-3px,-3px)!important}.user-select mat-checkbox .mat-checkbox-background{background-color:#d9dce2!important}.multiple-wrapper .ng-select-container{overflow:visible!important}.multiple-wrapper .ng-select-container.ng-has-value{margin-bottom:65px}.multiple-wrapper .ng-select-container .ng-value-container{position:absolute;top:40px;width:100%;max-height:65px;overflow-y:auto}.multiple-wrapper .ng-select-container .ng-value-container .ng-placeholder{display:block;position:absolute;top:-26px!important}.multiple-wrapper .ng-select-container .ng-value-container .ng-value{padding:5px 10px}.multiple-wrapper .ng-select-container .ng-value-container .ng-value .user-name{font-size:12px}.multiple-wrapper .ng-select-container .ng-value-container .ng-input{position:absolute;top:-35px!important}.multiple-wrapper .ng-select-container .ng-clear-wrapper{display:none}.multiple-wrapper .ng-select-container .ng-arrow-wrapper{position:absolute;right:5px}.multiple-wrapper .ng-select-filtered .ng-value-container .ng-placeholder{display:none!important}.multiple-wrapper.rtl .ng-select-container .ng-value-container .ng-value{padding:5px 10px}.multiple-wrapper.rtl .ng-select-container .ng-value-container .ng-value .ng-value-icon{border-left:none!important;border-right:1px solid #b8dbff}.multiple-wrapper.rtl .ng-select-container .ng-arrow-wrapper{left:5px;right:auto}.ng-select-disabled .ng-select-container{background-color:#e9ecef!important}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper{position:relative}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper input{visibility:hidden;width:20px;height:20px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper{position:absolute;top:0px;left:0px;width:20px;height:20px;border:1px solid #2e62df;display:flex;justify-content:center;align-items:center}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper .icon{color:#2e62df;display:none;justify-content:center;align-items:center;font-weight:bold}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .check-box-wrapper .icon-wrapper .icon{display:flex}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .label-wrapper{color:#2e62df}.ng-select .ng-select-focused:not(.ng-select-opened) .ng-select-container{border-color:#ccc;box-shadow:none}\n"], components: [{ type: i5.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: AvatarComponent, selector: "cts-avatar", inputs: ["user"] }, { type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: SetRtlDirective, selector: "[SetRtl]" }, { type: i4$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.ɵh, selector: "[ng-label-tmp]" }, { type: i5.ɵf, selector: "[ng-option-tmp]" }, { type: i1$7.MatError, selector: "mat-error", inputs: ["id"] }], pipes: { "translate": i1.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
11244
|
+
DynamicFormSelectUsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicFormSelectUsersComponent, selector: "cts-dynamic-form-select-users", inputs: { deptTitle: "deptTitle", groupName: "groupName", label: "label", bindValue: "bindValue", bindLabel: "bindLabel", arabicBindLabel: "arabicBindLabel", placeholder: "placeholder", multiple: "multiple", searchable: "searchable", closeOnSelect: "closeOnSelect", hideSelectedItems: "hideSelectedItems", preSelectedValues: "preSelectedValues", usePreSelectedValue: "usePreSelectedValue", disabled: "disabled", filter: "filter", useArabicName: "useArabicName", fetchUsersByCustomApi: "fetchUsersByCustomApi", fetchedUsers: "fetchedUsers" }, outputs: { onSelectItems: "onSelectItems", onSearch: "onSearch" }, viewQueries: [{ propertyName: "ngSelectComponent", first: true, predicate: ["ngSelectComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"label\">\r\n\t<div>\r\n\t\t<label class=\"select-label\"\r\n\t\t\t>{{ label | translate }}<span *ngIf=\"isRequired()\" class=\"text-danger mx-1\">*</span></label\r\n\t\t>\r\n\t</div>\r\n</ng-container>\r\n<div class=\"user-select\" [ngClass]=\"{ 'multiple-wrapper': multiple }\" SetRtl>\r\n\t<ng-select\r\n\t\t#ngSelectComponent\r\n\t\t[items]=\"buffer\"\r\n\t\t[bindLabel]=\"useArabicName ? (isArabic ? arabicBindLabel : bindLabel) : bindLabel\"\r\n\t\t[placeholder]=\"multiple && selection && selection.length > 0 ? selectionstrg : placeholder\"\r\n\t\t[multiple]=\"multiple\"\r\n\t\t[searchable]=\"searchable\"\r\n\t\t[closeOnSelect]=\"closeOnSelect\"\r\n\t\t[hideSelected]=\"hideSelectedItems\"\r\n\t\t[loading]=\"loading\"\r\n\t\t(scrollToEnd)=\"onScrollToEnd()\"\r\n\t\t[disabled]=\"disabled\"\r\n\t\t[typeahead]=\"userNameInput$\"\r\n\t\t[compareWith]=\"compareFn\"\r\n\t\t[(ngModel)]=\"selection\"\r\n\t\t[searchFn]=\"searchFn\"\r\n\t\t(change)=\"emitSelection($event)\"\r\n\t>\r\n\t\t<ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\" *ngIf=\"!loading\">\r\n\t\t\t<span style=\"display: flex; align-items: center; column-gap: 4px; font-size: 16px\">\r\n\t\t\t\t<div style=\"width: 30px; height: 30px\">\r\n\t\t\t\t\t<cts-avatar [user]=\"item\"></cts-avatar>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"user-name\">\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\titem?.id === 'system'\r\n\t\t\t\t\t\t\t? ('SYSTEM_ADMIN' | translate)\r\n\t\t\t\t\t\t\t: useArabicName\r\n\t\t\t\t\t\t\t? isArabic\r\n\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t: item?.properties?.firstName + ' ' + item?.properties?.lastName\r\n\t\t\t\t\t}}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\">\u00D7</span>\r\n\t\t\t\t</div>\r\n\t\t\t</span>\r\n\t\t</ng-template>\r\n\r\n\t\t<ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n\t\t\t<span style=\"display: flex; align-items: center; column-gap: 4px; font-size: 16px\">\r\n\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t*ngIf=\"multiple\"\r\n\t\t\t\t\tid=\"item-{{ index }}\"\r\n\t\t\t\t\t[ngModel]=\"item$.selected\"\r\n\t\t\t\t\t(click)=\"(false)\"\r\n\t\t\t\t></mat-checkbox>\r\n\t\t\t\t<div style=\"width: 30px; height: 30px\">\r\n\t\t\t\t\t<cts-avatar [user]=\"item\"></cts-avatar>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\titem?.id === 'system'\r\n\t\t\t\t\t\t\t? ('SYSTEM_ADMIN' | translate)\r\n\t\t\t\t\t\t\t: useArabicName\r\n\t\t\t\t\t\t\t? isArabic\r\n\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t? item?.fullNameAr\r\n\t\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t\t: item?.fullName\r\n\t\t\t\t\t\t\t: item?.properties?.firstName + ' ' + item?.properties?.lastName\r\n\t\t\t\t\t}}\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div></div>\r\n\t\t\t</span>\r\n\t\t</ng-template>\r\n\t</ng-select>\r\n</div>\r\n<mat-error [attr.data-automation-id]=\"'card-textitem-error-'\" class=\"app-textitem-editable-error\" *ngIf=\"hasErrors()\">\r\n\t<ul>\r\n\t\t<li *ngIf=\"control.errors.required\">\r\n\t\t\t{{ 'VALIDATORS.REQUIRED' | translate }}\r\n\t\t</li>\r\n\t</ul>\r\n</mat-error>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.select-label{color:#8f98aa;font-size:12px;margin-bottom:0}.user-select .ng-select-container{border:1px solid #ccc!important;border-radius:5px!important;background-color:#8f98aa1a!important}.user-select .ng-select-container .ng-value-container{padding:5px 7px 0!important}.user-select .ng-select-container .ng-value-container .ng-placeholder{padding:0 5px;font-size:12px}.user-select .ng-select-container .ng-value-container .ng-value{color:#495057}.user-select .ng-select-container .ng-arrow-wrapper{padding:0 20px}.user-select .ng-select-container .ng-input{left:10px;right:10px;width:auto}.user-select .mat-checkbox-ripple .mat-ripple-element,.user-select .mat-checkbox-checked.mat-accent .mat-checkbox-background{background-color:#33e3b7!important}.user-select .mat-checkbox-ripple .mat-ripple-element{position:fixed;left:inherit;top:inherit;transform:translate(-3px,-3px)!important}.user-select mat-checkbox .mat-checkbox-background{background-color:#d9dce2!important}.multiple-wrapper .ng-select-container{overflow:visible!important}.multiple-wrapper .ng-select-container.ng-has-value{margin-bottom:65px}.multiple-wrapper .ng-select-container .ng-value-container{position:absolute;top:40px;width:100%;max-height:65px;overflow-y:auto}.multiple-wrapper .ng-select-container .ng-value-container .ng-placeholder{display:block;position:absolute;top:-26px!important}.multiple-wrapper .ng-select-container .ng-value-container .ng-value{padding:5px 10px}.multiple-wrapper .ng-select-container .ng-value-container .ng-value .user-name{font-size:12px}.multiple-wrapper .ng-select-container .ng-value-container .ng-input{position:absolute;top:-35px!important}.multiple-wrapper .ng-select-container .ng-clear-wrapper{display:none}.multiple-wrapper .ng-select-container .ng-arrow-wrapper{position:absolute;right:5px}.multiple-wrapper .ng-select-filtered .ng-value-container .ng-placeholder{display:none!important}.multiple-wrapper.rtl .ng-select-container .ng-value-container .ng-value{padding:5px 10px}.multiple-wrapper.rtl .ng-select-container .ng-value-container .ng-value .ng-value-icon{border-left:none!important;border-right:1px solid #b8dbff}.multiple-wrapper.rtl .ng-select-container .ng-arrow-wrapper{left:5px;right:auto}.ng-select-disabled .ng-select-container{background-color:#e9ecef!important}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper{position:relative}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper input{visibility:hidden;width:20px;height:20px}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper{position:absolute;top:0px;left:0px;width:20px;height:20px;border:1px solid #2e62df;display:flex;justify-content:center;align-items:center}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .option-wrapper .check-box-wrapper .icon-wrapper .icon{color:#2e62df;display:none;justify-content:center;align-items:center;font-weight:bold}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .check-box-wrapper .icon-wrapper .icon{display:flex}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option-selected .option-wrapper .label-wrapper{color:#2e62df}.ng-select .ng-select-focused:not(.ng-select-opened) .ng-select-container{border-color:#ccc;box-shadow:none}\n"], components: [{ type: i5.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: AvatarComponent, selector: "cts-avatar", inputs: ["user"] }, { type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: SetRtlDirective, selector: "[SetRtl]" }, { type: i4$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.ɵh, selector: "[ng-label-tmp]" }, { type: i5.ɵf, selector: "[ng-option-tmp]" }, { type: i1$7.MatError, selector: "mat-error", inputs: ["id"] }], pipes: { "translate": i1.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
11238
11245
|
__decorate([
|
|
11239
11246
|
Cacheable({
|
|
11240
11247
|
maxCacheCount: 1000,
|
|
@@ -11290,6 +11297,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
11290
11297
|
type: Input
|
|
11291
11298
|
}], onSelectItems: [{
|
|
11292
11299
|
type: Output
|
|
11300
|
+
}], fetchUsersByCustomApi: [{
|
|
11301
|
+
type: Input
|
|
11302
|
+
}], fetchedUsers: [{
|
|
11303
|
+
type: Input
|
|
11304
|
+
}], onSearch: [{
|
|
11305
|
+
type: Output
|
|
11293
11306
|
}], getUsersSuggestions: [] } });
|
|
11294
11307
|
|
|
11295
11308
|
/**
|
|
@@ -12107,7 +12120,7 @@ class UserSelectorWrapperComponent {
|
|
|
12107
12120
|
}
|
|
12108
12121
|
}
|
|
12109
12122
|
UserSelectorWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UserSelectorWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12110
|
-
UserSelectorWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: UserSelectorWrapperComponent, selector: "lib-user-selector-wrapper", inputs: { value: "value", multipleMode: "multipleMode", customOptions: "customOptions" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<cts-dynamic-form-select-users placeholder=\"{{ 'CREATE.PLACE_HOLDER' | translate }} {{'CREATE.USER' | translate}}\"\r\n [multiple]=\"multipleMode\"\r\n [searchable]=\"true\"\r\n [bindLabel]=\"'fullName'\"\r\n [closeOnSelect]=\"!multipleMode\"\r\n [searchable]=\"true\"\r\n [deptTitle]=\"'all'\"\r\n [preSelectedValues]=\"[]\"\r\n [usePreSelectedValue]=\"true\"\r\n (onSelectItems)=\"executeFunction($event)\"\r\n (ngModelChange)=\"checkChange($event)\"\r\n [(ngModel)]=\"bindedValue\" >\r\n</cts-dynamic-form-select-users>\r\n <!-- -->\r\n\r\n<!-- <div>{{customOptions | json}}</div>\r\n<div>{{multipleMode}}</div> -->", styles: [""], components: [{ type: DynamicFormSelectUsersComponent, selector: "cts-dynamic-form-select-users", inputs: ["deptTitle", "groupName", "label", "bindValue", "bindLabel", "arabicBindLabel", "placeholder", "multiple", "searchable", "closeOnSelect", "hideSelectedItems", "preSelectedValues", "usePreSelectedValue", "disabled", "filter", "useArabicName"], outputs: ["onSelectItems"] }], directives: [{ type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i1.TranslatePipe } });
|
|
12123
|
+
UserSelectorWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: UserSelectorWrapperComponent, selector: "lib-user-selector-wrapper", inputs: { value: "value", multipleMode: "multipleMode", customOptions: "customOptions" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<cts-dynamic-form-select-users placeholder=\"{{ 'CREATE.PLACE_HOLDER' | translate }} {{'CREATE.USER' | translate}}\"\r\n [multiple]=\"multipleMode\"\r\n [searchable]=\"true\"\r\n [bindLabel]=\"'fullName'\"\r\n [closeOnSelect]=\"!multipleMode\"\r\n [searchable]=\"true\"\r\n [deptTitle]=\"'all'\"\r\n [preSelectedValues]=\"[]\"\r\n [usePreSelectedValue]=\"true\"\r\n (onSelectItems)=\"executeFunction($event)\"\r\n (ngModelChange)=\"checkChange($event)\"\r\n [(ngModel)]=\"bindedValue\" >\r\n</cts-dynamic-form-select-users>\r\n <!-- -->\r\n\r\n<!-- <div>{{customOptions | json}}</div>\r\n<div>{{multipleMode}}</div> -->", styles: [""], components: [{ type: DynamicFormSelectUsersComponent, selector: "cts-dynamic-form-select-users", inputs: ["deptTitle", "groupName", "label", "bindValue", "bindLabel", "arabicBindLabel", "placeholder", "multiple", "searchable", "closeOnSelect", "hideSelectedItems", "preSelectedValues", "usePreSelectedValue", "disabled", "filter", "useArabicName", "fetchUsersByCustomApi", "fetchedUsers"], outputs: ["onSelectItems", "onSearch"] }], directives: [{ type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i1.TranslatePipe } });
|
|
12111
12124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: UserSelectorWrapperComponent, decorators: [{
|
|
12112
12125
|
type: Component,
|
|
12113
12126
|
args: [{
|