genassist-chat-react 1.0.25 → 1.0.26
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.
- package/dist/components/ChatBubble.js +2 -2
- package/dist/components/GenAgentChat.js +2 -2
- package/dist/components/GenAgentConfigPanel.d.ts +1 -0
- package/dist/components/GenAgentConfigPanel.js +19 -9
- package/dist/hooks/useChat.d.ts +1 -0
- package/dist/hooks/useChat.js +35 -18
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/services/chatService.d.ts +13 -0
- package/dist/services/chatService.js +42 -3
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +1 -1
- package/package.json +1 -1
|
@@ -25,6 +25,7 @@ export interface GenAgentConfigPanelProps {
|
|
|
25
25
|
onChatSettingsChange?: (next: ChatSettingsConfig) => void;
|
|
26
26
|
metadata?: Record<string, any>;
|
|
27
27
|
onMetadataChange?: (next: Record<string, any>) => void;
|
|
28
|
+
agentChatInputMetadata?: Record<string, any>;
|
|
28
29
|
featureFlags?: FeatureFlags;
|
|
29
30
|
onFeatureFlagsChange?: (next: FeatureFlags) => void;
|
|
30
31
|
defaultOpen?: {
|
|
@@ -19,7 +19,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
19
19
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
20
|
};
|
|
21
21
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
22
|
-
import { useEffect, useMemo, useState } from 'react';
|
|
22
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
23
23
|
import { ChevronDown, ChevronUp, Plus, Trash2, Pencil } from 'lucide-react';
|
|
24
24
|
var defaultTheme = {
|
|
25
25
|
primaryColor: '#4F46E5',
|
|
@@ -64,11 +64,13 @@ function paramsToObject(params) {
|
|
|
64
64
|
}
|
|
65
65
|
export var GenAgentConfigPanel = function (_a) {
|
|
66
66
|
var _b, _c;
|
|
67
|
-
var themeProp = _a.theme, onThemeChange = _a.onThemeChange, chatSettingsProp = _a.chatSettings, onChatSettingsChange = _a.onChatSettingsChange, metadataProp = _a.metadata, onMetadataChange = _a.onMetadataChange, featureFlagsProp = _a.featureFlags, onFeatureFlagsChange = _a.onFeatureFlagsChange, defaultOpen = _a.defaultOpen, onSave = _a.onSave, onCancel = _a.onCancel, style = _a.style;
|
|
67
|
+
var themeProp = _a.theme, onThemeChange = _a.onThemeChange, chatSettingsProp = _a.chatSettings, onChatSettingsChange = _a.onChatSettingsChange, metadataProp = _a.metadata, onMetadataChange = _a.onMetadataChange, agentChatInputMetadata = _a.agentChatInputMetadata, featureFlagsProp = _a.featureFlags, onFeatureFlagsChange = _a.onFeatureFlagsChange, defaultOpen = _a.defaultOpen, onSave = _a.onSave, onCancel = _a.onCancel, style = _a.style;
|
|
68
|
+
// Merge workflow chat input metadata with user metadata
|
|
69
|
+
var mergedMetadata = useMemo(function () { return (__assign(__assign({}, (agentChatInputMetadata || {})), (metadataProp || {}))); }, [agentChatInputMetadata, metadataProp]);
|
|
68
70
|
// Controlled or internal state fallbacks
|
|
69
71
|
var _d = useState(themeProp || defaultTheme), theme = _d[0], setTheme = _d[1];
|
|
70
72
|
var _e = useState(chatSettingsProp || defaultSettings), chatSettings = _e[0], setChatSettings = _e[1];
|
|
71
|
-
var _f = useState(objectToParams(
|
|
73
|
+
var _f = useState(function () { return objectToParams(mergedMetadata); }), params = _f[0], setParams = _f[1];
|
|
72
74
|
var _g = useState(featureFlagsProp || defaultFeatureFlags), featureFlags = _g[0], setFeatureFlags = _g[1];
|
|
73
75
|
useEffect(function () {
|
|
74
76
|
if (themeProp)
|
|
@@ -79,9 +81,8 @@ export var GenAgentConfigPanel = function (_a) {
|
|
|
79
81
|
setChatSettings(chatSettingsProp);
|
|
80
82
|
}, [chatSettingsProp]);
|
|
81
83
|
useEffect(function () {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}, [metadataProp]);
|
|
84
|
+
setParams(objectToParams(mergedMetadata));
|
|
85
|
+
}, [agentChatInputMetadata, metadataProp]);
|
|
85
86
|
useEffect(function () {
|
|
86
87
|
if (featureFlagsProp)
|
|
87
88
|
setFeatureFlags(featureFlagsProp);
|
|
@@ -89,6 +90,15 @@ export var GenAgentConfigPanel = function (_a) {
|
|
|
89
90
|
var _h = useState(typeof (defaultOpen === null || defaultOpen === void 0 ? void 0 : defaultOpen.appearance) === 'boolean' ? !!(defaultOpen === null || defaultOpen === void 0 ? void 0 : defaultOpen.appearance) : true), showAppearance = _h[0], setShowAppearance = _h[1];
|
|
90
91
|
var _j = useState(typeof (defaultOpen === null || defaultOpen === void 0 ? void 0 : defaultOpen.settings) === 'boolean' ? !!(defaultOpen === null || defaultOpen === void 0 ? void 0 : defaultOpen.settings) : false), showSettings = _j[0], setShowSettings = _j[1];
|
|
91
92
|
var _k = useState(typeof (defaultOpen === null || defaultOpen === void 0 ? void 0 : defaultOpen.metadata) === 'boolean' ? !!(defaultOpen === null || defaultOpen === void 0 ? void 0 : defaultOpen.metadata) : false), showMetadata = _k[0], setShowMetadata = _k[1];
|
|
93
|
+
// Auto-expand Metadata section
|
|
94
|
+
var prevMetaKeyCountRef = React.useRef(0);
|
|
95
|
+
useEffect(function () {
|
|
96
|
+
var keyCount = agentChatInputMetadata ? Object.keys(agentChatInputMetadata).length : 0;
|
|
97
|
+
if (keyCount > 0 && prevMetaKeyCountRef.current === 0) {
|
|
98
|
+
setShowMetadata(true);
|
|
99
|
+
}
|
|
100
|
+
prevMetaKeyCountRef.current = keyCount;
|
|
101
|
+
}, [agentChatInputMetadata]);
|
|
92
102
|
var _l = useState(false), showAddParam = _l[0], setShowAddParam = _l[1];
|
|
93
103
|
var _m = useState({
|
|
94
104
|
name: 'param_1',
|
|
@@ -315,7 +325,7 @@ export var GenAgentConfigPanel = function (_a) {
|
|
|
315
325
|
? "'Times New Roman', serif"
|
|
316
326
|
: 'monospace';
|
|
317
327
|
handleThemeChange('fontFamily', ff);
|
|
318
|
-
}, children: [_jsx("option", { value: "Inter", children: "Inter" }), _jsx("option", { value: "Arial", children: "Arial" }), _jsx("option", { value: "Times New Roman", children: "Times New Roman" }), _jsx("option", { value: "monospace", children: "Monospace" })] })] })] }))] }), _jsxs("div", { children: [_jsxs("div", { style: sectionHeaderStyle, onClick: function () { return setShowSettings(!showSettings); }, children: [_jsx("h3", { style: sectionTitleStyle, children: "SETTINGS" }), showSettings ? _jsx(ChevronUp, { size: 16 }) : _jsx(ChevronDown, { size: 16 })] }), showSettings && (_jsxs(_Fragment, { children: [_jsxs("div", { style: { padding: '16px 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Name" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.name, onChange: function (e) { return handleSettingChange('name', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Description" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.description, onChange: function (e) { return handleSettingChange('description', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Agent Name" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.agentName, onChange: function (e) { return handleSettingChange('agentName', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 16px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Logo URL" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.logoUrl || '', onChange: function (e) { return handleSettingChange('logoUrl', e.target.value); }, placeholder: "https://example.com/logo.png" })] }), _jsxs("div", { style: { padding: '16px', borderTop: '1px solid #e0e0e0', marginTop: 8 }, children: [_jsx("div", { style: { fontSize: 13, color: '#555', marginBottom: 12, fontWeight: 500 }, children: "Features" }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Use Audio" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.useAudio, onChange: function (e) { return handleFeatureFlagChange('useAudio', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Use File" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.useFile, onChange: function (e) { return handleFeatureFlagChange('useFile', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Use WebSocket" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.useWs, onChange: function (e) { return handleFeatureFlagChange('useWs', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] })] })] }))] }), _jsxs("div", { children: [_jsxs("div", { style: sectionHeaderStyle, onClick: function () { return setShowMetadata(!showMetadata); }, children: [_jsx("h3", { style: sectionTitleStyle, children: "METADATA" }), showMetadata ? _jsx(ChevronUp, { size: 16 }) : _jsx(ChevronDown, { size: 16 })] }), showMetadata && (_jsxs(_Fragment, { children: [_jsxs("div", { style: { padding: '12px 16px' }, children: [
|
|
328
|
+
}, children: [_jsx("option", { value: "Inter", children: "Inter" }), _jsx("option", { value: "Arial", children: "Arial" }), _jsx("option", { value: "Times New Roman", children: "Times New Roman" }), _jsx("option", { value: "monospace", children: "Monospace" })] })] })] }))] }), _jsxs("div", { children: [_jsxs("div", { style: sectionHeaderStyle, onClick: function () { return setShowSettings(!showSettings); }, children: [_jsx("h3", { style: sectionTitleStyle, children: "SETTINGS" }), showSettings ? _jsx(ChevronUp, { size: 16 }) : _jsx(ChevronDown, { size: 16 })] }), showSettings && (_jsxs(_Fragment, { children: [_jsxs("div", { style: { padding: '16px 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Name" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.name, onChange: function (e) { return handleSettingChange('name', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Description" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.description, onChange: function (e) { return handleSettingChange('description', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 12px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Agent Name" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.agentName, onChange: function (e) { return handleSettingChange('agentName', e.target.value); } })] }), _jsxs("div", { style: { padding: '0 16px 16px' }, children: [_jsx("label", { style: __assign(__assign({}, labelStyle), { display: 'block', marginBottom: 8 }), children: "Logo URL" }), _jsx("input", { type: "text", style: __assign(__assign({}, inputStyle), { height: 40, padding: '0 12px', boxSizing: 'border-box' }), value: chatSettings.logoUrl || '', onChange: function (e) { return handleSettingChange('logoUrl', e.target.value); }, placeholder: "https://example.com/logo.png" })] }), _jsxs("div", { style: { padding: '16px', borderTop: '1px solid #e0e0e0', marginTop: 8 }, children: [_jsx("div", { style: { fontSize: 13, color: '#555', marginBottom: 12, fontWeight: 500 }, children: "Features" }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Use Audio" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.useAudio, onChange: function (e) { return handleFeatureFlagChange('useAudio', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Use File" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.useFile, onChange: function (e) { return handleFeatureFlagChange('useFile', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] }), _jsxs("div", { style: formGroupStyle, children: [_jsx("label", { style: labelStyle, children: "Use WebSocket" }), _jsx("input", { type: "checkbox", checked: !!featureFlags.useWs, onChange: function (e) { return handleFeatureFlagChange('useWs', e.target.checked); }, style: { width: 20, height: 20, cursor: 'pointer' } })] })] })] }))] }), _jsxs("div", { children: [_jsxs("div", { style: sectionHeaderStyle, onClick: function () { return setShowMetadata(!showMetadata); }, children: [_jsx("h3", { style: sectionTitleStyle, children: "METADATA" }), showMetadata ? _jsx(ChevronUp, { size: 16 }) : _jsx(ChevronDown, { size: 16 })] }), showMetadata && (_jsxs(_Fragment, { children: [_jsxs("div", { style: { padding: '12px 16px' }, children: [_jsxs("div", { style: { fontSize: 13, color: '#555', marginBottom: 10 }, children: ["Define key/value parameters sent as chat metadata.", Object.keys(agentChatInputMetadata || {}).length > 0 && (_jsx("span", { style: { display: 'block', marginTop: 4, color: '#666' }, children: "Parameters from the workflow's Chat Input node are shown below." }))] }), _jsxs("button", { style: fullWidthActionButton, onClick: function () { return setShowAddParam(true); }, children: [_jsx(Plus, { size: 18 }), _jsx("span", { children: "Add Parameter" })] })] }), params.length > 0 && (_jsx("div", { style: { padding: '2px 16px 12px', display: 'flex', flexDirection: 'column', gap: 6 }, children: params.map(function (p, idx) {
|
|
319
329
|
var _a;
|
|
320
330
|
var displayVal = p.type === 'boolean' ? (p.value ? 'True' : 'False') : String((_a = p.value) !== null && _a !== void 0 ? _a : '');
|
|
321
331
|
return (_jsxs("div", { style: metaRowStyle, children: [_jsx("div", { style: metaNameStyle, children: p.name }), _jsx("div", { style: metaValueStyle, title: displayVal, children: displayVal }), _jsx("button", { title: "Edit", style: smallIconButton, onClick: function () {
|
|
@@ -347,7 +357,7 @@ var modalOverlayStyle = {
|
|
|
347
357
|
display: 'flex',
|
|
348
358
|
alignItems: 'center',
|
|
349
359
|
justifyContent: 'center',
|
|
350
|
-
zIndex:
|
|
360
|
+
zIndex: 1005,
|
|
351
361
|
};
|
|
352
362
|
var modalStyle = {
|
|
353
363
|
width: 420,
|
|
@@ -376,4 +386,4 @@ var modalFooterStyle = {
|
|
|
376
386
|
borderTop: '1px solid #eee',
|
|
377
387
|
backgroundColor: '#fafafa',
|
|
378
388
|
};
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuQWdlbnRDb25maWdQYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0dlbkFnZW50Q29uZmlnUGFuZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQWMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBZSxNQUFNLGNBQWMsQ0FBQztBQXNEekYsSUFBTSxZQUFZLEdBQWM7SUFDOUIsWUFBWSxFQUFFLFNBQVM7SUFDdkIsY0FBYyxFQUFFLFNBQVM7SUFDekIsZUFBZSxFQUFFLFNBQVM7SUFDMUIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsVUFBVSxFQUFFLG1CQUFtQjtJQUMvQixRQUFRLEVBQUUsTUFBTTtDQUNqQixDQUFDO0FBRUYsSUFBTSxlQUFlLEdBQXVCO0lBQzFDLElBQUksRUFBRSxXQUFXO0lBQ2pCLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLE9BQU8sRUFBRSxFQUFFO0NBQ1osQ0FBQztBQUVGLElBQU0sbUJBQW1CLEdBQWlCO0lBQ3hDLFFBQVEsRUFBRSxLQUFLO0lBQ2YsT0FBTyxFQUFFLEtBQUs7SUFDZCxLQUFLLEVBQUUsS0FBSztDQUNiLENBQUM7QUFFRixTQUFTLGNBQWMsQ0FBQyxHQUFvQztJQUMxRCxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQyxDQUFDO1FBQzVCLElBQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLElBQUksR0FBYyxRQUFRLENBQUM7UUFDL0IsSUFBSSxPQUFP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RSxVQUFVO0lBQzFCLEdBQUcsRUFBRSxDQUFDO0lBQ04sU0FBUyxFQUFFLGdCQUFnQjtJQUMzQixlQUFlLEVBQUUsU0FBUztDQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDaGV2cm9uRG93biwgQ2hldnJvblVwLCBQbHVzLCBUcmFzaDIsIFBlbmNpbCwgWCwgU3BhcmtsZXMgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRUaGVtZSB7XG4gIHByaW1hcnlDb2xvcjogc3RyaW5nO1xuICBzZWNvbmRhcnlDb2xvcjogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgdGV4dENvbG9yOiBzdHJpbmc7XG4gIGZvbnRGYW1pbHk6IHN0cmluZztcbiAgZm9udFNpemU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGF0U2V0dGluZ3NDb25maWcge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGFnZW50TmFtZTogc3RyaW5nO1xuICBsb2dvVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFncyB7XG4gIHVzZUF1ZGlvPzogYm9vbGVhbjtcbiAgdXNlRmlsZT86IGJvb2xlYW47XG4gIHVzZVdzPzogYm9vbGVhbjtcbn1cblxudHlwZSBQYXJhbVR5cGUgPSAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2Jvb2xlYW4nO1xuXG5pbnRlcmZhY2UgTWV0YWRhdGFQYXJhbSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogUGFyYW1UeXBlO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5BZ2VudENvbmZpZ1BhbmVsUHJvcHMge1xuICB0aGVtZT86IENoYXRUaGVtZTtcbiAgb25UaGVtZUNoYW5nZT86IChuZXh0OiBDaGF0VGhlbWUpID0+IHZvaWQ7XG5cbiAgY2hhdFNldHRpbmdzPzogQ2hhdFNldHRpbmdzQ29uZmlnO1xuICBvbkNoYXRTZXR0aW5nc0NoYW5nZT86IChuZXh0OiBDaGF0U2V0dGluZ3NDb25maWcpID0+IHZvaWQ7XG5cbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBvbk1ldGFkYXRhQ2hhbmdlPzogKG5leHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHZvaWQ7XG5cbiAgZmVhdHVyZUZsYWdzPzogRmVhdHVyZUZsYWdzO1xuICBvbkZlYXR1cmVGbGFnc0NoYW5nZT86IChuZXh0OiBGZWF0dXJlRmxhZ3MpID0+IHZvaWQ7XG5cbiAgZGVmYXVsdE9wZW4/OiB7IGFwcGVhcmFuY2U/OiBib29sZWFuOyBzZXR0aW5ncz86IGJvb2xlYW47IG1ldGFkYXRhPzogYm9vbGVhbiB9O1xuICBvblNhdmU/OiAocGF5bG9hZDogeyB0aGVtZTogQ2hhdFRoZW1lOyBjaGF0U2V0dGluZ3M6IENoYXRTZXR0aW5nc0NvbmZpZzsgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47IGZlYXR1cmVGbGFnczogRmVhdHVyZUZsYWdzIH0pID0+IHZvaWQ7XG4gIG9uQ2FuY2VsPzogKCkgPT4gdm9pZDtcblxuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG59XG5cbmNvbnN0IGRlZmF1bHRUaGVtZTogQ2hhdFRoZW1lID0ge1xuICBwcmltYXJ5Q29sb3I6ICcjNEY0NkU1JyxcbiAgc2Vjb25kYXJ5Q29sb3I6ICcjZjVmNWY1JyxcbiAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZmZmZicsXG4gIHRleHRDb2xvcjogJyMwMDAwMDAnLFxuICBmb250RmFtaWx5OiAnSW50ZXIsIHNhbnMtc2VyaWYnLFxuICBmb250U2l6ZTogJzE1cHgnLFxufTtcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzOiBDaGF0U2V0dGluZ3NDb25maWcgPSB7XG4gIG5hbWU6ICdHZW5hc3Npc3QnLFxuICBkZXNjcmlwdGlvbjogJ1N1cHBvcnQnLFxuICBhZ2VudE5hbWU6ICdBZ2VudCcsXG4gIGxvZ29Vcmw6ICcnLFxufTtcblxuY29uc3QgZGVmYXVsdEZlYXR1cmVGbGFnczogRmVhdHVyZUZsYWdzID0ge1xuICB1c2VBdWRpbzogZmFsc2UsXG4gIHVzZUZpbGU6IGZhbHNlLFxuICB1c2VXczogZmFsc2UsXG59O1xuXG5mdW5jdGlvbiBvYmplY3RUb1BhcmFtcyhvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQpOiBNZXRhZGF0YVBhcmFtW10ge1xuICBpZiAoIW9iaikgcmV0dXJuIFtdO1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5tYXAoKGspID0+IHtcbiAgICBjb25zdCB2ID0gb2JqW2tdO1xuICAgIGxldCB0eXBlOiBQYXJhbVR5cGUgPSAnc3RyaW5nJztcbiAgICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB0eXBlID0gJ251bWJlcic7XG4gICAgZWxzZSBpZiAodHlwZW9mIHYgPT09ICdib29sZWFuJykgdHlwZSA9ICdib29sZWFuJztcbiAgICByZXR1cm4geyBuYW1lOiBrLCB0eXBlLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlOiB2IH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXJhbXNUb09iamVjdChwYXJhbXM6IE1ldGFkYXRhUGFyYW1bXSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICBjb25zdCBvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIHBhcmFtcy5mb3JFYWNoKChwKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBwLnZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgb1twLm5hbWVdID0gcC52YWx1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbztcbn1cblxuZXhwb3J0IGNvbnN0IEdlbkFnZW50Q29uZmlnUGFuZWw6IFJlYWN0LkZDPEdlbkFnZW50Q29uZmlnUGFuZWxQcm9wcz4gPSAoe1xuICB0aGVtZTogdGhlbWVQcm9wLFxuICBvblRoZW1lQ2hhbmdlLFxuICBjaGF0U2V0dGluZ3M6IGNoYXRTZXR0aW5nc1Byb3AsXG4gIG9uQ2hhdFNldHRpbmdzQ2hhbmdlLFxuICBtZXRhZGF0YTogbWV0YWRhdGFQcm9wLFxuICBvbk1ldGFkYXRhQ2hhbmdlLFxuICBmZWF0dXJlRmxhZ3M6IGZlYXR1cmVGbGFnc1Byb3AsXG4gIG9uRmVhdHVyZUZsYWdzQ2hhbmdlLFxuICBkZWZhdWx0T3BlbixcbiAgb25TYXZlLFxuICBvbkNhbmNlbCxcbiAgc3R5bGUsXG59KSA9PiB7XG4gIC8vIENvbnRyb2xsZWQgb3IgaW50ZXJuYWwgc3RhdGUgZmFsbGJhY2tzXG4gIGNvbnN0IFt0aGVtZSwgc2V0VGhlbWVdID0gdXNlU3RhdGU8Q2hhdFRoZW1lPih0aGVtZVByb3AgfHwgZGVmYXVsdFRoZW1lKTtcbiAgY29uc3QgW2NoYXRTZXR0aW5ncywgc2V0Q2hhdFNldHRpbmdzXSA9IHVzZVN0YXRlPENoYXRTZXR0aW5nc0NvbmZpZz4oY2hhdFNldHRpbmdzUHJvcCB8fCBkZWZhdWx0U2V0dGluZ3MpO1xuICBjb25zdCBbcGFyYW1zLCBzZXRQYXJhbXNdID0gdXNlU3RhdGU8TWV0YWRhdGFQYXJhbVtdPihvYmplY3RUb1BhcmFtcyhtZXRhZGF0YVByb3ApKTtcbiAgY29uc3QgW2ZlYXR1cmVGbGFncywgc2V0RmVhdHVyZUZsYWdzXSA9IHVzZVN0YXRlPEZlYXR1cmVGbGFncz4oZmVhdHVyZUZsYWdzUHJvcCB8fCBkZWZhdWx0RmVhdHVyZUZsYWdzKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGVtZVByb3ApIHNldFRoZW1lKHRoZW1lUHJvcCk7XG4gIH0sIFt0aGVtZVByb3BdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGF0U2V0dGluZ3NQcm9wKSBzZXRDaGF0U2V0dGluZ3MoY2hhdFNldHRpbmdzUHJvcCk7XG4gIH0sIFtjaGF0U2V0dGluZ3NQcm9wXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobWV0YWRhdGFQcm9wKSBzZXRQYXJhbXMob2JqZWN0VG9QYXJhbXMobWV0YWRhdGFQcm9wKSk7XG4gIH0sIFttZXRhZGF0YVByb3BdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChmZWF0dXJlRmxhZ3NQcm9wKSBzZXRGZWF0dXJlRmxhZ3MoZmVhdHVyZUZsYWdzUHJvcCk7XG4gIH0sIFtmZWF0dXJlRmxhZ3NQcm9wXSk7XG5cbiAgY29uc3QgW3Nob3dBcHBlYXJhbmNlLCBzZXRTaG93QXBwZWFyYW5jZV0gPSB1c2VTdGF0ZShcbiAgICB0eXBlb2YgZGVmYXVsdE9wZW4/LmFwcGVhcmFuY2UgPT09ICdib29sZWFuJyA/ICEhZGVmYXVsdE9wZW4/LmFwcGVhcmFuY2UgOiB0cnVlXG4gICk7XG4gIGNvbnN0IFtzaG93U2V0dGluZ3MsIHNldFNob3dTZXR0aW5nc10gPSB1c2VTdGF0ZShcbiAgICB0eXBlb2YgZGVmYXVsdE9wZW4/LnNldHRpbmdzID09PSAnYm9vbGVhbicgPyAhIWRlZmF1bHRPcGVuPy5zZXR0aW5ncyA6IGZhbHNlXG4gICk7XG4gIGNvbnN0IFtzaG93TWV0YWRhdGEsIHNldFNob3dNZXRhZGF0YV0gPSB1c2VTdGF0ZShcbiAgICB0eXBlb2YgZGVmYXVsdE9wZW4/Lm1ldGFkYXRhID09PSAnYm9vbGVhbicgPyAhIWRlZmF1bHRPcGVuPy5tZXRhZGF0YSA6IGZhbHNlXG4gICk7XG5cbiAgY29uc3QgW3Nob3dBZGRQYXJhbSwgc2V0U2hvd0FkZFBhcmFtXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2RyYWZ0UGFyYW0sIHNldERyYWZ0UGFyYW1dID0gdXNlU3RhdGU8TWV0YWRhdGFQYXJhbT4oe1xuICAgIG5hbWU6ICdwYXJhbV8xJyxcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgdmFsdWU6ICcnLFxuICB9KTtcblxuICBjb25zdCBbc2hvd0VkaXRQYXJhbSwgc2V0U2hvd0VkaXRQYXJhbV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlZGl0SW5kZXgsIHNldEVkaXRJbmRleF0gPSB1c2VTdGF0ZTxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2VkaXREcmFmdCwgc2V0RWRpdERyYWZ0XSA9IHVzZVN0YXRlPE1ldGFkYXRhUGFyYW0+KHsgbmFtZTogJycsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogZmFsc2UsIHZhbHVlOiAnJyB9KTtcblxuICBjb25zdCBtZXRhZGF0YSA9IHVzZU1lbW8oKCkgPT4gcGFyYW1zVG9PYmplY3QocGFyYW1zKSwgW3BhcmFtc10pO1xuXG4gIGNvbnN0IGhhbmRsZVRoZW1lQ2hhbmdlID0gKGtleToga2V5b2YgQ2hhdFRoZW1lLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IHsgLi4udGhlbWUsIFtrZXldOiB2YWx1ZSB9IGFzIENoYXRUaGVtZTtcbiAgICBpZiAoIXRoZW1lUHJvcCkgc2V0VGhlbWUobmV4dCk7XG4gICAgb25UaGVtZUNoYW5nZT8uKG5leHQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNldHRpbmdDaGFuZ2UgPSAoa2V5OiBrZXlvZiBDaGF0U2V0dGluZ3NDb25maWcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBuZXh0ID0geyAuLi5jaGF0U2V0dGluZ3MsIFtrZXldOiB2YWx1ZSB9IGFzIENoYXRTZXR0aW5nc0NvbmZpZztcbiAgICBpZiAoIWNoYXRTZXR0aW5nc1Byb3ApIHNldENoYXRTZXR0aW5ncyhuZXh0KTtcbiAgICBvbkNoYXRTZXR0aW5nc0NoYW5nZT8uKG5leHQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZlYXR1cmVGbGFnQ2hhbmdlID0gKGtleToga2V5b2YgRmVhdHVyZUZsYWdzLCB2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IG5leHQgPSB7IC4uLmZlYXR1cmVGbGFncywgW2tleV06IHZhbHVlIH0gYXMgRmVhdHVyZUZsYWdzO1xuICAgIGlmICghZmVhdHVyZUZsYWdzUHJvcCkgc2V0RmVhdHVyZUZsYWdzKG5leHQpO1xuICAgIG9uRmVhdHVyZUZsYWdzQ2hhbmdlPy4obmV4dCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQWRkUGFyYW0gPSAoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IGRyYWZ0UGFyYW0ubmFtZS50cmltKCk7XG4gICAgaWYgKCFuYW1lKSByZXR1cm47XG4gICAgaWYgKHBhcmFtcy5zb21lKChwKSA9PiBwLm5hbWUgPT09IG5hbWUpKSByZXR1cm47XG4gICAgY29uc3Qgbm9ybWFsaXplZDogTWV0YWRhdGFQYXJhbSA9IHtcbiAgICAgIC4uLmRyYWZ0UGFyYW0sXG4gICAgICBuYW1lLFxuICAgICAgdmFsdWU6XG4gICAgICAgIHR5cGVvZiBkcmFmdFBhcmFtLnZhbHVlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgID8gZHJhZnRQYXJhbS52YWx1ZVxuICAgICAgICAgIDogZHJhZnRQYXJhbS50eXBlID09PSAnbnVtYmVyJ1xuICAgICAgICAgID8gMFxuICAgICAgICAgIDogZHJhZnRQYXJhbS50eXBlID09PSAnYm9vbGVhbidcbiAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgOiAnJyxcbiAgICB9O1xuICAgIGNvbnN0IG5leHQgPSBbLi4ucGFyYW1zLCBub3JtYWxpemVkXTtcbiAgICBzZXRQYXJhbXMobmV4dCk7XG4gICAgb25NZXRhZGF0YUNoYW5nZT8uKHBhcmFtc1RvT2JqZWN0KG5leHQpKTtcbiAgICBzZXREcmFmdFBhcmFtKHsgbmFtZTogJ3BhcmFtXzEnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZTogJycgfSk7XG4gICAgc2V0U2hvd0FkZFBhcmFtKGZhbHNlKTtcbiAgfTtcblxuICBjb25zdCBjb2VyY2VGb3JUeXBlID0gKHZhbDogYW55LCB0eXBlOiBQYXJhbVR5cGUpID0+IHtcbiAgICBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IG4gPSBOdW1iZXIodmFsKTtcbiAgICAgIHJldHVybiBpc05hTihuKSA/IDAgOiBuO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdmFsO1xuICAgICAgY29uc3QgcyA9IFN0cmluZyh2YWwpLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gcyA9PT0gJ3RydWUnIHx8IHMgPT09ICcxJyB8fCBzID09PSAneWVzJztcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWwgPz8gJycpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVkaXRTYXZlID0gKCkgPT4ge1xuICAgIGlmIChlZGl0SW5kZXggPT09IG51bGwpIHJldHVybjtcbiAgICBjb25zdCBuZXdOYW1lID0gZWRpdERyYWZ0Lm5hbWUudHJpbSgpO1xuICAgIGlmICghbmV3TmFtZSkgcmV0dXJuO1xuICAgIGlmIChwYXJhbXMuc29tZSgocCwgaSkgPT4gaSAhPT0gZWRpdEluZGV4ICYmIHAubmFtZSA9PT0gbmV3TmFtZSkpIHJldHVybjtcbiAgICBjb25zdCBuZXh0ID0gWy4uLnBhcmFtc107XG4gICAgY29uc3Qgb2xkID0gbmV4dFtlZGl0SW5kZXhdO1xuICAgIGNvbnN0IHVwZGF0ZWQ6IE1ldGFkYXRhUGFyYW0gPSB7IC4uLm9sZCwgLi4uZWRpdERyYWZ0IH07XG4gICAgdXBkYXRlZC52YWx1ZSA9IGNvZXJjZUZvclR5cGUob2xkLnZhbHVlLCBlZGl0RHJhZnQudHlwZSk7XG4gICAgbmV4dFtlZGl0SW5kZXhdID0gdXBkYXRlZDtcbiAgICBzZXRQYXJhbXMobmV4dCk7XG4gICAgb25NZXRhZGF0YUNoYW5nZT8uKHBhcmFtc1RvT2JqZWN0KG5leHQpKTtcbiAgICBzZXRTaG93RWRpdFBhcmFtKGZhbHNlKTtcbiAgICBzZXRFZGl0SW5kZXgobnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVtb3ZlUGFyYW0gPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5leHQgPSBwYXJhbXMuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgc2V0UGFyYW1zKG5leHQpO1xuICAgIG9uTWV0YWRhdGFDaGFuZ2U/LihwYXJhbXNUb09iamVjdChuZXh0KSk7XG4gIH07XG5cbiAgY29uc3QgY29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZmxleDogJzEnLFxuICAgIG1heFdpZHRoOiAzMDAsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZmZmZicsXG4gICAgYm9yZGVyUmFkaXVzOiA4LFxuICAgIGJveFNoYWRvdzogJzAgMnB4IDEwcHggcmdiYSgwLDAsMCwwLjEpJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIC4uLnN0eWxlLFxuICB9O1xuXG4gIGNvbnN0IHNlY3Rpb25IZWFkZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwYWRkaW5nOiAxNixcbiAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2Y5ZjlmOScsXG4gIH07XG5cbiAgY29uc3Qgc2VjdGlvblRpdGxlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgbWFyZ2luOiAwLFxuICAgIGZvbnRTaXplOiAxMixcbiAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gICAgY29sb3I6ICcjNjY2JyxcbiAgICBsZXR0ZXJTcGFjaW5nOiAxLFxuICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3QgZm9ybUdyb3VwU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgcGFkZGluZzogJzE2cHggMTZweCAxMnB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBib3JkZXJCb3R0b206ICdub25lJyxcbiAgfTtcblxuICBjb25zdCBsYWJlbFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0geyBmb250U2l6ZTogMTQsIGNvbG9yOiAnIzMzMycgfTtcbiAgY29uc3QgY29sb3JQaWNrZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBhcHBlYXJhbmNlOiAnbm9uZScsXG4gICAgd2lkdGg6IDEyMCxcbiAgICBoZWlnaHQ6IDMyLFxuICAgIHBhZGRpbmc6IDAsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgIGJvcmRlclJhZGl1czogNCxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuXG4gIGNvbnN0IHNlbGVjdFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHdpZHRoOiAxNDAsXG4gICAgaGVpZ2h0OiAzMixcbiAgICBwYWRkaW5nOiAnMCA4cHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6IDE0LFxuICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3QgaW5wdXRTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogMzIsXG4gICAgcGFkZGluZzogJzAgOHB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgYm9yZGVyUmFkaXVzOiA0LFxuICAgIGZvbnRTaXplOiAxNCxcbiAgfTtcblxuICBjb25zdCBhY3Rpb25CYXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwYWRkaW5nOiAxMixcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdmbGV4LWVuZCcsXG4gICAgZ2FwOiA4LFxuICAgIGJvcmRlclRvcDogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmFmYWZhJyxcbiAgfTtcblxuICBjb25zdCBjYW5jZWxCdXR0b25TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwYWRkaW5nOiAnOHB4IDEycHgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBib3JkZXJSYWRpdXM6IDYsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gIH07XG4gIGNvbnN0IHNhdmVCdXR0b25TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwYWRkaW5nOiAnOHB4IDEycHgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyMxMTE4MjcnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICMwYjEyMjAnLFxuICAgIGJvcmRlclJhZGl1czogNixcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgfTtcblxuICBjb25zdCBmdWxsV2lkdGhBY3Rpb25CdXR0b246IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGdhcDogOCxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmc6ICcxMHB4IDEycHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBib3JkZXJSYWRpdXM6IDgsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgZm9udFNpemU6IDE0LFxuICAgIGNvbG9yOiAnIzExMScsXG4gIH07XG5cbiAgY29uc3Qgc21hbGxJY29uQnV0dG9uOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBib3JkZXJSYWRpdXM6IDgsXG4gICAgd2lkdGg6IDI4LFxuICAgIGhlaWdodDogMjgsXG4gICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gIH07XG5cbiAgY29uc3QgbWV0YVJvd1N0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAnMWZyIG1pbm1heCg5MHB4LCAxNTBweCkgMjhweCAyOHB4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBnYXA6IDgsXG4gICAgcGFkZGluZzogJzZweCAwJyxcbiAgfTtcbiAgY29uc3QgbWV0YU5hbWVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogMTMsXG4gICAgY29sb3I6ICcjMjIyJyxcbiAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgfTtcbiAgY29uc3QgbWV0YVZhbHVlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgbWF4V2lkdGg6IDE1MCxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIGZvbnRTaXplOiAxMyxcbiAgICBjb2xvcjogJyMxMTEnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTZlNmU2JyxcbiAgICBib3JkZXJSYWRpdXM6IDEyLFxuICAgIHBhZGRpbmc6ICc2cHggMTBweCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZhZmFmYScsXG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU2F2ZSA9ICgpID0+IHtcbiAgICBvblNhdmU/Lih7IHRoZW1lLCBjaGF0U2V0dGluZ3MsIG1ldGFkYXRhLCBmZWF0dXJlRmxhZ3MgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXtjb250YWluZXJTdHlsZX0+XG4gICAgICB7LyogQXBwZWFyYW5jZSBTZWN0aW9uICovfVxuICAgICAgPGRpdiBzdHlsZT17eyBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UwZTBlMCcgfX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3NlY3Rpb25IZWFkZXJTdHlsZX0gb25DbGljaz17KCkgPT4gc2V0U2hvd0FwcGVhcmFuY2UoIXNob3dBcHBlYXJhbmNlKX0+XG4gICAgICAgICAgPGgzIHN0eWxlPXtzZWN0aW9uVGl0bGVTdHlsZX0+QVBQRUFSQU5DRTwvaDM+XG4gICAgICAgICAge3Nob3dBcHBlYXJhbmNlID8gPENoZXZyb25VcCBzaXplPXsxNn0gLz4gOiA8Q2hldnJvbkRvd24gc2l6ZT17MTZ9IC8+fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3Nob3dBcHBlYXJhbmNlICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PlByaW1hcnkgQ29sb3I8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGVtZS5wcmltYXJ5Q29sb3J9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaGVtZUNoYW5nZSgncHJpbWFyeUNvbG9yJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXtjb2xvclBpY2tlclN0eWxlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+U2Vjb25kYXJ5IENvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhlbWUuc2Vjb25kYXJ5Q29sb3J9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaGVtZUNoYW5nZSgnc2Vjb25kYXJ5Q29sb3InLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e2NvbG9yUGlja2VyU3R5bGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5CYWNrZ3JvdW5kIENvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhlbWUuYmFja2dyb3VuZENvbG9yfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVGhlbWVDaGFuZ2UoJ2JhY2tncm91bmRDb2xvcicsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBzdHlsZT17Y29sb3JQaWNrZXJTdHlsZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PlRleHQgQ29sb3I8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGVtZS50ZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaGVtZUNoYW5nZSgndGV4dENvbG9yJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXtjb2xvclBpY2tlclN0eWxlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+Rm9udCBTaXplPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgIHN0eWxlPXtzZWxlY3RTdHlsZX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhlbWUuZm9udFNpemV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVUaGVtZUNoYW5nZSgnZm9udFNpemUnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMTJweFwiPlNtYWxsICgxMnB4KTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxNXB4XCI+TWVkaXVtICgxNXB4KTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxOHB4XCI+TGFyZ2UgKDE4cHgpPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+Rm9udCBGYW1pbHk8L2xhYmVsPlxuICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGVtZS5mb250RmFtaWx5LnNwbGl0KCcsJylbMF0udHJpbSgpfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdiA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZmYgPVxuICAgICAgICAgICAgICAgICAgICB2ID09PSAnSW50ZXInXG4gICAgICAgICAgICAgICAgICAgICAgPyAnSW50ZXIsIHNhbnMtc2VyaWYnXG4gICAgICAgICAgICAgICAgICAgICAgOiB2ID09PSAnQXJpYWwnXG4gICAgICAgICAgICAgICAgICAgICAgPyAnQXJpYWwsIHNhbnMtc2VyaWYnXG4gICAgICAgICAgICAgICAgICAgICAgOiB2ID09PSAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICAgICAgICAgICAgICAgID8gXCInVGltZXMgTmV3IFJvbWFuJywgc2VyaWZcIlxuICAgICAgICAgICAgICAgICAgICAgIDogJ21vbm9zcGFjZSc7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVUaGVtZUNoYW5nZSgnZm9udEZhbWlseScsIGZmKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkludGVyXCI+SW50ZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQXJpYWxcIj5BcmlhbDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJUaW1lcyBOZXcgUm9tYW5cIj5UaW1lcyBOZXcgUm9tYW48L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibW9ub3NwYWNlXCI+TW9ub3NwYWNlPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFNldHRpbmdzIFNlY3Rpb24gKi99XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXtzZWN0aW9uSGVhZGVyU3R5bGV9IG9uQ2xpY2s9eygpID0+IHNldFNob3dTZXR0aW5ncyghc2hvd1NldHRpbmdzKX0+XG4gICAgICAgICAgPGgzIHN0eWxlPXtzZWN0aW9uVGl0bGVTdHlsZX0+U0VUVElOR1M8L2gzPlxuICAgICAgICAgIHtzaG93U2V0dGluZ3MgPyA8Q2hldnJvblVwIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uRG93biBzaXplPXsxNn0gLz59XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7c2hvd1NldHRpbmdzICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMTZweCAxNnB4IDEycHgnIH19PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgLi4ubGFiZWxTdHlsZSwgZGlzcGxheTogJ2Jsb2NrJywgbWFyZ2luQm90dG9tOiA4IH19Pk5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgLi4uaW5wdXRTdHlsZSwgaGVpZ2h0OiA0MCwgcGFkZGluZzogJzAgMTJweCcsIGJveFNpemluZzogJ2JvcmRlci1ib3gnIH19XG4gICAgICAgICAgICAgICAgdmFsdWU9e2NoYXRTZXR0aW5ncy5uYW1lfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlU2V0dGluZ0NoYW5nZSgnbmFtZScsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMCAxNnB4IDEycHgnIH19PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgLi4ubGFiZWxTdHlsZSwgZGlzcGxheTogJ2Jsb2NrJywgbWFyZ2luQm90dG9tOiA4IH19PkRlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IC4uLmlucHV0U3R5bGUsIGhlaWdodDogNDAsIHBhZGRpbmc6ICcwIDEycHgnLCBib3hTaXppbmc6ICdib3JkZXItYm94JyB9fVxuICAgICAgICAgICAgICAgIHZhbHVlPXtjaGF0U2V0dGluZ3MuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVTZXR0aW5nQ2hhbmdlKCdkZXNjcmlwdGlvbicsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMCAxNnB4IDEycHgnIH19PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgLi4ubGFiZWxTdHlsZSwgZGlzcGxheTogJ2Jsb2NrJywgbWFyZ2luQm90dG9tOiA4IH19PkFnZW50IE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgLi4uaW5wdXRTdHlsZSwgaGVpZ2h0OiA0MCwgcGFkZGluZzogJzAgMTJweCcsIGJveFNpemluZzogJ2JvcmRlci1ib3gnIH19XG4gICAgICAgICAgICAgICAgdmFsdWU9e2NoYXRTZXR0aW5ncy5hZ2VudE5hbWV9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVTZXR0aW5nQ2hhbmdlKCdhZ2VudE5hbWUnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgcGFkZGluZzogJzAgMTZweCAxNnB4JyB9fT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IC4uLmxhYmVsU3R5bGUsIGRpc3BsYXk6ICdibG9jaycsIG1hcmdpbkJvdHRvbTogOCB9fT5Mb2dvIFVSTDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyAuLi5pbnB1dFN0eWxlLCBoZWlnaHQ6IDQwLCBwYWRkaW5nOiAnMCAxMnB4JywgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcgfX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17Y2hhdFNldHRpbmdzLmxvZ29VcmwgfHwgJyd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVTZXR0aW5nQ2hhbmdlKCdsb2dvVXJsJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiaHR0cHM6Ly9leGFtcGxlLmNvbS9sb2dvLnBuZ1wiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgcGFkZGluZzogJzE2cHgnLCBib3JkZXJUb3A6ICcxcHggc29saWQgI2UwZTBlMCcsIG1hcmdpblRvcDogOCB9fT5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTMsIGNvbG9yOiAnIzU1NScsIG1hcmdpbkJvdHRvbTogMTIsIGZvbnRXZWlnaHQ6IDUwMCB9fT5cbiAgICAgICAgICAgICAgICBGZWF0dXJlc1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+VXNlIEF1ZGlvPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXshIWZlYXR1cmVGbGFncy51c2VBdWRpb31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlRmVhdHVyZUZsYWdDaGFuZ2UoJ3VzZUF1ZGlvJywgZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAsIGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PlVzZSBGaWxlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXshIWZlYXR1cmVGbGFncy51c2VGaWxlfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVGZWF0dXJlRmxhZ0NoYW5nZSgndXNlRmlsZScsIGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwLCBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5Vc2UgV2ViU29ja2V0PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXshIWZlYXR1cmVGbGFncy51c2VXc31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlRmVhdHVyZUZsYWdDaGFuZ2UoJ3VzZVdzJywgZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAsIGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogTWV0YWRhdGEgU2VjdGlvbiAqL31cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9e3NlY3Rpb25IZWFkZXJTdHlsZX0gb25DbGljaz17KCkgPT4gc2V0U2hvd01ldGFkYXRhKCFzaG93TWV0YWRhdGEpfT5cbiAgICAgICAgICA8aDMgc3R5bGU9e3NlY3Rpb25UaXRsZVN0eWxlfT5NRVRBREFUQTwvaDM+XG4gICAgICAgICAge3Nob3dNZXRhZGF0YSA/IDxDaGV2cm9uVXAgc2l6ZT17MTZ9IC8+IDogPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtzaG93TWV0YWRhdGEgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmc6ICcxMnB4IDE2cHgnIH19PlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxMywgY29sb3I6ICcjNTU1JywgbWFyZ2luQm90dG9tOiAxMCB9fT5cbiAgICAgICAgICAgICAgICBEZWZpbmUga2V5L3ZhbHVlIHBhcmFtZXRlcnMgc2VudCBhcyBjaGF0IG1ldGFkYXRhLlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBzdHlsZT17ZnVsbFdpZHRoQWN0aW9uQnV0dG9ufSBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkUGFyYW0odHJ1ZSl9PlxuICAgICAgICAgICAgICAgIDxQbHVzIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICAgIDxzcGFuPkFkZCBQYXJhbWV0ZXI8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7cGFyYW1zLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmc6ICcycHggMTZweCAxMnB4JywgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2IH19PlxuICAgICAgICAgICAgICAgIHtwYXJhbXMubWFwKChwLCBpZHgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWwgPSBwLnR5cGUgPT09ICdib29sZWFuJyA/IChwLnZhbHVlID8gJ1RydWUnIDogJ0ZhbHNlJykgOiBTdHJpbmcocC52YWx1ZSA/PyAnJyk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17cC5uYW1lfSBzdHlsZT17bWV0YVJvd1N0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXttZXRhTmFtZVN0eWxlfT57cC5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e21ldGFWYWx1ZVN0eWxlfSB0aXRsZT17ZGlzcGxheVZhbH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVZhbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3NtYWxsSWNvbkJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RWRpdEluZGV4KGlkeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXREcmFmdCh7IC4uLnAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dFZGl0UGFyYW0odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17YEVkaXQgJHtwLm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGVuY2lsIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiUmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzbWFsbEljb25CdXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVSZW1vdmVQYXJhbShpZHgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17YFJlbW92ZSAke3AubmFtZX1gfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUcmFzaDIgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBBY3Rpb24gQnV0dG9ucyAqL31cbiAgICAgIDxkaXYgc3R5bGU9e2FjdGlvbkJhclN0eWxlfT5cbiAgICAgICAgPGJ1dHRvbiBzdHlsZT17Y2FuY2VsQnV0dG9uU3R5bGV9IG9uQ2xpY2s9eygpID0+IG9uQ2FuY2VsPy4oKX0+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gc3R5bGU9e3NhdmVCdXR0b25TdHlsZX0gb25DbGljaz17aGFuZGxlU2F2ZX0+U2F2ZSBDaGFuZ2VzPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFNpbXBsZSBQYXJhbWV0ZXIgTW9kYWxzICovfVxuICAgICAge3Nob3dBZGRQYXJhbSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e21vZGFsT3ZlcmxheVN0eWxlfT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbFN0eWxlfT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsSGVhZGVyU3R5bGV9PkFkZCBQYXJhbWV0ZXI8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsQm9keVN0eWxlfT5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYgfX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5QYXJhbWV0ZXIgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17aW5wdXRTdHlsZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtkcmFmdFBhcmFtLm5hbWV9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldERyYWZ0UGFyYW0oKGQpID0+ICh7IC4uLmQsIG5hbWU6IGUudGFyZ2V0LnZhbHVlIH0pKX1cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwicGFyYW1fMVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogMTIgfX0+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYsIGZsZXg6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgZm9udFNpemU6IDEyLCBjb2xvcjogJyM3NzcnIH19PlR5cGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtkcmFmdFBhcmFtLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzZXREcmFmdFBhcmFtKChkKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUudGFyZ2V0LnZhbHVlIGFzIFBhcmFtVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLnRhcmdldC52YWx1ZSA9PT0gJ2Jvb2xlYW4nID8gZmFsc2UgOiBlLnRhcmdldC52YWx1ZSA9PT0gJ251bWJlcicgPyAwIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInN0cmluZ1wiPlN0cmluZzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibnVtYmVyXCI+TnVtYmVyPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJib29sZWFuXCI+Qm9vbGVhbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogNiwgZmxleDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+UmVxdWlyZWQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtkcmFmdFBhcmFtLnJlcXVpcmVkID8gJ3llcycgOiAnbm8nfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldERyYWZ0UGFyYW0oKGQpID0+ICh7IC4uLmQsIHJlcXVpcmVkOiBlLnRhcmdldC52YWx1ZSA9PT0gJ3llcycgfSkpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm9cIj5Obzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwieWVzXCI+WWVzPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYgfX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5EZWZhdWx0IC8gVmFsdWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIHtkcmFmdFBhcmFtLnR5cGUgPT09ICdib29sZWFuJyA/IChcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZHJhZnRQYXJhbS52YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RHJhZnRQYXJhbSgoZCkgPT4gKHsgLi4uZCwgdmFsdWU6IGUudGFyZ2V0LnZhbHVlID09PSAndHJ1ZScgfSkpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZmFsc2VcIj5GYWxzZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidHJ1ZVwiPlRydWU8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT17ZHJhZnRQYXJhbS50eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3RleHQnfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17aW5wdXRTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e1N0cmluZyhkcmFmdFBhcmFtLnZhbHVlID8/ICcnKX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNldERyYWZ0UGFyYW0oKGQpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRyYWZ0UGFyYW0udHlwZSA9PT0gJ251bWJlcicgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIDogZS50YXJnZXQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bW9kYWxGb290ZXJTdHlsZX0+XG4gICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9e2NhbmNlbEJ1dHRvblN0eWxlfSBvbkNsaWNrPXsoKSA9PiBzZXRTaG93QWRkUGFyYW0oZmFsc2UpfT5cbiAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9e3NhdmVCdXR0b25TdHlsZX0gb25DbGljaz17aGFuZGxlQWRkUGFyYW19PlxuICAgICAgICAgICAgICAgIEFkZFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RWRpdFBhcmFtICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17bW9kYWxPdmVybGF5U3R5bGV9PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsU3R5bGV9PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bW9kYWxIZWFkZXJTdHlsZX0+RWRpdCBQYXJhbWV0ZXI8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsQm9keVN0eWxlfT5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYgfX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5QYXJhbWV0ZXIgTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT17aW5wdXRTdHlsZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0RHJhZnQubmFtZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RWRpdERyYWZ0KChkKSA9PiAoeyAuLi5kLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogMTIgfX0+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYsIGZsZXg6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgZm9udFNpemU6IDEyLCBjb2xvcjogJyM3NzcnIH19PlR5cGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0RHJhZnQudHlwZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXREcmFmdCgoZCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBlLnRhcmdldC52YWx1ZSBhcyBQYXJhbVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPT09ICdib29sZWFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGUudGFyZ2V0LnZhbHVlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIGQudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwic3RyaW5nXCI+U3RyaW5nPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJudW1iZXJcIj5OdW1iZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJvb2xlYW5cIj5Cb29sZWFuPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2LCBmbGV4OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5SZXF1aXJlZDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzZWxlY3RTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2VkaXREcmFmdC5yZXF1aXJlZCA/ICd5ZXMnIDogJ25vJ31cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRFZGl0RHJhZnQoKGQpID0+ICh7IC4uLmQsIHJlcXVpcmVkOiBlLnRhcmdldC52YWx1ZSA9PT0gJ3llcycgfSkpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm9cIj5Obzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwieWVzXCI+WWVzPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYgfX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5WYWx1ZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAge2VkaXREcmFmdC50eXBlID09PSAnYm9vbGVhbicgPyAoXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzZWxlY3RTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2VkaXREcmFmdC52YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RWRpdERyYWZ0KChkKSA9PiAoeyAuLi5kLCB2YWx1ZTogZS50YXJnZXQudmFsdWUgPT09ICd0cnVlJyB9KSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJmYWxzZVwiPkZhbHNlPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ0cnVlXCI+VHJ1ZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPXtlZGl0RHJhZnQudHlwZSA9PT0gJ251bWJlcicgPyAnbnVtYmVyJyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2lucHV0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtTdHJpbmcoZWRpdERyYWZ0LnZhbHVlID8/ICcnKX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXREcmFmdCgoZCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmQsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWRpdERyYWZ0LnR5cGUgPT09ICdudW1iZXInID8gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSA6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsRm9vdGVyU3R5bGV9PlxuICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPXtjYW5jZWxCdXR0b25TdHlsZX0gb25DbGljaz17KCkgPT4gc2V0U2hvd0VkaXRQYXJhbShmYWxzZSl9PlxuICAgICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBzdHlsZT17c2F2ZUJ1dHRvblN0eWxlfSBvbkNsaWNrPXtoYW5kbGVFZGl0U2F2ZX0+XG4gICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG4vLyBNb2RhbCBzdHlsZXMgKHNoYXJlZClcbmNvbnN0IG1vZGFsT3ZlcmxheVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgaW5zZXQ6IDAsXG4gIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMC4yNSknLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIHpJbmRleDogOTk5OSxcbn07XG5cbmNvbnN0IG1vZGFsU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIHdpZHRoOiA0MjAsXG4gIG1heFdpZHRoOiAnOTJ2dycsXG4gIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICBib3JkZXJSYWRpdXM6IDEyLFxuICBib3hTaGFkb3c6ICcwIDhweCAyNHB4IHJnYmEoMCwwLDAsMC4xOCknLFxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG59O1xuXG5jb25zdCBtb2RhbEhlYWRlclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgZm9udFdlaWdodDogNjAwLFxuICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2VlZScsXG59O1xuXG5jb25zdCBtb2RhbEJvZHlTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgcGFkZGluZzogMTYsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gIGdhcDogMTIsXG59O1xuXG5jb25zdCBtb2RhbEZvb3RlclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICBwYWRkaW5nOiAxMixcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJyxcbiAgZ2FwOiA4LFxuICBib3JkZXJUb3A6ICcxcHggc29saWQgI2VlZScsXG4gIGJhY2tncm91bmRDb2xvcjogJyNmYWZhZmEnLFxufTsiXX0=
|
|
389
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuQWdlbnRDb25maWdQYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0dlbkFnZW50Q29uZmlnUGFuZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQWUsTUFBTSxjQUFjLENBQUM7QUF3RHpGLElBQU0sWUFBWSxHQUFjO0lBQzlCLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLGVBQWUsRUFBRSxTQUFTO0lBQzFCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsUUFBUSxFQUFFLE1BQU07Q0FDakIsQ0FBQztBQUVGLElBQU0sZUFBZSxHQUF1QjtJQUMxQyxJQUFJLEVBQUUsV0FBVztJQUNqQixXQUFXLEVBQUUsU0FBUztJQUN0QixTQUFTLEVBQUUsT0FBTztJQUNsQixPQUFPLEVBQUUsRUFBRTtDQUNaLENBQUM7QUFFRixJQUFNLG1CQUFtQixHQUFpQjtJQUN4QyxRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxLQUFLO0lBQ2QsS0FBSyxFQUFFLEtBQUs7Q0FDYixDQUFDO0FBRUYsU0FBUyxjQUFjLENBQUMsR0FBb0M7SUFDMUQsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNwQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUMsQ0FBQztRQUM1QixJQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsSUFBSSxJQUFJLEdBQWMsUUFBUSxDQUFDO1FBQy9C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dXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENoZXZyb25Eb3duLCBDaGV2cm9uVXAsIFBsdXMsIFRyYXNoMiwgUGVuY2lsLCBYLCBTcGFya2xlcyB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdFRoZW1lIHtcbiAgcHJpbWFyeUNvbG9yOiBzdHJpbmc7XG4gIHNlY29uZGFyeUNvbG9yOiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgZm9udEZhbWlseTogc3RyaW5nO1xuICBmb250U2l6ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRTZXR0aW5nc0NvbmZpZyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgYWdlbnROYW1lOiBzdHJpbmc7XG4gIGxvZ29Vcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWdzIHtcbiAgdXNlQXVkaW8/OiBib29sZWFuO1xuICB1c2VGaWxlPzogYm9vbGVhbjtcbiAgdXNlV3M/OiBib29sZWFuO1xufVxuXG50eXBlIFBhcmFtVHlwZSA9ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnYm9vbGVhbic7XG5cbmludGVyZmFjZSBNZXRhZGF0YVBhcmFtIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBQYXJhbVR5cGU7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbkFnZW50Q29uZmlnUGFuZWxQcm9wcyB7XG4gIHRoZW1lPzogQ2hhdFRoZW1lO1xuICBvblRoZW1lQ2hhbmdlPzogKG5leHQ6IENoYXRUaGVtZSkgPT4gdm9pZDtcblxuICBjaGF0U2V0dGluZ3M/OiBDaGF0U2V0dGluZ3NDb25maWc7XG4gIG9uQ2hhdFNldHRpbmdzQ2hhbmdlPzogKG5leHQ6IENoYXRTZXR0aW5nc0NvbmZpZykgPT4gdm9pZDtcblxuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIG9uTWV0YWRhdGFDaGFuZ2U/OiAobmV4dDogUmVjb3JkPHN0cmluZywgYW55PikgPT4gdm9pZDtcblxuICBhZ2VudENoYXRJbnB1dE1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBmZWF0dXJlRmxhZ3M/OiBGZWF0dXJlRmxhZ3M7XG4gIG9uRmVhdHVyZUZsYWdzQ2hhbmdlPzogKG5leHQ6IEZlYXR1cmVGbGFncykgPT4gdm9pZDtcblxuICBkZWZhdWx0T3Blbj86IHsgYXBwZWFyYW5jZT86IGJvb2xlYW47IHNldHRpbmdzPzogYm9vbGVhbjsgbWV0YWRhdGE/OiBib29sZWFuIH07XG4gIG9uU2F2ZT86IChwYXlsb2FkOiB7IHRoZW1lOiBDaGF0VGhlbWU7IGNoYXRTZXR0aW5nczogQ2hhdFNldHRpbmdzQ29uZmlnOyBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PjsgZmVhdHVyZUZsYWdzOiBGZWF0dXJlRmxhZ3MgfSkgPT4gdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuXG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn1cblxuY29uc3QgZGVmYXVsdFRoZW1lOiBDaGF0VGhlbWUgPSB7XG4gIHByaW1hcnlDb2xvcjogJyM0RjQ2RTUnLFxuICBzZWNvbmRhcnlDb2xvcjogJyNmNWY1ZjUnLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgdGV4dENvbG9yOiAnIzAwMDAwMCcsXG4gIGZvbnRGYW1pbHk6ICdJbnRlciwgc2Fucy1zZXJpZicsXG4gIGZvbnRTaXplOiAnMTVweCcsXG59O1xuXG5jb25zdCBkZWZhdWx0U2V0dGluZ3M6IENoYXRTZXR0aW5nc0NvbmZpZyA9IHtcbiAgbmFtZTogJ0dlbmFzc2lzdCcsXG4gIGRlc2NyaXB0aW9uOiAnU3VwcG9ydCcsXG4gIGFnZW50TmFtZTogJ0FnZW50JyxcbiAgbG9nb1VybDogJycsXG59O1xuXG5jb25zdCBkZWZhdWx0RmVhdHVyZUZsYWdzOiBGZWF0dXJlRmxhZ3MgPSB7XG4gIHVzZUF1ZGlvOiBmYWxzZSxcbiAgdXNlRmlsZTogZmFsc2UsXG4gIHVzZVdzOiBmYWxzZSxcbn07XG5cbmZ1bmN0aW9uIG9iamVjdFRvUGFyYW1zKG9iajogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCk6IE1ldGFkYXRhUGFyYW1bXSB7XG4gIGlmICghb2JqKSByZXR1cm4gW107XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLm1hcCgoaykgPT4ge1xuICAgIGNvbnN0IHYgPSBvYmpba107XG4gICAgbGV0IHR5cGU6IFBhcmFtVHlwZSA9ICdzdHJpbmcnO1xuICAgIGlmICh0eXBlb2YgdiA9PT0gJ251bWJlcicpIHR5cGUgPSAnbnVtYmVyJztcbiAgICBlbHNlIGlmICh0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nKSB0eXBlID0gJ2Jvb2xlYW4nO1xuICAgIHJldHVybiB7IG5hbWU6IGssIHR5cGUsIHJlcXVpcmVkOiBmYWxzZSwgdmFsdWU6IHYgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhcmFtc1RvT2JqZWN0KHBhcmFtczogTWV0YWRhdGFQYXJhbVtdKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGNvbnN0IG86IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgcGFyYW1zLmZvckVhY2goKHApID0+IHtcbiAgICBpZiAodHlwZW9mIHAudmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBvW3AubmFtZV0gPSBwLnZhbHVlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvO1xufVxuXG5leHBvcnQgY29uc3QgR2VuQWdlbnRDb25maWdQYW5lbDogUmVhY3QuRkM8R2VuQWdlbnRDb25maWdQYW5lbFByb3BzPiA9ICh7XG4gIHRoZW1lOiB0aGVtZVByb3AsXG4gIG9uVGhlbWVDaGFuZ2UsXG4gIGNoYXRTZXR0aW5nczogY2hhdFNldHRpbmdzUHJvcCxcbiAgb25DaGF0U2V0dGluZ3NDaGFuZ2UsXG4gIG1ldGFkYXRhOiBtZXRhZGF0YVByb3AsXG4gIG9uTWV0YWRhdGFDaGFuZ2UsXG4gIGFnZW50Q2hhdElucHV0TWV0YWRhdGEsXG4gIGZlYXR1cmVGbGFnczogZmVhdHVyZUZsYWdzUHJvcCxcbiAgb25GZWF0dXJlRmxhZ3NDaGFuZ2UsXG4gIGRlZmF1bHRPcGVuLFxuICBvblNhdmUsXG4gIG9uQ2FuY2VsLFxuICBzdHlsZSxcbn0pID0+IHtcbiAgLy8gTWVyZ2Ugd29ya2Zsb3cgY2hhdCBpbnB1dCBtZXRhZGF0YSB3aXRoIHVzZXIgbWV0YWRhdGFcbiAgY29uc3QgbWVyZ2VkTWV0YWRhdGEgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7IC4uLihhZ2VudENoYXRJbnB1dE1ldGFkYXRhIHx8IHt9KSwgLi4uKG1ldGFkYXRhUHJvcCB8fCB7fSkgfSksXG4gICAgW2FnZW50Q2hhdElucHV0TWV0YWRhdGEsIG1ldGFkYXRhUHJvcF1cbiAgKTtcblxuICAvLyBDb250cm9sbGVkIG9yIGludGVybmFsIHN0YXRlIGZhbGxiYWNrc1xuICBjb25zdCBbdGhlbWUsIHNldFRoZW1lXSA9IHVzZVN0YXRlPENoYXRUaGVtZT4odGhlbWVQcm9wIHx8IGRlZmF1bHRUaGVtZSk7XG4gIGNvbnN0IFtjaGF0U2V0dGluZ3MsIHNldENoYXRTZXR0aW5nc10gPSB1c2VTdGF0ZTxDaGF0U2V0dGluZ3NDb25maWc+KGNoYXRTZXR0aW5nc1Byb3AgfHwgZGVmYXVsdFNldHRpbmdzKTtcbiAgY29uc3QgW3BhcmFtcywgc2V0UGFyYW1zXSA9IHVzZVN0YXRlPE1ldGFkYXRhUGFyYW1bXT4oKCkgPT4gb2JqZWN0VG9QYXJhbXMobWVyZ2VkTWV0YWRhdGEpKTtcbiAgY29uc3QgW2ZlYXR1cmVGbGFncywgc2V0RmVhdHVyZUZsYWdzXSA9IHVzZVN0YXRlPEZlYXR1cmVGbGFncz4oZmVhdHVyZUZsYWdzUHJvcCB8fCBkZWZhdWx0RmVhdHVyZUZsYWdzKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGVtZVByb3ApIHNldFRoZW1lKHRoZW1lUHJvcCk7XG4gIH0sIFt0aGVtZVByb3BdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGF0U2V0dGluZ3NQcm9wKSBzZXRDaGF0U2V0dGluZ3MoY2hhdFNldHRpbmdzUHJvcCk7XG4gIH0sIFtjaGF0U2V0dGluZ3NQcm9wXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQYXJhbXMob2JqZWN0VG9QYXJhbXMobWVyZ2VkTWV0YWRhdGEpKTtcbiAgfSwgW2FnZW50Q2hhdElucHV0TWV0YWRhdGEsIG1ldGFkYXRhUHJvcF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZlYXR1cmVGbGFnc1Byb3ApIHNldEZlYXR1cmVGbGFncyhmZWF0dXJlRmxhZ3NQcm9wKTtcbiAgfSwgW2ZlYXR1cmVGbGFnc1Byb3BdKTtcblxuICBjb25zdCBbc2hvd0FwcGVhcmFuY2UsIHNldFNob3dBcHBlYXJhbmNlXSA9IHVzZVN0YXRlKFxuICAgIHR5cGVvZiBkZWZhdWx0T3Blbj8uYXBwZWFyYW5jZSA9PT0gJ2Jvb2xlYW4nID8gISFkZWZhdWx0T3Blbj8uYXBwZWFyYW5jZSA6IHRydWVcbiAgKTtcbiAgY29uc3QgW3Nob3dTZXR0aW5ncywgc2V0U2hvd1NldHRpbmdzXSA9IHVzZVN0YXRlKFxuICAgIHR5cGVvZiBkZWZhdWx0T3Blbj8uc2V0dGluZ3MgPT09ICdib29sZWFuJyA/ICEhZGVmYXVsdE9wZW4/LnNldHRpbmdzIDogZmFsc2VcbiAgKTtcbiAgY29uc3QgW3Nob3dNZXRhZGF0YSwgc2V0U2hvd01ldGFkYXRhXSA9IHVzZVN0YXRlKFxuICAgIHR5cGVvZiBkZWZhdWx0T3Blbj8ubWV0YWRhdGEgPT09ICdib29sZWFuJyA/ICEhZGVmYXVsdE9wZW4/Lm1ldGFkYXRhIDogZmFsc2VcbiAgKTtcblxuICAvLyBBdXRvLWV4cGFuZCBNZXRhZGF0YSBzZWN0aW9uXG4gIGNvbnN0IHByZXZNZXRhS2V5Q291bnRSZWYgPSBSZWFjdC51c2VSZWY8bnVtYmVyPigwKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBrZXlDb3VudCA9IGFnZW50Q2hhdElucHV0TWV0YWRhdGEgPyBPYmplY3Qua2V5cyhhZ2VudENoYXRJbnB1dE1ldGFkYXRhKS5sZW5ndGggOiAwO1xuICAgIGlmIChrZXlDb3VudCA+IDAgJiYgcHJldk1ldGFLZXlDb3VudFJlZi5jdXJyZW50ID09PSAwKSB7XG4gICAgICBzZXRTaG93TWV0YWRhdGEodHJ1ZSk7XG4gICAgfVxuICAgIHByZXZNZXRhS2V5Q291bnRSZWYuY3VycmVudCA9IGtleUNvdW50O1xuICB9LCBbYWdlbnRDaGF0SW5wdXRNZXRhZGF0YV0pO1xuXG4gIGNvbnN0IFtzaG93QWRkUGFyYW0sIHNldFNob3dBZGRQYXJhbV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtkcmFmdFBhcmFtLCBzZXREcmFmdFBhcmFtXSA9IHVzZVN0YXRlPE1ldGFkYXRhUGFyYW0+KHtcbiAgICBuYW1lOiAncGFyYW1fMScsXG4gICAgdHlwZTogJ3N0cmluZycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHZhbHVlOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgW3Nob3dFZGl0UGFyYW0sIHNldFNob3dFZGl0UGFyYW1dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZWRpdEluZGV4LCBzZXRFZGl0SW5kZXhdID0gdXNlU3RhdGU8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtlZGl0RHJhZnQsIHNldEVkaXREcmFmdF0gPSB1c2VTdGF0ZTxNZXRhZGF0YVBhcmFtPih7IG5hbWU6ICcnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IGZhbHNlLCB2YWx1ZTogJycgfSk7XG5cbiAgY29uc3QgbWV0YWRhdGEgPSB1c2VNZW1vKCgpID0+IHBhcmFtc1RvT2JqZWN0KHBhcmFtcyksIFtwYXJhbXNdKTtcblxuICBjb25zdCBoYW5kbGVUaGVtZUNoYW5nZSA9IChrZXk6IGtleW9mIENoYXRUaGVtZSwgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG5leHQgPSB7IC4uLnRoZW1lLCBba2V5XTogdmFsdWUgfSBhcyBDaGF0VGhlbWU7XG4gICAgaWYgKCF0aGVtZVByb3ApIHNldFRoZW1lKG5leHQpO1xuICAgIG9uVGhlbWVDaGFuZ2U/LihuZXh0KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVTZXR0aW5nQ2hhbmdlID0gKGtleToga2V5b2YgQ2hhdFNldHRpbmdzQ29uZmlnLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IHsgLi4uY2hhdFNldHRpbmdzLCBba2V5XTogdmFsdWUgfSBhcyBDaGF0U2V0dGluZ3NDb25maWc7XG4gICAgaWYgKCFjaGF0U2V0dGluZ3NQcm9wKSBzZXRDaGF0U2V0dGluZ3MobmV4dCk7XG4gICAgb25DaGF0U2V0dGluZ3NDaGFuZ2U/LihuZXh0KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGZWF0dXJlRmxhZ0NoYW5nZSA9IChrZXk6IGtleW9mIEZlYXR1cmVGbGFncywgdmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCBuZXh0ID0geyAuLi5mZWF0dXJlRmxhZ3MsIFtrZXldOiB2YWx1ZSB9IGFzIEZlYXR1cmVGbGFncztcbiAgICBpZiAoIWZlYXR1cmVGbGFnc1Byb3ApIHNldEZlYXR1cmVGbGFncyhuZXh0KTtcbiAgICBvbkZlYXR1cmVGbGFnc0NoYW5nZT8uKG5leHQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFkZFBhcmFtID0gKCkgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSBkcmFmdFBhcmFtLm5hbWUudHJpbSgpO1xuICAgIGlmICghbmFtZSkgcmV0dXJuO1xuICAgIGlmIChwYXJhbXMuc29tZSgocCkgPT4gcC5uYW1lID09PSBuYW1lKSkgcmV0dXJuO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQ6IE1ldGFkYXRhUGFyYW0gPSB7XG4gICAgICAuLi5kcmFmdFBhcmFtLFxuICAgICAgbmFtZSxcbiAgICAgIHZhbHVlOlxuICAgICAgICB0eXBlb2YgZHJhZnRQYXJhbS52YWx1ZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICA/IGRyYWZ0UGFyYW0udmFsdWVcbiAgICAgICAgICA6IGRyYWZ0UGFyYW0udHlwZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IGRyYWZ0UGFyYW0udHlwZSA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgIDogJycsXG4gICAgfTtcbiAgICBjb25zdCBuZXh0ID0gWy4uLnBhcmFtcywgbm9ybWFsaXplZF07XG4gICAgc2V0UGFyYW1zKG5leHQpO1xuICAgIG9uTWV0YWRhdGFDaGFuZ2U/LihwYXJhbXNUb09iamVjdChuZXh0KSk7XG4gICAgc2V0RHJhZnRQYXJhbSh7IG5hbWU6ICdwYXJhbV8xJywgdHlwZTogJ3N0cmluZycsIHJlcXVpcmVkOiBmYWxzZSwgdmFsdWU6ICcnIH0pO1xuICAgIHNldFNob3dBZGRQYXJhbShmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgY29lcmNlRm9yVHlwZSA9ICh2YWw6IGFueSwgdHlwZTogUGFyYW1UeXBlKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICBjb25zdCBuID0gTnVtYmVyKHZhbCk7XG4gICAgICByZXR1cm4gaXNOYU4obikgPyAwIDogbjtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdib29sZWFuJykgcmV0dXJuIHZhbDtcbiAgICAgIGNvbnN0IHMgPSBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIHMgPT09ICd0cnVlJyB8fCBzID09PSAnMScgfHwgcyA9PT0gJ3llcyc7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsID8/ICcnKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFZGl0U2F2ZSA9ICgpID0+IHtcbiAgICBpZiAoZWRpdEluZGV4ID09PSBudWxsKSByZXR1cm47XG4gICAgY29uc3QgbmV3TmFtZSA9IGVkaXREcmFmdC5uYW1lLnRyaW0oKTtcbiAgICBpZiAoIW5ld05hbWUpIHJldHVybjtcbiAgICBpZiAocGFyYW1zLnNvbWUoKHAsIGkpID0+IGkgIT09IGVkaXRJbmRleCAmJiBwLm5hbWUgPT09IG5ld05hbWUpKSByZXR1cm47XG4gICAgY29uc3QgbmV4dCA9IFsuLi5wYXJhbXNdO1xuICAgIGNvbnN0IG9sZCA9IG5leHRbZWRpdEluZGV4XTtcbiAgICBjb25zdCB1cGRhdGVkOiBNZXRhZGF0YVBhcmFtID0geyAuLi5vbGQsIC4uLmVkaXREcmFmdCB9O1xuICAgIHVwZGF0ZWQudmFsdWUgPSBjb2VyY2VGb3JUeXBlKG9sZC52YWx1ZSwgZWRpdERyYWZ0LnR5cGUpO1xuICAgIG5leHRbZWRpdEluZGV4XSA9IHVwZGF0ZWQ7XG4gICAgc2V0UGFyYW1zKG5leHQpO1xuICAgIG9uTWV0YWRhdGFDaGFuZ2U/LihwYXJhbXNUb09iamVjdChuZXh0KSk7XG4gICAgc2V0U2hvd0VkaXRQYXJhbShmYWxzZSk7XG4gICAgc2V0RWRpdEluZGV4KG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVJlbW92ZVBhcmFtID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBuZXh0ID0gcGFyYW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgIHNldFBhcmFtcyhuZXh0KTtcbiAgICBvbk1ldGFkYXRhQ2hhbmdlPy4ocGFyYW1zVG9PYmplY3QobmV4dCkpO1xuICB9O1xuXG4gIGNvbnN0IGNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGZsZXg6ICcxJyxcbiAgICBtYXhXaWR0aDogMzAwLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmZmZmYnLFxuICAgIGJvcmRlclJhZGl1czogOCxcbiAgICBib3hTaGFkb3c6ICcwIDJweCAxMHB4IHJnYmEoMCwwLDAsMC4xKScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAuLi5zdHlsZSxcbiAgfTtcblxuICBjb25zdCBzZWN0aW9uSGVhZGVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgcGFkZGluZzogMTYsXG4gICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmOWY5ZjknLFxuICB9O1xuXG4gIGNvbnN0IHNlY3Rpb25UaXRsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIG1hcmdpbjogMCxcbiAgICBmb250U2l6ZTogMTIsXG4gICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgIGNvbG9yOiAnIzY2NicsXG4gICAgbGV0dGVyU3BhY2luZzogMSxcbiAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuXG4gIGNvbnN0IGZvcm1Hcm91cFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBhZGRpbmc6ICcxNnB4IDE2cHggMTJweCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgYm9yZGVyQm90dG9tOiAnbm9uZScsXG4gIH07XG5cbiAgY29uc3QgbGFiZWxTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHsgZm9udFNpemU6IDE0LCBjb2xvcjogJyMzMzMnIH07XG4gIGNvbnN0IGNvbG9yUGlja2VyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgYXBwZWFyYW5jZTogJ25vbmUnLFxuICAgIHdpZHRoOiAxMjAsXG4gICAgaGVpZ2h0OiAzMixcbiAgICBwYWRkaW5nOiAwLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gIH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcztcblxuICBjb25zdCBzZWxlY3RTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogMTQwLFxuICAgIGhlaWdodDogMzIsXG4gICAgcGFkZGluZzogJzAgOHB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgYm9yZGVyUmFkaXVzOiA0LFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICAgIGZvbnRTaXplOiAxNCxcbiAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuXG4gIGNvbnN0IGlucHV0U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6IDMyLFxuICAgIHBhZGRpbmc6ICcwIDhweCcsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMGUwZTAnLFxuICAgIGJvcmRlclJhZGl1czogNCxcbiAgICBmb250U2l6ZTogMTQsXG4gIH07XG5cbiAgY29uc3QgYWN0aW9uQmFyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgcGFkZGluZzogMTIsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnLFxuICAgIGdhcDogOCxcbiAgICBib3JkZXJUb3A6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZhZmFmYScsXG4gIH07XG5cbiAgY29uc3QgY2FuY2VsQnV0dG9uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgcGFkZGluZzogJzhweCAxMnB4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgYm9yZGVyUmFkaXVzOiA2LFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICB9O1xuICBjb25zdCBzYXZlQnV0dG9uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgcGFkZGluZzogJzhweCAxMnB4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMTExODI3JyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjMGIxMjIwJyxcbiAgICBib3JkZXJSYWRpdXM6IDYsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gIH07XG5cbiAgY29uc3QgZnVsbFdpZHRoQWN0aW9uQnV0dG9uOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBnYXA6IDgsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwYWRkaW5nOiAnMTBweCAxMnB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgYm9yZGVyUmFkaXVzOiA4LFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGZvbnRTaXplOiAxNCxcbiAgICBjb2xvcjogJyMxMTEnLFxuICB9O1xuXG4gIGNvbnN0IHNtYWxsSWNvbkJ1dHRvbjogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgYm9yZGVyUmFkaXVzOiA4LFxuICAgIHdpZHRoOiAyOCxcbiAgICBoZWlnaHQ6IDI4LFxuICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICB9O1xuXG4gIGNvbnN0IG1ldGFSb3dTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJzFmciBtaW5tYXgoOTBweCwgMTUwcHgpIDI4cHggMjhweCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgZ2FwOiA4LFxuICAgIHBhZGRpbmc6ICc2cHggMCcsXG4gIH07XG4gIGNvbnN0IG1ldGFOYW1lU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFNpemU6IDEzLFxuICAgIGNvbG9yOiAnIzIyMicsXG4gICAgZm9udFdlaWdodDogNTAwLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIH07XG4gIGNvbnN0IG1ldGFWYWx1ZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIG1heFdpZHRoOiAxNTAsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICBmb250U2l6ZTogMTMsXG4gICAgY29sb3I6ICcjMTExJyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2U2ZTZlNicsXG4gICAgYm9yZGVyUmFkaXVzOiAxMixcbiAgICBwYWRkaW5nOiAnNnB4IDEwcHgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNmYWZhZmEnLFxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSAoKSA9PiB7XG4gICAgb25TYXZlPy4oeyB0aGVtZSwgY2hhdFNldHRpbmdzLCBtZXRhZGF0YSwgZmVhdHVyZUZsYWdzIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBzdHlsZT17Y29udGFpbmVyU3R5bGV9PlxuICAgICAgey8qIEFwcGVhcmFuY2UgU2VjdGlvbiAqL31cbiAgICAgIDxkaXYgc3R5bGU9e3sgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlMGUwZTAnIH19PlxuICAgICAgICA8ZGl2IHN0eWxlPXtzZWN0aW9uSGVhZGVyU3R5bGV9IG9uQ2xpY2s9eygpID0+IHNldFNob3dBcHBlYXJhbmNlKCFzaG93QXBwZWFyYW5jZSl9PlxuICAgICAgICAgIDxoMyBzdHlsZT17c2VjdGlvblRpdGxlU3R5bGV9PkFQUEVBUkFOQ0U8L2gzPlxuICAgICAgICAgIHtzaG93QXBwZWFyYW5jZSA/IDxDaGV2cm9uVXAgc2l6ZT17MTZ9IC8+IDogPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtzaG93QXBwZWFyYW5jZSAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5QcmltYXJ5IENvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhlbWUucHJpbWFyeUNvbG9yfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVGhlbWVDaGFuZ2UoJ3ByaW1hcnlDb2xvcicsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBzdHlsZT17Y29sb3JQaWNrZXJTdHlsZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PlNlY29uZGFyeSBDb2xvcjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RoZW1lLnNlY29uZGFyeUNvbG9yfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVGhlbWVDaGFuZ2UoJ3NlY29uZGFyeUNvbG9yJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXtjb2xvclBpY2tlclN0eWxlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+QmFja2dyb3VuZCBDb2xvcjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RoZW1lLmJhY2tncm91bmRDb2xvcn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVRoZW1lQ2hhbmdlKCdiYWNrZ3JvdW5kQ29sb3InLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgc3R5bGU9e2NvbG9yUGlja2VyU3R5bGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5UZXh0IENvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhlbWUudGV4dENvbG9yfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVGhlbWVDaGFuZ2UoJ3RleHRDb2xvcicsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBzdHlsZT17Y29sb3JQaWNrZXJTdHlsZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PkZvbnQgU2l6ZTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgdmFsdWU9e3RoZW1lLmZvbnRTaXplfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlVGhlbWVDaGFuZ2UoJ2ZvbnRTaXplJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjEycHhcIj5TbWFsbCAoMTJweCk8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMTVweFwiPk1lZGl1bSAoMTVweCk8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMThweFwiPkxhcmdlICgxOHB4KTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PkZvbnQgRmFtaWx5PC9sYWJlbD5cbiAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgIHN0eWxlPXtzZWxlY3RTdHlsZX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhlbWUuZm9udEZhbWlseS5zcGxpdCgnLCcpWzBdLnRyaW0oKX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZmID1cbiAgICAgICAgICAgICAgICAgICAgdiA9PT0gJ0ludGVyJ1xuICAgICAgICAgICAgICAgICAgICAgID8gJ0ludGVyLCBzYW5zLXNlcmlmJ1xuICAgICAgICAgICAgICAgICAgICAgIDogdiA9PT0gJ0FyaWFsJ1xuICAgICAgICAgICAgICAgICAgICAgID8gJ0FyaWFsLCBzYW5zLXNlcmlmJ1xuICAgICAgICAgICAgICAgICAgICAgIDogdiA9PT0gJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAgICAgICAgICAgICAgICA/IFwiJ1RpbWVzIE5ldyBSb21hbicsIHNlcmlmXCJcbiAgICAgICAgICAgICAgICAgICAgICA6ICdtb25vc3BhY2UnO1xuICAgICAgICAgICAgICAgICAgaGFuZGxlVGhlbWVDaGFuZ2UoJ2ZvbnRGYW1pbHknLCBmZik7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJJbnRlclwiPkludGVyPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFyaWFsXCI+QXJpYWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiVGltZXMgTmV3IFJvbWFuXCI+VGltZXMgTmV3IFJvbWFuPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vbm9zcGFjZVwiPk1vbm9zcGFjZTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBTZXR0aW5ncyBTZWN0aW9uICovfVxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBzdHlsZT17c2VjdGlvbkhlYWRlclN0eWxlfSBvbkNsaWNrPXsoKSA9PiBzZXRTaG93U2V0dGluZ3MoIXNob3dTZXR0aW5ncyl9PlxuICAgICAgICAgIDxoMyBzdHlsZT17c2VjdGlvblRpdGxlU3R5bGV9PlNFVFRJTkdTPC9oMz5cbiAgICAgICAgICB7c2hvd1NldHRpbmdzID8gPENoZXZyb25VcCBzaXplPXsxNn0gLz4gOiA8Q2hldnJvbkRvd24gc2l6ZT17MTZ9IC8+fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3Nob3dTZXR0aW5ncyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgcGFkZGluZzogJzE2cHggMTZweCAxMnB4JyB9fT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IC4uLmxhYmVsU3R5bGUsIGRpc3BsYXk6ICdibG9jaycsIG1hcmdpbkJvdHRvbTogOCB9fT5OYW1lPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IC4uLmlucHV0U3R5bGUsIGhlaWdodDogNDAsIHBhZGRpbmc6ICcwIDEycHgnLCBib3hTaXppbmc6ICdib3JkZXItYm94JyB9fVxuICAgICAgICAgICAgICAgIHZhbHVlPXtjaGF0U2V0dGluZ3MubmFtZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZVNldHRpbmdDaGFuZ2UoJ25hbWUnLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgcGFkZGluZzogJzAgMTZweCAxMnB4JyB9fT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IC4uLmxhYmVsU3R5bGUsIGRpc3BsYXk6ICdibG9jaycsIG1hcmdpbkJvdHRvbTogOCB9fT5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyAuLi5pbnB1dFN0eWxlLCBoZWlnaHQ6IDQwLCBwYWRkaW5nOiAnMCAxMnB4JywgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcgfX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17Y2hhdFNldHRpbmdzLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlU2V0dGluZ0NoYW5nZSgnZGVzY3JpcHRpb24nLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgcGFkZGluZzogJzAgMTZweCAxMnB4JyB9fT5cbiAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IC4uLmxhYmVsU3R5bGUsIGRpc3BsYXk6ICdibG9jaycsIG1hcmdpbkJvdHRvbTogOCB9fT5BZ2VudCBOYW1lPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IC4uLmlucHV0U3R5bGUsIGhlaWdodDogNDAsIHBhZGRpbmc6ICcwIDEycHgnLCBib3hTaXppbmc6ICdib3JkZXItYm94JyB9fVxuICAgICAgICAgICAgICAgIHZhbHVlPXtjaGF0U2V0dGluZ3MuYWdlbnROYW1lfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlU2V0dGluZ0NoYW5nZSgnYWdlbnROYW1lJywgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmc6ICcwIDE2cHggMTZweCcgfX0+XG4gICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyAuLi5sYWJlbFN0eWxlLCBkaXNwbGF5OiAnYmxvY2snLCBtYXJnaW5Cb3R0b206IDggfX0+TG9nbyBVUkw8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgLi4uaW5wdXRTdHlsZSwgaGVpZ2h0OiA0MCwgcGFkZGluZzogJzAgMTJweCcsIGJveFNpemluZzogJ2JvcmRlci1ib3gnIH19XG4gICAgICAgICAgICAgICAgdmFsdWU9e2NoYXRTZXR0aW5ncy5sb2dvVXJsIHx8ICcnfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlU2V0dGluZ0NoYW5nZSgnbG9nb1VybCcsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImh0dHBzOi8vZXhhbXBsZS5jb20vbG9nby5wbmdcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHBhZGRpbmc6ICcxNnB4JywgYm9yZGVyVG9wOiAnMXB4IHNvbGlkICNlMGUwZTAnLCBtYXJnaW5Ub3A6IDggfX0+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDEzLCBjb2xvcjogJyM1NTUnLCBtYXJnaW5Cb3R0b206IDEyLCBmb250V2VpZ2h0OiA1MDAgfX0+XG4gICAgICAgICAgICAgICAgRmVhdHVyZXNcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e2Zvcm1Hcm91cFN0eWxlfT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e2xhYmVsU3R5bGV9PlVzZSBBdWRpbzwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ISFmZWF0dXJlRmxhZ3MudXNlQXVkaW99XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUZlYXR1cmVGbGFnQ2hhbmdlKCd1c2VBdWRpbycsIGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwLCBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtmb3JtR3JvdXBTdHlsZX0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5Vc2UgRmlsZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ISFmZWF0dXJlRmxhZ3MudXNlRmlsZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlRmVhdHVyZUZsYWdDaGFuZ2UoJ3VzZUZpbGUnLCBlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCwgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17Zm9ybUdyb3VwU3R5bGV9PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+VXNlIFdlYlNvY2tldDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ISFmZWF0dXJlRmxhZ3MudXNlV3N9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUZlYXR1cmVGbGFnQ2hhbmdlKCd1c2VXcycsIGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwLCBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIE1ldGFkYXRhIFNlY3Rpb24gKi99XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXtzZWN0aW9uSGVhZGVyU3R5bGV9IG9uQ2xpY2s9eygpID0+IHNldFNob3dNZXRhZGF0YSghc2hvd01ldGFkYXRhKX0+XG4gICAgICAgICAgPGgzIHN0eWxlPXtzZWN0aW9uVGl0bGVTdHlsZX0+TUVUQURBVEE8L2gzPlxuICAgICAgICAgIHtzaG93TWV0YWRhdGEgPyA8Q2hldnJvblVwIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uRG93biBzaXplPXsxNn0gLz59XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7c2hvd01ldGFkYXRhICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMTJweCAxNnB4JyB9fT5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTMsIGNvbG9yOiAnIzU1NScsIG1hcmdpbkJvdHRvbTogMTAgfX0+XG4gICAgICAgICAgICAgICAgRGVmaW5lIGtleS92YWx1ZSBwYXJhbWV0ZXJzIHNlbnQgYXMgY2hhdCBtZXRhZGF0YS5cbiAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMoYWdlbnRDaGF0SW5wdXRNZXRhZGF0YSB8fCB7fSkubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnYmxvY2snLCBtYXJnaW5Ub3A6IDQsIGNvbG9yOiAnIzY2NicgfX0+XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnMgZnJvbSB0aGUgd29ya2Zsb3cmYXBvcztzIENoYXQgSW5wdXQgbm9kZSBhcmUgc2hvd24gYmVsb3cuXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9e2Z1bGxXaWR0aEFjdGlvbkJ1dHRvbn0gb25DbGljaz17KCkgPT4gc2V0U2hvd0FkZFBhcmFtKHRydWUpfT5cbiAgICAgICAgICAgICAgICA8UGx1cyBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5BZGQgUGFyYW1ldGVyPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge3BhcmFtcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiAnMnB4IDE2cHggMTJweCcsIGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogNiB9fT5cbiAgICAgICAgICAgICAgICB7cGFyYW1zLm1hcCgocCwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsID0gcC50eXBlID09PSAnYm9vbGVhbicgPyAocC52YWx1ZSA/ICdUcnVlJyA6ICdGYWxzZScpIDogU3RyaW5nKHAudmFsdWUgPz8gJycpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e3AubmFtZX0gc3R5bGU9e21ldGFSb3dTdHlsZX0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17bWV0YU5hbWVTdHlsZX0+e3AubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXttZXRhVmFsdWVTdHlsZX0gdGl0bGU9e2Rpc3BsYXlWYWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlWYWx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJFZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzbWFsbEljb25CdXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVkaXRJbmRleChpZHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFZGl0RHJhZnQoeyAuLi5wIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93RWRpdFBhcmFtKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2BFZGl0ICR7cC5uYW1lfWB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBlbmNpbCBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIlJlbW92ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c21hbGxJY29uQnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUmVtb3ZlUGFyYW0oaWR4KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2BSZW1vdmUgJHtwLm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VHJhc2gyIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQWN0aW9uIEJ1dHRvbnMgKi99XG4gICAgICA8ZGl2IHN0eWxlPXthY3Rpb25CYXJTdHlsZX0+XG4gICAgICAgIDxidXR0b24gc3R5bGU9e2NhbmNlbEJ1dHRvblN0eWxlfSBvbkNsaWNrPXsoKSA9PiBvbkNhbmNlbD8uKCl9PkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHN0eWxlPXtzYXZlQnV0dG9uU3R5bGV9IG9uQ2xpY2s9e2hhbmRsZVNhdmV9PlNhdmUgQ2hhbmdlczwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBTaW1wbGUgUGFyYW1ldGVyIE1vZGFscyAqL31cbiAgICAgIHtzaG93QWRkUGFyYW0gJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbE92ZXJsYXlTdHlsZX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17bW9kYWxTdHlsZX0+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbEhlYWRlclN0eWxlfT5BZGQgUGFyYW1ldGVyPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbEJvZHlTdHlsZX0+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2IH19PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+UGFyYW1ldGVyIE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e2lucHV0U3R5bGV9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZHJhZnRQYXJhbS5uYW1lfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXREcmFmdFBhcmFtKChkKSA9PiAoeyAuLi5kLCBuYW1lOiBlLnRhcmdldC52YWx1ZSB9KSl9XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInBhcmFtXzFcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6IDEyIH19PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2LCBmbGV4OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5UeXBlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZHJhZnRQYXJhbS50eXBlfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RHJhZnRQYXJhbSgoZCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBlLnRhcmdldC52YWx1ZSBhcyBQYXJhbVR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZS50YXJnZXQudmFsdWUgPT09ICdib29sZWFuJyA/IGZhbHNlIDogZS50YXJnZXQudmFsdWUgPT09ICdudW1iZXInID8gMCA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJzdHJpbmdcIj5TdHJpbmc8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm51bWJlclwiPk51bWJlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYm9vbGVhblwiPkJvb2xlYW48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDYsIGZsZXg6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9e3sgZm9udFNpemU6IDEyLCBjb2xvcjogJyM3NzcnIH19PlJlcXVpcmVkPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZHJhZnRQYXJhbS5yZXF1aXJlZCA/ICd5ZXMnIDogJ25vJ31cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXREcmFmdFBhcmFtKChkKSA9PiAoeyAuLi5kLCByZXF1aXJlZDogZS50YXJnZXQudmFsdWUgPT09ICd5ZXMnIH0pKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vXCI+Tm88L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInllc1wiPlllczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2IH19PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+RGVmYXVsdCAvIFZhbHVlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICB7ZHJhZnRQYXJhbS50eXBlID09PSAnYm9vbGVhbicgPyAoXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtzZWxlY3RTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2RyYWZ0UGFyYW0udmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldERyYWZ0UGFyYW0oKGQpID0+ICh7IC4uLmQsIHZhbHVlOiBlLnRhcmdldC52YWx1ZSA9PT0gJ3RydWUnIH0pKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImZhbHNlXCI+RmFsc2U8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInRydWVcIj5UcnVlPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e2RyYWZ0UGFyYW0udHlwZSA9PT0gJ251bWJlcicgPyAnbnVtYmVyJyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2lucHV0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtTdHJpbmcoZHJhZnRQYXJhbS52YWx1ZSA/PyAnJyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzZXREcmFmdFBhcmFtKChkKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkcmFmdFBhcmFtLnR5cGUgPT09ICdudW1iZXInID8gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSA6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsRm9vdGVyU3R5bGV9PlxuICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPXtjYW5jZWxCdXR0b25TdHlsZX0gb25DbGljaz17KCkgPT4gc2V0U2hvd0FkZFBhcmFtKGZhbHNlKX0+XG4gICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPXtzYXZlQnV0dG9uU3R5bGV9IG9uQ2xpY2s9e2hhbmRsZUFkZFBhcmFtfT5cbiAgICAgICAgICAgICAgICBBZGRcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0VkaXRQYXJhbSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e21vZGFsT3ZlcmxheVN0eWxlfT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbFN0eWxlfT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21vZGFsSGVhZGVyU3R5bGV9PkVkaXQgUGFyYW1ldGVyPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbEJvZHlTdHlsZX0+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2IH19PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+UGFyYW1ldGVyIE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgc3R5bGU9e2lucHV0U3R5bGV9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZWRpdERyYWZ0Lm5hbWV9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldEVkaXREcmFmdCgoZCkgPT4gKHsgLi4uZCwgbmFtZTogZS50YXJnZXQudmFsdWUgfSkpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6IDEyIH19PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2LCBmbGV4OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZvbnRTaXplOiAxMiwgY29sb3I6ICcjNzc3JyB9fT5UeXBlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZWRpdERyYWZ0LnR5cGV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzZXRFZGl0RHJhZnQoKGQpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZS50YXJnZXQudmFsdWUgYXMgUGFyYW1UeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID09PSAnYm9vbGVhbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlLnRhcmdldC52YWx1ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHR5cGVvZiBkLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInN0cmluZ1wiPlN0cmluZzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibnVtYmVyXCI+TnVtYmVyPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJib29sZWFuXCI+Qm9vbGVhbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogNiwgZmxleDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+UmVxdWlyZWQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0RHJhZnQucmVxdWlyZWQgPyAneWVzJyA6ICdubyd9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RWRpdERyYWZ0KChkKSA9PiAoeyAuLi5kLCByZXF1aXJlZDogZS50YXJnZXQudmFsdWUgPT09ICd5ZXMnIH0pKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vXCI+Tm88L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInllc1wiPlllczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiA2IH19PlxuICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT17eyBmb250U2l6ZTogMTIsIGNvbG9yOiAnIzc3NycgfX0+VmFsdWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgIHtlZGl0RHJhZnQudHlwZSA9PT0gJ2Jvb2xlYW4nID8gKFxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtlZGl0RHJhZnQudmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldEVkaXREcmFmdCgoZCkgPT4gKHsgLi4uZCwgdmFsdWU6IGUudGFyZ2V0LnZhbHVlID09PSAndHJ1ZScgfSkpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZmFsc2VcIj5GYWxzZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidHJ1ZVwiPlRydWU8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT17ZWRpdERyYWZ0LnR5cGUgPT09ICdudW1iZXInID8gJ251bWJlcicgOiAndGV4dCd9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtpbnB1dFN0eWxlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17U3RyaW5nKGVkaXREcmFmdC52YWx1ZSA/PyAnJyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzZXRFZGl0RHJhZnQoKGQpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVkaXREcmFmdC50eXBlID09PSAnbnVtYmVyJyA/IE51bWJlcihlLnRhcmdldC52YWx1ZSkgOiBlLnRhcmdldC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttb2RhbEZvb3RlclN0eWxlfT5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBzdHlsZT17Y2FuY2VsQnV0dG9uU3R5bGV9IG9uQ2xpY2s9eygpID0+IHNldFNob3dFZGl0UGFyYW0oZmFsc2UpfT5cbiAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9e3NhdmVCdXR0b25TdHlsZX0gb25DbGljaz17aGFuZGxlRWRpdFNhdmV9PlxuICAgICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gTW9kYWwgc3R5bGVzIChzaGFyZWQpXG5jb25zdCBtb2RhbE92ZXJsYXlTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgcG9zaXRpb246ICdmaXhlZCcsXG4gIGluc2V0OiAwLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsMCwwLDAuMjUpJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICB6SW5kZXg6IDEwMDUsXG59O1xuXG5jb25zdCBtb2RhbFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICB3aWR0aDogNDIwLFxuICBtYXhXaWR0aDogJzkydncnLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgYm9yZGVyUmFkaXVzOiAxMixcbiAgYm94U2hhZG93OiAnMCA4cHggMjRweCByZ2JhKDAsMCwwLDAuMTgpJyxcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxufTtcblxuY29uc3QgbW9kYWxIZWFkZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgcGFkZGluZzogJzEycHggMTZweCcsXG4gIGZvbnRXZWlnaHQ6IDYwMCxcbiAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlZWUnLFxufTtcblxuY29uc3QgbW9kYWxCb2R5U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIHBhZGRpbmc6IDE2LFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICBnYXA6IDEyLFxufTtcblxuY29uc3QgbW9kYWxGb290ZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgcGFkZGluZzogMTIsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAganVzdGlmeUNvbnRlbnQ6ICdmbGV4LWVuZCcsXG4gIGdhcDogOCxcbiAgYm9yZGVyVG9wOiAnMXB4IHNvbGlkICNlZWUnLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmFmYWZhJyxcbn07Il19
|