@sapui5/sap.fe.controls 1.146.0 → 1.148.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 (70) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/controls/.library +1 -1
  3. package/src/sap/fe/controls/AINotice.js +11 -37
  4. package/src/sap/fe/controls/AINotice.tsx +8 -47
  5. package/src/sap/fe/controls/AiNoticeHelper.js +55 -0
  6. package/src/sap/fe/controls/AiNoticeHelper.tsx +60 -0
  7. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +270 -38
  8. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +276 -21
  9. package/src/sap/fe/controls/easyFilter/EasyFilterInput.js +4 -1
  10. package/src/sap/fe/controls/easyFilter/EasyFilterInput.tsx +3 -0
  11. package/src/sap/fe/controls/easyFilter/ErrorMessageHandler.js +20 -2
  12. package/src/sap/fe/controls/easyFilter/ErrorMessageHandler.ts +22 -0
  13. package/src/sap/fe/controls/easyFilter/utils.js +14 -2
  14. package/src/sap/fe/controls/easyFilter/utils.ts +11 -1
  15. package/src/sap/fe/controls/library.js +1 -1
  16. package/src/sap/fe/controls/messagebundle.properties +16 -4
  17. package/src/sap/fe/controls/messagebundle_ar.properties +8 -1
  18. package/src/sap/fe/controls/messagebundle_bg.properties +8 -1
  19. package/src/sap/fe/controls/messagebundle_ca.properties +8 -1
  20. package/src/sap/fe/controls/messagebundle_cnr.properties +8 -1
  21. package/src/sap/fe/controls/messagebundle_cs.properties +8 -1
  22. package/src/sap/fe/controls/messagebundle_cy.properties +8 -1
  23. package/src/sap/fe/controls/messagebundle_da.properties +8 -1
  24. package/src/sap/fe/controls/messagebundle_de.properties +8 -1
  25. package/src/sap/fe/controls/messagebundle_el.properties +8 -1
  26. package/src/sap/fe/controls/messagebundle_en.properties +8 -1
  27. package/src/sap/fe/controls/messagebundle_en_GB.properties +8 -1
  28. package/src/sap/fe/controls/messagebundle_en_US_saprigi.properties +11 -1
  29. package/src/sap/fe/controls/messagebundle_es.properties +8 -1
  30. package/src/sap/fe/controls/messagebundle_es_MX.properties +8 -1
  31. package/src/sap/fe/controls/messagebundle_et.properties +8 -1
  32. package/src/sap/fe/controls/messagebundle_fi.properties +8 -1
  33. package/src/sap/fe/controls/messagebundle_fr.properties +8 -1
  34. package/src/sap/fe/controls/messagebundle_fr_CA.properties +8 -1
  35. package/src/sap/fe/controls/messagebundle_hi.properties +8 -1
  36. package/src/sap/fe/controls/messagebundle_hr.properties +8 -1
  37. package/src/sap/fe/controls/messagebundle_hu.properties +8 -1
  38. package/src/sap/fe/controls/messagebundle_id.properties +8 -1
  39. package/src/sap/fe/controls/messagebundle_it.properties +8 -1
  40. package/src/sap/fe/controls/messagebundle_iw.properties +8 -1
  41. package/src/sap/fe/controls/messagebundle_ja.properties +8 -1
  42. package/src/sap/fe/controls/messagebundle_kk.properties +8 -1
  43. package/src/sap/fe/controls/messagebundle_ko.properties +8 -1
  44. package/src/sap/fe/controls/messagebundle_lt.properties +8 -1
  45. package/src/sap/fe/controls/messagebundle_lv.properties +8 -1
  46. package/src/sap/fe/controls/messagebundle_mk.properties +8 -1
  47. package/src/sap/fe/controls/messagebundle_ms.properties +8 -1
  48. package/src/sap/fe/controls/messagebundle_nl.properties +8 -1
  49. package/src/sap/fe/controls/messagebundle_no.properties +8 -1
  50. package/src/sap/fe/controls/messagebundle_pl.properties +8 -1
  51. package/src/sap/fe/controls/messagebundle_pt.properties +8 -1
  52. package/src/sap/fe/controls/messagebundle_pt_PT.properties +8 -1
  53. package/src/sap/fe/controls/messagebundle_ro.properties +8 -1
  54. package/src/sap/fe/controls/messagebundle_ru.properties +8 -1
  55. package/src/sap/fe/controls/messagebundle_sh.properties +8 -1
  56. package/src/sap/fe/controls/messagebundle_sk.properties +8 -1
  57. package/src/sap/fe/controls/messagebundle_sl.properties +8 -1
  58. package/src/sap/fe/controls/messagebundle_sr.properties +8 -1
  59. package/src/sap/fe/controls/messagebundle_sv.properties +8 -1
  60. package/src/sap/fe/controls/messagebundle_th.properties +8 -1
  61. package/src/sap/fe/controls/messagebundle_tr.properties +8 -1
  62. package/src/sap/fe/controls/messagebundle_uk.properties +8 -1
  63. package/src/sap/fe/controls/messagebundle_vi.properties +8 -1
  64. package/src/sap/fe/controls/messagebundle_zh_CN.properties +8 -1
  65. package/src/sap/fe/controls/messagebundle_zh_TW.properties +8 -1
  66. package/src/sap/fe/controls/themes/base/EasyFill.less +42 -0
  67. package/src/sap/fe/controls/themes/base/EasyFilter.less +19 -3
  68. package/src/sap/fe/controls/themes/base/QuickView.less +6 -1
  69. package/src/sap/fe/controls/themes/base/Token.less +21 -9
  70. package/src/sap/fe/controls/themes/base/UnitCurrencyHbox.less +6 -1
@@ -174,6 +174,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
174
174
  _proto.openSuggestionPopover = async function openSuggestionPopover() {
175
175
  if (!this.$searchInput?.getValue() && (!this.$favoritePopover || !this.$favoritePopover?.isOpen())) {
176
176
  // Open the easy filter popover
177
+ if (!this.shellHistoryProvider) {
178
+ await this.initShellHistoryProvider();
179
+ }
177
180
  this.state.isHistoryEnabled = this.shellHistoryProvider?.isHistoryEnabled() ?? false;
178
181
  this.state.favoriteQueries = (await this.shellHistoryProvider?.getFavoriteQueries()) ?? [];
179
182
  this.state.recentQueries = (await this.shellHistoryProvider?.getRecentQueries()) ?? [];
@@ -500,4 +503,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
500
503
  _exports = EasyFilterInput;
501
504
  return _exports;
502
505
  }, false);
