@trimble-oss/moduswebcomponents-angular 1.10.0-ng20 → 1.11.0-ng17

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,1874 @@
1
+ import { __decorate } from "tslib";
2
+ /* tslint:disable */
3
+ /* auto-generated angular directive proxies */
4
+ import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';
5
+ import { ProxyCmp } from './angular-component-lib/utils';
6
+ import * as i0 from "@angular/core";
7
+ let ModusWcAccordion = class ModusWcAccordion {
8
+ constructor(c, r, z) {
9
+ this.z = z;
10
+ this.expandedChange = new EventEmitter();
11
+ c.detach();
12
+ this.el = r.nativeElement;
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAccordion, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcAccordion, selector: "modus-wc-accordion", inputs: { customClass: "customClass" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
+ };
17
+ ModusWcAccordion = __decorate([
18
+ ProxyCmp({
19
+ inputs: ['customClass']
20
+ })
21
+ ], ModusWcAccordion);
22
+ export { ModusWcAccordion };
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAccordion, decorators: [{
24
+ type: Component,
25
+ args: [{
26
+ selector: 'modus-wc-accordion',
27
+ changeDetection: ChangeDetectionStrategy.OnPush,
28
+ template: '<ng-content></ng-content>',
29
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
30
+ inputs: ['customClass'],
31
+ outputs: ['expandedChange'],
32
+ standalone: false
33
+ }]
34
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { expandedChange: [{
35
+ type: Output
36
+ }] } });
37
+ let ModusWcAlert = class ModusWcAlert {
38
+ constructor(c, r, z) {
39
+ this.z = z;
40
+ this.dismissClick = new EventEmitter();
41
+ c.detach();
42
+ this.el = r.nativeElement;
43
+ }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAlert, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
45
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcAlert, selector: "modus-wc-alert", inputs: { alertDescription: "alertDescription", alertTitle: "alertTitle", customClass: "customClass", delay: "delay", disableIcon: "disableIcon", dismissible: "dismissible", icon: "icon", variant: "variant" }, outputs: { dismissClick: "dismissClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
+ };
47
+ ModusWcAlert = __decorate([
48
+ ProxyCmp({
49
+ inputs: ['alertDescription', 'alertTitle', 'customClass', 'delay', 'disableIcon', 'dismissible', 'icon', 'variant']
50
+ })
51
+ ], ModusWcAlert);
52
+ export { ModusWcAlert };
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAlert, decorators: [{
54
+ type: Component,
55
+ args: [{
56
+ selector: 'modus-wc-alert',
57
+ changeDetection: ChangeDetectionStrategy.OnPush,
58
+ template: '<ng-content></ng-content>',
59
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
60
+ inputs: ['alertDescription', { name: 'alertTitle', required: true }, 'customClass', 'delay', 'disableIcon', 'dismissible', 'icon', 'variant'],
61
+ outputs: ['dismissClick'],
62
+ standalone: false
63
+ }]
64
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dismissClick: [{
65
+ type: Output
66
+ }] } });
67
+ let ModusWcAppMenu = class ModusWcAppMenu {
68
+ constructor(c, r, z) {
69
+ this.z = z;
70
+ this.layoutChange = new EventEmitter();
71
+ this.itemsOrderChange = new EventEmitter();
72
+ this.itemClick = new EventEmitter();
73
+ c.detach();
74
+ this.el = r.nativeElement;
75
+ }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAppMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcAppMenu, selector: "modus-wc-app-menu", inputs: { apps: "apps", customClass: "customClass", layout: "layout" }, outputs: { layoutChange: "layoutChange", itemsOrderChange: "itemsOrderChange", itemClick: "itemClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
78
+ };
79
+ ModusWcAppMenu = __decorate([
80
+ ProxyCmp({
81
+ inputs: ['apps', 'customClass', 'layout']
82
+ })
83
+ ], ModusWcAppMenu);
84
+ export { ModusWcAppMenu };
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAppMenu, decorators: [{
86
+ type: Component,
87
+ args: [{
88
+ selector: 'modus-wc-app-menu',
89
+ changeDetection: ChangeDetectionStrategy.OnPush,
90
+ template: '<ng-content></ng-content>',
91
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
92
+ inputs: ['apps', 'customClass', 'layout'],
93
+ outputs: ['layoutChange', 'itemsOrderChange', 'itemClick'],
94
+ standalone: false
95
+ }]
96
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { layoutChange: [{
97
+ type: Output
98
+ }], itemsOrderChange: [{
99
+ type: Output
100
+ }], itemClick: [{
101
+ type: Output
102
+ }] } });
103
+ let ModusWcAutocomplete = class ModusWcAutocomplete {
104
+ constructor(c, r, z) {
105
+ this.z = z;
106
+ this.chipRemove = new EventEmitter();
107
+ this.chipsExpansionChange = new EventEmitter();
108
+ this.clearClick = new EventEmitter();
109
+ this.inputBlur = new EventEmitter();
110
+ this.inputChange = new EventEmitter();
111
+ this.inputFocus = new EventEmitter();
112
+ this.itemSelect = new EventEmitter();
113
+ c.detach();
114
+ this.el = r.nativeElement;
115
+ }
116
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAutocomplete, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcAutocomplete, selector: "modus-wc-autocomplete", inputs: { autoComplete: "autoComplete", bordered: "bordered", customBlur: "customBlur", customClass: "customClass", customInputChange: "customInputChange", customItemSelect: "customItemSelect", customKeyDown: "customKeyDown", debounceMs: "debounceMs", disabled: "disabled", feedback: "feedback", includeClear: "includeClear", includeSearch: "includeSearch", inputId: "inputId", inputTabIndex: "inputTabIndex", items: "items", label: "label", leaveMenuOpen: "leaveMenuOpen", maxChips: "maxChips", minChars: "minChars", minInputWidth: "minInputWidth", multiSelect: "multiSelect", name: "name", noResults: "noResults", placeholder: "placeholder", readOnly: "readOnly", required: "required", showMenuOnFocus: "showMenuOnFocus", showSpinner: "showSpinner", size: "size", value: "value" }, outputs: { chipRemove: "chipRemove", chipsExpansionChange: "chipsExpansionChange", clearClick: "clearClick", inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus", itemSelect: "itemSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
118
+ };
119
+ ModusWcAutocomplete = __decorate([
120
+ ProxyCmp({
121
+ inputs: ['autoComplete', 'bordered', 'customBlur', 'customClass', 'customInputChange', 'customItemSelect', 'customKeyDown', 'debounceMs', 'disabled', 'feedback', 'includeClear', 'includeSearch', 'inputId', 'inputTabIndex', 'items', 'label', 'leaveMenuOpen', 'maxChips', 'minChars', 'minInputWidth', 'multiSelect', 'name', 'noResults', 'placeholder', 'readOnly', 'required', 'showMenuOnFocus', 'showSpinner', 'size', 'value'],
122
+ methods: ['selectItem', 'openMenu', 'closeMenu', 'toggleMenu', 'focusInput', 'clearInput']
123
+ })
124
+ ], ModusWcAutocomplete);
125
+ export { ModusWcAutocomplete };
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAutocomplete, decorators: [{
127
+ type: Component,
128
+ args: [{
129
+ selector: 'modus-wc-autocomplete',
130
+ changeDetection: ChangeDetectionStrategy.OnPush,
131
+ template: '<ng-content></ng-content>',
132
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
133
+ inputs: ['autoComplete', 'bordered', 'customBlur', 'customClass', 'customInputChange', 'customItemSelect', 'customKeyDown', 'debounceMs', 'disabled', 'feedback', 'includeClear', 'includeSearch', 'inputId', 'inputTabIndex', 'items', 'label', 'leaveMenuOpen', 'maxChips', 'minChars', 'minInputWidth', 'multiSelect', 'name', 'noResults', 'placeholder', 'readOnly', 'required', 'showMenuOnFocus', 'showSpinner', 'size', 'value'],
134
+ outputs: ['chipRemove', 'chipsExpansionChange', 'clearClick', 'inputBlur', 'inputChange', 'inputFocus', 'itemSelect'],
135
+ standalone: false
136
+ }]
137
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { chipRemove: [{
138
+ type: Output
139
+ }], chipsExpansionChange: [{
140
+ type: Output
141
+ }], clearClick: [{
142
+ type: Output
143
+ }], inputBlur: [{
144
+ type: Output
145
+ }], inputChange: [{
146
+ type: Output
147
+ }], inputFocus: [{
148
+ type: Output
149
+ }], itemSelect: [{
150
+ type: Output
151
+ }] } });
152
+ let ModusWcAvatar = class ModusWcAvatar {
153
+ constructor(c, r, z) {
154
+ this.z = z;
155
+ this.imageLoadError = new EventEmitter();
156
+ c.detach();
157
+ this.el = r.nativeElement;
158
+ }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAvatar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcAvatar, selector: "modus-wc-avatar", inputs: { alt: "alt", customClass: "customClass", imgSrc: "imgSrc", initials: "initials", shape: "shape", size: "size" }, outputs: { imageLoadError: "imageLoadError" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
161
+ };
162
+ ModusWcAvatar = __decorate([
163
+ ProxyCmp({
164
+ inputs: ['alt', 'customClass', 'imgSrc', 'initials', 'shape', 'size']
165
+ })
166
+ ], ModusWcAvatar);
167
+ export { ModusWcAvatar };
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcAvatar, decorators: [{
169
+ type: Component,
170
+ args: [{
171
+ selector: 'modus-wc-avatar',
172
+ changeDetection: ChangeDetectionStrategy.OnPush,
173
+ template: '<ng-content></ng-content>',
174
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
175
+ inputs: [{ name: 'alt', required: true }, 'customClass', 'imgSrc', 'initials', 'shape', 'size'],
176
+ outputs: ['imageLoadError'],
177
+ standalone: false
178
+ }]
179
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { imageLoadError: [{
180
+ type: Output
181
+ }] } });
182
+ let ModusWcBadge = class ModusWcBadge {
183
+ constructor(c, r, z) {
184
+ this.z = z;
185
+ c.detach();
186
+ this.el = r.nativeElement;
187
+ }
188
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
189
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcBadge, selector: "modus-wc-badge", inputs: { color: "color", customClass: "customClass", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
190
+ };
191
+ ModusWcBadge = __decorate([
192
+ ProxyCmp({
193
+ inputs: ['color', 'customClass', 'size', 'variant']
194
+ })
195
+ ], ModusWcBadge);
196
+ export { ModusWcBadge };
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBadge, decorators: [{
198
+ type: Component,
199
+ args: [{
200
+ selector: 'modus-wc-badge',
201
+ changeDetection: ChangeDetectionStrategy.OnPush,
202
+ template: '<ng-content></ng-content>',
203
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
204
+ inputs: ['color', 'customClass', 'size', 'variant'],
205
+ standalone: false
206
+ }]
207
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
208
+ let ModusWcBottomSheet = class ModusWcBottomSheet {
209
+ constructor(c, r, z) {
210
+ this.z = z;
211
+ this.sheetVisibilityChange = new EventEmitter();
212
+ this.displayModeChange = new EventEmitter();
213
+ this.headerBackClick = new EventEmitter();
214
+ this.headerCloseClick = new EventEmitter();
215
+ c.detach();
216
+ this.el = r.nativeElement;
217
+ }
218
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBottomSheet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
219
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcBottomSheet, selector: "modus-wc-bottom-sheet", inputs: { customClass: "customClass", displayMode: "displayMode", dragStepThreshold: "dragStepThreshold", header: "header", visible: "visible" }, outputs: { sheetVisibilityChange: "sheetVisibilityChange", displayModeChange: "displayModeChange", headerBackClick: "headerBackClick", headerCloseClick: "headerCloseClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
220
+ };
221
+ ModusWcBottomSheet = __decorate([
222
+ ProxyCmp({
223
+ inputs: ['customClass', 'displayMode', 'dragStepThreshold', 'header', 'visible']
224
+ })
225
+ ], ModusWcBottomSheet);
226
+ export { ModusWcBottomSheet };
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBottomSheet, decorators: [{
228
+ type: Component,
229
+ args: [{
230
+ selector: 'modus-wc-bottom-sheet',
231
+ changeDetection: ChangeDetectionStrategy.OnPush,
232
+ template: '<ng-content></ng-content>',
233
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
234
+ inputs: ['customClass', 'displayMode', 'dragStepThreshold', 'header', 'visible'],
235
+ outputs: ['sheetVisibilityChange', 'displayModeChange', 'headerBackClick', 'headerCloseClick'],
236
+ standalone: false
237
+ }]
238
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { sheetVisibilityChange: [{
239
+ type: Output
240
+ }], displayModeChange: [{
241
+ type: Output
242
+ }], headerBackClick: [{
243
+ type: Output
244
+ }], headerCloseClick: [{
245
+ type: Output
246
+ }] } });
247
+ let ModusWcBreadcrumbs = class ModusWcBreadcrumbs {
248
+ constructor(c, r, z) {
249
+ this.z = z;
250
+ this.breadcrumbClick = new EventEmitter();
251
+ c.detach();
252
+ this.el = r.nativeElement;
253
+ }
254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBreadcrumbs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
255
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcBreadcrumbs, selector: "modus-wc-breadcrumbs", inputs: { customClass: "customClass", items: "items", size: "size" }, outputs: { breadcrumbClick: "breadcrumbClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
256
+ };
257
+ ModusWcBreadcrumbs = __decorate([
258
+ ProxyCmp({
259
+ inputs: ['customClass', 'items', 'size']
260
+ })
261
+ ], ModusWcBreadcrumbs);
262
+ export { ModusWcBreadcrumbs };
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcBreadcrumbs, decorators: [{
264
+ type: Component,
265
+ args: [{
266
+ selector: 'modus-wc-breadcrumbs',
267
+ changeDetection: ChangeDetectionStrategy.OnPush,
268
+ template: '<ng-content></ng-content>',
269
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
270
+ inputs: ['customClass', 'items', 'size'],
271
+ outputs: ['breadcrumbClick'],
272
+ standalone: false
273
+ }]
274
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { breadcrumbClick: [{
275
+ type: Output
276
+ }] } });
277
+ let ModusWcButton = class ModusWcButton {
278
+ constructor(c, r, z) {
279
+ this.z = z;
280
+ this.buttonClick = new EventEmitter();
281
+ c.detach();
282
+ this.el = r.nativeElement;
283
+ }
284
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
285
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcButton, selector: "modus-wc-button", inputs: { color: "color", customClass: "customClass", disabled: "disabled", fullWidth: "fullWidth", pressed: "pressed", shape: "shape", size: "size", type: "type", variant: "variant" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
286
+ };
287
+ ModusWcButton = __decorate([
288
+ ProxyCmp({
289
+ inputs: ['color', 'customClass', 'disabled', 'fullWidth', 'pressed', 'shape', 'size', 'type', 'variant']
290
+ })
291
+ ], ModusWcButton);
292
+ export { ModusWcButton };
293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcButton, decorators: [{
294
+ type: Component,
295
+ args: [{
296
+ selector: 'modus-wc-button',
297
+ changeDetection: ChangeDetectionStrategy.OnPush,
298
+ template: '<ng-content></ng-content>',
299
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
300
+ inputs: ['color', 'customClass', 'disabled', 'fullWidth', 'pressed', 'shape', 'size', 'type', 'variant'],
301
+ outputs: ['buttonClick'],
302
+ standalone: false
303
+ }]
304
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { buttonClick: [{
305
+ type: Output
306
+ }] } });
307
+ let ModusWcButtonGroup = class ModusWcButtonGroup {
308
+ constructor(c, r, z) {
309
+ this.z = z;
310
+ this.buttonGroupClick = new EventEmitter();
311
+ this.buttonSelectionChange = new EventEmitter();
312
+ c.detach();
313
+ this.el = r.nativeElement;
314
+ }
315
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcButtonGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
316
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcButtonGroup, selector: "modus-wc-button-group", inputs: { color: "color", disabled: "disabled", orientation: "orientation", selectionType: "selectionType", variant: "variant" }, outputs: { buttonGroupClick: "buttonGroupClick", buttonSelectionChange: "buttonSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
317
+ };
318
+ ModusWcButtonGroup = __decorate([
319
+ ProxyCmp({
320
+ inputs: ['color', 'disabled', 'orientation', 'selectionType', 'variant']
321
+ })
322
+ ], ModusWcButtonGroup);
323
+ export { ModusWcButtonGroup };
324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcButtonGroup, decorators: [{
325
+ type: Component,
326
+ args: [{
327
+ selector: 'modus-wc-button-group',
328
+ changeDetection: ChangeDetectionStrategy.OnPush,
329
+ template: '<ng-content></ng-content>',
330
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
331
+ inputs: ['color', 'disabled', 'orientation', 'selectionType', 'variant'],
332
+ outputs: ['buttonGroupClick', 'buttonSelectionChange'],
333
+ standalone: false
334
+ }]
335
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { buttonGroupClick: [{
336
+ type: Output
337
+ }], buttonSelectionChange: [{
338
+ type: Output
339
+ }] } });
340
+ let ModusWcCard = class ModusWcCard {
341
+ constructor(c, r, z) {
342
+ this.z = z;
343
+ c.detach();
344
+ this.el = r.nativeElement;
345
+ }
346
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
347
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcCard, selector: "modus-wc-card", inputs: { backgroundFigure: "backgroundFigure", bordered: "bordered", customClass: "customClass", layout: "layout", padding: "padding" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
348
+ };
349
+ ModusWcCard = __decorate([
350
+ ProxyCmp({
351
+ inputs: ['backgroundFigure', 'bordered', 'customClass', 'layout', 'padding']
352
+ })
353
+ ], ModusWcCard);
354
+ export { ModusWcCard };
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCard, decorators: [{
356
+ type: Component,
357
+ args: [{
358
+ selector: 'modus-wc-card',
359
+ changeDetection: ChangeDetectionStrategy.OnPush,
360
+ template: '<ng-content></ng-content>',
361
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
362
+ inputs: ['backgroundFigure', 'bordered', 'customClass', 'layout', 'padding'],
363
+ standalone: false
364
+ }]
365
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
366
+ let ModusWcCheckbox = class ModusWcCheckbox {
367
+ constructor(c, r, z) {
368
+ this.z = z;
369
+ this.inputBlur = new EventEmitter();
370
+ this.inputChange = new EventEmitter();
371
+ this.inputFocus = new EventEmitter();
372
+ c.detach();
373
+ this.el = r.nativeElement;
374
+ }
375
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
376
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcCheckbox, selector: "modus-wc-checkbox", inputs: { customClass: "customClass", disabled: "disabled", indeterminate: "indeterminate", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
377
+ };
378
+ ModusWcCheckbox = __decorate([
379
+ ProxyCmp({
380
+ inputs: ['customClass', 'disabled', 'indeterminate', 'inputId', 'inputTabIndex', 'label', 'name', 'required', 'size', 'value']
381
+ })
382
+ ], ModusWcCheckbox);
383
+ export { ModusWcCheckbox };
384
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCheckbox, decorators: [{
385
+ type: Component,
386
+ args: [{
387
+ selector: 'modus-wc-checkbox',
388
+ changeDetection: ChangeDetectionStrategy.OnPush,
389
+ template: '<ng-content></ng-content>',
390
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
391
+ inputs: ['customClass', 'disabled', 'indeterminate', 'inputId', 'inputTabIndex', 'label', 'name', 'required', 'size', 'value'],
392
+ outputs: ['inputBlur', 'inputChange', 'inputFocus'],
393
+ standalone: false
394
+ }]
395
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { inputBlur: [{
396
+ type: Output
397
+ }], inputChange: [{
398
+ type: Output
399
+ }], inputFocus: [{
400
+ type: Output
401
+ }] } });
402
+ let ModusWcChip = class ModusWcChip {
403
+ constructor(c, r, z) {
404
+ this.z = z;
405
+ this.chipClick = new EventEmitter();
406
+ this.chipRemove = new EventEmitter();
407
+ c.detach();
408
+ this.el = r.nativeElement;
409
+ }
410
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcChip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
411
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcChip, selector: "modus-wc-chip", inputs: { active: "active", customClass: "customClass", disabled: "disabled", hasError: "hasError", label: "label", multiline: "multiline", shape: "shape", showRemove: "showRemove", size: "size", variant: "variant" }, outputs: { chipClick: "chipClick", chipRemove: "chipRemove" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
412
+ };
413
+ ModusWcChip = __decorate([
414
+ ProxyCmp({
415
+ inputs: ['active', 'customClass', 'disabled', 'hasError', 'label', 'multiline', 'shape', 'showRemove', 'size', 'variant']
416
+ })
417
+ ], ModusWcChip);
418
+ export { ModusWcChip };
419
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcChip, decorators: [{
420
+ type: Component,
421
+ args: [{
422
+ selector: 'modus-wc-chip',
423
+ changeDetection: ChangeDetectionStrategy.OnPush,
424
+ template: '<ng-content></ng-content>',
425
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
426
+ inputs: ['active', 'customClass', 'disabled', 'hasError', 'label', 'multiline', 'shape', 'showRemove', 'size', 'variant'],
427
+ outputs: ['chipClick', 'chipRemove'],
428
+ standalone: false
429
+ }]
430
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { chipClick: [{
431
+ type: Output
432
+ }], chipRemove: [{
433
+ type: Output
434
+ }] } });
435
+ let ModusWcCollapse = class ModusWcCollapse {
436
+ constructor(c, r, z) {
437
+ this.z = z;
438
+ this.expandedChange = new EventEmitter();
439
+ c.detach();
440
+ this.el = r.nativeElement;
441
+ }
442
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCollapse, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
443
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcCollapse, selector: "modus-wc-collapse", inputs: { bordered: "bordered", chevronPosition: "chevronPosition", collapseId: "collapseId", customClass: "customClass", expanded: "expanded", options: "options" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
444
+ };
445
+ ModusWcCollapse = __decorate([
446
+ ProxyCmp({
447
+ inputs: ['bordered', 'chevronPosition', 'collapseId', 'customClass', 'expanded', 'options']
448
+ })
449
+ ], ModusWcCollapse);
450
+ export { ModusWcCollapse };
451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcCollapse, decorators: [{
452
+ type: Component,
453
+ args: [{
454
+ selector: 'modus-wc-collapse',
455
+ changeDetection: ChangeDetectionStrategy.OnPush,
456
+ template: '<ng-content></ng-content>',
457
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
458
+ inputs: ['bordered', 'chevronPosition', 'collapseId', 'customClass', 'expanded', 'options'],
459
+ outputs: ['expandedChange'],
460
+ standalone: false
461
+ }]
462
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { expandedChange: [{
463
+ type: Output
464
+ }] } });
465
+ let ModusWcContentTree = class ModusWcContentTree {
466
+ constructor(c, r, z) {
467
+ this.z = z;
468
+ this.nodeSelect = new EventEmitter();
469
+ this.nodeExpandChange = new EventEmitter();
470
+ this.nodeCheckChange = new EventEmitter();
471
+ this.nodeEdit = new EventEmitter();
472
+ this.nodeDuplicate = new EventEmitter();
473
+ this.nodeAdd = new EventEmitter();
474
+ this.nodeDelete = new EventEmitter();
475
+ this.nodeRename = new EventEmitter();
476
+ this.nodeEditCancel = new EventEmitter();
477
+ this.nodeMove = new EventEmitter();
478
+ this.nodeLoadChildren = new EventEmitter();
479
+ this.expandAllChange = new EventEmitter();
480
+ this.nodesDelete = new EventEmitter();
481
+ this.nodeVisibilityChange = new EventEmitter();
482
+ c.detach();
483
+ this.el = r.nativeElement;
484
+ }
485
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcContentTree, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
486
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcContentTree, selector: "modus-wc-content-tree", inputs: { allowDragDrop: "allowDragDrop", bordered: "bordered", checkedNodeIds: "checkedNodeIds", customClass: "customClass", editingNodeId: "editingNodeId", expandedNodeIds: "expandedNodeIds", filter: "filter", nodes: "nodes", searchable: "searchable", selectedNodeId: "selectedNodeId", selectionMode: "selectionMode", size: "size", toolbar: "toolbar" }, outputs: { nodeSelect: "nodeSelect", nodeExpandChange: "nodeExpandChange", nodeCheckChange: "nodeCheckChange", nodeEdit: "nodeEdit", nodeDuplicate: "nodeDuplicate", nodeAdd: "nodeAdd", nodeDelete: "nodeDelete", nodeRename: "nodeRename", nodeEditCancel: "nodeEditCancel", nodeMove: "nodeMove", nodeLoadChildren: "nodeLoadChildren", expandAllChange: "expandAllChange", nodesDelete: "nodesDelete", nodeVisibilityChange: "nodeVisibilityChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
487
+ };
488
+ ModusWcContentTree = __decorate([
489
+ ProxyCmp({
490
+ inputs: ['allowDragDrop', 'bordered', 'checkedNodeIds', 'customClass', 'editingNodeId', 'expandedNodeIds', 'filter', 'nodes', 'searchable', 'selectedNodeId', 'selectionMode', 'size', 'toolbar']
491
+ })
492
+ ], ModusWcContentTree);
493
+ export { ModusWcContentTree };
494
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcContentTree, decorators: [{
495
+ type: Component,
496
+ args: [{
497
+ selector: 'modus-wc-content-tree',
498
+ changeDetection: ChangeDetectionStrategy.OnPush,
499
+ template: '<ng-content></ng-content>',
500
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
501
+ inputs: ['allowDragDrop', 'bordered', 'checkedNodeIds', 'customClass', 'editingNodeId', 'expandedNodeIds', 'filter', 'nodes', 'searchable', 'selectedNodeId', 'selectionMode', 'size', 'toolbar'],
502
+ outputs: ['nodeSelect', 'nodeExpandChange', 'nodeCheckChange', 'nodeEdit', 'nodeDuplicate', 'nodeAdd', 'nodeDelete', 'nodeRename', 'nodeEditCancel', 'nodeMove', 'nodeLoadChildren', 'expandAllChange', 'nodesDelete', 'nodeVisibilityChange'],
503
+ standalone: false
504
+ }]
505
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { nodeSelect: [{
506
+ type: Output
507
+ }], nodeExpandChange: [{
508
+ type: Output
509
+ }], nodeCheckChange: [{
510
+ type: Output
511
+ }], nodeEdit: [{
512
+ type: Output
513
+ }], nodeDuplicate: [{
514
+ type: Output
515
+ }], nodeAdd: [{
516
+ type: Output
517
+ }], nodeDelete: [{
518
+ type: Output
519
+ }], nodeRename: [{
520
+ type: Output
521
+ }], nodeEditCancel: [{
522
+ type: Output
523
+ }], nodeMove: [{
524
+ type: Output
525
+ }], nodeLoadChildren: [{
526
+ type: Output
527
+ }], expandAllChange: [{
528
+ type: Output
529
+ }], nodesDelete: [{
530
+ type: Output
531
+ }], nodeVisibilityChange: [{
532
+ type: Output
533
+ }] } });
534
+ let ModusWcDate = class ModusWcDate {
535
+ constructor(c, r, z) {
536
+ this.z = z;
537
+ this.inputBlur = new EventEmitter();
538
+ this.inputChange = new EventEmitter();
539
+ this.inputFocus = new EventEmitter();
540
+ this.calendarMonthChange = new EventEmitter();
541
+ this.calendarYearChange = new EventEmitter();
542
+ this.endCalendarMonthChange = new EventEmitter();
543
+ this.endCalendarYearChange = new EventEmitter();
544
+ this.rangeChange = new EventEmitter();
545
+ c.detach();
546
+ this.el = r.nativeElement;
547
+ }
548
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDate, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
549
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcDate, selector: "modus-wc-date", inputs: { bordered: "bordered", customClass: "customClass", disabled: "disabled", endValue: "endValue", feedback: "feedback", format: "format", hideOverflowDates: "hideOverflowDates", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", readOnly: "readOnly", required: "required", showWeekNumbers: "showWeekNumbers", size: "size", type: "type", value: "value", weekStartDay: "weekStartDay" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus", calendarMonthChange: "calendarMonthChange", calendarYearChange: "calendarYearChange", endCalendarMonthChange: "endCalendarMonthChange", endCalendarYearChange: "endCalendarYearChange", rangeChange: "rangeChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
550
+ };
551
+ ModusWcDate = __decorate([
552
+ ProxyCmp({
553
+ inputs: ['bordered', 'customClass', 'disabled', 'endValue', 'feedback', 'format', 'hideOverflowDates', 'inputId', 'inputTabIndex', 'label', 'max', 'min', 'name', 'readOnly', 'required', 'showWeekNumbers', 'size', 'type', 'value', 'weekStartDay']
554
+ })
555
+ ], ModusWcDate);
556
+ export { ModusWcDate };
557
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDate, decorators: [{
558
+ type: Component,
559
+ args: [{
560
+ selector: 'modus-wc-date',
561
+ changeDetection: ChangeDetectionStrategy.OnPush,
562
+ template: '<ng-content></ng-content>',
563
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
564
+ inputs: ['bordered', 'customClass', 'disabled', 'endValue', 'feedback', 'format', 'hideOverflowDates', 'inputId', 'inputTabIndex', 'label', 'max', 'min', 'name', 'readOnly', 'required', 'showWeekNumbers', 'size', 'type', 'value', 'weekStartDay'],
565
+ outputs: ['inputBlur', 'inputChange', 'inputFocus', 'calendarMonthChange', 'calendarYearChange', 'endCalendarMonthChange', 'endCalendarYearChange', 'rangeChange'],
566
+ standalone: false
567
+ }]
568
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { inputBlur: [{
569
+ type: Output
570
+ }], inputChange: [{
571
+ type: Output
572
+ }], inputFocus: [{
573
+ type: Output
574
+ }], calendarMonthChange: [{
575
+ type: Output
576
+ }], calendarYearChange: [{
577
+ type: Output
578
+ }], endCalendarMonthChange: [{
579
+ type: Output
580
+ }], endCalendarYearChange: [{
581
+ type: Output
582
+ }], rangeChange: [{
583
+ type: Output
584
+ }] } });
585
+ let ModusWcDivider = class ModusWcDivider {
586
+ constructor(c, r, z) {
587
+ this.z = z;
588
+ c.detach();
589
+ this.el = r.nativeElement;
590
+ }
591
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
592
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcDivider, selector: "modus-wc-divider", inputs: { color: "color", content: "content", customClass: "customClass", orientation: "orientation", position: "position", responsive: "responsive" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
593
+ };
594
+ ModusWcDivider = __decorate([
595
+ ProxyCmp({
596
+ inputs: ['color', 'content', 'customClass', 'orientation', 'position', 'responsive']
597
+ })
598
+ ], ModusWcDivider);
599
+ export { ModusWcDivider };
600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDivider, decorators: [{
601
+ type: Component,
602
+ args: [{
603
+ selector: 'modus-wc-divider',
604
+ changeDetection: ChangeDetectionStrategy.OnPush,
605
+ template: '<ng-content></ng-content>',
606
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
607
+ inputs: ['color', 'content', 'customClass', 'orientation', 'position', 'responsive'],
608
+ standalone: false
609
+ }]
610
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
611
+ let ModusWcDropdownMenu = class ModusWcDropdownMenu {
612
+ constructor(c, r, z) {
613
+ this.z = z;
614
+ this.menuVisibilityChange = new EventEmitter();
615
+ c.detach();
616
+ this.el = r.nativeElement;
617
+ }
618
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDropdownMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
619
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcDropdownMenu, selector: "modus-wc-dropdown-menu", inputs: { buttonAriaLabel: "buttonAriaLabel", buttonColor: "buttonColor", buttonShape: "buttonShape", buttonSize: "buttonSize", buttonVariant: "buttonVariant", customClass: "customClass", disabled: "disabled", menuBordered: "menuBordered", menuOffset: "menuOffset", menuPlacement: "menuPlacement", menuSize: "menuSize", menuStrategy: "menuStrategy", menuVisible: "menuVisible" }, outputs: { menuVisibilityChange: "menuVisibilityChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
620
+ };
621
+ ModusWcDropdownMenu = __decorate([
622
+ ProxyCmp({
623
+ inputs: ['buttonAriaLabel', 'buttonColor', 'buttonShape', 'buttonSize', 'buttonVariant', 'customClass', 'disabled', 'menuBordered', 'menuOffset', 'menuPlacement', 'menuSize', 'menuStrategy', 'menuVisible']
624
+ })
625
+ ], ModusWcDropdownMenu);
626
+ export { ModusWcDropdownMenu };
627
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcDropdownMenu, decorators: [{
628
+ type: Component,
629
+ args: [{
630
+ selector: 'modus-wc-dropdown-menu',
631
+ changeDetection: ChangeDetectionStrategy.OnPush,
632
+ template: '<ng-content></ng-content>',
633
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
634
+ inputs: ['buttonAriaLabel', 'buttonColor', 'buttonShape', 'buttonSize', 'buttonVariant', 'customClass', 'disabled', 'menuBordered', 'menuOffset', 'menuPlacement', 'menuSize', 'menuStrategy', 'menuVisible'],
635
+ outputs: ['menuVisibilityChange'],
636
+ standalone: false
637
+ }]
638
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { menuVisibilityChange: [{
639
+ type: Output
640
+ }] } });
641
+ let ModusWcFileDropzone = class ModusWcFileDropzone {
642
+ constructor(c, r, z) {
643
+ this.z = z;
644
+ this.fileSelect = new EventEmitter();
645
+ c.detach();
646
+ this.el = r.nativeElement;
647
+ }
648
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcFileDropzone, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
649
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcFileDropzone, selector: "modus-wc-file-dropzone", inputs: { acceptFileTypes: "acceptFileTypes", customClass: "customClass", disabled: "disabled", feedback: "feedback", fileDraggedOverInstructions: "fileDraggedOverInstructions", includeStateIcon: "includeStateIcon", instructions: "instructions", invalidFileTypeMessage: "invalidFileTypeMessage", maxFileCount: "maxFileCount", maxFileNameLength: "maxFileNameLength", maxTotalFileSizeBytes: "maxTotalFileSizeBytes", multiple: "multiple", successMessage: "successMessage" }, outputs: { fileSelect: "fileSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
650
+ };
651
+ ModusWcFileDropzone = __decorate([
652
+ ProxyCmp({
653
+ inputs: ['acceptFileTypes', 'customClass', 'disabled', 'feedback', 'fileDraggedOverInstructions', 'includeStateIcon', 'instructions', 'invalidFileTypeMessage', 'maxFileCount', 'maxFileNameLength', 'maxTotalFileSizeBytes', 'multiple', 'successMessage'],
654
+ methods: ['reset']
655
+ })
656
+ ], ModusWcFileDropzone);
657
+ export { ModusWcFileDropzone };
658
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcFileDropzone, decorators: [{
659
+ type: Component,
660
+ args: [{
661
+ selector: 'modus-wc-file-dropzone',
662
+ changeDetection: ChangeDetectionStrategy.OnPush,
663
+ template: '<ng-content></ng-content>',
664
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
665
+ inputs: ['acceptFileTypes', 'customClass', 'disabled', 'feedback', 'fileDraggedOverInstructions', 'includeStateIcon', 'instructions', 'invalidFileTypeMessage', 'maxFileCount', 'maxFileNameLength', 'maxTotalFileSizeBytes', 'multiple', 'successMessage'],
666
+ outputs: ['fileSelect'],
667
+ standalone: false
668
+ }]
669
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { fileSelect: [{
670
+ type: Output
671
+ }] } });
672
+ let ModusWcHandle = class ModusWcHandle {
673
+ constructor(c, r, z) {
674
+ this.z = z;
675
+ c.detach();
676
+ this.el = r.nativeElement;
677
+ }
678
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcHandle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
679
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcHandle, selector: "modus-wc-handle", inputs: { buttonColor: "buttonColor", buttonSize: "buttonSize", buttonVariant: "buttonVariant", customClass: "customClass", defaultSplit: "defaultSplit", density: "density", leftTarget: "leftTarget", orientation: "orientation", rightTarget: "rightTarget", size: "size", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
680
+ };
681
+ ModusWcHandle = __decorate([
682
+ ProxyCmp({
683
+ inputs: ['buttonColor', 'buttonSize', 'buttonVariant', 'customClass', 'defaultSplit', 'density', 'leftTarget', 'orientation', 'rightTarget', 'size', 'type']
684
+ })
685
+ ], ModusWcHandle);
686
+ export { ModusWcHandle };
687
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcHandle, decorators: [{
688
+ type: Component,
689
+ args: [{
690
+ selector: 'modus-wc-handle',
691
+ changeDetection: ChangeDetectionStrategy.OnPush,
692
+ template: '<ng-content></ng-content>',
693
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
694
+ inputs: ['buttonColor', 'buttonSize', 'buttonVariant', 'customClass', 'defaultSplit', 'density', 'leftTarget', 'orientation', 'rightTarget', 'size', 'type'],
695
+ standalone: false
696
+ }]
697
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
698
+ let ModusWcIcon = class ModusWcIcon {
699
+ constructor(c, r, z) {
700
+ this.z = z;
701
+ c.detach();
702
+ this.el = r.nativeElement;
703
+ }
704
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcIcon, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
705
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcIcon, selector: "modus-wc-icon", inputs: { customClass: "customClass", decorative: "decorative", name: "name", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
706
+ };
707
+ ModusWcIcon = __decorate([
708
+ ProxyCmp({
709
+ inputs: ['customClass', 'decorative', 'name', 'size', 'variant']
710
+ })
711
+ ], ModusWcIcon);
712
+ export { ModusWcIcon };
713
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcIcon, decorators: [{
714
+ type: Component,
715
+ args: [{
716
+ selector: 'modus-wc-icon',
717
+ changeDetection: ChangeDetectionStrategy.OnPush,
718
+ template: '<ng-content></ng-content>',
719
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
720
+ inputs: ['customClass', 'decorative', { name: 'name', required: true }, 'size', 'variant'],
721
+ standalone: false
722
+ }]
723
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
724
+ let ModusWcInputFeedback = class ModusWcInputFeedback {
725
+ constructor(c, r, z) {
726
+ this.z = z;
727
+ c.detach();
728
+ this.el = r.nativeElement;
729
+ }
730
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcInputFeedback, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
731
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcInputFeedback, selector: "modus-wc-input-feedback", inputs: { customClass: "customClass", icon: "icon", level: "level", message: "message", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
732
+ };
733
+ ModusWcInputFeedback = __decorate([
734
+ ProxyCmp({
735
+ inputs: ['customClass', 'icon', 'level', 'message', 'size']
736
+ })
737
+ ], ModusWcInputFeedback);
738
+ export { ModusWcInputFeedback };
739
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcInputFeedback, decorators: [{
740
+ type: Component,
741
+ args: [{
742
+ selector: 'modus-wc-input-feedback',
743
+ changeDetection: ChangeDetectionStrategy.OnPush,
744
+ template: '<ng-content></ng-content>',
745
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
746
+ inputs: ['customClass', 'icon', { name: 'level', required: true }, 'message', 'size'],
747
+ standalone: false
748
+ }]
749
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
750
+ let ModusWcInputLabel = class ModusWcInputLabel {
751
+ constructor(c, r, z) {
752
+ this.z = z;
753
+ c.detach();
754
+ this.el = r.nativeElement;
755
+ }
756
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcInputLabel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
757
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcInputLabel, selector: "modus-wc-input-label", inputs: { customClass: "customClass", forId: "forId", labelText: "labelText", required: "required", size: "size", subLabelText: "subLabelText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
758
+ };
759
+ ModusWcInputLabel = __decorate([
760
+ ProxyCmp({
761
+ inputs: ['customClass', 'forId', 'labelText', 'required', 'size', 'subLabelText']
762
+ })
763
+ ], ModusWcInputLabel);
764
+ export { ModusWcInputLabel };
765
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcInputLabel, decorators: [{
766
+ type: Component,
767
+ args: [{
768
+ selector: 'modus-wc-input-label',
769
+ changeDetection: ChangeDetectionStrategy.OnPush,
770
+ template: '<ng-content></ng-content>',
771
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
772
+ inputs: ['customClass', 'forId', 'labelText', 'required', 'size', 'subLabelText'],
773
+ standalone: false
774
+ }]
775
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
776
+ let ModusWcLink = class ModusWcLink {
777
+ constructor(c, r, z) {
778
+ this.z = z;
779
+ c.detach();
780
+ this.el = r.nativeElement;
781
+ }
782
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLink, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
783
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcLink, selector: "modus-wc-link", inputs: { color: "color", customClass: "customClass", href: "href", rel: "rel", target: "target", underline: "underline" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
784
+ };
785
+ ModusWcLink = __decorate([
786
+ ProxyCmp({
787
+ inputs: ['color', 'customClass', 'href', 'rel', 'target', 'underline']
788
+ })
789
+ ], ModusWcLink);
790
+ export { ModusWcLink };
791
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLink, decorators: [{
792
+ type: Component,
793
+ args: [{
794
+ selector: 'modus-wc-link',
795
+ changeDetection: ChangeDetectionStrategy.OnPush,
796
+ template: '<ng-content></ng-content>',
797
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
798
+ inputs: ['color', 'customClass', 'href', 'rel', 'target', 'underline'],
799
+ standalone: false
800
+ }]
801
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
802
+ let ModusWcLoader = class ModusWcLoader {
803
+ constructor(c, r, z) {
804
+ this.z = z;
805
+ c.detach();
806
+ this.el = r.nativeElement;
807
+ }
808
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLoader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
809
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcLoader, selector: "modus-wc-loader", inputs: { color: "color", customClass: "customClass", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
810
+ };
811
+ ModusWcLoader = __decorate([
812
+ ProxyCmp({
813
+ inputs: ['color', 'customClass', 'size', 'variant']
814
+ })
815
+ ], ModusWcLoader);
816
+ export { ModusWcLoader };
817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLoader, decorators: [{
818
+ type: Component,
819
+ args: [{
820
+ selector: 'modus-wc-loader',
821
+ changeDetection: ChangeDetectionStrategy.OnPush,
822
+ template: '<ng-content></ng-content>',
823
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
824
+ inputs: ['color', 'customClass', 'size', 'variant'],
825
+ standalone: false
826
+ }]
827
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
828
+ let ModusWcLogo = class ModusWcLogo {
829
+ constructor(c, r, z) {
830
+ this.z = z;
831
+ c.detach();
832
+ this.el = r.nativeElement;
833
+ }
834
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLogo, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
835
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcLogo, selector: "modus-wc-logo", inputs: { alt: "alt", customClass: "customClass", emblem: "emblem", name: "name" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
836
+ };
837
+ ModusWcLogo = __decorate([
838
+ ProxyCmp({
839
+ inputs: ['alt', 'customClass', 'emblem', 'name']
840
+ })
841
+ ], ModusWcLogo);
842
+ export { ModusWcLogo };
843
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcLogo, decorators: [{
844
+ type: Component,
845
+ args: [{
846
+ selector: 'modus-wc-logo',
847
+ changeDetection: ChangeDetectionStrategy.OnPush,
848
+ template: '<ng-content></ng-content>',
849
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
850
+ inputs: ['alt', 'customClass', 'emblem', { name: 'name', required: true }],
851
+ standalone: false
852
+ }]
853
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
854
+ let ModusWcMenu = class ModusWcMenu {
855
+ constructor(c, r, z) {
856
+ this.z = z;
857
+ this.menuFocusout = new EventEmitter();
858
+ this.menuSelectionChange = new EventEmitter();
859
+ c.detach();
860
+ this.el = r.nativeElement;
861
+ }
862
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
863
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcMenu, selector: "modus-wc-menu", inputs: { bordered: "bordered", customClass: "customClass", isSubMenu: "isSubMenu", orientation: "orientation", selectionMode: "selectionMode", size: "size" }, outputs: { menuFocusout: "menuFocusout", menuSelectionChange: "menuSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
864
+ };
865
+ ModusWcMenu = __decorate([
866
+ ProxyCmp({
867
+ inputs: ['bordered', 'customClass', 'isSubMenu', 'orientation', 'selectionMode', 'size']
868
+ })
869
+ ], ModusWcMenu);
870
+ export { ModusWcMenu };
871
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcMenu, decorators: [{
872
+ type: Component,
873
+ args: [{
874
+ selector: 'modus-wc-menu',
875
+ changeDetection: ChangeDetectionStrategy.OnPush,
876
+ template: '<ng-content></ng-content>',
877
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
878
+ inputs: ['bordered', 'customClass', 'isSubMenu', 'orientation', 'selectionMode', 'size'],
879
+ outputs: ['menuFocusout', 'menuSelectionChange'],
880
+ standalone: false
881
+ }]
882
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { menuFocusout: [{
883
+ type: Output
884
+ }], menuSelectionChange: [{
885
+ type: Output
886
+ }] } });
887
+ let ModusWcMenuItem = class ModusWcMenuItem {
888
+ constructor(c, r, z) {
889
+ this.z = z;
890
+ this.itemSelect = new EventEmitter();
891
+ c.detach();
892
+ this.el = r.nativeElement;
893
+ }
894
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
895
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcMenuItem, selector: "modus-wc-menu-item", inputs: { bordered: "bordered", checkbox: "checkbox", customClass: "customClass", disabled: "disabled", focused: "focused", hasSubmenu: "hasSubmenu", label: "label", selected: "selected", size: "size", subLabel: "subLabel", tooltipContent: "tooltipContent", tooltipPosition: "tooltipPosition", value: "value" }, outputs: { itemSelect: "itemSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
896
+ };
897
+ ModusWcMenuItem = __decorate([
898
+ ProxyCmp({
899
+ inputs: ['bordered', 'checkbox', 'customClass', 'disabled', 'focused', 'hasSubmenu', 'label', 'selected', 'size', 'subLabel', 'tooltipContent', 'tooltipPosition', 'value'],
900
+ methods: ['collapseSubmenu']
901
+ })
902
+ ], ModusWcMenuItem);
903
+ export { ModusWcMenuItem };
904
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcMenuItem, decorators: [{
905
+ type: Component,
906
+ args: [{
907
+ selector: 'modus-wc-menu-item',
908
+ changeDetection: ChangeDetectionStrategy.OnPush,
909
+ template: '<ng-content></ng-content>',
910
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
911
+ inputs: ['bordered', 'checkbox', 'customClass', 'disabled', 'focused', 'hasSubmenu', 'label', 'selected', 'size', 'subLabel', 'tooltipContent', 'tooltipPosition', 'value'],
912
+ outputs: ['itemSelect'],
913
+ standalone: false
914
+ }]
915
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { itemSelect: [{
916
+ type: Output
917
+ }] } });
918
+ let ModusWcModal = class ModusWcModal {
919
+ constructor(c, r, z) {
920
+ this.z = z;
921
+ c.detach();
922
+ this.el = r.nativeElement;
923
+ }
924
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcModal, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
925
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcModal, selector: "modus-wc-modal", inputs: { backdrop: "backdrop", customClass: "customClass", fullscreen: "fullscreen", modalId: "modalId", position: "position", showClose: "showClose", showFullscreenToggle: "showFullscreenToggle" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
926
+ };
927
+ ModusWcModal = __decorate([
928
+ ProxyCmp({
929
+ inputs: ['backdrop', 'customClass', 'fullscreen', 'modalId', 'position', 'showClose', 'showFullscreenToggle']
930
+ })
931
+ ], ModusWcModal);
932
+ export { ModusWcModal };
933
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcModal, decorators: [{
934
+ type: Component,
935
+ args: [{
936
+ selector: 'modus-wc-modal',
937
+ changeDetection: ChangeDetectionStrategy.OnPush,
938
+ template: '<ng-content></ng-content>',
939
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
940
+ inputs: ['backdrop', 'customClass', 'fullscreen', { name: 'modalId', required: true }, 'position', 'showClose', 'showFullscreenToggle'],
941
+ standalone: false
942
+ }]
943
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
944
+ let ModusWcNavbar = class ModusWcNavbar {
945
+ constructor(c, r, z) {
946
+ this.z = z;
947
+ this.aiClick = new EventEmitter();
948
+ this.appsClick = new EventEmitter();
949
+ this.appsMenuOpenChange = new EventEmitter();
950
+ this.condensedMenuOpenChange = new EventEmitter();
951
+ this.helpClick = new EventEmitter();
952
+ this.mainMenuOpenChange = new EventEmitter();
953
+ this.myTrimbleClick = new EventEmitter();
954
+ this.notificationsClick = new EventEmitter();
955
+ this.notificationsMenuOpenChange = new EventEmitter();
956
+ this.searchChange = new EventEmitter();
957
+ this.searchClick = new EventEmitter();
958
+ this.searchInputOpenChange = new EventEmitter();
959
+ this.signOutClick = new EventEmitter();
960
+ this.trimbleLogoClick = new EventEmitter();
961
+ this.userMenuOpenChange = new EventEmitter();
962
+ c.detach();
963
+ this.el = r.nativeElement;
964
+ }
965
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcNavbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
966
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcNavbar, selector: "modus-wc-navbar", inputs: { appsMenuOpen: "appsMenuOpen", condensed: "condensed", condensedMenuOpen: "condensedMenuOpen", customClass: "customClass", logoName: "logoName", mainMenuOpen: "mainMenuOpen", notificationsMenuOpen: "notificationsMenuOpen", searchDebounceMs: "searchDebounceMs", searchInputOpen: "searchInputOpen", textOverrides: "textOverrides", userCard: "userCard", userMenuOpen: "userMenuOpen", visibility: "visibility" }, outputs: { aiClick: "aiClick", appsClick: "appsClick", appsMenuOpenChange: "appsMenuOpenChange", condensedMenuOpenChange: "condensedMenuOpenChange", helpClick: "helpClick", mainMenuOpenChange: "mainMenuOpenChange", myTrimbleClick: "myTrimbleClick", notificationsClick: "notificationsClick", notificationsMenuOpenChange: "notificationsMenuOpenChange", searchChange: "searchChange", searchClick: "searchClick", searchInputOpenChange: "searchInputOpenChange", signOutClick: "signOutClick", trimbleLogoClick: "trimbleLogoClick", userMenuOpenChange: "userMenuOpenChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
967
+ };
968
+ ModusWcNavbar = __decorate([
969
+ ProxyCmp({
970
+ inputs: ['appsMenuOpen', 'condensed', 'condensedMenuOpen', 'customClass', 'logoName', 'mainMenuOpen', 'notificationsMenuOpen', 'searchDebounceMs', 'searchInputOpen', 'textOverrides', 'userCard', 'userMenuOpen', 'visibility']
971
+ })
972
+ ], ModusWcNavbar);
973
+ export { ModusWcNavbar };
974
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcNavbar, decorators: [{
975
+ type: Component,
976
+ args: [{
977
+ selector: 'modus-wc-navbar',
978
+ changeDetection: ChangeDetectionStrategy.OnPush,
979
+ template: '<ng-content></ng-content>',
980
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
981
+ inputs: ['appsMenuOpen', 'condensed', 'condensedMenuOpen', 'customClass', 'logoName', 'mainMenuOpen', 'notificationsMenuOpen', 'searchDebounceMs', 'searchInputOpen', 'textOverrides', { name: 'userCard', required: true }, 'userMenuOpen', 'visibility'],
982
+ outputs: ['aiClick', 'appsClick', 'appsMenuOpenChange', 'condensedMenuOpenChange', 'helpClick', 'mainMenuOpenChange', 'myTrimbleClick', 'notificationsClick', 'notificationsMenuOpenChange', 'searchChange', 'searchClick', 'searchInputOpenChange', 'signOutClick', 'trimbleLogoClick', 'userMenuOpenChange'],
983
+ standalone: false
984
+ }]
985
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { aiClick: [{
986
+ type: Output
987
+ }], appsClick: [{
988
+ type: Output
989
+ }], appsMenuOpenChange: [{
990
+ type: Output
991
+ }], condensedMenuOpenChange: [{
992
+ type: Output
993
+ }], helpClick: [{
994
+ type: Output
995
+ }], mainMenuOpenChange: [{
996
+ type: Output
997
+ }], myTrimbleClick: [{
998
+ type: Output
999
+ }], notificationsClick: [{
1000
+ type: Output
1001
+ }], notificationsMenuOpenChange: [{
1002
+ type: Output
1003
+ }], searchChange: [{
1004
+ type: Output
1005
+ }], searchClick: [{
1006
+ type: Output
1007
+ }], searchInputOpenChange: [{
1008
+ type: Output
1009
+ }], signOutClick: [{
1010
+ type: Output
1011
+ }], trimbleLogoClick: [{
1012
+ type: Output
1013
+ }], userMenuOpenChange: [{
1014
+ type: Output
1015
+ }] } });
1016
+ let ModusWcNumberInput = class ModusWcNumberInput {
1017
+ constructor(c, r, z) {
1018
+ this.z = z;
1019
+ this.inputBlur = new EventEmitter();
1020
+ this.inputChange = new EventEmitter();
1021
+ this.inputFocus = new EventEmitter();
1022
+ c.detach();
1023
+ this.el = r.nativeElement;
1024
+ }
1025
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcNumberInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1026
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcNumberInput, selector: "modus-wc-number-input", inputs: { autoComplete: "autoComplete", bordered: "bordered", currencySymbol: "currencySymbol", customClass: "customClass", disabled: "disabled", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", placeholder: "placeholder", readOnly: "readOnly", required: "required", size: "size", step: "step", type: "type", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1027
+ };
1028
+ ModusWcNumberInput = __decorate([
1029
+ ProxyCmp({
1030
+ inputs: ['autoComplete', 'bordered', 'currencySymbol', 'customClass', 'disabled', 'feedback', 'inputId', 'inputTabIndex', 'label', 'max', 'min', 'name', 'placeholder', 'readOnly', 'required', 'size', 'step', 'type', 'value']
1031
+ })
1032
+ ], ModusWcNumberInput);
1033
+ export { ModusWcNumberInput };
1034
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcNumberInput, decorators: [{
1035
+ type: Component,
1036
+ args: [{
1037
+ selector: 'modus-wc-number-input',
1038
+ changeDetection: ChangeDetectionStrategy.OnPush,
1039
+ template: '<ng-content></ng-content>',
1040
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1041
+ inputs: ['autoComplete', 'bordered', 'currencySymbol', 'customClass', 'disabled', 'feedback', 'inputId', 'inputTabIndex', 'label', 'max', 'min', 'name', 'placeholder', 'readOnly', 'required', 'size', 'step', 'type', 'value'],
1042
+ outputs: ['inputBlur', 'inputChange', 'inputFocus'],
1043
+ standalone: false
1044
+ }]
1045
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { inputBlur: [{
1046
+ type: Output
1047
+ }], inputChange: [{
1048
+ type: Output
1049
+ }], inputFocus: [{
1050
+ type: Output
1051
+ }] } });
1052
+ let ModusWcPagination = class ModusWcPagination {
1053
+ constructor(c, r, z) {
1054
+ this.z = z;
1055
+ this.pageChange = new EventEmitter();
1056
+ c.detach();
1057
+ this.el = r.nativeElement;
1058
+ }
1059
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcPagination, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1060
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcPagination, selector: "modus-wc-pagination", inputs: { ariaLabelValues: "ariaLabelValues", count: "count", customClass: "customClass", nextButtonText: "nextButtonText", page: "page", prevButtonText: "prevButtonText", size: "size" }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1061
+ };
1062
+ ModusWcPagination = __decorate([
1063
+ ProxyCmp({
1064
+ inputs: ['ariaLabelValues', 'count', 'customClass', 'nextButtonText', 'page', 'prevButtonText', 'size']
1065
+ })
1066
+ ], ModusWcPagination);
1067
+ export { ModusWcPagination };
1068
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcPagination, decorators: [{
1069
+ type: Component,
1070
+ args: [{
1071
+ selector: 'modus-wc-pagination',
1072
+ changeDetection: ChangeDetectionStrategy.OnPush,
1073
+ template: '<ng-content></ng-content>',
1074
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1075
+ inputs: ['ariaLabelValues', 'count', 'customClass', 'nextButtonText', 'page', 'prevButtonText', 'size'],
1076
+ outputs: ['pageChange'],
1077
+ standalone: false
1078
+ }]
1079
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { pageChange: [{
1080
+ type: Output
1081
+ }] } });
1082
+ let ModusWcPanel = class ModusWcPanel {
1083
+ constructor(c, r, z) {
1084
+ this.z = z;
1085
+ c.detach();
1086
+ this.el = r.nativeElement;
1087
+ }
1088
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1089
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcPanel, selector: "modus-wc-panel", inputs: { customClass: "customClass", floating: "floating", height: "height", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1090
+ };
1091
+ ModusWcPanel = __decorate([
1092
+ ProxyCmp({
1093
+ inputs: ['customClass', 'floating', 'height', 'width']
1094
+ })
1095
+ ], ModusWcPanel);
1096
+ export { ModusWcPanel };
1097
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcPanel, decorators: [{
1098
+ type: Component,
1099
+ args: [{
1100
+ selector: 'modus-wc-panel',
1101
+ changeDetection: ChangeDetectionStrategy.OnPush,
1102
+ template: '<ng-content></ng-content>',
1103
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1104
+ inputs: ['customClass', 'floating', 'height', 'width'],
1105
+ standalone: false
1106
+ }]
1107
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1108
+ let ModusWcProfileMenu = class ModusWcProfileMenu {
1109
+ constructor(c, r, z) {
1110
+ this.z = z;
1111
+ this.signOutClick = new EventEmitter();
1112
+ this.menuItemClick = new EventEmitter();
1113
+ c.detach();
1114
+ this.el = r.nativeElement;
1115
+ }
1116
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcProfileMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcProfileMenu, selector: "modus-wc-profile-menu", inputs: { mainMenu: "mainMenu", menuOne: "menuOne", menuTwo: "menuTwo", profileProps: "profileProps", showSignOut: "showSignOut" }, outputs: { signOutClick: "signOutClick", menuItemClick: "menuItemClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1118
+ };
1119
+ ModusWcProfileMenu = __decorate([
1120
+ ProxyCmp({
1121
+ inputs: ['mainMenu', 'menuOne', 'menuTwo', 'profileProps', 'showSignOut']
1122
+ })
1123
+ ], ModusWcProfileMenu);
1124
+ export { ModusWcProfileMenu };
1125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcProfileMenu, decorators: [{
1126
+ type: Component,
1127
+ args: [{
1128
+ selector: 'modus-wc-profile-menu',
1129
+ changeDetection: ChangeDetectionStrategy.OnPush,
1130
+ template: '<ng-content></ng-content>',
1131
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1132
+ inputs: ['mainMenu', 'menuOne', 'menuTwo', { name: 'profileProps', required: true }, 'showSignOut'],
1133
+ outputs: ['signOutClick', 'menuItemClick'],
1134
+ standalone: false
1135
+ }]
1136
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { signOutClick: [{
1137
+ type: Output
1138
+ }], menuItemClick: [{
1139
+ type: Output
1140
+ }] } });
1141
+ let ModusWcProgress = class ModusWcProgress {
1142
+ constructor(c, r, z) {
1143
+ this.z = z;
1144
+ c.detach();
1145
+ this.el = r.nativeElement;
1146
+ }
1147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcProgress, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcProgress, selector: "modus-wc-progress", inputs: { customClass: "customClass", indeterminate: "indeterminate", label: "label", max: "max", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1149
+ };
1150
+ ModusWcProgress = __decorate([
1151
+ ProxyCmp({
1152
+ inputs: ['customClass', 'indeterminate', 'label', 'max', 'value', 'variant']
1153
+ })
1154
+ ], ModusWcProgress);
1155
+ export { ModusWcProgress };
1156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcProgress, decorators: [{
1157
+ type: Component,
1158
+ args: [{
1159
+ selector: 'modus-wc-progress',
1160
+ changeDetection: ChangeDetectionStrategy.OnPush,
1161
+ template: '<ng-content></ng-content>',
1162
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1163
+ inputs: ['customClass', 'indeterminate', 'label', 'max', 'value', 'variant'],
1164
+ standalone: false
1165
+ }]
1166
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1167
+ let ModusWcRadio = class ModusWcRadio {
1168
+ constructor(c, r, z) {
1169
+ this.z = z;
1170
+ this.inputBlur = new EventEmitter();
1171
+ this.inputChange = new EventEmitter();
1172
+ this.inputFocus = new EventEmitter();
1173
+ c.detach();
1174
+ this.el = r.nativeElement;
1175
+ }
1176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcRadio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcRadio, selector: "modus-wc-radio", inputs: { customClass: "customClass", disabled: "disabled", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1178
+ };
1179
+ ModusWcRadio = __decorate([
1180
+ ProxyCmp({
1181
+ inputs: ['customClass', 'disabled', 'inputId', 'inputTabIndex', 'label', 'name', 'required', 'size', 'value']
1182
+ })
1183
+ ], ModusWcRadio);
1184
+ export { ModusWcRadio };
1185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcRadio, decorators: [{
1186
+ type: Component,
1187
+ args: [{
1188
+ selector: 'modus-wc-radio',
1189
+ changeDetection: ChangeDetectionStrategy.OnPush,
1190
+ template: '<ng-content></ng-content>',
1191
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1192
+ inputs: ['customClass', 'disabled', 'inputId', 'inputTabIndex', 'label', 'name', 'required', 'size', 'value'],
1193
+ outputs: ['inputBlur', 'inputChange', 'inputFocus'],
1194
+ standalone: false
1195
+ }]
1196
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { inputBlur: [{
1197
+ type: Output
1198
+ }], inputChange: [{
1199
+ type: Output
1200
+ }], inputFocus: [{
1201
+ type: Output
1202
+ }] } });
1203
+ let ModusWcRating = class ModusWcRating {
1204
+ constructor(c, r, z) {
1205
+ this.z = z;
1206
+ this.ratingChange = new EventEmitter();
1207
+ c.detach();
1208
+ this.el = r.nativeElement;
1209
+ }
1210
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcRating, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1211
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcRating, selector: "modus-wc-rating", inputs: { allowHalf: "allowHalf", count: "count", customClass: "customClass", disabled: "disabled", getAriaLabelText: "getAriaLabelText", size: "size", value: "value", variant: "variant" }, outputs: { ratingChange: "ratingChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1212
+ };
1213
+ ModusWcRating = __decorate([
1214
+ ProxyCmp({
1215
+ inputs: ['allowHalf', 'count', 'customClass', 'disabled', 'getAriaLabelText', 'size', 'value', 'variant']
1216
+ })
1217
+ ], ModusWcRating);
1218
+ export { ModusWcRating };
1219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcRating, decorators: [{
1220
+ type: Component,
1221
+ args: [{
1222
+ selector: 'modus-wc-rating',
1223
+ changeDetection: ChangeDetectionStrategy.OnPush,
1224
+ template: '<ng-content></ng-content>',
1225
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1226
+ inputs: ['allowHalf', 'count', 'customClass', 'disabled', 'getAriaLabelText', 'size', 'value', 'variant'],
1227
+ outputs: ['ratingChange'],
1228
+ standalone: false
1229
+ }]
1230
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { ratingChange: [{
1231
+ type: Output
1232
+ }] } });
1233
+ let ModusWcSelect = class ModusWcSelect {
1234
+ constructor(c, r, z) {
1235
+ this.z = z;
1236
+ this.inputBlur = new EventEmitter();
1237
+ this.inputChange = new EventEmitter();
1238
+ this.inputFocus = new EventEmitter();
1239
+ c.detach();
1240
+ this.el = r.nativeElement;
1241
+ }
1242
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1243
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcSelect, selector: "modus-wc-select", inputs: { bordered: "bordered", customClass: "customClass", disabled: "disabled", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", options: "options", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1244
+ };
1245
+ ModusWcSelect = __decorate([
1246
+ ProxyCmp({
1247
+ inputs: ['bordered', 'customClass', 'disabled', 'feedback', 'inputId', 'inputTabIndex', 'label', 'name', 'options', 'required', 'size', 'value']
1248
+ })
1249
+ ], ModusWcSelect);
1250
+ export { ModusWcSelect };
1251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSelect, decorators: [{
1252
+ type: Component,
1253
+ args: [{
1254
+ selector: 'modus-wc-select',
1255
+ changeDetection: ChangeDetectionStrategy.OnPush,
1256
+ template: '<ng-content></ng-content>',
1257
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1258
+ inputs: ['bordered', 'customClass', 'disabled', 'feedback', 'inputId', 'inputTabIndex', 'label', 'name', 'options', 'required', 'size', 'value'],
1259
+ outputs: ['inputBlur', 'inputChange', 'inputFocus'],
1260
+ standalone: false
1261
+ }]
1262
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { inputBlur: [{
1263
+ type: Output
1264
+ }], inputChange: [{
1265
+ type: Output
1266
+ }], inputFocus: [{
1267
+ type: Output
1268
+ }] } });
1269
+ let ModusWcSideNavigation = class ModusWcSideNavigation {
1270
+ constructor(c, r, z) {
1271
+ this.z = z;
1272
+ this.expandedChange = new EventEmitter();
1273
+ c.detach();
1274
+ this.el = r.nativeElement;
1275
+ }
1276
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSideNavigation, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1277
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcSideNavigation, selector: "modus-wc-side-navigation", inputs: { collapseOnClickOutside: "collapseOnClickOutside", customClass: "customClass", expanded: "expanded", maxWidth: "maxWidth", mode: "mode", targetContent: "targetContent" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1278
+ };
1279
+ ModusWcSideNavigation = __decorate([
1280
+ ProxyCmp({
1281
+ inputs: ['collapseOnClickOutside', 'customClass', 'expanded', 'maxWidth', 'mode', 'targetContent']
1282
+ })
1283
+ ], ModusWcSideNavigation);
1284
+ export { ModusWcSideNavigation };
1285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSideNavigation, decorators: [{
1286
+ type: Component,
1287
+ args: [{
1288
+ selector: 'modus-wc-side-navigation',
1289
+ changeDetection: ChangeDetectionStrategy.OnPush,
1290
+ template: '<ng-content></ng-content>',
1291
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1292
+ inputs: ['collapseOnClickOutside', 'customClass', 'expanded', 'maxWidth', 'mode', 'targetContent'],
1293
+ outputs: ['expandedChange'],
1294
+ standalone: false
1295
+ }]
1296
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { expandedChange: [{
1297
+ type: Output
1298
+ }] } });
1299
+ let ModusWcSkeleton = class ModusWcSkeleton {
1300
+ constructor(c, r, z) {
1301
+ this.z = z;
1302
+ c.detach();
1303
+ this.el = r.nativeElement;
1304
+ }
1305
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSkeleton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1306
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcSkeleton, selector: "modus-wc-skeleton", inputs: { customClass: "customClass", height: "height", shape: "shape", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1307
+ };
1308
+ ModusWcSkeleton = __decorate([
1309
+ ProxyCmp({
1310
+ inputs: ['customClass', 'height', 'shape', 'width']
1311
+ })
1312
+ ], ModusWcSkeleton);
1313
+ export { ModusWcSkeleton };
1314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSkeleton, decorators: [{
1315
+ type: Component,
1316
+ args: [{
1317
+ selector: 'modus-wc-skeleton',
1318
+ changeDetection: ChangeDetectionStrategy.OnPush,
1319
+ template: '<ng-content></ng-content>',
1320
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1321
+ inputs: ['customClass', 'height', 'shape', 'width'],
1322
+ standalone: false
1323
+ }]
1324
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1325
+ let ModusWcSlider = class ModusWcSlider {
1326
+ constructor(c, r, z) {
1327
+ this.z = z;
1328
+ this.inputBlur = new EventEmitter();
1329
+ this.inputChange = new EventEmitter();
1330
+ this.inputFocus = new EventEmitter();
1331
+ c.detach();
1332
+ this.el = r.nativeElement;
1333
+ }
1334
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSlider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1335
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcSlider, selector: "modus-wc-slider", inputs: { customClass: "customClass", disabled: "disabled", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", required: "required", size: "size", step: "step", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1336
+ };
1337
+ ModusWcSlider = __decorate([
1338
+ ProxyCmp({
1339
+ inputs: ['customClass', 'disabled', 'inputId', 'inputTabIndex', 'label', 'max', 'min', 'name', 'required', 'size', 'step', 'value']
1340
+ })
1341
+ ], ModusWcSlider);
1342
+ export { ModusWcSlider };
1343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSlider, decorators: [{
1344
+ type: Component,
1345
+ args: [{
1346
+ selector: 'modus-wc-slider',
1347
+ changeDetection: ChangeDetectionStrategy.OnPush,
1348
+ template: '<ng-content></ng-content>',
1349
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1350
+ inputs: ['customClass', 'disabled', 'inputId', 'inputTabIndex', 'label', 'max', 'min', 'name', 'required', 'size', 'step', 'value'],
1351
+ outputs: ['inputBlur', 'inputChange', 'inputFocus'],
1352
+ standalone: false
1353
+ }]
1354
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { inputBlur: [{
1355
+ type: Output
1356
+ }], inputChange: [{
1357
+ type: Output
1358
+ }], inputFocus: [{
1359
+ type: Output
1360
+ }] } });
1361
+ let ModusWcStepper = class ModusWcStepper {
1362
+ constructor(c, r, z) {
1363
+ this.z = z;
1364
+ this.stepClick = new EventEmitter();
1365
+ c.detach();
1366
+ this.el = r.nativeElement;
1367
+ }
1368
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcStepper, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1369
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcStepper, selector: "modus-wc-stepper", inputs: { customClass: "customClass", interactive: "interactive", orientation: "orientation", steps: "steps" }, outputs: { stepClick: "stepClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1370
+ };
1371
+ ModusWcStepper = __decorate([
1372
+ ProxyCmp({
1373
+ inputs: ['customClass', 'interactive', 'orientation', 'steps']
1374
+ })
1375
+ ], ModusWcStepper);
1376
+ export { ModusWcStepper };
1377
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcStepper, decorators: [{
1378
+ type: Component,
1379
+ args: [{
1380
+ selector: 'modus-wc-stepper',
1381
+ changeDetection: ChangeDetectionStrategy.OnPush,
1382
+ template: '<ng-content></ng-content>',
1383
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1384
+ inputs: ['customClass', 'interactive', 'orientation', 'steps'],
1385
+ outputs: ['stepClick'],
1386
+ standalone: false
1387
+ }]
1388
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { stepClick: [{
1389
+ type: Output
1390
+ }] } });
1391
+ let ModusWcSwitch = class ModusWcSwitch {
1392
+ constructor(c, r, z) {
1393
+ this.z = z;
1394
+ this.inputBlur = new EventEmitter();
1395
+ this.inputChange = new EventEmitter();
1396
+ this.inputFocus = new EventEmitter();
1397
+ c.detach();
1398
+ this.el = r.nativeElement;
1399
+ }
1400
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSwitch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1401
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcSwitch, selector: "modus-wc-switch", inputs: { customClass: "customClass", disabled: "disabled", indeterminate: "indeterminate", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", name: "name", required: "required", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1402
+ };
1403
+ ModusWcSwitch = __decorate([
1404
+ ProxyCmp({
1405
+ inputs: ['customClass', 'disabled', 'indeterminate', 'inputId', 'inputTabIndex', 'label', 'name', 'required', 'size', 'value']
1406
+ })
1407
+ ], ModusWcSwitch);
1408
+ export { ModusWcSwitch };
1409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcSwitch, decorators: [{
1410
+ type: Component,
1411
+ args: [{
1412
+ selector: 'modus-wc-switch',
1413
+ changeDetection: ChangeDetectionStrategy.OnPush,
1414
+ template: '<ng-content></ng-content>',
1415
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1416
+ inputs: ['customClass', 'disabled', 'indeterminate', 'inputId', 'inputTabIndex', 'label', 'name', 'required', 'size', 'value'],
1417
+ outputs: ['inputBlur', 'inputChange', 'inputFocus'],
1418
+ standalone: false
1419
+ }]
1420
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { inputBlur: [{
1421
+ type: Output
1422
+ }], inputChange: [{
1423
+ type: Output
1424
+ }], inputFocus: [{
1425
+ type: Output
1426
+ }] } });
1427
+ let ModusWcTable = class ModusWcTable {
1428
+ constructor(c, r, z) {
1429
+ this.z = z;
1430
+ this.cellEditStart = new EventEmitter();
1431
+ this.cellEditCommit = new EventEmitter();
1432
+ this.rowClick = new EventEmitter();
1433
+ this.sortChange = new EventEmitter();
1434
+ this.paginationChange = new EventEmitter();
1435
+ this.rowSelectionChange = new EventEmitter();
1436
+ c.detach();
1437
+ this.el = r.nativeElement;
1438
+ }
1439
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTable, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1440
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTable, selector: "modus-wc-table", inputs: { caption: "caption", columns: "columns", currentPage: "currentPage", customClass: "customClass", data: "data", density: "density", editable: "editable", hover: "hover", isRowSelectable: "isRowSelectable", pageSizeOptions: "pageSizeOptions", paginated: "paginated", selectable: "selectable", selectedRowIds: "selectedRowIds", showPageSizeSelector: "showPageSizeSelector", sortable: "sortable", zebra: "zebra" }, outputs: { cellEditStart: "cellEditStart", cellEditCommit: "cellEditCommit", rowClick: "rowClick", sortChange: "sortChange", paginationChange: "paginationChange", rowSelectionChange: "rowSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1441
+ };
1442
+ ModusWcTable = __decorate([
1443
+ ProxyCmp({
1444
+ inputs: ['caption', 'columns', 'currentPage', 'customClass', 'data', 'density', 'editable', 'hover', 'isRowSelectable', 'pageSizeOptions', 'paginated', 'selectable', 'selectedRowIds', 'showPageSizeSelector', 'sortable', 'zebra']
1445
+ })
1446
+ ], ModusWcTable);
1447
+ export { ModusWcTable };
1448
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTable, decorators: [{
1449
+ type: Component,
1450
+ args: [{
1451
+ selector: 'modus-wc-table',
1452
+ changeDetection: ChangeDetectionStrategy.OnPush,
1453
+ template: '<ng-content></ng-content>',
1454
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1455
+ inputs: ['caption', { name: 'columns', required: true }, 'currentPage', 'customClass', { name: 'data', required: true }, 'density', 'editable', 'hover', 'isRowSelectable', 'pageSizeOptions', 'paginated', 'selectable', 'selectedRowIds', 'showPageSizeSelector', 'sortable', 'zebra'],
1456
+ outputs: ['cellEditStart', 'cellEditCommit', 'rowClick', 'sortChange', 'paginationChange', 'rowSelectionChange'],
1457
+ standalone: false
1458
+ }]
1459
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { cellEditStart: [{
1460
+ type: Output
1461
+ }], cellEditCommit: [{
1462
+ type: Output
1463
+ }], rowClick: [{
1464
+ type: Output
1465
+ }], sortChange: [{
1466
+ type: Output
1467
+ }], paginationChange: [{
1468
+ type: Output
1469
+ }], rowSelectionChange: [{
1470
+ type: Output
1471
+ }] } });
1472
+ let ModusWcTabs = class ModusWcTabs {
1473
+ constructor(c, r, z) {
1474
+ this.z = z;
1475
+ this.tabChange = new EventEmitter();
1476
+ c.detach();
1477
+ this.el = r.nativeElement;
1478
+ }
1479
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTabs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1480
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTabs, selector: "modus-wc-tabs", inputs: { activeTabIndex: "activeTabIndex", customClass: "customClass", size: "size", tabStyle: "tabStyle", tabs: "tabs" }, outputs: { tabChange: "tabChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1481
+ };
1482
+ ModusWcTabs = __decorate([
1483
+ ProxyCmp({
1484
+ inputs: ['activeTabIndex', 'customClass', 'size', 'tabStyle', 'tabs']
1485
+ })
1486
+ ], ModusWcTabs);
1487
+ export { ModusWcTabs };
1488
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTabs, decorators: [{
1489
+ type: Component,
1490
+ args: [{
1491
+ selector: 'modus-wc-tabs',
1492
+ changeDetection: ChangeDetectionStrategy.OnPush,
1493
+ template: '<ng-content></ng-content>',
1494
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1495
+ inputs: ['activeTabIndex', 'customClass', 'size', 'tabStyle', 'tabs'],
1496
+ outputs: ['tabChange'],
1497
+ standalone: false
1498
+ }]
1499
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { tabChange: [{
1500
+ type: Output
1501
+ }] } });
1502
+ let ModusWcTextInput = class ModusWcTextInput {
1503
+ constructor(c, r, z) {
1504
+ this.z = z;
1505
+ this.clearClick = new EventEmitter();
1506
+ this.inputBlur = new EventEmitter();
1507
+ this.inputChange = new EventEmitter();
1508
+ this.inputFocus = new EventEmitter();
1509
+ c.detach();
1510
+ this.el = r.nativeElement;
1511
+ }
1512
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTextInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1513
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTextInput, selector: "modus-wc-text-input", inputs: { autoCapitalize: "autoCapitalize", autoComplete: "autoComplete", autoCorrect: "autoCorrect", bordered: "bordered", clearAriaLabel: "clearAriaLabel", customClass: "customClass", disabled: "disabled", enterkeyhint: "enterkeyhint", feedback: "feedback", includeClear: "includeClear", includeSearch: "includeSearch", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", maxLength: "maxLength", minLength: "minLength", name: "name", pattern: "pattern", placeholder: "placeholder", readOnly: "readOnly", required: "required", size: "size", type: "type", value: "value" }, outputs: { clearClick: "clearClick", inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1514
+ };
1515
+ ModusWcTextInput = __decorate([
1516
+ ProxyCmp({
1517
+ inputs: ['autoCapitalize', 'autoComplete', 'autoCorrect', 'bordered', 'clearAriaLabel', 'customClass', 'disabled', 'enterkeyhint', 'feedback', 'includeClear', 'includeSearch', 'inputId', 'inputTabIndex', 'label', 'maxLength', 'minLength', 'name', 'pattern', 'placeholder', 'readOnly', 'required', 'size', 'type', 'value']
1518
+ })
1519
+ ], ModusWcTextInput);
1520
+ export { ModusWcTextInput };
1521
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTextInput, decorators: [{
1522
+ type: Component,
1523
+ args: [{
1524
+ selector: 'modus-wc-text-input',
1525
+ changeDetection: ChangeDetectionStrategy.OnPush,
1526
+ template: '<ng-content></ng-content>',
1527
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1528
+ inputs: ['autoCapitalize', 'autoComplete', 'autoCorrect', 'bordered', 'clearAriaLabel', 'customClass', 'disabled', 'enterkeyhint', 'feedback', 'includeClear', 'includeSearch', 'inputId', 'inputTabIndex', 'label', 'maxLength', 'minLength', 'name', 'pattern', 'placeholder', 'readOnly', 'required', 'size', 'type', 'value'],
1529
+ outputs: ['clearClick', 'inputBlur', 'inputChange', 'inputFocus'],
1530
+ standalone: false
1531
+ }]
1532
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { clearClick: [{
1533
+ type: Output
1534
+ }], inputBlur: [{
1535
+ type: Output
1536
+ }], inputChange: [{
1537
+ type: Output
1538
+ }], inputFocus: [{
1539
+ type: Output
1540
+ }] } });
1541
+ let ModusWcTextarea = class ModusWcTextarea {
1542
+ constructor(c, r, z) {
1543
+ this.z = z;
1544
+ this.inputBlur = new EventEmitter();
1545
+ this.inputChange = new EventEmitter();
1546
+ this.inputFocus = new EventEmitter();
1547
+ c.detach();
1548
+ this.el = r.nativeElement;
1549
+ }
1550
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTextarea, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1551
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTextarea, selector: "modus-wc-textarea", inputs: { autoCorrect: "autoCorrect", bordered: "bordered", customClass: "customClass", disabled: "disabled", enterkeyhint: "enterkeyhint", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", maxLength: "maxLength", minLength: "minLength", name: "name", placeholder: "placeholder", readonly: "readonly", required: "required", rows: "rows", size: "size", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1552
+ };
1553
+ ModusWcTextarea = __decorate([
1554
+ ProxyCmp({
1555
+ inputs: ['autoCorrect', 'bordered', 'customClass', 'disabled', 'enterkeyhint', 'feedback', 'inputId', 'inputTabIndex', 'label', 'maxLength', 'minLength', 'name', 'placeholder', 'readonly', 'required', 'rows', 'size', 'value']
1556
+ })
1557
+ ], ModusWcTextarea);
1558
+ export { ModusWcTextarea };
1559
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTextarea, decorators: [{
1560
+ type: Component,
1561
+ args: [{
1562
+ selector: 'modus-wc-textarea',
1563
+ changeDetection: ChangeDetectionStrategy.OnPush,
1564
+ template: '<ng-content></ng-content>',
1565
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1566
+ inputs: ['autoCorrect', 'bordered', 'customClass', 'disabled', 'enterkeyhint', 'feedback', 'inputId', 'inputTabIndex', 'label', 'maxLength', 'minLength', 'name', 'placeholder', 'readonly', 'required', 'rows', 'size', 'value'],
1567
+ outputs: ['inputBlur', 'inputChange', 'inputFocus'],
1568
+ standalone: false
1569
+ }]
1570
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { inputBlur: [{
1571
+ type: Output
1572
+ }], inputChange: [{
1573
+ type: Output
1574
+ }], inputFocus: [{
1575
+ type: Output
1576
+ }] } });
1577
+ let ModusWcThemeProvider = class ModusWcThemeProvider {
1578
+ constructor(c, r, z) {
1579
+ this.z = z;
1580
+ c.detach();
1581
+ this.el = r.nativeElement;
1582
+ }
1583
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcThemeProvider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1584
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcThemeProvider, selector: "modus-wc-theme-provider", inputs: { initialTheme: "initialTheme" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1585
+ };
1586
+ ModusWcThemeProvider = __decorate([
1587
+ ProxyCmp({
1588
+ inputs: ['initialTheme']
1589
+ })
1590
+ ], ModusWcThemeProvider);
1591
+ export { ModusWcThemeProvider };
1592
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcThemeProvider, decorators: [{
1593
+ type: Component,
1594
+ args: [{
1595
+ selector: 'modus-wc-theme-provider',
1596
+ changeDetection: ChangeDetectionStrategy.OnPush,
1597
+ template: '<ng-content></ng-content>',
1598
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1599
+ inputs: ['initialTheme'],
1600
+ standalone: false
1601
+ }]
1602
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1603
+ let ModusWcThemeSwitcher = class ModusWcThemeSwitcher {
1604
+ constructor(c, r, z) {
1605
+ this.z = z;
1606
+ this.themeChange = new EventEmitter();
1607
+ c.detach();
1608
+ this.el = r.nativeElement;
1609
+ }
1610
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcThemeSwitcher, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1611
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcThemeSwitcher, selector: "modus-wc-theme-switcher", inputs: { customClass: "customClass" }, outputs: { themeChange: "themeChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1612
+ };
1613
+ ModusWcThemeSwitcher = __decorate([
1614
+ ProxyCmp({
1615
+ inputs: ['customClass']
1616
+ })
1617
+ ], ModusWcThemeSwitcher);
1618
+ export { ModusWcThemeSwitcher };
1619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcThemeSwitcher, decorators: [{
1620
+ type: Component,
1621
+ args: [{
1622
+ selector: 'modus-wc-theme-switcher',
1623
+ changeDetection: ChangeDetectionStrategy.OnPush,
1624
+ template: '<ng-content></ng-content>',
1625
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1626
+ inputs: ['customClass'],
1627
+ outputs: ['themeChange'],
1628
+ standalone: false
1629
+ }]
1630
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { themeChange: [{
1631
+ type: Output
1632
+ }] } });
1633
+ let ModusWcTimeInput = class ModusWcTimeInput {
1634
+ constructor(c, r, z) {
1635
+ this.z = z;
1636
+ this.inputBlur = new EventEmitter();
1637
+ this.inputChange = new EventEmitter();
1638
+ this.inputFocus = new EventEmitter();
1639
+ c.detach();
1640
+ this.el = r.nativeElement;
1641
+ }
1642
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTimeInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1643
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTimeInput, selector: "modus-wc-time-input", inputs: { autoComplete: "autoComplete", bordered: "bordered", customClass: "customClass", datalistId: "datalistId", datalistOptions: "datalistOptions", disabled: "disabled", feedback: "feedback", inputId: "inputId", inputTabIndex: "inputTabIndex", label: "label", max: "max", min: "min", name: "name", readOnly: "readOnly", required: "required", showSeconds: "showSeconds", size: "size", step: "step", value: "value" }, outputs: { inputBlur: "inputBlur", inputChange: "inputChange", inputFocus: "inputFocus" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1644
+ };
1645
+ ModusWcTimeInput = __decorate([
1646
+ ProxyCmp({
1647
+ inputs: ['autoComplete', 'bordered', 'customClass', 'datalistId', 'datalistOptions', 'disabled', 'feedback', 'inputId', 'inputTabIndex', 'label', 'max', 'min', 'name', 'readOnly', 'required', 'showSeconds', 'size', 'step', 'value']
1648
+ })
1649
+ ], ModusWcTimeInput);
1650
+ export { ModusWcTimeInput };
1651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTimeInput, decorators: [{
1652
+ type: Component,
1653
+ args: [{
1654
+ selector: 'modus-wc-time-input',
1655
+ changeDetection: ChangeDetectionStrategy.OnPush,
1656
+ template: '<ng-content></ng-content>',
1657
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1658
+ inputs: ['autoComplete', 'bordered', 'customClass', 'datalistId', 'datalistOptions', 'disabled', 'feedback', 'inputId', 'inputTabIndex', 'label', 'max', 'min', 'name', 'readOnly', 'required', 'showSeconds', 'size', 'step', 'value'],
1659
+ outputs: ['inputBlur', 'inputChange', 'inputFocus'],
1660
+ standalone: false
1661
+ }]
1662
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { inputBlur: [{
1663
+ type: Output
1664
+ }], inputChange: [{
1665
+ type: Output
1666
+ }], inputFocus: [{
1667
+ type: Output
1668
+ }] } });
1669
+ let ModusWcToast = class ModusWcToast {
1670
+ constructor(c, r, z) {
1671
+ this.z = z;
1672
+ c.detach();
1673
+ this.el = r.nativeElement;
1674
+ }
1675
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcToast, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1676
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcToast, selector: "modus-wc-toast", inputs: { customClass: "customClass", delay: "delay", position: "position" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1677
+ };
1678
+ ModusWcToast = __decorate([
1679
+ ProxyCmp({
1680
+ inputs: ['customClass', 'delay', 'position']
1681
+ })
1682
+ ], ModusWcToast);
1683
+ export { ModusWcToast };
1684
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcToast, decorators: [{
1685
+ type: Component,
1686
+ args: [{
1687
+ selector: 'modus-wc-toast',
1688
+ changeDetection: ChangeDetectionStrategy.OnPush,
1689
+ template: '<ng-content></ng-content>',
1690
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1691
+ inputs: ['customClass', 'delay', 'position'],
1692
+ standalone: false
1693
+ }]
1694
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1695
+ let ModusWcToolbar = class ModusWcToolbar {
1696
+ constructor(c, r, z) {
1697
+ this.z = z;
1698
+ c.detach();
1699
+ this.el = r.nativeElement;
1700
+ }
1701
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcToolbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1702
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcToolbar, selector: "modus-wc-toolbar", inputs: { customClass: "customClass" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1703
+ };
1704
+ ModusWcToolbar = __decorate([
1705
+ ProxyCmp({
1706
+ inputs: ['customClass']
1707
+ })
1708
+ ], ModusWcToolbar);
1709
+ export { ModusWcToolbar };
1710
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcToolbar, decorators: [{
1711
+ type: Component,
1712
+ args: [{
1713
+ selector: 'modus-wc-toolbar',
1714
+ changeDetection: ChangeDetectionStrategy.OnPush,
1715
+ template: '<ng-content></ng-content>',
1716
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1717
+ inputs: ['customClass'],
1718
+ standalone: false
1719
+ }]
1720
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1721
+ let ModusWcTooltip = class ModusWcTooltip {
1722
+ constructor(c, r, z) {
1723
+ this.z = z;
1724
+ this.dismissEscape = new EventEmitter();
1725
+ c.detach();
1726
+ this.el = r.nativeElement;
1727
+ }
1728
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTooltip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1729
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTooltip, selector: "modus-wc-tooltip", inputs: { content: "content", contentElement: "contentElement", customClass: "customClass", disabled: "disabled", forceOpen: "forceOpen", position: "position", tooltipId: "tooltipId" }, outputs: { dismissEscape: "dismissEscape" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1730
+ };
1731
+ ModusWcTooltip = __decorate([
1732
+ ProxyCmp({
1733
+ inputs: ['content', 'contentElement', 'customClass', 'disabled', 'forceOpen', 'position', 'tooltipId']
1734
+ })
1735
+ ], ModusWcTooltip);
1736
+ export { ModusWcTooltip };
1737
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTooltip, decorators: [{
1738
+ type: Component,
1739
+ args: [{
1740
+ selector: 'modus-wc-tooltip',
1741
+ changeDetection: ChangeDetectionStrategy.OnPush,
1742
+ template: '<ng-content></ng-content>',
1743
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1744
+ inputs: ['content', 'contentElement', 'customClass', 'disabled', 'forceOpen', 'position', 'tooltipId'],
1745
+ outputs: ['dismissEscape'],
1746
+ standalone: false
1747
+ }]
1748
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dismissEscape: [{
1749
+ type: Output
1750
+ }] } });
1751
+ let ModusWcTreeItem = class ModusWcTreeItem {
1752
+ constructor(c, r, z) {
1753
+ this.z = z;
1754
+ this.itemSelect = new EventEmitter();
1755
+ c.detach();
1756
+ this.el = r.nativeElement;
1757
+ }
1758
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTreeItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1759
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTreeItem, selector: "modus-wc-tree-item", inputs: { blockExpand: "blockExpand", bordered: "bordered", checkbox: "checkbox", customClass: "customClass", disabled: "disabled", focused: "focused", hasSubmenu: "hasSubmenu", label: "label", selected: "selected", size: "size", subLabel: "subLabel", tooltipContent: "tooltipContent", tooltipPosition: "tooltipPosition", value: "value" }, outputs: { itemSelect: "itemSelect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1760
+ };
1761
+ ModusWcTreeItem = __decorate([
1762
+ ProxyCmp({
1763
+ inputs: ['blockExpand', 'bordered', 'checkbox', 'customClass', 'disabled', 'focused', 'hasSubmenu', 'label', 'selected', 'size', 'subLabel', 'tooltipContent', 'tooltipPosition', 'value'],
1764
+ methods: ['collapseSubmenu']
1765
+ })
1766
+ ], ModusWcTreeItem);
1767
+ export { ModusWcTreeItem };
1768
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTreeItem, decorators: [{
1769
+ type: Component,
1770
+ args: [{
1771
+ selector: 'modus-wc-tree-item',
1772
+ changeDetection: ChangeDetectionStrategy.OnPush,
1773
+ template: '<ng-content></ng-content>',
1774
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1775
+ inputs: ['blockExpand', 'bordered', 'checkbox', 'customClass', 'disabled', 'focused', 'hasSubmenu', 'label', 'selected', 'size', 'subLabel', 'tooltipContent', 'tooltipPosition', 'value'],
1776
+ outputs: ['itemSelect'],
1777
+ standalone: false
1778
+ }]
1779
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { itemSelect: [{
1780
+ type: Output
1781
+ }] } });
1782
+ let ModusWcTreeMenu = class ModusWcTreeMenu {
1783
+ constructor(c, r, z) {
1784
+ this.z = z;
1785
+ this.menuFocusout = new EventEmitter();
1786
+ this.menuSelectionChange = new EventEmitter();
1787
+ c.detach();
1788
+ this.el = r.nativeElement;
1789
+ }
1790
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTreeMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1791
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTreeMenu, selector: "modus-wc-tree-menu", inputs: { bordered: "bordered", customClass: "customClass", isSubMenu: "isSubMenu", orientation: "orientation", selectionMode: "selectionMode", size: "size" }, outputs: { menuFocusout: "menuFocusout", menuSelectionChange: "menuSelectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1792
+ };
1793
+ ModusWcTreeMenu = __decorate([
1794
+ ProxyCmp({
1795
+ inputs: ['bordered', 'customClass', 'isSubMenu', 'orientation', 'selectionMode', 'size']
1796
+ })
1797
+ ], ModusWcTreeMenu);
1798
+ export { ModusWcTreeMenu };
1799
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTreeMenu, decorators: [{
1800
+ type: Component,
1801
+ args: [{
1802
+ selector: 'modus-wc-tree-menu',
1803
+ changeDetection: ChangeDetectionStrategy.OnPush,
1804
+ template: '<ng-content></ng-content>',
1805
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1806
+ inputs: ['bordered', 'customClass', 'isSubMenu', 'orientation', 'selectionMode', 'size'],
1807
+ outputs: ['menuFocusout', 'menuSelectionChange'],
1808
+ standalone: false
1809
+ }]
1810
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { menuFocusout: [{
1811
+ type: Output
1812
+ }], menuSelectionChange: [{
1813
+ type: Output
1814
+ }] } });
1815
+ let ModusWcTypography = class ModusWcTypography {
1816
+ constructor(c, r, z) {
1817
+ this.z = z;
1818
+ c.detach();
1819
+ this.el = r.nativeElement;
1820
+ }
1821
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTypography, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1822
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcTypography, selector: "modus-wc-typography", inputs: { customClass: "customClass", hierarchy: "hierarchy", label: "label", size: "size", weight: "weight" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1823
+ };
1824
+ ModusWcTypography = __decorate([
1825
+ ProxyCmp({
1826
+ inputs: ['customClass', 'hierarchy', 'label', 'size', 'weight']
1827
+ })
1828
+ ], ModusWcTypography);
1829
+ export { ModusWcTypography };
1830
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcTypography, decorators: [{
1831
+ type: Component,
1832
+ args: [{
1833
+ selector: 'modus-wc-typography',
1834
+ changeDetection: ChangeDetectionStrategy.OnPush,
1835
+ template: '<ng-content></ng-content>',
1836
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1837
+ inputs: ['customClass', 'hierarchy', { name: 'label', required: true }, 'size', 'weight'],
1838
+ standalone: false
1839
+ }]
1840
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1841
+ let ModusWcUtilityPanel = class ModusWcUtilityPanel {
1842
+ constructor(c, r, z) {
1843
+ this.z = z;
1844
+ this.panelOpened = new EventEmitter();
1845
+ this.panelClosed = new EventEmitter();
1846
+ c.detach();
1847
+ this.el = r.nativeElement;
1848
+ }
1849
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcUtilityPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1850
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModusWcUtilityPanel, selector: "modus-wc-utility-panel", inputs: { customClass: "customClass", expanded: "expanded", pushContent: "pushContent", targetElement: "targetElement" }, outputs: { panelOpened: "panelOpened", panelClosed: "panelClosed" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1851
+ };
1852
+ ModusWcUtilityPanel = __decorate([
1853
+ ProxyCmp({
1854
+ inputs: ['customClass', 'expanded', 'pushContent', 'targetElement']
1855
+ })
1856
+ ], ModusWcUtilityPanel);
1857
+ export { ModusWcUtilityPanel };
1858
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModusWcUtilityPanel, decorators: [{
1859
+ type: Component,
1860
+ args: [{
1861
+ selector: 'modus-wc-utility-panel',
1862
+ changeDetection: ChangeDetectionStrategy.OnPush,
1863
+ template: '<ng-content></ng-content>',
1864
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1865
+ inputs: ['customClass', 'expanded', 'pushContent', 'targetElement'],
1866
+ outputs: ['panelOpened', 'panelClosed'],
1867
+ standalone: false
1868
+ }]
1869
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { panelOpened: [{
1870
+ type: Output
1871
+ }], panelClosed: [{
1872
+ type: Output
1873
+ }] } });
1874
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cy1hbmd1bGFyL3NyYy9saWIvc3RlbmNpbC1nZW5lcmF0ZWQvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0JBQW9CO0FBQ3BCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWhJLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFpQmxELElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBRzNCLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFEMUQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBc0UsQ0FBQztRQUVoSCxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQzsrR0FOVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixpSkFOakIsMkJBQTJCOztBQU0xQixnQkFBZ0I7SUFaNUIsUUFBUSxDQUFDO1FBQ1IsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDO0tBQ3hCLENBQUM7R0FVVyxnQkFBZ0IsQ0FPNUI7OzRGQVBZLGdCQUFnQjtrQkFUNUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsdUVBQXVFO29CQUN2RSxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixVQUFVLEVB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TSIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBhdXRvLWdlbmVyYXRlZCBhbmd1bGFyIGRpcmVjdGl2ZSBwcm94aWVzICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQcm94eUNtcCB9IGZyb20gJy4vYW5ndWxhci1jb21wb25lbnQtbGliL3V0aWxzJztcblxuaW1wb3J0IHsgQ29tcG9uZW50cyB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYWNjb3JkaW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcyddLFxuICBvdXRwdXRzOiBbJ2V4cGFuZGVkQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NBY2NvcmRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQWNjb3JkaW9uRWxlbWVudDtcbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQWNjb3JkaW9uQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbjsgaW5kZXg6IG51bWJlcjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQWNjb3JkaW9uQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NBY2NvcmRpb24gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NBY2NvcmRpb24ge1xuICAvKipcbiAgICogV2hlbiBhIGNvbGxhcHNlIGV4cGFuZGVkIHN0YXRlIGlzIGNoYW5nZWQsIHRoaXMgZXZlbnQgb3V0cHV0cyB0aGUgcmVsZXZhbnQgaW5kZXggYW5kIHN0YXRlXG4gICAqL1xuICBleHBhbmRlZENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NBY2NvcmRpb25DdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuOyBpbmRleDogbnVtYmVyOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FsZXJ0RGVzY3JpcHRpb24nLCAnYWxlcnRUaXRsZScsICdjdXN0b21DbGFzcycsICdkZWxheScsICdkaXNhYmxlSWNvbicsICdkaXNtaXNzaWJsZScsICdpY29uJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWFsZXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbGVydERlc2NyaXB0aW9uJywgeyBuYW1lOiAnYWxlcnRUaXRsZScsIHJlcXVpcmVkOiB0cnVlIH0sICdjdXN0b21DbGFzcycsICdkZWxheScsICdkaXNhYmxlSWNvbicsICdkaXNtaXNzaWJsZScsICdpY29uJywgJ3ZhcmlhbnQnXSxcbiAgb3V0cHV0czogWydkaXNtaXNzQ2xpY2snXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0FsZXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0FsZXJ0RWxlbWVudDtcbiAgQE91dHB1dCgpIGRpc21pc3NDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0FsZXJ0Q3VzdG9tRXZlbnQ8YW55Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NBbGVydEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQWxlcnQgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NBbGVydCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCB0aGF0IGZpcmVzIHdoZW4gdGhlIGFsZXJ0IGlzIGRpc21pc3NlZFxuICAgKi9cbiAgZGlzbWlzc0NsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0FsZXJ0Q3VzdG9tRXZlbnQ8YW55Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FwcHMnLCAnY3VzdG9tQ2xhc3MnLCAnbGF5b3V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1hcHAtbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXBwcycsICdjdXN0b21DbGFzcycsICdsYXlvdXQnXSxcbiAgb3V0cHV0czogWydsYXlvdXRDaGFuZ2UnLCAnaXRlbXNPcmRlckNoYW5nZScsICdpdGVtQ2xpY2snXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0FwcE1lbnUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQXBwTWVudUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBsYXlvdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBcHBNZW51Q3VzdG9tRXZlbnQ8eyBsYXlvdXQ6ICdsaXN0JyB8ICdncmlkJzsgfT4+KCk7XG4gIEBPdXRwdXQoKSBpdGVtc09yZGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXBwTWVudUN1c3RvbUV2ZW50PElNb2R1c1djQXBwTWVudUlBcHBNZW51SXRlbVtdPj4oKTtcbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0FwcE1lbnVDdXN0b21FdmVudDx7IGFwcE5hbWU6IElNb2R1c1djQXBwTWVudUFwcE5hbWUgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQXBwTWVudUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IElBcHBNZW51SXRlbSBhcyBJTW9kdXNXY0FwcE1lbnVJQXBwTWVudUl0ZW0gfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgQXBwTmFtZSBhcyBJTW9kdXNXY0FwcE1lbnVBcHBOYW1lIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQXBwTWVudSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0FwcE1lbnUge1xuICAvKipcbiAgICogRW1pdCBldmVudCB3aGVuIHRoZSBsYXlvdXQgY2hhbmdlc1xuICAgKi9cbiAgbGF5b3V0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0FwcE1lbnVDdXN0b21FdmVudDx7IGxheW91dDogJ2xpc3QnIHwgJ2dyaWQnOyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gcmVvcmRlcmluZyBpcyBjb25maXJtZWQgdmlhIFwiRG9uZVwiIGFuZCB0aGUgb3JkZXIgZGlmZmVycyBmcm9tIHdoZW4gZWRpdCBzdGFydGVkXG4gICAqL1xuICBpdGVtc09yZGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0FwcE1lbnVDdXN0b21FdmVudDxJTW9kdXNXY0FwcE1lbnVJQXBwTWVudUl0ZW1bXT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgY2xpY2tlZFxuICAgKi9cbiAgaXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0FwcE1lbnVDdXN0b21FdmVudDx7IGFwcE5hbWU6IElNb2R1c1djQXBwTWVudUFwcE5hbWUgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvQ29tcGxldGUnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQmx1cicsICdjdXN0b21DbGFzcycsICdjdXN0b21JbnB1dENoYW5nZScsICdjdXN0b21JdGVtU2VsZWN0JywgJ2N1c3RvbUtleURvd24nLCAnZGVib3VuY2VNcycsICdkaXNhYmxlZCcsICdmZWVkYmFjaycsICdpbmNsdWRlQ2xlYXInLCAnaW5jbHVkZVNlYXJjaCcsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnaXRlbXMnLCAnbGFiZWwnLCAnbGVhdmVNZW51T3BlbicsICdtYXhDaGlwcycsICdtaW5DaGFycycsICdtaW5JbnB1dFdpZHRoJywgJ211bHRpU2VsZWN0JywgJ25hbWUnLCAnbm9SZXN1bHRzJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dNZW51T25Gb2N1cycsICdzaG93U3Bpbm5lcicsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnc2VsZWN0SXRlbScsICdvcGVuTWVudScsICdjbG9zZU1lbnUnLCAndG9nZ2xlTWVudScsICdmb2N1c0lucHV0JywgJ2NsZWFySW5wdXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWF1dG9jb21wbGV0ZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0NvbXBsZXRlJywgJ2JvcmRlcmVkJywgJ2N1c3RvbUJsdXInLCAnY3VzdG9tQ2xhc3MnLCAnY3VzdG9tSW5wdXRDaGFuZ2UnLCAnY3VzdG9tSXRlbVNlbGVjdCcsICdjdXN0b21LZXlEb3duJywgJ2RlYm91bmNlTXMnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnaW5jbHVkZUNsZWFyJywgJ2luY2x1ZGVTZWFyY2gnLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2l0ZW1zJywgJ2xhYmVsJywgJ2xlYXZlTWVudU9wZW4nLCAnbWF4Q2hpcHMnLCAnbWluQ2hhcnMnLCAnbWluSW5wdXRXaWR0aCcsICdtdWx0aVNlbGVjdCcsICduYW1lJywgJ25vUmVzdWx0cycsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93TWVudU9uRm9jdXMnLCAnc2hvd1NwaW5uZXInLCAnc2l6ZScsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2NoaXBSZW1vdmUnLCAnY2hpcHNFeHBhbnNpb25DaGFuZ2UnLCAnY2xlYXJDbGljaycsICdpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cycsICdpdGVtU2VsZWN0J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NBdXRvY29tcGxldGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQXV0b2NvbXBsZXRlRWxlbWVudDtcbiAgQE91dHB1dCgpIGNoaXBSZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxJTW9kdXNXY0F1dG9jb21wbGV0ZUlBdXRvY29tcGxldGVJdGVtPj4oKTtcbiAgQE91dHB1dCgpIGNoaXBzRXhwYW5zaW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj4oKTtcbiAgQE91dHB1dCgpIGNsZWFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDx2b2lkPj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0F1dG9jb21wbGV0ZUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NBdXRvY29tcGxldGVJQXV0b2NvbXBsZXRlSXRlbT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgSUF1dG9jb21wbGV0ZUl0ZW0gYXMgSU1vZHVzV2NBdXRvY29tcGxldGVJQXV0b2NvbXBsZXRlSXRlbSB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0F1dG9jb21wbGV0ZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0F1dG9jb21wbGV0ZSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBzZWxlY3RlZCBpdGVtIGNoaXAgaXMgcmVtb3ZlZC5cbiAgICovXG4gIGNoaXBSZW1vdmU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NBdXRvY29tcGxldGVJQXV0b2NvbXBsZXRlSXRlbT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGNoaXBzIGV4cGFuc2lvbiBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgY2hpcHNFeHBhbnNpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNsZWFyIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgY2xlYXJDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0F1dG9jb21wbGV0ZUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cblRoaXMgZXZlbnQgaXMgZGVib3VuY2VkIGJhc2VkIG9uIHRoZSBkZWJvdW5jZU1zIHByb3AuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy5cbiAgICovXG4gIGlucHV0Rm9jdXM6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXV0b2NvbXBsZXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgbWVudSBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgaXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPE1vZHVzV2NBdXRvY29tcGxldGVDdXN0b21FdmVudDxJTW9kdXNXY0F1dG9jb21wbGV0ZUlBdXRvY29tcGxldGVJdGVtPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FsdCcsICdjdXN0b21DbGFzcycsICdpbWdTcmMnLCAnaW5pdGlhbHMnLCAnc2hhcGUnLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYXZhdGFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW3sgbmFtZTogJ2FsdCcsIHJlcXVpcmVkOiB0cnVlIH0sICdjdXN0b21DbGFzcycsICdpbWdTcmMnLCAnaW5pdGlhbHMnLCAnc2hhcGUnLCAnc2l6ZSddLFxuICBvdXRwdXRzOiBbJ2ltYWdlTG9hZEVycm9yJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NBdmF0YXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQXZhdGFyRWxlbWVudDtcbiAgQE91dHB1dCgpIGltYWdlTG9hZEVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQXZhdGFyQ3VzdG9tRXZlbnQ8SU1vZHVzV2NBdmF0YXJJQXZhdGFySW1hZ2VMb2FkRXJyb3I+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0F2YXRhckN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IElBdmF0YXJJbWFnZUxvYWRFcnJvciBhcyBJTW9kdXNXY0F2YXRhcklBdmF0YXJJbWFnZUxvYWRFcnJvciB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0F2YXRhciBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0F2YXRhciB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGF2YXRhciBpbWFnZSBmYWlscyB0byBsb2FkLlxuICAgKi9cbiAgaW1hZ2VMb2FkRXJyb3I6IEV2ZW50RW1pdHRlcjxNb2R1c1djQXZhdGFyQ3VzdG9tRXZlbnQ8SU1vZHVzV2NBdmF0YXJJQXZhdGFySW1hZ2VMb2FkRXJyb3I+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnY3VzdG9tQ2xhc3MnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1iYWRnZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnY3VzdG9tQ2xhc3MnLCAnc2l6ZScsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NCYWRnZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NCYWRnZUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NCYWRnZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0JhZGdlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Rpc3BsYXlNb2RlJywgJ2RyYWdTdGVwVGhyZXNob2xkJywgJ2hlYWRlcicsICd2aXNpYmxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1ib3R0b20tc2hlZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Rpc3BsYXlNb2RlJywgJ2RyYWdTdGVwVGhyZXNob2xkJywgJ2hlYWRlcicsICd2aXNpYmxlJ10sXG4gIG91dHB1dHM6IFsnc2hlZXRWaXNpYmlsaXR5Q2hhbmdlJywgJ2Rpc3BsYXlNb2RlQ2hhbmdlJywgJ2hlYWRlckJhY2tDbGljaycsICdoZWFkZXJDbG9zZUNsaWNrJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NCb3R0b21TaGVldCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NCb3R0b21TaGVldEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBzaGVldFZpc2liaWxpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NCb3R0b21TaGVldEN1c3RvbUV2ZW50PHsgdmlzaWJsZTogYm9vbGVhbiB9Pj4oKTtcbiAgQE91dHB1dCgpIGRpc3BsYXlNb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQm90dG9tU2hlZXRDdXN0b21FdmVudDx7IGRpc3BsYXlNb2RlOiBJTW9kdXNXY0JvdHRvbVNoZWV0VEJvdHRvbVNoZWV0RGlzcGxheU1vZGU7IH0+PigpO1xuICBAT3V0cHV0KCkgaGVhZGVyQmFja0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQm90dG9tU2hlZXRDdXN0b21FdmVudDx2b2lkPj4oKTtcbiAgQE91dHB1dCgpIGhlYWRlckNsb3NlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NCb3R0b21TaGVldEN1c3RvbUV2ZW50PHZvaWQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0JvdHRvbVNoZWV0Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgVEJvdHRvbVNoZWV0RGlzcGxheU1vZGUgYXMgSU1vZHVzV2NCb3R0b21TaGVldFRCb3R0b21TaGVldERpc3BsYXlNb2RlIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQm90dG9tU2hlZXQgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NCb3R0b21TaGVldCB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHZpc2liaWxpdHkgb2YgdGhlIGJvdHRvbSBzaGVldCBjaGFuZ2VzLlxuICAgKi9cbiAgc2hlZXRWaXNpYmlsaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0JvdHRvbVNoZWV0Q3VzdG9tRXZlbnQ8eyB2aXNpYmxlOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZGlzcGxheSBtb2RlIGNoYW5nZXMsIHdoZXRoZXIgZnJvbSBhIGRyYWcva2V5Ym9hcmRcbmludGVyYWN0aW9uIG9yIGZyb20gc2V0dGluZyB0aGUgYGRpc3BsYXlNb2RlYCBwcm9wLiBUaGUgbmV3IG1vZGUgaXMgaW5cbmBkZXRhaWwuZGlzcGxheU1vZGVgLlxuICAgKi9cbiAgZGlzcGxheU1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQm90dG9tU2hlZXRDdXN0b21FdmVudDx7IGRpc3BsYXlNb2RlOiBJTW9kdXNXY0JvdHRvbVNoZWV0VEJvdHRvbVNoZWV0RGlzcGxheU1vZGU7IH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaGVhZGVyIGJhY2sgYnV0dG9uIGlzIGNsaWNrZWQuIERvZXMgbm90IGNoYW5nZSBzaGVldCBzdGF0ZS5cbiAgICovXG4gIGhlYWRlckJhY2tDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NCb3R0b21TaGVldEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaGVhZGVyIGRpc21pc3MgYnV0dG9uIGlzIGNsaWNrZWQuXG5UaGUgc2hlZXQgaXMgYWxzbyBjbG9zZWQgYXV0b21hdGljYWxseSAoYHZpc2libGVgIGlzIHNldCB0byBgZmFsc2VgKS5cbiAgICovXG4gIGhlYWRlckNsb3NlQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djQm90dG9tU2hlZXRDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2l0ZW1zJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWJyZWFkY3J1bWJzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdpdGVtcycsICdzaXplJ10sXG4gIG91dHB1dHM6IFsnYnJlYWRjcnVtYkNsaWNrJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NCcmVhZGNydW1icyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NCcmVhZGNydW1ic0VsZW1lbnQ7XG4gIEBPdXRwdXQoKSBicmVhZGNydW1iQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NCcmVhZGNydW1ic0N1c3RvbUV2ZW50PElNb2R1c1djQnJlYWRjcnVtYnNJQnJlYWRjcnVtYj4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQnJlYWRjcnVtYnNDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBJQnJlYWRjcnVtYiBhcyBJTW9kdXNXY0JyZWFkY3J1bWJzSUJyZWFkY3J1bWIgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NCcmVhZGNydW1icyBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0JyZWFkY3J1bWJzIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGJyZWFkY3J1bWIgaXMgY2xpY2tlZC5cbiAgICovXG4gIGJyZWFkY3J1bWJDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NCcmVhZGNydW1ic0N1c3RvbUV2ZW50PElNb2R1c1djQnJlYWRjcnVtYnNJQnJlYWRjcnVtYj4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAncHJlc3NlZCcsICdzaGFwZScsICdzaXplJywgJ3R5cGUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAncHJlc3NlZCcsICdzaGFwZScsICdzaXplJywgJ3R5cGUnLCAndmFyaWFudCddLFxuICBvdXRwdXRzOiBbJ2J1dHRvbkNsaWNrJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQnV0dG9uRWxlbWVudDtcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQnV0dG9uQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0J1dHRvbkN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQnV0dG9uIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgb3IgYWN0aXZhdGVkIHZpYSBrZXlib2FyZC5cbiAgICovXG4gIGJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0J1dHRvbkN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ29yaWVudGF0aW9uJywgJ3NlbGVjdGlvblR5cGUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtYnV0dG9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdkaXNhYmxlZCcsICdvcmllbnRhdGlvbicsICdzZWxlY3Rpb25UeXBlJywgJ3ZhcmlhbnQnXSxcbiAgb3V0cHV0czogWydidXR0b25Hcm91cENsaWNrJywgJ2J1dHRvblNlbGVjdGlvbkNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djQnV0dG9uR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djQnV0dG9uR3JvdXBFbGVtZW50O1xuICBAT3V0cHV0KCkgYnV0dG9uR3JvdXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0J1dHRvbkdyb3VwQ3VzdG9tRXZlbnQ8eyBidXR0b246IEhUTUxFbGVtZW50OyBpc1NlbGVjdGVkOiBib29sZWFuOyB9Pj4oKTtcbiAgQE91dHB1dCgpIGJ1dHRvblNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0J1dHRvbkdyb3VwQ3VzdG9tRXZlbnQ8eyBzZWxlY3RlZEJ1dHRvbnM6IEhUTUxFbGVtZW50W107IH0+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0J1dHRvbkdyb3VwQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NCdXR0b25Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0J1dHRvbkdyb3VwIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbnkgYnV0dG9uIGluIHRoZSBncm91cCBpcyBjbGlja2VkXG4gICAqL1xuICBidXR0b25Hcm91cENsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0J1dHRvbkdyb3VwQ3VzdG9tRXZlbnQ8eyBidXR0b246IEhUTUxFbGVtZW50OyBpc1NlbGVjdGVkOiBib29sZWFuOyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYnV0dG9uIHNlbGVjdGlvbiBjaGFuZ2VzXG4gICAqL1xuICBidXR0b25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQnV0dG9uR3JvdXBDdXN0b21FdmVudDx7IHNlbGVjdGVkQnV0dG9uczogSFRNTEVsZW1lbnRbXTsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kRmlndXJlJywgJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2xheW91dCcsICdwYWRkaW5nJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1jYXJkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZ3JvdW5kRmlndXJlJywgJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2xheW91dCcsICdwYWRkaW5nJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NDYXJkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0NhcmRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQ2FyZCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0NhcmQge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaW5kZXRlcm1pbmF0ZScsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1jaGVja2JveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaW5kZXRlcm1pbmF0ZScsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsnaW5wdXRCbHVyJywgJ2lucHV0Q2hhbmdlJywgJ2lucHV0Rm9jdXMnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0NoZWNrYm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0NoZWNrYm94RWxlbWVudDtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NoZWNrYm94Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NoZWNrYm94Q3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hlY2tib3hDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NDaGVja2JveEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djQ2hlY2tib3ggZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NDaGVja2JveCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NoZWNrYm94Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hlY2tib3hDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGdhaW5zIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRGb2N1czogRXZlbnRFbWl0dGVyPE1vZHVzV2NDaGVja2JveEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2hhc0Vycm9yJywgJ2xhYmVsJywgJ211bHRpbGluZScsICdzaGFwZScsICdzaG93UmVtb3ZlJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtY2hpcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2hhc0Vycm9yJywgJ2xhYmVsJywgJ211bHRpbGluZScsICdzaGFwZScsICdzaG93UmVtb3ZlJywgJ3NpemUnLCAndmFyaWFudCddLFxuICBvdXRwdXRzOiBbJ2NoaXBDbGljaycsICdjaGlwUmVtb3ZlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NDaGlwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0NoaXBFbGVtZW50O1xuICBAT3V0cHV0KCkgY2hpcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hpcEN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGNoaXBSZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDaGlwQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0NoaXBDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0NoaXAgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NDaGlwIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2hpcCBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQuXG4gICAqL1xuICBjaGlwQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hpcEN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNsb3NlIGNoaXAgaWNvbiBidXR0b24gaXMgY2xpY2tlZC5cbiAgICovXG4gIGNoaXBSZW1vdmU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ2hpcEN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2NoZXZyb25Qb3NpdGlvbicsICdjb2xsYXBzZUlkJywgJ2N1c3RvbUNsYXNzJywgJ2V4cGFuZGVkJywgJ29wdGlvbnMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWNvbGxhcHNlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXJlZCcsICdjaGV2cm9uUG9zaXRpb24nLCAnY29sbGFwc2VJZCcsICdjdXN0b21DbGFzcycsICdleHBhbmRlZCcsICdvcHRpb25zJ10sXG4gIG91dHB1dHM6IFsnZXhwYW5kZWRDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0NvbGxhcHNlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0NvbGxhcHNlRWxlbWVudDtcbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29sbGFwc2VDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuIH0+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0NvbGxhcHNlQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NDb2xsYXBzZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0NvbGxhcHNlIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZXhwYW5kZWQgcHJvcCBpcyBpbnRlcm5hbGx5IGNoYW5nZWQuXG4gICAqL1xuICBleHBhbmRlZENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb2xsYXBzZUN1c3RvbUV2ZW50PHsgZXhwYW5kZWQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbGxvd0RyYWdEcm9wJywgJ2JvcmRlcmVkJywgJ2NoZWNrZWROb2RlSWRzJywgJ2N1c3RvbUNsYXNzJywgJ2VkaXRpbmdOb2RlSWQnLCAnZXhwYW5kZWROb2RlSWRzJywgJ2ZpbHRlcicsICdub2RlcycsICdzZWFyY2hhYmxlJywgJ3NlbGVjdGVkTm9kZUlkJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2l6ZScsICd0b29sYmFyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1jb250ZW50LXRyZWUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsbG93RHJhZ0Ryb3AnLCAnYm9yZGVyZWQnLCAnY2hlY2tlZE5vZGVJZHMnLCAnY3VzdG9tQ2xhc3MnLCAnZWRpdGluZ05vZGVJZCcsICdleHBhbmRlZE5vZGVJZHMnLCAnZmlsdGVyJywgJ25vZGVzJywgJ3NlYXJjaGFibGUnLCAnc2VsZWN0ZWROb2RlSWQnLCAnc2VsZWN0aW9uTW9kZScsICdzaXplJywgJ3Rvb2xiYXInXSxcbiAgb3V0cHV0czogWydub2RlU2VsZWN0JywgJ25vZGVFeHBhbmRDaGFuZ2UnLCAnbm9kZUNoZWNrQ2hhbmdlJywgJ25vZGVFZGl0JywgJ25vZGVEdXBsaWNhdGUnLCAnbm9kZUFkZCcsICdub2RlRGVsZXRlJywgJ25vZGVSZW5hbWUnLCAnbm9kZUVkaXRDYW5jZWwnLCAnbm9kZU1vdmUnLCAnbm9kZUxvYWRDaGlsZHJlbicsICdleHBhbmRBbGxDaGFuZ2UnLCAnbm9kZXNEZWxldGUnLCAnbm9kZVZpc2liaWxpdHlDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0NvbnRlbnRUcmVlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0NvbnRlbnRUcmVlRWxlbWVudDtcbiAgQE91dHB1dCgpIG5vZGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVFeHBhbmRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZzsgZXhwYW5kZWQ6IGJvb2xlYW47IH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZUNoZWNrQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IGNoZWNrZWQ6IGJvb2xlYW47IH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZUVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVEdXBsaWNhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVBZGQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgcmVmZXJlbmNlSWQ6IHN0cmluZzsgcG9zaXRpb246ICdhYm92ZScgfCAnYmVsb3cnIHwgJ2NoaWxkJzsgfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlUmVuYW1lID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlRWRpdENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nIH0+PigpO1xuICBAT3V0cHV0KCkgbm9kZU1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZzsgdGFyZ2V0SWQ6IHN0cmluZzsgcG9zaXRpb246ICdiZWZvcmUnIHwgJ2FmdGVyJyB8ICdpbnNpZGUnOyB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVMb2FkQ2hpbGRyZW4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIGV4cGFuZEFsbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj4oKTtcbiAgQE91dHB1dCgpIG5vZGVzRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkczogc3RyaW5nW10gfT4+KCk7XG4gIEBPdXRwdXQoKSBub2RlVmlzaWJpbGl0eUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nOyBkaXNhYmxlZDogYm9vbGVhbjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0NvbnRlbnRUcmVlIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djQ29udGVudFRyZWUge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgbm9kZSBpcyBzZWxlY3RlZC4gVGhlIGNvbnN1bWluZyBhcHBsaWNhdGlvbiBzaG91bGQgdXBkYXRlIGBzZWxlY3RlZE5vZGVJZGAuXG4gICAqL1xuICBub2RlU2VsZWN0OiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIG5vZGUncyBleHBhbnNpb24gaXMgdG9nZ2xlZC4gVGhlIGNvbnN1bWluZyBhcHBsaWNhdGlvbiBzaG91bGQgdXBkYXRlIGBleHBhbmRlZE5vZGVJZHNgLlxuICAgKi9cbiAgbm9kZUV4cGFuZENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWQ6IHN0cmluZzsgZXhwYW5kZWQ6IGJvb2xlYW47IH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGNoZWNrYm94IGlzIHRvZ2dsZWQgKG11bHRpLXNlbGVjdCkuIFRoZSBjb25zdW1pbmcgYXBwbGljYXRpb24gc2hvdWxkIHVwZGF0ZSBgY2hlY2tlZE5vZGVJZHNgLlxuICAgKi9cbiAgbm9kZUNoZWNrQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nOyBjaGVja2VkOiBib29sZWFuOyB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gXCJFZGl0IG5hbWVcIiBpcyBjaG9zZW4uIFRoZSBhcHAgc2hvdWxkIHNldCBgZWRpdGluZ05vZGVJZGAgdG8gdGhpcyBpZC5cbiAgICovXG4gIG5vZGVFZGl0OiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBcIkR1cGxpY2F0ZVwiIGlzIGNob3Nlbi4gVGhlIGFwcCBzaG91bGQgY2xvbmUgdGhlIG5vZGUgYmVsb3cgaXQgYW5kIHNldCBgZWRpdGluZ05vZGVJZGAgdG8gdGhlIG5ldyBpZC5cbiAgICovXG4gIG5vZGVEdXBsaWNhdGU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIFwiQWRkIE5ldyBBYm92ZS9CZWxvd1wiIG9yIFwiQWRkIENoaWxkIE5vZGVcIiBpcyBjaG9zZW4uIFRoZSBhcHAgc2hvdWxkIGluc2VydCBhIG5vZGUgYXQgdGhlIHJlcXVlc3RlZCBwb3NpdGlvbiBhbmQgc2V0IGBlZGl0aW5nTm9kZUlkYCB0byB0aGUgbmV3IGlkLlxuICAgKi9cbiAgbm9kZUFkZDogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgcmVmZXJlbmNlSWQ6IHN0cmluZzsgcG9zaXRpb246ICdhYm92ZScgfCAnYmVsb3cnIHwgJ2NoaWxkJzsgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCBhZnRlciB0aGUgdXNlciBjb25maXJtcyBkZWxldGlvbi4gVGhlIGFwcCBzaG91bGQgcmVtb3ZlIHRoZSBub2RlIGZyb20gYG5vZGVzYC5cbiAgICovXG4gIG5vZGVEZWxldGU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGlubGluZSBlZGl0IGlzIGNvbW1pdHRlZCB3aXRoIGFuIGVmZmVjdGl2ZSBsYWJlbCBjaGFuZ2UgKHZpYSBFbnRlciBvciBsb3NpbmcgZm9jdXMpLiBUaGUgYXBwIHNob3VsZCBhcHBseSB0aGUgbmV3IGxhYmVsIGFuZCBjbGVhciBgZWRpdGluZ05vZGVJZGAuXG4gICAqL1xuICBub2RlUmVuYW1lOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBpbmxpbmUgZWRpdCBlbmRzIHdpdGhvdXQgYW4gZWZmZWN0aXZlIGNoYW5nZSDigJQgdmlhIEVzY2FwZSwgb3IgRW50ZXIvYmx1ciB3aGlsZSB0aGUgZHJhZnQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgbGFiZWwuIFRoZSBhcHAgc2hvdWxkIGNsZWFyIGBlZGl0aW5nTm9kZUlkYCAoYW5kIGRpc2NhcmQgYSBmcmVzaGx5IGFkZGVkIG5vZGUgaWYgaXRzIG5hbWUgaXMgc3RpbGwgZW1wdHkpLlxuICAgKi9cbiAgbm9kZUVkaXRDYW5jZWw6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgZHJhZy1hbmQtZHJvcCwgb25jZSB0aGUgZ2VzdHVyZSBlbmRzIChgZHJhZ2VuZGApLiBFbWl0dGluZyBvbiBgZHJhZ2VuZGAgKG5vdCBgZHJvcGApIGtlZXBzIHRoZSBkcmFnIHNvdXJjZSBpbiB0aGUgRE9NIHVudGlsIHRoZSBicm93c2VyIGZpbmlzaGVzIHRoZSBnZXN0dXJlLCBzbyBhcHBseWluZyB0aGUgbW92ZSAoZS5nLiB2aWEgYG1vdmVOb2RlUmVsYXRpdmVgKSBjYW5ub3QgdGVhciBkb3duIHRoZSBoYW5kbGUgbWlkLWRyYWcuIGBwb3NpdGlvbmAgaXMgcmVsYXRpdmUgdG8gYHRhcmdldElkYDogYGJlZm9yZWAvYGFmdGVyYCByZW9yZGVyIGFtb25nIHRoZSB0YXJnZXQncyBzaWJsaW5nczsgYGluc2lkZWAgbmVzdHMgdGhlIG5vZGUgYXMgdGhlIHRhcmdldCdzIGZpcnN0IGNoaWxkLlxuICAgKi9cbiAgbm9kZU1vdmU6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IHRhcmdldElkOiBzdHJpbmc7IHBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgfCAnaW5zaWRlJzsgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB0aGUgZmlyc3QgdGltZSBhIGxhenkgbm9kZSAoYGhhc0NoaWxkcmVuOiB0cnVlYCB3aXRoIG5vIGBjaGlsZHJlbmAgeWV0KSBpcyBleHBhbmRlZC4gVGhlIGFwcCBzaG91bGQgZmV0Y2ggdGhlIG5vZGUncyBjaGlsZHJlbiBhbmQgYXNzaWduIHRoZW0gdG8gYG5vZGVzYCAodXNlIGBbXWAgd2hlbiB0aGVyZSBhcmUgbm9uZSk7IHRoZSBjb21wb25lbnQgc2hvd3MgYSBzcGlubmVyIHVudGlsIGBjaGlsZHJlbmAgaXMgZGVmaW5lZC5cbiAgICovXG4gIG5vZGVMb2FkQ2hpbGRyZW46IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB0b29sYmFyJ3MgZXhwYW5kLWFsbCAvIGNvbGxhcHNlLWFsbCB0b2dnbGUgaXMgY2xpY2tlZC4gVGhlIGFwcCBzaG91bGQgc2V0IGBleHBhbmRlZE5vZGVJZHNgIHRvIGV2ZXJ5IGV4cGFuZGFibGUgaWQgKGUuZy4gdmlhIGBnZXRFeHBhbmRhYmxlTm9kZUlkc2ApIHdoZW4gYGV4cGFuZGVkYCBpcyBgdHJ1ZWAsIG9yIHRvIGBbXWAgd2hlbiBgZmFsc2VgLlxuICAgKi9cbiAgZXhwYW5kQWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0NvbnRlbnRUcmVlQ3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHRvb2xiYXIncyBkZWxldGUgYnV0dG9uIGlzIGNvbmZpcm1lZC4gYGlkc2AgYXJlIHRoZSB0b3AtbW9zdCBjaGVja2VkIG5vZGVzOyB0aGUgYXBwIHNob3VsZCByZW1vdmUgdGhlbSAoZS5nLiB2aWEgYGRlbGV0ZU5vZGVzYCkuXG4gICAqL1xuICBub2Rlc0RlbGV0ZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NDb250ZW50VHJlZUN1c3RvbUV2ZW50PHsgaWRzOiBzdHJpbmdbXSB9Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBub2RlJ3MgdmlzaWJpbGl0eSAoZXllKSB0b2dnbGUgaXMgY2xpY2tlZC4gYGRpc2FibGVkYCBpcyB0aGUgbmV3IHN0YXRlLiBUaGUgYXBwIHNob3VsZCB1cGRhdGUgdGhlIG5vZGUncyBvd24gYGRpc2FibGVkYCBzdGF0ZSAoZS5nLiB2aWEgYHNldE5vZGVEaXNhYmxlZGApOyBkZXNjZW5kYW50cyBiZWNvbWUgZWZmZWN0aXZlbHkgZGlzYWJsZWQgdmlhIGFuY2VzdG9yIGluaGVyaXRhbmNlLlxuICAgKi9cbiAgbm9kZVZpc2liaWxpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djQ29udGVudFRyZWVDdXN0b21FdmVudDx7IGlkOiBzdHJpbmc7IGRpc2FibGVkOiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2VuZFZhbHVlJywgJ2ZlZWRiYWNrJywgJ2Zvcm1hdCcsICdoaWRlT3ZlcmZsb3dEYXRlcycsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dXZWVrTnVtYmVycycsICdzaXplJywgJ3R5cGUnLCAndmFsdWUnLCAnd2Vla1N0YXJ0RGF5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1kYXRlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXJlZCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdlbmRWYWx1ZScsICdmZWVkYmFjaycsICdmb3JtYXQnLCAnaGlkZU92ZXJmbG93RGF0ZXMnLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93V2Vla051bWJlcnMnLCAnc2l6ZScsICd0eXBlJywgJ3ZhbHVlJywgJ3dlZWtTdGFydERheSddLFxuICBvdXRwdXRzOiBbJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJywgJ2NhbGVuZGFyTW9udGhDaGFuZ2UnLCAnY2FsZW5kYXJZZWFyQ2hhbmdlJywgJ2VuZENhbGVuZGFyTW9udGhDaGFuZ2UnLCAnZW5kQ2FsZW5kYXJZZWFyQ2hhbmdlJywgJ3JhbmdlQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NEYXRlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0RhdGVFbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgY2FsZW5kYXJNb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY0RhdGVDdXN0b21FdmVudDxudW1iZXI+PigpO1xuICBAT3V0cHV0KCkgY2FsZW5kYXJZZWFyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PG51bWJlcj4+KCk7XG4gIEBPdXRwdXQoKSBlbmRDYWxlbmRhck1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PG51bWJlcj4+KCk7XG4gIEBPdXRwdXQoKSBlbmRDYWxlbmRhclllYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj4oKTtcbiAgQE91dHB1dCgpIHJhbmdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PElNb2R1c1djRGF0ZUlEYXRlUmFuZ2U+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY0RhdGVDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBJRGF0ZVJhbmdlIGFzIElNb2R1c1djRGF0ZUlEYXRlUmFuZ2UgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NEYXRlIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djRGF0ZSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLiBJbiByYW5nZSBtb2RlLCBgZGV0YWlsLmZpZWxkYCBpcyBgJ3N0YXJ0J2Agb3IgYCdlbmQnYC5cbiAgICovXG4gIGlucHV0Qmx1cjogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLiBgdGFyZ2V0LnZhbHVlYCBpcyBhbHdheXMgSVNPIDg2MDEgKFlZWVktTU0tREQpLCBvciBlbXB0eSBzdHJpbmcgd2hlbiBpbmNvbXBsZXRlIG9yIGludmFsaWQuIEluIHJhbmdlIG1vZGUsIGBkZXRhaWwuZmllbGRgIGlzIGAnc3RhcnQnYCBvciBgJ2VuZCdgLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuIEluIHJhbmdlIG1vZGUsIGBkZXRhaWwuZmllbGRgIGlzIGAnc3RhcnQnYCBvciBgJ2VuZCdgLlxuICAgKi9cbiAgaW5wdXRGb2N1czogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzdGFydCAob3Igc2luZ2xlLW1vZGUpIGNhbGVuZGFyIG1vbnRoIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgY2FsZW5kYXJNb250aENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHN0YXJ0IChvciBzaW5nbGUtbW9kZSkgY2FsZW5kYXIgeWVhciBzZWxlY3Rpb24gY2hhbmdlcy5cbiAgICovXG4gIGNhbGVuZGFyWWVhckNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGVuZCBjYWxlbmRhciBtb250aCBzZWxlY3Rpb24gY2hhbmdlcyBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgZW5kQ2FsZW5kYXJNb250aENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NEYXRlQ3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGVuZCBjYWxlbmRhciB5ZWFyIHNlbGVjdGlvbiBjaGFuZ2VzIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBlbmRDYWxlbmRhclllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgY29tcGxldGUgZGF0ZSByYW5nZSBpcyBzZWxlY3RlZCBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgcmFuZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djRGF0ZUN1c3RvbUV2ZW50PElNb2R1c1djRGF0ZUlEYXRlUmFuZ2U+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnY29udGVudCcsICdjdXN0b21DbGFzcycsICdvcmllbnRhdGlvbicsICdwb3NpdGlvbicsICdyZXNwb25zaXZlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1kaXZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdjb250ZW50JywgJ2N1c3RvbUNsYXNzJywgJ29yaWVudGF0aW9uJywgJ3Bvc2l0aW9uJywgJ3Jlc3BvbnNpdmUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0RpdmlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djRGl2aWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NEaXZpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djRGl2aWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydidXR0b25BcmlhTGFiZWwnLCAnYnV0dG9uQ29sb3InLCAnYnV0dG9uU2hhcGUnLCAnYnV0dG9uU2l6ZScsICdidXR0b25WYXJpYW50JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ21lbnVCb3JkZXJlZCcsICdtZW51T2Zmc2V0JywgJ21lbnVQbGFjZW1lbnQnLCAnbWVudVNpemUnLCAnbWVudVN0cmF0ZWd5JywgJ21lbnVWaXNpYmxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1kcm9wZG93bi1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydidXR0b25BcmlhTGFiZWwnLCAnYnV0dG9uQ29sb3InLCAnYnV0dG9uU2hhcGUnLCAnYnV0dG9uU2l6ZScsICdidXR0b25WYXJpYW50JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ21lbnVCb3JkZXJlZCcsICdtZW51T2Zmc2V0JywgJ21lbnVQbGFjZW1lbnQnLCAnbWVudVNpemUnLCAnbWVudVN0cmF0ZWd5JywgJ21lbnVWaXNpYmxlJ10sXG4gIG91dHB1dHM6IFsnbWVudVZpc2liaWxpdHlDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0Ryb3Bkb3duTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NEcm9wZG93bk1lbnVFbGVtZW50O1xuICBAT3V0cHV0KCkgbWVudVZpc2liaWxpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NEcm9wZG93bk1lbnVDdXN0b21FdmVudDx7IGlzVmlzaWJsZTogYm9vbGVhbiB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NEcm9wZG93bk1lbnVDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0Ryb3Bkb3duTWVudSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0Ryb3Bkb3duTWVudSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG1lbnVWaXNpYmxlIHByb3AgY2hhbmdlcy5cbiAgICovXG4gIG1lbnVWaXNpYmlsaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY0Ryb3Bkb3duTWVudUN1c3RvbUV2ZW50PHsgaXNWaXNpYmxlOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWNjZXB0RmlsZVR5cGVzJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2ZpbGVEcmFnZ2VkT3Zlckluc3RydWN0aW9ucycsICdpbmNsdWRlU3RhdGVJY29uJywgJ2luc3RydWN0aW9ucycsICdpbnZhbGlkRmlsZVR5cGVNZXNzYWdlJywgJ21heEZpbGVDb3VudCcsICdtYXhGaWxlTmFtZUxlbmd0aCcsICdtYXhUb3RhbEZpbGVTaXplQnl0ZXMnLCAnbXVsdGlwbGUnLCAnc3VjY2Vzc01lc3NhZ2UnXSxcbiAgbWV0aG9kczogWydyZXNldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtZmlsZS1kcm9wem9uZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWNjZXB0RmlsZVR5cGVzJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2ZpbGVEcmFnZ2VkT3Zlckluc3RydWN0aW9ucycsICdpbmNsdWRlU3RhdGVJY29uJywgJ2luc3RydWN0aW9ucycsICdpbnZhbGlkRmlsZVR5cGVNZXNzYWdlJywgJ21heEZpbGVDb3VudCcsICdtYXhGaWxlTmFtZUxlbmd0aCcsICdtYXhUb3RhbEZpbGVTaXplQnl0ZXMnLCAnbXVsdGlwbGUnLCAnc3VjY2Vzc01lc3NhZ2UnXSxcbiAgb3V0cHV0czogWydmaWxlU2VsZWN0J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NGaWxlRHJvcHpvbmUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djRmlsZURyb3B6b25lRWxlbWVudDtcbiAgQE91dHB1dCgpIGZpbGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NGaWxlRHJvcHpvbmVDdXN0b21FdmVudDxGaWxlTGlzdD4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djRmlsZURyb3B6b25lQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NGaWxlRHJvcHpvbmUgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NGaWxlRHJvcHpvbmUge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGZpbGVzIGFyZSBzZWxlY3RlZFxuICAgKi9cbiAgZmlsZVNlbGVjdDogRXZlbnRFbWl0dGVyPE1vZHVzV2NGaWxlRHJvcHpvbmVDdXN0b21FdmVudDxGaWxlTGlzdD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydidXR0b25Db2xvcicsICdidXR0b25TaXplJywgJ2J1dHRvblZhcmlhbnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGVmYXVsdFNwbGl0JywgJ2RlbnNpdHknLCAnbGVmdFRhcmdldCcsICdvcmllbnRhdGlvbicsICdyaWdodFRhcmdldCcsICdzaXplJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWhhbmRsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYnV0dG9uQ29sb3InLCAnYnV0dG9uU2l6ZScsICdidXR0b25WYXJpYW50JywgJ2N1c3RvbUNsYXNzJywgJ2RlZmF1bHRTcGxpdCcsICdkZW5zaXR5JywgJ2xlZnRUYXJnZXQnLCAnb3JpZW50YXRpb24nLCAncmlnaHRUYXJnZXQnLCAnc2l6ZScsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NIYW5kbGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djSGFuZGxlRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0hhbmRsZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0hhbmRsZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkZWNvcmF0aXZlJywgJ25hbWUnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1pY29uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkZWNvcmF0aXZlJywgeyBuYW1lOiAnbmFtZScsIHJlcXVpcmVkOiB0cnVlIH0sICdzaXplJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0ljb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djSWNvbkVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NJY29uIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djSWNvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdpY29uJywgJ2xldmVsJywgJ21lc3NhZ2UnLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtaW5wdXQtZmVlZGJhY2snLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2ljb24nLCB7IG5hbWU6ICdsZXZlbCcsIHJlcXVpcmVkOiB0cnVlIH0sICdtZXNzYWdlJywgJ3NpemUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0lucHV0RmVlZGJhY2sge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djSW5wdXRGZWVkYmFja0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NJbnB1dEZlZWRiYWNrIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djSW5wdXRGZWVkYmFjayB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdmb3JJZCcsICdsYWJlbFRleHQnLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzdWJMYWJlbFRleHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLWlucHV0LWxhYmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdmb3JJZCcsICdsYWJlbFRleHQnLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzdWJMYWJlbFRleHQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY0lucHV0TGFiZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djSW5wdXRMYWJlbEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NJbnB1dExhYmVsIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djSW5wdXRMYWJlbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdocmVmJywgJ3JlbCcsICd0YXJnZXQnLCAndW5kZXJsaW5lJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1saW5rJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdjdXN0b21DbGFzcycsICdocmVmJywgJ3JlbCcsICd0YXJnZXQnLCAndW5kZXJsaW5lJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NMaW5rIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0xpbmtFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djTGluayBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY0xpbmsge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnY3VzdG9tQ2xhc3MnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1sb2FkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2N1c3RvbUNsYXNzJywgJ3NpemUnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djTG9hZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY0xvYWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NMb2FkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NMb2FkZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWx0JywgJ2N1c3RvbUNsYXNzJywgJ2VtYmxlbScsICduYW1lJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1sb2dvJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHQnLCAnY3VzdG9tQ2xhc3MnLCAnZW1ibGVtJywgeyBuYW1lOiAnbmFtZScsIHJlcXVpcmVkOiB0cnVlIH1dLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djTG9nbyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NMb2dvRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY0xvZ28gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NMb2dvIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2lzU3ViTWVudScsICdvcmllbnRhdGlvbicsICdzZWxlY3Rpb25Nb2RlJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLW1lbnUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2lzU3ViTWVudScsICdvcmllbnRhdGlvbicsICdzZWxlY3Rpb25Nb2RlJywgJ3NpemUnXSxcbiAgb3V0cHV0czogWydtZW51Rm9jdXNvdXQnLCAnbWVudVNlbGVjdGlvbkNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NNZW51RWxlbWVudDtcbiAgQE91dHB1dCgpIG1lbnVGb2N1c291dCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY01lbnVDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIG1lbnVTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NNZW51Q3VzdG9tRXZlbnQ8eyBzZWxlY3RlZEl0ZW1zOiBIVE1MRWxlbWVudFtdOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NNZW51Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NNZW51IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djTWVudSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG1lbnUgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBtZW51Rm9jdXNvdXQ6IEV2ZW50RW1pdHRlcjxNb2R1c1djTWVudUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMgaW4gbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGUuIEVtaXRzIHRoZSBhcnJheSBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgbWVudSBpdGVtIGVsZW1lbnRzLlxuICAgKi9cbiAgbWVudVNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NNZW51Q3VzdG9tRXZlbnQ8eyBzZWxlY3RlZEl0ZW1zOiBIVE1MRWxlbWVudFtdOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2NoZWNrYm94JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZvY3VzZWQnLCAnaGFzU3VibWVudScsICdsYWJlbCcsICdzZWxlY3RlZCcsICdzaXplJywgJ3N1YkxhYmVsJywgJ3Rvb2x0aXBDb250ZW50JywgJ3Rvb2x0aXBQb3NpdGlvbicsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NvbGxhcHNlU3VibWVudSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtbWVudS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXJlZCcsICdjaGVja2JveCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmb2N1c2VkJywgJ2hhc1N1Ym1lbnUnLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAnc2l6ZScsICdzdWJMYWJlbCcsICd0b29sdGlwQ29udGVudCcsICd0b29sdGlwUG9zaXRpb24nLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpdGVtU2VsZWN0J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NNZW51SXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NNZW51SXRlbUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTWVudUl0ZW1DdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IHNlbGVjdGVkPzogYm9vbGVhbjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djTWVudUl0ZW1DdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY01lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djTWVudUl0ZW0ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgbWVudSBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgaXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPE1vZHVzV2NNZW51SXRlbUN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgc2VsZWN0ZWQ/OiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JhY2tkcm9wJywgJ2N1c3RvbUNsYXNzJywgJ2Z1bGxzY3JlZW4nLCAnbW9kYWxJZCcsICdwb3NpdGlvbicsICdzaG93Q2xvc2UnLCAnc2hvd0Z1bGxzY3JlZW5Ub2dnbGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLW1vZGFsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZHJvcCcsICdjdXN0b21DbGFzcycsICdmdWxsc2NyZWVuJywgeyBuYW1lOiAnbW9kYWxJZCcsIHJlcXVpcmVkOiB0cnVlIH0sICdwb3NpdGlvbicsICdzaG93Q2xvc2UnLCAnc2hvd0Z1bGxzY3JlZW5Ub2dnbGUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY01vZGFsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY01vZGFsRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY01vZGFsIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djTW9kYWwge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXBwc01lbnVPcGVuJywgJ2NvbmRlbnNlZCcsICdjb25kZW5zZWRNZW51T3BlbicsICdjdXN0b21DbGFzcycsICdsb2dvTmFtZScsICdtYWluTWVudU9wZW4nLCAnbm90aWZpY2F0aW9uc01lbnVPcGVuJywgJ3NlYXJjaERlYm91bmNlTXMnLCAnc2VhcmNoSW5wdXRPcGVuJywgJ3RleHRPdmVycmlkZXMnLCAndXNlckNhcmQnLCAndXNlck1lbnVPcGVuJywgJ3Zpc2liaWxpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLW5hdmJhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXBwc01lbnVPcGVuJywgJ2NvbmRlbnNlZCcsICdjb25kZW5zZWRNZW51T3BlbicsICdjdXN0b21DbGFzcycsICdsb2dvTmFtZScsICdtYWluTWVudU9wZW4nLCAnbm90aWZpY2F0aW9uc01lbnVPcGVuJywgJ3NlYXJjaERlYm91bmNlTXMnLCAnc2VhcmNoSW5wdXRPcGVuJywgJ3RleHRPdmVycmlkZXMnLCB7IG5hbWU6ICd1c2VyQ2FyZCcsIHJlcXVpcmVkOiB0cnVlIH0sICd1c2VyTWVudU9wZW4nLCAndmlzaWJpbGl0eSddLFxuICBvdXRwdXRzOiBbJ2FpQ2xpY2snLCAnYXBwc0NsaWNrJywgJ2FwcHNNZW51T3BlbkNoYW5nZScsICdjb25kZW5zZWRNZW51T3BlbkNoYW5nZScsICdoZWxwQ2xpY2snLCAnbWFpbk1lbnVPcGVuQ2hhbmdlJywgJ215VHJpbWJsZUNsaWNrJywgJ25vdGlmaWNhdGlvbnNDbGljaycsICdub3RpZmljYXRpb25zTWVudU9wZW5DaGFuZ2UnLCAnc2VhcmNoQ2hhbmdlJywgJ3NlYXJjaENsaWNrJywgJ3NlYXJjaElucHV0T3BlbkNoYW5nZScsICdzaWduT3V0Q2xpY2snLCAndHJpbWJsZUxvZ29DbGljaycsICd1c2VyTWVudU9wZW5DaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY05hdmJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NOYXZiYXJFbGVtZW50O1xuICBAT3V0cHV0KCkgYWlDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGFwcHNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGFwcHNNZW51T3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBAT3V0cHV0KCkgY29uZGVuc2VkTWVudU9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgQE91dHB1dCgpIGhlbHBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIG1haW5NZW51T3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+PigpO1xuICBAT3V0cHV0KCkgbXlUcmltYmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBub3RpZmljYXRpb25zQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBub3RpZmljYXRpb25zTWVudU9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj4oKTtcbiAgQE91dHB1dCgpIHNlYXJjaENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgc2VhcmNoSW5wdXRPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIEBPdXRwdXQoKSBzaWduT3V0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSB0cmltYmxlTG9nb0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgdXNlck1lbnVPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NOYXZiYXIgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NOYXZiYXIge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBBSSBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgYWlDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhcHBzIGJ1dHRvbiBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQuXG4gICAqL1xuICBhcHBzQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYXBwcyBtZW51IG9wZW4gc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIGFwcHNNZW51T3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNvbmRlbnNlZCBtZW51IG9wZW4gc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIGNvbmRlbnNlZE1lbnVPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaGVscCBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgaGVscENsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG1haW4gbWVudSBvcGVuIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBtYWluTWVudU9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIHByb2ZpbGUgQWNjZXNzIE15VHJpbWJsZSBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgbXlUcmltYmxlQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbm90aWZpY2F0aW9ucyBidXR0b24gaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkLlxuICAgKi9cbiAgbm90aWZpY2F0aW9uc0NsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG5vdGlmaWNhdGlvbnMgbWVudSBvcGVuIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBub3RpZmljYXRpb25zTWVudU9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgdmFsdWUgaXMgY2hhbmdlZC5cbiAgICovXG4gIHNlYXJjaENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWFyY2ggYnV0dG9uIGlzIGNsaWNrZWQgb3IgYWN0aXZhdGVkIHZpYSBrZXlib2FyZC5cbiAgICovXG4gIHNlYXJjaENsaWNrOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBvcGVuIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBzZWFyY2hJbnB1dE9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djTmF2YmFyQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIHByb2ZpbGUgc2lnbiBvdXQgYnV0dG9uIGlzIGNsaWNrZWQgb3IgYWN0aXZhdGVkIHZpYSBrZXlib2FyZC5cbiAgICovXG4gIHNpZ25PdXRDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBsb2dvIGJ1dHRvbiBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQscmVnYXJkbGVzcyBvZiB0aGUgYGxvZ29OYW1lYCBwcm9wIHZhbHVlLlxuICAgKi9cbiAgdHJpbWJsZUxvZ29DbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NOYXZiYXJDdXN0b21FdmVudDxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIG1lbnUgb3BlbiBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgdXNlck1lbnVPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY05hdmJhckN1c3RvbUV2ZW50PGJvb2xlYW4+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0NvbXBsZXRlJywgJ2JvcmRlcmVkJywgJ2N1cnJlbmN5U3ltYm9sJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzdGVwJywgJ3R5cGUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLW51bWJlci1pbnB1dCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0NvbXBsZXRlJywgJ2JvcmRlcmVkJywgJ2N1cnJlbmN5U3ltYm9sJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzdGVwJywgJ3R5cGUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djTnVtYmVySW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djTnVtYmVySW5wdXRFbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTnVtYmVySW5wdXRDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djTnVtYmVySW5wdXRDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NOdW1iZXJJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY051bWJlcklucHV0Q3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NOdW1iZXJJbnB1dCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY051bWJlcklucHV0IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djTnVtYmVySW5wdXRDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NOdW1iZXJJbnB1dEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY051bWJlcklucHV0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhTGFiZWxWYWx1ZXMnLCAnY291bnQnLCAnY3VzdG9tQ2xhc3MnLCAnbmV4dEJ1dHRvblRleHQnLCAncGFnZScsICdwcmV2QnV0dG9uVGV4dCcsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1wYWdpbmF0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcmlhTGFiZWxWYWx1ZXMnLCAnY291bnQnLCAnY3VzdG9tQ2xhc3MnLCAnbmV4dEJ1dHRvblRleHQnLCAncGFnZScsICdwcmV2QnV0dG9uVGV4dCcsICdzaXplJ10sXG4gIG91dHB1dHM6IFsncGFnZUNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djUGFnaW5hdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NQYWdpbmF0aW9uRWxlbWVudDtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NQYWdpbmF0aW9uQ3VzdG9tRXZlbnQ8SU1vZHVzV2NQYWdpbmF0aW9uSVBhZ2VDaGFuZ2U+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1BhZ2luYXRpb25DdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBJUGFnZUNoYW5nZSBhcyBJTW9kdXNXY1BhZ2luYXRpb25JUGFnZUNoYW5nZSB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1BhZ2luYXRpb24gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NQYWdpbmF0aW9uIHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBwYWdlIGNoYW5nZXNcbiAgICovXG4gIHBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djUGFnaW5hdGlvbkN1c3RvbUV2ZW50PElNb2R1c1djUGFnaW5hdGlvbklQYWdlQ2hhbmdlPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Zsb2F0aW5nJywgJ2hlaWdodCcsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtcGFuZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Zsb2F0aW5nJywgJ2hlaWdodCcsICd3aWR0aCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djUGFuZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djUGFuZWxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djUGFuZWwgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NQYW5lbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydtYWluTWVudScsICdtZW51T25lJywgJ21lbnVUd28nLCAncHJvZmlsZVByb3BzJywgJ3Nob3dTaWduT3V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1wcm9maWxlLW1lbnUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ21haW5NZW51JywgJ21lbnVPbmUnLCAnbWVudVR3bycsIHsgbmFtZTogJ3Byb2ZpbGVQcm9wcycsIHJlcXVpcmVkOiB0cnVlIH0sICdzaG93U2lnbk91dCddLFxuICBvdXRwdXRzOiBbJ3NpZ25PdXRDbGljaycsICdtZW51SXRlbUNsaWNrJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NQcm9maWxlTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NQcm9maWxlTWVudUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBzaWduT3V0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NQcm9maWxlTWVudUN1c3RvbUV2ZW50PHZvaWQ+PigpO1xuICBAT3V0cHV0KCkgbWVudUl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1Byb2ZpbGVNZW51Q3VzdG9tRXZlbnQ8c3RyaW5nPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NQcm9maWxlTWVudUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djUHJvZmlsZU1lbnUgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NQcm9maWxlTWVudSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIFNpZ24gT3V0IG1lbnUgaXRlbSBpcyBjbGlja2VkXG4gICAqL1xuICBzaWduT3V0Q2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djUHJvZmlsZU1lbnVDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYW55IG1lbnUgaXRlbSBpcyBjbGlja2VkLCBwYXNzaW5nIGJhY2sgdGhlIGl0ZW0gdmFsdWUgb3IgbGFiZWxcbiAgICovXG4gIG1lbnVJdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb2R1c1djUHJvZmlsZU1lbnVDdXN0b21FdmVudDxzdHJpbmc+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICdtYXgnLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtcHJvZ3Jlc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2luZGV0ZXJtaW5hdGUnLCAnbGFiZWwnLCAnbWF4JywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1Byb2dyZXNzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1Byb2dyZXNzRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1Byb2dyZXNzIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djUHJvZ3Jlc3Mge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djUmFkaW8ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djUmFkaW9FbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djUmFkaW9DdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djUmFkaW9DdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NSYWRpb0N1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1JhZGlvQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NSYWRpbyBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1JhZGlvIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djUmFkaW9DdXN0b21FdmVudDxGb2N1c0V2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NSYWRpb0N1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1JhZGlvQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbGxvd0hhbGYnLCAnY291bnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZ2V0QXJpYUxhYmVsVGV4dCcsICdzaXplJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXJhdGluZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWxsb3dIYWxmJywgJ2NvdW50JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2dldEFyaWFMYWJlbFRleHQnLCAnc2l6ZScsICd2YWx1ZScsICd2YXJpYW50J10sXG4gIG91dHB1dHM6IFsncmF0aW5nQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NSYXRpbmcge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djUmF0aW5nRWxlbWVudDtcbiAgQE91dHB1dCgpIHJhdGluZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1JhdGluZ0N1c3RvbUV2ZW50PElNb2R1c1djUmF0aW5nSVJhdGluZ0NoYW5nZT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djUmF0aW5nQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgSVJhdGluZ0NoYW5nZSBhcyBJTW9kdXNXY1JhdGluZ0lSYXRpbmdDaGFuZ2UgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NSYXRpbmcgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NSYXRpbmcge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSByYXRpbmcgY2hhbmdlc1xuICAgKi9cbiAgcmF0aW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1JhdGluZ0N1c3RvbUV2ZW50PElNb2R1c1djUmF0aW5nSVJhdGluZ0NoYW5nZT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3JkZXJlZCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmZWVkYmFjaycsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25zJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9ucycsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsnaW5wdXRCbHVyJywgJ2lucHV0Q2hhbmdlJywgJ2lucHV0Rm9jdXMnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1NlbGVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NTZWxlY3RFbGVtZW50O1xuICBAT3V0cHV0KCkgaW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1NlbGVjdEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1NlbGVjdEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1NlbGVjdEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djU2VsZWN0IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djU2VsZWN0IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBnYWlucyBmb2N1cy5cbiAgICovXG4gIGlucHV0Rm9jdXM6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2VsZWN0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb2xsYXBzZU9uQ2xpY2tPdXRzaWRlJywgJ2N1c3RvbUNsYXNzJywgJ2V4cGFuZGVkJywgJ21heFdpZHRoJywgJ21vZGUnLCAndGFyZ2V0Q29udGVudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2Mtc2lkZS1uYXZpZ2F0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xsYXBzZU9uQ2xpY2tPdXRzaWRlJywgJ2N1c3RvbUNsYXNzJywgJ2V4cGFuZGVkJywgJ21heFdpZHRoJywgJ21vZGUnLCAndGFyZ2V0Q29udGVudCddLFxuICBvdXRwdXRzOiBbJ2V4cGFuZGVkQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NTaWRlTmF2aWdhdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NTaWRlTmF2aWdhdGlvbkVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBleHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1NpZGVOYXZpZ2F0aW9uQ3VzdG9tRXZlbnQ8Ym9vbGVhbj4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djU2lkZU5hdmlnYXRpb25DdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1NpZGVOYXZpZ2F0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djU2lkZU5hdmlnYXRpb24ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBleHBhbmRlZCBzdGF0ZSBjaGFuZ2VzIChleHBhbmRlZC9jb2xsYXBzZWQpLlxuICAgKi9cbiAgZXhwYW5kZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djU2lkZU5hdmlnYXRpb25DdXN0b21FdmVudDxib29sZWFuPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2hlaWdodCcsICdzaGFwZScsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2Mtc2tlbGV0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2hlaWdodCcsICdzaGFwZScsICd3aWR0aCddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djU2tlbGV0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djU2tlbGV0b25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djU2tlbGV0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NTa2VsZXRvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAnc3RlcCcsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2Mtc2xpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAnc3RlcCcsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NTbGlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djU2xpZGVyRWxlbWVudDtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NTbGlkZXJDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NTbGlkZXJDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NTbGlkZXJDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1NsaWRlciBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1NsaWRlciB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIGlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1NsaWRlckN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnaW50ZXJhY3RpdmUnLCAnb3JpZW50YXRpb24nLCAnc3RlcHMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXN0ZXBwZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2ludGVyYWN0aXZlJywgJ29yaWVudGF0aW9uJywgJ3N0ZXBzJ10sXG4gIG91dHB1dHM6IFsnc3RlcENsaWNrJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NTdGVwcGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1N0ZXBwZXJFbGVtZW50O1xuICBAT3V0cHV0KCkgc3RlcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djU3RlcHBlckN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlciB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NTdGVwcGVyQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NTdGVwcGVyIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djU3RlcHBlciB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdpdGggdGhlIDAtYmFzZWQgc3RlcCBpbmRleCB3aGVuIGEgc3RlcCBpcyBhY3RpdmF0ZWQgYW5kIGBpbnRlcmFjdGl2ZWAgaXMgdHJ1ZS5cbiAgICovXG4gIHN0ZXBDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NTdGVwcGVyQ3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnaW5kZXRlcm1pbmF0ZScsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy1zd2l0Y2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2luZGV0ZXJtaW5hdGUnLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWx1ZSddLFxuICBvdXRwdXRzOiBbJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NTd2l0Y2gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djU3dpdGNoRWxlbWVudDtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NTd2l0Y2hDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NTd2l0Y2hDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NTd2l0Y2hDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1N3aXRjaCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1N3aXRjaCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIGlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1N3aXRjaEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY2FwdGlvbicsICdjb2x1bW5zJywgJ2N1cnJlbnRQYWdlJywgJ2N1c3RvbUNsYXNzJywgJ2RhdGEnLCAnZGVuc2l0eScsICdlZGl0YWJsZScsICdob3ZlcicsICdpc1Jvd1NlbGVjdGFibGUnLCAncGFnZVNpemVPcHRpb25zJywgJ3BhZ2luYXRlZCcsICdzZWxlY3RhYmxlJywgJ3NlbGVjdGVkUm93SWRzJywgJ3Nob3dQYWdlU2l6ZVNlbGVjdG9yJywgJ3NvcnRhYmxlJywgJ3plYnJhJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10YWJsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2FwdGlvbicsIHsgbmFtZTogJ2NvbHVtbnMnLCByZXF1aXJlZDogdHJ1ZSB9LCAnY3VycmVudFBhZ2UnLCAnY3VzdG9tQ2xhc3MnLCB7IG5hbWU6ICdkYXRhJywgcmVxdWlyZWQ6IHRydWUgfSwgJ2RlbnNpdHknLCAnZWRpdGFibGUnLCAnaG92ZXInLCAnaXNSb3dTZWxlY3RhYmxlJywgJ3BhZ2VTaXplT3B0aW9ucycsICdwYWdpbmF0ZWQnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZFJvd0lkcycsICdzaG93UGFnZVNpemVTZWxlY3RvcicsICdzb3J0YWJsZScsICd6ZWJyYSddLFxuICBvdXRwdXRzOiBbJ2NlbGxFZGl0U3RhcnQnLCAnY2VsbEVkaXRDb21taXQnLCAncm93Q2xpY2snLCAnc29ydENoYW5nZScsICdwYWdpbmF0aW9uQ2hhbmdlJywgJ3Jvd1NlbGVjdGlvbkNoYW5nZSddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djVGFibGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVGFibGVFbGVtZW50O1xuICBAT3V0cHV0KCkgY2VsbEVkaXRTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8eyByb3dJbmRleDogbnVtYmVyOyBjb2xJZDogc3RyaW5nOyB9Pj4oKTtcbiAgQE91dHB1dCgpIGNlbGxFZGl0Q29tbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDx7IHJvd0luZGV4OiBudW1iZXI7IGNvbElkOiBzdHJpbmc7IG5ld1ZhbHVlOiB1bmtub3duOyB1cGRhdGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgfT4+KCk7XG4gIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8eyByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+OyBpbmRleDogbnVtYmVyOyB9Pj4oKTtcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PElNb2R1c1djVGFibGVTb3J0aW5nU3RhdGU+PigpO1xuICBAT3V0cHV0KCkgcGFnaW5hdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NUYWJsZUlQYWdpbmF0aW9uQ2hhbmdlRXZlbnREZXRhaWw+PigpO1xuICBAT3V0cHV0KCkgcm93U2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDx7IHNlbGVjdGVkUm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTsgc2VsZWN0ZWRSb3dJZHM6IHN0cmluZ1tdOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IFNvcnRpbmdTdGF0ZSBhcyBJTW9kdXNXY1RhYmxlU29ydGluZ1N0YXRlIH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IElQYWdpbmF0aW9uQ2hhbmdlRXZlbnREZXRhaWwgYXMgSU1vZHVzV2NUYWJsZUlQYWdpbmF0aW9uQ2hhbmdlRXZlbnREZXRhaWwgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUYWJsZSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RhYmxlIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gY2VsbCBlZGl0aW5nIHN0YXJ0cy5cbiAgICovXG4gIGNlbGxFZGl0U3RhcnQ6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFibGVDdXN0b21FdmVudDx7IHJvd0luZGV4OiBudW1iZXI7IGNvbElkOiBzdHJpbmc7IH0+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gY2VsbCBlZGl0aW5nIGlzIGNvbW1pdHRlZCB3aXRoIHRoZSBuZXcgdmFsdWUuXG4gICAqL1xuICBjZWxsRWRpdENvbW1pdDogRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PHsgcm93SW5kZXg6IG51bWJlcjsgY29sSWQ6IHN0cmluZzsgbmV3VmFsdWU6IHVua25vd247IHVwZGF0ZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+OyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgcm93IGlzIGNsaWNrZWQuXG4gICAqL1xuICByb3dDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PHsgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgaW5kZXg6IG51bWJlcjsgfT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBzb3J0aW5nIGNoYW5nZXMgd2l0aCB0aGUgbmV3IHNvcnRpbmcgc3RhdGUuXG4gICAqL1xuICBzb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NUYWJsZVNvcnRpbmdTdGF0ZT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBwYWdpbmF0aW9uIGNoYW5nZXMgd2l0aCB0aGUgbmV3IHBhZ2luYXRpb24gc3RhdGUuXG4gICAqL1xuICBwYWdpbmF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RhYmxlQ3VzdG9tRXZlbnQ8SU1vZHVzV2NUYWJsZUlQYWdpbmF0aW9uQ2hhbmdlRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gcm93IHNlbGVjdGlvbiBjaGFuZ2VzIHdpdGggdGhlIHNlbGVjdGVkIHJvd3MgYW5kIHRoZWlyIElEcy5cbiAgICovXG4gIHJvd1NlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJsZUN1c3RvbUV2ZW50PHsgc2VsZWN0ZWRSb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdOyBzZWxlY3RlZFJvd0lkczogc3RyaW5nW107IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlVGFiSW5kZXgnLCAnY3VzdG9tQ2xhc3MnLCAnc2l6ZScsICd0YWJTdHlsZScsICd0YWJzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10YWJzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmVUYWJJbmRleCcsICdjdXN0b21DbGFzcycsICdzaXplJywgJ3RhYlN0eWxlJywgJ3RhYnMnXSxcbiAgb3V0cHV0czogWyd0YWJDaGFuZ2UnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1RhYnMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVGFic0VsZW1lbnQ7XG4gIEBPdXRwdXQoKSB0YWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUYWJzQ3VzdG9tRXZlbnQ8eyBwcmV2aW91c1RhYjogbnVtYmVyOyBuZXdUYWI6IG51bWJlcjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djVGFic0N1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVGFicyBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RhYnMge1xuICAvKipcbiAgICogV2hlbiBhIHRhYiBpcyBzd2l0Y2hlZCB0bywgdGhpcyBldmVudCBvdXRwdXRzIHRoZSByZWxldmFudCBpbmRpY2VzXG4gICAqL1xuICB0YWJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGFic0N1c3RvbUV2ZW50PHsgcHJldmlvdXNUYWI6IG51bWJlcjsgbmV3VGFiOiBudW1iZXI7IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0NhcGl0YWxpemUnLCAnYXV0b0NvbXBsZXRlJywgJ2F1dG9Db3JyZWN0JywgJ2JvcmRlcmVkJywgJ2NsZWFyQXJpYUxhYmVsJywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2VudGVya2V5aGludCcsICdmZWVkYmFjaycsICdpbmNsdWRlQ2xlYXInLCAnaW5jbHVkZVNlYXJjaCcsICdpbnB1dElkJywgJ2lucHV0VGFiSW5kZXgnLCAnbGFiZWwnLCAnbWF4TGVuZ3RoJywgJ21pbkxlbmd0aCcsICduYW1lJywgJ3BhdHRlcm4nLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2l6ZScsICd0eXBlJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10ZXh0LWlucHV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvQ2FwaXRhbGl6ZScsICdhdXRvQ29tcGxldGUnLCAnYXV0b0NvcnJlY3QnLCAnYm9yZGVyZWQnLCAnY2xlYXJBcmlhTGFiZWwnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZW50ZXJrZXloaW50JywgJ2ZlZWRiYWNrJywgJ2luY2x1ZGVDbGVhcicsICdpbmNsdWRlU2VhcmNoJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaXplJywgJ3R5cGUnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydjbGVhckNsaWNrJywgJ2lucHV0Qmx1cicsICdpbnB1dENoYW5nZScsICdpbnB1dEZvY3VzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUZXh0SW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVGV4dElucHV0RWxlbWVudDtcbiAgQE91dHB1dCgpIGNsZWFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0SW5wdXRDdXN0b21FdmVudDx2b2lkPj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0SW5wdXRDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0SW5wdXRDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUZXh0SW5wdXRDdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1RleHRJbnB1dCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RleHRJbnB1dCB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNsZWFyIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgY2xlYXJDbGljazogRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0SW5wdXRDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIGlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PElucHV0RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0NvcnJlY3QnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZW50ZXJrZXloaW50JywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAncm93cycsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10ZXh0YXJlYScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0NvcnJlY3QnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZW50ZXJrZXloaW50JywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAncm93cycsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG91dHB1dHM6IFsnaW5wdXRCbHVyJywgJ2lucHV0Q2hhbmdlJywgJ2lucHV0Rm9jdXMnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1RleHRhcmVhIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1RleHRhcmVhRWxlbWVudDtcbiAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRhcmVhQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRhcmVhQ3VzdG9tRXZlbnQ8SW5wdXRFdmVudD4+KCk7XG4gIEBPdXRwdXQoKSBpbnB1dEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dGFyZWFDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUZXh0YXJlYUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVGV4dGFyZWEgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUZXh0YXJlYSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRCbHVyOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RleHRhcmVhQ3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGV4dGFyZWFDdXN0b21FdmVudDxJbnB1dEV2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGdhaW5zIGZvY3VzLlxuICAgKi9cbiAgaW5wdXRGb2N1czogRXZlbnRFbWl0dGVyPE1vZHVzV2NUZXh0YXJlYUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnaW5pdGlhbFRoZW1lJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10aGVtZS1wcm92aWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnaW5pdGlhbFRoZW1lJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUaGVtZVByb3ZpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1RoZW1lUHJvdmlkZXJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVGhlbWVQcm92aWRlciBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1RoZW1lUHJvdmlkZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRoZW1lLXN3aXRjaGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcyddLFxuICBvdXRwdXRzOiBbJ3RoZW1lQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUaGVtZVN3aXRjaGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1RoZW1lU3dpdGNoZXJFbGVtZW50O1xuICBAT3V0cHV0KCkgdGhlbWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUaGVtZVN3aXRjaGVyQ3VzdG9tRXZlbnQ8SU1vZHVzV2NUaGVtZVN3aXRjaGVySVRoZW1lQ29uZmlnPj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUaGVtZVN3aXRjaGVyQ3VzdG9tRXZlbnQgfSBmcm9tICdAdHJpbWJsZS1vc3MvbW9kdXN3ZWJjb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgSVRoZW1lQ29uZmlnIGFzIElNb2R1c1djVGhlbWVTd2l0Y2hlcklUaGVtZUNvbmZpZyB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1RoZW1lU3dpdGNoZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUaGVtZVN3aXRjaGVyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IHRoYXQgZmlyZXMgd2hlbiB0aGUgdGhlbWUgaXMgY2hhbmdlZC5cbiAgICovXG4gIHRoZW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RoZW1lU3dpdGNoZXJDdXN0b21FdmVudDxJTW9kdXNXY1RoZW1lU3dpdGNoZXJJVGhlbWVDb25maWc+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0NvbXBsZXRlJywgJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2RhdGFsaXN0SWQnLCAnZGF0YWxpc3RPcHRpb25zJywgJ2Rpc2FibGVkJywgJ2ZlZWRiYWNrJywgJ2lucHV0SWQnLCAnaW5wdXRUYWJJbmRleCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2hvd1NlY29uZHMnLCAnc2l6ZScsICdzdGVwJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb2R1cy13Yy10aW1lLWlucHV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvQ29tcGxldGUnLCAnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnZGF0YWxpc3RJZCcsICdkYXRhbGlzdE9wdGlvbnMnLCAnZGlzYWJsZWQnLCAnZmVlZGJhY2snLCAnaW5wdXRJZCcsICdpbnB1dFRhYkluZGV4JywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93U2Vjb25kcycsICdzaXplJywgJ3N0ZXAnLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpbnB1dEJsdXInLCAnaW5wdXRDaGFuZ2UnLCAnaW5wdXRGb2N1cyddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djVGltZUlucHV0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1RpbWVJbnB1dEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBpbnB1dEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUaW1lSW5wdXRDdXN0b21FdmVudDxGb2N1c0V2ZW50Pj4oKTtcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVGltZUlucHV0Q3VzdG9tRXZlbnQ8RXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgaW5wdXRGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RpbWVJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1RpbWVJbnB1dEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVGltZUlucHV0IGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVGltZUlucHV0IHtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEJsdXI6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGltZUlucHV0Q3VzdG9tRXZlbnQ8Rm9jdXNFdmVudD4+O1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2R1c1djVGltZUlucHV0Q3VzdG9tRXZlbnQ8RXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgZ2FpbnMgZm9jdXMuXG4gICAqL1xuICBpbnB1dEZvY3VzOiBFdmVudEVtaXR0ZXI8TW9kdXNXY1RpbWVJbnB1dEN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZGVsYXknLCAncG9zaXRpb24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRvYXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdkZWxheScsICdwb3NpdGlvbiddLFxuICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBNb2R1c1djVG9hc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVG9hc3RFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVG9hc3QgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUb2FzdCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdG9vbGJhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1Rvb2xiYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVG9vbGJhckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1vZHVzV2NUb29sYmFyIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVG9vbGJhciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjb250ZW50JywgJ2NvbnRlbnRFbGVtZW50JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZvcmNlT3BlbicsICdwb3NpdGlvbicsICd0b29sdGlwSWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRvb2x0aXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbnRlbnQnLCAnY29udGVudEVsZW1lbnQnLCAnY3VzdG9tQ2xhc3MnLCAnZGlzYWJsZWQnLCAnZm9yY2VPcGVuJywgJ3Bvc2l0aW9uJywgJ3Rvb2x0aXBJZCddLFxuICBvdXRwdXRzOiBbJ2Rpc21pc3NFc2NhcGUnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTW9kdXNXY1Rvb2x0aXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVG9vbHRpcEVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBkaXNtaXNzRXNjYXBlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVG9vbHRpcEN1c3RvbUV2ZW50PGFueT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djVG9vbHRpcEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVG9vbHRpcCBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1Rvb2x0aXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgdGhhdCBmaXJlcyB3aGVuIHRoZSB0b29sdGlwIGlzIGRpc21pc3NlZCB2aWEgRXNjYXBlIGtleVxuICAgKi9cbiAgZGlzbWlzc0VzY2FwZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NUb29sdGlwQ3VzdG9tRXZlbnQ8YW55Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Jsb2NrRXhwYW5kJywgJ2JvcmRlcmVkJywgJ2NoZWNrYm94JywgJ2N1c3RvbUNsYXNzJywgJ2Rpc2FibGVkJywgJ2ZvY3VzZWQnLCAnaGFzU3VibWVudScsICdsYWJlbCcsICdzZWxlY3RlZCcsICdzaXplJywgJ3N1YkxhYmVsJywgJ3Rvb2x0aXBDb250ZW50JywgJ3Rvb2x0aXBQb3NpdGlvbicsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NvbGxhcHNlU3VibWVudSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdHJlZS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydibG9ja0V4cGFuZCcsICdib3JkZXJlZCcsICdjaGVja2JveCcsICdjdXN0b21DbGFzcycsICdkaXNhYmxlZCcsICdmb2N1c2VkJywgJ2hhc1N1Ym1lbnUnLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAnc2l6ZScsICdzdWJMYWJlbCcsICd0b29sdGlwQ29udGVudCcsICd0b29sdGlwUG9zaXRpb24nLCAndmFsdWUnXSxcbiAgb3V0cHV0czogWydpdGVtU2VsZWN0J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUcmVlSXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NUcmVlSXRlbUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVHJlZUl0ZW1DdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IHNlbGVjdGVkPzogYm9vbGVhbjsgfT4+KCk7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNb2R1c1djVHJlZUl0ZW1DdXN0b21FdmVudCB9IGZyb20gJ0B0cmltYmxlLW9zcy9tb2R1c3dlYmNvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTW9kdXNXY1RyZWVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVHJlZUl0ZW0ge1xuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgdHJlZSBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgaXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPE1vZHVzV2NUcmVlSXRlbUN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgc2VsZWN0ZWQ/OiBib29sZWFuOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcmVkJywgJ2N1c3RvbUNsYXNzJywgJ2lzU3ViTWVudScsICdvcmllbnRhdGlvbicsICdzZWxlY3Rpb25Nb2RlJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXRyZWUtbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYm9yZGVyZWQnLCAnY3VzdG9tQ2xhc3MnLCAnaXNTdWJNZW51JywgJ29yaWVudGF0aW9uJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2l6ZSddLFxuICBvdXRwdXRzOiBbJ21lbnVGb2N1c291dCcsICdtZW51U2VsZWN0aW9uQ2hhbmdlJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUcmVlTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTE1vZHVzV2NUcmVlTWVudUVsZW1lbnQ7XG4gIEBPdXRwdXQoKSBtZW51Rm9jdXNvdXQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZHVzV2NUcmVlTWVudUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PigpO1xuICBAT3V0cHV0KCkgbWVudVNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1RyZWVNZW51Q3VzdG9tRXZlbnQ8eyBzZWxlY3RlZEl0ZW1zOiBIVE1MRWxlbWVudFtdOyB9Pj4oKTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1vZHVzV2NUcmVlTWVudUN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVHJlZU1lbnUgZXh0ZW5kcyBDb21wb25lbnRzLk1vZHVzV2NUcmVlTWVudSB7XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHRyZWUgbWVudSBsb3NlcyBmb2N1cy5cbiAgICovXG4gIG1lbnVGb2N1c291dDogRXZlbnRFbWl0dGVyPE1vZHVzV2NUcmVlTWVudUN1c3RvbUV2ZW50PEZvY3VzRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMgaW4gbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGUuIEVtaXRzIHRoZSBhcnJheSBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgdHJlZSBpdGVtIGVsZW1lbnRzLlxuICAgKi9cbiAgbWVudVNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPE1vZHVzV2NUcmVlTWVudUN1c3RvbUV2ZW50PHsgc2VsZWN0ZWRJdGVtczogSFRNTEVsZW1lbnRbXTsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjdXN0b21DbGFzcycsICdoaWVyYXJjaHknLCAnbGFiZWwnLCAnc2l6ZScsICd3ZWlnaHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vZHVzLXdjLXR5cG9ncmFwaHknLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2N1c3RvbUNsYXNzJywgJ2hpZXJhcmNoeScsIHsgbmFtZTogJ2xhYmVsJywgcmVxdWlyZWQ6IHRydWUgfSwgJ3NpemUnLCAnd2VpZ2h0J10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NUeXBvZ3JhcGh5IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MTW9kdXNXY1R5cG9ncmFwaHlFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVHlwb2dyYXBoeSBleHRlbmRzIENvbXBvbmVudHMuTW9kdXNXY1R5cG9ncmFwaHkge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZXhwYW5kZWQnLCAncHVzaENvbnRlbnQnLCAndGFyZ2V0RWxlbWVudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9kdXMtd2MtdXRpbGl0eS1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY3VzdG9tQ2xhc3MnLCAnZXhwYW5kZWQnLCAncHVzaENvbnRlbnQnLCAndGFyZ2V0RWxlbWVudCddLFxuICBvdXRwdXRzOiBbJ3BhbmVsT3BlbmVkJywgJ3BhbmVsQ2xvc2VkJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1vZHVzV2NVdGlsaXR5UGFuZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxNb2R1c1djVXRpbGl0eVBhbmVsRWxlbWVudDtcbiAgQE91dHB1dCgpIHBhbmVsT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxNb2R1c1djVXRpbGl0eVBhbmVsQ3VzdG9tRXZlbnQ8dm9pZD4+KCk7XG4gIEBPdXRwdXQoKSBwYW5lbENsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TW9kdXNXY1V0aWxpdHlQYW5lbEN1c3RvbUV2ZW50PHZvaWQ+PigpO1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTW9kdXNXY1V0aWxpdHlQYW5lbEN1c3RvbUV2ZW50IH0gZnJvbSAnQHRyaW1ibGUtb3NzL21vZHVzd2ViY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2R1c1djVXRpbGl0eVBhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5Nb2R1c1djVXRpbGl0eVBhbmVsIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IHRoYXQgZmlyZXMgd2hlbiB0aGUgcGFuZWwgaXMgb3BlbmVkLlxuICAgKi9cbiAgcGFuZWxPcGVuZWQ6IEV2ZW50RW1pdHRlcjxNb2R1c1djVXRpbGl0eVBhbmVsQ3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgdGhhdCBmaXJlcyB3aGVuIHRoZSBwYW5lbCBpcyBjbG9zZWQuXG4gICAqL1xuICBwYW5lbENsb3NlZDogRXZlbnRFbWl0dGVyPE1vZHVzV2NVdGlsaXR5UGFuZWxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuIl19