mis-crystal-design-system 18.1.0-signal-test-1 → 18.1.1-signal

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 (125) hide show
  1. package/async-search-dropdown/async-dropdown.component.d.ts +3 -3
  2. package/button/button.directive.scss +71 -0
  3. package/drawer/drawer.scss +20 -0
  4. package/dropdown/dropdown.component.d.ts +1 -1
  5. package/dynamic-theme/branding.types.d.ts +84 -0
  6. package/dynamic-theme/dynamic-theme.module.d.ts +9 -0
  7. package/dynamic-theme/dynamic-theme.service.d.ts +89 -0
  8. package/dynamic-theme/index.d.ts +1 -0
  9. package/dynamic-theme/public_api.d.ts +3 -0
  10. package/esm2022/action-list/action-list.component.mjs +2 -2
  11. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +10 -10
  12. package/esm2022/button/button.component.mjs +2 -2
  13. package/esm2022/checkbox/checkbox.component.mjs +2 -2
  14. package/esm2022/chip/chip.component.mjs +2 -2
  15. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +2 -2
  16. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +2 -2
  17. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  18. package/esm2022/dynamic-form/dynamic-form.component.mjs +2 -2
  19. package/esm2022/dynamic-theme/branding.types.mjs +93 -0
  20. package/esm2022/dynamic-theme/dynamic-theme.module.mjs +25 -0
  21. package/esm2022/dynamic-theme/dynamic-theme.service.mjs +193 -0
  22. package/esm2022/dynamic-theme/index.mjs +2 -0
  23. package/esm2022/dynamic-theme/mis-crystal-design-system-dynamic-theme.mjs +5 -0
  24. package/esm2022/dynamic-theme/public_api.mjs +4 -0
  25. package/esm2022/fab/fab.component.mjs +3 -3
  26. package/esm2022/filter/filter-panel/filter-panel.component.mjs +3 -3
  27. package/esm2022/input/mis-input.component.mjs +2 -2
  28. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +5 -5
  29. package/esm2022/loader/loader.component.mjs +2 -2
  30. package/esm2022/mobile-filter/mobile-filter.component.mjs +2 -2
  31. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +2 -2
  32. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +2 -2
  33. package/esm2022/phone-input/phone-input.component.mjs +2 -2
  34. package/esm2022/public-api.mjs +1 -1
  35. package/esm2022/radio-button/radio-button.component.mjs +2 -2
  36. package/esm2022/ske-loader/ske-loader.component.mjs +2 -2
  37. package/esm2022/slider/slider.component.mjs +2 -2
  38. package/esm2022/snackbar/snackbar/snackbar.component.mjs +2 -2
  39. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +2 -2
  40. package/esm2022/star-rating/star-rating.component.mjs +2 -2
  41. package/esm2022/switch/switch.component.mjs +2 -2
  42. package/esm2022/table/actions-cell/actions-cell.component.mjs +2 -2
  43. package/esm2022/table/filter/filter.component.mjs +2 -2
  44. package/esm2022/table/sub-table/sub-table.component.mjs +2 -2
  45. package/esm2022/table/table.component.mjs +2 -2
  46. package/esm2022/timepicker/timepicker.component.mjs +2 -2
  47. package/esm2022/toast/toast.component.mjs +3 -3
  48. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +2 -2
  49. package/fesm2022/mis-crystal-design-system-action-list.mjs +2 -2
  50. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
  51. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +9 -9
  52. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  53. package/fesm2022/mis-crystal-design-system-button.mjs +2 -2
  54. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
  55. package/fesm2022/mis-crystal-design-system-checkbox.mjs +2 -2
  56. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
  57. package/fesm2022/mis-crystal-design-system-chip.mjs +2 -2
  58. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
  59. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +2 -2
  60. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  61. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +2 -2
  62. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  63. package/fesm2022/mis-crystal-design-system-dropdown.mjs +2 -2
  64. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  65. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +2 -2
  66. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  67. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs +313 -0
  68. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs.map +1 -0
  69. package/fesm2022/mis-crystal-design-system-fab.mjs +2 -2
  70. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
  71. package/fesm2022/mis-crystal-design-system-filter.mjs +2 -2
  72. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
  73. package/fesm2022/mis-crystal-design-system-input-stepper.mjs +4 -4
  74. package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  75. package/fesm2022/mis-crystal-design-system-input.mjs +2 -2
  76. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  77. package/fesm2022/mis-crystal-design-system-loader.mjs +2 -2
  78. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  79. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +2 -2
  80. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
  81. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +2 -2
  82. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  83. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +2 -2
  84. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
  85. package/fesm2022/mis-crystal-design-system-phone-input.mjs +2 -2
  86. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
  87. package/fesm2022/mis-crystal-design-system-radio-button.mjs +2 -2
  88. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  89. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +2 -2
  90. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
  91. package/fesm2022/mis-crystal-design-system-slider.mjs +2 -2
  92. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
  93. package/fesm2022/mis-crystal-design-system-snackbar.mjs +2 -2
  94. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
  95. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +2 -2
  96. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  97. package/fesm2022/mis-crystal-design-system-star-rating.mjs +2 -2
  98. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
  99. package/fesm2022/mis-crystal-design-system-switch.mjs +2 -2
  100. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
  101. package/fesm2022/mis-crystal-design-system-table.mjs +8 -8
  102. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  103. package/fesm2022/mis-crystal-design-system-timepicker.mjs +2 -2
  104. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
  105. package/fesm2022/mis-crystal-design-system-toast.mjs +2 -2
  106. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  107. package/fesm2022/mis-crystal-design-system-tooltip.mjs +2 -2
  108. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
  109. package/fesm2022/mis-crystal-design-system.mjs.map +1 -1
  110. package/input/mis-input.component.scss +180 -0
  111. package/modal/modal.scss +9 -0
  112. package/package.json +18 -12
  113. package/styles/fonts/icomoon.eot +0 -0
  114. package/styles/fonts/icomoon.svg +315 -0
  115. package/styles/fonts/icomoon.ttf +0 -0
  116. package/styles/fonts/icomoon.woff +0 -0
  117. package/styles/mis-borders-backgrounds.scss +764 -0
  118. package/styles/mis-color-constants.scss +353 -0
  119. package/styles/mis-flex.scss +321 -0
  120. package/styles/mis-fonts.scss +124 -0
  121. package/styles/mis-icons.scss +1054 -0
  122. package/styles/mis-mixins.scss +46 -0
  123. package/styles/mis-old-icon-styles.scss +498 -0
  124. package/styles/mis-spacing-sizing.scss +2590 -0
  125. package/styles/mis-typography.scss +462 -0