503
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVySW5wdXQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzMiLCJwcm9wZXJ0eSIsIl9kZWM0IiwiX2RlYzUiLCJldmVudCIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImRlZmluZVN0YXRlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJmYXZvcml0ZUJ1dHRvbkNsaWNrZWQiLCJfZGVzY3JpcHRvcjciLCJpbml0aWFsaXplIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFZhbHVlIiwiJHNlYXJjaElucHV0IiwiaXNIaXN0b3J5RW5hYmxlZCIsInN0YXRlIiwidmFsdWVPZiIsInNldFZhbHVlIiwidmFsdWUiLCJzZXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicmVjb21tZW5kZWRRdWVyaWVzIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwicG9wb3ZlckludmlzaWJsZU1lc3NhZ2UiLCJJbnZpc2libGVNZXNzYWdlIiwiZ2V0SW5zdGFuY2UiLCJjcmVhdGVJbnB1dCIsInNldEFzSW52YWxpZCIsIm1lc3NhZ2UiLCJzZXRWYWx1ZVN0YXRlIiwiVmFsdWVTdGF0ZSIsIldhcm5pbmciLCJzZXRWYWx1ZVN0YXRlVGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsInNldEFzVmFsaWQiLCJOb25lIiwiY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSIsIl9qc3giLCJJbnB1dCIsIndpZHRoIiwic2hvd0NsZWFySWNvbiIsImNoYW5nZSIsImUiLCJmaXJlRXZlbnQiLCJxdWVyeSIsImdldFBhcmFtZXRlciIsImxpdmVDaGFuZ2UiLCJxdWVyeUNoYW5nZWQiLCJnZXRTb3VyY2UiLCIkZmF2b3JpdGVQb3BvdmVyIiwiaXNPcGVuIiwib3BlblN1Z2dlc3Rpb25Qb3BvdmVyIiwiZ2V0VGV4dCIsImdldFZhbHVlU3RhdGUiLCJwbGFjZWhvbGRlciIsImZhdm9yaXRlUG9wb3ZlciIsImNyZWF0ZUZhdm9yaXRlUG9wb3ZlciIsImFkZERlcGVuZGVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwia2V5Iiwib25FbnRlclByZXNzZWQiLCJjbG9zZSIsIm9ua2V5ZG93biIsImxlbmd0aCIsInByZXZlbnREZWZhdWx0IiwicG9wb3ZlckNvbmFpbmVyIiwiZ2V0Q29udGVudCIsImNvbnRhaW5lckl0ZW1zIiwiZ2V0SXRlbXMiLCJmaW5kIiwiaXRlbSIsImlzRm9jdXNhYmxlIiwiZm9jdXMiLCJvbnRhcCIsIm9uZm9jdXNpbiIsInRhcmdldFRleHQiLCJ0YXJnZXQiLCJvdXRlclRleHQiLCJ0YXJnZXRJZCIsImlkIiwiaW5jbHVkZXMiLCJmYXZvcml0ZVF1ZXJpZXMiLCJmaWx0ZXIiLCJkYXRhIiwidG9Mb3dlckNhc2UiLCJyZWNlbnRRdWVyaWVzIiwib25BZnRlclJlbmRlcmluZyIsImFubm91bmNlIiwiSW52aXNpYmxlTWVzc2FnZU1vZGUiLCJBc3NlcnRpdmUiLCJzaGVsbEhpc3RvcnlQcm92aWRlciIsImdldEZhdm9yaXRlUXVlcmllcyIsImdldFJlY2VudFF1ZXJpZXMiLCJvcGVuQnkiLCJyZXF1ZXN0RmF2b3JpdGUiLCJtYWdpY1F1ZXJ5IiwiYWRkUmVjZW50UXVlcnkiLCJxdWVyeVN0cmluZyIsInJlcGxhY2UiLCJyZWNlbnRRdWVyeUluZGV4IiwiZmluZEluZGV4IiwiY29uY2F0Iiwic2xpY2UiLCJ1bnNoaWZ0Iiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNldEZhdm9yaXRlUXVlcmllcyIsInNldFJlY2VudFF1ZXJpZXMiLCJtYXAiLCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzIiwicmVjZW50UXVlcnkiLCJ0ZXh0IiwiaXNGYXZvcml0ZSIsImZhdm9yaXRlUXVlcnkiLCJpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJTaGVsbEhpc3RvcnlQcm92aWRlciIsImFwcElkIiwiZXJyb3IiLCJMb2ciLCJQb3BvdmVyIiwiZ2V0SWQiLCJzaG93SGVhZGVyIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJzaG93QXJyb3ciLCJpbml0aWFsRm9jdXMiLCJjbGFzcyIsInZpc2libGUiLCJlcXVhbCIsImJpbmRTdGF0ZSIsImNoaWxkcmVuIiwiY29udGVudCIsIkZsZXhCb3giLCJkaXJlY3Rpb24iLCJGbGV4RGlyZWN0aW9uIiwiQ29sdW1uIiwicmVuZGVyVHlwZSIsIml0ZW1zIiwiVGl0bGUiLCJ0aXRsZVN0eWxlIiwiVGl0bGVMZXZlbCIsIkg2IiwiSEJveCIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJjdHgiLCJCdXR0b24iLCJnZXRPYmplY3QiLCJwcmVzcyIsImJpbmQiLCJMaXN0Iiwibm9EYXRhIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwidGl0bGUiLCJpbGx1c3RyYXRpb25TaXplIiwiSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZSIsIkV4dHJhU21hbGwiLCJpbGx1c3RyYXRpb25UeXBlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSIsIk5vRW50cmllcyIsImRlc2NyaXB0aW9uIiwiQ3VzdG9tTGlzdEl0ZW0iLCJhcmlhTGFiZWxsZWRCeSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiX2pzeHMiLCJSb3ciLCJhbGlnbkl0ZW1zIiwiRmxleEFsaWduSXRlbXMiLCJDZW50ZXIiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIlRleHQiLCJ0b29sdGlwIiwid3JhcHBpbmciLCJpY29uIiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwiaW5kZXgiLCJpbmRleE9mIiwiZGVwZW5kZW50cyIsIkV2ZW50RGVsZWdhdGVIb29rIiwidGFwIiwidHJpZ2dlclBYSW50ZWdyYXRpb24iLCJtb2RlIiwiTGlzdE1vZGUiLCJEZWxldGUiLCJkZWxldGUiLCJlbmFibGVkIiwibGVzc1RoYW4iLCJyZW1vdmVGcm9tRmF2b3JpdGVzIiwiYWRkVG9GYXZvcml0ZXMiLCJuZXdGYXZvcml0ZSIsInBvcCIsInJlbmRlciIsInJtIiwiY29udHJvbCIsImpzeCIsInJlbmRlclVzaW5nUmVuZGVyTWFuYWdlciIsInJlZiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IHR5cGUgeyBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGJpbmRTdGF0ZSwgZXF1YWwsIGxlbmd0aCwgbGVzc1RoYW4gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVTdGF0ZSwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YsIHR5cGUgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBFdmVudERlbGVnYXRlSG9vayBmcm9tIFwic2FwL2ZlL2Jhc2UvRXZlbnREZWxlZ2F0ZUhvb2tcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IFNoZWxsSGlzdG9yeVByb3ZpZGVyIGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9TaGVsbEhpc3RvcnlQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBCdXR0b24kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEN1c3RvbUxpc3RJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21MaXN0SXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VTaXplIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VTaXplXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBMaXN0IGZyb20gXCJzYXAvbS9MaXN0XCI7XG5pbXBvcnQgdHlwZSB7IExpc3RCYXNlJERlbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC9tL0xpc3RCYXNlXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IHR5cGUgU3RhbmRhcmRMaXN0SXRlbSBmcm9tIFwic2FwL20vU3RhbmRhcmRMaXN0SXRlbVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBUaXRsZSBmcm9tIFwic2FwL20vVGl0bGVcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUsIEZsZXhBbGlnbkl0ZW1zLCBGbGV4RGlyZWN0aW9uLCBGbGV4SnVzdGlmeUNvbnRlbnQsIEZsZXhXcmFwLCBMaXN0TW9kZSwgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBJbnZpc2libGVNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVNZXNzYWdlXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IEludmlzaWJsZU1lc3NhZ2VNb2RlLCBUaXRsZUxldmVsLCBWYWx1ZVN0YXRlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB7IHRyaWdnZXJQWEludGVncmF0aW9uIH0gZnJvbSBcIi4vUFhGZWVkYmFja1wiO1xuXG50eXBlIFJlY2VudFR5cGUgPSB7XG5cdHRleHQ6IHN0cmluZztcblx0aXNGYXZvcml0ZTogYm9vbGVhbjtcbn07XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuZWFzeUZpbHRlci5FYXN5RmlsdGVySW5wdXRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJJbnB1dCBleHRlbmRzIENvbnRyb2wge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLklucHV0XCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdCRzZWFyY2hJbnB1dCE6IElucHV0O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXBwSWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJhcnJheVwiIH0pXG5cdHJlY29tbWVuZGVkVmFsdWVzPzogc3RyaW5nW107XG5cblx0QGV2ZW50KClcblx0cXVlcnlDaGFuZ2VkPzogRXZlbnRIYW5kbGVyPFVJNUV2ZW50PHsgcXVlcnk6IHN0cmluZyB9LCBFYXN5RmlsdGVySW5wdXQ+PjtcblxuXHRAZXZlbnQoKVxuXHRlbnRlclByZXNzZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4+O1xuXG5cdEBldmVudCgpXG5cdGxpdmVDaGFuZ2U/OiBFdmVudEhhbmRsZXI7XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZSE6IFJlc291cmNlQnVuZGxlO1xuXG5cdHNoZWxsSGlzdG9yeVByb3ZpZGVyOiBTaGVsbEhpc3RvcnlQcm92aWRlciB8IHVuZGVmaW5lZDtcblxuXHRwb3BvdmVySW52aXNpYmxlTWVzc2FnZTogSW52aXNpYmxlTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuXHQkZmF2b3JpdGVQb3BvdmVyOiBQb3BvdmVyIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgZmF2b3JpdGVCdXR0b25DbGlja2VkID0gZmFsc2U7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRxdWVyeUNoYW5nZWQ6IGJvb2xlYW47XG5cdFx0cmVjZW50UXVlcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cdFx0cmVjZW50UXVlcmllc1dpdEZhdm9yaXRlczogcmVhZG9ubHkgUmVjZW50VHlwZVtdO1xuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW47XG5cdFx0ZmF2b3JpdGVRdWVyaWVzOiBzdHJpbmdbXTtcblx0XHRyZWNvbW1lbmRlZFF1ZXJpZXM6IHN0cmluZ1tdO1xuXHR9PiA9IHtcblx0XHRxdWVyeUNoYW5nZWQ6IGZhbHNlLFxuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGZhbHNlLFxuXHRcdHJlY2VudFF1ZXJpZXM6IFtdLFxuXHRcdHJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXM6IFtdLFxuXHRcdGZhdm9yaXRlUXVlcmllczogW10gYXMgc3RyaW5nW10sXG5cdFx0cmVjb21tZW5kZWRRdWVyaWVzOiBbXSBhcyBzdHJpbmdbXVxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJJbnB1dD4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VmFsdWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0hpc3RvcnlFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLmlzSGlzdG9yeUVuYWJsZWQudmFsdWVPZigpO1xuXHR9XG5cblx0c2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMgPSB0aGlzLnJlY29tbWVuZGVkVmFsdWVzID8/IFtdO1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMucG9wb3ZlckludmlzaWJsZU1lc3NhZ2UgPSBJbnZpc2libGVNZXNzYWdlLmdldEluc3RhbmNlKCk7XG5cdFx0dGhpcy5jcmVhdGVJbnB1dCgpO1xuXHR9XG5cblx0c2V0QXNJbnZhbGlkKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlU3RhdGUoVmFsdWVTdGF0ZS5XYXJuaW5nKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZVN0YXRlVGV4dChtZXNzYWdlKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5vcGVuVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdHNldEFzVmFsaWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWVTdGF0ZShWYWx1ZVN0YXRlLk5vbmUpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdGNyZWF0ZUlucHV0KCk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0ID0gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdHNob3dDbGVhckljb249e3RydWV9XG5cdFx0XHRcdGNoYW5nZT17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInF1ZXJ5Q2hhbmdlZFwiLCB7IHF1ZXJ5OiBlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRsaXZlQ2hhbmdlPXsoZTogSW5wdXQkTGl2ZUNoYW5nZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zdGF0ZS5xdWVyeUNoYW5nZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwibGl2ZUNoYW5nZVwiKTtcblx0XHRcdFx0XHRpZiAoIWUuZ2V0U291cmNlKCkuZ2V0VmFsdWUoKSAmJiAhKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkgPz8gZmFsc2UpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSA9PT0gXCJcIikge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRQbGFjZWhvbGRlcih0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlU3RhdGUoKSA9PT0gVmFsdWVTdGF0ZS5XYXJuaW5nKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEFzVmFsaWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH19XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpfVxuXHRcdFx0PjwvSW5wdXQ+XG5cdFx0KTtcblxuXHRcdGNvbnN0IGZhdm9yaXRlUG9wb3ZlciA9IHRoaXMuY3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyID0gZmF2b3JpdGVQb3BvdmVyO1xuXG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRGVwZW5kZW50KGZhdm9yaXRlUG9wb3Zlcik7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRXZlbnREZWxlZ2F0ZSh7XG5cdFx0XHRvbmtleXVwOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuXHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy4kZmF2b3JpdGVQb3BvdmVyICYmIHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlKCkpIHtcblx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXIuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGUua2V5ID09PSBcIlRhYlwiICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkubGVuZ3RoID09PSAwICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkgIT09IHRoaXMuJHNlYXJjaElucHV0Py5nZXRQbGFjZWhvbGRlcigpICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFBsYWNlaG9sZGVyKCkgIT09IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUExBQ0VIT0xERVJcIilcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZSh0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0UGxhY2Vob2xkZXIoKSk7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJsaXZlQ2hhbmdlXCIpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGUua2V5ID09PSBcIkFycm93RG93blwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgcG9wb3ZlckNvbmFpbmVyID0gdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5nZXRDb250ZW50KClbMF07XG5cdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySXRlbXMgPSAocG9wb3ZlckNvbmFpbmVyIGFzIEZsZXhCb3gpLmdldEl0ZW1zKCk7XG5cdFx0XHRcdFx0Y29udGFpbmVySXRlbXM/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNGb2N1c2FibGUoKSAmJiAoaXRlbS5mb2N1cygpLCB0cnVlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbnRhcDogYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRhd2FpdCB0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fSxcblx0XHRcdG9uZm9jdXNpbjogYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRhd2FpdCB0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlci5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0VGV4dCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCk/Lm91dGVyVGV4dDtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0SWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5pZDtcblx0XHRcdFx0c3dpdGNoIChlLmtleSkge1xuXHRcdFx0XHRcdGNhc2UgXCJFbnRlclwiOlxuXHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkRlbGV0ZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRhcmdldElkPy5pbmNsdWRlcyhcImVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIikpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0KGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gdGFyZ2V0VGV4dC50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkVzY2FwZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5wb3BvdmVySW52aXNpYmxlTWVzc2FnZT8uYW5ub3VuY2UoXG5cdFx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9FQVNZX0ZJTFRFUl9JTlBVVF9URVhUX0xJTktfUE9QT1ZFUl9BUklBXCIpLFxuXHRcdFx0XHRcdEludmlzaWJsZU1lc3NhZ2VNb2RlLkFzc2VydGl2ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBvcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCF0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKSAmJiAoIXRoaXMuJGZhdm9yaXRlUG9wb3ZlciB8fCAhdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5pc09wZW4oKSkpIHtcblx0XHRcdC8vIE9wZW4gdGhlIGVhc3kgZmlsdGVyIHBvcG92ZXJcblx0XHRcdHRoaXMuc3RhdGUuaXNIaXN0b3J5RW5hYmxlZCA9IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmlzSGlzdG9yeUVuYWJsZWQoKSA/PyBmYWxzZTtcblx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gKGF3YWl0IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmdldEZhdm9yaXRlUXVlcmllcygpKSA/PyBbXTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IChhd2FpdCB0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5nZXRSZWNlbnRRdWVyaWVzKCkpID8/IFtdO1xuXHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5vcGVuQnkodGhpcy4kc2VhcmNoSW5wdXQpO1xuXHRcdH1cblx0fVxuXG5cdHJlcXVlc3RGYXZvcml0ZShlOiBCdXR0b24kUHJlc3NFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uY2xvc2UoKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoZS5nZXRTb3VyY2UoKS5nZXRUZXh0KCkpO1xuXHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0fVxuXG5cdG9uRW50ZXJQcmVzc2VkKCk6IHZvaWQge1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uY2xvc2UoKTtcblx0XHR0aGlzLnN0YXRlLnF1ZXJ5Q2hhbmdlZCA9IGZhbHNlO1xuXHRcdGxldCBtYWdpY1F1ZXJ5ID0gdGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCk7XG5cdFx0aWYgKG1hZ2ljUXVlcnkgPT09IFwiXCIgJiYgdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKSAhPT0gdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKSkge1xuXHRcdFx0bWFnaWNRdWVyeSA9IHRoaXMuJHNlYXJjaElucHV0LmdldFBsYWNlaG9sZGVyKCk7XG5cdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUobWFnaWNRdWVyeSk7XG5cdFx0fVxuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZVN0YXRlVGV4dChcIlwiKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWVTdGF0ZShcIk5vbmVcIik7XG5cdFx0dGhpcy5maXJlRXZlbnQoXCJlbnRlclByZXNzZWRcIiwgeyBxdWVyeTogbWFnaWNRdWVyeSB9KTtcblx0fVxuXG5cdGFkZFJlY2VudFF1ZXJ5KHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcblx0XHQvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgYmVmb3JlIHN0b3Jpbmdcblx0XHRxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nPy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG5cblx0XHRjb25zdCByZWNlbnRRdWVyeUluZGV4ID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmZpbmRJbmRleCgocXVlcnkpID0+IHF1ZXJ5LnRvTG93ZXJDYXNlKCkgPT09IHF1ZXJ5U3RyaW5nPy50b0xvd2VyQ2FzZSgpKTtcblx0XHRpZiAocXVlcnlTdHJpbmcgJiYgcmVjZW50UXVlcnlJbmRleCA9PT0gLTEpIHtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IFtxdWVyeVN0cmluZ10uY29uY2F0KHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyk7XG5cdFx0XHRpZiAodGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmxlbmd0aCA+IDUpIHtcblx0XHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLnNsaWNlKDAsIDUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAocXVlcnlTdHJpbmcpIHtcblx0XHRcdGNvbnN0IHJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkudG9Mb3dlckNhc2UoKSAhPT0gcXVlcnlTdHJpbmc/LnRvTG93ZXJDYXNlKCkpO1xuXHRcdFx0cmVjZW50UXVlcmllcy51bnNoaWZ0KHF1ZXJ5U3RyaW5nKTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHJlY2VudFF1ZXJpZXM7XG5cdFx0fVxuXHR9XG5cblx0b25TdGF0ZUNoYW5nZShjaGFuZ2VkUHJvcHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcblx0XHRpZiAoY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwiZmF2b3JpdGVRdWVyaWVzXCIpIHx8IGNoYW5nZWRQcm9wcy5pbmNsdWRlcyhcInJlY2VudFF1ZXJpZXNcIikpIHtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LnNldEZhdm9yaXRlUXVlcmllcyh0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyk7XG5cdFx0XHR0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5zZXRSZWNlbnRRdWVyaWVzKHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5tYXAoKHF1ZXJ5KSA9PiBxdWVyeSkpO1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLm1hcCgocmVjZW50UXVlcnkpID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHR0ZXh0OiByZWNlbnRRdWVyeSxcblx0XHRcdFx0XHRpc0Zhdm9yaXRlOiAhIXRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbmQoKGZhdm9yaXRlUXVlcnkpID0+IGZhdm9yaXRlUXVlcnkgPT09IHJlY2VudFF1ZXJ5KVxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgaW5pdFNoZWxsSGlzdG9yeVByb3ZpZGVyKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHR0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyID0gYXdhaXQgU2hlbGxIaXN0b3J5UHJvdmlkZXIuZ2V0SW5zdGFuY2UodGhpcy5hcHBJZCA/PyBcIjx1bmtub3duQXBwPlwiKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgY3JlYXRpbmcgU2hlbGxIaXN0b3J5UHJvdmlkZXIgZm9yIGVhc3kgZmlsdGVyXCIsIGVycm9yIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9XG5cblx0Y3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk6IFBvcG92ZXIge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8UG9wb3ZlclxuXHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZmF2b3JpdGVQb3BvdmVyXCJ9XG5cdFx0XHRcdHNob3dIZWFkZXI9e2ZhbHNlfVxuXHRcdFx0XHRob3Jpem9udGFsU2Nyb2xsaW5nPXtmYWxzZX1cblx0XHRcdFx0cGxhY2VtZW50PXtQbGFjZW1lbnRUeXBlLkJvdHRvbX1cblx0XHRcdFx0c2hvd0Fycm93PXtmYWxzZX1cblx0XHRcdFx0aW5pdGlhbEZvY3VzPXt0aGlzLiRzZWFyY2hJbnB1dH1cblx0XHRcdFx0Y2xhc3M9e1wic2FwRkVDb250cm9sc1BvcG92ZXJcIn1cblx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMCB8fCBlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHQ8RmxleEJveCBkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uQ29sdW1ufSBjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9IHJlbmRlclR5cGU9e1wiQmFyZVwifT5cblx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRpdGVtczogW1xuXHRcdFx0XHRcdFx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9TVUdHRVNUSU9OU19USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1RpdGxlQm9yZGVyXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMuc3RhdGUucmVjb21tZW5kZWRRdWVyaWVzLmxlbmd0aCA+IDB9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxIQm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpQ29udGVudFBhZGRpbmdcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInJlY29tbWVuZGVkUXVlcmllc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcD17RmxleFdyYXAuV3JhcH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMH1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IFN0YW5kYXJkTGlzdEl0ZW0gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkVuZFwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e2N0eC5nZXRPYmplY3QoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5yZXF1ZXN0RmF2b3JpdGUuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9IQm94Pixcblx0XHRcdFx0XHRcdFx0XHRcdDxUaXRsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckZhdm9yaXRlVGl0bGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0ZBVk9SSVRFX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVGl0bGVCb3JkZXJcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxMaXN0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJmYXZvcml0ZVF1ZXJpZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5vRGF0YTogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PElsbHVzdHJhdGVkTWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZT17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0ZBVk9SSVRFX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25TaXplPXtJbGx1c3RyYXRlZE1lc3NhZ2VTaXplLkV4dHJhU21hbGx9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblR5cGU9e0lsbHVzdHJhdGVkTWVzc2FnZVR5cGUuTm9FbnRyaWVzfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbj17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0ZBVk9SSVRFX0RFU0NSSVBUSU9OXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IFN0YW5kYXJkTGlzdEl0ZW0gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkICsgXCItZWFzeUZpbHRlckZhdm9yaXRlSXRlbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5CZWdpblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhPXtbPEN1c3RvbURhdGEga2V5PXtcInRleHRcIn0gdmFsdWU9e2N0eC5nZXRPYmplY3QoKX0gLz5dfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZShjdHguZ2V0T2JqZWN0KCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RmxleEJveFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg9e1wiMTAwJVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlyZWN0aW9uPXtGbGV4RGlyZWN0aW9uLlJvd31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtGbGV4SnVzdGlmeUNvbnRlbnQuU3BhY2VCZXR3ZWVufVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVuZGVyVHlwZT17XCJCYXJlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17Y3R4LmdldE9iamVjdCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtjdHguZ2V0T2JqZWN0KCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwaW5nPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGRUNvbnRyb2xzUG9pbnRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PC9UZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vZmF2b3JpdGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9GSUxMRURfU1RBUlwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1t0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVJdGVtXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBxdWVyeVN0cmluZyA9IGN0eC5nZXRPYmplY3QoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBpbmRleCA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmluZGV4T2YocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpbmRleCAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmlsdGVyKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQocXVlcnkpID0+IHF1ZXJ5ICE9PSBxdWVyeVN0cmluZ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVudHM6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RXZlbnREZWxlZ2F0ZUhvb2tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhcD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuZmF2b3JpdGVCdXR0b25DbGlja2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJpZ2dlclBYSW50ZWdyYXRpb24oXCJmYXZvcml0ZVwiKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkucmVwbGFjZSgvXFxcXFxcXFwvZywgXCJcXFxcXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvTGlzdD4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZFRpdGxlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9MQVNUX1VTRURcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PExpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtb2RlPXtMaXN0TW9kZS5EZWxldGV9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbdGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckxhc3RVc2VkVGl0bGVcIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZT17KGU6IExpc3RCYXNlJERlbGV0ZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXRlbSA9IGUuZ2V0UGFyYW1ldGVyKFwibGlzdEl0ZW1cIikgYXMgQ3VzdG9tTGlzdEl0ZW07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbS5mb2N1cygpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHF1ZXJ5U3RyaW5nID0gZS5nZXRQYXJhbWV0ZXIoXCJsaXN0SXRlbVwiKT8uZGF0YShcInRleHRcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXF1ZXJ5U3RyaW5nKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIGJlZm9yZSBjb21wYXJpbmdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nPy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRub0RhdGE6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9MQVNUX1VTRURfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuRXh0cmFTbWFsbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfUkVDRU5UX0RFU0NSSVBUSU9OXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IEZsZXhCb3ggPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkICsgXCItZWFzeUZpbHRlckxhc3RVc2VkSXRlbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoY3R4LmdldE9iamVjdCgpLnRleHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YT17WzxDdXN0b21EYXRhIGtleT17XCJ0ZXh0XCJ9IHZhbHVlPXtjdHguZ2V0T2JqZWN0KCkudGV4dH0gLz5dfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uUm93fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCkudGV4dH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17Y3R4LmdldE9iamVjdCgpLnRleHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwaW5nPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGRUNvbnRyb2xzUG9pbnRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+PC9UZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBcInNhcC1pY29uOi8vZmF2b3JpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBcInNhcC1pY29uOi8vYWRkLWZhdm9yaXRlXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTExFRF9TVEFSXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRU1QVFlfU1RBUlRcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbmFibGVkPXtsZXNzVGhhbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGgoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRiaW5kU3RhdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiZmF2b3JpdGVRdWVyaWVzXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkgYXMgUGF0aEluTW9kZWxFeHByZXNzaW9uPHVua25vd24+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ1XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRJdGVtXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZmF2b3JpdGVCdXR0b25DbGlja2VkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL1JldGFpbmluZyB0aGUgZm9jdXMgb24gcG9wb3ZlciBkb2Vzbid0IG1ha2UgdGhlIHBvcG92ZXIgY2xvc2Ugb24gZXZlcnkgaW50ZXJhY3Rpb25cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmZvY3VzKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgcXVlcnlTdHJpbmcgPSBjdHguZ2V0T2JqZWN0KCkudGV4dDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBpc0Zhdm9yaXRlID0gY3R4LmdldE9iamVjdCgpLmlzRmF2b3JpdGU7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXNGYXZvcml0ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yZW1vdmVGcm9tRmF2b3JpdGVzKHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5hZGRUb0Zhdm9yaXRlcyhxdWVyeVN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVudHM6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RXZlbnREZWxlZ2F0ZUhvb2tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhcD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBzaG91bGQgbm90IGJlIGV4ZWN1dGVkIHdoZW4gY2xpY2tpbmcgb24gYWRkIGZhdm9yaXRlIGJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuZmF2b3JpdGVCdXR0b25DbGlja2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3R4LmdldE9iamVjdCgpLnRleHQucmVwbGFjZSgvXFxcXFxcXFwvZywgXCJcXFxcXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmlnZ2VyUFhJbnRlZ3JhdGlvbihcInJlY2VudFwiKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvTGlzdD5cblx0XHRcdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9Qb3BvdmVyPlxuXHRcdCkgYXMgUG9wb3Zlcjtcblx0fVxuXG5cdHByaXZhdGUgcmVtb3ZlRnJvbUZhdm9yaXRlcyhxdWVyeTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoKGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gcXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdH1cblxuXHRwcml2YXRlIGFkZFRvRmF2b3JpdGVzKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zdCBuZXdGYXZvcml0ZSA9IFtxdWVyeV0uY29uY2F0KHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmNvbmNhdCgpKTtcblx0XHRpZiAobmV3RmF2b3JpdGUubGVuZ3RoID4gNSkge1xuXHRcdFx0bmV3RmF2b3JpdGUucG9wKCk7XG5cdFx0fVxuXHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gbmV3RmF2b3JpdGU7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKHJtOiBSZW5kZXJNYW5hZ2VyLCBjb250cm9sOiBFYXN5RmlsdGVySW5wdXQpOiB2b2lkIHtcblx0XHRyZXR1cm4ganN4LnJlbmRlclVzaW5nUmVuZGVyTWFuYWdlcihybSwgY29udHJvbCwgKCkgPT4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PHNwYW4gcmVmPXtjb250cm9sfSBjbGFzcz17XCJzYXBGRUVhc3lGaWx0ZXJJbnB1dFwifT5cblx0XHRcdFx0XHR7Y29udHJvbC4kc2VhcmNoSW5wdXR9XG5cdFx0XHRcdDwvc3Bhbj5cblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQTBDcUJBLGVBQWUsSUFBQUMsSUFBQSxHQURuQ0MsY0FBYyxDQUFDLDRDQUE0QyxDQUFDLEVBQUFDLEtBQUEsR0FFM0RDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUUsYUFBYTtJQUFFQyxRQUFRLEVBQUUsS0FBSztJQUFFQyxTQUFTLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUd0RUMsUUFBUSxDQUFDO0lBQUVKLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBRzVCRCxRQUFRLENBQUM7SUFBRUosSUFBSSxFQUFFO0VBQVEsQ0FBQyxDQUFDLEVBQUFNLEtBQUEsR0FHM0JDLEtBQUssQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHUEQsS0FBSyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUdQRixLQUFLLENBQUMsQ0FBQyxFQUFBRyxLQUFBLEdBYVBDLFdBQVcsQ0FBQyxDQUFDLEVBQUFmLElBQUEsQ0FBQWdCLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsUUFBQTtJQWlCZCxTQUFBbkIsZ0JBQVlvQixVQUF1RSxFQUFFQyxNQUF5QixFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUMvR0EsS0FBQSxHQUFBSCxRQUFBLENBQUFJLElBQUEsT0FBTUgsVUFBVSxFQUFZQyxNQUFNLENBQUM7TUFBQ0csMEJBQUEsQ0FBQUYsS0FBQSxrQkFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsV0FBQUksWUFBQSxFQUFBSixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsdUJBQUFLLFlBQUEsRUFBQUwsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGtCQUFBTSxZQUFBLEVBQUFOLEtBQUE7TUFBQUUsMEJB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
506
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVySW5wdXQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzMiLCJwcm9wZXJ0eSIsIl9kZWM0IiwiX2RlYzUiLCJldmVudCIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImRlZmluZVN0YXRlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJmYXZvcml0ZUJ1dHRvbkNsaWNrZWQiLCJfZGVzY3JpcHRvcjciLCJpbml0aWFsaXplIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFZhbHVlIiwiJHNlYXJjaElucHV0IiwiaXNIaXN0b3J5RW5hYmxlZCIsInN0YXRlIiwidmFsdWVPZiIsInNldFZhbHVlIiwidmFsdWUiLCJzZXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicmVjb21tZW5kZWRRdWVyaWVzIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwicG9wb3ZlckludmlzaWJsZU1lc3NhZ2UiLCJJbnZpc2libGVNZXNzYWdlIiwiZ2V0SW5zdGFuY2UiLCJjcmVhdGVJbnB1dCIsInNldEFzSW52YWxpZCIsIm1lc3NhZ2UiLCJzZXRWYWx1ZVN0YXRlIiwiVmFsdWVTdGF0ZSIsIldhcm5pbmciLCJzZXRWYWx1ZVN0YXRlVGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsInNldEFzVmFsaWQiLCJOb25lIiwiY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSIsIl9qc3giLCJJbnB1dCIsIndpZHRoIiwic2hvd0NsZWFySWNvbiIsImNoYW5nZSIsImUiLCJmaXJlRXZlbnQiLCJxdWVyeSIsImdldFBhcmFtZXRlciIsImxpdmVDaGFuZ2UiLCJxdWVyeUNoYW5nZWQiLCJnZXRTb3VyY2UiLCIkZmF2b3JpdGVQb3BvdmVyIiwiaXNPcGVuIiwib3BlblN1Z2dlc3Rpb25Qb3BvdmVyIiwiZ2V0VGV4dCIsImdldFZhbHVlU3RhdGUiLCJwbGFjZWhvbGRlciIsImZhdm9yaXRlUG9wb3ZlciIsImNyZWF0ZUZhdm9yaXRlUG9wb3ZlciIsImFkZERlcGVuZGVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwia2V5Iiwib25FbnRlclByZXNzZWQiLCJjbG9zZSIsIm9ua2V5ZG93biIsImxlbmd0aCIsInByZXZlbnREZWZhdWx0IiwicG9wb3ZlckNvbmFpbmVyIiwiZ2V0Q29udGVudCIsImNvbnRhaW5lckl0ZW1zIiwiZ2V0SXRlbXMiLCJmaW5kIiwiaXRlbSIsImlzRm9jdXNhYmxlIiwiZm9jdXMiLCJvbnRhcCIsIm9uZm9jdXNpbiIsInRhcmdldFRleHQiLCJ0YXJnZXQiLCJvdXRlclRleHQiLCJ0YXJnZXRJZCIsImlkIiwiaW5jbHVkZXMiLCJmYXZvcml0ZVF1ZXJpZXMiLCJmaWx0ZXIiLCJkYXRhIiwidG9Mb3dlckNhc2UiLCJyZWNlbnRRdWVyaWVzIiwib25BZnRlclJlbmRlcmluZyIsImFubm91bmNlIiwiSW52aXNpYmxlTWVzc2FnZU1vZGUiLCJBc3NlcnRpdmUiLCJzaGVsbEhpc3RvcnlQcm92aWRlciIsImluaXRTaGVsbEhpc3RvcnlQcm92aWRlciIsImdldEZhdm9yaXRlUXVlcmllcyIsImdldFJlY2VudFF1ZXJpZXMiLCJvcGVuQnkiLCJyZXF1ZXN0RmF2b3JpdGUiLCJtYWdpY1F1ZXJ5IiwiYWRkUmVjZW50UXVlcnkiLCJxdWVyeVN0cmluZyIsInJlcGxhY2UiLCJyZWNlbnRRdWVyeUluZGV4IiwiZmluZEluZGV4IiwiY29uY2F0Iiwic2xpY2UiLCJ1bnNoaWZ0Iiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNldEZhdm9yaXRlUXVlcmllcyIsInNldFJlY2VudFF1ZXJpZXMiLCJtYXAiLCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzIiwicmVjZW50UXVlcnkiLCJ0ZXh0IiwiaXNGYXZvcml0ZSIsImZhdm9yaXRlUXVlcnkiLCJTaGVsbEhpc3RvcnlQcm92aWRlciIsImFwcElkIiwiZXJyb3IiLCJMb2ciLCJQb3BvdmVyIiwiZ2V0SWQiLCJzaG93SGVhZGVyIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJzaG93QXJyb3ciLCJpbml0aWFsRm9jdXMiLCJjbGFzcyIsInZpc2libGUiLCJlcXVhbCIsImJpbmRTdGF0ZSIsImNoaWxkcmVuIiwiY29udGVudCIsIkZsZXhCb3giLCJkaXJlY3Rpb24iLCJGbGV4RGlyZWN0aW9uIiwiQ29sdW1uIiwicmVuZGVyVHlwZSIsIml0ZW1zIiwiVGl0bGUiLCJ0aXRsZVN0eWxlIiwiVGl0bGVMZXZlbCIsIkg2IiwiSEJveCIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJjdHgiLCJCdXR0b24iLCJnZXRPYmplY3QiLCJwcmVzcyIsImJpbmQiLCJMaXN0Iiwibm9EYXRhIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwidGl0bGUiLCJpbGx1c3RyYXRpb25TaXplIiwiSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZSIsIkV4dHJhU21hbGwiLCJpbGx1c3RyYXRpb25UeXBlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSIsIk5vRW50cmllcyIsImRlc2NyaXB0aW9uIiwiQ3VzdG9tTGlzdEl0ZW0iLCJhcmlhTGFiZWxsZWRCeSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiX2pzeHMiLCJSb3ciLCJhbGlnbkl0ZW1zIiwiRmxleEFsaWduSXRlbXMiLCJDZW50ZXIiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIlRleHQiLCJ0b29sdGlwIiwid3JhcHBpbmciLCJpY29uIiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwiaW5kZXgiLCJpbmRleE9mIiwiZGVwZW5kZW50cyIsIkV2ZW50RGVsZWdhdGVIb29rIiwidGFwIiwidHJpZ2dlclBYSW50ZWdyYXRpb24iLCJtb2RlIiwiTGlzdE1vZGUiLCJEZWxldGUiLCJkZWxldGUiLCJlbmFibGVkIiwibGVzc1RoYW4iLCJyZW1vdmVGcm9tRmF2b3JpdGVzIiwiYWRkVG9GYXZvcml0ZXMiLCJuZXdGYXZvcml0ZSIsInBvcCIsInJlbmRlciIsInJtIiwiY29udHJvbCIsImpzeCIsInJlbmRlclVzaW5nUmVuZGVyTWFuYWdlciIsInJlZiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IHR5cGUgeyBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGJpbmRTdGF0ZSwgZXF1YWwsIGxlbmd0aCwgbGVzc1RoYW4gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVTdGF0ZSwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YsIHR5cGUgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBFdmVudERlbGVnYXRlSG9vayBmcm9tIFwic2FwL2ZlL2Jhc2UvRXZlbnREZWxlZ2F0ZUhvb2tcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IFNoZWxsSGlzdG9yeVByb3ZpZGVyIGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9TaGVsbEhpc3RvcnlQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBCdXR0b24kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEN1c3RvbUxpc3RJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21MaXN0SXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VTaXplIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VTaXplXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBMaXN0IGZyb20gXCJzYXAvbS9MaXN0XCI7XG5pbXBvcnQgdHlwZSB7IExpc3RCYXNlJERlbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC9tL0xpc3RCYXNlXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IHR5cGUgU3RhbmRhcmRMaXN0SXRlbSBmcm9tIFwic2FwL20vU3RhbmRhcmRMaXN0SXRlbVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBUaXRsZSBmcm9tIFwic2FwL20vVGl0bGVcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUsIEZsZXhBbGlnbkl0ZW1zLCBGbGV4RGlyZWN0aW9uLCBGbGV4SnVzdGlmeUNvbnRlbnQsIEZsZXhXcmFwLCBMaXN0TW9kZSwgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBJbnZpc2libGVNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVNZXNzYWdlXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IEludmlzaWJsZU1lc3NhZ2VNb2RlLCBUaXRsZUxldmVsLCBWYWx1ZVN0YXRlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB7IHRyaWdnZXJQWEludGVncmF0aW9uIH0gZnJvbSBcIi4vUFhGZWVkYmFja1wiO1xuXG50eXBlIFJlY2VudFR5cGUgPSB7XG5cdHRleHQ6IHN0cmluZztcblx0aXNGYXZvcml0ZTogYm9vbGVhbjtcbn07XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuZWFzeUZpbHRlci5FYXN5RmlsdGVySW5wdXRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJJbnB1dCBleHRlbmRzIENvbnRyb2wge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLklucHV0XCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdCRzZWFyY2hJbnB1dCE6IElucHV0O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXBwSWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJhcnJheVwiIH0pXG5cdHJlY29tbWVuZGVkVmFsdWVzPzogc3RyaW5nW107XG5cblx0QGV2ZW50KClcblx0cXVlcnlDaGFuZ2VkPzogRXZlbnRIYW5kbGVyPFVJNUV2ZW50PHsgcXVlcnk6IHN0cmluZyB9LCBFYXN5RmlsdGVySW5wdXQ+PjtcblxuXHRAZXZlbnQoKVxuXHRlbnRlclByZXNzZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4+O1xuXG5cdEBldmVudCgpXG5cdGxpdmVDaGFuZ2U/OiBFdmVudEhhbmRsZXI7XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZSE6IFJlc291cmNlQnVuZGxlO1xuXG5cdHNoZWxsSGlzdG9yeVByb3ZpZGVyOiBTaGVsbEhpc3RvcnlQcm92aWRlciB8IHVuZGVmaW5lZDtcblxuXHRwb3BvdmVySW52aXNpYmxlTWVzc2FnZTogSW52aXNpYmxlTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuXHQkZmF2b3JpdGVQb3BvdmVyOiBQb3BvdmVyIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgZmF2b3JpdGVCdXR0b25DbGlja2VkID0gZmFsc2U7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRxdWVyeUNoYW5nZWQ6IGJvb2xlYW47XG5cdFx0cmVjZW50UXVlcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cdFx0cmVjZW50UXVlcmllc1dpdEZhdm9yaXRlczogcmVhZG9ubHkgUmVjZW50VHlwZVtdO1xuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW47XG5cdFx0ZmF2b3JpdGVRdWVyaWVzOiBzdHJpbmdbXTtcblx0XHRyZWNvbW1lbmRlZFF1ZXJpZXM6IHN0cmluZ1tdO1xuXHR9PiA9IHtcblx0XHRxdWVyeUNoYW5nZWQ6IGZhbHNlLFxuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGZhbHNlLFxuXHRcdHJlY2VudFF1ZXJpZXM6IFtdLFxuXHRcdHJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXM6IFtdLFxuXHRcdGZhdm9yaXRlUXVlcmllczogW10gYXMgc3RyaW5nW10sXG5cdFx0cmVjb21tZW5kZWRRdWVyaWVzOiBbXSBhcyBzdHJpbmdbXVxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJJbnB1dD4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VmFsdWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0hpc3RvcnlFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLmlzSGlzdG9yeUVuYWJsZWQudmFsdWVPZigpO1xuXHR9XG5cblx0c2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMgPSB0aGlzLnJlY29tbWVuZGVkVmFsdWVzID8/IFtdO1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMucG9wb3ZlckludmlzaWJsZU1lc3NhZ2UgPSBJbnZpc2libGVNZXNzYWdlLmdldEluc3RhbmNlKCk7XG5cdFx0dGhpcy5jcmVhdGVJbnB1dCgpO1xuXHR9XG5cblx0c2V0QXNJbnZhbGlkKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlU3RhdGUoVmFsdWVTdGF0ZS5XYXJuaW5nKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZVN0YXRlVGV4dChtZXNzYWdlKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5vcGVuVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdHNldEFzVmFsaWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWVTdGF0ZShWYWx1ZVN0YXRlLk5vbmUpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdGNyZWF0ZUlucHV0KCk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0ID0gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdHNob3dDbGVhckljb249e3RydWV9XG5cdFx0XHRcdGNoYW5nZT17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInF1ZXJ5Q2hhbmdlZFwiLCB7IHF1ZXJ5OiBlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRsaXZlQ2hhbmdlPXsoZTogSW5wdXQkTGl2ZUNoYW5nZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zdGF0ZS5xdWVyeUNoYW5nZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwibGl2ZUNoYW5nZVwiKTtcblx0XHRcdFx0XHRpZiAoIWUuZ2V0U291cmNlKCkuZ2V0VmFsdWUoKSAmJiAhKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkgPz8gZmFsc2UpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSA9PT0gXCJcIikge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRQbGFjZWhvbGRlcih0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlU3RhdGUoKSA9PT0gVmFsdWVTdGF0ZS5XYXJuaW5nKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEFzVmFsaWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH19XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpfVxuXHRcdFx0PjwvSW5wdXQ+XG5cdFx0KTtcblxuXHRcdGNvbnN0IGZhdm9yaXRlUG9wb3ZlciA9IHRoaXMuY3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyID0gZmF2b3JpdGVQb3BvdmVyO1xuXG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRGVwZW5kZW50KGZhdm9yaXRlUG9wb3Zlcik7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRXZlbnREZWxlZ2F0ZSh7XG5cdFx0XHRvbmtleXVwOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuXHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy4kZmF2b3JpdGVQb3BvdmVyICYmIHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlKCkpIHtcblx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXIuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGUua2V5ID09PSBcIlRhYlwiICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkubGVuZ3RoID09PSAwICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkgIT09IHRoaXMuJHNlYXJjaElucHV0Py5nZXRQbGFjZWhvbGRlcigpICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFBsYWNlaG9sZGVyKCkgIT09IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUExBQ0VIT0xERVJcIilcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZSh0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0UGxhY2Vob2xkZXIoKSk7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJsaXZlQ2hhbmdlXCIpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGUua2V5ID09PSBcIkFycm93RG93blwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgcG9wb3ZlckNvbmFpbmVyID0gdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5nZXRDb250ZW50KClbMF07XG5cdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySXRlbXMgPSAocG9wb3ZlckNvbmFpbmVyIGFzIEZsZXhCb3gpLmdldEl0ZW1zKCk7XG5cdFx0XHRcdFx0Y29udGFpbmVySXRlbXM/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNGb2N1c2FibGUoKSAmJiAoaXRlbS5mb2N1cygpLCB0cnVlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbnRhcDogYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRhd2FpdCB0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fSxcblx0XHRcdG9uZm9jdXNpbjogYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRhd2FpdCB0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlci5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0VGV4dCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCk/Lm91dGVyVGV4dDtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0SWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5pZDtcblx0XHRcdFx0c3dpdGNoIChlLmtleSkge1xuXHRcdFx0XHRcdGNhc2UgXCJFbnRlclwiOlxuXHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkRlbGV0ZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRhcmdldElkPy5pbmNsdWRlcyhcImVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIikpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0KGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gdGFyZ2V0VGV4dC50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkVzY2FwZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5wb3BvdmVySW52aXNpYmxlTWVzc2FnZT8uYW5ub3VuY2UoXG5cdFx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9FQVNZX0ZJTFRFUl9JTlBVVF9URVhUX0xJTktfUE9QT1ZFUl9BUklBXCIpLFxuXHRcdFx0XHRcdEludmlzaWJsZU1lc3NhZ2VNb2RlLkFzc2VydGl2ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBvcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCF0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKSAmJiAoIXRoaXMuJGZhdm9yaXRlUG9wb3ZlciB8fCAhdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5pc09wZW4oKSkpIHtcblx0XHRcdC8vIE9wZW4gdGhlIGVhc3kgZmlsdGVyIHBvcG92ZXJcblx0XHRcdGlmICghdGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcikge1xuXHRcdFx0XHRhd2FpdCB0aGlzLmluaXRTaGVsbEhpc3RvcnlQcm92aWRlcigpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zdGF0ZS5pc0hpc3RvcnlFbmFibGVkID0gdGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uaXNIaXN0b3J5RW5hYmxlZCgpID8/IGZhbHNlO1xuXHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSAoYXdhaXQgdGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uZ2V0RmF2b3JpdGVRdWVyaWVzKCkpID8/IFtdO1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gKGF3YWl0IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmdldFJlY2VudFF1ZXJpZXMoKSkgPz8gW107XG5cdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/Lm9wZW5CeSh0aGlzLiRzZWFyY2hJbnB1dCk7XG5cdFx0fVxuXHR9XG5cblx0cmVxdWVzdEZhdm9yaXRlKGU6IEJ1dHRvbiRQcmVzc0V2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5jbG9zZSgpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShlLmdldFNvdXJjZSgpLmdldFRleHQoKSk7XG5cdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHR9XG5cblx0b25FbnRlclByZXNzZWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5jbG9zZSgpO1xuXHRcdHRoaXMuc3RhdGUucXVlcnlDaGFuZ2VkID0gZmFsc2U7XG5cdFx0bGV0IG1hZ2ljUXVlcnkgPSB0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKTtcblx0XHRpZiAobWFnaWNRdWVyeSA9PT0gXCJcIiAmJiB0aGlzLiRzZWFyY2hJbnB1dC5nZXRQbGFjZWhvbGRlcigpICE9PSB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKSB7XG5cdFx0XHRtYWdpY1F1ZXJ5ID0gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShtYWdpY1F1ZXJ5KTtcblx0XHR9XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlU3RhdGVUZXh0KFwiXCIpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZVN0YXRlKFwiTm9uZVwiKTtcblx0XHR0aGlzLmZpcmVFdmVudChcImVudGVyUHJlc3NlZFwiLCB7IHF1ZXJ5OiBtYWdpY1F1ZXJ5IH0pO1xuXHR9XG5cblx0YWRkUmVjZW50UXVlcnkocXVlcnlTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdC8vIE5vcm1hbGl6ZSBiYWNrc2xhc2hlcyBiZWZvcmUgc3RvcmluZ1xuXHRcdHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmc/LnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKTtcblxuXHRcdGNvbnN0IHJlY2VudFF1ZXJ5SW5kZXggPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmluZEluZGV4KChxdWVyeSkgPT4gcXVlcnkudG9Mb3dlckNhc2UoKSA9PT0gcXVlcnlTdHJpbmc/LnRvTG93ZXJDYXNlKCkpO1xuXHRcdGlmIChxdWVyeVN0cmluZyAmJiByZWNlbnRRdWVyeUluZGV4ID09PSAtMSkge1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gW3F1ZXJ5U3RyaW5nXS5jb25jYXQodGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzKTtcblx0XHRcdGlmICh0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMubGVuZ3RoID4gNSkge1xuXHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuc2xpY2UoMCwgNSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChxdWVyeVN0cmluZykge1xuXHRcdFx0Y29uc3QgcmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeS50b0xvd2VyQ2FzZSgpICE9PSBxdWVyeVN0cmluZz8udG9Mb3dlckNhc2UoKSk7XG5cdFx0XHRyZWNlbnRRdWVyaWVzLnVuc2hpZnQocXVlcnlTdHJpbmcpO1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gcmVjZW50UXVlcmllcztcblx0XHR9XG5cdH1cblxuXHRvblN0YXRlQ2hhbmdlKGNoYW5nZWRQcm9wczogc3RyaW5nW10gPSBbXSk6IHZvaWQge1xuXHRcdGlmIChjaGFuZ2VkUHJvcHMuaW5jbHVkZXMoXCJmYXZvcml0ZVF1ZXJpZXNcIikgfHwgY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwicmVjZW50UXVlcmllc1wiKSkge1xuXHRcdFx0dGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uc2V0RmF2b3JpdGVRdWVyaWVzKHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzKTtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LnNldFJlY2VudFF1ZXJpZXModGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLm1hcCgocXVlcnkpID0+IHF1ZXJ5KSk7XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMubWFwKChyZWNlbnRRdWVyeSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHRleHQ6IHJlY2VudFF1ZXJ5LFxuXHRcdFx0XHRcdGlzRmF2b3JpdGU6ICEhdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmluZCgoZmF2b3JpdGVRdWVyeSkgPT4gZmF2b3JpdGVRdWVyeSA9PT0gcmVjZW50UXVlcnkpXG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXIgPSBhd2FpdCBTaGVsbEhpc3RvcnlQcm92aWRlci5nZXRJbnN0YW5jZSh0aGlzLmFwcElkID8/IFwiPHVua25vd25BcHA+XCIpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBjcmVhdGluZyBTaGVsbEhpc3RvcnlQcm92aWRlciBmb3IgZWFzeSBmaWx0ZXJcIiwgZXJyb3IgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVGYXZvcml0ZVBvcG92ZXIoKTogUG9wb3ZlciB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxQb3BvdmVyXG5cdFx0XHRcdGlkPXt0aGlzLmdldElkKCkgKyBcIi1mYXZvcml0ZVBvcG92ZXJcIn1cblx0XHRcdFx0c2hvd0hlYWRlcj17ZmFsc2V9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9e2ZhbHNlfVxuXHRcdFx0XHRwbGFjZW1lbnQ9e1BsYWNlbWVudFR5cGUuQm90dG9tfVxuXHRcdFx0XHRzaG93QXJyb3c9e2ZhbHNlfVxuXHRcdFx0XHRpbml0aWFsRm9jdXM9e3RoaXMuJHNlYXJjaElucHV0fVxuXHRcdFx0XHRjbGFzcz17XCJzYXBGRUNvbnRyb2xzUG9wb3ZlclwifVxuXHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnJlY29tbWVuZGVkUXVlcmllcy5sZW5ndGggPiAwIHx8IGVxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxGbGV4Qm94IGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Db2x1bW59IGNsYXNzPXtcInNhcFVpQ29udGVudFBhZGRpbmdcIn0gcmVuZGVyVHlwZT17XCJCYXJlXCJ9PlxuXHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX1NVR0dFU1RJT05TX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVGl0bGVCb3JkZXJcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMH1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwicmVjb21tZW5kZWRRdWVyaWVzXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3cmFwPXtGbGV4V3JhcC5XcmFwfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnJlY29tbWVuZGVkUXVlcmllcy5sZW5ndGggPiAwfVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogU3RhbmRhcmRMaXN0SXRlbSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlUaW55TWFyZ2luRW5kXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17Y3R4LmdldE9iamVjdCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnJlcXVlc3RGYXZvcml0ZS5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L0hCb3g+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXt0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVUaXRsZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZVN0eWxlPXtUaXRsZUxldmVsLkg2fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRkFWT1JJVEVfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PExpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImZhdm9yaXRlUXVlcmllc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bm9EYXRhOiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8SWxsdXN0cmF0ZWRNZXNzYWdlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfRkFWT1JJVEVfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuRXh0cmFTbWFsbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfRkFWT1JJVEVfREVTQ1JJUFRJT05cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogU3RhbmRhcmRMaXN0SXRlbSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tTGlzdEl0ZW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWQgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVJdGVtXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZVRpdGxlXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE9e1s8Q3VzdG9tRGF0YSBrZXk9e1widGV4dFwifSB2YWx1ZT17Y3R4LmdldE9iamVjdCgpfSAvPl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKGN0eC5nZXRPYmplY3QoKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uUm93fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e2N0eC5nZXRPYmplY3QoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBpbmc9e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNhcEZFQ29udHJvbHNQb2ludGVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48L1RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9mYXZvcml0ZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTExFRF9TVEFSXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17W3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9SZXRhaW5pbmcgdGhlIGZvY3VzIG9uIHBvcG92ZXIgZG9lc24ndCBtYWtlIHRoZSBwb3BvdmVyIGNsb3NlIG9uIGV2ZXJ5IGludGVyYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHF1ZXJ5U3RyaW5nID0gY3R4LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGluZGV4ID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuaW5kZXhPZihxdWVyeVN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGluZGV4ICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChxdWVyeSkgPT4gcXVlcnkgIT09IHF1ZXJ5U3RyaW5nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmZhdm9yaXRlQnV0dG9uQ2xpY2tlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghdGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmlnZ2VyUFhJbnRlZ3JhdGlvbihcImZhdm9yaXRlXCIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5yZXBsYWNlKC9cXFxcXFxcXC9nLCBcIlxcXFxcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmZhdm9yaXRlQnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9MaXN0Pixcblx0XHRcdFx0XHRcdFx0XHRcdDxUaXRsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckxhc3RVc2VkVGl0bGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0xBU1RfVVNFRFwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1RpdGxlQm9yZGVyXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8TGlzdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwicmVjZW50UXVlcmllc1dpdEZhdm9yaXRlc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1vZGU9e0xpc3RNb2RlLkRlbGV0ZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1t0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlPXsoZTogTGlzdEJhc2UkRGVsZXRlRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBpdGVtID0gZS5nZXRQYXJhbWV0ZXIoXCJsaXN0SXRlbVwiKSBhcyBDdXN0b21MaXN0SXRlbTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtLmZvY3VzKCk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgcXVlcnlTdHJpbmcgPSBlLmdldFBhcmFtZXRlcihcImxpc3RJdGVtXCIpPy5kYXRhKFwidGV4dFwiKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghcXVlcnlTdHJpbmcpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgYmVmb3JlIGNvbXBhcmluZ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmc/LnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeSAhPT0gcXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5vRGF0YTogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PElsbHVzdHJhdGVkTWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZT17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0xBU1RfVVNFRF9USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uU2l6ZT17SWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZS5FeHRyYVNtYWxsfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25UeXBlPXtJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlLk5vRW50cmllc31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb249e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9SRUNFTlRfREVTQ1JJUFRJT05cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogRmxleEJveCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tTGlzdEl0ZW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRJdGVtXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShjdHguZ2V0T2JqZWN0KCkudGV4dCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVNtYWxsTWFyZ2luQmVnaW5cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhPXtbPEN1c3RvbURhdGEga2V5PXtcInRleHRcIn0gdmFsdWU9e2N0eC5nZXRPYmplY3QoKS50ZXh0fSAvPl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZFRpdGxlXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoPXtcIjEwMCVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Sb3d9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhbGlnbkl0ZW1zPXtGbGV4QWxpZ25JdGVtcy5DZW50ZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRqdXN0aWZ5Q29udGVudD17RmxleEp1c3RpZnlDb250ZW50LlNwYWNlQmV0d2Vlbn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbmRlclR5cGU9e1wiQmFyZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e2N0eC5nZXRPYmplY3QoKS50ZXh0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtjdHguZ2V0T2JqZWN0KCkudGV4dH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBpbmc9e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNhcEZFQ29udHJvbHNQb2ludGVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48L1RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGljb249e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IFwic2FwLWljb246Ly9mYXZvcml0ZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IFwic2FwLWljb246Ly9hZGQtZmF2b3JpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRklMTEVEX1NUQVJcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9FTVBUWV9TVEFSVFwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVuYWJsZWQ9e2xlc3NUaGFuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJpbmRTdGF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJmYXZvcml0ZVF1ZXJpZXNcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSBhcyBQYXRoSW5Nb2RlbEV4cHJlc3Npb248dW5rbm93bj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZEl0ZW1cIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBxdWVyeVN0cmluZyA9IGN0eC5nZXRPYmplY3QoKS50ZXh0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGlzRmF2b3JpdGUgPSBjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpc0Zhdm9yaXRlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlbW92ZUZyb21GYXZvcml0ZXMocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFkZFRvRmF2b3JpdGVzKHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgd2hlbiBjbGlja2luZyBvbiBhZGQgZmF2b3JpdGUgYnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghdGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkudGV4dC5yZXBsYWNlKC9cXFxcXFxcXC9nLCBcIlxcXFxcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyaWdnZXJQWEludGVncmF0aW9uKFwicmVjZW50XCIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmZhdm9yaXRlQnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9MaXN0PlxuXHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1BvcG92ZXI+XG5cdFx0KSBhcyBQb3BvdmVyO1xuXHR9XG5cblx0cHJpdmF0ZSByZW1vdmVGcm9tRmF2b3JpdGVzKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbHRlcigoZGF0YSkgPT4gZGF0YS50b0xvd2VyQ2FzZSgpICE9PSBxdWVyeS50b0xvd2VyQ2FzZSgpKTtcblx0fVxuXG5cdHByaXZhdGUgYWRkVG9GYXZvcml0ZXMocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld0Zhdm9yaXRlID0gW3F1ZXJ5XS5jb25jYXQodGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuY29uY2F0KCkpO1xuXHRcdGlmIChuZXdGYXZvcml0ZS5sZW5ndGggPiA1KSB7XG5cdFx0XHRuZXdGYXZvcml0ZS5wb3AoKTtcblx0XHR9XG5cdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSBuZXdGYXZvcml0ZTtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXIocm06IFJlbmRlck1hbmFnZXIsIGNvbnRyb2w6IEVhc3lGaWx0ZXJJbnB1dCk6IHZvaWQge1xuXHRcdHJldHVybiBqc3gucmVuZGVyVXNpbmdSZW5kZXJNYW5hZ2VyKHJtLCBjb250cm9sLCAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8c3BhbiByZWY9e2NvbnRyb2x9IGNsYXNzPXtcInNhcEZFRWFzeUZpbHRlcklucHV0XCJ9PlxuXHRcdFx0XHRcdHtjb250cm9sLiRzZWFyY2hJbnB1dH1cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0KTtcblx0XHR9KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BMENxQkEsZUFBZSxJQUFBQyxJQUFBLEdBRG5DQyxjQUFjLENBQUMsNENBQTRDLENBQUMsRUFBQUMsS0FBQSxHQUUzREMsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRSxhQUFhO0lBQUVDLFFBQVEsRUFBRSxLQUFLO0lBQUVDLFNBQVMsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR3RFQyxRQUFRLENBQUM7SUFBRUosSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FHNUJELFFBQVEsQ0FBQztJQUFFSixJQUFJLEVBQUU7RUFBUSxDQUFDLENBQUMsRUFBQU0sS0FBQSxHQUczQkMsS0FBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdQRCxLQUFLLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBR1BGLEtBQUssQ0FBQyxDQUFDLEVBQUFHLEtBQUEsR0FhUEMsV0FBVyxDQUFDLENBQUMsRUFBQWYsSUFBQSxDQUFBZ0IsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxRQUFBO0lBaUJkLFNBQUFuQixnQkFBWW9CLFVBQXVFLEVBQUVDLE1BQXlCLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQy9HQSxLQUFBLEdBQUFILFFBQUEsQ0FBQUksSUFBQSxPQUFNSCxVQUFVLEVBQVlDLE1BQU0sQ0FBQztNQUFDRywwQkFBQSxDQUFBRixLQUFBLGtCQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxXQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFB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
@@ -228,6 +228,9 @@ export default class EasyFilterInput extends Control {
228
228
  private async openSuggestionPopover(): Promise<void> {
229
229
  if (!this.$searchInput?.getValue() && (!this.$favoritePopover || !this.$favoritePopover?.isOpen())) {
230
230
  // Open the easy filter popover
231
+ if (!this.shellHistoryProvider) {
232
+ await this.initShellHistoryProvider();
233
+ }
231
234
  this.state.isHistoryEnabled = this.shellHistoryProvider?.isHistoryEnabled() ?? false;
232
235
  this.state.favoriteQueries = (await this.shellHistoryProvider?.getFavoriteQueries()) ?? [];
233
236
  this.state.recentQueries = (await this.shellHistoryProvider?.getRecentQueries()) ?? [];
@@ -69,6 +69,7 @@ sap.ui.define(["sap/ui/core/Lib", "sap/ui/model/FilterOperator"], function (Lib,
69
69
  this.invalidOperatorTokenLabels = {};
70
70
  this.invalidProperty = {};
71
71
  this.hiddenFilterTokenLabels = [];
72
+ this.nonGroupableTokenLabels = [];
72
73
  this.propertyMapFreq = {};
73
74
  }
74
75
 
@@ -86,6 +87,9 @@ sap.ui.define(["sap/ui/core/Lib", "sap/ui/model/FilterOperator"], function (Lib,
86
87
  if (this.hiddenFilterTokenLabels.length > 0) {
87
88
  messages.push(this.resourceBundle.getText("M_EASY_FILTER_HIDDEN_FILTER", [`<strong>${this.hiddenFilterTokenLabels.join(", ")}</strong>`]));
88
89
  }
90
+ if (this.nonGroupableTokenLabels.length > 0) {
91
+ messages.push(this.resourceBundle.getText("M_EASY_FILTER_NON_GROUPABLE", [`${this.nonGroupableTokenLabels.join(", ")}`]));
92
+ }
89
93
  if (this.getInvalidOperatorLength() > 0) {
90
94
  Object.keys(this.invalidOperatorTokenLabels).forEach(operator => {
91
95
  if ((this.invalidOperatorTokenLabels[operator]?.length ?? 0) > 0) {
@@ -127,6 +131,20 @@ sap.ui.define(["sap/ui/core/Lib", "sap/ui/model/FilterOperator"], function (Lib,
127
131
  return true;
128
132
  }
129
133
 
134
+ /**
135
+ * This method checks if the filter property is groupable or not.
136
+ * @param filterCriteria Metadata of the filter property.
137
+ * @returns Whether the filter property is groupable or not.
138
+ */;
139
+ _proto.isGroupableProperty = function isGroupableProperty(filterCriteria) {
140
+ if (filterCriteria.groupable === false) {
141
+ const label = filterCriteria.label ?? filterCriteria.name;
142
+ this.nonGroupableTokenLabels.push(label);
143
+ return false;
144
+ }
145
+ return true;
146
+ }
147
+
130
148
  /**
131
149
  * This method validates the filter property and its value against the defined restrictions
132
150
  * @param filterCriteria it has metadata of the filter property
@@ -170,11 +188,11 @@ sap.ui.define(["sap/ui/core/Lib", "sap/ui/model/FilterOperator"], function (Lib,
170
188
  * @returns if there are any validation errors
171
189
  */;
172
190
  _proto.hasErrors = function hasErrors() {
173
- return this.getInvalidOperatorLength() > 0 || this.nonFilterableTokenLabels.length > 0 || this.hiddenFilterTokenLabels.length > 0 || this.invalidSingleItemTokenLabels.length > 0;
191
+ return this.getInvalidOperatorLength() > 0 || this.nonFilterableTokenLabels.length > 0 || this.hiddenFilterTokenLabels.length > 0 || this.nonGroupableTokenLabels.length > 0 || this.invalidSingleItemTokenLabels.length > 0;
174
192
  };
175
193
  return ErrorMessageHandler;
176
194
  }();
177
195
  _exports = ErrorMessageHandler;
178
196
  return _exports;
179
197
  }, false);
180
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFcnJvck1lc3NhZ2VIYW5kbGVyIiwiRklMVEVSUkVTVFJJQ1RJT05TIiwiU2luZ2xlVmFsdWUiLCJtdWx0aXBsZSIsIm9wZXJhdG9ycyIsIkZpbHRlck9wZXJhdG9yIiwiRVEiLCJNdWx0aVZhbHVlIiwiU2luZ2xlUmFuZ2UiLCJORSIsIkxFIiwiTFQiLCJHRSIsIkdUIiwiQlQiLCJOQiIsIk11bHRpUmFuZ2UiLCJTZWFyY2hFeHByZXNzaW9uIiwiU3RhcnRzV2l0aCIsIkNvbnRhaW5zIiwiRW5kc1dpdGgiLCJOb3RTdGFydHNXaXRoIiwiTm90Q29udGFpbnMiLCJOb3RFbmRzV2l0aCIsIk11bHRpUmFuZ2VPclNlYXJjaEV4cHJlc3Npb24iLCJTaW5nbGVJbnRlcnZhbCIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMiLCJpbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzIiwiaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHMiLCJpbnZhbGlkUHJvcGVydHkiLCJoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscyIsInByb3BlcnR5TWFwRnJlcSIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0RXJyb3JNZXNzYWdlIiwibWVzc2FnZXMiLCJsZW5ndGgiLCJwdXNoIiwiZ2V0VGV4dCIsImpvaW4iLCJnZXRJbnZhbGlkT3BlcmF0b3JMZW5ndGgiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsIm9wZXJhdG9yIiwidG9VcHBlckNhc2UiLCJyZWR1Y2UiLCJhY2MiLCJrZXkiLCJpc0ZpbHRlcmFibGVQcm9wZXJ0eSIsImZpbHRlckNyaXRlcmlhIiwibmFtZSIsImxhYmVsIiwiZmlsdGVyYWJsZSIsImhpZGRlbkZpbHRlciIsInZhbGlkYXRlIiwiZmlsdGVyVmFsdWUiLCJmaWx0ZXJSZXN0cmljdGlvbiIsInJlc3RyaWN0aW9uIiwiaW5jbHVkZXMiLCJ2YWx1ZXMiLCJoYXNFcnJvcnMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVycm9yTWVzc2FnZUhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IHR5cGUgeyBFYXN5RmlsdGVyRXhwcmVzc2lvbiB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwiLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5cbi8qKlxuICogVGhlIGBFcnJvck1lc3NhZ2VIYW5kbGVyYCBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYW5kIHZhbGlkYXRpbmcgZmlsdGVyLXJlbGF0ZWQgZXJyb3JzXG4gKiBpbiB0aGUgY29udGV4dCBvZiB0aGUgRWFzeSBGaWx0ZXIgY29udHJvbC4gSXQgcHJvdmlkZXMgbWVjaGFuaXNtcyB0byB2YWxpZGF0ZSBmaWx0ZXIgcHJvcGVydGllc1xuICogYW5kIHZhbHVlcywgY29uc3RydWN0IGVycm9yIG1lc3NhZ2VzLCBhbmQgdHJhY2sgaW52YWxpZCB0b2tlbnMgb3Igb3BlcmF0b3JzLlxuICpcbiAqIFRoaXMgY2xhc3MgZW5zdXJlcyB0aGF0IGZpbHRlciBjcml0ZXJpYSBhZGhlcmUgdG8gc3BlY2lmaWVkIHJlc3RyaWN0aW9ucywgc3VjaCBhcyBhbGxvd2VkIG9wZXJhdG9yc1xuICogYW5kIHNpbmdsZS9tdWx0aXBsZSB2YWx1ZSBjb25zdHJhaW50cy4gSXQgYWxzbyBpZGVudGlmaWVzIG5vbi1maWx0ZXJhYmxlIG9yIGhpZGRlbiBmaWx0ZXIgcHJvcGVydGllc1xuICogYW5kIGdlbmVyYXRlcyB1c2VyLWZyaWVuZGx5IGVycm9yIG1lc3NhZ2VzIGZvciBpbnZhbGlkIGZpbHRlciBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBLZXkgRmVhdHVyZXM6XG4gKiAtIFZhbGlkYXRlcyBmaWx0ZXIgcHJvcGVydGllcyBhbmQgdmFsdWVzIGFnYWluc3QgZGVmaW5lZCByZXN0cmljdGlvbnMuXG4gKiAtIFRyYWNrcyBpbnZhbGlkIHRva2Vucywgb3BlcmF0b3JzLCBhbmQgcHJvcGVydGllcy5cbiAqIC0gQ29uc3RydWN0cyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcyBmb3IgaW52YWxpZCBmaWx0ZXIgY29uZmlndXJhdGlvbnMuXG4gKiAtIFByb3ZpZGVzIHV0aWxpdHkgbWV0aG9kcyB0byBjaGVjayBpZiBhIHByb3BlcnR5IGlzIGZpbHRlcmFibGUgYW5kIGlmIHRoZXJlIGFyZSBhbnkgZXJyb3JzLlxuICpcbiAqIFVzYWdlOlxuICogLSBVc2UgYGlzRmlsdGVyYWJsZVByb3BlcnR5YCB0byBjaGVjayBpZiBhIHByb3BlcnR5IGlzIGZpbHRlcmFibGUuXG4gKiAtIFVzZSBgdmFsaWRhdGVgIHRvIHZhbGlkYXRlIGEgZmlsdGVyIHByb3BlcnR5IGFuZCBpdHMgdmFsdWUuXG4gKiAtIFVzZSBgZ2V0RXJyb3JNZXNzYWdlYCB0byByZXRyaWV2ZSBhIGNvbnN0cnVjdGVkIGVycm9yIG1lc3NhZ2UgZm9yIGludmFsaWQgdG9rZW5zLlxuICogLSBVc2UgYGhhc0Vycm9yc2AgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSB2YWxpZGF0aW9uIGVycm9ycy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXJyb3JNZXNzYWdlSGFuZGxlciB7XG5cdHByaXZhdGUgbm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzOiBzdHJpbmdbXTtcblxuXHRwcml2YXRlIGhpZGRlbkZpbHRlclRva2VuTGFiZWxzOiBzdHJpbmdbXTtcblxuXHQvL0NvbnRhaW5zIGxhYmVscyBvZiB0b2tlbnMgd2hpY2ggaGF2ZSBzaW5nbGUgaXRlbSByZXN0cmljdGlvbiB2aW9sYXRlZFxuXHRwcml2YXRlIGludmFsaWRTaW5nbGVJdGVtVG9rZW5MYWJlbHM6IHN0cmluZ1tdO1xuXG5cdC8vQ29udGFpbnMgbGFiZWxzIG9mIHRva2VucyB3aGljaCBoYXZlIGludmFsaWQgb3BlcmF0b3IgdXNlZCBhcyBhIG1hcFxuXHRwcml2YXRlIGludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXSB8IHVuZGVmaW5lZD47IC8ve0dUOltTb2xkVG9QYXJ0eSwgUHVyY2hhc2VPcmRlcl0sIExUOlsuLi5dLCAuLi59XG5cblx0cHJpdmF0ZSBpbnZhbGlkUHJvcGVydHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyAvL3tzb2xkVG9QYXJ0eTogdHJ1ZX1cblxuXHRwcml2YXRlIHByb3BlcnR5TWFwRnJlcTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcblxuXHRwcml2YXRlIEZJTFRFUlJFU1RSSUNUSU9OUyA9IHtcblx0XHRTaW5nbGVWYWx1ZToge1xuXHRcdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdFx0b3BlcmF0b3JzOiBbRmlsdGVyT3BlcmF0b3IuRVFdXG5cdFx0fSxcblx0XHRNdWx0aVZhbHVlOiB7XG5cdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdG9wZXJhdG9yczogW0ZpbHRlck9wZXJhdG9yLkVRXVxuXHRcdH0sXG5cdFx0U2luZ2xlUmFuZ2U6IHtcblx0XHRcdG11bHRpcGxlOiBmYWxzZSxcblx0XHRcdG9wZXJhdG9yczogW1xuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5FUSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTkUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxFLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5MVCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR0UsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkdULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5CVCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTkJcblx0XHRcdF1cblx0XHR9LFxuXHRcdE11bHRpUmFuZ2U6IHtcblx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0b3BlcmF0b3JzOiBbXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTEUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5HRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkJULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5OQlxuXHRcdFx0XVxuXHRcdH0sXG5cdFx0U2VhcmNoRXhwcmVzc2lvbjoge1xuXHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRvcGVyYXRvcnM6IFtcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQ29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGhcblx0XHRcdF1cblx0XHR9LFxuXHRcdE11bHRpUmFuZ2VPclNlYXJjaEV4cHJlc3Npb246IHtcblx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0b3BlcmF0b3JzOiBbXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTEUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5HRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkJULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5OQixcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQ29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGhcblx0XHRcdF1cblx0XHR9LFxuXHRcdFNpbmdsZUludGVydmFsOiB7XG5cdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdG9wZXJhdG9yczogW1xuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Db250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90Q29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQlQsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLk5CLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5TdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5FbmRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGgsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5MRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkdFXG5cdFx0XHRdXG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMubm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzID0gW107XG5cdFx0dGhpcy5pbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzID0gW107XG5cdFx0dGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVscyA9IHt9O1xuXHRcdHRoaXMuaW52YWxpZFByb3BlcnR5ID0ge307XG5cdFx0dGhpcy5oaWRkZW5GaWx0ZXJUb2tlbkxhYmVscyA9IFtdO1xuXHRcdHRoaXMucHJvcGVydHlNYXBGcmVxID0ge307XG5cdH1cblxuXHQvKipcblx0ICogdGhpcyBtZXRob2QgY29uc3RydWN0cyB0aGUgZXJyb3IgbWVzc2FnZSBiYXNlZCBvbiB0aGUgaW52YWxpZCB0b2tlbnMgcHJlc2VudFxuXHQgKiBAcmV0dXJucyBUaGUgY29uc3RydWN0ZWQgZXJyb3IgbWVzc2FnZSBzdHJpbmdcblx0ICovXG5cblx0cHVibGljIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdFx0aWYgKHRoaXMubm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdG1lc3NhZ2VzLnB1c2goXG5cdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfTk9OX0ZJTFRFUkFCTEVcIiwgW1xuXHRcdFx0XHRcdGA8c3Ryb25nPiR7dGhpcy5ub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmBcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0bWVzc2FnZXMucHVzaChcblx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9ISURERU5fRklMVEVSXCIsIFtgPHN0cm9uZz4ke3RoaXMuaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmBdKVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5nZXRJbnZhbGlkT3BlcmF0b3JMZW5ndGgoKSA+IDApIHtcblx0XHRcdE9iamVjdC5rZXlzKHRoaXMuaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHMpLmZvckVhY2goKG9wZXJhdG9yKSA9PiB7XG5cdFx0XHRcdGlmICgodGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVsc1tvcGVyYXRvcl0/Lmxlbmd0aCA/PyAwKSA+IDApIHtcblx0XHRcdFx0XHRtZXNzYWdlcy5wdXNoKFxuXHRcdFx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9PUEVSQVRPUlwiLCBbXG5cdFx0XHRcdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkZJTFRFUl9PUEVSQVRPUl9cIiArIG9wZXJhdG9yLnRvVXBwZXJDYXNlKCkpLFxuXHRcdFx0XHRcdFx0XHRgPHN0cm9uZz4keyh0aGlzLmludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzW29wZXJhdG9yXSBhcyBzdHJpbmdbXSkuam9pbihcIiwgXCIpfTwvc3Ryb25nPmBcblx0XHRcdFx0XHRcdF0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaW52YWxpZFNpbmdsZUl0ZW1Ub2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRtZXNzYWdlcy5wdXNoKFxuXHRcdFx0XHR0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NJTkdMRV9SQU5HRVwiLCBbXG5cdFx0XHRcdFx0YDxzdHJvbmc+JHt0aGlzLmludmFsaWRTaW5nbGVJdGVtVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmBcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1lc3NhZ2VzLmpvaW4oXCI8YnI+XCIpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRJbnZhbGlkT3BlcmF0b3JMZW5ndGgoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXModGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVscykucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFjYyArICh0aGlzLmludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzW2tleV0/Lmxlbmd0aCA/PyAwKTtcblx0XHR9LCAwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGZpbHRlciBwcm9wZXJ0eSBpcyBmaWx0ZXJhYmxlIG9yIG5vdFxuXHQgKiBAcGFyYW0gZmlsdGVyQ3JpdGVyaWEgaXQgaGFzIG1ldGFkYXRhIG9mIHRoZSBmaWx0ZXIgcHJvcGVydHlcblx0ICogQHJldHVybnMgaWYgdGhlIGZpbHRlciBwcm9wZXJ0eSBpcyBmaWx0ZXJhYmxlIG9yIG5vdFxuXHQgKi9cblxuXHRwdWJsaWMgaXNGaWx0ZXJhYmxlUHJvcGVydHkoZmlsdGVyQ3JpdGVyaWE6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuaW52YWxpZFByb3BlcnR5W2ZpbHRlckNyaXRlcmlhLm5hbWVdKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGNvbnN0IGxhYmVsID0gZmlsdGVyQ3JpdGVyaWEubGFiZWwgfHwgZmlsdGVyQ3JpdGVyaWEubmFtZTtcblx0XHRpZiAoZmlsdGVyQ3JpdGVyaWEuZmlsdGVyYWJsZSA9PT0gZmFsc2UpIHtcblx0XHRcdHRoaXMubm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzLnB1c2gobGFiZWwpO1xuXHRcdFx0dGhpcy5pbnZhbGlkUHJvcGVydHlbZmlsdGVyQ3JpdGVyaWEubmFtZV0gPSB0cnVlO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmIChmaWx0ZXJDcml0ZXJpYS5oaWRkZW5GaWx0ZXIgPT09IHRydWUpIHtcblx0XHRcdHRoaXMuaW52YWxpZFByb3BlcnR5W2ZpbHRlckNyaXRlcmlhLm5hbWVdID0gdHJ1ZTtcblx0XHRcdHRoaXMuaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMucHVzaChsYWJlbCk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgdmFsaWRhdGVzIHRoZSBmaWx0ZXIgcHJvcGVydHkgYW5kIGl0cyB2YWx1ZSBhZ2FpbnN0IHRoZSBkZWZpbmVkIHJlc3RyaWN0aW9uc1xuXHQgKiBAcGFyYW0gZmlsdGVyQ3JpdGVyaWEgaXQgaGFzIG1ldGFkYXRhIG9mIHRoZSBmaWx0ZXIgcHJvcGVydHlcblx0ICogQHBhcmFtIGZpbHRlclZhbHVlIGl0IGhhcyB0aGUgZmlsdGVyIHZhbHVlIGFuZCBvcGVyYXRvclxuXHQgKiBAcmV0dXJucyBpZiB0aGUgZmlsdGVyIHByb3BlcnR5IGFuZCBpdHMgdmFsdWUgYXJlIHZhbGlkIG9yIG5vdFxuXHQgKi9cblxuXHRwdWJsaWMgdmFsaWRhdGUoZmlsdGVyQ3JpdGVyaWE6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhLCBmaWx0ZXJWYWx1ZTogRWFzeUZpbHRlckV4cHJlc3Npb24pOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5pbnZhbGlkUHJvcGVydHlbZmlsdGVyQ3JpdGVyaWEubmFtZV0pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoZmlsdGVyQ3JpdGVyaWEuZmlsdGVyUmVzdHJpY3Rpb24pIHtcblx0XHRcdGNvbnN0IHJlc3RyaWN0aW9uID0gdGhpcy5GSUxURVJSRVNUUklDVElPTlNbZmlsdGVyQ3JpdGVyaWEuZmlsdGVyUmVzdHJpY3Rpb25dO1xuXHRcdFx0Y29uc3QgbmFtZSA9IGZpbHRlclZhbHVlLm5hbWU7XG5cdFx0XHRjb25zdCBsYWJlbCA9IGZpbHRlckNyaXRlcmlhLmxhYmVsIHx8IG5hbWU7XG5cdFx0XHRjb25zdCBvcGVyYXRvciA9IGZpbHRlclZhbHVlLm9wZXJhdG9yO1xuXG5cdFx0XHQvL0NoZWNrIGlmIGludmFsaWQgb3BlcmF0b3IgaGFzIGJlZW4gdXNlZFxuXHRcdFx0aWYgKCFyZXN0cmljdGlvbi5vcGVyYXRvcnMuaW5jbHVkZXMob3BlcmF0b3IpKSB7XG5cdFx0XHRcdGlmICghdGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVsc1tvcGVyYXRvcl0pIHtcblx0XHRcdFx0XHR0aGlzLmludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzW29wZXJhdG9yXSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHNbb3BlcmF0b3JdLnB1c2gobGFiZWwpO1xuXHRcdFx0XHR0aGlzLmludmFsaWRQcm9wZXJ0eVtuYW1lXSA9IHRydWU7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0Ly9DaGVjayBpZiBvbmx5IHNpbmdsZSB2YWx1ZSByZXN0cmljdGlvbiBpcyBwcmVzZW50XG5cdFx0XHQvL0lmIHRoZSBvcGVyYXRvciBpcyBvZiBCVCBvciBOQiB0eXBlLCB0aGVuIHdlIGNvbnNpZGVyIGl0IGFzIDEgdmFsdWVcblx0XHRcdHRoaXMucHJvcGVydHlNYXBGcmVxW25hbWVdID1cblx0XHRcdFx0KHRoaXMucHJvcGVydHlNYXBGcmVxW25hbWVdID8/IDApICtcblx0XHRcdFx0KG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCB8fCBvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuTkIgPyAxIDogZmlsdGVyVmFsdWUudmFsdWVzLmxlbmd0aCk7XG5cblx0XHRcdGlmICghcmVzdHJpY3Rpb24ubXVsdGlwbGUgJiYgdGhpcy5wcm9wZXJ0eU1hcEZyZXFbZmlsdGVyVmFsdWUubmFtZV0gPiAxKSB7XG5cdFx0XHRcdHRoaXMuaW52YWxpZFNpbmdsZUl0ZW1Ub2tlbkxhYmVscy5wdXNoKGxhYmVsKTtcblx0XHRcdFx0dGhpcy5pbnZhbGlkUHJvcGVydHlbbmFtZV0gPSB0cnVlO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGVyZSBhcmUgYW55IHZhbGlkYXRpb24gZXJyb3JzIHByZXNlbnRcblx0ICogQHJldHVybnMgaWYgdGhlcmUgYXJlIGFueSB2YWxpZGF0aW9uIGVycm9yc1xuXHQgKi9cblxuXHRwdWJsaWMgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLmdldEludmFsaWRPcGVyYXRvckxlbmd0aCgpID4gMCB8fFxuXHRcdFx0dGhpcy5ub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCB8fFxuXHRcdFx0dGhpcy5oaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5sZW5ndGggPiAwIHx8XG5cdFx0XHR0aGlzLmludmFsaWRTaW5nbGVJdGVtVG9rZW5MYWJlbHMubGVuZ3RoID4gMFxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7RUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFwQkEsSUFxQnFCQSxtQkFBbUI7SUF1R3ZDLFNBQUFBLG9CQUFBLEVBQWM7TUFsR2Q7TUFHQTtNQUMwRTtNQUV4QjtNQUFBLEtBSTFDQyxrQkFBa0IsR0FBRztRQUM1QkMsV0FBVyxFQUFFO1VBQ1pDLFFBQVEsRUFBRSxLQUFLO1VBQ2ZDLFNBQVMsRUFBRSxDQUFDQyxjQUFjLENBQUNDLEVBQUU7UUFDOUIsQ0FBQztRQUNEQyxVQUFVLEVBQUU7VUFDWEosUUFBUSxFQUFFLElBQUk7VUFDZEMsU0FBUyxFQUFFLENBQUNDLGNBQWMsQ0FBQ0MsRUFBRTtRQUM5QixDQUFDO1FBQ0RFLFdBQVcsRUFBRTtVQUNaTCxRQUFRLEVBQUUsS0FBSztVQUNmQyxTQUFTLEVBQUUsQ0FDVkMsY0FB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
198
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFcnJvck1lc3NhZ2VIYW5kbGVyIiwiRklMVEVSUkVTVFJJQ1RJT05TIiwiU2luZ2xlVmFsdWUiLCJtdWx0aXBsZSIsIm9wZXJhdG9ycyIsIkZpbHRlck9wZXJhdG9yIiwiRVEiLCJNdWx0aVZhbHVlIiwiU2luZ2xlUmFuZ2UiLCJORSIsIkxFIiwiTFQiLCJHRSIsIkdUIiwiQlQiLCJOQiIsIk11bHRpUmFuZ2UiLCJTZWFyY2hFeHByZXNzaW9uIiwiU3RhcnRzV2l0aCIsIkNvbnRhaW5zIiwiRW5kc1dpdGgiLCJOb3RTdGFydHNXaXRoIiwiTm90Q29udGFpbnMiLCJOb3RFbmRzV2l0aCIsIk11bHRpUmFuZ2VPclNlYXJjaEV4cHJlc3Npb24iLCJTaW5nbGVJbnRlcnZhbCIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMiLCJpbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzIiwiaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHMiLCJpbnZhbGlkUHJvcGVydHkiLCJoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscyIsIm5vbkdyb3VwYWJsZVRva2VuTGFiZWxzIiwicHJvcGVydHlNYXBGcmVxIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRFcnJvck1lc3NhZ2UiLCJtZXNzYWdlcyIsImxlbmd0aCIsInB1c2giLCJnZXRUZXh0Iiwiam9pbiIsImdldEludmFsaWRPcGVyYXRvckxlbmd0aCIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwib3BlcmF0b3IiLCJ0b1VwcGVyQ2FzZSIsInJlZHVjZSIsImFjYyIsImtleSIsImlzRmlsdGVyYWJsZVByb3BlcnR5IiwiZmlsdGVyQ3JpdGVyaWEiLCJuYW1lIiwibGFiZWwiLCJmaWx0ZXJhYmxlIiwiaGlkZGVuRmlsdGVyIiwiaXNHcm91cGFibGVQcm9wZXJ0eSIsImdyb3VwYWJsZSIsInZhbGlkYXRlIiwiZmlsdGVyVmFsdWUiLCJmaWx0ZXJSZXN0cmljdGlvbiIsInJlc3RyaWN0aW9uIiwiaW5jbHVkZXMiLCJ2YWx1ZXMiLCJoYXNFcnJvcnMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVycm9yTWVzc2FnZUhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IHR5cGUgeyBFYXN5RmlsdGVyRXhwcmVzc2lvbiB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwiLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5cbi8qKlxuICogVGhlIGBFcnJvck1lc3NhZ2VIYW5kbGVyYCBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYW5kIHZhbGlkYXRpbmcgZmlsdGVyLXJlbGF0ZWQgZXJyb3JzXG4gKiBpbiB0aGUgY29udGV4dCBvZiB0aGUgRWFzeSBGaWx0ZXIgY29udHJvbC4gSXQgcHJvdmlkZXMgbWVjaGFuaXNtcyB0byB2YWxpZGF0ZSBmaWx0ZXIgcHJvcGVydGllc1xuICogYW5kIHZhbHVlcywgY29uc3RydWN0IGVycm9yIG1lc3NhZ2VzLCBhbmQgdHJhY2sgaW52YWxpZCB0b2tlbnMgb3Igb3BlcmF0b3JzLlxuICpcbiAqIFRoaXMgY2xhc3MgZW5zdXJlcyB0aGF0IGZpbHRlciBjcml0ZXJpYSBhZGhlcmUgdG8gc3BlY2lmaWVkIHJlc3RyaWN0aW9ucywgc3VjaCBhcyBhbGxvd2VkIG9wZXJhdG9yc1xuICogYW5kIHNpbmdsZS9tdWx0aXBsZSB2YWx1ZSBjb25zdHJhaW50cy4gSXQgYWxzbyBpZGVudGlmaWVzIG5vbi1maWx0ZXJhYmxlIG9yIGhpZGRlbiBmaWx0ZXIgcHJvcGVydGllc1xuICogYW5kIGdlbmVyYXRlcyB1c2VyLWZyaWVuZGx5IGVycm9yIG1lc3NhZ2VzIGZvciBpbnZhbGlkIGZpbHRlciBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBLZXkgRmVhdHVyZXM6XG4gKiAtIFZhbGlkYXRlcyBmaWx0ZXIgcHJvcGVydGllcyBhbmQgdmFsdWVzIGFnYWluc3QgZGVmaW5lZCByZXN0cmljdGlvbnMuXG4gKiAtIFRyYWNrcyBpbnZhbGlkIHRva2Vucywgb3BlcmF0b3JzLCBhbmQgcHJvcGVydGllcy5cbiAqIC0gQ29uc3RydWN0cyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcyBmb3IgaW52YWxpZCBmaWx0ZXIgY29uZmlndXJhdGlvbnMuXG4gKiAtIFByb3ZpZGVzIHV0aWxpdHkgbWV0aG9kcyB0byBjaGVjayBpZiBhIHByb3BlcnR5IGlzIGZpbHRlcmFibGUgYW5kIGlmIHRoZXJlIGFyZSBhbnkgZXJyb3JzLlxuICpcbiAqIFVzYWdlOlxuICogLSBVc2UgYGlzRmlsdGVyYWJsZVByb3BlcnR5YCB0byBjaGVjayBpZiBhIHByb3BlcnR5IGlzIGZpbHRlcmFibGUuXG4gKiAtIFVzZSBgdmFsaWRhdGVgIHRvIHZhbGlkYXRlIGEgZmlsdGVyIHByb3BlcnR5IGFuZCBpdHMgdmFsdWUuXG4gKiAtIFVzZSBgZ2V0RXJyb3JNZXNzYWdlYCB0byByZXRyaWV2ZSBhIGNvbnN0cnVjdGVkIGVycm9yIG1lc3NhZ2UgZm9yIGludmFsaWQgdG9rZW5zLlxuICogLSBVc2UgYGhhc0Vycm9yc2AgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSB2YWxpZGF0aW9uIGVycm9ycy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXJyb3JNZXNzYWdlSGFuZGxlciB7XG5cdHByaXZhdGUgbm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzOiBzdHJpbmdbXTtcblxuXHRwcml2YXRlIGhpZGRlbkZpbHRlclRva2VuTGFiZWxzOiBzdHJpbmdbXTtcblxuXHRwcml2YXRlIG5vbkdyb3VwYWJsZVRva2VuTGFiZWxzOiBzdHJpbmdbXTtcblxuXHQvL0NvbnRhaW5zIGxhYmVscyBvZiB0b2tlbnMgd2hpY2ggaGF2ZSBzaW5nbGUgaXRlbSByZXN0cmljdGlvbiB2aW9sYXRlZFxuXHRwcml2YXRlIGludmFsaWRTaW5nbGVJdGVtVG9rZW5MYWJlbHM6IHN0cmluZ1tdO1xuXG5cdC8vQ29udGFpbnMgbGFiZWxzIG9mIHRva2VucyB3aGljaCBoYXZlIGludmFsaWQgb3BlcmF0b3IgdXNlZCBhcyBhIG1hcFxuXHRwcml2YXRlIGludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXSB8IHVuZGVmaW5lZD47IC8ve0dUOltTb2xkVG9QYXJ0eSwgUHVyY2hhc2VPcmRlcl0sIExUOlsuLi5dLCAuLi59XG5cblx0cHJpdmF0ZSBpbnZhbGlkUHJvcGVydHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyAvL3tzb2xkVG9QYXJ0eTogdHJ1ZX1cblxuXHRwcml2YXRlIHByb3BlcnR5TWFwRnJlcTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcblxuXHRwcml2YXRlIEZJTFRFUlJFU1RSSUNUSU9OUyA9IHtcblx0XHRTaW5nbGVWYWx1ZToge1xuXHRcdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdFx0b3BlcmF0b3JzOiBbRmlsdGVyT3BlcmF0b3IuRVFdXG5cdFx0fSxcblx0XHRNdWx0aVZhbHVlOiB7XG5cdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdG9wZXJhdG9yczogW0ZpbHRlck9wZXJhdG9yLkVRXVxuXHRcdH0sXG5cdFx0U2luZ2xlUmFuZ2U6IHtcblx0XHRcdG11bHRpcGxlOiBmYWxzZSxcblx0XHRcdG9wZXJhdG9yczogW1xuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5FUSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTkUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxFLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5MVCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR0UsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkdULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5CVCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTkJcblx0XHRcdF1cblx0XHR9LFxuXHRcdE11bHRpUmFuZ2U6IHtcblx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0b3BlcmF0b3JzOiBbXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTEUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5HRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkJULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5OQlxuXHRcdFx0XVxuXHRcdH0sXG5cdFx0U2VhcmNoRXhwcmVzc2lvbjoge1xuXHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRvcGVyYXRvcnM6IFtcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQ29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGhcblx0XHRcdF1cblx0XHR9LFxuXHRcdE11bHRpUmFuZ2VPclNlYXJjaEV4cHJlc3Npb246IHtcblx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0b3BlcmF0b3JzOiBbXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTEUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5HRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkJULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5OQixcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQ29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGhcblx0XHRcdF1cblx0XHR9LFxuXHRcdFNpbmdsZUludGVydmFsOiB7XG5cdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdG9wZXJhdG9yczogW1xuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Db250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90Q29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQlQsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLk5CLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5TdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5FbmRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGgsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5MRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkdFXG5cdFx0XHRdXG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMubm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzID0gW107XG5cdFx0dGhpcy5pbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzID0gW107XG5cdFx0dGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVscyA9IHt9O1xuXHRcdHRoaXMuaW52YWxpZFByb3BlcnR5ID0ge307XG5cdFx0dGhpcy5oaWRkZW5GaWx0ZXJUb2tlbkxhYmVscyA9IFtdO1xuXHRcdHRoaXMubm9uR3JvdXBhYmxlVG9rZW5MYWJlbHMgPSBbXTtcblx0XHR0aGlzLnByb3BlcnR5TWFwRnJlcSA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIHRoaXMgbWV0aG9kIGNvbnN0cnVjdHMgdGhlIGVycm9yIG1lc3NhZ2UgYmFzZWQgb24gdGhlIGludmFsaWQgdG9rZW5zIHByZXNlbnRcblx0ICogQHJldHVybnMgVGhlIGNvbnN0cnVjdGVkIGVycm9yIG1lc3NhZ2Ugc3RyaW5nXG5cdCAqL1xuXG5cdHB1YmxpYyBnZXRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcblx0XHRjb25zdCBtZXNzYWdlczogc3RyaW5nW10gPSBbXTtcblxuXHRcdGlmICh0aGlzLm5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRtZXNzYWdlcy5wdXNoKFxuXHRcdFx0XHR0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX05PTl9GSUxURVJBQkxFXCIsIFtcblx0XHRcdFx0XHRgPHN0cm9uZz4ke3RoaXMubm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gXG5cdFx0XHRcdF0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmhpZGRlbkZpbHRlclRva2VuTGFiZWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdG1lc3NhZ2VzLnB1c2goXG5cdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfSElEREVOX0ZJTFRFUlwiLCBbYDxzdHJvbmc+JHt0aGlzLmhpZGRlbkZpbHRlclRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gXSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubm9uR3JvdXBhYmxlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0bWVzc2FnZXMucHVzaCh0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX05PTl9HUk9VUEFCTEVcIiwgW2Ake3RoaXMubm9uR3JvdXBhYmxlVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfWBdKSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZ2V0SW52YWxpZE9wZXJhdG9yTGVuZ3RoKCkgPiAwKSB7XG5cdFx0XHRPYmplY3Qua2V5cyh0aGlzLmludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzKS5mb3JFYWNoKChvcGVyYXRvcikgPT4ge1xuXHRcdFx0XHRpZiAoKHRoaXMuaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHNbb3BlcmF0b3JdPy5sZW5ndGggPz8gMCkgPiAwKSB7XG5cdFx0XHRcdFx0bWVzc2FnZXMucHVzaChcblx0XHRcdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfT1BFUkFUT1JcIiwgW1xuXHRcdFx0XHRcdFx0XHR0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJGSUxURVJfT1BFUkFUT1JfXCIgKyBvcGVyYXRvci50b1VwcGVyQ2FzZSgpKSxcblx0XHRcdFx0XHRcdFx0YDxzdHJvbmc+JHsodGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVsc1tvcGVyYXRvcl0gYXMgc3RyaW5nW10pLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmludmFsaWRTaW5nbGVJdGVtVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0bWVzc2FnZXMucHVzaChcblx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9TSU5HTEVfUkFOR0VcIiwgW1xuXHRcdFx0XHRcdGA8c3Ryb25nPiR7dGhpcy5pbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gXG5cdFx0XHRcdF0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBtZXNzYWdlcy5qb2luKFwiPGJyPlwiKTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0SW52YWxpZE9wZXJhdG9yTGVuZ3RoKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHMpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcblx0XHRcdHJldHVybiBhY2MgKyAodGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVsc1trZXldPy5sZW5ndGggPz8gMCk7XG5cdFx0fSwgMCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIHRoZSBmaWx0ZXIgcHJvcGVydHkgaXMgZmlsdGVyYWJsZSBvciBub3Rcblx0ICogQHBhcmFtIGZpbHRlckNyaXRlcmlhIGl0IGhhcyBtZXRhZGF0YSBvZiB0aGUgZmlsdGVyIHByb3BlcnR5XG5cdCAqIEByZXR1cm5zIGlmIHRoZSBmaWx0ZXIgcHJvcGVydHkgaXMgZmlsdGVyYWJsZSBvciBub3Rcblx0ICovXG5cblx0cHVibGljIGlzRmlsdGVyYWJsZVByb3BlcnR5KGZpbHRlckNyaXRlcmlhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLmludmFsaWRQcm9wZXJ0eVtmaWx0ZXJDcml0ZXJpYS5uYW1lXSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRjb25zdCBsYWJlbCA9IGZpbHRlckNyaXRlcmlhLmxhYmVsIHx8IGZpbHRlckNyaXRlcmlhLm5hbWU7XG5cdFx0aWYgKGZpbHRlckNyaXRlcmlhLmZpbHRlcmFibGUgPT09IGZhbHNlKSB7XG5cdFx0XHR0aGlzLm5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5wdXNoKGxhYmVsKTtcblx0XHRcdHRoaXMuaW52YWxpZFByb3BlcnR5W2ZpbHRlckNyaXRlcmlhLm5hbWVdID0gdHJ1ZTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoZmlsdGVyQ3JpdGVyaWEuaGlkZGVuRmlsdGVyID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLmludmFsaWRQcm9wZXJ0eVtmaWx0ZXJDcml0ZXJpYS5uYW1lXSA9IHRydWU7XG5cdFx0XHR0aGlzLmhpZGRlbkZpbHRlclRva2VuTGFiZWxzLnB1c2gobGFiZWwpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGUgZmlsdGVyIHByb3BlcnR5IGlzIGdyb3VwYWJsZSBvciBub3QuXG5cdCAqIEBwYXJhbSBmaWx0ZXJDcml0ZXJpYSBNZXRhZGF0YSBvZiB0aGUgZmlsdGVyIHByb3BlcnR5LlxuXHQgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmaWx0ZXIgcHJvcGVydHkgaXMgZ3JvdXBhYmxlIG9yIG5vdC5cblx0ICovXG5cdHB1YmxpYyBpc0dyb3VwYWJsZVByb3BlcnR5KGZpbHRlckNyaXRlcmlhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSk6IGJvb2xlYW4ge1xuXHRcdGlmIChmaWx0ZXJDcml0ZXJpYS5ncm91cGFibGUgPT09IGZhbHNlKSB7XG5cdFx0XHRjb25zdCBsYWJlbCA9IGZpbHRlckNyaXRlcmlhLmxhYmVsID8/IGZpbHRlckNyaXRlcmlhLm5hbWU7XG5cdFx0XHR0aGlzLm5vbkdyb3VwYWJsZVRva2VuTGFiZWxzLnB1c2gobGFiZWwpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIG1ldGhvZCB2YWxpZGF0ZXMgdGhlIGZpbHRlciBwcm9wZXJ0eSBhbmQgaXRzIHZhbHVlIGFnYWluc3QgdGhlIGRlZmluZWQgcmVzdHJpY3Rpb25zXG5cdCAqIEBwYXJhbSBmaWx0ZXJDcml0ZXJpYSBpdCBoYXMgbWV0YWRhdGEgb2YgdGhlIGZpbHRlciBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0gZmlsdGVyVmFsdWUgaXQgaGFzIHRoZSBmaWx0ZXIgdmFsdWUgYW5kIG9wZXJhdG9yXG5cdCAqIEByZXR1cm5zIGlmIHRoZSBmaWx0ZXIgcHJvcGVydHkgYW5kIGl0cyB2YWx1ZSBhcmUgdmFsaWQgb3Igbm90XG5cdCAqL1xuXG5cdHB1YmxpYyB2YWxpZGF0ZShmaWx0ZXJDcml0ZXJpYTogRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEsIGZpbHRlclZhbHVlOiBFYXN5RmlsdGVyRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLmludmFsaWRQcm9wZXJ0eVtmaWx0ZXJDcml0ZXJpYS5uYW1lXSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmIChmaWx0ZXJDcml0ZXJpYS5maWx0ZXJSZXN0cmljdGlvbikge1xuXHRcdFx0Y29uc3QgcmVzdHJpY3Rpb24gPSB0aGlzLkZJTFRFUlJFU1RSSUNUSU9OU1tmaWx0ZXJDcml0ZXJpYS5maWx0ZXJSZXN0cmljdGlvbl07XG5cdFx0XHRjb25zdCBuYW1lID0gZmlsdGVyVmFsdWUubmFtZTtcblx0XHRcdGNvbnN0IGxhYmVsID0gZmlsdGVyQ3JpdGVyaWEubGFiZWwgfHwgbmFtZTtcblx0XHRcdGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyVmFsdWUub3BlcmF0b3I7XG5cblx0XHRcdC8vQ2hlY2sgaWYgaW52YWxpZCBvcGVyYXRvciBoYXMgYmVlbiB1c2VkXG5cdFx0XHRpZiAoIXJlc3RyaWN0aW9uLm9wZXJhdG9ycy5pbmNsdWRlcyhvcGVyYXRvcikpIHtcblx0XHRcdFx0aWYgKCF0aGlzLmludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzW29wZXJhdG9yXSkge1xuXHRcdFx0XHRcdHRoaXMuaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHNbb3BlcmF0b3JdID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVsc1tvcGVyYXRvcl0ucHVzaChsYWJlbCk7XG5cdFx0XHRcdHRoaXMuaW52YWxpZFByb3BlcnR5W25hbWVdID0gdHJ1ZTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHQvL0NoZWNrIGlmIG9ubHkgc2luZ2xlIHZhbHVlIHJlc3RyaWN0aW9uIGlzIHByZXNlbnRcblx0XHRcdC8vSWYgdGhlIG9wZXJhdG9yIGlzIG9mIEJUIG9yIE5CIHR5cGUsIHRoZW4gd2UgY29uc2lkZXIgaXQgYXMgMSB2YWx1ZVxuXHRcdFx0dGhpcy5wcm9wZXJ0eU1hcEZyZXFbbmFtZV0gPVxuXHRcdFx0XHQodGhpcy5wcm9wZXJ0eU1hcEZyZXFbbmFtZV0gPz8gMCkgK1xuXHRcdFx0XHQob3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUIHx8IG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5OQiA/IDEgOiBmaWx0ZXJWYWx1ZS52YWx1ZXMubGVuZ3RoKTtcblxuXHRcdFx0aWYgKCFyZXN0cmljdGlvbi5tdWx0aXBsZSAmJiB0aGlzLnByb3BlcnR5TWFwRnJlcVtmaWx0ZXJWYWx1ZS5uYW1lXSA+IDEpIHtcblx0XHRcdFx0dGhpcy5pbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzLnB1c2gobGFiZWwpO1xuXHRcdFx0XHR0aGlzLmludmFsaWRQcm9wZXJ0eVtuYW1lXSA9IHRydWU7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIHRoZXJlIGFyZSBhbnkgdmFsaWRhdGlvbiBlcnJvcnMgcHJlc2VudFxuXHQgKiBAcmV0dXJucyBpZiB0aGVyZSBhcmUgYW55IHZhbGlkYXRpb24gZXJyb3JzXG5cdCAqL1xuXG5cdHB1YmxpYyBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIChcblx0XHRcdHRoaXMuZ2V0SW52YWxpZE9wZXJhdG9yTGVuZ3RoKCkgPiAwIHx8XG5cdFx0XHR0aGlzLm5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5sZW5ndGggPiAwIHx8XG5cdFx0XHR0aGlzLmhpZGRlbkZpbHRlclRva2VuTGFiZWxzLmxlbmd0aCA+IDAgfHxcblx0XHRcdHRoaXMubm9uR3JvdXBhYmxlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCB8fFxuXHRcdFx0dGhpcy5pbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzLmxlbmd0aCA+IDBcblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0VBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBcEJBLElBcUJxQkEsbUJBQW1CO0lBeUd2QyxTQUFBQSxvQkFBQSxFQUFjO01BbEdkO01BR0E7TUFDMEU7TUFFeEI7TUFBQSxLQUkxQ0Msa0JBQWtCLEdBQUc7UUFDNUJDLFdBQVcsRUFBRTtVQUNaQyxRQUFRLEVBQUUsS0FBSztVQUNmQyxTQUFTLEVBQUUsQ0FBQ0MsY0FBYyxDQUFDQyxFQUFFO1FBQzlCLENBQUM7UUFDREMsVUFBVSxFQUFFO1VBQ1hKLFFBQVEsRUFBRSxJQUFJO1VBQ2RDLFNBQVMsRUFBRSxDQUFDQyxjQUFjLENBQUNDLEVBQUU7UUFDOUIsQ0FBQztRQUNERSxXQUFXLEVBQUU7VUFDWkwsUUFBUSxFQUFFLEtBQUs7VUFDZkMsU0FBUyxFQUFFLENBQ1ZDLGNBQWMsQ0FBQ0MsRUFBRSxFQUNqQkQsY0FBYyxDQUFDSSxFQUFFLEVBQ2pCSixjQUFjLENBQUNLLEVBQUUsRUFDakJMLGNBQWMsQ0FBQ00sRUFBRSxFQUNqQk4sY0FBYyxDQUFDTyxFQUFFLEVBQ2pCUCxjQUFjLENBQUNRLEVBQUUsRUFDakJSLGNBQWMsQ0FBQ1MsRUFBRSxFQUNqQlQsY0FBYyxDQUFDVSxFQUFFO1FBRW5CLENBQUM7UUFDREMsVUFBVSxFQUFFO1VBQ1hiLFFBQVEsRUFBRSxJQUFJO1VBQ2RDLFNBQVMsRUFBRSxDQUNWQyxjQUFjLENBQUNDLEVBQUUsRUFDakJELGNBQWMsQ0FBQ0ksRUFBRSxFQUNqQkosY0FBYyxDQUFDSyxFQUFFLEVBQ2pCTCxjQUFjLENBQUNNLEVBQUUsRUFDakJOLGNBQWMsQ0FBQ08sRUFBRSxFQUNqQlAsY0FBYyxDQUFDUSxFQUFFLEVBQ2pCUixjQUFjLENBQUNTLEVBQUUsRUFDakJULGNBQWMsQ0FBQ1UsRUFBRTtRQUVuQixDQUFDO1FBQ0RFLGdCQUFnQixFQUFFO1VBQ2pCZCxRQUFRLEVBQUUsSUFBSTtVQUNkQyxTQUFTLEVBQUUsQ0FDVkMsY0FBYyxDQUFDYSxVQUFVLEVBQ3pCYixjQUFjLENBQUNjLFFBQVEsRUFDdkJkLGNBQWMsQ0FBQ2UsUUFBUSxFQUN2QmYsY0FBYyxDQUFDZ0IsYUFBYSxFQUM1QmhCLGNBQWMsQ0FBQ2lCLFdBQVcsRUFDMUJqQixjQUFjLENBQUNrQixXQUFXO1FBRTVCLENBQUM7UUFDREMsNEJBQTRCLEVBQUU7VUFDN0JyQixRQUFRLEVBQUUsSUFBSTtVQUNkQyxTQUFTLEVBQUUsQ0FDVkMsY0FBYyxDQUFDQyxFQUFFLEVBQ2pCRCxjQUFjLENBQUNJLEVBQUUsRUFDakJKLGNBQWMsQ0FBQ0ssRUFBRSxFQUNqQkwsY0FBYyxDQUFDTSxFQUFFLEVBQ2pCTixjQUFjLENBQUNPLEVBQUUsRUFDakJQLGNBQWMsQ0FBQ1EsRUFBRSxFQUNqQlIsY0FBYyxDQUFDUyxFQUFFLEVBQ2pCVCxjQUFjLENBQUNVLEVBQUUsRUFDakJWLGNBQWMsQ0FBQ2EsVUFBVSxFQUN6QmIsY0FBYyxDQUFDYyxRQUFRLEVBQ3ZCZCxjQUFjLENBQUNlLFFBQVEsRUFDdkJmLGNBQWMsQ0FBQ2dCLGFBQWEsRUFDNUJoQixjQUFjLENBQUNpQixXQUFXLEVBQzFCakIsY0FBYyxDQUFDa0IsV0FBVztRQUU1QixDQUFDO1FBQ0RFLGNBQWMsRUFBRTtVQUNmdEIsUUFBUSxFQUFFLElBQUk7VUFDZEMsU0FBUyxFQUFFLENBQ1ZDLGNBQWMsQ0FBQ2MsUUFBUSxFQUN2QmQsY0FBYyxDQUFDaUIsV0FBVyxFQUMxQmpCLGNBQWMsQ0FBQ0MsRUFBRSxFQUNqQkQsY0FBYyxDQUFDSSxFQUFFLEVBQ2pCSixjQUFjLENBQUNTLEVBQUUsRUFDakJULGNBQWMsQ0FBQ1UsRUFBRSxFQUNqQlYsY0FBYyxDQUFDYSxVQUFVLEVBQ3pCYixjQUFjLENBQUNnQixhQUFhLEVBQzVCaEIsY0FBYyxDQUFDZSxRQUFRLEVBQ3ZCZixjQUFjLENBQUNrQixXQUFXLEVBQzFCbEIsY0FBYyxDQUFDTSxFQUFFLEVBQ2pCTixjQUFjLENBQUNLLEVBQUUsRUFDakJMLGNBQWMsQ0FBQ1EsRUFBRSxFQUNqQlIsY0FBYyxDQUFDTyxFQUFFO1FBRW5CO01BQ0QsQ0FBQztNQUFBLEtBRU9jLGNBQWMsR0FBR0MsR0FBRyxDQUFDQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQztNQUduRSxJQUFJLENBQUNDLHdCQUF3QixHQUFHLEVBQUU7TUFDbEMsSUFBSSxDQUFDQyw0QkFBNEIsR0FBRyxFQUFFO01BQ3RDLElBQUksQ0FBQ0MsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDO01BQ3BDLElBQUksQ0FBQ0MsZUFBZSxHQUFHLENBQUMsQ0FBQztNQUN6QixJQUFJLENBQUNDLHVCQUF1QixHQUFHLEVBQUU7TUFDakMsSUFBSSxDQUFDQyx1QkFBdUIsR0FBRyxFQUFFO01BQ2pDLElBQUksQ0FBQ0MsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUMxQjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtJQUhDQyxRQUFBLEdBQUFwQyxtQkFBQTtJQUFBLElBQUFxQyxNQUFBLEdBQUFyQyxtQkFBQSxDQUFBc0MsU0FBQTtJQUFBRCxNQUFBLENBS09FLGVBQWUsR0FBdEIsU0FBT0EsZUFBZUEsQ0FBQSxFQUFXO01BQ2hDLE1BQU1DLFFBQWtCLEdBQUcsRUFBRTtNQUU3QixJQUFJLElBQUksQ0FBQ1gsd0JBQXdCLENBQUNZLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDN0NELFFBQVEsQ0FBQ0UsSUFBSSxDQUNaLElBQUksQ0FBQ2hCLGNBQWMsQ0FBQ2lCLE9BQU8sQ0FBQyw4QkFBOEIsRUFBRSxDQUMzRCxXQUFXLElBQUksQ0FBQ2Qsd0JBQXdCLENBQUNlLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUM5RCxDQUNGLENBQUM7TUFDRjtNQUVBLElBQUksSUFBSSxDQUFDWCx1QkFBdUIsQ0FBQ1EsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUM1Q0QsUUFBUSxDQUFDRSxJQUFJLENBQ1osSUFBSSxDQUFDaEIsY0FBYyxDQUFDaUIsT0FBTyxDQUFDLDZCQUE2QixFQUFFLENBQUMsV0FBVyxJQUFJLENBQUNWLHVCQUF1QixDQUFDVyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUMzSCxDQUFDO01BQ0Y7TUFFQSxJQUFJLElBQUksQ0FBQ1YsdUJBQXVCLENBQUNPLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDNUNELFFBQVEsQ0FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQ2hCLGNBQWMsQ0FBQ2lCLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDVCx1QkFBdUIsQ0FBQ1UsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO01BQzFIO01BRUEsSUFBSSxJQUFJLENBQUNDLHdCQUF3QixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDeENDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQ2hCLDBCQUEwQixDQUFDLENBQUNpQixPQUFPLENBQUVDLFFBQVEsSUFBSztVQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDbEIsMEJBQTBCLENBQUNrQixRQUFRLENBQUMsRUFBRVIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakVELFFBQVEsQ0FBQ0UsSUFBSSxDQUNaLElBQUksQ0FBQ2hCLGNBQWMsQ0FBQ2lCLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUNyRCxJQUFJLENBQUNqQixjQUFjLENBQUNpQixPQUFPLENBQUMsa0JBQWtCLEdBQUdNLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUN4RSxXQUFZLElBQUksQ0FBQ25CLDBCQUEwQixDQUFDa0IsUUFBUSxDQUFDLENBQWNMLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUN4RixDQUNGLENBQUM7VUFDRjtRQUNELENBQUMsQ0FBQztNQUNIO01BRUEsSUFBSSxJQUFJLENBQUNkLDRCQUE0QixDQUFDVyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2pERCxRQUFRLENBQUNFLElBQUksQ0FDWixJQUFJLENBQUNoQixjQUFjLENBQUNpQixPQUFPLENBQUMsNEJBQTRCLEVBQUUsQ0FDekQsV0FBVyxJQUFJLENBQUNiLDRCQUE0QixDQUFDYyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FDbEUsQ0FDRixDQUFDO01BQ0Y7TUFFQSxPQUFPSixRQUFRLENBQUNJLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUFBUCxNQUFBLENBRU9RLHdCQUF3QixHQUFoQyxTQUFRQSx3QkFBd0JBLENBQUEsRUFBVztNQUMxQyxPQUFPQyxNQUFNLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUNoQiwwQkFBMEIsQ0FBQyxDQUFDb0IsTUFBTSxDQUFDLENBQUNDLEdBQUcsRUFBRUMsR0FBRyxLQUFLO1FBQ3hFLE9BQU9ELEdBQUcsSUFBSSxJQUFJLENBQUNyQiwwQkFBMEIsQ0FBQ3NCLEdBQUcsQ0FBQyxFQUFFWixNQUFNLElBQUksQ0FBQyxDQUFDO01BQ2pFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDTjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQUosTUFBQSxDQU1PaUIsb0JBQW9CLEdBQTNCLFNBQU9BLG9CQUFvQkEsQ0FBQ0MsY0FBMEMsRUFBVztNQUNoRixJQUFJLElBQUksQ0FBQ3ZCLGVBQWUsQ0FBQ3VCLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDLEVBQUU7UUFDOUMsT0FBTyxLQUFLO01BQ2I7TUFDQSxNQUFNQyxLQUFLLEdBQUdGLGNBQWMsQ0FBQ0UsS0FBSyxJQUFJRixjQUFjLENBQUNDLElBQUk7TUFDekQsSUFBSUQsY0FBYyxDQUFDRyxVQUFVLEtBQUssS0FBSyxFQUFFO1FBQ3hDLElBQUksQ0FBQzdCLHdCQUF3QixDQUFDYSxJQUFJLENBQUNlLEtBQUssQ0FBQztRQUN6QyxJQUFJLENBQUN6QixlQUFlLENBQUN1QixjQUFjLENBQUNDLElBQUksQ0FBQyxHQUFHLElBQUk7UUFDaEQsT0FBTyxLQUFLO01BQ2I7TUFFQSxJQUFJRCxjQUFjLENBQUNJLFlBQVksS0FBSyxJQUFJLEVBQUU7UUFDekMsSUFBSSxDQUFDM0IsZUFBZSxDQUFDdUIsY0FBYyxDQUFDQyxJQUFJLENBQUMsR0FBRyxJQUFJO1FBQ2hELElBQUksQ0FBQ3ZCLHVCQUF1QixDQUFDUyxJQUFJLENBQUNlLEtBQUssQ0FBQztRQUN4QyxPQUFPLEtBQUs7TUFDYjtNQUVBLE9BQU8sSUFBSTtJQUNaOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBcEIsTUFBQSxDQUtPdUIsbUJBQW1CLEdBQTFCLFNBQU9BLG1CQUFtQkEsQ0FBQ0wsY0FBMEMsRUFBVztNQUMvRSxJQUFJQSxjQUFjLENBQUNNLFNBQVMsS0FBSyxLQUFLLEVBQUU7UUFDdkMsTUFBTUosS0FBSyxHQUFHRixjQUFjLENBQUNFLEtBQUssSUFBSUYsY0FBYyxDQUFDQyxJQUFJO1FBQ3pELElBQUksQ0FBQ3RCLHVCQUF1QixDQUFDUSxJQUFJLENBQUNlLEtBQUssQ0FBQztRQUN4QyxPQUFPLEtBQUs7TUFDYjtNQUNBLE9BQU8sSUFBSTtJQUNaOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUxDO0lBQUFwQixNQUFBLENBT095QixRQUFRLEdBQWYsU0FBT0EsUUFBUUEsQ0FBQ1AsY0FBMEMsRUFBRVEsV0FBaUMsRUFBVztNQUN2RyxJQUFJLElBQUksQ0FBQy9CLGVBQWUsQ0FBQ3VCLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDLEVBQUU7UUFDOUMsT0FBTyxLQUFLO01BQ2I7TUFFQSxJQUFJRCxjQUFjLENBQUNTLGlCQUFpQixFQUFFO1FBQ3JDLE1BQU1DLFdBQVcsR0FBRyxJQUFJLENBQUNoRSxrQkFBa0IsQ0FBQ3NELGNBQWMsQ0FBQ1MsaUJBQWlCLENBQUM7UUFDN0UsTUFBTVIsSUFBSSxHQUFHTyxXQUFXLENBQUNQLElBQUk7UUFDN0IsTUFBTUMsS0FBSyxHQUFHRixjQUFjLENBQUNFLEtBQUssSUFBSUQsSUFBSTtRQUMxQyxNQUFNUCxRQUFRLEdBQUdjLFdBQVcsQ0FBQ2QsUUFBUTs7UUFFckM7UUFDQSxJQUFJLENBQUNnQixXQUFXLENBQUM3RCxTQUFTLENBQUM4RCxRQUFRLENBQUNqQixRQUFRLENBQUMsRUFBRTtVQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDbEIsMEJBQTBCLENBQUNrQixRQUFRLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUNsQiwwQkFBMEIsQ0FBQ2tCLFFBQVEsQ0FBQyxHQUFHLEVBQUU7VUFDL0M7VUFDQSxJQUFJLENBQUNsQiwwQkFBMEIsQ0FBQ2tCLFFBQVEsQ0FBQyxDQUFDUCxJQUFJLENBQUNlLEtBQUssQ0FBQztVQUNyRCxJQUFJLENBQUN6QixlQUFlLENBQUN3QixJQUFJLENBQUMsR0FBRyxJQUFJO1VBQ2pDLE9BQU8sS0FBSztRQUNiOztRQUVBO1FBQ0E7UUFDQSxJQUFJLENBQUNyQixlQUFlLENBQUNxQixJQUFJLENBQUMsR0FDekIsQ0FBQyxJQUFJLENBQUNyQixlQUFlLENBQUNxQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQy9CUCxRQUFRLEtBQUs1QyxjQUFjLENBQUNTLEVBQUUsSUFBSW1DLFFBQVEsS0FBSzVDLGNBQWMsQ0FBQ1UsRUFBRSxHQUFHLENBQUMsR0FBR2dELFdBQVcsQ0FBQ0ksTUFBTSxDQUFDMUIsTUFBTSxDQUFDO1FBRW5HLElBQUksQ0FBQ3dCLFdBQVcsQ0FBQzlELFFBQVEsSUFBSSxJQUFJLENBQUNnQyxlQUFlLENBQUM0QixXQUFXLENBQUNQLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtVQUN4RSxJQUFJLENBQUMxQiw0QkFBNEIsQ0FBQ1ksSUFBSSxDQUFDZSxLQUFLLENBQUM7VUFDN0MsSUFBSSxDQUFDekIsZUFBZSxDQUFDd0IsSUFBSSxDQUFDLEdBQUcsSUFBSTtVQUNqQyxPQUFPLEtBQUs7UUFDYjtNQUNEO01BQ0EsT0FBTyxJQUFJO0lBQ1o7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBbkIsTUFBQSxDQUtPK0IsU0FBUyxHQUFoQixTQUFPQSxTQUFTQSxDQUFBLEVBQVk7TUFDM0IsT0FDQyxJQUFJLENBQUN2Qix3QkFBd0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUNuQyxJQUFJLENBQUNoQix3QkFBd0IsQ0FBQ1ksTUFBTSxHQUFHLENBQUMsSUFDeEMsSUFBSSxDQUFDUix1QkFBdUIsQ0FBQ1EsTUFBTSxHQUFHLENBQUMsSUFDdkMsSUFBSSxDQUFDUCx1QkFBdUIsQ0FBQ08sTUFBTSxHQUFHLENBQUMsSUFDdkMsSUFBSSxDQUFDWCw0QkFBNEIsQ0FBQ1csTUFBTSxHQUFHLENBQUM7SUFFOUMsQ0FBQztJQUFBLE9BQUF6QyxtQkFBQTtFQUFBO0VBQUFvQyxRQUFBLEdBQUFwQyxtQkFBQTtFQUFBLE9BQUFvQyxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -29,6 +29,8 @@ export default class ErrorMessageHandler {
29
29
 
30
30
  private hiddenFilterTokenLabels: string[];
31
31
 
32
+ private nonGroupableTokenLabels: string[];
33
+
32
34
  //Contains labels of tokens which have single item restriction violated
33
35
  private invalidSingleItemTokenLabels: string[];
34
36
 
@@ -133,6 +135,7 @@ export default class ErrorMessageHandler {
133
135
  this.invalidOperatorTokenLabels = {};
134
136
  this.invalidProperty = {};
135
137
  this.hiddenFilterTokenLabels = [];
138
+ this.nonGroupableTokenLabels = [];
136
139
  this.propertyMapFreq = {};
137
140
  }
138
141
 
@@ -158,6 +161,10 @@ export default class ErrorMessageHandler {
158
161
  );
159
162
  }
160
163
 
164
+ if (this.nonGroupableTokenLabels.length > 0) {
165
+ messages.push(this.resourceBundle.getText("M_EASY_FILTER_NON_GROUPABLE", [`${this.nonGroupableTokenLabels.join(", ")}`]));
166
+ }
167
+
161
168
  if (this.getInvalidOperatorLength() > 0) {
162
169
  Object.keys(this.invalidOperatorTokenLabels).forEach((operator) => {
163
170
  if ((this.invalidOperatorTokenLabels[operator]?.length ?? 0) > 0) {
@@ -214,6 +221,20 @@ export default class ErrorMessageHandler {
214
221
  return true;
215
222
  }
216
223
 
224
+ /**
225
+ * This method checks if the filter property is groupable or not.
226
+ * @param filterCriteria Metadata of the filter property.
227
+ * @returns Whether the filter property is groupable or not.
228
+ */
229
+ public isGroupableProperty(filterCriteria: EasyFilterPropertyMetadata): boolean {
230
+ if (filterCriteria.groupable === false) {
231
+ const label = filterCriteria.label ?? filterCriteria.name;
232
+ this.nonGroupableTokenLabels.push(label);
233
+ return false;
234
+ }
235
+ return true;
236
+ }
237
+
217
238
  /**
218
239
  * This method validates the filter property and its value against the defined restrictions
219
240
  * @param filterCriteria it has metadata of the filter property
@@ -267,6 +288,7 @@ export default class ErrorMessageHandler {
267
288
  this.getInvalidOperatorLength() > 0 ||
268
289
  this.nonFilterableTokenLabels.length > 0 ||
269
290
  this.hiddenFilterTokenLabels.length > 0 ||
291
+ this.nonGroupableTokenLabels.length > 0 ||
270
292
  this.invalidSingleItemTokenLabels.length > 0
271
293
  );
272
294
  }