genassist-chat-react 1.0.37 → 1.0.38

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.
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ export interface ThemeParams {
3
+ primaryColor: string;
4
+ secondaryColor: string;
5
+ backgroundColor: string;
6
+ textColor: string;
7
+ fontFamily: string;
8
+ fontSize: string;
9
+ }
10
+ export declare function resolveTheme(theme?: Partial<ThemeParams>): ThemeParams;
11
+ export declare function hexToRgba(hex: string, alpha: number): string;
12
+ interface ContainerStyleParams {
13
+ isFullscreen: boolean;
14
+ isFloatingDocked: boolean;
15
+ windowWidth: number;
16
+ t: ThemeParams;
17
+ }
18
+ export declare function getContainerStyle({ isFullscreen, isFloatingDocked, windowWidth, t }: ContainerStyleParams): React.CSSProperties;
19
+ export declare function getHeaderStyle(t: ThemeParams): React.CSSProperties;
20
+ export declare const logoContainerStyle: React.CSSProperties;
21
+ export declare const logoStyle: React.CSSProperties;
22
+ export declare const headerTitleContainerStyle: React.CSSProperties;
23
+ export declare function getHeaderTitleStyle(fontFamily: string): React.CSSProperties;
24
+ export declare function getHeaderSubtitleStyle(fontFamily: string): React.CSSProperties;
25
+ export declare const menuButtonStyle: React.CSSProperties;
26
+ export declare function getMenuPopupStyle(backgroundColor: string): React.CSSProperties;
27
+ export declare function getMenuItemStyle(t: ThemeParams): React.CSSProperties;
28
+ export declare const chatContainerStyle: React.CSSProperties;
29
+ export declare const inputContainerStyle: React.CSSProperties;
30
+ export declare const inputWrapperStyle: React.CSSProperties;
31
+ interface TextAreaStyleParams {
32
+ textAreaFontSize: string;
33
+ fontFamily: string;
34
+ textAreaLineHeight: number;
35
+ textAreaMaxHeightCalculated: number;
36
+ textColor: string;
37
+ }
38
+ export declare function getTextAreaStyle(p: TextAreaStyleParams): React.CSSProperties;
39
+ export declare const attachButtonStyle: React.CSSProperties;
40
+ export declare function getSendButtonStyle(primaryColor: string): React.CSSProperties;
41
+ export declare const sendButtonDisabledStyle: React.CSSProperties;
42
+ export declare const rightActionContainerStyle: React.CSSProperties;
43
+ export declare function getPossibleQueriesContainerStyle(fontFamily: string): React.CSSProperties;
44
+ export declare function getQueryButtonStyle(t: ThemeParams): React.CSSProperties;
45
+ export declare function getConfirmOverlayStyle(showResetConfirm: boolean): React.CSSProperties;
46
+ export declare function getConfirmDialogStyle(t: ThemeParams): React.CSSProperties;
47
+ export declare const confirmButtonsStyle: React.CSSProperties;
48
+ export declare function getConfirmButtonStyle(isConfirm: boolean, t: ThemeParams): React.CSSProperties;
49
+ export declare function getContentCardStyle(backgroundColor: string): React.CSSProperties;
50
+ export declare function getDisclaimerStyle(fontFamily: string): React.CSSProperties;
51
+ interface PositionParams {
52
+ position: string;
53
+ offsetX: number;
54
+ offsetY: number;
55
+ }
56
+ export declare function getPositionStyles({ position, offsetX, offsetY }: PositionParams): React.CSSProperties;
57
+ export declare function getChatPositionStyles({ position, offsetX, offsetY }: PositionParams): React.CSSProperties;
58
+ interface ResponsiveDimensionParams {
59
+ isFullscreen: boolean;
60
+ mode: string;
61
+ }
62
+ export declare function getResponsiveDimensions({ isFullscreen, mode }: ResponsiveDimensionParams): React.CSSProperties;
63
+ interface FloatingShellParams {
64
+ windowHeight: number;
65
+ offsetY: number;
66
+ position: string;
67
+ }
68
+ export declare function getFloatingShellStyle({ windowHeight, offsetY, position }: FloatingShellParams): React.CSSProperties;
69
+ interface FloatingContainerParams {
70
+ mode: string;
71
+ isFullscreen: boolean;
72
+ windowWidth: number;
73
+ windowHeight: number;
74
+ position: string;
75
+ offsetX: number;
76
+ offsetY: number;
77
+ }
78
+ export declare function getFloatingContainerStyle(p: FloatingContainerParams): React.CSSProperties;
79
+ export declare const CSS_KEYFRAMES = "\n @keyframes blink { 0% { opacity: 0.2; } 20% { opacity: 1; } 100% { opacity: 0.2; } }\n .ga-textarea-nosb {\n scrollbar-width: none;\n -ms-overflow-style: none;\n max-width: 100%;\n box-sizing: border-box;\n }\n .ga-textarea-nosb::-webkit-scrollbar { width: 0; height: 0; }\n .ga-input-disclaimer a {\n color: #9ca3af !important;\n text-decoration: underline;\n }\n .ga-input-disclaimer a:hover {\n color: #6b7280 !important;\n }\n @media (max-width: 768px) {\n .ga-textarea-nosb {\n font-size: 16px !important;\n }\n }\n @keyframes ga-backlight-sweep2 { 0% { transform: translateX(-35%); } 100% { transform: translateX(105%); } }\n @keyframes ga-backlight-pulse { 0%,100% { opacity: 0.7; } 50% { opacity: 1; } }\n @keyframes ga-think-change { 0% { opacity: 0; transform: translateY(4px); } 100% { opacity: 1; transform: translateY(0); } }\n .grecaptcha-badge {\n display: none !important;\n visibility: hidden !important;\n position: absolute !important;\n width: 0 !important;\n height: 0 !important;\n overflow: hidden !important;\n opacity: 0 !important;\n pointer-events: none !important;\n }\n";
80
+ export {};
@@ -0,0 +1,427 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ export function resolveTheme(theme) {
13
+ return {
14
+ primaryColor: (theme === null || theme === void 0 ? void 0 : theme.primaryColor) || '#2962FF',
15
+ backgroundColor: (theme === null || theme === void 0 ? void 0 : theme.backgroundColor) || '#ffffff',
16
+ textColor: (theme === null || theme === void 0 ? void 0 : theme.textColor) || '#000000',
17
+ fontFamily: (theme === null || theme === void 0 ? void 0 : theme.fontFamily) || 'Roboto, Arial, sans-serif',
18
+ fontSize: (theme === null || theme === void 0 ? void 0 : theme.fontSize) || '14px',
19
+ secondaryColor: (theme === null || theme === void 0 ? void 0 : theme.secondaryColor) || '#f5f5f5',
20
+ };
21
+ }
22
+ export function hexToRgba(hex, alpha) {
23
+ var r = parseInt(hex.slice(1, 3), 16);
24
+ var g = parseInt(hex.slice(3, 5), 16);
25
+ var b = parseInt(hex.slice(5, 7), 16);
26
+ return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(alpha, ")");
27
+ }
28
+ export function getContainerStyle(_a) {
29
+ var isFullscreen = _a.isFullscreen, isFloatingDocked = _a.isFloatingDocked, windowWidth = _a.windowWidth, t = _a.t;
30
+ return {
31
+ display: 'flex',
32
+ flexDirection: 'column',
33
+ height: isFullscreen ? undefined : '100%',
34
+ maxHeight: isFullscreen
35
+ ? undefined
36
+ : isFloatingDocked
37
+ ? '100%'
38
+ : windowWidth > 768
39
+ ? '700px'
40
+ : '600px',
41
+ minHeight: isFloatingDocked ? 0 : undefined,
42
+ width: isFullscreen ? '100vw' : '380px',
43
+ maxWidth: isFullscreen ? '100vw' : '400px',
44
+ border: isFullscreen ? 'none' : '1px solid #e0e0e0',
45
+ borderRadius: isFullscreen ? '0' : '32px',
46
+ overflow: 'hidden',
47
+ backgroundColor: t.secondaryColor,
48
+ fontFamily: t.fontFamily,
49
+ boxShadow: isFullscreen ? 'none' : "0 4px 20px rgba(0, 0, 0, 0.2)",
50
+ position: isFullscreen ? 'fixed' : 'relative',
51
+ top: isFullscreen ? 0 : undefined,
52
+ left: isFullscreen ? 0 : undefined,
53
+ right: isFullscreen ? 0 : undefined,
54
+ bottom: isFullscreen ? 'env(safe-area-inset-bottom, 0px)' : undefined,
55
+ zIndex: isFullscreen ? 9999 : undefined,
56
+ };
57
+ }
58
+ export function getHeaderStyle(t) {
59
+ return {
60
+ padding: '15px',
61
+ backgroundColor: t.secondaryColor,
62
+ color: '#111111',
63
+ fontWeight: 'bold',
64
+ display: 'flex',
65
+ justifyContent: 'space-between',
66
+ alignItems: 'center',
67
+ position: 'relative',
68
+ };
69
+ }
70
+ export var logoContainerStyle = {
71
+ display: 'flex',
72
+ alignItems: 'center',
73
+ gap: '10px',
74
+ position: 'relative',
75
+ zIndex: 1,
76
+ };
77
+ export var logoStyle = {
78
+ width: '28px',
79
+ height: '28px',
80
+ };
81
+ export var headerTitleContainerStyle = {
82
+ display: 'flex',
83
+ flexDirection: 'column',
84
+ };
85
+ export function getHeaderTitleStyle(fontFamily) {
86
+ return {
87
+ fontSize: '16px',
88
+ fontWeight: 'bold',
89
+ margin: 0,
90
+ fontFamily: fontFamily,
91
+ };
92
+ }
93
+ export function getHeaderSubtitleStyle(fontFamily) {
94
+ return {
95
+ fontSize: '14px',
96
+ fontWeight: 'normal',
97
+ margin: 0,
98
+ fontFamily: fontFamily,
99
+ };
100
+ }
101
+ export var menuButtonStyle = {
102
+ backgroundColor: 'transparent',
103
+ color: '#111111',
104
+ border: 'none',
105
+ borderRadius: '50%',
106
+ width: '32px',
107
+ height: '32px',
108
+ display: 'flex',
109
+ alignItems: 'center',
110
+ justifyContent: 'center',
111
+ cursor: 'pointer',
112
+ outline: 'none',
113
+ position: 'relative',
114
+ zIndex: 1,
115
+ };
116
+ export function getMenuPopupStyle(backgroundColor) {
117
+ return {
118
+ position: 'absolute',
119
+ top: '50px',
120
+ right: '15px',
121
+ backgroundColor: backgroundColor,
122
+ borderRadius: '8px',
123
+ boxShadow: '0 2px 10px rgba(0, 0, 0, 0.1)',
124
+ zIndex: 1000,
125
+ minWidth: '150px',
126
+ overflow: 'visible',
127
+ };
128
+ }
129
+ export function getMenuItemStyle(t) {
130
+ return {
131
+ display: 'flex',
132
+ alignItems: 'center',
133
+ gap: '8px',
134
+ padding: '10px 15px',
135
+ color: t.textColor,
136
+ cursor: 'pointer',
137
+ fontSize: t.fontSize,
138
+ fontFamily: t.fontFamily,
139
+ borderBottom: '1px solid #f0f0f0',
140
+ };
141
+ }
142
+ export var chatContainerStyle = {
143
+ flex: 1,
144
+ minHeight: 0,
145
+ overflowY: 'auto',
146
+ padding: '15px',
147
+ backgroundColor: 'transparent',
148
+ display: 'flex',
149
+ flexDirection: 'column',
150
+ };
151
+ export var inputContainerStyle = {
152
+ display: 'flex',
153
+ padding: '12px 15px',
154
+ backgroundColor: '#ffffff',
155
+ alignItems: 'center',
156
+ gap: '8px',
157
+ flexShrink: 0,
158
+ overflowX: 'hidden',
159
+ minWidth: 0,
160
+ };
161
+ export var inputWrapperStyle = {
162
+ display: 'flex',
163
+ flex: 1,
164
+ alignItems: 'center',
165
+ backgroundColor: '#ffffff',
166
+ borderRadius: '24px',
167
+ border: '1px solid #e5e7eb',
168
+ padding: '0 12px',
169
+ minHeight: '50px',
170
+ boxShadow: '0 1px 3px rgba(0, 0, 0, 0.06)',
171
+ position: 'relative',
172
+ overflowX: 'hidden',
173
+ minWidth: 0,
174
+ };
175
+ export function getTextAreaStyle(p) {
176
+ return {
177
+ flex: 1,
178
+ border: 'none',
179
+ outline: 'none',
180
+ background: 'transparent',
181
+ fontSize: p.textAreaFontSize,
182
+ fontFamily: p.fontFamily,
183
+ padding: '10px',
184
+ paddingRight: '46px',
185
+ color: p.textColor,
186
+ resize: 'none',
187
+ lineHeight: "".concat(p.textAreaLineHeight, "px"),
188
+ maxHeight: "".concat(p.textAreaMaxHeightCalculated, "px"),
189
+ overflowY: 'hidden',
190
+ overflowX: 'hidden',
191
+ minWidth: 0,
192
+ width: '100%',
193
+ boxSizing: 'border-box',
194
+ };
195
+ }
196
+ export var attachButtonStyle = {
197
+ backgroundColor: 'transparent',
198
+ border: 'none',
199
+ display: 'flex',
200
+ alignItems: 'center',
201
+ justifyContent: 'center',
202
+ cursor: 'pointer',
203
+ outline: 'none',
204
+ color: '#757575',
205
+ padding: 0,
206
+ };
207
+ export function getSendButtonStyle(primaryColor) {
208
+ return {
209
+ backgroundColor: primaryColor,
210
+ color: '#ffffff',
211
+ border: 'none',
212
+ borderRadius: '50%',
213
+ width: '36px',
214
+ height: '36px',
215
+ display: 'flex',
216
+ alignItems: 'center',
217
+ justifyContent: 'center',
218
+ cursor: 'pointer',
219
+ outline: 'none',
220
+ flexShrink: 0,
221
+ boxShadow: '0 1px 3px rgba(0, 0, 0, 0.08)',
222
+ };
223
+ }
224
+ export var sendButtonDisabledStyle = {
225
+ backgroundColor: '#d1d5db',
226
+ cursor: 'not-allowed',
227
+ opacity: 0.8,
228
+ };
229
+ export var rightActionContainerStyle = {
230
+ position: 'absolute',
231
+ right: '4px',
232
+ top: '50%',
233
+ transform: 'translateY(-50%)',
234
+ display: 'flex',
235
+ alignItems: 'center',
236
+ justifyContent: 'center',
237
+ };
238
+ export function getPossibleQueriesContainerStyle(fontFamily) {
239
+ return {
240
+ display: 'flex',
241
+ flexDirection: 'column',
242
+ gap: '8px',
243
+ padding: '0',
244
+ paddingLeft: '28px',
245
+ paddingRight: '28px',
246
+ marginTop: '5px',
247
+ marginBottom: '15px',
248
+ width: '100%',
249
+ fontFamily: fontFamily,
250
+ };
251
+ }
252
+ export function getQueryButtonStyle(t) {
253
+ return {
254
+ padding: '12px 15px',
255
+ backgroundColor: t.secondaryColor,
256
+ color: t.textColor,
257
+ border: 'none',
258
+ borderRadius: '6px',
259
+ fontSize: t.fontSize,
260
+ cursor: 'pointer',
261
+ textAlign: 'left',
262
+ fontWeight: 'normal',
263
+ boxShadow: 'none',
264
+ width: '100%',
265
+ maxWidth: '240px',
266
+ fontFamily: t.fontFamily,
267
+ };
268
+ }
269
+ export function getConfirmOverlayStyle(showResetConfirm) {
270
+ return {
271
+ display: showResetConfirm ? 'flex' : 'none',
272
+ position: 'absolute',
273
+ top: 0,
274
+ left: 0,
275
+ right: 0,
276
+ bottom: 0,
277
+ backgroundColor: 'rgba(0, 0, 0, 0.5)',
278
+ zIndex: 10,
279
+ justifyContent: 'center',
280
+ alignItems: 'center',
281
+ };
282
+ }
283
+ export function getConfirmDialogStyle(t) {
284
+ return {
285
+ backgroundColor: t.backgroundColor,
286
+ padding: '20px',
287
+ borderRadius: '8px',
288
+ maxWidth: '300px',
289
+ textAlign: 'center',
290
+ fontFamily: t.fontFamily,
291
+ color: t.textColor,
292
+ };
293
+ }
294
+ export var confirmButtonsStyle = {
295
+ display: 'flex',
296
+ justifyContent: 'center',
297
+ marginTop: '15px',
298
+ gap: '10px',
299
+ };
300
+ export function getConfirmButtonStyle(isConfirm, t) {
301
+ return {
302
+ padding: '8px 16px',
303
+ backgroundColor: isConfirm ? '#F44336' : '#e0e0e0',
304
+ color: isConfirm ? '#ffffff' : t.textColor,
305
+ border: 'none',
306
+ borderRadius: '4px',
307
+ cursor: 'pointer',
308
+ fontFamily: t.fontFamily,
309
+ fontSize: t.fontSize,
310
+ };
311
+ }
312
+ export function getContentCardStyle(backgroundColor) {
313
+ return {
314
+ flex: 1,
315
+ display: 'flex',
316
+ flexDirection: 'column',
317
+ backgroundColor: backgroundColor,
318
+ borderTopLeftRadius: 24,
319
+ borderTopRightRadius: 24,
320
+ boxShadow: '0 -2px 6px rgba(0,0,0,0.03)',
321
+ position: 'relative',
322
+ zIndex: 2,
323
+ overflow: 'hidden',
324
+ minHeight: 0,
325
+ };
326
+ }
327
+ export function getDisclaimerStyle(fontFamily) {
328
+ return {
329
+ textAlign: 'left',
330
+ fontSize: '12px',
331
+ color: '#9ca3af',
332
+ margin: '12px 4px 2px 4px',
333
+ fontFamily: fontFamily,
334
+ };
335
+ }
336
+ export function getPositionStyles(_a) {
337
+ var position = _a.position, offsetX = _a.offsetX, offsetY = _a.offsetY;
338
+ var base = {
339
+ position: 'fixed',
340
+ zIndex: 1000,
341
+ };
342
+ switch (position) {
343
+ case 'bottom-right':
344
+ return __assign(__assign({}, base), { bottom: offsetY, right: offsetX });
345
+ case 'bottom-left':
346
+ return __assign(__assign({}, base), { bottom: offsetY, left: offsetX });
347
+ case 'top-right':
348
+ return __assign(__assign({}, base), { top: offsetY, right: offsetX });
349
+ case 'top-left':
350
+ return __assign(__assign({}, base), { top: offsetY, left: offsetX });
351
+ default:
352
+ return __assign(__assign({}, base), { bottom: offsetY, right: offsetX });
353
+ }
354
+ }
355
+ export function getChatPositionStyles(_a) {
356
+ var position = _a.position, offsetX = _a.offsetX, offsetY = _a.offsetY;
357
+ var base = {
358
+ position: 'fixed',
359
+ borderRadius: '32px',
360
+ zIndex: 1004,
361
+ };
362
+ switch (position) {
363
+ case 'bottom-right':
364
+ return __assign(__assign({}, base), { bottom: offsetY, right: offsetX });
365
+ case 'bottom-left':
366
+ return __assign(__assign({}, base), { bottom: offsetY, left: offsetX });
367
+ case 'top-right':
368
+ return __assign(__assign({}, base), { top: offsetY, right: offsetX });
369
+ case 'top-left':
370
+ return __assign(__assign({}, base), { top: offsetY, left: offsetX });
371
+ default:
372
+ return __assign(__assign({}, base), { bottom: offsetY, right: offsetX });
373
+ }
374
+ }
375
+ export function getResponsiveDimensions(_a) {
376
+ var isFullscreen = _a.isFullscreen, mode = _a.mode;
377
+ var screenWidth = typeof window !== 'undefined' ? window.innerWidth : 1024;
378
+ var fallbackHeight = isFullscreen ? '100vh' : '60vh';
379
+ if (isFullscreen) {
380
+ return { width: '100vw', height: fallbackHeight, borderRadius: '0' };
381
+ }
382
+ if (mode === 'floating') {
383
+ if (screenWidth <= 480) {
384
+ return { width: 'calc(100vw - 40px)' };
385
+ }
386
+ if (screenWidth <= 768) {
387
+ return { width: '350px' };
388
+ }
389
+ return { width: '380px' };
390
+ }
391
+ if (screenWidth <= 480) {
392
+ return { width: 'calc(100vw - 40px)', height: fallbackHeight };
393
+ }
394
+ if (screenWidth <= 768) {
395
+ return { width: '350px', height: fallbackHeight };
396
+ }
397
+ return { width: '380px', height: fallbackHeight };
398
+ }
399
+ export function getFloatingShellStyle(_a) {
400
+ var windowHeight = _a.windowHeight, offsetY = _a.offsetY, position = _a.position;
401
+ var screenWidth = typeof window !== 'undefined' ? window.innerWidth : 1024;
402
+ var screenHeight = typeof window !== 'undefined' ? window.innerHeight : 1080;
403
+ var margin = 10;
404
+ var usableHeight = Math.max(280, windowHeight - offsetY - margin * 10);
405
+ var maxHeight = usableHeight;
406
+ if (screenWidth >= 765 && screenHeight >= 1070) {
407
+ maxHeight = '60vh';
408
+ }
409
+ return __assign({ display: 'flex', flexDirection: 'column', maxHeight: maxHeight, height: usableHeight }, (position === 'top-right' || position === 'top-left'
410
+ ? { top: offsetY, bottom: 'auto' }
411
+ : { top: 'auto', bottom: offsetY }));
412
+ }
413
+ export function getFloatingContainerStyle(p) {
414
+ return __assign({}, ((p.mode === 'fullscreen' || (p.isFullscreen && p.windowWidth <= 768))
415
+ ? {
416
+ position: 'fixed',
417
+ top: 0,
418
+ left: 0,
419
+ right: 0,
420
+ bottom: 'env(safe-area-inset-bottom, 0px)',
421
+ borderRadius: '0',
422
+ zIndex: 9999,
423
+ }
424
+ : __assign(__assign(__assign({}, getChatPositionStyles({ position: p.position, offsetX: p.offsetX, offsetY: p.offsetY })), getResponsiveDimensions({ isFullscreen: p.isFullscreen, mode: p.mode })), (p.mode === 'floating' && !p.isFullscreen ? getFloatingShellStyle({ windowHeight: p.windowHeight, offsetY: p.offsetY, position: p.position }) : {}))));
425
+ }
426
+ export var CSS_KEYFRAMES = "\n @keyframes blink { 0% { opacity: 0.2; } 20% { opacity: 1; } 100% { opacity: 0.2; } }\n .ga-textarea-nosb {\n scrollbar-width: none;\n -ms-overflow-style: none;\n max-width: 100%;\n box-sizing: border-box;\n }\n .ga-textarea-nosb::-webkit-scrollbar { width: 0; height: 0; }\n .ga-input-disclaimer a {\n color: #9ca3af !important;\n text-decoration: underline;\n }\n .ga-input-disclaimer a:hover {\n color: #6b7280 !important;\n }\n @media (max-width: 768px) {\n .ga-textarea-nosb {\n font-size: 16px !important;\n }\n }\n @keyframes ga-backlight-sweep2 { 0% { transform: translateX(-35%); } 100% { transform: translateX(105%); } }\n @keyframes ga-backlight-pulse { 0%,100% { opacity: 0.7; } 50% { opacity: 1; } }\n @keyframes ga-think-change { 0% { opacity: 0; transform: translateY(4px); } 100% { opacity: 1; transform: translateY(0); } }\n .grecaptcha-badge {\n display: none !important;\n visibility: hidden !important;\n position: absolute !important;\n width: 0 !important;\n height: 0 !important;\n overflow: hidden !important;\n opacity: 0 !important;\n pointer-events: none !important;\n }\n";
427
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuQWdlbnRDaGF0U3R5bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0eWxlcy9nZW5BZ2VudENoYXRTdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFXQSxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQTRCO0lBQ3ZELE9BQU87UUFDTCxZQUFZLEVBQUUsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsWUFBWSxLQUFJLFNBQVM7UUFDOUMsZUFBZSxFQUFFLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGVBQWUsS0FBSSxTQUFTO1FBQ3BELFNBQVMsRUFBRSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxTQUFTLEtBQUksU0FBUztRQUN4QyxVQUFVLEVBQUUsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsVUFBVSxLQUFJLDJCQUEyQjtRQUM1RCxRQUFRLEVBQUUsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsUUFBUSxLQUFJLE1BQU07UUFDbkMsY0FBYyxFQUFFLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGNBQWMsS0FBSSxTQUFTO0tBQ25ELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBYTtJQUNsRCxJQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLElBQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFD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QUMsSUFBTSxhQUFhLEdBQUcsc3BDQWtDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlbWVQYXJhbXMge1xuICBwcmltYXJ5Q29sb3I6IHN0cmluZztcbiAgc2Vjb25kYXJ5Q29sb3I6IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcjogc3RyaW5nO1xuICBmb250RmFtaWx5OiBzdHJpbmc7XG4gIGZvbnRTaXplOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVGhlbWUodGhlbWU/OiBQYXJ0aWFsPFRoZW1lUGFyYW1zPik6IFRoZW1lUGFyYW1zIHtcbiAgcmV0dXJuIHtcbiAgICBwcmltYXJ5Q29sb3I6IHRoZW1lPy5wcmltYXJ5Q29sb3IgfHwgJyMyOTYyRkYnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWU/LmJhY2tncm91bmRDb2xvciB8fCAnI2ZmZmZmZicsXG4gICAgdGV4dENvbG9yOiB0aGVtZT8udGV4dENvbG9yIHx8ICcjMDAwMDAwJyxcbiAgICBmb250RmFtaWx5OiB0aGVtZT8uZm9udEZhbWlseSB8fCAnUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZicsXG4gICAgZm9udFNpemU6IHRoZW1lPy5mb250U2l6ZSB8fCAnMTRweCcsXG4gICAgc2Vjb25kYXJ5Q29sb3I6IHRoZW1lPy5zZWNvbmRhcnlDb2xvciB8fCAnI2Y1ZjVmNScsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoZXhUb1JnYmEoaGV4OiBzdHJpbmcsIGFscGhhOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCByID0gcGFyc2VJbnQoaGV4LnNsaWNlKDEsIDMpLCAxNik7XG4gIGNvbnN0IGcgPSBwYXJzZUludChoZXguc2xpY2UoMywgNSksIDE2KTtcbiAgY29uc3QgYiA9IHBhcnNlSW50KGhleC5zbGljZSg1LCA3KSwgMTYpO1xuICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHthbHBoYX0pYDtcbn1cblxuaW50ZXJmYWNlIENvbnRhaW5lclN0eWxlUGFyYW1zIHtcbiAgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuICBpc0Zsb2F0aW5nRG9ja2VkOiBib29sZWFuO1xuICB3aW5kb3dXaWR0aDogbnVtYmVyO1xuICB0OiBUaGVtZVBhcmFtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRhaW5lclN0eWxlKHsgaXNGdWxsc2NyZWVuLCBpc0Zsb2F0aW5nRG9ja2VkLCB3aW5kb3dXaWR0aCwgdCB9OiBDb250YWluZXJTdHlsZVBhcmFtcyk6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICByZXR1cm4ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBoZWlnaHQ6IGlzRnVsbHNjcmVlbiA/IHVuZGVmaW5lZCA6ICcxMDAlJyxcbiAgICBtYXhIZWlnaHQ6IGlzRnVsbHNjcmVlblxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogaXNGbG9hdGluZ0RvY2tlZFxuICAgICAgICA/ICcxMDAlJ1xuICAgICAgICA6IHdpbmRvd1dpZHRoID4gNzY4XG4gICAgICAgICAgPyAnNzAwcHgnXG4gICAgICAgICAgOiAnNjAwcHgnLFxuICAgIG1pbkhlaWdodDogaXNGbG9hdGluZ0RvY2tlZCA/IDAgOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IGlzRnVsbHNjcmVlbiA/ICcxMDB2dycgOiAnMzgwcHgnLFxuICAgIG1heFdpZHRoOiBpc0Z1bGxzY3JlZW4gPyAnMTAwdncnIDogJzQwMHB4JyxcbiAgICBib3JkZXI6IGlzRnVsbHNjcmVlbiA/ICdub25lJyA6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgYm9yZGVyUmFkaXVzOiBpc0Z1bGxzY3JlZW4gPyAnMCcgOiAnMzJweCcsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIGJhY2tncm91bmRDb2xvcjogdC5zZWNvbmRhcnlDb2xvcixcbiAgICBmb250RmFtaWx5OiB0LmZvbnRGYW1pbHksXG4gICAgYm94U2hhZG93OiBpc0Z1bGxzY3JlZW4gPyAnbm9uZScgOiBcIjAgNHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjIpXCIsXG4gICAgcG9zaXRpb246IGlzRnVsbHNjcmVlbiA/ICdmaXhlZCcgOiAncmVsYXRpdmUnLFxuICAgIHRvcDogaXNGdWxsc2NyZWVuID8gMCA6IHVuZGVmaW5lZCxcbiAgICBsZWZ0OiBpc0Z1bGxzY3JlZW4gPyAwIDogdW5kZWZpbmVkLFxuICAgIHJpZ2h0OiBpc0Z1bGxzY3JlZW4gPyAwIDogdW5kZWZpbmVkLFxuICAgIGJvdHRvbTogaXNGdWxsc2NyZWVuID8gJ2VudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpJyA6IHVuZGVmaW5lZCxcbiAgICB6SW5kZXg6IGlzRnVsbHNjcmVlbiA/IDk5OTkgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJTdHlsZSh0OiBUaGVtZVBhcmFtcyk6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICByZXR1cm4ge1xuICAgIHBhZGRpbmc6ICcxNXB4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHQuc2Vjb25kYXJ5Q29sb3IsXG4gICAgY29sb3I6ICcjMTExMTExJyxcbiAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBsb2dvQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGdhcDogJzEwcHgnLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgekluZGV4OiAxLFxufTtcblxuZXhwb3J0IGNvbnN0IGxvZ29TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgd2lkdGg6ICcyOHB4JyxcbiAgaGVpZ2h0OiAnMjhweCcsXG59O1xuXG5leHBvcnQgY29uc3QgaGVhZGVyVGl0bGVDb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJUaXRsZVN0eWxlKGZvbnRGYW1pbHk6IHN0cmluZyk6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICByZXR1cm4ge1xuICAgIGZvbnRTaXplOiAnMTZweCcsXG4gICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgIG1hcmdpbjogMCxcbiAgICBmb250RmFtaWx5LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVhZGVyU3VidGl0bGVTdHlsZShmb250RmFtaWx5OiBzdHJpbmcpOiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHtcbiAgcmV0dXJuIHtcbiAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgIG1hcmdpbjogMCxcbiAgICBmb250RmFtaWx5LFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgbWVudUJ1dHRvblN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gIGNvbG9yOiAnIzExMTExMScsXG4gIGJvcmRlcjogJ25vbmUnLFxuICBib3JkZXJSYWRpdXM6ICc1MCUnLFxuICB3aWR0aDogJzMycHgnLFxuICBoZWlnaHQ6ICczMnB4JyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgb3V0bGluZTogJ25vbmUnLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgekluZGV4OiAxLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbnVQb3B1cFN0eWxlKGJhY2tncm91bmRDb2xvcjogc3RyaW5nKTogUmVhY3QuQ1NTUHJvcGVydGllcyB7XG4gIHJldHVybiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAnNTBweCcsXG4gICAgcmlnaHQ6ICcxNXB4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcbiAgICBib3hTaGFkb3c6ICcwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKScsXG4gICAgekluZGV4OiAxMDAwLFxuICAgIG1pbldpZHRoOiAnMTUwcHgnLFxuICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51SXRlbVN0eWxlKHQ6IFRoZW1lUGFyYW1zKTogUmVhY3QuQ1NTUHJvcGVydGllcyB7XG4gIHJldHVybiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGdhcDogJzhweCcsXG4gICAgcGFkZGluZzogJzEwcHggMTVweCcsXG4gICAgY29sb3I6IHQudGV4dENvbG9yLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGZvbnRTaXplOiB0LmZvbnRTaXplLFxuICAgIGZvbnRGYW1pbHk6IHQuZm9udEZhbWlseSxcbiAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2YwZjBmMCcsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBjaGF0Q29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIGZsZXg6IDEsXG4gIG1pbkhlaWdodDogMCxcbiAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gIHBhZGRpbmc6ICcxNXB4JyxcbiAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxufTtcblxuZXhwb3J0IGNvbnN0IGlucHV0Q29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogJzEycHggMTVweCcsXG4gIGJhY2tncm91bmRDb2xvcjogJyNmZmZmZmYnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgZ2FwOiAnOHB4JyxcbiAgZmxleFNocmluazogMCxcbiAgb3ZlcmZsb3dYOiAnaGlkZGVuJyxcbiAgbWluV2lkdGg6IDAsXG59O1xuXG5leHBvcnQgY29uc3QgaW5wdXRXcmFwcGVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgZmxleDogMSxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGJhY2tncm91bmRDb2xvcjogJyNmZmZmZmYnLFxuICBib3JkZXJSYWRpdXM6ICcyNHB4JyxcbiAgYm9yZGVyOiAnMXB4IHNvbGlkICNlNWU3ZWInLFxuICBwYWRkaW5nOiAnMCAxMnB4JyxcbiAgbWluSGVpZ2h0OiAnNTBweCcsXG4gIGJveFNoYWRvdzogJzAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMDYpJyxcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIG92ZXJmbG93WDogJ2hpZGRlbicsXG4gIG1pbldpZHRoOiAwLFxufTtcblxuaW50ZXJmYWNlIFRleHRBcmVhU3R5bGVQYXJhbXMge1xuICB0ZXh0QXJlYUZvbnRTaXplOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgdGV4dEFyZWFMaW5lSGVpZ2h0OiBudW1iZXI7XG4gIHRleHRBcmVhTWF4SGVpZ2h0Q2FsY3VsYXRlZDogbnVtYmVyO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRBcmVhU3R5bGUocDogVGV4dEFyZWFTdHlsZVBhcmFtcyk6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICByZXR1cm4ge1xuICAgIGZsZXg6IDEsXG4gICAgYm9yZGVyOiAnbm9uZScsXG4gICAgb3V0bGluZTogJ25vbmUnLFxuICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgZm9udFNpemU6IHAudGV4dEFyZWFGb250U2l6ZSxcbiAgICBmb250RmFtaWx5OiBwLmZvbnRGYW1pbHksXG4gICAgcGFkZGluZzogJzEwcHgnLFxuICAgIHBhZGRpbmdSaWdodDogJzQ2cHgnLFxuICAgIGNvbG9yOiBwLnRleHRDb2xvcixcbiAgICByZXNpemU6ICdub25lJyxcbiAgICBsaW5lSGVpZ2h0OiBgJHtwLnRleHRBcmVhTGluZUhlaWdodH1weGAsXG4gICAgbWF4SGVpZ2h0OiBgJHtwLnRleHRBcmVhTWF4SGVpZ2h0Q2FsY3VsYXRlZH1weGAsXG4gICAgb3ZlcmZsb3dZOiAnaGlkZGVuJyxcbiAgICBvdmVyZmxvd1g6ICdoaWRkZW4nLFxuICAgIG1pbldpZHRoOiAwLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBhdHRhY2hCdXR0b25TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICBib3JkZXI6ICdub25lJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgb3V0bGluZTogJ25vbmUnLFxuICBjb2xvcjogJyM3NTc1NzUnLFxuICBwYWRkaW5nOiAwLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbmRCdXR0b25TdHlsZShwcmltYXJ5Q29sb3I6IHN0cmluZyk6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICByZXR1cm4ge1xuICAgIGJhY2tncm91bmRDb2xvcjogcHJpbWFyeUNvbG9yLFxuICAgIGNvbG9yOiAnI2ZmZmZmZicsXG4gICAgYm9yZGVyOiAnbm9uZScsXG4gICAgYm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgICB3aWR0aDogJzM2cHgnLFxuICAgIGhlaWdodDogJzM2cHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgb3V0bGluZTogJ25vbmUnLFxuICAgIGZsZXhTaHJpbms6IDAsXG4gICAgYm94U2hhZG93OiAnMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4wOCknLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3Qgc2VuZEJ1dHRvbkRpc2FibGVkU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIGJhY2tncm91bmRDb2xvcjogJyNkMWQ1ZGInLFxuICBjdXJzb3I6ICdub3QtYWxsb3dlZCcsXG4gIG9wYWNpdHk6IDAuOCxcbn07XG5cbmV4cG9ydCBjb25zdCByaWdodEFjdGlvbkNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgcmlnaHQ6ICc0cHgnLFxuICB0b3A6ICc1MCUnLFxuICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC01MCUpJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc3NpYmxlUXVlcmllc0NvbnRhaW5lclN0eWxlKGZvbnRGYW1pbHk6IHN0cmluZyk6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICByZXR1cm4ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBnYXA6ICc4cHgnLFxuICAgIHBhZGRpbmc6ICcwJyxcbiAgICBwYWRkaW5nTGVmdDogJzI4cHgnLFxuICAgIHBhZGRpbmdSaWdodDogJzI4cHgnLFxuICAgIG1hcmdpblRvcDogJzVweCcsXG4gICAgbWFyZ2luQm90dG9tOiAnMTVweCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBmb250RmFtaWx5LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVlcnlCdXR0b25TdHlsZSh0OiBUaGVtZVBhcmFtcyk6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICByZXR1cm4ge1xuICAgIHBhZGRpbmc6ICcxMnB4IDE1cHgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdC5zZWNvbmRhcnlDb2xvcixcbiAgICBjb2xvcjogdC50ZXh0Q29sb3IsXG4gICAgYm9yZGVyOiAnbm9uZScsXG4gICAgYm9yZGVyUmFkaXVzOiAnNnB4JyxcbiAgICBmb250U2l6ZTogdC5mb250U2l6ZSxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICBib3hTaGFkb3c6ICdub25lJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIG1heFdpZHRoOiAnMjQwcHgnLFxuICAgIGZvbnRGYW1pbHk6IHQuZm9udEZhbWlseSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpcm1PdmVybGF5U3R5bGUoc2hvd1Jlc2V0Q29uZmlybTogYm9vbGVhbik6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICByZXR1cm4ge1xuICAgIGRpc3BsYXk6IHNob3dSZXNldENvbmZpcm0gPyAnZmxleCcgOiAnbm9uZScsXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC41KScsXG4gICAgekluZGV4OiAxMCxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maXJtRGlhbG9nU3R5bGUodDogVGhlbWVQYXJhbXMpOiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHtcbiAgcmV0dXJuIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHQuYmFja2dyb3VuZENvbG9yLFxuICAgIHBhZGRpbmc6ICcyMHB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICc4cHgnLFxuICAgIG1heFdpZHRoOiAnMzAwcHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgZm9udEZhbWlseTogdC5mb250RmFtaWx5LFxuICAgIGNvbG9yOiB0LnRleHRDb2xvcixcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGNvbmZpcm1CdXR0b25zU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICBtYXJnaW5Ub3A6ICcxNXB4JyxcbiAgZ2FwOiAnMTBweCcsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlybUJ1dHRvblN0eWxlKGlzQ29uZmlybTogYm9vbGVhbiwgdDogVGhlbWVQYXJhbXMpOiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHtcbiAgcmV0dXJuIHtcbiAgICBwYWRkaW5nOiAnOHB4IDE2cHgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogaXNDb25maXJtID8gJyNGNDQzMzYnIDogJyNlMGUwZTAnLFxuICAgIGNvbG9yOiBpc0NvbmZpcm0gPyAnI2ZmZmZmZicgOiB0LnRleHRDb2xvcixcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGZvbnRGYW1pbHk6IHQuZm9udEZhbWlseSxcbiAgICBmb250U2l6ZTogdC5mb250U2l6ZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRlbnRDYXJkU3R5bGUoYmFja2dyb3VuZENvbG9yOiBzdHJpbmcpOiBSZWFjdC5DU1NQcm9wZXJ0aWVzIHtcbiAgcmV0dXJuIHtcbiAgICBmbGV4OiAxLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgYm9yZGVyVG9wTGVmdFJhZGl1czogMjQsXG4gICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6IDI0LFxuICAgIGJveFNoYWRvdzogJzAgLTJweCA2cHggcmdiYSgwLDAsMCwwLjAzKScsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgekluZGV4OiAyLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICBtaW5IZWlnaHQ6IDAsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXNjbGFpbWVyU3R5bGUoZm9udEZhbWlseTogc3RyaW5nKTogUmVhY3QuQ1NTUHJvcGVydGllcyB7XG4gIHJldHVybiB7XG4gICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICBjb2xvcjogJyM5Y2EzYWYnLFxuICAgIG1hcmdpbjogJzEycHggNHB4IDJweCA0cHgnLFxuICAgIGZvbnRGYW1pbHksXG4gIH07XG59XG5cbmludGVyZmFjZSBQb3NpdGlvblBhcmFtcyB7XG4gIHBvc2l0aW9uOiBzdHJpbmc7XG4gIG9mZnNldFg6IG51bWJlcjtcbiAgb2Zmc2V0WTogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9zaXRpb25TdHlsZXMoeyBwb3NpdGlvbiwgb2Zmc2V0WCwgb2Zmc2V0WSB9OiBQb3NpdGlvblBhcmFtcyk6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICBjb25zdCBiYXNlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgIHpJbmRleDogMTAwMCxcbiAgfTtcblxuICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgY2FzZSAnYm90dG9tLXJpZ2h0JzpcbiAgICAgIHJldHVybiB7IC4uLmJhc2UsIGJvdHRvbTogb2Zmc2V0WSwgcmlnaHQ6IG9mZnNldFggfTtcbiAgICBjYXNlICdib3R0b20tbGVmdCc6XG4gICAgICByZXR1cm4geyAuLi5iYXNlLCBib3R0b206IG9mZnNldFksIGxlZnQ6IG9mZnNldFggfTtcbiAgICBjYXNlICd0b3AtcmlnaHQnOlxuICAgICAgcmV0dXJuIHsgLi4uYmFzZSwgdG9wOiBvZmZzZXRZLCByaWdodDogb2Zmc2V0WCB9O1xuICAgIGNhc2UgJ3RvcC1sZWZ0JzpcbiAgICAgIHJldHVybiB7IC4uLmJhc2UsIHRvcDogb2Zmc2V0WSwgbGVmdDogb2Zmc2V0WCB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4geyAuLi5iYXNlLCBib3R0b206IG9mZnNldFksIHJpZ2h0OiBvZmZzZXRYIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXRQb3NpdGlvblN0eWxlcyh7IHBvc2l0aW9uLCBvZmZzZXRYLCBvZmZzZXRZIH06IFBvc2l0aW9uUGFyYW1zKTogUmVhY3QuQ1NTUHJvcGVydGllcyB7XG4gIGNvbnN0IGJhc2U6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgYm9yZGVyUmFkaXVzOiAnMzJweCcsXG4gICAgekluZGV4OiAxMDA0LFxuICB9O1xuXG4gIHN3aXRjaCAocG9zaXRpb24pIHtcbiAgICBjYXNlICdib3R0b20tcmlnaHQnOlxuICAgICAgcmV0dXJuIHsgLi4uYmFzZSwgYm90dG9tOiBvZmZzZXRZLCByaWdodDogb2Zmc2V0WCB9O1xuICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzpcbiAgICAgIHJldHVybiB7IC4uLmJhc2UsIGJvdHRvbTogb2Zmc2V0WSwgbGVmdDogb2Zmc2V0WCB9O1xuICAgIGNhc2UgJ3RvcC1yaWdodCc6XG4gICAgICByZXR1cm4geyAuLi5iYXNlLCB0b3A6IG9mZnNldFksIHJpZ2h0OiBvZmZzZXRYIH07XG4gICAgY2FzZSAndG9wLWxlZnQnOlxuICAgICAgcmV0dXJuIHsgLi4uYmFzZSwgdG9wOiBvZmZzZXRZLCBsZWZ0OiBvZmZzZXRYIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7IC4uLmJhc2UsIGJvdHRvbTogb2Zmc2V0WSwgcmlnaHQ6IG9mZnNldFggfTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgUmVzcG9uc2l2ZURpbWVuc2lvblBhcmFtcyB7XG4gIGlzRnVsbHNjcmVlbjogYm9vbGVhbjtcbiAgbW9kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzcG9uc2l2ZURpbWVuc2lvbnMoeyBpc0Z1bGxzY3JlZW4sIG1vZGUgfTogUmVzcG9uc2l2ZURpbWVuc2lvblBhcmFtcyk6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICBjb25zdCBzY3JlZW5XaWR0aCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggOiAxMDI0O1xuICBjb25zdCBmYWxsYmFja0hlaWdodCA9IGlzRnVsbHNjcmVlbiA/ICcxMDB2aCcgOiAnNjB2aCc7XG5cbiAgaWYgKGlzRnVsbHNjcmVlbikge1xuICAgIHJldHVybiB7IHdpZHRoOiAnMTAwdncnLCBoZWlnaHQ6IGZhbGxiYWNrSGVpZ2h0LCBib3JkZXJSYWRpdXM6ICcwJyB9O1xuICB9XG5cbiAgaWYgKG1vZGUgPT09ICdmbG9hdGluZycpIHtcbiAgICBpZiAoc2NyZWVuV2lkdGggPD0gNDgwKSB7XG4gICAgICByZXR1cm4geyB3aWR0aDogJ2NhbGMoMTAwdncgLSA0MHB4KScgfTtcbiAgICB9XG4gICAgaWYgKHNjcmVlbldpZHRoIDw9IDc2OCkge1xuICAgICAgcmV0dXJuIHsgd2lkdGg6ICczNTBweCcgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgd2lkdGg6ICczODBweCcgfTtcbiAgfVxuXG4gIGlmIChzY3JlZW5XaWR0aCA8PSA0ODApIHtcbiAgICByZXR1cm4geyB3aWR0aDogJ2NhbGMoMTAwdncgLSA0MHB4KScsIGhlaWdodDogZmFsbGJhY2tIZWlnaHQgfTtcbiAgfVxuICBpZiAoc2NyZWVuV2lkdGggPD0gNzY4KSB7XG4gICAgcmV0dXJuIHsgd2lkdGg6ICczNTBweCcsIGhlaWdodDogZmFsbGJhY2tIZWlnaHQgfTtcbiAgfVxuXG4gIHJldHVybiB7IHdpZHRoOiAnMzgwcHgnLCBoZWlnaHQ6IGZhbGxiYWNrSGVpZ2h0IH07XG59XG5cbmludGVyZmFjZSBGbG9hdGluZ1NoZWxsUGFyYW1zIHtcbiAgd2luZG93SGVpZ2h0OiBudW1iZXI7XG4gIG9mZnNldFk6IG51bWJlcjtcbiAgcG9zaXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsb2F0aW5nU2hlbGxTdHlsZSh7IHdpbmRvd0hlaWdodCwgb2Zmc2V0WSwgcG9zaXRpb24gfTogRmxvYXRpbmdTaGVsbFBhcmFtcyk6IFJlYWN0LkNTU1Byb3BlcnRpZXMge1xuICBjb25zdCBzY3JlZW5XaWR0aCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggOiAxMDI0O1xuICBjb25zdCBzY3JlZW5IZWlnaHQgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5pbm5lckhlaWdodCA6IDEwODA7XG4gIGNvbnN0IG1hcmdpbiA9IDEwO1xuICBjb25zdCB1c2FibGVIZWlnaHQgPSBNYXRoLm1heCgyODAsIHdpbmRvd0hlaWdodCAtIG9mZnNldFkgLSBtYXJnaW4gKiAxMCk7XG4gIGxldCBtYXhIZWlnaHQ6IG51bWJlciB8IHN0cmluZyA9IHVzYWJsZUhlaWdodDtcblxuICBpZiAoc2NyZWVuV2lkdGggPj0gNzY1ICYmIHNjcmVlbkhlaWdodCA+PSAxMDcwKSB7XG4gICAgbWF4SGVpZ2h0ID0gJzYwdmgnO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHQsXG4gICAgaGVpZ2h0OiB1c2FibGVIZWlnaHQsXG4gICAgLi4uKHBvc2l0aW9uID09PSAndG9wLXJpZ2h0JyB8fCBwb3NpdGlvbiA9PT0gJ3RvcC1sZWZ0J1xuICAgICAgPyB7IHRvcDogb2Zmc2V0WSwgYm90dG9tOiAnYXV0bycgfVxuICAgICAgOiB7IHRvcDogJ2F1dG8nLCBib3R0b206IG9mZnNldFkgfSksXG4gIH07XG59XG5cbmludGVyZmFjZSBGbG9hdGluZ0NvbnRhaW5lclBhcmFtcyB7XG4gIG1vZGU6IHN0cmluZztcbiAgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuICB3aW5kb3dXaWR0aDogbnVtYmVyO1xuICB3aW5kb3dIZWlnaHQ6IG51bWJlcjtcbiAgcG9zaXRpb246IHN0cmluZztcbiAgb2Zmc2V0WDogbnVtYmVyO1xuICBvZmZzZXRZOiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGbG9hdGluZ0NvbnRhaW5lclN0eWxlKHA6IEZsb2F0aW5nQ29udGFpbmVyUGFyYW1zKTogUmVhY3QuQ1NTUHJvcGVydGllcyB7XG4gIHJldHVybiB7XG4gICAgLi4uKChwLm1vZGUgPT09ICdmdWxsc2NyZWVuJyB8fCAocC5pc0Z1bGxzY3JlZW4gJiYgcC53aW5kb3dXaWR0aCA8PSA3NjgpKVxuICAgICAgPyB7XG4gICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcgYXMgY29uc3QsXG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgYm90dG9tOiAnZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sIDBweCknLFxuICAgICAgICAgIGJvcmRlclJhZGl1czogJzAnLFxuICAgICAgICAgIHpJbmRleDogOTk5OSxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgLi4uZ2V0Q2hhdFBvc2l0aW9uU3R5bGVzKHsgcG9zaXRpb246IHAucG9zaXRpb24sIG9mZnNldFg6IHAub2Zmc2V0WCwgb2Zmc2V0WTogcC5vZmZzZXRZIH0pLFxuICAgICAgICAgIC4uLmdldFJlc3BvbnNpdmVEaW1lbnNpb25zKHsgaXNGdWxsc2NyZWVuOiBwLmlzRnVsbHNjcmVlbiwgbW9kZTogcC5tb2RlIH0pLFxuICAgICAgICAgIC4uLihwLm1vZGUgPT09ICdmbG9hdGluZycgJiYgIXAuaXNGdWxsc2NyZWVuID8gZ2V0RmxvYXRpbmdTaGVsbFN0eWxlKHsgd2luZG93SGVpZ2h0OiBwLndpbmRvd0hlaWdodCwgb2Zmc2V0WTogcC5vZmZzZXRZLCBwb3NpdGlvbjogcC5wb3NpdGlvbiB9KSA6IHt9KSxcbiAgICAgICAgfVxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBDU1NfS0VZRlJBTUVTID0gYFxuICBAa2V5ZnJhbWVzIGJsaW5rIHsgMCUgeyBvcGFjaXR5OiAwLjI7IH0gMjAlIHsgb3BhY2l0eTogMTsgfSAxMDAlIHsgb3BhY2l0eTogMC4yOyB9IH1cbiAgLmdhLXRleHRhcmVhLW5vc2Ige1xuICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgLmdhLXRleHRhcmVhLW5vc2I6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgd2lkdGg6IDA7IGhlaWdodDogMDsgfVxuICAuZ2EtaW5wdXQtZGlzY2xhaW1lciBhIHtcbiAgICBjb2xvcjogIzljYTNhZiAhaW1wb3J0YW50O1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG4gIC5nYS1pbnB1dC1kaXNjbGFpbWVyIGE6aG92ZXIge1xuICAgIGNvbG9yOiAjNmI3MjgwICFpbXBvcnRhbnQ7XG4gIH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmdhLXRleHRhcmVhLW5vc2Ige1xuICAgICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG4gIEBrZXlmcmFtZXMgZ2EtYmFja2xpZ2h0LXN3ZWVwMiB7IDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zNSUpOyB9IDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTA1JSk7IH0gfVxuICBAa2V5ZnJhbWVzIGdhLWJhY2tsaWdodC1wdWxzZSB7IDAlLDEwMCUgeyBvcGFjaXR5OiAwLjc7IH0gNTAlIHsgb3BhY2l0eTogMTsgfSB9XG4gIEBrZXlmcmFtZXMgZ2EtdGhpbmstY2hhbmdlIHsgMCUgeyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KTsgfSAxMDAlIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9IH1cbiAgLmdyZWNhcHRjaGEtYmFkZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAwICFpbXBvcnRhbnQ7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuYDtcbiJdfQ==
@@ -17,6 +17,8 @@ export interface ChatMessage {
17
17
  type?: string;
18
18
  linkUrl?: string;
19
19
  linkLabel?: string;
20
+ audio_format?: string;
21
+ audioObjectUrl?: string;
20
22
  }
