@sapui5/sap.fe.core 1.136.0 → 1.136.1

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.
Files changed (87) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +4 -6
  4. package/src/sap/fe/core/AppComponent.ts +4 -4
  5. package/src/sap/fe/core/CommonUtils.js +41 -14
  6. package/src/sap/fe/core/CommonUtils.ts +47 -16
  7. package/src/sap/fe/core/IRowBindingInterface.js +1 -1
  8. package/src/sap/fe/core/IRowBindingInterface.ts +1 -1
  9. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +4 -1
  10. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +3 -0
  11. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +12 -4
  12. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +10 -3
  13. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +139 -5
  14. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +169 -4
  15. package/src/sap/fe/core/controllerextensions/EditFlow.js +48 -43
  16. package/src/sap/fe/core/controllerextensions/EditFlow.ts +54 -51
  17. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +39 -5
  18. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +38 -1
  19. package/src/sap/fe/core/controllerextensions/InternalRouting.js +12 -13
  20. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +10 -11
  21. package/src/sap/fe/core/controllerextensions/MessageHandler.js +32 -21
  22. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +31 -20
  23. package/src/sap/fe/core/controllerextensions/PageReady.js +6 -3
  24. package/src/sap/fe/core/controllerextensions/PageReady.ts +6 -2
  25. package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -2
  26. package/src/sap/fe/core/controllerextensions/Recommendations.ts +7 -5
  27. package/src/sap/fe/core/controllerextensions/Share.js +6 -6
  28. package/src/sap/fe/core/controllerextensions/Share.ts +3 -4
  29. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +9 -11
  30. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +8 -13
  31. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +9 -9
  32. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +20 -10
  33. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +31 -8
  34. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +46 -9
  35. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +2 -2
  36. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +1 -1
  37. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +20 -18
  38. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +37 -23
  39. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +4 -3
  40. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +6 -1
  41. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.js +6 -3
  42. package/src/sap/fe/core/controllerextensions/editFlow/operations/Operation.ts +11 -3
  43. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +5 -2
  44. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +3 -2
  45. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +2 -2
  46. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +1 -1
  47. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  48. package/src/sap/fe/core/controls/CommandExecution.ts +1 -1
  49. package/src/sap/fe/core/controls/HideFormGroupAutomatically.js +3 -2
  50. package/src/sap/fe/core/controls/HideFormGroupAutomatically.ts +2 -0
  51. package/src/sap/fe/core/converters/controls/Common/Action.js +5 -2
  52. package/src/sap/fe/core/converters/controls/Common/Action.ts +4 -1
  53. package/src/sap/fe/core/converters/controls/Common/Chart.js +7 -2
  54. package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -1
  55. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +41 -58
  56. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +43 -111
  57. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +14 -6
  58. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +23 -6
  59. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +6 -3
  60. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +5 -2
  61. package/src/sap/fe/core/formatters/ValueFormatter.js +21 -1
  62. package/src/sap/fe/core/formatters/ValueFormatter.ts +19 -0
  63. package/src/sap/fe/core/fpm/manifest.json +1 -1
  64. package/src/sap/fe/core/helpers/DeleteHelper.js +2 -2
  65. package/src/sap/fe/core/helpers/DeleteHelper.ts +1 -1
  66. package/src/sap/fe/core/helpers/ModelHelper.js +2 -2
  67. package/src/sap/fe/core/helpers/ModelHelper.ts +1 -1
  68. package/src/sap/fe/core/helpers/PasteHelper.js +2 -2
  69. package/src/sap/fe/core/helpers/PasteHelper.ts +1 -1
  70. package/src/sap/fe/core/helpers/StableIdHelper.js +2 -2
  71. package/src/sap/fe/core/helpers/StableIdHelper.ts +4 -1
  72. package/src/sap/fe/core/helpers/TitleHelper.js +13 -6
  73. package/src/sap/fe/core/helpers/TitleHelper.ts +19 -6
  74. package/src/sap/fe/core/library.js +1 -1
  75. package/src/sap/fe/core/messagebundle.properties +0 -1
  76. package/src/sap/fe/core/rootView/Fcl.controller.js +9 -15
  77. package/src/sap/fe/core/rootView/Fcl.controller.ts +9 -15
  78. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +9 -6
  79. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +7 -6
  80. package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -2
  81. package/src/sap/fe/core/templating/DataModelPathHelper.ts +1 -1
  82. package/src/sap/fe/core/templating/EntitySetHelper.js +60 -48
  83. package/src/sap/fe/core/templating/EntitySetHelper.ts +80 -58
  84. package/src/sap/fe/core/templating/SemanticObjectHelper.js +6 -4
  85. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +5 -5
  86. package/src/sap/fe/core/templating/UIFormatters.js +7 -1
  87. package/src/sap/fe/core/templating/UIFormatters.ts +4 -0
