@ionic/angular 8.8.11-dev.11781186446.19d9a1cc → 8.8.11-dev.11781283724.13318488

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 (199) hide show
  1. package/README.md +1 -1
  2. package/app-initialize.d.ts +3 -0
  3. package/common/directives/control-value-accessors/index.d.ts +1 -0
  4. package/common/directives/control-value-accessors/value-accessor.d.ts +36 -0
  5. package/common/directives/navigation/back-button.d.ts +23 -0
  6. package/common/directives/navigation/nav-params.d.ts +45 -0
  7. package/common/directives/navigation/nav.d.ts +21 -0
  8. package/common/directives/navigation/router-link-delegate.d.ts +60 -0
  9. package/common/directives/navigation/router-outlet.d.ts +104 -0
  10. package/common/directives/navigation/stack-controller.d.ts +42 -0
  11. package/common/directives/navigation/stack-utils.d.ts +38 -0
  12. package/common/directives/navigation/tabs.d.ts +83 -0
  13. package/common/index.d.ts +22 -0
  14. package/common/overlays/modal.d.ts +62 -0
  15. package/common/overlays/popover.d.ts +46 -0
  16. package/common/providers/angular-delegate.d.ts +28 -0
  17. package/common/providers/config.d.ts +11 -0
  18. package/common/providers/dom-controller.d.ts +16 -0
  19. package/common/providers/menu-controller.d.ts +78 -0
  20. package/common/providers/nav-controller.d.ts +116 -0
  21. package/common/providers/platform.d.ts +174 -0
  22. package/common/types/interfaces.d.ts +8 -0
  23. package/common/types/ionic-lifecycle-hooks.d.ts +27 -0
  24. package/common/types/overlay-options.d.ts +16 -0
  25. package/common/utils/overlay.d.ts +21 -0
  26. package/common/utils/proxy.d.ts +8 -0
  27. package/common/utils/routing.d.ts +28 -0
  28. package/common/utils/util.d.ts +1 -0
  29. package/directives/angular-component-lib/utils.d.ts +9 -0
  30. package/directives/control-value-accessors/boolean-value-accessor.d.ts +10 -0
  31. package/directives/control-value-accessors/index.d.ts +4 -0
  32. package/directives/control-value-accessors/numeric-value-accessor.d.ts +11 -0
  33. package/directives/control-value-accessors/select-value-accessor.d.ts +9 -0
  34. package/directives/control-value-accessors/text-value-accessor.d.ts +9 -0
  35. package/directives/navigation/ion-back-button.d.ts +9 -0
  36. package/directives/navigation/ion-nav.d.ts +8 -0
  37. package/directives/navigation/ion-router-outlet.d.ts +25 -0
  38. package/directives/navigation/ion-tabs.d.ts +13 -0
  39. package/directives/navigation/router-link-delegate.d.ts +16 -0
  40. package/directives/overlays/modal.d.ts +6 -0
  41. package/directives/overlays/popover.d.ts +6 -0
  42. package/directives/proxies-list.d.ts +2 -0
  43. package/{types/ionic-angular.d.ts → directives/proxies.d.ts} +398 -651
  44. package/directives/validators/index.d.ts +2 -0
  45. package/directives/validators/max-validator.d.ts +12 -0
  46. package/directives/validators/min-validator.d.ts +12 -0
  47. package/esm2022/app-initialize.mjs +29 -0
  48. package/esm2022/common/directives/control-value-accessors/index.mjs +2 -0
  49. package/esm2022/common/directives/control-value-accessors/value-accessor.mjs +153 -0
  50. package/esm2022/common/directives/navigation/back-button.mjs +61 -0
  51. package/esm2022/common/directives/navigation/nav-params.mjs +47 -0
  52. package/esm2022/common/directives/navigation/nav.mjs +49 -0
  53. package/esm2022/common/directives/navigation/router-link-delegate.mjs +156 -0
  54. package/esm2022/common/directives/navigation/router-outlet.mjs +480 -0
  55. package/esm2022/common/directives/navigation/stack-controller.mjs +280 -0
  56. package/esm2022/common/directives/navigation/stack-utils.mjs +73 -0
  57. package/esm2022/common/directives/navigation/tabs.mjs +279 -0
  58. package/esm2022/common/index.mjs +20 -0
  59. package/esm2022/common/ionic-angular-common.mjs +5 -0
  60. package/esm2022/common/overlays/modal.mjs +103 -0
  61. package/esm2022/common/overlays/popover.mjs +91 -0
  62. package/esm2022/common/providers/angular-delegate.mjs +203 -0
  63. package/esm2022/common/providers/config.mjs +45 -0
  64. package/esm2022/common/providers/dom-controller.mjs +45 -0
  65. package/esm2022/common/providers/menu-controller.mjs +114 -0
  66. package/esm2022/common/providers/nav-controller.mjs +235 -0
  67. package/esm2022/common/providers/platform.mjs +258 -0
  68. package/esm2022/common/types/interfaces.mjs +2 -0
  69. package/esm2022/common/types/ionic-lifecycle-hooks.mjs +5 -0
  70. package/esm2022/common/types/overlay-options.mjs +2 -0
  71. package/esm2022/common/utils/overlay.mjs +26 -0
  72. package/esm2022/common/utils/proxy.mjs +47 -0
  73. package/esm2022/common/utils/routing.mjs +55 -0
  74. package/esm2022/common/utils/util.mjs +10 -0
  75. package/esm2022/directives/angular-component-lib/utils.mjs +59 -0
  76. package/esm2022/directives/control-value-accessors/boolean-value-accessor.mjs +42 -0
  77. package/esm2022/directives/control-value-accessors/index.mjs +5 -0
  78. package/esm2022/directives/control-value-accessors/numeric-value-accessor.mjs +50 -0
  79. package/esm2022/directives/control-value-accessors/select-value-accessor.mjs +39 -0
  80. package/esm2022/directives/control-value-accessors/text-value-accessor.mjs +38 -0
  81. package/esm2022/directives/navigation/ion-back-button.mjs +24 -0
  82. package/esm2022/directives/navigation/ion-nav.mjs +21 -0
  83. package/esm2022/directives/navigation/ion-router-outlet.mjs +52 -0
  84. package/esm2022/directives/navigation/ion-tabs.mjs +59 -0
  85. package/esm2022/directives/navigation/router-link-delegate.mjs +32 -0
  86. package/esm2022/directives/overlays/modal.mjs +22 -0
  87. package/esm2022/directives/overlays/popover.mjs +18 -0
  88. package/esm2022/directives/proxies-list.mjs +90 -0
  89. package/esm2022/directives/proxies.mjs +2373 -0
  90. package/esm2022/directives/validators/index.mjs +3 -0
  91. package/esm2022/directives/validators/max-validator.mjs +27 -0
  92. package/esm2022/directives/validators/min-validator.mjs +27 -0
  93. package/esm2022/index.mjs +32 -0
  94. package/esm2022/ionic-angular.mjs +5 -0
  95. package/esm2022/ionic-module.mjs +111 -0
  96. package/esm2022/providers/action-sheet-controller.mjs +19 -0
  97. package/esm2022/providers/alert-controller.mjs +19 -0
  98. package/esm2022/providers/animation-controller.mjs +38 -0
  99. package/esm2022/providers/gesture-controller.mjs +33 -0
  100. package/esm2022/providers/loading-controller.mjs +19 -0
  101. package/esm2022/providers/menu-controller.mjs +19 -0
  102. package/esm2022/providers/modal-controller.mjs +26 -0
  103. package/esm2022/providers/picker-controller.mjs +22 -0
  104. package/esm2022/providers/popover-controller.mjs +19 -0
  105. package/esm2022/providers/toast-controller.mjs +19 -0
  106. package/esm2022/standalone/directives/angular-component-lib/utils.mjs +59 -0
  107. package/esm2022/standalone/directives/checkbox.mjs +76 -0
  108. package/esm2022/standalone/directives/datetime.mjs +95 -0
  109. package/esm2022/standalone/directives/icon.mjs +35 -0
  110. package/esm2022/standalone/directives/index.mjs +13 -0
  111. package/esm2022/standalone/directives/input-otp.mjs +90 -0
  112. package/esm2022/standalone/directives/input.mjs +113 -0
  113. package/esm2022/standalone/directives/proxies.mjs +2260 -0
  114. package/esm2022/standalone/directives/radio-group.mjs +60 -0
  115. package/esm2022/standalone/directives/range.mjs +78 -0
  116. package/esm2022/standalone/directives/searchbar.mjs +82 -0
  117. package/esm2022/standalone/directives/segment.mjs +60 -0
  118. package/esm2022/standalone/directives/select.mjs +84 -0
  119. package/esm2022/standalone/directives/textarea.mjs +91 -0
  120. package/esm2022/standalone/directives/toggle.mjs +76 -0
  121. package/esm2022/standalone/index.mjs +25 -0
  122. package/esm2022/standalone/ionic-angular-standalone.mjs +5 -0
  123. package/esm2022/standalone/navigation/back-button.mjs +32 -0
  124. package/esm2022/standalone/navigation/nav.mjs +28 -0
  125. package/esm2022/standalone/navigation/router-link-delegate.mjs +28 -0
  126. package/esm2022/standalone/navigation/router-outlet.mjs +60 -0
  127. package/esm2022/standalone/navigation/tabs.mjs +58 -0
  128. package/esm2022/standalone/overlays/modal.mjs +32 -0
  129. package/esm2022/standalone/overlays/popover.mjs +28 -0
  130. package/esm2022/standalone/providers/action-sheet-controller.mjs +21 -0
  131. package/esm2022/standalone/providers/alert-controller.mjs +21 -0
  132. package/esm2022/standalone/providers/animation-controller.mjs +38 -0
  133. package/esm2022/standalone/providers/gesture-controller.mjs +33 -0
  134. package/esm2022/standalone/providers/ionic-angular.mjs +38 -0
  135. package/esm2022/standalone/providers/loading-controller.mjs +21 -0
  136. package/esm2022/standalone/providers/menu-controller.mjs +19 -0
  137. package/esm2022/standalone/providers/modal-controller.mjs +28 -0
  138. package/esm2022/standalone/providers/picker-controller.mjs +24 -0
  139. package/esm2022/standalone/providers/popover-controller.mjs +21 -0
  140. package/esm2022/standalone/providers/toast-controller.mjs +21 -0
  141. package/fesm2022/ionic-angular-common.mjs +84 -96
  142. package/fesm2022/ionic-angular-common.mjs.map +1 -1
  143. package/fesm2022/ionic-angular-standalone.mjs +632 -717
  144. package/fesm2022/ionic-angular-standalone.mjs.map +1 -1
  145. package/fesm2022/ionic-angular.mjs +533 -919
  146. package/fesm2022/ionic-angular.mjs.map +1 -1
  147. package/index.d.ts +27 -0
  148. package/ionic-module.d.ts +28 -0
  149. package/package.json +16 -16
  150. package/providers/action-sheet-controller.d.ts +8 -0
  151. package/providers/alert-controller.d.ts +8 -0
  152. package/providers/animation-controller.d.ts +25 -0
  153. package/providers/gesture-controller.d.ts +13 -0
  154. package/providers/loading-controller.d.ts +8 -0
  155. package/providers/menu-controller.d.ts +7 -0
  156. package/providers/modal-controller.d.ts +12 -0
  157. package/providers/picker-controller.d.ts +11 -0
  158. package/providers/popover-controller.d.ts +9 -0
  159. package/providers/toast-controller.d.ts +8 -0
  160. package/schematics/add/index.js +1 -1
  161. package/schematics/utils/ast.js +2 -1
  162. package/schematics/utils/config.js +11 -10
  163. package/schematics/utils/package.js +2 -1
  164. package/standalone/directives/angular-component-lib/utils.d.ts +9 -0
  165. package/standalone/directives/checkbox.d.ts +30 -0
  166. package/standalone/directives/datetime.d.ts +30 -0
  167. package/standalone/directives/icon.d.ts +9 -0
  168. package/standalone/directives/index.d.ts +12 -0
  169. package/standalone/directives/input-otp.d.ts +49 -0
  170. package/standalone/directives/input.d.ts +47 -0
  171. package/standalone/directives/proxies.d.ts +1035 -0
  172. package/standalone/directives/radio-group.d.ts +18 -0
  173. package/standalone/directives/range.d.ts +47 -0
  174. package/standalone/directives/searchbar.d.ts +45 -0
  175. package/standalone/directives/segment.d.ts +19 -0
  176. package/standalone/directives/select.d.ts +34 -0
  177. package/standalone/directives/textarea.d.ts +37 -0
  178. package/standalone/directives/toggle.d.ts +28 -0
  179. package/standalone/index.d.ts +23 -0
  180. package/standalone/navigation/back-button.d.ts +9 -0
  181. package/standalone/navigation/nav.d.ts +8 -0
  182. package/standalone/navigation/router-link-delegate.d.ts +10 -0
  183. package/standalone/navigation/router-outlet.d.ts +25 -0
  184. package/standalone/navigation/tabs.d.ts +13 -0
  185. package/standalone/overlays/modal.d.ts +6 -0
  186. package/standalone/overlays/popover.d.ts +6 -0
  187. package/standalone/providers/action-sheet-controller.d.ts +8 -0
  188. package/standalone/providers/alert-controller.d.ts +8 -0
  189. package/standalone/providers/animation-controller.d.ts +25 -0
  190. package/standalone/providers/gesture-controller.d.ts +13 -0
  191. package/standalone/providers/ionic-angular.d.ts +7 -0
  192. package/standalone/providers/loading-controller.d.ts +8 -0
  193. package/standalone/providers/menu-controller.d.ts +7 -0
  194. package/standalone/providers/modal-controller.d.ts +12 -0
  195. package/standalone/providers/picker-controller.d.ts +11 -0
  196. package/standalone/providers/popover-controller.d.ts +9 -0
  197. package/standalone/providers/toast-controller.d.ts +8 -0
  198. package/types/ionic-angular-common.d.ts +0 -1013
  199. package/types/ionic-angular-standalone.d.ts +0 -1560
