@sapui5/sap.fe.templates 1.101.1 → 1.102.2

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 (93) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +8 -5
  4. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +11 -5
  5. package/src/sap/fe/templates/ListReport/ListReport.view.xml +104 -57
  6. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +104 -19
  7. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +98 -19
  8. package/src/sap/fe/templates/ListReport/ListReportTemplating.js +45 -0
  9. package/src/sap/fe/templates/ListReport/ListReportTemplating.ts +30 -0
  10. package/src/sap/fe/templates/ListReport/overrides/Share.js +7 -4
  11. package/src/sap/fe/templates/ListReport/overrides/Share.ts +4 -3
  12. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +10 -2
  13. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +7 -1
  14. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +164 -18
  15. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +51 -47
  16. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +52 -40
  17. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +872 -0
  18. package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +837 -0
  19. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +3 -3
  20. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +2 -2
  21. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +9 -10
  22. package/src/sap/fe/templates/ObjectPage/view/fragments/CollaborationDraft.fragment.xml +1 -2
  23. package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +15 -15
  24. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +28 -24
  25. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActionButtons.fragment.xml +15 -16
  26. package/src/sap/fe/templates/ObjectPage/view/fragments/FormActions.fragment.xml +1 -5
  27. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPoint.fragment.xml +1 -2
  28. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +1 -3
  29. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +3 -4
  30. package/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +16 -17
  31. package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +3 -3
  32. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +3 -3
  33. package/src/sap/fe/templates/ObjectPage/view/fragments/RelatedApps.fragment.xml +7 -4
  34. package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +71 -6
  35. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +114 -94
  36. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContentLazyLoader.fragment.xml +127 -107
  37. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +81 -33
  38. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +71 -33
  39. package/src/sap/fe/templates/controls/MacroChart.fragment.xml +1 -0
  40. package/src/sap/fe/templates/controls/Table.fragment.xml +3 -4
  41. package/src/sap/fe/templates/library.js +1 -1
  42. package/src/sap/fe/templates/messagebundle_ar.properties +10 -6
  43. package/src/sap/fe/templates/messagebundle_bg.properties +6 -2
  44. package/src/sap/fe/templates/messagebundle_ca.properties +10 -6
  45. package/src/sap/fe/templates/messagebundle_cs.properties +6 -2
  46. package/src/sap/fe/templates/messagebundle_cy.properties +10 -6
  47. package/src/sap/fe/templates/messagebundle_da.properties +10 -6
  48. package/src/sap/fe/templates/messagebundle_de.properties +10 -6
  49. package/src/sap/fe/templates/messagebundle_el.properties +10 -6
  50. package/src/sap/fe/templates/messagebundle_en.properties +6 -2
  51. package/src/sap/fe/templates/messagebundle_en_GB.properties +8 -4
  52. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +13 -5
  53. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +7 -3
  54. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +7 -3
  55. package/src/sap/fe/templates/messagebundle_es.properties +6 -2
  56. package/src/sap/fe/templates/messagebundle_es_MX.properties +10 -6
  57. package/src/sap/fe/templates/messagebundle_et.properties +6 -2
  58. package/src/sap/fe/templates/messagebundle_fi.properties +10 -6
  59. package/src/sap/fe/templates/messagebundle_fr.properties +6 -2
  60. package/src/sap/fe/templates/messagebundle_fr_CA.properties +10 -6
  61. package/src/sap/fe/templates/messagebundle_hi.properties +10 -6
  62. package/src/sap/fe/templates/messagebundle_hr.properties +10 -6
  63. package/src/sap/fe/templates/messagebundle_hu.properties +6 -2
  64. package/src/sap/fe/templates/messagebundle_id.properties +6 -2
  65. package/src/sap/fe/templates/messagebundle_it.properties +10 -6
  66. package/src/sap/fe/templates/messagebundle_iw.properties +10 -6
  67. package/src/sap/fe/templates/messagebundle_ja.properties +6 -2
  68. package/src/sap/fe/templates/messagebundle_kk.properties +10 -6
  69. package/src/sap/fe/templates/messagebundle_ko.properties +6 -2
  70. package/src/sap/fe/templates/messagebundle_lt.properties +6 -2
  71. package/src/sap/fe/templates/messagebundle_lv.properties +6 -2
  72. package/src/sap/fe/templates/messagebundle_ms.properties +10 -6
  73. package/src/sap/fe/templates/messagebundle_nl.properties +6 -2
  74. package/src/sap/fe/templates/messagebundle_no.properties +10 -6
  75. package/src/sap/fe/templates/messagebundle_pl.properties +10 -6
  76. package/src/sap/fe/templates/messagebundle_pt.properties +7 -3
  77. package/src/sap/fe/templates/messagebundle_pt_PT.properties +6 -2
  78. package/src/sap/fe/templates/messagebundle_ro.properties +10 -6
  79. package/src/sap/fe/templates/messagebundle_ru.properties +10 -6
  80. package/src/sap/fe/templates/messagebundle_sh.properties +6 -2
  81. package/src/sap/fe/templates/messagebundle_sk.properties +6 -2
  82. package/src/sap/fe/templates/messagebundle_sl.properties +10 -6
  83. package/src/sap/fe/templates/messagebundle_sv.properties +6 -2
  84. package/src/sap/fe/templates/messagebundle_th.properties +10 -6
  85. package/src/sap/fe/templates/messagebundle_tr.properties +6 -2
  86. package/src/sap/fe/templates/messagebundle_uk.properties +6 -2
  87. package/src/sap/fe/templates/messagebundle_vi.properties +10 -6
  88. package/src/sap/fe/templates/messagebundle_zh_CN.properties +10 -6
  89. package/src/sap/fe/templates/messagebundle_zh_TW.properties +10 -6
  90. package/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +0 -482
  91. package/src/sap/fe/templates/ObjectPage/AnnotationHelper.ts +0 -511
  92. package/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +0 -120
  93. package/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +0 -138
@@ -155,6 +155,9 @@ class ListReportController extends PageController {
155
155
  this.getAppComponent().getRouterProxy().waitForRouteMatchBeforeNavigation();
156
156
 
157
157
  this._isMultiMode() && this._updateMultiControlHiddenStatus();
158
+
159
+ // Configure the initial load settings
160
+ this._setInitLoad();
158
161
  }
159
162
 
160
163
  onExit() {
@@ -169,23 +172,28 @@ class ListReportController extends PageController {
169
172
  if (EditState.isEditStateDirty()) {
170
173
  const oTableBinding = this._getTableBinding();
171
174
  if (oTableBinding) {
172
- if (!this.sUpdateTimer) {
173
- this.sUpdateTimer = setTimeout(() => {
174
- oTableBinding.refresh();
175
- if (this._isMultiMode()) {
176
- this._setCountsOutDated();
177
- this._updateCounts();
178
- }
179
- delete this.sUpdateTimer;
180
- }, 0);
181
- }
175
+ if (CommonUtils.getAppComponent(this.getView())._isFclEnabled()) {
176
+ // there is an issue if we use a timeout with a kept alive context used on another page
177
+ oTableBinding.refresh();
178
+ } else {
179
+ if (!this.sUpdateTimer) {
180
+ this.sUpdateTimer = setTimeout(() => {
181
+ oTableBinding.refresh();
182
+ if (this._isMultiMode()) {
183
+ this._setCountsOutDated();
184
+ this._updateCounts();
185
+ }
186
+ delete this.sUpdateTimer;
187
+ }, 0);
188
+ }
182
189
 
183
- // Update action enablement and visibility upon table data update.
184
- const fnUpdateTableActions = () => {
185
- this._updateTableActions(aTables);
186
- oTableBinding.detachDataReceived(fnUpdateTableActions);
187
- };
188
- oTableBinding.attachDataReceived(fnUpdateTableActions);
190
+ // Update action enablement and visibility upon table data update.
191
+ const fnUpdateTableActions = () => {
192
+ this._updateTableActions(aTables);
193
+ oTableBinding.detachDataReceived(fnUpdateTableActions);
194
+ };
195
+ oTableBinding.attachDataReceived(fnUpdateTableActions);
196
+ }
189
197
  }
190
198
  EditState.setEditStateProcessed();
191
199
  }
@@ -339,10 +347,23 @@ class ListReportController extends PageController {
339
347
  return oTitleInfo;
340
348
  }
341
349
 
350
+ _getPageOrFilterBarVariantManagement() {
351
+ return (
352
+ this.getView().byId("fe::PageVariantManagement") || this.getView().byId(this._getFilterBarControlId() + "::VariantManagement")
353
+ );
354
+ }
355
+
342
356
  _getFilterBarControl() {
343
357
  return this.getView().byId(this._getFilterBarControlId()) as FilterBar;
344
358
  }
345
359
 
360
+ _getAdaptationFilterBarControl() {
361
+ // If the adaptation filter bar is part of the DOM tree, the "Adapt Filter" dialog is open,
362
+ // and we return the adaptation filter bar as an active control (visible for the user)
363
+ const adaptationFilterBar = (this._getFilterBarControl() as any).getInbuiltFilter();
364
+ return adaptationFilterBar?.getParent() ? adaptationFilterBar : undefined;
365
+ }
366
+
346
367
  _getSegmentedButton(sControl: any) {
347
368
  return this.getView().byId(this._getSegmentedButtonId(sControl));
348
369
  }
@@ -463,6 +484,18 @@ class ListReportController extends PageController {
463
484
  return this._bMultiMode;
464
485
  }
465
486
 
487
+ /**
488
+ * Method to know if ListReport is configured to load data at start up.
489
+ *
490
+ * @function
491
+ * @name _isInitLoadDisabled
492
+ * @returns {boolean} Is InitLoad enabled?
493
+ */
494
+ _isInitLoadEnabled() {
495
+ const initLoadMode = (this.getView().getViewData() as any).initialLoad;
496
+ return initLoadMode === InitialLoadMode.Enabled;
497
+ }
498
+
466
499
  /**
467
500
  * Method to know if ListReport is configured with Multiple EntitySets.
468
501
  *
@@ -478,6 +511,49 @@ class ListReportController extends PageController {
478
511
  return this.getView().getContent()[0].data("hasMultiVisualizations") === "true";
479
512
  }
480
513
 
514
+ /**
515
+ * Method to suspend search on the filter bar. The initial loading of data is disabled based on the manifest configuration InitLoad - Disabled/Auto.
516
+ * It is enabled later when the view state is set, when it is possible to realize if there are default filters.
517
+ */
518
+ _disableInitLoad() {
519
+ const filterBar = this._getFilterBarControl();
520
+ // check for filter bar hidden
521
+ if (filterBar) {
522
+ filterBar.setSuspendSelection(true);
523
+ }
524
+ }
525
+
526
+ /**
527
+ * Method called by flex to determine if the applyAutomatically setting on the variant is valid.
528
+ * Called only for Standard Variant and only when there is display text set for applyAutomatically (FE only sets it for Auto).
529
+ *
530
+ * @returns Boolean true if data should be loaded automatically, false otherwise
531
+ */
532
+ _applyAutomaticallyOnStandardVariant() {
533
+ // We always return false and take care of it when view state is set
534
+ return false;
535
+ }
536
+
537
+ /**
538
+ * Configure the settings for initial load based on
539
+ * - manifest setting initLoad - Enabled/Disabled/Auto
540
+ * - user's setting of applyAutomatically on variant
541
+ * - if there are default filters
542
+ * We disable the filter bar search at the beginning and enable it when view state is set.
543
+ */
544
+ _setInitLoad() {
545
+ // if initLoad is Disabled or Auto, switch off filter bar search temporarily at start
546
+ if (!this._isInitLoadEnabled()) {
547
+ this._disableInitLoad();
548
+ }
549
+ // set hook for flex for when standard variant is set (at start or by user at runtime)
550
+ // required to override the user setting 'apply automatically' behaviour if there are no filters
551
+ const variantManagement: any = this._getPageOrFilterBarVariantManagement();
552
+ if (variantManagement) {
553
+ variantManagement.registerApplyAutomaticallyOnStandardVariant(this._applyAutomaticallyOnStandardVariant.bind(this));
554
+ }
555
+ }
556
+
481
557
  _setShareModel() {
482
558
  // TODO: deactivated for now - currently there is no _templPriv anymore, to be discussed
483
559
  // this method is currently not called anymore from the init method
@@ -695,12 +771,15 @@ class ListReportController extends PageController {
695
771
  for (const sKey in oConditions) {
696
772
  // ignore filters starting with $ (e.g. $search, $editState)
697
773
  if (!sKey.startsWith("$") && Array.isArray(oConditions[sKey]) && oConditions[sKey].length) {
698
- return true;
774
+ // load data as per user's setting of applyAutomatically on the variant
775
+ const standardVariant: any = oVM.getVariants().find((variant: any) => {
776
+ return variant.key === oVM.getCurrentVariantKey();
777
+ });
778
+ return standardVariant && standardVariant.executeOnSelect;
699
779
  }
700
780
  }
701
781
  }
702
782
  }
703
-
704
783
  return false;
705
784
  }
706
785
 
@@ -953,7 +1032,7 @@ class ListReportController extends PageController {
953
1032
  (this.getView().byId(this.getView().getContent()[0].data("visualFilterBarId")) as Control).setVisible(true);
954
1033
  }
955
1034
  },
956
- onStateChanged(this: ListReportController) {
1035
+ onStateChange(this: ListReportController) {
957
1036
  this.getExtensionAPI().updateAppState();
958
1037
  }
959
1038
  };
@@ -0,0 +1,45 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/core/helpers/StableIdHelper"], function (StableIdHelper) {
6
+ "use strict";
7
+
8
+ var _exports = {};
9
+ var generate = StableIdHelper.generate;
10
+
11
+ /**
12
+ * Method returns an VariantBackReference expression based on variantManagement and oConverterContext value.
13
+ *
14
+ * @function
15
+ * @name getVariantBackReference
16
+ * @param {object} oViewData Object Containing View Data
17
+ * @param {object} oConverterContext Object containing converted context
18
+ * @returns {string}
19
+ */
20
+ var getVariantBackReference = function (oViewData, oConverterContext) {
21
+ if (oViewData && oViewData.variantManagement === "Page") {
22
+ return "fe::PageVariantManagement";
23
+ }
24
+
25
+ if (oViewData && oViewData.variantManagement === "Control") {
26
+ return generate([oConverterContext.filterBarId, "VariantManagement"]);
27
+ }
28
+
29
+ return undefined;
30
+ };
31
+
32
+ _exports.getVariantBackReference = getVariantBackReference;
33
+
34
+ var getDefaultPath = function (aViews) {
35
+ for (var i = 0; i < aViews.length; i++) {
36
+ if (aViews[i].defaultPath) {
37
+ return aViews[i].defaultPath;
38
+ }
39
+ }
40
+ };
41
+
42
+ _exports.getDefaultPath = getDefaultPath;
43
+ return _exports;
44
+ }, false);
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnRUZW1wbGF0aW5nLnRzIl0sIm5hbWVzIjpbImdldFZhcmlhbnRCYWNrUmVmZXJlbmNlIiwib1ZpZXdEYXRhIiwib0NvbnZlcnRlckNvbnRleHQiLCJ2YXJpYW50TWFuYWdlbWVudCIsImdlbmVyYXRlIiwiZmlsdGVyQmFySWQiLCJ1bmRlZmluZWQiLCJnZXREZWZhdWx0UGF0aCIsImFWaWV3cyIsImkiLCJsZW5ndGgiLCJkZWZhdWx0UGF0aCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVPLE1BQU1BLHVCQUF1QixHQUFHLFVBQVVDLFNBQVYsRUFBMEJDLGlCQUExQixFQUFrRDtBQUN4RixRQUFJRCxTQUFTLElBQUlBLFNBQVMsQ0FBQ0UsaUJBQVYsS0FBZ0MsTUFBakQsRUFBeUQ7QUFDeEQsYUFBTywyQkFBUDtBQUNBOztBQUNELFFBQUlGLFNBQVMsSUFBSUEsU0FBUyxDQUFDRSxpQkFBVixLQUFnQyxTQUFqRCxFQUE0RDtBQUMzRCxhQUFPQyxRQUFRLENBQUMsQ0FBQ0YsaUJBQWlCLENBQUNHLFdBQW5CLEVBQWdDLG1CQUFoQyxDQUFELENBQWY7QUFDQTs7QUFDRCxXQUFPQyxTQUFQO0FBQ0EsR0FSTTs7OztBQVVBLE1BQU1DLGNBQWMsR0FBRyxVQUFVQyxNQUFWLEVBQXVCO0FBQ3BELFNBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsTUFBTSxDQUFDRSxNQUEzQixFQUFtQ0QsQ0FBQyxFQUFwQyxFQUF3QztBQUN2QyxVQUFJRCxNQUFNLENBQUNDLENBQUQsQ0FBTixDQUFVRSxXQUFkLEVBQTJCO0FBQzFCLGVBQU9ILE1BQU0sQ0FBQ0MsQ0FBRCxDQUFOLENBQVVFLFdBQWpCO0FBQ0E7QUFDRDtBQUNELEdBTk0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRlbXBsYXRlIEhlbHBlcnMgZm9yIHRoZSBMaXN0IFJlcG9ydFxuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuXG4vKipcbiAqIE1ldGhvZCByZXR1cm5zIGFuIFZhcmlhbnRCYWNrUmVmZXJlbmNlIGV4cHJlc3Npb24gYmFzZWQgb24gdmFyaWFudE1hbmFnZW1lbnQgYW5kIG9Db252ZXJ0ZXJDb250ZXh0IHZhbHVlLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgZ2V0VmFyaWFudEJhY2tSZWZlcmVuY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVmlld0RhdGEgT2JqZWN0IENvbnRhaW5pbmcgVmlldyBEYXRhXG4gKiBAcGFyYW0ge29iamVjdH0gb0NvbnZlcnRlckNvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgY29udmVydGVkIGNvbnRleHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFZhcmlhbnRCYWNrUmVmZXJlbmNlID0gZnVuY3Rpb24gKG9WaWV3RGF0YTogYW55LCBvQ29udmVydGVyQ29udGV4dDogYW55KSB7XG5cdGlmIChvVmlld0RhdGEgJiYgb1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdHJldHVybiBcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIjtcblx0fVxuXHRpZiAob1ZpZXdEYXRhICYmIG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRyZXR1cm4gZ2VuZXJhdGUoW29Db252ZXJ0ZXJDb250ZXh0LmZpbHRlckJhcklkLCBcIlZhcmlhbnRNYW5hZ2VtZW50XCJdKTtcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRQYXRoID0gZnVuY3Rpb24gKGFWaWV3czogYW55KSB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYVZpZXdzLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKGFWaWV3c1tpXS5kZWZhdWx0UGF0aCkge1xuXHRcdFx0cmV0dXJuIGFWaWV3c1tpXS5kZWZhdWx0UGF0aDtcblx0XHR9XG5cdH1cbn07XG4iXX0=
@@ -0,0 +1,30 @@
1
+ // Template Helpers for the List Report
2
+ import { generate } from "sap/fe/core/helpers/StableIdHelper";
3
+
4
+ /**
5
+ * Method returns an VariantBackReference expression based on variantManagement and oConverterContext value.
6
+ *
7
+ * @function
8
+ * @name getVariantBackReference
9
+ * @param {object} oViewData Object Containing View Data
10
+ * @param {object} oConverterContext Object containing converted context
11
+ * @returns {string}
12
+ */
13
+
14
+ export const getVariantBackReference = function (oViewData: any, oConverterContext: any) {
15
+ if (oViewData && oViewData.variantManagement === "Page") {
16
+ return "fe::PageVariantManagement";
17
+ }
18
+ if (oViewData && oViewData.variantManagement === "Control") {
19
+ return generate([oConverterContext.filterBarId, "VariantManagement"]);
20
+ }
21
+ return undefined;
22
+ };
23
+
24
+ export const getDefaultPath = function (aViews: any) {
25
+ for (let i = 0; i < aViews.length; i++) {
26
+ if (aViews[i].defaultPath) {
27
+ return aViews[i].defaultPath;
28
+ }
29
+ }
30
+ };
@@ -6,11 +6,14 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/S
6
6
  "use strict";