@@ -0,0 +1,193 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { BrandingTypes } from './branding.types';
4
+ import * as i0 from "@angular/core";
5
+ export class DynamicThemeService {
6
+ constructor() {
7
+ this.currentThemeSubject = new BehaviorSubject(BrandingTypes.defaultTheme);
8
+ this.currentTheme$ = this.currentThemeSubject.asObservable();
9
+ // Initialize with default theme on service creation
10
+ this.applyTheme(BrandingTypes.defaultTheme);
11
+ }
12
+ /**
13
+ * Apply a complete theme configuration to the root element
14
+ * @param theme - ThemeColors object containing all color values
15
+ */
16
+ applyTheme(theme) {
17
+ const root = document.documentElement;
18
+ Object.entries(theme).forEach(([camelName, value]) => {
19
+ const cssVar = `--${this.camelToKebabCase(camelName)}`;
20
+ root.style.setProperty(cssVar, String(value));
21
+ });
22
+ // Update the current theme subject
23
+ this.currentThemeSubject.next(theme);
24
+ }
25
+ /**
26
+ * Apply partial theme updates (only specified colors will be updated)
27
+ * @param partialTheme - Partial ThemeColors object with only the colors to update
28
+ */
29
+ applyPartialTheme(partialTheme) {
30
+ const root = document.documentElement;
31
+ Object.entries(partialTheme).forEach(([camelName, value]) => {
32
+ if (value !== undefined) {
33
+ const cssVar = `--${this.camelToKebabCase(camelName)}`;
34
+ root.style.setProperty(cssVar, String(value));
35
+ }
36
+ });
37
+ // Update the current theme with merged values
38
+ const currentTheme = this.currentThemeSubject.value;
39
+ const updatedTheme = { ...currentTheme, ...partialTheme };
40
+ this.currentThemeSubject.next(updatedTheme);
41
+ }
42
+ /**
43
+ * Set a single color property
44
+ * @param colorKey - The camelCase key of the color property
45
+ * @param colorValue - The color value (hex, rgb, rgba, etc.)
46
+ */
47
+ setColorProperty(colorKey, colorValue) {
48
+ const root = document.documentElement;
49
+ const cssVar = `--${this.camelToKebabCase(colorKey)}`;
50
+ root.style.setProperty(cssVar, colorValue);
51
+ // Update the current theme
52
+ const currentTheme = this.currentThemeSubject.value;
53
+ const updatedTheme = { ...currentTheme, [colorKey]: colorValue };
54
+ this.currentThemeSubject.next(updatedTheme);
55
+ }
56
+ /**
57
+ * Get the current theme colors
58
+ * @returns Current ThemeColors object
59
+ */
60
+ getCurrentTheme() {
61
+ return this.currentThemeSubject.value;
62
+ }
63
+ /**
64
+ * Get a specific color value from the current theme
65
+ * @param colorKey - The camelCase key of the color property
66
+ * @returns The color value as string
67
+ */
68
+ getColorProperty(colorKey) {
69
+ return this.currentThemeSubject.value[colorKey];
70
+ }
71
+ /**
72
+ * Reset theme to default values
73
+ */
74
+ resetToDefault() {
75
+ this.applyTheme(BrandingTypes.defaultTheme);
76
+ }
77
+ /**
78
+ * Remove a specific CSS custom property from the root element
79
+ * @param colorKey - The camelCase key of the color property to remove
80
+ */
81
+ removeColorProperty(colorKey) {
82
+ const root = document.documentElement;
83
+ const cssVar = `--${this.camelToKebabCase(colorKey)}`;
84
+ root.style.removeProperty(cssVar);
85
+ }
86
+ /**
87
+ * Get all CSS custom properties currently set on the root element
88
+ * @returns Object with CSS variable names as keys and their values
89
+ */
90
+ getAllCSSVariables() {
91
+ const root = document.documentElement;
92
+ const computedStyle = getComputedStyle(root);
93
+ const cssVars = {};
94
+ // Get all CSS custom properties that start with our prefix
95
+ for (let i = 0; i < computedStyle.length; i++) {
96
+ const property = computedStyle[i];
97
+ if (property.startsWith('--brand-') ||
98
+ property.startsWith('--text-') ||
99
+ property.startsWith('--bg-') ||
100
+ property.startsWith('--border-') ||
101
+ property.startsWith('--shadow-') ||
102
+ property.startsWith('--status-') ||
103
+ property.startsWith('--team-color-')) {
104
+ cssVars[property] = computedStyle.getPropertyValue(property).trim();
105
+ }
106
+ }
107
+ return cssVars;
108
+ }
109
+ /**
110
+ * Apply theme with validation
111
+ * @param theme - ThemeColors object to validate and apply
112
+ * @returns boolean indicating if the theme was successfully applied
113
+ */
114
+ applyThemeWithValidation(theme) {
115
+ try {
116
+ // Basic validation - check if all required properties exist
117
+ const requiredKeys = Object.keys(BrandingTypes.defaultTheme);
118
+ const themeKeys = Object.keys(theme);
119
+ const missingKeys = requiredKeys.filter(key => !themeKeys.includes(key));
120
+ if (missingKeys.length > 0) {
121
+ console.warn('DynamicThemeService: Missing theme properties:', missingKeys);
122
+ // Apply with default values for missing keys
123
+ const completeTheme = { ...BrandingTypes.defaultTheme, ...theme };
124
+ this.applyTheme(completeTheme);
125
+ return false;
126
+ }
127
+ this.applyTheme(theme);
128
+ return true;
129
+ }
130
+ catch (error) {
131
+ console.error('DynamicThemeService: Error applying theme:', error);
132
+ return false;
133
+ }
134
+ }
135
+ /**
136
+ * Convert camelCase to kebab-case for CSS custom properties
137
+ * @param camelCase - The camelCase string to convert
138
+ * @returns kebab-case string
139
+ */
140
+ camelToKebabCase(camelCase) {
141
+ return camelCase.replace(/([A-Z])/g, '-$1').toLowerCase();
142
+ }
143
+ /**
144
+ * Convert kebab-case to camelCase
145
+ * @param kebabCase - The kebab-case string to convert
146
+ * @returns camelCase string
147
+ */
148
+ kebabToCamelCase(kebabCase) {
149
+ return kebabCase.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());
150
+ }
151
+ /**
152
+ * Create a theme preset from current applied theme
153
+ * @param presetName - Name for the theme preset
154
+ * @returns Theme preset object
155
+ */
156
+ createThemePreset(presetName) {
157
+ return {
158
+ name: presetName,
159
+ theme: { ...this.getCurrentTheme() }
160
+ };
161
+ }
162
+ /**
163
+ * Export current theme as JSON string
164
+ * @returns JSON string representation of current theme
165
+ */
166
+ exportThemeAsJSON() {
167
+ return JSON.stringify(this.getCurrentTheme(), null, 2);
168
+ }
169
+ /**
170
+ * Import theme from JSON string
171
+ * @param jsonString - JSON string representation of theme
172
+ * @returns boolean indicating success
173
+ */
174
+ importThemeFromJSON(jsonString) {
175
+ try {
176
+ const theme = JSON.parse(jsonString);
177
+ return this.applyThemeWithValidation(theme);
178
+ }
179
+ catch (error) {
180
+ console.error('DynamicThemeService: Error importing theme from JSON:', error);
181
+ return false;
182
+ }
183
+ }
184
+ static { this.ɵfac = function DynamicThemeService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicThemeService)(); }; }
185
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DynamicThemeService, factory: DynamicThemeService.ɵfac, providedIn: 'root' }); }
186
+ }
187
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicThemeService, [{
188
+ type: Injectable,
189
+ args: [{
190
+ providedIn: 'root'
191
+ }]
192
+ }], () => [], null); })();
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10aGVtZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy10aGVtZS9keW5hbWljLXRoZW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFLakQsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QjtRQUhRLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUE0QixhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEcsa0JBQWEsR0FBMEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBR3BHLG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLEtBQWdDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFFdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ25ELE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBRUgsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FB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QyxDQUFDO1FBQzlDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx1REFBdUQsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO29IQXpNVSxtQkFBbUI7dUVBQW5CLG1CQUFtQixXQUFuQixtQkFBbUIsbUJBRmxCLE1BQU07O2lGQUVQLG1CQUFtQjtjQUgvQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJyYW5kaW5nVHlwZXMgfSBmcm9tICcuL2JyYW5kaW5nLnR5cGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY1RoZW1lU2VydmljZSB7XG4gIHByaXZhdGUgY3VycmVudFRoZW1lU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJhbmRpbmdUeXBlcy5UaGVtZUNvbG9ycz4oQnJhbmRpbmdUeXBlcy5kZWZhdWx0VGhlbWUpO1xuICBwdWJsaWMgY3VycmVudFRoZW1lJDogT2JzZXJ2YWJsZTxCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzPiA9IHRoaXMuY3VycmVudFRoZW1lU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBJbml0aWFsaXplIHdpdGggZGVmYXVsdCB0aGVtZSBvbiBzZXJ2aWNlIGNyZWF0aW9uXG4gICAgdGhpcy5hcHBseVRoZW1lKEJyYW5kaW5nVHlwZXMuZGVmYXVsdFRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBhIGNvbXBsZXRlIHRoZW1lIGNvbmZpZ3VyYXRpb24gdG8gdGhlIHJvb3QgZWxlbWVudFxuICAgKiBAcGFyYW0gdGhlbWUgLSBUaGVtZUNvbG9ycyBvYmplY3QgY29udGFpbmluZyBhbGwgY29sb3IgdmFsdWVzXG4gICAqL1xuICBhcHBseVRoZW1lKHRoZW1lOiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKTogdm9pZCB7XG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBcbiAgICBPYmplY3QuZW50cmllcyh0aGVtZSkuZm9yRWFjaCgoW2NhbWVsTmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBjc3NWYXIgPSBgLS0ke3RoaXMuY2FtZWxUb0tlYmFiQ2FzZShjYW1lbE5hbWUpfWA7XG4gICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KGNzc1ZhciwgU3RyaW5nKHZhbHVlKSk7XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGN1cnJlbnQgdGhlbWUgc3ViamVjdFxuICAgIHRoaXMuY3VycmVudFRoZW1lU3ViamVjdC5uZXh0KHRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBwYXJ0aWFsIHRoZW1lIHVwZGF0ZXMgKG9ubHkgc3BlY2lmaWVkIGNvbG9ycyB3aWxsIGJlIHVwZGF0ZWQpXG4gICAqIEBwYXJhbSBwYXJ0aWFsVGhlbWUgLSBQYXJ0aWFsIFRoZW1lQ29sb3JzIG9iamVjdCB3aXRoIG9ubHkgdGhlIGNvbG9ycyB0byB1cGRhdGVcbiAgICovXG4gIGFwcGx5UGFydGlhbFRoZW1lKHBhcnRpYWxUaGVtZTogUGFydGlhbDxCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzPik6IHZvaWQge1xuICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgXG4gICAgT2JqZWN0LmVudHJpZXMocGFydGlhbFRoZW1lKS5mb3JFYWNoKChbY2FtZWxOYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNzc1ZhciA9IGAtLSR7dGhpcy5jYW1lbFRvS2ViYWJDYXNlKGNhbWVsTmFtZSl9YDtcbiAgICAgICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eShjc3NWYXIsIFN0cmluZyh2YWx1ZSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBjdXJyZW50IHRoZW1lIHdpdGggbWVyZ2VkIHZhbHVlc1xuICAgIGNvbnN0IGN1cnJlbnRUaGVtZSA9IHRoaXMuY3VycmVudFRoZW1lU3ViamVjdC52YWx1ZTtcbiAgICBjb25zdCB1cGRhdGVkVGhlbWUgPSB7IC4uLmN1cnJlbnRUaGVtZSwgLi4ucGFydGlhbFRoZW1lIH07XG4gICAgdGhpcy5jdXJyZW50VGhlbWVTdWJqZWN0Lm5leHQodXBkYXRlZFRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBzaW5nbGUgY29sb3IgcHJvcGVydHlcbiAgICogQHBhcmFtIGNvbG9yS2V5IC0gVGhlIGNhbWVsQ2FzZSBrZXkgb2YgdGhlIGNvbG9yIHByb3BlcnR5XG4gICAqIEBwYXJhbSBjb2xvclZhbHVlIC0gVGhlIGNvbG9yIHZhbHVlIChoZXgsIHJnYiwgcmdiYSwgZXRjLilcbiAgICovXG4gIHNldENvbG9yUHJvcGVydHkoY29sb3JLZXk6IGtleW9mIEJyYW5kaW5nVHlwZXMuVGhlbWVDb2xvcnMsIGNvbG9yVmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgY29uc3QgY3NzVmFyID0gYC0tJHt0aGlzLmNhbWVsVG9LZWJhYkNhc2UoY29sb3JLZXkpfWA7XG4gICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eShjc3NWYXIsIGNvbG9yVmFsdWUpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBjdXJyZW50IHRoZW1lXG4gICAgY29uc3QgY3VycmVudFRoZW1lID0gdGhpcy5jdXJyZW50VGhlbWVTdWJqZWN0LnZhbHVlO1xuICAgIGNvbnN0IHVwZGF0ZWRUaGVtZSA9IHsgLi4uY3VycmVudFRoZW1lLCBbY29sb3JLZXldOiBjb2xvclZhbHVlIH07XG4gICAgdGhpcy5jdXJyZW50VGhlbWVTdWJqZWN0Lm5leHQodXBkYXRlZFRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdGhlbWUgY29sb3JzXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgVGhlbWVDb2xvcnMgb2JqZWN0XG4gICAqL1xuICBnZXRDdXJyZW50VGhlbWUoKTogQnJhbmRpbmdUeXBlcy5UaGVtZUNvbG9ycyB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRoZW1lU3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVjaWZpYyBjb2xvciB2YWx1ZSBmcm9tIHRoZSBjdXJyZW50IHRoZW1lXG4gICAqIEBwYXJhbSBjb2xvcktleSAtIFRoZSBjYW1lbENhc2Uga2V5IG9mIHRoZSBjb2xvciBwcm9wZXJ0eVxuICAgKiBAcmV0dXJucyBUaGUgY29sb3IgdmFsdWUgYXMgc3RyaW5nXG4gICAqL1xuICBnZXRDb2xvclByb3BlcnR5KGNvbG9yS2V5OiBrZXlvZiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VGhlbWVTdWJqZWN0LnZhbHVlW2NvbG9yS2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGVtZSB0byBkZWZhdWx0IHZhbHVlc1xuICAgKi9cbiAgcmVzZXRUb0RlZmF1bHQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseVRoZW1lKEJyYW5kaW5nVHlwZXMuZGVmYXVsdFRoZW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBzcGVjaWZpYyBDU1MgY3VzdG9tIHByb3BlcnR5IGZyb20gdGhlIHJvb3QgZWxlbWVudFxuICAgKiBAcGFyYW0gY29sb3JLZXkgLSBUaGUgY2FtZWxDYXNlIGtleSBvZiB0aGUgY29sb3IgcHJvcGVydHkgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVDb2xvclByb3BlcnR5KGNvbG9yS2V5OiBrZXlvZiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKTogdm9pZCB7XG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBjc3NWYXIgPSBgLS0ke3RoaXMuY2FtZWxUb0tlYmFiQ2FzZShjb2xvcktleSl9YDtcbiAgICByb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KGNzc1Zhcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBDU1MgY3VzdG9tIHByb3BlcnRpZXMgY3VycmVudGx5IHNldCBvbiB0aGUgcm9vdCBlbGVtZW50XG4gICAqIEByZXR1cm5zIE9iamVjdCB3aXRoIENTUyB2YXJpYWJsZSBuYW1lcyBhcyBrZXlzIGFuZCB0aGVpciB2YWx1ZXNcbiAgICovXG4gIGdldEFsbENTU1ZhcmlhYmxlcygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpO1xuICAgIGNvbnN0IGNzc1ZhcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgIC8vIEdldCBhbGwgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzIHRoYXQgc3RhcnQgd2l0aCBvdXIgcHJlZml4XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21wdXRlZFN0eWxlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGNvbXB1dGVkU3R5bGVbaV07XG4gICAgICBpZiAocHJvcGVydHkuc3RhcnRzV2l0aCgnLS1icmFuZC0nKSB8fCBcbiAgICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCctLXRleHQtJykgfHwgXG4gICAgICAgICAgcHJvcGVydHkuc3RhcnRzV2l0aCgnLS1iZy0nKSB8fCBcbiAgICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCctLWJvcmRlci0nKSB8fCBcbiAgICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCctLXNoYWRvdy0nKSB8fCBcbiAgICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCctLXN0YXR1cy0nKSB8fCBcbiAgICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCctLXRlYW0tY29sb3ItJykpIHtcbiAgICAgICAgY3NzVmFyc1twcm9wZXJ0eV0gPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpLnRyaW0oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3NzVmFycztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGVtZSB3aXRoIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIHRoZW1lIC0gVGhlbWVDb2xvcnMgb2JqZWN0IHRvIHZhbGlkYXRlIGFuZCBhcHBseVxuICAgKiBAcmV0dXJucyBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHRoZW1lIHdhcyBzdWNjZXNzZnVsbHkgYXBwbGllZFxuICAgKi9cbiAgYXBwbHlUaGVtZVdpdGhWYWxpZGF0aW9uKHRoZW1lOiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEJhc2ljIHZhbGlkYXRpb24gLSBjaGVjayBpZiBhbGwgcmVxdWlyZWQgcHJvcGVydGllcyBleGlzdFxuICAgICAgY29uc3QgcmVxdWlyZWRLZXlzID0gT2JqZWN0LmtleXMoQnJhbmRpbmdUeXBlcy5kZWZhdWx0VGhlbWUpIGFzIChrZXlvZiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKVtdO1xuICAgICAgY29uc3QgdGhlbWVLZXlzID0gT2JqZWN0LmtleXModGhlbWUpIGFzIChrZXlvZiBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzKVtdO1xuICAgICAgXG4gICAgICBjb25zdCBtaXNzaW5nS2V5cyA9IHJlcXVpcmVkS2V5cy5maWx0ZXIoa2V5ID0+ICF0aGVtZUtleXMuaW5jbHVkZXMoa2V5KSk7XG4gICAgICBcbiAgICAgIGlmIChtaXNzaW5nS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRHluYW1pY1RoZW1lU2VydmljZTogTWlzc2luZyB0aGVtZSBwcm9wZXJ0aWVzOicsIG1pc3NpbmdLZXlzKTtcbiAgICAgICAgLy8gQXBwbHkgd2l0aCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBrZXlzXG4gICAgICAgIGNvbnN0IGNvbXBsZXRlVGhlbWUgPSB7IC4uLkJyYW5kaW5nVHlwZXMuZGVmYXVsdFRoZW1lLCAuLi50aGVtZSB9O1xuICAgICAgICB0aGlzLmFwcGx5VGhlbWUoY29tcGxldGVUaGVtZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hcHBseVRoZW1lKHRoZW1lKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdEeW5hbWljVGhlbWVTZXJ2aWNlOiBFcnJvciBhcHBseWluZyB0aGVtZTonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgY2FtZWxDYXNlIHRvIGtlYmFiLWNhc2UgZm9yIENTUyBjdXN0b20gcHJvcGVydGllc1xuICAgKiBAcGFyYW0gY2FtZWxDYXNlIC0gVGhlIGNhbWVsQ2FzZSBzdHJpbmcgdG8gY29udmVydFxuICAgKiBAcmV0dXJucyBrZWJhYi1jYXNlIHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBjYW1lbFRvS2ViYWJDYXNlKGNhbWVsQ2FzZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FtZWxDYXNlLnJlcGxhY2UoLyhbQS1aXSkvZywgJy0kMScpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBrZWJhYi1jYXNlIHRvIGNhbWVsQ2FzZVxuICAgKiBAcGFyYW0ga2ViYWJDYXNlIC0gVGhlIGtlYmFiLWNhc2Ugc3RyaW5nIHRvIGNvbnZlcnRcbiAgICogQHJldHVybnMgY2FtZWxDYXNlIHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBrZWJhYlRvQ2FtZWxDYXNlKGtlYmFiQ2FzZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4ga2ViYWJDYXNlLnJlcGxhY2UoLy0oW2Etel0pL2csIChtYXRjaCwgbGV0dGVyKSA9PiBsZXR0ZXIudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgdGhlbWUgcHJlc2V0IGZyb20gY3VycmVudCBhcHBsaWVkIHRoZW1lXG4gICAqIEBwYXJhbSBwcmVzZXROYW1lIC0gTmFtZSBmb3IgdGhlIHRoZW1lIHByZXNldFxuICAgKiBAcmV0dXJucyBUaGVtZSBwcmVzZXQgb2JqZWN0XG4gICAqL1xuICBjcmVhdGVUaGVtZVByZXNldChwcmVzZXROYW1lOiBzdHJpbmcpOiB7IG5hbWU6IHN0cmluZzsgdGhlbWU6IEJyYW5kaW5nVHlwZXMuVGhlbWVDb2xvcnMgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHByZXNldE5hbWUsXG4gICAgICB0aGVtZTogeyAuLi50aGlzLmdldEN1cnJlbnRUaGVtZSgpIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBjdXJyZW50IHRoZW1lIGFzIEpTT04gc3RyaW5nXG4gICAqIEByZXR1cm5zIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGN1cnJlbnQgdGhlbWVcbiAgICovXG4gIGV4cG9ydFRoZW1lQXNKU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0Q3VycmVudFRoZW1lKCksIG51bGwsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCB0aGVtZSBmcm9tIEpTT04gc3RyaW5nXG4gICAqIEBwYXJhbSBqc29uU3RyaW5nIC0gSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlbWVcbiAgICogQHJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIHN1Y2Nlc3NcbiAgICovXG4gIGltcG9ydFRoZW1lRnJvbUpTT04oanNvblN0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRoZW1lID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKSBhcyBCcmFuZGluZ1R5cGVzLlRoZW1lQ29sb3JzO1xuICAgICAgcmV0dXJuIHRoaXMuYXBwbHlUaGVtZVdpdGhWYWxpZGF0aW9uKHRoZW1lKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRHluYW1pY1RoZW1lU2VydmljZTogRXJyb3IgaW1wb3J0aW5nIHRoZW1lIGZyb20gSlNPTjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from "./public_api";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9keW5hbWljLXRoZW1lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcHVibGljX2FwaVwiOyJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS1keW5hbWljLXRoZW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy10aGVtZS9taXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtLWR5bmFtaWMtdGhlbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export { BrandingTypes } from './branding.types';
2
+ export { DynamicThemeService } from './dynamic-theme.service';
3
+ export { DynamicThemeModule } from './dynamic-theme.module';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtdGhlbWUvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBCcmFuZGluZ1R5cGVzIH0gZnJvbSAnLi9icmFuZGluZy50eXBlcyc7XG5leHBvcnQgeyBEeW5hbWljVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi9keW5hbWljLXRoZW1lLnNlcnZpY2UnO1xuZXhwb3J0IHsgRHluYW1pY1RoZW1lTW9kdWxlIH0gZnJvbSAnLi9keW5hbWljLXRoZW1lLm1vZHVsZSc7Il19
@@ -100,7 +100,7 @@ export class FabComponent {
100
100
  i0.ɵɵtemplate(0, FabComponent_div_0_Template, 5, 5, "div", 0);
101
101
  } if (rf & 2) {
102
102
  i0.ɵɵproperty("ngIf", ctx.show());
103
- } }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgStyle], styles: [".fab-wrapper[_ngcontent-%COMP%]{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%]{position:relative;padding:0 0 16px 8px}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-tooltip[_ngcontent-%COMP%]{position:absolute;background-color:#181f33;border-radius:4px;color:#fff;padding:8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;right:100%;top:calc(50% - 8px);transform:translateY(-50%)}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-button[_ngcontent-%COMP%]{width:40px;height:40px;cursor:pointer;border-radius:50%;display:flex;justify-content:center;align-items:center}.fab-wrapper[_ngcontent-%COMP%] .fab-container[_ngcontent-%COMP%]{border-radius:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;width:56px;height:56px}.add-img[_ngcontent-%COMP%]{height:24px;width:24px}"], data: { animation: [
103
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgStyle], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.fab-wrapper[_ngcontent-%COMP%]{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%]{position:relative;padding:0 0 16px 8px}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-tooltip[_ngcontent-%COMP%]{position:absolute;background-color:var(--text-primary, #181F33);border-radius:4px;color:var(--bg-primary, #FFFFFF);padding:8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;right:100%;top:calc(50% - 8px);transform:translateY(-50%)}.fab-wrapper[_ngcontent-%COMP%] .fab-item[_ngcontent-%COMP%] .fab-button[_ngcontent-%COMP%]{width:40px;height:40px;cursor:pointer;border-radius:50%;display:flex;justify-content:center;align-items:center}.fab-wrapper[_ngcontent-%COMP%] .fab-container[_ngcontent-%COMP%]{border-radius:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;width:56px;height:56px}.add-img[_ngcontent-%COMP%]{height:24px;width:24px}"], data: { animation: [
104
104
  trigger("slideUpFab", [
105
105
  transition(":enter", [
106
106
  style({ transform: "translateY(50px)", opacity: 0 }),
@@ -132,10 +132,10 @@ export class FabComponent {
132
132
  transition("rotated => default", animate("300ms ease-out")),
133
133
  transition("default => rotated", animate("200ms ease-in"))
134
134
  ])
135
- ], template: "<div class=\"fab-wrapper\" *ngIf=\"show()\">\n <div class=\"fab-items\" *ngIf=\"isOpen()\" @slideUpFab>\n <div class=\"fab-item\" *ngFor=\"let item of items().reverse(); let i = index\" (click)=\"clickItem(item)\">\n <div *ngIf=\"item.label\" class=\"fab-tooltip\">\n {{ item.label }}\n </div>\n <div\n class=\"fab-button\"\n [ngStyle]=\"{\n backgroundColor: item.backgroundColor || '#0937B2'\n }\"\n >\n <img [src]=\"item.icon\" class=\"add-img\" />\n </div>\n </div>\n </div>\n <div\n class=\"fab-container\"\n [ngStyle]=\"{\n backgroundColor: isOpen() ? computedOptions().backgroundColorOpened : computedOptions().backgroundColorClosed\n }\"\n (click)=\"toogleFab()\"\n >\n <svg\n [@rotateButton]=\"isOpen() ? 'rotated' : 'default'\"\n class=\"add-img\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1424 5.15607C13.1424 4.51759 12.6313 4 12.0009 4C11.3704 4 10.8594 4.51759 10.8594 5.15607V10.8421H5.14149C4.51106 10.8421 4 11.3597 4 11.9982C4 12.6367 4.51106 13.1543 5.14149 13.1543H10.8594V18.8439C10.8594 19.4824 11.3704 20 12.0009 20C12.6313 20 13.1424 19.4824 13.1424 18.8439V13.1543H18.8585C19.4889 13.1543 20 12.6367 20 11.9982C20 11.3597 19.4889 10.8421 18.8585 10.8421H13.1424V5.15607Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n</div>\n", styles: [".fab-wrapper{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper .fab-item{position:relative;padding:0 0 16px 8px}.fab-wrapper .fab-item .fab-tooltip{position:absolute;background-color:#181f33;border-radius:4px;color:#fff;padding:8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;right:100%;top:calc(50% - 8px);transform:translateY(-50%)}.fab-wrapper .fab-item .fab-button{width:40px;height:40px;cursor:pointer;border-radius:50%;display:flex;justify-content:center;align-items:center}.fab-wrapper .fab-container{border-radius:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;width:56px;height:56px}.add-img{height:24px;width:24px}\n"] }]
135
+ ], template: "<div class=\"fab-wrapper\" *ngIf=\"show()\">\n <div class=\"fab-items\" *ngIf=\"isOpen()\" @slideUpFab>\n <div class=\"fab-item\" *ngFor=\"let item of items().reverse(); let i = index\" (click)=\"clickItem(item)\">\n <div *ngIf=\"item.label\" class=\"fab-tooltip\">\n {{ item.label }}\n </div>\n <div\n class=\"fab-button\"\n [ngStyle]=\"{\n backgroundColor: item.backgroundColor || '#0937B2'\n }\"\n >\n <img [src]=\"item.icon\" class=\"add-img\" />\n </div>\n </div>\n </div>\n <div\n class=\"fab-container\"\n [ngStyle]=\"{\n backgroundColor: isOpen() ? computedOptions().backgroundColorOpened : computedOptions().backgroundColorClosed\n }\"\n (click)=\"toogleFab()\"\n >\n <svg\n [@rotateButton]=\"isOpen() ? 'rotated' : 'default'\"\n class=\"add-img\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1424 5.15607C13.1424 4.51759 12.6313 4 12.0009 4C11.3704 4 10.8594 4.51759 10.8594 5.15607V10.8421H5.14149C4.51106 10.8421 4 11.3597 4 11.9982C4 12.6367 4.51106 13.1543 5.14149 13.1543H10.8594V18.8439C10.8594 19.4824 11.3704 20 12.0009 20C12.6313 20 13.1424 19.4824 13.1424 18.8439V13.1543H18.8585C19.4889 13.1543 20 12.6367 20 11.9982C20 11.3597 19.4889 10.8421 18.8585 10.8421H13.1424V5.15607Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n</div>\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.fab-wrapper{position:fixed;right:24px;bottom:24px;z-index:1000}.fab-wrapper .fab-item{position:relative;padding:0 0 16px 8px}.fab-wrapper .fab-item .fab-tooltip{position:absolute;background-color:var(--text-primary, #181F33);border-radius:4px;color:var(--bg-primary, #FFFFFF);padding:8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;right:100%;top:calc(50% - 8px);transform:translateY(-50%)}.fab-wrapper .fab-item .fab-button{width:40px;height:40px;cursor:pointer;border-radius:50%;display:flex;justify-content:center;align-items:center}.fab-wrapper .fab-container{border-radius:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;width:56px;height:56px}.add-img{height:24px;width:24px}\n"] }]
136
136
  }], () => [{ type: i0.ElementRef }], { clickout: [{
137
137
  type: HostListener,
138
138
  args: ["document:click", ["$event"]]
139
139
  }] }); })();
