@sapui5/sap.fe.macros 1.142.0 → 1.143.0

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 (102) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/CollaborativeDraftHandler.js +1 -7
  4. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +0 -6
  5. package/src/sap/fe/macros/ConditionalSwitch.js +1 -2
  6. package/src/sap/fe/macros/ConditionalSwitch.tsx +0 -1
  7. package/src/sap/fe/macros/ConditionalSwitchProperty.js +1 -3
  8. package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +0 -2
  9. package/src/sap/fe/macros/Field.js +5 -5
  10. package/src/sap/fe/macros/Field.ts +5 -3
  11. package/src/sap/fe/macros/FooterContent.js +3 -2
  12. package/src/sap/fe/macros/FooterContent.tsx +2 -10
  13. package/src/sap/fe/macros/KPITag.js +6 -6
  14. package/src/sap/fe/macros/KPITag.tsx +5 -5
  15. package/src/sap/fe/macros/MacroAPI.js +2 -2
  16. package/src/sap/fe/macros/MacroAPI.ts +1 -1
  17. package/src/sap/fe/macros/MessageButton.js +3 -3
  18. package/src/sap/fe/macros/MessageButton.tsx +3 -2
  19. package/src/sap/fe/macros/MicroChart.js +3 -2
  20. package/src/sap/fe/macros/MicroChart.tsx +1 -1
  21. package/src/sap/fe/macros/Share.js +7 -7
  22. package/src/sap/fe/macros/Share.tsx +9 -6
  23. package/src/sap/fe/macros/Status.js +6 -5
  24. package/src/sap/fe/macros/Status.tsx +3 -4
  25. package/src/sap/fe/macros/ai/EasyFillDialog.js +2 -1
  26. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +1 -0
  27. package/src/sap/fe/macros/ai/SummarizationButton.js +6 -4
  28. package/src/sap/fe/macros/ai/SummarizationButton.tsx +5 -3
  29. package/src/sap/fe/macros/chart/ChartDelegate.js +22 -1
  30. package/src/sap/fe/macros/chart/ChartDelegate.ts +29 -2
  31. package/src/sap/fe/macros/chart/MdcChartTemplate.js +5 -2
  32. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +5 -2
  33. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +7 -7
  34. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +3 -2
  35. package/src/sap/fe/macros/controls/FileWrapper.js +11 -5
  36. package/src/sap/fe/macros/controls/FileWrapper.ts +10 -4
  37. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +3 -1
  38. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -0
  39. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  40. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  41. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +4 -4
  42. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +3 -3
  43. package/src/sap/fe/macros/field/FieldFormatOptions.js +2 -2
  44. package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
  45. package/src/sap/fe/macros/field/FieldRuntime.js +7 -2
  46. package/src/sap/fe/macros/field/FieldRuntime.ts +7 -1
  47. package/src/sap/fe/macros/filter/FilterUtils.js +31 -5
  48. package/src/sap/fe/macros/filter/FilterUtils.ts +40 -6
  49. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +6 -3
  50. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +5 -1
  51. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +19 -9
  52. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +76 -61
  53. package/src/sap/fe/macros/filterBar/UOMValidationDelegate.js +376 -0
  54. package/src/sap/fe/macros/filterBar/UOMValidationDelegate.ts +463 -0
  55. package/src/sap/fe/macros/form/FormContainer.block.js +22 -6
  56. package/src/sap/fe/macros/form/FormContainer.block.ts +24 -6
  57. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +2 -2
  58. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +2 -1
  59. package/src/sap/fe/macros/library.js +5 -6
  60. package/src/sap/fe/macros/{library.ts → library.tsx} +1 -1
  61. package/src/sap/fe/macros/messagebundle.properties +6 -0
  62. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +1 -1
  63. package/src/sap/fe/macros/messages/MessageButton.js +21 -12
  64. package/src/sap/fe/macros/messages/MessageButton.ts +21 -11
  65. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.js +7 -3
  66. package/src/sap/fe/macros/multivaluefield/MultiValueFieldDelegate.ts +8 -2
  67. package/src/sap/fe/macros/quickView/QuickView.js +5 -4
  68. package/src/sap/fe/macros/quickView/QuickView.tsx +10 -3
  69. package/src/sap/fe/macros/table/Action.js +7 -4
  70. package/src/sap/fe/macros/table/Action.ts +3 -3
  71. package/src/sap/fe/macros/table/Column.js +3 -2
  72. package/src/sap/fe/macros/table/Column.ts +1 -1
  73. package/src/sap/fe/macros/table/MdcTableTemplate.js +6 -9
  74. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +5 -7
  75. package/src/sap/fe/macros/table/Table.block.js +6 -3
  76. package/src/sap/fe/macros/table/Table.block.tsx +13 -3
  77. package/src/sap/fe/macros/table/TableAPI.js +13 -8
  78. package/src/sap/fe/macros/table/TableAPI.ts +10 -3
  79. package/src/sap/fe/macros/table/TableDefinition.js +2 -2
  80. package/src/sap/fe/macros/table/TableDefinition.ts +1 -1
  81. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +3 -1
  82. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +4 -0
  83. package/src/sap/fe/macros/table/TableRuntime.js +24 -12
  84. package/src/sap/fe/macros/table/TableRuntime.ts +27 -11
  85. package/src/sap/fe/macros/table/Utils.js +9 -3
  86. package/src/sap/fe/macros/table/Utils.ts +14 -8
  87. package/src/sap/fe/macros/table/delegates/TableDelegate.js +6 -4
  88. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +6 -5
  89. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +41 -15
  90. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +41 -22
  91. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -5
  92. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +13 -4
  93. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -3
  94. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +3 -2
  95. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +37 -10
  96. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +39 -15
  97. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +3 -4
  98. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +2 -3
  99. package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.js +5 -4
  100. package/src/sap/fe/macros/table/uploadTable/UploadTableRuntime.ts +6 -3
  101. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +17 -10
  102. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +24 -9
@@ -78,8 +78,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/building
78
78
  // get bound messages.