7
7
 
8
8
  function getCountUrl(oController) {
9
- var sTableId = oController.getView().getContent()[0].data().singleTableId;
9
+ var _oController$getView$;
10
+
11
+ // get selected table ID from multiple tabs
12
+ var sTableId = (_oController$getView$ = oController.getView().byId("fe::TabMultipleMode")) === null || _oController$getView$ === void 0 ? void 0 : _oController$getView$.getSelectedKey();
10
13
 
11
14
  if (!sTableId) {
12
- // if single table id is not there then get the selected table id from multiple tabs
13
- sTableId = oController.getView().byId("fe::TabMultipleMode").getSelectedKey();
15
+ // if not multiple tabs, get single table ID
16
+ sTableId = oController.getView().getContent()[0].data().singleTableId;
14
17
  }
15
18
 
16
19
  var oTable = oController.getView().byId(sTableId);
@@ -134,4 +137,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/S
134
137
  };
135
138
  return ShareOverride;
136
139
  }, false);
137
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImdldENvdW50VXJsIiwib0NvbnRyb2xsZXIiLCJzVGFibGVJZCIsImdldFZpZXciLCJnZXRDb250ZW50IiwiZGF0YSIsInNpbmdsZVRhYmxlSWQiLCJieUlkIiwiZ2V0U2VsZWN0ZWRLZXkiLCJvVGFibGUiLCJvQmluZGluZyIsImdldFJvd0JpbmRpbmciLCJnZXRCaW5kaW5nIiwic0Rvd25sb2FkVXJsIiwiZ2V0RG93bmxvYWRVcmwiLCJhU3BsaXRVcmwiLCJzcGxpdCIsImJhc2VVcmwiLCJhU3VwcG9ydGVkUGFyYW1zIiwibGVuZ3RoIiwidXJsUGFyYW1zIiwiZm9yRWFjaCIsInVybFBhcmFtIiwiYVVybFBhcmFtUGFydHMiLCJwdXNoIiwiam9pbiIsImdldFNoYXJlVXJsIiwic0hhc2giLCJIYXNoQ2hhbmdlciIsImdldEluc3RhbmNlIiwiZ2V0SGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJzU2hhcmVVcmwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwidGhlbiIsInNGTFBVcmwiLCJjYXRjaCIsInNFcnJvciIsIkxvZyIsImVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJkb2N1bWVudCIsIlVSTCIsImdldFNhdmVBc1RpbGVTZXJ2aWNlVXJsIiwib0ZpbHRlckJhciIsIm9Db25kaXRpb25zIiwiZ2V0RmlsdGVyQ29uZGl0aW9ucyIsImJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJoYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiZ2V0SmFtVXJsIiwic0phbVVybCIsInJ1bm5pbmdJbklmcmFtZSIsImdldEZMUFVybCIsInNVcmwiLCJzdWJzdHIiLCJpbmRleE9mIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZU92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJiYXNlIiwib01ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJvVUlNYW5pZmVzdCIsImdldE1hbmlmZXN0RW50cnkiLCJzSWNvbiIsImljb25zIiwiaWNvbiIsIm9BcHBNYW5pZmVzdCIsInNUaXRsZSIsInRpdGxlIiwidGlsZSIsInF1ZXJ5VXJsIiwiamFtIiwidXJsIiwiZW1haWwiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFNQSxXQUFTQSxXQUFULENBQXFCQyxXQUFyQixFQUFrRDtBQUNqRCxRQUFJQyxRQUFRLEdBQUdELFdBQVcsQ0FBQ0UsT0FBWixHQUFzQkMsVUFBdEIsR0FBbUMsQ0FBbkMsRUFBc0NDLElBQXRDLEdBQTZDQyxhQUE1RDs7QUFDQSxRQUFJLENBQUNKLFFBQUwsRUFBZTtBQUNkO0FBQ0FBLE1BQUFBLFFBQVEsR0FBSUQsV0FBVyxDQUFDRSxPQUFaLEdBQXNCSSxJQUF0QixDQUEyQixxQkFBM0IsQ0FBRCxDQUFrRUMsY0FBbEUsRUFBWDtBQUNBOztBQUNELFFBQU1DLE1BQU0sR0FBR1IsV0FBVyxDQUFDRSxPQUFaLEdBQXNCSSxJQUF0QixDQUEyQkwsUUFBM0IsQ0FBZjs7QUFDQSxRQUFJLENBQUNPLE1BQUwsRUFBYTtBQUNaLGFBQU8sRUFBUDtBQUNBOztBQUNELFFBQU1DLFFBQVEsR0FBR0QsTUFBTSxDQUFDRSxhQUFQLE1BQTBCRixNQUFNLENBQUNHLFVBQVAsQ0FBa0IsT0FBbEIsQ0FBM0M7QUFDQSxRQUFNQyxZQUFZLEdBQUlILFFBQVEsSUFBS0EsUUFBRCxDQUFrQkksY0FBbEIsRUFBYixJQUFvRCxFQUF6RTtBQUNBLFFBQU1DLFNBQVMsR0FBR0YsWUFBWSxDQUFDRyxLQUFiLENBQW1CLEdBQW5CLENBQWxCO0FBQ0EsUUFBTUMsT0FBTyxHQUFH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LE9BSEYsRUFJRW5CLEtBSkYsQ0FJUSxVQUFVRyxLQUFWLEVBQXNCO0FBQzVCRCxRQUFBQSxHQUFHLENBQUNDLEtBQUosQ0FBVUEsS0FBVjtBQUNBLE9BTkY7QUFPQSxhQUFPQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JiLGdCQUFnQixFQUFoQyxFQUFvQ00sSUFBcEMsQ0FBeUMsVUFBVUMsT0FBVixFQUF3QjtBQUN2RTJCLFFBQUFBLGNBQWMsQ0FBQ21CLEtBQWYsQ0FBcUJELEdBQXJCLEdBQTJCN0MsT0FBM0I7QUFDQSxlQUFPMkIsY0FBUDtBQUNBLE9BSE0sQ0FBUDtBQUlBO0FBbENvQixHQUF0QjtTQXFDZUYsYSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgU2hhcmUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NoYXJlXCI7XG5pbXBvcnQgU2VtYW50aWNEYXRlT3BlcmF0b3JzIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljRGF0ZU9wZXJhdG9yc1wiO1xuaW1wb3J0IEljb25UYWJCYXIgZnJvbSBcInNhcC9tL0ljb25UYWJCYXJcIjtcbmltcG9ydCBIYXNoQ2hhbmdlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9IYXNoQ2hhbmdlclwiO1xuaW1wb3J0IFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5mdW5jdGlvbiBnZXRDb3VudFVybChvQ29udHJvbGxlcjogQmFzZUNvbnRyb2xsZXIpIHtcblx0bGV0IHNUYWJsZUlkID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXS5kYXRhKCkuc2luZ2xlVGFibGVJZDtcblx0aWYgKCFzVGFibGVJZCkge1xuXHRcdC8vIGlmIHNpbmdsZSB0YWJsZSBpZCBpcyBub3QgdGhlcmUgdGhlbiBnZXQgdGhlIHNlbGVjdGVkIHRhYmxlIGlkIGZyb20gbXVsdGlwbGUgdGFic1xuXHRcdHNUYWJsZUlkID0gKG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKFwiZmU6OlRhYk11bHRpcGxlTW9kZVwiKSBhcyBJY29uVGFiQmFyKS5nZXRTZWxlY3RlZEtleSgpO1xuXHR9XG5cdGNvbnN0IG9UYWJsZSA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKHNUYWJsZUlkKSBhcyBUYWJsZTtcblx0aWYgKCFvVGFibGUpIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXHRjb25zdCBvQmluZGluZyA9IG9UYWJsZS5nZXRSb3dCaW5kaW5nKCkgfHwgb1RhYmxlLmdldEJpbmRpbmcoXCJpdGVtc1wiKTtcblx0Y29uc3Qgc0Rvd25sb2FkVXJsID0gKG9CaW5kaW5nICYmIChvQmluZGluZyBhcyBhbnkpLmdldERvd25sb2FkVXJsKCkpIHx8IFwiXCI7XG5cdGNvbnN0IGFTcGxpdFVybCA9IHNEb3dubG9hZFVybC5zcGxpdChcIj9cIik7XG5cdGNvbnN0IGJhc2VVcmwgPSBhU3BsaXRVcmxbMF0gKyBcIi8kY291bnQ/XCI7XG5cdC8vIGdldERvd25sb2FkVXJsKCkgcmV0dXJucyB1cmwgd2l0aCAkc2VsZWN0LCAkZXhwYW5kIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiAvJGNvdW50IGlzIHVzZWQgdG8gZ2V0IHRoZSByZWNvcmQgY291bnQuIG9ubHkgJGFwcGx5LCAkc2VhcmNoLCAkZmlsdGVyIGlzIHN1cHBvcnRlZFxuXHQvLyA/JGNvdW50PXRydWUgcmV0dXJucyBjb3VudCBpbiBhIGZvcm1hdCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IEZMUCB5ZXQuXG5cdC8vIGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9ybWF0IGZvciB2NCBpcyAuLi9jb3VudC4uIG9ubHkgKHdoZXJlIHRpbGUgcHJldmlldyB3aWxsIHN0aWxsIG5vdCB3b3JrKVxuXHRjb25zdCBhU3VwcG9ydGVkUGFyYW1zOiBhbnlbXSA9IFtdO1xuXHRpZiAoYVNwbGl0VXJsLmxlbmd0aCA+IDEpIHtcblx0XHRjb25zdCB1cmxQYXJhbXMgPSBhU3BsaXRVcmxbMV07XG5cdFx0dXJsUGFyYW1zLnNwbGl0KFwiJlwiKS5mb3JFYWNoKGZ1bmN0aW9uICh1cmxQYXJhbTogYW55KSB7XG5cdFx0XHRjb25zdCBhVXJsUGFyYW1QYXJ0cyA9IHVybFBhcmFtLnNwbGl0KFwiPVwiKTtcblx0XHRcdHN3aXRjaCAoYVVybFBhcmFtUGFydHNbMF0pIHtcblx0XHRcdFx0Y2FzZSBcIiRhcHBseVwiOlxuXHRcdFx0XHRjYXNlIFwiJHNlYXJjaFwiOlxuXHRcdFx0XHRjYXNlIFwiJGZpbHRlclwiOlxuXHRcdFx0XHRcdGFTdXBwb3J0ZWRQYXJhbXMucHVzaCh1cmxQYXJhbSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGJhc2VVcmwgKyBhU3VwcG9ydGVkUGFyYW1zLmpvaW4oXCImXCIpO1xufVxuZnVuY3Rpb24gZ2V0U2hhcmVVcmwoKSB7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRjb25zdCBzU2hhcmVVcmwgPSBzSGFzaCA/IHNCYXNlUGF0aCArIHNIYXNoIDogd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdHJldHVybiBzU2hhcmVVcmw7XG59XG5mdW5jdGlvbiBnZXRTaGFyZUVtYWlsVXJsKCkge1xuXHRjb25zdCBvVVNoZWxsQ29udGFpbmVyID0gc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lcjtcblx0aWYgKG9VU2hlbGxDb250YWluZXIpIHtcblx0XHRyZXR1cm4gb1VTaGVsbENvbnRhaW5lclxuXHRcdFx0LmdldEZMUFVybEFzeW5jKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc0ZMUFVybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzRkxQVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRvY3VtZW50LlVSTCk7XG5cdH1cbn1cbmZ1bmN0aW9uIGdldFNhdmVBc1RpbGVTZXJ2aWNlVXJsKG9Db250cm9sbGVyOiBhbnkpIHtcblx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRDb250ZW50KClbMF0uZGF0YShcImZpbHRlckJhcklkXCIpKTtcblx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRjb25zdCBvQ29uZGl0aW9ucyA9IG9GaWx0ZXJCYXIuZ2V0RmlsdGVyQ29uZGl0aW9ucygpO1xuXHRcdGNvbnN0IGJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQgPSBTZW1hbnRpY0RhdGVPcGVyYXRvcnMuaGFzU2VtYW50aWNEYXRlT3BlcmF0aW9ucyhvQ29uZGl0aW9ucyk7XG5cdFx0aWYgKGJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQpIHtcblx0XHRcdHJldHVybiBnZXRDb3VudFVybChvQ29udHJvbGxlcik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBcIlwiO1xufVxuZnVuY3Rpb24gZ2V0SmFtVXJsKCkge1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0Y29uc3Qgc0phbVVybCA9IHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0Ly8gaW4gY2FzZSB3ZSBhcmUgaW4gY0ZMUCBzY2VuYXJpbywgdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmdcblx0Ly8gaW5zaWRlIGFuIGlmcmFtZSwgYW5kIHRoZXJlIGZvciB3ZSBuZWVkIHRvIGdldCB0aGUgY0ZMUCBVUkxcblx0Ly8gYW5kIG5vdCAnZG9jdW1lbnQuVVJMJyB0aGF0IHJlcHJlc2VudHMgdGhlIGlmcmFtZSBVUkxcblx0aWYgKHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIgJiYgc2FwLnVzaGVsbC5Db250YWluZXIucnVubmluZ0luSWZyYW1lICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSgpKSB7XG5cdFx0c2FwLnVzaGVsbC5Db250YWluZXIuZ2V0RkxQVXJsKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc1VybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzVXJsLnN1YnN0cigwLCBzVXJsLmluZGV4T2YoXCIjXCIpKSArIHNKYW1Vcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgc0phbVVybDtcblx0fVxufVxuXG5jb25zdCBTaGFyZU92ZXJyaWRlID0ge1xuXHRhZGFwdFNoYXJlTWV0YWRhdGE6IGZ1bmN0aW9uICh0aGlzOiBTaGFyZSwgb1NoYXJlTWV0YWRhdGE6IGFueSkge1xuXHRcdFByb21pc2UucmVzb2x2ZShnZXRKYW1VcmwoKSlcblx0XHRcdC50aGVuKChzSmFtVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcblx0XHRcdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLmJhc2UuZ2V0VmlldygpKTtcblx0XHRcdFx0Y29uc3Qgb01ldGFkYXRhID0gb0FwcENvbXBvbmVudC5nZXRNZXRhZGF0YSgpO1xuXHRcdFx0XHRjb25zdCBvVUlNYW5pZmVzdCA9IG9NZXRhZGF0YS5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLnVpXCIpO1xuXHRcdFx0XHRjb25zdCBzSWNvbiA9IChvVUlNYW5pZmVzdCAmJiBvVUlNYW5pZmVzdC5pY29ucyAmJiBvVUlNYW5pZmVzdC5pY29ucy5pY29uKSB8fCBcIlwiO1xuXHRcdFx0XHRjb25zdCBvQXBwTWFuaWZlc3QgPSBvTWV0YWRhdGEuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5hcHBcIik7XG5cdFx0XHRcdGNvbnN0IHNUaXRsZSA9IChvQXBwTWFuaWZlc3QgJiYgb0FwcE1hbmlmZXN0LnRpdGxlKSB8fCBcIlwiO1xuXHRcdFx0XHQvLyBUT0RPOiBjaGVjayBpZiB0aGVyZSBpcyBhbnkgc2VtYW50aWMgZGF0ZSB1c2VkIGJlZm9yZSBhZGRpbmcgc2VydmljZVVSTCBhcyBCTEk6RklPUklURUNIUDEtMTgwMjNcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGlsZSA9IHtcblx0XHRcdFx0XHRpY29uOiBzSWNvbixcblx0XHRcdFx0XHR0aXRsZTogc1RpdGxlLFxuXHRcdFx0XHRcdHF1ZXJ5VXJsOiBnZXRTYXZlQXNUaWxlU2VydmljZVVybCh0aGlzLmJhc2UpXG5cdFx0XHRcdH07XG5cdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnRpdGxlID0gZG9jdW1lbnQudGl0bGU7XG5cdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmphbS51cmwgPSBzSmFtVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0fSk7XG5cblx0XHRQcm9taXNlLnJlc29sdmUoZ2V0U2hhcmVVcmwoKSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzVXJsOiBhbnkpIHtcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudXJsID0gc1VybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdH0pO1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZ2V0U2hhcmVFbWFpbFVybCgpKS50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCA9IHNGTFBVcmw7XG5cdFx0XHRyZXR1cm4gb1NoYXJlTWV0YWRhdGE7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNoYXJlT3ZlcnJpZGU7XG4iXX0=
140
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImdldENvdW50VXJsIiwib0NvbnRyb2xsZXIiLCJzVGFibGVJZCIsImdldFZpZXciLCJieUlkIiwiZ2V0U2VsZWN0ZWRLZXkiLCJnZXRDb250ZW50IiwiZGF0YSIsInNpbmdsZVRhYmxlSWQiLCJvVGFibGUiLCJvQmluZGluZyIsImdldFJvd0JpbmRpbmciLCJnZXRCaW5kaW5nIiwic0Rvd25sb2FkVXJsIiwiZ2V0RG93bmxvYWRVcmwiLCJhU3BsaXRVcmwiLCJzcGxpdCIsImJhc2VVcmwiLCJhU3VwcG9ydGVkUGFyYW1zIiwibGVuZ3RoIiwidXJsUGFyYW1zIiwiZm9yRWFjaCIsInVybFBhcmFtIiwiYVVybFBhcmFtUGFydHMiLCJwdXNoIiwiam9pbiIsImdldFNoYXJlVXJsIiwic0hhc2giLCJIYXNoQ2hhbmdlciIsImdldEluc3RhbmNlIiwiZ2V0SGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJzU2hhcmVVcmwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwidGhlbiIsInNGTFBVcmwiLCJjYXRjaCIsInNFcnJvciIsIkxvZyIsImVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJkb2N1bWVudCIsIlVSTCIsImdldFNhdmVBc1RpbGVTZXJ2aWNlVXJsIiwib0ZpbHRlckJhciIsIm9Db25kaXRpb25zIiwiZ2V0RmlsdGVyQ29uZGl0aW9ucyIsImJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJoYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiZ2V0SmFtVXJsIiwic0phbVVybCIsInJ1bm5pbmdJbklmcmFtZSIsImdldEZMUFVybCIsInNVcmwiLCJzdWJzdHIiLCJpbmRleE9mIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZU92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJiYXNlIiwib01ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJvVUlNYW5pZmVzdCIsImdldE1hbmlmZXN0RW50cnkiLCJzSWNvbiIsImljb25zIiwiaWNvbiIsIm9BcHBNYW5pZmVzdCIsInNUaXRsZSIsInRpdGxlIiwidGlsZSIsInF1ZXJ5VXJsIiwiamFtIiwidXJsIiwiZW1haWwiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFNQSxXQUFTQSxXQUFULENBQXFCQyxXQUFyQixFQUFrRDtBQUFBOztBQUNqRDtBQUNBLFFBQUlDLFFBQVEsNEJBQUlELFdBQVcsQ0FBQ0UsT0FBWixHQUFzQkMsSUFBdEIsQ0FBMkIscUJBQTNCLENBQUosMERBQUcsc0JBQW1FQyxjQUFuRSxFQUFmOztBQUNBLFFBQUksQ0FBQ0gsUUFBTCxFQUFlO0FBQ2Q7QUFDQUEsTUFBQUEsUUFBUSxHQUFHRCxXQUFXLENBQUNFLE9BQVosR0FBc0JHLFVBQXRCLEdBQW1DLENBQW5DLEVBQXNDQyxJQUF0QyxHQUE2Q0MsYUFBeEQ7QUFDQTs7QUFDRCxRQUFNQyxNQUFNLEdBQUdSLFdBQVcsQ0FBQ0UsT0FBWixHQUFzQkMsSUFBdEIsQ0FBMkJGLFFBQTNCLENBQWY7O0FBQ0EsUUFBSSxDQUFDTyxNQUFMLEVBQWE7QUFDWixhQUFPLEVBQVA7QUFDQTs7QUFDRCxRQUFNQyxRQUFRLEdBQUdELE1BQU0sQ0FBQ0UsYUFBUCxNQUEwQkYsTUFBTSxDQUFDRyxVQUFQLENBQWtCLE9BQWxCLENBQTNDO0FBQ0EsUUFBTUMsWUFBWSxHQUFJSCxRQUFRLElBQUtBLFFBQUQsQ0FBa0JJLGNBQWxCLEVBQWIsSUFBb0QsRUFBekU7QUFDQSxRQUFNQyxTQUFTLEdBQUdGLFlBQVksQ0FBQ0csS0FBYixDQUFtQixHQUFuQixDQUFsQjtB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LEdBQXFCekIsSUFBckI7QUFDQSxPQUhGLEVBSUVuQixLQUpGLENBSVEsVUFBVUcsS0FBVixFQUFzQjtBQUM1QkQsUUFBQUEsR0FBRyxDQUFDQyxLQUFKLENBQVVBLEtBQVY7QUFDQSxPQU5GO0FBT0EsYUFBT0MsT0FBTyxDQUFDQyxPQUFSLENBQWdCYixnQkFBZ0IsRUFBaEMsRUFBb0NNLElBQXBDLENBQXlDLFVBQVVDLE9BQVYsRUFBd0I7QUFDdkUyQixRQUFBQSxjQUFjLENBQUNtQixLQUFmLENBQXFCRCxHQUFyQixHQUEyQjdDLE9BQTNCO0FBQ0EsZUFBTzJCLGNBQVA7QUFDQSxPQUhNLENBQVA7QUFJQTtBQWxDb0IsR0FBdEI7U0FxQ2VGLGEiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IFNlbWFudGljRGF0ZU9wZXJhdG9ycyBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TZW1hbnRpY0RhdGVPcGVyYXRvcnNcIjtcbmltcG9ydCBJY29uVGFiQmFyIGZyb20gXCJzYXAvbS9JY29uVGFiQmFyXCI7XG5pbXBvcnQgSGFzaENoYW5nZXIgZnJvbSBcInNhcC91aS9jb3JlL3JvdXRpbmcvSGFzaENoYW5nZXJcIjtcbmltcG9ydCBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuZnVuY3Rpb24gZ2V0Q291bnRVcmwob0NvbnRyb2xsZXI6IEJhc2VDb250cm9sbGVyKSB7XG5cdC8vIGdldCBzZWxlY3RlZCB0YWJsZSBJRCBmcm9tIG11bHRpcGxlIHRhYnNcblx0bGV0IHNUYWJsZUlkID0gKG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKFwiZmU6OlRhYk11bHRpcGxlTW9kZVwiKSBhcyBJY29uVGFiQmFyKT8uZ2V0U2VsZWN0ZWRLZXkoKTtcblx0aWYgKCFzVGFibGVJZCkge1xuXHRcdC8vIGlmIG5vdCBtdWx0aXBsZSB0YWJzLCBnZXQgc2luZ2xlIHRhYmxlIElEXG5cdFx0c1RhYmxlSWQgPSBvQ29udHJvbGxlci5nZXRWaWV3KCkuZ2V0Q29udGVudCgpWzBdLmRhdGEoKS5zaW5nbGVUYWJsZUlkO1xuXHR9XG5cdGNvbnN0IG9UYWJsZSA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKHNUYWJsZUlkKSBhcyBUYWJsZTtcblx0aWYgKCFvVGFibGUpIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXHRjb25zdCBvQmluZGluZyA9IG9UYWJsZS5nZXRSb3dCaW5kaW5nKCkgfHwgb1RhYmxlLmdldEJpbmRpbmcoXCJpdGVtc1wiKTtcblx0Y29uc3Qgc0Rvd25sb2FkVXJsID0gKG9CaW5kaW5nICYmIChvQmluZGluZyBhcyBhbnkpLmdldERvd25sb2FkVXJsKCkpIHx8IFwiXCI7XG5cdGNvbnN0IGFTcGxpdFVybCA9IHNEb3dubG9hZFVybC5zcGxpdChcIj9cIik7XG5cdGNvbnN0IGJhc2VVcmwgPSBhU3BsaXRVcmxbMF0gKyBcIi8kY291bnQ/XCI7XG5cdC8vIGdldERvd25sb2FkVXJsKCkgcmV0dXJucyB1cmwgd2l0aCAkc2VsZWN0LCAkZXhwYW5kIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiAvJGNvdW50IGlzIHVzZWQgdG8gZ2V0IHRoZSByZWNvcmQgY291bnQuIG9ubHkgJGFwcGx5LCAkc2VhcmNoLCAkZmlsdGVyIGlzIHN1cHBvcnRlZFxuXHQvLyA/JGNvdW50PXRydWUgcmV0dXJucyBjb3VudCBpbiBhIGZvcm1hdCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IEZMUCB5ZXQuXG5cdC8vIGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9ybWF0IGZvciB2NCBpcyAuLi9jb3VudC4uIG9ubHkgKHdoZXJlIHRpbGUgcHJldmlldyB3aWxsIHN0aWxsIG5vdCB3b3JrKVxuXHRjb25zdCBhU3VwcG9ydGVkUGFyYW1zOiBhbnlbXSA9IFtdO1xuXHRpZiAoYVNwbGl0VXJsLmxlbmd0aCA+IDEpIHtcblx0XHRjb25zdCB1cmxQYXJhbXMgPSBhU3BsaXRVcmxbMV07XG5cdFx0dXJsUGFyYW1zLnNwbGl0KFwiJlwiKS5mb3JFYWNoKGZ1bmN0aW9uICh1cmxQYXJhbTogYW55KSB7XG5cdFx0XHRjb25zdCBhVXJsUGFyYW1QYXJ0cyA9IHVybFBhcmFtLnNwbGl0KFwiPVwiKTtcblx0XHRcdHN3aXRjaCAoYVVybFBhcmFtUGFydHNbMF0pIHtcblx0XHRcdFx0Y2FzZSBcIiRhcHBseVwiOlxuXHRcdFx0XHRjYXNlIFwiJHNlYXJjaFwiOlxuXHRcdFx0XHRjYXNlIFwiJGZpbHRlclwiOlxuXHRcdFx0XHRcdGFTdXBwb3J0ZWRQYXJhbXMucHVzaCh1cmxQYXJhbSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGJhc2VVcmwgKyBhU3VwcG9ydGVkUGFyYW1zLmpvaW4oXCImXCIpO1xufVxuZnVuY3Rpb24gZ2V0U2hhcmVVcmwoKSB7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRjb25zdCBzU2hhcmVVcmwgPSBzSGFzaCA/IHNCYXNlUGF0aCArIHNIYXNoIDogd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdHJldHVybiBzU2hhcmVVcmw7XG59XG5mdW5jdGlvbiBnZXRTaGFyZUVtYWlsVXJsKCkge1xuXHRjb25zdCBvVVNoZWxsQ29udGFpbmVyID0gc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lcjtcblx0aWYgKG9VU2hlbGxDb250YWluZXIpIHtcblx0XHRyZXR1cm4gb1VTaGVsbENvbnRhaW5lclxuXHRcdFx0LmdldEZMUFVybEFzeW5jKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc0ZMUFVybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzRkxQVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRvY3VtZW50LlVSTCk7XG5cdH1cbn1cbmZ1bmN0aW9uIGdldFNhdmVBc1RpbGVTZXJ2aWNlVXJsKG9Db250cm9sbGVyOiBhbnkpIHtcblx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRDb250ZW50KClbMF0uZGF0YShcImZpbHRlckJhcklkXCIpKTtcblx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRjb25zdCBvQ29uZGl0aW9ucyA9IG9GaWx0ZXJCYXIuZ2V0RmlsdGVyQ29uZGl0aW9ucygpO1xuXHRcdGNvbnN0IGJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQgPSBTZW1hbnRpY0RhdGVPcGVyYXRvcnMuaGFzU2VtYW50aWNEYXRlT3BlcmF0aW9ucyhvQ29uZGl0aW9ucyk7XG5cdFx0aWYgKGJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQpIHtcblx0XHRcdHJldHVybiBnZXRDb3VudFVybChvQ29udHJvbGxlcik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBcIlwiO1xufVxuZnVuY3Rpb24gZ2V0SmFtVXJsKCkge1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0Y29uc3Qgc0phbVVybCA9IHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0Ly8gaW4gY2FzZSB3ZSBhcmUgaW4gY0ZMUCBzY2VuYXJpbywgdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmdcblx0Ly8gaW5zaWRlIGFuIGlmcmFtZSwgYW5kIHRoZXJlIGZvciB3ZSBuZWVkIHRvIGdldCB0aGUgY0ZMUCBVUkxcblx0Ly8gYW5kIG5vdCAnZG9jdW1lbnQuVVJMJyB0aGF0IHJlcHJlc2VudHMgdGhlIGlmcmFtZSBVUkxcblx0aWYgKHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIgJiYgc2FwLnVzaGVsbC5Db250YWluZXIucnVubmluZ0luSWZyYW1lICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSgpKSB7XG5cdFx0c2FwLnVzaGVsbC5Db250YWluZXIuZ2V0RkxQVXJsKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc1VybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzVXJsLnN1YnN0cigwLCBzVXJsLmluZGV4T2YoXCIjXCIpKSArIHNKYW1Vcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgc0phbVVybDtcblx0fVxufVxuXG5jb25zdCBTaGFyZU92ZXJyaWRlID0ge1xuXHRhZGFwdFNoYXJlTWV0YWRhdGE6IGZ1bmN0aW9uICh0aGlzOiBTaGFyZSwgb1NoYXJlTWV0YWRhdGE6IGFueSkge1xuXHRcdFByb21pc2UucmVzb2x2ZShnZXRKYW1VcmwoKSlcblx0XHRcdC50aGVuKChzSmFtVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcblx0XHRcdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLmJhc2UuZ2V0VmlldygpKTtcblx0XHRcdFx0Y29uc3Qgb01ldGFkYXRhID0gb0FwcENvbXBvbmVudC5nZXRNZXRhZGF0YSgpO1xuXHRcdFx0XHRjb25zdCBvVUlNYW5pZmVzdCA9IG9NZXRhZGF0YS5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLnVpXCIpO1xuXHRcdFx0XHRjb25zdCBzSWNvbiA9IChvVUlNYW5pZmVzdCAmJiBvVUlNYW5pZmVzdC5pY29ucyAmJiBvVUlNYW5pZmVzdC5pY29ucy5pY29uKSB8fCBcIlwiO1xuXHRcdFx0XHRjb25zdCBvQXBwTWFuaWZlc3QgPSBvTWV0YWRhdGEuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5hcHBcIik7XG5cdFx0XHRcdGNvbnN0IHNUaXRsZSA9IChvQXBwTWFuaWZlc3QgJiYgb0FwcE1hbmlmZXN0LnRpdGxlKSB8fCBcIlwiO1xuXHRcdFx0XHQvLyBUT0RPOiBjaGVjayBpZiB0aGVyZSBpcyBhbnkgc2VtYW50aWMgZGF0ZSB1c2VkIGJlZm9yZSBhZGRpbmcgc2VydmljZVVSTCBhcyBCTEk6RklPUklURUNIUDEtMTgwMjNcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGlsZSA9IHtcblx0XHRcdFx0XHRpY29uOiBzSWNvbixcblx0XHRcdFx0XHR0aXRsZTogc1RpdGxlLFxuXHRcdFx0XHRcdHF1ZXJ5VXJsOiBnZXRTYXZlQXNUaWxlU2VydmljZVVybCh0aGlzLmJhc2UpXG5cdFx0XHRcdH07XG5cdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnRpdGxlID0gZG9jdW1lbnQudGl0bGU7XG5cdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmphbS51cmwgPSBzSmFtVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0fSk7XG5cblx0XHRQcm9taXNlLnJlc29sdmUoZ2V0U2hhcmVVcmwoKSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzVXJsOiBhbnkpIHtcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudXJsID0gc1VybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdH0pO1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZ2V0U2hhcmVFbWFpbFVybCgpKS50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCA9IHNGTFBVcmw7XG5cdFx0XHRyZXR1cm4gb1NoYXJlTWV0YWRhdGE7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNoYXJlT3ZlcnJpZGU7XG4iXX0=
@@ -7,10 +7,11 @@ import IconTabBar from "sap/m/IconTabBar";
7
7
  import HashChanger from "sap/ui/core/routing/HashChanger";
