@sapui5/sap.fe.templates 1.113.0 → 1.114.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 (90) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/AnalyticalListPage/manifest.json +1 -1
  4. package/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +3 -2
  5. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  6. package/src/sap/fe/templates/ListReport/ListReportController.controller.js.map +1 -1
  7. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +6 -1
  8. package/src/sap/fe/templates/ListReport/ListReportTemplating-dbg.js +7 -7
  9. package/src/sap/fe/templates/ListReport/ListReportTemplating.js.map +1 -1
  10. package/src/sap/fe/templates/ListReport/ListReportTemplating.ts +8 -6
  11. package/src/sap/fe/templates/ListReport/manifest.json +1 -1
  12. package/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +14 -39
  13. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
  14. package/src/sap/fe/templates/ListReport/overrides/ViewState.js.map +1 -1
  15. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +14 -42
  16. package/src/sap/fe/templates/ListReport/view/fragments/MacroChart.fragment.xml +1 -1
  17. package/src/sap/fe/templates/ObjectPage/ExtensionAPI-dbg.js +19 -6
  18. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +1 -1
  19. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js.map +1 -1
  20. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +19 -9
  21. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -1
  22. package/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +53 -66
  23. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  24. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js.map +1 -1
  25. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +56 -71
  26. package/src/sap/fe/templates/ObjectPage/manifest.json +1 -1
  27. package/src/sap/fe/templates/ObjectPage/overrides/Share-dbg.js +7 -2
  28. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +1 -1
  29. package/src/sap/fe/templates/ObjectPage/overrides/Share.js.map +1 -1
  30. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +5 -1
  31. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +3 -1
  32. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.block-dbg.js +7 -6
  33. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.block.js +1 -1
  34. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.block.js.map +1 -1
  35. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.block.tsx +8 -7
  36. package/src/sap/fe/templates/ObjectPage/view/fragments/MacroChart.fragment.xml +1 -1
  37. package/src/sap/fe/templates/library-dbg.js +1 -1
  38. package/src/sap/fe/templates/library-preload.js +15 -15
  39. package/src/sap/fe/templates/library-preload.js.map +1 -1
  40. package/src/sap/fe/templates/library.js +1 -1
  41. package/src/sap/fe/templates/manifest.json +1 -1
  42. package/src/sap/fe/templates/messagebundle.properties +6 -0
  43. package/src/sap/fe/templates/messagebundle_ar.properties +2 -0
  44. package/src/sap/fe/templates/messagebundle_bg.properties +2 -0
  45. package/src/sap/fe/templates/messagebundle_ca.properties +2 -0
  46. package/src/sap/fe/templates/messagebundle_cs.properties +2 -0
  47. package/src/sap/fe/templates/messagebundle_cy.properties +2 -0
  48. package/src/sap/fe/templates/messagebundle_da.properties +2 -0
  49. package/src/sap/fe/templates/messagebundle_de.properties +3 -1
  50. package/src/sap/fe/templates/messagebundle_el.properties +2 -0
  51. package/src/sap/fe/templates/messagebundle_en.properties +2 -2
  52. package/src/sap/fe/templates/messagebundle_en_GB.properties +2 -0
  53. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +2 -0
  54. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +2 -0
  55. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +2 -0
  56. package/src/sap/fe/templates/messagebundle_es.properties +2 -0
  57. package/src/sap/fe/templates/messagebundle_es_MX.properties +2 -0
  58. package/src/sap/fe/templates/messagebundle_et.properties +2 -0
  59. package/src/sap/fe/templates/messagebundle_fi.properties +2 -0
  60. package/src/sap/fe/templates/messagebundle_fr.properties +2 -0
  61. package/src/sap/fe/templates/messagebundle_fr_CA.properties +2 -0
  62. package/src/sap/fe/templates/messagebundle_hi.properties +2 -0
  63. package/src/sap/fe/templates/messagebundle_hr.properties +2 -0
  64. package/src/sap/fe/templates/messagebundle_hu.properties +2 -0
  65. package/src/sap/fe/templates/messagebundle_id.properties +2 -0
  66. package/src/sap/fe/templates/messagebundle_it.properties +2 -0
  67. package/src/sap/fe/templates/messagebundle_iw.properties +2 -0
  68. package/src/sap/fe/templates/messagebundle_ja.properties +2 -0
  69. package/src/sap/fe/templates/messagebundle_kk.properties +2 -0
  70. package/src/sap/fe/templates/messagebundle_ko.properties +2 -0
  71. package/src/sap/fe/templates/messagebundle_lt.properties +2 -0
  72. package/src/sap/fe/templates/messagebundle_lv.properties +2 -0
  73. package/src/sap/fe/templates/messagebundle_ms.properties +2 -0
  74. package/src/sap/fe/templates/messagebundle_nl.properties +2 -0
  75. package/src/sap/fe/templates/messagebundle_no.properties +2 -0
  76. package/src/sap/fe/templates/messagebundle_pl.properties +2 -0
  77. package/src/sap/fe/templates/messagebundle_pt.properties +2 -0
  78. package/src/sap/fe/templates/messagebundle_pt_PT.properties +2 -0
  79. package/src/sap/fe/templates/messagebundle_ro.properties +2 -0
  80. package/src/sap/fe/templates/messagebundle_ru.properties +2 -0
  81. package/src/sap/fe/templates/messagebundle_sh.properties +2 -0
  82. package/src/sap/fe/templates/messagebundle_sk.properties +2 -0
  83. package/src/sap/fe/templates/messagebundle_sl.properties +2 -0
  84. package/src/sap/fe/templates/messagebundle_sv.properties +2 -0
  85. package/src/sap/fe/templates/messagebundle_th.properties +2 -0
  86. package/src/sap/fe/templates/messagebundle_tr.properties +2 -0
  87. package/src/sap/fe/templates/messagebundle_uk.properties +2 -0
  88. package/src/sap/fe/templates/messagebundle_vi.properties +2 -0
  89. package/src/sap/fe/templates/messagebundle_zh_CN.properties +2 -0
  90. package/src/sap/fe/templates/messagebundle_zh_TW.properties +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.templates",
3
- "version": "1.113.0",
3
+ "version": "1.114.0",
4
4
  "description": "SAPUI5 Library sap.fe.templates",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.113.0</version>
9
+ <version>1.114.0</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.templates</documentation>
12
12
 
@@ -4,7 +4,7 @@
4
4
  "id": "sap.fe.templates.AnalyticalListPage",
5
5
  "type": "component",
6
6
  "applicationVersion": {
7
- "version": "1.113.0"
7
+ "version": "1.114.0"
8
8
  },
9
9
  "title": "Analytical List Page",
10
10
  "tags": {
@@ -635,13 +635,14 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/ActionRu
635
635
  * We disable the filter bar search at the beginning and enable it when view state is set.
636
636
  */;
637
637
  _proto._setInitLoad = function _setInitLoad() {
638
+ var _this$_getPageModel7;
638
639
  // if initLoad is Disabled or Auto, switch off filter bar search temporarily at start
639
640
  if (!this._isInitLoadEnabled()) {
640
641
  this._disableInitLoad();
641
642
  }
642
643
  // set hook for flex for when standard variant is set (at start or by user at runtime)
643
644
  // required to override the user setting 'apply automatically' behaviour if there are no filters
644
- const variantManagementId = ListReportTemplating.getVariantBackReference(this.getView().getViewData(), this._getPageModel());
645
+ const variantManagementId = ListReportTemplating.getVariantBackReference(this.getView().getViewData(), (_this$_getPageModel7 = this._getPageModel()) === null || _this$_getPageModel7 === void 0 ? void 0 : _this$_getPageModel7.getData());
645
646
  const variantManagement = variantManagementId && this.getView().byId(variantManagementId);
646
647
  if (variantManagement) {
647
648
  variantManagement.registerApplyAutomaticallyOnStandardVariant(this._applyAutomaticallyOnStandardVariant.bind(this));
@@ -809,4 +810,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/ActionRu
809
810
  }), _applyDecoratedDescriptor(_class2.prototype, "getExtensionAPI", [_dec11, _dec12], Object.getOwnPropertyDescriptor(_class2.prototype, "getExtensionAPI"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPageReady", [_dec13, _dec14], Object.getOwnPropertyDescriptor(_class2.prototype, "onPageReady"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onViewNeedsRefresh", [_dec15, _dec16], Object.getOwnPropertyDescriptor(_class2.prototype, "onViewNeedsRefresh"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPendingFilters", [_dec17, _dec18], Object.getOwnPropertyDescriptor(_class2.prototype, "onPendingFilters"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAfterClear", [_dec19, _dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "onAfterClear"), _class2.prototype)), _class2)) || _class);
810
811
  return ListReportController;
811
812
  }, false);