79
79
  const messageDetails = messages.reduce((reducedMessages, message) => {
80
80
  const isBound = message.getTargets().length > 0;
81
- const isMessageTechnical = message.getTechnical();
82
- if (isBound) {
81
+ const isCustomMessageFromExtensionAPI = message.getTechnicalDetails()?.isCustomMessageFromExtensionAPI === true;
82
+ if (isBound && !isCustomMessageFromExtensionAPI) {
83
83
  reducedMessages.push({
84
84
  message
85
85
  });
@@ -260,4 +260,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/building
260
260
  _exports = MessageButton;
261
261
  return _exports;
262
262
  }, false);
263
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlQnV0dG9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXAiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiX21lc3NhZ2VNb2RlbCIsIk1lc3NhZ2luZyIsImdldE1lc3NhZ2VNb2RlbCIsIl9tbVByb3BlcnR5QmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImF0dGFjaENoYW5nZSIsInByb2Nlc3NNZXNzYWdlcyIsImV2ZW50RGVsZWdhdGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwibWVzc2FnZXMiLCJnZXREYXRhIiwibWVzc2FnZURldGFpbHMiLCJyZWR1Y2UiLCJyZWR1Y2VkTWVzc2FnZXMiLCJtZXNzYWdlIiwiaXNCb3VuZCIsImdldFRhcmdldHMiLCJsZW5ndGgiLCJpc01lc3NhZ2VUZWNobmljYWwiLCJnZXRUZWNobmljYWwiLCJwdXNoIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJtZXNzYWdlSGFuZGxlciIsImJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIiwiYWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMiLCJtZXNzYWdlUHJpb3JpdHlNYXAiLCJFcnJvciIsIldhcm5pbmciLCJTdWNjZXNzIiwiSW5mb3JtYXRpb24iLCJOb25lIiwiYXZhaWxhYmxlSGlnaGVzdFByaW9yaXR5IiwiZXJyb3JDb3VudCIsIm1lc3NhZ2VJdGVtcyIsIm1lc3NhZ2VEZXRhaWwiLCJtZXNzYWdlVHlwZSIsImdldFR5cGUiLCJtZXNzYWdlUHJpb3JpdHkiLCJNZXNzYWdlVHlwZSIsImNyZWF0ZU1lc3NhZ2VJdGVtIiwiZ2V0Q29udGVudCIsInNldFRleHQiLCJ0b1N0cmluZyIsInByaW9yaXRpemVkQnV0dG9uVHlwZSIsIkJ1dHRvblR5cGUiLCJOZWdhdGl2ZSIsIkNyaXRpY2FsIiwiTmV1dHJhbCIsIkRlZmF1bHQiLCJzZXRUeXBlIiwicHJpb3JpdGl6ZWRUb29sVGlwS2V5IiwidG9vbHRpcEtleSIsInRvb2x0aXBUZXh0IiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJzZXRUb29sdGlwIiwiZ2V0VmlzaWJsZSIsInNldFZpc2libGUiLCJmaXJlRXZlbnQiLCJ2aXNpYmxlIiwiY3JlYXRlTWVzc2FnZVBvcG92ZXIiLCJtZXNzYWdlSXRlbSIsIl9qc3giLCJNZXNzYWdlSXRlbSIsInRpdGxlIiwiZ2V0TWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0RGVzY3JpcHRpb24iLCJ0eXBlIiwibWFya3VwRGVzY3JpcHRpb24iLCJsb25ndGV4dFVybCIsImdldERlc2NyaXB0aW9uVXJsIiwic3VidGl0bGUiLCJnZXRBZGRpdGlvbmFsVGV4dCIsImdyb3VwTmFtZSIsImFjdGl2ZVRpdGxlIiwiZ2V0Q29udHJvbElkcyIsImFjdGl2ZVRpdGxlSGFuZGxlciIsImdldElkIiwiX21lc3NhZ2VQb3BvdmVyIiwiZGVzdHJveSIsIk1lc3NhZ2VQb3BvdmVyIiwiZ3JvdXBJdGVtcyIsImFjdGl2ZVRpdGxlUHJlc3MiLCJwcmVzc0V2ZW50IiwiZ2V0UGFyYW1ldGVyIiwiaGFuZGxlQWN0aXZlVGl0bGVQcmVzcyIsImNoaWxkcmVuIiwiaXRlbXMiLCJhZGREZXBlbmRlbnQiLCJzZXRUaW1lb3V0Iiwib3BlbkJ5IiwiY29udHJvbElkIiwiZ2V0Q29udHJvbElkIiwiY29udHJvbCIsIlVJNUVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImZvY3VzIiwiTG9nIiwiZXJyb3IiLCJ0b2dnbGVNZXNzYWdlUG9wb3ZlciIsInRvZ2dsZSIsIkJ1dHRvbiIsInByZXNzIiwiYmluZCIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlRGV0YWlsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL01lc3NhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBNZXNzYWdlSXRlbSBmcm9tIFwic2FwL20vTWVzc2FnZUl0ZW1cIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZVBvcG92ZXIkQWN0aXZlVGl0bGVQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgTWVzc2FnZVBvcG92ZXIgZnJvbSBcInNhcC9tL01lc3NhZ2VQb3BvdmVyXCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBNZXNzYWdpbmcgZnJvbSBcInNhcC91aS9jb3JlL01lc3NhZ2luZ1wiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCB0eXBlIFByb3BlcnR5QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL1Byb3BlcnR5QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvbWVzc2FnZS9NZXNzYWdlTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gc2hvdyBib3VuZCBtZXNzYWdlcy5cbiAqXG4gKiBUaGUgTWVzc2FnZSBCdXR0b24gQnVpbGRpbmcgQmxvY2sgZ2V0cyB0aGUgYm91bmQgbWVzc2FnZXMgZnJvbSB0aGUgTWVzc2FnZU1vZGVsLlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6TWVzc2FnZUJ1dHRvbiB2aXNpYmlsaXR5Q2hhbmdlPVwiLmhhbmRsZXIub25NZXNzYWdlQnV0dG9uVmlzaWJpbGl0eUNoYW5nZVwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5NZXNzYWdlQnV0dG9uXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXNzYWdlQnV0dG9uIGV4dGVuZHMgQnVpbGRpbmdCbG9jazxCdXR0b24+IHtcblx0LyoqXG5cdCAqIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgbWVzc2FnZSBidXR0b24ncyB2aXNpYmlsaXR5IGNoYW5nZXMuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBldmVudCgpXG5cdHZpc2liaWxpdHlDaGFuZ2UhOiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyB2aXNpYmxlOiBib29sZWFuIH0sIE1lc3NhZ2VCdXR0b24+PjtcblxuXHRfbWVzc2FnZU1vZGVsITogTWVzc2FnZU1vZGVsO1xuXG5cdF9tZXNzYWdlUG9wb3ZlciE6IE1lc3NhZ2VQb3BvdmVyO1xuXG5cdF9tbVByb3BlcnR5QmluZGluZyE6IFByb3BlcnR5QmluZGluZztcblxuXHRfbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwOiBSZWNvcmQ8c3RyaW5nLCBNZXNzYWdlRGV0YWlsPiA9IHt9O1xuXG5cdGNvbnN0cnVjdG9yKGlkT3JTZXR0aW5ncz86IHN0cmluZyB8IFByb3BlcnRpZXNPZjxNZXNzYWdlQnV0dG9uPiwgc2V0dGluZ3M/OiBQcm9wZXJ0aWVzT2Y8TWVzc2FnZUJ1dHRvbj4pIHtcblx0XHRzdXBlcihpZE9yU2V0dGluZ3MsIHNldHRpbmdzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0XHQvLyBnZXQgdGhlIG1lc3NhZ2UgbW9kZWwgYW5kIGF0dGFjaCB0byBpdCdzIGNoYW5nZSBldmVudC5cblx0XHR0aGlzLl9tZXNzYWdlTW9kZWwgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCk7XG5cdFx0dGhpcy5fbW1Qcm9wZXJ0eUJpbmRpbmcgPSB0aGlzLl9tZXNzYWdlTW9kZWwuYmluZFByb3BlcnR5KFwiL1wiKTtcblx0XHR0aGlzLl9tbVByb3BlcnR5QmluZGluZy5hdHRhY2hDaGFuZ2UodGhpcy5wcm9jZXNzTWVzc2FnZXMsIHRoaXMpO1xuXHRcdGNvbnN0IGV2ZW50RGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHR0aGlzLnByb2Nlc3NNZXNzYWdlcygpO1xuXHRcdFx0XHR0aGlzLnJlbW92ZUV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHR0aGlzLmFkZEV2ZW50RGVsZWdhdGUoZXZlbnREZWxlZ2F0ZSk7XG5cdH1cblxuXHQvKipcblx0ICogUHJvY2Vzc2VzIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIG1vZGVsLlxuXHQgKlxuXHQgKiBGaWx0ZXJzIG91dCB0aGUgYm91bmQgYW5kIG5vbiB0ZWNobmljYWwgbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbFxuXHQgKiBBbmQgY2FsbHMgdGhlIE1lc3NhZ2VIYW5kbGVyLmJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGFsbG93IGNvbnN1bWVycyB0byBhZGFwdCB0aGUgbWVzc2FnZXMgdGhhdCB3aWxsIGJlIHNob3duLlxuXHQgKlxuXHQgKiBBZGRpdGlvbmFsbHksIGl0IGFkanVzdHMgdGhlIG1lc3NhZ2UgYnV0dG9uJ3MgcHJvZXBydGllcyBiYXNlZCBvbiB0aGUgbWVzc2FnZXMgdG8gYmUgc2hvd24uXG5cdCAqXG5cdCAqL1xuXHRhc3luYyBwcm9jZXNzTWVzc2FnZXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbWVzc2FnZXM6IE1lc3NhZ2VbXSA9IHRoaXMuX21lc3NhZ2VNb2RlbD8uZ2V0RGF0YSgpO1xuXG5cdFx0Ly8gZ2V0IGJvdW5kIG1lc3NhZ2VzLlxuXHRcdGNvbnN0IG1lc3NhZ2VEZXRhaWxzID0gbWVzc2FnZXMucmVkdWNlKChyZWR1Y2VkTWVzc2FnZXM6IE1lc3NhZ2VEZXRhaWxbXSwgbWVzc2FnZSk6IE1lc3NhZ2VEZXRhaWxbXSA9PiB7XG5cdFx0XHRjb25zdCBpc0JvdW5kID0gbWVzc2FnZS5nZXRUYXJnZXRzKCkubGVuZ3RoID4gMDtcblx0XHRcdGNvbnN0IGlzTWVzc2FnZVRlY2huaWNhbCA9IG1lc3NhZ2UuZ2V0VGVjaG5pY2FsKCk7XG5cdFx0XHRpZiAoaXNCb3VuZCkge1xuXHRcdFx0XHRyZWR1Y2VkTWVzc2FnZXMucHVzaCh7IG1lc3NhZ2UgfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVkdWNlZE1lc3NhZ2VzO1xuXHRcdH0sIFtdKTtcblxuXHRcdGlmIChtZXNzYWdlRGV0YWlscyAmJiBtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRhd2FpdCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuYmVmb3JlU2hvd01lc3NhZ2VCdXR0b24obWVzc2FnZURldGFpbHMpO1xuXHRcdH1cblx0XHR0aGlzLmFkanVzdE1lc3NhZ2VCdXR0b25Qcm9wZXJ0aWVzKG1lc3NhZ2VEZXRhaWxzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGp1c3RzIHRoZSBtZXNzYWdlIGJ1dHRvbiBwcm9wZXJ0aWVzIGFuZCBjcmVhdGVzIGEgbWVzc2FnZSBwb3BvdmVyIHRvIHNob3cgdGhlIG1lc3NhZ2VzLlxuXHQgKlxuXHQgKiBTZXRzIHRoZSBtZXNzYWdlcyBidXR0b25zIHByb3BlcnRpZXMgb24gdGhlIGJhc2lzIG9mIG1lc3NhZ2VzIHRvIGJlIHNob3duLlxuXHQgKiBUaGUgcHJvcGVydGllcyBvZiB0aGUgbWVzc2FnZXMgYnV0dG9uIGlzIGRldGVybWluZWQgb24gdGhlIGJhc2lzIG9mIHRoZSBwcmlvcml0eSBvZiBtZXNzYWdlcyB0byBiZSBzaG93bi5cblx0ICpcblx0ICogQWRkaXRpb25hbGx5LCBjcmVhdGVzIGEgbWVzc2FnZSBwb3BvdmVyIHRvIHNob3cgdGhlIG1lc3NhZ2VzLlxuXHQgKiBAcGFyYW0gbWVzc2FnZURldGFpbHMgTWVzc2FnZSBkZXRhaWxzIHVzZWQgdG8gcmVuZGVyIGVhY2ggbWVzc2FnZSBpdGVtLlxuXHQgKi9cblx0YWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMobWVzc2FnZURldGFpbHM6IE1lc3NhZ2VEZXRhaWxbXSk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VJdGVtTWVzc2FnZURldGFpbE1hcCA9IHt9O1xuXHRcdGlmIChtZXNzYWdlRGV0YWlscyAmJiBtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlUHJpb3JpdHlNYXAgPSB7XG5cdFx0XHRcdEVycm9yOiAwLFxuXHRcdFx0XHRXYXJuaW5nOiAxLFxuXHRcdFx0XHRTdWNjZXNzOiAyLFxuXHRcdFx0XHRJbmZvcm1hdGlvbjogMyxcblx0XHRcdFx0Tm9uZTogNFxuXHRcdFx0fTtcblxuXHRcdFx0bGV0IGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eU1hcC5Ob25lOyAvLyB3ZSBzdGFydCBmcm9tIHRoZSBsb3dlc3Rcblx0XHRcdGxldCBlcnJvckNvdW50ID0gMDtcblx0XHRcdGNvbnN0IG1lc3NhZ2VJdGVtczogTWVzc2FnZUl0ZW1bXSA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBtZXNzYWdlRGV0YWlsIG9mIG1lc3NhZ2VEZXRhaWxzKSB7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBtZXNzYWdlRGV0YWlsLm1lc3NhZ2U7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VUeXBlID0gbWVzc2FnZS5nZXRUeXBlKCk7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eU1hcFttZXNzYWdlVHlwZV07XG5cdFx0XHRcdGlmIChtZXNzYWdlUHJpb3JpdHkgPCBhdmFpbGFibGVIaWdoZXN0UHJpb3JpdHkpIHtcblx0XHRcdFx0XHRhdmFpbGFibGVIaWdoZXN0UHJpb3JpdHkgPSBtZXNzYWdlUHJpb3JpdHk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG1lc3NhZ2VUeXBlID09PSBNZXNzYWdlVHlwZS5FcnJvcikge1xuXHRcdFx0XHRcdGVycm9yQ291bnQrKztcblx0XHRcdFx0fVxuXHRcdFx0XHRtZXNzYWdlSXRlbXMucHVzaCh0aGlzLmNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2VEZXRhaWwpKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IHByb3BlcnRpZXMgb24gdGhlIG1lc3NhZ2UgYnV0dG9uc1xuXG5cdFx0XHQvLyBzZXRUZXh0XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VGV4dChtZXNzYWdlRGV0YWlscy5sZW5ndGgudG9TdHJpbmcoKSk7XG5cblx0XHRcdC8vIHNldFR5cGVcblx0XHRcdGNvbnN0IHByaW9yaXRpemVkQnV0dG9uVHlwZSA9IFtcblx0XHRcdFx0QnV0dG9uVHlwZS5OZWdhdGl2ZSxcblx0XHRcdFx0QnV0dG9uVHlwZS5Dcml0aWNhbCxcblx0XHRcdFx0QnV0dG9uVHlwZS5TdWNjZXNzLFxuXHRcdFx0XHRCdXR0b25UeXBlLk5ldXRyYWwsXG5cdFx0XHRcdEJ1dHRvblR5cGUuRGVmYXVsdFxuXHRcdFx0XTtcblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUeXBlKHByaW9yaXRpemVkQnV0dG9uVHlwZVthdmFpbGFibGVIaWdoZXN0UHJpb3JpdHldKTtcblxuXHRcdFx0Ly8gc2V0VG9vbHRpcFxuXHRcdFx0Y29uc3QgcHJpb3JpdGl6ZWRUb29sVGlwS2V5ID0gW1xuXHRcdFx0XHRcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfRVJST1JcIixcblx0XHRcdFx0XCJDX0NPTU1PTl9TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1dBUk5JTkdfVE9PTFRJUFwiLFxuXHRcdFx0XHRcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX1NVQ0NFU1NcIixcblx0XHRcdFx0XCJDX01FU1NBR0VfSEFORExJTkdfU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9USVRMRV9JTkZPXCIsXG5cdFx0XHRcdFwiXCJcblx0XHRcdF07XG5cdFx0XHRjb25zdCB0b29sdGlwS2V5ID1cblx0XHRcdFx0ZXJyb3JDb3VudCA+IDFcblx0XHRcdFx0XHQ/IFwiQ19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9NVUxUSVBMRV9FUlJPUl9UT09MVElQXCJcblx0XHRcdFx0XHQ6IHByaW9yaXRpemVkVG9vbFRpcEtleVthdmFpbGFibGVIaWdoZXN0UHJpb3JpdHldO1xuXHRcdFx0bGV0IHRvb2x0aXBUZXh0ID0gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dCh0b29sdGlwS2V5KTtcblx0XHRcdGlmIChlcnJvckNvdW50ID4gMSkge1xuXHRcdFx0XHR0b29sdGlwVGV4dCA9IGAke2Vycm9yQ291bnR9ICAke3Rvb2x0aXBUZXh0fWA7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VG9vbHRpcCh0b29sdGlwVGV4dCk7XG5cblx0XHRcdC8vIHNldFZpc2libGVcblx0XHRcdGlmICghdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSkge1xuXHRcdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VmlzaWJsZSh0cnVlKTtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ2aXNpYmlsaXR5Q2hhbmdlXCIsIHsgdmlzaWJsZTogdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSB9KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYWxzbyBzaG93IHRoZSBtZXNzYWdlIHBvcG92ZXJcblx0XHRcdHRoaXMuY3JlYXRlTWVzc2FnZVBvcG92ZXIobWVzc2FnZUl0ZW1zKTtcblx0XHR9XG5cblx0XHRpZiAobWVzc2FnZURldGFpbHMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRpZiAodGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSkge1xuXHRcdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VmlzaWJsZShmYWxzZSk7XG5cdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwidmlzaWJpbGl0eUNoYW5nZVwiLCB7IHZpc2libGU6IHRoaXMuZ2V0Q29udGVudCgpPy5nZXRWaXNpYmxlKCkgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBtZXNzYWdlIEl0ZW0uXG5cdCAqIEBwYXJhbSBtZXNzYWdlRGV0YWlsIE1lc3NhZ2UgZGV0YWlsIHJlbGV2YW50IGZvciBjcmVhdGluZyB0aGUgbWVzc2FnZSBpdGVtLlxuXHQgKiBAcmV0dXJucyBNZXNzYWdlSXRlbSBjcmVhdGVkIGZyb20gTWVzc2FnZSBEZXRhaWxcblx0ICovXG5cdGNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2VEZXRhaWw6IE1lc3NhZ2VEZXRhaWwpOiBNZXNzYWdlSXRlbSB7XG5cdFx0Y29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VEZXRhaWwubWVzc2FnZTtcblx0XHRjb25zdCBtZXNzYWdlSXRlbSA9IChcblx0XHRcdDxNZXNzYWdlSXRlbVxuXHRcdFx0XHR0aXRsZT17bWVzc2FnZS5nZXRNZXNzYWdlKCl9XG5cdFx0XHRcdGRlc2NyaXB0aW9uPXttZXNzYWdlLmdldERlc2NyaXB0aW9uKCl9XG5cdFx0XHRcdHR5cGU9e21lc3NhZ2UuZ2V0VHlwZSgpfVxuXHRcdFx0XHRtYXJrdXBEZXNjcmlwdGlvbj17dHJ1ZX1cblx0XHRcdFx0bG9uZ3RleHRVcmw9e21lc3NhZ2UuZ2V0RGVzY3JpcHRpb25VcmwoKX1cblx0XHRcdFx0c3VidGl0bGU9e21lc3NhZ2UuZ2V0QWRkaXRpb25hbFRleHQoKX1cblx0XHRcdFx0Z3JvdXBOYW1lPXttZXNzYWdlRGV0YWlsLmdyb3VwTmFtZSB8fCB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9NRVNTQUdFX0JVVFRPTl9TQVBGRV9NRVNTQUdFX0dST1VQX0dFTkVSQUxcIil9XG5cdFx0XHRcdGFjdGl2ZVRpdGxlPXttZXNzYWdlLmdldENvbnRyb2xJZHMoKS5sZW5ndGggPiAwIHx8IHR5cGVvZiBtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlciA9PT0gXCJmdW5jdGlvblwifVxuXHRcdFx0Lz5cblx0XHQpIGFzIE1lc3NhZ2VJdGVtO1xuXHRcdHRoaXMuX21lc3NhZ2VJdGVtTWVzc2FnZURldGFpbE1hcFttZXNzYWdlSXRlbS5nZXRJZCgpXSA9IG1lc3NhZ2VEZXRhaWw7XG5cdFx0cmV0dXJuIG1lc3NhZ2VJdGVtO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBtZXNzYWdlIFBvcG92ZXIuXG5cdCAqIEBwYXJhbSBtZXNzYWdlSXRlbXNcblx0ICovXG5cdGNyZWF0ZU1lc3NhZ2VQb3BvdmVyKG1lc3NhZ2VJdGVtczogTWVzc2FnZUl0ZW1bXSk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VQb3BvdmVyPy5kZXN0cm95KCk7XG5cdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXIgPSAoXG5cdFx0XHQ8TWVzc2FnZVBvcG92ZXJcblx0XHRcdFx0Z3JvdXBJdGVtcz17dHJ1ZX1cblx0XHRcdFx0YWN0aXZlVGl0bGVQcmVzcz17KHByZXNzRXZlbnQ6IE1lc3NhZ2VQb3BvdmVyJEFjdGl2ZVRpdGxlUHJlc3NFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG1lc3NhZ2VJdGVtID0gcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXIoXCJpdGVtXCIpO1xuXHRcdFx0XHRcdHRoaXMuaGFuZGxlQWN0aXZlVGl0bGVQcmVzcyhtZXNzYWdlSXRlbSk7XG5cdFx0XHRcdH19XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0aXRlbXM6IG1lc3NhZ2VJdGVtc1xuXHRcdFx0XHR9fVxuXHRcdFx0PC9NZXNzYWdlUG9wb3Zlcj5cblx0XHQpIGFzIE1lc3NhZ2VQb3BvdmVyO1xuXHRcdHRoaXMuZ2V0Q29udGVudCgpPy5hZGREZXBlbmRlbnQodGhpcy5fbWVzc2FnZVBvcG92ZXIpO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXIub3BlbkJ5KHRoaXMuZ2V0Q29udGVudCgpIGFzIEJ1dHRvbik7XG5cdFx0fSwgMCk7XG5cdH1cblx0LyoqXG5cdCAqIEhhbmRsZXMgYWN0aXZlIHRpdGxlIHByZXNzLlxuXHQgKlxuXHQgKiBJZiBhbiBhY3RpdmVUaXRsZUhhbmRsZXIgaXMgcHJvdmlkZWQgYnkgdGhlIGNvbnN1bWVyIHZpYSB0aGUgY29udHJvbGxlciBleHRlbnNpb24gdGhlbiBpdCBpcyBjYWxsZWQuXG5cdCAqIE90aGVyd2lzZSwgd2UgdHJ5IHRvIGZvY3VzIG9uIHRoZSBjb250cm9sIGlmIGEgY29udHJvbCBJZCBpbiB0aGUgbWVzc2FnZSBpcyBhdmFpbGFibGUuXG5cdCAqIEBwYXJhbSBtZXNzYWdlSXRlbVxuXHQgKi9cblx0aGFuZGxlQWN0aXZlVGl0bGVQcmVzcyhtZXNzYWdlSXRlbT86IE1lc3NhZ2VJdGVtKTogdm9pZCB7XG5cdFx0aWYgKG1lc3NhZ2VJdGVtKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlRGV0YWlsID0gdGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwW21lc3NhZ2VJdGVtPy5nZXRJZCgpXTtcblx0XHRcdGlmIChtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlcikge1xuXHRcdFx0XHRtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlcihtZXNzYWdlRGV0YWlsLm1lc3NhZ2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgY29udHJvbElkID0gbWVzc2FnZURldGFpbC5tZXNzYWdlLmdldENvbnRyb2xJZCgpO1xuXHRcdFx0XHRjb25zdCBjb250cm9sID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChjb250cm9sSWQpO1xuXHRcdFx0XHRpZiAoY29udHJvbCkge1xuXHRcdFx0XHRcdGNvbnRyb2wuZm9jdXMoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJtZXNzYWdlIGl0ZW0gbm90IGZvdW5kIVwiKTtcblx0XHR9XG5cdH1cblxuXHRkZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuX21tUHJvcGVydHlCaW5kaW5nLmRlc3Ryb3koKTtcblx0fVxuXHQvKipcblx0ICogVG9nZ2xlIGhhbmRsZXIgZm9yIHRoZSBtZXNzYWdlIHBvcG92ZXIuXG5cdCAqL1xuXHR0b2dnbGVNZXNzYWdlUG9wb3ZlcigpOiB2b2lkIHtcblx0XHR0aGlzLl9tZXNzYWdlUG9wb3Zlci50b2dnbGUodGhpcy5jb250ZW50IGFzIEJ1dHRvbik7XG5cdH1cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGNvbnRlbnQgZm9yIHRoZSBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNyZWF0ZWQgY29udGVudCBjb250cm9sLlxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBCdXR0b24ge1xuXHRcdHJldHVybiA8QnV0dG9uIHZpc2libGU9XCJmYWxzZVwiIHByZXNzPXt0aGlzLnRvZ2dsZU1lc3NhZ2VQb3BvdmVyLmJpbmQodGhpcyl9IC8+O1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVhBLElBYXFCQSxhQUFhLElBQUFDLElBQUEsR0FEakNDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFBQyxLQUFBLEdBTTVDQyxLQUFLLENBQUMsQ0FBQyxFQUFBSCxJQUFBLENBQUFJLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsY0FBQTtJQVdSLFNBQUFQLGNBQVlRLFlBQW1ELEVBQUVDLFFBQXNDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ3hHQSxLQUFBLEdBQUFILGNBQUEsQ0FBQUksSUFBQSxPQUFNSCxZQUFZLEVBQUVDLFFBQVEsQ0FBQztNQWhCOUI7QUFDRDtBQUNBO0FBQ0E7TUFIQ0csMEJBQUEsQ0FBQUYsS0FBQSxzQkFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFBLEtBQUEsQ0FhQUksNEJBQTRCLEdBQWtDLENBQUMsQ0FBQztNQUFBLE9BQUFKLEtBQUE7SUFJaEU7O0lBRUE7QUFDRDtBQUNBO0lBRkNLLFFBQUEsR0FBQWYsYUFBQTtJQUFBZ0IsY0FBQSxDQUFBaEIsYUFBQSxFQUFBTyxjQUFBO0lBQUEsSUFBQVUsTUFBQSxHQUFBakIsYUFBQSxDQUFBa0IsU0FBQTtJQUFBRCxNQUFBLENBR0FFLG1CQUFtQixHQUFuQixTQUFBQSxtQkFBbUJBLENBQUEsRUFBUztNQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDQyxPQUFPLEVBQUU7UUFDbEIsSUFBSSxDQUFDQSxPQUFPLEdBQUcsSUFBSSxDQUFDQyxhQUFhLENBQUMsQ0FBQztNQUNwQztNQUNBO01BQ0EsSUFBSSxDQUFDQyxhQUFhLEdBQUdDLFNBQVMsQ0FBQ0MsZUFBZSxDQUFDLENBQUM7TUFDaEQsSUFBSSxDQUFDQyxrQkFBa0IsR0FBRyxJQUFJLENBQUNILGFBQWEsQ0FBQ0ksWUFBWSxDQUFDLEdBQUcsQ0FBQztNQUM5RCxJQUFJLENBQUNELGtCQUFrQixDQUFDRSxZQUFZLENBQUMsSUFBSSxDQUFDQyxlQUFlLEVBQUUsSUFBSSxDQUFDO01BQ2hFLE1BQU1DLGFBQWEsR0FBRztRQUNyQkMsaUJBQWlCLEVBQUVBLENBQUEsS0FBWTtVQUM5QixJQUFJLENBQUNGLGVBQWUsQ0FBQyxDQUFDO1VBQ3RCLElBQUksQ0FBQ0csbUJBQW1CLENBQUNGLGFBQWEsQ0FBQztRQUN4QztNQUNELENBQUM7TUFDRCxJQUFJLENBQUNHLGdCQUFnQixDQUFDSCxhQUFhLENBQUM7SUFDckM7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BUkM7SUFBQVosTUFBQSxDQVNNVyxlQUFlLEdBQXJCLGVBQU1BLGVBQWVBLENBQUEsRUFBa0I7TUFDdEMsTUFBTUssUUFBbUIsR0FBRyxJQUFJLENBQUNYLGFBQWEsRUFBRVksT0FBTyxDQUFDLENBQUM7O01BRXpEO01BQ0EsTUFBTUMsY0FBYyxHQUFHRixRQUFRLENBQUNHLE1BQU0sQ0FBQyxDQUFDQyxlQUFnQyxFQUFFQyxPQUFPLEtBQXNCO1FBQ3RHLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDRSxVQUFVLENBQUMsQ0FBQyxDQUFDQyxNQUFNLEdBQUcsQ0FBQztRQUMvQyxNQUFNQyxrQkFBa0IsR0FBR0osT0FBTyxDQUFDSyxZQUFZLENBQUMsQ0FBQztRQUNqRCxJQUFJSixPQUFPLEVBQUU7VUFDWkYsZUFBZSxDQUFDTyxJQUFJLENBQUM7WUFBRU47VUFBUSxDQUFDLENBQUM7UUFDbEM7UUFDQSxPQUFPRCxlQUFlO01BQ3ZCLENBQUMsRUFBRSxFQUFFLENBQUM7TUFFTixJQUFJRixjQUFjLElBQUlBLGNBQWMsQ0FBQ00sTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNoRCxNQUFNLElBQUksQ0FBQ0ksaUJBQWlCLENBQUMsQ0FBQyxDQUFDQyxjQUFjLENBQUNDLHVCQUF1QixDQUFDWixjQUFjLENBQUM7TUFDdEY7TUFDQSxJQUFJLENBQUNhLDZCQUE2QixDQUFDYixjQUFjLENBQUM7SUFDbkQ7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BUkM7SUFBQWxCLE1BQUEsQ0FTQStCLDZCQUE2QixHQUE3QixTQUFBQSw2QkFBNkJBLENBQUNiLGNBQStCLEVBQVE7TUFDcEUsSUFBSSxDQUFDckIsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDO01BQ3RDLElBQUlxQixjQUFjLElBQUlBLGNBQWMsQ0FBQ00sTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNoRCxNQUFNUSxrQkFBa0IsR0FBRztVQUMxQkMsS0FBSyxFQUFFLENBQUM7VUFDUkMsT0FBTyxFQUFFLENBQUM7VUFDVkMsT0FBTyxFQUFFLENBQUM7VUFDVkMsV0FBVyxFQUFFLENBQUM7VUFDZEMsSUFBSSxFQUFFO1FBQ1AsQ0FBQztRQUVELElBQUlDLHdCQUF3QixHQUFHTixrQkFBa0IsQ0FBQ0ssSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSUUsVUFBVSxHQUFHLENBQUM7UUFDbEIsTUFBTUMsWUFBMkIsR0FBRyxFQUFFO1FBQ3RDLEtBQUssTUFBTUMsYUFBYSxJQUFJdkIsY0FBYyxFQUFFO1VBQzNDLE1BQU1HLE9BQU8sR0FBR29CLGFBQWEsQ0FBQ3BCLE9BQU87VUFDckMsTUFBTXFCLFdBQVcsR0FBR3JCLE9BQU8sQ0FBQ3NCLE9BQU8sQ0FBQyxDQUFDO1VBQ3JDLE1BQU1DLGVBQWUsR0FBR1osa0JBQWtCLENBQUNVLFdBQVcsQ0FBQztVQUN2RCxJQUFJRSxlQUFlLEdBQUdOLHdCQUF3QixFQUFFO1lBQy9DQSx3QkFBd0IsR0FBR00sZUFBZTtVQUMzQztVQUNBLElBQUlGLFdBQVcsS0FBS0csV0FBVyxDQUFDWixLQUFLLEVBQUU7WUFDdENNLFVBQVUsRUFBRTtVQUNiO1VBQ0FDLFlBQVksQ0FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQ21CLGlCQUFpQixDQUFDTCxhQUFhLENBQUMsQ0FBQztRQUN6RDs7UUFFQTs7UUFFQTtRQUNBLElBQUksQ0FBQ00sVUFBVSxDQUFDLENBQUMsRUFBRUMsT0FBTyxDQUFDOUIsY0FBYyxDQUFDTSxNQUFNLENBQUN5QixRQUFRLENBQUMsQ0FBQyxDQUFDOztRQUU1RDtRQUNBLE1BQU1DLHFCQUFxQixHQUFHLENBQzdCQyxVQUFVLENBQUNDLFFBQVEsRUFDbkJELFVBQVUsQ0FBQ0UsUUFBUSxFQUNuQkYsVUFBVSxDQUFDaEIsT0FBTyxFQUNsQmdCLFVBQVUsQ0FBQ0csT0FBTyxFQUNsQkgsVUFBVSxDQUFDSSxPQUFPLENBQ2xCO1FBQ0QsSUFBSSxDQUFDUixVQUFVLENBQUMsQ0FBQyxFQUFFUyxPQUFPLENBQUNOLHFCQUFxQixDQUFDWix3QkFBd0IsQ0FBQyxDQUFDOztRQUUzRTtRQUNBLE1BQU1tQixxQkFBcUIsR0FBRyxDQUM3QixnREFBZ0QsRUFDaEQsb0RBQW9ELEVBQ3BELDREQUE0RCxFQUM1RCx5REFBeUQsRUFDekQsRUFBRSxDQUNGO1FBQ0QsTUFBTUMsVUFBVSxHQUNmbkIsVUFBVSxHQUFHLENBQUMsR0FDWCwyREFBMkQsR0FDM0RrQixxQkFBcUIsQ0FBQ25CLHdCQUF3QixDQUFDO1FBQ25ELElBQUlxQixXQUFXLEdBQUcsSUFBSSxDQUFDQyxpQkFBaUIsQ0FBQ0YsVUFBVSxDQUFDO1FBQ3BELElBQUluQixVQUFVLEdBQUcsQ0FBQyxFQUFFO1VBQ25Cb0IsV0FBVyxHQUFHLEdBQUdwQixVQUFVLEtBQUtvQixXQUFXLEVBQUU7UUFDOUM7UUFDQSxJQUFJLENBQUNaLFVBQVUsQ0FBQyxDQUFDLEVBQUVjLFVBQVUsQ0FBQ0YsV0FBVyxDQUFDOztRQUUxQztRQUNBLElBQUksQ0FBQyxJQUFJLENBQUNaLFVBQVUsQ0FBQyxDQUFDLEVBQUVlLFVBQVUsQ0FBQyxDQUFDLEVBQUU7VUFDckMsSUFBSSxDQUFDZixVQUFVLENBQUMsQ0FBQyxFQUFFZ0IsVUFBVSxDQUFDLElBQUksQ0FBQztVQUNuQyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRTtZQUFFQyxPQUFPLEVBQUUsSUFBSSxDQUFDbEIsVUFBVSxDQUFDLENBQUMsRUFBRWUsVUFBVSxDQUFDO1VBQUUsQ0FBQyxDQUFDO1FBQ2pGOztRQUVBO1FBQ0EsSUFBSSxDQUFDSSxvQkFBb0IsQ0FBQzFCLFlBQVksQ0FBQztNQUN4QztNQUVBLElBQUl0QixjQUFjLENBQUNNLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDaEMsSUFBSSxJQUFJLENBQUN1QixVQUFVLENBQUMsQ0FBQyxFQUFFZSxVQUFVLENBQUMsQ0FBQyxFQUFFO1VBQ3BDLElBQUksQ0FBQ2YsVUFBVSxDQUFDLENBQUMsRUFBRWdCLFVBQVUsQ0FBQyxLQUFLLENBQUM7VUFDcEMsSUFBSSxDQUFDQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFBRUMsT0FBTyxFQUFFLElBQUksQ0FBQ2xCLFVBQVUsQ0FBQyxDQUFDLEVBQUVlLFVBQVUsQ0FBQztVQUFFLENBQUMsQ0FBQztRQUNqRjtNQUNEO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUE5RCxNQUFBLENBS0E4QyxpQkFBaUIsR0FBakIsU0FBQUEsaUJBQWlCQSxDQUFDTCxhQUE0QixFQUFlO01BQzVELE1BQU1wQixPQUFPLEdBQUdvQixhQUFhLENBQUNwQixPQUFPO01BQ3JDLE1BQU04QyxXQUFXLEdBQ2hCQyxJQUFBLENBQUNDLFdBQVc7UUFDWEMsS0FBSyxFQUFFakQsT0FBTyxDQUFDa0QsVUFBVSxDQUFDLENBQUU7UUFDNUJDLFdBQVcsRUFBRW5ELE9BQU8sQ0FBQ29ELGNBQWMsQ0FBQyxDQUFFO1FBQ3RDQyxJQUFJLEVBQUVyRCxPQUFPLENBQUNzQixPQUFPLENBQUMsQ0FBRTtRQUN4QmdDLGlCQUFpQixFQUFFLElBQUs7UUFDeEJDLFdBQVcsRUFBRXZELE9BQU8sQ0FBQ3dELGlCQUFpQixDQUFDLENBQUU7UUFDekNDLFFBQVEsRUFBRXpELE9BQU8sQ0FBQzBELGlCQUFpQixDQUFDLENBQUU7UUFDdENDLFNBQVMsRUFBRXZDLGFBQWEsQ0FBQ3VDLFNBQVMsSUFBSSxJQUFJLENBQUNwQixpQkFBaUIsQ0FBQyw4Q0FBOEMsQ0FBRTtRQUM3R3FCLFdBQVcsRUFBRTVELE9BQU8sQ0FBQzZELGFBQWEsQ0FBQyxDQUFDLENBQUMxRCxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU9pQixhQUFhLENBQUMwQyxrQkFBa0IsS0FBSztNQUFXLENBQzFHLENBQ2M7TUFDaEIsSUFBSSxDQUFDdEYsNEJBQTRCLENBQUNzRSxXQUFXLENBQUNpQixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUczQyxhQUFhO01BQ3RFLE9BQU8wQixXQUFXO0lBQ25COztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQW5FLE1BQUEsQ0FJQWtFLG9CQUFvQixHQUFwQixTQUFBQSxvQkFBb0JBLENBQUMxQixZQUEyQixFQUFRO01BQ3ZELElBQUksQ0FBQzZDLGVBQWUsRUFBRUMsT0FBTyxDQUFDLENBQUM7TUFDL0IsSUFBSSxDQUFDRCxlQUFlLEdBQ25CakIsSUFBQSxDQUFDbUIsY0FBYztRQUNkQyxVQUFVLEVBQUUsSUFBSztRQUNqQkMsZ0JBQWdCLEVBQUdDLFVBQWdELElBQVc7VUFDN0UsTUFBTXZCLFdBQVcsR0FBR3VCLFVBQVUsQ0FBQ0MsWUFBWSxDQUFDLE1BQU0sQ0FBQztVQUNuRCxJQUFJLENBQUNDLHNCQUFzQixDQUFDekIsV0FBVyxDQUFDO1FBQ3pDLENBQUU7UUFBQTBCLFFBQUEsRUFFRDtVQUNBQyxLQUFLLEVBQUV0RDtRQUNSO01BQUMsQ0FDYyxDQUNFO01BQ25CLElBQUksQ0FBQ08sVUFBVSxDQUFDLENBQUMsRUFBRWdELFlBQVksQ0FBQyxJQUFJLENBQUNWLGVBQWUsQ0FBQztNQUNyRFcsVUFBVSxDQUFDLE1BQU07UUFDaEIsSUFBSSxDQUFDWCxlQUFlLENBQUNZLE1BQU0sQ0FBQyxJQUFJLENBQUNsRCxVQUFVLENBQUMsQ0FBVyxDQUFDO01BQ3pELENBQUMsRUFBRSxDQUFDLENBQUM7SUFDTjtJQUNBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkM7SUFBQS9DLE1BQUEsQ0FPQTRGLHNCQUFzQixHQUF0QixTQUFBQSxzQkFBc0JBLENBQUN6QixXQUF5QixFQUFRO01BQ3ZELElBQUlBLFdBQVcsRUFBRTtRQUNoQixNQUFNMUIsYUFBYSxHQUFHLElBQUksQ0FBQzVDLDRCQUE0QixDQUFDc0UsV0FBVyxFQUFFaUIsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJM0MsYUFBYSxDQUFDMEMsa0JBQWtCLEVBQUU7VUFDckMxQyxhQUFhLENBQUMwQyxrQkFBa0IsQ0FBQzFDLGFBQWEsQ0FBQ3BCLE9BQU8sQ0FBQztRQUN4RCxDQUFDLE1BQU07VUFDTixNQUFNNkUsU0FBUyxHQUFHekQsYUFBYSxDQUFDcEIsT0FBTyxDQUFDOEUsWUFBWSxDQUFDLENBQUM7VUFDdEQsTUFBTUMsT0FBTyxHQUFHQyxVQUFVLENBQUNDLGNBQWMsQ0FBQ0osU0FBUyxDQUFDO1VBQ3BELElBQUlFLE9BQU8sRUFBRTtZQUNaQSxPQUFPLENBQUNHLEtBQUssQ0FBQyxDQUFDO1VBQ2hCO1FBQ0Q7TUFDRCxDQUFDLE1BQU07UUFDTkMsR0FBRyxDQUFDQyxLQUFLLENBQUMseUJBQXlCLENBQUM7TUFDckM7SUFDRCxDQUFDO0lBQUF6RyxNQUFBLENBRURzRixPQUFPLEdBQVAsU0FBQUEsT0FBT0EsQ0FBQSxFQUFTO01BQ2YsSUFBSSxDQUFDOUUsa0JBQWtCLENBQUM4RSxPQUFPLENBQUMsQ0FBQztJQUNsQztJQUNBO0FBQ0Q7QUFDQSxPQUZDO0lBQUF0RixNQUFBLENBR0EwRyxvQkFBb0IsR0FBcEIsU0FBQUEsb0JBQW9CQSxDQUFBLEVBQVM7TUFDNUIsSUFBSSxDQUFDckIsZUFBZSxDQUFDc0IsTUFBTSxDQUFDLElBQUksQ0FBQ3hHLE9BQWlCLENBQUM7SUFDcEQ7SUFDQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFILE1BQUEsQ0FJQUksYUFBYSxHQUFiLFNBQUFBLGFBQWFBLENBQUEsRUFBVztNQUN2QixPQUFPZ0UsSUFBQSxDQUFDd0MsTUFBTTtRQUFDM0MsT0FBTyxFQUFDLE9BQU87UUFBQzRDLEtBQUssRUFBRSxJQUFJLENBQUNILG9CQUFvQixDQUFDSSxJQUFJLENBQUMsSUFBSTtNQUFFLENBQUUsQ0FBQztJQUMvRSxDQUFDO0lBQUEsT0FBQS9ILGFBQUE7RUFBQSxFQWpQeUNnSSxhQUFhLEdBQUFuSCxXQUFBLEdBQUFvSCx5QkFBQSxDQUFBM0gsT0FBQSxDQUFBWSxTQUFBLHVCQUFBZixLQUFBO0lBQUErSCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQS9ILE9BQUEsTUFBQUQsTUFBQTtFQUFBVSxRQUFBLEdBQUFmLGFBQUE7RUFBQSxPQUFBZSxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
263
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlQnV0dG9uIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsImlkT3JTZXR0aW5ncyIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXAiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiX21lc3NhZ2VNb2RlbCIsIk1lc3NhZ2luZyIsImdldE1lc3NhZ2VNb2RlbCIsIl9tbVByb3BlcnR5QmluZGluZyIsImJpbmRQcm9wZXJ0eSIsImF0dGFjaENoYW5nZSIsInByb2Nlc3NNZXNzYWdlcyIsImV2ZW50RGVsZWdhdGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwibWVzc2FnZXMiLCJnZXREYXRhIiwibWVzc2FnZURldGFpbHMiLCJyZWR1Y2UiLCJyZWR1Y2VkTWVzc2FnZXMiLCJtZXNzYWdlIiwiaXNCb3VuZCIsImdldFRhcmdldHMiLCJsZW5ndGgiLCJpc0N1c3RvbU1lc3NhZ2VGcm9tRXh0ZW5zaW9uQVBJIiwiZ2V0VGVjaG5pY2FsRGV0YWlscyIsInB1c2giLCJnZXRQYWdlQ29udHJvbGxlciIsIm1lc3NhZ2VIYW5kbGVyIiwiYmVmb3JlU2hvd01lc3NhZ2VCdXR0b24iLCJhZGp1c3RNZXNzYWdlQnV0dG9uUHJvcGVydGllcyIsIm1lc3NhZ2VQcmlvcml0eU1hcCIsIkVycm9yIiwiV2FybmluZyIsIlN1Y2Nlc3MiLCJJbmZvcm1hdGlvbiIsIk5vbmUiLCJhdmFpbGFibGVIaWdoZXN0UHJpb3JpdHkiLCJlcnJvckNvdW50IiwibWVzc2FnZUl0ZW1zIiwibWVzc2FnZURldGFpbCIsIm1lc3NhZ2VUeXBlIiwiZ2V0VHlwZSIsIm1lc3NhZ2VQcmlvcml0eSIsIk1lc3NhZ2VUeXBlIiwiY3JlYXRlTWVzc2FnZUl0ZW0iLCJnZXRDb250ZW50Iiwic2V0VGV4dCIsInRvU3RyaW5nIiwicHJpb3JpdGl6ZWRCdXR0b25UeXBlIiwiQnV0dG9uVHlwZSIsIk5lZ2F0aXZlIiwiQ3JpdGljYWwiLCJOZXV0cmFsIiwiRGVmYXVsdCIsInNldFR5cGUiLCJwcmlvcml0aXplZFRvb2xUaXBLZXkiLCJ0b29sdGlwS2V5IiwidG9vbHRpcFRleHQiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInNldFRvb2x0aXAiLCJnZXRWaXNpYmxlIiwic2V0VmlzaWJsZSIsImZpcmVFdmVudCIsInZpc2libGUiLCJjcmVhdGVNZXNzYWdlUG9wb3ZlciIsIm1lc3NhZ2VJdGVtIiwiX2pzeCIsIk1lc3NhZ2VJdGVtIiwidGl0bGUiLCJnZXRNZXNzYWdlIiwiZGVzY3JpcHRpb24iLCJnZXREZXNjcmlwdGlvbiIsInR5cGUiLCJtYXJrdXBEZXNjcmlwdGlvbiIsImxvbmd0ZXh0VXJsIiwiZ2V0RGVzY3JpcHRpb25VcmwiLCJzdWJ0aXRsZSIsImdldEFkZGl0aW9uYWxUZXh0IiwiZ3JvdXBOYW1lIiwiYWN0aXZlVGl0bGUiLCJnZXRDb250cm9sSWRzIiwiYWN0aXZlVGl0bGVIYW5kbGVyIiwiZ2V0SWQiLCJfbWVzc2FnZVBvcG92ZXIiLCJkZXN0cm95IiwiTWVzc2FnZVBvcG92ZXIiLCJncm91cEl0ZW1zIiwiYWN0aXZlVGl0bGVQcmVzcyIsInByZXNzRXZlbnQiLCJnZXRQYXJhbWV0ZXIiLCJoYW5kbGVBY3RpdmVUaXRsZVByZXNzIiwiY2hpbGRyZW4iLCJpdGVtcyIsImFkZERlcGVuZGVudCIsInNldFRpbWVvdXQiLCJvcGVuQnkiLCJjb250cm9sSWQiLCJnZXRDb250cm9sSWQiLCJjb250cm9sIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwiZm9jdXMiLCJMb2ciLCJlcnJvciIsInRvZ2dsZU1lc3NhZ2VQb3BvdmVyIiwidG9nZ2xlIiwiQnV0dG9uIiwicHJlc3MiLCJiaW5kIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTWVzc2FnZUJ1dHRvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBldmVudCB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2VEZXRhaWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvTWVzc2FnZUhhbmRsZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IE1lc3NhZ2VJdGVtIGZyb20gXCJzYXAvbS9NZXNzYWdlSXRlbVwiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlUG9wb3ZlciRBY3RpdmVUaXRsZVByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vTWVzc2FnZVBvcG92ZXJcIjtcbmltcG9ydCBNZXNzYWdlUG9wb3ZlciBmcm9tIFwic2FwL20vTWVzc2FnZVBvcG92ZXJcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IE1lc3NhZ2luZyBmcm9tIFwic2FwL3VpL2NvcmUvTWVzc2FnaW5nXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCBNZXNzYWdlVHlwZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvUHJvcGVydHlCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9tZXNzYWdlL01lc3NhZ2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBzaG93IGJvdW5kIG1lc3NhZ2VzLlxuICpcbiAqIFRoZSBNZXNzYWdlIEJ1dHRvbiBCdWlsZGluZyBCbG9jayBnZXRzIHRoZSBib3VuZCBtZXNzYWdlcyBmcm9tIHRoZSBNZXNzYWdlTW9kZWwuXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqXG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpNZXNzYWdlQnV0dG9uIHZpc2liaWxpdHlDaGFuZ2U9XCIuaGFuZGxlci5vbk1lc3NhZ2VCdXR0b25WaXNpYmlsaXR5Q2hhbmdlXCIgLyZndDtcbiAqIDwvcHJlPlxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk1lc3NhZ2VCdXR0b25cIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lc3NhZ2VCdXR0b24gZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPEJ1dHRvbj4ge1xuXHQvKipcblx0ICogVGhlIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBtZXNzYWdlIGJ1dHRvbidzIHZpc2liaWxpdHkgY2hhbmdlcy5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QGV2ZW50KClcblx0dmlzaWJpbGl0eUNoYW5nZSE6IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHZpc2libGU6IGJvb2xlYW4gfSwgTWVzc2FnZUJ1dHRvbj4+O1xuXG5cdF9tZXNzYWdlTW9kZWwhOiBNZXNzYWdlTW9kZWw7XG5cblx0X21lc3NhZ2VQb3BvdmVyITogTWVzc2FnZVBvcG92ZXI7XG5cblx0X21tUHJvcGVydHlCaW5kaW5nITogUHJvcGVydHlCaW5kaW5nO1xuXG5cdF9tZXNzYWdlSXRlbU1lc3NhZ2VEZXRhaWxNYXA6IFJlY29yZDxzdHJpbmcsIE1lc3NhZ2VEZXRhaWw+ID0ge307XG5cblx0Y29uc3RydWN0b3IoaWRPclNldHRpbmdzPzogc3RyaW5nIHwgUHJvcGVydGllc09mPE1lc3NhZ2VCdXR0b24+LCBzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxNZXNzYWdlQnV0dG9uPikge1xuXHRcdHN1cGVyKGlkT3JTZXR0aW5ncywgc2V0dGluZ3MpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbk1ldGFkYXRhQXZhaWxhYmxlIGV2ZW50LlxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHRcdC8vIGdldCB0aGUgbWVzc2FnZSBtb2RlbCBhbmQgYXR0YWNoIHRvIGl0J3MgY2hhbmdlIGV2ZW50LlxuXHRcdHRoaXMuX21lc3NhZ2VNb2RlbCA9IE1lc3NhZ2luZy5nZXRNZXNzYWdlTW9kZWwoKTtcblx0XHR0aGlzLl9tbVByb3BlcnR5QmluZGluZyA9IHRoaXMuX21lc3NhZ2VNb2RlbC5iaW5kUHJvcGVydHkoXCIvXCIpO1xuXHRcdHRoaXMuX21tUHJvcGVydHlCaW5kaW5nLmF0dGFjaENoYW5nZSh0aGlzLnByb2Nlc3NNZXNzYWdlcywgdGhpcyk7XG5cdFx0Y29uc3QgZXZlbnREZWxlZ2F0ZSA9IHtcblx0XHRcdG9uQmVmb3JlUmVuZGVyaW5nOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdHRoaXMucHJvY2Vzc01lc3NhZ2VzKCk7XG5cdFx0XHRcdHRoaXMucmVtb3ZlRXZlbnREZWxlZ2F0ZShldmVudERlbGVnYXRlKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdHRoaXMuYWRkRXZlbnREZWxlZ2F0ZShldmVudERlbGVnYXRlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm9jZXNzZXMgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgbW9kZWwuXG5cdCAqXG5cdCAqIEZpbHRlcnMgb3V0IHRoZSBib3VuZCBhbmQgbm9uIHRlY2huaWNhbCBtZXNzYWdlcyBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsXG5cdCAqIEFuZCBjYWxscyB0aGUgTWVzc2FnZUhhbmRsZXIuYmVmb3JlU2hvd01lc3NhZ2VCdXR0b24gY29udHJvbGxlciBleHRlbnNpb24gdG8gYWxsb3cgY29uc3VtZXJzIHRvIGFkYXB0IHRoZSBtZXNzYWdlcyB0aGF0IHdpbGwgYmUgc2hvd24uXG5cdCAqXG5cdCAqIEFkZGl0aW9uYWxseSwgaXQgYWRqdXN0cyB0aGUgbWVzc2FnZSBidXR0b24ncyBwcm9lcHJ0aWVzIGJhc2VkIG9uIHRoZSBtZXNzYWdlcyB0byBiZSBzaG93bi5cblx0ICpcblx0ICovXG5cdGFzeW5jIHByb2Nlc3NNZXNzYWdlcygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBtZXNzYWdlczogTWVzc2FnZVtdID0gdGhpcy5fbWVzc2FnZU1vZGVsPy5nZXREYXRhKCk7XG5cblx0XHQvLyBnZXQgYm91bmQgbWVzc2FnZXMuXG5cdFx0Y29uc3QgbWVzc2FnZURldGFpbHMgPSBtZXNzYWdlcy5yZWR1Y2UoKHJlZHVjZWRNZXNzYWdlczogTWVzc2FnZURldGFpbFtdLCBtZXNzYWdlKTogTWVzc2FnZURldGFpbFtdID0+IHtcblx0XHRcdGNvbnN0IGlzQm91bmQgPSBtZXNzYWdlLmdldFRhcmdldHMoKS5sZW5ndGggPiAwO1xuXHRcdFx0Y29uc3QgaXNDdXN0b21NZXNzYWdlRnJvbUV4dGVuc2lvbkFQSSA9XG5cdFx0XHRcdChtZXNzYWdlLmdldFRlY2huaWNhbERldGFpbHMoKSBhcyB1bmRlZmluZWQgfCB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSk/LmlzQ3VzdG9tTWVzc2FnZUZyb21FeHRlbnNpb25BUEkgPT09IHRydWU7XG5cdFx0XHRpZiAoaXNCb3VuZCAmJiAhaXNDdXN0b21NZXNzYWdlRnJvbUV4dGVuc2lvbkFQSSkge1xuXHRcdFx0XHRyZWR1Y2VkTWVzc2FnZXMucHVzaCh7IG1lc3NhZ2UgfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVkdWNlZE1lc3NhZ2VzO1xuXHRcdH0sIFtdKTtcblxuXHRcdGlmIChtZXNzYWdlRGV0YWlscyAmJiBtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRhd2FpdCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkubWVzc2FnZUhhbmRsZXIuYmVmb3JlU2hvd01lc3NhZ2VCdXR0b24obWVzc2FnZURldGFpbHMpO1xuXHRcdH1cblx0XHR0aGlzLmFkanVzdE1lc3NhZ2VCdXR0b25Qcm9wZXJ0aWVzKG1lc3NhZ2VEZXRhaWxzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGp1c3RzIHRoZSBtZXNzYWdlIGJ1dHRvbiBwcm9wZXJ0aWVzIGFuZCBjcmVhdGVzIGEgbWVzc2FnZSBwb3BvdmVyIHRvIHNob3cgdGhlIG1lc3NhZ2VzLlxuXHQgKlxuXHQgKiBTZXRzIHRoZSBtZXNzYWdlcyBidXR0b25zIHByb3BlcnRpZXMgb24gdGhlIGJhc2lzIG9mIG1lc3NhZ2VzIHRvIGJlIHNob3duLlxuXHQgKiBUaGUgcHJvcGVydGllcyBvZiB0aGUgbWVzc2FnZXMgYnV0dG9uIGlzIGRldGVybWluZWQgb24gdGhlIGJhc2lzIG9mIHRoZSBwcmlvcml0eSBvZiBtZXNzYWdlcyB0byBiZSBzaG93bi5cblx0ICpcblx0ICogQWRkaXRpb25hbGx5LCBjcmVhdGVzIGEgbWVzc2FnZSBwb3BvdmVyIHRvIHNob3cgdGhlIG1lc3NhZ2VzLlxuXHQgKiBAcGFyYW0gbWVzc2FnZURldGFpbHMgTWVzc2FnZSBkZXRhaWxzIHVzZWQgdG8gcmVuZGVyIGVhY2ggbWVzc2FnZSBpdGVtLlxuXHQgKi9cblx0YWRqdXN0TWVzc2FnZUJ1dHRvblByb3BlcnRpZXMobWVzc2FnZURldGFpbHM6IE1lc3NhZ2VEZXRhaWxbXSk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VJdGVtTWVzc2FnZURldGFpbE1hcCA9IHt9O1xuXHRcdGlmIChtZXNzYWdlRGV0YWlscyAmJiBtZXNzYWdlRGV0YWlscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlUHJpb3JpdHlNYXAgPSB7XG5cdFx0XHRcdEVycm9yOiAwLFxuXHRcdFx0XHRXYXJuaW5nOiAxLFxuXHRcdFx0XHRTdWNjZXNzOiAyLFxuXHRcdFx0XHRJbmZvcm1hdGlvbjogMyxcblx0XHRcdFx0Tm9uZTogNFxuXHRcdFx0fTtcblxuXHRcdFx0bGV0IGF2YWlsYWJsZUhpZ2hlc3RQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eU1hcC5Ob25lOyAvLyB3ZSBzdGFydCBmcm9tIHRoZSBsb3dlc3Rcblx0XHRcdGxldCBlcnJvckNvdW50ID0gMDtcblx0XHRcdGNvbnN0IG1lc3NhZ2VJdGVtczogTWVzc2FnZUl0ZW1bXSA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBtZXNzYWdlRGV0YWlsIG9mIG1lc3NhZ2VEZXRhaWxzKSB7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBtZXNzYWdlRGV0YWlsLm1lc3NhZ2U7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VUeXBlID0gbWVzc2FnZS5nZXRUeXBlKCk7XG5cdFx0XHRcdGNvbnN0IG1lc3NhZ2VQcmlvcml0eSA9IG1lc3NhZ2VQcmlvcml0eU1hcFttZXNzYWdlVHlwZV07XG5cdFx0XHRcdGlmIChtZXNzYWdlUHJpb3JpdHkgPCBhdmFpbGFibGVIaWdoZXN0UHJpb3JpdHkpIHtcblx0XHRcdFx0XHRhdmFpbGFibGVIaWdoZXN0UHJpb3JpdHkgPSBtZXNzYWdlUHJpb3JpdHk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG1lc3NhZ2VUeXBlID09PSBNZXNzYWdlVHlwZS5FcnJvcikge1xuXHRcdFx0XHRcdGVycm9yQ291bnQrKztcblx0XHRcdFx0fVxuXHRcdFx0XHRtZXNzYWdlSXRlbXMucHVzaCh0aGlzLmNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2VEZXRhaWwpKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IHByb3BlcnRpZXMgb24gdGhlIG1lc3NhZ2UgYnV0dG9uc1xuXG5cdFx0XHQvLyBzZXRUZXh0XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VGV4dChtZXNzYWdlRGV0YWlscy5sZW5ndGgudG9TdHJpbmcoKSk7XG5cblx0XHRcdC8vIHNldFR5cGVcblx0XHRcdGNvbnN0IHByaW9yaXRpemVkQnV0dG9uVHlwZSA9IFtcblx0XHRcdFx0QnV0dG9uVHlwZS5OZWdhdGl2ZSxcblx0XHRcdFx0QnV0dG9uVHlwZS5Dcml0aWNhbCxcblx0XHRcdFx0QnV0dG9uVHlwZS5TdWNjZXNzLFxuXHRcdFx0XHRCdXR0b25UeXBlLk5ldXRyYWwsXG5cdFx0XHRcdEJ1dHRvblR5cGUuRGVmYXVsdFxuXHRcdFx0XTtcblx0XHRcdHRoaXMuZ2V0Q29udGVudCgpPy5zZXRUeXBlKHByaW9yaXRpemVkQnV0dG9uVHlwZVthdmFpbGFibGVIaWdoZXN0UHJpb3JpdHldKTtcblxuXHRcdFx0Ly8gc2V0VG9vbHRpcFxuXHRcdFx0Y29uc3QgcHJpb3JpdGl6ZWRUb29sVGlwS2V5ID0gW1xuXHRcdFx0XHRcIkNfQ09NTU9OX1NBUEZFX0VSUk9SX01FU1NBR0VTX1BBR0VfVElUTEVfRVJST1JcIixcblx0XHRcdFx0XCJDX0NPTU1PTl9TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1dBUk5JTkdfVE9PTFRJUFwiLFxuXHRcdFx0XHRcIkNfTUVTU0FHRV9IQU5ETElOR19TQVBGRV9FUlJPUl9NRVNTQUdFU19QQUdFX1RJVExFX1NVQ0NFU1NcIixcblx0XHRcdFx0XCJDX01FU1NBR0VfSEFORExJTkdfU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9USVRMRV9JTkZPXCIsXG5cdFx0XHRcdFwiXCJcblx0XHRcdF07XG5cdFx0XHRjb25zdCB0b29sdGlwS2V5ID1cblx0XHRcdFx0ZXJyb3JDb3VudCA+IDFcblx0XHRcdFx0XHQ/IFwiQ19DT01NT05fU0FQRkVfRVJST1JfTUVTU0FHRVNfUEFHRV9NVUxUSVBMRV9FUlJPUl9UT09MVElQXCJcblx0XHRcdFx0XHQ6IHByaW9yaXRpemVkVG9vbFRpcEtleVthdmFpbGFibGVIaWdoZXN0UHJpb3JpdHldO1xuXHRcdFx0bGV0IHRvb2x0aXBUZXh0ID0gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dCh0b29sdGlwS2V5KTtcblx0XHRcdGlmIChlcnJvckNvdW50ID4gMSkge1xuXHRcdFx0XHR0b29sdGlwVGV4dCA9IGAke2Vycm9yQ291bnR9ICAke3Rvb2x0aXBUZXh0fWA7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VG9vbHRpcCh0b29sdGlwVGV4dCk7XG5cblx0XHRcdC8vIHNldFZpc2libGVcblx0XHRcdGlmICghdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSkge1xuXHRcdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VmlzaWJsZSh0cnVlKTtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ2aXNpYmlsaXR5Q2hhbmdlXCIsIHsgdmlzaWJsZTogdGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSB9KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYWxzbyBzaG93IHRoZSBtZXNzYWdlIHBvcG92ZXJcblx0XHRcdHRoaXMuY3JlYXRlTWVzc2FnZVBvcG92ZXIobWVzc2FnZUl0ZW1zKTtcblx0XHR9XG5cblx0XHRpZiAobWVzc2FnZURldGFpbHMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRpZiAodGhpcy5nZXRDb250ZW50KCk/LmdldFZpc2libGUoKSkge1xuXHRcdFx0XHR0aGlzLmdldENvbnRlbnQoKT8uc2V0VmlzaWJsZShmYWxzZSk7XG5cdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwidmlzaWJpbGl0eUNoYW5nZVwiLCB7IHZpc2libGU6IHRoaXMuZ2V0Q29udGVudCgpPy5nZXRWaXNpYmxlKCkgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBtZXNzYWdlIEl0ZW0uXG5cdCAqIEBwYXJhbSBtZXNzYWdlRGV0YWlsIE1lc3NhZ2UgZGV0YWlsIHJlbGV2YW50IGZvciBjcmVhdGluZyB0aGUgbWVzc2FnZSBpdGVtLlxuXHQgKiBAcmV0dXJucyBNZXNzYWdlSXRlbSBjcmVhdGVkIGZyb20gTWVzc2FnZSBEZXRhaWxcblx0ICovXG5cdGNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2VEZXRhaWw6IE1lc3NhZ2VEZXRhaWwpOiBNZXNzYWdlSXRlbSB7XG5cdFx0Y29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VEZXRhaWwubWVzc2FnZTtcblx0XHRjb25zdCBtZXNzYWdlSXRlbSA9IChcblx0XHRcdDxNZXNzYWdlSXRlbVxuXHRcdFx0XHR0aXRsZT17bWVzc2FnZS5nZXRNZXNzYWdlKCl9XG5cdFx0XHRcdGRlc2NyaXB0aW9uPXttZXNzYWdlLmdldERlc2NyaXB0aW9uKCl9XG5cdFx0XHRcdHR5cGU9e21lc3NhZ2UuZ2V0VHlwZSgpfVxuXHRcdFx0XHRtYXJrdXBEZXNjcmlwdGlvbj17dHJ1ZX1cblx0XHRcdFx0bG9uZ3RleHRVcmw9e21lc3NhZ2UuZ2V0RGVzY3JpcHRpb25VcmwoKX1cblx0XHRcdFx0c3VidGl0bGU9e21lc3NhZ2UuZ2V0QWRkaXRpb25hbFRleHQoKX1cblx0XHRcdFx0Z3JvdXBOYW1lPXttZXNzYWdlRGV0YWlsLmdyb3VwTmFtZSB8fCB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiVF9NRVNTQUdFX0JVVFRPTl9TQVBGRV9NRVNTQUdFX0dST1VQX0dFTkVSQUxcIil9XG5cdFx0XHRcdGFjdGl2ZVRpdGxlPXttZXNzYWdlLmdldENvbnRyb2xJZHMoKS5sZW5ndGggPiAwIHx8IHR5cGVvZiBtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlciA9PT0gXCJmdW5jdGlvblwifVxuXHRcdFx0Lz5cblx0XHQpIGFzIE1lc3NhZ2VJdGVtO1xuXHRcdHRoaXMuX21lc3NhZ2VJdGVtTWVzc2FnZURldGFpbE1hcFttZXNzYWdlSXRlbS5nZXRJZCgpXSA9IG1lc3NhZ2VEZXRhaWw7XG5cdFx0cmV0dXJuIG1lc3NhZ2VJdGVtO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBtZXNzYWdlIFBvcG92ZXIuXG5cdCAqIEBwYXJhbSBtZXNzYWdlSXRlbXNcblx0ICovXG5cdGNyZWF0ZU1lc3NhZ2VQb3BvdmVyKG1lc3NhZ2VJdGVtczogTWVzc2FnZUl0ZW1bXSk6IHZvaWQge1xuXHRcdHRoaXMuX21lc3NhZ2VQb3BvdmVyPy5kZXN0cm95KCk7XG5cdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXIgPSAoXG5cdFx0XHQ8TWVzc2FnZVBvcG92ZXJcblx0XHRcdFx0Z3JvdXBJdGVtcz17dHJ1ZX1cblx0XHRcdFx0YWN0aXZlVGl0bGVQcmVzcz17KHByZXNzRXZlbnQ6IE1lc3NhZ2VQb3BvdmVyJEFjdGl2ZVRpdGxlUHJlc3NFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG1lc3NhZ2VJdGVtID0gcHJlc3NFdmVudC5nZXRQYXJhbWV0ZXIoXCJpdGVtXCIpO1xuXHRcdFx0XHRcdHRoaXMuaGFuZGxlQWN0aXZlVGl0bGVQcmVzcyhtZXNzYWdlSXRlbSk7XG5cdFx0XHRcdH19XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0aXRlbXM6IG1lc3NhZ2VJdGVtc1xuXHRcdFx0XHR9fVxuXHRcdFx0PC9NZXNzYWdlUG9wb3Zlcj5cblx0XHQpIGFzIE1lc3NhZ2VQb3BvdmVyO1xuXHRcdHRoaXMuZ2V0Q29udGVudCgpPy5hZGREZXBlbmRlbnQodGhpcy5fbWVzc2FnZVBvcG92ZXIpO1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0dGhpcy5fbWVzc2FnZVBvcG92ZXIub3BlbkJ5KHRoaXMuZ2V0Q29udGVudCgpIGFzIEJ1dHRvbik7XG5cdFx0fSwgMCk7XG5cdH1cblx0LyoqXG5cdCAqIEhhbmRsZXMgYWN0aXZlIHRpdGxlIHByZXNzLlxuXHQgKlxuXHQgKiBJZiBhbiBhY3RpdmVUaXRsZUhhbmRsZXIgaXMgcHJvdmlkZWQgYnkgdGhlIGNvbnN1bWVyIHZpYSB0aGUgY29udHJvbGxlciBleHRlbnNpb24gdGhlbiBpdCBpcyBjYWxsZWQuXG5cdCAqIE90aGVyd2lzZSwgd2UgdHJ5IHRvIGZvY3VzIG9uIHRoZSBjb250cm9sIGlmIGEgY29udHJvbCBJZCBpbiB0aGUgbWVzc2FnZSBpcyBhdmFpbGFibGUuXG5cdCAqIEBwYXJhbSBtZXNzYWdlSXRlbVxuXHQgKi9cblx0aGFuZGxlQWN0aXZlVGl0bGVQcmVzcyhtZXNzYWdlSXRlbT86IE1lc3NhZ2VJdGVtKTogdm9pZCB7XG5cdFx0aWYgKG1lc3NhZ2VJdGVtKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlRGV0YWlsID0gdGhpcy5fbWVzc2FnZUl0ZW1NZXNzYWdlRGV0YWlsTWFwW21lc3NhZ2VJdGVtPy5nZXRJZCgpXTtcblx0XHRcdGlmIChtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlcikge1xuXHRcdFx0XHRtZXNzYWdlRGV0YWlsLmFjdGl2ZVRpdGxlSGFuZGxlcihtZXNzYWdlRGV0YWlsLm1lc3NhZ2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgY29udHJvbElkID0gbWVzc2FnZURldGFpbC5tZXNzYWdlLmdldENvbnRyb2xJZCgpO1xuXHRcdFx0XHRjb25zdCBjb250cm9sID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChjb250cm9sSWQpO1xuXHRcdFx0XHRpZiAoY29udHJvbCkge1xuXHRcdFx0XHRcdGNvbnRyb2wuZm9jdXMoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJtZXNzYWdlIGl0ZW0gbm90IGZvdW5kIVwiKTtcblx0XHR9XG5cdH1cblxuXHRkZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuX21tUHJvcGVydHlCaW5kaW5nLmRlc3Ryb3koKTtcblx0fVxuXHQvKipcblx0ICogVG9nZ2xlIGhhbmRsZXIgZm9yIHRoZSBtZXNzYWdlIHBvcG92ZXIuXG5cdCAqL1xuXHR0b2dnbGVNZXNzYWdlUG9wb3ZlcigpOiB2b2lkIHtcblx0XHR0aGlzLl9tZXNzYWdlUG9wb3Zlci50b2dnbGUodGhpcy5jb250ZW50IGFzIEJ1dHRvbik7XG5cdH1cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGNvbnRlbnQgZm9yIHRoZSBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgVGhlIGNyZWF0ZWQgY29udGVudCBjb250cm9sLlxuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBCdXR0b24ge1xuXHRcdHJldHVybiA8QnV0dG9uIHZpc2libGU9XCJmYWxzZVwiIHByZXNzPXt0aGlzLnRvZ2dsZU1lc3NhZ2VQb3BvdmVyLmJpbmQodGhpcyl9IC8+O1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVhBLElBYXFCQSxhQUFhLElBQUFDLElBQUEsR0FEakNDLGNBQWMsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFBQyxLQUFBLEdBTTVDQyxLQUFLLENBQUMsQ0FBQyxFQUFBSCxJQUFBLENBQUFJLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsY0FBQTtJQVdSLFNBQUFQLGNBQVlRLFlBQW1ELEVBQUVDLFFBQXNDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ3hHQSxLQUFBLEdBQUFILGNBQUEsQ0FBQUksSUFBQSxPQUFNSCxZQUFZLEVBQUVDLFFBQVEsQ0FBQztNQWhCOUI7QUFDRDtBQUNBO0FBQ0E7TUFIQ0csMEJB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
@@ -85,8 +85,9 @@ export default class MessageButton extends BuildingBlock<Button> {
85
85
  // get bound messages.
86
86
  const messageDetails = messages.reduce((reducedMessages: MessageDetail[], message): MessageDetail[] => {
87
87
  const isBound = message.getTargets().length > 0;
88
- const isMessageTechnical = message.getTechnical();
89
- if (isBound) {
88
+ const isCustomMessageFromExtensionAPI =
89
+ (message.getTechnicalDetails() as undefined | { [key: string]: unknown })?.isCustomMessageFromExtensionAPI === true;
90
+ if (isBound && !isCustomMessageFromExtensionAPI) {
90
91
  reducedMessages.push({ message });
91
92
  }
92
93
  return reducedMessages;
@@ -95,7 +95,8 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
95
95
  }), _dec6 = property({
96
96
  type: "string"
97
97
  }), _dec7 = property({
98
- type: "string"
98
+ type: "string",
99
+ allowedValues: ["XS", "S", "M", "L"]
99
100
  }), _dec8 = property({
100
101
  type: "boolean"
101
102
  }), _dec9 = property({
@@ -599,4 +600,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
599
600
  _exports = MicroChart;
600
601
  return _exports;
601
602
  }, false);
602
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZpZ2F0aW9uVHlwZSIsIk1pY3JvQ2hhcnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJyZXR1cm5UeXBlcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJyZXF1aXJlZCIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsImV2ZW50IiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiX2RlYzE3IiwiX2RlYzE4IiwiX2RlYzE5IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwic2V0dGluZ3MiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIl9kZXNjcmlwdG9yMTciLCJfZGVzY3JpcHRvcjE4IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImFwcGx5U2V0dGluZ3MiLCJtU2V0dGluZ3MiLCJvU2NvcGUiLCJfZG9Ob3RDcmVhdGVPbk51bGxDb250ZXh0IiwiX3Zpc2liaWxpdHlDaGVjayIsImdldFNvcnRPcmRlciIsInNvcnRpbmdQcm9wcyIsIm1hcCIsInNvcnRpbmdQcm9wIiwiUHJvcGVydHkiLCJ2YWx1ZSIsIkRlc2NlbmRpbmciLCJmdWxseVF1YWxpZmllZE5hbWUiLCIkVHlwZSIsInNldFByb3BlcnR5Iiwia2V5Iiwic3VwcHJlc3NJbnZhbGlkYXRlIiwiX2FwcGx5aW5nU2V0dGluZ3MiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0TWV0YWRhdGEiLCJnZXRQcm9wZXJ0aWVzIiwiaW5jbHVkZXMiLCJjb250ZW50IiwiZGVzdHJveSIsImNyZWF0ZUNvbnRlbnQiLCJjcmVhdGVNaWNyb0NoYXJ0IiwiY2xvbmUiLCJpZFN1ZmZpeCIsImxvY2FsSWRzIiwiY2xvbmVkTWljcm9DaGFydCIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJvd25lciIsIl9nZXRPd25lciIsImNvbnRleHRQYXRoIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsImZ1bGxDb250ZXh0UGF0aCIsIm9kYXRhTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsInRhcmdldE9iamVjdCIsInRlcm0iLCJTb3J0T3JkZXIiLCJsZW5ndGgiLCJfc29ydE9yZGVyIiwiVmlzdWFsaXphdGlvbnMiLCJnZXRUYXJnZXROYXZpZ2F0aW9uUGF0aCIsIl9jaGFydFRhcmdldCIsIl9tZWFzdXJlRGF0YVBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsIk1lYXN1cmVzIiwiTWljcm9DaGFydEhlbHBlciIsInNob3VsZFJlbmRlck1pY3JvQ2hhcnQiLCJfZGF0YVBvaW50IiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJEYXRhUG9pbnQiLCIkdGFyZ2V0IiwiX3RhcmdldE5hdmlnYXRpb25QYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJzaG93T25seUNoYXJ0IiwibG9nV2FybmluZyIsImNoYXJ0TWFwIiwidHlwZTEiLCJDaGFydFR5cGUiLCJDaGFydENvbXBvbmVudCIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwibWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJpc0FuYWx5dGljcyIsImdldEFnZ3JlZ2F0aW9uIiwic2V0QWdncmVnYXRpb24iLCJfanN4IiwiZ2V0TWljcm9DaGFydFByb3BlcnRpZXMiLCJjaGlsZHJlbiIsImVycm9yT2JqZWN0IiwiVmFsdWUiLCJtaWNyb0NoYXJ0UHJvcGVydGllcyIsInNpemUiLCJoaWRlT25Ob0RhdGEiLCJkYXRhUG9pbnRQYXRoIiwiZ2V0QWdncmVnYXRpb25Gb3JNaWNyb2NoYXJ0IiwiZ2V0T2JqZWN0IiwiRGltZW5zaW9ucyIsImdldEJ1bGxldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzIiwiZ2V0UmFkaWFsTWljcm9DaGFydFByb3BlcnRpZXMiLCJnZXRIYXJ2ZXlNaWNyb0NoYXJ0UHJvcGVydGllcyIsImJhcnMiLCJjb2x1bW5zIiwibWF4VmFsdWUiLCJNYXhpbXVtVmFsdWUiLCJjb21waWxlRXhwcmVzc2lvbiIsImNvbnN0YW50IiwidmFsdWVPZiIsIm1pblZhbHVlIiwiTWluaW11bVZhbHVlIiwiY29sb3JQYWxldHRlIiwiZ2V0Q29sb3JQYWxldHRlRm9yTWljcm9DaGFydCIsImRhdGEiLCJzaG93VGhyZXNob2xkTGluZSIsImNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQiLCJDcml0aWNhbGl0eSIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0IiwiZ2V0QnVsbGV0TWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldFN0YWNrTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldEhhcnZleU1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRDb21wYXJpc29uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldEFyZWFNaWNyb0NoYXJ0QWdncmVnYXRpb25zIiwiZ2V0Q29sdW1uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldExpbmVNaWNyb0NoYXJ0QWdncmFnYXRpb25zIiwiY3JlYXRlTWljcm9DaGFydElkIiwiY2hhcnRUeXBlIiwiY2hhcnRJRFByZWZpeCIsImNyZWF0ZUlkIiwiZ2V0TWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMiLCJtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcyIsImNoYXJ0VGl0bGUiLCJ0aXRsZSIsIlRpdGxlIiwiY2hhcnREZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwiRGVzY3JpcHRpb24iLCJfYmluZGluZyIsImdldEJpbmRpbmdFeHByZXNzaW9uRm9yTWljcm9jaGFydCIsInVvbVBhdGgiLCJnZXRVT01QYXRoRm9yTWljcm9jaGFydCIsImlkIiwiY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eSIsInZpc2libGUiLCJub3QiLCJpZkVsc2UiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGlkZGVuIiwiZGF0YVBvaW50UXVhbGlmaWVycyIsImdldERhdGFQb2ludFF1YWxpZmllcnNGb3JNaWNyb0NoYXJ0IiwibWVhc3VyZXMiLCJuYW1lIiwiZ2V0TWVhc3VyZVByb3BlcnR5UGF0aHMiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1lYXN1cmVzIiwiZGltZW5zaW9uRGF0YVBhdGgiLCJkaW1lbnNpb24iLCJDb21tb24iLCJUZXh0IiwicGF0aCIsIm1lYXN1cmVQcmVjaXNpb24iLCJwcmVjaXNpb24iLCJtZWFzdXJlU2NhbGUiLCJnZXRNZWFzdXJlU2NhbGVGb3JNaWNyb0NoYXJ0IiwiZGltZW5zaW9uUHJlY2lzaW9uIiwiY2FsZW5kYXJQYXR0ZXJuIiwiZ2V0Q2FsZW5kYXJQYXR0ZXJuIiwiY3JlYXRlVGl0bGUiLCJ0aXRsZVRleHQiLCJsb2NhbExlZ2FjeVRpdGxlSWQiLCJJRCIsImdlbmVyYXRlIiwicXVhbGlmaWVyIiwidmlld0lkIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRWaWV3IiwiZ2V0SWQiLCJsZWdhY3lUaXRsZUlkIiwidGl0bGVMaW5rUHJvcGVydGllcyIsInRleHQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwibmF2aWdhdGlvblR5cGUiLCJhcmlhVHJhbnNsYXRlZFRleHQiLCJnZXRUZXh0Iiwic2hvd0FzTGluayIsImxpbmtBcmlhVGV4dCIsInNob3dMaW5rIiwiQ29tbW9uSGVscGVyIiwiZ2V0SGVhZGVyRGF0YVBvaW50TGlua1Zpc2liaWxpdHkiLCJUaXRsZUxpbmsiLCJsaW5rUHJlc3MiLCJwcmVzc0V2ZW50IiwiZmlyZUV2ZW50IiwiaXNWYWxpZENoYXJ0VHlwZSIsIkNvbmRpdGlvbmFsV3JhcHBlciIsImNvbmRpdGlvbiIsIm9yIiwicGF0aEluTW9kZWwiLCJlcXVhbCIsImdldEV4cHJlc3Npb25Gb3JNZWFzdXJlVW5pdCIsImNvbnRlbnRUcnVlIiwiY3JlYXRlQ2hhcnRDb250ZW50IiwiY29udGVudEZhbHNlIiwiYmluZGluZyIsIk1pY3JvQ2hhcnRDb250YWluZXIiLCJtaWNyb0NoYXJ0VGl0bGUiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIiwiTm9uZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTWljcm9DaGFydC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIFByb3BlcnR5LCBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgTWVhc3VyZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQW5hbHl0aWNzXCI7XG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlclR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHsgQ29tbW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9ucyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvRWRtX1R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFQb2ludCwgRGF0YVBvaW50VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IENoYXJ0VHlwZSwgVUlBbm5vdGF0aW9uVGVybXMsIHR5cGUgQ2hhcnQsIHR5cGUgUHJlc2VudGF0aW9uVmFyaWFudCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCBub3QsIG9yLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0ICogYXMgSUQgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBlbmhhbmNlRGF0YU1vZGVsUGF0aCwgZ2V0VGFyZ2V0TmF2aWdhdGlvblBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRFeHByZXNzaW9uRm9yTWVhc3VyZVVuaXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgdHlwZSB7ICRDb2x1bW5NaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29sdW1uTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29tcGFyaXNvbk1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9Db21wYXJpc29uTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkTGluZU1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9MaW5lTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkU3RhY2tlZEJhck1pY3JvQ2hhcnRTZXR0aW5ncyB9IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9TdGFja2VkQmFyTWljcm9DaGFydFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzLCBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCIuL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IENvbmRpdGlvbmFsV3JhcHBlciBmcm9tIFwiLi9jb250cm9scy9Db25kaXRpb25hbFdyYXBwZXJcIjtcbmltcG9ydCBUaXRsZUxpbmsgZnJvbSBcIi4vaW50ZXJuYWwvVGl0bGVMaW5rXCI7XG5pbXBvcnQgTWljcm9DaGFydENvbnRhaW5lciBmcm9tIFwiLi9taWNyb2NoYXJ0L01pY3JvQ2hhcnRDb250YWluZXJcIjtcbmltcG9ydCB0eXBlIHsgTWljcm9DaGFydEFnZ3JlZ2F0aW9uLCBNaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwiLi9taWNyb2NoYXJ0L01pY3JvQ2hhcnRIZWxwZXJcIjtcbmltcG9ydCBNaWNyb0NoYXJ0SGVscGVyIGZyb20gXCIuL21pY3JvY2hhcnQvTWljcm9DaGFydEhlbHBlclwiO1xuXG50eXBlIEVycm9yT2JqZWN0VHlwZSA9IHtcblx0RGF0YVBvaW50X1ZhbHVlPzogdW5rbm93bjtcbn07XG5cbmVudW0gTmF2aWdhdGlvblR5cGUge1xuXHQvKipcblx0ICogRm9yIEV4dGVybmFsIE5hdmlnYXRpb25cblx0ICovXG5cdEV4dGVybmFsID0gXCJFeHRlcm5hbFwiLFxuXG5cdC8qKlxuXHQgKiBGb3IgSW4tUGFnZSBOYXZpZ2F0aW9uXG5cdCAqL1xuXHRJblBhZ2UgPSBcIkluUGFnZVwiLFxuXG5cdC8qKlxuXHQgKiBGb3IgTm8gTmF2aWdhdGlvblxuXHQgKi9cblx0Tm9uZSA9IFwiTm9uZVwiXG59XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgdXNlZCB0byBjcmVhdGUgYSBNaWNyb0NoYXJ0IGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2J1aWxkaW5nQmxvY2tzL21pY3JvY2hhcnQvIE92ZXJ2aWV3IG9mIE1pY3JvIENoYXJ0IEJ1aWxkaW5nIEJsb2NrfVxuICogPGJyPlxuICogVXN1YWxseSwgYSBjb250ZXh0UGF0aCBhbmQgbWV0YVBhdGggaXMgZXhwZWN0ZWQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvczpNaWNyb0NoYXJ0IGlkPVwiTXlNaWNyb0NoYXJ0XCIgY29udGV4dFBhdGg9XCIvUm9vdEVudGl0eVwiIG1ldGFQYXRoPVwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCIgLyZndDtcbiAqIDwvcHJlPlxuICogIDxwcmU+XG4gKiBzYXAudWkucmVxdWlyZShbXCJzYXAvZmUvbWFjcm9zL01pY3JvQ2hhcnRcIl0sIGZ1bmN0aW9uKE1pY3JvQ2hhcnQpIHtcbiAqIFx0IC4uLlxuICogXHQgbmV3IE1pY3JvQ2hhcnQoXCJteU1pY3JvQ2hhcnRcIiwge21ldGFQYXRoOlwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCJ9KVxuICogfSlcbiAqIDwvcHJlPlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuTWljcm9DaGFydFxuICogQHVpNS1tZXRhbW9kZWxcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjkzLjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5NaWNyb0NoYXJ0XCIsIHtcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MubWljcm9jaGFydC5NaWNyb0NoYXJ0Q29udGFpbmVyXCIsIFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNaWNyb0NoYXJ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jazxNaWNyb0NoYXJ0Q29udGFpbmVyPiB7XG5cdC8qKlxuXHQgKiBUbyBjb250cm9sIHRoZSByZW5kZXJpbmcgb2YgVGl0bGUsIFN1YnRpdGxlIGFuZCBDdXJyZW5jeSBMYWJlbHMuIFdoZW4gdGhlIHNpemUgaXMgeHMgdGhlbiB3ZSBkb1xuXHQgKiBub3Qgc2VlIHRoZSBpbm5lciBsYWJlbHMgb2YgdGhlIE1pY3JvQ2hhcnQgYXMgd2VsbC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRwdWJsaWMgc2hvd09ubHlDaGFydCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSAgTWljcm9DaGFydC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogY29udGV4dCBwYXRoIHRvIHRoZSBNaWNyb0NoYXJ0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUeXBlIG9mIG5hdmlnYXRpb24sIHRoYXQgaXMsIEV4dGVybmFsIG9yIEluUGFnZVxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdG5hdmlnYXRpb25UeXBlPzogTmF2aWdhdGlvblR5cGUgPSBOYXZpZ2F0aW9uVHlwZS5Ob25lO1xuXG5cdC8qKlxuXHQgKiBCYXRjaCBncm91cCBJRCBhbG9uZyB3aXRoIHdoaWNoIHRoaXMgY2FsbCBzaG91bGQgYmUgZ3JvdXBlZC5cblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YmF0Y2hHcm91cElkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTaXplIG9mIHRoZSBNaWNyb0NoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0c2l6ZT86IHN0cmluZztcblxuXHQvKipcblx0ICogU2hvdyBibGFuayBzcGFjZSBpbiBjYXNlIHRoZXJlIGlzIG5vIGRhdGEgaW4gdGhlIGNoYXJ0XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdGhpZGVPbk5vRGF0YT86IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHRpdGxlID0gXCJcIjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGRlc2NyaXB0aW9uID0gXCJcIjtcblxuXHRAZXZlbnQoKVxuXHR0aXRsZVByZXNzITogRnVuY3Rpb247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfY2hhcnRUYXJnZXQhOiBDaGFydDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdF9kYXRhUG9pbnQhOiBEYXRhUG9pbnQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfdGFyZ2V0TmF2aWdhdGlvblBhdGghOiBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0X21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoITogRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+IHwgdW5kZWZpbmVkO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0X2JpbmRpbmchOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfc29ydE9yZGVyPzogU29ydE9yZGVyVHlwZVtdO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0X21lYXN1cmVEYXRhUGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aXNBbmFseXRpY3M/OiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yKHNldHRpbmdzPzogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Piwgb3RoZXJzPzogUHJvcGVydGllc09mPE1pY3JvQ2hhcnQ+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdH1cblxuXHRvdmVycmlkZSBhcHBseVNldHRpbmdzKG1TZXR0aW5nczogJE1hbmFnZWRPYmplY3RTZXR0aW5ncywgb1Njb3BlPzogb2JqZWN0KTogdGhpcyB7XG5cdFx0dGhpcy5fZG9Ob3RDcmVhdGVPbk51bGxDb250ZXh0ID0gdHJ1ZTtcblx0XHR0aGlzLl92aXNpYmlsaXR5Q2hlY2sgPSB0cnVlO1xuXHRcdHJldHVybiBzdXBlci5hcHBseVNldHRpbmdzKG1TZXR0aW5ncywgb1Njb3BlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBzb3J0T3JkZXIgZm9yIHRoZSBtaWNyb0NoYXJ0IGFzIG1lbnRpb25lZCBpbiB0aGUgUHJlc2VudGF0aW9uVmFyaWFudC5cblx0ICogQHBhcmFtIHNvcnRpbmdQcm9wcyBTb3J0ZXJzIGZyb20gUHJlc2VudGF0aW9uVmFyaWFudC5cblx0ICogQHJldHVybnMgU29ydE9yZGVyXG5cdCAqL1xuXHRnZXRTb3J0T3JkZXIoc29ydGluZ1Byb3BzOiBTb3J0T3JkZXJUeXBlW10pOiBTb3J0T3JkZXJUeXBlW10ge1xuXHRcdHJldHVybiBzb3J0aW5nUHJvcHMubWFwKChzb3J0aW5nUHJvcDogU29ydE9yZGVyVHlwZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0UHJvcGVydHk6IHNvcnRpbmdQcm9wLlByb3BlcnR5Py52YWx1ZSBhcyB1bmtub3duIGFzIFByb3BlcnR5UGF0aCxcblx0XHRcdFx0RGVzY2VuZGluZzogc29ydGluZ1Byb3AuRGVzY2VuZGluZyBhcyBib29sZWFuIHwgdW5kZWZpbmVkLFxuXHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IFwiXCIsXG5cdFx0XHRcdCRUeXBlOiBDb21tb25Bbm5vdGF0aW9uVHlwZXMuU29ydE9yZGVyVHlwZVxuXHRcdFx0fTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBrZXkgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUgZm9yIE1pY3JvQ2hhcnQuXG5cdCAqIEBwYXJhbSBrZXkgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHNldFxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldCB0aGUgcHJvcGVydHkgdG9cblx0ICogQHBhcmFtIHN1cHByZXNzSW52YWxpZGF0ZSAgSWYgdHJ1ZSwgdGhlIG1hbmFnZWQgb2JqZWN0IGlzIG5vdCBtYXJrZWQgYXMgY2hhbmdlZFxuXHQgKiBAcmV0dXJucyBNaWNyb0NoYXJ0XG5cdCAqL1xuXHRzZXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4sIHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB0aGlzIHtcblx0XHRpZiAoIXRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBPYmplY3Qua2V5cyh0aGlzLmdldE1ldGFkYXRhKCkuZ2V0UHJvcGVydGllcygpKS5pbmNsdWRlcyhrZXkpKSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShrZXksIHZhbHVlLCB0cnVlKTtcblx0XHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdFx0dGhpcy5jb250ZW50LmRlc3Ryb3koKTtcblx0XHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0XHRcdHRoaXMuY3JlYXRlTWljcm9DaGFydCgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5zZXRQcm9wZXJ0eShrZXksIHZhbHVlLCBzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBPdmVycmlkZXMgdGhlIGNsb25lIG1ldGhvZCBvZiB0aGUgVUk1IGNvbnRyb2wgdG8gZW5zdXJlIHRoYXQgdGhlIHN1aXRlIG1pY3JvIGNoYXJ0IGlzIGNyZWF0ZWQgYXN5bmNocm9ub3VzbHkgb24gdGhlIGNsb25lLlxuXHQgKlxuXHQgKiBDbG9uZSBpcyBhIFVJNSBjb3JlIENvbnRyb2wgbWV0aG9kLCB3aGljaCBpcyBub3QgYXN5bmMgYW5kIGlzIGNhbGxlZCBpbiBhIHN5bmMgbWFubmVyIHRocm91Z2hvdXQgVUk1LlxuXHQgKiBIZW5jZSB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgY2hhcnQgaW4gYSBmaXJlIGFuZCBmb3JnZXQgZmFzaGlvbi5cblx0ICogQHBhcmFtIGlkU3VmZml4IEEgc3VmZml4IHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBjbG9uZWQgZWxlbWVudCBpZFxuXHQgKiBAcGFyYW0gbG9jYWxJZHMgQW4gYXJyYXkgb2YgbG9jYWwgSURzIHdpdGhpbiB0aGUgY2xvbmVkIGhpZXJhcmNoeSAoaW50ZXJuYWxseSB1c2VkKVxuXHQgKiBAcmV0dXJucyBUaGUgcmVmZXJlbmNlIHRvIHRoZSBuZXdseSBjcmVhdGUgY2xvbmVcblx0ICovXG5cdGNsb25lKGlkU3VmZml4Pzogc3RyaW5nIHwgdW5kZWZpbmVkLCBsb2NhbElkcz86IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0Y29uc3QgY2xvbmVkTWljcm9DaGFydCA9IHN1cGVyLmNsb25lKGlkU3VmZml4LCBsb2NhbElkcyk7XG5cdFx0Y2xvbmVkTWljcm9DaGFydC5jcmVhdGVNaWNyb0NoYXJ0KCk7XG5cdFx0cmV0dXJuIGNsb25lZE1pY3JvQ2hhcnQ7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgb25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRcdHRoaXMuY29udGV4dFBhdGggPSB0aGlzLmNvbnRleHRQYXRoID8/IG93bmVyPy5wcmVwcm9jZXNzb3JDb250ZXh0Py5mdWxsQ29udGV4dFBhdGg7XG5cdFx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+KFxuXHRcdFx0XHR0aGlzLm1ldGFQYXRoLFxuXHRcdFx0XHR0aGlzLmNvbnRleHRQYXRoXG5cdFx0XHQpO1xuXHRcdFx0aWYgKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpIHtcblx0XHRcdFx0aWYgKCh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyIGFzIHVua25vd24gYXMgU29ydE9yZGVyVHlwZVtdIHwgdW5kZWZpbmVkKT8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5fc29ydE9yZGVyID0gdGhpcy5nZXRTb3J0T3JkZXIodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LlNvcnRPcmRlcik7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPENoYXJ0Pihcblx0XHRcdFx0XHRgJHt0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuVmlzdWFsaXphdGlvbnNbMF0udmFsdWV9YCxcblx0XHRcdFx0XHRnZXRUYXJnZXROYXZpZ2F0aW9uUGF0aCh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCkgKyBcIi9cIlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoKSB7XG5cdFx0XHRcdGlmICh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHQodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LlNvcnRPcmRlciBhcyB1bmtub3duIGFzIFNvcnRPcmRlclR5cGVbXSB8IHVuZGVmaW5lZCk/Lmxlbmd0aCAhPVxuXHRcdFx0XHRcdFx0bnVsbFxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fc29ydE9yZGVyID0gdGhpcy5nZXRTb3J0T3JkZXIodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LlNvcnRPcmRlcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0ID0gdGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIENoYXJ0O1xuXHRcdFx0XHR0aGlzLl9tZWFzdXJlRGF0YVBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxNZWFzdXJlPihcblx0XHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldC5NZWFzdXJlc1swXS52YWx1ZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoTWljcm9DaGFydEhlbHBlci5zaG91bGRSZW5kZXJNaWNyb0NoYXJ0KHRoaXMuX2NoYXJ0VGFyZ2V0KSkge1xuXHRcdFx0XHRcdHRoaXMuX2RhdGFQb2ludCA9IHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py4kdGFyZ2V0IGFzIERhdGFQb2ludDtcblx0XHRcdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChcblx0XHRcdFx0XHRcdGdldFRhcmdldE5hdmlnYXRpb25QYXRoKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoKVxuXHRcdFx0XHRcdCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdHRoaXMuc2hvd09ubHlDaGFydCA9IHR5cGVvZiB0aGlzLnNob3dPbmx5Q2hhcnQgPT09IFwic3RyaW5nXCIgPyB0aGlzLnNob3dPbmx5Q2hhcnQgPT09IFwidHJ1ZVwiIDogdGhpcy5zaG93T25seUNoYXJ0O1xuXHRcdFx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMuY3JlYXRlTWljcm9DaGFydCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMubG9nV2FybmluZygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgY3JlYXRlTWljcm9DaGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjaGFydE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0J1bGxldFwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQnVsbGV0TWljcm9DaGFydGAsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9Eb251dFwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvUmFkaWFsTWljcm9DaGFydGAsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9QaWVcIjogYHNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0hhcnZleUJhbGxNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0JhclN0YWNrZWRcIjogYHNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L1N0YWNrZWRCYXJNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0NvbHVtblwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29sdW1uTWljcm9DaGFydGAsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9CYXJcIjogYHNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0NvbXBhcmlzb25NaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0xpbmVcIjogYHNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0xpbmVNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0FyZWFcIjogYHNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0FyZWFNaWNyb0NoYXJ0YFxuXHRcdH07XG5cblx0XHRjb25zdCB0eXBlMSA9IHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZTtcblx0XHRpZiAoT2JqZWN0LmtleXMoY2hhcnRNYXApLmluY2x1ZGVzKHR5cGUxKSkge1xuXHRcdFx0Y29uc3QgQ2hhcnRDb21wb25lbnQgPSAoYXdhaXQgaW1wb3J0KGNoYXJ0TWFwW3R5cGUxXSkpLmRlZmF1bHQ7XG5cdFx0XHRjb25zdCBtaWNyb0NoYXJ0QWdncmVnYXRpb25zID0gYXdhaXQgdGhpcy5nZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zKCk7XG5cdFx0XHRpZiAodGhpcy5pc0FuYWx5dGljcykge1xuXHRcdFx0XHQodGhpcy5jb250ZW50Py5nZXRBZ2dyZWdhdGlvbihcImNvbnRlbnRUcnVlXCIpIGFzIE1pY3JvQ2hhcnRDb250YWluZXIpLnNldEFnZ3JlZ2F0aW9uKFxuXHRcdFx0XHRcdFwibWljcm9DaGFydFwiLFxuXHRcdFx0XHRcdDxDaGFydENvbXBvbmVudCB7Li4udGhpcy5nZXRNaWNyb0NoYXJ0UHJvcGVydGllcygpfT57bWljcm9DaGFydEFnZ3JlZ2F0aW9uc308L0NoYXJ0Q29tcG9uZW50PlxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0KHRoaXMuY29udGVudCBhcyBNaWNyb0NoYXJ0Q29udGFpbmVyKS5zZXRBZ2dyZWdhdGlvbihcblx0XHRcdFx0XHRcIm1pY3JvQ2hhcnRcIixcblx0XHRcdFx0XHQ8Q2hhcnRDb21wb25lbnQgey4uLnRoaXMuZ2V0TWljcm9DaGFydFByb3BlcnRpZXMoKX0+e21pY3JvQ2hhcnRBZ2dyZWdhdGlvbnN9PC9DaGFydENvbXBvbmVudD5cblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRsb2dXYXJuaW5nKCk6IHZvaWQge1xuXHRcdGNvbnN0IGVycm9yT2JqZWN0OiBFcnJvck9iamVjdFR5cGUgPSB7fTtcblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQnVsbGV0KSB7XG5cdFx0XHRlcnJvck9iamVjdFtcIkRhdGFQb2ludF9WYWx1ZVwiXSA9IHRoaXMuX2RhdGFQb2ludD8uVmFsdWUgfHwgdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRNaWNyb0NoYXJ0SGVscGVyLmxvZ1dhcm5pbmcodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlLCBlcnJvck9iamVjdCk7XG5cdH1cblxuXHRnZXRNaWNyb0NoYXJ0UHJvcGVydGllcygpOiBQYXJ0aWFsPFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0U2V0dGluZ3M+PiB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG1pY3JvQ2hhcnRQcm9wZXJ0aWVzOiBNaWNyb0NoYXJ0U2V0dGluZ3MgPSB7XG5cdFx0XHRzaXplOiB0aGlzLnNpemUsXG5cdFx0XHRoaWRlT25Ob0RhdGE6IHRoaXMuaGlkZU9uTm9EYXRhXG5cdFx0fTtcblxuXHRcdGNvbnN0IGRhdGFQb2ludFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxEYXRhUG9pbnRUeXBlPihcblx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4sXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldD8uTWVhc3VyZUF0dHJpYnV0ZXNbMF0/LkRhdGFQb2ludD8udmFsdWVcblx0XHQpO1xuXG5cdFx0Y29uc3QgbWljcm9DaGFydEFnZ3JlZ2F0aW9ucyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0QWdncmVnYXRpb25Gb3JNaWNyb2NoYXJ0KFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlLFxuXHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdCgpLFxuXHRcdFx0ZGF0YVBvaW50UGF0aCxcblx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoPy5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKSxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdHRoaXMuX21lYXN1cmVEYXRhUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPE1lYXN1cmU+LFxuXHRcdFx0dGhpcy5fc29ydE9yZGVyIGFzIFNvcnRPcmRlclR5cGVbXSxcblx0XHRcdCh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0IGFzIENoYXJ0KT8uRGltZW5zaW9ucz8uWzBdPy52YWx1ZSxcblx0XHRcdHRydWVcblx0XHQpO1xuXG5cdFx0c3dpdGNoICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUpIHtcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQnVsbGV0XCI6XG5cdFx0XHRcdG1pY3JvQ2hhcnRQcm9wZXJ0aWVzID0gTWljcm9DaGFydEhlbHBlci5nZXRCdWxsZXRNaWNyb0NoYXJ0UHJvcGVydGllcyhtaWNyb0NoYXJ0UHJvcGVydGllcywgdGhpcy5fZGF0YVBvaW50KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCI6XG5cdFx0XHRcdG1pY3JvQ2hhcnRQcm9wZXJ0aWVzID0gTWljcm9DaGFydEhlbHBlci5nZXRSYWRpYWxNaWNyb0NoYXJ0UHJvcGVydGllcyhtaWNyb0NoYXJ0UHJvcGVydGllcywgdGhpcy5fZGF0YVBvaW50KTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvUGllXCI6XG5cdFx0XHRcdG1pY3JvQ2hhcnRQcm9wZXJ0aWVzID0gTWljcm9DaGFydEhlbHBlci5nZXRIYXJ2ZXlNaWNyb0NoYXJ0UHJvcGVydGllcyhtaWNyb0NoYXJ0UHJvcGVydGllcywgdGhpcy5fZGF0YVBvaW50KTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiOlxuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJFN0YWNrZWRCYXJNaWNyb0NoYXJ0U2V0dGluZ3MpLmJhcnMgPSBtaWNyb0NoYXJ0QWdncmVnYXRpb25zIGFzIHVua25vd24gYXMgQWdncmVnYXRpb25CaW5kaW5nSW5mbztcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQ29sdW1uXCI6XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkQ29sdW1uTWljcm9DaGFydFNldHRpbmdzKS5jb2x1bW5zID0gTWljcm9DaGFydEhlbHBlci5nZXRBZ2dyZWdhdGlvbkZvck1pY3JvY2hhcnQoXG5cdFx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlLFxuXHRcdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoPy5nZXRPYmplY3QoKSxcblx0XHRcdFx0XHRkYXRhUG9pbnRQYXRoLFxuXHRcdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoPy5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKSxcblx0XHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldD8uRGltZW5zaW9ucz8uWzBdLFxuXHRcdFx0XHRcdHRoaXMuX21lYXN1cmVEYXRhUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPE1lYXN1cmU+LFxuXHRcdFx0XHRcdHRoaXMuX3NvcnRPcmRlciBhcyBTb3J0T3JkZXJUeXBlW10sXG5cdFx0XHRcdFx0KHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3QgYXMgQ2hhcnQpPy5EaW1lbnNpb25zPy5bMF0/LnZhbHVlLFxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0KSBhcyBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CYXJcIjpcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb21wYXJpc29uTWljcm9DaGFydFNldHRpbmdzKS5tYXhWYWx1ZSA9IHRoaXMuX2RhdGFQb2ludC5NYXhpbXVtVmFsdWVcblx0XHRcdFx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKGNvbnN0YW50KHRoaXMuX2RhdGFQb2ludC5NYXhpbXVtVmFsdWU/LnZhbHVlT2YoKSkpXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkQ29tcGFyaXNvbk1pY3JvQ2hhcnRTZXR0aW5ncykubWluVmFsdWUgPSB0aGlzLl9kYXRhUG9pbnQuTWluaW11bVZhbHVlXG5cdFx0XHRcdFx0PyBjb21waWxlRXhwcmVzc2lvbihjb25zdGFudCh0aGlzLl9kYXRhUG9pbnQuTWluaW11bVZhbHVlPy52YWx1ZU9mKCkpKVxuXHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MpLmNvbG9yUGFsZXR0ZSA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0Q29sb3JQYWxldHRlRm9yTWljcm9DaGFydChcblx0XHRcdFx0XHR0aGlzLl9kYXRhUG9pbnRcblx0XHRcdFx0KTtcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb21wYXJpc29uTWljcm9DaGFydFNldHRpbmdzKS5kYXRhID0gbWljcm9DaGFydEFnZ3JlZ2F0aW9ucyBhcyB1bmtub3duIGFzIEFnZ3JlZ2F0aW9uQmluZGluZ0luZm87XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCI6XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkTGluZU1pY3JvQ2hhcnRTZXR0aW5ncykuc2hvd1RocmVzaG9sZExpbmUgPSBmYWxzZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIG1pY3JvQ2hhcnRQcm9wZXJ0aWVzO1xuXHR9XG5cblx0YXN5bmMgZ2V0TWljcm9DaGFydEFnZ3JlZ2F0aW9ucygpOiBQcm9taXNlPE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbiB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IGNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQgPSB0aGlzLl9kYXRhUG9pbnQuQ3JpdGljYWxpdHlcblx0XHRcdD8gYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQodGhpcy5fZGF0YVBvaW50KVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkJ1bGxldCkge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0QnVsbGV0TWljcm9DaGFydEFnZ3JlZ2F0aW9ucyh0aGlzLl9kYXRhUG9pbnQsIGNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQmFyU3RhY2tlZCkge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0U3RhY2tNaWNyb0NoYXJ0QWdncmVnYXRpb25zKFxuXHRcdFx0XHR0aGlzLl9kYXRhUG9pbnQsXG5cdFx0XHRcdHRoaXMuX21lYXN1cmVEYXRhUGF0aCxcblx0XHRcdFx0Y3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLlBpZSkge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0SGFydmV5TWljcm9DaGFydEFnZ3JlZ2F0aW9ucyh0aGlzLl9kYXRhUG9pbnQsIGNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQmFyKSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRDb21wYXJpc29uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyhcblx0XHRcdFx0dGhpcy5fZGF0YVBvaW50LFxuXHRcdFx0XHRjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0LFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkFyZWEpIHtcblx0XHRcdHJldHVybiBNaWNyb0NoYXJ0SGVscGVyLmdldEFyZWFNaWNyb0NoYXJ0QWdncmVnYXRpb25zKFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldCxcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRcdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aCBhcyBDb250ZXh0LFxuXHRcdFx0XHR0aGlzLnNob3dPbmx5Q2hhcnRcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5Db2x1bW4pIHtcblx0XHRcdHJldHVybiBNaWNyb0NoYXJ0SGVscGVyLmdldENvbHVtbk1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoXG5cdFx0XHRcdHRoaXMuX2RhdGFQb2ludCxcblx0XHRcdFx0Y3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCxcblx0XHRcdFx0dGhpcy5zaG93T25seUNoYXJ0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuTGluZSkge1xuXHRcdFx0aWYgKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoICYmIHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoKSB7XG5cdFx0XHRcdHJldHVybiBNaWNyb0NoYXJ0SGVscGVyLmdldExpbmVNaWNyb0NoYXJ0QWdncmFnYXRpb25zKFxuXHRcdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LFxuXHRcdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybjtcblx0fVxuXG5cdGNyZWF0ZU1pY3JvQ2hhcnRJZChjaGFydFR5cGU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGNoYXJ0SURQcmVmaXg7XG5cdFx0c3dpdGNoIChjaGFydFR5cGUpIHtcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQnVsbGV0XCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkJ1bGxldE1pY3JvQ2hhcnRcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIlJhZGlhbE1pY3JvQ2hhcnRcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL1BpZVwiOlxuXHRcdFx0XHRjaGFydElEUHJlZml4ID0gXCJIYXJ2ZXlCYWxsTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiOlxuXHRcdFx0XHRjaGFydElEUHJlZml4ID0gXCJTdGFja2VkQmFyTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQXJlYVwiOlxuXHRcdFx0XHRjaGFydElEUHJlZml4ID0gXCJBcmVhTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQ29sdW1uXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkNvbHVtbk1pY3JvQ2hhcnRcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0JhclwiOlxuXHRcdFx0XHRjaGFydElEUHJlZml4ID0gXCJDb21wYXJpc29uTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvTGluZVwiOlxuXHRcdFx0XHRjaGFydElEUHJlZml4ID0gXCJMaW5lTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuY3JlYXRlSWQoY2hhcnRJRFByZWZpeCk7XG5cdH1cblxuXHRnZXRNaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcygpOiBQcm9wZXJ0aWVzT2Y8TWljcm9DaGFydENvbnRhaW5lcj4ge1xuXHRcdGNvbnN0IG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzT2Y8TWljcm9DaGFydENvbnRhaW5lcj4gPSB7XG5cdFx0XHRjaGFydFRpdGxlOiB0aGlzLnRpdGxlIHx8ICh0aGlzLl9jaGFydFRhcmdldC5UaXRsZT8udmFsdWVPZigpIGFzIHN0cmluZykgfHwgdW5kZWZpbmVkXG5cdFx0fTtcblx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5zaG93T25seUNoYXJ0ID0gdGhpcy5zaG93T25seUNoYXJ0O1xuXHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmNoYXJ0VGl0bGUgPSAodGhpcy5fY2hhcnRUYXJnZXQuVGl0bGUgYXMgc3RyaW5nKSB8fCB1bmRlZmluZWQ7XG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuY2hhcnREZXNjcmlwdGlvbiA9XG5cdFx0XHR0aGlzLmRlc2NyaXB0aW9uIHx8ICh0aGlzLl9jaGFydFRhcmdldC5EZXNjcmlwdGlvbj8udmFsdWVPZigpIGFzIHN0cmluZykgfHwgdW5kZWZpbmVkO1xuXG5cdFx0dGhpcy5fYmluZGluZyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0QmluZGluZ0V4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0KFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlLFxuXHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT4sXG5cdFx0XHR0aGlzLFxuXHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdCgpLFxuXHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpXG5cdFx0KTtcblxuXHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLnVvbVBhdGggPSBNaWNyb0NoYXJ0SGVscGVyLmdldFVPTVBhdGhGb3JNaWNyb2NoYXJ0KFxuXHRcdFx0dGhpcy5zaG93T25seUNoYXJ0LFxuXHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoLFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlXG5cdFx0KTtcblxuXHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmlkID0gdGhpcy5jcmVhdGVNaWNyb0NoYXJ0SWQodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlKTtcblxuXHRcdGNvbnN0IGNoYXJ0c1dpdGhWaXNpYmxlUHJvcGVydHkgPSBbXCJVSS5DaGFydFR5cGUvQnVsbGV0XCIsIFwiVUkuQ2hhcnRUeXBlL1BpZVwiLCBcIlVJLkNoYXJ0VHlwZS9SYWRpYWxcIl07XG5cdFx0aWYgKGNoYXJ0c1dpdGhWaXNpYmxlUHJvcGVydHkuaW5jbHVkZXModGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlKSkge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMudmlzaWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRub3QoXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHRoaXMuX2NoYXJ0VGFyZ2V0Lk1lYXN1cmVzWzBdLiR0YXJnZXQ/LmFubm90YXRpb25zLlVJPy5IaWRkZW4pLFxuXHRcdFx0XHRcdFx0Y29uc3RhbnQodHJ1ZSksXG5cdFx0XHRcdFx0XHRjb25zdGFudChmYWxzZSlcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLnZpc2libGUgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkJhclN0YWNrZWQpIHtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmRhdGFQb2ludFF1YWxpZmllcnMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldERhdGFQb2ludFF1YWxpZmllcnNGb3JNaWNyb0NoYXJ0KFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldD8uTWVhc3VyZUF0dHJpYnV0ZXNbMF0/LkRhdGFQb2ludD8udmFsdWUgYXMgc3RyaW5nXG5cdFx0XHQpIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQXJlYSB8fCB0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5Db2x1bW4pIHtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmRhdGFQb2ludFF1YWxpZmllcnMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldERhdGFQb2ludFF1YWxpZmllcnNGb3JNaWNyb0NoYXJ0KFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldD8uTWVhc3VyZUF0dHJpYnV0ZXNbMF0/LkRhdGFQb2ludD8udmFsdWUgYXMgc3RyaW5nXG5cdFx0XHQpIGFzIHVua25vd24gYXMgc3RyaW5nW107XG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5tZWFzdXJlcyA9IFtcblx0XHRcdFx0KHRoaXMuX21lYXN1cmVEYXRhUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pik/LnRhcmdldE9iamVjdD8ubmFtZSBhcyBzdHJpbmdcblx0XHRcdF07XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkxpbmUpIHtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVzID0gTWljcm9DaGFydEhlbHBlci5nZXRNZWFzdXJlUHJvcGVydHlQYXRocyhcblx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQsXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRFbnRpdHlUeXBlLmFubm90YXRpb25zLFxuXHRcdFx0XHRcIkxpbmVcIixcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KSBhcyBzdHJpbmdbXTtcblxuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGF0YVBvaW50UXVhbGlmaWVycyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1lYXN1cmVzKFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldCxcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMsXG5cdFx0XHRcdFwiTGluZVwiLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpIGFzIHN0cmluZ1tdO1xuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkFyZWEgfHxcblx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkNvbHVtbiB8fFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuTGluZVxuXHRcdCkge1xuXHRcdFx0Y29uc3QgZGltZW5zaW9uRGF0YVBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxQcm9wZXJ0eT4oXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8Q2hhcnQgfCBQcmVzZW50YXRpb25WYXJpYW50Pixcblx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuRGltZW5zaW9uc1swXS52YWx1ZVxuXHRcdFx0KTtcblxuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGltZW5zaW9uID0gZGltZW5zaW9uRGF0YVBhdGg/LnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dFxuXHRcdFx0XHQ/IChkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0IGFzIHVua25vd24gYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pPy5wYXRoXG5cdFx0XHRcdDogZGltZW5zaW9uRGF0YVBhdGg/LnRhcmdldE9iamVjdD8ubmFtZTtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVQcmVjaXNpb24gPSB0aGlzLl9kYXRhUG9pbnQ/LlZhbHVlPy4kdGFyZ2V0Py5wcmVjaXNpb247XG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5tZWFzdXJlU2NhbGUgPSBNaWNyb0NoYXJ0SGVscGVyLmdldE1lYXN1cmVTY2FsZUZvck1pY3JvQ2hhcnQodGhpcy5fZGF0YVBvaW50KTtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmRpbWVuc2lvblByZWNpc2lvbiA9IGRpbWVuc2lvbkRhdGFQYXRoPy50YXJnZXRPYmplY3Q/LnByZWNpc2lvbjtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmNhbGVuZGFyUGF0dGVybiA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0Q2FsZW5kYXJQYXR0ZXJuKFxuXHRcdFx0XHRkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py50eXBlIGFzIHN0cmluZyxcblx0XHRcdFx0ZGltZW5zaW9uRGF0YVBhdGg/LnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnMgYXMgUHJvcGVydHlBbm5vdGF0aW9ucyxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzO1xuXHR9XG5cblx0Y3JlYXRlVGl0bGUodGl0bGVUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBUaXRsZUxpbmsgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aXRsZVRleHQpIHtcblx0XHRcdC8vIFRoZSB0aXRsZSBoYWQgdGhpcyBpZCBpbiB0ZW1wbGF0ZSB0aW1lIGFuZCB3ZSBuZWVkIHRvIG1haW50YWluIHRoZSBzYW1lIGlkLlxuXHRcdFx0Y29uc3QgbG9jYWxMZWdhY3lUaXRsZUlkID0gSUQuZ2VuZXJhdGUoW1xuXHRcdFx0XHRcImZlXCIsXG5cdFx0XHRcdFwiTWljcm9DaGFydExpbmtcIixcblx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0Py50ZXJtLFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0Py5xdWFsaWZpZXJcblx0XHRcdF0pO1xuXHRcdFx0Y29uc3Qgdmlld0lkID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRWaWV3KCkuZ2V0SWQoKTtcblx0XHRcdGNvbnN0IGxlZ2FjeVRpdGxlSWQgPSBgJHt2aWV3SWR9LS0ke2xvY2FsTGVnYWN5VGl0bGVJZH1gO1xuXG5cdFx0XHRjb25zdCB0aXRsZUxpbmtQcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzT2Y8VGl0bGVMaW5rPiA9IHtcblx0XHRcdFx0aWQ6IGxlZ2FjeVRpdGxlSWQsXG5cdFx0XHRcdHRleHQ6IHRpdGxlVGV4dFxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLm1hY3Jvc1wiKTtcblx0XHRcdGlmICh0aGlzLm5hdmlnYXRpb25UeXBlID09PSBcIkluUGFnZVwiKSB7XG5cdFx0XHRcdGNvbnN0IGFyaWFUcmFuc2xhdGVkVGV4dCA9IHJlc291cmNlQnVuZGxlPy5nZXRUZXh0KFwiVF9DT01NT05fSEVBREVSRFBfVElUTEVfTElOS19JTlBBR0VfQVJJQVwiKTtcblx0XHRcdFx0dGl0bGVMaW5rUHJvcGVydGllcy5zaG93QXNMaW5rID0gdHJ1ZTtcblx0XHRcdFx0dGl0bGVMaW5rUHJvcGVydGllcy5saW5rQXJpYVRleHQgPSBhcmlhVHJhbnNsYXRlZFRleHQ7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvblR5cGUgPT09IFwiRXh0ZXJuYWxcIikge1xuXHRcdFx0XHRjb25zdCBzaG93TGluayA9IENvbW1vbkhlbHBlci5nZXRIZWFkZXJEYXRhUG9pbnRMaW5rVmlzaWJpbGl0eShsb2NhbExlZ2FjeVRpdGxlSWQsIHRydWUpO1xuXHRcdFx0XHRjb25zdCBhcmlhVHJhbnNsYXRlZFRleHQgPSByZXNvdXJjZUJ1bmRsZT8uZ2V0VGV4dChcIk1fTUlDUk9DSEFSVF9USVRMRV9GUkFHTUVOVF9IRUFERVJfTUlDUk9DSEFSVF9MSU5LX0FSSUFcIik7XG5cdFx0XHRcdHRpdGxlTGlua1Byb3BlcnRpZXMuc2hvd0FzTGluayA9IHNob3dMaW5rO1xuXHRcdFx0XHR0aXRsZUxpbmtQcm9wZXJ0aWVzLmxpbmtBcmlhVGV4dCA9IGFyaWFUcmFuc2xhdGVkVGV4dDtcblx0XHRcdH1cblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxUaXRsZUxpbmtcblx0XHRcdFx0XHR7Li4udGl0bGVMaW5rUHJvcGVydGllc31cblx0XHRcdFx0XHRsaW5rUHJlc3M9eyhwcmVzc0V2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ0aXRsZVByZXNzXCIsIHByZXNzRXZlbnQpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gdG8gY3JlYXRlIG1pY3JvY2hhcnQgY29udGVudC5cblx0ICogQHJldHVybnMgTWljcm9DaGFydENvbnRhaW5lciB3aGljaCB3aWxsIGNvbnRhaW4gVGl0bGUgYW5kIG1pY3JvIGNoYXJ0IGNvbnRlbnQgZm9yIGVhY2ggb2YgdGhlIG1pY3JvY2hhcnQuXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IE1pY3JvQ2hhcnRDb250YWluZXIge1xuXHRcdGNvbnN0IGlzVmFsaWRDaGFydFR5cGUgPSBbXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCIsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9QaWVcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0JhclN0YWNrZWRcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0FyZWFcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0NvbHVtblwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQmFyXCIsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9MaW5lXCJcblx0XHRdLmluY2x1ZGVzKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSk7XG5cdFx0aWYgKCFpc1ZhbGlkQ2hhcnRUeXBlKSB7XG5cdFx0XHRyZXR1cm4gPFRleHQgdGV4dD1cIlRoaXMgY2hhcnQgdHlwZSBpcyBub3Qgc3VwcG9ydGVkLiBPdGhlciBUeXBlcyB5ZXQgdG8gYmUgaW1wbGVtZW50ZWQuLlwiIC8+O1xuXHRcdH0gZWxzZSBpZiAodGhpcy5pc0FuYWx5dGljcykge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PENvbmRpdGlvbmFsV3JhcHBlclxuXHRcdFx0XHRcdGNvbmRpdGlvbj17Y29tcGlsZUV4cHJlc3Npb24ob3Iobm90KHBhdGhJbk1vZGVsKFwiQCR1aTUubm9kZS5pc0V4cGFuZGVkXCIpKSwgZXF1YWwocGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmxldmVsXCIpLCAwKSkpfVxuXHRcdFx0XHRcdHZpc2libGU9e2dldEV4cHJlc3Npb25Gb3JNZWFzdXJlVW5pdCh0aGlzLl9kYXRhUG9pbnQuVmFsdWUuJHRhcmdldCl9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudFRydWU6IHRoaXMuY3JlYXRlQ2hhcnRDb250ZW50KCksXG5cdFx0XHRcdFx0XHRjb250ZW50RmFsc2U6IDxUZXh0IHRleHQ9XCIqXCI+PC9UZXh0PlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvQ29uZGl0aW9uYWxXcmFwcGVyPlxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuY3JlYXRlQ2hhcnRDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0Y3JlYXRlQ2hhcnRDb250ZW50KCk6IE1pY3JvQ2hhcnRDb250YWluZXIge1xuXHRcdGNvbnN0IG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzID0ge1xuXHRcdFx0Li4udGhpcy5nZXRNaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcygpLFxuXHRcdFx0YmluZGluZzogdGhpcy5fYmluZGluZ1xuXHRcdH07XG5cdFx0cmV0dXJuIChcblx0XHRcdDxNaWNyb0NoYXJ0Q29udGFpbmVyIHsuLi5taWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllc30+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0bWljcm9DaGFydFRpdGxlOiAhdGhpcy5zaG93T25seUNoYXJ0ID8gdGhpcy5jcmVhdGVUaXRsZShtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5jaGFydFRpdGxlKSA6IHVuZGVmaW5lZFxuXHRcdFx0XHR9fVxuXHRcdFx0PC9NaWNyb0NoYXJ0Q29udGFpbmVyPlxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXFDS0EsY0FBYywwQkFBZEEsY0FBYztJQUNsQjtBQUNEO0FBQ0E7SUFIS0EsY0FBYztJQU1sQjtBQUNEO0FBQ0E7SUFSS0EsY0FBYztJQVdsQjtBQUNEO0FBQ0E7SUFiS0EsY0FBYztJQUFBLE9BQWRBLGNBQWM7RUFBQSxFQUFkQSxjQUFjO0VBaUJuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQXJCQSxJQXlCcUJDLFVBQVUsSUFBQUMsSUFBQSxHQUg5QkMsY0FBYyxDQUFDLDBCQUEwQixFQUFFO0lBQzNDQyxXQUFXLEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSwyQ0FBMkM7RUFDMUcsQ0FBQyxDQUFDLEVBQUFD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
603
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZpZ2F0aW9uVHlwZSIsIk1pY3JvQ2hhcnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJyZXR1cm5UeXBlcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJyZXF1aXJlZCIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiYWxsb3dlZFZhbHVlcyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJldmVudCIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInNldHRpbmdzIiwib3RoZXJzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9kZXNjcmlwdG9yOSIsIl9kZXNjcmlwdG9yMTAiLCJfZGVzY3JpcHRvcjExIiwiX2Rlc2NyaXB0b3IxMiIsIl9kZXNjcmlwdG9yMTMiLCJfZGVzY3JpcHRvcjE0IiwiX2Rlc2NyaXB0b3IxNSIsIl9kZXNjcmlwdG9yMTYiLCJfZGVzY3JpcHRvcjE3IiwiX2Rlc2NyaXB0b3IxOCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2RvTm90Q3JlYXRlT25OdWxsQ29udGV4dCIsIl92aXNpYmlsaXR5Q2hlY2siLCJnZXRTb3J0T3JkZXIiLCJzb3J0aW5nUHJvcHMiLCJtYXAiLCJzb3J0aW5nUHJvcCIsIlByb3BlcnR5IiwidmFsdWUiLCJEZXNjZW5kaW5nIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiJFR5cGUiLCJzZXRQcm9wZXJ0eSIsImtleSIsInN1cHByZXNzSW52YWxpZGF0ZSIsIl9hcHBseWluZ1NldHRpbmdzIiwidW5kZWZpbmVkIiwiT2JqZWN0Iiwia2V5cyIsImdldE1ldGFkYXRhIiwiZ2V0UHJvcGVydGllcyIsImluY2x1ZGVzIiwiY29udGVudCIsImRlc3Ryb3kiLCJjcmVhdGVDb250ZW50IiwiY3JlYXRlTWljcm9DaGFydCIsImNsb25lIiwiaWRTdWZmaXgiLCJsb2NhbElkcyIsImNsb25lZE1pY3JvQ2hhcnQiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiX293bmVyQ29tcG9uZW50Iiwib3duZXIiLCJfZ2V0T3duZXIiLCJjb250ZXh0UGF0aCIsInByZXByb2Nlc3NvckNvbnRleHQiLCJmdWxsQ29udGV4dFBhdGgiLCJvZGF0YU1ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsIl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YVBhdGgiLCJ0YXJnZXRPYmplY3QiLCJ0ZXJtIiwiU29ydE9yZGVyIiwibGVuZ3RoIiwiX3NvcnRPcmRlciIsIlZpc3VhbGl6YXRpb25zIiwiZ2V0VGFyZ2V0TmF2aWdhdGlvblBhdGgiLCJfY2hhcnRUYXJnZXQiLCJfbWVhc3VyZURhdGFQYXRoIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJNZWFzdXJlcyIsIk1pY3JvQ2hhcnRIZWxwZXIiLCJzaG91bGRSZW5kZXJNaWNyb0NoYXJ0IiwiX2RhdGFQb2ludCIsIk1lYXN1cmVBdHRyaWJ1dGVzIiwiRGF0YVBvaW50IiwiJHRhcmdldCIsIl90YXJnZXROYXZpZ2F0aW9uUGF0aCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Iiwic2hvd09ubHlDaGFydCIsImxvZ1dhcm5pbmciLCJjaGFydE1hcCIsInR5cGUxIiwiQ2hhcnRUeXBlIiwiQ2hhcnRDb21wb25lbnQiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiZGVmYXVsdCIsIm1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zIiwiaXNBbmFseXRpY3MiLCJnZXRBZ2dyZWdhdGlvbiIsInNldEFnZ3JlZ2F0aW9uIiwiX2pzeCIsImdldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzIiwiY2hpbGRyZW4iLCJlcnJvck9iamVjdCIsIlZhbHVlIiwibWljcm9DaGFydFByb3BlcnRpZXMiLCJzaXplIiwiaGlkZU9uTm9EYXRhIiwiZGF0YVBvaW50UGF0aCIsImdldEFnZ3JlZ2F0aW9uRm9yTWljcm9jaGFydCIsImdldE9iamVjdCIsIkRpbWVuc2lvbnMiLCJnZXRCdWxsZXRNaWNyb0NoYXJ0UHJvcGVydGllcyIsImdldFJhZGlhbE1pY3JvQ2hhcnRQcm9wZXJ0aWVzIiwiZ2V0SGFydmV5TWljcm9DaGFydFByb3BlcnRpZXMiLCJiYXJzIiwiY29sdW1ucyIsIm1heFZhbHVlIiwiTWF4aW11bVZhbHVlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJjb25zdGFudCIsInZhbHVlT2YiLCJtaW5WYWx1ZSIsIk1pbmltdW1WYWx1ZSIsImNvbG9yUGFsZXR0ZSIsImdldENvbG9yUGFsZXR0ZUZvck1pY3JvQ2hhcnQiLCJkYXRhIiwic2hvd1RocmVzaG9sZExpbmUiLCJjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0IiwiQ3JpdGljYWxpdHkiLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCIsImdldEJ1bGxldE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRTdGFja01pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRIYXJ2ZXlNaWNyb0NoYXJ0QWdncmVnYXRpb25zIiwiZ2V0Q29tcGFyaXNvbk1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRBcmVhTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyIsImdldENvbHVtbk1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMiLCJnZXRMaW5lTWljcm9DaGFydEFnZ3JhZ2F0aW9ucyIsImNyZWF0ZU1pY3JvQ2hhcnRJZCIsImNoYXJ0VHlwZSIsImNoYXJ0SURQcmVmaXgiLCJjcmVhdGVJZCIsImdldE1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzIiwibWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMiLCJjaGFydFRpdGxlIiwidGl0bGUiLCJUaXRsZSIsImNoYXJ0RGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsIkRlc2NyaXB0aW9uIiwiX2JpbmRpbmciLCJnZXRCaW5kaW5nRXhwcmVzc2lvbkZvck1pY3JvY2hhcnQiLCJ1b21QYXRoIiwiZ2V0VU9NUGF0aEZvck1pY3JvY2hhcnQiLCJpZCIsImNoYXJ0c1dpdGhWaXNpYmxlUHJvcGVydHkiLCJ2aXNpYmxlIiwibm90IiwiaWZFbHNlIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhpZGRlbiIsImRhdGFQb2ludFF1YWxpZmllcnMiLCJnZXREYXRhUG9pbnRRdWFsaWZpZXJzRm9yTWljcm9DaGFydCIsIm1lYXN1cmVzIiwibmFtZSIsImdldE1lYXN1cmVQcm9wZXJ0eVBhdGhzIiwidGFyZ2V0RW50aXR5VHlwZSIsImdldERhdGFQb2ludFF1YWxpZmllcnNGb3JNZWFzdXJlcyIsImRpbWVuc2lvbkRhdGFQYXRoIiwiZGltZW5zaW9uIiwiQ29tbW9uIiwiVGV4dCIsInBhdGgiLCJtZWFzdXJlUHJlY2lzaW9uIiwicHJlY2lzaW9uIiwibWVhc3VyZVNjYWxlIiwiZ2V0TWVhc3VyZVNjYWxlRm9yTWljcm9DaGFydCIsImRpbWVuc2lvblByZWNpc2lvbiIsImNhbGVuZGFyUGF0dGVybiIsImdldENhbGVuZGFyUGF0dGVybiIsImNyZWF0ZVRpdGxlIiwidGl0bGVUZXh0IiwibG9jYWxMZWdhY3lUaXRsZUlkIiwiSUQiLCJnZW5lcmF0ZSIsInF1YWxpZmllciIsInZpZXdJZCIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImdldElkIiwibGVnYWN5VGl0bGVJZCIsInRpdGxlTGlua1Byb3BlcnRpZXMiLCJ0ZXh0IiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIm5hdmlnYXRpb25UeXBlIiwiYXJpYVRyYW5zbGF0ZWRUZXh0IiwiZ2V0VGV4dCIsInNob3dBc0xpbmsiLCJsaW5rQXJpYVRleHQiLCJzaG93TGluayIsIkNvbW1vbkhlbHBlciIsImdldEhlYWRlckRhdGFQb2ludExpbmtWaXNpYmlsaXR5IiwiVGl0bGVMaW5rIiwibGlua1ByZXNzIiwicHJlc3NFdmVudCIsImZpcmVFdmVudCIsImlzVmFsaWRDaGFydFR5cGUiLCJDb25kaXRpb25hbFdyYXBwZXIiLCJjb25kaXRpb24iLCJvciIsInBhdGhJbk1vZGVsIiwiZXF1YWwiLCJnZXRFeHByZXNzaW9uRm9yTWVhc3VyZVVuaXQiLCJjb250ZW50VHJ1ZSIsImNyZWF0ZUNoYXJ0Q29udGVudCIsImNvbnRlbnRGYWxzZSIsImJpbmRpbmciLCJNaWNyb0NoYXJ0Q29udGFpbmVyIiwibWljcm9DaGFydFRpdGxlIiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIk5vbmUiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1pY3JvQ2hhcnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eSwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IE1lYXN1cmUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0FuYWx5dGljc1wiO1xuaW1wb3J0IHR5cGUgeyBTb3J0T3JkZXJUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB7IENvbW1vbkFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QW5ub3RhdGlvbnMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0VkbV9UeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhUG9pbnQsIERhdGFQb2ludFR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBDaGFydFR5cGUsIFVJQW5ub3RhdGlvblRlcm1zLCB0eXBlIENoYXJ0LCB0eXBlIFByZXNlbnRhdGlvblZhcmlhbnQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgY29uc3RhbnQsIGVxdWFsLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIGlmRWxzZSwgbm90LCBvciwgcGF0aEluTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCAqIGFzIElEIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0NyaXRpY2FsaXR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZW5oYW5jZURhdGFNb2RlbFBhdGgsIGdldFRhcmdldE5hdmlnYXRpb25QYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0RXhwcmVzc2lvbkZvck1lYXN1cmVVbml0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29sdW1uTWljcm9DaGFydFNldHRpbmdzIH0gZnJvbSBcInNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0NvbHVtbk1pY3JvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29tcGFyaXNvbk1pY3JvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgJExpbmVNaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvTGluZU1pY3JvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgJFN0YWNrZWRCYXJNaWNyb0NoYXJ0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvU3RhY2tlZEJhck1pY3JvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIHsgJE1hbmFnZWRPYmplY3RTZXR0aW5ncywgQWdncmVnYXRpb25CaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwiLi9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBDb25kaXRpb25hbFdyYXBwZXIgZnJvbSBcIi4vY29udHJvbHMvQ29uZGl0aW9uYWxXcmFwcGVyXCI7XG5pbXBvcnQgVGl0bGVMaW5rIGZyb20gXCIuL2ludGVybmFsL1RpdGxlTGlua1wiO1xuaW1wb3J0IE1pY3JvQ2hhcnRDb250YWluZXIgZnJvbSBcIi4vbWljcm9jaGFydC9NaWNyb0NoYXJ0Q29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSB7IE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbiwgTWljcm9DaGFydFNldHRpbmdzIH0gZnJvbSBcIi4vbWljcm9jaGFydC9NaWNyb0NoYXJ0SGVscGVyXCI7XG5pbXBvcnQgTWljcm9DaGFydEhlbHBlciBmcm9tIFwiLi9taWNyb2NoYXJ0L01pY3JvQ2hhcnRIZWxwZXJcIjtcblxudHlwZSBFcnJvck9iamVjdFR5cGUgPSB7XG5cdERhdGFQb2ludF9WYWx1ZT86IHVua25vd247XG59O1xuXG5lbnVtIE5hdmlnYXRpb25UeXBlIHtcblx0LyoqXG5cdCAqIEZvciBFeHRlcm5hbCBOYXZpZ2F0aW9uXG5cdCAqL1xuXHRFeHRlcm5hbCA9IFwiRXh0ZXJuYWxcIixcblxuXHQvKipcblx0ICogRm9yIEluLVBhZ2UgTmF2aWdhdGlvblxuXHQgKi9cblx0SW5QYWdlID0gXCJJblBhZ2VcIixcblxuXHQvKipcblx0ICogRm9yIE5vIE5hdmlnYXRpb25cblx0ICovXG5cdE5vbmUgPSBcIk5vbmVcIlxufVxuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHVzZWQgdG8gY3JlYXRlIGEgTWljcm9DaGFydCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9idWlsZGluZ0Jsb2Nrcy9taWNyb2NoYXJ0LyBPdmVydmlldyBvZiBNaWNybyBDaGFydCBCdWlsZGluZyBCbG9ja31cbiAqIDxicj5cbiAqIFVzdWFsbHksIGEgY29udGV4dFBhdGggYW5kIG1ldGFQYXRoIGlzIGV4cGVjdGVkLlxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNyb3M6TWljcm9DaGFydCBpZD1cIk15TWljcm9DaGFydFwiIGNvbnRleHRQYXRoPVwiL1Jvb3RFbnRpdHlcIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqICA8cHJlPlxuICogc2FwLnVpLnJlcXVpcmUoW1wic2FwL2ZlL21hY3Jvcy9NaWNyb0NoYXJ0XCJdLCBmdW5jdGlvbihNaWNyb0NoYXJ0KSB7XG4gKiBcdCAuLi5cbiAqIFx0IG5ldyBNaWNyb0NoYXJ0KFwibXlNaWNyb0NoYXJ0XCIsIHttZXRhUGF0aDpcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwifSlcbiAqIH0pXG4gKiA8L3ByZT5cbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLk1pY3JvQ2hhcnRcbiAqIEB1aTUtbWV0YW1vZGVsXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS45My4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuTWljcm9DaGFydFwiLCB7XG5cdHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLm1pY3JvY2hhcnQuTWljcm9DaGFydENvbnRhaW5lclwiLCBcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuQ29uZGl0aW9uYWxXcmFwcGVyXCJdXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWljcm9DaGFydCBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8TWljcm9DaGFydENvbnRhaW5lcj4ge1xuXHQvKipcblx0ICogVG8gY29udHJvbCB0aGUgcmVuZGVyaW5nIG9mIFRpdGxlLCBTdWJ0aXRsZSBhbmQgQ3VycmVuY3kgTGFiZWxzLiBXaGVuIHRoZSBzaXplIGlzIHhzIHRoZW4gd2UgZG9cblx0ICogbm90IHNlZSB0aGUgaW5uZXIgbGFiZWxzIG9mIHRoZSBNaWNyb0NoYXJ0IGFzIHdlbGwuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0cHVibGljIHNob3dPbmx5Q2hhcnQgPSBmYWxzZTtcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgIE1pY3JvQ2hhcnQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIGNvbnRleHQgcGF0aCB0byB0aGUgTWljcm9DaGFydC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogVHlwZSBvZiBuYXZpZ2F0aW9uLCB0aGF0IGlzLCBFeHRlcm5hbCBvciBJblBhZ2Vcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRuYXZpZ2F0aW9uVHlwZT86IE5hdmlnYXRpb25UeXBlID0gTmF2aWdhdGlvblR5cGUuTm9uZTtcblxuXHQvKipcblx0ICogQmF0Y2ggZ3JvdXAgSUQgYWxvbmcgd2l0aCB3aGljaCB0aGlzIGNhbGwgc2hvdWxkIGJlIGdyb3VwZWQuXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGJhdGNoR3JvdXBJZD86IHN0cmluZztcblxuXHQvKipcblx0ICogU2l6ZSBvZiB0aGUgTWljcm9DaGFydFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBhbGxvd2VkVmFsdWVzOiBbXCJYU1wiLCBcIlNcIiwgXCJNXCIsIFwiTFwiXSB9KVxuXHRzaXplPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTaG93IGJsYW5rIHNwYWNlIGluIGNhc2UgdGhlcmUgaXMgbm8gZGF0YSBpbiB0aGUgY2hhcnRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0aGlkZU9uTm9EYXRhPzogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0dGl0bGUgPSBcIlwiO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZGVzY3JpcHRpb24gPSBcIlwiO1xuXG5cdEBldmVudCgpXG5cdHRpdGxlUHJlc3MhOiBGdW5jdGlvbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdF9jaGFydFRhcmdldCE6IENoYXJ0O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0X2RhdGFQb2ludCE6IERhdGFQb2ludDtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdF90YXJnZXROYXZpZ2F0aW9uUGF0aCE6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGghOiBEYXRhTW9kZWxPYmplY3RQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4gfCB1bmRlZmluZWQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRfYmluZGluZyE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcIm9iamVjdFwiIH0pXG5cdF9zb3J0T3JkZXI/OiBTb3J0T3JkZXJUeXBlW107XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRfbWVhc3VyZURhdGFQYXRoPzogRGF0YU1vZGVsT2JqZWN0UGF0aDxNZWFzdXJlPjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRpc0FuYWx5dGljcz86IGJvb2xlYW47XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPE1pY3JvQ2hhcnQ+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8TWljcm9DaGFydD4pIHtcblx0XHRzdXBlcihzZXR0aW5ncywgb3RoZXJzKTtcblx0fVxuXG5cdG92ZXJyaWRlIGFwcGx5U2V0dGluZ3MobVNldHRpbmdzOiAkTWFuYWdlZE9iamVjdFNldHRpbmdzLCBvU2NvcGU/OiBvYmplY3QpOiB0aGlzIHtcblx0XHR0aGlzLl9kb05vdENyZWF0ZU9uTnVsbENvbnRleHQgPSB0cnVlO1xuXHRcdHRoaXMuX3Zpc2liaWxpdHlDaGVjayA9IHRydWU7XG5cdFx0cmV0dXJuIHN1cGVyLmFwcGx5U2V0dGluZ3MobVNldHRpbmdzLCBvU2NvcGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHNvcnRPcmRlciBmb3IgdGhlIG1pY3JvQ2hhcnQgYXMgbWVudGlvbmVkIGluIHRoZSBQcmVzZW50YXRpb25WYXJpYW50LlxuXHQgKiBAcGFyYW0gc29ydGluZ1Byb3BzIFNvcnRlcnMgZnJvbSBQcmVzZW50YXRpb25WYXJpYW50LlxuXHQgKiBAcmV0dXJucyBTb3J0T3JkZXJcblx0ICovXG5cdGdldFNvcnRPcmRlcihzb3J0aW5nUHJvcHM6IFNvcnRPcmRlclR5cGVbXSk6IFNvcnRPcmRlclR5cGVbXSB7XG5cdFx0cmV0dXJuIHNvcnRpbmdQcm9wcy5tYXAoKHNvcnRpbmdQcm9wOiBTb3J0T3JkZXJUeXBlKSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRQcm9wZXJ0eTogc29ydGluZ1Byb3AuUHJvcGVydHk/LnZhbHVlIGFzIHVua25vd24gYXMgUHJvcGVydHlQYXRoLFxuXHRcdFx0XHREZXNjZW5kaW5nOiBzb3J0aW5nUHJvcC5EZXNjZW5kaW5nIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQsXG5cdFx0XHRcdGZ1bGx5UXVhbGlmaWVkTmFtZTogXCJcIixcblx0XHRcdFx0JFR5cGU6IENvbW1vbkFubm90YXRpb25UeXBlcy5Tb3J0T3JkZXJUeXBlXG5cdFx0XHR9O1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGtleSB3aXRoIHRoZSBnaXZlbiB2YWx1ZSBmb3IgTWljcm9DaGFydC5cblx0ICogQHBhcmFtIGtleSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gc2V0XG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0IHRoZSBwcm9wZXJ0eSB0b1xuXHQgKiBAcGFyYW0gc3VwcHJlc3NJbnZhbGlkYXRlICBJZiB0cnVlLCB0aGUgbWFuYWdlZCBvYmplY3QgaXMgbm90IG1hcmtlZCBhcyBjaGFuZ2VkXG5cdCAqIEByZXR1cm5zIE1pY3JvQ2hhcnRcblx0ICovXG5cdHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbiwgc3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmICghdGhpcy5fYXBwbHlpbmdTZXR0aW5ncyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRQcm9wZXJ0aWVzKCkpLmluY2x1ZGVzKGtleSkpIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIHRydWUpO1xuXHRcdFx0aWYgKHRoaXMuY29udGVudCkge1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQuZGVzdHJveSgpO1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHRcdFx0dGhpcy5jcmVhdGVNaWNyb0NoYXJ0KCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIE92ZXJyaWRlcyB0aGUgY2xvbmUgbWV0aG9kIG9mIHRoZSBVSTUgY29udHJvbCB0byBlbnN1cmUgdGhhdCB0aGUgc3VpdGUgbWljcm8gY2hhcnQgaXMgY3JlYXRlZCBhc3luY2hyb25vdXNseSBvbiB0aGUgY2xvbmUuXG5cdCAqXG5cdCAqIENsb25lIGlzIGEgVUk1IGNvcmUgQ29udHJvbCBtZXRob2QsIHdoaWNoIGlzIG5vdCBhc3luYyBhbmQgaXMgY2FsbGVkIGluIGEgc3luYyBtYW5uZXIgdGhyb3VnaG91dCBVSTUuXG5cdCAqIEhlbmNlIHdlIG5lZWQgdG8gY3JlYXRlIHRoZSBjaGFydCBpbiBhIGZpcmUgYW5kIGZvcmdldCBmYXNoaW9uLlxuXHQgKiBAcGFyYW0gaWRTdWZmaXggQSBzdWZmaXggdG8gYmUgYXBwZW5kZWQgdG8gdGhlIGNsb25lZCBlbGVtZW50IGlkXG5cdCAqIEBwYXJhbSBsb2NhbElkcyBBbiBhcnJheSBvZiBsb2NhbCBJRHMgd2l0aGluIHRoZSBjbG9uZWQgaGllcmFyY2h5IChpbnRlcm5hbGx5IHVzZWQpXG5cdCAqIEByZXR1cm5zIFRoZSByZWZlcmVuY2UgdG8gdGhlIG5ld2x5IGNyZWF0ZSBjbG9uZVxuXHQgKi9cblx0Y2xvbmUoaWRTdWZmaXg/OiBzdHJpbmcgfCB1bmRlZmluZWQsIGxvY2FsSWRzPzogc3RyaW5nW10pOiB0aGlzIHtcblx0XHRjb25zdCBjbG9uZWRNaWNyb0NoYXJ0ID0gc3VwZXIuY2xvbmUoaWRTdWZmaXgsIGxvY2FsSWRzKTtcblx0XHRjbG9uZWRNaWNyb0NoYXJ0LmNyZWF0ZU1pY3JvQ2hhcnQoKTtcblx0XHRyZXR1cm4gY2xvbmVkTWljcm9DaGFydDtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdFx0dGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggPz8gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gb3duZXI/LmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4oXG5cdFx0XHRcdHRoaXMubWV0YVBhdGgsXG5cdFx0XHRcdHRoaXMuY29udGV4dFBhdGhcblx0XHRcdCk7XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldE9iamVjdD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdFx0XHRpZiAoKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5Tb3J0T3JkZXIgYXMgdW5rbm93biBhcyBTb3J0T3JkZXJUeXBlW10gfCB1bmRlZmluZWQpPy5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aGlzLl9zb3J0T3JkZXIgPSB0aGlzLmdldFNvcnRPcmRlcih0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8Q2hhcnQ+KFxuXHRcdFx0XHRcdGAke3RoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5WaXN1YWxpemF0aW9uc1swXS52YWx1ZX1gLFxuXHRcdFx0XHRcdGdldFRhcmdldE5hdmlnYXRpb25QYXRoKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoKSArIFwiL1wiXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgpIHtcblx0XHRcdFx0aWYgKHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCh0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyIGFzIHVua25vd24gYXMgU29ydE9yZGVyVHlwZVtdIHwgdW5kZWZpbmVkKT8ubGVuZ3RoICE9XG5cdFx0XHRcdFx0XHRudWxsXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9zb3J0T3JkZXIgPSB0aGlzLmdldFNvcnRPcmRlcih0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuU29ydE9yZGVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQgPSB0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgQ2hhcnQ7XG5cdFx0XHRcdHRoaXMuX21lYXN1cmVEYXRhUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPE1lYXN1cmU+KFxuXHRcdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Lk1lYXN1cmVzWzBdLnZhbHVlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmIChNaWNyb0NoYXJ0SGVscGVyLnNob3VsZFJlbmRlck1pY3JvQ2hhcnQodGhpcy5fY2hhcnRUYXJnZXQpKSB7XG5cdFx0XHRcdFx0dGhpcy5fZGF0YVBvaW50ID0gdGhpcy5fY2hhcnRUYXJnZXQ/Lk1lYXN1cmVBdHRyaWJ1dGVzWzBdPy5EYXRhUG9pbnQ/LiR0YXJnZXQgYXMgRGF0YVBvaW50O1xuXHRcdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KFxuXHRcdFx0XHRcdFx0Z2V0VGFyZ2V0TmF2aWdhdGlvblBhdGgodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgpXG5cdFx0XHRcdFx0KSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG5cdFx0XHRcdFx0dGhpcy5zaG93T25seUNoYXJ0ID0gdHlwZW9mIHRoaXMuc2hvd09ubHlDaGFydCA9PT0gXCJzdHJpbmdcIiA/IHRoaXMuc2hvd09ubHlDaGFydCA9PT0gXCJ0cnVlXCIgOiB0aGlzLnNob3dPbmx5Q2hhcnQ7XG5cdFx0XHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5jcmVhdGVNaWNyb0NoYXJ0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5sb2dXYXJuaW5nKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhc3luYyBjcmVhdGVNaWNyb0NoYXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGNoYXJ0TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuXHRcdFx0XCJVSS5DaGFydFR5cGUvQnVsbGV0XCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9CdWxsZXRNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0RvbnV0XCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9SYWRpYWxNaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL1BpZVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvSGFydmV5QmFsbE1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvU3RhY2tlZEJhck1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQ29sdW1uXCI6IGBzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9Db2x1bW5NaWNyb0NoYXJ0YCxcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0JhclwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQ29tcGFyaXNvbk1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvTGluZVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvTGluZU1pY3JvQ2hhcnRgLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQXJlYVwiOiBgc2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvQXJlYU1pY3JvQ2hhcnRgXG5cdFx0fTtcblxuXHRcdGNvbnN0IHR5cGUxID0gdGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlO1xuXHRcdGlmIChPYmplY3Qua2V5cyhjaGFydE1hcCkuaW5jbHVkZXModHlwZTEpKSB7XG5cdFx0XHRjb25zdCBDaGFydENvbXBvbmVudCA9IChhd2FpdCBpbXBvcnQoY2hhcnRNYXBbdHlwZTFdKSkuZGVmYXVsdDtcblx0XHRcdGNvbnN0IG1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMgPSBhd2FpdCB0aGlzLmdldE1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoKTtcblx0XHRcdGlmICh0aGlzLmlzQW5hbHl0aWNzKSB7XG5cdFx0XHRcdCh0aGlzLmNvbnRlbnQ/LmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFRydWVcIikgYXMgTWljcm9DaGFydENvbnRhaW5lcikuc2V0QWdncmVnYXRpb24oXG5cdFx0XHRcdFx0XCJtaWNyb0NoYXJ0XCIsXG5cdFx0XHRcdFx0PENoYXJ0Q29tcG9uZW50IHsuLi50aGlzLmdldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKCl9PnttaWNyb0NoYXJ0QWdncmVnYXRpb25zfTwvQ2hhcnRDb21wb25lbnQ+XG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQodGhpcy5jb250ZW50IGFzIE1pY3JvQ2hhcnRDb250YWluZXIpLnNldEFnZ3JlZ2F0aW9uKFxuXHRcdFx0XHRcdFwibWljcm9DaGFydFwiLFxuXHRcdFx0XHRcdDxDaGFydENvbXBvbmVudCB7Li4udGhpcy5nZXRNaWNyb0NoYXJ0UHJvcGVydGllcygpfT57bWljcm9DaGFydEFnZ3JlZ2F0aW9uc308L0NoYXJ0Q29tcG9uZW50PlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGxvZ1dhcm5pbmcoKTogdm9pZCB7XG5cdFx0Y29uc3QgZXJyb3JPYmplY3Q6IEVycm9yT2JqZWN0VHlwZSA9IHt9O1xuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CdWxsZXQpIHtcblx0XHRcdGVycm9yT2JqZWN0W1wiRGF0YVBvaW50X1ZhbHVlXCJdID0gdGhpcy5fZGF0YVBvaW50Py5WYWx1ZSB8fCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdE1pY3JvQ2hhcnRIZWxwZXIubG9nV2FybmluZyh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsIGVycm9yT2JqZWN0KTtcblx0fVxuXG5cdGdldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKCk6IFBhcnRpYWw8UHJvcGVydGllc09mPE1pY3JvQ2hhcnRTZXR0aW5ncz4+IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgbWljcm9DaGFydFByb3BlcnRpZXM6IE1pY3JvQ2hhcnRTZXR0aW5ncyA9IHtcblx0XHRcdHNpemU6IHRoaXMuc2l6ZSxcblx0XHRcdGhpZGVPbk5vRGF0YTogdGhpcy5oaWRlT25Ob0RhdGFcblx0XHR9O1xuXG5cdFx0Y29uc3QgZGF0YVBvaW50UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPERhdGFQb2ludFR5cGU+KFxuXHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPixcblx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZVxuXHRcdCk7XG5cblx0XHRjb25zdCBtaWNyb0NoYXJ0QWdncmVnYXRpb25zID0gTWljcm9DaGFydEhlbHBlci5nZXRBZ2dyZWdhdGlvbkZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KCksXG5cdFx0XHRkYXRhUG9pbnRQYXRoLFxuXHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT4sXG5cdFx0XHR0aGlzLl9zb3J0T3JkZXIgYXMgU29ydE9yZGVyVHlwZVtdLFxuXHRcdFx0KHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3QgYXMgQ2hhcnQpPy5EaW1lbnNpb25zPy5bMF0/LnZhbHVlLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cblx0XHRzd2l0Y2ggKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSkge1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEJ1bGxldE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvRG9udXRcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldFJhZGlhbE1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9QaWVcIjpcblx0XHRcdFx0bWljcm9DaGFydFByb3BlcnRpZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEhhcnZleU1pY3JvQ2hhcnRQcm9wZXJ0aWVzKG1pY3JvQ2hhcnRQcm9wZXJ0aWVzLCB0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkU3RhY2tlZEJhck1pY3JvQ2hhcnRTZXR0aW5ncykuYmFycyA9IG1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMgYXMgdW5rbm93biBhcyBBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjpcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb2x1bW5NaWNyb0NoYXJ0U2V0dGluZ3MpLmNvbHVtbnMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldEFnZ3JlZ2F0aW9uRm9yTWljcm9jaGFydChcblx0XHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdCgpLFxuXHRcdFx0XHRcdGRhdGFQb2ludFBhdGgsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGg/LmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpLFxuXHRcdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5EaW1lbnNpb25zPy5bMF0sXG5cdFx0XHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8TWVhc3VyZT4sXG5cdFx0XHRcdFx0dGhpcy5fc29ydE9yZGVyIGFzIFNvcnRPcmRlclR5cGVbXSxcblx0XHRcdFx0XHQodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldE9iamVjdCBhcyBDaGFydCk/LkRpbWVuc2lvbnM/LlswXT8udmFsdWUsXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpIGFzIEFnZ3JlZ2F0aW9uQmluZGluZ0luZm87XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0JhclwiOlxuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MpLm1heFZhbHVlID0gdGhpcy5fZGF0YVBvaW50Lk1heGltdW1WYWx1ZVxuXHRcdFx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oY29uc3RhbnQodGhpcy5fZGF0YVBvaW50Lk1heGltdW1WYWx1ZT8udmFsdWVPZigpKSlcblx0XHRcdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRDb21wYXJpc29uTWljcm9DaGFydFNldHRpbmdzKS5taW5WYWx1ZSA9IHRoaXMuX2RhdGFQb2ludC5NaW5pbXVtVmFsdWVcblx0XHRcdFx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKGNvbnN0YW50KHRoaXMuX2RhdGFQb2ludC5NaW5pbXVtVmFsdWU/LnZhbHVlT2YoKSkpXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdChtaWNyb0NoYXJ0UHJvcGVydGllcyBhcyAkQ29tcGFyaXNvbk1pY3JvQ2hhcnRTZXR0aW5ncykuY29sb3JQYWxldHRlID0gTWljcm9DaGFydEhlbHBlci5nZXRDb2xvclBhbGV0dGVGb3JNaWNyb0NoYXJ0KFxuXHRcdFx0XHRcdHRoaXMuX2RhdGFQb2ludFxuXHRcdFx0XHQpO1xuXHRcdFx0XHQobWljcm9DaGFydFByb3BlcnRpZXMgYXMgJENvbXBhcmlzb25NaWNyb0NoYXJ0U2V0dGluZ3MpLmRhdGEgPSBtaWNyb0NoYXJ0QWdncmVnYXRpb25zIGFzIHVua25vd24gYXMgQWdncmVnYXRpb25CaW5kaW5nSW5mbztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVUkuQ2hhcnRUeXBlL0xpbmVcIjpcblx0XHRcdFx0KG1pY3JvQ2hhcnRQcm9wZXJ0aWVzIGFzICRMaW5lTWljcm9DaGFydFNldHRpbmdzKS5zaG93VGhyZXNob2xkTGluZSA9IGZhbHNlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gbWljcm9DaGFydFByb3BlcnRpZXM7XG5cdH1cblxuXHRhc3luYyBnZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zKCk6IFByb21pc2U8TWljcm9DaGFydEFnZ3JlZ2F0aW9uIHwgdW5kZWZpbmVkPiB7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCA9IHRoaXMuX2RhdGFQb2ludC5Dcml0aWNhbGl0eVxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCh0aGlzLl9kYXRhUG9pbnQpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQnVsbGV0KSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRCdWxsZXRNaWNyb0NoYXJ0QWdncmVnYXRpb25zKHRoaXMuX2RhdGFQb2ludCwgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CYXJTdGFja2VkKSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRTdGFja01pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoXG5cdFx0XHRcdHRoaXMuX2RhdGFQb2ludCxcblx0XHRcdFx0dGhpcy5fbWVhc3VyZURhdGFQYXRoLFxuXHRcdFx0XHRjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuUGllKSB7XG5cdFx0XHRyZXR1cm4gTWljcm9DaGFydEhlbHBlci5nZXRIYXJ2ZXlNaWNyb0NoYXJ0QWdncmVnYXRpb25zKHRoaXMuX2RhdGFQb2ludCwgY3JpdGljYWxpdHlFeHByZXNzaW9uRm9yTWljcm9jaGFydCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5CYXIpIHtcblx0XHRcdHJldHVybiBNaWNyb0NoYXJ0SGVscGVyLmdldENvbXBhcmlzb25NaWNyb0NoYXJ0QWdncmVnYXRpb25zKFxuXHRcdFx0XHR0aGlzLl9kYXRhUG9pbnQsXG5cdFx0XHRcdGNyaXRpY2FsaXR5RXhwcmVzc2lvbkZvck1pY3JvY2hhcnQsXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQXJlYSkge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0QXJlYU1pY3JvQ2hhcnRBZ2dyZWdhdGlvbnMoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPENoYXJ0IHwgUHJlc2VudGF0aW9uVmFyaWFudD4sXG5cdFx0XHRcdHRoaXMuX3RhcmdldE5hdmlnYXRpb25QYXRoIGFzIENvbnRleHQsXG5cdFx0XHRcdHRoaXMuc2hvd09ubHlDaGFydFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkNvbHVtbikge1xuXHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0Q29sdW1uTWljcm9DaGFydEFnZ3JlZ2F0aW9ucyhcblx0XHRcdFx0dGhpcy5fZGF0YVBvaW50LFxuXHRcdFx0XHRjcml0aWNhbGl0eUV4cHJlc3Npb25Gb3JNaWNyb2NoYXJ0LFxuXHRcdFx0XHR0aGlzLnNob3dPbmx5Q2hhcnRcblx0XHRcdCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5MaW5lKSB7XG5cdFx0XHRpZiAodGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggJiYgdGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGgpIHtcblx0XHRcdFx0cmV0dXJuIE1pY3JvQ2hhcnRIZWxwZXIuZ2V0TGluZU1pY3JvQ2hhcnRBZ2dyYWdhdGlvbnMoXG5cdFx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0XHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQsXG5cdFx0XHRcdFx0dGhpcy5fdGFyZ2V0TmF2aWdhdGlvblBhdGhcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y3JlYXRlTWljcm9DaGFydElkKGNoYXJ0VHlwZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgY2hhcnRJRFByZWZpeDtcblx0XHRzd2l0Y2ggKGNoYXJ0VHlwZSkge1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiQnVsbGV0TWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvRG9udXRcIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiUmFkaWFsTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvUGllXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkhhcnZleUJhbGxNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9CYXJTdGFja2VkXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIlN0YWNrZWRCYXJNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9BcmVhXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkFyZWFNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9Db2x1bW5cIjpcblx0XHRcdFx0Y2hhcnRJRFByZWZpeCA9IFwiQ29sdW1uTWljcm9DaGFydFwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJVSS5DaGFydFR5cGUvQmFyXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkNvbXBhcmlzb25NaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCI6XG5cdFx0XHRcdGNoYXJ0SURQcmVmaXggPSBcIkxpbmVNaWNyb0NoYXJ0XCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5jcmVhdGVJZChjaGFydElEUHJlZml4KTtcblx0fVxuXG5cdGdldE1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzKCk6IFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Q29udGFpbmVyPiB7XG5cdFx0Y29uc3QgbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXM6IFByb3BlcnRpZXNPZjxNaWNyb0NoYXJ0Q29udGFpbmVyPiA9IHtcblx0XHRcdGNoYXJ0VGl0bGU6IHRoaXMudGl0bGUgfHwgKHRoaXMuX2NoYXJ0VGFyZ2V0LlRpdGxlPy52YWx1ZU9mKCkgYXMgc3RyaW5nKSB8fCB1bmRlZmluZWRcblx0XHR9O1xuXHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLnNob3dPbmx5Q2hhcnQgPSB0aGlzLnNob3dPbmx5Q2hhcnQ7XG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuY2hhcnRUaXRsZSA9ICh0aGlzLl9jaGFydFRhcmdldC5UaXRsZSBhcyBzdHJpbmcpIHx8IHVuZGVmaW5lZDtcblx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5jaGFydERlc2NyaXB0aW9uID1cblx0XHRcdHRoaXMuZGVzY3JpcHRpb24gfHwgKHRoaXMuX2NoYXJ0VGFyZ2V0LkRlc2NyaXB0aW9uPy52YWx1ZU9mKCkgYXMgc3RyaW5nKSB8fCB1bmRlZmluZWQ7XG5cblx0XHR0aGlzLl9iaW5kaW5nID0gTWljcm9DaGFydEhlbHBlci5nZXRCaW5kaW5nRXhwcmVzc2lvbkZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUsXG5cdFx0XHR0aGlzLl9tZWFzdXJlRGF0YVBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxNZWFzdXJlPixcblx0XHRcdHRoaXMsXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KCksXG5cdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIilcblx0XHQpO1xuXG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMudW9tUGF0aCA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0VU9NUGF0aEZvck1pY3JvY2hhcnQoXG5cdFx0XHR0aGlzLnNob3dPbmx5Q2hhcnQsXG5cdFx0XHR0aGlzLl9tZWFzdXJlRGF0YVBhdGgsXG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGVcblx0XHQpO1xuXG5cdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuaWQgPSB0aGlzLmNyZWF0ZU1pY3JvQ2hhcnRJZCh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUpO1xuXG5cdFx0Y29uc3QgY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eSA9IFtcIlVJLkNoYXJ0VHlwZS9CdWxsZXRcIiwgXCJVSS5DaGFydFR5cGUvUGllXCIsIFwiVUkuQ2hhcnRUeXBlL1JhZGlhbFwiXTtcblx0XHRpZiAoY2hhcnRzV2l0aFZpc2libGVQcm9wZXJ0eS5pbmNsdWRlcyh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUpKSB7XG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy52aXNpYmxlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdG5vdChcblx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24odGhpcy5fY2hhcnRUYXJnZXQuTWVhc3VyZXNbMF0uJHRhcmdldD8uYW5ub3RhdGlvbnMuVUk/LkhpZGRlbiksXG5cdFx0XHRcdFx0XHRjb25zdGFudCh0cnVlKSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KGZhbHNlKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMudmlzaWJsZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQmFyU3RhY2tlZCkge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGF0YVBvaW50UXVhbGlmaWVycyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1pY3JvQ2hhcnQoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZSBhcyBzdHJpbmdcblx0XHRcdCkgYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5BcmVhIHx8IHRoaXMuX2NoYXJ0VGFyZ2V0LkNoYXJ0VHlwZSA9PT0gQ2hhcnRUeXBlLkNvbHVtbikge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGF0YVBvaW50UXVhbGlmaWVycyA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0RGF0YVBvaW50UXVhbGlmaWVyc0Zvck1pY3JvQ2hhcnQoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0Py5NZWFzdXJlQXR0cmlidXRlc1swXT8uRGF0YVBvaW50Py52YWx1ZSBhcyBzdHJpbmdcblx0XHRcdCkgYXMgdW5rbm93biBhcyBzdHJpbmdbXTtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVzID0gW1xuXHRcdFx0XHQodGhpcy5fbWVhc3VyZURhdGFQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KT8udGFyZ2V0T2JqZWN0Py5uYW1lIGFzIHN0cmluZ1xuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuTGluZSkge1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMubWVhc3VyZXMgPSBNaWNyb0NoYXJ0SGVscGVyLmdldE1lYXN1cmVQcm9wZXJ0eVBhdGhzKFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldCxcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGg/LnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMsXG5cdFx0XHRcdFwiTGluZVwiLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpIGFzIHN0cmluZ1tdO1xuXG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5kYXRhUG9pbnRRdWFsaWZpZXJzID0gTWljcm9DaGFydEhlbHBlci5nZXREYXRhUG9pbnRRdWFsaWZpZXJzRm9yTWVhc3VyZXMoXG5cdFx0XHRcdHRoaXMuX2NoYXJ0VGFyZ2V0LFxuXHRcdFx0XHR0aGlzLl9taWNyb0NoYXJ0RGF0YU1vZGVsT2JqZWN0UGF0aD8udGFyZ2V0RW50aXR5VHlwZS5hbm5vdGF0aW9ucyxcblx0XHRcdFx0XCJMaW5lXCIsXG5cdFx0XHRcdHRydWVcblx0XHRcdCkgYXMgc3RyaW5nW107XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQXJlYSB8fFxuXHRcdFx0dGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlID09PSBDaGFydFR5cGUuQ29sdW1uIHx8XG5cdFx0XHR0aGlzLl9jaGFydFRhcmdldC5DaGFydFR5cGUgPT09IENoYXJ0VHlwZS5MaW5lXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBkaW1lbnNpb25EYXRhUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdFx0dGhpcy5fbWljcm9DaGFydERhdGFNb2RlbE9iamVjdFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxDaGFydCB8IFByZXNlbnRhdGlvblZhcmlhbnQ+LFxuXHRcdFx0XHR0aGlzLl9jaGFydFRhcmdldC5EaW1lbnNpb25zWzBdLnZhbHVlXG5cdFx0XHQpO1xuXG5cdFx0XHRtaWNyb0NoYXJ0Q29udGFpbmVyUHJvcGVydGllcy5kaW1lbnNpb24gPSBkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0XG5cdFx0XHRcdD8gKGRpbWVuc2lvbkRhdGFQYXRoPy50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5Db21tb24/LlRleHQgYXMgdW5rbm93biBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPik/LnBhdGhcblx0XHRcdFx0OiBkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5uYW1lO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMubWVhc3VyZVByZWNpc2lvbiA9IHRoaXMuX2RhdGFQb2ludD8uVmFsdWU/LiR0YXJnZXQ/LnByZWNpc2lvbjtcblx0XHRcdG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLm1lYXN1cmVTY2FsZSA9IE1pY3JvQ2hhcnRIZWxwZXIuZ2V0TWVhc3VyZVNjYWxlRm9yTWljcm9DaGFydCh0aGlzLl9kYXRhUG9pbnQpO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuZGltZW5zaW9uUHJlY2lzaW9uID0gZGltZW5zaW9uRGF0YVBhdGg/LnRhcmdldE9iamVjdD8ucHJlY2lzaW9uO1xuXHRcdFx0bWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMuY2FsZW5kYXJQYXR0ZXJuID0gTWljcm9DaGFydEhlbHBlci5nZXRDYWxlbmRhclBhdHRlcm4oXG5cdFx0XHRcdGRpbWVuc2lvbkRhdGFQYXRoPy50YXJnZXRPYmplY3Q/LnR5cGUgYXMgc3RyaW5nLFxuXHRcdFx0XHRkaW1lbnNpb25EYXRhUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucyBhcyBQcm9wZXJ0eUFubm90YXRpb25zLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXM7XG5cdH1cblxuXHRjcmVhdGVUaXRsZSh0aXRsZVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFRpdGxlTGluayB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRpdGxlVGV4dCkge1xuXHRcdFx0Ly8gVGhlIHRpdGxlIGhhZCB0aGlzIGlkIGluIHRlbXBsYXRlIHRpbWUgYW5kIHdlIG5lZWQgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaWQuXG5cdFx0XHRjb25zdCBsb2NhbExlZ2FjeVRpdGxlSWQgPSBJRC5nZW5lcmF0ZShbXG5cdFx0XHRcdFwiZmVcIixcblx0XHRcdFx0XCJNaWNyb0NoYXJ0TGlua1wiLFxuXHRcdFx0XHR0aGlzLl90YXJnZXROYXZpZ2F0aW9uUGF0aD8uZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIiksXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LnRlcm0sXG5cdFx0XHRcdHRoaXMuX21pY3JvQ2hhcnREYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRPYmplY3Q/LnF1YWxpZmllclxuXHRcdFx0XSk7XG5cdFx0XHRjb25zdCB2aWV3SWQgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LmdldFZpZXcoKS5nZXRJZCgpO1xuXHRcdFx0Y29uc3QgbGVnYWN5VGl0bGVJZCA9IGAke3ZpZXdJZH0tLSR7bG9jYWxMZWdhY3lUaXRsZUlkfWA7XG5cblx0XHRcdGNvbnN0IHRpdGxlTGlua1Byb3BlcnRpZXM6IFByb3BlcnRpZXNPZjxUaXRsZUxpbms+ID0ge1xuXHRcdFx0XHRpZDogbGVnYWN5VGl0bGVJZCxcblx0XHRcdFx0dGV4dDogdGl0bGVUZXh0XG5cdFx0XHR9O1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpO1xuXHRcdFx0aWYgKHRoaXMubmF2aWdhdGlvblR5cGUgPT09IFwiSW5QYWdlXCIpIHtcblx0XHRcdFx0Y29uc3QgYXJpYVRyYW5zbGF0ZWRUZXh0ID0gcmVzb3VyY2VCdW5kbGU/LmdldFRleHQoXCJUX0NPTU1PTl9IRUFERVJEUF9USVRMRV9MSU5LX0lOUEFHRV9BUklBXCIpO1xuXHRcdFx0XHR0aXRsZUxpbmtQcm9wZXJ0aWVzLnNob3dBc0xpbmsgPSB0cnVlO1xuXHRcdFx0XHR0aXRsZUxpbmtQcm9wZXJ0aWVzLmxpbmtBcmlhVGV4dCA9IGFyaWFUcmFuc2xhdGVkVGV4dDtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5uYXZpZ2F0aW9uVHlwZSA9PT0gXCJFeHRlcm5hbFwiKSB7XG5cdFx0XHRcdGNvbnN0IHNob3dMaW5rID0gQ29tbW9uSGVscGVyLmdldEhlYWRlckRhdGFQb2ludExpbmtWaXNpYmlsaXR5KGxvY2FsTGVnYWN5VGl0bGVJZCwgdHJ1ZSk7XG5cdFx0XHRcdGNvbnN0IGFyaWFUcmFuc2xhdGVkVGV4dCA9IHJlc291cmNlQnVuZGxlPy5nZXRUZXh0KFwiTV9NSUNST0NIQVJUX1RJVExFX0ZSQUdNRU5UX0hFQURFUl9NSUNST0NIQVJUX0xJTktfQVJJQVwiKTtcblx0XHRcdFx0dGl0bGVMaW5rUHJvcGVydGllcy5zaG93QXNMaW5rID0gc2hvd0xpbms7XG5cdFx0XHRcdHRpdGxlTGlua1Byb3BlcnRpZXMubGlua0FyaWFUZXh0ID0gYXJpYVRyYW5zbGF0ZWRUZXh0O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PFRpdGxlTGlua1xuXHRcdFx0XHRcdHsuLi50aXRsZUxpbmtQcm9wZXJ0aWVzfVxuXHRcdFx0XHRcdGxpbmtQcmVzcz17KHByZXNzRXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInRpdGxlUHJlc3NcIiwgcHJlc3NFdmVudCk7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgbWljcm9jaGFydCBjb250ZW50LlxuXHQgKiBAcmV0dXJucyBNaWNyb0NoYXJ0Q29udGFpbmVyIHdoaWNoIHdpbGwgY29udGFpbiBUaXRsZSBhbmQgbWljcm8gY2hhcnQgY29udGVudCBmb3IgZWFjaCBvZiB0aGUgbWljcm9jaGFydC5cblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogTWljcm9DaGFydENvbnRhaW5lciB7XG5cdFx0Y29uc3QgaXNWYWxpZENoYXJ0VHlwZSA9IFtcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0J1bGxldFwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvRG9udXRcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL1BpZVwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQmFyU3RhY2tlZFwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQXJlYVwiLFxuXHRcdFx0XCJVSS5DaGFydFR5cGUvQ29sdW1uXCIsXG5cdFx0XHRcIlVJLkNoYXJ0VHlwZS9CYXJcIixcblx0XHRcdFwiVUkuQ2hhcnRUeXBlL0xpbmVcIlxuXHRcdF0uaW5jbHVkZXModGhpcy5fY2hhcnRUYXJnZXQuQ2hhcnRUeXBlKTtcblx0XHRpZiAoIWlzVmFsaWRDaGFydFR5cGUpIHtcblx0XHRcdHJldHVybiA8VGV4dCB0ZXh0PVwiVGhpcyBjaGFydCB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuIE90aGVyIFR5cGVzIHlldCB0byBiZSBpbXBsZW1lbnRlZC4uXCIgLz47XG5cdFx0fSBlbHNlIGlmICh0aGlzLmlzQW5hbHl0aWNzKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8Q29uZGl0aW9uYWxXcmFwcGVyXG5cdFx0XHRcdFx0Y29uZGl0aW9uPXtjb21waWxlRXhwcmVzc2lvbihvcihub3QocGF0aEluTW9kZWwoXCJAJHVpNS5ub2RlLmlzRXhwYW5kZWRcIikpLCBlcXVhbChwYXRoSW5Nb2RlbChcIkAkdWk1Lm5vZGUubGV2ZWxcIiksIDApKSl9XG5cdFx0XHRcdFx0dmlzaWJsZT17Z2V0RXhwcmVzc2lvbkZvck1lYXN1cmVVbml0KHRoaXMuX2RhdGFQb2ludC5WYWx1ZS4kdGFyZ2V0KX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50VHJ1ZTogdGhpcy5jcmVhdGVDaGFydENvbnRlbnQoKSxcblx0XHRcdFx0XHRcdGNvbnRlbnRGYWxzZTogPFRleHQgdGV4dD1cIipcIj48L1RleHQ+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Db25kaXRpb25hbFdyYXBwZXI+XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jcmVhdGVDaGFydENvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVDaGFydENvbnRlbnQoKTogTWljcm9DaGFydENvbnRhaW5lciB7XG5cdFx0Y29uc3QgbWljcm9DaGFydENvbnRhaW5lclByb3BlcnRpZXMgPSB7XG5cdFx0XHQuLi50aGlzLmdldE1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzKCksXG5cdFx0XHRiaW5kaW5nOiB0aGlzLl9iaW5kaW5nXG5cdFx0fTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1pY3JvQ2hhcnRDb250YWluZXIgey4uLm1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzfT5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRtaWNyb0NoYXJ0VGl0bGU6ICF0aGlzLnNob3dPbmx5Q2hhcnQgPyB0aGlzLmNyZWF0ZVRpdGxlKG1pY3JvQ2hhcnRDb250YWluZXJQcm9wZXJ0aWVzLmNoYXJ0VGl0bGUpIDogdW5kZWZpbmVkXG5cdFx0XHRcdH19XG5cdFx0XHQ8L01pY3JvQ2hhcnRDb250YWluZXI+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BcUNLQSxjQUFjLDBCQUFkQSxjQUFjO0lBQ2xCO0FBQ0Q7QUFDQTtJQUhLQSxjQUFjO0lBTWxCO0FBQ0Q7QUFDQTtJQVJLQSxjQUFjO0lBV2xCO0FBQ0Q7QUFDQTtJQWJLQSxjQUFjO0lBQUEsT0FBZEEsY0FBYztFQUFBLEVBQWRBLGNBQWM7RUFpQm5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBckJBLElBeUJxQkMsVUFBVSxJQUFBQyxJQUFBLEdBSDlCQyxjQUFjLENBQUMsMEJBQTBCLEVBQUU7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
@@ -125,7 +125,7 @@ export default class MicroChart extends BuildingBlock<MicroChartContainer> {
125
125
  * Size of the MicroChart
126
126
  * @public
127
127
  */
128
- @property({ type: "string" })
128
+ @property({ type: "string", allowedValues: ["XS", "S", "M", "L"] })
129
129
  size?: string;
130
130
 
131
131
  /**