@agilemotion/oui-react-js 2.0.13 → 2.0.14
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.
|
@@ -62,7 +62,7 @@ function getSorting(order, orderBy) {
|
|
|
62
62
|
const useStyles = (0, _styles.makeStyles)(theme => ({
|
|
63
63
|
root: {
|
|
64
64
|
width: '100%',
|
|
65
|
-
marginTop: theme.spacing(
|
|
65
|
+
marginTop: theme.spacing(1)
|
|
66
66
|
},
|
|
67
67
|
paper: {
|
|
68
68
|
width: '100%',
|
|
@@ -376,27 +376,31 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
|
|
|
376
376
|
function doHandleClick(event, id) {
|
|
377
377
|
if (_Utils.default.isNull(props.config.disableRowSelection) || props.config.disableRowSelection === false) {
|
|
378
378
|
_ApplicationManager.default.enableFormMarkers(true);
|
|
379
|
-
const
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
newSelected = newSelected.concat(selected.slice(0, -1));
|
|
389
|
-
} else if (selectedIndex > 0) {
|
|
390
|
-
newSelected = newSelected.concat(selected.slice(0, selectedIndex), selected.slice(selectedIndex + 1));
|
|
391
|
-
}
|
|
379
|
+
const existingIndex = selected.indexOf(id);
|
|
380
|
+
let newSelected;
|
|
381
|
+
if (props.multiSelect === true) {
|
|
382
|
+
// Toggle behaviour: clicking an already-selected row removes
|
|
383
|
+
// it; otherwise add it to the selection. Without this, the
|
|
384
|
+
// multi-select picker (e.g. MultiLookupField) leaves users
|
|
385
|
+
// unable to back out a row they ticked by accident.
|
|
386
|
+
if (existingIndex >= 0) {
|
|
387
|
+
newSelected = [...selected.slice(0, existingIndex), ...selected.slice(existingIndex + 1)];
|
|
392
388
|
} else {
|
|
393
|
-
newSelected
|
|
389
|
+
newSelected = [...selected, id];
|
|
394
390
|
}
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
391
|
+
} else {
|
|
392
|
+
// Single-select: no-op on re-click (preserved from prior
|
|
393
|
+
// behaviour — single-row grids rely on this to avoid
|
|
394
|
+
// accidental deselect during cell edits).
|
|
395
|
+
if (existingIndex >= 0) {
|
|
396
|
+
return;
|
|
399
397
|
}
|
|
398
|
+
newSelected = [id];
|
|
399
|
+
}
|
|
400
|
+
let selectedRows = getSelectedRows(newSelected);
|
|
401
|
+
setSelected(newSelected);
|
|
402
|
+
if (!_Utils.default.isNull(props.onSelectionChange)) {
|
|
403
|
+
props.onSelectionChange(selectedRows);
|
|
400
404
|
}
|
|
401
405
|
}
|
|
402
406
|
}
|
|
@@ -661,6 +665,16 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
|
|
|
661
665
|
let event = new _Event.default(props.handle, props.viewId, rows);
|
|
662
666
|
_Observable.default.fireEvent(_EventType.default.DATA_ARRIVED, event);
|
|
663
667
|
|
|
668
|
+
// Plain React-prop callback for consumers that want to react to a
|
|
669
|
+
// data load without going through the eventManager subscription
|
|
670
|
+
// dance. Receives the freshly-rendered rows array. Used by
|
|
671
|
+
// MultiLookupField to pre-select rows that are already in the
|
|
672
|
+
// field's value, so the operator can see which results they have
|
|
673
|
+
// already added.
|
|
674
|
+
if (!_Utils.default.isNull(props.onRowsLoaded)) {
|
|
675
|
+
props.onRowsLoaded(rows);
|
|
676
|
+
}
|
|
677
|
+
|
|
664
678
|
// Tile grids auto-select the first row after a load when no
|
|
665
679
|
// selection is in place yet, so the consumer view always has a
|
|
666
680
|
// currently-selected item to render details for. Firing
|
|
@@ -1075,4 +1089,4 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
|
|
|
1075
1089
|
onRowsPerPageChange: handleChangeRowsPerPage
|
|
1076
1090
|
})) : null) : null);
|
|
1077
1091
|
});
|
|
1078
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfcmVhY3RTdXBlclJlc3BvbnNpdmVUYWJsZSIsIl9DaGVja2JveCIsIl9VdGlscyIsIl9SZXN0U2VydmljZSIsIl9EYXRhR3JpZEZpbHRlciIsIl9EYXRhR3JpZEhlYWRpbmciLCJfVGFibGVDZWxsQ29udGVudCIsIl9UYWJsZVBhZ2luYXRpb24iLCJfY29sb3JzIiwiX0V2ZW50IiwiX09ic2VydmFibGUiLCJfRXZlbnRUeXBlIiwiX0dyaWQiLCJfQnV0dG9uIiwiJCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0FsZXJ0IiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9MYXlvdXQiLCJfRHluYW1pY0pTIiwiX1N3aXRjaCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX0dyYWJDb250ZXh0IiwiX0N1cnNvck92ZXJsYXkiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIiwiZXhwb3J0cyIsImV2YWx1YXRlVGFibGVDZWxsV2lkdGgiLCJtdWx0aVNlbGVjdCIsImNvbHVtbiIsImNvbHVtbkNvdW50Iiwid2lkdGgiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJpc0V4cHJlc3Npb24iLCJhdHRyaWJ1dGVzIiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdCIsImNvbmNhdCIsImlkIiwiVXRpbHMiLCJpc051bGwiLCJkZXNjIiwiYSIsImIiLCJvcmRlckJ5Iiwic3RhYmxlU29ydCIsImFycmF5IiwiY21wIiwic3RhYmlsaXplZFRoaXMiLCJtYXAiLCJlbCIsImluZGV4Iiwic29ydCIsIm9yZGVyIiwiZ2V0U29ydGluZyIsInVzZVN0eWxlcyIsIm1ha2VTdHlsZXMiLCJ0aGVtZSIsInJvb3QiLCJtYXJnaW5Ub3AiLCJzcGFjaW5nIiwicGFwZXIiLCJoZWlnaHQiLCJwb3NpdGlvbiIsInpJbmRleCIsInNjcm9sbFBhZGRpbmciLCJwYWRkaW5nIiwibm9TY3JvbGxQYWRkaW5nIiwidGFibGVCb2R5IiwiZGlzcGxheSIsIm92ZXJmbG93WSIsInRhYmxlU2VsZWN0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJncmV5MzAwIiwiYmFja2dyb3VuZCIsInRhYmxlUm93IiwidGFibGVXcmFwcGVyIiwidGFibGUiLCJ2aXN1YWxseUhpZGRlbiIsImJvcmRlciIsImNsaXAiLCJtYXJnaW4iLCJ0b3AiLCJEYXRhR3JpZCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX2NvbmZpZyRhdHRyaWJ1dGVzIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1IiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MiIsIl9wcm9wcyRjb25maWckYXR0cmlidTMiLCJjbGFzc2VzIiwic2V0T3JkZXIiLCJ1c2VTdGF0ZSIsImNvbmZpZyIsInBhcnNlQ29uZmlnIiwidmlld0lkIiwic2V0T3JkZXJCeSIsInNlbGVjdGVkIiwic2V0U2VsZWN0ZWQiLCJ0b3RhbE51bWJlck9mUm93cyIsInNldFRvdGFsTnVtYmVyT2ZSb3dzIiwiY3JpdGVyaWEiLCJwYWdlIiwic2V0UGFnZSIsInJvd3MiLCJzZXRSb3dzIiwiZGVsZXRlZFJvd3MiLCJzZXREZWxldGVkUm93cyIsImVkaXRhYmxlIiwic2V0RWRpdGFibGUiLCJzY3JvbGxXaWR0aCIsInNldFNjcm9sbFdpZHRoIiwicm93c1BlclBhZ2VPcHRpb25zIiwicm93c1BlclBhZ2VMb2FkaW5nIiwic2V0Um93c1BlclBhZ2VMb2FkaW5nIiwicm93c1BlclBhZ2UiLCJzZXRSb3dzUGVyUGFnZSIsInBhZ2VTaXplIiwiaGlnaGxpZ2h0Um93U2VsZWN0aW9uIiwidXNlUmVmIiwiZGlzYWJsZVJvd1NlbGVjdGlvbiIsImNlbGxzIiwiaGVhZGluZ0hhbmRsZSIsImZpbHRlckhhbmRsZSIsImNvbHVtbkxheW91dEhhbmRsZXMiLCJlZGl0b3JIYW5kbGVzIiwicm93RXJyb3JNYXAiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsIndyYXAiLCJzZXRXcmFwIiwicm93Q291bnQiLCJyb3dzUmVmIiwibm90ZUtleSIsImNvbHVtbldpZHRocyIsImRyYWdTcGVjIiwicm93R3JhYlNwZWMiLCJyb3ciLCJyb3dzR3JhYmJhYmxlIiwiZW5hYmxlZCIsImFwaSIsInBhcmFtZXRlcnMiLCJpc0ZpbHRlcmFibGUiLCJnZXRQYXJhbWV0ZXJzIiwic2VsZWN0aW9uIiwic2VsZWN0ZWRSb3dzIiwibGVuZ3RoIiwiaiIsInB1c2giLCJjb2x1bW5EYXRhQmluZGluZ3MiLCJjb2x1bW5OYW1lcyIsImNvbHVtbnMiLCJkYXRhQmluZGluZyIsImdldENoaWxkcmVuIiwiY2hpbGRyZW4iLCJjaGlsZCIsInByb3BlcnRpZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJjb2x1bW5MYXlvdXRIYW5kbGUiLCJtb3JlQ2hpbGRyZW4iLCJlZGl0b3JIYW5kbGUiLCJsb2FkRGF0YSIsImFjdGlvbkNvbmZpZyIsImV2ZW50Iiwic2VhcmNoIiwiZGVsZXRlU2VsZWN0ZWRSb3dzIiwibmV3Um93cyIsImZpbHRlciIsImlzU2VsZWN0ZWQiLCJnZXRTZWxlY3RlZFJvd3MiLCJzcGxpY2UiLCJuZXdSb3ciLCJvblNlbGVjdGlvbkNoYW5nZSIsInVwZGF0ZVNjcm9sbEJhclBhZGRpbmciLCJjdXJyZW50IiwidmFsdWVDaGFuZ2VDYWxsYmFjayIsImNsZWFyIiwiRXZlbnQiLCJoYW5kbGUiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJTRUxFQ1RJT05fQ0hBTkdFIiwiZGVsZXRlUm93cyIsInJvd0lkcyIsImlkU2V0IiwiU2V0IiwicmVtYWluaW5nIiwic2VsZWN0IiwiYWRkUm93cyIsIm9ic2VydmVSb3ciLCJuZXdTZWxlY3Rpb24iLCJudW1iZXJPZlBhZ2VzIiwicmVmcmVzaCIsInBhcnNlZENvbmZpZyIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJmb3JtQXBpIiwiaGFuZGxlUm93R3JhYlRvZ2dsZSIsImlzUm93R3JhYmJhYmxlIiwiR3JhYkNvbnRleHQiLCJpc0FjdGl2ZSIsImdyYWIiLCJyb3dJbmRleCIsImNvbXBvbmVudElkIiwiQ3Vyc29yT3ZlcmxheSIsInNob3ciLCJST1dfR1JBQl9TVEFSVCIsInRib2R5IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm9mZnNldFdpZHRoIiwiY2xpZW50V2lkdGgiLCJ3aW5kb3ciLCJvbnJlc2l6ZSIsImhhbmRsZVJlcXVlc3RTb3J0IiwiaXNEZXNjIiwiaGFuZGxlU2VsZWN0QWxsQ2xpY2siLCJ0YXJnZXQiLCJjaGVja2VkIiwibmV3U2VsZWN0ZWRzIiwibmFtZSIsImVuYWJsZUZvcm1NYXJrZXJzIiwiZG9IYW5kbGVDbGljayIsInNlbGVjdGVkSW5kZXgiLCJpbmRleE9mIiwibmV3U2VsZWN0ZWQiLCJzbGljZSIsImZpcmVTZWxlY3Rpb25FdmVudCIsImdyaWRUeXBlIiwiaXNSb3dEcmFnRGlzYWJsZWQiLCJkaXNhYmxlZFdoZW4iLCJleGVjdXRlU2NyaXB0T2JqZWN0Iiwic2V0Q3Vyc29yIiwiY3Vyc29yIiwiYm9keSIsInN0eWxlIiwiaGFuZGxlUm93TW91c2VFbnRlciIsImhhbmRsZVJvd01vdXNlTGVhdmUiLCJoYW5kbGVDbGljayIsImNsb3Nlc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJvbkNlbGxTZWxlY3Rpb25DaGFuZ2UiLCJoYW5kbGVDZWxsQ2xpY2siLCJmaWVsZFR5cGUiLCJoYW5kbGVDaGFuZ2VQYWdlIiwibmV3UGFnZSIsImN1cnJlbnRQYWdlIiwiaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UiLCJ2YWx1ZSIsInByb2Nlc3NEYXRhIiwiZGF0YSIsImNvbmYiLCJ0b3RhbE51bWJlck9mUmVjb3JkcyIsInJlY29yZHMiLCJ1cGRhdGVSb3dDbGFzc2VzIiwidGFibGVSb3dzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwic2VydmljZSIsImRhdGFTZXJ2aWNlIiwic2VydmljZVR5cGUiLCJ0eXBlIiwibWV0aG9kIiwiaW52b2tlUnBjIiwiaW52b2tlUmVzdCIsImNvbXBvbmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImNvbnNvbGUiLCJlcnJvciIsImVycm9yVHlwZSIsInB1Ymxpc2hFcnJvck1lc3NhZ2UiLCJFcnJvciIsInJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZSIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWRkU3Vic2NyaXB0aW9ucyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJpc0VkaXRhYmxlIiwidmlzaWJsZUNvbHVtbkNvdW50IiwiaGlkZGVuIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwic2VsZWN0aW9uTW9kZSIsImVkaXRvciIsImRlZmF1bHRFZGl0b3IiLCJkYXRhUXVlcnlOYW1lIiwiaGFzTG9hZEV2ZW50IiwibG9hZFN1YnNjcmlwdGlvbnMiLCJzdWJzY3JpcHRpb24iLCJldmVudFR5cGUiLCJsb2FkU3Vic2NyaXB0aW9uIiwiYWN0aW9ucyIsImFjdGlvbiIsImFjdGlvblR5cGUiLCJhdXRvTG9hZERhdGEiLCJDT01QT05FTlRfTE9BRCIsImFkZFJvd0ZvY3VzTGlzdGVuZXIiLCJmb2N1c291dCIsInNlbGVjdGVkRWxlbWVudCIsInJvd0F0dHJpYnV0ZXMiLCJjbGFzc0V2YWx1YXRvciIsImNsYXNzTmFtZSIsInVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzIiwicmVhZE9ubHlFdmFsdWF0b3IiLCJyZWFkT25seSIsInVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzIiwiY29sdW1uUmVhZE9ubHkiLCJwcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyIsIkRBVEFfQVJSSVZFRCIsImZpcnN0Um93SWQiLCJmaXJzdFJvd0xpc3QiLCJzZWxlY3Rpb25FdmVudCIsIlJPV19ERUxFVEVEIiwicm93VmFsdWVzIiwiZWRpdG9yQ2hhbmdlSGFuZGxlciIsInJvd0lkIiwiZmllbGQiLCJ1cGRhdGVOZXN0ZWRQcm9wZXJ0eSIsImNyZWF0ZUNlbGwiLCJjb2x1bW5OYW1lIiwiY2VsbEhhbmRsZSIsInJvd0NlbGxzIiwiY2VsbHNFbnRyeSIsInJlZnJlc2hDZWxsIiwiY2VsbCIsInJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uIiwicm93RXJyb3JzIiwicm93RXJyb3JIYW5kbGVyIiwia2V5cyIsImZpbmQiLCJyb3dFcnJvciIsImlzUm93RXJyb3JzRW1wdHkiLCJrZXkiLCJ2YWx1ZVJvd3MiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJnZXRUaWxlTGFiZWwiLCJjb3VudGVyIiwiY3JlYXRlRWxlbWVudCIsInJlbmRlclRpbGUiLCJpc0l0ZW1TZWxlY3RlZCIsIml0ZW0iLCJ4cyIsIm1lcmdlT2JqZWN0cyIsInRpbGVTdHlsZSIsIm1pbldpZHRoIiwidmFyaWFudCIsImNvbG9yIiwib25DbGljayIsInJlbmRlclRpbGVzIiwiX3Byb3BzJGNvbmZpZyIsIm1lc3NhZ2UiLCJlbXB0eU1lc3NhZ2UiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJtaW5IZWlnaHQiLCJmb250U2l6ZSIsImZvbnRTdHlsZSIsIkZyYWdtZW50IiwibGFiZWxJZCIsImNyZWF0ZUNvbHVtbkxheW91dEhhbmRsZSIsImNyZWF0ZUNlbGxFZGl0b3JIYW5kbGUiLCJoYXNCb3JkZXIiLCJtZXJnZVN0eWxlcyIsImJvcmRlclJhZGl1cyIsIm5vdGVzIiwibm90ZSIsIm1hcmdpbkJvdHRvbSIsIm1lc3NhZ2VUeXBlIiwiaW5jbHVkZXMiLCJmaWx0ZXJXcmFwcGVyQ2xhc3MiLCJvbkZpbHRlclN1Ym1pdCIsIm9uUmVxdWVzdFNvcnQiLCJjb250YWluZXIiLCJib3JkZXJCb3R0b20iLCJjb250cm9sIiwib25DaGFuZ2UiLCJzeCIsImxhYmVsIiwiVGFibGUiLCJjZWxsU3BhY2luZyIsIm51bVNlbGVjdGVkIiwib25TZWxlY3RBbGxDbGljayIsInJlc2l6ZUhhbmRsZXIiLCJUYm9keSIsIm1heEhlaWdodCIsImJvZHlNYXhIZWlnaHQiLCJkZWZhdWx0Um93U3R5bGUiLCJmbGV4V3JhcCIsIlRyIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25Eb3VibGVDbGljayIsIm9uUm93RG91YmxlQ2xpY2siLCJyb2xlIiwidGFiSW5kZXgiLCJUZCIsImlucHV0UHJvcHMiLCJfcm93JGNvbHVtblJlYWRPbmx5IiwiX2NvbHVtbiRlZGl0b3IiLCJsYXlvdXQiLCJhbGlnbiIsImRpc2FibGVkIiwiZm9ybSIsIkxheW91dCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImNvbCIsInBhcmVudCIsIm9uUm93RXJyb3IiLCJyZWZDYWxsYmFjayIsInZhbGlkYXRvciIsImNvbHVtbkNvbmZpZyIsImNvbnRlbnRUeXBlIiwiY2VsbEZvcm1hdHRlciIsInBhZ2luYXRpb24iLCJwYWduYXRpb24iLCJjb3VudCIsImJhY2tJY29uQnV0dG9uUHJvcHMiLCJuZXh0SWNvbkJ1dHRvblByb3BzIiwib25QYWdlQ2hhbmdlIiwib25Sb3dzUGVyUGFnZUNoYW5nZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9EYXRhR3JpZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7bWFrZVN0eWxlc30gZnJvbSAnQG11aS9zdHlsZXMnO1xuaW1wb3J0IHtUYWJsZSwgVGJvZHksIFRkLCBUcn0gZnJvbSAncmVhY3Qtc3VwZXItcmVzcG9uc2l2ZS10YWJsZSc7XG5pbXBvcnQgJ3JlYWN0LXN1cGVyLXJlc3BvbnNpdmUtdGFibGUvZGlzdC9TdXBlclJlc3BvbnNpdmVUYWJsZVN0eWxlLmNzcyc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnQG11aS9tYXRlcmlhbC9DaGVja2JveCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0ICcuL0RhdGFHcmlkLmNzcyc7XG5pbXBvcnQge2ludm9rZVJlc3QsIGludm9rZVJwY30gZnJvbSAnLi4vUmVzdFNlcnZpY2UnO1xuaW1wb3J0IERhdGFHcmlkRmlsdGVyIGZyb20gJy4vRGF0YUdyaWRGaWx0ZXInO1xuaW1wb3J0IERhdGFHcmlkSGVhZGluZyBmcm9tICcuL0RhdGFHcmlkSGVhZGluZyc7XG5pbXBvcnQgVGFibGVDZWxsQ29udGVudCBmcm9tICcuL1RhYmxlQ2VsbENvbnRlbnQnO1xuaW1wb3J0IFRhYmxlUGFnaW5hdGlvbiBmcm9tICdAbXVpL21hdGVyaWFsL1RhYmxlUGFnaW5hdGlvbic7XG5pbXBvcnQge2dyZXkzMDB9IGZyb20gJ21hdGVyaWFsLXVpL3N0eWxlcy9jb2xvcnMnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgR3JpZCBmcm9tICdAbXVpL21hdGVyaWFsL0dyaWQnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQgKiBhcyAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgQWxlcnQgZnJvbSAncmVhY3QtYm9vdHN0cmFwL0FsZXJ0JztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuL2xheW91dC9MYXlvdXQnO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tIFwiLi4vRHluYW1pY0pTXCI7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ0BtdWkvbWF0ZXJpYWwvU3dpdGNoJztcbmltcG9ydCBGb3JtQ29udHJvbExhYmVsIGZyb20gJ0BtdWkvbWF0ZXJpYWwvRm9ybUNvbnRyb2xMYWJlbCc7XG5pbXBvcnQgR3JhYkNvbnRleHQgZnJvbSAnLi4vaW50ZXJhY3Rpb24vR3JhYkNvbnRleHQnO1xuaW1wb3J0IEN1cnNvck92ZXJsYXkgZnJvbSBcIi4uL2ludGVyYWN0aW9uL0N1cnNvck92ZXJsYXlcIjtcblxuZXhwb3J0IGNvbnN0IE1VTFRJX1NFTEVDVF9DSEVDS0JPWF9DT0xfV0lEVEggPSA2NDtcblxuZnVuY3Rpb24gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChtdWx0aVNlbGVjdCwgY29sdW1uLCBjb2x1bW5Db3VudCkge1xuXG4gICAgbGV0IHdpZHRoID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihjb2x1bW4uYXR0cmlidXRlc1snd2lkdGgnXSkgP1xuICAgICAgICBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdChgcG9wdXBUaXRsZV8ke2NvbHVtbi5pZH1gLGNvbHVtbi5hdHRyaWJ1dGVzWyd3aWR0aCddLCBjb2x1bW4pIDogY29sdW1uLmF0dHJpYnV0ZXNbJ3dpZHRoJ107XG5cbiAgICByZXR1cm4gbXVsdGlTZWxlY3QgPT09IHRydWUgP1xuICAgICAgICAnY2FsYygnICsgKCFVdGlscy5pc051bGwod2lkdGgpID8gd2lkdGggOlxuICAgICAgICAgICAgKDEwMCAvIGNvbHVtbkNvdW50KSArICclJykgKyAnIC0gJyArIChNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIC8gY29sdW1uQ291bnQpICsgJ3B4KSdcbiAgICAgICAgOlxuICAgICAgICAodHlwZW9mIHdpZHRoICE9PSAndW5kZWZpbmVkJyA/IHdpZHRoIDogKDEwMCAvIGNvbHVtbkNvdW50KSArICclJyk7XG59XG5cbmZ1bmN0aW9uIGRlc2MoYSwgYiwgb3JkZXJCeSkge1xuICAgIGlmIChiW29yZGVyQnldIDwgYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChiW29yZGVyQnldID4gYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIHN0YWJsZVNvcnQoYXJyYXksIGNtcCkge1xuICAgIGNvbnN0IHN0YWJpbGl6ZWRUaGlzID0gYXJyYXkubWFwKChlbCwgaW5kZXgpID0+IFtlbCwgaW5kZXhdKTtcbiAgICBzdGFiaWxpemVkVGhpcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gY21wKGFbMF0sIGJbMF0pO1xuICAgICAgICBpZiAob3JkZXIgIT09IDApIHJldHVybiBvcmRlcjtcbiAgICAgICAgcmV0dXJuIGFbMV0gLSBiWzFdO1xuICAgIH0pO1xuICAgIHJldHVybiBzdGFiaWxpemVkVGhpcy5tYXAoZWwgPT4gZWxbMF0pO1xufVxuXG5mdW5jdGlvbiBnZXRTb3J0aW5nKG9yZGVyLCBvcmRlckJ5KSB7XG4gICAgcmV0dXJuIG9yZGVyID09PSAnZGVzYycgPyAoYSwgYikgPT4gZGVzYyhhLCBiLCBvcmRlckJ5KSA6IChhLCBiKSA9PiAtZGVzYyhhLCBiLCBvcmRlckJ5KTtcbn1cblxuY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcyh0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nKDMpLFxuICAgIH0sXG4gICAgcGFwZXI6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB6SW5kZXg6ICcwJyxcbiAgICB9LFxuICAgIHNjcm9sbFBhZGRpbmc6IHtcbiAgICAgICAgcGFkZGluZzogJzhweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgbm9TY3JvbGxQYWRkaW5nOiB7XG4gICAgICAgIHBhZGRpbmc6ICcwICFpbXBvcnRhbnQnLFxuICAgICAgICB3aWR0aDogJzFweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgdGFibGVCb2R5OiB7XG4gICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgIG92ZXJmbG93WTogJ2F1dG8nXG4gICAgfSxcbiAgICB0YWJsZVNlbGVjdGVkOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZ3JleTMwMCxcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVSb3c6IHtcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVXcmFwcGVyOiB7XG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9LFxuICAgIHZpc3VhbGx5SGlkZGVuOiB7XG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDIwLFxuICAgICAgICB3aWR0aDogMSxcbiAgICB9XG59KSk7XG5cbmV4cG9ydCBjb25zdCBEYXRhR3JpZCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpO1xuICAgIGNvbnN0IFtvcmRlciwgc2V0T3JkZXJdID0gUmVhY3QudXNlU3RhdGUoJ2Rlc2MnKTtcbiAgICBjb25zdCBbY29uZmlnXSA9IFJlYWN0LnVzZVN0YXRlKFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKSk7XG4gICAgY29uc3QgW29yZGVyQnksIHNldE9yZGVyQnldID0gUmVhY3QudXNlU3RhdGUoJ2lkJyk7XG4gICAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3RvdGFsTnVtYmVyT2ZSb3dzLCBzZXRUb3RhbE51bWJlck9mUm93c10gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbY3JpdGVyaWFdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZGVsZXRlZFJvd3MsIHNldERlbGV0ZWRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZWRpdGFibGUsIHNldEVkaXRhYmxlXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2Nyb2xsV2lkdGgsIHNldFNjcm9sbFdpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzUGVyUGFnZU9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoWzE1LCAzMCwgNDUsIDYwLCA3NSwgMTUwLCAzMDBdKTtcbiAgICBjb25zdCBbcm93c1BlclBhZ2VMb2FkaW5nLCBzZXRSb3dzUGVyUGFnZUxvYWRpbmddID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3Jvd3NQZXJQYWdlLCBzZXRSb3dzUGVyUGFnZV0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5jb25maWcucGFnZVNpemUpO1xuICAgIGNvbnN0IGhpZ2hsaWdodFJvd1NlbGVjdGlvbiA9IFJlYWN0LnVzZVJlZighVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5oaWdobGlnaHRSb3dTZWxlY3Rpb24pXG4gICAgICAgID8gcHJvcHMuY29uZmlnLmhpZ2hsaWdodFJvd1NlbGVjdGlvbiA6ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pID8gIXByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uIDogdHJ1ZSk7XG4gICAgY29uc3QgW2NlbGxzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaGVhZGluZ0hhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlckhhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2NvbHVtbkxheW91dEhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtlZGl0b3JIYW5kbGVzXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbcm93RXJyb3JNYXBdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFt3cmFwLCBzZXRXcmFwXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCByb3dDb3VudCA9IFJlYWN0LnVzZVJlZigtMSk7XG4gICAgY29uc3Qgcm93c1JlZiA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgbGV0IG5vdGVLZXkgPSAwO1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IFJlYWN0LnVzZVJlZih7fSk7XG5cbiAgICBjb25zdCBkcmFnU3BlYyA9IGNvbmZpZy5hdHRyaWJ1dGVzPy5kcmFnU3BlYyB8fCB7fTtcbiAgICBjb25zdCByb3dHcmFiU3BlYyA9IGRyYWdTcGVjLnJvdyB8fCB7fTtcbiAgICBjb25zdCByb3dzR3JhYmJhYmxlID0gcm93R3JhYlNwZWMuZW5hYmxlZCA9PT0gdHJ1ZTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBjcml0ZXJpYSgpIHtcbiAgICAgICAgICAgICAgICBjcml0ZXJpYS5wYXJhbWV0ZXJzID0gaXNGaWx0ZXJhYmxlKCkgPyBmaWx0ZXJIYW5kbGUuYXBpLmdldFBhcmFtZXRlcnMoKSA6IFtdO1xuICAgICAgICAgICAgICAgIGNyaXRlcmlhLnBhZ2VTaXplID0gcm93c1BlclBhZ2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY3JpdGVyaWE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvd3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFtpXSA9PT0gcm93c1tqXS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93cy5wdXNoKHJvd3Nbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY29sdW1uRGF0YUJpbmRpbmdzKCkge1xuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9IGNvbmZpZy5jb2x1bW5zW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKCFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgaGVhZGluZ0hhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWx0ZXJIYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGZpbHRlckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbHVtbkxheW91dEhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uTGF5b3V0SGFuZGxlID0gY29sdW1uTGF5b3V0SGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY29sdW1uTGF5b3V0SGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlLmFwaSkgJiYgIVV0aWxzLmlzTnVsbChjb2x1bW5MYXlvdXRIYW5kbGUuYXBpLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVDaGlsZHJlbiA9IGNvbHVtbkxheW91dEhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1vcmVDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG1vcmVDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZWRpdG9ySGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlZGl0b3JIYW5kbGUgPSBlZGl0b3JIYW5kbGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChlZGl0b3JIYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGUuYXBpKSAmJiAhVXRpbHMuaXNOdWxsKGVkaXRvckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9yZUNoaWxkcmVuID0gZWRpdG9ySGFuZGxlLmFwaS5nZXRDaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwobW9yZUNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgbW9yZUNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2FkRGF0YTogKGFjdGlvbkNvbmZpZywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzZWFyY2goYWN0aW9uQ29uZmlnLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlU2VsZWN0ZWRSb3dzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIGxldCBuZXdSb3dzID0gcm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXdSb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICAgICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAvLyBTeW5jIHRoZSByZWYgdGhhdCBiYWNrcyB0aGUgYGdldCByb3dzYCBnZXR0ZXIg4oCUIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgIC8vIGFwaS5yb3dzIHJldHVybnMgd2hhdGV2ZXIgcm93c1JlZiB3YXMgYXQgbGFzdCBzeW5jIChvZnRlblxuICAgICAgICAgICAgICAgIC8vIGVtcHR5IGFmdGVyIGEgcHJldmlvdXMgY2xlYXIoKSksIGV2ZW4gdGhvdWdoIHRoZSBsb2NhbFxuICAgICAgICAgICAgICAgIC8vIGByb3dzYCBhcnJheSBoYXMgYmVlbiBtdXRhdGVkLiBjbGVhcigpIGRvZXMgdGhpczsgZGF0YSBsb2FkXG4gICAgICAgICAgICAgICAgLy8gZG9lcyB0aGlzOyBhZGRSb3dzL2RlbGV0ZVNlbGVjdGVkUm93cyBkaWRuJ3Qg4oCUIGxlYWRpbmcgdG9cbiAgICAgICAgICAgICAgICAvLyBUcmFuc2Zlckxpc3QncyB0cmFuc2Zlci1hbGwtYmFjayBmYWlsaW5nIGJlY2F1c2UgYXBpLnJvd3NcbiAgICAgICAgICAgICAgICAvLyBzaG93ZWQgZW1wdHkgcmlnaHQgYWZ0ZXIgYSB0cmFuc2Zlci1hbGwtb3V0LlxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd3M7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgICAgIHNldFJvd3MoW10pO1xuXG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3MoW10pKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gU3VyZ2ljYWwgZGVsZXRlIGJ5IHJvdyBpZHMg4oCUIGRvZXMgTk9UIHRvdWNoIHRoZSBzZWxlY3Rpb24gc3RhdGUuXG4gICAgICAgICAgICAvLyBDb3VudGVycGFydCB0byBkZWxldGVTZWxlY3RlZFJvd3MgZm9yIGNhc2VzIChUcmFuc2Zlckxpc3QgZG91YmxlLVxuICAgICAgICAgICAgLy8gY2xpY2spIHdoZXJlIHRoZSBjYWxsZXIgd2FudHMgdG8gcmVtb3ZlIHNwZWNpZmljIHJvd3Mgd2l0aG91dFxuICAgICAgICAgICAgLy8gaGlqYWNraW5nIHRoZSB1c2VyJ3MgY3VycmVudCBncmlkIHNlbGVjdGlvbi5cbiAgICAgICAgICAgIGRlbGV0ZVJvd3M6IChyb3dJZHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvd0lkcyB8fCByb3dJZHMubGVuZ3RoID09PSAwKSByZXR1cm4gcm93cztcbiAgICAgICAgICAgICAgICBjb25zdCBpZFNldCA9IG5ldyBTZXQocm93SWRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSByb3dzLmZpbHRlcigocm93KSA9PiAhaWRTZXQuaGFzKHJvdy5pZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByZW1haW5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcm93cztcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdDogKHJvd3MpID0+IHtcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQocm93cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkUm93czogKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChvYnNlcnZlUm93KG5ld1JvdykpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5wdXNoKG5ld1Jvdy5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1Jvd3MpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgLy8gU2VlIGRlbGV0ZVNlbGVjdGVkUm93cyBmb3IgdGhlIHJhdGlvbmFsZSDigJQga2VlcCByb3dzUmVmIGluXG4gICAgICAgICAgICAgICAgLy8gc3luYyB3aXRoIHRoZSBtdXRhdGVkIGxvY2FsIHJvd3MgYXJyYXkgc28gdGhlIGBnZXQgcm93c2BcbiAgICAgICAgICAgICAgICAvLyBnZXR0ZXIgcmV0dXJucyBjdXJyZW50IGRhdGEgYWZ0ZXIgYWRkUm93cy5cbiAgICAgICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSByb3dzO1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlQ2FsbGJhY2socm93cyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgbnVtYmVyT2ZQYWdlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxOdW1iZXJPZlJvd3MgLyByb3dzUGVyUGFnZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcm93cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93c1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlYXJjaCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckhhbmRsZSAmJiBmaWx0ZXJIYW5kbGUuYXBpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyc2VkQ29uZmlnLnZpc2libGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBmb3JtQXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQgKyBcIl9lZGl0X2Zvcm1cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93R3JhYlRvZ2dsZShyb3csIGluZGV4KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkgcmV0dXJuO1xuICAgICAgICBpZiAoR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkgcmV0dXJuO1xuXG4gICAgICAgIEdyYWJDb250ZXh0LmdyYWIocHJvcHMuaGFuZGxlLCB7XG4gICAgICAgICAgICByb3csXG4gICAgICAgICAgICByb3dJbmRleDogaW5kZXgsXG4gICAgICAgICAgICBjb21wb25lbnRJZDogcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgQ3Vyc29yT3ZlcmxheS5zaG93KCk7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChcbiAgICAgICAgICAgIEV2ZW50VHlwZS5ST1dfR1JBQl9TVEFSVCxcbiAgICAgICAgICAgIG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKSB7XG4gICAgICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluVGFibGVCb2R5Jyk7XG4gICAgICAgIGlmICh0Ym9keSAhPT0gbnVsbCAmJiB0eXBlb2YgdGJvZHkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRTY3JvbGxXaWR0aCh0Ym9keS5vZmZzZXRXaWR0aCAtIHRib2R5LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uIG9ucmVzaXplKCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVJlcXVlc3RTb3J0ID0gKGV2ZW50LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBjb25zdCBpc0Rlc2MgPSBvcmRlckJ5ID09PSBwcm9wZXJ0eSAmJiBvcmRlciA9PT0gJ2Rlc2MnO1xuICAgICAgICBzZXRPcmRlcihpc0Rlc2MgPyAnYXNjJyA6ICdkZXNjJyk7XG4gICAgICAgIHNldE9yZGVyQnkocHJvcGVydHkpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGxDbGljayhldmVudCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkcyA9IHJvd3MubWFwKG4gPT4gbi5uYW1lKTtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3RlZHMpO1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1NlbGVjdGVkcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGVjdGVkLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5pZCA9PT0gc2VsZWN0ZWRbal0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRSb3dzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pIHx8IHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gLTE7XG4gICAgICAgICAgICBpZihzZWxlY3RlZC5pbmRleE9mKGlkKSA8IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWQgPSBbXTtcblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5tdWx0aVNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gbmV3U2VsZWN0ZWQuY29uY2F0KHNlbGVjdGVkLCBpZCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBuZXdTZWxlY3RlZC5jb25jYXQoc2VsZWN0ZWQuc2xpY2UoMSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSW5kZXggPT09IHNlbGVjdGVkLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gbmV3U2VsZWN0ZWQuY29uY2F0KHNlbGVjdGVkLnNsaWNlKDAsIC0xKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gbmV3U2VsZWN0ZWQuY29uY2F0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnNsaWNlKDAsIHNlbGVjdGVkSW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnNsaWNlKHNlbGVjdGVkSW5kZXggKyAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZC5wdXNoKGlkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gZ2V0U2VsZWN0ZWRSb3dzKG5ld1NlbGVjdGVkKTtcblxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vblNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXJlU2VsZWN0aW9uRXZlbnQoKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb25maWcpICYmICghVXRpbHMuaXNOdWxsKGhlYWRpbmdIYW5kbGUpIHx8IGNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnKSkge1xuICAgICAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZ2V0U2VsZWN0ZWRSb3dzKHNlbGVjdGVkKSk7XG4gICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuU0VMRUNUSU9OX0NIQU5HRSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSb3dHcmFiYmFibGUocm93KSB7XG4gICAgICAgIHJldHVybiByb3dzR3JhYmJhYmxlICYmICFpc1Jvd0RyYWdEaXNhYmxlZChyb3cpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUm93RHJhZ0Rpc2FibGVkKHJvdykge1xuICAgICAgICBpZiAoIWRyYWdTcGVjLmRpc2FibGVkV2hlbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KFxuICAgICAgICAgICAgJ1JPVy0nICsgcm93LmlkICsgJy1kcmFnLWRpc2FibGVkJyxcbiAgICAgICAgICAgIGRyYWdTcGVjLmRpc2FibGVkV2hlbixcbiAgICAgICAgICAgIHByb3BzLmNvbmZpZy5pZCxcbiAgICAgICAgICAgIHtyb3c6IHJvd30sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEN1cnNvcihjdXJzb3IpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBjdXJzb3IgfHwgJ2RlZmF1bHQnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVJvd01vdXNlRW50ZXIocm93KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSBzaG93IGdyYWIgY3Vyc29yIGlmIG5vdCBhbHJlYWR5IGhvbGRpbmcgc29tZXRoaW5nXG4gICAgICAgIGlmICghR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgc2V0Q3Vyc29yKHJvd0dyYWJTcGVjLmN1cnNvciB8fCAnZ3JhYicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93TW91c2VMZWF2ZSgpIHtcbiAgICAgICAgc2V0Q3Vyc29yKCdkZWZhdWx0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQsIHJvdywgaW5kZXgpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5jbG9zZXN0KCcuZWRpdENlbGwnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChyb3dzR3JhYmJhYmxlICYmICFpc1Jvd0RyYWdEaXNhYmxlZChyb3cpKSB7XG4gICAgICAgICAgICBoYW5kbGVSb3dHcmFiVG9nZ2xlKHJvdywgaW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25DZWxsU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZG9IYW5kbGVDbGljayhldmVudCwgcm93LmlkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDZWxsQ2xpY2soZXZlbnQsIGlkLCBjb2x1bW4pIHtcbiAgICAgICAgaWYgKGNvbHVtbi5maWVsZFR5cGUgIT09ICdkb2N1bWVudCcpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gOiBFdmFsdWF0ZSBpZiB0aGlzIGNhbGwgaXMgbmVjZXNzYXJ5XG4gICAgICAgICAgICBkb0hhbmRsZUNsaWNrKGV2ZW50LCBpZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICBwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UoaWQsIGNvbHVtbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2VQYWdlKGV2ZW50LCBuZXdQYWdlKSB7XG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gbmV3UGFnZSArIDE7XG4gICAgICAgIHNldFBhZ2UobmV3UGFnZSk7XG4gICAgICAgIHNlYXJjaCgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVJvd3NQZXJQYWdlKGV2ZW50KSB7XG4gICAgICAgIHNldFJvd3NQZXJQYWdlKHJvd3NQZXJQYWdlID0+IGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIHNldFBhZ2UoMCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JzZXJ2ZVJvdyA9IChyb3cpID0+IHtcbiAgICAgICAgLypsZXQgb2JzZXJ2YWJsZVJvdyA9IG9ic2VydmFibGUocm93KTtcbiAgICAgICAgb2JzZXJ2ZShcbiAgICAgICAgICAgIG9ic2VydmFibGVSb3csXG4gICAgICAgICAgICBjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBuZXdWYWx1ZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgb2xkVmFsdWUgPSBjaGFuZ2Uub2xkVmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hDZWxsKHJvdy5pZCwgY2hhbmdlLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVJvdzsqL1xuXG4gICAgICAgIHJldHVybiByb3c7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NEYXRhKGRhdGEsIGNvbmYpIHtcbiAgICAgICAgc2V0VG90YWxOdW1iZXJPZlJvd3MoZGF0YS50b3RhbE51bWJlck9mUmVjb3JkcyA/IGRhdGEudG90YWxOdW1iZXJPZlJlY29yZHMgOiBkYXRhLnJlY29yZHMubGVuZ3RoKTtcblxuICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSBkYXRhLnJlY29yZHM7XG4gICAgICAgIHVwZGF0ZVJvd0NsYXNzZXMoZGF0YS5yZWNvcmRzKTtcbiAgICAgICAgbGV0IHRhYmxlUm93cyA9IFtdO1xuICAgICAgICBsZXQgcmVjb3JkcyA9IGRhdGEucmVjb3JkcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0YWJsZVJvd3MucHVzaChvYnNlcnZlUm93KHJlY29yZHNbaV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFJvd3ModGFibGVSb3dzKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2ggPSAoYWN0aW9uQ29uZmlnID0gbnVsbCwgZXZlbnQpID0+IHtcbiAgICAgICAgbGV0IGNvbmYgPSBjb25maWc7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZikpIHtcbiAgICAgICAgICAgIGNvbmYgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2VydmljZSA9ICFVdGlscy5pc051bGwoY29uZi5kYXRhU2VydmljZSkgPyBjb25mLmRhdGFTZXJ2aWNlIDogIVV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcpID8gYWN0aW9uQ29uZmlnLmRhdGFTZXJ2aWNlIDogbnVsbDtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2VydmljZSkpIHtcbiAgICAgICAgICAgIGxldCBzZXJ2aWNlVHlwZSA9IHNlcnZpY2UudHlwZTtcbiAgICAgICAgICAgIGlmICghc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZSA9ICdycGMnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VydmljZVR5cGUgPT09ICdycGMnIHx8IHNlcnZpY2VUeXBlID09PSAncmVzdCcpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWV0aG9kID0gc2VydmljZVR5cGUgPT09ICdycGMnID8gaW52b2tlUnBjIDogaW52b2tlUmVzdDtcbiAgICAgICAgICAgICAgICBtZXRob2Qoe1xuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHByb3BzLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWQsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhKHJlc3VsdCwgY29uZik7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZS5lcnJvclR5cGUgIT09ICdJTlZBTElEX1BBUkFNRVRFUicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnB1Ymxpc2hFcnJvck1lc3NhZ2UoZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBzZXJ2aWNlIHR5cGUgOiAnICsgc2VydmljZVR5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFjdGlvbkNvbmZpZyAmJiBhY3Rpb25Db25maWcudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlUGFyYW1ldGVyQ29uZmlnVmFsdWUoYWN0aW9uQ29uZmlnLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YShkYXRhLCBjb25mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjcml0ZXJpYS5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIGlmICghcm93c1BlclBhZ2VMb2FkaW5nKSB7XG4gICAgICAgICAgICBzZXRSb3dzUGVyUGFnZUxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgc2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICB9LCBbcm93c1BlclBhZ2VdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIFJlYWN0LnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgZXZlbnRIYW5kbGluZ0NvbmZpZyA9IFV0aWxzLmlzTnVsbChjb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZykgPyB7fSA6IGNvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnO1xuICAgICAgICBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMgPSBVdGlscy5pc051bGwoZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zKSA/IFtdIDogZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zO1xuXG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxpbmdDb25maWcsIHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN5c3RlbVN1YnNjcmlwdGlvbnMocHJvcHMudmlld0lkLCBjb25maWcpO1xuICAgICAgICBsZXQgaXNFZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICBsZXQgdmlzaWJsZUNvbHVtbkNvdW50ID0gMDtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgbGV0IGhpZGRlbiA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb2x1bW4sICdoaWRkZW4nLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24oaGlkZGVuLCBwcm9wcy5jb25maWcuaWQpKSB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZUNvbHVtbkNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gY29uZmlnLmNvbHVtbnNbaV07XG5cbiAgICAgICAgICAgIGlmICghaXNFZGl0YWJsZSAmJiBjb2x1bW4uYXR0cmlidXRlc1snZWRpdGFibGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGlzRWRpdGFibGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldEVkaXRhYmxlKHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZighY29sdW1uLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA9IGV2YWx1YXRlVGFibGVDZWxsV2lkdGgocHJvcHMuc2VsZWN0aW9uTW9kZSA9PT0gJ01VTFRJUExFJywgY29sdW1uLCB2aXNpYmxlQ29sdW1uQ291bnQpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uLmF0dHJpYnV0ZXMpICYmIGNvbHVtbi5hdHRyaWJ1dGVzWydlZGl0YWJsZSddID09PSB0cnVlICYmIFV0aWxzLmlzTnVsbChjb2x1bW4uZWRpdG9yKSkge1xuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0RWRpdG9yID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVkaXRvci5maWVsZFR5cGUgPSAnVEVYVF9GSUVMRCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVkaXRvci5pZCA9IGNvbHVtbi5pZCArICdFZGl0b3InO1xuXG4gICAgICAgICAgICAgICAgY29sdW1uLmVkaXRvciA9IGRlZmF1bHRFZGl0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjcml0ZXJpYS5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIGNyaXRlcmlhLmRhdGFRdWVyeU5hbWUgPSBjb25maWcuZGF0YVF1ZXJ5TmFtZTtcblxuICAgICAgICBsZXQgaGFzTG9hZEV2ZW50O1xuICAgICAgICBsZXQgbG9hZFN1YnNjcmlwdGlvbnMgPSBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMuZmlsdGVyKChzdWJzY3JpcHRpb24pID0+IHN1YnNjcmlwdGlvbi5ldmVudFR5cGUgPT09ICdDT01QT05FTlRfTE9BRCcpO1xuICAgICAgICBmb3IgKGNvbnN0IGxvYWRTdWJzY3JpcHRpb24gb2YgbG9hZFN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChsb2FkU3Vic2NyaXB0aW9uLmFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5hY3Rpb25UeXBlID09PSAnbG9hZERhdGEnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaGFzTG9hZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhdXRvTG9hZERhdGEgPSBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUoY29uZmlnLCAnYXV0b0xvYWREYXRhJywgbnVsbCk7XG4gICAgICAgIGlmICghaGFzTG9hZEV2ZW50ICYmIChhdXRvTG9hZERhdGEgPT09IG51bGwgfHwgYXV0b0xvYWREYXRhID09PSB0cnVlKSkge1xuICAgICAgICAgICAgc2VhcmNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG51bGwpO1xuICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5DT01QT05FTlRfTE9BRCwgZXZlbnQpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmRhdGEpKSB7XG4gICAgICAgICAgICBsZXQgY29uZiA9IGNvbmZpZztcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZikpIHtcbiAgICAgICAgICAgICAgICBjb25mID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm9jZXNzRGF0YShwcm9wcy5kYXRhLCBjb25mKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5kYXRhXSk7XG5cbiAgICBmdW5jdGlvbiBhZGRSb3dGb2N1c0xpc3RlbmVyKHJvdykge1xuICAgICAgICAkKCcjUk9XLScgKyByb3cuaWQpXG4gICAgICAgICAgICAuZm9jdXNvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2VsZWN0ZWRFbGVtZW50IG9mIHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgIT09IHJvdy5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVSb3dDbGFzc2VzID0gKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKG5ld1Jvd3MpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcucm93QXR0cmlidXRlcyAmJiBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5jbGFzc0V2YWx1YXRvcikge1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3cuY2xhc3NOYW1lID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoJ1JPVy0nICsgcm93LmlkICsgJ2NsYXNzRXZhbHVhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLmNsYXNzRXZhbHVhdG9yLCBwcm9wcy5jb25maWcuaWQsIHtpbmRleH0sIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzID0gKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKG5ld1Jvd3MpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcucm93QXR0cmlidXRlcyAmJiBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvcikge1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3cucmVhZE9ubHkgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdCgnUk9XLScgKyByb3cuaWQgKyAncmVhZE9ubHlFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMucmVhZE9ubHlFdmFsdWF0b3IsIHByb3BzLmNvbmZpZy5pZCwge2luZGV4fSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMgPSAoY29sdW1uLCBuZXdSb3dzKSA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0cmlidXRlcyAmJiBjb2x1bW4uYXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvcikge1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIG5ld1Jvd3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvdy5jb2x1bW5SZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICByb3cuY29sdW1uUmVhZE9ubHkgPSB7fTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByb3cuY29sdW1uUmVhZE9ubHlbY29sdW1uLmlkXSA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KCdDT0wtJyArIHJvdy5pZCArICctJyArIGNvbHVtbi5pZCArICctcmVhZE9ubHlFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvciwgcHJvcHMuY29uZmlnLmlkLCB7aW5kZXh9LCBudWxsKTtcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICBldmVudE1hbmFnZXIucHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnMocHJvcHMuY29uZmlnLmlkKTtcbiAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuXG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93cyk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkRBVEFfQVJSSVZFRCwgZXZlbnQpO1xuXG4gICAgICAgIC8vIFRpbGUgZ3JpZHMgYXV0by1zZWxlY3QgdGhlIGZpcnN0IHJvdyBhZnRlciBhIGxvYWQgd2hlbiBub1xuICAgICAgICAvLyBzZWxlY3Rpb24gaXMgaW4gcGxhY2UgeWV0LCBzbyB0aGUgY29uc3VtZXIgdmlldyBhbHdheXMgaGFzIGFcbiAgICAgICAgLy8gY3VycmVudGx5LXNlbGVjdGVkIGl0ZW0gdG8gcmVuZGVyIGRldGFpbHMgZm9yLiBGaXJpbmdcbiAgICAgICAgLy8gU0VMRUNUSU9OX0NIQU5HRSBpbmxpbmUgKG5vdCB2aWEgZmlyZVNlbGVjdGlvbkV2ZW50LCB3aGljaFxuICAgICAgICAvLyB3b3VsZCByZWFkIHRoZSBzdGlsbC1zdGFsZSBgc2VsZWN0ZWRgIHN0YXRlIG9uIHRoaXMgdGljaylcbiAgICAgICAgLy8gc28gdGhlIGRvd25zdHJlYW0gc3Vic2NyaWJlciB3YWtlcyB1cCBvbiB0aGUgc2FtZSB0aWNrIGFzXG4gICAgICAgIC8vIHRoZSBkYXRhIGFycml2YWwuXG4gICAgICAgIGlmIChjb25maWc/LmdyaWRUeXBlID09PSAnVElMRScgJiYgcm93cy5sZW5ndGggPiAwICYmIHNlbGVjdGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RSb3dJZCA9IHJvd3NbMF0uaWQ7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJvd0xpc3QgPSBbZmlyc3RSb3dJZF07XG4gICAgICAgICAgICBzZXRTZWxlY3RlZChmaXJzdFJvd0xpc3QpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gZ2V0U2VsZWN0ZWRSb3dzKGZpcnN0Um93TGlzdCk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vblNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZFJvd3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHNlbGVjdGlvbkV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBzZWxlY3RlZFJvd3MpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuU0VMRUNUSU9OX0NIQU5HRSwgc2VsZWN0aW9uRXZlbnQpO1xuICAgICAgICB9XG4gICAgfSwgW3Jvd3NdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGRlbGV0ZWRSb3dzKSAmJiBkZWxldGVkUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIGRlbGV0ZWRSb3dzKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLlJPV19ERUxFVEVELCBldmVudCk7XG4gICAgICAgICAgICBzZXREZWxldGVkUm93cyhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcbiAgICB9LCBbZGVsZXRlZFJvd3NdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnJvd3MpKSB7XG4gICAgICAgICAgICBsZXQgcm93VmFsdWVzID0gW107XG5cbiAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHByb3BzLnJvd3M7XG4gICAgICAgICAgICB1cGRhdGVSb3dDbGFzc2VzKHByb3BzLnJvd3MpO1xuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgcHJvcHMucm93cykge1xuICAgICAgICAgICAgICAgIHJvd1ZhbHVlcy5wdXNoKG9ic2VydmVSb3cocm93KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzKHByb3BzLnJvd3MpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVDb2x1bW5SZWFkT25seVN0YXR1cyhjb2x1bW4sIHByb3BzLnJvd3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSByb3dWYWx1ZXM7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZChbXSk7XG4gICAgICAgICAgICBzZXRSb3dzKHJvd1ZhbHVlcyk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMucm93c10pO1xuXG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB1cGRhdGVSb3dSZWFkT25seVN0YXR1cyhyb3dzKTtcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIHVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzKGNvbHVtbiwgcm93cyk7XG4gICAgICAgIH1cbiAgICB9LCBbcm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgZmlyZVNlbGVjdGlvbkV2ZW50KCk7XG4gICAgfSwgW3NlbGVjdGVkXSk7XG5cbiAgICBjb25zdCBpc1NlbGVjdGVkID0gaWQgPT4gc2VsZWN0ZWQuaW5kZXhPZihpZCkgIT09IC0xO1xuICAgIGNvbnN0IGVkaXRvckNoYW5nZUhhbmRsZXIgPSAocm93SWQsIGZpZWxkLCB2YWx1ZSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICAgICAgICBpZiAocm93LmlkID09PSByb3dJZCkge1xuICAgICAgICAgICAgICAgIFV0aWxzLnVwZGF0ZU5lc3RlZFByb3BlcnR5KHJvdywgZmllbGQsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlQ2hhbmdlQ2FsbGJhY2socm93cyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGlzRmlsdGVyYWJsZSA9ICgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5jb25maWcuY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNvbHVtbiA9IHByb3BzLmNvbmZpZy5jb2x1bW5zW2ldO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGVzWydmaWx0ZXJhYmxlJ10gPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuXG4gICAgY29uc3QgY3JlYXRlQ2VsbCA9IChyb3csIGNvbHVtbk5hbWUsIGNlbGxIYW5kbGUpID0+IHtcbiAgICAgICAgbGV0IHJvd0NlbGxzID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjZWxsc0VudHJ5IG9mIGNlbGxzKSB7XG4gICAgICAgICAgICBpZiAoY2VsbHNFbnRyeS5yb3dJZCA9PT0gcm93LmlkKSB7XG4gICAgICAgICAgICAgICAgcm93Q2VsbHMgPSBjZWxsc0VudHJ5O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChyb3dDZWxscykgfHwgcm93Q2VsbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByb3dDZWxscyA9IHt9O1xuICAgICAgICAgICAgcm93Q2VsbHMucm93SWQgPSByb3cuaWQ7XG4gICAgICAgICAgICBjZWxscy5wdXNoKHJvd0NlbGxzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvd0NlbGxzW2NvbHVtbk5hbWVdID0gY2VsbEhhbmRsZTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVmcmVzaENlbGwgPSAocm93SWQsIGNvbHVtbk5hbWUpID0+IHtcbiAgICAgICAgbGV0IHJvd0NlbGxzID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjZWxsIG9mIGNlbGxzKSB7XG4gICAgICAgICAgICBpZiAoY2VsbC5yb3dJZCA9PT0gcm93SWQpIHtcbiAgICAgICAgICAgICAgICByb3dDZWxscyA9IGNlbGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChyb3dDZWxscykpIHtcbiAgICAgICAgICAgIGxldCBjZWxsID0gcm93Q2VsbHNbY29sdW1uTmFtZV07XG5cbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNlbGwpKSB7XG4gICAgICAgICAgICAgICAgY2VsbC5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uID0gKGNvbHVtbk5hbWUsIHJvd0Vycm9ycykgPT4ge1xuICAgICAgICBpZiAocm93RXJyb3JzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gcm93RXJyb3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvd0Vycm9yc1tpXS5jb2x1bW4gPT09IGNvbHVtbk5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93RXJyb3JzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb3dFcnJvckhhbmRsZXIgPSAocm93SWQsIGVycm9yLCBjb2x1bW4pID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJvd0Vycm9yTWFwKS5sZW5ndGggPT09IDAgfHwgIXJvd0Vycm9yTWFwW3Jvd0lkXSkge1xuICAgICAgICAgICAgcm93RXJyb3JNYXBbcm93SWRdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmICghcm93RXJyb3JNYXBbcm93SWRdLmZpbmQocm93RXJyb3IgPT4gcm93RXJyb3IuY29sdW1uID09PSBjb2x1bW4pKSB7XG4gICAgICAgICAgICAgICAgcm93RXJyb3JNYXBbcm93SWRdLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVtb3ZlQWxsUm93RXJyb3JzQnlDb2x1bW4oY29sdW1uLCByb3dFcnJvck1hcFtyb3dJZF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNSb3dFcnJvcnNFbXB0eSA9ICgpID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJvd0Vycm9yTWFwKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocm93RXJyb3JNYXApKSB7XG4gICAgICAgICAgICBpZiAocm93RXJyb3JNYXBba2V5XS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVDaGFuZ2VDYWxsYmFjayA9ICh2YWx1ZVJvd3MpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKSkge1xuICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKHZhbHVlUm93cywgIWlzUm93RXJyb3JzRW1wdHkoKSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0VGlsZUxhYmVsKHJvdykge1xuICAgICAgICBsZXQgY291bnRlciA9IDA7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7Y29uZmlnLmNvbHVtbnMubWFwKGNvbHVtbiA9PiAoXG4gICAgICAgICAgICAgICAgICAgICFjb2x1bW4uYXR0cmlidXRlcy5oaWRkZW4gP1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4ga2V5PXtjb3VudGVyKyt9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbIVV0aWxzLmlzTnVsbChjb2x1bW4uZGF0YUJpbmRpbmcpID8gY29sdW1uLmRhdGFCaW5kaW5nIDogY29sdW1uLmlkXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW5kZXJUaWxlKHJvdywga2V5KSB7XG4gICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICByZXR1cm4gKDxHcmlkIGl0ZW0geHMgc3R5bGU9e1V0aWxzLm1lcmdlT2JqZWN0cyhwcm9wcy5jb25maWcudGlsZVN0eWxlLCB7XG4gICAgICAgICAgICBoZWlnaHQ6ICcyMDBweCcsXG4gICAgICAgICAgICBtaW5XaWR0aDogJzIwMHB4J1xuICAgICAgICB9KX0ga2V5PXtrZXl9PlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiBjb2xvcj17XCJzZWNvbmRhcnlcIn1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogaXNJdGVtU2VsZWN0ZWQgPyAnMXB4IHNvbGlkIDFweCBzb2xpZCAjZjJhOTAwJyA6ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBpc0l0ZW1TZWxlY3RlZCA/ICcjZmZmOGUxJyA6ICcjZmFmYWZhJyxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gZG9IYW5kbGVDbGljayhldmVudCwgcm93LmlkKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdldFRpbGVMYWJlbChyb3cpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvR3JpZD4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlclRpbGVzKCkge1xuICAgICAgICBpZiAoIXJvd3MgfHwgcm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIFRpbGUgZ3JpZCBoYXMgbm8gbmF0aXZlIGVtcHR5LXJvdyBhZmZvcmRhbmNlIGxpa2UgdGhlIHRhYmxlXG4gICAgICAgICAgICAvLyBwYXRoIChgb3VpVGFibGUtZW1wdHlgIENTUyksIHNvIHBhaW50IHRoZSBtZXNzYWdlIGlubGluZS5cbiAgICAgICAgICAgIC8vIENhbGxlciBjYW4gb3ZlcnJpZGUgdmlhIGBjb25maWcuZW1wdHlNZXNzYWdlYCBmb3Igdmlldy1cbiAgICAgICAgICAgIC8vIHNwZWNpZmljIGNvcHkgKFwiTm8gcHJvY3VyZW1lbnRzIHlldFwiLCBldGMpLlxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHByb3BzLmNvbmZpZz8uZW1wdHlNZXNzYWdlIHx8ICdObyBpdGVtcyB0byBzaG93JztcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiAnMTIwcHgnLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyM5ZTllOWUnLFxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzAuODc1cmVtJyxcbiAgICAgICAgICAgICAgICAgICAgZm9udFN0eWxlOiAnaXRhbGljJyxcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAge21lc3NhZ2V9XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByb3dzLm1hcCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNJdGVtU2VsZWN0ZWQgPSBpc1NlbGVjdGVkKHJvdy5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbElkID0gYGVuaGFuY2VkLXRhYmxlLWNoZWNrYm94LSR7aW5kZXh9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5pbmRleCA9IGluZGV4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRpbGUocm93LCBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVDb2x1bW5MYXlvdXRIYW5kbGUoY29sdW1uLCBpbmRleCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbHVtbkxheW91dEhhbmRsZXNbY29sdW1uLmlkICsgaW5kZXhdKSkge1xuICAgICAgICAgICAgbGV0IGhhbmRsZSA9IHt9O1xuICAgICAgICAgICAgY29sdW1uTGF5b3V0SGFuZGxlc1tjb2x1bW4uaWQgKyBpbmRleF0gPSBoYW5kbGU7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbkxheW91dEhhbmRsZXNbY29sdW1uLmlkICsgaW5kZXhdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUNlbGxFZGl0b3JIYW5kbGUoY29sdW1uKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoZWRpdG9ySGFuZGxlc1tjb2x1bW4uaWQgKyBcIl9lZGl0b3JcIl0pKSB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0ge307XG4gICAgICAgICAgICBlZGl0b3JIYW5kbGVzW2NvbHVtbi5pZCArIFwiX2VkaXRvclwiXSA9IGhhbmRsZTtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWRpdG9ySGFuZGxlc1tjb2x1bW4uaWQgKyBcIl9lZGl0b3JcIl07XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgdmlzaWJsZSAmJlxuICAgICAgICA8ZGl2IGlkPXtwcm9wcy5jb25maWcuaWR9IGNsYXNzTmFtZT17VXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKHByb3BzLmNvbmZpZywgJ2NsYXNzTmFtZScsIG51bGwpfSBzdHlsZT17KFV0aWxzLmlzTnVsbChwcm9wcy5oYXNCb3JkZXIpIHx8IHByb3BzLmhhc0JvcmRlciA9PT0gdHJ1ZSkgP1xuICAgICAgICAgICAgVXRpbHMubWVyZ2VTdHlsZXMoe1xuICAgICAgICAgICAgICAgIG1hcmdpbjogJzAnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTJlMmUyJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnXG4gICAgICAgICAgICB9LCBwcm9wcy5jb25maWcpIDogVXRpbHMubWVyZ2VTdHlsZXMoe30sIHByb3BzLmNvbmZpZyl9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLm5vdGVzKSA/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5ub3Rlcy5tYXAoKG5vdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17bm90ZUtleSsrfSBzdHlsZT17e3BhZGRpbmc6ICc4cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7bWFyZ2luQm90dG9tOiAnMCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXtub3RlLm1lc3NhZ2VUeXBlID09PSAnV0FSTicgPyAnd2FybmluZycgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90ZS5tZXNzYWdlVHlwZSA9PT0gJ0lORk8nID8gJycgOiAnZGFuZ2VyJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e25vdGUubWVzc2FnZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcm93c1BlclBhZ2VPcHRpb25zLmluY2x1ZGVzKHByb3BzLmNvbmZpZy5wYWdlU2l6ZSkgP1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuZ3JpZFR5cGUgPT09ICdUSUxFJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7bWFyZ2luOiAnMCAwIDhweCA4cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaWx0ZXJhYmxlKCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2ZpbHRlckhhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtwcm9wcy5jb25maWd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJXcmFwcGVyQ2xhc3M9e3Byb3BzLmZpbHRlcldyYXBwZXJDbGFzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg9e3Njcm9sbFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclN1Ym1pdD17c2VhcmNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RTb3J0PXtoYW5kbGVSZXF1ZXN0U29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5yb290fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezF9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIGl0ZW0geHM9ezEyfSBzcGFjaW5nPXsxfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRpbGVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICc0cHggOHB4IDAgOHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXt3cmFwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFdyYXAoZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4PXt7ICcmIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsJzogeyBmb250U2l6ZTogJzAuNzVyZW0nIH0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiV3JhcCB0YWJsZSB0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ge2ByZXNwb25zaXZlLXRhYmxlYH0gc3R5bGU9e3toZWlnaHQ6IHByb3BzLmhlaWdodH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPXtgJHsnb3VpVGFibGUnICsgKHJvd3MubGVuZ3RoID09PSAwID8gJyBvdWlUYWJsZS1lbXB0eScgOiAnJyl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxTcGFjaW5nPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJ0YWJsZVRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICcxMDAlJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZCBjbGFzc05hbWU9eydmaWx0ZXJIZWFkJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAnY2FsYygxMDAlIC0gJyArIHByb3BzLnNjcm9sbFdpZHRoICsgJ3B4KSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbHRlcmFibGUoKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtmaWx0ZXJIYW5kbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyV3JhcHBlckNsYXNzPXtwcm9wcy5maWx0ZXJXcmFwcGVyQ2xhc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxXaWR0aD17c2Nyb2xsV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclN1Ym1pdD17c2VhcmNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZXF1ZXN0U29ydD17aGFuZGxlUmVxdWVzdFNvcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkSGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17aGVhZGluZ0hhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1TZWxlY3RlZD17c2VsZWN0ZWQubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoPXtzY3JvbGxXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdEFsbENsaWNrPXtoYW5kbGVTZWxlY3RBbGxDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RTb3J0PXtoYW5kbGVSZXF1ZXN0U29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dDb3VudD17dG90YWxOdW1iZXJPZlJvd3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSb3dzKFsuLi5yb3dzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRib2R5IGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZUJvZHl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ttYXhIZWlnaHQ6IFV0aWxzLmlzTnVsbChwcm9wcy5ib2R5TWF4SGVpZ2h0KSA/IHByb3BzLmJvZHlNYXhIZWlnaHQgOiAnNDJ2aCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWFpblRhYmxlQm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyb3dzLm1hcCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0l0ZW1TZWxlY3RlZCA9IGlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxJZCA9IGBlbmhhbmNlZC10YWJsZS1jaGVja2JveC0ke2luZGV4fWA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRSb3dTdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnN0eWxlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1lcmdlT2JqZWN0cyhwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5zdHlsZSwgZGVmYXVsdFJvd1N0eWxlKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Um93U3R5bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBoYW5kbGVSb3dNb3VzZUVudGVyKHJvdyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXtoYW5kbGVSb3dNb3VzZUxlYXZlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGhhbmRsZUNsaWNrKGV2ZW50LCByb3csIGluZGV4KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvdWJsZUNsaWNrPXtldmVudCA9PiBwcm9wcy5vblJvd0RvdWJsZUNsaWNrICYmIHByb3BzLm9uUm93RG91YmxlQ2xpY2socm93LCBldmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNoZWNrZWQ9e2lzSXRlbVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXsnUk9XLScgKyByb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e2lzSXRlbVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J291aS10YWJsZS1yb3cgJyArICgoaGlnaGxpZ2h0Um93U2VsZWN0aW9uLmN1cnJlbnQgPyBpc0l0ZW1TZWxlY3RlZCA/IGNsYXNzZXMudGFibGVTZWxlY3RlZCA6IGNsYXNzZXMudGFibGVSb3cgOiAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAocm93LmNsYXNzTmFtZSA/ICgnICcgKyByb3cuY2xhc3NOYW1lKSA6ICcnKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc2VsZWN0aW9uTW9kZSA9PT0gJ01VTFRJUExFJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGQgcGFkZGluZz1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17TVVMVElfU0VMRUNUX0NIRUNLQk9YX0NPTF9XSURUSCArICdweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnc2VsZWN0Q2VsbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtpc0l0ZW1TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17eydhcmlhLWxhYmVsbGVkYnknOiBsYWJlbElkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD4gOiBudWxsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbmZpZy5jb2x1bW5zLm1hcChjb2x1bW4gPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKGNvbHVtbi5hdHRyaWJ1dGVzWydoaWRkZW4nXSwgcHJvcHMuY29uZmlnLmlkKSA9PT0gdHJ1ZSA/IG51bGwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmxheW91dCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID8gY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggOiAoMTAwIC8gY29uZmlnLmNvbHVtbnMubGVuZ3RoKSArICclJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IXByb3BzLmRpc2FibGVkICYmIGlzSXRlbVNlbGVjdGVkICYmICFVdGlscy5pc051bGwocHJvcHMuZm9ybSkgJiYgIVV0aWxzLmlzTnVsbChjb2x1bW4uZWRpdG9yKSA/ICdlZGl0Q2VsbCcgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4ICsgXCJfXCIgKyBjb2x1bW4uaWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGF5b3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbHVtbkxheW91dEhhbmRsZShjb2x1bW4sIGluZGV4KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXggKyBcIl9cIiArIGNvbHVtbi5pZCArIFwiX2xheW91dFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVSb3c9e3Jvd3MuZmluZCgocikgPT4gci5pZCA9PT0gcm93LmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9wcy5jb25maWcuY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5pZCA9PT0gY29sdW1uLmlkKS5sYXlvdXQpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfSBwYXJlbnQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGQ+IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA/IGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoIDogKDEwMCAvIGNvbmZpZy5jb2x1bW5zLmxlbmd0aCkgKyAnJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbj1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyFwcm9wcy5kaXNhYmxlZCAmJiBpc0l0ZW1TZWxlY3RlZCAmJiAhVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpID8gJ2VkaXRDZWxsJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXggKyBcIl9cIiArIGNvbHVtbi5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlQ2VsbENsaWNrKGV2ZW50LCByb3cuaWQsIGNvbHVtbil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVDZWxsQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcD17d3JhcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUm93RXJyb3I9e3Jvd0Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ2VsbEVkaXRvckhhbmRsZShjb2x1bW4pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3I9eyFwcm9wcy5kaXNhYmxlZCAmJiAhcm93LnJlYWRPbmx5ICYmICFyb3cuY29sdW1uUmVhZE9ubHk/Lltjb2x1bW4/LmlkXSA/IGNvbHVtbi5lZGl0b3IgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmQ2FsbGJhY2s9e2NyZWF0ZUNlbGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3I9e2NvbHVtbi52YWxpZGF0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9e2VkaXRvckNoYW5nZUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db25maWc9e2NvbHVtbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFCaW5kaW5nPXshVXRpbHMuaXNOdWxsKGNvbHVtbi5kYXRhQmluZGluZykgPyBjb2x1bW4uZGF0YUJpbmRpbmcgOiBjb2x1bW4uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3c9e3Jvd31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlPXtjb2x1bW4uZmllbGRUeXBlIHx8IGNvbHVtbi5lZGl0b3I/LmZpZWxkVHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxGb3JtYXR0ZXI9e2NvbHVtbi5jZWxsRm9ybWF0dGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpdGVyaWE9e2NyaXRlcmlhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcz8ucGFnaW5hdGlvbikgJiYgKFV0aWxzLmlzTnVsbChwcm9wcy5wYWdpbmF0aW9uKSB8fCBwcm9wcy5wYWdpbmF0aW9uID09PSB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWdpbmF0aW9uICYmIHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWduYXRpb24gPT09IHRydWUpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVQYWdpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17XCJncmlkLXRhYmxlLXBhZ2luYXRpb25cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1BlclBhZ2VPcHRpb25zPXtyb3dzUGVyUGFnZU9wdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cImRpdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50PXt0b3RhbE51bWJlck9mUm93c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1BlclBhZ2U9e3Jvd3NQZXJQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlPXtwYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrSWNvbkJ1dHRvblByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6ICdwcmV2aW91cyBwYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEljb25CdXR0b25Qcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiAnbmV4dCBwYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYWdlQ2hhbmdlPXtoYW5kbGVDaGFuZ2VQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJvd3NQZXJQYWdlQ2hhbmdlPXtoYW5kbGVDaGFuZ2VSb3dzUGVyUGFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLDBCQUFBLEdBQUFGLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFHLFNBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sZUFB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
|
|
1092
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfcmVhY3RTdXBlclJlc3BvbnNpdmVUYWJsZSIsIl9DaGVja2JveCIsIl9VdGlscyIsIl9SZXN0U2VydmljZSIsIl9EYXRhR3JpZEZpbHRlciIsIl9EYXRhR3JpZEhlYWRpbmciLCJfVGFibGVDZWxsQ29udGVudCIsIl9UYWJsZVBhZ2luYXRpb24iLCJfY29sb3JzIiwiX0V2ZW50IiwiX09ic2VydmFibGUiLCJfRXZlbnRUeXBlIiwiX0dyaWQiLCJfQnV0dG9uIiwiJCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0FsZXJ0IiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9MYXlvdXQiLCJfRHluYW1pY0pTIiwiX1N3aXRjaCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX0dyYWJDb250ZXh0IiwiX0N1cnNvck92ZXJsYXkiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIiwiZXhwb3J0cyIsImV2YWx1YXRlVGFibGVDZWxsV2lkdGgiLCJtdWx0aVNlbGVjdCIsImNvbHVtbiIsImNvbHVtbkNvdW50Iiwid2lkdGgiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJpc0V4cHJlc3Npb24iLCJhdHRyaWJ1dGVzIiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdCIsImNvbmNhdCIsImlkIiwiVXRpbHMiLCJpc051bGwiLCJkZXNjIiwiYSIsImIiLCJvcmRlckJ5Iiwic3RhYmxlU29ydCIsImFycmF5IiwiY21wIiwic3RhYmlsaXplZFRoaXMiLCJtYXAiLCJlbCIsImluZGV4Iiwic29ydCIsIm9yZGVyIiwiZ2V0U29ydGluZyIsInVzZVN0eWxlcyIsIm1ha2VTdHlsZXMiLCJ0aGVtZSIsInJvb3QiLCJtYXJnaW5Ub3AiLCJzcGFjaW5nIiwicGFwZXIiLCJoZWlnaHQiLCJwb3NpdGlvbiIsInpJbmRleCIsInNjcm9sbFBhZGRpbmciLCJwYWRkaW5nIiwibm9TY3JvbGxQYWRkaW5nIiwidGFibGVCb2R5IiwiZGlzcGxheSIsIm92ZXJmbG93WSIsInRhYmxlU2VsZWN0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJncmV5MzAwIiwiYmFja2dyb3VuZCIsInRhYmxlUm93IiwidGFibGVXcmFwcGVyIiwidGFibGUiLCJ2aXN1YWxseUhpZGRlbiIsImJvcmRlciIsImNsaXAiLCJtYXJnaW4iLCJ0b3AiLCJEYXRhR3JpZCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX2NvbmZpZyRhdHRyaWJ1dGVzIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1IiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MiIsIl9wcm9wcyRjb25maWckYXR0cmlidTMiLCJjbGFzc2VzIiwic2V0T3JkZXIiLCJ1c2VTdGF0ZSIsImNvbmZpZyIsInBhcnNlQ29uZmlnIiwidmlld0lkIiwic2V0T3JkZXJCeSIsInNlbGVjdGVkIiwic2V0U2VsZWN0ZWQiLCJ0b3RhbE51bWJlck9mUm93cyIsInNldFRvdGFsTnVtYmVyT2ZSb3dzIiwiY3JpdGVyaWEiLCJwYWdlIiwic2V0UGFnZSIsInJvd3MiLCJzZXRSb3dzIiwiZGVsZXRlZFJvd3MiLCJzZXREZWxldGVkUm93cyIsImVkaXRhYmxlIiwic2V0RWRpdGFibGUiLCJzY3JvbGxXaWR0aCIsInNldFNjcm9sbFdpZHRoIiwicm93c1BlclBhZ2VPcHRpb25zIiwicm93c1BlclBhZ2VMb2FkaW5nIiwic2V0Um93c1BlclBhZ2VMb2FkaW5nIiwicm93c1BlclBhZ2UiLCJzZXRSb3dzUGVyUGFnZSIsInBhZ2VTaXplIiwiaGlnaGxpZ2h0Um93U2VsZWN0aW9uIiwidXNlUmVmIiwiZGlzYWJsZVJvd1NlbGVjdGlvbiIsImNlbGxzIiwiaGVhZGluZ0hhbmRsZSIsImZpbHRlckhhbmRsZSIsImNvbHVtbkxheW91dEhhbmRsZXMiLCJlZGl0b3JIYW5kbGVzIiwicm93RXJyb3JNYXAiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsIndyYXAiLCJzZXRXcmFwIiwicm93Q291bnQiLCJyb3dzUmVmIiwibm90ZUtleSIsImNvbHVtbldpZHRocyIsImRyYWdTcGVjIiwicm93R3JhYlNwZWMiLCJyb3ciLCJyb3dzR3JhYmJhYmxlIiwiZW5hYmxlZCIsImFwaSIsInBhcmFtZXRlcnMiLCJpc0ZpbHRlcmFibGUiLCJnZXRQYXJhbWV0ZXJzIiwic2VsZWN0aW9uIiwic2VsZWN0ZWRSb3dzIiwibGVuZ3RoIiwiaiIsInB1c2giLCJjb2x1bW5EYXRhQmluZGluZ3MiLCJjb2x1bW5OYW1lcyIsImNvbHVtbnMiLCJkYXRhQmluZGluZyIsImdldENoaWxkcmVuIiwiY2hpbGRyZW4iLCJjaGlsZCIsInByb3BlcnRpZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJjb2x1bW5MYXlvdXRIYW5kbGUiLCJtb3JlQ2hpbGRyZW4iLCJlZGl0b3JIYW5kbGUiLCJsb2FkRGF0YSIsImFjdGlvbkNvbmZpZyIsImV2ZW50Iiwic2VhcmNoIiwiZGVsZXRlU2VsZWN0ZWRSb3dzIiwibmV3Um93cyIsImZpbHRlciIsImlzU2VsZWN0ZWQiLCJnZXRTZWxlY3RlZFJvd3MiLCJzcGxpY2UiLCJuZXdSb3ciLCJvblNlbGVjdGlvbkNoYW5nZSIsInVwZGF0ZVNjcm9sbEJhclBhZGRpbmciLCJjdXJyZW50IiwidmFsdWVDaGFuZ2VDYWxsYmFjayIsImNsZWFyIiwiRXZlbnQiLCJoYW5kbGUiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJTRUxFQ1RJT05fQ0hBTkdFIiwiZGVsZXRlUm93cyIsInJvd0lkcyIsImlkU2V0IiwiU2V0IiwicmVtYWluaW5nIiwic2VsZWN0IiwiYWRkUm93cyIsIm9ic2VydmVSb3ciLCJuZXdTZWxlY3Rpb24iLCJudW1iZXJPZlBhZ2VzIiwicmVmcmVzaCIsInBhcnNlZENvbmZpZyIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJmb3JtQXBpIiwiaGFuZGxlUm93R3JhYlRvZ2dsZSIsImlzUm93R3JhYmJhYmxlIiwiR3JhYkNvbnRleHQiLCJpc0FjdGl2ZSIsImdyYWIiLCJyb3dJbmRleCIsImNvbXBvbmVudElkIiwiQ3Vyc29yT3ZlcmxheSIsInNob3ciLCJST1dfR1JBQl9TVEFSVCIsInRib2R5IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm9mZnNldFdpZHRoIiwiY2xpZW50V2lkdGgiLCJ3aW5kb3ciLCJvbnJlc2l6ZSIsImhhbmRsZVJlcXVlc3RTb3J0IiwiaXNEZXNjIiwiaGFuZGxlU2VsZWN0QWxsQ2xpY2siLCJ0YXJnZXQiLCJjaGVja2VkIiwibmV3U2VsZWN0ZWRzIiwibmFtZSIsImVuYWJsZUZvcm1NYXJrZXJzIiwiZG9IYW5kbGVDbGljayIsImV4aXN0aW5nSW5kZXgiLCJpbmRleE9mIiwibmV3U2VsZWN0ZWQiLCJzbGljZSIsImZpcmVTZWxlY3Rpb25FdmVudCIsImdyaWRUeXBlIiwiaXNSb3dEcmFnRGlzYWJsZWQiLCJkaXNhYmxlZFdoZW4iLCJleGVjdXRlU2NyaXB0T2JqZWN0Iiwic2V0Q3Vyc29yIiwiY3Vyc29yIiwiYm9keSIsInN0eWxlIiwiaGFuZGxlUm93TW91c2VFbnRlciIsImhhbmRsZVJvd01vdXNlTGVhdmUiLCJoYW5kbGVDbGljayIsImNsb3Nlc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJvbkNlbGxTZWxlY3Rpb25DaGFuZ2UiLCJoYW5kbGVDZWxsQ2xpY2siLCJmaWVsZFR5cGUiLCJoYW5kbGVDaGFuZ2VQYWdlIiwibmV3UGFnZSIsImN1cnJlbnRQYWdlIiwiaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UiLCJ2YWx1ZSIsInByb2Nlc3NEYXRhIiwiZGF0YSIsImNvbmYiLCJ0b3RhbE51bWJlck9mUmVjb3JkcyIsInJlY29yZHMiLCJ1cGRhdGVSb3dDbGFzc2VzIiwidGFibGVSb3dzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwic2VydmljZSIsImRhdGFTZXJ2aWNlIiwic2VydmljZVR5cGUiLCJ0eXBlIiwibWV0aG9kIiwiaW52b2tlUnBjIiwiaW52b2tlUmVzdCIsImNvbXBvbmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImNvbnNvbGUiLCJlcnJvciIsImVycm9yVHlwZSIsInB1Ymxpc2hFcnJvck1lc3NhZ2UiLCJFcnJvciIsInJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZSIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWRkU3Vic2NyaXB0aW9ucyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJpc0VkaXRhYmxlIiwidmlzaWJsZUNvbHVtbkNvdW50IiwiaGlkZGVuIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwic2VsZWN0aW9uTW9kZSIsImVkaXRvciIsImRlZmF1bHRFZGl0b3IiLCJkYXRhUXVlcnlOYW1lIiwiaGFzTG9hZEV2ZW50IiwibG9hZFN1YnNjcmlwdGlvbnMiLCJzdWJzY3JpcHRpb24iLCJldmVudFR5cGUiLCJsb2FkU3Vic2NyaXB0aW9uIiwiYWN0aW9ucyIsImFjdGlvbiIsImFjdGlvblR5cGUiLCJhdXRvTG9hZERhdGEiLCJDT01QT05FTlRfTE9BRCIsImFkZFJvd0ZvY3VzTGlzdGVuZXIiLCJmb2N1c291dCIsInNlbGVjdGVkRWxlbWVudCIsInJvd0F0dHJpYnV0ZXMiLCJjbGFzc0V2YWx1YXRvciIsImNsYXNzTmFtZSIsInVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzIiwicmVhZE9ubHlFdmFsdWF0b3IiLCJyZWFkT25seSIsInVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzIiwiY29sdW1uUmVhZE9ubHkiLCJwcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyIsIkRBVEFfQVJSSVZFRCIsIm9uUm93c0xvYWRlZCIsImZpcnN0Um93SWQiLCJmaXJzdFJvd0xpc3QiLCJzZWxlY3Rpb25FdmVudCIsIlJPV19ERUxFVEVEIiwicm93VmFsdWVzIiwiZWRpdG9yQ2hhbmdlSGFuZGxlciIsInJvd0lkIiwiZmllbGQiLCJ1cGRhdGVOZXN0ZWRQcm9wZXJ0eSIsImNyZWF0ZUNlbGwiLCJjb2x1bW5OYW1lIiwiY2VsbEhhbmRsZSIsInJvd0NlbGxzIiwiY2VsbHNFbnRyeSIsInJlZnJlc2hDZWxsIiwiY2VsbCIsInJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uIiwicm93RXJyb3JzIiwicm93RXJyb3JIYW5kbGVyIiwia2V5cyIsImZpbmQiLCJyb3dFcnJvciIsImlzUm93RXJyb3JzRW1wdHkiLCJrZXkiLCJ2YWx1ZVJvd3MiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJnZXRUaWxlTGFiZWwiLCJjb3VudGVyIiwiY3JlYXRlRWxlbWVudCIsInJlbmRlclRpbGUiLCJpc0l0ZW1TZWxlY3RlZCIsIml0ZW0iLCJ4cyIsIm1lcmdlT2JqZWN0cyIsInRpbGVTdHlsZSIsIm1pbldpZHRoIiwidmFyaWFudCIsImNvbG9yIiwib25DbGljayIsInJlbmRlclRpbGVzIiwiX3Byb3BzJGNvbmZpZyIsIm1lc3NhZ2UiLCJlbXB0eU1lc3NhZ2UiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJtaW5IZWlnaHQiLCJmb250U2l6ZSIsImZvbnRTdHlsZSIsIkZyYWdtZW50IiwibGFiZWxJZCIsImNyZWF0ZUNvbHVtbkxheW91dEhhbmRsZSIsImNyZWF0ZUNlbGxFZGl0b3JIYW5kbGUiLCJoYXNCb3JkZXIiLCJtZXJnZVN0eWxlcyIsImJvcmRlclJhZGl1cyIsIm5vdGVzIiwibm90ZSIsIm1hcmdpbkJvdHRvbSIsIm1lc3NhZ2VUeXBlIiwiaW5jbHVkZXMiLCJmaWx0ZXJXcmFwcGVyQ2xhc3MiLCJvbkZpbHRlclN1Ym1pdCIsIm9uUmVxdWVzdFNvcnQiLCJjb250YWluZXIiLCJib3JkZXJCb3R0b20iLCJjb250cm9sIiwib25DaGFuZ2UiLCJzeCIsImxhYmVsIiwiVGFibGUiLCJjZWxsU3BhY2luZyIsIm51bVNlbGVjdGVkIiwib25TZWxlY3RBbGxDbGljayIsInJlc2l6ZUhhbmRsZXIiLCJUYm9keSIsIm1heEhlaWdodCIsImJvZHlNYXhIZWlnaHQiLCJkZWZhdWx0Um93U3R5bGUiLCJmbGV4V3JhcCIsIlRyIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25Eb3VibGVDbGljayIsIm9uUm93RG91YmxlQ2xpY2siLCJyb2xlIiwidGFiSW5kZXgiLCJUZCIsImlucHV0UHJvcHMiLCJfcm93JGNvbHVtblJlYWRPbmx5IiwiX2NvbHVtbiRlZGl0b3IiLCJsYXlvdXQiLCJhbGlnbiIsImRpc2FibGVkIiwiZm9ybSIsIkxheW91dCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImNvbCIsInBhcmVudCIsIm9uUm93RXJyb3IiLCJyZWZDYWxsYmFjayIsInZhbGlkYXRvciIsImNvbHVtbkNvbmZpZyIsImNvbnRlbnRUeXBlIiwiY2VsbEZvcm1hdHRlciIsInBhZ2luYXRpb24iLCJwYWduYXRpb24iLCJjb3VudCIsImJhY2tJY29uQnV0dG9uUHJvcHMiLCJuZXh0SWNvbkJ1dHRvblByb3BzIiwib25QYWdlQ2hhbmdlIiwib25Sb3dzUGVyUGFnZUNoYW5nZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9EYXRhR3JpZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7bWFrZVN0eWxlc30gZnJvbSAnQG11aS9zdHlsZXMnO1xuaW1wb3J0IHtUYWJsZSwgVGJvZHksIFRkLCBUcn0gZnJvbSAncmVhY3Qtc3VwZXItcmVzcG9uc2l2ZS10YWJsZSc7XG5pbXBvcnQgJ3JlYWN0LXN1cGVyLXJlc3BvbnNpdmUtdGFibGUvZGlzdC9TdXBlclJlc3BvbnNpdmVUYWJsZVN0eWxlLmNzcyc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnQG11aS9tYXRlcmlhbC9DaGVja2JveCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0ICcuL0RhdGFHcmlkLmNzcyc7XG5pbXBvcnQge2ludm9rZVJlc3QsIGludm9rZVJwY30gZnJvbSAnLi4vUmVzdFNlcnZpY2UnO1xuaW1wb3J0IERhdGFHcmlkRmlsdGVyIGZyb20gJy4vRGF0YUdyaWRGaWx0ZXInO1xuaW1wb3J0IERhdGFHcmlkSGVhZGluZyBmcm9tICcuL0RhdGFHcmlkSGVhZGluZyc7XG5pbXBvcnQgVGFibGVDZWxsQ29udGVudCBmcm9tICcuL1RhYmxlQ2VsbENvbnRlbnQnO1xuaW1wb3J0IFRhYmxlUGFnaW5hdGlvbiBmcm9tICdAbXVpL21hdGVyaWFsL1RhYmxlUGFnaW5hdGlvbic7XG5pbXBvcnQge2dyZXkzMDB9IGZyb20gJ21hdGVyaWFsLXVpL3N0eWxlcy9jb2xvcnMnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgR3JpZCBmcm9tICdAbXVpL21hdGVyaWFsL0dyaWQnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQgKiBhcyAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgQWxlcnQgZnJvbSAncmVhY3QtYm9vdHN0cmFwL0FsZXJ0JztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuL2xheW91dC9MYXlvdXQnO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tIFwiLi4vRHluYW1pY0pTXCI7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ0BtdWkvbWF0ZXJpYWwvU3dpdGNoJztcbmltcG9ydCBGb3JtQ29udHJvbExhYmVsIGZyb20gJ0BtdWkvbWF0ZXJpYWwvRm9ybUNvbnRyb2xMYWJlbCc7XG5pbXBvcnQgR3JhYkNvbnRleHQgZnJvbSAnLi4vaW50ZXJhY3Rpb24vR3JhYkNvbnRleHQnO1xuaW1wb3J0IEN1cnNvck92ZXJsYXkgZnJvbSBcIi4uL2ludGVyYWN0aW9uL0N1cnNvck92ZXJsYXlcIjtcblxuZXhwb3J0IGNvbnN0IE1VTFRJX1NFTEVDVF9DSEVDS0JPWF9DT0xfV0lEVEggPSA2NDtcblxuZnVuY3Rpb24gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChtdWx0aVNlbGVjdCwgY29sdW1uLCBjb2x1bW5Db3VudCkge1xuXG4gICAgbGV0IHdpZHRoID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihjb2x1bW4uYXR0cmlidXRlc1snd2lkdGgnXSkgP1xuICAgICAgICBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdChgcG9wdXBUaXRsZV8ke2NvbHVtbi5pZH1gLGNvbHVtbi5hdHRyaWJ1dGVzWyd3aWR0aCddLCBjb2x1bW4pIDogY29sdW1uLmF0dHJpYnV0ZXNbJ3dpZHRoJ107XG5cbiAgICByZXR1cm4gbXVsdGlTZWxlY3QgPT09IHRydWUgP1xuICAgICAgICAnY2FsYygnICsgKCFVdGlscy5pc051bGwod2lkdGgpID8gd2lkdGggOlxuICAgICAgICAgICAgKDEwMCAvIGNvbHVtbkNvdW50KSArICclJykgKyAnIC0gJyArIChNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIC8gY29sdW1uQ291bnQpICsgJ3B4KSdcbiAgICAgICAgOlxuICAgICAgICAodHlwZW9mIHdpZHRoICE9PSAndW5kZWZpbmVkJyA/IHdpZHRoIDogKDEwMCAvIGNvbHVtbkNvdW50KSArICclJyk7XG59XG5cbmZ1bmN0aW9uIGRlc2MoYSwgYiwgb3JkZXJCeSkge1xuICAgIGlmIChiW29yZGVyQnldIDwgYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChiW29yZGVyQnldID4gYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIHN0YWJsZVNvcnQoYXJyYXksIGNtcCkge1xuICAgIGNvbnN0IHN0YWJpbGl6ZWRUaGlzID0gYXJyYXkubWFwKChlbCwgaW5kZXgpID0+IFtlbCwgaW5kZXhdKTtcbiAgICBzdGFiaWxpemVkVGhpcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gY21wKGFbMF0sIGJbMF0pO1xuICAgICAgICBpZiAob3JkZXIgIT09IDApIHJldHVybiBvcmRlcjtcbiAgICAgICAgcmV0dXJuIGFbMV0gLSBiWzFdO1xuICAgIH0pO1xuICAgIHJldHVybiBzdGFiaWxpemVkVGhpcy5tYXAoZWwgPT4gZWxbMF0pO1xufVxuXG5mdW5jdGlvbiBnZXRTb3J0aW5nKG9yZGVyLCBvcmRlckJ5KSB7XG4gICAgcmV0dXJuIG9yZGVyID09PSAnZGVzYycgPyAoYSwgYikgPT4gZGVzYyhhLCBiLCBvcmRlckJ5KSA6IChhLCBiKSA9PiAtZGVzYyhhLCBiLCBvcmRlckJ5KTtcbn1cblxuY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcyh0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nKDEpLFxuICAgIH0sXG4gICAgcGFwZXI6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB6SW5kZXg6ICcwJyxcbiAgICB9LFxuICAgIHNjcm9sbFBhZGRpbmc6IHtcbiAgICAgICAgcGFkZGluZzogJzhweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgbm9TY3JvbGxQYWRkaW5nOiB7XG4gICAgICAgIHBhZGRpbmc6ICcwICFpbXBvcnRhbnQnLFxuICAgICAgICB3aWR0aDogJzFweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgdGFibGVCb2R5OiB7XG4gICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgIG92ZXJmbG93WTogJ2F1dG8nXG4gICAgfSxcbiAgICB0YWJsZVNlbGVjdGVkOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZ3JleTMwMCxcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVSb3c6IHtcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVXcmFwcGVyOiB7XG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9LFxuICAgIHZpc3VhbGx5SGlkZGVuOiB7XG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDIwLFxuICAgICAgICB3aWR0aDogMSxcbiAgICB9XG59KSk7XG5cbmV4cG9ydCBjb25zdCBEYXRhR3JpZCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpO1xuICAgIGNvbnN0IFtvcmRlciwgc2V0T3JkZXJdID0gUmVhY3QudXNlU3RhdGUoJ2Rlc2MnKTtcbiAgICBjb25zdCBbY29uZmlnXSA9IFJlYWN0LnVzZVN0YXRlKFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKSk7XG4gICAgY29uc3QgW29yZGVyQnksIHNldE9yZGVyQnldID0gUmVhY3QudXNlU3RhdGUoJ2lkJyk7XG4gICAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3RvdGFsTnVtYmVyT2ZSb3dzLCBzZXRUb3RhbE51bWJlck9mUm93c10gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbY3JpdGVyaWFdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZGVsZXRlZFJvd3MsIHNldERlbGV0ZWRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZWRpdGFibGUsIHNldEVkaXRhYmxlXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2Nyb2xsV2lkdGgsIHNldFNjcm9sbFdpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzUGVyUGFnZU9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoWzE1LCAzMCwgNDUsIDYwLCA3NSwgMTUwLCAzMDBdKTtcbiAgICBjb25zdCBbcm93c1BlclBhZ2VMb2FkaW5nLCBzZXRSb3dzUGVyUGFnZUxvYWRpbmddID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3Jvd3NQZXJQYWdlLCBzZXRSb3dzUGVyUGFnZV0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5jb25maWcucGFnZVNpemUpO1xuICAgIGNvbnN0IGhpZ2hsaWdodFJvd1NlbGVjdGlvbiA9IFJlYWN0LnVzZVJlZighVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5oaWdobGlnaHRSb3dTZWxlY3Rpb24pXG4gICAgICAgID8gcHJvcHMuY29uZmlnLmhpZ2hsaWdodFJvd1NlbGVjdGlvbiA6ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pID8gIXByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uIDogdHJ1ZSk7XG4gICAgY29uc3QgW2NlbGxzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaGVhZGluZ0hhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlckhhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2NvbHVtbkxheW91dEhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtlZGl0b3JIYW5kbGVzXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbcm93RXJyb3JNYXBdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFt3cmFwLCBzZXRXcmFwXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCByb3dDb3VudCA9IFJlYWN0LnVzZVJlZigtMSk7XG4gICAgY29uc3Qgcm93c1JlZiA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgbGV0IG5vdGVLZXkgPSAwO1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IFJlYWN0LnVzZVJlZih7fSk7XG5cbiAgICBjb25zdCBkcmFnU3BlYyA9IGNvbmZpZy5hdHRyaWJ1dGVzPy5kcmFnU3BlYyB8fCB7fTtcbiAgICBjb25zdCByb3dHcmFiU3BlYyA9IGRyYWdTcGVjLnJvdyB8fCB7fTtcbiAgICBjb25zdCByb3dzR3JhYmJhYmxlID0gcm93R3JhYlNwZWMuZW5hYmxlZCA9PT0gdHJ1ZTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBjcml0ZXJpYSgpIHtcbiAgICAgICAgICAgICAgICBjcml0ZXJpYS5wYXJhbWV0ZXJzID0gaXNGaWx0ZXJhYmxlKCkgPyBmaWx0ZXJIYW5kbGUuYXBpLmdldFBhcmFtZXRlcnMoKSA6IFtdO1xuICAgICAgICAgICAgICAgIGNyaXRlcmlhLnBhZ2VTaXplID0gcm93c1BlclBhZ2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY3JpdGVyaWE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvd3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFtpXSA9PT0gcm93c1tqXS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93cy5wdXNoKHJvd3Nbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY29sdW1uRGF0YUJpbmRpbmdzKCkge1xuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9IGNvbmZpZy5jb2x1bW5zW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKCFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgaGVhZGluZ0hhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWx0ZXJIYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGZpbHRlckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbHVtbkxheW91dEhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uTGF5b3V0SGFuZGxlID0gY29sdW1uTGF5b3V0SGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY29sdW1uTGF5b3V0SGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlLmFwaSkgJiYgIVV0aWxzLmlzTnVsbChjb2x1bW5MYXlvdXRIYW5kbGUuYXBpLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVDaGlsZHJlbiA9IGNvbHVtbkxheW91dEhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1vcmVDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG1vcmVDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZWRpdG9ySGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlZGl0b3JIYW5kbGUgPSBlZGl0b3JIYW5kbGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChlZGl0b3JIYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGUuYXBpKSAmJiAhVXRpbHMuaXNOdWxsKGVkaXRvckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9yZUNoaWxkcmVuID0gZWRpdG9ySGFuZGxlLmFwaS5nZXRDaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwobW9yZUNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgbW9yZUNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2FkRGF0YTogKGFjdGlvbkNvbmZpZywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzZWFyY2goYWN0aW9uQ29uZmlnLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlU2VsZWN0ZWRSb3dzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIGxldCBuZXdSb3dzID0gcm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXdSb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICAgICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAvLyBTeW5jIHRoZSByZWYgdGhhdCBiYWNrcyB0aGUgYGdldCByb3dzYCBnZXR0ZXIg4oCUIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgIC8vIGFwaS5yb3dzIHJldHVybnMgd2hhdGV2ZXIgcm93c1JlZiB3YXMgYXQgbGFzdCBzeW5jIChvZnRlblxuICAgICAgICAgICAgICAgIC8vIGVtcHR5IGFmdGVyIGEgcHJldmlvdXMgY2xlYXIoKSksIGV2ZW4gdGhvdWdoIHRoZSBsb2NhbFxuICAgICAgICAgICAgICAgIC8vIGByb3dzYCBhcnJheSBoYXMgYmVlbiBtdXRhdGVkLiBjbGVhcigpIGRvZXMgdGhpczsgZGF0YSBsb2FkXG4gICAgICAgICAgICAgICAgLy8gZG9lcyB0aGlzOyBhZGRSb3dzL2RlbGV0ZVNlbGVjdGVkUm93cyBkaWRuJ3Qg4oCUIGxlYWRpbmcgdG9cbiAgICAgICAgICAgICAgICAvLyBUcmFuc2Zlckxpc3QncyB0cmFuc2Zlci1hbGwtYmFjayBmYWlsaW5nIGJlY2F1c2UgYXBpLnJvd3NcbiAgICAgICAgICAgICAgICAvLyBzaG93ZWQgZW1wdHkgcmlnaHQgYWZ0ZXIgYSB0cmFuc2Zlci1hbGwtb3V0LlxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd3M7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgICAgIHNldFJvd3MoW10pO1xuXG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3MoW10pKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gU3VyZ2ljYWwgZGVsZXRlIGJ5IHJvdyBpZHMg4oCUIGRvZXMgTk9UIHRvdWNoIHRoZSBzZWxlY3Rpb24gc3RhdGUuXG4gICAgICAgICAgICAvLyBDb3VudGVycGFydCB0byBkZWxldGVTZWxlY3RlZFJvd3MgZm9yIGNhc2VzIChUcmFuc2Zlckxpc3QgZG91YmxlLVxuICAgICAgICAgICAgLy8gY2xpY2spIHdoZXJlIHRoZSBjYWxsZXIgd2FudHMgdG8gcmVtb3ZlIHNwZWNpZmljIHJvd3Mgd2l0aG91dFxuICAgICAgICAgICAgLy8gaGlqYWNraW5nIHRoZSB1c2VyJ3MgY3VycmVudCBncmlkIHNlbGVjdGlvbi5cbiAgICAgICAgICAgIGRlbGV0ZVJvd3M6IChyb3dJZHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvd0lkcyB8fCByb3dJZHMubGVuZ3RoID09PSAwKSByZXR1cm4gcm93cztcbiAgICAgICAgICAgICAgICBjb25zdCBpZFNldCA9IG5ldyBTZXQocm93SWRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSByb3dzLmZpbHRlcigocm93KSA9PiAhaWRTZXQuaGFzKHJvdy5pZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByZW1haW5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcm93cztcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdDogKHJvd3MpID0+IHtcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQocm93cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkUm93czogKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChvYnNlcnZlUm93KG5ld1JvdykpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5wdXNoKG5ld1Jvdy5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1Jvd3MpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgLy8gU2VlIGRlbGV0ZVNlbGVjdGVkUm93cyBmb3IgdGhlIHJhdGlvbmFsZSDigJQga2VlcCByb3dzUmVmIGluXG4gICAgICAgICAgICAgICAgLy8gc3luYyB3aXRoIHRoZSBtdXRhdGVkIGxvY2FsIHJvd3MgYXJyYXkgc28gdGhlIGBnZXQgcm93c2BcbiAgICAgICAgICAgICAgICAvLyBnZXR0ZXIgcmV0dXJucyBjdXJyZW50IGRhdGEgYWZ0ZXIgYWRkUm93cy5cbiAgICAgICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSByb3dzO1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlQ2FsbGJhY2socm93cyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgbnVtYmVyT2ZQYWdlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxOdW1iZXJPZlJvd3MgLyByb3dzUGVyUGFnZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcm93cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93c1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlYXJjaCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckhhbmRsZSAmJiBmaWx0ZXJIYW5kbGUuYXBpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyc2VkQ29uZmlnLnZpc2libGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBmb3JtQXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQgKyBcIl9lZGl0X2Zvcm1cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93R3JhYlRvZ2dsZShyb3csIGluZGV4KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkgcmV0dXJuO1xuICAgICAgICBpZiAoR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkgcmV0dXJuO1xuXG4gICAgICAgIEdyYWJDb250ZXh0LmdyYWIocHJvcHMuaGFuZGxlLCB7XG4gICAgICAgICAgICByb3csXG4gICAgICAgICAgICByb3dJbmRleDogaW5kZXgsXG4gICAgICAgICAgICBjb21wb25lbnRJZDogcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgQ3Vyc29yT3ZlcmxheS5zaG93KCk7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChcbiAgICAgICAgICAgIEV2ZW50VHlwZS5ST1dfR1JBQl9TVEFSVCxcbiAgICAgICAgICAgIG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKSB7XG4gICAgICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluVGFibGVCb2R5Jyk7XG4gICAgICAgIGlmICh0Ym9keSAhPT0gbnVsbCAmJiB0eXBlb2YgdGJvZHkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRTY3JvbGxXaWR0aCh0Ym9keS5vZmZzZXRXaWR0aCAtIHRib2R5LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uIG9ucmVzaXplKCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVJlcXVlc3RTb3J0ID0gKGV2ZW50LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBjb25zdCBpc0Rlc2MgPSBvcmRlckJ5ID09PSBwcm9wZXJ0eSAmJiBvcmRlciA9PT0gJ2Rlc2MnO1xuICAgICAgICBzZXRPcmRlcihpc0Rlc2MgPyAnYXNjJyA6ICdkZXNjJyk7XG4gICAgICAgIHNldE9yZGVyQnkocHJvcGVydHkpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGxDbGljayhldmVudCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkcyA9IHJvd3MubWFwKG4gPT4gbi5uYW1lKTtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3RlZHMpO1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1NlbGVjdGVkcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGVjdGVkLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5pZCA9PT0gc2VsZWN0ZWRbal0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRSb3dzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pIHx8IHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gc2VsZWN0ZWQuaW5kZXhPZihpZCk7XG4gICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgIGlmIChwcm9wcy5tdWx0aVNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBiZWhhdmlvdXI6IGNsaWNraW5nIGFuIGFscmVhZHktc2VsZWN0ZWQgcm93IHJlbW92ZXNcbiAgICAgICAgICAgICAgICAvLyBpdDsgb3RoZXJ3aXNlIGFkZCBpdCB0byB0aGUgc2VsZWN0aW9uLiBXaXRob3V0IHRoaXMsIHRoZVxuICAgICAgICAgICAgICAgIC8vIG11bHRpLXNlbGVjdCBwaWNrZXIgKGUuZy4gTXVsdGlMb29rdXBGaWVsZCkgbGVhdmVzIHVzZXJzXG4gICAgICAgICAgICAgICAgLy8gdW5hYmxlIHRvIGJhY2sgb3V0IGEgcm93IHRoZXkgdGlja2VkIGJ5IGFjY2lkZW50LlxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWQuc2xpY2UoMCwgZXhpc3RpbmdJbmRleCksIC4uLnNlbGVjdGVkLnNsaWNlKGV4aXN0aW5nSW5kZXggKyAxKV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWQsIGlkXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFNpbmdsZS1zZWxlY3Q6IG5vLW9wIG9uIHJlLWNsaWNrIChwcmVzZXJ2ZWQgZnJvbSBwcmlvclxuICAgICAgICAgICAgICAgIC8vIGJlaGF2aW91ciDigJQgc2luZ2xlLXJvdyBncmlkcyByZWx5IG9uIHRoaXMgdG8gYXZvaWRcbiAgICAgICAgICAgICAgICAvLyBhY2NpZGVudGFsIGRlc2VsZWN0IGR1cmluZyBjZWxsIGVkaXRzKS5cbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbaWRdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gZ2V0U2VsZWN0ZWRSb3dzKG5ld1NlbGVjdGVkKTtcblxuICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWQpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpcmVTZWxlY3Rpb25FdmVudCgpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbmZpZykgJiYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZSkgfHwgY29uZmlnLmdyaWRUeXBlID09PSAnVElMRScpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWQpKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jvd0dyYWJiYWJsZShyb3cpIHtcbiAgICAgICAgcmV0dXJuIHJvd3NHcmFiYmFibGUgJiYgIWlzUm93RHJhZ0Rpc2FibGVkKHJvdyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSb3dEcmFnRGlzYWJsZWQocm93KSB7XG4gICAgICAgIGlmICghZHJhZ1NwZWMuZGlzYWJsZWRXaGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoXG4gICAgICAgICAgICAnUk9XLScgKyByb3cuaWQgKyAnLWRyYWctZGlzYWJsZWQnLFxuICAgICAgICAgICAgZHJhZ1NwZWMuZGlzYWJsZWRXaGVuLFxuICAgICAgICAgICAgcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAge3Jvdzogcm93fSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0Q3Vyc29yKGN1cnNvcikge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGN1cnNvciB8fCAnZGVmYXVsdCc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93TW91c2VFbnRlcihyb3cpIHtcbiAgICAgICAgaWYgKCFpc1Jvd0dyYWJiYWJsZShyb3cpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmx5IHNob3cgZ3JhYiBjdXJzb3IgaWYgbm90IGFscmVhZHkgaG9sZGluZyBzb21ldGhpbmdcbiAgICAgICAgaWYgKCFHcmFiQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICBzZXRDdXJzb3Iocm93R3JhYlNwZWMuY3Vyc29yIHx8ICdncmFiJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVSb3dNb3VzZUxlYXZlKCkge1xuICAgICAgICBzZXRDdXJzb3IoJ2RlZmF1bHQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCwgcm93LCBpbmRleCkge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5lZGl0Q2VsbCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHJvd3NHcmFiYmFibGUgJiYgIWlzUm93RHJhZ0Rpc2FibGVkKHJvdykpIHtcbiAgICAgICAgICAgIGhhbmRsZVJvd0dyYWJUb2dnbGUocm93LCBpbmRleCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkb0hhbmRsZUNsaWNrKGV2ZW50LCByb3cuaWQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNlbGxDbGljayhldmVudCwgaWQsIGNvbHVtbikge1xuICAgICAgICBpZiAoY29sdW1uLmZpZWxkVHlwZSAhPT0gJ2RvY3VtZW50Jykge1xuICAgICAgICAgICAgLy8gVE9ETyA6IEV2YWx1YXRlIGlmIHRoaXMgY2FsbCBpcyBuZWNlc3NhcnlcbiAgICAgICAgICAgIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uQ2VsbFNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgIHByb3BzLm9uQ2VsbFNlbGVjdGlvbkNoYW5nZShpZCwgY29sdW1uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVBhZ2UoZXZlbnQsIG5ld1BhZ2UpIHtcbiAgICAgICAgY3JpdGVyaWEuY3VycmVudFBhZ2UgPSBuZXdQYWdlICsgMTtcbiAgICAgICAgc2V0UGFnZShuZXdQYWdlKTtcbiAgICAgICAgc2VhcmNoKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UoZXZlbnQpIHtcbiAgICAgICAgc2V0Um93c1BlclBhZ2Uocm93c1BlclBhZ2UgPT4gZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgc2V0UGFnZSgwKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYnNlcnZlUm93ID0gKHJvdykgPT4ge1xuICAgICAgICAvKmxldCBvYnNlcnZhYmxlUm93ID0gb2JzZXJ2YWJsZShyb3cpO1xuICAgICAgICBvYnNlcnZlKFxuICAgICAgICAgICAgb2JzZXJ2YWJsZVJvdyxcbiAgICAgICAgICAgIGNoYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBvbGRWYWx1ZSA9IGNoYW5nZS5vbGRWYWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaENlbGwocm93LmlkLCBjaGFuZ2UubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlUm93OyovXG5cbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0RhdGEoZGF0YSwgY29uZikge1xuICAgICAgICBzZXRUb3RhbE51bWJlck9mUm93cyhkYXRhLnRvdGFsTnVtYmVyT2ZSZWNvcmRzID8gZGF0YS50b3RhbE51bWJlck9mUmVjb3JkcyA6IGRhdGEucmVjb3Jkcy5sZW5ndGgpO1xuXG4gICAgICAgIHJvd3NSZWYuY3VycmVudCA9IGRhdGEucmVjb3JkcztcbiAgICAgICAgdXBkYXRlUm93Q2xhc3NlcyhkYXRhLnJlY29yZHMpO1xuICAgICAgICBsZXQgdGFibGVSb3dzID0gW107XG4gICAgICAgIGxldCByZWNvcmRzID0gZGF0YS5yZWNvcmRzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRhYmxlUm93cy5wdXNoKG9ic2VydmVSb3cocmVjb3Jkc1tpXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Um93cyh0YWJsZVJvd3MpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaCA9IChhY3Rpb25Db25maWcgPSBudWxsLCBldmVudCkgPT4ge1xuICAgICAgICBsZXQgY29uZiA9IGNvbmZpZztcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb25mKSkge1xuICAgICAgICAgICAgY29uZiA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZXJ2aWNlID0gIVV0aWxzLmlzTnVsbChjb25mLmRhdGFTZXJ2aWNlKSA/IGNvbmYuZGF0YVNlcnZpY2UgOiAhVXRpbHMuaXNOdWxsKGFjdGlvbkNvbmZpZykgPyBhY3Rpb25Db25maWcuZGF0YVNlcnZpY2UgOiBudWxsO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChzZXJ2aWNlKSkge1xuICAgICAgICAgICAgbGV0IHNlcnZpY2VUeXBlID0gc2VydmljZS50eXBlO1xuICAgICAgICAgICAgaWYgKCFzZXJ2aWNlVHlwZSkge1xuICAgICAgICAgICAgICAgIHNlcnZpY2VUeXBlID0gJ3JwYyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZXJ2aWNlVHlwZSA9PT0gJ3JwYycgfHwgc2VydmljZVR5cGUgPT09ICdyZXN0Jykge1xuICAgICAgICAgICAgICAgIGxldCBtZXRob2QgPSBzZXJ2aWNlVHlwZSA9PT0gJ3JwYycgPyBpbnZva2VScGMgOiBpbnZva2VSZXN0O1xuICAgICAgICAgICAgICAgIG1ldGhvZCh7XG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogcHJvcHMuaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ6IHByb3BzLnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RhdGEocmVzdWx0LCBjb25mKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICBpZihlLmVycm9yVHlwZSAhPT0gJ0lOVkFMSURfUEFSQU1FVEVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMucHVibGlzaEVycm9yTWVzc2FnZShlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHNlcnZpY2UgdHlwZSA6ICcgKyBzZXJ2aWNlVHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWN0aW9uQ29uZmlnICYmIGFjdGlvbkNvbmZpZy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZShhY3Rpb25Db25maWcudmFsdWUpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhKGRhdGEsIGNvbmYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgaWYgKCFyb3dzUGVyUGFnZUxvYWRpbmcpIHtcbiAgICAgICAgICAgIHNldFJvd3NQZXJQYWdlTG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICBzZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH0sIFtyb3dzUGVyUGFnZV0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCBldmVudEhhbmRsaW5nQ29uZmlnID0gVXRpbHMuaXNOdWxsKGNvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnKSA/IHt9IDogY29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWc7XG4gICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucyA9IFV0aWxzLmlzTnVsbChldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMpID8gW10gOiBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnM7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIGNvbmZpZyk7XG4gICAgICAgIGxldCBpc0VkaXRhYmxlID0gZmFsc2U7XG4gICAgICAgIGxldCB2aXNpYmxlQ29sdW1uQ291bnQgPSAwO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgICAgICAgICBsZXQgaGlkZGVuID0gVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKGNvbHVtbiwgJ2hpZGRlbicsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihoaWRkZW4sIHByb3BzLmNvbmZpZy5pZCkpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlQ29sdW1uQ291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb2x1bW4gPSBjb25maWcuY29sdW1uc1tpXTtcblxuICAgICAgICAgICAgaWYgKCFpc0VkaXRhYmxlICYmIGNvbHVtbi5hdHRyaWJ1dGVzWydlZGl0YWJsZSddID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaXNFZGl0YWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0RWRpdGFibGUodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKCFjb2x1bW4uYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID0gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChwcm9wcy5zZWxlY3Rpb25Nb2RlID09PSAnTVVMVElQTEUnLCBjb2x1bW4sIHZpc2libGVDb2x1bW5Db3VudCk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb2x1bW4uYXR0cmlidXRlcykgJiYgY29sdW1uLmF0dHJpYnV0ZXNbJ2VkaXRhYmxlJ10gPT09IHRydWUgJiYgVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRFZGl0b3IgPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0RWRpdG9yLmZpZWxkVHlwZSA9ICdURVhUX0ZJRUxEJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0RWRpdG9yLmlkID0gY29sdW1uLmlkICsgJ0VkaXRvcic7XG5cbiAgICAgICAgICAgICAgICBjb2x1bW4uZWRpdG9yID0gZGVmYXVsdEVkaXRvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgY3JpdGVyaWEuZGF0YVF1ZXJ5TmFtZSA9IGNvbmZpZy5kYXRhUXVlcnlOYW1lO1xuXG4gICAgICAgIGxldCBoYXNMb2FkRXZlbnQ7XG4gICAgICAgIGxldCBsb2FkU3Vic2NyaXB0aW9ucyA9IGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucy5maWx0ZXIoKHN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uLmV2ZW50VHlwZSA9PT0gJ0NPTVBPTkVOVF9MT0FEJyk7XG4gICAgICAgIGZvciAoY29uc3QgbG9hZFN1YnNjcmlwdGlvbiBvZiBsb2FkU3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgaWYgKGxvYWRTdWJzY3JpcHRpb24uYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmFjdGlvblR5cGUgPT09ICdsb2FkRGF0YScpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBoYXNMb2FkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGF1dG9Mb2FkRGF0YSA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb25maWcsICdhdXRvTG9hZERhdGEnLCBudWxsKTtcbiAgICAgICAgaWYgKCFoYXNMb2FkRXZlbnQgJiYgKGF1dG9Mb2FkRGF0YSA9PT0gbnVsbCB8fCBhdXRvTG9hZERhdGEgPT09IHRydWUpKSB7XG4gICAgICAgICAgICBzZWFyY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgbnVsbCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELCBldmVudCk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuZGF0YSkpIHtcbiAgICAgICAgICAgIGxldCBjb25mID0gY29uZmlnO1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb25mKSkge1xuICAgICAgICAgICAgICAgIGNvbmYgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb2Nlc3NEYXRhKHByb3BzLmRhdGEsIGNvbmYpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLmRhdGFdKTtcblxuICAgIGZ1bmN0aW9uIGFkZFJvd0ZvY3VzTGlzdGVuZXIocm93KSB7XG4gICAgICAgICQoJyNST1ctJyArIHJvdy5pZClcbiAgICAgICAgICAgIC5mb2N1c291dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1NlbGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RlZEVsZW1lbnQgb2Ygc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCAhPT0gcm93LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZC5wdXNoKHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVJvd0NsYXNzZXMgPSAobmV3Um93cykgPT4ge1xuICAgICAgICBpZiAobmV3Um93cykge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLmNsYXNzRXZhbHVhdG9yKSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5jbGFzc05hbWUgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdCgnUk9XLScgKyByb3cuaWQgKyAnY2xhc3NFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMuY2xhc3NFdmFsdWF0b3IsIHByb3BzLmNvbmZpZy5pZCwge2luZGV4fSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMgPSAobmV3Um93cykgPT4ge1xuICAgICAgICBpZiAobmV3Um93cykge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yKSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5yZWFkT25seSA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KCdST1ctJyArIHJvdy5pZCArICdyZWFkT25seUV2YWx1YXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvciwgcHJvcHMuY29uZmlnLmlkLCB7aW5kZXh9LCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVDb2x1bW5SZWFkT25seVN0YXR1cyA9IChjb2x1bW4sIG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGVzICYmIGNvbHVtbi5hdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yKSB7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgIGlmICghcm93LmNvbHVtblJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5jb2x1bW5SZWFkT25seSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvdy5jb2x1bW5SZWFkT25seVtjb2x1bW4uaWRdID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoJ0NPTC0nICsgcm93LmlkICsgJy0nICsgY29sdW1uLmlkICsgJy1yZWFkT25seUV2YWx1YXRvcicsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yLCBwcm9wcy5jb25maWcuaWQsIHtpbmRleH0sIG51bGwpO1xuICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5wcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyhwcm9wcy5jb25maWcuaWQpO1xuICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG5cbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCByb3dzKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuREFUQV9BUlJJVkVELCBldmVudCk7XG5cbiAgICAgICAgLy8gUGxhaW4gUmVhY3QtcHJvcCBjYWxsYmFjayBmb3IgY29uc3VtZXJzIHRoYXQgd2FudCB0byByZWFjdCB0byBhXG4gICAgICAgIC8vIGRhdGEgbG9hZCB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGV2ZW50TWFuYWdlciBzdWJzY3JpcHRpb25cbiAgICAgICAgLy8gZGFuY2UuIFJlY2VpdmVzIHRoZSBmcmVzaGx5LXJlbmRlcmVkIHJvd3MgYXJyYXkuIFVzZWQgYnlcbiAgICAgICAgLy8gTXVsdGlMb29rdXBGaWVsZCB0byBwcmUtc2VsZWN0IHJvd3MgdGhhdCBhcmUgYWxyZWFkeSBpbiB0aGVcbiAgICAgICAgLy8gZmllbGQncyB2YWx1ZSwgc28gdGhlIG9wZXJhdG9yIGNhbiBzZWUgd2hpY2ggcmVzdWx0cyB0aGV5IGhhdmVcbiAgICAgICAgLy8gYWxyZWFkeSBhZGRlZC5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25Sb3dzTG9hZGVkKSkge1xuICAgICAgICAgICAgcHJvcHMub25Sb3dzTG9hZGVkKHJvd3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGlsZSBncmlkcyBhdXRvLXNlbGVjdCB0aGUgZmlyc3Qgcm93IGFmdGVyIGEgbG9hZCB3aGVuIG5vXG4gICAgICAgIC8vIHNlbGVjdGlvbiBpcyBpbiBwbGFjZSB5ZXQsIHNvIHRoZSBjb25zdW1lciB2aWV3IGFsd2F5cyBoYXMgYVxuICAgICAgICAvLyBjdXJyZW50bHktc2VsZWN0ZWQgaXRlbSB0byByZW5kZXIgZGV0YWlscyBmb3IuIEZpcmluZ1xuICAgICAgICAvLyBTRUxFQ1RJT05fQ0hBTkdFIGlubGluZSAobm90IHZpYSBmaXJlU2VsZWN0aW9uRXZlbnQsIHdoaWNoXG4gICAgICAgIC8vIHdvdWxkIHJlYWQgdGhlIHN0aWxsLXN0YWxlIGBzZWxlY3RlZGAgc3RhdGUgb24gdGhpcyB0aWNrKVxuICAgICAgICAvLyBzbyB0aGUgZG93bnN0cmVhbSBzdWJzY3JpYmVyIHdha2VzIHVwIG9uIHRoZSBzYW1lIHRpY2sgYXNcbiAgICAgICAgLy8gdGhlIGRhdGEgYXJyaXZhbC5cbiAgICAgICAgaWYgKGNvbmZpZz8uZ3JpZFR5cGUgPT09ICdUSUxFJyAmJiByb3dzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJvd0lkID0gcm93c1swXS5pZDtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Um93TGlzdCA9IFtmaXJzdFJvd0lkXTtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKGZpcnN0Um93TGlzdCk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSBnZXRTZWxlY3RlZFJvd3MoZmlyc3RSb3dMaXN0KTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uRXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIHNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBzZWxlY3Rpb25FdmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbcm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZGVsZXRlZFJvd3MpICYmIGRlbGV0ZWRSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZGVsZXRlZFJvd3MpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuUk9XX0RFTEVURUQsIGV2ZW50KTtcbiAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuICAgIH0sIFtkZWxldGVkUm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMucm93cykpIHtcbiAgICAgICAgICAgIGxldCByb3dWYWx1ZXMgPSBbXTtcblxuICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcHJvcHMucm93cztcbiAgICAgICAgICAgIHVwZGF0ZVJvd0NsYXNzZXMocHJvcHMucm93cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBwcm9wcy5yb3dzKSB7XG4gICAgICAgICAgICAgICAgcm93VmFsdWVzLnB1c2gob2JzZXJ2ZVJvdyhyb3cpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMocHJvcHMucm93cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzKGNvbHVtbiwgcHJvcHMucm93cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd1ZhbHVlcztcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgIHNldFJvd3Mocm93VmFsdWVzKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5yb3dzXSk7XG5cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzKHJvd3MpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMoY29sdW1uLCByb3dzKTtcbiAgICAgICAgfVxuICAgIH0sIFtyb3dzXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBmaXJlU2VsZWN0aW9uRXZlbnQoKTtcbiAgICB9LCBbc2VsZWN0ZWRdKTtcblxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBpZCA9PiBzZWxlY3RlZC5pbmRleE9mKGlkKSAhPT0gLTE7XG4gICAgY29uc3QgZWRpdG9yQ2hhbmdlSGFuZGxlciA9IChyb3dJZCwgZmllbGQsIHZhbHVlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgICAgICAgIGlmIChyb3cuaWQgPT09IHJvd0lkKSB7XG4gICAgICAgICAgICAgICAgVXRpbHMudXBkYXRlTmVzdGVkUHJvcGVydHkocm93LCBmaWVsZCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaXNGaWx0ZXJhYmxlID0gKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gcHJvcHMuY29uZmlnLmNvbHVtbnNbaV07XG4gICAgICAgICAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZXNbJ2ZpbHRlcmFibGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVDZWxsID0gKHJvdywgY29sdW1uTmFtZSwgY2VsbEhhbmRsZSkgPT4ge1xuICAgICAgICBsZXQgcm93Q2VsbHMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNlbGxzRW50cnkgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgIGlmIChjZWxsc0VudHJ5LnJvd0lkID09PSByb3cuaWQpIHtcbiAgICAgICAgICAgICAgICByb3dDZWxscyA9IGNlbGxzRW50cnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHJvd0NlbGxzKSB8fCByb3dDZWxscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJvd0NlbGxzID0ge307XG4gICAgICAgICAgICByb3dDZWxscy5yb3dJZCA9IHJvdy5pZDtcbiAgICAgICAgICAgIGNlbGxzLnB1c2gocm93Q2VsbHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93Q2VsbHNbY29sdW1uTmFtZV0gPSBjZWxsSGFuZGxlO1xuICAgIH07XG5cbiAgICBjb25zdCByZWZyZXNoQ2VsbCA9IChyb3dJZCwgY29sdW1uTmFtZSkgPT4ge1xuICAgICAgICBsZXQgcm93Q2VsbHMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNlbGwgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgIGlmIChjZWxsLnJvd0lkID09PSByb3dJZCkge1xuICAgICAgICAgICAgICAgIHJvd0NlbGxzID0gY2VsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHJvd0NlbGxzKSkge1xuICAgICAgICAgICAgbGV0IGNlbGwgPSByb3dDZWxsc1tjb2x1bW5OYW1lXTtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY2VsbCkpIHtcbiAgICAgICAgICAgICAgICBjZWxsLmFwaS5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVtb3ZlQWxsUm93RXJyb3JzQnlDb2x1bW4gPSAoY29sdW1uTmFtZSwgcm93RXJyb3JzKSA9PiB7XG4gICAgICAgIGlmIChyb3dFcnJvcnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSByb3dFcnJvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAocm93RXJyb3JzW2ldLmNvbHVtbiA9PT0gY29sdW1uTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByb3dFcnJvcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJvd0Vycm9ySGFuZGxlciA9IChyb3dJZCwgZXJyb3IsIGNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocm93RXJyb3JNYXApLmxlbmd0aCA9PT0gMCB8fCAhcm93RXJyb3JNYXBbcm93SWRdKSB7XG4gICAgICAgICAgICByb3dFcnJvck1hcFtyb3dJZF0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKCFyb3dFcnJvck1hcFtyb3dJZF0uZmluZChyb3dFcnJvciA9PiByb3dFcnJvci5jb2x1bW4gPT09IGNvbHVtbikpIHtcbiAgICAgICAgICAgICAgICByb3dFcnJvck1hcFtyb3dJZF0ucHVzaChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZW1vdmVBbGxSb3dFcnJvcnNCeUNvbHVtbihjb2x1bW4sIHJvd0Vycm9yTWFwW3Jvd0lkXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpc1Jvd0Vycm9yc0VtcHR5ID0gKCkgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocm93RXJyb3JNYXApLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyb3dFcnJvck1hcCkpIHtcbiAgICAgICAgICAgIGlmIChyb3dFcnJvck1hcFtrZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUNoYW5nZUNhbGxiYWNrID0gKHZhbHVlUm93cykgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIodmFsdWVSb3dzLCAhaXNSb3dFcnJvcnNFbXB0eSgpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRUaWxlTGFiZWwocm93KSB7XG4gICAgICAgIGxldCBjb3VudGVyID0gMDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHtjb25maWcuY29sdW1ucy5tYXAoY29sdW1uID0+IChcbiAgICAgICAgICAgICAgICAgICAgIWNvbHVtbi5hdHRyaWJ1dGVzLmhpZGRlbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2NvdW50ZXIrK30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1shVXRpbHMuaXNOdWxsKGNvbHVtbi5kYXRhQmluZGluZykgPyBjb2x1bW4uZGF0YUJpbmRpbmcgOiBjb2x1bW4uaWRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gOlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlclRpbGUocm93LCBrZXkpIHtcbiAgICAgICAgY29uc3QgaXNJdGVtU2VsZWN0ZWQgPSBpc1NlbGVjdGVkKHJvdy5pZCk7XG4gICAgICAgIHJldHVybiAoPEdyaWQgaXRlbSB4cyBzdHlsZT17VXRpbHMubWVyZ2VPYmplY3RzKHByb3BzLmNvbmZpZy50aWxlU3R5bGUsIHtcbiAgICAgICAgICAgIGhlaWdodDogJzIwMHB4JyxcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMjAwcHgnXG4gICAgICAgIH0pfSBrZXk9e2tleX0+XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIGNvbG9yPXtcInNlY29uZGFyeVwifVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBpc0l0ZW1TZWxlY3RlZCA/ICcxcHggc29saWQgMXB4IHNvbGlkICNmMmE5MDAnIDogJzFweCBzb2xpZCAjZTJlMmUyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGlzSXRlbVNlbGVjdGVkID8gJyNmZmY4ZTEnIDogJyNmYWZhZmEnLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBkb0hhbmRsZUNsaWNrKGV2ZW50LCByb3cuaWQpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0VGlsZUxhYmVsKHJvdylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9HcmlkPik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyVGlsZXMoKSB7XG4gICAgICAgIGlmICghcm93cyB8fCByb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gVGlsZSBncmlkIGhhcyBubyBuYXRpdmUgZW1wdHktcm93IGFmZm9yZGFuY2UgbGlrZSB0aGUgdGFibGVcbiAgICAgICAgICAgIC8vIHBhdGggKGBvdWlUYWJsZS1lbXB0eWAgQ1NTKSwgc28gcGFpbnQgdGhlIG1lc3NhZ2UgaW5saW5lLlxuICAgICAgICAgICAgLy8gQ2FsbGVyIGNhbiBvdmVycmlkZSB2aWEgYGNvbmZpZy5lbXB0eU1lc3NhZ2VgIGZvciB2aWV3LVxuICAgICAgICAgICAgLy8gc3BlY2lmaWMgY29weSAoXCJObyBwcm9jdXJlbWVudHMgeWV0XCIsIGV0YykuXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gcHJvcHMuY29uZmlnPy5lbXB0eU1lc3NhZ2UgfHwgJ05vIGl0ZW1zIHRvIHNob3cnO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICcxMjBweCcsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzllOWU5ZScsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMC44NzVyZW0nLFxuICAgICAgICAgICAgICAgICAgICBmb250U3R5bGU6ICdpdGFsaWMnLFxuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICB7bWVzc2FnZX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0l0ZW1TZWxlY3RlZCA9IGlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsSWQgPSBgZW5oYW5jZWQtdGFibGUtY2hlY2tib3gtJHtpbmRleH1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93LmluZGV4ID0gaW5kZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGlsZShyb3csIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbkxheW91dEhhbmRsZShjb2x1bW4sIGluZGV4KSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlc1tjb2x1bW4uaWQgKyBpbmRleF0pKSB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0ge307XG4gICAgICAgICAgICBjb2x1bW5MYXlvdXRIYW5kbGVzW2NvbHVtbi5pZCArIGluZGV4XSA9IGhhbmRsZTtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sdW1uTGF5b3V0SGFuZGxlc1tjb2x1bW4uaWQgKyBpbmRleF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlQ2VsbEVkaXRvckhhbmRsZShjb2x1bW4pIHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGVzW2NvbHVtbi5pZCArIFwiX2VkaXRvclwiXSkpIHtcbiAgICAgICAgICAgIGxldCBoYW5kbGUgPSB7fTtcbiAgICAgICAgICAgIGVkaXRvckhhbmRsZXNbY29sdW1uLmlkICsgXCJfZWRpdG9yXCJdID0gaGFuZGxlO1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlZGl0b3JIYW5kbGVzW2NvbHVtbi5pZCArIFwiX2VkaXRvclwiXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICB2aXNpYmxlICYmXG4gICAgICAgIDxkaXYgaWQ9e3Byb3BzLmNvbmZpZy5pZH0gY2xhc3NOYW1lPXtVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUocHJvcHMuY29uZmlnLCAnY2xhc3NOYW1lJywgbnVsbCl9IHN0eWxlPXsoVXRpbHMuaXNOdWxsKHByb3BzLmhhc0JvcmRlcikgfHwgcHJvcHMuaGFzQm9yZGVyID09PSB0cnVlKSA/XG4gICAgICAgICAgICBVdGlscy5tZXJnZVN0eWxlcyh7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAnMCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCdcbiAgICAgICAgICAgIH0sIHByb3BzLmNvbmZpZykgOiBVdGlscy5tZXJnZVN0eWxlcyh7fSwgcHJvcHMuY29uZmlnKX0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcubm90ZXMpID9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLm5vdGVzLm1hcCgobm90ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtub3RlS2V5Kyt9IHN0eWxlPXt7cGFkZGluZzogJzhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ttYXJnaW5Cb3R0b206ICcwJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e25vdGUubWVzc2FnZVR5cGUgPT09ICdXQVJOJyA/ICd3YXJuaW5nJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlLm1lc3NhZ2VUeXBlID09PSAnSU5GTycgPyAnJyA6ICdkYW5nZXInfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57bm90ZS5tZXNzYWdlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByb3dzUGVyUGFnZU9wdGlvbnMuaW5jbHVkZXMocHJvcHMuY29uZmlnLnBhZ2VTaXplKSA/XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3ttYXJnaW46ICcwIDAgOHB4IDhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbHRlcmFibGUoKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17ZmlsdGVySGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e3Byb3BzLmNvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcldyYXBwZXJDbGFzcz17cHJvcHMuZmlsdGVyV3JhcHBlckNsYXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxXaWR0aD17c2Nyb2xsV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyU3VibWl0PXtzZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVxdWVzdFNvcnQ9e2hhbmRsZVJlcXVlc3RTb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgaXRlbSB4cz17MTJ9IHNwYWNpbmc9ezF9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGlsZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzRweCA4cHggMCA4cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3dyYXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0V3JhcChlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3sgJyYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWwnOiB7IGZvbnRTaXplOiAnMC43NXJlbScgfSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJXcmFwIHRhYmxlIHRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSB7YHJlc3BvbnNpdmUtdGFibGVgfSBzdHlsZT17e2hlaWdodDogcHJvcHMuaGVpZ2h0fX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZSBjbGFzc05hbWU9e2AkeydvdWlUYWJsZScgKyAocm93cy5sZW5ndGggPT09IDAgPyAnIG91aVRhYmxlLWVtcHR5JyA6ICcnKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFNwYWNpbmc9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cInRhYmxlVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogJzEwMCUnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzTmFtZT17J2ZpbHRlckhlYWQnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICdjYWxjKDEwMCUgLSAnICsgcHJvcHMuc2Nyb2xsV2lkdGggKyAncHgpJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRmlsdGVyYWJsZSgpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2ZpbHRlckhhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJXcmFwcGVyQ2xhc3M9e3Byb3BzLmZpbHRlcldyYXBwZXJDbGFzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoPXtzY3JvbGxXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyU3VibWl0PXtzZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RTb3J0PXtoYW5kbGVSZXF1ZXN0U29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGF0YUdyaWRIZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtoZWFkaW5nSGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVNlbGVjdGVkPXtzZWxlY3RlZC5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg9e3Njcm9sbFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0QWxsQ2xpY2s9e2hhbmRsZVNlbGVjdEFsbENsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVxdWVzdFNvcnQ9e2hhbmRsZVJlcXVlc3RTb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0NvdW50PXt0b3RhbE51bWJlck9mUm93c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVIYW5kbGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJvd3MoWy4uLnJvd3NdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGJvZHkgY2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlQm9keX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e21heEhlaWdodDogVXRpbHMuaXNOdWxsKHByb3BzLmJvZHlNYXhIZWlnaHQpID8gcHJvcHMuYm9keU1heEhlaWdodCA6ICc0MnZoJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtYWluVGFibGVCb2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Jvd3MubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbElkID0gYGVuaGFuY2VkLXRhYmxlLWNoZWNrYm94LSR7aW5kZXh9YDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFJvd1N0eWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMgJiYgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMuc3R5bGUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubWVyZ2VPYmplY3RzKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnN0eWxlLCBkZWZhdWx0Um93U3R5bGUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRSb3dTdHlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IGhhbmRsZVJvd01vdXNlRW50ZXIocm93KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU9e2hhbmRsZVJvd01vdXNlTGVhdmV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIHJvdywgaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e2V2ZW50ID0+IHByb3BzLm9uUm93RG91YmxlQ2xpY2sgJiYgcHJvcHMub25Sb3dEb3VibGVDbGljayhyb3csIGV2ZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY2hlY2tlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9eydST1ctJyArIHJvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnb3VpLXRhYmxlLXJvdyAnICsgKChoaWdobGlnaHRSb3dTZWxlY3Rpb24uY3VycmVudCA/IGlzSXRlbVNlbGVjdGVkID8gY2xhc3Nlcy50YWJsZVNlbGVjdGVkIDogY2xhc3Nlcy50YWJsZVJvdyA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChyb3cuY2xhc3NOYW1lID8gKCcgJyArIHJvdy5jbGFzc05hbWUpIDogJycpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zZWxlY3Rpb25Nb2RlID09PSAnTVVMVElQTEUnID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZCBwYWRkaW5nPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIICsgJ3B4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydzZWxlY3RDZWxsJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2lzSXRlbVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7J2FyaWEtbGFiZWxsZWRieSc6IGxhYmVsSWR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RkPiA6IG51bGxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlnLmNvbHVtbnMubWFwKGNvbHVtbiA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24oY29sdW1uLmF0dHJpYnV0ZXNbJ2hpZGRlbiddLCBwcm9wcy5jb25maWcuaWQpID09PSB0cnVlID8gbnVsbCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ubGF5b3V0ID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggPyBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA6ICgxMDAgLyBjb25maWcuY29sdW1ucy5sZW5ndGgpICsgJyUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ249XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXshcHJvcHMuZGlzYWJsZWQgJiYgaXNJdGVtU2VsZWN0ZWQgJiYgIVV0aWxzLmlzTnVsbChwcm9wcy5mb3JtKSAmJiAhVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpID8gJ2VkaXRDZWxsJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXggKyBcIl9cIiArIGNvbHVtbi5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXlvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlKGNvbHVtbiwgaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkICsgXCJfbGF5b3V0XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVJvdz17cm93cy5maW5kKChyKSA9PiByLmlkID09PSByb3cuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByb3BzLmNvbmZpZy5jb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmlkID09PSBjb2x1bW4uaWQpLmxheW91dCkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9IHBhcmVudD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD4gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID8gY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggOiAoMTAwIC8gY29uZmlnLmNvbHVtbnMubGVuZ3RoKSArICclJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IXByb3BzLmRpc2FibGVkICYmIGlzSXRlbVNlbGVjdGVkICYmICFVdGlscy5pc051bGwoY29sdW1uLmVkaXRvcikgPyAnZWRpdENlbGwnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVDZWxsQ2xpY2soZXZlbnQsIHJvdy5pZCwgY29sdW1uKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwPXt3cmFwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Sb3dFcnJvcj17cm93RXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDZWxsRWRpdG9ySGFuZGxlKGNvbHVtbil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcj17IXByb3BzLmRpc2FibGVkICYmICFyb3cucmVhZE9ubHkgJiYgIXJvdy5jb2x1bW5SZWFkT25seT8uW2NvbHVtbj8uaWRdID8gY29sdW1uLmVkaXRvciA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZDYWxsYmFjaz17Y3JlYXRlQ2VsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtpc0l0ZW1TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj17Y29sdW1uLnZhbGlkYXRvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17ZWRpdG9yQ2hhbmdlSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbmZpZz17Y29sdW1ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUJpbmRpbmc9eyFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdz17cm93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU9e2NvbHVtbi5maWVsZFR5cGUgfHwgY29sdW1uLmVkaXRvcj8uZmllbGRUeXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbEZvcm1hdHRlcj17Y29sdW1uLmNlbGxGb3JtYXR0ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcml0ZXJpYT17Y3JpdGVyaWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ucj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWdpbmF0aW9uKSAmJiAoVXRpbHMuaXNOdWxsKHByb3BzLnBhZ2luYXRpb24pIHx8IHByb3BzLnBhZ2luYXRpb24gPT09IHRydWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnBhZ2luYXRpb24gJiYgcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnBhZ25hdGlvbiA9PT0gdHJ1ZSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVBhZ2luYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcImdyaWQtdGFibGUtcGFnaW5hdGlvblwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzUGVyUGFnZU9wdGlvbnM9e3Jvd3NQZXJQYWdlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ9e3RvdGFsTnVtYmVyT2ZSb3dzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzUGVyUGFnZT17cm93c1BlclBhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U9e3BhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tJY29uQnV0dG9uUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogJ3ByZXZpb3VzIHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0SWNvbkJ1dHRvblByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6ICduZXh0IHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhZ2VDaGFuZ2U9e2hhbmRsZUNoYW5nZVBhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUm93c1BlclBhZ2VDaGFuZ2U9e2hhbmRsZUNoYW5nZVJvd3NQZXJQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsMEJBQUEsR0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxnQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsaUJBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLGdCQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxPQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxNQUFBLEdBQUFaLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBWSxXQUFBLEdBQUFiLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBYSxVQUFBLEdBQUFkLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBYyxLQUFBLEdBQUFmLHNCQUFBLENBQUFD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
|