@ni/nimble-angular 17.1.0 → 17.1.2

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.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmktbmltYmxlLWFuZ3VsYXItdGFibGUtY29sdW1uLWRhdGUtdGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pL25pbWJsZS1hbmd1bGFyL3RhYmxlLWNvbHVtbi9kYXRlLXRleHQvbmktbmltYmxlLWFuZ3VsYXItdGFibGUtY29sdW1uLWRhdGUtdGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,305 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { tableColumnDateTextTag } from '@ni/nimble-components/dist/esm/table-column/date-text';
3
+ import { toBooleanProperty, toNullableNumberProperty } from '@ni/nimble-angular/internal-utilities';
4
+ import { NimbleTableColumnBaseDirective } from '@ni/nimble-angular/table-column';
5
+ import * as i0 from "@angular/core";
6
+ export { tableColumnDateTextTag };
7
+ /**
8
+ * Directive to provide Angular integration for the table column element for date text.
9
+ */
10
+ export class NimbleTableColumnDateTextDirective extends NimbleTableColumnBaseDirective {
11
+ constructor(renderer, elementRef) {
12
+ super(renderer, elementRef);
13
+ }
14
+ get fieldName() {
15
+ return this.elementRef.nativeElement.fieldName;
16
+ }
17
+ // Renaming because property should have camel casing, but attribute should not
18
+ // eslint-disable-next-line @angular-eslint/no-input-rename
19
+ set fieldName(value) {
20
+ this.renderer.setProperty(this.elementRef.nativeElement, 'fieldName', value);
21
+ }
22
+ get format() {
23
+ return this.elementRef.nativeElement.format;
24
+ }
25
+ set format(value) {
26
+ this.renderer.setProperty(this.elementRef.nativeElement, 'format', value);
27
+ }
28
+ get customLocaleMatcher() {
29
+ return this.elementRef.nativeElement.customLocaleMatcher;
30
+ }
31
+ // Renaming because property should have camel casing, but attribute should not
32
+ // eslint-disable-next-line @angular-eslint/no-input-rename
33
+ set customLocaleMatcher(value) {
34
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customLocaleMatcher', value);
35
+ }
36
+ get customWeekday() {
37
+ return this.elementRef.nativeElement.customWeekday;
38
+ }
39
+ // Renaming because property should have camel casing, but attribute should not
40
+ // eslint-disable-next-line @angular-eslint/no-input-rename
41
+ set customWeekday(value) {
42
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customWeekday', value);
43
+ }
44
+ get customEra() {
45
+ return this.elementRef.nativeElement.customEra;
46
+ }
47
+ // Renaming because property should have camel casing, but attribute should not
48
+ // eslint-disable-next-line @angular-eslint/no-input-rename
49
+ set customEra(value) {
50
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customEra', value);
51
+ }
52
+ get customYear() {
53
+ return this.elementRef.nativeElement.customYear;
54
+ }
55
+ // Renaming because property should have camel casing, but attribute should not
56
+ // eslint-disable-next-line @angular-eslint/no-input-rename
57
+ set customYear(value) {
58
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customYear', value);
59
+ }
60
+ get customMonth() {
61
+ return this.elementRef.nativeElement.customMonth;
62
+ }
63
+ // Renaming because property should have camel casing, but attribute should not
64
+ // eslint-disable-next-line @angular-eslint/no-input-rename
65
+ set customMonth(value) {
66
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customMonth', value);
67
+ }
68
+ get customDay() {
69
+ return this.elementRef.nativeElement.customDay;
70
+ }
71
+ // Renaming because property should have camel casing, but attribute should not
72
+ // eslint-disable-next-line @angular-eslint/no-input-rename
73
+ set customDay(value) {
74
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customDay', value);
75
+ }
76
+ get customHour() {
77
+ return this.elementRef.nativeElement.customHour;
78
+ }
79
+ // Renaming because property should have camel casing, but attribute should not
80
+ // eslint-disable-next-line @angular-eslint/no-input-rename
81
+ set customHour(value) {
82
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customHour', value);
83
+ }
84
+ get customMinute() {
85
+ return this.elementRef.nativeElement.customMinute;
86
+ }
87
+ // Renaming because property should have camel casing, but attribute should not
88
+ // eslint-disable-next-line @angular-eslint/no-input-rename
89
+ set customMinute(value) {
90
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customMinute', value);
91
+ }
92
+ get customSecond() {
93
+ return this.elementRef.nativeElement.customSecond;
94
+ }
95
+ // Renaming because property should have camel casing, but attribute should not
96
+ // eslint-disable-next-line @angular-eslint/no-input-rename
97
+ set customSecond(value) {
98
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customSecond', value);
99
+ }
100
+ get customTimeZoneName() {
101
+ return this.elementRef.nativeElement.customTimeZoneName;
102
+ }
103
+ // Renaming because property should have camel casing, but attribute should not
104
+ // eslint-disable-next-line @angular-eslint/no-input-rename
105
+ set customTimeZoneName(value) {
106
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customTimeZoneName', value);
107
+ }
108
+ get customFormatMatcher() {
109
+ return this.elementRef.nativeElement.customFormatMatcher;
110
+ }
111
+ // Renaming because property should have camel casing, but attribute should not
112
+ // eslint-disable-next-line @angular-eslint/no-input-rename
113
+ set customFormatMatcher(value) {
114
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customFormatMatcher', value);
115
+ }
116
+ get customHour12() {
117
+ return this.elementRef.nativeElement.customHour12;
118
+ }
119
+ // Renaming because property should have camel casing, but attribute should not
120
+ // eslint-disable-next-line @angular-eslint/no-input-rename
121
+ set customHour12(value) {
122
+ let convertedValue;
123
+ if (typeof value === 'boolean') {
124
+ convertedValue = value;
125
+ }
126
+ else if (value === undefined) {
127
+ convertedValue = undefined;
128
+ }
129
+ else {
130
+ convertedValue = value === 'true';
131
+ }
132
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customHour12', convertedValue);
133
+ }
134
+ get customTimeZone() {
135
+ return this.elementRef.nativeElement.customTimeZone;
136
+ }
137
+ // Renaming because property should have camel casing, but attribute should not
138
+ // eslint-disable-next-line @angular-eslint/no-input-rename
139
+ set customTimeZone(value) {
140
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customTimeZone', value);
141
+ }
142
+ get customCalendar() {
143
+ return this.elementRef.nativeElement.customCalendar;
144
+ }
145
+ // Renaming because property should have camel casing, but attribute should not
146
+ // eslint-disable-next-line @angular-eslint/no-input-rename
147
+ set customCalendar(value) {
148
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customCalendar', value);
149
+ }
150
+ get customDayPeriod() {
151
+ return this.elementRef.nativeElement.customDayPeriod;
152
+ }
153
+ // Renaming because property should have camel casing, but attribute should not
154
+ // eslint-disable-next-line @angular-eslint/no-input-rename
155
+ set customDayPeriod(value) {
156
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customDayPeriod', value);
157
+ }
158
+ get customNumberingSystem() {
159
+ return this.elementRef.nativeElement.customNumberingSystem;
160
+ }
161
+ // Renaming because property should have camel casing, but attribute should not
162
+ // eslint-disable-next-line @angular-eslint/no-input-rename
163
+ set customNumberingSystem(value) {
164
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customNumberingSystem', value);
165
+ }
166
+ get customDateStyle() {
167
+ return this.elementRef.nativeElement.customDateStyle;
168
+ }
169
+ // Renaming because property should have camel casing, but attribute should not
170
+ // eslint-disable-next-line @angular-eslint/no-input-rename
171
+ set customDateStyle(value) {
172
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customDateStyle', value);
173
+ }
174
+ get customTimeStyle() {
175
+ return this.elementRef.nativeElement.customTimeStyle;
176
+ }
177
+ // Renaming because property should have camel casing, but attribute should not
178
+ // eslint-disable-next-line @angular-eslint/no-input-rename
179
+ set customTimeStyle(value) {
180
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customTimeStyle', value);
181
+ }
182
+ get customHourCycle() {
183
+ return this.elementRef.nativeElement.customHourCycle;
184
+ }
185
+ // Renaming because property should have camel casing, but attribute should not
186
+ // eslint-disable-next-line @angular-eslint/no-input-rename
187
+ set customHourCycle(value) {
188
+ this.renderer.setProperty(this.elementRef.nativeElement, 'customHourCycle', value);
189
+ }
190
+ get fractionalWidth() {
191
+ return this.elementRef.nativeElement.fractionalWidth;
192
+ }
193
+ // Renaming because property should have camel casing, but attribute should not
194
+ // eslint-disable-next-line @angular-eslint/no-input-rename
195
+ set fractionalWidth(value) {
196
+ this.renderer.setProperty(this.elementRef.nativeElement, 'fractionalWidth', toNullableNumberProperty(value));
197
+ }
198
+ get minPixelWidth() {
199
+ return this.elementRef.nativeElement.minPixelWidth;
200
+ }
201
+ // Renaming because property should have camel casing, but attribute should not
202
+ // eslint-disable-next-line @angular-eslint/no-input-rename
203
+ set minPixelWidth(value) {
204
+ this.renderer.setProperty(this.elementRef.nativeElement, 'minPixelWidth', toNullableNumberProperty(value));
205
+ }
206
+ get groupIndex() {
207
+ return this.elementRef.nativeElement.groupIndex;
208
+ }
209
+ // Renaming because property should have camel casing, but attribute should not
210
+ // eslint-disable-next-line @angular-eslint/no-input-rename
211
+ set groupIndex(value) {
212
+ this.renderer.setProperty(this.elementRef.nativeElement, 'groupIndex', toNullableNumberProperty(value));
213
+ }
214
+ get groupingDisabled() {
215
+ return this.elementRef.nativeElement.groupingDisabled;
216
+ }
217
+ // Renaming because property should have camel casing, but attribute should not
218
+ // eslint-disable-next-line @angular-eslint/no-input-rename
219
+ set groupingDisabled(value) {
220
+ this.renderer.setProperty(this.elementRef.nativeElement, 'groupingDisabled', toBooleanProperty(value));
221
+ }
222
+ }
223
+ NimbleTableColumnDateTextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NimbleTableColumnDateTextDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
224
+ NimbleTableColumnDateTextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: NimbleTableColumnDateTextDirective, selector: "nimble-table-column-date-text", inputs: { fieldName: ["field-name", "fieldName"], format: "format", customLocaleMatcher: ["custom-locale-matcher", "customLocaleMatcher"], customWeekday: ["custom-weekday", "customWeekday"], customEra: ["custom-era", "customEra"], customYear: ["custom-year", "customYear"], customMonth: ["custom-month", "customMonth"], customDay: ["custom-day", "customDay"], customHour: ["custom-hour", "customHour"], customMinute: ["custom-minute", "customMinute"], customSecond: ["custom-second", "customSecond"], customTimeZoneName: ["custom-time-zone-name", "customTimeZoneName"], customFormatMatcher: ["custom-format-matcher", "customFormatMatcher"], customHour12: ["custom-hour12", "customHour12"], customTimeZone: ["custom-time-zone", "customTimeZone"], customCalendar: ["custom-calendar", "customCalendar"], customDayPeriod: ["custom-day-period", "customDayPeriod"], customNumberingSystem: ["custom-numbering-system", "customNumberingSystem"], customDateStyle: ["custom-date-style", "customDateStyle"], customTimeStyle: ["custom-time-style", "customTimeStyle"], customHourCycle: ["custom-hour-cycle", "customHourCycle"], fractionalWidth: ["fractional-width", "fractionalWidth"], minPixelWidth: ["min-pixel-width", "minPixelWidth"], groupIndex: ["group-index", "groupIndex"], groupingDisabled: ["grouping-disabled", "groupingDisabled"] }, usesInheritance: true, ngImport: i0 });
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NimbleTableColumnDateTextDirective, decorators: [{
226
+ type: Directive,
227
+ args: [{
228
+ selector: 'nimble-table-column-date-text'
229
+ }]
230
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { fieldName: [{
231
+ type: Input,
232
+ args: ['field-name']
233
+ }], format: [{
234
+ type: Input
235
+ }], customLocaleMatcher: [{
236
+ type: Input,
237
+ args: ['custom-locale-matcher']
238
+ }], customWeekday: [{
239
+ type: Input,
240
+ args: ['custom-weekday']
241
+ }], customEra: [{
242
+ type: Input,
243
+ args: ['custom-era']
244
+ }], customYear: [{
245
+ type: Input,
246
+ args: ['custom-year']
247
+ }], customMonth: [{
248
+ type: Input,
249
+ args: ['custom-month']
250
+ }], customDay: [{
251
+ type: Input,
252
+ args: ['custom-day']
253
+ }], customHour: [{
254
+ type: Input,
255
+ args: ['custom-hour']
256
+ }], customMinute: [{
257
+ type: Input,
258
+ args: ['custom-minute']
259
+ }], customSecond: [{
260
+ type: Input,
261
+ args: ['custom-second']
262
+ }], customTimeZoneName: [{
263
+ type: Input,
264
+ args: ['custom-time-zone-name']
265
+ }], customFormatMatcher: [{
266
+ type: Input,
267
+ args: ['custom-format-matcher']
268
+ }], customHour12: [{
269
+ type: Input,
270
+ args: ['custom-hour12']
271
+ }], customTimeZone: [{
272
+ type: Input,
273
+ args: ['custom-time-zone']
274
+ }], customCalendar: [{
275
+ type: Input,
276
+ args: ['custom-calendar']
277
+ }], customDayPeriod: [{
278
+ type: Input,
279
+ args: ['custom-day-period']
280
+ }], customNumberingSystem: [{
281
+ type: Input,
282
+ args: ['custom-numbering-system']
283
+ }], customDateStyle: [{
284
+ type: Input,
285
+ args: ['custom-date-style']
286
+ }], customTimeStyle: [{
287
+ type: Input,
288
+ args: ['custom-time-style']
289
+ }], customHourCycle: [{
290
+ type: Input,
291
+ args: ['custom-hour-cycle']
292
+ }], fractionalWidth: [{
293
+ type: Input,
294
+ args: ['fractional-width']
295
+ }], minPixelWidth: [{
296
+ type: Input,
297
+ args: ['min-pixel-width']
298
+ }], groupIndex: [{
299
+ type: Input,
300
+ args: ['group-index']
301
+ }], groupingDisabled: [{
302
+ type: Input,
303
+ args: ['grouping-disabled']
304
+ }] } });
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmltYmxlLXRhYmxlLWNvbHVtbi1kYXRlLXRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmkvbmltYmxlLWFuZ3VsYXIvdGFibGUtY29sdW1uL2RhdGUtdGV4dC9uaW1ibGUtdGFibGUtY29sdW1uLWRhdGUtdGV4dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUE0QixzQkFBc0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3pILE9BQU8sRUFBbUQsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNySixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFxQ2pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxDQUFDO0FBRWxDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLDhCQUFtRDtJQWlRdkcsWUFBbUIsUUFBbUIsRUFBRSxVQUEyQztRQUMvRSxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFsUUQsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQ25ELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkRBQTJEO0lBQzNELElBQWdDLFNBQVMsQ0FBQyxLQUF5QjtRQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO0lBQ2hELENBQUM7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QTdELEtBQUs7dUJBQUMsdUJBQXVCO2dCQVVLLFlBQVk7c0JBQTlDLEtBQUs7dUJBQUMsZUFBZTtnQkFrQmdCLGNBQWM7c0JBQW5ELEtBQUs7dUJBQUMsa0JBQWtCO2dCQVVZLGNBQWM7c0JBQWxELEtBQUs7dUJBQUMsaUJBQWlCO2dCQVVlLGVBQWU7c0JBQXJELEtBQUs7dUJBQUMsbUJBQW1CO2dCQVVtQixxQkFBcUI7c0JBQWpFLEtBQUs7dUJBQUMseUJBQXlCO2dCQVVPLGVBQWU7c0JBQXJELEtBQUs7dUJBQUMsbUJBQW1CO2dCQVVhLGVBQWU7c0JBQXJELEtBQUs7dUJBQUMsbUJBQW1CO2dCQVVhLGVBQWU7c0JBQXJELEtBQUs7dUJBQUMsbUJBQW1CO2dCQVVZLGVBQWU7c0JBQXBELEtBQUs7dUJBQUMsa0JBQWtCO2dCQVVZLGFBQWE7c0JBQWpELEtBQUs7dUJBQUMsaUJBQWlCO2dCQVVTLFVBQVU7c0JBQTFDLEtBQUs7dUJBQUMsYUFBYTtnQkFVbUIsZ0JBQWdCO3NCQUF0RCxLQUFLO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHlwZSBUYWJsZUNvbHVtbkRhdGVUZXh0LCB0YWJsZUNvbHVtbkRhdGVUZXh0VGFnIH0gZnJvbSAnQG5pL25pbWJsZS1jb21wb25lbnRzL2Rpc3QvZXNtL3RhYmxlLWNvbHVtbi9kYXRlLXRleHQnO1xuaW1wb3J0IHsgQm9vbGVhblZhbHVlT3JBdHRyaWJ1dGUsIE51bWJlclZhbHVlT3JBdHRyaWJ1dGUsIHRvQm9vbGVhblByb3BlcnR5LCB0b051bGxhYmxlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAbmkvbmltYmxlLWFuZ3VsYXIvaW50ZXJuYWwtdXRpbGl0aWVzJztcbmltcG9ydCB7IE5pbWJsZVRhYmxlQ29sdW1uQmFzZURpcmVjdGl2ZSB9IGZyb20gJ0BuaS9uaW1ibGUtYW5ndWxhci90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHR5cGUge1xuICAgIERhdGVUZXh0Rm9ybWF0LFxuICAgIERhdGVTdHlsZSxcbiAgICBEYXlGb3JtYXQsXG4gICAgRGF5UGVyaW9kRm9ybWF0LFxuICAgIEVyYUZvcm1hdCxcbiAgICBGb3JtYXRNYXRjaGVyQWxnb3JpdGhtLFxuICAgIEhvdXJDeWNsZUZvcm1hdCxcbiAgICBIb3VyRm9ybWF0LFxuICAgIExvY2FsZU1hdGNoZXJBbGdvcml0aG0sXG4gICAgTWludXRlRm9ybWF0LFxuICAgIE1vbnRoRm9ybWF0LFxuICAgIFNlY29uZEZvcm1hdCxcbiAgICBUaW1lU3R5bGUsXG4gICAgVGltZVpvbmVOYW1lRm9ybWF0LFxuICAgIFdlZWtkYXlGb3JtYXQsXG4gICAgWWVhckZvcm1hdFxufSBmcm9tICdAbmkvbmltYmxlLWNvbXBvbmVudHMvZGlzdC9lc20vdGFibGUtY29sdW1uL2RhdGUtdGV4dC90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIHsgVGFibGVDb2x1bW5EYXRlVGV4dCB9O1xuZXhwb3J0IHR5cGUgeyBEYXRlU3R5bGUgfTtcbmV4cG9ydCB0eXBlIHsgRGF0ZVRleHRGb3JtYXQgfTtcbmV4cG9ydCB0eXBlIHsgRGF5Rm9ybWF0IH07XG5leHBvcnQgdHlwZSB7IERheVBlcmlvZEZvcm1hdCB9O1xuZXhwb3J0IHR5cGUgeyBFcmFGb3JtYXQgfTtcbmV4cG9ydCB0eXBlIHsgRm9ybWF0TWF0Y2hlckFsZ29yaXRobSB9O1xuZXhwb3J0IHR5cGUgeyBIb3VyQ3ljbGVGb3JtYXQgfTtcbmV4cG9ydCB0eXBlIHsgSG91ckZvcm1hdCB9O1xuZXhwb3J0IHR5cGUgeyBMb2NhbGVNYXRjaGVyQWxnb3JpdGhtIH07XG5leHBvcnQgdHlwZSB7IE1pbnV0ZUZvcm1hdCB9O1xuZXhwb3J0IHR5cGUgeyBNb250aEZvcm1hdCB9O1xuZXhwb3J0IHR5cGUgeyBTZWNvbmRGb3JtYXQgfTtcbmV4cG9ydCB0eXBlIHsgVGltZVN0eWxlIH07XG5leHBvcnQgdHlwZSB7IFRpbWVab25lTmFtZUZvcm1hdCB9O1xuZXhwb3J0IHR5cGUgeyBXZWVrZGF5Rm9ybWF0IH07XG5leHBvcnQgdHlwZSB7IFllYXJGb3JtYXQgfTtcbmV4cG9ydCB7IHRhYmxlQ29sdW1uRGF0ZVRleHRUYWcgfTtcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gcHJvdmlkZSBBbmd1bGFyIGludGVncmF0aW9uIGZvciB0aGUgdGFibGUgY29sdW1uIGVsZW1lbnQgZm9yIGRhdGUgdGV4dC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICduaW1ibGUtdGFibGUtY29sdW1uLWRhdGUtdGV4dCdcbn0pXG5leHBvcnQgY2xhc3MgTmltYmxlVGFibGVDb2x1bW5EYXRlVGV4dERpcmVjdGl2ZSBleHRlbmRzIE5pbWJsZVRhYmxlQ29sdW1uQmFzZURpcmVjdGl2ZTxUYWJsZUNvbHVtbkRhdGVUZXh0PiB7XG4gICAgcHVibGljIGdldCBmaWVsZE5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZpZWxkTmFtZTtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2ZpZWxkLW5hbWUnKSBwdWJsaWMgc2V0IGZpZWxkTmFtZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdmaWVsZE5hbWUnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmb3JtYXQoKTogRGF0ZVRleHRGb3JtYXQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9ybWF0O1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgZm9ybWF0KHZhbHVlOiBEYXRlVGV4dEZvcm1hdCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZm9ybWF0JywgdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tTG9jYWxlTWF0Y2hlcigpOiBMb2NhbGVNYXRjaGVyQWxnb3JpdGhtIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmN1c3RvbUxvY2FsZU1hdGNoZXI7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjdXN0b20tbG9jYWxlLW1hdGNoZXInKSBwdWJsaWMgc2V0IGN1c3RvbUxvY2FsZU1hdGNoZXIodmFsdWU6IExvY2FsZU1hdGNoZXJBbGdvcml0aG0pIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2N1c3RvbUxvY2FsZU1hdGNoZXInLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21XZWVrZGF5KCk6IFdlZWtkYXlGb3JtYXQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY3VzdG9tV2Vla2RheTtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2N1c3RvbS13ZWVrZGF5JykgcHVibGljIHNldCBjdXN0b21XZWVrZGF5KHZhbHVlOiBXZWVrZGF5Rm9ybWF0KSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjdXN0b21XZWVrZGF5JywgdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tRXJhKCk6IEVyYUZvcm1hdCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jdXN0b21FcmE7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjdXN0b20tZXJhJykgcHVibGljIHNldCBjdXN0b21FcmEodmFsdWU6IEVyYUZvcm1hdCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY3VzdG9tRXJhJywgdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tWWVhcigpOiBZZWFyRm9ybWF0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmN1c3RvbVllYXI7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjdXN0b20teWVhcicpIHB1YmxpYyBzZXQgY3VzdG9tWWVhcih2YWx1ZTogWWVhckZvcm1hdCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY3VzdG9tWWVhcicsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbU1vbnRoKCk6IE1vbnRoRm9ybWF0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmN1c3RvbU1vbnRoO1xuICAgIH1cblxuICAgIC8vIFJlbmFtaW5nIGJlY2F1c2UgcHJvcGVydHkgc2hvdWxkIGhhdmUgY2FtZWwgY2FzaW5nLCBidXQgYXR0cmlidXRlIHNob3VsZCBub3RcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnY3VzdG9tLW1vbnRoJykgcHVibGljIHNldCBjdXN0b21Nb250aCh2YWx1ZTogTW9udGhGb3JtYXQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2N1c3RvbU1vbnRoJywgdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tRGF5KCk6IERheUZvcm1hdCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jdXN0b21EYXk7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjdXN0b20tZGF5JykgcHVibGljIHNldCBjdXN0b21EYXkodmFsdWU6IERheUZvcm1hdCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY3VzdG9tRGF5JywgdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tSG91cigpOiBIb3VyRm9ybWF0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmN1c3RvbUhvdXI7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjdXN0b20taG91cicpIHB1YmxpYyBzZXQgY3VzdG9tSG91cih2YWx1ZTogSG91ckZvcm1hdCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY3VzdG9tSG91cicsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbU1pbnV0ZSgpOiBNaW51dGVGb3JtYXQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY3VzdG9tTWludXRlO1xuICAgIH1cblxuICAgIC8vIFJlbmFtaW5nIGJlY2F1c2UgcHJvcGVydHkgc2hvdWxkIGhhdmUgY2FtZWwgY2FzaW5nLCBidXQgYXR0cmlidXRlIHNob3VsZCBub3RcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnY3VzdG9tLW1pbnV0ZScpIHB1YmxpYyBzZXQgY3VzdG9tTWludXRlKHZhbHVlOiBNaW51dGVGb3JtYXQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2N1c3RvbU1pbnV0ZScsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbVNlY29uZCgpOiBTZWNvbmRGb3JtYXQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY3VzdG9tU2Vjb25kO1xuICAgIH1cblxuICAgIC8vIFJlbmFtaW5nIGJlY2F1c2UgcHJvcGVydHkgc2hvdWxkIGhhdmUgY2FtZWwgY2FzaW5nLCBidXQgYXR0cmlidXRlIHNob3VsZCBub3RcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnY3VzdG9tLXNlY29uZCcpIHB1YmxpYyBzZXQgY3VzdG9tU2Vjb25kKHZhbHVlOiBTZWNvbmRGb3JtYXQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2N1c3RvbVNlY29uZCcsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbVRpbWVab25lTmFtZSgpOiBUaW1lWm9uZU5hbWVGb3JtYXQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY3VzdG9tVGltZVpvbmVOYW1lO1xuICAgIH1cblxuICAgIC8vIFJlbmFtaW5nIGJlY2F1c2UgcHJvcGVydHkgc2hvdWxkIGhhdmUgY2FtZWwgY2FzaW5nLCBidXQgYXR0cmlidXRlIHNob3VsZCBub3RcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnY3VzdG9tLXRpbWUtem9uZS1uYW1lJykgcHVibGljIHNldCBjdXN0b21UaW1lWm9uZU5hbWUodmFsdWU6IFRpbWVab25lTmFtZUZvcm1hdCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY3VzdG9tVGltZVpvbmVOYW1lJywgdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tRm9ybWF0TWF0Y2hlcigpOiBGb3JtYXRNYXRjaGVyQWxnb3JpdGhtIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmN1c3RvbUZvcm1hdE1hdGNoZXI7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjdXN0b20tZm9ybWF0LW1hdGNoZXInKSBwdWJsaWMgc2V0IGN1c3RvbUZvcm1hdE1hdGNoZXIodmFsdWU6IEZvcm1hdE1hdGNoZXJBbGdvcml0aG0pIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2N1c3RvbUZvcm1hdE1hdGNoZXInLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Ib3VyMTIoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jdXN0b21Ib3VyMTI7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjdXN0b20taG91cjEyJykgcHVibGljIHNldCBjdXN0b21Ib3VyMTIodmFsdWU6IGJvb2xlYW4gfCAndHJ1ZScgfCAnZmFsc2UnIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBjb252ZXJ0ZWRWYWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBjb252ZXJ0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnZlcnRlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udmVydGVkVmFsdWUgPSB2YWx1ZSA9PT0gJ3RydWUnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjdXN0b21Ib3VyMTInLCBjb252ZXJ0ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21UaW1lWm9uZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY3VzdG9tVGltZVpvbmU7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjdXN0b20tdGltZS16b25lJykgcHVibGljIHNldCBjdXN0b21UaW1lWm9uZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjdXN0b21UaW1lWm9uZScsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbUNhbGVuZGFyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jdXN0b21DYWxlbmRhcjtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2N1c3RvbS1jYWxlbmRhcicpIHB1YmxpYyBzZXQgY3VzdG9tQ2FsZW5kYXIodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY3VzdG9tQ2FsZW5kYXInLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21EYXlQZXJpb2QoKTogRGF5UGVyaW9kRm9ybWF0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmN1c3RvbURheVBlcmlvZDtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2N1c3RvbS1kYXktcGVyaW9kJykgcHVibGljIHNldCBjdXN0b21EYXlQZXJpb2QodmFsdWU6IERheVBlcmlvZEZvcm1hdCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY3VzdG9tRGF5UGVyaW9kJywgdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tTnVtYmVyaW5nU3lzdGVtKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jdXN0b21OdW1iZXJpbmdTeXN0ZW07XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjdXN0b20tbnVtYmVyaW5nLXN5c3RlbScpIHB1YmxpYyBzZXQgY3VzdG9tTnVtYmVyaW5nU3lzdGVtKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2N1c3RvbU51bWJlcmluZ1N5c3RlbScsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbURhdGVTdHlsZSgpOiBEYXRlU3R5bGUge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY3VzdG9tRGF0ZVN0eWxlO1xuICAgIH1cblxuICAgIC8vIFJlbmFtaW5nIGJlY2F1c2UgcHJvcGVydHkgc2hvdWxkIGhhdmUgY2FtZWwgY2FzaW5nLCBidXQgYXR0cmlidXRlIHNob3VsZCBub3RcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnY3VzdG9tLWRhdGUtc3R5bGUnKSBwdWJsaWMgc2V0IGN1c3RvbURhdGVTdHlsZSh2YWx1ZTogRGF0ZVN0eWxlKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjdXN0b21EYXRlU3R5bGUnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21UaW1lU3R5bGUoKTogVGltZVN0eWxlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmN1c3RvbVRpbWVTdHlsZTtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2N1c3RvbS10aW1lLXN0eWxlJykgcHVibGljIHNldCBjdXN0b21UaW1lU3R5bGUodmFsdWU6IFRpbWVTdHlsZSkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY3VzdG9tVGltZVN0eWxlJywgdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tSG91ckN5Y2xlKCk6IEhvdXJDeWNsZUZvcm1hdCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jdXN0b21Ib3VyQ3ljbGU7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjdXN0b20taG91ci1jeWNsZScpIHB1YmxpYyBzZXQgY3VzdG9tSG91ckN5Y2xlKHZhbHVlOiBIb3VyQ3ljbGVGb3JtYXQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2N1c3RvbUhvdXJDeWNsZScsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZyYWN0aW9uYWxXaWR0aCgpOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZyYWN0aW9uYWxXaWR0aDtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2ZyYWN0aW9uYWwtd2lkdGgnKSBwdWJsaWMgc2V0IGZyYWN0aW9uYWxXaWR0aCh2YWx1ZTogTnVtYmVyVmFsdWVPckF0dHJpYnV0ZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2ZyYWN0aW9uYWxXaWR0aCcsIHRvTnVsbGFibGVOdW1iZXJQcm9wZXJ0eSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWluUGl4ZWxXaWR0aCgpOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm1pblBpeGVsV2lkdGg7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdtaW4tcGl4ZWwtd2lkdGgnKSBwdWJsaWMgc2V0IG1pblBpeGVsV2lkdGgodmFsdWU6IE51bWJlclZhbHVlT3JBdHRyaWJ1dGUgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtaW5QaXhlbFdpZHRoJywgdG9OdWxsYWJsZU51bWJlclByb3BlcnR5KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBncm91cEluZGV4KCk6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ3JvdXBJbmRleDtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2dyb3VwLWluZGV4JykgcHVibGljIHNldCBncm91cEluZGV4KHZhbHVlOiBOdW1iZXJWYWx1ZU9yQXR0cmlidXRlIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZ3JvdXBJbmRleCcsIHRvTnVsbGFibGVOdW1iZXJQcm9wZXJ0eSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZ3JvdXBpbmdEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lmdyb3VwaW5nRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdncm91cGluZy1kaXNhYmxlZCcpIHB1YmxpYyBzZXQgZ3JvdXBpbmdEaXNhYmxlZCh2YWx1ZTogQm9vbGVhblZhbHVlT3JBdHRyaWJ1dGUpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2dyb3VwaW5nRGlzYWJsZWQnLCB0b0Jvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihyZW5kZXJlcjogUmVuZGVyZXIyLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPFRhYmxlQ29sdW1uRGF0ZVRleHQ+KSB7XG4gICAgICAgIHN1cGVyKHJlbmRlcmVyLCBlbGVtZW50UmVmKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,19 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NimbleTableColumnDateTextDirective } from './nimble-table-column-date-text.directive';
4
+ import '@ni/nimble-components/dist/esm/table-column/text';
5
+ import * as i0 from "@angular/core";
6
+ export class NimbleTableColumnDateTextModule {
7
+ }
8
+ NimbleTableColumnDateTextModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NimbleTableColumnDateTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ NimbleTableColumnDateTextModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: NimbleTableColumnDateTextModule, declarations: [NimbleTableColumnDateTextDirective], imports: [CommonModule], exports: [NimbleTableColumnDateTextDirective] });
10
+ NimbleTableColumnDateTextModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NimbleTableColumnDateTextModule, imports: [CommonModule] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NimbleTableColumnDateTextModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [NimbleTableColumnDateTextDirective],
15
+ imports: [CommonModule],
16
+ exports: [NimbleTableColumnDateTextDirective]
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmltYmxlLXRhYmxlLWNvbHVtbi1kYXRlLXRleHQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmkvbmltYmxlLWFuZ3VsYXIvdGFibGUtY29sdW1uL2RhdGUtdGV4dC9uaW1ibGUtdGFibGUtY29sdW1uLWRhdGUtdGV4dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFL0YsT0FBTyxrREFBa0QsQ0FBQzs7QUFPMUQsTUFBTSxPQUFPLCtCQUErQjs7NEhBQS9CLCtCQUErQjs2SEFBL0IsK0JBQStCLGlCQUp6QixrQ0FBa0MsYUFDdkMsWUFBWSxhQUNaLGtDQUFrQzs2SEFFbkMsK0JBQStCLFlBSDlCLFlBQVk7MkZBR2IsK0JBQStCO2tCQUwzQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGtDQUFrQyxDQUFDO29CQUNsRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmltYmxlVGFibGVDb2x1bW5EYXRlVGV4dERpcmVjdGl2ZSB9IGZyb20gJy4vbmltYmxlLXRhYmxlLWNvbHVtbi1kYXRlLXRleHQuZGlyZWN0aXZlJztcblxuaW1wb3J0ICdAbmkvbmltYmxlLWNvbXBvbmVudHMvZGlzdC9lc20vdGFibGUtY29sdW1uL3RleHQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05pbWJsZVRhYmxlQ29sdW1uRGF0ZVRleHREaXJlY3RpdmVdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtOaW1ibGVUYWJsZUNvbHVtbkRhdGVUZXh0RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBOaW1ibGVUYWJsZUNvbHVtbkRhdGVUZXh0TW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './nimble-table-column-date-text.directive';
2
+ export * from './nimble-table-column-date-text.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pL25pbWJsZS1hbmd1bGFyL3RhYmxlLWNvbHVtbi9kYXRlLXRleHQvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL25pbWJsZS10YWJsZS1jb2x1bW4tZGF0ZS10ZXh0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL25pbWJsZS10YWJsZS1jb2x1bW4tZGF0ZS10ZXh0Lm1vZHVsZSc7Il19
@@ -59,6 +59,12 @@ export class NimbleTableColumnBaseDirective {
59
59
  set sortIndex(value) {
60
60
  this.renderer.setProperty(this.elementRef.nativeElement, 'sortIndex', toNullableNumberProperty(value));
61
61
  }
62
+ checkValidity() {
63
+ return this.elementRef.nativeElement.checkValidity();
64
+ }
65
+ get validity() {
66
+ return this.elementRef.nativeElement.validity;
67
+ }
62
68
  }
