mis-crystal-design-system 18.0.21 → 18.0.22-test-dynamic-theme

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 (114) hide show
  1. package/button/button.directive.scss +13 -13
  2. package/drawer/drawer.scss +1 -1
  3. package/dynamic-theme/branding.types.d.ts +84 -0
  4. package/dynamic-theme/dynamic-theme.module.d.ts +9 -0
  5. package/dynamic-theme/dynamic-theme.service.d.ts +89 -0
  6. package/dynamic-theme/index.d.ts +1 -0
  7. package/dynamic-theme/public_api.d.ts +3 -0
  8. package/esm2022/action-list/action-list.component.mjs +2 -2
  9. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +2 -2
  10. package/esm2022/button/button.component.mjs +2 -2
  11. package/esm2022/checkbox/checkbox.component.mjs +2 -2
  12. package/esm2022/chip/chip.component.mjs +2 -2
  13. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +2 -2
  14. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +2 -2
  15. package/esm2022/dropdown/dropdown.component.mjs +7 -7
  16. package/esm2022/dynamic-form/dynamic-form.component.mjs +2 -2
  17. package/esm2022/dynamic-theme/branding.types.mjs +93 -0
  18. package/esm2022/dynamic-theme/dynamic-theme.module.mjs +25 -0
  19. package/esm2022/dynamic-theme/dynamic-theme.service.mjs +193 -0
  20. package/esm2022/dynamic-theme/index.mjs +2 -0
  21. package/esm2022/dynamic-theme/mis-crystal-design-system-dynamic-theme.mjs +5 -0
  22. package/esm2022/dynamic-theme/public_api.mjs +4 -0
  23. package/esm2022/fab/fab.component.mjs +3 -3
  24. package/esm2022/filter/filter-panel/filter-panel.component.mjs +3 -3
  25. package/esm2022/input/mis-input.component.mjs +2 -2
  26. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +2 -2
  27. package/esm2022/loader/loader.component.mjs +2 -2
  28. package/esm2022/mobile-filter/mobile-filter.component.mjs +2 -2
  29. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +2 -2
  30. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +2 -2
  31. package/esm2022/phone-input/phone-input.component.mjs +2 -2
  32. package/esm2022/public-api.mjs +1 -1
  33. package/esm2022/radio-button/radio-button.component.mjs +2 -2
  34. package/esm2022/ske-loader/ske-loader.component.mjs +2 -2
  35. package/esm2022/slider/slider.component.mjs +2 -2
  36. package/esm2022/snackbar/snackbar/snackbar.component.mjs +2 -2
  37. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +2 -2
  38. package/esm2022/star-rating/star-rating.component.mjs +2 -2
  39. package/esm2022/switch/switch.component.mjs +2 -2
  40. package/esm2022/table/actions-cell/actions-cell.component.mjs +2 -2
  41. package/esm2022/table/filter/filter.component.mjs +2 -2
  42. package/esm2022/table/sub-table/sub-table.component.mjs +2 -2
  43. package/esm2022/table/table.component.mjs +2 -2
  44. package/esm2022/timepicker/timepicker.component.mjs +2 -2
  45. package/esm2022/toast/toast.component.mjs +3 -3
  46. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +2 -2
  47. package/fesm2022/mis-crystal-design-system-action-list.mjs +2 -2
  48. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
  49. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +2 -2
  50. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  51. package/fesm2022/mis-crystal-design-system-button.mjs +2 -2
  52. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
  53. package/fesm2022/mis-crystal-design-system-checkbox.mjs +2 -2
  54. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
  55. package/fesm2022/mis-crystal-design-system-chip.mjs +2 -2
  56. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
  57. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +2 -2
  58. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  59. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +2 -2
  60. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  61. package/fesm2022/mis-crystal-design-system-dropdown.mjs +6 -6
  62. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  63. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +2 -2
  64. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  65. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs +313 -0
  66. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs.map +1 -0
  67. package/fesm2022/mis-crystal-design-system-fab.mjs +2 -2
  68. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
  69. package/fesm2022/mis-crystal-design-system-filter.mjs +2 -2
  70. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
  71. package/fesm2022/mis-crystal-design-system-input-stepper.mjs +2 -2
  72. package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  73. package/fesm2022/mis-crystal-design-system-input.mjs +2 -2
  74. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  75. package/fesm2022/mis-crystal-design-system-loader.mjs +2 -2
  76. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  77. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +2 -2
  78. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
  79. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +2 -2
  80. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  81. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +2 -2
  82. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
  83. package/fesm2022/mis-crystal-design-system-phone-input.mjs +2 -2
  84. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
  85. package/fesm2022/mis-crystal-design-system-radio-button.mjs +2 -2
  86. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  87. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +2 -2
  88. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
  89. package/fesm2022/mis-crystal-design-system-slider.mjs +2 -2
  90. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
  91. package/fesm2022/mis-crystal-design-system-snackbar.mjs +2 -2
  92. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
  93. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +2 -2
  94. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  95. package/fesm2022/mis-crystal-design-system-star-rating.mjs +2 -2
  96. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
  97. package/fesm2022/mis-crystal-design-system-switch.mjs +2 -2
  98. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
  99. package/fesm2022/mis-crystal-design-system-table.mjs +8 -8
  100. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  101. package/fesm2022/mis-crystal-design-system-timepicker.mjs +2 -2
  102. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
  103. package/fesm2022/mis-crystal-design-system-toast.mjs +2 -2
  104. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  105. package/fesm2022/mis-crystal-design-system-tooltip.mjs +2 -2
  106. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
  107. package/fesm2022/mis-crystal-design-system.mjs.map +1 -1
  108. package/input/mis-input.component.scss +17 -17
  109. package/modal/modal.scss +1 -1
  110. package/package.json +7 -1
  111. package/styles/mis-dynamic-theme-color-var.scss +324 -0
  112. package/styles/mis-icons.scss +56 -56
  113. package/styles/mis-old-icon-styles.scss +21 -21
  114. package/table/filter/filter.component.d.ts +1 -1
@@ -0,0 +1,25 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DynamicThemeService } from './dynamic-theme.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./dynamic-theme.service";
5
+ export class DynamicThemeModule {
6
+ constructor(themeService) {
7
+ this.themeService = themeService;
8
+ // Initialize the theme service when module is loaded
9
+ // This ensures the default theme is applied
10
+ }
11
+ static { this.ɵfac = function DynamicThemeModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicThemeModule)(i0.ɵɵinject(i1.DynamicThemeService)); }; }
12
+ static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: DynamicThemeModule }); }
13
+ static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
14
+ DynamicThemeService
15
+ ] }); }
16
+ }
17
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicThemeModule, [{
18
+ type: NgModule,
19
+ args: [{
20
+ providers: [
21
+ DynamicThemeService
22
+ ]
23
+ }]
24
+ }], () => [{ type: i1.DynamicThemeService }], null); })();
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10aGVtZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9keW5hbWljLXRoZW1lL2R5bmFtaWMtdGhlbWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQU85RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNuRCxxREFBcUQ7UUFDckQsNENBQTRDO0lBQzlDLENBQUM7bUhBSlUsa0JBQWtCO21FQUFsQixrQkFBa0I7d0VBSmxCO1lBQ1QsbUJBQW1CO1NBQ3BCOztpRkFFVSxrQkFBa0I7Y0FMOUIsUUFBUTtlQUFDO2dCQUNSLFNBQVMsRUFBRTtvQkFDVCxtQkFBbUI7aUJBQ3BCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY1RoZW1lU2VydmljZSB9IGZyb20gJy4vZHluYW1pYy10aGVtZS5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgRHluYW1pY1RoZW1lU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNUaGVtZU1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBEeW5hbWljVGhlbWVTZXJ2aWNlKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGhlbWUgc2VydmljZSB3aGVuIG1vZHVsZSBpcyBsb2FkZWRcbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIGRlZmF1bHQgdGhlbWUgaXMgYXBwbGllZFxuICB9XG59XG4iXX0=
@@ -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
@@ -98,7 +98,7 @@ export class FabComponent {
98
98
  i0.ɵɵtemplate(0, FabComponent_div_0_Template, 5, 5, "div", 0);
99
99
  } if (rf & 2) {
100
100
  i0.ɵɵproperty("ngIf", ctx.show);
101
- } }, 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: [
101
+ } }, 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:var(--text-primary);border-radius:4px;color:var(--bg-primary);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: [
102
102
  trigger("slideUpFab", [
103
103
  transition(":enter", [
104
104
  style({ transform: "translateY(50px)", opacity: 0 }),
@@ -130,7 +130,7 @@ export class FabComponent {
130
130
  transition("rotated => default", animate("300ms ease-out")),
131
131
  transition("default => rotated", animate("200ms ease-in"))
132
132
  ])
133
- ], 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 ? options.backgroundColorOpened : options.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"] }]
133
+ ], 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 ? options.backgroundColorOpened : options.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:var(--text-primary);border-radius:4px;color:var(--bg-primary);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"] }]
134
134
  }], () => [{ type: i0.ElementRef }], { show: [{
135
135
  type: Input
136
136
  }], options: [{
@@ -142,4 +142,4 @@ export class FabComponent {
142
142
  args: ["document:click", ["$event"]]
143
143
  }] }); })();
