@tolle_/tolle-ui 0.0.18-beta → 0.0.21-beta

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 (60) hide show
  1. package/esm2022/lib/alert.component.mjs +116 -0
  2. package/esm2022/lib/avatar-fallback.component.mjs +19 -0
  3. package/esm2022/lib/avatar.component.mjs +86 -0
  4. package/esm2022/lib/badge.component.mjs +4 -4
  5. package/esm2022/lib/breadcrumb-item.component.mjs +19 -0
  6. package/esm2022/lib/breadcrumb-link.component.mjs +60 -0
  7. package/esm2022/lib/breadcrumb-separator.component.mjs +23 -0
  8. package/esm2022/lib/breadcrumb.component.mjs +28 -0
  9. package/esm2022/lib/button.component.mjs +20 -24
  10. package/esm2022/lib/card.component.mjs +3 -3
  11. package/esm2022/lib/data-table.component.mjs +1 -1
  12. package/esm2022/lib/date-picker.component.mjs +2 -2
  13. package/esm2022/lib/date-range-picker.component.mjs +1 -1
  14. package/esm2022/lib/empty-state.component.mjs +111 -0
  15. package/esm2022/lib/input.component.mjs +125 -32
  16. package/esm2022/lib/masked-input.component.mjs +210 -46
  17. package/esm2022/lib/multi-select.component.mjs +1 -1
  18. package/esm2022/lib/otp-group.component.mjs +15 -0
  19. package/esm2022/lib/otp-slot.component.mjs +74 -0
  20. package/esm2022/lib/otp.component.mjs +127 -0
  21. package/esm2022/lib/popover-content.component.mjs +44 -0
  22. package/esm2022/lib/popover.component.mjs +105 -0
  23. package/esm2022/lib/radio-group.component.mjs +78 -0
  24. package/esm2022/lib/radio-item.component.mjs +112 -0
  25. package/esm2022/lib/radio-service.mjs +23 -0
  26. package/esm2022/lib/select.component.mjs +38 -9
  27. package/esm2022/lib/textarea.component.mjs +130 -26
  28. package/esm2022/lib/theme.service.mjs +227 -56
  29. package/esm2022/public-api.mjs +16 -1
  30. package/esm2022/tolle-ui.mjs +5 -0
  31. package/fesm2022/{tolle_-tolle-ui.mjs → tolle-ui.mjs} +1730 -201
  32. package/fesm2022/tolle-ui.mjs.map +1 -0
  33. package/lib/alert.component.d.ts +25 -0
  34. package/lib/avatar-fallback.component.d.ts +5 -0
  35. package/lib/avatar.component.d.ts +17 -0
  36. package/lib/breadcrumb-item.component.d.ts +5 -0
  37. package/lib/breadcrumb-link.component.d.ts +6 -0
  38. package/lib/breadcrumb-separator.component.d.ts +5 -0
  39. package/lib/breadcrumb.component.d.ts +8 -0
  40. package/lib/button.component.d.ts +1 -4
  41. package/lib/empty-state.component.d.ts +20 -0
  42. package/lib/input.component.d.ts +11 -3
  43. package/lib/masked-input.component.d.ts +14 -1
  44. package/lib/otp-group.component.d.ts +5 -0
  45. package/lib/otp-slot.component.d.ts +13 -0
  46. package/lib/otp.component.d.ts +21 -0
  47. package/lib/popover-content.component.d.ts +8 -0
  48. package/lib/popover.component.d.ts +19 -0
  49. package/lib/radio-group.component.d.ts +23 -0
  50. package/lib/radio-item.component.d.ts +22 -0
  51. package/lib/radio-service.d.ts +11 -0
  52. package/lib/select.component.d.ts +1 -0
  53. package/lib/textarea.component.d.ts +8 -1
  54. package/lib/theme.service.d.ts +37 -3
  55. package/package.json +7 -6
  56. package/preset.js +47 -33
  57. package/public-api.d.ts +15 -0
  58. package/theme.css +208 -163
  59. package/esm2022/tolle_-tolle-ui.mjs +0 -5
  60. package/fesm2022/tolle_-tolle-ui.mjs.map +0 -1