63
69
  NimbleTableColumnBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NimbleTableColumnBaseDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
64
70
  NimbleTableColumnBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: NimbleTableColumnBaseDirective, inputs: { columnId: ["column-id", "columnId"], actionMenuSlot: ["action-menu-slot", "actionMenuSlot"], actionMenuLabel: ["action-menu-label", "actionMenuLabel"], columnHidden: ["column-hidden", "columnHidden"], sortDirection: ["sort-direction", "sortDirection"], sortIndex: ["sort-index", "sortIndex"] }, ngImport: i0 });
@@ -83,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
83
89
  type: Input,
84
90
  args: ['sort-index']
85
91
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmltYmxlLXRhYmxlLWNvbHVtbi1iYXNlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pL25pbWJsZS1hbmd1bGFyL3RhYmxlLWNvbHVtbi9uaW1ibGUtdGFibGUtY29sdW1uLWJhc2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBbUQsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFFckosT0FBTyxFQUFFLHdCQUF3QixFQUE4QixDQUFDO0FBRWhFOztHQUVHO0FBRUgsTUFBTSxPQUFPLDhCQUE4QjtJQTZEdkMsWUFBc0MsUUFBbUIsRUFBcUIsVUFBeUI7UUFBakUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFxQixlQUFVLEdBQVYsVUFBVSxDQUFlO0lBQUcsQ0FBQztJQTVEM0csSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDbEQsQ0FBQztJQUVELCtFQUErRTtJQUMvRSwyREFBMkQ7SUFDM0QsSUFBK0IsUUFBUSxDQUFDLEtBQXlCO1FBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO0lBQ3hELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkRBQTJEO0lBQzNELElBQXNDLGNBQWMsQ0FBQyxLQUF5QjtRQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDO0lBQ3pELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkRBQTJEO0lBQzNELElBQXVDLGVBQWUsQ0FBQyxLQUF5QjtRQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO0lBQ3RELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkRBQTJEO0lBQzNELElBQW1DLFlBQVksQ0FBQyxLQUE4QjtRQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO0lBQ3ZELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkRBQTJEO0lBQzNELElBQW9DLGFBQWEsQ0FBQyxLQUErQjtRQUM3RSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLDJEQUEyRDtJQUMzRCxJQUFnQyxTQUFTLENBQUMsS0FBZ0Q7UUFDdEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0csQ0FBQzs7MkhBM0RRLDhCQUE4QjsrR0FBOUIsOEJBQThCOzJGQUE5Qiw4QkFBOEI7a0JBRDFDLFNBQVM7eUhBUXlCLFFBQVE7c0JBQXRDLEtBQUs7dUJBQUMsV0FBVztnQkFVb0IsY0FBYztzQkFBbkQsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBVWMsZUFBZTtzQkFBckQsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBVVMsWUFBWTtzQkFBOUMsS0FBSzt1QkFBQyxlQUFlO2dCQVVjLGFBQWE7c0JBQWhELEtBQUs7dUJBQUMsZ0JBQWdCO2dCQVVTLFNBQVM7c0JBQXhDLEtBQUs7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBUYWJsZUNvbHVtbiB9IGZyb20gJ0BuaS9uaW1ibGUtY29tcG9uZW50cy9kaXN0L2VzbS90YWJsZS1jb2x1bW4vYmFzZSc7XG5pbXBvcnQgdHlwZSB7IERlbGVnYXRlZEV2ZW50RXZlbnREZXRhaWxzIH0gZnJvbSAnQG5pL25pbWJsZS1jb21wb25lbnRzL2Rpc3QvZXNtL3RhYmxlLWNvbHVtbi9iYXNlL3R5cGVzJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uU29ydERpcmVjdGlvbiB9IGZyb20gJ0BuaS9uaW1ibGUtY29tcG9uZW50cy9kaXN0L2VzbS90YWJsZS90eXBlcyc7XG5pbXBvcnQgeyBCb29sZWFuVmFsdWVPckF0dHJpYnV0ZSwgTnVtYmVyVmFsdWVPckF0dHJpYnV0ZSwgdG9Cb29sZWFuUHJvcGVydHksIHRvTnVsbGFibGVOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BuaS9uaW1ibGUtYW5ndWxhci9pbnRlcm5hbC11dGlsaXRpZXMnO1xuXG5leHBvcnQgeyBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24sIERlbGVnYXRlZEV2ZW50RXZlbnREZXRhaWxzIH07XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgdGFibGUgY29sdW1uIGRpcmVjdGl2ZXMuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIE5pbWJsZVRhYmxlQ29sdW1uQmFzZURpcmVjdGl2ZTxUIGV4dGVuZHMgVGFibGVDb2x1bW4+IHtcbiAgICBwdWJsaWMgZ2V0IGNvbHVtbklkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb2x1bW5JZDtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2NvbHVtbi1pZCcpIHB1YmxpYyBzZXQgY29sdW1uSWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sdW1uSWQnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25NZW51U2xvdCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWN0aW9uTWVudVNsb3Q7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdhY3Rpb24tbWVudS1zbG90JykgcHVibGljIHNldCBhY3Rpb25NZW51U2xvdCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhY3Rpb25NZW51U2xvdCcsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGlvbk1lbnVMYWJlbCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWN0aW9uTWVudUxhYmVsO1xuICAgIH1cblxuICAgIC8vIFJlbmFtaW5nIGJlY2F1c2UgcHJvcGVydHkgc2hvdWxkIGhhdmUgY2FtZWwgY2FzaW5nLCBidXQgYXR0cmlidXRlIHNob3VsZCBub3RcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnYWN0aW9uLW1lbnUtbGFiZWwnKSBwdWJsaWMgc2V0IGFjdGlvbk1lbnVMYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhY3Rpb25NZW51TGFiZWwnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5IaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb2x1bW5IaWRkZW47XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjb2x1bW4taGlkZGVuJykgcHVibGljIHNldCBjb2x1bW5IaWRkZW4odmFsdWU6IEJvb2xlYW5WYWx1ZU9yQXR0cmlidXRlKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2x1bW5IaWRkZW4nLCB0b0Jvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc29ydERpcmVjdGlvbigpOiBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc29ydERpcmVjdGlvbjtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ3NvcnQtZGlyZWN0aW9uJykgcHVibGljIHNldCBzb3J0RGlyZWN0aW9uKHZhbHVlOiBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3NvcnREaXJlY3Rpb24nLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzb3J0SW5kZXgoKTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zb3J0SW5kZXg7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdzb3J0LWluZGV4JykgcHVibGljIHNldCBzb3J0SW5kZXgodmFsdWU6IE51bWJlclZhbHVlT3JBdHRyaWJ1dGUgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdzb3J0SW5kZXgnLCB0b051bGxhYmxlTnVtYmVyUHJvcGVydHkodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPFQ+KSB7fVxufSJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmltYmxlLXRhYmxlLWNvbHVtbi1iYXNlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pL25pbWJsZS1hbmd1bGFyL3RhYmxlLWNvbHVtbi9uaW1ibGUtdGFibGUtY29sdW1uLWJhc2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBbUQsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFFckosT0FBTyxFQUFFLHdCQUF3QixFQUFtRCxDQUFDO0FBRXJGOztHQUVHO0FBRUgsTUFBTSxPQUFPLDhCQUE4QjtJQTZEdkMsWUFBc0MsUUFBbUIsRUFBcUIsVUFBeUI7UUFBakUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFxQixlQUFVLEdBQVYsVUFBVSxDQUFlO0lBQUcsQ0FBQztJQTVEM0csSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDbEQsQ0FBQztJQUVELCtFQUErRTtJQUMvRSwyREFBMkQ7SUFDM0QsSUFBK0IsUUFBUSxDQUFDLEtBQXlCO1FBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO0lBQ3hELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkRBQTJEO0lBQzNELElBQXNDLGNBQWMsQ0FBQyxLQUF5QjtRQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDO0lBQ3pELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkRBQTJEO0lBQzNELElBQXVDLGVBQWUsQ0FBQyxLQUF5QjtRQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO0lBQ3RELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkRBQTJEO0lBQzNELElBQW1DLFlBQVksQ0FBQyxLQUE4QjtRQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO0lBQ3ZELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsMkRBQTJEO0lBQzNELElBQW9DLGFBQWEsQ0FBQyxLQUErQjtRQUM3RSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLDJEQUEyRDtJQUMzRCxJQUFnQyxTQUFTLENBQUMsS0FBZ0Q7UUFDdEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUlNLGFBQWE7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDbEQsQ0FBQzs7MkhBckVRLDhCQUE4QjsrR0FBOUIsOEJBQThCOzJGQUE5Qiw4QkFBOEI7a0JBRDFDLFNBQVM7eUhBUXlCLFFBQVE7c0JBQXRDLEtBQUs7dUJBQUMsV0FBVztnQkFVb0IsY0FBYztzQkFBbkQsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBVWMsZUFBZTtzQkFBckQsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBVVMsWUFBWTtzQkFBOUMsS0FBSzt1QkFBQyxlQUFlO2dCQVVjLGFBQWE7c0JBQWhELEtBQUs7dUJBQUMsZ0JBQWdCO2dCQVVTLFNBQVM7c0JBQXhDLEtBQUs7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBUYWJsZUNvbHVtbiB9IGZyb20gJ0BuaS9uaW1ibGUtY29tcG9uZW50cy9kaXN0L2VzbS90YWJsZS1jb2x1bW4vYmFzZSc7XG5pbXBvcnQgdHlwZSB7IERlbGVnYXRlZEV2ZW50RXZlbnREZXRhaWxzLCBUYWJsZUNvbHVtblZhbGlkaXR5IH0gZnJvbSAnQG5pL25pbWJsZS1jb21wb25lbnRzL2Rpc3QvZXNtL3RhYmxlLWNvbHVtbi9iYXNlL3R5cGVzJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uU29ydERpcmVjdGlvbiB9IGZyb20gJ0BuaS9uaW1ibGUtY29tcG9uZW50cy9kaXN0L2VzbS90YWJsZS90eXBlcyc7XG5pbXBvcnQgeyBCb29sZWFuVmFsdWVPckF0dHJpYnV0ZSwgTnVtYmVyVmFsdWVPckF0dHJpYnV0ZSwgdG9Cb29sZWFuUHJvcGVydHksIHRvTnVsbGFibGVOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BuaS9uaW1ibGUtYW5ndWxhci9pbnRlcm5hbC11dGlsaXRpZXMnO1xuXG5leHBvcnQgeyBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24sIERlbGVnYXRlZEV2ZW50RXZlbnREZXRhaWxzLCBUYWJsZUNvbHVtblZhbGlkaXR5IH07XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgdGFibGUgY29sdW1uIGRpcmVjdGl2ZXMuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIE5pbWJsZVRhYmxlQ29sdW1uQmFzZURpcmVjdGl2ZTxUIGV4dGVuZHMgVGFibGVDb2x1bW4+IHtcbiAgICBwdWJsaWMgZ2V0IGNvbHVtbklkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb2x1bW5JZDtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ2NvbHVtbi1pZCcpIHB1YmxpYyBzZXQgY29sdW1uSWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sdW1uSWQnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25NZW51U2xvdCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWN0aW9uTWVudVNsb3Q7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdhY3Rpb24tbWVudS1zbG90JykgcHVibGljIHNldCBhY3Rpb25NZW51U2xvdCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhY3Rpb25NZW51U2xvdCcsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGlvbk1lbnVMYWJlbCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWN0aW9uTWVudUxhYmVsO1xuICAgIH1cblxuICAgIC8vIFJlbmFtaW5nIGJlY2F1c2UgcHJvcGVydHkgc2hvdWxkIGhhdmUgY2FtZWwgY2FzaW5nLCBidXQgYXR0cmlidXRlIHNob3VsZCBub3RcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIEBJbnB1dCgnYWN0aW9uLW1lbnUtbGFiZWwnKSBwdWJsaWMgc2V0IGFjdGlvbk1lbnVMYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhY3Rpb25NZW51TGFiZWwnLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5IaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb2x1bW5IaWRkZW47XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdjb2x1bW4taGlkZGVuJykgcHVibGljIHNldCBjb2x1bW5IaWRkZW4odmFsdWU6IEJvb2xlYW5WYWx1ZU9yQXR0cmlidXRlKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2x1bW5IaWRkZW4nLCB0b0Jvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc29ydERpcmVjdGlvbigpOiBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc29ydERpcmVjdGlvbjtcbiAgICB9XG5cbiAgICAvLyBSZW5hbWluZyBiZWNhdXNlIHByb3BlcnR5IHNob3VsZCBoYXZlIGNhbWVsIGNhc2luZywgYnV0IGF0dHJpYnV0ZSBzaG91bGQgbm90XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBASW5wdXQoJ3NvcnQtZGlyZWN0aW9uJykgcHVibGljIHNldCBzb3J0RGlyZWN0aW9uKHZhbHVlOiBUYWJsZUNvbHVtblNvcnREaXJlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3NvcnREaXJlY3Rpb24nLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzb3J0SW5kZXgoKTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zb3J0SW5kZXg7XG4gICAgfVxuXG4gICAgLy8gUmVuYW1pbmcgYmVjYXVzZSBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBjYW1lbCBjYXNpbmcsIGJ1dCBhdHRyaWJ1dGUgc2hvdWxkIG5vdFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgQElucHV0KCdzb3J0LWluZGV4JykgcHVibGljIHNldCBzb3J0SW5kZXgodmFsdWU6IE51bWJlclZhbHVlT3JBdHRyaWJ1dGUgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdzb3J0SW5kZXgnLCB0b051bGxhYmxlTnVtYmVyUHJvcGVydHkodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPFQ+KSB7fVxuXG4gICAgcHVibGljIGNoZWNrVmFsaWRpdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWxpZGl0eSgpOiBUYWJsZUNvbHVtblZhbGlkaXR5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbGlkaXR5O1xuICAgIH1cbn0iXX0=