single-scripture-rcl 3.3.3-beta.80 → 3.3.3-beta.81

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.
@@ -81,7 +81,7 @@ var style = {
81
81
  width: '500px'
82
82
  };
83
83
  export default function ScriptureCard(_ref) {
84
- var _scriptureConfig$reso, _scriptureConfig$reso2, _scriptureConfig$reso3, _scriptureConfig$reso4, _scriptureConfig$reso6, _scriptureConfig$reso7, _scriptureConfig$reso8, _httpConfig, _httpConfig2, _versesForRef2, _versesForRef3;
84
+ var _scriptureConfig$reso, _scriptureConfig$reso2, _scriptureConfig$reso3, _scriptureConfig$reso4, _scriptureConfig$reso6, _scriptureConfig$reso7, _scriptureConfig$reso8, _httpConfig, _httpConfig2, _versesForRef3, _versesForRef4;
85
85
 
86
86
  var appRef = _ref.appRef,
87
87
  authentication = _ref.authentication,
@@ -246,8 +246,16 @@ export default function ScriptureCard(_ref) {
246
246
  var _sha = (fetchResp_ === null || fetchResp_ === void 0 ? void 0 : (_fetchResp_$data = fetchResp_.data) === null || _fetchResp_$data === void 0 ? void 0 : _fetchResp_$data.sha) || null;
247
247
 
248
248
  var url = (fetchResp_ === null || fetchResp_ === void 0 ? void 0 : (_fetchResp_$data2 = fetchResp_.data) === null || _fetchResp_$data2 === void 0 ? void 0 : _fetchResp_$data2.download_url) || null;
249
+ var validBranch = true;
249
250
 
250
- if (_sha !== sha) {
251
+ if (_sha) {
252
+ // TRICKY: since this fetch may be delayed - make sure it was for the current branch before using the sha
253
+ var parts = (url || '').split('/');
254
+ var fetchBranch = parts.length > 7 ? parts[7] : '';
255
+ validBranch = fetchBranch === ref;
256
+ }
257
+
258
+ if (validBranch && _sha !== sha) {
251
259
  console.log("ScriptureCard: for ".concat(url, " ").concat(JSON.stringify(reference_), " new sha is ").concat(_sha));
252
260
  setState({
253
261
  sha: _sha
@@ -601,7 +609,8 @@ export default function ScriptureCard(_ref) {
601
609
  }, authentication === null || authentication === void 0 ? void 0 : authentication.config), {}, {
602
610
  token: authentication === null || authentication === void 0 ? void 0 : authentication.token,
603
611
  // @ts-ignore
604
- timeout: ((_httpConfig = httpConfig) === null || _httpConfig === void 0 ? void 0 : _httpConfig.serverTimeOut) || ((_httpConfig2 = httpConfig) === null || _httpConfig2 === void 0 ? void 0 : _httpConfig2.timeout) || 5000
612
+ timeout: ((_httpConfig = httpConfig) === null || _httpConfig === void 0 ? void 0 : _httpConfig.serverTimeOut) || ((_httpConfig2 = httpConfig) === null || _httpConfig2 === void 0 ? void 0 : _httpConfig2.timeout) || 10000,
613
+ server: server
605
614
  }),
606
615
  author: loggedInUser,
607
616
  token: authentication === null || authentication === void 0 ? void 0 : authentication.token,
@@ -660,7 +669,7 @@ export default function ScriptureCard(_ref) {
660
669
  ref: userEditBranchName
661
670
  });
662
671
  delay(500).then(function () {
663
- scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.reloadResource();
672
+ scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.reloadResource(sha);
664
673
  });
665
674
  } else {
666
675
  console.error('saveChangesToCloud() - saving changed scripture failed');
@@ -729,7 +738,7 @@ export default function ScriptureCard(_ref) {
729
738
  }
730
739
 
731
740
  React.useEffect(function () {
732
- // for each unsaved change, call into versePane to get latest changes for verse to save
741
+ // for each unsaved change, call into scripturePane to get latest changes for verse to save
733
742
  if (saveClicked) {
734
743
  var createEditBranch = !_usingUserBranch;
735
744
 
@@ -755,13 +764,16 @@ export default function ScriptureCard(_ref) {
755
764
  sha: null
756
765
  }); // we will need a new sha for book/branch
757
766
 
758
- startEditBranch().then(function (success) {
759
- if (success) {
767
+ startEditBranch().then(function (branch) {
768
+ if (branch) {
760
769
  console.log("saveChangesToCloud - edit branch created");
761
770
  setState({
762
771
  editBranchReady: true,
763
- readyForFetch: true
772
+ readyForFetch: true,
773
+ ref: branch
764
774
  });
775
+ } else {
776
+ console.log("saveChangesToCloud - failed to create edit branch");
765
777
  }
766
778
  });
767
779
  }
@@ -1037,22 +1049,34 @@ export default function ScriptureCard(_ref) {
1037
1049
 
1038
1050
  var _versesForRef = scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.versesForRef;
1039
1051
 
1040
- if (!((_versesForRef2 = _versesForRef) !== null && _versesForRef2 !== void 0 && _versesForRef2.length)) {
1052
+ React.useEffect(function () {
1053
+ var _versesForRef2;
1054
+
1055
+ if ((_versesForRef2 = _versesForRef) !== null && _versesForRef2 !== void 0 && _versesForRef2.length) {
1056
+ var _ref8 = scriptureConfig || {},
1057
+ _reference2 = _ref8.reference,
1058
+ _resourceLink2 = _ref8.resourceLink;
1059
+
1060
+ console.log("ScriptureCard._versesForRef changed", {
1061
+ reference: _reference2,
1062
+ resourceLink: _resourceLink2
1063
+ });
1064
+ }
1065
+ }, [_versesForRef]);
1066
+
1067
+ if (!((_versesForRef3 = _versesForRef) !== null && _versesForRef3 !== void 0 && _versesForRef3.length)) {
1041
1068
  // if empty of references, create single empty reference
1042
1069
  _versesForRef = [_objectSpread({}, reference)];
1043
1070
  }
1044
1071
 
1045
- React.useEffect(function () {
1046
- console.log("_versesForRef changed", scriptureConfig);
1047
- }, [_versesForRef]);
1048
- var renderedScripturePanes = (_versesForRef3 = _versesForRef) === null || _versesForRef3 === void 0 ? void 0 : _versesForRef3.map(function (_currentVerseData, index) {
1072
+ var renderedScripturePanes = (_versesForRef4 = _versesForRef) === null || _versesForRef4 === void 0 ? void 0 : _versesForRef4.map(function (_currentVerseData, index) {
1049
1073
  var _currentVerseData$ver;
1050
1074
 
1051
1075
  var initialVerseObjects = (_currentVerseData === null || _currentVerseData === void 0 ? void 0 : (_currentVerseData$ver = _currentVerseData.verseData) === null || _currentVerseData$ver === void 0 ? void 0 : _currentVerseData$ver.verseObjects) || []; // @ts-ignore
1052
1076
 
1053
- var _ref8 = _currentVerseData || {},
1054
- chapter = _ref8.chapter,
1055
- verse = _ref8.verse;
1077
+ var _ref9 = _currentVerseData || {},
1078
+ chapter = _ref9.chapter,
1079
+ verse = _ref9.verse;
1056
1080
 
1057
1081
  var _reference = _objectSpread(_objectSpread({}, _versesForRef), {}, {
1058
1082
  chapter: chapter,
@@ -1112,8 +1136,8 @@ export default function ScriptureCard(_ref) {
1112
1136
  }
1113
1137
  };
1114
1138
 
1115
- var onRenderToolbar = function onRenderToolbar(_ref9) {
1116
- var items = _ref9.items;
1139
+ var onRenderToolbar = function onRenderToolbar(_ref10) {
1140
+ var items = _ref10.items;
1117
1141
 
1118
1142
  var newItems = _toConsumableArray(items);
1119
1143
 
@@ -1318,4 +1342,4 @@ ScriptureCard.propTypes = {
1318
1342
  /**This is currently selected quote */
1319
1343
  selectedQuote: PropTypes.object
1320
1344
  };
1321
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJ1c2VDYXJkU3RhdGUiLCJ1c2VVc2VyQnJhbmNoIiwiRVJST1JfU1RBVEUiLCJNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsIlNjcmlwdHVyZUNhcmQiLCJhcHBSZWYiLCJhdXRoZW50aWNhdGlvbiIsImJvb2tJbmRleCIsImNhcmROdW0iLCJjbGFzc2VzIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwiZmV0Y2hHbG9zc2VzRm9yVmVyc2UiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJvbk1pbmltaXplIiwib25SZXNvdXJjZUVycm9yIiwicmVmZXJlbmNlIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwiYm9va0lkIiwicHJvamVjdElkIiwidXNlU3RhdGUiLCJjaGVja0ZvckVkaXRCcmFuY2giLCJjdXJyZW50UmVmZXJlbmNlIiwiZWRpdEJyYW5jaFJlYWR5IiwiaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwibGFzdFNlbGVjdGVkUXVvdGUiLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzRm9yUmVmIiwic2hvd0FsaWdubWVudFBvcHVwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlT2JqZWN0c01hcCIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsInNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UiLCJuZXdSZXNvdXJjZSIsIm5ld0Jvb2tPYmplY3RzIiwiYm9va09iamVjdHMiLCJfbmV3Qm9va09iamVjdHMiLCJjYWNoZSIsIm1heEFnZSIsIm5vQ2FjaGUiLCJzZXRVcmxFcnJvciIsImVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzY3JpcHR1cmVDb25maWciLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiZmV0Y2hSZXNwXyIsImZldGNoUmVzcG9uc2UiLCJyZXBvIiwicmVmZXJlbmNlXyIsInVzZUVmZmVjdCIsIl9zaGEiLCJkYXRhIiwidXJsIiwiZG93bmxvYWRfdXJsIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiaW5jbHVkZXMiLCJjYXJkSWQiLCJicmFuY2hEZXRlcm1pbmVkIiwidXNlckVkaXRCcmFuY2hOYW1lIiwiX3VzaW5nVXNlckJyYW5jaCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsInN0YXJ0RWRpdEJyYW5jaCIsImFjdGlvbnMiLCJzdGFydEVkaXQiLCJ3b3JraW5nUmVmIiwic2NyaXB0dXJlVGl0bGUiLCJyZXNvdXJjZVN0YXR1cyIsIm1lc3NhZ2UiLCJpc0FjY2Vzc0Vycm9yIiwidmVyc2lvbiIsInVwZGF0ZVRpdGxlIiwiZ2V0U2NyaXB0dXJlU2VsZWN0b3IiLCJzY3JpcHR1cmVTZWxlY3Rpb25Db25maWciLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJfcmVmZXJlbmNlIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsImhlYWRlcnMiLCJmaWx0ZXJzIiwiaXRlbUluZGV4IiwibWFya2Rvd25WaWV3Iiwic2V0RmlsdGVycyIsInNldEl0ZW1JbmRleCIsInNldE1hcmtkb3duVmlldyIsInJlZlN0eWxlIiwidXNlTWVtbyIsImZvbnRGYW1pbHkiLCJNYXRoIiwicm91bmQiLCJjb250ZW50U3R5bGUiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJ1bmRlZmluZWQiLCJmZXRjaEdsb3NzRGF0YUZvclZlcnNlIiwidmVyc2VPYmplY3RzIiwidmVyc2VSZWYiLCJfdmVyc2VPYmplY3RzIiwidmVyc2VEYXRhIiwiY29uY2F0IiwibGVuZ3RoIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwiY29udGVudCIsImNvbmZpZyIsInRva2VuIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJhdXRob3IiLCJicmFuY2giLCJzYXZlRXJyb3IiLCJpc1NhdmVFcnJvciIsImlzRXJyb3IiLCJvblNhdmVFZGl0IiwiX3NhdmVFZGl0IiwiaW5mbyIsInRoZW4iLCJzdWNjZXNzIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiY2FyZEluZGV4IiwicmVsb2FkUmVzb3VyY2UiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJiaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJzcGxpdCIsImNoYXB0ZXJJbmRleCIsImNoYXB0ZXIiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsInZlcnNlIiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwidmVyc2VOdW1MZW4iLCJuZXdDaGFwdGVyIiwiam9pbiIsImNyZWF0ZUVkaXRCcmFuY2giLCJ3YXJuIiwiZ2V0UmVzcG9uc2VEYXRhIiwibWVyZ2VGYWlsIiwicGFyc2VJbnQiLCJuZXdCb29rSnNvbiIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIm9yaWdpbmFsVmVyc2VzIiwic3Vic3RpdHV0ZSIsInN0YXJ0VmVyc2UiLCJsYXN0VmVyc2UiLCJpIiwibCIsIl92ZXJzZSIsInZlcnNlcyIsInZlcnNlSXRlbSIsInZvIiwic2V0Iiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwiZm9yRWFjaCIsIndvcmRzIiwia2V5IiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJ2YWx1ZXMiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwicHVzaCIsImN1cnNvciIsInByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJib29sIiwib2JqZWN0IiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU8sS0FBS0MsU0FBWixNQUEyQixZQUEzQjtBQUNBLFNBQVNDLElBQVQsRUFBZUMseUJBQWYsUUFBZ0QseUJBQWhEO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixTQUFuQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IscUJBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixlQUEzQjtBQUNBLFNBQVNDLE9BQVQsRUFBa0JDLFlBQWxCLFFBQXNDLGdCQUF0QztBQUNBLFNBQ0VDLElBREYsRUFHRUMsWUFIRixFQUlFQyxhQUpGLEVBS0VDLFdBTEYsRUFNRUMseUJBTkYsUUFPTyx1QkFQUDtBQVFBLFNBQVNDLHdCQUFULFFBQXlDLGtCQUF6QztBQUNBLFNBQVNDLGdCQUFULEVBQTJCQyx5QkFBM0IsUUFBNEQsa0JBQTVEO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQix1QkFBMUI7QUFDQSxTQUFTQyxhQUFULEVBQXdCQyxpQkFBeEIsUUFBaUQsSUFBakQ7QUFDQSxTQUFTQyxvQkFBVCxRQUFxQyxrQ0FBckM7QUFDQSxTQUNFQyxtQkFERixFQUVFQyxhQUZGLEVBR0VDLGVBSEYsRUFJRUMsa0JBSkYsRUFLRUMsMkJBTEYsRUFNRUMsZUFORixRQU9PLCtCQVBQO0FBUUEsU0FBU0MsS0FBVCxRQUFzQixtQkFBdEI7QUFDQSxTQUFTQyxjQUFULFFBQStCLGtCQUEvQjtBQUNBLFNBQVNDLEtBQVQsUUFBc0IseUJBQXRCO0FBQ0EsU0FDRUMsWUFERixFQUVFQyxlQUZGLEVBR0VDLFlBSEYsUUFJTyxhQUpQO0FBS0EsU0FBU0Msa0JBQVQsUUFBbUMsdUJBQW5DO0FBRUEsSUFBTUMsa0JBQWtCLEdBQUcsd0JBQTNCO0FBQ0EsSUFBTUMsS0FBSyxHQUFHLFNBQWQ7QUFDQSxJQUFNQyxLQUFLLEdBQUc7QUFBRUMsRUFBQUEsU0FBUyxFQUFFLE1BQWI7QUFBcUJDLEVBQUFBLEtBQUssRUFBRTtBQUE1QixDQUFkO0FBRUEsZUFBZSxTQUFTQyxhQUFULE9BaUNaO0FBQUE7O0FBQUEsTUFoQ0RDLE1BZ0NDLFFBaENEQSxNQWdDQztBQUFBLE1BL0JEQyxjQStCQyxRQS9CREEsY0ErQkM7QUFBQSxNQTlCREMsU0E4QkMsUUE5QkRBLFNBOEJDO0FBQUEsTUE3QkRDLE9BNkJDLFFBN0JEQSxPQTZCQztBQUFBLE1BNUJEQyxPQTRCQyxRQTVCREEsT0E0QkM7QUFBQSxNQTNCREMsa0JBMkJDLFFBM0JEQSxrQkEyQkM7QUFBQSxNQTFCREMsb0JBMEJDLFFBMUJEQSxvQkEwQkM7QUFBQSxNQXpCREMsV0F5QkMsUUF6QkRBLFdBeUJDO0FBQUEsTUF4QkRDLGNBd0JDLFFBeEJEQSxjQXdCQztBQUFBLE1BdkJEQyxZQXVCQyxRQXZCREEsWUF1QkM7QUFBQSxNQXRCREMsYUFzQkMsUUF0QkRBLGFBc0JDO0FBQUEsTUFyQkRDLFVBcUJDLFFBckJEQSxVQXFCQztBQUFBLE1BcEJEQyxFQW9CQyxRQXBCREEsRUFvQkM7QUFBQSxNQW5CREMsSUFtQkMsUUFuQkRBLElBbUJDO0FBQUEsTUFsQkRDLFlBa0JDLFFBbEJEQSxZQWtCQztBQUFBLE1BakJEQyxVQWlCQyxRQWpCREEsVUFpQkM7QUFBQSxNQWhCREMsZUFnQkMsUUFoQkRBLGVBZ0JDO0FBQUEsTUFmREMsU0FlQyxRQWZEQSxTQWVDO0FBQUEsMkJBZERDLFFBY0M7QUFBQSxNQWJDQyxLQWFELGlCQWJDQSxLQWFEO0FBQUEsTUFaQ0MsVUFZRCxpQkFaQ0EsVUFZRDtBQUFBLE1BWENDLFVBV0QsaUJBWENBLFVBV0Q7QUFBQSxNQVZDQyxxQkFVRCxpQkFWQ0EscUJBVUQ7QUFBQSxNQVJEQyxZQVFDLFFBUkRBLFlBUUM7QUFBQSxNQVBEQyxhQU9DLFFBUERBLGFBT0M7QUFBQSxNQU5EQyxNQU1DLFFBTkRBLE1BTUM7QUFBQSxNQUxEQyxlQUtDLFFBTERBLGVBS0M7QUFBQSxNQUpEQyxvQkFJQyxRQUpEQSxvQkFJQztBQUFBLE1BSERDLFNBR0MsUUFIREEsU0FHQztBQUFBLE1BRkRDLEtBRUMsUUFGREEsS0FFQztBQUFBLE1BRERDLG1CQUNDLFFBRERBLG1CQUNDO0FBQ0QsTUFBTUMsTUFBTSxHQUFHZCxTQUFILGFBQUdBLFNBQUgsdUJBQUdBLFNBQVMsQ0FBRWUsU0FBMUI7O0FBREMsd0JBRTBCekUsS0FBSyxDQUFDMEUsUUFBTixDQUFlO0FBQ3hDQyxJQUFBQSxrQkFBa0IsRUFBRSxDQURvQjtBQUV4Q0MsSUFBQUEsZ0JBQWdCLEVBQUUsSUFGc0I7QUFHeENDLElBQUFBLGVBQWUsRUFBRSxLQUh1QjtBQUl4Q0MsSUFBQUEsa0JBQWtCLEVBQUUsS0FKb0I7QUFLeENDLElBQUFBLGlCQUFpQixFQUFFLElBTHFCO0FBTXhDQyxJQUFBQSxvQkFBb0IsRUFBRSxJQU5rQjtBQU94Q0MsSUFBQUEsYUFBYSxFQUFFLEtBUHlCO0FBUXhDQyxJQUFBQSxHQUFHLEVBQUV6QyxNQVJtQztBQVN4QzBDLElBQUFBLFdBQVcsRUFBRSxLQVQyQjtBQVV4Q0MsSUFBQUEsV0FBVyxFQUFFLElBVjJCO0FBV3hDQyxJQUFBQSxVQUFVLEVBQUUsSUFBSUMsR0FBSixFQVg0QjtBQVl4Q0MsSUFBQUEsR0FBRyxFQUFFLElBWm1DO0FBYXhDQyxJQUFBQSxTQUFTLEVBQUUsS0FiNkI7QUFjeENDLElBQUFBLFFBQVEsRUFBRSxJQWQ4QjtBQWV4Q0MsSUFBQUEsZUFBZSxFQUFFLEtBZnVCO0FBZ0J4Q0MsSUFBQUEsa0JBQWtCLEVBQUUsRUFoQm9CO0FBaUJ4Q0MsSUFBQUEsWUFBWSxFQUFFLElBakIwQjtBQWtCeENDLElBQUFBLGtCQUFrQixFQUFFLEtBbEJvQjtBQW1CeENDLElBQUFBLHlCQUF5QixFQUFFLElBbkJhO0FBb0J4Q0MsSUFBQUEscUJBQXFCLEVBQUUsSUFwQmlCO0FBcUJ4Q0MsSUFBQUEsZUFBZSxFQUFFLElBQUlWLEdBQUo7QUFyQnVCLEdBQWYsQ0FGMUI7QUFBQTtBQUFBLE1BRU1XLEtBRk47QUFBQSxNQUVhQyxTQUZiOztBQUFBLE1BMEJDdkIsa0JBMUJELEdBK0NHc0IsS0EvQ0gsQ0EwQkN0QixrQkExQkQ7QUFBQSxNQTJCQ0MsZ0JBM0JELEdBK0NHcUIsS0EvQ0gsQ0EyQkNyQixnQkEzQkQ7QUFBQSxNQTRCQ0MsZUE1QkQsR0ErQ0dvQixLQS9DSCxDQTRCQ3BCLGVBNUJEO0FBQUEsTUE2QkNDLGtCQTdCRCxHQStDR21CLEtBL0NILENBNkJDbkIsa0JBN0JEO0FBQUEsTUE4QkNDLGlCQTlCRCxHQStDR2tCLEtBL0NILENBOEJDbEIsaUJBOUJEO0FBQUEsTUErQkNDLG9CQS9CRCxHQStDR2lCLEtBL0NILENBK0JDakIsb0JBL0JEO0FBQUEsTUFnQ0NDLGFBaENELEdBK0NHZ0IsS0EvQ0gsQ0FnQ0NoQixhQWhDRDtBQUFBLE1BaUNDQyxHQWpDRCxHQStDR2UsS0EvQ0gsQ0FpQ0NmLEdBakNEO0FBQUEsTUFrQ0NDLFdBbENELEdBK0NHYyxLQS9DSCxDQWtDQ2QsV0FsQ0Q7QUFBQSxNQW1DQ0MsV0FuQ0QsR0ErQ0dhLEtBL0NILENBbUNDYixXQW5DRDtBQUFBLE1Bb0NDQyxVQXBDRCxHQStDR1ksS0EvQ0gsQ0FvQ0NaLFVBcENEO0FBQUEsTUFxQ0NFLEdBckNELEdBK0NHVSxLQS9DSCxDQXFDQ1YsR0FyQ0Q7QUFBQSxNQXNDQ00sa0JBdENELEdBK0NHSSxLQS9DSCxDQXNDQ0osa0JBdENEO0FBQUEsTUF1Q0NMLFNBdkNELEdBK0NHUyxLQS9DSCxDQXVDQ1QsU0F2Q0Q7QUFBQSxNQXdDQ0MsUUF4Q0QsR0ErQ0dRLEtBL0NILENBd0NDUixRQXhDRDtBQUFBLE1BeUNDQyxlQXpDRCxHQStDR08sS0EvQ0gsQ0F5Q0NQLGVBekNEO0FBQUEsTUEwQ0NDLGtCQTFDRCxHQStDR00sS0EvQ0gsQ0EwQ0NOLGtCQTFDRDtBQUFBLE1BMkNDSyxlQTNDRCxHQStDR0MsS0EvQ0gsQ0EyQ0NELGVBM0NEO0FBQUEsTUE0Q0NGLHlCQTVDRCxHQStDR0csS0EvQ0gsQ0E0Q0NILHlCQTVDRDtBQUFBLE1BNkNDQyxxQkE3Q0QsR0ErQ0dFLEtBL0NILENBNkNDRixxQkE3Q0Q7QUFBQSxNQThDQ0gsWUE5Q0QsR0ErQ0dLLEtBL0NILENBOENDTCxZQTlDRDs7QUFBQSw2QkFpRCtCckIsbUJBQW1CLENBQUNwQyxrQkFBa0IsR0FBR1MsT0FBdEIsRUFBK0IsR0FBL0IsQ0FqRGxEO0FBQUE7QUFBQSxNQWlETXVELFFBakROO0FBQUEsTUFpRGdCQyxXQWpEaEI7O0FBa0RELE1BQU1DLEtBQUssR0FBRy9DLElBQUksQ0FBQ2tCLE1BQUQsQ0FBbEI7O0FBRUEsV0FBUzhCLFFBQVQsQ0FBa0JDLFFBQWxCLEVBQTRCO0FBQzFCTCxJQUFBQSxTQUFTLENBQUMsVUFBQU0sU0FBUztBQUFBLDZDQUFVQSxTQUFWLEdBQXdCRCxRQUF4QjtBQUFBLEtBQVYsQ0FBVDtBQUNEOztBQUVELFdBQVNFLDRCQUFULENBQXNDQyxXQUF0QyxFQUFtRDtBQUFBOztBQUNqRCxRQUFNQyxjQUFjLEdBQUcsQ0FBQUQsV0FBVyxTQUFYLElBQUFBLFdBQVcsV0FBWCxZQUFBQSxXQUFXLENBQUVFLFdBQWIsS0FBNEIsRUFBbkQ7QUFDQSxRQUFNcEMsTUFBTSxHQUFHa0MsV0FBSCxhQUFHQSxXQUFILGdEQUFHQSxXQUFXLENBQUVoRCxTQUFoQiwwREFBRyxzQkFBd0JlLFNBQXZDOztBQUNBLFFBQU1vQyxlQUFlLG1DQUNoQkYsY0FEZ0I7QUFFbkJuQyxNQUFBQSxNQUFNLEVBQU5BO0FBRm1CLE1BQXJCOztBQUtBLFFBQUksQ0FBQ3ZELE9BQU8sQ0FBQzRGLGVBQUQsRUFBa0I3QixvQkFBbEIsQ0FBWixFQUFxRDtBQUNuRHNCLE1BQUFBLFFBQVEsQ0FBQztBQUFFdEIsUUFBQUEsb0JBQW9CLEVBQUU2QjtBQUF4QixPQUFELENBQVI7QUFDRDtBQUNGOztBQUVELE1BQUluQixlQUFKLEVBQXFCO0FBQ25CdEMsSUFBQUEsVUFBVSxtQ0FDTEEsVUFESztBQUVSMEQsTUFBQUEsS0FBSyxFQUFFO0FBQUVDLFFBQUFBLE1BQU0sRUFBRTtBQUFWLE9BRkM7QUFHUkMsTUFBQUEsT0FBTyxFQUFFO0FBSEQsTUFBVixDQURtQixDQUtqQjtBQUNIOztBQTNFQSw4QkFtRkczRixvQkFBb0IsQ0FBQztBQUN2QmlDLElBQUFBLElBQUksRUFBSkEsSUFEdUI7QUFFdkJnQixJQUFBQSxLQUFLLEVBQUxBLEtBRnVCO0FBR3ZCVixJQUFBQSxLQUFLLEVBQUxBLEtBSHVCO0FBSXZCRixJQUFBQSxTQUFTLEVBQUVrQixnQkFKWTtBQUt2Qm5DLElBQUFBLE1BQU0sRUFBRXlDLEdBTGU7QUFNdkJoQixJQUFBQSxNQUFNLEVBQU5BLE1BTnVCO0FBT3ZCdEIsSUFBQUEsT0FBTyxFQUFQQSxPQVB1QjtBQVF2QmlCLElBQUFBLFVBQVUsRUFBVkEsVUFSdUI7QUFTdkJDLElBQUFBLFVBQVUsRUFBVkEsVUFUdUI7QUFVdkJFLElBQUFBLFlBQVksRUFBWkEsWUFWdUI7QUFXdkJPLElBQUFBLG1CQUFtQixFQUFuQkEsbUJBWHVCO0FBWXZCekIsSUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFadUI7QUFhdkJpQixJQUFBQSxxQkFBcUIsRUFBckJBLHFCQWJ1QjtBQWN2QmtELElBQUFBLFdBQVcsRUFBRSxxQkFBQ0MsS0FBRDtBQUFBLGFBQVdaLFFBQVEsQ0FBQztBQUFFYixRQUFBQSxRQUFRLEVBQUV5QjtBQUFaLE9BQUQsQ0FBbkI7QUFBQSxLQWRVO0FBZXZCOUQsSUFBQUEsVUFBVSxFQUFWQSxVQWZ1QjtBQWdCdkJGLElBQUFBLFlBQVksRUFBWkEsWUFoQnVCO0FBaUJ2QkMsSUFBQUEsYUFBYSxFQUFiQSxhQWpCdUI7QUFrQnZCZ0UsSUFBQUEsU0FBUyxFQUFFLElBbEJZO0FBbUJ2QmxDLElBQUFBLGFBQWEsRUFBYkE7QUFuQnVCLEdBQUQsQ0FuRnZCO0FBQUEsTUE4RUNtQyxjQTlFRCx5QkE4RUNBLGNBOUVEO0FBQUEsTUErRUNDLGVBL0VELHlCQStFQ0EsZUEvRUQ7QUFBQSxNQWdGQ0MsWUFoRkQseUJBZ0ZDQSxZQWhGRDtBQUFBLE1BaUZDQyxpQkFqRkQseUJBaUZDQSxpQkFqRkQ7QUFBQSxNQWtGQ0Msb0JBbEZELHlCQWtGQ0Esb0JBbEZEOztBQXlHRCxNQUFNQyxVQUFVLEdBQUdKLGVBQUgsYUFBR0EsZUFBSCx1QkFBR0EsZUFBZSxDQUFFSyxhQUFwQyxDQXpHQyxDQTBHRDs7QUFDQSxNQUFNQyxJQUFJLGFBQU1OLGVBQU4sYUFBTUEsZUFBTixnREFBTUEsZUFBZSxDQUFFMUQsUUFBdkIsMERBQU0sc0JBQTJCRSxVQUFqQyxjQUErQ3dELGVBQS9DLGFBQStDQSxlQUEvQyxpREFBK0NBLGVBQWUsQ0FBRTFELFFBQWhFLDJEQUErQyx1QkFBMkJjLFNBQTFFLENBQVY7QUFDQSxNQUFNbUQsVUFBVSxHQUFHLENBQUFQLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsWUFBQUEsZUFBZSxDQUFFM0QsU0FBakIsS0FBOEIsSUFBakQ7QUFFQTFELEVBQUFBLEtBQUssQ0FBQzZILFNBQU4sQ0FBZ0IsWUFBTTtBQUFBOztBQUFFO0FBQ3RCLFFBQU1DLElBQUksR0FBRyxDQUFBTCxVQUFVLFNBQVYsSUFBQUEsVUFBVSxXQUFWLGdDQUFBQSxVQUFVLENBQUVNLElBQVosc0VBQWtCeEMsR0FBbEIsS0FBeUIsSUFBdEM7O0FBQ0EsUUFBTXlDLEdBQUcsR0FBRyxDQUFBUCxVQUFVLFNBQVYsSUFBQUEsVUFBVSxXQUFWLGlDQUFBQSxVQUFVLENBQUVNLElBQVosd0VBQWtCRSxZQUFsQixLQUFrQyxJQUE5Qzs7QUFFQSxRQUFJSCxJQUFJLEtBQUt2QyxHQUFiLEVBQWtCO0FBQ2hCMkMsTUFBQUEsT0FBTyxDQUFDQyxHQUFSLDhCQUFrQ0gsR0FBbEMsY0FBeUNJLElBQUksQ0FBQ0MsU0FBTCxDQUFlVCxVQUFmLENBQXpDLHlCQUFrRkUsSUFBbEY7QUFDQXhCLE1BQUFBLFFBQVEsQ0FBQztBQUFFZixRQUFBQSxHQUFHLEVBQUV1QztBQUFQLE9BQUQsQ0FBUjtBQUNEO0FBQ0YsR0FSRCxFQVFHLENBQUNMLFVBQUQsQ0FSSCxFQTlHQyxDQXdIRDs7QUFDQSxNQUFNYSxjQUFjLEdBQUcsQ0FBQWpCLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsc0NBQUFBLGVBQWUsQ0FBRTFELFFBQWpCLGtGQUEyQmMsU0FBM0IsS0FBd0NYLFVBQS9ELENBekhDLENBMEhEOztBQUNBLE1BQUl5RSxJQUFJLEdBQUcsQ0FBQWxCLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsc0NBQUFBLGVBQWUsQ0FBRTFELFFBQWpCLGtGQUEyQnVCLEdBQTNCLEtBQWtDekMsTUFBN0M7QUFDQSxNQUFNK0YsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFakYsWUFBWSxJQUFJYixjQUFoQixJQUFtQ29CLFVBQVUsS0FBSzlCLGVBQWxELE1BQXNFO0FBQzlGdUcsRUFBQUEsSUFBSSxLQUFLLFFBQVYsSUFBd0JBLElBQUksQ0FBQ0UsUUFBTCxDQUFjbEYsWUFBZCxDQURDLENBQUYsQ0FBMUIsQ0E1SEMsQ0E2SHlEOztBQTdIekQsdUJBdUlHNUMsYUFBYSxDQUFDO0FBQ2hCOEIsSUFBQUEsTUFBTSxFQUFOQSxNQURnQjtBQUVoQkMsSUFBQUEsY0FBYyxFQUFFOEYsZ0JBQWdCLEdBQUc5RixjQUFILEdBQW9CLElBRnBDO0FBR2hCOEIsSUFBQUEsTUFBTSxFQUFOQSxNQUhnQjtBQUloQmtFLElBQUFBLE1BQU0sRUFBRXJGLEVBSlE7QUFLaEJpRixJQUFBQSxjQUFjLEVBQWRBLGNBTGdCO0FBTWhCM0QsSUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFOZ0I7QUFPaEJkLElBQUFBLFVBQVUsRUFBVkEsVUFQZ0I7QUFRaEJOLElBQUFBLFlBQVksRUFBRWlGLGdCQUFnQixHQUFHakYsWUFBSCxHQUFrQixJQVJoQztBQVNoQkssSUFBQUEsS0FBSyxFQUFMQSxLQVRnQjtBQVVoQkgsSUFBQUEsZUFBZSxFQUFmQSxlQVZnQjtBQVdoQlMsSUFBQUEsTUFBTSxFQUFOQSxNQVhnQjtBQVloQkssSUFBQUEsbUJBQW1CLEVBQW5CQTtBQVpnQixHQUFELENBdkloQjtBQUFBLDRDQWdJQzBCLEtBaElEO0FBQUEsTUFpSUcwQyxnQkFqSUgsd0JBaUlHQSxnQkFqSUg7QUFBQSxNQWtJR0Msa0JBbElILHdCQWtJR0Esa0JBbElIO0FBQUEsTUFtSW9CQyxnQkFuSXBCLHdCQW1JR25ELGVBbklIO0FBQUEsTUFvSUdvRCxxQkFwSUgsd0JBb0lHQSxxQkFwSUg7QUFBQSxNQXNJdUJDLGVBdEl2QixrQkFzSUNDLE9BdElELENBc0lZQyxTQXRJWjs7QUFzSkQsTUFBTUMsVUFBVSxHQUFHVixnQkFBZ0IsR0FBR00scUJBQUgsR0FBMkJyRyxNQUE5RDtBQUNBLE1BQUkwRyxjQUFKOztBQUVBLE1BQUksQ0FBQ1gsZ0JBQUQsSUFBcUIsQ0FBQ3ZELGFBQTFCLEVBQXlDO0FBQUU7QUFDekNxQixJQUFBQSxRQUFRLENBQUM7QUFBRXJCLE1BQUFBLGFBQWEsRUFBRTtBQUFqQixLQUFELENBQVI7QUFDRDs7QUFFRGpGLEVBQUFBLEtBQUssQ0FBQzZILFNBQU4sQ0FBZ0IsWUFBTTtBQUNwQkssSUFBQUEsT0FBTyxDQUFDQyxHQUFSLCtCQUEwQztBQUFFM0QsTUFBQUEsTUFBTSxFQUFOQSxNQUFGO0FBQVVaLE1BQUFBLEtBQUssRUFBTEEsS0FBVjtBQUFpQkMsTUFBQUEsVUFBVSxFQUFWQSxVQUFqQjtBQUE2QkMsTUFBQUEsVUFBVSxFQUFWQTtBQUE3QixLQUExQzs7QUFFQSxRQUFJMEUsZ0JBQUosRUFBc0I7QUFBRTtBQUN0QmxDLE1BQUFBLFFBQVEsQ0FBQztBQUFFckIsUUFBQUEsYUFBYSxFQUFFLEtBQWpCO0FBQXdCTixRQUFBQSxrQkFBa0IsRUFBRUEsa0JBQWtCLEdBQUc7QUFBakUsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQU5ELEVBTUcsQ0FBQ0gsTUFBRCxFQUFTWixLQUFULEVBQWdCQyxVQUFoQixFQUE0QkMsVUFBNUIsQ0FOSDtBQVFBOUQsRUFBQUEsS0FBSyxDQUFDNkgsU0FBTixDQUFnQixZQUFNO0FBQ3BCLFFBQUksQ0FBQzVHLE9BQU8sQ0FBQ3lDLFNBQUQsRUFBWWtCLGdCQUFaLENBQVosRUFBMkM7QUFDekNzRCxNQUFBQSxPQUFPLENBQUNDLEdBQVIsb0NBQStDekUsU0FBL0M7QUFDQTRDLE1BQUFBLFFBQVEsQ0FBQztBQUFFMUIsUUFBQUEsZ0JBQWdCLEVBQUVsQjtBQUFwQixPQUFELENBQVI7QUFDRDtBQUNGLEdBTEQsRUFLRyxDQUFDQSxTQUFELENBTEg7QUFPQTFELEVBQUFBLEtBQUssQ0FBQzZILFNBQU4sQ0FBZ0IsWUFBTTtBQUFFO0FBQ3RCSyxJQUFBQSxPQUFPLENBQUNDLEdBQVIsNkNBQWlEUSxnQkFBakQsZ0NBQXVGTyxVQUF2RixtQ0FBMEhqRSxhQUExSDs7QUFFQSxRQUFJLENBQUNBLGFBQUQsSUFBa0IwRCxnQkFBdEIsRUFBeUM7QUFDdkNyQyxNQUFBQSxRQUFRLENBQUM7QUFBRXJCLFFBQUFBLGFBQWEsRUFBRSxJQUFqQjtBQUF1QkMsUUFBQUEsR0FBRyxFQUFFZ0U7QUFBNUIsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQU5ELEVBTUcsQ0FBQ1AsZ0JBQUQsQ0FOSDtBQVFBM0ksRUFBQUEsS0FBSyxDQUFDNkgsU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBSWdCLGdCQUFnQixLQUFLbkQsZUFBekIsRUFBMEM7QUFDeENZLE1BQUFBLFFBQVEsQ0FBQztBQUFFWixRQUFBQSxlQUFlLEVBQUVtRDtBQUFuQixPQUFELENBQVI7QUFDRDtBQUNGLEdBSkQsRUFJRyxDQUFDQSxnQkFBRCxFQUFtQm5ELGVBQW5CLENBSkg7QUFNQTFGLEVBQUFBLEtBQUssQ0FBQzZILFNBQU4sQ0FBZ0IsWUFBTTtBQUFBOztBQUFFO0FBQ3RCLFFBQU1YLEtBQUssR0FBR0csZUFBSCxhQUFHQSxlQUFILGlEQUFHQSxlQUFlLENBQUUrQixjQUFwQiwyREFBRyx1QkFBa0N4SSxXQUFsQyxDQUFkOztBQUVBLFFBQUlzRyxLQUFKLEVBQVc7QUFBRTtBQUNYLFVBQU1rQyxjQUFjLEdBQUcvQixlQUFILGFBQUdBLGVBQUgsdUJBQUdBLGVBQWUsQ0FBRStCLGNBQXhDOztBQUNBLFVBQU1wRixhQUFZLEdBQUd4QyxlQUFlLENBQUM2RixlQUFELENBQXBDOztBQUNBLFVBQU1nQyxPQUFPLEdBQUc1SCxrQkFBa0IsQ0FBQzJILGNBQUQsRUFBaUJsRixNQUFqQixFQUF5QkYsYUFBekIsRUFBdUNxQyxLQUF2QyxDQUFsQztBQUNBLFVBQU1pRCxhQUFhLEdBQUdGLGNBQWMsQ0FBQ3ZJLHlCQUFELENBQXBDO0FBQ0E0QyxNQUFBQSxlQUFlLElBQUlBLGVBQWUsQ0FBQzRGLE9BQUQsRUFBVUMsYUFBVixFQUF5QkYsY0FBekIsQ0FBbEM7QUFDRDtBQUNGLEdBVkQsRUFVRyxDQUFDL0IsZUFBRCxhQUFDQSxlQUFELGlEQUFDQSxlQUFlLENBQUUrQixjQUFsQiwyREFBQyx1QkFBa0N4SSxXQUFsQyxDQUFELENBVkg7O0FBWUEsTUFBSXlHLGVBQWUsQ0FBQy9DLEtBQWhCLElBQXlCK0MsZUFBZSxDQUFDa0MsT0FBN0MsRUFBc0Q7QUFDcERKLElBQUFBLGNBQWMsYUFBTTlCLGVBQWUsQ0FBQy9DLEtBQXRCLGVBQWdDK0MsZUFBZSxDQUFDa0MsT0FBaEQsQ0FBZDtBQUNBL0IsSUFBQUEsb0JBQW9CLENBQUNnQyxXQUFyQixDQUFpQ25DLGVBQWUsQ0FBQ3JELFlBQWpELEVBQStEbUYsY0FBL0Q7QUFDRCxHQUhELE1BR087QUFDTEEsSUFBQUEsY0FBYyx3Q0FBZDtBQUNEO0FBRUQ7OztBQUNBLFdBQVNNLG9CQUFULEdBQWdDO0FBQzlCLFFBQU1DLHdCQUF3QixHQUFHaEksMkJBQTJCLENBQUM7QUFDM0RVLE1BQUFBLEtBQUssRUFBTEEsS0FEMkQ7QUFFM0Q0QixNQUFBQSxZQUFZLEVBQUVxRCxlQUFlLENBQUNyRCxZQUY2QjtBQUczRHNELE1BQUFBLFlBQVksRUFBWkEsWUFIMkQ7QUFJM0RFLE1BQUFBLG9CQUFvQixFQUFwQkE7QUFKMkQsS0FBRCxDQUE1RDtBQU9BLHdCQUFPLG9CQUFDLGlCQUFELGVBQXVCa0Msd0JBQXZCO0FBQWlELE1BQUEsS0FBSyxFQUFFckgsS0FBeEQ7QUFBK0QsTUFBQSxZQUFZLEVBQUVvRDtBQUE3RSxPQUFQO0FBQ0Q7O0FBRUQsV0FBU2tFLFdBQVQsR0FBdUI7QUFDckI7QUFDQXJELElBQUFBLFFBQVEsQ0FBQztBQUFFYixNQUFBQSxRQUFRLEVBQUU7QUFBWixLQUFELENBQVI7QUFDRCxHQTVOQSxDQThORDs7O0FBQ0EsTUFBTW1FLFdBQVcsR0FBR3ZDLGVBQUgsYUFBR0EsZUFBSCxpREFBR0EsZUFBZSxDQUFFMUQsUUFBcEIsMkRBQUcsdUJBQTJCRSxVQUEvQztBQUNBLE1BQU1nRyxRQUFRLEdBQUc3RyxXQUFXLENBQUM7QUFBRWEsSUFBQUEsVUFBVSxFQUFFK0Y7QUFBZCxHQUFELENBQTVCO0FBQ0EsTUFBTUUsU0FBUyxHQUFHLENBQUNELFFBQUQsYUFBQ0EsUUFBRCx1QkFBQ0EsUUFBUSxDQUFFQyxTQUFYLEtBQXlCLEtBQTNDOztBQUNBLE1BQU1DLFVBQVUscUJBQVExQyxlQUFlLENBQUMzRCxTQUF4QixDQUFoQjs7QUFFQSxNQUFNc0csUUFBUSxHQUFJSixXQUFXLEtBQUssS0FBbEM7QUFDQSxNQUFNSyxVQUFVLEdBQUdELFFBQVEsR0FBRyxHQUFILEdBQVMsQ0FBcEMsQ0FyT0MsQ0FxT3FDOztBQUN0QyxNQUFNRSxjQUFjLEdBQUcvRCxRQUFRLEdBQUc4RCxVQUFsQztBQUVBLE1BQU1FLEtBQUssR0FBRyxJQUFkOztBQXhPQyxzQkFnUEd6SixZQUFZLENBQUM7QUFBRXlKLElBQUFBLEtBQUssRUFBTEE7QUFBRixHQUFELENBaFBmO0FBQUEsMENBME9DbEUsS0ExT0Q7QUFBQSxNQTJPR21FLE9BM09ILHVCQTJPR0EsT0EzT0g7QUFBQSxNQTJPWUMsT0EzT1osdUJBMk9ZQSxPQTNPWjtBQUFBLE1BMk9xQkMsU0EzT3JCLHVCQTJPcUJBLFNBM09yQjtBQUFBLE1BMk9nQ0MsWUEzT2hDLHVCQTJPZ0NBLFlBM09oQztBQUFBLDRDQTZPQ3ZCLE9BN09EO0FBQUEsTUE4T0d3QixVQTlPSCx5QkE4T0dBLFVBOU9IO0FBQUEsTUE4T2VDLFlBOU9mLHlCQThPZUEsWUE5T2Y7QUFBQSxNQThPNkJDLGVBOU83Qix5QkE4TzZCQSxlQTlPN0I7O0FBa1BELE1BQU1DLFFBQVEsR0FBRzNLLEtBQUssQ0FBQzRLLE9BQU4sQ0FBYztBQUFBLFdBQU87QUFDcENDLE1BQUFBLFVBQVUsRUFBRSxXQUR3QjtBQUVwQzFFLE1BQUFBLFFBQVEsWUFBSzJFLElBQUksQ0FBQ0MsS0FBTCxDQUFXYixjQUFjLEdBQUcsR0FBNUIsQ0FBTDtBQUY0QixLQUFQO0FBQUEsR0FBZCxFQUdiLENBQUNBLGNBQUQsQ0FIYSxDQUFqQjtBQUtBLE1BQU1jLFlBQVksR0FBR2hMLEtBQUssQ0FBQzRLLE9BQU4sQ0FBYztBQUFBLFdBQU87QUFDeENDLE1BQUFBLFVBQVUsRUFBRSxXQUQ0QjtBQUV4QzFFLE1BQUFBLFFBQVEsWUFBSytELGNBQUw7QUFGZ0MsS0FBUDtBQUFBLEdBQWQsRUFHakIsQ0FBQ0EsY0FBRCxDQUhpQixDQUFyQjtBQUtBLE1BQU1lLGNBQWMsZ0JBQUcsb0JBQUMsS0FBRCxRQUFROUIsY0FBUixDQUF2QjtBQUNBLE1BQUkrQixtQkFBbUIsR0FBR3BJLGtCQUExQjtBQUNBLE1BQU1xSSxrQkFBa0IsR0FBR3hKLGVBQWUsMkJBQUMwRixlQUFlLENBQUMsVUFBRCxDQUFoQiwyREFBQyx1QkFBNkI1QyxTQUE5QixDQUExQzs7QUFFQSxNQUFJM0Isa0JBQWtCLEtBQUtzSSxTQUEzQixFQUFzQztBQUFFO0FBQ3RDRixJQUFBQSxtQkFBbUIsR0FBRyxDQUFDQyxrQkFBdkI7QUFDRDs7QUFFRG5MLEVBQUFBLEtBQUssQ0FBQzZILFNBQU4sQ0FBZ0IsWUFBTTtBQUFFO0FBQ3RCLFFBQU13RCxzQkFBc0I7QUFBQSwwRUFBRztBQUFBOztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ3pCQyxnQkFBQUEsWUFEeUIsR0FDVixFQURVLEVBRzdCOztBQUg2Qix1REFJTixDQUFBakUsZUFBZSxTQUFmLElBQUFBLGVBQWUsV0FBZixZQUFBQSxlQUFlLENBQUV6QixZQUFqQixLQUFpQyxFQUozQjs7QUFBQTtBQUk3QixzRUFBNEQ7QUFBakQyRixvQkFBQUEsUUFBaUQ7QUFDcERDLG9CQUFBQSxhQURvRCxHQUNwQ0QsUUFEb0MsYUFDcENBLFFBRG9DLDhDQUNwQ0EsUUFBUSxDQUFFRSxTQUQwQix3REFDcEMsb0JBQXFCSCxZQURlO0FBRTFEQSxvQkFBQUEsWUFBWSxHQUFHQSxZQUFZLENBQUNJLE1BQWIsQ0FBb0JGLGFBQXBCLENBQWY7QUFDRDtBQVA0QjtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLHNCQVN6QixDQUFDMUksa0JBQUQsc0JBQXVCd0ksWUFBdkIsMkNBQXVCLGVBQWNLLE1BQXJDLElBQStDNUksb0JBVHRCO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUEsdUJBV3JCQSxvQkFBb0IsQ0FBQ3VJLFlBQUQsRUFBZTFCLFdBQWYsQ0FYQzs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFIOztBQUFBLHNCQUF0QnlCLHNCQUFzQjtBQUFBO0FBQUE7QUFBQSxPQUE1Qjs7QUFlQSxRQUFJRixrQkFBSixFQUF3QjtBQUN0QkUsTUFBQUEsc0JBQXNCO0FBQ3ZCO0FBQ0YsR0FuQkQsRUFtQkcsQ0FBRXpGLFlBQUYsRUFBZ0JnRSxXQUFoQixDQW5CSDtBQXFCQSxNQUFNZ0MsVUFBVSxHQUFHLENBQUNULGtCQUFwQjtBQUNBLE1BQU1VLGVBQWUsR0FBRyxDQUFDVixrQkFBekI7QUFDQSxNQUFNVyxlQUFlLEdBQUcxRSxjQUFjLEdBQUdsRSxZQUFILEdBQWtCQyxhQUF4RDtBQUNBLE1BQU00SSw0QkFBNEIsR0FBRztBQUNuQ3JKLElBQUFBLGNBQWMsRUFBRThGLGdCQUFnQixHQUFHOUYsY0FBSCxHQUFvQixJQURqQjtBQUVuQ0MsSUFBQUEsU0FBUyxFQUFUQSxTQUZtQztBQUduQ3FKLElBQUFBLGVBQWUsRUFBRWpDLFVBSGtCO0FBSW5DNkIsSUFBQUEsVUFBVSxFQUFWQSxVQUptQztBQUtuQ0MsSUFBQUEsZUFBZSxFQUFmQSxlQUxtQztBQU1uQ3pJLElBQUFBLFVBQVUsRUFBVkEsVUFObUM7QUFPbkM7QUFDQWdFLElBQUFBLGNBQWMsRUFBZEEsY0FSbUM7QUFTbkM3RCxJQUFBQSxZQUFZLEVBQUVpRixnQkFBZ0IsR0FBR2pGLFlBQUgsR0FBa0IsSUFUYjtBQVVuQ1EsSUFBQUEscUJBQXFCLEVBQXJCQSxxQkFWbUM7QUFXbkM7QUFDQStILElBQUFBLGVBQWUsRUFBZkEsZUFabUM7QUFhbkN6RSxJQUFBQSxlQUFlLEVBQWZBLGVBYm1DO0FBY25DRSxJQUFBQSxpQkFBaUIsRUFBakJBLGlCQWRtQztBQWVuQ3dCLElBQUFBLGVBQWUsRUFBZkEsZUFmbUM7QUFnQm5DNUUsSUFBQUEsZUFBZSxFQUFFOEgsZ0JBaEJrQjtBQWlCbkNDLElBQUFBLGNBQWMsRUFBRTdGLEtBQUssR0FBR3RFLFlBQUgsR0FBa0JFLFlBakJKO0FBa0JuQ2tLLElBQUFBLGNBQWMsRUFBRXRDLFFBbEJtQjtBQW1CbkN2RixJQUFBQSxLQUFLLEVBQUU2RSxjQW5CNEI7QUFvQm5DTCxJQUFBQSxxQkFBcUIsRUFBRTVEO0FBcEJZLEdBQXJDO0FBdUJBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0UsV0FBUytHLGdCQUFULENBQTBCRyxZQUExQixFQUF3Q0MsS0FBeEMsU0FBeUc7QUFBQSxpQ0FBeERDLFVBQXdEO0FBQUEsUUFBeERBLFVBQXdELGlDQUEzQyxJQUEyQztBQUFBLG1DQUFyQ0MsWUFBcUM7QUFBQSxRQUFyQ0EsWUFBcUMsbUNBQXRCLElBQXNCO0FBQUEsNEJBQWhCdEcsS0FBZ0I7QUFBQSxRQUFoQkEsS0FBZ0IsNEJBQVIsSUFBUTs7QUFDdkcsUUFBTXVHLG1CQUFtQixxQkFBUTdHLGtCQUFSLENBQXpCOztBQUVBLFFBQUkwRyxLQUFKLEVBQVc7QUFDVCxVQUFJRyxtQkFBbUIsQ0FBQ0MsY0FBcEIsQ0FBbUNMLFlBQW5DLENBQUosRUFBc0Q7QUFDcEQsZUFBT0ksbUJBQW1CLENBQUNKLFlBQUQsQ0FBMUI7QUFDRDtBQUNGLEtBSkQsTUFJTztBQUNMSSxNQUFBQSxtQkFBbUIsQ0FBQ0osWUFBRCxDQUFuQixHQUFvQztBQUFFRSxRQUFBQSxVQUFVLEVBQVZBLFVBQUY7QUFBY0MsUUFBQUEsWUFBWSxFQUFaQSxZQUFkO0FBQTRCdEcsUUFBQUEsS0FBSyxFQUFMQTtBQUE1QixPQUFwQyxDQURLLENBQ21FO0FBQ3pFOztBQUVELFFBQU15RyxtQkFBbUIsR0FBRyxDQUFDLENBQUNDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSixtQkFBWixFQUFpQ2IsTUFBL0Q7O0FBRUEsUUFBSTdHLGtCQUFrQixJQUFJNEgsbUJBQTFCLEVBQStDO0FBQzdDdkksTUFBQUEsZUFBZSxJQUFJQSxlQUFlLENBQUNMLFVBQUQsRUFBYSxDQUFDNEksbUJBQWQsQ0FBbEM7QUFDQXBHLE1BQUFBLFFBQVEsQ0FBQztBQUFFeEIsUUFBQUEsa0JBQWtCLEVBQUU0SDtBQUF0QixPQUFELENBQVI7QUFDRDs7QUFFRCxRQUFJLENBQUN6TCxPQUFPLENBQUN1TCxtQkFBRCxFQUFzQjdHLGtCQUF0QixDQUFaLEVBQXVEO0FBQ3JEVyxNQUFBQSxRQUFRLENBQUM7QUFBRVgsUUFBQUEsa0JBQWtCLEVBQUU2RztBQUF0QixPQUFELENBQVI7QUFDRDtBQUNGO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0UsV0FBU0ssY0FBVCxDQUF3QkMsUUFBeEIsRUFBa0NDLE1BQWxDLEVBQTBDO0FBQ3hDLFFBQU14RSxJQUFJLEdBQUd1RSxRQUFRLEdBQUcsRUFBeEI7QUFDQSxRQUFNRSxNQUFNLEdBQUd6RSxJQUFJLENBQUNvRCxNQUFwQjtBQUNBLFFBQU1zQixLQUFLLEdBQUdGLE1BQU0sQ0FBQ0csU0FBUCxDQUFpQixVQUFDQyxLQUFELEVBQVFDLEdBQVIsRUFBZ0I7QUFDN0MsVUFBSUEsR0FBRyxHQUFHLENBQVYsRUFBYTtBQUNYLFlBQUlELEtBQUssQ0FBQ0UsU0FBTixDQUFnQixDQUFoQixFQUFtQkwsTUFBbkIsTUFBK0J6RSxJQUFuQyxFQUF5QztBQUN2QyxjQUFNK0UsUUFBUSxHQUFHSCxLQUFLLENBQUNILE1BQUQsQ0FBdEI7O0FBRUEsY0FBS00sUUFBUSxHQUFHLEdBQVosSUFBcUJBLFFBQVEsR0FBRyxHQUFwQyxFQUEwQztBQUN4QyxtQkFBTyxJQUFQO0FBQ0Q7QUFDRjtBQUNGOztBQUNELGFBQU8sS0FBUDtBQUNELEtBWGEsQ0FBZDtBQVlBLFdBQU9MLEtBQVA7QUFDRDs7QUFFRCxXQUFTTSxXQUFULEdBQXVCO0FBQUE7O0FBQ3JCLFFBQU1DLFFBQVEsR0FBR25HLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsNkJBQUFBLGVBQWUsQ0FBRTNELFNBQWpCLHdFQUE0QmUsU0FBNUIsR0FBd0M0QyxlQUFlLENBQUMzRCxTQUFoQixDQUEwQmUsU0FBMUIsQ0FBb0NnSixXQUFwQyxFQUF4QyxHQUE0RixFQUE3RztBQUNBLHFCQUFVOUssU0FBVixjQUF1QjZLLFFBQXZCO0FBQ0Q7O0FBRUQsTUFBTUUsUUFBUSxHQUFHSCxXQUFXLEVBQTVCLENBOVdDLENBZ1hEOztBQWhYQyxpQkFxWEdsTixPQUFPLENBQUM7QUFDVmtGLElBQUFBLEdBQUcsRUFBSEEsR0FEVTtBQUVWM0IsSUFBQUEsS0FBSyxFQUFMQSxLQUZVO0FBR1YrSixJQUFBQSxPQUFPLEVBQUV2SSxXQUhDO0FBSVZ3SSxJQUFBQSxNQUFNO0FBQ0o5RyxNQUFBQSxLQUFLLEVBQUU7QUFBRUMsUUFBQUEsTUFBTSxFQUFFO0FBQVY7QUFESCxPQUVEckUsY0FGQyxhQUVEQSxjQUZDLHVCQUVEQSxjQUFjLENBQUVrTCxNQUZmO0FBR0pDLE1BQUFBLEtBQUssRUFBRW5MLGNBQUYsYUFBRUEsY0FBRix1QkFBRUEsY0FBYyxDQUFFbUwsS0FIbkI7QUFJSjtBQUNBQyxNQUFBQSxPQUFPLEVBQUUsZ0JBQUExSyxVQUFVLFVBQVYsa0RBQVkySyxhQUFaLHNCQUE2QjNLLFVBQTdCLGlEQUE2QixhQUFZMEssT0FBekMsS0FBb0Q7QUFMekQsTUFKSTtBQVdWRSxJQUFBQSxNQUFNLEVBQUV6SyxZQVhFO0FBWVZzSyxJQUFBQSxLQUFLLEVBQUVuTCxjQUFGLGFBQUVBLGNBQUYsdUJBQUVBLGNBQWMsQ0FBRW1MLEtBWmI7QUFhVkksSUFBQUEsTUFBTSxFQUFFbkYscUJBYkU7QUFjVjRFLElBQUFBLFFBQVEsRUFBUkEsUUFkVTtBQWVWL0YsSUFBQUEsSUFBSSxFQUFKQTtBQWZVLEdBQUQsQ0FyWFY7QUFBQSxNQWtYUXVHLFNBbFhSLFlBa1hDaEgsS0FsWEQ7QUFBQSxNQW1YVWlILFdBblhWLFlBbVhDQyxPQW5YRDtBQUFBLE1Bb1hDQyxVQXBYRCxZQW9YQ0EsVUFwWEQ7O0FBdVlEck8sRUFBQUEsS0FBSyxDQUFDNkgsU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBSXFHLFNBQVMsSUFBSUMsV0FBakIsRUFBOEI7QUFDNUJqRyxNQUFBQSxPQUFPLENBQUNDLEdBQVIsZUFBMEIrRixTQUExQixFQUQ0QixDQUU1QjtBQUNEO0FBQ0YsR0FMRCxFQUtHLENBQUNBLFNBQUQsRUFBWUMsV0FBWixDQUxIO0FBT0FuTyxFQUFBQSxLQUFLLENBQUM2SCxTQUFOLENBQWdCLFlBQU07QUFBRTtBQUN0QixRQUFNeUcsU0FBUztBQUFBLDBFQUFHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBYztBQUM5QnBHLGdCQUFBQSxPQUFPLENBQUNxRyxJQUFSLDZDQUFrRGhKLEdBQWxEO0FBRGdCO0FBQUEsdUJBRVY4SSxVQUFVLENBQUN6RixrQkFBRCxDQUFWLENBQStCNEYsSUFBL0IsQ0FBb0MsVUFBQ0MsT0FBRCxFQUFhO0FBQUU7QUFDdkQsc0JBQUlBLE9BQUosRUFBYTtBQUNYdkcsb0JBQUFBLE9BQU8sQ0FBQ0MsR0FBUjtBQUNBLHdCQUFNdUcsa0JBQWtCLEdBQUcvQixNQUFNLENBQUNDLElBQVAsQ0FBWWpILGtCQUFaLENBQTNCOztBQUVBLHdCQUFJK0ksa0JBQUosYUFBSUEsa0JBQUosZUFBSUEsa0JBQWtCLENBQUUvQyxNQUF4QixFQUFnQztBQUFBLGtFQUNOK0Msa0JBRE07QUFBQTs7QUFBQTtBQUM5QiwrRUFBNEM7QUFBQSw4QkFBakNDLFNBQWlDO0FBQUEsOEJBQ2xDcEMsWUFEa0MsR0FDakI1RyxrQkFBa0IsQ0FBQ2dKLFNBQUQsQ0FERCxDQUNsQ3BDLFlBRGtDO0FBRTFDQSwwQkFBQUEsWUFBWSxJQUFJQSxZQUFZLEVBQTVCO0FBQ0Q7QUFKNkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUsvQjs7QUFFRHJFLG9CQUFBQSxPQUFPLENBQUNxRyxJQUFSLENBQWEsMkNBQWI7QUFDQWpJLG9CQUFBQSxRQUFRLENBQUM7QUFDUGQsc0JBQUFBLFNBQVMsRUFBRSxLQURKO0FBRVBQLHNCQUFBQSxhQUFhLEVBQUUsSUFGUjtBQUdQQyxzQkFBQUEsR0FBRyxFQUFFMEQ7QUFIRSxxQkFBRCxDQUFSO0FBS0FoSCxvQkFBQUEsS0FBSyxDQUFDLEdBQUQsQ0FBTCxDQUFXNE0sSUFBWCxDQUFnQixZQUFNO0FBQ3BCbkgsc0JBQUFBLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsWUFBQUEsZUFBZSxDQUFFdUgsY0FBakI7QUFDRCxxQkFGRDtBQUdELG1CQXBCRCxNQW9CTztBQUNMMUcsb0JBQUFBLE9BQU8sQ0FBQ2hCLEtBQVIsQ0FBYyx3REFBZDtBQUNBWixvQkFBQUEsUUFBUSxDQUFDO0FBQUVkLHNCQUFBQSxTQUFTLEVBQUU7QUFBYixxQkFBRCxDQUFSO0FBQ0Q7QUFDRixpQkF6QkssQ0FGVTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFIOztBQUFBLHNCQUFUOEksU0FBUztBQUFBO0FBQUE7QUFBQSxPQUFmOztBQThCQSxRQUFJOUksU0FBSixFQUFlO0FBQ2IsVUFBSSxDQUFDWCxlQUFMLEVBQXNCO0FBQ3BCcUQsUUFBQUEsT0FBTyxDQUFDQyxHQUFSO0FBQ0QsT0FGRCxNQUVPLElBQUksQ0FBQzVDLEdBQUwsRUFBVTtBQUNmMkMsUUFBQUEsT0FBTyxDQUFDQyxHQUFSO0FBQ0QsT0FGTSxNQUVBO0FBQ0xELFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUjs7QUFDQW1HLFFBQUFBLFNBQVM7QUFDVjtBQUNGO0FBQ0YsR0F6Q0QsRUF5Q0csQ0FBQzlJLFNBQUQsRUFBWVgsZUFBWixFQUE2QlUsR0FBN0IsQ0F6Q0g7QUEyQ0E7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0UsV0FBU3NKLDhCQUFULENBQXdDQyxTQUF4QyxFQUFtRDVKLEdBQW5ELEVBQXdENkosbUJBQXhELEVBQTZFbk0sT0FBN0UsRUFBOEY7QUFDNUYsUUFBSW9NLE9BQUo7QUFDQSxRQUFNQyxhQUFhLEdBQUdILFNBQUgsYUFBR0EsU0FBSCx1QkFBR0EsU0FBUyxDQUFFSSxLQUFYLENBQWlCLE1BQWpCLENBQXRCO0FBQ0EsUUFBTUMsWUFBWSxHQUFHdEMsY0FBYyxDQUFDM0gsR0FBRCxhQUFDQSxHQUFELHVCQUFDQSxHQUFHLENBQUVrSyxPQUFOLEVBQWVILGFBQWYsQ0FBbkM7O0FBRUEsUUFBSUUsWUFBWSxJQUFJLENBQXBCLEVBQXVCO0FBQ3JCLFVBQU1FLGNBQWMsR0FBR0osYUFBYSxDQUFDRSxZQUFELENBQXBDO0FBQ0EsVUFBTUcsV0FBVyxHQUFHRCxjQUFjLENBQUNILEtBQWYsQ0FBcUIsTUFBckIsQ0FBcEI7QUFDQSxVQUFNSyxVQUFVLEdBQUcxQyxjQUFjLENBQUMzSCxHQUFELGFBQUNBLEdBQUQsdUJBQUNBLEdBQUcsQ0FBRXNLLEtBQU4sRUFBYUYsV0FBYixDQUFqQzs7QUFFQSxVQUFJQyxVQUFVLElBQUksQ0FBbEIsRUFBcUI7QUFDbkIsWUFBTUUsWUFBWSxHQUFHek8seUJBQXlCLENBQUMwTyxzQkFBMUIsQ0FBaURYLG1CQUFqRCxDQUFyQjtBQUNBN0csUUFBQUEsT0FBTyxDQUFDQyxHQUFSLDhCQUFrQ3ZGLE9BQWxDLHVDQUFzRTZNLFlBQVksQ0FBQ3BDLFNBQWIsQ0FBdUIsQ0FBdkIsRUFBMEIsR0FBMUIsQ0FBdEU7QUFDQSxZQUFNc0MsUUFBUSxHQUFHTCxXQUFXLENBQUNDLFVBQUQsQ0FBNUI7QUFDQSxZQUFNSyxXQUFXLEdBQUcsQ0FBQyxDQUFBMUssR0FBRyxTQUFILElBQUFBLEdBQUcsV0FBSCxZQUFBQSxHQUFHLENBQUVzSyxLQUFMLElBQWEsRUFBZCxFQUFrQjdELE1BQXRDO0FBQ0EyRCxRQUFBQSxXQUFXLENBQUNDLFVBQUQsQ0FBWCxHQUEwQkksUUFBUSxDQUFDdEMsU0FBVCxDQUFtQixDQUFuQixFQUFzQnVDLFdBQVcsR0FBRyxDQUFwQyxJQUF5Q0gsWUFBbkU7QUFDQSxZQUFNSSxVQUFVLEdBQUdQLFdBQVcsQ0FBQ1EsSUFBWixDQUFpQixNQUFqQixDQUFuQjtBQUNBYixRQUFBQSxhQUFhLENBQUNFLFlBQUQsQ0FBYixHQUE4QlUsVUFBOUI7QUFDQWIsUUFBQUEsT0FBTyxHQUFHQyxhQUFhLENBQUNhLElBQWQsQ0FBbUIsTUFBbkIsQ0FBVjtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT2QsT0FBUDtBQUNEOztBQUVEaFAsRUFBQUEsS0FBSyxDQUFDNkgsU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBSTFDLFdBQUosRUFBaUI7QUFDZixVQUFJNEssZ0JBQWdCLEdBQUcsQ0FBQ2xILGdCQUF4Qjs7QUFFQSxVQUFJLENBQUNrSCxnQkFBTCxFQUF1QjtBQUFFO0FBQ3ZCLFlBQUlqSCxxQkFBcUIsS0FBS0Ysa0JBQTlCLEVBQWtEO0FBQ2hEVixVQUFBQSxPQUFPLENBQUM4SCxJQUFSLDBFQUErRXBILGtCQUEvRSxrQ0FBeUhFLHFCQUF6SDtBQUNBaUgsVUFBQUEsZ0JBQWdCLEdBQUcsSUFBbkI7QUFDRCxTQUhELE1BR087QUFDTDdILFVBQUFBLE9BQU8sQ0FBQ0MsR0FBUiwyREFBK0RXLHFCQUEvRDtBQUNBeEMsVUFBQUEsUUFBUSxDQUFDO0FBQUV6QixZQUFBQSxlQUFlLEVBQUU7QUFBbkIsV0FBRCxDQUFSO0FBQ0Q7QUFDRjs7QUFFRCxVQUFJa0wsZ0JBQUosRUFBc0I7QUFBRTtBQUN0QjdILFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUjtBQUNBN0IsUUFBQUEsUUFBUSxDQUFDO0FBQUV6QixVQUFBQSxlQUFlLEVBQUUsS0FBbkI7QUFBMEJJLFVBQUFBLGFBQWEsRUFBRSxLQUF6QztBQUFnRE0sVUFBQUEsR0FBRyxFQUFFO0FBQXJELFNBQUQsQ0FBUixDQUZvQixDQUVrRDs7QUFDdEV3RCxRQUFBQSxlQUFlLEdBQUd5RixJQUFsQixDQUF1QixVQUFDQyxPQUFELEVBQWE7QUFDbEMsY0FBSUEsT0FBSixFQUFhO0FBQ1h2RyxZQUFBQSxPQUFPLENBQUNDLEdBQVI7QUFDQTdCLFlBQUFBLFFBQVEsQ0FBQztBQUFFekIsY0FBQUEsZUFBZSxFQUFFLElBQW5CO0FBQXlCSSxjQUFBQSxhQUFhLEVBQUU7QUFBeEMsYUFBRCxDQUFSO0FBQ0Q7QUFDRixTQUxEO0FBTUQ7O0FBRUQsVUFBTXlKLGtCQUFrQixHQUFHL0IsTUFBTSxDQUFDQyxJQUFQLENBQVlqSCxrQkFBWixDQUEzQjs7QUFFQSxVQUFJK0ksa0JBQUosYUFBSUEsa0JBQUosZUFBSUEsa0JBQWtCLENBQUUvQyxNQUF4QixFQUFnQztBQUM5QixZQUFJbUQsU0FBUyxHQUFHNU8sSUFBSSxDQUFDK1AsZUFBTCxDQUFxQjVJLGVBQXJCLGFBQXFCQSxlQUFyQix1QkFBcUJBLGVBQWUsQ0FBRUssYUFBdEMsQ0FBaEI7QUFDQSxZQUFJd0ksU0FBUyxHQUFHLEtBQWhCO0FBQ0EsWUFBSXROLFFBQU8sR0FBRyxDQUFkOztBQUg4QixvREFLTjhMLGtCQUxNO0FBQUE7O0FBQUE7QUFLOUIsaUVBQTRDO0FBQUEsZ0JBQWpDQyxVQUFpQztBQUMxQy9MLFlBQUFBLFFBQU8sR0FBR3VOLFFBQVEsQ0FBQ3hCLFVBQUQsQ0FBbEI7QUFEMEMseUNBRVpoSixrQkFBa0IsQ0FBQy9DLFFBQUQsQ0FGTjtBQUFBLGdCQUVsQzBKLFlBRmtDLDBCQUVsQ0EsVUFGa0M7QUFBQSxnQkFFdEJyRyxPQUZzQiwwQkFFdEJBLEtBRnNCOztBQUkxQyxnQkFBSXFHLFlBQUosRUFBZ0I7QUFDZCxrQkFBSTBDLFFBQU8sU0FBWDs7QUFEYyxpQ0FLVjFDLFlBQVUsQ0FBQ3JHLE9BQUQsQ0FMQTtBQUFBLGtCQUdaZixLQUhZLGdCQUdaQSxHQUhZO0FBQUEsa0JBSVo2SixvQkFKWSxnQkFJWkEsbUJBSlk7O0FBT2Qsa0JBQUlBLG9CQUFtQixJQUFJRCxTQUEzQixFQUFzQztBQUFFO0FBQ3RDRSxnQkFBQUEsUUFBTyxHQUFHSCw4QkFBOEIsQ0FBQ0MsU0FBRCxFQUFZNUosS0FBWixFQUFpQjZKLG9CQUFqQixFQUFzQ25NLFFBQXRDLENBQXhDO0FBQ0Q7O0FBRUQsa0JBQUlvTSxRQUFKLEVBQWE7QUFDWEYsZ0JBQUFBLFNBQVMsR0FBR0UsUUFBWjtBQUNELGVBRkQsTUFFTztBQUNMa0IsZ0JBQUFBLFNBQVMsR0FBRyxJQUFaO0FBQ0E7QUFDRDtBQUNGO0FBQ0Y7QUEzQjZCO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBNkI5QixZQUFJQSxTQUFKLEVBQWU7QUFBRTtBQUNmaEksVUFBQUEsT0FBTyxDQUFDQyxHQUFSLDhCQUFrQ3ZGLFFBQWxDO0FBQ0EsY0FBSXdOLFdBQUo7O0FBRmEsc0RBSVcxQixrQkFKWDtBQUFBOztBQUFBO0FBSWIsbUVBQTRDO0FBQUEsa0JBQWpDQyxTQUFpQzs7QUFDMUMsa0JBQU0vTCxTQUFPLEdBQUd1TixRQUFRLENBQUN4QixTQUFELENBQXhCOztBQUQwQywwQ0FFWmhKLGtCQUFrQixDQUFDL0MsU0FBRCxDQUZOO0FBQUEsa0JBRWxDMEosVUFGa0MseUJBRWxDQSxVQUZrQztBQUFBLGtCQUV0QnJHLE1BRnNCLHlCQUV0QkEsS0FGc0I7O0FBSTFDLGtCQUFJcUcsVUFBSixFQUFnQjtBQUNkLG9CQUFJMEMsT0FBTyxTQUFYOztBQURjLGtDQU1WMUMsVUFBVSxDQUFDckcsTUFBRCxDQU5BO0FBQUEsb0JBR1pvSyxZQUhZLGVBR1pBLFlBSFk7QUFBQSxvQkFJWm5MLEtBSlksZUFJWkEsR0FKWTtBQUFBLG9CQUtaNkosbUJBTFksZUFLWkEsbUJBTFk7O0FBUWQsb0JBQUlBLG1CQUFtQixJQUFJLENBQUNDLE9BQTVCLEVBQXFDO0FBQ25DLHNCQUFJc0IsbUJBQW1CLEdBQUcsSUFBMUI7O0FBRUEsc0JBQUlwTCxLQUFKLEVBQVM7QUFDUCx3QkFBSW1MLFlBQUosRUFBa0I7QUFBQSxrREFDZXRQLGdCQUFnQixDQUFDd1AsNkJBQWpCLENBQStDeEIsbUJBQS9DLEVBQW9Fc0IsWUFBcEUsQ0FEZjtBQUFBLDBCQUNSRyxrQkFEUSx5QkFDUkEsa0JBRFE7O0FBRWhCRixzQkFBQUEsbUJBQW1CLEdBQUdFLGtCQUF0QjtBQUNELHFCQUhELE1BR087QUFDTEYsc0JBQUFBLG1CQUFtQixHQUFHdkIsbUJBQXRCO0FBQ0Q7O0FBQ0RxQixvQkFBQUEsV0FBVyxHQUFHRSxtQkFBbUIsS0FBSWpKLGVBQUosYUFBSUEsZUFBSix1QkFBSUEsZUFBZSxDQUFFb0osV0FBakIsQ0FBNkJ2TCxLQUFHLENBQUNrSyxPQUFqQyxFQUEwQ2xLLEtBQUcsQ0FBQ3NLLEtBQTlDLEVBQXFEO0FBQUVsRSxzQkFBQUEsWUFBWSxFQUFFZ0Y7QUFBaEIscUJBQXJELENBQUosQ0FBakM7QUFDRDtBQUNGO0FBQ0Y7QUFDRjtBQTlCWTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQWdDYnhCLFVBQUFBLFNBQVMsR0FBRzFPLE1BQU0sQ0FBQ3NRLE1BQVAsQ0FBY04sV0FBZCxFQUEyQjtBQUFFTyxZQUFBQSxjQUFjLEVBQUU7QUFBbEIsV0FBM0IsQ0FBWjtBQUNEOztBQUVEekksUUFBQUEsT0FBTyxDQUFDQyxHQUFSLG1EQUF1RDJHLFNBQVMsQ0FBQ3pCLFNBQVYsQ0FBb0IsQ0FBcEIsRUFBdUIsR0FBdkIsQ0FBdkQ7QUFDQS9HLFFBQUFBLFFBQVEsQ0FBQztBQUFFbEIsVUFBQUEsV0FBVyxFQUFFMEosU0FBZjtBQUEwQnRKLFVBQUFBLFNBQVMsRUFBRSxJQUFyQztBQUEyQ0wsVUFBQUEsV0FBVyxFQUFFO0FBQXhELFNBQUQsQ0FBUjtBQUNEO0FBQ0Y7QUFDRixHQS9GRCxFQStGRyxDQUFDQSxXQUFELENBL0ZILEVBeGRDLENBeWpCRDs7QUF6akJDLGNBMGpCMEI0RSxVQUFVLElBQUksRUExakJ4QztBQUFBLE1BMGpCT3FGLE9BMWpCUCxTQTBqQk9BLE9BMWpCUDtBQUFBLE1BMGpCZ0JJLEtBMWpCaEIsU0EwakJnQkEsS0ExakJoQjs7QUE0akJEeFAsRUFBQUEsS0FBSyxDQUFDNkgsU0FBTixDQUFnQixZQUFNO0FBQ3BCLFFBQU0rSSxhQUFhLEdBQUd2SixlQUFILGFBQUdBLGVBQUgsdUJBQUdBLGVBQWUsQ0FBRXpCLFlBQXZDOztBQUNBLFFBQUlpTCxhQUFhLEdBQUcsSUFBSXZMLEdBQUosRUFBcEI7QUFDQSxRQUFJd0wsZ0JBQWdCLEdBQUcsS0FBdkI7QUFDQSxRQUFNQyxJQUFJLEdBQUdGLGFBQWI7QUFDQSxRQUFNRyxjQUFjLEdBQUdoTSxvQkFBSCxhQUFHQSxvQkFBSCx1QkFBR0Esb0JBQW9CLENBQUVSLE1BQTdDO0FBQ0EsUUFBTXlNLGVBQWUsR0FBR2pNLG9CQUFILGFBQUdBLG9CQUFILHVCQUFHQSxvQkFBb0IsQ0FBRWtNLFFBQTlDO0FBQ0EsUUFBSUMsZ0JBQWdCLEdBQUcsSUFBdkIsQ0FQb0IsQ0FTcEI7O0FBQ0EsUUFBSVAsYUFBYSxTQUFiLElBQUFBLGFBQWEsV0FBYixJQUFBQSxhQUFhLENBQUVqRixNQUFmLElBQ0ZzRixlQURFLElBRUR6TSxNQUFNLEtBQUt3TSxjQUZWLElBR0ZDLGVBQWUsQ0FBQzdCLE9BQUQsQ0FIYixJQUcwQjtBQUM1Qm5MLElBQUFBLGFBSkUsYUFJRkEsYUFKRSxlQUlGQSxhQUFhLENBQUVtTixLQUpqQixFQUtFO0FBQ0E7QUFDQSxVQUFJLENBQUNuUSxPQUFPLENBQUM4RCxpQkFBRCxFQUFvQmQsYUFBcEIsQ0FBUixJQUNGLENBQUNoRCxPQUFPLENBQUMyRSxZQUFELEVBQWVnTCxhQUFmLENBRFYsRUFDeUM7QUFBQTs7QUFDdkMsWUFBTVMsY0FBYyxHQUFHLEVBQXZCO0FBQ0EsWUFBTUMsVUFBVSxHQUFHLEVBQW5CLENBRnVDLENBRWpCOztBQUN0QixZQUFJQyxVQUFVLEdBQUdYLGFBQWEsQ0FBQyxDQUFELENBQWIsQ0FBaUJwQixLQUFsQzs7QUFFQSxZQUFJLE9BQU8rQixVQUFQLEtBQXNCLFFBQTFCLEVBQW9DO0FBQ2xDQSxVQUFBQSxVQUFVLEdBQUdwQixRQUFRLENBQUNvQixVQUFELENBQXJCO0FBQ0Q7O0FBRUQsWUFBSUMsU0FBUyxHQUFHRCxVQUFoQjs7QUFFQSxhQUFLLElBQUlFLENBQUMsR0FBRyxDQUFSLEVBQVdDLENBQUMsR0FBR2QsYUFBYSxDQUFDakYsTUFBbEMsRUFBMEM4RixDQUFDLEdBQUdDLENBQTlDLEVBQWlERCxDQUFDLEVBQWxELEVBQXNEO0FBQ3BELGNBQU1sRyxRQUFRLEdBQUdxRixhQUFhLENBQUNhLENBQUQsQ0FBOUI7QUFEb0QsY0FHbERyQyxTQUhrRCxHQUtoRDdELFFBTGdELENBR2xENkQsT0FIa0Q7QUFBQSxjQUlsREksT0FKa0QsR0FLaERqRSxRQUxnRCxDQUlsRGlFLEtBSmtELEVBTXBEOztBQUNBLGNBQUltQyxNQUFNLEdBQUdKLFVBQVUsR0FBR0UsQ0FBMUI7O0FBQ0FELFVBQUFBLFNBQVMsR0FBR0csTUFBWjtBQUNBTCxVQUFBQSxVQUFVLFdBQUlsQyxTQUFKLGNBQWV1QyxNQUFmLEVBQVYsYUFBd0N2QyxTQUF4QyxjQUFtREksT0FBbkQ7O0FBRUEsY0FBSSxDQUFDNkIsY0FBYyxDQUFDakMsU0FBRCxDQUFuQixFQUE4QjtBQUM1QmlDLFlBQUFBLGNBQWMsQ0FBQ2pDLFNBQUQsQ0FBZCxHQUEwQixFQUExQjtBQUNEOztBQUVELGNBQUk5RCxZQUFZLEdBQUcsRUFBbkI7O0FBRUEsY0FBSyxPQUFPa0UsT0FBUCxLQUFpQixRQUFsQixJQUFnQ0EsT0FBSyxDQUFDL0csUUFBTixDQUFlLEdBQWYsQ0FBcEMsRUFBMEQ7QUFDeEQsZ0JBQU1tSixNQUFNLEdBQUcxUSxTQUFTLENBQUMrUCxlQUFELFlBQXFCN0IsU0FBckIsY0FBZ0NJLE9BQWhDLEVBQXhCOztBQUR3RCx3REFHaENvQyxNQUhnQztBQUFBOztBQUFBO0FBR3hELHFFQUFnQztBQUFBLG9CQUFyQkMsU0FBcUI7QUFDOUIsb0JBQU1DLEVBQUUsR0FBR0QsU0FBUyxDQUFDcEcsU0FBVixDQUFvQkgsWUFBL0I7QUFDQUEsZ0JBQUFBLFlBQVksR0FBR0EsWUFBWSxDQUFDSSxNQUFiLENBQW9Cb0csRUFBcEIsQ0FBZjtBQUNEO0FBTnVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPekQsV0FQRCxNQU9PO0FBQUE7O0FBQ0x4RyxZQUFBQSxZQUFZLDRCQUFHMkYsZUFBZSxDQUFDN0IsU0FBRCxDQUFmLENBQXlCSSxPQUF6QixDQUFILDBEQUFHLHNCQUFpQ2xFLFlBQWhEO0FBQ0Q7O0FBRUQsY0FBSUEsWUFBSixFQUFrQjtBQUNoQkEsWUFBQUEsWUFBWSxHQUFHaEssbUJBQW1CLENBQUNnSyxZQUFELENBQWxDO0FBQ0ErRixZQUFBQSxjQUFjLENBQUNqQyxTQUFELENBQWQsQ0FBd0J1QyxNQUF4QixJQUFrQztBQUFFckcsY0FBQUEsWUFBWSxFQUFaQTtBQUFGLGFBQWxDOztBQUNBeUYsWUFBQUEsSUFBSSxDQUFDZ0IsR0FBTCxXQUFZM0MsU0FBWixjQUF1QkksT0FBdkIsR0FBZ0NsRSxZQUFoQztBQUNEO0FBQ0YsU0E1Q3NDLENBOEN2Qzs7O0FBOUN1QyxvQ0ErQ3JCckgsYUEvQ3FCLGFBK0NyQkEsYUEvQ3FCLGlEQStDckJBLGFBQWEsQ0FBRVAsU0EvQ00sMkRBK0NyQix1QkFBMEJ3TCxLQUExQixDQUFnQyxHQUFoQyxDQS9DcUI7QUFBQTtBQUFBLFlBK0NoQ0UsUUEvQ2dDOztBQWdEdkMsWUFBSTRDLE1BQU0sYUFBTTVDLFFBQU4sY0FBaUJtQyxVQUFqQixDQUFWOztBQUVBLFlBQUlDLFNBQVMsSUFBSUQsVUFBakIsRUFBNkI7QUFDM0JTLFVBQUFBLE1BQU0sZUFBUVIsU0FBUixDQUFOO0FBQ0Q7O0FBRUQsWUFBTVMsWUFBWSxHQUFHblIsd0JBQXdCLENBQUM7QUFDNUNvUixVQUFBQSxVQUFVLEVBQUViLGNBRGdDO0FBRTVDbk0sVUFBQUEsR0FBRyxFQUFFOE0sTUFGdUM7QUFHNUNaLFVBQUFBLEtBQUssRUFBRW5OLGFBQUYsYUFBRUEsYUFBRix1QkFBRUEsYUFBYSxDQUFFbU4sS0FIc0I7QUFJNUNlLFVBQUFBLFVBQVUsRUFBRWxPLGFBQUYsYUFBRUEsYUFBRix1QkFBRUEsYUFBYSxDQUFFa087QUFKaUIsU0FBRCxDQUE3Qzs7QUFPQSxZQUFNOU0sV0FBVSxHQUFHLElBQUlDLEdBQUosRUFBbkI7O0FBRUEsWUFBSTJNLFlBQUosYUFBSUEsWUFBSixlQUFJQSxZQUFZLENBQUVHLElBQWxCLEVBQXdCO0FBQ3RCSCxVQUFBQSxZQUFZLENBQUNJLE9BQWIsQ0FBcUIsVUFBQ0MsS0FBRCxFQUFRQyxHQUFSLEVBQWdCO0FBQ25DLGdCQUFNQyxJQUFJLEdBQUdsQixVQUFVLENBQUNpQixHQUFELENBQXZCOztBQUVBbE4sWUFBQUEsV0FBVSxDQUFDME0sR0FBWCxDQUFlUyxJQUFmLEVBQXFCRixLQUFLLENBQUNHLEdBQU4sQ0FBVSxVQUFBQyxJQUFJO0FBQUEscURBQzVCQSxJQUQ0QjtBQUN0QkMsZ0JBQUFBLElBQUksRUFBRXpTLElBQUksQ0FBQzBTLGVBQUwsQ0FBcUJGLElBQUksQ0FBQ0MsSUFBMUI7QUFEZ0I7QUFBQSxhQUFkLENBQXJCO0FBR0QsV0FORDtBQU9EOztBQUNEOUIsUUFBQUEsYUFBYSxHQUFHeEwsV0FBaEI7QUFDQThMLFFBQUFBLGdCQUFnQixHQUFHbE4sYUFBbkI7QUFDQTZNLFFBQUFBLGdCQUFnQixHQUFHLElBQW5CO0FBQ0Q7QUFDRjs7QUFFRCxRQUFNdkssUUFBYSxHQUFHLEVBQXRCLENBaEdvQixDQWtHcEI7O0FBQ0EsUUFBSSxDQUFDMUUsY0FBYyxDQUFDbUUsZUFBRCxFQUFrQitLLElBQWxCLENBQW5CLEVBQTRDO0FBQzFDeEssTUFBQUEsUUFBUSxDQUFDUCxlQUFULEdBQTJCK0ssSUFBM0I7QUFDRDs7QUFFRCxRQUFJLENBQUM5UCxPQUFPLENBQUMwTCxNQUFNLENBQUNDLElBQVAsQ0FBWWhILFlBQVksSUFBSSxFQUE1QixDQUFELEVBQWtDK0csTUFBTSxDQUFDQyxJQUFQLENBQVlnRSxhQUFhLElBQUksRUFBN0IsQ0FBbEMsQ0FBWixFQUFpRjtBQUMvRXJLLE1BQUFBLFFBQVEsQ0FBQ1gsWUFBVCxHQUF3QmdMLGFBQXhCO0FBQ0FySyxNQUFBQSxRQUFRLENBQUN4QixpQkFBVCxHQUE2Qm9NLGdCQUE3QjtBQUNBNUssTUFBQUEsUUFBUSxDQUFDbEIsVUFBVCxHQUFzQndMLGFBQXRCO0FBQ0Q7O0FBRUQsUUFBSU0sZ0JBQUosRUFBc0I7QUFDcEI1SyxNQUFBQSxRQUFRLENBQUN4QixpQkFBVCxHQUE2Qm9NLGdCQUE3QjtBQUNEOztBQUVELFFBQUlMLGdCQUFKLEVBQXNCO0FBQ3BCLFVBQUksQ0FBQ2pQLGNBQWMsQ0FBQ3dELFVBQVUsSUFBSyxJQUFJQyxHQUFKLEVBQWhCLEVBQTRCdUwsYUFBNUIsQ0FBbkIsRUFBK0Q7QUFDN0R0SyxRQUFBQSxRQUFRLENBQUNsQixVQUFULEdBQXNCd0wsYUFBdEI7QUFDRDtBQUNGOztBQUVELFFBQUlsRSxNQUFNLENBQUNDLElBQVAsQ0FBWXJHLFFBQVosRUFBc0JvRixNQUExQixFQUFrQztBQUNoQ3JGLE1BQUFBLFFBQVEsQ0FBQ0MsUUFBRCxDQUFSO0FBQ0Q7QUFDRixHQTFIRCxFQTBIRyxDQUFDM0MsS0FBRCxFQUFRRSxVQUFSLEVBQW9CVSxNQUFwQixFQUE0Qm9GLFdBQTVCLEVBQXlDdkMsZUFBekMsYUFBeUNBLGVBQXpDLHVCQUF5Q0EsZUFBZSxDQUFFekIsWUFBMUQsRUFBd0VaLG9CQUF4RSxFQUE4RmYsYUFBOUYsQ0ExSEg7QUE0SEFqRSxFQUFBQSxLQUFLLENBQUM2SCxTQUFOLENBQWdCLFlBQU07QUFDcEJ2QixJQUFBQSxRQUFRLENBQUM7QUFBRVAsTUFBQUEscUJBQXFCLEVBQUU7QUFBekIsS0FBRCxDQUFSO0FBQ0QsR0FGRCxFQUVHLENBQUN5SixLQUFELENBRkg7O0FBSUEsTUFBTXFELDJCQUEyQixHQUFHLFNBQTlCQSwyQkFBOEIsQ0FBQ25QLFNBQUQsRUFBWW9QLE9BQVosRUFBd0I7QUFDMUQ1TSxJQUFBQSxTQUFTLENBQUMsVUFBQU0sU0FBUztBQUFBLDZDQUNkQSxTQURjO0FBRWpCVCxRQUFBQSxxQkFBcUIsa0NBQU1TLFNBQVMsQ0FBQ1QscUJBQWhCLHFDQUEyQ3JDLFNBQVMsQ0FBQzBMLE9BQXJELGNBQWdFMUwsU0FBUyxDQUFDOEwsS0FBMUUsR0FBb0ZzRCxPQUFwRjtBQUZKO0FBQUEsS0FBVixDQUFUO0FBSUQsR0FMRDs7QUFPQSxNQUFJbEMsYUFBYSxHQUFHdkosZUFBSCxhQUFHQSxlQUFILHVCQUFHQSxlQUFlLENBQUV6QixZQUFyQzs7QUFFQSxNQUFJLG9CQUFDZ0wsYUFBRCwyQ0FBQyxlQUFlakYsTUFBaEIsQ0FBSixFQUE0QjtBQUFFO0FBQzVCaUYsSUFBQUEsYUFBYSxHQUFHLG1CQUFNbE4sU0FBTixFQUFoQjtBQUNEOztBQUVEMUQsRUFBQUEsS0FBSyxDQUFDNkgsU0FBTixDQUFnQixZQUFNO0FBQ3BCSyxJQUFBQSxPQUFPLENBQUNDLEdBQVIsMEJBQXFDZCxlQUFyQztBQUNELEdBRkQsRUFFRyxDQUFDdUosYUFBRCxDQUZIO0FBSUEsTUFBTW1DLHNCQUFzQixxQkFBR25DLGFBQUgsbURBQUcsZUFBZTZCLEdBQWYsQ0FBbUIsVUFBQ08saUJBQUQsRUFBb0IvRixLQUFwQixFQUE4QjtBQUFBOztBQUM5RSxRQUFNZ0csbUJBQW1CLEdBQUcsQ0FBQUQsaUJBQWlCLFNBQWpCLElBQUFBLGlCQUFpQixXQUFqQixxQ0FBQUEsaUJBQWlCLENBQUV2SCxTQUFuQixnRkFBOEJILFlBQTlCLEtBQThDLEVBQTFFLENBRDhFLENBRTlFOztBQUY4RSxnQkFHbkQwSCxpQkFBaUIsSUFBSSxFQUg4QjtBQUFBLFFBR3RFNUQsT0FIc0UsU0FHdEVBLE9BSHNFO0FBQUEsUUFHN0RJLEtBSDZELFNBRzdEQSxLQUg2RDs7QUFJOUUsUUFBTXpGLFVBQVUsbUNBQ1g2RyxhQURXO0FBRWR4QixNQUFBQSxPQUFPLEVBQVBBLE9BRmM7QUFHZEksTUFBQUEsS0FBSyxFQUFMQTtBQUhjLE1BQWhCOztBQUtBLFFBQU0wRCw2QkFBNkIsbUNBQzlCbkgsNEJBRDhCO0FBRWpDSyxNQUFBQSxZQUFZLEVBQUVhLEtBRm1CO0FBR2pDZ0csTUFBQUEsbUJBQW1CLEVBQW5CQSxtQkFIaUM7QUFJakN2UCxNQUFBQSxTQUFTLEVBQUVxRztBQUpzQixNQUFuQzs7QUFPQSxRQUFJb0osMkJBQTJCLEdBQUcsS0FBbEM7O0FBRUEsUUFBSXJOLHlCQUFKLEVBQStCO0FBQzdCcU4sTUFBQUEsMkJBQTJCLEdBQUdyTix5QkFBeUIsQ0FBQ3NKLE9BQTFCLEtBQXNDQSxPQUF0QyxJQUFpRHRKLHlCQUF5QixDQUFDMEosS0FBMUIsS0FBb0NBLEtBQW5IO0FBQ0Q7O0FBRUQsd0JBQ0Usb0JBQUMsYUFBRCxlQUNNbkksZUFETjtBQUVFLE1BQUEsWUFBWSxFQUFFMkQsWUFGaEI7QUFHRSxNQUFBLFlBQVksRUFBRWlDLEtBSGhCO0FBSUUsTUFBQSxpQkFBaUIsRUFBRSxDQUFDaEksYUFKdEI7QUFLRSxNQUFBLFNBQVMsRUFBRTZFLFNBTGI7QUFNRSxNQUFBLGtCQUFrQixFQUFFb0IsbUJBTnRCO0FBT0UsTUFBQSxRQUFRLEVBQUUvRSxRQVBaO0FBUUUsTUFBQSxjQUFjLEVBQUVsRCxjQVJsQjtBQVNFLE1BQUEsSUFBSSxFQUFFb0QsS0FUUjtBQVVFLE1BQUEsR0FBRyxFQUFFNEcsS0FWUDtBQVdFLE1BQUEsUUFBUSxFQUFFdEMsUUFYWjtBQVlFLE1BQUEsU0FBUyxFQUFFWixVQVpiO0FBYUUsTUFBQSxNQUFNLEVBQUV2RSxTQWJWLENBY0U7QUFkRjtBQWVFLE1BQUEsNEJBQTRCLEVBQUUwTiw2QkFmaEM7QUFnQkUsTUFBQSxvQkFBb0IsRUFBRTlPLG9CQWhCeEI7QUFpQkUsTUFBQSxNQUFNLEVBQUVGLE1BakJWO0FBa0JFLE1BQUEsU0FBUyxFQUFFRyxTQWxCYjtBQW1CRSxNQUFBLDJCQUEyQixFQUFFOE8sMkJBbkIvQjtBQW9CRSxNQUFBLGlCQUFpQixFQUFFO0FBQUEsZUFBTTdNLFFBQVEsQ0FBQztBQUFFUixVQUFBQSx5QkFBeUIsRUFBRTtBQUE3QixTQUFELENBQWQ7QUFBQSxPQXBCckI7QUFxQkUsTUFBQSwyQkFBMkIsRUFBRStNLDJCQXJCL0I7QUFzQkUsTUFBQSw0QkFBNEIsRUFBRSxDQUFDNUYsS0FBRCxJQUFVeEc7QUF0QjFDLE9BREY7QUEwQkQsR0FoRDhCLENBQS9COztBQWtEQSxNQUFNMk0sc0JBQXNCLEdBQUcsU0FBekJBLHNCQUF5QixHQUFNO0FBQ25DLFFBQUksQ0FBQXhOLFlBQVksU0FBWixJQUFBQSxZQUFZLFdBQVosWUFBQUEsWUFBWSxDQUFFK0YsTUFBZCxJQUF1QixDQUEzQixFQUE4QjtBQUM1QnJGLE1BQUFBLFFBQVEsQ0FBQztBQUFFVCxRQUFBQSxrQkFBa0IsRUFBRTtBQUF0QixPQUFELENBQVI7QUFDRCxLQUZELE1BRU8sSUFBSSxDQUFBRCxZQUFZLFNBQVosSUFBQUEsWUFBWSxXQUFaLFlBQUFBLFlBQVksQ0FBRStGLE1BQWQsTUFBeUIsQ0FBN0IsRUFBZ0M7QUFDckNyRixNQUFBQSxRQUFRLENBQUM7QUFBRVIsUUFBQUEseUJBQXlCLEVBQUVGLFlBQVksQ0FBQyxDQUFEO0FBQXpDLE9BQUQsQ0FBUjtBQUNEO0FBQ0YsR0FORDs7QUFRQSxNQUFNeU4sZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixRQUFlO0FBQUEsUUFBWmxKLEtBQVksU0FBWkEsS0FBWTs7QUFDckMsUUFBTW1KLFFBQVEsc0JBQU9uSixLQUFQLENBQWQ7O0FBRUEsUUFBSW9KLGdCQUFnQixHQUFHLEtBQXZCLENBSHFDLENBS3JDOztBQUNBLFFBQUl4TixxQkFBSixFQUEyQjtBQUN6QndOLE1BQUFBLGdCQUFnQixHQUFHNUcsTUFBTSxDQUFDNkcsTUFBUCxDQUFjek4scUJBQWQsRUFBcUMwTixLQUFyQyxDQUEyQyxVQUFBQyxXQUFXO0FBQUEsZUFBSUEsV0FBVyxLQUFLLElBQXBCO0FBQUEsT0FBdEQsQ0FBbkI7QUFDRDs7QUFDRCxRQUFJQyxTQUFTLEdBQUcsSUFBaEI7QUFDQSxRQUFJQyxlQUFlLEdBQUcsRUFBdEI7O0FBQ0EsUUFBSUwsZ0JBQUosRUFBc0I7QUFDcEJJLE1BQUFBLFNBQVMsZ0JBQUcsb0JBQUMsT0FBRDtBQUFTLFFBQUEsRUFBRSx1QkFBZ0I3UCxVQUFoQixDQUFYO0FBQXlDLFFBQUEsS0FBSyxFQUFDO0FBQS9DLFFBQVo7QUFDQThQLE1BQUFBLGVBQWUsR0FBRyxvQkFBbEI7QUFDRCxLQUhELE1BR087QUFDTEQsTUFBQUEsU0FBUyxnQkFBRyxvQkFBQyxZQUFEO0FBQWMsUUFBQSxFQUFFLG1DQUE0QjdQLFVBQTVCLENBQWhCO0FBQTBELFFBQUEsS0FBSyxFQUFDO0FBQWhFLFFBQVo7QUFDQThQLE1BQUFBLGVBQWUsR0FBRyxzQkFBbEI7QUFDRDs7QUFFRCxRQUFJeFAsb0JBQW9CLElBQUlOLFVBQVUsS0FBSyxpQkFBM0MsRUFBOEQ7QUFDNUR3UCxNQUFBQSxRQUFRLENBQUNPLElBQVQsZUFDRSxvQkFBQyxVQUFEO0FBQ0UsUUFBQSxFQUFFLDJCQUFvQi9QLFVBQXBCLENBREo7QUFFRSxRQUFBLEdBQUcsRUFBQyxpQkFGTjtBQUdFLFFBQUEsT0FBTyxFQUFFc1Asc0JBSFg7QUFJRSxRQUFBLEtBQUssRUFBRVEsZUFKVDtBQUtFLHNCQUFZQSxlQUxkO0FBTUUsUUFBQSxLQUFLLEVBQUU7QUFBRUUsVUFBQUEsTUFBTSxFQUFFO0FBQVY7QUFOVCxTQVFHSCxTQVJILENBREY7QUFZRDs7QUFFRCxXQUFPTCxRQUFQO0FBQ0QsR0FuQ0Q7O0FBcUNBLHNCQUVFLG9CQUFDLHlCQUFEO0FBQ0UsSUFBQSxVQUFVLEVBQUVqTyxVQURkO0FBRUUsSUFBQSxZQUFZLEVBQUUsc0JBQUF3TCxhQUFhLEVBQUksQ0FDN0I7QUFDRCxLQUpIO0FBS0UsSUFBQSxLQUFLLEVBQUU1TSxhQUFGLGFBQUVBLGFBQUYsdUJBQUVBLGFBQWEsQ0FBRW1OLEtBTHhCO0FBTUUsSUFBQSxVQUFVLEVBQUU3UCxhQUFhLENBQUMwQyxhQUFELGFBQUNBLGFBQUQsdUJBQUNBLGFBQWEsQ0FBRWtPLFVBQWhCLENBTjNCO0FBT0UsSUFBQSxlQUFlLEVBQUVuTTtBQVBuQixrQkFTRSxvQkFBQyxJQUFEO0FBQ0UsSUFBQSxFQUFFLDJCQUFvQnBELE9BQXBCLENBREo7QUFFRSxJQUFBLEtBQUssRUFBRXFJLGNBRlQ7QUFHRSxJQUFBLGFBQWEsRUFBRTlCLGNBQWMsR0FBRyxXQUhsQztBQUlFLElBQUEsS0FBSyxFQUFFZ0IsS0FKVDtBQUtFLElBQUEsT0FBTyxFQUFFdEgsT0FMWDtBQU1FLElBQUEsT0FBTyxFQUFFdUgsT0FOWDtBQU9FLElBQUEsT0FBTyxFQUFFQyxPQVBYO0FBUUUsSUFBQSxRQUFRLEVBQUVsRSxRQVJaO0FBU0UsSUFBQSxTQUFTLEVBQUVtRSxTQVRiO0FBVUUsSUFBQSxVQUFVLEVBQUVFLFVBVmQ7QUFXRSxJQUFBLFdBQVcsRUFBRXBFLFdBWGY7QUFZRSxJQUFBLFlBQVksRUFBRXFFLFlBWmhCO0FBYUUsSUFBQSxZQUFZLEVBQUVGLFlBYmhCO0FBY0UsSUFBQSxlQUFlLEVBQUVHLGVBZG5CO0FBZUUsSUFBQSxrQkFBa0IsRUFBRWpCLG9CQWZ0QjtBQWdCRSxJQUFBLGtCQUFrQixNQWhCcEI7QUFpQkUsSUFBQSxXQUFXLEVBQUVFLFdBakJmO0FBa0JFLElBQUEsVUFBVSxFQUFFbkcsVUFBVSxHQUFHO0FBQUEsYUFBTUEsVUFBVSxDQUFDSCxFQUFELENBQWhCO0FBQUEsS0FBSCxHQUEwQixJQWxCbEQ7QUFtQkUsSUFBQSxRQUFRLEVBQUV1SSxVQUFVLElBQUlDLGVBbkIxQjtBQW9CRSxJQUFBLEtBQUssRUFBRXJHLFNBQVMsSUFBSSxDQUFDVixrQkFwQnZCO0FBcUJFLElBQUEsVUFBVSxFQUFFO0FBQUEsYUFBTXdCLFFBQVEsQ0FBQztBQUFFbkIsUUFBQUEsV0FBVyxFQUFFO0FBQWYsT0FBRCxDQUFkO0FBQUEsS0FyQmQ7QUFzQkUsSUFBQSxlQUFlLEVBQUVrTztBQXRCbkIsa0JBd0JFO0FBQUssSUFBQSxFQUFFLEVBQUM7QUFBUixLQUNHTixzQkFESCxDQXhCRixDQVRGLGVBcUNFLG9CQUFDLGtCQUFEO0FBQ0UsSUFBQSxVQUFVLEVBQUVqUCxVQURkO0FBRUUsSUFBQSxJQUFJLEVBQUUrQixrQkFGUjtBQUdFLElBQUEsT0FBTyxFQUFFO0FBQUEsYUFBTVMsUUFBUSxDQUFDO0FBQUVULFFBQUFBLGtCQUFrQixFQUFFO0FBQXRCLE9BQUQsQ0FBZDtBQUFBLEtBSFg7QUFJRSxJQUFBLFlBQVksRUFBRUQsWUFKaEI7QUFLRSxJQUFBLHFCQUFxQixFQUFFRyxxQkFMekI7QUFNRSxJQUFBLGFBQWEsRUFBRSx1QkFBQ3lKLEtBQUQ7QUFBQSxhQUFXbEosUUFBUSxDQUFDO0FBQ2pDUixRQUFBQSx5QkFBeUIsRUFBRTBKLEtBRE07QUFFakMzSixRQUFBQSxrQkFBa0IsRUFBRTtBQUZhLE9BQUQsQ0FBbkI7QUFBQTtBQU5qQixJQXJDRixDQUZGO0FBb0REO0FBRURyRCxhQUFhLENBQUN1UixTQUFkLEdBQTBCO0FBQ3hCO0FBQ0ExUSxFQUFBQSxFQUFFLEVBQUVwRCxTQUFTLENBQUMrVCxNQUZVOztBQUd4QjtBQUNBMVEsRUFBQUEsSUFBSSxFQUFFckQsU0FBUyxDQUFDZ1UsSUFBVixDQUFlQyxVQUpHOztBQUt4QjtBQUNBNVAsRUFBQUEsS0FBSyxFQUFFckUsU0FBUyxDQUFDK1QsTUFBVixDQUFpQkUsVUFOQTs7QUFPeEI7QUFDQWxSLEVBQUFBLFdBQVcsRUFBRS9DLFNBQVMsQ0FBQ2dVLElBQVYsQ0FBZUMsVUFSSjs7QUFTeEI7QUFDQXRSLEVBQUFBLE9BQU8sRUFBRTNDLFNBQVMsQ0FBQ2tVLE1BQVYsQ0FBaUJELFVBVkY7O0FBV3hCO0FBQ0F2USxFQUFBQSxRQUFRLEVBQUUxRCxTQUFTLENBQUNtVSxLQUFWLENBQWdCO0FBQ3hCO0FBQ0F2USxJQUFBQSxVQUFVLEVBQUU1RCxTQUFTLENBQUMrVCxNQUFWLENBQWlCRSxVQUZMOztBQUd4QjtBQUNBdFEsSUFBQUEsS0FBSyxFQUFFM0QsU0FBUyxDQUFDK1QsTUFBVixDQUFpQkUsVUFKQTs7QUFLeEI7QUFDQXBRLElBQUFBLFVBQVUsRUFBRTdELFNBQVMsQ0FBQytULE1BQVYsQ0FBaUJFLFVBTkw7O0FBT3hCO0FBQ0FuUSxJQUFBQSxxQkFBcUIsRUFBRTlELFNBQVMsQ0FBQytULE1BQVYsQ0FBaUJFO0FBUmhCLEdBQWhCLENBWmM7QUFzQnhCeFEsRUFBQUEsU0FBUyxFQUFFekQsU0FBUyxDQUFDbVUsS0FBVixDQUFnQjtBQUN6QjtBQUNBM1AsSUFBQUEsU0FBUyxFQUFFeEUsU0FBUyxDQUFDK1QsTUFBVixDQUFpQkUsVUFGSDs7QUFHekI7QUFDQTlFLElBQUFBLE9BQU8sRUFBRW5QLFNBQVMsQ0FBQ29VLFNBQVYsQ0FBb0IsQ0FBQ3BVLFNBQVMsQ0FBQ2tVLE1BQVgsRUFBbUJsVSxTQUFTLENBQUMrVCxNQUE3QixDQUFwQixFQUEwREUsVUFKMUM7O0FBS3pCO0FBQ0ExRSxJQUFBQSxLQUFLLEVBQUV2UCxTQUFTLENBQUNvVSxTQUFWLENBQW9CLENBQUNwVSxTQUFTLENBQUNrVSxNQUFYLEVBQW1CbFUsU0FBUyxDQUFDK1QsTUFBN0IsQ0FBcEIsRUFBMERFO0FBTnhDLEdBQWhCLENBdEJhOztBQThCeEI7QUFDQWhRLEVBQUFBLE1BQU0sRUFBRWpFLFNBQVMsQ0FBQytULE1BQVYsQ0FBaUJFLFVBL0JEOztBQWdDeEI7QUFDQXpSLEVBQUFBLE1BQU0sRUFBRXhDLFNBQVMsQ0FBQytULE1BQVYsQ0FBaUJFLFVBakNEOztBQWtDeEI7QUFDQXBSLEVBQUFBLGtCQUFrQixFQUFFN0MsU0FBUyxDQUFDcVUsSUFuQ047O0FBb0N4QjtBQUNBelIsRUFBQUEsT0FBTyxFQUFFNUMsU0FBUyxDQUFDc1UsTUFyQ0s7O0FBc0N4QjtBQUNBdlEsRUFBQUEsWUFBWSxFQUFFL0QsU0FBUyxDQUFDdVUsR0F2Q0E7O0FBd0N4QjtBQUNBalEsRUFBQUEsbUJBQW1CLEVBQUV0RSxTQUFTLENBQUNnVSxJQUFWLENBQWVDLFVBekNaOztBQTBDeEI7QUFDRjtBQUNBO0FBQ0E7QUFDRXpRLEVBQUFBLGVBQWUsRUFBRXhELFNBQVMsQ0FBQ2dVLElBOUNIOztBQStDeEI7QUFDQTdRLEVBQUFBLFVBQVUsRUFBRW5ELFNBQVMsQ0FBQ3NVLE1BaERFOztBQWlEeEI7QUFDQXJSLEVBQUFBLFlBQVksRUFBRWpELFNBQVMsQ0FBQytULE1BbERBOztBQW1EeEI7QUFDQTdRLEVBQUFBLGFBQWEsRUFBRWxELFNBQVMsQ0FBQytULE1BcEREOztBQXFEeEI7QUFDQS9RLEVBQUFBLGNBQWMsRUFBRWhELFNBQVMsQ0FBQ2dVLElBdERGOztBQXVEeEI7QUFDQWxSLEVBQUFBLG9CQUFvQixFQUFFOUMsU0FBUyxDQUFDZ1UsSUF4RFI7O0FBeUR4QjtBQUNBNVAsRUFBQUEsU0FBUyxFQUFFcEUsU0FBUyxDQUFDZ1UsSUExREc7O0FBMkR4QjtBQUNBelEsRUFBQUEsVUFBVSxFQUFFdkQsU0FBUyxDQUFDZ1UsSUE1REU7O0FBNkR4QjtBQUNBMVEsRUFBQUEsWUFBWSxFQUFFdEQsU0FBUyxDQUFDK1QsTUE5REE7O0FBK0R4QjtBQUNBdFIsRUFBQUEsY0FBYyxFQUFFekMsU0FBUyxDQUFDc1UsTUFoRUY7O0FBaUV4QjtBQUNBcFEsRUFBQUEsZUFBZSxFQUFFbEUsU0FBUyxDQUFDZ1UsSUFsRUg7O0FBbUV4QjtBQUNBdFIsRUFBQUEsU0FBUyxFQUFFMUMsU0FBUyxDQUFDK1QsTUFwRUc7O0FBcUV4QjtBQUNBNVAsRUFBQUEsb0JBQW9CLEVBQUVuRSxTQUFTLENBQUNnVSxJQXRFUjs7QUF1RXhCO0FBQ0FoUSxFQUFBQSxhQUFhLEVBQUVoRSxTQUFTLENBQUNzVTtBQXhFRCxDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuXG4gIHVzZUNhcmRTdGF0ZSxcbiAgdXNlVXNlckJyYW5jaCxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsYXknXG5pbXBvcnQgeyBhcmVNYXBzVGhlU2FtZSB9IGZyb20gJy4uLy4uL3V0aWxzL21hcHMnXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJy4uL1NjcmlwdHVyZVBhbmUvc3R5bGVkJ1xuaW1wb3J0IHtcbiAgTlRfT1JJR19MQU5HLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBWZXJzZVNlbGVjdG9yUG9wdXAgfSBmcm9tICcuLi9WZXJzZVNlbGVjdG9yUG9wdXAnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGZldGNoR2xvc3Nlc0ZvclZlcnNlLFxuICBnZXRMYW5ndWFnZSxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGdyZWVrUmVwb1VybCxcbiAgaGVicmV3UmVwb1VybCxcbiAgaHR0cENvbmZpZyxcbiAgaWQsXG4gIGlzTlQsXG4gIGxvZ2dlZEluVXNlcixcbiAgb25NaW5pbWl6ZSxcbiAgb25SZXNvdXJjZUVycm9yLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgfSxcbiAgcmVzb3VyY2VMaW5rLFxuICBzZWxlY3RlZFF1b3RlLFxuICBzZXJ2ZXIsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHRyYW5zbGF0ZSxcbiAgdGl0bGUsXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG59KSB7XG4gIGNvbnN0IGJvb2tJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgb3JpZ2luYWxWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzaGE6IG51bGwsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgdmVyc2VPYmplY3RzTWFwOiBuZXcgTWFwKCksXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgY3VycmVudFJlZmVyZW5jZSxcbiAgICBlZGl0QnJhbmNoUmVhZHksXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIG9yaWdpbmFsVmVyc2VPYmplY3RzLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNlbGVjdGlvbnMsXG4gICAgc2hhLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgZnVuY3Rpb24gc2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZShuZXdSZXNvdXJjZSkge1xuICAgIGNvbnN0IG5ld0Jvb2tPYmplY3RzID0gbmV3UmVzb3VyY2U/LmJvb2tPYmplY3RzIHx8IHt9XG4gICAgY29uc3QgYm9va0lkID0gbmV3UmVzb3VyY2U/LnJlZmVyZW5jZT8ucHJvamVjdElkXG4gICAgY29uc3QgX25ld0Jvb2tPYmplY3RzID0ge1xuICAgICAgLi4ubmV3Qm9va09iamVjdHMsXG4gICAgICBib29rSWQsXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF9uZXdCb29rT2JqZWN0cywgb3JpZ2luYWxWZXJzZU9iamVjdHMpKSB7XG4gICAgICBzZXRTdGF0ZSh7IG9yaWdpbmFsVmVyc2VPYmplY3RzOiBfbmV3Qm9va09iamVjdHMgfSlcbiAgICB9XG4gIH1cblxuICBpZiAodXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgaHR0cENvbmZpZyA9IHtcbiAgICAgIC4uLmh0dHBDb25maWcsXG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIG5vQ2FjaGU6IHRydWUsXG4gICAgfSAvLyBkaXNhYmxlIGh0dHAgY2FjaGluZ1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgaXNOVCxcbiAgICB0aXRsZSxcbiAgICBvd25lcixcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgYXBwUmVmOiByZWYsXG4gICAgc2VydmVyLFxuICAgIGNhcmROdW0sXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgc2V0VXJsRXJyb3I6IChlcnJvcikgPT4gc2V0U3RhdGUoeyB1cmxFcnJvcjogZXJyb3IgfSksXG4gICAgaHR0cENvbmZpZyxcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlc3BfID0gc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBnZXQgdGhlIF9zaGEgZnJvbSBsYXN0IHNjcmlwdHVyZSBkb3dubG9hZFxuICAgIGNvbnN0IF9zaGEgPSBmZXRjaFJlc3BfPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgIGNvbnN0IHVybCA9IGZldGNoUmVzcF8/LmRhdGE/LmRvd25sb2FkX3VybCB8fCBudWxsXG5cbiAgICBpZiAoX3NoYSAhPT0gc2hhKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZDogZm9yICR7dXJsfSAke0pTT04uc3RyaW5naWZ5KHJlZmVyZW5jZV8pfSBuZXcgc2hhIGlzICR7X3NoYX1gKVxuICAgICAgc2V0U3RhdGUoeyBzaGE6IF9zaGEgfSlcbiAgICB9XG4gIH0sIFtmZXRjaFJlc3BfXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczogeyBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgYXBwUmVmLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBsYW5ndWFnZUlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3duZXIsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHNlcnZlcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIGlmICghY2FuVXNlRWRpdEJyYW5jaCAmJiAhcmVhZHlGb3JGZXRjaCkgeyAvLyBpZiBiaWJsZSBub3QgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCBtYWtlIHN1cmUgaXQncyByZWFkeVxuICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBib29rIGNoYW5nZWRgLCB7IGJvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQgfSlcblxuICAgIGlmIChjYW5Vc2VFZGl0QnJhbmNoKSB7IC8vIGlmIGJpYmxlIGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgcmVmcmVzaCBpdFxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiBmYWxzZSwgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxIH0pXG4gICAgfVxuICB9LCBbYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXF1YWwocmVmZXJlbmNlLCBjdXJyZW50UmVmZXJlbmNlKSkge1xuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgcmVmZXJlbmNlIGNoYW5nZWRgLCByZWZlcmVuY2UpXG4gICAgICBzZXRTdGF0ZSh7IGN1cnJlbnRSZWZlcmVuY2U6IHJlZmVyZW5jZSB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYnJhbmNoRGV0ZXJtaW5lZCBpcyAke2JyYW5jaERldGVybWluZWR9IGFuZCB3b3JraW5nUmVmIGlzICR7d29ya2luZ1JlZn0gYW5kIHJlYWR5Rm9yRmV0Y2ggaXMgJHtyZWFkeUZvckZldGNofWApXG5cbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2ggJiYgYnJhbmNoRGV0ZXJtaW5lZCApIHtcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSwgcmVmOiB3b3JraW5nUmVmIH0pXG4gICAgfVxuICB9LCBbYnJhbmNoRGV0ZXJtaW5lZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgaWYgKF91c2luZ1VzZXJCcmFuY2ggIT09IHVzaW5nVXNlckJyYW5jaCkge1xuICAgICAgc2V0U3RhdGUoeyB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2ggfSlcbiAgICB9XG4gIH0sIFtfdXNpbmdVc2VyQnJhbmNoLCB1c2luZ1VzZXJCcmFuY2hdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXVxuXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xuICAgICAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzXG4gICAgICBjb25zdCByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlQ29uZmlnKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlRfKVxuICAgICAgY29uc3QgaXNBY2Nlc3NFcnJvciA9IHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG1lc3NhZ2UsIGlzQWNjZXNzRXJyb3IsIHJlc291cmNlU3RhdHVzKVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1dKVxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGAke3NjcmlwdHVyZUNvbmZpZy50aXRsZX0gdiR7c2NyaXB0dXJlQ29uZmlnLnZlcnNpb259YFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnVwZGF0ZVRpdGxlKHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssIHNjcmlwdHVyZVRpdGxlKVxuICB9IGVsc2Uge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYFRpdGxlIG1pc3NpbmcgZnJvbSBwcm9qZWN0IG1hbmlmZXN0YFxuICB9XG5cbiAgLyoqIER5bmFtaWNhbGx5IGNyZWF0ZXMgdGhlIHNjcmlwdHVyZSBzZWxlY3Rpb24gZHJvcGRvd24gdG8gYmUgaW5zZXJ0ZWQgaW50byBjYXJkIHNldHRpbmdzICovXG4gIGZ1bmN0aW9uIGdldFNjcmlwdHVyZVNlbGVjdG9yKCkge1xuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XG4gICAgICBsYWJlbCxcbiAgICAgIHJlc291cmNlTGluazogc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluayxcbiAgICAgIHNldFNjcmlwdHVyZSxcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gPFNjcmlwdHVyZVNlbGVjdG9yIHsuLi5zY3JpcHR1cmVTZWxlY3Rpb25Db25maWd9IHN0eWxlPXtzdHlsZX0gZXJyb3JNZXNzYWdlPXt1cmxFcnJvcn0gLz5cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IF9yZWZlcmVuY2UgPSB7IC4uLnNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UgfVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHByZS1jYWNoZSBnbG9zc2VzIG9uIHZlcnNlIGNoYW5nZVxuICAgIGNvbnN0IGZldGNoR2xvc3NEYXRhRm9yVmVyc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgLy8gZ2V0IHZlcnNlIG9iamVjdHMgb2YgYWxsIHRoZSB2ZXJzZXNcbiAgICAgIGZvciAoY29uc3QgdmVyc2VSZWYgb2Ygc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYgfHwgW10pIHtcbiAgICAgICAgY29uc3QgX3ZlcnNlT2JqZWN0cyA9IHZlcnNlUmVmPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0c1xuICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KF92ZXJzZU9iamVjdHMpXG4gICAgICB9XG5cbiAgICAgIGlmICghZGlzYWJsZVdvcmRQb3BvdmVyICYmIHZlcnNlT2JqZWN0cz8ubGVuZ3RoICYmIGZldGNoR2xvc3Nlc0ZvclZlcnNlKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgIGF3YWl0IGZldGNoR2xvc3Nlc0ZvclZlcnNlKHZlcnNlT2JqZWN0cywgbGFuZ3VhZ2VJZF8pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVzaW5nT3JpZ2luYWxCaWJsZSkge1xuICAgICAgZmV0Y2hHbG9zc0RhdGFGb3JWZXJzZSgpXG4gICAgfVxuICB9LCBbIHZlcnNlc0ZvclJlZiwgbGFuZ3VhZ2VJZF8gXSlcblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJbmRleCxcbiAgICBjdXJyZW50VmVyc2VSZWY6IF9yZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LnByb2plY3RJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UucHJvamVjdElkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3Qge1xuICAgIGVycm9yOiBzYXZlRXJyb3IsXG4gICAgaXNFcnJvcjogaXNTYXZlRXJyb3IsXG4gICAgb25TYXZlRWRpdCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aW1lb3V0OiBodHRwQ29uZmlnPy5zZXJ2ZXJUaW1lT3V0IHx8IGh0dHBDb25maWc/LnRpbWVvdXQgfHwgNTAwMCxcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHdlIGdldCBhIHNhdmUgc2F2ZUVycm9yXG4gICAgaWYgKHNhdmVFcnJvciAmJiBpc1NhdmVFcnJvcikge1xuICAgICAgY29uc29sZS5sb2coYHNhdmUgZXJyb3JgLCBzYXZlRXJyb3IpXG4gICAgICAvLyBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3Igc2F2aW5nICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH0gJHtzYXZlRXJyb3J9YCwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtzYXZlRXJyb3IsIGlzU2F2ZUVycm9yXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXG4gICAgY29uc3QgX3NhdmVFZGl0ID0gYXN5bmMgKCkgPT4geyAvLyBiZWdpbiB1cGxvYWRpbmcgbmV3IFVTRk1cbiAgICAgIGNvbnNvbGUuaW5mbyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBVc2luZyBzaGE6ICR7c2hhfWApXG4gICAgICBhd2FpdCBvblNhdmVFZGl0KHVzZXJFZGl0QnJhbmNoTmFtZSkudGhlbigoc3VjY2VzcykgPT4geyAvLyBwdXNoIGNoYW5nZWQgdG8gc2VydmVyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjbGVhckNoYW5nZXMgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkSW5kZXhdXG4gICAgICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUuaW5mbygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBSZWxvYWRpbmcgcmVzb3VyY2UnKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgcmVmOiB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnKVxuICAgICAgICAgIHNldFN0YXRlKHsgc3RhcnRTYXZlOiBmYWxzZSB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChzdGFydFNhdmUpIHtcbiAgICAgIGlmICghZWRpdEJyYW5jaFJlYWR5KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBub3QgeWV0IGNyZWF0ZWRgKVxuICAgICAgfSBlbHNlIGlmICghc2hhKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzYXZlIHNoYSBub3QgeWV0IHJlYWR5YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjYWxsaW5nIF9zYXZlRWRpdCgpYClcbiAgICAgICAgX3NhdmVFZGl0KClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzdGFydFNhdmUsIGVkaXRCcmFuY2hSZWFkeSwgc2hhXSlcblxuICAvKipcbiAgICogY29udmVydCB1cGRhdGVkVmVyc2VPYmplY3RzIHRvIFVTRk0gYW5kIG1lcmdlIGludG8gdGhlIGJpYmxlVXNmbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtIC0gVVNGTSBvZiBiaWJsZVxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVmIC0gcmVmZXJlbmNlIG9mIHZlcnNlIHRvIG1lcmdlIGluXG4gICAqIEBwYXJhbSB7b2JqZWN0W119IHVwZGF0ZWRWZXJzZU9iamVjdHMgLSBuZXcgdmVyc2UgaW4gdmVyc2VPYmplY3QgZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjYXJkTnVtXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW06IG51bWJlcikge1xuICAgIGxldCBuZXdVc2ZtXG4gICAgY29uc3QgY2hhcHRlckNodW5rcyA9IGJpYmxlVXNmbT8uc3BsaXQoJ1xcXFxjICcpXG4gICAgY29uc3QgY2hhcHRlckluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy5jaGFwdGVyLCBjaGFwdGVyQ2h1bmtzKVxuXG4gICAgaWYgKGNoYXB0ZXJJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2hhcHRlciA9IGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XVxuICAgICAgY29uc3QgdmVyc2VDaHVua3MgPSBjdXJyZW50Q2hhcHRlci5zcGxpdCgnXFxcXHYgJylcbiAgICAgIGNvbnN0IHZlcnNlSW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LnZlcnNlLCB2ZXJzZUNodW5rcylcblxuICAgICAgaWYgKHZlcnNlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdWZXJzZVVzZm0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0odXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIG5ldyBVU0ZNIGZvciBjYXJkOn0gLSAke25ld1ZlcnNlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX1gKVxuICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdXG4gICAgICAgIGNvbnN0IHZlcnNlTnVtTGVuID0gKHJlZj8udmVyc2UgKyAnJykubGVuZ3RoXG4gICAgICAgIHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHZlcnNlTnVtTGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgY29uc3QgbmV3Q2hhcHRlciA9IHZlcnNlQ2h1bmtzLmpvaW4oJ1xcXFx2ICcpXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcbiAgICAgICAgbmV3VXNmbSA9IGNoYXB0ZXJDaHVua3Muam9pbignXFxcXGMgJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1VzZm1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGZvciBlYWNoIHVuc2F2ZWQgY2hhbmdlLCBjYWxsIGludG8gdmVyc2VQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgbGV0IGNyZWF0ZUVkaXRCcmFuY2ggPSAhX3VzaW5nVXNlckJyYW5jaFxuXG4gICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzdGF0ZSBjb25mbGljdCAtIHNob3VsZCBiZSBpbiB1c2VyIGJyYW5jaCAke3VzZXJFZGl0QnJhbmNoTmFtZX0sIGJ1dCBhY3R1YWxseSB1c2luZyAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGFscmVhZHkgdXNpbmcgZWRpdCBicmFuY2g6ICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgdXNpbmcgdGhlIHVzZXIgYnJhbmNoLCBjcmVhdGUgaXRcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLCByZWFkeUZvckZldGNoOiBmYWxzZSwgc2hhOiBudWxsIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXG4gICAgICAgIHN0YXJ0RWRpdEJyYW5jaCgpLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIGNyZWF0ZWRgKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUsIHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGxldCBiaWJsZVVzZm0gPSBjb3JlLmdldFJlc3BvbnNlRGF0YShzY3JpcHR1cmVDb25maWc/LmZldGNoUmVzcG9uc2UpXG4gICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm0pIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgIGJpYmxlVXNmbSA9IG5ld1VzZm1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHsgdmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNfIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYmlibGVVc2ZtID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDb250ZW50OiBiaWJsZVVzZm0sIHN0YXJ0U2F2ZTogdHJ1ZSwgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX3JlZmVyZW5jZSB8fCB7fVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcbiAgICBsZXQgdXBkYXRlU2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsVmVyc2VPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXSAmJiAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICAgc2VsZWN0ZWRRdW90ZT8ucXVvdGVcbiAgICApIHtcbiAgICAgIC8vIGlmIHF1b3RlIGlzIGRpZmZlcmVudCB0aGFuIGxhc3RcbiAgICAgIGlmICghaXNFcXVhbChsYXN0U2VsZWN0ZWRRdW90ZSwgc2VsZWN0ZWRRdW90ZSkgfHxcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGUgPSB7fSAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZlcnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICAgIHZlcnNlLFxuICAgICAgICAgIH0gPSB2ZXJzZVJlZlxuICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIHJlbWFwIHZlcnNlcyBpbiByZWZlcmVuY2UgcmFuZ2UgdG8gYSBsaW5lYXIgc2VyaWVzIG9mIHZlcnNlcyBzbyB2ZXJzZSBzcGFucyBkb24ndCBjaG9rZSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWZcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcbiAgICAgICAgICBsYXN0VmVyc2UgPSBfdmVyc2VcbiAgICAgICAgICBzdWJzdGl0dXRlW2Ake2NoYXB0ZXJ9OiR7X3ZlcnNlfWBdID0gYCR7Y2hhcHRlcn06JHt2ZXJzZX1gXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW192ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgbmV3IHJlZmVyZW5jZSByYW5nZSBmb3IgbmV3IGxpbmVhciB2ZXJzZSByYW5nZVxuICAgICAgICBjb25zdCBbY2hhcHRlcl0gPSBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2U/LnNwbGl0KCc6JylcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXG5cbiAgICAgICAgaWYgKGxhc3RWZXJzZSAhPSBzdGFydFZlcnNlKSB7XG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHN1YlJlZixcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfa2V5ID0gc3Vic3RpdHV0ZVtrZXldXG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMuc2V0KF9rZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoT2JqZWN0LmtleXModmVyc2VzRm9yUmVmIHx8IHt9KSwgT2JqZWN0LmtleXMoX3ZlcnNlc0ZvclJlZiB8fCB7fSkpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW293bmVyLCByZXNvdXJjZUlkLCBib29rSWQsIGxhbmd1YWdlSWRfLCBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZiwgb3JpZ2luYWxWZXJzZU9iamVjdHMsIHNlbGVjdGVkUXVvdGVdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U3RhdGUoeyB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwgfSlcbiAgfSwgW3ZlcnNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlLCBhbGlnbmVkKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7Li4ucHJldlN0YXRlLnZlcnNlc0FsaWdubWVudFN0YXR1cywgW2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXTogYWxpZ25lZH0sXG4gICAgfSkpXG4gIH1cblxuICBsZXQgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG5cbiAgaWYgKCFfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHsgLy8gaWYgZW1wdHkgb2YgcmVmZXJlbmNlcywgY3JlYXRlIHNpbmdsZSBlbXB0eSByZWZlcmVuY2VcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBfdmVyc2VzRm9yUmVmIGNoYW5nZWRgLCBzY3JpcHR1cmVDb25maWcpXG4gIH0sIFtfdmVyc2VzRm9yUmVmXSlcblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gX3ZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IFtdXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLl92ZXJzZXNGb3JSZWYsXG4gICAgICBjaGFwdGVyLFxuICAgICAgdmVyc2UsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgIH1cblxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxuXG4gICAgaWYgKHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQpIHtcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PT0gY2hhcHRlciAmJiB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LnZlcnNlID09PSB2ZXJzZVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGV0ZXJtaW5pbmdCcmFuY2g9eyFyZWFkeUZvckZldGNofVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudD17aXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50fVxuICAgICAgICBvbkFsaWdubWVudEZpbmlzaD17KCkgPT4gc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsIH0pfVxuICAgICAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3VwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgICAgc2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZT17IWluZGV4ICYmIHNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2V9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiB0cnVlIH0pXG4gICAgfSBlbHNlIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZXNGb3JSZWZbMF0gfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvblJlbmRlclRvb2xiYXIgPSAoeyBpdGVtcyB9KSA9PiB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4uaXRlbXNdXG5cbiAgICBsZXQgYWxsVmVyc2VzQWxpZ25lZCA9IGZhbHNlXG5cbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxuICAgIGlmICh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpIHtcbiAgICAgIGFsbFZlcnNlc0FsaWduZWQgPSBPYmplY3QudmFsdWVzKHZlcnNlc0FsaWdubWVudFN0YXR1cykuZXZlcnkoYWxpZ25TdGF0dXMgPT4gYWxpZ25TdGF0dXMgPT09IHRydWUpXG4gICAgfVxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgVmFsaWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmtCcmVhazIgaWQ9e2BpbnZhbGlkX2FsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nIzAwMCcvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3SXRlbXNcbiAgfVxuXG4gIHJldHVybiAoXG5cbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlXG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBwcm9qZWN0SWQgKGJvb2tJRCkgdG8gdXNlICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gcHJlLWxvYWQgbGV4aWNvbiBkYXRhIGZvciB2ZXJzZSAqL1xuICBmZXRjaEdsb3NzZXNGb3JWZXJzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cbiAgYXV0aGVudGljYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBmdW5jdGlvbiB0byBzZXQgc3RhdGUgaW4gYXBwIHRoYXQgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbn1cbiJdfQ==
1345
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJ1c2VDYXJkU3RhdGUiLCJ1c2VVc2VyQnJhbmNoIiwiRVJST1JfU1RBVEUiLCJNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsIlNjcmlwdHVyZUNhcmQiLCJhcHBSZWYiLCJhdXRoZW50aWNhdGlvbiIsImJvb2tJbmRleCIsImNhcmROdW0iLCJjbGFzc2VzIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwiZmV0Y2hHbG9zc2VzRm9yVmVyc2UiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJvbk1pbmltaXplIiwib25SZXNvdXJjZUVycm9yIiwicmVmZXJlbmNlIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwiYm9va0lkIiwicHJvamVjdElkIiwidXNlU3RhdGUiLCJjaGVja0ZvckVkaXRCcmFuY2giLCJjdXJyZW50UmVmZXJlbmNlIiwiZWRpdEJyYW5jaFJlYWR5IiwiaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwibGFzdFNlbGVjdGVkUXVvdGUiLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzRm9yUmVmIiwic2hvd0FsaWdubWVudFBvcHVwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlT2JqZWN0c01hcCIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsInNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UiLCJuZXdSZXNvdXJjZSIsIm5ld0Jvb2tPYmplY3RzIiwiYm9va09iamVjdHMiLCJfbmV3Qm9va09iamVjdHMiLCJjYWNoZSIsIm1heEFnZSIsIm5vQ2FjaGUiLCJzZXRVcmxFcnJvciIsImVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzY3JpcHR1cmVDb25maWciLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiZmV0Y2hSZXNwXyIsImZldGNoUmVzcG9uc2UiLCJyZXBvIiwicmVmZXJlbmNlXyIsInVzZUVmZmVjdCIsIl9zaGEiLCJkYXRhIiwidXJsIiwiZG93bmxvYWRfdXJsIiwidmFsaWRCcmFuY2giLCJwYXJ0cyIsInNwbGl0IiwiZmV0Y2hCcmFuY2giLCJsZW5ndGgiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJpbmNsdWRlcyIsImNhcmRJZCIsImJyYW5jaERldGVybWluZWQiLCJ1c2VyRWRpdEJyYW5jaE5hbWUiLCJfdXNpbmdVc2VyQnJhbmNoIiwid29ya2luZ1Jlc291cmNlQnJhbmNoIiwic3RhcnRFZGl0QnJhbmNoIiwiYWN0aW9ucyIsInN0YXJ0RWRpdCIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsIm9uTWVudUNsb3NlIiwibGFuZ3VhZ2VJZF8iLCJsYW5ndWFnZSIsImRpcmVjdGlvbiIsIl9yZWZlcmVuY2UiLCJpc0hlYnJldyIsImZvbnRGYWN0b3IiLCJzY2FsZWRGb250U2l6ZSIsIml0ZW1zIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsInVuZGVmaW5lZCIsImZldGNoR2xvc3NEYXRhRm9yVmVyc2UiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZVJlZiIsIl92ZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJjb25jYXQiLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJnZXRDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCIsImhhc093blByb3BlcnR5IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsIk9iamVjdCIsImtleXMiLCJmaW5kUmVmSW5BcnJheSIsImZpbmRJdGVtIiwiY2h1bmtzIiwicmVmTGVuIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJjaHVuayIsImlkeCIsInN1YnN0cmluZyIsIm5leHRDaGFyIiwiZ2V0Qm9va05hbWUiLCJib29rQ2FwcyIsInRvVXBwZXJDYXNlIiwiZmlsZXBhdGgiLCJjb250ZW50IiwiY29uZmlnIiwidG9rZW4iLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImJyYW5jaCIsInNhdmVFcnJvciIsImlzU2F2ZUVycm9yIiwiaXNFcnJvciIsIm9uU2F2ZUVkaXQiLCJfc2F2ZUVkaXQiLCJpbmZvIiwidGhlbiIsInN1Y2Nlc3MiLCJ1bnNhdmVkQ2FyZEluZGljZXMiLCJjYXJkSW5kZXgiLCJyZWxvYWRSZXNvdXJjZSIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsImJpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsImNoYXB0ZXJJbmRleCIsImNoYXB0ZXIiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsInZlcnNlIiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwidmVyc2VOdW1MZW4iLCJuZXdDaGFwdGVyIiwiam9pbiIsImNyZWF0ZUVkaXRCcmFuY2giLCJ3YXJuIiwiZ2V0UmVzcG9uc2VEYXRhIiwibWVyZ2VGYWlsIiwicGFyc2VJbnQiLCJuZXdCb29rSnNvbiIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIm9yaWdpbmFsVmVyc2VzIiwic3Vic3RpdHV0ZSIsInN0YXJ0VmVyc2UiLCJsYXN0VmVyc2UiLCJpIiwibCIsIl92ZXJzZSIsInZlcnNlcyIsInZlcnNlSXRlbSIsInZvIiwic2V0Iiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwiZm9yRWFjaCIsIndvcmRzIiwia2V5IiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJ2YWx1ZXMiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwicHVzaCIsImN1cnNvciIsInByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJib29sIiwib2JqZWN0IiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU8sS0FBS0MsU0FBWixNQUEyQixZQUEzQjtBQUNBLFNBQVNDLElBQVQsRUFBZUMseUJBQWYsUUFBZ0QseUJBQWhEO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixTQUFuQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IscUJBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixlQUEzQjtBQUNBLFNBQVNDLE9BQVQsRUFBa0JDLFlBQWxCLFFBQXNDLGdCQUF0QztBQUNBLFNBQ0VDLElBREYsRUFHRUMsWUFIRixFQUlFQyxhQUpGLEVBS0VDLFdBTEYsRUFNRUMseUJBTkYsUUFPTyx1QkFQUDtBQVFBLFNBQVNDLHdCQUFULFFBQXlDLGtCQUF6QztBQUNBLFNBQVNDLGdCQUFULEVBQTJCQyx5QkFBM0IsUUFBNEQsa0JBQTVEO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQix1QkFBMUI7QUFDQSxTQUFTQyxhQUFULEVBQXdCQyxpQkFBeEIsUUFBaUQsSUFBakQ7QUFDQSxTQUFTQyxvQkFBVCxRQUFxQyxrQ0FBckM7QUFDQSxTQUNFQyxtQkFERixFQUVFQyxhQUZGLEVBR0VDLGVBSEYsRUFJRUMsa0JBSkYsRUFLRUMsMkJBTEYsRUFNRUMsZUFORixRQU9PLCtCQVBQ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LEVBQUFBLGNBQWMsRUFBRXpDLFNBQVMsQ0FBQ3lVLE1BaEVGOztBQWlFeEI7QUFDQXZRLEVBQUFBLGVBQWUsRUFBRWxFLFNBQVMsQ0FBQ21VLElBbEVIOztBQW1FeEI7QUFDQXpSLEVBQUFBLFNBQVMsRUFBRTFDLFNBQVMsQ0FBQ2tVLE1BcEVHOztBQXFFeEI7QUFDQS9QLEVBQUFBLG9CQUFvQixFQUFFbkUsU0FBUyxDQUFDbVUsSUF0RVI7O0FBdUV4QjtBQUNBblEsRUFBQUEsYUFBYSxFQUFFaEUsU0FBUyxDQUFDeVU7QUF4RUQsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHtcbiAgQ2FyZCxcblxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZVVzZXJCcmFuY2gsXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgeyBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYgfSBmcm9tICd1dy1xdW90ZS1oZWxwZXJzJ1xuaW1wb3J0IHsgQWxpZ25tZW50SGVscGVycywgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyB9IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgeyBTY3JpcHR1cmVQYW5lLCBTY3JpcHR1cmVTZWxlY3RvciB9IGZyb20gJy4uJ1xuaW1wb3J0IHsgdXNlU2NyaXB0dXJlU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9ob29rcy91c2VTY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIGNsZWFudXBWZXJzZU9iamVjdHMsXG4gIGZpeE9jY3VycmVuY2UsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5J1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2NyaXB0dXJlQ2FyZCh7XG4gIGFwcFJlZixcbiAgYXV0aGVudGljYXRpb24sXG4gIGJvb2tJbmRleCxcbiAgY2FyZE51bSxcbiAgY2xhc3NlcyxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBmZXRjaEdsb3NzZXNGb3JWZXJzZSxcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgcmVmZXJlbmNlLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICB0cmFuc2xhdGUsXG4gIHRpdGxlLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxufSkge1xuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoOiAwLFxuICAgIGN1cnJlbnRSZWZlcmVuY2U6IG51bGwsXG4gICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIG9yaWdpbmFsVmVyc2VPYmplY3RzOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2hhOiBudWxsLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZSxcbiAgICBvcmlnaW5hbFZlcnNlT2JqZWN0cyxcbiAgICByZWFkeUZvckZldGNoLFxuICAgIHJlZixcbiAgICBzYXZlQ2xpY2tlZCxcbiAgICBzYXZlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNoYSxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UobmV3UmVzb3VyY2UpIHtcbiAgICBjb25zdCBuZXdCb29rT2JqZWN0cyA9IG5ld1Jlc291cmNlPy5ib29rT2JqZWN0cyB8fCB7fVxuICAgIGNvbnN0IGJvb2tJZCA9IG5ld1Jlc291cmNlPy5yZWZlcmVuY2U/LnByb2plY3RJZFxuICAgIGNvbnN0IF9uZXdCb29rT2JqZWN0cyA9IHtcbiAgICAgIC4uLm5ld0Jvb2tPYmplY3RzLFxuICAgICAgYm9va0lkLFxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfbmV3Qm9va09iamVjdHMsIG9yaWdpbmFsVmVyc2VPYmplY3RzKSkge1xuICAgICAgc2V0U3RhdGUoeyBvcmlnaW5hbFZlcnNlT2JqZWN0czogX25ld0Jvb2tPYmplY3RzIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKHVzaW5nVXNlckJyYW5jaCkge1xuICAgIGh0dHBDb25maWcgPSB7XG4gICAgICAuLi5odHRwQ29uZmlnLFxuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICBub0NhY2hlOiB0cnVlLFxuICAgIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2V0U2NyaXB0dXJlLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICB9ID0gdXNlU2NyaXB0dXJlU2V0dGluZ3Moe1xuICAgIGlzTlQsXG4gICAgdGl0bGUsXG4gICAgb3duZXIsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlLFxuICAgIGFwcFJlZjogcmVmLFxuICAgIHNlcnZlcixcbiAgICBjYXJkTnVtLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICByZXNvdXJjZUxpbmssXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIGh0dHBDb25maWcsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgd2hvbGVCb29rOiB0cnVlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hSZXNwXyA9IHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZVxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHJlcG8gPSBgJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkfV8ke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZH1gXG4gIGNvbnN0IHJlZmVyZW5jZV8gPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSB8fCBudWxsXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZ2V0IHRoZSBfc2hhIGZyb20gbGFzdCBzY3JpcHR1cmUgZG93bmxvYWRcbiAgICBjb25zdCBfc2hhID0gZmV0Y2hSZXNwXz8uZGF0YT8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaFJlc3BfPy5kYXRhPy5kb3dubG9hZF91cmwgfHwgbnVsbFxuICAgIGxldCB2YWxpZEJyYW5jaCA9IHRydWVcblxuICAgIGlmIChfc2hhKSB7IC8vIFRSSUNLWTogc2luY2UgdGhpcyBmZXRjaCBtYXkgYmUgZGVsYXllZCAtIG1ha2Ugc3VyZSBpdCB3YXMgZm9yIHRoZSBjdXJyZW50IGJyYW5jaCBiZWZvcmUgdXNpbmcgdGhlIHNoYVxuICAgICAgY29uc3QgcGFydHMgPSAodXJsIHx8ICcnKS5zcGxpdCgnLycpXG4gICAgICBjb25zdCBmZXRjaEJyYW5jaCA9IHBhcnRzLmxlbmd0aCA+IDcgPyBwYXJ0c1s3XSA6ICcnXG4gICAgICB2YWxpZEJyYW5jaCA9IGZldGNoQnJhbmNoID09PSByZWZcbiAgICB9XG5cbiAgICBpZiAodmFsaWRCcmFuY2ggJiYgX3NoYSAhPT0gc2hhKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZDogZm9yICR7dXJsfSAke0pTT04uc3RyaW5naWZ5KHJlZmVyZW5jZV8pfSBuZXcgc2hhIGlzICR7X3NoYX1gKVxuICAgICAgc2V0U3RhdGUoeyBzaGE6IF9zaGEgfSlcbiAgICB9XG4gIH0sIFtmZXRjaFJlc3BfXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczogeyBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgYXBwUmVmLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBsYW5ndWFnZUlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3duZXIsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHNlcnZlcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIGlmICghY2FuVXNlRWRpdEJyYW5jaCAmJiAhcmVhZHlGb3JGZXRjaCkgeyAvLyBpZiBiaWJsZSBub3QgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCBtYWtlIHN1cmUgaXQncyByZWFkeVxuICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBib29rIGNoYW5nZWRgLCB7IGJvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQgfSlcblxuICAgIGlmIChjYW5Vc2VFZGl0QnJhbmNoKSB7IC8vIGlmIGJpYmxlIGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgcmVmcmVzaCBpdFxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiBmYWxzZSwgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxIH0pXG4gICAgfVxuICB9LCBbYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXF1YWwocmVmZXJlbmNlLCBjdXJyZW50UmVmZXJlbmNlKSkge1xuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgcmVmZXJlbmNlIGNoYW5nZWRgLCByZWZlcmVuY2UpXG4gICAgICBzZXRTdGF0ZSh7IGN1cnJlbnRSZWZlcmVuY2U6IHJlZmVyZW5jZSB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYnJhbmNoRGV0ZXJtaW5lZCBpcyAke2JyYW5jaERldGVybWluZWR9IGFuZCB3b3JraW5nUmVmIGlzICR7d29ya2luZ1JlZn0gYW5kIHJlYWR5Rm9yRmV0Y2ggaXMgJHtyZWFkeUZvckZldGNofWApXG5cbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2ggJiYgYnJhbmNoRGV0ZXJtaW5lZCApIHtcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSwgcmVmOiB3b3JraW5nUmVmIH0pXG4gICAgfVxuICB9LCBbYnJhbmNoRGV0ZXJtaW5lZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgaWYgKF91c2luZ1VzZXJCcmFuY2ggIT09IHVzaW5nVXNlckJyYW5jaCkge1xuICAgICAgc2V0U3RhdGUoeyB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2ggfSlcbiAgICB9XG4gIH0sIFtfdXNpbmdVc2VyQnJhbmNoLCB1c2luZ1VzZXJCcmFuY2hdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXVxuXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xuICAgICAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzXG4gICAgICBjb25zdCByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlQ29uZmlnKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlRfKVxuICAgICAgY29uc3QgaXNBY2Nlc3NFcnJvciA9IHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG1lc3NhZ2UsIGlzQWNjZXNzRXJyb3IsIHJlc291cmNlU3RhdHVzKVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1dKVxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGAke3NjcmlwdHVyZUNvbmZpZy50aXRsZX0gdiR7c2NyaXB0dXJlQ29uZmlnLnZlcnNpb259YFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnVwZGF0ZVRpdGxlKHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssIHNjcmlwdHVyZVRpdGxlKVxuICB9IGVsc2Uge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYFRpdGxlIG1pc3NpbmcgZnJvbSBwcm9qZWN0IG1hbmlmZXN0YFxuICB9XG5cbiAgLyoqIER5bmFtaWNhbGx5IGNyZWF0ZXMgdGhlIHNjcmlwdHVyZSBzZWxlY3Rpb24gZHJvcGRvd24gdG8gYmUgaW5zZXJ0ZWQgaW50byBjYXJkIHNldHRpbmdzICovXG4gIGZ1bmN0aW9uIGdldFNjcmlwdHVyZVNlbGVjdG9yKCkge1xuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XG4gICAgICBsYWJlbCxcbiAgICAgIHJlc291cmNlTGluazogc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluayxcbiAgICAgIHNldFNjcmlwdHVyZSxcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gPFNjcmlwdHVyZVNlbGVjdG9yIHsuLi5zY3JpcHR1cmVTZWxlY3Rpb25Db25maWd9IHN0eWxlPXtzdHlsZX0gZXJyb3JNZXNzYWdlPXt1cmxFcnJvcn0gLz5cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IF9yZWZlcmVuY2UgPSB7IC4uLnNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UgfVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHByZS1jYWNoZSBnbG9zc2VzIG9uIHZlcnNlIGNoYW5nZVxuICAgIGNvbnN0IGZldGNoR2xvc3NEYXRhRm9yVmVyc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgLy8gZ2V0IHZlcnNlIG9iamVjdHMgb2YgYWxsIHRoZSB2ZXJzZXNcbiAgICAgIGZvciAoY29uc3QgdmVyc2VSZWYgb2Ygc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYgfHwgW10pIHtcbiAgICAgICAgY29uc3QgX3ZlcnNlT2JqZWN0cyA9IHZlcnNlUmVmPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0c1xuICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KF92ZXJzZU9iamVjdHMpXG4gICAgICB9XG5cbiAgICAgIGlmICghZGlzYWJsZVdvcmRQb3BvdmVyICYmIHZlcnNlT2JqZWN0cz8ubGVuZ3RoICYmIGZldGNoR2xvc3Nlc0ZvclZlcnNlKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgIGF3YWl0IGZldGNoR2xvc3Nlc0ZvclZlcnNlKHZlcnNlT2JqZWN0cywgbGFuZ3VhZ2VJZF8pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVzaW5nT3JpZ2luYWxCaWJsZSkge1xuICAgICAgZmV0Y2hHbG9zc0RhdGFGb3JWZXJzZSgpXG4gICAgfVxuICB9LCBbIHZlcnNlc0ZvclJlZiwgbGFuZ3VhZ2VJZF8gXSlcblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJbmRleCxcbiAgICBjdXJyZW50VmVyc2VSZWY6IF9yZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LnByb2plY3RJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UucHJvamVjdElkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3Qge1xuICAgIGVycm9yOiBzYXZlRXJyb3IsXG4gICAgaXNFcnJvcjogaXNTYXZlRXJyb3IsXG4gICAgb25TYXZlRWRpdCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aW1lb3V0OiBodHRwQ29uZmlnPy5zZXJ2ZXJUaW1lT3V0IHx8IGh0dHBDb25maWc/LnRpbWVvdXQgfHwgMTAwMDAsXG4gICAgICBzZXJ2ZXIsXG4gICAgfSxcbiAgICBhdXRob3I6IGxvZ2dlZEluVXNlcixcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiB3ZSBnZXQgYSBzYXZlIHNhdmVFcnJvclxuICAgIGlmIChzYXZlRXJyb3IgJiYgaXNTYXZlRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlIGVycm9yYCwgc2F2ZUVycm9yKVxuICAgICAgLy8gb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHNhdmluZyAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9ICR7c2F2ZUVycm9yfWAsIHRydWUpXG4gICAgfVxuICB9LCBbc2F2ZUVycm9yLCBpc1NhdmVFcnJvcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBjb25zb2xlLmluZm8oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gVXNpbmcgc2hhOiAke3NoYX1gKVxuICAgICAgYXdhaXQgb25TYXZlRWRpdCh1c2VyRWRpdEJyYW5jaE5hbWUpLnRoZW4oKHN1Y2Nlc3MpID0+IHsgLy8gcHVzaCBjaGFuZ2VkIHRvIHNlcnZlclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY2xlYXJDaGFuZ2VzIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJylcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RhcnRTYXZlLCBlZGl0QnJhbmNoUmVhZHksIHNoYV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGNvbnN0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG5cbiAgICAgIGlmICh2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSBuZXcgVVNGTSBmb3IgY2FyZDp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aFxuICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHNjcmlwdHVyZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICBsZXQgY3JlYXRlRWRpdEJyYW5jaCA9ICFfdXNpbmdVc2VyQnJhbmNoXG5cbiAgICAgIGlmICghY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBhbHJlYWR5IHVzaW5nIHRoZSB1c2VyIGJyYW5jaFxuICAgICAgICBpZiAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSB1c2VyRWRpdEJyYW5jaE5hbWUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHN0YXRlIGNvbmZsaWN0IC0gc2hvdWxkIGJlIGluIHVzZXIgYnJhbmNoICR7dXNlckVkaXRCcmFuY2hOYW1lfSwgYnV0IGFjdHVhbGx5IHVzaW5nICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgY3JlYXRlRWRpdEJyYW5jaCA9IHRydWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gYWxyZWFkeSB1c2luZyBlZGl0IGJyYW5jaDogJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICBzZXRTdGF0ZSh7IGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIG5vdCB1c2luZyB0aGUgdXNlciBicmFuY2gsIGNyZWF0ZSBpdFxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY3JlYXRpbmcgZWRpdCBicmFuY2hgKVxuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgICAgICBzaGE6IG51bGwsXG4gICAgICAgIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXG4gICAgICAgIHN0YXJ0RWRpdEJyYW5jaCgpLnRoZW4oKGJyYW5jaCkgPT4ge1xuICAgICAgICAgIGlmIChicmFuY2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBjcmVhdGVkYClcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiB0cnVlLFxuICAgICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgICByZWY6IGJyYW5jaCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBmYWlsZWQgdG8gY3JlYXRlIGVkaXQgYnJhbmNoYClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGxldCBiaWJsZVVzZm0gPSBjb3JlLmdldFJlc3BvbnNlRGF0YShzY3JpcHR1cmVDb25maWc/LmZldGNoUmVzcG9uc2UpXG4gICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm0pIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgIGJpYmxlVXNmbSA9IG5ld1VzZm1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHsgdmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNfIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYmlibGVVc2ZtID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDb250ZW50OiBiaWJsZVVzZm0sIHN0YXJ0U2F2ZTogdHJ1ZSwgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX3JlZmVyZW5jZSB8fCB7fVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcbiAgICBsZXQgdXBkYXRlU2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsVmVyc2VPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXSAmJiAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICAgc2VsZWN0ZWRRdW90ZT8ucXVvdGVcbiAgICApIHtcbiAgICAgIC8vIGlmIHF1b3RlIGlzIGRpZmZlcmVudCB0aGFuIGxhc3RcbiAgICAgIGlmICghaXNFcXVhbChsYXN0U2VsZWN0ZWRRdW90ZSwgc2VsZWN0ZWRRdW90ZSkgfHxcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGUgPSB7fSAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZlcnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICAgIHZlcnNlLFxuICAgICAgICAgIH0gPSB2ZXJzZVJlZlxuICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIHJlbWFwIHZlcnNlcyBpbiByZWZlcmVuY2UgcmFuZ2UgdG8gYSBsaW5lYXIgc2VyaWVzIG9mIHZlcnNlcyBzbyB2ZXJzZSBzcGFucyBkb24ndCBjaG9rZSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWZcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcbiAgICAgICAgICBsYXN0VmVyc2UgPSBfdmVyc2VcbiAgICAgICAgICBzdWJzdGl0dXRlW2Ake2NoYXB0ZXJ9OiR7X3ZlcnNlfWBdID0gYCR7Y2hhcHRlcn06JHt2ZXJzZX1gXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW192ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgbmV3IHJlZmVyZW5jZSByYW5nZSBmb3IgbmV3IGxpbmVhciB2ZXJzZSByYW5nZVxuICAgICAgICBjb25zdCBbY2hhcHRlcl0gPSBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2U/LnNwbGl0KCc6JylcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXG5cbiAgICAgICAgaWYgKGxhc3RWZXJzZSAhPSBzdGFydFZlcnNlKSB7XG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHN1YlJlZixcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfa2V5ID0gc3Vic3RpdHV0ZVtrZXldXG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMuc2V0KF9rZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoT2JqZWN0LmtleXModmVyc2VzRm9yUmVmIHx8IHt9KSwgT2JqZWN0LmtleXMoX3ZlcnNlc0ZvclJlZiB8fCB7fSkpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW293bmVyLCByZXNvdXJjZUlkLCBib29rSWQsIGxhbmd1YWdlSWRfLCBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZiwgb3JpZ2luYWxWZXJzZU9iamVjdHMsIHNlbGVjdGVkUXVvdGVdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U3RhdGUoeyB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwgfSlcbiAgfSwgW3ZlcnNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlLCBhbGlnbmVkKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7IC4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSA9IHNjcmlwdHVyZUNvbmZpZyB8fCB7fVxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQuX3ZlcnNlc0ZvclJlZiBjaGFuZ2VkYCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICAgIH1cbiAgfSwgW192ZXJzZXNGb3JSZWZdKVxuXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXG4gICAgX3ZlcnNlc0ZvclJlZiA9IFt7IC4uLnJlZmVyZW5jZSB9XVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IF92ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBbXVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5fdmVyc2VzRm9yUmVmLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICB9XG5cbiAgICBsZXQgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gZmFsc2VcblxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XG4gICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LmNoYXB0ZXIgPT09IGNoYXB0ZXIgJiYgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC52ZXJzZSA9PT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRldGVybWluaW5nQnJhbmNoPXshcmVhZHlGb3JGZXRjaH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ9e2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudH1cbiAgICAgICAgb25BbGlnbm1lbnRGaW5pc2g9eygpID0+IHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCB9KX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAgIHNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2U9eyFpbmRleCAmJiBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlQWxpZ25CdXR0b25DbGljayA9ICgpID0+IHtcbiAgICBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPiAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2VzRm9yUmVmWzBdIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb25SZW5kZXJUb29sYmFyID0gKHsgaXRlbXMgfSkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXVxuXG4gICAgbGV0IGFsbFZlcnNlc0FsaWduZWQgPSBmYWxzZVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHZhbHVlcyBpbiB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMgYXJlIHRydWVcbiAgICBpZiAodmVyc2VzQWxpZ25tZW50U3RhdHVzKSB7XG4gICAgICBhbGxWZXJzZXNBbGlnbmVkID0gT2JqZWN0LnZhbHVlcyh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpLmV2ZXJ5KGFsaWduU3RhdHVzID0+IGFsaWduU3RhdHVzID09PSB0cnVlKVxuICAgIH1cblxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgVmFsaWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmtCcmVhazIgaWQ9e2BpbnZhbGlkX2FsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nIzAwMCcvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3SXRlbXNcbiAgfVxuXG4gIHJldHVybiAoXG5cbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlXG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBwcm9qZWN0SWQgKGJvb2tJRCkgdG8gdXNlICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gcHJlLWxvYWQgbGV4aWNvbiBkYXRhIGZvciB2ZXJzZSAqL1xuICBmZXRjaEdsb3NzZXNGb3JWZXJzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cbiAgYXV0aGVudGljYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBmdW5jdGlvbiB0byBzZXQgc3RhdGUgaW4gYXBwIHRoYXQgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbn1cbiJdfQ==
@@ -34,6 +34,29 @@ import * as isEqual from 'deep-equal';
34
34
  import { cleanupVerseObjects, getResourceLink } from '../utils/ScriptureSettings';
35
35
  import { ServerConfig, ScriptureResource, ScriptureReference } from '../types';
36
36
  import { parseResourceManifest } from './parseResourceManifest';
37
+
38
+ /**
39
+ * extract branch from resource link
40
+ * @param resourceLink
41
+ */
42
+ function getBranchName(resourceLink) {
43
+ var branch = null;
44
+ resourceLink = resourceLink || '';
45
+ var parts = resourceLink.split('?ref=');
46
+
47
+ if (parts.length > 1) {
48
+ // if ref parameter found
49
+ branch = parts === null || parts === void 0 ? void 0 : parts[1];
50
+ } else {
51
+ // fall back to using useRsrc format such as "unfoldingWord/en/ust/master"
52
+ var _parts = resourceLink.split('/');
53
+
54
+ branch = _parts === null || _parts === void 0 ? void 0 : _parts[3];
55
+ }
56
+
57
+ return branch;
58
+ }
59
+
37
60
  export function useScripture(_ref) {
38
61
  var _resourceStatus, _fetchParams$referenc;
39
62
 
@@ -52,7 +75,9 @@ export function useScripture(_ref) {
52
75
  resourceLink: '',
53
76
  reference: {}
54
77
  },
78
+ ignoreSha: ignoreSha,
55
79
  initialized: false,
80
+ fetched: false,
56
81
  resourceState: {
57
82
  bibleJson: null,
58
83
  matchedVerse: null,
@@ -71,6 +96,8 @@ export function useScripture(_ref) {
71
96
  var bookObjects = state.bookObjects,
72
97
  fetchedBook = state.fetchedBook,
73
98
  fetchParams = state.fetchParams,
99
+ fetched = state.fetched,
100
+ ignoreSha = state.ignoreSha,
74
101
  initialized = state.initialized,
75
102
  resourceState = state.resourceState,
76
103
  versesForRef = state.versesForRef;
@@ -129,7 +156,9 @@ export function useScripture(_ref) {
129
156
  if (!isEqual(newFetchParams, fetchParams)) {
130
157
  console.log("useScripture - FETCHING new params ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(resourceLink, " and resourceLink_=").concat(resourceLink_), newFetchParams);
131
158
  setState({
132
- fetchParams: newFetchParams
159
+ fetchParams: newFetchParams,
160
+ fetched: false,
161
+ ignoreSha: null
133
162
  });
134
163
  }
135
164
  }
@@ -161,16 +190,18 @@ export function useScripture(_ref) {
161
190
  if (readyForFetch) {
162
191
  var currentResourceState = _resourceResults === null || _resourceResults === void 0 ? void 0 : _resourceResults.state;
163
192
 
164
- if (!isEqual(currentResourceState, resourceState)) {
193
+ if (!fetched && !isEqual(currentResourceState, resourceState)) {
165
194
  var _content = currentResourceState.content,
166
- _fetchResponse = currentResourceState.fetchResponse;
195
+ _fetchResponse = currentResourceState.fetchResponse,
196
+ _loadingContent = currentResourceState.loadingContent,
197
+ _loadingResource = currentResourceState.loadingResource;
167
198
  console.log("useScripture resources changed", {
168
199
  content: _content,
169
200
  fetchParams: fetchParams,
170
201
  fetchResponse: _fetchResponse
171
202
  });
172
203
 
173
- if (_content && _fetchResponse) {
204
+ if (!_loadingContent && !_loadingResource && _content && _fetchResponse) {
174
205
  var _fetchResponse$data, _fetchResponse$data2;
175
206
 
176
207
  var newState = {
@@ -180,7 +211,7 @@ export function useScripture(_ref) {
180
211
  content: _content,
181
212
  fetchParams: fetchParams,
182
213
  fetchResponse: _fetchResponse
183
- }); // TRICKY - responses from server can come back from previous requests. So we make sure this response is for the latest request by making sure the response is for the current book
214
+ }); // TRICKY - responses from server can come back from previous requests. So we make sure this response is for the current requested book
184
215
 
185
216
  var sameBook = false; // @ts-ignore
186
217
 
@@ -199,7 +230,29 @@ export function useScripture(_ref) {
199
230
  }
200
231
 
201
232
  var sha = (_fetchResponse === null || _fetchResponse === void 0 ? void 0 : (_fetchResponse$data = _fetchResponse.data) === null || _fetchResponse$data === void 0 ? void 0 : _fetchResponse$data.sha) || null;
202
- var url = (_fetchResponse === null || _fetchResponse === void 0 ? void 0 : (_fetchResponse$data2 = _fetchResponse.data) === null || _fetchResponse$data2 === void 0 ? void 0 : _fetchResponse$data2.download_url) || null;
233
+ var url = (_fetchResponse === null || _fetchResponse === void 0 ? void 0 : (_fetchResponse$data2 = _fetchResponse.data) === null || _fetchResponse$data2 === void 0 ? void 0 : _fetchResponse$data2.url) || null;
234
+
235
+ if (sameBook) {
236
+ // also make sure it is the same branch
237
+ var fetchedBranch = getBranchName(url);
238
+ var fetchingBranch = getBranchName(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink);
239
+
240
+ if (fetchedBranch !== fetchingBranch) {
241
+ console.log("useScripture invalid branch, expected branch is ".concat(fetchingBranch, ", but fetchedBranch is ").concat(fetchedBranch), {
242
+ sha: sha,
243
+ url: url
244
+ });
245
+ sameBook = false;
246
+ }
247
+ }
248
+
249
+ if (ignoreSha === sha) {
250
+ console.log("useScripture the sha is the same as the ignore sha ".concat(sha), {
251
+ sha: sha,
252
+ url: url
253
+ });
254
+ sameBook = false;
255
+ }
203
256
 
204
257
  if (!sameBook) {
205
258
  console.log("useScripture invalid book, expectedBookId is ".concat(expectedBookId, ", but received book name ").concat(_fetchedBook), {
@@ -217,13 +270,15 @@ export function useScripture(_ref) {
217
270
  if (!isEqual(newState, {
218
271
  bookObjects: bookObjects,
219
272
  versesForRef: versesForRef,
220
- fetchedBook: _fetchedBook,
273
+ fetchedBook: expectedBookId,
221
274
  resourceState: resourceState
222
275
  })) {
223
276
  console.log("useScripture correct book, expectedBookId is ".concat(expectedBookId), {
224
277
  sha: sha,
225
278
  url: url
226
279
  });
280
+ newState['fetched'] = true;
281
+ newState['ignoreSha'] = null;
227
282
  setState(newState);
228
283
  }
229
284
  }
@@ -331,6 +386,30 @@ export function useScripture(_ref) {
331
386
  }
332
387
 
333
388
  return null;
389
+ }
390
+ /**
391
+ * force reload of current resource
392
+ * @param {string|undefined} ignoreSha - optional sha to ignore
393
+ */
394
+
395
+
396
+ function reloadResource(ignoreSha) {
397
+ var _reloadResource = _resourceResults === null || _resourceResults === void 0 ? void 0 : _resourceResults.actions.reloadResource;
398
+
399
+ if (_reloadResource) {
400
+ var newState = {
401
+ fetched: false
402
+ };
403
+
404
+ if (ignoreSha) {
405
+ // TRICKY - if the response was for this sha (which was the previous sha) then we need to ignore it
406
+ newState['ignoreSha'] = ignoreSha;
407
+ }
408
+
409
+ setState(newState);
410
+
411
+ _reloadResource();
412
+ }
334
413
  } // @ts-ignore
335
414
 
336
415
 
@@ -355,9 +434,10 @@ export function useScripture(_ref) {
355
434
  var fetchedBookSame = fetchedBook && fetchedBook === expectedBookId;
356
435
  var _versesForRef = [];
357
436
 
358
- if (!fetchedBookSame) {// if (expectedBookId) {
359
- // console.log(`useScripture expected book ${expectedBookId} but fetched book was ${fetchedBook} - clearing`)
360
- // }
437
+ if (!fetchedBookSame) {
438
+ if (expectedBookId) {
439
+ console.log("useScripture expected book ".concat(expectedBookId, " but fetched book was ").concat(fetchedBook, " - clearing"));
440
+ }
361
441
  } else {
362
442
  var _bookObjects = fetchedBookSame ? bookObjects : null;
363
443
 
@@ -380,7 +460,7 @@ export function useScripture(_ref) {
380
460
  getVersesForRef: getVersesForRef,
381
461
  matchedVerse: matchedVerse,
382
462
  reference: fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.reference,
383
- reloadResource: _resourceResults === null || _resourceResults === void 0 ? void 0 : _resourceResults.actions.reloadResource,
463
+ reloadResource: reloadResource,
384
464
  resourceLink: fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink,
385
465
  resourceStatus: resourceStatus,
386
466
  title: title,
@@ -389,4 +469,4 @@ export function useScripture(_ref) {
389
469
  versesForRef: versesForRef
390
470
  };
391
471
  }
392
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZVJzcmMiLCJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIkVSUk9SX1NUQVRFIiwiSU5JVElBTElaRURfU1RBVEUiLCJJTlZBTElEX01BTklGRVNUX0VSUk9SIiwiTE9BRElOR19TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUiIsImdldFZlcnNlcyIsImlzRXF1YWwiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0UmVzb3VyY2VMaW5rIiwiU2VydmVyQ29uZmlnIiwiU2NyaXB0dXJlUmVzb3VyY2UiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJwYXJzZVJlc291cmNlTWFuaWZlc3QiLCJ1c2VTY3JpcHR1cmUiLCJjb25maWciLCJyZWFkeUZvckZldGNoIiwicmVmZXJlbmNlIiwicmVzb3VyY2VfIiwicmVzb3VyY2UiLCJyZXNvdXJjZUxpbmtfIiwicmVzb3VyY2VMaW5rIiwid2hvbGVCb29rIiwiYm9va09iamVjdHMiLCJmZXRjaGVkQm9vayIsImZldGNoUGFyYW1zIiwiaW5pdGlhbGl6ZWQiLCJyZXNvdXJjZVN0YXRlIiwiYmlibGVKc29uIiwibWF0Y2hlZFZlcnNlIiwiY29udGVudCIsImxvYWRpbmdSZXNvdXJjZSIsImxvYWRpbmdDb250ZW50IiwiZmV0Y2hSZXNwb25zZSIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwiX2Jvb2tJZCIsInByb2plY3RJZCIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJsYW5ndWFnZUlkIiwiYnJhbmNoIiwicmVmIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwiY2hhcHRlciIsInZlcnNlIiwibmV3RmV0Y2hQYXJhbXMiLCJvcHRpb25zIiwiZ2V0QmlibGVKc29uIiwiX3Jlc291cmNlUmVzdWx0cyIsImN1cnJlbnRSZXNvdXJjZVN0YXRlIiwic2FtZUJvb2siLCJleHBlY3RlZEJvb2tJZCIsIm5hbWUiLCJzcGxpdCIsImV4dCIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJzaGEiLCJkYXRhIiwidXJsIiwiZG93bmxvYWRfdXJsIiwidXBkYXRlVmVyc2VzRm9yUmVmIiwidGl0bGUiLCJ2ZXJzaW9uIiwibG9hZGluZyIsImNvbnRlbnROb3RGb3VuZEVycm9yIiwic2NyaXB0dXJlTm90TG9hZGVkRXJyb3IiLCJtYW5pZmVzdE5vdEZvdW5kRXJyb3IiLCJtYW5pZmVzdCIsImludmFsaWRNYW5pZmVzdEVycm9yIiwiZXJyb3IiLCJyZXNvdXJjZVN0YXR1cyIsImludGlhbGl6ZWQiLCJnZXRWZXJzZXNGb3JSZWYiLCJjb250ZW50XyIsInZlcnNlcyIsImNoYXB0ZXJzIiwibWFwIiwidmVyc2VEYXRhIiwidmVyc2VPYmplY3RzIiwidmVyc2VPYmplY3RzXyIsIm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMiLCJ1cGRhdGVWZXJzZSIsImJvb2tPYmplY3RzXyIsIl9ib29rT2JqZWN0cyIsIm5ld1ZlcnNlc0ZvclJlZiIsImN1cnJlbnRCb29rUmVmIiwiZmV0Y2hlZEJvb2tTYW1lIiwiX3ZlcnNlc0ZvclJlZiIsInJlbG9hZFJlc291cmNlIiwiYWN0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxTQUNFQSxTQURGLEVBRUVDLFFBRkYsUUFHTyxPQUhQO0FBSUEsU0FDRUMsSUFERixFQUVFQyxPQUZGLFFBR08seUJBSFA7QUFJQSxTQUNFQyx1QkFERixFQUVFQyxXQUZGLEVBR0VDLGlCQUhGLEVBSUVDLHNCQUpGLEVBS0VDLGFBTEYsRUFNRUMseUJBTkYsRUFPRUMsMEJBUEYsUUFRTyx1QkFSUDtBQVNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsT0FBTyxLQUFLQyxPQUFa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QUFZLEVBQUVJLFdBQUYsYUFBRUEsV0FBRix1QkFBRUEsV0FBVyxDQUFFSixZQVB0QjtBQVFMMEQsSUFBQUEsY0FBYyxFQUFkQSxjQVJLO0FBU0xULElBQUFBLEtBQUssRUFBTEEsS0FUSztBQVVMb0IsSUFBQUEsV0FBVyxFQUFYQSxXQVZLO0FBV0xuQixJQUFBQSxPQUFPLEVBQVBBLE9BWEs7QUFZTHJDLElBQUFBLFlBQVksRUFBWkE7QUFaSyxHQUFQO0FBY0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQge1xuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIGNvcmUsXG4gIHVzZVJzcmMsXG59IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHtcbiAgQ09OVEVOVF9OT1RfRk9VTkRfRVJST1IsXG4gIEVSUk9SX1NUQVRFLFxuICBJTklUSUFMSVpFRF9TVEFURSxcbiAgSU5WQUxJRF9NQU5JRkVTVF9FUlJPUixcbiAgTE9BRElOR19TVEFURSxcbiAgTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUixcbiAgU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1IsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IGNsZWFudXBWZXJzZU9iamVjdHMsIGdldFJlc291cmNlTGluayB9IGZyb20gJy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgU2VydmVyQ29uZmlnLFxuICBTY3JpcHR1cmVSZXNvdXJjZSxcbiAgU2NyaXB0dXJlUmVmZXJlbmNlLFxufSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IHBhcnNlUmVzb3VyY2VNYW5pZmVzdCB9IGZyb20gJy4vcGFyc2VSZXNvdXJjZU1hbmlmZXN0J1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogcmVmZXJlbmNlIGZvciBzY3JpcHR1cmUgKiovXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlO1xuICAvKiogd2hlcmUgdG8gZ2V0IGRhdGEgKiovXG4gIGNvbmZpZzogU2VydmVyQ29uZmlnO1xuICAvKiogb3B0aW9uYWwgZGlyZWN0IHBhdGggdG8gYmlibGUgcmVzb3VyY2UsIGluIGZvcm1hdCAke293bmVyfS8ke2xhbmd1YWdlSWR9LyR7cHJvamVjdElkfS8ke2JyYW5jaH0gKiovXG4gIHJlc291cmNlTGluazogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIG9wdGlvbmFsIHJlc291cmNlIG9iamVjdCB0byB1c2UgdG8gYnVpbGQgcmVzb3VyY2VMaW5rICoqL1xuICByZXNvdXJjZTogU2NyaXB0dXJlUmVzb3VyY2V8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGZldGNoIHRoZSBlbnRpcmUgYm9vayAqL1xuICB3aG9sZUJvb2s6IGJvb2xlYW47XG4gIC8qKiBpZiB0cnVlIHRoZW4gc2V0dGluZ3MgYXJlIHJlYWR5IGZvciBmZXRjaGluZyBkYXRhICovXG4gIHJlYWR5Rm9yRmV0Y2g6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJvb2tPYmplY3RzOiBudWxsLFxuICAgIGZldGNoZWRCb29rOiAnJyxcbiAgICBmZXRjaFBhcmFtczogeyByZXNvdXJjZUxpbms6ICcnLCByZWZlcmVuY2U6IHt9IH0sXG4gICAgaW5pdGlhbGl6ZWQ6IGZhbHNlLFxuICAgIHJlc291cmNlU3RhdGU6IHtcbiAgICAgIGJpYmxlSnNvbjogbnVsbCxcbiAgICAgIG1hdGNoZWRWZXJzZTogbnVsbCxcbiAgICAgIHJlc291cmNlOiBudWxsLFxuICAgICAgY29udGVudDogbnVsbCxcbiAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICBsb2FkaW5nQ29udGVudDogZmFsc2UsXG4gICAgICBmZXRjaFJlc3BvbnNlOiBudWxsLFxuICAgIH0sXG4gICAgdmVyc2VzRm9yUmVmOiBbXSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgYm9va09iamVjdHMsXG4gICAgZmV0Y2hlZEJvb2ssXG4gICAgZmV0Y2hQYXJhbXMsXG4gICAgaW5pdGlhbGl6ZWQsXG4gICAgcmVzb3VyY2VTdGF0ZSxcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH0gPSBzdGF0ZVxuICBjb25zdCBfYm9va0lkID0gcmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSByZWFkeUZvckZldGNoIHRydWUsIGluaXRpYWxpemluZ2ApXG4gICAgICBsZXQgcmVzb3VyY2VMaW5rID0gcmVhZHlGb3JGZXRjaCAmJiByZXNvdXJjZUxpbmtfXG5cbiAgICAgIGlmICghcmVzb3VyY2VMaW5rXyAmJiByZXNvdXJjZV8pIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcHJvamVjdElkLFxuICAgICAgICAgIGJyYW5jaCA9ICdtYXN0ZXInLFxuICAgICAgICAgIHJlZiA9IG51bGwsXG4gICAgICAgIH0gPSByZXNvdXJjZV8gfHwge31cbiAgICAgICAgY29uc3QgcmVmXyA9IHJlZiB8fCBicmFuY2hcblxuICAgICAgICByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogcHJvamVjdElkLFxuICAgICAgICAgIHJlZjogcmVmXyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9va1JlZiA9IHsgLi4ucmVmZXJlbmNlIH1cblxuICAgICAgaWYgKHdob2xlQm9vaykge1xuICAgICAgICBkZWxldGUgYm9va1JlZi5jaGFwdGVyIC8vIHJlbW92ZSB0aGUgY2hhcHRlciBhbmQgdmVyc2Ugc28gdGhlIHdob2xlIGJvb2sgaXMgZmV0Y2hlZFxuICAgICAgICBkZWxldGUgYm9va1JlZi52ZXJzZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VMaW5rICE9PSBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWApXG4gICAgICB9IGVsc2UgaWYgKGJvb2tSZWYgIT09IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGJvb2sgY2hhbmdlZCB0byAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0ZldGNoUGFyYW1zID0ge1xuICAgICAgICByZXNvdXJjZUxpbmssXG4gICAgICAgIHJlZmVyZW5jZTogYm9va1JlZixcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0VxdWFsKG5ld0ZldGNoUGFyYW1zLCBmZXRjaFBhcmFtcykpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIEZFVENISU5HIG5ldyBwYXJhbXMgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWAsIG5ld0ZldGNoUGFyYW1zKVxuICAgICAgICBzZXRTdGF0ZSh7IGZldGNoUGFyYW1zOiBuZXdGZXRjaFBhcmFtcyB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3JlYWR5Rm9yRmV0Y2gsIF9ib29rSWQsIHJlc291cmNlTGlua19dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZWFkeUZvckZldGNoIGlzIG5vdyAke3JlYWR5Rm9yRmV0Y2h9YClcbiAgfSwgW3JlYWR5Rm9yRmV0Y2hdKVxuXG4gIGNvbnN0IG9wdGlvbnMgPSB7IGdldEJpYmxlSnNvbjogdHJ1ZSB9XG5cbiAgY29uc3QgX3Jlc291cmNlUmVzdWx0cyA9IHVzZVJzcmMoe1xuICAgIGNvbmZpZyxcbiAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgcmVzb3VyY2VMaW5rOiBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rLFxuICAgIG9wdGlvbnMsXG4gIH0pXG5cbiAgLy8gb25seSB1c2UgdGhlIHJlc3VsdHMgaWYgcmVhZHlUb0ZldGNoXG4gIGNvbnN0IHtcbiAgICBiaWJsZUpzb24sXG4gICAgY29udGVudCxcbiAgICBmZXRjaFJlc3BvbnNlLFxuICAgIGxvYWRpbmdSZXNvdXJjZSxcbiAgICBsb2FkaW5nQ29udGVudCxcbiAgICBtYXRjaGVkVmVyc2UsXG4gICAgcmVzb3VyY2UsXG4gIH0gPSByZXNvdXJjZVN0YXRlXG5cbiAgdXNlRWZmZWN0KCgpID0+IHsgLy8gdmFsaWRhdGUgcmVzcG9uc2UgdG8gbWFrZSBzdXJlIGZyb20gbGF0ZXN0IHJlcXVlc3RcbiAgICBpZiAocmVhZHlGb3JGZXRjaCkge1xuICAgICAgY29uc3QgY3VycmVudFJlc291cmNlU3RhdGUgPSBfcmVzb3VyY2VSZXN1bHRzPy5zdGF0ZVxuXG4gICAgICBpZiAoIWlzRXF1YWwoY3VycmVudFJlc291cmNlU3RhdGUsIHJlc291cmNlU3RhdGUpKSB7XG4gICAgICAgIGNvbnN0IHsgY29udGVudCwgZmV0Y2hSZXNwb25zZSB9ID0gY3VycmVudFJlc291cmNlU3RhdGVcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSByZXNvdXJjZXMgY2hhbmdlZGAsIHsgY29udGVudCwgZmV0Y2hQYXJhbXMsIGZldGNoUmVzcG9uc2UgfSlcblxuICAgICAgICBpZiAoY29udGVudCAmJiBmZXRjaFJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB7IHJlc291cmNlU3RhdGU6IGN1cnJlbnRSZXNvdXJjZVN0YXRlIH1cbiAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGNvbnRlbnQgY2hhbmdlZGAsIHsgY29udGVudCwgZmV0Y2hQYXJhbXMsIGZldGNoUmVzcG9uc2UgfSlcbiAgICAgICAgICAvLyBUUklDS1kgLSByZXNwb25zZXMgZnJvbSBzZXJ2ZXIgY2FuIGNvbWUgYmFjayBmcm9tIHByZXZpb3VzIHJlcXVlc3RzLiAgU28gd2UgbWFrZSBzdXJlIHRoaXMgcmVzcG9uc2UgaXMgZm9yIHRoZSBsYXRlc3QgcmVxdWVzdCBieSBtYWtpbmcgc3VyZSB0aGUgcmVzcG9uc2UgaXMgZm9yIHRoZSBjdXJyZW50IGJvb2tcbiAgICAgICAgICBsZXQgc2FtZUJvb2sgPSBmYWxzZVxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IF9ib29rSWQgfHwgJydcbiAgICAgICAgICBjb25zdCBmZXRjaGVkQm9vayA9IGNvbnRlbnQubmFtZVxuXG4gICAgICAgICAgaWYgKGZldGNoZWRCb29rICYmIGV4cGVjdGVkQm9va0lkKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZSwgZXh0XSA9IGZldGNoZWRCb29rLnNwbGl0KCcuJylcblxuICAgICAgICAgICAgaWYgKGV4dC50b0xvd2VyQ2FzZSgpID09PSAndXNmbScpIHtcbiAgICAgICAgICAgICAgc2FtZUJvb2sgPSBuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXhwZWN0ZWRCb29rSWQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzaGEgPSBmZXRjaFJlc3BvbnNlPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgICAgICAgIGNvbnN0IHVybCA9IGZldGNoUmVzcG9uc2U/LmRhdGE/LmRvd25sb2FkX3VybCB8fCBudWxsXG5cbiAgICAgICAgICBpZiAoIXNhbWVCb29rKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGludmFsaWQgYm9vaywgZXhwZWN0ZWRCb29rSWQgaXMgJHtleHBlY3RlZEJvb2tJZH0sIGJ1dCByZWNlaXZlZCBib29rIG5hbWUgJHtmZXRjaGVkQm9va31gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5ld1N0YXRlLmJvb2tPYmplY3RzID0gY29udGVudFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gdXBkYXRlVmVyc2VzRm9yUmVmKGNvbnRlbnQpXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBuZXdTdGF0ZS5mZXRjaGVkQm9vayA9IGV4cGVjdGVkQm9va0lkXG5cbiAgICAgICAgICAgIGlmICghaXNFcXVhbChuZXdTdGF0ZSwge1xuICAgICAgICAgICAgICBib29rT2JqZWN0cyxcbiAgICAgICAgICAgICAgdmVyc2VzRm9yUmVmLFxuICAgICAgICAgICAgICBmZXRjaGVkQm9vayxcbiAgICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZSxcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgY29ycmVjdCBib29rLCBleHBlY3RlZEJvb2tJZCBpcyAke2V4cGVjdGVkQm9va0lkfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgICAgICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghaXNFcXVhbChjdXJyZW50UmVzb3VyY2VTdGF0ZSwgcmVzb3VyY2VTdGF0ZSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgc3RhdGUgY2hhbmdlZCwgYnV0IG5vIGNvbnRlbnRgLCBjdXJyZW50UmVzb3VyY2VTdGF0ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgcmVzb3VyY2VTdGF0ZTogY3VycmVudFJlc291cmNlU3RhdGUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIFtyZWFkeUZvckZldGNoLCBfcmVzb3VyY2VSZXN1bHRzPy5zdGF0ZV0pXG5cbiAgY29uc3QgeyB0aXRsZSwgdmVyc2lvbiB9ID0gcGFyc2VSZXNvdXJjZU1hbmlmZXN0KHJlc291cmNlKVxuICBjb25zdCB7IGxhbmd1YWdlSWQgfSA9IHJlc291cmNlXyB8fCB7fVxuICBjb25zdCBsb2FkaW5nID0gbG9hZGluZ1Jlc291cmNlIHx8IGxvYWRpbmdDb250ZW50IHx8ICFyZWFkeUZvckZldGNoXG4gIGNvbnN0IGNvbnRlbnROb3RGb3VuZEVycm9yID0gIWNvbnRlbnRcbiAgY29uc3Qgc2NyaXB0dXJlTm90TG9hZGVkRXJyb3IgPSAhYmlibGVKc29uXG4gIGNvbnN0IG1hbmlmZXN0Tm90Rm91bmRFcnJvciA9ICFyZXNvdXJjZT8ubWFuaWZlc3RcbiAgY29uc3QgaW52YWxpZE1hbmlmZXN0RXJyb3IgPSAhdGl0bGUgfHwgIXZlcnNpb24gfHwgIWxhbmd1YWdlSWRcbiAgY29uc3QgZXJyb3IgPSByZWFkeUZvckZldGNoICYmIGluaXRpYWxpemVkICYmICFsb2FkaW5nICYmXG4gICAgKGNvbnRlbnROb3RGb3VuZEVycm9yIHx8IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yIHx8IG1hbmlmZXN0Tm90Rm91bmRFcnJvciB8fCBpbnZhbGlkTWFuaWZlc3RFcnJvcilcbiAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSB7XG4gICAgW0xPQURJTkdfU1RBVEVdOiBsb2FkaW5nLFxuICAgIFtDT05URU5UX05PVF9GT1VORF9FUlJPUl06IGNvbnRlbnROb3RGb3VuZEVycm9yLFxuICAgIFtTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUl06IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yLFxuICAgIFtNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXTogbWFuaWZlc3ROb3RGb3VuZEVycm9yLFxuICAgIFtJTlZBTElEX01BTklGRVNUX0VSUk9SXTogaW52YWxpZE1hbmlmZXN0RXJyb3IsXG4gICAgW0VSUk9SX1NUQVRFXTogZXJyb3IsXG4gICAgW0lOSVRJQUxJWkVEX1NUQVRFXTogaW5pdGlhbGl6ZWQsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVhZHlGb3JGZXRjaCkge1xuICAgICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICAgIHNldFN0YXRlKHsgaW50aWFsaXplZDogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpbml0aWFsaXplZCkge1xuICAgICAgaWYgKGxvYWRpbmcpIHsgLy8gb25jZSBmaXJzdCBsb2FkIGhhcyBiZWd1biwgd2UgYXJlIGluaXRpYWxpemVkXG4gICAgICAgIHNldFN0YXRlKHsgaW50aWFsaXplZDogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2xvYWRpbmcsIHJlYWR5Rm9yRmV0Y2hdKVxuXG4gIGZ1bmN0aW9uIGdldFZlcnNlc0ZvclJlZihyZWYsIGNvbnRlbnRfID0gYm9va09iamVjdHMpIHtcbiAgICBpZiAoY29udGVudF8pIHtcbiAgICAgIGxldCB2ZXJzZXMgPSBnZXRWZXJzZXMoY29udGVudF8uY2hhcHRlcnMsIHJlZilcblxuICAgICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgICB2ZXJzZXMgPSB2ZXJzZXMubWFwKHZlcnNlID0+IHtcbiAgICAgICAgICBpZiAoIHZlcnNlPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgICB2ZXJzZU9iamVjdHNfID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHNfKVxuICAgICAgICAgICAgdmVyc2UudmVyc2VEYXRhLnZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0c19cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHZlcnNlXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2ZXJzZXNcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cyA9IGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IG5ld1ZlcnNlc0ZvclJlZiA9IFtdXG5cbiAgICBpZiAoX2Jvb2tPYmplY3RzKSB7XG4gICAgICBjb25zdCByZWYgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICAgICAgbmV3VmVyc2VzRm9yUmVmID0gZ2V0VmVyc2VzRm9yUmVmKHJlZiwgX2Jvb2tPYmplY3RzKVxuICAgICAgcmV0dXJuIG5ld1ZlcnNlc0ZvclJlZlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGN1cnJlbnRCb29rUmVmID0gZmV0Y2hQYXJhbXM/LnJlZmVyZW5jZT8ucHJvamVjdElkXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY3VycmVudEJvb2tSZWYpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgZmV0Y2hlZCBib29rIGNoYW5nZWQgdG8gJHtjdXJyZW50Qm9va1JlZn0sICR7cmVzb3VyY2VMaW5rX31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgICBzZXRTdGF0ZSh7IGJvb2tPYmplY3RzOiBudWxsIH0pXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2N1cnJlbnRCb29rUmVmXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgYm9vayByZWYgY2hhbmdlZCB0byAke19ib29rSWR9LCAke3Jlc291cmNlTGlua199YClcbiAgICAvLyBAdHMtaWdub3JlXG4gIH0sIFtfYm9va0lkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gX2Jvb2tJZCB8fCAnJ1xuICAgIGNvbnN0IGZldGNoZWRCb29rU2FtZSA9IGZldGNoZWRCb29rICYmIChmZXRjaGVkQm9vayA9PT0gZXhwZWN0ZWRCb29rSWQpXG4gICAgbGV0IF92ZXJzZXNGb3JSZWYgPSBbXVxuXG4gICAgaWYgKCFmZXRjaGVkQm9va1NhbWUpIHtcbiAgICAgIC8vIGlmIChleHBlY3RlZEJvb2tJZCkge1xuICAgICAgLy8gICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGV4cGVjdGVkIGJvb2sgJHtleHBlY3RlZEJvb2tJZH0gYnV0IGZldGNoZWQgYm9vayB3YXMgJHtmZXRjaGVkQm9va30gLSBjbGVhcmluZ2ApXG4gICAgICAvLyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IF9ib29rT2JqZWN0cyA9IGZldGNoZWRCb29rU2FtZSA/IGJvb2tPYmplY3RzIDogbnVsbFxuICAgICAgX3ZlcnNlc0ZvclJlZiA9IHVwZGF0ZVZlcnNlc0ZvclJlZihfYm9va09iamVjdHMpXG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIF9ib29rT2JqZWN0cyBpcyAkeyEhX2Jvb2tPYmplY3RzfSBhbmQgYm9va3MgYXJlIHRoZSBzYW1lICR7ZmV0Y2hlZEJvb2t9IC0gY2xlYXJpbmdgLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJvb2tPYmplY3RzLFxuICAgIGZldGNoUmVzcG9uc2UsXG4gICAgZ2V0VmVyc2VzRm9yUmVmLFxuICAgIG1hdGNoZWRWZXJzZSxcbiAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgcmVsb2FkUmVzb3VyY2U6IF9yZXNvdXJjZVJlc3VsdHM/LmFjdGlvbnMucmVsb2FkUmVzb3VyY2UsXG4gICAgcmVzb3VyY2VMaW5rOiBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rLFxuICAgIHJlc291cmNlU3RhdHVzLFxuICAgIHRpdGxlLFxuICAgIHVwZGF0ZVZlcnNlLFxuICAgIHZlcnNpb24sXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9XG59XG4iXX0=
472
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZVJzcmMiLCJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIkVSUk9SX1NUQVRFIiwiSU5JVElBTElaRURfU1RBVEUiLCJJTlZBTElEX01BTklGRVNUX0VSUk9SIiwiTE9BRElOR19TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUiIsImdldFZlcnNlcyIsImlzRXF1YWwiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0UmVzb3VyY2VMaW5rIiwiU2VydmVyQ29uZmlnIiwiU2NyaXB0dXJlUmVzb3VyY2UiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJwYXJzZVJlc291cmNlTWFuaWZlc3QiLCJnZXRCcmFuY2hOYW1lIiwicmVzb3VyY2VMaW5rIiwiYnJhbmNoIiwicGFydHMiLCJzcGxpdCIsImxlbmd0aCIsIl9wYXJ0cyIsInVzZVNjcmlwdHVyZSIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZWZlcmVuY2UiLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJ3aG9sZUJvb2siLCJib29rT2JqZWN0cyIsImZldGNoZWRCb29rIiwiZmV0Y2hQYXJhbXMiLCJpZ25vcmVTaGEiLCJpbml0aWFsaXplZCIsImZldGNoZWQiLCJyZXNvdXJjZVN0YXRlIiwiYmlibGVKc29uIiwibWF0Y2hlZFZlcnNlIiwiY29udGVudCIsImxvYWRpbmdSZXNvdXJjZSIsImxvYWRpbmdDb250ZW50IiwiZmV0Y2hSZXNwb25zZSIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwiX2Jvb2tJZCIsInByb2plY3RJZCIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJsYW5ndWFnZUlkIiwicmVmIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwiY2hhcHRlciIsInZlcnNlIiwibmV3RmV0Y2hQYXJhbXMiLCJvcHRpb25zIiwiZ2V0QmlibGVKc29uIiwiX3Jlc291cmNlUmVzdWx0cyIsImN1cnJlbnRSZXNvdXJjZVN0YXRlIiwic2FtZUJvb2siLCJleHBlY3RlZEJvb2tJZCIsIm5hbWUiLCJleHQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwic2hhIiwiZGF0YSIsInVybCIsImZldGNoZWRCcmFuY2giLCJmZXRjaGluZ0JyYW5jaCIsInVwZGF0ZVZlcnNlc0ZvclJlZiIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwibWFuaWZlc3QiLCJpbnZhbGlkTWFuaWZlc3RFcnJvciIsImVycm9yIiwicmVzb3VyY2VTdGF0dXMiLCJpbnRpYWxpemVkIiwiZ2V0VmVyc2VzRm9yUmVmIiwiY29udGVudF8iLCJ2ZXJzZXMiLCJjaGFwdGVycyIsIm1hcCIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0c18iLCJvY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzIiwidXBkYXRlVmVyc2UiLCJib29rT2JqZWN0c18iLCJfYm9va09iamVjdHMiLCJuZXdWZXJzZXNGb3JSZWYiLCJyZWxvYWRSZXNvdXJjZSIsIl9yZWxvYWRSZXNvdXJjZSIsImFjdGlvbnMiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsU0FDRUEsU0FERixFQUVFQyxRQUZGLFFBR08sT0FIUDtBQUlBLFNBQ0VDLElBREYsRUFFRUMsT0FGRixRQUdPLHlCQUhQO0FBSUEsU0FDRUMsdUJBREYsRUFFRUMsV0FGRixFQUdFQyxpQkFIRixFQUlFQyxz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ZUFISztBQUlMbkQsSUFBQUEsWUFBWSxFQUFaQSxZQUpLO0FBS0xiLElBQUFBLFNBQVMsRUFBRU8sV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUVQLFNBTG5CO0FBTUw2RSxJQUFBQSxjQUFjLEVBQWRBLGNBTks7QUFPTHRGLElBQUFBLFlBQVksRUFBRWdCLFdBQUYsYUFBRUEsV0FBRix1QkFBRUEsV0FBVyxDQUFFaEIsWUFQdEI7QUFRTHVFLElBQUFBLGNBQWMsRUFBZEEsY0FSSztBQVNMVCxJQUFBQSxLQUFLLEVBQUxBLEtBVEs7QUFVTG9CLElBQUFBLFdBQVcsRUFBWEEsV0FWSztBQVdMbkIsSUFBQUEsT0FBTyxFQUFQQSxPQVhLO0FBWUxwQyxJQUFBQSxZQUFZLEVBQVpBO0FBWkssR0FBUDtBQWNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHtcbiAgdXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBjb3JlLFxuICB1c2VSc3JjLFxufSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBjbGVhbnVwVmVyc2VPYmplY3RzLCBnZXRSZXNvdXJjZUxpbmsgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmRcbiAgICBicmFuY2ggPSBwYXJ0cz8uWzFdXG4gIH0gZWxzZSB7IC8vIGZhbGwgYmFjayB0byB1c2luZyB1c2VSc3JjIGZvcm1hdCBzdWNoIGFzIFwidW5mb2xkaW5nV29yZC9lbi91c3QvbWFzdGVyXCJcbiAgICBjb25zdCBfcGFydHMgPSByZXNvdXJjZUxpbmsuc3BsaXQoJy8nKVxuICAgIGJyYW5jaCA9IF9wYXJ0cz8uWzNdXG4gIH1cbiAgcmV0dXJuIGJyYW5jaFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NyaXB0dXJlKHsgLy8gaG9vayBmb3IgZmV0Y2hpbmcgc2NyaXB0dXJlXG4gIGNvbmZpZyxcbiAgcmVhZHlGb3JGZXRjaCxcbiAgcmVmZXJlbmNlLFxuICByZXNvdXJjZTogcmVzb3VyY2VfLFxuICByZXNvdXJjZUxpbms6IHJlc291cmNlTGlua18sXG4gIHdob2xlQm9vayA9IGZhbHNlLFxufSA6IFByb3BzKSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IHVzZVN0YXRlKHtcbiAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICBmZXRjaGVkQm9vazogJycsXG4gICAgZmV0Y2hQYXJhbXM6IHsgcmVzb3VyY2VMaW5rOiAnJywgcmVmZXJlbmNlOiB7fSB9LFxuICAgIGlnbm9yZVNoYSxcbiAgICBpbml0aWFsaXplZDogZmFsc2UsXG4gICAgZmV0Y2hlZDogZmFsc2UsXG4gICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgYmlibGVKc29uOiBudWxsLFxuICAgICAgbWF0Y2hlZFZlcnNlOiBudWxsLFxuICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICBjb250ZW50OiBudWxsLFxuICAgICAgbG9hZGluZ1Jlc291cmNlOiBmYWxzZSxcbiAgICAgIGxvYWRpbmdDb250ZW50OiBmYWxzZSxcbiAgICAgIGZldGNoUmVzcG9uc2U6IG51bGwsXG4gICAgfSxcbiAgICB2ZXJzZXNGb3JSZWY6IFtdLFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBib29rT2JqZWN0cyxcbiAgICBmZXRjaGVkQm9vayxcbiAgICBmZXRjaFBhcmFtcyxcbiAgICBmZXRjaGVkLFxuICAgIGlnbm9yZVNoYSxcbiAgICBpbml0aWFsaXplZCxcbiAgICByZXNvdXJjZVN0YXRlLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG4gIGNvbnN0IF9ib29rSWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVhZHlGb3JGZXRjaCkge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIHJlYWR5Rm9yRmV0Y2ggdHJ1ZSwgaW5pdGlhbGl6aW5nYClcbiAgICAgIGxldCByZXNvdXJjZUxpbmsgPSByZWFkeUZvckZldGNoICYmIHJlc291cmNlTGlua19cblxuICAgICAgaWYgKCFyZXNvdXJjZUxpbmtfICYmIHJlc291cmNlXykge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgICBwcm9qZWN0SWQsXG4gICAgICAgICAgYnJhbmNoID0gJ21hc3RlcicsXG4gICAgICAgICAgcmVmID0gbnVsbCxcbiAgICAgICAgfSA9IHJlc291cmNlXyB8fCB7fVxuICAgICAgICBjb25zdCByZWZfID0gcmVmIHx8IGJyYW5jaFxuXG4gICAgICAgIHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayh7XG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgICByZXNvdXJjZUlkOiBwcm9qZWN0SWQsXG4gICAgICAgICAgcmVmOiByZWZfLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBib29rUmVmID0geyAuLi5yZWZlcmVuY2UgfVxuXG4gICAgICBpZiAod2hvbGVCb29rKSB7XG4gICAgICAgIGRlbGV0ZSBib29rUmVmLmNoYXB0ZXIgLy8gcmVtb3ZlIHRoZSBjaGFwdGVyIGFuZCB2ZXJzZSBzbyB0aGUgd2hvbGUgYm9vayBpcyBmZXRjaGVkXG4gICAgICAgIGRlbGV0ZSBib29rUmVmLnZlcnNlXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNvdXJjZUxpbmsgIT09IGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmspIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke3Jlc291cmNlTGlua199YClcbiAgICAgIH0gZWxzZSBpZiAoYm9va1JlZiAhPT0gZmV0Y2hQYXJhbXM/LnJlZmVyZW5jZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gYm9vayBjaGFuZ2VkIHRvICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtyZXNvdXJjZUxpbmt9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3RmV0Y2hQYXJhbXMgPSB7XG4gICAgICAgIHJlc291cmNlTGluayxcbiAgICAgICAgcmVmZXJlbmNlOiBib29rUmVmLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3RmV0Y2hQYXJhbXMsIGZldGNoUGFyYW1zKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gRkVUQ0hJTkcgbmV3IHBhcmFtcyAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke3Jlc291cmNlTGlua199YCwgbmV3RmV0Y2hQYXJhbXMpXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICBmZXRjaFBhcmFtczogbmV3RmV0Y2hQYXJhbXMsXG4gICAgICAgICAgZmV0Y2hlZDogZmFsc2UsXG4gICAgICAgICAgaWdub3JlU2hhOiBudWxsLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3JlYWR5Rm9yRmV0Y2gsIF9ib29rSWQsIHJlc291cmNlTGlua19dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZWFkeUZvckZldGNoIGlzIG5vdyAke3JlYWR5Rm9yRmV0Y2h9YClcbiAgfSwgW3JlYWR5Rm9yRmV0Y2hdKVxuXG4gIGNvbnN0IG9wdGlvbnMgPSB7IGdldEJpYmxlSnNvbjogdHJ1ZSB9XG5cbiAgY29uc3QgX3Jlc291cmNlUmVzdWx0cyA9IHVzZVJzcmMoe1xuICAgIGNvbmZpZyxcbiAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgcmVzb3VyY2VMaW5rOiBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rLFxuICAgIG9wdGlvbnMsXG4gIH0pXG5cbiAgLy8gb25seSB1c2UgdGhlIHJlc3VsdHMgaWYgcmVhZHlUb0ZldGNoXG4gIGNvbnN0IHtcbiAgICBiaWJsZUpzb24sXG4gICAgY29udGVudCxcbiAgICBmZXRjaFJlc3BvbnNlLFxuICAgIGxvYWRpbmdSZXNvdXJjZSxcbiAgICBsb2FkaW5nQ29udGVudCxcbiAgICBtYXRjaGVkVmVyc2UsXG4gICAgcmVzb3VyY2UsXG4gIH0gPSByZXNvdXJjZVN0YXRlXG5cbiAgdXNlRWZmZWN0KCgpID0+IHsgLy8gdmFsaWRhdGUgcmVzcG9uc2UgdG8gbWFrZSBzdXJlIGZyb20gbGF0ZXN0IHJlcXVlc3RcbiAgICBpZiAocmVhZHlGb3JGZXRjaCkge1xuICAgICAgY29uc3QgY3VycmVudFJlc291cmNlU3RhdGUgPSBfcmVzb3VyY2VSZXN1bHRzPy5zdGF0ZVxuXG4gICAgICBpZiAoIWZldGNoZWQgJiYgIWlzRXF1YWwoY3VycmVudFJlc291cmNlU3RhdGUsIHJlc291cmNlU3RhdGUpKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgIGZldGNoUmVzcG9uc2UsXG4gICAgICAgICAgbG9hZGluZ0NvbnRlbnQsXG4gICAgICAgICAgbG9hZGluZ1Jlc291cmNlLFxuICAgICAgICB9ID0gY3VycmVudFJlc291cmNlU3RhdGVcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSByZXNvdXJjZXMgY2hhbmdlZGAsIHsgY29udGVudCwgZmV0Y2hQYXJhbXMsIGZldGNoUmVzcG9uc2UgfSlcblxuICAgICAgICBpZiAoIWxvYWRpbmdDb250ZW50ICYmICFsb2FkaW5nUmVzb3VyY2UgJiYgY29udGVudCAmJiBmZXRjaFJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB7IHJlc291cmNlU3RhdGU6IGN1cnJlbnRSZXNvdXJjZVN0YXRlIH1cbiAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGNvbnRlbnQgY2hhbmdlZGAsIHsgY29udGVudCwgZmV0Y2hQYXJhbXMsIGZldGNoUmVzcG9uc2UgfSlcblxuICAgICAgICAgIC8vIFRSSUNLWSAtIHJlc3BvbnNlcyBmcm9tIHNlcnZlciBjYW4gY29tZSBiYWNrIGZyb20gcHJldmlvdXMgcmVxdWVzdHMuICBTbyB3ZSBtYWtlIHN1cmUgdGhpcyByZXNwb25zZSBpcyBmb3IgdGhlIGN1cnJlbnQgcmVxdWVzdGVkIGJvb2tcbiAgICAgICAgICBsZXQgc2FtZUJvb2sgPSBmYWxzZVxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IF9ib29rSWQgfHwgJydcbiAgICAgICAgICBjb25zdCBmZXRjaGVkQm9vayA9IGNvbnRlbnQubmFtZVxuXG4gICAgICAgICAgaWYgKGZldGNoZWRCb29rICYmIGV4cGVjdGVkQm9va0lkKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZSwgZXh0XSA9IGZldGNoZWRCb29rLnNwbGl0KCcuJylcblxuICAgICAgICAgICAgaWYgKGV4dC50b0xvd2VyQ2FzZSgpID09PSAndXNmbScpIHtcbiAgICAgICAgICAgICAgc2FtZUJvb2sgPSBuYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXhwZWN0ZWRCb29rSWQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzaGEgPSBmZXRjaFJlc3BvbnNlPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgICAgICAgIGNvbnN0IHVybCA9IGZldGNoUmVzcG9uc2U/LmRhdGE/LnVybCB8fCBudWxsXG5cbiAgICAgICAgICBpZiAoc2FtZUJvb2spIHsgLy8gYWxzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYnJhbmNoXG4gICAgICAgICAgICBjb25zdCBmZXRjaGVkQnJhbmNoID0gZ2V0QnJhbmNoTmFtZSh1cmwpXG4gICAgICAgICAgICBjb25zdCBmZXRjaGluZ0JyYW5jaCA9IGdldEJyYW5jaE5hbWUoZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaylcblxuICAgICAgICAgICAgaWYgKGZldGNoZWRCcmFuY2ggIT09IGZldGNoaW5nQnJhbmNoKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgaW52YWxpZCBicmFuY2gsIGV4cGVjdGVkIGJyYW5jaCBpcyAke2ZldGNoaW5nQnJhbmNofSwgYnV0IGZldGNoZWRCcmFuY2ggaXMgJHtmZXRjaGVkQnJhbmNofWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgICAgICAgICAgc2FtZUJvb2sgPSBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpZ25vcmVTaGEgPT09IHNoYSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSB0aGUgc2hhIGlzIHRoZSBzYW1lIGFzIHRoZSBpZ25vcmUgc2hhICR7c2hhfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgICAgICAgIHNhbWVCb29rID0gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXNhbWVCb29rKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGludmFsaWQgYm9vaywgZXhwZWN0ZWRCb29rSWQgaXMgJHtleHBlY3RlZEJvb2tJZH0sIGJ1dCByZWNlaXZlZCBib29rIG5hbWUgJHtmZXRjaGVkQm9va31gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5ld1N0YXRlLmJvb2tPYmplY3RzID0gY29udGVudFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gdXBkYXRlVmVyc2VzRm9yUmVmKGNvbnRlbnQpXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBuZXdTdGF0ZS5mZXRjaGVkQm9vayA9IGV4cGVjdGVkQm9va0lkXG5cbiAgICAgICAgICAgIGlmICghaXNFcXVhbChuZXdTdGF0ZSwge1xuICAgICAgICAgICAgICBib29rT2JqZWN0cyxcbiAgICAgICAgICAgICAgdmVyc2VzRm9yUmVmLFxuICAgICAgICAgICAgICBmZXRjaGVkQm9vazogZXhwZWN0ZWRCb29rSWQsXG4gICAgICAgICAgICAgIHJlc291cmNlU3RhdGUsXG4gICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGNvcnJlY3QgYm9vaywgZXhwZWN0ZWRCb29rSWQgaXMgJHtleHBlY3RlZEJvb2tJZH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgICAgICAgIG5ld1N0YXRlWydmZXRjaGVkJ10gPSB0cnVlXG4gICAgICAgICAgICAgIG5ld1N0YXRlWydpZ25vcmVTaGEnXSA9IG51bGxcbiAgICAgICAgICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghaXNFcXVhbChjdXJyZW50UmVzb3VyY2VTdGF0ZSwgcmVzb3VyY2VTdGF0ZSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgc3RhdGUgY2hhbmdlZCwgYnV0IG5vIGNvbnRlbnRgLCBjdXJyZW50UmVzb3VyY2VTdGF0ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgcmVzb3VyY2VTdGF0ZTogY3VycmVudFJlc291cmNlU3RhdGUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIFtyZWFkeUZvckZldGNoLCBfcmVzb3VyY2VSZXN1bHRzPy5zdGF0ZV0pXG5cbiAgY29uc3QgeyB0aXRsZSwgdmVyc2lvbiB9ID0gcGFyc2VSZXNvdXJjZU1hbmlmZXN0KHJlc291cmNlKVxuICBjb25zdCB7IGxhbmd1YWdlSWQgfSA9IHJlc291cmNlXyB8fCB7fVxuICBjb25zdCBsb2FkaW5nID0gbG9hZGluZ1Jlc291cmNlIHx8IGxvYWRpbmdDb250ZW50IHx8ICFyZWFkeUZvckZldGNoXG4gIGNvbnN0IGNvbnRlbnROb3RGb3VuZEVycm9yID0gIWNvbnRlbnRcbiAgY29uc3Qgc2NyaXB0dXJlTm90TG9hZGVkRXJyb3IgPSAhYmlibGVKc29uXG4gIGNvbnN0IG1hbmlmZXN0Tm90Rm91bmRFcnJvciA9ICFyZXNvdXJjZT8ubWFuaWZlc3RcbiAgY29uc3QgaW52YWxpZE1hbmlmZXN0RXJyb3IgPSAhdGl0bGUgfHwgIXZlcnNpb24gfHwgIWxhbmd1YWdlSWRcbiAgY29uc3QgZXJyb3IgPSByZWFkeUZvckZldGNoICYmIGluaXRpYWxpemVkICYmICFsb2FkaW5nICYmXG4gICAgKGNvbnRlbnROb3RGb3VuZEVycm9yIHx8IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yIHx8IG1hbmlmZXN0Tm90Rm91bmRFcnJvciB8fCBpbnZhbGlkTWFuaWZlc3RFcnJvcilcbiAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSB7XG4gICAgW0xPQURJTkdfU1RBVEVdOiBsb2FkaW5nLFxuICAgIFtDT05URU5UX05PVF9GT1VORF9FUlJPUl06IGNvbnRlbnROb3RGb3VuZEVycm9yLFxuICAgIFtTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUl06IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yLFxuICAgIFtNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXTogbWFuaWZlc3ROb3RGb3VuZEVycm9yLFxuICAgIFtJTlZBTElEX01BTklGRVNUX0VSUk9SXTogaW52YWxpZE1hbmlmZXN0RXJyb3IsXG4gICAgW0VSUk9SX1NUQVRFXTogZXJyb3IsXG4gICAgW0lOSVRJQUxJWkVEX1NUQVRFXTogaW5pdGlhbGl6ZWQsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVhZHlGb3JGZXRjaCkge1xuICAgICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICAgIHNldFN0YXRlKHsgaW50aWFsaXplZDogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpbml0aWFsaXplZCkge1xuICAgICAgaWYgKGxvYWRpbmcpIHsgLy8gb25jZSBmaXJzdCBsb2FkIGhhcyBiZWd1biwgd2UgYXJlIGluaXRpYWxpemVkXG4gICAgICAgIHNldFN0YXRlKHsgaW50aWFsaXplZDogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2xvYWRpbmcsIHJlYWR5Rm9yRmV0Y2hdKVxuXG4gIGZ1bmN0aW9uIGdldFZlcnNlc0ZvclJlZihyZWYsIGNvbnRlbnRfID0gYm9va09iamVjdHMpIHtcbiAgICBpZiAoY29udGVudF8pIHtcbiAgICAgIGxldCB2ZXJzZXMgPSBnZXRWZXJzZXMoY29udGVudF8uY2hhcHRlcnMsIHJlZilcblxuICAgICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgICB2ZXJzZXMgPSB2ZXJzZXMubWFwKHZlcnNlID0+IHtcbiAgICAgICAgICBpZiAoIHZlcnNlPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgICB2ZXJzZU9iamVjdHNfID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHNfKVxuICAgICAgICAgICAgdmVyc2UudmVyc2VEYXRhLnZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0c19cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHZlcnNlXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2ZXJzZXNcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cyA9IGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IG5ld1ZlcnNlc0ZvclJlZiA9IFtdXG5cbiAgICBpZiAoX2Jvb2tPYmplY3RzKSB7XG4gICAgICBjb25zdCByZWYgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICAgICAgbmV3VmVyc2VzRm9yUmVmID0gZ2V0VmVyc2VzRm9yUmVmKHJlZiwgX2Jvb2tPYmplY3RzKVxuICAgICAgcmV0dXJuIG5ld1ZlcnNlc0ZvclJlZlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKipcbiAgICogZm9yY2UgcmVsb2FkIG9mIGN1cnJlbnQgcmVzb3VyY2VcbiAgICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSBpZ25vcmVTaGEgLSBvcHRpb25hbCBzaGEgdG8gaWdub3JlXG4gICAqL1xuICBmdW5jdGlvbiByZWxvYWRSZXNvdXJjZShpZ25vcmVTaGEpIHtcbiAgICBjb25zdCBfcmVsb2FkUmVzb3VyY2UgPSBfcmVzb3VyY2VSZXN1bHRzPy5hY3Rpb25zLnJlbG9hZFJlc291cmNlXG5cbiAgICBpZiAoX3JlbG9hZFJlc291cmNlKSB7XG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHsgZmV0Y2hlZDogZmFsc2UgfVxuXG4gICAgICBpZiAoaWdub3JlU2hhKSB7IC8vIFRSSUNLWSAtIGlmIHRoZSByZXNwb25zZSB3YXMgZm9yIHRoaXMgc2hhICh3aGljaCB3YXMgdGhlIHByZXZpb3VzIHNoYSkgdGhlbiB3ZSBuZWVkIHRvIGlnbm9yZSBpdFxuICAgICAgICBuZXdTdGF0ZVsnaWdub3JlU2hhJ10gPSBpZ25vcmVTaGFcbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKCBuZXdTdGF0ZSlcbiAgICAgIF9yZWxvYWRSZXNvdXJjZSgpXG4gICAgfVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjdXJyZW50Qm9va1JlZiA9IGZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRCb29rUmVmKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGZldGNoZWQgYm9vayBjaGFuZ2VkIHRvICR7Y3VycmVudEJvb2tSZWZ9LCAke3Jlc291cmNlTGlua199YCwgeyBjb250ZW50LCBmZXRjaFBhcmFtcyB9KVxuICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogbnVsbCB9KVxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gIH0sIFtjdXJyZW50Qm9va1JlZl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGJvb2sgcmVmIGNoYW5nZWQgdG8gJHtfYm9va0lkfSwgJHtyZXNvdXJjZUxpbmtffWApXG4gICAgLy8gQHRzLWlnbm9yZVxuICB9LCBbX2Jvb2tJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IF9ib29rSWQgfHwgJydcbiAgICBjb25zdCBmZXRjaGVkQm9va1NhbWUgPSBmZXRjaGVkQm9vayAmJiAoZmV0Y2hlZEJvb2sgPT09IGV4cGVjdGVkQm9va0lkKVxuICAgIGxldCBfdmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmICghZmV0Y2hlZEJvb2tTYW1lKSB7XG4gICAgICBpZiAoZXhwZWN0ZWRCb29rSWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBleHBlY3RlZCBib29rICR7ZXhwZWN0ZWRCb29rSWR9IGJ1dCBmZXRjaGVkIGJvb2sgd2FzICR7ZmV0Y2hlZEJvb2t9IC0gY2xlYXJpbmdgKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBfYm9va09iamVjdHMgPSBmZXRjaGVkQm9va1NhbWUgPyBib29rT2JqZWN0cyA6IG51bGxcbiAgICAgIF92ZXJzZXNGb3JSZWYgPSB1cGRhdGVWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzKVxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBfYm9va09iamVjdHMgaXMgJHshIV9ib29rT2JqZWN0c30gYW5kIGJvb2tzIGFyZSB0aGUgc2FtZSAke2ZldGNoZWRCb29rfSAtIGNsZWFyaW5nYCwgeyBjb250ZW50LCBmZXRjaFBhcmFtcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdmVyc2VzRm9yUmVmLCB2ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlc0ZvclJlZjogX3ZlcnNlc0ZvclJlZiB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgcmV0dXJuIHtcbiAgICBib29rT2JqZWN0cyxcbiAgICBmZXRjaFJlc3BvbnNlLFxuICAgIGdldFZlcnNlc0ZvclJlZixcbiAgICBtYXRjaGVkVmVyc2UsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlbG9hZFJlc291cmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICByZXNvdXJjZVN0YXR1cyxcbiAgICB0aXRsZSxcbiAgICB1cGRhdGVWZXJzZSxcbiAgICB2ZXJzaW9uLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "single-scripture-rcl",
3
3
  "description": "A React Component Library for Rendering a Single Scripture Resource.",
4
- "version": "3.3.3-beta.80",
4
+ "version": "3.3.3-beta.81",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"