@awc-ui/angular 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +5 -1
  2. package/fesm2022/awc-ui-angular.mjs +276 -275
  3. package/fesm2022/awc-ui-angular.mjs.map +1 -1
  4. package/index.d.ts +2137 -12
  5. package/package.json +6 -8
  6. package/awc-ui.module.d.ts +0 -73
  7. package/directives/angular-component-lib/utils.d.ts +0 -9
  8. package/directives/boolean-value-accessor.d.ts +0 -9
  9. package/directives/index.d.ts +0 -2
  10. package/directives/multi-select-value-accessor.d.ts +0 -10
  11. package/directives/number-value-accessor.d.ts +0 -9
  12. package/directives/proxies.d.ts +0 -2005
  13. package/directives/radio-value-accessor.d.ts +0 -39
  14. package/directives/select-value-accessor.d.ts +0 -8
  15. package/directives/switch-value-accessor.d.ts +0 -21
  16. package/directives/text-value-accessor.d.ts +0 -8
  17. package/directives/value-accessor.d.ts +0 -18
  18. package/esm2022/awc-ui-angular.mjs +0 -5
  19. package/esm2022/awc-ui.module.mjs +0 -108
  20. package/esm2022/directives/angular-component-lib/utils.mjs +0 -59
  21. package/esm2022/directives/boolean-value-accessor.mjs +0 -38
  22. package/esm2022/directives/index.mjs +0 -85
  23. package/esm2022/directives/multi-select-value-accessor.mjs +0 -23
  24. package/esm2022/directives/number-value-accessor.mjs +0 -40
  25. package/esm2022/directives/proxies.mjs +0 -2379
  26. package/esm2022/directives/radio-value-accessor.mjs +0 -105
  27. package/esm2022/directives/select-value-accessor.mjs +0 -35
  28. package/esm2022/directives/switch-value-accessor.mjs +0 -53
  29. package/esm2022/directives/text-value-accessor.mjs +0 -35
  30. package/esm2022/directives/value-accessor.mjs +0 -40
  31. package/esm2022/index.mjs +0 -16
@@ -1,2379 +0,0 @@
1
- import { __decorate } from "tslib";
2
- /* tslint:disable */
3
- /* auto-generated angular directive proxies */
4
- import { ChangeDetectionStrategy, Component } from '@angular/core';
5
- import { ProxyCmp, proxyOutputs } from './angular-component-lib/utils';
6
- import { defineCustomElement as defineMdAccordion } from '@awc-ui/core/dist/components/md-accordion.js';
7
- import { defineCustomElement as defineMdAccordionItem } from '@awc-ui/core/dist/components/md-accordion-item.js';
8
- import { defineCustomElement as defineMdAppBar } from '@awc-ui/core/dist/components/md-app-bar.js';
9
- import { defineCustomElement as defineMdAreaChart } from '@awc-ui/core/dist/components/md-area-chart.js';
10
- import { defineCustomElement as defineMdAutocomplete } from '@awc-ui/core/dist/components/md-autocomplete.js';
11
- import { defineCustomElement as defineMdAvatar } from '@awc-ui/core/dist/components/md-avatar.js';
12
- import { defineCustomElement as defineMdBadge } from '@awc-ui/core/dist/components/md-badge.js';
13
- import { defineCustomElement as defineMdBarChart } from '@awc-ui/core/dist/components/md-bar-chart.js';
14
- import { defineCustomElement as defineMdBottomSheet } from '@awc-ui/core/dist/components/md-bottom-sheet.js';
15
- import { defineCustomElement as defineMdBreadcrumbItem } from '@awc-ui/core/dist/components/md-breadcrumb-item.js';
16
- import { defineCustomElement as defineMdBreadcrumbs } from '@awc-ui/core/dist/components/md-breadcrumbs.js';
17
- import { defineCustomElement as defineMdButton } from '@awc-ui/core/dist/components/md-button.js';
18
- import { defineCustomElement as defineMdButtonGroup } from '@awc-ui/core/dist/components/md-button-group.js';
19
- import { defineCustomElement as defineMdCard } from '@awc-ui/core/dist/components/md-card.js';
20
- import { defineCustomElement as defineMdCheckbox } from '@awc-ui/core/dist/components/md-checkbox.js';
21
- import { defineCustomElement as defineMdChip } from '@awc-ui/core/dist/components/md-chip.js';
22
- import { defineCustomElement as defineMdColorPicker } from '@awc-ui/core/dist/components/md-color-picker.js';
23
- import { defineCustomElement as defineMdDatePicker } from '@awc-ui/core/dist/components/md-date-picker.js';
24
- import { defineCustomElement as defineMdDialog } from '@awc-ui/core/dist/components/md-dialog.js';
25
- import { defineCustomElement as defineMdDivider } from '@awc-ui/core/dist/components/md-divider.js';
26
- import { defineCustomElement as defineMdFab } from '@awc-ui/core/dist/components/md-fab.js';
27
- import { defineCustomElement as defineMdFabMenu } from '@awc-ui/core/dist/components/md-fab-menu.js';
28
- import { defineCustomElement as defineMdFabMenuItem } from '@awc-ui/core/dist/components/md-fab-menu-item.js';
29
- import { defineCustomElement as defineMdIconButton } from '@awc-ui/core/dist/components/md-icon-button.js';
30
- import { defineCustomElement as defineMdLineChart } from '@awc-ui/core/dist/components/md-line-chart.js';
31
- import { defineCustomElement as defineMdList } from '@awc-ui/core/dist/components/md-list.js';
32
- import { defineCustomElement as defineMdListItem } from '@awc-ui/core/dist/components/md-list-item.js';
33
- import { defineCustomElement as defineMdLoadingIndicator } from '@awc-ui/core/dist/components/md-loading-indicator.js';
34
- import { defineCustomElement as defineMdMenu } from '@awc-ui/core/dist/components/md-menu.js';
35
- import { defineCustomElement as defineMdMenuItem } from '@awc-ui/core/dist/components/md-menu-item.js';
36
- import { defineCustomElement as defineMdMenuItemGroup } from '@awc-ui/core/dist/components/md-menu-item-group.js';
37
- import { defineCustomElement as defineMdMeter } from '@awc-ui/core/dist/components/md-meter.js';
38
- import { defineCustomElement as defineMdMultiSelect } from '@awc-ui/core/dist/components/md-multi-select.js';
39
- import { defineCustomElement as defineMdNavigationBar } from '@awc-ui/core/dist/components/md-navigation-bar.js';
40
- import { defineCustomElement as defineMdNavigationRail } from '@awc-ui/core/dist/components/md-navigation-rail.js';
41
- import { defineCustomElement as defineMdNavigationRailTab } from '@awc-ui/core/dist/components/md-navigation-rail-tab.js';
42
- import { defineCustomElement as defineMdNavigationTab } from '@awc-ui/core/dist/components/md-navigation-tab.js';
43
- import { defineCustomElement as defineMdNumberField } from '@awc-ui/core/dist/components/md-number-field.js';
44
- import { defineCustomElement as defineMdOrganizationChart } from '@awc-ui/core/dist/components/md-organization-chart.js';
45
- import { defineCustomElement as defineMdOtpField } from '@awc-ui/core/dist/components/md-otp-field.js';
46
- import { defineCustomElement as defineMdPieChart } from '@awc-ui/core/dist/components/md-pie-chart.js';
47
- import { defineCustomElement as defineMdProgressIndicator } from '@awc-ui/core/dist/components/md-progress-indicator.js';
48
- import { defineCustomElement as defineMdRadio } from '@awc-ui/core/dist/components/md-radio.js';
49
- import { defineCustomElement as defineMdRating } from '@awc-ui/core/dist/components/md-rating.js';
50
- import { defineCustomElement as defineMdRipple } from '@awc-ui/core/dist/components/md-ripple.js';
51
- import { defineCustomElement as defineMdSearch } from '@awc-ui/core/dist/components/md-search.js';
52
- import { defineCustomElement as defineMdSegmentedButton } from '@awc-ui/core/dist/components/md-segmented-button.js';
53
- import { defineCustomElement as defineMdSegmentedButtonSet } from '@awc-ui/core/dist/components/md-segmented-button-set.js';
54
- import { defineCustomElement as defineMdSelect } from '@awc-ui/core/dist/components/md-select.js';
55
- import { defineCustomElement as defineMdSelectOption } from '@awc-ui/core/dist/components/md-select-option.js';
56
- import { defineCustomElement as defineMdSideSheet } from '@awc-ui/core/dist/components/md-side-sheet.js';
57
- import { defineCustomElement as defineMdSkeleton } from '@awc-ui/core/dist/components/md-skeleton.js';
58
- import { defineCustomElement as defineMdSlider } from '@awc-ui/core/dist/components/md-slider.js';
59
- import { defineCustomElement as defineMdSnackbar } from '@awc-ui/core/dist/components/md-snackbar.js';
60
- import { defineCustomElement as defineMdSparkline } from '@awc-ui/core/dist/components/md-sparkline.js';
61
- import { defineCustomElement as defineMdSplitButton } from '@awc-ui/core/dist/components/md-split-button.js';
62
- import { defineCustomElement as defineMdStatusDot } from '@awc-ui/core/dist/components/md-status-dot.js';
63
- import { defineCustomElement as defineMdStep } from '@awc-ui/core/dist/components/md-step.js';
64
- import { defineCustomElement as defineMdStepper } from '@awc-ui/core/dist/components/md-stepper.js';
65
- import { defineCustomElement as defineMdSubMenuItem } from '@awc-ui/core/dist/components/md-sub-menu-item.js';
66
- import { defineCustomElement as defineMdSwitch } from '@awc-ui/core/dist/components/md-switch.js';
67
- import { defineCustomElement as defineMdTab } from '@awc-ui/core/dist/components/md-tab.js';
68
- import { defineCustomElement as defineMdTabPanel } from '@awc-ui/core/dist/components/md-tab-panel.js';
69
- import { defineCustomElement as defineMdTabPanels } from '@awc-ui/core/dist/components/md-tab-panels.js';
70
- import { defineCustomElement as defineMdTable } from '@awc-ui/core/dist/components/md-table.js';
71
- import { defineCustomElement as defineMdTableBody } from '@awc-ui/core/dist/components/md-table-body.js';
72
- import { defineCustomElement as defineMdTableCell } from '@awc-ui/core/dist/components/md-table-cell.js';
73
- import { defineCustomElement as defineMdTableContainer } from '@awc-ui/core/dist/components/md-table-container.js';
74
- import { defineCustomElement as defineMdTableExpandToggle } from '@awc-ui/core/dist/components/md-table-expand-toggle.js';
75
- import { defineCustomElement as defineMdTableFoot } from '@awc-ui/core/dist/components/md-table-foot.js';
76
- import { defineCustomElement as defineMdTableHead } from '@awc-ui/core/dist/components/md-table-head.js';
77
- import { defineCustomElement as defineMdTablePagination } from '@awc-ui/core/dist/components/md-table-pagination.js';
78
- import { defineCustomElement as defineMdTableRow } from '@awc-ui/core/dist/components/md-table-row.js';
79
- import { defineCustomElement as defineMdTableSortLabel } from '@awc-ui/core/dist/components/md-table-sort-label.js';
80
- import { defineCustomElement as defineMdTableToolbar } from '@awc-ui/core/dist/components/md-table-toolbar.js';
81
- import { defineCustomElement as defineMdTabs } from '@awc-ui/core/dist/components/md-tabs.js';
82
- import { defineCustomElement as defineMdTextField } from '@awc-ui/core/dist/components/md-text-field.js';
83
- import { defineCustomElement as defineMdTimePicker } from '@awc-ui/core/dist/components/md-time-picker.js';
84
- import { defineCustomElement as defineMdToolbar } from '@awc-ui/core/dist/components/md-toolbar.js';
85
- import { defineCustomElement as defineMdTooltip } from '@awc-ui/core/dist/components/md-tooltip.js';
86
- import { defineCustomElement as defineMdTransferList } from '@awc-ui/core/dist/components/md-transfer-list.js';
87
- import * as i0 from "@angular/core";
88
- let MdAccordion = class MdAccordion {
89
- constructor(c, r, z) {
90
- this.z = z;
91
- c.detach();
92
- this.el = r.nativeElement;
93
- proxyOutputs(this, this.el, ['mdToggle', 'mdReorder', 'mdDragStart', 'mdDragMove', 'mdDragEnd']);
94
- }
95
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAccordion, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
96
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAccordion, isStandalone: true, selector: "md-accordion", inputs: { bringToFront: "bringToFront", defaultExpanded: "defaultExpanded", density: "density", elevation: "elevation", exclusive: "exclusive", floating: "floating", headingLevel: "headingLevel", initialX: "initialX", initialY: "initialY", keepOneExpanded: "keepOneExpanded", region: "region", regionThreshold: "regionThreshold", reorderable: "reorderable", transition: "transition", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
97
- };
98
- MdAccordion = __decorate([
99
- ProxyCmp({
100
- defineCustomElementFn: defineMdAccordion,
101
- inputs: ['bringToFront', 'defaultExpanded', 'density', 'elevation', 'exclusive', 'floating', 'headingLevel', 'initialX', 'initialY', 'keepOneExpanded', 'region', 'regionThreshold', 'reorderable', 'transition', 'variant']
102
- })
103
- ], MdAccordion);
104
- export { MdAccordion };
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAccordion, decorators: [{
106
- type: Component,
107
- args: [{
108
- selector: 'md-accordion',
109
- changeDetection: ChangeDetectionStrategy.OnPush,
110
- template: '<ng-content></ng-content>',
111
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
112
- inputs: ['bringToFront', 'defaultExpanded', 'density', 'elevation', 'exclusive', 'floating', 'headingLevel', 'initialX', 'initialY', 'keepOneExpanded', 'region', 'regionThreshold', 'reorderable', 'transition', 'variant'],
113
- standalone: true
114
- }]
115
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
116
- let MdAccordionItem = class MdAccordionItem {
117
- constructor(c, r, z) {
118
- this.z = z;
119
- c.detach();
120
- this.el = r.nativeElement;
121
- proxyOutputs(this, this.el, ['mdItemToggle', 'mdItemRequestFocus', 'mdItemRequestReorder']);
122
- }
123
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAccordionItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
124
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAccordionItem, isStandalone: true, selector: "md-accordion-item", inputs: { collapsible: "collapsible", contentMaxHeight: "contentMaxHeight", density: "density", disabled: "disabled", expanded: "expanded", headingLevel: "headingLevel", headline: "headline", icon: "icon", regionRole: "regionRole", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
125
- };
126
- MdAccordionItem = __decorate([
127
- ProxyCmp({
128
- defineCustomElementFn: defineMdAccordionItem,
129
- inputs: ['collapsible', 'contentMaxHeight', 'density', 'disabled', 'expanded', 'headingLevel', 'headline', 'icon', 'regionRole', 'supportingText'],
130
- methods: ['toggle', 'focusHeader']
131
- })
132
- ], MdAccordionItem);
133
- export { MdAccordionItem };
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAccordionItem, decorators: [{
135
- type: Component,
136
- args: [{
137
- selector: 'md-accordion-item',
138
- changeDetection: ChangeDetectionStrategy.OnPush,
139
- template: '<ng-content></ng-content>',
140
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
141
- inputs: ['collapsible', 'contentMaxHeight', 'density', 'disabled', 'expanded', 'headingLevel', 'headline', 'icon', 'regionRole', 'supportingText'],
142
- standalone: true
143
- }]
144
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
145
- let MdAppBar = class MdAppBar {
146
- constructor(c, r, z) {
147
- this.z = z;
148
- c.detach();
149
- this.el = r.nativeElement;
150
- proxyOutputs(this, this.el, ['mdLeadingClick', 'mdSearchActivate', 'mdSearchInput']);
151
- }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAppBar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAppBar, isStandalone: true, selector: "md-app-bar", inputs: { density: "density", headline: "headline", leadingIcon: "leadingIcon", leadingIconLabel: "leadingIconLabel", scrolled: "scrolled", searchAriaLabel: "searchAriaLabel", searchDisabled: "searchDisabled", searchPlaceholder: "searchPlaceholder", searchValue: "searchValue", subtitle: "subtitle", titleAlignment: "titleAlignment", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
154
- };
155
- MdAppBar = __decorate([
156
- ProxyCmp({
157
- defineCustomElementFn: defineMdAppBar,
158
- inputs: ['density', 'headline', 'leadingIcon', 'leadingIconLabel', 'scrolled', 'searchAriaLabel', 'searchDisabled', 'searchPlaceholder', 'searchValue', 'subtitle', 'titleAlignment', 'variant']
159
- })
160
- ], MdAppBar);
161
- export { MdAppBar };
162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAppBar, decorators: [{
163
- type: Component,
164
- args: [{
165
- selector: 'md-app-bar',
166
- changeDetection: ChangeDetectionStrategy.OnPush,
167
- template: '<ng-content></ng-content>',
168
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
169
- inputs: ['density', 'headline', 'leadingIcon', 'leadingIconLabel', 'scrolled', 'searchAriaLabel', 'searchDisabled', 'searchPlaceholder', 'searchValue', 'subtitle', 'titleAlignment', 'variant'],
170
- standalone: true
171
- }]
172
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
173
- let MdAreaChart = class MdAreaChart {
174
- constructor(c, r, z) {
175
- this.z = z;
176
- c.detach();
177
- this.el = r.nativeElement;
178
- proxyOutputs(this, this.el, ['mdMarkerClick', 'mdLineClick', 'mdAreaClick', 'mdAxisClick', 'mdLegendClick', 'mdHover', 'mdReady', 'mdZoom']);
179
- }
180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAreaChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
181
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAreaChart, isStandalone: true, selector: "md-area-chart", inputs: { animation: "animation", animationDuration: "animationDuration", axisTicks: "axisTicks", connectNulls: "connectNulls", curve: "curve", density: "density", fillOpacity: "fillOpacity", grid: "grid", heightProp: "heightProp", inverted: "inverted", label: "label", labelEmpty: "labelEmpty", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", legend: "legend", lineWidth: "lineWidth", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", markSize: "markSize", noAnimation: "noAnimation", series: "series", seriesLabels: "seriesLabels", showLabels: "showLabels", showLine: "showLine", showMarks: "showMarks", stack: "stack", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxis: "yAxis", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
182
- };
183
- MdAreaChart = __decorate([
184
- ProxyCmp({
185
- defineCustomElementFn: defineMdAreaChart,
186
- inputs: ['animation', 'animationDuration', 'axisTicks', 'connectNulls', 'curve', 'density', 'fillOpacity', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'zoom'],
187
- methods: ['refreshTheme', 'resize', 'replay', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
188
- })
189
- ], MdAreaChart);
190
- export { MdAreaChart };
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAreaChart, decorators: [{
192
- type: Component,
193
- args: [{
194
- selector: 'md-area-chart',
195
- changeDetection: ChangeDetectionStrategy.OnPush,
196
- template: '<ng-content></ng-content>',
197
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
198
- inputs: ['animation', 'animationDuration', 'axisTicks', 'connectNulls', 'curve', 'density', 'fillOpacity', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'zoom'],
199
- standalone: true
200
- }]
201
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
202
- let MdAutocomplete = class MdAutocomplete {
203
- constructor(c, r, z) {
204
- this.z = z;
205
- c.detach();
206
- this.el = r.nativeElement;
207
- proxyOutputs(this, this.el, ['mdChange', 'mdInput', 'mdOpen', 'mdClose', 'mdClear', 'mdValidityChange']);
208
- }
209
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAutocomplete, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
210
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAutocomplete, isStandalone: true, selector: "md-autocomplete", inputs: { chipPosition: "chipPosition", clearIcon: "clearIcon", clearOnBlur: "clearOnBlur", clearable: "clearable", density: "density", disableCloseOnSelect: "disableCloseOnSelect", disabled: "disabled", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterMode: "filterMode", filterer: "filterer", freeSolo: "freeSolo", inputValue: "inputValue", label: "label", limitResults: "limitResults", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", maxSelected: "maxSelected", multiple: "multiple", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", softDisabled: "softDisabled", statusTemplate: "statusTemplate", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
211
- };
212
- MdAutocomplete = __decorate([
213
- ProxyCmp({
214
- defineCustomElementFn: defineMdAutocomplete,
215
- inputs: ['chipPosition', 'clearIcon', 'clearOnBlur', 'clearable', 'density', 'disableCloseOnSelect', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterMode', 'filterer', 'freeSolo', 'inputValue', 'label', 'limitResults', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'multiple', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'softDisabled', 'statusTemplate', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
216
- methods: ['focusInput', 'showMenu', 'closeMenu', 'loadOptions', 'getLabels', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
217
- })
218
- ], MdAutocomplete);
219
- export { MdAutocomplete };
220
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAutocomplete, decorators: [{
221
- type: Component,
222
- args: [{
223
- selector: 'md-autocomplete',
224
- changeDetection: ChangeDetectionStrategy.OnPush,
225
- template: '<ng-content></ng-content>',
226
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
227
- inputs: ['chipPosition', 'clearIcon', 'clearOnBlur', 'clearable', 'density', 'disableCloseOnSelect', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterMode', 'filterer', 'freeSolo', 'inputValue', 'label', 'limitResults', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'multiple', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'softDisabled', 'statusTemplate', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
228
- standalone: true
229
- }]
230
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
231
- let MdAvatar = class MdAvatar {
232
- constructor(c, r, z) {
233
- this.z = z;
234
- c.detach();
235
- this.el = r.nativeElement;
236
- proxyOutputs(this, this.el, ['mdLoad', 'mdError']);
237
- }
238
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAvatar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
239
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAvatar, isStandalone: true, selector: "md-avatar", inputs: { alt: "alt", colorFromName: "colorFromName", crossorigin: "crossorigin", density: "density", initials: "initials", label: "label", loading: "loading", name: "name", shape: "shape", size: "size", src: "src" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
240
- };
241
- MdAvatar = __decorate([
242
- ProxyCmp({
243
- defineCustomElementFn: defineMdAvatar,
244
- inputs: ['alt', 'colorFromName', 'crossorigin', 'density', 'initials', 'label', 'loading', 'name', 'shape', 'size', 'src']
245
- })
246
- ], MdAvatar);
247
- export { MdAvatar };
248
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAvatar, decorators: [{
249
- type: Component,
250
- args: [{
251
- selector: 'md-avatar',
252
- changeDetection: ChangeDetectionStrategy.OnPush,
253
- template: '<ng-content></ng-content>',
254
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
255
- inputs: ['alt', 'colorFromName', 'crossorigin', 'density', 'initials', 'label', 'loading', 'name', 'shape', 'size', 'src'],
256
- standalone: true
257
- }]
258
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
259
- let MdBadge = class MdBadge {
260
- constructor(c, r, z) {
261
- this.z = z;
262
- c.detach();
263
- this.el = r.nativeElement;
264
- }
265
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
266
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBadge, isStandalone: true, selector: "md-badge", inputs: { density: "density", icon: "icon", max: "max", shape: "shape", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
267
- };
268
- MdBadge = __decorate([
269
- ProxyCmp({
270
- defineCustomElementFn: defineMdBadge,
271
- inputs: ['density', 'icon', 'max', 'shape', 'value', 'variant']
272
- })
273
- ], MdBadge);
274
- export { MdBadge };
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBadge, decorators: [{
276
- type: Component,
277
- args: [{
278
- selector: 'md-badge',
279
- changeDetection: ChangeDetectionStrategy.OnPush,
280
- template: '<ng-content></ng-content>',
281
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
282
- inputs: ['density', 'icon', 'max', 'shape', 'value', 'variant'],
283
- standalone: true
284
- }]
285
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
286
- let MdBarChart = class MdBarChart {
287
- constructor(c, r, z) {
288
- this.z = z;
289
- c.detach();
290
- this.el = r.nativeElement;
291
- proxyOutputs(this, this.el, ['mdBarClick', 'mdLegendClick', 'mdHover', 'mdReady', 'mdZoom']);
292
- }
293
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBarChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBarChart, isStandalone: true, selector: "md-bar-chart", inputs: { animation: "animation", animationDuration: "animationDuration", axisTicks: "axisTicks", barGap: "barGap", barWidth: "barWidth", categoryGap: "categoryGap", chevron: "chevron", clickable: "clickable", cornerRadius: "cornerRadius", density: "density", heightProp: "heightProp", label: "label", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", layout: "layout", legend: "legend", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", noAnimation: "noAnimation", polar: "polar", polarHole: "polarHole", polarSweep: "polarSweep", series: "series", showLabels: "showLabels", showTotals: "showTotals", stack: "stack", subtitle: "subtitle", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxis: "yAxis", yAxis2: "yAxis2", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
295
- };
296
- MdBarChart = __decorate([
297
- ProxyCmp({
298
- defineCustomElementFn: defineMdBarChart,
299
- inputs: ['animation', 'animationDuration', 'axisTicks', 'barGap', 'barWidth', 'categoryGap', 'chevron', 'clickable', 'cornerRadius', 'density', 'heightProp', 'label', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'layout', 'legend', 'loading', 'loadingLabel', 'locale', 'noAnimation', 'polar', 'polarHole', 'polarSweep', 'series', 'showLabels', 'showTotals', 'stack', 'subtitle', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'yAxis2', 'zoom'],
300
- methods: ['refreshTheme', 'resize', 'replay', 'drill', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
301
- })
302
- ], MdBarChart);
303
- export { MdBarChart };
304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBarChart, decorators: [{
305
- type: Component,
306
- args: [{
307
- selector: 'md-bar-chart',
308
- changeDetection: ChangeDetectionStrategy.OnPush,
309
- template: '<ng-content></ng-content>',
310
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
311
- inputs: ['animation', 'animationDuration', 'axisTicks', 'barGap', 'barWidth', 'categoryGap', 'chevron', 'clickable', 'cornerRadius', 'density', 'heightProp', 'label', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'layout', 'legend', 'loading', 'loadingLabel', 'locale', 'noAnimation', 'polar', 'polarHole', 'polarSweep', 'series', 'showLabels', 'showTotals', 'stack', 'subtitle', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'yAxis2', 'zoom'],
312
- standalone: true
313
- }]
314
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
315
- let MdBottomSheet = class MdBottomSheet {
316
- constructor(c, r, z) {
317
- this.z = z;
318
- c.detach();
319
- this.el = r.nativeElement;
320
- proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdCancel']);
321
- }
322
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBottomSheet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
323
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBottomSheet, isStandalone: true, selector: "md-bottom-sheet", inputs: { bottomDivider: "bottomDivider", closeable: "closeable", contentAlign: "contentAlign", density: "density", headline: "headline", headlineAlign: "headlineAlign", open: "open", scrimDismissible: "scrimDismissible", scrollShadow: "scrollShadow", sheetAriaLabel: "sheetAriaLabel", showDragHandle: "showDragHandle", topDivider: "topDivider", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
324
- };
325
- MdBottomSheet = __decorate([
326
- ProxyCmp({
327
- defineCustomElementFn: defineMdBottomSheet,
328
- inputs: ['bottomDivider', 'closeable', 'contentAlign', 'density', 'headline', 'headlineAlign', 'open', 'scrimDismissible', 'scrollShadow', 'sheetAriaLabel', 'showDragHandle', 'topDivider', 'variant'],
329
- methods: ['show', 'close']
330
- })
331
- ], MdBottomSheet);
332
- export { MdBottomSheet };
333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBottomSheet, decorators: [{
334
- type: Component,
335
- args: [{
336
- selector: 'md-bottom-sheet',
337
- changeDetection: ChangeDetectionStrategy.OnPush,
338
- template: '<ng-content></ng-content>',
339
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
340
- inputs: ['bottomDivider', 'closeable', 'contentAlign', 'density', 'headline', 'headlineAlign', 'open', 'scrimDismissible', 'scrollShadow', 'sheetAriaLabel', 'showDragHandle', 'topDivider', 'variant'],
341
- standalone: true
342
- }]
343
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
344
- let MdBreadcrumbItem = class MdBreadcrumbItem {
345
- constructor(c, r, z) {
346
- this.z = z;
347
- c.detach();
348
- this.el = r.nativeElement;
349
- proxyOutputs(this, this.el, ['mdSelect']);
350
- }
351
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBreadcrumbItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
352
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBreadcrumbItem, isStandalone: true, selector: "md-breadcrumb-item", inputs: { collapsed: "collapsed", current: "current", density: "density", disabled: "disabled", href: "href", icon: "icon", itemIndex: "itemIndex", itemTotal: "itemTotal", rel: "rel", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
353
- };
354
- MdBreadcrumbItem = __decorate([
355
- ProxyCmp({
356
- defineCustomElementFn: defineMdBreadcrumbItem,
357
- inputs: ['collapsed', 'current', 'density', 'disabled', 'href', 'icon', 'itemIndex', 'itemTotal', 'rel', 'target']
358
- })
359
- ], MdBreadcrumbItem);
360
- export { MdBreadcrumbItem };
361
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBreadcrumbItem, decorators: [{
362
- type: Component,
363
- args: [{
364
- selector: 'md-breadcrumb-item',
365
- changeDetection: ChangeDetectionStrategy.OnPush,
366
- template: '<ng-content></ng-content>',
367
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
368
- inputs: ['collapsed', 'current', 'density', 'disabled', 'href', 'icon', 'itemIndex', 'itemTotal', 'rel', 'target'],
369
- standalone: true
370
- }]
371
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
372
- let MdBreadcrumbs = class MdBreadcrumbs {
373
- constructor(c, r, z) {
374
- this.z = z;
375
- c.detach();
376
- this.el = r.nativeElement;
377
- proxyOutputs(this, this.el, ['mdExpand']);
378
- }
379
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBreadcrumbs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
380
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBreadcrumbs, isStandalone: true, selector: "md-breadcrumbs", inputs: { density: "density", expandLabel: "expandLabel", itemsAfterCollapse: "itemsAfterCollapse", itemsBeforeCollapse: "itemsBeforeCollapse", label: "label", maxItems: "maxItems", separator: "separator" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
381
- };
382
- MdBreadcrumbs = __decorate([
383
- ProxyCmp({
384
- defineCustomElementFn: defineMdBreadcrumbs,
385
- inputs: ['density', 'expandLabel', 'itemsAfterCollapse', 'itemsBeforeCollapse', 'label', 'maxItems', 'separator'],
386
- methods: ['expand', 'collapse']
387
- })
388
- ], MdBreadcrumbs);
389
- export { MdBreadcrumbs };
390
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBreadcrumbs, decorators: [{
391
- type: Component,
392
- args: [{
393
- selector: 'md-breadcrumbs',
394
- changeDetection: ChangeDetectionStrategy.OnPush,
395
- template: '<ng-content></ng-content>',
396
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
397
- inputs: ['density', 'expandLabel', 'itemsAfterCollapse', 'itemsBeforeCollapse', 'label', 'maxItems', 'separator'],
398
- standalone: true
399
- }]
400
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
401
- let MdButton = class MdButton {
402
- constructor(c, r, z) {
403
- this.z = z;
404
- c.detach();
405
- this.el = r.nativeElement;
406
- proxyOutputs(this, this.el, ['mdClick', 'mdChange']);
407
- }
408
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
409
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdButton, isStandalone: true, selector: "md-button", inputs: { density: "density", disabled: "disabled", fullWidth: "fullWidth", href: "href", icon: "icon", loading: "loading", mirrorIcon: "mirrorIcon", ripple: "ripple", roleOverride: "roleOverride", selected: "selected", shape: "shape", shapeMorph: "shapeMorph", size: "size", softDisabled: "softDisabled", suppressExpandIconFlip: "suppressExpandIconFlip", target: "target", toggle: "toggle", trailingIcon: "trailingIcon", type: "type", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
410
- };
411
- MdButton = __decorate([
412
- ProxyCmp({
413
- defineCustomElementFn: defineMdButton,
414
- inputs: ['density', 'disabled', 'fullWidth', 'href', 'icon', 'loading', 'mirrorIcon', 'ripple', 'roleOverride', 'selected', 'shape', 'shapeMorph', 'size', 'softDisabled', 'suppressExpandIconFlip', 'target', 'toggle', 'trailingIcon', 'type', 'variant']
415
- })
416
- ], MdButton);
417
- export { MdButton };
418
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdButton, decorators: [{
419
- type: Component,
420
- args: [{
421
- selector: 'md-button',
422
- changeDetection: ChangeDetectionStrategy.OnPush,
423
- template: '<ng-content></ng-content>',
424
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
425
- inputs: ['density', 'disabled', 'fullWidth', 'href', 'icon', 'loading', 'mirrorIcon', 'ripple', 'roleOverride', 'selected', 'shape', 'shapeMorph', 'size', 'softDisabled', 'suppressExpandIconFlip', 'target', 'toggle', 'trailingIcon', 'type', 'variant'],
426
- standalone: true
427
- }]
428
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
429
- let MdButtonGroup = class MdButtonGroup {
430
- constructor(c, r, z) {
431
- this.z = z;
432
- c.detach();
433
- this.el = r.nativeElement;
434
- proxyOutputs(this, this.el, ['mdSelectionChange']);
435
- }
436
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdButtonGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
437
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdButtonGroup, isStandalone: true, selector: "md-button-group", inputs: { density: "density", fullWidth: "fullWidth", required: "required", selectionMode: "selectionMode", shape: "shape", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
438
- };
439
- MdButtonGroup = __decorate([
440
- ProxyCmp({
441
- defineCustomElementFn: defineMdButtonGroup,
442
- inputs: ['density', 'fullWidth', 'required', 'selectionMode', 'shape', 'size', 'variant']
443
- })
444
- ], MdButtonGroup);
445
- export { MdButtonGroup };
446
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdButtonGroup, decorators: [{
447
- type: Component,
448
- args: [{
449
- selector: 'md-button-group',
450
- changeDetection: ChangeDetectionStrategy.OnPush,
451
- template: '<ng-content></ng-content>',
452
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
453
- inputs: ['density', 'fullWidth', 'required', 'selectionMode', 'shape', 'size', 'variant'],
454
- standalone: true
455
- }]
456
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
457
- let MdCard = class MdCard {
458
- constructor(c, r, z) {
459
- this.z = z;
460
- c.detach();
461
- this.el = r.nativeElement;
462
- proxyOutputs(this, this.el, ['mdClick', 'mdDragStart', 'mdDragMove', 'mdDragEnd']);
463
- }
464
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
465
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdCard, isStandalone: true, selector: "md-card", inputs: { density: "density", disabled: "disabled", dragEnabled: "dragEnabled", fullHeight: "fullHeight", fullWidth: "fullWidth", interactive: "interactive", ripple: "ripple", softDisabled: "softDisabled", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
466
- };
467
- MdCard = __decorate([
468
- ProxyCmp({
469
- defineCustomElementFn: defineMdCard,
470
- inputs: ['density', 'disabled', 'dragEnabled', 'fullHeight', 'fullWidth', 'interactive', 'ripple', 'softDisabled', 'variant']
471
- })
472
- ], MdCard);
473
- export { MdCard };
474
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdCard, decorators: [{
475
- type: Component,
476
- args: [{
477
- selector: 'md-card',
478
- changeDetection: ChangeDetectionStrategy.OnPush,
479
- template: '<ng-content></ng-content>',
480
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
481
- inputs: ['density', 'disabled', 'dragEnabled', 'fullHeight', 'fullWidth', 'interactive', 'ripple', 'softDisabled', 'variant'],
482
- standalone: true
483
- }]
484
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
485
- let MdCheckbox = class MdCheckbox {
486
- constructor(c, r, z) {
487
- this.z = z;
488
- c.detach();
489
- this.el = r.nativeElement;
490
- proxyOutputs(this, this.el, ['mdChange', 'mdValidityChange']);
491
- }
492
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
493
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdCheckbox, isStandalone: true, selector: "md-checkbox", inputs: { checked: "checked", density: "density", disabled: "disabled", error: "error", errorText: "errorText", indeterminate: "indeterminate", name: "name", required: "required", softDisabled: "softDisabled", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
494
- };
495
- MdCheckbox = __decorate([
496
- ProxyCmp({
497
- defineCustomElementFn: defineMdCheckbox,
498
- inputs: ['checked', 'density', 'disabled', 'error', 'errorText', 'indeterminate', 'name', 'required', 'softDisabled', 'supportingText', 'value', 'valueMissingLabel'],
499
- methods: ['getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
500
- })
501
- ], MdCheckbox);
502
- export { MdCheckbox };
503
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdCheckbox, decorators: [{
504
- type: Component,
505
- args: [{
506
- selector: 'md-checkbox',
507
- changeDetection: ChangeDetectionStrategy.OnPush,
508
- template: '<ng-content></ng-content>',
509
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
510
- inputs: ['checked', 'density', 'disabled', 'error', 'errorText', 'indeterminate', 'name', 'required', 'softDisabled', 'supportingText', 'value', 'valueMissingLabel'],
511
- standalone: true
512
- }]
513
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
514
- let MdChip = class MdChip {
515
- constructor(c, r, z) {
516
- this.z = z;
517
- c.detach();
518
- this.el = r.nativeElement;
519
- proxyOutputs(this, this.el, ['mdClick', 'mdSelect', 'mdRemove']);
520
- }
521
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdChip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
522
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdChip, isStandalone: true, selector: "md-chip", inputs: { appearance: "appearance", color: "color", contentAlign: "contentAlign", density: "density", disabled: "disabled", elevated: "elevated", icon: "icon", label: "label", removable: "removable", selectable: "selectable", selected: "selected", softDisabled: "softDisabled", trailingIcon: "trailingIcon", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
523
- };
524
- MdChip = __decorate([
525
- ProxyCmp({
526
- defineCustomElementFn: defineMdChip,
527
- inputs: ['appearance', 'color', 'contentAlign', 'density', 'disabled', 'elevated', 'icon', 'label', 'removable', 'selectable', 'selected', 'softDisabled', 'trailingIcon', 'variant']
528
- })
529
- ], MdChip);
530
- export { MdChip };
531
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdChip, decorators: [{
532
- type: Component,
533
- args: [{
534
- selector: 'md-chip',
535
- changeDetection: ChangeDetectionStrategy.OnPush,
536
- template: '<ng-content></ng-content>',
537
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
538
- inputs: ['appearance', 'color', 'contentAlign', 'density', 'disabled', 'elevated', 'icon', 'label', 'removable', 'selectable', 'selected', 'softDisabled', 'trailingIcon', 'variant'],
539
- standalone: true
540
- }]
541
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
542
- let MdColorPicker = class MdColorPicker {
543
- constructor(c, r, z) {
544
- this.z = z;
545
- c.detach();
546
- this.el = r.nativeElement;
547
- proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdOpenChange']);
548
- }
549
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdColorPicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
550
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdColorPicker, isStandalone: true, selector: "md-color-picker", inputs: { alpha: "alpha", ariaLabelProp: "ariaLabelProp", density: "density", disabled: "disabled", dismissOnOutsideClick: "dismissOnOutsideClick", format: "format", locale: "locale", open: "open", presets: "presets", showHex: "showHex", showInputs: "showInputs", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
551
- };
552
- MdColorPicker = __decorate([
553
- ProxyCmp({
554
- defineCustomElementFn: defineMdColorPicker,
555
- inputs: ['alpha', 'ariaLabelProp', 'density', 'disabled', 'dismissOnOutsideClick', 'format', 'locale', 'open', 'presets', 'showHex', 'showInputs', 'value', 'variant'],
556
- methods: ['show', 'close']
557
- })
558
- ], MdColorPicker);
559
- export { MdColorPicker };
560
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdColorPicker, decorators: [{
561
- type: Component,
562
- args: [{
563
- selector: 'md-color-picker',
564
- changeDetection: ChangeDetectionStrategy.OnPush,
565
- template: '<ng-content></ng-content>',
566
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
567
- inputs: ['alpha', 'ariaLabelProp', 'density', 'disabled', 'dismissOnOutsideClick', 'format', 'locale', 'open', 'presets', 'showHex', 'showInputs', 'value', 'variant'],
568
- standalone: true
569
- }]
570
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
571
- let MdDatePicker = class MdDatePicker {
572
- constructor(c, r, z) {
573
- this.z = z;
574
- c.detach();
575
- this.el = r.nativeElement;
576
- proxyOutputs(this, this.el, ['mdChange', 'mdSelected', 'mdInput', 'mdOpen', 'mdClose', 'mdCancel', 'mdViewChange', 'mdMenuOpen', 'mdMenuSelect', 'mdModeChange', 'mdValidityChange']);
577
- }
578
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDatePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
579
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDatePicker, isStandalone: true, selector: "md-date-picker", inputs: { calendarIcon: "calendarIcon", cancelLabel: "cancelLabel", chooseMonthAndYearLabel: "chooseMonthAndYearLabel", chooseMonthLabel: "chooseMonthLabel", chooseMonthYearLabel: "chooseMonthYearLabel", chooseYearLabel: "chooseYearLabel", clearLabel: "clearLabel", clearable: "clearable", closeCalendarLabel: "closeCalendarLabel", commitOnSelect: "commitOnSelect", dateSeparator: "dateSeparator", density: "density", disabled: "disabled", enterDatesLabel: "enterDatesLabel", error: "error", errorText: "errorText", fieldVariant: "fieldVariant", firstDayOfWeek: "firstDayOfWeek", headline: "headline", invalidDateLabel: "invalidDateLabel", isDateDisabled: "isDateDisabled", label: "label", locale: "locale", max: "max", min: "min", name: "name", nextMonthLabel: "nextMonthLabel", nextYearLabel: "nextYearLabel", okLabel: "okLabel", open: "open", openCalendarLabel: "openCalendarLabel", outsideClickDismissible: "outsideClickDismissible", placeholder: "placeholder", previousMonthLabel: "previousMonthLabel", previousYearLabel: "previousYearLabel", required: "required", reserveSupportingSpace: "reserveSupportingSpace", scrimDismissible: "scrimDismissible", selectDateLabel: "selectDateLabel", supportingText: "supportingText", toggleCalendarLabel: "toggleCalendarLabel", toggleTextLabel: "toggleTextLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", yearGridLabel: "yearGridLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
580
- };
581
- MdDatePicker = __decorate([
582
- ProxyCmp({
583
- defineCustomElementFn: defineMdDatePicker,
584
- inputs: ['calendarIcon', 'cancelLabel', 'chooseMonthAndYearLabel', 'chooseMonthLabel', 'chooseMonthYearLabel', 'chooseYearLabel', 'clearLabel', 'clearable', 'closeCalendarLabel', 'commitOnSelect', 'dateSeparator', 'density', 'disabled', 'enterDatesLabel', 'error', 'errorText', 'fieldVariant', 'firstDayOfWeek', 'headline', 'invalidDateLabel', 'isDateDisabled', 'label', 'locale', 'max', 'min', 'name', 'nextMonthLabel', 'nextYearLabel', 'okLabel', 'open', 'openCalendarLabel', 'outsideClickDismissible', 'placeholder', 'previousMonthLabel', 'previousYearLabel', 'required', 'reserveSupportingSpace', 'scrimDismissible', 'selectDateLabel', 'supportingText', 'toggleCalendarLabel', 'toggleTextLabel', 'value', 'valueMissingLabel', 'variant', 'yearGridLabel'],
585
- methods: ['show', 'close', 'clear', 'focusInput', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
586
- })
587
- ], MdDatePicker);
588
- export { MdDatePicker };
589
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDatePicker, decorators: [{
590
- type: Component,
591
- args: [{
592
- selector: 'md-date-picker',
593
- changeDetection: ChangeDetectionStrategy.OnPush,
594
- template: '<ng-content></ng-content>',
595
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
596
- inputs: ['calendarIcon', 'cancelLabel', 'chooseMonthAndYearLabel', 'chooseMonthLabel', 'chooseMonthYearLabel', 'chooseYearLabel', 'clearLabel', 'clearable', 'closeCalendarLabel', 'commitOnSelect', 'dateSeparator', 'density', 'disabled', 'enterDatesLabel', 'error', 'errorText', 'fieldVariant', 'firstDayOfWeek', 'headline', 'invalidDateLabel', 'isDateDisabled', 'label', 'locale', 'max', 'min', 'name', 'nextMonthLabel', 'nextYearLabel', 'okLabel', 'open', 'openCalendarLabel', 'outsideClickDismissible', 'placeholder', 'previousMonthLabel', 'previousYearLabel', 'required', 'reserveSupportingSpace', 'scrimDismissible', 'selectDateLabel', 'supportingText', 'toggleCalendarLabel', 'toggleTextLabel', 'value', 'valueMissingLabel', 'variant', 'yearGridLabel'],
597
- standalone: true
598
- }]
599
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
600
- let MdDialog = class MdDialog {
601
- constructor(c, r, z) {
602
- this.z = z;
603
- c.detach();
604
- this.el = r.nativeElement;
605
- proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdCancel']);
606
- }
607
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDialog, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
608
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDialog, isStandalone: true, selector: "md-dialog", inputs: { cancelLabel: "cancelLabel", closeLabel: "closeLabel", density: "density", divider: "divider", fullscreen: "fullscreen", headerDivider: "headerDivider", headline: "headline", icon: "icon", locale: "locale", okLabel: "okLabel", open: "open", scrimDismissible: "scrimDismissible" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
609
- };
610
- MdDialog = __decorate([
611
- ProxyCmp({
612
- defineCustomElementFn: defineMdDialog,
613
- inputs: ['cancelLabel', 'closeLabel', 'density', 'divider', 'fullscreen', 'headerDivider', 'headline', 'icon', 'locale', 'okLabel', 'open', 'scrimDismissible'],
614
- methods: ['show', 'whenClosed', 'close']
615
- })
616
- ], MdDialog);
617
- export { MdDialog };
618
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDialog, decorators: [{
619
- type: Component,
620
- args: [{
621
- selector: 'md-dialog',
622
- changeDetection: ChangeDetectionStrategy.OnPush,
623
- template: '<ng-content></ng-content>',
624
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
625
- inputs: ['cancelLabel', 'closeLabel', 'density', 'divider', 'fullscreen', 'headerDivider', 'headline', 'icon', 'locale', 'okLabel', 'open', 'scrimDismissible'],
626
- standalone: true
627
- }]
628
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
629
- let MdDivider = class MdDivider {
630
- constructor(c, r, z) {
631
- this.z = z;
632
- c.detach();
633
- this.el = r.nativeElement;
634
- }
635
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
636
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDivider, isStandalone: true, selector: "md-divider", inputs: { inset: "inset", insetEnd: "insetEnd", insetStart: "insetStart", vertical: "vertical" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
637
- };
638
- MdDivider = __decorate([
639
- ProxyCmp({
640
- defineCustomElementFn: defineMdDivider,
641
- inputs: ['inset', 'insetEnd', 'insetStart', 'vertical']
642
- })
643
- ], MdDivider);
644
- export { MdDivider };
645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDivider, decorators: [{
646
- type: Component,
647
- args: [{
648
- selector: 'md-divider',
649
- changeDetection: ChangeDetectionStrategy.OnPush,
650
- template: '<ng-content></ng-content>',
651
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
652
- inputs: ['inset', 'insetEnd', 'insetStart', 'vertical'],
653
- standalone: true
654
- }]
655
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
656
- let MdFab = class MdFab {
657
- constructor(c, r, z) {
658
- this.z = z;
659
- c.detach();
660
- this.el = r.nativeElement;
661
- proxyOutputs(this, this.el, ['mdClick']);
662
- }
663
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
664
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFab, isStandalone: true, selector: "md-fab", inputs: { density: "density", disabled: "disabled", extended: "extended", icon: "icon", label: "label", lowered: "lowered", ripple: "ripple", size: "size", softDisabled: "softDisabled", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
665
- };
666
- MdFab = __decorate([
667
- ProxyCmp({
668
- defineCustomElementFn: defineMdFab,
669
- inputs: ['density', 'disabled', 'extended', 'icon', 'label', 'lowered', 'ripple', 'size', 'softDisabled', 'variant'],
670
- methods: ['setMenuIcon']
671
- })
672
- ], MdFab);
673
- export { MdFab };
674
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFab, decorators: [{
675
- type: Component,
676
- args: [{
677
- selector: 'md-fab',
678
- changeDetection: ChangeDetectionStrategy.OnPush,
679
- template: '<ng-content></ng-content>',
680
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
681
- inputs: ['density', 'disabled', 'extended', 'icon', 'label', 'lowered', 'ripple', 'size', 'softDisabled', 'variant'],
682
- standalone: true
683
- }]
684
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
685
- let MdFabMenu = class MdFabMenu {
686
- constructor(c, r, z) {
687
- this.z = z;
688
- c.detach();
689
- this.el = r.nativeElement;
690
- proxyOutputs(this, this.el, ['mdOpen', 'mdClose']);
691
- }
692
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFabMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
693
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFabMenu, isStandalone: true, selector: "md-fab-menu", inputs: { anchor: "anchor", density: "density", menuLabel: "menuLabel", open: "open", placement: "placement", quick: "quick", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
694
- };
695
- MdFabMenu = __decorate([
696
- ProxyCmp({
697
- defineCustomElementFn: defineMdFabMenu,
698
- inputs: ['anchor', 'density', 'menuLabel', 'open', 'placement', 'quick', 'variant'],
699
- methods: ['show', 'whenClosed', 'close']
700
- })
701
- ], MdFabMenu);
702
- export { MdFabMenu };
703
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFabMenu, decorators: [{
704
- type: Component,
705
- args: [{
706
- selector: 'md-fab-menu',
707
- changeDetection: ChangeDetectionStrategy.OnPush,
708
- template: '<ng-content></ng-content>',
709
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
710
- inputs: ['anchor', 'density', 'menuLabel', 'open', 'placement', 'quick', 'variant'],
711
- standalone: true
712
- }]
713
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
714
- let MdFabMenuItem = class MdFabMenuItem {
715
- constructor(c, r, z) {
716
- this.z = z;
717
- c.detach();
718
- this.el = r.nativeElement;
719
- proxyOutputs(this, this.el, ['mdClick']);
720
- }
721
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFabMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
722
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFabMenuItem, isStandalone: true, selector: "md-fab-menu-item", inputs: { density: "density", disabled: "disabled", icon: "icon", label: "label", rovingFocusVisible: "rovingFocusVisible", softDisabled: "softDisabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
723
- };
724
- MdFabMenuItem = __decorate([
725
- ProxyCmp({
726
- defineCustomElementFn: defineMdFabMenuItem,
727
- inputs: ['density', 'disabled', 'icon', 'label', 'rovingFocusVisible', 'softDisabled']
728
- })
729
- ], MdFabMenuItem);
730
- export { MdFabMenuItem };
731
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFabMenuItem, decorators: [{
732
- type: Component,
733
- args: [{
734
- selector: 'md-fab-menu-item',
735
- changeDetection: ChangeDetectionStrategy.OnPush,
736
- template: '<ng-content></ng-content>',
737
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
738
- inputs: ['density', 'disabled', 'icon', 'label', 'rovingFocusVisible', 'softDisabled'],
739
- standalone: true
740
- }]
741
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
742
- let MdIconButton = class MdIconButton {
743
- constructor(c, r, z) {
744
- this.z = z;
745
- c.detach();
746
- this.el = r.nativeElement;
747
- proxyOutputs(this, this.el, ['mdClick']);
748
- }
749
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdIconButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
750
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdIconButton, isStandalone: true, selector: "md-icon-button", inputs: { buttonWidth: "buttonWidth", density: "density", disabled: "disabled", href: "href", icon: "icon", ripple: "ripple", selected: "selected", selectedIcon: "selectedIcon", shape: "shape", shapeMorph: "shapeMorph", size: "size", softDisabled: "softDisabled", target: "target", toggle: "toggle", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
751
- };
752
- MdIconButton = __decorate([
753
- ProxyCmp({
754
- defineCustomElementFn: defineMdIconButton,
755
- inputs: ['buttonWidth', 'density', 'disabled', 'href', 'icon', 'ripple', 'selected', 'selectedIcon', 'shape', 'shapeMorph', 'size', 'softDisabled', 'target', 'toggle', 'variant']
756
- })
757
- ], MdIconButton);
758
- export { MdIconButton };
759
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdIconButton, decorators: [{
760
- type: Component,
761
- args: [{
762
- selector: 'md-icon-button',
763
- changeDetection: ChangeDetectionStrategy.OnPush,
764
- template: '<ng-content></ng-content>',
765
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
766
- inputs: ['buttonWidth', 'density', 'disabled', 'href', 'icon', 'ripple', 'selected', 'selectedIcon', 'shape', 'shapeMorph', 'size', 'softDisabled', 'target', 'toggle', 'variant'],
767
- standalone: true
768
- }]
769
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
770
- let MdLineChart = class MdLineChart {
771
- constructor(c, r, z) {
772
- this.z = z;
773
- c.detach();
774
- this.el = r.nativeElement;
775
- proxyOutputs(this, this.el, ['mdMarkerClick', 'mdLineClick', 'mdAreaClick', 'mdAxisClick', 'mdLegendClick', 'mdHover', 'mdReady', 'mdZoom']);
776
- }
777
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdLineChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
778
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdLineChart, isStandalone: true, selector: "md-line-chart", inputs: { animation: "animation", animationDuration: "animationDuration", area: "area", axisTicks: "axisTicks", connectNulls: "connectNulls", curve: "curve", density: "density", grid: "grid", heightProp: "heightProp", inverted: "inverted", label: "label", labelEmpty: "labelEmpty", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", legend: "legend", lineWidth: "lineWidth", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", markLines: "markLines", markSize: "markSize", noAnimation: "noAnimation", series: "series", seriesLabels: "seriesLabels", showLabels: "showLabels", showLine: "showLine", showMarks: "showMarks", stack: "stack", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxes: "yAxes", yAxis: "yAxis", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
779
- };
780
- MdLineChart = __decorate([
781
- ProxyCmp({
782
- defineCustomElementFn: defineMdLineChart,
783
- inputs: ['animation', 'animationDuration', 'area', 'axisTicks', 'connectNulls', 'curve', 'density', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markLines', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxes', 'yAxis', 'zoom'],
784
- methods: ['refreshTheme', 'resize', 'replay', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
785
- })
786
- ], MdLineChart);
787
- export { MdLineChart };
788
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdLineChart, decorators: [{
789
- type: Component,
790
- args: [{
791
- selector: 'md-line-chart',
792
- changeDetection: ChangeDetectionStrategy.OnPush,
793
- template: '<ng-content></ng-content>',
794
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
795
- inputs: ['animation', 'animationDuration', 'area', 'axisTicks', 'connectNulls', 'curve', 'density', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markLines', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxes', 'yAxis', 'zoom'],
796
- standalone: true
797
- }]
798
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
799
- let MdList = class MdList {
800
- constructor(c, r, z) {
801
- this.z = z;
802
- c.detach();
803
- this.el = r.nativeElement;
804
- proxyOutputs(this, this.el, ['mdSelect', 'mdActivate', 'mdReorder']);
805
- }
806
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdList, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
807
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdList, isStandalone: true, selector: "md-list", inputs: { density: "density", interactionMode: "interactionMode", label: "label", labelledby: "labelledby", listStyle: "listStyle", reorderable: "reorderable", roleOverride: "roleOverride", selectionMode: "selectionMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
808
- };
809
- MdList = __decorate([
810
- ProxyCmp({
811
- defineCustomElementFn: defineMdList,
812
- inputs: ['density', 'interactionMode', 'label', 'labelledby', 'listStyle', 'reorderable', 'roleOverride', 'selectionMode'],
813
- methods: ['activateNext', 'activatePrevious', 'selectItem', 'getSelectedIndices']
814
- })
815
- ], MdList);
816
- export { MdList };
817
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdList, decorators: [{
818
- type: Component,
819
- args: [{
820
- selector: 'md-list',
821
- changeDetection: ChangeDetectionStrategy.OnPush,
822
- template: '<ng-content></ng-content>',
823
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
824
- inputs: ['density', 'interactionMode', 'label', 'labelledby', 'listStyle', 'reorderable', 'roleOverride', 'selectionMode'],
825
- standalone: true
826
- }]
827
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
828
- let MdListItem = class MdListItem {
829
- constructor(c, r, z) {
830
- this.z = z;
831
- c.detach();
832
- this.el = r.nativeElement;
833
- proxyOutputs(this, this.el, ['mdClick', 'mdItemClick', 'mdItemSelect', 'mdRequestActivation', 'mdItemRequestReorder', 'mdExpand']);
834
- }
835
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdListItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
836
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdListItem, isStandalone: true, selector: "md-list-item", inputs: { containerRole: "containerRole", density: "density", disabled: "disabled", expandable: "expandable", expanded: "expanded", headline: "headline", href: "href", interactionMode: "interactionMode", leadingAvatar: "leadingAvatar", leadingAvatarAlt: "leadingAvatarAlt", leadingAvatarLabel: "leadingAvatarLabel", leadingAvatarName: "leadingAvatarName", leadingIcon: "leadingIcon", leadingImage: "leadingImage", leadingImageAlt: "leadingImageAlt", lines: "lines", overline: "overline", reorderable: "reorderable", rovingFocusVisible: "rovingFocusVisible", selected: "selected", selectionMode: "selectionMode", softDisabled: "softDisabled", supportingText: "supportingText", tabbable: "tabbable", target: "target", trailingIcon: "trailingIcon", trailingSupportingText: "trailingSupportingText", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
837
- };
838
- MdListItem = __decorate([
839
- ProxyCmp({
840
- defineCustomElementFn: defineMdListItem,
841
- inputs: ['containerRole', 'density', 'disabled', 'expandable', 'expanded', 'headline', 'href', 'interactionMode', 'leadingAvatar', 'leadingAvatarAlt', 'leadingAvatarLabel', 'leadingAvatarName', 'leadingIcon', 'leadingImage', 'leadingImageAlt', 'lines', 'overline', 'reorderable', 'rovingFocusVisible', 'selected', 'selectionMode', 'softDisabled', 'supportingText', 'tabbable', 'target', 'trailingIcon', 'trailingSupportingText', 'type'],
842
- methods: ['setFocus', 'focusItem', 'toggle', 'expand', 'collapse']
843
- })
844
- ], MdListItem);
845
- export { MdListItem };
846
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdListItem, decorators: [{
847
- type: Component,
848
- args: [{
849
- selector: 'md-list-item',
850
- changeDetection: ChangeDetectionStrategy.OnPush,
851
- template: '<ng-content></ng-content>',
852
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
853
- inputs: ['containerRole', 'density', 'disabled', 'expandable', 'expanded', 'headline', 'href', 'interactionMode', 'leadingAvatar', 'leadingAvatarAlt', 'leadingAvatarLabel', 'leadingAvatarName', 'leadingIcon', 'leadingImage', 'leadingImageAlt', 'lines', 'overline', 'reorderable', 'rovingFocusVisible', 'selected', 'selectionMode', 'softDisabled', 'supportingText', 'tabbable', 'target', 'trailingIcon', 'trailingSupportingText', 'type'],
854
- standalone: true
855
- }]
856
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
857
- let MdLoadingIndicator = class MdLoadingIndicator {
858
- constructor(c, r, z) {
859
- this.z = z;
860
- c.detach();
861
- this.el = r.nativeElement;
862
- }
863
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdLoadingIndicator, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
864
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdLoadingIndicator, isStandalone: true, selector: "md-loading-indicator", inputs: { density: "density", label: "label", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
865
- };
866
- MdLoadingIndicator = __decorate([
867
- ProxyCmp({
868
- defineCustomElementFn: defineMdLoadingIndicator,
869
- inputs: ['density', 'label', 'variant']
870
- })
871
- ], MdLoadingIndicator);
872
- export { MdLoadingIndicator };
873
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdLoadingIndicator, decorators: [{
874
- type: Component,
875
- args: [{
876
- selector: 'md-loading-indicator',
877
- changeDetection: ChangeDetectionStrategy.OnPush,
878
- template: '<ng-content></ng-content>',
879
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
880
- inputs: ['density', 'label', 'variant'],
881
- standalone: true
882
- }]
883
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
884
- let MdMenu = class MdMenu {
885
- constructor(c, r, z) {
886
- this.z = z;
887
- c.detach();
888
- this.el = r.nativeElement;
889
- proxyOutputs(this, this.el, ['mdOpen', 'mdClose']);
890
- }
891
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
892
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenu, isStandalone: true, selector: "md-menu", inputs: { anchor: "anchor", autoFocus: "autoFocus", density: "density", emptyText: "emptyText", layout: "layout", listLabel: "listLabel", listbox: "listbox", matchAnchorWidth: "matchAnchorWidth", maxHeight: "maxHeight", open: "open", persistent: "persistent", placement: "placement", quick: "quick", responsive: "responsive", useGap: "useGap", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
893
- };
894
- MdMenu = __decorate([
895
- ProxyCmp({
896
- defineCustomElementFn: defineMdMenu,
897
- inputs: ['anchor', 'autoFocus', 'density', 'emptyText', 'layout', 'listLabel', 'listbox', 'matchAnchorWidth', 'maxHeight', 'open', 'persistent', 'placement', 'quick', 'responsive', 'useGap', 'variant'],
898
- methods: ['setComboboxElement', 'setVirtualProvider', 'getScrollViewport', 'show', 'reposition', 'whenClosed', 'close']
899
- })
900
- ], MdMenu);
901
- export { MdMenu };
902
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenu, decorators: [{
903
- type: Component,
904
- args: [{
905
- selector: 'md-menu',
906
- changeDetection: ChangeDetectionStrategy.OnPush,
907
- template: '<ng-content></ng-content>',
908
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
909
- inputs: ['anchor', 'autoFocus', 'density', 'emptyText', 'layout', 'listLabel', 'listbox', 'matchAnchorWidth', 'maxHeight', 'open', 'persistent', 'placement', 'quick', 'responsive', 'useGap', 'variant'],
910
- standalone: true
911
- }]
912
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
913
- let MdMenuItem = class MdMenuItem {
914
- constructor(c, r, z) {
915
- this.z = z;
916
- c.detach();
917
- this.el = r.nativeElement;
918
- proxyOutputs(this, this.el, ['mdClick']);
919
- }
920
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
921
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenuItem, isStandalone: true, selector: "md-menu-item", inputs: { badge: "badge", checkPosition: "checkPosition", density: "density", disabled: "disabled", divider: "divider", gap: "gap", headline: "headline", indeterminate: "indeterminate", keepOpen: "keepOpen", presentation: "presentation", roleOverride: "roleOverride", selected: "selected", supportingText: "supportingText", trailingText: "trailingText", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
922
- };
923
- MdMenuItem = __decorate([
924
- ProxyCmp({
925
- defineCustomElementFn: defineMdMenuItem,
926
- inputs: ['badge', 'checkPosition', 'density', 'disabled', 'divider', 'gap', 'headline', 'indeterminate', 'keepOpen', 'presentation', 'roleOverride', 'selected', 'supportingText', 'trailingText', 'type']
927
- })
928
- ], MdMenuItem);
929
- export { MdMenuItem };
930
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenuItem, decorators: [{
931
- type: Component,
932
- args: [{
933
- selector: 'md-menu-item',
934
- changeDetection: ChangeDetectionStrategy.OnPush,
935
- template: '<ng-content></ng-content>',
936
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
937
- inputs: ['badge', 'checkPosition', 'density', 'disabled', 'divider', 'gap', 'headline', 'indeterminate', 'keepOpen', 'presentation', 'roleOverride', 'selected', 'supportingText', 'trailingText', 'type'],
938
- standalone: true
939
- }]
940
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
941
- let MdMenuItemGroup = class MdMenuItemGroup {
942
- constructor(c, r, z) {
943
- this.z = z;
944
- c.detach();
945
- this.el = r.nativeElement;
946
- }
947
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenuItemGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
948
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenuItemGroup, isStandalone: true, selector: "md-menu-item-group", inputs: { density: "density", label: "label" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
949
- };
950
- MdMenuItemGroup = __decorate([
951
- ProxyCmp({
952
- defineCustomElementFn: defineMdMenuItemGroup,
953
- inputs: ['density', 'label']
954
- })
955
- ], MdMenuItemGroup);
956
- export { MdMenuItemGroup };
957
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenuItemGroup, decorators: [{
958
- type: Component,
959
- args: [{
960
- selector: 'md-menu-item-group',
961
- changeDetection: ChangeDetectionStrategy.OnPush,
962
- template: '<ng-content></ng-content>',
963
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
964
- inputs: ['density', 'label'],
965
- standalone: true
966
- }]
967
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
968
- let MdMeter = class MdMeter {
969
- constructor(c, r, z) {
970
- this.z = z;
971
- c.detach();
972
- this.el = r.nativeElement;
973
- }
974
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMeter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
975
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMeter, isStandalone: true, selector: "md-meter", inputs: { color: "color", density: "density", formatOptions: "formatOptions", label: "label", locale: "locale", max: "max", min: "min", showLabel: "showLabel", showValue: "showValue", size: "size", thickness: "thickness", value: "value", valueText: "valueText", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
976
- };
977
- MdMeter = __decorate([
978
- ProxyCmp({
979
- defineCustomElementFn: defineMdMeter,
980
- inputs: ['color', 'density', 'formatOptions', 'label', 'locale', 'max', 'min', 'showLabel', 'showValue', 'size', 'thickness', 'value', 'valueText', 'variant']
981
- })
982
- ], MdMeter);
983
- export { MdMeter };
984
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMeter, decorators: [{
985
- type: Component,
986
- args: [{
987
- selector: 'md-meter',
988
- changeDetection: ChangeDetectionStrategy.OnPush,
989
- template: '<ng-content></ng-content>',
990
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
991
- inputs: ['color', 'density', 'formatOptions', 'label', 'locale', 'max', 'min', 'showLabel', 'showValue', 'size', 'thickness', 'value', 'valueText', 'variant'],
992
- standalone: true
993
- }]
994
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
995
- let MdMultiSelect = class MdMultiSelect {
996
- constructor(c, r, z) {
997
- this.z = z;
998
- c.detach();
999
- this.el = r.nativeElement;
1000
- proxyOutputs(this, this.el, ['mdChange', 'mdOpen', 'mdClose', 'mdRemove', 'mdClear', 'mdValidityChange']);
1001
- }
1002
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMultiSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1003
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMultiSelect, isStandalone: true, selector: "md-multi-select", inputs: { chipOverflow: "chipOverflow", chipPosition: "chipPosition", clearIcon: "clearIcon", clearLabel: "clearLabel", clearable: "clearable", countFormatter: "countFormatter", density: "density", disabled: "disabled", displayMode: "displayMode", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterLabel: "filterLabel", filterMode: "filterMode", filterable: "filterable", label: "label", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", maxSelected: "maxSelected", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", searchPlaceholder: "searchPlaceholder", searchingLabel: "searchingLabel", selectAllLabel: "selectAllLabel", showSelectAll: "showSelectAll", softDisabled: "softDisabled", supportingText: "supportingText", trigger: "trigger", triggerIcon: "triggerIcon", triggerLabel: "triggerLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1004
- };
1005
- MdMultiSelect = __decorate([
1006
- ProxyCmp({
1007
- defineCustomElementFn: defineMdMultiSelect,
1008
- inputs: ['chipOverflow', 'chipPosition', 'clearIcon', 'clearLabel', 'clearable', 'countFormatter', 'density', 'disabled', 'displayMode', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'selectAllLabel', 'showSelectAll', 'softDisabled', 'supportingText', 'trigger', 'triggerIcon', 'triggerLabel', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
1009
- methods: ['show', 'close', 'focusTrigger', 'reset', 'loadOptions', 'setQuery', 'getLabels', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
1010
- })
1011
- ], MdMultiSelect);
1012
- export { MdMultiSelect };
1013
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMultiSelect, decorators: [{
1014
- type: Component,
1015
- args: [{
1016
- selector: 'md-multi-select',
1017
- changeDetection: ChangeDetectionStrategy.OnPush,
1018
- template: '<ng-content></ng-content>',
1019
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1020
- inputs: ['chipOverflow', 'chipPosition', 'clearIcon', 'clearLabel', 'clearable', 'countFormatter', 'density', 'disabled', 'displayMode', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'selectAllLabel', 'showSelectAll', 'softDisabled', 'supportingText', 'trigger', 'triggerIcon', 'triggerLabel', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
1021
- standalone: true
1022
- }]
1023
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1024
- let MdNavigationBar = class MdNavigationBar {
1025
- constructor(c, r, z) {
1026
- this.z = z;
1027
- c.detach();
1028
- this.el = r.nativeElement;
1029
- proxyOutputs(this, this.el, ['mdChange']);
1030
- }
1031
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationBar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1032
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationBar, isStandalone: true, selector: "md-navigation-bar", inputs: { activeIndex: "activeIndex", density: "density", labelBehavior: "labelBehavior", manualActivation: "manualActivation" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1033
- };
1034
- MdNavigationBar = __decorate([
1035
- ProxyCmp({
1036
- defineCustomElementFn: defineMdNavigationBar,
1037
- inputs: ['activeIndex', 'density', 'labelBehavior', 'manualActivation'],
1038
- methods: ['select', 'focusTab']
1039
- })
1040
- ], MdNavigationBar);
1041
- export { MdNavigationBar };
1042
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationBar, decorators: [{
1043
- type: Component,
1044
- args: [{
1045
- selector: 'md-navigation-bar',
1046
- changeDetection: ChangeDetectionStrategy.OnPush,
1047
- template: '<ng-content></ng-content>',
1048
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1049
- inputs: ['activeIndex', 'density', 'labelBehavior', 'manualActivation'],
1050
- standalone: true
1051
- }]
1052
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1053
- let MdNavigationRail = class MdNavigationRail {
1054
- constructor(c, r, z) {
1055
- this.z = z;
1056
- c.detach();
1057
- this.el = r.nativeElement;
1058
- proxyOutputs(this, this.el, ['mdTabChange', 'mdExpand', 'mdCollapse']);
1059
- }
1060
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationRail, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1061
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationRail, isStandalone: true, selector: "md-navigation-rail", inputs: { activeIndex: "activeIndex", alignment: "alignment", density: "density", disableFocusManagement: "disableFocusManagement", expandable: "expandable", fullHeight: "fullHeight", label: "label", labelVisibility: "labelVisibility", maxVisible: "maxVisible", modal: "modal", orientation: "orientation", overflowIcon: "overflowIcon", overflowLabel: "overflowLabel", toggleLabel: "toggleLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1062
- };
1063
- MdNavigationRail = __decorate([
1064
- ProxyCmp({
1065
- defineCustomElementFn: defineMdNavigationRail,
1066
- inputs: ['activeIndex', 'alignment', 'density', 'disableFocusManagement', 'expandable', 'fullHeight', 'label', 'labelVisibility', 'maxVisible', 'modal', 'orientation', 'overflowIcon', 'overflowLabel', 'toggleLabel', 'variant'],
1067
- methods: ['expand', 'collapse', 'toggle', 'focusTab']
1068
- })
1069
- ], MdNavigationRail);
1070
- export { MdNavigationRail };
1071
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationRail, decorators: [{
1072
- type: Component,
1073
- args: [{
1074
- selector: 'md-navigation-rail',
1075
- changeDetection: ChangeDetectionStrategy.OnPush,
1076
- template: '<ng-content></ng-content>',
1077
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1078
- inputs: ['activeIndex', 'alignment', 'density', 'disableFocusManagement', 'expandable', 'fullHeight', 'label', 'labelVisibility', 'maxVisible', 'modal', 'orientation', 'overflowIcon', 'overflowLabel', 'toggleLabel', 'variant'],
1079
- standalone: true
1080
- }]
1081
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1082
- let MdNavigationRailTab = class MdNavigationRailTab {
1083
- constructor(c, r, z) {
1084
- this.z = z;
1085
- c.detach();
1086
- this.el = r.nativeElement;
1087
- proxyOutputs(this, this.el, ['mdTabClick', 'mdSubmenuToggle']);
1088
- }
1089
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationRailTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1090
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationRailTab, isStandalone: true, selector: "md-navigation-rail-tab", inputs: { active: "active", badge: "badge", badgeValue: "badgeValue", density: "density", disabled: "disabled", expanded: "expanded", href: "href", icon: "icon", label: "label", labelVisibility: "labelVisibility", target: "target", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1091
- };
1092
- MdNavigationRailTab = __decorate([
1093
- ProxyCmp({
1094
- defineCustomElementFn: defineMdNavigationRailTab,
1095
- inputs: ['active', 'badge', 'badgeValue', 'density', 'disabled', 'expanded', 'href', 'icon', 'label', 'labelVisibility', 'target', 'value'],
1096
- methods: ['clearSubmenuSelection']
1097
- })
1098
- ], MdNavigationRailTab);
1099
- export { MdNavigationRailTab };
1100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationRailTab, decorators: [{
1101
- type: Component,
1102
- args: [{
1103
- selector: 'md-navigation-rail-tab',
1104
- changeDetection: ChangeDetectionStrategy.OnPush,
1105
- template: '<ng-content></ng-content>',
1106
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1107
- inputs: ['active', 'badge', 'badgeValue', 'density', 'disabled', 'expanded', 'href', 'icon', 'label', 'labelVisibility', 'target', 'value'],
1108
- standalone: true
1109
- }]
1110
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1111
- let MdNavigationTab = class MdNavigationTab {
1112
- constructor(c, r, z) {
1113
- this.z = z;
1114
- c.detach();
1115
- this.el = r.nativeElement;
1116
- proxyOutputs(this, this.el, ['mdTabClick']);
1117
- }
1118
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1119
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationTab, isStandalone: true, selector: "md-navigation-tab", inputs: { active: "active", activeIcon: "activeIcon", badge: "badge", badgeMax: "badgeMax", badgeValue: "badgeValue", density: "density", disabled: "disabled", href: "href", icon: "icon", label: "label", labelBehavior: "labelBehavior", softDisabled: "softDisabled", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1120
- };
1121
- MdNavigationTab = __decorate([
1122
- ProxyCmp({
1123
- defineCustomElementFn: defineMdNavigationTab,
1124
- inputs: ['active', 'activeIcon', 'badge', 'badgeMax', 'badgeValue', 'density', 'disabled', 'href', 'icon', 'label', 'labelBehavior', 'softDisabled', 'target'],
1125
- methods: ['focusEl']
1126
- })
1127
- ], MdNavigationTab);
1128
- export { MdNavigationTab };
1129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationTab, decorators: [{
1130
- type: Component,
1131
- args: [{
1132
- selector: 'md-navigation-tab',
1133
- changeDetection: ChangeDetectionStrategy.OnPush,
1134
- template: '<ng-content></ng-content>',
1135
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1136
- inputs: ['active', 'activeIcon', 'badge', 'badgeMax', 'badgeValue', 'density', 'disabled', 'href', 'icon', 'label', 'labelBehavior', 'softDisabled', 'target'],
1137
- standalone: true
1138
- }]
1139
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1140
- let MdNumberField = class MdNumberField {
1141
- constructor(c, r, z) {
1142
- this.z = z;
1143
- c.detach();
1144
- this.el = r.nativeElement;
1145
- proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdValidityChange']);
1146
- }
1147
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNumberField, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1148
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNumberField, isStandalone: true, selector: "md-number-field", inputs: { allowOutOfRange: "allowOutOfRange", allowWheelScrub: "allowWheelScrub", decrementLabel: "decrementLabel", density: "density", disabled: "disabled", error: "error", errorText: "errorText", formatOptions: "formatOptions", incrementLabel: "incrementLabel", label: "label", largeStep: "largeStep", locale: "locale", max: "max", min: "min", name: "name", placeholder: "placeholder", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", smallStep: "smallStep", snapOnStep: "snapOnStep", step: "step", steppers: "steppers", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1149
- };
1150
- MdNumberField = __decorate([
1151
- ProxyCmp({
1152
- defineCustomElementFn: defineMdNumberField,
1153
- inputs: ['allowOutOfRange', 'allowWheelScrub', 'decrementLabel', 'density', 'disabled', 'error', 'errorText', 'formatOptions', 'incrementLabel', 'label', 'largeStep', 'locale', 'max', 'min', 'name', 'placeholder', 'readOnly', 'required', 'reserveSupportingSpace', 'smallStep', 'snapOnStep', 'step', 'steppers', 'supportingText', 'value', 'valueMissingLabel', 'variant'],
1154
- methods: ['setFocus', 'select', 'stepUp', 'stepDown', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
1155
- })
1156
- ], MdNumberField);
1157
- export { MdNumberField };
1158
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNumberField, decorators: [{
1159
- type: Component,
1160
- args: [{
1161
- selector: 'md-number-field',
1162
- changeDetection: ChangeDetectionStrategy.OnPush,
1163
- template: '<ng-content></ng-content>',
1164
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1165
- inputs: ['allowOutOfRange', 'allowWheelScrub', 'decrementLabel', 'density', 'disabled', 'error', 'errorText', 'formatOptions', 'incrementLabel', 'label', 'largeStep', 'locale', 'max', 'min', 'name', 'placeholder', 'readOnly', 'required', 'reserveSupportingSpace', 'smallStep', 'snapOnStep', 'step', 'steppers', 'supportingText', 'value', 'valueMissingLabel', 'variant'],
1166
- standalone: true
1167
- }]
1168
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1169
- let MdOrganizationChart = class MdOrganizationChart {
1170
- constructor(c, r, z) {
1171
- this.z = z;
1172
- c.detach();
1173
- this.el = r.nativeElement;
1174
- proxyOutputs(this, this.el, ['mdSelectionChange', 'mdNodeToggle']);
1175
- }
1176
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdOrganizationChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1177
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdOrganizationChart, isStandalone: true, selector: "md-organization-chart", inputs: { collapseLabel: "collapseLabel", collapsible: "collapsible", density: "density", expandLabel: "expandLabel", label: "label", nodes: "nodes", orientation: "orientation", selectedIds: "selectedIds", selectionMode: "selectionMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1178
- };
1179
- MdOrganizationChart = __decorate([
1180
- ProxyCmp({
1181
- defineCustomElementFn: defineMdOrganizationChart,
1182
- inputs: ['collapseLabel', 'collapsible', 'density', 'expandLabel', 'label', 'nodes', 'orientation', 'selectedIds', 'selectionMode']
1183
- })
1184
- ], MdOrganizationChart);
1185
- export { MdOrganizationChart };
1186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdOrganizationChart, decorators: [{
1187
- type: Component,
1188
- args: [{
1189
- selector: 'md-organization-chart',
1190
- changeDetection: ChangeDetectionStrategy.OnPush,
1191
- template: '<ng-content></ng-content>',
1192
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1193
- inputs: ['collapseLabel', 'collapsible', 'density', 'expandLabel', 'label', 'nodes', 'orientation', 'selectedIds', 'selectionMode'],
1194
- standalone: true
1195
- }]
1196
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1197
- let MdOtpField = class MdOtpField {
1198
- constructor(c, r, z) {
1199
- this.z = z;
1200
- c.detach();
1201
- this.el = r.nativeElement;
1202
- proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdComplete', 'mdInvalidInput', 'mdValidityChange']);
1203
- }
1204
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdOtpField, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1205
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdOtpField, isStandalone: true, selector: "md-otp-field", inputs: { autoSubmit: "autoSubmit", cellLabelTemplate: "cellLabelTemplate", density: "density", disabled: "disabled", error: "error", errorText: "errorText", groupSize: "groupSize", incompleteLabel: "incompleteLabel", inputMode: "inputMode", label: "label", length: "length", mask: "mask", name: "name", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", supportingText: "supportingText", transform: "transform", validationType: "validationType", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1206
- };
1207
- MdOtpField = __decorate([
1208
- ProxyCmp({
1209
- defineCustomElementFn: defineMdOtpField,
1210
- inputs: ['autoSubmit', 'cellLabelTemplate', 'density', 'disabled', 'error', 'errorText', 'groupSize', 'incompleteLabel', 'inputMode', 'label', 'length', 'mask', 'name', 'readOnly', 'required', 'reserveSupportingSpace', 'supportingText', 'transform', 'validationType', 'value', 'valueMissingLabel'],
1211
- methods: ['setFocus', 'clear', 'getValidity', 'setCustomValidity', 'checkValidity', 'reportValidity']
1212
- })
1213
- ], MdOtpField);
1214
- export { MdOtpField };
1215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdOtpField, decorators: [{
1216
- type: Component,
1217
- args: [{
1218
- selector: 'md-otp-field',
1219
- changeDetection: ChangeDetectionStrategy.OnPush,
1220
- template: '<ng-content></ng-content>',
1221
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1222
- inputs: ['autoSubmit', 'cellLabelTemplate', 'density', 'disabled', 'error', 'errorText', 'groupSize', 'incompleteLabel', 'inputMode', 'label', 'length', 'mask', 'name', 'readOnly', 'required', 'reserveSupportingSpace', 'supportingText', 'transform', 'validationType', 'value', 'valueMissingLabel'],
1223
- standalone: true
1224
- }]
1225
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1226
- let MdPieChart = class MdPieChart {
1227
- constructor(c, r, z) {
1228
- this.z = z;
1229
- c.detach();
1230
- this.el = r.nativeElement;
1231
- proxyOutputs(this, this.el, ['mdSliceClick', 'mdLegendClick', 'mdReady']);
1232
- }
1233
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdPieChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1234
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdPieChart, isStandalone: true, selector: "md-pie-chart", inputs: { animation: "animation", animationDuration: "animationDuration", cornerRadius: "cornerRadius", data: "data", density: "density", endAngle: "endAngle", gradient: "gradient", heightProp: "heightProp", highlight: "highlight", innerRadius: "innerRadius", label: "label", labelEmpty: "labelEmpty", labelMode: "labelMode", labelPlot: "labelPlot", labelPoint: "labelPoint", legend: "legend", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", monochrome: "monochrome", noAnimation: "noAnimation", outerRadius: "outerRadius", paddingAngle: "paddingAngle", ringWidths: "ringWidths", showLabels: "showLabels", startAngle: "startAngle", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1235
- };
1236
- MdPieChart = __decorate([
1237
- ProxyCmp({
1238
- defineCustomElementFn: defineMdPieChart,
1239
- inputs: ['animation', 'animationDuration', 'cornerRadius', 'data', 'density', 'endAngle', 'gradient', 'heightProp', 'highlight', 'innerRadius', 'label', 'labelEmpty', 'labelMode', 'labelPlot', 'labelPoint', 'legend', 'loading', 'loadingLabel', 'locale', 'monochrome', 'noAnimation', 'outerRadius', 'paddingAngle', 'ringWidths', 'showLabels', 'startAngle', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter'],
1240
- methods: ['refreshTheme', 'resize', 'replay', 'drill', 'toDataURL', 'getInstance']
1241
- })
1242
- ], MdPieChart);
1243
- export { MdPieChart };
1244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdPieChart, decorators: [{
1245
- type: Component,
1246
- args: [{
1247
- selector: 'md-pie-chart',
1248
- changeDetection: ChangeDetectionStrategy.OnPush,
1249
- template: '<ng-content></ng-content>',
1250
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1251
- inputs: ['animation', 'animationDuration', 'cornerRadius', 'data', 'density', 'endAngle', 'gradient', 'heightProp', 'highlight', 'innerRadius', 'label', 'labelEmpty', 'labelMode', 'labelPlot', 'labelPoint', 'legend', 'loading', 'loadingLabel', 'locale', 'monochrome', 'noAnimation', 'outerRadius', 'paddingAngle', 'ringWidths', 'showLabels', 'startAngle', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter'],
1252
- standalone: true
1253
- }]
1254
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1255
- let MdProgressIndicator = class MdProgressIndicator {
1256
- constructor(c, r, z) {
1257
- this.z = z;
1258
- c.detach();
1259
- this.el = r.nativeElement;
1260
- proxyOutputs(this, this.el, ['mdComplete']);
1261
- }
1262
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdProgressIndicator, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1263
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdProgressIndicator, isStandalone: true, selector: "md-progress-indicator", inputs: { complete: "complete", density: "density", fourColor: "fourColor", indeterminate: "indeterminate", label: "label", max: "max", size: "size", thickness: "thickness", value: "value", variant: "variant", wave: "wave", waveAmplitude: "waveAmplitude", waveLength: "waveLength", waveSpeed: "waveSpeed" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1264
- };
1265
- MdProgressIndicator = __decorate([
1266
- ProxyCmp({
1267
- defineCustomElementFn: defineMdProgressIndicator,
1268
- inputs: ['complete', 'density', 'fourColor', 'indeterminate', 'label', 'max', 'size', 'thickness', 'value', 'variant', 'wave', 'waveAmplitude', 'waveLength', 'waveSpeed']
1269
- })
1270
- ], MdProgressIndicator);
1271
- export { MdProgressIndicator };
1272
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdProgressIndicator, decorators: [{
1273
- type: Component,
1274
- args: [{
1275
- selector: 'md-progress-indicator',
1276
- changeDetection: ChangeDetectionStrategy.OnPush,
1277
- template: '<ng-content></ng-content>',
1278
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1279
- inputs: ['complete', 'density', 'fourColor', 'indeterminate', 'label', 'max', 'size', 'thickness', 'value', 'variant', 'wave', 'waveAmplitude', 'waveLength', 'waveSpeed'],
1280
- standalone: true
1281
- }]
1282
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1283
- let MdRadio = class MdRadio {
1284
- constructor(c, r, z) {
1285
- this.z = z;
1286
- c.detach();
1287
- this.el = r.nativeElement;
1288
- proxyOutputs(this, this.el, ['mdChange', 'mdFocus', 'mdBlur', 'mdValidityChange']);
1289
- }
1290
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRadio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1291
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRadio, isStandalone: true, selector: "md-radio", inputs: { checked: "checked", density: "density", disabled: "disabled", name: "name", required: "required", softDisabled: "softDisabled", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1292
- };
1293
- MdRadio = __decorate([
1294
- ProxyCmp({
1295
- defineCustomElementFn: defineMdRadio,
1296
- inputs: ['checked', 'density', 'disabled', 'name', 'required', 'softDisabled', 'value', 'valueMissingLabel'],
1297
- methods: ['syncValidityFromGroup', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity', 'setFocus', 'setBlur', 'select']
1298
- })
1299
- ], MdRadio);
1300
- export { MdRadio };
1301
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRadio, decorators: [{
1302
- type: Component,
1303
- args: [{
1304
- selector: 'md-radio',
1305
- changeDetection: ChangeDetectionStrategy.OnPush,
1306
- template: '<ng-content></ng-content>',
1307
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1308
- inputs: ['checked', 'density', 'disabled', 'name', 'required', 'softDisabled', 'value', 'valueMissingLabel'],
1309
- standalone: true
1310
- }]
1311
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1312
- let MdRating = class MdRating {
1313
- constructor(c, r, z) {
1314
- this.z = z;
1315
- c.detach();
1316
- this.el = r.nativeElement;
1317
- proxyOutputs(this, this.el, ['mdHover', 'mdChange']);
1318
- }
1319
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRating, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1320
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRating, isStandalone: true, selector: "md-rating", inputs: { defaultValue: "defaultValue", density: "density", disabled: "disabled", emptyIcon: "emptyIcon", getLabel: "getLabel", hover: "hover", icon: "icon", max: "max", name: "name", outlineEmpty: "outlineEmpty", precision: "precision", ratingLabel: "ratingLabel", readonly: "readonly", showValueLabel: "showValueLabel", size: "size", softDisabled: "softDisabled", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1321
- };
1322
- MdRating = __decorate([
1323
- ProxyCmp({
1324
- defineCustomElementFn: defineMdRating,
1325
- inputs: ['defaultValue', 'density', 'disabled', 'emptyIcon', 'getLabel', 'hover', 'icon', 'max', 'name', 'outlineEmpty', 'precision', 'ratingLabel', 'readonly', 'showValueLabel', 'size', 'softDisabled', 'value'],
1326
- methods: ['focusRating']
1327
- })
1328
- ], MdRating);
1329
- export { MdRating };
1330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRating, decorators: [{
1331
- type: Component,
1332
- args: [{
1333
- selector: 'md-rating',
1334
- changeDetection: ChangeDetectionStrategy.OnPush,
1335
- template: '<ng-content></ng-content>',
1336
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1337
- inputs: ['defaultValue', 'density', 'disabled', 'emptyIcon', 'getLabel', 'hover', 'icon', 'max', 'name', 'outlineEmpty', 'precision', 'ratingLabel', 'readonly', 'showValueLabel', 'size', 'softDisabled', 'value'],
1338
- standalone: true
1339
- }]
1340
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1341
- let MdRipple = class MdRipple {
1342
- constructor(c, r, z) {
1343
- this.z = z;
1344
- c.detach();
1345
- this.el = r.nativeElement;
1346
- }
1347
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRipple, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1348
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRipple, isStandalone: true, selector: "md-ripple", inputs: { disabled: "disabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1349
- };
1350
- MdRipple = __decorate([
1351
- ProxyCmp({
1352
- defineCustomElementFn: defineMdRipple,
1353
- inputs: ['disabled'],
1354
- methods: ['whenSettled', 'trigger']
1355
- })
1356
- ], MdRipple);
1357
- export { MdRipple };
1358
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRipple, decorators: [{
1359
- type: Component,
1360
- args: [{
1361
- selector: 'md-ripple',
1362
- changeDetection: ChangeDetectionStrategy.OnPush,
1363
- template: '<ng-content></ng-content>',
1364
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1365
- inputs: ['disabled'],
1366
- standalone: true
1367
- }]
1368
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1369
- let MdSearch = class MdSearch {
1370
- constructor(c, r, z) {
1371
- this.z = z;
1372
- c.detach();
1373
- this.el = r.nativeElement;
1374
- proxyOutputs(this, this.el, ['mdInput', 'mdSearch', 'mdSubmit', 'mdChange', 'mdOpen', 'mdClose', 'mdClear', 'mdVoice', 'mdLeadingIconClick', 'mdTrailingIconClick']);
1375
- }
1376
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSearch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1377
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSearch, isStandalone: true, selector: "md-search", inputs: { announceResults: "announceResults", debounce: "debounce", density: "density", disabled: "disabled", dismissOnOutsideClick: "dismissOnOutsideClick", elevation: "elevation", escapeCloses: "escapeCloses", fullWidth: "fullWidth", initialFocus: "initialFocus", inputAriaLabel: "inputAriaLabel", layout: "layout", leadingIcon: "leadingIcon", loading: "loading", loadingLabel: "loadingLabel", maxBlockSize: "maxBlockSize", noResultsLabel: "noResultsLabel", open: "open", openLeadingIcon: "openLeadingIcon", placeholder: "placeholder", resultsLabel: "resultsLabel", scrollShadow: "scrollShadow", showClearButton: "showClearButton", throttle: "throttle", trigger: "trigger", triggerElement: "triggerElement", triggerFor: "triggerFor", triggerIcon: "triggerIcon", value: "value", variant: "variant", voiceSearch: "voiceSearch" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1378
- };
1379
- MdSearch = __decorate([
1380
- ProxyCmp({
1381
- defineCustomElementFn: defineMdSearch,
1382
- inputs: ['announceResults', 'debounce', 'density', 'disabled', 'dismissOnOutsideClick', 'elevation', 'escapeCloses', 'fullWidth', 'initialFocus', 'inputAriaLabel', 'layout', 'leadingIcon', 'loading', 'loadingLabel', 'maxBlockSize', 'noResultsLabel', 'open', 'openLeadingIcon', 'placeholder', 'resultsLabel', 'scrollShadow', 'showClearButton', 'throttle', 'trigger', 'triggerElement', 'triggerFor', 'triggerIcon', 'value', 'variant', 'voiceSearch'],
1383
- methods: ['show', 'close', 'whenClosed', 'toggle', 'focusInput', 'startVoice', 'stopVoice']
1384
- })
1385
- ], MdSearch);
1386
- export { MdSearch };
1387
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSearch, decorators: [{
1388
- type: Component,
1389
- args: [{
1390
- selector: 'md-search',
1391
- changeDetection: ChangeDetectionStrategy.OnPush,
1392
- template: '<ng-content></ng-content>',
1393
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1394
- inputs: ['announceResults', 'debounce', 'density', 'disabled', 'dismissOnOutsideClick', 'elevation', 'escapeCloses', 'fullWidth', 'initialFocus', 'inputAriaLabel', 'layout', 'leadingIcon', 'loading', 'loadingLabel', 'maxBlockSize', 'noResultsLabel', 'open', 'openLeadingIcon', 'placeholder', 'resultsLabel', 'scrollShadow', 'showClearButton', 'throttle', 'trigger', 'triggerElement', 'triggerFor', 'triggerIcon', 'value', 'variant', 'voiceSearch'],
1395
- standalone: true
1396
- }]
1397
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1398
- let MdSegmentedButton = class MdSegmentedButton {
1399
- constructor(c, r, z) {
1400
- this.z = z;
1401
- c.detach();
1402
- this.el = r.nativeElement;
1403
- proxyOutputs(this, this.el, ['mdSegmentClick']);
1404
- }
1405
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSegmentedButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1406
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSegmentedButton, isStandalone: true, selector: "md-segmented-button", inputs: { density: "density", disabled: "disabled", icon: "icon", label: "label", noCheckmark: "noCheckmark", ripple: "ripple", segmentDensity: "segmentDensity", segmentIndex: "segmentIndex", segmentMultiselect: "segmentMultiselect", segmentTotal: "segmentTotal", selected: "selected", softDisabled: "softDisabled", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1407
- };
1408
- MdSegmentedButton = __decorate([
1409
- ProxyCmp({
1410
- defineCustomElementFn: defineMdSegmentedButton,
1411
- inputs: ['density', 'disabled', 'icon', 'label', 'noCheckmark', 'ripple', 'segmentDensity', 'segmentIndex', 'segmentMultiselect', 'segmentTotal', 'selected', 'softDisabled', 'value']
1412
- })
1413
- ], MdSegmentedButton);
1414
- export { MdSegmentedButton };
1415
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSegmentedButton, decorators: [{
1416
- type: Component,
1417
- args: [{
1418
- selector: 'md-segmented-button',
1419
- changeDetection: ChangeDetectionStrategy.OnPush,
1420
- template: '<ng-content></ng-content>',
1421
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1422
- inputs: ['density', 'disabled', 'icon', 'label', 'noCheckmark', 'ripple', 'segmentDensity', 'segmentIndex', 'segmentMultiselect', 'segmentTotal', 'selected', 'softDisabled', 'value'],
1423
- standalone: true
1424
- }]
1425
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1426
- let MdSegmentedButtonSet = class MdSegmentedButtonSet {
1427
- constructor(c, r, z) {
1428
- this.z = z;
1429
- c.detach();
1430
- this.el = r.nativeElement;
1431
- proxyOutputs(this, this.el, ['mdChange']);
1432
- }
1433
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSegmentedButtonSet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1434
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSegmentedButtonSet, isStandalone: true, selector: "md-segmented-button-set", inputs: { density: "density", multiselect: "multiselect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1435
- };
1436
- MdSegmentedButtonSet = __decorate([
1437
- ProxyCmp({
1438
- defineCustomElementFn: defineMdSegmentedButtonSet,
1439
- inputs: ['density', 'multiselect']
1440
- })
1441
- ], MdSegmentedButtonSet);
1442
- export { MdSegmentedButtonSet };
1443
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSegmentedButtonSet, decorators: [{
1444
- type: Component,
1445
- args: [{
1446
- selector: 'md-segmented-button-set',
1447
- changeDetection: ChangeDetectionStrategy.OnPush,
1448
- template: '<ng-content></ng-content>',
1449
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1450
- inputs: ['density', 'multiselect'],
1451
- standalone: true
1452
- }]
1453
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1454
- let MdSelect = class MdSelect {
1455
- constructor(c, r, z) {
1456
- this.z = z;
1457
- c.detach();
1458
- this.el = r.nativeElement;
1459
- proxyOutputs(this, this.el, ['mdChange', 'mdOpen', 'mdClose', 'mdValidityChange']);
1460
- }
1461
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1462
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSelect, isStandalone: true, selector: "md-select", inputs: { clearIcon: "clearIcon", clearLabel: "clearLabel", clearable: "clearable", density: "density", disabled: "disabled", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterLabel: "filterLabel", filterMode: "filterMode", filterable: "filterable", fullWidth: "fullWidth", label: "label", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", searchPlaceholder: "searchPlaceholder", searchingLabel: "searchingLabel", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1463
- };
1464
- MdSelect = __decorate([
1465
- ProxyCmp({
1466
- defineCustomElementFn: defineMdSelect,
1467
- inputs: ['clearIcon', 'clearLabel', 'clearable', 'density', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'fullWidth', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
1468
- methods: ['show', 'close', 'focusTrigger', 'reset', 'loadOptions', 'setQuery', 'getLabels', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
1469
- })
1470
- ], MdSelect);
1471
- export { MdSelect };
1472
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSelect, decorators: [{
1473
- type: Component,
1474
- args: [{
1475
- selector: 'md-select',
1476
- changeDetection: ChangeDetectionStrategy.OnPush,
1477
- template: '<ng-content></ng-content>',
1478
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1479
- inputs: ['clearIcon', 'clearLabel', 'clearable', 'density', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'fullWidth', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
1480
- standalone: true
1481
- }]
1482
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1483
- let MdSelectOption = class MdSelectOption {
1484
- constructor(c, r, z) {
1485
- this.z = z;
1486
- c.detach();
1487
- this.el = r.nativeElement;
1488
- proxyOutputs(this, this.el, ['mdSelectOptionChange']);
1489
- }
1490
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSelectOption, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1491
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSelectOption, isStandalone: true, selector: "md-select-option", inputs: { disabled: "disabled", icon: "icon", iconColor: "iconColor", label: "label", selected: "selected", supportingText: "supportingText", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1492
- };
1493
- MdSelectOption = __decorate([
1494
- ProxyCmp({
1495
- defineCustomElementFn: defineMdSelectOption,
1496
- inputs: ['disabled', 'icon', 'iconColor', 'label', 'selected', 'supportingText', 'value']
1497
- })
1498
- ], MdSelectOption);
1499
- export { MdSelectOption };
1500
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSelectOption, decorators: [{
1501
- type: Component,
1502
- args: [{
1503
- selector: 'md-select-option',
1504
- changeDetection: ChangeDetectionStrategy.OnPush,
1505
- template: '<ng-content></ng-content>',
1506
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1507
- inputs: ['disabled', 'icon', 'iconColor', 'label', 'selected', 'supportingText', 'value'],
1508
- standalone: true
1509
- }]
1510
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1511
- let MdSideSheet = class MdSideSheet {
1512
- constructor(c, r, z) {
1513
- this.z = z;
1514
- c.detach();
1515
- this.el = r.nativeElement;
1516
- proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdCancel', 'mdBack']);
1517
- }
1518
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSideSheet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1519
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSideSheet, isStandalone: true, selector: "md-side-sheet", inputs: { bottomDivider: "bottomDivider", closeable: "closeable", density: "density", detached: "detached", headline: "headline", open: "open", scrimDismissible: "scrimDismissible", sheetAriaLabel: "sheetAriaLabel", showBack: "showBack", side: "side", topDivider: "topDivider", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1520
- };
1521
- MdSideSheet = __decorate([
1522
- ProxyCmp({
1523
- defineCustomElementFn: defineMdSideSheet,
1524
- inputs: ['bottomDivider', 'closeable', 'density', 'detached', 'headline', 'open', 'scrimDismissible', 'sheetAriaLabel', 'showBack', 'side', 'topDivider', 'variant'],
1525
- methods: ['show', 'whenClosed', 'close']
1526
- })
1527
- ], MdSideSheet);
1528
- export { MdSideSheet };
1529
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSideSheet, decorators: [{
1530
- type: Component,
1531
- args: [{
1532
- selector: 'md-side-sheet',
1533
- changeDetection: ChangeDetectionStrategy.OnPush,
1534
- template: '<ng-content></ng-content>',
1535
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1536
- inputs: ['bottomDivider', 'closeable', 'density', 'detached', 'headline', 'open', 'scrimDismissible', 'sheetAriaLabel', 'showBack', 'side', 'topDivider', 'variant'],
1537
- standalone: true
1538
- }]
1539
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1540
- let MdSkeleton = class MdSkeleton {
1541
- constructor(c, r, z) {
1542
- this.z = z;
1543
- c.detach();
1544
- this.el = r.nativeElement;
1545
- }
1546
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSkeleton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1547
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSkeleton, isStandalone: true, selector: "md-skeleton", inputs: { animation: "animation", announce: "announce", ariaLabelProp: "ariaLabelProp", density: "density", fullHeight: "fullHeight", fullWidth: "fullWidth", height: "height", lines: "lines", variant: "variant", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1548
- };
1549
- MdSkeleton = __decorate([
1550
- ProxyCmp({
1551
- defineCustomElementFn: defineMdSkeleton,
1552
- inputs: ['animation', 'announce', 'ariaLabelProp', 'density', 'fullHeight', 'fullWidth', 'height', 'lines', 'variant', 'width']
1553
- })
1554
- ], MdSkeleton);
1555
- export { MdSkeleton };
1556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSkeleton, decorators: [{
1557
- type: Component,
1558
- args: [{
1559
- selector: 'md-skeleton',
1560
- changeDetection: ChangeDetectionStrategy.OnPush,
1561
- template: '<ng-content></ng-content>',
1562
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1563
- inputs: ['animation', 'announce', 'ariaLabelProp', 'density', 'fullHeight', 'fullWidth', 'height', 'lines', 'variant', 'width'],
1564
- standalone: true
1565
- }]
1566
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1567
- let MdSlider = class MdSlider {
1568
- constructor(c, r, z) {
1569
- this.z = z;
1570
- c.detach();
1571
- this.el = r.nativeElement;
1572
- proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdFocus', 'mdBlur', 'mdDragStart', 'mdDragEnd']);
1573
- }
1574
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSlider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1575
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSlider, isStandalone: true, selector: "md-slider", inputs: { ariaLabelEnd: "ariaLabelEnd", ariaLabelStart: "ariaLabelStart", controlled: "controlled", density: "density", disabled: "disabled", fullHeight: "fullHeight", icon: "icon", insetIcon: "insetIcon", labeled: "labeled", max: "max", min: "min", name: "name", nameEnd: "nameEnd", nameStart: "nameStart", orientation: "orientation", range: "range", size: "size", sliderAriaLabel: "sliderAriaLabel", step: "step", stops: "stops", value: "value", valueEnd: "valueEnd", valueEndText: "valueEndText", valueIndicator: "valueIndicator", valueStart: "valueStart", valueStartText: "valueStartText", valueText: "valueText", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1576
- };
1577
- MdSlider = __decorate([
1578
- ProxyCmp({
1579
- defineCustomElementFn: defineMdSlider,
1580
- inputs: ['ariaLabelEnd', 'ariaLabelStart', 'controlled', 'density', 'disabled', 'fullHeight', 'icon', 'insetIcon', 'labeled', 'max', 'min', 'name', 'nameEnd', 'nameStart', 'orientation', 'range', 'size', 'sliderAriaLabel', 'step', 'stops', 'value', 'valueEnd', 'valueEndText', 'valueIndicator', 'valueStart', 'valueStartText', 'valueText', 'variant']
1581
- })
1582
- ], MdSlider);
1583
- export { MdSlider };
1584
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSlider, decorators: [{
1585
- type: Component,
1586
- args: [{
1587
- selector: 'md-slider',
1588
- changeDetection: ChangeDetectionStrategy.OnPush,
1589
- template: '<ng-content></ng-content>',
1590
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1591
- inputs: ['ariaLabelEnd', 'ariaLabelStart', 'controlled', 'density', 'disabled', 'fullHeight', 'icon', 'insetIcon', 'labeled', 'max', 'min', 'name', 'nameEnd', 'nameStart', 'orientation', 'range', 'size', 'sliderAriaLabel', 'step', 'stops', 'value', 'valueEnd', 'valueEndText', 'valueIndicator', 'valueStart', 'valueStartText', 'valueText', 'variant'],
1592
- standalone: true
1593
- }]
1594
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1595
- let MdSnackbar = class MdSnackbar {
1596
- constructor(c, r, z) {
1597
- this.z = z;
1598
- c.detach();
1599
- this.el = r.nativeElement;
1600
- proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdAction']);
1601
- }
1602
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSnackbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1603
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSnackbar, isStandalone: true, selector: "md-snackbar", inputs: { action: "action", autoHide: "autoHide", autoHideDuration: "autoHideDuration", closeable: "closeable", density: "density", dismissLabel: "dismissLabel", message: "message", open: "open", politeness: "politeness", position: "position", stacked: "stacked" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1604
- };
1605
- MdSnackbar = __decorate([
1606
- ProxyCmp({
1607
- defineCustomElementFn: defineMdSnackbar,
1608
- inputs: ['action', 'autoHide', 'autoHideDuration', 'closeable', 'density', 'dismissLabel', 'message', 'open', 'politeness', 'position', 'stacked'],
1609
- methods: ['show', 'hide']
1610
- })
1611
- ], MdSnackbar);
1612
- export { MdSnackbar };
1613
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSnackbar, decorators: [{
1614
- type: Component,
1615
- args: [{
1616
- selector: 'md-snackbar',
1617
- changeDetection: ChangeDetectionStrategy.OnPush,
1618
- template: '<ng-content></ng-content>',
1619
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1620
- inputs: ['action', 'autoHide', 'autoHideDuration', 'closeable', 'density', 'dismissLabel', 'message', 'open', 'politeness', 'position', 'stacked'],
1621
- standalone: true
1622
- }]
1623
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1624
- let MdSparkline = class MdSparkline {
1625
- constructor(c, r, z) {
1626
- this.z = z;
1627
- c.detach();
1628
- this.el = r.nativeElement;
1629
- proxyOutputs(this, this.el, ['mdSparkClick', 'mdReady']);
1630
- }
1631
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSparkline, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1632
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSparkline, isStandalone: true, selector: "md-sparkline", inputs: { barWidth: "barWidth", color: "color", cornerRadius: "cornerRadius", curve: "curve", data: "data", heightProp: "heightProp", labels: "labels", lineWidth: "lineWidth", markSize: "markSize", max: "max", min: "min", noAnimation: "noAnimation", referenceAreas: "referenceAreas", showMarks: "showMarks", showTooltip: "showTooltip", valueFormatter: "valueFormatter", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1633
- };
1634
- MdSparkline = __decorate([
1635
- ProxyCmp({
1636
- defineCustomElementFn: defineMdSparkline,
1637
- inputs: ['barWidth', 'color', 'cornerRadius', 'curve', 'data', 'heightProp', 'labels', 'lineWidth', 'markSize', 'max', 'min', 'noAnimation', 'referenceAreas', 'showMarks', 'showTooltip', 'valueFormatter', 'variant'],
1638
- methods: ['refreshTheme', 'resize', 'getInstance']
1639
- })
1640
- ], MdSparkline);
1641
- export { MdSparkline };
1642
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSparkline, decorators: [{
1643
- type: Component,
1644
- args: [{
1645
- selector: 'md-sparkline',
1646
- changeDetection: ChangeDetectionStrategy.OnPush,
1647
- template: '<ng-content></ng-content>',
1648
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1649
- inputs: ['barWidth', 'color', 'cornerRadius', 'curve', 'data', 'heightProp', 'labels', 'lineWidth', 'markSize', 'max', 'min', 'noAnimation', 'referenceAreas', 'showMarks', 'showTooltip', 'valueFormatter', 'variant'],
1650
- standalone: true
1651
- }]
1652
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1653
- let MdSplitButton = class MdSplitButton {
1654
- constructor(c, r, z) {
1655
- this.z = z;
1656
- c.detach();
1657
- this.el = r.nativeElement;
1658
- proxyOutputs(this, this.el, ['mdLeadingClick', 'mdTrailingClick']);
1659
- }
1660
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSplitButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1661
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSplitButton, isStandalone: true, selector: "md-split-button", inputs: { controls: "controls", density: "density", disabled: "disabled", fullWidth: "fullWidth", haspopup: "haspopup", icon: "icon", label: "label", menuLabel: "menuLabel", ripple: "ripple", size: "size", softDisabled: "softDisabled", trailingChecked: "trailingChecked", trailingIcon: "trailingIcon", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1662
- };
1663
- MdSplitButton = __decorate([
1664
- ProxyCmp({
1665
- defineCustomElementFn: defineMdSplitButton,
1666
- inputs: ['controls', 'density', 'disabled', 'fullWidth', 'haspopup', 'icon', 'label', 'menuLabel', 'ripple', 'size', 'softDisabled', 'trailingChecked', 'trailingIcon', 'variant']
1667
- })
1668
- ], MdSplitButton);
1669
- export { MdSplitButton };
1670
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSplitButton, decorators: [{
1671
- type: Component,
1672
- args: [{
1673
- selector: 'md-split-button',
1674
- changeDetection: ChangeDetectionStrategy.OnPush,
1675
- template: '<ng-content></ng-content>',
1676
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1677
- inputs: ['controls', 'density', 'disabled', 'fullWidth', 'haspopup', 'icon', 'label', 'menuLabel', 'ripple', 'size', 'softDisabled', 'trailingChecked', 'trailingIcon', 'variant'],
1678
- standalone: true
1679
- }]
1680
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1681
- let MdStatusDot = class MdStatusDot {
1682
- constructor(c, r, z) {
1683
- this.z = z;
1684
- c.detach();
1685
- this.el = r.nativeElement;
1686
- }
1687
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStatusDot, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1688
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStatusDot, isStandalone: true, selector: "md-status-dot", inputs: { density: "density", inline: "inline", label: "label", live: "live", shape: "shape", size: "size", state: "state" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1689
- };
1690
- MdStatusDot = __decorate([
1691
- ProxyCmp({
1692
- defineCustomElementFn: defineMdStatusDot,
1693
- inputs: ['density', 'inline', 'label', 'live', 'shape', 'size', 'state']
1694
- })
1695
- ], MdStatusDot);
1696
- export { MdStatusDot };
1697
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStatusDot, decorators: [{
1698
- type: Component,
1699
- args: [{
1700
- selector: 'md-status-dot',
1701
- changeDetection: ChangeDetectionStrategy.OnPush,
1702
- template: '<ng-content></ng-content>',
1703
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1704
- inputs: ['density', 'inline', 'label', 'live', 'shape', 'size', 'state'],
1705
- standalone: true
1706
- }]
1707
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1708
- let MdStep = class MdStep {
1709
- constructor(c, r, z) {
1710
- this.z = z;
1711
- c.detach();
1712
- this.el = r.nativeElement;
1713
- proxyOutputs(this, this.el, ['mdStepClick', 'mdStepNext', 'mdStepBack']);
1714
- }
1715
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStep, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1716
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStep, isStandalone: true, selector: "md-step", inputs: { accessibleName: "accessibleName", active: "active", completed: "completed", completedIcon: "completedIcon", density: "density", description: "description", disabled: "disabled", editable: "editable", error: "error", errorIcon: "errorIcon", errorText: "errorText", hideActions: "hideActions", icon: "icon", label: "label", optional: "optional" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1717
- };
1718
- MdStep = __decorate([
1719
- ProxyCmp({
1720
- defineCustomElementFn: defineMdStep,
1721
- inputs: ['accessibleName', 'active', 'completed', 'completedIcon', 'density', 'description', 'disabled', 'editable', 'error', 'errorIcon', 'errorText', 'hideActions', 'icon', 'label', 'optional']
1722
- })
1723
- ], MdStep);
1724
- export { MdStep };
1725
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStep, decorators: [{
1726
- type: Component,
1727
- args: [{
1728
- selector: 'md-step',
1729
- changeDetection: ChangeDetectionStrategy.OnPush,
1730
- template: '<ng-content></ng-content>',
1731
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1732
- inputs: ['accessibleName', 'active', 'completed', 'completedIcon', 'density', 'description', 'disabled', 'editable', 'error', 'errorIcon', 'errorText', 'hideActions', 'icon', 'label', 'optional'],
1733
- standalone: true
1734
- }]
1735
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1736
- let MdStepper = class MdStepper {
1737
- constructor(c, r, z) {
1738
- this.z = z;
1739
- c.detach();
1740
- this.el = r.nativeElement;
1741
- proxyOutputs(this, this.el, ['mdBeforeChange', 'mdStepChange', 'mdComplete']);
1742
- }
1743
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStepper, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1744
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStepper, isStandalone: true, selector: "md-stepper", inputs: { active: "active", autoComplete: "autoComplete", backLabel: "backLabel", completedWord: "completedWord", currentWord: "currentWord", density: "density", errorWord: "errorWord", finishLabel: "finishLabel", indicator: "indicator", label: "label", lazy: "lazy", loading: "loading", mode: "mode", nav: "nav", nextDisabled: "nextDisabled", nextLabel: "nextLabel", ofWord: "ofWord", optionalWord: "optionalWord", orientation: "orientation", readonly: "readonly", stepWord: "stepWord", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1745
- };
1746
- MdStepper = __decorate([
1747
- ProxyCmp({
1748
- defineCustomElementFn: defineMdStepper,
1749
- inputs: ['active', 'autoComplete', 'backLabel', 'completedWord', 'currentWord', 'density', 'errorWord', 'finishLabel', 'indicator', 'label', 'lazy', 'loading', 'mode', 'nav', 'nextDisabled', 'nextLabel', 'ofWord', 'optionalWord', 'orientation', 'readonly', 'stepWord', 'variant'],
1750
- methods: ['next', 'prev', 'goTo', 'reset']
1751
- })
1752
- ], MdStepper);
1753
- export { MdStepper };
1754
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStepper, decorators: [{
1755
- type: Component,
1756
- args: [{
1757
- selector: 'md-stepper',
1758
- changeDetection: ChangeDetectionStrategy.OnPush,
1759
- template: '<ng-content></ng-content>',
1760
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1761
- inputs: ['active', 'autoComplete', 'backLabel', 'completedWord', 'currentWord', 'density', 'errorWord', 'finishLabel', 'indicator', 'label', 'lazy', 'loading', 'mode', 'nav', 'nextDisabled', 'nextLabel', 'ofWord', 'optionalWord', 'orientation', 'readonly', 'stepWord', 'variant'],
1762
- standalone: true
1763
- }]
1764
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1765
- let MdSubMenuItem = class MdSubMenuItem {
1766
- constructor(c, r, z) {
1767
- this.z = z;
1768
- c.detach();
1769
- this.el = r.nativeElement;
1770
- proxyOutputs(this, this.el, ['mdClick']);
1771
- }
1772
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSubMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1773
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSubMenuItem, isStandalone: true, selector: "md-sub-menu-item", inputs: { badge: "badge", closeDelay: "closeDelay", density: "density", disabled: "disabled", divider: "divider", gap: "gap", headline: "headline", openDelay: "openDelay", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1774
- };
1775
- MdSubMenuItem = __decorate([
1776
- ProxyCmp({
1777
- defineCustomElementFn: defineMdSubMenuItem,
1778
- inputs: ['badge', 'closeDelay', 'density', 'disabled', 'divider', 'gap', 'headline', 'openDelay', 'supportingText'],
1779
- methods: ['collapse']
1780
- })
1781
- ], MdSubMenuItem);
1782
- export { MdSubMenuItem };
1783
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSubMenuItem, decorators: [{
1784
- type: Component,
1785
- args: [{
1786
- selector: 'md-sub-menu-item',
1787
- changeDetection: ChangeDetectionStrategy.OnPush,
1788
- template: '<ng-content></ng-content>',
1789
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1790
- inputs: ['badge', 'closeDelay', 'density', 'disabled', 'divider', 'gap', 'headline', 'openDelay', 'supportingText'],
1791
- standalone: true
1792
- }]
1793
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1794
- let MdSwitch = class MdSwitch {
1795
- constructor(c, r, z) {
1796
- this.z = z;
1797
- c.detach();
1798
- this.el = r.nativeElement;
1799
- proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdValidityChange']);
1800
- }
1801
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSwitch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1802
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSwitch, isStandalone: true, selector: "md-switch", inputs: { density: "density", disabled: "disabled", icons: "icons", name: "name", required: "required", selected: "selected", selectedIcon: "selectedIcon", showOnlySelectedIcon: "showOnlySelectedIcon", softDisabled: "softDisabled", unselectedIcon: "unselectedIcon", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1803
- };
1804
- MdSwitch = __decorate([
1805
- ProxyCmp({
1806
- defineCustomElementFn: defineMdSwitch,
1807
- inputs: ['density', 'disabled', 'icons', 'name', 'required', 'selected', 'selectedIcon', 'showOnlySelectedIcon', 'softDisabled', 'unselectedIcon', 'value', 'valueMissingLabel'],
1808
- methods: ['setFocus', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
1809
- })
1810
- ], MdSwitch);
1811
- export { MdSwitch };
1812
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSwitch, decorators: [{
1813
- type: Component,
1814
- args: [{
1815
- selector: 'md-switch',
1816
- changeDetection: ChangeDetectionStrategy.OnPush,
1817
- template: '<ng-content></ng-content>',
1818
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1819
- inputs: ['density', 'disabled', 'icons', 'name', 'required', 'selected', 'selectedIcon', 'showOnlySelectedIcon', 'softDisabled', 'unselectedIcon', 'value', 'valueMissingLabel'],
1820
- standalone: true
1821
- }]
1822
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1823
- let MdTab = class MdTab {
1824
- constructor(c, r, z) {
1825
- this.z = z;
1826
- c.detach();
1827
- this.el = r.nativeElement;
1828
- proxyOutputs(this, this.el, ['mdTabClick']);
1829
- }
1830
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1831
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTab, isStandalone: true, selector: "md-tab", inputs: { active: "active", badge: "badge", controls: "controls", density: "density", disabled: "disabled", icon: "icon", inlineIcon: "inlineIcon", label: "label", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1832
- };
1833
- MdTab = __decorate([
1834
- ProxyCmp({
1835
- defineCustomElementFn: defineMdTab,
1836
- inputs: ['active', 'badge', 'controls', 'density', 'disabled', 'icon', 'inlineIcon', 'label', 'variant']
1837
- })
1838
- ], MdTab);
1839
- export { MdTab };
1840
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTab, decorators: [{
1841
- type: Component,
1842
- args: [{
1843
- selector: 'md-tab',
1844
- changeDetection: ChangeDetectionStrategy.OnPush,
1845
- template: '<ng-content></ng-content>',
1846
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1847
- inputs: ['active', 'badge', 'controls', 'density', 'disabled', 'icon', 'inlineIcon', 'label', 'variant'],
1848
- standalone: true
1849
- }]
1850
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1851
- let MdTabPanel = class MdTabPanel {
1852
- constructor(c, r, z) {
1853
- this.z = z;
1854
- c.detach();
1855
- this.el = r.nativeElement;
1856
- }
1857
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1858
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabPanel, isStandalone: true, selector: "md-tab-panel", inputs: { active: "active" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1859
- };
1860
- MdTabPanel = __decorate([
1861
- ProxyCmp({
1862
- defineCustomElementFn: defineMdTabPanel,
1863
- inputs: ['active']
1864
- })
1865
- ], MdTabPanel);
1866
- export { MdTabPanel };
1867
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabPanel, decorators: [{
1868
- type: Component,
1869
- args: [{
1870
- selector: 'md-tab-panel',
1871
- changeDetection: ChangeDetectionStrategy.OnPush,
1872
- template: '<ng-content></ng-content>',
1873
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1874
- inputs: ['active'],
1875
- standalone: true
1876
- }]
1877
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1878
- let MdTabPanels = class MdTabPanels {
1879
- constructor(c, r, z) {
1880
- this.z = z;
1881
- c.detach();
1882
- this.el = r.nativeElement;
1883
- }
1884
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabPanels, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1885
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabPanels, isStandalone: true, selector: "md-tab-panels", inputs: { for: "for", sizing: "sizing" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1886
- };
1887
- MdTabPanels = __decorate([
1888
- ProxyCmp({
1889
- defineCustomElementFn: defineMdTabPanels,
1890
- inputs: ['for', 'sizing']
1891
- })
1892
- ], MdTabPanels);
1893
- export { MdTabPanels };
1894
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabPanels, decorators: [{
1895
- type: Component,
1896
- args: [{
1897
- selector: 'md-tab-panels',
1898
- changeDetection: ChangeDetectionStrategy.OnPush,
1899
- template: '<ng-content></ng-content>',
1900
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1901
- inputs: ['for', 'sizing'],
1902
- standalone: true
1903
- }]
1904
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1905
- let MdTable = class MdTable {
1906
- constructor(c, r, z) {
1907
- this.z = z;
1908
- c.detach();
1909
- this.el = r.nativeElement;
1910
- proxyOutputs(this, this.el, ['mdSortChange', 'mdSelectionChange', 'mdPinChange', 'mdColumnVisibilityChange', 'mdScroll']);
1911
- }
1912
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTable, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1913
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTable, isStandalone: true, selector: "md-table", inputs: { caption: "caption", columnTemplate: "columnTemplate", columns: "columns", density: "density", empty: "empty", frozenHeader: "frozenHeader", hoverable: "hoverable", keepHeight: "keepHeight", label: "label", loading: "loading", loadingMode: "loadingMode", loadingRows: "loadingRows", minWidth: "minWidth", motion: "motion", noDividers: "noDividers", pinIcon: "pinIcon", pinMode: "pinMode", rowCount: "rowCount", rowOffset: "rowOffset", scrollbar: "scrollbar", selection: "selection", sortBy: "sortBy", sortOrder: "sortOrder", stickyFooter: "stickyFooter", stickyHeader: "stickyHeader", striped: "striped", summary: "summary" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1914
- };
1915
- MdTable = __decorate([
1916
- ProxyCmp({
1917
- defineCustomElementFn: defineMdTable,
1918
- inputs: ['caption', 'columnTemplate', 'columns', 'density', 'empty', 'frozenHeader', 'hoverable', 'keepHeight', 'label', 'loading', 'loadingMode', 'loadingRows', 'minWidth', 'motion', 'noDividers', 'pinIcon', 'pinMode', 'rowCount', 'rowOffset', 'scrollbar', 'selection', 'sortBy', 'sortOrder', 'stickyFooter', 'stickyHeader', 'striped', 'summary'],
1919
- methods: ['getSelection', 'selectAll', 'deselectAll', 'toggleSelectAll', 'setSort', 'pinColumn', 'setColumnVisibility', 'animateNextChange']
1920
- })
1921
- ], MdTable);
1922
- export { MdTable };
1923
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTable, decorators: [{
1924
- type: Component,
1925
- args: [{
1926
- selector: 'md-table',
1927
- changeDetection: ChangeDetectionStrategy.OnPush,
1928
- template: '<ng-content></ng-content>',
1929
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1930
- inputs: ['caption', 'columnTemplate', 'columns', 'density', 'empty', 'frozenHeader', 'hoverable', 'keepHeight', 'label', 'loading', 'loadingMode', 'loadingRows', 'minWidth', 'motion', 'noDividers', 'pinIcon', 'pinMode', 'rowCount', 'rowOffset', 'scrollbar', 'selection', 'sortBy', 'sortOrder', 'stickyFooter', 'stickyHeader', 'striped', 'summary'],
1931
- standalone: true
1932
- }]
1933
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1934
- let MdTableBody = class MdTableBody {
1935
- constructor(c, r, z) {
1936
- this.z = z;
1937
- c.detach();
1938
- this.el = r.nativeElement;
1939
- }
1940
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableBody, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1941
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableBody, isStandalone: true, selector: "md-table-body", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1942
- };
1943
- MdTableBody = __decorate([
1944
- ProxyCmp({
1945
- defineCustomElementFn: defineMdTableBody
1946
- })
1947
- ], MdTableBody);
1948
- export { MdTableBody };
1949
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableBody, decorators: [{
1950
- type: Component,
1951
- args: [{
1952
- selector: 'md-table-body',
1953
- changeDetection: ChangeDetectionStrategy.OnPush,
1954
- template: '<ng-content></ng-content>',
1955
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1956
- inputs: [],
1957
- standalone: true
1958
- }]
1959
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1960
- let MdTableCell = class MdTableCell {
1961
- constructor(c, r, z) {
1962
- this.z = z;
1963
- c.detach();
1964
- this.el = r.nativeElement;
1965
- }
1966
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableCell, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1967
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableCell, isStandalone: true, selector: "md-table-cell", inputs: { align: "align", colSpan: "colSpan", density: "density", ellipsis: "ellipsis", head: "head", noPinIndicator: "noPinIndicator", numeric: "numeric", padding: "padding", pinIcon: "pinIcon", rowSpan: "rowSpan", scope: "scope", sticky: "sticky", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1968
- };
1969
- MdTableCell = __decorate([
1970
- ProxyCmp({
1971
- defineCustomElementFn: defineMdTableCell,
1972
- inputs: ['align', 'colSpan', 'density', 'ellipsis', 'head', 'noPinIndicator', 'numeric', 'padding', 'pinIcon', 'rowSpan', 'scope', 'sticky', 'variant']
1973
- })
1974
- ], MdTableCell);
1975
- export { MdTableCell };
1976
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableCell, decorators: [{
1977
- type: Component,
1978
- args: [{
1979
- selector: 'md-table-cell',
1980
- changeDetection: ChangeDetectionStrategy.OnPush,
1981
- template: '<ng-content></ng-content>',
1982
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1983
- inputs: ['align', 'colSpan', 'density', 'ellipsis', 'head', 'noPinIndicator', 'numeric', 'padding', 'pinIcon', 'rowSpan', 'scope', 'sticky', 'variant'],
1984
- standalone: true
1985
- }]
1986
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1987
- let MdTableContainer = class MdTableContainer {
1988
- constructor(c, r, z) {
1989
- this.z = z;
1990
- c.detach();
1991
- this.el = r.nativeElement;
1992
- }
1993
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableContainer, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1994
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableContainer, isStandalone: true, selector: "md-table-container", inputs: { elevation: "elevation", maxHeight: "maxHeight", minHeight: "minHeight", shape: "shape", variant: "variant", vibrant: "vibrant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1995
- };
1996
- MdTableContainer = __decorate([
1997
- ProxyCmp({
1998
- defineCustomElementFn: defineMdTableContainer,
1999
- inputs: ['elevation', 'maxHeight', 'minHeight', 'shape', 'variant', 'vibrant']
2000
- })
2001
- ], MdTableContainer);
2002
- export { MdTableContainer };
2003
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableContainer, decorators: [{
2004
- type: Component,
2005
- args: [{
2006
- selector: 'md-table-container',
2007
- changeDetection: ChangeDetectionStrategy.OnPush,
2008
- template: '<ng-content></ng-content>',
2009
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2010
- inputs: ['elevation', 'maxHeight', 'minHeight', 'shape', 'variant', 'vibrant'],
2011
- standalone: true
2012
- }]
2013
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2014
- let MdTableExpandToggle = class MdTableExpandToggle {
2015
- constructor(c, r, z) {
2016
- this.z = z;
2017
- c.detach();
2018
- this.el = r.nativeElement;
2019
- }
2020
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableExpandToggle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2021
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableExpandToggle, isStandalone: true, selector: "md-table-expand-toggle", inputs: { buttonLabel: "buttonLabel", icon: "icon" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2022
- };
2023
- MdTableExpandToggle = __decorate([
2024
- ProxyCmp({
2025
- defineCustomElementFn: defineMdTableExpandToggle,
2026
- inputs: ['buttonLabel', 'icon']
2027
- })
2028
- ], MdTableExpandToggle);
2029
- export { MdTableExpandToggle };
2030
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableExpandToggle, decorators: [{
2031
- type: Component,
2032
- args: [{
2033
- selector: 'md-table-expand-toggle',
2034
- changeDetection: ChangeDetectionStrategy.OnPush,
2035
- template: '<ng-content></ng-content>',
2036
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2037
- inputs: ['buttonLabel', 'icon'],
2038
- standalone: true
2039
- }]
2040
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2041
- let MdTableFoot = class MdTableFoot {
2042
- constructor(c, r, z) {
2043
- this.z = z;
2044
- c.detach();
2045
- this.el = r.nativeElement;
2046
- }
2047
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableFoot, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2048
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableFoot, isStandalone: true, selector: "md-table-foot", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2049
- };
2050
- MdTableFoot = __decorate([
2051
- ProxyCmp({
2052
- defineCustomElementFn: defineMdTableFoot
2053
- })
2054
- ], MdTableFoot);
2055
- export { MdTableFoot };
2056
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableFoot, decorators: [{
2057
- type: Component,
2058
- args: [{
2059
- selector: 'md-table-foot',
2060
- changeDetection: ChangeDetectionStrategy.OnPush,
2061
- template: '<ng-content></ng-content>',
2062
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2063
- inputs: [],
2064
- standalone: true
2065
- }]
2066
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2067
- let MdTableHead = class MdTableHead {
2068
- constructor(c, r, z) {
2069
- this.z = z;
2070
- c.detach();
2071
- this.el = r.nativeElement;
2072
- }
2073
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableHead, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2074
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableHead, isStandalone: true, selector: "md-table-head", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2075
- };
2076
- MdTableHead = __decorate([
2077
- ProxyCmp({
2078
- defineCustomElementFn: defineMdTableHead
2079
- })
2080
- ], MdTableHead);
2081
- export { MdTableHead };
2082
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableHead, decorators: [{
2083
- type: Component,
2084
- args: [{
2085
- selector: 'md-table-head',
2086
- changeDetection: ChangeDetectionStrategy.OnPush,
2087
- template: '<ng-content></ng-content>',
2088
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2089
- inputs: [],
2090
- standalone: true
2091
- }]
2092
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2093
- let MdTablePagination = class MdTablePagination {
2094
- constructor(c, r, z) {
2095
- this.z = z;
2096
- c.detach();
2097
- this.el = r.nativeElement;
2098
- proxyOutputs(this, this.el, ['mdPageChange', 'mdRowsPerPageChange']);
2099
- }
2100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTablePagination, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTablePagination, isStandalone: true, selector: "md-table-pagination", inputs: { compact: "compact", count: "count", density: "density", disabled: "disabled", labelAll: "labelAll", labelDisplayedRows: "labelDisplayedRows", labelFirstPage: "labelFirstPage", labelLastPage: "labelLastPage", labelNextPage: "labelNextPage", labelPreviousPage: "labelPreviousPage", labelRowsPerPage: "labelRowsPerPage", page: "page", rowsPerPage: "rowsPerPage", rowsPerPageOptions: "rowsPerPageOptions", showFirstLast: "showFirstLast" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2102
- };
2103
- MdTablePagination = __decorate([
2104
- ProxyCmp({
2105
- defineCustomElementFn: defineMdTablePagination,
2106
- inputs: ['compact', 'count', 'density', 'disabled', 'labelAll', 'labelDisplayedRows', 'labelFirstPage', 'labelLastPage', 'labelNextPage', 'labelPreviousPage', 'labelRowsPerPage', 'page', 'rowsPerPage', 'rowsPerPageOptions', 'showFirstLast'],
2107
- methods: ['goToPage', 'setRowsPerPage']
2108
- })
2109
- ], MdTablePagination);
2110
- export { MdTablePagination };
2111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTablePagination, decorators: [{
2112
- type: Component,
2113
- args: [{
2114
- selector: 'md-table-pagination',
2115
- changeDetection: ChangeDetectionStrategy.OnPush,
2116
- template: '<ng-content></ng-content>',
2117
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2118
- inputs: ['compact', 'count', 'density', 'disabled', 'labelAll', 'labelDisplayedRows', 'labelFirstPage', 'labelLastPage', 'labelNextPage', 'labelPreviousPage', 'labelRowsPerPage', 'page', 'rowsPerPage', 'rowsPerPageOptions', 'showFirstLast'],
2119
- standalone: true
2120
- }]
2121
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2122
- let MdTableRow = class MdTableRow {
2123
- constructor(c, r, z) {
2124
- this.z = z;
2125
- c.detach();
2126
- this.el = r.nativeElement;
2127
- proxyOutputs(this, this.el, ['mdRowClick', 'mdRowSelectionChange', 'mdRowExpandedChange']);
2128
- }
2129
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableRow, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2130
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableRow, isStandalone: true, selector: "md-table-row", inputs: { clickable: "clickable", disabled: "disabled", expandable: "expandable", expanded: "expanded", highlight: "highlight", rowgroup: "rowgroup", selectable: "selectable", selected: "selected", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2131
- };
2132
- MdTableRow = __decorate([
2133
- ProxyCmp({
2134
- defineCustomElementFn: defineMdTableRow,
2135
- inputs: ['clickable', 'disabled', 'expandable', 'expanded', 'highlight', 'rowgroup', 'selectable', 'selected', 'value'],
2136
- methods: ['toggle']
2137
- })
2138
- ], MdTableRow);
2139
- export { MdTableRow };
2140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableRow, decorators: [{
2141
- type: Component,
2142
- args: [{
2143
- selector: 'md-table-row',
2144
- changeDetection: ChangeDetectionStrategy.OnPush,
2145
- template: '<ng-content></ng-content>',
2146
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2147
- inputs: ['clickable', 'disabled', 'expandable', 'expanded', 'highlight', 'rowgroup', 'selectable', 'selected', 'value'],
2148
- standalone: true
2149
- }]
2150
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2151
- let MdTableSortLabel = class MdTableSortLabel {
2152
- constructor(c, r, z) {
2153
- this.z = z;
2154
- c.detach();
2155
- this.el = r.nativeElement;
2156
- proxyOutputs(this, this.el, ['mdSortRequest']);
2157
- }
2158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableSortLabel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2159
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableSortLabel, isStandalone: true, selector: "md-table-sort-label", inputs: { active: "active", column: "column", defaultOrder: "defaultOrder", density: "density", disabled: "disabled", icon: "icon", iconPosition: "iconPosition", inactiveIcon: "inactiveIcon", order: "order", sortedAscendingLabel: "sortedAscendingLabel", sortedDescendingLabel: "sortedDescendingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2160
- };
2161
- MdTableSortLabel = __decorate([
2162
- ProxyCmp({
2163
- defineCustomElementFn: defineMdTableSortLabel,
2164
- inputs: ['active', 'column', 'defaultOrder', 'density', 'disabled', 'icon', 'iconPosition', 'inactiveIcon', 'order', 'sortedAscendingLabel', 'sortedDescendingLabel']
2165
- })
2166
- ], MdTableSortLabel);
2167
- export { MdTableSortLabel };
2168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableSortLabel, decorators: [{
2169
- type: Component,
2170
- args: [{
2171
- selector: 'md-table-sort-label',
2172
- changeDetection: ChangeDetectionStrategy.OnPush,
2173
- template: '<ng-content></ng-content>',
2174
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2175
- inputs: ['active', 'column', 'defaultOrder', 'density', 'disabled', 'icon', 'iconPosition', 'inactiveIcon', 'order', 'sortedAscendingLabel', 'sortedDescendingLabel'],
2176
- standalone: true
2177
- }]
2178
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2179
- let MdTableToolbar = class MdTableToolbar {
2180
- constructor(c, r, z) {
2181
- this.z = z;
2182
- c.detach();
2183
- this.el = r.nativeElement;
2184
- }
2185
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableToolbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2186
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableToolbar, isStandalone: true, selector: "md-table-toolbar", inputs: { autoBind: "autoBind", compact: "compact", density: "density", headline: "headline", labelSelected: "labelSelected", numSelected: "numSelected", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2187
- };
2188
- MdTableToolbar = __decorate([
2189
- ProxyCmp({
2190
- defineCustomElementFn: defineMdTableToolbar,
2191
- inputs: ['autoBind', 'compact', 'density', 'headline', 'labelSelected', 'numSelected', 'supportingText']
2192
- })
2193
- ], MdTableToolbar);
2194
- export { MdTableToolbar };
2195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableToolbar, decorators: [{
2196
- type: Component,
2197
- args: [{
2198
- selector: 'md-table-toolbar',
2199
- changeDetection: ChangeDetectionStrategy.OnPush,
2200
- template: '<ng-content></ng-content>',
2201
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2202
- inputs: ['autoBind', 'compact', 'density', 'headline', 'labelSelected', 'numSelected', 'supportingText'],
2203
- standalone: true
2204
- }]
2205
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2206
- let MdTabs = class MdTabs {
2207
- constructor(c, r, z) {
2208
- this.z = z;
2209
- c.detach();
2210
- this.el = r.nativeElement;
2211
- proxyOutputs(this, this.el, ['mdTabChange']);
2212
- }
2213
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2214
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabs, isStandalone: true, selector: "md-tabs", inputs: { activeTabIndex: "activeTabIndex", ariaLabelProp: "ariaLabelProp", divider: "divider", tabWidth: "tabWidth", variant: "variant", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2215
- };
2216
- MdTabs = __decorate([
2217
- ProxyCmp({
2218
- defineCustomElementFn: defineMdTabs,
2219
- inputs: ['activeTabIndex', 'ariaLabelProp', 'divider', 'tabWidth', 'variant', 'width'],
2220
- methods: ['selectTab']
2221
- })
2222
- ], MdTabs);
2223
- export { MdTabs };
2224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabs, decorators: [{
2225
- type: Component,
2226
- args: [{
2227
- selector: 'md-tabs',
2228
- changeDetection: ChangeDetectionStrategy.OnPush,
2229
- template: '<ng-content></ng-content>',
2230
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2231
- inputs: ['activeTabIndex', 'ariaLabelProp', 'divider', 'tabWidth', 'variant', 'width'],
2232
- standalone: true
2233
- }]
2234
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2235
- let MdTextField = class MdTextField {
2236
- constructor(c, r, z) {
2237
- this.z = z;
2238
- c.detach();
2239
- this.el = r.nativeElement;
2240
- proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdSearch', 'mdClear', 'mdPasswordToggle', 'mdSpeechResult', 'mdValidityChange']);
2241
- }
2242
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTextField, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTextField, isStandalone: true, selector: "md-text-field", inputs: { appearFocused: "appearFocused", autoCapitalize: "autoCapitalize", autocomplete: "autocomplete", chipsWrap: "chipsWrap", clearable: "clearable", debounce: "debounce", density: "density", disabled: "disabled", enterKeyHint: "enterKeyHint", error: "error", errorText: "errorText", focusBorderWidth: "focusBorderWidth", formatOn: "formatOn", formatter: "formatter", hidePasswordLabel: "hidePasswordLabel", inputAriaAutocomplete: "inputAriaAutocomplete", inputExpanded: "inputExpanded", inputMode: "inputMode", inputRole: "inputRole", label: "label", max: "max", maxLength: "maxLength", min: "min", minLength: "minLength", multiline: "multiline", name: "name", parser: "parser", passwordToggle: "passwordToggle", pattern: "pattern", placeholder: "placeholder", prefixText: "prefixText", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", restrict: "restrict", rows: "rows", showPasswordLabel: "showPasswordLabel", speechLang: "speechLang", speechToText: "speechToText", spellcheck: "spellcheck", step: "step", suffixText: "suffixText", supportingText: "supportingText", throttle: "throttle", type: "type", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2244
- };
2245
- MdTextField = __decorate([
2246
- ProxyCmp({
2247
- defineCustomElementFn: defineMdTextField,
2248
- inputs: ['appearFocused', 'autoCapitalize', 'autocomplete', 'chipsWrap', 'clearable', 'debounce', 'density', 'disabled', 'enterKeyHint', 'error', 'errorText', 'focusBorderWidth', 'formatOn', 'formatter', 'hidePasswordLabel', 'inputAriaAutocomplete', 'inputExpanded', 'inputMode', 'inputRole', 'label', 'max', 'maxLength', 'min', 'minLength', 'multiline', 'name', 'parser', 'passwordToggle', 'pattern', 'placeholder', 'prefixText', 'readOnly', 'required', 'reserveSupportingSpace', 'restrict', 'rows', 'showPasswordLabel', 'speechLang', 'speechToText', 'spellcheck', 'step', 'suffixText', 'supportingText', 'throttle', 'type', 'value', 'variant'],
2249
- methods: ['setFocus', 'select', 'getInputElement', 'getValidity', 'setCustomValidity', 'checkValidity', 'reportValidity']
2250
- })
2251
- ], MdTextField);
2252
- export { MdTextField };
2253
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTextField, decorators: [{
2254
- type: Component,
2255
- args: [{
2256
- selector: 'md-text-field',
2257
- changeDetection: ChangeDetectionStrategy.OnPush,
2258
- template: '<ng-content></ng-content>',
2259
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2260
- inputs: ['appearFocused', 'autoCapitalize', 'autocomplete', 'chipsWrap', 'clearable', 'debounce', 'density', 'disabled', 'enterKeyHint', 'error', 'errorText', 'focusBorderWidth', 'formatOn', 'formatter', 'hidePasswordLabel', 'inputAriaAutocomplete', 'inputExpanded', 'inputMode', 'inputRole', 'label', 'max', 'maxLength', 'min', 'minLength', 'multiline', 'name', 'parser', 'passwordToggle', 'pattern', 'placeholder', 'prefixText', 'readOnly', 'required', 'reserveSupportingSpace', 'restrict', 'rows', 'showPasswordLabel', 'speechLang', 'speechToText', 'spellcheck', 'step', 'suffixText', 'supportingText', 'throttle', 'type', 'value', 'variant'],
2261
- standalone: true
2262
- }]
2263
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2264
- let MdTimePicker = class MdTimePicker {
2265
- constructor(c, r, z) {
2266
- this.z = z;
2267
- c.detach();
2268
- this.el = r.nativeElement;
2269
- proxyOutputs(this, this.el, ['mdChange', 'mdInput', 'mdOpen', 'mdClose', 'mdCancel', 'mdModeChange', 'mdValidityChange']);
2270
- }
2271
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTimePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2272
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTimePicker, isStandalone: true, selector: "md-time-picker", inputs: { amLabel: "amLabel", cancelLabel: "cancelLabel", density: "density", disabled: "disabled", error: "error", errorText: "errorText", format: "format", headline: "headline", headlineDialLabel: "headlineDialLabel", headlineInputLabel: "headlineInputLabel", hideTrigger: "hideTrigger", hourLabel: "hourLabel", label: "label", max: "max", min: "min", minuteLabel: "minuteLabel", minuteStep: "minuteStep", name: "name", okLabel: "okLabel", open: "open", orientation: "orientation", periodLabel: "periodLabel", periodLayout: "periodLayout", pmLabel: "pmLabel", rangeOutsideLabel: "rangeOutsideLabel", rangeOverflowLabel: "rangeOverflowLabel", rangeUnderflowLabel: "rangeUnderflowLabel", required: "required", reserveSupportingSpace: "reserveSupportingSpace", responsive: "responsive", supportingText: "supportingText", toggleDialLabel: "toggleDialLabel", toggleInputLabel: "toggleInputLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2273
- };
2274
- MdTimePicker = __decorate([
2275
- ProxyCmp({
2276
- defineCustomElementFn: defineMdTimePicker,
2277
- inputs: ['amLabel', 'cancelLabel', 'density', 'disabled', 'error', 'errorText', 'format', 'headline', 'headlineDialLabel', 'headlineInputLabel', 'hideTrigger', 'hourLabel', 'label', 'max', 'min', 'minuteLabel', 'minuteStep', 'name', 'okLabel', 'open', 'orientation', 'periodLabel', 'periodLayout', 'pmLabel', 'rangeOutsideLabel', 'rangeOverflowLabel', 'rangeUnderflowLabel', 'required', 'reserveSupportingSpace', 'responsive', 'supportingText', 'toggleDialLabel', 'toggleInputLabel', 'value', 'valueMissingLabel', 'variant'],
2278
- methods: ['show', 'hide', 'checkValidity', 'reportValidity', 'getValidity']
2279
- })
2280
- ], MdTimePicker);
2281
- export { MdTimePicker };
2282
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTimePicker, decorators: [{
2283
- type: Component,
2284
- args: [{
2285
- selector: 'md-time-picker',
2286
- changeDetection: ChangeDetectionStrategy.OnPush,
2287
- template: '<ng-content></ng-content>',
2288
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2289
- inputs: ['amLabel', 'cancelLabel', 'density', 'disabled', 'error', 'errorText', 'format', 'headline', 'headlineDialLabel', 'headlineInputLabel', 'hideTrigger', 'hourLabel', 'label', 'max', 'min', 'minuteLabel', 'minuteStep', 'name', 'okLabel', 'open', 'orientation', 'periodLabel', 'periodLayout', 'pmLabel', 'rangeOutsideLabel', 'rangeOverflowLabel', 'rangeUnderflowLabel', 'required', 'reserveSupportingSpace', 'responsive', 'supportingText', 'toggleDialLabel', 'toggleInputLabel', 'value', 'valueMissingLabel', 'variant'],
2290
- standalone: true
2291
- }]
2292
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2293
- let MdToolbar = class MdToolbar {
2294
- constructor(c, r, z) {
2295
- this.z = z;
2296
- c.detach();
2297
- this.el = r.nativeElement;
2298
- }
2299
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdToolbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2300
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdToolbar, isStandalone: true, selector: "md-toolbar", inputs: { alignment: "alignment", ariaLabelProp: "ariaLabelProp", ariaLabelledby: "ariaLabelledby", color: "color", containerSemantics: "containerSemantics", density: "density", layout: "layout", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2301
- };
2302
- MdToolbar = __decorate([
2303
- ProxyCmp({
2304
- defineCustomElementFn: defineMdToolbar,
2305
- inputs: ['alignment', 'ariaLabelProp', 'ariaLabelledby', 'color', 'containerSemantics', 'density', 'layout', 'variant'],
2306
- methods: ['setFocus']
2307
- })
2308
- ], MdToolbar);
2309
- export { MdToolbar };
2310
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdToolbar, decorators: [{
2311
- type: Component,
2312
- args: [{
2313
- selector: 'md-toolbar',
2314
- changeDetection: ChangeDetectionStrategy.OnPush,
2315
- template: '<ng-content></ng-content>',
2316
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2317
- inputs: ['alignment', 'ariaLabelProp', 'ariaLabelledby', 'color', 'containerSemantics', 'density', 'layout', 'variant'],
2318
- standalone: true
2319
- }]
2320
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2321
- let MdTooltip = class MdTooltip {
2322
- constructor(c, r, z) {
2323
- this.z = z;
2324
- c.detach();
2325
- this.el = r.nativeElement;
2326
- proxyOutputs(this, this.el, ['mdOpen', 'mdClose']);
2327
- }
2328
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTooltip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2329
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTooltip, isStandalone: true, selector: "md-tooltip", inputs: { autoPosition: "autoPosition", crossOffset: "crossOffset", density: "density", disabled: "disabled", hideDelay: "hideDelay", offset: "offset", open: "open", position: "position", showDelay: "showDelay", subhead: "subhead", text: "text", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2330
- };
2331
- MdTooltip = __decorate([
2332
- ProxyCmp({
2333
- defineCustomElementFn: defineMdTooltip,
2334
- inputs: ['autoPosition', 'crossOffset', 'density', 'disabled', 'hideDelay', 'offset', 'open', 'position', 'showDelay', 'subhead', 'text', 'variant'],
2335
- methods: ['show', 'hide']
2336
- })
2337
- ], MdTooltip);
2338
- export { MdTooltip };
2339
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTooltip, decorators: [{
2340
- type: Component,
2341
- args: [{
2342
- selector: 'md-tooltip',
2343
- changeDetection: ChangeDetectionStrategy.OnPush,
2344
- template: '<ng-content></ng-content>',
2345
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2346
- inputs: ['autoPosition', 'crossOffset', 'density', 'disabled', 'hideDelay', 'offset', 'open', 'position', 'showDelay', 'subhead', 'text', 'variant'],
2347
- standalone: true
2348
- }]
2349
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2350
- let MdTransferList = class MdTransferList {
2351
- constructor(c, r, z) {
2352
- this.z = z;
2353
- c.detach();
2354
- this.el = r.nativeElement;
2355
- proxyOutputs(this, this.el, ['mdChange', 'mdMove']);
2356
- }
2357
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTransferList, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2358
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTransferList, isStandalone: true, selector: "md-transfer-list", inputs: { countTemplate: "countTemplate", density: "density", disabled: "disabled", emptyIcon: "emptyIcon", emptyText: "emptyText", items: "items", moveAllLeftIcon: "moveAllLeftIcon", moveAllLeftLabel: "moveAllLeftLabel", moveAllRightIcon: "moveAllRightIcon", moveAllRightLabel: "moveAllRightLabel", moveLeftIcon: "moveLeftIcon", moveLeftLabel: "moveLeftLabel", moveRightIcon: "moveRightIcon", moveRightLabel: "moveRightLabel", searchIcon: "searchIcon", searchable: "searchable", showSelectAll: "showSelectAll", singleStepOnly: "singleStepOnly", sourceSearchPlaceholder: "sourceSearchPlaceholder", sourceTitle: "sourceTitle", targetSearchPlaceholder: "targetSearchPlaceholder", targetTitle: "targetTitle", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2359
- };
2360
- MdTransferList = __decorate([
2361
- ProxyCmp({
2362
- defineCustomElementFn: defineMdTransferList,
2363
- inputs: ['countTemplate', 'density', 'disabled', 'emptyIcon', 'emptyText', 'items', 'moveAllLeftIcon', 'moveAllLeftLabel', 'moveAllRightIcon', 'moveAllRightLabel', 'moveLeftIcon', 'moveLeftLabel', 'moveRightIcon', 'moveRightLabel', 'searchIcon', 'searchable', 'showSelectAll', 'singleStepOnly', 'sourceSearchPlaceholder', 'sourceTitle', 'targetSearchPlaceholder', 'targetTitle', 'value'],
2364
- methods: ['moveSelectedRight', 'moveSelectedLeft']
2365
- })
2366
- ], MdTransferList);
2367
- export { MdTransferList };
2368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTransferList, decorators: [{
2369
- type: Component,
2370
- args: [{
2371
- selector: 'md-transfer-list',
2372
- changeDetection: ChangeDetectionStrategy.OnPush,
2373
- template: '<ng-content></ng-content>',
2374
- // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2375
- inputs: ['countTemplate', 'density', 'disabled', 'emptyIcon', 'emptyText', 'items', 'moveAllLeftIcon', 'moveAllLeftLabel', 'moveAllRightIcon', 'moveAllRightLabel', 'moveLeftIcon', 'moveLeftLabel', 'moveRightIcon', 'moveRightLabel', 'searchIcon', 'searchable', 'showSelectAll', 'singleStepOnly', 'sourceSearchPlaceholder', 'sourceTitle', 'targetSearchPlaceholder', 'targetTitle', 'value'],
2376
- standalone: true
2377
- }]
2378
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaXJlY3RpdmVzL3Byb3hpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9CQUFvQjtBQUNwQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJdkUsT0FBTyxFQUFFLG1CQUFtQixJQUFJLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDeEcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDakgsT0FBTyxFQUFFLG1CQUFtQixJQUFJLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzlHLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLElBQUksYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0csT0FBTyxFQUFFLG1CQUFtQixJQUFJLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkgsT0FBTyxFQUFFLG1CQUFtQixJQUFJLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUcsT0FBTyxFQUFFLG1CQUFtQixJ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QUFFLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUM7UUFDblksT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUM7S0FDbkQsQ0FBQztHQVNXLGNBQWMsQ0FPMUI7OzRGQVBZLGNBQWM7a0JBUjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLHVFQUF1RTtvQkFDdkUsTUFBTSxFQUFFLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUM7b0JBQ25ZLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBhdXRvLWdlbmVyYXRlZCBhbmd1bGFyIGRpcmVjdGl2ZSBwcm94aWVzICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUHJveHlDbXAsIHByb3h5T3V0cHV0cyB9IGZyb20gJy4vYW5ndWxhci1jb21wb25lbnQtbGliL3V0aWxzJztcblxuaW1wb3J0IHR5cGUgeyBDb21wb25lbnRzIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRBY2NvcmRpb24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWFjY29yZGlvbi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQWNjb3JkaW9uSXRlbSB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtYWNjb3JkaW9uLWl0ZW0uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZEFwcEJhciB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtYXBwLWJhci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQXJlYUNoYXJ0IH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1hcmVhLWNoYXJ0LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRBdXRvY29tcGxldGUgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWF1dG9jb21wbGV0ZS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQXZhdGFyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1hdmF0YXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZEJhZGdlIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1iYWRnZS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQmFyQ2hhcnQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJhci1jaGFydC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQm90dG9tU2hlZXQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJvdHRvbS1zaGVldC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQnJlYWRjcnVtYkl0ZW0gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJyZWFkY3J1bWItaXRlbS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQnJlYWRjcnVtYnMgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJyZWFkY3J1bWJzLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRCdXR0b24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJ1dHRvbi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQnV0dG9uR3JvdXAgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJ1dHRvbi1ncm91cC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQ2FyZCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtY2FyZC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQ2hlY2tib3ggfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWNoZWNrYm94LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRDaGlwIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1jaGlwLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRDb2xvclBpY2tlciB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtY29sb3ItcGlja2VyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWREYXRlUGlja2VyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1kYXRlLXBpY2tlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kRGlhbG9nIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1kaWFsb2cuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZERpdmlkZXIgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWRpdmlkZXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZEZhYiB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtZmFiLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRGYWJNZW51IH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1mYWItbWVudS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kRmFiTWVudUl0ZW0gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWZhYi1tZW51LWl0ZW0uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZEljb25CdXR0b24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWljb24tYnV0dG9uLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRMaW5lQ2hhcnQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWxpbmUtY2hhcnQuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZExpc3QgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWxpc3QuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZExpc3RJdGVtIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1saXN0LWl0ZW0uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZExvYWRpbmdJbmRpY2F0b3IgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWxvYWRpbmctaW5kaWNhdG9yLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRNZW51IH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1tZW51LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRNZW51SXRlbSB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtbWVudS1pdGVtLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRNZW51SXRlbUdyb3VwIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1tZW51LWl0ZW0tZ3JvdXAuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZE1ldGVyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1tZXRlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kTXVsdGlTZWxlY3QgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLW11bHRpLXNlbGVjdC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kTmF2aWdhdGlvbkJhciB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtbmF2aWdhdGlvbi1iYXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZE5hdmlnYXRpb25SYWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1uYXZpZ2F0aW9uLXJhaWwuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZE5hdmlnYXRpb25SYWlsVGFiIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1uYXZpZ2F0aW9uLXJhaWwtdGFiLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWROYXZpZ2F0aW9uVGFiIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1uYXZpZ2F0aW9uLXRhYi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kTnVtYmVyRmllbGQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLW51bWJlci1maWVsZC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kT3JnYW5pemF0aW9uQ2hhcnQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLW9yZ2FuaXphdGlvbi1jaGFydC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kT3RwRmllbGQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLW90cC1maWVsZC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kUGllQ2hhcnQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXBpZS1jaGFydC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kUHJvZ3Jlc3NJbmRpY2F0b3IgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXByb2dyZXNzLWluZGljYXRvci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kUmFkaW8gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXJhZGlvLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRSYXRpbmcgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXJhdGluZy5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kUmlwcGxlIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1yaXBwbGUuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFNlYXJjaCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtc2VhcmNoLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTZWdtZW50ZWRCdXR0b24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNlZ21lbnRlZC1idXR0b24uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFNlZ21lbnRlZEJ1dHRvblNldCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtc2VnbWVudGVkLWJ1dHRvbi1zZXQuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFNlbGVjdCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtc2VsZWN0LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTZWxlY3RPcHRpb24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNlbGVjdC1vcHRpb24uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFNpZGVTaGVldCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtc2lkZS1zaGVldC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kU2tlbGV0b24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNrZWxldG9uLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTbGlkZXIgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNsaWRlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kU25hY2tiYXIgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNuYWNrYmFyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTcGFya2xpbmUgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNwYXJrbGluZS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kU3BsaXRCdXR0b24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNwbGl0LWJ1dHRvbi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kU3RhdHVzRG90IH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1zdGF0dXMtZG90LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTdGVwIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1zdGVwLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTdGVwcGVyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1zdGVwcGVyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTdWJNZW51SXRlbSB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtc3ViLW1lbnUtaXRlbS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kU3dpdGNoIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1zd2l0Y2guanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRhYiB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtdGFiLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJQYW5lbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtdGFiLXBhbmVsLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJQYW5lbHMgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRhYi1wYW5lbHMuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRhYmxlIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kVGFibGVCb2R5IH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS1ib2R5LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJsZUNlbGwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRhYmxlLWNlbGwuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRhYmxlQ29udGFpbmVyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS1jb250YWluZXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRhYmxlRXhwYW5kVG9nZ2xlIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS1leHBhbmQtdG9nZ2xlLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJsZUZvb3QgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRhYmxlLWZvb3QuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRhYmxlSGVhZCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtdGFibGUtaGVhZC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kVGFibGVQYWdpbmF0aW9uIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS1wYWdpbmF0aW9uLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJsZVJvdyB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtdGFibGUtcm93LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJsZVNvcnRMYWJlbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtdGFibGUtc29ydC1sYWJlbC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kVGFibGVUb29sYmFyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS10b29sYmFyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJzIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJzLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUZXh0RmllbGQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRleHQtZmllbGQuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRpbWVQaWNrZXIgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRpbWUtcGlja2VyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUb29sYmFyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10b29sYmFyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUb29sdGlwIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10b29sdGlwLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUcmFuc2Zlckxpc3QgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRyYW5zZmVyLWxpc3QuanMnO1xuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEFjY29yZGlvbixcbiAgaW5wdXRzOiBbJ2JyaW5nVG9Gcm9udCcsICdkZWZhdWx0RXhwYW5kZWQnLCAnZGVuc2l0eScsICdlbGV2YXRpb24nLCAnZXhjbHVzaXZlJywgJ2Zsb2F0aW5nJywgJ2hlYWRpbmdMZXZlbCcsICdpbml0aWFsWCcsICdpbml0aWFsWScsICdrZWVwT25lRXhwYW5kZWQnLCAncmVnaW9uJywgJ3JlZ2lvblRocmVzaG9sZCcsICdyZW9yZGVyYWJsZScsICd0cmFuc2l0aW9uJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWFjY29yZGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYnJpbmdUb0Zyb250JywgJ2RlZmF1bHRFeHBhbmRlZCcsICdkZW5zaXR5JywgJ2VsZXZhdGlvbicsICdleGNsdXNpdmUnLCAnZmxvYXRpbmcnLCAnaGVhZGluZ0xldmVsJywgJ2luaXRpYWxYJywgJ2luaXRpYWxZJywgJ2tlZXBPbmVFeHBhbmRlZCcsICdyZWdpb24nLCAncmVnaW9uVGhyZXNob2xkJywgJ3Jlb3JkZXJhYmxlJywgJ3RyYW5zaXRpb24nLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kQWNjb3JkaW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRUb2dnbGUnLCAnbWRSZW9yZGVyJywgJ21kRHJhZ1N0YXJ0JywgJ21kRHJhZ01vdmUnLCAnbWREcmFnRW5kJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZEFjY29yZGlvbkRyYWdEZXRhaWwgYXMgSU1kQWNjb3JkaW9uTWRBY2NvcmRpb25EcmFnRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEFjY29yZGlvbiBleHRlbmRzIENvbXBvbmVudHMuTWRBY2NvcmRpb24ge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFuIGl0ZW0gZXhwYW5kcyBvciBjb2xsYXBzZXMuIERldGFpbCBjYXJyaWVzIHRoZVxuZnVsbCBzZXQgb2YgZXhwYW5kZWQgaW5kaWNlcy5cbiAgICovXG4gIG1kVG9nZ2xlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBleHBhbmRlZDogYm9vbGVhbjsgZXhwYW5kZWRJbmRpY2VzOiBudW1iZXJbXTsgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGl0ZW1zIGFyZSByZW9yZGVyZWQgdmlhIGRyYWctYW5kLWRyb3Agb3Iga2V5Ym9hcmRcbihBbHQrQXJyb3dVcCAvIEFsdCtBcnJvd0Rvd24pLiBgb3JkZXJgIGlzIHRoZSBuZXcgaW5kZXggc2VxdWVuY2VcbnJlbGF0aXZlIHRvIHRoZSBvcmlnaW5hbCBvcmRlciwgZS5nLiBtb3ZpbmcgdGhlIGl0ZW0gdGhhdCB3YXMgYXRcbmluZGV4IDAgdG8gaW5kZXggMiB5aWVsZHMgYG9yZGVyOiBbMSwgMiwgMF1gLlxuICAgKi9cbiAgbWRSZW9yZGVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBmcm9tOiBudW1iZXI7IHRvOiBudW1iZXI7IG9yZGVyOiBudW1iZXJbXTsgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCBvbmNlIGEgZmxvYXRpbmcgcGFuZWwgc3RhcnRzIGJlaW5nIGRyYWdnZWQuXG4gICAqL1xuICBtZERyYWdTdGFydDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFjY29yZGlvbk1kQWNjb3JkaW9uRHJhZ0RldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCBjb250aW51b3VzbHkgd2hpbGUgYSBmbG9hdGluZyBwYW5lbCBpcyBiZWluZyBkcmFnZ2VkLlxuICAgKi9cbiAgbWREcmFnTW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFjY29yZGlvbk1kQWNjb3JkaW9uRHJhZ0RldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgZmxvYXRpbmcgcGFuZWwgaXMgcmVsZWFzZWQuXG4gICAqL1xuICBtZERyYWdFbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBY2NvcmRpb25NZEFjY29yZGlvbkRyYWdEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQWNjb3JkaW9uSXRlbSxcbiAgaW5wdXRzOiBbJ2NvbGxhcHNpYmxlJywgJ2NvbnRlbnRNYXhIZWlnaHQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdleHBhbmRlZCcsICdoZWFkaW5nTGV2ZWwnLCAnaGVhZGxpbmUnLCAnaWNvbicsICdyZWdpb25Sb2xlJywgJ3N1cHBvcnRpbmdUZXh0J10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlJywgJ2ZvY3VzSGVhZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1hY2NvcmRpb24taXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sbGFwc2libGUnLCAnY29udGVudE1heEhlaWdodCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ2hlYWRpbmdMZXZlbCcsICdoZWFkbGluZScsICdpY29uJywgJ3JlZ2lvblJvbGUnLCAnc3VwcG9ydGluZ1RleHQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEFjY29yZGlvbkl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZEl0ZW1Ub2dnbGUnLCAnbWRJdGVtUmVxdWVzdEZvY3VzJywgJ21kSXRlbVJlcXVlc3RSZW9yZGVyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQWNjb3JkaW9uSXRlbSBleHRlbmRzIENvbXBvbmVudHMuTWRBY2NvcmRpb25JdGVtIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbmV2ZXIgdGhlIGl0ZW0gdG9nZ2xlcy4gVGhlIHBhcmVudCBgbWQtYWNjb3JkaW9uYCB1c2VzXG50aGlzIHRvIGNvb3JkaW5hdGUgZXhjbHVzaXZlIG1vZGUuXG4gICAqL1xuICBtZEl0ZW1Ub2dnbGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuOyBpbmRleDogbnVtYmVyIH0+PjtcbiAgLyoqXG4gICAqIEludGVybmFsIGV2ZW50IHRoZSBwYXJlbnQgbGlzdGVucyB0byBmb3IgYXJyb3cta2V5IHJvdmluZyBmb2N1cy5cbkJ1YmJsZXMgKyBjb21wb3NlZCBzbyB0aGUgcGFyZW50IHJlY2VpdmVzIGl0IHRocm91Z2ggdGhlIHNoYWRvdy5cbiAgICovXG4gIG1kSXRlbVJlcXVlc3RGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgZGlyZWN0aW9uOiAnbmV4dCcgfCAncHJldicgfCAnZmlyc3QnIHwgJ2xhc3QnOyBmcm9tOiBudW1iZXI7IH0+PjtcbiAgLyoqXG4gICAqIEludGVybmFsIGV2ZW50IHRoZSBwYXJlbnQgbGlzdGVucyB0byBmb3IgQWx0K0Fycm93IGtleWJvYXJkXG5yZW9yZGVyaW5nLiBCdWJibGVzICsgY29tcG9zZWQgc28gdGhlIHBhcmVudCByZWNlaXZlcyBpdFxudGhyb3VnaCB0aGUgc2hhZG93LlxuICAgKi9cbiAgbWRJdGVtUmVxdWVzdFJlb3JkZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJzsgZnJvbTogbnVtYmVyOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEFwcEJhcixcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnaGVhZGxpbmUnLCAnbGVhZGluZ0ljb24nLCAnbGVhZGluZ0ljb25MYWJlbCcsICdzY3JvbGxlZCcsICdzZWFyY2hBcmlhTGFiZWwnLCAnc2VhcmNoRGlzYWJsZWQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoVmFsdWUnLCAnc3VidGl0bGUnLCAndGl0bGVBbGlnbm1lbnQnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYXBwLWJhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdoZWFkbGluZScsICdsZWFkaW5nSWNvbicsICdsZWFkaW5nSWNvbkxhYmVsJywgJ3Njcm9sbGVkJywgJ3NlYXJjaEFyaWFMYWJlbCcsICdzZWFyY2hEaXNhYmxlZCcsICdzZWFyY2hQbGFjZWhvbGRlcicsICdzZWFyY2hWYWx1ZScsICdzdWJ0aXRsZScsICd0aXRsZUFsaWdubWVudCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRBcHBCYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZExlYWRpbmdDbGljaycsICdtZFNlYXJjaEFjdGl2YXRlJywgJ21kU2VhcmNoSW5wdXQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRBcHBCYXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kQXBwQmFyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcHJvcC1iYXNlZCBsZWFkaW5nIGljb24gYnV0dG9uIGlzIGFjdGl2YXRlZC5cbiAgICovXG4gIG1kTGVhZGluZ0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8TW91c2VFdmVudD4+O1xuICAvKipcbiAgICogU2VhcmNoIHZhcmlhbnQgb25seTogZW1pdHRlZCB3aGVuIHRoZSBpbmxpbmUgc2VhcmNoIGZpZWxkIGlzIHNlbGVjdGVkXG4oY2xpY2ssIGZvY3VzLCBFbnRlciwgb3IgU3BhY2UpLiBXaXJlIHRoaXMgdG8gYG1kLXNlYXJjaC5zaG93KClgIHRvIG9wZW5cbnRoZSBmdWxsLXNjcmVlbiBzZWFyY2ggdmlldyBwZXIgdGhlIE1EMyBzcGVjLlxuICAgKi9cbiAgbWRTZWFyY2hBY3RpdmF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBTZWFyY2ggdmFyaWFudCBvbmx5OiBlbWl0dGVkIG9uIGV2ZXJ5IGlubGluZSBzZWFyY2ggZmllbGQgaW5wdXQgY2hhbmdlLlxuICAgKi9cbiAgbWRTZWFyY2hJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEFyZWFDaGFydCxcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdhbmltYXRpb25EdXJhdGlvbicsICdheGlzVGlja3MnLCAnY29ubmVjdE51bGxzJywgJ2N1cnZlJywgJ2RlbnNpdHknLCAnZmlsbE9wYWNpdHknLCAnZ3JpZCcsICdoZWlnaHRQcm9wJywgJ2ludmVydGVkJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xlZ2VuZCcsICdsaW5lV2lkdGgnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21hcmtTaXplJywgJ25vQW5pbWF0aW9uJywgJ3NlcmllcycsICdzZXJpZXNMYWJlbHMnLCAnc2hvd0xhYmVscycsICdzaG93TGluZScsICdzaG93TWFya3MnLCAnc3RhY2snLCAnc3VidGl0bGUnLCAnc3VtbWFyeScsICd0YWJsZUxhYmVscycsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3hBeGlzJywgJ3lBeGlzJywgJ3pvb20nXSxcbiAgbWV0aG9kczogWydyZWZyZXNoVGhlbWUnLCAncmVzaXplJywgJ3JlcGxheScsICd0b0RhdGFVUkwnLCAnZ2V0SW5zdGFuY2UnLCAnc2V0Wm9vbScsICdyZXNldFpvb20nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWFyZWEtY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdhbmltYXRpb25EdXJhdGlvbicsICdheGlzVGlja3MnLCAnY29ubmVjdE51bGxzJywgJ2N1cnZlJywgJ2RlbnNpdHknLCAnZmlsbE9wYWNpdHknLCAnZ3JpZCcsICdoZWlnaHRQcm9wJywgJ2ludmVydGVkJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xlZ2VuZCcsICdsaW5lV2lkdGgnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21hcmtTaXplJywgJ25vQW5pbWF0aW9uJywgJ3NlcmllcycsICdzZXJpZXNMYWJlbHMnLCAnc2hvd0xhYmVscycsICdzaG93TGluZScsICdzaG93TWFya3MnLCAnc3RhY2snLCAnc3VidGl0bGUnLCAnc3VtbWFyeScsICd0YWJsZUxhYmVscycsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3hBeGlzJywgJ3lBeGlzJywgJ3pvb20nXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEFyZWFDaGFydCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kTWFya2VyQ2xpY2snLCAnbWRMaW5lQ2xpY2snLCAnbWRBcmVhQ2xpY2snLCAnbWRBeGlzQ2xpY2snLCAnbWRMZWdlbmRDbGljaycsICdtZEhvdmVyJywgJ21kUmVhZHknLCAnbWRab29tJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZENoYXJ0Q2xpY2tEZXRhaWwgYXMgSU1kQXJlYUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRTZXJpZXMgYXMgSU1kQXJlYUNoYXJ0TWRDaGFydFNlcmllcyB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0QXhpc0NsaWNrRGV0YWlsIGFzIElNZEFyZWFDaGFydE1kQ2hhcnRBeGlzQ2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgTWRDaGFydEhvdmVyRGV0YWlsIGFzIElNZEFyZWFDaGFydE1kQ2hhcnRIb3ZlckRldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRBcmVhQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRzLk1kQXJlYUNoYXJ0IHtcblxuICBtZE1hcmtlckNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQXJlYUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZEFyZWFDaGFydE1kQ2hhcnRTZXJpZXM+Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgc2VyaWVzJyBkcmF3biBsaW5lIGlzIGNsaWNrZWQgKmJldHdlZW4qIGl0cyBkYXRhIHBvaW50cyAoYVxuY2xpY2sgb24gYSBwb2ludCBlbWl0cyBgbWRNYXJrZXJDbGlja2AgaW5zdGVhZCkuXG4gICAqL1xuICBtZExpbmVDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFyZWFDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRBcmVhQ2hhcnRNZENoYXJ0U2VyaWVzPj4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHNlcmllcycgZmlsbGVkIGFyZWEgaXMgY2xpY2tlZCDigJQgdGhlIGJhbmQgYmV0d2VlbiBpdHMgbGluZVxuYW5kIGl0cyBiYXNlIChpdHMgb3duIGJhbmQgd2hlbiBzdGFja2VkKSwgZXhjbHVkaW5nIGl0cyBsaW5lIGFuZCBwb2ludHMuXG4gICAqL1xuICBtZEFyZWFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFyZWFDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRBcmVhQ2hhcnRNZENoYXJ0U2VyaWVzPj4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgcGxvdCBiYWNrZ3JvdW5kIGlzIGNsaWNrZWQgKGluc2lkZSB0aGUgcGxvdCwgYnV0IG5vdCBvbiBhXG5tYXJrLCBsaW5lIG9yIGFyZWEpOiB0aGUgbmVhcmVzdCB4IHBsdXMgZXZlcnkgdmlzaWJsZSBzZXJpZXMnIHZhbHVlIHRoZXJlLlxuICAgKi9cbiAgbWRBeGlzQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBcmVhQ2hhcnRNZENoYXJ0QXhpc0NsaWNrRGV0YWlsPj47XG5cbiAgbWRMZWdlbmRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc2VyaWVzSW5kZXg6IG51bWJlcjsgc2VyaWVzSWQ/OiBzdHJpbmc7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcblxuICBtZEhvdmVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQXJlYUNoYXJ0TWRDaGFydEhvdmVyRGV0YWlsPj47XG5cbiAgbWRSZWFkeTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHpvb20gd2luZG93IGNoYW5nZXMgKGRyYWcsIHNsaWRlciBvciBgc2V0Wm9vbWAvYHJlc2V0Wm9vbWApLlxuICAgKi9cbiAgbWRab29tOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzdGFydEluZGV4OiBudW1iZXI7IGVuZEluZGV4OiBudW1iZXI7IHJlc2V0OiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQXV0b2NvbXBsZXRlLFxuICBpbnB1dHM6IFsnY2hpcFBvc2l0aW9uJywgJ2NsZWFySWNvbicsICdjbGVhck9uQmx1cicsICdjbGVhcmFibGUnLCAnZGVuc2l0eScsICdkaXNhYmxlQ2xvc2VPblNlbGVjdCcsICdkaXNhYmxlZCcsICdkcm9wZG93bkljb24nLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyZXInLCAnZnJlZVNvbG8nLCAnaW5wdXRWYWx1ZScsICdsYWJlbCcsICdsaW1pdFJlc3VsdHMnLCAnbG9hZGluZycsICdsb2FkaW5nVGV4dCcsICdtYXRjaFRyaWdnZXJXaWR0aCcsICdtYXhIZWlnaHQnLCAnbWF4U2VsZWN0ZWQnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdub09wdGlvbnNUZXh0JywgJ25vUmVzdWx0c1RleHQnLCAnb3BlbicsICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3Jvd0hlaWdodCcsICdzb2Z0RGlzYWJsZWQnLCAnc3RhdHVzVGVtcGxhdGUnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIG1ldGhvZHM6IFsnZm9jdXNJbnB1dCcsICdzaG93TWVudScsICdjbG9zZU1lbnUnLCAnbG9hZE9wdGlvbnMnLCAnZ2V0TGFiZWxzJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWF1dG9jb21wbGV0ZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2hpcFBvc2l0aW9uJywgJ2NsZWFySWNvbicsICdjbGVhck9uQmx1cicsICdjbGVhcmFibGUnLCAnZGVuc2l0eScsICdkaXNhYmxlQ2xvc2VPblNlbGVjdCcsICdkaXNhYmxlZCcsICdkcm9wZG93bkljb24nLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyZXInLCAnZnJlZVNvbG8nLCAnaW5wdXRWYWx1ZScsICdsYWJlbCcsICdsaW1pdFJlc3VsdHMnLCAnbG9hZGluZycsICdsb2FkaW5nVGV4dCcsICdtYXRjaFRyaWdnZXJXaWR0aCcsICdtYXhIZWlnaHQnLCAnbWF4U2VsZWN0ZWQnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdub09wdGlvbnNUZXh0JywgJ25vUmVzdWx0c1RleHQnLCAnb3BlbicsICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3Jvd0hlaWdodCcsICdzb2Z0RGlzYWJsZWQnLCAnc3RhdHVzVGVtcGxhdGUnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRBdXRvY29tcGxldGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENoYW5nZScsICdtZElucHV0JywgJ21kT3BlbicsICdtZENsb3NlJywgJ21kQ2xlYXInLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEF1dG9jb21wbGV0ZSBleHRlbmRzIENvbXBvbmVudHMuTWRBdXRvY29tcGxldGUge1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIGNvbW1pdHRlZCBzZWxlY3Rpb24gY2hhbmdlcy5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgc3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW5ldmVyIHRoZSBsaXZlIGlucHV0IHN0cmluZyBjaGFuZ2VzLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBvcGVucy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIG1lbnUgY2xvc2VzLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgY2xlYXJzIHRoZSB2YWx1ZS5cbiAgICovXG4gIG1kQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoaXMgY29udHJvbCdzIHZhbGlkaXR5IENIQU5HRVMg4oCUIG5ldmVyIG9uIGV2ZXJ5IGtleXN0cm9rZSwgYW5kXG5uZXZlciBmb3IgYSByZS1wdWJsaXNoIHRoYXQgbGFuZHMgb24gdGhlIHNhbWUgc3RhdGUuXG5cbmBjb21wb3NlZDogZmFsc2VgIGlzIGRlbGliZXJhdGUuIENvbXBvc2l0ZXMgbGlrZSBtZC1zZWxlY3QgZW1iZWQgYW5cbm1kLXRleHQtZmllbGQsIGFuZCBhIGNvbXBvc2VkIGV2ZW50IGVzY2FwZXMgdGhhdCBpbm5lciBzaGFkb3cgcm9vdCwgc28gYVxubGlzdGVuZXIgb24gbWQtc2VsZWN0IHdvdWxkIHJlY2VpdmUgdGhlIGlubmVyIGZpZWxkJ3MgZXZlbnQgYXMgd2VsbCBhcyB0aGVcbmhvc3QncyDigJQgdHdvIGV2ZW50cywgZGlmZmVyZW50IHBheWxvYWRzLCBmb3Igb25lIGxvZ2ljYWwgY29udHJvbC4gS2VlcGluZ1xuaXQgdW5jb21wb3NlZCBtZWFucyBlYWNoIGNvbXBvbmVudCByZXBvcnRzIG9ubHkgZm9yIGl0c2VsZiwgd2hpbGVcbmBidWJibGVzOiB0cnVlYCBzdGlsbCBsZXRzIGEgPGZvcm0+IG9yIGFwcCByb290IGhlYXIgZXZlcnkgY29udHJvbC5cbiAgICovXG4gIG1kVmFsaWRpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbGlkOiBib29sZWFuOyB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nOyBmbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQXZhdGFyLFxuICBpbnB1dHM6IFsnYWx0JywgJ2NvbG9yRnJvbU5hbWUnLCAnY3Jvc3NvcmlnaW4nLCAnZGVuc2l0eScsICdpbml0aWFscycsICdsYWJlbCcsICdsb2FkaW5nJywgJ25hbWUnLCAnc2hhcGUnLCAnc2l6ZScsICdzcmMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWF2YXRhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWx0JywgJ2NvbG9yRnJvbU5hbWUnLCAnY3Jvc3NvcmlnaW4nLCAnZGVuc2l0eScsICdpbml0aWFscycsICdsYWJlbCcsICdsb2FkaW5nJywgJ25hbWUnLCAnc2hhcGUnLCAnc2l6ZScsICdzcmMnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEF2YXRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kTG9hZCcsICdtZEVycm9yJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQXZhdGFyIGV4dGVuZHMgQ29tcG9uZW50cy5NZEF2YXRhciB7XG4gIC8qKlxuICAgKiBJbWFnZSBzdWNjZXNzZnVsbHkgbG9hZGVkLlxuICAgKi9cbiAgbWRMb2FkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzcmM6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBJbWFnZSBmYWlsZWQgdG8gbG9hZCDigJQgY29tcG9uZW50IGZlbGwgYmFjayB0byBpbml0aWFscy9pY29uLlxuICAgKi9cbiAgbWRFcnJvcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc3JjOiBzdHJpbmcgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRCYWRnZSxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnaWNvbicsICdtYXgnLCAnc2hhcGUnLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYmFkZ2UnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnaWNvbicsICdtYXgnLCAnc2hhcGUnLCAndmFsdWUnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kQmFkZ2Uge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEJhZGdlIGV4dGVuZHMgQ29tcG9uZW50cy5NZEJhZGdlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEJhckNoYXJ0LFxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2F4aXNUaWNrcycsICdiYXJHYXAnLCAnYmFyV2lkdGgnLCAnY2F0ZWdvcnlHYXAnLCAnY2hldnJvbicsICdjbGlja2FibGUnLCAnY29ybmVyUmFkaXVzJywgJ2RlbnNpdHknLCAnaGVpZ2h0UHJvcCcsICdsYWJlbCcsICdsYWJlbFBsb3QnLCAnbGFiZWxQb2ludCcsICdsYWJlbFpvb21FbmQnLCAnbGFiZWxab29tU3RhcnQnLCAnbGF5b3V0JywgJ2xlZ2VuZCcsICdsb2FkaW5nJywgJ2xvYWRpbmdMYWJlbCcsICdsb2NhbGUnLCAnbm9BbmltYXRpb24nLCAncG9sYXInLCAncG9sYXJIb2xlJywgJ3BvbGFyU3dlZXAnLCAnc2VyaWVzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd1RvdGFscycsICdzdGFjaycsICdzdWJ0aXRsZScsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3hBeGlzJywgJ3lBeGlzJywgJ3lBeGlzMicsICd6b29tJ10sXG4gIG1ldGhvZHM6IFsncmVmcmVzaFRoZW1lJywgJ3Jlc2l6ZScsICdyZXBsYXknLCAnZHJpbGwnLCAndG9EYXRhVVJMJywgJ2dldEluc3RhbmNlJywgJ3NldFpvb20nLCAncmVzZXRab29tJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1iYXItY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdhbmltYXRpb25EdXJhdGlvbicsICdheGlzVGlja3MnLCAnYmFyR2FwJywgJ2JhcldpZHRoJywgJ2NhdGVnb3J5R2FwJywgJ2NoZXZyb24nLCAnY2xpY2thYmxlJywgJ2Nvcm5lclJhZGl1cycsICdkZW5zaXR5JywgJ2hlaWdodFByb3AnLCAnbGFiZWwnLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xheW91dCcsICdsZWdlbmQnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ25vQW5pbWF0aW9uJywgJ3BvbGFyJywgJ3BvbGFySG9sZScsICdwb2xhclN3ZWVwJywgJ3NlcmllcycsICdzaG93TGFiZWxzJywgJ3Nob3dUb3RhbHMnLCAnc3RhY2snLCAnc3VidGl0bGUnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlcicsICd4QXhpcycsICd5QXhpcycsICd5QXhpczInLCAnem9vbSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kQmFyQ2hhcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZEJhckNsaWNrJywgJ21kTGVnZW5kQ2xpY2snLCAnbWRIb3ZlcicsICdtZFJlYWR5JywgJ21kWm9vbSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRDaGFydENsaWNrRGV0YWlsIGFzIElNZEJhckNoYXJ0TWRDaGFydENsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRTZXJpZXMgYXMgSU1kQmFyQ2hhcnRNZENoYXJ0U2VyaWVzIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRIb3ZlckRldGFpbCBhcyBJTWRCYXJDaGFydE1kQ2hhcnRIb3ZlckRldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCYXJDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRCYXJDaGFydCB7XG5cbiAgbWRCYXJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEJhckNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZEJhckNoYXJ0TWRDaGFydFNlcmllcz4+PjtcblxuICBtZExlZ2VuZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzZXJpZXNJbmRleDogbnVtYmVyOyBzZXJpZXNJZD86IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW4gfT4+O1xuXG4gIG1kSG92ZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCYXJDaGFydE1kQ2hhcnRIb3ZlckRldGFpbD4+O1xuXG4gIG1kUmVhZHk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB6b29tIHdpbmRvdyBjaGFuZ2VzIChkcmFnLCBzbGlkZXIsIG9yIGBzZXRab29tYC9gcmVzZXRab29tYCkuXG4gICAqL1xuICBtZFpvb206IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlcjsgcmVzZXQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRCb3R0b21TaGVldCxcbiAgaW5wdXRzOiBbJ2JvdHRvbURpdmlkZXInLCAnY2xvc2VhYmxlJywgJ2NvbnRlbnRBbGlnbicsICdkZW5zaXR5JywgJ2hlYWRsaW5lJywgJ2hlYWRsaW5lQWxpZ24nLCAnb3BlbicsICdzY3JpbURpc21pc3NpYmxlJywgJ3Njcm9sbFNoYWRvdycsICdzaGVldEFyaWFMYWJlbCcsICdzaG93RHJhZ0hhbmRsZScsICd0b3BEaXZpZGVyJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1ib3R0b20tc2hlZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvdHRvbURpdmlkZXInLCAnY2xvc2VhYmxlJywgJ2NvbnRlbnRBbGlnbicsICdkZW5zaXR5JywgJ2hlYWRsaW5lJywgJ2hlYWRsaW5lQWxpZ24nLCAnb3BlbicsICdzY3JpbURpc21pc3NpYmxlJywgJ3Njcm9sbFNoYWRvdycsICdzaGVldEFyaWFMYWJlbCcsICdzaG93RHJhZ0hhbmRsZScsICd0b3BEaXZpZGVyJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEJvdHRvbVNoZWV0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRDYW5jZWwnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCb3R0b21TaGVldCBleHRlbmRzIENvbXBvbmVudHMuTWRCb3R0b21TaGVldCB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzaGVldCBvcGVuc1xuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2hlZXQgY2xvc2VzXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBkaXNtaXNzZWQgdmlhIHNjcmltIGNsaWNrLCBFc2NhcGUsIGRyYWcsIG9yIGNsb3NlIGJ1dHRvblxuICAgKi9cbiAgbWRDYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEJyZWFkY3J1bWJJdGVtLFxuICBpbnB1dHM6IFsnY29sbGFwc2VkJywgJ2N1cnJlbnQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdocmVmJywgJ2ljb24nLCAnaXRlbUluZGV4JywgJ2l0ZW1Ub3RhbCcsICdyZWwnLCAndGFyZ2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1icmVhZGNydW1iLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlZCcsICdjdXJyZW50JywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ2l0ZW1JbmRleCcsICdpdGVtVG90YWwnLCAncmVsJywgJ3RhcmdldCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kQnJlYWRjcnVtYkl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNlbGVjdCddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRCcmVhZGNydW1iU2VsZWN0RGV0YWlsIGFzIElNZEJyZWFkY3J1bWJJdGVtTWRCcmVhZGNydW1iU2VsZWN0RGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEJyZWFkY3J1bWJJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZEJyZWFkY3J1bWJJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgYWN0aXZhdGVzIGEgbmF2aWdhYmxlIGNydW1iIOKAlCBpLmUuIHdoZW4gYW4gaXRlbSB3aXRoXG5hIG5vbi1lbXB0eSBgaHJlZmAgKGFuZCBub3QgbWFya2VkIGBjdXJyZW50YCAvIGBkaXNhYmxlZGApIGlzIGNsaWNrZWQgb3JcbmFjdGl2YXRlZCB3aXRoIGBFbnRlcmAgd2hpbGUgZm9jdXNlZC4gVGhlIGV2ZW50IGlzICoqY2FuY2VsYWJsZSoqOlxuY2FsbCBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgZnJvbSB0aGUgbGlzdGVuZXIgdG8gc3RvcCB0aGUgYnJvd3NlcidzXG5kZWZhdWx0IG5hdmlnYXRpb24uIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGhvb2sgZm9yIFNQQSByb3V0aW5nIOKAlCBsZXRcbnRoZSBicmVhZGNydW1iIHJlbmRlciBhIHJlYWwgYDxhPmAgKHNvIHJpZ2h0LWNsaWNrIC8gbWlkZGxlLWNsaWNrIC9cblwiT3BlbiBpbiBuZXcgdGFiXCIgc3RpbGwgd29yayksIHRoZW4gaW50ZXJjZXB0IGBtZFNlbGVjdGAgdG8gcHVzaCB0aGVcbnJvdXRlIHRocm91Z2ggeW91ciBjbGllbnQtc2lkZSByb3V0ZXIgaW5zdGVhZCBvZiBhIGZ1bGwgcGFnZSByZWxvYWQuXG5cblRoZSBldmVudCBidWJibGVzLCBzbyBjb25zdW1lcnMgY2FuIGF0dGFjaCBhIHNpbmdsZSBsaXN0ZW5lciBvbiB0aGVcbnBhcmVudCBgPG1kLWJyZWFkY3J1bWJzPmAgZm9yIGRlbGVnYXRpb24uIFRoZSBldmVudCBpcyBjb21wb3NlZCwgc29cbmxpc3RlbmVycyBvdXRzaWRlIHRoZSBzaGFkb3cgdHJlZSAodGhlIHR5cGljYWwgY2FzZSkgcmVjZWl2ZSBpdC5cblxuYGBgdHNcbmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21kLWJyZWFkY3J1bWJzJykhXG4gIC5hZGRFdmVudExpc3RlbmVyKCdtZFNlbGVjdCcsIChlKSA9PiB7XG4gICAgY29uc3QgeyBocmVmLCBsYWJlbCwgaXRlbUluZGV4IH0gPSAoZSBhcyBDdXN0b21FdmVudCkuZGV0YWlsO1xuICAgIGUucHJldmVudERlZmF1bHQoKTsgICAgICAgICAgICAgIC8vIHN0b3AgdGhlIDxhPiBmcm9tIG5hdmlnYXRpbmdcbiAgICBteVJvdXRlci5wdXNoKGhyZWYpOyAgICAgICAgICAgICAvLyBTUEEgbmF2aWdhdGlvblxuICB9KTtcbmBgYFxuICAgKi9cbiAgbWRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCcmVhZGNydW1iSXRlbU1kQnJlYWRjcnVtYlNlbGVjdERldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRCcmVhZGNydW1icyxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZXhwYW5kTGFiZWwnLCAnaXRlbXNBZnRlckNvbGxhcHNlJywgJ2l0ZW1zQmVmb3JlQ29sbGFwc2UnLCAnbGFiZWwnLCAnbWF4SXRlbXMnLCAnc2VwYXJhdG9yJ10sXG4gIG1ldGhvZHM6IFsnZXhwYW5kJywgJ2NvbGxhcHNlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1icmVhZGNydW1icycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdleHBhbmRMYWJlbCcsICdpdGVtc0FmdGVyQ29sbGFwc2UnLCAnaXRlbXNCZWZvcmVDb2xsYXBzZScsICdsYWJlbCcsICdtYXhJdGVtcycsICdzZXBhcmF0b3InXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEJyZWFkY3J1bWJzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRFeHBhbmQnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQnJlYWRjcnVtYnNFeHBhbmREZXRhaWwgYXMgSU1kQnJlYWRjcnVtYnNNZEJyZWFkY3J1bWJzRXhwYW5kRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEJyZWFkY3J1bWJzIGV4dGVuZHMgQ29tcG9uZW50cy5NZEJyZWFkY3J1bWJzIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgcmV2ZWFscyB0aGUgZnVsbCBicmVhZGNydW1iIHRyYWlsIGJ5IGFjdGl2YXRpbmdcbnRoZSBvdmVyZmxvdyAoXCLigKZcIikgdG9nZ2xlLCBvciB3aGVuIGNvbnN1bWVycyBwcm9ncmFtbWF0aWNhbGx5IGNhbGxcbmBleHBhbmQoKWAgLyBgY29sbGFwc2UoKWAuIE5vdCBjYW5jZWxhYmxlIOKAlCB0aGUgdmlzaWJpbGl0eSBjaGFuZ2VcbmhhcyBhbHJlYWR5IGhhcHBlbmVkLiBVc2UgaXQgZm9yIGFuYWx5dGljcyBvciB0byByZWFjdCB0byBhIHVzZXJcbndobyB3YW50cyB0byBzZWUgdGhlIGZ1bGwgcGF0aC5cblxuQnViYmxlcyArIGNvbXBvc2VkLCBzbyBjb25zdW1lcnMgb3V0c2lkZSB0aGUgc2hhZG93IHRyZWUgKHRoZSB0eXBpY2FsXG5jYXNlKSByZWNlaXZlIGl0LlxuICAgKi9cbiAgbWRFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCcmVhZGNydW1ic01kQnJlYWRjcnVtYnNFeHBhbmREZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQnV0dG9uLFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAnaHJlZicsICdpY29uJywgJ2xvYWRpbmcnLCAnbWlycm9ySWNvbicsICdyaXBwbGUnLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGVkJywgJ3NoYXBlJywgJ3NoYXBlTW9ycGgnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcHJlc3NFeHBhbmRJY29uRmxpcCcsICd0YXJnZXQnLCAndG9nZ2xlJywgJ3RyYWlsaW5nSWNvbicsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAnaHJlZicsICdpY29uJywgJ2xvYWRpbmcnLCAnbWlycm9ySWNvbicsICdyaXBwbGUnLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGVkJywgJ3NoYXBlJywgJ3NoYXBlTW9ycGgnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcHJlc3NFeHBhbmRJY29uRmxpcCcsICd0YXJnZXQnLCAndG9nZ2xlJywgJ3RyYWlsaW5nSWNvbicsICd0eXBlJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2xpY2snLCAnbWRDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQnV0dG9uQ2xpY2tEZXRhaWwgYXMgSU1kQnV0dG9uTWRCdXR0b25DbGlja0RldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZEJ1dHRvbkNoYW5nZURldGFpbCBhcyBJTWRCdXR0b25NZEJ1dHRvbkNoYW5nZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kQnV0dG9uIHtcbiAgLyoqXG4gICAqIEZpcmVzIGV2ZXJ5IHRpbWUgdGhlIHVzZXIgYWN0aXZhdGVzIHRoZSBidXR0b24gKG1vdXNlIGNsaWNrLCB0b3VjaCxcbm9yIGBFbnRlcmAvYFNwYWNlYCB3aGlsZSBmb2N1c2VkKS4gVGhlIGV2ZW50IGlzICoqY2FuY2VsYWJsZSoqIGFuZFxudGhlIGRldGFpbCBwYXlsb2FkIGRlc2NyaWJlcyB3aGF0ICp3b3VsZCogaGFwcGVuOiB0aGUgcG9zdC1jbGlja1xudG9nZ2xlIHN0YXRlLCB0aGUgbmF2aWdhdGlvbiBgaHJlZmAsIGFuZCBzbyBvbi5cblxuQ2FsbGluZyBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgZnJvbSBhIGxpc3RlbmVyIHN1cHByZXNzZXMgdGhlXG5kZWZhdWx0IHNpZGUgZWZmZWN0cyAodG9nZ2xlIGZsaXAgKyBgaHJlZmAgbmF2aWdhdGlvbikgYnV0IGxldHNcbnRoZSB1bmRlcmx5aW5nIERPTSBjbGljayBidWJibGUuIFRoaXMgaXMgdGhlIGhvb2sgdG8gdXNlIGZvciBTUEFcbnJvdXRpbmcsIFwiYXJlIHlvdSBzdXJlP1wiIHByb21wdHMsIGFzeW5jIGNvbmZpcm1hdGlvbiwgZXRjLlxuXG5UaGUgZXZlbnQgYnViYmxlcyBhbmQgaXMgY29tcG9zZWQsIHNvIGxpc3RlbmVycyBvdXRzaWRlIHRoZVxuc2hhZG93IHRyZWUgKHRoZSB0eXBpY2FsIGNhc2UpIHJlY2VpdmUgaXQuXG5cbmBgYHRzXG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZC1idXR0b24nKSEuYWRkRXZlbnRMaXN0ZW5lcignbWRDbGljaycsIChlKSA9PiB7XG4gIGNvbnN0IHsgaHJlZiwgc2VsZWN0ZWQgfSA9IChlIGFzIEN1c3RvbUV2ZW50KS5kZXRhaWw7XG4gIGlmICghY29uZmlybSgnQ29udGludWU/JykpIGUucHJldmVudERlZmF1bHQoKTtcbn0pO1xuYGBgXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQnV0dG9uTWRCdXR0b25DbGlja0RldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0b2dnbGUgbW9kZSBmbGlwcyB0aGUgYHNlbGVjdGVkYCBzdGF0ZSBpbiByZXNwb25zZSB0byBhXG51c2VyIGFjdGl2YXRpb24uIE5vdCBjYW5jZWxhYmxlIOKAlCB0aGUgc3RhdGUgY2hhbmdlIGhhcyBhbHJlYWR5XG5oYXBwZW5lZC4gUGFpciB3aXRoIGBtZENsaWNrYCAoY2FuY2VsYWJsZSkgd2hlbiB5b3UgbmVlZCBhIHZldG8uXG5cbkJ1YmJsZXMgYW5kIGlzIGNvbXBvc2VkLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCdXR0b25NZEJ1dHRvbkNoYW5nZURldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRCdXR0b25Hcm91cCxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZnVsbFdpZHRoJywgJ3JlcXVpcmVkJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2hhcGUnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1idXR0b24tZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZnVsbFdpZHRoJywgJ3JlcXVpcmVkJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2hhcGUnLCAnc2l6ZScsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRCdXR0b25Hcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU2VsZWN0aW9uQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZEJ1dHRvbkdyb3VwQ2hhbmdlRGV0YWlsIGFzIElNZEJ1dHRvbkdyb3VwTWRCdXR0b25Hcm91cENoYW5nZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCdXR0b25Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuTWRCdXR0b25Hcm91cCB7XG4gIC8qKlxuICAgKiBGaXJlcyBldmVyeSB0aW1lIGEgdXNlciBhY3RpdmF0aW9uIHRvZ2dsZXMgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZlxuYSBjaGlsZCBidXR0b24uIFRoZSBkZXRhaWwgb2JqZWN0IGRlc2NyaWJlcyBib3RoIHRoZSBuZXcgc2VsZWN0aW9uXG5zbmFwc2hvdCAoYHZhbHVlc2ApIGFuZCB0aGUgZGlmZiBmcm9tIHRoZSBwcmV2aW91cyBzZWxlY3Rpb25cbihgYWRkZWRgLCBgcmVtb3ZlZGApLCBwbHVzIHRoZSB1bmRlcmx5aW5nIGBvcmlnaW5hbEV2ZW50YC5cblxuRGlzdGluY3QgZnJvbSBlYWNoIGNoaWxkIGJ1dHRvbidzIG93biBgbWRDaGFuZ2VgICh3aGljaCBmaXJlcyBwZXJcbmluZGl2aWR1YWwgYnV0dG9uIHRvZ2dsZSk7IHRoZSBncm91cCdzIGBtZFNlbGVjdGlvbkNoYW5nZWAgZmlyZXNcbm9uY2UgcGVyIHVzZXIgYWN0aXZhdGlvbiBhbmQgcmVwb3J0cyB0aGUgKmdyb3VwLWxldmVsKiBzdGF0ZS5cblxuQnViYmxlcyBhbmQgaXMgY29tcG9zZWQgc28gbGlzdGVuZXJzIG91dHNpZGUgdGhlIHNoYWRvdyB0cmVlXG5yZWNlaXZlIGl0LiBAZXhhbXBsZSBgYGB0c1xuZ3JvdXAuYWRkRXZlbnRMaXN0ZW5lcignbWRTZWxlY3Rpb25DaGFuZ2UnLCAoZTogQ3VzdG9tRXZlbnQ8TWRCdXR0b25Hcm91cENoYW5nZURldGFpbD4pID0+IHtcbiAgY29uc29sZS5sb2coJ25vdyBzZWxlY3RlZDonLCBlLmRldGFpbC52YWx1ZXMpO1xuICBjb25zb2xlLmxvZygnanVzdCBhZGRlZDonLCBlLmRldGFpbC5hZGRlZCk7XG4gIGNvbnNvbGUubG9nKCdqdXN0IHJlbW92ZWQ6JywgZS5kZXRhaWwucmVtb3ZlZCk7XG59KTtcbmBgYFxuICAgKi9cbiAgbWRTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCdXR0b25Hcm91cE1kQnV0dG9uR3JvdXBDaGFuZ2VEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQ2FyZCxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZHJhZ0VuYWJsZWQnLCAnZnVsbEhlaWdodCcsICdmdWxsV2lkdGgnLCAnaW50ZXJhY3RpdmUnLCAncmlwcGxlJywgJ3NvZnREaXNhYmxlZCcsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1jYXJkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2RyYWdFbmFibGVkJywgJ2Z1bGxIZWlnaHQnLCAnZnVsbFdpZHRoJywgJ2ludGVyYWN0aXZlJywgJ3JpcHBsZScsICdzb2Z0RGlzYWJsZWQnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kQ2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2xpY2snLCAnbWREcmFnU3RhcnQnLCAnbWREcmFnTW92ZScsICdtZERyYWdFbmQnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQ2FyZERyYWdEZXRhaWwgYXMgSU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ2FyZCBleHRlbmRzIENvbXBvbmVudHMuTWRDYXJkIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYW4gaW50ZXJhY3RpdmUgY2FyZCBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmRcbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxNb3VzZUV2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0cyBvbmNlIHdoZW4gYSBkcmFnZ2FibGUgY2FyZCBzdGFydHMgYmVpbmcgZHJhZ2dlZCAoYWZ0ZXIgY3Jvc3NpbmcgdGhlIG1vdmVtZW50IHRocmVzaG9sZClcbiAgICovXG4gIG1kRHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXRzIGNvbnRpbnVvdXNseSBhcyBhIGRyYWdnZWQgY2FyZCBtb3ZlcyDigJQgdXNlIGZvciBkcm9wLXpvbmUgZGV0ZWN0aW9uIG9yIHBvc2l0aW9uIHRyYWNraW5nXG4gICAqL1xuICBtZERyYWdNb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBkcmFnZ2FibGUgY2FyZCBpcyByZWxlYXNlZCBhZnRlciBkcmFnZ2luZ1xuICAgKi9cbiAgbWREcmFnRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQ2hlY2tib3gsXG4gIGlucHV0czogWydjaGVja2VkJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2luZGV0ZXJtaW5hdGUnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbiAgbWV0aG9kczogWydnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1jaGVja2JveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdpbmRldGVybWluYXRlJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc29mdERpc2FibGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRDaGVja2JveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRDaGVja2JveCBleHRlbmRzIENvbXBvbmVudHMuTWRDaGVja2JveCB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGNoZWNrZWQgb3IgaW5kZXRlcm1pbmF0ZSBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY2hlY2tlZDogYm9vbGVhbjsgaW5kZXRlcm1pbmF0ZTogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoaXMgY29udHJvbCdzIHZhbGlkaXR5IENIQU5HRVMg4oCUIG5ldmVyIG9uIGV2ZXJ5IGtleXN0cm9rZSwgYW5kXG5uZXZlciBmb3IgYSByZS1wdWJsaXNoIHRoYXQgbGFuZHMgb24gdGhlIHNhbWUgc3RhdGUuXG5cbmBjb21wb3NlZDogZmFsc2VgIGlzIGRlbGliZXJhdGUuIENvbXBvc2l0ZXMgbGlrZSBtZC1zZWxlY3QgZW1iZWQgYW5cbm1kLXRleHQtZmllbGQsIGFuZCBhIGNvbXBvc2VkIGV2ZW50IGVzY2FwZXMgdGhhdCBpbm5lciBzaGFkb3cgcm9vdCwgc28gYVxubGlzdGVuZXIgb24gbWQtc2VsZWN0IHdvdWxkIHJlY2VpdmUgdGhlIGlubmVyIGZpZWxkJ3MgZXZlbnQgYXMgd2VsbCBhcyB0aGVcbmhvc3QncyDigJQgdHdvIGV2ZW50cywgZGlmZmVyZW50IHBheWxvYWRzLCBmb3Igb25lIGxvZ2ljYWwgY29udHJvbC4gS2VlcGluZ1xuaXQgdW5jb21wb3NlZCBtZWFucyBlYWNoIGNvbXBvbmVudCByZXBvcnRzIG9ubHkgZm9yIGl0c2VsZiwgd2hpbGVcbmBidWJibGVzOiB0cnVlYCBzdGlsbCBsZXRzIGEgPGZvcm0+IG9yIGFwcCByb290IGhlYXIgZXZlcnkgY29udHJvbC5cbiAgICovXG4gIG1kVmFsaWRpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbGlkOiBib29sZWFuOyB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nOyBmbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQ2hpcCxcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnY29sb3InLCAnY29udGVudEFsaWduJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZWxldmF0ZWQnLCAnaWNvbicsICdsYWJlbCcsICdyZW1vdmFibGUnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICdzb2Z0RGlzYWJsZWQnLCAndHJhaWxpbmdJY29uJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWNoaXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnY29sb3InLCAnY29udGVudEFsaWduJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZWxldmF0ZWQnLCAnaWNvbicsICdsYWJlbCcsICdyZW1vdmFibGUnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICdzb2Z0RGlzYWJsZWQnLCAndHJhaWxpbmdJY29uJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZENoaXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJywgJ21kU2VsZWN0JywgJ21kUmVtb3ZlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ2hpcCBleHRlbmRzIENvbXBvbmVudHMuTWRDaGlwIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNoaXAgaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2VsZWN0ZWQgc3RhdGUgY2hhbmdlcyAoZmlsdGVyL2lucHV0KVxuICAgKi9cbiAgbWRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHRyYWlsaW5nIHJlbW92ZSAoXCLinJVcIikgYnV0dG9uIGlzIGFjdGl2YXRlZCBvbiBhIHJlbW92YWJsZVxuY2hpcCAoYnkgY2xpY2ssIEVudGVyLCBTcGFjZSwgRGVsZXRlLCBvciBCYWNrc3BhY2UpLlxuXG5UaGUgZXZlbnQgaXMgKipjYW5jZWxhYmxlKio6IGJ5IGRlZmF1bHQsIGFmdGVyIGBtZFJlbW92ZWAgaXMgZGlzcGF0Y2hlZFxudGhlIGNoaXAgcmVtb3ZlcyBpdHNlbGYgZnJvbSB0aGUgRE9NLiBDYWxsIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCBpbiBhXG5oYW5kbGVyIHRvIGtlZXAgdGhlIGNoaXAgbW91bnRlZCAoZS5nLiB3aGVuIHlvdXIgc3RhdGUgbGF5ZXIgb3ducyB0aGVcbmxpc3QgYW5kIHdpbGwgcmUtcmVuZGVyIHdpdGggdGhlIGNoaXAgZ29uZSkuXG4gICAqL1xuICBtZFJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQ29sb3JQaWNrZXIsXG4gIGlucHV0czogWydhbHBoYScsICdhcmlhTGFiZWxQcm9wJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzbWlzc09uT3V0c2lkZUNsaWNrJywgJ2Zvcm1hdCcsICdsb2NhbGUnLCAnb3BlbicsICdwcmVzZXRzJywgJ3Nob3dIZXgnLCAnc2hvd0lucHV0cycsICd2YWx1ZScsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtY29sb3ItcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHBoYScsICdhcmlhTGFiZWxQcm9wJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzbWlzc09uT3V0c2lkZUNsaWNrJywgJ2Zvcm1hdCcsICdsb2NhbGUnLCAnb3BlbicsICdwcmVzZXRzJywgJ3Nob3dIZXgnLCAnc2hvd0lucHV0cycsICd2YWx1ZScsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRDb2xvclBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRPcGVuQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ29sb3JQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kQ29sb3JQaWNrZXIge1xuICAvKipcbiAgICogRW1pdHRlZCBvbiBldmVyeSBjaGFuZ2Ugd2hpbGUgdGhlIHVzZXIgZHJhZ3MgLyB0eXBlcy5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNvbW1pdHMgYSB2YWx1ZSAocmVsZWFzZSBwb2ludGVyLCBibHVyIGlucHV0LFxuRW50ZXIsIG9yIGNsaWNrIGEgcHJlc2V0KS5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBvcGVucyBvciBjbG9zZXMuXG4gICAqL1xuICBtZE9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IG9wZW46IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWREYXRlUGlja2VyLFxuICBpbnB1dHM6IFsnY2FsZW5kYXJJY29uJywgJ2NhbmNlbExhYmVsJywgJ2Nob29zZU1vbnRoQW5kWWVhckxhYmVsJywgJ2Nob29zZU1vbnRoTGFiZWwnLCAnY2hvb3NlTW9udGhZZWFyTGFiZWwnLCAnY2hvb3NlWWVhckxhYmVsJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2Nsb3NlQ2FsZW5kYXJMYWJlbCcsICdjb21taXRPblNlbGVjdCcsICdkYXRlU2VwYXJhdG9yJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW50ZXJEYXRlc0xhYmVsJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWVsZFZhcmlhbnQnLCAnZmlyc3REYXlPZldlZWsnLCAnaGVhZGxpbmUnLCAnaW52YWxpZERhdGVMYWJlbCcsICdpc0RhdGVEaXNhYmxlZCcsICdsYWJlbCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ25leHRNb250aExhYmVsJywgJ25leHRZZWFyTGFiZWwnLCAnb2tMYWJlbCcsICdvcGVuJywgJ29wZW5DYWxlbmRhckxhYmVsJywgJ291dHNpZGVDbGlja0Rpc21pc3NpYmxlJywgJ3BsYWNlaG9sZGVyJywgJ3ByZXZpb3VzTW9udGhMYWJlbCcsICdwcmV2aW91c1llYXJMYWJlbCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3NjcmltRGlzbWlzc2libGUnLCAnc2VsZWN0RGF0ZUxhYmVsJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RvZ2dsZUNhbGVuZGFyTGFiZWwnLCAndG9nZ2xlVGV4dExhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAneWVhckdyaWRMYWJlbCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnLCAnY2xlYXInLCAnZm9jdXNJbnB1dCcsICdnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1kYXRlLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2FsZW5kYXJJY29uJywgJ2NhbmNlbExhYmVsJywgJ2Nob29zZU1vbnRoQW5kWWVhckxhYmVsJywgJ2Nob29zZU1vbnRoTGFiZWwnLCAnY2hvb3NlTW9udGhZZWFyTGFiZWwnLCAnY2hvb3NlWWVhckxhYmVsJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2Nsb3NlQ2FsZW5kYXJMYWJlbCcsICdjb21taXRPblNlbGVjdCcsICdkYXRlU2VwYXJhdG9yJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW50ZXJEYXRlc0xhYmVsJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWVsZFZhcmlhbnQnLCAnZmlyc3REYXlPZldlZWsnLCAnaGVhZGxpbmUnLCAnaW52YWxpZERhdGVMYWJlbCcsICdpc0RhdGVEaXNhYmxlZCcsICdsYWJlbCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ25leHRNb250aExhYmVsJywgJ25leHRZZWFyTGFiZWwnLCAnb2tMYWJlbCcsICdvcGVuJywgJ29wZW5DYWxlbmRhckxhYmVsJywgJ291dHNpZGVDbGlja0Rpc21pc3NpYmxlJywgJ3BsYWNlaG9sZGVyJywgJ3ByZXZpb3VzTW9udGhMYWJlbCcsICdwcmV2aW91c1llYXJMYWJlbCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3NjcmltRGlzbWlzc2libGUnLCAnc2VsZWN0RGF0ZUxhYmVsJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RvZ2dsZUNhbGVuZGFyTGFiZWwnLCAndG9nZ2xlVGV4dExhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAneWVhckdyaWRMYWJlbCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kRGF0ZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kU2VsZWN0ZWQnLCAnbWRJbnB1dCcsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCcsICdtZFZpZXdDaGFuZ2UnLCAnbWRNZW51T3BlbicsICdtZE1lbnVTZWxlY3QnLCAnbWRNb2RlQ2hhbmdlJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlckNoYW5nZURldGFpbCBhcyBJTWREYXRlUGlja2VyTWREYXRlUGlja2VyQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlclNlbGVjdGVkRGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJTZWxlY3RlZERldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZERhdGVQaWNrZXJWaWV3Q2hhbmdlRGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJWaWV3Q2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlck1lbnVPcGVuRGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNZW51T3BlbkRldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZERhdGVQaWNrZXJNZW51U2VsZWN0RGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNZW51U2VsZWN0RGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlck1vZGVDaGFuZ2VEZXRhaWwgYXMgSU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1vZGVDaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRGF0ZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuTWREYXRlUGlja2VyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjb21taXRzIGEgc2VsZWN0aW9uLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWREYXRlUGlja2VyTWREYXRlUGlja2VyQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRheSBpbiB0aGUgY2FsZW5kYXIgKGNsaWNrIG9yIGtleWJvYXJkKS5cbiAgICovXG4gIG1kU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWREYXRlUGlja2VyTWREYXRlUGlja2VyU2VsZWN0ZWREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb24gZXZlcnkga2V5c3Ryb2tlIGluIGEgdGV4dC1lbnRyeSBmaWVsZC5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwaWNrZXIgb3BlbnMuXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHBpY2tlciBjbG9zZXMgZm9yIGFueSByZWFzb24uXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGRpc21pc3NlcyB3aXRob3V0IGNvbW1pdHRpbmcgKHNjcmltLCBDYW5jZWwsIEVzYykuXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgZGlzcGxheWVkIGNhbGVuZGFyIG1vbnRoL3llYXIgY2hhbmdlcyBmcm9tIHVzZXIgbmF2aWdhdGlvbi5cbiAgICovXG4gIG1kVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJWaWV3Q2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgb3BlbnMgdGhlIG1vbnRoIG9yIHllYXIgc2VsZWN0aW9uIG1lbnUgLyBncmlkLlxuICAgKi9cbiAgbWRNZW51T3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNZW51T3BlbkRldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHBpY2tzIGEgbW9udGggb3IgeWVhciBmcm9tIGEgc2VsZWN0aW9uIG1lbnUgLyBncmlkLlxuICAgKi9cbiAgbWRNZW51U2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1lbnVTZWxlY3REZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciB0b2dnbGVzIGJldHdlZW4gY2FsZW5kYXIgYW5kIHR5cGVkLWVudHJ5IHZpZXdzLlxuICAgKi9cbiAgbWRNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1vZGVDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWREaWFsb2csXG4gIGlucHV0czogWydjYW5jZWxMYWJlbCcsICdjbG9zZUxhYmVsJywgJ2RlbnNpdHknLCAnZGl2aWRlcicsICdmdWxsc2NyZWVuJywgJ2hlYWRlckRpdmlkZXInLCAnaGVhZGxpbmUnLCAnaWNvbicsICdsb2NhbGUnLCAnb2tMYWJlbCcsICdvcGVuJywgJ3NjcmltRGlzbWlzc2libGUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ3doZW5DbG9zZWQnLCAnY2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWRpYWxvZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2FuY2VsTGFiZWwnLCAnY2xvc2VMYWJlbCcsICdkZW5zaXR5JywgJ2RpdmlkZXInLCAnZnVsbHNjcmVlbicsICdoZWFkZXJEaXZpZGVyJywgJ2hlYWRsaW5lJywgJ2ljb24nLCAnbG9jYWxlJywgJ29rTGFiZWwnLCAnb3BlbicsICdzY3JpbURpc21pc3NpYmxlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWREaWFsb2cge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZERpYWxvZyBleHRlbmRzIENvbXBvbmVudHMuTWREaWFsb2cge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgZGlhbG9nIG9wZW5zXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBkaWFsb2cgY2xvc2VzXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBkaXNtaXNzZWQgdmlhIHNjcmltIG9yIEVzY2FwZVxuICAgKi9cbiAgbWRDYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZERpdmlkZXIsXG4gIGlucHV0czogWydpbnNldCcsICdpbnNldEVuZCcsICdpbnNldFN0YXJ0JywgJ3ZlcnRpY2FsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1kaXZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydpbnNldCcsICdpbnNldEVuZCcsICdpbnNldFN0YXJ0JywgJ3ZlcnRpY2FsJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWREaXZpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWREaXZpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5NZERpdmlkZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kRmFiLFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdleHRlbmRlZCcsICdpY29uJywgJ2xhYmVsJywgJ2xvd2VyZWQnLCAncmlwcGxlJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzZXRNZW51SWNvbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtZmFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4dGVuZGVkJywgJ2ljb24nLCAnbGFiZWwnLCAnbG93ZXJlZCcsICdyaXBwbGUnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kRmFiIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEZhYiBleHRlbmRzIENvbXBvbmVudHMuTWRGYWIge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgdXNlciBhY3RpdmF0ZXMgdGhlIEZBQiAobW91c2UgY2xpY2ssIHRvdWNoLCBvclxuYEVudGVyYC9gU3BhY2VgIHdoaWxlIGZvY3VzZWQpLiBOb3QgZW1pdHRlZCB3aGVuIGBkaXNhYmxlZGAgb3JcbmBzb2Z0LWRpc2FibGVkYC4gQnViYmxlcyBhbmQgaXMgY29tcG9zZWQgc28gYSBkZWxlZ2F0ZWQgbGlzdGVuZXJcbm9uIGEgcGFyZW50IGVsZW1lbnQgd29ya3MuXG5cbmBgYHRzXG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZC1mYWInKSEuYWRkRXZlbnRMaXN0ZW5lcignbWRDbGljaycsIChlKSA9PiB7XG4gIGNvbnN0IG1vdXNlRXZlbnQgPSAoZSBhcyBDdXN0b21FdmVudDxNb3VzZUV2ZW50PikuZGV0YWlsO1xuICBjb25zb2xlLmxvZygnRkFCIGNsaWNrZWQgYXQnLCBtb3VzZUV2ZW50LmNsaWVudFgsIG1vdXNlRXZlbnQuY2xpZW50WSk7XG59KTtcbmBgYFxuICAgKi9cbiAgbWRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PE1vdXNlRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kRmFiTWVudSxcbiAgaW5wdXRzOiBbJ2FuY2hvcicsICdkZW5zaXR5JywgJ21lbnVMYWJlbCcsICdvcGVuJywgJ3BsYWNlbWVudCcsICdxdWljaycsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICd3aGVuQ2xvc2VkJywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1mYWItbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5jaG9yJywgJ2RlbnNpdHknLCAnbWVudUxhYmVsJywgJ29wZW4nLCAncGxhY2VtZW50JywgJ3F1aWNrJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEZhYk1lbnUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE9wZW4nLCAnbWRDbG9zZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEZhYk1lbnUgZXh0ZW5kcyBDb21wb25lbnRzLk1kRmFiTWVudSB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBtZW51IG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBjbG9zZXMuXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRGYWJNZW51SXRlbSxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdsYWJlbCcsICdyb3ZpbmdGb2N1c1Zpc2libGUnLCAnc29mdERpc2FibGVkJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1mYWItbWVudS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnbGFiZWwnLCAncm92aW5nRm9jdXNWaXNpYmxlJywgJ3NvZnREaXNhYmxlZCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kRmFiTWVudUl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRmFiTWVudUl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kRmFiTWVudUl0ZW0ge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgaXRlbSBpcyBhY3RpdmF0ZWQuXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRJY29uQnV0dG9uLFxuICBpbnB1dHM6IFsnYnV0dG9uV2lkdGgnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdocmVmJywgJ2ljb24nLCAncmlwcGxlJywgJ3NlbGVjdGVkJywgJ3NlbGVjdGVkSWNvbicsICdzaGFwZScsICdzaGFwZU1vcnBoJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3RhcmdldCcsICd0b2dnbGUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtaWNvbi1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2J1dHRvbldpZHRoJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ3JpcHBsZScsICdzZWxlY3RlZCcsICdzZWxlY3RlZEljb24nLCAnc2hhcGUnLCAnc2hhcGVNb3JwaCcsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd0YXJnZXQnLCAndG9nZ2xlJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEljb25CdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kSWNvbkJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHMuTWRJY29uQnV0dG9uIHtcbiAgLyoqXG4gICAqIEZpcmVzIG9uIHBvaW50ZXIgb3Iga2V5Ym9hcmQgYWN0aXZhdGlvbi4gRGV0YWlsIGluY2x1ZGVzIHRvZ2dsZSBgc2VsZWN0ZWRgIHN0YXRlLlxuICAgKi9cbiAgbWRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRMaW5lQ2hhcnQsXG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnYXJlYScsICdheGlzVGlja3MnLCAnY29ubmVjdE51bGxzJywgJ2N1cnZlJywgJ2RlbnNpdHknLCAnZ3JpZCcsICdoZWlnaHRQcm9wJywgJ2ludmVydGVkJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xlZ2VuZCcsICdsaW5lV2lkdGgnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21hcmtMaW5lcycsICdtYXJrU2l6ZScsICdub0FuaW1hdGlvbicsICdzZXJpZXMnLCAnc2VyaWVzTGFiZWxzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd0xpbmUnLCAnc2hvd01hcmtzJywgJ3N0YWNrJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAndGFibGVMYWJlbHMnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlcicsICd4QXhpcycsICd5QXhlcycsICd5QXhpcycsICd6b29tJ10sXG4gIG1ldGhvZHM6IFsncmVmcmVzaFRoZW1lJywgJ3Jlc2l6ZScsICdyZXBsYXknLCAndG9EYXRhVVJMJywgJ2dldEluc3RhbmNlJywgJ3NldFpvb20nLCAncmVzZXRab29tJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1saW5lLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnYXJlYScsICdheGlzVGlja3MnLCAnY29ubmVjdE51bGxzJywgJ2N1cnZlJywgJ2RlbnNpdHknLCAnZ3JpZCcsICdoZWlnaHRQcm9wJywgJ2ludmVydGVkJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xlZ2VuZCcsICdsaW5lV2lkdGgnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21hcmtMaW5lcycsICdtYXJrU2l6ZScsICdub0FuaW1hdGlvbicsICdzZXJpZXMnLCAnc2VyaWVzTGFiZWxzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd0xpbmUnLCAnc2hvd01hcmtzJywgJ3N0YWNrJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAndGFibGVMYWJlbHMnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlcicsICd4QXhpcycsICd5QXhlcycsICd5QXhpcycsICd6b29tJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRMaW5lQ2hhcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE1hcmtlckNsaWNrJywgJ21kTGluZUNsaWNrJywgJ21kQXJlYUNsaWNrJywgJ21kQXhpc0NsaWNrJywgJ21kTGVnZW5kQ2xpY2snLCAnbWRIb3ZlcicsICdtZFJlYWR5JywgJ21kWm9vbSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRDaGFydENsaWNrRGV0YWlsIGFzIElNZExpbmVDaGFydE1kQ2hhcnRDbGlja0RldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0WFlTZXJpZXMgYXMgSU1kTGluZUNoYXJ0TWRDaGFydFhZU2VyaWVzIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRBeGlzQ2xpY2tEZXRhaWwgYXMgSU1kTGluZUNoYXJ0TWRDaGFydEF4aXNDbGlja0RldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0SG92ZXJEZXRhaWwgYXMgSU1kTGluZUNoYXJ0TWRDaGFydEhvdmVyRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZExpbmVDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRMaW5lQ2hhcnQge1xuICAvKipcbiAgICogRmlyZXMgb24gbWFya2VyIGNsaWNrLiBgZGF0YUluZGV4YCBhZGRyZXNzZXMgdGhlIGNsaWNrZWQgc2VyaWVzJyBvd25cbmBkYXRhYCBhcnJheSAoaXRzIHBvaW50IGluZGV4LCBmb3Igc2VyaWVzIHRoYXQgY2FycnkgdGhlaXIgb3duIHgpLlxuICAgKi9cbiAgbWRNYXJrZXJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZExpbmVDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRMaW5lQ2hhcnRNZENoYXJ0WFlTZXJpZXM+Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgc2VyaWVzJyBkcmF3biBsaW5lIGlzIGNsaWNrZWQgKmJldHdlZW4qIGl0cyBkYXRhIHBvaW50cyAoYVxuY2xpY2sgb24gYSBwb2ludCBlbWl0cyBgbWRNYXJrZXJDbGlja2AgaW5zdGVhZCkuIGBkYXRhSW5kZXhgIGlzIHRoZSBwb2ludFxudGhlIGNsaWNrIGlzIG5lYXJlc3QgYWxvbmcgeC5cbiAgICovXG4gIG1kTGluZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTGluZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZExpbmVDaGFydE1kQ2hhcnRYWVNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBzZXJpZXMnIGZpbGxlZCBhcmVhIGlzIGNsaWNrZWQgKGBhcmVhYCBjaGFydHMgb25seSkg4oCUIHRoZVxucmVnaW9uIGJldHdlZW4gdGhhdCBzZXJpZXMnIGxpbmUgYW5kIGl0cyBiYXNlbGluZSwgZXhjbHVkaW5nIGl0cyBsaW5lIGFuZFxucG9pbnRzLiBgZGF0YUluZGV4YCBpcyB0aGUgcG9pbnQgdGhlIGNsaWNrIGlzIG5lYXJlc3QgYWxvbmcgeC5cbiAgICovXG4gIG1kQXJlYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTGluZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZExpbmVDaGFydE1kQ2hhcnRYWVNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBsb3QgYmFja2dyb3VuZCBpcyBjbGlja2VkIChpbnNpZGUgdGhlIHBsb3QsIGJ1dCBub3Qgb24gYVxubWFyaywgbGluZSBvciBhcmVhKTogdGhlIG5lYXJlc3QgeCBwb3NpdGlvbiBwbHVzIGV2ZXJ5IHZpc2libGUgc2VyaWVzJ1xudmFsdWUgdGhlcmUuXG4gICAqL1xuICBtZEF4aXNDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZExpbmVDaGFydE1kQ2hhcnRBeGlzQ2xpY2tEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBsZWdlbmQgZW50cnkgaXMgY2xpY2tlZC5cbiAgICovXG4gIG1kTGVnZW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlcmllc0luZGV4OiBudW1iZXI7IHNlcmllc0lkPzogc3RyaW5nOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyAodGhyb3R0bGVkIHRvIHJBRikgYXMgdGhlIHBvaW50ZXIgY3Jvc3NlcyB0aGUgcGxvdC5cbiAgICovXG4gIG1kSG92ZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRMaW5lQ2hhcnRNZENoYXJ0SG92ZXJEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIHRoZSBjaGFydCBmaW5pc2hlcyBpdHMgaW5pdGlhbCByZW5kZXIuXG4gICAqL1xuICBtZFJlYWR5OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgem9vbSB3aW5kb3cgY2hhbmdlcyAoZHJhZywgc2xpZGVyIG9yIGBzZXRab29tYC9gcmVzZXRab29tYCkuXG4gICAqL1xuICBtZFpvb206IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlcjsgcmVzZXQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRMaXN0LFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdpbnRlcmFjdGlvbk1vZGUnLCAnbGFiZWwnLCAnbGFiZWxsZWRieScsICdsaXN0U3R5bGUnLCAncmVvcmRlcmFibGUnLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGlvbk1vZGUnXSxcbiAgbWV0aG9kczogWydhY3RpdmF0ZU5leHQnLCAnYWN0aXZhdGVQcmV2aW91cycsICdzZWxlY3RJdGVtJywgJ2dldFNlbGVjdGVkSW5kaWNlcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbGlzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdpbnRlcmFjdGlvbk1vZGUnLCAnbGFiZWwnLCAnbGFiZWxsZWRieScsICdsaXN0U3R5bGUnLCAncmVvcmRlcmFibGUnLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGlvbk1vZGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZExpc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNlbGVjdCcsICdtZEFjdGl2YXRlJywgJ21kUmVvcmRlciddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRMaXN0U2VsZWN0RGV0YWlsIGFzIElNZExpc3RNZExpc3RTZWxlY3REZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTGlzdCBleHRlbmRzIENvbXBvbmVudHMuTWRMaXN0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBzZWxlY3Rpb24gY2hhbmdlcyB2aWEgdXNlciBpbnB1dCAoY2xpY2sgLyBFbnRlciAvIFNwYWNlKS5cbiAgICovXG4gIG1kU2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTGlzdE1kTGlzdFNlbGVjdERldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuZXZlciByb3ZpbmcgZm9jdXMgbGFuZHMgb24gYSBkaWZmZXJlbnQgcm93LlxuICAgKi9cbiAgbWRBY3RpdmF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgaXRlbTogSFRNTE1kTGlzdEl0ZW1FbGVtZW50IH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgYSBkcmFnIChvciBrZXlib2FyZCkgcmVvcmRlciBjb21wbGV0ZXMuXG5cbi0gYGZyb21gIC8gYHRvYDogdGhlIG1vdmVkIHJvdydzIG9sZCBhbmQgbmV3IHBvc2l0aW9ucyAoaXRlbSBpbmRpY2VzLFxuICBpZ25vcmluZyBub24taXRlbSBjaGlsZHJlbiBsaWtlIGRpdmlkZXJzKS5cbi0gYG9yZGVyYDogdGhlIG5ldyBvcmRlciBleHByZXNzZWQgYXMgdGhlIG9yaWdpbmFsIChhcy1hdXRob3JlZCkgaW5kaWNlcyxcbiAgc28gYG9yZGVyW25ld1Bvc2l0aW9uXSA9PT0gb3JpZ2luYWxQb3NpdGlvbmAuIFVzZSBpdCB0byByZW9yZGVyIGFcbiAgYmFja2luZyBkYXRhIGFycmF5IGluIG9uZSBwYXNzLlxuICAgKi9cbiAgbWRSZW9yZGVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBmcm9tOiBudW1iZXI7IHRvOiBudW1iZXI7IG9yZGVyOiBudW1iZXJbXSB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZExpc3RJdGVtLFxuICBpbnB1dHM6IFsnY29udGFpbmVyUm9sZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGFibGUnLCAnZXhwYW5kZWQnLCAnaGVhZGxpbmUnLCAnaHJlZicsICdpbnRlcmFjdGlvbk1vZGUnLCAnbGVhZGluZ0F2YXRhcicsICdsZWFkaW5nQXZhdGFyQWx0JywgJ2xlYWRpbmdBdmF0YXJMYWJlbCcsICdsZWFkaW5nQXZhdGFyTmFtZScsICdsZWFkaW5nSWNvbicsICdsZWFkaW5nSW1hZ2UnLCAnbGVhZGluZ0ltYWdlQWx0JywgJ2xpbmVzJywgJ292ZXJsaW5lJywgJ3Jlb3JkZXJhYmxlJywgJ3JvdmluZ0ZvY3VzVmlzaWJsZScsICdzZWxlY3RlZCcsICdzZWxlY3Rpb25Nb2RlJywgJ3NvZnREaXNhYmxlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd0YWJiYWJsZScsICd0YXJnZXQnLCAndHJhaWxpbmdJY29uJywgJ3RyYWlsaW5nU3VwcG9ydGluZ1RleHQnLCAndHlwZSddLFxuICBtZXRob2RzOiBbJ3NldEZvY3VzJywgJ2ZvY3VzSXRlbScsICd0b2dnbGUnLCAnZXhwYW5kJywgJ2NvbGxhcHNlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1saXN0LWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbnRhaW5lclJvbGUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdleHBhbmRhYmxlJywgJ2V4cGFuZGVkJywgJ2hlYWRsaW5lJywgJ2hyZWYnLCAnaW50ZXJhY3Rpb25Nb2RlJywgJ2xlYWRpbmdBdmF0YXInLCAnbGVhZGluZ0F2YXRhckFsdCcsICdsZWFkaW5nQXZhdGFyTGFiZWwnLCAnbGVhZGluZ0F2YXRhck5hbWUnLCAnbGVhZGluZ0ljb24nLCAnbGVhZGluZ0ltYWdlJywgJ2xlYWRpbmdJbWFnZUFsdCcsICdsaW5lcycsICdvdmVybGluZScsICdyZW9yZGVyYWJsZScsICdyb3ZpbmdGb2N1c1Zpc2libGUnLCAnc2VsZWN0ZWQnLCAnc2VsZWN0aW9uTW9kZScsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndGFiYmFibGUnLCAndGFyZ2V0JywgJ3RyYWlsaW5nSWNvbicsICd0cmFpbGluZ1N1cHBvcnRpbmdUZXh0JywgJ3R5cGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZExpc3RJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljaycsICdtZEl0ZW1DbGljaycsICdtZEl0ZW1TZWxlY3QnLCAnbWRSZXF1ZXN0QWN0aXZhdGlvbicsICdtZEl0ZW1SZXF1ZXN0UmVvcmRlcicsICdtZEV4cGFuZCddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRMaXN0SXRlbUV4cGFuZERldGFpbCBhcyBJTWRMaXN0SXRlbU1kTGlzdEl0ZW1FeHBhbmREZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTGlzdEl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kTGlzdEl0ZW0ge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiBhbiBpbnRlcmFjdGl2ZSByb3cgaXMgYWN0aXZhdGVkIChjbGljaywgRW50ZXIsIG9yIFNwYWNlKS5cbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGl0ZW06IEhUTUxFbGVtZW50IH0+PjtcbiAgLyoqXG4gICAqIEJ1YmJsZXMgdG8gcGFyZW50IGBtZC1saXN0YCBzbyBpdCBjYW4gbWFuYWdlIHNlbGVjdGlvbiBzdGF0ZS5cbiAgICovXG4gIG1kSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBCdWJibGVzIHRvIHBhcmVudCBgbWQtbGlzdGAgd2hlbiBhbiBgZXhwYW5kZWQtY29udGVudGAgY2hpbGQgcm93IGlzXG5zZWxlY3RlZC4gVGhlIGxpc3QgcmUtZW1pdHMgYG1kU2VsZWN0YCB3aXRoIHRoZSBwYXJlbnQncyBsaXN0IGluZGV4LFxuYGNoaWxkSW5kZXhgLCBgZXhwYW5kZWRgLCBhbmQgdGhlIGNoaWxkIGluIGBpdGVtYC5cbiAgICovXG4gIG1kSXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgdmFsdWU6IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW47IGl0ZW06IEhUTUxNZExpc3RJdGVtRWxlbWVudDsgfT4+O1xuICAvKipcbiAgICogQXNrcyB0aGUgcGFyZW50IGBtZC1saXN0YCB0byBnaXZlIHRoaXMgcm93IHJvdmluZyBmb2N1cy5cbiAgICovXG4gIG1kUmVxdWVzdEFjdGl2YXRpb246IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBJbnRlcm5hbCBldmVudCB0aGUgcGFyZW50IGBtZC1saXN0YCBsaXN0ZW5zIHRvIGZvciBrZXlib2FyZCByZW9yZGVyaW5nXG4oYEFsdCArIEFycm93VXAgLyBBcnJvd0Rvd25gKS4gQnViYmxlcyArIGNvbXBvc2VkIHNvIGl0IGNyb3NzZXMgdGhlXG5zaGFkb3cgYm91bmRhcnkgdXAgdG8gdGhlIGxpc3QuXG4gICAqL1xuICBtZEl0ZW1SZXF1ZXN0UmVvcmRlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nOyBmcm9tOiBudW1iZXI7IH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW5ldmVyIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiBhbiBleHBhbmRhYmxlIHJvdyBjaGFuZ2VzLlxuICAgKi9cbiAgbWRFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRMaXN0SXRlbU1kTGlzdEl0ZW1FeHBhbmREZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kTG9hZGluZ0luZGljYXRvcixcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbGFiZWwnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbG9hZGluZy1pbmRpY2F0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbGFiZWwnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kTG9hZGluZ0luZGljYXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTG9hZGluZ0luZGljYXRvciBleHRlbmRzIENvbXBvbmVudHMuTWRMb2FkaW5nSW5kaWNhdG9yIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZE1lbnUsXG4gIGlucHV0czogWydhbmNob3InLCAnYXV0b0ZvY3VzJywgJ2RlbnNpdHknLCAnZW1wdHlUZXh0JywgJ2xheW91dCcsICdsaXN0TGFiZWwnLCAnbGlzdGJveCcsICdtYXRjaEFuY2hvcldpZHRoJywgJ21heEhlaWdodCcsICdvcGVuJywgJ3BlcnNpc3RlbnQnLCAncGxhY2VtZW50JywgJ3F1aWNrJywgJ3Jlc3BvbnNpdmUnLCAndXNlR2FwJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzZXRDb21ib2JveEVsZW1lbnQnLCAnc2V0VmlydHVhbFByb3ZpZGVyJywgJ2dldFNjcm9sbFZpZXdwb3J0JywgJ3Nob3cnLCAncmVwb3NpdGlvbicsICd3aGVuQ2xvc2VkJywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmNob3InLCAnYXV0b0ZvY3VzJywgJ2RlbnNpdHknLCAnZW1wdHlUZXh0JywgJ2xheW91dCcsICdsaXN0TGFiZWwnLCAnbGlzdGJveCcsICdtYXRjaEFuY2hvcldpZHRoJywgJ21heEhlaWdodCcsICdvcGVuJywgJ3BlcnNpc3RlbnQnLCAncGxhY2VtZW50JywgJ3F1aWNrJywgJ3Jlc3BvbnNpdmUnLCAndXNlR2FwJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZE1lbnUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE9wZW4nLCAnbWRDbG9zZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZE1lbnUgZXh0ZW5kcyBDb21wb25lbnRzLk1kTWVudSB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBtZW51IG9wZW5zLiBTY29wZWQgdG8gdGhlIG1lbnUgZWxlbWVudDogYGJ1YmJsZXM6IGZhbHNlYFxuc3RvcHMgaXQgY2xpbWJpbmcgdGhlIGxpZ2h0LURPTSB0cmVlLCBhbmQgYGNvbXBvc2VkOiBmYWxzZWAgc3RvcHMgaXRcbmVzY2FwaW5nIHRoZSBzaGFkb3cgcm9vdCBvZiBhIGhvc3QgdGhhdCBlbWJlZHMgdGhpcyBtZW51IChtZC1zZWxlY3QsXG5tZC1tdWx0aS1zZWxlY3QsIG1kLWRhdGUtcGlja2VyIOKApikuIFdpdGhvdXQgYGNvbXBvc2VkOiBmYWxzZWAgYVxuYGNvbXBvc2VkYCBldmVudCBzdGlsbCBzdXJmYWNlcyBhdCB0aGUgZW1iZWRkaW5nIGhvc3QgYXMgYW5cbmBBVF9UQVJHRVRgIGV2ZW50IOKAlCBzbyBhIGNvbnN1bWVyJ3MgYG1kT3BlbmAgbGlzdGVuZXIgb24gdGhlIHdyYXBwZXJcbndvdWxkIGZpcmUgZm9yIGJvdGggdGhlIHdyYXBwZXIncyBvd24gZXZlbnQgYW5kIHRoaXMgaW5uZXIgb25lXG4oZHVwbGljYXRlIG9wZW4vY2xvc2UpLiBXcmFwcGVycyBsaXN0ZW4gdmlhIGBvbk1kT3BlbmAgb24gdGhlIG1lbnVcbmVsZW1lbnQgaXRzZWxmLCB3aGljaCBzdGlsbCBmaXJlcyByZWdhcmRsZXNzLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBjbG9zZXMuIFNjb3BlZCBsaWtlIGBtZE9wZW5gIOKAlCBzZWUgaXRzIG5vdGUuXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRNZW51SXRlbSxcbiAgaW5wdXRzOiBbJ2JhZGdlJywgJ2NoZWNrUG9zaXRpb24nLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkaXZpZGVyJywgJ2dhcCcsICdoZWFkbGluZScsICdpbmRldGVybWluYXRlJywgJ2tlZXBPcGVuJywgJ3ByZXNlbnRhdGlvbicsICdyb2xlT3ZlcnJpZGUnLCAnc2VsZWN0ZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndHJhaWxpbmdUZXh0JywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW1lbnUtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFkZ2UnLCAnY2hlY2tQb3NpdGlvbicsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2RpdmlkZXInLCAnZ2FwJywgJ2hlYWRsaW5lJywgJ2luZGV0ZXJtaW5hdGUnLCAna2VlcE9wZW4nLCAncHJlc2VudGF0aW9uJywgJ3JvbGVPdmVycmlkZScsICdzZWxlY3RlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd0cmFpbGluZ1RleHQnLCAndHlwZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kTWVudUl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTWVudUl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kTWVudUl0ZW0ge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgaXRlbSBpcyBhY3RpdmF0ZWQuXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRNZW51SXRlbUdyb3VwLFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbWVudS1pdGVtLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2xhYmVsJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRNZW51SXRlbUdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRNZW51SXRlbUdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5NZE1lbnVJdGVtR3JvdXAge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kTWV0ZXIsXG4gIGlucHV0czogWydjb2xvcicsICdkZW5zaXR5JywgJ2Zvcm1hdE9wdGlvbnMnLCAnbGFiZWwnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnc2hvd0xhYmVsJywgJ3Nob3dWYWx1ZScsICdzaXplJywgJ3RoaWNrbmVzcycsICd2YWx1ZScsICd2YWx1ZVRleHQnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbWV0ZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2RlbnNpdHknLCAnZm9ybWF0T3B0aW9ucycsICdsYWJlbCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICdzaG93TGFiZWwnLCAnc2hvd1ZhbHVlJywgJ3NpemUnLCAndGhpY2tuZXNzJywgJ3ZhbHVlJywgJ3ZhbHVlVGV4dCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRNZXRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTWV0ZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kTWV0ZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kTXVsdGlTZWxlY3QsXG4gIGlucHV0czogWydjaGlwT3ZlcmZsb3cnLCAnY2hpcFBvc2l0aW9uJywgJ2NsZWFySWNvbicsICdjbGVhckxhYmVsJywgJ2NsZWFyYWJsZScsICdjb3VudEZvcm1hdHRlcicsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Rpc3BsYXlNb2RlJywgJ2Ryb3Bkb3duSWNvbicsICdlcnJvcicsICdlcnJvclRleHQnLCAnZmlsdGVyTGFiZWwnLCAnZmlsdGVyTW9kZScsICdmaWx0ZXJhYmxlJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFNlbGVjdGVkJywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoaW5nTGFiZWwnLCAnc2VsZWN0QWxsTGFiZWwnLCAnc2hvd1NlbGVjdEFsbCcsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndHJpZ2dlcicsICd0cmlnZ2VySWNvbicsICd0cmlnZ2VyTGFiZWwnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZScsICdmb2N1c1RyaWdnZXInLCAncmVzZXQnLCAnbG9hZE9wdGlvbnMnLCAnc2V0UXVlcnknLCAnZ2V0TGFiZWxzJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW11bHRpLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2hpcE92ZXJmbG93JywgJ2NoaXBQb3NpdGlvbicsICdjbGVhckljb24nLCAnY2xlYXJMYWJlbCcsICdjbGVhcmFibGUnLCAnY291bnRGb3JtYXR0ZXInLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkaXNwbGF5TW9kZScsICdkcm9wZG93bkljb24nLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpbHRlckxhYmVsJywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyYWJsZScsICdsYWJlbCcsICdsb2FkaW5nJywgJ2xvYWRpbmdUZXh0JywgJ21hdGNoVHJpZ2dlcldpZHRoJywgJ21heEhlaWdodCcsICdtYXhTZWxlY3RlZCcsICduYW1lJywgJ25vT3B0aW9uc1RleHQnLCAnbm9SZXN1bHRzVGV4dCcsICdvcGVuJywgJ29wdGlvbnMnLCAncGxhY2Vob2xkZXInLCAncGxhY2VtZW50JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAncm93SGVpZ2h0JywgJ3NlYXJjaFBsYWNlaG9sZGVyJywgJ3NlYXJjaGluZ0xhYmVsJywgJ3NlbGVjdEFsbExhYmVsJywgJ3Nob3dTZWxlY3RBbGwnLCAnc29mdERpc2FibGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RyaWdnZXInLCAndHJpZ2dlckljb24nLCAndHJpZ2dlckxhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAndmlydHVhbGl6ZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kTXVsdGlTZWxlY3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENoYW5nZScsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZFJlbW92ZScsICdtZENsZWFyJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRNdWx0aVNlbGVjdCBleHRlbmRzIENvbXBvbmVudHMuTWRNdWx0aVNlbGVjdCB7XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgZnVsbCBzZWxlY3RlZC12YWx1ZSBhcnJheSB3aGVuZXZlciB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBtZW51IG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgbWVudSBjbG9zZXMuXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgdGhlIHJlbW92ZWQgdmFsdWUgd2hlbiBhIGNoaXAgaXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgbWRSZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNsZWFyIGJ1dHRvbiBlbXB0aWVzIHRoZSBzZWxlY3Rpb24uXG4gICAqL1xuICBtZENsZWFyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGxpa2UgbWQtc2VsZWN0IGVtYmVkIGFuXG5tZC10ZXh0LWZpZWxkLCBhbmQgYSBjb21wb3NlZCBldmVudCBlc2NhcGVzIHRoYXQgaW5uZXIgc2hhZG93IHJvb3QsIHNvIGFcbmxpc3RlbmVyIG9uIG1kLXNlbGVjdCB3b3VsZCByZWNlaXZlIHRoZSBpbm5lciBmaWVsZCdzIGV2ZW50IGFzIHdlbGwgYXMgdGhlXG5ob3N0J3Mg4oCUIHR3byBldmVudHMsIGRpZmZlcmVudCBwYXlsb2FkcywgZm9yIG9uZSBsb2dpY2FsIGNvbnRyb2wuIEtlZXBpbmdcbml0IHVuY29tcG9zZWQgbWVhbnMgZWFjaCBjb21wb25lbnQgcmVwb3J0cyBvbmx5IGZvciBpdHNlbGYsIHdoaWxlXG5gYnViYmxlczogdHJ1ZWAgc3RpbGwgbGV0cyBhIDxmb3JtPiBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZE5hdmlnYXRpb25CYXIsXG4gIGlucHV0czogWydhY3RpdmVJbmRleCcsICdkZW5zaXR5JywgJ2xhYmVsQmVoYXZpb3InLCAnbWFudWFsQWN0aXZhdGlvbiddLFxuICBtZXRob2RzOiBbJ3NlbGVjdCcsICdmb2N1c1RhYiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbmF2aWdhdGlvbi1iYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZUluZGV4JywgJ2RlbnNpdHknLCAnbGFiZWxCZWhhdmlvcicsICdtYW51YWxBY3RpdmF0aW9uJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWROYXZpZ2F0aW9uQmFyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWROYXZpZ2F0aW9uQmFyIGV4dGVuZHMgQ29tcG9uZW50cy5NZE5hdmlnYXRpb25CYXIge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCBkZXN0aW5hdGlvbiBjaGFuZ2VzICh1c2VyIGNsaWNrLFxua2V5Ym9hcmQgYWN0aXZhdGlvbiwgb3IgcHJvZ3JhbW1hdGljIGBhY3RpdmVJbmRleGAgLyBgc2VsZWN0KClgIHVwZGF0ZSkuXG5EZXRhaWwgaW5jbHVkZXMgYm90aCB0aGUgbmV3IGFuZCBwcmV2aW91cyBpbmRpY2VzIHNvIGxpc3RlbmVyc1xuY2FuIHNob3J0LWNpcmN1aXQgbm8tb3AgcmVzZWxlY3RzLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGluZGV4OiBudW1iZXI7IHByZXZpb3VzSW5kZXg6IG51bWJlciB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZE5hdmlnYXRpb25SYWlsLFxuICBpbnB1dHM6IFsnYWN0aXZlSW5kZXgnLCAnYWxpZ25tZW50JywgJ2RlbnNpdHknLCAnZGlzYWJsZUZvY3VzTWFuYWdlbWVudCcsICdleHBhbmRhYmxlJywgJ2Z1bGxIZWlnaHQnLCAnbGFiZWwnLCAnbGFiZWxWaXNpYmlsaXR5JywgJ21heFZpc2libGUnLCAnbW9kYWwnLCAnb3JpZW50YXRpb24nLCAnb3ZlcmZsb3dJY29uJywgJ292ZXJmbG93TGFiZWwnLCAndG9nZ2xlTGFiZWwnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ2V4cGFuZCcsICdjb2xsYXBzZScsICd0b2dnbGUnLCAnZm9jdXNUYWInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW5hdmlnYXRpb24tcmFpbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlSW5kZXgnLCAnYWxpZ25tZW50JywgJ2RlbnNpdHknLCAnZGlzYWJsZUZvY3VzTWFuYWdlbWVudCcsICdleHBhbmRhYmxlJywgJ2Z1bGxIZWlnaHQnLCAnbGFiZWwnLCAnbGFiZWxWaXNpYmlsaXR5JywgJ21heFZpc2libGUnLCAnbW9kYWwnLCAnb3JpZW50YXRpb24nLCAnb3ZlcmZsb3dJY29uJywgJ292ZXJmbG93TGFiZWwnLCAndG9nZ2xlTGFiZWwnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kTmF2aWdhdGlvblJhaWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNoYW5nZScsICdtZEV4cGFuZCcsICdtZENvbGxhcHNlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTmF2aWdhdGlvblJhaWwgZXh0ZW5kcyBDb21wb25lbnRzLk1kTmF2aWdhdGlvblJhaWwge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBkZXN0aW5hdGlvbi5cbiAgICovXG4gIG1kVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcmFpbCB0cmFuc2l0aW9ucyBmcm9tIGNvbGxhcHNlZCDihpIgZXhwYW5kZWQuXG4gICAqL1xuICBtZEV4cGFuZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcmFpbCB0cmFuc2l0aW9ucyBmcm9tIGV4cGFuZGVkIOKGkiBjb2xsYXBzZWQuXG4gICAqL1xuICBtZENvbGxhcHNlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWROYXZpZ2F0aW9uUmFpbFRhYixcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdiYWRnZScsICdiYWRnZVZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXhwYW5kZWQnLCAnaHJlZicsICdpY29uJywgJ2xhYmVsJywgJ2xhYmVsVmlzaWJpbGl0eScsICd0YXJnZXQnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydjbGVhclN1Ym1lbnVTZWxlY3Rpb24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW5hdmlnYXRpb24tcmFpbC10YWInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdiYWRnZScsICdiYWRnZVZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXhwYW5kZWQnLCAnaHJlZicsICdpY29uJywgJ2xhYmVsJywgJ2xhYmVsVmlzaWJpbGl0eScsICd0YXJnZXQnLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZE5hdmlnYXRpb25SYWlsVGFiIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRUYWJDbGljaycsICdtZFN1Ym1lbnVUb2dnbGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWROYXZpZ2F0aW9uUmFpbFRhYiBleHRlbmRzIENvbXBvbmVudHMuTWROYXZpZ2F0aW9uUmFpbFRhYiB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIGFjdGl2YXRlcyB0aGUgZGVzdGluYXRpb24gKGNsaWNrIC8gRW50ZXIgLyBTcGFjZSkuXG4gICAqL1xuICBtZFRhYkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhpcyBkZXN0aW5hdGlvbidzIHNsb3R0ZWQgZHJvcGRvd24gb3BlbnMgb3IgY2xvc2VzLiBgbWQtbWVudWAnc1xub3duIGBtZE9wZW5gIC8gYG1kQ2xvc2VgIGFyZSBkZWxpYmVyYXRlbHkgbm9uLWJ1YmJsaW5nIGFuZCBub24tY29tcG9zZWQsIHNvXG50aGUgcmFpbCBoYXMgbm8gd2F5IHRvIGhlYXIgdGhlbSDigJQgdGhpcyBpcyB0aGUgc2lnbmFsIGl0IGxpc3RlbnMgZm9yIChpdFxubGlmdHMgaXRzIHN0YWNraW5nIGNvbnRleHQgc28gdGhlIGZpeGVkLXBvc2l0aW9uIG1lbnUgaXMgbm90IHRyYXBwZWQpLlxuICAgKi9cbiAgbWRTdWJtZW51VG9nZ2xlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBvcGVuOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kTmF2aWdhdGlvblRhYixcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdhY3RpdmVJY29uJywgJ2JhZGdlJywgJ2JhZGdlTWF4JywgJ2JhZGdlVmFsdWUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdocmVmJywgJ2ljb24nLCAnbGFiZWwnLCAnbGFiZWxCZWhhdmlvcicsICdzb2Z0RGlzYWJsZWQnLCAndGFyZ2V0J10sXG4gIG1ldGhvZHM6IFsnZm9jdXNFbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbmF2aWdhdGlvbi10YWInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdhY3RpdmVJY29uJywgJ2JhZGdlJywgJ2JhZGdlTWF4JywgJ2JhZGdlVmFsdWUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdocmVmJywgJ2ljb24nLCAnbGFiZWwnLCAnbGFiZWxCZWhhdmlvcicsICdzb2Z0RGlzYWJsZWQnLCAndGFyZ2V0J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWROYXZpZ2F0aW9uVGFiIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRUYWJDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZE5hdmlnYXRpb25UYWIgZXh0ZW5kcyBDb21wb25lbnRzLk1kTmF2aWdhdGlvblRhYiB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB0YWIgaXMgYWN0aXZhdGVkIChjbGljaywgRW50ZXIsIG9yIFNwYWNlKSBhbmQgdGhlIHRhYiBpc1xubm90IGRpc2FibGVkLiBUaGUgcGFyZW50IGBtZC1uYXZpZ2F0aW9uLWJhcmAgbGlzdGVucyBmb3IgdGhpcyB0byBkcml2ZVxuc2VsZWN0aW9uOyBleHRlcm5hbCBjb2RlIG1heSBhbHNvIGxpc3RlbiB0byBkZXRlY3QgcGVyLXRhYiBhY3RpdmF0aW9uXG4oaW5jbHVkaW5nIGEgcmUtY2xpY2sgb2YgdGhlIGFscmVhZHktYWN0aXZlIHRhYiwgd2hpY2ggZG9lcyBub3QgZW1pdFxuYG1kQ2hhbmdlYCBvbiB0aGUgYmFyKS5cbiAgICovXG4gIG1kVGFiQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGluZGV4OiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWROdW1iZXJGaWVsZCxcbiAgaW5wdXRzOiBbJ2FsbG93T3V0T2ZSYW5nZScsICdhbGxvd1doZWVsU2NydWInLCAnZGVjcmVtZW50TGFiZWwnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvclRleHQnLCAnZm9ybWF0T3B0aW9ucycsICdpbmNyZW1lbnRMYWJlbCcsICdsYWJlbCcsICdsYXJnZVN0ZXAnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3NtYWxsU3RlcCcsICdzbmFwT25TdGVwJywgJ3N0ZXAnLCAnc3RlcHBlcnMnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3NldEZvY3VzJywgJ3NlbGVjdCcsICdzdGVwVXAnLCAnc3RlcERvd24nLCAnZ2V0VmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eScsICdzZXRDdXN0b21WYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbnVtYmVyLWZpZWxkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbGxvd091dE9mUmFuZ2UnLCAnYWxsb3dXaGVlbFNjcnViJywgJ2RlY3JlbWVudExhYmVsJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2Zvcm1hdE9wdGlvbnMnLCAnaW5jcmVtZW50TGFiZWwnLCAnbGFiZWwnLCAnbGFyZ2VTdGVwJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdzbWFsbFN0ZXAnLCAnc25hcE9uU3RlcCcsICdzdGVwJywgJ3N0ZXBwZXJzJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZE51bWJlckZpZWxkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJbnB1dCcsICdtZENoYW5nZScsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZE51bWJlckZpZWxkQ2hhbmdlRGV0YWlsIGFzIElNZE51bWJlckZpZWxkTWROdW1iZXJGaWVsZENoYW5nZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWROdW1iZXJGaWVsZCBleHRlbmRzIENvbXBvbmVudHMuTWROdW1iZXJGaWVsZCB7XG4gIC8qKlxuICAgKiBGaXJlcyBvbiBldmVyeSB2YWx1ZSBjaGFuZ2UgKHR5cGluZyBpbmNsdWRlZCkuXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTnVtYmVyRmllbGRNZE51bWJlckZpZWxkQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyBhdCBjb21taXQgcG9pbnRzOiBibHVyL0VudGVyIHJlZm9ybWF0LCBzdGVwcGluZywgd2hlZWwuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE51bWJlckZpZWxkTWROdW1iZXJGaWVsZENoYW5nZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGVtYmVkZGluZyBhIGZpZWxkIHdvdWxkXG5vdGhlcndpc2UgaGVhciB0d28gZXZlbnRzIGZvciBvbmUgbG9naWNhbCBjb250cm9sOyBgYnViYmxlczogdHJ1ZWAgc3RpbGxcbmxldHMgYSBgPGZvcm0+YCBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZE9yZ2FuaXphdGlvbkNoYXJ0LFxuICBpbnB1dHM6IFsnY29sbGFwc2VMYWJlbCcsICdjb2xsYXBzaWJsZScsICdkZW5zaXR5JywgJ2V4cGFuZExhYmVsJywgJ2xhYmVsJywgJ25vZGVzJywgJ29yaWVudGF0aW9uJywgJ3NlbGVjdGVkSWRzJywgJ3NlbGVjdGlvbk1vZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW9yZ2FuaXphdGlvbi1jaGFydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sbGFwc2VMYWJlbCcsICdjb2xsYXBzaWJsZScsICdkZW5zaXR5JywgJ2V4cGFuZExhYmVsJywgJ2xhYmVsJywgJ25vZGVzJywgJ29yaWVudGF0aW9uJywgJ3NlbGVjdGVkSWRzJywgJ3NlbGVjdGlvbk1vZGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZE9yZ2FuaXphdGlvbkNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWxlY3Rpb25DaGFuZ2UnLCAnbWROb2RlVG9nZ2xlJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBPcmdDaGFydFNlbGVjdGlvbkNoYW5nZURldGFpbCBhcyBJTWRPcmdhbml6YXRpb25DaGFydE9yZ0NoYXJ0U2VsZWN0aW9uQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE9yZ0NoYXJ0VG9nZ2xlRGV0YWlsIGFzIElNZE9yZ2FuaXphdGlvbkNoYXJ0T3JnQ2hhcnRUb2dnbGVEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kT3JnYW5pemF0aW9uQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRzLk1kT3JnYW5pemF0aW9uQ2hhcnQge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBtZFNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE9yZ2FuaXphdGlvbkNoYXJ0T3JnQ2hhcnRTZWxlY3Rpb25DaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gYSBub2RlIGlzIGV4cGFuZGVkIG9yIGNvbGxhcHNlZC5cbiAgICovXG4gIG1kTm9kZVRvZ2dsZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE9yZ2FuaXphdGlvbkNoYXJ0T3JnQ2hhcnRUb2dnbGVEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kT3RwRmllbGQsXG4gIGlucHV0czogWydhdXRvU3VibWl0JywgJ2NlbGxMYWJlbFRlbXBsYXRlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2dyb3VwU2l6ZScsICdpbmNvbXBsZXRlTGFiZWwnLCAnaW5wdXRNb2RlJywgJ2xhYmVsJywgJ2xlbmd0aCcsICdtYXNrJywgJ25hbWUnLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdzdXBwb3J0aW5nVGV4dCcsICd0cmFuc2Zvcm0nLCAndmFsaWRhdGlvblR5cGUnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbiAgbWV0aG9kczogWydzZXRGb2N1cycsICdjbGVhcicsICdnZXRWYWxpZGl0eScsICdzZXRDdXN0b21WYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1vdHAtZmllbGQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9TdWJtaXQnLCAnY2VsbExhYmVsVGVtcGxhdGUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvclRleHQnLCAnZ3JvdXBTaXplJywgJ2luY29tcGxldGVMYWJlbCcsICdpbnB1dE1vZGUnLCAnbGFiZWwnLCAnbGVuZ3RoJywgJ21hc2snLCAnbmFtZScsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RyYW5zZm9ybScsICd2YWxpZGF0aW9uVHlwZScsICd2YWx1ZScsICd2YWx1ZU1pc3NpbmdMYWJlbCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kT3RwRmllbGQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZElucHV0JywgJ21kQ2hhbmdlJywgJ21kQ29tcGxldGUnLCAnbWRJbnZhbGlkSW5wdXQnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRPdHBGaWVsZENvbXBsZXRlRGV0YWlsIGFzIElNZE90cEZpZWxkTWRPdHBGaWVsZENvbXBsZXRlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kT3RwRmllbGRJbnZhbGlkRGV0YWlsIGFzIElNZE90cEZpZWxkTWRPdHBGaWVsZEludmFsaWREZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgTWRPdHBGaWVsZFZhbGlkaXR5RGV0YWlsIGFzIElNZE90cEZpZWxkTWRPdHBGaWVsZFZhbGlkaXR5RGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZE90cEZpZWxkIGV4dGVuZHMgQ29tcG9uZW50cy5NZE90cEZpZWxkIHtcbiAgLyoqXG4gICAqIEZpcmVzIG9uIGV2ZXJ5IHZhbHVlIGNoYW5nZSBmcm9tIHVzZXIgaW5wdXQgKHR5cGluZywgY2xlYXJpbmcsIHBhc3RlLCBhdXRvZmlsbCkuXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBDb21taXQgZXZlbnQ6IGZpcmVzIHdoZW4gdGhlIGNvZGUgYmVjb21lcyBjb21wbGV0ZSBhbmQgd2hlbiBmb2N1cyBsZWF2ZXMgdGhlIHdob2xlIGdyb3VwLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gZXZlcnkgY2VsbCBpcyBmaWxsZWQuIEEgY29tcGxldGUgcGFzdGUgcmUtZmlyZXMgaXQgZXZlbiBpZiB0aGUgdmFsdWUgaXMgdW5jaGFuZ2VkLlxuICAgKi9cbiAgbWRDb21wbGV0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE90cEZpZWxkTWRPdHBGaWVsZENvbXBsZXRlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHR5cGVkL3Bhc3RlZCBjaGFyYWN0ZXJzIGFyZSByZWplY3RlZCBieSB0aGUgYHZhbGlkYXRpb25UeXBlYCBjaGFyc2V0LlxuICAgKi9cbiAgbWRJbnZhbGlkSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRPdHBGaWVsZE1kT3RwRmllbGRJbnZhbGlkRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoaXMgY29udHJvbCdzIHZhbGlkaXR5IENIQU5HRVMg4oCUIG5ldmVyIG9uIG1vdW50LCBuZXZlciBmb3IgYVxucmUtcHVibGlzaCBsYW5kaW5nIG9uIHRoZSBzYW1lIHN0YXRlLiBgY29tcG9zZWQ6IGZhbHNlYCBieSB0aGUgbGlicmFyeVxuY29udmVudGlvbjogZWFjaCBjb250cm9sIHJlcG9ydHMgb25seSBmb3IgaXRzZWxmOyBgYnViYmxlczogdHJ1ZWAgc3RpbGxcbnJlYWNoZXMgYDxmb3JtPmAtbGV2ZWwgbGlzdGVuZXJzIGluIHRoZSBzYW1lIERPTSB0cmVlLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE90cEZpZWxkTWRPdHBGaWVsZFZhbGlkaXR5RGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFBpZUNoYXJ0LFxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2Nvcm5lclJhZGl1cycsICdkYXRhJywgJ2RlbnNpdHknLCAnZW5kQW5nbGUnLCAnZ3JhZGllbnQnLCAnaGVpZ2h0UHJvcCcsICdoaWdobGlnaHQnLCAnaW5uZXJSYWRpdXMnLCAnbGFiZWwnLCAnbGFiZWxFbXB0eScsICdsYWJlbE1vZGUnLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGVnZW5kJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ2xvY2FsZScsICdtb25vY2hyb21lJywgJ25vQW5pbWF0aW9uJywgJ291dGVyUmFkaXVzJywgJ3BhZGRpbmdBbmdsZScsICdyaW5nV2lkdGhzJywgJ3Nob3dMYWJlbHMnLCAnc3RhcnRBbmdsZScsICdzdWJ0aXRsZScsICdzdW1tYXJ5JywgJ3RhYmxlTGFiZWxzJywgJ3RpdGxlQWxpZ24nLCAndG9vbHRpcCcsICd0b29sdGlwUmVuZGVyZXInLCAndmFsdWVGb3JtYXR0ZXInXSxcbiAgbWV0aG9kczogWydyZWZyZXNoVGhlbWUnLCAncmVzaXplJywgJ3JlcGxheScsICdkcmlsbCcsICd0b0RhdGFVUkwnLCAnZ2V0SW5zdGFuY2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXBpZS1jaGFydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2Nvcm5lclJhZGl1cycsICdkYXRhJywgJ2RlbnNpdHknLCAnZW5kQW5nbGUnLCAnZ3JhZGllbnQnLCAnaGVpZ2h0UHJvcCcsICdoaWdobGlnaHQnLCAnaW5uZXJSYWRpdXMnLCAnbGFiZWwnLCAnbGFiZWxFbXB0eScsICdsYWJlbE1vZGUnLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGVnZW5kJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ2xvY2FsZScsICdtb25vY2hyb21lJywgJ25vQW5pbWF0aW9uJywgJ291dGVyUmFkaXVzJywgJ3BhZGRpbmdBbmdsZScsICdyaW5nV2lkdGhzJywgJ3Nob3dMYWJlbHMnLCAnc3RhcnRBbmdsZScsICdzdWJ0aXRsZScsICdzdW1tYXJ5JywgJ3RhYmxlTGFiZWxzJywgJ3RpdGxlQWxpZ24nLCAndG9vbHRpcCcsICd0b29sdGlwUmVuZGVyZXInLCAndmFsdWVGb3JtYXR0ZXInXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFBpZUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTbGljZUNsaWNrJywgJ21kTGVnZW5kQ2xpY2snLCAnbWRSZWFkeSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRDaGFydENsaWNrRGV0YWlsIGFzIElNZFBpZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kUGllRGF0dW0gYXMgSU1kUGllQ2hhcnRNZFBpZURhdHVtIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFBpZUNoYXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5NZFBpZUNoYXJ0IHtcblxuICBtZFNsaWNlQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRQaWVDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRQaWVDaGFydE1kUGllRGF0dW0+Pj47XG5cbiAgbWRMZWdlbmRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgZGF0YUluZGV4OiBudW1iZXI7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcblxuICBtZFJlYWR5OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRQcm9ncmVzc0luZGljYXRvcixcbiAgaW5wdXRzOiBbJ2NvbXBsZXRlJywgJ2RlbnNpdHknLCAnZm91ckNvbG9yJywgJ2luZGV0ZXJtaW5hdGUnLCAnbGFiZWwnLCAnbWF4JywgJ3NpemUnLCAndGhpY2tuZXNzJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnLCAnd2F2ZScsICd3YXZlQW1wbGl0dWRlJywgJ3dhdmVMZW5ndGgnLCAnd2F2ZVNwZWVkJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1wcm9ncmVzcy1pbmRpY2F0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbXBsZXRlJywgJ2RlbnNpdHknLCAnZm91ckNvbG9yJywgJ2luZGV0ZXJtaW5hdGUnLCAnbGFiZWwnLCAnbWF4JywgJ3NpemUnLCAndGhpY2tuZXNzJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnLCAnd2F2ZScsICd3YXZlQW1wbGl0dWRlJywgJ3dhdmVMZW5ndGgnLCAnd2F2ZVNwZWVkJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRQcm9ncmVzc0luZGljYXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ29tcGxldGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRQcm9ncmVzc0luZGljYXRvciBleHRlbmRzIENvbXBvbmVudHMuTWRQcm9ncmVzc0luZGljYXRvciB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBjb21wbGV0aW9uIGFuaW1hdGlvbiBmaW5pc2hlcyAoYW5kIHRoZSBpbmRpY2F0b3IgaGFzIGhpZGRlblxuaXRzZWxmLCBvciDigJQgZm9yIGZsYXQgY2lyY3VsYXIg4oCUIHNldHRsZWQgb24gaXRzIGVtcHR5IHRyYWNrIHJpbmcpLlxuICAgKi9cbiAgbWRDb21wbGV0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kUmFkaW8sXG4gIGlucHV0czogWydjaGVja2VkJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzb2Z0RGlzYWJsZWQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbiAgbWV0aG9kczogWydzeW5jVmFsaWRpdHlGcm9tR3JvdXAnLCAnZ2V0VmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eScsICdzZXRDdXN0b21WYWxpZGl0eScsICdzZXRGb2N1cycsICdzZXRCbHVyJywgJ3NlbGVjdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NvZnREaXNhYmxlZCcsICd2YWx1ZScsICd2YWx1ZU1pc3NpbmdMYWJlbCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kUmFkaW8ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENoYW5nZScsICdtZEZvY3VzJywgJ21kQmx1cicsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kUmFkaW8gZXh0ZW5kcyBDb21wb25lbnRzLk1kUmFkaW8ge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgY2hlY2tlZCBzdGF0ZSBjaGFuZ2VzIHZpYSB1c2VyIGludGVyYWN0aW9uXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY2hlY2tlZDogYm9vbGVhbjsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSByYWRpbyByZWNlaXZlcyBmb2N1c1xuICAgKi9cbiAgbWRGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHJhZGlvIGxvc2VzIGZvY3VzXG4gICAqL1xuICBtZEJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoaXMgY29udHJvbCdzIHZhbGlkaXR5IENIQU5HRVMg4oCUIG5ldmVyIG9uIGV2ZXJ5IGtleXN0cm9rZSwgYW5kXG5uZXZlciBmb3IgYSByZS1wdWJsaXNoIHRoYXQgbGFuZHMgb24gdGhlIHNhbWUgc3RhdGUuXG5cbmBjb21wb3NlZDogZmFsc2VgIGlzIGRlbGliZXJhdGUuIENvbXBvc2l0ZXMgbGlrZSBtZC1zZWxlY3QgZW1iZWQgYW5cbm1kLXRleHQtZmllbGQsIGFuZCBhIGNvbXBvc2VkIGV2ZW50IGVzY2FwZXMgdGhhdCBpbm5lciBzaGFkb3cgcm9vdCwgc28gYVxubGlzdGVuZXIgb24gbWQtc2VsZWN0IHdvdWxkIHJlY2VpdmUgdGhlIGlubmVyIGZpZWxkJ3MgZXZlbnQgYXMgd2VsbCBhcyB0aGVcbmhvc3QncyDigJQgdHdvIGV2ZW50cywgZGlmZmVyZW50IHBheWxvYWRzLCBmb3Igb25lIGxvZ2ljYWwgY29udHJvbC4gS2VlcGluZ1xuaXQgdW5jb21wb3NlZCBtZWFucyBlYWNoIGNvbXBvbmVudCByZXBvcnRzIG9ubHkgZm9yIGl0c2VsZiwgd2hpbGVcbmBidWJibGVzOiB0cnVlYCBzdGlsbCBsZXRzIGEgPGZvcm0+IG9yIGFwcCByb290IGhlYXIgZXZlcnkgY29udHJvbC5cbiAgICovXG4gIG1kVmFsaWRpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbGlkOiBib29sZWFuOyB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nOyBmbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kUmF0aW5nLFxuICBpbnB1dHM6IFsnZGVmYXVsdFZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW1wdHlJY29uJywgJ2dldExhYmVsJywgJ2hvdmVyJywgJ2ljb24nLCAnbWF4JywgJ25hbWUnLCAnb3V0bGluZUVtcHR5JywgJ3ByZWNpc2lvbicsICdyYXRpbmdMYWJlbCcsICdyZWFkb25seScsICdzaG93VmFsdWVMYWJlbCcsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2ZvY3VzUmF0aW5nJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1yYXRpbmcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlZmF1bHRWYWx1ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2VtcHR5SWNvbicsICdnZXRMYWJlbCcsICdob3ZlcicsICdpY29uJywgJ21heCcsICduYW1lJywgJ291dGxpbmVFbXB0eScsICdwcmVjaXNpb24nLCAncmF0aW5nTGFiZWwnLCAncmVhZG9ubHknLCAnc2hvd1ZhbHVlTGFiZWwnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFJhdGluZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSG92ZXInLCAnbWRDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRSYXRpbmcgZXh0ZW5kcyBDb21wb25lbnRzLk1kUmF0aW5nIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoaWxlIHRoZSB1c2VyIGlzIGhvdmVyaW5nIChvciBgbnVsbGAgd2hlbiB0aGUgY3Vyc29yIGxlYXZlcykuXG4gICAqL1xuICBtZEhvdmVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyIHwgbnVsbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHZhbHVlIGNoYW5nZXMgdmlhIGludGVyYWN0aW9uLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kUmlwcGxlLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnXSxcbiAgbWV0aG9kczogWyd3aGVuU2V0dGxlZCcsICd0cmlnZ2VyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1yaXBwbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRSaXBwbGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFJpcHBsZSBleHRlbmRzIENvbXBvbmVudHMuTWRSaXBwbGUge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU2VhcmNoLFxuICBpbnB1dHM6IFsnYW5ub3VuY2VSZXN1bHRzJywgJ2RlYm91bmNlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzbWlzc09uT3V0c2lkZUNsaWNrJywgJ2VsZXZhdGlvbicsICdlc2NhcGVDbG9zZXMnLCAnZnVsbFdpZHRoJywgJ2luaXRpYWxGb2N1cycsICdpbnB1dEFyaWFMYWJlbCcsICdsYXlvdXQnLCAnbGVhZGluZ0ljb24nLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbWF4QmxvY2tTaXplJywgJ25vUmVzdWx0c0xhYmVsJywgJ29wZW4nLCAnb3BlbkxlYWRpbmdJY29uJywgJ3BsYWNlaG9sZGVyJywgJ3Jlc3VsdHNMYWJlbCcsICdzY3JvbGxTaGFkb3cnLCAnc2hvd0NsZWFyQnV0dG9uJywgJ3Rocm90dGxlJywgJ3RyaWdnZXInLCAndHJpZ2dlckVsZW1lbnQnLCAndHJpZ2dlckZvcicsICd0cmlnZ2VySWNvbicsICd2YWx1ZScsICd2YXJpYW50JywgJ3ZvaWNlU2VhcmNoJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZScsICd3aGVuQ2xvc2VkJywgJ3RvZ2dsZScsICdmb2N1c0lucHV0JywgJ3N0YXJ0Vm9pY2UnLCAnc3RvcFZvaWNlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zZWFyY2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Fubm91bmNlUmVzdWx0cycsICdkZWJvdW5jZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Rpc21pc3NPbk91dHNpZGVDbGljaycsICdlbGV2YXRpb24nLCAnZXNjYXBlQ2xvc2VzJywgJ2Z1bGxXaWR0aCcsICdpbml0aWFsRm9jdXMnLCAnaW5wdXRBcmlhTGFiZWwnLCAnbGF5b3V0JywgJ2xlYWRpbmdJY29uJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ21heEJsb2NrU2l6ZScsICdub1Jlc3VsdHNMYWJlbCcsICdvcGVuJywgJ29wZW5MZWFkaW5nSWNvbicsICdwbGFjZWhvbGRlcicsICdyZXN1bHRzTGFiZWwnLCAnc2Nyb2xsU2hhZG93JywgJ3Nob3dDbGVhckJ1dHRvbicsICd0aHJvdHRsZScsICd0cmlnZ2VyJywgJ3RyaWdnZXJFbGVtZW50JywgJ3RyaWdnZXJGb3InLCAndHJpZ2dlckljb24nLCAndmFsdWUnLCAndmFyaWFudCcsICd2b2ljZVNlYXJjaCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VhcmNoIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJbnB1dCcsICdtZFNlYXJjaCcsICdtZFN1Ym1pdCcsICdtZENoYW5nZScsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZENsZWFyJywgJ21kVm9pY2UnLCAnbWRMZWFkaW5nSWNvbkNsaWNrJywgJ21kVHJhaWxpbmdJY29uQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kU2VhcmNoTGVhZGluZ0ljb25DbGlja0RldGFpbCBhcyBJTWRTZWFyY2hNZFNlYXJjaExlYWRpbmdJY29uQ2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgTWRTZWFyY2hUcmFpbGluZ0ljb25DbGlja0RldGFpbCBhcyBJTWRTZWFyY2hNZFNlYXJjaFRyYWlsaW5nSWNvbkNsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFNlYXJjaCBleHRlbmRzIENvbXBvbmVudHMuTWRTZWFyY2gge1xuICAvKipcbiAgICogRmlyZXMgb24gZXZlcnkgaW5wdXQgY2hhbmdlIChpbW1lZGlhdGUsIGV2ZXJ5IGtleXN0cm9rZSkuXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIERlYm91bmNlZCwgZGUtZHVwbGljYXRlZCBxdWVyeSBldmVudCDigJQgdGhlIG9uZSB0byB3aXJlIGFuIGFzeW5jIHJlc3VsdHNcbmZldGNoIHRvLiBIb25vdXJzIGBkZWJvdW5jZWAgLyBgdGhyb3R0bGVgIGFuZCBhcHBsaWVzIGFcbmRpc3RpbmN0LXVudGlsLWNoYW5nZWQgZ3VhcmQgb24gdGhlIHRyaW1tZWQgcXVlcnkgKHNvIHJlLXR5cGluZyB0aGUgc2FtZVxudGVybSwgb3Igb25seSBhZGRpbmcgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSwgd29uJ3QgcmUtdHJpZ2dlciBhIGZldGNoKS5cblByZXNzaW5nIEVudGVyIG9yIGNsZWFyaW5nIHRoZSBmaWVsZCBmbHVzaGVzIGl0IGltbWVkaWF0ZWx5LlxuICAgKi9cbiAgbWRTZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgdXNlciBwcmVzc2VzIEVudGVyIHRvIHN1Ym1pdCBhIHF1ZXJ5LlxuICAgKi9cbiAgbWRTdWJtaXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMgd2l0aCBhIGRpZmZlcmVudCB2YWx1ZSB0aGFuIG9uIGZvY3VzLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgcGFuZWwgb3BlbnMuXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBwYW5lbCBjbG9zZXMuXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGNsZWFyICjDlykgYnV0dG9uLlxuICAgKi9cbiAgbWRDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoaWxlIHZvaWNlIHNlYXJjaCBpcyBhY3RpdmUgYXMgdGhlIHRyYW5zY3JpcHQgc3RyZWFtcyBpbi4gYHZhbHVlYFxuaXMgdGhlIGN1cnJlbnQgKGludGVyaW0gb3IgZmluYWwpIHRyYW5zY3JpcHQ7IGBmaW5hbGAgaXMgYHRydWVgIG9uIHRoZVxucmVjb2duaXNlZCBmaW5hbCByZXN1bHQuIFRoZSBjb21wb25lbnQgYWxyZWFkeSBtaXJyb3JzIHRoZSB0cmFuc2NyaXB0IGludG9cbnRoZSBpbnB1dCBhbmQgZmlyZXMgYG1kSW5wdXRgIC8gYG1kU2VhcmNoYCwgc28gbGlzdGVuIHRvIHRoaXMgb25seSBpZiB5b3Vcbm5lZWQgdm9pY2Utc3BlY2lmaWMgVUkgKGUuZy4gYSB0cmFuc2NyaXB0IHByZXZpZXcpLlxuICAgKi9cbiAgbWRWb2ljZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgZmluYWw6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgaW50ZXJhY3RpdmUgbGVhZGluZyBhZmZvcmRhbmNlIGlzIGNsaWNrZWQg4oCUIHRoZSBtb3JwaGluZ1xuYmFjayAvIGRpc21pc3MgYnV0dG9uIHdoaWxlIHRoZSBiYXIgaXMgb3Blbiwgb3IgYSBjdXN0b20gc2xvdHRlZCBgbGVhZGluZ2Bcbmljb24uIFRoZSBkZWZhdWx0IGJhY2sgYnV0dG9uIHN0aWxsIGRpc21pc3NlcyB0aGUgcGFuZWwgYXMgYmVmb3JlOyB0aGlzXG5ldmVudCBpcyBhZGRpdGl2ZS4gVGhlIGNsb3NlZCByZXN0aW5nIHNlYXJjaCBnbHlwaCBpcyBpbnRlbnRpb25hbGx5IE5PVCBhXG5jbGljayB0YXJnZXQgKGEgY2xpY2sgdGhlcmUgZm9jdXNlcyB0aGUgaW5wdXQpLCBzbyBpdCBkb2VzIG5vdCBlbWl0LlxuICAgKi9cbiAgbWRMZWFkaW5nSWNvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2VhcmNoTWRTZWFyY2hMZWFkaW5nSWNvbkNsaWNrRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgc2xvdHRlZCBgdHJhaWxpbmdgIGFmZm9yZGFuY2UgaXMgY2xpY2tlZC4gVGhlIGJ1aWx0LWluIGNsZWFyXG4ow5cpIGFuZCB2b2ljZSAobWljKSBidXR0b25zIG93biB0aGVpciBkZWRpY2F0ZWQgYG1kQ2xlYXJgIC8gYG1kVm9pY2VgXG5ldmVudHMgYW5kIGRvIE5PVCB0cmlnZ2VyIHRoaXMuIE9ubHkgZW1pdHRlZCB3aGVuIHNsb3R0ZWQgdHJhaWxpbmcgY29udGVudFxuaXMgYWN0dWFsbHkgcHJlc2VudCBhbmQgd2FzIHRoZSBjbGljayB0YXJnZXQuXG4gICAqL1xuICBtZFRyYWlsaW5nSWNvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2VhcmNoTWRTZWFyY2hUcmFpbGluZ0ljb25DbGlja0RldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRTZWdtZW50ZWRCdXR0b24sXG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnbGFiZWwnLCAnbm9DaGVja21hcmsnLCAncmlwcGxlJywgJ3NlZ21lbnREZW5zaXR5JywgJ3NlZ21lbnRJbmRleCcsICdzZWdtZW50TXVsdGlzZWxlY3QnLCAnc2VnbWVudFRvdGFsJywgJ3NlbGVjdGVkJywgJ3NvZnREaXNhYmxlZCcsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2VnbWVudGVkLWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29uJywgJ2xhYmVsJywgJ25vQ2hlY2ttYXJrJywgJ3JpcHBsZScsICdzZWdtZW50RGVuc2l0eScsICdzZWdtZW50SW5kZXgnLCAnc2VnbWVudE11bHRpc2VsZWN0JywgJ3NlZ21lbnRUb3RhbCcsICdzZWxlY3RlZCcsICdzb2Z0RGlzYWJsZWQnLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFNlZ21lbnRlZEJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU2VnbWVudENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU2VnbWVudGVkQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNlZ21lbnRlZEJ1dHRvbiB7XG4gIC8qKlxuICAgKiBJbnRlcm5hbCBldmVudCDigJQgY2F1Z2h0IGJ5IHRoZSBzZXRcbiAgICovXG4gIG1kU2VnbWVudENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFNlZ21lbnRlZEJ1dHRvblNldCxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbXVsdGlzZWxlY3QnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlZ21lbnRlZC1idXR0b24tc2V0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ211bHRpc2VsZWN0J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTZWdtZW50ZWRCdXR0b25TZXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFNlZ21lbnRlZEJ1dHRvblNldCBleHRlbmRzIENvbXBvbmVudHMuTWRTZWdtZW50ZWRCdXR0b25TZXQge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgc2V0IG9mIHNlbGVjdGVkIHNlZ21lbnQgdmFsdWVzIGNoYW5nZXNcbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nW10+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU2VsZWN0LFxuICBpbnB1dHM6IFsnY2xlYXJJY29uJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJMYWJlbCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmFibGUnLCAnZnVsbFdpZHRoJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoaW5nTGFiZWwnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZScsICdmb2N1c1RyaWdnZXInLCAncmVzZXQnLCAnbG9hZE9wdGlvbnMnLCAnc2V0UXVlcnknLCAnZ2V0TGFiZWxzJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2xlYXJJY29uJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJMYWJlbCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmFibGUnLCAnZnVsbFdpZHRoJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoaW5nTGFiZWwnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTZWxlY3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENoYW5nZScsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU2VsZWN0IGV4dGVuZHMgQ29tcG9uZW50cy5NZFNlbGVjdCB7XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgbmV3bHkgc2VsZWN0ZWQgdmFsdWUgd2hlbmV2ZXIgdGhlIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGRyb3Bkb3duIG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgZHJvcGRvd24gY2xvc2VzLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRTZWxlY3RPcHRpb24sXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpY29uJywgJ2ljb25Db2xvcicsICdsYWJlbCcsICdzZWxlY3RlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2VsZWN0LW9wdGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uQ29sb3InLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFNlbGVjdE9wdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU2VsZWN0T3B0aW9uQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU2VsZWN0T3B0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNlbGVjdE9wdGlvbiB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBvcHRpb24gbW91bnRzLCB1bm1vdW50cywgb3IgaXRzIGRhdGEgY2hhbmdlcyBzbyB0aGVcbnBhcmVudCBwaWNrZXIgY2FuIHJlLXJlYWQgaXRzIG9wdGlvbiBzZXQuXG4gICAqL1xuICBtZFNlbGVjdE9wdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU2lkZVNoZWV0LFxuICBpbnB1dHM6IFsnYm90dG9tRGl2aWRlcicsICdjbG9zZWFibGUnLCAnZGVuc2l0eScsICdkZXRhY2hlZCcsICdoZWFkbGluZScsICdvcGVuJywgJ3NjcmltRGlzbWlzc2libGUnLCAnc2hlZXRBcmlhTGFiZWwnLCAnc2hvd0JhY2snLCAnc2lkZScsICd0b3BEaXZpZGVyJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ3doZW5DbG9zZWQnLCAnY2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNpZGUtc2hlZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvdHRvbURpdmlkZXInLCAnY2xvc2VhYmxlJywgJ2RlbnNpdHknLCAnZGV0YWNoZWQnLCAnaGVhZGxpbmUnLCAnb3BlbicsICdzY3JpbURpc21pc3NpYmxlJywgJ3NoZWV0QXJpYUxhYmVsJywgJ3Nob3dCYWNrJywgJ3NpZGUnLCAndG9wRGl2aWRlcicsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTaWRlU2hlZXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCcsICdtZEJhY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTaWRlU2hlZXQgZXh0ZW5kcyBDb21wb25lbnRzLk1kU2lkZVNoZWV0IHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHNoZWV0IG9wZW5zXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzaGVldCBjbG9zZXNcbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGRpc21pc3NlZCB2aWEgc2NyaW0gY2xpY2sgb3IgRXNjYXBlXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGJhY2sgYnV0dG9uIGlzIHByZXNzZWQgKG1vZGFsIG9ubHkpXG4gICAqL1xuICBtZEJhY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFNrZWxldG9uLFxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2Fubm91bmNlJywgJ2FyaWFMYWJlbFByb3AnLCAnZGVuc2l0eScsICdmdWxsSGVpZ2h0JywgJ2Z1bGxXaWR0aCcsICdoZWlnaHQnLCAnbGluZXMnLCAndmFyaWFudCcsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2tlbGV0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdhbm5vdW5jZScsICdhcmlhTGFiZWxQcm9wJywgJ2RlbnNpdHknLCAnZnVsbEhlaWdodCcsICdmdWxsV2lkdGgnLCAnaGVpZ2h0JywgJ2xpbmVzJywgJ3ZhcmlhbnQnLCAnd2lkdGgnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFNrZWxldG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTa2VsZXRvbiBleHRlbmRzIENvbXBvbmVudHMuTWRTa2VsZXRvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRTbGlkZXIsXG4gIGlucHV0czogWydhcmlhTGFiZWxFbmQnLCAnYXJpYUxhYmVsU3RhcnQnLCAnY29udHJvbGxlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Z1bGxIZWlnaHQnLCAnaWNvbicsICdpbnNldEljb24nLCAnbGFiZWxlZCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmFtZUVuZCcsICduYW1lU3RhcnQnLCAnb3JpZW50YXRpb24nLCAncmFuZ2UnLCAnc2l6ZScsICdzbGlkZXJBcmlhTGFiZWwnLCAnc3RlcCcsICdzdG9wcycsICd2YWx1ZScsICd2YWx1ZUVuZCcsICd2YWx1ZUVuZFRleHQnLCAndmFsdWVJbmRpY2F0b3InLCAndmFsdWVTdGFydCcsICd2YWx1ZVN0YXJ0VGV4dCcsICd2YWx1ZVRleHQnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2xpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcmlhTGFiZWxFbmQnLCAnYXJpYUxhYmVsU3RhcnQnLCAnY29udHJvbGxlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Z1bGxIZWlnaHQnLCAnaWNvbicsICdpbnNldEljb24nLCAnbGFiZWxlZCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmFtZUVuZCcsICduYW1lU3RhcnQnLCAnb3JpZW50YXRpb24nLCAncmFuZ2UnLCAnc2l6ZScsICdzbGlkZXJBcmlhTGFiZWwnLCAnc3RlcCcsICdzdG9wcycsICd2YWx1ZScsICd2YWx1ZUVuZCcsICd2YWx1ZUVuZFRleHQnLCAndmFsdWVJbmRpY2F0b3InLCAndmFsdWVTdGFydCcsICd2YWx1ZVN0YXJ0VGV4dCcsICd2YWx1ZVRleHQnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kU2xpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJbnB1dCcsICdtZENoYW5nZScsICdtZEZvY3VzJywgJ21kQmx1cicsICdtZERyYWdTdGFydCcsICdtZERyYWdFbmQnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kU2xpZGVyVmFsdWVEZXRhaWwgYXMgSU1kU2xpZGVyTWRTbGlkZXJWYWx1ZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZFNsaWRlclRodW1iRGV0YWlsIGFzIElNZFNsaWRlck1kU2xpZGVyVGh1bWJEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgTWRTbGlkZXJEcmFnRGV0YWlsIGFzIElNZFNsaWRlck1kU2xpZGVyRHJhZ0RldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTbGlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kU2xpZGVyIHtcbiAgLyoqXG4gICAqIEZpcmVzIGNvbnRpbnVvdXNseSB3aGlsZSB0aGUgdXNlciBkcmFncyBvciBwcmVzc2VzIGFycm93IGtleXMuXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJWYWx1ZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgb25jZSB3aGVuIHRoZSB1c2VyIGNvbW1pdHMgYSB2YWx1ZSAocG9pbnRlciB1cCwga2V5Ym9hcmQgcmVsZWFzZSwgY2hhbmdlIGV2ZW50KS5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJWYWx1ZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHNsaWRlciB0aHVtYiByZWNlaXZlcyBmb2N1cy5cbiAgICovXG4gIG1kRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRTbGlkZXJNZFNsaWRlclRodW1iRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgc2xpZGVyIHRodW1iIGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgbWRCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJUaHVtYkRldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIGRyYWcva2V5Ym9hcmQgaW50ZXJhY3Rpb24gYmVnaW5zLlxuICAgKi9cbiAgbWREcmFnU3RhcnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRTbGlkZXJNZFNsaWRlckRyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBkcmFnL2tleWJvYXJkIGludGVyYWN0aW9uIGVuZHMuXG4gICAqL1xuICBtZERyYWdFbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRTbGlkZXJNZFNsaWRlckRyYWdEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU25hY2tiYXIsXG4gIGlucHV0czogWydhY3Rpb24nLCAnYXV0b0hpZGUnLCAnYXV0b0hpZGVEdXJhdGlvbicsICdjbG9zZWFibGUnLCAnZGVuc2l0eScsICdkaXNtaXNzTGFiZWwnLCAnbWVzc2FnZScsICdvcGVuJywgJ3BvbGl0ZW5lc3MnLCAncG9zaXRpb24nLCAnc3RhY2tlZCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnaGlkZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc25hY2tiYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGlvbicsICdhdXRvSGlkZScsICdhdXRvSGlkZUR1cmF0aW9uJywgJ2Nsb3NlYWJsZScsICdkZW5zaXR5JywgJ2Rpc21pc3NMYWJlbCcsICdtZXNzYWdlJywgJ29wZW4nLCAncG9saXRlbmVzcycsICdwb3NpdGlvbicsICdzdGFja2VkJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTbmFja2JhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kT3BlbicsICdtZENsb3NlJywgJ21kQWN0aW9uJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU25hY2tiYXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kU25hY2tiYXIge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc25hY2tiYXIgYmVjb21lcyB2aXNpYmxlXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzbmFja2JhciBpcyBkaXNtaXNzZWQsIHdpdGggcmVhc29uXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyByZWFzb246ICdhdXRvJyB8ICdhY3Rpb24nIHwgJ2Nsb3NlJyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBhY3Rpb24gYnV0dG9uIGlzIGNsaWNrZWRcbiAgICovXG4gIG1kQWN0aW9uOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRTcGFya2xpbmUsXG4gIGlucHV0czogWydiYXJXaWR0aCcsICdjb2xvcicsICdjb3JuZXJSYWRpdXMnLCAnY3VydmUnLCAnZGF0YScsICdoZWlnaHRQcm9wJywgJ2xhYmVscycsICdsaW5lV2lkdGgnLCAnbWFya1NpemUnLCAnbWF4JywgJ21pbicsICdub0FuaW1hdGlvbicsICdyZWZlcmVuY2VBcmVhcycsICdzaG93TWFya3MnLCAnc2hvd1Rvb2x0aXAnLCAndmFsdWVGb3JtYXR0ZXInLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3JlZnJlc2hUaGVtZScsICdyZXNpemUnLCAnZ2V0SW5zdGFuY2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNwYXJrbGluZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFyV2lkdGgnLCAnY29sb3InLCAnY29ybmVyUmFkaXVzJywgJ2N1cnZlJywgJ2RhdGEnLCAnaGVpZ2h0UHJvcCcsICdsYWJlbHMnLCAnbGluZVdpZHRoJywgJ21hcmtTaXplJywgJ21heCcsICdtaW4nLCAnbm9BbmltYXRpb24nLCAncmVmZXJlbmNlQXJlYXMnLCAnc2hvd01hcmtzJywgJ3Nob3dUb29sdGlwJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFNwYXJrbGluZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU3BhcmtDbGljaycsICdtZFJlYWR5J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3BhcmtsaW5lIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNwYXJrbGluZSB7XG5cbiAgbWRTcGFya0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBkYXRhSW5kZXg6IG51bWJlcjsgdmFsdWU6IG51bWJlciB8IG51bGwgfT4+O1xuXG4gIG1kUmVhZHk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFNwbGl0QnV0dG9uLFxuICBpbnB1dHM6IFsnY29udHJvbHMnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAnaGFzcG9wdXAnLCAnaWNvbicsICdsYWJlbCcsICdtZW51TGFiZWwnLCAncmlwcGxlJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3RyYWlsaW5nQ2hlY2tlZCcsICd0cmFpbGluZ0ljb24nLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3BsaXQtYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb250cm9scycsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Z1bGxXaWR0aCcsICdoYXNwb3B1cCcsICdpY29uJywgJ2xhYmVsJywgJ21lbnVMYWJlbCcsICdyaXBwbGUnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAndHJhaWxpbmdDaGVja2VkJywgJ3RyYWlsaW5nSWNvbicsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTcGxpdEJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kTGVhZGluZ0NsaWNrJywgJ21kVHJhaWxpbmdDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFNwbGl0QnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNwbGl0QnV0dG9uIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIGxlYWRpbmcgYnV0dG9uIGlzIGFjdGl2YXRlZFxuICAgKi9cbiAgbWRMZWFkaW5nQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB0cmFpbGluZyBidXR0b24gaXMgdG9nZ2xlZFxuICAgKi9cbiAgbWRUcmFpbGluZ0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjaGVja2VkOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU3RhdHVzRG90LFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdpbmxpbmUnLCAnbGFiZWwnLCAnbGl2ZScsICdzaGFwZScsICdzaXplJywgJ3N0YXRlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zdGF0dXMtZG90JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2lubGluZScsICdsYWJlbCcsICdsaXZlJywgJ3NoYXBlJywgJ3NpemUnLCAnc3RhdGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFN0YXR1c0RvdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3RhdHVzRG90IGV4dGVuZHMgQ29tcG9uZW50cy5NZFN0YXR1c0RvdCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRTdGVwLFxuICBpbnB1dHM6IFsnYWNjZXNzaWJsZU5hbWUnLCAnYWN0aXZlJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWRJY29uJywgJ2RlbnNpdHknLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZWRpdGFibGUnLCAnZXJyb3InLCAnZXJyb3JJY29uJywgJ2Vycm9yVGV4dCcsICdoaWRlQWN0aW9ucycsICdpY29uJywgJ2xhYmVsJywgJ29wdGlvbmFsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zdGVwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY2Nlc3NpYmxlTmFtZScsICdhY3RpdmUnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZEljb24nLCAnZGVuc2l0eScsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlZGl0YWJsZScsICdlcnJvcicsICdlcnJvckljb24nLCAnZXJyb3JUZXh0JywgJ2hpZGVBY3Rpb25zJywgJ2ljb24nLCAnbGFiZWwnLCAnb3B0aW9uYWwnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFN0ZXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFN0ZXBDbGljaycsICdtZFN0ZXBOZXh0JywgJ21kU3RlcEJhY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTdGVwIGV4dGVuZHMgQ29tcG9uZW50cy5NZFN0ZXAge1xuICAvKipcbiAgICogQnViYmxlZCB0byB0aGUgcGFyZW50IHN0ZXBwZXIsIHdoaWNoIGRlY2lkZXMgd2hldGhlciB0aGUgbW92ZSBpcyBhbGxvd2VkLlxuSW50ZXJuYWwgY29vcmRpbmF0aW9uIGV2ZW50IOKAlCBjb25zdW1lZCAoYW5kIHN0b3BwZWQpIGJ5IGBtZC1zdGVwcGVyYC5cbiAgICovXG4gIG1kU3RlcENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyIH0+PjtcbiAgLyoqXG4gICAqIENvbnRpbnVlIHByZXNzZWQgaW4gdGhpcyBzdGVwJ3MgY29udGVudCBwYW5lbC4gQ29uc3VtZWQgYnkgYG1kLXN0ZXBwZXJgLlxuICAgKi9cbiAgbWRTdGVwTmV4dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBCYWNrIHByZXNzZWQgaW4gdGhpcyBzdGVwJ3MgY29udGVudCBwYW5lbC4gQ29uc3VtZWQgYnkgYG1kLXN0ZXBwZXJgLlxuICAgKi9cbiAgbWRTdGVwQmFjazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlciB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFN0ZXBwZXIsXG4gIGlucHV0czogWydhY3RpdmUnLCAnYXV0b0NvbXBsZXRlJywgJ2JhY2tMYWJlbCcsICdjb21wbGV0ZWRXb3JkJywgJ2N1cnJlbnRXb3JkJywgJ2RlbnNpdHknLCAnZXJyb3JXb3JkJywgJ2ZpbmlzaExhYmVsJywgJ2luZGljYXRvcicsICdsYWJlbCcsICdsYXp5JywgJ2xvYWRpbmcnLCAnbW9kZScsICduYXYnLCAnbmV4dERpc2FibGVkJywgJ25leHRMYWJlbCcsICdvZldvcmQnLCAnb3B0aW9uYWxXb3JkJywgJ29yaWVudGF0aW9uJywgJ3JlYWRvbmx5JywgJ3N0ZXBXb3JkJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWyduZXh0JywgJ3ByZXYnLCAnZ29UbycsICdyZXNldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3RlcHBlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2F1dG9Db21wbGV0ZScsICdiYWNrTGFiZWwnLCAnY29tcGxldGVkV29yZCcsICdjdXJyZW50V29yZCcsICdkZW5zaXR5JywgJ2Vycm9yV29yZCcsICdmaW5pc2hMYWJlbCcsICdpbmRpY2F0b3InLCAnbGFiZWwnLCAnbGF6eScsICdsb2FkaW5nJywgJ21vZGUnLCAnbmF2JywgJ25leHREaXNhYmxlZCcsICduZXh0TGFiZWwnLCAnb2ZXb3JkJywgJ29wdGlvbmFsV29yZCcsICdvcmllbnRhdGlvbicsICdyZWFkb25seScsICdzdGVwV29yZCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTdGVwcGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRCZWZvcmVDaGFuZ2UnLCAnbWRTdGVwQ2hhbmdlJywgJ21kQ29tcGxldGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTdGVwcGVyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFN0ZXBwZXIge1xuICAvKipcbiAgICogRmlyZXMgQkVGT1JFIGEgdXNlci1kcml2ZW4gc3RlcCBjaGFuZ2UgY29tbWl0cyAoc3RlcCBjbGljaywgYnVpbHQtaW4gbmF2LCBvclxuYG5leHQoKWAvYHByZXYoKWAvYGdvVG8oKWApLiBDYW5jZWxhYmxlOiBjYWxsIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCB0b1xudmV0byB0aGUgdHJhbnNpdGlvbiAoZS5nLiBibG9jayBDb250aW51ZSB1bnRpbCB0aGUgY3VycmVudCBzdGVwIHZhbGlkYXRlcykuXG5gZGV0YWlsLmluZGV4YCBpcyB0aGUgcmVxdWVzdGVkIHN0ZXAsIGBkZXRhaWwucHJldmlvdXNgIHRoZSBjdXJyZW50IG9uZS5cbkRvZXMgbm90IGZpcmUgZm9yIGEgZGlyZWN0IGBhY3RpdmVgIHByb3BlcnR5IGFzc2lnbm1lbnQg4oCUIHNldCBgYWN0aXZlYFxueW91cnNlbGYgdG8gY29tbWl0IGF1dGhvcml0YXRpdmVseSAoZS5nLiBhZnRlciBhc3luYyB2YWxpZGF0aW9uKS5cbiAgICovXG4gIG1kQmVmb3JlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBwcmV2aW91czogbnVtYmVyIH0+PjtcbiAgLyoqXG4gICAqIEFjdGl2ZSBzdGVwIGNoYW5nZWQgKGFmdGVyIGl0IGNvbW1pdHMpLlxuICAgKi9cbiAgbWRTdGVwQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBwcmV2aW91czogbnVtYmVyIH0+PjtcbiAgLyoqXG4gICAqIENvbnRpbnVlIHByZXNzZWQgb24gdGhlIGxhc3Qgc3RlcCAodGhlIGZsb3cgaXMgZmluaXNoZWQpLlxuICAgKi9cbiAgbWRDb21wbGV0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU3ViTWVudUl0ZW0sXG4gIGlucHV0czogWydiYWRnZScsICdjbG9zZURlbGF5JywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGl2aWRlcicsICdnYXAnLCAnaGVhZGxpbmUnLCAnb3BlbkRlbGF5JywgJ3N1cHBvcnRpbmdUZXh0J10sXG4gIG1ldGhvZHM6IFsnY29sbGFwc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXN1Yi1tZW51LWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JhZGdlJywgJ2Nsb3NlRGVsYXknLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkaXZpZGVyJywgJ2dhcCcsICdoZWFkbGluZScsICdvcGVuRGVsYXknLCAnc3VwcG9ydGluZ1RleHQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFN1Yk1lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFN1Yk1lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZFN1Yk1lbnVJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGl0ZW0gcm93IGl0c2VsZiBpcyBjbGlja2VkIChub3QgdGhlIHN1Ym1lbnUpLlxuICAgKi9cbiAgbWRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU3dpdGNoLFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29ucycsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NlbGVjdGVkJywgJ3NlbGVjdGVkSWNvbicsICdzaG93T25seVNlbGVjdGVkSWNvbicsICdzb2Z0RGlzYWJsZWQnLCAndW5zZWxlY3RlZEljb24nLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbiAgbWV0aG9kczogWydzZXRGb2N1cycsICdnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zd2l0Y2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbnMnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzZWxlY3RlZCcsICdzZWxlY3RlZEljb24nLCAnc2hvd09ubHlTZWxlY3RlZEljb24nLCAnc29mdERpc2FibGVkJywgJ3Vuc2VsZWN0ZWRJY29uJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTd2l0Y2gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZElucHV0JywgJ21kQ2hhbmdlJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTd2l0Y2ggZXh0ZW5kcyBDb21wb25lbnRzLk1kU3dpdGNoIHtcbiAgLyoqXG4gICAqIEZpcmVzICoqYmVmb3JlKiogdGhlIHN0YXRlIGNoYW5nZXMuIENhbGwgYGV2ZW50LnByZXZlbnREZWZhdWx0KClgIHRvXG5ibG9jayB0aGUgaW50ZXJuYWwgdG9nZ2xlIGFuZCBtYW5hZ2Ugc3RhdGUgZXh0ZXJuYWxseSAoY29udHJvbGxlZCBtb2RlKS5cblxuYGBgdHNcbnN3aXRjaC5hZGRFdmVudExpc3RlbmVyKCdtZElucHV0JywgKGUpID0+IHtcbiAgZS5wcmV2ZW50RGVmYXVsdCgpOyAgICAgICAgICAvLyBwcmV2ZW50IGludGVybmFsIHRvZ2dsZVxuICBteVN0YXRlLnZhbHVlID0gZS5kZXRhaWwuc2VsZWN0ZWQ7IC8vIHVwZGF0ZSB5b3VyIG93biBzdGF0ZVxufSk7XG5gYGBcbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzICoqYWZ0ZXIqKiB0aGUgaW50ZXJuYWwgc3RhdGUgaGFzIGNvbW1pdHRlZC4gVXNlIGZvciBzaWRlIGVmZmVjdHNcbmxpa2Ugc2F2aW5nIHByZWZlcmVuY2VzLCBhbmFseXRpY3MsIG9yIHN5bmNpbmcgd2l0aCBvdGhlciBjb21wb25lbnRzLlxuTm90IGNhbmNlbGFibGUg4oCUIHRoZSB0b2dnbGUgaGFzIGFscmVhZHkgaGFwcGVuZWQuXG5cbmBgYHRzXG5zd2l0Y2guYWRkRXZlbnRMaXN0ZW5lcignbWRDaGFuZ2UnLCAoZSkgPT4ge1xuICBjb25zb2xlLmxvZygnU3dpdGNoIGlzIG5vdycsIGUuZGV0YWlsLnNlbGVjdGVkID8gJ09OJyA6ICdPRkYnKTtcbn0pO1xuYGBgXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGxpa2UgbWQtc2VsZWN0IGVtYmVkIGFuXG5tZC10ZXh0LWZpZWxkLCBhbmQgYSBjb21wb3NlZCBldmVudCBlc2NhcGVzIHRoYXQgaW5uZXIgc2hhZG93IHJvb3QsIHNvIGFcbmxpc3RlbmVyIG9uIG1kLXNlbGVjdCB3b3VsZCByZWNlaXZlIHRoZSBpbm5lciBmaWVsZCdzIGV2ZW50IGFzIHdlbGwgYXMgdGhlXG5ob3N0J3Mg4oCUIHR3byBldmVudHMsIGRpZmZlcmVudCBwYXlsb2FkcywgZm9yIG9uZSBsb2dpY2FsIGNvbnRyb2wuIEtlZXBpbmdcbml0IHVuY29tcG9zZWQgbWVhbnMgZWFjaCBjb21wb25lbnQgcmVwb3J0cyBvbmx5IGZvciBpdHNlbGYsIHdoaWxlXG5gYnViYmxlczogdHJ1ZWAgc3RpbGwgbGV0cyBhIDxmb3JtPiBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFRhYixcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdiYWRnZScsICdjb250cm9scycsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaW5saW5lSWNvbicsICdsYWJlbCcsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdiYWRnZScsICdjb250cm9scycsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaW5saW5lSWNvbicsICdsYWJlbCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFiIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYiB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSB0YWIgaXMgYWN0aXZhdGVkIGJ5IGNsaWNrIG9yIGtleWJvYXJkXG4gICAqL1xuICBtZFRhYkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUYWJQYW5lbCxcbiAgaW5wdXRzOiBbJ2FjdGl2ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFiLXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYlBhbmVsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJQYW5lbCBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJQYW5lbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUYWJQYW5lbHMsXG4gIGlucHV0czogWydmb3InLCAnc2l6aW5nJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWItcGFuZWxzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydmb3InLCAnc2l6aW5nJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJQYW5lbHMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYlBhbmVscyBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJQYW5lbHMge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGUsXG4gIGlucHV0czogWydjYXB0aW9uJywgJ2NvbHVtblRlbXBsYXRlJywgJ2NvbHVtbnMnLCAnZGVuc2l0eScsICdlbXB0eScsICdmcm96ZW5IZWFkZXInLCAnaG92ZXJhYmxlJywgJ2tlZXBIZWlnaHQnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nTW9kZScsICdsb2FkaW5nUm93cycsICdtaW5XaWR0aCcsICdtb3Rpb24nLCAnbm9EaXZpZGVycycsICdwaW5JY29uJywgJ3Bpbk1vZGUnLCAncm93Q291bnQnLCAncm93T2Zmc2V0JywgJ3Njcm9sbGJhcicsICdzZWxlY3Rpb24nLCAnc29ydEJ5JywgJ3NvcnRPcmRlcicsICdzdGlja3lGb290ZXInLCAnc3RpY2t5SGVhZGVyJywgJ3N0cmlwZWQnLCAnc3VtbWFyeSddLFxuICBtZXRob2RzOiBbJ2dldFNlbGVjdGlvbicsICdzZWxlY3RBbGwnLCAnZGVzZWxlY3RBbGwnLCAndG9nZ2xlU2VsZWN0QWxsJywgJ3NldFNvcnQnLCAncGluQ29sdW1uJywgJ3NldENvbHVtblZpc2liaWxpdHknLCAnYW5pbWF0ZU5leHRDaGFuZ2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjYXB0aW9uJywgJ2NvbHVtblRlbXBsYXRlJywgJ2NvbHVtbnMnLCAnZGVuc2l0eScsICdlbXB0eScsICdmcm96ZW5IZWFkZXInLCAnaG92ZXJhYmxlJywgJ2tlZXBIZWlnaHQnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nTW9kZScsICdsb2FkaW5nUm93cycsICdtaW5XaWR0aCcsICdtb3Rpb24nLCAnbm9EaXZpZGVycycsICdwaW5JY29uJywgJ3Bpbk1vZGUnLCAncm93Q291bnQnLCAncm93T2Zmc2V0JywgJ3Njcm9sbGJhcicsICdzZWxlY3Rpb24nLCAnc29ydEJ5JywgJ3NvcnRPcmRlcicsICdzdGlja3lGb290ZXInLCAnc3RpY2t5SGVhZGVyJywgJ3N0cmlwZWQnLCAnc3VtbWFyeSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kVGFibGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNvcnRDaGFuZ2UnLCAnbWRTZWxlY3Rpb25DaGFuZ2UnLCAnbWRQaW5DaGFuZ2UnLCAnbWRDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlJywgJ21kU2Nyb2xsJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZFRhYmxlU29ydFN0YXRlIGFzIElNZFRhYmxlTWRUYWJsZVNvcnRTdGF0ZSB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZFRhYmxlU2VsZWN0aW9uU3RhdGUgYXMgSU1kVGFibGVNZFRhYmxlU2VsZWN0aW9uU3RhdGUgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGUgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGUge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHNvcnQgY2hhbmdlcyAoYWZ0ZXIgYSBgbWQtdGFibGUtc29ydC1sYWJlbGAgaXMgY2xpY2tlZCkuXG4gICAqL1xuICBtZFNvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRUYWJsZU1kVGFibGVTb3J0U3RhdGU+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbmV2ZXIgdGhlIHJvdyBzZWxlY3Rpb24gc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIG1kU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kVGFibGVNZFRhYmxlU2VsZWN0aW9uU3RhdGU+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBjb2x1bW4gaXMgcGlubmVkL3VucGlubmVkIHZpYSBgcGluQ29sdW1uYC5cbiAgICovXG4gIG1kUGluQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjb2x1bW46IG51bWJlcjsgc2lkZTogJ3N0YXJ0JyB8ICdlbmQnIHwgbnVsbCB9Pj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgY29sdW1uIGlzIGhpZGRlbi9zaG93biB2aWEgYHNldENvbHVtblZpc2liaWxpdHlgLlxuICAgKi9cbiAgbWRDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjb2x1bW46IG51bWJlcjsgdmlzaWJsZTogYm9vbGVhbjsgaGlkZGVuOiBudW1iZXJbXSB9Pj47XG4gIC8qKlxuICAgKiByQUYtdGhyb3R0bGVkIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgZnJvemVuIGJvZHkgc2Nyb2xsZXIuXG4gICAqL1xuICBtZFNjcm9sbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc2Nyb2xsTGVmdDogbnVtYmVyOyBzY3JvbGxUb3A6IG51bWJlciB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFRhYmxlQm9keVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWJvZHknLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlQm9keSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVCb2R5IGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlQm9keSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUYWJsZUNlbGwsXG4gIGlucHV0czogWydhbGlnbicsICdjb2xTcGFuJywgJ2RlbnNpdHknLCAnZWxsaXBzaXMnLCAnaGVhZCcsICdub1BpbkluZGljYXRvcicsICdudW1lcmljJywgJ3BhZGRpbmcnLCAncGluSWNvbicsICdyb3dTcGFuJywgJ3Njb3BlJywgJ3N0aWNreScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWJsZS1jZWxsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbGlnbicsICdjb2xTcGFuJywgJ2RlbnNpdHknLCAnZWxsaXBzaXMnLCAnaGVhZCcsICdub1BpbkluZGljYXRvcicsICdudW1lcmljJywgJ3BhZGRpbmcnLCAncGluSWNvbicsICdyb3dTcGFuJywgJ3Njb3BlJywgJ3N0aWNreScsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUNlbGwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlQ2VsbCBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZUNlbGwge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVDb250YWluZXIsXG4gIGlucHV0czogWydlbGV2YXRpb24nLCAnbWF4SGVpZ2h0JywgJ21pbkhlaWdodCcsICdzaGFwZScsICd2YXJpYW50JywgJ3ZpYnJhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWNvbnRhaW5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZWxldmF0aW9uJywgJ21heEhlaWdodCcsICdtaW5IZWlnaHQnLCAnc2hhcGUnLCAndmFyaWFudCcsICd2aWJyYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUNvbnRhaW5lciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVDb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVDb250YWluZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVFeHBhbmRUb2dnbGUsXG4gIGlucHV0czogWydidXR0b25MYWJlbCcsICdpY29uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWJsZS1leHBhbmQtdG9nZ2xlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydidXR0b25MYWJlbCcsICdpY29uJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUV4cGFuZFRvZ2dsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVFeHBhbmRUb2dnbGUgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVFeHBhbmRUb2dnbGUge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVGb290XG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtZm9vdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFtdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kVGFibGVGb290IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJsZUZvb3QgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVGb290IHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFRhYmxlSGVhZFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWhlYWQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlSGVhZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVIZWFkIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlSGVhZCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUYWJsZVBhZ2luYXRpb24sXG4gIGlucHV0czogWydjb21wYWN0JywgJ2NvdW50JywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnbGFiZWxBbGwnLCAnbGFiZWxEaXNwbGF5ZWRSb3dzJywgJ2xhYmVsRmlyc3RQYWdlJywgJ2xhYmVsTGFzdFBhZ2UnLCAnbGFiZWxOZXh0UGFnZScsICdsYWJlbFByZXZpb3VzUGFnZScsICdsYWJlbFJvd3NQZXJQYWdlJywgJ3BhZ2UnLCAncm93c1BlclBhZ2UnLCAncm93c1BlclBhZ2VPcHRpb25zJywgJ3Nob3dGaXJzdExhc3QnXSxcbiAgbWV0aG9kczogWydnb1RvUGFnZScsICdzZXRSb3dzUGVyUGFnZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtcGFnaW5hdGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29tcGFjdCcsICdjb3VudCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2xhYmVsQWxsJywgJ2xhYmVsRGlzcGxheWVkUm93cycsICdsYWJlbEZpcnN0UGFnZScsICdsYWJlbExhc3RQYWdlJywgJ2xhYmVsTmV4dFBhZ2UnLCAnbGFiZWxQcmV2aW91c1BhZ2UnLCAnbGFiZWxSb3dzUGVyUGFnZScsICdwYWdlJywgJ3Jvd3NQZXJQYWdlJywgJ3Jvd3NQZXJQYWdlT3B0aW9ucycsICdzaG93Rmlyc3RMYXN0J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZVBhZ2luYXRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFBhZ2VDaGFuZ2UnLCAnbWRSb3dzUGVyUGFnZUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlUGFnaW5hdGlvbiBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZVBhZ2luYXRpb24ge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBwYWdlLlxuICAgKi9cbiAgbWRQYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBwYWdlOiBudW1iZXIgfT4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIHJvd3MtcGVyLXBhZ2UuXG4gICAqL1xuICBtZFJvd3NQZXJQYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyByb3dzUGVyUGFnZTogbnVtYmVyIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVSb3csXG4gIGlucHV0czogWydjbGlja2FibGUnLCAnZGlzYWJsZWQnLCAnZXhwYW5kYWJsZScsICdleHBhbmRlZCcsICdoaWdobGlnaHQnLCAncm93Z3JvdXAnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3RvZ2dsZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjbGlja2FibGUnLCAnZGlzYWJsZWQnLCAnZXhwYW5kYWJsZScsICdleHBhbmRlZCcsICdoaWdobGlnaHQnLCAncm93Z3JvdXAnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kVGFibGVSb3cge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFJvd0NsaWNrJywgJ21kUm93U2VsZWN0aW9uQ2hhbmdlJywgJ21kUm93RXhwYW5kZWRDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJsZVJvdyBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZVJvdyB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyAob3IgRW50ZXIvU3BhY2UtYWN0aXZhdGVzKSB0aGUgcm93LlxuICAgKi9cbiAgbWRSb3dDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgcm93OiBIVE1MRWxlbWVudCB9Pj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBgc2VsZWN0ZWRgIHN0YXRlIGNoYW5nZXMgKHVzZWQgYnkgYDxtZC10YWJsZT5gIGZvclxuc2VsZWN0aW9uIGNvb3JkaW5hdGlvbikuXG4gICAqL1xuICBtZFJvd1NlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc2VsZWN0ZWQ6IGJvb2xlYW47IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgcm93J3MgZXhwYW5kZWQgc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIG1kUm93RXhwYW5kZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVTb3J0TGFiZWwsXG4gIGlucHV0czogWydhY3RpdmUnLCAnY29sdW1uJywgJ2RlZmF1bHRPcmRlcicsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvblBvc2l0aW9uJywgJ2luYWN0aXZlSWNvbicsICdvcmRlcicsICdzb3J0ZWRBc2NlbmRpbmdMYWJlbCcsICdzb3J0ZWREZXNjZW5kaW5nTGFiZWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLXNvcnQtbGFiZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdjb2x1bW4nLCAnZGVmYXVsdE9yZGVyJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uUG9zaXRpb24nLCAnaW5hY3RpdmVJY29uJywgJ29yZGVyJywgJ3NvcnRlZEFzY2VuZGluZ0xhYmVsJywgJ3NvcnRlZERlc2NlbmRpbmdMYWJlbCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kVGFibGVTb3J0TGFiZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNvcnRSZXF1ZXN0J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVTb3J0TGFiZWwgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVTb3J0TGFiZWwge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgdXNlciByZXF1ZXN0cyB0byBzb3J0IGJ5IHRoaXMgY29sdW1uLlxuICAgKi9cbiAgbWRTb3J0UmVxdWVzdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY29sdW1uOiBzdHJpbmc7IGRlZmF1bHRPcmRlcjogJ2FzYycgfCAnZGVzYycgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUYWJsZVRvb2xiYXIsXG4gIGlucHV0czogWydhdXRvQmluZCcsICdjb21wYWN0JywgJ2RlbnNpdHknLCAnaGVhZGxpbmUnLCAnbGFiZWxTZWxlY3RlZCcsICdudW1TZWxlY3RlZCcsICdzdXBwb3J0aW5nVGV4dCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtdG9vbGJhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0JpbmQnLCAnY29tcGFjdCcsICdkZW5zaXR5JywgJ2hlYWRsaW5lJywgJ2xhYmVsU2VsZWN0ZWQnLCAnbnVtU2VsZWN0ZWQnLCAnc3VwcG9ydGluZ1RleHQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlVG9vbGJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVUb29sYmFyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlVG9vbGJhciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUYWJzLFxuICBpbnB1dHM6IFsnYWN0aXZlVGFiSW5kZXgnLCAnYXJpYUxhYmVsUHJvcCcsICdkaXZpZGVyJywgJ3RhYldpZHRoJywgJ3ZhcmlhbnQnLCAnd2lkdGgnXSxcbiAgbWV0aG9kczogWydzZWxlY3RUYWInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYnMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZVRhYkluZGV4JywgJ2FyaWFMYWJlbFByb3AnLCAnZGl2aWRlcicsICd0YWJXaWR0aCcsICd2YXJpYW50JywgJ3dpZHRoJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRUYWJDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJzIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYnMge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgYWN0aXZlIHRhYiBjaGFuZ2VzXG4gICAqL1xuICBtZFRhYkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgcHJldmlvdXNJbmRleDogbnVtYmVyIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGV4dEZpZWxkLFxuICBpbnB1dHM6IFsnYXBwZWFyRm9jdXNlZCcsICdhdXRvQ2FwaXRhbGl6ZScsICdhdXRvY29tcGxldGUnLCAnY2hpcHNXcmFwJywgJ2NsZWFyYWJsZScsICdkZWJvdW5jZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2VudGVyS2V5SGludCcsICdlcnJvcicsICdlcnJvclRleHQnLCAnZm9jdXNCb3JkZXJXaWR0aCcsICdmb3JtYXRPbicsICdmb3JtYXR0ZXInLCAnaGlkZVBhc3N3b3JkTGFiZWwnLCAnaW5wdXRBcmlhQXV0b2NvbXBsZXRlJywgJ2lucHV0RXhwYW5kZWQnLCAnaW5wdXRNb2RlJywgJ2lucHV0Um9sZScsICdsYWJlbCcsICdtYXgnLCAnbWF4TGVuZ3RoJywgJ21pbicsICdtaW5MZW5ndGgnLCAnbXVsdGlsaW5lJywgJ25hbWUnLCAncGFyc2VyJywgJ3Bhc3N3b3JkVG9nZ2xlJywgJ3BhdHRlcm4nLCAncGxhY2Vob2xkZXInLCAncHJlZml4VGV4dCcsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3Jlc3RyaWN0JywgJ3Jvd3MnLCAnc2hvd1Bhc3N3b3JkTGFiZWwnLCAnc3BlZWNoTGFuZycsICdzcGVlY2hUb1RleHQnLCAnc3BlbGxjaGVjaycsICdzdGVwJywgJ3N1ZmZpeFRleHQnLCAnc3VwcG9ydGluZ1RleHQnLCAndGhyb3R0bGUnLCAndHlwZScsICd2YWx1ZScsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2V0Rm9jdXMnLCAnc2VsZWN0JywgJ2dldElucHV0RWxlbWVudCcsICdnZXRWYWxpZGl0eScsICdzZXRDdXN0b21WYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10ZXh0LWZpZWxkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcHBlYXJGb2N1c2VkJywgJ2F1dG9DYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdjaGlwc1dyYXAnLCAnY2xlYXJhYmxlJywgJ2RlYm91bmNlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW50ZXJLZXlIaW50JywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmb2N1c0JvcmRlcldpZHRoJywgJ2Zvcm1hdE9uJywgJ2Zvcm1hdHRlcicsICdoaWRlUGFzc3dvcmRMYWJlbCcsICdpbnB1dEFyaWFBdXRvY29tcGxldGUnLCAnaW5wdXRFeHBhbmRlZCcsICdpbnB1dE1vZGUnLCAnaW5wdXRSb2xlJywgJ2xhYmVsJywgJ21heCcsICdtYXhMZW5ndGgnLCAnbWluJywgJ21pbkxlbmd0aCcsICdtdWx0aWxpbmUnLCAnbmFtZScsICdwYXJzZXInLCAncGFzc3dvcmRUb2dnbGUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdwcmVmaXhUZXh0JywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAncmVzdHJpY3QnLCAncm93cycsICdzaG93UGFzc3dvcmRMYWJlbCcsICdzcGVlY2hMYW5nJywgJ3NwZWVjaFRvVGV4dCcsICdzcGVsbGNoZWNrJywgJ3N0ZXAnLCAnc3VmZml4VGV4dCcsICdzdXBwb3J0aW5nVGV4dCcsICd0aHJvdHRsZScsICd0eXBlJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRleHRGaWVsZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRTZWFyY2gnLCAnbWRDbGVhcicsICdtZFBhc3N3b3JkVG9nZ2xlJywgJ21kU3BlZWNoUmVzdWx0JywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUZXh0RmllbGQgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGV4dEZpZWxkIHtcblxuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2l0aCBkZWJvdW5jZS90aHJvdHRsZSBjb250cm9sLiBVc2VmdWwgZm9yIHNlYXJjaC1hcy15b3UtdHlwZSwgQVBJIGNhbGxzLCBvciBmaWx0ZXJpbmcuXG4gICAqL1xuICBtZFNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG4gIG1kQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG5cbiAgbWRQYXNzd29yZFRvZ2dsZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmlzaWJsZTogYm9vbGVhbiB9Pj47XG5cbiAgbWRTcGVlY2hSZXN1bHQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHRyYW5zY3JpcHQ6IHN0cmluZzsgbGlzdGVuaW5nOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUaW1lUGlja2VyLFxuICBpbnB1dHM6IFsnYW1MYWJlbCcsICdjYW5jZWxMYWJlbCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmb3JtYXQnLCAnaGVhZGxpbmUnLCAnaGVhZGxpbmVEaWFsTGFiZWwnLCAnaGVhZGxpbmVJbnB1dExhYmVsJywgJ2hpZGVUcmlnZ2VyJywgJ2hvdXJMYWJlbCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ21pbnV0ZUxhYmVsJywgJ21pbnV0ZVN0ZXAnLCAnbmFtZScsICdva0xhYmVsJywgJ29wZW4nLCAnb3JpZW50YXRpb24nLCAncGVyaW9kTGFiZWwnLCAncGVyaW9kTGF5b3V0JywgJ3BtTGFiZWwnLCAncmFuZ2VPdXRzaWRlTGFiZWwnLCAncmFuZ2VPdmVyZmxvd0xhYmVsJywgJ3JhbmdlVW5kZXJmbG93TGFiZWwnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyZXNwb25zaXZlJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RvZ2dsZURpYWxMYWJlbCcsICd0b2dnbGVJbnB1dExhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eScsICdnZXRWYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGltZS1waWNrZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FtTGFiZWwnLCAnY2FuY2VsTGFiZWwnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvclRleHQnLCAnZm9ybWF0JywgJ2hlYWRsaW5lJywgJ2hlYWRsaW5lRGlhbExhYmVsJywgJ2hlYWRsaW5lSW5wdXRMYWJlbCcsICdoaWRlVHJpZ2dlcicsICdob3VyTGFiZWwnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICdtaW51dGVMYWJlbCcsICdtaW51dGVTdGVwJywgJ25hbWUnLCAnb2tMYWJlbCcsICdvcGVuJywgJ29yaWVudGF0aW9uJywgJ3BlcmlvZExhYmVsJywgJ3BlcmlvZExheW91dCcsICdwbUxhYmVsJywgJ3JhbmdlT3V0c2lkZUxhYmVsJywgJ3JhbmdlT3ZlcmZsb3dMYWJlbCcsICdyYW5nZVVuZGVyZmxvd0xhYmVsJywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAncmVzcG9uc2l2ZScsICdzdXBwb3J0aW5nVGV4dCcsICd0b2dnbGVEaWFsTGFiZWwnLCAndG9nZ2xlSW5wdXRMYWJlbCcsICd2YWx1ZScsICd2YWx1ZU1pc3NpbmdMYWJlbCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUaW1lUGlja2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRJbnB1dCcsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCcsICdtZE1vZGVDaGFuZ2UnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRUaW1lUGlja2VyQ2hhbmdlRGV0YWlsIGFzIElNZFRpbWVQaWNrZXJNZFRpbWVQaWNrZXJDaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgTWRUaW1lUGlja2VyTW9kZUNoYW5nZURldGFpbCBhcyBJTWRUaW1lUGlja2VyTWRUaW1lUGlja2VyTW9kZUNoYW5nZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUaW1lUGlja2VyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRpbWVQaWNrZXIge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNvbmZpcm1zIHRoZSBjaG9zZW4gdGltZSAoT0sgYnV0dG9uLCBvclxuRW50ZXIgaW5zaWRlIHRoZSBISC9NTSBmaWVsZHMgd2hpbGUgdGhlIGJ1ZmZlcnMgYXJlIHZhbGlkKS5cblRoaXMgaXMgdGhlIGNhbm9uaWNhbCBcInRoZSB1c2VyIGhhcyBjb21taXR0ZWQgYSB2YWx1ZVwiIGV2ZW50IOKAlFxudXNlIGl0IGZvciBmb3JtIGludGVncmF0aW9uLCBwZXJzaXN0ZW5jZSwgYW5kIGFuYWx5dGljcy5cblxuVGhlIGRldGFpbCBidW5kbGUgaW5jbHVkZXMgYm90aCB0aGUgaHVtYW4tZnJpZW5kbHkgYHZhbHVlYCBhbmRcbnRocmVlIGluZHVzdHJ5LXN0YW5kYXJkIElTTyAvIERhdGUgcmVwcmVzZW50YXRpb25zIHNvXG5kb3duc3RyZWFtIGNvZGUgbmV2ZXIgaGFzIHRvIHJlLWZvcm1hdCB0aGUgdGltZSBpdHNlbGYuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFRpbWVQaWNrZXJNZFRpbWVQaWNrZXJDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb24gZXZlcnkgaW50ZXJtZWRpYXRlIGNoYW5nZSB3aGlsZSB0aGUgZGlhbG9nIGlzXG5vcGVuIOKAlCBkaWFsIGRyYWcsIGRpYWwtbW9kZSBrZXlib2FyZCB0eXBpbmcsIEFNL1BNIHRvZ2dsZSxcbmFuZCBpbnB1dC12YXJpYW50IGtleXN0cm9rZXMgdGhhdCBwcm9kdWNlIGEgdmFsaWQgSEg6TU0uXG5cbk1pcnJvcnMgdGhlIEhUTUwgYGlucHV0YCBldmVudCBzZW1hbnRpY3MgKFwiZmlyZXMgZm9yIGV2ZXJ5XG51c2VyLWRyaXZlbiBtdXRhdGlvblwiKSBhbmQgbWF0Y2hlcyB0aGUgcGF0dGVybiB1c2VkIGJ5XG5gbWQtZGF0ZS1waWNrZXJgIC8gYG1kLXRleHQtZmllbGRgLiBVc2UgYG1kSW5wdXRgIGZvciBsaXZlXG5wcmV2aWV3cyBhbmQgYG1kQ2hhbmdlYCBmb3IgdGhlIGZpbmFsIGNvbW1pdC4gVGhlIGRldGFpbFxuc2hhcGUgaXMgaWRlbnRpY2FsIHRvIGBtZENoYW5nZWAgc28gYSBwcmV2aWV3ZXIgY2FuIHJlYWQgdGhlXG5zYW1lIGZpZWxkcyByZWdhcmRsZXNzIG9mIHdoaWNoIGV2ZW50IGFycml2ZWQuXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kVGltZVBpY2tlck1kVGltZVBpY2tlckNoYW5nZURldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwaWNrZXIgb3BlbnMuXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHBpY2tlciBjbG9zZXMgKHdoZXRoZXIgY29uZmlybWVkLCBjYW5jZWxsZWQsIG9yIGRpc21pc3NlZCkuXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwaWNrZXIgaXMgY2FuY2VsbGVkIG9yIGRpc21pc3NlZCB3aXRob3V0IGNvbW1pdHRpbmcuXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBzd2l0Y2hlcyBiZXR3ZWVuIHRoZSBkaWFsIGFuZCBpbnB1dFxudmFyaWFudHMgdmlhIHRoZSBkaWFsb2cncyBrZXlib2FyZCAvIGNsb2NrIHRvZ2dsZS4gTGV0c1xuYW5hbHl0aWNzIG9yIHNpYmxpbmcgVUkgcmVhY3QgdG8gdGhlIHZhcmlhbnQgY2hhbmdlIChlLmcuXG5hbm5vdW5jZSB0aGUgbmV3IG1vZGUgdG8gc2NyZWVuIHJlYWRlcnMsIG9yIHJlc2l6ZSBhIGhvc3RpbmdcbmRpYWxvZyB3cmFwcGVyKS5cbiAgICovXG4gIG1kTW9kZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFRpbWVQaWNrZXJNZFRpbWVQaWNrZXJNb2RlQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoaXMgY29udHJvbCdzIHZhbGlkaXR5IENIQU5HRVMg4oCUIG5ldmVyIG9uIGV2ZXJ5IGtleXN0cm9rZSwgYW5kXG5uZXZlciBmb3IgYSByZS1wdWJsaXNoIHRoYXQgbGFuZHMgb24gdGhlIHNhbWUgc3RhdGUuXG5cbmBjb21wb3NlZDogZmFsc2VgIGlzIGRlbGliZXJhdGUuIENvbXBvc2l0ZXMgbGlrZSBtZC1zZWxlY3QgZW1iZWQgYW5cbm1kLXRleHQtZmllbGQsIGFuZCBhIGNvbXBvc2VkIGV2ZW50IGVzY2FwZXMgdGhhdCBpbm5lciBzaGFkb3cgcm9vdCwgc28gYVxubGlzdGVuZXIgb24gbWQtc2VsZWN0IHdvdWxkIHJlY2VpdmUgdGhlIGlubmVyIGZpZWxkJ3MgZXZlbnQgYXMgd2VsbCBhcyB0aGVcbmhvc3QncyDigJQgdHdvIGV2ZW50cywgZGlmZmVyZW50IHBheWxvYWRzLCBmb3Igb25lIGxvZ2ljYWwgY29udHJvbC4gS2VlcGluZ1xuaXQgdW5jb21wb3NlZCBtZWFucyBlYWNoIGNvbXBvbmVudCByZXBvcnRzIG9ubHkgZm9yIGl0c2VsZiwgd2hpbGVcbmBidWJibGVzOiB0cnVlYCBzdGlsbCBsZXRzIGEgPGZvcm0+IG9yIGFwcCByb290IGhlYXIgZXZlcnkgY29udHJvbC5cbiAgICovXG4gIG1kVmFsaWRpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbGlkOiBib29sZWFuOyB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nOyBmbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVG9vbGJhcixcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdhcmlhTGFiZWxQcm9wJywgJ2FyaWFMYWJlbGxlZGJ5JywgJ2NvbG9yJywgJ2NvbnRhaW5lclNlbWFudGljcycsICdkZW5zaXR5JywgJ2xheW91dCcsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2V0Rm9jdXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRvb2xiYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdhcmlhTGFiZWxQcm9wJywgJ2FyaWFMYWJlbGxlZGJ5JywgJ2NvbG9yJywgJ2NvbnRhaW5lclNlbWFudGljcycsICdkZW5zaXR5JywgJ2xheW91dCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUb29sYmFyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUb29sYmFyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRvb2xiYXIge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVG9vbHRpcCxcbiAgaW5wdXRzOiBbJ2F1dG9Qb3NpdGlvbicsICdjcm9zc09mZnNldCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2hpZGVEZWxheScsICdvZmZzZXQnLCAnb3BlbicsICdwb3NpdGlvbicsICdzaG93RGVsYXknLCAnc3ViaGVhZCcsICd0ZXh0JywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRvb2x0aXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9Qb3NpdGlvbicsICdjcm9zc09mZnNldCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2hpZGVEZWxheScsICdvZmZzZXQnLCAnb3BlbicsICdwb3NpdGlvbicsICdzaG93RGVsYXknLCAnc3ViaGVhZCcsICd0ZXh0JywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRvb2x0aXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE9wZW4nLCAnbWRDbG9zZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRvb2x0aXAgZXh0ZW5kcyBDb21wb25lbnRzLk1kVG9vbHRpcCB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSB0b29sdGlwIGJlY29tZXMgdmlzaWJsZS4gYGJ1YmJsZXM6ZmFsc2VgICsgYGNvbXBvc2VkOmZhbHNlYCBrZWVwIGl0XG5mcm9tIGNyb3NzaW5nIHRoZSBzaGFkb3cgYm91bmRhcnkgYW5kIHJldGFyZ2V0aW5nIG9udG8gYW4gZW1iZWRkaW5nIGhvc3QgKHRoZSByZXBvJ3NcbmRvY3VtZW50ZWQgY29tcG9zZWQtZXZlbnQtbGVhayBjbGFzcyDigJQgc2VlIG1kLWRhdGUtcGlja2VyJ3Mgc3dhbGxvdyBndWFyZHMpLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgdG9vbHRpcCBpcyBkaXNtaXNzZWQgKGRvZXMgbm90IGJ1YmJsZSBvciBjcm9zcyBzaGFkb3cgYm91bmRhcmllcykuXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUcmFuc2Zlckxpc3QsXG4gIGlucHV0czogWydjb3VudFRlbXBsYXRlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW1wdHlJY29uJywgJ2VtcHR5VGV4dCcsICdpdGVtcycsICdtb3ZlQWxsTGVmdEljb24nLCAnbW92ZUFsbExlZnRMYWJlbCcsICdtb3ZlQWxsUmlnaHRJY29uJywgJ21vdmVBbGxSaWdodExhYmVsJywgJ21vdmVMZWZ0SWNvbicsICdtb3ZlTGVmdExhYmVsJywgJ21vdmVSaWdodEljb24nLCAnbW92ZVJpZ2h0TGFiZWwnLCAnc2VhcmNoSWNvbicsICdzZWFyY2hhYmxlJywgJ3Nob3dTZWxlY3RBbGwnLCAnc2luZ2xlU3RlcE9ubHknLCAnc291cmNlU2VhcmNoUGxhY2Vob2xkZXInLCAnc291cmNlVGl0bGUnLCAndGFyZ2V0U2VhcmNoUGxhY2Vob2xkZXInLCAndGFyZ2V0VGl0bGUnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydtb3ZlU2VsZWN0ZWRSaWdodCcsICdtb3ZlU2VsZWN0ZWRMZWZ0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10cmFuc2Zlci1saXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb3VudFRlbXBsYXRlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW1wdHlJY29uJywgJ2VtcHR5VGV4dCcsICdpdGVtcycsICdtb3ZlQWxsTGVmdEljb24nLCAnbW92ZUFsbExlZnRMYWJlbCcsICdtb3ZlQWxsUmlnaHRJY29uJywgJ21vdmVBbGxSaWdodExhYmVsJywgJ21vdmVMZWZ0SWNvbicsICdtb3ZlTGVmdExhYmVsJywgJ21vdmVSaWdodEljb24nLCAnbW92ZVJpZ2h0TGFiZWwnLCAnc2VhcmNoSWNvbicsICdzZWFyY2hhYmxlJywgJ3Nob3dTZWxlY3RBbGwnLCAnc2luZ2xlU3RlcE9ubHknLCAnc291cmNlU2VhcmNoUGxhY2Vob2xkZXInLCAnc291cmNlVGl0bGUnLCAndGFyZ2V0U2VhcmNoUGxhY2Vob2xkZXInLCAndGFyZ2V0VGl0bGUnLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRyYW5zZmVyTGlzdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kTW92ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRyYW5zZmVyTGlzdCBleHRlbmRzIENvbXBvbmVudHMuTWRUcmFuc2Zlckxpc3Qge1xuICAvKipcbiAgICogRmlyZXMgb24gZXZlcnkgY2hhbmdlIHRvIHRoZSB0YXJnZXQgdmFsdWUuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBGaXJlcyBhZnRlciBpdGVtcyBhcmUgbW92ZWQuIGRldGFpbCBkZXNjcmliZXMgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIG1kTW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgZGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnOyBtb3ZlZDogc3RyaW5nW107IHRhcmdldDogc3RyaW5nW107IH0+Pjtcbn1cblxuXG4iXX0=