144
144
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FabComponent, { className: "FabComponent" }); })();
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZhYi9mYWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZmFiL2ZhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBRWQsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztJQ0EzRSwrQkFBNEM7SUFDMUMsWUFDRjtJQUFBLGlCQUFNOzs7SUFESixjQUNGO0lBREUsOENBQ0Y7Ozs7SUFIRiw4QkFBb0c7SUFBMUIsNE1BQVMseUJBQWUsS0FBQztJQUNqRywrRUFBNEM7SUFHNUMsK0JBS0M7SUFDQywwQkFBeUM7SUFFN0MsQUFERSxpQkFBTSxFQUNGOzs7SUFYRSxjQUFnQjtJQUFoQixvQ0FBZ0I7SUFLcEIsY0FFRTtJQUZGLDBGQUVFO0lBRUcsY0FBaUI7SUFBakIsb0RBQWlCOzs7SUFYNUIsOEJBQWtEO0lBQ2hELHlFQUFvRztJQWF0RyxpQkFBTTs7O0lBZGdDLHVDQUFXO0lBQ1IsY0FBb0I7SUFBcEIsZ0RBQW9COzs7O0lBRi9ELDhCQUFzQztJQUNwQyxtRUFBa0Q7SUFlbEQsOEJBTUM7SUFEQyxxS0FBUyxrQkFBVyxLQUFDOztJQUVyQiw4QkFRQztJQUNDLDBCQUtFO0lBR1IsQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRjs7O0lBdkNvQixjQUFZO0lBQVosb0NBQVk7SUFpQmxDLGNBRUU7SUFGRixpSkFFRTtJQUlBLGNBQWdEO0lBQWhELHFFQUFnRDs7QURpQnRELE1BQU0sT0FBTyxZQUFZO0lBT3ZCLFlBQW9CLElB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LE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDeEcsQ0FBQztvQkFDRixPQUFPLENBQUMsY0FBYyxFQUFFO3dCQUN0QixLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO3dCQUNuRCxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO3dCQUN2RCxVQUFVLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7d0JBQzNELFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7cUJBQzNELENBQUM7aUJBQ0g7MkNBR1EsSUFBSTtrQkFBWixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csS0FBSztrQkFBYixLQUFLO1lBT04sUUFBUTtrQkFEUCxZQUFZO21CQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDOztrRkFUL0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAZm9ybWF0ICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdHJpZ2dlciwgdHJhbnNpdGlvbiwgc3R5bGUsIGFuaW1hdGUsIHN0YXRlIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcblxuZXhwb3J0IHR5cGUgRmFiT3B0aW9ucyA9IHtcbiAgYmFja2dyb3VuZENvbG9yQ2xvc2VkPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3JPcGVuZWQ/OiBzdHJpbmc7XG4gIHNpemU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBGYWJJdGVtID0ge1xuICBsYWJlbD86IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBjbGljaz86ICgpID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIEZhYkl0ZW1zID0gRmFiSXRlbVtdO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWZhYlwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2ZhYi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZmFiLmNvbXBvbmVudC5zY3NzXCJdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInNsaWRlVXBGYWJcIiwgW1xuICAgICAgdHJhbnNpdGlvbihcIjplbnRlclwiLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoNTBweClcIiwgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgYW5pbWF0ZShcIjMwMG1zIGVhc2Utb3V0XCIsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoMHB4KVwiLCBvcGFjaXR5OiAxIH0pKVxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKFwiOmxlYXZlXCIsIFthbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIiwgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSg3MHB4KVwiLCBvcGFjaXR5OiAwIH0pKV0pXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInJvdGF0ZUJ1dHRvblwiLCBbXG4gICAgICBzdGF0ZShcImRlZmF1bHRcIiwgc3R5bGUoeyB0cmFuc2Zvcm06IFwicm90YXRlKDApXCIgfSkpLFxuICAgICAgc3RhdGUoXCJyb3RhdGVkXCIsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInJvdGF0ZSg0NWRlZylcIiB9KSksXG4gICAgICB0cmFuc2l0aW9uKFwicm90YXRlZCA9PiBkZWZhdWx0XCIsIGFuaW1hdGUoXCIzMDBtcyBlYXNlLW91dFwiKSksXG4gICAgICB0cmFuc2l0aW9uKFwiZGVmYXVsdCA9PiByb3RhdGVkXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluXCIpKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmFiQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzaG93OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IEZhYk9wdGlvbnMgPSB7fTtcbiAgQElucHV0KCkgaXRlbXM6IEZhYkl0ZW1zID0gW107XG5cbiAgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiLCBbXCIkZXZlbnRcIl0pXG4gIGNsaWNrb3V0KGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLmNsb3NlRmFiKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgc2l6ZTogNTYsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3JDbG9zZWQ6IFwiIzA5MzdCMlwiLFxuICAgICAgYmFja2dyb3VuZENvbG9yT3BlbmVkOiBcIiMzYTVmYzFcIixcbiAgICAgIC4uLnRoaXMub3B0aW9uc1xuICAgIH07XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgY2xpY2tJdGVtKGl0ZW06IEZhYkl0ZW0pIHtcbiAgICB0aGlzLmNsb3NlRmFiKCk7XG4gICAgaXRlbS5jbGljaygpO1xuICB9XG5cbiAgY2xvc2VGYWIoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHRvb2dsZUZhYigpIHtcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZhYi13cmFwcGVyXCIgKm5nSWY9XCJzaG93XCI+XG4gIDxkaXYgY2xhc3M9XCJmYWItaXRlbXNcIiAqbmdJZj1cImlzT3BlblwiIEBzbGlkZVVwRmFiPlxuICAgIDxkaXYgY2xhc3M9XCJmYWItaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zLnJldmVyc2UoKTsgbGV0IGkgPSBpbmRleFwiIChjbGljayk9XCJjbGlja0l0ZW0oaXRlbSlcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmxhYmVsXCIgY2xhc3M9XCJmYWItdG9vbHRpcFwiPlxuICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmYWItYnV0dG9uXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaXRlbS5iYWNrZ3JvdW5kQ29sb3IgfHwgJyMwOTM3QjInXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJhZGQtaW1nXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmFiLWNvbnRhaW5lclwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBpc09wZW4gPyBvcHRpb25zLmJhY2tncm91bmRDb2xvck9wZW5lZCA6IG9wdGlvbnMuYmFja2dyb3VuZENvbG9yQ2xvc2VkXG4gICAgfVwiXG4gICAgKGNsaWNrKT1cInRvb2dsZUZhYigpXCJcbiAgPlxuICAgIDxzdmdcbiAgICAgIFtAcm90YXRlQnV0dG9uXT1cImlzT3BlbiA/ICdyb3RhdGVkJyA6ICdkZWZhdWx0J1wiXG4gICAgICBjbGFzcz1cImFkZC1pbWdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xMy4xNDI0IDUuMTU2MDdDMTMuMTQyNCA0LjUxNzU5IDEyLjYzMTMgNCAxMi4wMDA5IDRDMTEuMzcwNCA0IDEwLjg1OTQgNC41MTc1OSAxMC44NTk0IDUuMTU2MDdWMTAuODQyMUg1LjE0MTQ5QzQuNTExMDYgMTAuODQyMSA0IDExLjM1OTcgNCAxMS45OTgyQzQgMTIuNjM2NyA0LjUxMTA2IDEzLjE1NDMgNS4xNDE0OSAxMy4xNTQzSDEwLjg1OTRWMTguODQzOUMxMC44NTk0IDE5LjQ4MjQgMTEuMzcwNCAyMCAxMi4wMDA5IDIwQzEyLjYzMTMgMjAgMTMuMTQyNCAxOS40ODI0IDEzLjE0MjQgMTguODQzOVYxMy4xNTQzSDE4Ljg1ODVDMTkuNDg4OSAxMy4xNTQzIDIwIDEyLjYzNjcgMjAgMTEuOTk4MkMyMCAxMS4zNTk3IDE5LjQ4ODkgMTAuODQyMSAxOC44NTg1IDEwLjg0MjFIMTMuMTQyNFY1LjE1NjA3WlwiXG4gICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZhYi9mYWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZmFiL2ZhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBRWQsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztJQ0EzRSwrQkFBNEM7SUFDMUMsWUFDRjtJQUFBLGlCQUFNOzs7SUFESixjQUNGO0lBREUsOENBQ0Y7Ozs7SUFIRiw4QkFBb0c7SUFBMUIsNE1BQVMseUJBQWUsS0FBQztJQUNqRywrRUFBNEM7SUFHNUMsK0JBS0M7SUFDQywwQkFBeUM7SUFFN0MsQUFERSxpQkFBTSxFQUNGOzs7SUFYRSxjQUFnQjtJQUFoQixvQ0FBZ0I7SUFLcEIsY0FFRTtJQUZGLDBGQUVFO0lBRUcsY0FBaUI7SUFBakIsb0RBQWlCOzs7SUFYNUIsOEJBQWtEO0lBQ2hELHlFQUFvRztJQWF0RyxpQkFBTTs7O0lBZGdDLHVDQUFXO0lBQ1IsY0FBb0I7SUFBcEIsZ0RBQW9COzs7O0lBRi9ELDhCQUFzQztJQUNwQyxtRUFBa0Q7SUFlbEQsOEJBTUM7SUFEQyxxS0FBUyxrQkFBVyxLQUFDOztJQUVyQiw4QkFRQztJQUNDLDBCQUtFO0lBR1IsQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRjs7O0lBdkNvQixjQUFZO0lBQVosb0NBQVk7SUFpQmxDLGNBRUU7SUFGRixpSkFFRTtJQUlBLGNBQWdEO0lBQWhELHFFQUFnRDs7QURpQnRELE1BQU0sT0FBTyxZQUFZO0lBT3ZCLFlBQW9CLElB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LE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDeEcsQ0FBQztvQkFDRixPQUFPLENBQUMsY0FBYyxFQUFFO3dCQUN0QixLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO3dCQUNuRCxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO3dCQUN2RCxVQUFVLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7d0JBQzNELFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7cUJBQzNELENBQUM7aUJBQ0g7MkNBR1EsSUFBSTtrQkFBWixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csS0FBSztrQkFBYixLQUFLO1lBT04sUUFBUTtrQkFEUCxZQUFZO21CQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDOztrRkFUL0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAZm9ybWF0ICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdHJpZ2dlciwgdHJhbnNpdGlvbiwgc3R5bGUsIGFuaW1hdGUsIHN0YXRlIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcblxuZXhwb3J0IHR5cGUgRmFiT3B0aW9ucyA9IHtcbiAgYmFja2dyb3VuZENvbG9yQ2xvc2VkPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3JPcGVuZWQ/OiBzdHJpbmc7XG4gIHNpemU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBGYWJJdGVtID0ge1xuICBsYWJlbD86IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBjbGljaz86ICgpID0+IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIEZhYkl0ZW1zID0gRmFiSXRlbVtdO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWZhYlwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2ZhYi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZmFiLmNvbXBvbmVudC5zY3NzXCJdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInNsaWRlVXBGYWJcIiwgW1xuICAgICAgdHJhbnNpdGlvbihcIjplbnRlclwiLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoNTBweClcIiwgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgYW5pbWF0ZShcIjMwMG1zIGVhc2Utb3V0XCIsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoMHB4KVwiLCBvcGFjaXR5OiAxIH0pKVxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKFwiOmxlYXZlXCIsIFthbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIiwgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSg3MHB4KVwiLCBvcGFjaXR5OiAwIH0pKV0pXG4gICAgXSksXG4gICAgdHJpZ2dlcihcInJvdGF0ZUJ1dHRvblwiLCBbXG4gICAgICBzdGF0ZShcImRlZmF1bHRcIiwgc3R5bGUoeyB0cmFuc2Zvcm06IFwicm90YXRlKDApXCIgfSkpLFxuICAgICAgc3RhdGUoXCJyb3RhdGVkXCIsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInJvdGF0ZSg0NWRlZylcIiB9KSksXG4gICAgICB0cmFuc2l0aW9uKFwicm90YXRlZCA9PiBkZWZhdWx0XCIsIGFuaW1hdGUoXCIzMDBtcyBlYXNlLW91dFwiKSksXG4gICAgICB0cmFuc2l0aW9uKFwiZGVmYXVsdCA9PiByb3RhdGVkXCIsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluXCIpKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmFiQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzaG93OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IEZhYk9wdGlvbnMgPSB7fTtcbiAgQElucHV0KCkgaXRlbXM6IEZhYkl0ZW1zID0gW107XG5cbiAgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiLCBbXCIkZXZlbnRcIl0pXG4gIGNsaWNrb3V0KGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLmNsb3NlRmFiKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgc2l6ZTogNTYsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3JDbG9zZWQ6IFwiIzA5MzdCMlwiLFxuICAgICAgYmFja2dyb3VuZENvbG9yT3BlbmVkOiBcIiMzYTVmYzFcIixcbiAgICAgIC4uLnRoaXMub3B0aW9uc1xuICAgIH07XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgY2xpY2tJdGVtKGl0ZW06IEZhYkl0ZW0pIHtcbiAgICB0aGlzLmNsb3NlRmFiKCk7XG4gICAgaXRlbS5jbGljaygpO1xuICB9XG5cbiAgY2xvc2VGYWIoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHRvb2dsZUZhYigpIHtcbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZhYi13cmFwcGVyXCIgKm5nSWY9XCJzaG93XCI+XG4gIDxkaXYgY2xhc3M9XCJmYWItaXRlbXNcIiAqbmdJZj1cImlzT3BlblwiIEBzbGlkZVVwRmFiPlxuICAgIDxkaXYgY2xhc3M9XCJmYWItaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zLnJldmVyc2UoKTsgbGV0IGkgPSBpbmRleFwiIChjbGljayk9XCJjbGlja0l0ZW0oaXRlbSlcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmxhYmVsXCIgY2xhc3M9XCJmYWItdG9vbHRpcFwiPlxuICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmYWItYnV0dG9uXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaXRlbS5iYWNrZ3JvdW5kQ29sb3IgfHwgJyMwOTM3QjInXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJhZGQtaW1nXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZmFiLWNvbnRhaW5lclwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBpc09wZW4gPyBvcHRpb25zLmJhY2tncm91bmRDb2xvck9wZW5lZCA6IG9wdGlvbnMuYmFja2dyb3VuZENvbG9yQ2xvc2VkXG4gICAgfVwiXG4gICAgKGNsaWNrKT1cInRvb2dsZUZhYigpXCJcbiAgPlxuICAgIDxzdmdcbiAgICAgIFtAcm90YXRlQnV0dG9uXT1cImlzT3BlbiA/ICdyb3RhdGVkJyA6ICdkZWZhdWx0J1wiXG4gICAgICBjbGFzcz1cImFkZC1pbWdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xMy4xNDI0IDUuMTU2MDdDMTMuMTQyNCA0LjUxNzU5IDEyLjYzMTMgNCAxMi4wMDA5IDRDMTEuMzcwNCA0IDEwLjg1OTQgNC41MTc1OSAxMC44NTk0IDUuMTU2MDdWMTAuODQyMUg1LjE0MTQ5QzQuNTExMDYgMTAuODQyMSA0IDExLjM1OTcgNCAxMS45OTgyQzQgMTIuNjM2NyA0LjUxMTA2IDEzLjE1NDMgNS4xNDE0OSAxMy4xNTQzSDEwLjg1OTRWMTguODQzOUMxMC44NTk0IDE5LjQ4MjQgMTEuMzcwNCAyMCAxMi4wMDA5IDIwQzEyLjYzMTMgMjAgMTMuMTQyNCAxOS40ODI0IDEzLjE0MjQgMTguODQzOVYxMy4xNTQzSDE4Ljg1ODVDMTkuNDg4OSAxMy4xNTQzIDIwIDEyLjYzNjcgMjAgMTEuOTk4MkMyMCAxMS4zNTk3IDE5LjQ4ODkgMTAuODQyMSAxOC44NTg1IDEwLjg0MjFIMTMuMTQyNFY1LjE1NjA3WlwiXG4gICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -376,11 +376,11 @@ export class FilterPanelComponent {
376
376
  i0.ɵɵtemplate(0, FilterPanelComponent_div_0_Template, 13, 10, "div", 0);
377
377
  } if (rf & 2) {
378
378
  i0.ɵɵproperty("ngIf", ctx.show);
379
- } }, 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] } }); }
379
+ } }, 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:var(--bg-primary);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)}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]:active{background:var(--border-primary)}.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);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)}.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);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);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);background-color:var(--brand-error-lightest)}"], data: { animation: [slideFromRight] } }); }
380
380
  }
