genassist-chat-react 1.0.13 → 1.0.15

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.
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ChatMessage } from '../types';
2
+ import { ChatMessage, ScheduleItem } from '../types';
3
3
  export { AttachmentPreview } from './AttachmentPreview';
4
4
  interface ChatMessageProps {
5
5
  message: ChatMessage;
@@ -22,5 +22,8 @@ interface ChatMessageProps {
22
22
  welcomeTitle?: string;
23
23
  possibleQueries?: string[];
24
24
  onQuickQuery?: (query: string) => void;
25
+ isLastMessage?: boolean;
26
+ onQuickAction?: (text: string) => void;
27
+ onScheduleConfirm?: (schedule: ScheduleItem) => void;
25
28
  }
26
29
  export declare const ChatMessageComponent: React.FC<ChatMessageProps>;
@@ -15,15 +15,18 @@ import { WelcomeCard } from './WelcomeCard';
15
15
  import { User, UserX, AlertCircle, ThumbsUp, ThumbsDown } from 'lucide-react';
16
16
  import { formatTimestamp } from '../utils/time';
17
17
  import { getFileIcon } from './FileTypeIcon';
18
+ import { InteractiveContent } from './InteractiveContent';
19
+ import { parseInteractiveContentBlocks } from '../utils/interactiveContent';
18
20
  export { AttachmentPreview } from './AttachmentPreview';
19
21
  export var ChatMessageComponent = function (_a) {
20
- var message = _a.message, theme = _a.theme, onPlayAudio = _a.onPlayAudio, _b = _a.isFirstMessage, isFirstMessage = _b === void 0 ? false : _b, _c = _a.isPrevSameSpeaker, isPrevSameSpeaker = _c === void 0 ? false : _c, onFeedback = _a.onFeedback, welcomeImageUrl = _a.welcomeImageUrl, welcomeTitleProp = _a.welcomeTitle, possibleQueries = _a.possibleQueries, onQuickQuery = _a.onQuickQuery;
22
+ var message = _a.message, theme = _a.theme, onPlayAudio = _a.onPlayAudio, _b = _a.isFirstMessage, isFirstMessage = _b === void 0 ? false : _b, _c = _a.isPrevSameSpeaker, isPrevSameSpeaker = _c === void 0 ? false : _c, onFeedback = _a.onFeedback, welcomeImageUrl = _a.welcomeImageUrl, welcomeTitleProp = _a.welcomeTitle, possibleQueries = _a.possibleQueries, onQuickQuery = _a.onQuickQuery, _d = _a.isLastMessage, isLastMessage = _d === void 0 ? false : _d, onQuickAction = _a.onQuickAction, onScheduleConfirm = _a.onScheduleConfirm;
21
23
  var isUser = message.speaker === 'customer';
22
24
  var isSpecial = message.speaker === 'special';
23
25
  var isWelcomeMessage = !isUser && !isSpecial && isFirstMessage;
24
- var _d = React.useState(false), isHovered = _d[0], setIsHovered = _d[1];
26
+ var _e = React.useState(false), isHovered = _e[0], setIsHovered = _e[1];
25
27
  var editingFeedback = React.useState(false)[0];
26
28
  var displayText = React.useState(message.text)[0];
29
+ var contentBlocks = React.useMemo(function () { return parseInteractiveContentBlocks(displayText); }, [displayText]);
27
30
  var timestamp = formatTimestamp(message.create_time);
28
31
  // Fast typewriter effect for newly displayed agent messages, fix later
29
32
  // React.useEffect(() => {
@@ -55,9 +58,11 @@ export var ChatMessageComponent = function (_a) {
55
58
  // Updated design colors
56
59
  var userBubbleBgColor = '#E4E4E7'; // grey for user
57
60
  var userTextColor = '#000000';
58
- var agentTextColor = '#000000';
61
+ var agentTextColor = (theme === null || theme === void 0 ? void 0 : theme.textColor) || '#000000';
62
+ var primaryColor = (theme === null || theme === void 0 ? void 0 : theme.primaryColor) || '#4f46e5';
59
63
  var fontFamily = (theme === null || theme === void 0 ? void 0 : theme.fontFamily) || 'Roboto, Arial, sans-serif';
60
64
  var fontSize = (theme === null || theme === void 0 ? void 0 : theme.fontSize) || '15px';
65
+ var bubbleTextColor = isUser ? userTextColor : agentTextColor;
61
66
  var messageContainerStyle = {
62
67
  display: 'flex',
63
68
  flexDirection: 'column',
@@ -176,7 +181,6 @@ export var ChatMessageComponent = function (_a) {
176
181
  welcomeContent = messageText;
177
182
  }
178
183
  }
179
- var messageLines = !isWelcomeMessage ? displayText.split('\n').map(function (line, i) { return (_jsxs(React.Fragment, { children: [line, i < displayText.split('\n').length - 1 && _jsx("br", {})] }, i)); }) : null;
180
184
  // Handle special messages (like takeover indicators)
181
185
  if (isSpecial) {
182
186
  var specialMessageStyle = {
@@ -230,7 +234,7 @@ export var ChatMessageComponent = function (_a) {
230
234
  minWidth: '260px',
231
235
  maxWidth: '360px',
232
236
  pointerEvents: 'none',
233
- }, children: [attachment.type.startsWith('image/') ? (_jsx("img", { src: attachment.url, alt: attachment.name, style: { width: 56, height: 56, borderRadius: 8, objectFit: 'cover' } })) : (_jsx("div", { style: { width: 40, height: 40, display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: getFileIcon(attachment.type) })), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx("div", { style: { fontWeight: 600, fontSize: 14 }, children: attachment.name }), _jsxs("div", { style: { fontSize: 12, opacity: 0.8 }, children: [attachment.type.includes('/') ? attachment.type.split('/')[1].toUpperCase() : attachment.type, attachment.size ? " \u00B7 ".concat((attachment.size / 1024).toFixed(1), " KB") : ''] })] })] }, index)); }) })), message.text && (_jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '8px', alignSelf: isUser ? 'flex-end' : 'flex-start' }, children: _jsx("div", { style: __assign(__assign({}, bubbleStyle), { position: 'relative' }), children: messageLines }) })), showThumbsArea && (_jsx("div", { style: feedbackRowStyle, children: feedbackValue ? (_jsx("div", { style: singleIconStyle, children: feedbackValue === 'good' ? (_jsx(ThumbsUp, { size: 18 })) : (_jsx(ThumbsDown, { size: 18 })) })) : (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", style: iconButtonStyle, title: "Thumbs up", onClick: function () {
237
+ }, children: [attachment.type.startsWith('image/') ? (_jsx("img", { src: attachment.url, alt: attachment.name, style: { width: 56, height: 56, borderRadius: 8, objectFit: 'cover' } })) : (_jsx("div", { style: { width: 40, height: 40, display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: getFileIcon(attachment.type) })), _jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx("div", { style: { fontWeight: 600, fontSize: 14 }, children: attachment.name }), _jsxs("div", { style: { fontSize: 12, opacity: 0.8 }, children: [attachment.type.includes('/') ? attachment.type.split('/')[1].toUpperCase() : attachment.type, attachment.size ? " \u00B7 ".concat((attachment.size / 1024).toFixed(1), " KB") : ''] })] })] }, index)); }) })), message.text && (_jsx("div", { style: { display: 'flex', alignItems: 'center', gap: '8px', alignSelf: isUser ? 'flex-end' : 'flex-start' }, children: _jsx("div", { style: __assign(__assign({}, bubbleStyle), { position: 'relative' }), children: _jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 12 }, children: _jsx(InteractiveContent, { blocks: contentBlocks, primaryColor: primaryColor, textColor: bubbleTextColor, isActionable: !isUser && isLastMessage, onQuickAction: onQuickAction, onScheduleConfirm: onScheduleConfirm }) }) }) })), showThumbsArea && (_jsx("div", { style: feedbackRowStyle, children: feedbackValue ? (_jsx("div", { style: singleIconStyle, children: feedbackValue === 'good' ? (_jsx(ThumbsUp, { size: 18 })) : (_jsx(ThumbsDown, { size: 18 })) })) : (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", style: iconButtonStyle, title: "Thumbs up", onClick: function () {
234
238
  if (message.message_id && onFeedback) {
235
239
  onFeedback(message.message_id, 'good');
236
240
  }
@@ -240,4 +244,4 @@ export var ChatMessageComponent = function (_a) {
240
244
  }
241
245
  }, children: _jsx(ThumbsDown, { size: 18 }) })] })) }))] }));