8
8
  import Table from "sap/ui/mdc/Table";
9
9
  function getCountUrl(oController: BaseController) {
10
- let sTableId = oController.getView().getContent()[0].data().singleTableId;
10
+ // get selected table ID from multiple tabs
11
+ let sTableId = (oController.getView().byId("fe::TabMultipleMode") as IconTabBar)?.getSelectedKey();
11
12
  if (!sTableId) {
12
- // if single table id is not there then get the selected table id from multiple tabs
13
- sTableId = (oController.getView().byId("fe::TabMultipleMode") as IconTabBar).getSelectedKey();
13
+ // if not multiple tabs, get single table ID
14
+ sTableId = oController.getView().getContent()[0].data().singleTableId;
14
15
  }
15
16
  const oTable = oController.getView().byId(sTableId) as Table;
16
17
  if (!oTable) {
@@ -96,6 +96,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/K
96
96
  aStateControls.push(oTable);
97
97
  });
98
98
 
99
+ if (oController._getControls("Chart")) {
100
+ oController._getControls("Chart").forEach(function (oChart) {
101
+ aStateControls.push(oChart);
102
+ });
103
+ }
104
+
99
105
  if (oController._hasMultiVisualizations()) {
100
106
  aStateControls.push(oController._getSegmentedButton(TemplateContentView.Chart));
101
107
  aStateControls.push(oController._getSegmentedButton(TemplateContentView.Table));
@@ -181,8 +187,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/K
181
187
  oFilterBarControl.triggerSearch();
182
188
  } else {
183
189
  bPreventInitialSearch = _this._preventInitialSearch(oFilterBarVM);
184
- }
190
+ } // reset the suspend selection on filter bar to allow loading of data when needed (was set on LR Init)
191
+
185
192
 
193
+ oFilterBarControl.setSuspendSelection(false);
186
194
  _this._bSearchTriggered = !bPreventInitialSearch;
187
195
  oDynamicPage.setHeaderExpanded(system.desktop || bPreventInitialSearch);
188
196
  }
@@ -443,4 +451,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/K
443
451
  };
444
452
  return ViewStateOverride;
445
453
  }, false);