21
23
  export interface Attachment {
22
24
  name: string;
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2kxOG4nO1xuXG4vLyBDaGF0IG1lc3NhZ2UgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUZlZWRiYWNrIHtcbiAgZmVlZGJhY2s6IFwiZ29vZFwiIHwgXCJiYWRcIjtcbiAgZmVlZGJhY2tfdGltZXN0YW1wPzogc3RyaW5nO1xuICBmZWVkYmFja191c2VyX2lkPzogc3RyaW5nO1xuICBmZWVkYmFja19tZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRNZXNzYWdlIHtcbiAgY3JlYXRlX3RpbWU6IG51bWJlcjtcbiAgc3RhcnRfdGltZTogbnVtYmVyO1xuICBlbmRfdGltZTogbnVtYmVyO1xuICBzcGVha2VyOiBcImN1c3RvbWVyXCIgfCBcImFnZW50XCIgfCBcInNwZWNpYWxcIjtcbiAgdGV4dDogc3RyaW5nO1xuICAvLyBPcHRpb25hbCBtZXRhZGF0YVxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRbXTtcbiAgbWVzc2FnZV9pZD86IHN0cmluZztcbiAgZmVlZGJhY2s/OiBNZXNzYWdlRmVlZGJhY2tbXTtcbiAgdHlwZT86IHN0cmluZztcbiAgbGlua1VybD86IHN0cmluZztcbiAgbGlua0xhYmVsPzogc3RyaW5nO1xufVxuXG4vLyBBdHRhY2htZW50IHR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIHVybDogc3RyaW5nO1xuICBmaWxlX2lkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnRXaXRoRmlsZSB7XG4gIGZpbGU6IEZpbGU7XG4gIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQgfCBudWxsO1xufVxuXG4vLyBBUEkgUmVzcG9uc2UgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRDb252ZXJzYXRpb25SZXNwb25zZSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgY29udmVyc2F0aW9uX2lkOiBzdHJpbmc7XG4gIGFnZW50X3dlbGNvbWVfbWVzc2FnZT86IHN0cmluZztcbiAgYWdlbnRfcG9zc2libGVfcXVlcmllcz86IHN0cmluZ1tdO1xuICBhZ2VudF93ZWxjb21lX3RpdGxlPzogc3RyaW5nO1xuICBhZ2VudF93ZWxjb21lX2ltYWdlX3VybD86IHN0cmluZztcbiAgYWdlbnRfaWQ/OiBzdHJpbmc7XG4gIGFnZW50X2F2YWlsYWJsZV9sYW5ndWFnZXM/OiBzdHJpbmdbXTtcbiAgYWdlbnRfdGhpbmtpbmdfcGhyYXNlcz86IHN0cmluZ1tdO1xuICBhZ2VudF90aGlua2luZ19waHJhc2VfZGVsYXk/OiBudW1iZXI7IC8vIHNlY29uZHNcbiAgYWdlbnRfY2hhdF9pbnB1dF9tZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+OyAvLyBNZXRhZGF0YSBrZXlzL2RlZmF1bHRzIGZyb20gdGhlIHdvcmtmbG93J3MgQ2hhdCBJbnB1dCBub2RlXG4gIGFnZW50X2lucHV0X2Rpc2NsYWltZXJfaHRtbD86IHN0cmluZztcbiAgY3JlYXRlX3RpbWU/OiBudW1iZXI7XG4gIGd1ZXN0X3Rva2VuPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50SW5mb1Jlc3BvbnNlIHtcbiAgYWdlbnRfaWQ/OiBzdHJpbmc7XG4gIGFnZW50X2F2YWlsYWJsZV9sYW5ndWFnZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqIFBlci1sb2NhbGUgYWdlbnQgc3RyaW5ncyAod2VsY29tZSwgcXVpY2sgcXVlcmllcywgdGhpbmtpbmcpIGZyb20gR0VUIC4uLi9hZ2VudC1jaGF0LWxvY2FsZXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRDaGF0TG9jYWxlQ29udGVudCB7XG4gIHdlbGNvbWVfbWVzc2FnZT86IHN0cmluZyB8IG51bGw7XG4gIHdlbGNvbWVfdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICBpbnB1dF9kaXNjbGFpbWVyX2h0bWw/OiBzdHJpbmcgfCBudWxsO1xuICBwb3NzaWJsZV9xdWVyaWVzPzogc3RyaW5nW107XG4gIHRoaW5raW5nX3BocmFzZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudENoYXRMb2NhbGVzUmVzcG9uc2Uge1xuICBhZ2VudF9pZD86IHN0cmluZztcbiAgYWdlbnRfYXZhaWxhYmxlX2xhbmd1YWdlcz86IHN0cmluZ1tdO1xuICBhZ2VudF90aGlua2luZ19waHJhc2VfZGVsYXk/OiBudW1iZXI7XG4gIGFnZW50X2NoYXRfaW5wdXRfbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWdlbnRfaGFzX3dlbGNvbWVfaW1hZ2U/OiBib29sZWFuO1xuICBsb2NhbGVzOiBSZWNvcmQ8c3RyaW5nLCBBZ2VudENoYXRMb2NhbGVDb250ZW50Pjtcbn1cblxuLy8gQWdlbnQgd2VsY29tZS9jb25maWcgaW5mb1xuZXhwb3J0IGludGVyZmFjZSBBZ2VudFdlbGNvbWVEYXRhIHtcbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICBtZXNzYWdlPzogc3RyaW5nIHwgbnVsbDtcbiAgaW1hZ2VVcmw/OiBzdHJpbmcgfCBudWxsO1xuICBwb3NzaWJsZVF1ZXJpZXM/OiBzdHJpbmdbXTtcbiAgaW5wdXREaXNjbGFpbWVySHRtbD86IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRUaGlua2luZ0NvbmZpZyB7XG4gIHBocmFzZXM6IHN0cmluZ1tdO1xuICBkZWxheU1zOiBudW1iZXI7IC8vIHJvdGF0aW9uIGRlbGF5IGluIG1zXG59XG5cbi8vIEludGVyYWN0aXZlIGNvbnRlbnQgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0NoYXRJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgaW1hZ2U/OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB2ZW51ZUlkPzogc3RyaW5nO1xuICBzbG90cz86IHN0cmluZ1tdO1xuICBzZWxlY3RlZFNsb3Q/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICByZXN0YXVyYW50czogRHluYW1pY0NoYXRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUl0ZW0ge1xuICB1cmw6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENoYXRDb250ZW50QmxvY2sgPVxuICB8IHsga2luZDogXCJ0ZXh0XCI7IHRleHQ6IHN0cmluZyB9XG4gIHwgeyBraW5kOiBcIml0ZW1zXCI7IGl0ZW1zOiBEeW5hbWljQ2hhdEl0ZW1bXSB9XG4gIHwgeyBraW5kOiBcInNjaGVkdWxlXCI7IHNjaGVkdWxlOiBTY2hlZHVsZUl0ZW0gfVxuICB8IHsga2luZDogXCJvcHRpb25zXCI7IG9wdGlvbnM6IHN0cmluZ1tdIH1cbiAgfCB7IGtpbmQ6IFwiZmlsZVwiOyBkYXRhOiBGaWxlSXRlbSB9O1xuXG4vLyBQcm9wcyBmb3IgdGhlIEdlbkFnZW50Q2hhdCBjb21wb25lbnRcbmV4cG9ydCBpbnRlcmZhY2UgR2VuQWdlbnRDaGF0UHJvcHMge1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIHdlYnNvY2tldFVybD86IHN0cmluZztcbiAgYXBpS2V5OiBzdHJpbmc7XG4gIHRlbmFudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIEZvciBwYXNzaW5nIHVzZXIgaW5mb3JtYXRpb24gb3Igb3RoZXIgbWV0YWRhdGFcbiAgdXNlV3M/OiBib29sZWFuO1xuICB1c2VQb2xsPzogYm9vbGVhbjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGFrZW92ZXI/OiAoKSA9PiB2b2lkO1xuICBvbkZpbmFsaXplPzogKCkgPT4gdm9pZDtcbiAgdGhlbWU/OiB7XG4gICAgcHJpbWFyeUNvbG9yPzogc3RyaW5nO1xuICAgIHNlY29uZGFyeUNvbG9yPzogc3RyaW5nO1xuICAgIGZvbnRGYW1pbHk/OiBzdHJpbmc7XG4gICAgZm9udFNpemU/OiBzdHJpbmc7XG4gICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIHRleHRDb2xvcj86IHN0cmluZztcbiAgfTtcbiAgaGVhZGVyVGl0bGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgYWdlbnROYW1lPzogc3RyaW5nOyAvLyBDdXN0b20gYWdlbnQgbmFtZSB0byBkaXNwbGF5IGluc3RlYWQgb2YgXCJBZ2VudFwiXG4gIGxvZ29Vcmw/OiBzdHJpbmc7IC8vIEN1c3RvbSBsb2dvIFVSTCB0byBkaXNwbGF5IGluIGhlYWRlciBpbnN0ZWFkIG9mIGRlZmF1bHQgbG9nb1xuICBtb2RlPzogXCJlbWJlZGRlZFwiIHwgXCJmbG9hdGluZ1wiIHwgXCJmdWxsc2NyZWVuXCI7XG4gIC8qKiBDYWxsZWQgd2hlbiB0aGUgdXNlciBwcmVzc2VzIEVzY2FwZSBpbiBgbW9kZT1cImZ1bGxzY3JlZW5cImAuIFVzZSB0aGlzIHRvIHN3aXRjaCB0aGUgcGFyZW50IGJhY2sgdG8gZmxvYXRpbmcvZW1iZWRkZWQuICovXG4gIG9uRXhpdEZ1bGxzY3JlZW4/OiAoKSA9PiB2b2lkO1xuICBmbG9hdGluZ0NvbmZpZz86IHtcbiAgICBwb3NpdGlvbj86IFwiYm90dG9tLXJpZ2h0XCIgfCBcImJvdHRvbS1sZWZ0XCIgfCBcInRvcC1yaWdodFwiIHwgXCJ0b3AtbGVmdFwiO1xuICAgIG9mZnNldD86IHsgeD86IG51bWJlcjsgeT86IG51bWJlciB9O1xuICAgIHRvZ2dsZUJ1dHRvbkljb24/OiBSZWFjdC5SZWFjdEVsZW1lbnQ7XG4gICAgY2xvc2VCdXR0b25JY29uPzogUmVhY3QuUmVhY3RFbGVtZW50O1xuICB9O1xuICBsYW5ndWFnZT86IHN0cmluZzsgLy8gTGFuZ3VhZ2UgY29kZSAoZS5nLiwgJ2VuJywgJ2VzJywgJ2ZyJykuIElmIG5vdCBwcm92aWRlZCwgd2lsbCB1c2UgYnJvd3NlciBsYW5ndWFnZVxuICB0cmFuc2xhdGlvbnM/OiBQYXJ0aWFsPFRyYW5zbGF0aW9ucz47IC8vIEN1c3RvbSB0cmFuc2xhdGlvbnMuIElmIG5vdCBwcm92aWRlZCwgd2lsbCB1c2UgZGVmYXVsdCBFbmdsaXNoIHRyYW5zbGF0aW9uc1xuICByZUNhcHRjaGFLZXk/OiBzdHJpbmc7IC8vIFJlQ2FwdGNoYSBrZXkgZm9yIHRoZSBjaGF0XG4gIHdpZGdldD86IGJvb2xlYW47IC8vIElmIHRydWUsIG9wZW5zIGNoYXQgaW4gZnVsbHNjcmVlbiBtb2RlIG9uIGRlc2t0b3AgKHNpbWlsYXIgdG8gbW9iaWxlIGJlaGF2aW9yKVxuICB1c2VBdWRpbz86IGJvb2xlYW47IC8vIElmIGZhbHNlLCBoaWRlcyB0aGUgbWljIGNvbXBvbmVudCBhbmQgdm9pY2UgaW5wdXQuIERlZmF1bHRzIHRvIGZhbHNlLlxuICB1c2VGaWxlPzogYm9vbGVhbjsgLy8gSWYgZmFsc2UsIGhpZGVzIHRoZSBmaWxlIGF0dGFjaCBpY29uIGFuZCBmaWxlIHVwbG9hZC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gIG5vQ29sb3JBbmltYXRpb24/OiBib29sZWFuOyAvLyBJZiB0cnVlLCBoaWRlcyB0aGUgY29sb3IgYW5pbWF0aW9uIChiYWNrbGlnaHQpIGJlbG93IHRoZSBjaGF0IGhlYWRlci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gIHNob3dXZWxjb21lQmVmb3JlU3RhcnQ/OiBib29sZWFuO1xuICBhbGxvd2VkRXh0ZW5zaW9ucz86IEFsbG93ZWRFeHRlbnNpb25bXTsgLy8gSWYgcHJvdmlkZWQsIG9ubHkgc2hvdyBmaWxlIGF0dGFjaG1lbnRzIHdpdGggdGhlc2UgZXh0ZW5zaW9ucy4gRGVmYXVsdHMgdG8gYWxsIGV4dGVuc2lvbnMuXG4gIHNlcnZlclVuYXZhaWxhYmxlTWVzc2FnZT86IHN0cmluZzsgLy8gQ3VzdG9tIG1lc3NhZ2Ugd2hlbiBzZXJ2ZXIgaXMgZG93blxuICBzZXJ2ZXJVbmF2YWlsYWJsZUNvbnRhY3RVcmw/OiBzdHJpbmc7IC8vIE9wdGlvbmFsIFVSTCBmb3IgYSBjb250YWN0L3N1cHBvcnRcbiAgc2VydmVyVW5hdmFpbGFibGVDb250YWN0TGFiZWw/OiBzdHJpbmc7IC8vIExhYmVsIGZvciB0aGUgY29udGFjdCBsaW5rXG4gIGZvcm1EaXNwbGF5PzogJ2lubGluZScgfCAnZm9vdGVyJzsgLy8gV2hlcmUgdG8gcmVuZGVyIGR5bmFtaWMgZm9ybXM6ICdpbmxpbmUnID0gY2hhdCBidWJibGUsICdmb290ZXInID0gcmVwbGFjZXMgaW5wdXQuIERlZmF1bHRzIHRvICdmb290ZXInLlxuICBvbkNvbmZpZ0xvYWRlZD86IChwcm9wczogeyBjaGF0SW5wdXRNZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4gfSkgPT4gdm9pZDtcbn1cblxuLy8gTk9URTogVGhlc2UgYXJlIHRoZSBvbmx5IGZpbGUgZXh0ZW5zaW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGNoYXQuXG5leHBvcnQgdHlwZSBBbGxvd2VkRXh0ZW5zaW9uID0gJ2ltYWdlLyonIHwgJ2ltYWdlL3BuZycgfCAnaW1hZ2UvanBlZycgfCAnaW1hZ2UvanBnJyB8ICdpbWFnZS9naWYnIHwgJ2FwcGxpY2F0aW9uL3BkZicgfCAnYXBwbGljYXRpb24vbXN3b3JkJyB8ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc7XG5cbmV4cG9ydCB0eXBlIHsgVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vdXRpbHMvaTE4bic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVVwbG9hZFJlc3BvbnNlIHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgb3JpZ2luYWxfZmlsZW5hbWU6IHN0cmluZztcbiAgc3RvcmFnZV9wYXRoOiBzdHJpbmc7XG4gIGZpbGVfcGF0aDogc3RyaW5nO1xuICBmaWxlX3VybDogc3RyaW5nO1xuICBmaWxlX2lkPzogc3RyaW5nO1xufVxuXG4vKiogTWVzc2FnZSBzaGFwZSByZXR1cm5lZCBieSBpbi1wcm9ncmVzcyBwb2xsIEFQSSAoYmFja2VuZCB1c2VzIGRhdGV0aW1lIGZvciBjcmVhdGVfdGltZSkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5Qcm9ncmVzc1BvbGxNZXNzYWdlIHtcbiAgaWQ6IHN0cmluZztcbiAgY3JlYXRlX3RpbWU/OiBzdHJpbmcgfCBudW1iZXI7XG4gIHN0YXJ0X3RpbWU6IG51bWJlcjtcbiAgZW5kX3RpbWU6IG51bWJlcjtcbiAgc3BlYWtlcjogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIHNlcXVlbmNlX251bWJlcj86IG51bWJlcjtcbiAgZmVlZGJhY2s/OiBNZXNzYWdlRmVlZGJhY2tbXTtcbn1cblxuLyoqIFJlc3BvbnNlIGZyb20gR0VUIC9hcGkvY29udmVyc2F0aW9ucy9pbi1wcm9ncmVzcy9wb2xsL3tjb252ZXJzYXRpb25faWR9ICovXG5leHBvcnQgaW50ZXJmYWNlIEluUHJvZ3Jlc3NQb2xsUmVzcG9uc2Uge1xuICBzdGF0dXM6IHN0cmluZztcbiAgbWVzc2FnZXM6IEluUHJvZ3Jlc3NQb2xsTWVzc2FnZVtdO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zbGF0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2kxOG4nO1xuXG4vLyBDaGF0IG1lc3NhZ2UgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUZlZWRiYWNrIHtcbiAgZmVlZGJhY2s6IFwiZ29vZFwiIHwgXCJiYWRcIjtcbiAgZmVlZGJhY2tfdGltZXN0YW1wPzogc3RyaW5nO1xuICBmZWVkYmFja191c2VyX2lkPzogc3RyaW5nO1xuICBmZWVkYmFja19tZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRNZXNzYWdlIHtcbiAgY3JlYXRlX3RpbWU6IG51bWJlcjtcbiAgc3RhcnRfdGltZTogbnVtYmVyO1xuICBlbmRfdGltZTogbnVtYmVyO1xuICBzcGVha2VyOiBcImN1c3RvbWVyXCIgfCBcImFnZW50XCIgfCBcInNwZWNpYWxcIjtcbiAgdGV4dDogc3RyaW5nO1xuICAvLyBPcHRpb25hbCBtZXRhZGF0YVxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRbXTtcbiAgbWVzc2FnZV9pZD86IHN0cmluZztcbiAgZmVlZGJhY2s/OiBNZXNzYWdlRmVlZGJhY2tbXTtcbiAgdHlwZT86IHN0cmluZztcbiAgbGlua1VybD86IHN0cmluZztcbiAgbGlua0xhYmVsPzogc3RyaW5nO1xuICBhdWRpb19mb3JtYXQ/OiBzdHJpbmc7XG4gIGF1ZGlvT2JqZWN0VXJsPzogc3RyaW5nO1xufVxuXG4vLyBBdHRhY2htZW50IHR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIHVybDogc3RyaW5nO1xuICBmaWxlX2lkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnRXaXRoRmlsZSB7XG4gIGZpbGU6IEZpbGU7XG4gIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQgfCBudWxsO1xufVxuXG4vLyBBUEkgUmVzcG9uc2UgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRDb252ZXJzYXRpb25SZXNwb25zZSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgY29udmVyc2F0aW9uX2lkOiBzdHJpbmc7XG4gIGFnZW50X3dlbGNvbWVfbWVzc2FnZT86IHN0cmluZztcbiAgYWdlbnRfcG9zc2libGVfcXVlcmllcz86IHN0cmluZ1tdO1xuICBhZ2VudF93ZWxjb21lX3RpdGxlPzogc3RyaW5nO1xuICBhZ2VudF93ZWxjb21lX2ltYWdlX3VybD86IHN0cmluZztcbiAgYWdlbnRfaWQ/OiBzdHJpbmc7XG4gIGFnZW50X2F2YWlsYWJsZV9sYW5ndWFnZXM/OiBzdHJpbmdbXTtcbiAgYWdlbnRfdGhpbmtpbmdfcGhyYXNlcz86IHN0cmluZ1tdO1xuICBhZ2VudF90aGlua2luZ19waHJhc2VfZGVsYXk/OiBudW1iZXI7IC8vIHNlY29uZHNcbiAgYWdlbnRfY2hhdF9pbnB1dF9tZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+OyAvLyBNZXRhZGF0YSBrZXlzL2RlZmF1bHRzIGZyb20gdGhlIHdvcmtmbG93J3MgQ2hhdCBJbnB1dCBub2RlXG4gIGFnZW50X2lucHV0X2Rpc2NsYWltZXJfaHRtbD86IHN0cmluZztcbiAgY3JlYXRlX3RpbWU/OiBudW1iZXI7XG4gIGd1ZXN0X3Rva2VuPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFnZW50SW5mb1Jlc3BvbnNlIHtcbiAgYWdlbnRfaWQ/OiBzdHJpbmc7XG4gIGFnZW50X2F2YWlsYWJsZV9sYW5ndWFnZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqIFBlci1sb2NhbGUgYWdlbnQgc3RyaW5ncyAod2VsY29tZSwgcXVpY2sgcXVlcmllcywgdGhpbmtpbmcpIGZyb20gR0VUIC4uLi9hZ2VudC1jaGF0LWxvY2FsZXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRDaGF0TG9jYWxlQ29udGVudCB7XG4gIHdlbGNvbWVfbWVzc2FnZT86IHN0cmluZyB8IG51bGw7XG4gIHdlbGNvbWVfdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICBpbnB1dF9kaXNjbGFpbWVyX2h0bWw/OiBzdHJpbmcgfCBudWxsO1xuICBwb3NzaWJsZV9xdWVyaWVzPzogc3RyaW5nW107XG4gIHRoaW5raW5nX3BocmFzZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZ2VudENoYXRMb2NhbGVzUmVzcG9uc2Uge1xuICBhZ2VudF9pZD86IHN0cmluZztcbiAgYWdlbnRfYXZhaWxhYmxlX2xhbmd1YWdlcz86IHN0cmluZ1tdO1xuICBhZ2VudF90aGlua2luZ19waHJhc2VfZGVsYXk/OiBudW1iZXI7XG4gIGFnZW50X2NoYXRfaW5wdXRfbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWdlbnRfaGFzX3dlbGNvbWVfaW1hZ2U/OiBib29sZWFuO1xuICBsb2NhbGVzOiBSZWNvcmQ8c3RyaW5nLCBBZ2VudENoYXRMb2NhbGVDb250ZW50Pjtcbn1cblxuLy8gQWdlbnQgd2VsY29tZS9jb25maWcgaW5mb1xuZXhwb3J0IGludGVyZmFjZSBBZ2VudFdlbGNvbWVEYXRhIHtcbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICBtZXNzYWdlPzogc3RyaW5nIHwgbnVsbDtcbiAgaW1hZ2VVcmw/OiBzdHJpbmcgfCBudWxsO1xuICBwb3NzaWJsZVF1ZXJpZXM/OiBzdHJpbmdbXTtcbiAgaW5wdXREaXNjbGFpbWVySHRtbD86IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRUaGlua2luZ0NvbmZpZyB7XG4gIHBocmFzZXM6IHN0cmluZ1tdO1xuICBkZWxheU1zOiBudW1iZXI7IC8vIHJvdGF0aW9uIGRlbGF5IGluIG1zXG59XG5cbi8vIEludGVyYWN0aXZlIGNvbnRlbnQgdHlwZXNcbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0NoYXRJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgaW1hZ2U/OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB2ZW51ZUlkPzogc3RyaW5nO1xuICBzbG90cz86IHN0cmluZ1tdO1xuICBzZWxlY3RlZFNsb3Q/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmcgfCBudWxsO1xuICByZXN0YXVyYW50czogRHluYW1pY0NoYXRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUl0ZW0ge1xuICB1cmw6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENoYXRDb250ZW50QmxvY2sgPVxuICB8IHsga2luZDogXCJ0ZXh0XCI7IHRleHQ6IHN0cmluZyB9XG4gIHwgeyBraW5kOiBcIml0ZW1zXCI7IGl0ZW1zOiBEeW5hbWljQ2hhdEl0ZW1bXSB9XG4gIHwgeyBraW5kOiBcInNjaGVkdWxlXCI7IHNjaGVkdWxlOiBTY2hlZHVsZUl0ZW0gfVxuICB8IHsga2luZDogXCJvcHRpb25zXCI7IG9wdGlvbnM6IHN0cmluZ1tdIH1cbiAgfCB7IGtpbmQ6IFwiZmlsZVwiOyBkYXRhOiBGaWxlSXRlbSB9O1xuXG4vLyBQcm9wcyBmb3IgdGhlIEdlbkFnZW50Q2hhdCBjb21wb25lbnRcbmV4cG9ydCBpbnRlcmZhY2UgR2VuQWdlbnRDaGF0UHJvcHMge1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIHdlYnNvY2tldFVybD86IHN0cmluZztcbiAgYXBpS2V5OiBzdHJpbmc7XG4gIHRlbmFudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47IC8vIEZvciBwYXNzaW5nIHVzZXIgaW5mb3JtYXRpb24gb3Igb3RoZXIgbWV0YWRhdGFcbiAgdXNlV3M/OiBib29sZWFuO1xuICB1c2VQb2xsPzogYm9vbGVhbjtcbiAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gIG9uVGFrZW92ZXI/OiAoKSA9PiB2b2lkO1xuICBvbkZpbmFsaXplPzogKCkgPT4gdm9pZDtcbiAgdGhlbWU/OiB7XG4gICAgcHJpbWFyeUNvbG9yPzogc3RyaW5nO1xuICAgIHNlY29uZGFyeUNvbG9yPzogc3RyaW5nO1xuICAgIGZvbnRGYW1pbHk/OiBzdHJpbmc7XG4gICAgZm9udFNpemU/OiBzdHJpbmc7XG4gICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIHRleHRDb2xvcj86IHN0cmluZztcbiAgfTtcbiAgaGVhZGVyVGl0bGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgYWdlbnROYW1lPzogc3RyaW5nOyAvLyBDdXN0b20gYWdlbnQgbmFtZSB0byBkaXNwbGF5IGluc3RlYWQgb2YgXCJBZ2VudFwiXG4gIGxvZ29Vcmw/OiBzdHJpbmc7IC8vIEN1c3RvbSBsb2dvIFVSTCB0byBkaXNwbGF5IGluIGhlYWRlciBpbnN0ZWFkIG9mIGRlZmF1bHQgbG9nb1xuICBtb2RlPzogXCJlbWJlZGRlZFwiIHwgXCJmbG9hdGluZ1wiIHwgXCJmdWxsc2NyZWVuXCI7XG4gIC8qKiBDYWxsZWQgd2hlbiB0aGUgdXNlciBwcmVzc2VzIEVzY2FwZSBpbiBgbW9kZT1cImZ1bGxzY3JlZW5cImAuIFVzZSB0aGlzIHRvIHN3aXRjaCB0aGUgcGFyZW50IGJhY2sgdG8gZmxvYXRpbmcvZW1iZWRkZWQuICovXG4gIG9uRXhpdEZ1bGxzY3JlZW4/OiAoKSA9PiB2b2lkO1xuICBmbG9hdGluZ0NvbmZpZz86IHtcbiAgICBwb3NpdGlvbj86IFwiYm90dG9tLXJpZ2h0XCIgfCBcImJvdHRvbS1sZWZ0XCIgfCBcInRvcC1yaWdodFwiIHwgXCJ0b3AtbGVmdFwiO1xuICAgIG9mZnNldD86IHsgeD86IG51bWJlcjsgeT86IG51bWJlciB9O1xuICAgIHRvZ2dsZUJ1dHRvbkljb24/OiBSZWFjdC5SZWFjdEVsZW1lbnQ7XG4gICAgY2xvc2VCdXR0b25JY29uPzogUmVhY3QuUmVhY3RFbGVtZW50O1xuICB9O1xuICBsYW5ndWFnZT86IHN0cmluZzsgLy8gTGFuZ3VhZ2UgY29kZSAoZS5nLiwgJ2VuJywgJ2VzJywgJ2ZyJykuIElmIG5vdCBwcm92aWRlZCwgd2lsbCB1c2UgYnJvd3NlciBsYW5ndWFnZVxuICB0cmFuc2xhdGlvbnM/OiBQYXJ0aWFsPFRyYW5zbGF0aW9ucz47IC8vIEN1c3RvbSB0cmFuc2xhdGlvbnMuIElmIG5vdCBwcm92aWRlZCwgd2lsbCB1c2UgZGVmYXVsdCBFbmdsaXNoIHRyYW5zbGF0aW9uc1xuICByZUNhcHRjaGFLZXk/OiBzdHJpbmc7IC8vIFJlQ2FwdGNoYSBrZXkgZm9yIHRoZSBjaGF0XG4gIHdpZGdldD86IGJvb2xlYW47IC8vIElmIHRydWUsIG9wZW5zIGNoYXQgaW4gZnVsbHNjcmVlbiBtb2RlIG9uIGRlc2t0b3AgKHNpbWlsYXIgdG8gbW9iaWxlIGJlaGF2aW9yKVxuICB1c2VBdWRpbz86IGJvb2xlYW47IC8vIElmIGZhbHNlLCBoaWRlcyB0aGUgbWljIGNvbXBvbmVudCBhbmQgdm9pY2UgaW5wdXQuIERlZmF1bHRzIHRvIGZhbHNlLlxuICB1c2VGaWxlPzogYm9vbGVhbjsgLy8gSWYgZmFsc2UsIGhpZGVzIHRoZSBmaWxlIGF0dGFjaCBpY29uIGFuZCBmaWxlIHVwbG9hZC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gIG5vQ29sb3JBbmltYXRpb24/OiBib29sZWFuOyAvLyBJZiB0cnVlLCBoaWRlcyB0aGUgY29sb3IgYW5pbWF0aW9uIChiYWNrbGlnaHQpIGJlbG93IHRoZSBjaGF0IGhlYWRlci4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gIHNob3dXZWxjb21lQmVmb3JlU3RhcnQ/OiBib29sZWFuO1xuICBhbGxvd2VkRXh0ZW5zaW9ucz86IEFsbG93ZWRFeHRlbnNpb25bXTsgLy8gSWYgcHJvdmlkZWQsIG9ubHkgc2hvdyBmaWxlIGF0dGFjaG1lbnRzIHdpdGggdGhlc2UgZXh0ZW5zaW9ucy4gRGVmYXVsdHMgdG8gYWxsIGV4dGVuc2lvbnMuXG4gIHNlcnZlclVuYXZhaWxhYmxlTWVzc2FnZT86IHN0cmluZzsgLy8gQ3VzdG9tIG1lc3NhZ2Ugd2hlbiBzZXJ2ZXIgaXMgZG93blxuICBzZXJ2ZXJVbmF2YWlsYWJsZUNvbnRhY3RVcmw/OiBzdHJpbmc7IC8vIE9wdGlvbmFsIFVSTCBmb3IgYSBjb250YWN0L3N1cHBvcnRcbiAgc2VydmVyVW5hdmFpbGFibGVDb250YWN0TGFiZWw/OiBzdHJpbmc7IC8vIExhYmVsIGZvciB0aGUgY29udGFjdCBsaW5rXG4gIGZvcm1EaXNwbGF5PzogJ2lubGluZScgfCAnZm9vdGVyJzsgLy8gV2hlcmUgdG8gcmVuZGVyIGR5bmFtaWMgZm9ybXM6ICdpbmxpbmUnID0gY2hhdCBidWJibGUsICdmb290ZXInID0gcmVwbGFjZXMgaW5wdXQuIERlZmF1bHRzIHRvICdmb290ZXInLlxuICBvbkNvbmZpZ0xvYWRlZD86IChwcm9wczogeyBjaGF0SW5wdXRNZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4gfSkgPT4gdm9pZDtcbn1cblxuLy8gTk9URTogVGhlc2UgYXJlIHRoZSBvbmx5IGZpbGUgZXh0ZW5zaW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGNoYXQuXG5leHBvcnQgdHlwZSBBbGxvd2VkRXh0ZW5zaW9uID0gJ2ltYWdlLyonIHwgJ2ltYWdlL3BuZycgfCAnaW1hZ2UvanBlZycgfCAnaW1hZ2UvanBnJyB8ICdpbWFnZS9naWYnIHwgJ2FwcGxpY2F0aW9uL3BkZicgfCAnYXBwbGljYXRpb24vbXN3b3JkJyB8ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc7XG5cbmV4cG9ydCB0eXBlIHsgVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vdXRpbHMvaTE4bic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVVwbG9hZFJlc3BvbnNlIHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgb3JpZ2luYWxfZmlsZW5hbWU6IHN0cmluZztcbiAgc3RvcmFnZV9wYXRoOiBzdHJpbmc7XG4gIGZpbGVfcGF0aDogc3RyaW5nO1xuICBmaWxlX3VybDogc3RyaW5nO1xuICBmaWxlX2lkPzogc3RyaW5nO1xufVxuXG4vKiogTWVzc2FnZSBzaGFwZSByZXR1cm5lZCBieSBpbi1wcm9ncmVzcyBwb2xsIEFQSSAoYmFja2VuZCB1c2VzIGRhdGV0aW1lIGZvciBjcmVhdGVfdGltZSkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5Qcm9ncmVzc1BvbGxNZXNzYWdlIHtcbiAgaWQ6IHN0cmluZztcbiAgY3JlYXRlX3RpbWU/OiBzdHJpbmcgfCBudW1iZXI7XG4gIHN0YXJ0X3RpbWU6IG51bWJlcjtcbiAgZW5kX3RpbWU6IG51bWJlcjtcbiAgc3BlYWtlcjogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIHNlcXVlbmNlX251bWJlcj86IG51bWJlcjtcbiAgZmVlZGJhY2s/OiBNZXNzYWdlRmVlZGJhY2tbXTtcbn1cblxuLyoqIFJlc3BvbnNlIGZyb20gR0VUIC9hcGkvY29udmVyc2F0aW9ucy9pbi1wcm9ncmVzcy9wb2xsL3tjb252ZXJzYXRpb25faWR9ICovXG5leHBvcnQgaW50ZXJmYWNlIEluUHJvZ3Jlc3NQb2xsUmVzcG9uc2Uge1xuICBzdGF0dXM6IHN0cmluZztcbiAgbWVzc2FnZXM6IEluUHJvZ3Jlc3NQb2xsTWVzc2FnZVtdO1xufVxuIl19