140
140
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FabComponent, { className: "FabComponent" }); })();
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZhYi9mYWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZmFiL2ZhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBRWQsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQWEsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBa0IsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0lDQTNFLCtCQUE0QztJQUMxQyxZQUNGO0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSw4Q0FDRjs7OztJQUhGLDhCQUFzRztJQUExQiw0TUFBUyx5QkFBZSxLQUFDO0lBQ25HLCtFQUE0QztJQUc1QywrQkFLQztJQUNDLDBCQUF5QztJQUU3QyxBQURFLGlCQUFNLEVBQ0Y7OztJQVhFLGNBQWdCO0lBQWhCLG9DQUFnQjtJQUtwQixjQUVFO0lBRkYsMEZBRUU7SUFFRyxjQUFpQjtJQUFqQixvREFBaUI7OztJQVg1Qiw4QkFBb0Q7SUFDbEQseUVBQXNHO0lBYXhHLGlCQUFNOzs7SUFka0MsdUNBQVc7SUFDVixjQUFzQjtJQUF0QixrREFBc0I7Ozs7SUFGakUsOEJBQXdDO0lBQ3RDLG1FQUFvRDtJQWVwRCw4QkFNQztJQURDLHFLQUFTLGtCQUFXLEtBQUM7O0lBRXJCLDhCQVFDO0lBQ0MsMEJBS0U7SUFHUixBQURFLEFBREUsaUJBQU0sRUFDRixFQUNGOzs7SUF2Q29CLGNBQWM7SUFBZCxzQ0FBYztJQWlCcEMsY0FFRTtJQUZGLHVLQUVFO0lBSUEsY0FBa0Q7SUFBbEQsdUVBQWtEOztBRGtC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QUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQzs0QkFDcEQsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt5QkFDL0UsQ0FBQzt3QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3hHLENBQUM7b0JBQ0YsT0FBTyxDQUFDLGNBQWMsRUFBRTt3QkFDdEIsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQzt3QkFDbkQsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzt3QkFDdkQsVUFBVSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUMzRCxVQUFVLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO3FCQUMzRCxDQUFDO2lCQUNIOzJDQXVCRCxRQUFRO2tCQURQLFlBQVk7bUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O2tGQXBCL0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAZm9ybWF0ICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBpbnB1dCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdHJpZ2dlciwgdHJhbnNpdGlvbiwgc3R5bGUsIGFuaW1hdGUsIHN0YXRlIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcblxuZXhwb3J0IHR5cGUgRmFiT3B0aW9ucyA9IHtcbiAgYmFja2dyb3VuZENvbG9yQ2xvc2VkPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3JPcGVuZWQ/OiBzdHJpbmc7XG4gIHNpemU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBGYWJJdGVtID0ge1xuICBsYWJlbD86IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBjbGljaz86ICgpID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIEZhYkl0ZW1zID0gRmFiSXRlbVtdO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWZhYlwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2ZhYi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZmFiLmNvbXBvbmVudC5zY3NzXCJdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoXCJzbGlkZVVwRmFiXCIsIFtcbiAgICAgIHRyYW5zaXRpb24oXCI6ZW50ZXJcIiwgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDUwcHgpXCIsIG9wYWNpdHk6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoXCIzMDBtcyBlYXNlLW91dFwiLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDBweClcIiwgb3BhY2l0eTogMSB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbihcIjpsZWF2ZVwiLCBbYW5pbWF0ZShcIjIwMG1zIGVhc2Utb3V0XCIsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoNzBweClcIiwgb3BhY2l0eTogMCB9KSldKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoXCJyb3RhdGVCdXR0b25cIiwgW1xuICAgICAgc3RhdGUoXCJkZWZhdWx0XCIsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInJvdGF0ZSgwKVwiIH0pKSxcbiAgICAgIHN0YXRlKFwicm90YXRlZFwiLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJyb3RhdGUoNDVkZWcpXCIgfSkpLFxuICAgICAgdHJhbnNpdGlvbihcInJvdGF0ZWQgPT4gZGVmYXVsdFwiLCBhbmltYXRlKFwiMzAwbXMgZWFzZS1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcImRlZmF1bHQgPT4gcm90YXRlZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pblwiKSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHNob3cgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIG9wdGlvbnMgPSBpbnB1dDxGYWJPcHRpb25zPih7fSk7XG4gIGl0ZW1zID0gaW5wdXQ8RmFiSXRlbXM+KFtdKTtcblxuICBpc09wZW46IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICAvLyBDb21wdXRlZCBzaWduYWwgZm9yIG9wdGlvbnMgd2l0aCBkZWZhdWx0c1xuICBjb21wdXRlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2l6ZTogNTYsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3JDbG9zZWQ6IFwiIzA5MzdCMlwiLFxuICAgICAgYmFja2dyb3VuZENvbG9yT3BlbmVkOiBcIiMzYTVmYzFcIixcbiAgICAgIC4uLmN1cnJlbnRPcHRpb25zXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiLCBbXCIkZXZlbnRcIl0pXG4gIGNsaWNrb3V0KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuY2xvc2VGYWIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgY2xpY2tJdGVtKGl0ZW06IEZhYkl0ZW0pIHtcbiAgICB0aGlzLmNsb3NlRmFiKCk7XG4gICAgaXRlbS5jbGljaz8uKCk7XG4gIH1cblxuICBjbG9zZUZhYigpIHtcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgdG9vZ2xlRmFiKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCghdGhpcy5pc09wZW4oKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmYWItd3JhcHBlclwiICpuZ0lmPVwic2hvdygpXCI+XG4gIDxkaXYgY2xhc3M9XCJmYWItaXRlbXNcIiAqbmdJZj1cImlzT3BlbigpXCIgQHNsaWRlVXBGYWI+XG4gICAgPGRpdiBjbGFzcz1cImZhYi1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMoKS5yZXZlcnNlKCk7IGxldCBpID0gaW5kZXhcIiAoY2xpY2spPVwiY2xpY2tJdGVtKGl0ZW0pXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5sYWJlbFwiIGNsYXNzPVwiZmFiLXRvb2x0aXBcIj5cbiAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmFiLWJ1dHRvblwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGl0ZW0uYmFja2dyb3VuZENvbG9yIHx8ICcjMDkzN0IyJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiYWRkLWltZ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZhYi1jb250YWluZXJcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGJhY2tncm91bmRDb2xvcjogaXNPcGVuKCkgPyBjb21wdXRlZE9wdGlvbnMoKS5iYWNrZ3JvdW5kQ29sb3JPcGVuZWQgOiBjb21wdXRlZE9wdGlvbnMoKS5iYWNrZ3JvdW5kQ29sb3JDbG9zZWRcbiAgICB9XCJcbiAgICAoY2xpY2spPVwidG9vZ2xlRmFiKClcIlxuICA+XG4gICAgPHN2Z1xuICAgICAgW0Byb3RhdGVCdXR0b25dPVwiaXNPcGVuKCkgPyAncm90YXRlZCcgOiAnZGVmYXVsdCdcIlxuICAgICAgY2xhc3M9XCJhZGQtaW1nXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTMuMTQyNCA1LjE1NjA3QzEzLjE0MjQgNC41MTc1OSAxMi42MzEzIDQgMTIuMDAwOSA0QzExLjM3MDQgNCAxMC44NTk0IDQuNTE3NTkgMTAuODU5NCA1LjE1NjA3VjEwLjg0MjFINS4xNDE0OUM0LjUxMTA2IDEwLjg0MjEgNCAxMS4zNTk3IDQgMTEuOTk4MkM0IDEyLjYzNjcgNC41MTEwNiAxMy4xNTQzIDUuMTQxNDkgMTMuMTU0M0gxMC44NTk0VjE4Ljg0MzlDMTAuODU5NCAxOS40ODI0IDExLjM3MDQgMjAgMTIuMDAwOSAyMEMxMi42MzEzIDIwIDEzLjE0MjQgMTkuNDgyNCAxMy4xNDI0IDE4Ljg0MzlWMTMuMTU0M0gxOC44NTg1QzE5LjQ4ODkgMTMuMTU0MyAyMCAxMi42MzY3IDIwIDExLjk5ODJDMjAgMTEuMzU5NyAxOS40ODg5IDEwLjg0MjEgMTguODU4NSAxMC44NDIxSDEzLjE0MjRWNS4xNTYwN1pcIlxuICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZhYi9mYWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZmFiL2ZhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBRWQsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQWEsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBa0IsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0lDQTNFLCtCQUE0QztJQUMxQyxZQUNGO0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSw4Q0FDRjs7OztJQUhGLDhCQUFzRztJQUExQiw0TUFBUyx5QkFBZSxLQUFDO0lBQ25HLCtFQUE0QztJQUc1QywrQkFLQztJQUNDLDBCQUF5QztJQUU3QyxBQURFLGlCQUFNLEVBQ0Y7OztJQVhFLGNBQWdCO0lBQWhCLG9DQUFnQjtJQUtwQixjQUVFO0lBRkYsMEZBRUU7SUFFRyxjQUFpQjtJQUFqQixvREFBaUI7OztJQVg1Qiw4QkFBb0Q7SUFDbEQseUVBQXNHO0lBYXhHLGlCQUFNOzs7SUFka0MsdUNBQVc7SUFDVixjQUFzQjtJQUF0QixrREFBc0I7Ozs7SUFGakUsOEJBQXdDO0lBQ3RDLG1FQUFvRDtJQWVwRCw4QkFNQztJQURDLHFLQUFTLGtCQUFXLEtBQUM7O0lBRXJCLDhCQVFDO0lBQ0MsMEJBS0U7SUFHUixBQURFLEFBREUsaUJBQU0sRUFDRixFQUNGOzs7SUF2Q29CLGNBQWM7SUFBZCxzQ0FBYztJQWlCcEMsY0FFRTtJQUZGLHVLQUVFO0lBSUEsY0FBa0Q7SUFBbEQsdUVBQWtEOztBRGtC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QUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQzs0QkFDcEQsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt5QkFDL0UsQ0FBQzt3QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3hHLENBQUM7b0JBQ0YsT0FBTyxDQUFDLGNBQWMsRUFBRTt3QkFDdEIsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQzt3QkFDbkQsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzt3QkFDdkQsVUFBVSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUMzRCxVQUFVLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO3FCQUMzRCxDQUFDO2lCQUNIOzJDQXVCRCxRQUFRO2tCQURQLFlBQVk7bUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O2tGQXBCL0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAZm9ybWF0ICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBpbnB1dCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdHJpZ2dlciwgdHJhbnNpdGlvbiwgc3R5bGUsIGFuaW1hdGUsIHN0YXRlIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcblxuZXhwb3J0IHR5cGUgRmFiT3B0aW9ucyA9IHtcbiAgYmFja2dyb3VuZENvbG9yQ2xvc2VkPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3JPcGVuZWQ/OiBzdHJpbmc7XG4gIHNpemU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBGYWJJdGVtID0ge1xuICBsYWJlbD86IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBjbGljaz86ICgpID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIEZhYkl0ZW1zID0gRmFiSXRlbVtdO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWZhYlwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2ZhYi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZmFiLmNvbXBvbmVudC5zY3NzXCJdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoXCJzbGlkZVVwRmFiXCIsIFtcbiAgICAgIHRyYW5zaXRpb24oXCI6ZW50ZXJcIiwgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDUwcHgpXCIsIG9wYWNpdHk6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoXCIzMDBtcyBlYXNlLW91dFwiLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDBweClcIiwgb3BhY2l0eTogMSB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbihcIjpsZWF2ZVwiLCBbYW5pbWF0ZShcIjIwMG1zIGVhc2Utb3V0XCIsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoNzBweClcIiwgb3BhY2l0eTogMCB9KSldKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoXCJyb3RhdGVCdXR0b25cIiwgW1xuICAgICAgc3RhdGUoXCJkZWZhdWx0XCIsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInJvdGF0ZSgwKVwiIH0pKSxcbiAgICAgIHN0YXRlKFwicm90YXRlZFwiLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJyb3RhdGUoNDVkZWcpXCIgfSkpLFxuICAgICAgdHJhbnNpdGlvbihcInJvdGF0ZWQgPT4gZGVmYXVsdFwiLCBhbmltYXRlKFwiMzAwbXMgZWFzZS1vdXRcIikpLFxuICAgICAgdHJhbnNpdGlvbihcImRlZmF1bHQgPT4gcm90YXRlZFwiLCBhbmltYXRlKFwiMjAwbXMgZWFzZS1pblwiKSlcbiAgICBdKVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHNob3cgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIG9wdGlvbnMgPSBpbnB1dDxGYWJPcHRpb25zPih7fSk7XG4gIGl0ZW1zID0gaW5wdXQ8RmFiSXRlbXM+KFtdKTtcblxuICBpc09wZW46IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICAvLyBDb21wdXRlZCBzaWduYWwgZm9yIG9wdGlvbnMgd2l0aCBkZWZhdWx0c1xuICBjb21wdXRlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2l6ZTogNTYsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3JDbG9zZWQ6IFwiIzA5MzdCMlwiLFxuICAgICAgYmFja2dyb3VuZENvbG9yT3BlbmVkOiBcIiMzYTVmYzFcIixcbiAgICAgIC4uLmN1cnJlbnRPcHRpb25zXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiLCBbXCIkZXZlbnRcIl0pXG4gIGNsaWNrb3V0KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuY2xvc2VGYWIoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgY2xpY2tJdGVtKGl0ZW06IEZhYkl0ZW0pIHtcbiAgICB0aGlzLmNsb3NlRmFiKCk7XG4gICAgaXRlbS5jbGljaz8uKCk7XG4gIH1cblxuICBjbG9zZUZhYigpIHtcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgdG9vZ2xlRmFiKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCghdGhpcy5pc09wZW4oKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmYWItd3JhcHBlclwiICpuZ0lmPVwic2hvdygpXCI+XG4gIDxkaXYgY2xhc3M9XCJmYWItaXRlbXNcIiAqbmdJZj1cImlzT3BlbigpXCIgQHNsaWRlVXBGYWI+XG4gICAgPGRpdiBjbGFzcz1cImZhYi1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMoKS5yZXZlcnNlKCk7IGxldCBpID0gaW5kZXhcIiAoY2xpY2spPVwiY2xpY2tJdGVtKGl0ZW0pXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5sYWJlbFwiIGNsYXNzPVwiZmFiLXRvb2x0aXBcIj5cbiAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmFiLWJ1dHRvblwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGl0ZW0uYmFja2dyb3VuZENvbG9yIHx8ICcjMDkzN0IyJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiYWRkLWltZ1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZhYi1jb250YWluZXJcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGJhY2tncm91bmRDb2xvcjogaXNPcGVuKCkgPyBjb21wdXRlZE9wdGlvbnMoKS5iYWNrZ3JvdW5kQ29sb3JPcGVuZWQgOiBjb21wdXRlZE9wdGlvbnMoKS5iYWNrZ3JvdW5kQ29sb3JDbG9zZWRcbiAgICB9XCJcbiAgICAoY2xpY2spPVwidG9vZ2xlRmFiKClcIlxuICA+XG4gICAgPHN2Z1xuICAgICAgW0Byb3RhdGVCdXR0b25dPVwiaXNPcGVuKCkgPyAncm90YXRlZCcgOiAnZGVmYXVsdCdcIlxuICAgICAgY2xhc3M9XCJhZGQtaW1nXCJcbiAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTMuMTQyNCA1LjE1NjA3QzEzLjE0MjQgNC41MTc1OSAxMi42MzEzIDQgMTIuMDAwOSA0QzExLjM3MDQgNCAxMC44NTk0IDQuNTE3NTkgMTAuODU5NCA1LjE1NjA3VjEwLjg0MjFINS4xNDE0OUM0LjUxMTA2IDEwLjg0MjEgNCAxMS4zNTk3IDQgMTEuOTk4MkM0IDEyLjYzNjcgNC41MTEwNiAxMy4xNTQzIDUuMTQxNDkgMTMuMTU0M0gxMC44NTk0VjE4Ljg0MzlDMTAuODU5NCAxOS40ODI0IDExLjM3MDQgMjAgMTIuMDAwOSAyMEMxMi42MzEzIDIwIDEzLjE0MjQgMTkuNDgyNCAxMy4xNDI0IDE4Ljg0MzlWMTMuMTU0M0gxOC44NTg1QzE5LjQ4ODkgMTMuMTU0MyAyMCAxMi42MzY3IDIwIDExLjk5ODJDMjAgMTEuMzU5NyAxOS40ODg5IDEwLjg0MjEgMTguODU4NSAxMC44NDIxSDEzLjE0MjRWNS4xNTYwN1pcIlxuICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -388,11 +388,11 @@ export class FilterPanelComponent {
388
388
  i0.ɵɵtemplate(0, FilterPanelComponent_div_0_Template, 13, 10, "div", 0);
389
389
  } if (rf & 2) {
390
390
  i0.ɵɵproperty("ngIf", ctx.show());
391
- } }, dependencies: [i2.NgForOf, i2.NgIf, i3.ButtonComponent, i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.MinValidator, i4.FormGroupDirective, i4.FormControlName, i5.MultiSelectDropdownComponent, i6.DropdownComponent, i7.MisInputComponent, i7.MisInputDirective, i8.TzDatepickerDirective, i9.TzDaterangepickerDirective, i10.CheckboxComponent], styles: [".filter-panel-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;max-width:100%;min-width:20rem;position:absolute;right:0;background:#fff;top:0;z-index:999;box-shadow:0 0 5px #000000a6;transition:all .3s ease}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;font-weight:700;margin:0 1rem;flex-basis:5%}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1.25rem}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]{cursor:pointer;border-radius:50%;transform:scale(1.4);padding:.3rem;transition:all .3s ease}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]:hover{background:#f5f5f5}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]:active{background:#e0e0e0}.filter-panel-container[_ngcontent-%COMP%] .mat-divider.horizontal[_ngcontent-%COMP%]{margin:1rem}.filters[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;row-gap:.5rem;overflow:auto;padding:0 1rem}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%]{display:flex;flex-direction:column}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .filter-title[_ngcontent-%COMP%]{color:#6a737d;font-size:.875rem;font-weight:700;line-height:20px;letter-spacing:.25px}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.8rem 0}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%]{display:block;width:8rem}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .mat-checkbox-inner-container{width:20px;height:20px}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .mat-checkbox-frame{border-radius:5px}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .multiselect-filter[_ngcontent-%COMP%], .filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] mis-input[_ngcontent-%COMP%]{padding:.7rem 0}.horizontal-divider[_ngcontent-%COMP%]{display:block;width:100%;height:1px;margin:.5rem 0;background:#e0e0e0}.first[_ngcontent-%COMP%]{margin-top:0}.actions[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:end;align-items:center;gap:1rem;border-top:1px solid #E0E0E0;flex-basis:4%;padding:.5rem}.actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-weight:700;border-radius:.5rem;width:6rem}.no-padding[_ngcontent-%COMP%] .container{padding:0!important}.range-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:.8rem 0}.range-container[_ngcontent-%COMP%] .range-inner-container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.range-container[_ngcontent-%COMP%] .range-inner-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{height:2.2rem;outline:none;border-radius:.375rem;border:1px solid #e0e0e0;width:8rem;padding:0 .5rem}.range-container[_ngcontent-%COMP%] .range-inner-container[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-bottom:.2rem}input.ng-invalid.ng-touched[_ngcontent-%COMP%]{border:1px solid red;background-color:#ffe6e6}"], data: { animation: [slideFromRight] } }); }
391
+ } }, dependencies: [i2.NgForOf, i2.NgIf, i3.ButtonComponent, i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.MinValidator, i4.FormGroupDirective, i4.FormControlName, i5.MultiSelectDropdownComponent, i6.DropdownComponent, i7.MisInputComponent, i7.MisInputDirective, i8.TzDatepickerDirective, i9.TzDaterangepickerDirective, i10.CheckboxComponent], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.filter-panel-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;max-width:100%;min-width:20rem;position:absolute;right:0;background:var(--bg-primary, #FFFFFF);top:0;z-index:999;box-shadow:0 0 5px #000000a6;transition:all .3s ease}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;font-weight:700;margin:0 1rem;flex-basis:5%}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1.25rem}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]{cursor:pointer;border-radius:50%;transform:scale(1.4);padding:.3rem;transition:all .3s ease}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]:hover{background:var(--bg-tertiary, #F5F5F5)}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]:active{background:var(--border-primary, #E0E0E0)}.filter-panel-container[_ngcontent-%COMP%] .mat-divider.horizontal[_ngcontent-%COMP%]{margin:1rem}.filters[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;row-gap:.5rem;overflow:auto;padding:0 1rem}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%]{display:flex;flex-direction:column}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .filter-title[_ngcontent-%COMP%]{color:var(--text-secondary, #6A737D);font-size:.875rem;font-weight:700;line-height:20px;letter-spacing:.25px}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.8rem 0}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%]{display:block;width:8rem}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .mat-checkbox-inner-container{width:20px;height:20px}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .mat-checkbox-frame{border-radius:5px}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .multiselect-filter[_ngcontent-%COMP%], .filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] mis-input[_ngcontent-%COMP%]{padding:.7rem 0}.horizontal-divider[_ngcontent-%COMP%]{display:block;width:100%;height:1px;margin:.5rem 0;background:var(--border-primary, #E0E0E0)}.first[_ngcontent-%COMP%]{margin-top:0}.actions[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:end;align-items:center;gap:1rem;border-top:1px solid var(--border-primary, #E0E0E0);flex-basis:4%;padding:.5rem}.actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-weight:700;border-radius:.5rem;width:6rem}.no-padding[_ngcontent-%COMP%] .container{padding:0!important}.range-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:.8rem 0}.range-container[_ngcontent-%COMP%] .range-inner-container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.range-container[_ngcontent-%COMP%] .range-inner-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{height:2.2rem;outline:none;border-radius:.375rem;border:1px solid var(--border-primary, #E0E0E0);width:8rem;padding:0 .5rem}.range-container[_ngcontent-%COMP%] .range-inner-container[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-bottom:.2rem}input.ng-invalid.ng-touched[_ngcontent-%COMP%]{border:1px solid var(--brand-error, #B00020);background-color:var(--brand-error-lightest, #FDF2F2)}"], data: { animation: [slideFromRight] } }); }
392
392
  }
