@agilemotion/oui-react-js 2.0.14 → 2.0.15

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.
@@ -55,6 +55,8 @@ const DashboardCard = props => {
55
55
  if (path && displayType) {
56
56
  if (displayType === 'VIEW') {
57
57
  (0, _RestUtils.sendRequest)(path, data => {
58
+ // sendRequest auto-decodes the {_cdui_z} wire
59
+ // wrap for /ui/api/v*/ URLs.
58
60
  data.id = data.id + "_" + keyCounter++;
59
61
  let dashboardView = {};
60
62
  dashboardView.config = data;
@@ -103,6 +105,7 @@ const DashboardCard = props => {
103
105
  // TODO: Make the base URL dynamic
104
106
  let url = location + _ApplicationManager.default.getContextRoot() + _ApplicationManager.default.getUIConfigPath() + '/dashboard/get?version=1.0&id=' + settings.path;
105
107
  (0, _RestUtils.sendRequest)(url, data => {
108
+ // sendRequest auto-decodes the {_cdui_z} wire wrap.
106
109
  let defaultDisplayType = !_Utils.default.isNull(settings.parameters.displayType) ? settings.parameters.displayType : data.defaultDisplayType;
107
110
  if (_Utils.default.isNull(defaultDisplayType)) {
108
111
  console.error('Could not determine display type for dashboard');
@@ -600,4 +603,4 @@ const Dashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.f
600
603
  })))))))))));
601
604
  }));
602
605
  var _default = exports.default = Dashboard;