381
381
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterPanelComponent, [{
382
382
  type: Component,
383
- 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.6056 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.385 17.455 18.385 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.622 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\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\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 \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\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\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\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\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\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 \n\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", 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"] }]
383
+ 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.6056 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.385 17.455 18.385 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.622 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\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\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 \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\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\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\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\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\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 \n\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", styles: [".filter-panel-container{display:flex;flex-direction:column;height:100%;max-width:100%;min-width:20rem;position:absolute;right:0;background:var(--bg-primary);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)}.filter-panel-container .panel-header .close-icon:active{background:var(--border-primary)}.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);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)}.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);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);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);background-color:var(--brand-error-lightest)}\n"] }]
384
384
  }], () => [{ type: i1.HasValuePipe }], { show: [{
385
385
  type: Input
386
386
  }], onClose: [{
@@ -393,4 +393,4 @@ export class FilterPanelComponent {
393
393
  type: Input
394
394
  }] }); })();
395
395
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterPanelComponent, { className: "FilterPanelComponent" }); })();
396
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNleEMsNkJBQW9EO0lBRTVDLEFBREosK0JBQWdDLG9DQUc2QjtJQUZpRixxU0FBWSxxREFBd0MsS0FBQztJQUduTSxBQUQ2RCxpQkFBNEIsRUFDbkY7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRG9OLEFBQXhCLEFBQXpHLEFBQXpDLHlEQUF3Qyw2REFBbUQsMkJBQThFLHVCQUF1QiwyQkFDaE4seUJBQXlCLDBCQUMxQjs7OztJQUlyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRW9GO0lBQXhHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7SUFIWSxlQUF1QjtJQUN5QixBQUR4QixBQUF4Qix3Q0FBdUIsdUJBQXVCLDREQUNtRDs7OztJQVEzRyxBQURKLCtCQUFzRSx1QkFDNkc7SUFBekUsZ1VBQWUsd0VBQXdELEtBQUM7SUFBQyxpQkFBZTtJQUM5TCxnQ0FBNkI7SUFBQSxZQUFnQjtJQUNqRCxBQURpRCxpQkFBTyxFQUNs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aUU7O1lBQTVCLCtCQUFVO2dnSUQrQmpDLENBQUMsY0FBYyxDQUFDOztpRkFLakIsb0JBQW9CO2NBVGhDLFNBQVM7MkJBQ0Usa0JBQWtCLGNBR2hCLENBQUMsY0FBYyxDQUFDOzZDQU9uQixJQUFJO2tCQUFaLEtBQUs7WUFDSSxPQUFPO2tCQUFoQixNQUFNO1lBQ0csT0FBTztrQkFBaEIsTUFBTTtZQUNFLE1BQU07a0JBQWQsS0FBSztZQUNHLGdDQUFnQztrQkFBeEMsS0FBSzs7a0ZBTkssb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzbGlkZUZyb21SaWdodCB9IGZyb20gJy4uL2FuaW1hdGlvbnMvc2xpZGVGcm9tUmlnaHQnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElEYXRlUGlja2VyQ29uZmlnIH0gZnJvbSAnbWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9kYXRlcGlja2VyX3YyJztcbmltcG9ydCB7IElSU2VsZWN0ZWREYXRlc0NvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vc3BlY2lmaWNkYXRlcGlja2VyJztcbmltcG9ydCB7IElEYXRlUGlja2VyQ29uZmlnIGFzIElEYXRlUmFuZ2VQaWNrZXJDb25maWcgfSBmcm9tIFwibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9kYXRlcmFuZ2VwaWNrZXJfdjJcIjtcbmltcG9ydCB7IEhhc1ZhbHVlUGlwZSB9IGZyb20gJy4uL2hhcy12YWx1ZS5waXBlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclBhbmVsQ29uZmlnIHtcbiAga2V5OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHR5cGU6ICdtdWx0aVNlbGVjdCcgfCAnc2VsZWN0JyB8ICdkYXRlUGlja2VyJyB8ICdkYXRlUmFuZ2VQaWNrZXInIHwgJ2NoZWNrYm94JyB8ICdyYWRpbycgfCAndGV4dCcgfCAnbnVtYmVyJyB8ICdyYW5nZSc7XG4gIG9wdGlvbnM/OiBBcnJheTx7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGRhdGE/OiBhbnlbXTtcbiAgfT47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBkYXRlUGlja2VyQ29uZmlnPzogSURhdGVQaWNrZXJDb25maWc7XG4gIGRhdGVSYW5nZVBpY2tlckNvbmZpZz86IElEYXRlUmFuZ2VQaWNrZXJDb25maWc7XG4gIG9uQ2hhbmdlPzogKGV2ZW50OiBhbnksIGNvbmZpZz86IEZpbHRlclBhbmVsQ29uZmlnW10sIGZvcm1WYWx1ZT86IGFueSkgPT4gdm9pZDtcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBzZWxlY3RlZFZhbHVlPzogYW55O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtaXMtZmlsdGVyLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbc2xpZGVGcm9tUmlnaHRdXG59KVxuXG5cblxuZXhwb3J0IGNsYXNzIEZpbHRlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhhc1ZhbHVlOiBIYXNWYWx1ZVBpcGUpe31cbiAgQElucHV0KCkgc2hvdzogYm9vbGVhbjtcbiAgQE91dHB1dCgpIG9uQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkFwcGx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBjb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10gPSBbXTtcbiAgQElucHV0KCkgZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsdGVyRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cChbXSk7XG4gIGxhc3RBcHBsaWVkRGF0YTogYW55O1xuXG4gIHJhbmdlTWluOiBudW1iZXI7XG4gIHJhbmdlTWF4OiBudW1iZXI7XG5cbiAgZGF0ZVJhbmdlU2VsZWN0ZWREYXRlczogSVJTZWxlY3RlZERhdGVzQ29uZmlnID0ge1xuICAgIHN0YXJ0RGF0ZTogJycsXG4gICAgZW5kRGF0ZTogJycsXG4gIH07XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplRm9ybUNvbnRyb2xzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYoY2hhbmdlcy5jb25maWcgJiYgIWNoYW5nZXMuY29uZmlnLmZpcnN0Q2hhbmdlKXtcbiAgICAgIHRoaXMuc2V0RmlsdGVyVmFsdWUodGhpcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemVGb3JtQ29udHJvbHMoKSB7XG4gICAgdGhpcy5jb25maWcuZm9yRWFjaCgoZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykgPT4ge1xuICAgICAgbGV0IGNvbnRyb2w6IGFueTtcbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgbWluOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgICAgbWF4OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWxpZGF0b3JzOiAoZ3JvdXA6IEZvcm1Hcm91cCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWluID0gZ3JvdXAuZ2V0KCdtaW4nKS52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IG1heCA9IGdyb3VwLmdldCgnbWF4JykudmFsdWU7XG4gICAgICAgICAgICBpZiAobWluICE9PSBudWxsICYmIG1heCAhPT0gbnVsbCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgcmFuZ2VFcnJvcjogJ01pbiB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG1heCB2YWx1ZScgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnIHx8IGZpbHRlci50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woW10pO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgfVxuICAgICAgaWYodGhpcy5oYXNWYWx1ZS50cmFuc2Zvcm0oZmlsdGVyLmRlZmF1bHRWYWx1ZSkpe1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKGZpbHRlci5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woZmlsdGVyLmtleSwgY29udHJvbCk7XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCl7XG4gICAgaWYodGhpcy5sYXN0QXBwbGllZERhdGEpe1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLnNldFZhbHVlKHRoaXMubGFzdEFwcGxpZWREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhckZvcm1WYWx1ZXMoKTtcbiAgICB9XG4gICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIGZpbHRlckNvdW50KCl7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB0aGlzLmNvbmZpZy5mb3JFYWNoKChmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKSA9PiB7XG4gICAgICBpZih0aGlzLmhhc1ZhbHVlLnRyYW5zZm9ybSh0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlKSl7XG4gICAgICAgIGlmKGZpbHRlci50eXBlID09PSAncmFuZ2UnICYmIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUubWluID09IG51bGwgJiYgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZS5tYXggPT0gbnVsbCl7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCl7XG4gICAgaWYgKHRoaXMuZmlsdGVyRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgXG4gICAgdGhpcy5sYXN0QXBwbGllZERhdGEgPSB7Li4udGhpcy5maWx0ZXJGb3JtLnZhbHVlfTtcbiAgICB0aGlzLm9uQXBwbHkuZW1pdCh7XG4gICAgICBmaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckZvcm0udmFsdWUsXG4gICAgICBmaWx0ZXJDb3VudDogdGhpcy5maWx0ZXJDb3VudCgpXG4gICAgfSk7XG4gICAgdGhpcy5zaG93ID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gIH1cblxuICBoYW5kbGVTZWxlY3QoZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpe1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYoZmlsdGVyLm9uQ2hhbmdlKXtcbiAgICAgIGZpbHRlci5vbkNoYW5nZShldmVudCwgdGhpcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyl7XG4gICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKGV2ZW50KTtcbiAgICBpZih0eXBlb2YgZXZlbnQgPT09ICdvYmplY3QnKXtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcyA9IHtcbiAgICAgICAgc3RhcnREYXRlOiBldmVudC5zdGFydERhdGUsXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXG4gICAgICB9O1xuICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS52YWx1ZSk7IFxuICAgfVxuICB9XG5cbiAgaGFuZGxlQ2hlY2tib3goZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGNoZWNrYm94VmFsdWU6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyl7XG4gICAgaWYoZXZlbnQudmFsdWUpe1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKFsuLi50aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkudmFsdWUsIGNoZWNrYm94VmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkudmFsdWU7XG4gICAgICB0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkuc2V0VmFsdWUoZmlsdGVyVmFsdWUuZmlsdGVyKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZSAhPT0gY2hlY2tib3hWYWx1ZSkpO1xuICAgIH1cbiAgICBpZihmaWx0ZXIub25DaGFuZ2Upe1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZywgdGhpcy5maWx0ZXJGb3JtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckZvcm1WYWx1ZXMoKXtcbiAgICBjb25zdCByZXNldFZhbHVlczogYW55ID0ge307XG4gICAgdGhpcy5jb25maWcuZm9yRWFjaCgoZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykgPT4ge1xuICAgICAgbGV0IGRlZmF1bHRWYWx1ZTogYW55ID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSB8fCBudWxsO1xuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnIHx8IGZpbHRlci50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgfHwgW107XG4gICAgICB9XG4gICAgICBpZihmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJyl7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgfHwgeyBtaW46IG51bGwsIG1heDogbnVsbCB9O1xuICAgICAgfVxuICAgICAgcmVzZXRWYWx1ZXNbZmlsdGVyLmtleV0gPSBkZWZhdWx0VmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUocmVzZXRWYWx1ZXMpO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuY2xlYXJGb3JtVmFsdWVzKCk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIHNldEZpbHRlclZhbHVlKGNvbmZpZzogRmlsdGVyUGFuZWxDb25maWdbXSl7XG4gICBsZXQgYW55VmFsdWVTZXQgPSBmYWxzZTtcbiAgIGZvcihjb25zdCBmaWx0ZXIgb2YgY29uZmlnKXtcbiAgICBpZihmaWx0ZXI/LnNlbGVjdGVkVmFsdWUpe1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS5zZXRWYWx1ZShmaWx0ZXIuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICBhbnlWYWx1ZVNldCA9IHRydWU7XG4gICAgfVxuICAgfVxuICAgaWYoYW55VmFsdWVTZXQgJiYgdGhpcy5lbWl0RmlsdGVyc0FmdGVyU2V0dGluZ05ld1ZhbHVlcyl7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLXBhbmVsLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvd1wiIEBzbGlkZUZyb21SaWdodD4gXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRlclwiPlxuICAgICAgICA8c3Bhbj5GaWx0ZXJzPC9zcGFuPlxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2xvc2UtaWNvblwiIChjbGljayk9XCJjbG9zZVBhbmVsKClcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8ZyBpZD1cImljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCI+XG4gICAgICAgICAgICA8cGF0aCBpZD1cIlVuaW9uXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTguNjA0NjggNi42NDM1NUM4LjA5MDM2IDYuMTI5MjMgNy4yNTY0OSA2LjEyOTIzIDYuNzQyMTggNi42NDM1NUM2LjIyNzg3IDcuMTU3ODYgNi4yMjc4NyA3Ljk5MTczIDYuNzQyMTggOC41MDYwNEwxMC40OTM4IDEyLjI1NzZMNi43NDMxIDE2LjAwODNDNi4yMjg3OSAxNi41MjI2IDYuMjI4NzkgMTcuMzU2NCA2Ljc0MzEgMTcuODcwOEM3LjI1NzQyIDE4LjM4NTEgOC4wOTEyOSAxOC4zODUxIDguNjA1NiAxNy44NzA4TDEyLjM1NjIgMTQuMTIwMUwxNi4xMDY4IDE3Ljg3MDdDMTYuNjIxMSAxOC4zODUgMTcuNDU1IDE4LjM4NSAxNy45NjkzIDE3Ljg3MDdDMTguNDgzNiAxNy4zNTY0IDE4LjQ4MzYgMTYuNTIyNSAxNy45NjkzIDE2LjAwODJMMTQuMjE4NyAxMi4yNTc2TDE3Ljk3MDIgOC41MDYxM0MxOC40ODQ1IDcuOTkxODEgMTguNDg0NSA3LjE1Nzk0IDE3Ljk3MDIgNi42NDM2M0MxNy40NTU5IDYuMTI5MzIgMTYuNjIyIDYuMTI5MzIgMTYuMTA3NyA2LjY0MzYzTDEyLjM1NjIgMTAuMzk1MUw4LjYwNDY4IDYuNjQzNTVaXCIgZmlsbD1cIiMxODFGMzNcIi8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgIDwvc3ZnPiAgICAgICAgICAgIFxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXIgZmlyc3RcIj48L2Rpdj5cbiAgICBcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyc1wiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgY29uZmlnOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJcIiAqbmdJZj1cIiFmaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItdGl0bGVcIj57e2ZpbHRlci50aXRsZX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtaXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duIGNsYXNzPVwibm8tcGFkZGluZ1wiIFtsYWJlbF09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCdcIiBbc2VsZWN0ZWRJdGVtc109XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZVwiIChvbkNoYW5nZSk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW2RhdGFdPVwiZmlsdGVyLm9wdGlvbnNcIiBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtlbmFibGVTZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVBcHBseUJ1dHRvbl09XCJmYWxzZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIj48L21pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnc2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWlzLWRyb3Bkb3duIFtkYXRhXT1cImZpbHRlci5vcHRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiaGFuZGxlU2VsZWN0KCRldmVudCwgZmlsdGVyLmtleSwgZmlsdGVyKVwiIFtzZWxlY3RlZEl0ZW1dPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXIub3B0aW9uc1wiIGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1pcy1jaGVja2JveCBbdHlwZV09XCInRGVmYXVsdCdcIiBbY2hlY2tlZF09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZT8uaW5jbHVkZXMob3B0aW9uLnZhbHVlKVwiICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVDaGVja2JveCgkZXZlbnQsIGZpbHRlci5rZXksIG9wdGlvbi52YWx1ZSwgZmlsdGVyKVwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIj57e29wdGlvbi5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnZGF0ZVBpY2tlcidcIj5cbiAgICAgICAgICAgICAgICAgICAge3tmaWx0ZXIucGxhY2Vob2xkZXJ9fVxuICAgICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IGNsYXNzPVwibWlzLWlucHV0XCIgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlcGlja2VyQ29uZmlnXCIgW3BsYWNlaG9sZGVyXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlID8gZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgOiAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKVwiIFt2YWx1ZV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZSA/IGZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlIDogKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JylcIiAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW3NlbGVjdGVkRGF0ZV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZVwiIFtwb3NpdGlvblhdPVwiJ2VuZCdcIiBbb2Zmc2V0WF09XCItMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUmFuZ2VQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcnAgbWlzSW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm1pcy1pbnB1dFwiIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5lbmREYXRlKSA/IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpIDogZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMuZW5kRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5lbmREYXRlKSA/IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpIDogZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMuZW5kRGF0ZVwiIFtwb3NpdGlvblhdPVwiJ3N0YXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25ZXT1cIid0b3AnXCIgW3NlbGVjdGVkRGF0ZXNdPVwiZGF0ZVJhbmdlU2VsZWN0ZWREYXRlc1wiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlUmFuZ2VQaWNrZXJDb25maWdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+ICAgIFxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAndGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNJbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdyYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXI/Lm9wdGlvbnM/LlswXT8ubGFiZWwgfHwgJ01pbicgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc0lucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXI/Lm9wdGlvbnM/LlsxXT8ubGFiZWwgfHwgJ01heCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc0lucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZmlsdGVyRm9ybS5nZXQ/LihmaWx0ZXIua2V5KT8uZ2V0KCdtaW4nKT8udmFsdWUgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZGl2aWRlclwiICpuZ0lmPVwiIWxhc3RcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiAgXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPG1pcy1idXR0b24gW25hbWVdPVwiJ0NsZWFyIEFsbCdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1RleHQnXCIgKGNsaWNrKT1cInJlc2V0RmlsdGVycygpXCI+PC9taXMtYnV0dG9uPlxuICAgICAgICA8bWlzLWJ1dHRvbiBbbmFtZV09XCInQXBwbHknXCIgW3NpemVdPVwiJ1NtYWxsJ1wiIFt0eXBlXT1cIidTb2xpZCdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIiBbZGlzYWJsZWRdPVwiZmlsdGVyRm9ybS5pbnZhbGlkXCI+PC9taXMtYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+IFxuIl19
396
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNleEMsNkJBQW9EO0lBRTVDLEFBREosK0JBQWdDLG9DQUc2QjtJQUZpRixxU0FBWSxxREFBd0MsS0FBQztJQUduTSxBQUQ2RCxpQkFBNEIsRUFDbkY7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRG9OLEFBQXhCLEFBQXpHLEFBQXpDLHlEQUF3Qyw2REFBbUQsMkJBQThFLHVCQUF1QiwyQkFDaE4seUJBQXlCLDBCQUMxQjs7OztJQUlyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRW9GO0lBQXhHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7SUFIWSxlQUF1QjtJQUN5QixBQUR4QixBQUF4Qix3Q0FBdUIsdUJBQXVCLDREQUNtRDs7OztJQVEzRyxBQURKLCtCQUFzRSx1QkFDNkc7SUFBekUsZ1VBQWUsd0VBQXdELEtBQUM7SUFBQyxpQkFBZTtJQUM5TCxnQ0FBNkI7SUFBQSxZQUFnQjtJQUNqRCxBQURpRCxpQkFBTyxFQUNs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aUU7O1lBQTVCLCtCQUFVO2lvSUQrQmpDLENBQUMsY0FBYyxDQUFDOztpRkFLakIsb0JBQW9CO2NBVGhDLFNBQVM7MkJBQ0Usa0JBQWtCLGNBR2hCLENBQUMsY0FBYyxDQUFDOzZDQU9uQixJQUFJO2tCQUFaLEtBQUs7WUFDSSxPQUFPO2tCQUFoQixNQUFNO1lBQ0csT0FBTztrQkFBaEIsTUFBTTtZQUNFLE1BQU07a0JBQWQsS0FBSztZQUNHLGdDQUFnQztrQkFBeEMsS0FBSzs7a0ZBTkssb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzbGlkZUZyb21SaWdodCB9IGZyb20gJy4uL2FuaW1hdGlvbnMvc2xpZGVGcm9tUmlnaHQnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElEYXRlUGlja2VyQ29uZmlnIH0gZnJvbSAnbWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9kYXRlcGlja2VyX3YyJztcbmltcG9ydCB7IElSU2VsZWN0ZWREYXRlc0NvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vc3BlY2lmaWNkYXRlcGlja2VyJztcbmltcG9ydCB7IElEYXRlUGlja2VyQ29uZmlnIGFzIElEYXRlUmFuZ2VQaWNrZXJDb25maWcgfSBmcm9tIFwibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9kYXRlcmFuZ2VwaWNrZXJfdjJcIjtcbmltcG9ydCB7IEhhc1ZhbHVlUGlwZSB9IGZyb20gJy4uL2hhcy12YWx1ZS5waXBlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclBhbmVsQ29uZmlnIHtcbiAga2V5OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHR5cGU6ICdtdWx0aVNlbGVjdCcgfCAnc2VsZWN0JyB8ICdkYXRlUGlja2VyJyB8ICdkYXRlUmFuZ2VQaWNrZXInIHwgJ2NoZWNrYm94JyB8ICdyYWRpbycgfCAndGV4dCcgfCAnbnVtYmVyJyB8ICdyYW5nZSc7XG4gIG9wdGlvbnM/OiBBcnJheTx7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGRhdGE/OiBhbnlbXTtcbiAgfT47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBkYXRlUGlja2VyQ29uZmlnPzogSURhdGVQaWNrZXJDb25maWc7XG4gIGRhdGVSYW5nZVBpY2tlckNvbmZpZz86IElEYXRlUmFuZ2VQaWNrZXJDb25maWc7XG4gIG9uQ2hhbmdlPzogKGV2ZW50OiBhbnksIGNvbmZpZz86IEZpbHRlclBhbmVsQ29uZmlnW10sIGZvcm1WYWx1ZT86IGFueSkgPT4gdm9pZDtcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBzZWxlY3RlZFZhbHVlPzogYW55O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtaXMtZmlsdGVyLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbc2xpZGVGcm9tUmlnaHRdXG59KVxuXG5cblxuZXhwb3J0IGNsYXNzIEZpbHRlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhhc1ZhbHVlOiBIYXNWYWx1ZVBpcGUpe31cbiAgQElucHV0KCkgc2hvdzogYm9vbGVhbjtcbiAgQE91dHB1dCgpIG9uQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkFwcGx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBjb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10gPSBbXTtcbiAgQElucHV0KCkgZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsdGVyRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cChbXSk7XG4gIGxhc3RBcHBsaWVkRGF0YTogYW55O1xuXG4gIHJhbmdlTWluOiBudW1iZXI7XG4gIHJhbmdlTWF4OiBudW1iZXI7XG5cbiAgZGF0ZVJhbmdlU2VsZWN0ZWREYXRlczogSVJTZWxlY3RlZERhdGVzQ29uZmlnID0ge1xuICAgIHN0YXJ0RGF0ZTogJycsXG4gICAgZW5kRGF0ZTogJycsXG4gIH07XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplRm9ybUNvbnRyb2xzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYoY2hhbmdlcy5jb25maWcgJiYgIWNoYW5nZXMuY29uZmlnLmZpcnN0Q2hhbmdlKXtcbiAgICAgIHRoaXMuc2V0RmlsdGVyVmFsdWUodGhpcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemVGb3JtQ29udHJvbHMoKSB7XG4gICAgdGhpcy5jb25maWcuZm9yRWFjaCgoZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykgPT4ge1xuICAgICAgbGV0IGNvbnRyb2w6IGFueTtcbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgbWluOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgICAgbWF4OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWxpZGF0b3JzOiAoZ3JvdXA6IEZvcm1Hcm91cCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWluID0gZ3JvdXAuZ2V0KCdtaW4nKS52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IG1heCA9IGdyb3VwLmdldCgnbWF4JykudmFsdWU7XG4gICAgICAgICAgICBpZiAobWluICE9PSBudWxsICYmIG1heCAhPT0gbnVsbCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgcmFuZ2VFcnJvcjogJ01pbiB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG1heCB2YWx1ZScgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnIHx8IGZpbHRlci50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woW10pO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgfVxuICAgICAgaWYodGhpcy5oYXNWYWx1ZS50cmFuc2Zvcm0oZmlsdGVyLmRlZmF1bHRWYWx1ZSkpe1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKGZpbHRlci5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woZmlsdGVyLmtleSwgY29udHJvbCk7XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCl7XG4gICAgaWYodGhpcy5sYXN0QXBwbGllZERhdGEpe1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLnNldFZhbHVlKHRoaXMubGFzdEFwcGxpZWREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhckZvcm1WYWx1ZXMoKTtcbiAgICB9XG4gICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIGZpbHRlckNvdW50KCl7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB0aGlzLmNvbmZpZy5mb3JFYWNoKChmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKSA9PiB7XG4gICAgICBpZih0aGlzLmhhc1ZhbHVlLnRyYW5zZm9ybSh0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlKSl7XG4gICAgICAgIGlmKGZpbHRlci50eXBlID09PSAncmFuZ2UnICYmIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUubWluID09IG51bGwgJiYgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZS5tYXggPT0gbnVsbCl7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCl7XG4gICAgaWYgKHRoaXMuZmlsdGVyRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgXG4gICAgdGhpcy5sYXN0QXBwbGllZERhdGEgPSB7Li4udGhpcy5maWx0ZXJGb3JtLnZhbHVlfTtcbiAgICB0aGlzLm9uQXBwbHkuZW1pdCh7XG4gICAgICBmaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckZvcm0udmFsdWUsXG4gICAgICBmaWx0ZXJDb3VudDogdGhpcy5maWx0ZXJDb3VudCgpXG4gICAgfSk7XG4gICAgdGhpcy5zaG93ID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gIH1cblxuICBoYW5kbGVTZWxlY3QoZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpe1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYoZmlsdGVyLm9uQ2hhbmdlKXtcbiAgICAgIGZpbHRlci5vbkNoYW5nZShldmVudCwgdGhpcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyl7XG4gICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKGV2ZW50KTtcbiAgICBpZih0eXBlb2YgZXZlbnQgPT09ICdvYmplY3QnKXtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcyA9IHtcbiAgICAgICAgc3RhcnREYXRlOiBldmVudC5zdGFydERhdGUsXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXG4gICAgICB9O1xuICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS52YWx1ZSk7IFxuICAgfVxuICB9XG5cbiAgaGFuZGxlQ2hlY2tib3goZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGNoZWNrYm94VmFsdWU6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyl7XG4gICAgaWYoZXZlbnQudmFsdWUpe1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKFsuLi50aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkudmFsdWUsIGNoZWNrYm94VmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkudmFsdWU7XG4gICAgICB0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkuc2V0VmFsdWUoZmlsdGVyVmFsdWUuZmlsdGVyKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZSAhPT0gY2hlY2tib3hWYWx1ZSkpO1xuICAgIH1cbiAgICBpZihmaWx0ZXIub25DaGFuZ2Upe1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZywgdGhpcy5maWx0ZXJGb3JtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckZvcm1WYWx1ZXMoKXtcbiAgICBjb25zdCByZXNldFZhbHVlczogYW55ID0ge307XG4gICAgdGhpcy5jb25maWcuZm9yRWFjaCgoZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykgPT4ge1xuICAgICAgbGV0IGRlZmF1bHRWYWx1ZTogYW55ID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSB8fCBudWxsO1xuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnIHx8IGZpbHRlci50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgfHwgW107XG4gICAgICB9XG4gICAgICBpZihmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJyl7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgfHwgeyBtaW46IG51bGwsIG1heDogbnVsbCB9O1xuICAgICAgfVxuICAgICAgcmVzZXRWYWx1ZXNbZmlsdGVyLmtleV0gPSBkZWZhdWx0VmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUocmVzZXRWYWx1ZXMpO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuY2xlYXJGb3JtVmFsdWVzKCk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIHNldEZpbHRlclZhbHVlKGNvbmZpZzogRmlsdGVyUGFuZWxDb25maWdbXSl7XG4gICBsZXQgYW55VmFsdWVTZXQgPSBmYWxzZTtcbiAgIGZvcihjb25zdCBmaWx0ZXIgb2YgY29uZmlnKXtcbiAgICBpZihmaWx0ZXI/LnNlbGVjdGVkVmFsdWUpe1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS5zZXRWYWx1ZShmaWx0ZXIuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICBhbnlWYWx1ZVNldCA9IHRydWU7XG4gICAgfVxuICAgfVxuICAgaWYoYW55VmFsdWVTZXQgJiYgdGhpcy5lbWl0RmlsdGVyc0FmdGVyU2V0dGluZ05ld1ZhbHVlcyl7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLXBhbmVsLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvd1wiIEBzbGlkZUZyb21SaWdodD4gXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRlclwiPlxuICAgICAgICA8c3Bhbj5GaWx0ZXJzPC9zcGFuPlxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2xvc2UtaWNvblwiIChjbGljayk9XCJjbG9zZVBhbmVsKClcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8ZyBpZD1cImljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCI+XG4gICAgICAgICAgICA8cGF0aCBpZD1cIlVuaW9uXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTguNjA0NjggNi42NDM1NUM4LjA5MDM2IDYuMTI5MjMgNy4yNTY0OSA2LjEyOTIzIDYuNzQyMTggNi42NDM1NUM2LjIyNzg3IDcuMTU3ODYgNi4yMjc4NyA3Ljk5MTczIDYuNzQyMTggOC41MDYwNEwxMC40OTM4IDEyLjI1NzZMNi43NDMxIDE2LjAwODNDNi4yMjg3OSAxNi41MjI2IDYuMjI4NzkgMTcuMzU2NCA2Ljc0MzEgMTcuODcwOEM3LjI1NzQyIDE4LjM4NTEgOC4wOTEyOSAxOC4zODUxIDguNjA1NiAxNy44NzA4TDEyLjM1NjIgMTQuMTIwMUwxNi4xMDY4IDE3Ljg3MDdDMTYuNjIxMSAxOC4zODUgMTcuNDU1IDE4LjM4NSAxNy45NjkzIDE3Ljg3MDdDMTguNDgzNiAxNy4zNTY0IDE4LjQ4MzYgMTYuNTIyNSAxNy45NjkzIDE2LjAwODJMMTQuMjE4NyAxMi4yNTc2TDE3Ljk3MDIgOC41MDYxM0MxOC40ODQ1IDcuOTkxODEgMTguNDg0NSA3LjE1Nzk0IDE3Ljk3MDIgNi42NDM2M0MxNy40NTU5IDYuMTI5MzIgMTYuNjIyIDYuMTI5MzIgMTYuMTA3NyA2LjY0MzYzTDEyLjM1NjIgMTAuMzk1MUw4LjYwNDY4IDYuNjQzNTVaXCIgZmlsbD1cIiMxODFGMzNcIi8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgIDwvc3ZnPiAgICAgICAgICAgIFxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXIgZmlyc3RcIj48L2Rpdj5cbiAgICBcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyc1wiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgY29uZmlnOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJcIiAqbmdJZj1cIiFmaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItdGl0bGVcIj57e2ZpbHRlci50aXRsZX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtaXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duIGNsYXNzPVwibm8tcGFkZGluZ1wiIFtsYWJlbF09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCdcIiBbc2VsZWN0ZWRJdGVtc109XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZVwiIChvbkNoYW5nZSk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW2RhdGFdPVwiZmlsdGVyLm9wdGlvbnNcIiBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtlbmFibGVTZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVBcHBseUJ1dHRvbl09XCJmYWxzZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIj48L21pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnc2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWlzLWRyb3Bkb3duIFtkYXRhXT1cImZpbHRlci5vcHRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiaGFuZGxlU2VsZWN0KCRldmVudCwgZmlsdGVyLmtleSwgZmlsdGVyKVwiIFtzZWxlY3RlZEl0ZW1dPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXIub3B0aW9uc1wiIGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1pcy1jaGVja2JveCBbdHlwZV09XCInRGVmYXVsdCdcIiBbY2hlY2tlZF09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZT8uaW5jbHVkZXMob3B0aW9uLnZhbHVlKVwiICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVDaGVja2JveCgkZXZlbnQsIGZpbHRlci5rZXksIG9wdGlvbi52YWx1ZSwgZmlsdGVyKVwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIj57e29wdGlvbi5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnZGF0ZVBpY2tlcidcIj5cbiAgICAgICAgICAgICAgICAgICAge3tmaWx0ZXIucGxhY2Vob2xkZXJ9fVxuICAgICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IGNsYXNzPVwibWlzLWlucHV0XCIgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlcGlja2VyQ29uZmlnXCIgW3BsYWNlaG9sZGVyXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlID8gZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgOiAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKVwiIFt2YWx1ZV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZSA/IGZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlIDogKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JylcIiAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW3NlbGVjdGVkRGF0ZV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZVwiIFtwb3NpdGlvblhdPVwiJ2VuZCdcIiBbb2Zmc2V0WF09XCItMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUmFuZ2VQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcnAgbWlzSW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm1pcy1pbnB1dFwiIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5lbmREYXRlKSA/IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpIDogZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMuZW5kRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5lbmREYXRlKSA/IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpIDogZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMuZW5kRGF0ZVwiIFtwb3NpdGlvblhdPVwiJ3N0YXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25ZXT1cIid0b3AnXCIgW3NlbGVjdGVkRGF0ZXNdPVwiZGF0ZVJhbmdlU2VsZWN0ZWREYXRlc1wiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlUmFuZ2VQaWNrZXJDb25maWdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+ICAgIFxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAndGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNJbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdyYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXI/Lm9wdGlvbnM/LlswXT8ubGFiZWwgfHwgJ01pbicgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc0lucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXI/Lm9wdGlvbnM/LlsxXT8ubGFiZWwgfHwgJ01heCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc0lucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZmlsdGVyRm9ybS5nZXQ/LihmaWx0ZXIua2V5KT8uZ2V0KCdtaW4nKT8udmFsdWUgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZGl2aWRlclwiICpuZ0lmPVwiIWxhc3RcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiAgXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPG1pcy1idXR0b24gW25hbWVdPVwiJ0NsZWFyIEFsbCdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1RleHQnXCIgKGNsaWNrKT1cInJlc2V0RmlsdGVycygpXCI+PC9taXMtYnV0dG9uPlxuICAgICAgICA8bWlzLWJ1dHRvbiBbbmFtZV09XCInQXBwbHknXCIgW3NpemVdPVwiJ1NtYWxsJ1wiIFt0eXBlXT1cIidTb2xpZCdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIiBbZGlzYWJsZWRdPVwiZmlsdGVyRm9ybS5pbnZhbGlkXCI+PC9taXMtYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+IFxuIl19