446
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpZXdTdGF0ZS50cyJdLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvcmVMaWJyYXJ5IiwiVmFyaWFudE1hbmFnZW1lbnQiLCJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiSW5pdGlhbExvYWRNb2RlIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiQ29tbW9uVXRpbHMiLCJDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYIiwiVmlld1N0YXRlT3ZlcnJpZGUiLCJfYlNlYXJjaFRyaWdnZXJlZCIsImFwcGx5SW5pdGlhbFN0YXRlT25seSIsIm9uQmVmb3JlU3RhdGVBcHBsaWVkIiwiYVByb21pc2VzIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckJhciIsIl9nZXRGaWx0ZXJCYXJDb250cm9sIiwiYVRhYmxlcyIsIl9nZXRDb250cm9scyIsInNldFN1c3BlbmRTZWxlY3Rpb24iLCJwdXNoIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiZm9yRWFjaCIsIm9UYWJsZSIsImluaXRpYWxpemVkIiwib25BZnRlclN0YXRlQXBwbGllZCIsIl9pc0ZpbHRlckJhckhpZGRlbiIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYUNvbnRyb2xzIiwic2V0UHJvcGVydHkiLCJfaXNNdWx0aU1vZGUiLCJfc2V0Q291bnRzT3V0RGF0ZWQiLCJzRGlzcGxheWVkQ29udHJvbElkIiwiX2dldEN1cnJlbnRDb250cm9sIiwiZ2V0SWQiLCJvQ29udHJvbCIsImRhdGEiLCJhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHMiLCJhVmlld0NvbnRyb2xzIiwiYUNvbnRyb2xzVG9SZWZyZXNoIiwiS2VlcEFsaXZlSGVscGVyIiwiZ2V0Q29udHJvbHNGb3JSZWZyZXNoIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJhcHBseSIsImFkYXB0U3RhdGVDb250cm9scyIsImFTdGF0ZUNvbnRyb2xzIiwib1ZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJiQ29udHJvbFZNIiwidmFyaWFudE1hbmFnZW1lbnQiLCJDb250cm9sIiwib0ZpbHRlckJhclZNIiwiX2dldEZpbHRlckJhclZNIiwiX2dldE11bHRpTW9kZUNvbnRyb2wiLCJvUXVpY2tGaWx0ZXIiLCJnZXRRdWlja0ZpbHRlciIsImdldFZhcmlhbnQiLCJfaGFzTXVsdGlWaXN1YWxpemF0aW9ucyIsIl9nZXRTZWdtZW50ZWRCdXR0b24iLCJDaGFydCIsIlRhYmxlIiwiYnlJZCIsInJldHJpZXZlQWRkaXRpb25hbFN0YXRlcyIsIm1BZGRpdGlvbmFsU3RhdGVzIiwiYlBlbmRpbmdGaWx0ZXIiLCJnZXRQcm9wZXJ0eSIsImRhdGFMb2FkZWQiLCJzQWxwQ29udGVudFZpZXciLCJhbHBDb250ZW50VmlldyIsImFwcGx5QWRkaXRpb25hbFN0YXRlcyIsIm9BZGRpdGlvbmFsU3RhdGVzIiwidHJpZ2dlclNlYXJjaCIsInN5c3RlbSIsImRlc2t0b3AiLCJIeWJyaWQiLCJnZXRNb2RlbCIsImdldFBhdGgiLCJhcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzIiwib05hdmlnYXRpb25QYXJhbWV0ZXIiLCJhUmVzdWx0cyIsIm9BcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJvQ29tcG9uZW50RGF0YSIsImdldENvbXBvbmVudERhdGEiLCJvU3RhcnR1cFBhcmFtZXRlcnMiLCJzdGFydHVwUGFyYW1ldGVycyIsIm9WYXJpYW50UHJvbWlzZSIsImhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyIsImJGaWx0ZXJWYXJpYW50QXBwbGllZCIsInRoZW4iLCJhVmFyaWFudHMiLCJsZW5ndGgiLCJfYXBwbHlTZWxlY3Rpb25WYXJpYW50Iiwib0R5bmFtaWNQYWdlIiwiYlByZXZlbnRJbml0aWFsU2VhcmNoIiwib0ZpbHRlckJhckNvbnRyb2wiLCJuYXZpZ2F0aW9uVHlwZSIsImluaXRpYWwiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImluaXRpYWxMb2FkIiwiRW5hYmxlZCIsIl9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaCIsIl9wcmV2ZW50SW5pdGlhbFNlYXJjaCIsInNldEhlYWRlckV4cGFuZGVkIiwiY2F0Y2giLCJMb2ciLCJlcnJvciIsIm9VcmxQYXJhbXMiLCJhUGFnZVZhcmlhbnRJZCIsImFGaWx0ZXJCYXJWYXJpYW50SWQiLCJhVGFibGVWYXJpYW50SWQiLCJvVmFyaWFudCIsInNQYWdlVmFyaWFudElkIiwic0ZpbHRlckJhclZhcmlhbnRJZCIsInNUYWJsZVZhcmlhbnRJZCIsIl9oYW5kbGVDb250cm9sVmFyaWFudElkIiwib1ZhcmlhbnRJRHMiLCJvVk0iLCJzVmFyaWFudE1hbmFnZW1lbnQiLCJnZXRWYXJpYW50cyIsImtleSIsIl9hcHBseUNvbnRyb2xWYXJpYW50IiwiZ2V0Q29udGVudCIsIm9UYWJsZVZhcmlhbnQiLCJQcm9taXNlIiwiYWxsIiwic1ZhcmlhbnRJRCIsInNWYXJpYW50UmVmZXJlbmNlIiwiX2NoZWNrSWZWYXJpYW50SWRJc0F2YWlsYWJsZSIsImdldFN0YW5kYXJkVmFyaWFudEtleSIsIkNvbnRyb2xWYXJpYW50QXBwbHlBUEkiLCJhY3RpdmF0ZVZhcmlhbnQiLCJlbGVtZW50IiwidmFyaWFudFJlZmVyZW5jZSIsIlBhZ2UiLCJOb25lIiwiRXJyb3IiLCJvVmFyaWFudE1hbmFnZW1lbnQiLCJvQ3VycmVudFZhcmlhbnQiLCJmaW5kIiwib0l0ZW0iLCJnZXRDdXJyZW50VmFyaWFudEtleSIsImV4ZWN1dGVPblNlbGVjdCIsIm9TZWxlY3Rpb25WYXJpYW50Iiwic2VsZWN0aW9uVmFyaWFudCIsIm9TZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJyZXNvbHZlIiwib0NvbmRpdGlvbnMiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwic0NvbnRleHRQYXRoIiwiY29udGV4dFBhdGgiLCJlbnRpdHlTZXQiLCJhTWFuZGF0b3J5RmlsdGVyRmllbGRzIiwiZ2V0TWFuZGF0b3J5RmlsdGVyRmllbGRzIiwiYlJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiZ2V0Q29uZGl0aW9ucyIsImFkZERlZmF1bHREaXNwbGF5Q3VycmVuY3kiLCJhZGRTZWxlY3Rpb25WYXJpYW50VG9Db25kaXRpb25zIiwiX2FjdGl2YXRlU2VsZWN0aW9uVmFyaWFudCIsIm9Qcm9taXNlIiwib1ZhcmlhbnRLZXkiLCJnZXREZWZhdWx0VmFyaWFudEtleSIsImJDbGVhckZpbHRlckFuZFJlcGxhY2VXaXRoQXBwU3RhdGUiLCJfZm5BcHBseUNvbmRpdGlvbnMiLCJtRmlsdGVyIiwiYUl0ZW1zIiwiZm5BZGp1c3RWYWx1ZUhlbHBDb25kaXRpb24iLCJvQ29uZGl0aW9uIiwidmFsaWRhdGVkIiwiQ29uZGl0aW9uVmFsaWRhdGVkIiwiVmFsaWRhdGVkIiwib3BlcmF0b3IiLCJ2YWx1ZXMiLCJpc0VtcHR5IiwiZm5HZXRQcm9wZXJ0eUluZm8iLCJvRmlsdGVyQ29udHJvbCIsInNFbnRpdHlUeXBlUGF0aCIsInNFbnRpdHlTZXRQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRFbnRpdHlTZXRQYXRoIiwib0ZSIiwiZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoIiwiYU5vbkZpbHRlcmFibGVQcm9wcyIsIk5PTl9GSUxURVJBQkxFX1BST1BFUlRJRVMiLCJtRmlsdGVyRmllbGRzIiwiRmlsdGVyVXRpbHMiLCJnZXRDb252ZXJ0ZWRGaWx0ZXJGaWVsZHMiLCJhUHJvcGVydHlJbmZvIiwiT2JqZWN0Iiwia2V5cyIsInNGaWx0ZXJGaWVsZEtleSIsIm9Db252ZXJ0ZWRQcm9wZXJ0eSIsInNQcm9wZXJ0eVBhdGgiLCJjb25kaXRpb25QYXRoIiwicmVwbGFjZSIsImluZGV4T2YiLCJzQW5ub3RhdGlvblBhdGgiLCJhbm5vdGF0aW9uUGF0aCIsIm9Qcm9wZXJ0eUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsInBhdGgiLCJoaWRkZW5GaWx0ZXIiLCJhdmFpbGFiaWxpdHkiLCJoYXNWYWx1ZUhlbHAiLCJQcm9wZXJ0eUZvcm1hdHRlcnMiLCJnZXRPYmplY3QiLCJjb250ZXh0IiwiRGVsZWdhdGVVdGlsIiwiZ2V0Q3VzdG9tRGF0YSIsImZpbHRlciIsIm9Qcm9wZXJ0eUluZm8iLCJuYW1lIiwiTm90VmFsaWRhdGVkIiwiU3RhdGVVdGlsIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiaXRlbXMiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQWdCQSxNQUFNQSxPQUFPLEdBQUdDLFVBQVUsQ0FBQ0QsT0FBM0I7QUFBQSxNQUNDRSxxQkFBcUIsR0FBR0MsV0FBVyxDQUFDQyxpQkFEckM7QUFBQSxNQUVDQyxtQkFBbUIsR0FBR0YsV0FBVyxDQUFDRSxtQkFGbkM7QUFBQSxNQUdDQyxlQUFlLEdBQUdILFdBQVcsQ0FBQ0csZUFIL0I7QUFJQSxNQUFNQyxrQkFBa0IsR0FBR0MsV0FBVyxDQUFDRCxrQkFBdkM7QUFBQSxNQUNDRSxxQ0FBcUMsR0FBRyxRQUR6QztBQUdBLE1BQU1DLGlCQUFzQixHQUFHO0FBQzlCQyxJQUFBQSxpQkFBaUIsRUFBRSxLQURXO0FBRTlCQyxJQUFBQSxxQkFBcUIsRUFBRSxZQUFZO0FBQ2xDLGFBQU8sSUFBUDtBQUNBLEtBSjZCO0FBSzlCQyxJQUFBQSxvQkFBb0IsRUFBRSxVQUFzREMsU0FBdEQsRUFBc0U7QUFDM0YsVUFBTUMsS0FBSyxHQUFHLEtBQUtDLE9BQUwsRUFBZDtBQUFBLFVBQ0NDLFdBQVcsR0FBR0YsS0FBSyxDQUFDRyxhQUFOLEVBRGY7QUFBQSxVQUVDQyxVQUFVLEdBQUdGLFdBQVcsQ0FBQ0csb0JBQVosRUFGZDtBQUFBLFVBR0NDLE9BQU8sR0FBR0osV0FBVyxDQUFDSyxZQUFaLENBQXlCLE9BQXpCLENBSFg7O0FBSUEsVUFBSUgsVUFBSixFQUFnQjtBQUNmQSxRQUFBQSxVQUFVLENBQUNJLG1CQUFYLENBQStCLElBQS9CO0FBQ0FULFFBQUFBLFNBQVMsQ0FBQ1UsSUFBVixDQUFnQkwsVUFBRCxDQUFvQk0s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LFlBQUFBLE9BQU8sQ0FBQzhDLGFBQWEsQ0FBQ1YsSUFBZixDQUFQLEdBQThCLEVBQTlCO0FBQ0E7QUFDRCxTQXBCRjtBQXFCQSxlQUFPYSxTQUFTLENBQUNDLGtCQUFWLENBQTZCM00sVUFBN0IsRUFBeUM7QUFBRXNNLFVBQUFBLE1BQU0sRUFBRTdDLE9BQVY7QUFBbUJtRCxVQUFBQSxLQUFLLEVBQUVsRDtBQUExQixTQUF6QyxDQUFQO0FBQ0EsT0F6Qk0sQ0FBUDtBQTBCQTtBQWhZNkIsR0FBL0I7U0FtWWVuSyxpQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgVmlld1N0YXRlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIsIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IENvcmVMaWJyYXJ5IGZyb20gXCJzYXAvZmUvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgKiBhcyBQcm9wZXJ0eUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IE5hdkxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCBMaXN0UmVwb3J0Q29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9MaXN0UmVwb3J0L0xpc3RSZXBvcnRDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IHN5c3RlbSB9IGZyb20gXCJzYXAvdWkvRGV2aWNlXCI7XG5pbXBvcnQgQ29udHJvbFZhcmlhbnRBcHBseUFQSSBmcm9tIFwic2FwL3VpL2ZsL2FwcGx5L2FwaS9Db250cm9sVmFyaWFudEFwcGx5QVBJXCI7XG5pbXBvcnQgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IENvbmRpdGlvblZhbGlkYXRlZCBmcm9tIFwic2FwL3VpL21kYy9lbnVtL0NvbmRpdGlvblZhbGlkYXRlZFwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5cbmNvbnN0IE5hdlR5cGUgPSBOYXZMaWJyYXJ5Lk5hdlR5cGUsXG5cdFZhcmlhbnRNYW5hZ2VtZW50VHlwZSA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50LFxuXHRUZW1wbGF0ZUNvbnRlbnRWaWV3ID0gQ29yZUxpYnJhcnkuVGVtcGxhdGVDb250ZW50Vmlldyxcblx0SW5pdGlhbExvYWRNb2RlID0gQ29yZUxpYnJhcnkuSW5pdGlhbExvYWRNb2RlO1xuY29uc3QgRmlsdGVyUmVzdHJpY3Rpb25zID0gQ29tbW9uVXRpbHMuRmlsdGVyUmVzdHJpY3Rpb25zLFxuXHRDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYID0gL1xcK3xcXCovZztcblxuY29uc3QgVmlld1N0YXRlT3ZlcnJpZGU6IGFueSA9IHtcblx0X2JTZWFyY2hUcmlnZ2VyZWQ6IGZhbHNlLFxuXHRhcHBseUluaXRpYWxTdGF0ZU9ubHk6IGZ1bmN0aW9uICgpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0b25CZWZvcmVTdGF0ZUFwcGxpZWQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIGFQcm9taXNlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRhVGFibGVzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKFwidGFibGVcIik7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdG9GaWx0ZXJCYXIuc2V0U3VzcGVuZFNlbGVjdGlvbih0cnVlKTtcblx0XHRcdGFQcm9taXNlcy5wdXNoKChvRmlsdGVyQmFyIGFzIGFueSkud2FpdEZvckluaXRpYWxpemF0aW9uKCkpO1xuXHRcdH1cblx0XHRhVGFibGVzLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogYW55KSB7XG5cdFx0XHRhUHJvbWlzZXMucHVzaChvVGFibGUuaW5pdGlhbGl6ZWQoKSk7XG5cdFx0fSk7XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0b25BZnRlclN0YXRlQXBwbGllZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSkge1xuXHRcdGNvbnN0IG9Db250cm9sbGVyID0gdGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0XHRvRmlsdGVyQmFyLnNldFN1c3BlbmRTZWxlY3Rpb24oZmFsc2UpO1xuXHRcdH0gZWxzZSBpZiAob0NvbnRyb2xsZXIuX2lzRmlsdGVyQmFySGlkZGVuKCkpIHtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0XHRhQ29udHJvbHMgPSBvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoKTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhhc1BlbmRpbmdGaWx0ZXJzXCIsIGZhbHNlKTtcblx0XHRcdGlmIChvQ29udHJvbGxlci5faXNNdWx0aU1vZGUoKSkge1xuXHRcdFx0XHRvQ29udHJvbGxlci5fc2V0Q291bnRzT3V0RGF0ZWQoKTtcblx0XHRcdFx0Y29uc3Qgc0Rpc3BsYXllZENvbnRyb2xJZCA9IG9Db250cm9sbGVyLl9nZXRDdXJyZW50Q29udHJvbCgpLmdldElkKCk7XG5cdFx0XHRcdGFDb250cm9scy5mb3JFYWNoKGZ1bmN0aW9uIChvQ29udHJvbDogYW55KSB7XG5cdFx0XHRcdFx0b0NvbnRyb2wuZGF0YShcIm91dGRhdGVkUm93c1wiLCBvQ29udHJvbC5nZXRJZCgpICE9PSBzRGlzcGxheWVkQ29udHJvbElkKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIGFDb250cm9sczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YVZpZXdDb250cm9scyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scygpLFxuXHRcdFx0YUNvbnRyb2xzVG9SZWZyZXNoID0gS2VlcEFsaXZlSGVscGVyLmdldENvbnRyb2xzRm9yUmVmcmVzaChvVmlldywgYVZpZXdDb250cm9scyk7XG5cblx0XHRBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhQ29udHJvbHMsIGFDb250cm9sc1RvUmVmcmVzaCk7XG5cdH0sXG5cdGFkYXB0U3RhdGVDb250cm9sczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgYVN0YXRlQ29udHJvbHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdG9WaWV3RGF0YSA9IG9WaWV3LmdldFZpZXdEYXRhKCkgYXMgYW55LFxuXHRcdFx0YkNvbnRyb2xWTSA9IG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCA9PT0gVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w7XG5cblx0XHRjb25zdCBvRmlsdGVyQmFyVk0gPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTShvVmlldyk7XG5cdFx0aWYgKG9GaWx0ZXJCYXJWTSkge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvRmlsdGVyQmFyVk0pO1xuXHRcdH1cblx0XHRpZiAob0NvbnRyb2xsZXIuX2lzTXVsdGlNb2RlKCkpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldE11bHRpTW9kZUNvbnRyb2woKSk7XG5cdFx0fVxuXHRcdG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpLmZvckVhY2goZnVuY3Rpb24gKG9UYWJsZTogYW55KSB7XG5cdFx0XHRjb25zdCBvUXVpY2tGaWx0ZXIgPSBvVGFibGUuZ2V0UXVpY2tGaWx0ZXIoKTtcblx0XHRcdGlmIChvUXVpY2tGaWx0ZXIpIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvUXVpY2tGaWx0ZXIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGJDb250cm9sVk0pIHtcblx0XHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVGFibGUuZ2V0VmFyaWFudCgpKTtcblx0XHRcdH1cblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1RhYmxlKTtcblx0XHR9KTtcblxuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRTZWdtZW50ZWRCdXR0b24oVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkpO1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvQ29udHJvbGxlci5fZ2V0U2VnbWVudGVkQnV0dG9uKFRlbXBsYXRlQ29udGVudFZpZXcuVGFibGUpKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0ZpbHRlckJhcik7XG5cdFx0fVxuXHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1ZpZXcuYnlJZChcImZlOjpMaXN0UmVwb3J0XCIpKTtcblx0fSxcblx0cmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBtQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0YlBlbmRpbmdGaWx0ZXIgPSAob1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCkuZ2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiKTtcblxuXHRcdG1BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPSAhYlBlbmRpbmdGaWx0ZXIgfHwgISF0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkO1xuXHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRjb25zdCBzQWxwQ29udGVudFZpZXcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpLmdldFByb3BlcnR5KFwiYWxwQ29udGVudFZpZXdcIik7XG5cdFx0XHRtQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IHNBbHBDb250ZW50Vmlldztcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpcy5fYlNlYXJjaFRyaWdnZXJlZDtcblx0fSxcblx0YXBwbHlBZGRpdGlvbmFsU3RhdGVzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvQWRkaXRpb25hbFN0YXRlczogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmdldFZpZXcoKSxcblx0XHRcdG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyLFxuXHRcdFx0b0ZpbHRlckJhciA9IG9Db250cm9sbGVyLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cblx0XHRpZiAob0FkZGl0aW9uYWxTdGF0ZXMpIHtcblx0XHRcdC8vIGV4cGxpY2l0IGNoZWNrIGZvciBib29sZWFuIHZhbHVlcyAtICd1bmRlZmluZWQnIHNob3VsZCBub3QgYWx0ZXIgdGhlIHRyaWdnZXJlZCBzZWFyY2ggcHJvcGVydHlcblx0XHRcdGlmIChvQWRkaXRpb25hbFN0YXRlcy5kYXRhTG9hZGVkID09PSBmYWxzZSAmJiBvRmlsdGVyQmFyKSB7XG5cdFx0XHRcdC8vIHdpdGhvdXQgdGhpcywgdGhlIGRhdGEgaXMgbG9hZGVkIG9uIG5hdmlnYXRpbmcgYmFja1xuXHRcdFx0XHQob0ZpbHRlckJhciBhcyBhbnkpLl9iU2VhcmNoVHJpZ2dlcmVkID0gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKG9BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPT09IHRydWUpIHtcblx0XHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0XHRvRmlsdGVyQmFyLnRyaWdnZXJTZWFyY2goKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmIChvQ29udHJvbGxlci5faGFzTXVsdGlWaXN1YWxpemF0aW9ucygpKSB7XG5cdFx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRcdGlmICghc3lzdGVtLmRlc2t0b3AgJiYgb0FkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXcgPT0gVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQpIHtcblx0XHRcdFx0XHRvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9IFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0KG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpIGFzIEpTT05Nb2RlbCkuc2V0UHJvcGVydHkoXG5cdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKSArIFwiL2FscENvbnRlbnRWaWV3XCIsXG5cdFx0XHRcdFx0b0FkZGl0aW9uYWxTdGF0ZXMuYWxwQ29udGVudFZpZXdcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGFwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9OYXZpZ2F0aW9uUGFyYW1ldGVyOiBhbnksIGFSZXN1bHRzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpO1xuXHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyO1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBvQ29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRjb25zdCBvQ29tcG9uZW50RGF0YSA9IG9BcHBDb21wb25lbnQuZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdGNvbnN0IG9TdGFydHVwUGFyYW1ldGVycyA9IChvQ29tcG9uZW50RGF0YSAmJiBvQ29tcG9uZW50RGF0YS5zdGFydHVwUGFyYW1ldGVycykgfHwge307XG5cdFx0Y29uc3Qgb1ZhcmlhbnRQcm9taXNlID0gdGhpcy5oYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXMob1N0YXJ0dXBQYXJhbWV0ZXJzKTtcblx0XHRsZXQgYkZpbHRlclZhcmlhbnRBcHBsaWVkOiBib29sZWFuO1xuXHRcdGFSZXN1bHRzLnB1c2goXG5cdFx0XHRvVmFyaWFudFByb21pc2Vcblx0XHRcdFx0LnRoZW4oKGFWYXJpYW50czogYW55W10pID0+IHtcblx0XHRcdFx0XHRpZiAoYVZhcmlhbnRzICYmIGFWYXJpYW50cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRpZiAoYVZhcmlhbnRzWzBdID09PSB0cnVlIHx8IGFWYXJpYW50c1sxXSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdFx0XHRiRmlsdGVyVmFyaWFudEFwcGxpZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5fYXBwbHlTZWxlY3Rpb25WYXJpYW50KG9WaWV3LCBvTmF2aWdhdGlvblBhcmFtZXRlciwgYkZpbHRlclZhcmlhbnRBcHBsaWVkKS50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IG9EeW5hbWljUGFnZSA9IG9WaWV3LmJ5SWQoXCJmZTo6TGlzdFJlcG9ydFwiKTtcblx0XHRcdFx0XHRcdGxldCBiUHJldmVudEluaXRpYWxTZWFyY2ggPSBmYWxzZTtcblx0XHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXJCYXJWTSA9IHRoaXMuX2dldEZpbHRlckJhclZNKG9WaWV3KTtcblx0XHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXJCYXJDb250cm9sID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdFx0XHRcdGlmIChvRmlsdGVyQmFyQ29udHJvbCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0KG9OYXZpZ2F0aW9uUGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlICE9PSBOYXZUeXBlLmluaXRpYWwgJiYgb05hdmlnYXRpb25QYXJhbWV0ZXIucmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQpIHx8XG5cdFx0XHRcdFx0XHRcdFx0KCFvRmlsdGVyQmFyVk0gJiYgb1ZpZXcuZ2V0Vmlld0RhdGEoKS5pbml0aWFsTG9hZCA9PT0gSW5pdGlhbExvYWRNb2RlLkVuYWJsZWQpIHx8XG5cdFx0XHRcdFx0XHRcdFx0b0NvbnRyb2xsZXIuX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoKG9GaWx0ZXJCYXJWTSlcblx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0b0ZpbHRlckJhckNvbnRyb2wudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGJQcmV2ZW50SW5pdGlhbFNlYXJjaCA9IHRoaXMuX3ByZXZlbnRJbml0aWFsU2VhcmNoKG9GaWx0ZXJCYXJWTSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGhpcy5fYlNlYXJjaFRyaWdnZXJlZCA9ICFiUHJldmVudEluaXRpYWxTZWFyY2g7XG5cdFx0XHRcdFx0XHRcdG9EeW5hbWljUGFnZS5zZXRIZWFkZXJFeHBhbmRlZChzeXN0ZW0uZGVza3RvcCB8fCBiUHJldmVudEluaXRpYWxTZWFyY2gpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIlZhcmlhbnQgSUQgY2Fubm90IGJlIGFwcGxpZWRcIik7XG5cdFx0XHRcdH0pXG5cdFx0KTtcblx0fSxcblxuXHRoYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9VcmxQYXJhbXM6IGFueSkge1xuXHRcdGNvbnN0IGFQYWdlVmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS12YXJpYW50LWlkXCJdLFxuXHRcdFx0YUZpbHRlckJhclZhcmlhbnRJZCA9IG9VcmxQYXJhbXNbXCJzYXAtdWktZmUtZmlsdGVyYmFyLXZhcmlhbnQtaWRcIl0sXG5cdFx0XHRhVGFibGVWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLXRhYmxlLXZhcmlhbnQtaWRcIl07XG5cdFx0bGV0IG9WYXJpYW50O1xuXHRcdGlmIChhUGFnZVZhcmlhbnRJZCB8fCBhRmlsdGVyQmFyVmFyaWFudElkIHx8IGFUYWJsZVZhcmlhbnRJZCkge1xuXHRcdFx0b1ZhcmlhbnQgPSB7XG5cdFx0XHRcdHNQYWdlVmFyaWFudElkOiBhUGFnZVZhcmlhbnRJZCAmJiBhUGFnZVZhcmlhbnRJZFswXSxcblx0XHRcdFx0c0ZpbHRlckJhclZhcmlhbnRJZDogYUZpbHRlckJhclZhcmlhbnRJZCAmJiBhRmlsdGVyQmFyVmFyaWFudElkWzBdLFxuXHRcdFx0XHRzVGFibGVWYXJpYW50SWQ6IGFUYWJsZVZhcmlhbnRJZCAmJiBhVGFibGVWYXJpYW50SWRbMF1cblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9oYW5kbGVDb250cm9sVmFyaWFudElkKG9WYXJpYW50KTtcblx0fSxcblxuXHRfaGFuZGxlQ29udHJvbFZhcmlhbnRJZDogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgb1ZhcmlhbnRJRHM6IGFueSkge1xuXHRcdGxldCBvVk06IFZhcmlhbnRNYW5hZ2VtZW50O1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRhUHJvbWlzZXM6IGFueVtdID0gW107XG5cdFx0Y29uc3Qgc1ZhcmlhbnRNYW5hZ2VtZW50ID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKS52YXJpYW50TWFuYWdlbWVudDtcblx0XHRpZiAob1ZhcmlhbnRJRHMgJiYgb1ZhcmlhbnRJRHMuc1BhZ2VWYXJpYW50SWQgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIlBhZ2VcIikge1xuXHRcdFx0b1ZNID0gb1ZpZXcuYnlJZChcImZlOjpQYWdlVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHRvVk0uZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChvVmFyaWFudC5rZXkgPT09IG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkKSB7XG5cdFx0XHRcdFx0YVByb21pc2VzLnB1c2godGhpcy5fYXBwbHlDb250cm9sVmFyaWFudChvVk0sIG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkLCB0cnVlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0gZWxzZSBpZiAob1ZhcmlhbnRJRHMgJiYgc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIkNvbnRyb2xcIikge1xuXHRcdFx0aWYgKG9WYXJpYW50SURzLnNGaWx0ZXJCYXJWYXJpYW50SWQpIHtcblx0XHRcdFx0b1ZNID0gb1ZpZXcuYnlJZChvVmlldy5nZXRDb250ZW50KClbMF0uZGF0YShcImZpbHRlckJhclZhcmlhbnRJZFwiKSk7XG5cdFx0XHRcdGlmIChvVk0pIHtcblx0XHRcdFx0XHRvVk0uZ2V0VmFyaWFudHMoKS5mb3JFYWNoKChvVmFyaWFudDogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAob1ZhcmlhbnQua2V5ID09PSBvVmFyaWFudElEcy5zRmlsdGVyQmFyVmFyaWFudElkKSB7XG5cdFx0XHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKHRoaXMuX2FwcGx5Q29udHJvbFZhcmlhbnQob1ZNLCBvVmFyaWFudElEcy5zRmlsdGVyQmFyVmFyaWFudElkLCB0cnVlKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRcdFx0YVRhYmxlcyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpO1xuXHRcdFx0XHRhVGFibGVzLmZvckVhY2goKG9UYWJsZTogYW55KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhYmxlVmFyaWFudCA9IG9UYWJsZS5nZXRWYXJpYW50KCk7XG5cdFx0XHRcdFx0aWYgKG9UYWJsZSAmJiBvVGFibGVWYXJpYW50KSB7XG5cdFx0XHRcdFx0XHRvVGFibGVWYXJpYW50LmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAob1ZhcmlhbnQua2V5ID09PSBvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQpIHtcblx0XHRcdFx0XHRcdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLl9hcHBseUNvbnRyb2xWYXJpYW50KG9UYWJsZVZhcmlhbnQsIG9WYXJpYW50SURzLnNUYWJsZVZhcmlhbnRJZCkpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKTtcblx0fSxcblxuXHRfYXBwbHlDb250cm9sVmFyaWFudDogZnVuY3Rpb24gKG9WYXJpYW50OiBhbnksIHNWYXJpYW50SUQ6IGFueSwgYkZpbHRlclZhcmlhbnRBcHBsaWVkOiBhbnkpIHtcblx0XHRjb25zdCBzVmFyaWFudFJlZmVyZW5jZSA9IHRoaXMuX2NoZWNrSWZWYXJpYW50SWRJc0F2YWlsYWJsZShvVmFyaWFudCwgc1ZhcmlhbnRJRCkgPyBzVmFyaWFudElEIDogb1ZhcmlhbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCk7XG5cdFx0Y29uc3Qgb1ZNID0gQ29udHJvbFZhcmlhbnRBcHBseUFQSS5hY3RpdmF0ZVZhcmlhbnQoe1xuXHRcdFx0ZWxlbWVudDogb1ZhcmlhbnQsXG5cdFx0XHR2YXJpYW50UmVmZXJlbmNlOiBzVmFyaWFudFJlZmVyZW5jZVxuXHRcdH0pO1xuXHRcdHJldHVybiBvVk0udGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gYkZpbHRlclZhcmlhbnRBcHBsaWVkO1xuXHRcdH0pO1xuXHR9LFxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBwcml2YXRlIGhlbHBlciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRfZ2V0RmlsdGVyQmFyVk06IGZ1bmN0aW9uIChvVmlldzogYW55KSB7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKTtcblx0XHRzd2l0Y2ggKG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuUGFnZTpcblx0XHRcdFx0cmV0dXJuIG9WaWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbDpcblx0XHRcdFx0cmV0dXJuIG9WaWV3LmJ5SWQob1ZpZXcuZ2V0Q29udGVudCgpWzBdLmRhdGEoXCJmaWx0ZXJCYXJWYXJpYW50SWRcIikpO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuTm9uZTpcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJ1bmhhbmRsZWQgdmFyaWFudCBzZXR0aW5nOiBcIiArIG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCk7XG5cdFx0fVxuXHR9LFxuXG5cdF9wcmV2ZW50SW5pdGlhbFNlYXJjaDogZnVuY3Rpb24gKG9WYXJpYW50TWFuYWdlbWVudDogYW55KSB7XG5cdFx0aWYgKCFvVmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRjb25zdCBhVmFyaWFudHMgPSBvVmFyaWFudE1hbmFnZW1lbnQuZ2V0VmFyaWFudHMoKTtcblx0XHRjb25zdCBvQ3VycmVudFZhcmlhbnQgPSBhVmFyaWFudHMuZmluZChmdW5jdGlvbiAob0l0ZW06IGFueSkge1xuXHRcdFx0cmV0dXJuIG9JdGVtLmtleSA9PT0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldEN1cnJlbnRWYXJpYW50S2V5KCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuICFvQ3VycmVudFZhcmlhbnQuZXhlY3V0ZU9uU2VsZWN0O1xuXHR9LFxuXG5cdF9hcHBseVNlbGVjdGlvblZhcmlhbnQ6IGZ1bmN0aW9uIChvVmlldzogYW55LCBvTmF2aWdhdGlvblBhcmFtZXRlcjogYW55LCBiRmlsdGVyVmFyaWFudEFwcGxpZWQ6IGFueSkge1xuXHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkuX2dldEZpbHRlckJhckNvbnRyb2woKSxcblx0XHRcdG9TZWxlY3Rpb25WYXJpYW50ID0gb05hdmlnYXRpb25QYXJhbWV0ZXIuc2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdG9TZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMgPSBvTmF2aWdhdGlvblBhcmFtZXRlci5zZWxlY3Rpb25WYXJpYW50RGVmYXVsdHM7XG5cdFx0aWYgKCFvRmlsdGVyQmFyIHx8ICFvU2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblx0XHRsZXQgb0NvbmRpdGlvbnMgPSB7fTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb1ZpZXcuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdGNvbnN0IHNDb250ZXh0UGF0aCA9IG9WaWV3RGF0YS5jb250ZXh0UGF0aCB8fCBcIi9cIiArIG9WaWV3RGF0YS5lbnRpdHlTZXQ7XG5cdFx0Y29uc3QgYU1hbmRhdG9yeUZpbHRlckZpZWxkcyA9IENvbW1vblV0aWxzLmdldE1hbmRhdG9yeUZpbHRlckZpZWxkcyhvTWV0YU1vZGVsLCBzQ29udGV4dFBhdGgpO1xuXHRcdGxldCBvVmFyaWFudDtcblx0XHRjb25zdCBiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQgPSBvTmF2aWdhdGlvblBhcmFtZXRlci5yZXF1aXJlc1N0YW5kYXJkVmFyaWFudDtcblxuXHRcdGlmIChiRmlsdGVyVmFyaWFudEFwcGxpZWQpIHtcblx0XHRcdG9Db25kaXRpb25zID0gb0ZpbHRlckJhci5nZXRDb25kaXRpb25zKCk7XG5cdFx0fVxuXHRcdENvbW1vblV0aWxzLmFkZERlZmF1bHREaXNwbGF5Q3VycmVuY3koYU1hbmRhdG9yeUZpbHRlckZpZWxkcywgb1NlbGVjdGlvblZhcmlhbnQsIG9TZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMpO1xuXHRcdENvbW1vblV0aWxzLmFkZFNlbGVjdGlvblZhcmlhbnRUb0NvbmRpdGlvbnMob1NlbGVjdGlvblZhcmlhbnQsIG9Db25kaXRpb25zLCBvTWV0YU1vZGVsLCBzQ29udGV4dFBhdGgpO1xuXHRcdHN3aXRjaCAob1ZpZXdEYXRhLnZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5QYWdlOlxuXHRcdFx0XHRvVmFyaWFudCA9IG9WaWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w6XG5cdFx0XHRcdG9WYXJpYW50ID0gb1ZpZXcuYnlJZChvVmlldy5nZXRDb250ZW50KClbMF0uZGF0YShcImZpbHRlckJhclZhcmlhbnRJZFwiKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuTm9uZTpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fYWN0aXZhdGVTZWxlY3Rpb25WYXJpYW50KG9GaWx0ZXJCYXIsIG9Db25kaXRpb25zLCBvVmFyaWFudCwgYlJlcXVpcmVzU3RhbmRhcmRWYXJpYW50LCBiRmlsdGVyVmFyaWFudEFwcGxpZWQpO1xuXHR9LFxuXHRfYWN0aXZhdGVTZWxlY3Rpb25WYXJpYW50OiBmdW5jdGlvbiAoXG5cdFx0b0ZpbHRlckJhcjogYW55LFxuXHRcdG9Db25kaXRpb25zOiBhbnksXG5cdFx0b1ZhcmlhbnQ6IGFueSxcblx0XHRiUmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ6IGFueSxcblx0XHRiRmlsdGVyVmFyaWFudEFwcGxpZWQ6IGFueVxuXHQpIHtcblx0XHRsZXQgb1Byb21pc2U7XG5cblx0XHRpZiAob1ZhcmlhbnQgJiYgIWJGaWx0ZXJWYXJpYW50QXBwbGllZCkge1xuXHRcdFx0bGV0IG9WYXJpYW50S2V5ID0gYlJlcXVpcmVzU3RhbmRhcmRWYXJpYW50ID8gb1ZhcmlhbnQuZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCkgOiBvVmFyaWFudC5nZXREZWZhdWx0VmFyaWFudEtleSgpO1xuXHRcdFx0aWYgKG9WYXJpYW50S2V5ID09PSBudWxsKSB7XG5cdFx0XHRcdG9WYXJpYW50S2V5ID0gb1ZhcmlhbnQuZ2V0SWQoKTtcblx0XHRcdH1cblx0XHRcdG9Qcm9taXNlID0gQ29udHJvbFZhcmlhbnRBcHBseUFQSS5hY3RpdmF0ZVZhcmlhbnQoe1xuXHRcdFx0XHRlbGVtZW50OiBvVmFyaWFudCxcblx0XHRcdFx0dmFyaWFudFJlZmVyZW5jZTogb1ZhcmlhbnRLZXlcblx0XHRcdH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRyZXR1cm4gYlJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IHx8IG9WYXJpYW50LmdldERlZmF1bHRWYXJpYW50S2V5KCkgPT09IG9WYXJpYW50LmdldFN0YW5kYXJkVmFyaWFudEtleSgpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9Qcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gb1Byb21pc2UudGhlbigoYkNsZWFyRmlsdGVyQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZTogYW55KSA9PiB7XG5cdFx0XHRpZiAoYkNsZWFyRmlsdGVyQW5kUmVwbGFjZVdpdGhBcHBTdGF0ZSkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fZm5BcHBseUNvbmRpdGlvbnMob0ZpbHRlckJhciwgb0NvbmRpdGlvbnMpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXHRfZm5BcHBseUNvbmRpdGlvbnM6IGZ1bmN0aW9uIChvRmlsdGVyQmFyOiBhbnksIG9Db25kaXRpb25zOiBhbnkpIHtcblx0XHRjb25zdCBtRmlsdGVyOiBhbnkgPSB7fSxcblx0XHRcdGFJdGVtczogYW55W10gPSBbXSxcblx0XHRcdGZuQWRqdXN0VmFsdWVIZWxwQ29uZGl0aW9uID0gZnVuY3Rpb24gKG9Db25kaXRpb246IGFueSkge1xuXHRcdFx0XHQvLyBpbiBjYXNlIHRoZSBjb25kaXRpb24gaXMgbWVhbnQgZm9yIGEgZmllbGQgaGF2aW5nIGEgVkgsIHRoZSBmb3JtYXQgcmVxdWlyZWQgYnkgTURDIGRpZmZlcnNcblx0XHRcdFx0b0NvbmRpdGlvbi52YWxpZGF0ZWQgPSBDb25kaXRpb25WYWxpZGF0ZWQuVmFsaWRhdGVkO1xuXHRcdFx0XHRpZiAob0NvbmRpdGlvbi5vcGVyYXRvciA9PT0gXCJFbXB0eVwiKSB7XG5cdFx0XHRcdFx0b0NvbmRpdGlvbi5vcGVyYXRvciA9IFwiRVFcIjtcblx0XHRcdFx0XHRvQ29uZGl0aW9uLnZhbHVlcyA9IFtcIlwiXTtcblx0XHRcdFx0fSBlbHNlIGlmIChvQ29uZGl0aW9uLm9wZXJhdG9yID09PSBcIk5vdEVtcHR5XCIpIHtcblx0XHRcdFx0XHRvQ29uZGl0aW9uLm9wZXJhdG9yID0gXCJORVwiO1xuXHRcdFx0XHRcdG9Db25kaXRpb24udmFsdWVzID0gW1wiXCJdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRlbGV0ZSBvQ29uZGl0aW9uLmlzRW1wdHk7XG5cdFx0XHR9O1xuXHRcdGNvbnN0IGZuR2V0UHJvcGVydHlJbmZvID0gZnVuY3Rpb24gKG9GaWx0ZXJDb250cm9sOiBhbnksIHNFbnRpdHlUeXBlUGF0aDogYW55KSB7XG5cdFx0XHRjb25zdCBzRW50aXR5U2V0UGF0aCA9IE1vZGVsSGVscGVyLmdldEVudGl0eVNldFBhdGgoc0VudGl0eVR5cGVQYXRoKSxcblx0XHRcdFx0b01ldGFNb2RlbCA9IG9GaWx0ZXJDb250cm9sLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdG9GUiA9IENvbW1vblV0aWxzLmdldEZpbHRlclJlc3RyaWN0aW9uc0J5UGF0aChzRW50aXR5U2V0UGF0aCwgb01ldGFNb2RlbCksXG5cdFx0XHRcdGFOb25GaWx0ZXJhYmxlUHJvcHMgPSBvRlJbRmlsdGVyUmVzdHJpY3Rpb25zLk5PTl9GSUxURVJBQkxFX1BST1BFUlRJRVNdLFxuXHRcdFx0XHRtRmlsdGVyRmllbGRzID0gRmlsdGVyVXRpbHMuZ2V0Q29udmVydGVkRmlsdGVyRmllbGRzKG9GaWx0ZXJDb250cm9sLCBzRW50aXR5VHlwZVBhdGgpLFxuXHRcdFx0XHRhUHJvcGVydHlJbmZvOiBhbnlbXSA9IFtdO1xuXHRcdFx0T2JqZWN0LmtleXMobUZpbHRlckZpZWxkcykuZm9yRWFjaChmdW5jdGlvbiAoc0ZpbHRlckZpZWxkS2V5OiBzdHJpbmcpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnZlcnRlZFByb3BlcnR5ID0gbUZpbHRlckZpZWxkc1tzRmlsdGVyRmllbGRLZXldO1xuXHRcdFx0XHRjb25zdCBzUHJvcGVydHlQYXRoID0gb0NvbnZlcnRlZFByb3BlcnR5LmNvbmRpdGlvblBhdGgucmVwbGFjZShDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYLCBcIlwiKTtcblx0XHRcdFx0aWYgKGFOb25GaWx0ZXJhYmxlUHJvcHMuaW5kZXhPZihzUHJvcGVydHlQYXRoKSA9PT0gLTEpIHtcblx0XHRcdFx0XHRjb25zdCBzQW5ub3RhdGlvblBhdGggPSBvQ29udmVydGVkUHJvcGVydHkuYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRcdFx0Y29uc3Qgb1Byb3BlcnR5Q29udGV4dCA9IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc0Fubm90YXRpb25QYXRoKTtcblx0XHRcdFx0XHRhUHJvcGVydHlJbmZvLnB1c2goe1xuXHRcdFx0XHRcdFx0cGF0aDogb0NvbnZlcnRlZFByb3BlcnR5LmNvbmRpdGlvblBhdGgsXG5cdFx0XHRcdFx0XHRoaWRkZW5GaWx0ZXI6IG9Db252ZXJ0ZWRQcm9wZXJ0eS5hdmFpbGFiaWxpdHkgPT09IFwiSGlkZGVuXCIsXG5cdFx0XHRcdFx0XHRoYXNWYWx1ZUhlbHA6ICFzQW5ub3RhdGlvblBhdGhcblx0XHRcdFx0XHRcdFx0PyBmYWxzZVxuXHRcdFx0XHRcdFx0XHQ6IFByb3BlcnR5Rm9ybWF0dGVycy5oYXNWYWx1ZUhlbHAob1Byb3BlcnR5Q29udGV4dC5nZXRPYmplY3QoKSwgeyBjb250ZXh0OiBvUHJvcGVydHlDb250ZXh0IH0pXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBhUHJvcGVydHlJbmZvO1xuXHRcdH07XG5cdFx0cmV0dXJuIG9GaWx0ZXJCYXIud2FpdEZvckluaXRpYWxpemF0aW9uKCkudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRjb25zdCBzRW50aXR5VHlwZVBhdGggPSBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YShvRmlsdGVyQmFyLCBcImVudGl0eVR5cGVcIik7XG5cdFx0XHRjb25zdCBhUHJvcGVydHlJbmZvID0gZm5HZXRQcm9wZXJ0eUluZm8ob0ZpbHRlckJhciwgc0VudGl0eVR5cGVQYXRoKTtcblx0XHRcdGFQcm9wZXJ0eUluZm9cblx0XHRcdFx0LmZpbHRlcihmdW5jdGlvbiAob1Byb3BlcnR5SW5mbzogYW55KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9Qcm9wZXJ0eUluZm8ucGF0aCAhPT0gXCIkZWRpdFN0YXRlXCIgJiYgb1Byb3BlcnR5SW5mby5wYXRoICE9PSBcIiRzZWFyY2hcIjtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmZvckVhY2goZnVuY3Rpb24gKG9Qcm9wZXJ0eUluZm86IGFueSkge1xuXHRcdFx0XHRcdGlmIChvUHJvcGVydHlJbmZvLnBhdGggaW4gb0NvbmRpdGlvbnMpIHtcblx0XHRcdFx0XHRcdG1GaWx0ZXJbb1Byb3BlcnR5SW5mby5wYXRoXSA9IG9Db25kaXRpb25zW29Qcm9wZXJ0eUluZm8ucGF0aF07XG5cdFx0XHRcdFx0XHRpZiAoIW9Qcm9wZXJ0eUluZm8uaGlkZGVuRmlsdGVyKSB7XG5cdFx0XHRcdFx0XHRcdGFJdGVtcy5wdXNoKHsgbmFtZTogb1Byb3BlcnR5SW5mby5wYXRoIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG9Qcm9wZXJ0eUluZm8uaGFzVmFsdWVIZWxwKSB7XG5cdFx0XHRcdFx0XHRcdG1GaWx0ZXJbb1Byb3BlcnR5SW5mby5wYXRoXS5mb3JFYWNoKGZuQWRqdXN0VmFsdWVIZWxwQ29uZGl0aW9uKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdG1GaWx0ZXJbb1Byb3BlcnR5SW5mby5wYXRoXS5mb3JFYWNoKGZ1bmN0aW9uIChvQ29uZGl0aW9uOiBhbnkpIHtcblx0XHRcdFx0XHRcdFx0XHRvQ29uZGl0aW9uLnZhbGlkYXRlZCA9IENvbmRpdGlvblZhbGlkYXRlZC5Ob3RWYWxpZGF0ZWQ7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0gPSBbXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUob0ZpbHRlckJhciwgeyBmaWx0ZXI6IG1GaWx0ZXIsIGl0ZW1zOiBhSXRlbXMgfSk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZpZXdTdGF0ZU92ZXJyaWRlO1xuIl19
454
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpZXdTdGF0ZS50cyJdLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvcmVMaWJyYXJ5IiwiVmFyaWFudE1hbmFnZW1lbnQiLCJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiSW5pdGlhbExvYWRNb2RlIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiQ29tbW9uVXRpbHMiLCJDT05ESVRJT05fUEFUSF9UT19QUk9QRVJUWV9QQVRIX1JFR0VYIiwiVmlld1N0YXRlT3ZlcnJpZGUiLCJfYlNlYXJjaFRyaWdnZXJlZCIsImFwcGx5SW5pdGlhbFN0YXRlT25seSIsIm9uQmVmb3JlU3RhdGVBcHBsaWVkIiwiYVByb21pc2VzIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckJhciIsIl9nZXRGaWx0ZXJCYXJDb250cm9sIiwiYVRhYmxlcyIsIl9nZXRDb250cm9scyIsInNldFN1c3BlbmRTZWxlY3Rpb24iLCJwdXNoIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiZm9yRWFjaCIsIm9UYWJsZSIsImluaXRpYWxpemVkIiwib25BZnRlclN0YXRlQXBwbGllZCIsIl9pc0ZpbHRlckJhckhpZGRlbiIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiYUNvbnRyb2xzIiwic2V0UHJvcGVydHkiLCJfaXNNdWx0aU1vZGUiLCJfc2V0Q291bnRzT3V0RGF0ZWQiLCJzRGlzcGxheWVkQ29udHJvbElkIiwiX2dldEN1cnJlbnRDb250cm9sIiwiZ2V0SWQiLCJvQ29udHJvbCIsImRhdGEiLCJhZGFwdEJpbmRpbmdSZWZyZXNoQ29udHJvbHMiLCJhVmlld0NvbnRyb2xzIiwiYUNvbnRyb2xzVG9SZWZyZXNoIiwiS2VlcEFsaXZlSGVscGVyIiwiZ2V0Q29udHJvbHNGb3JSZWZyZXNoIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJhcHBseSIsImFkYXB0U3RhdGVDb250cm9scyIsImFTdGF0ZUNvbnRyb2xzIiwib1ZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJiQ29udHJvbFZNIiwidmFyaWFudE1hbmFnZW1lbnQiLCJDb250cm9sIiwib0ZpbHRlckJhclZNIiwiX2dldEZpbHRlckJhclZNIiwiX2dldE11bHRpTW9kZUNvbnRyb2wiLCJvUXVpY2tGaWx0ZXIiLCJnZXRRdWlja0ZpbHRlciIsImdldFZhcmlhbnQiLCJvQ2hhcnQiLCJfaGFzTXVsdGlWaXN1YWxpemF0aW9ucyIsIl9nZXRTZWdtZW50ZWRCdXR0b24iLCJDaGFydCIsIlRhYmxlIiwiYnlJZCIsInJldHJpZXZlQWRkaXRpb25hbFN0YXRlcyIsIm1BZGRpdGlvbmFsU3RhdGVzIiwiYlBlbmRpbmdGaWx0ZXIiLCJnZXRQcm9wZXJ0eSIsImRhdGFMb2FkZWQiLCJzQWxwQ29udGVudFZpZXciLCJhbHBDb250ZW50VmlldyIsImFwcGx5QWRkaXRpb25hbFN0YXRlcyIsIm9BZGRpdGlvbmFsU3RhdGVzIiwidHJpZ2dlclNlYXJjaCIsInN5c3RlbSIsImRlc2t0b3AiLCJIeWJyaWQiLCJnZXRNb2RlbCIsImdldFBhdGgiLCJhcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzIiwib05hdmlnYXRpb25QYXJhbWV0ZXIiLCJhUmVzdWx0cyIsIm9BcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJvQ29tcG9uZW50RGF0YSIsImdldENvbXBvbmVudERhdGEiLCJvU3RhcnR1cFBhcmFtZXRlcnMiLCJzdGFydHVwUGFyYW1ldGVycyIsIm9WYXJpYW50UHJvbWlzZSIsImhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyIsImJGaWx0ZXJWYXJpYW50QXBwbGllZCIsInRoZW4iLCJhVmFyaWFudHMiLCJsZW5ndGgiLCJfYXBwbHlTZWxlY3Rpb25WYXJpYW50Iiwib0R5bmFtaWNQYWdlIiwiYlByZXZlbnRJbml0aWFsU2VhcmNoIiwib0ZpbHRlckJhckNvbnRyb2wiLCJuYXZpZ2F0aW9uVHlwZSIsImluaXRpYWwiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImluaXRpYWxMb2FkIiwiRW5hYmxlZCIsIl9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaCIsIl9wcmV2ZW50SW5pdGlhbFNlYXJjaCIsInNldEhlYWRlckV4cGFuZGVkIiwiY2F0Y2giLCJMb2ciLCJlcnJvciIsIm9VcmxQYXJhbXMiLCJhUGFnZVZhcmlhbnRJZCIsImFGaWx0ZXJCYXJWYXJpYW50SWQiLCJhVGFibGVWYXJpYW50SWQiLCJvVmFyaWFudCIsInNQYWdlVmFyaWFudElkIiwic0ZpbHRlckJhclZhcmlhbnRJZCIsInNUYWJsZVZhcmlhbnRJZCIsIl9oYW5kbGVDb250cm9sVmFyaWFudElkIiwib1ZhcmlhbnRJRHMiLCJvVk0iLCJzVmFyaWFudE1hbmFnZW1lbnQiLCJnZXRWYXJpYW50cyIsImtleSIsIl9hcHBseUNvbnRyb2xWYXJpYW50IiwiZ2V0Q29udGVudCIsIm9UYWJsZVZhcmlhbnQiLCJQcm9taXNlIiwiYWxsIiwic1ZhcmlhbnRJRCIsInNWYXJpYW50UmVmZXJlbmNlIiwiX2NoZWNrSWZWYXJpYW50SWRJc0F2YWlsYWJsZSIsImdldFN0YW5kYXJkVmFyaWFudEtleSIsIkNvbnRyb2xWYXJpYW50QXBwbHlBUEkiLCJhY3RpdmF0ZVZhcmlhbnQiLCJlbGVtZW50IiwidmFyaWFudFJlZmVyZW5jZSIsIlBhZ2UiLCJOb25lIiwiRXJyb3IiLCJvVmFyaWFudE1hbmFnZW1lbnQiLCJvQ3VycmVudFZhcmlhbnQiLCJmaW5kIiwib0l0ZW0iLCJnZXRDdXJyZW50VmFyaWFudEtleSIsImV4ZWN1dGVPblNlbGVjdCIsIm9TZWxlY3Rpb25WYXJpYW50Iiwic2VsZWN0aW9uVmFyaWFudCIsIm9TZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJzZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMiLCJyZXNvbHZlIiwib0NvbmRpdGlvbnMiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwic0NvbnRleHRQYXRoIiwiY29udGV4dFBhdGgiLCJlbnRpdHlTZXQiLCJhTWFuZGF0b3J5RmlsdGVyRmllbGRzIiwiZ2V0TWFuZGF0b3J5RmlsdGVyRmllbGRzIiwiYlJlcXVpcmVzU3RhbmRhcmRWYXJpYW50IiwiZ2V0Q29uZGl0aW9ucyIsImFkZERlZmF1bHREaXNwbGF5Q3VycmVuY3kiLCJhZGRTZWxlY3Rpb25WYXJpYW50VG9Db25kaXRpb25zIiwiX2FjdGl2YXRlU2VsZWN0aW9uVmFyaWFudCIsIm9Qcm9taXNlIiwib1ZhcmlhbnRLZXkiLCJnZXREZWZhdWx0VmFyaWFudEtleSIsImJDbGVhckZpbHRlckFuZFJlcGxhY2VXaXRoQXBwU3RhdGUiLCJfZm5BcHBseUNvbmRpdGlvbnMiLCJtRmlsdGVyIiwiYUl0ZW1zIiwiZm5BZGp1c3RWYWx1ZUhlbHBDb25kaXRpb24iLCJvQ29uZGl0aW9uIiwidmFsaWRhdGVkIiwiQ29uZGl0aW9uVmFsaWRhdGVkIiwiVmFsaWRhdGVkIiwib3BlcmF0b3IiLCJ2YWx1ZXMiLCJpc0VtcHR5IiwiZm5HZXRQcm9wZXJ0eUluZm8iLCJvRmlsdGVyQ29udHJvbCIsInNFbnRpdHlUeXBlUGF0aCIsInNFbnRpdHlTZXRQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRFbnRpdHlTZXRQYXRoIiwib0ZSIiwiZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoIiwiYU5vbkZpbHRlcmFibGVQcm9wcyIsIk5PTl9GSUxURVJBQkxFX1BST1BFUlRJRVMiLCJtRmlsdGVyRmllbGRzIiwiRmlsdGVyVXRpbHMiLCJnZXRDb252ZXJ0ZWRGaWx0ZXJGaWVsZHMiLCJhUHJvcGVydHlJbmZvIiwiT2JqZWN0Iiwia2V5cyIsInNGaWx0ZXJGaWVsZEtleSIsIm9Db252ZXJ0ZWRQcm9wZXJ0eSIsInNQcm9wZXJ0eVBhdGgiLCJjb25kaXRpb25QYXRoIiwicmVwbGFjZSIsImluZGV4T2YiLCJzQW5ub3RhdGlvblBhdGgiLCJhbm5vdGF0aW9uUGF0aCIsIm9Qcm9wZXJ0eUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsInBhdGgiLCJoaWRkZW5GaWx0ZXIiLCJhdmFpbGFiaWxpdHkiLCJoYXNWYWx1ZUhlbHAiLCJQcm9wZXJ0eUZvcm1hdHRlcnMiLCJnZXRPYmplY3QiLCJjb250ZXh0IiwiRGVsZWdhdGVVdGlsIiwiZ2V0Q3VzdG9tRGF0YSIsImZpbHRlciIsIm9Qcm9wZXJ0eUluZm8iLCJuYW1lIiwiTm90VmFsaWRhdGVkIiwiU3RhdGVVdGlsIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiaXRlbXMiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQWdCQSxNQUFNQSxPQUFPLEdBQUdDLFVBQVUsQ0FBQ0QsT0FBM0I7QUFBQSxNQUNDRSxxQkFBcUIsR0FBR0MsV0FBVyxDQUFDQyxpQkFEckM7QUFBQSxNQUVDQyxtQkFBbUIsR0FBR0YsV0FBVyxDQUFDRSxtQkFGbkM7QUFBQSxNQUdDQyxlQUFlLEdBQUdILFdBQVcsQ0FBQ0csZUFIL0I7QUFJQSxNQUFNQyxrQkFBa0IsR0FBR0MsV0FBVyxDQUFDRCxrQkFBdkM7QUFBQSxNQUNDRSxxQ0FBcUMsR0FBRyxRQUR6QztBQUdBLE1BQU1DLGlCQUFzQixHQUFHO0FBQzlCQyxJQUFBQSxpQkFBaUIsRUFBRSxLQURXO0FBRTlCQyxJQUFBQSxxQkFBcUIsRUFBRSxZQUFZO0FBQ2xDLGFBQU8sSUFBUDtBQUNBLEtBSjZCO0FBSzlCQyxJQUFBQSxvQkFBb0IsRUFBRSxVQUFzREMsU0FBdEQsRUFBc0U7QUFDM0YsVUFBTUMsS0FBSyxHQUFHLEtBQUtDLE9BQUwsRUFBZDtBQUFBLFVBQ0NDLFdBQVcsR0FBR0YsS0FBSyxDQUFDRyxhQUFOLEVBRGY7QUFBQSxVQUVDQyxVQUFVLEdBQUdGLFdBQVcsQ0FBQ0csb0JBQVosRUFGZDtBQUFBLFVBR0NDLE9BQU8sR0FBR0osV0FBVyxDQUFDSyxZQUFaLENBQXlCLE9BQXpCLENBSFg7O0FBSUEsVUFBSUgsVUFBSixFQUFnQjtBQUNmQSxRQUFBQSxVQUFVLENBQUNJLG1CQUFYLENBQStCLElBQS9CO0FBQ0FULFFBQUFBLFNBQVMsQ0FBQ1UsSUFBVixDQUFnQkwsVUFB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QUEsT0FBTyxDQUFDOEMsYUFBYSxDQUFDVixJQUFmLENBQVAsQ0FBNEJ2TCxPQUE1QixDQUFvQ3FKLDBCQUFwQztBQUNBLGFBRkQsTUFFTztBQUNORixjQUFBQSxPQUFPLENBQUM4QyxhQUFhLENBQUNWLElBQWYsQ0FBUCxDQUE0QnZMLE9BQTVCLENBQW9DLFVBQVVzSixVQUFWLEVBQTJCO0FBQzlEQSxnQkFBQUEsVUFBVSxDQUFDQyxTQUFYLEdBQXVCQyxrQkFBa0IsQ0FBQzJDLFlBQTFDO0FBQ0EsZUFGRDtBQUdBO0FBQ0QsV0FaRCxNQVlPO0FBQ05oRCxZQUFBQSxPQUFPLENBQUM4QyxhQUFhLENBQUNWLElBQWYsQ0FBUCxHQUE4QixFQUE5QjtBQUNBO0FBQ0QsU0FwQkY7QUFxQkEsZUFBT2EsU0FBUyxDQUFDQyxrQkFBVixDQUE2QjVNLFVBQTdCLEVBQXlDO0FBQUV1TSxVQUFBQSxNQUFNLEVBQUU3QyxPQUFWO0FBQW1CbUQsVUFBQUEsS0FBSyxFQUFFbEQ7QUFBMUIsU0FBekMsQ0FBUDtBQUNBLE9BekJNLENBQVA7QUEwQkE7QUF0WTZCLEdBQS9CO1NBeVllcEssaUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IFZpZXdTdGF0ZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvVmlld1N0YXRlXCI7XG5pbXBvcnQgS2VlcEFsaXZlSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0tlZXBBbGl2ZUhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyLCB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBDb3JlTGlicmFyeSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0ICogYXMgUHJvcGVydHlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IERlbGVnYXRlVXRpbCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCBOYXZMaWJyYXJ5IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9saWJyYXJ5XCI7XG5pbXBvcnQgTGlzdFJlcG9ydENvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9MaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyXCI7XG5pbXBvcnQgeyBzeXN0ZW0gfSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkgZnJvbSBcInNhcC91aS9mbC9hcHBseS9hcGkvQ29udHJvbFZhcmlhbnRBcHBseUFQSVwiO1xuaW1wb3J0IFZhcmlhbnRNYW5hZ2VtZW50IGZyb20gXCJzYXAvdWkvZmwvdmFyaWFudHMvVmFyaWFudE1hbmFnZW1lbnRcIjtcbmltcG9ydCBDb25kaXRpb25WYWxpZGF0ZWQgZnJvbSBcInNhcC91aS9tZGMvZW51bS9Db25kaXRpb25WYWxpZGF0ZWRcIjtcbmltcG9ydCBTdGF0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvcDEzbi9TdGF0ZVV0aWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuXG5jb25zdCBOYXZUeXBlID0gTmF2TGlicmFyeS5OYXZUeXBlLFxuXHRWYXJpYW50TWFuYWdlbWVudFR5cGUgPSBDb3JlTGlicmFyeS5WYXJpYW50TWFuYWdlbWVudCxcblx0VGVtcGxhdGVDb250ZW50VmlldyA9IENvcmVMaWJyYXJ5LlRlbXBsYXRlQ29udGVudFZpZXcsXG5cdEluaXRpYWxMb2FkTW9kZSA9IENvcmVMaWJyYXJ5LkluaXRpYWxMb2FkTW9kZTtcbmNvbnN0IEZpbHRlclJlc3RyaWN0aW9ucyA9IENvbW1vblV0aWxzLkZpbHRlclJlc3RyaWN0aW9ucyxcblx0Q09ORElUSU9OX1BBVEhfVE9fUFJPUEVSVFlfUEFUSF9SRUdFWCA9IC9cXCt8XFwqL2c7XG5cbmNvbnN0IFZpZXdTdGF0ZU92ZXJyaWRlOiBhbnkgPSB7XG5cdF9iU2VhcmNoVHJpZ2dlcmVkOiBmYWxzZSxcblx0YXBwbHlJbml0aWFsU3RhdGVPbmx5OiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cdG9uQmVmb3JlU3RhdGVBcHBsaWVkOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBhUHJvbWlzZXM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdG9GaWx0ZXJCYXIgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpLFxuXHRcdFx0YVRhYmxlcyA9IG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcInRhYmxlXCIpO1xuXHRcdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0XHRvRmlsdGVyQmFyLnNldFN1c3BlbmRTZWxlY3Rpb24odHJ1ZSk7XG5cdFx0XHRhUHJvbWlzZXMucHVzaCgob0ZpbHRlckJhciBhcyBhbnkpLndhaXRGb3JJbml0aWFsaXphdGlvbigpKTtcblx0XHR9XG5cdFx0YVRhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0YVByb21pc2VzLnB1c2gob1RhYmxlLmluaXRpYWxpemVkKCkpO1xuXHRcdH0pO1xuXG5cdFx0ZGVsZXRlIHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQ7XG5cdH0sXG5cdG9uQWZ0ZXJTdGF0ZUFwcGxpZWQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUpIHtcblx0XHRjb25zdCBvQ29udHJvbGxlciA9IHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcjtcblx0XHRjb25zdCBvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRpZiAob0ZpbHRlckJhcikge1xuXHRcdFx0b0ZpbHRlckJhci5zZXRTdXNwZW5kU2VsZWN0aW9uKGZhbHNlKTtcblx0XHR9IGVsc2UgaWYgKG9Db250cm9sbGVyLl9pc0ZpbHRlckJhckhpZGRlbigpKSB7XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvQ29udHJvbGxlci5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFx0YUNvbnRyb2xzID0gb0NvbnRyb2xsZXIuX2dldENvbnRyb2xzKCk7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiLCBmYWxzZSk7XG5cdFx0XHRpZiAob0NvbnRyb2xsZXIuX2lzTXVsdGlNb2RlKCkpIHtcblx0XHRcdFx0b0NvbnRyb2xsZXIuX3NldENvdW50c091dERhdGVkKCk7XG5cdFx0XHRcdGNvbnN0IHNEaXNwbGF5ZWRDb250cm9sSWQgPSBvQ29udHJvbGxlci5fZ2V0Q3VycmVudENvbnRyb2woKS5nZXRJZCgpO1xuXHRcdFx0XHRhQ29udHJvbHMuZm9yRWFjaChmdW5jdGlvbiAob0NvbnRyb2w6IGFueSkge1xuXHRcdFx0XHRcdG9Db250cm9sLmRhdGEoXCJvdXRkYXRlZFJvd3NcIiwgb0NvbnRyb2wuZ2V0SWQoKSAhPT0gc0Rpc3BsYXllZENvbnRyb2xJZCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0YWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBhQ29udHJvbHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcixcblx0XHRcdGFWaWV3Q29udHJvbHMgPSBvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoKSxcblx0XHRcdGFDb250cm9sc1RvUmVmcmVzaCA9IEtlZXBBbGl2ZUhlbHBlci5nZXRDb250cm9sc0ZvclJlZnJlc2gob1ZpZXcsIGFWaWV3Q29udHJvbHMpO1xuXG5cdFx0QXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYUNvbnRyb2xzLCBhQ29udHJvbHNUb1JlZnJlc2gpO1xuXHR9LFxuXHRhZGFwdFN0YXRlQ29udHJvbHM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIGFTdGF0ZUNvbnRyb2xzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRvVmlld0RhdGEgPSBvVmlldy5nZXRWaWV3RGF0YSgpIGFzIGFueSxcblx0XHRcdGJDb250cm9sVk0gPSBvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQgPT09IFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Db250cm9sO1xuXG5cdFx0Y29uc3Qgb0ZpbHRlckJhclZNID0gdGhpcy5fZ2V0RmlsdGVyQmFyVk0ob1ZpZXcpO1xuXHRcdGlmIChvRmlsdGVyQmFyVk0pIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0ZpbHRlckJhclZNKTtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sbGVyLl9pc011bHRpTW9kZSgpKSB7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRNdWx0aU1vZGVDb250cm9sKCkpO1xuXHRcdH1cblx0XHRvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKS5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0Y29uc3Qgb1F1aWNrRmlsdGVyID0gb1RhYmxlLmdldFF1aWNrRmlsdGVyKCk7XG5cdFx0XHRpZiAob1F1aWNrRmlsdGVyKSB7XG5cdFx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1F1aWNrRmlsdGVyKTtcblx0XHRcdH1cblx0XHRcdGlmIChiQ29udHJvbFZNKSB7XG5cdFx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob1RhYmxlLmdldFZhcmlhbnQoKSk7XG5cdFx0XHR9XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9UYWJsZSk7XG5cdFx0fSk7XG5cdFx0aWYgKG9Db250cm9sbGVyLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpKSB7XG5cdFx0XHRvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJDaGFydFwiKS5mb3JFYWNoKGZ1bmN0aW9uIChvQ2hhcnQ6IGFueSkge1xuXHRcdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9DaGFydCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sbGVyLl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCkpIHtcblx0XHRcdGFTdGF0ZUNvbnRyb2xzLnB1c2gob0NvbnRyb2xsZXIuX2dldFNlZ21lbnRlZEJ1dHRvbihUZW1wbGF0ZUNvbnRlbnRWaWV3LkNoYXJ0KSk7XG5cdFx0XHRhU3RhdGVDb250cm9scy5wdXNoKG9Db250cm9sbGVyLl9nZXRTZWdtZW50ZWRCdXR0b24oVGVtcGxhdGVDb250ZW50Vmlldy5UYWJsZSkpO1xuXHRcdH1cblx0XHRjb25zdCBvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRpZiAob0ZpbHRlckJhcikge1xuXHRcdFx0YVN0YXRlQ29udHJvbHMucHVzaChvRmlsdGVyQmFyKTtcblx0XHR9XG5cdFx0YVN0YXRlQ29udHJvbHMucHVzaChvVmlldy5ieUlkKFwiZmU6Okxpc3RSZXBvcnRcIikpO1xuXHR9LFxuXHRyZXRyaWV2ZUFkZGl0aW9uYWxTdGF0ZXM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG1BZGRpdGlvbmFsU3RhdGVzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRiUGVuZGluZ0ZpbHRlciA9IChvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0KS5nZXRQcm9wZXJ0eShcImhhc1BlbmRpbmdGaWx0ZXJzXCIpO1xuXG5cdFx0bUFkZGl0aW9uYWxTdGF0ZXMuZGF0YUxvYWRlZCA9ICFiUGVuZGluZ0ZpbHRlciB8fCAhIXRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQ7XG5cdFx0aWYgKG9Db250cm9sbGVyLl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCkpIHtcblx0XHRcdGNvbnN0IHNBbHBDb250ZW50VmlldyA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikuZ2V0UHJvcGVydHkoXCJhbHBDb250ZW50Vmlld1wiKTtcblx0XHRcdG1BZGRpdGlvbmFsU3RhdGVzLmFscENvbnRlbnRWaWV3ID0gc0FscENvbnRlbnRWaWV3O1xuXHRcdH1cblxuXHRcdGRlbGV0ZSB0aGlzLl9iU2VhcmNoVHJpZ2dlcmVkO1xuXHR9LFxuXHRhcHBseUFkZGl0aW9uYWxTdGF0ZXM6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9BZGRpdGlvbmFsU3RhdGVzOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblxuXHRcdGlmIChvQWRkaXRpb25hbFN0YXRlcykge1xuXHRcdFx0Ly8gZXhwbGljaXQgY2hlY2sgZm9yIGJvb2xlYW4gdmFsdWVzIC0gJ3VuZGVmaW5lZCcgc2hvdWxkIG5vdCBhbHRlciB0aGUgdHJpZ2dlcmVkIHNlYXJjaCBwcm9wZXJ0eVxuXHRcdFx0aWYgKG9BZGRpdGlvbmFsU3RhdGVzLmRhdGFMb2FkZWQgPT09IGZhbHNlICYmIG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0Ly8gd2l0aG91dCB0aGlzLCB0aGUgZGF0YSBpcyBsb2FkZWQgb24gbmF2aWdhdGluZyBiYWNrXG5cdFx0XHRcdChvRmlsdGVyQmFyIGFzIGFueSkuX2JTZWFyY2hUcmlnZ2VyZWQgPSBmYWxzZTtcblx0XHRcdH0gZWxzZSBpZiAob0FkZGl0aW9uYWxTdGF0ZXMuZGF0YUxvYWRlZCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRpZiAob0ZpbHRlckJhcikge1xuXHRcdFx0XHRcdG9GaWx0ZXJCYXIudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG9Db250cm9sbGVyLl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCkpIHtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0aWYgKCFzeXN0ZW0uZGVza3RvcCAmJiBvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50VmlldyA9PSBUZW1wbGF0ZUNvbnRlbnRWaWV3Lkh5YnJpZCkge1xuXHRcdFx0XHRcdG9BZGRpdGlvbmFsU3RhdGVzLmFscENvbnRlbnRWaWV3ID0gVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydDtcblx0XHRcdFx0fVxuXHRcdFx0XHQob0ludGVybmFsTW9kZWxDb250ZXh0LmdldE1vZGVsKCkgYXMgSlNPTk1vZGVsKS5zZXRQcm9wZXJ0eShcblx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UGF0aCgpICsgXCIvYWxwQ29udGVudFZpZXdcIixcblx0XHRcdFx0XHRvQWRkaXRpb25hbFN0YXRlcy5hbHBDb250ZW50Vmlld1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0YXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVyczogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSAmIHR5cGVvZiBWaWV3U3RhdGVPdmVycmlkZSwgb05hdmlnYXRpb25QYXJhbWV0ZXI6IGFueSwgYVJlc3VsdHM6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IG9Db250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IG9Db21wb25lbnREYXRhID0gb0FwcENvbXBvbmVudC5nZXRDb21wb25lbnREYXRhKCk7XG5cdFx0Y29uc3Qgb1N0YXJ0dXBQYXJhbWV0ZXJzID0gKG9Db21wb25lbnREYXRhICYmIG9Db21wb25lbnREYXRhLnN0YXJ0dXBQYXJhbWV0ZXJzKSB8fCB7fTtcblx0XHRjb25zdCBvVmFyaWFudFByb21pc2UgPSB0aGlzLmhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyhvU3RhcnR1cFBhcmFtZXRlcnMpO1xuXHRcdGxldCBiRmlsdGVyVmFyaWFudEFwcGxpZWQ6IGJvb2xlYW47XG5cdFx0YVJlc3VsdHMucHVzaChcblx0XHRcdG9WYXJpYW50UHJvbWlzZVxuXHRcdFx0XHQudGhlbigoYVZhcmlhbnRzOiBhbnlbXSkgPT4ge1xuXHRcdFx0XHRcdGlmIChhVmFyaWFudHMgJiYgYVZhcmlhbnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdGlmIChhVmFyaWFudHNbMF0gPT09IHRydWUgfHwgYVZhcmlhbnRzWzFdID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRcdGJGaWx0ZXJWYXJpYW50QXBwbGllZCA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzLl9hcHBseVNlbGVjdGlvblZhcmlhbnQob1ZpZXcsIG9OYXZpZ2F0aW9uUGFyYW1ldGVyLCBiRmlsdGVyVmFyaWFudEFwcGxpZWQpLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb0R5bmFtaWNQYWdlID0gb1ZpZXcuYnlJZChcImZlOjpMaXN0UmVwb3J0XCIpO1xuXHRcdFx0XHRcdFx0bGV0IGJQcmV2ZW50SW5pdGlhbFNlYXJjaCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb0ZpbHRlckJhclZNID0gdGhpcy5fZ2V0RmlsdGVyQmFyVk0ob1ZpZXcpO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb0ZpbHRlckJhckNvbnRyb2wgPSBvQ29udHJvbGxlci5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdFx0XHRcdFx0aWYgKG9GaWx0ZXJCYXJDb250cm9sKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHQob05hdmlnYXRpb25QYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUgIT09IE5hdlR5cGUuaW5pdGlhbCAmJiBvTmF2aWdhdGlvblBhcmFtZXRlci5yZXF1aXJlc1N0YW5kYXJkVmFyaWFudCkgfHxcblx0XHRcdFx0XHRcdFx0XHQoIW9GaWx0ZXJCYXJWTSAmJiBvVmlldy5nZXRWaWV3RGF0YSgpLmluaXRpYWxMb2FkID09PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZCkgfHxcblx0XHRcdFx0XHRcdFx0XHRvQ29udHJvbGxlci5fc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2gob0ZpbHRlckJhclZNKVxuXHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRvRmlsdGVyQmFyQ29udHJvbC50cmlnZ2VyU2VhcmNoKCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0YlByZXZlbnRJbml0aWFsU2VhcmNoID0gdGhpcy5fcHJldmVudEluaXRpYWxTZWFyY2gob0ZpbHRlckJhclZNKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHQvLyByZXNldCB0aGUgc3VzcGVuZCBzZWxlY3Rpb24gb24gZmlsdGVyIGJhciB0byBhbGxvdyBsb2FkaW5nIG9mIGRhdGEgd2hlbiBuZWVkZWQgKHdhcyBzZXQgb24gTFIgSW5pdClcblx0XHRcdFx0XHRcdFx0b0ZpbHRlckJhckNvbnRyb2wuc2V0U3VzcGVuZFNlbGVjdGlvbihmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2JTZWFyY2hUcmlnZ2VyZWQgPSAhYlByZXZlbnRJbml0aWFsU2VhcmNoO1xuXHRcdFx0XHRcdFx0XHRvRHluYW1pY1BhZ2Uuc2V0SGVhZGVyRXhwYW5kZWQoc3lzdGVtLmRlc2t0b3AgfHwgYlByZXZlbnRJbml0aWFsU2VhcmNoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJWYXJpYW50IElEIGNhbm5vdCBiZSBhcHBsaWVkXCIpO1xuXHRcdFx0XHR9KVxuXHRcdCk7XG5cdH0sXG5cblx0aGFuZGxlVmFyaWFudElkUGFzc2VkVmlhVVJMUGFyYW1zOiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlICYgdHlwZW9mIFZpZXdTdGF0ZU92ZXJyaWRlLCBvVXJsUGFyYW1zOiBhbnkpIHtcblx0XHRjb25zdCBhUGFnZVZhcmlhbnRJZCA9IG9VcmxQYXJhbXNbXCJzYXAtdWktZmUtdmFyaWFudC1pZFwiXSxcblx0XHRcdGFGaWx0ZXJCYXJWYXJpYW50SWQgPSBvVXJsUGFyYW1zW1wic2FwLXVpLWZlLWZpbHRlcmJhci12YXJpYW50LWlkXCJdLFxuXHRcdFx0YVRhYmxlVmFyaWFudElkID0gb1VybFBhcmFtc1tcInNhcC11aS1mZS10YWJsZS12YXJpYW50LWlkXCJdO1xuXHRcdGxldCBvVmFyaWFudDtcblx0XHRpZiAoYVBhZ2VWYXJpYW50SWQgfHwgYUZpbHRlckJhclZhcmlhbnRJZCB8fCBhVGFibGVWYXJpYW50SWQpIHtcblx0XHRcdG9WYXJpYW50ID0ge1xuXHRcdFx0XHRzUGFnZVZhcmlhbnRJZDogYVBhZ2VWYXJpYW50SWQgJiYgYVBhZ2VWYXJpYW50SWRbMF0sXG5cdFx0XHRcdHNGaWx0ZXJCYXJWYXJpYW50SWQ6IGFGaWx0ZXJCYXJWYXJpYW50SWQgJiYgYUZpbHRlckJhclZhcmlhbnRJZFswXSxcblx0XHRcdFx0c1RhYmxlVmFyaWFudElkOiBhVGFibGVWYXJpYW50SWQgJiYgYVRhYmxlVmFyaWFudElkWzBdXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5faGFuZGxlQ29udHJvbFZhcmlhbnRJZChvVmFyaWFudCk7XG5cdH0sXG5cblx0X2hhbmRsZUNvbnRyb2xWYXJpYW50SWQ6IGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUgJiB0eXBlb2YgVmlld1N0YXRlT3ZlcnJpZGUsIG9WYXJpYW50SURzOiBhbnkpIHtcblx0XHRsZXQgb1ZNOiBWYXJpYW50TWFuYWdlbWVudDtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0YVByb21pc2VzOiBhbnlbXSA9IFtdO1xuXHRcdGNvbnN0IHNWYXJpYW50TWFuYWdlbWVudCA9IG9WaWV3LmdldFZpZXdEYXRhKCkudmFyaWFudE1hbmFnZW1lbnQ7XG5cdFx0aWYgKG9WYXJpYW50SURzICYmIG9WYXJpYW50SURzLnNQYWdlVmFyaWFudElkICYmIHNWYXJpYW50TWFuYWdlbWVudCA9PT0gXCJQYWdlXCIpIHtcblx0XHRcdG9WTSA9IG9WaWV3LmJ5SWQoXCJmZTo6UGFnZVZhcmlhbnRNYW5hZ2VtZW50XCIpO1xuXHRcdFx0b1ZNLmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRpZiAob1ZhcmlhbnQua2V5ID09PSBvVmFyaWFudElEcy5zUGFnZVZhcmlhbnRJZCkge1xuXHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKHRoaXMuX2FwcGx5Q29udHJvbFZhcmlhbnQob1ZNLCBvVmFyaWFudElEcy5zUGFnZVZhcmlhbnRJZCwgdHJ1ZSkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9IGVsc2UgaWYgKG9WYXJpYW50SURzICYmIHNWYXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRcdGlmIChvVmFyaWFudElEcy5zRmlsdGVyQmFyVmFyaWFudElkKSB7XG5cdFx0XHRcdG9WTSA9IG9WaWV3LmJ5SWQob1ZpZXcuZ2V0Q29udGVudCgpWzBdLmRhdGEoXCJmaWx0ZXJCYXJWYXJpYW50SWRcIikpO1xuXHRcdFx0XHRpZiAob1ZNKSB7XG5cdFx0XHRcdFx0b1ZNLmdldFZhcmlhbnRzKCkuZm9yRWFjaCgob1ZhcmlhbnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKG9WYXJpYW50LmtleSA9PT0gb1ZhcmlhbnRJRHMuc0ZpbHRlckJhclZhcmlhbnRJZCkge1xuXHRcdFx0XHRcdFx0XHRhUHJvbWlzZXMucHVzaCh0aGlzLl9hcHBseUNvbnRyb2xWYXJpYW50KG9WTSwgb1ZhcmlhbnRJRHMuc0ZpbHRlckJhclZhcmlhbnRJZCwgdHJ1ZSkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAob1ZhcmlhbnRJRHMuc1RhYmxlVmFyaWFudElkKSB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRcdGFUYWJsZXMgPSBvQ29udHJvbGxlci5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKTtcblx0XHRcdFx0YVRhYmxlcy5mb3JFYWNoKChvVGFibGU6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG9UYWJsZVZhcmlhbnQgPSBvVGFibGUuZ2V0VmFyaWFudCgpO1xuXHRcdFx0XHRcdGlmIChvVGFibGUgJiYgb1RhYmxlVmFyaWFudCkge1xuXHRcdFx0XHRcdFx0b1RhYmxlVmFyaWFudC5nZXRWYXJpYW50cygpLmZvckVhY2goKG9WYXJpYW50OiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKG9WYXJpYW50LmtleSA9PT0gb1ZhcmlhbnRJRHMuc1RhYmxlVmFyaWFudElkKSB7XG5cdFx0XHRcdFx0XHRcdFx0YVByb21pc2VzLnB1c2godGhpcy5fYXBwbHlDb250cm9sVmFyaWFudChvVGFibGVWYXJpYW50LCBvVmFyaWFudElEcy5zVGFibGVWYXJpYW50SWQpKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFByb21pc2UuYWxsKGFQcm9taXNlcyk7XG5cdH0sXG5cblx0X2FwcGx5Q29udHJvbFZhcmlhbnQ6IGZ1bmN0aW9uIChvVmFyaWFudDogYW55LCBzVmFyaWFudElEOiBhbnksIGJGaWx0ZXJWYXJpYW50QXBwbGllZDogYW55KSB7XG5cdFx0Y29uc3Qgc1ZhcmlhbnRSZWZlcmVuY2UgPSB0aGlzLl9jaGVja0lmVmFyaWFudElkSXNBdmFpbGFibGUob1ZhcmlhbnQsIHNWYXJpYW50SUQpID8gc1ZhcmlhbnRJRCA6IG9WYXJpYW50LmdldFN0YW5kYXJkVmFyaWFudEtleSgpO1xuXHRcdGNvbnN0IG9WTSA9IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdGVsZW1lbnQ6IG9WYXJpYW50LFxuXHRcdFx0dmFyaWFudFJlZmVyZW5jZTogc1ZhcmlhbnRSZWZlcmVuY2Vcblx0XHR9KTtcblx0XHRyZXR1cm4gb1ZNLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGJGaWx0ZXJWYXJpYW50QXBwbGllZDtcblx0XHR9KTtcblx0fSxcblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogcHJpdmF0ZSBoZWxwZXIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0X2dldEZpbHRlckJhclZNOiBmdW5jdGlvbiAob1ZpZXc6IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3RGF0YSA9IG9WaWV3LmdldFZpZXdEYXRhKCk7XG5cdFx0c3dpdGNoIChvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLlBhZ2U6XG5cdFx0XHRcdHJldHVybiBvVmlldy5ieUlkKFwiZmU6OlBhZ2VWYXJpYW50TWFuYWdlbWVudFwiKTtcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLkNvbnRyb2w6XG5cdFx0XHRcdHJldHVybiBvVmlldy5ieUlkKG9WaWV3LmdldENvbnRlbnQoKVswXS5kYXRhKFwiZmlsdGVyQmFyVmFyaWFudElkXCIpKTtcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmU6XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwidW5oYW5kbGVkIHZhcmlhbnQgc2V0dGluZzogXCIgKyBvVmlld0RhdGEudmFyaWFudE1hbmFnZW1lbnQpO1xuXHRcdH1cblx0fSxcblxuXHRfcHJldmVudEluaXRpYWxTZWFyY2g6IGZ1bmN0aW9uIChvVmFyaWFudE1hbmFnZW1lbnQ6IGFueSkge1xuXHRcdGlmICghb1ZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0Y29uc3QgYVZhcmlhbnRzID0gb1ZhcmlhbnRNYW5hZ2VtZW50LmdldFZhcmlhbnRzKCk7XG5cdFx0Y29uc3Qgb0N1cnJlbnRWYXJpYW50ID0gYVZhcmlhbnRzLmZpbmQoZnVuY3Rpb24gKG9JdGVtOiBhbnkpIHtcblx0XHRcdHJldHVybiBvSXRlbS5rZXkgPT09IG9WYXJpYW50TWFuYWdlbWVudC5nZXRDdXJyZW50VmFyaWFudEtleSgpO1xuXHRcdH0pO1xuXHRcdHJldHVybiAhb0N1cnJlbnRWYXJpYW50LmV4ZWN1dGVPblNlbGVjdDtcblx0fSxcblxuXHRfYXBwbHlTZWxlY3Rpb25WYXJpYW50OiBmdW5jdGlvbiAob1ZpZXc6IGFueSwgb05hdmlnYXRpb25QYXJhbWV0ZXI6IGFueSwgYkZpbHRlclZhcmlhbnRBcHBsaWVkOiBhbnkpIHtcblx0XHRjb25zdCBvRmlsdGVyQmFyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpLl9nZXRGaWx0ZXJCYXJDb250cm9sKCksXG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudCA9IG9OYXZpZ2F0aW9uUGFyYW1ldGVyLnNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRvU2VsZWN0aW9uVmFyaWFudERlZmF1bHRzID0gb05hdmlnYXRpb25QYXJhbWV0ZXIuc2VsZWN0aW9uVmFyaWFudERlZmF1bHRzO1xuXHRcdGlmICghb0ZpbHRlckJhciB8fCAhb1NlbGVjdGlvblZhcmlhbnQpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdFx0bGV0IG9Db25kaXRpb25zID0ge307XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9WaWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhID0gb1ZpZXcuZ2V0Vmlld0RhdGEoKTtcblx0XHRjb25zdCBzQ29udGV4dFBhdGggPSBvVmlld0RhdGEuY29udGV4dFBhdGggfHwgXCIvXCIgKyBvVmlld0RhdGEuZW50aXR5U2V0O1xuXHRcdGNvbnN0IGFNYW5kYXRvcnlGaWx0ZXJGaWVsZHMgPSBDb21tb25VdGlscy5nZXRNYW5kYXRvcnlGaWx0ZXJGaWVsZHMob01ldGFNb2RlbCwgc0NvbnRleHRQYXRoKTtcblx0XHRsZXQgb1ZhcmlhbnQ7XG5cdFx0Y29uc3QgYlJlcXVpcmVzU3RhbmRhcmRWYXJpYW50ID0gb05hdmlnYXRpb25QYXJhbWV0ZXIucmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ7XG5cblx0XHRpZiAoYkZpbHRlclZhcmlhbnRBcHBsaWVkKSB7XG5cdFx0XHRvQ29uZGl0aW9ucyA9IG9GaWx0ZXJCYXIuZ2V0Q29uZGl0aW9ucygpO1xuXHRcdH1cblx0XHRDb21tb25VdGlscy5hZGREZWZhdWx0RGlzcGxheUN1cnJlbmN5KGFNYW5kYXRvcnlGaWx0ZXJGaWVsZHMsIG9TZWxlY3Rpb25WYXJpYW50LCBvU2VsZWN0aW9uVmFyaWFudERlZmF1bHRzKTtcblx0XHRDb21tb25VdGlscy5hZGRTZWxlY3Rpb25WYXJpYW50VG9Db25kaXRpb25zKG9TZWxlY3Rpb25WYXJpYW50LCBvQ29uZGl0aW9ucywgb01ldGFNb2RlbCwgc0NvbnRleHRQYXRoKTtcblx0XHRzd2l0Y2ggKG9WaWV3RGF0YS52YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0Y2FzZSBWYXJpYW50TWFuYWdlbWVudFR5cGUuUGFnZTpcblx0XHRcdFx0b1ZhcmlhbnQgPSBvVmlldy5ieUlkKFwiZmU6OlBhZ2VWYXJpYW50TWFuYWdlbWVudFwiKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Db250cm9sOlxuXHRcdFx0XHRvVmFyaWFudCA9IG9WaWV3LmJ5SWQob1ZpZXcuZ2V0Q29udGVudCgpWzBdLmRhdGEoXCJmaWx0ZXJCYXJWYXJpYW50SWRcIikpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmU6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX2FjdGl2YXRlU2VsZWN0aW9uVmFyaWFudChvRmlsdGVyQmFyLCBvQ29uZGl0aW9ucywgb1ZhcmlhbnQsIGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudCwgYkZpbHRlclZhcmlhbnRBcHBsaWVkKTtcblx0fSxcblx0X2FjdGl2YXRlU2VsZWN0aW9uVmFyaWFudDogZnVuY3Rpb24gKFxuXHRcdG9GaWx0ZXJCYXI6IGFueSxcblx0XHRvQ29uZGl0aW9uczogYW55LFxuXHRcdG9WYXJpYW50OiBhbnksXG5cdFx0YlJlcXVpcmVzU3RhbmRhcmRWYXJpYW50OiBhbnksXG5cdFx0YkZpbHRlclZhcmlhbnRBcHBsaWVkOiBhbnlcblx0KSB7XG5cdFx0bGV0IG9Qcm9taXNlO1xuXG5cdFx0aWYgKG9WYXJpYW50ICYmICFiRmlsdGVyVmFyaWFudEFwcGxpZWQpIHtcblx0XHRcdGxldCBvVmFyaWFudEtleSA9IGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudCA/IG9WYXJpYW50LmdldFN0YW5kYXJkVmFyaWFudEtleSgpIDogb1ZhcmlhbnQuZ2V0RGVmYXVsdFZhcmlhbnRLZXkoKTtcblx0XHRcdGlmIChvVmFyaWFudEtleSA9PT0gbnVsbCkge1xuXHRcdFx0XHRvVmFyaWFudEtleSA9IG9WYXJpYW50LmdldElkKCk7XG5cdFx0XHR9XG5cdFx0XHRvUHJvbWlzZSA9IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdFx0ZWxlbWVudDogb1ZhcmlhbnQsXG5cdFx0XHRcdHZhcmlhbnRSZWZlcmVuY2U6IG9WYXJpYW50S2V5XG5cdFx0XHR9KS50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuIGJSZXF1aXJlc1N0YW5kYXJkVmFyaWFudCB8fCBvVmFyaWFudC5nZXREZWZhdWx0VmFyaWFudEtleSgpID09PSBvVmFyaWFudC5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh0cnVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9Qcm9taXNlLnRoZW4oKGJDbGVhckZpbHRlckFuZFJlcGxhY2VXaXRoQXBwU3RhdGU6IGFueSkgPT4ge1xuXHRcdFx0aWYgKGJDbGVhckZpbHRlckFuZFJlcGxhY2VXaXRoQXBwU3RhdGUpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuX2ZuQXBwbHlDb25kaXRpb25zKG9GaWx0ZXJCYXIsIG9Db25kaXRpb25zKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSxcblx0X2ZuQXBwbHlDb25kaXRpb25zOiBmdW5jdGlvbiAob0ZpbHRlckJhcjogYW55LCBvQ29uZGl0aW9uczogYW55KSB7XG5cdFx0Y29uc3QgbUZpbHRlcjogYW55ID0ge30sXG5cdFx0XHRhSXRlbXM6IGFueVtdID0gW10sXG5cdFx0XHRmbkFkanVzdFZhbHVlSGVscENvbmRpdGlvbiA9IGZ1bmN0aW9uIChvQ29uZGl0aW9uOiBhbnkpIHtcblx0XHRcdFx0Ly8gaW4gY2FzZSB0aGUgY29uZGl0aW9uIGlzIG1lYW50IGZvciBhIGZpZWxkIGhhdmluZyBhIFZILCB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IE1EQyBkaWZmZXJzXG5cdFx0XHRcdG9Db25kaXRpb24udmFsaWRhdGVkID0gQ29uZGl0aW9uVmFsaWRhdGVkLlZhbGlkYXRlZDtcblx0XHRcdFx0aWYgKG9Db25kaXRpb24ub3BlcmF0b3IgPT09IFwiRW1wdHlcIikge1xuXHRcdFx0XHRcdG9Db25kaXRpb24ub3BlcmF0b3IgPSBcIkVRXCI7XG5cdFx0XHRcdFx0b0NvbmRpdGlvbi52YWx1ZXMgPSBbXCJcIl07XG5cdFx0XHRcdH0gZWxzZSBpZiAob0NvbmRpdGlvbi5vcGVyYXRvciA9PT0gXCJOb3RFbXB0eVwiKSB7XG5cdFx0XHRcdFx0b0NvbmRpdGlvbi5vcGVyYXRvciA9IFwiTkVcIjtcblx0XHRcdFx0XHRvQ29uZGl0aW9uLnZhbHVlcyA9IFtcIlwiXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkZWxldGUgb0NvbmRpdGlvbi5pc0VtcHR5O1xuXHRcdFx0fTtcblx0XHRjb25zdCBmbkdldFByb3BlcnR5SW5mbyA9IGZ1bmN0aW9uIChvRmlsdGVyQ29udHJvbDogYW55LCBzRW50aXR5VHlwZVBhdGg6IGFueSkge1xuXHRcdFx0Y29uc3Qgc0VudGl0eVNldFBhdGggPSBNb2RlbEhlbHBlci5nZXRFbnRpdHlTZXRQYXRoKHNFbnRpdHlUeXBlUGF0aCksXG5cdFx0XHRcdG9NZXRhTW9kZWwgPSBvRmlsdGVyQ29udHJvbC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0XHRvRlIgPSBDb21tb25VdGlscy5nZXRGaWx0ZXJSZXN0cmljdGlvbnNCeVBhdGgoc0VudGl0eVNldFBhdGgsIG9NZXRhTW9kZWwpLFxuXHRcdFx0XHRhTm9uRmlsdGVyYWJsZVByb3BzID0gb0ZSW0ZpbHRlclJlc3RyaWN0aW9ucy5OT05fRklMVEVSQUJMRV9QUk9QRVJUSUVTXSxcblx0XHRcdFx0bUZpbHRlckZpZWxkcyA9IEZpbHRlclV0aWxzLmdldENvbnZlcnRlZEZpbHRlckZpZWxkcyhvRmlsdGVyQ29udHJvbCwgc0VudGl0eVR5cGVQYXRoKSxcblx0XHRcdFx0YVByb3BlcnR5SW5mbzogYW55W10gPSBbXTtcblx0XHRcdE9iamVjdC5rZXlzKG1GaWx0ZXJGaWVsZHMpLmZvckVhY2goZnVuY3Rpb24gKHNGaWx0ZXJGaWVsZEtleTogc3RyaW5nKSB7XG5cdFx0XHRcdGNvbnN0IG9Db252ZXJ0ZWRQcm9wZXJ0eSA9IG1GaWx0ZXJGaWVsZHNbc0ZpbHRlckZpZWxkS2V5XTtcblx0XHRcdFx0Y29uc3Qgc1Byb3BlcnR5UGF0aCA9IG9Db252ZXJ0ZWRQcm9wZXJ0eS5jb25kaXRpb25QYXRoLnJlcGxhY2UoQ09ORElUSU9OX1BBVEhfVE9fUFJPUEVSVFlfUEFUSF9SRUdFWCwgXCJcIik7XG5cdFx0XHRcdGlmIChhTm9uRmlsdGVyYWJsZVByb3BzLmluZGV4T2Yoc1Byb3BlcnR5UGF0aCkgPT09IC0xKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc0Fubm90YXRpb25QYXRoID0gb0NvbnZlcnRlZFByb3BlcnR5LmFubm90YXRpb25QYXRoO1xuXHRcdFx0XHRcdGNvbnN0IG9Qcm9wZXJ0eUNvbnRleHQgPSBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNBbm5vdGF0aW9uUGF0aCk7XG5cdFx0XHRcdFx0YVByb3BlcnR5SW5mby5wdXNoKHtcblx0XHRcdFx0XHRcdHBhdGg6IG9Db252ZXJ0ZWRQcm9wZXJ0eS5jb25kaXRpb25QYXRoLFxuXHRcdFx0XHRcdFx0aGlkZGVuRmlsdGVyOiBvQ29udmVydGVkUHJvcGVydHkuYXZhaWxhYmlsaXR5ID09PSBcIkhpZGRlblwiLFxuXHRcdFx0XHRcdFx0aGFzVmFsdWVIZWxwOiAhc0Fubm90YXRpb25QYXRoXG5cdFx0XHRcdFx0XHRcdD8gZmFsc2Vcblx0XHRcdFx0XHRcdFx0OiBQcm9wZXJ0eUZvcm1hdHRlcnMuaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eUNvbnRleHQuZ2V0T2JqZWN0KCksIHsgY29udGV4dDogb1Byb3BlcnR5Q29udGV4dCB9KVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYVByb3BlcnR5SW5mbztcblx0XHR9O1xuXHRcdHJldHVybiBvRmlsdGVyQmFyLndhaXRGb3JJbml0aWFsaXphdGlvbigpLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0Y29uc3Qgc0VudGl0eVR5cGVQYXRoID0gRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGEob0ZpbHRlckJhciwgXCJlbnRpdHlUeXBlXCIpO1xuXHRcdFx0Y29uc3QgYVByb3BlcnR5SW5mbyA9IGZuR2V0UHJvcGVydHlJbmZvKG9GaWx0ZXJCYXIsIHNFbnRpdHlUeXBlUGF0aCk7XG5cdFx0XHRhUHJvcGVydHlJbmZvXG5cdFx0XHRcdC5maWx0ZXIoZnVuY3Rpb24gKG9Qcm9wZXJ0eUluZm86IGFueSkge1xuXHRcdFx0XHRcdHJldHVybiBvUHJvcGVydHlJbmZvLnBhdGggIT09IFwiJGVkaXRTdGF0ZVwiICYmIG9Qcm9wZXJ0eUluZm8ucGF0aCAhPT0gXCIkc2VhcmNoXCI7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5mb3JFYWNoKGZ1bmN0aW9uIChvUHJvcGVydHlJbmZvOiBhbnkpIHtcblx0XHRcdFx0XHRpZiAob1Byb3BlcnR5SW5mby5wYXRoIGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0gPSBvQ29uZGl0aW9uc1tvUHJvcGVydHlJbmZvLnBhdGhdO1xuXHRcdFx0XHRcdFx0aWYgKCFvUHJvcGVydHlJbmZvLmhpZGRlbkZpbHRlcikge1xuXHRcdFx0XHRcdFx0XHRhSXRlbXMucHVzaCh7IG5hbWU6IG9Qcm9wZXJ0eUluZm8ucGF0aCB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChvUHJvcGVydHlJbmZvLmhhc1ZhbHVlSGVscCkge1xuXHRcdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0uZm9yRWFjaChmbkFkanVzdFZhbHVlSGVscENvbmRpdGlvbik7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRtRmlsdGVyW29Qcm9wZXJ0eUluZm8ucGF0aF0uZm9yRWFjaChmdW5jdGlvbiAob0NvbmRpdGlvbjogYW55KSB7XG5cdFx0XHRcdFx0XHRcdFx0b0NvbmRpdGlvbi52YWxpZGF0ZWQgPSBDb25kaXRpb25WYWxpZGF0ZWQuTm90VmFsaWRhdGVkO1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0bUZpbHRlcltvUHJvcGVydHlJbmZvLnBhdGhdID0gW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdHJldHVybiBTdGF0ZVV0aWwuYXBwbHlFeHRlcm5hbFN0YXRlKG9GaWx0ZXJCYXIsIHsgZmlsdGVyOiBtRmlsdGVyLCBpdGVtczogYUl0ZW1zIH0pO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWaWV3U3RhdGVPdmVycmlkZTtcbiJdfQ==