@valtimo/logging 12.14.1 → 13.0.1
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/fesm2022/valtimo-logging.mjs +36 -36
- package/fesm2022/valtimo-logging.mjs.map +1 -1
- package/lib/components/log-details/log-details.component.d.ts.map +1 -1
- package/lib/services/logging-api.service.d.ts +1 -1
- package/package.json +4 -6
- package/esm2022/lib/components/log-details/log-details.component.mjs +0 -70
- package/esm2022/lib/components/log-search/log-search.component.mjs +0 -225
- package/esm2022/lib/components/logging-list/logging-list.component.mjs +0 -193
- package/esm2022/lib/models/index.mjs +0 -18
- package/esm2022/lib/models/logging.model.mjs +0 -33
- package/esm2022/lib/models/search.model.mjs +0 -2
- package/esm2022/lib/services/index.mjs +0 -17
- package/esm2022/lib/services/logging-api.service.mjs +0 -46
- package/esm2022/logging-routing.module.mjs +0 -43
- package/esm2022/logging.module.mjs +0 -57
- package/esm2022/public_api.mjs +0 -20
- package/esm2022/valtimo-logging.mjs +0 -5
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { CommonModule } from '@angular/common';
|
|
17
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
18
|
-
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
19
|
-
import { TrashCan16 } from '@carbon/icons';
|
|
20
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
21
|
-
import { CARBON_THEME, CurrentCarbonTheme } from '@valtimo/components';
|
|
22
|
-
import { ButtonModule, DatePickerModule, DropdownModule, IconModule, InputModule, TimePickerModule, } from 'carbon-components-angular';
|
|
23
|
-
import flatpickr from 'flatpickr';
|
|
24
|
-
import { debounceTime, map, Subscription } from 'rxjs';
|
|
25
|
-
import { LogLevel, } from '../../models';
|
|
26
|
-
import * as i0 from "@angular/core";
|
|
27
|
-
import * as i1 from "@valtimo/components";
|
|
28
|
-
import * as i2 from "@angular/forms";
|
|
29
|
-
import * as i3 from "carbon-components-angular";
|
|
30
|
-
import * as i4 from "@angular/common";
|
|
31
|
-
import * as i5 from "@ngx-translate/core";
|
|
32
|
-
export class LogSearchComponent {
|
|
33
|
-
get propertiesArray() {
|
|
34
|
-
return this.formGroup.get('properties');
|
|
35
|
-
}
|
|
36
|
-
constructor(cdsThemeService, fb, iconService) {
|
|
37
|
-
this.cdsThemeService = cdsThemeService;
|
|
38
|
-
this.fb = fb;
|
|
39
|
-
this.iconService = iconService;
|
|
40
|
-
this.searchSubmitEvent = new EventEmitter();
|
|
41
|
-
this.theme$ = this.cdsThemeService.currentTheme$.pipe(map((theme) => theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G100));
|
|
42
|
-
this.formGroup = this.fb.group({
|
|
43
|
-
likeFormattedMessage: this.fb.control(''),
|
|
44
|
-
level: this.fb.control({ content: '', selected: false }),
|
|
45
|
-
beforeTimestamp: this.fb.control(''),
|
|
46
|
-
beforeTime: this.fb.control(''),
|
|
47
|
-
afterTimestamp: this.fb.control(''),
|
|
48
|
-
afterTime: this.fb.control(''),
|
|
49
|
-
properties: this.fb.array([
|
|
50
|
-
this.fb.group({
|
|
51
|
-
key: this.fb.control(''),
|
|
52
|
-
value: this.fb.control(''),
|
|
53
|
-
}),
|
|
54
|
-
]),
|
|
55
|
-
});
|
|
56
|
-
this.logLevelItems = [
|
|
57
|
-
{
|
|
58
|
-
content: LogLevel.ERROR,
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
content: LogLevel.WARN,
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
content: LogLevel.INFO,
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
content: LogLevel.DEBUG,
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
content: LogLevel.TRACE,
|
|
71
|
-
},
|
|
72
|
-
];
|
|
73
|
-
this._subscriptions = new Subscription();
|
|
74
|
-
this.iconService.register(TrashCan16);
|
|
75
|
-
}
|
|
76
|
-
ngOnInit() {
|
|
77
|
-
this.setInitialForm();
|
|
78
|
-
this._subscriptions.add(this.formGroup.valueChanges.pipe(debounceTime(500)).subscribe(() => {
|
|
79
|
-
this.searchSubmitEvent.emit(this.mapFormValueToLogSearch());
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
ngAfterViewInit() {
|
|
83
|
-
const afterTimestampControlValue = this.formGroup.get('afterTimestamp')?.value;
|
|
84
|
-
const beforeTimestampControlValue = this.formGroup.get('beforeTimestamp')?.value;
|
|
85
|
-
if (!!afterTimestampControlValue) {
|
|
86
|
-
this._afterTimestampDatePicker.writeValue([
|
|
87
|
-
flatpickr.formatDate(new Date(afterTimestampControlValue), 'd-m-Y'),
|
|
88
|
-
]);
|
|
89
|
-
}
|
|
90
|
-
if (!!beforeTimestampControlValue) {
|
|
91
|
-
this._beforeTimestampDatePicker.writeValue([
|
|
92
|
-
flatpickr.formatDate(new Date(beforeTimestampControlValue), 'd-m-Y'),
|
|
93
|
-
]);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
ngOnDestroy() {
|
|
97
|
-
this._subscriptions.unsubscribe();
|
|
98
|
-
}
|
|
99
|
-
onClearFilter() {
|
|
100
|
-
this.formGroup.reset();
|
|
101
|
-
this._afterTimestampDatePicker.writeValue([]);
|
|
102
|
-
this._beforeTimestampDatePicker.writeValue([]);
|
|
103
|
-
}
|
|
104
|
-
onDateSelected(control, event) {
|
|
105
|
-
this.formGroup.get(control)?.patchValue(flatpickr.formatDate(event[0], 'Z'));
|
|
106
|
-
}
|
|
107
|
-
addPropertySearchField() {
|
|
108
|
-
this.propertiesArray.push(this.fb.group({
|
|
109
|
-
key: this.fb.control(''),
|
|
110
|
-
value: this.fb.control(''),
|
|
111
|
-
}));
|
|
112
|
-
}
|
|
113
|
-
removePropertySearchField(index) {
|
|
114
|
-
this.propertiesArray.removeAt(index);
|
|
115
|
-
}
|
|
116
|
-
initLogItems(formValue) {
|
|
117
|
-
if (!formValue.level)
|
|
118
|
-
return;
|
|
119
|
-
this.logLevelItems = this.logLevelItems.map((levelItem) => ({
|
|
120
|
-
...levelItem,
|
|
121
|
-
selected: formValue.level?.content === levelItem.content,
|
|
122
|
-
}));
|
|
123
|
-
}
|
|
124
|
-
initPropertiesForm(formValue) {
|
|
125
|
-
if (!formValue.properties)
|
|
126
|
-
return;
|
|
127
|
-
for (let i = 1; i < formValue.properties.length; i++) {
|
|
128
|
-
this.addPropertySearchField();
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
initTimeForm(formValue) {
|
|
132
|
-
const { beforeTimestamp, afterTimestamp } = formValue;
|
|
133
|
-
if (!!beforeTimestamp) {
|
|
134
|
-
const { hours, minutes } = this.convertTimestampToTimeString(beforeTimestamp);
|
|
135
|
-
this.formGroup.patchValue({ beforeTime: `${hours}:${minutes}` }, { emitEvent: false });
|
|
136
|
-
}
|
|
137
|
-
if (!!afterTimestamp) {
|
|
138
|
-
const { hours, minutes } = this.convertTimestampToTimeString(afterTimestamp);
|
|
139
|
-
this.formGroup.patchValue({ afterTime: `${hours}:${minutes}` }, { emitEvent: false });
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
convertTimestampToTimeString(timestamp) {
|
|
143
|
-
const date = new Date(timestamp);
|
|
144
|
-
return {
|
|
145
|
-
hours: `0${date.getHours()}`.slice(-2),
|
|
146
|
-
minutes: `0${date.getMinutes()}`.slice(-2),
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
mapFormValueToLogSearch() {
|
|
150
|
-
const formValue = this.formGroup.getRawValue();
|
|
151
|
-
const properties = formValue.properties.filter((property) => !!property.key && !!property.value);
|
|
152
|
-
return {
|
|
153
|
-
...(!!formValue.likeFormattedMessage && {
|
|
154
|
-
likeFormattedMessage: formValue.likeFormattedMessage,
|
|
155
|
-
}),
|
|
156
|
-
...(!!formValue.level?.content && { level: formValue.level.content }),
|
|
157
|
-
...(!!formValue.afterTimestamp && {
|
|
158
|
-
afterTimestamp: this.mapTimeStamps(formValue.afterTimestamp, formValue.afterTime),
|
|
159
|
-
}),
|
|
160
|
-
...(!!formValue.beforeTimestamp && {
|
|
161
|
-
beforeTimestamp: this.mapTimeStamps(formValue.beforeTimestamp, formValue.beforeTime),
|
|
162
|
-
}),
|
|
163
|
-
...(!!properties.length && { properties }),
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
mapSearchRequestToFormValue(searchRequest) {
|
|
167
|
-
return {
|
|
168
|
-
...(searchRequest.likeFormattedMessage && {
|
|
169
|
-
likeFormattedMessage: searchRequest.likeFormattedMessage,
|
|
170
|
-
}),
|
|
171
|
-
...(searchRequest.level && {
|
|
172
|
-
level: {
|
|
173
|
-
content: searchRequest.level,
|
|
174
|
-
selected: true,
|
|
175
|
-
},
|
|
176
|
-
}),
|
|
177
|
-
...(searchRequest.afterTimestamp && { afterTimestamp: searchRequest.afterTimestamp }),
|
|
178
|
-
...(searchRequest.beforeTimestamp && { beforeTimestamp: searchRequest.beforeTimestamp }),
|
|
179
|
-
...(searchRequest.properties && { properties: searchRequest.properties }),
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
mapTimeStamps(date, time) {
|
|
183
|
-
if (!time)
|
|
184
|
-
return date;
|
|
185
|
-
const timeValue = time.split(':');
|
|
186
|
-
const dateObject = new Date(date);
|
|
187
|
-
dateObject.setHours(+timeValue[0], +timeValue[1]);
|
|
188
|
-
return flatpickr.formatDate(dateObject, 'Z');
|
|
189
|
-
}
|
|
190
|
-
setInitialForm() {
|
|
191
|
-
const mappedFormValue = this.mapSearchRequestToFormValue(this.initSearchRequest);
|
|
192
|
-
this.initLogItems(mappedFormValue);
|
|
193
|
-
this.initPropertiesForm(mappedFormValue);
|
|
194
|
-
this.initTimeForm(mappedFormValue);
|
|
195
|
-
this.formGroup.patchValue(mappedFormValue, { emitEvent: false });
|
|
196
|
-
}
|
|
197
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LogSearchComponent, deps: [{ token: i1.CdsThemeService }, { token: i2.FormBuilder }, { token: i3.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
198
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LogSearchComponent, isStandalone: true, selector: "valtimo-log-search", inputs: { initSearchRequest: "initSearchRequest" }, outputs: { searchSubmitEvent: "searchSubmitEvent" }, viewQueries: [{ propertyName: "_afterTimestampDatePicker", first: true, predicate: ["afterTimestamp"], descendants: true }, { propertyName: "_beforeTimestampDatePicker", first: true, predicate: ["beforeTimestamp"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<form\n *ngIf=\"theme$ | async as theme\"\n class=\"valtimo-log-search\"\n [formGroup]=\"formGroup\"\n (click)=\"$event.stopImmediatePropagation()\"\n>\n <section class=\"valtimo-log-search__fields\">\n <cds-text-label class=\"valtimo-log-search__message\">\n {{ 'logging.columns.formattedMessage' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"likeFormattedMessage\"\n [placeholder]=\"'logging.columns.formattedMessage' | translate\"\n />\n </cds-text-label>\n\n <cds-dropdown\n class=\"valtimo-log-search__level\"\n formControlName=\"level\"\n [attr.data-carbon-theme]=\"theme\"\n [appendInline]=\"true\"\n [label]=\"'logging.columns.level' | translate\"\n [placeholder]=\"'logging.columns.level' | translate\"\n >\n <cds-dropdown-list [items]=\"logLevelItems\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"valtimo-log-search__timestamp\">\n <div class=\"valtimo-log-search__datetime\">\n <cds-date-picker\n #afterTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.afterTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('afterTimestamp', $event)\"\n ></cds-date-picker>\n\n <cds-timepicker [attr.data-carbon-theme]=\"theme\" formControlName=\"afterTime\">\n </cds-timepicker>\n </div>\n\n <div class=\"valtimo-log-search__datetime\">\n <cds-date-picker\n #beforeTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.beforeTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('beforeTimestamp', $event)\"\n ></cds-date-picker>\n\n <cds-timepicker [attr.data-carbon-theme]=\"theme\" formControlName=\"beforeTime\">\n </cds-timepicker>\n </div>\n </div>\n </section>\n\n <section formArrayName=\"properties\" class=\"valtimo-log-search__properties\">\n <span class=\"valtimo-log-search__label\"> {{ 'logging.search.properties' | translate }} </span>\n\n @for (propertyGroup of propertiesArray.controls; track $index) {\n <form [formGroup]=\"propertyGroup\" class=\"valtimo-log-search__property\">\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"key\"\n [placeholder]=\"'interface.key' | translate\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"value\"\n [placeholder]=\"'interface.value' | translate\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n iconOnly=\"true\"\n type=\"button\"\n (click)=\"removePropertySearchField($index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button cdsButton=\"primary\" size=\"sm\" type=\"button\" (click)=\"addPropertySearchField()\">\n {{ 'logging.search.addProperty' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </section>\n\n <button cdsButton=\"tertiary\" type=\"button\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</form>\n", styles: [".valtimo-log-search{flex-direction:column;padding:16px;max-width:880px}.valtimo-log-search,.valtimo-log-search__property,.valtimo-log-search__timestamp,.valtimo-log-search__datetime{display:flex;gap:16px}.valtimo-log-search__message{grid-area:message}.valtimo-log-search__level{grid-area:level}.valtimo-log-search__fields{display:grid;gap:16px;grid-template-columns:repeat(2,1fr);grid-template-areas:\"message timestamp\" \"level timestamp\"}.valtimo-log-search__timestamp{grid-area:timestamp;flex-direction:column}.valtimo-log-search__datetime{align-items:flex-end}.valtimo-log-search__properties{display:flex;flex-direction:column}.valtimo-log-search__properties>*:not(:last-child):not(.valtimo-log-search__label){margin-bottom:16px}.valtimo-log-search__property{align-items:flex-end}.valtimo-log-search__label{font-size:var(--cds-label-01-font-size);color:var(--cds-text-secondary)}.valtimo-log-search ::ng-deep .cds--date-picker.cds--date-picker--single .cds--date-picker__input{inline-size:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i3.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i3.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i3.DatePicker, selector: "cds-date-picker, ibm-date-picker", inputs: ["range", "dateFormat", "language", "label", "helperText", "rangeHelperText", "rangeLabel", "placeholder", "ariaLabel", "inputPattern", "id", "value", "theme", "disabled", "invalid", "invalidText", "warn", "warnText", "size", "rangeInvalid", "rangeInvalidText", "rangeWarn", "rangeWarnText", "skeleton", "plugins", "flatpickrOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: TimePickerModule }, { kind: "component", type: i3.TimePicker, selector: "cds-timepicker, ibm-timepicker", inputs: ["invalid", "invalidText", "label", "hideLabel", "placeholder", "pattern", "id", "disabled", "value", "maxLength", "skeleton", "theme", "size"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
199
|
-
}
|
|
200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LogSearchComponent, decorators: [{
|
|
201
|
-
type: Component,
|
|
202
|
-
args: [{ selector: 'valtimo-log-search', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
203
|
-
CommonModule,
|
|
204
|
-
TranslateModule,
|
|
205
|
-
ButtonModule,
|
|
206
|
-
DropdownModule,
|
|
207
|
-
IconModule,
|
|
208
|
-
InputModule,
|
|
209
|
-
ReactiveFormsModule,
|
|
210
|
-
FormsModule,
|
|
211
|
-
DatePickerModule,
|
|
212
|
-
TimePickerModule,
|
|
213
|
-
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<form\n *ngIf=\"theme$ | async as theme\"\n class=\"valtimo-log-search\"\n [formGroup]=\"formGroup\"\n (click)=\"$event.stopImmediatePropagation()\"\n>\n <section class=\"valtimo-log-search__fields\">\n <cds-text-label class=\"valtimo-log-search__message\">\n {{ 'logging.columns.formattedMessage' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"likeFormattedMessage\"\n [placeholder]=\"'logging.columns.formattedMessage' | translate\"\n />\n </cds-text-label>\n\n <cds-dropdown\n class=\"valtimo-log-search__level\"\n formControlName=\"level\"\n [attr.data-carbon-theme]=\"theme\"\n [appendInline]=\"true\"\n [label]=\"'logging.columns.level' | translate\"\n [placeholder]=\"'logging.columns.level' | translate\"\n >\n <cds-dropdown-list [items]=\"logLevelItems\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"valtimo-log-search__timestamp\">\n <div class=\"valtimo-log-search__datetime\">\n <cds-date-picker\n #afterTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.afterTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('afterTimestamp', $event)\"\n ></cds-date-picker>\n\n <cds-timepicker [attr.data-carbon-theme]=\"theme\" formControlName=\"afterTime\">\n </cds-timepicker>\n </div>\n\n <div class=\"valtimo-log-search__datetime\">\n <cds-date-picker\n #beforeTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.beforeTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('beforeTimestamp', $event)\"\n ></cds-date-picker>\n\n <cds-timepicker [attr.data-carbon-theme]=\"theme\" formControlName=\"beforeTime\">\n </cds-timepicker>\n </div>\n </div>\n </section>\n\n <section formArrayName=\"properties\" class=\"valtimo-log-search__properties\">\n <span class=\"valtimo-log-search__label\"> {{ 'logging.search.properties' | translate }} </span>\n\n @for (propertyGroup of propertiesArray.controls; track $index) {\n <form [formGroup]=\"propertyGroup\" class=\"valtimo-log-search__property\">\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"key\"\n [placeholder]=\"'interface.key' | translate\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"value\"\n [placeholder]=\"'interface.value' | translate\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n iconOnly=\"true\"\n type=\"button\"\n (click)=\"removePropertySearchField($index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button cdsButton=\"primary\" size=\"sm\" type=\"button\" (click)=\"addPropertySearchField()\">\n {{ 'logging.search.addProperty' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </section>\n\n <button cdsButton=\"tertiary\" type=\"button\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</form>\n", styles: [".valtimo-log-search{flex-direction:column;padding:16px;max-width:880px}.valtimo-log-search,.valtimo-log-search__property,.valtimo-log-search__timestamp,.valtimo-log-search__datetime{display:flex;gap:16px}.valtimo-log-search__message{grid-area:message}.valtimo-log-search__level{grid-area:level}.valtimo-log-search__fields{display:grid;gap:16px;grid-template-columns:repeat(2,1fr);grid-template-areas:\"message timestamp\" \"level timestamp\"}.valtimo-log-search__timestamp{grid-area:timestamp;flex-direction:column}.valtimo-log-search__datetime{align-items:flex-end}.valtimo-log-search__properties{display:flex;flex-direction:column}.valtimo-log-search__properties>*:not(:last-child):not(.valtimo-log-search__label){margin-bottom:16px}.valtimo-log-search__property{align-items:flex-end}.valtimo-log-search__label{font-size:var(--cds-label-01-font-size);color:var(--cds-text-secondary)}.valtimo-log-search ::ng-deep .cds--date-picker.cds--date-picker--single .cds--date-picker__input{inline-size:unset!important}\n"] }]
|
|
214
|
-
}], ctorParameters: () => [{ type: i1.CdsThemeService }, { type: i2.FormBuilder }, { type: i3.IconService }], propDecorators: { _afterTimestampDatePicker: [{
|
|
215
|
-
type: ViewChild,
|
|
216
|
-
args: ['afterTimestamp']
|
|
217
|
-
}], _beforeTimestampDatePicker: [{
|
|
218
|
-
type: ViewChild,
|
|
219
|
-
args: ['beforeTimestamp']
|
|
220
|
-
}], initSearchRequest: [{
|
|
221
|
-
type: Input
|
|
222
|
-
}], searchSubmitEvent: [{
|
|
223
|
-
type: Output
|
|
224
|
-
}] } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZy1zZWFyY2gvbG9nLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZy1zZWFyY2gvbG9nLXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF5QixXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFtQixrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RGLE9BQU8sRUFDTCxZQUFZLEVBRVosZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxVQUFVLEVBRVYsV0FBVyxFQUVYLGdCQUFnQixHQUNqQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUMsWUFBWSxFQUFFLEdBQUcsRUFBYyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUlMLFFBQVEsR0FDVCxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQXFC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LHFmQUNoQixnQkFBZ0I7OzRGQUdQLGtCQUFrQjtrQkFuQjlCLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsVUFBVTt3QkFDVixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLGdCQUFnQjtxQkFDakI7d0lBRzZDLHlCQUF5QjtzQkFBdEUsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ29CLDBCQUEwQjtzQkFBeEUsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBRVosaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUNvQixpQkFBaUI7c0JBQTFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFzaENhbjE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q0FSQk9OX1RIRU1FLCBDZHNUaGVtZVNlcnZpY2UsIEN1cnJlbnRDYXJib25UaGVtZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBCdXR0b25Nb2R1bGUsXG4gIERhdGVQaWNrZXIsXG4gIERhdGVQaWNrZXJNb2R1bGUsXG4gIERyb3Bkb3duTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJY29uU2VydmljZSxcbiAgSW5wdXRNb2R1bGUsXG4gIExpc3RJdGVtLFxuICBUaW1lUGlja2VyTW9kdWxlLFxufSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCBmbGF0cGlja3IgZnJvbSAnZmxhdHBpY2tyJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBMb2dnaW5nRXZlbnRQcm9wZXJ0eSxcbiAgTG9nZ2luZ0V2ZW50U2VhcmNoRm9ybVZhbHVlLFxuICBMb2dnaW5nRXZlbnRTZWFyY2hSZXF1ZXN0LFxuICBMb2dMZXZlbCxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1sb2ctc2VhcmNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZy1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbG9nLXNlYXJjaC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIERhdGVQaWNrZXJNb2R1bGUsXG4gICAgVGltZVBpY2tlck1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9nU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdhZnRlclRpbWVzdGFtcCcpIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyVGltZXN0YW1wRGF0ZVBpY2tlcjogRGF0ZVBpY2tlcjtcbiAgQFZpZXdDaGlsZCgnYmVmb3JlVGltZXN0YW1wJykgcHJpdmF0ZSByZWFkb25seSBfYmVmb3JlVGltZXN0YW1wRGF0ZVBpY2tlcjogRGF0ZVBpY2tlcjtcblxuICBASW5wdXQoKSBwdWJsaWMgaW5pdFNlYXJjaFJlcXVlc3Q6IExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3Q7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoU3VibWl0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3Q+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRoZW1lJDogT2JzZXJ2YWJsZTxDQVJCT05fVEhFTUU+ID0gdGhpcy5jZHNUaGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJC5waXBlKFxuICAgIG1hcCgodGhlbWU6IEN1cnJlbnRDYXJib25UaGVtZSkgPT5cbiAgICAgIHRoZW1lID09PSBDdXJyZW50Q2FyYm9uVGhlbWUuRzEwID8gQ0FSQk9OX1RIRU1FLldISVRFIDogQ0FSQk9OX1RIRU1FLkcxMDBcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIGxpa2VGb3JtYXR0ZWRNZXNzYWdlOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nPignJyksXG4gICAgbGV2ZWw6IHRoaXMuZmIuY29udHJvbDxMaXN0SXRlbT4oe2NvbnRlbnQ6ICcnLCBzZWxlY3RlZDogZmFsc2V9KSxcbiAgICBiZWZvcmVUaW1lc3RhbXA6IHRoaXMuZmIuY29udHJvbDxzdHJpbmc+KCcnKSxcbiAgICBiZWZvcmVUaW1lOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nPignJyksXG4gICAgYWZ0ZXJUaW1lc3RhbXA6IHRoaXMuZmIuY29udHJvbDxzdHJpbmc+KCcnKSxcbiAgICBhZnRlclRpbWU6IHRoaXMuZmIuY29udHJvbDxzdHJpbmc+KCcnKSxcbiAgICBwcm9wZXJ0aWVzOiB0aGlzLmZiLmFycmF5KFtcbiAgICAgIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBrZXk6IHRoaXMuZmIuY29udHJvbDxzdHJpbmc+KCcnKSxcbiAgICAgICAgdmFsdWU6IHRoaXMuZmIuY29udHJvbDxzdHJpbmc+KCcnKSxcbiAgICAgIH0pLFxuICAgIF0pLFxuICB9KTtcblxuICBwdWJsaWMgbG9nTGV2ZWxJdGVtczogUGFydGlhbDxMaXN0SXRlbT5bXSA9IFtcbiAgICB7XG4gICAgICBjb250ZW50OiBMb2dMZXZlbC5FUlJPUixcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvbnRlbnQ6IExvZ0xldmVsLldBUk4sXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZW50OiBMb2dMZXZlbC5JTkZPLFxuICAgIH0sXG4gICAge1xuICAgICAgY29udGVudDogTG9nTGV2ZWwuREVCVUcsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZW50OiBMb2dMZXZlbC5UUkFDRSxcbiAgICB9LFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHVibGljIGdldCBwcm9wZXJ0aWVzQXJyYXkoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdwcm9wZXJ0aWVzJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHNUaGVtZVNlcnZpY2U6IENkc1RoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyKFRyYXNoQ2FuMTYpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0SW5pdGlhbEZvcm0oKTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3VibWl0RXZlbnQuZW1pdCh0aGlzLm1hcEZvcm1WYWx1ZVRvTG9nU2VhcmNoKCkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZnRlclRpbWVzdGFtcENvbnRyb2xWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldCgnYWZ0ZXJUaW1lc3RhbXAnKT8udmFsdWU7XG4gICAgY29uc3QgYmVmb3JlVGltZXN0YW1wQ29udHJvbFZhbHVlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdiZWZvcmVUaW1lc3RhbXAnKT8udmFsdWU7XG5cbiAgICBpZiAoISFhZnRlclRpbWVzdGFtcENvbnRyb2xWYWx1ZSkge1xuICAgICAgdGhpcy5fYWZ0ZXJUaW1lc3RhbXBEYXRlUGlja2VyLndyaXRlVmFsdWUoW1xuICAgICAgICBmbGF0cGlja3IuZm9ybWF0RGF0ZShuZXcgRGF0ZShhZnRlclRpbWVzdGFtcENvbnRyb2xWYWx1ZSksICdkLW0tWScpLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgaWYgKCEhYmVmb3JlVGltZXN0YW1wQ29udHJvbFZhbHVlKSB7XG4gICAgICB0aGlzLl9iZWZvcmVUaW1lc3RhbXBEYXRlUGlja2VyLndyaXRlVmFsdWUoW1xuICAgICAgICBmbGF0cGlja3IuZm9ybWF0RGF0ZShuZXcgRGF0ZShiZWZvcmVUaW1lc3RhbXBDb250cm9sVmFsdWUpLCAnZC1tLVknKSxcbiAgICAgIF0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbGVhckZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCgpO1xuICAgIHRoaXMuX2FmdGVyVGltZXN0YW1wRGF0ZVBpY2tlci53cml0ZVZhbHVlKFtdKTtcbiAgICB0aGlzLl9iZWZvcmVUaW1lc3RhbXBEYXRlUGlja2VyLndyaXRlVmFsdWUoW10pO1xuICB9XG5cbiAgcHVibGljIG9uRGF0ZVNlbGVjdGVkKGNvbnRyb2w6ICdhZnRlclRpbWVzdGFtcCcgfCAnYmVmb3JlVGltZXN0YW1wJywgZXZlbnQ6IERhdGVbXSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLmdldChjb250cm9sKT8ucGF0Y2hWYWx1ZShmbGF0cGlja3IuZm9ybWF0RGF0ZShldmVudFswXSwgJ1onKSk7XG4gIH1cblxuICBwdWJsaWMgYWRkUHJvcGVydHlTZWFyY2hGaWVsZCgpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BlcnRpZXNBcnJheS5wdXNoKFxuICAgICAgdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIGtleTogdGhpcy5mYi5jb250cm9sPHN0cmluZz4oJycpLFxuICAgICAgICB2YWx1ZTogdGhpcy5mYi5jb250cm9sPHN0cmluZz4oJycpLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVByb3BlcnR5U2VhcmNoRmllbGQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucHJvcGVydGllc0FycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdExvZ0l0ZW1zKGZvcm1WYWx1ZTogTG9nZ2luZ0V2ZW50U2VhcmNoRm9ybVZhbHVlKTogdm9pZCB7XG4gICAgaWYgKCFmb3JtVmFsdWUubGV2ZWwpIHJldHVybjtcblxuICAgIHRoaXMubG9nTGV2ZWxJdGVtcyA9IHRoaXMubG9nTGV2ZWxJdGVtcy5tYXAoKGxldmVsSXRlbTogUGFydGlhbDxMaXN0SXRlbT4pID0+ICh7XG4gICAgICAuLi5sZXZlbEl0ZW0sXG4gICAgICBzZWxlY3RlZDogZm9ybVZhbHVlLmxldmVsPy5jb250ZW50ID09PSBsZXZlbEl0ZW0uY29udGVudCxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRQcm9wZXJ0aWVzRm9ybShmb3JtVmFsdWU6IExvZ2dpbmdFdmVudFNlYXJjaEZvcm1WYWx1ZSk6IHZvaWQge1xuICAgIGlmICghZm9ybVZhbHVlLnByb3BlcnRpZXMpIHJldHVybjtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZm9ybVZhbHVlLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYWRkUHJvcGVydHlTZWFyY2hGaWVsZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRpbWVGb3JtKGZvcm1WYWx1ZTogTG9nZ2luZ0V2ZW50U2VhcmNoRm9ybVZhbHVlKTogdm9pZCB7XG4gICAgY29uc3Qge2JlZm9yZVRpbWVzdGFtcCwgYWZ0ZXJUaW1lc3RhbXB9ID0gZm9ybVZhbHVlO1xuXG4gICAgaWYgKCEhYmVmb3JlVGltZXN0YW1wKSB7XG4gICAgICBjb25zdCB7aG91cnMsIG1pbnV0ZXN9ID0gdGhpcy5jb252ZXJ0VGltZXN0YW1wVG9UaW1lU3RyaW5nKGJlZm9yZVRpbWVzdGFtcCk7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHtiZWZvcmVUaW1lOiBgJHtob3Vyc306JHttaW51dGVzfWB9LCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH1cblxuICAgIGlmICghIWFmdGVyVGltZXN0YW1wKSB7XG4gICAgICBjb25zdCB7aG91cnMsIG1pbnV0ZXN9ID0gdGhpcy5jb252ZXJ0VGltZXN0YW1wVG9UaW1lU3RyaW5nKGFmdGVyVGltZXN0YW1wKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe2FmdGVyVGltZTogYCR7aG91cnN9OiR7bWludXRlc31gfSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUaW1lc3RhbXBUb1RpbWVTdHJpbmcodGltZXN0YW1wOiBzdHJpbmcpOiB7aG91cnM6IHN0cmluZzsgbWludXRlczogc3RyaW5nfSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdXJzOiBgMCR7ZGF0ZS5nZXRIb3VycygpfWAuc2xpY2UoLTIpLFxuICAgICAgbWludXRlczogYDAke2RhdGUuZ2V0TWludXRlcygpfWAuc2xpY2UoLTIpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG1hcEZvcm1WYWx1ZVRvTG9nU2VhcmNoKCk6IExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3Qge1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IGZvcm1WYWx1ZS5wcm9wZXJ0aWVzLmZpbHRlcihcbiAgICAgIChwcm9wZXJ0eToge2tleTogc3RyaW5nIHwgbnVsbDsgdmFsdWU6IHN0cmluZyB8IG51bGx9KSA9PiAhIXByb3BlcnR5LmtleSAmJiAhIXByb3BlcnR5LnZhbHVlXG4gICAgKSBhcyBMb2dnaW5nRXZlbnRQcm9wZXJ0eVtdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLighIWZvcm1WYWx1ZS5saWtlRm9ybWF0dGVkTWVzc2FnZSAmJiB7XG4gICAgICAgIGxpa2VGb3JtYXR0ZWRNZXNzYWdlOiBmb3JtVmFsdWUubGlrZUZvcm1hdHRlZE1lc3NhZ2UsXG4gICAgICB9KSxcbiAgICAgIC4uLighIWZvcm1WYWx1ZS5sZXZlbD8uY29udGVudCAmJiB7bGV2ZWw6IGZvcm1WYWx1ZS5sZXZlbC5jb250ZW50fSksXG4gICAgICAuLi4oISFmb3JtVmFsdWUuYWZ0ZXJUaW1lc3RhbXAgJiYge1xuICAgICAgICBhZnRlclRpbWVzdGFtcDogdGhpcy5tYXBUaW1lU3RhbXBzKGZvcm1WYWx1ZS5hZnRlclRpbWVzdGFtcCwgZm9ybVZhbHVlLmFmdGVyVGltZSksXG4gICAgICB9KSxcbiAgICAgIC4uLighIWZvcm1WYWx1ZS5iZWZvcmVUaW1lc3RhbXAgJiYge1xuICAgICAgICBiZWZvcmVUaW1lc3RhbXA6IHRoaXMubWFwVGltZVN0YW1wcyhmb3JtVmFsdWUuYmVmb3JlVGltZXN0YW1wLCBmb3JtVmFsdWUuYmVmb3JlVGltZSksXG4gICAgICB9KSxcbiAgICAgIC4uLighIXByb3BlcnRpZXMubGVuZ3RoICYmIHtwcm9wZXJ0aWVzfSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2VhcmNoUmVxdWVzdFRvRm9ybVZhbHVlKFxuICAgIHNlYXJjaFJlcXVlc3Q6IExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3RcbiAgKTogTG9nZ2luZ0V2ZW50U2VhcmNoRm9ybVZhbHVlIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uKHNlYXJjaFJlcXVlc3QubGlrZUZvcm1hdHRlZE1lc3NhZ2UgJiYge1xuICAgICAgICBsaWtlRm9ybWF0dGVkTWVzc2FnZTogc2VhcmNoUmVxdWVzdC5saWtlRm9ybWF0dGVkTWVzc2FnZSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHNlYXJjaFJlcXVlc3QubGV2ZWwgJiYge1xuICAgICAgICBsZXZlbDoge1xuICAgICAgICAgIGNvbnRlbnQ6IHNlYXJjaFJlcXVlc3QubGV2ZWwsXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIC4uLihzZWFyY2hSZXF1ZXN0LmFmdGVyVGltZXN0YW1wICYmIHthZnRlclRpbWVzdGFtcDogc2VhcmNoUmVxdWVzdC5hZnRlclRpbWVzdGFtcH0pLFxuICAgICAgLi4uKHNlYXJjaFJlcXVlc3QuYmVmb3JlVGltZXN0YW1wICYmIHtiZWZvcmVUaW1lc3RhbXA6IHNlYXJjaFJlcXVlc3QuYmVmb3JlVGltZXN0YW1wfSksXG4gICAgICAuLi4oc2VhcmNoUmVxdWVzdC5wcm9wZXJ0aWVzICYmIHtwcm9wZXJ0aWVzOiBzZWFyY2hSZXF1ZXN0LnByb3BlcnRpZXN9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBUaW1lU3RhbXBzKGRhdGU6IHN0cmluZywgdGltZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aW1lKSByZXR1cm4gZGF0ZTtcblxuICAgIGNvbnN0IHRpbWVWYWx1ZTogc3RyaW5nW10gPSB0aW1lLnNwbGl0KCc6Jyk7XG4gICAgY29uc3QgZGF0ZU9iamVjdCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGRhdGVPYmplY3Quc2V0SG91cnMoK3RpbWVWYWx1ZVswXSwgK3RpbWVWYWx1ZVsxXSk7XG5cbiAgICByZXR1cm4gZmxhdHBpY2tyLmZvcm1hdERhdGUoZGF0ZU9iamVjdCwgJ1onKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgbWFwcGVkRm9ybVZhbHVlOiBMb2dnaW5nRXZlbnRTZWFyY2hGb3JtVmFsdWUgPSB0aGlzLm1hcFNlYXJjaFJlcXVlc3RUb0Zvcm1WYWx1ZShcbiAgICAgIHRoaXMuaW5pdFNlYXJjaFJlcXVlc3RcbiAgICApO1xuICAgIHRoaXMuaW5pdExvZ0l0ZW1zKG1hcHBlZEZvcm1WYWx1ZSk7XG4gICAgdGhpcy5pbml0UHJvcGVydGllc0Zvcm0obWFwcGVkRm9ybVZhbHVlKTtcbiAgICB0aGlzLmluaXRUaW1lRm9ybShtYXBwZWRGb3JtVmFsdWUpO1xuXG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZShtYXBwZWRGb3JtVmFsdWUsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cbjxmb3JtXG4gICpuZ0lmPVwidGhlbWUkIHwgYXN5bmMgYXMgdGhlbWVcIlxuICBjbGFzcz1cInZhbHRpbW8tbG9nLXNlYXJjaFwiXG4gIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgKGNsaWNrKT1cIiRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVwiXG4+XG4gIDxzZWN0aW9uIGNsYXNzPVwidmFsdGltby1sb2ctc2VhcmNoX19maWVsZHNcIj5cbiAgICA8Y2RzLXRleHQtbGFiZWwgY2xhc3M9XCJ2YWx0aW1vLWxvZy1zZWFyY2hfX21lc3NhZ2VcIj5cbiAgICAgIHt7ICdsb2dnaW5nLmNvbHVtbnMuZm9ybWF0dGVkTWVzc2FnZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGlucHV0XG4gICAgICAgIGNkc1RleHRcbiAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwidGhlbWVcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsaWtlRm9ybWF0dGVkTWVzc2FnZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInbG9nZ2luZy5jb2x1bW5zLmZvcm1hdHRlZE1lc3NhZ2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgIC8+XG4gICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgIDxjZHMtZHJvcGRvd25cbiAgICAgIGNsYXNzPVwidmFsdGltby1sb2ctc2VhcmNoX19sZXZlbFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJsZXZlbFwiXG4gICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJ0aGVtZVwiXG4gICAgICBbYXBwZW5kSW5saW5lXT1cInRydWVcIlxuICAgICAgW2xhYmVsXT1cIidsb2dnaW5nLmNvbHVtbnMubGV2ZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInbG9nZ2luZy5jb2x1bW5zLmxldmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgPlxuICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJsb2dMZXZlbEl0ZW1zXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICA8L2Nkcy1kcm9wZG93bj5cblxuICAgIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLWxvZy1zZWFyY2hfX3RpbWVzdGFtcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZhbHRpbW8tbG9nLXNlYXJjaF9fZGF0ZXRpbWVcIj5cbiAgICAgICAgPGNkcy1kYXRlLXBpY2tlclxuICAgICAgICAgICNhZnRlclRpbWVzdGFtcFxuICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cInRoZW1lXCJcbiAgICAgICAgICBbbGFiZWxdPVwiJ2xvZ2dpbmcuc2VhcmNoLmFmdGVyVGltZXN0YW1wJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJERC1NTS1ZWVlZXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCInZC1tLVknXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25EYXRlU2VsZWN0ZWQoJ2FmdGVyVGltZXN0YW1wJywgJGV2ZW50KVwiXG4gICAgICAgID48L2Nkcy1kYXRlLXBpY2tlcj5cblxuICAgICAgICA8Y2RzLXRpbWVwaWNrZXIgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwidGhlbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJhZnRlclRpbWVcIj5cbiAgICAgICAgPC9jZHMtdGltZXBpY2tlcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidmFsdGltby1sb2ctc2VhcmNoX19kYXRldGltZVwiPlxuICAgICAgICA8Y2RzLWRhdGUtcGlja2VyXG4gICAgICAgICAgI2JlZm9yZVRpbWVzdGFtcFxuICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cInRoZW1lXCJcbiAgICAgICAgICBbbGFiZWxdPVwiJ2xvZ2dpbmcuc2VhcmNoLmJlZm9yZVRpbWVzdGFtcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiREQtTU0tWVlZWVwiXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwiJ2QtbS1ZJ1wiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uRGF0ZVNlbGVjdGVkKCdiZWZvcmVUaW1lc3RhbXAnLCAkZXZlbnQpXCJcbiAgICAgICAgPjwvY2RzLWRhdGUtcGlja2VyPlxuXG4gICAgICAgIDxjZHMtdGltZXBpY2tlciBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJ0aGVtZVwiIGZvcm1Db250cm9sTmFtZT1cImJlZm9yZVRpbWVcIj5cbiAgICAgICAgPC9jZHMtdGltZXBpY2tlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiAgPHNlY3Rpb24gZm9ybUFycmF5TmFtZT1cInByb3BlcnRpZXNcIiBjbGFzcz1cInZhbHRpbW8tbG9nLXNlYXJjaF9fcHJvcGVydGllc1wiPlxuICAgIDxzcGFuIGNsYXNzPVwidmFsdGltby1sb2ctc2VhcmNoX19sYWJlbFwiPiB7eyAnbG9nZ2luZy5zZWFyY2gucHJvcGVydGllcycgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxuXG4gICAgQGZvciAocHJvcGVydHlHcm91cCBvZiBwcm9wZXJ0aWVzQXJyYXkuY29udHJvbHM7IHRyYWNrICRpbmRleCkge1xuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJwcm9wZXJ0eUdyb3VwXCIgY2xhc3M9XCJ2YWx0aW1vLWxvZy1zZWFyY2hfX3Byb3BlcnR5XCI+XG4gICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cInRoZW1lXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImtleVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2ludGVyZmFjZS5rZXknIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cInRoZW1lXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInaW50ZXJmYWNlLnZhbHVlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2RzQnV0dG9uPVwiZGFuZ2VyLS1naG9zdFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiRjb3VudCA9PT0gMVwiXG4gICAgICAgICAgaWNvbk9ubHk9XCJ0cnVlXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUHJvcGVydHlTZWFyY2hGaWVsZCgkaW5kZXgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ0cmFzaC1jYW5cIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Zvcm0+XG4gICAgfVxuXG4gICAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgc2l6ZT1cInNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGRQcm9wZXJ0eVNlYXJjaEZpZWxkKClcIj5cbiAgICAgIHt7ICdsb2dnaW5nLnNlYXJjaC5hZGRQcm9wZXJ0eScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L3NlY3Rpb24+XG5cbiAgPGJ1dHRvbiBjZHNCdXR0b249XCJ0ZXJ0aWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DbGVhckZpbHRlcigpXCI+XG4gICAge3sgJ2ludGVyZmFjZS5jbGVhcicgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ0cmFzaC1jYW5cIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L2Zvcm0+XG4iXX0=
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { CommonModule } from '@angular/common';
|
|
17
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
18
|
-
import { Filter16, TrashCan16 } from '@carbon/icons';
|
|
19
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
20
|
-
import { CARBON_CONSTANTS, CarbonListModule, DEFAULT_PAGINATION, ViewType, } from '@valtimo/components';
|
|
21
|
-
import { ButtonModule, DialogModule, DropdownModule, IconModule, } from 'carbon-components-angular';
|
|
22
|
-
import { BehaviorSubject, combineLatest, map, startWith, Subscription, switchMap, take, tap, } from 'rxjs';
|
|
23
|
-
import { LOG_ELLIPSIS_LIMIT, LOG_LEVEL_TAG, } from '../../models';
|
|
24
|
-
import { LoggingApiService } from '../../services';
|
|
25
|
-
import { LogDetailsComponent } from '../log-details/log-details.component';
|
|
26
|
-
import { LogSearchComponent } from '../log-search/log-search.component';
|
|
27
|
-
import * as i0 from "@angular/core";
|
|
28
|
-
import * as i1 from "@angular/router";
|
|
29
|
-
import * as i2 from "carbon-components-angular";
|
|
30
|
-
import * as i3 from "../../services";
|
|
31
|
-
import * as i4 from "@angular/common";
|
|
32
|
-
import * as i5 from "@ngx-translate/core";
|
|
33
|
-
import * as i6 from "@valtimo/components";
|
|
34
|
-
export class LoggingListComponent {
|
|
35
|
-
constructor(activatedRoute, iconService, loggingApiService, router) {
|
|
36
|
-
this.activatedRoute = activatedRoute;
|
|
37
|
-
this.iconService = iconService;
|
|
38
|
-
this.loggingApiService = loggingApiService;
|
|
39
|
-
this.router = router;
|
|
40
|
-
this.loading$ = new BehaviorSubject(true);
|
|
41
|
-
this.logItems$ = this.activatedRoute.queryParamMap.pipe(tap(() => this.loading$.next(true)), switchMap(queryParams => this.loggingApiService.getTechnicalLogs({
|
|
42
|
-
...queryParams['params'],
|
|
43
|
-
...(!!queryParams['params']?.properties && {
|
|
44
|
-
properties: this.base64ToObject(queryParams['params'].properties),
|
|
45
|
-
}),
|
|
46
|
-
})), map((loggingPage) => {
|
|
47
|
-
this.pagination$.next({
|
|
48
|
-
...this.pagination$.getValue(),
|
|
49
|
-
collectionSize: loggingPage.totalElements,
|
|
50
|
-
});
|
|
51
|
-
return loggingPage.content.map((logEvent) => ({
|
|
52
|
-
...logEvent,
|
|
53
|
-
levelTags: [
|
|
54
|
-
{
|
|
55
|
-
content: logEvent.level,
|
|
56
|
-
type: LOG_LEVEL_TAG[logEvent.level],
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
}));
|
|
60
|
-
}), startWith([]), tap(() => {
|
|
61
|
-
this.loading$.next(false);
|
|
62
|
-
}));
|
|
63
|
-
this.searchRequest$ = new BehaviorSubject({});
|
|
64
|
-
this.isSearchActive$ = this.searchRequest$.pipe(map((searchRequest) => Object.keys(searchRequest).length > 0));
|
|
65
|
-
this.pagination$ = new BehaviorSubject(DEFAULT_PAGINATION);
|
|
66
|
-
this.logDetailsOpen$ = new BehaviorSubject(false);
|
|
67
|
-
this.selectedLogEvent$ = new BehaviorSubject(null);
|
|
68
|
-
this.FIELDS = [
|
|
69
|
-
{
|
|
70
|
-
key: 'timestamp',
|
|
71
|
-
label: 'logging.columns.timestamp',
|
|
72
|
-
viewType: ViewType.DATE_TIME,
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
key: 'levelTags',
|
|
76
|
-
label: 'logging.columns.level',
|
|
77
|
-
viewType: ViewType.TAGS,
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
key: 'formattedMessage',
|
|
81
|
-
label: 'logging.columns.formattedMessage',
|
|
82
|
-
viewType: ViewType.TEXT,
|
|
83
|
-
tooltipCharLimit: LOG_ELLIPSIS_LIMIT,
|
|
84
|
-
},
|
|
85
|
-
];
|
|
86
|
-
this._subscriptions = new Subscription();
|
|
87
|
-
this.iconService.registerAll([Filter16, TrashCan16]);
|
|
88
|
-
}
|
|
89
|
-
ngOnInit() {
|
|
90
|
-
this.setInitialParams();
|
|
91
|
-
}
|
|
92
|
-
ngOnDestroy() {
|
|
93
|
-
this._subscriptions.unsubscribe();
|
|
94
|
-
}
|
|
95
|
-
onCloseModalEvent() {
|
|
96
|
-
this.logDetailsOpen$.next(false);
|
|
97
|
-
setTimeout(() => {
|
|
98
|
-
this.selectedLogEvent$.next(null);
|
|
99
|
-
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
100
|
-
}
|
|
101
|
-
onPaginationClicked(page, logItems) {
|
|
102
|
-
const activePagination = this.pagination$.getValue();
|
|
103
|
-
const searchRequest = this.searchRequest$.getValue();
|
|
104
|
-
if (!searchRequest.beforeTimestamp && activePagination.page === 1)
|
|
105
|
-
this.searchRequest$.next({ ...searchRequest, beforeTimestamp: logItems[0].timestamp });
|
|
106
|
-
this.pagination$.next({ ...activePagination, page });
|
|
107
|
-
}
|
|
108
|
-
onPaginationSet(size) {
|
|
109
|
-
const { collectionSize, page } = this.pagination$.getValue();
|
|
110
|
-
const resetPage = Math.ceil(+collectionSize / size) <= +page && +collectionSize > 0;
|
|
111
|
-
this.pagination$.next({ ...this.pagination$.getValue(), size, ...(resetPage && { page: 1 }) });
|
|
112
|
-
}
|
|
113
|
-
onRowClickedEvent(rowClickEvent) {
|
|
114
|
-
const { ctrlClick: _1, tags: _2, ...logEvent } = rowClickEvent;
|
|
115
|
-
this.logDetailsOpen$.next(true);
|
|
116
|
-
this.selectedLogEvent$.next(logEvent);
|
|
117
|
-
}
|
|
118
|
-
onSearchSubmitEvent(searchRequest) {
|
|
119
|
-
this.searchRequest$.next(searchRequest);
|
|
120
|
-
}
|
|
121
|
-
onClearFilter() {
|
|
122
|
-
this.onSearchSubmitEvent({});
|
|
123
|
-
}
|
|
124
|
-
base64ToObject(base64string) {
|
|
125
|
-
return JSON.parse(atob(base64string));
|
|
126
|
-
}
|
|
127
|
-
objectToBase64(jsObject) {
|
|
128
|
-
return btoa(JSON.stringify(jsObject));
|
|
129
|
-
}
|
|
130
|
-
openQueryParamsSubscription() {
|
|
131
|
-
this._subscriptions.add(combineLatest([this.pagination$, this.searchRequest$]).subscribe(([pagination, searchRequest]) => {
|
|
132
|
-
const { size, page } = pagination;
|
|
133
|
-
this.router.navigate(['/logging'], {
|
|
134
|
-
queryParams: {
|
|
135
|
-
size,
|
|
136
|
-
page: page - 1,
|
|
137
|
-
...{
|
|
138
|
-
...searchRequest,
|
|
139
|
-
...(!!searchRequest.properties?.length && {
|
|
140
|
-
properties: this.objectToBase64(searchRequest.properties),
|
|
141
|
-
}),
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
}));
|
|
146
|
-
}
|
|
147
|
-
mapQueryParamsToSearchRequest(queryParams) {
|
|
148
|
-
return {
|
|
149
|
-
...(!!queryParams.likeFormattedMessage && {
|
|
150
|
-
likeFormattedMessage: queryParams.likeFormattedMessage,
|
|
151
|
-
}),
|
|
152
|
-
...(!!queryParams.level && { level: queryParams.level }),
|
|
153
|
-
...(!!queryParams.afterTimestamp && { afterTimestamp: queryParams.afterTimestamp }),
|
|
154
|
-
...(!!queryParams.beforeTimestamp && { beforeTimestamp: queryParams.beforeTimestamp }),
|
|
155
|
-
...(!!queryParams.properties && {
|
|
156
|
-
properties: this.base64ToObject(queryParams.properties),
|
|
157
|
-
}),
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
setInitialParams() {
|
|
161
|
-
this.activatedRoute.queryParamMap
|
|
162
|
-
.pipe(take(1), map(queryParams => {
|
|
163
|
-
const { size, page, ...searchRequest } = queryParams['params'];
|
|
164
|
-
return { size, page, searchRequest };
|
|
165
|
-
}))
|
|
166
|
-
.subscribe(({ size, page, searchRequest }) => {
|
|
167
|
-
this.searchRequest$.next(this.mapQueryParamsToSearchRequest(searchRequest));
|
|
168
|
-
this.pagination$.next({
|
|
169
|
-
...this.pagination$.getValue(),
|
|
170
|
-
size: +size,
|
|
171
|
-
page: +(page ?? 0) + 1,
|
|
172
|
-
});
|
|
173
|
-
this.openQueryParamsSubscription();
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoggingListComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.IconService }, { token: i3.LoggingApiService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
177
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LoggingListComponent, isStandalone: true, selector: "ng-component", providers: [LoggingApiService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{logItems: logItems$ | async, isSearchActive: isSearchActive$ | async} as obs\"\n [items]=\"obs.logItems\"\n [fields]=\"FIELDS\"\n [loading]=\"loading$ | async\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"logging\"\n (paginationClicked)=\"onPaginationClicked($event, obs.logItems)\"\n (paginationSet)=\"onPaginationSet($event)\"\n (rowClicked)=\"onRowClickedEvent($event)\"\n>\n <valtimo-no-results\n [action]=\"obs.isSearchActive ? clearSearchButton : null\"\n [description]=\"\n 'logging.noResults.' + (obs.isSearchActive ? 'searchDescription' : 'description') | translate\n \"\n [title]=\"'logging.noResults.title' | translate\"\n ></valtimo-no-results>\n\n <button\n carbonToolbarContent\n [cdsOverflowMenu]=\"logSearch\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n</valtimo-carbon-list>\n\n<valtimo-log-details\n [open]=\"logDetailsOpen$ | async\"\n [logEvent]=\"selectedLogEvent$ | async\"\n (closeModalEvent)=\"onCloseModalEvent()\"\n></valtimo-log-details>\n\n<ng-template #logSearch>\n <valtimo-log-search\n [initSearchRequest]=\"searchRequest$ | async\"\n (searchSubmitEvent)=\"onSearchSubmitEvent($event)\"\n ></valtimo-log-search>\n</ng-template>\n\n<ng-template #clearSearchButton>\n <button cdsButton=\"primary\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: ["::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i6.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: DialogModule }, { kind: "directive", type: i2.OverflowMenuDirective, selector: "[cdsOverflowMenu], [ibmOverflowMenu]", inputs: ["ibmOverflowMenu", "cdsOverflowMenu", "flip", "offset", "wrapperClass", "customPane"], exportAs: ["overflowMenu"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: LogDetailsComponent, selector: "valtimo-log-details", inputs: ["open", "logEvent"], outputs: ["closeModalEvent"] }, { kind: "component", type: LogSearchComponent, selector: "valtimo-log-search", inputs: ["initSearchRequest"], outputs: ["searchSubmitEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
178
|
-
}
|
|
179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoggingListComponent, decorators: [{
|
|
180
|
-
type: Component,
|
|
181
|
-
args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
182
|
-
CommonModule,
|
|
183
|
-
TranslateModule,
|
|
184
|
-
ButtonModule,
|
|
185
|
-
CarbonListModule,
|
|
186
|
-
DialogModule,
|
|
187
|
-
DropdownModule,
|
|
188
|
-
IconModule,
|
|
189
|
-
LogDetailsComponent,
|
|
190
|
-
LogSearchComponent,
|
|
191
|
-
], providers: [LoggingApiService], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{logItems: logItems$ | async, isSearchActive: isSearchActive$ | async} as obs\"\n [items]=\"obs.logItems\"\n [fields]=\"FIELDS\"\n [loading]=\"loading$ | async\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"logging\"\n (paginationClicked)=\"onPaginationClicked($event, obs.logItems)\"\n (paginationSet)=\"onPaginationSet($event)\"\n (rowClicked)=\"onRowClickedEvent($event)\"\n>\n <valtimo-no-results\n [action]=\"obs.isSearchActive ? clearSearchButton : null\"\n [description]=\"\n 'logging.noResults.' + (obs.isSearchActive ? 'searchDescription' : 'description') | translate\n \"\n [title]=\"'logging.noResults.title' | translate\"\n ></valtimo-no-results>\n\n <button\n carbonToolbarContent\n [cdsOverflowMenu]=\"logSearch\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n</valtimo-carbon-list>\n\n<valtimo-log-details\n [open]=\"logDetailsOpen$ | async\"\n [logEvent]=\"selectedLogEvent$ | async\"\n (closeModalEvent)=\"onCloseModalEvent()\"\n></valtimo-log-details>\n\n<ng-template #logSearch>\n <valtimo-log-search\n [initSearchRequest]=\"searchRequest$ | async\"\n (searchSubmitEvent)=\"onSearchSubmitEvent($event)\"\n ></valtimo-log-search>\n</ng-template>\n\n<ng-template #clearSearchButton>\n <button cdsButton=\"primary\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: ["::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n"] }]
|
|
192
|
-
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.IconService }, { type: i3.LoggingApiService }, { type: i1.Router }] });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbG9nZ2luZy9zcmMvbGliL2NvbXBvbmVudHMvbG9nZ2luZy1saXN0L2xvZ2dpbmctbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2dpbmctbGlzdC9sb2dnaW5nLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsZ0JBQWdCLEVBR2hCLGtCQUFrQixFQUVsQixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsWUFBWSxFQUNaLFlBQVksRUFDWixjQUFjLEVBQ2QsVUFBVSxHQUVYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsR0FBRyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGFBQWEsR0FLZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFP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O21HQUFwQixvQkFBb0IsMkRBRnBCLENBQUMsaUJBQWlCLENBQUMsMEJDN0VoQywrekVBcUVBLDhMREZJLFlBQVksdUxBQ1osZUFBZSwyRkFDZixZQUFZLGdNQUNaLGdCQUFnQix3MUJBQ2hCLFlBQVksbVFBQ1osY0FBYyw4QkFDZCxVQUFVLDZOQUNWLG1CQUFtQiw0SEFDbkIsa0JBQWtCOzs0RkFJVCxvQkFBb0I7a0JBbEJoQyxTQUFTO2lDQUdJLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxVQUFVO3dCQUNWLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3FCQUNuQixhQUNVLENBQUMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RmlsdGVyMTYsIFRyYXNoQ2FuMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ0FSQk9OX0NPTlNUQU5UUyxcbiAgQ2FyYm9uTGlzdEl0ZW0sXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENhcmJvblRhZyxcbiAgQ29sdW1uQ29uZmlnLFxuICBERUZBVUxUX1BBR0lOQVRJT04sXG4gIFBhZ2luYXRpb24sXG4gIFZpZXdUeXBlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7UGFnZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgRGlhbG9nTW9kdWxlLFxuICBEcm9wZG93bk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSWNvblNlcnZpY2UsXG59IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHN0YXJ0V2l0aCxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBMT0dfRUxMSVBTSVNfTElNSVQsXG4gIExPR19MRVZFTF9UQUcsXG4gIExvZ2dpbmdFdmVudCxcbiAgTG9nZ2luZ0V2ZW50UHJvcGVydHksXG4gIExvZ2dpbmdFdmVudFF1ZXJ5UGFyYW1zLFxuICBMb2dnaW5nRXZlbnRTZWFyY2hSZXF1ZXN0LFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtMb2dnaW5nQXBpU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtMb2dEZXRhaWxzQ29tcG9uZW50fSBmcm9tICcuLi9sb2ctZGV0YWlscy9sb2ctZGV0YWlscy5jb21wb25lbnQnO1xuaW1wb3J0IHtMb2dTZWFyY2hDb21wb25lbnR9IGZyb20gJy4uL2xvZy1zZWFyY2gvbG9nLXNlYXJjaC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2dpbmctbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sb2dnaW5nLWxpc3QuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIERyb3Bkb3duTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgTG9nRGV0YWlsc0NvbXBvbmVudCxcbiAgICBMb2dTZWFyY2hDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW0xvZ2dpbmdBcGlTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9nZ2luZ0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSBsb2dJdGVtcyQ6IE9ic2VydmFibGU8Q2FyYm9uTGlzdEl0ZW0+ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZyQubmV4dCh0cnVlKSksXG4gICAgc3dpdGNoTWFwKHF1ZXJ5UGFyYW1zID0+XG4gICAgICB0aGlzLmxvZ2dpbmdBcGlTZXJ2aWNlLmdldFRlY2huaWNhbExvZ3Moe1xuICAgICAgICAuLi5xdWVyeVBhcmFtc1sncGFyYW1zJ10sXG4gICAgICAgIC4uLighIXF1ZXJ5UGFyYW1zWydwYXJhbXMnXT8ucHJvcGVydGllcyAmJiB7XG4gICAgICAgICAgcHJvcGVydGllczogdGhpcy5iYXNlNjRUb09iamVjdChxdWVyeVBhcmFtc1sncGFyYW1zJ10ucHJvcGVydGllcyksXG4gICAgICAgIH0pLFxuICAgICAgfSlcbiAgICApLFxuICAgIG1hcCgobG9nZ2luZ1BhZ2U6IFBhZ2U8TG9nZ2luZ0V2ZW50PikgPT4ge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLFxuICAgICAgICBjb2xsZWN0aW9uU2l6ZTogbG9nZ2luZ1BhZ2UudG90YWxFbGVtZW50cyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbG9nZ2luZ1BhZ2UuY29udGVudC5tYXAoKGxvZ0V2ZW50OiBMb2dnaW5nRXZlbnQpID0+ICh7XG4gICAgICAgIC4uLmxvZ0V2ZW50LFxuICAgICAgICBsZXZlbFRhZ3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb250ZW50OiBsb2dFdmVudC5sZXZlbCxcbiAgICAgICAgICAgIHR5cGU6IExPR19MRVZFTF9UQUdbbG9nRXZlbnQubGV2ZWxdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgfSksXG4gICAgc3RhcnRXaXRoKFtdKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hSZXF1ZXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdD4oe30pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNTZWFyY2hBY3RpdmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5zZWFyY2hSZXF1ZXN0JC5waXBlKFxuICAgIG1hcCgoc2VhcmNoUmVxdWVzdDogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdCkgPT4gT2JqZWN0LmtleXMoc2VhcmNoUmVxdWVzdCkubGVuZ3RoID4gMClcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2luYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uPihERUZBVUxUX1BBR0lOQVRJT04pO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nRGV0YWlsc09wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZExvZ0V2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TG9nZ2luZ0V2ZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IEZJRUxEUzogQ29sdW1uQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAga2V5OiAndGltZXN0YW1wJyxcbiAgICAgIGxhYmVsOiAnbG9nZ2luZy5jb2x1bW5zLnRpbWVzdGFtcCcsXG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuREFURV9USU1FLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbGV2ZWxUYWdzJyxcbiAgICAgIGxhYmVsOiAnbG9nZ2luZy5jb2x1bW5zLmxldmVsJyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5UQUdTLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZm9ybWF0dGVkTWVzc2FnZScsXG4gICAgICBsYWJlbDogJ2xvZ2dpbmcuY29sdW1ucy5mb3JtYXR0ZWRNZXNzYWdlJyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URVhULFxuICAgICAgdG9vbHRpcENoYXJMaW1pdDogTE9HX0VMTElQU0lTX0xJTUlULFxuICAgIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dpbmdBcGlTZXJ2aWNlOiBMb2dnaW5nQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0ZpbHRlcjE2LCBUcmFzaENhbjE2XSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRJbml0aWFsUGFyYW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VNb2RhbEV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMubG9nRGV0YWlsc09wZW4kLm5leHQoZmFsc2UpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkTG9nRXZlbnQkLm5leHQobnVsbCk7XG4gICAgfSwgQ0FSQk9OX0NPTlNUQU5UUy5tb2RhbEFuaW1hdGlvbk1zKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBhZ2luYXRpb25DbGlja2VkKHBhZ2U6IG51bWJlciwgbG9nSXRlbXM6IENhcmJvbkxpc3RJdGVtW10pOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVQYWdpbmF0aW9uOiBQYWdpbmF0aW9uID0gdGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHNlYXJjaFJlcXVlc3Q6IExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3QgPSB0aGlzLnNlYXJjaFJlcXVlc3QkLmdldFZhbHVlKCk7XG5cbiAgICBpZiAoIXNlYXJjaFJlcXVlc3QuYmVmb3JlVGltZXN0YW1wICYmIGFjdGl2ZVBhZ2luYXRpb24ucGFnZSA9PT0gMSlcbiAgICAgIHRoaXMuc2VhcmNoUmVxdWVzdCQubmV4dCh7Li4uc2VhcmNoUmVxdWVzdCwgYmVmb3JlVGltZXN0YW1wOiBsb2dJdGVtc1swXS50aW1lc3RhbXB9KTtcblxuICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4uYWN0aXZlUGFnaW5hdGlvbiwgcGFnZX0pO1xuICB9XG5cbiAgcHVibGljIG9uUGFnaW5hdGlvblNldChzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7Y29sbGVjdGlvblNpemUsIHBhZ2V9ID0gdGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHJlc2V0UGFnZTogYm9vbGVhbiA9IE1hdGguY2VpbCgrY29sbGVjdGlvblNpemUgLyBzaXplKSA8PSArcGFnZSAmJiArY29sbGVjdGlvblNpemUgPiAwO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksIHNpemUsIC4uLihyZXNldFBhZ2UgJiYge3BhZ2U6IDF9KX0pO1xuICB9XG5cbiAgcHVibGljIG9uUm93Q2xpY2tlZEV2ZW50KFxuICAgIHJvd0NsaWNrRXZlbnQ6IExvZ2dpbmdFdmVudCAmIHtjdHJsQ2xpY2s6IGJvb2xlYW47IHRhZ3M6IENhcmJvblRhZ1tdfVxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7Y3RybENsaWNrOiBfMSwgdGFnczogXzIsIC4uLmxvZ0V2ZW50fSA9IHJvd0NsaWNrRXZlbnQ7XG4gICAgdGhpcy5sb2dEZXRhaWxzT3BlbiQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnNlbGVjdGVkTG9nRXZlbnQkLm5leHQobG9nRXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoU3VibWl0RXZlbnQoc2VhcmNoUmVxdWVzdDogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoUmVxdWVzdCQubmV4dChzZWFyY2hSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsZWFyRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMub25TZWFyY2hTdWJtaXRFdmVudCh7fSk7XG4gIH1cblxuICBwcml2YXRlIGJhc2U2NFRvT2JqZWN0KGJhc2U2NHN0cmluZzogc3RyaW5nKTogb2JqZWN0IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhdG9iKGJhc2U2NHN0cmluZykpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYmplY3RUb0Jhc2U2NChqc09iamVjdDogb2JqZWN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYnRvYShKU09OLnN0cmluZ2lmeShqc09iamVjdCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUXVlcnlQYXJhbXNTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnBhZ2luYXRpb24kLCB0aGlzLnNlYXJjaFJlcXVlc3QkXSkuc3Vic2NyaWJlKFxuICAgICAgICAoW3BhZ2luYXRpb24sIHNlYXJjaFJlcXVlc3RdKSA9PiB7XG4gICAgICAgICAgY29uc3Qge3NpemUsIHBhZ2V9ID0gcGFnaW5hdGlvbjtcblxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2dpbmcnXSwge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgICAgcGFnZTogcGFnZSAtIDEsXG4gICAgICAgICAgICAgIC4uLntcbiAgICAgICAgICAgICAgICAuLi5zZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgICAgICAgIC4uLighIXNlYXJjaFJlcXVlc3QucHJvcGVydGllcz8ubGVuZ3RoICYmIHtcbiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMub2JqZWN0VG9CYXNlNjQoc2VhcmNoUmVxdWVzdC5wcm9wZXJ0aWVzKSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBRdWVyeVBhcmFtc1RvU2VhcmNoUmVxdWVzdChcbiAgICBxdWVyeVBhcmFtczogTG9nZ2luZ0V2ZW50UXVlcnlQYXJhbXNcbiAgKTogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLighIXF1ZXJ5UGFyYW1zLmxpa2VGb3JtYXR0ZWRNZXNzYWdlICYmIHtcbiAgICAgICAgbGlrZUZvcm1hdHRlZE1lc3NhZ2U6IHF1ZXJ5UGFyYW1zLmxpa2VGb3JtYXR0ZWRNZXNzYWdlLFxuICAgICAgfSksXG4gICAgICAuLi4oISFxdWVyeVBhcmFtcy5sZXZlbCAmJiB7bGV2ZWw6IHF1ZXJ5UGFyYW1zLmxldmVsfSksXG4gICAgICAuLi4oISFxdWVyeVBhcmFtcy5hZnRlclRpbWVzdGFtcCAmJiB7YWZ0ZXJUaW1lc3RhbXA6IHF1ZXJ5UGFyYW1zLmFmdGVyVGltZXN0YW1wfSksXG4gICAgICAuLi4oISFxdWVyeVBhcmFtcy5iZWZvcmVUaW1lc3RhbXAgJiYge2JlZm9yZVRpbWVzdGFtcDogcXVlcnlQYXJhbXMuYmVmb3JlVGltZXN0YW1wfSksXG4gICAgICAuLi4oISFxdWVyeVBhcmFtcy5wcm9wZXJ0aWVzICYmIHtcbiAgICAgICAgcHJvcGVydGllczogdGhpcy5iYXNlNjRUb09iamVjdChxdWVyeVBhcmFtcy5wcm9wZXJ0aWVzKSBhcyBBcnJheTxMb2dnaW5nRXZlbnRQcm9wZXJ0eT4sXG4gICAgICB9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbml0aWFsUGFyYW1zKCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbU1hcFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcChxdWVyeVBhcmFtcyA9PiB7XG4gICAgICAgICAgY29uc3Qge3NpemUsIHBhZ2UsIC4uLnNlYXJjaFJlcXVlc3R9ID0gcXVlcnlQYXJhbXNbJ3BhcmFtcyddO1xuICAgICAgICAgIHJldHVybiB7c2l6ZSwgcGFnZSwgc2VhcmNoUmVxdWVzdH07XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7c2l6ZSwgcGFnZSwgc2VhcmNoUmVxdWVzdH0pID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hSZXF1ZXN0JC5uZXh0KHRoaXMubWFwUXVlcnlQYXJhbXNUb1NlYXJjaFJlcXVlc3Qoc2VhcmNoUmVxdWVzdCkpO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoe1xuICAgICAgICAgIC4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSxcbiAgICAgICAgICBzaXplOiArc2l6ZSxcbiAgICAgICAgICBwYWdlOiArKHBhZ2UgPz8gMCkgKyAxLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9wZW5RdWVyeVBhcmFtc1N1YnNjcmlwdGlvbigpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHZhbHRpbW8tY2FyYm9uLWxpc3RcbiAgKm5nSWY9XCJ7bG9nSXRlbXM6IGxvZ0l0ZW1zJCB8IGFzeW5jLCBpc1NlYXJjaEFjdGl2ZTogaXNTZWFyY2hBY3RpdmUkIHwgYXN5bmN9IGFzIG9ic1wiXG4gIFtpdGVtc109XCJvYnMubG9nSXRlbXNcIlxuICBbZmllbGRzXT1cIkZJRUxEU1wiXG4gIFtsb2FkaW5nXT1cImxvYWRpbmckIHwgYXN5bmNcIlxuICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uJCB8IGFzeW5jXCJcbiAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJsb2dnaW5nXCJcbiAgKHBhZ2luYXRpb25DbGlja2VkKT1cIm9uUGFnaW5hdGlvbkNsaWNrZWQoJGV2ZW50LCBvYnMubG9nSXRlbXMpXCJcbiAgKHBhZ2luYXRpb25TZXQpPVwib25QYWdpbmF0aW9uU2V0KCRldmVudClcIlxuICAocm93Q2xpY2tlZCk9XCJvblJvd0NsaWNrZWRFdmVudCgkZXZlbnQpXCJcbj5cbiAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgIFthY3Rpb25dPVwib2JzLmlzU2VhcmNoQWN0aXZlID8gY2xlYXJTZWFyY2hCdXR0b24gOiBudWxsXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiXG4gICAgICAnbG9nZ2luZy5ub1Jlc3VsdHMuJyArIChvYnMuaXNTZWFyY2hBY3RpdmUgPyAnc2VhcmNoRGVzY3JpcHRpb24nIDogJ2Rlc2NyaXB0aW9uJykgfCB0cmFuc2xhdGVcbiAgICBcIlxuICAgIFt0aXRsZV09XCInbG9nZ2luZy5ub1Jlc3VsdHMudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuXG4gIDxidXR0b25cbiAgICBjYXJib25Ub29sYmFyQ29udGVudFxuICAgIFtjZHNPdmVyZmxvd01lbnVdPVwibG9nU2VhcmNoXCJcbiAgICBbY3VzdG9tUGFuZV09XCJ0cnVlXCJcbiAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgW2ZsaXBdPVwidHJ1ZVwiXG4gICAgW29mZnNldF09XCJ7eDogMCwgeTogNDd9XCJcbiAgICBjZHNCdXR0b249XCJnaG9zdFwiXG4gICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgPlxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJmaWx0ZXJcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG5cbjx2YWx0aW1vLWxvZy1kZXRhaWxzXG4gIFtvcGVuXT1cImxvZ0RldGFpbHNPcGVuJCB8IGFzeW5jXCJcbiAgW2xvZ0V2ZW50XT1cInNlbGVjdGVkTG9nRXZlbnQkIHwgYXN5bmNcIlxuICAoY2xvc2VNb2RhbEV2ZW50KT1cIm9uQ2xvc2VNb2RhbEV2ZW50KClcIlxuPjwvdmFsdGltby1sb2ctZGV0YWlscz5cblxuPG5nLXRlbXBsYXRlICNsb2dTZWFyY2g+XG4gIDx2YWx0aW1vLWxvZy1zZWFyY2hcbiAgICBbaW5pdFNlYXJjaFJlcXVlc3RdPVwic2VhcmNoUmVxdWVzdCQgfCBhc3luY1wiXG4gICAgKHNlYXJjaFN1Ym1pdEV2ZW50KT1cIm9uU2VhcmNoU3VibWl0RXZlbnQoJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tbG9nLXNlYXJjaD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2xlYXJTZWFyY2hCdXR0b24+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkNsZWFyRmlsdGVyKClcIj5cbiAgICB7eyAnaW50ZXJmYWNlLmNsZWFyJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
export * from './logging.model';
|
|
17
|
-
export * from './search.model';
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xvZ2dpbmcubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gubW9kZWwnO1xuIl19
|