242
246
  };
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdE1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGF0TWVzc2FnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUF5QnhELE1BQU0sQ0FBQyxJQUFNLG9CQUFvQixHQUErQixVQUFDLEVBV2hFO1FBVkMsT0FBTyxhQUFBLEVBQ1AsS0FBSyxXQUFBLEVBQ0wsV0FBVyxpQkFBQSxFQUNYLHNCQUFzQixFQUF0QixjQUFjLG1CQUFHLEtBQUssS0FBQSxFQUN0Qix5QkFBeUIsRUFBekIsaUJBQWlCLG1CQUFHLEtBQUssS0FBQSxFQUN6QixVQUFVLGdCQUFBLEVBQ1YsZUFBZSxxQkFBQSxFQUNELGdCQUFnQixrQkFBQSxFQUM5QixlQUFlLHFCQUFBLEVBQ2YsWUFBWSxrQkFBQTtJQUVaLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxDQUFDO0lBQzlDLElBQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO0lBQ2hELElBQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLElBQUksY0FBYyxDQUFDO0lBQzNELElBQUEsS0FBNEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBaEQsU0FBUyxRQUFBLEVBQUUsWUFBWSxRQUF5QixDQUFDO0lBQ2pELElBQUEsZUFBZSxHQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQXpCLENBQTBCO0lBQ3pDLElBQUEsV0FBVyxHQUFJLEtBQUssQ0FBQyxRQUFRLENBQVMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUF4QyxDQUF5QztJQUUzRCxJQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXZELHVFQUF1RTtJQUN2RSwwQkFBMEI7SUFDMUIsaUdBQWlHO0lBQ2pHLDhDQUE4QztJQUM5Qyw4QkFBOEI7SUFDOUIsMEJBQTBCO0lBQzFCLGlCQUFpQjtJQUNqQix5Q0FBeUM7SUFDekMseUJBQXlCO0lBQ3pCLDZCQUE2QjtJQUM3QixpRkFBaUY7SUFDakYsa0RBQWtEO0lBQ2xELDJCQUEyQjtJQUMzQiwwQkFBMEI7SUFDMUIsd0NBQXdDO0lBQ3hDLG1DQUFtQztJQUNuQywwQ0FBMEM7SUFDMUMsaUJBQWlCO0lBQ2pCLG9EQUFvRDtJQUNwRCxVQUFVO0lBQ1Ysa0JBQWtCO0lBQ2xCLG1EQUFtRDtJQUNuRCxhQUFhO0lBQ2Isb0NBQW9DO0lBQ3BDLCtCQUErQjtJQUMvQixNQUFNO0lBQ04sMkRBQTJEO0lBRTNELHdCQUF3QjtJQUN4QixJQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxDQUFDLGdCQUFnQjtJQUNyRCxJQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDaEMsSUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLElBQU0sVUFBVSxHQUFHLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFVBQVUsS0FBSSwyQkFBMkIsQ0FBQztJQUNwRSxJQUFNLFFBQVEsR0FBRyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxRQUFRLEtBQUksTUFBTSxDQUFDO0lBRTNDLElBQU0scUJBQXFCLEdBQXdCO1FBQ2pELE9BQU8sRUFBRSxNQUFNO1FBQ2YsYUFBYSxFQUFFLFFBQVE7UUFDdkIsS0FBSyxFQUFFLE1BQU07UUFDYixZQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSztRQUMvQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTTtRQUM3QyxRQUFRLEVBQUUsVUFBVTtRQUNwQixVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVk7S0FDL0MsQ0FBQztJQUVGLElBQU0sYUFBYSxHQUF3QjtRQUN6QyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtRQUM1QyxLQUFLLEVBQUUsS0FBSztRQUNaLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUNsRCxVQUFVLEVBQUUsVUFBVTtRQUN0QixHQUFHLEVBQUUsS0FBSztRQUNWLFlBQVksRUFBRSxLQUFLO0tBQ3BCLENBQUM7SUFFRixJQUFNLGlCQUFpQixHQUF3QjtRQUM3QyxRQUFRLEVBQUUsTUFBTTtRQUNoQixLQUFLLEVBQUUsU0FBUztRQUNoQixVQUFVLEVBQUUsQ0FBQztRQUNiLFVBQVUsRUFBRSxHQUFHO0tBQ2hCLENBQUM7SUFFRixJQUFNLGlCQUFpQixHQUF3QjtRQUM3QyxRQUFRLEVBQUUsTUFBTTtRQUNoQixLQUFLLEVBQUUsU0FBUztRQUNoQixVQUFVLEVBQUUsQ0FBQztLQUNkLENBQUM7SUFFRixJQUFNLDJCQUEyQixHQUF3QjtRQUN2RCxPQUFPLEVBQUUsTUFBTTtRQUNmLGFBQWEsRUFBRSxRQUFRO1FBQ3ZCLFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUM7SUFFRixpREFBaUQ7SUFDakQsOERBQThEO0lBQzlELElBQU0sV0FBVyxHQUF3QixNQUFNO1FBQzdDLENBQUMsQ0FBQztZQUNFLGVBQWUsRUFBRSxpQkFBaUI7WUFDbEMsS0FBSyxFQUFFLGFBQWE7WUFDcEIsT0FBTyxFQUFFLFdBQVc7WUFDcEIsWUFBWSxFQUFFLGtCQUFrQjtZQUNoQyxRQUFRLFVBQUE7WUFDUixVQUFVLFlBQUE7WUFDVixTQUFTLEVBQUUsWUFBWTtZQUN2QixVQUFVLEVBQUUsR0FBRztZQUNmLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsU0FBUyxFQUFFLDRCQUE0QjtTQUN4QztRQUNILENBQUMsQ0FBQztZQUNFLGVBQWUsRUFBRSxhQUFhO1lBQzlCLEtBQUssRUFBRSxjQUFjO1lBQ3JCLE9BQU8sRUFBRSxDQUFDO1lBQ1YsWUFBWSxFQUFFLENBQUM7WUFDZixRQUFRLFVBQUE7WUFDUixVQUFVLFlBQUE7WUFDVixTQUFTLEVBQUUsWUFBWTtZQUN2QixVQUFVLEVBQUUsR0FBRztZQUNmLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsU0FBUyxFQUFFLE1BQU07U0FDbEIsQ0FBQztJQUVOLElBQU0seUJBQXlCLEdBQXdCO1FBQ3JELFNBQVMsRUFBRSxLQUFLO1FBQ2hCLE9BQU8sRUFBRSxNQUFNO1FBQ2YsYUFBYSxFQUFFLFFBQVE7UUFDdkIsR0FBRyxFQUFFLEtBQUs7S0FDWCxDQUFDO0lBRUYsNERBQTREO0lBQzVELElBQU0sYUFBYSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUN4RCxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRWQsSUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUUsSUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQywrQkFBK0I7SUFFN0UsSUFBTSxnQkFBZ0IsR0FBd0I7UUFDNUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO1FBQ3pDLFNBQVMsRUFBRSxDQUFDO1FBQ1osU0FBUyxFQUFFLFlBQVk7UUFDdkIsVUFBVSxFQUFFLFFBQVE7UUFDcEIsTUFBTSxFQUFFLEVBQUU7UUFDVixHQUFHLEVBQUUsQ0FBQztRQUNOLFVBQVUsRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVE7S0FDdkUsQ0FBQztJQUVGLElBQU0sZUFBZSxHQUF3QjtRQUMzQyxVQUFVLEVBQUUsYUFBYTtRQUN6QixNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxDQUFDO1FBQ1YsTUFBTSxFQUFFLFNBQVM7UUFDakIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU07UUFDM0MsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztJQUVGLElBQU0sY0FBYyxHQUF3QjtRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sRUFBRSxFQUFFO1FBQ1YsZUFBZSxFQUFFLFNBQVM7UUFDMUIsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU07S0FDN0MsQ0FBQztJQUVGLElBQU0sZUFBZSxHQUF3QjtRQUMzQyxLQUFLLEVBQUUsU0FBUztRQUNoQixPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU07UUFDeEMsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztJQUVGLElBQUksWUFBWSxHQUFHLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztJQUMxQyxJQUFJLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFFeEIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JCLElBQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsSUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFBRSxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0QsY0FBYyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25FLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDO2FBQU0sQ0FBQztZQUNOLGNBQWMsR0FBRyxXQUFXLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFNLFlBQVksR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFDLElBQUksRUFBRSxDQUFDLElBQUssT0FBQSxDQUNoRixNQUFDLEtBQUssQ0FBQyxRQUFRLGVBQ1osSUFBSSxFQUNKLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksY0FBTSxLQUY5QixDQUFDLENBR0wsQ0FDbEIsRUFMaUYsQ0FLakYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFVixxREFBcUQ7SUFDckQsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLElBQU0sbUJBQW1CLEdBQXdCO1lBQy9DLE9BQU8sRUFBRSxNQUFNO1lBQ2YsY0FBYyxFQUFFLFFBQVE7WUFDeEIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsS0FBSyxFQUFFLE1BQU07U0FDZCxDQUFDO1FBRUYsb0RBQW9EO1FBQ3BELElBQUksSUFBSSxTQUFBLENBQUM7UUFDVCxJQUFJLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDaEMsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTFCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN0RyxJQUFJLEdBQUcsS0FBQyxXQUFXLElBQUMsSUFBSSxFQUFFLEVBQUUsR0FBSSxDQUFDO1lBQ2pDLGVBQWUsR0FBRyxTQUFTLENBQUM7WUFDNUIsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN4QixDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQy9HLElBQUksR0FBRyxLQUFDLEtBQUssSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEdBQUcsS0FBQyxJQUFJLElBQUMsSUFBSSxFQUFFLEVBQUUsR0FBSSxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFNLGtCQUFrQixHQUF3QjtZQUM5QyxlQUFlLGlCQUFBO1lBQ2YsS0FBSyxFQUFFLFNBQVM7WUFDaEIsT0FBTyxFQUFFLFVBQVU7WUFDbkIsWUFBWSxFQUFFLE1BQU07WUFDcEIsUUFBUSxFQUFFLE1BQU07WUFDaEIsVUFBVSxZQUFBO1lBQ1YsVUFBVSxFQUFFLEtBQUs7WUFDakIsT0FBTyxFQUFFLE1BQU07WUFDZixVQUFVLEVBQUUsUUFBUTtZQUNwQixHQUFHLEVBQUUsS0FBSztTQUNYLENBQUM7UUFFRixPQUFPLENBQ0wsY0FBSyxLQUFLLEVBQUUsbUJBQW1CLFlBQzdCLGVBQUssS0FBSyxFQUFFLGtCQUFrQixhQUMzQixJQUFJLEVBQ0osT0FBTyxDQUFDLElBQUksSUFDVCxHQUNGLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDckIsT0FBTyxDQUNMLGNBQUssS0FBSyxFQUFFLHFCQUFxQixZQUMvQixjQUFLLEtBQUssZUFBTywyQkFBMkIsYUFDMUMsS0FBQyxXQUFXLElBQ1YsS0FBSyxFQUFFLEtBQUssRUFDWixRQUFRLEVBQUUsZUFBZSxFQUN6QixLQUFLLEVBQUUsWUFBWSxFQUNuQixPQUFPLEVBQUUsY0FBYyxFQUN2QixlQUFlLEVBQUUsZUFBZSxFQUNoQyxZQUFZLEVBQUUsWUFBWSxHQUMxQixHQUNFLEdBQ0YsQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FDTCxlQUNFLEtBQUssRUFBRSxxQkFBcUIsRUFDNUIsWUFBWSxFQUFFLGNBQU0sT0FBQSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQWxCLENBQWtCLEVBQ3RDLFlBQVksRUFBRSxjQUFRLElBQUksQ0FBQyxlQUFlO1lBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUVsRSxjQUFLLEtBQUssRUFBRSxhQUFhLFlBQ3RCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDUiw4QkFDRSxjQUFLLEtBQUssRUFBRSxpQkFBaUIsWUFBRyxTQUFTLEdBQU8sRUFDaEQsY0FBSyxLQUFLLEVBQUUsaUJBQWlCLG9CQUFXLElBQ3ZDLENBQ0osQ0FBQyxDQUFDLENBQUMsQ0FDRiw4QkFDRSxjQUFLLEtBQUssRUFBRSxpQkFBaUIsc0JBQWEsRUFDMUMsY0FBSyxLQUFLLEVBQUUsaUJBQWlCLFlBQUcsU0FBUyxHQUFPLElBQy9DLENBQ0osR0FDRyxFQUVMLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQ3hELGNBQUssS0FBSyx3QkFBTyx5QkFBeUIsS0FBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksZUFDdkYsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBQyxVQUFVLEVBQUUsS0FBSyxJQUFLLE9BQUEsQ0FDOUMsZUFFRSxLQUFLLEVBQUU7d0JBQ0wsT0FBTyxFQUFFLE1BQU07d0JBQ2YsVUFBVSxFQUFFLFFBQVE7d0JBQ3BCLEdBQUcsRUFBRSxNQUFNO3dCQUNYLE9BQU8sRUFBRSxXQUFXO3dCQUNwQixlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsU0FBUzt3QkFDOUQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjt3QkFDekUsWUFBWSxFQUFFLE1BQU07d0JBQ3BCLFFBQVEsRUFBRSxPQUFPO3dCQUNqQixRQUFRLEVBQUUsT0FBTzt3QkFDakIsYUFBYSxFQUFFLE1BQU07cUJBQ3RCLGFBRUEsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3RDLGNBQ0UsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQ25CLEdBQUcsRUFBRSxVQUFVLENBQUMsSUFBSSxFQUNwQixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQ3JFLENBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FDRixjQUFLLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxZQUNuRyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUN6QixDQUNQLEVBQ0QsZUFBSyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsYUFDdEQsY0FBSyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsWUFBRyxVQUFVLENBQUMsSUFBSSxHQUFPLEVBQ3RFLGVBQUssS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLGFBQ3ZDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFDN0YsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsa0JBQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQ2xFLElBQ0YsS0EvQkQsS0FBSyxDQWdDTixDQUNQLEVBbkMrQyxDQW1DL0MsQ0FBQyxHQUNFLENBQ1AsRUFFQSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQ2YsY0FBSyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxZQUM5RyxjQUFLLEtBQUssd0JBQU8sV0FBVyxLQUFFLFFBQVEsRUFBRSxVQUFVLGVBQy9DLFlBQVksR0FDVCxHQUNGLENBQ1AsRUFHQSxjQUFjLElBQUksQ0FDakIsY0FBSyxLQUFLLEVBQUUsZ0JBQWdCLFlBQ3pCLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDZixjQUFLLEtBQUssRUFBRSxlQUFlLFlBQ3hCLGFBQWEsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQzFCLEtBQUMsUUFBUSxJQUFDLElBQUksRUFBRSxFQUFFLEdBQUksQ0FDdkIsQ0FBQyxDQUFDLENBQUMsQ0FDRixLQUFDLFVBQVUsSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLENBQ3pCLEdBQ0csQ0FDUCxDQUFDLENBQUMsQ0FBQyxDQUNGLDhCQUNFLGlCQUNFLElBQUksRUFBQyxRQUFRLEVBQ2IsS0FBSyxFQUFFLGVBQWUsRUFDdEIsS0FBSyxFQUFDLFdBQVcsRUFDakIsT0FBTyxFQUFFO2dDQUNQLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQ0FDckMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0NBQ3pDLENBQUM7NEJBQ0gsQ0FBQyxZQUVELEtBQUMsUUFBUSxJQUFDLElBQUksRUFBRSxFQUFFLEdBQUksR0FDZixFQUNULGNBQUssS0FBSyxFQUFFLGNBQWMsR0FBSSxFQUM5QixpQkFDRSxJQUFJLEVBQUMsUUFBUSxFQUNiLEtBQUssRUFBRSxlQUFlLEVBQ3RCLEtBQUssRUFBQyxhQUFhLEVBQ25CLE9BQU8sRUFBRTtnQ0FDUCxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksVUFBVSxFQUFFLENBQUM7b0NBQ3JDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dDQUN4QyxDQUFDOzRCQUNILENBQUMsWUFFRCxLQUFDLFVBQVUsSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLEdBQ2pCLElBQ1IsQ0FDSixHQUNHLENBQ1AsSUFDRyxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgV2VsY29tZUNhcmQgfSBmcm9tICcuL1dlbGNvbWVDYXJkJztcbmltcG9ydCB7IENoYXRNZXNzYWdlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgVXNlciwgVXNlclgsIEFsZXJ0Q2lyY2xlLCBUaHVtYnNVcCwgVGh1bWJzRG93biB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBmb3JtYXRUaW1lc3RhbXAgfSBmcm9tICcuLi91dGlscy90aW1lJztcbmltcG9ydCB7IGdldEZpbGVJY29uIH0gZnJvbSAnLi9GaWxlVHlwZUljb24nO1xuZXhwb3J0IHsgQXR0YWNobWVudFByZXZpZXcgfSBmcm9tICcuL0F0dGFjaG1lbnRQcmV2aWV3JztcblxuaW50ZXJmYWNlIENoYXRNZXNzYWdlUHJvcHMge1xuICBtZXNzYWdlOiBDaGF0TWVzc2FnZTtcbiAgdGhlbWU/OiB7XG4gICAgcHJpbWFyeUNvbG9yPzogc3RyaW5nO1xuICAgIHNlY29uZGFyeUNvbG9yPzogc3RyaW5nO1xuICAgIGZvbnRGYW1pbHk/OiBzdHJpbmc7XG4gICAgZm9udFNpemU/OiBzdHJpbmc7XG4gICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIHRleHRDb2xvcj86IHN0cmluZztcbiAgfTtcbiAgb25QbGF5QXVkaW8/OiAodGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBpc1BsYXlpbmdBdWRpbz86IGJvb2xlYW47XG4gIGlzRmlyc3RNZXNzYWdlPzogYm9vbGVhbjtcbiAgaXNOZXh0U2FtZVNwZWFrZXI/OiBib29sZWFuO1xuICBpc1ByZXZTYW1lU3BlYWtlcj86IGJvb2xlYW47XG4gIG9uRmVlZGJhY2s/OiAobWVzc2FnZUlkOiBzdHJpbmcsIHZhbHVlOiAnZ29vZCcgfCAnYmFkJykgPT4gdm9pZDtcbiAgZW5hYmxlVHlwZXdyaXRlcj86IGJvb2xlYW47XG4gIHdlbGNvbWVJbWFnZVVybD86IHN0cmluZztcbiAgd2VsY29tZVRpdGxlPzogc3RyaW5nO1xuICBwb3NzaWJsZVF1ZXJpZXM/OiBzdHJpbmdbXTtcbiAgb25RdWlja1F1ZXJ5PzogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBDaGF0TWVzc2FnZUNvbXBvbmVudDogUmVhY3QuRkM8Q2hhdE1lc3NhZ2VQcm9wcz4gPSAoe1xuICBtZXNzYWdlLFxuICB0aGVtZSxcbiAgb25QbGF5QXVkaW8sXG4gIGlzRmlyc3RNZXNzYWdlID0gZmFsc2UsXG4gIGlzUHJldlNhbWVTcGVha2VyID0gZmFsc2UsXG4gIG9uRmVlZGJhY2ssXG4gIHdlbGNvbWVJbWFnZVVybCxcbiAgd2VsY29tZVRpdGxlOiB3ZWxjb21lVGl0bGVQcm9wLFxuICBwb3NzaWJsZVF1ZXJpZXMsXG4gIG9uUXVpY2tRdWVyeSxcbn0pID0+IHtcbiAgY29uc3QgaXNVc2VyID0gbWVzc2FnZS5zcGVha2VyID09PSAnY3VzdG9tZXInO1xuICBjb25zdCBpc1NwZWNpYWwgPSBtZXNzYWdlLnNwZWFrZXIgPT09ICdzcGVjaWFsJztcbiAgY29uc3QgaXNXZWxjb21lTWVzc2FnZSA9ICFpc1VzZXIgJiYgIWlzU3BlY2lhbCAmJiBpc0ZpcnN0TWVzc2FnZTtcbiAgY29uc3QgW2lzSG92ZXJlZCwgc2V0SXNIb3ZlcmVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2VkaXRpbmdGZWVkYmFja10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtkaXNwbGF5VGV4dF0gPSBSZWFjdC51c2VTdGF0ZTxzdHJpbmc+KG1lc3NhZ2UudGV4dCk7XG5cbiAgY29uc3QgdGltZXN0YW1wID0gZm9ybWF0VGltZXN0YW1wKG1lc3NhZ2UuY3JlYXRlX3RpbWUpO1xuXG4gIC8vIEZhc3QgdHlwZXdyaXRlciBlZmZlY3QgZm9yIG5ld2x5IGRpc3BsYXllZCBhZ2VudCBtZXNzYWdlcywgZml4IGxhdGVyXG4gIC8vIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gIC8vICAgaWYgKCFpc1VzZXIgJiYgIWlzU3BlY2lhbCAmJiBlbmFibGVUeXBld3JpdGVyICYmIG1lc3NhZ2UudGV4dCAhPT0gbGFzdEFuaW1hdGVkUmVmLmN1cnJlbnQpIHtcbiAgLy8gICAgIGxhc3RBbmltYXRlZFJlZi5jdXJyZW50ID0gbWVzc2FnZS50ZXh0O1xuICAvLyAgICAgc2V0SXNUeXBld3JpdGluZyh0cnVlKTtcbiAgLy8gICAgIHNldERpc3BsYXlUZXh0KCcnKTtcbiAgLy8gICAgIGxldCBpID0gMDtcbiAgLy8gICAgIGNvbnN0IHRvdGFsID0gbWVzc2FnZS50ZXh0Lmxlbmd0aDtcbiAgLy8gICAgIGNvbnN0IHRpY2tNcyA9IDE2O1xuICAvLyAgICAgY29uc3QgdGFyZ2V0TXMgPSAxMjAwO1xuICAvLyAgICAgY29uc3QgY2hhcnNQZXJUaWNrID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZCh0b3RhbCAvICh0YXJnZXRNcyAvIHRpY2tNcykpKTtcbiAgLy8gICAgIGNvbnN0IGludGVydmFsID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgLy8gICAgICAgaSArPSBjaGFyc1BlclRpY2s7XG4gIC8vICAgICAgIGlmIChpID49IHRvdGFsKSB7XG4gIC8vICAgICAgICAgc2V0RGlzcGxheVRleHQobWVzc2FnZS50ZXh0KTtcbiAgLy8gICAgICAgICBzZXRJc1R5cGV3cml0aW5nKGZhbHNlKTtcbiAgLy8gICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gIC8vICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgc2V0RGlzcGxheVRleHQobWVzc2FnZS50ZXh0LnNsaWNlKDAsIGkpKTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSwgdGlja01zKTtcbiAgLy8gICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHNldERpc3BsYXlUZXh0KG1lc3NhZ2UudGV4dCk7XG4gIC8vICAgICBzZXRJc1R5cGV3cml0aW5nKGZhbHNlKTtcbiAgLy8gICB9XG4gIC8vIH0sIFttZXNzYWdlLnRleHQsIGVuYWJsZVR5cGV3cml0ZXIsIGlzVXNlciwgaXNTcGVjaWFsXSk7XG5cbiAgLy8gVXBkYXRlZCBkZXNpZ24gY29sb3JzXG4gIGNvbnN0IHVzZXJCdWJibGVCZ0NvbG9yID0gJyNFNEU0RTcnOyAvLyBncmV5IGZvciB1c2VyXG4gIGNvbnN0IHVzZXJUZXh0Q29sb3IgPSAnIzAwMDAwMCc7XG4gIGNvbnN0IGFnZW50VGV4dENvbG9yID0gJyMwMDAwMDAnO1xuICBjb25zdCBmb250RmFtaWx5ID0gdGhlbWU/LmZvbnRGYW1pbHkgfHwgJ1JvYm90bywgQXJpYWwsIHNhbnMtc2VyaWYnO1xuICBjb25zdCBmb250U2l6ZSA9IHRoZW1lPy5mb250U2l6ZSB8fCAnMTVweCc7XG5cbiAgY29uc3QgbWVzc2FnZUNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIG1hcmdpbkJvdHRvbTogaXNQcmV2U2FtZVNwZWFrZXIgPyAnOHB4JyA6ICc4cHgnLFxuICAgIG1hcmdpblRvcDogaXNQcmV2U2FtZVNwZWFrZXIgPyAnMHB4JyA6ICcxNnB4JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBhbGlnbkl0ZW1zOiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnLFxuICB9O1xuXG4gIGNvbnN0IGxhYmVsUm93U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogaXNQcmV2U2FtZVNwZWFrZXIgPyAnbm9uZScgOiAnZmxleCcsXG4gICAgd2lkdGg6ICc4MCUnLFxuICAgIGp1c3RpZnlDb250ZW50OiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnLFxuICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgZ2FwOiAnOHB4JyxcbiAgICBtYXJnaW5Cb3R0b206ICc2cHgnLFxuICB9O1xuXG4gIGNvbnN0IG1lc3NhZ2VMYWJlbFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgY29sb3I6ICcjMDAwMDAwJyxcbiAgICBsaW5lSGVpZ2h0OiAxLFxuICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgfTtcblxuICBjb25zdCB0b3BUaW1lc3RhbXBTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzEzcHgnLFxuICAgIGNvbG9yOiAnIzZiNzI4MCcsXG4gICAgbGluZUhlaWdodDogMSxcbiAgfTtcblxuICBjb25zdCBtZXNzYWdlQnViYmxlQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIG1heFdpZHRoOiAnODAlJyxcbiAgfTtcblxuICAvLyBPbmx5IHVzZXIncyBtZXNzYWdlcyBzaG91bGQgcmVuZGVyIGFzIGJ1YmJsZXMuXG4gIC8vIEFnZW50IG1lc3NhZ2VzIGFyZSBwbGFpbiB0ZXh0IHdpdGggbm8gY29udGFpbmVyIGJhY2tncm91bmQuXG4gIGNvbnN0IGJ1YmJsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0gaXNVc2VyXG4gICAgPyB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdXNlckJ1YmJsZUJnQ29sb3IsXG4gICAgICAgIGNvbG9yOiB1c2VyVGV4dENvbG9yLFxuICAgICAgICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTJweCAwIDEycHggMTJweCcsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgbGluZUhlaWdodDogMS40LFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4wOCknXG4gICAgICB9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY29sb3I6IGFnZW50VGV4dENvbG9yLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgbGluZUhlaWdodDogMS40LFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnbm9uZSdcbiAgICAgIH07XG5cbiAgY29uc3QgYXR0YWNobWVudHNDb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBtYXJnaW5Ub3A6ICc4cHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBnYXA6ICc4cHgnLFxuICB9O1xuXG4gIC8vIEZlZWRiYWNrIHN0YXRlIGFuZCBVSSAodGh1bWJzIHVwL2Rvd24pIGZvciBhZ2VudCBtZXNzYWdlc1xuICBjb25zdCBmZWVkYmFja1ZhbHVlID0gKG1lc3NhZ2UuZmVlZGJhY2sgJiYgbWVzc2FnZS5mZWVkYmFjay5sZW5ndGggPiAwKVxuICAgID8gbWVzc2FnZS5mZWVkYmFja1ttZXNzYWdlLmZlZWRiYWNrLmxlbmd0aCAtIDFdLmZlZWRiYWNrXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgdGh1bWJzU2hvdWxkU2hvdyA9ICFpc1VzZXIgJiYgIWlzU3BlY2lhbCAmJiBpc0hvdmVyZWQgJiYgIWZlZWRiYWNrVmFsdWU7XG4gIGNvbnN0IHNob3dUaHVtYnNBcmVhID0gIWlzVXNlciAmJiAhaXNTcGVjaWFsOyAvLyBPbmx5IGFnZW50cyBoYXZlIHRodW1icyBhcmVhXG5cbiAgY29uc3QgZmVlZGJhY2tSb3dTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiBzaG93VGh1bWJzQXJlYSA/ICdmbGV4JyA6ICdub25lJyxcbiAgICBtYXJnaW5Ub3A6IDgsXG4gICAgYWxpZ25TZWxmOiAnZmxleC1zdGFydCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgaGVpZ2h0OiAyMCxcbiAgICBnYXA6IDgsXG4gICAgdmlzaWJpbGl0eTogdGh1bWJzU2hvdWxkU2hvdyB8fCAhIWZlZWRiYWNrVmFsdWUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgfTtcblxuICBjb25zdCBpY29uQnV0dG9uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGNvbG9yOiAnIzljYTNhZicsXG4gICAgZGlzcGxheTogdGh1bWJzU2hvdWxkU2hvdyA/ICdmbGV4JyA6ICdub25lJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfTtcblxuICBjb25zdCBzZXBhcmF0b3JTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogMSxcbiAgICBoZWlnaHQ6IDE0LFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNlNWU3ZWInLFxuICAgIGRpc3BsYXk6IHRodW1ic1Nob3VsZFNob3cgPyAnYmxvY2snIDogJ25vbmUnLFxuICB9O1xuXG4gIGNvbnN0IHNpbmdsZUljb25TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgIGRpc3BsYXk6IGZlZWRiYWNrVmFsdWUgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH07XG5cbiAgbGV0IHdlbGNvbWVUaXRsZSA9IHdlbGNvbWVUaXRsZVByb3AgfHwgJyc7XG4gIGxldCB3ZWxjb21lQ29udGVudCA9ICcnO1xuICBcbiAgaWYgKGlzV2VsY29tZU1lc3NhZ2UpIHtcbiAgICBjb25zdCBtZXNzYWdlVGV4dCA9IG1lc3NhZ2UudGV4dDtcbiAgICBpZiAoIXdlbGNvbWVUaXRsZVByb3ApIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gbWVzc2FnZVRleHQuc3BsaXQoL1tcXG5cXC4hP10vKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAwKSB3ZWxjb21lVGl0bGUgPSAocGFydHNbMF0gfHwgJycpLnRyaW0oKTtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gbWVzc2FnZVRleHQuc3Vic3RyaW5nKHdlbGNvbWVUaXRsZS5sZW5ndGgpLnRyaW0oKTtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gd2VsY29tZUNvbnRlbnQucmVwbGFjZSgvXlssLiE/XFxzXSsvLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gbWVzc2FnZVRleHQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVzc2FnZUxpbmVzID0gIWlzV2VsY29tZU1lc3NhZ2UgPyBkaXNwbGF5VGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgPFJlYWN0LkZyYWdtZW50IGtleT17aX0+XG4gICAgICB7bGluZX1cbiAgICAgIHtpIDwgZGlzcGxheVRleHQuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDEgJiYgPGJyIC8+fVxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICkpIDogbnVsbDtcblxuICAvLyBIYW5kbGUgc3BlY2lhbCBtZXNzYWdlcyAobGlrZSB0YWtlb3ZlciBpbmRpY2F0b3JzKVxuICBpZiAoaXNTcGVjaWFsKSB7XG4gICAgY29uc3Qgc3BlY2lhbE1lc3NhZ2VTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgbWFyZ2luOiAnMTZweCAwJyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgfTtcblxuICAgIC8vIERldGVybWluZSBpY29uIGFuZCBzdHlsZSBiYXNlZCBvbiBtZXNzYWdlIGNvbnRlbnRcbiAgICBsZXQgaWNvbjtcbiAgICBsZXQgYmFja2dyb3VuZENvbG9yID0gJyNFM0YyRkQnO1xuICAgIGxldCB0ZXh0Q29sb3IgPSAnIzE5NzZEMic7XG4gICAgXG4gICAgaWYgKG1lc3NhZ2UudGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdvZmZsaW5lJykgfHwgbWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2luYWN0aXZlJykpIHtcbiAgICAgIGljb24gPSA8QWxlcnRDaXJjbGUgc2l6ZT17MTh9IC8+O1xuICAgICAgYmFja2dyb3VuZENvbG9yID0gJyNGRkYzRTAnO1xuICAgICAgdGV4dENvbG9yID0gJyNGNTdDMDAnO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Rvb2sgb3ZlcicpIHx8IG1lc3NhZ2UudGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCd0YWtlb3ZlcicpKSB7XG4gICAgICBpY29uID0gPFVzZXJYIHNpemU9ezE4fSAvPjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWNvbiA9IDxVc2VyIHNpemU9ezE4fSAvPjtcbiAgICB9XG5cbiAgICBjb25zdCBzcGVjaWFsQnViYmxlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBjb2xvcjogdGV4dENvbG9yLFxuICAgICAgcGFkZGluZzogJzhweCAxNnB4JyxcbiAgICAgIGJvcmRlclJhZGl1czogJzE2cHgnLFxuICAgICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICAgIGZvbnRGYW1pbHksXG4gICAgICBmb250V2VpZ2h0OiAnNTAwJyxcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgZ2FwOiAnOHB4JyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgc3R5bGU9e3NwZWNpYWxNZXNzYWdlU3R5bGV9PlxuICAgICAgICA8ZGl2IHN0eWxlPXtzcGVjaWFsQnViYmxlU3R5bGV9PlxuICAgICAgICAgIHtpY29ufVxuICAgICAgICAgIHttZXNzYWdlLnRleHR9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc1dlbGNvbWVNZXNzYWdlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VDb250YWluZXJTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgLi4ubWVzc2FnZUJ1YmJsZUNvbnRhaW5lclN0eWxlIH19PlxuICAgICAgICAgIDxXZWxjb21lQ2FyZFxuICAgICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgICAgaW1hZ2VVcmw9e3dlbGNvbWVJbWFnZVVybH1cbiAgICAgICAgICAgIHRpdGxlPXt3ZWxjb21lVGl0bGV9XG4gICAgICAgICAgICBjb250ZW50PXt3ZWxjb21lQ29udGVudH1cbiAgICAgICAgICAgIHBvc3NpYmxlUXVlcmllcz17cG9zc2libGVRdWVyaWVzfVxuICAgICAgICAgICAgb25RdWlja1F1ZXJ5PXtvblF1aWNrUXVlcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IFxuICAgICAgc3R5bGU9e21lc3NhZ2VDb250YWluZXJTdHlsZX1cbiAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0SXNIb3ZlcmVkKHRydWUpfVxuICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiB7IGlmICghZWRpdGluZ0ZlZWRiYWNrKSBzZXRJc0hvdmVyZWQoZmFsc2UpOyB9fVxuICAgID5cbiAgICAgIDxkaXYgc3R5bGU9e2xhYmVsUm93U3R5bGV9PlxuICAgICAgICB7aXNVc2VyID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt0b3BUaW1lc3RhbXBTdHlsZX0+e3RpbWVzdGFtcH08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VMYWJlbFN0eWxlfT5Zb3U8L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bWVzc2FnZUxhYmVsU3R5bGV9PkFnZW50PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt0b3BUaW1lc3RhbXBTdHlsZX0+e3RpbWVzdGFtcH08L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7bWVzc2FnZS5hdHRhY2htZW50cyAmJiBtZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmF0dGFjaG1lbnRzQ29udGFpbmVyU3R5bGUsIGFsaWduSXRlbXM6IGlzVXNlciA/ICdmbGV4LWVuZCcgOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAge21lc3NhZ2UuYXR0YWNobWVudHMubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBnYXA6ICcxMnB4JyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMTJweCAxNHB4JyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzVXNlciA/ICdyZ2JhKDI1NSwyNTUsMjU1LDAuMTIpJyA6ICcjZjVmNWY1JyxcbiAgICAgICAgICAgICAgICBib3JkZXI6IGlzVXNlciA/ICcxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjE4KScgOiAnMXB4IHNvbGlkICNlNWU1ZTUnLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzEycHgnLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnMjYwcHgnLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiAnMzYwcHgnLFxuICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2F0dGFjaG1lbnQudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSA/IChcbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBzcmM9e2F0dGFjaG1lbnQudXJsfVxuICAgICAgICAgICAgICAgICAgYWx0PXthdHRhY2htZW50Lm5hbWV9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogNTYsIGhlaWdodDogNTYsIGJvcmRlclJhZGl1czogOCwgb2JqZWN0Rml0OiAnY292ZXInIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiA0MCwgaGVpZ2h0OiA0MCwgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInIH19PlxuICAgICAgICAgICAgICAgICAge2dldEZpbGVJY29uKGF0dGFjaG1lbnQudHlwZSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRXZWlnaHQ6IDYwMCwgZm9udFNpemU6IDE0IH19PnthdHRhY2htZW50Lm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTIsIG9wYWNpdHk6IDAuOCB9fT5cbiAgICAgICAgICAgICAgICAgIHthdHRhY2htZW50LnR5cGUuaW5jbHVkZXMoJy8nKSA/IGF0dGFjaG1lbnQudHlwZS5zcGxpdCgnLycpWzFdLnRvVXBwZXJDYXNlKCkgOiBhdHRhY2htZW50LnR5cGV9XG4gICAgICAgICAgICAgICAgICB7YXR0YWNobWVudC5zaXplID8gYCDCtyAkeyhhdHRhY2htZW50LnNpemUgLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmAgOiAnJ31cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7bWVzc2FnZS50ZXh0ICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc4cHgnLCBhbGlnblNlbGY6IGlzVXNlciA/ICdmbGV4LWVuZCcgOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5idWJibGVTdHlsZSwgcG9zaXRpb246ICdyZWxhdGl2ZScgfX0+XG4gICAgICAgICAgICB7bWVzc2FnZUxpbmVzfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBGZWVkYmFjayByb3cgYmVsb3cgYWdlbnQgbWVzc2FnZSAqL31cbiAgICAgIHtzaG93VGh1bWJzQXJlYSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e2ZlZWRiYWNrUm93U3R5bGV9PlxuICAgICAgICAgIHtmZWVkYmFja1ZhbHVlID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17c2luZ2xlSWNvblN0eWxlfT5cbiAgICAgICAgICAgICAge2ZlZWRiYWNrVmFsdWUgPT09ICdnb29kJyA/IChcbiAgICAgICAgICAgICAgICA8VGh1bWJzVXAgc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRodW1ic0Rvd24gc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtpY29uQnV0dG9uU3R5bGV9XG4gICAgICAgICAgICAgICAgdGl0bGU9XCJUaHVtYnMgdXBcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLm1lc3NhZ2VfaWQgJiYgb25GZWVkYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBvbkZlZWRiYWNrKG1lc3NhZ2UubWVzc2FnZV9pZCwgJ2dvb2QnKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRodW1ic1VwIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17c2VwYXJhdG9yU3R5bGV9IC8+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aWNvbkJ1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgIHRpdGxlPVwiVGh1bWJzIGRvd25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLm1lc3NhZ2VfaWQgJiYgb25GZWVkYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBvbkZlZWRiYWNrKG1lc3NhZ2UubWVzc2FnZV9pZCwgJ2JhZCcpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGh1bWJzRG93biBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdE1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGF0TWVzc2FnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUE0QnhELE1BQU0sQ0FBQyxJQUFNLG9CQUFvQixHQUErQixVQUFDLEVBY2hFO1FBYkMsT0FBTyxhQUFBLEVBQ1AsS0FBSyxXQUFBLEVBQ0wsV0FBVyxpQkFBQSxFQUNYLHNCQUFzQixFQUF0QixjQUFjLG1CQUFHLEtBQUssS0FBQSxFQUN0Qix5QkFBeUIsRUFBekIsaUJBQWlCLG1CQUFHLEtBQUssS0FBQSxFQUN6QixVQUFVLGdCQUFBLEVBQ1YsZUFBZSxxQkFBQSxFQUNELGdCQUFnQixrQkFBQSxFQUM5QixlQUFlLHFCQUFBLEVBQ2YsWUFBWSxrQkFBQSxFQUNaLHFCQUFxQixFQUFyQixhQUFhLG1CQUFHLEtBQUssS0FBQSxFQUNyQixhQUFhLG1CQUFBLEVBQ2IsaUJBQWlCLHVCQUFBO0lBRWpCLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxDQUFDO0lBQzlDLElB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QUN0QixLQUFLLEVBQUMsYUFBYSxFQUNuQixPQUFPLEVBQUU7Z0NBQ1AsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLFVBQVUsRUFBRSxDQUFDO29DQUNyQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQ0FDeEMsQ0FBQzs0QkFDSCxDQUFDLFlBRUQsS0FBQyxVQUFVLElBQUMsSUFBSSxFQUFFLEVBQUUsR0FBSSxHQUNqQixJQUNSLENBQ0osR0FDRyxDQUNQLElBQ0csQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFdlbGNvbWVDYXJkIH0gZnJvbSAnLi9XZWxjb21lQ2FyZCc7XG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgU2NoZWR1bGVJdGVtIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgVXNlciwgVXNlclgsIEFsZXJ0Q2lyY2xlLCBUaHVtYnNVcCwgVGh1bWJzRG93biB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBmb3JtYXRUaW1lc3RhbXAgfSBmcm9tICcuLi91dGlscy90aW1lJztcbmltcG9ydCB7IGdldEZpbGVJY29uIH0gZnJvbSAnLi9GaWxlVHlwZUljb24nO1xuaW1wb3J0IHsgSW50ZXJhY3RpdmVDb250ZW50IH0gZnJvbSAnLi9JbnRlcmFjdGl2ZUNvbnRlbnQnO1xuaW1wb3J0IHsgcGFyc2VJbnRlcmFjdGl2ZUNvbnRlbnRCbG9ja3MgfSBmcm9tICcuLi91dGlscy9pbnRlcmFjdGl2ZUNvbnRlbnQnO1xuZXhwb3J0IHsgQXR0YWNobWVudFByZXZpZXcgfSBmcm9tICcuL0F0dGFjaG1lbnRQcmV2aWV3JztcblxuaW50ZXJmYWNlIENoYXRNZXNzYWdlUHJvcHMge1xuICBtZXNzYWdlOiBDaGF0TWVzc2FnZTtcbiAgdGhlbWU/OiB7XG4gICAgcHJpbWFyeUNvbG9yPzogc3RyaW5nO1xuICAgIHNlY29uZGFyeUNvbG9yPzogc3RyaW5nO1xuICAgIGZvbnRGYW1pbHk/OiBzdHJpbmc7XG4gICAgZm9udFNpemU/OiBzdHJpbmc7XG4gICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIHRleHRDb2xvcj86IHN0cmluZztcbiAgfTtcbiAgb25QbGF5QXVkaW8/OiAodGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBpc1BsYXlpbmdBdWRpbz86IGJvb2xlYW47XG4gIGlzRmlyc3RNZXNzYWdlPzogYm9vbGVhbjtcbiAgaXNOZXh0U2FtZVNwZWFrZXI/OiBib29sZWFuO1xuICBpc1ByZXZTYW1lU3BlYWtlcj86IGJvb2xlYW47XG4gIG9uRmVlZGJhY2s/OiAobWVzc2FnZUlkOiBzdHJpbmcsIHZhbHVlOiAnZ29vZCcgfCAnYmFkJykgPT4gdm9pZDtcbiAgZW5hYmxlVHlwZXdyaXRlcj86IGJvb2xlYW47XG4gIHdlbGNvbWVJbWFnZVVybD86IHN0cmluZztcbiAgd2VsY29tZVRpdGxlPzogc3RyaW5nO1xuICBwb3NzaWJsZVF1ZXJpZXM/OiBzdHJpbmdbXTtcbiAgb25RdWlja1F1ZXJ5PzogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7XG4gIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuO1xuICBvblF1aWNrQWN0aW9uPzogKHRleHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgb25TY2hlZHVsZUNvbmZpcm0/OiAoc2NoZWR1bGU6IFNjaGVkdWxlSXRlbSkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRNZXNzYWdlQ29tcG9uZW50OiBSZWFjdC5GQzxDaGF0TWVzc2FnZVByb3BzPiA9ICh7XG4gIG1lc3NhZ2UsXG4gIHRoZW1lLFxuICBvblBsYXlBdWRpbyxcbiAgaXNGaXJzdE1lc3NhZ2UgPSBmYWxzZSxcbiAgaXNQcmV2U2FtZVNwZWFrZXIgPSBmYWxzZSxcbiAgb25GZWVkYmFjayxcbiAgd2VsY29tZUltYWdlVXJsLFxuICB3ZWxjb21lVGl0bGU6IHdlbGNvbWVUaXRsZVByb3AsXG4gIHBvc3NpYmxlUXVlcmllcyxcbiAgb25RdWlja1F1ZXJ5LFxuICBpc0xhc3RNZXNzYWdlID0gZmFsc2UsXG4gIG9uUXVpY2tBY3Rpb24sXG4gIG9uU2NoZWR1bGVDb25maXJtLFxufSkgPT4ge1xuICBjb25zdCBpc1VzZXIgPSBtZXNzYWdlLnNwZWFrZXIgPT09ICdjdXN0b21lcic7XG4gIGNvbnN0IGlzU3BlY2lhbCA9IG1lc3NhZ2Uuc3BlYWtlciA9PT0gJ3NwZWNpYWwnO1xuICBjb25zdCBpc1dlbGNvbWVNZXNzYWdlID0gIWlzVXNlciAmJiAhaXNTcGVjaWFsICYmIGlzRmlyc3RNZXNzYWdlO1xuICBjb25zdCBbaXNIb3ZlcmVkLCBzZXRJc0hvdmVyZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZWRpdGluZ0ZlZWRiYWNrXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Rpc3BsYXlUZXh0XSA9IFJlYWN0LnVzZVN0YXRlPHN0cmluZz4obWVzc2FnZS50ZXh0KTtcbiAgY29uc3QgY29udGVudEJsb2NrcyA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gcGFyc2VJbnRlcmFjdGl2ZUNvbnRlbnRCbG9ja3MoZGlzcGxheVRleHQpLFxuICAgIFtkaXNwbGF5VGV4dF1cbiAgKTtcblxuICBjb25zdCB0aW1lc3RhbXAgPSBmb3JtYXRUaW1lc3RhbXAobWVzc2FnZS5jcmVhdGVfdGltZSk7XG5cbiAgLy8gRmFzdCB0eXBld3JpdGVyIGVmZmVjdCBmb3IgbmV3bHkgZGlzcGxheWVkIGFnZW50IG1lc3NhZ2VzLCBmaXggbGF0ZXJcbiAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgLy8gICBpZiAoIWlzVXNlciAmJiAhaXNTcGVjaWFsICYmIGVuYWJsZVR5cGV3cml0ZXIgJiYgbWVzc2FnZS50ZXh0ICE9PSBsYXN0QW5pbWF0ZWRSZWYuY3VycmVudCkge1xuICAvLyAgICAgbGFzdEFuaW1hdGVkUmVmLmN1cnJlbnQgPSBtZXNzYWdlLnRleHQ7XG4gIC8vICAgICBzZXRJc1R5cGV3cml0aW5nKHRydWUpO1xuICAvLyAgICAgc2V0RGlzcGxheVRleHQoJycpO1xuICAvLyAgICAgbGV0IGkgPSAwO1xuICAvLyAgICAgY29uc3QgdG90YWwgPSBtZXNzYWdlLnRleHQubGVuZ3RoO1xuICAvLyAgICAgY29uc3QgdGlja01zID0gMTY7XG4gIC8vICAgICBjb25zdCB0YXJnZXRNcyA9IDEyMDA7XG4gIC8vICAgICBjb25zdCBjaGFyc1BlclRpY2sgPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKHRvdGFsIC8gKHRhcmdldE1zIC8gdGlja01zKSkpO1xuICAvLyAgICAgY29uc3QgaW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAvLyAgICAgICBpICs9IGNoYXJzUGVyVGljaztcbiAgLy8gICAgICAgaWYgKGkgPj0gdG90YWwpIHtcbiAgLy8gICAgICAgICBzZXREaXNwbGF5VGV4dChtZXNzYWdlLnRleHQpO1xuICAvLyAgICAgICAgIHNldElzVHlwZXdyaXRpbmcoZmFsc2UpO1xuICAvLyAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsKTtcbiAgLy8gICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICBzZXREaXNwbGF5VGV4dChtZXNzYWdlLnRleHQuc2xpY2UoMCwgaSkpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9LCB0aWNrTXMpO1xuICAvLyAgICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgc2V0RGlzcGxheVRleHQobWVzc2FnZS50ZXh0KTtcbiAgLy8gICAgIHNldElzVHlwZXdyaXRpbmcoZmFsc2UpO1xuICAvLyAgIH1cbiAgLy8gfSwgW21lc3NhZ2UudGV4dCwgZW5hYmxlVHlwZXdyaXRlciwgaXNVc2VyLCBpc1NwZWNpYWxdKTtcblxuICAvLyBVcGRhdGVkIGRlc2lnbiBjb2xvcnNcbiAgY29uc3QgdXNlckJ1YmJsZUJnQ29sb3IgPSAnI0U0RTRFNyc7IC8vIGdyZXkgZm9yIHVzZXJcbiAgY29uc3QgdXNlclRleHRDb2xvciA9ICcjMDAwMDAwJztcbiAgY29uc3QgYWdlbnRUZXh0Q29sb3IgPSB0aGVtZT8udGV4dENvbG9yIHx8ICcjMDAwMDAwJztcbiAgY29uc3QgcHJpbWFyeUNvbG9yID0gdGhlbWU/LnByaW1hcnlDb2xvciB8fCAnIzRmNDZlNSc7XG4gIGNvbnN0IGZvbnRGYW1pbHkgPSB0aGVtZT8uZm9udEZhbWlseSB8fCAnUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZic7XG4gIGNvbnN0IGZvbnRTaXplID0gdGhlbWU/LmZvbnRTaXplIHx8ICcxNXB4JztcbiAgY29uc3QgYnViYmxlVGV4dENvbG9yID0gaXNVc2VyID8gdXNlclRleHRDb2xvciA6IGFnZW50VGV4dENvbG9yO1xuXG4gIGNvbnN0IG1lc3NhZ2VDb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBtYXJnaW5Cb3R0b206IGlzUHJldlNhbWVTcGVha2VyID8gJzhweCcgOiAnOHB4JyxcbiAgICBtYXJnaW5Ub3A6IGlzUHJldlNhbWVTcGVha2VyID8gJzBweCcgOiAnMTZweCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgYWxpZ25JdGVtczogaXNVc2VyID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyxcbiAgfTtcblxuICBjb25zdCBsYWJlbFJvd1N0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6IGlzUHJldlNhbWVTcGVha2VyID8gJ25vbmUnIDogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnODAlJyxcbiAgICBqdXN0aWZ5Q29udGVudDogaXNVc2VyID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyxcbiAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgIGdhcDogJzhweCcsXG4gICAgbWFyZ2luQm90dG9tOiAnNnB4JyxcbiAgfTtcblxuICBjb25zdCBtZXNzYWdlTGFiZWxTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgIGNvbG9yOiAnIzAwMDAwMCcsXG4gICAgbGluZUhlaWdodDogMSxcbiAgICBmb250V2VpZ2h0OiA2MDAsXG4gIH07XG5cbiAgY29uc3QgdG9wVGltZXN0YW1wU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFNpemU6ICcxM3B4JyxcbiAgICBjb2xvcjogJyM2YjcyODAnLFxuICAgIGxpbmVIZWlnaHQ6IDEsXG4gIH07XG5cbiAgY29uc3QgbWVzc2FnZUJ1YmJsZUNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBtYXhXaWR0aDogJzgwJScsXG4gIH07XG5cbiAgLy8gT25seSB1c2VyJ3MgbWVzc2FnZXMgc2hvdWxkIHJlbmRlciBhcyBidWJibGVzLlxuICAvLyBBZ2VudCBtZXNzYWdlcyBhcmUgcGxhaW4gdGV4dCB3aXRoIG5vIGNvbnRhaW5lciBiYWNrZ3JvdW5kLlxuICBjb25zdCBidWJibGVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IGlzVXNlclxuICAgID8ge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHVzZXJCdWJibGVCZ0NvbG9yLFxuICAgICAgICBjb2xvcjogdXNlclRleHRDb2xvcixcbiAgICAgICAgcGFkZGluZzogJzEycHggMTZweCcsXG4gICAgICAgIGJvcmRlclJhZGl1czogJzEycHggMCAxMnB4IDEycHgnLFxuICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseSxcbiAgICAgICAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG4gICAgICAgIGxpbmVIZWlnaHQ6IDEuNCxcbiAgICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJveFNoYWRvdzogJzAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMDgpJ1xuICAgICAgfVxuICAgIDoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGNvbG9yOiBhZ2VudFRleHRDb2xvcixcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAwLFxuICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseSxcbiAgICAgICAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG4gICAgICAgIGxpbmVIZWlnaHQ6IDEuNCxcbiAgICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJveFNoYWRvdzogJ25vbmUnXG4gICAgICB9O1xuXG4gIGNvbnN0IGF0dGFjaG1lbnRzQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgbWFyZ2luVG9wOiAnOHB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgZ2FwOiAnOHB4JyxcbiAgfTtcblxuICAvLyBGZWVkYmFjayBzdGF0ZSBhbmQgVUkgKHRodW1icyB1cC9kb3duKSBmb3IgYWdlbnQgbWVzc2FnZXNcbiAgY29uc3QgZmVlZGJhY2tWYWx1ZSA9IChtZXNzYWdlLmZlZWRiYWNrICYmIG1lc3NhZ2UuZmVlZGJhY2subGVuZ3RoID4gMClcbiAgICA/IG1lc3NhZ2UuZmVlZGJhY2tbbWVzc2FnZS5mZWVkYmFjay5sZW5ndGggLSAxXS5mZWVkYmFja1xuICAgIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHRodW1ic1Nob3VsZFNob3cgPSAhaXNVc2VyICYmICFpc1NwZWNpYWwgJiYgaXNIb3ZlcmVkICYmICFmZWVkYmFja1ZhbHVlO1xuICBjb25zdCBzaG93VGh1bWJzQXJlYSA9ICFpc1VzZXIgJiYgIWlzU3BlY2lhbDsgLy8gT25seSBhZ2VudHMgaGF2ZSB0aHVtYnMgYXJlYVxuXG4gIGNvbnN0IGZlZWRiYWNrUm93U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogc2hvd1RodW1ic0FyZWEgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgbWFyZ2luVG9wOiA4LFxuICAgIGFsaWduU2VsZjogJ2ZsZXgtc3RhcnQnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGhlaWdodDogMjAsXG4gICAgZ2FwOiA4LFxuICAgIHZpc2liaWxpdHk6IHRodW1ic1Nob3VsZFNob3cgfHwgISFmZWVkYmFja1ZhbHVlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicsXG4gIH07XG5cbiAgY29uc3QgaWNvbkJ1dHRvblN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgYm9yZGVyOiAnbm9uZScsXG4gICAgcGFkZGluZzogMCxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBjb2xvcjogJyM5Y2EzYWYnLFxuICAgIGRpc3BsYXk6IHRodW1ic1Nob3VsZFNob3cgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH07XG5cbiAgY29uc3Qgc2VwYXJhdG9yU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgd2lkdGg6IDEsXG4gICAgaGVpZ2h0OiAxNCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZTVlN2ViJyxcbiAgICBkaXNwbGF5OiB0aHVtYnNTaG91bGRTaG93ID8gJ2Jsb2NrJyA6ICdub25lJyxcbiAgfTtcblxuICBjb25zdCBzaW5nbGVJY29uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgY29sb3I6ICcjMDAwMDAwJyxcbiAgICBkaXNwbGF5OiBmZWVkYmFja1ZhbHVlID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9O1xuXG4gIGxldCB3ZWxjb21lVGl0bGUgPSB3ZWxjb21lVGl0bGVQcm9wIHx8ICcnO1xuICBsZXQgd2VsY29tZUNvbnRlbnQgPSAnJztcbiAgXG4gIGlmIChpc1dlbGNvbWVNZXNzYWdlKSB7XG4gICAgY29uc3QgbWVzc2FnZVRleHQgPSBtZXNzYWdlLnRleHQ7XG4gICAgaWYgKCF3ZWxjb21lVGl0bGVQcm9wKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IG1lc3NhZ2VUZXh0LnNwbGl0KC9bXFxuXFwuIT9dLyk7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID4gMCkgd2VsY29tZVRpdGxlID0gKHBhcnRzWzBdIHx8ICcnKS50cmltKCk7XG4gICAgICB3ZWxjb21lQ29udGVudCA9IG1lc3NhZ2VUZXh0LnN1YnN0cmluZyh3ZWxjb21lVGl0bGUubGVuZ3RoKS50cmltKCk7XG4gICAgICB3ZWxjb21lQ29udGVudCA9IHdlbGNvbWVDb250ZW50LnJlcGxhY2UoL15bLC4hP1xcc10rLywgJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3ZWxjb21lQ29udGVudCA9IG1lc3NhZ2VUZXh0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBzcGVjaWFsIG1lc3NhZ2VzIChsaWtlIHRha2VvdmVyIGluZGljYXRvcnMpXG4gIGlmIChpc1NwZWNpYWwpIHtcbiAgICBjb25zdCBzcGVjaWFsTWVzc2FnZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICBtYXJnaW46ICcxNnB4IDAnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICB9O1xuXG4gICAgLy8gRGV0ZXJtaW5lIGljb24gYW5kIHN0eWxlIGJhc2VkIG9uIG1lc3NhZ2UgY29udGVudFxuICAgIGxldCBpY29uO1xuICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSAnI0UzRjJGRCc7XG4gICAgbGV0IHRleHRDb2xvciA9ICcjMTk3NkQyJztcbiAgICBcbiAgICBpZiAobWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ29mZmxpbmUnKSB8fCBtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnaW5hY3RpdmUnKSkge1xuICAgICAgaWNvbiA9IDxBbGVydENpcmNsZSBzaXplPXsxOH0gLz47XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAnI0ZGRjNFMCc7XG4gICAgICB0ZXh0Q29sb3IgPSAnI0Y1N0MwMCc7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndG9vayBvdmVyJykgfHwgbWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Rha2VvdmVyJykpIHtcbiAgICAgIGljb24gPSA8VXNlclggc2l6ZT17MTh9IC8+O1xuICAgIH0gZWxzZSB7XG4gICAgICBpY29uID0gPFVzZXIgc2l6ZT17MTh9IC8+O1xuICAgIH1cblxuICAgIGNvbnN0IHNwZWNpYWxCdWJibGVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgIGNvbG9yOiB0ZXh0Q29sb3IsXG4gICAgICBwYWRkaW5nOiAnOHB4IDE2cHgnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMTZweCcsXG4gICAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgICAgZm9udEZhbWlseSxcbiAgICAgIGZvbnRXZWlnaHQ6ICc1MDAnLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICBnYXA6ICc4cHgnLFxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17c3BlY2lhbE1lc3NhZ2VTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3NwZWNpYWxCdWJibGVTdHlsZX0+XG4gICAgICAgICAge2ljb259XG4gICAgICAgICAge21lc3NhZ2UudGV4dH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaWYgKGlzV2VsY29tZU1lc3NhZ2UpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17bWVzc2FnZUNvbnRhaW5lclN0eWxlfT5cbiAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5tZXNzYWdlQnViYmxlQ29udGFpbmVyU3R5bGUgfX0+XG4gICAgICAgICAgPFdlbGNvbWVDYXJkXG4gICAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgICBpbWFnZVVybD17d2VsY29tZUltYWdlVXJsfVxuICAgICAgICAgICAgdGl0bGU9e3dlbGNvbWVUaXRsZX1cbiAgICAgICAgICAgIGNvbnRlbnQ9e3dlbGNvbWVDb250ZW50fVxuICAgICAgICAgICAgcG9zc2libGVRdWVyaWVzPXtwb3NzaWJsZVF1ZXJpZXN9XG4gICAgICAgICAgICBvblF1aWNrUXVlcnk9e29uUXVpY2tRdWVyeX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgXG4gICAgICBzdHlsZT17bWVzc2FnZUNvbnRhaW5lclN0eWxlfVxuICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRJc0hvdmVyZWQodHJ1ZSl9XG4gICAgICBvbk1vdXNlTGVhdmU9eygpID0+IHsgaWYgKCFlZGl0aW5nRmVlZGJhY2spIHNldElzSG92ZXJlZChmYWxzZSk7IH19XG4gICAgPlxuICAgICAgPGRpdiBzdHlsZT17bGFiZWxSb3dTdHlsZX0+XG4gICAgICAgIHtpc1VzZXIgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3RvcFRpbWVzdGFtcFN0eWxlfT57dGltZXN0YW1wfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bWVzc2FnZUxhYmVsU3R5bGV9PllvdTwvZGl2PlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttZXNzYWdlTGFiZWxTdHlsZX0+QWdlbnQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3RvcFRpbWVzdGFtcFN0eWxlfT57dGltZXN0YW1wfTwvZGl2PlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHttZXNzYWdlLmF0dGFjaG1lbnRzICYmIG1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgLi4uYXR0YWNobWVudHNDb250YWluZXJTdHlsZSwgYWxpZ25JdGVtczogaXNVc2VyID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyB9fT5cbiAgICAgICAgICB7bWVzc2FnZS5hdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGdhcDogJzEycHgnLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcxMnB4IDE0cHgnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNVc2VyID8gJ3JnYmEoMjU1LDI1NSwyNTUsMC4xMiknIDogJyNmNWY1ZjUnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogaXNVc2VyID8gJzFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTgpJyA6ICcxcHggc29saWQgI2U1ZTVlNScsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTJweCcsXG4gICAgICAgICAgICAgICAgbWluV2lkdGg6ICcyNjBweCcsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6ICczNjBweCcsXG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7YXR0YWNobWVudC50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpID8gKFxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgIHNyYz17YXR0YWNobWVudC51cmx9XG4gICAgICAgICAgICAgICAgICBhbHQ9e2F0dGFjaG1lbnQubmFtZX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiA1NiwgaGVpZ2h0OiA1NiwgYm9yZGVyUmFkaXVzOiA4LCBvYmplY3RGaXQ6ICdjb3ZlcicgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDQwLCBoZWlnaHQ6IDQwLCBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicgfX0+XG4gICAgICAgICAgICAgICAgICB7Z2V0RmlsZUljb24oYXR0YWNobWVudC50eXBlKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFdlaWdodDogNjAwLCBmb250U2l6ZTogMTQgfX0+e2F0dGFjaG1lbnQubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgb3BhY2l0eTogMC44IH19PlxuICAgICAgICAgICAgICAgICAge2F0dGFjaG1lbnQudHlwZS5pbmNsdWRlcygnLycpID8gYXR0YWNobWVudC50eXBlLnNwbGl0KCcvJylbMV0udG9VcHBlckNhc2UoKSA6IGF0dGFjaG1lbnQudHlwZX1cbiAgICAgICAgICAgICAgICAgIHthdHRhY2htZW50LnNpemUgPyBgIMK3ICR7KGF0dGFjaG1lbnQuc2l6ZSAvIDEwMjQpLnRvRml4ZWQoMSl9IEtCYCA6ICcnfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHttZXNzYWdlLnRleHQgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzhweCcsIGFsaWduU2VsZjogaXNVc2VyID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyB9fT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmJ1YmJsZVN0eWxlLCBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9fT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiAxMiB9fT5cbiAgICAgICAgICAgICAgPEludGVyYWN0aXZlQ29udGVudFxuICAgICAgICAgICAgICAgIGJsb2Nrcz17Y29udGVudEJsb2Nrc31cbiAgICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9e3ByaW1hcnlDb2xvcn1cbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9e2J1YmJsZVRleHRDb2xvcn1cbiAgICAgICAgICAgICAgICBpc0FjdGlvbmFibGU9eyFpc1VzZXIgJiYgaXNMYXN0TWVzc2FnZX1cbiAgICAgICAgICAgICAgICBvblF1aWNrQWN0aW9uPXtvblF1aWNrQWN0aW9ufVxuICAgICAgICAgICAgICAgIG9uU2NoZWR1bGVDb25maXJtPXtvblNjaGVkdWxlQ29uZmlybX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBGZWVkYmFjayByb3cgYmVsb3cgYWdlbnQgbWVzc2FnZSAqL31cbiAgICAgIHtzaG93VGh1bWJzQXJlYSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e2ZlZWRiYWNrUm93U3R5bGV9PlxuICAgICAgICAgIHtmZWVkYmFja1ZhbHVlID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17c2luZ2xlSWNvblN0eWxlfT5cbiAgICAgICAgICAgICAge2ZlZWRiYWNrVmFsdWUgPT09ICdnb29kJyA/IChcbiAgICAgICAgICAgICAgICA8VGh1bWJzVXAgc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRodW1ic0Rvd24gc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtpY29uQnV0dG9uU3R5bGV9XG4gICAgICAgICAgICAgICAgdGl0bGU9XCJUaHVtYnMgdXBcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLm1lc3NhZ2VfaWQgJiYgb25GZWVkYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBvbkZlZWRiYWNrKG1lc3NhZ2UubWVzc2FnZV9pZCwgJ2dvb2QnKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRodW1ic1VwIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17c2VwYXJhdG9yU3R5bGV9IC8+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aWNvbkJ1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgIHRpdGxlPVwiVGh1bWJzIGRvd25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLm1lc3NhZ2VfaWQgJiYgb25GZWVkYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBvbkZlZWRiYWNrKG1lc3NhZ2UubWVzc2FnZV9pZCwgJ2JhZCcpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGh1bWJzRG93biBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19