@agilemotion/oui-react-js 2.0.10 → 2.0.12
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.
|
@@ -660,6 +660,25 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
|
|
|
660
660
|
rowCount.current = rows.length;
|
|
661
661
|
let event = new _Event.default(props.handle, props.viewId, rows);
|
|
662
662
|
_Observable.default.fireEvent(_EventType.default.DATA_ARRIVED, event);
|
|
663
|
+
|
|
664
|
+
// Tile grids auto-select the first row after a load when no
|
|
665
|
+
// selection is in place yet, so the consumer view always has a
|
|
666
|
+
// currently-selected item to render details for. Firing
|
|
667
|
+
// SELECTION_CHANGE inline (not via fireSelectionEvent, which
|
|
668
|
+
// would read the still-stale `selected` state on this tick)
|
|
669
|
+
// so the downstream subscriber wakes up on the same tick as
|
|
670
|
+
// the data arrival.
|
|
671
|
+
if ((config === null || config === void 0 ? void 0 : config.gridType) === 'TILE' && rows.length > 0 && selected.length === 0) {
|
|
672
|
+
const firstRowId = rows[0].id;
|
|
673
|
+
const firstRowList = [firstRowId];
|
|
674
|
+
setSelected(firstRowList);
|
|
675
|
+
const selectedRows = getSelectedRows(firstRowList);
|
|
676
|
+
if (!_Utils.default.isNull(props.onSelectionChange)) {
|
|
677
|
+
props.onSelectionChange(selectedRows);
|
|
678
|
+
}
|
|
679
|
+
let selectionEvent = new _Event.default(props.handle, props.viewId, selectedRows);
|
|
680
|
+
_Observable.default.fireEvent(_EventType.default.SELECTION_CHANGE, selectionEvent);
|
|
681
|
+
}
|
|
663
682
|
}, [rows]);
|
|
664
683
|
_react.default.useEffect(() => {
|
|
665
684
|
if (!_Utils.default.isNull(deletedRows) && deletedRows.length > 0) {
|
|
@@ -810,6 +829,27 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
|
|
|
810
829
|
}, getTileLabel(row)));
|
|
811
830
|
}
|
|
812
831
|
function renderTiles() {
|
|
832
|
+
if (!rows || rows.length === 0) {
|
|
833
|
+
var _props$config;
|
|
834
|
+
// Tile grid has no native empty-row affordance like the table
|
|
835
|
+
// path (`ouiTable-empty` CSS), so paint the message inline.
|
|
836
|
+
// Caller can override via `config.emptyMessage` for view-
|
|
837
|
+
// specific copy ("No procurements yet", etc).
|
|
838
|
+
const message = ((_props$config = props.config) === null || _props$config === void 0 ? void 0 : _props$config.emptyMessage) || 'No items to show';
|
|
839
|
+
return /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
840
|
+
item: true,
|
|
841
|
+
xs: 12,
|
|
842
|
+
style: {
|
|
843
|
+
display: 'flex',
|
|
844
|
+
alignItems: 'center',
|
|
845
|
+
justifyContent: 'center',
|
|
846
|
+
minHeight: '120px',
|
|
847
|
+
color: '#9e9e9e',
|
|
848
|
+
fontSize: '0.875rem',
|
|
849
|
+
fontStyle: 'italic'
|
|
850
|
+
}
|
|
851
|
+
}, message);
|
|
852
|
+
}
|
|
813
853
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, rows.map((row, index) => {
|
|
814
854
|
const isItemSelected = isSelected(row.id);
|
|
815
855
|
const labelId = "enhanced-table-checkbox-".concat(index);
|
|
@@ -1035,4 +1075,4 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
|
|
|
1035
1075
|
onRowsPerPageChange: handleChangeRowsPerPage
|
|
1036
1076
|
})) : null) : null);
|
|
1037
1077
|
});
|
|
1038
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfcmVhY3RTdXBlclJlc3BvbnNpdmVUYWJsZSIsIl9DaGVja2JveCIsIl9VdGlscyIsIl9SZXN0U2VydmljZSIsIl9EYXRhR3JpZEZpbHRlciIsIl9EYXRhR3JpZEhlYWRpbmciLCJfVGFibGVDZWxsQ29udGVudCIsIl9UYWJsZVBhZ2luYXRpb24iLCJfY29sb3JzIiwiX0V2ZW50IiwiX09ic2VydmFibGUiLCJfRXZlbnRUeXBlIiwiX0dyaWQiLCJfQnV0dG9uIiwiJCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0FsZXJ0IiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9MYXlvdXQiLCJfRHluYW1pY0pTIiwiX1N3aXRjaCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX0dyYWJDb250ZXh0IiwiX0N1cnNvck92ZXJsYXkiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIiwiZXhwb3J0cyIsImV2YWx1YXRlVGFibGVDZWxsV2lkdGgiLCJtdWx0aVNlbGVjdCIsImNvbHVtbiIsImNvbHVtbkNvdW50Iiwid2lkdGgiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJpc0V4cHJlc3Npb24iLCJhdHRyaWJ1dGVzIiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdCIsImNvbmNhdCIsImlkIiwiVXRpbHMiLCJpc051bGwiLCJkZXNjIiwiYSIsImIiLCJvcmRlckJ5Iiwic3RhYmxlU29ydCIsImFycmF5IiwiY21wIiwic3RhYmlsaXplZFRoaXMiLCJtYXAiLCJlbCIsImluZGV4Iiwic29ydCIsIm9yZGVyIiwiZ2V0U29ydGluZyIsInVzZVN0eWxlcyIsIm1ha2VTdHlsZXMiLCJ0aGVtZSIsInJvb3QiLCJtYXJnaW5Ub3AiLCJzcGFjaW5nIiwicGFwZXIiLCJoZWlnaHQiLCJwb3NpdGlvbiIsInpJbmRleCIsInNjcm9sbFBhZGRpbmciLCJwYWRkaW5nIiwibm9TY3JvbGxQYWRkaW5nIiwidGFibGVCb2R5IiwiZGlzcGxheSIsIm92ZXJmbG93WSIsInRhYmxlU2VsZWN0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJncmV5MzAwIiwiYmFja2dyb3VuZCIsInRhYmxlUm93IiwidGFibGVXcmFwcGVyIiwidGFibGUiLCJ2aXN1YWxseUhpZGRlbiIsImJvcmRlciIsImNsaXAiLCJtYXJnaW4iLCJ0b3AiLCJEYXRhR3JpZCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX2NvbmZpZyRhdHRyaWJ1dGVzIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1IiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MiIsIl9wcm9wcyRjb25maWckYXR0cmlidTMiLCJjbGFzc2VzIiwic2V0T3JkZXIiLCJ1c2VTdGF0ZSIsImNvbmZpZyIsInBhcnNlQ29uZmlnIiwidmlld0lkIiwic2V0T3JkZXJCeSIsInNlbGVjdGVkIiwic2V0U2VsZWN0ZWQiLCJ0b3RhbE51bWJlck9mUm93cyIsInNldFRvdGFsTnVtYmVyT2ZSb3dzIiwiY3JpdGVyaWEiLCJwYWdlIiwic2V0UGFnZSIsInJvd3MiLCJzZXRSb3dzIiwiZGVsZXRlZFJvd3MiLCJzZXREZWxldGVkUm93cyIsImVkaXRhYmxlIiwic2V0RWRpdGFibGUiLCJzY3JvbGxXaWR0aCIsInNldFNjcm9sbFdpZHRoIiwicm93c1BlclBhZ2VPcHRpb25zIiwicm93c1BlclBhZ2VMb2FkaW5nIiwic2V0Um93c1BlclBhZ2VMb2FkaW5nIiwicm93c1BlclBhZ2UiLCJzZXRSb3dzUGVyUGFnZSIsInBhZ2VTaXplIiwiaGlnaGxpZ2h0Um93U2VsZWN0aW9uIiwidXNlUmVmIiwiZGlzYWJsZVJvd1NlbGVjdGlvbiIsImNlbGxzIiwiaGVhZGluZ0hhbmRsZSIsImZpbHRlckhhbmRsZSIsImNvbHVtbkxheW91dEhhbmRsZXMiLCJlZGl0b3JIYW5kbGVzIiwicm93RXJyb3JNYXAiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsIndyYXAiLCJzZXRXcmFwIiwicm93Q291bnQiLCJyb3dzUmVmIiwibm90ZUtleSIsImNvbHVtbldpZHRocyIsImRyYWdTcGVjIiwicm93R3JhYlNwZWMiLCJyb3ciLCJyb3dzR3JhYmJhYmxlIiwiZW5hYmxlZCIsImFwaSIsInBhcmFtZXRlcnMiLCJpc0ZpbHRlcmFibGUiLCJnZXRQYXJhbWV0ZXJzIiwic2VsZWN0aW9uIiwic2VsZWN0ZWRSb3dzIiwibGVuZ3RoIiwiaiIsInB1c2giLCJjb2x1bW5EYXRhQmluZGluZ3MiLCJjb2x1bW5OYW1lcyIsImNvbHVtbnMiLCJkYXRhQmluZGluZyIsImdldENoaWxkcmVuIiwiY2hpbGRyZW4iLCJjaGlsZCIsInByb3BlcnRpZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJjb2x1bW5MYXlvdXRIYW5kbGUiLCJtb3JlQ2hpbGRyZW4iLCJlZGl0b3JIYW5kbGUiLCJsb2FkRGF0YSIsImFjdGlvbkNvbmZpZyIsImV2ZW50Iiwic2VhcmNoIiwiZGVsZXRlU2VsZWN0ZWRSb3dzIiwibmV3Um93cyIsImZpbHRlciIsImlzU2VsZWN0ZWQiLCJnZXRTZWxlY3RlZFJvd3MiLCJzcGxpY2UiLCJuZXdSb3ciLCJvblNlbGVjdGlvbkNoYW5nZSIsInVwZGF0ZVNjcm9sbEJhclBhZGRpbmciLCJjdXJyZW50IiwidmFsdWVDaGFuZ2VDYWxsYmFjayIsImNsZWFyIiwiRXZlbnQiLCJoYW5kbGUiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJTRUxFQ1RJT05fQ0hBTkdFIiwiZGVsZXRlUm93cyIsInJvd0lkcyIsImlkU2V0IiwiU2V0IiwicmVtYWluaW5nIiwic2VsZWN0IiwiYWRkUm93cyIsIm9ic2VydmVSb3ciLCJuZXdTZWxlY3Rpb24iLCJudW1iZXJPZlBhZ2VzIiwicmVmcmVzaCIsInBhcnNlZENvbmZpZyIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJmb3JtQXBpIiwiaGFuZGxlUm93R3JhYlRvZ2dsZSIsImlzUm93R3JhYmJhYmxlIiwiR3JhYkNvbnRleHQiLCJpc0FjdGl2ZSIsImdyYWIiLCJyb3dJbmRleCIsImNvbXBvbmVudElkIiwiQ3Vyc29yT3ZlcmxheSIsInNob3ciLCJST1dfR1JBQl9TVEFSVCIsInRib2R5IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm9mZnNldFdpZHRoIiwiY2xpZW50V2lkdGgiLCJ3aW5kb3ciLCJvbnJlc2l6ZSIsImhhbmRsZVJlcXVlc3RTb3J0IiwiaXNEZXNjIiwiaGFuZGxlU2VsZWN0QWxsQ2xpY2siLCJ0YXJnZXQiLCJjaGVja2VkIiwibmV3U2VsZWN0ZWRzIiwibmFtZSIsImVuYWJsZUZvcm1NYXJrZXJzIiwiZG9IYW5kbGVDbGljayIsInNlbGVjdGVkSW5kZXgiLCJpbmRleE9mIiwibmV3U2VsZWN0ZWQiLCJzbGljZSIsImZpcmVTZWxlY3Rpb25FdmVudCIsImdyaWRUeXBlIiwiaXNSb3dEcmFnRGlzYWJsZWQiLCJkaXNhYmxlZFdoZW4iLCJleGVjdXRlU2NyaXB0T2JqZWN0Iiwic2V0Q3Vyc29yIiwiY3Vyc29yIiwiYm9keSIsInN0eWxlIiwiaGFuZGxlUm93TW91c2VFbnRlciIsImhhbmRsZVJvd01vdXNlTGVhdmUiLCJoYW5kbGVDbGljayIsImNsb3Nlc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJvbkNlbGxTZWxlY3Rpb25DaGFuZ2UiLCJoYW5kbGVDZWxsQ2xpY2siLCJmaWVsZFR5cGUiLCJoYW5kbGVDaGFuZ2VQYWdlIiwibmV3UGFnZSIsImN1cnJlbnRQYWdlIiwiaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UiLCJ2YWx1ZSIsInByb2Nlc3NEYXRhIiwiZGF0YSIsImNvbmYiLCJ0b3RhbE51bWJlck9mUmVjb3JkcyIsInJlY29yZHMiLCJ1cGRhdGVSb3dDbGFzc2VzIiwidGFibGVSb3dzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwic2VydmljZSIsImRhdGFTZXJ2aWNlIiwic2VydmljZVR5cGUiLCJ0eXBlIiwibWV0aG9kIiwiaW52b2tlUnBjIiwiaW52b2tlUmVzdCIsImNvbXBvbmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImNvbnNvbGUiLCJlcnJvciIsImVycm9yVHlwZSIsInB1Ymxpc2hFcnJvck1lc3NhZ2UiLCJFcnJvciIsInJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZSIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWRkU3Vic2NyaXB0aW9ucyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJpc0VkaXRhYmxlIiwidmlzaWJsZUNvbHVtbkNvdW50IiwiaGlkZGVuIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwic2VsZWN0aW9uTW9kZSIsImVkaXRvciIsImRlZmF1bHRFZGl0b3IiLCJkYXRhUXVlcnlOYW1lIiwiaGFzTG9hZEV2ZW50IiwibG9hZFN1YnNjcmlwdGlvbnMiLCJzdWJzY3JpcHRpb24iLCJldmVudFR5cGUiLCJsb2FkU3Vic2NyaXB0aW9uIiwiYWN0aW9ucyIsImFjdGlvbiIsImFjdGlvblR5cGUiLCJhdXRvTG9hZERhdGEiLCJDT01QT05FTlRfTE9BRCIsImFkZFJvd0ZvY3VzTGlzdGVuZXIiLCJmb2N1c291dCIsInNlbGVjdGVkRWxlbWVudCIsInJvd0F0dHJpYnV0ZXMiLCJjbGFzc0V2YWx1YXRvciIsImNsYXNzTmFtZSIsInVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzIiwicmVhZE9ubHlFdmFsdWF0b3IiLCJyZWFkT25seSIsInVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzIiwiY29sdW1uUmVhZE9ubHkiLCJwcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyIsIkRBVEFfQVJSSVZFRCIsIlJPV19ERUxFVEVEIiwicm93VmFsdWVzIiwiZWRpdG9yQ2hhbmdlSGFuZGxlciIsInJvd0lkIiwiZmllbGQiLCJ1cGRhdGVOZXN0ZWRQcm9wZXJ0eSIsImNyZWF0ZUNlbGwiLCJjb2x1bW5OYW1lIiwiY2VsbEhhbmRsZSIsInJvd0NlbGxzIiwiY2VsbHNFbnRyeSIsInJlZnJlc2hDZWxsIiwiY2VsbCIsInJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uIiwicm93RXJyb3JzIiwicm93RXJyb3JIYW5kbGVyIiwia2V5cyIsImZpbmQiLCJyb3dFcnJvciIsImlzUm93RXJyb3JzRW1wdHkiLCJrZXkiLCJ2YWx1ZVJvd3MiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJnZXRUaWxlTGFiZWwiLCJjb3VudGVyIiwiY3JlYXRlRWxlbWVudCIsInJlbmRlclRpbGUiLCJpc0l0ZW1TZWxlY3RlZCIsIml0ZW0iLCJ4cyIsIm1lcmdlT2JqZWN0cyIsInRpbGVTdHlsZSIsIm1pbldpZHRoIiwidmFyaWFudCIsImNvbG9yIiwib25DbGljayIsInJlbmRlclRpbGVzIiwiRnJhZ21lbnQiLCJsYWJlbElkIiwiY3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlIiwiY3JlYXRlQ2VsbEVkaXRvckhhbmRsZSIsImhhc0JvcmRlciIsIm1lcmdlU3R5bGVzIiwiYm9yZGVyUmFkaXVzIiwibm90ZXMiLCJub3RlIiwibWFyZ2luQm90dG9tIiwibWVzc2FnZVR5cGUiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJmaWx0ZXJXcmFwcGVyQ2xhc3MiLCJvbkZpbHRlclN1Ym1pdCIsIm9uUmVxdWVzdFNvcnQiLCJjb250YWluZXIiLCJib3JkZXJCb3R0b20iLCJjb250cm9sIiwib25DaGFuZ2UiLCJzeCIsImZvbnRTaXplIiwibGFiZWwiLCJUYWJsZSIsImNlbGxTcGFjaW5nIiwibnVtU2VsZWN0ZWQiLCJvblNlbGVjdEFsbENsaWNrIiwicmVzaXplSGFuZGxlciIsIlRib2R5IiwibWF4SGVpZ2h0IiwiYm9keU1heEhlaWdodCIsImRlZmF1bHRSb3dTdHlsZSIsImZsZXhXcmFwIiwiYWxpZ25JdGVtcyIsIlRyIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25Eb3VibGVDbGljayIsIm9uUm93RG91YmxlQ2xpY2siLCJyb2xlIiwidGFiSW5kZXgiLCJUZCIsImlucHV0UHJvcHMiLCJfcm93JGNvbHVtblJlYWRPbmx5IiwiX2NvbHVtbiRlZGl0b3IiLCJsYXlvdXQiLCJhbGlnbiIsImRpc2FibGVkIiwiZm9ybSIsIkxheW91dCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImNvbCIsInBhcmVudCIsIm9uUm93RXJyb3IiLCJyZWZDYWxsYmFjayIsInZhbGlkYXRvciIsImNvbHVtbkNvbmZpZyIsImNvbnRlbnRUeXBlIiwiY2VsbEZvcm1hdHRlciIsInBhZ2luYXRpb24iLCJwYWduYXRpb24iLCJjb3VudCIsImJhY2tJY29uQnV0dG9uUHJvcHMiLCJuZXh0SWNvbkJ1dHRvblByb3BzIiwib25QYWdlQ2hhbmdlIiwib25Sb3dzUGVyUGFnZUNoYW5nZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9EYXRhR3JpZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7bWFrZVN0eWxlc30gZnJvbSAnQG11aS9zdHlsZXMnO1xuaW1wb3J0IHtUYWJsZSwgVGJvZHksIFRkLCBUcn0gZnJvbSAncmVhY3Qtc3VwZXItcmVzcG9uc2l2ZS10YWJsZSc7XG5pbXBvcnQgJ3JlYWN0LXN1cGVyLXJlc3BvbnNpdmUtdGFibGUvZGlzdC9TdXBlclJlc3BvbnNpdmVUYWJsZVN0eWxlLmNzcyc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnQG11aS9tYXRlcmlhbC9DaGVja2JveCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0ICcuL0RhdGFHcmlkLmNzcyc7XG5pbXBvcnQge2ludm9rZVJlc3QsIGludm9rZVJwY30gZnJvbSAnLi4vUmVzdFNlcnZpY2UnO1xuaW1wb3J0IERhdGFHcmlkRmlsdGVyIGZyb20gJy4vRGF0YUdyaWRGaWx0ZXInO1xuaW1wb3J0IERhdGFHcmlkSGVhZGluZyBmcm9tICcuL0RhdGFHcmlkSGVhZGluZyc7XG5pbXBvcnQgVGFibGVDZWxsQ29udGVudCBmcm9tICcuL1RhYmxlQ2VsbENvbnRlbnQnO1xuaW1wb3J0IFRhYmxlUGFnaW5hdGlvbiBmcm9tICdAbXVpL21hdGVyaWFsL1RhYmxlUGFnaW5hdGlvbic7XG5pbXBvcnQge2dyZXkzMDB9IGZyb20gJ21hdGVyaWFsLXVpL3N0eWxlcy9jb2xvcnMnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgR3JpZCBmcm9tICdAbXVpL21hdGVyaWFsL0dyaWQnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQgKiBhcyAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgQWxlcnQgZnJvbSAncmVhY3QtYm9vdHN0cmFwL0FsZXJ0JztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuL2xheW91dC9MYXlvdXQnO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tIFwiLi4vRHluYW1pY0pTXCI7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ0BtdWkvbWF0ZXJpYWwvU3dpdGNoJztcbmltcG9ydCBGb3JtQ29udHJvbExhYmVsIGZyb20gJ0BtdWkvbWF0ZXJpYWwvRm9ybUNvbnRyb2xMYWJlbCc7XG5pbXBvcnQgR3JhYkNvbnRleHQgZnJvbSAnLi4vaW50ZXJhY3Rpb24vR3JhYkNvbnRleHQnO1xuaW1wb3J0IEN1cnNvck92ZXJsYXkgZnJvbSBcIi4uL2ludGVyYWN0aW9uL0N1cnNvck92ZXJsYXlcIjtcblxuZXhwb3J0IGNvbnN0IE1VTFRJX1NFTEVDVF9DSEVDS0JPWF9DT0xfV0lEVEggPSA2NDtcblxuZnVuY3Rpb24gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChtdWx0aVNlbGVjdCwgY29sdW1uLCBjb2x1bW5Db3VudCkge1xuXG4gICAgbGV0IHdpZHRoID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihjb2x1bW4uYXR0cmlidXRlc1snd2lkdGgnXSkgP1xuICAgICAgICBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdChgcG9wdXBUaXRsZV8ke2NvbHVtbi5pZH1gLGNvbHVtbi5hdHRyaWJ1dGVzWyd3aWR0aCddLCBjb2x1bW4pIDogY29sdW1uLmF0dHJpYnV0ZXNbJ3dpZHRoJ107XG5cbiAgICByZXR1cm4gbXVsdGlTZWxlY3QgPT09IHRydWUgP1xuICAgICAgICAnY2FsYygnICsgKCFVdGlscy5pc051bGwod2lkdGgpID8gd2lkdGggOlxuICAgICAgICAgICAgKDEwMCAvIGNvbHVtbkNvdW50KSArICclJykgKyAnIC0gJyArIChNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIC8gY29sdW1uQ291bnQpICsgJ3B4KSdcbiAgICAgICAgOlxuICAgICAgICAodHlwZW9mIHdpZHRoICE9PSAndW5kZWZpbmVkJyA/IHdpZHRoIDogKDEwMCAvIGNvbHVtbkNvdW50KSArICclJyk7XG59XG5cbmZ1bmN0aW9uIGRlc2MoYSwgYiwgb3JkZXJCeSkge1xuICAgIGlmIChiW29yZGVyQnldIDwgYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChiW29yZGVyQnldID4gYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIHN0YWJsZVNvcnQoYXJyYXksIGNtcCkge1xuICAgIGNvbnN0IHN0YWJpbGl6ZWRUaGlzID0gYXJyYXkubWFwKChlbCwgaW5kZXgpID0+IFtlbCwgaW5kZXhdKTtcbiAgICBzdGFiaWxpemVkVGhpcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gY21wKGFbMF0sIGJbMF0pO1xuICAgICAgICBpZiAob3JkZXIgIT09IDApIHJldHVybiBvcmRlcjtcbiAgICAgICAgcmV0dXJuIGFbMV0gLSBiWzFdO1xuICAgIH0pO1xuICAgIHJldHVybiBzdGFiaWxpemVkVGhpcy5tYXAoZWwgPT4gZWxbMF0pO1xufVxuXG5mdW5jdGlvbiBnZXRTb3J0aW5nKG9yZGVyLCBvcmRlckJ5KSB7XG4gICAgcmV0dXJuIG9yZGVyID09PSAnZGVzYycgPyAoYSwgYikgPT4gZGVzYyhhLCBiLCBvcmRlckJ5KSA6IChhLCBiKSA9PiAtZGVzYyhhLCBiLCBvcmRlckJ5KTtcbn1cblxuY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcyh0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nKDMpLFxuICAgIH0sXG4gICAgcGFwZXI6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB6SW5kZXg6ICcwJyxcbiAgICB9LFxuICAgIHNjcm9sbFBhZGRpbmc6IHtcbiAgICAgICAgcGFkZGluZzogJzhweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgbm9TY3JvbGxQYWRkaW5nOiB7XG4gICAgICAgIHBhZGRpbmc6ICcwICFpbXBvcnRhbnQnLFxuICAgICAgICB3aWR0aDogJzFweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgdGFibGVCb2R5OiB7XG4gICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgIG92ZXJmbG93WTogJ2F1dG8nXG4gICAgfSxcbiAgICB0YWJsZVNlbGVjdGVkOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZ3JleTMwMCxcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVSb3c6IHtcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVXcmFwcGVyOiB7XG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9LFxuICAgIHZpc3VhbGx5SGlkZGVuOiB7XG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDIwLFxuICAgICAgICB3aWR0aDogMSxcbiAgICB9XG59KSk7XG5cbmV4cG9ydCBjb25zdCBEYXRhR3JpZCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpO1xuICAgIGNvbnN0IFtvcmRlciwgc2V0T3JkZXJdID0gUmVhY3QudXNlU3RhdGUoJ2Rlc2MnKTtcbiAgICBjb25zdCBbY29uZmlnXSA9IFJlYWN0LnVzZVN0YXRlKFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKSk7XG4gICAgY29uc3QgW29yZGVyQnksIHNldE9yZGVyQnldID0gUmVhY3QudXNlU3RhdGUoJ2lkJyk7XG4gICAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3RvdGFsTnVtYmVyT2ZSb3dzLCBzZXRUb3RhbE51bWJlck9mUm93c10gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbY3JpdGVyaWFdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZGVsZXRlZFJvd3MsIHNldERlbGV0ZWRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZWRpdGFibGUsIHNldEVkaXRhYmxlXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2Nyb2xsV2lkdGgsIHNldFNjcm9sbFdpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzUGVyUGFnZU9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoWzE1LCAzMCwgNDUsIDYwLCA3NSwgMTUwLCAzMDBdKTtcbiAgICBjb25zdCBbcm93c1BlclBhZ2VMb2FkaW5nLCBzZXRSb3dzUGVyUGFnZUxvYWRpbmddID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3Jvd3NQZXJQYWdlLCBzZXRSb3dzUGVyUGFnZV0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5jb25maWcucGFnZVNpemUpO1xuICAgIGNvbnN0IGhpZ2hsaWdodFJvd1NlbGVjdGlvbiA9IFJlYWN0LnVzZVJlZighVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5oaWdobGlnaHRSb3dTZWxlY3Rpb24pXG4gICAgICAgID8gcHJvcHMuY29uZmlnLmhpZ2hsaWdodFJvd1NlbGVjdGlvbiA6ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pID8gIXByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uIDogdHJ1ZSk7XG4gICAgY29uc3QgW2NlbGxzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaGVhZGluZ0hhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlckhhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2NvbHVtbkxheW91dEhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtlZGl0b3JIYW5kbGVzXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbcm93RXJyb3JNYXBdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFt3cmFwLCBzZXRXcmFwXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCByb3dDb3VudCA9IFJlYWN0LnVzZVJlZigtMSk7XG4gICAgY29uc3Qgcm93c1JlZiA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgbGV0IG5vdGVLZXkgPSAwO1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IFJlYWN0LnVzZVJlZih7fSk7XG5cbiAgICBjb25zdCBkcmFnU3BlYyA9IGNvbmZpZy5hdHRyaWJ1dGVzPy5kcmFnU3BlYyB8fCB7fTtcbiAgICBjb25zdCByb3dHcmFiU3BlYyA9IGRyYWdTcGVjLnJvdyB8fCB7fTtcbiAgICBjb25zdCByb3dzR3JhYmJhYmxlID0gcm93R3JhYlNwZWMuZW5hYmxlZCA9PT0gdHJ1ZTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBjcml0ZXJpYSgpIHtcbiAgICAgICAgICAgICAgICBjcml0ZXJpYS5wYXJhbWV0ZXJzID0gaXNGaWx0ZXJhYmxlKCkgPyBmaWx0ZXJIYW5kbGUuYXBpLmdldFBhcmFtZXRlcnMoKSA6IFtdO1xuICAgICAgICAgICAgICAgIGNyaXRlcmlhLnBhZ2VTaXplID0gcm93c1BlclBhZ2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY3JpdGVyaWE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvd3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFtpXSA9PT0gcm93c1tqXS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93cy5wdXNoKHJvd3Nbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY29sdW1uRGF0YUJpbmRpbmdzKCkge1xuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9IGNvbmZpZy5jb2x1bW5zW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKCFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgaGVhZGluZ0hhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWx0ZXJIYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGZpbHRlckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbHVtbkxheW91dEhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uTGF5b3V0SGFuZGxlID0gY29sdW1uTGF5b3V0SGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY29sdW1uTGF5b3V0SGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlLmFwaSkgJiYgIVV0aWxzLmlzTnVsbChjb2x1bW5MYXlvdXRIYW5kbGUuYXBpLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVDaGlsZHJlbiA9IGNvbHVtbkxheW91dEhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1vcmVDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG1vcmVDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZWRpdG9ySGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlZGl0b3JIYW5kbGUgPSBlZGl0b3JIYW5kbGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChlZGl0b3JIYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGUuYXBpKSAmJiAhVXRpbHMuaXNOdWxsKGVkaXRvckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9yZUNoaWxkcmVuID0gZWRpdG9ySGFuZGxlLmFwaS5nZXRDaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwobW9yZUNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgbW9yZUNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2FkRGF0YTogKGFjdGlvbkNvbmZpZywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzZWFyY2goYWN0aW9uQ29uZmlnLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlU2VsZWN0ZWRSb3dzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIGxldCBuZXdSb3dzID0gcm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXdSb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICAgICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAvLyBTeW5jIHRoZSByZWYgdGhhdCBiYWNrcyB0aGUgYGdldCByb3dzYCBnZXR0ZXIg4oCUIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgIC8vIGFwaS5yb3dzIHJldHVybnMgd2hhdGV2ZXIgcm93c1JlZiB3YXMgYXQgbGFzdCBzeW5jIChvZnRlblxuICAgICAgICAgICAgICAgIC8vIGVtcHR5IGFmdGVyIGEgcHJldmlvdXMgY2xlYXIoKSksIGV2ZW4gdGhvdWdoIHRoZSBsb2NhbFxuICAgICAgICAgICAgICAgIC8vIGByb3dzYCBhcnJheSBoYXMgYmVlbiBtdXRhdGVkLiBjbGVhcigpIGRvZXMgdGhpczsgZGF0YSBsb2FkXG4gICAgICAgICAgICAgICAgLy8gZG9lcyB0aGlzOyBhZGRSb3dzL2RlbGV0ZVNlbGVjdGVkUm93cyBkaWRuJ3Qg4oCUIGxlYWRpbmcgdG9cbiAgICAgICAgICAgICAgICAvLyBUcmFuc2Zlckxpc3QncyB0cmFuc2Zlci1hbGwtYmFjayBmYWlsaW5nIGJlY2F1c2UgYXBpLnJvd3NcbiAgICAgICAgICAgICAgICAvLyBzaG93ZWQgZW1wdHkgcmlnaHQgYWZ0ZXIgYSB0cmFuc2Zlci1hbGwtb3V0LlxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd3M7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgICAgIHNldFJvd3MoW10pO1xuXG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3MoW10pKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gU3VyZ2ljYWwgZGVsZXRlIGJ5IHJvdyBpZHMg4oCUIGRvZXMgTk9UIHRvdWNoIHRoZSBzZWxlY3Rpb24gc3RhdGUuXG4gICAgICAgICAgICAvLyBDb3VudGVycGFydCB0byBkZWxldGVTZWxlY3RlZFJvd3MgZm9yIGNhc2VzIChUcmFuc2Zlckxpc3QgZG91YmxlLVxuICAgICAgICAgICAgLy8gY2xpY2spIHdoZXJlIHRoZSBjYWxsZXIgd2FudHMgdG8gcmVtb3ZlIHNwZWNpZmljIHJvd3Mgd2l0aG91dFxuICAgICAgICAgICAgLy8gaGlqYWNraW5nIHRoZSB1c2VyJ3MgY3VycmVudCBncmlkIHNlbGVjdGlvbi5cbiAgICAgICAgICAgIGRlbGV0ZVJvd3M6IChyb3dJZHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvd0lkcyB8fCByb3dJZHMubGVuZ3RoID09PSAwKSByZXR1cm4gcm93cztcbiAgICAgICAgICAgICAgICBjb25zdCBpZFNldCA9IG5ldyBTZXQocm93SWRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSByb3dzLmZpbHRlcigocm93KSA9PiAhaWRTZXQuaGFzKHJvdy5pZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByZW1haW5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcm93cztcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdDogKHJvd3MpID0+IHtcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQocm93cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkUm93czogKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChvYnNlcnZlUm93KG5ld1JvdykpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5wdXNoKG5ld1Jvdy5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1Jvd3MpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgLy8gU2VlIGRlbGV0ZVNlbGVjdGVkUm93cyBmb3IgdGhlIHJhdGlvbmFsZSDigJQga2VlcCByb3dzUmVmIGluXG4gICAgICAgICAgICAgICAgLy8gc3luYyB3aXRoIHRoZSBtdXRhdGVkIGxvY2FsIHJvd3MgYXJyYXkgc28gdGhlIGBnZXQgcm93c2BcbiAgICAgICAgICAgICAgICAvLyBnZXR0ZXIgcmV0dXJucyBjdXJyZW50IGRhdGEgYWZ0ZXIgYWRkUm93cy5cbiAgICAgICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSByb3dzO1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlQ2FsbGJhY2socm93cyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgbnVtYmVyT2ZQYWdlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxOdW1iZXJPZlJvd3MgLyByb3dzUGVyUGFnZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcm93cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93c1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlYXJjaCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckhhbmRsZSAmJiBmaWx0ZXJIYW5kbGUuYXBpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyc2VkQ29uZmlnLnZpc2libGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBmb3JtQXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQgKyBcIl9lZGl0X2Zvcm1cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93R3JhYlRvZ2dsZShyb3csIGluZGV4KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkgcmV0dXJuO1xuICAgICAgICBpZiAoR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkgcmV0dXJuO1xuXG4gICAgICAgIEdyYWJDb250ZXh0LmdyYWIocHJvcHMuaGFuZGxlLCB7XG4gICAgICAgICAgICByb3csXG4gICAgICAgICAgICByb3dJbmRleDogaW5kZXgsXG4gICAgICAgICAgICBjb21wb25lbnRJZDogcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgQ3Vyc29yT3ZlcmxheS5zaG93KCk7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChcbiAgICAgICAgICAgIEV2ZW50VHlwZS5ST1dfR1JBQl9TVEFSVCxcbiAgICAgICAgICAgIG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKSB7XG4gICAgICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluVGFibGVCb2R5Jyk7XG4gICAgICAgIGlmICh0Ym9keSAhPT0gbnVsbCAmJiB0eXBlb2YgdGJvZHkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRTY3JvbGxXaWR0aCh0Ym9keS5vZmZzZXRXaWR0aCAtIHRib2R5LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uIG9ucmVzaXplKCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVJlcXVlc3RTb3J0ID0gKGV2ZW50LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBjb25zdCBpc0Rlc2MgPSBvcmRlckJ5ID09PSBwcm9wZXJ0eSAmJiBvcmRlciA9PT0gJ2Rlc2MnO1xuICAgICAgICBzZXRPcmRlcihpc0Rlc2MgPyAnYXNjJyA6ICdkZXNjJyk7XG4gICAgICAgIHNldE9yZGVyQnkocHJvcGVydHkpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGxDbGljayhldmVudCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkcyA9IHJvd3MubWFwKG4gPT4gbi5uYW1lKTtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3RlZHMpO1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1NlbGVjdGVkcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGVjdGVkLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5pZCA9PT0gc2VsZWN0ZWRbal0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRSb3dzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pIHx8IHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gLTE7XG4gICAgICAgICAgICBpZihzZWxlY3RlZC5pbmRleE9mKGlkKSA8IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWQgPSBbXTtcblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5tdWx0aVNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gbmV3U2VsZWN0ZWQuY29uY2F0KHNlbGVjdGVkLCBpZCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBuZXdTZWxlY3RlZC5jb25jYXQoc2VsZWN0ZWQuc2xpY2UoMSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSW5kZXggPT09IHNlbGVjdGVkLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gbmV3U2VsZWN0ZWQuY29uY2F0KHNlbGVjdGVkLnNsaWNlKDAsIC0xKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gbmV3U2VsZWN0ZWQuY29uY2F0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnNsaWNlKDAsIHNlbGVjdGVkSW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnNsaWNlKHNlbGVjdGVkSW5kZXggKyAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZC5wdXNoKGlkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gZ2V0U2VsZWN0ZWRSb3dzKG5ld1NlbGVjdGVkKTtcblxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vblNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXJlU2VsZWN0aW9uRXZlbnQoKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb25maWcpICYmICghVXRpbHMuaXNOdWxsKGhlYWRpbmdIYW5kbGUpIHx8IGNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnKSkge1xuICAgICAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZ2V0U2VsZWN0ZWRSb3dzKHNlbGVjdGVkKSk7XG4gICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuU0VMRUNUSU9OX0NIQU5HRSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSb3dHcmFiYmFibGUocm93KSB7XG4gICAgICAgIHJldHVybiByb3dzR3JhYmJhYmxlICYmICFpc1Jvd0RyYWdEaXNhYmxlZChyb3cpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUm93RHJhZ0Rpc2FibGVkKHJvdykge1xuICAgICAgICBpZiAoIWRyYWdTcGVjLmRpc2FibGVkV2hlbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KFxuICAgICAgICAgICAgJ1JPVy0nICsgcm93LmlkICsgJy1kcmFnLWRpc2FibGVkJyxcbiAgICAgICAgICAgIGRyYWdTcGVjLmRpc2FibGVkV2hlbixcbiAgICAgICAgICAgIHByb3BzLmNvbmZpZy5pZCxcbiAgICAgICAgICAgIHtyb3c6IHJvd30sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEN1cnNvcihjdXJzb3IpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBjdXJzb3IgfHwgJ2RlZmF1bHQnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVJvd01vdXNlRW50ZXIocm93KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSBzaG93IGdyYWIgY3Vyc29yIGlmIG5vdCBhbHJlYWR5IGhvbGRpbmcgc29tZXRoaW5nXG4gICAgICAgIGlmICghR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgc2V0Q3Vyc29yKHJvd0dyYWJTcGVjLmN1cnNvciB8fCAnZ3JhYicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93TW91c2VMZWF2ZSgpIHtcbiAgICAgICAgc2V0Q3Vyc29yKCdkZWZhdWx0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQsIHJvdywgaW5kZXgpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5jbG9zZXN0KCcuZWRpdENlbGwnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChyb3dzR3JhYmJhYmxlICYmICFpc1Jvd0RyYWdEaXNhYmxlZChyb3cpKSB7XG4gICAgICAgICAgICBoYW5kbGVSb3dHcmFiVG9nZ2xlKHJvdywgaW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25DZWxsU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZG9IYW5kbGVDbGljayhldmVudCwgcm93LmlkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDZWxsQ2xpY2soZXZlbnQsIGlkLCBjb2x1bW4pIHtcbiAgICAgICAgaWYgKGNvbHVtbi5maWVsZFR5cGUgIT09ICdkb2N1bWVudCcpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gOiBFdmFsdWF0ZSBpZiB0aGlzIGNhbGwgaXMgbmVjZXNzYXJ5XG4gICAgICAgICAgICBkb0hhbmRsZUNsaWNrKGV2ZW50LCBpZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICBwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UoaWQsIGNvbHVtbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2VQYWdlKGV2ZW50LCBuZXdQYWdlKSB7XG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gbmV3UGFnZSArIDE7XG4gICAgICAgIHNldFBhZ2UobmV3UGFnZSk7XG4gICAgICAgIHNlYXJjaCgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVJvd3NQZXJQYWdlKGV2ZW50KSB7XG4gICAgICAgIHNldFJvd3NQZXJQYWdlKHJvd3NQZXJQYWdlID0+IGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIHNldFBhZ2UoMCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JzZXJ2ZVJvdyA9IChyb3cpID0+IHtcbiAgICAgICAgLypsZXQgb2JzZXJ2YWJsZVJvdyA9IG9ic2VydmFibGUocm93KTtcbiAgICAgICAgb2JzZXJ2ZShcbiAgICAgICAgICAgIG9ic2VydmFibGVSb3csXG4gICAgICAgICAgICBjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBuZXdWYWx1ZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgb2xkVmFsdWUgPSBjaGFuZ2Uub2xkVmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hDZWxsKHJvdy5pZCwgY2hhbmdlLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVJvdzsqL1xuXG4gICAgICAgIHJldHVybiByb3c7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NEYXRhKGRhdGEsIGNvbmYpIHtcbiAgICAgICAgc2V0VG90YWxOdW1iZXJPZlJvd3MoZGF0YS50b3RhbE51bWJlck9mUmVjb3JkcyA/IGRhdGEudG90YWxOdW1iZXJPZlJlY29yZHMgOiBkYXRhLnJlY29yZHMubGVuZ3RoKTtcblxuICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSBkYXRhLnJlY29yZHM7XG4gICAgICAgIHVwZGF0ZVJvd0NsYXNzZXMoZGF0YS5yZWNvcmRzKTtcbiAgICAgICAgbGV0IHRhYmxlUm93cyA9IFtdO1xuICAgICAgICBsZXQgcmVjb3JkcyA9IGRhdGEucmVjb3JkcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0YWJsZVJvd3MucHVzaChvYnNlcnZlUm93KHJlY29yZHNbaV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFJvd3ModGFibGVSb3dzKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2ggPSAoYWN0aW9uQ29uZmlnID0gbnVsbCwgZXZlbnQpID0+IHtcbiAgICAgICAgbGV0IGNvbmYgPSBjb25maWc7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZikpIHtcbiAgICAgICAgICAgIGNvbmYgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2VydmljZSA9ICFVdGlscy5pc051bGwoY29uZi5kYXRhU2VydmljZSkgPyBjb25mLmRhdGFTZXJ2aWNlIDogIVV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcpID8gYWN0aW9uQ29uZmlnLmRhdGFTZXJ2aWNlIDogbnVsbDtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2VydmljZSkpIHtcbiAgICAgICAgICAgIGxldCBzZXJ2aWNlVHlwZSA9IHNlcnZpY2UudHlwZTtcbiAgICAgICAgICAgIGlmICghc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZSA9ICdycGMnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VydmljZVR5cGUgPT09ICdycGMnIHx8IHNlcnZpY2VUeXBlID09PSAncmVzdCcpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWV0aG9kID0gc2VydmljZVR5cGUgPT09ICdycGMnID8gaW52b2tlUnBjIDogaW52b2tlUmVzdDtcbiAgICAgICAgICAgICAgICBtZXRob2Qoe1xuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHByb3BzLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWQsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhKHJlc3VsdCwgY29uZik7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZS5lcnJvclR5cGUgIT09ICdJTlZBTElEX1BBUkFNRVRFUicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnB1Ymxpc2hFcnJvck1lc3NhZ2UoZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBzZXJ2aWNlIHR5cGUgOiAnICsgc2VydmljZVR5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFjdGlvbkNvbmZpZyAmJiBhY3Rpb25Db25maWcudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlUGFyYW1ldGVyQ29uZmlnVmFsdWUoYWN0aW9uQ29uZmlnLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YShkYXRhLCBjb25mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjcml0ZXJpYS5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIGlmICghcm93c1BlclBhZ2VMb2FkaW5nKSB7XG4gICAgICAgICAgICBzZXRSb3dzUGVyUGFnZUxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgc2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICB9LCBbcm93c1BlclBhZ2VdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIFJlYWN0LnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgZXZlbnRIYW5kbGluZ0NvbmZpZyA9IFV0aWxzLmlzTnVsbChjb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZykgPyB7fSA6IGNvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnO1xuICAgICAgICBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMgPSBVdGlscy5pc051bGwoZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zKSA/IFtdIDogZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zO1xuXG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxpbmdDb25maWcsIHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN5c3RlbVN1YnNjcmlwdGlvbnMocHJvcHMudmlld0lkLCBjb25maWcpO1xuICAgICAgICBsZXQgaXNFZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICBsZXQgdmlzaWJsZUNvbHVtbkNvdW50ID0gMDtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgbGV0IGhpZGRlbiA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb2x1bW4sICdoaWRkZW4nLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24oaGlkZGVuLCBwcm9wcy5jb25maWcuaWQpKSB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZUNvbHVtbkNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gY29uZmlnLmNvbHVtbnNbaV07XG5cbiAgICAgICAgICAgIGlmICghaXNFZGl0YWJsZSAmJiBjb2x1bW4uYXR0cmlidXRlc1snZWRpdGFibGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGlzRWRpdGFibGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldEVkaXRhYmxlKHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZighY29sdW1uLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA9IGV2YWx1YXRlVGFibGVDZWxsV2lkdGgocHJvcHMuc2VsZWN0aW9uTW9kZSA9PT0gJ01VTFRJUExFJywgY29sdW1uLCB2aXNpYmxlQ29sdW1uQ291bnQpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uLmF0dHJpYnV0ZXMpICYmIGNvbHVtbi5hdHRyaWJ1dGVzWydlZGl0YWJsZSddID09PSB0cnVlICYmIFV0aWxzLmlzTnVsbChjb2x1bW4uZWRpdG9yKSkge1xuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0RWRpdG9yID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVkaXRvci5maWVsZFR5cGUgPSAnVEVYVF9GSUVMRCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVkaXRvci5pZCA9IGNvbHVtbi5pZCArICdFZGl0b3InO1xuXG4gICAgICAgICAgICAgICAgY29sdW1uLmVkaXRvciA9IGRlZmF1bHRFZGl0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjcml0ZXJpYS5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIGNyaXRlcmlhLmRhdGFRdWVyeU5hbWUgPSBjb25maWcuZGF0YVF1ZXJ5TmFtZTtcblxuICAgICAgICBsZXQgaGFzTG9hZEV2ZW50O1xuICAgICAgICBsZXQgbG9hZFN1YnNjcmlwdGlvbnMgPSBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMuZmlsdGVyKChzdWJzY3JpcHRpb24pID0+IHN1YnNjcmlwdGlvbi5ldmVudFR5cGUgPT09ICdDT01QT05FTlRfTE9BRCcpO1xuICAgICAgICBmb3IgKGNvbnN0IGxvYWRTdWJzY3JpcHRpb24gb2YgbG9hZFN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChsb2FkU3Vic2NyaXB0aW9uLmFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5hY3Rpb25UeXBlID09PSAnbG9hZERhdGEnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaGFzTG9hZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhdXRvTG9hZERhdGEgPSBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUoY29uZmlnLCAnYXV0b0xvYWREYXRhJywgbnVsbCk7XG4gICAgICAgIGlmICghaGFzTG9hZEV2ZW50ICYmIChhdXRvTG9hZERhdGEgPT09IG51bGwgfHwgYXV0b0xvYWREYXRhID09PSB0cnVlKSkge1xuICAgICAgICAgICAgc2VhcmNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG51bGwpO1xuICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5DT01QT05FTlRfTE9BRCwgZXZlbnQpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmRhdGEpKSB7XG4gICAgICAgICAgICBsZXQgY29uZiA9IGNvbmZpZztcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZikpIHtcbiAgICAgICAgICAgICAgICBjb25mID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm9jZXNzRGF0YShwcm9wcy5kYXRhLCBjb25mKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5kYXRhXSk7XG5cbiAgICBmdW5jdGlvbiBhZGRSb3dGb2N1c0xpc3RlbmVyKHJvdykge1xuICAgICAgICAkKCcjUk9XLScgKyByb3cuaWQpXG4gICAgICAgICAgICAuZm9jdXNvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2VsZWN0ZWRFbGVtZW50IG9mIHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgIT09IHJvdy5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVSb3dDbGFzc2VzID0gKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKG5ld1Jvd3MpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcucm93QXR0cmlidXRlcyAmJiBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5jbGFzc0V2YWx1YXRvcikge1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3cuY2xhc3NOYW1lID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoJ1JPVy0nICsgcm93LmlkICsgJ2NsYXNzRXZhbHVhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLmNsYXNzRXZhbHVhdG9yLCBwcm9wcy5jb25maWcuaWQsIHtpbmRleH0sIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzID0gKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKG5ld1Jvd3MpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcucm93QXR0cmlidXRlcyAmJiBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvcikge1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3cucmVhZE9ubHkgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdCgnUk9XLScgKyByb3cuaWQgKyAncmVhZE9ubHlFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMucmVhZE9ubHlFdmFsdWF0b3IsIHByb3BzLmNvbmZpZy5pZCwge2luZGV4fSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMgPSAoY29sdW1uLCBuZXdSb3dzKSA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0cmlidXRlcyAmJiBjb2x1bW4uYXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvcikge1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIG5ld1Jvd3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvdy5jb2x1bW5SZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICByb3cuY29sdW1uUmVhZE9ubHkgPSB7fTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByb3cuY29sdW1uUmVhZE9ubHlbY29sdW1uLmlkXSA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KCdDT0wtJyArIHJvdy5pZCArICctJyArIGNvbHVtbi5pZCArICctcmVhZE9ubHlFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvciwgcHJvcHMuY29uZmlnLmlkLCB7aW5kZXh9LCBudWxsKTtcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICBldmVudE1hbmFnZXIucHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnMocHJvcHMuY29uZmlnLmlkKTtcbiAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuXG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93cyk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkRBVEFfQVJSSVZFRCwgZXZlbnQpO1xuICAgIH0sIFtyb3dzXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChkZWxldGVkUm93cykgJiYgZGVsZXRlZFJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBkZWxldGVkUm93cyk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5ST1dfREVMRVRFRCwgZXZlbnQpO1xuICAgICAgICAgICAgc2V0RGVsZXRlZFJvd3MobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgfSwgW2RlbGV0ZWRSb3dzXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5yb3dzKSkge1xuICAgICAgICAgICAgbGV0IHJvd1ZhbHVlcyA9IFtdO1xuXG4gICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSBwcm9wcy5yb3dzO1xuICAgICAgICAgICAgdXBkYXRlUm93Q2xhc3Nlcyhwcm9wcy5yb3dzKTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHByb3BzLnJvd3MpIHtcbiAgICAgICAgICAgICAgICByb3dWYWx1ZXMucHVzaChvYnNlcnZlUm93KHJvdykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB1cGRhdGVSb3dSZWFkT25seVN0YXR1cyhwcm9wcy5yb3dzKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMoY29sdW1uLCBwcm9wcy5yb3dzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcm93VmFsdWVzO1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWQoW10pO1xuICAgICAgICAgICAgc2V0Um93cyhyb3dWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLnJvd3NdKTtcblxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMocm93cyk7XG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgICAgICAgICB1cGRhdGVDb2x1bW5SZWFkT25seVN0YXR1cyhjb2x1bW4sIHJvd3MpO1xuICAgICAgICB9XG4gICAgfSwgW3Jvd3NdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGZpcmVTZWxlY3Rpb25FdmVudCgpO1xuICAgIH0sIFtzZWxlY3RlZF0pO1xuXG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IGlkID0+IHNlbGVjdGVkLmluZGV4T2YoaWQpICE9PSAtMTtcbiAgICBjb25zdCBlZGl0b3JDaGFuZ2VIYW5kbGVyID0gKHJvd0lkLCBmaWVsZCwgdmFsdWUpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgICAgICAgaWYgKHJvdy5pZCA9PT0gcm93SWQpIHtcbiAgICAgICAgICAgICAgICBVdGlscy51cGRhdGVOZXN0ZWRQcm9wZXJ0eShyb3csIGZpZWxkLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuICAgIH07XG5cbiAgICBjb25zdCBpc0ZpbHRlcmFibGUgPSAoKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMuY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb2x1bW4gPSBwcm9wcy5jb25maWcuY29sdW1uc1tpXTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uYXR0cmlidXRlc1snZmlsdGVyYWJsZSddID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZUNlbGwgPSAocm93LCBjb2x1bW5OYW1lLCBjZWxsSGFuZGxlKSA9PiB7XG4gICAgICAgIGxldCByb3dDZWxscyA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2VsbHNFbnRyeSBvZiBjZWxscykge1xuICAgICAgICAgICAgaWYgKGNlbGxzRW50cnkucm93SWQgPT09IHJvdy5pZCkge1xuICAgICAgICAgICAgICAgIHJvd0NlbGxzID0gY2VsbHNFbnRyeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChVdGlscy5pc051bGwocm93Q2VsbHMpIHx8IHJvd0NlbGxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcm93Q2VsbHMgPSB7fTtcbiAgICAgICAgICAgIHJvd0NlbGxzLnJvd0lkID0gcm93LmlkO1xuICAgICAgICAgICAgY2VsbHMucHVzaChyb3dDZWxscyk7XG4gICAgICAgIH1cblxuICAgICAgICByb3dDZWxsc1tjb2x1bW5OYW1lXSA9IGNlbGxIYW5kbGU7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlZnJlc2hDZWxsID0gKHJvd0lkLCBjb2x1bW5OYW1lKSA9PiB7XG4gICAgICAgIGxldCByb3dDZWxscyA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBjZWxscykge1xuICAgICAgICAgICAgaWYgKGNlbGwucm93SWQgPT09IHJvd0lkKSB7XG4gICAgICAgICAgICAgICAgcm93Q2VsbHMgPSBjZWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocm93Q2VsbHMpKSB7XG4gICAgICAgICAgICBsZXQgY2VsbCA9IHJvd0NlbGxzW2NvbHVtbk5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjZWxsKSkge1xuICAgICAgICAgICAgICAgIGNlbGwuYXBpLnJlZnJlc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCByZW1vdmVBbGxSb3dFcnJvcnNCeUNvbHVtbiA9IChjb2x1bW5OYW1lLCByb3dFcnJvcnMpID0+IHtcbiAgICAgICAgaWYgKHJvd0Vycm9ycykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHJvd0Vycm9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGlmIChyb3dFcnJvcnNbaV0uY29sdW1uID09PSBjb2x1bW5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd0Vycm9ycy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgcm93RXJyb3JIYW5kbGVyID0gKHJvd0lkLCBlcnJvciwgY29sdW1uKSA9PiB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhyb3dFcnJvck1hcCkubGVuZ3RoID09PSAwIHx8ICFyb3dFcnJvck1hcFtyb3dJZF0pIHtcbiAgICAgICAgICAgIHJvd0Vycm9yTWFwW3Jvd0lkXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoIXJvd0Vycm9yTWFwW3Jvd0lkXS5maW5kKHJvd0Vycm9yID0+IHJvd0Vycm9yLmNvbHVtbiA9PT0gY29sdW1uKSkge1xuICAgICAgICAgICAgICAgIHJvd0Vycm9yTWFwW3Jvd0lkXS5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uKGNvbHVtbiwgcm93RXJyb3JNYXBbcm93SWRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGlzUm93RXJyb3JzRW1wdHkgPSAoKSA9PiB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhyb3dFcnJvck1hcCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJvd0Vycm9yTWFwKSkge1xuICAgICAgICAgICAgaWYgKHJvd0Vycm9yTWFwW2tleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlQ2hhbmdlQ2FsbGJhY2sgPSAodmFsdWVSb3dzKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikpIHtcbiAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcih2YWx1ZVJvd3MsICFpc1Jvd0Vycm9yc0VtcHR5KCkpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFRpbGVMYWJlbChyb3cpIHtcbiAgICAgICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAge2NvbmZpZy5jb2x1bW5zLm1hcChjb2x1bW4gPT4gKFxuICAgICAgICAgICAgICAgICAgICAhY29sdW1uLmF0dHJpYnV0ZXMuaGlkZGVuID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGtleT17Y291bnRlcisrfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93WyFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyVGlsZShyb3csIGtleSkge1xuICAgICAgICBjb25zdCBpc0l0ZW1TZWxlY3RlZCA9IGlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgcmV0dXJuICg8R3JpZCBpdGVtIHhzIHN0eWxlPXtVdGlscy5tZXJnZU9iamVjdHMocHJvcHMuY29uZmlnLnRpbGVTdHlsZSwge1xuICAgICAgICAgICAgaGVpZ2h0OiAnMjAwcHgnLFxuICAgICAgICAgICAgbWluV2lkdGg6ICcyMDBweCdcbiAgICAgICAgfSl9IGtleT17a2V5fT5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgY29sb3I9e1wic2Vjb25kYXJ5XCJ9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IGlzSXRlbVNlbGVjdGVkID8gJzFweCBzb2xpZCAxcHggc29saWQgI2YyYTkwMCcgOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogaXNJdGVtU2VsZWN0ZWQgPyAnI2ZmZjhlMScgOiAnI2ZhZmFmYScsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGRvSGFuZGxlQ2xpY2soZXZlbnQsIHJvdy5pZCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBnZXRUaWxlTGFiZWwocm93KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0dyaWQ+KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW5kZXJUaWxlcygpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0l0ZW1TZWxlY3RlZCA9IGlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsSWQgPSBgZW5oYW5jZWQtdGFibGUtY2hlY2tib3gtJHtpbmRleH1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93LmluZGV4ID0gaW5kZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGlsZShyb3csIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbkxheW91dEhhbmRsZShjb2x1bW4sIGluZGV4KSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlc1tjb2x1bW4uaWQgKyBpbmRleF0pKSB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0ge307XG4gICAgICAgICAgICBjb2x1bW5MYXlvdXRIYW5kbGVzW2NvbHVtbi5pZCArIGluZGV4XSA9IGhhbmRsZTtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sdW1uTGF5b3V0SGFuZGxlc1tjb2x1bW4uaWQgKyBpbmRleF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlQ2VsbEVkaXRvckhhbmRsZShjb2x1bW4pIHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGVzW2NvbHVtbi5pZCArIFwiX2VkaXRvclwiXSkpIHtcbiAgICAgICAgICAgIGxldCBoYW5kbGUgPSB7fTtcbiAgICAgICAgICAgIGVkaXRvckhhbmRsZXNbY29sdW1uLmlkICsgXCJfZWRpdG9yXCJdID0gaGFuZGxlO1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlZGl0b3JIYW5kbGVzW2NvbHVtbi5pZCArIFwiX2VkaXRvclwiXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICB2aXNpYmxlICYmXG4gICAgICAgIDxkaXYgaWQ9e3Byb3BzLmNvbmZpZy5pZH0gY2xhc3NOYW1lPXtVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUocHJvcHMuY29uZmlnLCAnY2xhc3NOYW1lJywgbnVsbCl9IHN0eWxlPXsoVXRpbHMuaXNOdWxsKHByb3BzLmhhc0JvcmRlcikgfHwgcHJvcHMuaGFzQm9yZGVyID09PSB0cnVlKSA/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+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsMEJBQUEsR0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxnQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsaUJBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLGdCQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxPQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxNQUFBLEdBQUFaLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBWSxXQUFBLEdBQUFiLHNC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
|
|
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+XG4gICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLDBCQUFBLEdBQUFGLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFHLFNBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sZUFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sZ0JBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLGlCQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxnQkFBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsT0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsTUFBQSxHQUFBWixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVksV0FBQSxHQUFBYixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWEsVUFBQSxHQUFBZCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWMsS0FBQSxHQUFBZixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWUsT0FBQSxHQUFBaEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFnQixDQUFBLEdBQUFDLHVCQUFBLENBQUFqQixPQUFBO0FBQ0EsSUFBQWtCLE1BQUEsR0FBQW5CLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBbUIsbUJBQUEsR0FBQXBCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBb0IsT0FBQSxHQUFBcEIsT0FBQTtBQUNBLElBQUFxQixVQUFBLEdBQUF0QixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQXNCLE9BQUEsR0FBQXZCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBdUIsaUJBQUEsR0FBQXhCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBd0IsWUFBQSxHQUFBekIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUF5QixjQUFBLEdBQUExQixzQkFBQSxDQUFBQyxPQUFBO0FBQXlELFNBQUFpQix3QkFBQVMsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQVgsdUJBQUEsWUFBQUEsQ0FBQVMsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFDLE9BQUEsRUFBQVYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsR0FBQU0sQ0FBQSxDQUFBTyxHQUFBLENBQUFiLENBQUEsRUFBQVEsQ0FBQSxnQkFBQVAsQ0FBQSxJQUFBRCxDQUFBLGdCQUFBQyxDQUFBLE9BQUFhLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZixDQUFBLEVBQUFDLENBQUEsT0FBQU0sQ0FBQSxJQUFBRCxDQUFBLEdBQUFVLE1BQUEsQ0FBQUMsY0FBQSxLQUFBRCxNQUFBLENBQUFFLHdCQUFBLENBQUFsQixDQUFBLEVBQUFDLENBQUEsT0FBQU0sQ0FBQSxDQUFBSyxHQUFBLElBQUFMLENBQUEsQ0FBQU0sR0FBQSxJQUFBUCxDQUFBLENBQUFFLENBQUEsRUFBQVAsQ0FBQSxFQUFBTSxDQUFBLElBQUFDLENBQUEsQ0FBQVAsQ0FBQSxJQUFBRCxDQUFBLENBQUFDLENBQUEsV0FBQU8sQ0FBQSxLQUFBUixDQUFBLEVBQUFDLENBQUE7QUFBQSxTQUFBNUIsdUJBQUEyQixDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLEdBQUFMLENBQUEsS0FBQVUsT0FBQSxFQUFBVixDQUFBO0FBRWxELE1BQU1tQiwrQkFBK0IsR0FBQUMsT0FBQSxDQUFBRCwrQkFBQSxHQUFHLEVBQUU7QUFFakQsU0FBU0Usc0JBQXNCQSxDQUFDQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsV0FBVyxFQUFFO0VBRTlELElBQUlDLEtBQUssR0FBR0MsMkJBQWtCLENBQUNDLFlBQVksQ0FBQ0osTUFBTSxDQUFDSyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FDbkVDLGtCQUFTLENBQUNDLGFBQWEsZUFBQUMsTUFBQSxDQUFlUixNQUFNLENBQUNTLEVBQUUsR0FBR1QsTUFBTSxDQUFDSyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUVMLE1BQU0sQ0FBQyxHQUFHQSxNQUFNLENBQUNLLFVBQVUsQ0FBQyxPQUFPLENBQUM7RUFFdEgsT0FBT04sV0FBVyxLQUFLLElBQUksR0FDdkIsT0FBTyxJQUFJLENBQUNXLGNBQUssQ0FBQ0MsTUFBTSxDQUFDVCxLQUFLLENBQUMsR0FBR0EsS0FBSyxHQUNsQyxHQUFHLEdBQUdELFdBQVcsR0FBSSxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUlMLCtCQUErQixHQUFHSyxXQUFZLEdBQUcsS0FBSyxHQUUvRixPQUFPQyxLQUFLLEtBQUssV0FBVyxHQUFHQSxLQUFLLEdBQUksR0FBRyxHQUFHRCxXQUFXLEdBQUksR0FBSTtBQUMxRTtBQUVBLFNBQVNXLElBQUlBLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxPQUFPLEVBQUU7RUFDekIsSUFBSUQsQ0FBQyxDQUFDQyxPQUFPLENBQUMsR0FBR0YsQ0FBQyxDQUFDRSxPQUFPLENBQUMsRUFBRTtJQUN6QixPQUFPLENBQUMsQ0FBQztFQUNiO0VBQ0EsSUFBSUQsQ0FBQyxDQUFDQyxPQUFPLENBQUMsR0FBR0YsQ0FBQyxDQUFDRSxPQUFPLENBQUMsRUFBRTtJQUN6QixPQUFPLENBQUM7RUFDWjtFQUNBLE9BQU8sQ0FBQztBQUNaO0FBRUEsU0FBU0MsVUFBVUEsQ0FBQ0MsS0FBSyxFQUFFQyxHQUFHLEVBQUU7RUFDNUIsTUFBTUMsY0FBYyxHQUFHRixLQUFLLENBQUNHLEdBQUcsQ0FBQyxDQUFDQyxFQUFFLEVBQUVDLEtBQUssS0FBSyxDQUFDRCxFQUFFLEVBQUVDLEtBQUssQ0FBQyxDQUFDO0VBQzVESCxjQUFjLENBQUNJLElBQUksQ0FBQyxDQUFDVixDQUFDLEVBQUVDLENBQUMsS0FBSztJQUMxQixNQUFNVSxLQUFLLEdBQUdOLEdBQUcsQ0FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsSUFBSVUsS0FBSyxLQUFLLENBQUMsRUFBRSxPQUFPQSxLQUFLO0lBQzdCLE9BQU9YLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN0QixDQUFDLENBQUM7RUFDRixPQUFPSyxjQUFjLENBQUNDLEdBQUcsQ0FBQ0MsRUFBRSxJQUFJQSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUM7QUFFQSxTQUFTSSxVQUFVQSxDQUFDRCxLQUFLLEVBQUVULE9BQU8sRUFBRTtFQUNoQyxPQUFPUyxLQUFLLEtBQUssTUFBTSxHQUFHLENBQUNYLENBQUMsRUFBRUMsQ0FBQyxLQUFLRixJQUFJLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxPQUFPLENBQUMsR0FBRyxDQUFDRixDQUFDLEVBQUVDLENBQUMsS0FBSyxDQUFDRixJQUFJLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxPQUFPLENBQUM7QUFDNUY7QUFFQSxNQUFNVyxTQUFTLEdBQUcsSUFBQUMsa0JBQVUsRUFBQ0MsS0FBSyxLQUFLO0VBQ25DQyxJQUFJLEVBQUU7SUFDRjNCLEtBQUssRUFBRSxNQUFNO0lBQ2I0QixTQUFTLEVBQUVGLEtBQUssQ0FBQ0csT0FBTyxDQUFDLENBQUM7RUFDOUIsQ0FBQztFQUNEQyxLQUFLLEVBQUU7SUFDSDlCLEtBQUssRUFBRSxNQUFNO0lBQ2IrQixNQUFNLEVBQUUsTUFBTTtJQUNkQyxRQUFRLEVBQUUsVUFBVTtJQUNwQkMsTUFBTSxFQUFFO0VBQ1osQ0FBQztFQUNEQyxhQUFhLEVBQUU7SUFDWEMsT0FBTyxFQUFFO0VBQ2IsQ0FBQztFQUNEQyxlQUFlLEVBQUU7SUFDYkQsT0FBTyxFQUFFLGNBQWM7SUFDdkJuQyxLQUFLLEVBQUU7RUFDWCxDQUFDO0VBQ0RxQyxTQUFTLEVBQUU7SUFDUEMsT0FBTyxFQUFFLE9BQU87SUFDaEJDLFNBQVMsRUFBRTtFQUNmLENBQUM7RUFDREMsYUFBYSxFQUFFO0lBQ1hDLGVBQWUsRUFBRUMsZUFBTztJQUN4QixTQUFTLEVBQUU7TUFDUEMsVUFBVSxFQUFFO0lBQ2hCO0VBQ0osQ0FBQztFQUNEQyxRQUFRLEVBQUU7SUFDTixTQUFTLEVBQUU7TUFDUEQsVUFBVSxFQUFFO0lBQ2hCO0VBQ0osQ0FBQztFQUNERSxZQUFZLEVBQUU7SUFDVmQsTUFBTSxFQUFFO0VBQ1osQ0FBQztFQUNEZSxLQUFLLEVBQUU7SUFDSGYsTUFBTSxFQUFFO0VBQ1osQ0FBQztFQUNEZ0IsY0FBYyxFQUFFO0lBQ1pDLE1BQU0sRUFBRSxDQUFDO0lBQ1RDLElBQUksRUFBRSxlQUFlO0lBQ3JCbEIsTUFBTSxFQUFFLENBQUM7SUFDVG1CLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDVmYsT0FBTyxFQUFFLENBQUM7SUFDVkgsUUFBUSxFQUFFLFVBQVU7SUFDcEJtQixHQUFHLEVBQUUsRUFBRTtJQUNQbkQsS0FBSyxFQUFFO0VBQ1g7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVJLE1BQU1vRCxRQUFRLEdBQUF6RCxPQUFBLENBQUF5RCxRQUFBLGdCQUFHQyxjQUFLLENBQUNDLElBQUksQ0FBRUMsS0FBSyxJQUFLO0VBQUEsSUFBQUMsa0JBQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUE7RUFDMUMsTUFBTUMsT0FBTyxHQUFHcEMsU0FBUyxDQUFDLENBQUM7RUFDM0IsTUFBTSxDQUFDRixLQUFLLEVBQUV1QyxRQUFRLENBQUMsR0FBR1IsY0FBSyxDQUFDUyxRQUFRLENBQUMsTUFBTSxDQUFDO0VBQ2hELE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLEdBQUdWLGNBQUssQ0FBQ1MsUUFBUSxDQUFDdEQsY0FBSyxDQUFDd0QsV0FBVyxDQUFDVCxLQUFLLENBQUNRLE1BQU0sRUFBRVIsS0FBSyxDQUFDVSxNQUFNLENBQUMsQ0FBQztFQUM5RSxNQUFNLENBQUNwRCxPQUFPLEVBQUVxRCxVQUFVLENBQUMsR0FBR2IsY0FBSyxDQUFDUyxRQUFRLENBQUMsSUFBSSxDQUFDO0VBQ2xELE1BQU0sQ0FBQ0ssUUFBUSxFQUFFQyxXQUFXLENBQUMsR0FBR2YsY0FBSyxDQUFDUyxRQUFRLENBQUMsRUFBRSxDQUFDO0VBQ2xELE1BQU0sQ0FBQ08saUJBQWlCLEVBQUVDLG9CQUFvQixDQUFDLEdBQUdqQixjQUFLLENBQUNTLFFBQVEsQ0FBQyxDQUFDLENBQUM7RUFDbkUsTUFBTSxDQUFDUyxRQUFRLENBQUMsR0FBR2xCLGNBQUssQ0FBQ1MsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3JDLE1BQU0sQ0FBQ1UsSUFBSSxFQUFFQyxPQUFPLENBQUMsR0FBR3BCLGNBQUssQ0FBQ1MsUUFBUSxDQUFDLENBQUMsQ0FBQztFQUN6QyxNQUFNLENBQUNZLElBQUksRUFBRUMsT0FBTyxDQUFDLEdBQUd0QixjQUFLLENBQUNTLFFBQVEsQ0FBQyxFQUFFLENBQUM7RUFDMUMsTUFBTSxDQUFDYyxXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHeEIsY0FBSyxDQUFDUyxRQUFRLENBQUMsRUFBRSxDQUFDO0VBQ3hELE1BQU0sQ0FBQ2dCLFFBQVEsRUFBRUMsV0FBVyxDQUFDLEdBQUcxQixjQUFLLENBQUNTLFFBQVEsQ0FBQyxLQUFLLENBQUM7RUFDckQsTUFBTSxDQUFDa0IsV0FBVyxFQUFFQyxjQUFjLENBQUMsR0FBRzVCLGNBQUssQ0FBQ1MsUUFBUSxDQUFDLENBQUMsQ0FBQztFQUN2RCxNQUFNLENBQUNvQixrQkFBa0IsQ0FBQyxHQUFHN0IsY0FBSyxDQUFDUyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztFQUMzRSxNQUFNLENBQUNxQixrQkFBa0IsRUFBRUMscUJBQXFCLENBQUMsR0FBRy9CLGNBQUssQ0FBQ1MsUUFBUSxDQUFDLElBQUksQ0FBQztFQUN4RSxNQUFNLENBQUN1QixXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHakMsY0FBSyxDQUFDUyxRQUFRLENBQUNQLEtBQUssQ0FBQ1EsTUFBTSxDQUFDd0IsUUFBUSxDQUFDO0VBQzNFLE1BQU1DLHFCQUFxQixHQUFHbkMsY0FBSyxDQUFDb0MsTUFBTSxDQUFDLENBQUNqRixjQUFLLENBQUNDLE1BQU0sQ0FBQzhDLEtBQUssQ0FBQ1EsTUFBTSxDQUFDeUIscUJBQXFCLENBQUMsR0FDdEZqQyxLQUFLLENBQUNRLE1BQU0sQ0FBQ3lCLHFCQUFxQixHQUFHLENBQUNoRixjQUFLLENBQUNDLE1BQU0sQ0FBQzhDLEtBQUssQ0FBQ1EsTUFBTSxDQUFDMkIsbUJBQW1CLENBQUMsR0FBRyxDQUFDbkMsS0FBSyxDQUFDUSxNQUFNLENBQUMyQixtQkFBbUIsR0FBRyxJQUFJLENBQUM7RUFDdEksTUFBTSxDQUFDQyxLQUFLLENBQUMsR0FBR3RDLGNBQUssQ0FBQ1MsUUFBUSxDQUFDLEVBQUUsQ0FBQztFQUNsQyxNQUFNLENBQUM4QixhQUFhLENBQUMsR0FBR3ZDLGNBQUssQ0FBQ1MsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzFDLE1BQU0sQ0FBQytCLFlBQVksQ0FBQyxHQUFHeEMsY0FBSyxDQUFDUyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDekMsTUFBTSxDQUFDZ0MsbUJBQW1CLENBQUMsR0FBR3pDLGNBQUssQ0FBQ1MsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ2hELE1BQU0sQ0FBQ2lDLGFBQWEsQ0FBQyxHQUFHMUMsY0FBSyxDQUFDUyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDMUMsTUFBTSxDQUFDa0MsV0FBVyxDQUFDLEdBQUczQyxjQUFLLENBQUNTLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN4QyxNQUFNLENBQUNtQyxPQUFPLEVBQUVDLFVBQVUsQ0FBQyxHQUFHN0MsY0FBSyxDQUFDUyxRQUFRLENBQUMsSUFBSSxDQUFDO0VBQ2xELE1BQU0sQ0FBQ3FDLElBQUksRUFBRUMsT0FBTyxDQUFDLEdBQUcvQyxjQUFLLENBQUNTLFFBQVEsQ0FBQyxLQUFLLENBQUM7RUFDN0MsTUFBTXVDLFFBQVEsR0FBR2hELGNBQUssQ0FBQ29DLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNqQyxNQUFNYSxPQUFPLEdBQUdqRCxjQUFLLENBQUNvQyxNQUFNLENBQUMsRUFBRSxDQUFDO0VBQ2hDLElBQUljLE9BQU8sR0FBRyxDQUFDO0VBQ2YsTUFBTUMsWUFBWSxHQUFHbkQsY0FBSyxDQUFDb0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBRXJDLE1BQU1nQixRQUFRLEdBQUcsRUFBQWpELGtCQUFBLEdBQUFPLE1BQU0sQ0FBQzVELFVBQVUsY0FBQXFELGtCQUFBLHVCQUFqQkEsa0JBQUEsQ0FBbUJpRCxRQUFRLEtBQUksQ0FBQyxDQUFDO0VBQ2xELE1BQU1DLFdBQVcsR0FBR0QsUUFBUSxDQUFDRSxHQUFHLElBQUksQ0FBQyxDQUFDO0VBQ3RDLE1BQU1DLGFBQWEsR0FBR0YsV0FBVyxDQUFDRyxPQUFPLEtBQUssSUFBSTtFQUVsRCxNQUFNQyxHQUFHLEdBQUdBLENBQUEsS0FBTTtJQUNkLE9BQU87TUFDSCxJQUFJdkcsRUFBRUEsQ0FBQSxFQUFHO1FBQ0wsT0FBT2dELEtBQUssQ0FBQ1EsTUFBTSxDQUFDeEQsRUFBRTtNQUMxQixDQUFDO01BQ0QsSUFBSWdFLFFBQVFBLENBQUEsRUFBRztRQUNYQSxRQUFRLENBQUN3QyxVQUFVLEdBQUdDLFlBQVksQ0FBQyxDQUFDLEdBQUduQixZQUFZLENBQUNpQixHQUFHLENBQUNHLGFBQWEsQ0FBQyxDQUFDLEdBQUcsRUFBRTtRQUM1RTFDLFFBQVEsQ0FBQ2dCLFFBQVEsR0FBR0YsV0FBVztRQUUvQixPQUFPZCxRQUFRO01BQ25CLENBQUM7TUFDRCxJQUFJMkMsU0FBU0EsQ0FBQSxFQUFHO1FBQ1osSUFBSUMsWUFBWSxHQUFHLEVBQUU7UUFDckIsS0FBSyxJQUFJckksQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHcUYsUUFBUSxDQUFDaUQsTUFBTSxFQUFFdEksQ0FBQyxFQUFFLEVBQUU7VUFDdEMsS0FBSyxJQUFJdUksQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHM0MsSUFBSSxDQUFDMEMsTUFBTSxFQUFFQyxDQUFDLEVBQUUsRUFBRTtZQUNsQyxJQUFJbEQsUUFBUSxDQUFDckYsQ0FBQyxDQUFDLEtBQUs0RixJQUFJLENBQUMyQyxDQUFDLENBQUMsQ0FBQzlHLEVBQUUsRUFBRTtjQUM1QjRHLFlBQVksQ0FBQ0csSUFBSSxDQUFDNUMsSUFBSSxDQUFDMkMsQ0FBQyxDQUFDLENBQUM7WUFDOUI7VUFDSjtRQUNKO1FBRUEsT0FBT0YsWUFBWTtNQUN2QixDQUFDO01BQ0QsSUFBSUksa0JBQWtCQSxDQUFBLEVBQUc7UUFDckIsSUFBSUMsV0FBVyxHQUFHLEVBQUU7UUFDcEIsS0FBSyxJQUFJMUksQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHaUYsTUFBTSxDQUFDMEQsT0FBTyxDQUFDTCxNQUFNLEVBQUV0SSxDQUFDLEVBQUUsRUFBRTtVQUM1QyxJQUFJZ0IsTUFBTSxHQUFHaUUsTUFBTSxDQUFDMEQsT0FBTyxDQUFDM0ksQ0FBQyxDQUFDO1VBQzlCMEksV0FBVyxDQUFDRixJQUFJLENBQUMsQ0FBQzlHLGNBQUssQ0FBQ0MsTUFBTSxDQUFDWCxNQUFNLENBQUM0SCxXQUFXLENBQUMsR0FBRzVILE1BQU0sQ0FBQzRILFdBQVcsR0FBRzVILE1BQU0sQ0FBQ1MsRUFBRSxDQUFDO1FBQ3hGO1FBRUEsT0FBT2lILFdBQVc7TUFDdEIsQ0FBQztNQUNERyxXQUFXLEVBQUVBLENBQUEsS0FBTTtRQUNmLElBQUlDLFFBQVEsR0FBRyxFQUFFO1FBQ2pCLElBQUksQ0FBQ3BILGNBQUssQ0FBQ0MsTUFBTSxDQUFDbUYsYUFBYSxDQUFDa0IsR0FBRyxDQUFDLEVBQUU7VUFDbEMsS0FBSyxNQUFNZSxLQUFLLElBQUlqQyxhQUFhLENBQUNrQixHQUFHLENBQUNhLFdBQVcsQ0FBQyxDQUFDLEVBQUU7WUFDakRDLFFBQVEsQ0FBQ04sSUFBSSxDQUFDTyxLQUFLLENBQUM7VUFDeEI7UUFDSjtRQUVBLElBQUksQ0FBQ3JILGNBQUssQ0FBQ0MsTUFBTSxDQUFDb0YsWUFBWSxDQUFDaUIsR0FBRyxDQUFDLEVBQUU7VUFDakMsS0FBSyxNQUFNZSxLQUFLLElBQUloQyxZQUFZLENBQUNpQixHQUFHLENBQUNhLFdBQVcsQ0FBQyxDQUFDLEVBQUU7WUFDaERDLFFBQVEsQ0FBQ04sSUFBSSxDQUFDTyxLQUFLLENBQUM7VUFDeEI7UUFDSjtRQUVBLElBQUlDLFVBQVUsR0FBR3ZJLE1BQU0sQ0FBQ3dJLG1CQUFtQixDQUFDakMsbUJBQW1CLENBQUM7UUFDaEUsS0FBSyxNQUFNa0MsUUFBUSxJQUFJRixVQUFVLEVBQUU7VUFDL0IsSUFBSUcsa0JBQWtCLEdBQUduQyxtQkFBbUIsQ0FBQ2tDLFFBQVEsQ0FBQztVQUN0REosUUFBUSxDQUFDTixJQUFJLENBQUNXLGtCQUFrQixDQUFDO1VBQ2pDLElBQUksQ0FBQ3pILGNBQUssQ0FBQ0MsTUFBTSxDQUFDd0gsa0JBQWtCLENBQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDdEcsY0FBSyxDQUFDQyxNQUFNLENBQUN3SCxrQkFBa0IsQ0FBQ25CLEdBQUcsQ0FBQ2EsV0FBVyxDQUFDLEVBQUU7WUFDNUYsSUFBSU8sWUFBWSxHQUFHRCxrQkFBa0IsQ0FBQ25CLEdBQUcsQ0FBQ2EsV0FBVyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDbkgsY0FBSyxDQUFDQyxNQUFNLENBQUN5SCxZQUFZLENBQUMsRUFBRTtjQUM3QixLQUFLLE1BQU1MLEtBQUssSUFBSUssWUFBWSxFQUFFO2dCQUM5Qk4sUUFBUSxDQUFDTixJQUFJLENBQUNPLEtBQUssQ0FBQztjQUN4QjtZQUNKO1VBQ0o7UUFDSjtRQUVBQyxVQUFVLEdBQUd2SSxNQUFNLENBQUN3SSxtQkFBbUIsQ0FBQ2hDLGFBQWEsQ0FBQztRQUN0RCxLQUFLLE1BQU1pQyxRQUFRLElBQUlGLFVBQVUsRUFBRTtVQUMvQixJQUFJSyxZQUFZLEdBQUdwQyxhQUFhLENBQUNpQyxRQUFRLENBQUM7VUFDMUNKLFFBQVEsQ0FBQ04sSUFBSSxDQUFDYSxZQUFZLENBQUM7VUFDM0IsSUFBSSxDQUFDM0gsY0FBSyxDQUFDQyxNQUFNLENBQUMwSCxZQUFZLENBQUNyQixHQUFHLENBQUMsSUFBSSxDQUFDdEcsY0FBSyxDQUFDQyxNQUFNLENBQUMwSCxZQUFZLENBQUNyQixHQUFHLENBQUNhLFdBQVcsQ0FBQyxFQUFFO1lBQ2hGLElBQUlPLFlBQVksR0FBR0MsWUFBWSxDQUFDckIsR0FBRyxDQUFDYSxXQUFXLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUNuSCxjQUFLLENBQUNDLE1BQU0sQ0FBQ3lILFlBQVksQ0FBQyxFQUFFO2NBQzdCLEtBQUssTUFBTUwsS0FBSyxJQUFJSyxZQUFZLEVBQUU7Z0JBQzlCTixRQUFRLENBQUNOLElBQUksQ0FBQ08sS0FBSyxDQUFDO2NBQ3hCO1lBQ0o7VUFDSjtRQUNKO1FBRUEsT0FBT0QsUUFBUTtNQUNuQixDQUFDO01BQ0RRLFFBQVEsRUFBRUEsQ0FBQ0MsWUFBWSxFQUFFQyxLQUFLLEtBQUs7UUFDL0JDLE1BQU0sQ0FBQ0YsWUFBWSxFQUFFQyxLQUFLLENBQUM7TUFDL0IsQ0FBQztNQUNERSxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNO1FBQ3RCO1FBQ0EsSUFBSUMsT0FBTyxHQUFHL0QsSUFBSSxDQUFDZ0UsTUFBTSxDQUFFL0IsR0FBRyxJQUFLO1VBQy9CLE9BQU8sQ0FBQ2dDLFVBQVUsQ0FBQ2hDLEdBQUcsQ0FBQ3BHLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUM7UUFFRnNFLGNBQWMsQ0FBQytELGVBQWUsQ0FBQ3pFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDTyxJQUFJLENBQUNtRSxNQUFNLENBQUMsQ0FBQyxFQUFFbkUsSUFBSSxDQUFDMEMsTUFBTSxDQUFDO1FBQzNCLEtBQUssTUFBTTBCLE1BQU0sSUFBSUwsT0FBTyxFQUFFO1VBQzFCL0QsSUFBSSxDQUFDNEMsSUFBSSxDQUFDd0IsTUFBTSxDQUFDO1FBQ3JCO1FBRUExRSxXQUFXLENBQUMsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDNUQsY0FBSyxDQUFDQyxNQUFNLENBQUM4QyxLQUFLLENBQUN3RixpQkFBaUIsQ0FBQyxFQUFFO1VBQ3hDeEYsS0FBSyxDQUFDd0YsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQy9CO1FBRUFDLHNCQUFzQixDQUFDLENBQUM7UUFDeEIzQyxRQUFRLENBQUM0QyxPQUFPLEdBQUd2RSxJQUFJLENBQUMwQyxNQUFNO1FBQzlCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0FkLE9BQU8sQ0FBQzJDLE9BQU8sR0FBR3ZFLElBQUk7UUFDdEJ3RSxtQkFBbUIsQ0FBQ3hFLElBQUksQ0FBQztRQUV6QixPQUFPQSxJQUFJO01BQ2YsQ0FBQztNQUNEeUUsS0FBSyxFQUFFQSxDQUFBLEtBQU07UUFDVDtRQUNBN0MsT0FBTyxDQUFDMkMsT0FBTyxHQUFHLEVBQUU7UUFDcEJ0RSxPQUFPLENBQUMsRUFBRSxDQUFDO1FBRVgsSUFBSTJELEtBQUssR0FBRyxJQUFJYyxjQUFLLENBQUM3RixLQUFLLENBQUM4RixNQUFNLEVBQUU5RixLQUFLLENBQUNVLE1BQU0sRUFBRTJFLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RVUsbUJBQVksQ0FBQ0MsU0FBUyxDQUFDQyxrQkFBUyxDQUFDQyxnQkFBZ0IsRUFBRW5CLEtBQUssQ0FBQztNQUM3RCxDQUFDO01BQ0Q7TUFDQTtNQUNBO01BQ0E7TUFDQW9CLFVBQVUsRUFBR0MsTUFBTSxJQUFLO1FBQ3BCLElBQUksQ0FBQ0EsTUFBTSxJQUFJQSxNQUFNLENBQUN2QyxNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8xQyxJQUFJO1FBQy9DLE1BQU1rRixLQUFLLEdBQUcsSUFBSUMsR0FBRyxDQUFDRixNQUFNLENBQUM7UUFDN0IsTUFBTUcsU0FBUyxHQUFHcEYsSUFBSSxDQUFDZ0UsTUFBTSxDQUFFL0IsR0FBRyxJQUFLLENBQUNpRCxLQUFLLENBQUMxSyxHQUFHLENBQUN5SCxHQUFHLENBQUNwRyxFQUFFLENBQUMsQ0FBQztRQUMxRG1FLElBQUksQ0FBQ21FLE1BQU0sQ0FBQyxDQUFDLEVBQUVuRSxJQUFJLENBQUMwQyxNQUFNLENBQUM7UUFDM0IsS0FBSyxNQUFNVCxHQUFHLElBQUltRCxTQUFTLEVBQUU7VUFDekJwRixJQUFJLENBQUM0QyxJQUFJLENBQUNYLEdBQUcsQ0FBQztRQUNsQjtRQUNBcUMsc0JBQXNCLENBQUMsQ0FBQztRQUN4QjNDLFFBQVEsQ0FBQzRDLE9BQU8sR0FBR3ZFLElBQUksQ0FBQzBDLE1BQU07UUFDOUJkLE9BQU8sQ0FBQzJDLE9BQU8sR0FBR3ZFLElBQUk7UUFDdEJ3RSxtQkFBbUIsQ0FBQ3hFLElBQUksQ0FBQztRQUN6QixPQUFPQSxJQUFJO01BQ2YsQ0FBQztNQUNEcUYsTUFBTSxFQUFHckYsSUFBSSxJQUFLO1FBQ2hCTixXQUFXLENBQUNNLElBQUksQ0FBQztNQUNuQixDQUFDO01BQ0RzRixPQUFPLEVBQUd2QixPQUFPLElBQUs7UUFDbEIsS0FBSyxNQUFNSyxNQUFNLElBQUlMLE9BQU8sRUFBRTtVQUMxQi9ELElBQUksQ0FBQzRDLElBQUksQ0FBQzJDLFVBQVUsQ0FBQ25CLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDO1FBRUEsSUFBSW9CLFlBQVksR0FBRyxFQUFFO1FBQ3JCLEtBQUssTUFBTXBCLE1BQU0sSUFBSUwsT0FBTyxFQUFFO1VBQzFCeUIsWUFBWSxDQUFDNUMsSUFBSSxDQUFDd0IsTUFBTSxDQUFDdkksRUFBRSxDQUFDO1FBQ2hDO1FBRUEsSUFBSUMsY0FBSyxDQUFDQyxNQUFNLENBQUM4QyxLQUFLLENBQUNRLE1BQU0sQ0FBQzJCLG1CQUFtQixDQUFDLElBQUluQyxLQUFLLENBQUNRLE1BQU0sQ0FBQzJCLG1CQUFtQixLQUFLLEtBQUssRUFBRTtVQUM5RnRCLFdBQVcsQ0FBQzhGLFlBQVksQ0FBQztRQUM3QjtRQUVBLElBQUksQ0FBQzFKLGNBQUssQ0FBQ0MsTUFBTSxDQUFDOEMsS0FBSyxDQUFDd0YsaUJBQWlCLENBQUMsRUFBRTtVQUN4Q3hGLEtBQUssQ0FBQ3dGLGlCQUFpQixDQUFDTixPQUFPLENBQUM7UUFDcEM7UUFFQU8sc0JBQXNCLENBQUMsQ0FBQztRQUN4QjNDLFFBQVEsQ0FBQzRDLE9BQU8sR0FBR3ZFLElBQUksQ0FBQzBDLE1BQU07UUFDOUI7UUFDQTtRQUNBO1FBQ0FkLE9BQU8sQ0FBQzJDLE9BQU8sR0FBR3ZFLElBQUk7UUFDdEJ3RSxtQkFBbUIsQ0FBQ3hFLElBQUksQ0FBQztRQUV6QixPQUFPQSxJQUFJO01BQ2YsQ0FBQztNQUNELElBQUl5RixhQUFhQSxDQUFBLEVBQUc7UUFDaEIsT0FBTzlGLGlCQUFpQixHQUFHZ0IsV0FBVztNQUMxQyxDQUFDO01BQ0QsSUFBSVgsSUFBSUEsQ0FBQSxFQUFHO1FBQ1AsT0FBTzRCLE9BQU8sQ0FBQzJDLE9BQU87TUFDMUIsQ0FBQztNQUNEVixNQUFNLEVBQUVBLENBQUEsS0FBTTtRQUNWQSxNQUFNLENBQUMsQ0FBQztNQUNaLENBQUM7TUFDRDZCLE9BQU9BLENBQUEsRUFBRztRQUNOLElBQUl2RSxZQUFZLElBQUlBLFlBQVksQ0FBQ2lCLEdBQUcsRUFBRTtVQUNsQ2pCLFlBQVksQ0FBQ2lCLEdBQUcsQ0FBQ3NELE9BQU8sQ0FBQyxDQUFDO1FBQzlCO1FBRUEsSUFBSUMsWUFBWSxHQUFHN0osY0FBSyxDQUFDd0QsV0FBVyxDQUFDVCxLQUFLLENBQUNRLE1BQU0sRUFBRVIsS0FBSyxDQUFDVSxNQUFNLENBQUM7UUFDaEUsSUFBSSxDQUFDekQsY0FBSyxDQUFDQyxNQUFNLENBQUM0SixZQUFZLENBQUNwRSxPQUFPLENBQUMsRUFBRTtVQUNyQ0MsVUFBVSxDQUFDMUYsY0FBSyxDQUFDOEoseUJBQXlCLENBQUNELFlBQVksQ0FBQ3BFLE9BQU8sRUFBRW9FLFlBQVksQ0FBQzlKLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGO01BQ0osQ0FBQztNQUNELElBQUkwRixPQUFPQSxDQUFDQSxPQUFPLEVBQUU7UUFDakJDLFVBQVUsQ0FBQ0QsT0FBTyxDQUFDO01BQ3ZCO0lBQ0osQ0FBQztFQUNMLENBQUM7RUFFRCxNQUFNc0UsT0FBTyxHQUFHQSxDQUFBLEtBQU07SUFDbEIsT0FBTztNQUNILElBQUloSyxFQUFFQSxDQUFBLEVBQUc7UUFDTCxPQUFPZ0QsS0FBSyxDQUFDUSxNQUFNLENBQUN4RCxFQUFFLEdBQUcsWUFBWTtNQUN6QztJQUNKLENBQUM7RUFDTCxDQUFDO0VBRUQsU0FBU2lLLG1CQUFtQkEsQ0FBQzdELEdBQUcsRUFBRXZGLEtBQUssRUFBRTtJQUNyQyxJQUFJLENBQUNxSixjQUFjLENBQUM5RCxHQUFHLENBQUMsRUFBRTtJQUMxQixJQUFJK0Qsb0JBQVcsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsRUFBRTtJQUU1QkQsb0JBQVcsQ0FBQ0UsSUFBSSxDQUFDckgsS0FBSyxDQUFDOEYsTUFBTSxFQUFFO01BQzNCMUMsR0FBRztNQUNIa0UsUUFBUSxFQUFFekosS0FBSztNQUNmMEosV0FBVyxFQUFFdkgsS0FBSyxDQUFDUSxNQUFNLENBQUN4RCxFQUFFO01BQzVCMEQsTUFBTSxFQUFFVixLQUFLLENBQUNVO0lBQ2xCLENBQUMsQ0FBQztJQUVGOEcsc0JBQWEsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7SUFFcEIxQixtQkFBWSxDQUFDQyxTQUFTLENBQ2xCQyxrQkFBUyxDQUFDeUIsY0FBYyxFQUN4QixJQUFJN0IsY0FBSyxDQUFDN0YsS0FBSyxDQUFDOEYsTUFBTSxFQUFFOUYsS0FBSyxDQUFDVSxNQUFNLEVBQUUwQyxHQUFHLENBQzdDLENBQUM7RUFDTDtFQUVBLFNBQVNxQyxzQkFBc0JBLENBQUEsRUFBRztJQUM5QixJQUFJa0MsS0FBSyxHQUFHQyxRQUFRLENBQUNDLGNBQWMsQ0FBQyxlQUFlLENBQUM7SUFDcEQsSUFBSUYsS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPQSxLQUFLLEtBQUssV0FBVyxFQUFFO01BQ2hEakcsY0FBYyxDQUFDaUcsS0FBSyxDQUFDRyxXQUFXLEdBQUdILEtBQUssQ0FBQ0ksV0FBVyxDQUFDO0lBQ3pEO0VBQ0o7RUFFQUMsTUFBTSxDQUFDQyxRQUFRLEdBQUcsU0FBU0EsUUFBUUEsQ0FBQSxFQUFHO0lBQ2xDeEMsc0JBQXNCLENBQUMsQ0FBQztFQUM1QixDQUFDO0VBRUQsTUFBTXlDLGlCQUFpQixHQUFHQSxDQUFDbkQsS0FBSyxFQUFFTixRQUFRLEtBQUs7SUFDM0MsTUFBTTBELE1BQU0sR0FBRzdLLE9BQU8sS0FBS21ILFFBQVEsSUFBSTFHLEtBQUssS0FBSyxNQUFNO0lBQ3ZEdUMsUUFBUSxDQUFDNkgsTUFBTSxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDakN4SCxVQUFVLENBQUM4RCxRQUFRLENBQUM7RUFDeEIsQ0FBQztFQUVELFNBQVMyRCxvQkFBb0JBLENBQUNyRCxLQUFLLEVBQUU7SUFDakMsSUFBSTlILGNBQUssQ0FBQ0MsTUFBTSxDQUFDOEMsS0FBSyxDQUFDUSxNQUFNLENBQUMyQixtQkFBbUIsQ0FBQyxJQUFJbkMsS0FBSyxDQUFDUSxNQUFNLENBQUMyQixtQkFBbUIsS0FBSyxLQUFLLEVBQUU7TUFDOUYsSUFBSTRDLEtBQUssQ0FBQ3NELE1BQU0sQ0FBQ0MsT0FBTyxFQUFFO1FBQ3RCLE1BQU1DLFlBQVksR0FBR3BILElBQUksQ0FBQ3hELEdBQUcsQ0FBQ3ZDLENBQUMsSUFBSUEsQ0FBQyxDQUFDb04sSUFBSSxDQUFDO1FBQzFDM0gsV0FBVyxDQUFDMEgsWUFBWSxDQUFDO1FBQ3pCdkksS0FBSyxDQUFDd0YsaUJBQWlCLENBQUMrQyxZQUFZLENBQUM7TUFDekMsQ0FBQyxNQUFNO1FBQ0gxSCxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQ2ZiLEtBQUssQ0FBQ3dGLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztNQUMvQjtNQUVBOUksMkJBQWtCLENBQUMrTCxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFDOUM7RUFDSjtFQUVBLFNBQVNwRCxlQUFlQSxDQUFDekUsUUFBUSxFQUFFO0lBQy9CLElBQUlnRCxZQUFZLEdBQUcsRUFBRTtJQUNyQixLQUFLLElBQUlySSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUc0RixJQUFJLENBQUMwQyxNQUFNLEVBQUV0SSxDQUFDLEVBQUUsRUFBRTtNQUNsQyxJQUFJNkgsR0FBRyxHQUFHakMsSUFBSSxDQUFDNUYsQ0FBQyxDQUFDO01BQ2pCLEtBQUssSUFBSXVJLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR2xELFFBQVEsQ0FBQ2lELE1BQU0sRUFBRUMsQ0FBQyxFQUFFLEVBQUU7UUFDdEMsSUFBSVYsR0FBRyxDQUFDcEcsRUFBRSxLQUFLNEQsUUFBUSxDQUFDa0QsQ0FBQyxDQUFDLEVBQUU7VUFDeEJGLFlBQVksQ0FBQ0csSUFBSSxDQUFDWCxHQUFHLENBQUM7UUFDMUI7TUFDSjtJQUNKO0lBRUEsT0FBT1EsWUFBWTtFQUN2QjtFQUVBLFNBQVM4RSxhQUFhQSxDQUFDM0QsS0FBSyxFQUFFL0gsRUFBRSxFQUFFO0lBQzlCLElBQUlDLGNBQUssQ0FBQ0MsTUFBTSxDQUFDOEMsS0FBSyxDQUFDUSxNQUFNLENBQUMyQixtQkFBbUIsQ0FBQyxJQUFJbkMsS0FBSyxDQUFDUSxNQUFNLENBQUMyQixtQkFBbUIsS0FBSyxLQUFLLEVBQUU7TUFDOUZ6RiwyQkFBa0IsQ0FBQytMLGlCQUFpQixDQUFDLElBQUksQ0FBQztNQUUxQyxNQUFNRSxhQUFhLEdBQUcsQ0FBQyxDQUFDO01BQ3hCLElBQUcvSCxRQUFRLENBQUNnSSxPQUFPLENBQUM1TCxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDekIsSUFBSTZMLFdBQVcsR0FBRyxFQUFFO1FBRXBCLElBQUk3SSxLQUFLLENBQUMxRCxXQUFXLEtBQUssSUFBSSxFQUFFO1VBQzVCLElBQUlxTSxhQUFhLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDdEJFLFdBQVcsR0FBR0EsV0FBVyxDQUFDOUwsTUFBTSxDQUFDNkQsUUFBUSxFQUFFNUQsRUFBRSxDQUFDO1VBQ2xELENBQUMsTUFBTSxJQUFJMkwsYUFBYSxLQUFLLENBQUMsRUFBRTtZQUM1QkUsV0FBVyxHQUFHQSxXQUFXLENBQUM5TCxNQUFNLENBQUM2RCxRQUFRLENBQUNrSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDdkQsQ0FBQyxNQUFNLElBQUlILGFBQWEsS0FBSy9ILFFBQVEsQ0FBQ2lELE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUNnRixXQUFXLEdBQUdBLFdBQVcsQ0FBQzlMLE1BQU0sQ0FBQzZELFFBQVEsQ0FBQ2tJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUMzRCxDQUFDLE1BQU0sSUFBSUgsYUFBYSxHQUFHLENBQUMsRUFBRTtZQUMxQkUsV0FBVyxHQUFHQSxXQUFXLENBQUM5TCxNQUFNLENBQzVCNkQsUUFBUSxDQUFDa0ksS0FBSyxDQUFDLENBQUMsRUFBRUgsYUFBYSxDQUFDLEVBQ2hDL0gsUUFBUSxDQUFDa0ksS0FBSyxDQUFDSCxhQUFhLEdBQUcsQ0FBQyxDQUNwQyxDQUFDO1VBQ0w7UUFDSixDQUFDLE1BQU07VUFDSEUsV0FBVyxDQUFDOUUsSUFBSSxDQUFDL0csRUFBRSxDQUFDO1FBQ3hCO1FBRUEsSUFBSTRHLFlBQVksR0FBR3lCLGVBQWUsQ0FBQ3dELFdBQVcsQ0FBQztRQUUvQ2hJLFdBQVcsQ0FBQ2dJLFdBQVcsQ0FBQztRQUN4QixJQUFJLENBQUM1TCxjQUFLLENBQUNDLE1BQU0sQ0FBQzhDLEtBQUssQ0FBQ3dGLGlCQUFpQixDQUFDLEVBQUU7VUFDeEN4RixLQUFLLENBQUN3RixpQkFBaUIsQ0FBQzVCLFlBQVksQ0FBQztRQUN6QztNQUNKO0lBQ0o7RUFDSjtFQUVBLFNBQVNtRixrQkFBa0JBLENBQUEsRUFBRztJQUMxQixJQUFJbkksUUFBUSxDQUFDaUQsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNyQixJQUFJLENBQUM1RyxjQUFLLENBQUNDLE1BQU0sQ0FBQ3NELE1BQU0sQ0FBQyxLQUFLLENBQUN2RCxjQUFLLENBQUNDLE1BQU0sQ0FBQ21GLGFBQWEsQ0FBQyxJQUFJN0IsTUFBTSxDQUFDd0ksUUFBUSxLQUFLLE1BQU0sQ0FBQyxFQUFFO1FBQ3ZGLElBQUlqRSxLQUFLLEdBQUcsSUFBSWMsY0FBSyxDQUFDN0YsS0FBSyxDQUFDOEYsTUFBTSxFQUFFOUYsS0FBSyxDQUFDVSxNQUFNLEVBQUUyRSxlQUFlLENBQUN6RSxRQUFRLENBQUMsQ0FBQztRQUM1RW1GLG1CQUFZLENBQUNDLFNBQVMsQ0FBQ0Msa0JBQVMsQ0FBQ0MsZ0JBQWdCLEVBQUVuQixLQUFLLENBQUM7TUFDN0Q7SUFDSjtFQUNKO0VBRUEsU0FBU21DLGNBQWNBLENBQUM5RCxHQUFHLEVBQUU7SUFDekIsT0FBT0MsYUFBYSxJQUFJLENBQUM0RixpQkFBaUIsQ0FBQzdGLEdBQUcsQ0FBQztFQUNuRDtFQUVBLFNBQVM2RixpQkFBaUJBLENBQUM3RixHQUFHLEVBQUU7SUFDNUIsSUFBSSxDQUFDRixRQUFRLENBQUNnRyxZQUFZLEVBQUU7TUFDeEIsT0FBTyxLQUFLO0lBQ2hCO0lBRUEsT0FBT3JNLGtCQUFTLENBQUNzTSxtQkFBbUIsQ0FDaEMsTUFBTSxHQUFHL0YsR0FBRyxDQUFDcEcsRUFBRSxHQUFHLGdCQUFnQixFQUNsQ2tHLFFBQVEsQ0FBQ2dHLFlBQVksRUFDckJsSixLQUFLLENBQUNRLE1BQU0sQ0FBQ3hELEVBQUUsRUFDZjtNQUFDb0csR0FBRyxFQUFFQTtJQUFHLENBQUMsRUFDVixLQUNKLENBQUM7RUFDTDtFQUVBLFNBQVNnRyxTQUFTQSxDQUFDQyxNQUFNLEVBQUU7SUFDdkJ6QixRQUFRLENBQUMwQixJQUFJLENBQUNDLEtBQUssQ0FBQ0YsTUFBTSxHQUFHQSxNQUFNLElBQUksU0FBUztFQUNwRDtFQUVBLFNBQVNHLG1CQUFtQkEsQ0FBQ3BHLEdBQUcsRUFBRTtJQUM5QixJQUFJLENBQUM4RCxjQUFjLENBQUM5RCxHQUFHLENBQUMsRUFBRTtNQUN0QjtJQUNKOztJQUVBO0lBQ0EsSUFBSSxDQUFDK0Qsb0JBQVcsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsRUFBRTtNQUN6QmdDLFNBQVMsQ0FBQ2pHLFdBQVcsQ0FBQ2tHLE1BQU0sSUFBSSxNQUFNLENBQUM7SUFDM0M7RUFDSjtFQUVBLFNBQVNJLG1CQUFtQkEsQ0FBQSxFQUFHO0lBQzNCTCxTQUFTLENBQUMsU0FBUyxDQUFDO0VBQ3hCO0VBRUEsU0FBU00sV0FBV0EsQ0FBQzNFLEtBQUssRUFBRTNCLEdBQUcsRUFBRXZGLEtBQUssRUFBRTtJQUNwQyxJQUFJa0gsS0FBSyxDQUFDc0QsTUFBTSxDQUFDc0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO01BQ25DO0lBQ0o7SUFFQTVFLEtBQUssQ0FBQzZFLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZCLElBQUl2RyxhQUFhLElBQUksQ0FBQzRGLGlCQUFpQixDQUFDN0YsR0FBRyxDQUFDLEVBQUU7TUFDMUM2RCxtQkFBbUIsQ0FBQzdELEdBQUcsRUFBRXZGLEtBQUssQ0FBQztNQUMvQjtJQUNKO0lBRUEsSUFBSSxDQUFDWixjQUFLLENBQUNDLE1BQU0sQ0FBQzhDLEtBQUssQ0FBQzZKLHFCQUFxQixDQUFDLEVBQUU7TUFDNUM7SUFDSjtJQUVBbkIsYUFBYSxDQUFDM0QsS0FBSyxFQUFFM0IsR0FBRyxDQUFDcEcsRUFBRSxDQUFDO0VBQ2hDO0VBRUEsU0FBUzhNLGVBQWVBLENBQUMvRSxLQUFLLEVBQUUvSCxFQUFFLEVBQUVULE1BQU0sRUFBRTtJQUN4QyxJQUFJQSxNQUFNLENBQUN3TixTQUFTLEtBQUssVUFBVSxFQUFFO01BQ2pDO01BQ0FyQixhQUFhLENBQUMzRCxLQUFLLEVBQUUvSCxFQUFFLENBQUM7SUFDNUI7SUFFQSxJQUFJLENBQUNDLGNBQUssQ0FBQ0MsTUFBTSxDQUFDOEMsS0FBSyxDQUFDNkoscUJBQXFCLENBQUMsRUFBRTtNQUM1QzdKLEtBQUssQ0FBQzZKLHFCQUFxQixDQUFDN00sRUFBRSxFQUFFVCxNQUFNLENBQUM7SUFDM0M7RUFDSjtFQUVBLFNBQVN5TixnQkFBZ0JBLENBQUNqRixLQUFLLEVBQUVrRixPQUFPLEVBQUU7SUFDdENqSixRQUFRLENBQUNrSixXQUFXLEdBQUdELE9BQU8sR0FBRyxDQUFDO0lBQ2xDL0ksT0FBTyxDQUFDK0ksT0FBTyxDQUFDO0lBQ2hCakYsTUFBTSxDQUFDLENBQUM7RUFDWjtFQUVBLFNBQVNtRix1QkFBdUJBLENBQUNwRixLQUFLLEVBQUU7SUFDcENoRCxjQUFjLENBQUNELFdBQVcsSUFBSWlELEtBQUssQ0FBQ3NELE1BQU0sQ0FBQytCLEtBQUssQ0FBQztJQUNqRGxKLE9BQU8sQ0FBQyxDQUFDLENBQUM7RUFDZDtFQUVBLE1BQU13RixVQUFVLEdBQUl0RCxHQUFHLElBQUs7SUFDeEI7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUlRLE9BQU9BLEdBQUc7RUFDZCxDQUFDO0VBRUQsU0FBU2lILFdBQVdBLENBQUNDLElBQUksRUFBRUMsSUFBSSxFQUFFO0lBQzdCeEosb0JBQW9CLENBQUN1SixJQUFJLENBQUNFLG9CQUFvQixHQUFHRixJQUFJLENBQUNFLG9CQUFvQixHQUFHRixJQUFJLENBQUNHLE9BQU8sQ0FBQzVHLE1BQU0sQ0FBQztJQUVqR2QsT0FBTyxDQUFDMkMsT0FBTyxHQUFHNEUsSUFBSSxDQUFDRyxPQUFPO0lBQzlCQyxnQkFBZ0IsQ0FBQ0osSUFBSSxDQUFDRyxPQUFPLENBQUM7SUFDOUIsSUFBSUUsU0FBUyxHQUFHLEVBQUU7SUFDbEIsSUFBSUYsT0FBTyxHQUFHSCxJQUFJLENBQUNHLE9BQU87SUFDMUIsS0FBSyxJQUFJbFAsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHa1AsT0FBTyxDQUFDNUcsTUFBTSxFQUFFdEksQ0FBQyxFQUFFLEVBQUU7TUFDckNvUCxTQUFTLENBQUM1RyxJQUFJLENBQUMyQyxVQUFVLENBQUMrRCxPQUFPLENBQUNsUCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDO0lBRUE2RixPQUFPLENBQUN1SixTQUFTLENBQUM7RUFDdEI7RUFFQSxNQUFNM0YsTUFBTSxHQUFHLFNBQUFBLENBQUEsRUFBZ0M7SUFBQSxJQUEvQkYsWUFBWSxHQUFBOEYsU0FBQSxDQUFBL0csTUFBQSxRQUFBK0csU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxJQUFJO0lBQUEsSUFBRTdGLEtBQUssR0FBQTZGLFNBQUEsQ0FBQS9HLE1BQUEsT0FBQStHLFNBQUEsTUFBQUMsU0FBQTtJQUN0QyxJQUFJTixJQUFJLEdBQUcvSixNQUFNO0lBQ2pCLElBQUl2RCxjQUFLLENBQUNDLE1BQU0sQ0FBQ3FOLElBQUksQ0FBQyxFQUFFO01BQ3BCQSxJQUFJLEdBQUd0TixjQUFLLENBQUN3RCxXQUFXLENBQUNULEtBQUssQ0FBQ1EsTUFBTSxFQUFFUixLQUFLLENBQUNVLE1BQU0sQ0FBQztJQUN4RDtJQUVBLElBQUlvSyxPQUFPLEdBQUcsQ0FBQzdOLGNBQUssQ0FBQ0MsTUFBTSxDQUFDcU4sSUFBSSxDQUFDUSxXQUFXLENBQUMsR0FBR1IsSUFBSSxDQUFDUSxXQUFXLEdBQUcsQ0FBQzlOLGNBQUssQ0FBQ0MsTUFBTSxDQUFDNEgsWUFBWSxDQUFDLEdBQUdBLFlBQVksQ0FBQ2lHLFdBQVcsR0FBRyxJQUFJO0lBQ2hJLElBQUksQ0FBQzlOLGNBQUssQ0FBQ0MsTUFBTSxDQUFDNE4sT0FBTyxDQUFDLEVBQUU7TUFDeEIsSUFBSUUsV0FBVyxHQUFHRixPQUFPLENBQUNHLElBQUk7TUFDOUIsSUFBSSxDQUFDRCxXQUFXLEVBQUU7UUFDZEEsV0FBVyxHQUFHLEtBQUs7TUFDdkI7TUFFQSxJQUFJQSxXQUFXLEtBQUssS0FBSyxJQUFJQSxXQUFXLEtBQUssTUFBTSxFQUFFO1FBQ2pELElBQUlFLE1BQU0sR0FBR0YsV0FBVyxLQUFLLEtBQUssR0FBR0csc0JBQVMsR0FBR0MsdUJBQVU7UUFDM0RGLE1BQU0sQ0FBQztVQUNISixPQUFPLEVBQUVBLE9BQU87VUFDaEJPLFNBQVMsRUFBRXJMLEtBQUssQ0FBQzhGLE1BQU07VUFDdkJwRixNQUFNLEVBQUVWLEtBQUssQ0FBQ1UsTUFBTTtVQUNwQnFFO1FBQ0osQ0FBQyxDQUFDLENBQUN1RyxJQUFJLENBQUVDLE1BQU0sSUFBSztVQUNoQmxCLFdBQVcsQ0FBQ2tCLE1BQU0sRUFBRWhCLElBQUksQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQ2lCLEtBQUssQ0FBRXhRLENBQUMsSUFBSztVQUNaeVEsT0FBTyxDQUFDQyxLQUFLLENBQUMxUSxDQUFDLENBQUM7VUFDaEIsSUFBR0EsQ0FBQyxDQUFDMlEsU0FBUyxLQUFLLG1CQUFtQixFQUFFO1lBQ3BDMU8sY0FBSyxDQUFDMk8sbUJBQW1CLENBQUM1USxDQUFDLEVBQUVnRixLQUFLLENBQUNVLE1BQU0sQ0FBQztVQUM5QztRQUNKLENBQUMsQ0FBQztNQUNOLENBQUMsTUFBTTtRQUNILE1BQU0sSUFBSW1MLEtBQUssQ0FBQyx5QkFBeUIsR0FBR2IsV0FBVyxDQUFDO01BQzVEO0lBQ0osQ0FBQyxNQUFNO01BQ0gsSUFBSWxHLFlBQVksSUFBSUEsWUFBWSxDQUFDc0YsS0FBSyxFQUFFO1FBQ3BDLElBQUlFLElBQUksR0FBRzVOLDJCQUFrQixDQUFDb1AsMkJBQTJCLENBQUNoSCxZQUFZLENBQUNzRixLQUFLLENBQUM7UUFDN0VDLFdBQVcsQ0FBQ0MsSUFBSSxFQUFFQyxJQUFJLENBQUM7TUFDM0I7SUFDSjtFQUNKLENBQUM7RUFFRHpLLGNBQUssQ0FBQ2lNLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCL0ssUUFBUSxDQUFDa0osV0FBVyxHQUFHLENBQUM7SUFDeEIsSUFBSSxDQUFDdEksa0JBQWtCLEVBQUU7TUFDckJDLHFCQUFxQixDQUFDLEtBQUssQ0FBQztNQUM1Qm1ELE1BQU0sQ0FBQyxDQUFDO0lBQ1o7RUFDSixDQUFDLEVBQUUsQ0FBQ2xELFdBQVcsQ0FBQyxDQUFDO0VBRWpCaEMsY0FBSyxDQUFDaU0sU0FBUyxDQUFDLE1BQU07SUFDbEIvTCxLQUFLLENBQUM4RixNQUFNLENBQUN2QyxHQUFHLEdBQUdBLEdBQUcsQ0FBQyxDQUFDO0VBQzVCLENBQUMsQ0FBQztFQUVGekQsY0FBSyxDQUFDa00sZUFBZSxDQUFDLE1BQU07SUFDeEJoTSxLQUFLLENBQUM4RixNQUFNLENBQUN2QyxHQUFHLEdBQUdBLEdBQUcsQ0FBQyxDQUFDO0VBQzVCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTnpELGNBQUssQ0FBQ2lNLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCLElBQUlFLG1CQUFtQixHQUFHaFAsY0FBSyxDQUFDQyxNQUFNLENBQUNzRCxNQUFNLENBQUN5TCxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHekwsTUFBTSxDQUFDeUwsbUJBQW1CO0lBQ3BHQSxtQkFBbUIsQ0FBQ0MsYUFBYSxHQUFHalAsY0FBSyxDQUFDQyxNQUFNLENBQUMrTyxtQkFBbUIsQ0FBQ0MsYUFBYSxDQUFDLEdBQUcsRUFBRSxHQUFHRCxtQkFBbUIsQ0FBQ0MsYUFBYTtJQUU1SG5HLG1CQUFZLENBQUNvRyxnQkFBZ0IsQ0FBQ0YsbUJBQW1CLEVBQUVqTSxLQUFLLENBQUM4RixNQUFNLEVBQUU5RixLQUFLLENBQUNVLE1BQU0sQ0FBQztJQUM5RXFGLG1CQUFZLENBQUNxRyxzQkFBc0IsQ0FBQ3BNLEtBQUssQ0FBQ1UsTUFBTSxFQUFFRixNQUFNLENBQUM7SUFDekQsSUFBSTZMLFVBQVUsR0FBRyxLQUFLO0lBQ3RCLElBQUlDLGtCQUFrQixHQUFHLENBQUM7SUFFMUIsS0FBSyxNQUFNL1AsTUFBTSxJQUFJaUUsTUFBTSxDQUFDMEQsT0FBTyxFQUFFO01BQ2pDLElBQUlxSSxNQUFNLEdBQUd0UCxjQUFLLENBQUN1UCxxQkFBcUIsQ0FBQ2pRLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDO01BQ2pFLElBQUksQ0FBQ1UsY0FBSyxDQUFDOEoseUJBQXlCLENBQUN3RixNQUFNLEVBQUV2TSxLQUFLLENBQUNRLE1BQU0sQ0FBQ3hELEVBQUUsQ0FBQyxFQUFFO1FBQzNEc1Asa0JBQWtCLEVBQUU7TUFDeEI7SUFDSjtJQUVBLEtBQUssSUFBSS9RLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR2lGLE1BQU0sQ0FBQzBELE9BQU8sQ0FBQ0wsTUFBTSxFQUFFdEksQ0FBQyxFQUFFLEVBQUU7TUFDNUMsSUFBSWdCLE1BQU0sR0FBR2lFLE1BQU0sQ0FBQzBELE9BQU8sQ0FBQzNJLENBQUMsQ0FBQztNQUU5QixJQUFJLENBQUM4USxVQUFVLElBQUk5UCxNQUFNLENBQUNLLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDdkR5UCxVQUFVLEdBQUcsSUFBSTtRQUNqQjdLLFdBQVcsQ0FBQyxJQUFJLENBQUM7TUFDckI7TUFFQSxJQUFHLENBQUNqRixNQUFNLENBQUNLLFVBQVUsRUFBRTtRQUNuQkwsTUFBTSxDQUFDSyxVQUFVLEdBQUcsQ0FBQyxDQUFDO01BQzFCO01BRUFMLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDSCxLQUFLLEdBQUdKLHNCQUFzQixDQUFDMkQsS0FBSyxDQUFDeU0sYUFBYSxLQUFLLFVBQVUsRUFBRWxRLE1BQU0sRUFBRStQLGtCQUFrQixDQUFDO01BQ2hILElBQUksQ0FBQ3JQLGNBQUssQ0FBQ0MsTUFBTSxDQUFDWCxNQUFNLENBQUNLLFVBQVUsQ0FBQyxJQUFJTCxNQUFNLENBQUNLLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLElBQUlLLGNBQUssQ0FBQ0MsTUFBTSxDQUFDWCxNQUFNLENBQUNtUSxNQUFNLENBQUMsRUFBRTtRQUMzRyxJQUFJQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCQSxhQUFhLENBQUM1QyxTQUFTLEdBQUcsWUFBWTtRQUN0QzRDLGFBQWEsQ0FBQzNQLEVBQUUsR0FBR1QsTUFBTSxDQUFDUyxFQUFFLEdBQUcsUUFBUTtRQUV2Q1QsTUFBTSxDQUFDbVEsTUFBTSxHQUFHQyxhQUFhO01BQ2pDO0lBQ0o7SUFFQTNMLFFBQVEsQ0FBQ2tKLFdBQVcsR0FBRyxDQUFDO0lBQ3hCbEosUUFBUSxDQUFDNEwsYUFBYSxHQUFHcE0sTUFBTSxDQUFDb00sYUFBYTtJQUU3QyxJQUFJQyxZQUFZO0lBQ2hCLElBQUlDLGlCQUFpQixHQUFHYixtQkFBbUIsQ0FBQ0MsYUFBYSxDQUFDL0csTUFBTSxDQUFFNEgsWUFBWSxJQUFLQSxZQUFZLENBQUNDLFNBQVMsS0FBSyxnQkFBZ0IsQ0FBQztJQUMvSCxLQUFLLE1BQU1DLGdCQUFnQixJQUFJSCxpQkFBaUIsRUFBRTtNQUM5QyxJQUFJRyxnQkFBZ0IsQ0FBQ0MsT0FBTyxDQUFDL0gsTUFBTSxDQUFFZ0ksTUFBTSxJQUFLQSxNQUFNLENBQUNDLFVBQVUsS0FBSyxVQUFVLENBQUMsQ0FBQ3ZKLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDMUZnSixZQUFZLEdBQUcsSUFBSTtRQUNuQjtNQUNKO0lBQ0o7SUFFQSxJQUFJUSxZQUFZLEdBQUdwUSxjQUFLLENBQUN1UCxxQkFBcUIsQ0FBQ2hNLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDO0lBQzVFLElBQUksQ0FBQ3FNLFlBQVksS0FBS1EsWUFBWSxLQUFLLElBQUksSUFBSUEsWUFBWSxLQUFLLElBQUksQ0FBQyxFQUFFO01BQ25FckksTUFBTSxDQUFDLENBQUM7SUFDWjtJQUVBLElBQUlELEtBQUssR0FBRyxJQUFJYyxjQUFLLENBQUM3RixLQUFLLENBQUM4RixNQUFNLEVBQUU5RixLQUFLLENBQUNVLE1BQU0sRUFBRSxJQUFJLENBQUM7SUFDdkRxRixtQkFBWSxDQUFDQyxTQUFTLENBQUNDLGtCQUFTLENBQUNxSCxjQUFjLEVBQUV2SSxLQUFLLENBQUM7RUFDM0QsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOakYsY0FBSyxDQUFDaU0sU0FBUyxDQUFDLE1BQU07SUFDbEIsSUFBSSxDQUFDOU8sY0FBSyxDQUFDQyxNQUFNLENBQUM4QyxLQUFLLENBQUNzSyxJQUFJLENBQUMsRUFBRTtNQUMzQixJQUFJQyxJQUFJLEdBQUcvSixNQUFNO01BQ2pCLElBQUl2RCxjQUFLLENBQUNDLE1BQU0sQ0FBQ3FOLElBQUksQ0FBQyxFQUFFO1FBQ3BCQSxJQUFJLEdBQUd0TixjQUFLLENBQUN3RCxXQUFXLENBQUNULEtBQUssQ0FBQ1EsTUFBTSxFQUFFUixLQUFLLENBQUNVLE1BQU0sQ0FBQztNQUN4RDtNQUVBMkosV0FBVyxDQUFDckssS0FBSyxDQUFDc0ssSUFBSSxFQUFFQyxJQUFJLENBQUM7SUFDakM7RUFDSixDQUFDLEVBQUUsQ0FBQ3ZLLEtBQUssQ0FBQ3NLLElBQUksQ0FBQyxDQUFDO0VBRWhCLFNBQVNpRCxtQkFBbUJBLENBQUNuSyxHQUFHLEVBQUU7SUFDOUI5SSxDQUFDLENBQUMsT0FBTyxHQUFHOEksR0FBRyxDQUFDcEcsRUFBRSxDQUFDLENBQ2R3USxRQUFRLENBQUMsWUFBWTtNQUNsQixJQUFJM0UsV0FBVyxHQUFHLEVBQUU7TUFDcEIsS0FBSyxNQUFNNEUsZUFBZSxJQUFJN00sUUFBUSxFQUFFO1FBQ3BDLElBQUk2TSxlQUFlLEtBQUtySyxHQUFHLENBQUNwRyxFQUFFLEVBQUU7VUFDNUI2TCxXQUFXLENBQUM5RSxJQUFJLENBQUMwSixlQUFlLENBQUM7UUFDckM7TUFDSjtNQUVBLElBQUl4USxjQUFLLENBQUNDLE1BQU0sQ0FBQzhDLEtBQUssQ0FBQ1EsTUFBTSxDQUFDMkIsbUJBQW1CLENBQUMsSUFBSW5DLEtBQUssQ0FBQ1EsTUFBTSxDQUFDMkIsbUJBQW1CLEtBQUssS0FBSyxFQUFFO1FBQzlGdEIsV0FBVyxDQUFDZ0ksV0FBVyxDQUFDO01BQzVCO0lBQ0osQ0FBQyxDQUFDO0VBQ1Y7RUFFQSxNQUFNNkIsZ0JBQWdCLEdBQUl4RixPQUFPLElBQUs7SUFDbEMsSUFBSUEsT0FBTyxFQUFFO01BQ1QsSUFBSWxGLEtBQUssQ0FBQ1EsTUFBTSxDQUFDa04sYUFBYSxJQUFJMU4sS0FBSyxDQUFDUSxNQUFNLENBQUNrTixhQUFhLENBQUNDLGNBQWMsRUFBRTtRQUN6RSxJQUFJOVAsS0FBSyxHQUFHLENBQUM7UUFDYixLQUFLLE1BQU11RixHQUFHLElBQUk4QixPQUFPLEVBQUU7VUFDdkI5QixHQUFHLENBQUN3SyxTQUFTLEdBQUcvUSxrQkFBUyxDQUFDc00sbUJBQW1CLENBQUMsTUFBTSxHQUFHL0YsR0FBRyxDQUFDcEcsRUFBRSxHQUFHLGdCQUFnQixFQUM1RWdELEtBQUssQ0FBQ1EsTUFBTSxDQUFDa04sYUFBYSxDQUFDQyxjQUFjLEVBQUUzTixLQUFLLENBQUNRLE1BQU0sQ0FBQ3hELEVBQUUsRUFBRTtZQUFDYTtVQUFLLENBQUMsRUFBRSxJQUFJLENBQUM7VUFDOUVBLEtBQUssRUFBRTtRQUNYO01BQ0o7SUFDSjtFQUNKLENBQUM7RUFFRCxNQUFNZ1EsdUJBQXVCLEdBQUkzSSxPQUFPLElBQUs7SUFDekMsSUFBSUEsT0FBTyxFQUFFO01BQ1QsSUFBSWxGLEtBQUssQ0FBQ1EsTUFBTSxDQUFDa04sYUFBYSxJQUFJMU4sS0FBSyxDQUFDUSxNQUFNLENBQUNrTixhQUFhLENBQUNJLGlCQUFpQixFQUFFO1FBQzVFLElBQUlqUSxLQUFLLEdBQUcsQ0FBQztRQUNiLEtBQUssTUFBTXVGLEdBQUcsSUFBSThCLE9BQU8sRUFBRTtVQUN2QjlCLEdBQUcsQ0FBQzJLLFFBQVEsR0FBR2xSLGtCQUFTLENBQUNzTSxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcvRixHQUFHLENBQUNwRyxFQUFFLEdBQUcsbUJBQW1CLEVBQzlFZ0QsS0FBSyxDQUFDUSxNQUFNLENBQUNrTixhQUFhLENBQUNJLGlCQUFpQixFQUFFOU4sS0FBSyxDQUFDUSxNQUFNLENBQUN4RCxFQUFFLEVBQUU7WUFBQ2E7VUFBSyxDQUFDLEVBQUUsSUFBSSxDQUFDO1VBQ2pGQSxLQUFLLEVBQUU7UUFDWDtNQUNKO0lBQ0o7RUFDSixDQUFDO0VBRUQsTUFBTW1RLDBCQUEwQixHQUFHQSxDQUFDelIsTUFBTSxFQUFFMkksT0FBTyxLQUFLO0lBQ3BELElBQUkzSSxNQUFNLENBQUNLLFVBQVUsSUFBSUwsTUFBTSxDQUFDSyxVQUFVLENBQUNrUixpQkFBaUIsRUFBRTtNQUMxRCxJQUFJalEsS0FBSyxHQUFHLENBQUM7TUFDYixLQUFLLE1BQU11RixHQUFHLElBQUk4QixPQUFPLEVBQUU7UUFDdkIsSUFBSSxDQUFDOUIsR0FBRyxDQUFDNkssY0FBYyxFQUFFO1VBQ3JCN0ssR0FBRyxDQUFDNkssY0FBYyxHQUFHLENBQUMsQ0FBQztRQUMzQjtRQUVBN0ssR0FBRyxDQUFDNkssY0FBYyxDQUFDMVIsTUFBTSxDQUFDUyxFQUFFLENBQUMsR0FBR0gsa0JBQVMsQ0FBQ3NNLG1CQUFtQixDQUFDLE1BQU0sR0FBRy9GLEdBQUcsQ0FBQ3BHLEVBQUUsR0FBRyxHQUFHLEdBQUdULE1BQU0sQ0FBQ1MsRUFBRSxHQUFHLG9CQUFvQixFQUNsSFQsTUFBTSxDQUFDSyxVQUFVLENBQUNrUixpQkFBaUIsRUFBRTlOLEtBQUssQ0FBQ1EsTUFBTSxDQUFDeEQsRUFBRSxFQUFFO1VBQUNhO1FBQUssQ0FBQyxFQUFFLElBQUksQ0FBQztRQUN4RUEsS0FBSyxFQUFFO01BQ1g7SUFDSjtFQUNKLENBQUM7RUFFRGlDLGNBQUssQ0FBQ2lNLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCdEcsc0JBQXNCLENBQUMsQ0FBQztJQUN4Qk0sbUJBQVksQ0FBQ21JLG1DQUFtQyxDQUFDbE8sS0FBSyxDQUFDUSxNQUFNLENBQUN4RCxFQUFFLENBQUM7SUFDakU4RixRQUFRLENBQUM0QyxPQUFPLEdBQUd2RSxJQUFJLENBQUMwQyxNQUFNO0lBRTlCLElBQUlrQixLQUFLLEdBQUcsSUFBSWMsY0FBSyxDQUFDN0YsS0FBSyxDQUFDOEYsTUFBTSxFQUFFOUYsS0FBSyxDQUFDVSxNQUFNLEVBQUVTLElBQUksQ0FBQztJQUN2RDRFLG1CQUFZLENBQUNDLFNBQVMsQ0FBQ0Msa0JBQVMsQ0FBQ2tJLFlBQVksRUFBRXBKLEtBQUssQ0FBQzs7SUFFckQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFJLENBQUF2RSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXdJLFFBQVEsTUFBSyxNQUFNLElBQUk3SCxJQUFJLENBQUMwQyxNQUFNLEdBQUcsQ0FBQyxJQUFJakQsUUFBUSxDQUFDaUQsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUN6RSxNQUFNdUssVUFBVSxHQUFHak4sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDbkUsRUFBRTtNQUM3QixNQUFNcVIsWUFBWSxHQUFHLENBQUNELFVBQVUsQ0FBQztNQUNqQ3ZOLFdBQVcsQ0FBQ3dOLFlBQVksQ0FBQztNQUN6QixNQUFNekssWUFBWSxHQUFHeUIsZUFBZSxDQUFDZ0osWUFBWSxDQUFDO01BQ2xELElBQUksQ0FBQ3BSLGNBQUssQ0FBQ0MsTUFBTSxDQUFDOEMsS0FBSyxDQUFDd0YsaUJBQWlCLENBQUMsRUFBRTtRQUN4Q3hGLEtBQUssQ0FBQ3dGLGlCQUFpQixDQUFDNUIsWUFBWSxDQUFDO01BQ3pDO01BQ0EsSUFBSTBLLGNBQWMsR0FBRyxJQUFJekksY0FBSyxDQUFDN0YsS0FBSyxDQUFDOEYsTUFBTSxFQUFFOUYsS0FBSyxDQUFDVSxNQUFNLEVBQUVrRCxZQUFZLENBQUM7TUFDeEVtQyxtQkFBWSxDQUFDQyxTQUFTLENBQUNDLGtCQUFTLENBQUNDLGdCQUFnQixFQUFFb0ksY0FBYyxDQUFDO0lBQ3RFO0VBQ0osQ0FBQyxFQUFFLENBQUNuTixJQUFJLENBQUMsQ0FBQztFQUVWckIsY0FBSyxDQUFDaU0sU0FBUyxDQUFDLE1BQU07SUFDbEIsSUFBSSxDQUFDOU8sY0FBSyxDQUFDQyxNQUFNLENBQUNtRSxXQUFXLENBQUMsSUFBSUEsV0FBVyxDQUFDd0MsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUN0RCxJQUFJa0IsS0FBSyxHQUFHLElBQUljLGNBQUssQ0FBQzdGLEtBQUssQ0FBQzhGLE1BQU0sRUFBRTlGLEtBQUssQ0FBQ1UsTUFBTSxFQUFFVyxXQUFXLENBQUM7TUFDOUQwRSxtQkFBWSxDQUFDQyxTQUFTLENBQUNDLGtCQUFTLENBQUNzSSxXQUFXLEVBQUV4SixLQUFLLENBQUM7TUFDcER6RCxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQ3hCO0lBRUF3QixRQUFRLENBQUM0QyxPQUFPLEdBQUd2RSxJQUFJLENBQUMwQyxNQUFNO0VBQ2xDLENBQUMsRUFBRSxDQUFDeEMsV0FBVyxDQUFDLENBQUM7RUFFakJ2QixjQUFLLENBQUNpTSxTQUFTLENBQUMsTUFBTTtJQUNsQixJQUFJLENBQUM5TyxjQUFLLENBQUNDLE1BQU0sQ0FBQzhDLEtBQUssQ0FBQ21CLElBQUksQ0FBQyxFQUFFO01BQzNCLElBQUlxTixTQUFTLEdBQUcsRUFBRTtNQUVsQnpMLE9BQU8sQ0FBQzJDLE9BQU8sR0FBRzFGLEtBQUssQ0FBQ21CLElBQUk7TUFDNUJ1SixnQkFBZ0IsQ0FBQzFLLEtBQUssQ0FBQ21CLElBQUksQ0FBQztNQUM1QixLQUFLLE1BQU1pQyxHQUFHLElBQUlwRCxLQUFLLENBQUNtQixJQUFJLEVBQUU7UUFDMUJxTixTQUFTLENBQUN6SyxJQUFJLENBQUMyQyxVQUFVLENBQUN0RCxHQUFHLENBQUMsQ0FBQztNQUNuQztNQUVBeUssdUJBQXVCLENBQUM3TixLQUFLLENBQUNtQixJQUFJLENBQUM7TUFDbkMsS0FBSyxNQUFNNUUsTUFBTSxJQUFJaUUsTUFBTSxDQUFDMEQsT0FBTyxFQUFFO1FBQ2pDOEosMEJBQTBCLENBQUN6UixNQUFNLEVBQUV5RCxLQUFLLENBQUNtQixJQUFJLENBQUM7TUFDbEQ7TUFFQTRCLE9BQU8sQ0FBQzJDLE9BQU8sR0FBRzhJLFNBQVM7TUFDM0IzTixXQUFXLENBQUMsRUFBRSxDQUFDO01BQ2ZPLE9BQU8sQ0FBQ29OLFNBQVMsQ0FBQztJQUN0QjtFQUNKLENBQUMsRUFBRSxDQUFDeE8sS0FBSyxDQUFDbUIsSUFBSSxDQUFDLENBQUM7RUFHaEJyQixjQUFLLENBQUNpTSxTQUFTLENBQUMsTUFBTTtJQUNsQjhCLHVCQUF1QixDQUFDMU0sSUFBSSxDQUFDO0lBQzdCLEtBQUssTUFBTTVFLE1BQU0sSUFBSWlFLE1BQU0sQ0FBQzBELE9BQU8sRUFBRTtNQUNqQzhKLDBCQUEwQixDQUFDelIsTUFBTSxFQUFFNEUsSUFBSSxDQUFDO0lBQzVDO0VBQ0osQ0FBQyxFQUFFLENBQUNBLElBQUksQ0FBQyxDQUFDO0VBRVZyQixjQUFLLENBQUNpTSxTQUFTLENBQUMsTUFBTTtJQUNsQmhELGtCQUFrQixDQUFDLENBQUM7RUFDeEIsQ0FBQyxFQUFFLENBQUNuSSxRQUFRLENBQUMsQ0FBQztFQUVkLE1BQU13RSxVQUFVLEdBQUdwSSxFQUFFLElBQUk0RCxRQUFRLENBQUNnSSxPQUFPLENBQUM1TCxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDcEQsTUFBTXlSLG1CQUFtQixHQUFHQSxDQUFDQyxLQUFLLEVBQUVDLEtBQUssRUFBRXZFLEtBQUssS0FBSztJQUNqRCxLQUFLLE1BQU1oSCxHQUFHLElBQUlqQyxJQUFJLEVBQUU7TUFDcEIsSUFBSWlDLEdBQUcsQ0FBQ3BHLEVBQUUsS0FBSzBSLEtBQUssRUFBRTtRQUNsQnpSLGNBQUssQ0FBQzJSLG9CQUFvQixDQUFDeEwsR0FBRyxFQUFFdUwsS0FBSyxFQUFFdkUsS0FBSyxDQUFDO1FBQzdDO01BQ0o7SUFDSjtJQUVBekUsbUJBQW1CLENBQUN4RSxJQUFJLENBQUM7RUFDN0IsQ0FBQztFQUVELE1BQU1zQyxZQUFZLEdBQUdBLENBQUEsS0FBTTtJQUN2QixLQUFLLElBQUlsSSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUd5RSxLQUFLLENBQUNRLE1BQU0sQ0FBQzBELE9BQU8sQ0FBQ0wsTUFBTSxFQUFFdEksQ0FBQyxFQUFFLEVBQUU7TUFDbEQsSUFBSWdCLE1BQU0sR0FBR3lELEtBQUssQ0FBQ1EsTUFBTSxDQUFDMEQsT0FBTyxDQUFDM0ksQ0FBQyxDQUFDO01BQ3BDLElBQUlnQixNQUFNLENBQUNLLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDMUMsT0FBTyxJQUFJO01BQ2Y7SUFDSjtJQUVBLE9BQU8sS0FBSztFQUNoQixDQUFDO0VBRUQsTUFBTWlTLFVBQVUsR0FBR0EsQ0FBQ3pMLEdBQUcsRUFBRTBMLFVBQVUsRUFBRUMsVUFBVSxLQUFLO0lBQ2hELElBQUlDLFFBQVEsR0FBRyxJQUFJO0lBQ25CLEtBQUssTUFBTUMsVUFBVSxJQUFJN00sS0FBSyxFQUFFO01BQzVCLElBQUk2TSxVQUFVLENBQUNQLEtBQUssS0FBS3RMLEdBQUcsQ0FBQ3BHLEVBQUUsRUFBRTtRQUM3QmdTLFFBQVEsR0FBR0MsVUFBVTtRQUNyQjtNQUNKO0lBQ0o7SUFFQSxJQUFJaFMsY0FBSyxDQUFDQyxNQUFNLENBQUM4UixRQUFRLENBQUMsSUFBSUEsUUFBUSxDQUFDbkwsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUNqRG1MLFFBQVEsR0FBRyxDQUFDLENBQUM7TUFDYkEsUUFBUSxDQUFDTixLQUFLLEdBQUd0TCxHQUFHLENBQUNwRyxFQUFFO01BQ3ZCb0YsS0FBSyxDQUFDMkIsSUFBSSxDQUFDaUwsUUFBUSxDQUFDO0lBQ3hCO0lBRUFBLFFBQVEsQ0FBQ0YsVUFBVSxDQUFDLEdBQUdDLFVBQVU7RUFDckMsQ0FBQztFQUVELE1BQU1HLFdBQVcsR0FBR0EsQ0FBQ1IsS0FBSyxFQUFFSSxVQUFVLEtBQUs7SUFDdkMsSUFBSUUsUUFBUSxHQUFHLElBQUk7SUFDbkIsS0FBSyxNQUFNRyxJQUFJLElBQUkvTSxLQUFLLEVBQUU7TUFDdEIsSUFBSStNLElBQUksQ0FBQ1QsS0FBSyxLQUFLQSxLQUFLLEVBQUU7UUFDdEJNLFFBQVEsR0FBR0csSUFBSTtRQUNmO01BQ0o7SUFDSjtJQUVBLElBQUksQ0FBQ2xTLGNBQUssQ0FBQ0MsTUFBTSxDQUFDOFIsUUFBUSxDQUFDLEVBQUU7TUFDekIsSUFBSUcsSUFBSSxHQUFHSCxRQUFRLENBQUNGLFVBQVUsQ0FBQztNQUUvQixJQUFJLENBQUM3UixjQUFLLENBQUNDLE1BQU0sQ0FBQ2lTLElBQUksQ0FBQyxFQUFFO1FBQ3JCQSxJQUFJLENBQUM1TCxHQUFHLENBQUNzRCxPQUFPLENBQUMsQ0FBQztNQUN0QjtJQUNKO0VBQ0osQ0FBQztFQUVELE1BQU11SSwwQkFBMEIsR0FBR0EsQ0FBQ04sVUFBVSxFQUFFTyxTQUFTLEtBQUs7SUFDMUQsSUFBSUEsU0FBUyxFQUFFO01BQ1gsS0FBSyxJQUFJOVQsQ0FBQyxHQUFHOFQsU0FBUyxDQUFDeEwsTUFBTSxHQUFHLENBQUMsRUFBRXRJLENBQUMsSUFBSSxDQUFDLEVBQUVBLENBQUMsRUFBRSxFQUFFO1FBQzVDLElBQUk4VCxTQUFTLENBQUM5VCxDQUFDLENBQUMsQ0FBQ2dCLE1BQU0sS0FBS3VTLFVBQVUsRUFBRTtVQUNwQ08sU0FBUyxDQUFDL0osTUFBTSxDQUFDL0osQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQjtNQUNKO0lBQ0o7RUFDSixDQUFDO0VBRUQsTUFBTStULGVBQWUsR0FBR0EsQ0FBQ1osS0FBSyxFQUFFaEQsS0FBSyxFQUFFblAsTUFBTSxLQUFLO0lBQzlDLElBQUlQLE1BQU0sQ0FBQ3VULElBQUksQ0FBQzlNLFdBQVcsQ0FBQyxDQUFDb0IsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDcEIsV0FBVyxDQUFDaU0sS0FBSyxDQUFDLEVBQUU7TUFDOURqTSxXQUFXLENBQUNpTSxLQUFLLENBQUMsR0FBRyxFQUFFO0lBQzNCO0lBRUEsSUFBSWhELEtBQUssS0FBSyxJQUFJLEVBQUU7TUFDaEIsSUFBSSxDQUFDakosV0FBVyxDQUFDaU0sS0FBSyxDQUFDLENBQUNjLElBQUksQ0FBQ0MsUUFBUSxJQUFJQSxRQUFRLENBQUNsVCxNQUFNLEtBQUtBLE1BQU0sQ0FBQyxFQUFFO1FBQ2xFa0csV0FBVyxDQUFDaU0sS0FBSyxDQUFDLENBQUMzSyxJQUFJLENBQUMySCxLQUFLLENBQUM7TUFDbEM7SUFDSixDQUFDLE1BQU07TUFDSDBELDBCQUEwQixDQUFDN1MsTUFBTSxFQUFFa0csV0FBVyxDQUFDaU0sS0FBSyxDQUFDLENBQUM7SUFDMUQ7RUFDSixDQUFDO0VBRUQsTUFBTWdCLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDM0IsSUFBSTFULE1BQU0sQ0FBQ3VULElBQUksQ0FBQzlNLFdBQVcsQ0FBQyxDQUFDb0IsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUN2QyxPQUFPLElBQUk7SUFDZjtJQUVBLEtBQUssTUFBTThMLEdBQUcsSUFBSTNULE1BQU0sQ0FBQ3VULElBQUksQ0FBQzlNLFdBQVcsQ0FBQyxFQUFFO01BQ3hDLElBQUlBLFdBQVcsQ0FBQ2tOLEdBQUcsQ0FBQyxDQUFDOUwsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUM3QixPQUFPLEtBQUs7TUFDaEI7SUFDSjtJQUVBLE9BQU8sSUFBSTtFQUNmLENBQUM7RUFFRCxNQUFNOEIsbUJBQW1CLEdBQUlpSyxTQUFTLElBQUs7SUFDdkMsSUFBSSxDQUFDM1MsY0FBSyxDQUFDQyxNQUFNLENBQUM4QyxLQUFLLENBQUM2UCxrQkFBa0IsQ0FBQyxFQUFFO01BQ3pDN1AsS0FBSyxDQUFDNlAsa0JBQWtCLENBQUNELFNBQVMsRUFBRSxDQUFDRixnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDNUQ7RUFDSixDQUFDO0VBRUQsU0FBU0ksWUFBWUEsQ0FBQzFNLEdBQUcsRUFBRTtJQUN2QixJQUFJMk0sT0FBTyxHQUFHLENBQUM7SUFDZixvQkFDSTNXLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsZUFDS3hQLE1BQU0sQ0FBQzBELE9BQU8sQ0FBQ3ZHLEdBQUcsQ0FBQ3BCLE1BQU0sSUFDdEIsQ0FBQ0EsTUFBTSxDQUFDSyxVQUFVLENBQUMyUCxNQUFNLGdCQUNyQm5ULE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUE7TUFBTUwsR0FBRyxFQUFFSSxPQUFPO0lBQUcsR0FFVDNNLEdBQUcsQ0FBQyxDQUFDbkcsY0FBSyxDQUFDQyxNQUFNLENBQUNYLE1BQU0sQ0FBQzRILFdBQVcsQ0FBQyxHQUFHNUgsTUFBTSxDQUFDNEgsV0FBVyxHQUFHNUgsTUFBTSxDQUFDUyxFQUFFLENBQUMsZUFFL0U1RCxNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBLFdBQUksQ0FDRSxDQUFDLEdBQ1gsSUFBSyxDQUVYLENBQUM7RUFFZjtFQUVBLFNBQVNDLFVBQVVBLENBQUM3TSxHQUFHLEVBQUV1TSxHQUFHLEVBQUU7SUFDMUIsTUFBTU8sY0FBYyxHQUFHOUssVUFBVSxDQUFDaEMsR0FBRyxDQUFDcEcsRUFBRSxDQUFDO0lBQ3pDLG9CQUFRNUQsTUFBQSxDQUFBc0MsT0FBQSxDQUFBc1UsYUFBQSxDQUFDNVYsS0FBQSxDQUFBc0IsT0FBSTtNQUFDeVUsSUFBSTtNQUFDQyxFQUFFO01BQUM3RyxLQUFLLEVBQUV0TSxjQUFLLENBQUNvVCxZQUFZLENBQUNyUSxLQUFLLENBQUNRLE1BQU0sQ0FBQzhQLFNBQVMsRUFBRTtRQUNwRTlSLE1BQU0sRUFBRSxPQUFPO1FBQ2YrUixRQUFRLEVBQUU7TUFDZCxDQUFDLENBQUU7TUFBQ1osR0FBRyxFQUFFQTtJQUFJLGdCQUNUdlcsTUFBQSxDQUFBc0MsT0FBQSxDQUFBc1UsYUFBQSxDQUFDM1YsT0FBQSxDQUFBcUIsT0FBTTtNQUFDOFUsT0FBTyxFQUFDLFVBQVU7TUFBQ0MsS0FBSyxFQUFFLFdBQVk7TUFDdENsSCxLQUFLLEVBQUU7UUFDSDlNLEtBQUssRUFBRSxNQUFNO1FBQ2IrQixNQUFNLEVBQUUsTUFBTTtRQUNkaUIsTUFBTSxFQUFFeVEsY0FBYyxHQUFHLDZCQUE2QixHQUFHLG1CQUFtQjtRQUM1RTlRLFVBQVUsRUFBRThRLGNBQWMsR0FBRyxTQUFTLEdBQUc7TUFDN0MsQ0FBRTtNQUNGUSxPQUFPLEVBQUUzTCxLQUFLLElBQUkyRCxhQUFhLENBQUMzRCxLQUFLLEVBQUUzQixHQUFHLENBQUNwRyxFQUFFO0lBQUUsR0FHL0M4UyxZQUFZLENBQUMxTSxHQUFHLENBRWhCLENBQ04sQ0FBQztFQUNYO0VBRUEsU0FBU3VOLFdBQVdBLENBQUEsRUFBRztJQUNuQixJQUFJLENBQUN4UCxJQUFJLElBQUlBLElBQUksQ0FBQzBDLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFBQSxJQUFBK00sYUFBQTtNQUM1QjtNQUNBO01BQ0E7TUFDQTtNQUNBLE1BQU1DLE9BQU8sR0FBRyxFQUFBRCxhQUFBLEdBQUE1USxLQUFLLENBQUNRLE1BQU0sY0FBQW9RLGFBQUEsdUJBQVpBLGFBQUEsQ0FBY0UsWUFBWSxLQUFJLGtCQUFrQjtNQUNoRSxvQkFDSTFYLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQzVWLEtBQUEsQ0FBQXNCLE9BQUk7UUFBQ3lVLElBQUk7UUFBQ0MsRUFBRSxFQUFFLEVBQUc7UUFBQzdHLEtBQUssRUFBRTtVQUN0QnhLLE9BQU8sRUFBRSxNQUFNO1VBQ2ZnUyxVQUFVLEVBQUUsUUFBUTtVQUNwQkMsY0FBYyxFQUFFLFFBQVE7VUFDeEJDLFNBQVMsRUFBRSxPQUFPO1VBQ2xCUixLQUFLLEVBQUUsU0FBUztVQUNoQlMsUUFBUSxFQUFFLFVBQVU7VUFDcEJDLFNBQVMsRUFBRTtRQUNmO01BQUUsR0FDR04sT0FDQyxDQUFDO0lBRWY7SUFFQSxvQkFDSXpYLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQzVXLE1BQUEsQ0FBQXNDLE9BQUssQ0FBQzBWLFFBQVEsUUFFUGpRLElBQUksQ0FBQ3hELEdBQUcsQ0FBQyxDQUFDeUYsR0FBRyxFQUFFdkYsS0FBSyxLQUFLO01BQ3JCLE1BQU1xUyxjQUFjLEdBQUc5SyxVQUFVLENBQUNoQyxHQUFHLENBQUNwRyxFQUFFLENBQUM7TUFDekMsTUFBTXFVLE9BQU8sOEJBQUF0VSxNQUFBLENBQThCYyxLQUFLLENBQUU7TUFDbER1RixHQUFHLENBQUN2RixLQUFLLEdBQUdBLEtBQUs7TUFFakIsT0FDSW9TLFVBQVUsQ0FBQzdNLEdBQUcsRUFBRXZGLEtBQUssQ0FBQztJQUU5QixDQUFDLENBQ08sQ0FBQztFQUV6QjtFQUVBLFNBQVN5VCx3QkFBd0JBLENBQUMvVSxNQUFNLEVBQUVzQixLQUFLLEVBQUU7SUFDN0MsSUFBSVosY0FBSyxDQUFDQyxNQUFNLENBQUNxRixtQkFBbUIsQ0FBQ2hHLE1BQU0sQ0FBQ1MsRUFBRSxHQUFHYSxLQUFLLENBQUMsQ0FBQyxFQUFFO01BQ3RELElBQUlpSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO01BQ2Z2RCxtQkFBbUIsQ0FBQ2hHLE1BQU0sQ0FBQ1MsRUFBRSxHQUFHYSxLQUFLLENBQUMsR0FBR2lJLE1BQU07TUFDL0MsT0FBT0EsTUFBTTtJQUNqQjtJQUVBLE9BQU92RCxtQkFBbUIsQ0FBQ2hHLE1BQU0sQ0FBQ1MsRUFBRSxHQUFHYSxLQUFLLENBQUM7RUFDakQ7RUFFQSxTQUFTMFQsc0JBQXNCQSxDQUFDaFYsTUFBTSxFQUFFO0lBQ3BDLElBQUlVLGNBQUssQ0FBQ0MsTUFBTSxDQUFDc0YsYUFBYSxDQUFDakcsTUFBTSxDQUFDUyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsRUFBRTtNQUNwRCxJQUFJOEksTUFBTSxHQUFHLENBQUMsQ0FBQztNQUNmdEQsYUFBYSxDQUFDakcsTUFBTSxDQUFDUyxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUc4SSxNQUFNO01BQzdDLE9BQU9BLE1BQU07SUFDakI7SUFFQSxPQUFPdEQsYUFBYSxDQUFDakcsTUFBTSxDQUFDUyxFQUFFLEdBQUcsU0FBUyxDQUFDO0VBQy9DO0VBRUEsT0FDSTBGLE9BQU8saUJBQ1B0SixNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBO0lBQUtoVCxFQUFFLEVBQUVnRCxLQUFLLENBQUNRLE1BQU0sQ0FBQ3hELEVBQUc7SUFBQzRRLFNBQVMsRUFBRTNRLGNBQUssQ0FBQ3VQLHFCQUFxQixDQUFDeE0sS0FBSyxDQUFDUSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBRTtJQUFDK0ksS0FBSyxFQUFHdE0sY0FBSyxDQUFDQyxNQUFNLENBQUM4QyxLQUFLLENBQUN3UixTQUFTLENBQUMsSUFBSXhSLEtBQUssQ0FBQ3dSLFNBQVMsS0FBSyxJQUFJLEdBQ2hLdlUsY0FBSyxDQUFDd1UsV0FBVyxDQUFDO01BQ2Q5UixNQUFNLEVBQUUsR0FBRztNQUNYRixNQUFNLEVBQUUsbUJBQW1CO01BQzNCaVMsWUFBWSxFQUFFO0lBQ2xCLENBQUMsRUFBRTFSLEtBQUssQ0FBQ1EsTUFBTSxDQUFDLEdBQUd2RCxjQUFLLENBQUN3VSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUV6UixLQUFLLENBQUNRLE1BQU07RUFBRSxHQUVuRCxDQUFDdkQsY0FBSyxDQUFDQyxNQUFNLENBQUM4QyxLQUFLLENBQUNRLE1BQU0sQ0FBQ21SLEtBQUssQ0FBQyxHQUM3QjNSLEtBQUssQ0FBQ1EsTUFBTSxDQUFDbVIsS0FBSyxDQUFDaFUsR0FBRyxDQUFFaVUsSUFBSSxJQUFLO0lBQzdCLG9CQUFPeFksTUFBQSxDQUFBc0MsT0FBQSxDQUFBc1UsYUFBQTtNQUFLTCxHQUFHLEVBQUUzTSxPQUFPLEVBQUc7TUFBQ3VHLEtBQUssRUFBRTtRQUFDM0ssT0FBTyxFQUFFO01BQUs7SUFBRSxnQkFDaER4RixNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBLENBQUN4VixNQUFBLENBQUFrQixPQUFLO01BQ0Y2TixLQUFLLEVBQUU7UUFBQ3NJLFlBQVksRUFBRTtNQUFHLENBQUU7TUFDM0JyQixPQUFPLEVBQUVvQixJQUFJLENBQUNFLFdBQVcsS0FBSyxNQUFNLEdBQUcsU0FBUyxHQUM1Q0YsSUFBSSxDQUFDRSxXQUFXLEtBQUssTUFBTSxHQUFHLEVBQUUsR0FBRyxRQUFTO01BQ2hEckssSUFBSSxFQUFFO0lBQUssZ0JBRVhyTyxNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBO01BQU16RyxLQUFLLEVBQUU7UUFBQ2tILEtBQUssRUFBRTtNQUEwQjtJQUFFLEdBQUVtQixJQUFJLENBQUNmLE9BQWMsQ0FDbkUsQ0FDTixDQUFDO0VBQ1YsQ0FBQyxDQUFDLEdBQ0EsSUFBSSxFQUdWbFAsa0JBQWtCLENBQUNvUSxRQUFRLENBQUMvUixLQUFLLENBQUNRLE1BQU0sQ0FBQ3dCLFFBQVEsQ0FBQyxHQUM5Q3hCLE1BQU0sQ0FBQ3dJLFFBQVEsS0FBSyxNQUFNLGdCQUN0QjVQLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUE7SUFBS3pHLEtBQUssRUFBRTtNQUFDNUosTUFBTSxFQUFFO0lBQWE7RUFBRSxnQkFDaEN2RyxNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBLGNBRVF2TSxZQUFZLENBQUMsQ0FBQyxnQkFDVnJLLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQ3BXLGVBQUEsQ0FBQThCLE9BQWM7SUFDWG9LLE1BQU0sRUFBRXhELFlBQWE7SUFDckI5QixNQUFNLEVBQUVSLEtBQUssQ0FBQ1EsTUFBTztJQUNyQkUsTUFBTSxFQUFFVixLQUFLLENBQUNVLE1BQU87SUFDckJzUixrQkFBa0IsRUFBRWhTLEtBQUssQ0FBQ2dTLGtCQUFtQjtJQUM3Q3ZRLFdBQVcsRUFBRUEsV0FBWTtJQUN6QndRLGNBQWMsRUFBRWpOLE1BQU87SUFDdkJrTixhQUFhLEVBQUVoSztFQUFrQixDQUNwQyxDQUFDLEdBRUYsSUFFUCxDQUFDLGVBQ045TyxNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBO0lBQUtwQyxTQUFTLEVBQUV2TixPQUFPLENBQUNqQztFQUFLLGdCQUN6QmhGLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQzVWLEtBQUEsQ0FBQXNCLE9BQUk7SUFBQ3lXLFNBQVM7SUFBQzdULE9BQU8sRUFBRTtFQUFFLGdCQUN2QmxGLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQzVWLEtBQUEsQ0FBQXNCLE9BQUk7SUFBQ3lXLFNBQVM7SUFBQ2hDLElBQUk7SUFBQ0MsRUFBRSxFQUFFLEVBQUc7SUFBQzlSLE9BQU8sRUFBRTtFQUFFLEdBRWhDcVMsV0FBVyxDQUFDLENBRWQsQ0FDSixDQUNMLENBQ0osQ0FBQyxnQkFFTnZYLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsMkJBQ0k1VyxNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBO0lBQUt6RyxLQUFLLEVBQUU7TUFDUjlNLEtBQUssRUFBRSxNQUFNO01BQ2JtQyxPQUFPLEVBQUUsZUFBZTtNQUN4QndULFlBQVksRUFBRTtJQUNsQjtFQUFFLGdCQUNFaFosTUFBQSxDQUFBc0MsT0FBQSxDQUFBc1UsYUFBQSxDQUFDblYsaUJBQUEsQ0FBQWEsT0FBZ0I7SUFDYjJXLE9BQU8sZUFDSGpaLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQ3BWLE9BQUEsQ0FBQWMsT0FBTTtNQUNINE0sT0FBTyxFQUFFMUYsSUFBSztNQUNkMFAsUUFBUSxFQUFHdFgsQ0FBQyxJQUFLNkgsT0FBTyxDQUFDN0gsQ0FBQyxDQUFDcU4sTUFBTSxDQUFDQyxPQUFPLENBQUU7TUFDM0NtSSxLQUFLLEVBQUM7SUFBUyxDQUNsQixDQUNKO0lBQ0Q4QixFQUFFLEVBQUU7TUFBRSw4QkFBOEIsRUFBRTtRQUFFckIsUUFBUSxFQUFFO01BQVU7SUFBRSxDQUFFO0lBQ2hFc0IsS0FBSyxFQUFDO0VBQWlCLENBQzFCLENBQ0EsQ0FBQyxlQUNOcFosTUFBQSxDQUFBc0MsT0FBQSxDQUFBc1UsYUFBQTtJQUFLcEMsU0FBUyxvQkFBc0I7SUFBQ3JFLEtBQUssRUFBRTtNQUFDL0ssTUFBTSxFQUFFd0IsS0FBSyxDQUFDeEI7SUFBTTtFQUFFLGdCQUMvRHBGLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQ3hXLDBCQUFBLENBQUFpWixLQUFLO0lBQUM3RSxTQUFTLEtBQUE3USxNQUFBLENBQUssVUFBVSxJQUFJb0UsSUFBSSxDQUFDMEMsTUFBTSxLQUFLLENBQUMsR0FBRyxpQkFBaUIsR0FBRyxFQUFFLENBQUMsQ0FBRztJQUMxRTZPLFdBQVcsRUFBQyxHQUFHO0lBQ2YsbUJBQWdCLFlBQVk7SUFDNUJuSixLQUFLLEVBQUU7TUFBQzlNLEtBQUssRUFBRTtJQUFNO0VBQUUsZ0JBRTFCckQsTUFBQSxDQUFBc0MsT0FBQSxDQUFBc1UsYUFBQTtJQUFPcEMsU0FBUyxFQUFFLFlBQWE7SUFDeEJyRSxLQUFLLEVBQUU7TUFBQzlNLEtBQUssRUFBRSxjQUFjLEdBQUd1RCxLQUFLLENBQUN5QixXQUFXLEdBQUc7SUFBSztFQUFFLEdBRTlEZ0MsWUFBWSxDQUFDLENBQUMsZ0JBQ1ZySyxNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBLENBQUNwVyxlQUFBLENBQUE4QixPQUFjO0lBQ1hvSyxNQUFNLEVBQUV4RCxZQUFhO0lBQ3JCOUIsTUFBTSxFQUFFQSxNQUFPO0lBQ2ZFLE1BQU0sRUFBRVYsS0FBSyxDQUFDVSxNQUFPO0lBQ3JCc1Isa0JBQWtCLEVBQUVoUyxLQUFLLENBQUNnUyxrQkFBbUI7SUFDN0N2USxXQUFXLEVBQUVBLFdBQVk7SUFDekJ3USxjQUFjLEVBQUVqTixNQUFPO0lBQ3ZCa04sYUFBYSxFQUFFaEs7RUFBa0IsQ0FDcEMsQ0FBQyxHQUVGLElBQUksZUFFWjlPLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQ25XLGdCQUFBLENBQUE2QixPQUFlO0lBQ1pvSyxNQUFNLEVBQUV6RCxhQUFjO0lBQ3RCN0IsTUFBTSxFQUFFQSxNQUFPO0lBQ2ZtUyxXQUFXLEVBQUUvUixRQUFRLENBQUNpRCxNQUFPO0lBQzdCcEMsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCbVIsZ0JBQWdCLEVBQUV4SyxvQkFBcUI7SUFDdkM4SixhQUFhLEVBQUVoSyxpQkFBa0I7SUFDakNwRixRQUFRLEVBQUVoQyxpQkFBa0I7SUFDNUIrUixhQUFhLEVBQUVBLENBQUEsS0FBTTtNQUNqQnpSLE9BQU8sQ0FBQyxDQUFDLEdBQUdELElBQUksQ0FBQyxDQUFDO0lBQ3RCO0VBQUUsQ0FDTCxDQUNNLENBQUMsZUFDUi9ILE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQ3hXLDBCQUFBLENBQUFzWixLQUFLO0lBQUNsRixTQUFTLEVBQUV2TixPQUFPLENBQUN2QixTQUFVO0lBQzdCeUssS0FBSyxFQUFFO01BQUN3SixTQUFTLEVBQUU5VixjQUFLLENBQUNDLE1BQU0sQ0FBQzhDLEtBQUssQ0FBQ2dULGFBQWEsQ0FBQyxHQUFHaFQsS0FBSyxDQUFDZ1QsYUFBYSxHQUFHO0lBQU0sQ0FBRTtJQUNyRmhXLEVBQUUsRUFBQztFQUFlLEdBQ3BCbUUsSUFBSSxDQUFDeEQsR0FBRyxDQUFDLENBQUN5RixHQUFHLEVBQUV2RixLQUFLLEtBQUs7SUFDdEIsTUFBTXFTLGNBQWMsR0FBRzlLLFVBQVUsQ0FBQ2hDLEdBQUcsQ0FBQ3BHLEVBQUUsQ0FBQztJQUN6QyxNQUFNcVUsT0FBTyw4QkFBQXRVLE1BQUEsQ0FBOEJjLEtBQUssQ0FBRTtJQUVsRCxJQUFJb1YsZUFBZSxHQUFHO01BQ2xCbFUsT0FBTyxFQUFFLE1BQU07TUFDZm1VLFFBQVEsRUFBRSxNQUFNO01BQ2hCbkMsVUFBVSxFQUFFO0lBQ2hCLENBQUM7SUFFRCxvQkFDSTNYLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQ3hXLDBCQUFBLENBQUEyWixFQUFFO01BQ0M1SixLQUFLLEVBQ0R2SixLQUFLLENBQUNRLE1BQU0sQ0FBQ2tOLGFBQWEsSUFBSTFOLEtBQUssQ0FBQ1EsTUFBTSxDQUFDa04sYUFBYSxDQUFDbkUsS0FBSyxHQUMxRHRNLGNBQUssQ0FBQ29ULFlBQVksQ0FBQ3JRLEtBQUssQ0FBQ1EsTUFBTSxDQUFDa04sYUFBYSxDQUFDbkUsS0FBSyxFQUFFMEosZUFBZSxDQUFDLEdBQ3JFQSxlQUNQO01BQ0RHLFlBQVksRUFBRUEsQ0FBQSxLQUFNNUosbUJBQW1CLENBQUNwRyxHQUFHLENBQUU7TUFDN0NpUSxZQUFZLEVBQUU1SixtQkFBb0I7TUFDbENpSCxPQUFPLEVBQUUzTCxLQUFLLElBQUkyRSxXQUFXLENBQUMzRSxLQUFLLEVBQUUzQixHQUFHLEVBQUV2RixLQUFLLENBQUU7TUFDakR5VixhQUFhLEVBQUV2TyxLQUFLLElBQUkvRSxLQUFLLENBQUN1VCxnQkFBZ0IsSUFBSXZULEtBQUssQ0FBQ3VULGdCQUFnQixDQUFDblEsR0FBRyxFQUFFMkIsS0FBSyxDQUFFO01BQ3JGeU8sSUFBSSxFQUFDLFVBQVU7TUFDZixnQkFBY3RELGNBQWU7TUFDN0J1RCxRQUFRLEVBQUUsQ0FBQyxDQUFFO01BQ2I5RCxHQUFHLEVBQUU5UixLQUFNO01BQ1hiLEVBQUUsRUFBRSxNQUFNLEdBQUdvRyxHQUFHLENBQUNwRyxFQUFHO01BQ3BCNEQsUUFBUSxFQUFFc1AsY0FBZTtNQUN6QnRDLFNBQVMsRUFBRSxnQkFBZ0IsSUFBSSxDQUFDM0wscUJBQXFCLENBQUN5RCxPQUFPLEdBQUd3SyxjQUFjLEdBQUc3UCxPQUFPLENBQUNwQixhQUFhLEdBQUdvQixPQUFPLENBQUNoQixRQUFRLEdBQUcsRUFBRSxLQUN2SCtELEdBQUcsQ0FBQ3dLLFNBQVMsR0FBSSxHQUFHLEdBQUd4SyxHQUFHLENBQUN3SyxTQUFTLEdBQUksRUFBRSxDQUFDO0lBQUUsR0FHaERwTixNQUFNLENBQUNpTSxhQUFhLEtBQUssVUFBVSxnQkFDL0JyVCxNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBLENBQUN4VywwQkFBQSxDQUFBa2EsRUFBRTtNQUFDOVUsT0FBTyxFQUFDLFVBQVU7TUFDbEJuQyxLQUFLLEVBQUVOLCtCQUErQixHQUFHLElBQUs7TUFDOUN5UixTQUFTLEVBQUU7SUFBYSxnQkFDeEJ4VSxNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBLENBQUN2VyxTQUFBLENBQUFpQyxPQUFRO01BQ0w0TSxPQUFPLEVBQUU0SCxjQUFlO01BQ3hCeUQsVUFBVSxFQUFFO1FBQUMsaUJBQWlCLEVBQUV0QztNQUFPO0lBQUUsQ0FDNUMsQ0FDRCxDQUFDLEdBQUcsSUFBSSxFQUduQjdRLE1BQU0sQ0FBQzBELE9BQU8sQ0FBQ3ZHLEdBQUcsQ0FBQ3BCLE1BQU07TUFBQSxJQUFBcVgsbUJBQUEsRUFBQUMsY0FBQTtNQUFBLE9BQ3RCNVcsY0FBSyxDQUFDOEoseUJBQXlCLENBQUN4SyxNQUFNLENBQUNLLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRW9ELEtBQUssQ0FBQ1EsTUFBTSxDQUFDeEQsRUFBRSxDQUFDLEtBQUssSUFBSSxHQUFHLElBQUksR0FDekZULE1BQU0sQ0FBQ3VYLE1BQU0sZ0JBQ1QxYSxNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBLENBQUN4VywwQkFBQSxDQUFBa2EsRUFBRTtRQUNDbkssS0FBSyxFQUFFO1VBQ0gzSyxPQUFPLEVBQUUsQ0FBQztVQUNWbkMsS0FBSyxFQUFFRixNQUFNLENBQUNLLFVBQVUsQ0FBQ0gsS0FBSyxHQUFHRixNQUFNLENBQUNLLFVBQVUsQ0FBQ0gsS0FBSyxHQUFJLEdBQUcsR0FBRytELE1BQU0sQ0FBQzBELE9BQU8sQ0FBQ0wsTUFBTSxHQUFJLEdBQUc7VUFDOUZyRixNQUFNLEVBQUU7UUFDWixDQUFFO1FBQ0Z1VixLQUFLLEVBQUMsTUFBTTtRQUNabkcsU0FBUyxFQUFFLENBQUM1TixLQUFLLENBQUNnVSxRQUFRLElBQUk5RCxjQUFjLElBQUksQ0FBQ2pULGNBQUssQ0FBQ0MsTUFBTSxDQUFDOEMsS0FBSyxDQUFDaVUsSUFBSSxDQUFDLElBQUksQ0FBQ2hYLGNBQUssQ0FBQ0MsTUFBTSxDQUFDWCxNQUFNLENBQUNtUSxNQUFNLENBQUMsR0FBRyxVQUFVLEdBQUcsSUFBSztRQUM5SGlELEdBQUcsRUFBRTlSLEtBQUssR0FBRyxHQUFHLEdBQUd0QixNQUFNLENBQUNTO01BQUcsZ0JBQzdCNUQsTUFBQSxDQUFBc0MsT0FBQSxDQUFBc1UsYUFBQSxDQUFDdFYsT0FBQSxDQUFBd1osTUFBTTtRQUNIcE8sTUFBTSxFQUFFd0wsd0JBQXdCLENBQUMvVSxNQUFNLEVBQUVzQixLQUFLLENBQUU7UUFDaEQ4UixHQUFHLEVBQUU5UixLQUFLLEdBQUcsR0FBRyxHQUFHdEIsTUFBTSxDQUFDUyxFQUFFLEdBQUcsU0FBVTtRQUN6Q3FDLFFBQVEsRUFBRThCLElBQUksQ0FBQ3FPLElBQUksQ0FBRXJVLENBQUMsSUFBS0EsQ0FBQyxDQUFDNkIsRUFBRSxLQUFLb0csR0FBRyxDQUFDcEcsRUFBRSxDQUFFO1FBQzVDc0ssUUFBUSxFQUFFekosS0FBTTtRQUNoQjJDLE1BQU0sRUFBRTJULElBQUksQ0FBQ0MsS0FBSyxDQUFDRCxJQUFJLENBQUNFLFNBQVMsQ0FBQ3JVLEtBQUssQ0FBQ1EsTUFBTSxDQUFDMEQsT0FBTyxDQUFDc0wsSUFBSSxDQUFFOEUsR0FBRyxJQUFLQSxHQUFHLENBQUN0WCxFQUFFLEtBQUtULE1BQU0sQ0FBQ1MsRUFBRSxDQUFDLENBQUM4VyxNQUFNLENBQUMsQ0FBRTtRQUNwR3BULE1BQU0sRUFBRVYsS0FBSyxDQUFDVSxNQUFPO1FBQUM2VCxNQUFNLEVBQUU7TUFBTSxDQUN2QyxDQUNELENBQUMsZ0JBQ0xuYixNQUFBLENBQUFzQyxPQUFBLENBQUFzVSxhQUFBLENBQUN4VywwQkFBQSxDQUFBa2EsRUFBRTtRQUNDbkssS0FBSyxFQUFFO1VBQ0g5TSxLQUFLLEVBQUVGLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDSCxLQUFLLEdBQUdGLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDSCxLQUFLLEdBQUksR0FBRyxHQUFHK0QsTUFBTSxDQUFDMEQsT0FBTyxDQUFDTCxNQUFNLEdBQUksR0FBRztVQUM5RnJGLE1BQU0sRUFBRTtRQUNaLENBQUU7UUFDRnVWLEtBQUssRUFBQyxNQUFNO1FBQ1puRyxTQUFTLEVBQUUsQ0FBQzVOLEtBQUssQ0FBQ2dVLFFBQVEsSUFBSTlELGNBQWMsSUFBSSxDQUFDalQsY0FBSyxDQUFDQyxNQUFNLENBQUNYLE1BQU0sQ0FBQ21RLE1BQU0sQ0FBQyxHQUFHLFVBQVUsR0FBRyxJQUFLO1FBQ2pHaUQsR0FBRyxFQUFFOVIsS0FBSyxHQUFHLEdBQUcsR0FBR3RCLE1BQU0sQ0FBQ1MsRUFBRztRQUM3QjBULE9BQU8sRUFBRTNMLEtBQUssSUFBSStFLGVBQWUsQ0FBQy9FLEtBQUssRUFBRTNCLEdBQUcsQ0FBQ3BHLEVBQUUsRUFBRVQsTUFBTTtNQUFFLGdCQUV6RG5ELE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQ2xXLGlCQUFBLENBQUE0QixPQUFnQjtRQUNia0gsSUFBSSxFQUFFQSxJQUFLO1FBQ1g0UixVQUFVLEVBQUVsRixlQUFnQjtRQUM1QnhKLE1BQU0sRUFBRXlMLHNCQUFzQixDQUFDaFYsTUFBTSxDQUFFO1FBQ3ZDbUUsTUFBTSxFQUFFVixLQUFLLENBQUNVLE1BQU87UUFDckJnTSxNQUFNLEVBQUUsQ0FBQzFNLEtBQUssQ0FBQ2dVLFFBQVEsSUFBSSxDQUFDNVEsR0FBRyxDQUFDMkssUUFBUSxJQUFJLEdBQUE2RixtQkFBQSxHQUFDeFEsR0FBRyxDQUFDNkssY0FBYyxjQUFBMkYsbUJBQUEsZUFBbEJBLG1CQUFBLENBQXFCclgsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVTLEVBQUUsQ0FBQyxJQUFHVCxNQUFNLENBQUNtUSxNQUFNLEdBQUcsSUFBSztRQUNyRytILFdBQVcsRUFBRTVGLFVBQVc7UUFDeEJqTyxRQUFRLEVBQUVzUCxjQUFlO1FBQ3pCd0UsU0FBUyxFQUFFblksTUFBTSxDQUFDbVksU0FBVTtRQUM1QjdFLGtCQUFrQixFQUFFcEIsbUJBQW9CO1FBQ3hDa0csWUFBWSxFQUFFcFksTUFBTztRQUNyQjRILFdBQVcsRUFBRSxDQUFDbEgsY0FBSyxDQUFDQyxNQUFNLENBQUNYLE1BQU0sQ0FBQzRILFdBQVcsQ0FBQyxHQUFHNUgsTUFBTSxDQUFDNEgsV0FBVyxHQUFHNUgsTUFBTSxDQUFDUyxFQUFHO1FBQ2hGb0csR0FBRyxFQUFFQSxHQUFJO1FBQ1R3UixXQUFXLEVBQUVyWSxNQUFNLENBQUN3TixTQUFTLE1BQUE4SixjQUFBLEdBQUl0WCxNQUFNLENBQUNtUSxNQUFNLGNBQUFtSCxjQUFBLHVCQUFiQSxjQUFBLENBQWU5SixTQUFTLENBQUM7UUFDMUQ4SyxhQUFhLEVBQUV0WSxNQUFNLENBQUNzWSxhQUFjO1FBQ3BDN1QsUUFBUSxFQUFFQTtNQUFTLENBQ3RCLENBQ0QsQ0FBQztJQUFBLENBRWhCLENBQ0QsQ0FBQztFQUViLENBQUMsQ0FDRSxDQUNKLENBQ04sQ0FBQyxFQUVEL0QsY0FBSyxDQUFDQyxNQUFNLEVBQUFnRCxxQkFBQSxHQUFDRixLQUFLLENBQUNRLE1BQU0sQ0FBQzVELFVBQVUsY0FBQXNELHFCQUFBLHVCQUF2QkEscUJBQUEsQ0FBeUI0VSxVQUFVLENBQUMsS0FBSzdYLGNBQUssQ0FBQ0MsTUFBTSxDQUFDOEMsS0FBSyxDQUFDOFUsVUFBVSxDQUFDLElBQUk5VSxLQUFLLENBQUM4VSxVQUFVLEtBQUssSUFBSSxDQUFDLElBQy9HLENBQUEzVSxzQkFBQSxHQUFBSCxLQUFLLENBQUNRLE1BQU0sQ0FBQzVELFVBQVUsY0FBQXVELHNCQUFBLGVBQXZCQSxzQkFBQSxDQUF5QjJVLFVBQVUsSUFBSSxFQUFBMVUsc0JBQUEsR0FBQUosS0FBSyxDQUFDUSxNQUFNLENBQUM1RCxVQUFVLGNBQUF3RCxzQkFBQSx1QkFBdkJBLHNCQUFBLENBQXlCMlUsU0FBUyxNQUFLLElBQUssZ0JBQ25GM2IsTUFBQSxDQUFBc0MsT0FBQSxDQUFBc1UsYUFBQTtJQUFLcEMsU0FBUyxFQUFDO0VBQXNCLGdCQUNqQ3hVLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQXNVLGFBQUEsQ0FBQ2pXLGdCQUFBLENBQUEyQixPQUFlO0lBQ1prUyxTQUFTLEVBQUUsdUJBQXdCO0lBQ25Dak0sa0JBQWtCLEVBQUVBLGtCQUFtQjtJQUN2QzBKLFNBQVMsRUFBQyxLQUFLO0lBQ2YySixLQUFLLEVBQUVsVSxpQkFBa0I7SUFDekJnQixXQUFXLEVBQUVBLFdBQVk7SUFDekJiLElBQUksRUFBRUEsSUFBSztJQUNYZ1UsbUJBQW1CLEVBQUU7TUFDakIsWUFBWSxFQUFFO0lBQ2xCLENBQUU7SUFDRkMsbUJBQW1CLEVBQUU7TUFDakIsWUFBWSxFQUFFO0lBQ2xCLENBQUU7SUFDRkMsWUFBWSxFQUFFbkwsZ0JBQWlCO0lBQy9Cb0wsbUJBQW1CLEVBQUVqTDtFQUF3QixDQUNoRCxDQUNBLENBQUMsR0FFTixJQUVQLENBQUMsR0FFVixJQUVQLENBQUM7QUFFZCxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -40,14 +40,25 @@ function getDocsBase() {
|
|
|
40
40
|
return location + _ApplicationManager.default.getContextRoot() + DOCSVC;
|
|
41
41
|
}
|
|
42
42
|
function getServiceUrl() {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
// Syncfusion's DocumentEditor uses this prop as a BASE and directly
|
|
44
|
+
// concatenates the action name onto it (Import, SystemClipboard,
|
|
45
|
+
// SpellCheck, ExportSFDT, ...). So we must return JUST the base —
|
|
46
|
+
// trailing slash so the appended action lands as a clean path
|
|
47
|
+
// segment, not as a continuation of the previous segment.
|
|
48
|
+
//
|
|
49
|
+
// We intentionally do NOT append "/Import" here. The explicit POST
|
|
50
|
+
// at the `props.file?.base64` fetch lower in the component builds
|
|
51
|
+
// its own /Import URL with header-based auth; the editor's internal
|
|
52
|
+
// calls (notably SystemClipboard, which fires on rich-content
|
|
53
|
+
// pastes from Word) need clean base + action composition.
|
|
54
|
+
//
|
|
55
|
+
// Auth via query string is also intentionally absent — concatenating
|
|
56
|
+
// the action name onto a URL that already carries `?token=...` would
|
|
57
|
+
// corrupt both the query string and the action path. If a deployment
|
|
58
|
+
// ever routes this through a gateway that enforces auth, register an
|
|
59
|
+
// HttpClient interceptor on the DocumentEditor instance to add the
|
|
60
|
+
// header rather than reintroducing the query-param approach.
|
|
61
|
+
return "".concat(getDocsBase(), "/");
|
|
51
62
|
}
|
|
52
63
|
_ej2ReactDocumenteditor.DocumentEditorContainerComponent.Inject(_ej2ReactDocumenteditor.Toolbar);
|
|
53
64
|
const LEVEL_FMT = ['%1.', '%1.%2.', '%1.%2.%3.'];
|
|
@@ -192,7 +203,7 @@ const WordDocumentViewer = props => {
|
|
|
192
203
|
tooltipText: 'Italic',
|
|
193
204
|
prefixIcon: 'e-icons e-italic',
|
|
194
205
|
command: 'Italic'
|
|
195
|
-
}, "Separator", "Image", "Table", "Separator", "Header", "Footer", "PageSetup", "
|
|
206
|
+
}, "Separator", "Image", "Table", "Separator", "Header", "Footer", "PageSetup", "Break", "PageNumber", "InsertFootnote", "Separator", "Find", "Separator", "Comments"];
|
|
196
207
|
if (props.enableUpload) {
|
|
197
208
|
toolbarItems.unshift("Open");
|
|
198
209
|
}
|
|
@@ -426,6 +437,45 @@ const WordDocumentViewer = props => {
|
|
|
426
437
|
//autoSave();
|
|
427
438
|
|
|
428
439
|
const editor = container.documentEditor;
|
|
440
|
+
|
|
441
|
+
// Inject our auth headers onto every XHR Syncfusion fires
|
|
442
|
+
// internally (Import / SystemClipboard / SpellCheck /
|
|
443
|
+
// ExportSFDT / RestrictEditing). Without this, requests to a
|
|
444
|
+
// gateway-protected docs service come back 401 and the
|
|
445
|
+
// editor silently swallows the failure — most visibly on
|
|
446
|
+
// rich-content paste from Word, which routes through
|
|
447
|
+
// SystemClipboard. Reading the tokens at fire time (not at
|
|
448
|
+
// setup) so token refreshes are picked up.
|
|
449
|
+
editor.beforeXmlHttpRequestSend = args => {
|
|
450
|
+
const accessToken = sessionStorage.getItem('accessToken');
|
|
451
|
+
const idToken = sessionStorage.getItem('idToken');
|
|
452
|
+
|
|
453
|
+
// REPLACE args.headers rather than push() — Syncfusion's
|
|
454
|
+
// internal AjaxHelper reuses the same args.headers array
|
|
455
|
+
// across requests (and in dev StrictMode the effect runs
|
|
456
|
+
// twice), so pushing compounds the entries. With a full
|
|
457
|
+
// JWT bearer per duplicate the request rapidly exceeds
|
|
458
|
+
// nginx's 8KB header buffer and the gateway returns 431
|
|
459
|
+
// Request Header Fields Too Large; the browser then
|
|
460
|
+
// reports the symptom as a CORS failure because the 431
|
|
461
|
+
// response carries no Access-Control-Allow-Origin.
|
|
462
|
+
//
|
|
463
|
+
// Each pushed object's PROPERTY NAME becomes the HTTP
|
|
464
|
+
// header name on the wire (AjaxHelper does
|
|
465
|
+
// `for (const k in h) xhr.setRequestHeader(k, h[k])`).
|
|
466
|
+
const headers = [];
|
|
467
|
+
if (accessToken) {
|
|
468
|
+
headers.push({
|
|
469
|
+
'Authorization': 'Bearer ' + accessToken
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
if (idToken) {
|
|
473
|
+
headers.push({
|
|
474
|
+
'idToken': idToken
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
args.headers = headers;
|
|
478
|
+
};
|
|
429
479
|
editor.addEventListener('keyDown', args => {
|
|
430
480
|
const e = args.event;
|
|
431
481
|
|
|
@@ -663,4 +713,4 @@ const WordDocumentViewer = props => {
|
|
|
663
713
|
}));
|
|
664
714
|
};
|
|
665
715
|
var _default = exports.default = WordDocumentViewer;
|
|
666
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RQcm9taXNlVHJhY2tlciIsIl9VdGlscyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZWoyUmVhY3REb2N1bWVudGVkaXRvciIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfZWoyQmFzZSIsIl9BbGVydCIsIl9Mb3R0aWVJY29uIiwiX3VzZVJlc2l6ZU9ic2VydmVyIiwiX3VzZU9uRnVsbHlWaXNpYmxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiS0VZIiwiZXhwb3J0cyIsInJlZ2lzdGVyTGljZW5zZSIsInJlc29sdmVMb2NhdGlvbiIsImNvbnNvbGUiLCJsb2ciLCJwcm9jZXNzIiwiZW52IiwiUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1QiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJyZXNvbHZlRG9jU3ZjIiwiUkVBQ1RfQVBQX0RPQ1NfQVBJX1BBVEgiLCJET0NTVkMiLCJnZXREb2NzQmFzZSIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldENvbnRleHRSb290IiwiZ2V0U2VydmljZVVybCIsImFjY2Vzc1Rva2VuIiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwiaWRUb2tlbiIsImJhc2UiLCJjb25jYXQiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJxcyIsInRvU3RyaW5nIiwiRG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQiLCJJbmplY3QiLCJUb29sYmFyIiwiTEVWRUxfRk1UIiwiYXBwbHlMZXZlbCIsImVkIiwibGV2ZWwiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJkZXB0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJzZWxlY3Rpb24iLCJwYXJhZ3JhcGhGb3JtYXQiLCJsaXN0TGV2ZWxOdW1iZXIiLCJhcHBseU51bWJlcmluZyIsInVzZUR5bmFtaWNTeW5jZnVzaW9uSGVpZ2h0IiwicGFyZW50UmVmIiwiY29udGFpbmVyUmVmIiwiaGVpZ2h0Iiwic2V0SGVpZ2h0IiwidXNlU3RhdGUiLCJtZWFzdXJlIiwidXNlQ2FsbGJhY2siLCJjdXJyZW50IiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIm5ld0hlaWdodCIsImZsb29yIiwidXNlUmVzaXplT2JzZXJ2ZXIiLCJ1c2VFZmZlY3QiLCJyZXNpemUiLCJkb2N1bWVudEVkaXRvciIsIldvcmREb2N1bWVudFZpZXdlciIsInByb3BzIiwiY29udGFpbmVyIiwic2V0Q29udGFpbmVyIiwiUmVhY3QiLCJpdGVtcyIsInNldEl0ZW1zIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJyZVJlbmRlcmluZyIsInNldFJlUmVuZGVyaW5nIiwianNvbiIsInNldEpzb24iLCJlcnJvck1lc3NhZ2UiLCJzZXRFcnJvck1lc3NhZ2UiLCJjdXJyZW50VGV4dCIsInVzZVJlZiIsImFjdGl2ZUFuY2hvclJlZiIsImFuY2hvckVuZCIsImRlbGV0ZUxvY2tSZWYiLCJsb2FkaW5nIiwidXNlT25GdWxseVZpc2libGUiLCJlbCIsImVkaXRvckhlaWdodCIsImlzUG9pbnRJbnNpZGVFbGVtZW50IiwieCIsInkiLCJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJnZXRWaWV3ZXJFbGVtZW50IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImlkIiwiaXNOYXZpZ2F0aW9uS2V5IiwiaW5jbHVkZXMiLCJrZXkiLCJub3JtYWxpemVBbmNob3IiLCJ2YWx1ZSIsInJlcGxhY2UiLCJ2aWV3ZXJFbGVtZW50IiwiaW5zZXJ0UmVhZG9ubHlBbmNob3IiLCJldmVudERhdGEiLCJkcm9wUG9zaXRpb24iLCJkb2MiLCJlZGl0b3IiLCJzZWwiLCJjYXJldE9mZnNldCIsInN0YXJ0T2Zmc2V0IiwiZXhpc3RpbmdBbmNob3IiLCJncmFiQW5jaG9yV2l0aEJvdW5kcyIsImF0U3RhcnQiLCJhdEVuZCIsImVuZE9mZnNldCIsIndhcm4iLCJ0b2tlbiIsImluc2VydFRleHQiLCJkcm9wRGF0YSIsImFwaSIsImdldFZhbHVlIiwic2F2ZUFzQmFzZTY0IiwidmFsdWVIYW5kbGVyIiwibnVtYmVyaW5nSXRlbXMiLCJ0ZXh0Iiwic2VwYXJhdG9yIiwidG9vbGJhckl0ZW1zIiwiY29tbWVudHNPbmx5IiwidG9vbHRpcFRleHQiLCJwcmVmaXhJY29uIiwiY29tbWFuZCIsImVuYWJsZVVwbG9hZCIsInVuc2hpZnQiLCJfcHJvcHMkZmlsZSIsImZpbGUiLCJiYXNlNjQiLCJhcnJheUJ1ZmZlciIsIlV0aWxzIiwiYmFzZTY0VG9BcnJheUJ1ZmZlciIsIkJsb2IiLCJ0eXBlIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImFwcGVuZCIsInRyYWNrUHJvbWlzZSIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJ0aGVuIiwicmVzcG9uc2UiLCJ0aW1lciIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJzZXR1cENvbnRhaW5lciIsImN1cnJlbnRVc2VyIiwiZ2V0VXNlckRldGFpbHMiLCJuYW1lIiwic3VybmFtZSIsImFsbG93VW5yZXNvbHZlZENoYW5nZXMiLCJyZXZpc2lvbnMiLCJfcHJvcHMkZmlsZTIiLCJfcHJvcHMkZmlsZTMiLCJzdG9wUHJvdGVjdGlvbiIsImJsb2IiLCJzYXZlQXNCbG9iIiwiZW5mb3JjZVByb3RlY3Rpb24iLCJGaWxlIiwiZXh0cmFjdERvY3VtZW50VGV4dCIsIm9yaWdpbmFsU3RhcnQiLCJvcmlnaW5hbEVuZCIsInNlbGVjdEFsbCIsImdldFRleHQiLCJzZWxlY3QiLCJleHRyYWN0QW5jaG9yVG9rZW5zIiwicmVnZXgiLCJ0b2tlbnMiLCJTZXQiLCJtYXRjaCIsImV4ZWMiLCJhZGQiLCJBcnJheSIsImZyb20iLCJpc0NhcmV0V2l0aGluUmFuZ2UiLCJjYXJldCIsInN0YXJ0IiwiZW5kIiwicGFyYWdyYXBoIiwieEluIiwieUluIiwiZGVsZXRlQ3VycmVudEFuY2hvciIsImRvY0VkaXRvciIsImFuY2hvciIsInVwZGF0ZUFjdGl2ZUFuY2hvciIsInNjYW5SaWdodFVudGlsQW5jaG9yIiwib3JpZ2luT2Zmc2V0IiwibWF4U2NhbiIsImJ1bXBPZmZzZXQiLCJjaCIsInRlc3QiLCJuZXh0Iiwic2NhbkxlZnRVbnRpbEFuY2hvciIsInByZXYiLCJnZXRDaGFyQXQiLCJvZmZzZXQiLCJpc0NhcmV0SW1tZWRpYXRlbHlCZWZvcmVBbmNob3JTdGFydCIsImMwIiwiYzEiLCJpc0NhcmV0SW1tZWRpYXRlbHlBZnRlckFuY2hvciIsInNlbGVjdEN1cnJlbnRXb3JkIiwic2NhblN0YXJ0IiwiaXNDYXJldEF0RW5kIiwiZGVsdGEiLCJwYXJ0cyIsInNwbGl0IiwiaWR4IiwicGFyc2VJbnQiLCJqb2luIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFyZ3MiLCJldmVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImVkaXRvckhpc3RvcnkiLCJ1bmRvIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjdHJsS2V5IiwibWV0YUtleSIsIm9uTW91c2VVcCIsImNsaWVudFgiLCJjbGllbnRZIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50Q2hhbmdlIiwiZW5hYmxlVHJhY2tDaGFuZ2VzIiwiaXNOdWxsIiwidHJhY2tDaGFuZ2VzIiwicmVhZE9ubHkiLCJpc1JlYWRPbmx5IiwidmFsdWVDaGFuZ2VIYW5kbGVyIiwiZGlzYWJsZUFjY2VwdENoYW5nZXMiLCJhY2NlcHRCdXR0b25zIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImFjY2VwdEJ1dHRvbiIsInBhcmVudEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsImRpc2FibGVSZWplY3RDaGFuZ2VzIiwicmVqZWN0QnV0dG9ucyIsInJlamVjdEJ1dHRvbiIsIm9wZW4iLCJvblRvb2xiYXJDbGljayIsIl9jb250YWluZXIkZG9jdW1lbnRFZCIsIml0ZW0iLCJhcHBseUJ1bGxldCIsImNsZWFyTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJzdHlsZSIsInJlZiIsIndpZHRoIiwiZmxleFdyYXAiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkNvbnRlbnQiLCJwYWRkaW5nIiwibWF4SGVpZ2h0IiwidmFyaWFudCIsInNob3ciLCJvbkNsb3NlIiwiZGlzbWlzc2libGUiLCJ3aXRoIiwiY29sb3IiLCJzY29wZSIsImNyZWF0ZWQiLCJlbmFibGVQZXJzaXN0ZW5jZSIsInRvb2xiYXJDbGljayIsInJlc3RyaWN0RWRpdGluZyIsInNob3dQcm9wZXJ0aWVzUGFuZSIsImVuYWJsZUF1dG9Gb2N1cyIsInNlcnZpY2VVcmwiLCJlbmFibGVUb29sYmFyIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvV29yZERvY3VtZW50Vmlld2VyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt0cmFja1Byb21pc2V9IGZyb20gXCJyZWFjdC1wcm9taXNlLXRyYWNrZXJcIjtcbmltcG9ydCBVdGlscyBmcm9tIFwiLi4vVXRpbHNcIjtcbmltcG9ydCB7RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQsIFRvb2xiYXJ9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1yZWFjdC1kb2N1bWVudGVkaXRvcic7XG5pbXBvcnQgXCIuL0RvY3VtZW50VGVtcGxhdGVEZXNpZ25lckNvbXBvbmVudC5jc3NcIlxuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tIFwiLi4vQXBwbGljYXRpb25NYW5hZ2VyXCI7XG5pbXBvcnQge3JlZ2lzdGVyTGljZW5zZX0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1iYXNlXCI7XG5pbXBvcnQgQWxlcnQgZnJvbSBcInJlYWN0LWJvb3RzdHJhcC9BbGVydFwiO1xuaW1wb3J0IExvdHRpZUljb24gZnJvbSBcIi4vTG90dGllSWNvblwiO1xuaW1wb3J0IFwiLi9Xb3JkRG9jdW1lbnRWaWV3ZXIuY3NzXCJcbmltcG9ydCB7dXNlU3RhdGUsIHVzZUNhbGxiYWNrfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlUmVzaXplT2JzZXJ2ZXJ9IGZyb20gXCIuL29ic2VydmVycy91c2VSZXNpemVPYnNlcnZlclwiO1xuaW1wb3J0IHt1c2VPbkZ1bGx5VmlzaWJsZX0gZnJvbSBcIi4vb2JzZXJ2ZXJzL3VzZU9uRnVsbHlWaXNpYmxlXCI7XG5cbmV4cG9ydCBjb25zdCBLRVkgPSAnTmdvOUJpZ0JPZ2dqSFRReEFSOC9WMUpHYUY1Y1hHcENmMUZwUm1KR2RsZDVmVVZIWVZaVVRYeGFTMDBETkhWUmRrZGxXWDVjZUhWUlEyQllVVWR3WDBOV1lFcz0nO1xucmVnaXN0ZXJMaWNlbnNlKEtFWSk7XG5cbmZ1bmN0aW9uIHJlc29sdmVMb2NhdGlvbigpIHtcbiAgICBjb25zb2xlLmxvZyhcIlJFU09MVkUgRE9DIEhPU1QgOiBcIiwgcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1QpO1xuICAgIGlmIChwcm9jZXNzLmVudi5SRUFDVF9BUFBfRE9DU19BUElfSE9TVCkge1xuICAgICAgICByZXR1cm4gcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVEb2NTdmMoKSB7XG4gICAgY29uc29sZS5sb2coXCJSRVNPTFZFIERPQyBQQVRIIDogXCIsIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9QQVRIKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX1BBVEgpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9QQVRIO1xuICAgIH1cblxuICAgIHJldHVybiBcIi9kb2NzL2FwaS92MS9zeW5jZnVzaW9uXCI7XG59XG5cbmV4cG9ydCBjb25zdCBsb2NhdGlvbiA9IHJlc29sdmVMb2NhdGlvbigpO1xuZXhwb3J0IGNvbnN0IERPQ1NWQyA9IHJlc29sdmVEb2NTdmMoKTtcblxuZnVuY3Rpb24gZ2V0RG9jc0Jhc2UoKSB7XG4gICAgcmV0dXJuIGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCkgKyBET0NTVkM7XG59XG5cbmZ1bmN0aW9uIGdldFNlcnZpY2VVcmwoKSB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpO1xuICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG4gICAgY29uc3QgYmFzZSA9IGAke2dldERvY3NCYXNlKCl9L0ltcG9ydGA7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChhY2Nlc3NUb2tlbikgcGFyYW1zLnNldCgnYWNjZXNzX3Rva2VuJywgYWNjZXNzVG9rZW4pO1xuICAgIGlmIChpZFRva2VuKSBwYXJhbXMuc2V0KCdpZF90b2tlbicsIGlkVG9rZW4pO1xuICAgIGNvbnN0IHFzID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHFzID8gYCR7YmFzZX0/JHtxc31gIDogYmFzZTtcbn1cblxuRG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQuSW5qZWN0KFRvb2xiYXIpO1xuXG5jb25zdCBMRVZFTF9GTVQgPSBbJyUxLicsICclMS4lMi4nLCAnJTEuJTIuJTMuJ107XG5cbmZ1bmN0aW9uIGFwcGx5TGV2ZWwoZWQsIGxldmVsID0gMCkge1xuICAgIGNvbnN0IGRlcHRoID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obGV2ZWwsIExFVkVMX0ZNVC5sZW5ndGggLSAxKSk7XG4gICAgZWQuc2VsZWN0aW9uLnBhcmFncmFwaEZvcm1hdC5saXN0TGV2ZWxOdW1iZXIgPSBkZXB0aDtcbiAgICBlZC5hcHBseU51bWJlcmluZyhMRVZFTF9GTVRbZGVwdGhdLCAnQXJhYmljJyk7XG59XG5cbmZ1bmN0aW9uIHVzZUR5bmFtaWNTeW5jZnVzaW9uSGVpZ2h0KHBhcmVudFJlZiwgY29udGFpbmVyUmVmKSB7XG4gICAgY29uc3QgW2hlaWdodCwgc2V0SGVpZ2h0XSA9IHVzZVN0YXRlKDApO1xuXG4gICAgY29uc3QgbWVhc3VyZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKCFwYXJlbnRSZWYuY3VycmVudCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJlY3QgPSBwYXJlbnRSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5mbG9vcihyZWN0LmhlaWdodCk7XG5cbiAgICAgICAgaWYgKG5ld0hlaWdodCA+IDAgJiYgbmV3SGVpZ2h0ICE9PSBoZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTUVBU1VSRSA6IFwiLCBuZXdIZWlnaHQpO1xuICAgICAgICAgICAgc2V0SGVpZ2h0KG5ld0hlaWdodCk7XG4gICAgICAgIH1cbiAgICB9LCBbcGFyZW50UmVmLCBoZWlnaHRdKTtcblxuICAgIC8vIPCflIEgUmVzaXplIG9ic2VydmVyXG4gICAgdXNlUmVzaXplT2JzZXJ2ZXIocGFyZW50UmVmLCBtZWFzdXJlKTtcblxuICAgIC8vIOKaoSBTeW5jZnVzaW9uIHJlc2l6ZSB0cmlnZ2VyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lclJlZi5jdXJyZW50ICYmIGhlaWdodCA+IDApIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQuZG9jdW1lbnRFZGl0b3IucmVzaXplKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy8gc2lsZW50XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbaGVpZ2h0LCBjb250YWluZXJSZWZdKTtcblxuICAgIHJldHVybiBoZWlnaHQ7XG59XG5cbmNvbnN0IFdvcmREb2N1bWVudFZpZXdlciA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtjb250YWluZXIsIHNldENvbnRhaW5lcl0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtyZVJlbmRlcmluZywgc2V0UmVSZW5kZXJpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtqc29uLCBzZXRKc29uXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtlcnJvck1lc3NhZ2UsIHNldEVycm9yTWVzc2FnZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjdXJyZW50VGV4dCA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhY3RpdmVBbmNob3JSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgYW5jaG9yRW5kID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBkZWxldGVMb2NrUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBsb2FkaW5nID0gdXNlUmVmKHRydWUpO1xuICAgIGNvbnN0IHBhcmVudFJlZiA9IHVzZU9uRnVsbHlWaXNpYmxlKChlbCkgPT4ge1xuICAgICAgICBpZiAoIXJlUmVuZGVyaW5nKSB7XG4gICAgICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgICAgIHNldFJlUmVuZGVyaW5nKHRydWUpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZWRpdG9ySGVpZ2h0ID0gdXNlRHluYW1pY1N5bmNmdXNpb25IZWlnaHQocGFyZW50UmVmLCBjb250YWluZXJSZWYpO1xuXG4gICAgZnVuY3Rpb24gaXNQb2ludEluc2lkZUVsZW1lbnQoeCwgeSwgZWwpIHtcbiAgICAgICAgaWYgKCFlbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHggPj0gcmVjdC5sZWZ0ICYmXG4gICAgICAgICAgICB4IDw9IHJlY3QucmlnaHQgJiZcbiAgICAgICAgICAgIHkgPj0gcmVjdC50b3AgJiZcbiAgICAgICAgICAgIHkgPD0gcmVjdC5ib3R0b21cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWaWV3ZXJFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICBgJHtwcm9wcy5pZH0tY29udGFpbmVyX2VkaXRvcl92aWV3ZXJDb250YWluZXJgXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOYXZpZ2F0aW9uS2V5KGUpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdBcnJvd1VwJywgJ0Fycm93RG93bicsXG4gICAgICAgICAgICAnSG9tZScsICdFbmQnLCAnUGFnZVVwJywgJ1BhZ2VEb3duJ1xuICAgICAgICBdLmluY2x1ZGVzKGUua2V5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVBbmNob3IodmFsdWUpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLnJlcGxhY2UoL15cXFtcXFt8XFxdXFxdJC9nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9ePDx8Pj4kL2csICcnKTtcbiAgICB9XG5cbiAgICBsZXQgdmlld2VyRWxlbWVudCA9IGdldFZpZXdlckVsZW1lbnQoKTtcblxuICAgIGZ1bmN0aW9uIGluc2VydFJlYWRvbmx5QW5jaG9yKGV2ZW50RGF0YSwgZHJvcFBvc2l0aW9uKSB7XG4gICAgICAgIGlmICghY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcikgcmV0dXJuO1xuICAgICAgICBpZiAoIWRyb3BQb3NpdGlvbikgcmV0dXJuO1xuXG4gICAgICAgIGlmICghaXNQb2ludEluc2lkZUVsZW1lbnQoZHJvcFBvc2l0aW9uLngsIGRyb3BQb3NpdGlvbi55LCB2aWV3ZXJFbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZG9jID0gY29udGFpbmVyLmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBlZCA9IGRvYy5lZGl0b3I7XG4gICAgICAgIGNvbnN0IHNlbCA9IGRvYy5zZWxlY3Rpb247XG4gICAgICAgIGlmICghZWQgfHwgIXNlbCkgcmV0dXJuO1xuXG4gICAgICAgIC8vIFJlamVjdCBkcm9wIGlmIGN1cnNvciBpcyBzdHJpY3RseSBpbnNpZGUgYW4gZXhpc3RpbmcgYW5jaG9yXG4gICAgICAgIC8vIEFsbG93IGRyb3BwaW5nIGF0IHRoZSBleGFjdCBzdGFydCBvciBlbmQgYm91bmRhcnlcbiAgICAgICAgY29uc3QgY2FyZXRPZmZzZXQgPSBzZWwuc3RhcnRPZmZzZXQ7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQW5jaG9yID0gZ3JhYkFuY2hvcldpdGhCb3VuZHMoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQW5jaG9yKSB7XG4gICAgICAgICAgICBjb25zdCBhdFN0YXJ0ID0gY2FyZXRPZmZzZXQgPT09IGV4aXN0aW5nQW5jaG9yLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgY29uc3QgYXRFbmQgPSBjYXJldE9mZnNldCA9PT0gZXhpc3RpbmdBbmNob3IuZW5kT2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCFhdFN0YXJ0ICYmICFhdEVuZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkRyb3AgcmVqZWN0ZWQg4oCUIGN1cnNvciBpcyBpbnNpZGUgYW5jaG9yOiBcIiArIGV4aXN0aW5nQW5jaG9yLnRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b2tlbiA9IGBbWyR7bm9ybWFsaXplQW5jaG9yKGV2ZW50RGF0YSl9XV1gO1xuICAgICAgICBlZC5pbnNlcnRUZXh0KHRva2VuKTtcbiAgICB9XG5cbiAgICBjb25zdCBkcm9wRGF0YSA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXRWYWx1ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzYXZlQXNCYXNlNjQoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGluc2VydFJlYWRvbmx5QW5jaG9yOiBhc3luYyAodmFsdWUsIGRyb3BQb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGRyb3BEYXRhLmN1cnJlbnQgPSB7dmFsdWUsIGRyb3BQb3NpdGlvbn07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLnZhbHVlSGFuZGxlci5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG51bWJlcmluZ0l0ZW1zID0gW1xuICAgICAgICB7aWQ6ICdsdmwtMCcsIHRleHQ6ICcxLid9LFxuICAgICAgICB7aWQ6ICdsdmwtMScsIHRleHQ6ICcxLjEnfSxcbiAgICAgICAge2lkOiAnbHZsLTInLCB0ZXh0OiAnMS4xLjEnfSxcbiAgICAgICAge3NlcGFyYXRvcjogdHJ1ZX0sXG4gICAgICAgIHtpZDogJ2NsZWFyJywgdGV4dDogJ0NsZWFyIGxpc3QnfSxcbiAgICBdO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IHRvb2xiYXJJdGVtcyA9IHByb3BzLmNvbW1lbnRzT25seSA/XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJDb21tZW50c1wiXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICA6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJVbmRvXCIsXG4gICAgICAgICAgICAgICAgXCJSZWRvXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICB7aWQ6ICdidWxsZXRzJywgdGV4dDogJ+KAoiBCdWxsZXRzJywgdG9vbHRpcFRleHQ6ICdCdWxsZXRlZCBsaXN0J30sXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICB7dG9vbHRpcFRleHQ6ICdCb2xkJywgcHJlZml4SWNvbjogJ2UtaWNvbnMgZS1ib2xkJywgY29tbWFuZDogJ0JvbGQnfSxcbiAgICAgICAgICAgICAgICB7dG9vbHRpcFRleHQ6ICdJdGFsaWMnLCBwcmVmaXhJY29uOiAnZS1pY29ucyBlLWl0YWxpYycsIGNvbW1hbmQ6ICdJdGFsaWMnfSxcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiSW1hZ2VcIixcbiAgICAgICAgICAgICAgICBcIlRhYmxlXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkhlYWRlclwiLFxuICAgICAgICAgICAgICAgIFwiRm9vdGVyXCIsXG4gICAgICAgICAgICAgICAgXCJQYWdlU2V0dXBcIixcbiAgICAgICAgICAgICAgICBcIlBhZ2VOdW1iZXJcIixcbiAgICAgICAgICAgICAgICBcIkJyZWFrXCIsXG4gICAgICAgICAgICAgICAgXCJJbnNlcnRGb290bm90ZVwiLFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJGaW5kXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkNvbW1lbnRzXCJcbiAgICAgICAgICAgIF1cblxuICAgICAgICBpZiAocHJvcHMuZW5hYmxlVXBsb2FkKSB7XG4gICAgICAgICAgICB0b29sYmFySXRlbXMudW5zaGlmdChcIk9wZW5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRJdGVtcyh0b29sYmFySXRlbXMpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5maWxlPy5iYXNlNjQpIHtcbiAgICAgICAgICAgIGxldCBiYXNlNjQgPSBwcm9wcy5maWxlLmJhc2U2NDtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gVXRpbHMuYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjQpO1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFthcnJheUJ1ZmZlcl0sIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy5maWxlLnR5cGVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlcycsIGZpbGUsICdkb2N1bWVudC5kb2N4Jyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG5cbiAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICBmZXRjaChcbiAgICAgICAgICAgICAgICAgICAgYCR7Z2V0RG9jc0Jhc2UoKX0vSW1wb3J0YCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRUb2tlbic6IGlkVG9rZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cmFja1Byb21pc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbigoanNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEpzb24oanNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMuZmlsZV0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHJlUmVuZGVyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHRydWUpO1xuICAgICAgICAgICAgfSwgMV8wMDApO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIH1cbiAgICB9LCBbcmVSZW5kZXJpbmddKTtcblxuICAgIGZ1bmN0aW9uIHNldHVwQ29udGFpbmVyKCkge1xuICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuY3VycmVudFVzZXIgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5uYW1lICsgXCIgXCIgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5zdXJuYW1lO1xuICAgIH1cblxuICAgIGNvbnN0IHNhdmVBc0Jhc2U2NCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmFsbG93VW5yZXNvbHZlZENoYW5nZXMgPT09IGZhbHNlICYmIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5yZXZpc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKFwiUGxlYXNlIGFjY2VwdCBvciByZWplY3QgYWxsIHN1Z2dlc3RlZCBjaGFuZ2VzXCIpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yLnN0b3BQcm90ZWN0aW9uKFwicGFzc3dvcmRcIik7XG4gICAgICAgICAgICBsZXQgYmxvYiA9IGF3YWl0IGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5zYXZlQXNCbG9iKCdEb2N4Jyk7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29tbWVudHNPbmx5KSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvci5lbmZvcmNlUHJvdGVjdGlvbigncGFzc3dvcmQnLCAnQ29tbWVudHNPbmx5Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIHByb3BzLmZpbGU/Lm5hbWUgPyBwcm9wcy5maWxlLm5hbWUgOiAnZG9jdW1lbnQuZG9jeCcsIHt0eXBlOiBwcm9wcy5maWxlPy50eXBlID8gcHJvcHMuZmlsZS50eXBlIDogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J30pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3REb2N1bWVudFRleHQoZWRpdG9yKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5jdXJyZW50KSByZXR1cm4gY3VycmVudFRleHQuY3VycmVudDtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFN0YXJ0ID0gZWRpdG9yLnNlbGVjdGlvbi5zdGFydE9mZnNldDtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxFbmQgPSBlZGl0b3Iuc2VsZWN0aW9uLmVuZE9mZnNldDtcblxuICAgICAgICBlZGl0b3Iuc2VsZWN0aW9uLnNlbGVjdEFsbCgpO1xuICAgICAgICBjb25zdCB0ZXh0ID0gZWRpdG9yLnNlbGVjdGlvbi5nZXRUZXh0KCk7XG4gICAgICAgIGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0KG9yaWdpbmFsU3RhcnQsIG9yaWdpbmFsRW5kKTtcblxuICAgICAgICBjdXJyZW50VGV4dC5jdXJyZW50ID0gdGV4dDtcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0cmFjdEFuY2hvclRva2Vucyh0ZXh0KSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gL1xcW1xcW1teXFxbXFxdXSs/XFxdXFxdL2c7XG4gICAgICAgIGNvbnN0IHRva2VucyA9IG5ldyBTZXQoKTtcbiAgICAgICAgbGV0IG1hdGNoO1xuXG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdG9rZW5zLmFkZChtYXRjaFswXSk7IC8vIGV4YWN0IFtbVEVYVF1dXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0b2tlbnMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQ2FyZXRXaXRoaW5SYW5nZShjYXJldCwgc3RhcnQsIGVuZCkge1xuICAgICAgICBpZiAoY2FyZXQucGFyYWdyYXBoICE9PSBzdGFydC5wYXJhZ3JhcGgpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCB4ID0gY2FyZXQubG9jYXRpb24ueEluO1xuICAgICAgICBjb25zdCB5ID0gY2FyZXQubG9jYXRpb24ueUluO1xuXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJDSEVDS0lORyBDQVJFVCBXSVRISU4gUkFOR0UgOiBcIiwgeCwgeSwgc3RhcnQubG9jYXRpb24ueEluLCBzdGFydC5sb2NhdGlvbi55SW4sIGVuZC5sb2NhdGlvbi54SW4sIGVuZC5sb2NhdGlvbi55SW4pO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgeSA9PT0gc3RhcnQubG9jYXRpb24ueUluICYmXG4gICAgICAgICAgICB4ID49IHN0YXJ0LmxvY2F0aW9uLnhJbiAmJlxuICAgICAgICAgICAgeCA8PSBlbmQubG9jYXRpb24ueEluXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVsZXRlQ3VycmVudEFuY2hvcihjb250YWluZXIpIHtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcjtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gZWRpdG9yPy5zZWxlY3Rpb247XG4gICAgICAgIGNvbnN0IGRvY0VkaXRvciA9IGVkaXRvcj8uZWRpdG9yO1xuXG4gICAgICAgIGNvbnN0IGFuY2hvciA9IGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWVkaXRvciB8fCAhc2VsZWN0aW9uIHx8ICFkb2NFZGl0b3IgfHwgIWFuY2hvcikgcmV0dXJuO1xuXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJFTkQgT0ZGU0VUIDogXCIsIGFuY2hvci5lbmRPZmZzZXQsIGJ1bXBPZmZzZXQoYW5jaG9yLmVuZE9mZnNldCwgLTEpKVxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiU1RBUlQgLSBFTkQgOiBcIiwgYW5jaG9yLnN0YXJ0T2Zmc2V0LCBidW1wT2Zmc2V0KGFuY2hvci5lbmRPZmZzZXQsIC0xKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KGFuY2hvci5zdGFydE9mZnNldCwgYW5jaG9yLmVuZE9mZnNldCk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiU0VMRUNUSU9OIFRFWFQgOiBcIiArIHNlbGVjdGlvbi50ZXh0KTtcbiAgICAgICAgICAgIC8vZG9jRWRpdG9yLmRlbGV0ZSgpO1xuICAgICAgICAgICAgLy9zZWxlY3Rpb24uc2VsZWN0KGFuY2hvci5zdGFydE9mZnNldCwgYW5jaG9yLnN0YXJ0T2Zmc2V0KTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcikge1xuICAgICAgICBhY3RpdmVBbmNob3JSZWYuY3VycmVudCA9IGdyYWJBbmNob3JXaXRoQm91bmRzKGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhblJpZ2h0VW50aWxBbmNob3IoZWRpdG9yLCBvcmlnaW5PZmZzZXQsIG1heFNjYW4gPSA1MDApIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBvcmlnaW5PZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhTY2FuOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1vdmUgcmlnaHRcbiAgICAgICAgICAgIGN1cnJlbnQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsICsxKTtcblxuICAgICAgICAgICAgc2VsLnNlbGVjdChjdXJyZW50LCBjdXJyZW50KTtcblxuICAgICAgICAgICAgLy8gc2VsZWN0IE9ORSBjaGFyYWN0ZXIgb25seVxuICAgICAgICAgICAgc2VsLnNlbGVjdChcbiAgICAgICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQoY3VycmVudCwgKzEpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBjaCA9IHNlbC50ZXh0O1xuXG4gICAgICAgICAgICAvLyDim5QgQmFpbCBvbiB3aGl0ZXNwYWNlIG9yIHBhcmFncmFwaCBicmVha1xuICAgICAgICAgICAgaWYgKCFjaCB8fCAvXFxzLy50ZXN0KGNoKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIERldGVjdCBjbG9zaW5nIFwiXV1cIlxuICAgICAgICAgICAgaWYgKGNoID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICAvLyBsb29rYWhlYWQgb25lIGNoYXJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gYnVtcE9mZnNldChjdXJyZW50LCArMSk7XG4gICAgICAgICAgICAgICAgc2VsLnNlbGVjdChuZXh0LCBidW1wT2Zmc2V0KG5leHQsICsxKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsLnRleHQgPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gcG9zaXRpb24gQUZURVIgXV1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1bXBPZmZzZXQoY3VycmVudCwgKzIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5MZWZ0VW50aWxBbmNob3IoZWRpdG9yLCBvcmlnaW5PZmZzZXQsIG1heFNjYW4gPSA1MDApIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBvcmlnaW5PZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhTY2FuOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsIC0xKTtcblxuICAgICAgICAgICAgLy8gc2VsZWN0IG9uZSBjaGFyIHRvIHRoZSBsZWZ0XG4gICAgICAgICAgICBzZWwuc2VsZWN0KFxuICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNoID0gc2VsLnRleHQ7XG5cbiAgICAgICAgICAgIGlmICghY2ggfHwgL1xccy8udGVzdChjaCkpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvLyBkZXRlY3QgW1tcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpO1xuICAgICAgICAgICAgICAgIHNlbC5zZWxlY3QoXG4gICAgICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQocHJldiwgLTEpLFxuICAgICAgICAgICAgICAgICAgICBwcmV2XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWwudGV4dCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIPCflJEgRklYOiBnbyBiYWNrIFRXTyBjaGFyc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVtcE9mZnNldChjdXJyZW50LCAtMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q2hhckF0KGVkaXRvciwgb2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHNlbCA9IGVkaXRvci5zZWxlY3Rpb247XG4gICAgICAgIHNlbC5zZWxlY3Qob2Zmc2V0LCBidW1wT2Zmc2V0KG9mZnNldCwgKzEpKTtcbiAgICAgICAgcmV0dXJuIHNlbC50ZXh0IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNDYXJldEltbWVkaWF0ZWx5QmVmb3JlQW5jaG9yU3RhcnQoZWRpdG9yLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYzAgPSBnZXRDaGFyQXQoZWRpdG9yLCBvZmZzZXQpO1xuICAgICAgICBjb25zdCBjMSA9IGdldENoYXJBdChlZGl0b3IsIGJ1bXBPZmZzZXQob2Zmc2V0LCArMSkpO1xuICAgICAgICByZXR1cm4gYzAgPT09ICdbJyAmJiBjMSA9PT0gJ1snOyAvLyB8W1tURVhUXV1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0NhcmV0SW1tZWRpYXRlbHlBZnRlckFuY2hvcihlZGl0b3IsIG9mZnNldCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsIC0xKSkgPT09ICddJyAmJlxuICAgICAgICAgICAgZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsIC0yKSkgPT09ICddJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdyYWJBbmNob3JXaXRoQm91bmRzKGNvbnRhaW5lcikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb250YWluZXI/LmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBlZGl0b3I/LnNlbGVjdGlvbjtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFN0YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0T2Zmc2V0O1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVuZCA9IHNlbGVjdGlvbi5lbmRPZmZzZXQ7XG5cbiAgICAgICAgc2VsZWN0aW9uLnNlbGVjdEN1cnJlbnRXb3JkKCk7XG4gICAgICAgIHNlbGVjdGlvbi5zZWxlY3Qob3JpZ2luYWxTdGFydCwgb3JpZ2luYWxFbmQpO1xuXG4gICAgICAgIC8vbGV0IHdvcmQgPSBzZWxlY3Rpb24udGV4dDtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImdyYWJBbmNob3JXaXRoQm91bmRzIFNFTEVDVElPTiBURVhUIDogXCIsIHdvcmQpO1xuXG4gICAgICAgIGxldCBzY2FuU3RhcnQgPSBvcmlnaW5hbFN0YXJ0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGlzQ2FyZXRJbW1lZGlhdGVseUJlZm9yZUFuY2hvclN0YXJ0KGVkaXRvciwgb3JpZ2luYWxTdGFydCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGlzQ2FyZXRBdEVuZCA9IGlzQ2FyZXRJbW1lZGlhdGVseUFmdGVyQW5jaG9yKGVkaXRvciwgb3JpZ2luYWxTdGFydClcbiAgICAgICAgICAgIGlmIChpc0NhcmV0QXRFbmQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiQ0FSRVQgQVQgRU5EXCIpO1xuICAgICAgICAgICAgICAgIHNjYW5TdGFydCA9IGJ1bXBPZmZzZXQob3JpZ2luYWxTdGFydCwgLTMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gc2NhbkxlZnRVbnRpbEFuY2hvcihlZGl0b3IsIHNjYW5TdGFydCk7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IHNjYW5SaWdodFVudGlsQW5jaG9yKGVkaXRvciwgc2NhblN0YXJ0KTtcblxuICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KGxlZnQsIHJpZ2h0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gc2VsZWN0aW9uLnRleHQ7XG4gICAgICAgICAgICAgICAgYW5jaG9yRW5kLmN1cnJlbnQgPSBpc0NhcmV0QXRFbmQ7XG5cbiAgICAgICAgICAgICAgICAvKmNvbnNvbGUubG9nKFwiR1JBQiBSRVNVTFQgOiBcIiwge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbjogdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogcmlnaHRcbiAgICAgICAgICAgICAgICB9KTsqL1xuXG4gICAgICAgICAgICAgICAgaWYgKC9eXFxbXFxbLis/XFxdXFxdJC8udGVzdCh0ZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46IHRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KG9yaWdpbmFsU3RhcnQsIG9yaWdpbmFsRW5kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1bXBPZmZzZXQob2Zmc2V0LCBkZWx0YSkge1xuICAgICAgICBjb25zdCBwYXJ0cyA9IG9mZnNldC5zcGxpdCgnOycpO1xuICAgICAgICBjb25zdCBpZHggPSBwYXJ0cy5sZW5ndGggLSAxO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gTWF0aC5tYXgoMCwgcGFyc2VJbnQocGFydHNbaWR4XSwgMTApICsgZGVsdGEpO1xuICAgICAgICBwYXJ0c1tpZHhdID0gdmFsdWUudG9TdHJpbmcoKTtcblxuICAgICAgICByZXR1cm4gcGFydHMuam9pbignOycpO1xuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHNldHVwQ29udGFpbmVyKCk7XG4gICAgICAgICAgICAvL2F1dG9TYXZlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnRhaW5lci5kb2N1bWVudEVkaXRvcjtcbiAgICAgICAgICAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdrZXlEb3duJywgKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gYXJncy5ldmVudDtcblxuICAgICAgICAgICAgICAgIC8vIDHvuI/ig6MgTmF2aWdhdGlvbiBrZXlzIOKGkiBpbnNwZWN0IG9ubHlcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZpZ2F0aW9uS2V5KGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJBQ1RJVkUgQU5DSE9SIDogXCIsIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJERUxFVEUgTE9DS0VEIDogXCIsIGRlbGV0ZUxvY2tSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyB8fCBlLmtleSA9PT0gJ0RlbGV0ZScpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZXRlTG9ja1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTeW5jZnVzaW9uIGFscmVhZHkgZGVsZXRlZCDihpIgcmV3aW5kIHNhZmVseVxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmVkaXRvckhpc3RvcnkudW5kbygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEFjcXVpcmUgbG9ja1xuICAgICAgICAgICAgICAgICAgICBkZWxldGVMb2NrUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbGVhc2UgbG9jayB3aGVuIGVkaXRvciBpcyBhY3R1YWxseSBzdGFibGVcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlTG9ja1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gMu+4j+KDoyBJZiB3ZSBhcmUgaW5zaWRlIGEgcmVzdHJpY3RlZCBhbmNob3JcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiYW5jaG9yRW5kLmN1cnJlbnQgOiBcIiwgYW5jaG9yRW5kLmN1cnJlbnQsIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoKGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ICYmICFpc05hdmlnYXRpb25LZXkoZSkpIHx8IGFuY2hvckVuZC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSAvIEJhY2tzcGFjZSA9IGRlbGV0ZSB3aG9sZSBhbmNob3JcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyB8fCBlLmtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZWRpdG9yLmVkaXRvckhpc3RvcnkudW5kbygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ3VycmVudEFuY2hvcihjb250YWluZXIsIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvckVuZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVMb2NrUmVmLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gYmxvY2sgd2hlbiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiBhbiBhbmNob3IuIElucHV0IHdpbGwgbmV2ZXIgZGFtYWdlIHRoZSBhbmNob3JcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlVOQkxPQ0tJTkcgOiBcIiwgYW5jaG9yRW5kLmN1cnJlbnQsIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhbmNob3JFbmQuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g8J+UkiBCbG9jayB0eXBpbmcgJiBwYXN0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUua2V5Lmxlbmd0aCA9PT0gMSB8fCAvLyBwcmludGFibGUgY2hhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY3RybEtleSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubWV0YUtleVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVBbmNob3JSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhbmNob3JFbmQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZS5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG9uTW91c2VVcCA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1BvaW50SW5zaWRlRWxlbWVudChlLmNsaWVudFgsIGUuY2xpZW50WSwgdmlld2VyRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkcm9wRGF0YS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydFJlYWRvbmx5QW5jaG9yKGRyb3BEYXRhLmN1cnJlbnQudmFsdWUsIGRyb3BEYXRhLmN1cnJlbnQuZHJvcFBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgZHJvcERhdGEuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgLy92aWV3ZXIuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB2aWV3ZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHZpZXdlckVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICAgIH1cbiAgICB9LCBbY29udGFpbmVyXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29udGFpbmVyICYmIGpzb24pIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5kb2N1bWVudENoYW5nZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZW5hYmxlVHJhY2tDaGFuZ2VzID0gIVV0aWxzLmlzTnVsbChwcm9wcy50cmFja0NoYW5nZXMpID8gcHJvcHMudHJhY2tDaGFuZ2VzIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY29tbWVudHNPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3IuZW5mb3JjZVByb3RlY3Rpb24oJ3Bhc3N3b3JkJywgJ0NvbW1lbnRzT25seScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcHMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmlzUmVhZE9ubHkgPSBwcm9wcy5yZWFkT25seTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobG9hZGluZy5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlID0gYXdhaXQgc2F2ZUFzQmFzZTY0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcihmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmcuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUZXh0LmN1cnJlbnQgPSBleHRyYWN0RG9jdW1lbnRUZXh0KGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3IpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRlbnRDaGFuZ2UnLCBhc3luYyAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5kaXNhYmxlQWNjZXB0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYWNjZXB0QnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlLWRlLXRyYWNrLWFjY2VwdC1idXR0b25cIik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYWNjZXB0QnV0dG9uIG9mIGFjY2VwdEJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdEJ1dHRvbi5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKGFjY2VwdEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuZGlzYWJsZVJlamVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlamVjdEJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZS1kZS10cmFjay1yZWplY3QtYnV0dG9uXCIpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlamVjdEJ1dHRvbiBvZiByZWplY3RCdXR0b25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3RCdXR0b24ucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChyZWplY3RCdXR0b24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGxvYWRpbmcuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IGF3YWl0IHNhdmVBc0Jhc2U2NCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50VGV4dC5jdXJyZW50ID0gZXh0cmFjdERvY3VtZW50VGV4dChjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3Iub3Blbihqc29uKTtcbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lbmFibGVUcmFja0NoYW5nZXMgPSAhVXRpbHMuaXNOdWxsKHByb3BzLnRyYWNrQ2hhbmdlcykgPyBwcm9wcy50cmFja0NoYW5nZXMgOiB0cnVlO1xuICAgICAgICAgICAgLy9jb250YWluZXIuZG9jdW1lbnRFZGl0b3IuaXNSZWFkT25seSA9IChwcm9wcy5yZWFkT25seSB8fCBwcm9wcy5jb21tZW50c09ubHkpO1xuICAgICAgICB9XG4gICAgfSwgW2pzb24sIGNvbnRhaW5lcl0pO1xuXG4gICAgY29uc3Qgb25Ub29sYmFyQ2xpY2sgPSAoYXJncykgPT4ge1xuICAgICAgICBjb25zdCBlZCA9IGNvbnRhaW5lcj8uZG9jdW1lbnRFZGl0b3I/LmVkaXRvcjtcbiAgICAgICAgaWYgKCFlZCkgcmV0dXJuO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MuaXRlbS5pZCkge1xuICAgICAgICAgICAgY2FzZSAnYnVsbGV0cyc6XG4gICAgICAgICAgICAgICAgZWQuYXBwbHlCdWxsZXQoJ1xcdWYwYjcnLCAnU3ltYm9sJyk7IC8vIOKAolxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyaW5nJzpcbiAgICAgICAgICAgICAgICBlZC5hcHBseU51bWJlcmluZygnJTEuJywgJ0FyYWJpYycpOyAvLyAxLlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGV2ZWwtMCc6XG4gICAgICAgICAgICAgICAgYXBwbHlMZXZlbChlZCwgMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXZlbC0xJzpcbiAgICAgICAgICAgICAgICBhcHBseUxldmVsKGVkLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xldmVsLTInOlxuICAgICAgICAgICAgICAgIGFwcGx5TGV2ZWwoZWQsIDIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2xlYXItbGlzdCc6XG4gICAgICAgICAgICAgICAgZWQuY2xlYXJMaXN0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gbGV0IGJ1aWx0LWlucyAoVW5kby9SZWRvL05ldy9PcGVuKSB3b3JrIG5vcm1hbGx5XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9eyduby1tYXJnaW4gbm8tcGFkZGluZyd9IHN0eWxlPXt7aGVpZ2h0OiAnMTAwJSd9fSBpZD17YHBhcmVudC1jb250YWluZXJgfSByZWY9e3BhcmVudFJlZn0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIXZpc2libGUgJiZcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICBmbGV4V3JhcDogJ3dyYXAnLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25Db250ZW50OiAnY2VudGVyJ1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICA8TG90dGllSWNvbiBpZD17J3dhaXRpbmctc20nfS8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlICYmXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMCAzMnB4IDAgMzJweCcsXG4gICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogJzY0cHgnXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxBbGVydFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17J2Rhbmdlcid9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93PXshVXRpbHMuaXNOdWxsKGVycm9yTWVzc2FnZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRFcnJvck1lc3NhZ2UobnVsbCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNtaXNzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoOiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e2Vycm9yTWVzc2FnZX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7LyogU2V0dGluZyBlbmFibGVUcmFja0NoYW5nZXMgdG8gZmFsc2UgZG9lcyBub3Qgd29yayBzbyB3ZSBkdXBsaWNhdGUgdGhlIGNvZGUqL31cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlICYmIGl0ZW1zICYmIChVdGlscy5pc051bGwocHJvcHMudHJhY2tDaGFuZ2VzKSB8fCBwcm9wcy50cmFja0NoYW5nZXMgPT09IHRydWUpICYmXG4gICAgICAgICAgICAgICAgPERvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IGlkPXtgJHtwcm9wcy5pZH0tY29udGFpbmVyYH0gaGVpZ2h0PXtlZGl0b3JIZWlnaHQgPiAwID8gYCR7ZWRpdG9ySGVpZ2h0fXB4YCA6ICcxMjAwcHgnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9eyhzY29wZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFpbmVyKHNjb3BlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gc2NvcGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQ9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVQZXJzaXN0ZW5jZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJDbGljaz17b25Ub29sYmFyQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJJdGVtcz17aXRlbXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0RWRpdGluZz17cHJvcHMucmVhZE9ubHkgJiYgIXByb3BzLmNvbW1lbnRzT25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Byb3BlcnRpZXNQYW5lPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlVHJhY2tDaGFuZ2VzPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVBdXRvRm9jdXM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVXJsPXtnZXRTZXJ2aWNlVXJsKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVRvb2xiYXI9eyEocHJvcHMucmVhZE9ubHkpIHx8IHByb3BzLmNvbW1lbnRzT25seX0vPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGUgJiYgaXRlbXMgJiYgcHJvcHMudHJhY2tDaGFuZ2VzID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgIDxEb2N1bWVudEVkaXRvckNvbnRhaW5lckNvbXBvbmVudCBpZD17YCR7cHJvcHMuaWR9LWNvbnRhaW5lcmB9IGhlaWdodD17ZWRpdG9ySGVpZ2h0ID4gMCA/IGAke2VkaXRvckhlaWdodH1weGAgOiAnMTIwMHB4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXsoc2NvcGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhaW5lcihzY29wZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IHNjb3BlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlUGVyc2lzdGVuY2U9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyQ2xpY2s9e29uVG9vbGJhckNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFySXRlbXM9e2l0ZW1zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdEVkaXRpbmc9e3Byb3BzLnJlYWRPbmx5ICYmICFwcm9wcy5jb21tZW50c09ubHl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQcm9wZXJ0aWVzUGFuZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9Gb2N1cz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VVcmw9e2dldFNlcnZpY2VVcmwoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlVG9vbGJhcj17IShwcm9wcy5yZWFkT25seSkgfHwgcHJvcHMuY29tbWVudHNPbmx5fS8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXb3JkRG9jdW1lbnRWaWV3ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLG9CQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSx1QkFBQSxHQUFBSixPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBSyxtQkFBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBSixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBTCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0FBLE9BQUE7QUFFQSxJQUFBUyxrQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsa0JBQUEsR0FBQVYsT0FBQTtBQUFnRSxT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
|
|
716
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RQcm9taXNlVHJhY2tlciIsIl9VdGlscyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZWoyUmVhY3REb2N1bWVudGVkaXRvciIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfZWoyQmFzZSIsIl9BbGVydCIsIl9Mb3R0aWVJY29uIiwiX3VzZVJlc2l6ZU9ic2VydmVyIiwiX3VzZU9uRnVsbHlWaXNpYmxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiS0VZIiwiZXhwb3J0cyIsInJlZ2lzdGVyTGljZW5zZSIsInJlc29sdmVMb2NhdGlvbiIsImNvbnNvbGUiLCJsb2ciLCJwcm9jZXNzIiwiZW52IiwiUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1QiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJyZXNvbHZlRG9jU3ZjIiwiUkVBQ1RfQVBQX0RPQ1NfQVBJX1BBVEgiLCJET0NTVkMiLCJnZXREb2NzQmFzZSIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldENvbnRleHRSb290IiwiZ2V0U2VydmljZVVybCIsImNvbmNhdCIsIkRvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IiwiSW5qZWN0IiwiVG9vbGJhciIsIkxFVkVMX0ZNVCIsImFwcGx5TGV2ZWwiLCJlZCIsImxldmVsIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZGVwdGgiLCJNYXRoIiwibWF4IiwibWluIiwic2VsZWN0aW9uIiwicGFyYWdyYXBoRm9ybWF0IiwibGlzdExldmVsTnVtYmVyIiwiYXBwbHlOdW1iZXJpbmciLCJ1c2VEeW5hbWljU3luY2Z1c2lvbkhlaWdodCIsInBhcmVudFJlZiIsImNvbnRhaW5lclJlZiIsImhlaWdodCIsInNldEhlaWdodCIsInVzZVN0YXRlIiwibWVhc3VyZSIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJuZXdIZWlnaHQiLCJmbG9vciIsInVzZVJlc2l6ZU9ic2VydmVyIiwidXNlRWZmZWN0IiwicmVzaXplIiwiZG9jdW1lbnRFZGl0b3IiLCJXb3JkRG9jdW1lbnRWaWV3ZXIiLCJwcm9wcyIsImNvbnRhaW5lciIsInNldENvbnRhaW5lciIsIlJlYWN0IiwiaXRlbXMiLCJzZXRJdGVtcyIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwicmVSZW5kZXJpbmciLCJzZXRSZVJlbmRlcmluZyIsImpzb24iLCJzZXRKc29uIiwiZXJyb3JNZXNzYWdlIiwic2V0RXJyb3JNZXNzYWdlIiwiY3VycmVudFRleHQiLCJ1c2VSZWYiLCJhY3RpdmVBbmNob3JSZWYiLCJhbmNob3JFbmQiLCJkZWxldGVMb2NrUmVmIiwibG9hZGluZyIsInVzZU9uRnVsbHlWaXNpYmxlIiwiZWwiLCJlZGl0b3JIZWlnaHQiLCJpc1BvaW50SW5zaWRlRWxlbWVudCIsIngiLCJ5IiwibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiZ2V0Vmlld2VyRWxlbWVudCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJpZCIsImlzTmF2aWdhdGlvbktleSIsImluY2x1ZGVzIiwia2V5Iiwibm9ybWFsaXplQW5jaG9yIiwidmFsdWUiLCJyZXBsYWNlIiwidmlld2VyRWxlbWVudCIsImluc2VydFJlYWRvbmx5QW5jaG9yIiwiZXZlbnREYXRhIiwiZHJvcFBvc2l0aW9uIiwiZG9jIiwiZWRpdG9yIiwic2VsIiwiY2FyZXRPZmZzZXQiLCJzdGFydE9mZnNldCIsImV4aXN0aW5nQW5jaG9yIiwiZ3JhYkFuY2hvcldpdGhCb3VuZHMiLCJhdFN0YXJ0IiwiYXRFbmQiLCJlbmRPZmZzZXQiLCJ3YXJuIiwidG9rZW4iLCJpbnNlcnRUZXh0IiwiZHJvcERhdGEiLCJhcGkiLCJnZXRWYWx1ZSIsInNhdmVBc0Jhc2U2NCIsInZhbHVlSGFuZGxlciIsIm51bWJlcmluZ0l0ZW1zIiwidGV4dCIsInNlcGFyYXRvciIsInRvb2xiYXJJdGVtcyIsImNvbW1lbnRzT25seSIsInRvb2x0aXBUZXh0IiwicHJlZml4SWNvbiIsImNvbW1hbmQiLCJlbmFibGVVcGxvYWQiLCJ1bnNoaWZ0IiwiX3Byb3BzJGZpbGUiLCJmaWxlIiwiYmFzZTY0IiwiYXJyYXlCdWZmZXIiLCJVdGlscyIsImJhc2U2NFRvQXJyYXlCdWZmZXIiLCJCbG9iIiwidHlwZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJhY2Nlc3NUb2tlbiIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsImlkVG9rZW4iLCJ0cmFja1Byb21pc2UiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5IiwidGhlbiIsInJlc3BvbnNlIiwidGltZXIiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwic2V0dXBDb250YWluZXIiLCJjdXJyZW50VXNlciIsImdldFVzZXJEZXRhaWxzIiwibmFtZSIsInN1cm5hbWUiLCJhbGxvd1VucmVzb2x2ZWRDaGFuZ2VzIiwicmV2aXNpb25zIiwiX3Byb3BzJGZpbGUyIiwiX3Byb3BzJGZpbGUzIiwic3RvcFByb3RlY3Rpb24iLCJibG9iIiwic2F2ZUFzQmxvYiIsImVuZm9yY2VQcm90ZWN0aW9uIiwiRmlsZSIsImV4dHJhY3REb2N1bWVudFRleHQiLCJvcmlnaW5hbFN0YXJ0Iiwib3JpZ2luYWxFbmQiLCJzZWxlY3RBbGwiLCJnZXRUZXh0Iiwic2VsZWN0IiwiZXh0cmFjdEFuY2hvclRva2VucyIsInJlZ2V4IiwidG9rZW5zIiwiU2V0IiwibWF0Y2giLCJleGVjIiwiYWRkIiwiQXJyYXkiLCJmcm9tIiwiaXNDYXJldFdpdGhpblJhbmdlIiwiY2FyZXQiLCJzdGFydCIsImVuZCIsInBhcmFncmFwaCIsInhJbiIsInlJbiIsImRlbGV0ZUN1cnJlbnRBbmNob3IiLCJkb2NFZGl0b3IiLCJhbmNob3IiLCJ1cGRhdGVBY3RpdmVBbmNob3IiLCJzY2FuUmlnaHRVbnRpbEFuY2hvciIsIm9yaWdpbk9mZnNldCIsIm1heFNjYW4iLCJidW1wT2Zmc2V0IiwiY2giLCJ0ZXN0IiwibmV4dCIsInNjYW5MZWZ0VW50aWxBbmNob3IiLCJwcmV2IiwiZ2V0Q2hhckF0Iiwib2Zmc2V0IiwiaXNDYXJldEltbWVkaWF0ZWx5QmVmb3JlQW5jaG9yU3RhcnQiLCJjMCIsImMxIiwiaXNDYXJldEltbWVkaWF0ZWx5QWZ0ZXJBbmNob3IiLCJzZWxlY3RDdXJyZW50V29yZCIsInNjYW5TdGFydCIsImlzQ2FyZXRBdEVuZCIsImRlbHRhIiwicGFydHMiLCJzcGxpdCIsImlkeCIsInBhcnNlSW50IiwidG9TdHJpbmciLCJqb2luIiwiYmVmb3JlWG1sSHR0cFJlcXVlc3RTZW5kIiwiYXJncyIsInB1c2giLCJhZGRFdmVudExpc3RlbmVyIiwiZXZlbnQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJlZGl0b3JIaXN0b3J5IiwidW5kbyIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY3RybEtleSIsIm1ldGFLZXkiLCJvbk1vdXNlVXAiLCJjbGllbnRYIiwiY2xpZW50WSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkb2N1bWVudENoYW5nZSIsImVuYWJsZVRyYWNrQ2hhbmdlcyIsImlzTnVsbCIsInRyYWNrQ2hhbmdlcyIsInJlYWRPbmx5IiwiaXNSZWFkT25seSIsInZhbHVlQ2hhbmdlSGFuZGxlciIsImRpc2FibGVBY2NlcHRDaGFuZ2VzIiwiYWNjZXB0QnV0dG9ucyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJhY2NlcHRCdXR0b24iLCJwYXJlbnRFbGVtZW50IiwicmVtb3ZlQ2hpbGQiLCJkaXNhYmxlUmVqZWN0Q2hhbmdlcyIsInJlamVjdEJ1dHRvbnMiLCJyZWplY3RCdXR0b24iLCJvcGVuIiwib25Ub29sYmFyQ2xpY2siLCJfY29udGFpbmVyJGRvY3VtZW50RWQiLCJpdGVtIiwiYXBwbHlCdWxsZXQiLCJjbGVhckxpc3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJyZWYiLCJ3aWR0aCIsImZsZXhXcmFwIiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25Db250ZW50IiwicGFkZGluZyIsIm1heEhlaWdodCIsInZhcmlhbnQiLCJzaG93Iiwib25DbG9zZSIsImRpc21pc3NpYmxlIiwid2l0aCIsImNvbG9yIiwic2NvcGUiLCJjcmVhdGVkIiwiZW5hYmxlUGVyc2lzdGVuY2UiLCJ0b29sYmFyQ2xpY2siLCJyZXN0cmljdEVkaXRpbmciLCJzaG93UHJvcGVydGllc1BhbmUiLCJlbmFibGVBdXRvRm9jdXMiLCJzZXJ2aWNlVXJsIiwiZW5hYmxlVG9vbGJhciIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL1dvcmREb2N1bWVudFZpZXdlci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dHJhY2tQcm9taXNlfSBmcm9tIFwicmVhY3QtcHJvbWlzZS10cmFja2VyXCI7XG5pbXBvcnQgVXRpbHMgZnJvbSBcIi4uL1V0aWxzXCI7XG5pbXBvcnQge0RvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50LCBUb29sYmFyfSBmcm9tICdAc3luY2Z1c2lvbi9lajItcmVhY3QtZG9jdW1lbnRlZGl0b3InO1xuaW1wb3J0IFwiLi9Eb2N1bWVudFRlbXBsYXRlRGVzaWduZXJDb21wb25lbnQuY3NzXCJcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSBcIi4uL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHtyZWdpc3RlckxpY2Vuc2V9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYmFzZVwiO1xuaW1wb3J0IEFsZXJ0IGZyb20gXCJyZWFjdC1ib290c3RyYXAvQWxlcnRcIjtcbmltcG9ydCBMb3R0aWVJY29uIGZyb20gXCIuL0xvdHRpZUljb25cIjtcbmltcG9ydCBcIi4vV29yZERvY3VtZW50Vmlld2VyLmNzc1wiXG5pbXBvcnQge3VzZVN0YXRlLCB1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZVJlc2l6ZU9ic2VydmVyfSBmcm9tIFwiLi9vYnNlcnZlcnMvdXNlUmVzaXplT2JzZXJ2ZXJcIjtcbmltcG9ydCB7dXNlT25GdWxseVZpc2libGV9IGZyb20gXCIuL29ic2VydmVycy91c2VPbkZ1bGx5VmlzaWJsZVwiO1xuXG5leHBvcnQgY29uc3QgS0VZID0gJ05nbzlCaWdCT2dnakhUUXhBUjgvVjFKR2FGNWNYR3BDZjFGcFJtSkdkbGQ1ZlVWSFlWWlVUWHhhUzAwRE5IVlJka2RsV1g1Y2VIVlJRMkJZVVVkd1gwTldZRXM9JztcbnJlZ2lzdGVyTGljZW5zZShLRVkpO1xuXG5mdW5jdGlvbiByZXNvbHZlTG9jYXRpb24oKSB7XG4gICAgY29uc29sZS5sb2coXCJSRVNPTFZFIERPQyBIT1NUIDogXCIsIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1QpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlRG9jU3ZjKCkge1xuICAgIGNvbnNvbGUubG9nKFwiUkVTT0xWRSBET0MgUEFUSCA6IFwiLCBwcm9jZXNzLmVudi5SRUFDVF9BUFBfRE9DU19BUElfUEFUSCk7XG4gICAgaWYgKHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9QQVRIKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudi5SRUFDVF9BUFBfRE9DU19BUElfUEFUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gXCIvZG9jcy9hcGkvdjEvc3luY2Z1c2lvblwiO1xufVxuXG5leHBvcnQgY29uc3QgbG9jYXRpb24gPSByZXNvbHZlTG9jYXRpb24oKTtcbmV4cG9ydCBjb25zdCBET0NTVkMgPSByZXNvbHZlRG9jU3ZjKCk7XG5cbmZ1bmN0aW9uIGdldERvY3NCYXNlKCkge1xuICAgIHJldHVybiBsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgRE9DU1ZDO1xufVxuXG5mdW5jdGlvbiBnZXRTZXJ2aWNlVXJsKCkge1xuICAgIC8vIFN5bmNmdXNpb24ncyBEb2N1bWVudEVkaXRvciB1c2VzIHRoaXMgcHJvcCBhcyBhIEJBU0UgYW5kIGRpcmVjdGx5XG4gICAgLy8gY29uY2F0ZW5hdGVzIHRoZSBhY3Rpb24gbmFtZSBvbnRvIGl0IChJbXBvcnQsIFN5c3RlbUNsaXBib2FyZCxcbiAgICAvLyBTcGVsbENoZWNrLCBFeHBvcnRTRkRULCAuLi4pLiBTbyB3ZSBtdXN0IHJldHVybiBKVVNUIHRoZSBiYXNlIOKAlFxuICAgIC8vIHRyYWlsaW5nIHNsYXNoIHNvIHRoZSBhcHBlbmRlZCBhY3Rpb24gbGFuZHMgYXMgYSBjbGVhbiBwYXRoXG4gICAgLy8gc2VnbWVudCwgbm90IGFzIGEgY29udGludWF0aW9uIG9mIHRoZSBwcmV2aW91cyBzZWdtZW50LlxuICAgIC8vXG4gICAgLy8gV2UgaW50ZW50aW9uYWxseSBkbyBOT1QgYXBwZW5kIFwiL0ltcG9ydFwiIGhlcmUuIFRoZSBleHBsaWNpdCBQT1NUXG4gICAgLy8gYXQgdGhlIGBwcm9wcy5maWxlPy5iYXNlNjRgIGZldGNoIGxvd2VyIGluIHRoZSBjb21wb25lbnQgYnVpbGRzXG4gICAgLy8gaXRzIG93biAvSW1wb3J0IFVSTCB3aXRoIGhlYWRlci1iYXNlZCBhdXRoOyB0aGUgZWRpdG9yJ3MgaW50ZXJuYWxcbiAgICAvLyBjYWxscyAobm90YWJseSBTeXN0ZW1DbGlwYm9hcmQsIHdoaWNoIGZpcmVzIG9uIHJpY2gtY29udGVudFxuICAgIC8vIHBhc3RlcyBmcm9tIFdvcmQpIG5lZWQgY2xlYW4gYmFzZSArIGFjdGlvbiBjb21wb3NpdGlvbi5cbiAgICAvL1xuICAgIC8vIEF1dGggdmlhIHF1ZXJ5IHN0cmluZyBpcyBhbHNvIGludGVudGlvbmFsbHkgYWJzZW50IOKAlCBjb25jYXRlbmF0aW5nXG4gICAgLy8gdGhlIGFjdGlvbiBuYW1lIG9udG8gYSBVUkwgdGhhdCBhbHJlYWR5IGNhcnJpZXMgYD90b2tlbj0uLi5gIHdvdWxkXG4gICAgLy8gY29ycnVwdCBib3RoIHRoZSBxdWVyeSBzdHJpbmcgYW5kIHRoZSBhY3Rpb24gcGF0aC4gSWYgYSBkZXBsb3ltZW50XG4gICAgLy8gZXZlciByb3V0ZXMgdGhpcyB0aHJvdWdoIGEgZ2F0ZXdheSB0aGF0IGVuZm9yY2VzIGF1dGgsIHJlZ2lzdGVyIGFuXG4gICAgLy8gSHR0cENsaWVudCBpbnRlcmNlcHRvciBvbiB0aGUgRG9jdW1lbnRFZGl0b3IgaW5zdGFuY2UgdG8gYWRkIHRoZVxuICAgIC8vIGhlYWRlciByYXRoZXIgdGhhbiByZWludHJvZHVjaW5nIHRoZSBxdWVyeS1wYXJhbSBhcHByb2FjaC5cbiAgICByZXR1cm4gYCR7Z2V0RG9jc0Jhc2UoKX0vYDtcbn1cblxuRG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQuSW5qZWN0KFRvb2xiYXIpO1xuXG5jb25zdCBMRVZFTF9GTVQgPSBbJyUxLicsICclMS4lMi4nLCAnJTEuJTIuJTMuJ107XG5cbmZ1bmN0aW9uIGFwcGx5TGV2ZWwoZWQsIGxldmVsID0gMCkge1xuICAgIGNvbnN0IGRlcHRoID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obGV2ZWwsIExFVkVMX0ZNVC5sZW5ndGggLSAxKSk7XG4gICAgZWQuc2VsZWN0aW9uLnBhcmFncmFwaEZvcm1hdC5saXN0TGV2ZWxOdW1iZXIgPSBkZXB0aDtcbiAgICBlZC5hcHBseU51bWJlcmluZyhMRVZFTF9GTVRbZGVwdGhdLCAnQXJhYmljJyk7XG59XG5cbmZ1bmN0aW9uIHVzZUR5bmFtaWNTeW5jZnVzaW9uSGVpZ2h0KHBhcmVudFJlZiwgY29udGFpbmVyUmVmKSB7XG4gICAgY29uc3QgW2hlaWdodCwgc2V0SGVpZ2h0XSA9IHVzZVN0YXRlKDApO1xuXG4gICAgY29uc3QgbWVhc3VyZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKCFwYXJlbnRSZWYuY3VycmVudCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJlY3QgPSBwYXJlbnRSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5mbG9vcihyZWN0LmhlaWdodCk7XG5cbiAgICAgICAgaWYgKG5ld0hlaWdodCA+IDAgJiYgbmV3SGVpZ2h0ICE9PSBoZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTUVBU1VSRSA6IFwiLCBuZXdIZWlnaHQpO1xuICAgICAgICAgICAgc2V0SGVpZ2h0KG5ld0hlaWdodCk7XG4gICAgICAgIH1cbiAgICB9LCBbcGFyZW50UmVmLCBoZWlnaHRdKTtcblxuICAgIC8vIPCflIEgUmVzaXplIG9ic2VydmVyXG4gICAgdXNlUmVzaXplT2JzZXJ2ZXIocGFyZW50UmVmLCBtZWFzdXJlKTtcblxuICAgIC8vIOKaoSBTeW5jZnVzaW9uIHJlc2l6ZSB0cmlnZ2VyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lclJlZi5jdXJyZW50ICYmIGhlaWdodCA+IDApIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQuZG9jdW1lbnRFZGl0b3IucmVzaXplKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy8gc2lsZW50XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbaGVpZ2h0LCBjb250YWluZXJSZWZdKTtcblxuICAgIHJldHVybiBoZWlnaHQ7XG59XG5cbmNvbnN0IFdvcmREb2N1bWVudFZpZXdlciA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtjb250YWluZXIsIHNldENvbnRhaW5lcl0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtyZVJlbmRlcmluZywgc2V0UmVSZW5kZXJpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtqc29uLCBzZXRKc29uXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtlcnJvck1lc3NhZ2UsIHNldEVycm9yTWVzc2FnZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjdXJyZW50VGV4dCA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhY3RpdmVBbmNob3JSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgYW5jaG9yRW5kID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBkZWxldGVMb2NrUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBsb2FkaW5nID0gdXNlUmVmKHRydWUpO1xuICAgIGNvbnN0IHBhcmVudFJlZiA9IHVzZU9uRnVsbHlWaXNpYmxlKChlbCkgPT4ge1xuICAgICAgICBpZiAoIXJlUmVuZGVyaW5nKSB7XG4gICAgICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgICAgIHNldFJlUmVuZGVyaW5nKHRydWUpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZWRpdG9ySGVpZ2h0ID0gdXNlRHluYW1pY1N5bmNmdXNpb25IZWlnaHQocGFyZW50UmVmLCBjb250YWluZXJSZWYpO1xuXG4gICAgZnVuY3Rpb24gaXNQb2ludEluc2lkZUVsZW1lbnQoeCwgeSwgZWwpIHtcbiAgICAgICAgaWYgKCFlbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHggPj0gcmVjdC5sZWZ0ICYmXG4gICAgICAgICAgICB4IDw9IHJlY3QucmlnaHQgJiZcbiAgICAgICAgICAgIHkgPj0gcmVjdC50b3AgJiZcbiAgICAgICAgICAgIHkgPD0gcmVjdC5ib3R0b21cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWaWV3ZXJFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICBgJHtwcm9wcy5pZH0tY29udGFpbmVyX2VkaXRvcl92aWV3ZXJDb250YWluZXJgXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOYXZpZ2F0aW9uS2V5KGUpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdBcnJvd1VwJywgJ0Fycm93RG93bicsXG4gICAgICAgICAgICAnSG9tZScsICdFbmQnLCAnUGFnZVVwJywgJ1BhZ2VEb3duJ1xuICAgICAgICBdLmluY2x1ZGVzKGUua2V5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVBbmNob3IodmFsdWUpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLnJlcGxhY2UoL15cXFtcXFt8XFxdXFxdJC9nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9ePDx8Pj4kL2csICcnKTtcbiAgICB9XG5cbiAgICBsZXQgdmlld2VyRWxlbWVudCA9IGdldFZpZXdlckVsZW1lbnQoKTtcblxuICAgIGZ1bmN0aW9uIGluc2VydFJlYWRvbmx5QW5jaG9yKGV2ZW50RGF0YSwgZHJvcFBvc2l0aW9uKSB7XG4gICAgICAgIGlmICghY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcikgcmV0dXJuO1xuICAgICAgICBpZiAoIWRyb3BQb3NpdGlvbikgcmV0dXJuO1xuXG4gICAgICAgIGlmICghaXNQb2ludEluc2lkZUVsZW1lbnQoZHJvcFBvc2l0aW9uLngsIGRyb3BQb3NpdGlvbi55LCB2aWV3ZXJFbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZG9jID0gY29udGFpbmVyLmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBlZCA9IGRvYy5lZGl0b3I7XG4gICAgICAgIGNvbnN0IHNlbCA9IGRvYy5zZWxlY3Rpb247XG4gICAgICAgIGlmICghZWQgfHwgIXNlbCkgcmV0dXJuO1xuXG4gICAgICAgIC8vIFJlamVjdCBkcm9wIGlmIGN1cnNvciBpcyBzdHJpY3RseSBpbnNpZGUgYW4gZXhpc3RpbmcgYW5jaG9yXG4gICAgICAgIC8vIEFsbG93IGRyb3BwaW5nIGF0IHRoZSBleGFjdCBzdGFydCBvciBlbmQgYm91bmRhcnlcbiAgICAgICAgY29uc3QgY2FyZXRPZmZzZXQgPSBzZWwuc3RhcnRPZmZzZXQ7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQW5jaG9yID0gZ3JhYkFuY2hvcldpdGhCb3VuZHMoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQW5jaG9yKSB7XG4gICAgICAgICAgICBjb25zdCBhdFN0YXJ0ID0gY2FyZXRPZmZzZXQgPT09IGV4aXN0aW5nQW5jaG9yLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgY29uc3QgYXRFbmQgPSBjYXJldE9mZnNldCA9PT0gZXhpc3RpbmdBbmNob3IuZW5kT2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCFhdFN0YXJ0ICYmICFhdEVuZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkRyb3AgcmVqZWN0ZWQg4oCUIGN1cnNvciBpcyBpbnNpZGUgYW5jaG9yOiBcIiArIGV4aXN0aW5nQW5jaG9yLnRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b2tlbiA9IGBbWyR7bm9ybWFsaXplQW5jaG9yKGV2ZW50RGF0YSl9XV1gO1xuICAgICAgICBlZC5pbnNlcnRUZXh0KHRva2VuKTtcbiAgICB9XG5cbiAgICBjb25zdCBkcm9wRGF0YSA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXRWYWx1ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzYXZlQXNCYXNlNjQoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGluc2VydFJlYWRvbmx5QW5jaG9yOiBhc3luYyAodmFsdWUsIGRyb3BQb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGRyb3BEYXRhLmN1cnJlbnQgPSB7dmFsdWUsIGRyb3BQb3NpdGlvbn07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLnZhbHVlSGFuZGxlci5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG51bWJlcmluZ0l0ZW1zID0gW1xuICAgICAgICB7aWQ6ICdsdmwtMCcsIHRleHQ6ICcxLid9LFxuICAgICAgICB7aWQ6ICdsdmwtMScsIHRleHQ6ICcxLjEnfSxcbiAgICAgICAge2lkOiAnbHZsLTInLCB0ZXh0OiAnMS4xLjEnfSxcbiAgICAgICAge3NlcGFyYXRvcjogdHJ1ZX0sXG4gICAgICAgIHtpZDogJ2NsZWFyJywgdGV4dDogJ0NsZWFyIGxpc3QnfSxcbiAgICBdO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IHRvb2xiYXJJdGVtcyA9IHByb3BzLmNvbW1lbnRzT25seSA/XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJDb21tZW50c1wiXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICA6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJVbmRvXCIsXG4gICAgICAgICAgICAgICAgXCJSZWRvXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICB7aWQ6ICdidWxsZXRzJywgdGV4dDogJ+KAoiBCdWxsZXRzJywgdG9vbHRpcFRleHQ6ICdCdWxsZXRlZCBsaXN0J30sXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICB7dG9vbHRpcFRleHQ6ICdCb2xkJywgcHJlZml4SWNvbjogJ2UtaWNvbnMgZS1ib2xkJywgY29tbWFuZDogJ0JvbGQnfSxcbiAgICAgICAgICAgICAgICB7dG9vbHRpcFRleHQ6ICdJdGFsaWMnLCBwcmVmaXhJY29uOiAnZS1pY29ucyBlLWl0YWxpYycsIGNvbW1hbmQ6ICdJdGFsaWMnfSxcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiSW1hZ2VcIixcbiAgICAgICAgICAgICAgICBcIlRhYmxlXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkhlYWRlclwiLFxuICAgICAgICAgICAgICAgIFwiRm9vdGVyXCIsXG4gICAgICAgICAgICAgICAgXCJQYWdlU2V0dXBcIixcbiAgICAgICAgICAgICAgICBcIkJyZWFrXCIsXG4gICAgICAgICAgICAgICAgXCJQYWdlTnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgXCJJbnNlcnRGb290bm90ZVwiLFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJGaW5kXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkNvbW1lbnRzXCJcbiAgICAgICAgICAgIF1cblxuICAgICAgICBpZiAocHJvcHMuZW5hYmxlVXBsb2FkKSB7XG4gICAgICAgICAgICB0b29sYmFySXRlbXMudW5zaGlmdChcIk9wZW5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRJdGVtcyh0b29sYmFySXRlbXMpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5maWxlPy5iYXNlNjQpIHtcbiAgICAgICAgICAgIGxldCBiYXNlNjQgPSBwcm9wcy5maWxlLmJhc2U2NDtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gVXRpbHMuYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjQpO1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFthcnJheUJ1ZmZlcl0sIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy5maWxlLnR5cGVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlcycsIGZpbGUsICdkb2N1bWVudC5kb2N4Jyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG5cbiAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICBmZXRjaChcbiAgICAgICAgICAgICAgICAgICAgYCR7Z2V0RG9jc0Jhc2UoKX0vSW1wb3J0YCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRUb2tlbic6IGlkVG9rZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cmFja1Byb21pc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbigoanNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEpzb24oanNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMuZmlsZV0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHJlUmVuZGVyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHRydWUpO1xuICAgICAgICAgICAgfSwgMV8wMDApO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIH1cbiAgICB9LCBbcmVSZW5kZXJpbmddKTtcblxuICAgIGZ1bmN0aW9uIHNldHVwQ29udGFpbmVyKCkge1xuICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuY3VycmVudFVzZXIgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5uYW1lICsgXCIgXCIgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5zdXJuYW1lO1xuICAgIH1cblxuICAgIGNvbnN0IHNhdmVBc0Jhc2U2NCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmFsbG93VW5yZXNvbHZlZENoYW5nZXMgPT09IGZhbHNlICYmIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5yZXZpc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKFwiUGxlYXNlIGFjY2VwdCBvciByZWplY3QgYWxsIHN1Z2dlc3RlZCBjaGFuZ2VzXCIpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yLnN0b3BQcm90ZWN0aW9uKFwicGFzc3dvcmRcIik7XG4gICAgICAgICAgICBsZXQgYmxvYiA9IGF3YWl0IGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5zYXZlQXNCbG9iKCdEb2N4Jyk7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29tbWVudHNPbmx5KSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvci5lbmZvcmNlUHJvdGVjdGlvbigncGFzc3dvcmQnLCAnQ29tbWVudHNPbmx5Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIHByb3BzLmZpbGU/Lm5hbWUgPyBwcm9wcy5maWxlLm5hbWUgOiAnZG9jdW1lbnQuZG9jeCcsIHt0eXBlOiBwcm9wcy5maWxlPy50eXBlID8gcHJvcHMuZmlsZS50eXBlIDogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J30pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3REb2N1bWVudFRleHQoZWRpdG9yKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5jdXJyZW50KSByZXR1cm4gY3VycmVudFRleHQuY3VycmVudDtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFN0YXJ0ID0gZWRpdG9yLnNlbGVjdGlvbi5zdGFydE9mZnNldDtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxFbmQgPSBlZGl0b3Iuc2VsZWN0aW9uLmVuZE9mZnNldDtcblxuICAgICAgICBlZGl0b3Iuc2VsZWN0aW9uLnNlbGVjdEFsbCgpO1xuICAgICAgICBjb25zdCB0ZXh0ID0gZWRpdG9yLnNlbGVjdGlvbi5nZXRUZXh0KCk7XG4gICAgICAgIGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0KG9yaWdpbmFsU3RhcnQsIG9yaWdpbmFsRW5kKTtcblxuICAgICAgICBjdXJyZW50VGV4dC5jdXJyZW50ID0gdGV4dDtcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0cmFjdEFuY2hvclRva2Vucyh0ZXh0KSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gL1xcW1xcW1teXFxbXFxdXSs/XFxdXFxdL2c7XG4gICAgICAgIGNvbnN0IHRva2VucyA9IG5ldyBTZXQoKTtcbiAgICAgICAgbGV0IG1hdGNoO1xuXG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdG9rZW5zLmFkZChtYXRjaFswXSk7IC8vIGV4YWN0IFtbVEVYVF1dXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0b2tlbnMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQ2FyZXRXaXRoaW5SYW5nZShjYXJldCwgc3RhcnQsIGVuZCkge1xuICAgICAgICBpZiAoY2FyZXQucGFyYWdyYXBoICE9PSBzdGFydC5wYXJhZ3JhcGgpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCB4ID0gY2FyZXQubG9jYXRpb24ueEluO1xuICAgICAgICBjb25zdCB5ID0gY2FyZXQubG9jYXRpb24ueUluO1xuXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJDSEVDS0lORyBDQVJFVCBXSVRISU4gUkFOR0UgOiBcIiwgeCwgeSwgc3RhcnQubG9jYXRpb24ueEluLCBzdGFydC5sb2NhdGlvbi55SW4sIGVuZC5sb2NhdGlvbi54SW4sIGVuZC5sb2NhdGlvbi55SW4pO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgeSA9PT0gc3RhcnQubG9jYXRpb24ueUluICYmXG4gICAgICAgICAgICB4ID49IHN0YXJ0LmxvY2F0aW9uLnhJbiAmJlxuICAgICAgICAgICAgeCA8PSBlbmQubG9jYXRpb24ueEluXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVsZXRlQ3VycmVudEFuY2hvcihjb250YWluZXIpIHtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcjtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gZWRpdG9yPy5zZWxlY3Rpb247XG4gICAgICAgIGNvbnN0IGRvY0VkaXRvciA9IGVkaXRvcj8uZWRpdG9yO1xuXG4gICAgICAgIGNvbnN0IGFuY2hvciA9IGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWVkaXRvciB8fCAhc2VsZWN0aW9uIHx8ICFkb2NFZGl0b3IgfHwgIWFuY2hvcikgcmV0dXJuO1xuXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJFTkQgT0ZGU0VUIDogXCIsIGFuY2hvci5lbmRPZmZzZXQsIGJ1bXBPZmZzZXQoYW5jaG9yLmVuZE9mZnNldCwgLTEpKVxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiU1RBUlQgLSBFTkQgOiBcIiwgYW5jaG9yLnN0YXJ0T2Zmc2V0LCBidW1wT2Zmc2V0KGFuY2hvci5lbmRPZmZzZXQsIC0xKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KGFuY2hvci5zdGFydE9mZnNldCwgYW5jaG9yLmVuZE9mZnNldCk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiU0VMRUNUSU9OIFRFWFQgOiBcIiArIHNlbGVjdGlvbi50ZXh0KTtcbiAgICAgICAgICAgIC8vZG9jRWRpdG9yLmRlbGV0ZSgpO1xuICAgICAgICAgICAgLy9zZWxlY3Rpb24uc2VsZWN0KGFuY2hvci5zdGFydE9mZnNldCwgYW5jaG9yLnN0YXJ0T2Zmc2V0KTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcikge1xuICAgICAgICBhY3RpdmVBbmNob3JSZWYuY3VycmVudCA9IGdyYWJBbmNob3JXaXRoQm91bmRzKGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhblJpZ2h0VW50aWxBbmNob3IoZWRpdG9yLCBvcmlnaW5PZmZzZXQsIG1heFNjYW4gPSA1MDApIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBvcmlnaW5PZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhTY2FuOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1vdmUgcmlnaHRcbiAgICAgICAgICAgIGN1cnJlbnQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsICsxKTtcblxuICAgICAgICAgICAgc2VsLnNlbGVjdChjdXJyZW50LCBjdXJyZW50KTtcblxuICAgICAgICAgICAgLy8gc2VsZWN0IE9ORSBjaGFyYWN0ZXIgb25seVxuICAgICAgICAgICAgc2VsLnNlbGVjdChcbiAgICAgICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQoY3VycmVudCwgKzEpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBjaCA9IHNlbC50ZXh0O1xuXG4gICAgICAgICAgICAvLyDim5QgQmFpbCBvbiB3aGl0ZXNwYWNlIG9yIHBhcmFncmFwaCBicmVha1xuICAgICAgICAgICAgaWYgKCFjaCB8fCAvXFxzLy50ZXN0KGNoKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIERldGVjdCBjbG9zaW5nIFwiXV1cIlxuICAgICAgICAgICAgaWYgKGNoID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICAvLyBsb29rYWhlYWQgb25lIGNoYXJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gYnVtcE9mZnNldChjdXJyZW50LCArMSk7XG4gICAgICAgICAgICAgICAgc2VsLnNlbGVjdChuZXh0LCBidW1wT2Zmc2V0KG5leHQsICsxKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsLnRleHQgPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gcG9zaXRpb24gQUZURVIgXV1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1bXBPZmZzZXQoY3VycmVudCwgKzIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5MZWZ0VW50aWxBbmNob3IoZWRpdG9yLCBvcmlnaW5PZmZzZXQsIG1heFNjYW4gPSA1MDApIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBvcmlnaW5PZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhTY2FuOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsIC0xKTtcblxuICAgICAgICAgICAgLy8gc2VsZWN0IG9uZSBjaGFyIHRvIHRoZSBsZWZ0XG4gICAgICAgICAgICBzZWwuc2VsZWN0KFxuICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNoID0gc2VsLnRleHQ7XG5cbiAgICAgICAgICAgIGlmICghY2ggfHwgL1xccy8udGVzdChjaCkpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvLyBkZXRlY3QgW1tcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpO1xuICAgICAgICAgICAgICAgIHNlbC5zZWxlY3QoXG4gICAgICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQocHJldiwgLTEpLFxuICAgICAgICAgICAgICAgICAgICBwcmV2XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWwudGV4dCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIPCflJEgRklYOiBnbyBiYWNrIFRXTyBjaGFyc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVtcE9mZnNldChjdXJyZW50LCAtMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q2hhckF0KGVkaXRvciwgb2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHNlbCA9IGVkaXRvci5zZWxlY3Rpb247XG4gICAgICAgIHNlbC5zZWxlY3Qob2Zmc2V0LCBidW1wT2Zmc2V0KG9mZnNldCwgKzEpKTtcbiAgICAgICAgcmV0dXJuIHNlbC50ZXh0IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNDYXJldEltbWVkaWF0ZWx5QmVmb3JlQW5jaG9yU3RhcnQoZWRpdG9yLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYzAgPSBnZXRDaGFyQXQoZWRpdG9yLCBvZmZzZXQpO1xuICAgICAgICBjb25zdCBjMSA9IGdldENoYXJBdChlZGl0b3IsIGJ1bXBPZmZzZXQob2Zmc2V0LCArMSkpO1xuICAgICAgICByZXR1cm4gYzAgPT09ICdbJyAmJiBjMSA9PT0gJ1snOyAvLyB8W1tURVhUXV1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0NhcmV0SW1tZWRpYXRlbHlBZnRlckFuY2hvcihlZGl0b3IsIG9mZnNldCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsIC0xKSkgPT09ICddJyAmJlxuICAgICAgICAgICAgZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsIC0yKSkgPT09ICddJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdyYWJBbmNob3JXaXRoQm91bmRzKGNvbnRhaW5lcikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb250YWluZXI/LmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBlZGl0b3I/LnNlbGVjdGlvbjtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFN0YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0T2Zmc2V0O1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVuZCA9IHNlbGVjdGlvbi5lbmRPZmZzZXQ7XG5cbiAgICAgICAgc2VsZWN0aW9uLnNlbGVjdEN1cnJlbnRXb3JkKCk7XG4gICAgICAgIHNlbGVjdGlvbi5zZWxlY3Qob3JpZ2luYWxTdGFydCwgb3JpZ2luYWxFbmQpO1xuXG4gICAgICAgIC8vbGV0IHdvcmQgPSBzZWxlY3Rpb24udGV4dDtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImdyYWJBbmNob3JXaXRoQm91bmRzIFNFTEVDVElPTiBURVhUIDogXCIsIHdvcmQpO1xuXG4gICAgICAgIGxldCBzY2FuU3RhcnQgPSBvcmlnaW5hbFN0YXJ0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGlzQ2FyZXRJbW1lZGlhdGVseUJlZm9yZUFuY2hvclN0YXJ0KGVkaXRvciwgb3JpZ2luYWxTdGFydCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGlzQ2FyZXRBdEVuZCA9IGlzQ2FyZXRJbW1lZGlhdGVseUFmdGVyQW5jaG9yKGVkaXRvciwgb3JpZ2luYWxTdGFydClcbiAgICAgICAgICAgIGlmIChpc0NhcmV0QXRFbmQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiQ0FSRVQgQVQgRU5EXCIpO1xuICAgICAgICAgICAgICAgIHNjYW5TdGFydCA9IGJ1bXBPZmZzZXQob3JpZ2luYWxTdGFydCwgLTMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gc2NhbkxlZnRVbnRpbEFuY2hvcihlZGl0b3IsIHNjYW5TdGFydCk7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IHNjYW5SaWdodFVudGlsQW5jaG9yKGVkaXRvciwgc2NhblN0YXJ0KTtcblxuICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KGxlZnQsIHJpZ2h0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gc2VsZWN0aW9uLnRleHQ7XG4gICAgICAgICAgICAgICAgYW5jaG9yRW5kLmN1cnJlbnQgPSBpc0NhcmV0QXRFbmQ7XG5cbiAgICAgICAgICAgICAgICAvKmNvbnNvbGUubG9nKFwiR1JBQiBSRVNVTFQgOiBcIiwge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbjogdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogcmlnaHRcbiAgICAgICAgICAgICAgICB9KTsqL1xuXG4gICAgICAgICAgICAgICAgaWYgKC9eXFxbXFxbLis/XFxdXFxdJC8udGVzdCh0ZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46IHRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KG9yaWdpbmFsU3RhcnQsIG9yaWdpbmFsRW5kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1bXBPZmZzZXQob2Zmc2V0LCBkZWx0YSkge1xuICAgICAgICBjb25zdCBwYXJ0cyA9IG9mZnNldC5zcGxpdCgnOycpO1xuICAgICAgICBjb25zdCBpZHggPSBwYXJ0cy5sZW5ndGggLSAxO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gTWF0aC5tYXgoMCwgcGFyc2VJbnQocGFydHNbaWR4XSwgMTApICsgZGVsdGEpO1xuICAgICAgICBwYXJ0c1tpZHhdID0gdmFsdWUudG9TdHJpbmcoKTtcblxuICAgICAgICByZXR1cm4gcGFydHMuam9pbignOycpO1xuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHNldHVwQ29udGFpbmVyKCk7XG4gICAgICAgICAgICAvL2F1dG9TYXZlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnRhaW5lci5kb2N1bWVudEVkaXRvcjtcblxuICAgICAgICAgICAgLy8gSW5qZWN0IG91ciBhdXRoIGhlYWRlcnMgb250byBldmVyeSBYSFIgU3luY2Z1c2lvbiBmaXJlc1xuICAgICAgICAgICAgLy8gaW50ZXJuYWxseSAoSW1wb3J0IC8gU3lzdGVtQ2xpcGJvYXJkIC8gU3BlbGxDaGVjayAvXG4gICAgICAgICAgICAvLyBFeHBvcnRTRkRUIC8gUmVzdHJpY3RFZGl0aW5nKS4gV2l0aG91dCB0aGlzLCByZXF1ZXN0cyB0byBhXG4gICAgICAgICAgICAvLyBnYXRld2F5LXByb3RlY3RlZCBkb2NzIHNlcnZpY2UgY29tZSBiYWNrIDQwMSBhbmQgdGhlXG4gICAgICAgICAgICAvLyBlZGl0b3Igc2lsZW50bHkgc3dhbGxvd3MgdGhlIGZhaWx1cmUg4oCUIG1vc3QgdmlzaWJseSBvblxuICAgICAgICAgICAgLy8gcmljaC1jb250ZW50IHBhc3RlIGZyb20gV29yZCwgd2hpY2ggcm91dGVzIHRocm91Z2hcbiAgICAgICAgICAgIC8vIFN5c3RlbUNsaXBib2FyZC4gUmVhZGluZyB0aGUgdG9rZW5zIGF0IGZpcmUgdGltZSAobm90IGF0XG4gICAgICAgICAgICAvLyBzZXR1cCkgc28gdG9rZW4gcmVmcmVzaGVzIGFyZSBwaWNrZWQgdXAuXG4gICAgICAgICAgICBlZGl0b3IuYmVmb3JlWG1sSHR0cFJlcXVlc3RTZW5kID0gKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcblxuICAgICAgICAgICAgICAgIC8vIFJFUExBQ0UgYXJncy5oZWFkZXJzIHJhdGhlciB0aGFuIHB1c2goKSDigJQgU3luY2Z1c2lvbidzXG4gICAgICAgICAgICAgICAgLy8gaW50ZXJuYWwgQWpheEhlbHBlciByZXVzZXMgdGhlIHNhbWUgYXJncy5oZWFkZXJzIGFycmF5XG4gICAgICAgICAgICAgICAgLy8gYWNyb3NzIHJlcXVlc3RzIChhbmQgaW4gZGV2IFN0cmljdE1vZGUgdGhlIGVmZmVjdCBydW5zXG4gICAgICAgICAgICAgICAgLy8gdHdpY2UpLCBzbyBwdXNoaW5nIGNvbXBvdW5kcyB0aGUgZW50cmllcy4gV2l0aCBhIGZ1bGxcbiAgICAgICAgICAgICAgICAvLyBKV1QgYmVhcmVyIHBlciBkdXBsaWNhdGUgdGhlIHJlcXVlc3QgcmFwaWRseSBleGNlZWRzXG4gICAgICAgICAgICAgICAgLy8gbmdpbngncyA4S0IgaGVhZGVyIGJ1ZmZlciBhbmQgdGhlIGdhdGV3YXkgcmV0dXJucyA0MzFcbiAgICAgICAgICAgICAgICAvLyBSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlOyB0aGUgYnJvd3NlciB0aGVuXG4gICAgICAgICAgICAgICAgLy8gcmVwb3J0cyB0aGUgc3ltcHRvbSBhcyBhIENPUlMgZmFpbHVyZSBiZWNhdXNlIHRoZSA0MzFcbiAgICAgICAgICAgICAgICAvLyByZXNwb25zZSBjYXJyaWVzIG5vIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIEVhY2ggcHVzaGVkIG9iamVjdCdzIFBST1BFUlRZIE5BTUUgYmVjb21lcyB0aGUgSFRUUFxuICAgICAgICAgICAgICAgIC8vIGhlYWRlciBuYW1lIG9uIHRoZSB3aXJlIChBamF4SGVscGVyIGRvZXNcbiAgICAgICAgICAgICAgICAvLyBgZm9yIChjb25zdCBrIGluIGgpIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGssIGhba10pYCkuXG4gICAgICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChhY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLnB1c2goeyAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaWRUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLnB1c2goeyAnaWRUb2tlbic6IGlkVG9rZW4gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFyZ3MuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcigna2V5RG93bicsIChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZSA9IGFyZ3MuZXZlbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyAx77iP4oOjIE5hdmlnYXRpb24ga2V5cyDihpIgaW5zcGVjdCBvbmx5XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2aWdhdGlvbktleShlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiQUNUSVZFIEFOQ0hPUiA6IFwiLCBhY3RpdmVBbmNob3JSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiREVMRVRFIExPQ0tFRCA6IFwiLCBkZWxldGVMb2NrUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZS5rZXkgPT09ICdEZWxldGUnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGV0ZUxvY2tSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3luY2Z1c2lvbiBhbHJlYWR5IGRlbGV0ZWQg4oaSIHJld2luZCBzYWZlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5lZGl0b3JIaXN0b3J5LnVuZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBBY3F1aXJlIGxvY2tcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlTG9ja1JlZi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZWxlYXNlIGxvY2sgd2hlbiBlZGl0b3IgaXMgYWN0dWFsbHkgc3RhYmxlXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUxvY2tSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIDLvuI/ig6MgSWYgd2UgYXJlIGluc2lkZSBhIHJlc3RyaWN0ZWQgYW5jaG9yXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImFuY2hvckVuZC5jdXJyZW50IDogXCIsIGFuY2hvckVuZC5jdXJyZW50LCBhY3RpdmVBbmNob3JSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKChhY3RpdmVBbmNob3JSZWYuY3VycmVudCAmJiAhaXNOYXZpZ2F0aW9uS2V5KGUpKSB8fCBhbmNob3JFbmQuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgLyBCYWNrc3BhY2UgPSBkZWxldGUgd2hvbGUgYW5jaG9yXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZS5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2VkaXRvci5lZGl0b3JIaXN0b3J5LnVuZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUN1cnJlbnRBbmNob3IoY29udGFpbmVyLCBhY3RpdmVBbmNob3JSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVBbmNob3JSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JFbmQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlTG9ja1JlZi5jdXJyZW50ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGJsb2NrIHdoZW4gd2UgYXJlIGF0IHRoZSBlbmQgb2YgYW4gYW5jaG9yLiBJbnB1dCB3aWxsIG5ldmVyIGRhbWFnZSB0aGUgYW5jaG9yXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJVTkJMT0NLSU5HIDogXCIsIGFuY2hvckVuZC5jdXJyZW50LCBhY3RpdmVBbmNob3JSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYW5jaG9yRW5kLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIPCflJIgQmxvY2sgdHlwaW5nICYgcGFzdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmtleS5sZW5ndGggPT09IDEgfHwgLy8gcHJpbnRhYmxlIGNoYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmN0cmxLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1ldGFLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYW5jaG9yRW5kLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBvbk1vdXNlVXAgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNQb2ludEluc2lkZUVsZW1lbnQoZS5jbGllbnRYLCBlLmNsaWVudFksIHZpZXdlckVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZHJvcERhdGEuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRSZWFkb25seUFuY2hvcihkcm9wRGF0YS5jdXJyZW50LnZhbHVlLCBkcm9wRGF0YS5jdXJyZW50LmRyb3BQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGRyb3BEYXRhLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgIC8vdmlld2VyLnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmlld2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB2aWV3ZXJFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICAgICAgICB9XG4gICAgfSwgW2NvbnRhaW5lcl0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lciAmJiBqc29uKSB7XG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZG9jdW1lbnRDaGFuZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVuYWJsZVRyYWNrQ2hhbmdlcyA9ICFVdGlscy5pc051bGwocHJvcHMudHJhY2tDaGFuZ2VzKSA/IHByb3BzLnRyYWNrQ2hhbmdlcyA6IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmNvbW1lbnRzT25seSkge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yLmVuZm9yY2VQcm90ZWN0aW9uKCdwYXNzd29yZCcsICdDb21tZW50c09ubHknKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5pc1JlYWRPbmx5ID0gcHJvcHMucmVhZE9ubHk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGxvYWRpbmcuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IGF3YWl0IHNhdmVBc0Jhc2U2NCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50VGV4dC5jdXJyZW50ID0gZXh0cmFjdERvY3VtZW50VGV4dChjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdjb250ZW50Q2hhbmdlJywgYXN5bmMgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuZGlzYWJsZUFjY2VwdENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFjY2VwdEJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZS1kZS10cmFjay1hY2NlcHQtYnV0dG9uXCIpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFjY2VwdEJ1dHRvbiBvZiBhY2NlcHRCdXR0b25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRCdXR0b24ucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChhY2NlcHRCdXR0b24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmRpc2FibGVSZWplY3RDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWplY3RCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImUtZGUtdHJhY2stcmVqZWN0LWJ1dHRvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWplY3RCdXR0b24gb2YgcmVqZWN0QnV0dG9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0QnV0dG9uLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQocmVqZWN0QnV0dG9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChsb2FkaW5nLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBhd2FpdCBzYXZlQXNCYXNlNjQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudFRleHQuY3VycmVudCA9IGV4dHJhY3REb2N1bWVudFRleHQoY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvcik7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLm9wZW4oanNvbik7XG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZW5hYmxlVHJhY2tDaGFuZ2VzID0gIVV0aWxzLmlzTnVsbChwcm9wcy50cmFja0NoYW5nZXMpID8gcHJvcHMudHJhY2tDaGFuZ2VzIDogdHJ1ZTtcbiAgICAgICAgICAgIC8vY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmlzUmVhZE9ubHkgPSAocHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuY29tbWVudHNPbmx5KTtcbiAgICAgICAgfVxuICAgIH0sIFtqc29uLCBjb250YWluZXJdKTtcblxuICAgIGNvbnN0IG9uVG9vbGJhckNsaWNrID0gKGFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgZWQgPSBjb250YWluZXI/LmRvY3VtZW50RWRpdG9yPy5lZGl0b3I7XG4gICAgICAgIGlmICghZWQpIHJldHVybjtcbiAgICAgICAgc3dpdGNoIChhcmdzLml0ZW0uaWQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2J1bGxldHMnOlxuICAgICAgICAgICAgICAgIGVkLmFwcGx5QnVsbGV0KCdcXHVmMGI3JywgJ1N5bWJvbCcpOyAvLyDigKJcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcmluZyc6XG4gICAgICAgICAgICAgICAgZWQuYXBwbHlOdW1iZXJpbmcoJyUxLicsICdBcmFiaWMnKTsgLy8gMS5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xldmVsLTAnOlxuICAgICAgICAgICAgICAgIGFwcGx5TGV2ZWwoZWQsIDApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGV2ZWwtMSc6XG4gICAgICAgICAgICAgICAgYXBwbHlMZXZlbChlZCwgMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXZlbC0yJzpcbiAgICAgICAgICAgICAgICBhcHBseUxldmVsKGVkLCAyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NsZWFyLWxpc3QnOlxuICAgICAgICAgICAgICAgIGVkLmNsZWFyTGlzdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIGxldCBidWlsdC1pbnMgKFVuZG8vUmVkby9OZXcvT3Blbikgd29yayBub3JtYWxseVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnbm8tbWFyZ2luIG5vLXBhZGRpbmcnfSBzdHlsZT17e2hlaWdodDogJzEwMCUnfX0gaWQ9e2BwYXJlbnQtY29udGFpbmVyYH0gcmVmPXtwYXJlbnRSZWZ9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICF2aXNpYmxlICYmXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIGFsaWduQ29udGVudDogJ2NlbnRlcidcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPExvdHRpZUljb24gaWQ9eyd3YWl0aW5nLXNtJ30vPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSAmJlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzAgMzJweCAwIDMycHgnLFxuICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICc2NHB4J1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydkYW5nZXInfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdz17IVV0aWxzLmlzTnVsbChlcnJvck1lc3NhZ2UpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0RXJyb3JNZXNzYWdlKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzbWlzc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e2NvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpJ319PntlcnJvck1lc3NhZ2V9PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgey8qIFNldHRpbmcgZW5hYmxlVHJhY2tDaGFuZ2VzIHRvIGZhbHNlIGRvZXMgbm90IHdvcmsgc28gd2UgZHVwbGljYXRlIHRoZSBjb2RlKi99XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZSAmJiBpdGVtcyAmJiAoVXRpbHMuaXNOdWxsKHByb3BzLnRyYWNrQ2hhbmdlcykgfHwgcHJvcHMudHJhY2tDaGFuZ2VzID09PSB0cnVlKSAmJlxuICAgICAgICAgICAgICAgIDxEb2N1bWVudEVkaXRvckNvbnRhaW5lckNvbXBvbmVudCBpZD17YCR7cHJvcHMuaWR9LWNvbnRhaW5lcmB9IGhlaWdodD17ZWRpdG9ySGVpZ2h0ID4gMCA/IGAke2VkaXRvckhlaWdodH1weGAgOiAnMTIwMHB4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXsoc2NvcGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhaW5lcihzY29wZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IHNjb3BlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlUGVyc2lzdGVuY2U9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyQ2xpY2s9e29uVG9vbGJhckNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFySXRlbXM9e2l0ZW1zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdEVkaXRpbmc9e3Byb3BzLnJlYWRPbmx5ICYmICFwcm9wcy5jb21tZW50c09ubHl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQcm9wZXJ0aWVzUGFuZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVRyYWNrQ2hhbmdlcz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQXV0b0ZvY3VzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZVVybD17Z2V0U2VydmljZVVybCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUb29sYmFyPXshKHByb3BzLnJlYWRPbmx5KSB8fCBwcm9wcy5jb21tZW50c09ubHl9Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlICYmIGl0ZW1zICYmIHByb3BzLnRyYWNrQ2hhbmdlcyA9PT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgICA8RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQgaWQ9e2Ake3Byb3BzLmlkfS1jb250YWluZXJgfSBoZWlnaHQ9e2VkaXRvckhlaWdodCA+IDAgPyBgJHtlZGl0b3JIZWlnaHR9cHhgIDogJzEyMDBweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17KHNjb3BlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWluZXIoc2NvcGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBzY29wZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZD17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVBlcnNpc3RlbmNlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckNsaWNrPXtvblRvb2xiYXJDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckl0ZW1zPXtpdGVtc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3RFZGl0aW5nPXtwcm9wcy5yZWFkT25seSAmJiAhcHJvcHMuY29tbWVudHNPbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UHJvcGVydGllc1BhbmU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVBdXRvRm9jdXM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVXJsPXtnZXRTZXJ2aWNlVXJsKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVRvb2xiYXI9eyEocHJvcHMucmVhZE9ubHkpIHx8IHByb3BzLmNvbW1lbnRzT25seX0vPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV29yZERvY3VtZW50Vmlld2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxvQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksdUJBQUEsR0FBQUosT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUssbUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQUosc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQUwsc0JBQUEsQ0FB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
|
package/package.json
CHANGED