393
393
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterPanelComponent, [{
394
394
  type: Component,
395
- args: [{ selector: 'mis-filter-panel', animations: [slideFromRight], template: "<div class=\"filter-panel-container\" *ngIf=\"show()\" @slideFromRight>\n <div class=\"panel-header\">\n <span>Filters</span>\n <svg class=\"close-icon\" (click)=\"closePanel()\" width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"ic-navigation-cancel-24\">\n <path id=\"Union\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.60468 6.64355C8.09036 6.12923 7.25649 6.12923 6.74218 6.64355C6.22787 7.15786 6.22787 7.99173 6.74218 8.50604L10.4938 12.2576L6.7431 16.0083C6.22879 16.5226 6.22879 17.3564 6.7431 17.8708C7.25742 18.3851 8.09129 18.3851 8.60560 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.3850 17.4550 18.3850 17.9693 17.8707C18.4836 17.3564 18.4836 16.5225 17.9693 16.0082L14.2187 12.2576L17.9702 8.50613C18.4845 7.99181 18.4845 7.15794 17.9702 6.64363C17.4559 6.12932 16.6220 6.12932 16.1077 6.64363L12.3562 10.3951L8.60468 6.64355Z\" fill=\"#181F33\" />\n </g>\n </svg>\n </div>\n\n <div class=\"horizontal-divider first\"></div>\n\n <div class=\"filters\" [formGroup]=\"filterForm\">\n <ng-container *ngFor=\"let filter of config(); let last = last\">\n <div class=\"filter\" *ngIf=\"!filter.hidden\">\n <span class=\"filter-title\">{{filter.title}}</span>\n <ng-container *ngIf=\"filter.type === 'multiSelect'\">\n <div class=\"multiselect-filter\">\n <mis-multi-select-dropdown class=\"no-padding\" [label]=\"filter.placeholder || 'Select'\" [selectedItems]=\"filterForm.get(filter.key).value\" (onChange)=\"handleSelect($event, filter.key, filter)\" [data]=\"filter.options\" [searchEnabled]=\"true\"\n [showSelectedCount]=\"true\" [enableSelectAll]=\"true\"\n [hideApplyButton]=\"false\" width=\"100%\" height=\"44px\"></mis-multi-select-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'select'\">\n <div class=\"multiselect-filter\">\n <mis-dropdown [data]=\"filter.options\" [searchEnabled]=\"true\" width=\"100%\" height=\"44px\"\n (onChange)=\"handleSelect($event, filter.key, filter)\" [selectedItem]=\"filterForm.get(filter.key).value\">\n </mis-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'checkbox'\">\n <div class=\"checkbox-row\">\n <div *ngFor=\"let option of filter.options\" class=\"checkbox-container\">\n <mis-checkbox [type]=\"'Default'\" [checked]=\"filterForm.get(filter.key).value?.includes(option.value)\" (valueChange)=\"handleCheckbox($event, filter.key, option.value, filter)\"></mis-checkbox>\n <span class=\"checkbox-label\">{{option.label}}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'datePicker'\">\n {{filter.placeholder}}\n <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datepickerConfig\" [placeholder]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" [value]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" (dateChange)=\"onDateChange($event, filter.key, filter)\" [selectedDate]=\"filterForm.get(filter.key).value\" [positionX]=\"'end'\" [offsetX]=\"-10\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'dateRangePicker'\">\n <mis-input type=\"rounded\">\n <input misTzDrp misInput type=\"text\" class=\"mis-input\" readonly\n [placeholder]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\"\n [value]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\" [positionX]=\"'start'\"\n [positionY]=\"'top'\" [selectedDates]=\"dateRangeSelectedDates()\" (dateChange)=\"onDateChange($event, filter.key, filter)\"\n [dpConfig]=\"filter.dateRangePickerConfig\" />\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'text'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"text\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'number'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"number\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'range'\">\n <div class=\"range-container\" [formGroup]=\"filterForm.get(filter.key)\">\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[0]?.label || 'Min' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"min\"\n />\n </div>\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[1]?.label || 'Max' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"max\"\n [min]=\"filterForm.get?.(filter.key)?.get('min')?.value || 0\"\n />\n </div>\n </div>\n </ng-container>\n <div class=\"horizontal-divider\" *ngIf=\"!last\"></div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"actions\">\n <mis-button [name]=\"'Clear All'\" [size]=\"'Small'\" [type]=\"'Text'\" (click)=\"resetFilters()\"></mis-button>\n <mis-button [name]=\"'Apply'\" [size]=\"'Small'\" [type]=\"'Solid'\" (click)=\"applyFilters()\" [disabled]=\"filterForm.invalid\"></mis-button>\n </div>\n</div>\n\n", styles: [".filter-panel-container{display:flex;flex-direction:column;height:100%;max-width:100%;min-width:20rem;position:absolute;right:0;background:#fff;top:0;z-index:999;box-shadow:0 0 5px #000000a6;transition:all .3s ease}.filter-panel-container .panel-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;font-weight:700;margin:0 1rem;flex-basis:5%}.filter-panel-container .panel-header span{font-size:1.25rem}.filter-panel-container .panel-header .close-icon{cursor:pointer;border-radius:50%;transform:scale(1.4);padding:.3rem;transition:all .3s ease}.filter-panel-container .panel-header .close-icon:hover{background:#f5f5f5}.filter-panel-container .panel-header .close-icon:active{background:#e0e0e0}.filter-panel-container .mat-divider.horizontal{margin:1rem}.filters{display:flex;flex-direction:column;flex:1;row-gap:.5rem;overflow:auto;padding:0 1rem}.filters .filter{display:flex;flex-direction:column}.filters .filter .filter-title{color:#6a737d;font-size:.875rem;font-weight:700;line-height:20px;letter-spacing:.25px}.filters .filter .checkbox-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.8rem 0}.filters .filter .checkbox-row .checkbox-container{display:flex;flex-direction:row;align-items:center;gap:.5rem}.filters .filter .checkbox-row .checkbox-label{display:block;width:8rem}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-inner-container{width:20px;height:20px}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-frame{border-radius:5px}.filters .filter .multiselect-filter,.filters .filter mis-input{padding:.7rem 0}.horizontal-divider{display:block;width:100%;height:1px;margin:.5rem 0;background:#e0e0e0}.first{margin-top:0}.actions{display:flex;flex-direction:row;justify-content:end;align-items:center;gap:1rem;border-top:1px solid #E0E0E0;flex-basis:4%;padding:.5rem}.actions button{font-weight:700;border-radius:.5rem;width:6rem}.no-padding ::ng-deep .container{padding:0!important}.range-container{display:flex;justify-content:space-between;padding:.8rem 0}.range-container .range-inner-container{display:flex;flex-direction:column}.range-container .range-inner-container input{height:2.2rem;outline:none;border-radius:.375rem;border:1px solid #e0e0e0;width:8rem;padding:0 .5rem}.range-container .range-inner-container span{margin-bottom:.2rem}input.ng-invalid.ng-touched{border:1px solid red;background-color:#ffe6e6}\n"] }]
395
+ args: [{ selector: 'mis-filter-panel', animations: [slideFromRight], template: "<div class=\"filter-panel-container\" *ngIf=\"show()\" @slideFromRight>\n <div class=\"panel-header\">\n <span>Filters</span>\n <svg class=\"close-icon\" (click)=\"closePanel()\" width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"ic-navigation-cancel-24\">\n <path id=\"Union\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.60468 6.64355C8.09036 6.12923 7.25649 6.12923 6.74218 6.64355C6.22787 7.15786 6.22787 7.99173 6.74218 8.50604L10.4938 12.2576L6.7431 16.0083C6.22879 16.5226 6.22879 17.3564 6.7431 17.8708C7.25742 18.3851 8.09129 18.3851 8.60560 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.3850 17.4550 18.3850 17.9693 17.8707C18.4836 17.3564 18.4836 16.5225 17.9693 16.0082L14.2187 12.2576L17.9702 8.50613C18.4845 7.99181 18.4845 7.15794 17.9702 6.64363C17.4559 6.12932 16.6220 6.12932 16.1077 6.64363L12.3562 10.3951L8.60468 6.64355Z\" fill=\"#181F33\" />\n </g>\n </svg>\n </div>\n\n <div class=\"horizontal-divider first\"></div>\n\n <div class=\"filters\" [formGroup]=\"filterForm\">\n <ng-container *ngFor=\"let filter of config(); let last = last\">\n <div class=\"filter\" *ngIf=\"!filter.hidden\">\n <span class=\"filter-title\">{{filter.title}}</span>\n <ng-container *ngIf=\"filter.type === 'multiSelect'\">\n <div class=\"multiselect-filter\">\n <mis-multi-select-dropdown class=\"no-padding\" [label]=\"filter.placeholder || 'Select'\" [selectedItems]=\"filterForm.get(filter.key).value\" (onChange)=\"handleSelect($event, filter.key, filter)\" [data]=\"filter.options\" [searchEnabled]=\"true\"\n [showSelectedCount]=\"true\" [enableSelectAll]=\"true\"\n [hideApplyButton]=\"false\" width=\"100%\" height=\"44px\"></mis-multi-select-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'select'\">\n <div class=\"multiselect-filter\">\n <mis-dropdown [data]=\"filter.options\" [searchEnabled]=\"true\" width=\"100%\" height=\"44px\"\n (onChange)=\"handleSelect($event, filter.key, filter)\" [selectedItem]=\"filterForm.get(filter.key).value\">\n </mis-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'checkbox'\">\n <div class=\"checkbox-row\">\n <div *ngFor=\"let option of filter.options\" class=\"checkbox-container\">\n <mis-checkbox [type]=\"'Default'\" [checked]=\"filterForm.get(filter.key).value?.includes(option.value)\" (valueChange)=\"handleCheckbox($event, filter.key, option.value, filter)\"></mis-checkbox>\n <span class=\"checkbox-label\">{{option.label}}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'datePicker'\">\n {{filter.placeholder}}\n <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datepickerConfig\" [placeholder]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" [value]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" (dateChange)=\"onDateChange($event, filter.key, filter)\" [selectedDate]=\"filterForm.get(filter.key).value\" [positionX]=\"'end'\" [offsetX]=\"-10\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'dateRangePicker'\">\n <mis-input type=\"rounded\">\n <input misTzDrp misInput type=\"text\" class=\"mis-input\" readonly\n [placeholder]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\"\n [value]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\" [positionX]=\"'start'\"\n [positionY]=\"'top'\" [selectedDates]=\"dateRangeSelectedDates()\" (dateChange)=\"onDateChange($event, filter.key, filter)\"\n [dpConfig]=\"filter.dateRangePickerConfig\" />\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'text'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"text\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'number'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"number\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'range'\">\n <div class=\"range-container\" [formGroup]=\"filterForm.get(filter.key)\">\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[0]?.label || 'Min' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"min\"\n />\n </div>\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[1]?.label || 'Max' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"max\"\n [min]=\"filterForm.get?.(filter.key)?.get('min')?.value || 0\"\n />\n </div>\n </div>\n </ng-container>\n <div class=\"horizontal-divider\" *ngIf=\"!last\"></div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"actions\">\n <mis-button [name]=\"'Clear All'\" [size]=\"'Small'\" [type]=\"'Text'\" (click)=\"resetFilters()\"></mis-button>\n <mis-button [name]=\"'Apply'\" [size]=\"'Small'\" [type]=\"'Solid'\" (click)=\"applyFilters()\" [disabled]=\"filterForm.invalid\"></mis-button>\n </div>\n</div>\n\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.filter-panel-container{display:flex;flex-direction:column;height:100%;max-width:100%;min-width:20rem;position:absolute;right:0;background:var(--bg-primary, #FFFFFF);top:0;z-index:999;box-shadow:0 0 5px #000000a6;transition:all .3s ease}.filter-panel-container .panel-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;font-weight:700;margin:0 1rem;flex-basis:5%}.filter-panel-container .panel-header span{font-size:1.25rem}.filter-panel-container .panel-header .close-icon{cursor:pointer;border-radius:50%;transform:scale(1.4);padding:.3rem;transition:all .3s ease}.filter-panel-container .panel-header .close-icon:hover{background:var(--bg-tertiary, #F5F5F5)}.filter-panel-container .panel-header .close-icon:active{background:var(--border-primary, #E0E0E0)}.filter-panel-container .mat-divider.horizontal{margin:1rem}.filters{display:flex;flex-direction:column;flex:1;row-gap:.5rem;overflow:auto;padding:0 1rem}.filters .filter{display:flex;flex-direction:column}.filters .filter .filter-title{color:var(--text-secondary, #6A737D);font-size:.875rem;font-weight:700;line-height:20px;letter-spacing:.25px}.filters .filter .checkbox-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.8rem 0}.filters .filter .checkbox-row .checkbox-container{display:flex;flex-direction:row;align-items:center;gap:.5rem}.filters .filter .checkbox-row .checkbox-label{display:block;width:8rem}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-inner-container{width:20px;height:20px}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-frame{border-radius:5px}.filters .filter .multiselect-filter,.filters .filter mis-input{padding:.7rem 0}.horizontal-divider{display:block;width:100%;height:1px;margin:.5rem 0;background:var(--border-primary, #E0E0E0)}.first{margin-top:0}.actions{display:flex;flex-direction:row;justify-content:end;align-items:center;gap:1rem;border-top:1px solid var(--border-primary, #E0E0E0);flex-basis:4%;padding:.5rem}.actions button{font-weight:700;border-radius:.5rem;width:6rem}.no-padding ::ng-deep .container{padding:0!important}.range-container{display:flex;justify-content:space-between;padding:.8rem 0}.range-container .range-inner-container{display:flex;flex-direction:column}.range-container .range-inner-container input{height:2.2rem;outline:none;border-radius:.375rem;border:1px solid var(--border-primary, #E0E0E0);width:8rem;padding:0 .5rem}.range-container .range-inner-container span{margin-bottom:.2rem}input.ng-invalid.ng-touched{border:1px solid var(--brand-error, #B00020);background-color:var(--brand-error-lightest, #FDF2F2)}\n"] }]
396
396
  }], () => [{ type: i1.HasValuePipe }], null); })();