603
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0c3RyYXAiLCJfSWNvbiIsIl9JY29uQnV0dG9uIiwiX1BhcGVyIiwiX0J1dHRvbiIsIl9SZXN0VXRpbHMiLCJfUm91dGVBY3Rpb25IYW5kbGVyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50VHlwZSIsIl9BbGVydEJhciIsIl9yZWFjdFByb21pc2VUcmFja2VyIiwiX1ZpZXciLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJsb2NhdGlvbiIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJ0ZXh0IiwicmVzcG9uc2UiLCJrZXlDb3VudGVyIiwiYWxlcnRCYXJIYW5kbGUiLCJEYXNoYm9hcmRDYXJkIiwicHJvcHMiLCJwYXRoIiwic2V0UGF0aCIsIlJlYWN0IiwidXNlU3RhdGUiLCJuYW1lIiwic2V0TmFtZSIsImRpc3BsYXlUeXBlIiwic2V0RGlzcGxheVR5cGUiLCJ2aWV3Iiwic2V0dmlldyIsInNldHRpbmdzIiwiaWQiLCJzZXRJZCIsImNvbnRlbnQiLCJzZXRDb250ZW50IiwicmVmIiwiY3JlYXRlUmVmIiwidXNlRWZmZWN0IiwiYWNjZXNzVG9rZW4iLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJpZFRva2VuIiwiaGFuZGxlIiwiYXBpIiwibG9hZGVkIiwic2VuZFJlcXVlc3QiLCJkYXRhIiwiZGFzaGJvYXJkVmlldyIsImNvbmZpZyIsInBhcmVudCIsInBvcFVwIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiYWRkRGFzaGJvYXJkVmlldyIsImVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiVmlldyIsImtleSIsInBhcmFtZXRlcnMiLCJmZXRjaENvbmZpZyIsIm1ldGhvZCIsImhlYWRlcnMiLCJ0cmFja1Byb21pc2UiLCJmZXRjaCIsImVuY29kZVVSSSIsInRoZW4iLCJjb25zb2xlIiwibG9nIiwiY2F0Y2giLCJhbGVydCIsIm1lc3NhZ2UiLCJlcnJvciIsImxvYWQiLCJ1cmwiLCJnZXRDb250ZXh0Um9vdCIsImdldFVJQ29uZmlnUGF0aCIsImRlZmF1bHREaXNwbGF5VHlwZSIsIlV0aWxzIiwiaXNOdWxsIiwiZGVmYXVsdE5hbWUiLCJkYXNoYm9hcmROYW1lIiwiZGVmYXVsdERhc2hib2FyZE5hbWUiLCJjb250ZW50UGF0aCIsImNvbmNhdCIsInRvTG93ZXJDYXNlIiwic2F2ZURhc2hib2FyZCIsInBvc3REYXRhIiwiZGlzcGxheUFsZXJ0IiwiU1lTVEVNX0VSUk9SX01FU1NBR0UiLCJtZXNzYWdlVHlwZSIsIm1lc3NhZ2VUZXh0IiwiZXZlbnQiLCJFdmVudCIsImV2ZW50TWFuYWdlciIsImZpcmVFdmVudCIsIkV2ZW50VHlwZSIsIk1FU1NBR0VfQVJSSVZFRCIsImRlbGV0ZURhc2hib2FyZCIsIm9wZW5Db25maXJtRGlhbG9nIiwicmVzdWx0Iiwib25EZWxldGUiLCJzdHlsZSIsIm1pbldpZHRoIiwib3ZlcmZsb3ciLCJjbGFzc05hbWUiLCJoZWlnaHQiLCJVbmNvbnRyb2xsZWREcm9wZG93biIsIkRyb3Bkb3duVG9nZ2xlIiwiY29sb3IiLCJ3aWR0aCIsIm1hcmdpbiIsIm5hdiIsInBhZGRpbmciLCJEcm9wZG93bk1lbnUiLCJ0YWciLCJOYXZMaW5rIiwiRHJvcGRvd25JdGVtIiwib25DbGljayIsImRpc2FibGVkIiwiZm9udFNpemUiLCJ0eXBlIiwiV29ya0Zsb3dDYXJkIiwic3AiLCJzZXRTcCIsIm1pblciLCJzZXRNaW5XIiwicm91dGVBY3Rpb24iLCJpbm5lcldpZHRoIiwidGl0bGUiLCJpdGVtQ291bnQiLCJtYXJnaW5Ub3AiLCJ2YXJpYW50Iiwic2l6ZSIsInBhcnNlRmxvYXQiLCJSb3V0ZUFjdGlvbkhhbmRsZXIiLCJleGVjdXRlIiwidmlld1JlZiIsIkRhc2hib2FyZCIsIm1lbW8iLCJmb3J3YXJkUmVmIiwidXNlckRhc2hib2FyZHMiLCJnZXREYXNoYm9hcmRTZXR0aW5ncyIsInRhc2tTdW1tYXJ5Iiwic2V0VGFza1N1bW1hcnkiLCJtZW51SXRlbXMiLCJzZXRNZW51SXRlbXMiLCJjYXJkQ29scyIsInNldENhcmRDb2xzIiwiY29sdW1uSGVpZ2h0cyIsInNldENvbHVtbkhlaWdodHMiLCJudW1Db2xzIiwiZ2V0Q2hpbGRyZW4iLCJnZXRDaGlsZCIsImdldERhc2hib2FyZE1lbnUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNlcnZpY2UiLCJ2YWx1ZSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiY29udGVudFR5cGUiLCJpbnZva2VSZXN0IiwibWVudXMiLCJsb2FkTWVudXMiLCJzeXN0ZW1Qcm9maWxlRHRvIiwibW9kdWxlcyIsImRhc2hib2FyZE1lbnVpdGVtcyIsImxlbmd0aCIsIm1vZHVsZSIsImRhc2hib2FyZE1lbnUiLCJqIiwibWVudSIsIml0ZW1zIiwiaXRlbSIsInB1c2giLCJzZXR1cENhcmRDb2xzIiwidG90YWxJdGVtcyIsImNvbHMiLCJBcnJheSIsImZyb20iLCJfIiwiZm9yRWFjaCIsImluZGV4IiwibWF4SXRlbXMiLCJNYXRoIiwibWF4IiwibWFwIiwiY29sIiwiYmFzZUhlaWdodFBlckNhcmQiLCJ0b3RhbFRhcmdldEhlaWdodCIsImhlaWdodHMiLCJ0b0ZpeGVkIiwiZGFzaGJvYXJkcyIsImRhc2hib2FyZCIsInNldERhc2hib2FyZFZpZXciLCJjbGVhckRhc2hib2FyZFZpZXdzIiwiYWRkRGFzaGJvYXJkQ2FyZCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWN0aW9ucyIsIkZyYWdtZW50IiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsImdhcCIsImVuZCIsImF0dHJpYnV0ZXMiLCJsYWJlbCIsIm1heEhlaWdodCIsIm92ZXJmbG93WSIsIm92ZXJmbG93WCIsInZpZXdJZCIsInBhZGRpbmdSaWdodCIsIm1pbkhlaWdodCIsInBlcnNvbmFsV29ya0l0ZW1Db3VudCIsImdyb3VwV29ya0l0ZW1Db3VudCIsImR1ZVRvZGF5SXRlbUNvdW50IiwiY29sSW5kZXgiLCJmbGV4IiwiYm94U2l6aW5nIiwiZmxleERpcmVjdGlvbiIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsImJvcmRlclJhZGl1cyIsInNwbGljZSIsImluZGV4T2YiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3ZpZXcvRGFzaGJvYXJkLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHt1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQge0Ryb3Bkb3duSXRlbSwgRHJvcGRvd25NZW51LCBEcm9wZG93blRvZ2dsZSwgTmF2TGluaywgVW5jb250cm9sbGVkRHJvcGRvd259IGZyb20gJ3JlYWN0c3RyYXAnO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vY29tcG9uZW50cy9JY29uJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvbic7XG5pbXBvcnQgUGFwZXIgZnJvbSAnQG11aS9tYXRlcmlhbC9QYXBlcic7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQnV0dG9uJztcbmltcG9ydCB7aW52b2tlUmVzdCwgcG9zdERhdGEsIHNlbmRSZXF1ZXN0fSBmcm9tICcuLi9SZXN0VXRpbHMnO1xuaW1wb3J0IFJvdXRlQWN0aW9uSGFuZGxlciBmcm9tICcuLi9ldmVudC9Sb3V0ZUFjdGlvbkhhbmRsZXInO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgQWxlcnRCYXIgZnJvbSAnLi4vY29tcG9uZW50cy9BbGVydEJhcic7XG5pbXBvcnQge3RyYWNrUHJvbWlzZX0gZnJvbSBcInJlYWN0LXByb21pc2UtdHJhY2tlclwiO1xuaW1wb3J0IHtWaWV3fSBmcm9tIFwiLi4vY29tcG9uZW50cy9sYXlvdXQvVmlld1wiO1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCB0ZXh0ID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcbn07XG5cbmxldCBrZXlDb3VudGVyID0gMDtcblxuY29uc3QgYWxlcnRCYXJIYW5kbGUgPSB7fTtcbmNvbnN0IERhc2hib2FyZENhcmQgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbcGF0aCwgc2V0UGF0aF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbmFtZSwgc2V0TmFtZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbZGlzcGxheVR5cGUsIHNldERpc3BsYXlUeXBlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2aWV3LCBzZXR2aWV3XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IHtzZXR0aW5nc30gPSBwcm9wcztcbiAgICBjb25zdCBbaWQsIHNldElkXSA9IFJlYWN0LnVzZVN0YXRlKHByb3BzLnNldHRpbmdzLmlkKTtcbiAgICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbcmVmXSA9IFJlYWN0LnVzZVN0YXRlKFJlYWN0LmNyZWF0ZVJlZigpKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpO1xuICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IHtcbiAgICAgICAgICAgICAgICBhcGk6IHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkYXNoYm9hcmQtbWVudXMnO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChwYXRoICYmIGRpc3BsYXlUeXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3BsYXlUeXBlID09PSAnVklFVycpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VuZFJlcXVlc3QocGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCA9IGRhdGEuaWQgKyBcIl9cIiArIGtleUNvdW50ZXIrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGFzaGJvYXJkVmlldyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuY29uZmlnID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LnBhcmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcucG9wVXAgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LndpbmRvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuY29uZmlnLndpbmRvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuaGFuZGxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuYWRkRGFzaGJvYXJkVmlldyhkYXNoYm9hcmRWaWV3LCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IDxWaWV3IGtleT17ZGF0YS5pZCArIFwiX1wiICsga2V5Q291bnRlcn0gY29uZmlnPXtkYXRhfSBwYXJhbWV0ZXJzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2Rhc2hib2FyZFZpZXcuaGFuZGxlfS8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHZpZXcoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmV0Y2hDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQvaHRtbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRUb2tlbic6IGlkVG9rZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoKGVuY29kZVVSSShwYXRoKSwgZmV0Y2hDb25maWcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4odGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNPTlRFTlQgOiBcIiwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRlbnQoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoZS5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbcGF0aCwgZGlzcGxheVR5cGVdKTtcblxuICAgIGZ1bmN0aW9uIGxvYWQoKSB7XG4gICAgICAgIGlmICghcGF0aCkge1xuICAgICAgICAgICAgLy8gVE9ETzogTWFrZSB0aGUgYmFzZSBVUkwgZHluYW1pY1xuICAgICAgICAgICAgbGV0IHVybCA9IGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KClcbiAgICAgICAgICAgICAgICArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVSUNvbmZpZ1BhdGgoKSArICcvZGFzaGJvYXJkL2dldD92ZXJzaW9uPTEuMCZpZD0nICsgc2V0dGluZ3MucGF0aDtcbiAgICAgICAgICAgIHNlbmRSZXF1ZXN0KHVybCxcbiAgICAgICAgICAgICAgICAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdERpc3BsYXlUeXBlID0gIVV0aWxzLmlzTnVsbChzZXR0aW5ncy5wYXJhbWV0ZXJzLmRpc3BsYXlUeXBlKSA/IHNldHRpbmdzLnBhcmFtZXRlcnMuZGlzcGxheVR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZGF0YS5kZWZhdWx0RGlzcGxheVR5cGU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChkZWZhdWx0RGlzcGxheVR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIGRpc3BsYXkgdHlwZSBmb3IgZGFzaGJvYXJkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzZXREaXNwbGF5VHlwZShkZWZhdWx0RGlzcGxheVR5cGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0TmFtZSA9ICFVdGlscy5pc051bGwoc2V0dGluZ3MucGFyYW1ldGVycy5kYXNoYm9hcmROYW1lKSA/IHNldHRpbmdzLnBhcmFtZXRlcnMuZGFzaGJvYXJkTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkYXRhLmRlZmF1bHREYXNoYm9hcmROYW1lO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZGVmYXVsdERpc3BsYXlUeXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGRldGVybWluZSBhIGRlZmF1bHQgbmFtZSBmb3IgZGFzaGJvYXJkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzZXROYW1lKGRlZmF1bHROYW1lKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHREaXNwbGF5VHlwZSA9PT0gJ1ZJRVcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVSUNvbmZpZ1BhdGgoKSArICcvdmlldy9nZXQ/dmVyc2lvbj0xLjAmaWQ9JyArIGRhdGEuY29udGVudFBhdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYXRoKHVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXREaXNwbGF5VHlwZShkZWZhdWx0RGlzcGxheVR5cGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGF0aChsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VUlDb25maWdQYXRoKCkgKyAnL2h0bWwvZ2V0P3ZlcnNpb249MS4wJmlkPSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGRhdGEuY29udGVudFBhdGggKyBgLSR7ZGVmYXVsdERpc3BsYXlUeXBlLnRvTG93ZXJDYXNlKCl9Lmh0bWwmYWNjZXNzX3Rva2VuPSR7YWNjZXNzVG9rZW59JmlkVG9rZW49JHtpZFRva2VufWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgbG9hZCgpO1xuICAgICAgICB9LCBbXVxuICAgICk7XG5cbiAgICBjb25zdCBzYXZlRGFzaGJvYXJkID0gKCkgPT4ge1xuICAgICAgICBzZXR0aW5ncy5wYXJhbWV0ZXJzLmRpc3BsYXlUeXBlID0gZGlzcGxheVR5cGU7XG4gICAgICAgIHNldHRpbmdzLnBhcmFtZXRlcnMuZGFzaGJvYXJkTmFtZSA9IG5hbWU7XG5cbiAgICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgICAgICBpZDogc2V0dGluZ3MuaWQsXG4gICAgICAgICAgICBwYXRoOiBzZXR0aW5ncy5wYXRoLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogc2V0dGluZ3MucGFyYW1ldGVyc1xuICAgICAgICB9O1xuXG4gICAgICAgIGxldCB1cmwgPSBgJHtsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9zeXN0ZW0vYXBpL3YxL3VzZXIvZGFzaGJvYXJkL3NhdmVgO1xuICAgICAgICBwb3N0RGF0YSh1cmwsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgc2V0dGluZ3MuaWQgPSByZXNwb25zZTtcbiAgICAgICAgICAgIHNldElkKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIGRpc3BsYXlBbGVydCgnU1VDQ0VTUycsICdEYXNoYm9hcmQgc2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgIH0sIChlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgIGRpc3BsYXlBbGVydCgnRVJST1InLCBVdGlscy5TWVNURU1fRVJST1JfTUVTU0FHRSlcbiAgICAgICAgfSwgdHJ1ZSwgZGF0YSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRpc3BsYXlBbGVydCA9IChtZXNzYWdlVHlwZSwgbWVzc2FnZVRleHQpID0+IHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgICBtZXNzYWdlVHlwZTogbWVzc2FnZVR5cGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlVGV4dFxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChhcHBsaWNhdGlvbk1hbmFnZXIsICdfc3lzX2Rhc2hib2FyZCcsIG1lc3NhZ2UpO1xuICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5NRVNTQUdFX0FSUklWRUQsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWxldGVEYXNoYm9hcmQgPSAoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNldHRpbmdzKSAmJiAhVXRpbHMuaXNOdWxsKHNldHRpbmdzLmlkKSkge1xuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLm9wZW5Db25maXJtRGlhbG9nKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZGFzaGJvYXJkPycsIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBgJHtsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9zeXN0ZW0vYXBpL3YxL3VzZXIvZGFzaGJvYXJkL2RlbGV0ZS8ke3NldHRpbmdzLmlkfWA7XG4gICAgICAgICAgICAgICAgICAgIHNlbmRSZXF1ZXN0KHVybCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMub25EZWxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8UGFwZXIgc3R5bGU9e3tcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nXG4gICAgICAgIH19XG4gICAgICAgICAgICAgICBjbGFzc05hbWU9eydjb2wnfSByZWY9e3JlZn0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sLSotKid9IHN0eWxlPXt7aGVpZ2h0OiAnNjRweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgPFVuY29udHJvbGxlZERyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duVG9nZ2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzMycHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICczMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAnOHB4IDhweCAwIDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwibWVudS1saXN0LWdyb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICczMnB4JywgaGVpZ2h0OiAnMzJweCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwiZmEgZmEtZWxsaXBzaXMtdiBmYS14c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHN0eWxlPXt7cGFkZGluZzogJzNweCd9fS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93blRvZ2dsZT57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnUgY2xhc3NOYW1lPVwiZHJvcGRvd24tbmF2YmFyXCIgdGFnPVwidWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypEaXNhYmxlIHRoaXMgYnV0dG9uIGlmIGlkIGlzIGFscmVhZHkgc2F2ZWQuIEFmdGVyIGNyZWF0aW5nIGRhc2hib2FyZCBwcm9wZXJ0aWVzIHN1Y2ggYXMgZmlsdGVycywgdGhpcyBidXR0b24gbXVzdCByZW1haW4gZW5hYmxlZCBhdCBhbGwgdGltZXMqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkxpbmsgdGFnPVwibGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtIGNsYXNzTmFtZT1cIm5hdi1pdGVtXCIgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRGFzaGJvYXJkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gZGlzYWJsZWQ9eyFVdGlscy5pc051bGwoaWQpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydTQVZFJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTmF2TGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2TGluayB0YWc9XCJsaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW0gY2xhc3NOYW1lPVwibmF2LWl0ZW1cIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZURhc2hib2FyZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IGRpc2FibGVkPXtVdGlscy5pc051bGwoaWQpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydERUxFVEUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L05hdkxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9VbmNvbnRyb2xsZWREcm9wZG93bj57JyAnfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sLSotKid9IHN0eWxlPXt7cGFkZGluZzogJzE0cHggMCAwIDEycHgnfX0+XG4gICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7Zm9udFNpemU6ICcyNHB4J319PntuYW1lfTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnY2FsYygxMDAlIC0gNjRweCknLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICc4cHggMCAzMnB4IDMycHgnXG4gICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwocGF0aCkgJiYgIVV0aWxzLmlzTnVsbChkaXNwbGF5VHlwZSkgJiYgZGlzcGxheVR5cGUgIT09ICdWSUVXJyAmJlxuICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGRhdGE9e3BhdGh9IHR5cGU9XCJ0ZXh0L2h0bWxcIiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgIH19Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAhVXRpbHMuaXNOdWxsKHBhdGgpICYmIGRpc3BsYXlUeXBlICE9PSAnVklFVycgJiZcbiAgICAgICAgICAgICAgICAgICAgPHA+TG9hZGluZy4uLjwvcD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VHlwZSA9PT0gJ1ZJRVcnICYmICFVdGlscy5pc051bGwodmlldykgJiZcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e3dpZHRoOiAnMTAwJScsIGhlaWdodDogXCIxMDAlXCJ9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L1BhcGVyPlxuICAgICk7XG59O1xuXG5jb25zdCBXb3JrRmxvd0NhcmQgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbc3AsIHNldFNwXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFttaW5XLCBzZXRNaW5XXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IHJvdXRlQWN0aW9uID0ge1xuICAgICAgICAnYWN0aW9uVHlwZSc6ICdyb3V0ZScsXG4gICAgICAgICdwYXJlbnQnOiB0cnVlXG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNDAwKSB7XG4gICAgICAgICAgICAgICAgc2V0U3AoMTYpO1xuICAgICAgICAgICAgICAgIHNldE1pblcoMjgwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0U3AoNDgpO1xuICAgICAgICAgICAgICAgIHNldE1pblcoMzAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgVXRpbHMuaXNOdWxsKHNwKSB8fCBVdGlscy5pc051bGwobWluVykgP1xuICAgICAgICAgICAgbnVsbCA6XG4gICAgICAgICAgICA8UGFwZXIgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogYCR7bWluV31weGAsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiBwcm9wcy5tYXJnaW4sXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTUycHgnXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sLSotKid9IHN0eWxlPXt7d2lkdGg6ICc3MCUnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogYDE2cHggJHtzcH1weCAxNnB4ICR7c3B9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICc4cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC41NCknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yayBJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogYDE2cHggJHtzcH1weCA0OHB4ICR7c3B9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMjBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IGAwICR7c3B9cHggMTZweCAke3NwfXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzMwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuaXRlbUNvdW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbC0qLSonfSBzdHlsZT17e21hcmdpblRvcDogJzUwcHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17J2NvbnRhaW5lZCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9eydwcmltYXJ5J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtwYXJzZUZsb2F0KHByb3BzLml0ZW1Db3VudCkgPT09IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZUFjdGlvbi5wYXRoID0gcHJvcHMucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm91dGVBY3Rpb25IYW5kbGVyLmV4ZWN1dGUocm91dGVBY3Rpb24sIG51bGwsIHByb3BzLnZpZXdSZWYsICdfc3lzX2Rhc2hib2FyZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9QYXBlcj5cbiAgICApO1xufTtcblxuY29uc3QgRGFzaGJvYXJkID0gUmVhY3QubWVtbyhSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gICAgY29uc3QgW3VzZXJEYXNoYm9hcmRzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgICAgICAhVXRpbHMuaXNOdWxsKGFwcGxpY2F0aW9uTWFuYWdlci5nZXREYXNoYm9hcmRTZXR0aW5ncygpLnVzZXJEYXNoYm9hcmRzKSA/IGFwcGxpY2F0aW9uTWFuYWdlci5nZXREYXNoYm9hcmRTZXR0aW5ncygpLnVzZXJEYXNoYm9hcmRzIDogW10pO1xuICAgIGNvbnN0IFtzZXR0aW5nc10gPSBSZWFjdC51c2VTdGF0ZShhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0RGFzaGJvYXJkU2V0dGluZ3MoKSk7XG4gICAgY29uc3QgW3Rhc2tTdW1tYXJ5LCBzZXRUYXNrU3VtbWFyeV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbWVudUl0ZW1zLCBzZXRNZW51SXRlbXNdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2NhcmRDb2xzLCBzZXRDYXJkQ29sc10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY29sdW1uSGVpZ2h0cywgc2V0Q29sdW1uSGVpZ2h0c10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgbGV0IG51bUNvbHMgPSAyO1xuXG4gICAgY29uc3QgYXBpID0ge1xuICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICByZXR1cm4gJ19zeXNfZGFzaGJvYXJkJztcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Q2hpbGRyZW46ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBbYWxlcnRCYXJIYW5kbGVdO1xuICAgICAgICB9LFxuICAgICAgICBnZXRDaGlsZDogKGlkKSA9PiB7XG4gICAgICAgICAgICBpZiAoaWQgPT09ICdkYXNoYm9hcmRBbGVydCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWxlcnRCYXJIYW5kbGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZSA9IHtcbiAgICAgICAgJ2FwaSc6IGFwaVxuICAgIH07XG5cbiAgICBjb25zdCBnZXREYXNoYm9hcmRNZW51ID0gKHBhdGgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBsZXQgc2VydmljZSA9IHtcbiAgICAgICAgICAgICAgICB1cmw6ICcvdWkvYXBpL3YxL21lbnUvZ2V0JyxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBQYXJhbWV0ZXJUeXBlOiAnUVVFUllfUEFSQU1FVEVSJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMS4wLFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cFBhcmFtZXRlclR5cGU6ICdRVUVSWV9QQVJBTUVURVInXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGludm9rZVJlc3Qoc2VydmljZSwge1xuICAgICAgICAgICAgICAgICAgICBhcGk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rhc2hib2FyZC1tZW51cyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAnZGFzaGJvYXJkLW1lbnVzJywgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5tZW51cyk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgIH0sIG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gbG9hZE1lbnVzKCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKG1lbnVJdGVtcykgJiYgIVV0aWxzLmlzTnVsbChzZXR0aW5ncy5zeXN0ZW1Qcm9maWxlRHRvLm1vZHVsZXMpKSB7XG4gICAgICAgICAgICBsZXQgZGFzaGJvYXJkTWVudWl0ZW1zID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNldHRpbmdzLnN5c3RlbVByb2ZpbGVEdG8ubW9kdWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgPSBzZXR0aW5ncy5zeXN0ZW1Qcm9maWxlRHRvLm1vZHVsZXNbaV07XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwobW9kdWxlLmRhc2hib2FyZE1lbnUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtZW51cyA9IGF3YWl0IGdldERhc2hib2FyZE1lbnUobW9kdWxlLmRhc2hib2FyZE1lbnUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVudXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWVudXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWVudSA9IG1lbnVzW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW51Lml0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBtZW51Lml0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRNZW51aXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0TWVudUl0ZW1zKGRhc2hib2FyZE1lbnVpdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzZXR1cENhcmRDb2xzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbEl0ZW1zID0gdXNlckRhc2hib2FyZHMubGVuZ3RoO1xuXG4gICAgICAgIC8vIFNwZWNpYWwgY2FzZTogMSBvciAyIGNhcmRzIOKAlCBmdWxsIGhlaWdodFxuICAgICAgICBpZiAodG90YWxJdGVtcyA8PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiB0b3RhbEl0ZW1zfSwgKF8sIGkpID0+IFt1c2VyRGFzaGJvYXJkc1tpXV0pO1xuICAgICAgICAgICAgc2V0Q2FyZENvbHMoY29scyk7XG4gICAgICAgICAgICBzZXRDb2x1bW5IZWlnaHRzKEFycmF5LmZyb20oe2xlbmd0aDogdG90YWxJdGVtc30sICgpID0+ICcxMDAlJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGlzdHJpYnV0ZSByb3VuZC1yb2JpbiBpbnRvIGNvbHVtbnNcbiAgICAgICAgY29uc3QgY29scyA9IEFycmF5LmZyb20oe2xlbmd0aDogbnVtQ29sc30sICgpID0+IFtdKTtcbiAgICAgICAgdXNlckRhc2hib2FyZHMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbHNbaW5kZXggJSBudW1Db2xzXS5wdXNoKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgc2V0Q2FyZENvbHMoY29scyk7XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIG1heCBjYXJkIGNvdW50IGFjcm9zcyBhbGwgY29sdW1uc1xuICAgICAgICBjb25zdCBtYXhJdGVtcyA9IE1hdGgubWF4KC4uLmNvbHMubWFwKGNvbCA9PiBjb2wubGVuZ3RoKSk7XG4gICAgICAgIGNvbnN0IGJhc2VIZWlnaHRQZXJDYXJkID0gNDA7IC8vIGluIHZoXG4gICAgICAgIGNvbnN0IHRvdGFsVGFyZ2V0SGVpZ2h0ID0gbWF4SXRlbXMgKiBiYXNlSGVpZ2h0UGVyQ2FyZDsgLy8gdG90YWwgaGVpZ2h0IHBlciBjb2x1bW4gaW4gdmhcblxuICAgICAgICAvLyBDYWxjdWxhdGUgdGFyZ2V0IGhlaWdodCBwZXIgY2FyZCBpbiBlYWNoIGNvbHVtblxuICAgICAgICBjb25zdCBoZWlnaHRzID0gY29scy5tYXAoY29sID0+XG4gICAgICAgICAgICBjb2wubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gYCR7KHRvdGFsVGFyZ2V0SGVpZ2h0IC8gY29sLmxlbmd0aCkudG9GaXhlZCgyKX12aGBcbiAgICAgICAgICAgICAgICA6ICcwdmgnXG4gICAgICAgICk7XG5cbiAgICAgICAgc2V0Q29sdW1uSGVpZ2h0cyhoZWlnaHRzKTtcbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwodGFza1N1bW1hcnkpKSB7XG4gICAgICAgICAgICAgICAgc2VuZFJlcXVlc3QoYCR7bG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vYnBtL2FwaS92MS9zdW1tYXJ5YCwgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRhc2tTdW1tYXJ5KHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyA6IFNob3cgZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICB9LCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2VuZFJlcXVlc3QoYCR7bG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vc3lzdGVtL2FwaS92MS91c2VyL2Rhc2hib2FyZC9saXN0YCwgKGRhc2hib2FyZHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZGFzaGJvYXJkcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGFzaGJvYXJkIG9mIGRhc2hib2FyZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGFzaGJvYXJkcy5wdXNoKGRhc2hib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwQ2FyZENvbHMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyA6IFNob3cgZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgICAgIH0sIHRydWUsIHRydWUpO1xuXG4gICAgICAgICAgICBsb2FkTWVudXMoKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNldHRpbmdzKSAmJiAhVXRpbHMuaXNOdWxsKHVzZXJEYXNoYm9hcmRzKSAmJiBVdGlscy5pc051bGwoY2FyZENvbHMpKSB7XG4gICAgICAgICAgICAgICAgc2V0dXBDYXJkQ29scygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0RGFzaGJvYXJkVmlldyh7aGFuZGxlOiBoYW5kbGV9KTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAga2V5Q291bnRlciA9IDA7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmNsZWFyRGFzaGJvYXJkVmlld3MoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IGFkZERhc2hib2FyZENhcmQgPSAoaXRlbSkgPT4ge1xuICAgICAgICBsZXQgcGF0aCA9IGl0ZW0uZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zWzBdLmFjdGlvbnNbMF0ucGF0aDtcbiAgICAgICAgbGV0IHNldHRpbmdzID0ge307XG4gICAgICAgIHNldHRpbmdzLnBhdGggPSBwYXRoO1xuICAgICAgICBzZXR0aW5ncy5wYXJhbWV0ZXJzID0ge307XG5cbiAgICAgICAgdXNlckRhc2hib2FyZHMucHVzaChzZXR0aW5ncyk7XG4gICAgICAgIHNldHVwQ2FyZENvbHMoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiByZWY9e3JlZn0gc3R5bGU9e3toZWlnaHQ6ICczMDBweCd9fT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAhVXRpbHMuaXNOdWxsKHNldHRpbmdzKSAmJlxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXA6ICc0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+RGFzaGJvYXJkPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxVbmNvbnRyb2xsZWREcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93blRvZ2dsZSBjb2xvcj1cImRlZmF1bHRcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgbmF2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtY29udHJvbHM9XCJtZW51LWxpc3QtZ3Jvd1wiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnQUREJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25Ub2dnbGU+eycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhVXRpbHMuaXNOdWxsKG1lbnVJdGVtcykgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnUgY2xhc3NOYW1lPVwiZHJvcGRvd24tbmF2YmFyXCIgZW5kIHRhZz1cInVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVudUl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2TGluayB0YWc9XCJsaVwiIGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJuYXYtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRGFzaGJvYXJkQ2FyZChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpdGVtLmF0dHJpYnV0ZXMubGFiZWx9eycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+eycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L05hdkxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9VbmNvbnRyb2xsZWREcm9wZG93bj57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7bWF4SGVpZ2h0OiAnY2FsYygxMDBkdmggLSAzMnB4IC0gdmFyKC0taGVhZGVyLWgpKScsIG92ZXJmbG93WTogJ2F1dG8nfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvd1g6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcwIDRweCAwIDAnXG4gICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnRCYXIgY29uZmlnPXt7aWQ6ICdkYXNoYm9hcmRBbGVydCd9fSBoYW5kbGU9e2FsZXJ0QmFySGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9eydfc3lzX2Rhc2hib2FyZCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwodGFza1N1bW1hcnkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogJzE2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiAnMTYwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFdvcmtGbG93Q2FyZCBtYXJnaW49eycwIDAgOHB4IDhweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsnQXNzaWduZWQgdG8gTWUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtQ291bnQ9e3Rhc2tTdW1tYXJ5LnBlcnNvbmFsV29ya0l0ZW1Db3VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD17Jy93b3JrZmxvdy92aWV3cy9wZXJzb25hbC13b3JrLWl0ZW1zLmpzb24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxXb3JrRmxvd0NhcmQgbWFyZ2luPXsnMCAwIDhweCA4cHgnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17J0F2YWlsYWJsZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db3VudD17dGFza1N1bW1hcnkuZ3JvdXBXb3JrSXRlbUNvdW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPXsnL3dvcmtmbG93L3ZpZXdzL2dyb3VwLXdvcmstaXRlbXMuanNvbid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFdvcmtGbG93Q2FyZCBtYXJnaW49eycwIDAgOHB4IDhweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsnRHVlIFRvZGF5J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUNvdW50PXt0YXNrU3VtbWFyeS5kdWVUb2RheUl0ZW1Db3VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD17Jy93b3JrZmxvdy92aWV3cy9kdWUtdG9kYXktd29yay1pdGVtcy5qc29uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dYOiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJ2NhbGMoMTAwZHZoIC0gMTU4cHggLSA2NHB4IC0gdmFyKC0taGVhZGVyLWgpKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICdjYWxjKDEwMGR2aCAtIDE1OHB4IC0gNjRweCAtIHZhcigtLWhlYWRlci1oKSknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRDb2xzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdXNlckRhc2hib2FyZHMubGVuZ3RoIDw9IDIgPyAnMTAwJScgOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2FyZENvbHMubWFwKChjb2wsIGNvbEluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjb2xJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FwOiAnMTJweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnNTAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogY29sSW5kZXggJSBudW1Db2xzID8gJzRweCcgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogKGNhcmRDb2xzLmxlbmd0aCA+IDEgJiYgIShjb2xJbmRleCAlIG51bUNvbHMpKSA/ICc0cHgnIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbC5tYXAoKGRhc2hib2FyZCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjb2x1bW5IZWlnaHRzW2NvbEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hib2FyZENhcmQgc2V0dGluZ3M9e2Rhc2hib2FyZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtjb2xJbmRleCArIGluZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckRhc2hib2FyZHMuc3BsaWNlKHVzZXJEYXNoYm9hcmRzLmluZGV4T2YoZGFzaGJvYXJkKSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXBDYXJkQ29scygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KSk7XG5cbmV4cG9ydCBkZWZhdWx0IERhc2hib2FyZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsbUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLG1CQUFBLEdBQUFSLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBVyxNQUFBLEdBQUFULHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBWSxXQUFBLEdBQUFWLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBYSxVQUFBLEdBQUFYLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBYyxTQUFBLEdBQUFaLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBZSxvQkFBQSxHQUFB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
606
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0c3RyYXAiLCJfSWNvbiIsIl9JY29uQnV0dG9uIiwiX1BhcGVyIiwiX0J1dHRvbiIsIl9SZXN0VXRpbHMiLCJfUm91dGVBY3Rpb25IYW5kbGVyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50VHlwZSIsIl9BbGVydEJhciIsIl9yZWFjdFByb21pc2VUcmFja2VyIiwiX1ZpZXciLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJsb2NhdGlvbiIsIndpbmRvdyIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJ0ZXh0IiwicmVzcG9uc2UiLCJrZXlDb3VudGVyIiwiYWxlcnRCYXJIYW5kbGUiLCJEYXNoYm9hcmRDYXJkIiwicHJvcHMiLCJwYXRoIiwic2V0UGF0aCIsIlJlYWN0IiwidXNlU3RhdGUiLCJuYW1lIiwic2V0TmFtZSIsImRpc3BsYXlUeXBlIiwic2V0RGlzcGxheVR5cGUiLCJ2aWV3Iiwic2V0dmlldyIsInNldHRpbmdzIiwiaWQiLCJzZXRJZCIsImNvbnRlbnQiLCJzZXRDb250ZW50IiwicmVmIiwiY3JlYXRlUmVmIiwidXNlRWZmZWN0IiwiYWNjZXNzVG9rZW4iLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJpZFRva2VuIiwiaGFuZGxlIiwiYXBpIiwibG9hZGVkIiwic2VuZFJlcXVlc3QiLCJkYXRhIiwiZGFzaGJvYXJkVmlldyIsImNvbmZpZyIsInBhcmVudCIsInBvcFVwIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiYWRkRGFzaGJvYXJkVmlldyIsImVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiVmlldyIsImtleSIsInBhcmFtZXRlcnMiLCJmZXRjaENvbmZpZyIsIm1ldGhvZCIsImhlYWRlcnMiLCJ0cmFja1Byb21pc2UiLCJmZXRjaCIsImVuY29kZVVSSSIsInRoZW4iLCJjb25zb2xlIiwibG9nIiwiY2F0Y2giLCJhbGVydCIsIm1lc3NhZ2UiLCJlcnJvciIsImxvYWQiLCJ1cmwiLCJnZXRDb250ZXh0Um9vdCIsImdldFVJQ29uZmlnUGF0aCIsImRlZmF1bHREaXNwbGF5VHlwZSIsIlV0aWxzIiwiaXNOdWxsIiwiZGVmYXVsdE5hbWUiLCJkYXNoYm9hcmROYW1lIiwiZGVmYXVsdERhc2hib2FyZE5hbWUiLCJjb250ZW50UGF0aCIsImNvbmNhdCIsInRvTG93ZXJDYXNlIiwic2F2ZURhc2hib2FyZCIsInBvc3REYXRhIiwiZGlzcGxheUFsZXJ0IiwiU1lTVEVNX0VSUk9SX01FU1NBR0UiLCJtZXNzYWdlVHlwZSIsIm1lc3NhZ2VUZXh0IiwiZXZlbnQiLCJFdmVudCIsImV2ZW50TWFuYWdlciIsImZpcmVFdmVudCIsIkV2ZW50VHlwZSIsIk1FU1NBR0VfQVJSSVZFRCIsImRlbGV0ZURhc2hib2FyZCIsIm9wZW5Db25maXJtRGlhbG9nIiwicmVzdWx0Iiwib25EZWxldGUiLCJzdHlsZSIsIm1pbldpZHRoIiwib3ZlcmZsb3ciLCJjbGFzc05hbWUiLCJoZWlnaHQiLCJVbmNvbnRyb2xsZWREcm9wZG93biIsIkRyb3Bkb3duVG9nZ2xlIiwiY29sb3IiLCJ3aWR0aCIsIm1hcmdpbiIsIm5hdiIsInBhZGRpbmciLCJEcm9wZG93bk1lbnUiLCJ0YWciLCJOYXZMaW5rIiwiRHJvcGRvd25JdGVtIiwib25DbGljayIsImRpc2FibGVkIiwiZm9udFNpemUiLCJ0eXBlIiwiV29ya0Zsb3dDYXJkIiwic3AiLCJzZXRTcCIsIm1pblciLCJzZXRNaW5XIiwicm91dGVBY3Rpb24iLCJpbm5lcldpZHRoIiwidGl0bGUiLCJpdGVtQ291bnQiLCJtYXJnaW5Ub3AiLCJ2YXJpYW50Iiwic2l6ZSIsInBhcnNlRmxvYXQiLCJSb3V0ZUFjdGlvbkhhbmRsZXIiLCJleGVjdXRlIiwidmlld1JlZiIsIkRhc2hib2FyZCIsIm1lbW8iLCJmb3J3YXJkUmVmIiwidXNlckRhc2hib2FyZHMiLCJnZXREYXNoYm9hcmRTZXR0aW5ncyIsInRhc2tTdW1tYXJ5Iiwic2V0VGFza1N1bW1hcnkiLCJtZW51SXRlbXMiLCJzZXRNZW51SXRlbXMiLCJjYXJkQ29scyIsInNldENhcmRDb2xzIiwiY29sdW1uSGVpZ2h0cyIsInNldENvbHVtbkhlaWdodHMiLCJudW1Db2xzIiwiZ2V0Q2hpbGRyZW4iLCJnZXRDaGlsZCIsImdldERhc2hib2FyZE1lbnUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNlcnZpY2UiLCJ2YWx1ZSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiY29udGVudFR5cGUiLCJpbnZva2VSZXN0IiwibWVudXMiLCJsb2FkTWVudXMiLCJzeXN0ZW1Qcm9maWxlRHRvIiwibW9kdWxlcyIsImRhc2hib2FyZE1lbnVpdGVtcyIsImxlbmd0aCIsIm1vZHVsZSIsImRhc2hib2FyZE1lbnUiLCJqIiwibWVudSIsIml0ZW1zIiwiaXRlbSIsInB1c2giLCJzZXR1cENhcmRDb2xzIiwidG90YWxJdGVtcyIsImNvbHMiLCJBcnJheSIsImZyb20iLCJfIiwiZm9yRWFjaCIsImluZGV4IiwibWF4SXRlbXMiLCJNYXRoIiwibWF4IiwibWFwIiwiY29sIiwiYmFzZUhlaWdodFBlckNhcmQiLCJ0b3RhbFRhcmdldEhlaWdodCIsImhlaWdodHMiLCJ0b0ZpeGVkIiwiZGFzaGJvYXJkcyIsImRhc2hib2FyZCIsInNldERhc2hib2FyZFZpZXciLCJjbGVhckRhc2hib2FyZFZpZXdzIiwiYWRkRGFzaGJvYXJkQ2FyZCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWN0aW9ucyIsIkZyYWdtZW50IiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsImdhcCIsImVuZCIsImF0dHJpYnV0ZXMiLCJsYWJlbCIsIm1heEhlaWdodCIsIm92ZXJmbG93WSIsIm92ZXJmbG93WCIsInZpZXdJZCIsInBhZGRpbmdSaWdodCIsIm1pbkhlaWdodCIsInBlcnNvbmFsV29ya0l0ZW1Db3VudCIsImdyb3VwV29ya0l0ZW1Db3VudCIsImR1ZVRvZGF5SXRlbUNvdW50IiwiY29sSW5kZXgiLCJmbGV4IiwiYm94U2l6aW5nIiwiZmxleERpcmVjdGlvbiIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsImJvcmRlclJhZGl1cyIsInNwbGljZSIsImluZGV4T2YiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3ZpZXcvRGFzaGJvYXJkLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHt1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQge0Ryb3Bkb3duSXRlbSwgRHJvcGRvd25NZW51LCBEcm9wZG93blRvZ2dsZSwgTmF2TGluaywgVW5jb250cm9sbGVkRHJvcGRvd259IGZyb20gJ3JlYWN0c3RyYXAnO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vY29tcG9uZW50cy9JY29uJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvbic7XG5pbXBvcnQgUGFwZXIgZnJvbSAnQG11aS9tYXRlcmlhbC9QYXBlcic7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQnV0dG9uJztcbmltcG9ydCB7aW52b2tlUmVzdCwgcG9zdERhdGEsIHNlbmRSZXF1ZXN0fSBmcm9tICcuLi9SZXN0VXRpbHMnO1xuaW1wb3J0IFJvdXRlQWN0aW9uSGFuZGxlciBmcm9tICcuLi9ldmVudC9Sb3V0ZUFjdGlvbkhhbmRsZXInO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgQWxlcnRCYXIgZnJvbSAnLi4vY29tcG9uZW50cy9BbGVydEJhcic7XG5pbXBvcnQge3RyYWNrUHJvbWlzZX0gZnJvbSBcInJlYWN0LXByb21pc2UtdHJhY2tlclwiO1xuaW1wb3J0IHtWaWV3fSBmcm9tIFwiLi4vY29tcG9uZW50cy9sYXlvdXQvVmlld1wiO1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCB0ZXh0ID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcbn07XG5cbmxldCBrZXlDb3VudGVyID0gMDtcblxuY29uc3QgYWxlcnRCYXJIYW5kbGUgPSB7fTtcbmNvbnN0IERhc2hib2FyZENhcmQgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbcGF0aCwgc2V0UGF0aF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbmFtZSwgc2V0TmFtZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbZGlzcGxheVR5cGUsIHNldERpc3BsYXlUeXBlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2aWV3LCBzZXR2aWV3XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IHtzZXR0aW5nc30gPSBwcm9wcztcbiAgICBjb25zdCBbaWQsIHNldElkXSA9IFJlYWN0LnVzZVN0YXRlKHByb3BzLnNldHRpbmdzLmlkKTtcbiAgICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbcmVmXSA9IFJlYWN0LnVzZVN0YXRlKFJlYWN0LmNyZWF0ZVJlZigpKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpO1xuICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IHtcbiAgICAgICAgICAgICAgICBhcGk6IHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkYXNoYm9hcmQtbWVudXMnO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChwYXRoICYmIGRpc3BsYXlUeXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpc3BsYXlUeXBlID09PSAnVklFVycpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VuZFJlcXVlc3QocGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VuZFJlcXVlc3QgYXV0by1kZWNvZGVzIHRoZSB7X2NkdWlfen0gd2lyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyYXAgZm9yIC91aS9hcGkvdiovIFVSTHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5pZCA9IGRhdGEuaWQgKyBcIl9cIiArIGtleUNvdW50ZXIrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGFzaGJvYXJkVmlldyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuY29uZmlnID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LnBhcmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcucG9wVXAgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LndpbmRvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuY29uZmlnLndpbmRvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuaGFuZGxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuYWRkRGFzaGJvYXJkVmlldyhkYXNoYm9hcmRWaWV3LCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IDxWaWV3IGtleT17ZGF0YS5pZCArIFwiX1wiICsga2V5Q291bnRlcn0gY29uZmlnPXtkYXRhfSBwYXJhbWV0ZXJzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2Rhc2hib2FyZFZpZXcuaGFuZGxlfS8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHZpZXcoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmV0Y2hDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQvaHRtbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRUb2tlbic6IGlkVG9rZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoKGVuY29kZVVSSShwYXRoKSwgZmV0Y2hDb25maWcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4odGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNPTlRFTlQgOiBcIiwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRlbnQoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoZS5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbcGF0aCwgZGlzcGxheVR5cGVdKTtcblxuICAgIGZ1bmN0aW9uIGxvYWQoKSB7XG4gICAgICAgIGlmICghcGF0aCkge1xuICAgICAgICAgICAgLy8gVE9ETzogTWFrZSB0aGUgYmFzZSBVUkwgZHluYW1pY1xuICAgICAgICAgICAgbGV0IHVybCA9IGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KClcbiAgICAgICAgICAgICAgICArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVSUNvbmZpZ1BhdGgoKSArICcvZGFzaGJvYXJkL2dldD92ZXJzaW9uPTEuMCZpZD0nICsgc2V0dGluZ3MucGF0aDtcbiAgICAgICAgICAgIHNlbmRSZXF1ZXN0KHVybCxcbiAgICAgICAgICAgICAgICAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZW5kUmVxdWVzdCBhdXRvLWRlY29kZXMgdGhlIHtfY2R1aV96fSB3aXJlIHdyYXAuXG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0RGlzcGxheVR5cGUgPSAhVXRpbHMuaXNOdWxsKHNldHRpbmdzLnBhcmFtZXRlcnMuZGlzcGxheVR5cGUpID8gc2V0dGluZ3MucGFyYW1ldGVycy5kaXNwbGF5VHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkYXRhLmRlZmF1bHREaXNwbGF5VHlwZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGRlZmF1bHREaXNwbGF5VHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCBkZXRlcm1pbmUgZGlzcGxheSB0eXBlIGZvciBkYXNoYm9hcmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlUeXBlKGRlZmF1bHREaXNwbGF5VHlwZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHROYW1lID0gIVV0aWxzLmlzTnVsbChzZXR0aW5ncy5wYXJhbWV0ZXJzLmRhc2hib2FyZE5hbWUpID8gc2V0dGluZ3MucGFyYW1ldGVycy5kYXNoYm9hcmROYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGRhdGEuZGVmYXVsdERhc2hib2FyZE5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChkZWZhdWx0RGlzcGxheVR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIGEgZGVmYXVsdCBuYW1lIGZvciBkYXNoYm9hcmQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNldE5hbWUoZGVmYXVsdE5hbWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdERpc3BsYXlUeXBlID09PSAnVklFVycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVJQ29uZmlnUGF0aCgpICsgJy92aWV3L2dldD92ZXJzaW9uPTEuMCZpZD0nICsgZGF0YS5jb250ZW50UGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhdGgodXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlUeXBlKGRlZmF1bHREaXNwbGF5VHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYXRoKGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVSUNvbmZpZ1BhdGgoKSArICcvaHRtbC9nZXQ/dmVyc2lvbj0xLjAmaWQ9J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZGF0YS5jb250ZW50UGF0aCArIGAtJHtkZWZhdWx0RGlzcGxheVR5cGUudG9Mb3dlckNhc2UoKX0uaHRtbCZhY2Nlc3NfdG9rZW49JHthY2Nlc3NUb2tlbn0maWRUb2tlbj0ke2lkVG9rZW59YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBsb2FkKCk7XG4gICAgICAgIH0sIFtdXG4gICAgKTtcblxuICAgIGNvbnN0IHNhdmVEYXNoYm9hcmQgPSAoKSA9PiB7XG4gICAgICAgIHNldHRpbmdzLnBhcmFtZXRlcnMuZGlzcGxheVR5cGUgPSBkaXNwbGF5VHlwZTtcbiAgICAgICAgc2V0dGluZ3MucGFyYW1ldGVycy5kYXNoYm9hcmROYW1lID0gbmFtZTtcblxuICAgICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgICAgIGlkOiBzZXR0aW5ncy5pZCxcbiAgICAgICAgICAgIHBhdGg6IHNldHRpbmdzLnBhdGgsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiBzZXR0aW5ncy5wYXJhbWV0ZXJzXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHVybCA9IGAke2xvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L3N5c3RlbS9hcGkvdjEvdXNlci9kYXNoYm9hcmQvc2F2ZWA7XG4gICAgICAgIHBvc3REYXRhKHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBzZXR0aW5ncy5pZCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgc2V0SWQocmVzcG9uc2UpO1xuICAgICAgICAgICAgZGlzcGxheUFsZXJ0KCdTVUNDRVNTJywgJ0Rhc2hib2FyZCBzYXZlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgZGlzcGxheUFsZXJ0KCdFUlJPUicsIFV0aWxzLlNZU1RFTV9FUlJPUl9NRVNTQUdFKVxuICAgICAgICB9LCB0cnVlLCBkYXRhKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGlzcGxheUFsZXJ0ID0gKG1lc3NhZ2VUeXBlLCBtZXNzYWdlVGV4dCkgPT4ge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IHtcbiAgICAgICAgICAgIG1lc3NhZ2VUeXBlOiBtZXNzYWdlVHlwZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VUZXh0XG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KGFwcGxpY2F0aW9uTWFuYWdlciwgJ19zeXNfZGFzaGJvYXJkJywgbWVzc2FnZSk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLk1FU1NBR0VfQVJSSVZFRCwgZXZlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbGV0ZURhc2hib2FyZCA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2V0dGluZ3MpICYmICFVdGlscy5pc051bGwoc2V0dGluZ3MuaWQpKSB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIub3BlbkNvbmZpcm1EaWFsb2coJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBkYXNoYm9hcmQ/JywgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGAke2xvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L3N5c3RlbS9hcGkvdjEvdXNlci9kYXNoYm9hcmQvZGVsZXRlLyR7c2V0dGluZ3MuaWR9YDtcbiAgICAgICAgICAgICAgICAgICAgc2VuZFJlcXVlc3QodXJsLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5vbkRlbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxQYXBlciBzdHlsZT17e1xuICAgICAgICAgICAgbWluV2lkdGg6ICcyMDBweCcsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICAgICAgfX1cbiAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2NvbCd9IHJlZj17cmVmfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qJ30gc3R5bGU9e3toZWlnaHQ6ICc2NHB4J319PlxuICAgICAgICAgICAgICAgICAgICA8VW5jb250cm9sbGVkRHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMzJweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzMycHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICc4cHggOHB4IDAgMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJtZW51LWxpc3QtZ3Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogJzMycHgnLCBoZWlnaHQ6ICczMnB4J319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJmYSBmYS1lbGxpcHNpcy12IGZhLXhzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9e3twYWRkaW5nOiAnM3B4J319Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duVG9nZ2xlPnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudSBjbGFzc05hbWU9XCJkcm9wZG93bi1uYXZiYXJcIiB0YWc9XCJ1bFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKkRpc2FibGUgdGhpcyBidXR0b24gaWYgaWQgaXMgYWxyZWFkeSBzYXZlZC4gQWZ0ZXIgY3JlYXRpbmcgZGFzaGJvYXJkIHByb3BlcnRpZXMgc3VjaCBhcyBmaWx0ZXJzLCB0aGlzIGJ1dHRvbiBtdXN0IHJlbWFpbiBlbmFibGVkIGF0IGFsbCB0aW1lcyovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2TGluayB0YWc9XCJsaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW0gY2xhc3NOYW1lPVwibmF2LWl0ZW1cIiBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXNoYm9hcmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSBkaXNhYmxlZD17IVV0aWxzLmlzTnVsbChpZCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J1NBVkUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9OYXZMaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZMaW5rIHRhZz1cImxpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbSBjbGFzc05hbWU9XCJuYXYtaXRlbVwiIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlRGFzaGJvYXJkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gZGlzYWJsZWQ9e1V0aWxzLmlzTnVsbChpZCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J0RFTEVURSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+eycgJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTmF2TGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L1VuY29udHJvbGxlZERyb3Bkb3duPnsnICd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qJ30gc3R5bGU9e3twYWRkaW5nOiAnMTRweCAwIDAgMTJweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3tmb250U2l6ZTogJzI0cHgnfX0+e25hbWV9PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICdjYWxjKDEwMCUgLSA2NHB4KScsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJzhweCAwIDMycHggMzJweCdcbiAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChwYXRoKSAmJiAhVXRpbHMuaXNOdWxsKGRpc3BsYXlUeXBlKSAmJiBkaXNwbGF5VHlwZSAhPT0gJ1ZJRVcnICYmXG4gICAgICAgICAgICAgICAgICAgIDxvYmplY3QgZGF0YT17cGF0aH0gdHlwZT1cInRleHQvaHRtbFwiIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgfX0vPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwocGF0aCkgJiYgZGlzcGxheVR5cGUgIT09ICdWSUVXJyAmJlxuICAgICAgICAgICAgICAgICAgICA8cD5Mb2FkaW5nLi4uPC9wPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUeXBlID09PSAnVklFVycgJiYgIVV0aWxzLmlzTnVsbCh2aWV3KSAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7d2lkdGg6ICcxMDAlJywgaGVpZ2h0OiBcIjEwMCVcIn19PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgKTtcbn07XG5cbmNvbnN0IFdvcmtGbG93Q2FyZCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtzcCwgc2V0U3BdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21pblcsIHNldE1pblddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgcm91dGVBY3Rpb24gPSB7XG4gICAgICAgICdhY3Rpb25UeXBlJzogJ3JvdXRlJyxcbiAgICAgICAgJ3BhcmVudCc6IHRydWVcbiAgICB9O1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA0MDApIHtcbiAgICAgICAgICAgICAgICBzZXRTcCgxNik7XG4gICAgICAgICAgICAgICAgc2V0TWluVygyODApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRTcCg0OCk7XG4gICAgICAgICAgICAgICAgc2V0TWluVygzMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICBVdGlscy5pc051bGwoc3ApIHx8IFV0aWxzLmlzTnVsbChtaW5XKSA/XG4gICAgICAgICAgICBudWxsIDpcbiAgICAgICAgICAgIDxQYXBlciBzdHlsZT17e1xuICAgICAgICAgICAgICAgIG1pbldpZHRoOiBgJHttaW5XfXB4YCxcbiAgICAgICAgICAgICAgICBtYXJnaW46IHByb3BzLm1hcmdpbixcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxNTJweCdcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qJ30gc3R5bGU9e3t3aWR0aDogJzcwJSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBgMTZweCAke3NwfXB4IDE2cHggJHtzcH1weGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzhweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjU0KSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JrIEl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBgMTZweCAke3NwfXB4IDQ4cHggJHtzcH1weGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcyMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogYDAgJHtzcH1weCAxNnB4ICR7c3B9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5pdGVtQ291bnR9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sLSotKid9IHN0eWxlPXt7bWFyZ2luVG9wOiAnNTBweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnY29udGFpbmVkJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17J3ByaW1hcnknfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3BhcnNlRmxvYXQocHJvcHMuaXRlbUNvdW50KSA9PT0gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlQWN0aW9uLnBhdGggPSBwcm9wcy5wYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZUFjdGlvbkhhbmRsZXIuZXhlY3V0ZShyb3V0ZUFjdGlvbiwgbnVsbCwgcHJvcHMudmlld1JlZiwgJ19zeXNfZGFzaGJvYXJkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWV3XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L1BhcGVyPlxuICAgICk7XG59O1xuXG5jb25zdCBEYXNoYm9hcmQgPSBSZWFjdC5tZW1vKFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcbiAgICBjb25zdCBbdXNlckRhc2hib2FyZHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgICAgICFVdGlscy5pc051bGwoYXBwbGljYXRpb25NYW5hZ2VyLmdldERhc2hib2FyZFNldHRpbmdzKCkudXNlckRhc2hib2FyZHMpID8gYXBwbGljYXRpb25NYW5hZ2VyLmdldERhc2hib2FyZFNldHRpbmdzKCkudXNlckRhc2hib2FyZHMgOiBbXSk7XG4gICAgY29uc3QgW3NldHRpbmdzXSA9IFJlYWN0LnVzZVN0YXRlKGFwcGxpY2F0aW9uTWFuYWdlci5nZXREYXNoYm9hcmRTZXR0aW5ncygpKTtcbiAgICBjb25zdCBbdGFza1N1bW1hcnksIHNldFRhc2tTdW1tYXJ5XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFttZW51SXRlbXMsIHNldE1lbnVJdGVtc10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY2FyZENvbHMsIHNldENhcmRDb2xzXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjb2x1bW5IZWlnaHRzLCBzZXRDb2x1bW5IZWlnaHRzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBsZXQgbnVtQ29scyA9IDI7XG5cbiAgICBjb25zdCBhcGkgPSB7XG4gICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgIHJldHVybiAnX3N5c19kYXNoYm9hcmQnO1xuICAgICAgICB9LFxuICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFthbGVydEJhckhhbmRsZV07XG4gICAgICAgIH0sXG4gICAgICAgIGdldENoaWxkOiAoaWQpID0+IHtcbiAgICAgICAgICAgIGlmIChpZCA9PT0gJ2Rhc2hib2FyZEFsZXJ0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhbGVydEJhckhhbmRsZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgaGFuZGxlID0ge1xuICAgICAgICAnYXBpJzogYXBpXG4gICAgfTtcblxuICAgIGNvbnN0IGdldERhc2hib2FyZE1lbnUgPSAocGF0aCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGxldCBzZXJ2aWNlID0ge1xuICAgICAgICAgICAgICAgIHVybDogJy91aS9hcGkvdjEvbWVudS9nZXQnLFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cFBhcmFtZXRlclR5cGU6ICdRVUVSWV9QQVJBTUVURVInXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd2ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAxLjAsXG4gICAgICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1ldGVyVHlwZTogJ1FVRVJZX1BBUkFNRVRFUidcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaW52b2tlUmVzdChzZXJ2aWNlLCB7XG4gICAgICAgICAgICAgICAgICAgIGFwaToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGFzaGJvYXJkLW1lbnVzJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sICdkYXNoYm9hcmQtbWVudXMnLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0Lm1lbnVzKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICAgICAgfSwgbnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBhc3luYyBmdW5jdGlvbiBsb2FkTWVudXMoKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwobWVudUl0ZW1zKSAmJiAhVXRpbHMuaXNOdWxsKHNldHRpbmdzLnN5c3RlbVByb2ZpbGVEdG8ubW9kdWxlcykpIHtcbiAgICAgICAgICAgIGxldCBkYXNoYm9hcmRNZW51aXRlbXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3Muc3lzdGVtUHJvZmlsZUR0by5tb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSA9IHNldHRpbmdzLnN5c3RlbVByb2ZpbGVEdG8ubW9kdWxlc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChtb2R1bGUuZGFzaGJvYXJkTWVudSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lbnVzID0gYXdhaXQgZ2V0RGFzaGJvYXJkTWVudShtb2R1bGUuZGFzaGJvYXJkTWVudSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZW51cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtZW51cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZW51ID0gbWVudXNbal07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbnUuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIG1lbnUuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZE1lbnVpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRNZW51SXRlbXMoZGFzaGJvYXJkTWVudWl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNldHVwQ2FyZENvbHMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsSXRlbXMgPSB1c2VyRGFzaGJvYXJkcy5sZW5ndGg7XG5cbiAgICAgICAgLy8gU3BlY2lhbCBjYXNlOiAxIG9yIDIgY2FyZHMg4oCUIGZ1bGwgaGVpZ2h0XG4gICAgICAgIGlmICh0b3RhbEl0ZW1zIDw9IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHMgPSBBcnJheS5mcm9tKHtsZW5ndGg6IHRvdGFsSXRlbXN9LCAoXywgaSkgPT4gW3VzZXJEYXNoYm9hcmRzW2ldXSk7XG4gICAgICAgICAgICBzZXRDYXJkQ29scyhjb2xzKTtcbiAgICAgICAgICAgIHNldENvbHVtbkhlaWdodHMoQXJyYXkuZnJvbSh7bGVuZ3RoOiB0b3RhbEl0ZW1zfSwgKCkgPT4gJzEwMCUnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXN0cmlidXRlIHJvdW5kLXJvYmluIGludG8gY29sdW1uc1xuICAgICAgICBjb25zdCBjb2xzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiBudW1Db2xzfSwgKCkgPT4gW10pO1xuICAgICAgICB1c2VyRGFzaGJvYXJkcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29sc1tpbmRleCAlIG51bUNvbHNdLnB1c2goaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRDYXJkQ29scyhjb2xzKTtcblxuICAgICAgICAvLyBEZXRlcm1pbmUgbWF4IGNhcmQgY291bnQgYWNyb3NzIGFsbCBjb2x1bW5zXG4gICAgICAgIGNvbnN0IG1heEl0ZW1zID0gTWF0aC5tYXgoLi4uY29scy5tYXAoY29sID0+IGNvbC5sZW5ndGgpKTtcbiAgICAgICAgY29uc3QgYmFzZUhlaWdodFBlckNhcmQgPSA0MDsgLy8gaW4gdmhcbiAgICAgICAgY29uc3QgdG90YWxUYXJnZXRIZWlnaHQgPSBtYXhJdGVtcyAqIGJhc2VIZWlnaHRQZXJDYXJkOyAvLyB0b3RhbCBoZWlnaHQgcGVyIGNvbHVtbiBpbiB2aFxuXG4gICAgICAgIC8vIENhbGN1bGF0ZSB0YXJnZXQgaGVpZ2h0IHBlciBjYXJkIGluIGVhY2ggY29sdW1uXG4gICAgICAgIGNvbnN0IGhlaWdodHMgPSBjb2xzLm1hcChjb2wgPT5cbiAgICAgICAgICAgIGNvbC5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgJHsodG90YWxUYXJnZXRIZWlnaHQgLyBjb2wubGVuZ3RoKS50b0ZpeGVkKDIpfXZoYFxuICAgICAgICAgICAgICAgIDogJzB2aCdcbiAgICAgICAgKTtcblxuICAgICAgICBzZXRDb2x1bW5IZWlnaHRzKGhlaWdodHMpO1xuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbCh0YXNrU3VtbWFyeSkpIHtcbiAgICAgICAgICAgICAgICBzZW5kUmVxdWVzdChgJHtsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9icG0vYXBpL3YxL3N1bW1hcnlgLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGFza1N1bW1hcnkocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIDogU2hvdyBlcnJvciBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIH0sIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZW5kUmVxdWVzdChgJHtsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9zeXN0ZW0vYXBpL3YxL3VzZXIvZGFzaGJvYXJkL2xpc3RgLCAoZGFzaGJvYXJkcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChkYXNoYm9hcmRzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBkYXNoYm9hcmQgb2YgZGFzaGJvYXJkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJEYXNoYm9hcmRzLnB1c2goZGFzaGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXBDYXJkQ29scygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIDogU2hvdyBlcnJvciBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfSwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGxvYWRNZW51cygpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2V0dGluZ3MpICYmICFVdGlscy5pc051bGwodXNlckRhc2hib2FyZHMpICYmIFV0aWxzLmlzTnVsbChjYXJkQ29scykpIHtcbiAgICAgICAgICAgICAgICBzZXR1cENhcmRDb2xzKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXREYXNoYm9hcmRWaWV3KHtoYW5kbGU6IGhhbmRsZX0pO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBrZXlDb3VudGVyID0gMDtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuY2xlYXJEYXNoYm9hcmRWaWV3cygpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgW10pO1xuXG4gICAgY29uc3QgYWRkRGFzaGJvYXJkQ2FyZCA9IChpdGVtKSA9PiB7XG4gICAgICAgIGxldCBwYXRoID0gaXRlbS5ldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnNbMF0uYWN0aW9uc1swXS5wYXRoO1xuICAgICAgICBsZXQgc2V0dGluZ3MgPSB7fTtcbiAgICAgICAgc2V0dGluZ3MucGF0aCA9IHBhdGg7XG4gICAgICAgIHNldHRpbmdzLnBhcmFtZXRlcnMgPSB7fTtcblxuICAgICAgICB1c2VyRGFzaGJvYXJkcy5wdXNoKHNldHRpbmdzKTtcbiAgICAgICAgc2V0dXBDYXJkQ29scygpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IHJlZj17cmVmfSBzdHlsZT17e2hlaWdodDogJzMwMHB4J319PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwoc2V0dGluZ3MpICYmXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5EYXNoYm9hcmQ8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVuY29udHJvbGxlZERyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duVG9nZ2xlIGNvbG9yPVwiZGVmYXVsdFwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBuYXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gYXJpYS1jb250cm9scz1cIm1lbnUtbGlzdC1ncm93XCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydBREQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93blRvZ2dsZT57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwobWVudUl0ZW1zKSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duTWVudSBjbGFzc05hbWU9XCJkcm9wZG93bi1uYXZiYXJcIiBlbmQgdGFnPVwidWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZW51SXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZMaW5rIHRhZz1cImxpXCIga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm5hdi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGREYXNoYm9hcmRDYXJkKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0uYXR0cmlidXRlcy5sYWJlbH17JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTmF2TGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1VuY29udHJvbGxlZERyb3Bkb3duPnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3ttYXhIZWlnaHQ6ICdjYWxjKDEwMGR2aCAtIDMycHggLSB2YXIoLS1oZWFkZXItaCkpJywgb3ZlcmZsb3dZOiAnYXV0byd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvd1k6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93WDogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzAgNHB4IDAgMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbGVydEJhciBjb25maWc9e3tpZDogJ2Rhc2hib2FyZEFsZXJ0J319IGhhbmRsZT17YWxlcnRCYXJIYW5kbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17J19zeXNfZGFzaGJvYXJkJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbCh0YXNrU3VtbWFyeSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICcxNjBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8V29ya0Zsb3dDYXJkIG1hcmdpbj17JzAgMCA4cHggOHB4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9eydBc3NpZ25lZCB0byBNZSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Db3VudD17dGFza1N1bW1hcnkucGVyc29uYWxXb3JrSXRlbUNvdW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPXsnL3dvcmtmbG93L3ZpZXdzL3BlcnNvbmFsLXdvcmstaXRlbXMuanNvbid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFdvcmtGbG93Q2FyZCBtYXJnaW49eycwIDAgOHB4IDhweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsnQXZhaWxhYmxlJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUNvdW50PXt0YXNrU3VtbWFyeS5ncm91cFdvcmtJdGVtQ291bnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9eycvd29ya2Zsb3cvdmlld3MvZ3JvdXAtd29yay1pdGVtcy5qc29uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8V29ya0Zsb3dDYXJkIG1hcmdpbj17JzAgMCA4cHggOHB4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9eydEdWUgVG9kYXknfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtQ291bnQ9e3Rhc2tTdW1tYXJ5LmR1ZVRvZGF5SXRlbUNvdW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPXsnL3dvcmtmbG93L3ZpZXdzL2R1ZS10b2RheS13b3JrLWl0ZW1zLmpzb24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvd1g6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnY2FsYygxMDBkdmggLSAxNThweCAtIDY0cHggLSB2YXIoLS1oZWFkZXItaCkpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogJ2NhbGMoMTAwZHZoIC0gMTU4cHggLSA2NHB4IC0gdmFyKC0taGVhZGVyLWgpKSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZENvbHMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiB1c2VyRGFzaGJvYXJkcy5sZW5ndGggPD0gMiA/ICcxMDAlJyA6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYXJkQ29scy5tYXAoKGNvbCwgY29sSW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NvbEluZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXg6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXA6ICcxMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICc1MCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiBjb2xJbmRleCAlIG51bUNvbHMgPyAnNHB4JyA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAoY2FyZENvbHMubGVuZ3RoID4gMSAmJiAhKGNvbEluZGV4ICUgbnVtQ29scykpID8gJzRweCcgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29sLm1hcCgoZGFzaGJvYXJkLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGNvbHVtbkhlaWdodHNbY29sSW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGFzaGJvYXJkQ2FyZCBzZXR0aW5ncz17ZGFzaGJvYXJkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2NvbEluZGV4ICsgaW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGU9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyRGFzaGJvYXJkcy5zcGxpY2UodXNlckRhc2hib2FyZHMuaW5kZXhPZihkYXNoYm9hcmQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR1cENhcmRDb2xzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn0pKTtcblxuZXhwb3J0IGRlZmF1bHQgRGFzaGJvYXJkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxVQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxtQkFBQSxHQUFBUCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFB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