@projectcor/maia-components 2.11.41-6 → 2.11.41-7
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.
|
@@ -25,7 +25,7 @@ import { openTaskInCorPanel } from './openTaskInCorPanel';
|
|
|
25
25
|
* Label puede contener `]` (ej: "[Educate]Blog Post ..."), por eso
|
|
26
26
|
* se captura de forma lazy hasta el cierre real `]]`.
|
|
27
27
|
*/
|
|
28
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
28
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
29
29
|
export var MENTION_MARKER_REGEX = /\[\[mention:(client|project|task|user|mcp):([^|\]]+)\|([\s\S]*?)\]\]/g;
|
|
30
30
|
export var MAIA_MENTION_PROTOCOL = 'maia-mention://';
|
|
31
31
|
var INCOMPLETE_MENTION_MARKER_REGEX = /\[\[mention:[\s\S]*$/;
|
|
@@ -74,6 +74,22 @@ var mentionChildrenToLabel = function mentionChildrenToLabel(children) {
|
|
|
74
74
|
}
|
|
75
75
|
return normalizeContextMentionLabel(String(children));
|
|
76
76
|
};
|
|
77
|
+
var splitLabelFirstWord = function splitLabelFirstWord(label) {
|
|
78
|
+
var normalized = normalizeContextMentionLabel(label).trim();
|
|
79
|
+
if (!normalized) return {
|
|
80
|
+
firstWord: '',
|
|
81
|
+
rest: ''
|
|
82
|
+
};
|
|
83
|
+
var firstWhitespaceIdx = normalized.search(/\s/);
|
|
84
|
+
if (firstWhitespaceIdx < 0) return {
|
|
85
|
+
firstWord: normalized,
|
|
86
|
+
rest: ''
|
|
87
|
+
};
|
|
88
|
+
return {
|
|
89
|
+
firstWord: normalized.slice(0, firstWhitespaceIdx),
|
|
90
|
+
rest: normalized.slice(firstWhitespaceIdx)
|
|
91
|
+
};
|
|
92
|
+
};
|
|
77
93
|
var inlineMentionHoverCss = function inlineMentionHoverCss(type, isClickable) {
|
|
78
94
|
var bg = type === 'project' ? VIOLET_IA_COLORS[100] : MENTION_CHIP_NON_TASK_HOVER_BG;
|
|
79
95
|
return css(["background:", ";opacity:", ";"], bg, isClickable ? 0.95 : 1);
|
|
@@ -148,6 +164,9 @@ export var renderMentionLink = function renderMentionLink(href, children) {
|
|
|
148
164
|
var isProject = type === 'project';
|
|
149
165
|
var projectUrl = isProject ? "/project/".concat(id, "/dashboard") : null;
|
|
150
166
|
var showIcon = !isProject;
|
|
167
|
+
var _splitLabelFirstWord = splitLabelFirstWord(label),
|
|
168
|
+
firstWord = _splitLabelFirstWord.firstWord,
|
|
169
|
+
rest = _splitLabelFirstWord.rest;
|
|
151
170
|
var handleProjectClick = function handleProjectClick(e) {
|
|
152
171
|
if (!projectUrl) return;
|
|
153
172
|
e.preventDefault();
|
|
@@ -163,10 +182,27 @@ export var renderMentionLink = function renderMentionLink(href, children) {
|
|
|
163
182
|
onClick: isProject ? handleProjectClick : undefined,
|
|
164
183
|
role: isProject ? 'button' : undefined,
|
|
165
184
|
tabIndex: isProject ? 0 : undefined,
|
|
166
|
-
children: [showIcon ? /*#__PURE__*/
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
185
|
+
children: [showIcon ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
186
|
+
children: [/*#__PURE__*/_jsxs("span", {
|
|
187
|
+
style: {
|
|
188
|
+
display: 'inline-flex',
|
|
189
|
+
alignItems: 'center',
|
|
190
|
+
whiteSpace: 'nowrap',
|
|
191
|
+
maxWidth: '100%'
|
|
192
|
+
},
|
|
193
|
+
children: [/*#__PURE__*/_jsx(SCInlineMentionIcon, {
|
|
194
|
+
$task: isTask,
|
|
195
|
+
children: getContextMentionIcon(type, MENTION_CHIP_COLORS[type].fg, id, iconSize)
|
|
196
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
197
|
+
style: {
|
|
198
|
+
whiteSpace: 'nowrap'
|
|
199
|
+
},
|
|
200
|
+
children: firstWord
|
|
201
|
+
})]
|
|
202
|
+
}), rest ? /*#__PURE__*/_jsx("span", {
|
|
203
|
+
children: rest
|
|
204
|
+
}) : null]
|
|
205
|
+
}) : null, !showIcon ? label : null]
|
|
170
206
|
});
|
|
171
207
|
};
|
|
172
208
|
|
|
@@ -219,6 +255,9 @@ var MentionChip = function MentionChip(_ref7) {
|
|
|
219
255
|
var isProject = type === 'project';
|
|
220
256
|
var showIcon = !isProject;
|
|
221
257
|
var iconSize = isTask ? 16 : 14;
|
|
258
|
+
var _splitLabelFirstWord2 = splitLabelFirstWord(normalizedLabel),
|
|
259
|
+
firstWord = _splitLabelFirstWord2.firstWord,
|
|
260
|
+
rest = _splitLabelFirstWord2.rest;
|
|
222
261
|
var handleClick = function handleClick(e) {
|
|
223
262
|
if (!isClickable || !url) return;
|
|
224
263
|
if (type === 'task') {
|
|
@@ -257,10 +296,27 @@ var MentionChip = function MentionChip(_ref7) {
|
|
|
257
296
|
onClick: isClickable ? handleClick : undefined,
|
|
258
297
|
role: isClickable ? 'button' : undefined,
|
|
259
298
|
tabIndex: isClickable ? 0 : undefined,
|
|
260
|
-
children: [showIcon ? /*#__PURE__*/
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
299
|
+
children: [showIcon ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
300
|
+
children: [/*#__PURE__*/_jsxs("span", {
|
|
301
|
+
style: {
|
|
302
|
+
display: 'inline-flex',
|
|
303
|
+
alignItems: 'center',
|
|
304
|
+
whiteSpace: 'nowrap',
|
|
305
|
+
maxWidth: '100%'
|
|
306
|
+
},
|
|
307
|
+
children: [/*#__PURE__*/_jsx(SCInlineMentionIcon, {
|
|
308
|
+
$task: isTask,
|
|
309
|
+
children: getContextMentionIcon(type, MENTION_CHIP_COLORS[type].fg, id, iconSize)
|
|
310
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
311
|
+
style: {
|
|
312
|
+
whiteSpace: 'nowrap'
|
|
313
|
+
},
|
|
314
|
+
children: firstWord
|
|
315
|
+
})]
|
|
316
|
+
}), rest ? /*#__PURE__*/_jsx("span", {
|
|
317
|
+
children: rest
|
|
318
|
+
}) : null]
|
|
319
|
+
}) : null, !showIcon ? normalizedLabel : null]
|
|
264
320
|
});
|
|
265
321
|
};
|
|
266
322
|
|
|
@@ -296,4 +352,4 @@ export var renderTextWithMentions = function renderTextWithMentions(text) {
|
|
|
296
352
|
if (lastIdx < text.length) out.push(text.slice(lastIdx));
|
|
297
353
|
return out;
|
|
298
354
|
};
|
|
299
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsIk1FTlRJT05fQ0hJUF9DT0xPUlMiLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJWSU9MRVRfSUFfQ09MT1JTIiwiU0NUYXNrTGluayIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiTUVOVElPTl9NQVJLRVJfUkVHRVgiLCJNQUlBX01FTlRJT05fUFJPVE9DT0wiLCJJTkNPTVBMRVRFX01FTlRJT05fTUFSS0VSX1JFR0VYIiwiQUxMT1dFRF9UWVBFUyIsInBhcnNlTWVudGlvblByb3RvY29sSHJlZiIsImhyZWYiLCJyZXN0Iiwic2xpY2UiLCJsZW5ndGgiLCJzbGFzaElkeCIsImluZGV4T2YiLCJyYXdUeXBlIiwicmF3SWQiLCJpZCIsImRlY29kZVVSSUNvbXBvbmVudCIsIl91bnVzZWQiLCJ0eXBlIiwiaW5jbHVkZXMiLCJzZXJpYWxpemVNZW50aW9uIiwibWVudGlvbiIsImNvbmNhdCIsImxhYmVsIiwidHJhbnNmb3JtTWVudGlvbk1hcmtlcnMiLCJ0ZXh0IiwicmVwbGFjZSIsIl9tIiwic2FmZUxhYmVsIiwiU3RyaW5nIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwibWVudGlvbkNoaWxkcmVuVG9MYWJlbCIsImNoaWxkcmVuIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiYyIsImpvaW4iLCJpbmxpbmVNZW50aW9uSG92ZXJDc3MiLCJpc0NsaWNrYWJsZSIsImJnIiwiU0NJbmxpbmVNZW50aW9uIiwic3BhbiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiX3JlZiIsIl9NRU5USU9OX0NISVBfQ09MT1JTJCIsIiR0eXBlIiwidXNlciIsIl9yZWYyIiwiX01FTlRJT05fQ0hJUF9DT0xPUlMkMiIsImZnIiwiX3JlZjMiLCIkaXNDbGlja2FibGUiLCJfcmVmNCIsIlNDSW5saW5lTWVudGlvbkljb24iLCJfcmVmNSIsIiR0YXNrIiwiX3JlZjYiLCJyZW5kZXJNZW50aW9uTGluayIsInN0YXJ0c1dpdGgiLCJfcGFyc2VNZW50aW9uUHJvdG9jb2wiLCJpc1Rhc2siLCJpY29uU2l6ZSIsInRhc2tVcmwiLCJoYW5kbGVUYXNrQ2xpY2siLCJlIiwibWV0YUtleSIsImN0cmxLZXkiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZVRhc2tLZXlEb3duIiwia2V5IiwiY2xhc3NOYW1lIiwib25DbGljayIsIm9uS2V5RG93biIsImlzUHJvamVjdCIsInByb2plY3RVcmwiLCJzaG93SWNvbiIsImhhbmRsZVByb2plY3RDbGljayIsIndpbmRvdyIsIm9wZW4iLCJ1bmRlZmluZWQiLCJyb2xlIiwidGFiSW5kZXgiLCJzdHJpcE1lbnRpb25NYXJrZXJzIiwiX3R5cGUiLCJfaWQiLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJ3aXRob3V0Q29tcGxldGVNYXJrZXJzIiwidHJpbSIsImdldE1lbnRpb25VcmwiLCJNZW50aW9uQ2hpcCIsIl9yZWY3Iiwibm9ybWFsaXplZExhYmVsIiwidXJsIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVLZXlEb3duIiwicmVuZGVyVGV4dFdpdGhNZW50aW9ucyIsIm91dCIsImxhc3RJZHgiLCJsYXN0SW5kZXgiLCJtYXRjaCIsImV4ZWMiLCJrZXlJZHgiLCJpbmRleCIsInB1c2giLCJfbWF0Y2giLCJfbWF0Y2gyIiwiX3NsaWNlZFRvQXJyYXkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmVuZGVyQ29udGV4dE1lbnRpb25zLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWFjdE5vZGUsIFJlYWN0RWxlbWVudCwgTW91c2VFdmVudCwgS2V5Ym9hcmRFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHN0eWxlZCwgeyBjc3MgfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbiwgQ09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1MgfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7XG4gIE1FTlRJT05fQ0hJUF9DT0xPUlMsXG4gIE1FTlRJT05fQ0hJUF9OT05fVEFTS19IT1ZFUl9CRyxcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkNoaXAvQ29udGV4dE1lbnRpb25DaGlwLnN0eWxlcydcbmltcG9ydCB7IFZJT0xFVF9JQV9DT0xPUlMgfSBmcm9tICcuLi9zdHlsZXMvY29uZmlnJ1xuaW1wb3J0IHsgU0NUYXNrTGluayB9IGZyb20gJy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1lc3NhZ2VzL25ld1N0eWxlcydcbmltcG9ydCB7IGdldENvbnRleHRNZW50aW9uSWNvbiB9IGZyb20gJy4vY29udGV4dE1lbnRpb25JY29ucydcbmltcG9ydCB7IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwgfSBmcm9tICcuL2NvbnRleHRNZW50aW9uTGFiZWwnXG5pbXBvcnQgeyBvcGVuVGFza0luQ29yUGFuZWwgfSBmcm9tICcuL29wZW5UYXNrSW5Db3JQYW5lbCdcblxuLyoqXG4gKiBGb3JtYXRvIGRlbCBtYXJjYWRvciBxdWUgdmlhamEgZW4gZWwgdGV4dG8gZGVsIG1lbnNhamU6XG4gKiAgIFtbbWVudGlvbjo8dHlwZT46PGlkPnw8bGFiZWw+XV1cbiAqXG4gKiBFbCBlZGl0b3IgbG8gZW1pdGUgY3VhbmRvIHNlcmlhbGl6YSBlbCBjb250ZW50ZWRpdGFibGUsIGVsIGJhY2tlbmQgbG9cbiAqIHBlcnNpc3RlIHRhbCBjdWFsIHkgYWwgcmVuZGVyaXphciBzZSB0cmFuc2Zvcm1hIGVuIHVuIGxpbmsgbWFya2Rvd24gY29uXG4gKiB1biBwcm90b2NvbG8gcHJvcGlvIHF1ZSBgQ3VzdG9tTGlua2AgaW50ZXJjZXB0YSB5IGRpYnVqYSBjb21vIHNwYW5cbiAqIGVzdGlsYWRvLlxuICpcbiAqIFBvciBzZXBhcmFkbywgbGEgbWV0YWRhdGEgYGNvbnRleHRfbWVzc2FnZWAgbGxldmEgbG9zIHZhbG9yZXMgbGltcGlvc1xuICogKGlkICsgbmFtZSkgcGFyYSBxdWUgZWwgYmFja2VuZCBwdWVkYSBpbnRlcnByZXRhciBsYXMgZW50aWRhZGVzIHNpblxuICogdGVuZXIgcXVlIHBhcnNlYXIgZWwgdGV4dG8uXG4gKi9cbi8qKlxuICogTGFiZWwgcHVlZGUgY29udGVuZXIgYF1gIChlajogXCJbRWR1Y2F0ZV1CbG9nIFBvc3QgLi4uXCIpLCBwb3IgZXNvXG4gKiBzZSBjYXB0dXJhIGRlIGZvcm1hIGxhenkgaGFzdGEgZWwgY2llcnJlIHJlYWwgYF1dYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FTlRJT05fTUFSS0VSX1JFR0VYID0gL1xcW1xcW21lbnRpb246KGNsaWVudHxwcm9qZWN0fHRhc2t8dXNlcnxtY3ApOihbXnxcXF1dKylcXHwoW1xcc1xcU10qPylcXF1cXF0vZ1xuZXhwb3J0IGNvbnN0IE1BSUFfTUVOVElPTl9QUk9UT0NPTCA9ICdtYWlhLW1lbnRpb246Ly8nXG5jb25zdCBJTkNPTVBMRVRFX01FTlRJT05fTUFSS0VSX1JFR0VYID0gL1xcW1xcW21lbnRpb246W1xcc1xcU10qJC9cblxuY29uc3QgQUxMT1dFRF9UWVBFUzogQ29udGV4dEVudGl0eVR5cGVbXSA9IFsnY2xpZW50JywgJ3Byb2plY3QnLCAndGFzaycsICd1c2VyJywgJ21jcCddXG5cbmNvbnN0IHBhcnNlTWVudGlvblByb3RvY29sSHJlZiA9IChocmVmOiBzdHJpbmcpOiB7IHR5cGU6IENvbnRleHRFbnRpdHlUeXBlOyBpZDogc3RyaW5nIH0gPT4ge1xuICBjb25zdCByZXN0ID0gaHJlZi5zbGljZShNQUlBX01FTlRJT05fUFJPVE9DT0wubGVuZ3RoKVxuICBjb25zdCBzbGFzaElkeCA9IHJlc3QuaW5kZXhPZignLycpXG4gIGNvbnN0IHJhd1R5cGUgPSBzbGFzaElkeCA+PSAwID8gcmVzdC5zbGljZSgwLCBzbGFzaElkeCkgOiByZXN0XG4gIGNvbnN0IHJhd0lkID0gc2xhc2hJZHggPj0gMCA/IHJlc3Quc2xpY2Uoc2xhc2hJZHggKyAxKSA6ICcnXG4gIGxldCBpZCA9ICcnXG4gIHRyeSB7XG4gICAgaWQgPSByYXdJZCA/IGRlY29kZVVSSUNvbXBvbmVudChyYXdJZCkgOiAnJ1xuICB9IGNhdGNoIHtcbiAgICBpZCA9IHJhd0lkXG4gIH1cbiAgY29uc3QgdHlwZSA9IEFMTE9XRURfVFlQRVMuaW5jbHVkZXMocmF3VHlwZSBhcyBDb250ZXh0RW50aXR5VHlwZSkgPyAocmF3VHlwZSBhcyBDb250ZXh0RW50aXR5VHlwZSkgOiAndXNlcidcbiAgcmV0dXJuIHsgdHlwZSwgaWQgfVxufVxuXG4vKiogR2VuZXJhIGVsIG1hcmNhZG9yIHBhcmEgdW4gbWVudGlvbiBkYWRvLiBMbyB1c2EgZWwgZWRpdG9yIGFsIHNlcmlhbGl6YXIuICovXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplTWVudGlvbiA9IChtZW50aW9uOiBDb250ZXh0TWVudGlvbik6IHN0cmluZyA9PlxuICBgW1ttZW50aW9uOiR7bWVudGlvbi50eXBlfToke21lbnRpb24uaWR9fCR7bWVudGlvbi5sYWJlbH1dXWBcblxuLyoqXG4gKiBDb252aWVydGUgY2FkYSBgW1ttZW50aW9uOi4uLl1dYCBlbiB1biBsaW5rIG1hcmtkb3duIGNvbiBwcm90b2NvbG8gcHJvcGlvXG4gKiBwYXJhIHF1ZSBTdHJlYW1kb3duIGxvIGVtaXRhIGNvbW8gYDxhPmAgeSBgQ3VzdG9tTGlua2AgbG8gaW50ZXJjZXB0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybU1lbnRpb25NYXJrZXJzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICghdGV4dCkgcmV0dXJuIHRleHRcbiAgcmV0dXJuIHRleHQucmVwbGFjZShNRU5USU9OX01BUktFUl9SRUdFWCwgKF9tLCB0eXBlLCBpZCwgbGFiZWwpID0+IHtcbiAgICBjb25zdCBzYWZlTGFiZWwgPSBTdHJpbmcobGFiZWwpLnJlcGxhY2UoL1tcXFxcXFxdXS9nLCAnXFxcXCQmJylcbiAgICByZXR1cm4gYFske3NhZmVMYWJlbH1dKCR7TUFJQV9NRU5USU9OX1BST1RPQ09MfSR7dHlwZX0vJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGlkKSl9KWBcbiAgfSlcbn1cblxuY29uc3QgbWVudGlvbkNoaWxkcmVuVG9MYWJlbCA9IChjaGlsZHJlbjogUmVhY3ROb2RlKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZycpIHJldHVybiBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGNoaWxkcmVuKVxuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCB8fCBjaGlsZHJlbiA9PT0gZmFsc2UpIHJldHVybiAnJ1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChjaGlsZHJlbi5tYXAoYyA9PiAodHlwZW9mIGMgPT09ICdzdHJpbmcnID8gYyA6ICcnKSkuam9pbignJykpXG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwoU3RyaW5nKGNoaWxkcmVuKSlcbn1cblxuY29uc3QgaW5saW5lTWVudGlvbkhvdmVyQ3NzID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBpc0NsaWNrYWJsZT86IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgYmcgPSB0eXBlID09PSAncHJvamVjdCcgPyBWSU9MRVRfSUFfQ09MT1JTWzEwMF0gOiBNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkdcbiAgcmV0dXJuIGNzc2BcbiAgICBiYWNrZ3JvdW5kOiAke2JnfTtcbiAgICBvcGFjaXR5OiAke2lzQ2xpY2thYmxlID8gMC45NSA6IDF9O1xuICBgXG59XG5cbi8qKiBTcGFuIGlubGluZSBlc3RpbGFkbyAobWVuY2lvbmVzIG5vLXRhc2sgZW4gY2hhdCkuICovXG5jb25zdCBTQ0lubGluZU1lbnRpb24gPSBzdHlsZWQuc3Bhbjx7ICR0eXBlOiBDb250ZXh0RW50aXR5VHlwZTsgJGlzQ2xpY2thYmxlPzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogaW5saW5lO1xuICBwYWRkaW5nOiAycHggNHB4O1xuICBtYXJnaW46IDAgMXB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1jb3ItdHlwb2dyYXBoeS1mb250LWZhbWlseSwgJ1dvcmsgU2FucycpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBiYWNrZ3JvdW5kOiAkeyh7ICR0eXBlIH0pID0+IChNRU5USU9OX0NISVBfQ09MT1JTWyR0eXBlXSA/PyBNRU5USU9OX0NISVBfQ09MT1JTLnVzZXIpLmJnfTtcbiAgY29sb3I6ICR7KHsgJHR5cGUgfSkgPT4gKE1FTlRJT05fQ0hJUF9DT0xPUlNbJHR5cGVdID8/IE1FTlRJT05fQ0hJUF9DT0xPUlMudXNlcikuZmd9O1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICBjdXJzb3I6ICR7KHsgJGlzQ2xpY2thYmxlIH0pID0+ICgkaXNDbGlja2FibGUgPyAncG9pbnRlcicgOiAnZGVmYXVsdCcpfTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICY6aG92ZXIge1xuICAgICR7KHsgJHR5cGUsICRpc0NsaWNrYWJsZSB9KSA9PiBpbmxpbmVNZW50aW9uSG92ZXJDc3MoJHR5cGUsICRpc0NsaWNrYWJsZSl9XG4gIH1cbmBcblxuY29uc3QgU0NJbmxpbmVNZW50aW9uSWNvbiA9IHN0eWxlZC5zcGFuPHsgJHRhc2s/OiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1hcmdpbi1yaWdodDogMnB4O1xuICBsaW5lLWhlaWdodDogMTtcbiAgd2lkdGg6ICR7KHsgJHRhc2sgfSkgPT4gKCR0YXNrID8gJzE2cHgnIDogJzE0cHgnKX07XG4gIGhlaWdodDogJHsoeyAkdGFzayB9KSA9PiAoJHRhc2sgPyAnMTZweCcgOiAnMTRweCcpfTtcbmBcblxuLyoqXG4gKiBTaSBlbCBocmVmIGNvcnJlc3BvbmRlIGFsIHByb3RvY29sbyBkZSBtZW50aW9uLCBkZXZ1ZWx2ZSB1biBub2RvIGVzdGlsYWRvIHBvciB0aXBvLlxuICogTGFzIHRhcmVhcyB1c2FuIGA8YT5gIGNvbW8gbG9zIGVubGFjZXMgZGUgdGFyZWEgZGVsIGFnZW50ZSAoYC5oYXMtdGFzay1saW5rc2ApLlxuICovXG5leHBvcnQgY29uc3QgcmVuZGVyTWVudGlvbkxpbmsgPSAoaHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkLCBjaGlsZHJlbjogUmVhY3ROb2RlKTogUmVhY3ROb2RlIHwgbnVsbCA9PiB7XG4gIGlmICghaHJlZiB8fCAhaHJlZi5zdGFydHNXaXRoKE1BSUFfTUVOVElPTl9QUk9UT0NPTCkpIHJldHVybiBudWxsXG4gIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHBhcnNlTWVudGlvblByb3RvY29sSHJlZihocmVmKVxuICBjb25zdCBsYWJlbCA9IG1lbnRpb25DaGlsZHJlblRvTGFiZWwoY2hpbGRyZW4pXG4gIGNvbnN0IGlzVGFzayA9IHR5cGUgPT09ICd0YXNrJ1xuICBjb25zdCBpY29uU2l6ZSA9IGlzVGFzayA/IDE2IDogMTRcbiAgY29uc3QgdGFza1VybCA9IGAvdGFza3MvJHtpZH0vZGV0YWlsYFxuXG4gIGNvbnN0IGhhbmRsZVRhc2tDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVRhc2tLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUua2V5ICE9PSAnRW50ZXInICYmIGUua2V5ICE9PSAnICcpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gIH1cblxuICBpZiAoaXNUYXNrKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1Rhc2tMaW5rXG4gICAgICAgIGhyZWY9e3Rhc2tVcmx9XG4gICAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICAgIGRhdGEtbWVudGlvbi10eXBlPXt0eXBlfVxuICAgICAgICBkYXRhLW1lbnRpb24tc3VyZmFjZT1cImNoYXRcIlxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVUYXNrQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlVGFza0tleURvd259XG4gICAgICA+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvU0NUYXNrTGluaz5cbiAgICApXG4gIH1cblxuICBjb25zdCBpc1Byb2plY3QgPSB0eXBlID09PSAncHJvamVjdCdcbiAgY29uc3QgcHJvamVjdFVybCA9IGlzUHJvamVjdCA/IGAvcHJvamVjdC8ke2lkfS9kYXNoYm9hcmRgIDogbnVsbFxuICBjb25zdCBzaG93SWNvbiA9ICFpc1Byb2plY3RcblxuICBjb25zdCBoYW5kbGVQcm9qZWN0Q2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFwcm9qZWN0VXJsKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgd2luZG93Lm9wZW4ocHJvamVjdFVybCwgJ19ibGFuaycpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0lubGluZU1lbnRpb25cbiAgICAgICR0eXBlPXt0eXBlfVxuICAgICAgJGlzQ2xpY2thYmxlPXtpc1Byb2plY3R9XG4gICAgICBjbGFzc05hbWU9e0NPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTfVxuICAgICAgZGF0YS1tZW50aW9uLXR5cGU9e3R5cGV9XG4gICAgICBkYXRhLW1lbnRpb24tc3VyZmFjZT1cImNoYXRcIlxuICAgICAgb25DbGljaz17aXNQcm9qZWN0ID8gaGFuZGxlUHJvamVjdENsaWNrIDogdW5kZWZpbmVkfVxuICAgICAgcm9sZT17aXNQcm9qZWN0ID8gJ2J1dHRvbicgOiB1bmRlZmluZWR9XG4gICAgICB0YWJJbmRleD17aXNQcm9qZWN0ID8gMCA6IHVuZGVmaW5lZH1cbiAgICA+XG4gICAgICB7c2hvd0ljb24gPyAoXG4gICAgICAgIDxTQ0lubGluZU1lbnRpb25JY29uICR0YXNrPXtpc1Rhc2t9PlxuICAgICAgICAgIHtnZXRDb250ZXh0TWVudGlvbkljb24odHlwZSwgTUVOVElPTl9DSElQX0NPTE9SU1t0eXBlXS5mZywgaWQsIGljb25TaXplKX1cbiAgICAgICAgPC9TQ0lubGluZU1lbnRpb25JY29uPlxuICAgICAgKSA6IG51bGx9XG4gICAgICB7c2hvd0ljb24gPyAnXFx1MjA2MCcgOiBudWxsfVxuICAgICAge2xhYmVsfVxuICAgIDwvU0NJbmxpbmVNZW50aW9uPlxuICApXG59XG5cbi8qKiBRdWl0YSBsb3MgbWFya2VycyBkZWwgdGV4dG8sIGRlamFuZG8gc29sbyBgbGFiZWxgLiDDmnRpbCBwYXJhIGZhbGxiYWNrIHBsYW5vLiAqL1xuZXhwb3J0IGNvbnN0IHN0cmlwTWVudGlvbk1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nID0+XG4gIHRleHQucmVwbGFjZShNRU5USU9OX01BUktFUl9SRUdFWCwgKF9tLCBfdHlwZSwgX2lkLCBsYWJlbCkgPT4gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChTdHJpbmcobGFiZWwpKSlcblxuLyoqXG4gKiBUw610dWxvcyBkZSBjb252ZXJzYWNpw7NuIChwLiBlai4gYGxhc3RfcXVlc3Rpb25gIGRlcml2YWRvIGRlbCBwcmltZXIgbWVuc2FqZSkgcHVlZGVuXG4gKiBpbmNsdWlyIGVsIHRleHRvIHNlcmlhbGl6YWRvIGBbW21lbnRpb246dHlwZTppZHxsYWJlbF1dYC4gUGFyYSBzaWRlYmFyIHkgbGlzdGFkb3MsXG4gKiByZWVtcGxhemEgY2FkYSBibG9xdWUgcG9yIGBsYWJlbGAgZW4gdGV4dG8gcGxhbm8sIHNpbiBlbCBtYXJjYWRvciBjcnVkby5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyA9ICh0ZXh0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nID0+IHtcbiAgaWYgKHRleHQgPT0gbnVsbCB8fCB0ZXh0ID09PSAnJykgcmV0dXJuIHRleHQgPz8gJydcbiAgY29uc3Qgd2l0aG91dENvbXBsZXRlTWFya2VycyA9IHRleHQucmVwbGFjZShNRU5USU9OX01BUktFUl9SRUdFWCwgKF9tLCBfdHlwZSwgX2lkLCBsYWJlbCkgPT5cbiAgICBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKFN0cmluZyhsYWJlbCkudHJpbSgpKVxuICApXG4gIHJldHVybiB3aXRob3V0Q29tcGxldGVNYXJrZXJzLnJlcGxhY2UoSU5DT01QTEVURV9NRU5USU9OX01BUktFUl9SRUdFWCwgJycpLnRyaW0oKVxufVxuXG4vKiogR2VuZXJhIGxhIFVSTCBkZSBuYXZlZ2FjacOzbiBwYXJhIHVuIG1lbnRpb24gc2Vnw7puIHN1IHRpcG8uICovXG5jb25zdCBnZXRNZW50aW9uVXJsID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBpZDogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2NsaWVudCc6XG4gICAgICByZXR1cm4gYC9jbGllbnRzLyR7aWR9YFxuICAgIGNhc2UgJ3Byb2plY3QnOlxuICAgICAgcmV0dXJuIGAvcHJvamVjdC8ke2lkfS9kYXNoYm9hcmRgXG4gICAgY2FzZSAndGFzayc6XG4gICAgICByZXR1cm4gYC90YXNrcy8ke2lkfS9kZXRhaWxgXG4gICAgY2FzZSAndXNlcic6XG4gICAgICByZXR1cm4gbnVsbCAvLyBMb3MgdXNlcnMgbm8gc29uIGNsaWNrZWFibGVzXG4gICAgY2FzZSAnbWNwJzpcbiAgICAgIHJldHVybiBudWxsXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuY29uc3QgTWVudGlvbkNoaXAgPSAoeyB0eXBlLCBpZCwgbGFiZWwgfTogeyB0eXBlOiBDb250ZXh0RW50aXR5VHlwZTsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRMYWJlbCA9IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwobGFiZWwpXG4gIGNvbnN0IHVybCA9IGdldE1lbnRpb25VcmwodHlwZSwgaWQpXG4gIGNvbnN0IGlzQ2xpY2thYmxlID0gISF1cmxcbiAgY29uc3QgaXNUYXNrID0gdHlwZSA9PT0gJ3Rhc2snXG4gIGNvbnN0IGlzUHJvamVjdCA9IHR5cGUgPT09ICdwcm9qZWN0J1xuICBjb25zdCBzaG93SWNvbiA9ICFpc1Byb2plY3RcbiAgY29uc3QgaWNvblNpemUgPSBpc1Rhc2sgPyAxNiA6IDE0XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudCB8IEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzQ2xpY2thYmxlIHx8ICF1cmwpIHJldHVyblxuICAgIGlmICh0eXBlID09PSAndGFzaycpIHtcbiAgICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChlOiBLZXlib2FyZEV2ZW50PEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICAgIGlmICghaXNDbGlja2FibGUgfHwgdHlwZSAhPT0gJ3Rhc2snKSByZXR1cm5cbiAgICBpZiAoZS5rZXkgIT09ICdFbnRlcicgJiYgZS5rZXkgIT09ICcgJykgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgfVxuXG4gIGlmICh0eXBlID09PSAndGFzaycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNDVGFza0xpbmtcbiAgICAgICAgaHJlZj17dXJsID8/ICcjJ31cbiAgICAgICAgY2xhc3NOYW1lPXtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31cbiAgICAgICAgZGF0YS1tZW50aW9uLXR5cGU9XCJ0YXNrXCJcbiAgICAgICAgZGF0YS1tZW50aW9uLXN1cmZhY2U9XCJjaGF0XCJcbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgID5cbiAgICAgICAge25vcm1hbGl6ZWRMYWJlbH1cbiAgICAgIDwvU0NUYXNrTGluaz5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0lubGluZU1lbnRpb25cbiAgICAgICR0eXBlPXt0eXBlfVxuICAgICAgJGlzQ2xpY2thYmxlPXtpc0NsaWNrYWJsZX1cbiAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICBkYXRhLW1lbnRpb24tdHlwZT17dHlwZX1cbiAgICAgIGRhdGEtbWVudGlvbi1zdXJmYWNlPVwiY2hhdFwiXG4gICAgICBvbkNsaWNrPXtpc0NsaWNrYWJsZSA/IGhhbmRsZUNsaWNrIDogdW5kZWZpbmVkfVxuICAgICAgcm9sZT17aXNDbGlja2FibGUgPyAnYnV0dG9uJyA6IHVuZGVmaW5lZH1cbiAgICAgIHRhYkluZGV4PXtpc0NsaWNrYWJsZSA/IDAgOiB1bmRlZmluZWR9XG4gICAgPlxuICAgICAge3Nob3dJY29uID8gKFxuICAgICAgICA8U0NJbmxpbmVNZW50aW9uSWNvbiAkdGFzaz17aXNUYXNrfT5cbiAgICAgICAgICB7Z2V0Q29udGV4dE1lbnRpb25JY29uKHR5cGUsIE1FTlRJT05fQ0hJUF9DT0xPUlNbdHlwZV0uZmcsIGlkLCBpY29uU2l6ZSl9XG4gICAgICAgIDwvU0NJbmxpbmVNZW50aW9uSWNvbj5cbiAgICAgICkgOiBudWxsfVxuICAgICAge3Nob3dJY29uID8gJ1xcdTIwNjAnIDogbnVsbH1cbiAgICAgIHtub3JtYWxpemVkTGFiZWx9XG4gICAgPC9TQ0lubGluZU1lbnRpb24+XG4gIClcbn1cblxuLyoqXG4gKiBTcGxpdGVhIGVsIHRleHRvIHBvciBtYXJrZXJzIHkgZGV2dWVsdmUgdW4gYXJyYXkgZGUgUmVhY3ROb2RlczpcbiAqIHRleHRvIHBsYW5vICsgc3BhbnMgZXN0aWxhZG9zIHBhcmEgY2FkYSBtZW50aW9uLiBSZW5kZXJpemEgZGlyZWN0YW1lbnRlXG4gKiBzaW4gcGFzYXIgcG9yIFN0cmVhbWRvd24gKG5vIHNvcG9ydGEgbWFya2Rvd24gZW4gZXN0ZSBtb2RvKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlbmRlclRleHRXaXRoTWVudGlvbnMgPSAodGV4dDogc3RyaW5nKTogQXJyYXk8c3RyaW5nIHwgUmVhY3RFbGVtZW50PiA9PiB7XG4gIGlmICghdGV4dCkgcmV0dXJuIFt0ZXh0XVxuICBjb25zdCBvdXQ6IEFycmF5PHN0cmluZyB8IFJlYWN0RWxlbWVudD4gPSBbXVxuICBsZXQgbGFzdElkeCA9IDBcbiAgTUVOVElPTl9NQVJLRVJfUkVHRVgubGFzdEluZGV4ID0gMFxuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBNRU5USU9OX01BUktFUl9SRUdFWC5leGVjKHRleHQpXG4gIGxldCBrZXlJZHggPSAwXG4gIHdoaWxlIChtYXRjaCkge1xuICAgIGlmIChtYXRjaC5pbmRleCA+IGxhc3RJZHgpIG91dC5wdXNoKHRleHQuc2xpY2UobGFzdElkeCwgbWF0Y2guaW5kZXgpKVxuICAgIGNvbnN0IFssIHJhd1R5cGUsIGlkLCBsYWJlbF0gPSBtYXRjaFxuICAgIGNvbnN0IHR5cGUgPSBBTExPV0VEX1RZUEVTLmluY2x1ZGVzKHJhd1R5cGUgYXMgQ29udGV4dEVudGl0eVR5cGUpID8gKHJhd1R5cGUgYXMgQ29udGV4dEVudGl0eVR5cGUpIDogJ3VzZXInXG5cbiAgICBvdXQucHVzaCg8TWVudGlvbkNoaXAga2V5PXtgbWVudGlvbi0ke2tleUlkeH0tJHttYXRjaC5pbmRleH1gfSB0eXBlPXt0eXBlfSBpZD17aWR9IGxhYmVsPXtsYWJlbH0gLz4pXG5cbiAgICBsYXN0SWR4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGhcbiAgICBrZXlJZHggKz0gMVxuICAgIG1hdGNoID0gTUVOVElPTl9NQVJLRVJfUkVHRVguZXhlYyh0ZXh0KVxuICB9XG4gIGlmIChsYXN0SWR4IDwgdGV4dC5sZW5ndGgpIG91dC5wdXNoKHRleHQuc2xpY2UobGFzdElkeCkpXG4gIHJldHVybiBvdXRcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU9BLE1BQU0sSUFBSUMsR0FBRyxRQUFRLG1CQUFtQjtBQUMvQyxTQUE0Q0MsMEJBQTBCLFFBQVEseUJBQXlCO0FBQ3ZHLFNBQ0VDLG1CQUFtQixFQUNuQkMsOEJBQThCLFFBQ3pCLGtFQUFrRTtBQUN6RSxTQUFTQyxnQkFBZ0IsUUFBUSxrQkFBa0I7QUFDbkQsU0FBU0MsVUFBVSxRQUFRLGtEQUFrRDtBQUM3RSxTQUFTQyxxQkFBcUIsUUFBUSx1QkFBdUI7QUFDN0Qs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
|
|
355
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsIk1FTlRJT05fQ0hJUF9DT0xPUlMiLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJWSU9MRVRfSUFfQ09MT1JTIiwiU0NUYXNrTGluayIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJNRU5USU9OX01BUktFUl9SRUdFWCIsIk1BSUFfTUVOVElPTl9QUk9UT0NPTCIsIklOQ09NUExFVEVfTUVOVElPTl9NQVJLRVJfUkVHRVgiLCJBTExPV0VEX1RZUEVTIiwicGFyc2VNZW50aW9uUHJvdG9jb2xIcmVmIiwiaHJlZiIsInJlc3QiLCJzbGljZSIsImxlbmd0aCIsInNsYXNoSWR4IiwiaW5kZXhPZiIsInJhd1R5cGUiLCJyYXdJZCIsImlkIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiX3VudXNlZCIsInR5cGUiLCJpbmNsdWRlcyIsInNlcmlhbGl6ZU1lbnRpb24iLCJtZW50aW9uIiwiY29uY2F0IiwibGFiZWwiLCJ0cmFuc2Zvcm1NZW50aW9uTWFya2VycyIsInRleHQiLCJyZXBsYWNlIiwiX20iLCJzYWZlTGFiZWwiLCJTdHJpbmciLCJlbmNvZGVVUklDb21wb25lbnQiLCJtZW50aW9uQ2hpbGRyZW5Ub0xhYmVsIiwiY2hpbGRyZW4iLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJjIiwiam9pbiIsInNwbGl0TGFiZWxGaXJzdFdvcmQiLCJub3JtYWxpemVkIiwidHJpbSIsImZpcnN0V29yZCIsImZpcnN0V2hpdGVzcGFjZUlkeCIsInNlYXJjaCIsImlubGluZU1lbnRpb25Ib3ZlckNzcyIsImlzQ2xpY2thYmxlIiwiYmciLCJTQ0lubGluZU1lbnRpb24iLCJzcGFuIiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJfcmVmIiwiX01FTlRJT05fQ0hJUF9DT0xPUlMkIiwiJHR5cGUiLCJ1c2VyIiwiX3JlZjIiLCJfTUVOVElPTl9DSElQX0NPTE9SUyQyIiwiZmciLCJfcmVmMyIsIiRpc0NsaWNrYWJsZSIsIl9yZWY0IiwiU0NJbmxpbmVNZW50aW9uSWNvbiIsIl9yZWY1IiwiJHRhc2siLCJfcmVmNiIsInJlbmRlck1lbnRpb25MaW5rIiwic3RhcnRzV2l0aCIsIl9wYXJzZU1lbnRpb25Qcm90b2NvbCIsImlzVGFzayIsImljb25TaXplIiwidGFza1VybCIsImhhbmRsZVRhc2tDbGljayIsImUiLCJtZXRhS2V5IiwiY3RybEtleSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiaGFuZGxlVGFza0tleURvd24iLCJrZXkiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25LZXlEb3duIiwiaXNQcm9qZWN0IiwicHJvamVjdFVybCIsInNob3dJY29uIiwiX3NwbGl0TGFiZWxGaXJzdFdvcmQiLCJoYW5kbGVQcm9qZWN0Q2xpY2siLCJ3aW5kb3ciLCJvcGVuIiwidW5kZWZpbmVkIiwicm9sZSIsInRhYkluZGV4Iiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsIndoaXRlU3BhY2UiLCJtYXhXaWR0aCIsInN0cmlwTWVudGlvbk1hcmtlcnMiLCJfdHlwZSIsIl9pZCIsImZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyIsIndpdGhvdXRDb21wbGV0ZU1hcmtlcnMiLCJnZXRNZW50aW9uVXJsIiwiTWVudGlvbkNoaXAiLCJfcmVmNyIsIm5vcm1hbGl6ZWRMYWJlbCIsInVybCIsIl9zcGxpdExhYmVsRmlyc3RXb3JkMiIsImhhbmRsZUNsaWNrIiwiaGFuZGxlS2V5RG93biIsInJlbmRlclRleHRXaXRoTWVudGlvbnMiLCJvdXQiLCJsYXN0SWR4IiwibGFzdEluZGV4IiwibWF0Y2giLCJleGVjIiwia2V5SWR4IiwiaW5kZXgiLCJwdXNoIiwiX21hdGNoIiwiX21hdGNoMiIsIl9zbGljZWRUb0FycmF5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVhY3ROb2RlLCBSZWFjdEVsZW1lbnQsIE1vdXNlRXZlbnQsIEtleWJvYXJkRXZlbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBzdHlsZWQsIHsgY3NzIH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24sIENPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQge1xuICBNRU5USU9OX0NISVBfQ09MT1JTLFxuICBNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkcsXG59IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25DaGlwL0NvbnRleHRNZW50aW9uQ2hpcC5zdHlsZXMnXG5pbXBvcnQgeyBWSU9MRVRfSUFfQ09MT1JTIH0gZnJvbSAnLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7IFNDVGFza0xpbmsgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9uZXdTdHlsZXMnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQgeyBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsIH0gZnJvbSAnLi9jb250ZXh0TWVudGlvbkxhYmVsJ1xuaW1wb3J0IHsgb3BlblRhc2tJbkNvclBhbmVsIH0gZnJvbSAnLi9vcGVuVGFza0luQ29yUGFuZWwnXG5cbi8qKlxuICogRm9ybWF0byBkZWwgbWFyY2Fkb3IgcXVlIHZpYWphIGVuIGVsIHRleHRvIGRlbCBtZW5zYWplOlxuICogICBbW21lbnRpb246PHR5cGU+OjxpZD58PGxhYmVsPl1dXG4gKlxuICogRWwgZWRpdG9yIGxvIGVtaXRlIGN1YW5kbyBzZXJpYWxpemEgZWwgY29udGVudGVkaXRhYmxlLCBlbCBiYWNrZW5kIGxvXG4gKiBwZXJzaXN0ZSB0YWwgY3VhbCB5IGFsIHJlbmRlcml6YXIgc2UgdHJhbnNmb3JtYSBlbiB1biBsaW5rIG1hcmtkb3duIGNvblxuICogdW4gcHJvdG9jb2xvIHByb3BpbyBxdWUgYEN1c3RvbUxpbmtgIGludGVyY2VwdGEgeSBkaWJ1amEgY29tbyBzcGFuXG4gKiBlc3RpbGFkby5cbiAqXG4gKiBQb3Igc2VwYXJhZG8sIGxhIG1ldGFkYXRhIGBjb250ZXh0X21lc3NhZ2VgIGxsZXZhIGxvcyB2YWxvcmVzIGxpbXBpb3NcbiAqIChpZCArIG5hbWUpIHBhcmEgcXVlIGVsIGJhY2tlbmQgcHVlZGEgaW50ZXJwcmV0YXIgbGFzIGVudGlkYWRlcyBzaW5cbiAqIHRlbmVyIHF1ZSBwYXJzZWFyIGVsIHRleHRvLlxuICovXG4vKipcbiAqIExhYmVsIHB1ZWRlIGNvbnRlbmVyIGBdYCAoZWo6IFwiW0VkdWNhdGVdQmxvZyBQb3N0IC4uLlwiKSwgcG9yIGVzb1xuICogc2UgY2FwdHVyYSBkZSBmb3JtYSBsYXp5IGhhc3RhIGVsIGNpZXJyZSByZWFsIGBdXWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOihjbGllbnR8cHJvamVjdHx0YXNrfHVzZXJ8bWNwKTooW158XFxdXSspXFx8KFtcXHNcXFNdKj8pXFxdXFxdL2dcbmV4cG9ydCBjb25zdCBNQUlBX01FTlRJT05fUFJPVE9DT0wgPSAnbWFpYS1tZW50aW9uOi8vJ1xuY29uc3QgSU5DT01QTEVURV9NRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOltcXHNcXFNdKiQvXG5cbmNvbnN0IEFMTE9XRURfVFlQRVM6IENvbnRleHRFbnRpdHlUeXBlW10gPSBbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snLCAndXNlcicsICdtY3AnXVxuXG5jb25zdCBwYXJzZU1lbnRpb25Qcm90b2NvbEhyZWYgPSAoaHJlZjogc3RyaW5nKTogeyB0eXBlOiBDb250ZXh0RW50aXR5VHlwZTsgaWQ6IHN0cmluZyB9ID0+IHtcbiAgY29uc3QgcmVzdCA9IGhyZWYuc2xpY2UoTUFJQV9NRU5USU9OX1BST1RPQ09MLmxlbmd0aClcbiAgY29uc3Qgc2xhc2hJZHggPSByZXN0LmluZGV4T2YoJy8nKVxuICBjb25zdCByYXdUeXBlID0gc2xhc2hJZHggPj0gMCA/IHJlc3Quc2xpY2UoMCwgc2xhc2hJZHgpIDogcmVzdFxuICBjb25zdCByYXdJZCA9IHNsYXNoSWR4ID49IDAgPyByZXN0LnNsaWNlKHNsYXNoSWR4ICsgMSkgOiAnJ1xuICBsZXQgaWQgPSAnJ1xuICB0cnkge1xuICAgIGlkID0gcmF3SWQgPyBkZWNvZGVVUklDb21wb25lbnQocmF3SWQpIDogJydcbiAgfSBjYXRjaCB7XG4gICAgaWQgPSByYXdJZFxuICB9XG4gIGNvbnN0IHR5cGUgPSBBTExPV0VEX1RZUEVTLmluY2x1ZGVzKHJhd1R5cGUgYXMgQ29udGV4dEVudGl0eVR5cGUpID8gKHJhd1R5cGUgYXMgQ29udGV4dEVudGl0eVR5cGUpIDogJ3VzZXInXG4gIHJldHVybiB7IHR5cGUsIGlkIH1cbn1cblxuLyoqIEdlbmVyYSBlbCBtYXJjYWRvciBwYXJhIHVuIG1lbnRpb24gZGFkby4gTG8gdXNhIGVsIGVkaXRvciBhbCBzZXJpYWxpemFyLiAqL1xuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZU1lbnRpb24gPSAobWVudGlvbjogQ29udGV4dE1lbnRpb24pOiBzdHJpbmcgPT5cbiAgYFtbbWVudGlvbjoke21lbnRpb24udHlwZX06JHttZW50aW9uLmlkfXwke21lbnRpb24ubGFiZWx9XV1gXG5cbi8qKlxuICogQ29udmllcnRlIGNhZGEgYFtbbWVudGlvbjouLi5dXWAgZW4gdW4gbGluayBtYXJrZG93biBjb24gcHJvdG9jb2xvIHByb3Bpb1xuICogcGFyYSBxdWUgU3RyZWFtZG93biBsbyBlbWl0YSBjb21vIGA8YT5gIHkgYEN1c3RvbUxpbmtgIGxvIGludGVyY2VwdGUuXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1NZW50aW9uTWFya2VycyA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIXRleHQpIHJldHVybiB0ZXh0XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoTUVOVElPTl9NQVJLRVJfUkVHRVgsIChfbSwgdHlwZSwgaWQsIGxhYmVsKSA9PiB7XG4gICAgY29uc3Qgc2FmZUxhYmVsID0gU3RyaW5nKGxhYmVsKS5yZXBsYWNlKC9bXFxcXFxcXV0vZywgJ1xcXFwkJicpXG4gICAgcmV0dXJuIGBbJHtzYWZlTGFiZWx9XSgke01BSUFfTUVOVElPTl9QUk9UT0NPTH0ke3R5cGV9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhpZCkpfSlgXG4gIH0pXG59XG5cbmNvbnN0IG1lbnRpb25DaGlsZHJlblRvTGFiZWwgPSAoY2hpbGRyZW46IFJlYWN0Tm9kZSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnKSByZXR1cm4gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChjaGlsZHJlbilcbiAgaWYgKGNoaWxkcmVuID09IG51bGwgfHwgY2hpbGRyZW4gPT09IGZhbHNlKSByZXR1cm4gJydcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwoY2hpbGRyZW4ubWFwKGMgPT4gKHR5cGVvZiBjID09PSAnc3RyaW5nJyA/IGMgOiAnJykpLmpvaW4oJycpKVxuICB9XG4gIHJldHVybiBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKFN0cmluZyhjaGlsZHJlbikpXG59XG5cbmNvbnN0IHNwbGl0TGFiZWxGaXJzdFdvcmQgPSAobGFiZWw6IHN0cmluZyk6IHsgZmlyc3RXb3JkOiBzdHJpbmc7IHJlc3Q6IHN0cmluZyB9ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwobGFiZWwpLnRyaW0oKVxuICBpZiAoIW5vcm1hbGl6ZWQpIHJldHVybiB7IGZpcnN0V29yZDogJycsIHJlc3Q6ICcnIH1cbiAgY29uc3QgZmlyc3RXaGl0ZXNwYWNlSWR4ID0gbm9ybWFsaXplZC5zZWFyY2goL1xccy8pXG4gIGlmIChmaXJzdFdoaXRlc3BhY2VJZHggPCAwKSByZXR1cm4geyBmaXJzdFdvcmQ6IG5vcm1hbGl6ZWQsIHJlc3Q6ICcnIH1cbiAgcmV0dXJuIHtcbiAgICBmaXJzdFdvcmQ6IG5vcm1hbGl6ZWQuc2xpY2UoMCwgZmlyc3RXaGl0ZXNwYWNlSWR4KSxcbiAgICByZXN0OiBub3JtYWxpemVkLnNsaWNlKGZpcnN0V2hpdGVzcGFjZUlkeCksXG4gIH1cbn1cblxuY29uc3QgaW5saW5lTWVudGlvbkhvdmVyQ3NzID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBpc0NsaWNrYWJsZT86IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgYmcgPSB0eXBlID09PSAncHJvamVjdCcgPyBWSU9MRVRfSUFfQ09MT1JTWzEwMF0gOiBNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkdcbiAgcmV0dXJuIGNzc2BcbiAgICBiYWNrZ3JvdW5kOiAke2JnfTtcbiAgICBvcGFjaXR5OiAke2lzQ2xpY2thYmxlID8gMC45NSA6IDF9O1xuICBgXG59XG5cbi8qKiBTcGFuIGlubGluZSBlc3RpbGFkbyAobWVuY2lvbmVzIG5vLXRhc2sgZW4gY2hhdCkuICovXG5jb25zdCBTQ0lubGluZU1lbnRpb24gPSBzdHlsZWQuc3Bhbjx7ICR0eXBlOiBDb250ZXh0RW50aXR5VHlwZTsgJGlzQ2xpY2thYmxlPzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogaW5saW5lO1xuICBwYWRkaW5nOiAycHggNHB4O1xuICBtYXJnaW46IDAgMXB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1jb3ItdHlwb2dyYXBoeS1mb250LWZhbWlseSwgJ1dvcmsgU2FucycpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBiYWNrZ3JvdW5kOiAkeyh7ICR0eXBlIH0pID0+IChNRU5USU9OX0NISVBfQ09MT1JTWyR0eXBlXSA/PyBNRU5USU9OX0NISVBfQ09MT1JTLnVzZXIpLmJnfTtcbiAgY29sb3I6ICR7KHsgJHR5cGUgfSkgPT4gKE1FTlRJT05fQ0hJUF9DT0xPUlNbJHR5cGVdID8/IE1FTlRJT05fQ0hJUF9DT0xPUlMudXNlcikuZmd9O1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICBjdXJzb3I6ICR7KHsgJGlzQ2xpY2thYmxlIH0pID0+ICgkaXNDbGlja2FibGUgPyAncG9pbnRlcicgOiAnZGVmYXVsdCcpfTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICY6aG92ZXIge1xuICAgICR7KHsgJHR5cGUsICRpc0NsaWNrYWJsZSB9KSA9PiBpbmxpbmVNZW50aW9uSG92ZXJDc3MoJHR5cGUsICRpc0NsaWNrYWJsZSl9XG4gIH1cbmBcblxuY29uc3QgU0NJbmxpbmVNZW50aW9uSWNvbiA9IHN0eWxlZC5zcGFuPHsgJHRhc2s/OiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1hcmdpbi1yaWdodDogMnB4O1xuICBsaW5lLWhlaWdodDogMTtcbiAgd2lkdGg6ICR7KHsgJHRhc2sgfSkgPT4gKCR0YXNrID8gJzE2cHgnIDogJzE0cHgnKX07XG4gIGhlaWdodDogJHsoeyAkdGFzayB9KSA9PiAoJHRhc2sgPyAnMTZweCcgOiAnMTRweCcpfTtcbmBcblxuLyoqXG4gKiBTaSBlbCBocmVmIGNvcnJlc3BvbmRlIGFsIHByb3RvY29sbyBkZSBtZW50aW9uLCBkZXZ1ZWx2ZSB1biBub2RvIGVzdGlsYWRvIHBvciB0aXBvLlxuICogTGFzIHRhcmVhcyB1c2FuIGA8YT5gIGNvbW8gbG9zIGVubGFjZXMgZGUgdGFyZWEgZGVsIGFnZW50ZSAoYC5oYXMtdGFzay1saW5rc2ApLlxuICovXG5leHBvcnQgY29uc3QgcmVuZGVyTWVudGlvbkxpbmsgPSAoaHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkLCBjaGlsZHJlbjogUmVhY3ROb2RlKTogUmVhY3ROb2RlIHwgbnVsbCA9PiB7XG4gIGlmICghaHJlZiB8fCAhaHJlZi5zdGFydHNXaXRoKE1BSUFfTUVOVElPTl9QUk9UT0NPTCkpIHJldHVybiBudWxsXG4gIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHBhcnNlTWVudGlvblByb3RvY29sSHJlZihocmVmKVxuICBjb25zdCBsYWJlbCA9IG1lbnRpb25DaGlsZHJlblRvTGFiZWwoY2hpbGRyZW4pXG4gIGNvbnN0IGlzVGFzayA9IHR5cGUgPT09ICd0YXNrJ1xuICBjb25zdCBpY29uU2l6ZSA9IGlzVGFzayA/IDE2IDogMTRcbiAgY29uc3QgdGFza1VybCA9IGAvdGFza3MvJHtpZH0vZGV0YWlsYFxuXG4gIGNvbnN0IGhhbmRsZVRhc2tDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVRhc2tLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUua2V5ICE9PSAnRW50ZXInICYmIGUua2V5ICE9PSAnICcpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gIH1cblxuICBpZiAoaXNUYXNrKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1Rhc2tMaW5rXG4gICAgICAgIGhyZWY9e3Rhc2tVcmx9XG4gICAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICAgIGRhdGEtbWVudGlvbi10eXBlPXt0eXBlfVxuICAgICAgICBkYXRhLW1lbnRpb24tc3VyZmFjZT1cImNoYXRcIlxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVUYXNrQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlVGFza0tleURvd259XG4gICAgICA+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvU0NUYXNrTGluaz5cbiAgICApXG4gIH1cblxuICBjb25zdCBpc1Byb2plY3QgPSB0eXBlID09PSAncHJvamVjdCdcbiAgY29uc3QgcHJvamVjdFVybCA9IGlzUHJvamVjdCA/IGAvcHJvamVjdC8ke2lkfS9kYXNoYm9hcmRgIDogbnVsbFxuICBjb25zdCBzaG93SWNvbiA9ICFpc1Byb2plY3RcbiAgY29uc3QgeyBmaXJzdFdvcmQsIHJlc3QgfSA9IHNwbGl0TGFiZWxGaXJzdFdvcmQobGFiZWwpXG5cbiAgY29uc3QgaGFuZGxlUHJvamVjdENsaWNrID0gKGU6IE1vdXNlRXZlbnQ8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICAgIGlmICghcHJvamVjdFVybCkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHdpbmRvdy5vcGVuKHByb2plY3RVcmwsICdfYmxhbmsnKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NJbmxpbmVNZW50aW9uXG4gICAgICAkdHlwZT17dHlwZX1cbiAgICAgICRpc0NsaWNrYWJsZT17aXNQcm9qZWN0fVxuICAgICAgY2xhc3NOYW1lPXtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31cbiAgICAgIGRhdGEtbWVudGlvbi10eXBlPXt0eXBlfVxuICAgICAgZGF0YS1tZW50aW9uLXN1cmZhY2U9XCJjaGF0XCJcbiAgICAgIG9uQ2xpY2s9e2lzUHJvamVjdCA/IGhhbmRsZVByb2plY3RDbGljayA6IHVuZGVmaW5lZH1cbiAgICAgIHJvbGU9e2lzUHJvamVjdCA/ICdidXR0b24nIDogdW5kZWZpbmVkfVxuICAgICAgdGFiSW5kZXg9e2lzUHJvamVjdCA/IDAgOiB1bmRlZmluZWR9XG4gICAgPlxuICAgICAge3Nob3dJY29uID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCB3aGl0ZVNwYWNlOiAnbm93cmFwJywgbWF4V2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgICAgICAgIDxTQ0lubGluZU1lbnRpb25JY29uICR0YXNrPXtpc1Rhc2t9PlxuICAgICAgICAgICAgICB7Z2V0Q29udGV4dE1lbnRpb25JY29uKHR5cGUsIE1FTlRJT05fQ0hJUF9DT0xPUlNbdHlwZV0uZmcsIGlkLCBpY29uU2l6ZSl9XG4gICAgICAgICAgICA8L1NDSW5saW5lTWVudGlvbkljb24+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17eyB3aGl0ZVNwYWNlOiAnbm93cmFwJyB9fT57Zmlyc3RXb3JkfTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge3Jlc3QgPyA8c3Bhbj57cmVzdH08L3NwYW4+IDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIHshc2hvd0ljb24gPyBsYWJlbCA6IG51bGx9XG4gICAgPC9TQ0lubGluZU1lbnRpb24+XG4gIClcbn1cblxuLyoqIFF1aXRhIGxvcyBtYXJrZXJzIGRlbCB0ZXh0bywgZGVqYW5kbyBzb2xvIGBsYWJlbGAuIMOadGlsIHBhcmEgZmFsbGJhY2sgcGxhbm8uICovXG5leHBvcnQgY29uc3Qgc3RyaXBNZW50aW9uTWFya2VycyA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dC5yZXBsYWNlKE1FTlRJT05fTUFSS0VSX1JFR0VYLCAoX20sIF90eXBlLCBfaWQsIGxhYmVsKSA9PiBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKFN0cmluZyhsYWJlbCkpKVxuXG4vKipcbiAqIFTDrXR1bG9zIGRlIGNvbnZlcnNhY2nDs24gKHAuIGVqLiBgbGFzdF9xdWVzdGlvbmAgZGVyaXZhZG8gZGVsIHByaW1lciBtZW5zYWplKSBwdWVkZW5cbiAqIGluY2x1aXIgZWwgdGV4dG8gc2VyaWFsaXphZG8gYFtbbWVudGlvbjp0eXBlOmlkfGxhYmVsXV1gLiBQYXJhIHNpZGViYXIgeSBsaXN0YWRvcyxcbiAqIHJlZW1wbGF6YSBjYWRhIGJsb3F1ZSBwb3IgYGxhYmVsYCBlbiB0ZXh0byBwbGFubywgc2luIGVsIG1hcmNhZG9yIGNydWRvLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zID0gKHRleHQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgPT4ge1xuICBpZiAodGV4dCA9PSBudWxsIHx8IHRleHQgPT09ICcnKSByZXR1cm4gdGV4dCA/PyAnJ1xuICBjb25zdCB3aXRob3V0Q29tcGxldGVNYXJrZXJzID0gdGV4dC5yZXBsYWNlKE1FTlRJT05fTUFSS0VSX1JFR0VYLCAoX20sIF90eXBlLCBfaWQsIGxhYmVsKSA9PlxuICAgIG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwoU3RyaW5nKGxhYmVsKS50cmltKCkpXG4gIClcbiAgcmV0dXJuIHdpdGhvdXRDb21wbGV0ZU1hcmtlcnMucmVwbGFjZShJTkNPTVBMRVRFX01FTlRJT05fTUFSS0VSX1JFR0VYLCAnJykudHJpbSgpXG59XG5cbi8qKiBHZW5lcmEgbGEgVVJMIGRlIG5hdmVnYWNpw7NuIHBhcmEgdW4gbWVudGlvbiBzZWfDum4gc3UgdGlwby4gKi9cbmNvbnN0IGdldE1lbnRpb25VcmwgPSAodHlwZTogQ29udGV4dEVudGl0eVR5cGUsIGlkOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnY2xpZW50JzpcbiAgICAgIHJldHVybiBgL2NsaWVudHMvJHtpZH1gXG4gICAgY2FzZSAncHJvamVjdCc6XG4gICAgICByZXR1cm4gYC9wcm9qZWN0LyR7aWR9L2Rhc2hib2FyZGBcbiAgICBjYXNlICd0YXNrJzpcbiAgICAgIHJldHVybiBgL3Rhc2tzLyR7aWR9L2RldGFpbGBcbiAgICBjYXNlICd1c2VyJzpcbiAgICAgIHJldHVybiBudWxsIC8vIExvcyB1c2VycyBubyBzb24gY2xpY2tlYWJsZXNcbiAgICBjYXNlICdtY3AnOlxuICAgICAgcmV0dXJuIG51bGxcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5jb25zdCBNZW50aW9uQ2hpcCA9ICh7IHR5cGUsIGlkLCBsYWJlbCB9OiB7IHR5cGU6IENvbnRleHRFbnRpdHlUeXBlOyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0pID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZExhYmVsID0gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChsYWJlbClcbiAgY29uc3QgdXJsID0gZ2V0TWVudGlvblVybCh0eXBlLCBpZClcbiAgY29uc3QgaXNDbGlja2FibGUgPSAhIXVybFxuICBjb25zdCBpc1Rhc2sgPSB0eXBlID09PSAndGFzaydcbiAgY29uc3QgaXNQcm9qZWN0ID0gdHlwZSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IHNob3dJY29uID0gIWlzUHJvamVjdFxuICBjb25zdCBpY29uU2l6ZSA9IGlzVGFzayA/IDE2IDogMTRcbiAgY29uc3QgeyBmaXJzdFdvcmQsIHJlc3QgfSA9IHNwbGl0TGFiZWxGaXJzdFdvcmQobm9ybWFsaXplZExhYmVsKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGU6IE1vdXNlRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQgfCBIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFpc0NsaWNrYWJsZSB8fCAhdXJsKSByZXR1cm5cbiAgICBpZiAodHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkgcmV0dXJuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogS2V5Ym9hcmRFdmVudDxIVE1MQW5jaG9yRWxlbWVudCB8IEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzQ2xpY2thYmxlIHx8IHR5cGUgIT09ICd0YXNrJykgcmV0dXJuXG4gICAgaWYgKGUua2V5ICE9PSAnRW50ZXInICYmIGUua2V5ICE9PSAnICcpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gIH1cblxuICBpZiAodHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1Rhc2tMaW5rXG4gICAgICAgIGhyZWY9e3VybCA/PyAnIyd9XG4gICAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICAgIGRhdGEtbWVudGlvbi10eXBlPVwidGFza1wiXG4gICAgICAgIGRhdGEtbWVudGlvbi1zdXJmYWNlPVwiY2hhdFwiXG4gICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICA+XG4gICAgICAgIHtub3JtYWxpemVkTGFiZWx9XG4gICAgICA8L1NDVGFza0xpbms+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NJbmxpbmVNZW50aW9uXG4gICAgICAkdHlwZT17dHlwZX1cbiAgICAgICRpc0NsaWNrYWJsZT17aXNDbGlja2FibGV9XG4gICAgICBjbGFzc05hbWU9e0NPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTfVxuICAgICAgZGF0YS1tZW50aW9uLXR5cGU9e3R5cGV9XG4gICAgICBkYXRhLW1lbnRpb24tc3VyZmFjZT1cImNoYXRcIlxuICAgICAgb25DbGljaz17aXNDbGlja2FibGUgPyBoYW5kbGVDbGljayA6IHVuZGVmaW5lZH1cbiAgICAgIHJvbGU9e2lzQ2xpY2thYmxlID8gJ2J1dHRvbicgOiB1bmRlZmluZWR9XG4gICAgICB0YWJJbmRleD17aXNDbGlja2FibGUgPyAwIDogdW5kZWZpbmVkfVxuICAgID5cbiAgICAgIHtzaG93SWNvbiA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgd2hpdGVTcGFjZTogJ25vd3JhcCcsIG1heFdpZHRoOiAnMTAwJScgfX0+XG4gICAgICAgICAgICA8U0NJbmxpbmVNZW50aW9uSWNvbiAkdGFzaz17aXNUYXNrfT5cbiAgICAgICAgICAgICAge2dldENvbnRleHRNZW50aW9uSWNvbih0eXBlLCBNRU5USU9OX0NISVBfQ09MT1JTW3R5cGVdLmZnLCBpZCwgaWNvblNpemUpfVxuICAgICAgICAgICAgPC9TQ0lubGluZU1lbnRpb25JY29uPlxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgd2hpdGVTcGFjZTogJ25vd3JhcCcgfX0+e2ZpcnN0V29yZH08L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtyZXN0ID8gPHNwYW4+e3Jlc3R9PC9zcGFuPiA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICB7IXNob3dJY29uID8gbm9ybWFsaXplZExhYmVsIDogbnVsbH1cbiAgICA8L1NDSW5saW5lTWVudGlvbj5cbiAgKVxufVxuXG4vKipcbiAqIFNwbGl0ZWEgZWwgdGV4dG8gcG9yIG1hcmtlcnMgeSBkZXZ1ZWx2ZSB1biBhcnJheSBkZSBSZWFjdE5vZGVzOlxuICogdGV4dG8gcGxhbm8gKyBzcGFucyBlc3RpbGFkb3MgcGFyYSBjYWRhIG1lbnRpb24uIFJlbmRlcml6YSBkaXJlY3RhbWVudGVcbiAqIHNpbiBwYXNhciBwb3IgU3RyZWFtZG93biAobm8gc29wb3J0YSBtYXJrZG93biBlbiBlc3RlIG1vZG8pLlxuICovXG5leHBvcnQgY29uc3QgcmVuZGVyVGV4dFdpdGhNZW50aW9ucyA9ICh0ZXh0OiBzdHJpbmcpOiBBcnJheTxzdHJpbmcgfCBSZWFjdEVsZW1lbnQ+ID0+IHtcbiAgaWYgKCF0ZXh0KSByZXR1cm4gW3RleHRdXG4gIGNvbnN0IG91dDogQXJyYXk8c3RyaW5nIHwgUmVhY3RFbGVtZW50PiA9IFtdXG4gIGxldCBsYXN0SWR4ID0gMFxuICBNRU5USU9OX01BUktFUl9SRUdFWC5sYXN0SW5kZXggPSAwXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IE1FTlRJT05fTUFSS0VSX1JFR0VYLmV4ZWModGV4dClcbiAgbGV0IGtleUlkeCA9IDBcbiAgd2hpbGUgKG1hdGNoKSB7XG4gICAgaWYgKG1hdGNoLmluZGV4ID4gbGFzdElkeCkgb3V0LnB1c2godGV4dC5zbGljZShsYXN0SWR4LCBtYXRjaC5pbmRleCkpXG4gICAgY29uc3QgWywgcmF3VHlwZSwgaWQsIGxhYmVsXSA9IG1hdGNoXG4gICAgY29uc3QgdHlwZSA9IEFMTE9XRURfVFlQRVMuaW5jbHVkZXMocmF3VHlwZSBhcyBDb250ZXh0RW50aXR5VHlwZSkgPyAocmF3VHlwZSBhcyBDb250ZXh0RW50aXR5VHlwZSkgOiAndXNlcidcblxuICAgIG91dC5wdXNoKDxNZW50aW9uQ2hpcCBrZXk9e2BtZW50aW9uLSR7a2V5SWR4fS0ke21hdGNoLmluZGV4fWB9IHR5cGU9e3R5cGV9IGlkPXtpZH0gbGFiZWw9e2xhYmVsfSAvPilcblxuICAgIGxhc3RJZHggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aFxuICAgIGtleUlkeCArPSAxXG4gICAgbWF0Y2ggPSBNRU5USU9OX01BUktFUl9SRUdFWC5leGVjKHRleHQpXG4gIH1cbiAgaWYgKGxhc3RJZHggPCB0ZXh0Lmxlbmd0aCkgb3V0LnB1c2godGV4dC5zbGljZShsYXN0SWR4KSlcbiAgcmV0dXJuIG91dFxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBT0EsTUFBTSxJQUFJQyxHQUFHLFFBQVEsbUJBQW1CO0FBQy9DLFNBQTRDQywwQkFBMEIsUUFBUSx5QkFBeUI7QUFDdkcsU0FDRUMsbUJBQW1CLEVBQ25CQyw4QkFBOEIsUUFDekIsa0VBQWtFO0FBQ3pFLFNBQVNDLGdCQUFnQixRQUFRLGtCQUFrQjtBQUNuRCxTQUFTQyxVQUFVLFFBQVEsa0RBQWtEO0FBQzdFLFNBQVNDLHFCQUFxQixRQUFRLHVCQUF1QjtBQUM3RCxTQUFTQyw0QkFBNEIsUUFBUSx1QkFBdUI7QUFDcEUsU0FBU0Msa0JBQWtCLFFBQVEsc0JBQXNCOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUE7QUFJQSxPQUFPLElBQU1DLG9CQUFvQixHQUFHLHVFQUF1RTtBQUMzRyxPQUFPLElBQU1DLHFCQUFxQixHQUFHLGlCQUFpQjtBQUN0RCxJQUFNQywrQkFBK0IsR0FBRyxzQkFBc0I7QUFFOUQsSUFBTUMsYUFBa0MsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7QUFFdkYsSUFBTUMsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSUMsSUFBWSxFQUE4QztFQUMxRixJQUFNQyxJQUFJLEdBQUdELElBQUksQ0FBQ0UsS0FBSyxDQUFDTixxQkFBcUIsQ0FBQ08sTUFBTSxDQUFDO0VBQ3JELElBQU1DLFFBQVEsR0FBR0gsSUFBSSxDQUFDSSxPQUFPLENBQUMsR0FBRyxDQUFDO0VBQ2xDLElBQU1DLE9BQU8sR0FBR0YsUUFBUSxJQUFJLENBQUMsR0FBR0gsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxFQUFFRSxRQUFRLENBQUMsR0FBR0gsSUFBSTtFQUM5RCxJQUFNTSxLQUFLLEdBQUdILFFBQVEsSUFBSSxDQUFDLEdBQUdILElBQUksQ0FBQ0MsS0FBSyxDQUFDRSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRTtFQUMzRCxJQUFJSSxFQUFFLEdBQUcsRUFBRTtFQUNYLElBQUk7SUFDRkEsRUFBRSxHQUFHRCxLQUFLLEdBQUdFLGtCQUFrQixDQUFDRixLQUFLLENBQUMsR0FBRyxFQUFFO0VBQzdDLENBQUMsQ0FBQyxPQUFBRyxPQUFBLEVBQU07SUFDTkYsRUFBRSxHQUFHRCxLQUFLO0VBQ1o7RUFDQSxJQUFNSSxJQUFJLEdBQUdiLGFBQWEsQ0FBQ2MsUUFBUSxDQUFDTixPQUE0QixDQUFDLEdBQUlBLE9BQU8sR0FBeUIsTUFBTTtFQUMzRyxPQUFPO0lBQUVLLElBQUksRUFBSkEsSUFBSTtJQUFFSCxFQUFFLEVBQUZBO0VBQUcsQ0FBQztBQUNyQixDQUFDOztBQUVEO0FBQ0EsT0FBTyxJQUFNSyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFJQyxPQUF1QjtFQUFBLG9CQUFBQyxNQUFBLENBQ3pDRCxPQUFPLENBQUNILElBQUksT0FBQUksTUFBQSxDQUFJRCxPQUFPLENBQUNOLEVBQUUsT0FBQU8sTUFBQSxDQUFJRCxPQUFPLENBQUNFLEtBQUs7QUFBQSxDQUFJOztBQUU5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUMsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FBSUMsSUFBWSxFQUFhO0VBQy9ELElBQUksQ0FBQ0EsSUFBSSxFQUFFLE9BQU9BLElBQUk7RUFDdEIsT0FBT0EsSUFBSSxDQUFDQyxPQUFPLENBQUN4QixvQkFBb0IsRUFBRSxVQUFDeUIsRUFBRSxFQUFFVCxJQUFJLEVBQUVILEVBQUUsRUFBRVEsS0FBSyxFQUFLO0lBQ2pFLElBQU1LLFNBQVMsR0FBR0MsTUFBTSxDQUFDTixLQUFLLENBQUMsQ0FBQ0csT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDMUQsV0FBQUosTUFBQSxDQUFXTSxTQUFTLFFBQUFOLE1BQUEsQ0FBS25CLHFCQUFxQixFQUFBbUIsTUFBQSxDQUFHSixJQUFJLE9BQUFJLE1BQUEsQ0FBSVEsa0JBQWtCLENBQUNELE1BQU0sQ0FBQ2QsRUFBRSxDQUFDLENBQUM7RUFDekYsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELElBQU1nQixzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJQyxRQUFtQixFQUFhO0VBQzlELElBQUksT0FBT0EsUUFBUSxLQUFLLFFBQVEsRUFBRSxPQUFPdEMsNEJBQTRCLENBQUNzQyxRQUFRLENBQUM7RUFDL0UsSUFBSUEsUUFBUSxJQUFJLElBQUksSUFBSUEsUUFBUSxLQUFLLEtBQUssRUFBRSxPQUFPLEVBQUU7RUFDckQsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNGLFFBQVEsQ0FBQyxFQUFFO0lBQzNCLE9BQU90Qyw0QkFBNEIsQ0FBQ3NDLFFBQVEsQ0FBQ0csR0FBRyxDQUFDLFVBQUFDLENBQUM7TUFBQSxPQUFLLE9BQU9BLENBQUMsS0FBSyxRQUFRLEdBQUdBLENBQUMsR0FBRyxFQUFFO0lBQUEsQ0FBQyxDQUFDLENBQUNDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUNuRztFQUNBLE9BQU8zQyw0QkFBNEIsQ0FBQ21DLE1BQU0sQ0FBQ0csUUFBUSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELElBQU1NLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlmLEtBQWEsRUFBMEM7RUFDbEYsSUFBTWdCLFVBQVUsR0FBRzdDLDRCQUE0QixDQUFDNkIsS0FBSyxDQUFDLENBQUNpQixJQUFJLENBQUMsQ0FBQztFQUM3RCxJQUFJLENBQUNELFVBQVUsRUFBRSxPQUFPO0lBQUVFLFNBQVMsRUFBRSxFQUFFO0lBQUVqQyxJQUFJLEVBQUU7RUFBRyxDQUFDO0VBQ25ELElBQU1rQyxrQkFBa0IsR0FBR0gsVUFBVSxDQUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDO0VBQ2xELElBQUlELGtCQUFrQixHQUFHLENBQUMsRUFBRSxPQUFPO0lBQUVELFNBQVMsRUFBRUYsVUFBVTtJQUFFL0IsSUFBSSxFQUFFO0VBQUcsQ0FBQztFQUN0RSxPQUFPO0lBQ0xpQyxTQUFTLEVBQUVGLFVBQVUsQ0FBQzlCLEtBQUssQ0FBQyxDQUFDLEVBQUVpQyxrQkFBa0IsQ0FBQztJQUNsRGxDLElBQUksRUFBRStCLFVBQVUsQ0FBQzlCLEtBQUssQ0FBQ2lDLGtCQUFrQjtFQUMzQyxDQUFDO0FBQ0gsQ0FBQztBQUVELElBQU1FLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUkxQixJQUF1QixFQUFFMkIsV0FBcUIsRUFBSztFQUNoRixJQUFNQyxFQUFFLEdBQUc1QixJQUFJLEtBQUssU0FBUyxHQUFHM0IsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUdELDhCQUE4QjtFQUN0RixPQUFPSCxHQUFHLG9DQUNNMkQsRUFBRSxFQUNMRCxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFFckMsQ0FBQzs7QUFFRDtBQUNBLElBQU1FLGVBQWUsR0FBRzdELE1BQU0sQ0FBQzhELElBQUksQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSx3VkFTbkIsVUFBQUMsSUFBQTtFQUFBLElBQUFDLHFCQUFBO0VBQUEsSUFBR0MsS0FBSyxHQUFBRixJQUFBLENBQUxFLEtBQUs7RUFBQSxPQUFPLEVBQUFELHFCQUFBLEdBQUNoRSxtQkFBbUIsQ0FBQ2lFLEtBQUssQ0FBQyxjQUFBRCxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJaEUsbUJBQW1CLENBQUNrRSxJQUFJLEVBQUVULEVBQUU7QUFBQSxHQUMvRSxVQUFBVSxLQUFBO0VBQUEsSUFBQUMsc0JBQUE7RUFBQSxJQUFHSCxLQUFLLEdBQUFFLEtBQUEsQ0FBTEYsS0FBSztFQUFBLE9BQU8sRUFBQUcsc0JBQUEsR0FBQ3BFLG1CQUFtQixDQUFDaUUsS0FBSyxDQUFDLGNBQUFHLHNCQUFBLGNBQUFBLHNCQUFBLEdBQUlwRSxtQkFBbUIsQ0FBQ2tFLElBQUksRUFBRUcsRUFBRTtBQUFBLEdBSXpFLFVBQUFDLEtBQUE7RUFBQSxJQUFHQyxZQUFZLEdBQUFELEtBQUEsQ0FBWkMsWUFBWTtFQUFBLE9BQVFBLFlBQVksR0FBRyxTQUFTLEdBQUcsU0FBUztBQUFBLENBQUMsRUFLbEUsVUFBQUMsS0FBQTtFQUFBLElBQUdQLEtBQUssR0FBQU8sS0FBQSxDQUFMUCxLQUFLO0lBQUVNLFlBQVksR0FBQUMsS0FBQSxDQUFaRCxZQUFZO0VBQUEsT0FBT2hCLHFCQUFxQixDQUFDVSxLQUFLLEVBQUVNLFlBQVksQ0FBQztBQUFBLEVBRTVFO0FBRUQsSUFBTUUsbUJBQW1CLEdBQUc1RSxNQUFNLENBQUM4RCxJQUFJLENBQUFDLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEsMEdBSzVCLFVBQUFZLEtBQUE7RUFBQSxJQUFHQyxLQUFLLEdBQUFELEtBQUEsQ0FBTEMsS0FBSztFQUFBLE9BQVFBLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTTtBQUFBLENBQUMsRUFDdkMsVUFBQUMsS0FBQTtFQUFBLElBQUdELEtBQUssR0FBQUMsS0FBQSxDQUFMRCxLQUFLO0VBQUEsT0FBUUEsS0FBSyxHQUFHLE1BQU0sR0FBRyxNQUFNO0FBQUEsQ0FBQyxDQUNuRDs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUUsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSTNELElBQXdCLEVBQUV5QixRQUFtQixFQUF1QjtFQUNwRyxJQUFJLENBQUN6QixJQUFJLElBQUksQ0FBQ0EsSUFBSSxDQUFDNEQsVUFBVSxDQUFDaEUscUJBQXFCLENBQUMsRUFBRSxPQUFPLElBQUk7RUFDakUsSUFBQWlFLHFCQUFBLEdBQXFCOUQsd0JBQXdCLENBQUNDLElBQUksQ0FBQztJQUEzQ1csSUFBSSxHQUFBa0QscUJBQUEsQ0FBSmxELElBQUk7SUFBRUgsRUFBRSxHQUFBcUQscUJBQUEsQ0FBRnJELEVBQUU7RUFDaEIsSUFBTVEsS0FBSyxHQUFHUSxzQkFBc0IsQ0FBQ0MsUUFBUSxDQUFDO0VBQzlDLElBQU1xQyxNQUFNLEdBQUduRCxJQUFJLEtBQUssTUFBTTtFQUM5QixJQUFNb0QsUUFBUSxHQUFHRCxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUU7RUFDakMsSUFBTUUsT0FBTyxhQUFBakQsTUFBQSxDQUFhUCxFQUFFLFlBQVM7RUFFckMsSUFBTXlELGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSUMsQ0FBZ0MsRUFBSztJQUM1RCxJQUFJQSxDQUFDLENBQUNDLE9BQU8sSUFBSUQsQ0FBQyxDQUFDRSxPQUFPLEVBQUU7SUFDNUJGLENBQUMsQ0FBQ0csY0FBYyxDQUFDLENBQUM7SUFDbEJILENBQUMsQ0FBQ0ksZUFBZSxDQUFDLENBQUM7SUFDbkJsRixrQkFBa0IsQ0FBQ29CLEVBQUUsRUFBRSxRQUFRLENBQUM7RUFDbEMsQ0FBQztFQUVELElBQU0rRCxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJTCxDQUFtQyxFQUFLO0lBQ2pFLElBQUlBLENBQUMsQ0FBQ00sR0FBRyxLQUFLLE9BQU8sSUFBSU4sQ0FBQyxDQUFDTSxHQUFHLEtBQUssR0FBRyxFQUFFO0lBQ3hDTixDQUFDLENBQUNHLGNBQWMsQ0FBQyxDQUFDO0lBQ2xCakYsa0JBQWtCLENBQUNvQixFQUFFLEVBQUUsUUFBUSxDQUFDO0VBQ2xDLENBQUM7RUFFRCxJQUFJc0QsTUFBTSxFQUFFO0lBQ1Ysb0JBQ0V4RSxJQUFBLENBQUNMLFVBQVU7TUFDVGUsSUFBSSxFQUFFZ0UsT0FBUTtNQUNkUyxTQUFTLEVBQUU1RiwwQkFBMkI7TUFDdEMscUJBQW1COEIsSUFBSztNQUN4Qix3QkFBcUIsTUFBTTtNQUMzQitELE9BQU8sRUFBRVQsZUFBZ0I7TUFDekJVLFNBQVMsRUFBRUosaUJBQWtCO01BQUE5QyxRQUFBLEVBRTVCVDtJQUFLLENBQ0ksQ0FBQztFQUVqQjtFQUVBLElBQU00RCxTQUFTLEdBQUdqRSxJQUFJLEtBQUssU0FBUztFQUNwQyxJQUFNa0UsVUFBVSxHQUFHRCxTQUFTLGVBQUE3RCxNQUFBLENBQWVQLEVBQUUsa0JBQWUsSUFBSTtFQUNoRSxJQUFNc0UsUUFBUSxHQUFHLENBQUNGLFNBQVM7RUFDM0IsSUFBQUcsb0JBQUEsR0FBNEJoRCxtQkFBbUIsQ0FBQ2YsS0FBSyxDQUFDO0lBQTlDa0IsU0FBUyxHQUFBNkMsb0JBQUEsQ0FBVDdDLFNBQVM7SUFBRWpDLElBQUksR0FBQThFLG9CQUFBLENBQUo5RSxJQUFJO0VBRXZCLElBQU0rRSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJZCxDQUE4QixFQUFLO0lBQzdELElBQUksQ0FBQ1csVUFBVSxFQUFFO0lBQ2pCWCxDQUFDLENBQUNHLGNBQWMsQ0FBQyxDQUFDO0lBQ2xCSCxDQUFDLENBQUNJLGVBQWUsQ0FBQyxDQUFDO0lBQ25CVyxNQUFNLENBQUNDLElBQUksQ0FBQ0wsVUFBVSxFQUFFLFFBQVEsQ0FBQztFQUNuQyxDQUFDO0VBRUQsb0JBQ0VyRixLQUFBLENBQUNnRCxlQUFlO0lBQ2RPLEtBQUssRUFBRXBDLElBQUs7SUFDWjBDLFlBQVksRUFBRXVCLFNBQVU7SUFDeEJILFNBQVMsRUFBRTVGLDBCQUEyQjtJQUN0QyxxQkFBbUI4QixJQUFLO0lBQ3hCLHdCQUFxQixNQUFNO0lBQzNCK0QsT0FBTyxFQUFFRSxTQUFTLEdBQUdJLGtCQUFrQixHQUFHRyxTQUFVO0lBQ3BEQyxJQUFJLEVBQUVSLFNBQVMsR0FBRyxRQUFRLEdBQUdPLFNBQVU7SUFDdkNFLFFBQVEsRUFBRVQsU0FBUyxHQUFHLENBQUMsR0FBR08sU0FBVTtJQUFBMUQsUUFBQSxHQUVuQ3FELFFBQVEsZ0JBQ1B0RixLQUFBLENBQUFFLFNBQUE7TUFBQStCLFFBQUEsZ0JBQ0VqQyxLQUFBO1FBQU04RixLQUFLLEVBQUU7VUFBRUMsT0FBTyxFQUFFLGFBQWE7VUFBRUMsVUFBVSxFQUFFLFFBQVE7VUFBRUMsVUFBVSxFQUFFLFFBQVE7VUFBRUMsUUFBUSxFQUFFO1FBQU8sQ0FBRTtRQUFBakUsUUFBQSxnQkFDcEduQyxJQUFBLENBQUNpRSxtQkFBbUI7VUFBQ0UsS0FBSyxFQUFFSyxNQUFPO1VBQUFyQyxRQUFBLEVBQ2hDdkMscUJBQXFCLENBQUN5QixJQUFJLEVBQUU3QixtQkFBbUIsQ0FBQzZCLElBQUksQ0FBQyxDQUFDd0MsRUFBRSxFQUFFM0MsRUFBRSxFQUFFdUQsUUFBUTtRQUFDLENBQ3JELENBQUMsZUFDdEJ6RSxJQUFBO1VBQU1nRyxLQUFLLEVBQUU7WUFBRUcsVUFBVSxFQUFFO1VBQVMsQ0FBRTtVQUFBaEUsUUFBQSxFQUFFUztRQUFTLENBQU8sQ0FBQztNQUFBLENBQ3JELENBQUMsRUFDTmpDLElBQUksZ0JBQUdYLElBQUE7UUFBQW1DLFFBQUEsRUFBT3hCO01BQUksQ0FBTyxDQUFDLEdBQUcsSUFBSTtJQUFBLENBQ2xDLENBQUMsR0FDRCxJQUFJLEVBQ1AsQ0FBQzZFLFFBQVEsR0FBRzlELEtBQUssR0FBRyxJQUFJO0VBQUEsQ0FDVixDQUFDO0FBRXRCLENBQUM7O0FBRUQ7QUFDQSxPQUFPLElBQU0yRSxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJekUsSUFBWTtFQUFBLE9BQzlDQSxJQUFJLENBQUNDLE9BQU8sQ0FBQ3hCLG9CQUFvQixFQUFFLFVBQUN5QixFQUFFLEVBQUV3RSxLQUFLLEVBQUVDLEdBQUcsRUFBRTdFLEtBQUs7SUFBQSxPQUFLN0IsNEJBQTRCLENBQUNtQyxNQUFNLENBQUNOLEtBQUssQ0FBQyxDQUFDO0VBQUEsRUFBQztBQUFBOztBQUU1RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNOEUsMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUEyQkEsQ0FBSTVFLElBQStCLEVBQWE7RUFDdEYsSUFBSUEsSUFBSSxJQUFJLElBQUksSUFBSUEsSUFBSSxLQUFLLEVBQUUsRUFBRSxPQUFPQSxJQUFJLGFBQUpBLElBQUksY0FBSkEsSUFBSSxHQUFJLEVBQUU7RUFDbEQsSUFBTTZFLHNCQUFzQixHQUFHN0UsSUFBSSxDQUFDQyxPQUFPLENBQUN4QixvQkFBb0IsRUFBRSxVQUFDeUIsRUFBRSxFQUFFd0UsS0FBSyxFQUFFQyxHQUFHLEVBQUU3RSxLQUFLO0lBQUEsT0FDdEY3Qiw0QkFBNEIsQ0FBQ21DLE1BQU0sQ0FBQ04sS0FBSyxDQUFDLENBQUNpQixJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQUEsQ0FDcEQsQ0FBQztFQUNELE9BQU84RCxzQkFBc0IsQ0FBQzVFLE9BQU8sQ0FBQ3RCLCtCQUErQixFQUFFLEVBQUUsQ0FBQyxDQUFDb0MsSUFBSSxDQUFDLENBQUM7QUFDbkYsQ0FBQzs7QUFFRDtBQUNBLElBQU0rRCxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUlyRixJQUF1QixFQUFFSCxFQUFtQixFQUFvQjtFQUNyRixRQUFRRyxJQUFJO0lBQ1YsS0FBSyxRQUFRO01BQ1gsbUJBQUFJLE1BQUEsQ0FBbUJQLEVBQUU7SUFDdkIsS0FBSyxTQUFTO01BQ1osbUJBQUFPLE1BQUEsQ0FBbUJQLEVBQUU7SUFDdkIsS0FBSyxNQUFNO01BQ1QsaUJBQUFPLE1BQUEsQ0FBaUJQLEVBQUU7SUFDckIsS0FBSyxNQUFNO01BQ1QsT0FBTyxJQUFJO0lBQUM7SUFDZCxLQUFLLEtBQUs7TUFDUixPQUFPLElBQUk7SUFDYjtNQUNFLE9BQU8sSUFBSTtFQUNmO0FBQ0YsQ0FBQztBQUVELElBQU15RixXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBQUMsS0FBQSxFQUFvRjtFQUFBLElBQTlFdkYsSUFBSSxHQUFBdUYsS0FBQSxDQUFKdkYsSUFBSTtJQUFFSCxFQUFFLEdBQUEwRixLQUFBLENBQUYxRixFQUFFO0lBQUVRLEtBQUssR0FBQWtGLEtBQUEsQ0FBTGxGLEtBQUs7RUFDcEMsSUFBTW1GLGVBQWUsR0FBR2hILDRCQUE0QixDQUFDNkIsS0FBSyxDQUFDO0VBQzNELElBQU1vRixHQUFHLEdBQUdKLGFBQWEsQ0FBQ3JGLElBQUksRUFBRUgsRUFBRSxDQUFDO0VBQ25DLElBQU04QixXQUFXLEdBQUcsQ0FBQyxDQUFDOEQsR0FBRztFQUN6QixJQUFNdEMsTUFBTSxHQUFHbkQsSUFBSSxLQUFLLE1BQU07RUFDOUIsSUFBTWlFLFNBQVMsR0FBR2pFLElBQUksS0FBSyxTQUFTO0VBQ3BDLElBQU1tRSxRQUFRLEdBQUcsQ0FBQ0YsU0FBUztFQUMzQixJQUFNYixRQUFRLEdBQUdELE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRTtFQUNqQyxJQUFBdUMscUJBQUEsR0FBNEJ0RSxtQkFBbUIsQ0FBQ29FLGVBQWUsQ0FBQztJQUF4RGpFLFNBQVMsR0FBQW1FLHFCQUFBLENBQVRuRSxTQUFTO0lBQUVqQyxJQUFJLEdBQUFvRyxxQkFBQSxDQUFKcEcsSUFBSTtFQUV2QixJQUFNcUcsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUlwQyxDQUFrRCxFQUFLO0lBQzFFLElBQUksQ0FBQzVCLFdBQVcsSUFBSSxDQUFDOEQsR0FBRyxFQUFFO0lBQzFCLElBQUl6RixJQUFJLEtBQUssTUFBTSxFQUFFO01BQ25CLElBQUl1RCxDQUFDLENBQUNDLE9BQU8sSUFBSUQsQ0FBQyxDQUFDRSxPQUFPLEVBQUU7TUFDNUJGLENBQUMsQ0FBQ0csY0FBYyxDQUFDLENBQUM7TUFDbEJILENBQUMsQ0FBQ0ksZUFBZSxDQUFDLENBQUM7TUFDbkJsRixrQkFBa0IsQ0FBQ29CLEVBQUUsRUFBRSxRQUFRLENBQUM7TUFDaEM7SUFDRjtJQUNBMEQsQ0FBQyxDQUFDRyxjQUFjLENBQUMsQ0FBQztJQUNsQlksTUFBTSxDQUFDQyxJQUFJLENBQUNrQixHQUFHLEVBQUUsUUFBUSxDQUFDO0VBQzVCLENBQUM7RUFFRCxJQUFNRyxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUlyQyxDQUFxRCxFQUFLO0lBQy9FLElBQUksQ0FBQzVCLFdBQVcsSUFBSTNCLElBQUksS0FBSyxNQUFNLEVBQUU7SUFDckMsSUFBSXVELENBQUMsQ0FBQ00sR0FBRyxLQUFLLE9BQU8sSUFBSU4sQ0FBQyxDQUFDTSxHQUFHLEtBQUssR0FBRyxFQUFFO0lBQ3hDTixDQUFDLENBQUNHLGNBQWMsQ0FBQyxDQUFDO0lBQ2xCakYsa0JBQWtCLENBQUNvQixFQUFFLEVBQUUsUUFBUSxDQUFDO0VBQ2xDLENBQUM7RUFFRCxJQUFJRyxJQUFJLEtBQUssTUFBTSxFQUFFO0lBQ25CLG9CQUNFckIsSUFBQSxDQUFDTCxVQUFVO01BQ1RlLElBQUksRUFBRW9HLEdBQUcsYUFBSEEsR0FBRyxjQUFIQSxHQUFHLEdBQUksR0FBSTtNQUNqQjNCLFNBQVMsRUFBRTVGLDBCQUEyQjtNQUN0QyxxQkFBa0IsTUFBTTtNQUN4Qix3QkFBcUIsTUFBTTtNQUMzQjZGLE9BQU8sRUFBRTRCLFdBQVk7TUFDckIzQixTQUFTLEVBQUU0QixhQUFjO01BQUE5RSxRQUFBLEVBRXhCMEU7SUFBZSxDQUNOLENBQUM7RUFFakI7RUFFQSxvQkFDRTNHLEtBQUEsQ0FBQ2dELGVBQWU7SUFDZE8sS0FBSyxFQUFFcEMsSUFBSztJQUNaMEMsWUFBWSxFQUFFZixXQUFZO0lBQzFCbUMsU0FBUyxFQUFFNUYsMEJBQTJCO0lBQ3RDLHFCQUFtQjhCLElBQUs7SUFDeEIsd0JBQXFCLE1BQU07SUFDM0IrRCxPQUFPLEVBQUVwQyxXQUFXLEdBQUdnRSxXQUFXLEdBQUduQixTQUFVO0lBQy9DQyxJQUFJLEVBQUU5QyxXQUFXLEdBQUcsUUFBUSxHQUFHNkMsU0FBVTtJQUN6Q0UsUUFBUSxFQUFFL0MsV0FBVyxHQUFHLENBQUMsR0FBRzZDLFNBQVU7SUFBQTFELFFBQUEsR0FFckNxRCxRQUFRLGdCQUNQdEYsS0FBQSxDQUFBRSxTQUFBO01BQUErQixRQUFBLGdCQUNFakMsS0FBQTtRQUFNOEYsS0FBSyxFQUFFO1VBQUVDLE9BQU8sRUFBRSxhQUFhO1VBQUVDLFVBQVUsRUFBRSxRQUFRO1VBQUVDLFVBQVUsRUFBRSxRQUFRO1VBQUVDLFFBQVEsRUFBRTtRQUFPLENBQUU7UUFBQWpFLFFBQUEsZ0JBQ3BHbkMsSUFBQSxDQUFDaUUsbUJBQW1CO1VBQUNFLEtBQUssRUFBRUssTUFBTztVQUFBckMsUUFBQSxFQUNoQ3ZDLHFCQUFxQixDQUFDeUIsSUFBSSxFQUFFN0IsbUJBQW1CLENBQUM2QixJQUFJLENBQUMsQ0FBQ3dDLEVBQUUsRUFBRTNDLEVBQUUsRUFBRXVELFFBQVE7UUFBQyxDQUNyRCxDQUFDLGVBQ3RCekUsSUFBQTtVQUFNZ0csS0FBSyxFQUFFO1lBQUVHLFVBQVUsRUFBRTtVQUFTLENBQUU7VUFBQWhFLFFBQUEsRUFBRVM7UUFBUyxDQUFPLENBQUM7TUFBQSxDQUNyRCxDQUFDLEVBQ05qQyxJQUFJLGdCQUFHWCxJQUFBO1FBQUFtQyxRQUFBLEVBQU94QjtNQUFJLENBQU8sQ0FBQyxHQUFHLElBQUk7SUFBQSxDQUNsQyxDQUFDLEdBQ0QsSUFBSSxFQUNQLENBQUM2RSxRQUFRLEdBQUdxQixlQUFlLEdBQUcsSUFBSTtFQUFBLENBQ3BCLENBQUM7QUFFdEIsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNSyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJdEYsSUFBWSxFQUFtQztFQUNwRixJQUFJLENBQUNBLElBQUksRUFBRSxPQUFPLENBQUNBLElBQUksQ0FBQztFQUN4QixJQUFNdUYsR0FBaUMsR0FBRyxFQUFFO0VBQzVDLElBQUlDLE9BQU8sR0FBRyxDQUFDO0VBQ2YvRyxvQkFBb0IsQ0FBQ2dILFNBQVMsR0FBRyxDQUFDO0VBQ2xDLElBQUlDLEtBQTZCLEdBQUdqSCxvQkFBb0IsQ0FBQ2tILElBQUksQ0FBQzNGLElBQUksQ0FBQztFQUNuRSxJQUFJNEYsTUFBTSxHQUFHLENBQUM7RUFDZCxPQUFPRixLQUFLLEVBQUU7SUFDWixJQUFJQSxLQUFLLENBQUNHLEtBQUssR0FBR0wsT0FBTyxFQUFFRCxHQUFHLENBQUNPLElBQUksQ0FBQzlGLElBQUksQ0FBQ2hCLEtBQUssQ0FBQ3dHLE9BQU8sRUFBRUUsS0FBSyxDQUFDRyxLQUFLLENBQUMsQ0FBQztJQUNyRSxJQUFBRSxNQUFBLEdBQStCTCxLQUFLO01BQUFNLE9BQUEsR0FBQUMsY0FBQSxDQUFBRixNQUFBO01BQTNCM0csT0FBTyxHQUFBNEcsT0FBQTtNQUFFMUcsRUFBRSxHQUFBMEcsT0FBQTtNQUFFbEcsS0FBSyxHQUFBa0csT0FBQTtJQUMzQixJQUFNdkcsSUFBSSxHQUFHYixhQUFhLENBQUNjLFFBQVEsQ0FBQ04sT0FBNEIsQ0FBQyxHQUFJQSxPQUFPLEdBQXlCLE1BQU07SUFFM0dtRyxHQUFHLENBQUNPLElBQUksY0FBQzFILElBQUEsQ0FBQzJHLFdBQVc7TUFBMEN0RixJQUFJLEVBQUVBLElBQUs7TUFBQ0gsRUFBRSxFQUFFQSxFQUFHO01BQUNRLEtBQUssRUFBRUE7SUFBTSxjQUFBRCxNQUFBLENBQTFEK0YsTUFBTSxPQUFBL0YsTUFBQSxDQUFJNkYsS0FBSyxDQUFDRyxLQUFLLENBQXVDLENBQUMsQ0FBQztJQUVwR0wsT0FBTyxHQUFHRSxLQUFLLENBQUNHLEtBQUssR0FBR0gsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDekcsTUFBTTtJQUN2QzJHLE1BQU0sSUFBSSxDQUFDO0lBQ1hGLEtBQUssR0FBR2pILG9CQUFvQixDQUFDa0gsSUFBSSxDQUFDM0YsSUFBSSxDQUFDO0VBQ3pDO0VBQ0EsSUFBSXdGLE9BQU8sR0FBR3hGLElBQUksQ0FBQ2YsTUFBTSxFQUFFc0csR0FBRyxDQUFDTyxJQUFJLENBQUM5RixJQUFJLENBQUNoQixLQUFLLENBQUN3RyxPQUFPLENBQUMsQ0FBQztFQUN4RCxPQUFPRCxHQUFHO0FBQ1osQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|