397
397
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterPanelComponent, { className: "FilterPanelComponent" }); })();
398
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFrQixRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNjMUMsNkJBQW9EO0lBRTVDLEFBREosK0JBQWdDLG9DQUc2QjtJQUZpRixxU0FBWSxxREFBd0MsS0FBQztJQUduTSxBQUQ2RCxpQkFBNEIsRUFDbkY7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRG9OLEFBQXhCLEFBQXpHLEFBQXpDLHlEQUF3Qyw2REFBbUQsMkJBQThFLHVCQUF1QiwyQkFDaE4seUJBQXlCLDBCQUMxQjs7OztJQUdyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRW9GO0lBQXhHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7SUFIWSxlQUF1QjtJQUN5QixBQUR4QixBQUF4Qix3Q0FBdUIsdUJBQXVCLDREQUNtRDs7OztJQU8zRyxBQURKLCtCQUFzRSx1QkFDNkc7SUFBekUsZ1VBQWUsd0VBQXdELEtBQUM7SUFBQyxpQkFBZTtJQUM5TCxnQ0FBNkI7SUFBQSxZQUFnQjtJQUNqRCxBQURpRCxpQkFBTyxFQUNsRDs7Ozs7O0lBRlksY0FBa0I7SUFBQyxBQUFuQixnQ0FBa0Isc0hBQXFFO0lBQ3hFLGVBQWdCO0lBQWhCLHFDQUFnQjs7O0lBSnpELDZCQUFpRDtJQUM3QywrQkFBMEI7SUFDdEIsZ0hBQXNFO0lBSTFFLGlCQUFNOzs7O0lBSnNCLGVBQWlCO0lBQWpCLDJDQUFpQjs7OztJQU1qRCw2QkFBbUQ7SUFDL0MsWUFDQTtJQUNJLEFBREoscUNBQTBCLGdCQUNvYztJQUE5SSxxUkFBYyxxREFBd0MsS0FBQztJQUN2WSxBQURJLGlCQUEwZCxFQUNsZDs7Ozs7SUFIWixjQUNBO0lBREEsc0RBQ0E7SUFDbUUsZUFBb0M7SUFBdVcsQUFBcEIsQUFBbEQsQUFBekssQUFBdkgsQUFBckMscURBQW9DLDRJQUF1SCxzSUFBaUgsNERBQTBHLG9CQUFvQixnQkFBZ0I7Ozs7SUFHamUsNkJBQXdEO0lBRWhELEFBREoscUNBQTBCLGdCQUswQjtJQURtQixxUkFBYyxxREFBd0MsS0FBQztJQUU5SCxBQUxJLGlCQUlnRCxFQUN4Qzs7Ozs7SUFKSixlQUE2TTtJQUc3TSxBQURvQixBQUFwQixBQUR3TSxBQUF4TSxBQURBLHNQQUE2TSxtT0FDTixzQkFBc0Isb0JBQzFNLGtEQUEyQyw2Q0FDckI7OztJQUdyRCw2QkFBNkM7SUFDekMscUNBQTBCO0lBQ3RCLDRCQUEySDtJQUMvSCxpQkFBWTs7OztJQURrQyxlQUFpRDtJQUFDLEFBQWxELGtFQUFpRCxrQ0FBK0I7OztJQUdsSSw2QkFBK0M7SUFDM0MscUNBQTBCO0lBQ3RCLDRCQUE2SDtJQUNqSSxpQkFBWTs7OztJQURvQyxlQUFpRDtJQUFDLEFBQWxELGtFQUFpRCxrQ0FBK0I7OztJQUdwSSw2QkFBOEM7SUFHbEMsQUFESixBQURKLCtCQUFzRSxjQUMvQixXQUN6QjtJQUFBLFlBQTBDO0lBQUEsaUJBQU87SUFDdkQsNEJBTUU7SUFDTixpQkFBTTtJQUVGLEFBREosK0JBQW1DLFdBQ3pCO0lBQUEsWUFBMEM7SUFBQSxpQkFBTztJQUN2RCw0QkFPRTtJQUVWLEFBREksaUJBQU0sRUFDSjs7Ozs7O0lBdEJ1QixjQUF3QztJQUF4QyxnRUFBd0M7SUFFdkQsZUFBMEM7SUFBMUMsK0pBQTBDO0lBSzVDLGNBQWlEO0lBQWpELGtFQUFpRDtJQUsvQyxlQUEwQztJQUExQywrSkFBMEM7SUFLNUMsY0FBaUQ7SUFFakQsQUFGQSxrRUFBaUQsMExBRVc7OztJQUs1RSwwQkFBb0Q7OztJQXpFcEQsQUFESiwrQkFBMkMsZUFDWjtJQUFBLFlBQWdCO0lBQUEsaUJBQU87SUF5RWxELEFBekJBLEFBTEEsQUFMQSxBQVRBLEFBTkEsQUFSQSxBQVBBLEFBUEEsbUhBQW9ELHNHQU9MLHNHQU9FLHNHQVFFLHNHQU1LLHNHQVNYLHNHQUtFLHlHQUtELHNGQXlCQTtJQUNsRCxpQkFBTTs7Ozs7SUExRXlCLGVBQWdCO0lBQWhCLHFDQUFnQjtJQUM1QixjQUFtQztJQUFuQyx1REFBbUM7SUFPbkMsY0FBOEI7SUFBOUIsa0RBQThCO0lBTzlCLGNBQWdDO0lBQWhDLG9EQUFnQztJQVFoQyxjQUFrQztJQUFsQyxzREFBa0M7SUFNbEMsY0FBdUM7SUFBdkMsMkRBQXVDO0lBU3ZDLGNBQTRCO0lBQTVCLGdEQUE0QjtJQUs1QixjQUE4QjtJQUE5QixrREFBOEI7SUFLOUIsY0FBNkI7SUFBN0IsaURBQTZCO0lBeUJYLGNBQVc7SUFBWCxnQ0FBVzs7O0lBM0VwRCw2QkFBK0Q7SUFDM0QsNkZBQTJDOzs7O0lBQXRCLGNBQW9CO0lBQXBCLHdDQUFvQjs7OztJQVo3QyxBQURKLEFBREYsOEJBQW1FLGFBQ3ZDLFdBQ2hCO0lBQUEsdUJBQU87SUFBQSxpQkFBTzs7SUFDcEIsOEJBQXlJO0lBQWpILDZLQUFTLG1CQUFZLEtBQUM7SUFDMUMsNEJBQWdDO0lBQzVCLDBCQUE4bEI7SUFHMW1CLEFBREksQUFESSxpQkFBSSxFQUNGLEVBQ0o7O0lBRU4seUJBQTRDO0lBRTVDLDhCQUE4QztJQUMxQyw2RkFBK0Q7SUE4RW5FLGlCQUFNO0lBR0YsQUFESiwrQkFBcUIsc0JBQzBFO0lBQXpCLHFMQUFTLHFCQUFjLEtBQUM7SUFBQyxpQkFBYTtJQUN4Ryx1Q0FBd0g7SUFBekQscUxBQVMscUJBQWMsS0FBQztJQUU3RixBQURFLEFBRDRILGlCQUFhLEVBQ25JLEVBQ0Y7OztJQWpHNkMsMkNBQWU7SUFZM0MsZUFBd0I7SUFBeEIsNkNBQXdCO0lBQ1IsY0FBYTtJQUFiLHlDQUFhO0lBaUZsQyxlQUFvQjtJQUFrQixBQUFqQixBQUFyQixrQ0FBb0IsaUJBQWlCLGdCQUFnQjtJQUNyRCxjQUFnQjtJQUE0RCxBQUExQyxBQUFqQixBQUFqQiw4QkFBZ0IsaUJBQWlCLGlCQUFpQix1Q0FBeUQ7O0FEOUQ3SCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9CLFFBQXNCO1FBQXRCLGFBQVEsR0FBUixRQUFRLENBQWM7UUFFMUMsbUNBQW1DO1FBQzVCLFNBQUksR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDN0IsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFDL0MscUNBQWdDLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRWhFLHFDQUFxQztRQUM5QixZQUFPLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDbkIsWUFBTyxHQUFHLE1BQU0sRUFBNEMsQ0FBQztRQUVwRSxlQUFVLEdBQWMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFHbkMsMkJBQXNCLEdBQTBDLE1BQU0sQ0FBQztZQUM1RSxTQUFTLEVBQUUsRUFBRTtZQUNiLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO1FBRUgsbUNBQW1DO1FBQ25DLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMxQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUN4QywrREFBK0Q7WUFDL0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQXlCLEVBQUUsRUFBRTtnQkFDbEQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNuQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQzVCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQzs0QkFDN0MsS0FBSyxFQUFFLENBQUM7d0JBQ1YsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxhQUFhLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDdkUsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUNyQixLQUFLLEVBQUUsQ0FBQzt3QkFDVixDQUFDO29CQUNILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixLQUFLLEVBQUUsQ0FBQztvQkFDVixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUF6QzBDLENBQUM7SUEyQzlDLFFBQVE7UUFDTiwrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCw0RUFBNEU7SUFFNUUsc0JBQXNCLENBQUMsTUFBMkI7UUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBeUIsRUFBRSxFQUFFO1lBQzNDLElBQUksT0FBWSxDQUFDO1lBQ2pCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDO29CQUN0QixHQUFHLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUMxQixHQUFHLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO2lCQUMzQixFQUFFO29CQUNELFVBQVUsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBRTt3QkFDL0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUM7d0JBQ25DLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDO3dCQUNuQyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7NEJBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUseUNBQXlDLEVBQUUsQ0FBQzt3QkFDbkUsQ0FBQzt3QkFDRCxPQUFPLElBQUksQ0FBQztvQkFDZCxDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGFBQWEsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN2RSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEMsQ0FBQztpQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3BDLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFDRCwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BELG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLO1lBQ2pDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO1NBQ2hDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVUsRUFBRSxTQUFpQixFQUFFLE1BQXlCO1FBQ25FLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVLEVBQUUsU0FBaUIsRUFBRSxNQUF5QjtRQUNuRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDO2dCQUM5QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTzthQUN2QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFVLEVBQUUsU0FBaUIsRUFBRSxhQUFxQixFQUFFLE1BQXlCO1FBQzVGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzdFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzVHLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLFdBQVcsR0FBUSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQXlCLEVBQUUsRUFBRTtZQUNsRCxJQUFJLFlBQVksR0FBUSxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQztZQUNwRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssYUFBYSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ2hFLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2pFLENBQUM7WUFDRCxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQTJCO1FBQ3hDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzVCLElBQUksTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDL0QsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO3FIQXhLVSxvQkFBb0I7b0VBQXBCLG9CQUFvQjtZQ2pDakMsdUVBQW1FOztZQUE5QixpQ0FBWTtnZ0lEK0JuQyxDQUFDLGNBQWMsQ0FBQzs7aUZBRWpCLG9CQUFvQjtjQU5oQyxTQUFTOzJCQUNFLGtCQUFrQixjQUdoQixDQUFDLGNBQWMsQ0FBQzs7a0ZBRWpCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsLCBjb21wdXRlZCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2xpZGVGcm9tUmlnaHQgfSBmcm9tICcuLi9hbmltYXRpb25zL3NsaWRlRnJvbVJpZ2h0JztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXBpY2tlcl92Mic7XG5pbXBvcnQgeyBJUlNlbGVjdGVkRGF0ZXNDb25maWcgfSBmcm9tICdtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3NwZWNpZmljZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBJRGF0ZVBpY2tlckNvbmZpZyBhcyBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXJhbmdlcGlja2VyX3YyXCI7XG5pbXBvcnQgeyBIYXNWYWx1ZVBpcGUgfSBmcm9tICcuLi9oYXMtdmFsdWUucGlwZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJQYW5lbENvbmZpZyB7XG4gIGtleTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlOiAnbXVsdGlTZWxlY3QnIHwgJ3NlbGVjdCcgfCAnZGF0ZVBpY2tlcicgfCAnZGF0ZVJhbmdlUGlja2VyJyB8ICdjaGVja2JveCcgfCAncmFkaW8nIHwgJ3RleHQnIHwgJ251bWJlcicgfCAncmFuZ2UnO1xuICBvcHRpb25zPzogQXJyYXk8e1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBkYXRhPzogYW55W107XG4gIH0+O1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGF0ZVBpY2tlckNvbmZpZz86IElEYXRlUGlja2VyQ29uZmlnO1xuICBkYXRlUmFuZ2VQaWNrZXJDb25maWc/OiBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuICBvbkNoYW5nZT86IChldmVudDogYW55LCBjb25maWc/OiBGaWx0ZXJQYW5lbENvbmZpZ1tdLCBmb3JtVmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZT86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLWZpbHRlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW3NsaWRlRnJvbVJpZ2h0XVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaGFzVmFsdWU6IEhhc1ZhbHVlUGlwZSkge31cblxuICAvLyBTaWduYWwgaW5wdXRzIHJlcGxhY2luZyBASW5wdXQoKVxuICBwdWJsaWMgc2hvdyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEZpbHRlclBhbmVsQ29uZmlnW10+KCk7XG4gIHB1YmxpYyBlbWl0RmlsdGVyc0FmdGVyU2V0dGluZ05ld1ZhbHVlcyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyBTaWduYWwgb3V0cHV0cyByZXBsYWNpbmcgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkNsb3NlID0gb3V0cHV0KCk7XG4gIHB1YmxpYyBvbkFwcGx5ID0gb3V0cHV0PHsgZmlsdGVyRGF0YTogYW55LCBmaWx0ZXJDb3VudDogbnVtYmVyIH0+KCk7XG5cbiAgZmlsdGVyRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIGxhc3RBcHBsaWVkRGF0YTogYW55O1xuXG4gIHB1YmxpYyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzOiBXcml0YWJsZVNpZ25hbDxJUlNlbGVjdGVkRGF0ZXNDb25maWc+ID0gc2lnbmFsKHtcbiAgICBzdGFydERhdGU6ICcnLFxuICAgIGVuZERhdGU6ICcnLFxuICB9KTtcblxuICAvLyBDb21wdXRlZCBzaWduYWwgZm9yIGZpbHRlciBjb3VudFxuICBmaWx0ZXJDb3VudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZTtcbiAgICAvLyBBY2Nlc3MgdGhlIGNvbmZpZyBzaWduYWwgdmFsdWUgYnkgY2FsbGluZyBpdCBsaWtlIGEgZnVuY3Rpb25cbiAgICB0aGlzLmNvbmZpZygpLmZvckVhY2goKGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVZhbHVlW2ZpbHRlci5rZXldO1xuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUudHJhbnNmb3JtKHZhbHVlKSkge1xuICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICBpZiAodmFsdWUubWluICE9PSBudWxsIHx8IHZhbHVlLm1heCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb3VudDtcbiAgfSk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQWNjZXNzIHRoZSBjb25maWcgc2lnbmFsIHZhbHVlIGJ5IGNhbGxpbmcgaXQgbGlrZSBhIGZ1bmN0aW9uXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybUNvbnRyb2xzKHRoaXMuY29uZmlnKCkpO1xuICB9XG5cbiAgLy8gVGhlIG5nT25DaGFuZ2VzIGxpZmVjeWNsZSBob29rIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgd2l0aCBzaWduYWwgaW5wdXRzLlxuXG4gIGluaXRpYWxpemVGb3JtQ29udHJvbHMoY29uZmlnOiBGaWx0ZXJQYW5lbENvbmZpZ1tdKSB7XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgY29uZmlnLmZvckVhY2goKGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpID0+IHtcbiAgICAgIGxldCBjb250cm9sOiBhbnk7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgIG1pbjogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgICAgICAgIG1heDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdmFsaWRhdG9yczogKGdyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1pbiA9IGdyb3VwLmdldCgnbWluJykudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBtYXggPSBncm91cC5nZXQoJ21heCcpLnZhbHVlO1xuICAgICAgICAgICAgaWYgKG1pbiAhPT0gbnVsbCAmJiBtYXggIT09IG51bGwgJiYgbWluID4gbWF4KSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IHJhbmdlRXJyb3I6ICdNaW4gdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiBtYXggdmFsdWUnIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXIudHlwZSA9PT0gJ211bHRpU2VsZWN0JyB8fCBmaWx0ZXIudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKFtdKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmhhc1ZhbHVlLnRyYW5zZm9ybShmaWx0ZXIuZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKGZpbHRlci5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woZmlsdGVyLmtleSwgY29udHJvbCk7XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCkge1xuICAgIGlmICh0aGlzLmxhc3RBcHBsaWVkRGF0YSkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLnNldFZhbHVlKHRoaXMubGFzdEFwcGxpZWREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhckZvcm1WYWx1ZXMoKTtcbiAgICB9XG4gICAgLy8gRW1pdCB0aGUgY2xvc2UgZXZlbnQgdXNpbmcgdGhlIHNpZ25hbCBvdXRwdXRcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCkge1xuICAgIGlmICh0aGlzLmZpbHRlckZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIFxuICAgIHRoaXMubGFzdEFwcGxpZWREYXRhID0geyAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUgfTtcbiAgICAvLyBFbWl0IHRoZSBhcHBseSBldmVudCB3aXRoIHRoZSBmaWx0ZXIgZGF0YSB1c2luZyB0aGUgc2lnbmFsIG91dHB1dFxuICAgIHRoaXMub25BcHBseS5lbWl0KHtcbiAgICAgIGZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRm9ybS52YWx1ZSxcbiAgICAgIGZpbHRlckNvdW50OiB0aGlzLmZpbHRlckNvdW50KClcbiAgICB9KTtcbiAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdChldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykge1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYgKGZpbHRlci5vbkNoYW5nZSkge1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZygpLCB0aGlzLmZpbHRlckZvcm0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykge1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYgKHR5cGVvZiBldmVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zZXQoe1xuICAgICAgICBzdGFydERhdGU6IGV2ZW50LnN0YXJ0RGF0ZSxcbiAgICAgICAgZW5kRGF0ZTogZXZlbnQuZW5kRGF0ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNoZWNrYm94KGV2ZW50OiBhbnksIGZpbHRlcktleTogc3RyaW5nLCBjaGVja2JveFZhbHVlOiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWVzID0gdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnZhbHVlO1xuICAgIGlmIChldmVudC52YWx1ZSkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKFsuLi5jdXJyZW50VmFsdWVzLCBjaGVja2JveFZhbHVlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShjdXJyZW50VmFsdWVzLmZpbHRlcigodmFsdWU6IHN0cmluZykgPT4gdmFsdWUgIT09IGNoZWNrYm94VmFsdWUpKTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5vbkNoYW5nZSkge1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZygpLCB0aGlzLmZpbHRlckZvcm0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRm9ybVZhbHVlcygpIHtcbiAgICBjb25zdCByZXNldFZhbHVlczogYW55ID0ge307XG4gICAgdGhpcy5jb25maWcoKS5mb3JFYWNoKChmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKSA9PiB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlOiBhbnkgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlIHx8IG51bGw7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSB8fCBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlIHx8IHsgbWluOiBudWxsLCBtYXg6IG51bGwgfTtcbiAgICAgIH1cbiAgICAgIHJlc2V0VmFsdWVzW2ZpbHRlci5rZXldID0gZGVmYXVsdFZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyRm9ybS5wYXRjaFZhbHVlKHJlc2V0VmFsdWVzKTtcbiAgfVxuXG4gIHJlc2V0RmlsdGVycygpIHtcbiAgICB0aGlzLmNsZWFyRm9ybVZhbHVlcygpO1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gIH1cblxuICBzZXRGaWx0ZXJWYWx1ZShjb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10pIHtcbiAgICBsZXQgYW55VmFsdWVTZXQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBjb25maWcpIHtcbiAgICAgIGlmIChmaWx0ZXI/LnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS5zZXRWYWx1ZShmaWx0ZXIuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGFueVZhbHVlU2V0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFueVZhbHVlU2V0ICYmIHRoaXMuZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXMoKSkge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImZpbHRlci1wYW5lbC1jb250YWluZXJcIiAqbmdJZj1cInNob3coKVwiIEBzbGlkZUZyb21SaWdodD5cbiAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRlclwiPlxuICAgICAgPHNwYW4+RmlsdGVyczwvc3Bhbj5cbiAgICAgIDxzdmcgY2xhc3M9XCJjbG9zZS1pY29uXCIgKGNsaWNrKT1cImNsb3NlUGFuZWwoKVwiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIHZpZXdCb3g9XCIwIDAgMjUgMjVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8ZyBpZD1cImljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCI+XG4gICAgICAgICAgICAgIDxwYXRoIGlkPVwiVW5pb25cIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNOC42MDQ2OCA2LjY0MzU1QzguMDkwMzYgNi4xMjkyMyA3LjI1NjQ5IDYuMTI5MjMgNi43NDIxOCA2LjY0MzU1QzYuMjI3ODcgNy4xNTc4NiA2LjIyNzg3IDcuOTkxNzMgNi43NDIxOCA4LjUwNjA0TDEwLjQ5MzggMTIuMjU3Nkw2Ljc0MzEgMTYuMDA4M0M2LjIyODc5IDE2LjUyMjYgNi4yMjg3OSAxNy4zNTY0IDYuNzQzMSAxNy44NzA4QzcuMjU3NDIgMTguMzg1MSA4LjA5MTI5IDE4LjM4NTEgOC42MDU2MCAxNy44NzA4TDEyLjM1NjIgMTQuMTIwMUwxNi4xMDY4IDE3Ljg3MDdDMTYuNjIxMSAxOC4zODUwIDE3LjQ1NTAgMTguMzg1MCAxNy45NjkzIDE3Ljg3MDdDMTguNDgzNiAxNy4zNTY0IDE4LjQ4MzYgMTYuNTIyNSAxNy45NjkzIDE2LjAwODJMMTQuMjE4NyAxMi4yNTc2TDE3Ljk3MDIgOC41MDYxM0MxOC40ODQ1IDcuOTkxODEgMTguNDg0NSA3LjE1Nzk0IDE3Ljk3MDIgNi42NDM2M0MxNy40NTU5IDYuMTI5MzIgMTYuNjIyMCA2LjEyOTMyIDE2LjEwNzcgNi42NDM2M0wxMi4zNTYyIDEwLjM5NTFMOC42MDQ2OCA2LjY0MzU1WlwiIGZpbGw9XCIjMTgxRjMzXCIgLz5cbiAgICAgICAgICA8L2c+XG4gICAgICA8L3N2Zz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZGl2aWRlciBmaXJzdFwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXJzXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgY29uZmlnKCk7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJcIiAqbmdJZj1cIiFmaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLXRpdGxlXCI+e3tmaWx0ZXIudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gY2xhc3M9XCJuby1wYWRkaW5nXCIgW2xhYmVsXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0J1wiIFtzZWxlY3RlZEl0ZW1zXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlXCIgKG9uQ2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtlbmFibGVTZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlQXBwbHlCdXR0b25dPVwiZmFsc2VcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI0NHB4XCI+PC9taXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1pcy1kcm9wZG93biBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI0NHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW3NlbGVjdGVkSXRlbV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCdcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyLm9wdGlvbnNcIiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWlzLWNoZWNrYm94IFt0eXBlXT1cIidEZWZhdWx0J1wiIFtjaGVja2VkXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlPy5pbmNsdWRlcyhvcHRpb24udmFsdWUpXCIgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUNoZWNrYm94KCRldmVudCwgZmlsdGVyLmtleSwgb3B0aW9uLnZhbHVlLCBmaWx0ZXIpXCI+PC9taXMtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIj57e29wdGlvbi5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAge3tmaWx0ZXIucGxhY2Vob2xkZXJ9fVxuICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNUekRwIG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgY2xhc3M9XCJtaXMtaW5wdXRcIiBbZHBDb25maWddPVwiZmlsdGVyLmRhdGVwaWNrZXJDb25maWdcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgPyBmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZSA6IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpXCIgW3ZhbHVlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlID8gZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgOiAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKVwiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbc2VsZWN0ZWREYXRlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlXCIgW3Bvc2l0aW9uWF09XCInZW5kJ1wiIFtvZmZzZXRYXT1cIi0xMFwiPlxuICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUmFuZ2VQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc1R6RHJwIG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtaXMtaW5wdXRcIiByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICYmICFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZSkgPyAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKSA6IGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5lbmREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIighZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGUpID8gKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JykgOiBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICsgJyAtICcgKyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZVwiIFtwb3NpdGlvblhdPVwiJ3N0YXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvblldPVwiJ3RvcCdcIiBbc2VsZWN0ZWREYXRlc109XCJkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKClcIiAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlUmFuZ2VQaWNrZXJDb25maWdcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICd0ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzSW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzBdPy5sYWJlbCB8fCAnTWluJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzFdPy5sYWJlbCB8fCAnTWF4JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZmlsdGVyRm9ybS5nZXQ/LihmaWx0ZXIua2V5KT8uZ2V0KCdtaW4nKT8udmFsdWUgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXJcIiAqbmdJZj1cIiFsYXN0XCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidDbGVhciBBbGwnXCIgW3NpemVdPVwiJ1NtYWxsJ1wiIFt0eXBlXT1cIidUZXh0J1wiIChjbGljayk9XCJyZXNldEZpbHRlcnMoKVwiPjwvbWlzLWJ1dHRvbj5cbiAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidBcHBseSdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1NvbGlkJ1wiIChjbGljayk9XCJhcHBseUZpbHRlcnMoKVwiIFtkaXNhYmxlZF09XCJmaWx0ZXJGb3JtLmludmFsaWRcIj48L21pcy1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
398
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFrQixRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNjMUMsNkJBQW9EO0lBRTVDLEFBREosK0JBQWdDLG9DQUc2QjtJQUZpRixxU0FBWSxxREFBd0MsS0FBQztJQUduTSxBQUQ2RCxpQkFBNEIsRUFDbkY7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRG9OLEFBQXhCLEFBQXpHLEFBQXpDLHlEQUF3Qyw2REFBbUQsMkJBQThFLHVCQUF1QiwyQkFDaE4seUJBQXlCLDBCQUMxQjs7OztJQUdyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRW9GO0lBQXhHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7SUFIWSxlQUF1QjtJQUN5QixBQUR4QixBQUF4Qix3Q0FBdUIsdUJBQXVCLDREQUNtRDs7OztJQU8zRyxBQURKLCtCQUFzRSx1QkFDNkc7SUFBekUsZ1VBQWUsd0VBQXdELEtBQUM7SUFBQyxpQkFBZTtJQUM5TCxnQ0FBNkI7SUFBQSxZQUFnQjtJQUNqRCxBQURpRCxp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LENBQUMsQ0FBQztnQkFDL0QsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO3FIQXhLVSxvQkFBb0I7b0VBQXBCLG9CQUFvQjtZQ2pDakMsdUVBQW1FOztZQUE5QixpQ0FBWTsrMVBEK0JuQyxDQUFDLGNBQWMsQ0FBQzs7aUZBRWpCLG9CQUFvQjtjQU5oQyxTQUFTOzJCQUNFLGtCQUFrQixjQUdoQixDQUFDLGNBQWMsQ0FBQzs7a0ZBRWpCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsLCBjb21wdXRlZCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2xpZGVGcm9tUmlnaHQgfSBmcm9tICcuLi9hbmltYXRpb25zL3NsaWRlRnJvbVJpZ2h0JztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXBpY2tlcl92Mic7XG5pbXBvcnQgeyBJUlNlbGVjdGVkRGF0ZXNDb25maWcgfSBmcm9tICdtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3NwZWNpZmljZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBJRGF0ZVBpY2tlckNvbmZpZyBhcyBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXJhbmdlcGlja2VyX3YyXCI7XG5pbXBvcnQgeyBIYXNWYWx1ZVBpcGUgfSBmcm9tICcuLi9oYXMtdmFsdWUucGlwZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJQYW5lbENvbmZpZyB7XG4gIGtleTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlOiAnbXVsdGlTZWxlY3QnIHwgJ3NlbGVjdCcgfCAnZGF0ZVBpY2tlcicgfCAnZGF0ZVJhbmdlUGlja2VyJyB8ICdjaGVja2JveCcgfCAncmFkaW8nIHwgJ3RleHQnIHwgJ251bWJlcicgfCAncmFuZ2UnO1xuICBvcHRpb25zPzogQXJyYXk8e1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBkYXRhPzogYW55W107XG4gIH0+O1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGF0ZVBpY2tlckNvbmZpZz86IElEYXRlUGlja2VyQ29uZmlnO1xuICBkYXRlUmFuZ2VQaWNrZXJDb25maWc/OiBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuICBvbkNoYW5nZT86IChldmVudDogYW55LCBjb25maWc/OiBGaWx0ZXJQYW5lbENvbmZpZ1tdLCBmb3JtVmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZT86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLWZpbHRlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW3NsaWRlRnJvbVJpZ2h0XVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaGFzVmFsdWU6IEhhc1ZhbHVlUGlwZSkge31cblxuICAvLyBTaWduYWwgaW5wdXRzIHJlcGxhY2luZyBASW5wdXQoKVxuICBwdWJsaWMgc2hvdyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEZpbHRlclBhbmVsQ29uZmlnW10+KCk7XG4gIHB1YmxpYyBlbWl0RmlsdGVyc0FmdGVyU2V0dGluZ05ld1ZhbHVlcyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyBTaWduYWwgb3V0cHV0cyByZXBsYWNpbmcgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkNsb3NlID0gb3V0cHV0KCk7XG4gIHB1YmxpYyBvbkFwcGx5ID0gb3V0cHV0PHsgZmlsdGVyRGF0YTogYW55LCBmaWx0ZXJDb3VudDogbnVtYmVyIH0+KCk7XG5cbiAgZmlsdGVyRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIGxhc3RBcHBsaWVkRGF0YTogYW55O1xuXG4gIHB1YmxpYyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzOiBXcml0YWJsZVNpZ25hbDxJUlNlbGVjdGVkRGF0ZXNDb25maWc+ID0gc2lnbmFsKHtcbiAgICBzdGFydERhdGU6ICcnLFxuICAgIGVuZERhdGU6ICcnLFxuICB9KTtcblxuICAvLyBDb21wdXRlZCBzaWduYWwgZm9yIGZpbHRlciBjb3VudFxuICBmaWx0ZXJDb3VudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZTtcbiAgICAvLyBBY2Nlc3MgdGhlIGNvbmZpZyBzaWduYWwgdmFsdWUgYnkgY2FsbGluZyBpdCBsaWtlIGEgZnVuY3Rpb25cbiAgICB0aGlzLmNvbmZpZygpLmZvckVhY2goKGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVZhbHVlW2ZpbHRlci5rZXldO1xuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUudHJhbnNmb3JtKHZhbHVlKSkge1xuICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICBpZiAodmFsdWUubWluICE9PSBudWxsIHx8IHZhbHVlLm1heCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb3VudDtcbiAgfSk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQWNjZXNzIHRoZSBjb25maWcgc2lnbmFsIHZhbHVlIGJ5IGNhbGxpbmcgaXQgbGlrZSBhIGZ1bmN0aW9uXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybUNvbnRyb2xzKHRoaXMuY29uZmlnKCkpO1xuICB9XG5cbiAgLy8gVGhlIG5nT25DaGFuZ2VzIGxpZmVjeWNsZSBob29rIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgd2l0aCBzaWduYWwgaW5wdXRzLlxuXG4gIGluaXRpYWxpemVGb3JtQ29udHJvbHMoY29uZmlnOiBGaWx0ZXJQYW5lbENvbmZpZ1tdKSB7XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgY29uZmlnLmZvckVhY2goKGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpID0+IHtcbiAgICAgIGxldCBjb250cm9sOiBhbnk7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgIG1pbjogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgICAgICAgIG1heDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdmFsaWRhdG9yczogKGdyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1pbiA9IGdyb3VwLmdldCgnbWluJykudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBtYXggPSBncm91cC5nZXQoJ21heCcpLnZhbHVlO1xuICAgICAgICAgICAgaWYgKG1pbiAhPT0gbnVsbCAmJiBtYXggIT09IG51bGwgJiYgbWluID4gbWF4KSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IHJhbmdlRXJyb3I6ICdNaW4gdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiBtYXggdmFsdWUnIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXIudHlwZSA9PT0gJ211bHRpU2VsZWN0JyB8fCBmaWx0ZXIudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKFtdKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmhhc1ZhbHVlLnRyYW5zZm9ybShmaWx0ZXIuZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKGZpbHRlci5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woZmlsdGVyLmtleSwgY29udHJvbCk7XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCkge1xuICAgIGlmICh0aGlzLmxhc3RBcHBsaWVkRGF0YSkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLnNldFZhbHVlKHRoaXMubGFzdEFwcGxpZWREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhckZvcm1WYWx1ZXMoKTtcbiAgICB9XG4gICAgLy8gRW1pdCB0aGUgY2xvc2UgZXZlbnQgdXNpbmcgdGhlIHNpZ25hbCBvdXRwdXRcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCkge1xuICAgIGlmICh0aGlzLmZpbHRlckZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIFxuICAgIHRoaXMubGFzdEFwcGxpZWREYXRhID0geyAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUgfTtcbiAgICAvLyBFbWl0IHRoZSBhcHBseSBldmVudCB3aXRoIHRoZSBmaWx0ZXIgZGF0YSB1c2luZyB0aGUgc2lnbmFsIG91dHB1dFxuICAgIHRoaXMub25BcHBseS5lbWl0KHtcbiAgICAgIGZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRm9ybS52YWx1ZSxcbiAgICAgIGZpbHRlckNvdW50OiB0aGlzLmZpbHRlckNvdW50KClcbiAgICB9KTtcbiAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdChldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykge1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYgKGZpbHRlci5vbkNoYW5nZSkge1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZygpLCB0aGlzLmZpbHRlckZvcm0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykge1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYgKHR5cGVvZiBldmVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zZXQoe1xuICAgICAgICBzdGFydERhdGU6IGV2ZW50LnN0YXJ0RGF0ZSxcbiAgICAgICAgZW5kRGF0ZTogZXZlbnQuZW5kRGF0ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNoZWNrYm94KGV2ZW50OiBhbnksIGZpbHRlcktleTogc3RyaW5nLCBjaGVja2JveFZhbHVlOiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWVzID0gdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnZhbHVlO1xuICAgIGlmIChldmVudC52YWx1ZSkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKFsuLi5jdXJyZW50VmFsdWVzLCBjaGVja2JveFZhbHVlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShjdXJyZW50VmFsdWVzLmZpbHRlcigodmFsdWU6IHN0cmluZykgPT4gdmFsdWUgIT09IGNoZWNrYm94VmFsdWUpKTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5vbkNoYW5nZSkge1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZygpLCB0aGlzLmZpbHRlckZvcm0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRm9ybVZhbHVlcygpIHtcbiAgICBjb25zdCByZXNldFZhbHVlczogYW55ID0ge307XG4gICAgdGhpcy5jb25maWcoKS5mb3JFYWNoKChmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKSA9PiB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlOiBhbnkgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlIHx8IG51bGw7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSB8fCBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlIHx8IHsgbWluOiBudWxsLCBtYXg6IG51bGwgfTtcbiAgICAgIH1cbiAgICAgIHJlc2V0VmFsdWVzW2ZpbHRlci5rZXldID0gZGVmYXVsdFZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyRm9ybS5wYXRjaFZhbHVlKHJlc2V0VmFsdWVzKTtcbiAgfVxuXG4gIHJlc2V0RmlsdGVycygpIHtcbiAgICB0aGlzLmNsZWFyRm9ybVZhbHVlcygpO1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gIH1cblxuICBzZXRGaWx0ZXJWYWx1ZShjb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10pIHtcbiAgICBsZXQgYW55VmFsdWVTZXQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBjb25maWcpIHtcbiAgICAgIGlmIChmaWx0ZXI/LnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS5zZXRWYWx1ZShmaWx0ZXIuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGFueVZhbHVlU2V0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFueVZhbHVlU2V0ICYmIHRoaXMuZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXMoKSkge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImZpbHRlci1wYW5lbC1jb250YWluZXJcIiAqbmdJZj1cInNob3coKVwiIEBzbGlkZUZyb21SaWdodD5cbiAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRlclwiPlxuICAgICAgPHNwYW4+RmlsdGVyczwvc3Bhbj5cbiAgICAgIDxzdmcgY2xhc3M9XCJjbG9zZS1pY29uXCIgKGNsaWNrKT1cImNsb3NlUGFuZWwoKVwiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIHZpZXdCb3g9XCIwIDAgMjUgMjVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8ZyBpZD1cImljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCI+XG4gICAgICAgICAgICAgIDxwYXRoIGlkPVwiVW5pb25cIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNOC42MDQ2OCA2LjY0MzU1QzguMDkwMzYgNi4xMjkyMyA3LjI1NjQ5IDYuMTI5MjMgNi43NDIxOCA2LjY0MzU1QzYuMjI3ODcgNy4xNTc4NiA2LjIyNzg3IDcuOTkxNzMgNi43NDIxOCA4LjUwNjA0TDEwLjQ5MzggMTIuMjU3Nkw2Ljc0MzEgMTYuMDA4M0M2LjIyODc5IDE2LjUyMjYgNi4yMjg3OSAxNy4zNTY0IDYuNzQzMSAxNy44NzA4QzcuMjU3NDIgMTguMzg1MSA4LjA5MTI5IDE4LjM4NTEgOC42MDU2MCAxNy44NzA4TDEyLjM1NjIgMTQuMTIwMUwxNi4xMDY4IDE3Ljg3MDdDMTYuNjIxMSAxOC4zODUwIDE3LjQ1NTAgMTguMzg1MCAxNy45NjkzIDE3Ljg3MDdDMTguNDgzNiAxNy4zNTY0IDE4LjQ4MzYgMTYuNTIyNSAxNy45NjkzIDE2LjAwODJMMTQuMjE4NyAxMi4yNTc2TDE3Ljk3MDIgOC41MDYxM0MxOC40ODQ1IDcuOTkxODEgMTguNDg0NSA3LjE1Nzk0IDE3Ljk3MDIgNi42NDM2M0MxNy40NTU5IDYuMTI5MzIgMTYuNjIyMCA2LjEyOTMyIDE2LjEwNzcgNi42NDM2M0wxMi4zNTYyIDEwLjM5NTFMOC42MDQ2OCA2LjY0MzU1WlwiIGZpbGw9XCIjMTgxRjMzXCIgLz5cbiAgICAgICAgICA8L2c+XG4gICAgICA8L3N2Zz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZGl2aWRlciBmaXJzdFwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXJzXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgY29uZmlnKCk7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJcIiAqbmdJZj1cIiFmaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLXRpdGxlXCI+e3tmaWx0ZXIudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gY2xhc3M9XCJuby1wYWRkaW5nXCIgW2xhYmVsXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0J1wiIFtzZWxlY3RlZEl0ZW1zXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlXCIgKG9uQ2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtlbmFibGVTZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlQXBwbHlCdXR0b25dPVwiZmFsc2VcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI0NHB4XCI+PC9taXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1pcy1kcm9wZG93biBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI0NHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW3NlbGVjdGVkSXRlbV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCdcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyLm9wdGlvbnNcIiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWlzLWNoZWNrYm94IFt0eXBlXT1cIidEZWZhdWx0J1wiIFtjaGVja2VkXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlPy5pbmNsdWRlcyhvcHRpb24udmFsdWUpXCIgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUNoZWNrYm94KCRldmVudCwgZmlsdGVyLmtleSwgb3B0aW9uLnZhbHVlLCBmaWx0ZXIpXCI+PC9taXMtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIj57e29wdGlvbi5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAge3tmaWx0ZXIucGxhY2Vob2xkZXJ9fVxuICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNUekRwIG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgY2xhc3M9XCJtaXMtaW5wdXRcIiBbZHBDb25maWddPVwiZmlsdGVyLmRhdGVwaWNrZXJDb25maWdcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgPyBmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZSA6IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpXCIgW3ZhbHVlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlID8gZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgOiAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKVwiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbc2VsZWN0ZWREYXRlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlXCIgW3Bvc2l0aW9uWF09XCInZW5kJ1wiIFtvZmZzZXRYXT1cIi0xMFwiPlxuICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUmFuZ2VQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc1R6RHJwIG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtaXMtaW5wdXRcIiByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICYmICFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZSkgPyAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKSA6IGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5lbmREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIighZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGUpID8gKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JykgOiBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICsgJyAtICcgKyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZVwiIFtwb3NpdGlvblhdPVwiJ3N0YXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvblldPVwiJ3RvcCdcIiBbc2VsZWN0ZWREYXRlc109XCJkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKClcIiAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlUmFuZ2VQaWNrZXJDb25maWdcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICd0ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzSW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzBdPy5sYWJlbCB8fCAnTWluJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzFdPy5sYWJlbCB8fCAnTWF4JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZmlsdGVyRm9ybS5nZXQ/LihmaWx0ZXIua2V5KT8uZ2V0KCdtaW4nKT8udmFsdWUgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXJcIiAqbmdJZj1cIiFsYXN0XCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidDbGVhciBBbGwnXCIgW3NpemVdPVwiJ1NtYWxsJ1wiIFt0eXBlXT1cIidUZXh0J1wiIChjbGljayk9XCJyZXNldEZpbHRlcnMoKVwiPjwvbWlzLWJ1dHRvbj5cbiAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidBcHBseSdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1NvbGlkJ1wiIChjbGljayk9XCJhcHBseUZpbHRlcnMoKVwiIFtkaXNhYmxlZF09XCJmaWx0ZXJGb3JtLmludmFsaWRcIj48L21pcy1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==