@payex-ds/angular 0.0.0-stage → 0.1.0

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,2175 @@
1
+ // AUTO-GENERATED by @payex-ds/wrapper-gen from the @payex-ds/core Custom Elements Manifest.
2
+ // Do not edit by hand. Regenerate with `pnpm generate:wrappers`.
3
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, booleanAttribute, numberAttribute, } from '@angular/core';
4
+ import { defineAll, definePdsAccordion, definePdsAccordionItem, definePdsAlert, definePdsBadge, definePdsBreadcrumb, definePdsBreadcrumbItem, definePdsButton, definePdsCard, definePdsCheckbox, definePdsDatepicker, definePdsDialog, definePdsDropdown, definePdsDropdownItem, definePdsExpandable, definePdsInput, definePdsLink, definePdsList, definePdsLoader, definePdsMediaObject, definePdsPagination, definePdsPanel, definePdsProgressStep, definePdsProgressSteps, definePdsRadio, definePdsRadioGroup, definePdsRangeslider, definePdsSelect, definePdsSheet, definePdsSidebar, definePdsSidebarGroup, definePdsSidebarItem, definePdsSkipLink, definePdsSlab, definePdsStatus, definePdsTab, definePdsTabPanel, definePdsTable, definePdsTabs, definePdsTag, definePdsToast, definePdsTogglebox, definePdsTooltip, definePdsTopbar, } from '@payex-ds/core';
5
+ import { PdsComponentBase } from '../lib/component-base';
6
+ import * as i0 from "@angular/core";
7
+ /** Accordion groups pds-accordion-item sections. */
8
+ export class PdsAccordionComponent extends PdsComponentBase {
9
+ set multiple(value) {
10
+ this.pdsSetProperty('multiple', value);
11
+ }
12
+ constructor() {
13
+ super(definePdsAccordion);
14
+ /** Bubbles from the item the user toggled. Detail: `{ open }`. */
15
+ this.pdsToggle = new EventEmitter();
16
+ this.pdsForward('pds-toggle', this.pdsToggle);
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsAccordionComponent, isStandalone: true, selector: "pds-accordion", inputs: { multiple: ["multiple", "multiple", booleanAttribute] }, outputs: { pdsToggle: "pdsToggle" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAccordionComponent, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'pds-accordion',
25
+ standalone: true,
26
+ template: '<ng-content></ng-content>',
27
+ changeDetection: ChangeDetectionStrategy.OnPush,
28
+ encapsulation: ViewEncapsulation.None,
29
+ }]
30
+ }], ctorParameters: () => [], propDecorators: { multiple: [{
31
+ type: Input,
32
+ args: [{ transform: booleanAttribute }]
33
+ }], pdsToggle: [{
34
+ type: Output
35
+ }] } });
36
+ /** Accordion item with a heading button and a content region. */
37
+ export class PdsAccordionItemComponent extends PdsComponentBase {
38
+ set disabled(value) {
39
+ this.pdsSetProperty('disabled', value);
40
+ }
41
+ set heading(value) {
42
+ this.pdsSetProperty('heading', value);
43
+ }
44
+ set headingLevel(value) {
45
+ this.pdsSetProperty('headingLevel', value);
46
+ }
47
+ set open(value) {
48
+ this.pdsSetProperty('open', value);
49
+ }
50
+ constructor() {
51
+ super(definePdsAccordionItem);
52
+ /** Fired when the user toggles the item. Detail: `{ open }`. */
53
+ this.pdsToggle = new EventEmitter();
54
+ this.pdsForward('pds-toggle', this.pdsToggle);
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsAccordionItemComponent, isStandalone: true, selector: "pds-accordion-item", inputs: { disabled: ["disabled", "disabled", booleanAttribute], heading: "heading", headingLevel: ["headingLevel", "headingLevel", numberAttribute], open: ["open", "open", booleanAttribute] }, outputs: { pdsToggle: "pdsToggle" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
58
+ }
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAccordionItemComponent, decorators: [{
60
+ type: Component,
61
+ args: [{
62
+ selector: 'pds-accordion-item',
63
+ standalone: true,
64
+ template: '<ng-content></ng-content>',
65
+ changeDetection: ChangeDetectionStrategy.OnPush,
66
+ encapsulation: ViewEncapsulation.None,
67
+ }]
68
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
69
+ type: Input,
70
+ args: [{ transform: booleanAttribute }]
71
+ }], heading: [{
72
+ type: Input
73
+ }], headingLevel: [{
74
+ type: Input,
75
+ args: [{ transform: numberAttribute }]
76
+ }], open: [{
77
+ type: Input,
78
+ args: [{ transform: booleanAttribute }]
79
+ }], pdsToggle: [{
80
+ type: Output
81
+ }] } });
82
+ /** Alerts communicate important, contextual messages. */
83
+ export class PdsAlertComponent extends PdsComponentBase {
84
+ set dismissible(value) {
85
+ this.pdsSetProperty('dismissible', value);
86
+ }
87
+ set heading(value) {
88
+ this.pdsSetProperty('heading', value);
89
+ }
90
+ set variant(value) {
91
+ this.pdsSetProperty('variant', value);
92
+ }
93
+ /** Accessible label of the close button. Default `Dismiss`. */
94
+ set closeLabel(value) {
95
+ this.pdsSetAttribute('close-label', value);
96
+ }
97
+ constructor() {
98
+ super(definePdsAlert);
99
+ /** Fired when the close button is used (cancelable). The alert hides itself unless cancelled. */
100
+ this.pdsDismiss = new EventEmitter();
101
+ this.pdsForward('pds-dismiss', this.pdsDismiss);
102
+ }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsAlertComponent, isStandalone: true, selector: "pds-alert", inputs: { dismissible: ["dismissible", "dismissible", booleanAttribute], heading: "heading", variant: "variant", closeLabel: ["close-label", "closeLabel"] }, outputs: { pdsDismiss: "pdsDismiss" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAlertComponent, decorators: [{
107
+ type: Component,
108
+ args: [{
109
+ selector: 'pds-alert',
110
+ standalone: true,
111
+ template: '<ng-content></ng-content>',
112
+ changeDetection: ChangeDetectionStrategy.OnPush,
113
+ encapsulation: ViewEncapsulation.None,
114
+ }]
115
+ }], ctorParameters: () => [], propDecorators: { dismissible: [{
116
+ type: Input,
117
+ args: [{ transform: booleanAttribute }]
118
+ }], heading: [{
119
+ type: Input
120
+ }], variant: [{
121
+ type: Input
122
+ }], closeLabel: [{
123
+ type: Input,
124
+ args: ['close-label']
125
+ }], pdsDismiss: [{
126
+ type: Output
127
+ }] } });
128
+ /** Badges highlight a count or short status label. */
129
+ export class PdsBadgeComponent extends PdsComponentBase {
130
+ set count(value) {
131
+ this.pdsSetProperty('count', value);
132
+ }
133
+ set dot(value) {
134
+ this.pdsSetProperty('dot', value);
135
+ }
136
+ set max(value) {
137
+ this.pdsSetProperty('max', value);
138
+ }
139
+ set variant(value) {
140
+ this.pdsSetProperty('variant', value);
141
+ }
142
+ /** Accessible name announced instead of the visible text. */
143
+ set ariaLabel(value) {
144
+ this.pdsSetAttribute('aria-label', value);
145
+ }
146
+ constructor() {
147
+ super(definePdsBadge);
148
+ }
149
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsBadgeComponent, isStandalone: true, selector: "pds-badge", inputs: { count: "count", dot: ["dot", "dot", booleanAttribute], max: ["max", "max", numberAttribute], variant: "variant", ariaLabel: ["aria-label", "ariaLabel"] }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
151
+ }
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBadgeComponent, decorators: [{
153
+ type: Component,
154
+ args: [{
155
+ selector: 'pds-badge',
156
+ standalone: true,
157
+ template: '<ng-content></ng-content>',
158
+ changeDetection: ChangeDetectionStrategy.OnPush,
159
+ encapsulation: ViewEncapsulation.None,
160
+ }]
161
+ }], ctorParameters: () => [], propDecorators: { count: [{
162
+ type: Input
163
+ }], dot: [{
164
+ type: Input,
165
+ args: [{ transform: booleanAttribute }]
166
+ }], max: [{
167
+ type: Input,
168
+ args: [{ transform: numberAttribute }]
169
+ }], variant: [{
170
+ type: Input
171
+ }], ariaLabel: [{
172
+ type: Input,
173
+ args: ['aria-label']
174
+ }] } });
175
+ /** Shows the user's location in a hierarchy. */
176
+ export class PdsBreadcrumbComponent extends PdsComponentBase {
177
+ set expandLabel(value) {
178
+ this.pdsSetProperty('expandLabel', value);
179
+ }
180
+ set label(value) {
181
+ this.pdsSetProperty('label', value);
182
+ }
183
+ set maxItems(value) {
184
+ this.pdsSetProperty('maxItems', value);
185
+ }
186
+ constructor() {
187
+ super(definePdsBreadcrumb);
188
+ /** Fired when the collapsed items are revealed. */
189
+ this.pdsExpand = new EventEmitter();
190
+ this.pdsForward('pds-expand', this.pdsExpand);
191
+ }
192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsBreadcrumbComponent, isStandalone: true, selector: "pds-breadcrumb", inputs: { expandLabel: "expandLabel", label: "label", maxItems: ["maxItems", "maxItems", numberAttribute] }, outputs: { pdsExpand: "pdsExpand" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
194
+ }
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBreadcrumbComponent, decorators: [{
196
+ type: Component,
197
+ args: [{
198
+ selector: 'pds-breadcrumb',
199
+ standalone: true,
200
+ template: '<ng-content></ng-content>',
201
+ changeDetection: ChangeDetectionStrategy.OnPush,
202
+ encapsulation: ViewEncapsulation.None,
203
+ }]
204
+ }], ctorParameters: () => [], propDecorators: { expandLabel: [{
205
+ type: Input
206
+ }], label: [{
207
+ type: Input
208
+ }], maxItems: [{
209
+ type: Input,
210
+ args: [{ transform: numberAttribute }]
211
+ }], pdsExpand: [{
212
+ type: Output
213
+ }] } });
214
+ /** An item inside `pds-breadcrumb`. */
215
+ export class PdsBreadcrumbItemComponent extends PdsComponentBase {
216
+ set current(value) {
217
+ this.pdsSetProperty('current', value);
218
+ }
219
+ set href(value) {
220
+ this.pdsSetProperty('href', value);
221
+ }
222
+ constructor() {
223
+ super(definePdsBreadcrumbItem);
224
+ }
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBreadcrumbItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
226
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsBreadcrumbItemComponent, isStandalone: true, selector: "pds-breadcrumb-item", inputs: { current: ["current", "current", booleanAttribute], href: "href" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
227
+ }
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBreadcrumbItemComponent, decorators: [{
229
+ type: Component,
230
+ args: [{
231
+ selector: 'pds-breadcrumb-item',
232
+ standalone: true,
233
+ template: '<ng-content></ng-content>',
234
+ changeDetection: ChangeDetectionStrategy.OnPush,
235
+ encapsulation: ViewEncapsulation.None,
236
+ }]
237
+ }], ctorParameters: () => [], propDecorators: { current: [{
238
+ type: Input,
239
+ args: [{ transform: booleanAttribute }]
240
+ }], href: [{
241
+ type: Input
242
+ }] } });
243
+ /** Buttons trigger actions or navigation. */
244
+ export class PdsButtonComponent extends PdsComponentBase {
245
+ set disabled(value) {
246
+ this.pdsSetProperty('disabled', value);
247
+ }
248
+ set fullWidth(value) {
249
+ this.pdsSetProperty('fullWidth', value);
250
+ }
251
+ set href(value) {
252
+ this.pdsSetProperty('href', value);
253
+ }
254
+ set loading(value) {
255
+ this.pdsSetProperty('loading', value);
256
+ }
257
+ set size(value) {
258
+ this.pdsSetProperty('size', value);
259
+ }
260
+ set type(value) {
261
+ this.pdsSetProperty('type', value);
262
+ }
263
+ set variant(value) {
264
+ this.pdsSetProperty('variant', value);
265
+ }
266
+ /** Link target when `href` is set. */
267
+ set target(value) {
268
+ this.pdsSetAttribute('target', value);
269
+ }
270
+ constructor() {
271
+ super(definePdsButton);
272
+ /** Fired when activated (not fired while disabled/loading). Detail: `{ originalEvent }`. */
273
+ this.pdsClick = new EventEmitter();
274
+ this.pdsForward('pds-click', this.pdsClick);
275
+ }
276
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
277
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsButtonComponent, isStandalone: true, selector: "pds-button", inputs: { disabled: ["disabled", "disabled", booleanAttribute], fullWidth: ["fullWidth", "fullWidth", booleanAttribute], href: "href", loading: ["loading", "loading", booleanAttribute], size: "size", type: "type", variant: "variant", target: "target" }, outputs: { pdsClick: "pdsClick" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
278
+ }
279
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsButtonComponent, decorators: [{
280
+ type: Component,
281
+ args: [{
282
+ selector: 'pds-button',
283
+ standalone: true,
284
+ template: '<ng-content></ng-content>',
285
+ changeDetection: ChangeDetectionStrategy.OnPush,
286
+ encapsulation: ViewEncapsulation.None,
287
+ }]
288
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
289
+ type: Input,
290
+ args: [{ transform: booleanAttribute }]
291
+ }], fullWidth: [{
292
+ type: Input,
293
+ args: [{ transform: booleanAttribute }]
294
+ }], href: [{
295
+ type: Input
296
+ }], loading: [{
297
+ type: Input,
298
+ args: [{ transform: booleanAttribute }]
299
+ }], size: [{
300
+ type: Input
301
+ }], type: [{
302
+ type: Input
303
+ }], variant: [{
304
+ type: Input
305
+ }], target: [{
306
+ type: Input
307
+ }], pdsClick: [{
308
+ type: Output
309
+ }] } });
310
+ /** Cards group related content and actions. */
311
+ export class PdsCardComponent extends PdsComponentBase {
312
+ set clickable(value) {
313
+ this.pdsSetProperty('clickable', value);
314
+ }
315
+ set heading(value) {
316
+ this.pdsSetProperty('heading', value);
317
+ }
318
+ set headingLevel(value) {
319
+ this.pdsSetProperty('headingLevel', value);
320
+ }
321
+ set href(value) {
322
+ this.pdsSetProperty('href', value);
323
+ }
324
+ set variant(value) {
325
+ this.pdsSetProperty('variant', value);
326
+ }
327
+ /** Accessible link name when `href` is set without `heading`. */
328
+ set label(value) {
329
+ this.pdsSetAttribute('label', value);
330
+ }
331
+ /** Link target when `href` is set. */
332
+ set target(value) {
333
+ this.pdsSetAttribute('target', value);
334
+ }
335
+ constructor() {
336
+ super(definePdsCard);
337
+ }
338
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
339
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsCardComponent, isStandalone: true, selector: "pds-card", inputs: { clickable: ["clickable", "clickable", booleanAttribute], heading: "heading", headingLevel: ["headingLevel", "headingLevel", numberAttribute], href: "href", variant: "variant", label: "label", target: "target" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
340
+ }
341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsCardComponent, decorators: [{
342
+ type: Component,
343
+ args: [{
344
+ selector: 'pds-card',
345
+ standalone: true,
346
+ template: '<ng-content></ng-content>',
347
+ changeDetection: ChangeDetectionStrategy.OnPush,
348
+ encapsulation: ViewEncapsulation.None,
349
+ }]
350
+ }], ctorParameters: () => [], propDecorators: { clickable: [{
351
+ type: Input,
352
+ args: [{ transform: booleanAttribute }]
353
+ }], heading: [{
354
+ type: Input
355
+ }], headingLevel: [{
356
+ type: Input,
357
+ args: [{ transform: numberAttribute }]
358
+ }], href: [{
359
+ type: Input
360
+ }], variant: [{
361
+ type: Input
362
+ }], label: [{
363
+ type: Input
364
+ }], target: [{
365
+ type: Input
366
+ }] } });
367
+ /** Checkbox for boolean or multi-select choices. */
368
+ export class PdsCheckboxComponent extends PdsComponentBase {
369
+ /** Current checked state (the attribute is the initial state). */
370
+ set checked(value) {
371
+ this.pdsSetProperty('checked', value);
372
+ }
373
+ set disabled(value) {
374
+ this.pdsSetProperty('disabled', value);
375
+ }
376
+ set errorText(value) {
377
+ this.pdsSetProperty('errorText', value);
378
+ }
379
+ set helperText(value) {
380
+ this.pdsSetProperty('helperText', value);
381
+ }
382
+ set indeterminate(value) {
383
+ this.pdsSetProperty('indeterminate', value);
384
+ }
385
+ set label(value) {
386
+ this.pdsSetProperty('label', value);
387
+ }
388
+ set name(value) {
389
+ this.pdsSetProperty('name', value);
390
+ }
391
+ set required(value) {
392
+ this.pdsSetProperty('required', value);
393
+ }
394
+ set value(value) {
395
+ this.pdsSetProperty('value', value);
396
+ }
397
+ constructor() {
398
+ super(definePdsCheckbox);
399
+ /** Fired when toggled by the user. Detail: `{ checked, value }`. */
400
+ this.pdsChange = new EventEmitter();
401
+ this.pdsForward('pds-change', this.pdsChange);
402
+ }
403
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
404
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsCheckboxComponent, isStandalone: true, selector: "pds-checkbox", inputs: { checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", indeterminate: ["indeterminate", "indeterminate", booleanAttribute], label: "label", name: "name", required: ["required", "required", booleanAttribute], value: "value" }, outputs: { pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
405
+ }
406
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsCheckboxComponent, decorators: [{
407
+ type: Component,
408
+ args: [{
409
+ selector: 'pds-checkbox',
410
+ standalone: true,
411
+ template: '<ng-content></ng-content>',
412
+ changeDetection: ChangeDetectionStrategy.OnPush,
413
+ encapsulation: ViewEncapsulation.None,
414
+ }]
415
+ }], ctorParameters: () => [], propDecorators: { checked: [{
416
+ type: Input,
417
+ args: [{ transform: booleanAttribute }]
418
+ }], disabled: [{
419
+ type: Input,
420
+ args: [{ transform: booleanAttribute }]
421
+ }], errorText: [{
422
+ type: Input
423
+ }], helperText: [{
424
+ type: Input
425
+ }], indeterminate: [{
426
+ type: Input,
427
+ args: [{ transform: booleanAttribute }]
428
+ }], label: [{
429
+ type: Input
430
+ }], name: [{
431
+ type: Input
432
+ }], required: [{
433
+ type: Input,
434
+ args: [{ transform: booleanAttribute }]
435
+ }], value: [{
436
+ type: Input
437
+ }], pdsChange: [{
438
+ type: Output
439
+ }] } });
440
+ /** Pick a date by typing or from a calendar popup. */
441
+ export class PdsDatepickerComponent extends PdsComponentBase {
442
+ set disabled(value) {
443
+ this.pdsSetProperty('disabled', value);
444
+ }
445
+ set disabledDates(value) {
446
+ this.pdsSetProperty('disabledDates', value);
447
+ }
448
+ set errorText(value) {
449
+ this.pdsSetProperty('errorText', value);
450
+ }
451
+ set firstDayOfWeek(value) {
452
+ this.pdsSetProperty('firstDayOfWeek', value);
453
+ }
454
+ set helperText(value) {
455
+ this.pdsSetProperty('helperText', value);
456
+ }
457
+ set label(value) {
458
+ this.pdsSetProperty('label', value);
459
+ }
460
+ set locale(value) {
461
+ this.pdsSetProperty('locale', value);
462
+ }
463
+ set max(value) {
464
+ this.pdsSetProperty('max', value);
465
+ }
466
+ set min(value) {
467
+ this.pdsSetProperty('min', value);
468
+ }
469
+ set name(value) {
470
+ this.pdsSetProperty('name', value);
471
+ }
472
+ set placeholder(value) {
473
+ this.pdsSetProperty('placeholder', value);
474
+ }
475
+ set readonly(value) {
476
+ this.pdsSetProperty('readonly', value);
477
+ }
478
+ set required(value) {
479
+ this.pdsSetProperty('required', value);
480
+ }
481
+ set value(value) {
482
+ this.pdsSetProperty('value', value);
483
+ }
484
+ constructor() {
485
+ super(definePdsDatepicker);
486
+ /** Fired when the value changes. Detail: `{ value }` (ISO string or empty). */
487
+ this.pdsChange = new EventEmitter();
488
+ /** Fired when the calendar opens. */
489
+ this.pdsOpen = new EventEmitter();
490
+ /** Fired when the calendar closes. */
491
+ this.pdsClose = new EventEmitter();
492
+ this.pdsForward('pds-change', this.pdsChange);
493
+ this.pdsForward('pds-open', this.pdsOpen);
494
+ this.pdsForward('pds-close', this.pdsClose);
495
+ }
496
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
497
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsDatepickerComponent, isStandalone: true, selector: "pds-datepicker", inputs: { disabled: ["disabled", "disabled", booleanAttribute], disabledDates: "disabledDates", errorText: "errorText", firstDayOfWeek: ["firstDayOfWeek", "firstDayOfWeek", numberAttribute], helperText: "helperText", label: "label", locale: "locale", max: "max", min: "min", name: "name", placeholder: "placeholder", readonly: ["readonly", "readonly", booleanAttribute], required: ["required", "required", booleanAttribute], value: "value" }, outputs: { pdsChange: "pdsChange", pdsOpen: "pdsOpen", pdsClose: "pdsClose" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
498
+ }
499
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDatepickerComponent, decorators: [{
500
+ type: Component,
501
+ args: [{
502
+ selector: 'pds-datepicker',
503
+ standalone: true,
504
+ template: '<ng-content></ng-content>',
505
+ changeDetection: ChangeDetectionStrategy.OnPush,
506
+ encapsulation: ViewEncapsulation.None,
507
+ }]
508
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
509
+ type: Input,
510
+ args: [{ transform: booleanAttribute }]
511
+ }], disabledDates: [{
512
+ type: Input
513
+ }], errorText: [{
514
+ type: Input
515
+ }], firstDayOfWeek: [{
516
+ type: Input,
517
+ args: [{ transform: numberAttribute }]
518
+ }], helperText: [{
519
+ type: Input
520
+ }], label: [{
521
+ type: Input
522
+ }], locale: [{
523
+ type: Input
524
+ }], max: [{
525
+ type: Input
526
+ }], min: [{
527
+ type: Input
528
+ }], name: [{
529
+ type: Input
530
+ }], placeholder: [{
531
+ type: Input
532
+ }], readonly: [{
533
+ type: Input,
534
+ args: [{ transform: booleanAttribute }]
535
+ }], required: [{
536
+ type: Input,
537
+ args: [{ transform: booleanAttribute }]
538
+ }], value: [{
539
+ type: Input
540
+ }], pdsChange: [{
541
+ type: Output
542
+ }], pdsOpen: [{
543
+ type: Output
544
+ }], pdsClose: [{
545
+ type: Output
546
+ }] } });
547
+ /** Dialogs interrupt the user with focused, modal content. */
548
+ export class PdsDialogComponent extends PdsComponentBase {
549
+ set dismissible(value) {
550
+ this.pdsSetProperty('dismissible', value);
551
+ }
552
+ set heading(value) {
553
+ this.pdsSetProperty('heading', value);
554
+ }
555
+ set open(value) {
556
+ this.pdsSetProperty('open', value);
557
+ }
558
+ /** Value reported by `pds-close`. */
559
+ set returnValue(value) {
560
+ this.pdsSetProperty('returnValue', value);
561
+ }
562
+ set size(value) {
563
+ this.pdsSetProperty('size', value);
564
+ }
565
+ /** Accessible label of the close button. Default `Close`. */
566
+ set closeLabel(value) {
567
+ this.pdsSetAttribute('close-label', value);
568
+ }
569
+ constructor() {
570
+ super(definePdsDialog);
571
+ /** Fired after the dialog opened. */
572
+ this.pdsOpen = new EventEmitter();
573
+ /** Fired after the dialog closed. Detail: `{ returnValue }`. */
574
+ this.pdsClose = new EventEmitter();
575
+ /** Cancelable; fired when Escape, backdrop or close button asks to close. Detail: `{ reason }`. */
576
+ this.pdsRequestClose = new EventEmitter();
577
+ this.pdsForward('pds-open', this.pdsOpen);
578
+ this.pdsForward('pds-close', this.pdsClose);
579
+ this.pdsForward('pds-request-close', this.pdsRequestClose);
580
+ }
581
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
582
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsDialogComponent, isStandalone: true, selector: "pds-dialog", inputs: { dismissible: ["dismissible", "dismissible", booleanAttribute], heading: "heading", open: ["open", "open", booleanAttribute], returnValue: "returnValue", size: "size", closeLabel: ["close-label", "closeLabel"] }, outputs: { pdsOpen: "pdsOpen", pdsClose: "pdsClose", pdsRequestClose: "pdsRequestClose" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
583
+ }
584
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDialogComponent, decorators: [{
585
+ type: Component,
586
+ args: [{
587
+ selector: 'pds-dialog',
588
+ standalone: true,
589
+ template: '<ng-content></ng-content>',
590
+ changeDetection: ChangeDetectionStrategy.OnPush,
591
+ encapsulation: ViewEncapsulation.None,
592
+ }]
593
+ }], ctorParameters: () => [], propDecorators: { dismissible: [{
594
+ type: Input,
595
+ args: [{ transform: booleanAttribute }]
596
+ }], heading: [{
597
+ type: Input
598
+ }], open: [{
599
+ type: Input,
600
+ args: [{ transform: booleanAttribute }]
601
+ }], returnValue: [{
602
+ type: Input
603
+ }], size: [{
604
+ type: Input
605
+ }], closeLabel: [{
606
+ type: Input,
607
+ args: ['close-label']
608
+ }], pdsOpen: [{
609
+ type: Output
610
+ }], pdsClose: [{
611
+ type: Output
612
+ }], pdsRequestClose: [{
613
+ type: Output
614
+ }] } });
615
+ /** Dropdown menu opened from a button. */
616
+ export class PdsDropdownComponent extends PdsComponentBase {
617
+ set disabled(value) {
618
+ this.pdsSetProperty('disabled', value);
619
+ }
620
+ set label(value) {
621
+ this.pdsSetProperty('label', value);
622
+ }
623
+ set open(value) {
624
+ this.pdsSetProperty('open', value);
625
+ }
626
+ set placement(value) {
627
+ this.pdsSetProperty('placement', value);
628
+ }
629
+ constructor() {
630
+ super(definePdsDropdown);
631
+ /** Fired when an item is chosen. Detail: `{ value }`. */
632
+ this.pdsSelect = new EventEmitter();
633
+ this.pdsForward('pds-select', this.pdsSelect);
634
+ }
635
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
636
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsDropdownComponent, isStandalone: true, selector: "pds-dropdown", inputs: { disabled: ["disabled", "disabled", booleanAttribute], label: "label", open: ["open", "open", booleanAttribute], placement: "placement" }, outputs: { pdsSelect: "pdsSelect" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
637
+ }
638
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDropdownComponent, decorators: [{
639
+ type: Component,
640
+ args: [{
641
+ selector: 'pds-dropdown',
642
+ standalone: true,
643
+ template: '<ng-content></ng-content>',
644
+ changeDetection: ChangeDetectionStrategy.OnPush,
645
+ encapsulation: ViewEncapsulation.None,
646
+ }]
647
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
648
+ type: Input,
649
+ args: [{ transform: booleanAttribute }]
650
+ }], label: [{
651
+ type: Input
652
+ }], open: [{
653
+ type: Input,
654
+ args: [{ transform: booleanAttribute }]
655
+ }], placement: [{
656
+ type: Input
657
+ }], pdsSelect: [{
658
+ type: Output
659
+ }] } });
660
+ /** Menu item. */
661
+ export class PdsDropdownItemComponent extends PdsComponentBase {
662
+ set disabled(value) {
663
+ this.pdsSetProperty('disabled', value);
664
+ }
665
+ set href(value) {
666
+ this.pdsSetProperty('href', value);
667
+ }
668
+ set value(value) {
669
+ this.pdsSetProperty('value', value);
670
+ }
671
+ constructor() {
672
+ super(definePdsDropdownItem);
673
+ }
674
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDropdownItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
675
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsDropdownItemComponent, isStandalone: true, selector: "pds-dropdown-item", inputs: { disabled: ["disabled", "disabled", booleanAttribute], href: "href", value: "value" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
676
+ }
677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDropdownItemComponent, decorators: [{
678
+ type: Component,
679
+ args: [{
680
+ selector: 'pds-dropdown-item',
681
+ standalone: true,
682
+ template: '<ng-content></ng-content>',
683
+ changeDetection: ChangeDetectionStrategy.OnPush,
684
+ encapsulation: ViewEncapsulation.None,
685
+ }]
686
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
687
+ type: Input,
688
+ args: [{ transform: booleanAttribute }]
689
+ }], href: [{
690
+ type: Input
691
+ }], value: [{
692
+ type: Input
693
+ }] } });
694
+ /** Expandable reveals or hides content. */
695
+ export class PdsExpandableComponent extends PdsComponentBase {
696
+ set label(value) {
697
+ this.pdsSetProperty('label', value);
698
+ }
699
+ set open(value) {
700
+ this.pdsSetProperty('open', value);
701
+ }
702
+ constructor() {
703
+ super(definePdsExpandable);
704
+ /** Fired when the user toggles. Detail: `{ open }`. */
705
+ this.pdsToggle = new EventEmitter();
706
+ this.pdsForward('pds-toggle', this.pdsToggle);
707
+ }
708
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsExpandableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
709
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsExpandableComponent, isStandalone: true, selector: "pds-expandable", inputs: { label: "label", open: ["open", "open", booleanAttribute] }, outputs: { pdsToggle: "pdsToggle" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
710
+ }
711
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsExpandableComponent, decorators: [{
712
+ type: Component,
713
+ args: [{
714
+ selector: 'pds-expandable',
715
+ standalone: true,
716
+ template: '<ng-content></ng-content>',
717
+ changeDetection: ChangeDetectionStrategy.OnPush,
718
+ encapsulation: ViewEncapsulation.None,
719
+ }]
720
+ }], ctorParameters: () => [], propDecorators: { label: [{
721
+ type: Input
722
+ }], open: [{
723
+ type: Input,
724
+ args: [{ transform: booleanAttribute }]
725
+ }], pdsToggle: [{
726
+ type: Output
727
+ }] } });
728
+ /** Single-line text field. */
729
+ export class PdsInputComponent extends PdsComponentBase {
730
+ set disabled(value) {
731
+ this.pdsSetProperty('disabled', value);
732
+ }
733
+ set errorText(value) {
734
+ this.pdsSetProperty('errorText', value);
735
+ }
736
+ set helperText(value) {
737
+ this.pdsSetProperty('helperText', value);
738
+ }
739
+ set label(value) {
740
+ this.pdsSetProperty('label', value);
741
+ }
742
+ set name(value) {
743
+ this.pdsSetProperty('name', value);
744
+ }
745
+ set placeholder(value) {
746
+ this.pdsSetProperty('placeholder', value);
747
+ }
748
+ set readOnly(value) {
749
+ this.pdsSetProperty('readOnly', value);
750
+ }
751
+ set required(value) {
752
+ this.pdsSetProperty('required', value);
753
+ }
754
+ set type(value) {
755
+ this.pdsSetProperty('type', value);
756
+ }
757
+ /** Current value. */
758
+ set value(value) {
759
+ this.pdsSetProperty('value', value);
760
+ }
761
+ /** Native autocomplete hint. */
762
+ set autocomplete(value) {
763
+ this.pdsSetAttribute('autocomplete', value);
764
+ }
765
+ /** Maximum (number type). */
766
+ set max(value) {
767
+ this.pdsSetAttribute('max', value);
768
+ }
769
+ /** Maximum length. */
770
+ set maxlength(value) {
771
+ this.pdsSetAttribute('maxlength', value);
772
+ }
773
+ /** Minimum (number type). */
774
+ set min(value) {
775
+ this.pdsSetAttribute('min', value);
776
+ }
777
+ /** Minimum length. */
778
+ set minlength(value) {
779
+ this.pdsSetAttribute('minlength', value);
780
+ }
781
+ /** Validation regular expression. */
782
+ set pattern(value) {
783
+ this.pdsSetAttribute('pattern', value);
784
+ }
785
+ /** Makes the field read-only. */
786
+ set readonly(value) {
787
+ this.pdsSetAttribute('readonly', value);
788
+ }
789
+ constructor() {
790
+ super(definePdsInput);
791
+ /** Fired on every edit. Detail: `{ value }`. */
792
+ this.pdsInput = new EventEmitter();
793
+ /** Fired when the value is committed. Detail: `{ value }`. */
794
+ this.pdsChange = new EventEmitter();
795
+ this.pdsForward('pds-input', this.pdsInput);
796
+ this.pdsForward('pds-change', this.pdsChange);
797
+ }
798
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
799
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsInputComponent, isStandalone: true, selector: "pds-input", inputs: { disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", label: "label", name: "name", placeholder: "placeholder", readOnly: ["readOnly", "readOnly", booleanAttribute], required: ["required", "required", booleanAttribute], type: "type", value: "value", autocomplete: "autocomplete", max: "max", maxlength: "maxlength", min: "min", minlength: "minlength", pattern: "pattern", readonly: "readonly" }, outputs: { pdsInput: "pdsInput", pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
800
+ }
801
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsInputComponent, decorators: [{
802
+ type: Component,
803
+ args: [{
804
+ selector: 'pds-input',
805
+ standalone: true,
806
+ template: '<ng-content></ng-content>',
807
+ changeDetection: ChangeDetectionStrategy.OnPush,
808
+ encapsulation: ViewEncapsulation.None,
809
+ }]
810
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
811
+ type: Input,
812
+ args: [{ transform: booleanAttribute }]
813
+ }], errorText: [{
814
+ type: Input
815
+ }], helperText: [{
816
+ type: Input
817
+ }], label: [{
818
+ type: Input
819
+ }], name: [{
820
+ type: Input
821
+ }], placeholder: [{
822
+ type: Input
823
+ }], readOnly: [{
824
+ type: Input,
825
+ args: [{ transform: booleanAttribute }]
826
+ }], required: [{
827
+ type: Input,
828
+ args: [{ transform: booleanAttribute }]
829
+ }], type: [{
830
+ type: Input
831
+ }], value: [{
832
+ type: Input
833
+ }], autocomplete: [{
834
+ type: Input
835
+ }], max: [{
836
+ type: Input
837
+ }], maxlength: [{
838
+ type: Input
839
+ }], min: [{
840
+ type: Input
841
+ }], minlength: [{
842
+ type: Input
843
+ }], pattern: [{
844
+ type: Input
845
+ }], readonly: [{
846
+ type: Input
847
+ }], pdsInput: [{
848
+ type: Output
849
+ }], pdsChange: [{
850
+ type: Output
851
+ }] } });
852
+ /** Links navigate to another location. */
853
+ export class PdsLinkComponent extends PdsComponentBase {
854
+ set external(value) {
855
+ this.pdsSetProperty('external', value);
856
+ }
857
+ set href(value) {
858
+ this.pdsSetProperty('href', value);
859
+ }
860
+ set target(value) {
861
+ this.pdsSetProperty('target', value);
862
+ }
863
+ set variant(value) {
864
+ this.pdsSetProperty('variant', value);
865
+ }
866
+ constructor() {
867
+ super(definePdsLink);
868
+ }
869
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
870
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsLinkComponent, isStandalone: true, selector: "pds-link", inputs: { external: ["external", "external", booleanAttribute], href: "href", target: "target", variant: "variant" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
871
+ }
872
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsLinkComponent, decorators: [{
873
+ type: Component,
874
+ args: [{
875
+ selector: 'pds-link',
876
+ standalone: true,
877
+ template: '<ng-content></ng-content>',
878
+ changeDetection: ChangeDetectionStrategy.OnPush,
879
+ encapsulation: ViewEncapsulation.None,
880
+ }]
881
+ }], ctorParameters: () => [], propDecorators: { external: [{
882
+ type: Input,
883
+ args: [{ transform: booleanAttribute }]
884
+ }], href: [{
885
+ type: Input
886
+ }], target: [{
887
+ type: Input
888
+ }], variant: [{
889
+ type: Input
890
+ }] } });
891
+ /** Lists present related items. */
892
+ export class PdsListComponent extends PdsComponentBase {
893
+ set variant(value) {
894
+ this.pdsSetProperty('variant', value);
895
+ }
896
+ constructor() {
897
+ super(definePdsList);
898
+ }
899
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
900
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsListComponent, isStandalone: true, selector: "pds-list", inputs: { variant: "variant" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
901
+ }
902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsListComponent, decorators: [{
903
+ type: Component,
904
+ args: [{
905
+ selector: 'pds-list',
906
+ standalone: true,
907
+ template: '<ng-content></ng-content>',
908
+ changeDetection: ChangeDetectionStrategy.OnPush,
909
+ encapsulation: ViewEncapsulation.None,
910
+ }]
911
+ }], ctorParameters: () => [], propDecorators: { variant: [{
912
+ type: Input
913
+ }] } });
914
+ /** A single entry in a list. */
915
+ export class PdsListItemComponent extends PdsComponentBase {
916
+ set dataIndex(value) {
917
+ this.pdsSetAttribute('data-index', value);
918
+ }
919
+ set dataVariant(value) {
920
+ this.pdsSetAttribute('data-variant', value);
921
+ }
922
+ constructor() {
923
+ super(defineAll);
924
+ }
925
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
926
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsListItemComponent, isStandalone: true, selector: "pds-list-item", inputs: { dataIndex: ["data-index", "dataIndex"], dataVariant: ["data-variant", "dataVariant"] }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
927
+ }
928
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsListItemComponent, decorators: [{
929
+ type: Component,
930
+ args: [{
931
+ selector: 'pds-list-item',
932
+ standalone: true,
933
+ template: '<ng-content></ng-content>',
934
+ changeDetection: ChangeDetectionStrategy.OnPush,
935
+ encapsulation: ViewEncapsulation.None,
936
+ }]
937
+ }], ctorParameters: () => [], propDecorators: { dataIndex: [{
938
+ type: Input,
939
+ args: ['data-index']
940
+ }], dataVariant: [{
941
+ type: Input,
942
+ args: ['data-variant']
943
+ }] } });
944
+ /** Indicates that content is loading. */
945
+ export class PdsLoaderComponent extends PdsComponentBase {
946
+ set label(value) {
947
+ this.pdsSetProperty('label', value);
948
+ }
949
+ set overlay(value) {
950
+ this.pdsSetProperty('overlay', value);
951
+ }
952
+ set size(value) {
953
+ this.pdsSetProperty('size', value);
954
+ }
955
+ constructor() {
956
+ super(definePdsLoader);
957
+ }
958
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
959
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsLoaderComponent, isStandalone: true, selector: "pds-loader", inputs: { label: "label", overlay: ["overlay", "overlay", booleanAttribute], size: "size" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
960
+ }
961
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsLoaderComponent, decorators: [{
962
+ type: Component,
963
+ args: [{
964
+ selector: 'pds-loader',
965
+ standalone: true,
966
+ template: '<ng-content></ng-content>',
967
+ changeDetection: ChangeDetectionStrategy.OnPush,
968
+ encapsulation: ViewEncapsulation.None,
969
+ }]
970
+ }], ctorParameters: () => [], propDecorators: { label: [{
971
+ type: Input
972
+ }], overlay: [{
973
+ type: Input,
974
+ args: [{ transform: booleanAttribute }]
975
+ }], size: [{
976
+ type: Input
977
+ }] } });
978
+ /** Media objects pair an image or icon with text. */
979
+ export class PdsMediaObjectComponent extends PdsComponentBase {
980
+ set align(value) {
981
+ this.pdsSetProperty('align', value);
982
+ }
983
+ set reverse(value) {
984
+ this.pdsSetProperty('reverse', value);
985
+ }
986
+ /** Breakpoint in px, or `null` when the container query is used. */
987
+ set stackBelow(value) {
988
+ this.pdsSetProperty('stackBelow', value);
989
+ }
990
+ constructor() {
991
+ super(definePdsMediaObject);
992
+ }
993
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsMediaObjectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
994
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsMediaObjectComponent, isStandalone: true, selector: "pds-media-object", inputs: { align: "align", reverse: ["reverse", "reverse", booleanAttribute], stackBelow: "stackBelow" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
995
+ }
996
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsMediaObjectComponent, decorators: [{
997
+ type: Component,
998
+ args: [{
999
+ selector: 'pds-media-object',
1000
+ standalone: true,
1001
+ template: '<ng-content></ng-content>',
1002
+ changeDetection: ChangeDetectionStrategy.OnPush,
1003
+ encapsulation: ViewEncapsulation.None,
1004
+ }]
1005
+ }], ctorParameters: () => [], propDecorators: { align: [{
1006
+ type: Input
1007
+ }], reverse: [{
1008
+ type: Input,
1009
+ args: [{ transform: booleanAttribute }]
1010
+ }], stackBelow: [{
1011
+ type: Input
1012
+ }] } });
1013
+ /** Navigate between pages of content. */
1014
+ export class PdsPaginationComponent extends PdsComponentBase {
1015
+ set hrefTemplate(value) {
1016
+ this.pdsSetProperty('hrefTemplate', value);
1017
+ }
1018
+ set label(value) {
1019
+ this.pdsSetProperty('label', value);
1020
+ }
1021
+ set page(value) {
1022
+ this.pdsSetProperty('page', value);
1023
+ }
1024
+ set siblingCount(value) {
1025
+ this.pdsSetProperty('siblingCount', value);
1026
+ }
1027
+ set totalPages(value) {
1028
+ this.pdsSetProperty('totalPages', value);
1029
+ }
1030
+ /** Accessible name of the next control. Default `Next page`. */
1031
+ set nextLabel(value) {
1032
+ this.pdsSetAttribute('next-label', value);
1033
+ }
1034
+ /** Accessible name of the previous control. Default `Previous page`. */
1035
+ set previousLabel(value) {
1036
+ this.pdsSetAttribute('previous-label', value);
1037
+ }
1038
+ constructor() {
1039
+ super(definePdsPagination);
1040
+ /** Fired when the user selects a page. Detail: `{ page }`. */
1041
+ this.pdsChange = new EventEmitter();
1042
+ this.pdsForward('pds-change', this.pdsChange);
1043
+ }
1044
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1045
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsPaginationComponent, isStandalone: true, selector: "pds-pagination", inputs: { hrefTemplate: "hrefTemplate", label: "label", page: ["page", "page", numberAttribute], siblingCount: ["siblingCount", "siblingCount", numberAttribute], totalPages: ["totalPages", "totalPages", numberAttribute], nextLabel: ["next-label", "nextLabel"], previousLabel: ["previous-label", "previousLabel"] }, outputs: { pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1046
+ }
1047
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsPaginationComponent, decorators: [{
1048
+ type: Component,
1049
+ args: [{
1050
+ selector: 'pds-pagination',
1051
+ standalone: true,
1052
+ template: '<ng-content></ng-content>',
1053
+ changeDetection: ChangeDetectionStrategy.OnPush,
1054
+ encapsulation: ViewEncapsulation.None,
1055
+ }]
1056
+ }], ctorParameters: () => [], propDecorators: { hrefTemplate: [{
1057
+ type: Input
1058
+ }], label: [{
1059
+ type: Input
1060
+ }], page: [{
1061
+ type: Input,
1062
+ args: [{ transform: numberAttribute }]
1063
+ }], siblingCount: [{
1064
+ type: Input,
1065
+ args: [{ transform: numberAttribute }]
1066
+ }], totalPages: [{
1067
+ type: Input,
1068
+ args: [{ transform: numberAttribute }]
1069
+ }], nextLabel: [{
1070
+ type: Input,
1071
+ args: ['next-label']
1072
+ }], previousLabel: [{
1073
+ type: Input,
1074
+ args: ['previous-label']
1075
+ }], pdsChange: [{
1076
+ type: Output
1077
+ }] } });
1078
+ /** Panels group related content on a tinted surface. */
1079
+ export class PdsPanelComponent extends PdsComponentBase {
1080
+ set heading(value) {
1081
+ this.pdsSetProperty('heading', value);
1082
+ }
1083
+ set headingLevel(value) {
1084
+ this.pdsSetProperty('headingLevel', value);
1085
+ }
1086
+ set variant(value) {
1087
+ this.pdsSetProperty('variant', value);
1088
+ }
1089
+ constructor() {
1090
+ super(definePdsPanel);
1091
+ }
1092
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1093
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsPanelComponent, isStandalone: true, selector: "pds-panel", inputs: { heading: "heading", headingLevel: ["headingLevel", "headingLevel", numberAttribute], variant: "variant" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1094
+ }
1095
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsPanelComponent, decorators: [{
1096
+ type: Component,
1097
+ args: [{
1098
+ selector: 'pds-panel',
1099
+ standalone: true,
1100
+ template: '<ng-content></ng-content>',
1101
+ changeDetection: ChangeDetectionStrategy.OnPush,
1102
+ encapsulation: ViewEncapsulation.None,
1103
+ }]
1104
+ }], ctorParameters: () => [], propDecorators: { heading: [{
1105
+ type: Input
1106
+ }], headingLevel: [{
1107
+ type: Input,
1108
+ args: [{ transform: numberAttribute }]
1109
+ }], variant: [{
1110
+ type: Input
1111
+ }] } });
1112
+ /** One step of a multi-step process. */
1113
+ export class PdsProgressStepComponent extends PdsComponentBase {
1114
+ set status(value) {
1115
+ this.pdsSetProperty('status', value);
1116
+ }
1117
+ constructor() {
1118
+ super(definePdsProgressStep);
1119
+ /** Fired when a completed step is activated in a clickable container. Detail: `{ index }`. */
1120
+ this.pdsStepClick = new EventEmitter();
1121
+ this.pdsForward('pds-step-click', this.pdsStepClick);
1122
+ }
1123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsProgressStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1124
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsProgressStepComponent, isStandalone: true, selector: "pds-progress-step", inputs: { status: "status" }, outputs: { pdsStepClick: "pdsStepClick" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1125
+ }
1126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsProgressStepComponent, decorators: [{
1127
+ type: Component,
1128
+ args: [{
1129
+ selector: 'pds-progress-step',
1130
+ standalone: true,
1131
+ template: '<ng-content></ng-content>',
1132
+ changeDetection: ChangeDetectionStrategy.OnPush,
1133
+ encapsulation: ViewEncapsulation.None,
1134
+ }]
1135
+ }], ctorParameters: () => [], propDecorators: { status: [{
1136
+ type: Input
1137
+ }], pdsStepClick: [{
1138
+ type: Output
1139
+ }] } });
1140
+ /** Shows progress through a sequence of steps. */
1141
+ export class PdsProgressStepsComponent extends PdsComponentBase {
1142
+ set clickable(value) {
1143
+ this.pdsSetProperty('clickable', value);
1144
+ }
1145
+ set current(value) {
1146
+ this.pdsSetProperty('current', value);
1147
+ }
1148
+ set label(value) {
1149
+ this.pdsSetProperty('label', value);
1150
+ }
1151
+ set orientation(value) {
1152
+ this.pdsSetProperty('orientation', value);
1153
+ }
1154
+ constructor() {
1155
+ super(definePdsProgressSteps);
1156
+ /** Fired when a completed step is activated. Detail: `{ index }`. */
1157
+ this.pdsStepClick = new EventEmitter();
1158
+ this.pdsForward('pds-step-click', this.pdsStepClick);
1159
+ }
1160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsProgressStepsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1161
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsProgressStepsComponent, isStandalone: true, selector: "pds-progress-steps", inputs: { clickable: ["clickable", "clickable", booleanAttribute], current: ["current", "current", numberAttribute], label: "label", orientation: "orientation" }, outputs: { pdsStepClick: "pdsStepClick" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1162
+ }
1163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsProgressStepsComponent, decorators: [{
1164
+ type: Component,
1165
+ args: [{
1166
+ selector: 'pds-progress-steps',
1167
+ standalone: true,
1168
+ template: '<ng-content></ng-content>',
1169
+ changeDetection: ChangeDetectionStrategy.OnPush,
1170
+ encapsulation: ViewEncapsulation.None,
1171
+ }]
1172
+ }], ctorParameters: () => [], propDecorators: { clickable: [{
1173
+ type: Input,
1174
+ args: [{ transform: booleanAttribute }]
1175
+ }], current: [{
1176
+ type: Input,
1177
+ args: [{ transform: numberAttribute }]
1178
+ }], label: [{
1179
+ type: Input
1180
+ }], orientation: [{
1181
+ type: Input
1182
+ }], pdsStepClick: [{
1183
+ type: Output
1184
+ }] } });
1185
+ /** Radio option, used inside `pds-radio-group`. */
1186
+ export class PdsRadioComponent extends PdsComponentBase {
1187
+ /** Current selection state (managed by the group). The `checked` attribute is only the initial state. */
1188
+ set checked(value) {
1189
+ this.pdsSetProperty('checked', value);
1190
+ }
1191
+ set disabled(value) {
1192
+ this.pdsSetProperty('disabled', value);
1193
+ }
1194
+ set value(value) {
1195
+ this.pdsSetProperty('value', value);
1196
+ }
1197
+ constructor() {
1198
+ super(definePdsRadio);
1199
+ }
1200
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1201
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsRadioComponent, isStandalone: true, selector: "pds-radio", inputs: { checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], value: "value" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1202
+ }
1203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRadioComponent, decorators: [{
1204
+ type: Component,
1205
+ args: [{
1206
+ selector: 'pds-radio',
1207
+ standalone: true,
1208
+ template: '<ng-content></ng-content>',
1209
+ changeDetection: ChangeDetectionStrategy.OnPush,
1210
+ encapsulation: ViewEncapsulation.None,
1211
+ }]
1212
+ }], ctorParameters: () => [], propDecorators: { checked: [{
1213
+ type: Input,
1214
+ args: [{ transform: booleanAttribute }]
1215
+ }], disabled: [{
1216
+ type: Input,
1217
+ args: [{ transform: booleanAttribute }]
1218
+ }], value: [{
1219
+ type: Input
1220
+ }] } });
1221
+ /** Group of mutually exclusive radio options. */
1222
+ export class PdsRadioGroupComponent extends PdsComponentBase {
1223
+ set disabled(value) {
1224
+ this.pdsSetProperty('disabled', value);
1225
+ }
1226
+ set errorText(value) {
1227
+ this.pdsSetProperty('errorText', value);
1228
+ }
1229
+ set helperText(value) {
1230
+ this.pdsSetProperty('helperText', value);
1231
+ }
1232
+ set label(value) {
1233
+ this.pdsSetProperty('label', value);
1234
+ }
1235
+ set name(value) {
1236
+ this.pdsSetProperty('name', value);
1237
+ }
1238
+ set orientation(value) {
1239
+ this.pdsSetProperty('orientation', value);
1240
+ }
1241
+ set required(value) {
1242
+ this.pdsSetProperty('required', value);
1243
+ }
1244
+ /** Currently selected value ('' when none). */
1245
+ set value(value) {
1246
+ this.pdsSetProperty('value', value);
1247
+ }
1248
+ constructor() {
1249
+ super(definePdsRadioGroup);
1250
+ /** Fired when the selection changes by user interaction. Detail: `{ value }`. */
1251
+ this.pdsChange = new EventEmitter();
1252
+ this.pdsForward('pds-change', this.pdsChange);
1253
+ }
1254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1255
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsRadioGroupComponent, isStandalone: true, selector: "pds-radio-group", inputs: { disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", label: "label", name: "name", orientation: "orientation", required: ["required", "required", booleanAttribute], value: "value" }, outputs: { pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1256
+ }
1257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRadioGroupComponent, decorators: [{
1258
+ type: Component,
1259
+ args: [{
1260
+ selector: 'pds-radio-group',
1261
+ standalone: true,
1262
+ template: '<ng-content></ng-content>',
1263
+ changeDetection: ChangeDetectionStrategy.OnPush,
1264
+ encapsulation: ViewEncapsulation.None,
1265
+ }]
1266
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
1267
+ type: Input,
1268
+ args: [{ transform: booleanAttribute }]
1269
+ }], errorText: [{
1270
+ type: Input
1271
+ }], helperText: [{
1272
+ type: Input
1273
+ }], label: [{
1274
+ type: Input
1275
+ }], name: [{
1276
+ type: Input
1277
+ }], orientation: [{
1278
+ type: Input
1279
+ }], required: [{
1280
+ type: Input,
1281
+ args: [{ transform: booleanAttribute }]
1282
+ }], value: [{
1283
+ type: Input
1284
+ }], pdsChange: [{
1285
+ type: Output
1286
+ }] } });
1287
+ /** Slider for choosing a number within a range. */
1288
+ export class PdsRangesliderComponent extends PdsComponentBase {
1289
+ set disabled(value) {
1290
+ this.pdsSetProperty('disabled', value);
1291
+ }
1292
+ set errorText(value) {
1293
+ this.pdsSetProperty('errorText', value);
1294
+ }
1295
+ set helperText(value) {
1296
+ this.pdsSetProperty('helperText', value);
1297
+ }
1298
+ set label(value) {
1299
+ this.pdsSetProperty('label', value);
1300
+ }
1301
+ set name(value) {
1302
+ this.pdsSetProperty('name', value);
1303
+ }
1304
+ set required(value) {
1305
+ this.pdsSetProperty('required', value);
1306
+ }
1307
+ set showValue(value) {
1308
+ this.pdsSetProperty('showValue', value);
1309
+ }
1310
+ /** Current value. */
1311
+ set value(value) {
1312
+ this.pdsSetProperty('value', value);
1313
+ }
1314
+ /** Maximum. Default 100. */
1315
+ set max(value) {
1316
+ this.pdsSetAttribute('max', value);
1317
+ }
1318
+ /** Minimum. Default 0. */
1319
+ set min(value) {
1320
+ this.pdsSetAttribute('min', value);
1321
+ }
1322
+ /** Step. Default 1. */
1323
+ set step(value) {
1324
+ this.pdsSetAttribute('step', value);
1325
+ }
1326
+ constructor() {
1327
+ super(definePdsRangeslider);
1328
+ /** Fired while dragging. Detail: `{ value }`. */
1329
+ this.pdsInput = new EventEmitter();
1330
+ /** Fired when the value is committed. Detail: `{ value }`. */
1331
+ this.pdsChange = new EventEmitter();
1332
+ this.pdsForward('pds-input', this.pdsInput);
1333
+ this.pdsForward('pds-change', this.pdsChange);
1334
+ }
1335
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRangesliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1336
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsRangesliderComponent, isStandalone: true, selector: "pds-rangeslider", inputs: { disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", label: "label", name: "name", required: ["required", "required", booleanAttribute], showValue: ["showValue", "showValue", booleanAttribute], value: "value", max: "max", min: "min", step: "step" }, outputs: { pdsInput: "pdsInput", pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1337
+ }
1338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRangesliderComponent, decorators: [{
1339
+ type: Component,
1340
+ args: [{
1341
+ selector: 'pds-rangeslider',
1342
+ standalone: true,
1343
+ template: '<ng-content></ng-content>',
1344
+ changeDetection: ChangeDetectionStrategy.OnPush,
1345
+ encapsulation: ViewEncapsulation.None,
1346
+ }]
1347
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
1348
+ type: Input,
1349
+ args: [{ transform: booleanAttribute }]
1350
+ }], errorText: [{
1351
+ type: Input
1352
+ }], helperText: [{
1353
+ type: Input
1354
+ }], label: [{
1355
+ type: Input
1356
+ }], name: [{
1357
+ type: Input
1358
+ }], required: [{
1359
+ type: Input,
1360
+ args: [{ transform: booleanAttribute }]
1361
+ }], showValue: [{
1362
+ type: Input,
1363
+ args: [{ transform: booleanAttribute }]
1364
+ }], value: [{
1365
+ type: Input
1366
+ }], max: [{
1367
+ type: Input
1368
+ }], min: [{
1369
+ type: Input
1370
+ }], step: [{
1371
+ type: Input
1372
+ }], pdsInput: [{
1373
+ type: Output
1374
+ }], pdsChange: [{
1375
+ type: Output
1376
+ }] } });
1377
+ /** Dropdown for choosing one option from a list. */
1378
+ export class PdsSelectComponent extends PdsComponentBase {
1379
+ set disabled(value) {
1380
+ this.pdsSetProperty('disabled', value);
1381
+ }
1382
+ set errorText(value) {
1383
+ this.pdsSetProperty('errorText', value);
1384
+ }
1385
+ set helperText(value) {
1386
+ this.pdsSetProperty('helperText', value);
1387
+ }
1388
+ set label(value) {
1389
+ this.pdsSetProperty('label', value);
1390
+ }
1391
+ set name(value) {
1392
+ this.pdsSetProperty('name', value);
1393
+ }
1394
+ set placeholder(value) {
1395
+ this.pdsSetProperty('placeholder', value);
1396
+ }
1397
+ set required(value) {
1398
+ this.pdsSetProperty('required', value);
1399
+ }
1400
+ /** Current value. */
1401
+ set value(value) {
1402
+ this.pdsSetProperty('value', value);
1403
+ }
1404
+ constructor() {
1405
+ super(definePdsSelect);
1406
+ /** Fired when the selection changes. Detail: `{ value }`. */
1407
+ this.pdsInput = new EventEmitter();
1408
+ /** Fired when the selection is committed. Detail: `{ value }`. */
1409
+ this.pdsChange = new EventEmitter();
1410
+ this.pdsForward('pds-input', this.pdsInput);
1411
+ this.pdsForward('pds-change', this.pdsChange);
1412
+ }
1413
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1414
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsSelectComponent, isStandalone: true, selector: "pds-select", inputs: { disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", label: "label", name: "name", placeholder: "placeholder", required: ["required", "required", booleanAttribute], value: "value" }, outputs: { pdsInput: "pdsInput", pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1415
+ }
1416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSelectComponent, decorators: [{
1417
+ type: Component,
1418
+ args: [{
1419
+ selector: 'pds-select',
1420
+ standalone: true,
1421
+ template: '<ng-content></ng-content>',
1422
+ changeDetection: ChangeDetectionStrategy.OnPush,
1423
+ encapsulation: ViewEncapsulation.None,
1424
+ }]
1425
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
1426
+ type: Input,
1427
+ args: [{ transform: booleanAttribute }]
1428
+ }], errorText: [{
1429
+ type: Input
1430
+ }], helperText: [{
1431
+ type: Input
1432
+ }], label: [{
1433
+ type: Input
1434
+ }], name: [{
1435
+ type: Input
1436
+ }], placeholder: [{
1437
+ type: Input
1438
+ }], required: [{
1439
+ type: Input,
1440
+ args: [{ transform: booleanAttribute }]
1441
+ }], value: [{
1442
+ type: Input
1443
+ }], pdsInput: [{
1444
+ type: Output
1445
+ }], pdsChange: [{
1446
+ type: Output
1447
+ }] } });
1448
+ /** Sheets slide in from an edge of the screen with secondary content. */
1449
+ export class PdsSheetComponent extends PdsComponentBase {
1450
+ set dismissible(value) {
1451
+ this.pdsSetProperty('dismissible', value);
1452
+ }
1453
+ set heading(value) {
1454
+ this.pdsSetProperty('heading', value);
1455
+ }
1456
+ set open(value) {
1457
+ this.pdsSetProperty('open', value);
1458
+ }
1459
+ set placement(value) {
1460
+ this.pdsSetProperty('placement', value);
1461
+ }
1462
+ /** Value reported by `pds-close`. */
1463
+ set returnValue(value) {
1464
+ this.pdsSetProperty('returnValue', value);
1465
+ }
1466
+ /** Accessible label of the close button. Default `Close`. */
1467
+ set closeLabel(value) {
1468
+ this.pdsSetAttribute('close-label', value);
1469
+ }
1470
+ constructor() {
1471
+ super(definePdsSheet);
1472
+ /** Fired after the sheet opened. */
1473
+ this.pdsOpen = new EventEmitter();
1474
+ /** Fired after the sheet closed. Detail: `{ returnValue }`. */
1475
+ this.pdsClose = new EventEmitter();
1476
+ /** Cancelable; fired when Escape, backdrop or close button asks to close. Detail: `{ reason }`. */
1477
+ this.pdsRequestClose = new EventEmitter();
1478
+ this.pdsForward('pds-open', this.pdsOpen);
1479
+ this.pdsForward('pds-close', this.pdsClose);
1480
+ this.pdsForward('pds-request-close', this.pdsRequestClose);
1481
+ }
1482
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1483
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsSheetComponent, isStandalone: true, selector: "pds-sheet", inputs: { dismissible: ["dismissible", "dismissible", booleanAttribute], heading: "heading", open: ["open", "open", booleanAttribute], placement: "placement", returnValue: "returnValue", closeLabel: ["close-label", "closeLabel"] }, outputs: { pdsOpen: "pdsOpen", pdsClose: "pdsClose", pdsRequestClose: "pdsRequestClose" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1484
+ }
1485
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSheetComponent, decorators: [{
1486
+ type: Component,
1487
+ args: [{
1488
+ selector: 'pds-sheet',
1489
+ standalone: true,
1490
+ template: '<ng-content></ng-content>',
1491
+ changeDetection: ChangeDetectionStrategy.OnPush,
1492
+ encapsulation: ViewEncapsulation.None,
1493
+ }]
1494
+ }], ctorParameters: () => [], propDecorators: { dismissible: [{
1495
+ type: Input,
1496
+ args: [{ transform: booleanAttribute }]
1497
+ }], heading: [{
1498
+ type: Input
1499
+ }], open: [{
1500
+ type: Input,
1501
+ args: [{ transform: booleanAttribute }]
1502
+ }], placement: [{
1503
+ type: Input
1504
+ }], returnValue: [{
1505
+ type: Input
1506
+ }], closeLabel: [{
1507
+ type: Input,
1508
+ args: ['close-label']
1509
+ }], pdsOpen: [{
1510
+ type: Output
1511
+ }], pdsClose: [{
1512
+ type: Output
1513
+ }], pdsRequestClose: [{
1514
+ type: Output
1515
+ }] } });
1516
+ /** Vertical navigation container for `pds-sidebar-item` and `pds-sidebar-group`. */
1517
+ export class PdsSidebarComponent extends PdsComponentBase {
1518
+ set collapsed(value) {
1519
+ this.pdsSetProperty('collapsed', value);
1520
+ }
1521
+ set label(value) {
1522
+ this.pdsSetProperty('label', value);
1523
+ }
1524
+ constructor() {
1525
+ super(definePdsSidebar);
1526
+ }
1527
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1528
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsSidebarComponent, isStandalone: true, selector: "pds-sidebar", inputs: { collapsed: ["collapsed", "collapsed", booleanAttribute], label: "label" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1529
+ }
1530
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarComponent, decorators: [{
1531
+ type: Component,
1532
+ args: [{
1533
+ selector: 'pds-sidebar',
1534
+ standalone: true,
1535
+ template: '<ng-content></ng-content>',
1536
+ changeDetection: ChangeDetectionStrategy.OnPush,
1537
+ encapsulation: ViewEncapsulation.None,
1538
+ }]
1539
+ }], ctorParameters: () => [], propDecorators: { collapsed: [{
1540
+ type: Input,
1541
+ args: [{ transform: booleanAttribute }]
1542
+ }], label: [{
1543
+ type: Input
1544
+ }] } });
1545
+ /** A collapsible section of `pds-sidebar-item`s. */
1546
+ export class PdsSidebarGroupComponent extends PdsComponentBase {
1547
+ /** Set by the parent sidebar: icon-only mode shows items directly without a heading. */
1548
+ set collapsed(value) {
1549
+ this.pdsSetProperty('collapsed', value);
1550
+ }
1551
+ set expanded(value) {
1552
+ this.pdsSetProperty('expanded', value);
1553
+ }
1554
+ set label(value) {
1555
+ this.pdsSetProperty('label', value);
1556
+ }
1557
+ constructor() {
1558
+ super(definePdsSidebarGroup);
1559
+ /** Fired when the heading is toggled. Detail: `{ expanded }`. */
1560
+ this.pdsToggle = new EventEmitter();
1561
+ this.pdsForward('pds-toggle', this.pdsToggle);
1562
+ }
1563
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1564
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsSidebarGroupComponent, isStandalone: true, selector: "pds-sidebar-group", inputs: { collapsed: ["collapsed", "collapsed", booleanAttribute], expanded: ["expanded", "expanded", booleanAttribute], label: "label" }, outputs: { pdsToggle: "pdsToggle" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1565
+ }
1566
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarGroupComponent, decorators: [{
1567
+ type: Component,
1568
+ args: [{
1569
+ selector: 'pds-sidebar-group',
1570
+ standalone: true,
1571
+ template: '<ng-content></ng-content>',
1572
+ changeDetection: ChangeDetectionStrategy.OnPush,
1573
+ encapsulation: ViewEncapsulation.None,
1574
+ }]
1575
+ }], ctorParameters: () => [], propDecorators: { collapsed: [{
1576
+ type: Input,
1577
+ args: [{ transform: booleanAttribute }]
1578
+ }], expanded: [{
1579
+ type: Input,
1580
+ args: [{ transform: booleanAttribute }]
1581
+ }], label: [{
1582
+ type: Input
1583
+ }], pdsToggle: [{
1584
+ type: Output
1585
+ }] } });
1586
+ /** An item inside `pds-sidebar`. */
1587
+ export class PdsSidebarItemComponent extends PdsComponentBase {
1588
+ set active(value) {
1589
+ this.pdsSetProperty('active', value);
1590
+ }
1591
+ /** Set by the parent sidebar. */
1592
+ set collapsed(value) {
1593
+ this.pdsSetProperty('collapsed', value);
1594
+ }
1595
+ set disabled(value) {
1596
+ this.pdsSetProperty('disabled', value);
1597
+ }
1598
+ set href(value) {
1599
+ this.pdsSetProperty('href', value);
1600
+ }
1601
+ set label(value) {
1602
+ this.pdsSetProperty('label', value);
1603
+ }
1604
+ constructor() {
1605
+ super(definePdsSidebarItem);
1606
+ /** Fired when a button-type item is activated. */
1607
+ this.pdsClick = new EventEmitter();
1608
+ this.pdsForward('pds-click', this.pdsClick);
1609
+ }
1610
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1611
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsSidebarItemComponent, isStandalone: true, selector: "pds-sidebar-item", inputs: { active: ["active", "active", booleanAttribute], collapsed: ["collapsed", "collapsed", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], href: "href", label: "label" }, outputs: { pdsClick: "pdsClick" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1612
+ }
1613
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarItemComponent, decorators: [{
1614
+ type: Component,
1615
+ args: [{
1616
+ selector: 'pds-sidebar-item',
1617
+ standalone: true,
1618
+ template: '<ng-content></ng-content>',
1619
+ changeDetection: ChangeDetectionStrategy.OnPush,
1620
+ encapsulation: ViewEncapsulation.None,
1621
+ }]
1622
+ }], ctorParameters: () => [], propDecorators: { active: [{
1623
+ type: Input,
1624
+ args: [{ transform: booleanAttribute }]
1625
+ }], collapsed: [{
1626
+ type: Input,
1627
+ args: [{ transform: booleanAttribute }]
1628
+ }], disabled: [{
1629
+ type: Input,
1630
+ args: [{ transform: booleanAttribute }]
1631
+ }], href: [{
1632
+ type: Input
1633
+ }], label: [{
1634
+ type: Input
1635
+ }], pdsClick: [{
1636
+ type: Output
1637
+ }] } });
1638
+ /** Lets keyboard users skip repeated content. */
1639
+ export class PdsSkipLinkComponent extends PdsComponentBase {
1640
+ set href(value) {
1641
+ this.pdsSetProperty('href', value);
1642
+ }
1643
+ constructor() {
1644
+ super(definePdsSkipLink);
1645
+ }
1646
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSkipLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1647
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsSkipLinkComponent, isStandalone: true, selector: "pds-skip-link", inputs: { href: "href" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1648
+ }
1649
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSkipLinkComponent, decorators: [{
1650
+ type: Component,
1651
+ args: [{
1652
+ selector: 'pds-skip-link',
1653
+ standalone: true,
1654
+ template: '<ng-content></ng-content>',
1655
+ changeDetection: ChangeDetectionStrategy.OnPush,
1656
+ encapsulation: ViewEncapsulation.None,
1657
+ }]
1658
+ }], ctorParameters: () => [], propDecorators: { href: [{
1659
+ type: Input
1660
+ }] } });
1661
+ /** Slabs divide a page into full-width sections. */
1662
+ export class PdsSlabComponent extends PdsComponentBase {
1663
+ set size(value) {
1664
+ this.pdsSetProperty('size', value);
1665
+ }
1666
+ set variant(value) {
1667
+ this.pdsSetProperty('variant', value);
1668
+ }
1669
+ constructor() {
1670
+ super(definePdsSlab);
1671
+ }
1672
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSlabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1673
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsSlabComponent, isStandalone: true, selector: "pds-slab", inputs: { size: "size", variant: "variant" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1674
+ }
1675
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSlabComponent, decorators: [{
1676
+ type: Component,
1677
+ args: [{
1678
+ selector: 'pds-slab',
1679
+ standalone: true,
1680
+ template: '<ng-content></ng-content>',
1681
+ changeDetection: ChangeDetectionStrategy.OnPush,
1682
+ encapsulation: ViewEncapsulation.None,
1683
+ }]
1684
+ }], ctorParameters: () => [], propDecorators: { size: [{
1685
+ type: Input
1686
+ }], variant: [{
1687
+ type: Input
1688
+ }] } });
1689
+ /** Shows a status as a coloured dot plus label. */
1690
+ export class PdsStatusComponent extends PdsComponentBase {
1691
+ set status(value) {
1692
+ this.pdsSetProperty('status', value);
1693
+ }
1694
+ constructor() {
1695
+ super(definePdsStatus);
1696
+ }
1697
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1698
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsStatusComponent, isStandalone: true, selector: "pds-status", inputs: { status: "status" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1699
+ }
1700
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsStatusComponent, decorators: [{
1701
+ type: Component,
1702
+ args: [{
1703
+ selector: 'pds-status',
1704
+ standalone: true,
1705
+ template: '<ng-content></ng-content>',
1706
+ changeDetection: ChangeDetectionStrategy.OnPush,
1707
+ encapsulation: ViewEncapsulation.None,
1708
+ }]
1709
+ }], ctorParameters: () => [], propDecorators: { status: [{
1710
+ type: Input
1711
+ }] } });
1712
+ /** Tab button of a tab list. */
1713
+ export class PdsTabComponent extends PdsComponentBase {
1714
+ set disabled(value) {
1715
+ this.pdsSetProperty('disabled', value);
1716
+ }
1717
+ set panel(value) {
1718
+ this.pdsSetProperty('panel', value);
1719
+ }
1720
+ /** True once the tab is connected; lets the parent ignore tabs that are not initialised yet. */
1721
+ set ready(value) {
1722
+ this.pdsSetProperty('ready', value);
1723
+ }
1724
+ set selected(value) {
1725
+ this.pdsSetProperty('selected', value);
1726
+ }
1727
+ constructor() {
1728
+ super(definePdsTab);
1729
+ }
1730
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1731
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsTabComponent, isStandalone: true, selector: "pds-tab", inputs: { disabled: ["disabled", "disabled", booleanAttribute], panel: "panel", ready: ["ready", "ready", booleanAttribute], selected: ["selected", "selected", booleanAttribute] }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1732
+ }
1733
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabComponent, decorators: [{
1734
+ type: Component,
1735
+ args: [{
1736
+ selector: 'pds-tab',
1737
+ standalone: true,
1738
+ template: '<ng-content></ng-content>',
1739
+ changeDetection: ChangeDetectionStrategy.OnPush,
1740
+ encapsulation: ViewEncapsulation.None,
1741
+ }]
1742
+ }], ctorParameters: () => [], propDecorators: { disabled: [{
1743
+ type: Input,
1744
+ args: [{ transform: booleanAttribute }]
1745
+ }], panel: [{
1746
+ type: Input
1747
+ }], ready: [{
1748
+ type: Input,
1749
+ args: [{ transform: booleanAttribute }]
1750
+ }], selected: [{
1751
+ type: Input,
1752
+ args: [{ transform: booleanAttribute }]
1753
+ }] } });
1754
+ /** Panel shown when its tab is selected. */
1755
+ export class PdsTabPanelComponent extends PdsComponentBase {
1756
+ constructor() {
1757
+ super(definePdsTabPanel);
1758
+ }
1759
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1760
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsTabPanelComponent, isStandalone: true, selector: "pds-tab-panel", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1761
+ }
1762
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabPanelComponent, decorators: [{
1763
+ type: Component,
1764
+ args: [{
1765
+ selector: 'pds-tab-panel',
1766
+ standalone: true,
1767
+ template: '<ng-content></ng-content>',
1768
+ changeDetection: ChangeDetectionStrategy.OnPush,
1769
+ encapsulation: ViewEncapsulation.None,
1770
+ }]
1771
+ }], ctorParameters: () => [] });
1772
+ /** Styled, scrollable and optionally sortable data table. */
1773
+ export class PdsTableComponent extends PdsComponentBase {
1774
+ set bordered(value) {
1775
+ this.pdsSetProperty('bordered', value);
1776
+ }
1777
+ set compact(value) {
1778
+ this.pdsSetProperty('compact', value);
1779
+ }
1780
+ set label(value) {
1781
+ this.pdsSetProperty('label', value);
1782
+ }
1783
+ set stickyHeader(value) {
1784
+ this.pdsSetProperty('stickyHeader', value);
1785
+ }
1786
+ set striped(value) {
1787
+ this.pdsSetProperty('striped', value);
1788
+ }
1789
+ /** CSS max-height of the scroll region (e.g. `20rem`). */
1790
+ set maxHeight(value) {
1791
+ this.pdsSetAttribute('max-height', value);
1792
+ }
1793
+ constructor() {
1794
+ super(definePdsTable);
1795
+ /** Fired after a column is sorted. Detail: `{ column, direction }`. */
1796
+ this.pdsSort = new EventEmitter();
1797
+ this.pdsForward('pds-sort', this.pdsSort);
1798
+ }
1799
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1800
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsTableComponent, isStandalone: true, selector: "pds-table", inputs: { bordered: ["bordered", "bordered", booleanAttribute], compact: ["compact", "compact", booleanAttribute], label: "label", stickyHeader: ["stickyHeader", "stickyHeader", booleanAttribute], striped: ["striped", "striped", booleanAttribute], maxHeight: ["max-height", "maxHeight"] }, outputs: { pdsSort: "pdsSort" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1801
+ }
1802
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTableComponent, decorators: [{
1803
+ type: Component,
1804
+ args: [{
1805
+ selector: 'pds-table',
1806
+ standalone: true,
1807
+ template: '<ng-content></ng-content>',
1808
+ changeDetection: ChangeDetectionStrategy.OnPush,
1809
+ encapsulation: ViewEncapsulation.None,
1810
+ }]
1811
+ }], ctorParameters: () => [], propDecorators: { bordered: [{
1812
+ type: Input,
1813
+ args: [{ transform: booleanAttribute }]
1814
+ }], compact: [{
1815
+ type: Input,
1816
+ args: [{ transform: booleanAttribute }]
1817
+ }], label: [{
1818
+ type: Input
1819
+ }], stickyHeader: [{
1820
+ type: Input,
1821
+ args: [{ transform: booleanAttribute }]
1822
+ }], striped: [{
1823
+ type: Input,
1824
+ args: [{ transform: booleanAttribute }]
1825
+ }], maxHeight: [{
1826
+ type: Input,
1827
+ args: ['max-height']
1828
+ }], pdsSort: [{
1829
+ type: Output
1830
+ }] } });
1831
+ /** Tabs switch between related panels. */
1832
+ export class PdsTabsComponent extends PdsComponentBase {
1833
+ set label(value) {
1834
+ this.pdsSetProperty('label', value);
1835
+ }
1836
+ set orientation(value) {
1837
+ this.pdsSetProperty('orientation', value);
1838
+ }
1839
+ set value(value) {
1840
+ this.pdsSetProperty('value', value);
1841
+ }
1842
+ constructor() {
1843
+ super(definePdsTabs);
1844
+ /** Fired when the user selects a tab. Detail: `{ index, value }` (value is the panel id). */
1845
+ this.pdsChange = new EventEmitter();
1846
+ this.pdsForward('pds-change', this.pdsChange);
1847
+ }
1848
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1849
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsTabsComponent, isStandalone: true, selector: "pds-tabs", inputs: { label: "label", orientation: "orientation", value: "value" }, outputs: { pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1850
+ }
1851
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabsComponent, decorators: [{
1852
+ type: Component,
1853
+ args: [{
1854
+ selector: 'pds-tabs',
1855
+ standalone: true,
1856
+ template: '<ng-content></ng-content>',
1857
+ changeDetection: ChangeDetectionStrategy.OnPush,
1858
+ encapsulation: ViewEncapsulation.None,
1859
+ }]
1860
+ }], ctorParameters: () => [], propDecorators: { label: [{
1861
+ type: Input
1862
+ }], orientation: [{
1863
+ type: Input
1864
+ }], value: [{
1865
+ type: Input
1866
+ }], pdsChange: [{
1867
+ type: Output
1868
+ }] } });
1869
+ /** Tags label or categorise content. */
1870
+ export class PdsTagComponent extends PdsComponentBase {
1871
+ set removable(value) {
1872
+ this.pdsSetProperty('removable', value);
1873
+ }
1874
+ set size(value) {
1875
+ this.pdsSetProperty('size', value);
1876
+ }
1877
+ set variant(value) {
1878
+ this.pdsSetProperty('variant', value);
1879
+ }
1880
+ constructor() {
1881
+ super(definePdsTag);
1882
+ /** Fired (cancelable) when the remove button is activated. The tag removes itself unless prevented. */
1883
+ this.pdsRemove = new EventEmitter();
1884
+ this.pdsForward('pds-remove', this.pdsRemove);
1885
+ }
1886
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1887
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsTagComponent, isStandalone: true, selector: "pds-tag", inputs: { removable: ["removable", "removable", booleanAttribute], size: "size", variant: "variant" }, outputs: { pdsRemove: "pdsRemove" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1888
+ }
1889
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTagComponent, decorators: [{
1890
+ type: Component,
1891
+ args: [{
1892
+ selector: 'pds-tag',
1893
+ standalone: true,
1894
+ template: '<ng-content></ng-content>',
1895
+ changeDetection: ChangeDetectionStrategy.OnPush,
1896
+ encapsulation: ViewEncapsulation.None,
1897
+ }]
1898
+ }], ctorParameters: () => [], propDecorators: { removable: [{
1899
+ type: Input,
1900
+ args: [{ transform: booleanAttribute }]
1901
+ }], size: [{
1902
+ type: Input
1903
+ }], variant: [{
1904
+ type: Input
1905
+ }], pdsRemove: [{
1906
+ type: Output
1907
+ }] } });
1908
+ /** Toasts show short-lived, non-blocking feedback. */
1909
+ export class PdsToastComponent extends PdsComponentBase {
1910
+ set dismissible(value) {
1911
+ this.pdsSetProperty('dismissible', value);
1912
+ }
1913
+ set duration(value) {
1914
+ this.pdsSetProperty('duration', value);
1915
+ }
1916
+ set heading(value) {
1917
+ this.pdsSetProperty('heading', value);
1918
+ }
1919
+ set variant(value) {
1920
+ this.pdsSetProperty('variant', value);
1921
+ }
1922
+ /** Accessible label of the close button. Default `Dismiss`. */
1923
+ set closeLabel(value) {
1924
+ this.pdsSetAttribute('close-label', value);
1925
+ }
1926
+ constructor() {
1927
+ super(definePdsToast);
1928
+ /** Fired before the toast is removed (cancelable). Detail: `{ reason: 'timeout' | 'close-button' | 'programmatic' }`. */
1929
+ this.pdsDismiss = new EventEmitter();
1930
+ this.pdsForward('pds-dismiss', this.pdsDismiss);
1931
+ }
1932
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1933
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsToastComponent, isStandalone: true, selector: "pds-toast", inputs: { dismissible: ["dismissible", "dismissible", booleanAttribute], duration: ["duration", "duration", numberAttribute], heading: "heading", variant: "variant", closeLabel: ["close-label", "closeLabel"] }, outputs: { pdsDismiss: "pdsDismiss" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1934
+ }
1935
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToastComponent, decorators: [{
1936
+ type: Component,
1937
+ args: [{
1938
+ selector: 'pds-toast',
1939
+ standalone: true,
1940
+ template: '<ng-content></ng-content>',
1941
+ changeDetection: ChangeDetectionStrategy.OnPush,
1942
+ encapsulation: ViewEncapsulation.None,
1943
+ }]
1944
+ }], ctorParameters: () => [], propDecorators: { dismissible: [{
1945
+ type: Input,
1946
+ args: [{ transform: booleanAttribute }]
1947
+ }], duration: [{
1948
+ type: Input,
1949
+ args: [{ transform: numberAttribute }]
1950
+ }], heading: [{
1951
+ type: Input
1952
+ }], variant: [{
1953
+ type: Input
1954
+ }], closeLabel: [{
1955
+ type: Input,
1956
+ args: ['close-label']
1957
+ }], pdsDismiss: [{
1958
+ type: Output
1959
+ }] } });
1960
+ /** Container that stacks and announces `pds-toast` elements. */
1961
+ export class PdsToastRegionComponent extends PdsComponentBase {
1962
+ constructor() {
1963
+ super(defineAll);
1964
+ }
1965
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToastRegionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1966
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsToastRegionComponent, isStandalone: true, selector: "pds-toast-region", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1967
+ }
1968
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToastRegionComponent, decorators: [{
1969
+ type: Component,
1970
+ args: [{
1971
+ selector: 'pds-toast-region',
1972
+ standalone: true,
1973
+ template: '<ng-content></ng-content>',
1974
+ changeDetection: ChangeDetectionStrategy.OnPush,
1975
+ encapsulation: ViewEncapsulation.None,
1976
+ }]
1977
+ }], ctorParameters: () => [] });
1978
+ /** Switch for immediately-applied on/off settings. */
1979
+ export class PdsToggleboxComponent extends PdsComponentBase {
1980
+ /** Current state (the attribute is the initial state). */
1981
+ set checked(value) {
1982
+ this.pdsSetProperty('checked', value);
1983
+ }
1984
+ set disabled(value) {
1985
+ this.pdsSetProperty('disabled', value);
1986
+ }
1987
+ set errorText(value) {
1988
+ this.pdsSetProperty('errorText', value);
1989
+ }
1990
+ set helperText(value) {
1991
+ this.pdsSetProperty('helperText', value);
1992
+ }
1993
+ set label(value) {
1994
+ this.pdsSetProperty('label', value);
1995
+ }
1996
+ set name(value) {
1997
+ this.pdsSetProperty('name', value);
1998
+ }
1999
+ set required(value) {
2000
+ this.pdsSetProperty('required', value);
2001
+ }
2002
+ set value(value) {
2003
+ this.pdsSetProperty('value', value);
2004
+ }
2005
+ constructor() {
2006
+ super(definePdsTogglebox);
2007
+ /** Fired when toggled by the user. Detail: `{ checked, value }`. */
2008
+ this.pdsChange = new EventEmitter();
2009
+ this.pdsForward('pds-change', this.pdsChange);
2010
+ }
2011
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToggleboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2012
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsToggleboxComponent, isStandalone: true, selector: "pds-togglebox", inputs: { checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", label: "label", name: "name", required: ["required", "required", booleanAttribute], value: "value" }, outputs: { pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2013
+ }
2014
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToggleboxComponent, decorators: [{
2015
+ type: Component,
2016
+ args: [{
2017
+ selector: 'pds-togglebox',
2018
+ standalone: true,
2019
+ template: '<ng-content></ng-content>',
2020
+ changeDetection: ChangeDetectionStrategy.OnPush,
2021
+ encapsulation: ViewEncapsulation.None,
2022
+ }]
2023
+ }], ctorParameters: () => [], propDecorators: { checked: [{
2024
+ type: Input,
2025
+ args: [{ transform: booleanAttribute }]
2026
+ }], disabled: [{
2027
+ type: Input,
2028
+ args: [{ transform: booleanAttribute }]
2029
+ }], errorText: [{
2030
+ type: Input
2031
+ }], helperText: [{
2032
+ type: Input
2033
+ }], label: [{
2034
+ type: Input
2035
+ }], name: [{
2036
+ type: Input
2037
+ }], required: [{
2038
+ type: Input,
2039
+ args: [{ transform: booleanAttribute }]
2040
+ }], value: [{
2041
+ type: Input
2042
+ }], pdsChange: [{
2043
+ type: Output
2044
+ }] } });
2045
+ /** Tooltips show short supplementary text for a control. */
2046
+ export class PdsTooltipComponent extends PdsComponentBase {
2047
+ set content(value) {
2048
+ this.pdsSetProperty('content', value);
2049
+ }
2050
+ set delay(value) {
2051
+ this.pdsSetProperty('delay', value);
2052
+ }
2053
+ set hide(value) {
2054
+ this.pdsSetProperty('hide', value);
2055
+ }
2056
+ set placement(value) {
2057
+ this.pdsSetProperty('placement', value);
2058
+ }
2059
+ constructor() {
2060
+ super(definePdsTooltip);
2061
+ }
2062
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2063
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsTooltipComponent, isStandalone: true, selector: "pds-tooltip", inputs: { content: "content", delay: ["delay", "delay", numberAttribute], hide: "hide", placement: "placement" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2064
+ }
2065
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTooltipComponent, decorators: [{
2066
+ type: Component,
2067
+ args: [{
2068
+ selector: 'pds-tooltip',
2069
+ standalone: true,
2070
+ template: '<ng-content></ng-content>',
2071
+ changeDetection: ChangeDetectionStrategy.OnPush,
2072
+ encapsulation: ViewEncapsulation.None,
2073
+ }]
2074
+ }], ctorParameters: () => [], propDecorators: { content: [{
2075
+ type: Input
2076
+ }], delay: [{
2077
+ type: Input,
2078
+ args: [{ transform: numberAttribute }]
2079
+ }], hide: [{
2080
+ type: Input
2081
+ }], placement: [{
2082
+ type: Input
2083
+ }] } });
2084
+ /** Responsive application header. */
2085
+ export class PdsTopbarComponent extends PdsComponentBase {
2086
+ set breakpoint(value) {
2087
+ this.pdsSetProperty('breakpoint', value);
2088
+ }
2089
+ set label(value) {
2090
+ this.pdsSetProperty('label', value);
2091
+ }
2092
+ set menuLabel(value) {
2093
+ this.pdsSetProperty('menuLabel', value);
2094
+ }
2095
+ set open(value) {
2096
+ this.pdsSetProperty('open', value);
2097
+ }
2098
+ constructor() {
2099
+ super(definePdsTopbar);
2100
+ /** Fired when the menu is opened or closed. Detail: `{ open }`. */
2101
+ this.pdsMenuToggle = new EventEmitter();
2102
+ this.pdsForward('pds-menu-toggle', this.pdsMenuToggle);
2103
+ }
2104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsTopbarComponent, isStandalone: true, selector: "pds-topbar", inputs: { breakpoint: "breakpoint", label: "label", menuLabel: "menuLabel", open: ["open", "open", booleanAttribute] }, outputs: { pdsMenuToggle: "pdsMenuToggle" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2106
+ }
2107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTopbarComponent, decorators: [{
2108
+ type: Component,
2109
+ args: [{
2110
+ selector: 'pds-topbar',
2111
+ standalone: true,
2112
+ template: '<ng-content></ng-content>',
2113
+ changeDetection: ChangeDetectionStrategy.OnPush,
2114
+ encapsulation: ViewEncapsulation.None,
2115
+ }]
2116
+ }], ctorParameters: () => [], propDecorators: { breakpoint: [{
2117
+ type: Input
2118
+ }], label: [{
2119
+ type: Input
2120
+ }], menuLabel: [{
2121
+ type: Input
2122
+ }], open: [{
2123
+ type: Input,
2124
+ args: [{ transform: booleanAttribute }]
2125
+ }], pdsMenuToggle: [{
2126
+ type: Output
2127
+ }] } });
2128
+ export const PDS_ELEMENT_COMPONENTS = [
2129
+ PdsAccordionComponent,
2130
+ PdsAccordionItemComponent,
2131
+ PdsAlertComponent,
2132
+ PdsBadgeComponent,
2133
+ PdsBreadcrumbComponent,
2134
+ PdsBreadcrumbItemComponent,
2135
+ PdsButtonComponent,
2136
+ PdsCardComponent,
2137
+ PdsCheckboxComponent,
2138
+ PdsDatepickerComponent,
2139
+ PdsDialogComponent,
2140
+ PdsDropdownComponent,
2141
+ PdsDropdownItemComponent,
2142
+ PdsExpandableComponent,
2143
+ PdsInputComponent,
2144
+ PdsLinkComponent,
2145
+ PdsListComponent,
2146
+ PdsListItemComponent,
2147
+ PdsLoaderComponent,
2148
+ PdsMediaObjectComponent,
2149
+ PdsPaginationComponent,
2150
+ PdsPanelComponent,
2151
+ PdsProgressStepComponent,
2152
+ PdsProgressStepsComponent,
2153
+ PdsRadioComponent,
2154
+ PdsRadioGroupComponent,
2155
+ PdsRangesliderComponent,
2156
+ PdsSelectComponent,
2157
+ PdsSheetComponent,
2158
+ PdsSidebarComponent,
2159
+ PdsSidebarGroupComponent,
2160
+ PdsSidebarItemComponent,
2161
+ PdsSkipLinkComponent,
2162
+ PdsSlabComponent,
2163
+ PdsStatusComponent,
2164
+ PdsTabComponent,
2165
+ PdsTabPanelComponent,
2166
+ PdsTableComponent,
2167
+ PdsTabsComponent,
2168
+ PdsTagComponent,
2169
+ PdsToastComponent,
2170
+ PdsToastRegionComponent,
2171
+ PdsToggleboxComponent,
2172
+ PdsTooltipComponent,
2173
+ PdsTopbarComponent,
2174
+ ];
2175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0RkFBNEY7QUFDNUYsaUVBQWlFO0FBRWpFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQztBQWdEdkIsT0FBTyxFQUNMLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixlQUFlLEVBQ2YsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsYUFBYSxFQUNiLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixlQUFlLEdBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRXpELG9EQUFvRDtBQVFwRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEs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cEIsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2Ysb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLG1CQUFtQjtJQUNuQixrQkFBa0I7Q0FDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQVVUTy1HRU5FUkFURUQgYnkgQHBheWV4LWRzL3dyYXBwZXItZ2VuIGZyb20gdGhlIEBwYXlleC1kcy9jb3JlIEN1c3RvbSBFbGVtZW50cyBNYW5pZmVzdC5cbi8vIERvIG5vdCBlZGl0IGJ5IGhhbmQuIFJlZ2VuZXJhdGUgd2l0aCBgcG5wbSBnZW5lcmF0ZTp3cmFwcGVyc2AuXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIG51bWJlckF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIFBkc0FjY29yZGlvbiBhcyBQZHNBY2NvcmRpb25FbGVtZW50LFxuICBQZHNBY2NvcmRpb25JdGVtIGFzIFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50LFxuICBQZHNBbGVydCBhcyBQZHNBbGVydEVsZW1lbnQsXG4gIFBkc0JhZGdlIGFzIFBkc0JhZGdlRWxlbWVudCxcbiAgUGRzQnJlYWRjcnVtYiBhcyBQZHNCcmVhZGNydW1iRWxlbWVudCxcbiAgUGRzQnJlYWRjcnVtYkl0ZW0gYXMgUGRzQnJlYWRjcnVtYkl0ZW1FbGVtZW50LFxuICBQZHNCdXR0b24gYXMgUGRzQnV0dG9uRWxlbWVudCxcbiAgUGRzQ2FyZCBhcyBQZHNDYXJkRWxlbWVudCxcbiAgUGRzQ2hlY2tib3ggYXMgUGRzQ2hlY2tib3hFbGVtZW50LFxuICBQZHNEYXRlcGlja2VyIGFzIFBkc0RhdGVwaWNrZXJFbGVtZW50LFxuICBQZHNEaWFsb2cgYXMgUGRzRGlhbG9nRWxlbWVudCxcbiAgUGRzRHJvcGRvd24gYXMgUGRzRHJvcGRvd25FbGVtZW50LFxuICBQZHNEcm9wZG93bkl0ZW0gYXMgUGRzRHJvcGRvd25JdGVtRWxlbWVudCxcbiAgUGRzRXhwYW5kYWJsZSBhcyBQZHNFeHBhbmRhYmxlRWxlbWVudCxcbiAgUGRzSW5wdXQgYXMgUGRzSW5wdXRFbGVtZW50LFxuICBQZHNMaW5rIGFzIFBkc0xpbmtFbGVtZW50LFxuICBQZHNMaXN0IGFzIFBkc0xpc3RFbGVtZW50LFxuICBQZHNMaXN0SXRlbSBhcyBQZHNMaXN0SXRlbUVsZW1lbnQsXG4gIFBkc0xvYWRlciBhcyBQZHNMb2FkZXJFbGVtZW50LFxuICBQZHNNZWRpYU9iamVjdCBhcyBQZHNNZWRpYU9iamVjdEVsZW1lbnQsXG4gIFBkc1BhZ2luYXRpb24gYXMgUGRzUGFnaW5hdGlvbkVsZW1lbnQsXG4gIFBkc1BhbmVsIGFzIFBkc1BhbmVsRWxlbWVudCxcbiAgUGRzUHJvZ3Jlc3NTdGVwIGFzIFBkc1Byb2dyZXNzU3RlcEVsZW1lbnQsXG4gIFBkc1Byb2dyZXNzU3RlcHMgYXMgUGRzUHJvZ3Jlc3NTdGVwc0VsZW1lbnQsXG4gIFBkc1JhZGlvIGFzIFBkc1JhZGlvRWxlbWVudCxcbiAgUGRzUmFkaW9Hcm91cCBhcyBQZHNSYWRpb0dyb3VwRWxlbWVudCxcbiAgUGRzUmFuZ2VzbGlkZXIgYXMgUGRzUmFuZ2VzbGlkZXJFbGVtZW50LFxuICBQZHNTZWxlY3QgYXMgUGRzU2VsZWN0RWxlbWVudCxcbiAgUGRzU2hlZXQgYXMgUGRzU2hlZXRFbGVtZW50LFxuICBQZHNTaWRlYmFyIGFzIFBkc1NpZGViYXJFbGVtZW50LFxuICBQZHNTaWRlYmFyR3JvdXAgYXMgUGRzU2lkZWJhckdyb3VwRWxlbWVudCxcbiAgUGRzU2lkZWJhckl0ZW0gYXMgUGRzU2lkZWJhckl0ZW1FbGVtZW50LFxuICBQZHNTa2lwTGluayBhcyBQZHNTa2lwTGlua0VsZW1lbnQsXG4gIFBkc1NsYWIgYXMgUGRzU2xhYkVsZW1lbnQsXG4gIFBkc1N0YXR1cyBhcyBQZHNTdGF0dXNFbGVtZW50LFxuICBQZHNUYWIgYXMgUGRzVGFiRWxlbWVudCxcbiAgUGRzVGFiUGFuZWwgYXMgUGRzVGFiUGFuZWxFbGVtZW50LFxuICBQZHNUYWJsZSBhcyBQZHNUYWJsZUVsZW1lbnQsXG4gIFBkc1RhYnMgYXMgUGRzVGFic0VsZW1lbnQsXG4gIFBkc1RhZyBhcyBQZHNUYWdFbGVtZW50LFxuICBQZHNUb2FzdCBhcyBQZHNUb2FzdEVsZW1lbnQsXG4gIFBkc1RvYXN0UmVnaW9uIGFzIFBkc1RvYXN0UmVnaW9uRWxlbWVudCxcbiAgUGRzVG9nZ2xlYm94IGFzIFBkc1RvZ2dsZWJveEVsZW1lbnQsXG4gIFBkc1Rvb2x0aXAgYXMgUGRzVG9vbHRpcEVsZW1lbnQsXG4gIFBkc1RvcGJhciBhcyBQZHNUb3BiYXJFbGVtZW50LFxufSBmcm9tICdAcGF5ZXgtZHMvY29yZSc7XG5pbXBvcnQge1xuICBkZWZpbmVBbGwsXG4gIGRlZmluZVBkc0FjY29yZGlvbixcbiAgZGVmaW5lUGRzQWNjb3JkaW9uSXRlbSxcbiAgZGVmaW5lUGRzQWxlcnQsXG4gIGRlZmluZVBkc0JhZGdlLFxuICBkZWZpbmVQZHNCcmVhZGNydW1iLFxuICBkZWZpbmVQZHNCcmVhZGNydW1iSXRlbSxcbiAgZGVmaW5lUGRzQnV0dG9uLFxuICBkZWZpbmVQZHNDYXJkLFxuICBkZWZpbmVQZHNDaGVja2JveCxcbiAgZGVmaW5lUGRzRGF0ZXBpY2tlcixcbiAgZGVmaW5lUGRzRGlhbG9nLFxuICBkZWZpbmVQZHNEcm9wZG93bixcbiAgZGVmaW5lUGRzRHJvcGRvd25JdGVtLFxuICBkZWZpbmVQZHNFeHBhbmRhYmxlLFxuICBkZWZpbmVQZHNJbnB1dCxcbiAgZGVmaW5lUGRzTGluayxcbiAgZGVmaW5lUGRzTGlzdCxcbiAgZGVmaW5lUGRzTG9hZGVyLFxuICBkZWZpbmVQZHNNZWRpYU9iamVjdCxcbiAgZGVmaW5lUGRzUGFnaW5hdGlvbixcbiAgZGVmaW5lUGRzUGFuZWwsXG4gIGRlZmluZVBkc1Byb2dyZXNzU3RlcCxcbiAgZGVmaW5lUGRzUHJvZ3Jlc3NTdGVwcyxcbiAgZGVmaW5lUGRzUmFkaW8sXG4gIGRlZmluZVBkc1JhZGlvR3JvdXAsXG4gIGRlZmluZVBkc1Jhbmdlc2xpZGVyLFxuICBkZWZpbmVQZHNTZWxlY3QsXG4gIGRlZmluZVBkc1NoZWV0LFxuICBkZWZpbmVQZHNTaWRlYmFyLFxuICBkZWZpbmVQZHNTaWRlYmFyR3JvdXAsXG4gIGRlZmluZVBkc1NpZGViYXJJdGVtLFxuICBkZWZpbmVQZHNTa2lwTGluayxcbiAgZGVmaW5lUGRzU2xhYixcbiAgZGVmaW5lUGRzU3RhdHVzLFxuICBkZWZpbmVQZHNUYWIsXG4gIGRlZmluZVBkc1RhYlBhbmVsLFxuICBkZWZpbmVQZHNUYWJsZSxcbiAgZGVmaW5lUGRzVGFicyxcbiAgZGVmaW5lUGRzVGFnLFxuICBkZWZpbmVQZHNUb2FzdCxcbiAgZGVmaW5lUGRzVG9nZ2xlYm94LFxuICBkZWZpbmVQZHNUb29sdGlwLFxuICBkZWZpbmVQZHNUb3BiYXIsXG59IGZyb20gJ0BwYXlleC1kcy9jb3JlJztcbmltcG9ydCB7IFBkc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9saWIvY29tcG9uZW50LWJhc2UnO1xuXG4vKiogQWNjb3JkaW9uIGdyb3VwcyBwZHMtYWNjb3JkaW9uLWl0ZW0gc2VjdGlvbnMuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtYWNjb3JkaW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc0FjY29yZGlvbkNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzQWNjb3JkaW9uRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IG11bHRpcGxlKHZhbHVlOiBQZHNBY2NvcmRpb25FbGVtZW50WydtdWx0aXBsZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbXVsdGlwbGUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEJ1YmJsZXMgZnJvbSB0aGUgaXRlbSB0aGUgdXNlciB0b2dnbGVkLiBEZXRhaWw6IGB7IG9wZW4gfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgb3BlbjogdW5rbm93biB9Pj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNBY2NvcmRpb24pO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXRvZ2dsZScsIHRoaXMucGRzVG9nZ2xlKTtcbiAgfVxufVxuXG4vKiogQWNjb3JkaW9uIGl0ZW0gd2l0aCBhIGhlYWRpbmcgYnV0dG9uIGFuZCBhIGNvbnRlbnQgcmVnaW9uLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLWFjY29yZGlvbi1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc0FjY29yZGlvbkl0ZW1Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlYWRpbmcodmFsdWU6IFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50WydoZWFkaW5nJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoZWFkaW5nJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCBoZWFkaW5nTGV2ZWwoXG4gICAgdmFsdWU6IFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50WydoZWFkaW5nTGV2ZWwnXSxcbiAgKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVhZGluZ0xldmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgb3Blbih2YWx1ZTogUGRzQWNjb3JkaW9uSXRlbUVsZW1lbnRbJ29wZW4nXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ29wZW4nLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gdGhlIHVzZXIgdG9nZ2xlcyB0aGUgaXRlbS4gRGV0YWlsOiBgeyBvcGVuIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IG9wZW46IFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50WydvcGVuJ10gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0FjY29yZGlvbkl0ZW0pO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXRvZ2dsZScsIHRoaXMucGRzVG9nZ2xlKTtcbiAgfVxufVxuXG4vKiogQWxlcnRzIGNvbW11bmljYXRlIGltcG9ydGFudCwgY29udGV4dHVhbCBtZXNzYWdlcy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1hbGVydCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNBbGVydENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzQWxlcnRFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzbWlzc2libGUodmFsdWU6IFBkc0FsZXJ0RWxlbWVudFsnZGlzbWlzc2libGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc21pc3NpYmxlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBoZWFkaW5nKHZhbHVlOiBQZHNBbGVydEVsZW1lbnRbJ2hlYWRpbmcnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hlYWRpbmcnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhcmlhbnQodmFsdWU6IFBkc0FsZXJ0RWxlbWVudFsndmFyaWFudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuICAvKiogQWNjZXNzaWJsZSBsYWJlbCBvZiB0aGUgY2xvc2UgYnV0dG9uLiBEZWZhdWx0IGBEaXNtaXNzYC4gKi9cbiAgQElucHV0KCdjbG9zZS1sYWJlbCcpIHNldCBjbG9zZUxhYmVsKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ2Nsb3NlLWxhYmVsJywgdmFsdWUpO1xuICB9XG4gIC8qKiBGaXJlZCB3aGVuIHRoZSBjbG9zZSBidXR0b24gaXMgdXNlZCAoY2FuY2VsYWJsZSkuIFRoZSBhbGVydCBoaWRlcyBpdHNlbGYgdW5sZXNzIGNhbmNlbGxlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0Rpc21pc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVua25vd24+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0FsZXJ0KTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1kaXNtaXNzJywgdGhpcy5wZHNEaXNtaXNzKTtcbiAgfVxufVxuXG4vKiogQmFkZ2VzIGhpZ2hsaWdodCBhIGNvdW50IG9yIHNob3J0IHN0YXR1cyBsYWJlbC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1iYWRnZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNCYWRnZUNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzQmFkZ2VFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBjb3VudCh2YWx1ZTogUGRzQmFkZ2VFbGVtZW50Wydjb3VudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY291bnQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkb3QodmFsdWU6IFBkc0JhZGdlRWxlbWVudFsnZG90J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkb3QnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc2V0IG1heCh2YWx1ZTogUGRzQmFkZ2VFbGVtZW50WydtYXgnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ21heCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdmFyaWFudCh2YWx1ZTogUGRzQmFkZ2VFbGVtZW50Wyd2YXJpYW50J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YXJpYW50JywgdmFsdWUpO1xuICB9XG4gIC8qKiBBY2Nlc3NpYmxlIG5hbWUgYW5ub3VuY2VkIGluc3RlYWQgb2YgdGhlIHZpc2libGUgdGV4dC4gKi9cbiAgQElucHV0KCdhcmlhLWxhYmVsJykgc2V0IGFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzQmFkZ2UpO1xuICB9XG59XG5cbi8qKiBTaG93cyB0aGUgdXNlcidzIGxvY2F0aW9uIGluIGEgaGllcmFyY2h5LiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLWJyZWFkY3J1bWInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzQnJlYWRjcnVtYkNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzQnJlYWRjcnVtYkVsZW1lbnQ+IHtcbiAgQElucHV0KCkgc2V0IGV4cGFuZExhYmVsKHZhbHVlOiBQZHNCcmVhZGNydW1iRWxlbWVudFsnZXhwYW5kTGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2V4cGFuZExhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzQnJlYWRjcnVtYkVsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgbWF4SXRlbXModmFsdWU6IFBkc0JyZWFkY3J1bWJFbGVtZW50WydtYXhJdGVtcyddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbWF4SXRlbXMnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gdGhlIGNvbGxhcHNlZCBpdGVtcyBhcmUgcmV2ZWFsZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNFeHBhbmQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVua25vd24+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0JyZWFkY3J1bWIpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWV4cGFuZCcsIHRoaXMucGRzRXhwYW5kKTtcbiAgfVxufVxuXG4vKiogQW4gaXRlbSBpbnNpZGUgYHBkcy1icmVhZGNydW1iYC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1icmVhZGNydW1iLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0JyZWFkY3J1bWJJdGVtRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGN1cnJlbnQodmFsdWU6IFBkc0JyZWFkY3J1bWJJdGVtRWxlbWVudFsnY3VycmVudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY3VycmVudCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaHJlZih2YWx1ZTogUGRzQnJlYWRjcnVtYkl0ZW1FbGVtZW50WydocmVmJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdocmVmJywgdmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzQnJlYWRjcnVtYkl0ZW0pO1xuICB9XG59XG5cbi8qKiBCdXR0b25zIHRyaWdnZXIgYWN0aW9ucyBvciBuYXZpZ2F0aW9uLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0J1dHRvbkVsZW1lbnQ+IHtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkaXNhYmxlZCh2YWx1ZTogUGRzQnV0dG9uRWxlbWVudFsnZGlzYWJsZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc2FibGVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZnVsbFdpZHRoKHZhbHVlOiBQZHNCdXR0b25FbGVtZW50WydmdWxsV2lkdGgnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Z1bGxXaWR0aCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaHJlZih2YWx1ZTogUGRzQnV0dG9uRWxlbWVudFsnaHJlZiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaHJlZicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGxvYWRpbmcodmFsdWU6IFBkc0J1dHRvbkVsZW1lbnRbJ2xvYWRpbmcnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xvYWRpbmcnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHNpemUodmFsdWU6IFBkc0J1dHRvbkVsZW1lbnRbJ3NpemUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3NpemUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHR5cGUodmFsdWU6IFBkc0J1dHRvbkVsZW1lbnRbJ3R5cGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3R5cGUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhcmlhbnQodmFsdWU6IFBkc0J1dHRvbkVsZW1lbnRbJ3ZhcmlhbnQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3ZhcmlhbnQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIExpbmsgdGFyZ2V0IHdoZW4gYGhyZWZgIGlzIHNldC4gKi9cbiAgQElucHV0KCkgc2V0IHRhcmdldCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCd0YXJnZXQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gYWN0aXZhdGVkIChub3QgZmlyZWQgd2hpbGUgZGlzYWJsZWQvbG9hZGluZykuIERldGFpbDogYHsgb3JpZ2luYWxFdmVudCB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IG9yaWdpbmFsRXZlbnQ6IHVua25vd24gfT4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzQnV0dG9uKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1jbGljaycsIHRoaXMucGRzQ2xpY2spO1xuICB9XG59XG5cbi8qKiBDYXJkcyBncm91cCByZWxhdGVkIGNvbnRlbnQgYW5kIGFjdGlvbnMuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNDYXJkQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNDYXJkRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGNsaWNrYWJsZSh2YWx1ZTogUGRzQ2FyZEVsZW1lbnRbJ2NsaWNrYWJsZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY2xpY2thYmxlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBoZWFkaW5nKHZhbHVlOiBQZHNDYXJkRWxlbWVudFsnaGVhZGluZyddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVhZGluZycsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgaGVhZGluZ0xldmVsKHZhbHVlOiBQZHNDYXJkRWxlbWVudFsnaGVhZGluZ0xldmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoZWFkaW5nTGV2ZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhyZWYodmFsdWU6IFBkc0NhcmRFbGVtZW50WydocmVmJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdocmVmJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2YXJpYW50KHZhbHVlOiBQZHNDYXJkRWxlbWVudFsndmFyaWFudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuICAvKiogQWNjZXNzaWJsZSBsaW5rIG5hbWUgd2hlbiBgaHJlZmAgaXMgc2V0IHdpdGhvdXQgYGhlYWRpbmdgLiAqL1xuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIExpbmsgdGFyZ2V0IHdoZW4gYGhyZWZgIGlzIHNldC4gKi9cbiAgQElucHV0KCkgc2V0IHRhcmdldCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCd0YXJnZXQnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNDYXJkKTtcbiAgfVxufVxuXG4vKiogQ2hlY2tib3ggZm9yIGJvb2xlYW4gb3IgbXVsdGktc2VsZWN0IGNob2ljZXMuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtY2hlY2tib3gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0NoZWNrYm94RWxlbWVudD4ge1xuICAvKiogQ3VycmVudCBjaGVja2VkIHN0YXRlICh0aGUgYXR0cmlidXRlIGlzIHRoZSBpbml0aWFsIHN0YXRlKS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBjaGVja2VkKHZhbHVlOiBQZHNDaGVja2JveEVsZW1lbnRbJ2NoZWNrZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2NoZWNrZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkaXNhYmxlZCh2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGVycm9yVGV4dCh2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50WydlcnJvclRleHQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Vycm9yVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaGVscGVyVGV4dCh2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50WydoZWxwZXJUZXh0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoZWxwZXJUZXh0JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgaW5kZXRlcm1pbmF0ZShcbiAgICB2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50WydpbmRldGVybWluYXRlJ10sXG4gICkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2luZGV0ZXJtaW5hdGUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGxhYmVsKHZhbHVlOiBQZHNDaGVja2JveEVsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbmFtZSh2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50WyduYW1lJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCduYW1lJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgcmVxdWlyZWQodmFsdWU6IFBkc0NoZWNrYm94RWxlbWVudFsncmVxdWlyZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3JlcXVpcmVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50Wyd2YWx1ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFsdWUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gdG9nZ2xlZCBieSB0aGUgdXNlci4gRGV0YWlsOiBgeyBjaGVja2VkLCB2YWx1ZSB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyBjaGVja2VkOiBQZHNDaGVja2JveEVsZW1lbnRbJ2NoZWNrZWQnXTsgdmFsdWU6IFBkc0NoZWNrYm94RWxlbWVudFsndmFsdWUnXSB9PlxuICA+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzQ2hlY2tib3gpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNoYW5nZScsIHRoaXMucGRzQ2hhbmdlKTtcbiAgfVxufVxuXG4vKiogUGljayBhIGRhdGUgYnkgdHlwaW5nIG9yIGZyb20gYSBjYWxlbmRhciBwb3B1cC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1kYXRlcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc0RhdGVwaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0RhdGVwaWNrZXJFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGRpc2FibGVkRGF0ZXModmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50WydkaXNhYmxlZERhdGVzJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkaXNhYmxlZERhdGVzJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBlcnJvclRleHQodmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50WydlcnJvclRleHQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Vycm9yVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgZmlyc3REYXlPZldlZWsoXG4gICAgdmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50WydmaXJzdERheU9mV2VlayddLFxuICApIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdmaXJzdERheU9mV2VlaycsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaGVscGVyVGV4dCh2YWx1ZTogUGRzRGF0ZXBpY2tlckVsZW1lbnRbJ2hlbHBlclRleHQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hlbHBlclRleHQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGxhYmVsKHZhbHVlOiBQZHNEYXRlcGlja2VyRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBsb2NhbGUodmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50Wydsb2NhbGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xvY2FsZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbWF4KHZhbHVlOiBQZHNEYXRlcGlja2VyRWxlbWVudFsnbWF4J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdtYXgnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IG1pbih2YWx1ZTogUGRzRGF0ZXBpY2tlckVsZW1lbnRbJ21pbiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbWluJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBuYW1lKHZhbHVlOiBQZHNEYXRlcGlja2VyRWxlbWVudFsnbmFtZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbmFtZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50WydwbGFjZWhvbGRlciddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncGxhY2Vob2xkZXInLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCByZWFkb25seSh2YWx1ZTogUGRzRGF0ZXBpY2tlckVsZW1lbnRbJ3JlYWRvbmx5J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZWFkb25seScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlcXVpcmVkKHZhbHVlOiBQZHNEYXRlcGlja2VyRWxlbWVudFsncmVxdWlyZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3JlcXVpcmVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogUGRzRGF0ZXBpY2tlckVsZW1lbnRbJ3ZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy4gRGV0YWlsOiBgeyB2YWx1ZSB9YCAoSVNPIHN0cmluZyBvciBlbXB0eSkuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEN1c3RvbUV2ZW50PHsgdmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50Wyd2YWx1ZSddIH0+XG4gID4oKTtcbiAgLyoqIEZpcmVkIHdoZW4gdGhlIGNhbGVuZGFyIG9wZW5zLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzT3BlbiA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5rbm93bj4+KCk7XG4gIC8qKiBGaXJlZCB3aGVuIHRoZSBjYWxlbmRhciBjbG9zZXMuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5rbm93bj4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzRGF0ZXBpY2tlcik7XG4gICAgdGhpcy5wZHNGb3J3YXJkKCdwZHMtY2hhbmdlJywgdGhpcy5wZHNDaGFuZ2UpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLW9wZW4nLCB0aGlzLnBkc09wZW4pO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNsb3NlJywgdGhpcy5wZHNDbG9zZSk7XG4gIH1cbn1cblxuLyoqIERpYWxvZ3MgaW50ZXJydXB0IHRoZSB1c2VyIHdpdGggZm9jdXNlZCwgbW9kYWwgY29udGVudC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1kaWFsb2cnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNEaWFsb2dFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzbWlzc2libGUodmFsdWU6IFBkc0RpYWxvZ0VsZW1lbnRbJ2Rpc21pc3NpYmxlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkaXNtaXNzaWJsZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaGVhZGluZyh2YWx1ZTogUGRzRGlhbG9nRWxlbWVudFsnaGVhZGluZyddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVhZGluZycsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IG9wZW4odmFsdWU6IFBkc0RpYWxvZ0VsZW1lbnRbJ29wZW4nXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ29wZW4nLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIFZhbHVlIHJlcG9ydGVkIGJ5IGBwZHMtY2xvc2VgLiAqL1xuICBASW5wdXQoKSBzZXQgcmV0dXJuVmFsdWUodmFsdWU6IFBkc0RpYWxvZ0VsZW1lbnRbJ3JldHVyblZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZXR1cm5WYWx1ZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgc2l6ZSh2YWx1ZTogUGRzRGlhbG9nRWxlbWVudFsnc2l6ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnc2l6ZScsIHZhbHVlKTtcbiAgfVxuICAvKiogQWNjZXNzaWJsZSBsYWJlbCBvZiB0aGUgY2xvc2UgYnV0dG9uLiBEZWZhdWx0IGBDbG9zZWAuICovXG4gIEBJbnB1dCgnY2xvc2UtbGFiZWwnKSBzZXQgY2xvc2VMYWJlbCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdjbG9zZS1sYWJlbCcsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgYWZ0ZXIgdGhlIGRpYWxvZyBvcGVuZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNPcGVuID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmtub3duPj4oKTtcbiAgLyoqIEZpcmVkIGFmdGVyIHRoZSBkaWFsb2cgY2xvc2VkLiBEZXRhaWw6IGB7IHJldHVyblZhbHVlIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEN1c3RvbUV2ZW50PHsgcmV0dXJuVmFsdWU6IFBkc0RpYWxvZ0VsZW1lbnRbJ3JldHVyblZhbHVlJ10gfT5cbiAgPigpO1xuICAvKiogQ2FuY2VsYWJsZTsgZmlyZWQgd2hlbiBFc2NhcGUsIGJhY2tkcm9wIG9yIGNsb3NlIGJ1dHRvbiBhc2tzIHRvIGNsb3NlLiBEZXRhaWw6IGB7IHJlYXNvbiB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc1JlcXVlc3RDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyByZWFzb246IHVua25vd24gfT4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzRGlhbG9nKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1vcGVuJywgdGhpcy5wZHNPcGVuKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1jbG9zZScsIHRoaXMucGRzQ2xvc2UpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXJlcXVlc3QtY2xvc2UnLCB0aGlzLnBkc1JlcXVlc3RDbG9zZSk7XG4gIH1cbn1cblxuLyoqIERyb3Bkb3duIG1lbnUgb3BlbmVkIGZyb20gYSBidXR0b24uICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtZHJvcGRvd24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0Ryb3Bkb3duRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGRpc2FibGVkKHZhbHVlOiBQZHNEcm9wZG93bkVsZW1lbnRbJ2Rpc2FibGVkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc0Ryb3Bkb3duRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgb3Blbih2YWx1ZTogUGRzRHJvcGRvd25FbGVtZW50WydvcGVuJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdvcGVuJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBwbGFjZW1lbnQodmFsdWU6IFBkc0Ryb3Bkb3duRWxlbWVudFsncGxhY2VtZW50J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdwbGFjZW1lbnQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gYW4gaXRlbSBpcyBjaG9zZW4uIERldGFpbDogYHsgdmFsdWUgfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHVua25vd24gfT4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzRHJvcGRvd24pO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXNlbGVjdCcsIHRoaXMucGRzU2VsZWN0KTtcbiAgfVxufVxuXG4vKiogTWVudSBpdGVtLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLWRyb3Bkb3duLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzRHJvcGRvd25JdGVtQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNEcm9wZG93bkl0ZW1FbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc0Ryb3Bkb3duSXRlbUVsZW1lbnRbJ2Rpc2FibGVkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaHJlZih2YWx1ZTogUGRzRHJvcGRvd25JdGVtRWxlbWVudFsnaHJlZiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaHJlZicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IFBkc0Ryb3Bkb3duSXRlbUVsZW1lbnRbJ3ZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0Ryb3Bkb3duSXRlbSk7XG4gIH1cbn1cblxuLyoqIEV4cGFuZGFibGUgcmV2ZWFscyBvciBoaWRlcyBjb250ZW50LiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLWV4cGFuZGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzRXhwYW5kYWJsZUNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzRXhwYW5kYWJsZUVsZW1lbnQ+IHtcbiAgQElucHV0KCkgc2V0IGxhYmVsKHZhbHVlOiBQZHNFeHBhbmRhYmxlRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgb3Blbih2YWx1ZTogUGRzRXhwYW5kYWJsZUVsZW1lbnRbJ29wZW4nXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ29wZW4nLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gdGhlIHVzZXIgdG9nZ2xlcy4gRGV0YWlsOiBgeyBvcGVuIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IG9wZW46IFBkc0V4cGFuZGFibGVFbGVtZW50WydvcGVuJ10gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0V4cGFuZGFibGUpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXRvZ2dsZScsIHRoaXMucGRzVG9nZ2xlKTtcbiAgfVxufVxuXG4vKiogU2luZ2xlLWxpbmUgdGV4dCBmaWVsZC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNJbnB1dENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzSW5wdXRFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc0lucHV0RWxlbWVudFsnZGlzYWJsZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc2FibGVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBlcnJvclRleHQodmFsdWU6IFBkc0lucHV0RWxlbWVudFsnZXJyb3JUZXh0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdlcnJvclRleHQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlbHBlclRleHQodmFsdWU6IFBkc0lucHV0RWxlbWVudFsnaGVscGVyVGV4dCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVscGVyVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc0lucHV0RWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBuYW1lKHZhbHVlOiBQZHNJbnB1dEVsZW1lbnRbJ25hbWUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ25hbWUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBQZHNJbnB1dEVsZW1lbnRbJ3BsYWNlaG9sZGVyJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdwbGFjZWhvbGRlcicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlYWRPbmx5KHZhbHVlOiBQZHNJbnB1dEVsZW1lbnRbJ3JlYWRPbmx5J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZWFkT25seScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlcXVpcmVkKHZhbHVlOiBQZHNJbnB1dEVsZW1lbnRbJ3JlcXVpcmVkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZXF1aXJlZCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdHlwZSh2YWx1ZTogUGRzSW5wdXRFbGVtZW50Wyd0eXBlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd0eXBlJywgdmFsdWUpO1xuICB9XG4gIC8qKiBDdXJyZW50IHZhbHVlLiAqL1xuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IFBkc0lucHV0RWxlbWVudFsndmFsdWUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG4gIC8qKiBOYXRpdmUgYXV0b2NvbXBsZXRlIGhpbnQuICovXG4gIEBJbnB1dCgpIHNldCBhdXRvY29tcGxldGUodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgdmFsdWUpO1xuICB9XG4gIC8qKiBNYXhpbXVtIChudW1iZXIgdHlwZSkuICovXG4gIEBJbnB1dCgpIHNldCBtYXgodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnbWF4JywgdmFsdWUpO1xuICB9XG4gIC8qKiBNYXhpbXVtIGxlbmd0aC4gKi9cbiAgQElucHV0KCkgc2V0IG1heGxlbmd0aCh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdtYXhsZW5ndGgnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIE1pbmltdW0gKG51bWJlciB0eXBlKS4gKi9cbiAgQElucHV0KCkgc2V0IG1pbih2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdtaW4nLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIE1pbmltdW0gbGVuZ3RoLiAqL1xuICBASW5wdXQoKSBzZXQgbWlubGVuZ3RoKHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ21pbmxlbmd0aCcsIHZhbHVlKTtcbiAgfVxuICAvKiogVmFsaWRhdGlvbiByZWd1bGFyIGV4cHJlc3Npb24uICovXG4gIEBJbnB1dCgpIHNldCBwYXR0ZXJuKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ3BhdHRlcm4nLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIE1ha2VzIHRoZSBmaWVsZCByZWFkLW9ubHkuICovXG4gIEBJbnB1dCgpIHNldCByZWFkb25seSh2YWx1ZTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgncmVhZG9ubHknLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIG9uIGV2ZXJ5IGVkaXQuIERldGFpbDogYHsgdmFsdWUgfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogUGRzSW5wdXRFbGVtZW50Wyd2YWx1ZSddIH0+XG4gID4oKTtcbiAgLyoqIEZpcmVkIHdoZW4gdGhlIHZhbHVlIGlzIGNvbW1pdHRlZC4gRGV0YWlsOiBgeyB2YWx1ZSB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogUGRzSW5wdXRFbGVtZW50Wyd2YWx1ZSddIH0+XG4gID4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNJbnB1dCk7XG4gICAgdGhpcy5wZHNGb3J3YXJkKCdwZHMtaW5wdXQnLCB0aGlzLnBkc0lucHV0KTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1jaGFuZ2UnLCB0aGlzLnBkc0NoYW5nZSk7XG4gIH1cbn1cblxuLyoqIExpbmtzIG5hdmlnYXRlIHRvIGFub3RoZXIgbG9jYXRpb24uICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtbGluaycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNMaW5rQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNMaW5rRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGV4dGVybmFsKHZhbHVlOiBQZHNMaW5rRWxlbWVudFsnZXh0ZXJuYWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2V4dGVybmFsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBocmVmKHZhbHVlOiBQZHNMaW5rRWxlbWVudFsnaHJlZiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaHJlZicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdGFyZ2V0KHZhbHVlOiBQZHNMaW5rRWxlbWVudFsndGFyZ2V0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd0YXJnZXQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhcmlhbnQodmFsdWU6IFBkc0xpbmtFbGVtZW50Wyd2YXJpYW50J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YXJpYW50JywgdmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzTGluayk7XG4gIH1cbn1cblxuLyoqIExpc3RzIHByZXNlbnQgcmVsYXRlZCBpdGVtcy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1saXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc0xpc3RDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0xpc3RFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCB2YXJpYW50KHZhbHVlOiBQZHNMaXN0RWxlbWVudFsndmFyaWFudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0xpc3QpO1xuICB9XG59XG5cbi8qKiBBIHNpbmdsZSBlbnRyeSBpbiBhIGxpc3QuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtbGlzdC1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc0xpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNMaXN0SXRlbUVsZW1lbnQ+IHtcbiAgQElucHV0KCdkYXRhLWluZGV4Jykgc2V0IGRhdGFJbmRleCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdkYXRhLWluZGV4JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgnZGF0YS12YXJpYW50Jykgc2V0IGRhdGFWYXJpYW50KHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ2RhdGEtdmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZUFsbCk7XG4gIH1cbn1cblxuLyoqIEluZGljYXRlcyB0aGF0IGNvbnRlbnQgaXMgbG9hZGluZy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1sb2FkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzTG9hZGVyQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNMb2FkZXJFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzTG9hZGVyRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgb3ZlcmxheSh2YWx1ZTogUGRzTG9hZGVyRWxlbWVudFsnb3ZlcmxheSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnb3ZlcmxheScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgc2l6ZSh2YWx1ZTogUGRzTG9hZGVyRWxlbWVudFsnc2l6ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnc2l6ZScsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0xvYWRlcik7XG4gIH1cbn1cblxuLyoqIE1lZGlhIG9iamVjdHMgcGFpciBhbiBpbWFnZSBvciBpY29uIHdpdGggdGV4dC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1tZWRpYS1vYmplY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzTWVkaWFPYmplY3RDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc01lZGlhT2JqZWN0RWxlbWVudD4ge1xuICBASW5wdXQoKSBzZXQgYWxpZ24odmFsdWU6IFBkc01lZGlhT2JqZWN0RWxlbWVudFsnYWxpZ24nXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2FsaWduJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgcmV2ZXJzZSh2YWx1ZTogUGRzTWVkaWFPYmplY3RFbGVtZW50WydyZXZlcnNlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZXZlcnNlJywgdmFsdWUpO1xuICB9XG4gIC8qKiBCcmVha3BvaW50IGluIHB4LCBvciBgbnVsbGAgd2hlbiB0aGUgY29udGFpbmVyIHF1ZXJ5IGlzIHVzZWQuICovXG4gIEBJbnB1dCgpIHNldCBzdGFja0JlbG93KHZhbHVlOiBQZHNNZWRpYU9iamVjdEVsZW1lbnRbJ3N0YWNrQmVsb3cnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3N0YWNrQmVsb3cnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNNZWRpYU9iamVjdCk7XG4gIH1cbn1cblxuLyoqIE5hdmlnYXRlIGJldHdlZW4gcGFnZXMgb2YgY29udGVudC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1wYWdpbmF0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1BhZ2luYXRpb25Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1BhZ2luYXRpb25FbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBocmVmVGVtcGxhdGUodmFsdWU6IFBkc1BhZ2luYXRpb25FbGVtZW50WydocmVmVGVtcGxhdGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hyZWZUZW1wbGF0ZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1BhZ2luYXRpb25FbGVtZW50WydsYWJlbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc2V0IHBhZ2UodmFsdWU6IFBkc1BhZ2luYXRpb25FbGVtZW50WydwYWdlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdwYWdlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCBzaWJsaW5nQ291bnQoXG4gICAgdmFsdWU6IFBkc1BhZ2luYXRpb25FbGVtZW50WydzaWJsaW5nQ291bnQnXSxcbiAgKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnc2libGluZ0NvdW50JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCB0b3RhbFBhZ2VzKHZhbHVlOiBQZHNQYWdpbmF0aW9uRWxlbWVudFsndG90YWxQYWdlcyddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndG90YWxQYWdlcycsIHZhbHVlKTtcbiAgfVxuICAvKiogQWNjZXNzaWJsZSBuYW1lIG9mIHRoZSBuZXh0IGNvbnRyb2wuIERlZmF1bHQgYE5leHQgcGFnZWAuICovXG4gIEBJbnB1dCgnbmV4dC1sYWJlbCcpIHNldCBuZXh0TGFiZWwodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnbmV4dC1sYWJlbCcsIHZhbHVlKTtcbiAgfVxuICAvKiogQWNjZXNzaWJsZSBuYW1lIG9mIHRoZSBwcmV2aW91cyBjb250cm9sLiBEZWZhdWx0IGBQcmV2aW91cyBwYWdlYC4gKi9cbiAgQElucHV0KCdwcmV2aW91cy1sYWJlbCcpIHNldCBwcmV2aW91c0xhYmVsKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ3ByZXZpb3VzLWxhYmVsJywgdmFsdWUpO1xuICB9XG4gIC8qKiBGaXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBwYWdlLiBEZXRhaWw6IGB7IHBhZ2UgfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEN1c3RvbUV2ZW50PHsgcGFnZTogUGRzUGFnaW5hdGlvbkVsZW1lbnRbJ3BhZ2UnXSB9PlxuICA+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzUGFnaW5hdGlvbik7XG4gICAgdGhpcy5wZHNGb3J3YXJkKCdwZHMtY2hhbmdlJywgdGhpcy5wZHNDaGFuZ2UpO1xuICB9XG59XG5cbi8qKiBQYW5lbHMgZ3JvdXAgcmVsYXRlZCBjb250ZW50IG9uIGEgdGludGVkIHN1cmZhY2UuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtcGFuZWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1BhbmVsRWxlbWVudD4ge1xuICBASW5wdXQoKSBzZXQgaGVhZGluZyh2YWx1ZTogUGRzUGFuZWxFbGVtZW50WydoZWFkaW5nJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoZWFkaW5nJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCBoZWFkaW5nTGV2ZWwodmFsdWU6IFBkc1BhbmVsRWxlbWVudFsnaGVhZGluZ0xldmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoZWFkaW5nTGV2ZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhcmlhbnQodmFsdWU6IFBkc1BhbmVsRWxlbWVudFsndmFyaWFudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1BhbmVsKTtcbiAgfVxufVxuXG4vKiogT25lIHN0ZXAgb2YgYSBtdWx0aS1zdGVwIHByb2Nlc3MuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtcHJvZ3Jlc3Mtc3RlcCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNQcm9ncmVzc1N0ZXBDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1Byb2dyZXNzU3RlcEVsZW1lbnQ+IHtcbiAgQElucHV0KCkgc2V0IHN0YXR1cyh2YWx1ZTogUGRzUHJvZ3Jlc3NTdGVwRWxlbWVudFsnc3RhdHVzJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdzdGF0dXMnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gYSBjb21wbGV0ZWQgc3RlcCBpcyBhY3RpdmF0ZWQgaW4gYSBjbGlja2FibGUgY29udGFpbmVyLiBEZXRhaWw6IGB7IGluZGV4IH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzU3RlcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGluZGV4OiB1bmtub3duIH0+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1Byb2dyZXNzU3RlcCk7XG4gICAgdGhpcy5wZHNGb3J3YXJkKCdwZHMtc3RlcC1jbGljaycsIHRoaXMucGRzU3RlcENsaWNrKTtcbiAgfVxufVxuXG4vKiogU2hvd3MgcHJvZ3Jlc3MgdGhyb3VnaCBhIHNlcXVlbmNlIG9mIHN0ZXBzLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXByb2dyZXNzLXN0ZXBzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1Byb2dyZXNzU3RlcHNDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1Byb2dyZXNzU3RlcHNFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgY2xpY2thYmxlKFxuICAgIHZhbHVlOiBQZHNQcm9ncmVzc1N0ZXBzRWxlbWVudFsnY2xpY2thYmxlJ10sXG4gICkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2NsaWNrYWJsZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgY3VycmVudCh2YWx1ZTogUGRzUHJvZ3Jlc3NTdGVwc0VsZW1lbnRbJ2N1cnJlbnQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2N1cnJlbnQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGxhYmVsKHZhbHVlOiBQZHNQcm9ncmVzc1N0ZXBzRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBvcmllbnRhdGlvbih2YWx1ZTogUGRzUHJvZ3Jlc3NTdGVwc0VsZW1lbnRbJ29yaWVudGF0aW9uJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdvcmllbnRhdGlvbicsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiBhIGNvbXBsZXRlZCBzdGVwIGlzIGFjdGl2YXRlZC4gRGV0YWlsOiBgeyBpbmRleCB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc1N0ZXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogdW5rbm93biB9Pj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNQcm9ncmVzc1N0ZXBzKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1zdGVwLWNsaWNrJywgdGhpcy5wZHNTdGVwQ2xpY2spO1xuICB9XG59XG5cbi8qKiBSYWRpbyBvcHRpb24sIHVzZWQgaW5zaWRlIGBwZHMtcmFkaW8tZ3JvdXBgLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXJhZGlvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1JhZGlvQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNSYWRpb0VsZW1lbnQ+IHtcbiAgLyoqIEN1cnJlbnQgc2VsZWN0aW9uIHN0YXRlIChtYW5hZ2VkIGJ5IHRoZSBncm91cCkuIFRoZSBgY2hlY2tlZGAgYXR0cmlidXRlIGlzIG9ubHkgdGhlIGluaXRpYWwgc3RhdGUuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgY2hlY2tlZCh2YWx1ZTogUGRzUmFkaW9FbGVtZW50WydjaGVja2VkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdjaGVja2VkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc1JhZGlvRWxlbWVudFsnZGlzYWJsZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc2FibGVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogUGRzUmFkaW9FbGVtZW50Wyd2YWx1ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFsdWUnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNSYWRpbyk7XG4gIH1cbn1cblxuLyoqIEdyb3VwIG9mIG11dHVhbGx5IGV4Y2x1c2l2ZSByYWRpbyBvcHRpb25zLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXJhZGlvLWdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1JhZGlvR3JvdXBDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1JhZGlvR3JvdXBFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc1JhZGlvR3JvdXBFbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGVycm9yVGV4dCh2YWx1ZTogUGRzUmFkaW9Hcm91cEVsZW1lbnRbJ2Vycm9yVGV4dCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZXJyb3JUZXh0JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBoZWxwZXJUZXh0KHZhbHVlOiBQZHNSYWRpb0dyb3VwRWxlbWVudFsnaGVscGVyVGV4dCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVscGVyVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1JhZGlvR3JvdXBFbGVtZW50WydsYWJlbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IG5hbWUodmFsdWU6IFBkc1JhZGlvR3JvdXBFbGVtZW50WyduYW1lJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCduYW1lJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBvcmllbnRhdGlvbih2YWx1ZTogUGRzUmFkaW9Hcm91cEVsZW1lbnRbJ29yaWVudGF0aW9uJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdvcmllbnRhdGlvbicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlcXVpcmVkKHZhbHVlOiBQZHNSYWRpb0dyb3VwRWxlbWVudFsncmVxdWlyZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3JlcXVpcmVkJywgdmFsdWUpO1xuICB9XG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgdmFsdWUgKCcnIHdoZW4gbm9uZSkuICovXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogUGRzUmFkaW9Hcm91cEVsZW1lbnRbJ3ZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMgYnkgdXNlciBpbnRlcmFjdGlvbi4gRGV0YWlsOiBgeyB2YWx1ZSB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogUGRzUmFkaW9Hcm91cEVsZW1lbnRbJ3ZhbHVlJ10gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1JhZGlvR3JvdXApO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNoYW5nZScsIHRoaXMucGRzQ2hhbmdlKTtcbiAgfVxufVxuXG4vKiogU2xpZGVyIGZvciBjaG9vc2luZyBhIG51bWJlciB3aXRoaW4gYSByYW5nZS4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1yYW5nZXNsaWRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNSYW5nZXNsaWRlckNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzUmFuZ2VzbGlkZXJFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc1Jhbmdlc2xpZGVyRWxlbWVudFsnZGlzYWJsZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc2FibGVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBlcnJvclRleHQodmFsdWU6IFBkc1Jhbmdlc2xpZGVyRWxlbWVudFsnZXJyb3JUZXh0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdlcnJvclRleHQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlbHBlclRleHQodmFsdWU6IFBkc1Jhbmdlc2xpZGVyRWxlbWVudFsnaGVscGVyVGV4dCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVscGVyVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1Jhbmdlc2xpZGVyRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBuYW1lKHZhbHVlOiBQZHNSYW5nZXNsaWRlckVsZW1lbnRbJ25hbWUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ25hbWUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCByZXF1aXJlZCh2YWx1ZTogUGRzUmFuZ2VzbGlkZXJFbGVtZW50WydyZXF1aXJlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncmVxdWlyZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBzaG93VmFsdWUodmFsdWU6IFBkc1Jhbmdlc2xpZGVyRWxlbWVudFsnc2hvd1ZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdzaG93VmFsdWUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEN1cnJlbnQgdmFsdWUuICovXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogUGRzUmFuZ2VzbGlkZXJFbGVtZW50Wyd2YWx1ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFsdWUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIE1heGltdW0uIERlZmF1bHQgMTAwLiAqL1xuICBASW5wdXQoKSBzZXQgbWF4KHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ21heCcsIHZhbHVlKTtcbiAgfVxuICAvKiogTWluaW11bS4gRGVmYXVsdCAwLiAqL1xuICBASW5wdXQoKSBzZXQgbWluKHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ21pbicsIHZhbHVlKTtcbiAgfVxuICAvKiogU3RlcC4gRGVmYXVsdCAxLiAqL1xuICBASW5wdXQoKSBzZXQgc3RlcCh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdzdGVwJywgdmFsdWUpO1xuICB9XG4gIC8qKiBGaXJlZCB3aGlsZSBkcmFnZ2luZy4gRGV0YWlsOiBgeyB2YWx1ZSB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0lucHV0ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IHZhbHVlOiBQZHNSYW5nZXNsaWRlckVsZW1lbnRbJ3ZhbHVlJ10gfT5cbiAgPigpO1xuICAvKiogRmlyZWQgd2hlbiB0aGUgdmFsdWUgaXMgY29tbWl0dGVkLiBEZXRhaWw6IGB7IHZhbHVlIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IHZhbHVlOiBQZHNSYW5nZXNsaWRlckVsZW1lbnRbJ3ZhbHVlJ10gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1Jhbmdlc2xpZGVyKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1pbnB1dCcsIHRoaXMucGRzSW5wdXQpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNoYW5nZScsIHRoaXMucGRzQ2hhbmdlKTtcbiAgfVxufVxuXG4vKiogRHJvcGRvd24gZm9yIGNob29zaW5nIG9uZSBvcHRpb24gZnJvbSBhIGxpc3QuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtc2VsZWN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1NlbGVjdENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzU2VsZWN0RWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGRpc2FibGVkKHZhbHVlOiBQZHNTZWxlY3RFbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGVycm9yVGV4dCh2YWx1ZTogUGRzU2VsZWN0RWxlbWVudFsnZXJyb3JUZXh0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdlcnJvclRleHQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlbHBlclRleHQodmFsdWU6IFBkc1NlbGVjdEVsZW1lbnRbJ2hlbHBlclRleHQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hlbHBlclRleHQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGxhYmVsKHZhbHVlOiBQZHNTZWxlY3RFbGVtZW50WydsYWJlbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IG5hbWUodmFsdWU6IFBkc1NlbGVjdEVsZW1lbnRbJ25hbWUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ25hbWUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBQZHNTZWxlY3RFbGVtZW50WydwbGFjZWhvbGRlciddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncGxhY2Vob2xkZXInLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCByZXF1aXJlZCh2YWx1ZTogUGRzU2VsZWN0RWxlbWVudFsncmVxdWlyZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3JlcXVpcmVkJywgdmFsdWUpO1xuICB9XG4gIC8qKiBDdXJyZW50IHZhbHVlLiAqL1xuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IFBkc1NlbGVjdEVsZW1lbnRbJ3ZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuIERldGFpbDogYHsgdmFsdWUgfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogUGRzU2VsZWN0RWxlbWVudFsndmFsdWUnXSB9PlxuICA+KCk7XG4gIC8qKiBGaXJlZCB3aGVuIHRoZSBzZWxlY3Rpb24gaXMgY29tbWl0dGVkLiBEZXRhaWw6IGB7IHZhbHVlIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IHZhbHVlOiBQZHNTZWxlY3RFbGVtZW50Wyd2YWx1ZSddIH0+XG4gID4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNTZWxlY3QpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWlucHV0JywgdGhpcy5wZHNJbnB1dCk7XG4gICAgdGhpcy5wZHNGb3J3YXJkKCdwZHMtY2hhbmdlJywgdGhpcy5wZHNDaGFuZ2UpO1xuICB9XG59XG5cbi8qKiBTaGVldHMgc2xpZGUgaW4gZnJvbSBhbiBlZGdlIG9mIHRoZSBzY3JlZW4gd2l0aCBzZWNvbmRhcnkgY29udGVudC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1zaGVldCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNTaGVldENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzU2hlZXRFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzbWlzc2libGUodmFsdWU6IFBkc1NoZWV0RWxlbWVudFsnZGlzbWlzc2libGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc21pc3NpYmxlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBoZWFkaW5nKHZhbHVlOiBQZHNTaGVldEVsZW1lbnRbJ2hlYWRpbmcnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hlYWRpbmcnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBvcGVuKHZhbHVlOiBQZHNTaGVldEVsZW1lbnRbJ29wZW4nXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ29wZW4nLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHBsYWNlbWVudCh2YWx1ZTogUGRzU2hlZXRFbGVtZW50WydwbGFjZW1lbnQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3BsYWNlbWVudCcsIHZhbHVlKTtcbiAgfVxuICAvKiogVmFsdWUgcmVwb3J0ZWQgYnkgYHBkcy1jbG9zZWAuICovXG4gIEBJbnB1dCgpIHNldCByZXR1cm5WYWx1ZSh2YWx1ZTogUGRzU2hlZXRFbGVtZW50WydyZXR1cm5WYWx1ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncmV0dXJuVmFsdWUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEFjY2Vzc2libGUgbGFiZWwgb2YgdGhlIGNsb3NlIGJ1dHRvbi4gRGVmYXVsdCBgQ2xvc2VgLiAqL1xuICBASW5wdXQoJ2Nsb3NlLWxhYmVsJykgc2V0IGNsb3NlTGFiZWwodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnY2xvc2UtbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIGFmdGVyIHRoZSBzaGVldCBvcGVuZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNPcGVuID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmtub3duPj4oKTtcbiAgLyoqIEZpcmVkIGFmdGVyIHRoZSBzaGVldCBjbG9zZWQuIERldGFpbDogYHsgcmV0dXJuVmFsdWUgfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyByZXR1cm5WYWx1ZTogUGRzU2hlZXRFbGVtZW50WydyZXR1cm5WYWx1ZSddIH0+XG4gID4oKTtcbiAgLyoqIENhbmNlbGFibGU7IGZpcmVkIHdoZW4gRXNjYXBlLCBiYWNrZHJvcCBvciBjbG9zZSBidXR0b24gYXNrcyB0byBjbG9zZS4gRGV0YWlsOiBgeyByZWFzb24gfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNSZXF1ZXN0Q2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgcmVhc29uOiB1bmtub3duIH0+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1NoZWV0KTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1vcGVuJywgdGhpcy5wZHNPcGVuKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1jbG9zZScsIHRoaXMucGRzQ2xvc2UpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXJlcXVlc3QtY2xvc2UnLCB0aGlzLnBkc1JlcXVlc3RDbG9zZSk7XG4gIH1cbn1cblxuLyoqIFZlcnRpY2FsIG5hdmlnYXRpb24gY29udGFpbmVyIGZvciBgcGRzLXNpZGViYXItaXRlbWAgYW5kIGBwZHMtc2lkZWJhci1ncm91cGAuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtc2lkZWJhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNTaWRlYmFyQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNTaWRlYmFyRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGNvbGxhcHNlZCh2YWx1ZTogUGRzU2lkZWJhckVsZW1lbnRbJ2NvbGxhcHNlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY29sbGFwc2VkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzU2lkZWJhckVsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1NpZGViYXIpO1xuICB9XG59XG5cbi8qKiBBIGNvbGxhcHNpYmxlIHNlY3Rpb24gb2YgYHBkcy1zaWRlYmFyLWl0ZW1gcy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1zaWRlYmFyLWdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1NpZGViYXJHcm91cENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzU2lkZWJhckdyb3VwRWxlbWVudD4ge1xuICAvKiogU2V0IGJ5IHRoZSBwYXJlbnQgc2lkZWJhcjogaWNvbi1vbmx5IG1vZGUgc2hvd3MgaXRlbXMgZGlyZWN0bHkgd2l0aG91dCBhIGhlYWRpbmcuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgY29sbGFwc2VkKFxuICAgIHZhbHVlOiBQZHNTaWRlYmFyR3JvdXBFbGVtZW50Wydjb2xsYXBzZWQnXSxcbiAgKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY29sbGFwc2VkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZXhwYW5kZWQodmFsdWU6IFBkc1NpZGViYXJHcm91cEVsZW1lbnRbJ2V4cGFuZGVkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdleHBhbmRlZCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1NpZGViYXJHcm91cEVsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiB0aGUgaGVhZGluZyBpcyB0b2dnbGVkLiBEZXRhaWw6IGB7IGV4cGFuZGVkIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBQZHNTaWRlYmFyR3JvdXBFbGVtZW50WydleHBhbmRlZCddIH0+XG4gID4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNTaWRlYmFyR3JvdXApO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXRvZ2dsZScsIHRoaXMucGRzVG9nZ2xlKTtcbiAgfVxufVxuXG4vKiogQW4gaXRlbSBpbnNpZGUgYHBkcy1zaWRlYmFyYC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1zaWRlYmFyLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzU2lkZWJhckl0ZW1Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1NpZGViYXJJdGVtRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGFjdGl2ZSh2YWx1ZTogUGRzU2lkZWJhckl0ZW1FbGVtZW50WydhY3RpdmUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2FjdGl2ZScsIHZhbHVlKTtcbiAgfVxuICAvKiogU2V0IGJ5IHRoZSBwYXJlbnQgc2lkZWJhci4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBjb2xsYXBzZWQodmFsdWU6IFBkc1NpZGViYXJJdGVtRWxlbWVudFsnY29sbGFwc2VkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdjb2xsYXBzZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkaXNhYmxlZCh2YWx1ZTogUGRzU2lkZWJhckl0ZW1FbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhyZWYodmFsdWU6IFBkc1NpZGViYXJJdGVtRWxlbWVudFsnaHJlZiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaHJlZicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1NpZGViYXJJdGVtRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIC8qKiBGaXJlZCB3aGVuIGEgYnV0dG9uLXR5cGUgaXRlbSBpcyBhY3RpdmF0ZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5rbm93bj4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzU2lkZWJhckl0ZW0pO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNsaWNrJywgdGhpcy5wZHNDbGljayk7XG4gIH1cbn1cblxuLyoqIExldHMga2V5Ym9hcmQgdXNlcnMgc2tpcCByZXBlYXRlZCBjb250ZW50LiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXNraXAtbGluaycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNTa2lwTGlua0NvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzU2tpcExpbmtFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBocmVmKHZhbHVlOiBQZHNTa2lwTGlua0VsZW1lbnRbJ2hyZWYnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hyZWYnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNTa2lwTGluayk7XG4gIH1cbn1cblxuLyoqIFNsYWJzIGRpdmlkZSBhIHBhZ2UgaW50byBmdWxsLXdpZHRoIHNlY3Rpb25zLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXNsYWInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzU2xhYkNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzU2xhYkVsZW1lbnQ+IHtcbiAgQElucHV0KCkgc2V0IHNpemUodmFsdWU6IFBkc1NsYWJFbGVtZW50WydzaXplJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdzaXplJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2YXJpYW50KHZhbHVlOiBQZHNTbGFiRWxlbWVudFsndmFyaWFudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1NsYWIpO1xuICB9XG59XG5cbi8qKiBTaG93cyBhIHN0YXR1cyBhcyBhIGNvbG91cmVkIGRvdCBwbHVzIGxhYmVsLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXN0YXR1cycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNTdGF0dXNDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1N0YXR1c0VsZW1lbnQ+IHtcbiAgQElucHV0KCkgc2V0IHN0YXR1cyh2YWx1ZTogUGRzU3RhdHVzRWxlbWVudFsnc3RhdHVzJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdzdGF0dXMnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNTdGF0dXMpO1xuICB9XG59XG5cbi8qKiBUYWIgYnV0dG9uIG9mIGEgdGFiIGxpc3QuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtdGFiJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1RhYkNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzVGFiRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGRpc2FibGVkKHZhbHVlOiBQZHNUYWJFbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHBhbmVsKHZhbHVlOiBQZHNUYWJFbGVtZW50WydwYW5lbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncGFuZWwnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIFRydWUgb25jZSB0aGUgdGFiIGlzIGNvbm5lY3RlZDsgbGV0cyB0aGUgcGFyZW50IGlnbm9yZSB0YWJzIHRoYXQgYXJlIG5vdCBpbml0aWFsaXNlZCB5ZXQuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgcmVhZHkodmFsdWU6IFBkc1RhYkVsZW1lbnRbJ3JlYWR5J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZWFkeScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHNlbGVjdGVkKHZhbHVlOiBQZHNUYWJFbGVtZW50WydzZWxlY3RlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnc2VsZWN0ZWQnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNUYWIpO1xuICB9XG59XG5cbi8qKiBQYW5lbCBzaG93biB3aGVuIGl0cyB0YWIgaXMgc2VsZWN0ZWQuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtdGFiLXBhbmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1RhYlBhbmVsQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNUYWJQYW5lbEVsZW1lbnQ+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzVGFiUGFuZWwpO1xuICB9XG59XG5cbi8qKiBTdHlsZWQsIHNjcm9sbGFibGUgYW5kIG9wdGlvbmFsbHkgc29ydGFibGUgZGF0YSB0YWJsZS4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNUYWJsZUNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzVGFibGVFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgYm9yZGVyZWQodmFsdWU6IFBkc1RhYmxlRWxlbWVudFsnYm9yZGVyZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2JvcmRlcmVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgY29tcGFjdCh2YWx1ZTogUGRzVGFibGVFbGVtZW50Wydjb21wYWN0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdjb21wYWN0JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzVGFibGVFbGVtZW50WydsYWJlbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBzdGlja3lIZWFkZXIodmFsdWU6IFBkc1RhYmxlRWxlbWVudFsnc3RpY2t5SGVhZGVyJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdzdGlja3lIZWFkZXInLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBzdHJpcGVkKHZhbHVlOiBQZHNUYWJsZUVsZW1lbnRbJ3N0cmlwZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3N0cmlwZWQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIENTUyBtYXgtaGVpZ2h0IG9mIHRoZSBzY3JvbGwgcmVnaW9uIChlLmcuIGAyMHJlbWApLiAqL1xuICBASW5wdXQoJ21heC1oZWlnaHQnKSBzZXQgbWF4SGVpZ2h0KHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ21heC1oZWlnaHQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIGFmdGVyIGEgY29sdW1uIGlzIHNvcnRlZC4gRGV0YWlsOiBgeyBjb2x1bW4sIGRpcmVjdGlvbiB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc1NvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEN1c3RvbUV2ZW50PHsgY29sdW1uOiB1bmtub3duOyBkaXJlY3Rpb246IHVua25vd24gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1RhYmxlKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1zb3J0JywgdGhpcy5wZHNTb3J0KTtcbiAgfVxufVxuXG4vKiogVGFicyBzd2l0Y2ggYmV0d2VlbiByZWxhdGVkIHBhbmVscy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10YWJzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1RhYnNDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1RhYnNFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzVGFic0VsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgb3JpZW50YXRpb24odmFsdWU6IFBkc1RhYnNFbGVtZW50WydvcmllbnRhdGlvbiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnb3JpZW50YXRpb24nLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhbHVlKHZhbHVlOiBQZHNUYWJzRWxlbWVudFsndmFsdWUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG4gIC8qKiBGaXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSB0YWIuIERldGFpbDogYHsgaW5kZXgsIHZhbHVlIH1gICh2YWx1ZSBpcyB0aGUgcGFuZWwgaWQpLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IGluZGV4OiB1bmtub3duOyB2YWx1ZTogUGRzVGFic0VsZW1lbnRbJ3ZhbHVlJ10gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1RhYnMpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNoYW5nZScsIHRoaXMucGRzQ2hhbmdlKTtcbiAgfVxufVxuXG4vKiogVGFncyBsYWJlbCBvciBjYXRlZ29yaXNlIGNvbnRlbnQuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtdGFnJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1RhZ0NvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzVGFnRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlbW92YWJsZSh2YWx1ZTogUGRzVGFnRWxlbWVudFsncmVtb3ZhYmxlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZW1vdmFibGUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHNpemUodmFsdWU6IFBkc1RhZ0VsZW1lbnRbJ3NpemUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3NpemUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhcmlhbnQodmFsdWU6IFBkc1RhZ0VsZW1lbnRbJ3ZhcmlhbnQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3ZhcmlhbnQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIChjYW5jZWxhYmxlKSB3aGVuIHRoZSByZW1vdmUgYnV0dG9uIGlzIGFjdGl2YXRlZC4gVGhlIHRhZyByZW1vdmVzIGl0c2VsZiB1bmxlc3MgcHJldmVudGVkLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzUmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmtub3duPj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNUYWcpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXJlbW92ZScsIHRoaXMucGRzUmVtb3ZlKTtcbiAgfVxufVxuXG4vKiogVG9hc3RzIHNob3cgc2hvcnQtbGl2ZWQsIG5vbi1ibG9ja2luZyBmZWVkYmFjay4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10b2FzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNUb2FzdENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzVG9hc3RFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzbWlzc2libGUodmFsdWU6IFBkc1RvYXN0RWxlbWVudFsnZGlzbWlzc2libGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc21pc3NpYmxlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCBkdXJhdGlvbih2YWx1ZTogUGRzVG9hc3RFbGVtZW50WydkdXJhdGlvbiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZHVyYXRpb24nLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlYWRpbmcodmFsdWU6IFBkc1RvYXN0RWxlbWVudFsnaGVhZGluZyddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVhZGluZycsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdmFyaWFudCh2YWx1ZTogUGRzVG9hc3RFbGVtZW50Wyd2YXJpYW50J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YXJpYW50JywgdmFsdWUpO1xuICB9XG4gIC8qKiBBY2Nlc3NpYmxlIGxhYmVsIG9mIHRoZSBjbG9zZSBidXR0b24uIERlZmF1bHQgYERpc21pc3NgLiAqL1xuICBASW5wdXQoJ2Nsb3NlLWxhYmVsJykgc2V0IGNsb3NlTGFiZWwodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnY2xvc2UtbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIGJlZm9yZSB0aGUgdG9hc3QgaXMgcmVtb3ZlZCAoY2FuY2VsYWJsZSkuIERldGFpbDogYHsgcmVhc29uOiAndGltZW91dCcgfCAnY2xvc2UtYnV0dG9uJyB8ICdwcm9ncmFtbWF0aWMnIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzRGlzbWlzcyA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1RvYXN0KTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1kaXNtaXNzJywgdGhpcy5wZHNEaXNtaXNzKTtcbiAgfVxufVxuXG4vKiogQ29udGFpbmVyIHRoYXQgc3RhY2tzIGFuZCBhbm5vdW5jZXMgYHBkcy10b2FzdGAgZWxlbWVudHMuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtdG9hc3QtcmVnaW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1RvYXN0UmVnaW9uQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNUb2FzdFJlZ2lvbkVsZW1lbnQ+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lQWxsKTtcbiAgfVxufVxuXG4vKiogU3dpdGNoIGZvciBpbW1lZGlhdGVseS1hcHBsaWVkIG9uL29mZiBzZXR0aW5ncy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10b2dnbGVib3gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzVG9nZ2xlYm94Q29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNUb2dnbGVib3hFbGVtZW50PiB7XG4gIC8qKiBDdXJyZW50IHN0YXRlICh0aGUgYXR0cmlidXRlIGlzIHRoZSBpbml0aWFsIHN0YXRlKS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBjaGVja2VkKHZhbHVlOiBQZHNUb2dnbGVib3hFbGVtZW50WydjaGVja2VkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdjaGVja2VkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc1RvZ2dsZWJveEVsZW1lbnRbJ2Rpc2FibGVkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgZXJyb3JUZXh0KHZhbHVlOiBQZHNUb2dnbGVib3hFbGVtZW50WydlcnJvclRleHQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Vycm9yVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaGVscGVyVGV4dCh2YWx1ZTogUGRzVG9nZ2xlYm94RWxlbWVudFsnaGVscGVyVGV4dCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVscGVyVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1RvZ2dsZWJveEVsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbmFtZSh2YWx1ZTogUGRzVG9nZ2xlYm94RWxlbWVudFsnbmFtZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbmFtZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlcXVpcmVkKHZhbHVlOiBQZHNUb2dnbGVib3hFbGVtZW50WydyZXF1aXJlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncmVxdWlyZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhbHVlKHZhbHVlOiBQZHNUb2dnbGVib3hFbGVtZW50Wyd2YWx1ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFsdWUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gdG9nZ2xlZCBieSB0aGUgdXNlci4gRGV0YWlsOiBgeyBjaGVja2VkLCB2YWx1ZSB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyBjaGVja2VkOiBQZHNUb2dnbGVib3hFbGVtZW50WydjaGVja2VkJ107IHZhbHVlOiBQZHNUb2dnbGVib3hFbGVtZW50Wyd2YWx1ZSddIH0+XG4gID4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNUb2dnbGVib3gpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNoYW5nZScsIHRoaXMucGRzQ2hhbmdlKTtcbiAgfVxufVxuXG4vKiogVG9vbHRpcHMgc2hvdyBzaG9ydCBzdXBwbGVtZW50YXJ5IHRleHQgZm9yIGEgY29udHJvbC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10b29sdGlwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1Rvb2x0aXBDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1Rvb2x0aXBFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBjb250ZW50KHZhbHVlOiBQZHNUb29sdGlwRWxlbWVudFsnY29udGVudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY29udGVudCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgZGVsYXkodmFsdWU6IFBkc1Rvb2x0aXBFbGVtZW50WydkZWxheSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGVsYXknLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhpZGUodmFsdWU6IFBkc1Rvb2x0aXBFbGVtZW50WydoaWRlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoaWRlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBwbGFjZW1lbnQodmFsdWU6IFBkc1Rvb2x0aXBFbGVtZW50WydwbGFjZW1lbnQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3BsYWNlbWVudCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1Rvb2x0aXApO1xuICB9XG59XG5cbi8qKiBSZXNwb25zaXZlIGFwcGxpY2F0aW9uIGhlYWRlci4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10b3BiYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzVG9wYmFyQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNUb3BiYXJFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBicmVha3BvaW50KHZhbHVlOiBQZHNUb3BiYXJFbGVtZW50WydicmVha3BvaW50J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdicmVha3BvaW50JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzVG9wYmFyRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBtZW51TGFiZWwodmFsdWU6IFBkc1RvcGJhckVsZW1lbnRbJ21lbnVMYWJlbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbWVudUxhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgb3Blbih2YWx1ZTogUGRzVG9wYmFyRWxlbWVudFsnb3BlbiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnb3BlbicsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWQgb3IgY2xvc2VkLiBEZXRhaWw6IGB7IG9wZW4gfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNNZW51VG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IG9wZW46IFBkc1RvcGJhckVsZW1lbnRbJ29wZW4nXSB9PlxuICA+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzVG9wYmFyKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1tZW51LXRvZ2dsZScsIHRoaXMucGRzTWVudVRvZ2dsZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFBEU19FTEVNRU5UX0NPTVBPTkVOVFMgPSBbXG4gIFBkc0FjY29yZGlvbkNvbXBvbmVudCxcbiAgUGRzQWNjb3JkaW9uSXRlbUNvbXBvbmVudCxcbiAgUGRzQWxlcnRDb21wb25lbnQsXG4gIFBkc0JhZGdlQ29tcG9uZW50LFxuICBQZHNCcmVhZGNydW1iQ29tcG9uZW50LFxuICBQZHNCcmVhZGNydW1iSXRlbUNvbXBvbmVudCxcbiAgUGRzQnV0dG9uQ29tcG9uZW50LFxuICBQZHNDYXJkQ29tcG9uZW50LFxuICBQZHNDaGVja2JveENvbXBvbmVudCxcbiAgUGRzRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgUGRzRGlhbG9nQ29tcG9uZW50LFxuICBQZHNEcm9wZG93bkNvbXBvbmVudCxcbiAgUGRzRHJvcGRvd25JdGVtQ29tcG9uZW50LFxuICBQZHNFeHBhbmRhYmxlQ29tcG9uZW50LFxuICBQZHNJbnB1dENvbXBvbmVudCxcbiAgUGRzTGlua0NvbXBvbmVudCxcbiAgUGRzTGlzdENvbXBvbmVudCxcbiAgUGRzTGlzdEl0ZW1Db21wb25lbnQsXG4gIFBkc0xvYWRlckNvbXBvbmVudCxcbiAgUGRzTWVkaWFPYmplY3RDb21wb25lbnQsXG4gIFBkc1BhZ2luYXRpb25Db21wb25lbnQsXG4gIFBkc1BhbmVsQ29tcG9uZW50LFxuICBQZHNQcm9ncmVzc1N0ZXBDb21wb25lbnQsXG4gIFBkc1Byb2dyZXNzU3RlcHNDb21wb25lbnQsXG4gIFBkc1JhZGlvQ29tcG9uZW50LFxuICBQZHNSYWRpb0dyb3VwQ29tcG9uZW50LFxuICBQZHNSYW5nZXNsaWRlckNvbXBvbmVudCxcbiAgUGRzU2VsZWN0Q29tcG9uZW50LFxuICBQZHNTaGVldENvbXBvbmVudCxcbiAgUGRzU2lkZWJhckNvbXBvbmVudCxcbiAgUGRzU2lkZWJhckdyb3VwQ29tcG9uZW50LFxuICBQZHNTaWRlYmFySXRlbUNvbXBvbmVudCxcbiAgUGRzU2tpcExpbmtDb21wb25lbnQsXG4gIFBkc1NsYWJDb21wb25lbnQsXG4gIFBkc1N0YXR1c0NvbXBvbmVudCxcbiAgUGRzVGFiQ29tcG9uZW50LFxuICBQZHNUYWJQYW5lbENvbXBvbmVudCxcbiAgUGRzVGFibGVDb21wb25lbnQsXG4gIFBkc1RhYnNDb21wb25lbnQsXG4gIFBkc1RhZ0NvbXBvbmVudCxcbiAgUGRzVG9hc3RDb21wb25lbnQsXG4gIFBkc1RvYXN0UmVnaW9uQ29tcG9uZW50LFxuICBQZHNUb2dnbGVib3hDb21wb25lbnQsXG4gIFBkc1Rvb2x0aXBDb21wb25lbnQsXG4gIFBkc1RvcGJhckNvbXBvbmVudCxcbl0gYXMgY29uc3Q7XG4iXX0=