@@ -0,0 +1,2260 @@
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 defineIonAccordion } from '@ionic/core/components/ion-accordion.js';
7
+ import { defineCustomElement as defineIonAccordionGroup } from '@ionic/core/components/ion-accordion-group.js';
8
+ import { defineCustomElement as defineIonActionSheet } from '@ionic/core/components/ion-action-sheet.js';
9
+ import { defineCustomElement as defineIonAlert } from '@ionic/core/components/ion-alert.js';
10
+ import { defineCustomElement as defineIonApp } from '@ionic/core/components/ion-app.js';
11
+ import { defineCustomElement as defineIonAvatar } from '@ionic/core/components/ion-avatar.js';
12
+ import { defineCustomElement as defineIonBackdrop } from '@ionic/core/components/ion-backdrop.js';
13
+ import { defineCustomElement as defineIonBadge } from '@ionic/core/components/ion-badge.js';
14
+ import { defineCustomElement as defineIonBreadcrumb } from '@ionic/core/components/ion-breadcrumb.js';
15
+ import { defineCustomElement as defineIonBreadcrumbs } from '@ionic/core/components/ion-breadcrumbs.js';
16
+ import { defineCustomElement as defineIonButton } from '@ionic/core/components/ion-button.js';
17
+ import { defineCustomElement as defineIonButtons } from '@ionic/core/components/ion-buttons.js';
18
+ import { defineCustomElement as defineIonCard } from '@ionic/core/components/ion-card.js';
19
+ import { defineCustomElement as defineIonCardContent } from '@ionic/core/components/ion-card-content.js';
20
+ import { defineCustomElement as defineIonCardHeader } from '@ionic/core/components/ion-card-header.js';
21
+ import { defineCustomElement as defineIonCardSubtitle } from '@ionic/core/components/ion-card-subtitle.js';
22
+ import { defineCustomElement as defineIonCardTitle } from '@ionic/core/components/ion-card-title.js';
23
+ import { defineCustomElement as defineIonChip } from '@ionic/core/components/ion-chip.js';
24
+ import { defineCustomElement as defineIonCol } from '@ionic/core/components/ion-col.js';
25
+ import { defineCustomElement as defineIonContent } from '@ionic/core/components/ion-content.js';
26
+ import { defineCustomElement as defineIonDatetimeButton } from '@ionic/core/components/ion-datetime-button.js';
27
+ import { defineCustomElement as defineIonFab } from '@ionic/core/components/ion-fab.js';
28
+ import { defineCustomElement as defineIonFabButton } from '@ionic/core/components/ion-fab-button.js';
29
+ import { defineCustomElement as defineIonFabList } from '@ionic/core/components/ion-fab-list.js';
30
+ import { defineCustomElement as defineIonFooter } from '@ionic/core/components/ion-footer.js';
31
+ import { defineCustomElement as defineIonGrid } from '@ionic/core/components/ion-grid.js';
32
+ import { defineCustomElement as defineIonHeader } from '@ionic/core/components/ion-header.js';
33
+ import { defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js';
34
+ import { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js';
35
+ import { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js';
36
+ import { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js';
37
+ import { defineCustomElement as defineIonItem } from '@ionic/core/components/ion-item.js';
38
+ import { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js';
39
+ import { defineCustomElement as defineIonItemGroup } from '@ionic/core/components/ion-item-group.js';
40
+ import { defineCustomElement as defineIonItemOption } from '@ionic/core/components/ion-item-option.js';
41
+ import { defineCustomElement as defineIonItemOptions } from '@ionic/core/components/ion-item-options.js';
42
+ import { defineCustomElement as defineIonItemSliding } from '@ionic/core/components/ion-item-sliding.js';
43
+ import { defineCustomElement as defineIonLabel } from '@ionic/core/components/ion-label.js';
44
+ import { defineCustomElement as defineIonList } from '@ionic/core/components/ion-list.js';
45
+ import { defineCustomElement as defineIonListHeader } from '@ionic/core/components/ion-list-header.js';
46
+ import { defineCustomElement as defineIonLoading } from '@ionic/core/components/ion-loading.js';
47
+ import { defineCustomElement as defineIonMenu } from '@ionic/core/components/ion-menu.js';
48
+ import { defineCustomElement as defineIonMenuButton } from '@ionic/core/components/ion-menu-button.js';
49
+ import { defineCustomElement as defineIonMenuToggle } from '@ionic/core/components/ion-menu-toggle.js';
50
+ import { defineCustomElement as defineIonNavLink } from '@ionic/core/components/ion-nav-link.js';
51
+ import { defineCustomElement as defineIonNote } from '@ionic/core/components/ion-note.js';
52
+ import { defineCustomElement as defineIonPicker } from '@ionic/core/components/ion-picker.js';
53
+ import { defineCustomElement as defineIonPickerColumn } from '@ionic/core/components/ion-picker-column.js';
54
+ import { defineCustomElement as defineIonPickerColumnOption } from '@ionic/core/components/ion-picker-column-option.js';
55
+ import { defineCustomElement as defineIonPickerLegacy } from '@ionic/core/components/ion-picker-legacy.js';
56
+ import { defineCustomElement as defineIonProgressBar } from '@ionic/core/components/ion-progress-bar.js';
57
+ import { defineCustomElement as defineIonRadio } from '@ionic/core/components/ion-radio.js';
58
+ import { defineCustomElement as defineIonRefresher } from '@ionic/core/components/ion-refresher.js';
59
+ import { defineCustomElement as defineIonRefresherContent } from '@ionic/core/components/ion-refresher-content.js';
60
+ import { defineCustomElement as defineIonReorder } from '@ionic/core/components/ion-reorder.js';
61
+ import { defineCustomElement as defineIonReorderGroup } from '@ionic/core/components/ion-reorder-group.js';
62
+ import { defineCustomElement as defineIonRippleEffect } from '@ionic/core/components/ion-ripple-effect.js';
63
+ import { defineCustomElement as defineIonRow } from '@ionic/core/components/ion-row.js';
64
+ import { defineCustomElement as defineIonSegmentButton } from '@ionic/core/components/ion-segment-button.js';
65
+ import { defineCustomElement as defineIonSegmentContent } from '@ionic/core/components/ion-segment-content.js';
66
+ import { defineCustomElement as defineIonSegmentView } from '@ionic/core/components/ion-segment-view.js';
67
+ import { defineCustomElement as defineIonSelectModal } from '@ionic/core/components/ion-select-modal.js';
68
+ import { defineCustomElement as defineIonSelectOption } from '@ionic/core/components/ion-select-option.js';
69
+ import { defineCustomElement as defineIonSkeletonText } from '@ionic/core/components/ion-skeleton-text.js';
70
+ import { defineCustomElement as defineIonSpinner } from '@ionic/core/components/ion-spinner.js';
71
+ import { defineCustomElement as defineIonSplitPane } from '@ionic/core/components/ion-split-pane.js';
72
+ import { defineCustomElement as defineIonTab } from '@ionic/core/components/ion-tab.js';
73
+ import { defineCustomElement as defineIonTabBar } from '@ionic/core/components/ion-tab-bar.js';
74
+ import { defineCustomElement as defineIonTabButton } from '@ionic/core/components/ion-tab-button.js';
75
+ import { defineCustomElement as defineIonText } from '@ionic/core/components/ion-text.js';
76
+ import { defineCustomElement as defineIonThumbnail } from '@ionic/core/components/ion-thumbnail.js';
77
+ import { defineCustomElement as defineIonTitle } from '@ionic/core/components/ion-title.js';
78
+ import { defineCustomElement as defineIonToast } from '@ionic/core/components/ion-toast.js';
79
+ import { defineCustomElement as defineIonToolbar } from '@ionic/core/components/ion-toolbar.js';
80
+ import * as i0 from "@angular/core";
81
+ let IonAccordion = class IonAccordion {
82
+ z;
83
+ el;
84
+ constructor(c, r, z) {
85
+ this.z = z;
86
+ c.detach();
87
+ this.el = r.nativeElement;
88
+ }
89
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonAccordion, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
90
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonAccordion, isStandalone: true, selector: "ion-accordion", inputs: { disabled: "disabled", mode: "mode", readonly: "readonly", toggleIcon: "toggleIcon", toggleIconSlot: "toggleIconSlot", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
91
+ };
92
+ IonAccordion = __decorate([
93
+ ProxyCmp({
94
+ defineCustomElementFn: defineIonAccordion,
95
+ inputs: ['disabled', 'mode', 'readonly', 'toggleIcon', 'toggleIconSlot', 'value']
96
+ })
97
+ ], IonAccordion);
98
+ export { IonAccordion };
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonAccordion, decorators: [{
100
+ type: Component,
101
+ args: [{
102
+ selector: 'ion-accordion',
103
+ changeDetection: ChangeDetectionStrategy.OnPush,
104
+ template: '<ng-content></ng-content>',
105
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
106
+ inputs: ['disabled', 'mode', 'readonly', 'toggleIcon', 'toggleIconSlot', 'value'],
107
+ standalone: true
108
+ }]
109
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
110
+ let IonAccordionGroup = class IonAccordionGroup {
111
+ z;
112
+ el;
113
+ constructor(c, r, z) {
114
+ this.z = z;
115
+ c.detach();
116
+ this.el = r.nativeElement;
117
+ proxyOutputs(this, this.el, ['ionChange']);
118
+ }
119
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonAccordionGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
120
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonAccordionGroup, isStandalone: true, selector: "ion-accordion-group", inputs: { animated: "animated", disabled: "disabled", expand: "expand", mode: "mode", multiple: "multiple", readonly: "readonly", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
121
+ };
122
+ IonAccordionGroup = __decorate([
123
+ ProxyCmp({
124
+ defineCustomElementFn: defineIonAccordionGroup,
125
+ inputs: ['animated', 'disabled', 'expand', 'mode', 'multiple', 'readonly', 'value']
126
+ })
127
+ ], IonAccordionGroup);
128
+ export { IonAccordionGroup };
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonAccordionGroup, decorators: [{
130
+ type: Component,
131
+ args: [{
132
+ selector: 'ion-accordion-group',
133
+ changeDetection: ChangeDetectionStrategy.OnPush,
134
+ template: '<ng-content></ng-content>',
135
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
136
+ inputs: ['animated', 'disabled', 'expand', 'mode', 'multiple', 'readonly', 'value'],
137
+ standalone: true
138
+ }]
139
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
140
+ let IonActionSheet = class IonActionSheet {
141
+ z;
142
+ el;
143
+ constructor(c, r, z) {
144
+ this.z = z;
145
+ c.detach();
146
+ this.el = r.nativeElement;
147
+ proxyOutputs(this, this.el, ['ionActionSheetDidPresent', 'ionActionSheetWillPresent', 'ionActionSheetWillDismiss', 'ionActionSheetDidDismiss', 'didPresent', 'willPresent', 'willDismiss', 'didDismiss']);
148
+ }
149
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonActionSheet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
150
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonActionSheet, isStandalone: true, selector: "ion-action-sheet", inputs: { animated: "animated", backdropDismiss: "backdropDismiss", buttons: "buttons", cssClass: "cssClass", enterAnimation: "enterAnimation", header: "header", htmlAttributes: "htmlAttributes", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", subHeader: "subHeader", translucent: "translucent", trigger: "trigger" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
151
+ };
152
+ IonActionSheet = __decorate([
153
+ ProxyCmp({
154
+ defineCustomElementFn: defineIonActionSheet,
155
+ inputs: ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'mode', 'subHeader', 'translucent', 'trigger'],
156
+ methods: ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss']
157
+ })
158
+ ], IonActionSheet);
159
+ export { IonActionSheet };
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonActionSheet, decorators: [{
161
+ type: Component,
162
+ args: [{
163
+ selector: 'ion-action-sheet',
164
+ changeDetection: ChangeDetectionStrategy.OnPush,
165
+ template: '<ng-content></ng-content>',
166
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
167
+ inputs: ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'mode', 'subHeader', 'translucent', 'trigger'],
168
+ standalone: true
169
+ }]
170
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
171
+ let IonAlert = class IonAlert {
172
+ z;
173
+ el;
174
+ constructor(c, r, z) {
175
+ this.z = z;
176
+ c.detach();
177
+ this.el = r.nativeElement;
178
+ proxyOutputs(this, this.el, ['ionAlertDidPresent', 'ionAlertWillPresent', 'ionAlertWillDismiss', 'ionAlertDidDismiss', 'didPresent', 'willPresent', 'willDismiss', 'didDismiss']);
179
+ }
180
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonAlert, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
181
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonAlert, isStandalone: true, selector: "ion-alert", inputs: { animated: "animated", backdropDismiss: "backdropDismiss", buttons: "buttons", cssClass: "cssClass", enterAnimation: "enterAnimation", header: "header", htmlAttributes: "htmlAttributes", inputs: "inputs", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", message: "message", mode: "mode", subHeader: "subHeader", translucent: "translucent", trigger: "trigger" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
182
+ };
183
+ IonAlert = __decorate([
184
+ ProxyCmp({
185
+ defineCustomElementFn: defineIonAlert,
186
+ inputs: ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'inputs', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'subHeader', 'translucent', 'trigger'],
187
+ methods: ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss']
188
+ })
189
+ ], IonAlert);
190
+ export { IonAlert };
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonAlert, decorators: [{
192
+ type: Component,
193
+ args: [{
194
+ selector: 'ion-alert',
195
+ changeDetection: ChangeDetectionStrategy.OnPush,
196
+ template: '<ng-content></ng-content>',
197
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
198
+ inputs: ['animated', 'backdropDismiss', 'buttons', 'cssClass', 'enterAnimation', 'header', 'htmlAttributes', 'inputs', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'subHeader', 'translucent', 'trigger'],
199
+ standalone: true
200
+ }]
201
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
202
+ let IonApp = class IonApp {
203
+ z;
204
+ el;
205
+ constructor(c, r, z) {
206
+ this.z = z;
207
+ c.detach();
208
+ this.el = r.nativeElement;
209
+ }
210
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonApp, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
211
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonApp, isStandalone: true, selector: "ion-app", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
212
+ };
213
+ IonApp = __decorate([
214
+ ProxyCmp({
215
+ defineCustomElementFn: defineIonApp,
216
+ methods: ['setFocus']
217
+ })
218
+ ], IonApp);
219
+ export { IonApp };
220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonApp, decorators: [{
221
+ type: Component,
222
+ args: [{
223
+ selector: 'ion-app',
224
+ changeDetection: ChangeDetectionStrategy.OnPush,
225
+ template: '<ng-content></ng-content>',
226
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
227
+ inputs: [],
228
+ standalone: true
229
+ }]
230
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
231
+ let IonAvatar = class IonAvatar {
232
+ z;
233
+ el;
234
+ constructor(c, r, z) {
235
+ this.z = z;
236
+ c.detach();
237
+ this.el = r.nativeElement;
238
+ }
239
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonAvatar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
240
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonAvatar, isStandalone: true, selector: "ion-avatar", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
241
+ };
242
+ IonAvatar = __decorate([
243
+ ProxyCmp({
244
+ defineCustomElementFn: defineIonAvatar
245
+ })
246
+ ], IonAvatar);
247
+ export { IonAvatar };
248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonAvatar, decorators: [{
249
+ type: Component,
250
+ args: [{
251
+ selector: 'ion-avatar',
252
+ changeDetection: ChangeDetectionStrategy.OnPush,
253
+ template: '<ng-content></ng-content>',
254
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
255
+ inputs: [],
256
+ standalone: true
257
+ }]
258
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
259
+ let IonBackdrop = class IonBackdrop {
260
+ z;
261
+ el;
262
+ constructor(c, r, z) {
263
+ this.z = z;
264
+ c.detach();
265
+ this.el = r.nativeElement;
266
+ proxyOutputs(this, this.el, ['ionBackdropTap']);
267
+ }
268
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonBackdrop, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
269
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonBackdrop, isStandalone: true, selector: "ion-backdrop", inputs: { stopPropagation: "stopPropagation", tappable: "tappable", visible: "visible" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
270
+ };
271
+ IonBackdrop = __decorate([
272
+ ProxyCmp({
273
+ defineCustomElementFn: defineIonBackdrop,
274
+ inputs: ['stopPropagation', 'tappable', 'visible']
275
+ })
276
+ ], IonBackdrop);
277
+ export { IonBackdrop };
278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonBackdrop, decorators: [{
279
+ type: Component,
280
+ args: [{
281
+ selector: 'ion-backdrop',
282
+ changeDetection: ChangeDetectionStrategy.OnPush,
283
+ template: '<ng-content></ng-content>',
284
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
285
+ inputs: ['stopPropagation', 'tappable', 'visible'],
286
+ standalone: true
287
+ }]
288
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
289
+ let IonBadge = class IonBadge {
290
+ z;
291
+ el;
292
+ constructor(c, r, z) {
293
+ this.z = z;
294
+ c.detach();
295
+ this.el = r.nativeElement;
296
+ }
297
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
298
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonBadge, isStandalone: true, selector: "ion-badge", inputs: { color: "color", mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
299
+ };
300
+ IonBadge = __decorate([
301
+ ProxyCmp({
302
+ defineCustomElementFn: defineIonBadge,
303
+ inputs: ['color', 'mode']
304
+ })
305
+ ], IonBadge);
306
+ export { IonBadge };
307
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonBadge, decorators: [{
308
+ type: Component,
309
+ args: [{
310
+ selector: 'ion-badge',
311
+ changeDetection: ChangeDetectionStrategy.OnPush,
312
+ template: '<ng-content></ng-content>',
313
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
314
+ inputs: ['color', 'mode'],
315
+ standalone: true
316
+ }]
317
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
318
+ let IonBreadcrumb = class IonBreadcrumb {
319
+ z;
320
+ el;
321
+ constructor(c, r, z) {
322
+ this.z = z;
323
+ c.detach();
324
+ this.el = r.nativeElement;
325
+ proxyOutputs(this, this.el, ['ionFocus', 'ionBlur']);
326
+ }
327
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonBreadcrumb, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
328
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonBreadcrumb, isStandalone: true, selector: "ion-breadcrumb", inputs: { active: "active", color: "color", disabled: "disabled", download: "download", href: "href", mode: "mode", rel: "rel", routerAnimation: "routerAnimation", routerDirection: "routerDirection", separator: "separator", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
329
+ };
330
+ IonBreadcrumb = __decorate([
331
+ ProxyCmp({
332
+ defineCustomElementFn: defineIonBreadcrumb,
333
+ inputs: ['active', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'separator', 'target']
334
+ })
335
+ ], IonBreadcrumb);
336
+ export { IonBreadcrumb };
337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonBreadcrumb, decorators: [{
338
+ type: Component,
339
+ args: [{
340
+ selector: 'ion-breadcrumb',
341
+ changeDetection: ChangeDetectionStrategy.OnPush,
342
+ template: '<ng-content></ng-content>',
343
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
344
+ inputs: ['active', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'separator', 'target'],
345
+ standalone: true
346
+ }]
347
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
348
+ let IonBreadcrumbs = class IonBreadcrumbs {
349
+ z;
350
+ el;
351
+ constructor(c, r, z) {
352
+ this.z = z;
353
+ c.detach();
354
+ this.el = r.nativeElement;
355
+ proxyOutputs(this, this.el, ['ionCollapsedClick']);
356
+ }
357
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonBreadcrumbs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
358
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonBreadcrumbs, isStandalone: true, selector: "ion-breadcrumbs", inputs: { color: "color", itemsAfterCollapse: "itemsAfterCollapse", itemsBeforeCollapse: "itemsBeforeCollapse", maxItems: "maxItems", mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
359
+ };
360
+ IonBreadcrumbs = __decorate([
361
+ ProxyCmp({
362
+ defineCustomElementFn: defineIonBreadcrumbs,
363
+ inputs: ['color', 'itemsAfterCollapse', 'itemsBeforeCollapse', 'maxItems', 'mode']
364
+ })
365
+ ], IonBreadcrumbs);
366
+ export { IonBreadcrumbs };
367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonBreadcrumbs, decorators: [{
368
+ type: Component,
369
+ args: [{
370
+ selector: 'ion-breadcrumbs',
371
+ changeDetection: ChangeDetectionStrategy.OnPush,
372
+ template: '<ng-content></ng-content>',
373
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
374
+ inputs: ['color', 'itemsAfterCollapse', 'itemsBeforeCollapse', 'maxItems', 'mode'],
375
+ standalone: true
376
+ }]
377
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
378
+ let IonButton = class IonButton {
379
+ z;
380
+ el;
381
+ constructor(c, r, z) {
382
+ this.z = z;
383
+ c.detach();
384
+ this.el = r.nativeElement;
385
+ proxyOutputs(this, this.el, ['ionFocus', 'ionBlur']);
386
+ }
387
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
388
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonButton, isStandalone: true, selector: "ion-button", inputs: { buttonType: "buttonType", color: "color", disabled: "disabled", download: "download", expand: "expand", fill: "fill", form: "form", href: "href", mode: "mode", rel: "rel", routerAnimation: "routerAnimation", routerDirection: "routerDirection", shape: "shape", size: "size", strong: "strong", target: "target", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
389
+ };
390
+ IonButton = __decorate([
391
+ ProxyCmp({
392
+ defineCustomElementFn: defineIonButton,
393
+ inputs: ['buttonType', 'color', 'disabled', 'download', 'expand', 'fill', 'form', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'shape', 'size', 'strong', 'target', 'type']
394
+ })
395
+ ], IonButton);
396
+ export { IonButton };
397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonButton, decorators: [{
398
+ type: Component,
399
+ args: [{
400
+ selector: 'ion-button',
401
+ changeDetection: ChangeDetectionStrategy.OnPush,
402
+ template: '<ng-content></ng-content>',
403
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
404
+ inputs: ['buttonType', 'color', 'disabled', 'download', 'expand', 'fill', 'form', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'shape', 'size', 'strong', 'target', 'type'],
405
+ standalone: true
406
+ }]
407
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
408
+ let IonButtons = class IonButtons {
409
+ z;
410
+ el;
411
+ constructor(c, r, z) {
412
+ this.z = z;
413
+ c.detach();
414
+ this.el = r.nativeElement;
415
+ }
416
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonButtons, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
417
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonButtons, isStandalone: true, selector: "ion-buttons", inputs: { collapse: "collapse" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
418
+ };
419
+ IonButtons = __decorate([
420
+ ProxyCmp({
421
+ defineCustomElementFn: defineIonButtons,
422
+ inputs: ['collapse']
423
+ })
424
+ ], IonButtons);
425
+ export { IonButtons };
426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonButtons, decorators: [{
427
+ type: Component,
428
+ args: [{
429
+ selector: 'ion-buttons',
430
+ changeDetection: ChangeDetectionStrategy.OnPush,
431
+ template: '<ng-content></ng-content>',
432
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
433
+ inputs: ['collapse'],
434
+ standalone: true
435
+ }]
436
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
437
+ let IonCard = class IonCard {
438
+ z;
439
+ el;
440
+ constructor(c, r, z) {
441
+ this.z = z;
442
+ c.detach();
443
+ this.el = r.nativeElement;
444
+ }
445
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
446
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonCard, isStandalone: true, selector: "ion-card", inputs: { button: "button", color: "color", disabled: "disabled", download: "download", href: "href", mode: "mode", rel: "rel", routerAnimation: "routerAnimation", routerDirection: "routerDirection", target: "target", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
447
+ };
448
+ IonCard = __decorate([
449
+ ProxyCmp({
450
+ defineCustomElementFn: defineIonCard,
451
+ inputs: ['button', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'target', 'type']
452
+ })
453
+ ], IonCard);
454
+ export { IonCard };
455
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCard, decorators: [{
456
+ type: Component,
457
+ args: [{
458
+ selector: 'ion-card',
459
+ changeDetection: ChangeDetectionStrategy.OnPush,
460
+ template: '<ng-content></ng-content>',
461
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
462
+ inputs: ['button', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'target', 'type'],
463
+ standalone: true
464
+ }]
465
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
466
+ let IonCardContent = class IonCardContent {
467
+ z;
468
+ el;
469
+ constructor(c, r, z) {
470
+ this.z = z;
471
+ c.detach();
472
+ this.el = r.nativeElement;
473
+ }
474
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCardContent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
475
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonCardContent, isStandalone: true, selector: "ion-card-content", inputs: { mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
476
+ };
477
+ IonCardContent = __decorate([
478
+ ProxyCmp({
479
+ defineCustomElementFn: defineIonCardContent,
480
+ inputs: ['mode']
481
+ })
482
+ ], IonCardContent);
483
+ export { IonCardContent };
484
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCardContent, decorators: [{
485
+ type: Component,
486
+ args: [{
487
+ selector: 'ion-card-content',
488
+ changeDetection: ChangeDetectionStrategy.OnPush,
489
+ template: '<ng-content></ng-content>',
490
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
491
+ inputs: ['mode'],
492
+ standalone: true
493
+ }]
494
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
495
+ let IonCardHeader = class IonCardHeader {
496
+ z;
497
+ el;
498
+ constructor(c, r, z) {
499
+ this.z = z;
500
+ c.detach();
501
+ this.el = r.nativeElement;
502
+ }
503
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCardHeader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
504
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonCardHeader, isStandalone: true, selector: "ion-card-header", inputs: { color: "color", mode: "mode", translucent: "translucent" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
505
+ };
506
+ IonCardHeader = __decorate([
507
+ ProxyCmp({
508
+ defineCustomElementFn: defineIonCardHeader,
509
+ inputs: ['color', 'mode', 'translucent']
510
+ })
511
+ ], IonCardHeader);
512
+ export { IonCardHeader };
513
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCardHeader, decorators: [{
514
+ type: Component,
515
+ args: [{
516
+ selector: 'ion-card-header',
517
+ changeDetection: ChangeDetectionStrategy.OnPush,
518
+ template: '<ng-content></ng-content>',
519
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
520
+ inputs: ['color', 'mode', 'translucent'],
521
+ standalone: true
522
+ }]
523
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
524
+ let IonCardSubtitle = class IonCardSubtitle {
525
+ z;
526
+ el;
527
+ constructor(c, r, z) {
528
+ this.z = z;
529
+ c.detach();
530
+ this.el = r.nativeElement;
531
+ }
532
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCardSubtitle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
533
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonCardSubtitle, isStandalone: true, selector: "ion-card-subtitle", inputs: { color: "color", mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
534
+ };
535
+ IonCardSubtitle = __decorate([
536
+ ProxyCmp({
537
+ defineCustomElementFn: defineIonCardSubtitle,
538
+ inputs: ['color', 'mode']
539
+ })
540
+ ], IonCardSubtitle);
541
+ export { IonCardSubtitle };
542
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCardSubtitle, decorators: [{
543
+ type: Component,
544
+ args: [{
545
+ selector: 'ion-card-subtitle',
546
+ changeDetection: ChangeDetectionStrategy.OnPush,
547
+ template: '<ng-content></ng-content>',
548
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
549
+ inputs: ['color', 'mode'],
550
+ standalone: true
551
+ }]
552
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
553
+ let IonCardTitle = class IonCardTitle {
554
+ z;
555
+ el;
556
+ constructor(c, r, z) {
557
+ this.z = z;
558
+ c.detach();
559
+ this.el = r.nativeElement;
560
+ }
561
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCardTitle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
562
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonCardTitle, isStandalone: true, selector: "ion-card-title", inputs: { color: "color", mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
563
+ };
564
+ IonCardTitle = __decorate([
565
+ ProxyCmp({
566
+ defineCustomElementFn: defineIonCardTitle,
567
+ inputs: ['color', 'mode']
568
+ })
569
+ ], IonCardTitle);
570
+ export { IonCardTitle };
571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCardTitle, decorators: [{
572
+ type: Component,
573
+ args: [{
574
+ selector: 'ion-card-title',
575
+ changeDetection: ChangeDetectionStrategy.OnPush,
576
+ template: '<ng-content></ng-content>',
577
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
578
+ inputs: ['color', 'mode'],
579
+ standalone: true
580
+ }]
581
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
582
+ let IonChip = class IonChip {
583
+ z;
584
+ el;
585
+ constructor(c, r, z) {
586
+ this.z = z;
587
+ c.detach();
588
+ this.el = r.nativeElement;
589
+ }
590
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonChip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
591
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonChip, isStandalone: true, selector: "ion-chip", inputs: { color: "color", disabled: "disabled", mode: "mode", outline: "outline" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
592
+ };
593
+ IonChip = __decorate([
594
+ ProxyCmp({
595
+ defineCustomElementFn: defineIonChip,
596
+ inputs: ['color', 'disabled', 'mode', 'outline']
597
+ })
598
+ ], IonChip);
599
+ export { IonChip };
600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonChip, decorators: [{
601
+ type: Component,
602
+ args: [{
603
+ selector: 'ion-chip',
604
+ changeDetection: ChangeDetectionStrategy.OnPush,
605
+ template: '<ng-content></ng-content>',
606
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
607
+ inputs: ['color', 'disabled', 'mode', 'outline'],
608
+ standalone: true
609
+ }]
610
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
611
+ let IonCol = class IonCol {
612
+ z;
613
+ el;
614
+ constructor(c, r, z) {
615
+ this.z = z;
616
+ c.detach();
617
+ this.el = r.nativeElement;
618
+ }
619
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCol, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
620
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonCol, isStandalone: true, selector: "ion-col", inputs: { offset: "offset", offsetLg: "offsetLg", offsetMd: "offsetMd", offsetSm: "offsetSm", offsetXl: "offsetXl", offsetXs: "offsetXs", pull: "pull", pullLg: "pullLg", pullMd: "pullMd", pullSm: "pullSm", pullXl: "pullXl", pullXs: "pullXs", push: "push", pushLg: "pushLg", pushMd: "pushMd", pushSm: "pushSm", pushXl: "pushXl", pushXs: "pushXs", size: "size", sizeLg: "sizeLg", sizeMd: "sizeMd", sizeSm: "sizeSm", sizeXl: "sizeXl", sizeXs: "sizeXs" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
621
+ };
622
+ IonCol = __decorate([
623
+ ProxyCmp({
624
+ defineCustomElementFn: defineIonCol,
625
+ inputs: ['offset', 'offsetLg', 'offsetMd', 'offsetSm', 'offsetXl', 'offsetXs', 'pull', 'pullLg', 'pullMd', 'pullSm', 'pullXl', 'pullXs', 'push', 'pushLg', 'pushMd', 'pushSm', 'pushXl', 'pushXs', 'size', 'sizeLg', 'sizeMd', 'sizeSm', 'sizeXl', 'sizeXs']
626
+ })
627
+ ], IonCol);
628
+ export { IonCol };
629
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonCol, decorators: [{
630
+ type: Component,
631
+ args: [{
632
+ selector: 'ion-col',
633
+ changeDetection: ChangeDetectionStrategy.OnPush,
634
+ template: '<ng-content></ng-content>',
635
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
636
+ inputs: ['offset', 'offsetLg', 'offsetMd', 'offsetSm', 'offsetXl', 'offsetXs', 'pull', 'pullLg', 'pullMd', 'pullSm', 'pullXl', 'pullXs', 'push', 'pushLg', 'pushMd', 'pushSm', 'pushXl', 'pushXs', 'size', 'sizeLg', 'sizeMd', 'sizeSm', 'sizeXl', 'sizeXs'],
637
+ standalone: true
638
+ }]
639
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
640
+ let IonContent = class IonContent {
641
+ z;
642
+ el;
643
+ constructor(c, r, z) {
644
+ this.z = z;
645
+ c.detach();
646
+ this.el = r.nativeElement;
647
+ proxyOutputs(this, this.el, ['ionScrollStart', 'ionScroll', 'ionScrollEnd']);
648
+ }
649
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonContent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
650
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonContent, isStandalone: true, selector: "ion-content", inputs: { color: "color", fixedSlotPlacement: "fixedSlotPlacement", forceOverscroll: "forceOverscroll", fullscreen: "fullscreen", scrollEvents: "scrollEvents", scrollX: "scrollX", scrollY: "scrollY" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
651
+ };
652
+ IonContent = __decorate([
653
+ ProxyCmp({
654
+ defineCustomElementFn: defineIonContent,
655
+ inputs: ['color', 'fixedSlotPlacement', 'forceOverscroll', 'fullscreen', 'scrollEvents', 'scrollX', 'scrollY'],
656
+ methods: ['getScrollElement', 'scrollToTop', 'scrollToBottom', 'scrollByPoint', 'scrollToPoint']
657
+ })
658
+ ], IonContent);
659
+ export { IonContent };
660
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonContent, decorators: [{
661
+ type: Component,
662
+ args: [{
663
+ selector: 'ion-content',
664
+ changeDetection: ChangeDetectionStrategy.OnPush,
665
+ template: '<ng-content></ng-content>',
666
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
667
+ inputs: ['color', 'fixedSlotPlacement', 'forceOverscroll', 'fullscreen', 'scrollEvents', 'scrollX', 'scrollY'],
668
+ standalone: true
669
+ }]
670
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
671
+ let IonDatetimeButton = class IonDatetimeButton {
672
+ z;
673
+ el;
674
+ constructor(c, r, z) {
675
+ this.z = z;
676
+ c.detach();
677
+ this.el = r.nativeElement;
678
+ }
679
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonDatetimeButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
680
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonDatetimeButton, isStandalone: true, selector: "ion-datetime-button", inputs: { color: "color", datetime: "datetime", disabled: "disabled", mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
681
+ };
682
+ IonDatetimeButton = __decorate([
683
+ ProxyCmp({
684
+ defineCustomElementFn: defineIonDatetimeButton,
685
+ inputs: ['color', 'datetime', 'disabled', 'mode']
686
+ })
687
+ ], IonDatetimeButton);
688
+ export { IonDatetimeButton };
689
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonDatetimeButton, decorators: [{
690
+ type: Component,
691
+ args: [{
692
+ selector: 'ion-datetime-button',
693
+ changeDetection: ChangeDetectionStrategy.OnPush,
694
+ template: '<ng-content></ng-content>',
695
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
696
+ inputs: ['color', 'datetime', 'disabled', 'mode'],
697
+ standalone: true
698
+ }]
699
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
700
+ let IonFab = class IonFab {
701
+ z;
702
+ el;
703
+ constructor(c, r, z) {
704
+ this.z = z;
705
+ c.detach();
706
+ this.el = r.nativeElement;
707
+ }
708
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonFab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
709
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonFab, isStandalone: true, selector: "ion-fab", inputs: { activated: "activated", edge: "edge", horizontal: "horizontal", vertical: "vertical" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
710
+ };
711
+ IonFab = __decorate([
712
+ ProxyCmp({
713
+ defineCustomElementFn: defineIonFab,
714
+ inputs: ['activated', 'edge', 'horizontal', 'vertical'],
715
+ methods: ['close']
716
+ })
717
+ ], IonFab);
718
+ export { IonFab };
719
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonFab, decorators: [{
720
+ type: Component,
721
+ args: [{
722
+ selector: 'ion-fab',
723
+ changeDetection: ChangeDetectionStrategy.OnPush,
724
+ template: '<ng-content></ng-content>',
725
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
726
+ inputs: ['activated', 'edge', 'horizontal', 'vertical'],
727
+ standalone: true
728
+ }]
729
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
730
+ let IonFabButton = class IonFabButton {
731
+ z;
732
+ el;
733
+ constructor(c, r, z) {
734
+ this.z = z;
735
+ c.detach();
736
+ this.el = r.nativeElement;
737
+ proxyOutputs(this, this.el, ['ionFocus', 'ionBlur']);
738
+ }
739
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonFabButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
740
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonFabButton, isStandalone: true, selector: "ion-fab-button", inputs: { activated: "activated", closeIcon: "closeIcon", color: "color", disabled: "disabled", download: "download", href: "href", mode: "mode", rel: "rel", routerAnimation: "routerAnimation", routerDirection: "routerDirection", show: "show", size: "size", target: "target", translucent: "translucent", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
741
+ };
742
+ IonFabButton = __decorate([
743
+ ProxyCmp({
744
+ defineCustomElementFn: defineIonFabButton,
745
+ inputs: ['activated', 'closeIcon', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'show', 'size', 'target', 'translucent', 'type']
746
+ })
747
+ ], IonFabButton);
748
+ export { IonFabButton };
749
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonFabButton, decorators: [{
750
+ type: Component,
751
+ args: [{
752
+ selector: 'ion-fab-button',
753
+ changeDetection: ChangeDetectionStrategy.OnPush,
754
+ template: '<ng-content></ng-content>',
755
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
756
+ inputs: ['activated', 'closeIcon', 'color', 'disabled', 'download', 'href', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'show', 'size', 'target', 'translucent', 'type'],
757
+ standalone: true
758
+ }]
759
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
760
+ let IonFabList = class IonFabList {
761
+ z;
762
+ el;
763
+ constructor(c, r, z) {
764
+ this.z = z;
765
+ c.detach();
766
+ this.el = r.nativeElement;
767
+ }
768
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonFabList, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
769
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonFabList, isStandalone: true, selector: "ion-fab-list", inputs: { activated: "activated", side: "side" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
770
+ };
771
+ IonFabList = __decorate([
772
+ ProxyCmp({
773
+ defineCustomElementFn: defineIonFabList,
774
+ inputs: ['activated', 'side']
775
+ })
776
+ ], IonFabList);
777
+ export { IonFabList };
778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonFabList, decorators: [{
779
+ type: Component,
780
+ args: [{
781
+ selector: 'ion-fab-list',
782
+ changeDetection: ChangeDetectionStrategy.OnPush,
783
+ template: '<ng-content></ng-content>',
784
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
785
+ inputs: ['activated', 'side'],
786
+ standalone: true
787
+ }]
788
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
789
+ let IonFooter = class IonFooter {
790
+ z;
791
+ el;
792
+ constructor(c, r, z) {
793
+ this.z = z;
794
+ c.detach();
795
+ this.el = r.nativeElement;
796
+ }
797
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonFooter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
798
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonFooter, isStandalone: true, selector: "ion-footer", inputs: { collapse: "collapse", mode: "mode", translucent: "translucent" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
799
+ };
800
+ IonFooter = __decorate([
801
+ ProxyCmp({
802
+ defineCustomElementFn: defineIonFooter,
803
+ inputs: ['collapse', 'mode', 'translucent']
804
+ })
805
+ ], IonFooter);
806
+ export { IonFooter };
807
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonFooter, decorators: [{
808
+ type: Component,
809
+ args: [{
810
+ selector: 'ion-footer',
811
+ changeDetection: ChangeDetectionStrategy.OnPush,
812
+ template: '<ng-content></ng-content>',
813
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
814
+ inputs: ['collapse', 'mode', 'translucent'],
815
+ standalone: true
816
+ }]
817
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
818
+ let IonGrid = class IonGrid {
819
+ z;
820
+ el;
821
+ constructor(c, r, z) {
822
+ this.z = z;
823
+ c.detach();
824
+ this.el = r.nativeElement;
825
+ }
826
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonGrid, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
827
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonGrid, isStandalone: true, selector: "ion-grid", inputs: { fixed: "fixed" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
828
+ };
829
+ IonGrid = __decorate([
830
+ ProxyCmp({
831
+ defineCustomElementFn: defineIonGrid,
832
+ inputs: ['fixed']
833
+ })
834
+ ], IonGrid);
835
+ export { IonGrid };
836
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonGrid, decorators: [{
837
+ type: Component,
838
+ args: [{
839
+ selector: 'ion-grid',
840
+ changeDetection: ChangeDetectionStrategy.OnPush,
841
+ template: '<ng-content></ng-content>',
842
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
843
+ inputs: ['fixed'],
844
+ standalone: true
845
+ }]
846
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
847
+ let IonHeader = class IonHeader {
848
+ z;
849
+ el;
850
+ constructor(c, r, z) {
851
+ this.z = z;
852
+ c.detach();
853
+ this.el = r.nativeElement;
854
+ }
855
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonHeader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
856
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonHeader, isStandalone: true, selector: "ion-header", inputs: { collapse: "collapse", mode: "mode", translucent: "translucent" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
857
+ };
858
+ IonHeader = __decorate([
859
+ ProxyCmp({
860
+ defineCustomElementFn: defineIonHeader,
861
+ inputs: ['collapse', 'mode', 'translucent']
862
+ })
863
+ ], IonHeader);
864
+ export { IonHeader };
865
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonHeader, decorators: [{
866
+ type: Component,
867
+ args: [{
868
+ selector: 'ion-header',
869
+ changeDetection: ChangeDetectionStrategy.OnPush,
870
+ template: '<ng-content></ng-content>',
871
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
872
+ inputs: ['collapse', 'mode', 'translucent'],
873
+ standalone: true
874
+ }]
875
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
876
+ let IonImg = class IonImg {
877
+ z;
878
+ el;
879
+ constructor(c, r, z) {
880
+ this.z = z;
881
+ c.detach();
882
+ this.el = r.nativeElement;
883
+ proxyOutputs(this, this.el, ['ionImgWillLoad', 'ionImgDidLoad', 'ionError']);
884
+ }
885
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonImg, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
886
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonImg, isStandalone: true, selector: "ion-img", inputs: { alt: "alt", src: "src" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
887
+ };
888
+ IonImg = __decorate([
889
+ ProxyCmp({
890
+ defineCustomElementFn: defineIonImg,
891
+ inputs: ['alt', 'src']
892
+ })
893
+ ], IonImg);
894
+ export { IonImg };
895
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonImg, decorators: [{
896
+ type: Component,
897
+ args: [{
898
+ selector: 'ion-img',
899
+ changeDetection: ChangeDetectionStrategy.OnPush,
900
+ template: '<ng-content></ng-content>',
901
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
902
+ inputs: ['alt', 'src'],
903
+ standalone: true
904
+ }]
905
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
906
+ let IonInfiniteScroll = class IonInfiniteScroll {
907
+ z;
908
+ el;
909
+ constructor(c, r, z) {
910
+ this.z = z;
911
+ c.detach();
912
+ this.el = r.nativeElement;
913
+ proxyOutputs(this, this.el, ['ionInfinite']);
914
+ }
915
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonInfiniteScroll, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
916
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonInfiniteScroll, isStandalone: true, selector: "ion-infinite-scroll", inputs: { disabled: "disabled", position: "position", threshold: "threshold" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
917
+ };
918
+ IonInfiniteScroll = __decorate([
919
+ ProxyCmp({
920
+ defineCustomElementFn: defineIonInfiniteScroll,
921
+ inputs: ['disabled', 'position', 'threshold'],
922
+ methods: ['complete']
923
+ })
924
+ ], IonInfiniteScroll);
925
+ export { IonInfiniteScroll };
926
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonInfiniteScroll, decorators: [{
927
+ type: Component,
928
+ args: [{
929
+ selector: 'ion-infinite-scroll',
930
+ changeDetection: ChangeDetectionStrategy.OnPush,
931
+ template: '<ng-content></ng-content>',
932
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
933
+ inputs: ['disabled', 'position', 'threshold'],
934
+ standalone: true
935
+ }]
936
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
937
+ let IonInfiniteScrollContent = class IonInfiniteScrollContent {
938
+ z;
939
+ el;
940
+ constructor(c, r, z) {
941
+ this.z = z;
942
+ c.detach();
943
+ this.el = r.nativeElement;
944
+ }
945
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonInfiniteScrollContent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
946
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonInfiniteScrollContent, isStandalone: true, selector: "ion-infinite-scroll-content", inputs: { loadingSpinner: "loadingSpinner", loadingText: "loadingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
947
+ };
948
+ IonInfiniteScrollContent = __decorate([
949
+ ProxyCmp({
950
+ defineCustomElementFn: defineIonInfiniteScrollContent,
951
+ inputs: ['loadingSpinner', 'loadingText']
952
+ })
953
+ ], IonInfiniteScrollContent);
954
+ export { IonInfiniteScrollContent };
955
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonInfiniteScrollContent, decorators: [{
956
+ type: Component,
957
+ args: [{
958
+ selector: 'ion-infinite-scroll-content',
959
+ changeDetection: ChangeDetectionStrategy.OnPush,
960
+ template: '<ng-content></ng-content>',
961
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
962
+ inputs: ['loadingSpinner', 'loadingText'],
963
+ standalone: true
964
+ }]
965
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
966
+ let IonInputPasswordToggle = class IonInputPasswordToggle {
967
+ z;
968
+ el;
969
+ constructor(c, r, z) {
970
+ this.z = z;
971
+ c.detach();
972
+ this.el = r.nativeElement;
973
+ }
974
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonInputPasswordToggle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
975
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonInputPasswordToggle, isStandalone: true, selector: "ion-input-password-toggle", inputs: { color: "color", hideIcon: "hideIcon", mode: "mode", showIcon: "showIcon" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
976
+ };
977
+ IonInputPasswordToggle = __decorate([
978
+ ProxyCmp({
979
+ defineCustomElementFn: defineIonInputPasswordToggle,
980
+ inputs: ['color', 'hideIcon', 'mode', 'showIcon']
981
+ })
982
+ ], IonInputPasswordToggle);
983
+ export { IonInputPasswordToggle };
984
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonInputPasswordToggle, decorators: [{
985
+ type: Component,
986
+ args: [{
987
+ selector: 'ion-input-password-toggle',
988
+ changeDetection: ChangeDetectionStrategy.OnPush,
989
+ template: '<ng-content></ng-content>',
990
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
991
+ inputs: ['color', 'hideIcon', 'mode', 'showIcon'],
992
+ standalone: true
993
+ }]
994
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
995
+ let IonItem = class IonItem {
996
+ z;
997
+ el;
998
+ constructor(c, r, z) {
999
+ this.z = z;
1000
+ c.detach();
1001
+ this.el = r.nativeElement;
1002
+ }
1003
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1004
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonItem, isStandalone: true, selector: "ion-item", inputs: { button: "button", color: "color", detail: "detail", detailIcon: "detailIcon", disabled: "disabled", download: "download", href: "href", lines: "lines", mode: "mode", rel: "rel", routerAnimation: "routerAnimation", routerDirection: "routerDirection", target: "target", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1005
+ };
1006
+ IonItem = __decorate([
1007
+ ProxyCmp({
1008
+ defineCustomElementFn: defineIonItem,
1009
+ inputs: ['button', 'color', 'detail', 'detailIcon', 'disabled', 'download', 'href', 'lines', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'target', 'type']
1010
+ })
1011
+ ], IonItem);
1012
+ export { IonItem };
1013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItem, decorators: [{
1014
+ type: Component,
1015
+ args: [{
1016
+ selector: 'ion-item',
1017
+ changeDetection: ChangeDetectionStrategy.OnPush,
1018
+ template: '<ng-content></ng-content>',
1019
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1020
+ inputs: ['button', 'color', 'detail', 'detailIcon', 'disabled', 'download', 'href', 'lines', 'mode', 'rel', 'routerAnimation', 'routerDirection', 'target', 'type'],
1021
+ standalone: true
1022
+ }]
1023
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1024
+ let IonItemDivider = class IonItemDivider {
1025
+ z;
1026
+ el;
1027
+ constructor(c, r, z) {
1028
+ this.z = z;
1029
+ c.detach();
1030
+ this.el = r.nativeElement;
1031
+ }
1032
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItemDivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1033
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonItemDivider, isStandalone: true, selector: "ion-item-divider", inputs: { color: "color", mode: "mode", sticky: "sticky" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1034
+ };
1035
+ IonItemDivider = __decorate([
1036
+ ProxyCmp({
1037
+ defineCustomElementFn: defineIonItemDivider,
1038
+ inputs: ['color', 'mode', 'sticky']
1039
+ })
1040
+ ], IonItemDivider);
1041
+ export { IonItemDivider };
1042
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItemDivider, decorators: [{
1043
+ type: Component,
1044
+ args: [{
1045
+ selector: 'ion-item-divider',
1046
+ changeDetection: ChangeDetectionStrategy.OnPush,
1047
+ template: '<ng-content></ng-content>',
1048
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1049
+ inputs: ['color', 'mode', 'sticky'],
1050
+ standalone: true
1051
+ }]
1052
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1053
+ let IonItemGroup = class IonItemGroup {
1054
+ z;
1055
+ el;
1056
+ constructor(c, r, z) {
1057
+ this.z = z;
1058
+ c.detach();
1059
+ this.el = r.nativeElement;
1060
+ }
1061
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItemGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1062
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonItemGroup, isStandalone: true, selector: "ion-item-group", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1063
+ };
1064
+ IonItemGroup = __decorate([
1065
+ ProxyCmp({
1066
+ defineCustomElementFn: defineIonItemGroup
1067
+ })
1068
+ ], IonItemGroup);
1069
+ export { IonItemGroup };
1070
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItemGroup, decorators: [{
1071
+ type: Component,
1072
+ args: [{
1073
+ selector: 'ion-item-group',
1074
+ changeDetection: ChangeDetectionStrategy.OnPush,
1075
+ template: '<ng-content></ng-content>',
1076
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1077
+ inputs: [],
1078
+ standalone: true
1079
+ }]
1080
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1081
+ let IonItemOption = class IonItemOption {
1082
+ z;
1083
+ el;
1084
+ constructor(c, r, z) {
1085
+ this.z = z;
1086
+ c.detach();
1087
+ this.el = r.nativeElement;
1088
+ }
1089
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItemOption, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1090
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonItemOption, isStandalone: true, selector: "ion-item-option", inputs: { color: "color", disabled: "disabled", download: "download", expandable: "expandable", href: "href", mode: "mode", rel: "rel", target: "target", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1091
+ };
1092
+ IonItemOption = __decorate([
1093
+ ProxyCmp({
1094
+ defineCustomElementFn: defineIonItemOption,
1095
+ inputs: ['color', 'disabled', 'download', 'expandable', 'href', 'mode', 'rel', 'target', 'type']
1096
+ })
1097
+ ], IonItemOption);
1098
+ export { IonItemOption };
1099
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItemOption, decorators: [{
1100
+ type: Component,
1101
+ args: [{
1102
+ selector: 'ion-item-option',
1103
+ changeDetection: ChangeDetectionStrategy.OnPush,
1104
+ template: '<ng-content></ng-content>',
1105
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1106
+ inputs: ['color', 'disabled', 'download', 'expandable', 'href', 'mode', 'rel', 'target', 'type'],
1107
+ standalone: true
1108
+ }]
1109
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1110
+ let IonItemOptions = class IonItemOptions {
1111
+ z;
1112
+ el;
1113
+ constructor(c, r, z) {
1114
+ this.z = z;
1115
+ c.detach();
1116
+ this.el = r.nativeElement;
1117
+ proxyOutputs(this, this.el, ['ionSwipe']);
1118
+ }
1119
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItemOptions, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1120
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonItemOptions, isStandalone: true, selector: "ion-item-options", inputs: { side: "side" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1121
+ };
1122
+ IonItemOptions = __decorate([
1123
+ ProxyCmp({
1124
+ defineCustomElementFn: defineIonItemOptions,
1125
+ inputs: ['side']
1126
+ })
1127
+ ], IonItemOptions);
1128
+ export { IonItemOptions };
1129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItemOptions, decorators: [{
1130
+ type: Component,
1131
+ args: [{
1132
+ selector: 'ion-item-options',
1133
+ changeDetection: ChangeDetectionStrategy.OnPush,
1134
+ template: '<ng-content></ng-content>',
1135
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1136
+ inputs: ['side'],
1137
+ standalone: true
1138
+ }]
1139
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1140
+ let IonItemSliding = class IonItemSliding {
1141
+ z;
1142
+ el;
1143
+ constructor(c, r, z) {
1144
+ this.z = z;
1145
+ c.detach();
1146
+ this.el = r.nativeElement;
1147
+ proxyOutputs(this, this.el, ['ionDrag']);
1148
+ }
1149
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItemSliding, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1150
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonItemSliding, isStandalone: true, selector: "ion-item-sliding", inputs: { disabled: "disabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1151
+ };
1152
+ IonItemSliding = __decorate([
1153
+ ProxyCmp({
1154
+ defineCustomElementFn: defineIonItemSliding,
1155
+ inputs: ['disabled'],
1156
+ methods: ['getOpenAmount', 'getSlidingRatio', 'open', 'close', 'closeOpened']
1157
+ })
1158
+ ], IonItemSliding);
1159
+ export { IonItemSliding };
1160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonItemSliding, decorators: [{
1161
+ type: Component,
1162
+ args: [{
1163
+ selector: 'ion-item-sliding',
1164
+ changeDetection: ChangeDetectionStrategy.OnPush,
1165
+ template: '<ng-content></ng-content>',
1166
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1167
+ inputs: ['disabled'],
1168
+ standalone: true
1169
+ }]
1170
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1171
+ let IonLabel = class IonLabel {
1172
+ z;
1173
+ el;
1174
+ constructor(c, r, z) {
1175
+ this.z = z;
1176
+ c.detach();
1177
+ this.el = r.nativeElement;
1178
+ }
1179
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonLabel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1180
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonLabel, isStandalone: true, selector: "ion-label", inputs: { color: "color", mode: "mode", position: "position" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1181
+ };
1182
+ IonLabel = __decorate([
1183
+ ProxyCmp({
1184
+ defineCustomElementFn: defineIonLabel,
1185
+ inputs: ['color', 'mode', 'position']
1186
+ })
1187
+ ], IonLabel);
1188
+ export { IonLabel };
1189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonLabel, decorators: [{
1190
+ type: Component,
1191
+ args: [{
1192
+ selector: 'ion-label',
1193
+ changeDetection: ChangeDetectionStrategy.OnPush,
1194
+ template: '<ng-content></ng-content>',
1195
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1196
+ inputs: ['color', 'mode', 'position'],
1197
+ standalone: true
1198
+ }]
1199
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1200
+ let IonList = class IonList {
1201
+ z;
1202
+ el;
1203
+ constructor(c, r, z) {
1204
+ this.z = z;
1205
+ c.detach();
1206
+ this.el = r.nativeElement;
1207
+ }
1208
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonList, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1209
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonList, isStandalone: true, selector: "ion-list", inputs: { inset: "inset", lines: "lines", mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1210
+ };
1211
+ IonList = __decorate([
1212
+ ProxyCmp({
1213
+ defineCustomElementFn: defineIonList,
1214
+ inputs: ['inset', 'lines', 'mode'],
1215
+ methods: ['closeSlidingItems']
1216
+ })
1217
+ ], IonList);
1218
+ export { IonList };
1219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonList, decorators: [{
1220
+ type: Component,
1221
+ args: [{
1222
+ selector: 'ion-list',
1223
+ changeDetection: ChangeDetectionStrategy.OnPush,
1224
+ template: '<ng-content></ng-content>',
1225
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1226
+ inputs: ['inset', 'lines', 'mode'],
1227
+ standalone: true
1228
+ }]
1229
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1230
+ let IonListHeader = class IonListHeader {
1231
+ z;
1232
+ el;
1233
+ constructor(c, r, z) {
1234
+ this.z = z;
1235
+ c.detach();
1236
+ this.el = r.nativeElement;
1237
+ }
1238
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonListHeader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1239
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonListHeader, isStandalone: true, selector: "ion-list-header", inputs: { color: "color", lines: "lines", mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1240
+ };
1241
+ IonListHeader = __decorate([
1242
+ ProxyCmp({
1243
+ defineCustomElementFn: defineIonListHeader,
1244
+ inputs: ['color', 'lines', 'mode']
1245
+ })
1246
+ ], IonListHeader);
1247
+ export { IonListHeader };
1248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonListHeader, decorators: [{
1249
+ type: Component,
1250
+ args: [{
1251
+ selector: 'ion-list-header',
1252
+ changeDetection: ChangeDetectionStrategy.OnPush,
1253
+ template: '<ng-content></ng-content>',
1254
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1255
+ inputs: ['color', 'lines', 'mode'],
1256
+ standalone: true
1257
+ }]
1258
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1259
+ let IonLoading = class IonLoading {
1260
+ z;
1261
+ el;
1262
+ constructor(c, r, z) {
1263
+ this.z = z;
1264
+ c.detach();
1265
+ this.el = r.nativeElement;
1266
+ proxyOutputs(this, this.el, ['ionLoadingDidPresent', 'ionLoadingWillPresent', 'ionLoadingWillDismiss', 'ionLoadingDidDismiss', 'didPresent', 'willPresent', 'willDismiss', 'didDismiss']);
1267
+ }
1268
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonLoading, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1269
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonLoading, isStandalone: true, selector: "ion-loading", inputs: { animated: "animated", backdropDismiss: "backdropDismiss", cssClass: "cssClass", duration: "duration", enterAnimation: "enterAnimation", htmlAttributes: "htmlAttributes", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", message: "message", mode: "mode", showBackdrop: "showBackdrop", spinner: "spinner", translucent: "translucent", trigger: "trigger" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1270
+ };
1271
+ IonLoading = __decorate([
1272
+ ProxyCmp({
1273
+ defineCustomElementFn: defineIonLoading,
1274
+ inputs: ['animated', 'backdropDismiss', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'showBackdrop', 'spinner', 'translucent', 'trigger'],
1275
+ methods: ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss']
1276
+ })
1277
+ ], IonLoading);
1278
+ export { IonLoading };
1279
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonLoading, decorators: [{
1280
+ type: Component,
1281
+ args: [{
1282
+ selector: 'ion-loading',
1283
+ changeDetection: ChangeDetectionStrategy.OnPush,
1284
+ template: '<ng-content></ng-content>',
1285
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1286
+ inputs: ['animated', 'backdropDismiss', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'message', 'mode', 'showBackdrop', 'spinner', 'translucent', 'trigger'],
1287
+ standalone: true
1288
+ }]
1289
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1290
+ let IonMenu = class IonMenu {
1291
+ z;
1292
+ el;
1293
+ constructor(c, r, z) {
1294
+ this.z = z;
1295
+ c.detach();
1296
+ this.el = r.nativeElement;
1297
+ proxyOutputs(this, this.el, ['ionWillOpen', 'ionWillClose', 'ionDidOpen', 'ionDidClose']);
1298
+ }
1299
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1300
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonMenu, isStandalone: true, selector: "ion-menu", inputs: { contentId: "contentId", disabled: "disabled", maxEdgeStart: "maxEdgeStart", menuId: "menuId", side: "side", swipeGesture: "swipeGesture", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1301
+ };
1302
+ IonMenu = __decorate([
1303
+ ProxyCmp({
1304
+ defineCustomElementFn: defineIonMenu,
1305
+ inputs: ['contentId', 'disabled', 'maxEdgeStart', 'menuId', 'side', 'swipeGesture', 'type'],
1306
+ methods: ['isOpen', 'isActive', 'open', 'close', 'toggle', 'setOpen']
1307
+ })
1308
+ ], IonMenu);
1309
+ export { IonMenu };
1310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonMenu, decorators: [{
1311
+ type: Component,
1312
+ args: [{
1313
+ selector: 'ion-menu',
1314
+ changeDetection: ChangeDetectionStrategy.OnPush,
1315
+ template: '<ng-content></ng-content>',
1316
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1317
+ inputs: ['contentId', 'disabled', 'maxEdgeStart', 'menuId', 'side', 'swipeGesture', 'type'],
1318
+ standalone: true
1319
+ }]
1320
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1321
+ let IonMenuButton = class IonMenuButton {
1322
+ z;
1323
+ el;
1324
+ constructor(c, r, z) {
1325
+ this.z = z;
1326
+ c.detach();
1327
+ this.el = r.nativeElement;
1328
+ }
1329
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonMenuButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1330
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonMenuButton, isStandalone: true, selector: "ion-menu-button", inputs: { autoHide: "autoHide", color: "color", disabled: "disabled", menu: "menu", mode: "mode", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1331
+ };
1332
+ IonMenuButton = __decorate([
1333
+ ProxyCmp({
1334
+ defineCustomElementFn: defineIonMenuButton,
1335
+ inputs: ['autoHide', 'color', 'disabled', 'menu', 'mode', 'type']
1336
+ })
1337
+ ], IonMenuButton);
1338
+ export { IonMenuButton };
1339
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonMenuButton, decorators: [{
1340
+ type: Component,
1341
+ args: [{
1342
+ selector: 'ion-menu-button',
1343
+ changeDetection: ChangeDetectionStrategy.OnPush,
1344
+ template: '<ng-content></ng-content>',
1345
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1346
+ inputs: ['autoHide', 'color', 'disabled', 'menu', 'mode', 'type'],
1347
+ standalone: true
1348
+ }]
1349
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1350
+ let IonMenuToggle = class IonMenuToggle {
1351
+ z;
1352
+ el;
1353
+ constructor(c, r, z) {
1354
+ this.z = z;
1355
+ c.detach();
1356
+ this.el = r.nativeElement;
1357
+ }
1358
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonMenuToggle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1359
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonMenuToggle, isStandalone: true, selector: "ion-menu-toggle", inputs: { autoHide: "autoHide", menu: "menu" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1360
+ };
1361
+ IonMenuToggle = __decorate([
1362
+ ProxyCmp({
1363
+ defineCustomElementFn: defineIonMenuToggle,
1364
+ inputs: ['autoHide', 'menu']
1365
+ })
1366
+ ], IonMenuToggle);
1367
+ export { IonMenuToggle };
1368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonMenuToggle, decorators: [{
1369
+ type: Component,
1370
+ args: [{
1371
+ selector: 'ion-menu-toggle',
1372
+ changeDetection: ChangeDetectionStrategy.OnPush,
1373
+ template: '<ng-content></ng-content>',
1374
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1375
+ inputs: ['autoHide', 'menu'],
1376
+ standalone: true
1377
+ }]
1378
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1379
+ let IonNavLink = class IonNavLink {
1380
+ z;
1381
+ el;
1382
+ constructor(c, r, z) {
1383
+ this.z = z;
1384
+ c.detach();
1385
+ this.el = r.nativeElement;
1386
+ }
1387
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonNavLink, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1388
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonNavLink, isStandalone: true, selector: "ion-nav-link", inputs: { component: "component", componentProps: "componentProps", routerAnimation: "routerAnimation", routerDirection: "routerDirection" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1389
+ };
1390
+ IonNavLink = __decorate([
1391
+ ProxyCmp({
1392
+ defineCustomElementFn: defineIonNavLink,
1393
+ inputs: ['component', 'componentProps', 'routerAnimation', 'routerDirection']
1394
+ })
1395
+ ], IonNavLink);
1396
+ export { IonNavLink };
1397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonNavLink, decorators: [{
1398
+ type: Component,
1399
+ args: [{
1400
+ selector: 'ion-nav-link',
1401
+ changeDetection: ChangeDetectionStrategy.OnPush,
1402
+ template: '<ng-content></ng-content>',
1403
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1404
+ inputs: ['component', 'componentProps', 'routerAnimation', 'routerDirection'],
1405
+ standalone: true
1406
+ }]
1407
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1408
+ let IonNote = class IonNote {
1409
+ z;
1410
+ el;
1411
+ constructor(c, r, z) {
1412
+ this.z = z;
1413
+ c.detach();
1414
+ this.el = r.nativeElement;
1415
+ }
1416
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonNote, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1417
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonNote, isStandalone: true, selector: "ion-note", inputs: { color: "color", mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1418
+ };
1419
+ IonNote = __decorate([
1420
+ ProxyCmp({
1421
+ defineCustomElementFn: defineIonNote,
1422
+ inputs: ['color', 'mode']
1423
+ })
1424
+ ], IonNote);
1425
+ export { IonNote };
1426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonNote, decorators: [{
1427
+ type: Component,
1428
+ args: [{
1429
+ selector: 'ion-note',
1430
+ changeDetection: ChangeDetectionStrategy.OnPush,
1431
+ template: '<ng-content></ng-content>',
1432
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1433
+ inputs: ['color', 'mode'],
1434
+ standalone: true
1435
+ }]
1436
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1437
+ let IonPicker = class IonPicker {
1438
+ z;
1439
+ el;
1440
+ constructor(c, r, z) {
1441
+ this.z = z;
1442
+ c.detach();
1443
+ this.el = r.nativeElement;
1444
+ }
1445
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1446
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonPicker, isStandalone: true, selector: "ion-picker", inputs: { mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1447
+ };
1448
+ IonPicker = __decorate([
1449
+ ProxyCmp({
1450
+ defineCustomElementFn: defineIonPicker,
1451
+ inputs: ['mode']
1452
+ })
1453
+ ], IonPicker);
1454
+ export { IonPicker };
1455
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPicker, decorators: [{
1456
+ type: Component,
1457
+ args: [{
1458
+ selector: 'ion-picker',
1459
+ changeDetection: ChangeDetectionStrategy.OnPush,
1460
+ template: '<ng-content></ng-content>',
1461
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1462
+ inputs: ['mode'],
1463
+ standalone: true
1464
+ }]
1465
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1466
+ let IonPickerColumn = class IonPickerColumn {
1467
+ z;
1468
+ el;
1469
+ constructor(c, r, z) {
1470
+ this.z = z;
1471
+ c.detach();
1472
+ this.el = r.nativeElement;
1473
+ proxyOutputs(this, this.el, ['ionChange']);
1474
+ }
1475
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPickerColumn, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1476
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonPickerColumn, isStandalone: true, selector: "ion-picker-column", inputs: { color: "color", disabled: "disabled", mode: "mode", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1477
+ };
1478
+ IonPickerColumn = __decorate([
1479
+ ProxyCmp({
1480
+ defineCustomElementFn: defineIonPickerColumn,
1481
+ inputs: ['color', 'disabled', 'mode', 'value'],
1482
+ methods: ['setFocus']
1483
+ })
1484
+ ], IonPickerColumn);
1485
+ export { IonPickerColumn };
1486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPickerColumn, decorators: [{
1487
+ type: Component,
1488
+ args: [{
1489
+ selector: 'ion-picker-column',
1490
+ changeDetection: ChangeDetectionStrategy.OnPush,
1491
+ template: '<ng-content></ng-content>',
1492
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1493
+ inputs: ['color', 'disabled', 'mode', 'value'],
1494
+ standalone: true
1495
+ }]
1496
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1497
+ let IonPickerColumnOption = class IonPickerColumnOption {
1498
+ z;
1499
+ el;
1500
+ constructor(c, r, z) {
1501
+ this.z = z;
1502
+ c.detach();
1503
+ this.el = r.nativeElement;
1504
+ }
1505
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPickerColumnOption, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1506
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonPickerColumnOption, isStandalone: true, selector: "ion-picker-column-option", inputs: { color: "color", disabled: "disabled", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1507
+ };
1508
+ IonPickerColumnOption = __decorate([
1509
+ ProxyCmp({
1510
+ defineCustomElementFn: defineIonPickerColumnOption,
1511
+ inputs: ['color', 'disabled', 'value']
1512
+ })
1513
+ ], IonPickerColumnOption);
1514
+ export { IonPickerColumnOption };
1515
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPickerColumnOption, decorators: [{
1516
+ type: Component,
1517
+ args: [{
1518
+ selector: 'ion-picker-column-option',
1519
+ changeDetection: ChangeDetectionStrategy.OnPush,
1520
+ template: '<ng-content></ng-content>',
1521
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1522
+ inputs: ['color', 'disabled', 'value'],
1523
+ standalone: true
1524
+ }]
1525
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1526
+ let IonPickerLegacy = class IonPickerLegacy {
1527
+ z;
1528
+ el;
1529
+ constructor(c, r, z) {
1530
+ this.z = z;
1531
+ c.detach();
1532
+ this.el = r.nativeElement;
1533
+ proxyOutputs(this, this.el, ['ionPickerDidPresent', 'ionPickerWillPresent', 'ionPickerWillDismiss', 'ionPickerDidDismiss', 'didPresent', 'willPresent', 'willDismiss', 'didDismiss']);
1534
+ }
1535
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPickerLegacy, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1536
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonPickerLegacy, isStandalone: true, selector: "ion-picker-legacy", inputs: { animated: "animated", backdropDismiss: "backdropDismiss", buttons: "buttons", columns: "columns", cssClass: "cssClass", duration: "duration", enterAnimation: "enterAnimation", htmlAttributes: "htmlAttributes", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", showBackdrop: "showBackdrop", trigger: "trigger" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1537
+ };
1538
+ IonPickerLegacy = __decorate([
1539
+ ProxyCmp({
1540
+ defineCustomElementFn: defineIonPickerLegacy,
1541
+ inputs: ['animated', 'backdropDismiss', 'buttons', 'columns', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'mode', 'showBackdrop', 'trigger'],
1542
+ methods: ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss', 'getColumn']
1543
+ })
1544
+ ], IonPickerLegacy);
1545
+ export { IonPickerLegacy };
1546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPickerLegacy, decorators: [{
1547
+ type: Component,
1548
+ args: [{
1549
+ selector: 'ion-picker-legacy',
1550
+ changeDetection: ChangeDetectionStrategy.OnPush,
1551
+ template: '<ng-content></ng-content>',
1552
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1553
+ inputs: ['animated', 'backdropDismiss', 'buttons', 'columns', 'cssClass', 'duration', 'enterAnimation', 'htmlAttributes', 'isOpen', 'keyboardClose', 'leaveAnimation', 'mode', 'showBackdrop', 'trigger'],
1554
+ standalone: true
1555
+ }]
1556
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1557
+ let IonProgressBar = class IonProgressBar {
1558
+ z;
1559
+ el;
1560
+ constructor(c, r, z) {
1561
+ this.z = z;
1562
+ c.detach();
1563
+ this.el = r.nativeElement;
1564
+ }
1565
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonProgressBar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1566
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonProgressBar, isStandalone: true, selector: "ion-progress-bar", inputs: { buffer: "buffer", color: "color", mode: "mode", reversed: "reversed", type: "type", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1567
+ };
1568
+ IonProgressBar = __decorate([
1569
+ ProxyCmp({
1570
+ defineCustomElementFn: defineIonProgressBar,
1571
+ inputs: ['buffer', 'color', 'mode', 'reversed', 'type', 'value']
1572
+ })
1573
+ ], IonProgressBar);
1574
+ export { IonProgressBar };
1575
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonProgressBar, decorators: [{
1576
+ type: Component,
1577
+ args: [{
1578
+ selector: 'ion-progress-bar',
1579
+ changeDetection: ChangeDetectionStrategy.OnPush,
1580
+ template: '<ng-content></ng-content>',
1581
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1582
+ inputs: ['buffer', 'color', 'mode', 'reversed', 'type', 'value'],
1583
+ standalone: true
1584
+ }]
1585
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1586
+ let IonRadio = class IonRadio {
1587
+ z;
1588
+ el;
1589
+ constructor(c, r, z) {
1590
+ this.z = z;
1591
+ c.detach();
1592
+ this.el = r.nativeElement;
1593
+ proxyOutputs(this, this.el, ['ionFocus', 'ionBlur']);
1594
+ }
1595
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRadio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1596
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonRadio, isStandalone: true, selector: "ion-radio", inputs: { alignment: "alignment", color: "color", disabled: "disabled", justify: "justify", labelPlacement: "labelPlacement", mode: "mode", name: "name", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1597
+ };
1598
+ IonRadio = __decorate([
1599
+ ProxyCmp({
1600
+ defineCustomElementFn: defineIonRadio,
1601
+ inputs: ['alignment', 'color', 'disabled', 'justify', 'labelPlacement', 'mode', 'name', 'value']
1602
+ })
1603
+ ], IonRadio);
1604
+ export { IonRadio };
1605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRadio, decorators: [{
1606
+ type: Component,
1607
+ args: [{
1608
+ selector: 'ion-radio',
1609
+ changeDetection: ChangeDetectionStrategy.OnPush,
1610
+ template: '<ng-content></ng-content>',
1611
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1612
+ inputs: ['alignment', 'color', 'disabled', 'justify', 'labelPlacement', 'mode', 'name', 'value'],
1613
+ standalone: true
1614
+ }]
1615
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1616
+ let IonRefresher = class IonRefresher {
1617
+ z;
1618
+ el;
1619
+ constructor(c, r, z) {
1620
+ this.z = z;
1621
+ c.detach();
1622
+ this.el = r.nativeElement;
1623
+ proxyOutputs(this, this.el, ['ionRefresh', 'ionPull', 'ionStart', 'ionPullStart', 'ionPullEnd']);
1624
+ }
1625
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRefresher, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1626
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonRefresher, isStandalone: true, selector: "ion-refresher", inputs: { closeDuration: "closeDuration", disabled: "disabled", mode: "mode", pullFactor: "pullFactor", pullMax: "pullMax", pullMin: "pullMin", snapbackDuration: "snapbackDuration" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1627
+ };
1628
+ IonRefresher = __decorate([
1629
+ ProxyCmp({
1630
+ defineCustomElementFn: defineIonRefresher,
1631
+ inputs: ['closeDuration', 'disabled', 'mode', 'pullFactor', 'pullMax', 'pullMin', 'snapbackDuration'],
1632
+ methods: ['complete', 'cancel', 'getProgress']
1633
+ })
1634
+ ], IonRefresher);
1635
+ export { IonRefresher };
1636
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRefresher, decorators: [{
1637
+ type: Component,
1638
+ args: [{
1639
+ selector: 'ion-refresher',
1640
+ changeDetection: ChangeDetectionStrategy.OnPush,
1641
+ template: '<ng-content></ng-content>',
1642
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1643
+ inputs: ['closeDuration', 'disabled', 'mode', 'pullFactor', 'pullMax', 'pullMin', 'snapbackDuration'],
1644
+ standalone: true
1645
+ }]
1646
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1647
+ let IonRefresherContent = class IonRefresherContent {
1648
+ z;
1649
+ el;
1650
+ constructor(c, r, z) {
1651
+ this.z = z;
1652
+ c.detach();
1653
+ this.el = r.nativeElement;
1654
+ }
1655
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRefresherContent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1656
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonRefresherContent, isStandalone: true, selector: "ion-refresher-content", inputs: { pullingIcon: "pullingIcon", pullingText: "pullingText", refreshingSpinner: "refreshingSpinner", refreshingText: "refreshingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1657
+ };
1658
+ IonRefresherContent = __decorate([
1659
+ ProxyCmp({
1660
+ defineCustomElementFn: defineIonRefresherContent,
1661
+ inputs: ['pullingIcon', 'pullingText', 'refreshingSpinner', 'refreshingText']
1662
+ })
1663
+ ], IonRefresherContent);
1664
+ export { IonRefresherContent };
1665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRefresherContent, decorators: [{
1666
+ type: Component,
1667
+ args: [{
1668
+ selector: 'ion-refresher-content',
1669
+ changeDetection: ChangeDetectionStrategy.OnPush,
1670
+ template: '<ng-content></ng-content>',
1671
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1672
+ inputs: ['pullingIcon', 'pullingText', 'refreshingSpinner', 'refreshingText'],
1673
+ standalone: true
1674
+ }]
1675
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1676
+ let IonReorder = class IonReorder {
1677
+ z;
1678
+ el;
1679
+ constructor(c, r, z) {
1680
+ this.z = z;
1681
+ c.detach();
1682
+ this.el = r.nativeElement;
1683
+ }
1684
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonReorder, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1685
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonReorder, isStandalone: true, selector: "ion-reorder", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1686
+ };
1687
+ IonReorder = __decorate([
1688
+ ProxyCmp({
1689
+ defineCustomElementFn: defineIonReorder
1690
+ })
1691
+ ], IonReorder);
1692
+ export { IonReorder };
1693
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonReorder, decorators: [{
1694
+ type: Component,
1695
+ args: [{
1696
+ selector: 'ion-reorder',
1697
+ changeDetection: ChangeDetectionStrategy.OnPush,
1698
+ template: '<ng-content></ng-content>',
1699
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1700
+ inputs: [],
1701
+ standalone: true
1702
+ }]
1703
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1704
+ let IonReorderGroup = class IonReorderGroup {
1705
+ z;
1706
+ el;
1707
+ constructor(c, r, z) {
1708
+ this.z = z;
1709
+ c.detach();
1710
+ this.el = r.nativeElement;
1711
+ proxyOutputs(this, this.el, ['ionItemReorder', 'ionReorderStart', 'ionReorderMove', 'ionReorderEnd']);
1712
+ }
1713
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonReorderGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1714
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonReorderGroup, isStandalone: true, selector: "ion-reorder-group", inputs: { disabled: "disabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1715
+ };
1716
+ IonReorderGroup = __decorate([
1717
+ ProxyCmp({
1718
+ defineCustomElementFn: defineIonReorderGroup,
1719
+ inputs: ['disabled'],
1720
+ methods: ['complete']
1721
+ })
1722
+ ], IonReorderGroup);
1723
+ export { IonReorderGroup };
1724
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonReorderGroup, decorators: [{
1725
+ type: Component,
1726
+ args: [{
1727
+ selector: 'ion-reorder-group',
1728
+ changeDetection: ChangeDetectionStrategy.OnPush,
1729
+ template: '<ng-content></ng-content>',
1730
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1731
+ inputs: ['disabled'],
1732
+ standalone: true
1733
+ }]
1734
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1735
+ let IonRippleEffect = class IonRippleEffect {
1736
+ z;
1737
+ el;
1738
+ constructor(c, r, z) {
1739
+ this.z = z;
1740
+ c.detach();
1741
+ this.el = r.nativeElement;
1742
+ }
1743
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRippleEffect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1744
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonRippleEffect, isStandalone: true, selector: "ion-ripple-effect", inputs: { type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1745
+ };
1746
+ IonRippleEffect = __decorate([
1747
+ ProxyCmp({
1748
+ defineCustomElementFn: defineIonRippleEffect,
1749
+ inputs: ['type'],
1750
+ methods: ['addRipple']
1751
+ })
1752
+ ], IonRippleEffect);
1753
+ export { IonRippleEffect };
1754
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRippleEffect, decorators: [{
1755
+ type: Component,
1756
+ args: [{
1757
+ selector: 'ion-ripple-effect',
1758
+ changeDetection: ChangeDetectionStrategy.OnPush,
1759
+ template: '<ng-content></ng-content>',
1760
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1761
+ inputs: ['type'],
1762
+ standalone: true
1763
+ }]
1764
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1765
+ let IonRow = class IonRow {
1766
+ z;
1767
+ el;
1768
+ constructor(c, r, z) {
1769
+ this.z = z;
1770
+ c.detach();
1771
+ this.el = r.nativeElement;
1772
+ }
1773
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRow, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1774
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonRow, isStandalone: true, selector: "ion-row", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1775
+ };
1776
+ IonRow = __decorate([
1777
+ ProxyCmp({
1778
+ defineCustomElementFn: defineIonRow
1779
+ })
1780
+ ], IonRow);
1781
+ export { IonRow };
1782
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRow, decorators: [{
1783
+ type: Component,
1784
+ args: [{
1785
+ selector: 'ion-row',
1786
+ changeDetection: ChangeDetectionStrategy.OnPush,
1787
+ template: '<ng-content></ng-content>',
1788
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1789
+ inputs: [],
1790
+ standalone: true
1791
+ }]
1792
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1793
+ let IonSegmentButton = class IonSegmentButton {
1794
+ z;
1795
+ el;
1796
+ constructor(c, r, z) {
1797
+ this.z = z;
1798
+ c.detach();
1799
+ this.el = r.nativeElement;
1800
+ }
1801
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSegmentButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1802
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonSegmentButton, isStandalone: true, selector: "ion-segment-button", inputs: { contentId: "contentId", disabled: "disabled", layout: "layout", mode: "mode", type: "type", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1803
+ };
1804
+ IonSegmentButton = __decorate([
1805
+ ProxyCmp({
1806
+ defineCustomElementFn: defineIonSegmentButton,
1807
+ inputs: ['contentId', 'disabled', 'layout', 'mode', 'type', 'value']
1808
+ })
1809
+ ], IonSegmentButton);
1810
+ export { IonSegmentButton };
1811
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSegmentButton, decorators: [{
1812
+ type: Component,
1813
+ args: [{
1814
+ selector: 'ion-segment-button',
1815
+ changeDetection: ChangeDetectionStrategy.OnPush,
1816
+ template: '<ng-content></ng-content>',
1817
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1818
+ inputs: ['contentId', 'disabled', 'layout', 'mode', 'type', 'value'],
1819
+ standalone: true
1820
+ }]
1821
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1822
+ let IonSegmentContent = class IonSegmentContent {
1823
+ z;
1824
+ el;
1825
+ constructor(c, r, z) {
1826
+ this.z = z;
1827
+ c.detach();
1828
+ this.el = r.nativeElement;
1829
+ }
1830
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSegmentContent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1831
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonSegmentContent, isStandalone: true, selector: "ion-segment-content", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1832
+ };
1833
+ IonSegmentContent = __decorate([
1834
+ ProxyCmp({
1835
+ defineCustomElementFn: defineIonSegmentContent
1836
+ })
1837
+ ], IonSegmentContent);
1838
+ export { IonSegmentContent };
1839
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSegmentContent, decorators: [{
1840
+ type: Component,
1841
+ args: [{
1842
+ selector: 'ion-segment-content',
1843
+ changeDetection: ChangeDetectionStrategy.OnPush,
1844
+ template: '<ng-content></ng-content>',
1845
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1846
+ inputs: [],
1847
+ standalone: true
1848
+ }]
1849
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1850
+ let IonSegmentView = class IonSegmentView {
1851
+ z;
1852
+ el;
1853
+ constructor(c, r, z) {
1854
+ this.z = z;
1855
+ c.detach();
1856
+ this.el = r.nativeElement;
1857
+ proxyOutputs(this, this.el, ['ionSegmentViewScroll']);
1858
+ }
1859
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSegmentView, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1860
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonSegmentView, isStandalone: true, selector: "ion-segment-view", inputs: { disabled: "disabled", swipeGesture: "swipeGesture" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1861
+ };
1862
+ IonSegmentView = __decorate([
1863
+ ProxyCmp({
1864
+ defineCustomElementFn: defineIonSegmentView,
1865
+ inputs: ['disabled', 'swipeGesture']
1866
+ })
1867
+ ], IonSegmentView);
1868
+ export { IonSegmentView };
1869
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSegmentView, decorators: [{
1870
+ type: Component,
1871
+ args: [{
1872
+ selector: 'ion-segment-view',
1873
+ changeDetection: ChangeDetectionStrategy.OnPush,
1874
+ template: '<ng-content></ng-content>',
1875
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1876
+ inputs: ['disabled', 'swipeGesture'],
1877
+ standalone: true
1878
+ }]
1879
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1880
+ let IonSelectModal = class IonSelectModal {
1881
+ z;
1882
+ el;
1883
+ constructor(c, r, z) {
1884
+ this.z = z;
1885
+ c.detach();
1886
+ this.el = r.nativeElement;
1887
+ }
1888
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSelectModal, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1889
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonSelectModal, isStandalone: true, selector: "ion-select-modal", inputs: { cancelText: "cancelText", header: "header", multiple: "multiple", options: "options" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1890
+ };
1891
+ IonSelectModal = __decorate([
1892
+ ProxyCmp({
1893
+ defineCustomElementFn: defineIonSelectModal,
1894
+ inputs: ['cancelText', 'header', 'multiple', 'options']
1895
+ })
1896
+ ], IonSelectModal);
1897
+ export { IonSelectModal };
1898
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSelectModal, decorators: [{
1899
+ type: Component,
1900
+ args: [{
1901
+ selector: 'ion-select-modal',
1902
+ changeDetection: ChangeDetectionStrategy.OnPush,
1903
+ template: '<ng-content></ng-content>',
1904
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1905
+ inputs: ['cancelText', 'header', 'multiple', 'options'],
1906
+ standalone: true
1907
+ }]
1908
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1909
+ let IonSelectOption = class IonSelectOption {
1910
+ z;
1911
+ el;
1912
+ constructor(c, r, z) {
1913
+ this.z = z;
1914
+ c.detach();
1915
+ this.el = r.nativeElement;
1916
+ }
1917
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSelectOption, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1918
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonSelectOption, isStandalone: true, selector: "ion-select-option", inputs: { disabled: "disabled", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1919
+ };
1920
+ IonSelectOption = __decorate([
1921
+ ProxyCmp({
1922
+ defineCustomElementFn: defineIonSelectOption,
1923
+ inputs: ['disabled', 'value']
1924
+ })
1925
+ ], IonSelectOption);
1926
+ export { IonSelectOption };
1927
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSelectOption, decorators: [{
1928
+ type: Component,
1929
+ args: [{
1930
+ selector: 'ion-select-option',
1931
+ changeDetection: ChangeDetectionStrategy.OnPush,
1932
+ template: '<ng-content></ng-content>',
1933
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1934
+ inputs: ['disabled', 'value'],
1935
+ standalone: true
1936
+ }]
1937
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1938
+ let IonSkeletonText = class IonSkeletonText {
1939
+ z;
1940
+ el;
1941
+ constructor(c, r, z) {
1942
+ this.z = z;
1943
+ c.detach();
1944
+ this.el = r.nativeElement;
1945
+ }
1946
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSkeletonText, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1947
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonSkeletonText, isStandalone: true, selector: "ion-skeleton-text", inputs: { animated: "animated" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1948
+ };
1949
+ IonSkeletonText = __decorate([
1950
+ ProxyCmp({
1951
+ defineCustomElementFn: defineIonSkeletonText,
1952
+ inputs: ['animated']
1953
+ })
1954
+ ], IonSkeletonText);
1955
+ export { IonSkeletonText };
1956
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSkeletonText, decorators: [{
1957
+ type: Component,
1958
+ args: [{
1959
+ selector: 'ion-skeleton-text',
1960
+ changeDetection: ChangeDetectionStrategy.OnPush,
1961
+ template: '<ng-content></ng-content>',
1962
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1963
+ inputs: ['animated'],
1964
+ standalone: true
1965
+ }]
1966
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1967
+ let IonSpinner = class IonSpinner {
1968
+ z;
1969
+ el;
1970
+ constructor(c, r, z) {
1971
+ this.z = z;
1972
+ c.detach();
1973
+ this.el = r.nativeElement;
1974
+ }
1975
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSpinner, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1976
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonSpinner, isStandalone: true, selector: "ion-spinner", inputs: { color: "color", duration: "duration", name: "name", paused: "paused" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1977
+ };
1978
+ IonSpinner = __decorate([
1979
+ ProxyCmp({
1980
+ defineCustomElementFn: defineIonSpinner,
1981
+ inputs: ['color', 'duration', 'name', 'paused']
1982
+ })
1983
+ ], IonSpinner);
1984
+ export { IonSpinner };
1985
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSpinner, decorators: [{
1986
+ type: Component,
1987
+ args: [{
1988
+ selector: 'ion-spinner',
1989
+ changeDetection: ChangeDetectionStrategy.OnPush,
1990
+ template: '<ng-content></ng-content>',
1991
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1992
+ inputs: ['color', 'duration', 'name', 'paused'],
1993
+ standalone: true
1994
+ }]
1995
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
1996
+ let IonSplitPane = class IonSplitPane {
1997
+ z;
1998
+ el;
1999
+ constructor(c, r, z) {
2000
+ this.z = z;
2001
+ c.detach();
2002
+ this.el = r.nativeElement;
2003
+ proxyOutputs(this, this.el, ['ionSplitPaneVisible']);
2004
+ }
2005
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSplitPane, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2006
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonSplitPane, isStandalone: true, selector: "ion-split-pane", inputs: { contentId: "contentId", disabled: "disabled", when: "when" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2007
+ };
2008
+ IonSplitPane = __decorate([
2009
+ ProxyCmp({
2010
+ defineCustomElementFn: defineIonSplitPane,
2011
+ inputs: ['contentId', 'disabled', 'when']
2012
+ })
2013
+ ], IonSplitPane);
2014
+ export { IonSplitPane };
2015
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonSplitPane, decorators: [{
2016
+ type: Component,
2017
+ args: [{
2018
+ selector: 'ion-split-pane',
2019
+ changeDetection: ChangeDetectionStrategy.OnPush,
2020
+ template: '<ng-content></ng-content>',
2021
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2022
+ inputs: ['contentId', 'disabled', 'when'],
2023
+ standalone: true
2024
+ }]
2025
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2026
+ let IonTab = class IonTab {
2027
+ z;
2028
+ el;
2029
+ constructor(c, r, z) {
2030
+ this.z = z;
2031
+ c.detach();
2032
+ this.el = r.nativeElement;
2033
+ }
2034
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2035
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonTab, isStandalone: true, selector: "ion-tab", inputs: { component: "component", tab: "tab" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2036
+ };
2037
+ IonTab = __decorate([
2038
+ ProxyCmp({
2039
+ defineCustomElementFn: defineIonTab,
2040
+ inputs: ['component', 'tab'],
2041
+ methods: ['setActive']
2042
+ })
2043
+ ], IonTab);
2044
+ export { IonTab };
2045
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTab, decorators: [{
2046
+ type: Component,
2047
+ args: [{
2048
+ selector: 'ion-tab',
2049
+ changeDetection: ChangeDetectionStrategy.OnPush,
2050
+ template: '<ng-content></ng-content>',
2051
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2052
+ inputs: ['component', 'tab'],
2053
+ standalone: true
2054
+ }]
2055
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2056
+ let IonTabBar = class IonTabBar {
2057
+ z;
2058
+ el;
2059
+ constructor(c, r, z) {
2060
+ this.z = z;
2061
+ c.detach();
2062
+ this.el = r.nativeElement;
2063
+ }
2064
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabBar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2065
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonTabBar, isStandalone: true, selector: "ion-tab-bar", inputs: { color: "color", mode: "mode", selectedTab: "selectedTab", translucent: "translucent" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2066
+ };
2067
+ IonTabBar = __decorate([
2068
+ ProxyCmp({
2069
+ defineCustomElementFn: defineIonTabBar,
2070
+ inputs: ['color', 'mode', 'selectedTab', 'translucent']
2071
+ })
2072
+ ], IonTabBar);
2073
+ export { IonTabBar };
2074
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabBar, decorators: [{
2075
+ type: Component,
2076
+ args: [{
2077
+ selector: 'ion-tab-bar',
2078
+ changeDetection: ChangeDetectionStrategy.OnPush,
2079
+ template: '<ng-content></ng-content>',
2080
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2081
+ inputs: ['color', 'mode', 'selectedTab', 'translucent'],
2082
+ standalone: true
2083
+ }]
2084
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2085
+ let IonTabButton = class IonTabButton {
2086
+ z;
2087
+ el;
2088
+ constructor(c, r, z) {
2089
+ this.z = z;
2090
+ c.detach();
2091
+ this.el = r.nativeElement;
2092
+ }
2093
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2094
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonTabButton, isStandalone: true, selector: "ion-tab-button", inputs: { disabled: "disabled", download: "download", href: "href", layout: "layout", mode: "mode", rel: "rel", selected: "selected", tab: "tab", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2095
+ };
2096
+ IonTabButton = __decorate([
2097
+ ProxyCmp({
2098
+ defineCustomElementFn: defineIonTabButton,
2099
+ inputs: ['disabled', 'download', 'href', 'layout', 'mode', 'rel', 'selected', 'tab', 'target']
2100
+ })
2101
+ ], IonTabButton);
2102
+ export { IonTabButton };
2103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabButton, decorators: [{
2104
+ type: Component,
2105
+ args: [{
2106
+ selector: 'ion-tab-button',
2107
+ changeDetection: ChangeDetectionStrategy.OnPush,
2108
+ template: '<ng-content></ng-content>',
2109
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2110
+ inputs: ['disabled', 'download', 'href', 'layout', 'mode', 'rel', 'selected', 'tab', 'target'],
2111
+ standalone: true
2112
+ }]
2113
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2114
+ let IonText = class IonText {
2115
+ z;
2116
+ el;
2117
+ constructor(c, r, z) {
2118
+ this.z = z;
2119
+ c.detach();
2120
+ this.el = r.nativeElement;
2121
+ }
2122
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonText, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2123
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonText, isStandalone: true, selector: "ion-text", inputs: { color: "color", mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2124
+ };
2125
+ IonText = __decorate([
2126
+ ProxyCmp({
2127
+ defineCustomElementFn: defineIonText,
2128
+ inputs: ['color', 'mode']
2129
+ })
2130
+ ], IonText);
2131
+ export { IonText };
2132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonText, decorators: [{
2133
+ type: Component,
2134
+ args: [{
2135
+ selector: 'ion-text',
2136
+ changeDetection: ChangeDetectionStrategy.OnPush,
2137
+ template: '<ng-content></ng-content>',
2138
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2139
+ inputs: ['color', 'mode'],
2140
+ standalone: true
2141
+ }]
2142
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2143
+ let IonThumbnail = class IonThumbnail {
2144
+ z;
2145
+ el;
2146
+ constructor(c, r, z) {
2147
+ this.z = z;
2148
+ c.detach();
2149
+ this.el = r.nativeElement;
2150
+ }
2151
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonThumbnail, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2152
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonThumbnail, isStandalone: true, selector: "ion-thumbnail", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2153
+ };
2154
+ IonThumbnail = __decorate([
2155
+ ProxyCmp({
2156
+ defineCustomElementFn: defineIonThumbnail
2157
+ })
2158
+ ], IonThumbnail);
2159
+ export { IonThumbnail };
2160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonThumbnail, decorators: [{
2161
+ type: Component,
2162
+ args: [{
2163
+ selector: 'ion-thumbnail',
2164
+ changeDetection: ChangeDetectionStrategy.OnPush,
2165
+ template: '<ng-content></ng-content>',
2166
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2167
+ inputs: [],
2168
+ standalone: true
2169
+ }]
2170
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2171
+ let IonTitle = class IonTitle {
2172
+ z;
2173
+ el;
2174
+ constructor(c, r, z) {
2175
+ this.z = z;
2176
+ c.detach();
2177
+ this.el = r.nativeElement;
2178
+ }
2179
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTitle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2180
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonTitle, isStandalone: true, selector: "ion-title", inputs: { color: "color", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2181
+ };
2182
+ IonTitle = __decorate([
2183
+ ProxyCmp({
2184
+ defineCustomElementFn: defineIonTitle,
2185
+ inputs: ['color', 'size']
2186
+ })
2187
+ ], IonTitle);
2188
+ export { IonTitle };
2189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTitle, decorators: [{
2190
+ type: Component,
2191
+ args: [{
2192
+ selector: 'ion-title',
2193
+ changeDetection: ChangeDetectionStrategy.OnPush,
2194
+ template: '<ng-content></ng-content>',
2195
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2196
+ inputs: ['color', 'size'],
2197
+ standalone: true
2198
+ }]
2199
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2200
+ let IonToast = class IonToast {
2201
+ z;
2202
+ el;
2203
+ constructor(c, r, z) {
2204
+ this.z = z;
2205
+ c.detach();
2206
+ this.el = r.nativeElement;
2207
+ proxyOutputs(this, this.el, ['ionToastDidPresent', 'ionToastWillPresent', 'ionToastWillDismiss', 'ionToastDidDismiss', 'didPresent', 'willPresent', 'willDismiss', 'didDismiss']);
2208
+ }
2209
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonToast, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2210
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonToast, isStandalone: true, selector: "ion-toast", inputs: { animated: "animated", buttons: "buttons", color: "color", cssClass: "cssClass", duration: "duration", enterAnimation: "enterAnimation", header: "header", htmlAttributes: "htmlAttributes", icon: "icon", isOpen: "isOpen", keyboardClose: "keyboardClose", layout: "layout", leaveAnimation: "leaveAnimation", message: "message", mode: "mode", position: "position", positionAnchor: "positionAnchor", swipeGesture: "swipeGesture", translucent: "translucent", trigger: "trigger" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2211
+ };
2212
+ IonToast = __decorate([
2213
+ ProxyCmp({
2214
+ defineCustomElementFn: defineIonToast,
2215
+ inputs: ['animated', 'buttons', 'color', 'cssClass', 'duration', 'enterAnimation', 'header', 'htmlAttributes', 'icon', 'isOpen', 'keyboardClose', 'layout', 'leaveAnimation', 'message', 'mode', 'position', 'positionAnchor', 'swipeGesture', 'translucent', 'trigger'],
2216
+ methods: ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss']
2217
+ })
2218
+ ], IonToast);
2219
+ export { IonToast };
2220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonToast, decorators: [{
2221
+ type: Component,
2222
+ args: [{
2223
+ selector: 'ion-toast',
2224
+ changeDetection: ChangeDetectionStrategy.OnPush,
2225
+ template: '<ng-content></ng-content>',
2226
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2227
+ inputs: ['animated', 'buttons', 'color', 'cssClass', 'duration', 'enterAnimation', 'header', 'htmlAttributes', 'icon', 'isOpen', 'keyboardClose', 'layout', 'leaveAnimation', 'message', 'mode', 'position', 'positionAnchor', 'swipeGesture', 'translucent', 'trigger'],
2228
+ standalone: true
2229
+ }]
2230
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2231
+ let IonToolbar = class IonToolbar {
2232
+ z;
2233
+ el;
2234
+ constructor(c, r, z) {
2235
+ this.z = z;
2236
+ c.detach();
2237
+ this.el = r.nativeElement;
2238
+ }
2239
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonToolbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2240
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IonToolbar, isStandalone: true, selector: "ion-toolbar", inputs: { color: "color", mode: "mode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2241
+ };
2242
+ IonToolbar = __decorate([
2243
+ ProxyCmp({
2244
+ defineCustomElementFn: defineIonToolbar,
2245
+ inputs: ['color', 'mode']
2246
+ })
2247
+ ], IonToolbar);
2248
+ export { IonToolbar };
2249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonToolbar, decorators: [{
2250
+ type: Component,
2251
+ args: [{
2252
+ selector: 'ion-toolbar',
2253
+ changeDetection: ChangeDetectionStrategy.OnPush,
2254
+ template: '<ng-content></ng-content>',
2255
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2256
+ inputs: ['color', 'mode'],
2257
+ standalone: true
2258
+ }]
2259
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
2260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3N0YW5kYWxvbmUvc3JjL2RpcmVjdGl2ZXMvcHJveGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0JBQW9CO0FBQ3BCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl2RSxPQUFPLEVBQUUsbUJBQW1CLElBQUksa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNwRyxPQUFPLEVBQUUsbUJBQW1CLElBQUksdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMvRyxPQUFPLEVBQUUsbUJBQW1CLElBQUksb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RyxPQUFPLEVBQUUsbUJBQW1CLElBQUksY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUYsT0FBTyxFQUFFLG1CQUFtQixJQUFJLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLElBQUksaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLElBQUksY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUYsT0FBTyxFQUFFLG1CQUFtQixJQUFJLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdEcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlGLE9BQU8sRUFB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QUUsU0FBUyxDQUFDO29CQUN4USxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBeURELElBUWEsVUFBVSxHQVJ2QixNQVFhLFVBQVU7SUFFc0M7SUFEakQsRUFBRSxDQUF3QjtJQUNwQyxZQUFZLENBQW9CLEVBQUUsQ0FBYSxFQUFZLENBQVM7UUFBVCxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQ2xFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNYLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDOzJIQUxVLFVBQVU7K0dBQVYsVUFBVSxpSEFMWCwyQkFBMkI7O0FBSzFCLFVBQVU7SUFadEIsUUFBUSxDQUFDO1FBQ1IscUJBQXFCLEVBQUUsZ0JBQWdCO1FBQ3ZDLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7S0FDMUIsQ0FBQztHQVNXLFVBQVUsQ0FNdEI7U0FOWSxVQUFVOzRGQUFWLFVBQVU7a0JBUnRCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyx1RUFBdUU7b0JBQ3ZFLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBhdXRvLWdlbmVyYXRlZCBhbmd1bGFyIGRpcmVjdGl2ZSBwcm94aWVzICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUHJveHlDbXAsIHByb3h5T3V0cHV0cyB9IGZyb20gJy4vYW5ndWxhci1jb21wb25lbnQtbGliL3V0aWxzJztcblxuaW1wb3J0IHR5cGUgeyBDb21wb25lbnRzIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uQWNjb3JkaW9uIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tYWNjb3JkaW9uLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uQWNjb3JkaW9uR3JvdXAgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1hY2NvcmRpb24tZ3JvdXAuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25BY3Rpb25TaGVldCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLWFjdGlvbi1zaGVldC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkFsZXJ0IH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tYWxlcnQuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25BcHAgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1hcHAuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25BdmF0YXIgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1hdmF0YXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25CYWNrZHJvcCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLWJhY2tkcm9wLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uQmFkZ2UgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1iYWRnZS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkJyZWFkY3J1bWIgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1icmVhZGNydW1iLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uQnJlYWRjcnVtYnMgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1icmVhZGNydW1icy5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkJ1dHRvbiB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLWJ1dHRvbi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkJ1dHRvbnMgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1idXR0b25zLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uQ2FyZCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLWNhcmQuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25DYXJkQ29udGVudCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLWNhcmQtY29udGVudC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkNhcmRIZWFkZXIgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1jYXJkLWhlYWRlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkNhcmRTdWJ0aXRsZSB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLWNhcmQtc3VidGl0bGUuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25DYXJkVGl0bGUgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1jYXJkLXRpdGxlLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uQ2hpcCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLWNoaXAuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25Db2wgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1jb2wuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25Db250ZW50IH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tY29udGVudC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkRhdGV0aW1lQnV0dG9uIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tZGF0ZXRpbWUtYnV0dG9uLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uRmFiIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tZmFiLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uRmFiQnV0dG9uIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tZmFiLWJ1dHRvbi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkZhYkxpc3QgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1mYWItbGlzdC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkZvb3RlciB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLWZvb3Rlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkdyaWQgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1ncmlkLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uSGVhZGVyIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24taGVhZGVyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uSW1nIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24taW1nLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uSW5maW5pdGVTY3JvbGwgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1pbmZpbml0ZS1zY3JvbGwuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25JbmZpbml0ZVNjcm9sbENvbnRlbnQgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1pbmZpbml0ZS1zY3JvbGwtY29udGVudC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbklucHV0UGFzc3dvcmRUb2dnbGUgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1pbnB1dC1wYXNzd29yZC10b2dnbGUuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25JdGVtIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24taXRlbS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkl0ZW1EaXZpZGVyIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24taXRlbS1kaXZpZGVyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uSXRlbUdyb3VwIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24taXRlbS1ncm91cC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkl0ZW1PcHRpb24gfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1pdGVtLW9wdGlvbi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbkl0ZW1PcHRpb25zIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24taXRlbS1vcHRpb25zLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uSXRlbVNsaWRpbmcgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1pdGVtLXNsaWRpbmcuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25MYWJlbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLWxhYmVsLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uTGlzdCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLWxpc3QuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25MaXN0SGVhZGVyIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tbGlzdC1oZWFkZXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25Mb2FkaW5nIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tbG9hZGluZy5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvbk1lbnUgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1tZW51LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uTWVudUJ1dHRvbiB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLW1lbnUtYnV0dG9uLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uTWVudVRvZ2dsZSB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLW1lbnUtdG9nZ2xlLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uTmF2TGluayB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLW5hdi1saW5rLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uTm90ZSB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLW5vdGUuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25QaWNrZXIgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1waWNrZXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25QaWNrZXJDb2x1bW4gfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1waWNrZXItY29sdW1uLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uUGlja2VyQ29sdW1uT3B0aW9uIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tcGlja2VyLWNvbHVtbi1vcHRpb24uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25QaWNrZXJMZWdhY3kgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1waWNrZXItbGVnYWN5LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uUHJvZ3Jlc3NCYXIgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1wcm9ncmVzcy1iYXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25SYWRpbyB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXJhZGlvLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uUmVmcmVzaGVyIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tcmVmcmVzaGVyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uUmVmcmVzaGVyQ29udGVudCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXJlZnJlc2hlci1jb250ZW50LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uUmVvcmRlciB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXJlb3JkZXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25SZW9yZGVyR3JvdXAgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1yZW9yZGVyLWdyb3VwLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uUmlwcGxlRWZmZWN0IH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tcmlwcGxlLWVmZmVjdC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvblJvdyB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXJvdy5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvblNlZ21lbnRCdXR0b24gfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1zZWdtZW50LWJ1dHRvbi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvblNlZ21lbnRDb250ZW50IH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tc2VnbWVudC1jb250ZW50LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uU2VnbWVudFZpZXcgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1zZWdtZW50LXZpZXcuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25TZWxlY3RNb2RhbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXNlbGVjdC1tb2RhbC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvblNlbGVjdE9wdGlvbiB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXNlbGVjdC1vcHRpb24uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25Ta2VsZXRvblRleHQgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1za2VsZXRvbi10ZXh0LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uU3Bpbm5lciB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXNwaW5uZXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25TcGxpdFBhbmUgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzL2lvbi1zcGxpdC1wYW5lLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uVGFiIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tdGFiLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uVGFiQmFyIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tdGFiLWJhci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvblRhYkJ1dHRvbiB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXRhYi1idXR0b24uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25UZXh0IH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tdGV4dC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvblRodW1ibmFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXRodW1ibmFpbC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZUlvblRpdGxlIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cy9pb24tdGl0bGUuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVJb25Ub2FzdCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXRvYXN0LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMvaW9uLXRvb2xiYXIuanMnO1xuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25BY2NvcmRpb24sXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdtb2RlJywgJ3JlYWRvbmx5JywgJ3RvZ2dsZUljb24nLCAndG9nZ2xlSWNvblNsb3QnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1hY2NvcmRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ21vZGUnLCAncmVhZG9ubHknLCAndG9nZ2xlSWNvbicsICd0b2dnbGVJY29uU2xvdCcsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkFjY29yZGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkFjY29yZGlvbkVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkFjY29yZGlvbiBleHRlbmRzIENvbXBvbmVudHMuSW9uQWNjb3JkaW9uIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25BY2NvcmRpb25Hcm91cCxcbiAgaW5wdXRzOiBbJ2FuaW1hdGVkJywgJ2Rpc2FibGVkJywgJ2V4cGFuZCcsICdtb2RlJywgJ211bHRpcGxlJywgJ3JlYWRvbmx5JywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tYWNjb3JkaW9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRlZCcsICdkaXNhYmxlZCcsICdleHBhbmQnLCAnbW9kZScsICdtdWx0aXBsZScsICdyZWFkb25seScsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkFjY29yZGlvbkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uQWNjb3JkaW9uR3JvdXBFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydpb25DaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IEFjY29yZGlvbkdyb3VwQ2hhbmdlRXZlbnREZXRhaWwgYXMgSUlvbkFjY29yZGlvbkdyb3VwQWNjb3JkaW9uR3JvdXBDaGFuZ2VFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uQWNjb3JkaW9uR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLklvbkFjY29yZGlvbkdyb3VwIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdmFsdWUgcHJvcGVydHkgaGFzIGNoYW5nZWQgYXMgYSByZXN1bHQgb2YgYSB1c2VyIGFjdGlvbiBzdWNoIGFzIGEgY2xpY2suXG5cblRoaXMgZXZlbnQgd2lsbCBub3QgZW1pdCB3aGVuIHByb2dyYW1tYXRpY2FsbHkgc2V0dGluZyB0aGUgYHZhbHVlYCBwcm9wZXJ0eS5cbiAgICovXG4gIGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElJb25BY2NvcmRpb25Hcm91cEFjY29yZGlvbkdyb3VwQ2hhbmdlRXZlbnREZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvbkFjdGlvblNoZWV0LFxuICBpbnB1dHM6IFsnYW5pbWF0ZWQnLCAnYmFja2Ryb3BEaXNtaXNzJywgJ2J1dHRvbnMnLCAnY3NzQ2xhc3MnLCAnZW50ZXJBbmltYXRpb24nLCAnaGVhZGVyJywgJ2h0bWxBdHRyaWJ1dGVzJywgJ2lzT3BlbicsICdrZXlib2FyZENsb3NlJywgJ2xlYXZlQW5pbWF0aW9uJywgJ21vZGUnLCAnc3ViSGVhZGVyJywgJ3RyYW5zbHVjZW50JywgJ3RyaWdnZXInXSxcbiAgbWV0aG9kczogWydwcmVzZW50JywgJ2Rpc21pc3MnLCAnb25EaWREaXNtaXNzJywgJ29uV2lsbERpc21pc3MnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1hY3Rpb24tc2hlZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGVkJywgJ2JhY2tkcm9wRGlzbWlzcycsICdidXR0b25zJywgJ2Nzc0NsYXNzJywgJ2VudGVyQW5pbWF0aW9uJywgJ2hlYWRlcicsICdodG1sQXR0cmlidXRlcycsICdpc09wZW4nLCAna2V5Ym9hcmRDbG9zZScsICdsZWF2ZUFuaW1hdGlvbicsICdtb2RlJywgJ3N1YkhlYWRlcicsICd0cmFuc2x1Y2VudCcsICd0cmlnZ2VyJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uQWN0aW9uU2hlZXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25BY3Rpb25TaGVldEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvbkFjdGlvblNoZWV0RGlkUHJlc2VudCcsICdpb25BY3Rpb25TaGVldFdpbGxQcmVzZW50JywgJ2lvbkFjdGlvblNoZWV0V2lsbERpc21pc3MnLCAnaW9uQWN0aW9uU2hlZXREaWREaXNtaXNzJywgJ2RpZFByZXNlbnQnLCAnd2lsbFByZXNlbnQnLCAnd2lsbERpc21pc3MnLCAnZGlkRGlzbWlzcyddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgT3ZlcmxheUV2ZW50RGV0YWlsIGFzIElJb25BY3Rpb25TaGVldE92ZXJsYXlFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uQWN0aW9uU2hlZXQgZXh0ZW5kcyBDb21wb25lbnRzLklvbkFjdGlvblNoZWV0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIGFjdGlvbiBzaGVldCBoYXMgcHJlc2VudGVkLlxuICAgKi9cbiAgaW9uQWN0aW9uU2hlZXREaWRQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIGFjdGlvbiBzaGVldCBoYXMgcHJlc2VudGVkLlxuICAgKi9cbiAgaW9uQWN0aW9uU2hlZXRXaWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBhY3Rpb24gc2hlZXQgaGFzIGRpc21pc3NlZC5cbiAgICovXG4gIGlvbkFjdGlvblNoZWV0V2lsbERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJSW9uQWN0aW9uU2hlZXRPdmVybGF5RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIGFjdGlvbiBzaGVldCBoYXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgaW9uQWN0aW9uU2hlZXREaWREaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbkFjdGlvblNoZWV0T3ZlcmxheUV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBhY3Rpb24gc2hlZXQgaGFzIHByZXNlbnRlZC5cblNob3J0aGFuZCBmb3IgaW9uQWN0aW9uU2hlZXRXaWxsRGlzbWlzcy5cbiAgICovXG4gIGRpZFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgYWN0aW9uIHNoZWV0IGhhcyBwcmVzZW50ZWQuXG5TaG9ydGhhbmQgZm9yIGlvbkFjdGlvblNoZWV0V2lsbFByZXNlbnQuXG4gICAqL1xuICB3aWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBhY3Rpb24gc2hlZXQgaGFzIGRpc21pc3NlZC5cblNob3J0aGFuZCBmb3IgaW9uQWN0aW9uU2hlZXRXaWxsRGlzbWlzcy5cbiAgICovXG4gIHdpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbkFjdGlvblNoZWV0T3ZlcmxheUV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBhY3Rpb24gc2hlZXQgaGFzIGRpc21pc3NlZC5cblNob3J0aGFuZCBmb3IgaW9uQWN0aW9uU2hlZXREaWREaXNtaXNzLlxuICAgKi9cbiAgZGlkRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElJb25BY3Rpb25TaGVldE92ZXJsYXlFdmVudERldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uQWxlcnQsXG4gIGlucHV0czogWydhbmltYXRlZCcsICdiYWNrZHJvcERpc21pc3MnLCAnYnV0dG9ucycsICdjc3NDbGFzcycsICdlbnRlckFuaW1hdGlvbicsICdoZWFkZXInLCAnaHRtbEF0dHJpYnV0ZXMnLCAnaW5wdXRzJywgJ2lzT3BlbicsICdrZXlib2FyZENsb3NlJywgJ2xlYXZlQW5pbWF0aW9uJywgJ21lc3NhZ2UnLCAnbW9kZScsICdzdWJIZWFkZXInLCAndHJhbnNsdWNlbnQnLCAndHJpZ2dlciddLFxuICBtZXRob2RzOiBbJ3ByZXNlbnQnLCAnZGlzbWlzcycsICdvbkRpZERpc21pc3MnLCAnb25XaWxsRGlzbWlzcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWFsZXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRlZCcsICdiYWNrZHJvcERpc21pc3MnLCAnYnV0dG9ucycsICdjc3NDbGFzcycsICdlbnRlckFuaW1hdGlvbicsICdoZWFkZXInLCAnaHRtbEF0dHJpYnV0ZXMnLCAnaW5wdXRzJywgJ2lzT3BlbicsICdrZXlib2FyZENsb3NlJywgJ2xlYXZlQW5pbWF0aW9uJywgJ21lc3NhZ2UnLCAnbW9kZScsICdzdWJIZWFkZXInLCAndHJhbnNsdWNlbnQnLCAndHJpZ2dlciddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkFsZXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uQWxlcnRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydpb25BbGVydERpZFByZXNlbnQnLCAnaW9uQWxlcnRXaWxsUHJlc2VudCcsICdpb25BbGVydFdpbGxEaXNtaXNzJywgJ2lvbkFsZXJ0RGlkRGlzbWlzcycsICdkaWRQcmVzZW50JywgJ3dpbGxQcmVzZW50JywgJ3dpbGxEaXNtaXNzJywgJ2RpZERpc21pc3MnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE92ZXJsYXlFdmVudERldGFpbCBhcyBJSW9uQWxlcnRPdmVybGF5RXZlbnREZXRhaWwgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkFsZXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5Jb25BbGVydCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBhbGVydCBoYXMgcHJlc2VudGVkLlxuICAgKi9cbiAgaW9uQWxlcnREaWRQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIGFsZXJ0IGhhcyBwcmVzZW50ZWQuXG4gICAqL1xuICBpb25BbGVydFdpbGxQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIGFsZXJ0IGhhcyBkaXNtaXNzZWQuXG4gICAqL1xuICBpb25BbGVydFdpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbkFsZXJ0T3ZlcmxheUV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBhbGVydCBoYXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgaW9uQWxlcnREaWREaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbkFsZXJ0T3ZlcmxheUV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBhbGVydCBoYXMgcHJlc2VudGVkLlxuU2hvcnRoYW5kIGZvciBpb25BbGVydFdpbGxEaXNtaXNzLlxuICAgKi9cbiAgZGlkUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBhbGVydCBoYXMgcHJlc2VudGVkLlxuU2hvcnRoYW5kIGZvciBpb25BbGVydFdpbGxQcmVzZW50LlxuICAgKi9cbiAgd2lsbFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgYWxlcnQgaGFzIGRpc21pc3NlZC5cblNob3J0aGFuZCBmb3IgaW9uQWxlcnRXaWxsRGlzbWlzcy5cbiAgICovXG4gIHdpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbkFsZXJ0T3ZlcmxheUV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBhbGVydCBoYXMgZGlzbWlzc2VkLlxuU2hvcnRoYW5kIGZvciBpb25BbGVydERpZERpc21pc3MuXG4gICAqL1xuICBkaWREaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbkFsZXJ0T3ZlcmxheUV2ZW50RGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25BcHAsXG4gIG1ldGhvZHM6IFsnc2V0Rm9jdXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1hcHAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25BcHAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25BcHBFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25BcHAgZXh0ZW5kcyBDb21wb25lbnRzLklvbkFwcCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uQXZhdGFyXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWF2YXRhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFtdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkF2YXRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkF2YXRhckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkF2YXRhciBleHRlbmRzIENvbXBvbmVudHMuSW9uQXZhdGFyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25CYWNrZHJvcCxcbiAgaW5wdXRzOiBbJ3N0b3BQcm9wYWdhdGlvbicsICd0YXBwYWJsZScsICd2aXNpYmxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tYmFja2Ryb3AnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3N0b3BQcm9wYWdhdGlvbicsICd0YXBwYWJsZScsICd2aXNpYmxlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uQmFja2Ryb3Age1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25CYWNrZHJvcEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvbkJhY2tkcm9wVGFwJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkJhY2tkcm9wIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25CYWNrZHJvcCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGJhY2tkcm9wIGlzIHRhcHBlZC5cbiAgICovXG4gIGlvbkJhY2tkcm9wVGFwOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uQmFkZ2UsXG4gIGlucHV0czogWydjb2xvcicsICdtb2RlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tYmFkZ2UnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ21vZGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25CYWRnZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkJhZGdlRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uQmFkZ2UgZXh0ZW5kcyBDb21wb25lbnRzLklvbkJhZGdlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25CcmVhZGNydW1iLFxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2Rvd25sb2FkJywgJ2hyZWYnLCAnbW9kZScsICdyZWwnLCAncm91dGVyQW5pbWF0aW9uJywgJ3JvdXRlckRpcmVjdGlvbicsICdzZXBhcmF0b3InLCAndGFyZ2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tYnJlYWRjcnVtYicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2Rvd25sb2FkJywgJ2hyZWYnLCAnbW9kZScsICdyZWwnLCAncm91dGVyQW5pbWF0aW9uJywgJ3JvdXRlckRpcmVjdGlvbicsICdzZXBhcmF0b3InLCAndGFyZ2V0J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uQnJlYWRjcnVtYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkJyZWFkY3J1bWJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydpb25Gb2N1cycsICdpb25CbHVyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkJyZWFkY3J1bWIgZXh0ZW5kcyBDb21wb25lbnRzLklvbkJyZWFkY3J1bWIge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBicmVhZGNydW1iIGhhcyBmb2N1cy5cbiAgICovXG4gIGlvbkZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBicmVhZGNydW1iIGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW9uQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvbkJyZWFkY3J1bWJzLFxuICBpbnB1dHM6IFsnY29sb3InLCAnaXRlbXNBZnRlckNvbGxhcHNlJywgJ2l0ZW1zQmVmb3JlQ29sbGFwc2UnLCAnbWF4SXRlbXMnLCAnbW9kZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWJyZWFkY3J1bWJzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdpdGVtc0FmdGVyQ29sbGFwc2UnLCAnaXRlbXNCZWZvcmVDb2xsYXBzZScsICdtYXhJdGVtcycsICdtb2RlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uQnJlYWRjcnVtYnMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25CcmVhZGNydW1ic0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvbkNvbGxhcHNlZENsaWNrJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBCcmVhZGNydW1iQ29sbGFwc2VkQ2xpY2tFdmVudERldGFpbCBhcyBJSW9uQnJlYWRjcnVtYnNCcmVhZGNydW1iQ29sbGFwc2VkQ2xpY2tFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uQnJlYWRjcnVtYnMgZXh0ZW5kcyBDb21wb25lbnRzLklvbkJyZWFkY3J1bWJzIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgY29sbGFwc2VkIGluZGljYXRvciBpcyBjbGlja2VkIG9uLlxuICAgKi9cbiAgaW9uQ29sbGFwc2VkQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJSW9uQnJlYWRjcnVtYnNCcmVhZGNydW1iQ29sbGFwc2VkQ2xpY2tFdmVudERldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uQnV0dG9uLFxuICBpbnB1dHM6IFsnYnV0dG9uVHlwZScsICdjb2xvcicsICdkaXNhYmxlZCcsICdkb3dubG9hZCcsICdleHBhbmQnLCAnZmlsbCcsICdmb3JtJywgJ2hyZWYnLCAnbW9kZScsICdyZWwnLCAncm91dGVyQW5pbWF0aW9uJywgJ3JvdXRlckRpcmVjdGlvbicsICdzaGFwZScsICdzaXplJywgJ3N0cm9uZycsICd0YXJnZXQnLCAndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYnV0dG9uVHlwZScsICdjb2xvcicsICdkaXNhYmxlZCcsICdkb3dubG9hZCcsICdleHBhbmQnLCAnZmlsbCcsICdmb3JtJywgJ2hyZWYnLCAnbW9kZScsICdyZWwnLCAncm91dGVyQW5pbWF0aW9uJywgJ3JvdXRlckRpcmVjdGlvbicsICdzaGFwZScsICdzaXplJywgJ3N0cm9uZycsICd0YXJnZXQnLCAndHlwZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkJ1dHRvbkVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvbkZvY3VzJywgJ2lvbkJsdXInXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25CdXR0b24ge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBidXR0b24gaGFzIGZvY3VzLlxuICAgKi9cbiAgaW9uRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGJ1dHRvbiBsb3NlcyBmb2N1cy5cbiAgICovXG4gIGlvbkJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25CdXR0b25zLFxuICBpbnB1dHM6IFsnY29sbGFwc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1idXR0b25zJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xsYXBzZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkJ1dHRvbnMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25CdXR0b25zRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uQnV0dG9ucyBleHRlbmRzIENvbXBvbmVudHMuSW9uQnV0dG9ucyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uQ2FyZCxcbiAgaW5wdXRzOiBbJ2J1dHRvbicsICdjb2xvcicsICdkaXNhYmxlZCcsICdkb3dubG9hZCcsICdocmVmJywgJ21vZGUnLCAncmVsJywgJ3JvdXRlckFuaW1hdGlvbicsICdyb3V0ZXJEaXJlY3Rpb24nLCAndGFyZ2V0JywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1jYXJkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydidXR0b24nLCAnY29sb3InLCAnZGlzYWJsZWQnLCAnZG93bmxvYWQnLCAnaHJlZicsICdtb2RlJywgJ3JlbCcsICdyb3V0ZXJBbmltYXRpb24nLCAncm91dGVyRGlyZWN0aW9uJywgJ3RhcmdldCcsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uQ2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkNhcmRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25DYXJkIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25DYXJkIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25DYXJkQ29udGVudCxcbiAgaW5wdXRzOiBbJ21vZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1jYXJkLWNvbnRlbnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ21vZGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25DYXJkQ29udGVudCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkNhcmRDb250ZW50RWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uQ2FyZENvbnRlbnQgZXh0ZW5kcyBDb21wb25lbnRzLklvbkNhcmRDb250ZW50IHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25DYXJkSGVhZGVyLFxuICBpbnB1dHM6IFsnY29sb3InLCAnbW9kZScsICd0cmFuc2x1Y2VudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWNhcmQtaGVhZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdtb2RlJywgJ3RyYW5zbHVjZW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uQ2FyZEhlYWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkNhcmRIZWFkZXJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25DYXJkSGVhZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25DYXJkSGVhZGVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25DYXJkU3VidGl0bGUsXG4gIGlucHV0czogWydjb2xvcicsICdtb2RlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tY2FyZC1zdWJ0aXRsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnbW9kZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkNhcmRTdWJ0aXRsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkNhcmRTdWJ0aXRsZUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkNhcmRTdWJ0aXRsZSBleHRlbmRzIENvbXBvbmVudHMuSW9uQ2FyZFN1YnRpdGxlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25DYXJkVGl0bGUsXG4gIGlucHV0czogWydjb2xvcicsICdtb2RlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tY2FyZC10aXRsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnbW9kZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkNhcmRUaXRsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkNhcmRUaXRsZUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkNhcmRUaXRsZSBleHRlbmRzIENvbXBvbmVudHMuSW9uQ2FyZFRpdGxlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25DaGlwLFxuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzYWJsZWQnLCAnbW9kZScsICdvdXRsaW5lJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tY2hpcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzYWJsZWQnLCAnbW9kZScsICdvdXRsaW5lJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uQ2hpcCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkNoaXBFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25DaGlwIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25DaGlwIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25Db2wsXG4gIGlucHV0czogWydvZmZzZXQnLCAnb2Zmc2V0TGcnLCAnb2Zmc2V0TWQnLCAnb2Zmc2V0U20nLCAnb2Zmc2V0WGwnLCAnb2Zmc2V0WHMnLCAncHVsbCcsICdwdWxsTGcnLCAncHVsbE1kJywgJ3B1bGxTbScsICdwdWxsWGwnLCAncHVsbFhzJywgJ3B1c2gnLCAncHVzaExnJywgJ3B1c2hNZCcsICdwdXNoU20nLCAncHVzaFhsJywgJ3B1c2hYcycsICdzaXplJywgJ3NpemVMZycsICdzaXplTWQnLCAnc2l6ZVNtJywgJ3NpemVYbCcsICdzaXplWHMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1jb2wnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ29mZnNldCcsICdvZmZzZXRMZycsICdvZmZzZXRNZCcsICdvZmZzZXRTbScsICdvZmZzZXRYbCcsICdvZmZzZXRYcycsICdwdWxsJywgJ3B1bGxMZycsICdwdWxsTWQnLCAncHVsbFNtJywgJ3B1bGxYbCcsICdwdWxsWHMnLCAncHVzaCcsICdwdXNoTGcnLCAncHVzaE1kJywgJ3B1c2hTbScsICdwdXNoWGwnLCAncHVzaFhzJywgJ3NpemUnLCAnc2l6ZUxnJywgJ3NpemVNZCcsICdzaXplU20nLCAnc2l6ZVhsJywgJ3NpemVYcyddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkNvbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkNvbEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkNvbCBleHRlbmRzIENvbXBvbmVudHMuSW9uQ29sIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25Db250ZW50LFxuICBpbnB1dHM6IFsnY29sb3InLCAnZml4ZWRTbG90UGxhY2VtZW50JywgJ2ZvcmNlT3ZlcnNjcm9sbCcsICdmdWxsc2NyZWVuJywgJ3Njcm9sbEV2ZW50cycsICdzY3JvbGxYJywgJ3Njcm9sbFknXSxcbiAgbWV0aG9kczogWydnZXRTY3JvbGxFbGVtZW50JywgJ3Njcm9sbFRvVG9wJywgJ3Njcm9sbFRvQm90dG9tJywgJ3Njcm9sbEJ5UG9pbnQnLCAnc2Nyb2xsVG9Qb2ludCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWNvbnRlbnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2ZpeGVkU2xvdFBsYWNlbWVudCcsICdmb3JjZU92ZXJzY3JvbGwnLCAnZnVsbHNjcmVlbicsICdzY3JvbGxFdmVudHMnLCAnc2Nyb2xsWCcsICdzY3JvbGxZJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uQ29udGVudCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkNvbnRlbnRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydpb25TY3JvbGxTdGFydCcsICdpb25TY3JvbGwnLCAnaW9uU2Nyb2xsRW5kJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBTY3JvbGxCYXNlRGV0YWlsIGFzIElJb25Db250ZW50U2Nyb2xsQmFzZURldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBTY3JvbGxEZXRhaWwgYXMgSUlvbkNvbnRlbnRTY3JvbGxEZXRhaWwgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkNvbnRlbnQgZXh0ZW5kcyBDb21wb25lbnRzLklvbkNvbnRlbnQge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBzY3JvbGwgaGFzIHN0YXJ0ZWQuIFRoaXMgZXZlbnQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cblNldCBgc2Nyb2xsRXZlbnRzYCB0byBgdHJ1ZWAgdG8gZW5hYmxlLlxuICAgKi9cbiAgaW9uU2Nyb2xsU3RhcnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJSW9uQ29udGVudFNjcm9sbEJhc2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hpbGUgc2Nyb2xsaW5nLiBUaGlzIGV2ZW50IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuXG5TZXQgYHNjcm9sbEV2ZW50c2AgdG8gYHRydWVgIHRvIGVuYWJsZS5cbiAgICovXG4gIGlvblNjcm9sbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElJb25Db250ZW50U2Nyb2xsRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNjcm9sbCBoYXMgZW5kZWQuIFRoaXMgZXZlbnQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cblNldCBgc2Nyb2xsRXZlbnRzYCB0byBgdHJ1ZWAgdG8gZW5hYmxlLlxuICAgKi9cbiAgaW9uU2Nyb2xsRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbkNvbnRlbnRTY3JvbGxCYXNlRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25EYXRldGltZUJ1dHRvbixcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2RhdGV0aW1lJywgJ2Rpc2FibGVkJywgJ21vZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1kYXRldGltZS1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2RhdGV0aW1lJywgJ2Rpc2FibGVkJywgJ21vZGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25EYXRldGltZUJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkRhdGV0aW1lQnV0dG9uRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uRGF0ZXRpbWVCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLklvbkRhdGV0aW1lQnV0dG9uIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25GYWIsXG4gIGlucHV0czogWydhY3RpdmF0ZWQnLCAnZWRnZScsICdob3Jpem9udGFsJywgJ3ZlcnRpY2FsJ10sXG4gIG1ldGhvZHM6IFsnY2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1mYWInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2YXRlZCcsICdlZGdlJywgJ2hvcml6b250YWwnLCAndmVydGljYWwnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25GYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25GYWJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25GYWIgZXh0ZW5kcyBDb21wb25lbnRzLklvbkZhYiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uRmFiQnV0dG9uLFxuICBpbnB1dHM6IFsnYWN0aXZhdGVkJywgJ2Nsb3NlSWNvbicsICdjb2xvcicsICdkaXNhYmxlZCcsICdkb3dubG9hZCcsICdocmVmJywgJ21vZGUnLCAncmVsJywgJ3JvdXRlckFuaW1hdGlvbicsICdyb3V0ZXJEaXJlY3Rpb24nLCAnc2hvdycsICdzaXplJywgJ3RhcmdldCcsICd0cmFuc2x1Y2VudCcsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tZmFiLWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZhdGVkJywgJ2Nsb3NlSWNvbicsICdjb2xvcicsICdkaXNhYmxlZCcsICdkb3dubG9hZCcsICdocmVmJywgJ21vZGUnLCAncmVsJywgJ3JvdXRlckFuaW1hdGlvbicsICdyb3V0ZXJEaXJlY3Rpb24nLCAnc2hvdycsICdzaXplJywgJ3RhcmdldCcsICd0cmFuc2x1Y2VudCcsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uRmFiQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uRmFiQnV0dG9uRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnaW9uRm9jdXMnLCAnaW9uQmx1ciddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25GYWJCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLklvbkZhYkJ1dHRvbiB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGJ1dHRvbiBoYXMgZm9jdXMuXG4gICAqL1xuICBpb25Gb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgYnV0dG9uIGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW9uQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvbkZhYkxpc3QsXG4gIGlucHV0czogWydhY3RpdmF0ZWQnLCAnc2lkZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWZhYi1saXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmF0ZWQnLCAnc2lkZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkZhYkxpc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25GYWJMaXN0RWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uRmFiTGlzdCBleHRlbmRzIENvbXBvbmVudHMuSW9uRmFiTGlzdCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uRm9vdGVyLFxuICBpbnB1dHM6IFsnY29sbGFwc2UnLCAnbW9kZScsICd0cmFuc2x1Y2VudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWZvb3RlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sbGFwc2UnLCAnbW9kZScsICd0cmFuc2x1Y2VudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkZvb3RlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkZvb3RlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkZvb3RlciBleHRlbmRzIENvbXBvbmVudHMuSW9uRm9vdGVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25HcmlkLFxuICBpbnB1dHM6IFsnZml4ZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1ncmlkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydmaXhlZCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkdyaWQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25HcmlkRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uR3JpZCBleHRlbmRzIENvbXBvbmVudHMuSW9uR3JpZCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uSGVhZGVyLFxuICBpbnB1dHM6IFsnY29sbGFwc2UnLCAnbW9kZScsICd0cmFuc2x1Y2VudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWhlYWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sbGFwc2UnLCAnbW9kZScsICd0cmFuc2x1Y2VudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkhlYWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkhlYWRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkhlYWRlciBleHRlbmRzIENvbXBvbmVudHMuSW9uSGVhZGVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25JbWcsXG4gIGlucHV0czogWydhbHQnLCAnc3JjJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24taW1nJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHQnLCAnc3JjJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uSW1nIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uSW1nRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnaW9uSW1nV2lsbExvYWQnLCAnaW9uSW1nRGlkTG9hZCcsICdpb25FcnJvciddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25JbWcgZXh0ZW5kcyBDb21wb25lbnRzLklvbkltZyB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGltZyBzcmMgaGFzIGJlZW4gc2V0XG4gICAqL1xuICBpb25JbWdXaWxsTG9hZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW1hZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmdcbiAgICovXG4gIGlvbkltZ0RpZExvYWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGltZyBmYWlscyB0byBsb2FkXG4gICAqL1xuICBpb25FcnJvcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvbkluZmluaXRlU2Nyb2xsLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAncG9zaXRpb24nLCAndGhyZXNob2xkJ10sXG4gIG1ldGhvZHM6IFsnY29tcGxldGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1pbmZpbml0ZS1zY3JvbGwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3Bvc2l0aW9uJywgJ3RocmVzaG9sZCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkluZmluaXRlU2Nyb2xsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uSW5maW5pdGVTY3JvbGxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydpb25JbmZpbml0ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25JbmZpbml0ZVNjcm9sbCBleHRlbmRzIENvbXBvbmVudHMuSW9uSW5maW5pdGVTY3JvbGwge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBzY3JvbGwgcmVhY2hlc1xudGhlIHRocmVzaG9sZCBkaXN0YW5jZS4gRnJvbSB3aXRoaW4geW91ciBpbmZpbml0ZSBoYW5kbGVyLFxueW91IG11c3QgY2FsbCB0aGUgaW5maW5pdGUgc2Nyb2xsJ3MgYGNvbXBsZXRlKClgIG1ldGhvZCB3aGVuXG55b3VyIGFzeW5jIG9wZXJhdGlvbiBoYXMgY29tcGxldGVkLlxuICAgKi9cbiAgaW9uSW5maW5pdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25JbmZpbml0ZVNjcm9sbENvbnRlbnQsXG4gIGlucHV0czogWydsb2FkaW5nU3Bpbm5lcicsICdsb2FkaW5nVGV4dCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWluZmluaXRlLXNjcm9sbC1jb250ZW50JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydsb2FkaW5nU3Bpbm5lcicsICdsb2FkaW5nVGV4dCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkluZmluaXRlU2Nyb2xsQ29udGVudCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkluZmluaXRlU2Nyb2xsQ29udGVudEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbkluZmluaXRlU2Nyb2xsQ29udGVudCBleHRlbmRzIENvbXBvbmVudHMuSW9uSW5maW5pdGVTY3JvbGxDb250ZW50IHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25JbnB1dFBhc3N3b3JkVG9nZ2xlLFxuICBpbnB1dHM6IFsnY29sb3InLCAnaGlkZUljb24nLCAnbW9kZScsICdzaG93SWNvbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWlucHV0LXBhc3N3b3JkLXRvZ2dsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnaGlkZUljb24nLCAnbW9kZScsICdzaG93SWNvbiddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbklucHV0UGFzc3dvcmRUb2dnbGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25JbnB1dFBhc3N3b3JkVG9nZ2xlRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uSW5wdXRQYXNzd29yZFRvZ2dsZSBleHRlbmRzIENvbXBvbmVudHMuSW9uSW5wdXRQYXNzd29yZFRvZ2dsZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uSXRlbSxcbiAgaW5wdXRzOiBbJ2J1dHRvbicsICdjb2xvcicsICdkZXRhaWwnLCAnZGV0YWlsSWNvbicsICdkaXNhYmxlZCcsICdkb3dubG9hZCcsICdocmVmJywgJ2xpbmVzJywgJ21vZGUnLCAncmVsJywgJ3JvdXRlckFuaW1hdGlvbicsICdyb3V0ZXJEaXJlY3Rpb24nLCAndGFyZ2V0JywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydidXR0b24nLCAnY29sb3InLCAnZGV0YWlsJywgJ2RldGFpbEljb24nLCAnZGlzYWJsZWQnLCAnZG93bmxvYWQnLCAnaHJlZicsICdsaW5lcycsICdtb2RlJywgJ3JlbCcsICdyb3V0ZXJBbmltYXRpb24nLCAncm91dGVyRGlyZWN0aW9uJywgJ3RhcmdldCcsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uSXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkl0ZW1FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25JdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25JdGVtIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25JdGVtRGl2aWRlcixcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ21vZGUnLCAnc3RpY2t5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24taXRlbS1kaXZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdtb2RlJywgJ3N0aWNreSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkl0ZW1EaXZpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uSXRlbURpdmlkZXJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25JdGVtRGl2aWRlciBleHRlbmRzIENvbXBvbmVudHMuSW9uSXRlbURpdmlkZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvbkl0ZW1Hcm91cFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1pdGVtLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uSXRlbUdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uSXRlbUdyb3VwRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uSXRlbUdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25JdGVtR3JvdXAge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvbkl0ZW1PcHRpb24sXG4gIGlucHV0czogWydjb2xvcicsICdkaXNhYmxlZCcsICdkb3dubG9hZCcsICdleHBhbmRhYmxlJywgJ2hyZWYnLCAnbW9kZScsICdyZWwnLCAndGFyZ2V0JywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1pdGVtLW9wdGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzYWJsZWQnLCAnZG93bmxvYWQnLCAnZXhwYW5kYWJsZScsICdocmVmJywgJ21vZGUnLCAncmVsJywgJ3RhcmdldCcsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uSXRlbU9wdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkl0ZW1PcHRpb25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25JdGVtT3B0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25JdGVtT3B0aW9uIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25JdGVtT3B0aW9ucyxcbiAgaW5wdXRzOiBbJ3NpZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1pdGVtLW9wdGlvbnMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3NpZGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25JdGVtT3B0aW9ucyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkl0ZW1PcHRpb25zRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnaW9uU3dpcGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uSXRlbU9wdGlvbnMgZXh0ZW5kcyBDb21wb25lbnRzLklvbkl0ZW1PcHRpb25zIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaXRlbSBoYXMgYmVlbiBmdWxseSBzd2lwZWQuXG4gICAqL1xuICBpb25Td2lwZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uSXRlbVNsaWRpbmcsXG4gIGlucHV0czogWydkaXNhYmxlZCddLFxuICBtZXRob2RzOiBbJ2dldE9wZW5BbW91bnQnLCAnZ2V0U2xpZGluZ1JhdGlvJywgJ29wZW4nLCAnY2xvc2UnLCAnY2xvc2VPcGVuZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1pdGVtLXNsaWRpbmcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uSXRlbVNsaWRpbmcge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25JdGVtU2xpZGluZ0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvbkRyYWcnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uSXRlbVNsaWRpbmcgZXh0ZW5kcyBDb21wb25lbnRzLklvbkl0ZW1TbGlkaW5nIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2xpZGluZyBwb3NpdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgaW9uRHJhZzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uTGFiZWwsXG4gIGlucHV0czogWydjb2xvcicsICdtb2RlJywgJ3Bvc2l0aW9uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tbGFiZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ21vZGUnLCAncG9zaXRpb24nXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25MYWJlbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbkxhYmVsRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uTGFiZWwgZXh0ZW5kcyBDb21wb25lbnRzLklvbkxhYmVsIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25MaXN0LFxuICBpbnB1dHM6IFsnaW5zZXQnLCAnbGluZXMnLCAnbW9kZSddLFxuICBtZXRob2RzOiBbJ2Nsb3NlU2xpZGluZ0l0ZW1zJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tbGlzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnaW5zZXQnLCAnbGluZXMnLCAnbW9kZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkxpc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25MaXN0RWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uTGlzdCBleHRlbmRzIENvbXBvbmVudHMuSW9uTGlzdCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uTGlzdEhlYWRlcixcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2xpbmVzJywgJ21vZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1saXN0LWhlYWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnbGluZXMnLCAnbW9kZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkxpc3RIZWFkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25MaXN0SGVhZGVyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uTGlzdEhlYWRlciBleHRlbmRzIENvbXBvbmVudHMuSW9uTGlzdEhlYWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uTG9hZGluZyxcbiAgaW5wdXRzOiBbJ2FuaW1hdGVkJywgJ2JhY2tkcm9wRGlzbWlzcycsICdjc3NDbGFzcycsICdkdXJhdGlvbicsICdlbnRlckFuaW1hdGlvbicsICdodG1sQXR0cmlidXRlcycsICdpc09wZW4nLCAna2V5Ym9hcmRDbG9zZScsICdsZWF2ZUFuaW1hdGlvbicsICdtZXNzYWdlJywgJ21vZGUnLCAnc2hvd0JhY2tkcm9wJywgJ3NwaW5uZXInLCAndHJhbnNsdWNlbnQnLCAndHJpZ2dlciddLFxuICBtZXRob2RzOiBbJ3ByZXNlbnQnLCAnZGlzbWlzcycsICdvbkRpZERpc21pc3MnLCAnb25XaWxsRGlzbWlzcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLWxvYWRpbmcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGVkJywgJ2JhY2tkcm9wRGlzbWlzcycsICdjc3NDbGFzcycsICdkdXJhdGlvbicsICdlbnRlckFuaW1hdGlvbicsICdodG1sQXR0cmlidXRlcycsICdpc09wZW4nLCAna2V5Ym9hcmRDbG9zZScsICdsZWF2ZUFuaW1hdGlvbicsICdtZXNzYWdlJywgJ21vZGUnLCAnc2hvd0JhY2tkcm9wJywgJ3NwaW5uZXInLCAndHJhbnNsdWNlbnQnLCAndHJpZ2dlciddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbkxvYWRpbmcge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25Mb2FkaW5nRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnaW9uTG9hZGluZ0RpZFByZXNlbnQnLCAnaW9uTG9hZGluZ1dpbGxQcmVzZW50JywgJ2lvbkxvYWRpbmdXaWxsRGlzbWlzcycsICdpb25Mb2FkaW5nRGlkRGlzbWlzcycsICdkaWRQcmVzZW50JywgJ3dpbGxQcmVzZW50JywgJ3dpbGxEaXNtaXNzJywgJ2RpZERpc21pc3MnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE92ZXJsYXlFdmVudERldGFpbCBhcyBJSW9uTG9hZGluZ092ZXJsYXlFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uTG9hZGluZyBleHRlbmRzIENvbXBvbmVudHMuSW9uTG9hZGluZyB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBsb2FkaW5nIGhhcyBwcmVzZW50ZWQuXG4gICAqL1xuICBpb25Mb2FkaW5nRGlkUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBsb2FkaW5nIGhhcyBwcmVzZW50ZWQuXG4gICAqL1xuICBpb25Mb2FkaW5nV2lsbFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgbG9hZGluZyBoYXMgZGlzbWlzc2VkLlxuICAgKi9cbiAgaW9uTG9hZGluZ1dpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbkxvYWRpbmdPdmVybGF5RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIGxvYWRpbmcgaGFzIGRpc21pc3NlZC5cbiAgICovXG4gIGlvbkxvYWRpbmdEaWREaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbkxvYWRpbmdPdmVybGF5RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIGxvYWRpbmcgaW5kaWNhdG9yIGhhcyBwcmVzZW50ZWQuXG5TaG9ydGhhbmQgZm9yIGlvbkxvYWRpbmdXaWxsRGlzbWlzcy5cbiAgICovXG4gIGRpZFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgbG9hZGluZyBpbmRpY2F0b3IgaGFzIHByZXNlbnRlZC5cblNob3J0aGFuZCBmb3IgaW9uTG9hZGluZ1dpbGxQcmVzZW50LlxuICAgKi9cbiAgd2lsbFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgbG9hZGluZyBpbmRpY2F0b3IgaGFzIGRpc21pc3NlZC5cblNob3J0aGFuZCBmb3IgaW9uTG9hZGluZ1dpbGxEaXNtaXNzLlxuICAgKi9cbiAgd2lsbERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJSW9uTG9hZGluZ092ZXJsYXlFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgbG9hZGluZyBpbmRpY2F0b3IgaGFzIGRpc21pc3NlZC5cblNob3J0aGFuZCBmb3IgaW9uTG9hZGluZ0RpZERpc21pc3MuXG4gICAqL1xuICBkaWREaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbkxvYWRpbmdPdmVybGF5RXZlbnREZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvbk1lbnUsXG4gIGlucHV0czogWydjb250ZW50SWQnLCAnZGlzYWJsZWQnLCAnbWF4RWRnZVN0YXJ0JywgJ21lbnVJZCcsICdzaWRlJywgJ3N3aXBlR2VzdHVyZScsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnaXNPcGVuJywgJ2lzQWN0aXZlJywgJ29wZW4nLCAnY2xvc2UnLCAndG9nZ2xlJywgJ3NldE9wZW4nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb250ZW50SWQnLCAnZGlzYWJsZWQnLCAnbWF4RWRnZVN0YXJ0JywgJ21lbnVJZCcsICdzaWRlJywgJ3N3aXBlR2VzdHVyZScsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbk1lbnVFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydpb25XaWxsT3BlbicsICdpb25XaWxsQ2xvc2UnLCAnaW9uRGlkT3BlbicsICdpb25EaWRDbG9zZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWVudUNsb3NlRXZlbnREZXRhaWwgYXMgSUlvbk1lbnVNZW51Q2xvc2VFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uTWVudSBleHRlbmRzIENvbXBvbmVudHMuSW9uTWVudSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIG1lbnUgaXMgYWJvdXQgdG8gYmUgb3BlbmVkLlxuICAgKi9cbiAgaW9uV2lsbE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIG1lbnUgaXMgYWJvdXQgdG8gYmUgY2xvc2VkLlxuICAgKi9cbiAgaW9uV2lsbENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbk1lbnVNZW51Q2xvc2VFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBtZW51IGlzIG9wZW4uXG4gICAqL1xuICBpb25EaWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZC5cbiAgICovXG4gIGlvbkRpZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvbk1lbnVNZW51Q2xvc2VFdmVudERldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uTWVudUJ1dHRvbixcbiAgaW5wdXRzOiBbJ2F1dG9IaWRlJywgJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ21lbnUnLCAnbW9kZScsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tbWVudS1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9IaWRlJywgJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ21lbnUnLCAnbW9kZScsICd0eXBlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uTWVudUJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbk1lbnVCdXR0b25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25NZW51QnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25NZW51QnV0dG9uIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25NZW51VG9nZ2xlLFxuICBpbnB1dHM6IFsnYXV0b0hpZGUnLCAnbWVudSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLW1lbnUtdG9nZ2xlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvSGlkZScsICdtZW51J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uTWVudVRvZ2dsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvbk1lbnVUb2dnbGVFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25NZW51VG9nZ2xlIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25NZW51VG9nZ2xlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25OYXZMaW5rLFxuICBpbnB1dHM6IFsnY29tcG9uZW50JywgJ2NvbXBvbmVudFByb3BzJywgJ3JvdXRlckFuaW1hdGlvbicsICdyb3V0ZXJEaXJlY3Rpb24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1uYXYtbGluaycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29tcG9uZW50JywgJ2NvbXBvbmVudFByb3BzJywgJ3JvdXRlckFuaW1hdGlvbicsICdyb3V0ZXJEaXJlY3Rpb24nXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25OYXZMaW5rIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uTmF2TGlua0VsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvbk5hdkxpbmsgZXh0ZW5kcyBDb21wb25lbnRzLklvbk5hdkxpbmsge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvbk5vdGUsXG4gIGlucHV0czogWydjb2xvcicsICdtb2RlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tbm90ZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnbW9kZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvbk5vdGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25Ob3RlRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uTm90ZSBleHRlbmRzIENvbXBvbmVudHMuSW9uTm90ZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uUGlja2VyLFxuICBpbnB1dHM6IFsnbW9kZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnbW9kZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvblBpY2tlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuSW9uUGlja2VyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25QaWNrZXJDb2x1bW4sXG4gIGlucHV0czogWydjb2xvcicsICdkaXNhYmxlZCcsICdtb2RlJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnc2V0Rm9jdXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1waWNrZXItY29sdW1uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdkaXNhYmxlZCcsICdtb2RlJywgJ3ZhbHVlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uUGlja2VyQ29sdW1uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uUGlja2VyQ29sdW1uRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnaW9uQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBQaWNrZXJDb2x1bW5DaGFuZ2VFdmVudERldGFpbCBhcyBJSW9uUGlja2VyQ29sdW1uUGlja2VyQ29sdW1uQ2hhbmdlRXZlbnREZXRhaWwgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblBpY2tlckNvbHVtbiBleHRlbmRzIENvbXBvbmVudHMuSW9uUGlja2VyQ29sdW1uIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQuXG5cblRoaXMgZXZlbnQgd2lsbCBub3QgZW1pdCB3aGVuIHByb2dyYW1tYXRpY2FsbHkgc2V0dGluZyB0aGUgYHZhbHVlYCBwcm9wZXJ0eS5cbiAgICovXG4gIGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElJb25QaWNrZXJDb2x1bW5QaWNrZXJDb2x1bW5DaGFuZ2VFdmVudERldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uUGlja2VyQ29sdW1uT3B0aW9uLFxuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzYWJsZWQnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1waWNrZXItY29sdW1uLW9wdGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnZGlzYWJsZWQnLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25QaWNrZXJDb2x1bW5PcHRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25QaWNrZXJDb2x1bW5PcHRpb25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25QaWNrZXJDb2x1bW5PcHRpb24gZXh0ZW5kcyBDb21wb25lbnRzLklvblBpY2tlckNvbHVtbk9wdGlvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uUGlja2VyTGVnYWN5LFxuICBpbnB1dHM6IFsnYW5pbWF0ZWQnLCAnYmFja2Ryb3BEaXNtaXNzJywgJ2J1dHRvbnMnLCAnY29sdW1ucycsICdjc3NDbGFzcycsICdkdXJhdGlvbicsICdlbnRlckFuaW1hdGlvbicsICdodG1sQXR0cmlidXRlcycsICdpc09wZW4nLCAna2V5Ym9hcmRDbG9zZScsICdsZWF2ZUFuaW1hdGlvbicsICdtb2RlJywgJ3Nob3dCYWNrZHJvcCcsICd0cmlnZ2VyJ10sXG4gIG1ldGhvZHM6IFsncHJlc2VudCcsICdkaXNtaXNzJywgJ29uRGlkRGlzbWlzcycsICdvbldpbGxEaXNtaXNzJywgJ2dldENvbHVtbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLXBpY2tlci1sZWdhY3knLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGVkJywgJ2JhY2tkcm9wRGlzbWlzcycsICdidXR0b25zJywgJ2NvbHVtbnMnLCAnY3NzQ2xhc3MnLCAnZHVyYXRpb24nLCAnZW50ZXJBbmltYXRpb24nLCAnaHRtbEF0dHJpYnV0ZXMnLCAnaXNPcGVuJywgJ2tleWJvYXJkQ2xvc2UnLCAnbGVhdmVBbmltYXRpb24nLCAnbW9kZScsICdzaG93QmFja2Ryb3AnLCAndHJpZ2dlciddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblBpY2tlckxlZ2FjeSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvblBpY2tlckxlZ2FjeUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvblBpY2tlckRpZFByZXNlbnQnLCAnaW9uUGlja2VyV2lsbFByZXNlbnQnLCAnaW9uUGlja2VyV2lsbERpc21pc3MnLCAnaW9uUGlja2VyRGlkRGlzbWlzcycsICdkaWRQcmVzZW50JywgJ3dpbGxQcmVzZW50JywgJ3dpbGxEaXNtaXNzJywgJ2RpZERpc21pc3MnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE92ZXJsYXlFdmVudERldGFpbCBhcyBJSW9uUGlja2VyTGVnYWN5T3ZlcmxheUV2ZW50RGV0YWlsIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25QaWNrZXJMZWdhY3kgZXh0ZW5kcyBDb21wb25lbnRzLklvblBpY2tlckxlZ2FjeSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBwaWNrZXIgaGFzIHByZXNlbnRlZC5cbiAgICovXG4gIGlvblBpY2tlckRpZFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgcGlja2VyIGhhcyBwcmVzZW50ZWQuXG4gICAqL1xuICBpb25QaWNrZXJXaWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBwaWNrZXIgaGFzIGRpc21pc3NlZC5cbiAgICovXG4gIGlvblBpY2tlcldpbGxEaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvblBpY2tlckxlZ2FjeU92ZXJsYXlFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgcGlja2VyIGhhcyBkaXNtaXNzZWQuXG4gICAqL1xuICBpb25QaWNrZXJEaWREaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvblBpY2tlckxlZ2FjeU92ZXJsYXlFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgcGlja2VyIGhhcyBwcmVzZW50ZWQuXG5TaG9ydGhhbmQgZm9yIGlvblBpY2tlcldpbGxEaXNtaXNzLlxuICAgKi9cbiAgZGlkUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBwaWNrZXIgaGFzIHByZXNlbnRlZC5cblNob3J0aGFuZCBmb3IgaW9uUGlja2VyV2lsbFByZXNlbnQuXG4gICAqL1xuICB3aWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBwaWNrZXIgaGFzIGRpc21pc3NlZC5cblNob3J0aGFuZCBmb3IgaW9uUGlja2VyV2lsbERpc21pc3MuXG4gICAqL1xuICB3aWxsRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElJb25QaWNrZXJMZWdhY3lPdmVybGF5RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHBpY2tlciBoYXMgZGlzbWlzc2VkLlxuU2hvcnRoYW5kIGZvciBpb25QaWNrZXJEaWREaXNtaXNzLlxuICAgKi9cbiAgZGlkRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElJb25QaWNrZXJMZWdhY3lPdmVybGF5RXZlbnREZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvblByb2dyZXNzQmFyLFxuICBpbnB1dHM6IFsnYnVmZmVyJywgJ2NvbG9yJywgJ21vZGUnLCAncmV2ZXJzZWQnLCAndHlwZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLXByb2dyZXNzLWJhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYnVmZmVyJywgJ2NvbG9yJywgJ21vZGUnLCAncmV2ZXJzZWQnLCAndHlwZScsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblByb2dyZXNzQmFyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uUHJvZ3Jlc3NCYXJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25Qcm9ncmVzc0JhciBleHRlbmRzIENvbXBvbmVudHMuSW9uUHJvZ3Jlc3NCYXIge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvblJhZGlvLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2p1c3RpZnknLCAnbGFiZWxQbGFjZW1lbnQnLCAnbW9kZScsICduYW1lJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdjb2xvcicsICdkaXNhYmxlZCcsICdqdXN0aWZ5JywgJ2xhYmVsUGxhY2VtZW50JywgJ21vZGUnLCAnbmFtZScsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblJhZGlvIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uUmFkaW9FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydpb25Gb2N1cycsICdpb25CbHVyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblJhZGlvIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25SYWRpbyB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHJhZGlvIGJ1dHRvbiBoYXMgZm9jdXMuXG4gICAqL1xuICBpb25Gb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcmFkaW8gYnV0dG9uIGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgaW9uQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvblJlZnJlc2hlcixcbiAgaW5wdXRzOiBbJ2Nsb3NlRHVyYXRpb24nLCAnZGlzYWJsZWQnLCAnbW9kZScsICdwdWxsRmFjdG9yJywgJ3B1bGxNYXgnLCAncHVsbE1pbicsICdzbmFwYmFja0R1cmF0aW9uJ10sXG4gIG1ldGhvZHM6IFsnY29tcGxldGUnLCAnY2FuY2VsJywgJ2dldFByb2dyZXNzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tcmVmcmVzaGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjbG9zZUR1cmF0aW9uJywgJ2Rpc2FibGVkJywgJ21vZGUnLCAncHVsbEZhY3RvcicsICdwdWxsTWF4JywgJ3B1bGxNaW4nLCAnc25hcGJhY2tEdXJhdGlvbiddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblJlZnJlc2hlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvblJlZnJlc2hlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvblJlZnJlc2gnLCAnaW9uUHVsbCcsICdpb25TdGFydCcsICdpb25QdWxsU3RhcnQnLCAnaW9uUHVsbEVuZCddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgUmVmcmVzaGVyRXZlbnREZXRhaWwgYXMgSUlvblJlZnJlc2hlclJlZnJlc2hlckV2ZW50RGV0YWlsIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IFJlZnJlc2hlclB1bGxFbmRFdmVudERldGFpbCBhcyBJSW9uUmVmcmVzaGVyUmVmcmVzaGVyUHVsbEVuZEV2ZW50RGV0YWlsIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25SZWZyZXNoZXIgZXh0ZW5kcyBDb21wb25lbnRzLklvblJlZnJlc2hlciB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgbGV0cyBnbyBvZiB0aGUgY29udGVudCBhbmQgaGFzIHB1bGxlZCBkb3duXG5mdXJ0aGVyIHRoYW4gdGhlIGBwdWxsTWluYCBvciBwdWxscyB0aGUgY29udGVudCBkb3duIGFuZCBleGNlZWRzIHRoZSBwdWxsTWF4LlxuVXBkYXRlcyB0aGUgcmVmcmVzaGVyIHN0YXRlIHRvIGByZWZyZXNoaW5nYC4gVGhlIGBjb21wbGV0ZSgpYCBtZXRob2Qgc2hvdWxkIGJlXG5jYWxsZWQgd2hlbiB0aGUgYXN5bmMgb3BlcmF0aW9uIGhhcyBjb21wbGV0ZWQuXG4gICAqL1xuICBpb25SZWZyZXNoOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvblJlZnJlc2hlclJlZnJlc2hlckV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoaWxlIHRoZSB1c2VyIGlzIHB1bGxpbmcgZG93biB0aGUgY29udGVudCBhbmQgZXhwb3NpbmcgdGhlIHJlZnJlc2hlci5cbiAgICovXG4gIGlvblB1bGw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgYmVnaW5zIHRvIHN0YXJ0IHB1bGxpbmcgZG93bi4gQGRlcHJlY2F0ZWQgVXNlIGBpb25QdWxsU3RhcnRgIGluc3RlYWQuXG4gICAqL1xuICBpb25TdGFydDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBiZWdpbnMgdG8gc3RhcnQgcHVsbGluZyBkb3duLlxuICAgKi9cbiAgaW9uUHVsbFN0YXJ0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSByZWZyZXNoZXIgaGFzIHJldHVybmVkIHRvIHRoZSBpbmFjdGl2ZSBzdGF0ZVxuYWZ0ZXIgYSBwdWxsIGdlc3R1cmUuIFRoaXMgZmlyZXMgd2hldGhlciB0aGUgcmVmcmVzaCBjb21wbGV0ZWRcbnN1Y2Nlc3NmdWxseSBvciB3YXMgY2FuY2VsZWQuXG4gICAqL1xuICBpb25QdWxsRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvblJlZnJlc2hlclJlZnJlc2hlclB1bGxFbmRFdmVudERldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uUmVmcmVzaGVyQ29udGVudCxcbiAgaW5wdXRzOiBbJ3B1bGxpbmdJY29uJywgJ3B1bGxpbmdUZXh0JywgJ3JlZnJlc2hpbmdTcGlubmVyJywgJ3JlZnJlc2hpbmdUZXh0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tcmVmcmVzaGVyLWNvbnRlbnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3B1bGxpbmdJY29uJywgJ3B1bGxpbmdUZXh0JywgJ3JlZnJlc2hpbmdTcGlubmVyJywgJ3JlZnJlc2hpbmdUZXh0J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uUmVmcmVzaGVyQ29udGVudCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvblJlZnJlc2hlckNvbnRlbnRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25SZWZyZXNoZXJDb250ZW50IGV4dGVuZHMgQ29tcG9uZW50cy5Jb25SZWZyZXNoZXJDb250ZW50IHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25SZW9yZGVyXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLXJlb3JkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25SZW9yZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uUmVvcmRlckVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblJlb3JkZXIgZXh0ZW5kcyBDb21wb25lbnRzLklvblJlb3JkZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvblJlb3JkZXJHcm91cCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG4gIG1ldGhvZHM6IFsnY29tcGxldGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1yZW9yZGVyLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkaXNhYmxlZCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblJlb3JkZXJHcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvblJlb3JkZXJHcm91cEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvbkl0ZW1SZW9yZGVyJywgJ2lvblJlb3JkZXJTdGFydCcsICdpb25SZW9yZGVyTW92ZScsICdpb25SZW9yZGVyRW5kJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBJdGVtUmVvcmRlckV2ZW50RGV0YWlsIGFzIElJb25SZW9yZGVyR3JvdXBJdGVtUmVvcmRlckV2ZW50RGV0YWlsIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IFJlb3JkZXJNb3ZlRXZlbnREZXRhaWwgYXMgSUlvblJlb3JkZXJHcm91cFJlb3JkZXJNb3ZlRXZlbnREZXRhaWwgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgUmVvcmRlckVuZEV2ZW50RGV0YWlsIGFzIElJb25SZW9yZGVyR3JvdXBSZW9yZGVyRW5kRXZlbnREZXRhaWwgfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblJlb3JkZXJHcm91cCBleHRlbmRzIENvbXBvbmVudHMuSW9uUmVvcmRlckdyb3VwIHtcbiAgLyoqXG4gICAqIEV2ZW50IHRoYXQgbmVlZHMgdG8gYmUgbGlzdGVuZWQgdG8gaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlb3JkZXIgYWN0aW9uLiBAZGVwcmVjYXRlZCBVc2UgYGlvblJlb3JkZXJFbmRgIGluc3RlYWQuIElmIHlvdSBhcmUgYWNjZXNzaW5nXG5gZXZlbnQuZGV0YWlsLmZyb21gIG9yIGBldmVudC5kZXRhaWwudG9gIGFuZCByZWx5aW5nIG9uIHRoZW1cbmJlaW5nIGRpZmZlcmVudCB5b3Ugc2hvdWxkIG5vdyBhZGQgY2hlY2tzIGFzIHRoZXkgYXJlIGFsd2F5cyBlbWl0dGVkXG5pbiBgaW9uUmVvcmRlckVuZGAsIGV2ZW4gd2hlbiB0aGV5IGFyZSB0aGUgc2FtZS5cbiAgICovXG4gIGlvbkl0ZW1SZW9yZGVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SUlvblJlb3JkZXJHcm91cEl0ZW1SZW9yZGVyRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEV2ZW50IHRoYXQgaXMgZW1pdHRlZCB3aGVuIHRoZSByZW9yZGVyIGdlc3R1cmUgc3RhcnRzLlxuICAgKi9cbiAgaW9uUmVvcmRlclN0YXJ0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRXZlbnQgdGhhdCBpcyBlbWl0dGVkIGFzIHRoZSByZW9yZGVyIGdlc3R1cmUgbW92ZXMuXG4gICAqL1xuICBpb25SZW9yZGVyTW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElJb25SZW9yZGVyR3JvdXBSZW9yZGVyTW92ZUV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFdmVudCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiB0aGUgcmVvcmRlciBnZXN0dXJlIGVuZHMuXG5UaGUgZnJvbSBhbmQgdG8gcHJvcGVydGllcyBhcmUgYWx3YXlzIGF2YWlsYWJsZSwgcmVnYXJkbGVzcyBvZlxuaWYgdGhlIHJlb3JkZXIgZ2VzdHVyZSBtb3ZlZCB0aGUgaXRlbS4gSWYgdGhlIGl0ZW0gZGlkIG5vdCBjaGFuZ2VcbmZyb20gaXRzIHN0YXJ0IHBvc2l0aW9uLCB0aGUgZnJvbSBhbmQgdG8gcHJvcGVydGllcyB3aWxsIGJlIHRoZSBzYW1lLlxuT25jZSB0aGUgZXZlbnQgaGFzIGJlZW4gZW1pdHRlZCwgdGhlIGBjb21wbGV0ZSgpYCBtZXRob2QgdGhlbiBuZWVkc1xudG8gYmUgY2FsbGVkIGluIG9yZGVyIHRvIGZpbmFsaXplIHRoZSByZW9yZGVyIGFjdGlvbi5cbiAgICovXG4gIGlvblJlb3JkZXJFbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJSW9uUmVvcmRlckdyb3VwUmVvcmRlckVuZEV2ZW50RGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25SaXBwbGVFZmZlY3QsXG4gIGlucHV0czogWyd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnYWRkUmlwcGxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tcmlwcGxlLWVmZmVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsndHlwZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblJpcHBsZUVmZmVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvblJpcHBsZUVmZmVjdEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblJpcHBsZUVmZmVjdCBleHRlbmRzIENvbXBvbmVudHMuSW9uUmlwcGxlRWZmZWN0IHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25Sb3dcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uUm93IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uUm93RWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uUm93IGV4dGVuZHMgQ29tcG9uZW50cy5Jb25Sb3cge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvblNlZ21lbnRCdXR0b24sXG4gIGlucHV0czogWydjb250ZW50SWQnLCAnZGlzYWJsZWQnLCAnbGF5b3V0JywgJ21vZGUnLCAndHlwZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLXNlZ21lbnQtYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb250ZW50SWQnLCAnZGlzYWJsZWQnLCAnbGF5b3V0JywgJ21vZGUnLCAndHlwZScsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblNlZ21lbnRCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25TZWdtZW50QnV0dG9uRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uU2VnbWVudEJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHMuSW9uU2VnbWVudEJ1dHRvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uU2VnbWVudENvbnRlbnRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tc2VnbWVudC1jb250ZW50JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uU2VnbWVudENvbnRlbnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25TZWdtZW50Q29udGVudEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblNlZ21lbnRDb250ZW50IGV4dGVuZHMgQ29tcG9uZW50cy5Jb25TZWdtZW50Q29udGVudCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uU2VnbWVudFZpZXcsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdzd2lwZUdlc3R1cmUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1zZWdtZW50LXZpZXcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3N3aXBlR2VzdHVyZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblNlZ21lbnRWaWV3IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uU2VnbWVudFZpZXdFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydpb25TZWdtZW50Vmlld1Njcm9sbCddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgU2VnbWVudFZpZXdTY3JvbGxFdmVudCBhcyBJSW9uU2VnbWVudFZpZXdTZWdtZW50Vmlld1Njcm9sbEV2ZW50IH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25TZWdtZW50VmlldyBleHRlbmRzIENvbXBvbmVudHMuSW9uU2VnbWVudFZpZXcge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBzZWdtZW50IHZpZXcgaXMgc2Nyb2xsZWQuXG4gICAqL1xuICBpb25TZWdtZW50Vmlld1Njcm9sbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElJb25TZWdtZW50Vmlld1NlZ21lbnRWaWV3U2Nyb2xsRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvblNlbGVjdE1vZGFsLFxuICBpbnB1dHM6IFsnY2FuY2VsVGV4dCcsICdoZWFkZXInLCAnbXVsdGlwbGUnLCAnb3B0aW9ucyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLXNlbGVjdC1tb2RhbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2FuY2VsVGV4dCcsICdoZWFkZXInLCAnbXVsdGlwbGUnLCAnb3B0aW9ucyddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblNlbGVjdE1vZGFsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uU2VsZWN0TW9kYWxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25TZWxlY3RNb2RhbCBleHRlbmRzIENvbXBvbmVudHMuSW9uU2VsZWN0TW9kYWwge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvblNlbGVjdE9wdGlvbixcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tc2VsZWN0LW9wdGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAndmFsdWUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25TZWxlY3RPcHRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25TZWxlY3RPcHRpb25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25TZWxlY3RPcHRpb24gZXh0ZW5kcyBDb21wb25lbnRzLklvblNlbGVjdE9wdGlvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uU2tlbGV0b25UZXh0LFxuICBpbnB1dHM6IFsnYW5pbWF0ZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1za2VsZXRvbi10ZXh0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRlZCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblNrZWxldG9uVGV4dCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvblNrZWxldG9uVGV4dEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblNrZWxldG9uVGV4dCBleHRlbmRzIENvbXBvbmVudHMuSW9uU2tlbGV0b25UZXh0IHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25TcGlubmVyLFxuICBpbnB1dHM6IFsnY29sb3InLCAnZHVyYXRpb24nLCAnbmFtZScsICdwYXVzZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1zcGlubmVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdkdXJhdGlvbicsICduYW1lJywgJ3BhdXNlZCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblNwaW5uZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25TcGlubmVyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uU3Bpbm5lciBleHRlbmRzIENvbXBvbmVudHMuSW9uU3Bpbm5lciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uU3BsaXRQYW5lLFxuICBpbnB1dHM6IFsnY29udGVudElkJywgJ2Rpc2FibGVkJywgJ3doZW4nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi1zcGxpdC1wYW5lJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb250ZW50SWQnLCAnZGlzYWJsZWQnLCAnd2hlbiddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblNwbGl0UGFuZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvblNwbGl0UGFuZUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvblNwbGl0UGFuZVZpc2libGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uU3BsaXRQYW5lIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25TcGxpdFBhbmUge1xuICAvKipcbiAgICogRXhwcmVzc2lvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc3BsaXQtcGFuZSB2aXNpYmlsaXR5IGhhcyBjaGFuZ2VkXG4gICAqL1xuICBpb25TcGxpdFBhbmVWaXNpYmxlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2aXNpYmxlOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvblRhYixcbiAgaW5wdXRzOiBbJ2NvbXBvbmVudCcsICd0YWInXSxcbiAgbWV0aG9kczogWydzZXRBY3RpdmUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi10YWInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbXBvbmVudCcsICd0YWInXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25UYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25UYWJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25UYWIgZXh0ZW5kcyBDb21wb25lbnRzLklvblRhYiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uVGFiQmFyLFxuICBpbnB1dHM6IFsnY29sb3InLCAnbW9kZScsICdzZWxlY3RlZFRhYicsICd0cmFuc2x1Y2VudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLXRhYi1iYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ21vZGUnLCAnc2VsZWN0ZWRUYWInLCAndHJhbnNsdWNlbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25UYWJCYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25UYWJCYXJFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25UYWJCYXIgZXh0ZW5kcyBDb21wb25lbnRzLklvblRhYkJhciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uVGFiQnV0dG9uLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnZG93bmxvYWQnLCAnaHJlZicsICdsYXlvdXQnLCAnbW9kZScsICdyZWwnLCAnc2VsZWN0ZWQnLCAndGFiJywgJ3RhcmdldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLXRhYi1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2Rvd25sb2FkJywgJ2hyZWYnLCAnbGF5b3V0JywgJ21vZGUnLCAncmVsJywgJ3NlbGVjdGVkJywgJ3RhYicsICd0YXJnZXQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJb25UYWJCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25UYWJCdXR0b25FbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25UYWJCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLklvblRhYkJ1dHRvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uVGV4dCxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ21vZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi10ZXh0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdtb2RlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uVGV4dCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTElvblRleHRFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25UZXh0IGV4dGVuZHMgQ29tcG9uZW50cy5Jb25UZXh0IHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVJb25UaHVtYm5haWxcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tdGh1bWJuYWlsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uVGh1bWJuYWlsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MSW9uVGh1bWJuYWlsRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uVGh1bWJuYWlsIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25UaHVtYm5haWwge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvblRpdGxlLFxuICBpbnB1dHM6IFsnY29sb3InLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW9uLXRpdGxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdzaXplJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uVGl0bGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25UaXRsZUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIElvblRpdGxlIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25UaXRsZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lSW9uVG9hc3QsXG4gIGlucHV0czogWydhbmltYXRlZCcsICdidXR0b25zJywgJ2NvbG9yJywgJ2Nzc0NsYXNzJywgJ2R1cmF0aW9uJywgJ2VudGVyQW5pbWF0aW9uJywgJ2hlYWRlcicsICdodG1sQXR0cmlidXRlcycsICdpY29uJywgJ2lzT3BlbicsICdrZXlib2FyZENsb3NlJywgJ2xheW91dCcsICdsZWF2ZUFuaW1hdGlvbicsICdtZXNzYWdlJywgJ21vZGUnLCAncG9zaXRpb24nLCAncG9zaXRpb25BbmNob3InLCAnc3dpcGVHZXN0dXJlJywgJ3RyYW5zbHVjZW50JywgJ3RyaWdnZXInXSxcbiAgbWV0aG9kczogWydwcmVzZW50JywgJ2Rpc21pc3MnLCAnb25EaWREaXNtaXNzJywgJ29uV2lsbERpc21pc3MnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lvbi10b2FzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5pbWF0ZWQnLCAnYnV0dG9ucycsICdjb2xvcicsICdjc3NDbGFzcycsICdkdXJhdGlvbicsICdlbnRlckFuaW1hdGlvbicsICdoZWFkZXInLCAnaHRtbEF0dHJpYnV0ZXMnLCAnaWNvbicsICdpc09wZW4nLCAna2V5Ym9hcmRDbG9zZScsICdsYXlvdXQnLCAnbGVhdmVBbmltYXRpb24nLCAnbWVzc2FnZScsICdtb2RlJywgJ3Bvc2l0aW9uJywgJ3Bvc2l0aW9uQW5jaG9yJywgJ3N3aXBlR2VzdHVyZScsICd0cmFuc2x1Y2VudCcsICd0cmlnZ2VyJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW9uVG9hc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25Ub2FzdEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2lvblRvYXN0RGlkUHJlc2VudCcsICdpb25Ub2FzdFdpbGxQcmVzZW50JywgJ2lvblRvYXN0V2lsbERpc21pc3MnLCAnaW9uVG9hc3REaWREaXNtaXNzJywgJ2RpZFByZXNlbnQnLCAnd2lsbFByZXNlbnQnLCAnd2lsbERpc21pc3MnLCAnZGlkRGlzbWlzcyddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgT3ZlcmxheUV2ZW50RGV0YWlsIGFzIElJb25Ub2FzdE92ZXJsYXlFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uVG9hc3QgZXh0ZW5kcyBDb21wb25lbnRzLklvblRvYXN0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHRvYXN0IGhhcyBwcmVzZW50ZWQuXG4gICAqL1xuICBpb25Ub2FzdERpZFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgdG9hc3QgaGFzIHByZXNlbnRlZC5cbiAgICovXG4gIGlvblRvYXN0V2lsbFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgdG9hc3QgaGFzIGRpc21pc3NlZC5cbiAgICovXG4gIGlvblRvYXN0V2lsbERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJSW9uVG9hc3RPdmVybGF5RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHRvYXN0IGhhcyBkaXNtaXNzZWQuXG4gICAqL1xuICBpb25Ub2FzdERpZERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJSW9uVG9hc3RPdmVybGF5RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHRvYXN0IGhhcyBwcmVzZW50ZWQuXG5TaG9ydGhhbmQgZm9yIGlvblRvYXN0V2lsbERpc21pc3MuXG4gICAqL1xuICBkaWRQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIHRvYXN0IGhhcyBwcmVzZW50ZWQuXG5TaG9ydGhhbmQgZm9yIGlvblRvYXN0V2lsbFByZXNlbnQuXG4gICAqL1xuICB3aWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSB0b2FzdCBoYXMgZGlzbWlzc2VkLlxuU2hvcnRoYW5kIGZvciBpb25Ub2FzdFdpbGxEaXNtaXNzLlxuICAgKi9cbiAgd2lsbERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJSW9uVG9hc3RPdmVybGF5RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHRvYXN0IGhhcyBkaXNtaXNzZWQuXG5TaG9ydGhhbmQgZm9yIGlvblRvYXN0RGlkRGlzbWlzcy5cbiAgICovXG4gIGRpZERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJSW9uVG9hc3RPdmVybGF5RXZlbnREZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZUlvblRvb2xiYXIsXG4gIGlucHV0czogWydjb2xvcicsICdtb2RlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpb24tdG9vbGJhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sb3InLCAnbW9kZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElvblRvb2xiYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxJb25Ub29sYmFyRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW9uVG9vbGJhciBleHRlbmRzIENvbXBvbmVudHMuSW9uVG9vbGJhciB7fVxuXG5cbiJdfQ==