@@ -34,93 +34,212 @@ export class ThemeService {
34
34
  else {
35
35
  this.disableDarkMode();
36
36
  }
37
- // 2. Apply Brand Config - This will generate full palette
38
- if (this.config) {
39
- this.applyBrandConfig(this.config);
37
+ const savedPrimary = localStorage.getItem('tolle-primary-color');
38
+ if (savedPrimary) {
39
+ this.setPrimaryColor(savedPrimary, false);
40
+ }
41
+ else if (this.config?.primaryColor) {
42
+ this.setPrimaryColor(this.config.primaryColor, false);
43
+ }
44
+ // Set radius from config
45
+ if (this.config?.radius) {
46
+ this.setRadius(this.config.radius, false);
40
47
  }
41
48
  }
42
49
  /**
43
- * Applies the brand identity variables with full shade palette
50
+ * Sets the border radius for all components
44
51
  */
45
- applyBrandConfig(config) {
52
+ setRadius(radius, persist = true) {
46
53
  if (!isPlatformBrowser(this.platformId))
47
54
  return;
48
55
  const root = this.document.documentElement;
49
- // Set primary color if provided
50
- if (config.primaryColor) {
51
- this.renderer.setStyle(root, '--primary', config.primaryColor);
52
- this.generatePrimaryShades(config.primaryColor);
56
+ // Set the CSS variable
57
+ this.renderer.setStyle(root, '--radius', radius);
58
+ // Also update the dynamic styles to include radius calculations
59
+ this.updateRadiusInDynamicStyles(radius);
60
+ // Persist if needed
61
+ if (persist) {
62
+ localStorage.setItem('tolle-radius', radius);
53
63
  }
54
- // Set border radius if provided
55
- if (config.radius) {
56
- this.renderer.setStyle(root, '--radius', config.radius);
64
+ }
65
+ /**
66
+ * Updates the radius calculations in dynamic styles
67
+ */
68
+ updateRadiusInDynamicStyles(radius) {
69
+ const existingStyle = this.document.getElementById(this.styleId);
70
+ if (existingStyle) {
71
+ let css = existingStyle.textContent || '';
72
+ // Update or add radius calculations
73
+ if (css.includes('--radius:')) {
74
+ // Replace existing radius declarations
75
+ css = css.replace(/--radius:[^;]+;/g, `--radius: ${radius};`);
76
+ }
77
+ else {
78
+ // Add radius to the beginning of :root
79
+ css = css.replace(/:root\s*{/, `:root {\n --radius: ${radius};`);
80
+ }
81
+ // Update the calculated radius values in the CSS
82
+ const radiusCalcRegex = /calc\(var\(--radius[^)]+\)/g;
83
+ css = css.replace(radiusCalcRegex, (match) => {
84
+ if (match.includes('- 2px')) {
85
+ return `calc(${radius} - 2px)`;
86
+ }
87
+ else if (match.includes('- 4px')) {
88
+ return `calc(${radius} - 4px)`;
89
+ }
90
+ return match;
91
+ });
92
+ existingStyle.textContent = css;
57
93
  }
58
94
  }
59
95
  /**
60
96
  * Generates full primary color palette (50-900) based on base color
61
- * Uses color-mix() for consistency with your existing approach
62
97
  */
63
98
  generatePrimaryShades(baseColor) {
99
+ // Convert hex to RGB
100
+ const rgb = this.hexToRgb(baseColor);
101
+ const rgbString = rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '37 99 235';
102
+ // Create lighter ring colors in RGB
103
+ const ringLight = this.lightenColor(baseColor, 40);
104
+ const ringLightRgb = this.hexToRgb(ringLight);
105
+ const ringLightRgbString = ringLightRgb ? `${ringLightRgb.r} ${ringLightRgb.g} ${ringLightRgb.b}` : '96 165 250';
106
+ const ringDark = this.lightenColor(baseColor, 20);
107
+ const ringDarkRgb = this.hexToRgb(ringDark);
108
+ const ringDarkRgbString = ringDarkRgb ? `${ringDarkRgb.r} ${ringDarkRgb.g} ${ringDarkRgb.b}` : '147 197 253';
109
+ // Get current radius or use default
110
+ const root = this.document.documentElement;
111
+ const currentRadius = getComputedStyle(root).getPropertyValue('--radius').trim() || '0.5rem';
64
112
  const css = `
113
+ /* Override primary colors - this needs to come AFTER your main CSS */
65
114
  :root {
66
- /* Primary Shades */
67
- --primary-50: color-mix(in srgb, ${baseColor}, white 90%);
68
- --primary-100: color-mix(in srgb, ${baseColor}, white 80%);
69
- --primary-200: color-mix(in srgb, ${baseColor}, white 60%);
70
- --primary-300: color-mix(in srgb, ${baseColor}, white 40%);
71
- --primary-400: color-mix(in srgb, ${baseColor}, white 20%);
72
- --primary-500: ${baseColor};
73
- --primary-600: color-mix(in srgb, ${baseColor}, black 20%);
74
- --primary-700: color-mix(in srgb, ${baseColor}, black 40%);
75
- --primary-800: color-mix(in srgb, ${baseColor}, black 60%);
76
- --primary-900: color-mix(in srgb, ${baseColor}, black 80%);
115
+ /* Primary in RGB format for Tailwind opacity support */
116
+ --primary: ${rgbString};
117
+ --primary-foreground: ${this.getContrastColorRgb(baseColor)};
118
+
119
+ /* Radius */
120
+ --radius: ${currentRadius};
121
+
122
+ /* Primary shades for light mode */
123
+ --primary-50: ${this.hexToRgbString(this.lightenColor(baseColor, 90))};
124
+ --primary-100: ${this.hexToRgbString(this.lightenColor(baseColor, 80))};
125
+ --primary-200: ${this.hexToRgbString(this.lightenColor(baseColor, 60))};
126
+ --primary-300: ${this.hexToRgbString(this.lightenColor(baseColor, 40))};
127
+ --primary-400: ${this.hexToRgbString(this.lightenColor(baseColor, 20))};
128
+ --primary-500: ${rgbString};
129
+ --primary-600: ${this.hexToRgbString(this.darkenColor(baseColor, 20))};
130
+ --primary-700: ${this.hexToRgbString(this.darkenColor(baseColor, 40))};
131
+ --primary-800: ${this.hexToRgbString(this.darkenColor(baseColor, 60))};
132
+ --primary-900: ${this.hexToRgbString(this.darkenColor(baseColor, 80))};
77
133
 
78
- /* Your existing derived colors - updated to use new shades */
79
- --primary-foreground: white;
80
- --secondary: color-mix(in srgb, var(--primary-200), transparent 40%);
81
- --secondary-foreground: var(--primary-900);
82
- --muted: color-mix(in srgb, var(--primary-50), #f3f4f6 50%);
83
- --muted-foreground: color-mix(in srgb, var(--primary-400), #4b5563 60%);
84
- --accent: color-mix(in srgb, var(--primary-100), transparent 70%);
85
- --accent-foreground: var(--primary-700);
86
- --ring: color-mix(in srgb, var(--primary-300), transparent 50%);
134
+ /* Update ring color to be lighter */
135
+ --ring: ${ringLightRgbString};
87
136
  }
88
137
 
89
138
  .dark {
90
- /* Dark mode variants */
91
- --primary-50: color-mix(in srgb, ${baseColor}, black 85%);
92
- --primary-100: color-mix(in srgb, ${baseColor}, black 75%);
93
- --primary-200: color-mix(in srgb, ${baseColor}, black 65%);
94
- --primary-300: color-mix(in srgb, ${baseColor}, black 55%);
95
- --primary-400: color-mix(in srgb, ${baseColor}, black 45%);
96
- --primary-500: ${baseColor};
97
- --primary-600: color-mix(in srgb, ${baseColor}, white 20%);
98
- --primary-700: color-mix(in srgb, ${baseColor}, white 35%);
99
- --primary-800: color-mix(in srgb, ${baseColor}, white 50%);
100
- --primary-900: color-mix(in srgb, ${baseColor}, white 65%);
139
+ /* For dark mode, we keep the primary color but adjust shades */
140
+ --primary: ${rgbString};
141
+ --primary-foreground: ${this.getContrastColorRgb(baseColor)};
101
142
 
102
- /* Dark mode derived colors */
103
- --primary-foreground: color-mix(in srgb, ${baseColor}, white 90%);
104
- --secondary: color-mix(in srgb, var(--primary-900), transparent 70%);
105
- --secondary-foreground: var(--primary-100);
106
- --muted: color-mix(in srgb, var(--primary-950), #1f2937 50%);
107
- --muted-foreground: color-mix(in srgb, var(--primary-300), #9ca3af 40%);
108
- --accent: color-mix(in srgb, var(--primary-800), transparent 80%);
109
- --accent-foreground: var(--primary-200);
110
- --ring: color-mix(in srgb, var(--primary-600), transparent 60%);
143
+ /* Dark mode shades */
144
+ --primary-50: ${this.hexToRgbString(this.darkenColor(baseColor, 85))};
145
+ --primary-100: ${this.hexToRgbString(this.darkenColor(baseColor, 75))};
146
+ --primary-200: ${this.hexToRgbString(this.darkenColor(baseColor, 65))};
147
+ --primary-300: ${this.hexToRgbString(this.darkenColor(baseColor, 55))};
148
+ --primary-400: ${this.hexToRgbString(this.darkenColor(baseColor, 45))};
149
+ --primary-500: ${rgbString};
150
+ --primary-600: ${this.hexToRgbString(this.lightenColor(baseColor, 20))};
151
+ --primary-700: ${this.hexToRgbString(this.lightenColor(baseColor, 35))};
152
+ --primary-800: ${this.hexToRgbString(this.lightenColor(baseColor, 50))};
153
+ --primary-900: ${this.hexToRgbString(this.lightenColor(baseColor, 65))};
154
+
155
+ /* Update ring color for dark mode - lighter variant */
156
+ --ring: ${ringDarkRgbString};
111
157
  }
112
158
  `;
113
159
  this.injectDynamicStyles(css);
114
160
  }
161
+ /**
162
+ * Convert hex color to RGB object
163
+ */
164
+ hexToRgb(hex) {
165
+ // Remove # if present
166
+ const cleanedHex = hex.replace('#', '');
167
+ let r = 0, g = 0, b = 0;
168
+ if (cleanedHex.length === 3) {
169
+ r = parseInt(cleanedHex[0] + cleanedHex[0], 16);
170
+ g = parseInt(cleanedHex[1] + cleanedHex[1], 16);
171
+ b = parseInt(cleanedHex[2] + cleanedHex[2], 16);
172
+ return { r, g, b };
173
+ }
174
+ if (cleanedHex.length === 6) {
175
+ r = parseInt(cleanedHex.substring(0, 2), 16);
176
+ g = parseInt(cleanedHex.substring(2, 4), 16);
177
+ b = parseInt(cleanedHex.substring(4, 6), 16);
178
+ return { r, g, b };
179
+ }
180
+ return null;
181
+ }
182
+ /**
183
+ * Convert hex to RGB string format for CSS (space-separated)
184
+ */
185
+ hexToRgbString(hexColor) {
186
+ const rgb = this.hexToRgb(hexColor);
187
+ return rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '37 99 235';
188
+ }
189
+ /**
190
+ * Get contrast color in RGB format
191
+ */
192
+ getContrastColorRgb(hexColor) {
193
+ const contrast = this.getContrastColor(hexColor);
194
+ const rgb = this.hexToRgb(contrast);
195
+ return rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '255 255 255';
196
+ }
197
+ /**
198
+ * Lighten a hex color by a percentage
199
+ */
200
+ lightenColor(color, percent) {
201
+ const rgb = this.hexToRgb(color);
202
+ if (!rgb)
203
+ return color;
204
+ // Lighten by percentage
205
+ const r = Math.min(255, Math.floor(rgb.r + (255 - rgb.r) * (percent / 100)));
206
+ const g = Math.min(255, Math.floor(rgb.g + (255 - rgb.g) * (percent / 100)));
207
+ const b = Math.min(255, Math.floor(rgb.b + (255 - rgb.b) * (percent / 100)));
208
+ // Convert back to hex
209
+ return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
210
+ }
211
+ /**
212
+ * Darken a hex color by a percentage
213
+ */
214
+ darkenColor(color, percent) {
215
+ const rgb = this.hexToRgb(color);
216
+ if (!rgb)
217
+ return color;
218
+ const factor = 1 - (percent / 100);
219
+ const r = Math.max(0, Math.floor(rgb.r * factor));
220
+ const g = Math.max(0, Math.floor(rgb.g * factor));
221
+ const b = Math.max(0, Math.floor(rgb.b * factor));
222
+ return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
223
+ }
224
+ /**
225
+ * Calculate contrast color (black or white) based on background color
226
+ */
227
+ getContrastColor(hexColor) {
228
+ const rgb = this.hexToRgb(hexColor);
229
+ if (!rgb)
230
+ return '#ffffff';
231
+ // Calculate relative luminance
232
+ const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;
233
+ // Return black for light colors, white for dark colors
234
+ return luminance > 0.5 ? '#000000' : '#ffffff';
235
+ }
115
236
  injectDynamicStyles(css) {
116
237
  if (!isPlatformBrowser(this.platformId))
117
238
  return;
118
- // Remove existing dynamic styles
119
239
  const existingStyle = this.document.getElementById(this.styleId);
120
240
  if (existingStyle) {
121
241
  existingStyle.remove();
122
242
  }
123
- // Create and inject new styles
124
243
  const styleElement = this.document.createElement('style');
125
244
  styleElement.id = this.styleId;
126
245
  styleElement.textContent = css;
@@ -140,9 +259,61 @@ export class ThemeService {
140
259
  localStorage.setItem('tolle-theme', 'light');
141
260
  this.isDarkSubject.next(false);
142
261
  }
262
+ setPrimaryColor(color, persist = true) {
263
+ if (!isPlatformBrowser(this.platformId))
264
+ return;
265
+ this.generatePrimaryShades(color);
266
+ // Also set inline for immediate update
267
+ const rgb = this.hexToRgb(color);
268
+ if (rgb) {
269
+ this.renderer.setStyle(this.document.documentElement, '--primary', `${rgb.r} ${rgb.g} ${rgb.b}`);
270
+ }
271
+ if (persist) {
272
+ localStorage.setItem('tolle-primary-color', color);
273
+ }
274
+ }
143
275
  get currentTheme() {
144
276
  return this.isDarkSubject.value ? 'dark' : 'light';
145
277
  }
278
+ get primaryColor() {
279
+ if (!isPlatformBrowser(this.platformId))
280
+ return null;
281
+ const root = this.document.documentElement;
282
+ const cssValue = getComputedStyle(root).getPropertyValue('--primary').trim();
283
+ if (cssValue && cssValue !== '') {
284
+ // Convert RGB string back to hex for external use
285
+ const rgbParts = cssValue.split(' ').map(Number);
286
+ if (rgbParts.length === 3) {
287
+ return `#${rgbParts[0].toString(16).padStart(2, '0')}${rgbParts[1].toString(16).padStart(2, '0')}${rgbParts[2].toString(16).padStart(2, '0')}`;
288
+ }
289
+ }
290
+ return localStorage.getItem('tolle-primary-color');
291
+ }
292
+ get radius() {
293
+ if (!isPlatformBrowser(this.platformId))
294
+ return null;
295
+ const root = this.document.documentElement;
296
+ const cssValue = getComputedStyle(root).getPropertyValue('--radius').trim();
297
+ if (cssValue && cssValue !== '') {
298
+ return cssValue;
299
+ }
300
+ return localStorage.getItem('tolle-radius') || '0.5rem';
301
+ }
302
+ /**
303
+ * Applies the brand identity variables with full shade palette
304
+ */
305
+ applyBrandConfig(config) {
306
+ if (!isPlatformBrowser(this.platformId))
307
+ return;
308
+ // Set primary color if provided
309
+ if (config.primaryColor) {
310
+ this.setPrimaryColor(config.primaryColor, false);
311
+ }
312
+ // Set border radius if provided
313
+ if (config.radius) {
314
+ this.setRadius(config.radius, false);
315
+ }
316
+ }
146
317
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThemeService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: TOLLE_CONFIG, optional: true }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
147
318
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThemeService, providedIn: 'root' });
148
319
  }
@@ -161,4 +332,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
161
332
  type: Inject,
162
333
  args: [TOLLE_CONFIG]
163
334
  }] }, { type: i0.RendererFactory2 }] });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzNELE1BQU0sT0FBTyxZQUFZO0lBT0s7SUFDRztJQUNhO0lBUnBDLFFBQVEsQ0FBWTtJQUNwQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDNUQsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsT0FBTyxHQUFHLHFCQUFxQixDQUFDO0lBRXhDLFlBQzRCLFFBQWtCLEVBQ2YsVUFBa0IsRUFDTCxNQUFtQixFQUM3RCxlQUFpQztRQUhQLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUc3RCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQseUNBQXlDO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDO1FBRXBGLCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxVQUFVO1lBQzdCLENBQUMsQ0FBQyxVQUFVLEtBQUssTUFBTTtZQUN2QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXRELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCwwREFBMEQ7UUFDMUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsTUFBbUI7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBRWhELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBRTNDLGdDQUFnQztRQUNoQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxxQkFBcUIsQ0FBQyxTQUFpQjtRQUM3QyxNQUFNLEdBQUcsR0FBRzs7OzJDQUcyQixTQUFTOzRDQUNSLFNBQVM7NENBQ1QsU0FBUzs0Q0FDVCxTQUFTOzRDQUNULFNBQVM7eUJBQzVCLFNBQVM7NENBQ1UsU0FBUzs0Q0FDVCxTQUFTOzRDQUNULFNBQVM7NENBQ1QsU0FBUzs7Ozs7Ozs7Ozs7Ozs7OzJDQWVWLFNBQVM7NENBQ1IsU0FBUzs0Q0FDVCxTQUFTOzRDQUNULFNBQVM7NENBQ1QsU0FBUzt5QkFDNUIsU0FBUzs0Q0FDVSxTQUFTOzRDQUNULFNBQVM7NENBQ1QsU0FBUzs0Q0FDVCxTQUFTOzs7bURBR0YsU0FBUzs7Ozs7Ozs7O0tBU3ZELENBQUM7UUFFRixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQVc7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBRWhELGlDQUFpQztRQUNqQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELCtCQUErQjtRQUMvQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRCxZQUFZLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDL0IsWUFBWSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pGLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbkUsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3JELENBQUM7d0dBekpVLFlBQVksa0JBT2IsUUFBUSxhQUNSLFdBQVcsYUFDQyxZQUFZOzRHQVR2QixZQUFZLGNBREMsTUFBTTs7NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFRN0IsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIFBMQVRGT1JNX0lELCBPcHRpb25hbCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUT0xMRV9DT05GSUcsIFRvbGxlQ29uZmlnIH0gZnJvbSAnLi90b2xsZS1jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRoZW1lU2VydmljZSB7XG4gIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgcHJpdmF0ZSBpc0RhcmtTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGlzRGFyayQgPSB0aGlzLmlzRGFya1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHByaXZhdGUgc3R5bGVJZCA9ICd0b2xsZS1keW5hbWljLXRoZW1lJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRPTExFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFRvbGxlQ29uZmlnLFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MlxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVRoZW1lKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUaGVtZSgpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIC8vIDEuIERldGVybWluZSBJbml0aWFsIE1vZGUgKERhcmsvTGlnaHQpXG4gICAgY29uc3Qgc2F2ZWRUaGVtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2xsZS10aGVtZScpO1xuICAgIGNvbnN0IHN5c3RlbVByZWZlcnNEYXJrID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzO1xuXG4gICAgLy8gTG9naWM6IFNhdmVkIFByZWZlcmVuY2UgPiBDb25maWcgRGVmYXVsdCA+IFN5c3RlbSBQcmVmZXJlbmNlXG4gICAgY29uc3Qgc2hvdWxkQmVEYXJrID0gc2F2ZWRUaGVtZVxuICAgICAgPyBzYXZlZFRoZW1lID09PSAnZGFyaydcbiAgICAgIDogKHRoaXMuY29uZmlnPy5kYXJrQnlEZWZhdWx0ID8/IHN5c3RlbVByZWZlcnNEYXJrKTtcblxuICAgIGlmIChzaG91bGRCZURhcmspIHtcbiAgICAgIHRoaXMuZW5hYmxlRGFya01vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNhYmxlRGFya01vZGUoKTtcbiAgICB9XG5cbiAgICAvLyAyLiBBcHBseSBCcmFuZCBDb25maWcgLSBUaGlzIHdpbGwgZ2VuZXJhdGUgZnVsbCBwYWxldHRlXG4gICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICB0aGlzLmFwcGx5QnJhbmRDb25maWcodGhpcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBicmFuZCBpZGVudGl0eSB2YXJpYWJsZXMgd2l0aCBmdWxsIHNoYWRlIHBhbGV0dGVcbiAgICovXG4gIGFwcGx5QnJhbmRDb25maWcoY29uZmlnOiBUb2xsZUNvbmZpZykge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgLy8gU2V0IHByaW1hcnkgY29sb3IgaWYgcHJvdmlkZWRcbiAgICBpZiAoY29uZmlnLnByaW1hcnlDb2xvcikge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShyb290LCAnLS1wcmltYXJ5JywgY29uZmlnLnByaW1hcnlDb2xvcik7XG4gICAgICB0aGlzLmdlbmVyYXRlUHJpbWFyeVNoYWRlcyhjb25maWcucHJpbWFyeUNvbG9yKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgYm9yZGVyIHJhZGl1cyBpZiBwcm92aWRlZFxuICAgIGlmIChjb25maWcucmFkaXVzKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHJvb3QsICctLXJhZGl1cycsIGNvbmZpZy5yYWRpdXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgZnVsbCBwcmltYXJ5IGNvbG9yIHBhbGV0dGUgKDUwLTkwMCkgYmFzZWQgb24gYmFzZSBjb2xvclxuICAgKiBVc2VzIGNvbG9yLW1peCgpIGZvciBjb25zaXN0ZW5jeSB3aXRoIHlvdXIgZXhpc3RpbmcgYXBwcm9hY2hcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVQcmltYXJ5U2hhZGVzKGJhc2VDb2xvcjogc3RyaW5nKSB7XG4gICAgY29uc3QgY3NzID0gYFxuICAgICAgOnJvb3Qge1xuICAgICAgICAvKiBQcmltYXJ5IFNoYWRlcyAqL1xuICAgICAgICAtLXByaW1hcnktNTA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDkwJSk7XG4gICAgICAgIC0tcHJpbWFyeS0xMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDgwJSk7XG4gICAgICAgIC0tcHJpbWFyeS0yMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDYwJSk7XG4gICAgICAgIC0tcHJpbWFyeS0zMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDQwJSk7XG4gICAgICAgIC0tcHJpbWFyeS00MDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDIwJSk7XG4gICAgICAgIC0tcHJpbWFyeS01MDA6ICR7YmFzZUNvbG9yfTtcbiAgICAgICAgLS1wcmltYXJ5LTYwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgYmxhY2sgMjAlKTtcbiAgICAgICAgLS1wcmltYXJ5LTcwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgYmxhY2sgNDAlKTtcbiAgICAgICAgLS1wcmltYXJ5LTgwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgYmxhY2sgNjAlKTtcbiAgICAgICAgLS1wcmltYXJ5LTkwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgYmxhY2sgODAlKTtcblxuICAgICAgICAvKiBZb3VyIGV4aXN0aW5nIGRlcml2ZWQgY29sb3JzIC0gdXBkYXRlZCB0byB1c2UgbmV3IHNoYWRlcyAqL1xuICAgICAgICAtLXByaW1hcnktZm9yZWdyb3VuZDogd2hpdGU7XG4gICAgICAgIC0tc2Vjb25kYXJ5OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeS0yMDApLCB0cmFuc3BhcmVudCA0MCUpO1xuICAgICAgICAtLXNlY29uZGFyeS1mb3JlZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LTkwMCk7XG4gICAgICAgIC0tbXV0ZWQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wcmltYXJ5LTUwKSwgI2YzZjRmNiA1MCUpO1xuICAgICAgICAtLW11dGVkLWZvcmVncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wcmltYXJ5LTQwMCksICM0YjU1NjMgNjAlKTtcbiAgICAgICAgLS1hY2NlbnQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wcmltYXJ5LTEwMCksIHRyYW5zcGFyZW50IDcwJSk7XG4gICAgICAgIC0tYWNjZW50LWZvcmVncm91bmQ6IHZhcigtLXByaW1hcnktNzAwKTtcbiAgICAgICAgLS1yaW5nOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeS0zMDApLCB0cmFuc3BhcmVudCA1MCUpO1xuICAgICAgfVxuXG4gICAgICAuZGFyayB7XG4gICAgICAgIC8qIERhcmsgbW9kZSB2YXJpYW50cyAqL1xuICAgICAgICAtLXByaW1hcnktNTA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIGJsYWNrIDg1JSk7XG4gICAgICAgIC0tcHJpbWFyeS0xMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIGJsYWNrIDc1JSk7XG4gICAgICAgIC0tcHJpbWFyeS0yMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIGJsYWNrIDY1JSk7XG4gICAgICAgIC0tcHJpbWFyeS0zMDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIGJsYWNrIDU1JSk7XG4gICAgICAgIC0tcHJpbWFyeS00MDA6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIGJsYWNrIDQ1JSk7XG4gICAgICAgIC0tcHJpbWFyeS01MDA6ICR7YmFzZUNvbG9yfTtcbiAgICAgICAgLS1wcmltYXJ5LTYwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgd2hpdGUgMjAlKTtcbiAgICAgICAgLS1wcmltYXJ5LTcwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgd2hpdGUgMzUlKTtcbiAgICAgICAgLS1wcmltYXJ5LTgwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgd2hpdGUgNTAlKTtcbiAgICAgICAgLS1wcmltYXJ5LTkwMDogY29sb3ItbWl4KGluIHNyZ2IsICR7YmFzZUNvbG9yfSwgd2hpdGUgNjUlKTtcblxuICAgICAgICAvKiBEYXJrIG1vZGUgZGVyaXZlZCBjb2xvcnMgKi9cbiAgICAgICAgLS1wcmltYXJ5LWZvcmVncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCAke2Jhc2VDb2xvcn0sIHdoaXRlIDkwJSk7XG4gICAgICAgIC0tc2Vjb25kYXJ5OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeS05MDApLCB0cmFuc3BhcmVudCA3MCUpO1xuICAgICAgICAtLXNlY29uZGFyeS1mb3JlZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LTEwMCk7XG4gICAgICAgIC0tbXV0ZWQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wcmltYXJ5LTk1MCksICMxZjI5MzcgNTAlKTtcbiAgICAgICAgLS1tdXRlZC1mb3JlZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeS0zMDApLCAjOWNhM2FmIDQwJSk7XG4gICAgICAgIC0tYWNjZW50OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeS04MDApLCB0cmFuc3BhcmVudCA4MCUpO1xuICAgICAgICAtLWFjY2VudC1mb3JlZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LTIwMCk7XG4gICAgICAgIC0tcmluZzogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXByaW1hcnktNjAwKSwgdHJhbnNwYXJlbnQgNjAlKTtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgdGhpcy5pbmplY3REeW5hbWljU3R5bGVzKGNzcyk7XG4gIH1cblxuICBwcml2YXRlIGluamVjdER5bmFtaWNTdHlsZXMoY3NzOiBzdHJpbmcpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIC8vIFJlbW92ZSBleGlzdGluZyBkeW5hbWljIHN0eWxlc1xuICAgIGNvbnN0IGV4aXN0aW5nU3R5bGUgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc3R5bGVJZCk7XG4gICAgaWYgKGV4aXN0aW5nU3R5bGUpIHtcbiAgICAgIGV4aXN0aW5nU3R5bGUucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGFuZCBpbmplY3QgbmV3IHN0eWxlc1xuICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBzdHlsZUVsZW1lbnQuaWQgPSB0aGlzLnN0eWxlSWQ7XG4gICAgc3R5bGVFbGVtZW50LnRleHRDb250ZW50ID0gY3NzO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBzdHlsZUVsZW1lbnQpO1xuICB9XG5cbiAgdG9nZ2xlVGhlbWUoKSB7XG4gICAgY29uc3QgaXNDdXJyZW50bHlEYXJrID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkYXJrJyk7XG4gICAgaXNDdXJyZW50bHlEYXJrID8gdGhpcy5kaXNhYmxlRGFya01vZGUoKSA6IHRoaXMuZW5hYmxlRGFya01vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlRGFya01vZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RhcmsnKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtdGhlbWUnLCAnZGFyaycpO1xuICAgIHRoaXMuaXNEYXJrU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlRGFya01vZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RhcmsnKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtdGhlbWUnLCAnbGlnaHQnKTtcbiAgICB0aGlzLmlzRGFya1N1YmplY3QubmV4dChmYWxzZSk7XG4gIH1cblxuICBnZXQgY3VycmVudFRoZW1lKCk6ICdkYXJrJyB8ICdsaWdodCcge1xuICAgIHJldHVybiB0aGlzLmlzRGFya1N1YmplY3QudmFsdWUgPyAnZGFyaycgOiAnbGlnaHQnO1xuICB9XG59XG4iXX0=
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzNELE1BQU0sT0FBTyxZQUFZO0lBT0s7SUFDRztJQUNhO0lBUnBDLFFBQVEsQ0FBWTtJQUNwQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDNUQsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsT0FBTyxHQUFHLHFCQUFxQixDQUFDO0lBRXhDLFlBQzRCLFFBQWtCLEVBQ2YsVUFBa0IsRUFDTCxNQUFtQixFQUM3RCxlQUFpQztRQUhQLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUc3RCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQseUNBQXlDO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxD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QUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdFLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVyxDQUFDLEtBQWEsRUFBRSxPQUFlO1FBQ2hELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUV2QixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFD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TUFBbUI7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBRWhELGdDQUFnQztRQUNoQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7d0dBeldVLFlBQVksa0JBT2IsUUFBUSxhQUNSLFdBQVcsYUFDQyxZQUFZOzRHQVR2QixZQUFZLGNBREMsTUFBTTs7NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFRN0IsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIFBMQVRGT1JNX0lELCBPcHRpb25hbCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUT0xMRV9DT05GSUcsIFRvbGxlQ29uZmlnIH0gZnJvbSAnLi90b2xsZS1jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRoZW1lU2VydmljZSB7XG4gIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgcHJpdmF0ZSBpc0RhcmtTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGlzRGFyayQgPSB0aGlzLmlzRGFya1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHByaXZhdGUgc3R5bGVJZCA9ICd0b2xsZS1keW5hbWljLXRoZW1lJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRPTExFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFRvbGxlQ29uZmlnLFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MlxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVRoZW1lKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUaGVtZSgpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIC8vIDEuIERldGVybWluZSBJbml0aWFsIE1vZGUgKERhcmsvTGlnaHQpXG4gICAgY29uc3Qgc2F2ZWRUaGVtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2xsZS10aGVtZScpO1xuICAgIGNvbnN0IHN5c3RlbVByZWZlcnNEYXJrID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzO1xuXG4gICAgLy8gTG9naWM6IFNhdmVkIFByZWZlcmVuY2UgPiBDb25maWcgRGVmYXVsdCA+IFN5c3RlbSBQcmVmZXJlbmNlXG4gICAgY29uc3Qgc2hvdWxkQmVEYXJrID0gc2F2ZWRUaGVtZVxuICAgICAgPyBzYXZlZFRoZW1lID09PSAnZGFyaydcbiAgICAgIDogKHRoaXMuY29uZmlnPy5kYXJrQnlEZWZhdWx0ID8/IHN5c3RlbVByZWZlcnNEYXJrKTtcblxuICAgIGlmIChzaG91bGRCZURhcmspIHtcbiAgICAgIHRoaXMuZW5hYmxlRGFya01vZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNhYmxlRGFya01vZGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlZFByaW1hcnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9sbGUtcHJpbWFyeS1jb2xvcicpO1xuXG4gICAgaWYgKHNhdmVkUHJpbWFyeSkge1xuICAgICAgdGhpcy5zZXRQcmltYXJ5Q29sb3Ioc2F2ZWRQcmltYXJ5LCBmYWxzZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZz8ucHJpbWFyeUNvbG9yKSB7XG4gICAgICB0aGlzLnNldFByaW1hcnlDb2xvcih0aGlzLmNvbmZpZy5wcmltYXJ5Q29sb3IsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgcmFkaXVzIGZyb20gY29uZmlnXG4gICAgaWYgKHRoaXMuY29uZmlnPy5yYWRpdXMpIHtcbiAgICAgIHRoaXMuc2V0UmFkaXVzKHRoaXMuY29uZmlnLnJhZGl1cywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBib3JkZXIgcmFkaXVzIGZvciBhbGwgY29tcG9uZW50c1xuICAgKi9cbiAgc2V0UmFkaXVzKHJhZGl1czogc3RyaW5nLCBwZXJzaXN0ID0gdHJ1ZSkge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgLy8gU2V0IHRoZSBDU1MgdmFyaWFibGVcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHJvb3QsICctLXJhZGl1cycsIHJhZGl1cyk7XG5cbiAgICAvLyBBbHNvIHVwZGF0ZSB0aGUgZHluYW1pYyBzdHlsZXMgdG8gaW5jbHVkZSByYWRpdXMgY2FsY3VsYXRpb25zXG4gICAgdGhpcy51cGRhdGVSYWRpdXNJbkR5bmFtaWNTdHlsZXMocmFkaXVzKTtcblxuICAgIC8vIFBlcnNpc3QgaWYgbmVlZGVkXG4gICAgaWYgKHBlcnNpc3QpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2xsZS1yYWRpdXMnLCByYWRpdXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSByYWRpdXMgY2FsY3VsYXRpb25zIGluIGR5bmFtaWMgc3R5bGVzXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVJhZGl1c0luRHluYW1pY1N0eWxlcyhyYWRpdXM6IHN0cmluZykge1xuICAgIGNvbnN0IGV4aXN0aW5nU3R5bGUgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc3R5bGVJZCk7XG5cbiAgICBpZiAoZXhpc3RpbmdTdHlsZSkge1xuICAgICAgbGV0IGNzcyA9IGV4aXN0aW5nU3R5bGUudGV4dENvbnRlbnQgfHwgJyc7XG5cbiAgICAgIC8vIFVwZGF0ZSBvciBhZGQgcmFkaXVzIGNhbGN1bGF0aW9uc1xuICAgICAgaWYgKGNzcy5pbmNsdWRlcygnLS1yYWRpdXM6JykpIHtcbiAgICAgICAgLy8gUmVwbGFjZSBleGlzdGluZyByYWRpdXMgZGVjbGFyYXRpb25zXG4gICAgICAgIGNzcyA9IGNzcy5yZXBsYWNlKC8tLXJhZGl1czpbXjtdKzsvZywgYC0tcmFkaXVzOiAke3JhZGl1c307YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgcmFkaXVzIHRvIHRoZSBiZWdpbm5pbmcgb2YgOnJvb3RcbiAgICAgICAgY3NzID0gY3NzLnJlcGxhY2UoLzpyb290XFxzKnsvLCBgOnJvb3Qge1xcbiAgICAgIC0tcmFkaXVzOiAke3JhZGl1c307YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgY2FsY3VsYXRlZCByYWRpdXMgdmFsdWVzIGluIHRoZSBDU1NcbiAgICAgIGNvbnN0IHJhZGl1c0NhbGNSZWdleCA9IC9jYWxjXFwodmFyXFwoLS1yYWRpdXNbXildK1xcKS9nO1xuICAgICAgY3NzID0gY3NzLnJlcGxhY2UocmFkaXVzQ2FsY1JlZ2V4LCAobWF0Y2gpID0+IHtcbiAgICAgICAgaWYgKG1hdGNoLmluY2x1ZGVzKCctIDJweCcpKSB7XG4gICAgICAgICAgcmV0dXJuIGBjYWxjKCR7cmFkaXVzfSAtIDJweClgO1xuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoLmluY2x1ZGVzKCctIDRweCcpKSB7XG4gICAgICAgICAgcmV0dXJuIGBjYWxjKCR7cmFkaXVzfSAtIDRweClgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH0pO1xuXG4gICAgICBleGlzdGluZ1N0eWxlLnRleHRDb250ZW50ID0gY3NzO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgZnVsbCBwcmltYXJ5IGNvbG9yIHBhbGV0dGUgKDUwLTkwMCkgYmFzZWQgb24gYmFzZSBjb2xvclxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZVByaW1hcnlTaGFkZXMoYmFzZUNvbG9yOiBzdHJpbmcpIHtcbiAgICAvLyBDb252ZXJ0IGhleCB0byBSR0JcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGJhc2VDb2xvcik7XG4gICAgY29uc3QgcmdiU3RyaW5nID0gcmdiID8gYCR7cmdiLnJ9ICR7cmdiLmd9ICR7cmdiLmJ9YCA6ICczNyA5OSAyMzUnO1xuXG4gICAgLy8gQ3JlYXRlIGxpZ2h0ZXIgcmluZyBjb2xvcnMgaW4gUkdCXG4gICAgY29uc3QgcmluZ0xpZ2h0ID0gdGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCA0MCk7XG4gICAgY29uc3QgcmluZ0xpZ2h0UmdiID0gdGhpcy5oZXhUb1JnYihyaW5nTGlnaHQpO1xuICAgIGNvbnN0IHJpbmdMaWdodFJnYlN0cmluZyA9IHJpbmdMaWdodFJnYiA/IGAke3JpbmdMaWdodFJnYi5yfSAke3JpbmdMaWdodFJnYi5nfSAke3JpbmdMaWdodFJnYi5ifWAgOiAnOTYgMTY1IDI1MCc7XG5cbiAgICBjb25zdCByaW5nRGFyayA9IHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgMjApO1xuICAgIGNvbnN0IHJpbmdEYXJrUmdiID0gdGhpcy5oZXhUb1JnYihyaW5nRGFyayk7XG4gICAgY29uc3QgcmluZ0RhcmtSZ2JTdHJpbmcgPSByaW5nRGFya1JnYiA/IGAke3JpbmdEYXJrUmdiLnJ9ICR7cmluZ0RhcmtSZ2IuZ30gJHtyaW5nRGFya1JnYi5ifWAgOiAnMTQ3IDE5NyAyNTMnO1xuXG4gICAgLy8gR2V0IGN1cnJlbnQgcmFkaXVzIG9yIHVzZSBkZWZhdWx0XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IGN1cnJlbnRSYWRpdXMgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmdldFByb3BlcnR5VmFsdWUoJy0tcmFkaXVzJykudHJpbSgpIHx8ICcwLjVyZW0nO1xuXG4gICAgY29uc3QgY3NzID0gYFxuICAgICAgLyogT3ZlcnJpZGUgcHJpbWFyeSBjb2xvcnMgLSB0aGlzIG5lZWRzIHRvIGNvbWUgQUZURVIgeW91ciBtYWluIENTUyAqL1xuICAgICAgOnJvb3Qge1xuICAgICAgICAvKiBQcmltYXJ5IGluIFJHQiBmb3JtYXQgZm9yIFRhaWx3aW5kIG9wYWNpdHkgc3VwcG9ydCAqL1xuICAgICAgICAtLXByaW1hcnk6ICR7cmdiU3RyaW5nfTtcbiAgICAgICAgLS1wcmltYXJ5LWZvcmVncm91bmQ6ICR7dGhpcy5nZXRDb250cmFzdENvbG9yUmdiKGJhc2VDb2xvcil9O1xuXG4gICAgICAgIC8qIFJhZGl1cyAqL1xuICAgICAgICAtLXJhZGl1czogJHtjdXJyZW50UmFkaXVzfTtcblxuICAgICAgICAvKiBQcmltYXJ5IHNoYWRlcyBmb3IgbGlnaHQgbW9kZSAqL1xuICAgICAgICAtLXByaW1hcnktNTA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDkwKSl9O1xuICAgICAgICAtLXByaW1hcnktMTAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCA4MCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTIwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgNjApKX07XG4gICAgICAgIC0tcHJpbWFyeS0zMDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDQwKSl9O1xuICAgICAgICAtLXByaW1hcnktNDAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCAyMCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTUwMDogJHtyZ2JTdHJpbmd9O1xuICAgICAgICAtLXByaW1hcnktNjAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDIwKSl9O1xuICAgICAgICAtLXByaW1hcnktNzAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDQwKSl9O1xuICAgICAgICAtLXByaW1hcnktODAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDYwKSl9O1xuICAgICAgICAtLXByaW1hcnktOTAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDgwKSl9O1xuXG4gICAgICAgIC8qIFVwZGF0ZSByaW5nIGNvbG9yIHRvIGJlIGxpZ2h0ZXIgKi9cbiAgICAgICAgLS1yaW5nOiAke3JpbmdMaWdodFJnYlN0cmluZ307XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIHtcbiAgICAgICAgLyogRm9yIGRhcmsgbW9kZSwgd2Uga2VlcCB0aGUgcHJpbWFyeSBjb2xvciBidXQgYWRqdXN0IHNoYWRlcyAqL1xuICAgICAgICAtLXByaW1hcnk6ICR7cmdiU3RyaW5nfTtcbiAgICAgICAgLS1wcmltYXJ5LWZvcmVncm91bmQ6ICR7dGhpcy5nZXRDb250cmFzdENvbG9yUmdiKGJhc2VDb2xvcil9O1xuXG4gICAgICAgIC8qIERhcmsgbW9kZSBzaGFkZXMgKi9cbiAgICAgICAgLS1wcmltYXJ5LTUwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDg1KSl9O1xuICAgICAgICAtLXByaW1hcnktMTAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDc1KSl9O1xuICAgICAgICAtLXByaW1hcnktMjAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDY1KSl9O1xuICAgICAgICAtLXByaW1hcnktMzAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDU1KSl9O1xuICAgICAgICAtLXByaW1hcnktNDAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5kYXJrZW5Db2xvcihiYXNlQ29sb3IsIDQ1KSl9O1xuICAgICAgICAtLXByaW1hcnktNTAwOiAke3JnYlN0cmluZ307XG4gICAgICAgIC0tcHJpbWFyeS02MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDIwKSl9O1xuICAgICAgICAtLXByaW1hcnktNzAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCAzNSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTgwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgNTApKX07XG4gICAgICAgIC0tcHJpbWFyeS05MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDY1KSl9O1xuXG4gICAgICAgIC8qIFVwZGF0ZSByaW5nIGNvbG9yIGZvciBkYXJrIG1vZGUgLSBsaWdodGVyIHZhcmlhbnQgKi9cbiAgICAgICAgLS1yaW5nOiAke3JpbmdEYXJrUmdiU3RyaW5nfTtcbiAgICAgIH1cbiAgICBgO1xuXG4gICAgdGhpcy5pbmplY3REeW5hbWljU3R5bGVzKGNzcyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBoZXggY29sb3IgdG8gUkdCIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBoZXhUb1JnYihoZXg6IHN0cmluZyk6IHsgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciB9IHwgbnVsbCB7XG4gICAgLy8gUmVtb3ZlICMgaWYgcHJlc2VudFxuICAgIGNvbnN0IGNsZWFuZWRIZXggPSBoZXgucmVwbGFjZSgnIycsICcnKTtcblxuICAgIGxldCByID0gMCwgZyA9IDAsIGIgPSAwO1xuXG4gICAgaWYgKGNsZWFuZWRIZXgubGVuZ3RoID09PSAzKSB7XG4gICAgICByID0gcGFyc2VJbnQoY2xlYW5lZEhleFswXSArIGNsZWFuZWRIZXhbMF0sIDE2KTtcbiAgICAgIGcgPSBwYXJzZUludChjbGVhbmVkSGV4WzFdICsgY2xlYW5lZEhleFsxXSwgMTYpO1xuICAgICAgYiA9IHBhcnNlSW50KGNsZWFuZWRIZXhbMl0gKyBjbGVhbmVkSGV4WzJdLCAxNik7XG4gICAgICByZXR1cm4geyByLCBnLCBiIH07XG4gICAgfVxuXG4gICAgaWYgKGNsZWFuZWRIZXgubGVuZ3RoID09PSA2KSB7XG4gICAgICByID0gcGFyc2VJbnQoY2xlYW5lZEhleC5zdWJzdHJpbmcoMCwgMiksIDE2KTtcbiAgICAgIGcgPSBwYXJzZUludChjbGVhbmVkSGV4LnN1YnN0cmluZygyLCA0KSwgMTYpO1xuICAgICAgYiA9IHBhcnNlSW50KGNsZWFuZWRIZXguc3Vic3RyaW5nKDQsIDYpLCAxNik7XG4gICAgICByZXR1cm4geyByLCBnLCBiIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBoZXggdG8gUkdCIHN0cmluZyBmb3JtYXQgZm9yIENTUyAoc3BhY2Utc2VwYXJhdGVkKVxuICAgKi9cbiAgcHJpdmF0ZSBoZXhUb1JnYlN0cmluZyhoZXhDb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGhleENvbG9yKTtcbiAgICByZXR1cm4gcmdiID8gYCR7cmdiLnJ9ICR7cmdiLmd9ICR7cmdiLmJ9YCA6ICczNyA5OSAyMzUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb250cmFzdCBjb2xvciBpbiBSR0IgZm9ybWF0XG4gICAqL1xuICBwcml2YXRlIGdldENvbnRyYXN0Q29sb3JSZ2IoaGV4Q29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgY29udHJhc3QgPSB0aGlzLmdldENvbnRyYXN0Q29sb3IoaGV4Q29sb3IpO1xuICAgIGNvbnN0IHJnYiA9IHRoaXMuaGV4VG9SZ2IoY29udHJhc3QpO1xuICAgIHJldHVybiByZ2IgPyBgJHtyZ2Iucn0gJHtyZ2IuZ30gJHtyZ2IuYn1gIDogJzI1NSAyNTUgMjU1JztcbiAgfVxuXG4gIC8qKlxuICAgKiBMaWdodGVuIGEgaGV4IGNvbG9yIGJ5IGEgcGVyY2VudGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBsaWdodGVuQ29sb3IoY29sb3I6IHN0cmluZywgcGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGNvbG9yKTtcbiAgICBpZiAoIXJnYikgcmV0dXJuIGNvbG9yO1xuXG4gICAgLy8gTGlnaHRlbiBieSBwZXJjZW50YWdlXG4gICAgY29uc3QgciA9IE1hdGgubWluKDI1NSwgTWF0aC5mbG9vcihyZ2IuciArICgyNTUgLSByZ2IucikgKiAocGVyY2VudCAvIDEwMCkpKTtcbiAgICBjb25zdCBnID0gTWF0aC5taW4oMjU1LCBNYXRoLmZsb29yKHJnYi5nICsgKDI1NSAtIHJnYi5nKSAqIChwZXJjZW50IC8gMTAwKSkpO1xuICAgIGNvbnN0IGIgPSBNYXRoLm1pbigyNTUsIE1hdGguZmxvb3IocmdiLmIgKyAoMjU1IC0gcmdiLmIpICogKHBlcmNlbnQgLyAxMDApKSk7XG5cbiAgICAvLyBDb252ZXJ0IGJhY2sgdG8gaGV4XG4gICAgcmV0dXJuIGAjJHsoKDEgPDwgMjQpICsgKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiKS50b1N0cmluZygxNikuc2xpY2UoMSl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEYXJrZW4gYSBoZXggY29sb3IgYnkgYSBwZXJjZW50YWdlXG4gICAqL1xuICBwcml2YXRlIGRhcmtlbkNvbG9yKGNvbG9yOiBzdHJpbmcsIHBlcmNlbnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcmdiID0gdGhpcy5oZXhUb1JnYihjb2xvcik7XG4gICAgaWYgKCFyZ2IpIHJldHVybiBjb2xvcjtcblxuICAgIGNvbnN0IGZhY3RvciA9IDEgLSAocGVyY2VudCAvIDEwMCk7XG4gICAgY29uc3QgciA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IocmdiLnIgKiBmYWN0b3IpKTtcbiAgICBjb25zdCBnID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihyZ2IuZyAqIGZhY3RvcikpO1xuICAgIGNvbnN0IGIgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKHJnYi5iICogZmFjdG9yKSk7XG5cbiAgICByZXR1cm4gYCMke3IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtnLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7Yi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSBjb250cmFzdCBjb2xvciAoYmxhY2sgb3Igd2hpdGUpIGJhc2VkIG9uIGJhY2tncm91bmQgY29sb3JcbiAgICovXG4gIHByaXZhdGUgZ2V0Q29udHJhc3RDb2xvcihoZXhDb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGhleENvbG9yKTtcbiAgICBpZiAoIXJnYikgcmV0dXJuICcjZmZmZmZmJztcblxuICAgIC8vIENhbGN1bGF0ZSByZWxhdGl2ZSBsdW1pbmFuY2VcbiAgICBjb25zdCBsdW1pbmFuY2UgPSAoMC4yOTkgKiByZ2IuciArIDAuNTg3ICogcmdiLmcgKyAwLjExNCAqIHJnYi5iKSAvIDI1NTtcblxuICAgIC8vIFJldHVybiBibGFjayBmb3IgbGlnaHQgY29sb3JzLCB3aGl0ZSBmb3IgZGFyayBjb2xvcnNcbiAgICByZXR1cm4gbHVtaW5hbmNlID4gMC41ID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xuICB9XG5cbiAgcHJpdmF0ZSBpbmplY3REeW5hbWljU3R5bGVzKGNzczogc3RyaW5nKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICBjb25zdCBleGlzdGluZ1N0eWxlID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnN0eWxlSWQpO1xuICAgIGlmIChleGlzdGluZ1N0eWxlKSB7XG4gICAgICBleGlzdGluZ1N0eWxlLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBzdHlsZUVsZW1lbnQuaWQgPSB0aGlzLnN0eWxlSWQ7XG4gICAgc3R5bGVFbGVtZW50LnRleHRDb250ZW50ID0gY3NzO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBzdHlsZUVsZW1lbnQpO1xuICB9XG5cbiAgdG9nZ2xlVGhlbWUoKSB7XG4gICAgY29uc3QgaXNDdXJyZW50bHlEYXJrID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkYXJrJyk7XG4gICAgaXNDdXJyZW50bHlEYXJrID8gdGhpcy5kaXNhYmxlRGFya01vZGUoKSA6IHRoaXMuZW5hYmxlRGFya01vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlRGFya01vZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RhcmsnKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtdGhlbWUnLCAnZGFyaycpO1xuICAgIHRoaXMuaXNEYXJrU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlRGFya01vZGUoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RhcmsnKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtdGhlbWUnLCAnbGlnaHQnKTtcbiAgICB0aGlzLmlzRGFya1N1YmplY3QubmV4dChmYWxzZSk7XG4gIH1cblxuICBzZXRQcmltYXJ5Q29sb3IoY29sb3I6IHN0cmluZywgcGVyc2lzdCA9IHRydWUpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIHRoaXMuZ2VuZXJhdGVQcmltYXJ5U2hhZGVzKGNvbG9yKTtcblxuICAgIC8vIEFsc28gc2V0IGlubGluZSBmb3IgaW1tZWRpYXRlIHVwZGF0ZVxuICAgIGNvbnN0IHJnYiA9IHRoaXMuaGV4VG9SZ2IoY29sb3IpO1xuICAgIGlmIChyZ2IpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgICAnLS1wcmltYXJ5JyxcbiAgICAgICAgYCR7cmdiLnJ9ICR7cmdiLmd9ICR7cmdiLmJ9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocGVyc2lzdCkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RvbGxlLXByaW1hcnktY29sb3InLCBjb2xvcik7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGN1cnJlbnRUaGVtZSgpOiAnZGFyaycgfCAnbGlnaHQnIHtcbiAgICByZXR1cm4gdGhpcy5pc0RhcmtTdWJqZWN0LnZhbHVlID8gJ2RhcmsnIDogJ2xpZ2h0JztcbiAgfVxuXG4gIGdldCBwcmltYXJ5Q29sb3IoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBjc3NWYWx1ZSA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1wcmltYXJ5JykudHJpbSgpO1xuXG4gICAgaWYgKGNzc1ZhbHVlICYmIGNzc1ZhbHVlICE9PSAnJykge1xuICAgICAgLy8gQ29udmVydCBSR0Igc3RyaW5nIGJhY2sgdG8gaGV4IGZvciBleHRlcm5hbCB1c2VcbiAgICAgIGNvbnN0IHJnYlBhcnRzID0gY3NzVmFsdWUuc3BsaXQoJyAnKS5tYXAoTnVtYmVyKTtcbiAgICAgIGlmIChyZ2JQYXJ0cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgcmV0dXJuIGAjJHtyZ2JQYXJ0c1swXS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX0ke3JnYlBhcnRzWzFdLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7cmdiUGFydHNbMl0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvbGxlLXByaW1hcnktY29sb3InKTtcbiAgfVxuXG4gIGdldCByYWRpdXMoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBjc3NWYWx1ZSA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1yYWRpdXMnKS50cmltKCk7XG5cbiAgICBpZiAoY3NzVmFsdWUgJiYgY3NzVmFsdWUgIT09ICcnKSB7XG4gICAgICByZXR1cm4gY3NzVmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2xsZS1yYWRpdXMnKSB8fCAnMC41cmVtJztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBicmFuZCBpZGVudGl0eSB2YXJpYWJsZXMgd2l0aCBmdWxsIHNoYWRlIHBhbGV0dGVcbiAgICovXG4gIGFwcGx5QnJhbmRDb25maWcoY29uZmlnOiBUb2xsZUNvbmZpZykge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgLy8gU2V0IHByaW1hcnkgY29sb3IgaWYgcHJvdmlkZWRcbiAgICBpZiAoY29uZmlnLnByaW1hcnlDb2xvcikge1xuICAgICAgdGhpcy5zZXRQcmltYXJ5Q29sb3IoY29uZmlnLnByaW1hcnlDb2xvciwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIFNldCBib3JkZXIgcmFkaXVzIGlmIHByb3ZpZGVkXG4gICAgaWYgKGNvbmZpZy5yYWRpdXMpIHtcbiAgICAgIHRoaXMuc2V0UmFkaXVzKGNvbmZpZy5yYWRpdXMsIGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -41,4 +41,19 @@ export * from './lib/dropdown-menu.component';
41
41
  export * from './lib/dropdown-separator.component';