@@ -63,10 +63,29 @@ sap.ui.define(["sap/base/Log", "sap/base/strings/whitespaceReplacer", "sap/base/
63
63
  return 0;
64
64
  };
65
65
  formatStringDimension.__functionName = "sap.fe.core.formatters.ValueFormatter#formatStringDimension";
66
+
67
+ /**
68
+ * Formats the title of the object page header and the item titles.
69
+ * @param firstPart The first part of the title
70
+ * @param secondPart The second part of the title
71
+ * @returns The formatted title
72
+ */
66
73
  const formatTitle = (firstPart, secondPart) => {
67
74
  return secondPart ? formatWithBrackets(whitespaceReplacer(firstPart), whitespaceReplacer(secondPart)) : whitespaceReplacer(firstPart);
68
75
  };
69
76
  formatTitle.__functionName = "sap.fe.core.formatters.ValueFormatter#formatTitle";
77
+
78
+ /**
79
+ * Formats the title of the object page header and the item titles when there's a property navigation or not.
80
+ * @param defaultText The first part of the title
81
+ * @param actualText The full title
82
+ * @returns The formatted title
83
+ */
84
+ const formatCreationTitle = (defaultText, actualText) => {
85
+ const usableText = !!actualText && !actualText.startsWith("T_NEW_OBJECT|") ? actualText : defaultText;
86
+ return formatTitle(usableText);
87
+ };
88
+ formatCreationTitle.__functionName = "sap.fe.core.formatters.ValueFormatter#formatCreationTitle";
70
89
  const formatWithPercentage = sValue => {
71
90
  return sValue !== null && sValue !== undefined ? `${sValue} %` : "";
72
91
  };
@@ -257,6 +276,7 @@ sap.ui.define(["sap/base/Log", "sap/base/strings/whitespaceReplacer", "sap/base/
257
276
  valueFormatters.hasSemanticObjects = hasSemanticObjects;
258
277
  valueFormatters.formatWithBrackets = formatWithBrackets;
259
278
  valueFormatters.formatTitle = formatTitle;
279
+ valueFormatters.formatCreationTitle = formatCreationTitle;
260
280
  valueFormatters.provideDateInstance = provideDateInstance;
261
281
  valueFormatters.formatWithPercentage = formatWithPercentage;
262
282
  valueFormatters.computePercentage = computePercentage;
@@ -272,4 +292,4 @@ sap.ui.define(["sap/base/Log", "sap/base/strings/whitespaceReplacer", "sap/base/
272
292
  ObjectPath.set("sap.fe.core.formatters.ValueFormatter", valueFormatters);
273
293
  return valueFormatters;
274
294
  }, false);
275
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYWxlbmRhclBhdHRlcm5NYXAiLCJ5eXl5IiwiUSIsIk1NIiwid3ciLCJ5eXl5TU1kZCIsInl5eXlNTSIsInZhbHVlRm9ybWF0dGVycyIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwib0FyZ3MiLCJBcnJheSIsIl9rZXkiLCJhcHBseSIsImZvcm1hdFdpdGhCcmFja2V0cyIsImZpcnN0UGFydCIsInNlY29uZFBhcnQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJfX2Z1bmN0aW9uTmFtZSIsImZvcm1hdFN0cmluZ0RpbWVuc2lvbiIsInZhbHVlIiwicGF0dGVybiIsInByb3BlcnR5UGF0aCIsIm1hdGNoZWRWYWx1ZSIsInRvU3RyaW5nIiwibWF0Y2giLCJkYXRlIiwidmFsdWUxIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsInBhcnNlIiwiRGF0ZSIsImdldFRpbWUiLCJMb2ciLCJ3YXJuaW5nIiwiZm9ybWF0VGl0bGUiLCJ3aGl0ZXNwYWNlUmVwbGFjZXIiLCJmb3JtYXRXaXRoUGVyY2VudGFnZSIsInNWYWx1ZSIsInVuZGVmaW5lZCIsImNvbXB1dGVQZXJjZW50YWdlIiwidGFyZ2V0Iiwic1VuaXQiLCJzUGVyY2VudFN0cmluZyIsImlWYWx1ZSIsInBhcnNlRmxvYXQiLCJpVGFyZ2V0IiwiZm9ybWF0Q3JpdGljYWxpdHlWYWx1ZVN0YXRlIiwidmFsIiwic1ZhbHVlU3RhdGUiLCJfZXhwb3J0cyIsImZvcm1hdENyaXRpY2FsaXR5QnV0dG9uVHlwZSIsInNUeXBlIiwiZm9ybWF0Q3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQiLCJzQ29sb3IiLCJmb3JtYXRQcm9ncmVzc0luZGljYXRvclRleHQiLCJ1bml0IiwiaXNDdXJyZW5jeSIsImN1c3RvbVVuaXRzIiwidW5pdFNwbGl0Iiwic3BsaXQiLCJzZWFyY2hVbml0IiwiZGF0ZUZvcm1hdCIsImxvY2FsZURhdGEiLCJvTG9jYWxlRGF0YSIsIm1EYXRhIiwib1Jlc291cmNlTW9kZWwiLCJ1bml0RGlzcGxheWVkIiwiZGF0ZUZpZWxkcyIsImRpc3BsYXlOYW1lIiwidW5pdHMiLCJzaG9ydCIsImZvcm1hdHRlciIsIk51bWJlckZvcm1hdCIsImdldEN1cnJlbmN5SW5zdGFuY2UiLCJjdXN0b21DdXJyZW5jaWVzIiwic2hvd01lYXN1cmUiLCJnZXRVbml0SW5zdGFuY2UiLCJkaXNwbGF5VmFsdWUiLCJmb3JtYXQiLCJkaXNwbGF5VGFyZ2V0IiwiZm9ybWF0UGFzc3dvcmRUZXh0IiwicmVwZWF0IiwiZm9ybWF0VG9LZWVwV2hpdGVzcGFjZSIsInByb3ZpZGVEYXRlSW5zdGFuY2UiLCJpc0RhdGVWYWxpZCIsImlzTmFOIiwiVUk1RGF0ZSIsImdldEluc3RhbmNlIiwiaGFzU2VtYW50aWNPYmplY3RzIiwiX2xlbjIiLCJzZW1hbnRpY09iamVjdHMiLCJfa2V5MiIsImN1cnJlbnRVc2VyU2VtYW50aWNPYmplY3RzTGlzdCIsImR5bmFtaWNTZW1hbnRpY09iamVjdHNSZXNvbHZlZCIsImkiLCJwdXNoIiwiZ2V0UmVhY2hhYmxlU2VtYW50aWNPYmplY3RzU2V0dGluZ3MiLCJzZW1hbnRpY09iamVjdHNMaXN0Iiwic2VtYW50aWNPYmplY3RzRXhwcmVzc2lvbkxpc3QiLCJxdWFsaWZpZXJNYXAiLCJoYXNSZWFjaGFibGVTdGF0aWNTZW1hbnRpY09iamVjdCIsInJlcGxhY2VXaGl0ZXNwYWNlIiwiZ2V0SWNvbkZvck1pbWVUeXBlIiwibWltZVR5cGUiLCJJY29uUG9vbCIsIk9iamVjdFBhdGgiLCJzZXQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlZhbHVlRm9ybWF0dGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHdoaXRlc3BhY2VSZXBsYWNlciBmcm9tIFwic2FwL2Jhc2Uvc3RyaW5ncy93aGl0ZXNwYWNlUmVwbGFjZXJcIjtcbmltcG9ydCBPYmplY3RQYXRoIGZyb20gXCJzYXAvYmFzZS91dGlsL09iamVjdFBhdGhcIjtcbmltcG9ydCB7IGdldFJlYWNoYWJsZVNlbWFudGljT2JqZWN0c1NldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvU2VtYW50aWNPYmplY3RIZWxwZXJcIjtcbmltcG9ydCBJY29uUG9vbCBmcm9tIFwic2FwL3VpL2NvcmUvSWNvblBvb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBVSTVEYXRlIGZyb20gXCJzYXAvdWkvY29yZS9kYXRlL1VJNURhdGVcIjtcbmltcG9ydCBEYXRlRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvRGF0ZUZvcm1hdFwiO1xuaW1wb3J0IE51bWJlckZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L051bWJlckZvcm1hdFwiO1xuXG5jb25zdCBjYWxlbmRhclBhdHRlcm5NYXA6IHsgW2tleTogc3RyaW5nXTogUmVnRXhwIH0gPSB7XG5cdHl5eXk6IC9bMS05XVxcZHszLH18MFxcZHszfS8sXG5cdFE6IC9bMS00XS8sXG5cdE1NOiAvMFsxLTldfDFbMC0yXS8sXG5cdHd3OiAvMFsxLTldfFsxLTRdXFxkfDVbMC0zXS8sXG5cdHl5eXlNTWRkOiAvKD86WzEtOV1cXGR7M318MFxcZHszfSkoMFsxLTldfDFbMC0yXSkoMFsxLTldfFsxMl1cXGR8M1swMV0pLyxcblx0eXl5eU1NOiAvKD86WzEtOV1cXGR7M318MFxcZHszfSkoMFsxLTldfDFbMC0yXSkvLFxuXHRcInl5eXktTU0tZGRcIjogLyg/OlsxLTldXFxkezN9fDBcXGR7M30pLSgwWzEtOV18MVswLTJdKS0oMFsxLTldfFsxMl1cXGR8M1swMV0pL1xufTtcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIHRhYmxlIGZvcm1hdHRlcnMuXG4gKiBAcGFyYW0gdGhpcyBUaGUgY29udGV4dFxuICogQHBhcmFtIHNOYW1lIFRoZSBpbm5lciBmdW5jdGlvbiBuYW1lXG4gKiBAcGFyYW0gb0FyZ3MgVGhlIGlubmVyIGZ1bmN0aW9uIHBhcmFtZXRlcnNcbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBmcm9tIHRoZSBpbm5lciBmdW5jdGlvblxuICovXG5jb25zdCB2YWx1ZUZvcm1hdHRlcnMgPSBmdW5jdGlvbiAodGhpczogb2JqZWN0LCBzTmFtZTogc3RyaW5nLCAuLi5vQXJnczogdW5rbm93bltdKTogdW5rbm93biB7XG5cdGlmICh2YWx1ZUZvcm1hdHRlcnMuaGFzT3duUHJvcGVydHkoc05hbWUpKSB7XG5cdFx0cmV0dXJuICh2YWx1ZUZvcm1hdHRlcnMgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBGdW5jdGlvbj4pW3NOYW1lXS5hcHBseSh0aGlzLCBvQXJncyk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cbn07XG5cbmNvbnN0IGZvcm1hdFdpdGhCcmFja2V0cyA9IChmaXJzdFBhcnQ/OiBzdHJpbmcsIHNlY29uZFBhcnQ/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRpZiAoZmlyc3RQYXJ0ICYmIHNlY29uZFBhcnQpIHtcblx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSE7XG5cdFx0cmV0dXJuIHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0ZPUk1BVF9GT1JfVEVYVF9BUlJBTkdFTUVOVFwiLCBbZmlyc3RQYXJ0LCBzZWNvbmRQYXJ0XSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGZpcnN0UGFydCB8fCBzZWNvbmRQYXJ0IHx8IFwiXCI7XG5cdH1cbn07XG5mb3JtYXRXaXRoQnJhY2tldHMuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXIjZm9ybWF0V2l0aEJyYWNrZXRzXCI7XG5cbmNvbnN0IGZvcm1hdFN0cmluZ0RpbWVuc2lvbiA9ICh2YWx1ZTogdW5rbm93biwgcGF0dGVybjogc3RyaW5nLCBwcm9wZXJ0eVBhdGg6IHN0cmluZyk6IG51bWJlciA9PiB7XG5cdGlmIChwYXR0ZXJuIGluIGNhbGVuZGFyUGF0dGVybk1hcCkge1xuXHRcdGNvbnN0IG1hdGNoZWRWYWx1ZSA9IHZhbHVlPy50b1N0cmluZygpLm1hdGNoKGNhbGVuZGFyUGF0dGVybk1hcFtwYXR0ZXJuXSk7XG5cdFx0aWYgKG1hdGNoZWRWYWx1ZSAmJiBtYXRjaGVkVmFsdWU/Lmxlbmd0aCkge1xuXHRcdFx0Y29uc3QgZGF0ZSA9IG1hdGNoZWRWYWx1ZVswXTtcblx0XHRcdGNvbnN0IHZhbHVlMSA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKHsgcGF0dGVybiB9KS5wYXJzZShkYXRlLCBmYWxzZSwgdHJ1ZSk7XG5cdFx0XHRpZiAodmFsdWUxIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0XHRyZXR1cm4gdmFsdWUxLmdldFRpbWUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiRGF0ZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgXCIgKyBwcm9wZXJ0eVBhdGgpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXHR9XG5cdExvZy53YXJuaW5nKFwiUGF0dGVybiBub3Qgc3VwcG9ydGVkIGZvciBcIiArIHByb3BlcnR5UGF0aCk7XG5cdHJldHVybiAwO1xufTtcbmZvcm1hdFN0cmluZ0RpbWVuc2lvbi5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5WYWx1ZUZvcm1hdHRlciNmb3JtYXRTdHJpbmdEaW1lbnNpb25cIjtcblxuY29uc3QgZm9ybWF0VGl0bGUgPSAoZmlyc3RQYXJ0Pzogc3RyaW5nLCBzZWNvbmRQYXJ0Pzogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0cmV0dXJuIHNlY29uZFBhcnQgPyBmb3JtYXRXaXRoQnJhY2tldHMod2hpdGVzcGFjZVJlcGxhY2VyKGZpcnN0UGFydCksIHdoaXRlc3BhY2VSZXBsYWNlcihzZWNvbmRQYXJ0KSkgOiB3aGl0ZXNwYWNlUmVwbGFjZXIoZmlyc3RQYXJ0KTtcbn07XG5mb3JtYXRUaXRsZS5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5WYWx1ZUZvcm1hdHRlciNmb3JtYXRUaXRsZVwiO1xuXG5jb25zdCBmb3JtYXRXaXRoUGVyY2VudGFnZSA9IChzVmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gc1ZhbHVlICE9PSBudWxsICYmIHNWYWx1ZSAhPT0gdW5kZWZpbmVkID8gYCR7c1ZhbHVlfSAlYCA6IFwiXCI7XG59O1xuZm9ybWF0V2l0aFBlcmNlbnRhZ2UuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXIjZm9ybWF0V2l0aFBlcmNlbnRhZ2VcIjtcblxuY29uc3QgY29tcHV0ZVBlcmNlbnRhZ2UgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciwgdGFyZ2V0OiBzdHJpbmcgfCBudW1iZXIsIHNVbml0Pzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0bGV0IHNQZXJjZW50U3RyaW5nOiBzdHJpbmc7XG5cdC8vQkNQOiAyMzcwMDA4NTQ4IElmIHRoZSBiYXNlIHZhbHVlIGlzIHVuZGVmaW5lZCByZXR1cm4gXCIwXCIgYnkgZGVmYXVsdFxuXHRpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBcIjBcIjtcblx0fVxuXG5cdGNvbnN0IGlWYWx1ZTogbnVtYmVyID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gcGFyc2VGbG9hdCh2YWx1ZSkgOiB2YWx1ZTtcblx0Y29uc3QgaVRhcmdldDogbnVtYmVyID0gdHlwZW9mIHRhcmdldCA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlRmxvYXQodGFyZ2V0KSA6IHRhcmdldDtcblxuXHRpZiAoc1VuaXQgPT09IFwiJVwiKSB7XG5cdFx0aWYgKGlWYWx1ZSA+IDEwMCkge1xuXHRcdFx0c1BlcmNlbnRTdHJpbmcgPSBcIjEwMFwiO1xuXHRcdH0gZWxzZSBpZiAoaVZhbHVlIDw9IDApIHtcblx0XHRcdHNQZXJjZW50U3RyaW5nID0gXCIwXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNQZXJjZW50U3RyaW5nID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUgOiB2YWx1ZT8udG9TdHJpbmcoKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoaVZhbHVlID4gaVRhcmdldCkge1xuXHRcdHNQZXJjZW50U3RyaW5nID0gXCIxMDBcIjtcblx0fSBlbHNlIGlmIChpVmFsdWUgPD0gMCkge1xuXHRcdHNQZXJjZW50U3RyaW5nID0gXCIwXCI7XG5cdH0gZWxzZSB7XG5cdFx0c1BlcmNlbnRTdHJpbmcgPSBpVmFsdWUgJiYgaVRhcmdldCA/ICgoaVZhbHVlIC8gaVRhcmdldCkgKiAxMDApLnRvU3RyaW5nKCkgOiBcIjBcIjtcblx0fVxuXHRyZXR1cm4gc1BlcmNlbnRTdHJpbmc7XG59O1xuY29tcHV0ZVBlcmNlbnRhZ2UuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXIjY29tcHV0ZVBlcmNlbnRhZ2VcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdENyaXRpY2FsaXR5VmFsdWVTdGF0ZSA9ICh2YWw/OiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRsZXQgc1ZhbHVlU3RhdGU6IHN0cmluZztcblx0aWYgKHZhbCA9PT0gXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIiB8fCB2YWwgPT09IFwiMVwiIHx8IHZhbCA9PT0gMSkge1xuXHRcdHNWYWx1ZVN0YXRlID0gXCJFcnJvclwiO1xuXHR9IGVsc2UgaWYgKHZhbCA9PT0gXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIiB8fCB2YWwgPT09IFwiMlwiIHx8IHZhbCA9PT0gMikge1xuXHRcdHNWYWx1ZVN0YXRlID0gXCJXYXJuaW5nXCI7XG5cdH0gZWxzZSBpZiAodmFsID09PSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiIHx8IHZhbCA9PT0gXCIzXCIgfHwgdmFsID09PSAzKSB7XG5cdFx0c1ZhbHVlU3RhdGUgPSBcIlN1Y2Nlc3NcIjtcblx0fSBlbHNlIGlmICh2YWwgPT09IFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCIgfHwgdmFsID09PSBcIjVcIiB8fCB2YWwgPT09IDUpIHtcblx0XHRzVmFsdWVTdGF0ZSA9IFwiSW5mb3JtYXRpb25cIjtcblx0fSBlbHNlIHtcblx0XHRzVmFsdWVTdGF0ZSA9IFwiTm9uZVwiO1xuXHR9XG5cdHJldHVybiBzVmFsdWVTdGF0ZTtcbn07XG5mb3JtYXRDcml0aWNhbGl0eVZhbHVlU3RhdGUuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXIjZm9ybWF0Q3JpdGljYWxpdHlWYWx1ZVN0YXRlXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDcml0aWNhbGl0eUJ1dHRvblR5cGUgPSAodmFsPzogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0bGV0IHNUeXBlOiBzdHJpbmc7XG5cdGlmICh2YWwgPT09IFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIgfHwgdmFsID09PSBcIjFcIiB8fCB2YWwgPT09IDEpIHtcblx0XHRzVHlwZSA9IFwiUmVqZWN0XCI7XG5cdH0gZWxzZSBpZiAodmFsID09PSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiIHx8IHZhbCA9PT0gXCIzXCIgfHwgdmFsID09PSAzKSB7XG5cdFx0c1R5cGUgPSBcIkFjY2VwdFwiO1xuXHR9IGVsc2Uge1xuXHRcdHNUeXBlID0gXCJEZWZhdWx0XCI7XG5cdH1cblx0cmV0dXJuIHNUeXBlO1xufTtcbmZvcm1hdENyaXRpY2FsaXR5QnV0dG9uVHlwZS5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5WYWx1ZUZvcm1hdHRlciNmb3JtYXRDcml0aWNhbGl0eUJ1dHRvblR5cGVcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdENyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0ID0gKHZhbD86IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBzQ29sb3I6IHN0cmluZztcblx0aWYgKHZhbCA9PT0gXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIiB8fCB2YWwgPT09IFwiMVwiIHx8IHZhbCA9PT0gMSkge1xuXHRcdHNDb2xvciA9IFwiRXJyb3JcIjtcblx0fSBlbHNlIGlmICh2YWwgPT09IFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIgfHwgdmFsID09PSBcIjJcIiB8fCB2YWwgPT09IDIpIHtcblx0XHRzQ29sb3IgPSBcIkNyaXRpY2FsXCI7XG5cdH0gZWxzZSBpZiAodmFsID09PSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiIHx8IHZhbCA9PT0gXCIzXCIgfHwgdmFsID09PSAzKSB7XG5cdFx0c0NvbG9yID0gXCJHb29kXCI7XG5cdH0gZWxzZSB7XG5cdFx0c0NvbG9yID0gXCJOZXV0cmFsXCI7XG5cdH1cblx0cmV0dXJuIHNDb2xvcjtcbn07XG5mb3JtYXRDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydC5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5WYWx1ZUZvcm1hdHRlciNmb3JtYXRDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydFwiO1xuXG4vKipcbiAqIEZvcm1hdHMgdGhlIHRleHQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuIFRha2VzIGludG8gYWNjb3VudCB0aGUgZGVjaW1hbHMgYW5kIHByZWNpc2lvbiBvZiB0aGUgdW5pdC5cbiAqIEBwYXJhbSB2YWx1ZSBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgdmFsdWUgZm8gdGhlIHByb2dyZXNzIGluZGljYXRvclxuICogQHBhcmFtIHVuaXQgVGhlIHVuaXQgb2YgdGhlIHByb2dyZXNzIGluZGljYXRvclxuICogQHBhcmFtIGlzQ3VycmVuY3kgV2hldGhlciB3ZSBoYXZlIGEgY3VycmVuY3kgb3IgYSB1b21cbiAqIEBwYXJhbSBjdXN0b21Vbml0cyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgY3VzdG9tIHVuaXRzIG9mIHRoZSBhcHBsaWNhdGlvblxuICogQHBhcmFtIGN1c3RvbVVuaXRzLmN1c3RvbUN1cnJlbmNpZXNcbiAqIEBwYXJhbSBjdXN0b21Vbml0cy5zaG93TWVhc3VyZVxuICogQHJldHVybnMgVGhlIHRyYW5zbGF0ZWQgYW5kIGZvcm1hdHRlZCB0ZXh0IG9mIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3JcbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdFByb2dyZXNzSW5kaWNhdG9yVGV4dCA9IChcblx0dmFsdWU6IHN0cmluZyB8IG51bWJlcixcblx0dGFyZ2V0OiBzdHJpbmcgfCBudW1iZXIsXG5cdHVuaXQ6IHN0cmluZyxcblx0aXNDdXJyZW5jeTogYm9vbGVhbixcblx0Y3VzdG9tVW5pdHM/OiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+XG4pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRpZiAodmFsdWUgJiYgdGFyZ2V0ICYmIHVuaXQpIHtcblx0XHRjb25zdCB1bml0U3BsaXQgPSB1bml0LnNwbGl0KFwiLVwiKTtcblx0XHRjb25zdCBzZWFyY2hVbml0ID0gYCR7dW5pdFNwbGl0WzFdID09PSB1bmRlZmluZWQgPyB1bml0IDogdW5pdFNwbGl0WzFdfS1uYXJyb3dgO1xuXHRcdGNvbnN0IGRhdGVGb3JtYXQgPSBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZSgpO1xuXHRcdGNvbnN0IGxvY2FsZURhdGEgPSAoXG5cdFx0XHRkYXRlRm9ybWF0IGFzIERhdGVGb3JtYXQgJiB7XG5cdFx0XHRcdG9Mb2NhbGVEYXRhOiB7XG5cdFx0XHRcdFx0bURhdGE6IHtcblx0XHRcdFx0XHRcdHVuaXRzPzogeyBzaG9ydDogUmVjb3JkPHN0cmluZywgeyBkaXNwbGF5TmFtZT86IHN0cmluZyB9PiB9O1xuXHRcdFx0XHRcdFx0ZGF0ZUZpZWxkczogUmVjb3JkPHN0cmluZywgeyBkaXNwbGF5TmFtZT86IHN0cmluZyB9Pjtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdCkub0xvY2FsZURhdGEubURhdGE7XG5cdFx0Y29uc3Qgb1Jlc291cmNlTW9kZWwgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKSE7XG5cdFx0bGV0IHVuaXREaXNwbGF5ZWQgPSB1bml0O1xuXHRcdGlmIChsb2NhbGVEYXRhPy5kYXRlRmllbGRzW3NlYXJjaFVuaXRdPy5kaXNwbGF5TmFtZSkge1xuXHRcdFx0dW5pdERpc3BsYXllZCA9IGxvY2FsZURhdGEuZGF0ZUZpZWxkc1tzZWFyY2hVbml0XS5kaXNwbGF5TmFtZSE7XG5cdFx0fSBlbHNlIGlmIChsb2NhbGVEYXRhPy51bml0cz8uc2hvcnRbdW5pdF0/LmRpc3BsYXlOYW1lKSB7XG5cdFx0XHR1bml0RGlzcGxheWVkID0gbG9jYWxlRGF0YS51bml0cy5zaG9ydFt1bml0XS5kaXNwbGF5TmFtZSE7XG5cdFx0fVxuXG5cdFx0bGV0IGZvcm1hdHRlcjtcblx0XHRpZiAoaXNDdXJyZW5jeSkge1xuXHRcdFx0Zm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0LmdldEN1cnJlbmN5SW5zdGFuY2Uoe1xuXHRcdFx0XHRjdXN0b21DdXJyZW5jaWVzOiBjdXN0b21Vbml0cyxcblx0XHRcdFx0c2hvd01lYXN1cmU6IGZhbHNlXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0LmdldFVuaXRJbnN0YW5jZSh7XG5cdFx0XHRcdGN1c3RvbVVuaXRzOiBjdXN0b21Vbml0cyxcblx0XHRcdFx0c2hvd01lYXN1cmU6IGZhbHNlXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0Y29uc3QgZGlzcGxheVZhbHVlID0gZm9ybWF0dGVyLmZvcm1hdCgrdmFsdWUsIHVuaXREaXNwbGF5ZWQpO1xuXHRcdGNvbnN0IGRpc3BsYXlUYXJnZXQgPSBmb3JtYXR0ZXIuZm9ybWF0KCt0YXJnZXQsIHVuaXREaXNwbGF5ZWQpO1xuXG5cdFx0cmV0dXJuIG9SZXNvdXJjZU1vZGVsLmdldFRleHQoXCJUX0NPTU1PTl9QUk9HUkVTU19JTkRJQ0FUT1JfRElTUExBWV9WQUxVRV9XSVRIX1VPTVwiLCBbZGlzcGxheVZhbHVlLCBkaXNwbGF5VGFyZ2V0LCB1bml0RGlzcGxheWVkXSk7XG5cdH1cbn07XG5mb3JtYXRQcm9ncmVzc0luZGljYXRvclRleHQuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXIjZm9ybWF0UHJvZ3Jlc3NJbmRpY2F0b3JUZXh0XCI7XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgdGV4dCBieSByZXBsYWNpbmcgZWFjaCBjaGFyYWN0ZXIgd2l0aCBhICouXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGN1cnJlbnQgdGV4dCBlbnRlcmVkIGluIHRoZSBmaWVsZC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIG9mICogY2hhcmFjdGVycyBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBlbnRlcmVkIHZhbHVlLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0UGFzc3dvcmRUZXh0ID0gKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRpZiAodmFsdWU/Lmxlbmd0aCkge1xuXHRcdHJldHVybiBcIipcIi5yZXBlYXQodmFsdWUubGVuZ3RoKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcbmZvcm1hdFBhc3N3b3JkVGV4dC5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5WYWx1ZUZvcm1hdHRlciNmb3JtYXRQYXNzd29yZFRleHRcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFRvS2VlcFdoaXRlc3BhY2UgPSAodmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiB3aGl0ZXNwYWNlUmVwbGFjZXIodmFsdWUgKyBcIlwiKTtcbn07XG5mb3JtYXRUb0tlZXBXaGl0ZXNwYWNlLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUuY29yZS5mb3JtYXR0ZXJzLlZhbHVlRm9ybWF0dGVyI2Zvcm1hdFRvS2VlcFdoaXRlc3BhY2VcIjtcblxuZnVuY3Rpb24gcHJvdmlkZURhdGVJbnN0YW5jZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSk6IERhdGUgfCBudWxsIHtcblx0aWYgKHZhbHVlKSB7XG5cdFx0Y29uc3QgaXNEYXRlVmFsaWQgPSBuZXcgRGF0ZSh2YWx1ZSk7XG5cdFx0aWYgKCFpc05hTihEYXRlLnBhcnNlKGlzRGF0ZVZhbGlkIGFzIHVua25vd24gYXMgc3RyaW5nKSkpIHtcblx0XHRcdHJldHVybiBVSTVEYXRlLmdldEluc3RhbmNlKHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLndhcm5pbmcoXCJXYXJuaW5nOiBWYWxpZCBkYXRlIGZvcm1hdCBoYXMgdG8gYmUgc2VudCB0byByZXRyaWV2ZSBVSTUgZGF0ZSBpbnN0YW5jZVwiKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5wcm92aWRlRGF0ZUluc3RhbmNlLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUuY29yZS5mb3JtYXR0ZXJzLlZhbHVlRm9ybWF0dGVyI3Byb3ZpZGVEYXRlSW5zdGFuY2VcIjtcblxuLyoqXG4gKiBGb3JtYXQgdGhlIHNlbWFudGljIG9iamVjdHMgYXZhaWxhYmxlIHRvIHVzZXIuXG4gKiBAcGFyYW0gc2VtYW50aWNPYmplY3RzIFRoZSBzZW1hbnRpYyBvYmplY3RzIGZyb20gc2hlbGwgc2VydmljZXMgYW5kIHRoZSBkeW5hbWljIHNlbWFudGljIG9iamVjdHMgcmVzb2x2ZWRcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHVzZXIgaGFzIHNlbWFudGljIG9iamVjdHMgdG8gbmF2aWdhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1NlbWFudGljT2JqZWN0cyA9IGZ1bmN0aW9uICguLi5zZW1hbnRpY09iamVjdHM6IHVua25vd25bXSk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRjb25zdCBjdXJyZW50VXNlclNlbWFudGljT2JqZWN0c0xpc3QgPSBzZW1hbnRpY09iamVjdHNbMF07XG5cdGNvbnN0IGR5bmFtaWNTZW1hbnRpY09iamVjdHNSZXNvbHZlZDogc3RyaW5nW10gPSBbXTtcblx0Zm9yIChsZXQgaSA9IDE7IGkgPCBzZW1hbnRpY09iamVjdHMubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoc2VtYW50aWNPYmplY3RzW2ldKSB7XG5cdFx0XHRkeW5hbWljU2VtYW50aWNPYmplY3RzUmVzb2x2ZWQucHVzaChzZW1hbnRpY09iamVjdHNbaV0gYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblx0aWYgKGR5bmFtaWNTZW1hbnRpY09iamVjdHNSZXNvbHZlZC5sZW5ndGggPiAwKSB7XG5cdFx0cmV0dXJuIGdldFJlYWNoYWJsZVNlbWFudGljT2JqZWN0c1NldHRpbmdzKGN1cnJlbnRVc2VyU2VtYW50aWNPYmplY3RzTGlzdCBhcyBzdHJpbmdbXSwge1xuXHRcdFx0c2VtYW50aWNPYmplY3RzTGlzdDogZHluYW1pY1NlbWFudGljT2JqZWN0c1Jlc29sdmVkLFxuXHRcdFx0c2VtYW50aWNPYmplY3RzRXhwcmVzc2lvbkxpc3Q6IFtdLFxuXHRcdFx0cXVhbGlmaWVyTWFwOiB7fVxuXHRcdH0pLmhhc1JlYWNoYWJsZVN0YXRpY1NlbWFudGljT2JqZWN0O1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59O1xuaGFzU2VtYW50aWNPYmplY3RzLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUuY29yZS5mb3JtYXR0ZXJzLlZhbHVlRm9ybWF0dGVyI2hhc1NlbWFudGljT2JqZWN0c1wiO1xuZXhwb3J0IGNvbnN0IHJlcGxhY2VXaGl0ZXNwYWNlID0gZnVuY3Rpb24gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gd2hpdGVzcGFjZVJlcGxhY2VyKHZhbHVlKTtcbn07XG5yZXBsYWNlV2hpdGVzcGFjZS5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5WYWx1ZUZvcm1hdHRlciNyZXBsYWNlV2hpdGVzcGFjZVwiO1xuXG5jb25zdCBnZXRJY29uRm9yTWltZVR5cGUgPSBmdW5jdGlvbiAobWltZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBJY29uUG9vbC5nZXRJY29uRm9yTWltZVR5cGUobWltZVR5cGUpO1xufTtcbmdldEljb25Gb3JNaW1lVHlwZS5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5TdGFuZGFyZEZvcm1hdHRlciNnZXRJY29uRm9yTWltZVR5cGVcIjtcblxudmFsdWVGb3JtYXR0ZXJzLmhhc1NlbWFudGljT2JqZWN0cyA9IGhhc1NlbWFudGljT2JqZWN0cztcbnZhbHVlRm9ybWF0dGVycy5mb3JtYXRXaXRoQnJhY2tldHMgPSBmb3JtYXRXaXRoQnJhY2tldHM7XG52YWx1ZUZvcm1hdHRlcnMuZm9ybWF0VGl0bGUgPSBmb3JtYXRUaXRsZTtcbnZhbHVlRm9ybWF0dGVycy5wcm92aWRlRGF0ZUluc3RhbmNlID0gcHJvdmlkZURhdGVJbnN0YW5jZTtcbnZhbHVlRm9ybWF0dGVycy5mb3JtYXRXaXRoUGVyY2VudGFnZSA9IGZvcm1hdFdpdGhQZXJjZW50YWdlO1xudmFsdWVGb3JtYXR0ZXJzLmNvbXB1dGVQZXJjZW50YWdlID0gY29tcHV0ZVBlcmNlbnRhZ2U7XG52YWx1ZUZvcm1hdHRlcnMuZm9ybWF0Q3JpdGljYWxpdHlWYWx1ZVN0YXRlID0gZm9ybWF0Q3JpdGljYWxpdHlWYWx1ZVN0YXRlO1xudmFsdWVGb3JtYXR0ZXJzLmZvcm1hdENyaXRpY2FsaXR5QnV0dG9uVHlwZSA9IGZvcm1hdENyaXRpY2FsaXR5QnV0dG9uVHlwZTtcbnZhbHVlRm9ybWF0dGVycy5mb3JtYXRDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCA9IGZvcm1hdENyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0O1xudmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFByb2dyZXNzSW5kaWNhdG9yVGV4dCA9IGZvcm1hdFByb2dyZXNzSW5kaWNhdG9yVGV4dDtcbnZhbHVlRm9ybWF0dGVycy5mb3JtYXRQYXNzd29yZFRleHQgPSBmb3JtYXRQYXNzd29yZFRleHQ7XG52YWx1ZUZvcm1hdHRlcnMuZm9ybWF0VG9LZWVwV2hpdGVzcGFjZSA9IGZvcm1hdFRvS2VlcFdoaXRlc3BhY2U7XG52YWx1ZUZvcm1hdHRlcnMuZm9ybWF0U3RyaW5nRGltZW5zaW9uID0gZm9ybWF0U3RyaW5nRGltZW5zaW9uO1xudmFsdWVGb3JtYXR0ZXJzLmdldEljb25Gb3JNaW1lVHlwZSA9IGdldEljb25Gb3JNaW1lVHlwZTtcbnZhbHVlRm9ybWF0dGVycy5yZXBsYWNlV2hpdGVzcGFjZSA9IHJlcGxhY2VXaGl0ZXNwYWNlO1xuXG5PYmplY3RQYXRoLnNldChcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXJcIiwgdmFsdWVGb3JtYXR0ZXJzKTtcblxuZXhwb3J0IGRlZmF1bHQgdmFsdWVGb3JtYXR0ZXJzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7RUFVQSxNQUFNQSxrQkFBNkMsR0FBRztJQUNyREMsSUFBSSxFQUFFLG9CQUFvQjtJQUMxQkMsQ0FBQyxFQUFFLE9BQU87SUFDVkMsRUFBRSxFQUFFLGVBQWU7SUFDbkJDLEVBQUUsRUFBRSx1QkFBdUI7SUFDM0JDLFFBQVEsRUFBRSwyREFBMkQ7SUFDckVDLE1BQU0sRUFBRSxzQ0FBc0M7SUFDOUMsWUFBWSxFQUFFO0VBQ2YsQ0FBQzs7RUFFRDtBQUNBO0FBQ0E7QUFDQTtB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
295
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYWxlbmRhclBhdHRlcm5NYXAiLCJ5eXl5IiwiUSIsIk1NIiwid3ciLCJ5eXl5TU1kZCIsInl5eXlNTSIsInZhbHVlRm9ybWF0dGVycyIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwib0FyZ3MiLCJBcnJheSIsIl9rZXkiLCJhcHBseSIsImZvcm1hdFdpdGhCcmFja2V0cyIsImZpcnN0UGFydCIsInNlY29uZFBhcnQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsImdldFRleHQiLCJfX2Z1bmN0aW9uTmFtZSIsImZvcm1hdFN0cmluZ0RpbWVuc2lvbiIsInZhbHVlIiwicGF0dGVybiIsInByb3BlcnR5UGF0aCIsIm1hdGNoZWRWYWx1ZSIsInRvU3RyaW5nIiwibWF0Y2giLCJkYXRlIiwidmFsdWUxIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsInBhcnNlIiwiRGF0ZSIsImdldFRpbWUiLCJMb2ciLCJ3YXJuaW5nIiwiZm9ybWF0VGl0bGUiLCJ3aGl0ZXNwYWNlUmVwbGFjZXIiLCJmb3JtYXRDcmVhdGlvblRpdGxlIiwiZGVmYXVsdFRleHQiLCJhY3R1YWxUZXh0IiwidXNhYmxlVGV4dCIsInN0YXJ0c1dpdGgiLCJmb3JtYXRXaXRoUGVyY2VudGFnZSIsInNWYWx1ZSIsInVuZGVmaW5lZCIsImNvbXB1dGVQZXJjZW50YWdlIiwidGFyZ2V0Iiwic1VuaXQiLCJzUGVyY2VudFN0cmluZyIsImlWYWx1ZSIsInBhcnNlRmxvYXQiLCJpVGFyZ2V0IiwiZm9ybWF0Q3JpdGljYWxpdHlWYWx1ZVN0YXRlIiwidmFsIiwic1ZhbHVlU3RhdGUiLCJfZXhwb3J0cyIsImZvcm1hdENyaXRpY2FsaXR5QnV0dG9uVHlwZSIsInNUeXBlIiwiZm9ybWF0Q3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQiLCJzQ29sb3IiLCJmb3JtYXRQcm9ncmVzc0luZGljYXRvclRleHQiLCJ1bml0IiwiaXNDdXJyZW5jeSIsImN1c3RvbVVuaXRzIiwidW5pdFNwbGl0Iiwic3BsaXQiLCJzZWFyY2hVbml0IiwiZGF0ZUZvcm1hdCIsImxvY2FsZURhdGEiLCJvTG9jYWxlRGF0YSIsIm1EYXRhIiwib1Jlc291cmNlTW9kZWwiLCJ1bml0RGlzcGxheWVkIiwiZGF0ZUZpZWxkcyIsImRpc3BsYXlOYW1lIiwidW5pdHMiLCJzaG9ydCIsImZvcm1hdHRlciIsIk51bWJlckZvcm1hdCIsImdldEN1cnJlbmN5SW5zdGFuY2UiLCJjdXN0b21DdXJyZW5jaWVzIiwic2hvd01lYXN1cmUiLCJnZXRVbml0SW5zdGFuY2UiLCJkaXNwbGF5VmFsdWUiLCJmb3JtYXQiLCJkaXNwbGF5VGFyZ2V0IiwiZm9ybWF0UGFzc3dvcmRUZXh0IiwicmVwZWF0IiwiZm9ybWF0VG9LZWVwV2hpdGVzcGFjZSIsInByb3ZpZGVEYXRlSW5zdGFuY2UiLCJpc0RhdGVWYWxpZCIsImlzTmFOIiwiVUk1RGF0ZSIsImdldEluc3RhbmNlIiwiaGFzU2VtYW50aWNPYmplY3RzIiwiX2xlbjIiLCJzZW1hbnRpY09iamVjdHMiLCJfa2V5MiIsImN1cnJlbnRVc2VyU2VtYW50aWNPYmplY3RzTGlzdCIsImR5bmFtaWNTZW1hbnRpY09iamVjdHNSZXNvbHZlZCIsImkiLCJwdXNoIiwiZ2V0UmVhY2hhYmxlU2VtYW50aWNPYmplY3RzU2V0dGluZ3MiLCJzZW1hbnRpY09iamVjdHNMaXN0Iiwic2VtYW50aWNPYmplY3RzRXhwcmVzc2lvbkxpc3QiLCJxdWFsaWZpZXJNYXAiLCJoYXNSZWFjaGFibGVTdGF0aWNTZW1hbnRpY09iamVjdCIsInJlcGxhY2VXaGl0ZXNwYWNlIiwiZ2V0SWNvbkZvck1pbWVUeXBlIiwibWltZVR5cGUiLCJJY29uUG9vbCIsIk9iamVjdFBhdGgiLCJzZXQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlZhbHVlRm9ybWF0dGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHdoaXRlc3BhY2VSZXBsYWNlciBmcm9tIFwic2FwL2Jhc2Uvc3RyaW5ncy93aGl0ZXNwYWNlUmVwbGFjZXJcIjtcbmltcG9ydCBPYmplY3RQYXRoIGZyb20gXCJzYXAvYmFzZS91dGlsL09iamVjdFBhdGhcIjtcbmltcG9ydCB7IGdldFJlYWNoYWJsZVNlbWFudGljT2JqZWN0c1NldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvU2VtYW50aWNPYmplY3RIZWxwZXJcIjtcbmltcG9ydCBJY29uUG9vbCBmcm9tIFwic2FwL3VpL2NvcmUvSWNvblBvb2xcIjtcbmltcG9ydCBMaWJyYXJ5IGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBVSTVEYXRlIGZyb20gXCJzYXAvdWkvY29yZS9kYXRlL1VJNURhdGVcIjtcbmltcG9ydCBEYXRlRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvRGF0ZUZvcm1hdFwiO1xuaW1wb3J0IE51bWJlckZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L051bWJlckZvcm1hdFwiO1xuXG5jb25zdCBjYWxlbmRhclBhdHRlcm5NYXA6IHsgW2tleTogc3RyaW5nXTogUmVnRXhwIH0gPSB7XG5cdHl5eXk6IC9bMS05XVxcZHszLH18MFxcZHszfS8sXG5cdFE6IC9bMS00XS8sXG5cdE1NOiAvMFsxLTldfDFbMC0yXS8sXG5cdHd3OiAvMFsxLTldfFsxLTRdXFxkfDVbMC0zXS8sXG5cdHl5eXlNTWRkOiAvKD86WzEtOV1cXGR7M318MFxcZHszfSkoMFsxLTldfDFbMC0yXSkoMFsxLTldfFsxMl1cXGR8M1swMV0pLyxcblx0eXl5eU1NOiAvKD86WzEtOV1cXGR7M318MFxcZHszfSkoMFsxLTldfDFbMC0yXSkvLFxuXHRcInl5eXktTU0tZGRcIjogLyg/OlsxLTldXFxkezN9fDBcXGR7M30pLSgwWzEtOV18MVswLTJdKS0oMFsxLTldfFsxMl1cXGR8M1swMV0pL1xufTtcblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIHRhYmxlIGZvcm1hdHRlcnMuXG4gKiBAcGFyYW0gdGhpcyBUaGUgY29udGV4dFxuICogQHBhcmFtIHNOYW1lIFRoZSBpbm5lciBmdW5jdGlvbiBuYW1lXG4gKiBAcGFyYW0gb0FyZ3MgVGhlIGlubmVyIGZ1bmN0aW9uIHBhcmFtZXRlcnNcbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBmcm9tIHRoZSBpbm5lciBmdW5jdGlvblxuICovXG5jb25zdCB2YWx1ZUZvcm1hdHRlcnMgPSBmdW5jdGlvbiAodGhpczogb2JqZWN0LCBzTmFtZTogc3RyaW5nLCAuLi5vQXJnczogdW5rbm93bltdKTogdW5rbm93biB7XG5cdGlmICh2YWx1ZUZvcm1hdHRlcnMuaGFzT3duUHJvcGVydHkoc05hbWUpKSB7XG5cdFx0cmV0dXJuICh2YWx1ZUZvcm1hdHRlcnMgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBGdW5jdGlvbj4pW3NOYW1lXS5hcHBseSh0aGlzLCBvQXJncyk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH1cbn07XG5cbmNvbnN0IGZvcm1hdFdpdGhCcmFja2V0cyA9IChmaXJzdFBhcnQ/OiBzdHJpbmcsIHNlY29uZFBhcnQ/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRpZiAoZmlyc3RQYXJ0ICYmIHNlY29uZFBhcnQpIHtcblx0XHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSE7XG5cdFx0cmV0dXJuIHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0ZPUk1BVF9GT1JfVEVYVF9BUlJBTkdFTUVOVFwiLCBbZmlyc3RQYXJ0LCBzZWNvbmRQYXJ0XSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGZpcnN0UGFydCB8fCBzZWNvbmRQYXJ0IHx8IFwiXCI7XG5cdH1cbn07XG5mb3JtYXRXaXRoQnJhY2tldHMuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXIjZm9ybWF0V2l0aEJyYWNrZXRzXCI7XG5cbmNvbnN0IGZvcm1hdFN0cmluZ0RpbWVuc2lvbiA9ICh2YWx1ZTogdW5rbm93biwgcGF0dGVybjogc3RyaW5nLCBwcm9wZXJ0eVBhdGg6IHN0cmluZyk6IG51bWJlciA9PiB7XG5cdGlmIChwYXR0ZXJuIGluIGNhbGVuZGFyUGF0dGVybk1hcCkge1xuXHRcdGNvbnN0IG1hdGNoZWRWYWx1ZSA9IHZhbHVlPy50b1N0cmluZygpLm1hdGNoKGNhbGVuZGFyUGF0dGVybk1hcFtwYXR0ZXJuXSk7XG5cdFx0aWYgKG1hdGNoZWRWYWx1ZSAmJiBtYXRjaGVkVmFsdWU/Lmxlbmd0aCkge1xuXHRcdFx0Y29uc3QgZGF0ZSA9IG1hdGNoZWRWYWx1ZVswXTtcblx0XHRcdGNvbnN0IHZhbHVlMSA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKHsgcGF0dGVybiB9KS5wYXJzZShkYXRlLCBmYWxzZSwgdHJ1ZSk7XG5cdFx0XHRpZiAodmFsdWUxIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdFx0XHRyZXR1cm4gdmFsdWUxLmdldFRpbWUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiRGF0ZSB2YWx1ZSBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgXCIgKyBwcm9wZXJ0eVBhdGgpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXHR9XG5cdExvZy53YXJuaW5nKFwiUGF0dGVybiBub3Qgc3VwcG9ydGVkIGZvciBcIiArIHByb3BlcnR5UGF0aCk7XG5cdHJldHVybiAwO1xufTtcbmZvcm1hdFN0cmluZ0RpbWVuc2lvbi5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5WYWx1ZUZvcm1hdHRlciNmb3JtYXRTdHJpbmdEaW1lbnNpb25cIjtcblxuLyoqXG4gKiBGb3JtYXRzIHRoZSB0aXRsZSBvZiB0aGUgb2JqZWN0IHBhZ2UgaGVhZGVyIGFuZCB0aGUgaXRlbSB0aXRsZXMuXG4gKiBAcGFyYW0gZmlyc3RQYXJ0IFRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB0aXRsZVxuICogQHBhcmFtIHNlY29uZFBhcnQgVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSB0aXRsZVxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCB0aXRsZVxuICovXG5jb25zdCBmb3JtYXRUaXRsZSA9IChmaXJzdFBhcnQ/OiBzdHJpbmcsIHNlY29uZFBhcnQ/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gc2Vjb25kUGFydCA/IGZvcm1hdFdpdGhCcmFja2V0cyh3aGl0ZXNwYWNlUmVwbGFjZXIoZmlyc3RQYXJ0KSwgd2hpdGVzcGFjZVJlcGxhY2VyKHNlY29uZFBhcnQpKSA6IHdoaXRlc3BhY2VSZXBsYWNlcihmaXJzdFBhcnQpO1xufTtcbmZvcm1hdFRpdGxlLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUuY29yZS5mb3JtYXR0ZXJzLlZhbHVlRm9ybWF0dGVyI2Zvcm1hdFRpdGxlXCI7XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgdGl0bGUgb2YgdGhlIG9iamVjdCBwYWdlIGhlYWRlciBhbmQgdGhlIGl0ZW0gdGl0bGVzIHdoZW4gdGhlcmUncyBhIHByb3BlcnR5IG5hdmlnYXRpb24gb3Igbm90LlxuICogQHBhcmFtIGRlZmF1bHRUZXh0IFRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB0aXRsZVxuICogQHBhcmFtIGFjdHVhbFRleHQgVGhlIGZ1bGwgdGl0bGVcbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgdGl0bGVcbiAqL1xuY29uc3QgZm9ybWF0Q3JlYXRpb25UaXRsZSA9IChkZWZhdWx0VGV4dD86IHN0cmluZywgYWN0dWFsVGV4dD86IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdGNvbnN0IHVzYWJsZVRleHQgPSAhIWFjdHVhbFRleHQgJiYgIWFjdHVhbFRleHQuc3RhcnRzV2l0aChcIlRfTkVXX09CSkVDVHxcIikgPyBhY3R1YWxUZXh0IDogZGVmYXVsdFRleHQ7XG5cdHJldHVybiBmb3JtYXRUaXRsZSh1c2FibGVUZXh0KTtcbn07XG5mb3JtYXRDcmVhdGlvblRpdGxlLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUuY29yZS5mb3JtYXR0ZXJzLlZhbHVlRm9ybWF0dGVyI2Zvcm1hdENyZWF0aW9uVGl0bGVcIjtcblxuY29uc3QgZm9ybWF0V2l0aFBlcmNlbnRhZ2UgPSAoc1ZhbHVlPzogc3RyaW5nKTogc3RyaW5nID0+IHtcblx0cmV0dXJuIHNWYWx1ZSAhPT0gbnVsbCAmJiBzVmFsdWUgIT09IHVuZGVmaW5lZCA/IGAke3NWYWx1ZX0gJWAgOiBcIlwiO1xufTtcbmZvcm1hdFdpdGhQZXJjZW50YWdlLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUuY29yZS5mb3JtYXR0ZXJzLlZhbHVlRm9ybWF0dGVyI2Zvcm1hdFdpdGhQZXJjZW50YWdlXCI7XG5cbmNvbnN0IGNvbXB1dGVQZXJjZW50YWdlID0gKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIHRhcmdldDogc3RyaW5nIHwgbnVtYmVyLCBzVW5pdD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBzUGVyY2VudFN0cmluZzogc3RyaW5nO1xuXHQvL0JDUDogMjM3MDAwODU0OCBJZiB0aGUgYmFzZSB2YWx1ZSBpcyB1bmRlZmluZWQgcmV0dXJuIFwiMFwiIGJ5IGRlZmF1bHRcblx0aWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gXCIwXCI7XG5cdH1cblxuXHRjb25zdCBpVmFsdWU6IG51bWJlciA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlRmxvYXQodmFsdWUpIDogdmFsdWU7XG5cdGNvbnN0IGlUYXJnZXQ6IG51bWJlciA9IHR5cGVvZiB0YXJnZXQgPT09IFwic3RyaW5nXCIgPyBwYXJzZUZsb2F0KHRhcmdldCkgOiB0YXJnZXQ7XG5cblx0aWYgKHNVbml0ID09PSBcIiVcIikge1xuXHRcdGlmIChpVmFsdWUgPiAxMDApIHtcblx0XHRcdHNQZXJjZW50U3RyaW5nID0gXCIxMDBcIjtcblx0XHR9IGVsc2UgaWYgKGlWYWx1ZSA8PSAwKSB7XG5cdFx0XHRzUGVyY2VudFN0cmluZyA9IFwiMFwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzUGVyY2VudFN0cmluZyA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWU/LnRvU3RyaW5nKCk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGlWYWx1ZSA+IGlUYXJnZXQpIHtcblx0XHRzUGVyY2VudFN0cmluZyA9IFwiMTAwXCI7XG5cdH0gZWxzZSBpZiAoaVZhbHVlIDw9IDApIHtcblx0XHRzUGVyY2VudFN0cmluZyA9IFwiMFwiO1xuXHR9IGVsc2Uge1xuXHRcdHNQZXJjZW50U3RyaW5nID0gaVZhbHVlICYmIGlUYXJnZXQgPyAoKGlWYWx1ZSAvIGlUYXJnZXQpICogMTAwKS50b1N0cmluZygpIDogXCIwXCI7XG5cdH1cblx0cmV0dXJuIHNQZXJjZW50U3RyaW5nO1xufTtcbmNvbXB1dGVQZXJjZW50YWdlLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUuY29yZS5mb3JtYXR0ZXJzLlZhbHVlRm9ybWF0dGVyI2NvbXB1dGVQZXJjZW50YWdlXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDcml0aWNhbGl0eVZhbHVlU3RhdGUgPSAodmFsPzogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0bGV0IHNWYWx1ZVN0YXRlOiBzdHJpbmc7XG5cdGlmICh2YWwgPT09IFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIgfHwgdmFsID09PSBcIjFcIiB8fCB2YWwgPT09IDEpIHtcblx0XHRzVmFsdWVTdGF0ZSA9IFwiRXJyb3JcIjtcblx0fSBlbHNlIGlmICh2YWwgPT09IFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIgfHwgdmFsID09PSBcIjJcIiB8fCB2YWwgPT09IDIpIHtcblx0XHRzVmFsdWVTdGF0ZSA9IFwiV2FybmluZ1wiO1xuXHR9IGVsc2UgaWYgKHZhbCA9PT0gXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIiB8fCB2YWwgPT09IFwiM1wiIHx8IHZhbCA9PT0gMykge1xuXHRcdHNWYWx1ZVN0YXRlID0gXCJTdWNjZXNzXCI7XG5cdH0gZWxzZSBpZiAodmFsID09PSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9JbmZvcm1hdGlvblwiIHx8IHZhbCA9PT0gXCI1XCIgfHwgdmFsID09PSA1KSB7XG5cdFx0c1ZhbHVlU3RhdGUgPSBcIkluZm9ybWF0aW9uXCI7XG5cdH0gZWxzZSB7XG5cdFx0c1ZhbHVlU3RhdGUgPSBcIk5vbmVcIjtcblx0fVxuXHRyZXR1cm4gc1ZhbHVlU3RhdGU7XG59O1xuZm9ybWF0Q3JpdGljYWxpdHlWYWx1ZVN0YXRlLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUuY29yZS5mb3JtYXR0ZXJzLlZhbHVlRm9ybWF0dGVyI2Zvcm1hdENyaXRpY2FsaXR5VmFsdWVTdGF0ZVwiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3JpdGljYWxpdHlCdXR0b25UeXBlID0gKHZhbD86IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGxldCBzVHlwZTogc3RyaW5nO1xuXHRpZiAodmFsID09PSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiIHx8IHZhbCA9PT0gXCIxXCIgfHwgdmFsID09PSAxKSB7XG5cdFx0c1R5cGUgPSBcIlJlamVjdFwiO1xuXHR9IGVsc2UgaWYgKHZhbCA9PT0gXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIiB8fCB2YWwgPT09IFwiM1wiIHx8IHZhbCA9PT0gMykge1xuXHRcdHNUeXBlID0gXCJBY2NlcHRcIjtcblx0fSBlbHNlIHtcblx0XHRzVHlwZSA9IFwiRGVmYXVsdFwiO1xuXHR9XG5cdHJldHVybiBzVHlwZTtcbn07XG5mb3JtYXRDcml0aWNhbGl0eUJ1dHRvblR5cGUuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXIjZm9ybWF0Q3JpdGljYWxpdHlCdXR0b25UeXBlXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCA9ICh2YWw/OiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRsZXQgc0NvbG9yOiBzdHJpbmc7XG5cdGlmICh2YWwgPT09IFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIgfHwgdmFsID09PSBcIjFcIiB8fCB2YWwgPT09IDEpIHtcblx0XHRzQ29sb3IgPSBcIkVycm9yXCI7XG5cdH0gZWxzZSBpZiAodmFsID09PSBcIlVJLkNyaXRpY2FsaXR5VHlwZS9Dcml0aWNhbFwiIHx8IHZhbCA9PT0gXCIyXCIgfHwgdmFsID09PSAyKSB7XG5cdFx0c0NvbG9yID0gXCJDcml0aWNhbFwiO1xuXHR9IGVsc2UgaWYgKHZhbCA9PT0gXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIiB8fCB2YWwgPT09IFwiM1wiIHx8IHZhbCA9PT0gMykge1xuXHRcdHNDb2xvciA9IFwiR29vZFwiO1xuXHR9IGVsc2Uge1xuXHRcdHNDb2xvciA9IFwiTmV1dHJhbFwiO1xuXHR9XG5cdHJldHVybiBzQ29sb3I7XG59O1xuZm9ybWF0Q3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXIjZm9ybWF0Q3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnRcIjtcblxuLyoqXG4gKiBGb3JtYXRzIHRoZSB0ZXh0IHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiBUYWtlcyBpbnRvIGFjY291bnQgdGhlIGRlY2ltYWxzIGFuZCBwcmVjaXNpb24gb2YgdGhlIHVuaXQuXG4gKiBAcGFyYW0gdmFsdWUgVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHByb2dyZXNzIGluZGljYXRvclxuICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IHZhbHVlIGZvIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3JcbiAqIEBwYXJhbSB1bml0IFRoZSB1bml0IG9mIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3JcbiAqIEBwYXJhbSBpc0N1cnJlbmN5IFdoZXRoZXIgd2UgaGF2ZSBhIGN1cnJlbmN5IG9yIGEgdW9tXG4gKiBAcGFyYW0gY3VzdG9tVW5pdHMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1c3RvbSB1bml0cyBvZiB0aGUgYXBwbGljYXRpb25cbiAqIEBwYXJhbSBjdXN0b21Vbml0cy5jdXN0b21DdXJyZW5jaWVzXG4gKiBAcGFyYW0gY3VzdG9tVW5pdHMuc2hvd01lYXN1cmVcbiAqIEByZXR1cm5zIFRoZSB0cmFuc2xhdGVkIGFuZCBmb3JtYXR0ZWQgdGV4dCBvZiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXRQcm9ncmVzc0luZGljYXRvclRleHQgPSAoXG5cdHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsXG5cdHRhcmdldDogc3RyaW5nIHwgbnVtYmVyLFxuXHR1bml0OiBzdHJpbmcsXG5cdGlzQ3VycmVuY3k6IGJvb2xlYW4sXG5cdGN1c3RvbVVuaXRzPzogUmVjb3JkPHN0cmluZywgb2JqZWN0PlxuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0aWYgKHZhbHVlICYmIHRhcmdldCAmJiB1bml0KSB7XG5cdFx0Y29uc3QgdW5pdFNwbGl0ID0gdW5pdC5zcGxpdChcIi1cIik7XG5cdFx0Y29uc3Qgc2VhcmNoVW5pdCA9IGAke3VuaXRTcGxpdFsxXSA9PT0gdW5kZWZpbmVkID8gdW5pdCA6IHVuaXRTcGxpdFsxXX0tbmFycm93YDtcblx0XHRjb25zdCBkYXRlRm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoKTtcblx0XHRjb25zdCBsb2NhbGVEYXRhID0gKFxuXHRcdFx0ZGF0ZUZvcm1hdCBhcyBEYXRlRm9ybWF0ICYge1xuXHRcdFx0XHRvTG9jYWxlRGF0YToge1xuXHRcdFx0XHRcdG1EYXRhOiB7XG5cdFx0XHRcdFx0XHR1bml0cz86IHsgc2hvcnQ6IFJlY29yZDxzdHJpbmcsIHsgZGlzcGxheU5hbWU/OiBzdHJpbmcgfT4gfTtcblx0XHRcdFx0XHRcdGRhdGVGaWVsZHM6IFJlY29yZDxzdHJpbmcsIHsgZGlzcGxheU5hbWU/OiBzdHJpbmcgfT47XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHQpLm9Mb2NhbGVEYXRhLm1EYXRhO1xuXHRcdGNvbnN0IG9SZXNvdXJjZU1vZGVsID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5tYWNyb3NcIikhO1xuXHRcdGxldCB1bml0RGlzcGxheWVkID0gdW5pdDtcblx0XHRpZiAobG9jYWxlRGF0YT8uZGF0ZUZpZWxkc1tzZWFyY2hVbml0XT8uZGlzcGxheU5hbWUpIHtcblx0XHRcdHVuaXREaXNwbGF5ZWQgPSBsb2NhbGVEYXRhLmRhdGVGaWVsZHNbc2VhcmNoVW5pdF0uZGlzcGxheU5hbWUhO1xuXHRcdH0gZWxzZSBpZiAobG9jYWxlRGF0YT8udW5pdHM/LnNob3J0W3VuaXRdPy5kaXNwbGF5TmFtZSkge1xuXHRcdFx0dW5pdERpc3BsYXllZCA9IGxvY2FsZURhdGEudW5pdHMuc2hvcnRbdW5pdF0uZGlzcGxheU5hbWUhO1xuXHRcdH1cblxuXHRcdGxldCBmb3JtYXR0ZXI7XG5cdFx0aWYgKGlzQ3VycmVuY3kpIHtcblx0XHRcdGZvcm1hdHRlciA9IE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKHtcblx0XHRcdFx0Y3VzdG9tQ3VycmVuY2llczogY3VzdG9tVW5pdHMsXG5cdFx0XHRcdHNob3dNZWFzdXJlOiBmYWxzZVxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvcm1hdHRlciA9IE51bWJlckZvcm1hdC5nZXRVbml0SW5zdGFuY2Uoe1xuXHRcdFx0XHRjdXN0b21Vbml0czogY3VzdG9tVW5pdHMsXG5cdFx0XHRcdHNob3dNZWFzdXJlOiBmYWxzZVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGNvbnN0IGRpc3BsYXlWYWx1ZSA9IGZvcm1hdHRlci5mb3JtYXQoK3ZhbHVlLCB1bml0RGlzcGxheWVkKTtcblx0XHRjb25zdCBkaXNwbGF5VGFyZ2V0ID0gZm9ybWF0dGVyLmZvcm1hdCgrdGFyZ2V0LCB1bml0RGlzcGxheWVkKTtcblxuXHRcdHJldHVybiBvUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiVF9DT01NT05fUFJPR1JFU1NfSU5ESUNBVE9SX0RJU1BMQVlfVkFMVUVfV0lUSF9VT01cIiwgW2Rpc3BsYXlWYWx1ZSwgZGlzcGxheVRhcmdldCwgdW5pdERpc3BsYXllZF0pO1xuXHR9XG59O1xuZm9ybWF0UHJvZ3Jlc3NJbmRpY2F0b3JUZXh0Ll9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUuY29yZS5mb3JtYXR0ZXJzLlZhbHVlRm9ybWF0dGVyI2Zvcm1hdFByb2dyZXNzSW5kaWNhdG9yVGV4dFwiO1xuXG4vKipcbiAqIEZvcm1hdHMgdGhlIHRleHQgYnkgcmVwbGFjaW5nIGVhY2ggY2hhcmFjdGVyIHdpdGggYSAqLlxuICogQHBhcmFtIHZhbHVlIFRoZSBjdXJyZW50IHRleHQgZW50ZXJlZCBpbiB0aGUgZmllbGQuXG4gKiBAcmV0dXJucyBBIHN0cmluZyBvZiAqIGNoYXJhY3RlcnMgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGUgZW50ZXJlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdFBhc3N3b3JkVGV4dCA9ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0aWYgKHZhbHVlPy5sZW5ndGgpIHtcblx0XHRyZXR1cm4gXCIqXCIucmVwZWF0KHZhbHVlLmxlbmd0aCk7XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5mb3JtYXRQYXNzd29yZFRleHQuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXIjZm9ybWF0UGFzc3dvcmRUZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUb0tlZXBXaGl0ZXNwYWNlID0gKHZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgbnVtYmVyKTogc3RyaW5nID0+IHtcblx0cmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgPyBcIlwiIDogd2hpdGVzcGFjZVJlcGxhY2VyKHZhbHVlICsgXCJcIik7XG59O1xuZm9ybWF0VG9LZWVwV2hpdGVzcGFjZS5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5WYWx1ZUZvcm1hdHRlciNmb3JtYXRUb0tlZXBXaGl0ZXNwYWNlXCI7XG5cbmZ1bmN0aW9uIHByb3ZpZGVEYXRlSW5zdGFuY2UodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUpOiBEYXRlIHwgbnVsbCB7XG5cdGlmICh2YWx1ZSkge1xuXHRcdGNvbnN0IGlzRGF0ZVZhbGlkID0gbmV3IERhdGUodmFsdWUpO1xuXHRcdGlmICghaXNOYU4oRGF0ZS5wYXJzZShpc0RhdGVWYWxpZCBhcyB1bmtub3duIGFzIHN0cmluZykpKSB7XG5cdFx0XHRyZXR1cm4gVUk1RGF0ZS5nZXRJbnN0YW5jZSh2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy53YXJuaW5nKFwiV2FybmluZzogVmFsaWQgZGF0ZSBmb3JtYXQgaGFzIHRvIGJlIHNlbnQgdG8gcmV0cmlldmUgVUk1IGRhdGUgaW5zdGFuY2VcIik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBudWxsO1xufVxucHJvdmlkZURhdGVJbnN0YW5jZS5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5WYWx1ZUZvcm1hdHRlciNwcm92aWRlRGF0ZUluc3RhbmNlXCI7XG5cbi8qKlxuICogRm9ybWF0IHRoZSBzZW1hbnRpYyBvYmplY3RzIGF2YWlsYWJsZSB0byB1c2VyLlxuICogQHBhcmFtIHNlbWFudGljT2JqZWN0cyBUaGUgc2VtYW50aWMgb2JqZWN0cyBmcm9tIHNoZWxsIHNlcnZpY2VzIGFuZCB0aGUgZHluYW1pYyBzZW1hbnRpYyBvYmplY3RzIHJlc29sdmVkXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB1c2VyIGhhcyBzZW1hbnRpYyBvYmplY3RzIHRvIG5hdmlnYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNTZW1hbnRpY09iamVjdHMgPSBmdW5jdGlvbiAoLi4uc2VtYW50aWNPYmplY3RzOiB1bmtub3duW10pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgY3VycmVudFVzZXJTZW1hbnRpY09iamVjdHNMaXN0ID0gc2VtYW50aWNPYmplY3RzWzBdO1xuXHRjb25zdCBkeW5hbWljU2VtYW50aWNPYmplY3RzUmVzb2x2ZWQ6IHN0cmluZ1tdID0gW107XG5cdGZvciAobGV0IGkgPSAxOyBpIDwgc2VtYW50aWNPYmplY3RzLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKHNlbWFudGljT2JqZWN0c1tpXSkge1xuXHRcdFx0ZHluYW1pY1NlbWFudGljT2JqZWN0c1Jlc29sdmVkLnB1c2goc2VtYW50aWNPYmplY3RzW2ldIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cdGlmIChkeW5hbWljU2VtYW50aWNPYmplY3RzUmVzb2x2ZWQubGVuZ3RoID4gMCkge1xuXHRcdHJldHVybiBnZXRSZWFjaGFibGVTZW1hbnRpY09iamVjdHNTZXR0aW5ncyhjdXJyZW50VXNlclNlbWFudGljT2JqZWN0c0xpc3QgYXMgc3RyaW5nW10sIHtcblx0XHRcdHNlbWFudGljT2JqZWN0c0xpc3Q6IGR5bmFtaWNTZW1hbnRpY09iamVjdHNSZXNvbHZlZCxcblx0XHRcdHNlbWFudGljT2JqZWN0c0V4cHJlc3Npb25MaXN0OiBbXSxcblx0XHRcdHF1YWxpZmllck1hcDoge31cblx0XHR9KS5oYXNSZWFjaGFibGVTdGF0aWNTZW1hbnRpY09iamVjdDtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcbmhhc1NlbWFudGljT2JqZWN0cy5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLmNvcmUuZm9ybWF0dGVycy5WYWx1ZUZvcm1hdHRlciNoYXNTZW1hbnRpY09iamVjdHNcIjtcbmV4cG9ydCBjb25zdCByZXBsYWNlV2hpdGVzcGFjZSA9IGZ1bmN0aW9uICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIHdoaXRlc3BhY2VSZXBsYWNlcih2YWx1ZSk7XG59O1xucmVwbGFjZVdoaXRlc3BhY2UuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuVmFsdWVGb3JtYXR0ZXIjcmVwbGFjZVdoaXRlc3BhY2VcIjtcblxuY29uc3QgZ2V0SWNvbkZvck1pbWVUeXBlID0gZnVuY3Rpb24gKG1pbWVUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gSWNvblBvb2wuZ2V0SWNvbkZvck1pbWVUeXBlKG1pbWVUeXBlKTtcbn07XG5nZXRJY29uRm9yTWltZVR5cGUuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5jb3JlLmZvcm1hdHRlcnMuU3RhbmRhcmRGb3JtYXR0ZXIjZ2V0SWNvbkZvck1pbWVUeXBlXCI7XG5cbnZhbHVlRm9ybWF0dGVycy5oYXNTZW1hbnRpY09iamVjdHMgPSBoYXNTZW1hbnRpY09iamVjdHM7XG52YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzID0gZm9ybWF0V2l0aEJyYWNrZXRzO1xudmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFRpdGxlID0gZm9ybWF0VGl0bGU7XG52YWx1ZUZvcm1hdHRlcnMuZm9ybWF0Q3JlYXRpb25UaXRsZSA9IGZvcm1hdENyZWF0aW9uVGl0bGU7XG52YWx1ZUZvcm1hdHRlcnMucHJvdmlkZURhdGVJbnN0YW5jZSA9IHByb3ZpZGVEYXRlSW5zdGFuY2U7XG52YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aFBlcmNlbnRhZ2UgPSBmb3JtYXRXaXRoUGVyY2VudGFnZTtcbnZhbHVlRm9ybWF0dGVycy5jb21wdXRlUGVyY2VudGFnZSA9IGNvbXB1dGVQZXJjZW50YWdlO1xudmFsdWVGb3JtYXR0ZXJzLmZvcm1hdENyaXRpY2FsaXR5VmFsdWVTdGF0ZSA9IGZvcm1hdENyaXRpY2FsaXR5VmFsdWVTdGF0ZTtcbnZhbHVlRm9ybWF0dGVycy5mb3JtYXRDcml0aWNhbGl0eUJ1dHRvblR5cGUgPSBmb3JtYXRDcml0aWNhbGl0eUJ1dHRvblR5cGU7XG52YWx1ZUZvcm1hdHRlcnMuZm9ybWF0Q3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQgPSBmb3JtYXRDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydDtcbnZhbHVlRm9ybWF0dGVycy5mb3JtYXRQcm9ncmVzc0luZGljYXRvclRleHQgPSBmb3JtYXRQcm9ncmVzc0luZGljYXRvclRleHQ7XG52YWx1ZUZvcm1hdHRlcnMuZm9ybWF0UGFzc3dvcmRUZXh0ID0gZm9ybWF0UGFzc3dvcmRUZXh0O1xudmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFRvS2VlcFdoaXRlc3BhY2UgPSBmb3JtYXRUb0tlZXBXaGl0ZXNwYWNlO1xudmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFN0cmluZ0RpbWVuc2lvbiA9IGZvcm1hdFN0cmluZ0RpbWVuc2lvbjtcbnZhbHVlRm9ybWF0dGVycy5nZXRJY29uRm9yTWltZVR5cGUgPSBnZXRJY29uRm9yTWltZVR5cGU7XG52YWx1ZUZvcm1hdHRlcnMucmVwbGFjZVdoaXRlc3BhY2UgPSByZXBsYWNlV2hpdGVzcGFjZTtcblxuT2JqZWN0UGF0aC5zZXQoXCJzYXAuZmUuY29yZS5mb3JtYXR0ZXJzLlZhbHVlRm9ybWF0dGVyXCIsIHZhbHVlRm9ybWF0dGVycyk7XG5cbmV4cG9ydCBkZWZhdWx0IHZhbHVlRm9ybWF0dGVycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0VBVUEsTUFBTUEsa0JBQTZDLEdBQUc7SUFDckRDLElBQUksRUFBRSxvQkFBb0I7SUFDMUJDLENBQUMsRUFBRSxPQUFPO0lBQ1ZDLEVBQUUsRUFBRSxlQUFlO0lBQ25CQyxFQUFFLEVBQUUsdUJBQXVCO0lBQzNCQyxRQUFRLEVBQUUsMkRBQTJEO0lBQ3JFQyxNQUFNLEVBQUUsc0NBQXNDO0lBQzlDLFlBQVksRUFBRTtFQUNmLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNQyxlQUFlLEdBQUcsU0FBQUEsQ0FBd0JDLEtBQWEsRUFBZ0M7SUFDNUYsSUFBSUQsZUFBZSxDQUFDRSxjQUFjLENBQUNELEtBQUssQ0FBQyxFQUFFO01BQUEsU0FBQUUsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFEc0JDLEtBQUssT0FBQUMsS0FBQSxDQUFBSixJQUFBLE9BQUFBLElBQUEsV0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtRQUFMRixLQUFLLENBQUFFLElBQUEsUUFBQUosU0FBQSxDQUFBSSxJQUFBO01BQUE7TUFFckUsT0FBUVIsZUFBZSxDQUF5Q0MsS0FBSyxDQUFDLENBQUNRLEtBQUssQ0FBQyxJQUFJLEVBQUVILEtBQUssQ0FBQztJQUMxRixDQUFDLE1BQU07TUFDTixPQUFPLEVBQUU7SUFDVjtFQUNELENBQUM7RUFFRCxNQUFNSSxrQkFBa0IsR0FBR0EsQ0FBQ0MsU0FBa0IsRUFBRUMsVUFBbUIsS0FBYTtJQUMvRSxJQUFJRCxTQUFTLElBQUlDLFVBQVUsRUFBRTtNQUM1QixNQUFNQyxjQUFjLEdBQUdDLE9BQU8sQ0FBQ0Msb0JBQW9CLENBQUMsYUFBYSxDQUFFO01BQ25FLE9BQU9GLGNBQWMsQ0FBQ0csT0FBTyxDQUFDLCtCQUErQixFQUFFLENBQUNMLFNBQVMsRUFBRUMsVUFBVSxDQUFDLENBQUM7SUFDeEYsQ0FBQyxNQUFNO01BQ04sT0FBT0QsU0FBUyxJQUFJQyxVQUFVLElBQUksRUFBRTtJQUNyQztFQUNELENBQUM7RUFDREYsa0JBQWtCLENBQUNPLGNBQWMsR0FBRywwREFBMEQ7RUFFOUYsTUFBTUMscUJBQXFCLEdBQUdBLENBQUNDLEtBQWMsRUFBRUMsT0FBZSxFQUFFQyxZQUFvQixLQUFhO0lBQ2hHLElBQUlELE9BQU8sSUFBSTNCLGtCQUFrQixFQUFFO01BQ2xDLE1BQU02QixZQUFZLEdBQUdILEtBQUssRUFBRUksUUFBUSxDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFDL0Isa0JBQWtCLENBQUMyQixPQUFPLENBQUMsQ0FBQztNQUN6RSxJQUFJRSxZQUFZLElBQUlBLFlBQVksRUFBRWpCLE1BQU0sRUFBRTtRQUN6QyxNQUFNb0IsSUFBSSxHQUFHSCxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQzVCLE1BQU1JLE1BQU0sR0FBR0MsVUFBVSxDQUFDQyxlQUFlLENBQUM7VUFBRVI7UUFBUSxDQUFDLENBQUMsQ0FBQ1MsS0FBSyxDQUFDSixJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztRQUMvRSxJQUFJQyxNQUFNLFlBQVlJLElBQUksRUFBRTtVQUMzQixPQUFPSixNQUFNLENBQUNLLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLENBQUMsTUFBTTtVQUNOQyxHQUFHLENBQUNDLE9BQU8sQ0FBQyx5Q0FBeUMsR0FBR1osWUFBWSxDQUFDO1FBQ3RFO1FBQ0EsT0FBTyxDQUFDO01BQ1Q7SUFDRDtJQUNBVyxHQUFHLENBQUNDLE9BQU8sQ0FBQyw0QkFBNEIsR0FBR1osWUFBWSxDQUFDO0lBQ3hELE9BQU8sQ0FBQztFQUNULENBQUM7RUFDREgscUJBQXFCLENBQUNELGNBQWMsR0FBRyw2REFBNkQ7O0VBRXBHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLE1BQU1pQixXQUFXLEdBQUdBLENBQUN2QixTQUFrQixFQUFFQyxVQUFtQixLQUFhO0lBQ3hFLE9BQU9BLFVBQVUsR0FBR0Ysa0JBQWtCLENBQUN5QixrQkFBa0IsQ0FBQ3hCLFNBQVMsQ0FBQyxFQUFFd0Isa0JBQWtCLENBQUN2QixVQUFVLENBQUMsQ0FBQyxHQUFHdUIsa0JBQWtCLENBQUN4QixTQUFTLENBQUM7RUFDdEksQ0FBQztFQUNEdUIsV0FBVyxDQUFDakIsY0FBYyxHQUFHLG1EQUFtRDs7RUFFaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsTUFBTW1CLG1CQUFtQixHQUFHQSxDQUFDQyxXQUFvQixFQUFFQyxVQUFtQixLQUFhO0lBQ2xGLE1BQU1DLFVBQVUsR0FBRyxDQUFDLENBQUNELFVBQVUsSUFBSSxDQUFDQSxVQUFVLENBQUNFLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBR0YsVUFBVSxHQUFHRCxXQUFXO0lBQ3JHLE9BQU9ILFdBQVcsQ0FBQ0ssVUFBVSxDQUFDO0VBQy9CLENBQUM7RUFDREgsbUJBQW1CLENBQUNuQixjQUFjLEdBQUcsMkRBQTJEO0VBRWhHLE1BQU13QixvQkFBb0IsR0FBSUMsTUFBZSxJQUFhO0lBQ3pELE9BQU9BLE1BQU0sS0FBSyxJQUFJLElBQUlBLE1BQU0sS0FBS0MsU0FBUyxHQUFHLEdBQUdELE1BQU0sSUFBSSxHQUFHLEVBQUU7RUFDcEUsQ0FBQztFQUNERCxvQkFBb0IsQ0FBQ3hCLGNBQWMsR0FBRyw0REFBNEQ7RUFFbEcsTUFBTTJCLGlCQUFpQixHQUFHQSxDQUFDekIsS0FBc0IsRUFBRTBCLE1BQXVCLEVBQUVDLEtBQWMsS0FBeUI7SUFDbEgsSUFBSUMsY0FBc0I7SUFDMUI7SUFDQSxJQUFJNUIsS0FBSyxLQUFLd0IsU0FBUyxFQUFFO01BQ3hCLE9BQU8sR0FBRztJQUNYO0lBRUEsTUFBTUssTUFBYyxHQUFHLE9BQU83QixLQUFLLEtBQUssUUFBUSxHQUFHOEIsVUFBVSxDQUFDOUIsS0FBSyxDQUFDLEdBQUdBLEtBQUs7SUFDNUUsTUFBTStCLE9BQWUsR0FBRyxPQUFPTCxNQUFNLEtBQUssUUFBUSxHQUFHSSxVQUFVLENBQUNKLE1BQU0sQ0FBQyxHQUFHQSxNQUFNO0lBRWhGLElBQUlDLEtBQUssS0FBSyxHQUFHLEVBQUU7TUFDbEIsSUFBSUUsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUNqQkQsY0FBYyxHQUFHLEtBQUs7TUFDdkIsQ0FBQyxNQUFNLElBQUlDLE1BQU0sSUFBSSxDQUFDLEVBQUU7UUFDdkJELGNBQWMsR0FBRyxHQUFHO01BQ3JCLENBQUMsTUFBTTtRQUNOQSxjQUFjLEdBQUcsT0FBTzVCLEtBQUssS0FBSyxRQUFRLEdBQUdBLEtBQUssR0FBR0EsS0FBSyxFQUFFSSxRQUFRLENBQUMsQ0FBQztNQUN2RTtJQUNELENBQUMsTUFBTSxJQUFJeUIsTUFBTSxHQUFHRSxPQUFPLEVBQUU7TUFDNUJILGNBQWMsR0FBRyxLQUFLO0lBQ3ZCLENBQUMsTUFBTSxJQUFJQyxNQUFNLElBQUksQ0FBQyxFQUFFO01BQ3ZCRCxjQUFjLEdBQUcsR0FBRztJQUNyQixDQUFDLE1BQU07TUFDTkEsY0FBYyxHQUFHQyxNQUFNLElBQUlFLE9BQU8sR0FBRyxDQUFFRixNQUFNLEdBQUdFLE9BQU8sR0FBSSxHQUFHLEVBQUUzQixRQUFRLENBQUMsQ0FBQyxHQUFHLEdBQUc7SUFDakY7SUFDQSxPQUFPd0IsY0FBYztFQUN0QixDQUFDO0VBQ0RILGlCQUFpQixDQUFDM0IsY0FBYyxHQUFHLHlEQUF5RDtFQUVyRixNQUFNa0MsMkJBQTJCLEdBQUlDLEdBQXFCLElBQXlCO0lBQ3pGLElBQUlDLFdBQW1CO0lBQ3ZCLElBQUlELEdBQUcsS0FBSyw2QkFBNkIsSUFBSUEsR0FBRyxLQUFLLEdBQUcsSUFBSUEsR0FBRyxLQUFLLENBQUMsRUFBRTtNQUN0RUMsV0FBVyxHQUFHLE9BQU87SUFDdEIsQ0FBQyxNQUFNLElBQUlELEdBQUcsS0FBSyw2QkFBNkIsSUFBSUEsR0FBRyxLQUFLLEdBQUcsSUFBSUEsR0FBRyxLQUFLLENBQUMsRUFBRTtNQUM3RUMsV0FBVyxHQUFHLFNBQVM7SUFDeEIsQ0FBQyxNQUFNLElBQUlELEdBQUcsS0FBSyw2QkFBNkIsSUFBSUEsR0FBRyxLQUFLLEdBQUcsSUFBSUEsR0FBRyxLQUFLLENBQUMsRUFBRTtNQUM3RUMsV0FBVyxHQUFHLFNBQVM7SUFDeEIsQ0FBQyxNQUFNLElBQUlELEdBQUcsS0FBSyxnQ0FBZ0MsSUFBSUEsR0FBRyxLQUFLLEdBQUcsSUFBSUEsR0FBRyxLQUFLLENBQUMsRUFBRTtNQUNoRkMsV0FBVyxHQUFHLGFBQWE7SUFDNUIsQ0FBQyxNQUFNO01BQ05BLFdBQVcsR0FBRyxNQUFNO0lBQ3JCO0lBQ0EsT0FBT0EsV0FBVztFQUNuQixDQUFDO0VBQ0RGLDJCQUEyQixDQUFDbEMsY0FBYyxHQUFHLG1FQUFtRTtFQUFDcUMsUUFBQSxDQUFBSCwyQkFBQSxHQUFBQSwyQkFBQTtFQUUxRyxNQUFNSSwyQkFBMkIsR0FBSUgsR0FBcUIsSUFBeUI7SUFDekYsSUFBSUksS0FBYTtJQUNqQixJQUFJSixHQUFHLEtBQUssNkJBQTZCLElBQUlBLEdBQUcsS0FBSyxHQUFHLElBQUlBLEdBQUcsS0FBSyxDQUFDLEVBQUU7TUFDdEVJLEtBQUssR0FBRyxRQUFRO0lBQ2pCLENBQUMsTUFBTSxJQUFJSixHQUFHLEtBQUssNkJBQTZCLElBQUlBLEdBQUcsS0FBSyxHQUFHLElBQUlBLEdBQUcsS0FBSyxDQUFDLEVBQUU7TUFDN0VJLEtBQUssR0FBRyxRQUFRO0lBQ2pCLENBQUMsTUFBTTtNQUNOQSxLQUFLLEdBQUcsU0FBUztJQUNsQjtJQUNBLE9BQU9BLEtBQUs7RUFDYixDQUFDO0VBQ0RELDJCQUEyQixDQUFDdEMsY0FBYyxHQUFHLG1FQUFtRTtFQUFDcUMsUUFBQSxDQUFBQywyQkFBQSxHQUFBQSwyQkFBQTtFQUUxRyxNQUFNRSxnQ0FBZ0MsR0FBSUwsR0FBcUIsSUFBeUI7SUFDOUYsSUFBSU0sTUFBYztJQUNsQixJQUFJTixHQUFHLEtBQUssNkJBQTZCLElBQUlBLEdBQUcsS0FBSyxHQUFHLElBQUlBLEdBQUcsS0FBSyxDQUFDLEVBQUU7TUFDdEVNLE1BQU0sR0FBRyxPQUFPO0lBQ2pCLENBQUMsTUFBTSxJQUFJTixHQUFHLEtBQUssNkJBQTZCLElBQUlBLEdBQUcsS0FBSyxHQUFHLElBQUlBLEdBQUcsS0FBSyxDQUFDLEVBQUU7TUFDN0VNLE1BQU0sR0FBRyxVQUFVO0lBQ3BCLENBQUMsTUFBTSxJQUFJTixHQUFHLEtBQUssNkJBQTZCLElBQUlBLEdBQUcsS0FBSyxHQUFHLElBQUlBLEdBQUcsS0FBSyxDQUFDLEVBQUU7TUFDN0VNLE1BQU0sR0FBRyxNQUFNO0lBQ2hCLENBQUMsTUFBTTtNQUNOQSxNQUFNLEdBQUcsU0FBUztJQUNuQjtJQUNBLE9BQU9BLE1BQU07RUFDZCxDQUFDO0VBQ0RELGdDQUFnQyxDQUFDeEMsY0FBYyxHQUFHLHdFQUF3RTs7RUFFMUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVZBcUMsUUFBQSxDQUFBRyxnQ0FBQSxHQUFBQSxnQ0FBQTtFQVdPLE1BQU1FLDJCQUEyQixHQUFHQSxDQUMxQ3hDLEtBQXNCLEVBQ3RCMEIsTUFBdUIsRUFDdkJlLElBQVksRUFDWkMsVUFBbUIsRUFDbkJDLFdBQW9DLEtBQ1o7SUFDeEIsSUFBSTNDLEtBQUssSUFBSTBCLE1BQU0sSUFBSWUsSUFBSSxFQUFFO01BQzVCLE1BQU1HLFNBQVMsR0FBR0gsSUFBSSxDQUFDSSxLQUFLLENBQUMsR0FBRyxDQUFDO01BQ2pDLE1BQU1DLFVBQVUsR0FBRyxHQUFHRixTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUtwQixTQUFTLEdBQUdpQixJQUFJLEdBQUdHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztNQUMvRSxNQUFNRyxVQUFVLEdBQUd2QyxVQUFVLENBQUNDLGVBQWUsQ0FBQyxDQUFDO01BQy9DLE1BQU11QyxVQUFVLEdBQ2ZELFVBQVUsQ0FRVEUsV0FBVyxDQUFDQyxLQUFLO01BQ25CLE1BQU1DLGNBQWMsR0FBR3hELE9BQU8sQ0FBQ0Msb0JBQW9CLENBQUMsZUFBZSxDQUFFO01BQ3JFLElBQUl3RCxhQUFhLEdBQUdYLElBQUk7TUFDeEIsSUFBSU8sVUFBVSxFQUFFSyxVQUFVLENBQUNQLFVBQVUsQ0FBQyxFQUFFUSxXQUFXLEVBQUU7UUFDcERGLGFBQWEsR0FBR0osVUFBVSxDQUFDSyxVQUFVLENBQUNQLFVBQVUsQ0FBQyxDQUFDUSxXQUFZO01BQy9ELENBQUMsTUFBTSxJQUFJTixVQUFVLEVBQUVPLEtBQUssRUFBRUMsS0FBSyxDQUFDZixJQUFJLENBQUMsRUFBRWEsV0FBVyxFQUFFO1FBQ3ZERixhQUFhLEdBQUdKLFVBQVUsQ0FBQ08sS0FBSyxDQUFDQyxLQUFLLENBQUNmLElBQUksQ0FBQyxDQUFDYSxXQUFZO01BQzFEO01BRUEsSUFBSUcsU0FBUztNQUNiLElBQUlmLFVBQVUsRUFBRTtRQUNmZSxTQUFTLEdBQUdDLFlBQVksQ0FBQ0MsbUJBQW1CLENBQUM7VUFDNUNDLGdCQUFnQixFQUFFakIsV0FBVztVQUM3QmtCLFdBQVcsRUFBRTtRQUNkLENBQUMsQ0FBQztNQUNILENBQUMsTUFBTTtRQUNOSixTQUFTLEdBQUdDLFlBQVksQ0FBQ0ksZUFBZSxDQUFDO1VBQ3hDbkIsV0FBVyxFQUFFQSxXQUFXO1VBQ3hCa0IsV0FBVyxFQUFFO1FBQ2QsQ0FBQyxDQUFDO01BQ0g7TUFDQSxNQUFNRSxZQUFZLEdBQUdOLFNBQVMsQ0FBQ08sTUFBTSxDQUFDLENBQUNoRSxLQUFLLEVBQUVvRCxhQUFhLENBQUM7TUFDNUQsTUFBTWEsYUFBYSxHQUFHUixTQUFTLENBQUNPLE1BQU0sQ0FBQyxDQUFDdEMsTUFBTSxFQUFFMEIsYUFBYSxDQUFDO01BRTlELE9BQU9ELGNBQWMsQ0FBQ3RELE9BQU8sQ0FBQyxvREFBb0QsRUFBRSxDQUFDa0UsWUFBWSxFQUFFRSxhQUFhLEVBQUViLGFBQWEsQ0FBQyxDQUFDO0lBQ2xJO0VBQ0QsQ0FBQztFQUNEWiwyQkFBMkIsQ0FBQzFDLGNBQWMsR0FBRyxtRUFBbUU7O0VBRWhIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFKQXFDLFFBQUEsQ0FBQUssMkJBQUEsR0FBQUEsMkJBQUE7RUFLTyxNQUFNMEIsa0JBQWtCLEdBQUlsRSxLQUF5QixJQUF5QjtJQUNwRixJQUFJQSxLQUFLLEVBQUVkLE1BQU0sRUFBRTtNQUNsQixPQUFPLEdBQUcsQ0FBQ2lGLE1BQU0sQ0FBQ25FLEtBQUssQ0FBQ2QsTUFBTSxDQUFDO0lBQ2hDO0lBQ0EsT0FBT3NDLFNBQVM7RUFDakIsQ0FBQztFQUNEMEMsa0JBQWtCLENBQUNwRSxjQUFjLEdBQUcsMERBQTBEO0VBQUNxQyxRQUFBLENBQUErQixrQkFBQSxHQUFBQSxrQkFBQTtFQUV4RixNQUFNRSxzQkFBc0IsR0FBSXBFLEtBQWdDLElBQWE7SUFDbkYsT0FBT0EsS0FBSyxLQUFLLElBQUksSUFBSUEsS0FBSyxLQUFLd0IsU0FBUyxHQUFHLEVBQUUsR0FBR1Isa0JBQWtCLENBQUNoQixLQUFLLEdBQUcsRUFBRSxDQUFDO0VBQ25GLENBQUM7RUFDRG9FLHNCQUFzQixDQUFDdEUsY0FBYyxHQUFHLDhEQUE4RDtFQUFDcUMsUUFBQSxDQUFBaUMsc0JBQUEsR0FBQUEsc0JBQUE7RUFFdkcsU0FBU0MsbUJBQW1CQSxDQUFDckUsS0FBNkIsRUFBZTtJQUN4RSxJQUFJQSxLQUFLLEVBQUU7TUFDVixNQUFNc0UsV0FBVyxHQUFHLElBQUkzRCxJQUFJLENBQUNYLEtBQUssQ0FBQztNQUNuQyxJQUFJLENBQUN1RSxLQUFLLENBQUM1RCxJQUFJLENBQUNELEtBQUssQ0FBQzRELFdBQWdDLENBQUMsQ0FBQyxFQUFFO1FBQ3pELE9BQU9FLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDekUsS0FBSyxDQUFDO01BQ2xDLENBQUMsTUFBTTtRQUNOYSxHQUFHLENBQUNDLE9BQU8sQ0FBQyx5RUFBeUUsQ0FBQztNQUN2RjtJQUNEO0lBQ0EsT0FBTyxJQUFJO0VBQ1o7RUFDQXVELG1CQUFtQixDQUFDdkUsY0FBYyxHQUFHLDJEQUEyRDs7RUFFaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLE1BQU00RSxrQkFBa0IsR0FBRyxTQUFBQSxDQUFBLEVBQThEO0lBQUEsU0FBQUMsS0FBQSxHQUFBMUYsU0FBQSxDQUFBQyxNQUFBLEVBQWpEMEYsZUFBZSxPQUFBeEYsS0FBQSxDQUFBdUYsS0FBQSxHQUFBRSxLQUFBLE1BQUFBLEtBQUEsR0FBQUYsS0FBQSxFQUFBRSxLQUFBO01BQWZELGVBQWUsQ0FBQUMsS0FBQSxJQUFBNUYsU0FBQSxDQUFBNEYsS0FBQTtJQUFBO0lBQzdELE1BQU1DLDhCQUE4QixHQUFHRixlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3pELE1BQU1HLDhCQUF3QyxHQUFHLEVBQUU7SUFDbkQsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdKLGVBQWUsQ0FBQzFGLE1BQU0sRUFBRThGLENBQUMsRUFBRSxFQUFFO01BQ2hELElBQUlKLGVBQWUsQ0FBQ0ksQ0FBQyxDQUFDLEVBQUU7UUFDdkJELDhCQUE4QixDQUFDRSxJQUFJLENBQUNMLGVBQWUsQ0FBQ0ksQ0FBQyxDQUFXLENBQUM7TUFDbEU7SUFDRDtJQUNBLElBQUlELDhCQUE4QixDQUFDN0YsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUM5QyxPQUFPZ0csbUNBQW1DLENBQUNKLDhCQUE4QixFQUFjO1FBQ3RGSyxtQkFBbUIsRUFBRUosOEJBQThCO1FBQ25ESyw2QkFBNkIsRUFBRSxFQUFFO1FBQ2pDQyxZQUFZLEVBQUUsQ0FBQztNQUNoQixDQUFDLENBQUMsQ0FBQ0MsZ0NBQWdDO0lBQ3BDO0lBQ0EsT0FBTzlELFNBQVM7RUFDakIsQ0FBQztFQUNEa0Qsa0JBQWtCLENBQUM1RSxjQUFjLEdBQUcsMERBQTBEO0VBQUNxQyxRQUFBLENBQUF1QyxrQkFBQSxHQUFBQSxrQkFBQTtFQUN4RixNQUFNYSxpQkFBaUIsR0FBRyxTQUFBQSxDQUFVdkYsS0FBYSxFQUFVO0lBQ2pFLE9BQU9nQixrQkFBa0IsQ0FBQ2hCLEtBQUssQ0FBQztFQUNqQyxDQUFDO0VBQ0R1RixpQkFBaUIsQ0FBQ3pGLGNBQWMsR0FBRyx5REFBeUQ7RUFBQ3FDLFFBQUEsQ0FBQW9ELGlCQUFBLEdBQUFBLGlCQUFBO0VBRTdGLE1BQU1DLGtCQUFrQixHQUFHLFNBQUFBLENBQVVDLFFBQWdCLEVBQVU7SUFDOUQsT0FBT0MsUUFBUSxDQUFDRixrQkFBa0IsQ0FBQ0MsUUFBUSxDQUFDO0VBQzdDLENBQUM7RUFDREQsa0JBQWtCLENBQUMxRixjQUFjLEdBQUcsNkRBQTZEO0VBRWpHakIsZUFBZSxDQUFDNkYsa0JBQWtCLEdBQUdBLGtCQUFrQjtFQUN2RDdGLGVBQWUsQ0FBQ1Usa0JBQWtCLEdBQUdBLGtCQUFrQjtFQUN2RFYsZUFBZSxDQUFDa0MsV0FBVyxHQUFHQSxXQUFXO0VBQ3pDbEMsZUFBZSxDQUFDb0MsbUJBQW1CLEdBQUdBLG1CQUFtQjtFQUN6RHBDLGVBQWUsQ0FBQ3dGLG1CQUFtQixHQUFHQSxtQkFBbUI7RUFDekR4RixlQUFlLENBQUN5QyxvQkFBb0IsR0FBR0Esb0JBQW9CO0VBQzNEekMsZUFBZSxDQUFDNEMsaUJBQWlCLEdBQUdBLGlCQUFpQjtFQUNyRDVDLGVBQWUsQ0FBQ21ELDJCQUEyQixHQUFHQSwyQkFBMkI7RUFDekVuRCxlQUFlLENBQUN1RCwyQkFBMkIsR0FBR0EsMkJBQTJCO0VBQ3pFdkQsZUFBZSxDQUFDeUQsZ0NBQWdDLEdBQUdBLGdDQUFnQztFQUNuRnpELGVBQWUsQ0FBQzJELDJCQUEyQixHQUFHQSwyQkFBMkI7RUFDekUzRCxlQUFlLENBQUNxRixrQkFBa0IsR0FBR0Esa0JBQWtCO0VBQ3ZEckYsZUFBZSxDQUFDdUYsc0JBQXNCLEdBQUdBLHNCQUFzQjtFQUMvRHZGLGVBQWUsQ0FBQ2tCLHFCQUFxQixHQUFHQSxxQkFBcUI7RUFDN0RsQixlQUFlLENBQUMyRyxrQkFBa0IsR0FBR0Esa0JBQWtCO0VBQ3ZEM0csZUFBZSxDQUFDMEcsaUJBQWlCLEdBQUdBLGlCQUFpQjtFQUVyREksVUFBVSxDQUFDQyxHQUFHLENBQUMsdUNBQXVDLEVBQUUvRyxlQUFlLENBQUM7RUFBQyxPQUUxREEsZUFBZTtBQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -62,11 +62,29 @@ const formatStringDimension = (value: unknown, pattern: string, propertyPath: st
62
62
  };
63
63
  formatStringDimension.__functionName = "sap.fe.core.formatters.ValueFormatter#formatStringDimension";
64
64
 
65
+ /**
66
+ * Formats the title of the object page header and the item titles.
67
+ * @param firstPart The first part of the title
68
+ * @param secondPart The second part of the title
69
+ * @returns The formatted title
70
+ */
65
71
  const formatTitle = (firstPart?: string, secondPart?: string): string => {
66
72
  return secondPart ? formatWithBrackets(whitespaceReplacer(firstPart), whitespaceReplacer(secondPart)) : whitespaceReplacer(firstPart);
67
73
  };
68
74
  formatTitle.__functionName = "sap.fe.core.formatters.ValueFormatter#formatTitle";
69
75
 
76
+ /**
77
+ * Formats the title of the object page header and the item titles when there's a property navigation or not.
78
+ * @param defaultText The first part of the title
79
+ * @param actualText The full title
80
+ * @returns The formatted title
81
+ */
82
+ const formatCreationTitle = (defaultText?: string, actualText?: string): string => {
83
+ const usableText = !!actualText && !actualText.startsWith("T_NEW_OBJECT|") ? actualText : defaultText;
84
+ return formatTitle(usableText);
85
+ };
86
+ formatCreationTitle.__functionName = "sap.fe.core.formatters.ValueFormatter#formatCreationTitle";
87
+
70
88
  const formatWithPercentage = (sValue?: string): string => {
71
89
  return sValue !== null && sValue !== undefined ? `${sValue} %` : "";
72
90
  };
@@ -273,6 +291,7 @@ getIconForMimeType.__functionName = "sap.fe.core.formatters.StandardFormatter#ge
273
291
  valueFormatters.hasSemanticObjects = hasSemanticObjects;
274
292
  valueFormatters.formatWithBrackets = formatWithBrackets;
275
293
  valueFormatters.formatTitle = formatTitle;
294
+ valueFormatters.formatCreationTitle = formatCreationTitle;
276
295
  valueFormatters.provideDateInstance = provideDateInstance;
277
296
  valueFormatters.formatWithPercentage = formatWithPercentage;
278
297
  valueFormatters.computePercentage = computePercentage;
@@ -4,7 +4,7 @@
4
4
  "id": "sap.fe.core.fpm",
5
5
  "type": "component",
6
6
  "applicationVersion": {
7
- "version": "1.136.0"
7
+ "version": "1.136.1"
8
8
  },
9
9
  "title": "Object Page",
10
10
  "tags": {