@trimble-oss/moduswebcomponents-angular 1.9.0-ng21 → 1.9.1-ng18

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