42
42
  export * from './lib/dropdown-trigger.directive';
43
43
  export * from './lib/textarea.component';
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsZ0NBQWdDLENBQUE7QUFDOUMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsOEJBQThCLENBQUE7QUFDNUMsY0FBYyxtQ0FBbUMsQ0FBQTtBQUNqRCxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHRvbGxlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvY24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3QtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0LWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3Qtc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zd2l0Y2guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9za2VsZXRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hlY2tib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RvYXN0LnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2FzdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2xsZS1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbXVsdGktc2VsZWN0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhbGVuZGFyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hc2tlZC1pbnB1dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdpbmF0aW9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGEtdGFibGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9sbGUtY2VsbC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2NvcmRpb24taXRlbS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2NvcmRpb24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwtcmVmJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsLXN0YWNrLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbi1ncm91cC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYW5nZS1jYWxlbmRhci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi90aGVtZS5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24taXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tbGFiZWwuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tbWVudS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1zZXBhcmF0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLXRyaWdnZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RleHRhcmVhLmNvbXBvbmVudCc7XG4iXX0=
44
+ export * from './lib/alert.component';
45
+ export * from './lib/avatar.component';
46
+ export * from './lib/avatar-fallback.component';
47
+ export * from './lib/breadcrumb.component';
48
+ export * from './lib/breadcrumb-link.component';
49
+ export * from './lib/breadcrumb-separator.component';
50
+ export * from './lib/breadcrumb-item.component';
51
+ export * from './lib/empty-state.component';
52
+ export * from './lib/otp.component';
53
+ export * from './lib/otp-slot.component';
54
+ export * from './lib/otp-group.component';
55
+ export * from './lib/popover.component';
56
+ export * from './lib/popover-content.component';
57
+ export * from './lib/radio-group.component';
58
+ export * from './lib/radio-item.component';
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsZ0NBQWdDLENBQUE7QUFDOUMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsOEJBQThCLENBQUE7QUFDNUMsY0FBYyxtQ0FBbUMsQ0FBQTtBQUNqRCxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHRvbGxlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvY24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3QtaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0LWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3Qtc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zd2l0Y2guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JhZGdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9za2VsZXRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hlY2tib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rvb2x0aXAuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RvYXN0LnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2FzdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2xsZS1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbXVsdGktc2VsZWN0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhbGVuZGFyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21hc2tlZC1pbnB1dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdpbmF0aW9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGEtdGFibGUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9sbGUtY2VsbC5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2NvcmRpb24taXRlbS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2NvcmRpb24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwtcmVmJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsLXN0YWNrLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbi1ncm91cC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYW5nZS1jYWxlbmRhci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi90aGVtZS5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24taXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tbGFiZWwuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tbWVudS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1zZXBhcmF0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLXRyaWdnZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbGVydC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXZhdGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdmF0YXItZmFsbGJhY2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyZWFkY3J1bWIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyZWFkY3J1bWItbGluay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJlYWRjcnVtYi1zZXBhcmF0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL290cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb3RwLXNsb3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL290cC1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcG9wb3Zlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcG9wb3Zlci1jb250ZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yYWRpby1ncm91cC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFkaW8taXRlbS5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9sbGUtdWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvdG9sbGUtdWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==