812
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiQ29yZUxpYnJhcnkiLCJJbml0aWFsTG9hZE1vZGUiLCJMaXN0UmVwb3J0Q29udHJvbGxlciIsImRlZmluZVVJNUNsYXNzIiwidXNpbmdFeHRlbnNpb24iLCJJbnRlcm5hbFJvdXRpbmciLCJvdmVycmlkZSIsIm9uQWZ0ZXJCaW5kaW5nIiwiZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJfb25BZnRlckJpbmRpbmciLCJJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbiIsImdldEVudGl0eVNldCIsImJhc2UiLCJnZXRDdXJyZW50RW50aXR5U2V0IiwiU2lkZUVmZmVjdHMiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsIlNoYXJlIiwiU2hhcmVPdmVycmlkZXMiLCJWaWV3U3RhdGUiLCJWaWV3U3RhdGVPdmVycmlkZXMiLCJLUElNYW5hZ2VtZW50IiwiUGxhY2Vob2xkZXIiLCJNYXNzRWRpdCIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkFmdGVyIiwiZm9ybWF0dGVycyIsInNldEFMUENvbnRyb2xNZXNzYWdlU3RyaXAiLCJhSWdub3JlZEZpZWxkcyIsImJJc0NoYXJ0Iiwib0FwcGx5U3VwcG9ydGVkIiwic1RleHQiLCJvRmlsdGVyQmFyIiwiX2dldEZpbHRlckJhckNvbnRyb2wiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsImRhdGEiLCJnZXRSZXNvdXJjZU1vZGVsIiwiYklzU2VhcmNoSWdub3JlZCIsImVuYWJsZVNlYXJjaCIsImdldEFMUFRleHQiLCJnZXRUZXh0IiwiaGFuZGxlcnMiLCJvbkZpbHRlclNlYXJjaCIsInRyaWdnZXJTZWFyY2giLCJvbkZpbHRlcnNDaGFuZ2VkIiwib0V2ZW50Iiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvblBlbmRpbmdGaWx0ZXJzIiwiYXBwbGllZEZpbHRlcnNUZXh0IiwiZ2V0QXNzaWduZWRGaWx0ZXJzVGV4dCIsImZpbHRlcnNUZXh0IiwiYXBwbGllZEZpbHRlckJpbmRpbmciLCJiaW5kaW5nUGFyc2VyIiwiYnlJZCIsImJpbmRUZXh0Iiwic2V0VGV4dCIsImdldFBhcmFtZXRlciIsInNldFByb3BlcnR5Iiwib25WYXJpYW50U2VsZWN0ZWQiLCJvVk0iLCJnZXRTb3VyY2UiLCJjdXJyZW50VmFyaWFudEtleSIsIm9NdWx0aU1vZGVDb250cm9sIiwiX2dldE11bHRpTW9kZUNvbnRyb2wiLCJnZXRQYXJlbnQiLCJpc0EiLCJpbnZhbGlkYXRlQ29udGVudCIsInNldEZyZWV6ZUNvbnRlbnQiLCJzZXRUaW1lb3V0IiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiX2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudCIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwib25WYXJpYW50U2F2ZWQiLCJvblNlYXJjaCIsIm9NZGNDaGFydCIsImdldENoYXJ0Q29udHJvbCIsImJIaWRlRHJhZnQiLCJGaWx0ZXJVdGlscyIsImdldEVkaXRTdGF0ZUlzSGlkZURyYWZ0IiwiZ2V0Q29uZGl0aW9ucyIsIl91cGRhdGVBTFBOb3RBcHBsaWNhYmxlRmllbGRzIiwib1BhZ2VJbnRlcm5hbE1vZGVsQ29udGV4dCIsInNUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiZ2V0UHJvcGVydHkiLCJnZXRQYXRoIiwiQ2hhcnQiLCJoYXNQZW5kaW5nQ2hhcnRDaGFuZ2VzIiwiVGFibGUiLCJoYXNQZW5kaW5nVGFibGVDaGFuZ2VzIiwiU3RhdGVVdGlsIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwidGhlbiIsIm9FeHRlcm5hbFN0YXRlIiwiZmlsdGVyQmFyQ29uZGl0aW9ucyIsImZpbHRlciIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJnZXRWaWV3RGF0YSIsImxpdmVNb2RlIiwic3lzdGVtIiwicGhvbmUiLCJvRHluYW1pY1BhZ2UiLCJfZ2V0RHluYW1pY0xpc3RSZXBvcnRDb250cm9sIiwic2V0SGVhZGVyRXhwYW5kZWQiLCJvbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQiLCJvQ29udHJvbGxlciIsInNPdXRib3VuZFRhcmdldCIsIm9Db250ZXh0Iiwic0NyZWF0ZVBhdGgiLCJfaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwib25DaGFydFNlbGVjdGlvbkNoYW5nZWQiLCJnZXRDb250ZW50Iiwib1RhYmxlIiwiX2dldFRhYmxlIiwiYURhdGEiLCJDaGFydFV0aWxzIiwic2V0Q2hhcnRGaWx0ZXJzIiwicmViaW5kIiwib25TZWdtZW50ZWRCdXR0b25QcmVzc2VkIiwic1NlbGVjdGVkS2V5IiwibVBhcmFtZXRlcnMiLCJrZXkiLCJvQ2hhcnQiLCJvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUiLCJvbkFmdGVyUmVuZGVyaW5nIiwiYUl0ZW1zIiwib1NlZ21lbnRlZEJ1dHRvbiIsImdldEl0ZW1zIiwiZm9yRWFjaCIsIm9JdGVtIiwiZ2V0S2V5IiwiZm9jdXMiLCJyZW1vdmVFdmVudERlbGVnYXRlIiwiX2dldFNlZ21lbnRlZEJ1dHRvbiIsImFkZEV2ZW50RGVsZWdhdGUiLCJfdXBkYXRlVGFibGUiLCJfdXBkYXRlQ2hhcnQiLCJIeWJyaWQiLCJvbkZpbHRlcnNTZWdtZW50ZWRCdXR0b25QcmVzc2VkIiwiaXNDb21wYWN0Iiwic2V0VmlzaWJsZSIsIl9nZXRWaXN1YWxGaWx0ZXJCYXJDb250cm9sIiwib25TdGF0ZUNoYW5nZSIsIm9uRHluYW1pY1BhZ2VUaXRsZVN0YXRlQ2hhbmdlZCIsImZpbHRlckJhciIsImdldFNlZ21lbnRlZEJ1dHRvbiIsImV4dGVuc2lvbkFQSSIsIkV4dGVuc2lvbkFQSSIsIm9uSW5pdCIsIlBhZ2VDb250cm9sbGVyIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfaGFzTXVsdGlWaXN1YWxpemF0aW9ucyIsImFscENvbnRlbnRWaWV3IiwiX2dldERlZmF1bHRQYXRoIiwiZGVza3RvcCIsImdldEFwcENvbXBvbmVudCIsImdldFJvdXRlclByb3h5Iiwid2FpdEZvclJvdXRlTWF0Y2hCZWZvcmVOYXZpZ2F0aW9uIiwiX3NldEluaXRMb2FkIiwib25FeGl0IiwiZGVzdHJveSIsImFUYWJsZXMiLCJfZ2V0Q29udHJvbHMiLCJFZGl0U3RhdGUiLCJpc0VkaXRTdGF0ZURpcnR5Iiwib1RhYmxlQmluZGluZyIsImdldFJvd0JpbmRpbmciLCJDb21tb25VdGlscyIsIl9pc0ZjbEVuYWJsZWQiLCJyZWZyZXNoIiwic1VwZGF0ZVRpbWVyIiwiZm5VcGRhdGVUYWJsZUFjdGlvbnMiLCJfdXBkYXRlVGFibGVBY3Rpb25zIiwiZGV0YWNoRGF0YVJlY2VpdmVkIiwiYXR0YWNoRGF0YVJlY2VpdmVkIiwic2V0RWRpdFN0YXRlUHJvY2Vzc2VkIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJ2aWV3SWQiLCJnZXRJZCIsInBhZ2VSZWFkeSIsIndhaXRGb3IiLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJhcHBseUFwcFN0YXRlIiwib25CZWZvcmVSZW5kZXJpbmciLCJvblBhZ2VSZWFkeSIsImZvcmNlRm9jdXMiLCJfc2V0SW5pdGlhbEZvY3VzIiwiZ2V0U2hlbGxTZXJ2aWNlcyIsInNldEJhY2tOYXZpZ2F0aW9uIiwidW5kZWZpbmVkIiwib25WaWV3TmVlZHNSZWZyZXNoIiwic2xpY2UiLCJvbkFmdGVyQ2xlYXIiLCJhSUJOQWN0aW9ucyIsImdldElCTkFjdGlvbnMiLCJvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwIiwiSlNPTiIsInBhcnNlIiwiQ29tbW9uSGVscGVyIiwicGFyc2VDdXN0b21EYXRhIiwiRGVsZWdhdGVVdGlsIiwiZ2V0Q3VzdG9tRGF0YSIsImFTZWxlY3RlZENvbnRleHRzIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsIkRlbGV0ZUhlbHBlciIsInVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzIiwiQWN0aW9uUnVudGltZSIsInNldEFjdGlvbkVuYWJsZW1lbnQiLCJ1cGRhdGVEYXRhRmllbGRGb3JJQk5CdXR0b25zVmlzaWJpbGl0eSIsIl9zY3JvbGxUYWJsZXNUb1JvdyIsInNSb3dQYXRoIiwiVGFibGVTY3JvbGxlciIsInNjcm9sbFRhYmxlVG9Sb3ciLCJkeW5hbWljUGFnZSIsImlzSGVhZGVyRXhwYW5kZWQiLCJnZXRIZWFkZXJFeHBhbmRlZCIsImdldFNob3dNZXNzYWdlcyIsInNldFNob3dNZXNzYWdlcyIsImZpcnN0RW1wdHlNYW5kYXRvcnlGaWVsZCIsImdldEZpbHRlckl0ZW1zIiwiZmluZCIsIm9GaWx0ZXJJdGVtIiwiZ2V0UmVxdWlyZWQiLCJfaXNJbml0TG9hZEVuYWJsZWQiLCJfZ2V0RmlsdGVyQmFyQ29udHJvbElkIiwiZm9jdXNSb3ciLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJvTWFuaWZlc3RFbnRyeSIsImdldE1hbmlmZXN0RW50cnkiLCJ0aXRsZSIsInN1YnRpdGxlIiwic3ViVGl0bGUiLCJpbnRlbnQiLCJpY29uIiwiX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbElkIiwiX2dldEFkYXB0YXRpb25GaWx0ZXJCYXJDb250cm9sIiwiYWRhcHRhdGlvbkZpbHRlckJhciIsImdldEluYnVpbHRGaWx0ZXIiLCJzQ29udHJvbCIsInNTZWdtZW50ZWRCdXR0b25JZCIsIl9nZXRDb250cm9sRnJvbVBhZ2VNb2RlbFByb3BlcnR5Iiwic1BhdGgiLCJjb250cm9sSWQiLCJfZ2V0UGFnZU1vZGVsIiwic1Zpc3VhbEZpbHRlckJhcklkIiwiU3RhYmxlSWRIZWxwZXIiLCJnZW5lcmF0ZSIsIl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCIsIl9pc011bHRpTW9kZSIsIm9Db250cm9sIiwiZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2wiLCJjb250ZW50Iiwic0tleSIsImFDb250cm9scyIsIm9UYWJNdWx0aU1vZGUiLCJpbmRleE9mIiwicHVzaCIsImRlZmF1bHRQYXRoIiwiTGlzdFJlcG9ydFRlbXBsYXRpbmciLCJnZXREZWZhdWx0UGF0aCIsImluaXRMb2FkTW9kZSIsImluaXRpYWxMb2FkIiwiRW5hYmxlZCIsIl9kaXNhYmxlSW5pdExvYWQiLCJzZXRTdXNwZW5kU2VsZWN0aW9uIiwiX2FwcGx5QXV0b21hdGljYWxseU9uU3RhbmRhcmRWYXJpYW50IiwidmFyaWFudE1hbmFnZW1lbnRJZCIsImdldFZhcmlhbnRCYWNrUmVmZXJlbmNlIiwidmFyaWFudE1hbmFnZW1lbnQiLCJyZWdpc3RlckFwcGx5QXV0b21hdGljYWxseU9uU3RhbmRhcmRWYXJpYW50IiwiYmluZCIsIl9zZXRTaGFyZU1vZGVsIiwiZm5HZXRVc2VyIiwiT2JqZWN0UGF0aCIsImdldCIsIm9TaGFyZUluZm8iLCJib29rbWFya1RpdGxlIiwiZG9jdW1lbnQiLCJib29rbWFya0N1c3RvbVVybCIsInNIYXNoIiwiaGFzaGVyIiwiZ2V0SGFzaCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImlzU2hhcmVJbkphbUFjdGl2ZSIsImlzSmFtQWN0aXZlIiwib1RlbXBsYXRlUHJpdmF0ZU1vZGVsIiwiZ2V0T3duZXJDb21wb25lbnQiLCJnZXRNb2RlbCIsIm1DYWNoZSIsImlnbm9yZWRGaWVsZHMiLCJhQ2hhcnRzIiwic0NoYXJ0RW50aXR5UGF0aCIsInNDaGFydEVudGl0eVNldCIsInNDYWNoZUtleSIsImdldE5vdEFwcGxpY2FibGVGaWx0ZXJzIiwiX2lzRmlsdGVyQmFySGlkZGVuIiwiaGlkZUZpbHRlckJhciIsIlZhcmlhbnRNYW5hZ2VtZW50IiwidmFyaWFudHMiLCJnZXRWYXJpYW50cyIsImN1cnJlbnRWYXJpYW50IiwidmFyaWFudCIsImV4ZWN1dGVPblNlbGVjdCIsIkF1dG8iLCJnZXRTdGFuZGFyZFZhcmlhbnRLZXkiLCJnZXRDdXJyZW50VmFyaWFudEtleSIsIm9Db25kaXRpb25zIiwic3RhcnRzV2l0aCIsInN0YW5kYXJkVmFyaWFudCIsImlzVGFibGVCb3VuZCIsIm9Jbm5lckNoYXJ0IiwiZ2V0Q29udHJvbERlbGVnYXRlIiwiX2dldENoYXJ0IiwiaXNCb3VuZCIsImdldEJpbmRpbmdJbmZvIiwic0VudGl0eVNldCIsImVudGl0eVNldCIsInNldE5vRGF0YSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBPYmplY3RQYXRoIGZyb20gXCJzYXAvYmFzZS91dGlsL09iamVjdFBhdGhcIjtcbmltcG9ydCB0eXBlIER5bmFtaWNQYWdlIGZyb20gXCJzYXAvZi9EeW5hbWljUGFnZVwiO1xuaW1wb3J0IEFjdGlvblJ1bnRpbWUgZnJvbSBcInNhcC9mZS9jb3JlL0FjdGlvblJ1bnRpbWVcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgS1BJTWFuYWdlbWVudCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvS1BJTWFuYWdlbWVudFwiO1xuaW1wb3J0IE1hc3NFZGl0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9NYXNzRWRpdFwiO1xuaW1wb3J0IFBsYWNlaG9sZGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9QbGFjZWhvbGRlclwiO1xuaW1wb3J0IFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0IFZpZXdTdGF0ZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXJCYXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0ZpbHRlckJhclwiO1xuaW1wb3J0IHtcblx0ZGVmaW5lVUk1Q2xhc3MsXG5cdGV4dGVuc2libGUsXG5cdGZpbmFsRXh0ZW5zaW9uLFxuXHRwcml2YXRlRXh0ZW5zaW9uLFxuXHRwdWJsaWNFeHRlbnNpb24sXG5cdHVzaW5nRXh0ZW5zaW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IERlbGV0ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9EZWxldGVIZWxwZXJcIjtcbmltcG9ydCBFZGl0U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRWRpdFN0YXRlXCI7XG5pbXBvcnQgTWVzc2FnZVN0cmlwIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCAqIGFzIFN0YWJsZUlkSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgQ29yZUxpYnJhcnkgZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDaGFydFV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0VXRpbHNcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IE11bHRpcGxlTW9kZUNvbnRyb2wgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9jb250cm9scy9NdWx0aXBsZU1vZGVDb250cm9sXCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgVGFibGVTY3JvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9UYWJsZVNjcm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBTZWdtZW50ZWRCdXR0b24gZnJvbSBcInNhcC9tL1NlZ21lbnRlZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IHsgYmluZGluZ1BhcnNlciB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHsgc3lzdGVtIH0gZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgaGFzaGVyIGZyb20gXCJzYXAvdWkvdGhpcmRwYXJ0eS9oYXNoZXJcIjtcbmltcG9ydCAqIGFzIExpc3RSZXBvcnRUZW1wbGF0aW5nIGZyb20gXCIuL0xpc3RSZXBvcnRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGUgZnJvbSBcIi4vb3ZlcnJpZGVzL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IFNoYXJlT3ZlcnJpZGVzIGZyb20gXCIuL292ZXJyaWRlcy9TaGFyZVwiO1xuaW1wb3J0IFZpZXdTdGF0ZU92ZXJyaWRlcyBmcm9tIFwiLi9vdmVycmlkZXMvVmlld1N0YXRlXCI7XG5cbmNvbnN0IFRlbXBsYXRlQ29udGVudFZpZXcgPSBDb3JlTGlicmFyeS5UZW1wbGF0ZUNvbnRlbnRWaWV3LFxuXHRJbml0aWFsTG9hZE1vZGUgPSBDb3JlTGlicmFyeS5Jbml0aWFsTG9hZE1vZGU7XG5cbi8qKlxuICogQ29udHJvbGxlciBjbGFzcyBmb3IgdGhlIGxpc3QgcmVwb3J0IHBhZ2UsIHVzZWQgaW5zaWRlIGFuIFNBUCBGaW9yaSBlbGVtZW50cyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydC5MaXN0UmVwb3J0Q29udHJvbGxlclwiKVxuY2xhc3MgTGlzdFJlcG9ydENvbnRyb2xsZXIgZXh0ZW5kcyBQYWdlQ29udHJvbGxlciB7XG5cdEB1c2luZ0V4dGVuc2lvbihcblx0XHRJbnRlcm5hbFJvdXRpbmcub3ZlcnJpZGUoe1xuXHRcdFx0b25BZnRlckJpbmRpbmc6IGZ1bmN0aW9uICh0aGlzOiBJbnRlcm5hbFJvdXRpbmcpIHtcblx0XHRcdFx0KHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcikuX29uQWZ0ZXJCaW5kaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSlcblx0KVxuXHRfcm91dGluZyE6IEludGVybmFsUm91dGluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oXG5cdFx0SW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24ub3ZlcnJpZGUoe1xuXHRcdFx0Z2V0RW50aXR5U2V0OiBmdW5jdGlvbiAodGhpczogSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0cmV0dXJuICh0aGlzLmJhc2UgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLmdldEN1cnJlbnRFbnRpdHlTZXQoKTtcblx0XHRcdH1cblx0XHR9KVxuXHQpXG5cdF9pbnRlbnRCYXNlZE5hdmlnYXRpb24hOiBJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2lkZUVmZmVjdHMpXG5cdHNpZGVFZmZlY3RzITogU2lkZUVmZmVjdHM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVudEJhc2VkTmF2aWdhdGlvbi5vdmVycmlkZShJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSkpXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbiE6IEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2hhcmUub3ZlcnJpZGUoU2hhcmVPdmVycmlkZXMpKVxuXHRzaGFyZSE6IFNoYXJlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihWaWV3U3RhdGUub3ZlcnJpZGUoVmlld1N0YXRlT3ZlcnJpZGVzKSlcblx0dmlld1N0YXRlITogVmlld1N0YXRlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihLUElNYW5hZ2VtZW50KVxuXHRrcGlNYW5hZ2VtZW50ITogS1BJTWFuYWdlbWVudDtcblxuXHRAdXNpbmdFeHRlbnNpb24oUGxhY2Vob2xkZXIpXG5cdHBsYWNlaG9sZGVyITogUGxhY2Vob2xkZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKE1hc3NFZGl0KVxuXHRtYXNzRWRpdCE6IE1hc3NFZGl0O1xuXG5cdHByb3RlY3RlZCBleHRlbnNpb25BUEk/OiBFeHRlbnNpb25BUEk7XG5cblx0cHJpdmF0ZSBmaWx0ZXJCYXJDb25kaXRpb25zPzogYW55O1xuXG5cdHByaXZhdGUgc1VwZGF0ZVRpbWVyPzogYW55O1xuXG5cdHByaXZhdGUgaGFzUGVuZGluZ0NoYXJ0Q2hhbmdlcz86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBoYXNQZW5kaW5nVGFibGVDaGFuZ2VzPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogR2V0IHRoZSBleHRlbnNpb24gQVBJIGZvciB0aGUgY3VycmVudCBwYWdlLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gQVBJLlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGdldEV4dGVuc2lvbkFQSSgpOiBFeHRlbnNpb25BUEkge1xuXHRcdGlmICghdGhpcy5leHRlbnNpb25BUEkpIHtcblx0XHRcdHRoaXMuZXh0ZW5zaW9uQVBJID0gbmV3IEV4dGVuc2lvbkFQSSh0aGlzKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0b25Jbml0KCkge1xuXHRcdFBhZ2VDb250cm9sbGVyLnByb3RvdHlwZS5vbkluaXQuYXBwbHkodGhpcyk7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhhc1BlbmRpbmdGaWx0ZXJzXCIsIHRydWUpO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhpZGVEcmFmdEluZm9cIiwgZmFsc2UpO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInVvbVwiLCB7fSk7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwic2NhbGVmYWN0b3JcIiwge30pO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInNjYWxlZmFjdG9yTnVtYmVyXCIsIHt9KTtcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjdXJyZW5jeVwiLCB7fSk7XG5cblx0XHRpZiAodGhpcy5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRsZXQgYWxwQ29udGVudFZpZXcgPSB0aGlzLl9nZXREZWZhdWx0UGF0aCgpO1xuXHRcdFx0aWYgKCFzeXN0ZW0uZGVza3RvcCAmJiBhbHBDb250ZW50VmlldyA9PT0gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQpIHtcblx0XHRcdFx0YWxwQ29udGVudFZpZXcgPSBUZW1wbGF0ZUNvbnRlbnRWaWV3LkNoYXJ0O1xuXHRcdFx0fVxuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiYWxwQ29udGVudFZpZXdcIiwgYWxwQ29udGVudFZpZXcpO1xuXHRcdH1cblxuXHRcdC8vIFN0b3JlIGNvbmRpdGlvbnMgZnJvbSBmaWx0ZXIgYmFyXG5cdFx0Ly8gdGhpcyBpcyBsYXRlciB1c2VkIGJlZm9yZSBuYXZpZ2F0aW9uIHRvIGdldCBjb25kaXRpb25zIGFwcGxpZWQgb24gdGhlIGZpbHRlciBiYXJcblx0XHR0aGlzLmZpbHRlckJhckNvbmRpdGlvbnMgPSB7fTtcblxuXHRcdC8vIEFzIEFwcFN0YXRlSGFuZGxlci5hcHBseUFwcFN0YXRlIHRyaWdnZXJzIGEgbmF2aWdhdGlvbiB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBpdCB3aWxsXG5cdFx0Ly8gaGFwcGVuIGFmdGVyIHRoZSByb3V0ZU1hdGNoIGV2ZW50IGhhcyBiZWVuIHByb2Nlc3NlZCAob3RoZXJ3aXNlIHRoZSByb3V0ZXIgZ2V0cyBicm9rZW4pXG5cdFx0dGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRSb3V0ZXJQcm94eSgpLndhaXRGb3JSb3V0ZU1hdGNoQmVmb3JlTmF2aWdhdGlvbigpO1xuXG5cdFx0Ly8gQ29uZmlndXJlIHRoZSBpbml0aWFsIGxvYWQgc2V0dGluZ3Ncblx0XHR0aGlzLl9zZXRJbml0TG9hZCgpO1xuXHR9XG5cblx0b25FeGl0KCkge1xuXHRcdGRlbGV0ZSB0aGlzLmZpbHRlckJhckNvbmRpdGlvbnM7XG5cdFx0aWYgKHRoaXMuZXh0ZW5zaW9uQVBJKSB7XG5cdFx0XHR0aGlzLmV4dGVuc2lvbkFQSS5kZXN0cm95KCk7XG5cdFx0fVxuXHRcdGRlbGV0ZSB0aGlzLmV4dGVuc2lvbkFQSTtcblx0fVxuXG5cdF9vbkFmdGVyQmluZGluZygpIHtcblx0XHRjb25zdCBhVGFibGVzID0gdGhpcy5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKTtcblx0XHRpZiAoRWRpdFN0YXRlLmlzRWRpdFN0YXRlRGlydHkoKSkge1xuXHRcdFx0dGhpcy5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpPy5pbnZhbGlkYXRlQ29udGVudCgpO1xuXHRcdFx0Y29uc3Qgb1RhYmxlQmluZGluZyA9IHRoaXMuX2dldFRhYmxlKCk/LmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGlmIChvVGFibGVCaW5kaW5nKSB7XG5cdFx0XHRcdGlmIChDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRWaWV3KCkpLl9pc0ZjbEVuYWJsZWQoKSkge1xuXHRcdFx0XHRcdC8vIHRoZXJlIGlzIGFuIGlzc3VlIGlmIHdlIHVzZSBhIHRpbWVvdXQgd2l0aCBhIGtlcHQgYWxpdmUgY29udGV4dCB1c2VkIG9uIGFub3RoZXIgcGFnZVxuXHRcdFx0XHRcdG9UYWJsZUJpbmRpbmcucmVmcmVzaCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmICghdGhpcy5zVXBkYXRlVGltZXIpIHtcblx0XHRcdFx0XHRcdHRoaXMuc1VwZGF0ZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG9UYWJsZUJpbmRpbmcucmVmcmVzaCgpO1xuXHRcdFx0XHRcdFx0XHRkZWxldGUgdGhpcy5zVXBkYXRlVGltZXI7XG5cdFx0XHRcdFx0XHR9LCAwKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBVcGRhdGUgYWN0aW9uIGVuYWJsZW1lbnQgYW5kIHZpc2liaWxpdHkgdXBvbiB0YWJsZSBkYXRhIHVwZGF0ZS5cblx0XHRcdFx0XHRjb25zdCBmblVwZGF0ZVRhYmxlQWN0aW9ucyA9ICgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuX3VwZGF0ZVRhYmxlQWN0aW9ucyhhVGFibGVzKTtcblx0XHRcdFx0XHRcdG9UYWJsZUJpbmRpbmcuZGV0YWNoRGF0YVJlY2VpdmVkKGZuVXBkYXRlVGFibGVBY3Rpb25zKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdG9UYWJsZUJpbmRpbmcuYXR0YWNoRGF0YVJlY2VpdmVkKGZuVXBkYXRlVGFibGVBY3Rpb25zKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0RWRpdFN0YXRlLnNldEVkaXRTdGF0ZVByb2Nlc3NlZCgpO1xuXHRcdH1cblxuXHRcdGlmICghdGhpcy5zVXBkYXRlVGltZXIpIHtcblx0XHRcdHRoaXMuX3VwZGF0ZVRhYmxlQWN0aW9ucyhhVGFibGVzKTtcblx0XHR9XG5cblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0aWYgKCFpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcImluaXRpYWxWYXJpYW50QXBwbGllZFwiKSkge1xuXHRcdFx0Y29uc3Qgdmlld0lkID0gdGhpcy5nZXRWaWV3KCkuZ2V0SWQoKTtcblx0XHRcdHRoaXMucGFnZVJlYWR5LndhaXRGb3IodGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRBcHBTdGF0ZUhhbmRsZXIoKS5hcHBseUFwcFN0YXRlKHZpZXdJZCwgdGhpcy5nZXRWaWV3KCkpKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaW5pdGlhbFZhcmlhbnRBcHBsaWVkXCIsIHRydWUpO1xuXHRcdH1cblx0fVxuXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCkge1xuXHRcdFBhZ2VDb250cm9sbGVyLnByb3RvdHlwZS5vbkJlZm9yZVJlbmRlcmluZy5hcHBseSh0aGlzKTtcblx0fVxuXG5cdGZvcm1hdHRlcnMgPSB7XG5cdFx0c2V0QUxQQ29udHJvbE1lc3NhZ2VTdHJpcCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgYUlnbm9yZWRGaWVsZHM6IGFueVtdLCBiSXNDaGFydDogYW55LCBvQXBwbHlTdXBwb3J0ZWQ/OiBhbnkpIHtcblx0XHRcdGxldCBzVGV4dCA9IFwiXCI7XG5cdFx0XHRiSXNDaGFydCA9IGJJc0NoYXJ0ID09PSBcInRydWVcIiB8fCBiSXNDaGFydCA9PT0gdHJ1ZTtcblx0XHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHRpZiAob0ZpbHRlckJhciAmJiBBcnJheS5pc0FycmF5KGFJZ25vcmVkRmllbGRzKSAmJiBhSWdub3JlZEZpZWxkcy5sZW5ndGggPiAwICYmIGJJc0NoYXJ0KSB7XG5cdFx0XHRcdGNvbnN0IGFJZ25vcmVkTGFiZWxzID0gTWVzc2FnZVN0cmlwLmdldExhYmVscyhcblx0XHRcdFx0XHRhSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0XHRvRmlsdGVyQmFyLmRhdGEoXCJlbnRpdHlUeXBlXCIpLFxuXHRcdFx0XHRcdG9GaWx0ZXJCYXIsXG5cdFx0XHRcdFx0Z2V0UmVzb3VyY2VNb2RlbChvRmlsdGVyQmFyKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBiSXNTZWFyY2hJZ25vcmVkID0gIW9BcHBseVN1cHBvcnRlZC5lbmFibGVTZWFyY2g7XG5cdFx0XHRcdHNUZXh0ID0gYklzQ2hhcnRcblx0XHRcdFx0XHQ/IE1lc3NhZ2VTdHJpcC5nZXRBTFBUZXh0KGFJZ25vcmVkTGFiZWxzLCBvRmlsdGVyQmFyLCBiSXNTZWFyY2hJZ25vcmVkKVxuXHRcdFx0XHRcdDogTWVzc2FnZVN0cmlwLmdldFRleHQoYUlnbm9yZWRMYWJlbHMsIG9GaWx0ZXJCYXIsIFwiXCIpO1xuXHRcdFx0XHRyZXR1cm4gc1RleHQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdG9uUGFnZVJlYWR5KG1QYXJhbWV0ZXJzOiBhbnkpIHtcblx0XHRpZiAobVBhcmFtZXRlcnMuZm9yY2VGb2N1cykge1xuXHRcdFx0dGhpcy5fc2V0SW5pdGlhbEZvY3VzKCk7XG5cdFx0fVxuXHRcdC8vIFJlbW92ZSB0aGUgaGFuZGxlciBvbiBiYWNrIG5hdmlnYXRpb24gdGhhdCBkaXNwbGF5cyBEcmFmdCBjb25maXJtYXRpb25cblx0XHR0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldFNoZWxsU2VydmljZXMoKS5zZXRCYWNrTmF2aWdhdGlvbih1bmRlZmluZWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCBjYWxsZWQgd2hlbiB0aGUgY29udGVudCBvZiBhIGN1c3RvbSB2aWV3IHVzZWQgaW4gYSBsaXN0IHJlcG9ydCBuZWVkcyB0byBiZSByZWZyZXNoZWQuXG5cdCAqIFRoaXMgaGFwcGVucyBlaXRoZXIgd2hlbiB0aGVyZSBpcyBhIGNoYW5nZSBvbiB0aGUgRmlsdGVyQmFyIGFuZCB0aGUgc2VhcmNoIGlzIHRyaWdnZXJlZCxcblx0ICogb3Igd2hlbiBhIHRhYiB3aXRoIGN1c3RvbSBjb250ZW50IGlzIHNlbGVjdGVkLlxuXHQgKiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGluIGNhc2Ugb2YgY3VzdG9taXphdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIG1QYXJhbWV0ZXJzIE1hcCBjb250YWluaW5nIHRoZSBmaWx0ZXIgY29uZGl0aW9ucyBvZiB0aGUgRmlsdGVyQmFyLCB0aGUgY3VycmVudFRhYklEXG5cdCAqIGFuZCB0aGUgdmlldyByZWZyZXNoIGNhdXNlICh0YWJDaGFuZ2VkIG9yIHNlYXJjaCkuXG5cdCAqIFRoZSBtYXAgbG9va3MgbGlrZSB0aGlzOlxuXHQgKiA8Y29kZT48cHJlPlxuXHQgKiBcdHtcblx0ICogXHRcdGZpbHRlckNvbmRpdGlvbnM6IHtcblx0ICogXHRcdFx0Q291bnRyeTogW1xuXHQgKiBcdFx0XHRcdHtcblx0ICogXHRcdFx0XHRcdG9wZXJhdG9yOiBcIkVRXCJcblx0ICpcdFx0XHRcdFx0dmFsaWRhdGVkOiBcIk5vdFZhbGlkYXRlZFwiXG5cdCAqXHRcdFx0XHRcdHZhbHVlczogW1wiR2VybWFueVwiLCAuLi5dXG5cdCAqIFx0XHRcdFx0fSxcblx0ICogXHRcdFx0XHQuLi5cblx0ICogXHRcdFx0XVxuXHQgKiBcdFx0XHQuLi5cblx0ICogXHRcdH0sXG5cdCAqXHRcdGN1cnJlbnRUYWJJZDogXCJmZTo6Q3VzdG9tVGFiOjp0YWIxXCIsXG5cdCAqXHRcdHJlZnJlc2hDYXVzZTogXCJ0YWJDaGFuZ2VkXCIgfCBcInNlYXJjaFwiXG5cdCAqXHR9XG5cdCAqIDwvcHJlPjwvY29kZT5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdG9uVmlld05lZWRzUmVmcmVzaChtUGFyYW1ldGVyczogYW55KSB7XG5cdFx0LyogVG8gYmUgb3ZlcnJpZGVuICovXG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIGNhbGxlZCB3aGVuIGEgZmlsdGVyIG9yIHNlYXJjaCB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGluIHRoZSBGaWx0ZXJCYXIsXG5cdCAqIGJ1dCBoYXMgbm90IGJlZW4gdmFsaWRhdGVkIHlldCBieSB0aGUgZW5kIHVzZXIgKHdpdGggdGhlICdHbycgb3IgJ1NlYXJjaCcgYnV0dG9uKS5cblx0ICogVHlwaWNhbGx5LCB0aGUgY29udGVudCBvZiB0aGUgY3VycmVudCB0YWIgaXMgZ3JleWVkIG91dCB1bnRpbCB0aGUgZmlsdGVycyBhcmUgdmFsaWRhdGVkLlxuXHQgKiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGluIGNhc2Ugb2YgY3VzdG9taXphdGlvbi5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHRvblBlbmRpbmdGaWx0ZXJzKCkge1xuXHRcdC8qIFRvIGJlIG92ZXJyaWRlbiAqL1xuXHR9XG5cblx0Z2V0Q3VycmVudEVudGl0eVNldCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0VGFibGUoKT8uZGF0YShcInRhcmdldENvbGxlY3Rpb25QYXRoXCIpLnNsaWNlKDEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCBjYWxsZWQgd2hlbiB0aGUgJ0NsZWFyJyBidXR0b24gb24gdGhlIEZpbHRlckJhciBpcyBwcmVzc2VkLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdG9uQWZ0ZXJDbGVhcigpIHtcblx0XHQvKiBUbyBiZSBvdmVycmlkZW4gKi9cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIG1ldGhvZCBpbml0aWF0ZXMgdGhlIHVwZGF0ZSBvZiB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgRGF0YUZpZWxkRm9yQWN0aW9uIGFuZCB0aGUgdmlzaWJsZSBzdGF0ZSBvZiB0aGUgRGF0YUZpZWxkRm9ySUJOIGJ1dHRvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSBhVGFibGVzIEFycmF5IG9mIHRhYmxlcyBpbiB0aGUgbGlzdCByZXBvcnRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF91cGRhdGVUYWJsZUFjdGlvbnMoYVRhYmxlczogYW55KSB7XG5cdFx0bGV0IGFJQk5BY3Rpb25zOiBhbnlbXSA9IFtdO1xuXHRcdGFUYWJsZXMuZm9yRWFjaChmdW5jdGlvbiAob1RhYmxlOiBhbnkpIHtcblx0XHRcdGFJQk5BY3Rpb25zID0gQ29tbW9uVXRpbHMuZ2V0SUJOQWN0aW9ucyhvVGFibGUsIGFJQk5BY3Rpb25zKTtcblx0XHRcdC8vIFVwZGF0ZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgRGF0YUZpZWxkRm9yQWN0aW9uIGJ1dHRvbnMgb24gdGFibGUgdG9vbGJhclxuXHRcdFx0Ly8gVGhlIHNhbWUgaXMgYWxzbyBwZXJmb3JtZWQgb24gVGFibGUgc2VsZWN0aW9uQ2hhbmdlIGV2ZW50XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSxcblx0XHRcdFx0b0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcCA9IEpTT04ucGFyc2UoXG5cdFx0XHRcdFx0Q29tbW9uSGVscGVyLnBhcnNlQ3VzdG9tRGF0YShEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YShvVGFibGUsIFwib3BlcmF0aW9uQXZhaWxhYmxlTWFwXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRhU2VsZWN0ZWRDb250ZXh0cyA9IG9UYWJsZS5nZXRTZWxlY3RlZENvbnRleHRzKCk7XG5cblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInNlbGVjdGVkQ29udGV4dHNcIiwgYVNlbGVjdGVkQ29udGV4dHMpO1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwibnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCIsIGFTZWxlY3RlZENvbnRleHRzLmxlbmd0aCk7XG5cdFx0XHQvLyBSZWZyZXNoIGVuYWJsZW1lbnQgb2YgZGVsZXRlIGJ1dHRvblxuXHRcdFx0RGVsZXRlSGVscGVyLnVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgYVNlbGVjdGVkQ29udGV4dHMpO1xuXG5cdFx0XHRBY3Rpb25SdW50aW1lLnNldEFjdGlvbkVuYWJsZW1lbnQob0ludGVybmFsTW9kZWxDb250ZXh0LCBvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwLCBhU2VsZWN0ZWRDb250ZXh0cywgXCJ0YWJsZVwiKTtcblx0XHR9KTtcblx0XHRDb21tb25VdGlscy51cGRhdGVEYXRhRmllbGRGb3JJQk5CdXR0b25zVmlzaWJpbGl0eShhSUJOQWN0aW9ucywgdGhpcy5nZXRWaWV3KCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIHNjcm9sbHMgdG8gYSBzcGVjaWZpYyByb3cgb24gYWxsIHRoZSBhdmFpbGFibGUgdGFibGVzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0Lkxpc3RSZXBvcnRDb250cm9sbGVyLmNvbnRyb2xsZXIjX3Njcm9sbFRhYmxlc1RvUm93XG5cdCAqIEBwYXJhbSBzUm93UGF0aCBUaGUgcGF0aCBvZiB0aGUgdGFibGUgcm93IGNvbnRleHQgdG8gYmUgc2Nyb2xsZWQgdG9cblx0ICovXG5cdF9zY3JvbGxUYWJsZXNUb1JvdyhzUm93UGF0aDogc3RyaW5nKSB7XG5cdFx0dGhpcy5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKS5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0VGFibGVTY3JvbGxlci5zY3JvbGxUYWJsZVRvUm93KG9UYWJsZSwgc1Jvd1BhdGgpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGluaXRpYWwgZm9jdXMgaW4gYSBsaXN0IHJlcG9ydCBiYXNlZCBvbiB0aGUgVXNlciBFeHBlcmllbmNlIGd1aWRlbGluZXMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlciNfc2V0SW5pdGlhbEZvY3VzXG5cdCAqL1xuXHRfc2V0SW5pdGlhbEZvY3VzKCkge1xuXHRcdGNvbnN0IGR5bmFtaWNQYWdlID0gdGhpcy5fZ2V0RHluYW1pY0xpc3RSZXBvcnRDb250cm9sKCksXG5cdFx0XHRpc0hlYWRlckV4cGFuZGVkID0gZHluYW1pY1BhZ2UuZ2V0SGVhZGVyRXhwYW5kZWQoKSxcblx0XHRcdGZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKSBhcyBhbnk7XG5cdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0Ly9FbmFibGluZyBtYW5kYXRvcnkgZmlsdGVyIGZpZWxkcyBtZXNzYWdlIGRpYWxvZ1xuXHRcdFx0aWYgKCFmaWx0ZXJCYXIuZ2V0U2hvd01lc3NhZ2VzKCkpIHtcblx0XHRcdFx0ZmlsdGVyQmFyLnNldFNob3dNZXNzYWdlcyh0cnVlKTtcblx0XHRcdH1cblx0XHRcdGlmIChpc0hlYWRlckV4cGFuZGVkKSB7XG5cdFx0XHRcdGNvbnN0IGZpcnN0RW1wdHlNYW5kYXRvcnlGaWVsZCA9IGZpbHRlckJhci5nZXRGaWx0ZXJJdGVtcygpLmZpbmQoZnVuY3Rpb24gKG9GaWx0ZXJJdGVtOiBhbnkpIHtcblx0XHRcdFx0XHRyZXR1cm4gb0ZpbHRlckl0ZW0uZ2V0UmVxdWlyZWQoKSAmJiBvRmlsdGVySXRlbS5nZXRDb25kaXRpb25zKCkubGVuZ3RoID09PSAwO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly9Gb2N1c2luZyBvbiB0aGUgZmlyc3QgZW1wdHkgbWFuZGF0b3J5IGZpbHRlciBmaWVsZCwgb3Igb24gdGhlIGZpcnN0IGZpbHRlciBmaWVsZCBpZiB0aGUgdGFibGUgZGF0YSBpcyBsb2FkZWRcblx0XHRcdFx0aWYgKGZpcnN0RW1wdHlNYW5kYXRvcnlGaWVsZCkge1xuXHRcdFx0XHRcdGZpcnN0RW1wdHlNYW5kYXRvcnlGaWVsZC5mb2N1cygpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuX2lzSW5pdExvYWRFbmFibGVkKCkgJiYgZmlsdGVyQmFyLmdldEZpbHRlckl0ZW1zKCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdC8vQkNQOiAyMzgwMDA4NDA2IEFkZCBjaGVjayBmb3IgYXZhaWxhYmxlIGZpbHRlckl0ZW1zXG5cdFx0XHRcdFx0ZmlsdGVyQmFyLmdldEZpbHRlckl0ZW1zKClbMF0uZm9jdXMoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvL0ZvY3VzaW5nIG9uIHRoZSBHbyBidXR0b25cblx0XHRcdFx0XHR0aGlzLmdldFZpZXcoKS5ieUlkKGAke3RoaXMuX2dldEZpbHRlckJhckNvbnRyb2xJZCgpfS1idG5TZWFyY2hgKT8uZm9jdXMoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh0aGlzLl9pc0luaXRMb2FkRW5hYmxlZCgpKSB7XG5cdFx0XHRcdHRoaXMuX2dldFRhYmxlKClcblx0XHRcdFx0XHQ/LmZvY3VzUm93KDApXG5cdFx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBzZXR0aW5nIGluaXRpYWwgZm9jdXMgb24gdGhlIHRhYmxlIFwiLCBlcnJvcik7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2dldFRhYmxlKClcblx0XHRcdFx0Py5mb2N1c1JvdygwKVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBzZXR0aW5nIGluaXRpYWwgZm9jdXMgb24gdGhlIHRhYmxlIFwiLCBlcnJvcik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpIHtcblx0XHRjb25zdCBvTWFuaWZlc3RFbnRyeSA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5hcHBcIik7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRpdGxlOiBvTWFuaWZlc3RFbnRyeS50aXRsZSxcblx0XHRcdHN1YnRpdGxlOiBvTWFuaWZlc3RFbnRyeS5zdWJUaXRsZSB8fCBcIlwiLFxuXHRcdFx0aW50ZW50OiBcIlwiLFxuXHRcdFx0aWNvbjogXCJcIlxuXHRcdH07XG5cdH1cblxuXHRfZ2V0RmlsdGVyQmFyQ29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuYnlJZCh0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sSWQoKSkgYXMgRmlsdGVyQmFyO1xuXHR9XG5cblx0X2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuYnlJZCh0aGlzLl9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2xJZCgpKSBhcyBEeW5hbWljUGFnZTtcblx0fVxuXG5cdF9nZXRBZGFwdGF0aW9uRmlsdGVyQmFyQ29udHJvbCgpIHtcblx0XHQvLyBJZiB0aGUgYWRhcHRhdGlvbiBmaWx0ZXIgYmFyIGlzIHBhcnQgb2YgdGhlIERPTSB0cmVlLCB0aGUgXCJBZGFwdCBGaWx0ZXJcIiBkaWFsb2cgaXMgb3Blbixcblx0XHQvLyBhbmQgd2UgcmV0dXJuIHRoZSBhZGFwdGF0aW9uIGZpbHRlciBiYXIgYXMgYW4gYWN0aXZlIGNvbnRyb2wgKHZpc2libGUgZm9yIHRoZSB1c2VyKVxuXHRcdGNvbnN0IGFkYXB0YXRpb25GaWx0ZXJCYXIgPSAodGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpIGFzIGFueSkuZ2V0SW5idWlsdEZpbHRlcigpO1xuXHRcdHJldHVybiBhZGFwdGF0aW9uRmlsdGVyQmFyPy5nZXRQYXJlbnQoKSA/IGFkYXB0YXRpb25GaWx0ZXJCYXIgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0U2VnbWVudGVkQnV0dG9uKHNDb250cm9sOiBhbnkpIHtcblx0XHRjb25zdCBzU2VnbWVudGVkQnV0dG9uSWQgPSAoc0NvbnRyb2wgPT09IFwiQ2hhcnRcIiA/IHRoaXMuZ2V0Q2hhcnRDb250cm9sKCkgOiB0aGlzLl9nZXRUYWJsZSgpKT8uZGF0YShcInNlZ21lbnRlZEJ1dHRvbklkXCIpO1xuXHRcdHJldHVybiB0aGlzLmdldFZpZXcoKS5ieUlkKHNTZWdtZW50ZWRCdXR0b25JZCk7XG5cdH1cblxuXHRfZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eShzUGF0aDogc3RyaW5nKSB7XG5cdFx0Y29uc3QgY29udHJvbElkID0gdGhpcy5fZ2V0UGFnZU1vZGVsKCk/LmdldFByb3BlcnR5KHNQYXRoKTtcblx0XHRyZXR1cm4gY29udHJvbElkICYmIHRoaXMuZ2V0VmlldygpLmJ5SWQoY29udHJvbElkKTtcblx0fVxuXG5cdF9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2xJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvZHluYW1pY0xpc3RSZXBvcnRJZFwiKSB8fCBcIlwiO1xuXHR9XG5cblx0X2dldEZpbHRlckJhckNvbnRyb2xJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvZmlsdGVyQmFySWRcIikgfHwgXCJcIjtcblx0fVxuXG5cdGdldENoYXJ0Q29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eShcIi9zaW5nbGVDaGFydElkXCIpO1xuXHR9XG5cblx0X2dldFZpc3VhbEZpbHRlckJhckNvbnRyb2woKSB7XG5cdFx0Y29uc3Qgc1Zpc3VhbEZpbHRlckJhcklkID0gU3RhYmxlSWRIZWxwZXIuZ2VuZXJhdGUoW1widmlzdWFsRmlsdGVyXCIsIHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2xJZCgpXSk7XG5cdFx0cmV0dXJuIHNWaXN1YWxGaWx0ZXJCYXJJZCAmJiB0aGlzLmdldFZpZXcoKS5ieUlkKHNWaXN1YWxGaWx0ZXJCYXJJZCk7XG5cdH1cblxuXHRfZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2woKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoXCIvdmFyaWFudE1hbmFnZW1lbnQvaWRcIik7XG5cdH1cblxuXHRfZ2V0TXVsdGlNb2RlQ29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuYnlJZChcImZlOjpUYWJNdWx0aXBsZU1vZGU6OkNvbnRyb2xcIikgYXMgTXVsdGlwbGVNb2RlQ29udHJvbDtcblx0fVxuXG5cdF9nZXRUYWJsZSgpOiBUYWJsZSB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuX2lzTXVsdGlNb2RlKCkpIHtcblx0XHRcdGNvbnN0IG9Db250cm9sID0gdGhpcy5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpPy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5jb250ZW50O1xuXHRcdFx0cmV0dXJuIG9Db250cm9sPy5pc0EoXCJzYXAudWkubWRjLlRhYmxlXCIpID8gKG9Db250cm9sIGFzIFRhYmxlKSA6IHVuZGVmaW5lZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoXCIvc2luZ2xlVGFibGVJZFwiKSBhcyBUYWJsZTtcblx0XHR9XG5cdH1cblxuXHRfZ2V0Q29udHJvbHMoc0tleT86IGFueSkge1xuXHRcdGlmICh0aGlzLl9pc011bHRpTW9kZSgpKSB7XG5cdFx0XHRjb25zdCBhQ29udHJvbHM6IGFueVtdID0gW107XG5cdFx0XHRjb25zdCBvVGFiTXVsdGlNb2RlID0gdGhpcy5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpLmNvbnRlbnQ7XG5cdFx0XHRvVGFiTXVsdGlNb2RlLmdldEl0ZW1zKCkuZm9yRWFjaCgob0l0ZW06IGFueSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvQ29udHJvbCA9IHRoaXMuZ2V0VmlldygpLmJ5SWQob0l0ZW0uZ2V0S2V5KCkpO1xuXHRcdFx0XHRpZiAob0NvbnRyb2wgJiYgc0tleSkge1xuXHRcdFx0XHRcdGlmIChvSXRlbS5nZXRLZXkoKS5pbmRleE9mKGBmZTo6JHtzS2V5fWApID4gLTEpIHtcblx0XHRcdFx0XHRcdGFDb250cm9scy5wdXNoKG9Db250cm9sKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAob0NvbnRyb2wgIT09IHVuZGVmaW5lZCAmJiBvQ29udHJvbCAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdGFDb250cm9scy5wdXNoKG9Db250cm9sKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYUNvbnRyb2xzO1xuXHRcdH0gZWxzZSBpZiAoc0tleSA9PT0gXCJDaGFydFwiKSB7XG5cdFx0XHRjb25zdCBvQ2hhcnQgPSB0aGlzLmdldENoYXJ0Q29udHJvbCgpO1xuXHRcdFx0cmV0dXJuIG9DaGFydCA/IFtvQ2hhcnRdIDogW107XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuX2dldFRhYmxlKCk7XG5cdFx0XHRyZXR1cm4gb1RhYmxlID8gW29UYWJsZV0gOiBbXTtcblx0XHR9XG5cdH1cblxuXHRfZ2V0RGVmYXVsdFBhdGgoKSB7XG5cdFx0Y29uc3QgZGVmYXVsdFBhdGggPSBMaXN0UmVwb3J0VGVtcGxhdGluZy5nZXREZWZhdWx0UGF0aCh0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvdmlld3NcIikgfHwgW10pO1xuXHRcdHN3aXRjaCAoZGVmYXVsdFBhdGgpIHtcblx0XHRcdGNhc2UgXCJwcmltYXJ5XCI6XG5cdFx0XHRcdHJldHVybiBUZW1wbGF0ZUNvbnRlbnRWaWV3LkNoYXJ0O1xuXHRcdFx0Y2FzZSBcInNlY29uZGFyeVwiOlxuXHRcdFx0XHRyZXR1cm4gVGVtcGxhdGVDb250ZW50Vmlldy5UYWJsZTtcblx0XHRcdGNhc2UgXCJib3RoXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBrbm93IGlmIExpc3RSZXBvcnQgaXMgY29uZmlndXJlZCB3aXRoIE11bHRpcGxlIFRhYmxlIG1vZGUuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfaXNNdWx0aU1vZGVcblx0ICogQHJldHVybnMgSXMgTXVsdGlwbGUgVGFibGUgbW9kZSBzZXQ/XG5cdCAqL1xuXHRfaXNNdWx0aU1vZGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5fZ2V0UGFnZU1vZGVsKCk/LmdldFByb3BlcnR5KFwiL211bHRpVmlld3NDb250cm9sXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBrbm93IGlmIExpc3RSZXBvcnQgaXMgY29uZmlndXJlZCB0byBsb2FkIGRhdGEgYXQgc3RhcnQgdXAuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfaXNJbml0TG9hZERpc2FibGVkXG5cdCAqIEByZXR1cm5zIElzIEluaXRMb2FkIGVuYWJsZWQ/XG5cdCAqL1xuXHRfaXNJbml0TG9hZEVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaW5pdExvYWRNb2RlID0gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgYW55KS5pbml0aWFsTG9hZDtcblx0XHRyZXR1cm4gaW5pdExvYWRNb2RlID09PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZDtcblx0fVxuXG5cdF9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvaGFzTXVsdGlWaXN1YWxpemF0aW9uc1wiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gc3VzcGVuZCBzZWFyY2ggb24gdGhlIGZpbHRlciBiYXIuIFRoZSBpbml0aWFsIGxvYWRpbmcgb2YgZGF0YSBpcyBkaXNhYmxlZCBiYXNlZCBvbiB0aGUgbWFuaWZlc3QgY29uZmlndXJhdGlvbiBJbml0TG9hZCAtIERpc2FibGVkL0F1dG8uXG5cdCAqIEl0IGlzIGVuYWJsZWQgbGF0ZXIgd2hlbiB0aGUgdmlldyBzdGF0ZSBpcyBzZXQsIHdoZW4gaXQgaXMgcG9zc2libGUgdG8gcmVhbGl6ZSBpZiB0aGVyZSBhcmUgZGVmYXVsdCBmaWx0ZXJzLlxuXHQgKi9cblx0X2Rpc2FibGVJbml0TG9hZCgpIHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Ly8gY2hlY2sgZm9yIGZpbHRlciBiYXIgaGlkZGVuXG5cdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0ZmlsdGVyQmFyLnNldFN1c3BlbmRTZWxlY3Rpb24odHJ1ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCBjYWxsZWQgYnkgZmxleCB0byBkZXRlcm1pbmUgaWYgdGhlIGFwcGx5QXV0b21hdGljYWxseSBzZXR0aW5nIG9uIHRoZSB2YXJpYW50IGlzIHZhbGlkLlxuXHQgKiBDYWxsZWQgb25seSBmb3IgU3RhbmRhcmQgVmFyaWFudCBhbmQgb25seSB3aGVuIHRoZXJlIGlzIGRpc3BsYXkgdGV4dCBzZXQgZm9yIGFwcGx5QXV0b21hdGljYWxseSAoRkUgb25seSBzZXRzIGl0IGZvciBBdXRvKS5cblx0ICpcblx0ICogQHJldHVybnMgQm9vbGVhbiB0cnVlIGlmIGRhdGEgc2hvdWxkIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LCBmYWxzZSBvdGhlcndpc2Vcblx0ICovXG5cdF9hcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudCgpIHtcblx0XHQvLyBXZSBhbHdheXMgcmV0dXJuIGZhbHNlIGFuZCB0YWtlIGNhcmUgb2YgaXQgd2hlbiB2aWV3IHN0YXRlIGlzIHNldFxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25maWd1cmUgdGhlIHNldHRpbmdzIGZvciBpbml0aWFsIGxvYWQgYmFzZWQgb25cblx0ICogLSBtYW5pZmVzdCBzZXR0aW5nIGluaXRMb2FkIC0gRW5hYmxlZC9EaXNhYmxlZC9BdXRvXG5cdCAqIC0gdXNlcidzIHNldHRpbmcgb2YgYXBwbHlBdXRvbWF0aWNhbGx5IG9uIHZhcmlhbnRcblx0ICogLSBpZiB0aGVyZSBhcmUgZGVmYXVsdCBmaWx0ZXJzXG5cdCAqIFdlIGRpc2FibGUgdGhlIGZpbHRlciBiYXIgc2VhcmNoIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuYWJsZSBpdCB3aGVuIHZpZXcgc3RhdGUgaXMgc2V0LlxuXHQgKi9cblx0X3NldEluaXRMb2FkKCkge1xuXHRcdC8vIGlmIGluaXRMb2FkIGlzIERpc2FibGVkIG9yIEF1dG8sIHN3aXRjaCBvZmYgZmlsdGVyIGJhciBzZWFyY2ggdGVtcG9yYXJpbHkgYXQgc3RhcnRcblx0XHRpZiAoIXRoaXMuX2lzSW5pdExvYWRFbmFibGVkKCkpIHtcblx0XHRcdHRoaXMuX2Rpc2FibGVJbml0TG9hZCgpO1xuXHRcdH1cblx0XHQvLyBzZXQgaG9vayBmb3IgZmxleCBmb3Igd2hlbiBzdGFuZGFyZCB2YXJpYW50IGlzIHNldCAoYXQgc3RhcnQgb3IgYnkgdXNlciBhdCBydW50aW1lKVxuXHRcdC8vIHJlcXVpcmVkIHRvIG92ZXJyaWRlIHRoZSB1c2VyIHNldHRpbmcgJ2FwcGx5IGF1dG9tYXRpY2FsbHknIGJlaGF2aW91ciBpZiB0aGVyZSBhcmUgbm8gZmlsdGVyc1xuXHRcdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50SWQ6IGFueSA9IExpc3RSZXBvcnRUZW1wbGF0aW5nLmdldFZhcmlhbnRCYWNrUmVmZXJlbmNlKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCksIHRoaXMuX2dldFBhZ2VNb2RlbCgpKTtcblx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudCA9IHZhcmlhbnRNYW5hZ2VtZW50SWQgJiYgdGhpcy5nZXRWaWV3KCkuYnlJZCh2YXJpYW50TWFuYWdlbWVudElkKTtcblx0XHRpZiAodmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdHZhcmlhbnRNYW5hZ2VtZW50LnJlZ2lzdGVyQXBwbHlBdXRvbWF0aWNhbGx5T25TdGFuZGFyZFZhcmlhbnQodGhpcy5fYXBwbHlBdXRvbWF0aWNhbGx5T25TdGFuZGFyZFZhcmlhbnQuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9XG5cblx0X3NldFNoYXJlTW9kZWwoKSB7XG5cdFx0Ly8gVE9ETzogZGVhY3RpdmF0ZWQgZm9yIG5vdyAtIGN1cnJlbnRseSB0aGVyZSBpcyBubyBfdGVtcGxQcml2IGFueW1vcmUsIHRvIGJlIGRpc2N1c3NlZFxuXHRcdC8vIHRoaXMgbWV0aG9kIGlzIGN1cnJlbnRseSBub3QgY2FsbGVkIGFueW1vcmUgZnJvbSB0aGUgaW5pdCBtZXRob2RcblxuXHRcdGNvbnN0IGZuR2V0VXNlciA9IE9iamVjdFBhdGguZ2V0KFwic2FwLnVzaGVsbC5Db250YWluZXIuZ2V0VXNlclwiKTtcblx0XHQvL3ZhciBvTWFuaWZlc3QgPSB0aGlzLmdldE93bmVyQ29tcG9uZW50KCkuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TWV0YWRhdGEoKS5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLnVpXCIpO1xuXHRcdC8vdmFyIHNCb29rbWFya0ljb24gPSAob01hbmlmZXN0ICYmIG9NYW5pZmVzdC5pY29ucyAmJiBvTWFuaWZlc3QuaWNvbnMuaWNvbikgfHwgXCJcIjtcblxuXHRcdC8vc2hhcmVNb2RlbDogSG9sZHMgYWxsIHRoZSBzaGFyaW5nIHJlbGV2YW50IGluZm9ybWF0aW9uIGFuZCBpbmZvIHVzZWQgaW4gWE1MIHZpZXdcblx0XHRjb25zdCBvU2hhcmVJbmZvID0ge1xuXHRcdFx0Ym9va21hcmtUaXRsZTogZG9jdW1lbnQudGl0bGUsIC8vVG8gbmFtZSB0aGUgYm9va21hcmsgYWNjb3JkaW5nIHRvIHRoZSBhcHAgdGl0bGUuXG5cdFx0XHRib29rbWFya0N1c3RvbVVybDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRjb25zdCBzSGFzaCA9IGhhc2hlci5nZXRIYXNoKCk7XG5cdFx0XHRcdHJldHVybiBzSGFzaCA/IGAjJHtzSGFzaH1gIDogd2luZG93LmxvY2F0aW9uLmhyZWY7XG5cdFx0XHR9LFxuXHRcdFx0Lypcblx0XHRcdFx0XHRcdFx0VG8gYmUgYWN0aXZhdGVkIG9uY2UgdGhlIEZMUCBzaG93cyB0aGUgY291bnQgLSBzZWUgY29tbWVudCBhYm92ZVxuXHRcdFx0XHRcdFx0XHRib29rbWFya1NlcnZpY2VVcmw6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHRcdC8vdmFyIG9UYWJsZSA9IG9UYWJsZS5nZXRJbm5lclRhYmxlKCk7IG9UYWJsZSBpcyBhbHJlYWR5IHRoZSBzYXAuZmUgdGFibGUgKGJ1dCBub3QgdGhlIGlubmVyIG9uZSlcblx0XHRcdFx0XHRcdFx0XHQvLyB3ZSBzaG91bGQgdXNlIHRhYmxlLmdldExpc3RCaW5kaW5nSW5mbyBpbnN0ZWFkIG9mIHRoZSBiaW5kaW5nXG5cdFx0XHRcdFx0XHRcdFx0dmFyIG9CaW5kaW5nID0gb1RhYmxlLmdldEJpbmRpbmcoXCJyb3dzXCIpIHx8IG9UYWJsZS5nZXRCaW5kaW5nKFwiaXRlbXNcIik7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG9CaW5kaW5nID8gZm5HZXREb3dubG9hZFVybChvQmluZGluZykgOiBcIlwiO1xuXHRcdFx0XHRcdFx0XHR9LCovXG5cdFx0XHRpc1NoYXJlSW5KYW1BY3RpdmU6ICEhZm5HZXRVc2VyICYmIGZuR2V0VXNlcigpLmlzSmFtQWN0aXZlKClcblx0XHR9O1xuXG5cdFx0Y29uc3Qgb1RlbXBsYXRlUHJpdmF0ZU1vZGVsID0gdGhpcy5nZXRPd25lckNvbXBvbmVudCgpLmdldE1vZGVsKFwiX3RlbXBsUHJpdlwiKSBhcyBKU09OTW9kZWw7XG5cdFx0b1RlbXBsYXRlUHJpdmF0ZU1vZGVsLnNldFByb3BlcnR5KFwiL2xpc3RSZXBvcnQvc2hhcmVcIiwgb1NoYXJlSW5mbyk7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIHVwZGF0ZSB0aGUgbG9jYWwgVUkgbW9kZWwgb2YgdGhlIHBhZ2Ugd2l0aCB0aGUgZmllbGRzIHRoYXQgYXJlIG5vdCBhcHBsaWNhYmxlIHRvIHRoZSBmaWx0ZXIgYmFyICh0aGlzIGlzIHNwZWNpZmljIHRvIHRoZSBBTFAgc2NlbmFyaW8pLlxuXHQgKlxuXHQgKiBAcGFyYW0gb0ludGVybmFsTW9kZWxDb250ZXh0IFRoZSBpbnRlcm5hbCBtb2RlbCBjb250ZXh0XG5cdCAqIEBwYXJhbSBvRmlsdGVyQmFyIE1EQyBmaWx0ZXIgYmFyXG5cdCAqL1xuXHRfdXBkYXRlQUxQTm90QXBwbGljYWJsZUZpZWxkcyhvSW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0LCBvRmlsdGVyQmFyOiBGaWx0ZXJCYXIpIHtcblx0XHRjb25zdCBtQ2FjaGU6IGFueSA9IHt9O1xuXHRcdGNvbnN0IGlnbm9yZWRGaWVsZHM6IGFueSA9IHt9LFxuXHRcdFx0YVRhYmxlcyA9IHRoaXMuX2dldENvbnRyb2xzKFwidGFibGVcIiksXG5cdFx0XHRhQ2hhcnRzID0gdGhpcy5fZ2V0Q29udHJvbHMoXCJDaGFydFwiKTtcblxuXHRcdGlmICghYVRhYmxlcy5sZW5ndGggfHwgIWFDaGFydHMubGVuZ3RoKSB7XG5cdFx0XHQvLyBJZiB0aGVyZSdzIG5vdCBhIHRhYmxlIGFuZCBhIGNoYXJ0LCB3ZSdyZSBub3QgaW4gdGhlIEFMUCBjYXNlXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRm9yIHRoZSBtb21lbnQsIHRoZXJlJ3Mgbm90aGluZyBmb3IgdGFibGVzLi4uXG5cdFx0YUNoYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uIChvQ2hhcnQ6IGFueSkge1xuXHRcdFx0Y29uc3Qgc0NoYXJ0RW50aXR5UGF0aCA9IG9DaGFydC5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIiksXG5cdFx0XHRcdHNDaGFydEVudGl0eVNldCA9IHNDaGFydEVudGl0eVBhdGguc2xpY2UoMSksXG5cdFx0XHRcdHNDYWNoZUtleSA9IGAke3NDaGFydEVudGl0eVNldH1DaGFydGA7XG5cdFx0XHRpZiAoIW1DYWNoZVtzQ2FjaGVLZXldKSB7XG5cdFx0XHRcdG1DYWNoZVtzQ2FjaGVLZXldID0gRmlsdGVyVXRpbHMuZ2V0Tm90QXBwbGljYWJsZUZpbHRlcnMob0ZpbHRlckJhciwgb0NoYXJ0KTtcblx0XHRcdH1cblx0XHRcdGlnbm9yZWRGaWVsZHNbc0NhY2hlS2V5XSA9IG1DYWNoZVtzQ2FjaGVLZXldO1xuXHRcdH0pO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbnRyb2xzL2lnbm9yZWRGaWVsZHNcIiwgaWdub3JlZEZpZWxkcyk7XG5cdH1cblxuXHRfaXNGaWx0ZXJCYXJIaWRkZW4oKSB7XG5cdFx0cmV0dXJuICh0aGlzLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIGFueSkuaGlkZUZpbHRlckJhcjtcblx0fVxuXG5cdF9nZXRBcHBseUF1dG9tYXRpY2FsbHlPblZhcmlhbnQoVmFyaWFudE1hbmFnZW1lbnQ6IGFueSwga2V5OiBzdHJpbmcpOiBCb29sZWFuIHtcblx0XHRpZiAoIVZhcmlhbnRNYW5hZ2VtZW50IHx8ICFrZXkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgdmFyaWFudHMgPSBWYXJpYW50TWFuYWdlbWVudC5nZXRWYXJpYW50cygpO1xuXHRcdGNvbnN0IGN1cnJlbnRWYXJpYW50ID0gdmFyaWFudHMuZmluZChmdW5jdGlvbiAodmFyaWFudDogYW55KSB7XG5cdFx0XHRyZXR1cm4gdmFyaWFudCAmJiB2YXJpYW50LmtleSA9PT0ga2V5O1xuXHRcdH0pO1xuXHRcdHJldHVybiAoY3VycmVudFZhcmlhbnQgJiYgY3VycmVudFZhcmlhbnQuZXhlY3V0ZU9uU2VsZWN0KSB8fCBmYWxzZTtcblx0fVxuXG5cdF9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaChvVk06IGFueSkge1xuXHRcdGlmIChcblx0XHRcdCh0aGlzLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIGFueSkuaW5pdGlhbExvYWQgPT09IEluaXRpYWxMb2FkTW9kZS5BdXRvICYmXG5cdFx0XHQoIW9WTSB8fCBvVk0uZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCkgPT09IG9WTS5nZXRDdXJyZW50VmFyaWFudEtleSgpKVxuXHRcdCkge1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0XHRcdGNvbnN0IG9Db25kaXRpb25zID0gb0ZpbHRlckJhci5nZXRDb25kaXRpb25zKCk7XG5cdFx0XHRcdGZvciAoY29uc3Qgc0tleSBpbiBvQ29uZGl0aW9ucykge1xuXHRcdFx0XHRcdC8vIGlnbm9yZSBmaWx0ZXJzIHN0YXJ0aW5nIHdpdGggJCAoZS5nLiAkc2VhcmNoLCAkZWRpdFN0YXRlKVxuXHRcdFx0XHRcdGlmICghc0tleS5zdGFydHNXaXRoKFwiJFwiKSAmJiBBcnJheS5pc0FycmF5KG9Db25kaXRpb25zW3NLZXldKSAmJiBvQ29uZGl0aW9uc1tzS2V5XS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdC8vIGxvYWQgZGF0YSBhcyBwZXIgdXNlcidzIHNldHRpbmcgb2YgYXBwbHlBdXRvbWF0aWNhbGx5IG9uIHRoZSB2YXJpYW50XG5cdFx0XHRcdFx0XHRjb25zdCBzdGFuZGFyZFZhcmlhbnQ6IGFueSA9IG9WTS5nZXRWYXJpYW50cygpLmZpbmQoKHZhcmlhbnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFyaWFudC5rZXkgPT09IG9WTS5nZXRDdXJyZW50VmFyaWFudEtleSgpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc3RhbmRhcmRWYXJpYW50ICYmIHN0YW5kYXJkVmFyaWFudC5leGVjdXRlT25TZWxlY3Q7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdF91cGRhdGVUYWJsZShvVGFibGU6IGFueSkge1xuXHRcdGlmICghb1RhYmxlLmlzVGFibGVCb3VuZCgpIHx8IHRoaXMuaGFzUGVuZGluZ0NoYXJ0Q2hhbmdlcykge1xuXHRcdFx0b1RhYmxlLnJlYmluZCgpO1xuXHRcdFx0dGhpcy5oYXNQZW5kaW5nQ2hhcnRDaGFuZ2VzID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0X3VwZGF0ZUNoYXJ0KG9DaGFydDogYW55KSB7XG5cdFx0Y29uc3Qgb0lubmVyQ2hhcnQgPSBvQ2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkuX2dldENoYXJ0KG9DaGFydCk7XG5cdFx0aWYgKCEob0lubmVyQ2hhcnQgJiYgb0lubmVyQ2hhcnQuaXNCb3VuZChcImRhdGFcIikpIHx8IHRoaXMuaGFzUGVuZGluZ1RhYmxlQ2hhbmdlcykge1xuXHRcdFx0b0NoYXJ0LmdldENvbnRyb2xEZWxlZ2F0ZSgpLnJlYmluZChvQ2hhcnQsIG9Jbm5lckNoYXJ0LmdldEJpbmRpbmdJbmZvKFwiZGF0YVwiKSk7XG5cdFx0XHR0aGlzLmhhc1BlbmRpbmdUYWJsZUNoYW5nZXMgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRoYW5kbGVycyA9IHtcblx0XHRvbkZpbHRlclNlYXJjaCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlcikge1xuXHRcdFx0dGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpLnRyaWdnZXJTZWFyY2goKTtcblx0XHR9LFxuXHRcdG9uRmlsdGVyc0NoYW5nZWQodGhpczogTGlzdFJlcG9ydENvbnRyb2xsZXIsIG9FdmVudDogYW55KSB7XG5cdFx0XHRjb25zdCBvRmlsdGVyQmFyID0gdGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCB8IHVuZGVmaW5lZDtcblx0XHRcdFx0Ly8gUGVuZGluZyBmaWx0ZXJzIGludG8gRmlsdGVyQmFyIHRvIGJlIHVzZWQgZm9yIGN1c3RvbSB2aWV3c1xuXHRcdFx0XHR0aGlzLm9uUGVuZGluZ0ZpbHRlcnMoKTtcblx0XHRcdFx0Y29uc3QgYXBwbGllZEZpbHRlcnNUZXh0ID0gb0ZpbHRlckJhci5nZXRBc3NpZ25lZEZpbHRlcnNUZXh0KCkuZmlsdGVyc1RleHQ7XG5cdFx0XHRcdGNvbnN0IGFwcGxpZWRGaWx0ZXJCaW5kaW5nID0gYmluZGluZ1BhcnNlcihhcHBsaWVkRmlsdGVyc1RleHQpO1xuXHRcdFx0XHRpZiAoYXBwbGllZEZpbHRlckJpbmRpbmcpIHtcblx0XHRcdFx0XHQodGhpcy5nZXRWaWV3KCkuYnlJZChcImZlOjphcHBsaWVkRmlsdGVyc1RleHRcIikgYXMgVGV4dCB8IHVuZGVmaW5lZCk/LmJpbmRUZXh0KGFwcGxpZWRGaWx0ZXJCaW5kaW5nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQodGhpcy5nZXRWaWV3KCkuYnlJZChcImZlOjphcHBsaWVkRmlsdGVyc1RleHRcIikgYXMgVGV4dCB8IHVuZGVmaW5lZCk/LnNldFRleHQoYXBwbGllZEZpbHRlcnNUZXh0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChvSW50ZXJuYWxNb2RlbENvbnRleHQgJiYgb0V2ZW50LmdldFBhcmFtZXRlcihcImNvbmRpdGlvbnNCYXNlZFwiKSkge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhhc1BlbmRpbmdGaWx0ZXJzXCIsIHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvblZhcmlhbnRTZWxlY3RlZCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgb0V2ZW50OiBhbnkpIHtcblx0XHRcdGNvbnN0IG9WTSA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRcdGNvbnN0IGN1cnJlbnRWYXJpYW50S2V5ID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImtleVwiKTtcblx0XHRcdGNvbnN0IG9NdWx0aU1vZGVDb250cm9sID0gdGhpcy5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpO1xuXG5cdFx0XHRpZiAob011bHRpTW9kZUNvbnRyb2wgJiYgIW9WTT8uZ2V0UGFyZW50KCkuaXNBKFwic2FwLnVpLm1kYy5BY3Rpb25Ub29sYmFyXCIpKSB7XG5cdFx0XHRcdC8vTm90IGEgQ29udHJvbCBWYXJpYW50XG5cdFx0XHRcdG9NdWx0aU1vZGVDb250cm9sPy5pbnZhbGlkYXRlQ29udGVudCgpO1xuXHRcdFx0XHRvTXVsdGlNb2RlQ29udHJvbD8uc2V0RnJlZXplQ29udGVudCh0cnVlKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0VGltZW91dCBjYXVzZSB0aGUgdmFyaWFudCBuZWVkcyB0byBiZSBhcHBsaWVkIGJlZm9yZSBqdWRnaW5nIHRoZSBhdXRvIHNlYXJjaCBvciB1cGRhdGluZyB0aGUgYXBwIHN0YXRlXG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoKG9WTSkpIHtcblx0XHRcdFx0XHQvLyB0aGUgYXBwIHN0YXRlIHdpbGwgYmUgdXBkYXRlZCB2aWEgb25TZWFyY2ggaGFuZGxlclxuXHRcdFx0XHRcdHJldHVybiB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCF0aGlzLl9nZXRBcHBseUF1dG9tYXRpY2FsbHlPblZhcmlhbnQob1ZNLCBjdXJyZW50VmFyaWFudEtleSkpIHtcblx0XHRcdFx0XHR0aGlzLmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIDApO1xuXHRcdH0sXG5cdFx0b25WYXJpYW50U2F2ZWQodGhpczogTGlzdFJlcG9ydENvbnRyb2xsZXIpIHtcblx0XHRcdC8vVE9ETzogU2hvdWxkIHJlbW92ZSB0aGlzIHNldFRpbWVPdXQgb25jZSBWYXJpYW50IE1hbmFnZW1lbnQgcHJvdmlkZXMgYW4gYXBpIHRvIGZldGNoIHRoZSBjdXJyZW50IHZhcmlhbnQga2V5IG9uIHNhdmUhISFcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdFx0XHR9LCAxMDAwKTtcblx0XHR9LFxuXHRcdG9uU2VhcmNoKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyKSB7XG5cdFx0XHRjb25zdCBvRmlsdGVyQmFyID0gdGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdGNvbnN0IG9NZGNDaGFydCA9IHRoaXMuZ2V0Q2hhcnRDb250cm9sKCk7XG5cdFx0XHRjb25zdCBiSGlkZURyYWZ0ID0gRmlsdGVyVXRpbHMuZ2V0RWRpdFN0YXRlSXNIaWRlRHJhZnQob0ZpbHRlckJhci5nZXRDb25kaXRpb25zKCkpO1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaGFzUGVuZGluZ0ZpbHRlcnNcIiwgZmFsc2UpO1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaGlkZURyYWZ0SW5mb1wiLCBiSGlkZURyYWZ0KTtcblxuXHRcdFx0aWYgKCF0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCkpIHtcblx0XHRcdFx0dGhpcy5fdXBkYXRlQUxQTm90QXBwbGljYWJsZUZpZWxkcyhvSW50ZXJuYWxNb2RlbENvbnRleHQsIG9GaWx0ZXJCYXIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG9NZGNDaGFydCkge1xuXHRcdFx0XHQvLyBkaXNhYmxlIGJvdW5kIGFjdGlvbnMgVE9ETzogdGhpcyBjbGVhcnMgZXZlcnl0aGluZyBmb3IgdGhlIGNoYXJ0P1xuXHRcdFx0XHQob01kY0NoYXJ0LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQpLnNldFByb3BlcnR5KFwiXCIsIHt9KTtcblxuXHRcdFx0XHRjb25zdCBvUGFnZUludGVybmFsTW9kZWxDb250ZXh0ID0gb01kY0NoYXJ0LmdldEJpbmRpbmdDb250ZXh0KFwicGFnZUludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0XHRjb25zdCBzVGVtcGxhdGVDb250ZW50VmlldyA9IG9QYWdlSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoYCR7b1BhZ2VJbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQYXRoKCl9L2FscENvbnRlbnRWaWV3YCk7XG5cdFx0XHRcdGlmIChzVGVtcGxhdGVDb250ZW50VmlldyA9PT0gVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkge1xuXHRcdFx0XHRcdHRoaXMuaGFzUGVuZGluZ0NoYXJ0Q2hhbmdlcyA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNUZW1wbGF0ZUNvbnRlbnRWaWV3ID09PSBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlKSB7XG5cdFx0XHRcdFx0dGhpcy5oYXNQZW5kaW5nVGFibGVDaGFuZ2VzID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gc3RvcmUgZmlsdGVyIGJhciBjb25kaXRpb25zIHRvIHVzZSBsYXRlciB3aGlsZSBuYXZpZ2F0aW9uXG5cdFx0XHRTdGF0ZVV0aWwucmV0cmlldmVFeHRlcm5hbFN0YXRlKG9GaWx0ZXJCYXIpXG5cdFx0XHRcdC50aGVuKChvRXh0ZXJuYWxTdGF0ZTogYW55KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJCYXJDb25kaXRpb25zID0gb0V4dGVybmFsU3RhdGUuZmlsdGVyO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgcmV0cmlldmluZyB0aGUgZXh0ZXJuYWwgc3RhdGVcIiwgb0Vycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRpZiAoKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgYW55KS5saXZlTW9kZSA9PT0gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc3lzdGVtLnBob25lKSB7XG5cdFx0XHRcdGNvbnN0IG9EeW5hbWljUGFnZSA9IHRoaXMuX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbCgpO1xuXHRcdFx0XHRvRHluYW1pY1BhZ2Uuc2V0SGVhZGVyRXhwYW5kZWQoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0LyoqXG5cdFx0ICogVHJpZ2dlcnMgYW4gb3V0Ym91bmQgbmF2aWdhdGlvbiB3aGVuIGEgdXNlciBjaG9vc2VzIHRoZSBjaGV2cm9uLlxuXHRcdCAqXG5cdFx0ICogQHBhcmFtIG9Db250cm9sbGVyXG5cdFx0ICogQHBhcmFtIHNPdXRib3VuZFRhcmdldCBOYW1lIG9mIHRoZSBvdXRib3VuZCB0YXJnZXQgKG5lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0KVxuXHRcdCAqIEBwYXJhbSBvQ29udGV4dCBUaGUgY29udGV4dCB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhIGZvciB0aGUgdGFyZ2V0IGFwcFxuXHRcdCAqIEBwYXJhbSBzQ3JlYXRlUGF0aCBDcmVhdGUgcGF0aCB3aGVuIHRoZSBjaGV2cm9uIGlzIGNyZWF0ZWQuXG5cdFx0ICogQHJldHVybnMgUHJvbWlzZSB3aGljaCBpcyByZXNvbHZlZCBvbmNlIHRoZSBuYXZpZ2F0aW9uIGlzIHRyaWdnZXJlZFxuXHRcdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHRcdCAqIEBmaW5hbFxuXHRcdCAqL1xuXHRcdG9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZChvQ29udHJvbGxlcjogTGlzdFJlcG9ydENvbnRyb2xsZXIsIHNPdXRib3VuZFRhcmdldDogc3RyaW5nLCBvQ29udGV4dDogQ29udGV4dCwgc0NyZWF0ZVBhdGg6IHN0cmluZykge1xuXHRcdFx0cmV0dXJuIG9Db250cm9sbGVyLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ub25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kKG9Db250cm9sbGVyLCBzT3V0Ym91bmRUYXJnZXQsIG9Db250ZXh0LCBzQ3JlYXRlUGF0aCk7XG5cdFx0fSxcblx0XHRvbkNoYXJ0U2VsZWN0aW9uQ2hhbmdlZCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgb0V2ZW50OiBhbnkpIHtcblx0XHRcdGNvbnN0IG9NZGNDaGFydCA9IG9FdmVudC5nZXRTb3VyY2UoKS5nZXRDb250ZW50KCksXG5cdFx0XHRcdG9UYWJsZSA9IHRoaXMuX2dldFRhYmxlKCksXG5cdFx0XHRcdGFEYXRhID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImRhdGFcIiksXG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRpZiAoYURhdGEpIHtcblx0XHRcdFx0Q2hhcnRVdGlscy5zZXRDaGFydEZpbHRlcnMob01kY0NoYXJ0KTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHNUZW1wbGF0ZUNvbnRlbnRWaWV3ID0gb0ludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KGAke29JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQYXRoKCl9L2FscENvbnRlbnRWaWV3YCk7XG5cdFx0XHRpZiAoc1RlbXBsYXRlQ29udGVudFZpZXcgPT09IFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQpIHtcblx0XHRcdFx0dGhpcy5oYXNQZW5kaW5nQ2hhcnRDaGFuZ2VzID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSBpZiAob1RhYmxlKSB7XG5cdFx0XHRcdChvVGFibGUgYXMgYW55KS5yZWJpbmQoKTtcblx0XHRcdFx0dGhpcy5oYXNQZW5kaW5nQ2hhcnRDaGFuZ2VzID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQodGhpczogTGlzdFJlcG9ydENvbnRyb2xsZXIsIG9FdmVudDogYW55KSB7XG5cdFx0XHRjb25zdCBzU2VsZWN0ZWRLZXkgPSBvRXZlbnQubVBhcmFtZXRlcnMua2V5ID8gb0V2ZW50Lm1QYXJhbWV0ZXJzLmtleSA6IG51bGw7XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiYWxwQ29udGVudFZpZXdcIiwgc1NlbGVjdGVkS2V5KTtcblx0XHRcdGNvbnN0IG9DaGFydCA9IHRoaXMuZ2V0Q2hhcnRDb250cm9sKCk7XG5cdFx0XHRjb25zdCBvVGFibGUgPSB0aGlzLl9nZXRUYWJsZSgpO1xuXHRcdFx0Y29uc3Qgb1NlZ21lbnRlZEJ1dHRvbkRlbGVnYXRlID0ge1xuXHRcdFx0XHRvbkFmdGVyUmVuZGVyaW5nKCkge1xuXHRcdFx0XHRcdGNvbnN0IGFJdGVtcyA9IG9TZWdtZW50ZWRCdXR0b24uZ2V0SXRlbXMoKTtcblx0XHRcdFx0XHRhSXRlbXMuZm9yRWFjaChmdW5jdGlvbiAob0l0ZW06IGFueSkge1xuXHRcdFx0XHRcdFx0aWYgKG9JdGVtLmdldEtleSgpID09PSBzU2VsZWN0ZWRLZXkpIHtcblx0XHRcdFx0XHRcdFx0b0l0ZW0uZm9jdXMoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRvU2VnbWVudGVkQnV0dG9uLnJlbW92ZUV2ZW50RGVsZWdhdGUob1NlZ21lbnRlZEJ1dHRvbkRlbGVnYXRlKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IG9TZWdtZW50ZWRCdXR0b24gPSAoXG5cdFx0XHRcdHNTZWxlY3RlZEtleSA9PT0gVGVtcGxhdGVDb250ZW50Vmlldy5UYWJsZSA/IHRoaXMuX2dldFNlZ21lbnRlZEJ1dHRvbihcIlRhYmxlXCIpIDogdGhpcy5fZ2V0U2VnbWVudGVkQnV0dG9uKFwiQ2hhcnRcIilcblx0XHRcdCkgYXMgU2VnbWVudGVkQnV0dG9uO1xuXHRcdFx0aWYgKG9TZWdtZW50ZWRCdXR0b24gIT09IG9FdmVudC5nZXRTb3VyY2UoKSkge1xuXHRcdFx0XHRvU2VnbWVudGVkQnV0dG9uLmFkZEV2ZW50RGVsZWdhdGUob1NlZ21lbnRlZEJ1dHRvbkRlbGVnYXRlKTtcblx0XHRcdH1cblx0XHRcdHN3aXRjaCAoc1NlbGVjdGVkS2V5KSB7XG5cdFx0XHRcdGNhc2UgVGVtcGxhdGVDb250ZW50Vmlldy5UYWJsZTpcblx0XHRcdFx0XHR0aGlzLl91cGRhdGVUYWJsZShvVGFibGUpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ6XG5cdFx0XHRcdFx0dGhpcy5fdXBkYXRlQ2hhcnQob0NoYXJ0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBUZW1wbGF0ZUNvbnRlbnRWaWV3Lkh5YnJpZDpcblx0XHRcdFx0XHR0aGlzLl91cGRhdGVUYWJsZShvVGFibGUpO1xuXHRcdFx0XHRcdHRoaXMuX3VwZGF0ZUNoYXJ0KG9DaGFydCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdFx0fSxcblx0XHRvbkZpbHRlcnNTZWdtZW50ZWRCdXR0b25QcmVzc2VkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBvRXZlbnQ6IGFueSkge1xuXHRcdFx0Y29uc3QgaXNDb21wYWN0ID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImtleVwiKSA9PT0gXCJDb21wYWN0XCI7XG5cdFx0XHR0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCkuc2V0VmlzaWJsZShpc0NvbXBhY3QpO1xuXHRcdFx0KHRoaXMuX2dldFZpc3VhbEZpbHRlckJhckNvbnRyb2woKSBhcyBDb250cm9sKS5zZXRWaXNpYmxlKCFpc0NvbXBhY3QpO1xuXHRcdH0sXG5cdFx0b25TdGF0ZUNoYW5nZSh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlcikge1xuXHRcdFx0dGhpcy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHRcdH0sXG5cdFx0b25EeW5hbWljUGFnZVRpdGxlU3RhdGVDaGFuZ2VkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBvRXZlbnQ6IGFueSkge1xuXHRcdFx0Y29uc3QgZmlsdGVyQmFyOiBhbnkgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHRpZiAoZmlsdGVyQmFyICYmIGZpbHRlckJhci5nZXRTZWdtZW50ZWRCdXR0b24oKSkge1xuXHRcdFx0XHRpZiAob0V2ZW50LmdldFBhcmFtZXRlcihcImlzRXhwYW5kZWRcIikpIHtcblx0XHRcdFx0XHRmaWx0ZXJCYXIuZ2V0U2VnbWVudGVkQnV0dG9uKCkuc2V0VmlzaWJsZSh0cnVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmaWx0ZXJCYXIuZ2V0U2VnbWVudGVkQnV0dG9uKCkuc2V0VmlzaWJsZShmYWxzZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0b25BZnRlclJlbmRlcmluZygpIHtcblx0XHRjb25zdCBhVGFibGVzID0gdGhpcy5fZ2V0Q29udHJvbHMoKSBhcyBUYWJsZVtdO1xuXHRcdGNvbnN0IHNFbnRpdHlTZXQgPSAodGhpcy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBhbnkpLmVudGl0eVNldDtcblx0XHRjb25zdCBzVGV4dCA9IGdldFJlc291cmNlTW9kZWwodGhpcy5nZXRWaWV3KCkpLmdldFRleHQoXCJUX1RBQkxFX0FORF9DSEFSVF9OT19EQVRBX1RFWFRcIiwgdW5kZWZpbmVkLCBzRW50aXR5U2V0KTtcblx0XHRhVGFibGVzLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogQ29udHJvbCkge1xuXHRcdFx0aWYgKG9UYWJsZS5pc0E8VGFibGU+KFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0XHRvVGFibGUuc2V0Tm9EYXRhKHNUZXh0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBMaXN0UmVwb3J0Q29udHJvbGxlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFzREEsTUFBTUEsbUJBQW1CLEdBQUdDLFdBQVcsQ0FBQ0QsbUJBQW1CO0lBQzFERSxlQUFlLEdBQUdELFdBQVcsQ0FBQ0MsZUFBZTs7RUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEEsSUFPTUMsb0JBQW9CLFdBRHpCQyxjQUFjLENBQUMsa0RBQWtELENBQUMsVUFFakVDLGNBQWMsQ0FDZEMsZUFBZSxDQUFDQyxRQUFRLENBQUM7SUFDeEJDLGNBQWMsRUFBRSxZQUFpQztNQUMvQyxJQUFJLENBQUNDLE9BQU8sRUFBRSxDQUFDQyxhQUFhLEVBQUUsQ0FBMEJDLGVBQWUsRUFBRTtJQUMzRTtFQUNELENBQUMsQ0FBQyxDQUNGLFVBR0FOLGNBQWMsQ0FDZE8sNkJBQTZCLENBQUNMLFFBQVEsQ0FB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
813
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiQ29yZUxpYnJhcnkiLCJJbml0aWFsTG9hZE1vZGUiLCJMaXN0UmVwb3J0Q29udHJvbGxlciIsImRlZmluZVVJNUNsYXNzIiwidXNpbmdFeHRlbnNpb24iLCJJbnRlcm5hbFJvdXRpbmciLCJvdmVycmlkZSIsIm9uQWZ0ZXJCaW5kaW5nIiwiZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJfb25BZnRlckJpbmRpbmciLCJJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbiIsImdldEVudGl0eVNldCIsImJhc2UiLCJnZXRDdXJyZW50RW50aXR5U2V0IiwiU2lkZUVmZmVjdHMiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsIlNoYXJlIiwiU2hhcmVPdmVycmlkZXMiLCJWaWV3U3RhdGUiLCJWaWV3U3RhdGVPdmVycmlkZXMiLCJLUElNYW5hZ2VtZW50IiwiUGxhY2Vob2xkZXIiLCJNYXNzRWRpdCIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkFmdGVyIiwiZm9ybWF0dGVycyIsInNldEFMUENvbnRyb2xNZXNzYWdlU3RyaXAiLCJhSWdub3JlZEZpZWxkcyIsImJJc0NoYXJ0Iiwib0FwcGx5U3VwcG9ydGVkIiwic1RleHQiLCJvRmlsdGVyQmFyIiwiX2dldEZpbHRlckJhckNvbnRyb2wiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsImRhdGEiLCJnZXRSZXNvdXJjZU1vZGVsIiwiYklzU2VhcmNoSWdub3JlZCIsImVuYWJsZVNlYXJjaCIsImdldEFMUFRleHQiLCJnZXRUZXh0IiwiaGFuZGxlcnMiLCJvbkZpbHRlclNlYXJjaCIsInRyaWdnZXJTZWFyY2giLCJvbkZpbHRlcnNDaGFuZ2VkIiwib0V2ZW50Iiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvblBlbmRpbmdGaWx0ZXJzIiwiYXBwbGllZEZpbHRlcnNUZXh0IiwiZ2V0QXNzaWduZWRGaWx0ZXJzVGV4dCIsImZpbHRlcnNUZXh0IiwiYXBwbGllZEZpbHRlckJpbmRpbmciLCJiaW5kaW5nUGFyc2VyIiwiYnlJZCIsImJpbmRUZXh0Iiwic2V0VGV4dCIsImdldFBhcmFtZXRlciIsInNldFByb3BlcnR5Iiwib25WYXJpYW50U2VsZWN0ZWQiLCJvVk0iLCJnZXRTb3VyY2UiLCJjdXJyZW50VmFyaWFudEtleSIsIm9NdWx0aU1vZGVDb250cm9sIiwiX2dldE11bHRpTW9kZUNvbnRyb2wiLCJnZXRQYXJlbnQiLCJpc0EiLCJpbnZhbGlkYXRlQ29udGVudCIsInNldEZyZWV6ZUNvbnRlbnQiLCJzZXRUaW1lb3V0IiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiX2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudCIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwib25WYXJpYW50U2F2ZWQiLCJvblNlYXJjaCIsIm9NZGNDaGFydCIsImdldENoYXJ0Q29udHJvbCIsImJIaWRlRHJhZnQiLCJGaWx0ZXJVdGlscyIsImdldEVkaXRTdGF0ZUlzSGlkZURyYWZ0IiwiZ2V0Q29uZGl0aW9ucyIsIl91cGRhdGVBTFBOb3RBcHBsaWNhYmxlRmllbGRzIiwib1BhZ2VJbnRlcm5hbE1vZGVsQ29udGV4dCIsInNUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiZ2V0UHJvcGVydHkiLCJnZXRQYXRoIiwiQ2hhcnQiLCJoYXNQZW5kaW5nQ2hhcnRDaGFuZ2VzIiwiVGFibGUiLCJoYXNQZW5kaW5nVGFibGVDaGFuZ2VzIiwiU3RhdGVVdGlsIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwidGhlbiIsIm9FeHRlcm5hbFN0YXRlIiwiZmlsdGVyQmFyQ29uZGl0aW9ucyIsImZpbHRlciIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJnZXRWaWV3RGF0YSIsImxpdmVNb2RlIiwic3lzdGVtIiwicGhvbmUiLCJvRHluYW1pY1BhZ2UiLCJfZ2V0RHluYW1pY0xpc3RSZXBvcnRDb250cm9sIiwic2V0SGVhZGVyRXhwYW5kZWQiLCJvbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQiLCJvQ29udHJvbGxlciIsInNPdXRib3VuZFRhcmdldCIsIm9Db250ZXh0Iiwic0NyZWF0ZVBhdGgiLCJfaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwib25DaGFydFNlbGVjdGlvbkNoYW5nZWQiLCJnZXRDb250ZW50Iiwib1RhYmxlIiwiX2dldFRhYmxlIiwiYURhdGEiLCJDaGFydFV0aWxzIiwic2V0Q2hhcnRGaWx0ZXJzIiwicmViaW5kIiwib25TZWdtZW50ZWRCdXR0b25QcmVzc2VkIiwic1NlbGVjdGVkS2V5IiwibVBhcmFtZXRlcnMiLCJrZXkiLCJvQ2hhcnQiLCJvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUiLCJvbkFmdGVyUmVuZGVyaW5nIiwiYUl0ZW1zIiwib1NlZ21lbnRlZEJ1dHRvbiIsImdldEl0ZW1zIiwiZm9yRWFjaCIsIm9JdGVtIiwiZ2V0S2V5IiwiZm9jdXMiLCJyZW1vdmVFdmVudERlbGVnYXRlIiwiX2dldFNlZ21lbnRlZEJ1dHRvbiIsImFkZEV2ZW50RGVsZWdhdGUiLCJfdXBkYXRlVGFibGUiLCJfdXBkYXRlQ2hhcnQiLCJIeWJyaWQiLCJvbkZpbHRlcnNTZWdtZW50ZWRCdXR0b25QcmVzc2VkIiwiaXNDb21wYWN0Iiwic2V0VmlzaWJsZSIsIl9nZXRWaXN1YWxGaWx0ZXJCYXJDb250cm9sIiwib25TdGF0ZUNoYW5nZSIsIm9uRHluYW1pY1BhZ2VUaXRsZVN0YXRlQ2hhbmdlZCIsImZpbHRlckJhciIsImdldFNlZ21lbnRlZEJ1dHRvbiIsImV4dGVuc2lvbkFQSSIsIkV4dGVuc2lvbkFQSSIsIm9uSW5pdCIsIlBhZ2VDb250cm9sbGVyIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfaGFzTXVsdGlWaXN1YWxpemF0aW9ucyIsImFscENvbnRlbnRWaWV3IiwiX2dldERlZmF1bHRQYXRoIiwiZGVza3RvcCIsImdldEFwcENvbXBvbmVudCIsImdldFJvdXRlclByb3h5Iiwid2FpdEZvclJvdXRlTWF0Y2hCZWZvcmVOYXZpZ2F0aW9uIiwiX3NldEluaXRMb2FkIiwib25FeGl0IiwiZGVzdHJveSIsImFUYWJsZXMiLCJfZ2V0Q29udHJvbHMiLCJFZGl0U3RhdGUiLCJpc0VkaXRTdGF0ZURpcnR5Iiwib1RhYmxlQmluZGluZyIsImdldFJvd0JpbmRpbmciLCJDb21tb25VdGlscyIsIl9pc0ZjbEVuYWJsZWQiLCJyZWZyZXNoIiwic1VwZGF0ZVRpbWVyIiwiZm5VcGRhdGVUYWJsZUFjdGlvbnMiLCJfdXBkYXRlVGFibGVBY3Rpb25zIiwiZGV0YWNoRGF0YVJlY2VpdmVkIiwiYXR0YWNoRGF0YVJlY2VpdmVkIiwic2V0RWRpdFN0YXRlUHJvY2Vzc2VkIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJ2aWV3SWQiLCJnZXRJZCIsInBhZ2VSZWFkeSIsIndhaXRGb3IiLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJhcHBseUFwcFN0YXRlIiwib25CZWZvcmVSZW5kZXJpbmciLCJvblBhZ2VSZWFkeSIsImZvcmNlRm9jdXMiLCJfc2V0SW5pdGlhbEZvY3VzIiwiZ2V0U2hlbGxTZXJ2aWNlcyIsInNldEJhY2tOYXZpZ2F0aW9uIiwidW5kZWZpbmVkIiwib25WaWV3TmVlZHNSZWZyZXNoIiwic2xpY2UiLCJvbkFmdGVyQ2xlYXIiLCJhSUJOQWN0aW9ucyIsImdldElCTkFjdGlvbnMiLCJvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwIiwiSlNPTiIsInBhcnNlIiwiQ29tbW9uSGVscGVyIiwicGFyc2VDdXN0b21EYXRhIiwiRGVsZWdhdGVVdGlsIiwiZ2V0Q3VzdG9tRGF0YSIsImFTZWxlY3RlZENvbnRleHRzIiwiZ2V0U2VsZWN0ZWRDb250ZXh0cyIsIkRlbGV0ZUhlbHBlciIsInVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzIiwiQWN0aW9uUnVudGltZSIsInNldEFjdGlvbkVuYWJsZW1lbnQiLCJ1cGRhdGVEYXRhRmllbGRGb3JJQk5CdXR0b25zVmlzaWJpbGl0eSIsIl9zY3JvbGxUYWJsZXNUb1JvdyIsInNSb3dQYXRoIiwiVGFibGVTY3JvbGxlciIsInNjcm9sbFRhYmxlVG9Sb3ciLCJkeW5hbWljUGFnZSIsImlzSGVhZGVyRXhwYW5kZWQiLCJnZXRIZWFkZXJFeHBhbmRlZCIsImdldFNob3dNZXNzYWdlcyIsInNldFNob3dNZXNzYWdlcyIsImZpcnN0RW1wdHlNYW5kYXRvcnlGaWVsZCIsImdldEZpbHRlckl0ZW1zIiwiZmluZCIsIm9GaWx0ZXJJdGVtIiwiZ2V0UmVxdWlyZWQiLCJfaXNJbml0TG9hZEVuYWJsZWQiLCJfZ2V0RmlsdGVyQmFyQ29udHJvbElkIiwiZm9jdXNSb3ciLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJvTWFuaWZlc3RFbnRyeSIsImdldE1hbmlmZXN0RW50cnkiLCJ0aXRsZSIsInN1YnRpdGxlIiwic3ViVGl0bGUiLCJpbnRlbnQiLCJpY29uIiwiX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbElkIiwiX2dldEFkYXB0YXRpb25GaWx0ZXJCYXJDb250cm9sIiwiYWRhcHRhdGlvbkZpbHRlckJhciIsImdldEluYnVpbHRGaWx0ZXIiLCJzQ29udHJvbCIsInNTZWdtZW50ZWRCdXR0b25JZCIsIl9nZXRDb250cm9sRnJvbVBhZ2VNb2RlbFByb3BlcnR5Iiwic1BhdGgiLCJjb250cm9sSWQiLCJfZ2V0UGFnZU1vZGVsIiwic1Zpc3VhbEZpbHRlckJhcklkIiwiU3RhYmxlSWRIZWxwZXIiLCJnZW5lcmF0ZSIsIl9nZXRGaWx0ZXJCYXJWYXJpYW50Q29udHJvbCIsIl9pc011bHRpTW9kZSIsIm9Db250cm9sIiwiZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2wiLCJjb250ZW50Iiwic0tleSIsImFDb250cm9scyIsIm9UYWJNdWx0aU1vZGUiLCJpbmRleE9mIiwicHVzaCIsImRlZmF1bHRQYXRoIiwiTGlzdFJlcG9ydFRlbXBsYXRpbmciLCJnZXREZWZhdWx0UGF0aCIsImluaXRMb2FkTW9kZSIsImluaXRpYWxMb2FkIiwiRW5hYmxlZCIsIl9kaXNhYmxlSW5pdExvYWQiLCJzZXRTdXNwZW5kU2VsZWN0aW9uIiwiX2FwcGx5QXV0b21hdGljYWxseU9uU3RhbmRhcmRWYXJpYW50IiwidmFyaWFudE1hbmFnZW1lbnRJZCIsImdldFZhcmlhbnRCYWNrUmVmZXJlbmNlIiwiZ2V0RGF0YSIsInZhcmlhbnRNYW5hZ2VtZW50IiwicmVnaXN0ZXJBcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudCIsImJpbmQiLCJfc2V0U2hhcmVNb2RlbCIsImZuR2V0VXNlciIsIk9iamVjdFBhdGgiLCJnZXQiLCJvU2hhcmVJbmZvIiwiYm9va21hcmtUaXRsZSIsImRvY3VtZW50IiwiYm9va21hcmtDdXN0b21VcmwiLCJzSGFzaCIsImhhc2hlciIsImdldEhhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJpc1NoYXJlSW5KYW1BY3RpdmUiLCJpc0phbUFjdGl2ZSIsIm9UZW1wbGF0ZVByaXZhdGVNb2RlbCIsImdldE93bmVyQ29tcG9uZW50IiwiZ2V0TW9kZWwiLCJtQ2FjaGUiLCJpZ25vcmVkRmllbGRzIiwiYUNoYXJ0cyIsInNDaGFydEVudGl0eVBhdGgiLCJzQ2hhcnRFbnRpdHlTZXQiLCJzQ2FjaGVLZXkiLCJnZXROb3RBcHBsaWNhYmxlRmlsdGVycyIsIl9pc0ZpbHRlckJhckhpZGRlbiIsImhpZGVGaWx0ZXJCYXIiLCJWYXJpYW50TWFuYWdlbWVudCIsInZhcmlhbnRzIiwiZ2V0VmFyaWFudHMiLCJjdXJyZW50VmFyaWFudCIsInZhcmlhbnQiLCJleGVjdXRlT25TZWxlY3QiLCJBdXRvIiwiZ2V0U3RhbmRhcmRWYXJpYW50S2V5IiwiZ2V0Q3VycmVudFZhcmlhbnRLZXkiLCJvQ29uZGl0aW9ucyIsInN0YXJ0c1dpdGgiLCJzdGFuZGFyZFZhcmlhbnQiLCJpc1RhYmxlQm91bmQiLCJvSW5uZXJDaGFydCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsIl9nZXRDaGFydCIsImlzQm91bmQiLCJnZXRCaW5kaW5nSW5mbyIsInNFbnRpdHlTZXQiLCJlbnRpdHlTZXQiLCJzZXROb0RhdGEiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnRDb250cm9sbGVyLmNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgdHlwZSBEeW5hbWljUGFnZSBmcm9tIFwic2FwL2YvRHluYW1pY1BhZ2VcIjtcbmltcG9ydCBBY3Rpb25SdW50aW1lIGZyb20gXCJzYXAvZmUvY29yZS9BY3Rpb25SdW50aW1lXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCBJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCBJbnRlcm5hbFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsUm91dGluZ1wiO1xuaW1wb3J0IEtQSU1hbmFnZW1lbnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0tQSU1hbmFnZW1lbnRcIjtcbmltcG9ydCBNYXNzRWRpdCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvTWFzc0VkaXRcIjtcbmltcG9ydCBQbGFjZWhvbGRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUGxhY2Vob2xkZXJcIjtcbmltcG9ydCBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBTaWRlRWZmZWN0cyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2lkZUVmZmVjdHNcIjtcbmltcG9ydCBWaWV3U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB7IExpc3RSZXBvcnREZWZpbml0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvdGVtcGxhdGVzL0xpc3RSZXBvcnRDb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG5cdGRlZmluZVVJNUNsYXNzLFxuXHRleHRlbnNpYmxlLFxuXHRmaW5hbEV4dGVuc2lvbixcblx0cHJpdmF0ZUV4dGVuc2lvbixcblx0cHVibGljRXh0ZW5zaW9uLFxuXHR1c2luZ0V4dGVuc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBEZWxldGVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRGVsZXRlSGVscGVyXCI7XG5pbXBvcnQgRWRpdFN0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0VkaXRTdGF0ZVwiO1xuaW1wb3J0IE1lc3NhZ2VTdHJpcCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXNzYWdlU3RyaXBcIjtcbmltcG9ydCB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlc291cmNlTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgKiBhcyBTdGFibGVJZEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IENvcmVMaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBWaWV3RGF0YSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBDaGFydFV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0VXRpbHNcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IE11bHRpcGxlTW9kZUNvbnRyb2wgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9jb250cm9scy9NdWx0aXBsZU1vZGVDb250cm9sXCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgVGFibGVTY3JvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9UYWJsZVNjcm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBTZWdtZW50ZWRCdXR0b24gZnJvbSBcInNhcC9tL1NlZ21lbnRlZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IHsgYmluZGluZ1BhcnNlciB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHsgc3lzdGVtIH0gZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgaGFzaGVyIGZyb20gXCJzYXAvdWkvdGhpcmRwYXJ0eS9oYXNoZXJcIjtcbmltcG9ydCAqIGFzIExpc3RSZXBvcnRUZW1wbGF0aW5nIGZyb20gXCIuL0xpc3RSZXBvcnRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGUgZnJvbSBcIi4vb3ZlcnJpZGVzL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IFNoYXJlT3ZlcnJpZGVzIGZyb20gXCIuL292ZXJyaWRlcy9TaGFyZVwiO1xuaW1wb3J0IFZpZXdTdGF0ZU92ZXJyaWRlcyBmcm9tIFwiLi9vdmVycmlkZXMvVmlld1N0YXRlXCI7XG5cbmNvbnN0IFRlbXBsYXRlQ29udGVudFZpZXcgPSBDb3JlTGlicmFyeS5UZW1wbGF0ZUNvbnRlbnRWaWV3LFxuXHRJbml0aWFsTG9hZE1vZGUgPSBDb3JlTGlicmFyeS5Jbml0aWFsTG9hZE1vZGU7XG5cbi8qKlxuICogQ29udHJvbGxlciBjbGFzcyBmb3IgdGhlIGxpc3QgcmVwb3J0IHBhZ2UsIHVzZWQgaW5zaWRlIGFuIFNBUCBGaW9yaSBlbGVtZW50cyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydC5MaXN0UmVwb3J0Q29udHJvbGxlclwiKVxuY2xhc3MgTGlzdFJlcG9ydENvbnRyb2xsZXIgZXh0ZW5kcyBQYWdlQ29udHJvbGxlciB7XG5cdEB1c2luZ0V4dGVuc2lvbihcblx0XHRJbnRlcm5hbFJvdXRpbmcub3ZlcnJpZGUoe1xuXHRcdFx0b25BZnRlckJpbmRpbmc6IGZ1bmN0aW9uICh0aGlzOiBJbnRlcm5hbFJvdXRpbmcpIHtcblx0XHRcdFx0KHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcikuX29uQWZ0ZXJCaW5kaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSlcblx0KVxuXHRfcm91dGluZyE6IEludGVybmFsUm91dGluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oXG5cdFx0SW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24ub3ZlcnJpZGUoe1xuXHRcdFx0Z2V0RW50aXR5U2V0OiBmdW5jdGlvbiAodGhpczogSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0cmV0dXJuICh0aGlzLmJhc2UgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLmdldEN1cnJlbnRFbnRpdHlTZXQoKTtcblx0XHRcdH1cblx0XHR9KVxuXHQpXG5cdF9pbnRlbnRCYXNlZE5hdmlnYXRpb24hOiBJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2lkZUVmZmVjdHMpXG5cdHNpZGVFZmZlY3RzITogU2lkZUVmZmVjdHM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVudEJhc2VkTmF2aWdhdGlvbi5vdmVycmlkZShJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSkpXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbiE6IEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2hhcmUub3ZlcnJpZGUoU2hhcmVPdmVycmlkZXMpKVxuXHRzaGFyZSE6IFNoYXJlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihWaWV3U3RhdGUub3ZlcnJpZGUoVmlld1N0YXRlT3ZlcnJpZGVzKSlcblx0dmlld1N0YXRlITogVmlld1N0YXRlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihLUElNYW5hZ2VtZW50KVxuXHRrcGlNYW5hZ2VtZW50ITogS1BJTWFuYWdlbWVudDtcblxuXHRAdXNpbmdFeHRlbnNpb24oUGxhY2Vob2xkZXIpXG5cdHBsYWNlaG9sZGVyITogUGxhY2Vob2xkZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKE1hc3NFZGl0KVxuXHRtYXNzRWRpdCE6IE1hc3NFZGl0O1xuXG5cdHByb3RlY3RlZCBleHRlbnNpb25BUEk/OiBFeHRlbnNpb25BUEk7XG5cblx0cHJpdmF0ZSBmaWx0ZXJCYXJDb25kaXRpb25zPzogYW55O1xuXG5cdHByaXZhdGUgc1VwZGF0ZVRpbWVyPzogYW55O1xuXG5cdHByaXZhdGUgaGFzUGVuZGluZ0NoYXJ0Q2hhbmdlcz86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBoYXNQZW5kaW5nVGFibGVDaGFuZ2VzPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogR2V0IHRoZSBleHRlbnNpb24gQVBJIGZvciB0aGUgY3VycmVudCBwYWdlLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gQVBJLlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGdldEV4dGVuc2lvbkFQSSgpOiBFeHRlbnNpb25BUEkge1xuXHRcdGlmICghdGhpcy5leHRlbnNpb25BUEkpIHtcblx0XHRcdHRoaXMuZXh0ZW5zaW9uQVBJID0gbmV3IEV4dGVuc2lvbkFQSSh0aGlzKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0b25Jbml0KCkge1xuXHRcdFBhZ2VDb250cm9sbGVyLnByb3RvdHlwZS5vbkluaXQuYXBwbHkodGhpcyk7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhhc1BlbmRpbmdGaWx0ZXJzXCIsIHRydWUpO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhpZGVEcmFmdEluZm9cIiwgZmFsc2UpO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInVvbVwiLCB7fSk7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwic2NhbGVmYWN0b3JcIiwge30pO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInNjYWxlZmFjdG9yTnVtYmVyXCIsIHt9KTtcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjdXJyZW5jeVwiLCB7fSk7XG5cblx0XHRpZiAodGhpcy5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRsZXQgYWxwQ29udGVudFZpZXcgPSB0aGlzLl9nZXREZWZhdWx0UGF0aCgpO1xuXHRcdFx0aWYgKCFzeXN0ZW0uZGVza3RvcCAmJiBhbHBDb250ZW50VmlldyA9PT0gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQpIHtcblx0XHRcdFx0YWxwQ29udGVudFZpZXcgPSBUZW1wbGF0ZUNvbnRlbnRWaWV3LkNoYXJ0O1xuXHRcdFx0fVxuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiYWxwQ29udGVudFZpZXdcIiwgYWxwQ29udGVudFZpZXcpO1xuXHRcdH1cblxuXHRcdC8vIFN0b3JlIGNvbmRpdGlvbnMgZnJvbSBmaWx0ZXIgYmFyXG5cdFx0Ly8gdGhpcyBpcyBsYXRlciB1c2VkIGJlZm9yZSBuYXZpZ2F0aW9uIHRvIGdldCBjb25kaXRpb25zIGFwcGxpZWQgb24gdGhlIGZpbHRlciBiYXJcblx0XHR0aGlzLmZpbHRlckJhckNvbmRpdGlvbnMgPSB7fTtcblxuXHRcdC8vIEFzIEFwcFN0YXRlSGFuZGxlci5hcHBseUFwcFN0YXRlIHRyaWdnZXJzIGEgbmF2aWdhdGlvbiB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBpdCB3aWxsXG5cdFx0Ly8gaGFwcGVuIGFmdGVyIHRoZSByb3V0ZU1hdGNoIGV2ZW50IGhhcyBiZWVuIHByb2Nlc3NlZCAob3RoZXJ3aXNlIHRoZSByb3V0ZXIgZ2V0cyBicm9rZW4pXG5cdFx0dGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRSb3V0ZXJQcm94eSgpLndhaXRGb3JSb3V0ZU1hdGNoQmVmb3JlTmF2aWdhdGlvbigpO1xuXG5cdFx0Ly8gQ29uZmlndXJlIHRoZSBpbml0aWFsIGxvYWQgc2V0dGluZ3Ncblx0XHR0aGlzLl9zZXRJbml0TG9hZCgpO1xuXHR9XG5cblx0b25FeGl0KCkge1xuXHRcdGRlbGV0ZSB0aGlzLmZpbHRlckJhckNvbmRpdGlvbnM7XG5cdFx0aWYgKHRoaXMuZXh0ZW5zaW9uQVBJKSB7XG5cdFx0XHR0aGlzLmV4dGVuc2lvbkFQSS5kZXN0cm95KCk7XG5cdFx0fVxuXHRcdGRlbGV0ZSB0aGlzLmV4dGVuc2lvbkFQSTtcblx0fVxuXG5cdF9vbkFmdGVyQmluZGluZygpIHtcblx0XHRjb25zdCBhVGFibGVzID0gdGhpcy5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKTtcblx0XHRpZiAoRWRpdFN0YXRlLmlzRWRpdFN0YXRlRGlydHkoKSkge1xuXHRcdFx0dGhpcy5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpPy5pbnZhbGlkYXRlQ29udGVudCgpO1xuXHRcdFx0Y29uc3Qgb1RhYmxlQmluZGluZyA9IHRoaXMuX2dldFRhYmxlKCk/LmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGlmIChvVGFibGVCaW5kaW5nKSB7XG5cdFx0XHRcdGlmIChDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5nZXRWaWV3KCkpLl9pc0ZjbEVuYWJsZWQoKSkge1xuXHRcdFx0XHRcdC8vIHRoZXJlIGlzIGFuIGlzc3VlIGlmIHdlIHVzZSBhIHRpbWVvdXQgd2l0aCBhIGtlcHQgYWxpdmUgY29udGV4dCB1c2VkIG9uIGFub3RoZXIgcGFnZVxuXHRcdFx0XHRcdG9UYWJsZUJpbmRpbmcucmVmcmVzaCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmICghdGhpcy5zVXBkYXRlVGltZXIpIHtcblx0XHRcdFx0XHRcdHRoaXMuc1VwZGF0ZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG9UYWJsZUJpbmRpbmcucmVmcmVzaCgpO1xuXHRcdFx0XHRcdFx0XHRkZWxldGUgdGhpcy5zVXBkYXRlVGltZXI7XG5cdFx0XHRcdFx0XHR9LCAwKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBVcGRhdGUgYWN0aW9uIGVuYWJsZW1lbnQgYW5kIHZpc2liaWxpdHkgdXBvbiB0YWJsZSBkYXRhIHVwZGF0ZS5cblx0XHRcdFx0XHRjb25zdCBmblVwZGF0ZVRhYmxlQWN0aW9ucyA9ICgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuX3VwZGF0ZVRhYmxlQWN0aW9ucyhhVGFibGVzKTtcblx0XHRcdFx0XHRcdG9UYWJsZUJpbmRpbmcuZGV0YWNoRGF0YVJlY2VpdmVkKGZuVXBkYXRlVGFibGVBY3Rpb25zKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdG9UYWJsZUJpbmRpbmcuYXR0YWNoRGF0YVJlY2VpdmVkKGZuVXBkYXRlVGFibGVBY3Rpb25zKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0RWRpdFN0YXRlLnNldEVkaXRTdGF0ZVByb2Nlc3NlZCgpO1xuXHRcdH1cblxuXHRcdGlmICghdGhpcy5zVXBkYXRlVGltZXIpIHtcblx0XHRcdHRoaXMuX3VwZGF0ZVRhYmxlQWN0aW9ucyhhVGFibGVzKTtcblx0XHR9XG5cblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0aWYgKCFpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcImluaXRpYWxWYXJpYW50QXBwbGllZFwiKSkge1xuXHRcdFx0Y29uc3Qgdmlld0lkID0gdGhpcy5nZXRWaWV3KCkuZ2V0SWQoKTtcblx0XHRcdHRoaXMucGFnZVJlYWR5LndhaXRGb3IodGhpcy5nZXRBcHBDb21wb25lbnQoKS5nZXRBcHBTdGF0ZUhhbmRsZXIoKS5hcHBseUFwcFN0YXRlKHZpZXdJZCwgdGhpcy5nZXRWaWV3KCkpKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaW5pdGlhbFZhcmlhbnRBcHBsaWVkXCIsIHRydWUpO1xuXHRcdH1cblx0fVxuXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCkge1xuXHRcdFBhZ2VDb250cm9sbGVyLnByb3RvdHlwZS5vbkJlZm9yZVJlbmRlcmluZy5hcHBseSh0aGlzKTtcblx0fVxuXG5cdGZvcm1hdHRlcnMgPSB7XG5cdFx0c2V0QUxQQ29udHJvbE1lc3NhZ2VTdHJpcCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgYUlnbm9yZWRGaWVsZHM6IGFueVtdLCBiSXNDaGFydDogYW55LCBvQXBwbHlTdXBwb3J0ZWQ/OiBhbnkpIHtcblx0XHRcdGxldCBzVGV4dCA9IFwiXCI7XG5cdFx0XHRiSXNDaGFydCA9IGJJc0NoYXJ0ID09PSBcInRydWVcIiB8fCBiSXNDaGFydCA9PT0gdHJ1ZTtcblx0XHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHRpZiAob0ZpbHRlckJhciAmJiBBcnJheS5pc0FycmF5KGFJZ25vcmVkRmllbGRzKSAmJiBhSWdub3JlZEZpZWxkcy5sZW5ndGggPiAwICYmIGJJc0NoYXJ0KSB7XG5cdFx0XHRcdGNvbnN0IGFJZ25vcmVkTGFiZWxzID0gTWVzc2FnZVN0cmlwLmdldExhYmVscyhcblx0XHRcdFx0XHRhSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0XHRvRmlsdGVyQmFyLmRhdGEoXCJlbnRpdHlUeXBlXCIpLFxuXHRcdFx0XHRcdG9GaWx0ZXJCYXIsXG5cdFx0XHRcdFx0Z2V0UmVzb3VyY2VNb2RlbChvRmlsdGVyQmFyKVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBiSXNTZWFyY2hJZ25vcmVkID0gIW9BcHBseVN1cHBvcnRlZC5lbmFibGVTZWFyY2g7XG5cdFx0XHRcdHNUZXh0ID0gYklzQ2hhcnRcblx0XHRcdFx0XHQ/IE1lc3NhZ2VTdHJpcC5nZXRBTFBUZXh0KGFJZ25vcmVkTGFiZWxzLCBvRmlsdGVyQmFyLCBiSXNTZWFyY2hJZ25vcmVkKVxuXHRcdFx0XHRcdDogTWVzc2FnZVN0cmlwLmdldFRleHQoYUlnbm9yZWRMYWJlbHMsIG9GaWx0ZXJCYXIsIFwiXCIpO1xuXHRcdFx0XHRyZXR1cm4gc1RleHQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdG9uUGFnZVJlYWR5KG1QYXJhbWV0ZXJzOiBhbnkpIHtcblx0XHRpZiAobVBhcmFtZXRlcnMuZm9yY2VGb2N1cykge1xuXHRcdFx0dGhpcy5fc2V0SW5pdGlhbEZvY3VzKCk7XG5cdFx0fVxuXHRcdC8vIFJlbW92ZSB0aGUgaGFuZGxlciBvbiBiYWNrIG5hdmlnYXRpb24gdGhhdCBkaXNwbGF5cyBEcmFmdCBjb25maXJtYXRpb25cblx0XHR0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldFNoZWxsU2VydmljZXMoKS5zZXRCYWNrTmF2aWdhdGlvbih1bmRlZmluZWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCBjYWxsZWQgd2hlbiB0aGUgY29udGVudCBvZiBhIGN1c3RvbSB2aWV3IHVzZWQgaW4gYSBsaXN0IHJlcG9ydCBuZWVkcyB0byBiZSByZWZyZXNoZWQuXG5cdCAqIFRoaXMgaGFwcGVucyBlaXRoZXIgd2hlbiB0aGVyZSBpcyBhIGNoYW5nZSBvbiB0aGUgRmlsdGVyQmFyIGFuZCB0aGUgc2VhcmNoIGlzIHRyaWdnZXJlZCxcblx0ICogb3Igd2hlbiBhIHRhYiB3aXRoIGN1c3RvbSBjb250ZW50IGlzIHNlbGVjdGVkLlxuXHQgKiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGluIGNhc2Ugb2YgY3VzdG9taXphdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIG1QYXJhbWV0ZXJzIE1hcCBjb250YWluaW5nIHRoZSBmaWx0ZXIgY29uZGl0aW9ucyBvZiB0aGUgRmlsdGVyQmFyLCB0aGUgY3VycmVudFRhYklEXG5cdCAqIGFuZCB0aGUgdmlldyByZWZyZXNoIGNhdXNlICh0YWJDaGFuZ2VkIG9yIHNlYXJjaCkuXG5cdCAqIFRoZSBtYXAgbG9va3MgbGlrZSB0aGlzOlxuXHQgKiA8Y29kZT48cHJlPlxuXHQgKiBcdHtcblx0ICogXHRcdGZpbHRlckNvbmRpdGlvbnM6IHtcblx0ICogXHRcdFx0Q291bnRyeTogW1xuXHQgKiBcdFx0XHRcdHtcblx0ICogXHRcdFx0XHRcdG9wZXJhdG9yOiBcIkVRXCJcblx0ICpcdFx0XHRcdFx0dmFsaWRhdGVkOiBcIk5vdFZhbGlkYXRlZFwiXG5cdCAqXHRcdFx0XHRcdHZhbHVlczogW1wiR2VybWFueVwiLCAuLi5dXG5cdCAqIFx0XHRcdFx0fSxcblx0ICogXHRcdFx0XHQuLi5cblx0ICogXHRcdFx0XVxuXHQgKiBcdFx0XHQuLi5cblx0ICogXHRcdH0sXG5cdCAqXHRcdGN1cnJlbnRUYWJJZDogXCJmZTo6Q3VzdG9tVGFiOjp0YWIxXCIsXG5cdCAqXHRcdHJlZnJlc2hDYXVzZTogXCJ0YWJDaGFuZ2VkXCIgfCBcInNlYXJjaFwiXG5cdCAqXHR9XG5cdCAqIDwvcHJlPjwvY29kZT5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdG9uVmlld05lZWRzUmVmcmVzaChtUGFyYW1ldGVyczogYW55KSB7XG5cdFx0LyogVG8gYmUgb3ZlcnJpZGVuICovXG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIGNhbGxlZCB3aGVuIGEgZmlsdGVyIG9yIHNlYXJjaCB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGluIHRoZSBGaWx0ZXJCYXIsXG5cdCAqIGJ1dCBoYXMgbm90IGJlZW4gdmFsaWRhdGVkIHlldCBieSB0aGUgZW5kIHVzZXIgKHdpdGggdGhlICdHbycgb3IgJ1NlYXJjaCcgYnV0dG9uKS5cblx0ICogVHlwaWNhbGx5LCB0aGUgY29udGVudCBvZiB0aGUgY3VycmVudCB0YWIgaXMgZ3JleWVkIG91dCB1bnRpbCB0aGUgZmlsdGVycyBhcmUgdmFsaWRhdGVkLlxuXHQgKiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGluIGNhc2Ugb2YgY3VzdG9taXphdGlvbi5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHRvblBlbmRpbmdGaWx0ZXJzKCkge1xuXHRcdC8qIFRvIGJlIG92ZXJyaWRlbiAqL1xuXHR9XG5cblx0Z2V0Q3VycmVudEVudGl0eVNldCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0VGFibGUoKT8uZGF0YShcInRhcmdldENvbGxlY3Rpb25QYXRoXCIpLnNsaWNlKDEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCBjYWxsZWQgd2hlbiB0aGUgJ0NsZWFyJyBidXR0b24gb24gdGhlIEZpbHRlckJhciBpcyBwcmVzc2VkLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdG9uQWZ0ZXJDbGVhcigpIHtcblx0XHQvKiBUbyBiZSBvdmVycmlkZW4gKi9cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIG1ldGhvZCBpbml0aWF0ZXMgdGhlIHVwZGF0ZSBvZiB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgRGF0YUZpZWxkRm9yQWN0aW9uIGFuZCB0aGUgdmlzaWJsZSBzdGF0ZSBvZiB0aGUgRGF0YUZpZWxkRm9ySUJOIGJ1dHRvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSBhVGFibGVzIEFycmF5IG9mIHRhYmxlcyBpbiB0aGUgbGlzdCByZXBvcnRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF91cGRhdGVUYWJsZUFjdGlvbnMoYVRhYmxlczogYW55KSB7XG5cdFx0bGV0IGFJQk5BY3Rpb25zOiBhbnlbXSA9IFtdO1xuXHRcdGFUYWJsZXMuZm9yRWFjaChmdW5jdGlvbiAob1RhYmxlOiBhbnkpIHtcblx0XHRcdGFJQk5BY3Rpb25zID0gQ29tbW9uVXRpbHMuZ2V0SUJOQWN0aW9ucyhvVGFibGUsIGFJQk5BY3Rpb25zKTtcblx0XHRcdC8vIFVwZGF0ZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgRGF0YUZpZWxkRm9yQWN0aW9uIGJ1dHRvbnMgb24gdGFibGUgdG9vbGJhclxuXHRcdFx0Ly8gVGhlIHNhbWUgaXMgYWxzbyBwZXJmb3JtZWQgb24gVGFibGUgc2VsZWN0aW9uQ2hhbmdlIGV2ZW50XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSxcblx0XHRcdFx0b0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcCA9IEpTT04ucGFyc2UoXG5cdFx0XHRcdFx0Q29tbW9uSGVscGVyLnBhcnNlQ3VzdG9tRGF0YShEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YShvVGFibGUsIFwib3BlcmF0aW9uQXZhaWxhYmxlTWFwXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRhU2VsZWN0ZWRDb250ZXh0cyA9IG9UYWJsZS5nZXRTZWxlY3RlZENvbnRleHRzKCk7XG5cblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInNlbGVjdGVkQ29udGV4dHNcIiwgYVNlbGVjdGVkQ29udGV4dHMpO1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwibnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCIsIGFTZWxlY3RlZENvbnRleHRzLmxlbmd0aCk7XG5cdFx0XHQvLyBSZWZyZXNoIGVuYWJsZW1lbnQgb2YgZGVsZXRlIGJ1dHRvblxuXHRcdFx0RGVsZXRlSGVscGVyLnVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgYVNlbGVjdGVkQ29udGV4dHMpO1xuXG5cdFx0XHRBY3Rpb25SdW50aW1lLnNldEFjdGlvbkVuYWJsZW1lbnQob0ludGVybmFsTW9kZWxDb250ZXh0LCBvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwLCBhU2VsZWN0ZWRDb250ZXh0cywgXCJ0YWJsZVwiKTtcblx0XHR9KTtcblx0XHRDb21tb25VdGlscy51cGRhdGVEYXRhRmllbGRGb3JJQk5CdXR0b25zVmlzaWJpbGl0eShhSUJOQWN0aW9ucywgdGhpcy5nZXRWaWV3KCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIHNjcm9sbHMgdG8gYSBzcGVjaWZpYyByb3cgb24gYWxsIHRoZSBhdmFpbGFibGUgdGFibGVzLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0Lkxpc3RSZXBvcnRDb250cm9sbGVyLmNvbnRyb2xsZXIjX3Njcm9sbFRhYmxlc1RvUm93XG5cdCAqIEBwYXJhbSBzUm93UGF0aCBUaGUgcGF0aCBvZiB0aGUgdGFibGUgcm93IGNvbnRleHQgdG8gYmUgc2Nyb2xsZWQgdG9cblx0ICovXG5cdF9zY3JvbGxUYWJsZXNUb1JvdyhzUm93UGF0aDogc3RyaW5nKSB7XG5cdFx0dGhpcy5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKS5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0VGFibGVTY3JvbGxlci5zY3JvbGxUYWJsZVRvUm93KG9UYWJsZSwgc1Jvd1BhdGgpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGluaXRpYWwgZm9jdXMgaW4gYSBsaXN0IHJlcG9ydCBiYXNlZCBvbiB0aGUgVXNlciBFeHBlcmllbmNlIGd1aWRlbGluZXMuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlciNfc2V0SW5pdGlhbEZvY3VzXG5cdCAqL1xuXHRfc2V0SW5pdGlhbEZvY3VzKCkge1xuXHRcdGNvbnN0IGR5bmFtaWNQYWdlID0gdGhpcy5fZ2V0RHluYW1pY0xpc3RSZXBvcnRDb250cm9sKCksXG5cdFx0XHRpc0hlYWRlckV4cGFuZGVkID0gZHluYW1pY1BhZ2UuZ2V0SGVhZGVyRXhwYW5kZWQoKSxcblx0XHRcdGZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKSBhcyBhbnk7XG5cdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0Ly9FbmFibGluZyBtYW5kYXRvcnkgZmlsdGVyIGZpZWxkcyBtZXNzYWdlIGRpYWxvZ1xuXHRcdFx0aWYgKCFmaWx0ZXJCYXIuZ2V0U2hvd01lc3NhZ2VzKCkpIHtcblx0XHRcdFx0ZmlsdGVyQmFyLnNldFNob3dNZXNzYWdlcyh0cnVlKTtcblx0XHRcdH1cblx0XHRcdGlmIChpc0hlYWRlckV4cGFuZGVkKSB7XG5cdFx0XHRcdGNvbnN0IGZpcnN0RW1wdHlNYW5kYXRvcnlGaWVsZCA9IGZpbHRlckJhci5nZXRGaWx0ZXJJdGVtcygpLmZpbmQoZnVuY3Rpb24gKG9GaWx0ZXJJdGVtOiBhbnkpIHtcblx0XHRcdFx0XHRyZXR1cm4gb0ZpbHRlckl0ZW0uZ2V0UmVxdWlyZWQoKSAmJiBvRmlsdGVySXRlbS5nZXRDb25kaXRpb25zKCkubGVuZ3RoID09PSAwO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly9Gb2N1c2luZyBvbiB0aGUgZmlyc3QgZW1wdHkgbWFuZGF0b3J5IGZpbHRlciBmaWVsZCwgb3Igb24gdGhlIGZpcnN0IGZpbHRlciBmaWVsZCBpZiB0aGUgdGFibGUgZGF0YSBpcyBsb2FkZWRcblx0XHRcdFx0aWYgKGZpcnN0RW1wdHlNYW5kYXRvcnlGaWVsZCkge1xuXHRcdFx0XHRcdGZpcnN0RW1wdHlNYW5kYXRvcnlGaWVsZC5mb2N1cygpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuX2lzSW5pdExvYWRFbmFibGVkKCkgJiYgZmlsdGVyQmFyLmdldEZpbHRlckl0ZW1zKCkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdC8vQkNQOiAyMzgwMDA4NDA2IEFkZCBjaGVjayBmb3IgYXZhaWxhYmxlIGZpbHRlckl0ZW1zXG5cdFx0XHRcdFx0ZmlsdGVyQmFyLmdldEZpbHRlckl0ZW1zKClbMF0uZm9jdXMoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvL0ZvY3VzaW5nIG9uIHRoZSBHbyBidXR0b25cblx0XHRcdFx0XHR0aGlzLmdldFZpZXcoKS5ieUlkKGAke3RoaXMuX2dldEZpbHRlckJhckNvbnRyb2xJZCgpfS1idG5TZWFyY2hgKT8uZm9jdXMoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh0aGlzLl9pc0luaXRMb2FkRW5hYmxlZCgpKSB7XG5cdFx0XHRcdHRoaXMuX2dldFRhYmxlKClcblx0XHRcdFx0XHQ/LmZvY3VzUm93KDApXG5cdFx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBzZXR0aW5nIGluaXRpYWwgZm9jdXMgb24gdGhlIHRhYmxlIFwiLCBlcnJvcik7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2dldFRhYmxlKClcblx0XHRcdFx0Py5mb2N1c1JvdygwKVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBzZXR0aW5nIGluaXRpYWwgZm9jdXMgb24gdGhlIHRhYmxlIFwiLCBlcnJvcik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpIHtcblx0XHRjb25zdCBvTWFuaWZlc3RFbnRyeSA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5hcHBcIik7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRpdGxlOiBvTWFuaWZlc3RFbnRyeS50aXRsZSxcblx0XHRcdHN1YnRpdGxlOiBvTWFuaWZlc3RFbnRyeS5zdWJUaXRsZSB8fCBcIlwiLFxuXHRcdFx0aW50ZW50OiBcIlwiLFxuXHRcdFx0aWNvbjogXCJcIlxuXHRcdH07XG5cdH1cblxuXHRfZ2V0RmlsdGVyQmFyQ29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuYnlJZCh0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sSWQoKSkgYXMgRmlsdGVyQmFyO1xuXHR9XG5cblx0X2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuYnlJZCh0aGlzLl9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2xJZCgpKSBhcyBEeW5hbWljUGFnZTtcblx0fVxuXG5cdF9nZXRBZGFwdGF0aW9uRmlsdGVyQmFyQ29udHJvbCgpIHtcblx0XHQvLyBJZiB0aGUgYWRhcHRhdGlvbiBmaWx0ZXIgYmFyIGlzIHBhcnQgb2YgdGhlIERPTSB0cmVlLCB0aGUgXCJBZGFwdCBGaWx0ZXJcIiBkaWFsb2cgaXMgb3Blbixcblx0XHQvLyBhbmQgd2UgcmV0dXJuIHRoZSBhZGFwdGF0aW9uIGZpbHRlciBiYXIgYXMgYW4gYWN0aXZlIGNvbnRyb2wgKHZpc2libGUgZm9yIHRoZSB1c2VyKVxuXHRcdGNvbnN0IGFkYXB0YXRpb25GaWx0ZXJCYXIgPSAodGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpIGFzIGFueSkuZ2V0SW5idWlsdEZpbHRlcigpO1xuXHRcdHJldHVybiBhZGFwdGF0aW9uRmlsdGVyQmFyPy5nZXRQYXJlbnQoKSA/IGFkYXB0YXRpb25GaWx0ZXJCYXIgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0U2VnbWVudGVkQnV0dG9uKHNDb250cm9sOiBhbnkpIHtcblx0XHRjb25zdCBzU2VnbWVudGVkQnV0dG9uSWQgPSAoc0NvbnRyb2wgPT09IFwiQ2hhcnRcIiA/IHRoaXMuZ2V0Q2hhcnRDb250cm9sKCkgOiB0aGlzLl9nZXRUYWJsZSgpKT8uZGF0YShcInNlZ21lbnRlZEJ1dHRvbklkXCIpO1xuXHRcdHJldHVybiB0aGlzLmdldFZpZXcoKS5ieUlkKHNTZWdtZW50ZWRCdXR0b25JZCk7XG5cdH1cblxuXHRfZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eShzUGF0aDogc3RyaW5nKSB7XG5cdFx0Y29uc3QgY29udHJvbElkID0gdGhpcy5fZ2V0UGFnZU1vZGVsKCk/LmdldFByb3BlcnR5KHNQYXRoKTtcblx0XHRyZXR1cm4gY29udHJvbElkICYmIHRoaXMuZ2V0VmlldygpLmJ5SWQoY29udHJvbElkKTtcblx0fVxuXG5cdF9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2xJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvZHluYW1pY0xpc3RSZXBvcnRJZFwiKSB8fCBcIlwiO1xuXHR9XG5cblx0X2dldEZpbHRlckJhckNvbnRyb2xJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvZmlsdGVyQmFySWRcIikgfHwgXCJcIjtcblx0fVxuXG5cdGdldENoYXJ0Q29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eShcIi9zaW5nbGVDaGFydElkXCIpO1xuXHR9XG5cblx0X2dldFZpc3VhbEZpbHRlckJhckNvbnRyb2woKSB7XG5cdFx0Y29uc3Qgc1Zpc3VhbEZpbHRlckJhcklkID0gU3RhYmxlSWRIZWxwZXIuZ2VuZXJhdGUoW1widmlzdWFsRmlsdGVyXCIsIHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2xJZCgpXSk7XG5cdFx0cmV0dXJuIHNWaXN1YWxGaWx0ZXJCYXJJZCAmJiB0aGlzLmdldFZpZXcoKS5ieUlkKHNWaXN1YWxGaWx0ZXJCYXJJZCk7XG5cdH1cblxuXHRfZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2woKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoXCIvdmFyaWFudE1hbmFnZW1lbnQvaWRcIik7XG5cdH1cblxuXHRfZ2V0TXVsdGlNb2RlQ29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuYnlJZChcImZlOjpUYWJNdWx0aXBsZU1vZGU6OkNvbnRyb2xcIikgYXMgTXVsdGlwbGVNb2RlQ29udHJvbDtcblx0fVxuXG5cdF9nZXRUYWJsZSgpOiBUYWJsZSB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuX2lzTXVsdGlNb2RlKCkpIHtcblx0XHRcdGNvbnN0IG9Db250cm9sID0gdGhpcy5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpPy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5jb250ZW50O1xuXHRcdFx0cmV0dXJuIG9Db250cm9sPy5pc0EoXCJzYXAudWkubWRjLlRhYmxlXCIpID8gKG9Db250cm9sIGFzIFRhYmxlKSA6IHVuZGVmaW5lZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoXCIvc2luZ2xlVGFibGVJZFwiKSBhcyBUYWJsZTtcblx0XHR9XG5cdH1cblxuXHRfZ2V0Q29udHJvbHMoc0tleT86IGFueSkge1xuXHRcdGlmICh0aGlzLl9pc011bHRpTW9kZSgpKSB7XG5cdFx0XHRjb25zdCBhQ29udHJvbHM6IGFueVtdID0gW107XG5cdFx0XHRjb25zdCBvVGFiTXVsdGlNb2RlID0gdGhpcy5fZ2V0TXVsdGlNb2RlQ29udHJvbCgpLmNvbnRlbnQ7XG5cdFx0XHRvVGFiTXVsdGlNb2RlLmdldEl0ZW1zKCkuZm9yRWFjaCgob0l0ZW06IGFueSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvQ29udHJvbCA9IHRoaXMuZ2V0VmlldygpLmJ5SWQob0l0ZW0uZ2V0S2V5KCkpO1xuXHRcdFx0XHRpZiAob0NvbnRyb2wgJiYgc0tleSkge1xuXHRcdFx0XHRcdGlmIChvSXRlbS5nZXRLZXkoKS5pbmRleE9mKGBmZTo6JHtzS2V5fWApID4gLTEpIHtcblx0XHRcdFx0XHRcdGFDb250cm9scy5wdXNoKG9Db250cm9sKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAob0NvbnRyb2wgIT09IHVuZGVmaW5lZCAmJiBvQ29udHJvbCAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdGFDb250cm9scy5wdXNoKG9Db250cm9sKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYUNvbnRyb2xzO1xuXHRcdH0gZWxzZSBpZiAoc0tleSA9PT0gXCJDaGFydFwiKSB7XG5cdFx0XHRjb25zdCBvQ2hhcnQgPSB0aGlzLmdldENoYXJ0Q29udHJvbCgpO1xuXHRcdFx0cmV0dXJuIG9DaGFydCA/IFtvQ2hhcnRdIDogW107XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuX2dldFRhYmxlKCk7XG5cdFx0XHRyZXR1cm4gb1RhYmxlID8gW29UYWJsZV0gOiBbXTtcblx0XHR9XG5cdH1cblxuXHRfZ2V0RGVmYXVsdFBhdGgoKSB7XG5cdFx0Y29uc3QgZGVmYXVsdFBhdGggPSBMaXN0UmVwb3J0VGVtcGxhdGluZy5nZXREZWZhdWx0UGF0aCh0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvdmlld3NcIikgfHwgW10pO1xuXHRcdHN3aXRjaCAoZGVmYXVsdFBhdGgpIHtcblx0XHRcdGNhc2UgXCJwcmltYXJ5XCI6XG5cdFx0XHRcdHJldHVybiBUZW1wbGF0ZUNvbnRlbnRWaWV3LkNoYXJ0O1xuXHRcdFx0Y2FzZSBcInNlY29uZGFyeVwiOlxuXHRcdFx0XHRyZXR1cm4gVGVtcGxhdGVDb250ZW50Vmlldy5UYWJsZTtcblx0XHRcdGNhc2UgXCJib3RoXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBrbm93IGlmIExpc3RSZXBvcnQgaXMgY29uZmlndXJlZCB3aXRoIE11bHRpcGxlIFRhYmxlIG1vZGUuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfaXNNdWx0aU1vZGVcblx0ICogQHJldHVybnMgSXMgTXVsdGlwbGUgVGFibGUgbW9kZSBzZXQ/XG5cdCAqL1xuXHRfaXNNdWx0aU1vZGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5fZ2V0UGFnZU1vZGVsKCk/LmdldFByb3BlcnR5KFwiL211bHRpVmlld3NDb250cm9sXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBrbm93IGlmIExpc3RSZXBvcnQgaXMgY29uZmlndXJlZCB0byBsb2FkIGRhdGEgYXQgc3RhcnQgdXAuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBfaXNJbml0TG9hZERpc2FibGVkXG5cdCAqIEByZXR1cm5zIElzIEluaXRMb2FkIGVuYWJsZWQ/XG5cdCAqL1xuXHRfaXNJbml0TG9hZEVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaW5pdExvYWRNb2RlID0gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgYW55KS5pbml0aWFsTG9hZDtcblx0XHRyZXR1cm4gaW5pdExvYWRNb2RlID09PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZDtcblx0fVxuXG5cdF9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvaGFzTXVsdGlWaXN1YWxpemF0aW9uc1wiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gc3VzcGVuZCBzZWFyY2ggb24gdGhlIGZpbHRlciBiYXIuIFRoZSBpbml0aWFsIGxvYWRpbmcgb2YgZGF0YSBpcyBkaXNhYmxlZCBiYXNlZCBvbiB0aGUgbWFuaWZlc3QgY29uZmlndXJhdGlvbiBJbml0TG9hZCAtIERpc2FibGVkL0F1dG8uXG5cdCAqIEl0IGlzIGVuYWJsZWQgbGF0ZXIgd2hlbiB0aGUgdmlldyBzdGF0ZSBpcyBzZXQsIHdoZW4gaXQgaXMgcG9zc2libGUgdG8gcmVhbGl6ZSBpZiB0aGVyZSBhcmUgZGVmYXVsdCBmaWx0ZXJzLlxuXHQgKi9cblx0X2Rpc2FibGVJbml0TG9hZCgpIHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Ly8gY2hlY2sgZm9yIGZpbHRlciBiYXIgaGlkZGVuXG5cdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0ZmlsdGVyQmFyLnNldFN1c3BlbmRTZWxlY3Rpb24odHJ1ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCBjYWxsZWQgYnkgZmxleCB0byBkZXRlcm1pbmUgaWYgdGhlIGFwcGx5QXV0b21hdGljYWxseSBzZXR0aW5nIG9uIHRoZSB2YXJpYW50IGlzIHZhbGlkLlxuXHQgKiBDYWxsZWQgb25seSBmb3IgU3RhbmRhcmQgVmFyaWFudCBhbmQgb25seSB3aGVuIHRoZXJlIGlzIGRpc3BsYXkgdGV4dCBzZXQgZm9yIGFwcGx5QXV0b21hdGljYWxseSAoRkUgb25seSBzZXRzIGl0IGZvciBBdXRvKS5cblx0ICpcblx0ICogQHJldHVybnMgQm9vbGVhbiB0cnVlIGlmIGRhdGEgc2hvdWxkIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LCBmYWxzZSBvdGhlcndpc2Vcblx0ICovXG5cdF9hcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudCgpIHtcblx0XHQvLyBXZSBhbHdheXMgcmV0dXJuIGZhbHNlIGFuZCB0YWtlIGNhcmUgb2YgaXQgd2hlbiB2aWV3IHN0YXRlIGlzIHNldFxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25maWd1cmUgdGhlIHNldHRpbmdzIGZvciBpbml0aWFsIGxvYWQgYmFzZWQgb25cblx0ICogLSBtYW5pZmVzdCBzZXR0aW5nIGluaXRMb2FkIC0gRW5hYmxlZC9EaXNhYmxlZC9BdXRvXG5cdCAqIC0gdXNlcidzIHNldHRpbmcgb2YgYXBwbHlBdXRvbWF0aWNhbGx5IG9uIHZhcmlhbnRcblx0ICogLSBpZiB0aGVyZSBhcmUgZGVmYXVsdCBmaWx0ZXJzXG5cdCAqIFdlIGRpc2FibGUgdGhlIGZpbHRlciBiYXIgc2VhcmNoIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuYWJsZSBpdCB3aGVuIHZpZXcgc3RhdGUgaXMgc2V0LlxuXHQgKi9cblx0X3NldEluaXRMb2FkKCkge1xuXHRcdC8vIGlmIGluaXRMb2FkIGlzIERpc2FibGVkIG9yIEF1dG8sIHN3aXRjaCBvZmYgZmlsdGVyIGJhciBzZWFyY2ggdGVtcG9yYXJpbHkgYXQgc3RhcnRcblx0XHRpZiAoIXRoaXMuX2lzSW5pdExvYWRFbmFibGVkKCkpIHtcblx0XHRcdHRoaXMuX2Rpc2FibGVJbml0TG9hZCgpO1xuXHRcdH1cblx0XHQvLyBzZXQgaG9vayBmb3IgZmxleCBmb3Igd2hlbiBzdGFuZGFyZCB2YXJpYW50IGlzIHNldCAoYXQgc3RhcnQgb3IgYnkgdXNlciBhdCBydW50aW1lKVxuXHRcdC8vIHJlcXVpcmVkIHRvIG92ZXJyaWRlIHRoZSB1c2VyIHNldHRpbmcgJ2FwcGx5IGF1dG9tYXRpY2FsbHknIGJlaGF2aW91ciBpZiB0aGVyZSBhcmUgbm8gZmlsdGVyc1xuXHRcdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50SWQ6IGFueSA9IExpc3RSZXBvcnRUZW1wbGF0aW5nLmdldFZhcmlhbnRCYWNrUmVmZXJlbmNlKFxuXHRcdFx0dGhpcy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YSxcblx0XHRcdHRoaXMuX2dldFBhZ2VNb2RlbCgpPy5nZXREYXRhKCkgYXMgTGlzdFJlcG9ydERlZmluaXRpb25cblx0XHQpO1xuXHRcdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50ID0gdmFyaWFudE1hbmFnZW1lbnRJZCAmJiB0aGlzLmdldFZpZXcoKS5ieUlkKHZhcmlhbnRNYW5hZ2VtZW50SWQpO1xuXHRcdGlmICh2YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0dmFyaWFudE1hbmFnZW1lbnQucmVnaXN0ZXJBcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudCh0aGlzLl9hcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cdH1cblxuXHRfc2V0U2hhcmVNb2RlbCgpIHtcblx0XHQvLyBUT0RPOiBkZWFjdGl2YXRlZCBmb3Igbm93IC0gY3VycmVudGx5IHRoZXJlIGlzIG5vIF90ZW1wbFByaXYgYW55bW9yZSwgdG8gYmUgZGlzY3Vzc2VkXG5cdFx0Ly8gdGhpcyBtZXRob2QgaXMgY3VycmVudGx5IG5vdCBjYWxsZWQgYW55bW9yZSBmcm9tIHRoZSBpbml0IG1ldGhvZFxuXG5cdFx0Y29uc3QgZm5HZXRVc2VyID0gT2JqZWN0UGF0aC5nZXQoXCJzYXAudXNoZWxsLkNvbnRhaW5lci5nZXRVc2VyXCIpO1xuXHRcdC8vdmFyIG9NYW5pZmVzdCA9IHRoaXMuZ2V0T3duZXJDb21wb25lbnQoKS5nZXRBcHBDb21wb25lbnQoKS5nZXRNZXRhZGF0YSgpLmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWlcIik7XG5cdFx0Ly92YXIgc0Jvb2ttYXJrSWNvbiA9IChvTWFuaWZlc3QgJiYgb01hbmlmZXN0Lmljb25zICYmIG9NYW5pZmVzdC5pY29ucy5pY29uKSB8fCBcIlwiO1xuXG5cdFx0Ly9zaGFyZU1vZGVsOiBIb2xkcyBhbGwgdGhlIHNoYXJpbmcgcmVsZXZhbnQgaW5mb3JtYXRpb24gYW5kIGluZm8gdXNlZCBpbiBYTUwgdmlld1xuXHRcdGNvbnN0IG9TaGFyZUluZm8gPSB7XG5cdFx0XHRib29rbWFya1RpdGxlOiBkb2N1bWVudC50aXRsZSwgLy9UbyBuYW1lIHRoZSBib29rbWFyayBhY2NvcmRpbmcgdG8gdGhlIGFwcCB0aXRsZS5cblx0XHRcdGJvb2ttYXJrQ3VzdG9tVXJsOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGNvbnN0IHNIYXNoID0gaGFzaGVyLmdldEhhc2goKTtcblx0XHRcdFx0cmV0dXJuIHNIYXNoID8gYCMke3NIYXNofWAgOiB3aW5kb3cubG9jYXRpb24uaHJlZjtcblx0XHRcdH0sXG5cdFx0XHQvKlxuXHRcdFx0XHRcdFx0XHRUbyBiZSBhY3RpdmF0ZWQgb25jZSB0aGUgRkxQIHNob3dzIHRoZSBjb3VudCAtIHNlZSBjb21tZW50IGFib3ZlXG5cdFx0XHRcdFx0XHRcdGJvb2ttYXJrU2VydmljZVVybDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly92YXIgb1RhYmxlID0gb1RhYmxlLmdldElubmVyVGFibGUoKTsgb1RhYmxlIGlzIGFscmVhZHkgdGhlIHNhcC5mZSB0YWJsZSAoYnV0IG5vdCB0aGUgaW5uZXIgb25lKVxuXHRcdFx0XHRcdFx0XHRcdC8vIHdlIHNob3VsZCB1c2UgdGFibGUuZ2V0TGlzdEJpbmRpbmdJbmZvIGluc3RlYWQgb2YgdGhlIGJpbmRpbmdcblx0XHRcdFx0XHRcdFx0XHR2YXIgb0JpbmRpbmcgPSBvVGFibGUuZ2V0QmluZGluZyhcInJvd3NcIikgfHwgb1RhYmxlLmdldEJpbmRpbmcoXCJpdGVtc1wiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb0JpbmRpbmcgPyBmbkdldERvd25sb2FkVXJsKG9CaW5kaW5nKSA6IFwiXCI7XG5cdFx0XHRcdFx0XHRcdH0sKi9cblx0XHRcdGlzU2hhcmVJbkphbUFjdGl2ZTogISFmbkdldFVzZXIgJiYgZm5HZXRVc2VyKCkuaXNKYW1BY3RpdmUoKVxuXHRcdH07XG5cblx0XHRjb25zdCBvVGVtcGxhdGVQcml2YXRlTW9kZWwgPSB0aGlzLmdldE93bmVyQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJfdGVtcGxQcml2XCIpIGFzIEpTT05Nb2RlbDtcblx0XHRvVGVtcGxhdGVQcml2YXRlTW9kZWwuc2V0UHJvcGVydHkoXCIvbGlzdFJlcG9ydC9zaGFyZVwiLCBvU2hhcmVJbmZvKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gdXBkYXRlIHRoZSBsb2NhbCBVSSBtb2RlbCBvZiB0aGUgcGFnZSB3aXRoIHRoZSBmaWVsZHMgdGhhdCBhcmUgbm90IGFwcGxpY2FibGUgdG8gdGhlIGZpbHRlciBiYXIgKHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIEFMUCBzY2VuYXJpbykuXG5cdCAqXG5cdCAqIEBwYXJhbSBvSW50ZXJuYWxNb2RlbENvbnRleHQgVGhlIGludGVybmFsIG1vZGVsIGNvbnRleHRcblx0ICogQHBhcmFtIG9GaWx0ZXJCYXIgTURDIGZpbHRlciBiYXJcblx0ICovXG5cdF91cGRhdGVBTFBOb3RBcHBsaWNhYmxlRmllbGRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsIG9GaWx0ZXJCYXI6IEZpbHRlckJhcikge1xuXHRcdGNvbnN0IG1DYWNoZTogYW55ID0ge307XG5cdFx0Y29uc3QgaWdub3JlZEZpZWxkczogYW55ID0ge30sXG5cdFx0XHRhVGFibGVzID0gdGhpcy5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKSxcblx0XHRcdGFDaGFydHMgPSB0aGlzLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpO1xuXG5cdFx0aWYgKCFhVGFibGVzLmxlbmd0aCB8fCAhYUNoYXJ0cy5sZW5ndGgpIHtcblx0XHRcdC8vIElmIHRoZXJlJ3Mgbm90IGEgdGFibGUgYW5kIGEgY2hhcnQsIHdlJ3JlIG5vdCBpbiB0aGUgQUxQIGNhc2Vcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGb3IgdGhlIG1vbWVudCwgdGhlcmUncyBub3RoaW5nIGZvciB0YWJsZXMuLi5cblx0XHRhQ2hhcnRzLmZvckVhY2goZnVuY3Rpb24gKG9DaGFydDogYW55KSB7XG5cdFx0XHRjb25zdCBzQ2hhcnRFbnRpdHlQYXRoID0gb0NoYXJ0LmRhdGEoXCJ0YXJnZXRDb2xsZWN0aW9uUGF0aFwiKSxcblx0XHRcdFx0c0NoYXJ0RW50aXR5U2V0ID0gc0NoYXJ0RW50aXR5UGF0aC5zbGljZSgxKSxcblx0XHRcdFx0c0NhY2hlS2V5ID0gYCR7c0NoYXJ0RW50aXR5U2V0fUNoYXJ0YDtcblx0XHRcdGlmICghbUNhY2hlW3NDYWNoZUtleV0pIHtcblx0XHRcdFx0bUNhY2hlW3NDYWNoZUtleV0gPSBGaWx0ZXJVdGlscy5nZXROb3RBcHBsaWNhYmxlRmlsdGVycyhvRmlsdGVyQmFyLCBvQ2hhcnQpO1xuXHRcdFx0fVxuXHRcdFx0aWdub3JlZEZpZWxkc1tzQ2FjaGVLZXldID0gbUNhY2hlW3NDYWNoZUtleV07XG5cdFx0fSk7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29udHJvbHMvaWdub3JlZEZpZWxkc1wiLCBpZ25vcmVkRmllbGRzKTtcblx0fVxuXG5cdF9pc0ZpbHRlckJhckhpZGRlbigpIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgYW55KS5oaWRlRmlsdGVyQmFyO1xuXHR9XG5cblx0X2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudChWYXJpYW50TWFuYWdlbWVudDogYW55LCBrZXk6IHN0cmluZyk6IEJvb2xlYW4ge1xuXHRcdGlmICghVmFyaWFudE1hbmFnZW1lbnQgfHwgIWtleSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRjb25zdCB2YXJpYW50cyA9IFZhcmlhbnRNYW5hZ2VtZW50LmdldFZhcmlhbnRzKCk7XG5cdFx0Y29uc3QgY3VycmVudFZhcmlhbnQgPSB2YXJpYW50cy5maW5kKGZ1bmN0aW9uICh2YXJpYW50OiBhbnkpIHtcblx0XHRcdHJldHVybiB2YXJpYW50ICYmIHZhcmlhbnQua2V5ID09PSBrZXk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIChjdXJyZW50VmFyaWFudCAmJiBjdXJyZW50VmFyaWFudC5leGVjdXRlT25TZWxlY3QpIHx8IGZhbHNlO1xuXHR9XG5cblx0X3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoKG9WTTogYW55KSB7XG5cdFx0aWYgKFxuXHRcdFx0KHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgYW55KS5pbml0aWFsTG9hZCA9PT0gSW5pdGlhbExvYWRNb2RlLkF1dG8gJiZcblx0XHRcdCghb1ZNIHx8IG9WTS5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKSA9PT0gb1ZNLmdldEN1cnJlbnRWYXJpYW50S2V5KCkpXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBvRmlsdGVyQmFyID0gdGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbmRpdGlvbnMgPSBvRmlsdGVyQmFyLmdldENvbmRpdGlvbnMoKTtcblx0XHRcdFx0Zm9yIChjb25zdCBzS2V5IGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRcdFx0Ly8gaWdub3JlIGZpbHRlcnMgc3RhcnRpbmcgd2l0aCAkIChlLmcuICRzZWFyY2gsICRlZGl0U3RhdGUpXG5cdFx0XHRcdFx0aWYgKCFzS2V5LnN0YXJ0c1dpdGgoXCIkXCIpICYmIEFycmF5LmlzQXJyYXkob0NvbmRpdGlvbnNbc0tleV0pICYmIG9Db25kaXRpb25zW3NLZXldLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0Ly8gbG9hZCBkYXRhIGFzIHBlciB1c2VyJ3Mgc2V0dGluZyBvZiBhcHBseUF1dG9tYXRpY2FsbHkgb24gdGhlIHZhcmlhbnRcblx0XHRcdFx0XHRcdGNvbnN0IHN0YW5kYXJkVmFyaWFudDogYW55ID0gb1ZNLmdldFZhcmlhbnRzKCkuZmluZCgodmFyaWFudDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YXJpYW50LmtleSA9PT0gb1ZNLmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybiBzdGFuZGFyZFZhcmlhbnQgJiYgc3RhbmRhcmRWYXJpYW50LmV4ZWN1dGVPblNlbGVjdDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0X3VwZGF0ZVRhYmxlKG9UYWJsZTogYW55KSB7XG5cdFx0aWYgKCFvVGFibGUuaXNUYWJsZUJvdW5kKCkgfHwgdGhpcy5oYXNQZW5kaW5nQ2hhcnRDaGFuZ2VzKSB7XG5cdFx0XHRvVGFibGUucmViaW5kKCk7XG5cdFx0XHR0aGlzLmhhc1BlbmRpbmdDaGFydENoYW5nZXMgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRfdXBkYXRlQ2hhcnQob0NoYXJ0OiBhbnkpIHtcblx0XHRjb25zdCBvSW5uZXJDaGFydCA9IG9DaGFydC5nZXRDb250cm9sRGVsZWdhdGUoKS5fZ2V0Q2hhcnQob0NoYXJ0KTtcblx0XHRpZiAoIShvSW5uZXJDaGFydCAmJiBvSW5uZXJDaGFydC5pc0JvdW5kKFwiZGF0YVwiKSkgfHwgdGhpcy5oYXNQZW5kaW5nVGFibGVDaGFuZ2VzKSB7XG5cdFx0XHRvQ2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkucmViaW5kKG9DaGFydCwgb0lubmVyQ2hhcnQuZ2V0QmluZGluZ0luZm8oXCJkYXRhXCIpKTtcblx0XHRcdHRoaXMuaGFzUGVuZGluZ1RhYmxlQ2hhbmdlcyA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdGhhbmRsZXJzID0ge1xuXHRcdG9uRmlsdGVyU2VhcmNoKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyKSB7XG5cdFx0XHR0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdH0sXG5cdFx0b25GaWx0ZXJzQ2hhbmdlZCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgb0V2ZW50OiBhbnkpIHtcblx0XHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHRpZiAob0ZpbHRlckJhcikge1xuXHRcdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0IHwgdW5kZWZpbmVkO1xuXHRcdFx0XHQvLyBQZW5kaW5nIGZpbHRlcnMgaW50byBGaWx0ZXJCYXIgdG8gYmUgdXNlZCBmb3IgY3VzdG9tIHZpZXdzXG5cdFx0XHRcdHRoaXMub25QZW5kaW5nRmlsdGVycygpO1xuXHRcdFx0XHRjb25zdCBhcHBsaWVkRmlsdGVyc1RleHQgPSBvRmlsdGVyQmFyLmdldEFzc2lnbmVkRmlsdGVyc1RleHQoKS5maWx0ZXJzVGV4dDtcblx0XHRcdFx0Y29uc3QgYXBwbGllZEZpbHRlckJpbmRpbmcgPSBiaW5kaW5nUGFyc2VyKGFwcGxpZWRGaWx0ZXJzVGV4dCk7XG5cdFx0XHRcdGlmIChhcHBsaWVkRmlsdGVyQmluZGluZykge1xuXHRcdFx0XHRcdCh0aGlzLmdldFZpZXcoKS5ieUlkKFwiZmU6OmFwcGxpZWRGaWx0ZXJzVGV4dFwiKSBhcyBUZXh0IHwgdW5kZWZpbmVkKT8uYmluZFRleHQoYXBwbGllZEZpbHRlckJpbmRpbmcpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdCh0aGlzLmdldFZpZXcoKS5ieUlkKFwiZmU6OmFwcGxpZWRGaWx0ZXJzVGV4dFwiKSBhcyBUZXh0IHwgdW5kZWZpbmVkKT8uc2V0VGV4dChhcHBsaWVkRmlsdGVyc1RleHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKG9JbnRlcm5hbE1vZGVsQ29udGV4dCAmJiBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29uZGl0aW9uc0Jhc2VkXCIpKSB7XG5cdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaGFzUGVuZGluZ0ZpbHRlcnNcIiwgdHJ1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdG9uVmFyaWFudFNlbGVjdGVkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBvRXZlbnQ6IGFueSkge1xuXHRcdFx0Y29uc3Qgb1ZNID0gb0V2ZW50LmdldFNvdXJjZSgpO1xuXHRcdFx0Y29uc3QgY3VycmVudFZhcmlhbnRLZXkgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwia2V5XCIpO1xuXHRcdFx0Y29uc3Qgb011bHRpTW9kZUNvbnRyb2wgPSB0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCk7XG5cblx0XHRcdGlmIChvTXVsdGlNb2RlQ29udHJvbCAmJiAhb1ZNPy5nZXRQYXJlbnQoKS5pc0EoXCJzYXAudWkubWRjLkFjdGlvblRvb2xiYXJcIikpIHtcblx0XHRcdFx0Ly9Ob3QgYSBDb250cm9sIFZhcmlhbnRcblx0XHRcdFx0b011bHRpTW9kZUNvbnRyb2w/LmludmFsaWRhdGVDb250ZW50KCk7XG5cdFx0XHRcdG9NdWx0aU1vZGVDb250cm9sPy5zZXRGcmVlemVDb250ZW50KHRydWUpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXRUaW1lb3V0IGNhdXNlIHRoZSB2YXJpYW50IG5lZWRzIHRvIGJlIGFwcGxpZWQgYmVmb3JlIGp1ZGdpbmcgdGhlIGF1dG8gc2VhcmNoIG9yIHVwZGF0aW5nIHRoZSBhcHAgc3RhdGVcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5fc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2gob1ZNKSkge1xuXHRcdFx0XHRcdC8vIHRoZSBhcHAgc3RhdGUgd2lsbCBiZSB1cGRhdGVkIHZpYSBvblNlYXJjaCBoYW5kbGVyXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKS50cmlnZ2VyU2VhcmNoKCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIXRoaXMuX2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudChvVk0sIGN1cnJlbnRWYXJpYW50S2V5KSkge1xuXHRcdFx0XHRcdHRoaXMuZ2V0RXh0ZW5zaW9uQVBJKCkudXBkYXRlQXBwU3RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMCk7XG5cdFx0fSxcblx0XHRvblZhcmlhbnRTYXZlZCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlcikge1xuXHRcdFx0Ly9UT0RPOiBTaG91bGQgcmVtb3ZlIHRoaXMgc2V0VGltZU91dCBvbmNlIFZhcmlhbnQgTWFuYWdlbWVudCBwcm92aWRlcyBhbiBhcGkgdG8gZmV0Y2ggdGhlIGN1cnJlbnQgdmFyaWFudCBrZXkgb24gc2F2ZSEhIVxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZ2V0RXh0ZW5zaW9uQVBJKCkudXBkYXRlQXBwU3RhdGUoKTtcblx0XHRcdH0sIDEwMDApO1xuXHRcdH0sXG5cdFx0b25TZWFyY2godGhpczogTGlzdFJlcG9ydENvbnRyb2xsZXIpIHtcblx0XHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0Y29uc3Qgb01kY0NoYXJ0ID0gdGhpcy5nZXRDaGFydENvbnRyb2woKTtcblx0XHRcdGNvbnN0IGJIaWRlRHJhZnQgPSBGaWx0ZXJVdGlscy5nZXRFZGl0U3RhdGVJc0hpZGVEcmFmdChvRmlsdGVyQmFyLmdldENvbmRpdGlvbnMoKSk7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiLCBmYWxzZSk7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJoaWRlRHJhZnRJbmZvXCIsIGJIaWRlRHJhZnQpO1xuXG5cdFx0XHRpZiAoIXRoaXMuX2dldE11bHRpTW9kZUNvbnRyb2woKSkge1xuXHRcdFx0XHR0aGlzLl91cGRhdGVBTFBOb3RBcHBsaWNhYmxlRmllbGRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgb0ZpbHRlckJhcik7XG5cdFx0XHR9XG5cdFx0XHRpZiAob01kY0NoYXJ0KSB7XG5cdFx0XHRcdC8vIGRpc2FibGUgYm91bmQgYWN0aW9ucyBUT0RPOiB0aGlzIGNsZWFycyBldmVyeXRoaW5nIGZvciB0aGUgY2hhcnQ/XG5cdFx0XHRcdChvTWRjQ2hhcnQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuc2V0UHJvcGVydHkoXCJcIiwge30pO1xuXG5cdFx0XHRcdGNvbnN0IG9QYWdlSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvTWRjQ2hhcnQuZ2V0QmluZGluZ0NvbnRleHQoXCJwYWdlSW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRcdGNvbnN0IHNUZW1wbGF0ZUNvbnRlbnRWaWV3ID0gb1BhZ2VJbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShgJHtvUGFnZUludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vYWxwQ29udGVudFZpZXdgKTtcblx0XHRcdFx0aWYgKHNUZW1wbGF0ZUNvbnRlbnRWaWV3ID09PSBUZW1wbGF0ZUNvbnRlbnRWaWV3LkNoYXJ0KSB7XG5cdFx0XHRcdFx0dGhpcy5oYXNQZW5kaW5nQ2hhcnRDaGFuZ2VzID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoc1RlbXBsYXRlQ29udGVudFZpZXcgPT09IFRlbXBsYXRlQ29udGVudFZpZXcuVGFibGUpIHtcblx0XHRcdFx0XHR0aGlzLmhhc1BlbmRpbmdUYWJsZUNoYW5nZXMgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBzdG9yZSBmaWx0ZXIgYmFyIGNvbmRpdGlvbnMgdG8gdXNlIGxhdGVyIHdoaWxlIG5hdmlnYXRpb25cblx0XHRcdFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUob0ZpbHRlckJhcilcblx0XHRcdFx0LnRoZW4oKG9FeHRlcm5hbFN0YXRlOiBhbnkpID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpbHRlckJhckNvbmRpdGlvbnMgPSBvRXh0ZXJuYWxTdGF0ZS5maWx0ZXI7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSByZXRyaWV2aW5nIHRoZSBleHRlcm5hbCBzdGF0ZVwiLCBvRXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHRcdGlmICgodGhpcy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBhbnkpLmxpdmVNb2RlID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzeXN0ZW0ucGhvbmUpIHtcblx0XHRcdFx0Y29uc3Qgb0R5bmFtaWNQYWdlID0gdGhpcy5fZ2V0RHluYW1pY0xpc3RSZXBvcnRDb250cm9sKCk7XG5cdFx0XHRcdG9EeW5hbWljUGFnZS5zZXRIZWFkZXJFeHBhbmRlZChmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBUcmlnZ2VycyBhbiBvdXRib3VuZCBuYXZpZ2F0aW9uIHdoZW4gYSB1c2VyIGNob29zZXMgdGhlIGNoZXZyb24uXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0gb0NvbnRyb2xsZXJcblx0XHQgKiBAcGFyYW0gc091dGJvdW5kVGFyZ2V0IE5hbWUgb2YgdGhlIG91dGJvdW5kIHRhcmdldCAobmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QpXG5cdFx0ICogQHBhcmFtIG9Db250ZXh0IFRoZSBjb250ZXh0IHRoYXQgY29udGFpbnMgdGhlIGRhdGEgZm9yIHRoZSB0YXJnZXQgYXBwXG5cdFx0ICogQHBhcmFtIHNDcmVhdGVQYXRoIENyZWF0ZSBwYXRoIHdoZW4gdGhlIGNoZXZyb24gaXMgY3JlYXRlZC5cblx0XHQgKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgdGhlIG5hdmlnYXRpb24gaXMgdHJpZ2dlcmVkXG5cdFx0ICogQHVpNS1yZXN0cmljdGVkXG5cdFx0ICogQGZpbmFsXG5cdFx0ICovXG5cdFx0b25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kKG9Db250cm9sbGVyOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgc091dGJvdW5kVGFyZ2V0OiBzdHJpbmcsIG9Db250ZXh0OiBDb250ZXh0LCBzQ3JlYXRlUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gb0NvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5vbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQob0NvbnRyb2xsZXIsIHNPdXRib3VuZFRhcmdldCwgb0NvbnRleHQsIHNDcmVhdGVQYXRoKTtcblx0XHR9LFxuXHRcdG9uQ2hhcnRTZWxlY3Rpb25DaGFuZ2VkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBvRXZlbnQ6IGFueSkge1xuXHRcdFx0Y29uc3Qgb01kY0NoYXJ0ID0gb0V2ZW50LmdldFNvdXJjZSgpLmdldENvbnRlbnQoKSxcblx0XHRcdFx0b1RhYmxlID0gdGhpcy5fZ2V0VGFibGUoKSxcblx0XHRcdFx0YURhdGEgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiZGF0YVwiKSxcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdGlmIChhRGF0YSkge1xuXHRcdFx0XHRDaGFydFV0aWxzLnNldENoYXJ0RmlsdGVycyhvTWRjQ2hhcnQpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc1RlbXBsYXRlQ29udGVudFZpZXcgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoYCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vYWxwQ29udGVudFZpZXdgKTtcblx0XHRcdGlmIChzVGVtcGxhdGVDb250ZW50VmlldyA9PT0gVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkge1xuXHRcdFx0XHR0aGlzLmhhc1BlbmRpbmdDaGFydENoYW5nZXMgPSB0cnVlO1xuXHRcdFx0fSBlbHNlIGlmIChvVGFibGUpIHtcblx0XHRcdFx0KG9UYWJsZSBhcyBhbnkpLnJlYmluZCgpO1xuXHRcdFx0XHR0aGlzLmhhc1BlbmRpbmdDaGFydENoYW5nZXMgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgb0V2ZW50OiBhbnkpIHtcblx0XHRcdGNvbnN0IHNTZWxlY3RlZEtleSA9IG9FdmVudC5tUGFyYW1ldGVycy5rZXkgPyBvRXZlbnQubVBhcmFtZXRlcnMua2V5IDogbnVsbDtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJhbHBDb250ZW50Vmlld1wiLCBzU2VsZWN0ZWRLZXkpO1xuXHRcdFx0Y29uc3Qgb0NoYXJ0ID0gdGhpcy5nZXRDaGFydENvbnRyb2woKTtcblx0XHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuX2dldFRhYmxlKCk7XG5cdFx0XHRjb25zdCBvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUgPSB7XG5cdFx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmcoKSB7XG5cdFx0XHRcdFx0Y29uc3QgYUl0ZW1zID0gb1NlZ21lbnRlZEJ1dHRvbi5nZXRJdGVtcygpO1xuXHRcdFx0XHRcdGFJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChvSXRlbTogYW55KSB7XG5cdFx0XHRcdFx0XHRpZiAob0l0ZW0uZ2V0S2V5KCkgPT09IHNTZWxlY3RlZEtleSkge1xuXHRcdFx0XHRcdFx0XHRvSXRlbS5mb2N1cygpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG9TZWdtZW50ZWRCdXR0b24ucmVtb3ZlRXZlbnREZWxlZ2F0ZShvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0Y29uc3Qgb1NlZ21lbnRlZEJ1dHRvbiA9IChcblx0XHRcdFx0c1NlbGVjdGVkS2V5ID09PSBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlID8gdGhpcy5fZ2V0U2VnbWVudGVkQnV0dG9uKFwiVGFibGVcIikgOiB0aGlzLl9nZXRTZWdtZW50ZWRCdXR0b24oXCJDaGFydFwiKVxuXHRcdFx0KSBhcyBTZWdtZW50ZWRCdXR0b247XG5cdFx0XHRpZiAob1NlZ21lbnRlZEJ1dHRvbiAhPT0gb0V2ZW50LmdldFNvdXJjZSgpKSB7XG5cdFx0XHRcdG9TZWdtZW50ZWRCdXR0b24uYWRkRXZlbnREZWxlZ2F0ZShvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUpO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoIChzU2VsZWN0ZWRLZXkpIHtcblx0XHRcdFx0Y2FzZSBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlOlxuXHRcdFx0XHRcdHRoaXMuX3VwZGF0ZVRhYmxlKG9UYWJsZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydDpcblx0XHRcdFx0XHR0aGlzLl91cGRhdGVDaGFydChvQ2hhcnQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFRlbXBsYXRlQ29udGVudFZpZXcuSHlicmlkOlxuXHRcdFx0XHRcdHRoaXMuX3VwZGF0ZVRhYmxlKG9UYWJsZSk7XG5cdFx0XHRcdFx0dGhpcy5fdXBkYXRlQ2hhcnQob0NoYXJ0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdHRoaXMuZ2V0RXh0ZW5zaW9uQVBJKCkudXBkYXRlQXBwU3RhdGUoKTtcblx0XHR9LFxuXHRcdG9uRmlsdGVyc1NlZ21lbnRlZEJ1dHRvblByZXNzZWQodGhpczogTGlzdFJlcG9ydENvbnRyb2xsZXIsIG9FdmVudDogYW55KSB7XG5cdFx0XHRjb25zdCBpc0NvbXBhY3QgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwia2V5XCIpID09PSBcIkNvbXBhY3RcIjtcblx0XHRcdHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKS5zZXRWaXNpYmxlKGlzQ29tcGFjdCk7XG5cdFx0XHQodGhpcy5fZ2V0VmlzdWFsRmlsdGVyQmFyQ29udHJvbCgpIGFzIENvbnRyb2wpLnNldFZpc2libGUoIWlzQ29tcGFjdCk7XG5cdFx0fSxcblx0XHRvblN0YXRlQ2hhbmdlKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyKSB7XG5cdFx0XHR0aGlzLmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdFx0fSxcblx0XHRvbkR5bmFtaWNQYWdlVGl0bGVTdGF0ZUNoYW5nZWQodGhpczogTGlzdFJlcG9ydENvbnRyb2xsZXIsIG9FdmVudDogYW55KSB7XG5cdFx0XHRjb25zdCBmaWx0ZXJCYXI6IGFueSA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdGlmIChmaWx0ZXJCYXIgJiYgZmlsdGVyQmFyLmdldFNlZ21lbnRlZEJ1dHRvbigpKSB7XG5cdFx0XHRcdGlmIChvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiaXNFeHBhbmRlZFwiKSkge1xuXHRcdFx0XHRcdGZpbHRlckJhci5nZXRTZWdtZW50ZWRCdXR0b24oKS5zZXRWaXNpYmxlKHRydWUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZpbHRlckJhci5nZXRTZWdtZW50ZWRCdXR0b24oKS5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblxuXHRvbkFmdGVyUmVuZGVyaW5nKCkge1xuXHRcdGNvbnN0IGFUYWJsZXMgPSB0aGlzLl9nZXRDb250cm9scygpIGFzIFRhYmxlW107XG5cdFx0Y29uc3Qgc0VudGl0eVNldCA9ICh0aGlzLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIGFueSkuZW50aXR5U2V0O1xuXHRcdGNvbnN0IHNUZXh0ID0gZ2V0UmVzb3VyY2VNb2RlbCh0aGlzLmdldFZpZXcoKSkuZ2V0VGV4dChcIlRfVEFCTEVfQU5EX0NIQVJUX05PX0RBVEFfVEVYVFwiLCB1bmRlZmluZWQsIHNFbnRpdHlTZXQpO1xuXHRcdGFUYWJsZXMuZm9yRWFjaChmdW5jdGlvbiAob1RhYmxlOiBDb250cm9sKSB7XG5cdFx0XHRpZiAob1RhYmxlLmlzQTxUYWJsZT4oXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRcdG9UYWJsZS5zZXROb0RhdGEoc1RleHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExpc3RSZXBvcnRDb250cm9sbGVyO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdEQSxNQUFNQSxtQkFBbUIsR0FBR0MsV0FBVyxDQUFDRCxtQkFBbUI7SUFDMURFLGVBQWUsR0FBR0QsV0FBVyxDQUFDQyxlQUFlOztFQUU5QztBQUNB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QUFJLENBQUNqQyxzQkFBc0IsR0FBRyxLQUFLO01BQ3BDO0lBQ0QsQ0FBQztJQUFBLE9BRURvRCxZQUFZLEdBQVosc0JBQWFkLE1BQVcsRUFBRTtNQUN6QixNQUFNZ00sV0FBVyxHQUFHaE0sTUFBTSxDQUFDaU0sa0JBQWtCLEVBQUUsQ0FBQ0MsU0FBUyxDQUFDbE0sTUFBTSxDQUFDO01BQ2pFLElBQUksRUFBRWdNLFdBQVcsSUFBSUEsV0FBVyxDQUFDRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUN2TyxzQkFBc0IsRUFBRTtRQUNqRm9DLE1BQU0sQ0FBQ2lNLGtCQUFrQixFQUFFLENBQUN0TSxNQUFNLENBQUNLLE1BQU0sRUFBRWdNLFdBQVcsQ0FBQ0ksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQ3hPLHNCQUFzQixHQUFHLEtBQUs7TUFDcEM7SUFDRCxDQUFDO0lBQUEsT0FzTERzQyxnQkFBZ0IsR0FBaEIsNEJBQW1CO01BQ2xCLE1BQU1zQyxPQUFPLEdBQUcsSUFBSSxDQUFDQyxZQUFZLEVBQWE7TUFDOUMsTUFBTTRKLFVBQVUsR0FBSSxJQUFJLENBQUNyVSxPQUFPLEVBQUUsQ0FBQ3VHLFdBQVcsRUFBRSxDQUFTK04sU0FBUztNQUNsRSxNQUFNMVMsS0FBSyxHQUFHVSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUN0QyxPQUFPLEVBQUUsQ0FBQyxDQUFDMEMsT0FBTyxDQUFDLGdDQUFnQyxFQUFFMEosU0FBUyxFQUFFaUksVUFBVSxDQUFDO01BQy9HN0osT0FBTyxDQUFDbEMsT0FBTyxDQUFDLFVBQVVoQixNQUFlLEVBQUU7UUFDMUMsSUFBSUEsTUFBTSxDQUFDbEQsR0FBRyxDQUFRLGtCQUFrQixDQUFDLEVBQUU7VUFDMUNrRCxNQUFNLENBQUNpTixTQUFTLENBQUMzUyxLQUFLLENBQUM7UUFDeEI7TUFDRCxDQUFDLENBQUM7SUFDSCxDQUFDO0lBQUE7RUFBQSxFQTN5QmlDK0gsY0FBYztJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtFQUFBLE9BOHlCbENqSyxvQkFBb0I7QUFBQSJ9
@@ -2,5 +2,5 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log","sap/base/util/ObjectPath","sap/fe/core/ActionRuntime","sap/fe/core/CommonUtils","sap/fe/core/controllerextensions/IntentBasedNavigation","sap/fe/core/controllerextensions/InternalIntentBasedNavigation","sap/fe/core/controllerextensions/InternalRouting","sap/fe/core/controllerextensions/KPIManagement","sap/fe/core/controllerextensions/MassEdit","sap/fe/core/controllerextensions/Placeholder","sap/fe/core/controllerextensions/Share","sap/fe/core/controllerextensions/SideEffects","sap/fe/core/controllerextensions/ViewState","sap/fe/core/helpers/ClassSupport","sap/fe/core/helpers/DeleteHelper","sap/fe/core/helpers/EditState","sap/fe/core/helpers/MessageStrip","sap/fe/core/helpers/ResourceModelHelper","sap/fe/core/helpers/StableIdHelper","sap/fe/core/library","sap/fe/core/PageController","sap/fe/macros/chart/ChartUtils","sap/fe/macros/CommonHelper","sap/fe/macros/DelegateUtil","sap/fe/macros/filter/FilterUtils","sap/fe/templates/ListReport/ExtensionAPI","sap/fe/templates/TableScroller","sap/ui/base/ManagedObject","sap/ui/core/mvc/OverrideExecution","sap/ui/Device","sap/ui/mdc/p13n/StateUtil","sap/ui/thirdparty/hasher","./ListReportTemplating","./overrides/IntentBasedNavigation","./overrides/Share","./overrides/ViewState"],function(e,t,i,n,r,o,a,s,l,u,g,d,c,p,h,f,b,C,y,v,P,_,m,w,A,I,S,V,B,T,x,F,E,M,D,R){"use strict";var O,L,N,z,k,H,j,U,K,$,J,q,W,X,G,Q,Y,Z,ee,te,ie,ne,re,oe,ae,se,le,ue,ge,de,ce;var pe=T.system;var he=V.bindingParser;var fe=C.getResourceModel;var be=p.usingExtension;var Ce=p.publicExtension;var ye=p.privateExtension;var ve=p.finalExtension;var Pe=p.extensible;var _e=p.defineUI5Class;function me(e,t,i,n){if(!i)return;Object.defineProperty(e,t,{enumerable:i.enumerable,configurable:i.configurable,writable:i.writable,value:i.initializer?i.initializer.call(n):void 0})}function we(e){if(e===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return e}function Ae(e,t){e.prototype=Object.create(t.prototype);e.prototype.constructor=e;Ie(e,t)}function Ie(e,t){Ie=Object.setPrototypeOf?Object.setPrototypeOf.bind():function e(t,i){t.__proto__=i;return t};return Ie(e,t)}function Se(e,t,i,n,r){var o={};Object.keys(n).forEach(function(e){o[e]=n[e]});o.enumerable=!!o.enumerable;o.configurable=!!o.configurable;if("value"in o||o.initializer){o.writable=true}o=i.slice().reverse().reduce(function(i,n){return n(e,t,i)||i},o);if(r&&o.initializer!==void 0){o.value=o.initializer?o.initializer.call(r):void 0;o.initializer=undefined}if(o.initializer===void 0){Object.defineProperty(e,t,o);o=null}return o}function Ve(e,t){throw new Error("Decorating class property failed. Please ensure that "+"proposal-class-properties is enabled and runs after the decorators transform.")}const Be=v.TemplateContentView,Te=v.InitialLoadMode;let xe=(O=_e("sap.fe.templates.ListReport.ListReportController"),L=be(a.override({onAfterBinding:function(){this.getView().getController()._onAfterBinding()}})),N=be(o.override({getEntitySet:function(){return this.base.getCurrentEntitySet()}})),z=be(d),k=be(r.override(M)),H=be(g.override(D)),j=be(c.override(R)),U=be(s),K=be(u),$=be(l),J=Ce(),q=ve(),W=ye(),X=Pe(B.After),G=Ce(),Q=Pe(B.After),Y=Ce(),Z=Pe(B.After),ee=Ce(),te=Pe(B.After),O(ie=(ne=function(r){Ae(o,r);function o(){var t;for(var i=arguments.length,n=new Array(i),o=0;o<i;o++){n[o]=arguments[o]}t=r.call(this,...n)||this;me(t,"_routing",re,we(t));me(t,"_intentBasedNavigation",oe,we(t));me(t,"sideEffects",ae,we(t));me(t,"intentBasedNavigation",se,we(t));me(t,"share",le,we(t));me(t,"viewState",ue,we(t));me(t,"kpiManagement",ge,we(t));me(t,"placeholder",de,we(t));me(t,"massEdit",ce,we(t));t.formatters={setALPControlMessageStrip(e,t,i){let n="";t=t==="true"||t===true;const r=this._getFilterBarControl();if(r&&Array.isArray(e)&&e.length>0&&t){const o=b.getLabels(e,r.data("entityType"),r,fe(r));const a=!i.enableSearch;n=t?b.getALPText(o,r,a):b.getText(o,r,"");return n}}};t.handlers={onFilterSearch(){this._getFilterBarControl().triggerSearch()},onFiltersChanged(e){const t=this._getFilterBarControl();if(t){const r=this.getView().getBindingContext("internal");this.onPendingFilters();const o=t.getAssignedFiltersText().filtersText;const a=he(o);if(a){var i;(i=this.getView().byId("fe::appliedFiltersText"))===null||i===void 0?void 0:i.bindText(a)}else{var n;(n=this.getView().byId("fe::appliedFiltersText"))===null||n===void 0?void 0:n.setText(o)}if(r&&e.getParameter("conditionsBased")){r.setProperty("hasPendingFilters",true)}}},onVariantSelected(e){const t=e.getSource();const i=e.getParameter("key");const n=this._getMultiModeControl();if(n&&!(t!==null&&t!==void 0&&t.getParent().isA("sap.ui.mdc.ActionToolbar"))){n===null||n===void 0?void 0:n.invalidateContent();n===null||n===void 0?void 0:n.setFreezeContent(true)}setTimeout(()=>{if(this._shouldAutoTriggerSearch(t)){return this._getFilterBarControl().triggerSearch()}else if(!this._getApplyAutomaticallyOnVariant(t,i)){this.getExtensionAPI().updateAppState()}},0)},onVariantSaved(){setTimeout(()=>{this.getExtensionAPI().updateAppState()},1e3)},onSearch(){const t=this._getFilterBarControl();const i=this.getView().getBindingContext("internal");const n=this.getChartControl();const r=A.getEditStateIsHideDraft(t.getConditions());i.setProperty("hasPendingFilters",false);i.setProperty("hideDraftInfo",r);if(!this._getMultiModeControl()){this._updateALPNotApplicableFields(i,t)}if(n){n.getBindingContext("internal").setProperty("",{});const e=n.getBindingContext("pageInternal");const t=e.getProperty(`${e.getPath()}/alpContentView`);if(t===Be.Chart){this.hasPendingChartChanges=true}if(t===Be.Table){this.hasPendingTableChanges=true}}x.retrieveExternalState(t).then(e=>{this.filterBarConditions=e.filter}).catch(function(t){e.error("Error while retrieving the external state",t)});if(this.getView().getViewData().liveMode===false){this.getExtensionAPI().updateAppState()}if(pe.phone){const e=this._getDynamicListReportControl();e.setHeaderExpanded(false)}},onChevronPressNavigateOutBound(e,t,i,n){return e._intentBasedNavigation.onChevronPressNavigateOutBound(e,t,i,n)},onChartSelectionChanged(e){const t=e.getSource().getContent(),i=this._getTable(),n=e.getParameter("data"),r=this.getView().getBindingContext("internal");if(n){_.setChartFilters(t)}const o=r.getProperty(`${r.getPath()}/alpContentView`);if(o===Be.Chart){this.hasPendingChartChanges=true}else if(i){i.rebind();this.hasPendingChartChanges=false}},onSegmentedButtonPressed(e){const t=e.mParameters.key?e.mParameters.key:null;const i=this.getView().getBindingContext("internal");i.setProperty("alpContentView",t);const n=this.getChartControl();const r=this._getTable();const o={onAfterRendering(){const e=a.getItems();e.forEach(function(e){if(e.getKey()===t){e.focus()}});a.removeEventDelegate(o)}};const a=t===Be.Table?this._getSegmentedButton("Table"):this._getSegmentedButton("Chart");if(a!==e.getSource()){a.addEventDelegate(o)}switch(t){case Be.Table:this._updateTable(r);break;case Be.Chart:this._updateChart(n);break;case Be.Hybrid:this._updateTable(r);this._updateChart(n);break;default:break}this.getExtensionAPI().updateAppState()},onFiltersSegmentedButtonPressed(e){const t=e.getParameter("key")==="Compact";this._getFilterBarControl().setVisible(t);this._getVisualFilterBarControl().setVisible(!t)},onStateChange(){this.getExtensionAPI().updateAppState()},onDynamicPageTitleStateChanged(e){const t=this._getFilterBarControl();if(t&&t.getSegmentedButton()){if(e.getParameter("isExpanded")){t.getSegmentedButton().setVisible(true)}else{t.getSegmentedButton().setVisible(false)}}}};return t}var a=o.prototype;a.getExtensionAPI=function e(){if(!this.extensionAPI){this.extensionAPI=new I(this)}return this.extensionAPI};a.onInit=function e(){P.prototype.onInit.apply(this);const t=this.getView().getBindingContext("internal");t.setProperty("hasPendingFilters",true);t.setProperty("hideDraftInfo",false);t.setProperty("uom",{});t.setProperty("scalefactor",{});t.setProperty("scalefactorNumber",{});t.setProperty("currency",{});if(this._hasMultiVisualizations()){let e=this._getDefaultPath();if(!pe.desktop&&e===Be.Hybrid){e=Be.Chart}t.setProperty("alpContentView",e)}this.filterBarConditions={};this.getAppComponent().getRouterProxy().waitForRouteMatchBeforeNavigation();this._setInitLoad()};a.onExit=function e(){delete this.filterBarConditions;if(this.extensionAPI){this.extensionAPI.destroy()}delete this.extensionAPI};a._onAfterBinding=function e(){const t=this._getControls("table");if(f.isEditStateDirty()){var i,r;(i=this._getMultiModeControl())===null||i===void 0?void 0:i.invalidateContent();const e=(r=this._getTable())===null||r===void 0?void 0:r.getRowBinding();if(e){if(n.getAppComponent(this.getView())._isFclEnabled()){e.refresh()}else{if(!this.sUpdateTimer){this.sUpdateTimer=setTimeout(()=>{e.refresh();delete this.sUpdateTimer},0)}const i=()=>{this._updateTableActions(t);e.detachDataReceived(i)};e.attachDataReceived(i)}}f.setEditStateProcessed()}if(!this.sUpdateTimer){this._updateTableActions(t)}const o=this.getView().getBindingContext("internal");if(!o.getProperty("initialVariantApplied")){const e=this.getView().getId();this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(e,this.getView()));o.setProperty("initialVariantApplied",true)}};a.onBeforeRendering=function e(){P.prototype.onBeforeRendering.apply(this)};a.onPageReady=function e(t){if(t.forceFocus){this._setInitialFocus()}this.getAppComponent().getShellServices().setBackNavigation(undefined)};a.onViewNeedsRefresh=function e(t){};a.onPendingFilters=function e(){};a.getCurrentEntitySet=function e(){var t;return(t=this._getTable())===null||t===void 0?void 0:t.data("targetCollectionPath").slice(1)};a.onAfterClear=function e(){};a._updateTableActions=function e(t){let r=[];t.forEach(function(e){r=n.getIBNActions(e,r);const t=e.getBindingContext("internal"),o=JSON.parse(m.parseCustomData(w.getCustomData(e,"operationAvailableMap"))),a=e.getSelectedContexts();t.setProperty("selectedContexts",a);t.setProperty("numberOfSelectedContexts",a.length);h.updateDeleteInfoForSelectedContexts(t,a);i.setActionEnablement(t,o,a,"table")});n.updateDataFieldForIBNButtonsVisibility(r,this.getView())};a._scrollTablesToRow=function e(t){this._getControls("table").forEach(function(e){S.scrollTableToRow(e,t)})};a._setInitialFocus=function t(){const i=this._getDynamicListReportControl(),n=i.getHeaderExpanded(),r=this._getFilterBarControl();if(r){if(!r.getShowMessages()){r.setShowMessages(true)}if(n){const e=r.getFilterItems().find(function(e){return e.getRequired()&&e.getConditions().length===0});if(e){e.focus()}else if(this._isInitLoadEnabled()&&r.getFilterItems().length>0){r.getFilterItems()[0].focus()}else{var o;(o=this.getView().byId(`${this._getFilterBarControlId()}-btnSearch`))===null||o===void 0?void 0:o.focus()}}else if(this._isInitLoadEnabled()){var a;(a=this._getTable())===null||a===void 0?void 0:a.focusRow(0).catch(function(t){e.error("Error while setting initial focus on the table ",t)})}}else{var s;(s=this._getTable())===null||s===void 0?void 0:s.focusRow(0).catch(function(t){e.error("Error while setting initial focus on the table ",t)})}};a._getPageTitleInformation=function e(){const t=this.getAppComponent().getManifestEntry("sap.app");return{title:t.title,subtitle:t.subTitle||"",intent:"",icon:""}};a._getFilterBarControl=function e(){return this.getView().byId(this._getFilterBarControlId())};a._getDynamicListReportControl=function e(){return this.getView().byId(this._getDynamicListReportControlId())};a._getAdaptationFilterBarControl=function e(){const t=this._getFilterBarControl().getInbuiltFilter();return t!==null&&t!==void 0&&t.getParent()?t:undefined};a._getSegmentedButton=function e(t){var i;const n=(i=t==="Chart"?this.getChartControl():this._getTable())===null||i===void 0?void 0:i.data("segmentedButtonId");return this.getView().byId(n)};a._getControlFromPageModelProperty=function e(t){var i;const n=(i=this._getPageModel())===null||i===void 0?void 0:i.getProperty(t);return n&&this.getView().byId(n)};a._getDynamicListReportControlId=function e(){var t;return((t=this._getPageModel())===null||t===void 0?void 0:t.getProperty("/dynamicListReportId"))||""};a._getFilterBarControlId=function e(){var t;return((t=this._getPageModel())===null||t===void 0?void 0:t.getProperty("/filterBarId"))||""};a.getChartControl=function e(){return this._getControlFromPageModelProperty("/singleChartId")};a._getVisualFilterBarControl=function e(){const t=y.generate(["visualFilter",this._getFilterBarControlId()]);return t&&this.getView().byId(t)};a._getFilterBarVariantControl=function e(){return this._getControlFromPageModelProperty("/variantManagement/id")};a._getMultiModeControl=function e(){return this.getView().byId("fe::TabMultipleMode::Control")};a._getTable=function e(){if(this._isMultiMode()){var t,i;const e=(t=this._getMultiModeControl())===null||t===void 0?void 0:(i=t.getSelectedInnerControl())===null||i===void 0?void 0:i.content;return e!==null&&e!==void 0&&e.isA("sap.ui.mdc.Table")?e:undefined}else{return this._getControlFromPageModelProperty("/singleTableId")}};a._getControls=function e(t){if(this._isMultiMode()){const e=[];const i=this._getMultiModeControl().content;i.getItems().forEach(i=>{const n=this.getView().byId(i.getKey());if(n&&t){if(i.getKey().indexOf(`fe::${t}`)>-1){e.push(n)}}else if(n!==undefined&&n!==null){e.push(n)}});return e}else if(t==="Chart"){const e=this.getChartControl();return e?[e]:[]}else{const e=this._getTable();return e?[e]:[]}};a._getDefaultPath=function e(){var t;const i=E.getDefaultPath(((t=this._getPageModel())===null||t===void 0?void 0:t.getProperty("/views"))||[]);switch(i){case"primary":return Be.Chart;case"secondary":return Be.Table;case"both":default:return Be.Hybrid}};a._isMultiMode=function e(){var t;return!!((t=this._getPageModel())!==null&&t!==void 0&&t.getProperty("/multiViewsControl"))};a._isInitLoadEnabled=function e(){const t=this.getView().getViewData().initialLoad;return t===Te.Enabled};a._hasMultiVisualizations=function e(){var t;return(t=this._getPageModel())===null||t===void 0?void 0:t.getProperty("/hasMultiVisualizations")};a._disableInitLoad=function e(){const t=this._getFilterBarControl();if(t){t.setSuspendSelection(true)}};a._applyAutomaticallyOnStandardVariant=function e(){return false};a._setInitLoad=function e(){if(!this._isInitLoadEnabled()){this._disableInitLoad()}const t=E.getVariantBackReference(this.getView().getViewData(),this._getPageModel());const i=t&&this.getView().byId(t);if(i){i.registerApplyAutomaticallyOnStandardVariant(this._applyAutomaticallyOnStandardVariant.bind(this))}};a._setShareModel=function e(){const i=t.get("sap.ushell.Container.getUser");const n={bookmarkTitle:document.title,bookmarkCustomUrl:function(){const e=F.getHash();return e?`#${e}`:window.location.href},isShareInJamActive:!!i&&i().isJamActive()};const r=this.getOwnerComponent().getModel("_templPriv");r.setProperty("/listReport/share",n)};a._updateALPNotApplicableFields=function e(t,i){const n={};const r={},o=this._getControls("table"),a=this._getControls("Chart");if(!o.length||!a.length){return}a.forEach(function(e){const t=e.data("targetCollectionPath"),o=t.slice(1),a=`${o}Chart`;if(!n[a]){n[a]=A.getNotApplicableFilters(i,e)}r[a]=n[a]});t.setProperty("controls/ignoredFields",r)};a._isFilterBarHidden=function e(){return this.getView().getViewData().hideFilterBar};a._getApplyAutomaticallyOnVariant=function e(t,i){if(!t||!i){return false}const n=t.getVariants();const r=n.find(function(e){return e&&e.key===i});return r&&r.executeOnSelect||false};a._shouldAutoTriggerSearch=function e(t){if(this.getView().getViewData().initialLoad===Te.Auto&&(!t||t.getStandardVariantKey()===t.getCurrentVariantKey())){const e=this._getFilterBarControl();if(e){const i=e.getConditions();for(const e in i){if(!e.startsWith("$")&&Array.isArray(i[e])&&i[e].length){const e=t.getVariants().find(e=>e.key===t.getCurrentVariantKey());return e&&e.executeOnSelect}}}}return false};a._updateTable=function e(t){if(!t.isTableBound()||this.hasPendingChartChanges){t.rebind();this.hasPendingChartChanges=false}};a._updateChart=function e(t){const i=t.getControlDelegate()._getChart(t);if(!(i&&i.isBound("data"))||this.hasPendingTableChanges){t.getControlDelegate().rebind(t,i.getBindingInfo("data"));this.hasPendingTableChanges=false}};a.onAfterRendering=function e(){const t=this._getControls();const i=this.getView().getViewData().entitySet;const n=fe(this.getView()).getText("T_TABLE_AND_CHART_NO_DATA_TEXT",undefined,i);t.forEach(function(e){if(e.isA("sap.ui.mdc.Table")){e.setNoData(n)}})};return o}(P),re=Se(ne.prototype,"_routing",[L],{configurable:true,enumerable:true,writable:true,initializer:null}),oe=Se(ne.prototype,"_intentBasedNavigation",[N],{configurable:true,enumerable:true,writable:true,initializer:null}),ae=Se(ne.prototype,"sideEffects",[z],{configurable:true,enumerable:true,writable:true,initializer:null}),se=Se(ne.prototype,"intentBasedNavigation",[k],{configurable:true,enumerable:true,writable:true,initializer:null}),le=Se(ne.prototype,"share",[H],{configurable:true,enumerable:true,writable:true,initializer:null}),ue=Se(ne.prototype,"viewState",[j],{configurable:true,enumerable:true,writable:true,initializer:null}),ge=Se(ne.prototype,"kpiManagement",[U],{configurable:true,enumerable:true,writable:true,initializer:null}),de=Se(ne.prototype,"placeholder",[K],{configurable:true,enumerable:true,writable:true,initializer:null}),ce=Se(ne.prototype,"massEdit",[$],{configurable:true,enumerable:true,writable:true,initializer:null}),Se(ne.prototype,"getExtensionAPI",[J,q],Object.getOwnPropertyDescriptor(ne.prototype,"getExtensionAPI"),ne.prototype),Se(ne.prototype,"onPageReady",[W,X],Object.getOwnPropertyDescriptor(ne.prototype,"onPageReady"),ne.prototype),Se(ne.prototype,"onViewNeedsRefresh",[G,Q],Object.getOwnPropertyDescriptor(ne.prototype,"onViewNeedsRefresh"),ne.prototype),Se(ne.prototype,"onPendingFilters",[Y,Z],Object.getOwnPropertyDescriptor(ne.prototype,"onPendingFilters"),ne.prototype),Se(ne.prototype,"onAfterClear",[ee,te],Object.getOwnPropertyDescriptor(ne.prototype,"onAfterClear"),ne.prototype),ne))||ie);return xe},false);
5
+ sap.ui.define(["sap/base/Log","sap/base/util/ObjectPath","sap/fe/core/ActionRuntime","sap/fe/core/CommonUtils","sap/fe/core/controllerextensions/IntentBasedNavigation","sap/fe/core/controllerextensions/InternalIntentBasedNavigation","sap/fe/core/controllerextensions/InternalRouting","sap/fe/core/controllerextensions/KPIManagement","sap/fe/core/controllerextensions/MassEdit","sap/fe/core/controllerextensions/Placeholder","sap/fe/core/controllerextensions/Share","sap/fe/core/controllerextensions/SideEffects","sap/fe/core/controllerextensions/ViewState","sap/fe/core/helpers/ClassSupport","sap/fe/core/helpers/DeleteHelper","sap/fe/core/helpers/EditState","sap/fe/core/helpers/MessageStrip","sap/fe/core/helpers/ResourceModelHelper","sap/fe/core/helpers/StableIdHelper","sap/fe/core/library","sap/fe/core/PageController","sap/fe/macros/chart/ChartUtils","sap/fe/macros/CommonHelper","sap/fe/macros/DelegateUtil","sap/fe/macros/filter/FilterUtils","sap/fe/templates/ListReport/ExtensionAPI","sap/fe/templates/TableScroller","sap/ui/base/ManagedObject","sap/ui/core/mvc/OverrideExecution","sap/ui/Device","sap/ui/mdc/p13n/StateUtil","sap/ui/thirdparty/hasher","./ListReportTemplating","./overrides/IntentBasedNavigation","./overrides/Share","./overrides/ViewState"],function(e,t,i,n,r,o,a,s,l,u,g,d,c,p,h,f,b,C,y,v,P,_,m,w,A,I,S,V,B,T,x,F,E,M,D,R){"use strict";var O,L,N,z,k,H,j,U,K,$,J,q,W,X,G,Q,Y,Z,ee,te,ie,ne,re,oe,ae,se,le,ue,ge,de,ce;var pe=T.system;var he=V.bindingParser;var fe=C.getResourceModel;var be=p.usingExtension;var Ce=p.publicExtension;var ye=p.privateExtension;var ve=p.finalExtension;var Pe=p.extensible;var _e=p.defineUI5Class;function me(e,t,i,n){if(!i)return;Object.defineProperty(e,t,{enumerable:i.enumerable,configurable:i.configurable,writable:i.writable,value:i.initializer?i.initializer.call(n):void 0})}function we(e){if(e===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return e}function Ae(e,t){e.prototype=Object.create(t.prototype);e.prototype.constructor=e;Ie(e,t)}function Ie(e,t){Ie=Object.setPrototypeOf?Object.setPrototypeOf.bind():function e(t,i){t.__proto__=i;return t};return Ie(e,t)}function Se(e,t,i,n,r){var o={};Object.keys(n).forEach(function(e){o[e]=n[e]});o.enumerable=!!o.enumerable;o.configurable=!!o.configurable;if("value"in o||o.initializer){o.writable=true}o=i.slice().reverse().reduce(function(i,n){return n(e,t,i)||i},o);if(r&&o.initializer!==void 0){o.value=o.initializer?o.initializer.call(r):void 0;o.initializer=undefined}if(o.initializer===void 0){Object.defineProperty(e,t,o);o=null}return o}function Ve(e,t){throw new Error("Decorating class property failed. Please ensure that "+"proposal-class-properties is enabled and runs after the decorators transform.")}const Be=v.TemplateContentView,Te=v.InitialLoadMode;let xe=(O=_e("sap.fe.templates.ListReport.ListReportController"),L=be(a.override({onAfterBinding:function(){this.getView().getController()._onAfterBinding()}})),N=be(o.override({getEntitySet:function(){return this.base.getCurrentEntitySet()}})),z=be(d),k=be(r.override(M)),H=be(g.override(D)),j=be(c.override(R)),U=be(s),K=be(u),$=be(l),J=Ce(),q=ve(),W=ye(),X=Pe(B.After),G=Ce(),Q=Pe(B.After),Y=Ce(),Z=Pe(B.After),ee=Ce(),te=Pe(B.After),O(ie=(ne=function(r){Ae(o,r);function o(){var t;for(var i=arguments.length,n=new Array(i),o=0;o<i;o++){n[o]=arguments[o]}t=r.call(this,...n)||this;me(t,"_routing",re,we(t));me(t,"_intentBasedNavigation",oe,we(t));me(t,"sideEffects",ae,we(t));me(t,"intentBasedNavigation",se,we(t));me(t,"share",le,we(t));me(t,"viewState",ue,we(t));me(t,"kpiManagement",ge,we(t));me(t,"placeholder",de,we(t));me(t,"massEdit",ce,we(t));t.formatters={setALPControlMessageStrip(e,t,i){let n="";t=t==="true"||t===true;const r=this._getFilterBarControl();if(r&&Array.isArray(e)&&e.length>0&&t){const o=b.getLabels(e,r.data("entityType"),r,fe(r));const a=!i.enableSearch;n=t?b.getALPText(o,r,a):b.getText(o,r,"");return n}}};t.handlers={onFilterSearch(){this._getFilterBarControl().triggerSearch()},onFiltersChanged(e){const t=this._getFilterBarControl();if(t){const r=this.getView().getBindingContext("internal");this.onPendingFilters();const o=t.getAssignedFiltersText().filtersText;const a=he(o);if(a){var i;(i=this.getView().byId("fe::appliedFiltersText"))===null||i===void 0?void 0:i.bindText(a)}else{var n;(n=this.getView().byId("fe::appliedFiltersText"))===null||n===void 0?void 0:n.setText(o)}if(r&&e.getParameter("conditionsBased")){r.setProperty("hasPendingFilters",true)}}},onVariantSelected(e){const t=e.getSource();const i=e.getParameter("key");const n=this._getMultiModeControl();if(n&&!(t!==null&&t!==void 0&&t.getParent().isA("sap.ui.mdc.ActionToolbar"))){n===null||n===void 0?void 0:n.invalidateContent();n===null||n===void 0?void 0:n.setFreezeContent(true)}setTimeout(()=>{if(this._shouldAutoTriggerSearch(t)){return this._getFilterBarControl().triggerSearch()}else if(!this._getApplyAutomaticallyOnVariant(t,i)){this.getExtensionAPI().updateAppState()}},0)},onVariantSaved(){setTimeout(()=>{this.getExtensionAPI().updateAppState()},1e3)},onSearch(){const t=this._getFilterBarControl();const i=this.getView().getBindingContext("internal");const n=this.getChartControl();const r=A.getEditStateIsHideDraft(t.getConditions());i.setProperty("hasPendingFilters",false);i.setProperty("hideDraftInfo",r);if(!this._getMultiModeControl()){this._updateALPNotApplicableFields(i,t)}if(n){n.getBindingContext("internal").setProperty("",{});const e=n.getBindingContext("pageInternal");const t=e.getProperty(`${e.getPath()}/alpContentView`);if(t===Be.Chart){this.hasPendingChartChanges=true}if(t===Be.Table){this.hasPendingTableChanges=true}}x.retrieveExternalState(t).then(e=>{this.filterBarConditions=e.filter}).catch(function(t){e.error("Error while retrieving the external state",t)});if(this.getView().getViewData().liveMode===false){this.getExtensionAPI().updateAppState()}if(pe.phone){const e=this._getDynamicListReportControl();e.setHeaderExpanded(false)}},onChevronPressNavigateOutBound(e,t,i,n){return e._intentBasedNavigation.onChevronPressNavigateOutBound(e,t,i,n)},onChartSelectionChanged(e){const t=e.getSource().getContent(),i=this._getTable(),n=e.getParameter("data"),r=this.getView().getBindingContext("internal");if(n){_.setChartFilters(t)}const o=r.getProperty(`${r.getPath()}/alpContentView`);if(o===Be.Chart){this.hasPendingChartChanges=true}else if(i){i.rebind();this.hasPendingChartChanges=false}},onSegmentedButtonPressed(e){const t=e.mParameters.key?e.mParameters.key:null;const i=this.getView().getBindingContext("internal");i.setProperty("alpContentView",t);const n=this.getChartControl();const r=this._getTable();const o={onAfterRendering(){const e=a.getItems();e.forEach(function(e){if(e.getKey()===t){e.focus()}});a.removeEventDelegate(o)}};const a=t===Be.Table?this._getSegmentedButton("Table"):this._getSegmentedButton("Chart");if(a!==e.getSource()){a.addEventDelegate(o)}switch(t){case Be.Table:this._updateTable(r);break;case Be.Chart:this._updateChart(n);break;case Be.Hybrid:this._updateTable(r);this._updateChart(n);break;default:break}this.getExtensionAPI().updateAppState()},onFiltersSegmentedButtonPressed(e){const t=e.getParameter("key")==="Compact";this._getFilterBarControl().setVisible(t);this._getVisualFilterBarControl().setVisible(!t)},onStateChange(){this.getExtensionAPI().updateAppState()},onDynamicPageTitleStateChanged(e){const t=this._getFilterBarControl();if(t&&t.getSegmentedButton()){if(e.getParameter("isExpanded")){t.getSegmentedButton().setVisible(true)}else{t.getSegmentedButton().setVisible(false)}}}};return t}var a=o.prototype;a.getExtensionAPI=function e(){if(!this.extensionAPI){this.extensionAPI=new I(this)}return this.extensionAPI};a.onInit=function e(){P.prototype.onInit.apply(this);const t=this.getView().getBindingContext("internal");t.setProperty("hasPendingFilters",true);t.setProperty("hideDraftInfo",false);t.setProperty("uom",{});t.setProperty("scalefactor",{});t.setProperty("scalefactorNumber",{});t.setProperty("currency",{});if(this._hasMultiVisualizations()){let e=this._getDefaultPath();if(!pe.desktop&&e===Be.Hybrid){e=Be.Chart}t.setProperty("alpContentView",e)}this.filterBarConditions={};this.getAppComponent().getRouterProxy().waitForRouteMatchBeforeNavigation();this._setInitLoad()};a.onExit=function e(){delete this.filterBarConditions;if(this.extensionAPI){this.extensionAPI.destroy()}delete this.extensionAPI};a._onAfterBinding=function e(){const t=this._getControls("table");if(f.isEditStateDirty()){var i,r;(i=this._getMultiModeControl())===null||i===void 0?void 0:i.invalidateContent();const e=(r=this._getTable())===null||r===void 0?void 0:r.getRowBinding();if(e){if(n.getAppComponent(this.getView())._isFclEnabled()){e.refresh()}else{if(!this.sUpdateTimer){this.sUpdateTimer=setTimeout(()=>{e.refresh();delete this.sUpdateTimer},0)}const i=()=>{this._updateTableActions(t);e.detachDataReceived(i)};e.attachDataReceived(i)}}f.setEditStateProcessed()}if(!this.sUpdateTimer){this._updateTableActions(t)}const o=this.getView().getBindingContext("internal");if(!o.getProperty("initialVariantApplied")){const e=this.getView().getId();this.pageReady.waitFor(this.getAppComponent().getAppStateHandler().applyAppState(e,this.getView()));o.setProperty("initialVariantApplied",true)}};a.onBeforeRendering=function e(){P.prototype.onBeforeRendering.apply(this)};a.onPageReady=function e(t){if(t.forceFocus){this._setInitialFocus()}this.getAppComponent().getShellServices().setBackNavigation(undefined)};a.onViewNeedsRefresh=function e(t){};a.onPendingFilters=function e(){};a.getCurrentEntitySet=function e(){var t;return(t=this._getTable())===null||t===void 0?void 0:t.data("targetCollectionPath").slice(1)};a.onAfterClear=function e(){};a._updateTableActions=function e(t){let r=[];t.forEach(function(e){r=n.getIBNActions(e,r);const t=e.getBindingContext("internal"),o=JSON.parse(m.parseCustomData(w.getCustomData(e,"operationAvailableMap"))),a=e.getSelectedContexts();t.setProperty("selectedContexts",a);t.setProperty("numberOfSelectedContexts",a.length);h.updateDeleteInfoForSelectedContexts(t,a);i.setActionEnablement(t,o,a,"table")});n.updateDataFieldForIBNButtonsVisibility(r,this.getView())};a._scrollTablesToRow=function e(t){this._getControls("table").forEach(function(e){S.scrollTableToRow(e,t)})};a._setInitialFocus=function t(){const i=this._getDynamicListReportControl(),n=i.getHeaderExpanded(),r=this._getFilterBarControl();if(r){if(!r.getShowMessages()){r.setShowMessages(true)}if(n){const e=r.getFilterItems().find(function(e){return e.getRequired()&&e.getConditions().length===0});if(e){e.focus()}else if(this._isInitLoadEnabled()&&r.getFilterItems().length>0){r.getFilterItems()[0].focus()}else{var o;(o=this.getView().byId(`${this._getFilterBarControlId()}-btnSearch`))===null||o===void 0?void 0:o.focus()}}else if(this._isInitLoadEnabled()){var a;(a=this._getTable())===null||a===void 0?void 0:a.focusRow(0).catch(function(t){e.error("Error while setting initial focus on the table ",t)})}}else{var s;(s=this._getTable())===null||s===void 0?void 0:s.focusRow(0).catch(function(t){e.error("Error while setting initial focus on the table ",t)})}};a._getPageTitleInformation=function e(){const t=this.getAppComponent().getManifestEntry("sap.app");return{title:t.title,subtitle:t.subTitle||"",intent:"",icon:""}};a._getFilterBarControl=function e(){return this.getView().byId(this._getFilterBarControlId())};a._getDynamicListReportControl=function e(){return this.getView().byId(this._getDynamicListReportControlId())};a._getAdaptationFilterBarControl=function e(){const t=this._getFilterBarControl().getInbuiltFilter();return t!==null&&t!==void 0&&t.getParent()?t:undefined};a._getSegmentedButton=function e(t){var i;const n=(i=t==="Chart"?this.getChartControl():this._getTable())===null||i===void 0?void 0:i.data("segmentedButtonId");return this.getView().byId(n)};a._getControlFromPageModelProperty=function e(t){var i;const n=(i=this._getPageModel())===null||i===void 0?void 0:i.getProperty(t);return n&&this.getView().byId(n)};a._getDynamicListReportControlId=function e(){var t;return((t=this._getPageModel())===null||t===void 0?void 0:t.getProperty("/dynamicListReportId"))||""};a._getFilterBarControlId=function e(){var t;return((t=this._getPageModel())===null||t===void 0?void 0:t.getProperty("/filterBarId"))||""};a.getChartControl=function e(){return this._getControlFromPageModelProperty("/singleChartId")};a._getVisualFilterBarControl=function e(){const t=y.generate(["visualFilter",this._getFilterBarControlId()]);return t&&this.getView().byId(t)};a._getFilterBarVariantControl=function e(){return this._getControlFromPageModelProperty("/variantManagement/id")};a._getMultiModeControl=function e(){return this.getView().byId("fe::TabMultipleMode::Control")};a._getTable=function e(){if(this._isMultiMode()){var t,i;const e=(t=this._getMultiModeControl())===null||t===void 0?void 0:(i=t.getSelectedInnerControl())===null||i===void 0?void 0:i.content;return e!==null&&e!==void 0&&e.isA("sap.ui.mdc.Table")?e:undefined}else{return this._getControlFromPageModelProperty("/singleTableId")}};a._getControls=function e(t){if(this._isMultiMode()){const e=[];const i=this._getMultiModeControl().content;i.getItems().forEach(i=>{const n=this.getView().byId(i.getKey());if(n&&t){if(i.getKey().indexOf(`fe::${t}`)>-1){e.push(n)}}else if(n!==undefined&&n!==null){e.push(n)}});return e}else if(t==="Chart"){const e=this.getChartControl();return e?[e]:[]}else{const e=this._getTable();return e?[e]:[]}};a._getDefaultPath=function e(){var t;const i=E.getDefaultPath(((t=this._getPageModel())===null||t===void 0?void 0:t.getProperty("/views"))||[]);switch(i){case"primary":return Be.Chart;case"secondary":return Be.Table;case"both":default:return Be.Hybrid}};a._isMultiMode=function e(){var t;return!!((t=this._getPageModel())!==null&&t!==void 0&&t.getProperty("/multiViewsControl"))};a._isInitLoadEnabled=function e(){const t=this.getView().getViewData().initialLoad;return t===Te.Enabled};a._hasMultiVisualizations=function e(){var t;return(t=this._getPageModel())===null||t===void 0?void 0:t.getProperty("/hasMultiVisualizations")};a._disableInitLoad=function e(){const t=this._getFilterBarControl();if(t){t.setSuspendSelection(true)}};a._applyAutomaticallyOnStandardVariant=function e(){return false};a._setInitLoad=function e(){var t;if(!this._isInitLoadEnabled()){this._disableInitLoad()}const i=E.getVariantBackReference(this.getView().getViewData(),(t=this._getPageModel())===null||t===void 0?void 0:t.getData());const n=i&&this.getView().byId(i);if(n){n.registerApplyAutomaticallyOnStandardVariant(this._applyAutomaticallyOnStandardVariant.bind(this))}};a._setShareModel=function e(){const i=t.get("sap.ushell.Container.getUser");const n={bookmarkTitle:document.title,bookmarkCustomUrl:function(){const e=F.getHash();return e?`#${e}`:window.location.href},isShareInJamActive:!!i&&i().isJamActive()};const r=this.getOwnerComponent().getModel("_templPriv");r.setProperty("/listReport/share",n)};a._updateALPNotApplicableFields=function e(t,i){const n={};const r={},o=this._getControls("table"),a=this._getControls("Chart");if(!o.length||!a.length){return}a.forEach(function(e){const t=e.data("targetCollectionPath"),o=t.slice(1),a=`${o}Chart`;if(!n[a]){n[a]=A.getNotApplicableFilters(i,e)}r[a]=n[a]});t.setProperty("controls/ignoredFields",r)};a._isFilterBarHidden=function e(){return this.getView().getViewData().hideFilterBar};a._getApplyAutomaticallyOnVariant=function e(t,i){if(!t||!i){return false}const n=t.getVariants();const r=n.find(function(e){return e&&e.key===i});return r&&r.executeOnSelect||false};a._shouldAutoTriggerSearch=function e(t){if(this.getView().getViewData().initialLoad===Te.Auto&&(!t||t.getStandardVariantKey()===t.getCurrentVariantKey())){const e=this._getFilterBarControl();if(e){const i=e.getConditions();for(const e in i){if(!e.startsWith("$")&&Array.isArray(i[e])&&i[e].length){const e=t.getVariants().find(e=>e.key===t.getCurrentVariantKey());return e&&e.executeOnSelect}}}}return false};a._updateTable=function e(t){if(!t.isTableBound()||this.hasPendingChartChanges){t.rebind();this.hasPendingChartChanges=false}};a._updateChart=function e(t){const i=t.getControlDelegate()._getChart(t);if(!(i&&i.isBound("data"))||this.hasPendingTableChanges){t.getControlDelegate().rebind(t,i.getBindingInfo("data"));this.hasPendingTableChanges=false}};a.onAfterRendering=function e(){const t=this._getControls();const i=this.getView().getViewData().entitySet;const n=fe(this.getView()).getText("T_TABLE_AND_CHART_NO_DATA_TEXT",undefined,i);t.forEach(function(e){if(e.isA("sap.ui.mdc.Table")){e.setNoData(n)}})};return o}(P),re=Se(ne.prototype,"_routing",[L],{configurable:true,enumerable:true,writable:true,initializer:null}),oe=Se(ne.prototype,"_intentBasedNavigation",[N],{configurable:true,enumerable:true,writable:true,initializer:null}),ae=Se(ne.prototype,"sideEffects",[z],{configurable:true,enumerable:true,writable:true,initializer:null}),se=Se(ne.prototype,"intentBasedNavigation",[k],{configurable:true,enumerable:true,writable:true,initializer:null}),le=Se(ne.prototype,"share",[H],{configurable:true,enumerable:true,writable:true,initializer:null}),ue=Se(ne.prototype,"viewState",[j],{configurable:true,enumerable:true,writable:true,initializer:null}),ge=Se(ne.prototype,"kpiManagement",[U],{configurable:true,enumerable:true,writable:true,initializer:null}),de=Se(ne.prototype,"placeholder",[K],{configurable:true,enumerable:true,writable:true,initializer:null}),ce=Se(ne.prototype,"massEdit",[$],{configurable:true,enumerable:true,writable:true,initializer:null}),Se(ne.prototype,"getExtensionAPI",[J,q],Object.getOwnPropertyDescriptor(ne.prototype,"getExtensionAPI"),ne.prototype),Se(ne.prototype,"onPageReady",[W,X],Object.getOwnPropertyDescriptor(ne.prototype,"onPageReady"),ne.prototype),Se(ne.prototype,"onViewNeedsRefresh",[G,Q],Object.getOwnPropertyDescriptor(ne.prototype,"onViewNeedsRefresh"),ne.prototype),Se(ne.prototype,"onPendingFilters",[Y,Z],Object.getOwnPropertyDescriptor(ne.prototype,"onPendingFilters"),ne.prototype),Se(ne.prototype,"onAfterClear",[ee,te],Object.getOwnPropertyDescriptor(ne.prototype,"onAfterClear"),ne.prototype),ne))||ie);return xe},false);
6
6
  //# sourceMappingURL=ListReportController.controller.js.map