@agilemotion/oui-react-js 2.0.20 → 2.0.22
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/InteractionPortalAppHome.js +18 -2
- package/dist/components/DataGrid.js +48 -7
- package/dist/components/dashboard/FoldingSideTabDashboard.js +5 -6
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.css +1 -2
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +133 -13
- package/dist/components/form/CurrencyField.js +121 -37
- package/dist/components/form/Form.js +12 -10
- package/dist/components/form/TextField.js +2 -1
- package/dist/components/media/MediaSoupHelper.js +24 -2
- package/dist/components/media/VCRoomParticipant.js +52 -17
- package/dist/event/Observable.js +3 -4
- package/dist/view/PortalDashboard.js +219 -6
- package/package.json +1 -1
- package/dist/components/dashboard/FoldingSideTabDashboard.bck.js +0 -333
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.bck.js +0 -316
|
@@ -10,10 +10,12 @@ var _Utils = _interopRequireDefault(require("../../../../../Utils"));
|
|
|
10
10
|
var _ApplicationManager = _interopRequireDefault(require("../../../../../ApplicationManager"));
|
|
11
11
|
var _MenuLink = _interopRequireDefault(require("../../../../menu/MenuLink"));
|
|
12
12
|
var _material = require("@mui/material");
|
|
13
|
+
var _styles = require("@mui/material/styles");
|
|
13
14
|
var _RestUtils = require("../../../../../RestUtils");
|
|
14
15
|
require("./FoldingTabSidebar.css");
|
|
15
16
|
var _CardAvatar = _interopRequireDefault(require("../../../../card/CardAvatar"));
|
|
16
17
|
var _MoreHoriz = _interopRequireDefault(require("@mui/icons-material/MoreHoriz"));
|
|
18
|
+
var _Home = _interopRequireDefault(require("@mui/icons-material/Home"));
|
|
17
19
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
20
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
19
21
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -21,6 +23,9 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
21
23
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
22
24
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* eslint-disable */
|
|
23
25
|
const TAB = 16;
|
|
26
|
+
// Shared icon-column width (px) so icons left-align and text starts at the same
|
|
27
|
+
// x for every item (home button + routes), regardless of icon size or absence.
|
|
28
|
+
const ICON_COL = 36;
|
|
24
29
|
function FoldingTabSidebar(props) {
|
|
25
30
|
const {
|
|
26
31
|
activeColor,
|
|
@@ -28,6 +33,7 @@ function FoldingTabSidebar(props) {
|
|
|
28
33
|
appLogoPath,
|
|
29
34
|
onOpenDrawer
|
|
30
35
|
} = props;
|
|
36
|
+
const theme = (0, _styles.useTheme)();
|
|
31
37
|
const [collapseStates, setCollapseStates] = _react.default.useState(getCollapseStates(props.routes));
|
|
32
38
|
const [isLoading, setIsLoading] = _react.default.useState(false);
|
|
33
39
|
const [error, setError] = _react.default.useState(false);
|
|
@@ -36,6 +42,9 @@ function FoldingTabSidebar(props) {
|
|
|
36
42
|
id: 'dashboard',
|
|
37
43
|
name: 'Dashboard'
|
|
38
44
|
});
|
|
45
|
+
// Home button is highlighted by default; selecting any route clears it,
|
|
46
|
+
// clicking the home button restores it.
|
|
47
|
+
const [homeSelected, setHomeSelected] = _react.default.useState(true);
|
|
39
48
|
|
|
40
49
|
/* ----------------- helpers (ported from class) ----------------- */
|
|
41
50
|
function getViews(menus, level) {
|
|
@@ -219,9 +228,9 @@ function FoldingTabSidebar(props) {
|
|
|
219
228
|
} : {})
|
|
220
229
|
}, iconNode && /*#__PURE__*/_react.default.createElement(_material.ListItemIcon, {
|
|
221
230
|
sx: {
|
|
222
|
-
minWidth: 0,
|
|
223
|
-
mr: open ?
|
|
224
|
-
justifyContent: 'center'
|
|
231
|
+
minWidth: open ? ICON_COL : 0,
|
|
232
|
+
mr: open ? 0 : 'auto',
|
|
233
|
+
justifyContent: open ? 'flex-start' : 'center'
|
|
225
234
|
}
|
|
226
235
|
}, iconNode), open ? /*#__PURE__*/_react.default.createElement(_material.ListItemText, {
|
|
227
236
|
primary: /*#__PURE__*/_react.default.createElement("span", null, prop.name, ' ', prop.collapse && /*#__PURE__*/_react.default.createElement("span", {
|
|
@@ -255,6 +264,7 @@ function FoldingTabSidebar(props) {
|
|
|
255
264
|
clickCallback: prop.name === 'Dashboard' ? item => {
|
|
256
265
|
props.dashboardLauncher && props.dashboardLauncher();
|
|
257
266
|
setActiveRouteMenu(item);
|
|
267
|
+
setHomeSelected(false);
|
|
258
268
|
// Multi-viewport: dock (pin) any open window overlay so it stays visible
|
|
259
269
|
// alongside the newly-navigated main view instead of overlaying it.
|
|
260
270
|
if (_ApplicationManager.default.isWindowOpen()) {
|
|
@@ -264,6 +274,7 @@ function FoldingTabSidebar(props) {
|
|
|
264
274
|
}
|
|
265
275
|
} : item => {
|
|
266
276
|
setActiveRouteMenu(item);
|
|
277
|
+
setHomeSelected(false);
|
|
267
278
|
// Multi-viewport: dock (pin) any open window overlay (see above).
|
|
268
279
|
if (_ApplicationManager.default.isWindowOpen()) {
|
|
269
280
|
_ApplicationManager.default.updateContext({
|
|
@@ -296,9 +307,9 @@ function FoldingTabSidebar(props) {
|
|
|
296
307
|
} : {})
|
|
297
308
|
}, iconNode && /*#__PURE__*/_react.default.createElement(_material.ListItemIcon, {
|
|
298
309
|
sx: {
|
|
299
|
-
minWidth: 0,
|
|
300
|
-
mr: open ?
|
|
301
|
-
justifyContent: 'center',
|
|
310
|
+
minWidth: open ? ICON_COL : 0,
|
|
311
|
+
mr: open ? 0 : 'auto',
|
|
312
|
+
justifyContent: open ? 'flex-start' : 'center',
|
|
302
313
|
color: (prop.name === 'Dashboard' || prop.name === 'My Work Items') && isActive ? secondaryThemeColor : 'inherit'
|
|
303
314
|
}
|
|
304
315
|
}, iconNode), open ? /*#__PURE__*/_react.default.createElement(_material.ListItemText, {
|
|
@@ -362,11 +373,26 @@ function FoldingTabSidebar(props) {
|
|
|
362
373
|
className: "sidebar__brand",
|
|
363
374
|
onClick: props.closeSidebar,
|
|
364
375
|
"aria-label": "Home",
|
|
365
|
-
style: props.logoStyle
|
|
376
|
+
style: _objectSpread(_objectSpread({}, props.logoStyle || {}), {}, {
|
|
377
|
+
// Scale the logo to fit the rail (it gets cut in the mini
|
|
378
|
+
// drawer at a fixed width). Cap at the configured width when
|
|
379
|
+
// expanded, shrink to the rail when collapsed.
|
|
380
|
+
width: '100%',
|
|
381
|
+
maxWidth: props.logoStyle && props.logoStyle.width || '120px',
|
|
382
|
+
display: 'flex',
|
|
383
|
+
justifyContent: 'center',
|
|
384
|
+
alignItems: 'center',
|
|
385
|
+
overflow: 'hidden'
|
|
386
|
+
})
|
|
366
387
|
}, /*#__PURE__*/_react.default.createElement("img", {
|
|
367
388
|
src: logo.imgSrc,
|
|
368
389
|
alt: "logo",
|
|
369
|
-
className: "sidebar__brand-img"
|
|
390
|
+
className: "sidebar__brand-img",
|
|
391
|
+
style: {
|
|
392
|
+
maxWidth: '100%',
|
|
393
|
+
height: 'auto',
|
|
394
|
+
objectFit: 'contain'
|
|
395
|
+
}
|
|
370
396
|
}));
|
|
371
397
|
}
|
|
372
398
|
if (isLoading) {
|
|
@@ -382,6 +408,89 @@ function FoldingTabSidebar(props) {
|
|
|
382
408
|
if (!routesData) {
|
|
383
409
|
return null;
|
|
384
410
|
}
|
|
411
|
+
|
|
412
|
+
// color: 'primary' | 'secondary' | any CSS color (e.g. '#000000')
|
|
413
|
+
const resolveHighlightColor = c => {
|
|
414
|
+
if (_Utils.default.isNull(c) || c === 'primary') return theme.palette.primary.main;
|
|
415
|
+
if (c === 'secondary') return theme.palette.secondary.main;
|
|
416
|
+
return c;
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
// Optional home button, rendered at the very top of the sidebar. Fires
|
|
420
|
+
// homeButtonSettings.callback() on click (e.g. load the portal dashboard).
|
|
421
|
+
const renderHomeButton = () => {
|
|
422
|
+
const hb = props.homeButtonSettings;
|
|
423
|
+
if (_Utils.default.isNull(hb)) return null;
|
|
424
|
+
const highlight = resolveHighlightColor(hb.color);
|
|
425
|
+
|
|
426
|
+
// icon size from settings (number px or any CSS size, e.g. 24, '24px', '1.5rem')
|
|
427
|
+
const iconSize = hb.iconSize;
|
|
428
|
+
let iconNode;
|
|
429
|
+
if (/*#__PURE__*/_react.default.isValidElement(hb.icon)) {
|
|
430
|
+
iconNode = hb.icon;
|
|
431
|
+
} else if (hb.icon === 'HOME' || _Utils.default.isNull(hb.icon)) {
|
|
432
|
+
iconNode = /*#__PURE__*/_react.default.createElement(_Home.default, {
|
|
433
|
+
fontSize: iconSize ? iconSize : 'small'
|
|
434
|
+
});
|
|
435
|
+
} else {
|
|
436
|
+
iconNode = /*#__PURE__*/_react.default.createElement("i", {
|
|
437
|
+
className: hb.icon,
|
|
438
|
+
style: iconSize ? {
|
|
439
|
+
fontSize: iconSize
|
|
440
|
+
} : undefined
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
const button = /*#__PURE__*/_react.default.createElement(_material.ListItemButton, {
|
|
444
|
+
className: 'sidebar__home-button' + (homeSelected ? ' sidebar__home-button--selected' : ''),
|
|
445
|
+
onClick: () => {
|
|
446
|
+
setHomeSelected(true);
|
|
447
|
+
// Clear any active route so no route link stays highlighted
|
|
448
|
+
// (activeRoute() matches on id; '__home__' matches none).
|
|
449
|
+
setActiveRouteMenu({
|
|
450
|
+
id: '__home__',
|
|
451
|
+
name: 'Home'
|
|
452
|
+
});
|
|
453
|
+
hb.callback && hb.callback();
|
|
454
|
+
},
|
|
455
|
+
sx: _objectSpread({
|
|
456
|
+
justifyContent: open ? 'flex-start' : 'center',
|
|
457
|
+
// panel offset = margin 8 + border 1 + padding 6 = 15px; +1px lands
|
|
458
|
+
// the icon at 16px, exactly where the level-0 route icons sit.
|
|
459
|
+
// When collapsed, keep padding symmetric so the icon centres
|
|
460
|
+
// in the mini rail (matching the routes).
|
|
461
|
+
pl: open ? '1px' : 0,
|
|
462
|
+
pr: open ? 2.5 : 0,
|
|
463
|
+
borderRadius: '4px'
|
|
464
|
+
}, hb.style || {})
|
|
465
|
+
}, /*#__PURE__*/_react.default.createElement(_material.ListItemIcon, {
|
|
466
|
+
sx: {
|
|
467
|
+
margin: open ? null : 'auto',
|
|
468
|
+
minWidth: open ? ICON_COL : 0,
|
|
469
|
+
mr: open ? 0 : 'auto',
|
|
470
|
+
justifyContent: open ? 'flex-start' : 'center',
|
|
471
|
+
color: highlight
|
|
472
|
+
}
|
|
473
|
+
}, iconNode), open && hb.text ? /*#__PURE__*/_react.default.createElement("div", {
|
|
474
|
+
style: {
|
|
475
|
+
fontWeight: 300,
|
|
476
|
+
fontSize: '.85rem'
|
|
477
|
+
}
|
|
478
|
+
}, hb.text) : null);
|
|
479
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
480
|
+
className: 'sidebar__home-button' + (homeSelected ? ' sidebar__home-button--selected' : ''),
|
|
481
|
+
style: {
|
|
482
|
+
padding: '6px',
|
|
483
|
+
margin: open ? '0 0 0 2px' : 0,
|
|
484
|
+
backgroundColor: 'rgba(20, 60, 94, 0.05)',
|
|
485
|
+
border: '1px solid rgba(20, 60, 94, 0.08)',
|
|
486
|
+
borderRadius: '4px'
|
|
487
|
+
}
|
|
488
|
+
}, !open ? /*#__PURE__*/_react.default.createElement(_material.Tooltip, {
|
|
489
|
+
title: hb.text || 'Home',
|
|
490
|
+
placement: "right",
|
|
491
|
+
arrow: true
|
|
492
|
+
}, button) : button);
|
|
493
|
+
};
|
|
385
494
|
return /*#__PURE__*/_react.default.createElement("aside", {
|
|
386
495
|
className: "sidebar ".concat(!open ? 'sidebar--mini' : ''),
|
|
387
496
|
data: activeColor
|
|
@@ -389,11 +498,14 @@ function FoldingTabSidebar(props) {
|
|
|
389
498
|
className: "sidebar__top"
|
|
390
499
|
}, logoImg, props.heading && /*#__PURE__*/_react.default.createElement("div", {
|
|
391
500
|
className: "sidebar__heading"
|
|
392
|
-
}, props.heading)), /*#__PURE__*/_react.default.createElement("div", {
|
|
393
|
-
className: "sidebar__scroll"
|
|
501
|
+
}, props.heading)), renderHomeButton(), /*#__PURE__*/_react.default.createElement("div", {
|
|
502
|
+
className: "sidebar__scroll",
|
|
503
|
+
style: _Utils.default.isNull(props.homeButtonSettings) ? undefined : {
|
|
504
|
+
paddingTop: 0
|
|
505
|
+
}
|
|
394
506
|
}, /*#__PURE__*/_react.default.createElement(_material.List, {
|
|
395
507
|
sx: {
|
|
396
|
-
mt: 1
|
|
508
|
+
mt: _Utils.default.isNull(props.homeButtonSettings) ? 1 : 0
|
|
397
509
|
},
|
|
398
510
|
className: "nav"
|
|
399
511
|
}, createLinks(routesData))), /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -429,7 +541,15 @@ FoldingTabSidebar.propTypes = {
|
|
|
429
541
|
dashboardLauncher: _propTypes.default.func,
|
|
430
542
|
logoStyle: _propTypes.default.object,
|
|
431
543
|
open: _propTypes.default.bool,
|
|
432
|
-
onOpenDrawer: _propTypes.default.func
|
|
544
|
+
onOpenDrawer: _propTypes.default.func,
|
|
545
|
+
homeButtonSettings: _propTypes.default.shape({
|
|
546
|
+
icon: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.element]),
|
|
547
|
+
iconSize: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
548
|
+
text: _propTypes.default.string,
|
|
549
|
+
style: _propTypes.default.object,
|
|
550
|
+
color: _propTypes.default.string,
|
|
551
|
+
callback: _propTypes.default.func
|
|
552
|
+
})
|
|
433
553
|
};
|
|
434
554
|
var _default = exports.default = FoldingTabSidebar;
|
|
435
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfVXRpbHMiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX01lbnVMaW5rIiwiX21hdGVyaWFsIiwiX1Jlc3RVdGlscyIsIl9DYXJkQXZhdGFyIiwiX01vcmVIb3JpeiIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm93bktleXMiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJUQUIiLCJGb2xkaW5nVGFiU2lkZWJhciIsInByb3BzIiwiYWN0aXZlQ29sb3IiLCJvcGVuIiwiYXBwTG9nb1BhdGgiLCJvbk9wZW5EcmF3ZXIiLCJjb2xsYXBzZVN0YXRlcyIsInNldENvbGxhcHNlU3RhdGVzIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImdldENvbGxhcHNlU3RhdGVzIiwicm91dGVzIiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwiZXJyb3IiLCJzZXRFcnJvciIsInJvdXRlc0RhdGEiLCJzZXRSb3V0ZXNEYXRhIiwidW5kZWZpbmVkIiwiYWN0aXZlUm91dGVNZW51Iiwic2V0QWN0aXZlUm91dGVNZW51IiwiaWQiLCJuYW1lIiwiZ2V0Vmlld3MiLCJtZW51cyIsImxldmVsIiwibmV3Vmlld3MiLCJjcmVhdGVWaWV3IiwiYXR0cmlidXRlcyIsImxhYmVsIiwibWluaSIsImxheW91dCIsInN1Yk1lbnUiLCJjb2xsYXBzZSIsInN0YXRlIiwidmlld3MiLCJnZXRJdGVtcyIsIml0ZW1zIiwiaXRlbSIsIm5ld0l0ZW1zIiwiY3JlYXRlSXRlbSIsIlV0aWxzIiwiaXNOdWxsIiwiaW5pdGlhbFN0YXRlIiwicHJvcCIsImdldENvbGxhcHNlSW5pdGlhbFN0YXRlIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwiaW5kZXhPZiIsInBhdGgiLCJnZXRNZW51Iiwicm91dGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNlcnZpY2UiLCJ1cmwiLCJwYXJhbWV0ZXJzIiwibWVudSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiY29udGVudFR5cGUiLCJpbnZva2VSZXN0IiwiYXBpIiwicmVzdWx0IiwiY29uc29sZSIsImFjdGl2ZVJvdXRlIiwicm91dGVOYW1lIiwiZ2V0TGlDbGFzc05hbWUiLCJmYWxsYmFja0ljb24iLCJpY29uTm9kZSIsIl9wcm9wJG5hbWUiLCJfcHJvcCRuYW1lJGNoYXJBdCIsIl9wcm9wJG5hbWUyIiwiX3Byb3AkbmFtZSRjaGFyQXQyIiwiX3Byb3AkbmFtZTMiLCJpY29uIiwiY3JlYXRlRWxlbWVudCIsImZvbnRTaXplIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJjaGFyQXQiLCJjcmVhdGVMaW5rcyIsInNlY29uZGFyeVRoZW1lQ29sb3IiLCJtYXAiLCJrZXkiLCJyZWRpcmVjdCIsImlzVmFsaWRFbGVtZW50IiwiaXNBY3RpdmUiLCJpc0NvbGxhcHNpYmxlIiwiaXNQYXJlbnQiLCJpc09wZW4iLCJjb2xsYXBzaWJsZUNsYXNzTmFtZSIsImxlYWZDbGFzc05hbWUiLCJpbmRlbnQiLCJpc1RvcExldmVsIiwic2hvdWxkU2hvd1Rvb2x0aXAiLCJoYW5kbGVDbGljayIsInByZXZlbnREZWZhdWx0IiwidG9nZ2xlIiwicHJldiIsInRoZW4iLCJidXR0b24iLCJMaXN0SXRlbUJ1dHRvbiIsIm9uQ2xpY2siLCJzeCIsInBsIiwiYmFja2dyb3VuZENvbG9yIiwibGlnaHRlbiIsImJvcmRlclJhZGl1cyIsImNvbG9yIiwiZm9udFdlaWdodCIsIkxpc3RJdGVtSWNvbiIsIm1pbldpZHRoIiwibXIiLCJqdXN0aWZ5Q29udGVudCIsIkxpc3RJdGVtVGV4dCIsInByaW1hcnkiLCJjb25jYXQiLCJtYXJnaW5Ub3AiLCJGcmFnbWVudCIsIlRvb2x0aXAiLCJ0aXRsZSIsInBsYWNlbWVudCIsImFycm93IiwiQ29sbGFwc2UiLCJpbiIsInRpbWVvdXQiLCJ1bm1vdW50T25FeGl0IiwibXQiLCJMaXN0IiwiZGlzYWJsZVBhZGRpbmciLCJtZW51TGluayIsImNvbmZpZyIsImNsaWNrQ2FsbGJhY2siLCJkYXNoYm9hcmRMYXVuY2hlciIsImFwcGxpY2F0aW9uTWFuYWdlciIsImlzV2luZG93T3BlbiIsInVwZGF0ZUNvbnRleHQiLCJ3aW5kb3dEaXNwbGF5U3RhdGUiLCJhdXRvQ2xpY2siLCJkZWZhdWx0SXRlbSIsInZpZXdJZCIsImNvbnRlbnQiLCJpY29uQ29sb3IiLCJ0YWIiLCJweCIsInVzZUVmZmVjdCIsImNhbmNlbGxlZCIsIm1ldGhvZCIsImxvZ28iLCJsb2dvSW1nIiwib3V0dGVyTGluayIsImNsb3NlU2lkZWJhciIsImxvZ29TdHlsZSIsInNyYyIsImltZ1NyYyIsImFsdCIsImRhdGEiLCJoZWFkaW5nIiwicGxhaW4iLCJEYXRlIiwiZ2V0RnVsbFllYXIiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvbmVPZiIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJydGxBY3RpdmUiLCJib29sIiwiYXJyYXkiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImlubmVyTGluayIsInRleHQiLCJvYmplY3QiLCJmdW5jIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC9jb21wb25lbnRzL2JsYWNrRGFzaGJvYXJkL3NpZGViYXIvRm9sZGluZ1RhYlNpZGViYXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi8uLi8uLi8uLi9VdGlscyc7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uLy4uLy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgTWVudUxpbmsgZnJvbSAnLi4vLi4vLi4vLi4vbWVudS9NZW51TGluayc7XG5pbXBvcnQge0NvbGxhcHNlLCBsaWdodGVuLCBMaXN0LCBMaXN0SXRlbUJ1dHRvbiwgTGlzdEl0ZW1JY29uLCBMaXN0SXRlbVRleHQsIFRvb2x0aXB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuaW1wb3J0IHtpbnZva2VSZXN0fSBmcm9tICcuLi8uLi8uLi8uLi8uLi9SZXN0VXRpbHMnO1xuaW1wb3J0ICcuL0ZvbGRpbmdUYWJTaWRlYmFyLmNzcyc7XG5pbXBvcnQgQ2FyZEF2YXRhciBmcm9tIFwiLi4vLi4vLi4vLi4vY2FyZC9DYXJkQXZhdGFyXCI7XG5pbXBvcnQgTW9yZUhvcml6SWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL01vcmVIb3Jpeic7XG5cbmNvbnN0IFRBQiA9IDE2O1xuXG5mdW5jdGlvbiBGb2xkaW5nVGFiU2lkZWJhcihwcm9wcykge1xuICAgIGNvbnN0IHthY3RpdmVDb2xvciwgb3BlbiwgYXBwTG9nb1BhdGgsIG9uT3BlbkRyYXdlcn0gPSBwcm9wcztcbiAgICBjb25zdCBbY29sbGFwc2VTdGF0ZXMsIHNldENvbGxhcHNlU3RhdGVzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgICAgICBnZXRDb2xsYXBzZVN0YXRlcyhwcm9wcy5yb3V0ZXMpXG4gICAgKTtcbiAgICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtyb3V0ZXNEYXRhLCBzZXRSb3V0ZXNEYXRhXSA9IFJlYWN0LnVzZVN0YXRlKHVuZGVmaW5lZCk7XG4gICAgY29uc3QgW2FjdGl2ZVJvdXRlTWVudSwgc2V0QWN0aXZlUm91dGVNZW51XSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICAgICAgaWQ6ICdkYXNoYm9hcmQnLFxuICAgICAgICBuYW1lOiAnRGFzaGJvYXJkJ1xuICAgIH0pO1xuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0gaGVscGVycyAocG9ydGVkIGZyb20gY2xhc3MpIC0tLS0tLS0tLS0tLS0tLS0tICovXG4gICAgZnVuY3Rpb24gZ2V0Vmlld3MobWVudXMsIGxldmVsKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZpZXdzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVudXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZVZpZXcgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogbWVudXNbaV0uYXR0cmlidXRlcy5sYWJlbCxcbiAgICAgICAgICAgICAgICBpZDogbWVudXNbaV0uaWQsXG4gICAgICAgICAgICAgICAgbWluaTogJ1NTJyxcbiAgICAgICAgICAgICAgICBsYXlvdXQ6ICcvYWRtaW4nLFxuICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKG1lbnVzW2ldLnN1Yk1lbnUpIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3LmNvbGxhcHNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3LnN0YXRlID0gbWVudXNbaV0uaWQgKyAnQ29sbGFwc2UnO1xuICAgICAgICAgICAgICAgIGNyZWF0ZVZpZXcudmlld3MgPSBnZXRJdGVtcyhtZW51c1tpXS5zdWJNZW51Lml0ZW1zLCBsZXZlbCArIDEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3Lml0ZW0gPSBtZW51c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1ZpZXdzLnB1c2goY3JlYXRlVmlldyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1ZpZXdzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEl0ZW1zKGl0ZW1zLCBsZXZlbCkge1xuICAgICAgICBjb25zdCBuZXdJdGVtcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjcmVhdGVJdGVtID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW1zW2ldLmF0dHJpYnV0ZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW1zW2ldLmlkLFxuICAgICAgICAgICAgICAgIG1pbmk6ICdTUycsXG4gICAgICAgICAgICAgICAgbGF5b3V0OiAnL2FkbWluJyxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtc1tpXSxcbiAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGl0ZW1zW2ldLnN1Yk1lbnUpKSB7XG4gICAgICAgICAgICAgICAgY3JlYXRlSXRlbS5jb2xsYXBzZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY3JlYXRlSXRlbS5zdGF0ZSA9IGl0ZW1zW2ldLmlkICsgJ1N1Yk1lbnVDb2xsYXBzZSc7XG4gICAgICAgICAgICAgICAgY3JlYXRlSXRlbS52aWV3cyA9IGdldEl0ZW1zKGl0ZW1zW2ldLnN1Yk1lbnUuaXRlbXMsIGxldmVsICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdJdGVtcy5wdXNoKGNyZWF0ZUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdJdGVtcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb2xsYXBzZVN0YXRlcyhyb3V0ZXMpIHtcbiAgICAgICAgbGV0IGluaXRpYWxTdGF0ZSA9IHt9O1xuICAgICAgICBpZiAocm91dGVzKSB7XG4gICAgICAgICAgICByb3V0ZXMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wLmNvbGxhcHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wLnN0YXRlXTogZ2V0Q29sbGFwc2VJbml0aWFsU3RhdGUocHJvcC52aWV3cyksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5nZXRDb2xsYXBzZVN0YXRlcyhwcm9wLnZpZXdzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmluaXRpYWxTdGF0ZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q29sbGFwc2VJbml0aWFsU3RhdGUocm91dGVzKSB7XG4gICAgICAgIGlmICghcm91dGVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm91dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXJvdXRlc1tpXS52aWV3cykgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAocm91dGVzW2ldLmNvbGxhcHNlICYmIGdldENvbGxhcHNlSW5pdGlhbFN0YXRlKHJvdXRlc1tpXS52aWV3cykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihyb3V0ZXNbaV0ucGF0aCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGdldE1lbnUgPSAocm91dGUpID0+XG4gICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0ge1xuICAgICAgICAgICAgICAgIHVybDogJy91aS9hcGkvdjEvbWVudS9nZXQnLFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAge25hbWU6ICdpZCcsIHZhbHVlOiByb3V0ZS5tZW51LCBodHRwUGFyYW1ldGVyVHlwZTogJ1FVRVJZX1BBUkFNRVRFUid9LFxuICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ3ZlcnNpb24nLCB2YWx1ZTogMS4wLCBodHRwUGFyYW1ldGVyVHlwZTogJ1FVRVJZX1BBUkFNRVRFUid9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpbnZva2VSZXN0KFxuICAgICAgICAgICAgICAgIHNlcnZpY2UsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBhcGk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rhc2hib2FyZC1zaWRlYmFyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Rhc2hib2FyZC1zaWRlYmFyJyxcbiAgICAgICAgICAgICAgICAocmVzdWx0KSA9PiByZXNvbHZlKGdldFZpZXdzKHJlc3VsdC5tZW51cywgcm91dGUubGV2ZWwgKyAxKSksXG4gICAgICAgICAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gICAgY29uc3QgYWN0aXZlUm91dGUgPSAocm91dGVOYW1lKSA9PiBhY3RpdmVSb3V0ZU1lbnUuaWQgPT09IHJvdXRlTmFtZTtcbiAgICBjb25zdCBnZXRMaUNsYXNzTmFtZSA9IChwcm9wKSA9PiAnbGktJyArIHByb3AubGV2ZWw7XG5cbiAgICBjb25zdCBmYWxsYmFja0ljb24gPSAocHJvcCwgaWNvbk5vZGUpID0+IHtcbiAgICAgICAgaWYgKHByb3AuaWNvbikgcmV0dXJuIGljb25Ob2RlO1xuXG4gICAgICAgIGlmIChwcm9wLmxldmVsID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gPE1vcmVIb3Jpekljb24gZm9udFNpemU9XCJzbWFsbFwiLz47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW5pLWF2YXRhclwiIHN0eWxlPXt7Zm9udFNpemU6ICcxMHB4J319PlxuICAgICAgICAgICAgICAgIHtwcm9wLm5hbWU/LmNoYXJBdCgwKSArIChwcm9wLm5hbWU/LmNoYXJBdCgxKSA/PyAnJykgKyAocHJvcC5uYW1lPy5jaGFyQXQoMikgPz8gJycpICsgJy4uLid9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0gY3JlYXRlTGlua3Mgd2l0aCBkeW5hbWljIGNsYXNzZXMgKyB0aGVtZSBjb2xvcnMgLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICBjb25zdCBjcmVhdGVMaW5rcyA9IChyb3V0ZXMpID0+IHtcbiAgICAgICAgY29uc3Qge3NlY29uZGFyeVRoZW1lQ29sb3IsIG9wZW59ID0gcHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIHJvdXRlcy5tYXAoKHByb3AsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb3AucmVkaXJlY3QpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvLyBpY29uOiB1c2UgcHJvcC5pY29uOyBmYWxsYmFjayBNYWlsSWNvblxuICAgICAgICAgICAgbGV0IGljb25Ob2RlID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChwcm9wLmljb24pKSB7XG4gICAgICAgICAgICAgICAgaWNvbk5vZGUgPSBwcm9wLmljb247XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wLmljb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWNvbk5vZGUgPSA8aSBjbGFzc05hbWU9e3Byb3AuaWNvbn0vPjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWNvbk5vZGUgPSBwcm9wLmxldmVsID09PSAwID8gPGkgY2xhc3NOYW1lPXsnZmFzIGZhLXNxdWFyZSd9Lz4gOiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVJvdXRlKHByb3AuaWQpO1xuICAgICAgICAgICAgY29uc3QgaXNDb2xsYXBzaWJsZSA9XG4gICAgICAgICAgICAgICAgKHByb3AuY29sbGFwc2UgfHwgcHJvcC5pc1BhcmVudCkgJiZcbiAgICAgICAgICAgICAgICBwcm9wLm5hbWUgIT09ICdEYXNoYm9hcmQnICYmXG4gICAgICAgICAgICAgICAgcHJvcC5uYW1lICE9PSAnTXkgV29yayBJdGVtcyc7XG4gICAgICAgICAgICBjb25zdCBpc09wZW4gPSBwcm9wLnN0YXRlID8gISFjb2xsYXBzZVN0YXRlc1twcm9wLnN0YXRlXSA6IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyByZXBsaWNhdGUgZHluYW1pYyBjbGFzc05hbWUgbG9naWMgZm9yIGNvbGxhcHNpYmxlIGVudHJpZXNcbiAgICAgICAgICAgIGNvbnN0IGNvbGxhcHNpYmxlQ2xhc3NOYW1lID0gcHJvcC5jb2xsYXBzZVxuICAgICAgICAgICAgICAgID8gKGdldENvbGxhcHNlSW5pdGlhbFN0YXRlKHByb3Audmlld3MpXG4gICAgICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSAnICsgZ2V0TGlDbGFzc05hbWUocHJvcClcbiAgICAgICAgICAgICAgICAgICAgOiBnZXRMaUNsYXNzTmFtZShwcm9wKSlcbiAgICAgICAgICAgICAgICA6IGdldExpQ2xhc3NOYW1lKHByb3ApO1xuXG4gICAgICAgICAgICAvLyBsZWFmIGNsYXNzZXMgKGluY2x1ZGUgbGktbGV2ZWwpXG4gICAgICAgICAgICBjb25zdCBsZWFmQ2xhc3NOYW1lID1cbiAgICAgICAgICAgICAgICBnZXRMaUNsYXNzTmFtZShwcm9wKSArXG4gICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAoJ21lbnUtbGluay1saScgK1xuICAgICAgICAgICAgICAgICAgICAoaXNBY3RpdmUgPyAnLWFjdGl2ZScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAocHJvcC5uYW1lID09PSAnRGFzaGJvYXJkJyA/ICcgZGFzaGJvYXJkLWxpbmsnIDogJycpKTtcblxuICAgICAgICAgICAgLy8gaW5kZW50IGJhc2VkIG9uIGxldmVsIChUQUIgcHggLT4gc3BhY2luZyB1bml0cylcbiAgICAgICAgICAgIGNvbnN0IGluZGVudCA9IChwcm9wLmxldmVsICsgMSkgKiAoVEFCIC8gOCk7XG5cbiAgICAgICAgICAgIGlmIChpc0NvbGxhcHNpYmxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNUb3BMZXZlbCA9IHByb3AubGV2ZWwgPT09IDA7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkU2hvd1Rvb2x0aXAgPSAhb3BlbiAmJiBpc1RvcExldmVsO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZHJhd2VyIGlzIGNsb3NlZCBhbmQgdGhpcyBpcyBhIHRvcC1sZXZlbCBpdGVtLCBhc2sgcGFyZW50IHRvIG9wZW4gaXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcGVuICYmIGlzVG9wTGV2ZWwgJiYgdHlwZW9mIG9uT3BlbkRyYXdlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuRHJhd2VyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGUgPSAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29sbGFwc2VTdGF0ZXMoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvcC5zdGF0ZV06ICFwcmV2W3Byb3Auc3RhdGVdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9wLnZpZXdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsYXp5LWxvYWQgbWVudSBvbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRNZW51KHByb3ApLnRoZW4oKHZpZXdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Audmlld3MgPSB2aWV3cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSAoXG4gICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjb2xsYXBzaWJsZUNsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbDogaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbihzZWNvbmRhcnlUaGVtZUNvbG9yLCAwLjkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogc2Vjb25kYXJ5VGhlbWVDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aWNvbk5vZGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXI6IG9wZW4gPyAyIDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWNvbk5vZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaXN0SXRlbUljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAge29wZW4gPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbVRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnk9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcC5uYW1lfXsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wLmNvbGxhcHNlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgY2FyZXQgJHtpc09wZW4gPyAnY2FyZXQtb3BlbicgOiAnY2FyZXQtY2xvc2VkJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7bWFyZ2luVG9wOiAwfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpY29uTm9kZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrSWNvbihwcm9wLCBpY29uTm9kZSkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICA8L0xpc3RJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQga2V5PXtrZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3Nob3VsZFNob3dUb29sdGlwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17cHJvcC5uYW1lfSBwbGFjZW1lbnQ9XCJyaWdodFwiIGFycm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2J1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wLmNvbGxhcHNlICYmIHByb3Audmlld3MgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17aXNPcGVufSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQgc3g9e3sgcGw6IDAsIG10OiAwIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlzdCBkaXNhYmxlUGFkZGluZyBjbGFzc05hbWU9XCJuYXZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjcmVhdGVMaW5rcyhwcm9wLnZpZXdzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaXN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBtZW51TGluayA9IDxNZW51TGlua1xuICAgICAgICAgICAgICAgIGNvbmZpZz17cHJvcC5pdGVtfVxuICAgICAgICAgICAgICAgIGNsaWNrQ2FsbGJhY2s9e1xuICAgICAgICAgICAgICAgICAgICBwcm9wLm5hbWUgPT09ICdEYXNoYm9hcmQnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZGFzaGJvYXJkTGF1bmNoZXIgJiYgcHJvcHMuZGFzaGJvYXJkTGF1bmNoZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVSb3V0ZU1lbnUoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTXVsdGktdmlld3BvcnQ6IGRvY2sgKHBpbikgYW55IG9wZW4gd2luZG93IG92ZXJsYXkgc28gaXQgc3RheXMgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsb25nc2lkZSB0aGUgbmV3bHktbmF2aWdhdGVkIG1haW4gdmlldyBpbnN0ZWFkIG9mIG92ZXJsYXlpbmcgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGxpY2F0aW9uTWFuYWdlci5pc1dpbmRvd09wZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIudXBkYXRlQ29udGV4dCh7d2luZG93RGlzcGxheVN0YXRlOiAnUElOTkVEJ30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVSb3V0ZU1lbnUoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTXVsdGktdmlld3BvcnQ6IGRvY2sgKHBpbikgYW55IG9wZW4gd2luZG93IG92ZXJsYXkgKHNlZSBhYm92ZSkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGxpY2F0aW9uTWFuYWdlci5pc1dpbmRvd09wZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIudXBkYXRlQ29udGV4dCh7d2luZG93RGlzcGxheVN0YXRlOiAnUElOTkVEJ30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXV0b0NsaWNrPXtcbiAgICAgICAgICAgICAgICAgICAgcHJvcC5uYW1lID09PSAnTXkgV29yayBJdGVtcycgfHxcbiAgICAgICAgICAgICAgICAgICAgKHByb3AuaXRlbSAmJiBwcm9wLml0ZW0uZGVmYXVsdEl0ZW0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZpZXdJZD1cIm1lbnVCYXJcIlxuICAgICAgICAgICAgICAgIGljb249e3Byb3AuaWNvbn1cbiAgICAgICAgICAgICAgICBjb250ZW50PXtvcGVuID8gbnVsbCA6IGZhbGxiYWNrSWNvbihwcm9wLCBpY29uTm9kZSl9XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yPXtcbiAgICAgICAgICAgICAgICAgICAgKHByb3AubmFtZSA9PT0gJ0Rhc2hib2FyZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3AubmFtZSA9PT0gJ015IFdvcmsgSXRlbXMnKSAmJlxuICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcy5zZWNvbmRhcnlUaGVtZUNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmFtZT17cHJvcC5uYW1lfVxuICAgICAgICAgICAgICAgIGlkPXtwcm9wLmlkfVxuICAgICAgICAgICAgICAgIGxldmVsPXtwcm9wLmxldmVsfVxuICAgICAgICAgICAgICAgIHRhYj17VEFCfVxuICAgICAgICAgICAgLz47XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSAoXG4gICAgICAgICAgICAgICAgPExpc3RJdGVtQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGtleT17a2V5fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyhwcm9wLm5hbWUgPT09ICdEYXNoYm9hcmQnIHx8IHByb3AubmFtZSA9PT0gJ015IFdvcmsgSXRlbXMnKSA/IChpc0FjdGl2ZSA/ICdkYXNoYm9hcmQtbGluay1hY3RpdmUnIDogJ2Rhc2hib2FyZC1saW5rJykgOiBsZWFmQ2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IG9wZW4gPyAnaW5pdGlhbCcgOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB4OiAyLjUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbDogaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbihzZWNvbmRhcnlUaGVtZUNvbG9yLCAwLjkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcxNnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHNlY29uZGFyeVRoZW1lQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2ljb25Ob2RlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXI6IG9wZW4gPyAyIDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3AubmFtZSA9PT0gJ0Rhc2hib2FyZCcgfHwgcHJvcC5uYW1lID09PSAnTXkgV29yayBJdGVtcycpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2Vjb25kYXJ5VGhlbWVDb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2luaGVyaXQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWNvbk5vZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0xpc3RJdGVtSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPExpc3RJdGVtVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnk9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZW51TGlua31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogIWljb25Ob2RlID8gPD57bWVudUxpbmt9PC8+IDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9MaXN0SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIGxlYWZcbiAgICAgICAgICAgIHJldHVybiAhb3BlbiA/IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17cHJvcC5uYW1lfSBwbGFjZW1lbnQ9XCJyaWdodFwiIGFycm93PlxuICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICApIDogY29udGVudDtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tIGxvYWQgZmlsdGVyZWQgbWVudSAtLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBzZXJ2aWNlID0ge1xuICAgICAgICAgICAgdXJsOiAnL3VpL2FwaS92MS9tZW51L2ZpbHRlcicsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiBbe3ZhbHVlOiBwcm9wcy5yb3V0ZXMsIGh0dHBQYXJhbWV0ZXJUeXBlOiAnUkVRVUVTVF9CT0RZJ31dLFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIH07XG5cbiAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgICAgICBzZXRFcnJvcihmYWxzZSk7XG5cbiAgICAgICAgaW52b2tlUmVzdChcbiAgICAgICAgICAgIHNlcnZpY2UsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYXBpOiB7XG4gICAgICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGFzaGJvYXJkLXNpZGViYXInO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdkYXNoYm9hcmQtc2lkZWJhcicsXG4gICAgICAgICAgICAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Um91dGVzRGF0YShyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldEVycm9yKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBudWxsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgIH07XG4gICAgfSwgW3Byb3BzLnJvdXRlc10pO1xuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0gcmVuZGVyIC0tLS0tLS0tLS0tLS0tLS0tICovXG4gICAgY29uc3Qge2xvZ299ID0gcHJvcHM7XG5cbiAgICBsZXQgbG9nb0ltZyA9IG51bGw7XG4gICAgaWYgKCFVdGlscy5pc051bGwobG9nbykpIHtcbiAgICAgICAgbG9nb0ltZyA9IChcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj17bG9nby5vdXR0ZXJMaW5rfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGViYXJfX2JyYW5kXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtwcm9wcy5jbG9zZVNpZGViYXJ9XG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkhvbWVcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtwcm9wcy5sb2dvU3R5bGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9e2xvZ28uaW1nU3JjfSBhbHQ9XCJsb2dvXCIgY2xhc3NOYW1lPVwic2lkZWJhcl9fYnJhbmQtaW1nXCIvPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC0zXCI+XG4gICAgICAgICAgICAgICAgPGVtPkxvYWRpbmcgbWVudeKApjwvZW0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC0zIHRleHQtZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgPGVtPkZhaWxlZCB0byBsb2FkIG1lbnUuPC9lbT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmICghcm91dGVzRGF0YSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YHNpZGViYXIgJHshb3BlbiA/ICdzaWRlYmFyLS1taW5pJyA6ICcnfWB9XG4gICAgICAgICAgICBkYXRhPXthY3RpdmVDb2xvcn1cbiAgICAgICAgPlxuICAgICAgICAgICAgey8qIFRPUDogYnJhbmQgLyBsb2dvICovfVxuICAgICAgICAgICAge2xvZ29JbWcgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9fdG9wXCI+XG4gICAgICAgICAgICAgICAgICAgIHtsb2dvSW1nfVxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuaGVhZGluZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNpZGViYXJfX2hlYWRpbmdcIj57cHJvcHMuaGVhZGluZ308L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHsvKiBNSURETEU6IHNjcm9sbGFibGUgbmF2ICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaWRlYmFyX19zY3JvbGxcIj5cbiAgICAgICAgICAgICAgICA8TGlzdCBzeD17eyBtdDogMSB9fSBjbGFzc05hbWU9XCJuYXZcIj5cbiAgICAgICAgICAgICAgICAgICAge2NyZWF0ZUxpbmtzKHJvdXRlc0RhdGEpfVxuICAgICAgICAgICAgICAgIDwvTGlzdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQk9UVE9NOiBhcHAgbG9nbyArIGNvcHlyaWdodCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9fYm90dG9tXCI+XG4gICAgICAgICAgICAgICAgeyFVdGlscy5pc051bGwoYXBwTG9nb1BhdGgpID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNpZGViYXJfX2FwcC1sb2dvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZEF2YXRhciBwbGFpbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17YXBwTG9nb1BhdGh9IGFsdD1cIlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9fY29weXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIMKpIHtuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hc2lkZT5cbiAgICApO1xufVxuXG5Gb2xkaW5nVGFiU2lkZWJhci5wcm9wVHlwZXMgPSB7XG4gICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5vbmVPZihbJ3ByaW1hcnknLCAnYmx1ZScsICdncmVlbicsICdvcmFuZ2UnLCAncmVkJywgJ2FnaWxpdHknXSksXG4gICAgc2Vjb25kYXJ5VGhlbWVDb2xvcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIHJ0bEFjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgcm91dGVzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICBsb2dvOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgICAgIGlubmVyTGluazogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICAgICAgaW1nU3JjOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbiAgICAgICAgfSksXG4gICAgICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgICAgICBvdXR0ZXJMaW5rOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICBpbWdTcmM6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgICAgIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICAgICAgICB9KVxuICAgIF0pLFxuICAgIGhlYWRpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgYXBwTG9nb1BhdGg6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY2xvc2VTaWRlYmFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkYXNoYm9hcmRMYXVuY2hlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbG9nb1N0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIG9uT3BlbkRyYXdlcjogUHJvcFR5cGVzLmZ1bmMgICAgICAvLyA8LS0tIE5FV1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9sZGluZ1RhYlNpZGViYXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLFVBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUEwRCxTQUFBRCx1QkFBQVUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFHLFFBQUFILENBQUEsRUFBQUksQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBUCxDQUFBLE9BQUFNLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFSLENBQUEsR0FBQUksQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVgsQ0FBQSxFQUFBSSxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBZixDQUFBLGFBQUFJLENB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
|
|
555
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfVXRpbHMiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX01lbnVMaW5rIiwiX21hdGVyaWFsIiwiX3N0eWxlcyIsIl9SZXN0VXRpbHMiLCJfQ2FyZEF2YXRhciIsIl9Nb3JlSG9yaXoiLCJfSG9tZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm93bktleXMiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJUQUIiLCJJQ09OX0NPTCIsIkZvbGRpbmdUYWJTaWRlYmFyIiwicHJvcHMiLCJhY3RpdmVDb2xvciIsIm9wZW4iLCJhcHBMb2dvUGF0aCIsIm9uT3BlbkRyYXdlciIsInRoZW1lIiwidXNlVGhlbWUiLCJjb2xsYXBzZVN0YXRlcyIsInNldENvbGxhcHNlU3RhdGVzIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImdldENvbGxhcHNlU3RhdGVzIiwicm91dGVzIiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwiZXJyb3IiLCJzZXRFcnJvciIsInJvdXRlc0RhdGEiLCJzZXRSb3V0ZXNEYXRhIiwidW5kZWZpbmVkIiwiYWN0aXZlUm91dGVNZW51Iiwic2V0QWN0aXZlUm91dGVNZW51IiwiaWQiLCJuYW1lIiwiaG9tZVNlbGVjdGVkIiwic2V0SG9tZVNlbGVjdGVkIiwiZ2V0Vmlld3MiLCJtZW51cyIsImxldmVsIiwibmV3Vmlld3MiLCJjcmVhdGVWaWV3IiwiYXR0cmlidXRlcyIsImxhYmVsIiwibWluaSIsImxheW91dCIsInN1Yk1lbnUiLCJjb2xsYXBzZSIsInN0YXRlIiwidmlld3MiLCJnZXRJdGVtcyIsIml0ZW1zIiwiaXRlbSIsIm5ld0l0ZW1zIiwiY3JlYXRlSXRlbSIsIlV0aWxzIiwiaXNOdWxsIiwiaW5pdGlhbFN0YXRlIiwicHJvcCIsImdldENvbGxhcHNlSW5pdGlhbFN0YXRlIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwiaW5kZXhPZiIsInBhdGgiLCJnZXRNZW51Iiwicm91dGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNlcnZpY2UiLCJ1cmwiLCJwYXJhbWV0ZXJzIiwibWVudSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiY29udGVudFR5cGUiLCJpbnZva2VSZXN0IiwiYXBpIiwicmVzdWx0IiwiY29uc29sZSIsImFjdGl2ZVJvdXRlIiwicm91dGVOYW1lIiwiZ2V0TGlDbGFzc05hbWUiLCJmYWxsYmFja0ljb24iLCJpY29uTm9kZSIsIl9wcm9wJG5hbWUiLCJfcHJvcCRuYW1lJGNoYXJBdCIsIl9wcm9wJG5hbWUyIiwiX3Byb3AkbmFtZSRjaGFyQXQyIiwiX3Byb3AkbmFtZTMiLCJpY29uIiwiY3JlYXRlRWxlbWVudCIsImZvbnRTaXplIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJjaGFyQXQiLCJjcmVhdGVMaW5rcyIsInNlY29uZGFyeVRoZW1lQ29sb3IiLCJtYXAiLCJrZXkiLCJyZWRpcmVjdCIsImlzVmFsaWRFbGVtZW50IiwiaXNBY3RpdmUiLCJpc0NvbGxhcHNpYmxlIiwiaXNQYXJlbnQiLCJpc09wZW4iLCJjb2xsYXBzaWJsZUNsYXNzTmFtZSIsImxlYWZDbGFzc05hbWUiLCJpbmRlbnQiLCJpc1RvcExldmVsIiwic2hvdWxkU2hvd1Rvb2x0aXAiLCJoYW5kbGVDbGljayIsInByZXZlbnREZWZhdWx0IiwidG9nZ2xlIiwicHJldiIsInRoZW4iLCJidXR0b24iLCJMaXN0SXRlbUJ1dHRvbiIsIm9uQ2xpY2siLCJzeCIsInBsIiwiYmFja2dyb3VuZENvbG9yIiwibGlnaHRlbiIsImJvcmRlclJhZGl1cyIsImNvbG9yIiwiZm9udFdlaWdodCIsIkxpc3RJdGVtSWNvbiIsIm1pbldpZHRoIiwibXIiLCJqdXN0aWZ5Q29udGVudCIsIkxpc3RJdGVtVGV4dCIsInByaW1hcnkiLCJjb25jYXQiLCJtYXJnaW5Ub3AiLCJGcmFnbWVudCIsIlRvb2x0aXAiLCJ0aXRsZSIsInBsYWNlbWVudCIsImFycm93IiwiQ29sbGFwc2UiLCJpbiIsInRpbWVvdXQiLCJ1bm1vdW50T25FeGl0IiwibXQiLCJMaXN0IiwiZGlzYWJsZVBhZGRpbmciLCJtZW51TGluayIsImNvbmZpZyIsImNsaWNrQ2FsbGJhY2siLCJkYXNoYm9hcmRMYXVuY2hlciIsImFwcGxpY2F0aW9uTWFuYWdlciIsImlzV2luZG93T3BlbiIsInVwZGF0ZUNvbnRleHQiLCJ3aW5kb3dEaXNwbGF5U3RhdGUiLCJhdXRvQ2xpY2siLCJkZWZhdWx0SXRlbSIsInZpZXdJZCIsImNvbnRlbnQiLCJpY29uQ29sb3IiLCJ0YWIiLCJweCIsInVzZUVmZmVjdCIsImNhbmNlbGxlZCIsIm1ldGhvZCIsImxvZ28iLCJsb2dvSW1nIiwib3V0dGVyTGluayIsImNsb3NlU2lkZWJhciIsImxvZ29TdHlsZSIsIndpZHRoIiwibWF4V2lkdGgiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsIm92ZXJmbG93Iiwic3JjIiwiaW1nU3JjIiwiYWx0IiwiaGVpZ2h0Iiwib2JqZWN0Rml0IiwicmVzb2x2ZUhpZ2hsaWdodENvbG9yIiwiYyIsInBhbGV0dGUiLCJtYWluIiwic2Vjb25kYXJ5IiwicmVuZGVySG9tZUJ1dHRvbiIsImhiIiwiaG9tZUJ1dHRvblNldHRpbmdzIiwiaGlnaGxpZ2h0IiwiaWNvblNpemUiLCJjYWxsYmFjayIsInByIiwibWFyZ2luIiwidGV4dCIsInBhZGRpbmciLCJib3JkZXIiLCJkYXRhIiwiaGVhZGluZyIsInBhZGRpbmdUb3AiLCJwbGFpbiIsIkRhdGUiLCJnZXRGdWxsWWVhciIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9uZU9mIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsInJ0bEFjdGl2ZSIsImJvb2wiLCJhcnJheSIsIm9uZU9mVHlwZSIsInNoYXBlIiwiaW5uZXJMaW5rIiwib2JqZWN0IiwiZnVuYyIsImVsZW1lbnQiLCJudW1iZXIiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkL2NvbXBvbmVudHMvYmxhY2tEYXNoYm9hcmQvc2lkZWJhci9Gb2xkaW5nVGFiU2lkZWJhci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uLy4uLy4uLy4uL1V0aWxzJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vLi4vLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBNZW51TGluayBmcm9tICcuLi8uLi8uLi8uLi9tZW51L01lbnVMaW5rJztcbmltcG9ydCB7Q29sbGFwc2UsIGxpZ2h0ZW4sIExpc3QsIExpc3RJdGVtQnV0dG9uLCBMaXN0SXRlbUljb24sIExpc3RJdGVtVGV4dCwgVG9vbHRpcH0gZnJvbSAnQG11aS9tYXRlcmlhbCc7XG5pbXBvcnQge3VzZVRoZW1lfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcyc7XG5pbXBvcnQge2ludm9rZVJlc3R9IGZyb20gJy4uLy4uLy4uLy4uLy4uL1Jlc3RVdGlscyc7XG5pbXBvcnQgJy4vRm9sZGluZ1RhYlNpZGViYXIuY3NzJztcbmltcG9ydCBDYXJkQXZhdGFyIGZyb20gXCIuLi8uLi8uLi8uLi9jYXJkL0NhcmRBdmF0YXJcIjtcbmltcG9ydCBNb3JlSG9yaXpJY29uIGZyb20gJ0BtdWkvaWNvbnMtbWF0ZXJpYWwvTW9yZUhvcml6JztcbmltcG9ydCBIb21lSWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL0hvbWUnO1xuXG5jb25zdCBUQUIgPSAxNjtcbi8vIFNoYXJlZCBpY29uLWNvbHVtbiB3aWR0aCAocHgpIHNvIGljb25zIGxlZnQtYWxpZ24gYW5kIHRleHQgc3RhcnRzIGF0IHRoZSBzYW1lXG4vLyB4IGZvciBldmVyeSBpdGVtIChob21lIGJ1dHRvbiArIHJvdXRlcyksIHJlZ2FyZGxlc3Mgb2YgaWNvbiBzaXplIG9yIGFic2VuY2UuXG5jb25zdCBJQ09OX0NPTCA9IDM2O1xuXG5mdW5jdGlvbiBGb2xkaW5nVGFiU2lkZWJhcihwcm9wcykge1xuICAgIGNvbnN0IHthY3RpdmVDb2xvciwgb3BlbiwgYXBwTG9nb1BhdGgsIG9uT3BlbkRyYXdlcn0gPSBwcm9wcztcbiAgICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gICAgY29uc3QgW2NvbGxhcHNlU3RhdGVzLCBzZXRDb2xsYXBzZVN0YXRlc10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICAgICAgZ2V0Q29sbGFwc2VTdGF0ZXMocHJvcHMucm91dGVzKVxuICAgICk7XG4gICAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbcm91dGVzRGF0YSwgc2V0Um91dGVzRGF0YV0gPSBSZWFjdC51c2VTdGF0ZSh1bmRlZmluZWQpO1xuICAgIGNvbnN0IFthY3RpdmVSb3V0ZU1lbnUsIHNldEFjdGl2ZVJvdXRlTWVudV0gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgICAgIGlkOiAnZGFzaGJvYXJkJyxcbiAgICAgICAgbmFtZTogJ0Rhc2hib2FyZCdcbiAgICB9KTtcbiAgICAvLyBIb21lIGJ1dHRvbiBpcyBoaWdobGlnaHRlZCBieSBkZWZhdWx0OyBzZWxlY3RpbmcgYW55IHJvdXRlIGNsZWFycyBpdCxcbiAgICAvLyBjbGlja2luZyB0aGUgaG9tZSBidXR0b24gcmVzdG9yZXMgaXQuXG4gICAgY29uc3QgW2hvbWVTZWxlY3RlZCwgc2V0SG9tZVNlbGVjdGVkXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0gaGVscGVycyAocG9ydGVkIGZyb20gY2xhc3MpIC0tLS0tLS0tLS0tLS0tLS0tICovXG4gICAgZnVuY3Rpb24gZ2V0Vmlld3MobWVudXMsIGxldmVsKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZpZXdzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVudXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZVZpZXcgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogbWVudXNbaV0uYXR0cmlidXRlcy5sYWJlbCxcbiAgICAgICAgICAgICAgICBpZDogbWVudXNbaV0uaWQsXG4gICAgICAgICAgICAgICAgbWluaTogJ1NTJyxcbiAgICAgICAgICAgICAgICBsYXlvdXQ6ICcvYWRtaW4nLFxuICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKG1lbnVzW2ldLnN1Yk1lbnUpIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3LmNvbGxhcHNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3LnN0YXRlID0gbWVudXNbaV0uaWQgKyAnQ29sbGFwc2UnO1xuICAgICAgICAgICAgICAgIGNyZWF0ZVZpZXcudmlld3MgPSBnZXRJdGVtcyhtZW51c1tpXS5zdWJNZW51Lml0ZW1zLCBsZXZlbCArIDEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3Lml0ZW0gPSBtZW51c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1ZpZXdzLnB1c2goY3JlYXRlVmlldyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1ZpZXdzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEl0ZW1zKGl0ZW1zLCBsZXZlbCkge1xuICAgICAgICBjb25zdCBuZXdJdGVtcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjcmVhdGVJdGVtID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW1zW2ldLmF0dHJpYnV0ZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW1zW2ldLmlkLFxuICAgICAgICAgICAgICAgIG1pbmk6ICdTUycsXG4gICAgICAgICAgICAgICAgbGF5b3V0OiAnL2FkbWluJyxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtc1tpXSxcbiAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGl0ZW1zW2ldLnN1Yk1lbnUpKSB7XG4gICAgICAgICAgICAgICAgY3JlYXRlSXRlbS5jb2xsYXBzZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY3JlYXRlSXRlbS5zdGF0ZSA9IGl0ZW1zW2ldLmlkICsgJ1N1Yk1lbnVDb2xsYXBzZSc7XG4gICAgICAgICAgICAgICAgY3JlYXRlSXRlbS52aWV3cyA9IGdldEl0ZW1zKGl0ZW1zW2ldLnN1Yk1lbnUuaXRlbXMsIGxldmVsICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdJdGVtcy5wdXNoKGNyZWF0ZUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdJdGVtcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb2xsYXBzZVN0YXRlcyhyb3V0ZXMpIHtcbiAgICAgICAgbGV0IGluaXRpYWxTdGF0ZSA9IHt9O1xuICAgICAgICBpZiAocm91dGVzKSB7XG4gICAgICAgICAgICByb3V0ZXMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wLmNvbGxhcHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wLnN0YXRlXTogZ2V0Q29sbGFwc2VJbml0aWFsU3RhdGUocHJvcC52aWV3cyksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5nZXRDb2xsYXBzZVN0YXRlcyhwcm9wLnZpZXdzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmluaXRpYWxTdGF0ZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q29sbGFwc2VJbml0aWFsU3RhdGUocm91dGVzKSB7XG4gICAgICAgIGlmICghcm91dGVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm91dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXJvdXRlc1tpXS52aWV3cykgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBpZiAocm91dGVzW2ldLmNvbGxhcHNlICYmIGdldENvbGxhcHNlSW5pdGlhbFN0YXRlKHJvdXRlc1tpXS52aWV3cykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihyb3V0ZXNbaV0ucGF0aCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGdldE1lbnUgPSAocm91dGUpID0+XG4gICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0ge1xuICAgICAgICAgICAgICAgIHVybDogJy91aS9hcGkvdjEvbWVudS9nZXQnLFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAge25hbWU6ICdpZCcsIHZhbHVlOiByb3V0ZS5tZW51LCBodHRwUGFyYW1ldGVyVHlwZTogJ1FVRVJZX1BBUkFNRVRFUid9LFxuICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ3ZlcnNpb24nLCB2YWx1ZTogMS4wLCBodHRwUGFyYW1ldGVyVHlwZTogJ1FVRVJZX1BBUkFNRVRFUid9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpbnZva2VSZXN0KFxuICAgICAgICAgICAgICAgIHNlcnZpY2UsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBhcGk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rhc2hib2FyZC1zaWRlYmFyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Rhc2hib2FyZC1zaWRlYmFyJyxcbiAgICAgICAgICAgICAgICAocmVzdWx0KSA9PiByZXNvbHZlKGdldFZpZXdzKHJlc3VsdC5tZW51cywgcm91dGUubGV2ZWwgKyAxKSksXG4gICAgICAgICAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gICAgY29uc3QgYWN0aXZlUm91dGUgPSAocm91dGVOYW1lKSA9PiBhY3RpdmVSb3V0ZU1lbnUuaWQgPT09IHJvdXRlTmFtZTtcbiAgICBjb25zdCBnZXRMaUNsYXNzTmFtZSA9IChwcm9wKSA9PiAnbGktJyArIHByb3AubGV2ZWw7XG5cbiAgICBjb25zdCBmYWxsYmFja0ljb24gPSAocHJvcCwgaWNvbk5vZGUpID0+IHtcbiAgICAgICAgaWYgKHByb3AuaWNvbikgcmV0dXJuIGljb25Ob2RlO1xuXG4gICAgICAgIGlmIChwcm9wLmxldmVsID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gPE1vcmVIb3Jpekljb24gZm9udFNpemU9XCJzbWFsbFwiLz47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW5pLWF2YXRhclwiIHN0eWxlPXt7Zm9udFNpemU6ICcxMHB4J319PlxuICAgICAgICAgICAgICAgIHtwcm9wLm5hbWU/LmNoYXJBdCgwKSArIChwcm9wLm5hbWU/LmNoYXJBdCgxKSA/PyAnJykgKyAocHJvcC5uYW1lPy5jaGFyQXQoMikgPz8gJycpICsgJy4uLid9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0gY3JlYXRlTGlua3Mgd2l0aCBkeW5hbWljIGNsYXNzZXMgKyB0aGVtZSBjb2xvcnMgLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICBjb25zdCBjcmVhdGVMaW5rcyA9IChyb3V0ZXMpID0+IHtcbiAgICAgICAgY29uc3Qge3NlY29uZGFyeVRoZW1lQ29sb3IsIG9wZW59ID0gcHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIHJvdXRlcy5tYXAoKHByb3AsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb3AucmVkaXJlY3QpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvLyBpY29uOiB1c2UgcHJvcC5pY29uOyBmYWxsYmFjayBNYWlsSWNvblxuICAgICAgICAgICAgbGV0IGljb25Ob2RlID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChwcm9wLmljb24pKSB7XG4gICAgICAgICAgICAgICAgaWNvbk5vZGUgPSBwcm9wLmljb247XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wLmljb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWNvbk5vZGUgPSA8aSBjbGFzc05hbWU9e3Byb3AuaWNvbn0vPjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWNvbk5vZGUgPSBwcm9wLmxldmVsID09PSAwID8gPGkgY2xhc3NOYW1lPXsnZmFzIGZhLXNxdWFyZSd9Lz4gOiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVJvdXRlKHByb3AuaWQpO1xuICAgICAgICAgICAgY29uc3QgaXNDb2xsYXBzaWJsZSA9XG4gICAgICAgICAgICAgICAgKHByb3AuY29sbGFwc2UgfHwgcHJvcC5pc1BhcmVudCkgJiZcbiAgICAgICAgICAgICAgICBwcm9wLm5hbWUgIT09ICdEYXNoYm9hcmQnICYmXG4gICAgICAgICAgICAgICAgcHJvcC5uYW1lICE9PSAnTXkgV29yayBJdGVtcyc7XG4gICAgICAgICAgICBjb25zdCBpc09wZW4gPSBwcm9wLnN0YXRlID8gISFjb2xsYXBzZVN0YXRlc1twcm9wLnN0YXRlXSA6IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyByZXBsaWNhdGUgZHluYW1pYyBjbGFzc05hbWUgbG9naWMgZm9yIGNvbGxhcHNpYmxlIGVudHJpZXNcbiAgICAgICAgICAgIGNvbnN0IGNvbGxhcHNpYmxlQ2xhc3NOYW1lID0gcHJvcC5jb2xsYXBzZVxuICAgICAgICAgICAgICAgID8gKGdldENvbGxhcHNlSW5pdGlhbFN0YXRlKHByb3Audmlld3MpXG4gICAgICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSAnICsgZ2V0TGlDbGFzc05hbWUocHJvcClcbiAgICAgICAgICAgICAgICAgICAgOiBnZXRMaUNsYXNzTmFtZShwcm9wKSlcbiAgICAgICAgICAgICAgICA6IGdldExpQ2xhc3NOYW1lKHByb3ApO1xuXG4gICAgICAgICAgICAvLyBsZWFmIGNsYXNzZXMgKGluY2x1ZGUgbGktbGV2ZWwpXG4gICAgICAgICAgICBjb25zdCBsZWFmQ2xhc3NOYW1lID1cbiAgICAgICAgICAgICAgICBnZXRMaUNsYXNzTmFtZShwcm9wKSArXG4gICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAoJ21lbnUtbGluay1saScgK1xuICAgICAgICAgICAgICAgICAgICAoaXNBY3RpdmUgPyAnLWFjdGl2ZScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAocHJvcC5uYW1lID09PSAnRGFzaGJvYXJkJyA/ICcgZGFzaGJvYXJkLWxpbmsnIDogJycpKTtcblxuICAgICAgICAgICAgLy8gaW5kZW50IGJhc2VkIG9uIGxldmVsIChUQUIgcHggLT4gc3BhY2luZyB1bml0cylcbiAgICAgICAgICAgIGNvbnN0IGluZGVudCA9IChwcm9wLmxldmVsICsgMSkgKiAoVEFCIC8gOCk7XG5cbiAgICAgICAgICAgIGlmIChpc0NvbGxhcHNpYmxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNUb3BMZXZlbCA9IHByb3AubGV2ZWwgPT09IDA7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkU2hvd1Rvb2x0aXAgPSAhb3BlbiAmJiBpc1RvcExldmVsO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZHJhd2VyIGlzIGNsb3NlZCBhbmQgdGhpcyBpcyBhIHRvcC1sZXZlbCBpdGVtLCBhc2sgcGFyZW50IHRvIG9wZW4gaXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcGVuICYmIGlzVG9wTGV2ZWwgJiYgdHlwZW9mIG9uT3BlbkRyYXdlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuRHJhd2VyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGUgPSAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29sbGFwc2VTdGF0ZXMoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvcC5zdGF0ZV06ICFwcmV2W3Byb3Auc3RhdGVdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9wLnZpZXdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsYXp5LWxvYWQgbWVudSBvbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRNZW51KHByb3ApLnRoZW4oKHZpZXdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Audmlld3MgPSB2aWV3cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSAoXG4gICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjb2xsYXBzaWJsZUNsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbDogaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbihzZWNvbmRhcnlUaGVtZUNvbG9yLCAwLjkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogc2Vjb25kYXJ5VGhlbWVDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aWNvbk5vZGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBvcGVuID8gSUNPTl9DT0wgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXI6IG9wZW4gPyAwIDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IG9wZW4gPyAnZmxleC1zdGFydCcgOiAnY2VudGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ljb25Ob2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGlzdEl0ZW1JY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtvcGVuID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlzdEl0ZW1UZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3AubmFtZX17JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcC5jb2xsYXBzZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGNhcmV0ICR7aXNPcGVuID8gJ2NhcmV0LW9wZW4nIDogJ2NhcmV0LWNsb3NlZCd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e21hcmdpblRvcDogMH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaWNvbk5vZGUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0ljb24ocHJvcCwgaWNvbk5vZGUpIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9MaXN0SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17a2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG91bGRTaG93VG9vbHRpcCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Byb3AubmFtZX0gcGxhY2VtZW50PVwicmlnaHRcIiBhcnJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2J1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtidXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcC5jb2xsYXBzZSAmJiBwcm9wLnZpZXdzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2lzT3Blbn0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0IHN4PXt7IHBsOiAwLCBtdDogMCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpc3QgZGlzYWJsZVBhZGRpbmcgY2xhc3NOYW1lPVwibmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3JlYXRlTGlua3MocHJvcC52aWV3cyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbWVudUxpbmsgPSA8TWVudUxpbmtcbiAgICAgICAgICAgICAgICBjb25maWc9e3Byb3AuaXRlbX1cbiAgICAgICAgICAgICAgICBjbGlja0NhbGxiYWNrPXtcbiAgICAgICAgICAgICAgICAgICAgcHJvcC5uYW1lID09PSAnRGFzaGJvYXJkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmRhc2hib2FyZExhdW5jaGVyICYmIHByb3BzLmRhc2hib2FyZExhdW5jaGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlUm91dGVNZW51KGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhvbWVTZWxlY3RlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTXVsdGktdmlld3BvcnQ6IGRvY2sgKHBpbikgYW55IG9wZW4gd2luZG93IG92ZXJsYXkgc28gaXQgc3RheXMgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsb25nc2lkZSB0aGUgbmV3bHktbmF2aWdhdGVkIG1haW4gdmlldyBpbnN0ZWFkIG9mIG92ZXJsYXlpbmcgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGxpY2F0aW9uTWFuYWdlci5pc1dpbmRvd09wZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIudXBkYXRlQ29udGV4dCh7d2luZG93RGlzcGxheVN0YXRlOiAnUElOTkVEJ30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVSb3V0ZU1lbnUoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SG9tZVNlbGVjdGVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNdWx0aS12aWV3cG9ydDogZG9jayAocGluKSBhbnkgb3BlbiB3aW5kb3cgb3ZlcmxheSAoc2VlIGFib3ZlKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwbGljYXRpb25NYW5hZ2VyLmlzV2luZG93T3BlbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci51cGRhdGVDb250ZXh0KHt3aW5kb3dEaXNwbGF5U3RhdGU6ICdQSU5ORUQnfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhdXRvQ2xpY2s9e1xuICAgICAgICAgICAgICAgICAgICBwcm9wLm5hbWUgPT09ICdNeSBXb3JrIEl0ZW1zJyB8fFxuICAgICAgICAgICAgICAgICAgICAocHJvcC5pdGVtICYmIHByb3AuaXRlbS5kZWZhdWx0SXRlbSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmlld0lkPVwibWVudUJhclwiXG4gICAgICAgICAgICAgICAgaWNvbj17cHJvcC5pY29ufVxuICAgICAgICAgICAgICAgIGNvbnRlbnQ9e29wZW4gPyBudWxsIDogZmFsbGJhY2tJY29uKHByb3AsIGljb25Ob2RlKX1cbiAgICAgICAgICAgICAgICBpY29uQ29sb3I9e1xuICAgICAgICAgICAgICAgICAgICAocHJvcC5uYW1lID09PSAnRGFzaGJvYXJkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcC5uYW1lID09PSAnTXkgV29yayBJdGVtcycpICYmXG4gICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzLnNlY29uZGFyeVRoZW1lQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuYW1lPXtwcm9wLm5hbWV9XG4gICAgICAgICAgICAgICAgaWQ9e3Byb3AuaWR9XG4gICAgICAgICAgICAgICAgbGV2ZWw9e3Byb3AubGV2ZWx9XG4gICAgICAgICAgICAgICAgdGFiPXtUQUJ9XG4gICAgICAgICAgICAvPjtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IChcbiAgICAgICAgICAgICAgICA8TGlzdEl0ZW1CdXR0b25cbiAgICAgICAgICAgICAgICAgICAga2V5PXtrZXl9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17KHByb3AubmFtZSA9PT0gJ0Rhc2hib2FyZCcgfHwgcHJvcC5uYW1lID09PSAnTXkgV29yayBJdGVtcycpID8gKGlzQWN0aXZlID8gJ2Rhc2hib2FyZC1saW5rLWFjdGl2ZScgOiAnZGFzaGJvYXJkLWxpbmsnKSA6IGxlYWZDbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogb3BlbiA/ICdpbml0aWFsJyA6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHg6IDIuNSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsOiBpbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oaXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBsaWdodGVuKHNlY29uZGFyeVRoZW1lQ29sb3IsIDAuOSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzE2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogc2Vjb25kYXJ5VGhlbWVDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogNTAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7aWNvbk5vZGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPExpc3RJdGVtSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBvcGVuID8gSUNPTl9DT0wgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcjogb3BlbiA/IDAgOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBvcGVuID8gJ2ZsZXgtc3RhcnQnIDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3AubmFtZSA9PT0gJ0Rhc2hib2FyZCcgfHwgcHJvcC5uYW1lID09PSAnTXkgV29yayBJdGVtcycpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2Vjb25kYXJ5VGhlbWVDb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2luaGVyaXQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aWNvbk5vZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0xpc3RJdGVtSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPExpc3RJdGVtVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnk9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZW51TGlua31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogIWljb25Ob2RlID8gPD57bWVudUxpbmt9PC8+IDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9MaXN0SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIGxlYWZcbiAgICAgICAgICAgIHJldHVybiAhb3BlbiA/IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17cHJvcC5uYW1lfSBwbGFjZW1lbnQ9XCJyaWdodFwiIGFycm93PlxuICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICApIDogY29udGVudDtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tIGxvYWQgZmlsdGVyZWQgbWVudSAtLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBzZXJ2aWNlID0ge1xuICAgICAgICAgICAgdXJsOiAnL3VpL2FwaS92MS9tZW51L2ZpbHRlcicsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiBbe3ZhbHVlOiBwcm9wcy5yb3V0ZXMsIGh0dHBQYXJhbWV0ZXJUeXBlOiAnUkVRVUVTVF9CT0RZJ31dLFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIH07XG5cbiAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgICAgICBzZXRFcnJvcihmYWxzZSk7XG5cbiAgICAgICAgaW52b2tlUmVzdChcbiAgICAgICAgICAgIHNlcnZpY2UsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYXBpOiB7XG4gICAgICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGFzaGJvYXJkLXNpZGViYXInO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdkYXNoYm9hcmQtc2lkZWJhcicsXG4gICAgICAgICAgICAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Um91dGVzRGF0YShyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIHNldEVycm9yKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBudWxsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgIH07XG4gICAgfSwgW3Byb3BzLnJvdXRlc10pO1xuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0gcmVuZGVyIC0tLS0tLS0tLS0tLS0tLS0tICovXG4gICAgY29uc3Qge2xvZ299ID0gcHJvcHM7XG5cbiAgICBsZXQgbG9nb0ltZyA9IG51bGw7XG4gICAgaWYgKCFVdGlscy5pc051bGwobG9nbykpIHtcbiAgICAgICAgbG9nb0ltZyA9IChcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj17bG9nby5vdXR0ZXJMaW5rfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGViYXJfX2JyYW5kXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtwcm9wcy5jbG9zZVNpZGViYXJ9XG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkhvbWVcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIC4uLihwcm9wcy5sb2dvU3R5bGUgfHwge30pLFxuICAgICAgICAgICAgICAgICAgICAvLyBTY2FsZSB0aGUgbG9nbyB0byBmaXQgdGhlIHJhaWwgKGl0IGdldHMgY3V0IGluIHRoZSBtaW5pXG4gICAgICAgICAgICAgICAgICAgIC8vIGRyYXdlciBhdCBhIGZpeGVkIHdpZHRoKS4gQ2FwIGF0IHRoZSBjb25maWd1cmVkIHdpZHRoIHdoZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gZXhwYW5kZWQsIHNocmluayB0byB0aGUgcmFpbCB3aGVuIGNvbGxhcHNlZC5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IChwcm9wcy5sb2dvU3R5bGUgJiYgcHJvcHMubG9nb1N0eWxlLndpZHRoKSB8fCAnMTIwcHgnLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICBzcmM9e2xvZ28uaW1nU3JjfVxuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJsb2dvXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2lkZWJhcl9fYnJhbmQtaW1nXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ttYXhXaWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJywgb2JqZWN0Rml0OiAnY29udGFpbid9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGlzTG9hZGluZykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTNcIj5cbiAgICAgICAgICAgICAgICA8ZW0+TG9hZGluZyBtZW514oCmPC9lbT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTMgdGV4dC1kYW5nZXJcIj5cbiAgICAgICAgICAgICAgICA8ZW0+RmFpbGVkIHRvIGxvYWQgbWVudS48L2VtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFyb3V0ZXNEYXRhKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIGNvbG9yOiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8IGFueSBDU1MgY29sb3IgKGUuZy4gJyMwMDAwMDAnKVxuICAgIGNvbnN0IHJlc29sdmVIaWdobGlnaHRDb2xvciA9IChjKSA9PiB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoYykgfHwgYyA9PT0gJ3ByaW1hcnknKSByZXR1cm4gdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW47XG4gICAgICAgIGlmIChjID09PSAnc2Vjb25kYXJ5JykgcmV0dXJuIHRoZW1lLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW47XG4gICAgICAgIHJldHVybiBjO1xuICAgIH07XG5cbiAgICAvLyBPcHRpb25hbCBob21lIGJ1dHRvbiwgcmVuZGVyZWQgYXQgdGhlIHZlcnkgdG9wIG9mIHRoZSBzaWRlYmFyLiBGaXJlc1xuICAgIC8vIGhvbWVCdXR0b25TZXR0aW5ncy5jYWxsYmFjaygpIG9uIGNsaWNrIChlLmcuIGxvYWQgdGhlIHBvcnRhbCBkYXNoYm9hcmQpLlxuICAgIGNvbnN0IHJlbmRlckhvbWVCdXR0b24gPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGhiID0gcHJvcHMuaG9tZUJ1dHRvblNldHRpbmdzO1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGhiKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ID0gcmVzb2x2ZUhpZ2hsaWdodENvbG9yKGhiLmNvbG9yKTtcblxuICAgICAgICAvLyBpY29uIHNpemUgZnJvbSBzZXR0aW5ncyAobnVtYmVyIHB4IG9yIGFueSBDU1Mgc2l6ZSwgZS5nLiAyNCwgJzI0cHgnLCAnMS41cmVtJylcbiAgICAgICAgY29uc3QgaWNvblNpemUgPSBoYi5pY29uU2l6ZTtcblxuICAgICAgICBsZXQgaWNvbk5vZGU7XG4gICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChoYi5pY29uKSkge1xuICAgICAgICAgICAgaWNvbk5vZGUgPSBoYi5pY29uO1xuICAgICAgICB9IGVsc2UgaWYgKGhiLmljb24gPT09ICdIT01FJyB8fCBVdGlscy5pc051bGwoaGIuaWNvbikpIHtcbiAgICAgICAgICAgIGljb25Ob2RlID0gPEhvbWVJY29uIGZvbnRTaXplPXtpY29uU2l6ZSA/IGljb25TaXplIDogJ3NtYWxsJ30vPjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGljb25Ob2RlID0gPGkgY2xhc3NOYW1lPXtoYi5pY29ufSBzdHlsZT17aWNvblNpemUgPyB7Zm9udFNpemU6IGljb25TaXplfSA6IHVuZGVmaW5lZH0vPjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IChcbiAgICAgICAgICAgIDxMaXN0SXRlbUJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J3NpZGViYXJfX2hvbWUtYnV0dG9uJyArIChob21lU2VsZWN0ZWQgPyAnIHNpZGViYXJfX2hvbWUtYnV0dG9uLS1zZWxlY3RlZCcgOiAnJyl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRIb21lU2VsZWN0ZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIENsZWFyIGFueSBhY3RpdmUgcm91dGUgc28gbm8gcm91dGUgbGluayBzdGF5cyBoaWdobGlnaHRlZFxuICAgICAgICAgICAgICAgICAgICAvLyAoYWN0aXZlUm91dGUoKSBtYXRjaGVzIG9uIGlkOyAnX19ob21lX18nIG1hdGNoZXMgbm9uZSkuXG4gICAgICAgICAgICAgICAgICAgIHNldEFjdGl2ZVJvdXRlTWVudSh7aWQ6ICdfX2hvbWVfXycsIG5hbWU6ICdIb21lJ30pO1xuICAgICAgICAgICAgICAgICAgICBoYi5jYWxsYmFjayAmJiBoYi5jYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IG9wZW4gPyAnZmxleC1zdGFydCcgOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgLy8gcGFuZWwgb2Zmc2V0ID0gbWFyZ2luIDggKyBib3JkZXIgMSArIHBhZGRpbmcgNiA9IDE1cHg7ICsxcHggbGFuZHNcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGljb24gYXQgMTZweCwgZXhhY3RseSB3aGVyZSB0aGUgbGV2ZWwtMCByb3V0ZSBpY29ucyBzaXQuXG4gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gY29sbGFwc2VkLCBrZWVwIHBhZGRpbmcgc3ltbWV0cmljIHNvIHRoZSBpY29uIGNlbnRyZXNcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIG1pbmkgcmFpbCAobWF0Y2hpbmcgdGhlIHJvdXRlcykuXG4gICAgICAgICAgICAgICAgICAgIHBsOiBvcGVuID8gJzFweCcgOiAwLFxuICAgICAgICAgICAgICAgICAgICBwcjogb3BlbiA/IDIuNSA6IDAsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgIC4uLihoYi5zdHlsZSB8fCB7fSlcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0ZWQvaG92ZXIgaGlnaGxpZ2h0IGxpdmVzIGluIHRoZSBza2luXG4gICAgICAgICAgICAgICAgICAgIC8vICguc2lkZWJhcl9faG9tZS1idXR0b24tLXNlbGVjdGVkIGluIHNraW5zLmNzcykuXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TGlzdEl0ZW1JY29uXG4gICAgICAgICAgICAgICAgICAgIHN4PXt7bWFyZ2luOiBvcGVuID8gbnVsbCA6ICdhdXRvJywgbWluV2lkdGg6IG9wZW4gPyBJQ09OX0NPTCA6IDAsIG1yOiBvcGVuID8gMCA6ICdhdXRvJywganVzdGlmeUNvbnRlbnQ6IG9wZW4gPyAnZmxleC1zdGFydCcgOiAnY2VudGVyJywgY29sb3I6IGhpZ2hsaWdodH19PlxuICAgICAgICAgICAgICAgICAgICB7aWNvbk5vZGV9XG4gICAgICAgICAgICAgICAgPC9MaXN0SXRlbUljb24+XG4gICAgICAgICAgICAgICAge29wZW4gJiYgaGIudGV4dCA/IDxkaXYgc3R5bGU9e3tmb250V2VpZ2h0OiAzMDAsIGZvbnRTaXplOiAnLjg1cmVtJ319PntoYi50ZXh0fTwvZGl2PiA6IG51bGx9XG4gICAgICAgICAgICA8L0xpc3RJdGVtQnV0dG9uPlxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnc2lkZWJhcl9faG9tZS1idXR0b24nICsgKGhvbWVTZWxlY3RlZCA/ICcgc2lkZWJhcl9faG9tZS1idXR0b24tLXNlbGVjdGVkJyA6ICcnKX1cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnNnB4JyxcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBvcGVuID8gJzAgMCAwIDJweCcgOiAwLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDIwLCA2MCwgOTQsIDAuMDUpJyxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMjAsIDYwLCA5NCwgMC4wOCknLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7IW9wZW4gPyAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtoYi50ZXh0IHx8ICdIb21lJ30gcGxhY2VtZW50PVwicmlnaHRcIiBhcnJvdz57YnV0dG9ufTwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICApIDogYnV0dG9ufVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgc2lkZWJhciAkeyFvcGVuID8gJ3NpZGViYXItLW1pbmknIDogJyd9YH1cbiAgICAgICAgICAgIGRhdGE9e2FjdGl2ZUNvbG9yfVxuICAgICAgICA+XG4gICAgICAgICAgICB7LyogVE9QOiBicmFuZCAvIGxvZ28gKi99XG4gICAgICAgICAgICB7bG9nb0ltZyAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaWRlYmFyX190b3BcIj5cbiAgICAgICAgICAgICAgICAgICAge2xvZ29JbWd9XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5oZWFkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9faGVhZGluZ1wiPntwcm9wcy5oZWFkaW5nfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgey8qIEhvbWUgYnV0dG9uIOKAlCB1bmRlciB0aGUgbG9nbywgYWJvdmUgdGhlIHJvdXRlcyAqL31cbiAgICAgICAgICAgIHtyZW5kZXJIb21lQnV0dG9uKCl9XG5cbiAgICAgICAgICAgIHsvKiBNSURETEU6IHNjcm9sbGFibGUgbmF2ICovfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGViYXJfX3Njcm9sbFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e1V0aWxzLmlzTnVsbChwcm9wcy5ob21lQnV0dG9uU2V0dGluZ3MpID8gdW5kZWZpbmVkIDoge3BhZGRpbmdUb3A6IDB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMaXN0IHN4PXt7bXQ6IFV0aWxzLmlzTnVsbChwcm9wcy5ob21lQnV0dG9uU2V0dGluZ3MpID8gMSA6IDB9fSBjbGFzc05hbWU9XCJuYXZcIj5cbiAgICAgICAgICAgICAgICAgICAge2NyZWF0ZUxpbmtzKHJvdXRlc0RhdGEpfVxuICAgICAgICAgICAgICAgIDwvTGlzdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQk9UVE9NOiBhcHAgbG9nbyArIGNvcHlyaWdodCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9fYm90dG9tXCI+XG4gICAgICAgICAgICAgICAgeyFVdGlscy5pc051bGwoYXBwTG9nb1BhdGgpID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNpZGViYXJfX2FwcC1sb2dvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZEF2YXRhciBwbGFpbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17YXBwTG9nb1BhdGh9IGFsdD1cIlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9fY29weXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIMKpIHtuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hc2lkZT5cbiAgICApO1xufVxuXG5Gb2xkaW5nVGFiU2lkZWJhci5wcm9wVHlwZXMgPSB7XG4gICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5vbmVPZihbJ3ByaW1hcnknLCAnYmx1ZScsICdncmVlbicsICdvcmFuZ2UnLCAncmVkJywgJ2FnaWxpdHknXSksXG4gICAgc2Vjb25kYXJ5VGhlbWVDb2xvcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIHJ0bEFjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgcm91dGVzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICBsb2dvOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgICAgIGlubmVyTGluazogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICAgICAgaW1nU3JjOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbiAgICAgICAgfSksXG4gICAgICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgICAgICBvdXR0ZXJMaW5rOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICBpbWdTcmM6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgICAgIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICAgICAgICB9KVxuICAgIF0pLFxuICAgIGhlYWRpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgYXBwTG9nb1BhdGg6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY2xvc2VTaWRlYmFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkYXNoYm9hcmRMYXVuY2hlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbG9nb1N0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIG9uT3BlbkRyYXdlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaG9tZUJ1dHRvblNldHRpbmdzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICBpY29uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZWxlbWVudF0pLFxuICAgICAgICBpY29uU2l6ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAgICAgICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBQcm9wVHlwZXMuZnVuY1xuICAgIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb2xkaW5nVGFiU2lkZWJhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsbUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFN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
|