@sapui5/sap.fe.test 1.127.2 → 1.129.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/test/.library +1 -1
  3. package/src/sap/fe/test/AppStateAdapter.js +1 -1
  4. package/src/sap/fe/test/BaseActions.js +0 -7
  5. package/src/sap/fe/test/BaseArrangements.js +0 -7
  6. package/src/sap/fe/test/BaseAssertions.js +0 -5
  7. package/src/sap/fe/test/CollaborationClient.js +1 -1
  8. package/src/sap/fe/test/FeMocks.js +1 -1
  9. package/src/sap/fe/test/Flexibility.js +2 -7
  10. package/src/sap/fe/test/JestFlexibilityHelper.js +1 -1
  11. package/src/sap/fe/test/JestTemplatingHelper.js +3 -12
  12. package/src/sap/fe/test/JestTemplatingHelper.tsx +2 -10
  13. package/src/sap/fe/test/JourneyRunner.js +0 -9
  14. package/src/sap/fe/test/ListReport.js +0 -14
  15. package/src/sap/fe/test/ObjectPage.js +144 -60
  16. package/src/sap/fe/test/Shell.js +0 -7
  17. package/src/sap/fe/test/TemplatePage.js +0 -17
  18. package/src/sap/fe/test/TemplatingTestUtils.js +0 -1
  19. package/src/sap/fe/test/UI5MockHelper.js +9 -18
  20. package/src/sap/fe/test/UI5MockHelper.ts +5 -16
  21. package/src/sap/fe/test/api/BaseAPI.js +0 -15
  22. package/src/sap/fe/test/api/ChartActions.js +0 -2
  23. package/src/sap/fe/test/api/ChartAssertions.js +0 -1
  24. package/src/sap/fe/test/api/CollaborationAPI.js +2 -10
  25. package/src/sap/fe/test/api/CollaborationAPI.ts +2 -9
  26. package/src/sap/fe/test/api/DialogAPI.js +0 -2
  27. package/src/sap/fe/test/api/DialogActions.js +0 -7
  28. package/src/sap/fe/test/api/DialogAssertions.js +0 -6
  29. package/src/sap/fe/test/api/DialogCreateActions.js +0 -2
  30. package/src/sap/fe/test/api/DialogCreateAssertions.js +0 -2
  31. package/src/sap/fe/test/api/DialogHelper.js +0 -1
  32. package/src/sap/fe/test/api/DialogMassEditActions.js +0 -4
  33. package/src/sap/fe/test/api/DialogMassEditAssertions.js +0 -5
  34. package/src/sap/fe/test/api/DialogMessageActions.js +0 -4
  35. package/src/sap/fe/test/api/DialogMessageAssertions.js +0 -4
  36. package/src/sap/fe/test/api/DialogType.js +0 -8
  37. package/src/sap/fe/test/api/DialogValueHelpActions.js +0 -12
  38. package/src/sap/fe/test/api/DialogValueHelpAssertions.js +0 -9
  39. package/src/sap/fe/test/api/EditState.js +0 -7
  40. package/src/sap/fe/test/api/FilterBarAPI.js +0 -6
  41. package/src/sap/fe/test/api/FilterBarActions.js +0 -12
  42. package/src/sap/fe/test/api/FilterBarAssertions.js +0 -10
  43. package/src/sap/fe/test/api/FooterAPI.js +0 -1
  44. package/src/sap/fe/test/api/FooterActionsBase.js +0 -2
  45. package/src/sap/fe/test/api/FooterActionsOP.js +0 -5
  46. package/src/sap/fe/test/api/FooterAssertionsBase.js +0 -3
  47. package/src/sap/fe/test/api/FooterAssertionsOP.js +0 -6
  48. package/src/sap/fe/test/api/FormAPI.js +0 -2
  49. package/src/sap/fe/test/api/FormActions.js +0 -8
  50. package/src/sap/fe/test/api/FormAssertions.js +0 -7
  51. package/src/sap/fe/test/api/HeaderAPI.js +0 -8
  52. package/src/sap/fe/test/api/HeaderActions.js +0 -14
  53. package/src/sap/fe/test/api/HeaderActionsLR.js +0 -4
  54. package/src/sap/fe/test/api/HeaderAssertions.js +0 -21
  55. package/src/sap/fe/test/api/HeaderAssertionsLR.js +0 -4
  56. package/src/sap/fe/test/api/HeaderLR.js +0 -2
  57. package/src/sap/fe/test/api/KPICardAPI.js +0 -1
  58. package/src/sap/fe/test/api/KPICardActions.js +0 -2
  59. package/src/sap/fe/test/api/KPICardAssertions.js +0 -8
  60. package/src/sap/fe/test/api/TableAPI.js +1 -14
  61. package/src/sap/fe/test/api/TableActions.js +0 -36
  62. package/src/sap/fe/test/api/TableAssertions.js +0 -28
  63. package/src/sap/fe/test/builder/FEBuilder.js +0 -5
  64. package/src/sap/fe/test/builder/KPIBuilder.js +0 -6
  65. package/src/sap/fe/test/builder/MacroFieldBuilder.js +0 -1
  66. package/src/sap/fe/test/builder/MdcFieldBuilder.js +0 -6
  67. package/src/sap/fe/test/builder/MdcFilterFieldBuilder.js +0 -2
  68. package/src/sap/fe/test/builder/MdcTableBuilder.js +2 -5
  69. package/src/sap/fe/test/builder/OverflowToolbarBuilder.js +12 -8
  70. package/src/sap/fe/test/builder/VMBuilder.js +0 -6
  71. package/src/sap/fe/test/internal/ConsoleErrorChecker.js +1 -1
  72. package/src/sap/fe/test/internal/FEArrangements.js +0 -1
  73. package/src/sap/fe/test/library.js +2 -3
  74. package/src/sap/fe/test/library.ts +0 -1
@@ -83,7 +83,6 @@ sap.ui.define(
83
83
  /**
84
84
  * Returns the matcher for states, which might be control specific. This function is meant to be overridden
85
85
  * by concrete control builder if necessary.
86
- *
87
86
  * @param {any} mState
88
87
  * @returns {Function} The state matcher function
89
88
  * @protected
@@ -302,7 +301,6 @@ sap.ui.define(
302
301
  /**
303
302
  * Creates a matcher function that is identifying a control by id.
304
303
  * The result will be true in case of the string was found, otherwise false.
305
- *
306
304
  * @param {string|RegExp} vId The string/RegExp to be used for identifying the control
307
305
  * @returns {Function} The matcher function returning true/false
308
306
  * @public
@@ -320,7 +318,6 @@ sap.ui.define(
320
318
  /**
321
319
  * Creates a matcher function that is identifying a control by type.
322
320
  * The result will be true in case of the string was found, otherwise false.
323
- *
324
321
  * @param {string|RegExp} vType The string/RegExp to be used for identifying the control
325
322
  * @returns {Function} The matcher function returning true/false
326
323
  * @public
@@ -337,7 +334,6 @@ sap.ui.define(
337
334
  },
338
335
  /**
339
336
  * Creates a matcher that returns the element at <code>iIndex</code> from input array.
340
- *
341
337
  * @param {number} iIndex The index of the element to be returned
342
338
  * @returns {Function} The matcher function returning element at given index
343
339
  */
@@ -389,7 +385,6 @@ sap.ui.define(
389
385
  },
390
386
  /**
391
387
  * Supports an aggregation path to deeper aggregations like "actions/action" or "content/items/control".
392
- *
393
388
  * @param {string} sAggregationPath The aggregation path
394
389
  * @param {any} [vMatchers] Matchers against target controls
395
390
  * @returns {function(*): *} A matcher function that returns always an array with matching controls
@@ -20,7 +20,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
20
20
 
21
21
  /**
22
22
  * Checks if a KPI tag exists with a given label and other optional properties.
23
- *
24
23
  * @param {string} sKPILabel The label of the KPI
25
24
  * @param {object} oKPIProperties Additional optional properties on the KPI (status, number, or unit)
26
25
  * @returns {sap.fe.test.builder.KPIBuilder} This instance
@@ -51,7 +50,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
51
50
 
52
51
  /**
53
52
  * Clicks on a KPI tag to open the card.
54
- *
55
53
  * @param {string} sKPILabel The label of the KPI
56
54
  * @returns {sap.fe.test.builder.KPIBuilder} This instance
57
55
  * @private
@@ -64,7 +62,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
64
62
 
65
63
  /**
66
64
  * Checks if a KPI Card is displayed.
67
- *
68
65
  * @returns {sap.fe.test.builder.KPIBuilder} This instance
69
66
  * @private
70
67
  */
@@ -74,7 +71,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
74
71
 
75
72
  /**
76
73
  * Clicks on the KPI card header.
77
- *
78
74
  * @returns {sap.fe.test.builder.KPIBuilder} This instance
79
75
  */
80
76
  KPIBuilder.prototype.doClickKPICardHeader = function () {
@@ -83,7 +79,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
83
79
 
84
80
  /**
85
81
  * Applies a matcher to the content of the card header.
86
- *
87
82
  * @param {sap.ui.test.matchers.Matcher} vMatcher The matcher to filter child items
88
83
  * @param {boolean} bDirectChild Specifies if the matcher should be applied only to direct children or all descendants
89
84
  * @returns {sap.fe.test.builder.KPIBuilder} This instance
@@ -96,7 +91,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
96
91
 
97
92
  /**
98
93
  * Applies a matcher to the card chart.
99
- *
100
94
  * @param {sap.ui.test.matchers.Matcher} vMatcher The matcher to be applied to the chart
101
95
  * @returns {sap.fe.test.builder.KPIBuilder} This instance
102
96
  */
@@ -116,7 +116,6 @@ sap.ui.define(
116
116
 
117
117
  /**
118
118
  * Returns the state matcher for the MdcField control.
119
- *
120
119
  * @param {any} mState
121
120
  * @returns {*} The state matcher.
122
121
  * @protected
@@ -15,7 +15,6 @@ sap.ui.define(
15
15
  * This function checks whether the expected value is fulfilled by the checked value.
16
16
  * Both values can be either an array or a single element.
17
17
  * In case of arrays, the it checks the second parameter to start with the same vales as the expected value array.
18
- *
19
18
  * @param {any} vExpectedValue
20
19
  * @param {any} vValueToCheck
21
20
  * @returns {boolean} `true` if expected values are met, `false` else
@@ -32,7 +31,6 @@ sap.ui.define(
32
31
 
33
32
  /**
34
33
  * This function checks the current value against expected values with respect to the display type.
35
- *
36
34
  * @param {sap.ui.mdc.enums.FieldDisplay} sDisplay The type of display
37
35
  * @param {any} oExpectedValue
38
36
  * @param {any} oExpectedDescription
@@ -113,7 +111,6 @@ sap.ui.define(
113
111
 
114
112
  /**
115
113
  * Checks for certain condition value(s).
116
- *
117
114
  * @param {string|object|Array} [vValue] The expected value(s)
118
115
  * @param {string} [sOperator] The expected operator
119
116
  * @returns {sap.fe.test.builder.FieldBuilder} `this`
@@ -130,7 +127,6 @@ sap.ui.define(
130
127
 
131
128
  /**
132
129
  * Changes the value of the field.
133
- *
134
130
  * @param {string} vValue The new value
135
131
  * @returns {sap.fe.test.builder.FieldBuilder} `this`
136
132
  * @public
@@ -146,7 +142,6 @@ sap.ui.define(
146
142
 
147
143
  /**
148
144
  * Returns the state matcher for the MdcField control.
149
- *
150
145
  * @param {any} mState
151
146
  * @returns {*} The state matcher.
152
147
  * @protected
@@ -179,7 +174,6 @@ sap.ui.define(
179
174
  },
180
175
  /**
181
176
  * Returns a matcher function that checks a field for given condition value(s) and operator (optional).
182
- *
183
177
  * @param {string|object|Array} vExpectedValue The expected value
184
178
  * @param {string} [sOperator] The operator of the condition
185
179
  * @returns {function(*=): *|boolean} The matcher function.
@@ -20,7 +20,6 @@ sap.ui.define(["./MdcFieldBuilder", "sap/fe/test/Utils"], function (FieldBuilder
20
20
 
21
21
  /**
22
22
  * Checks for certain condition value(s).
23
- *
24
23
  * @param {string|Array} [vValue] The expected value(s)
25
24
  * @param {string} [sOperator] The expected operator
26
25
  * @returns {sap.fe.test.builder.FilterFieldBuilder} `this`
@@ -33,7 +32,6 @@ sap.ui.define(["./MdcFieldBuilder", "sap/fe/test/Utils"], function (FieldBuilder
33
32
 
34
33
  /**
35
34
  * Changes the value of the filter field.
36
- *
37
35
  * @param {string} vValue The new value
38
36
  * @param {boolean} bClearFirst
39
37
  * @returns {sap.fe.test.builder.FilterFieldBuilder} `this`
@@ -42,21 +42,18 @@ sap.ui.define(
42
42
  var RowActionType = {
43
43
  /**
44
44
  * Custom defined Row Action.
45
- *
46
45
  * @public
47
46
  */
48
47
  Custom: "Custom",
49
48
 
50
49
  /**
51
50
  * Navigation Row Action.
52
- *
53
51
  * @public
54
52
  */
55
53
  Navigation: "Navigation",
56
54
 
57
55
  /**
58
56
  * Delete Row Action.
59
- *
60
57
  * @public
61
58
  */
62
59
  Delete: "Delete"
@@ -517,12 +514,12 @@ sap.ui.define(
517
514
  .isDialogElement()
518
515
  .hasType("sap.m.CustomListItem")
519
516
  .hasChildren(
520
- OpaBuilder.create(this).hasType("sap.m.ComboBox").hasProperties({ placeholder: "Sort by" }).hasProperties({ value: "" })
517
+ OpaBuilder.create(this).hasType("sap.m.ComboBox").hasProperties({ placeholder: "Sort By" }).hasProperties({ value: "" })
521
518
  )
522
519
  .doOnChildren(
523
520
  OpaBuilder.create(this)
524
521
  .hasType("sap.m.ComboBox")
525
- .hasProperties({ placeholder: "Sort by" })
522
+ .hasProperties({ placeholder: "Sort By" })
526
523
  .hasProperties({ value: "" })
527
524
  .doEnterText(sFieldName, true, false, true)
528
525
  )
@@ -57,10 +57,10 @@ sap.ui.define(
57
57
  OverflowToolbarBuilder.prototype.doOnContent = function (vContentMatcher, vContentAction) {
58
58
  var oOverflowToolbarBuilder = new FEBuilder(this.getOpaInstance(), this.build()).hasType("sap.m.OverflowToolbar"),
59
59
  fnMatcherIsTextButton = function (oControl) {
60
- if (oControl.isA("sap.fe.macros.ShareAPI")) {
61
- // ShareAPI does not have a text property
62
- // text property is on the MenuButton which is inside the shareAPI
63
- // so we get the ShareAPI's content
60
+ if (oControl.isA("sap.fe.macros.ShareAPI") || oControl.isA("sap.fe.macros.DraftToggle")) {
61
+ // ShareAPI and DraftToggle don't have a text property
62
+ // text property is on the MenuButton which is inside the shareAPI, and on the Button inside DraftToggle BB
63
+ // so we get the control's content
64
64
  return !!oControl.getContent().getText;
65
65
  } else {
66
66
  return !!oControl.getText;
@@ -89,8 +89,8 @@ sap.ui.define(
89
89
  })
90
90
  .do(function (oOverflowToolbar) {
91
91
  var oToolbarButton = fnDeepAggregation(oOverflowToolbar)[0];
92
- if (oToolbarButton.isA("sap.fe.macros.ShareAPI")) {
93
- // MenuButton is inside the shareAPI so we do getContent
92
+ if (oToolbarButton.isA("sap.fe.macros.ShareAPI") || oToolbarButton.isA("sap.fe.macros.DraftToggle")) {
93
+ // MenuButton is inside the shareAPI and Button is inside DraftToggle BB so we do getContent
94
94
  oToolbarButton = oToolbarButton.getContent();
95
95
  }
96
96
  var oButtonForAction =
@@ -117,11 +117,15 @@ sap.ui.define(
117
117
  OpaBuilder.Matchers.not(
118
118
  OpaBuilder.Matchers.aggregationMatcher("content", [vContentMatcher, FEBuilder.Matchers.states(mState)])
119
119
  ),
120
- // for shareAPI look into the child menuButton
120
+ // for shareAPI and draftToggle look into the child (menuButton or Button)
121
121
  OpaBuilder.Matchers.children(OpaBuilder.Matchers.match([vContentMatcher, FEBuilder.Matchers.states(mState)]))
122
122
  );
123
123
  } else {
124
- oOverflowToolbarBuilder.hasAggregation("content", aMatchers);
124
+ oOverflowToolbarBuilder.hasSome(
125
+ OpaBuilder.Matchers.aggregationMatcher("content", aMatchers),
126
+ // for DraftToggle look into child button
127
+ OpaBuilder.Matchers.children(OpaBuilder.Matchers.match([vContentMatcher, FEBuilder.Matchers.states(mState)]))
128
+ );
125
129
  }
126
130
  return this.doOpenOverflow().success(oOverflowToolbarBuilder);
127
131
  };
@@ -20,7 +20,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
20
20
 
21
21
  /**
22
22
  * Saves a variant under given name.
23
- *
24
23
  * @param {string} sVariantName The name of the new variant
25
24
  * @param {boolean} bSetAsDefault
26
25
  * @param {boolean} bApplyAutomatically
@@ -76,7 +75,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
76
75
 
77
76
  /**
78
77
  * Saves the current variant.
79
- *
80
78
  * @returns {sap.fe.test.builder.VMBuilder} This instance
81
79
  * @public
82
80
  * @ui5-restricted
@@ -97,7 +95,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
97
95
 
98
96
  /**
99
97
  * Select a variant under given name.
100
- *
101
98
  * @param {string} sVariantName The name of the variant to select
102
99
  * @returns {sap.fe.test.builder.VMBuilder} This instance
103
100
  * @public
@@ -122,7 +119,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
122
119
 
123
120
  /**
124
121
  * Removes a variant under given name.
125
- *
126
122
  * @param {string} sVariantName The name of the variant to remove
127
123
  * @returns {sap.fe.test.builder.VMBuilder} This instance
128
124
  * @public
@@ -170,7 +166,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
170
166
 
171
167
  /**
172
168
  * Selects a variant as the default.
173
- *
174
169
  * @param {string} sVariantName The name of the variant to be set as default
175
170
  * @returns {sap.fe.test.builder.VMBuilder} `this` instance
176
171
  * @public
@@ -211,7 +206,6 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
211
206
 
212
207
  /**
213
208
  * Resets the default variant to Standard.
214
- *
215
209
  * @returns {sap.fe.test.builder.VMBuilder} `this` instance
216
210
  * @public
217
211
  * @ui5-restricted
@@ -193,4 +193,4 @@ sap.ui.define([], function () {
193
193
  }();
194
194
  return ConsoleErrorChecker.getInstance(window);
195
195
  }, false);
196
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3cmFwUGF0dGVybnMiLCJwYXR0ZXJuIiwiUmVnRXhwIiwibWVzc2FnZSIsIm1hdGNoIiwiaW5jbHVkZXMiLCJHTE9CQUxMWV9BQ0NFUFRFRF9FUlJPUlMiLCJtYXAiLCJDb25zb2xlRXJyb3JDaGVja2VyIiwid2luZG93IiwibWF0Y2hlcnMiLCJtZXNzYWdlcyIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm9wYUZyYW1lIiwicmVkdWNlIiwiaUZyYW1lIiwibXV0YXRpb24iLCJub2RlIiwiQXJyYXkiLCJmcm9tIiwiYWRkZWROb2RlcyIsIkVsZW1lbnQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudFdpbmRvdyIsInByZXBhcmVXaW5kb3ciLCJRVW5pdCIsIm1vZHVsZVN0YXJ0Iiwib2JzZXJ2ZSIsImRvY3VtZW50IiwiYm9keSIsImNoaWxkTGlzdCIsIm1vZHVsZURvbmUiLCJkaXNjb25uZWN0IiwidGVzdFN0YXJ0IiwicmVzZXQiLCJsb2ciLCJoYW5kbGVGYWlsZWRNZXNzYWdlcyIsImthcm1hIiwiX19rYXJtYV9fIiwic2VhcmNoIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb24iLCJ1cmxQYXJhbSIsImdldCIsImlzU3RyaWN0IiwiY29uZmlnIiwidWk1Iiwic3RyaWN0Y29uc29sZWVycm9ycyIsImZhaWxlZE1lc3NhZ2VzIiwibGVuZ3RoIiwiYXNzZXJ0IiwicHVzaFJlc3VsdCIsInJlc3VsdCIsInNvdXJjZSIsImFjdHVhbCIsImV4cGVjdGVkIiwic2V0QWNjZXB0ZWRFcnJvclBhdHRlcm5zIiwicGF0dGVybnMiLCJjb25jYXQiLCJjaGVja0FuZExvZyIsInR5cGUiLCJkYXRhIiwibWVzc2FnZVRleHQiLCJpc0FsbG93ZWQiLCJzb21lIiwibWF0Y2hlciIsInB1c2giLCJ3cmFwcGVkRGF0YSIsImQiLCJjb25zb2xlIiwicGF0Y2hDb25zb2xlTWV0aG9kIiwibWV0aG9kIiwiZm5PcmlnaW5hbCIsImFwcGx5IiwiY29uZGl0aW9uIiwiZmlyc3QiLCJ1bnNoaWZ0IiwiZXJyb3IiLCJvblByb21pc2VSZWplY3Rpb24iLCJldmVudCIsInJlYXNvbiIsInN0YWNrIiwib25FcnJvciIsImZpbGVuYW1lIiwiYWRkRXZlbnRMaXN0ZW5lciIsImJpbmQiLCJwYXNzaXZlIiwiZ2V0SW5zdGFuY2UiLCJzYXBGRUNvbnNvbGVFcnJvckNoZWNrZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbnNvbGVFcnJvckNoZWNrZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBNZXNzYWdlTWF0Y2hlckZ1bmN0aW9uID0gKG1lc3NhZ2U6IHN0cmluZykgPT4gYm9vbGVhbjtcbnR5cGUgS2FybWEgPSB7XG5cdGxvZzogKGxldmVsOiBhbnksIC4uLmRhdGE6IGFueVtdKSA9PiB2b2lkO1xuXHRjb25maWc6IHtcblx0XHR1aTU/OiB7XG5cdFx0XHRjb25maWc6IHtcblx0XHRcdFx0c3RyaWN0Y29uc29sZWVycm9ycz86IGJvb2xlYW47IC8vIEthcm1hIG9wdGlvbnMgYXJlIGFsbCBsb3dlcmNhc2UgYXQgcnVudGltZSFcblx0XHRcdH07XG5cdFx0fTtcblx0fTtcbn07XG5cbmZ1bmN0aW9uIHdyYXBQYXR0ZXJucyhwYXR0ZXJuOiBSZWdFeHAgfCBzdHJpbmcpOiBNZXNzYWdlTWF0Y2hlckZ1bmN0aW9uIHtcblx0aWYgKHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0XHRyZXR1cm4gKG1lc3NhZ2UpID0+IG1lc3NhZ2UubWF0Y2gocGF0dGVybikgIT09IG51bGw7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIChtZXNzYWdlKSA9PiBtZXNzYWdlLmluY2x1ZGVzKHBhdHRlcm4pO1xuXHR9XG59XG5cbi8qKlxuICogTGlzdCBvZiBlcnJvciBtZXNzYWdlIHBhdHRlcm5zIHRoYXQgYXJlIGFsd2F5cyBhY2NlcHRlZC5cbiAqL1xuY29uc3QgR0xPQkFMTFlfQUNDRVBURURfRVJST1JTID0gW1xuXHQvbGlicmFyeS1wcmVsb2FkXFwuKGpzb258anMpLywgLy8gYWNjZXB0IGVycm9ycyByZWxhdGVkIHRvIGZpbGVzIHRoYXQgYXJlIG5vdCB0aGVyZSB3aGVuIHJ1bm5pbmcgZnJvbSBzb3VyY2UgdG8gcHJldmVudCBmYWxzZSBwb3NpdGl2ZXNcblx0XCIvcmVzb3VyY2VzL3NhcC9mZS9tYWNyb3MvbWFuaWZlc3QuanNvblwiIC8vIHNlZSBhYm92ZVxuXS5tYXAod3JhcFBhdHRlcm5zKTtcblxuY2xhc3MgQ29uc29sZUVycm9yQ2hlY2tlciB7XG5cdHByaXZhdGUgbWF0Y2hlcnM6IE1lc3NhZ2VNYXRjaGVyRnVuY3Rpb25bXSA9IFtdO1xuXG5cdHByaXZhdGUgbWVzc2FnZXM6IHN0cmluZ1tdID0gW107XG5cblx0cHJpdmF0ZSByZWFkb25seSBrYXJtYTogS2FybWEgfCB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSByZWFkb25seSBpc1N0cmljdDogYm9vbGVhbjtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuXHRcdGNvbnN0IG9wYUZyYW1lID0gbXV0YXRpb25zLnJlZHVjZSgoaUZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCB8IG51bGwsIG11dGF0aW9uOiBNdXRhdGlvblJlY29yZCkgPT4ge1xuXHRcdFx0aWYgKGlGcmFtZSAhPT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4gaUZyYW1lO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IG5vZGUgb2YgQXJyYXkuZnJvbShtdXRhdGlvbi5hZGRlZE5vZGVzKSkge1xuXHRcdFx0XHRpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcblx0XHRcdFx0XHRjb25zdCBlbGVtZW50ID0gbm9kZS5xdWVyeVNlbGVjdG9yKFwiI09wYUZyYW1lXCIpO1xuXHRcdFx0XHRcdGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTElGcmFtZUVsZW1lbnQgJiYgZWxlbWVudC5jb250ZW50V2luZG93KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbWVudDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGlGcmFtZTtcblx0XHR9LCBudWxsKTtcblxuXHRcdGlmIChvcGFGcmFtZSAmJiBvcGFGcmFtZS5jb250ZW50V2luZG93KSB7XG5cdFx0XHR0aGlzLnByZXBhcmVXaW5kb3cob3BhRnJhbWUuY29udGVudFdpbmRvdyk7XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdHJ1Y3Rvcih3aW5kb3c6IFdpbmRvdyAmIHsgX19rYXJtYV9fPzogS2FybWEgfSkge1xuXHRcdFFVbml0Lm1vZHVsZVN0YXJ0KCgpID0+IHtcblx0XHRcdHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh3aW5kb3cuZG9jdW1lbnQuYm9keSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG5cdFx0fSk7XG5cblx0XHRRVW5pdC5tb2R1bGVEb25lKCgpID0+IHtcblx0XHRcdHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXHRcdH0pO1xuXG5cdFx0UVVuaXQudGVzdFN0YXJ0KCgpID0+IHtcblx0XHRcdHRoaXMucmVzZXQoKTtcblx0XHR9KTtcblxuXHRcdFFVbml0LmxvZygoKSA9PiB7XG5cdFx0XHR0aGlzLmhhbmRsZUZhaWxlZE1lc3NhZ2VzKCk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmthcm1hID0gd2luZG93Ll9fa2FybWFfXztcblxuXHRcdC8vIGVpdGhlciBnbyBmb3IgS2FybWEgY29uZmlnIG9wdGlvbiBcInVpNS5jb25maWcuc3RyaWN0Q29uc29sZUVycm9yc1wiIG9yIHVzZSBVUkwgcXVlcnkgcGFyYW1ldGVyIFwic3RyaWN0XCJcblx0XHRjb25zdCBzZWFyY2ggPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuXHRcdGNvbnN0IHVybFBhcmFtID0gc2VhcmNoLmdldChcInN0cmljdENvbnNvbGVFcnJvcnNcIik7XG5cdFx0aWYgKHVybFBhcmFtICE9PSBudWxsKSB7XG5cdFx0XHR0aGlzLmlzU3RyaWN0ID0gdXJsUGFyYW0gPT09IFwidHJ1ZVwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmlzU3RyaWN0ID0gdGhpcy5rYXJtYT8uY29uZmlnLnVpNT8uY29uZmlnLnN0cmljdGNvbnNvbGVlcnJvcnMgPz8gZmFsc2U7XG5cdFx0fVxuXG5cdFx0dGhpcy5yZXNldCgpO1xuXHR9XG5cblx0cHJpdmF0ZSBoYW5kbGVGYWlsZWRNZXNzYWdlcygpIHtcblx0XHRjb25zdCBmYWlsZWRNZXNzYWdlcyA9IHRoaXMubWVzc2FnZXM7XG5cdFx0dGhpcy5tZXNzYWdlcyA9IFtdO1xuXG5cdFx0aWYgKGZhaWxlZE1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFFVbml0LmFzc2VydC5wdXNoUmVzdWx0KHtcblx0XHRcdFx0cmVzdWx0OiBmYWxzZSxcblx0XHRcdFx0c291cmNlOiBcIkZFIENvbnNvbGUgTG9nIENoZWNrXCIsXG5cdFx0XHRcdG1lc3NhZ2U6IGBUaGVyZSB3ZXJlICR7ZmFpbGVkTWVzc2FnZXMubGVuZ3RofSB1bmV4cGVjdGVkIGNvbnNvbGUgZXJyb3JzYCxcblx0XHRcdFx0YWN0dWFsOiBmYWlsZWRNZXNzYWdlcyxcblx0XHRcdFx0ZXhwZWN0ZWQ6IFtdXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc2V0KCkge1xuXHRcdHRoaXMubWVzc2FnZXMgPSBbXTtcblxuXHRcdC8vIHRoaXMgc2V0cyB0aGUgZGVmYXVsdCB0byBhcHBseSBpZiBubyBhbGxvd2VkIHBhdHRlcm5zIGFyZSBzZXQgdmlhIHNldEFjY2VwdGVkRXJyb3JQYXR0ZXJucygpLlxuXHRcdGlmICh0aGlzLmlzU3RyaWN0KSB7XG5cdFx0XHR0aGlzLm1hdGNoZXJzID0gR0xPQkFMTFlfQUNDRVBURURfRVJST1JTO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1hdGNoZXJzID0gWygpID0+IHRydWVdO1xuXHRcdH1cblx0fVxuXG5cdHNldEFjY2VwdGVkRXJyb3JQYXR0ZXJucyhwYXR0ZXJucz86IChSZWdFeHAgfCBzdHJpbmcpW10pIHtcblx0XHRpZiAoIXBhdHRlcm5zIHx8IHBhdHRlcm5zLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhpcy5tYXRjaGVycyA9IEdMT0JBTExZX0FDQ0VQVEVEX0VSUk9SUztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5tYXRjaGVycyA9IHBhdHRlcm5zLm1hcCh3cmFwUGF0dGVybnMpLmNvbmNhdChHTE9CQUxMWV9BQ0NFUFRFRF9FUlJPUlMpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY2hlY2tBbmRMb2codHlwZTogYW55LCAuLi5kYXRhOiBhbnlbXSkge1xuXHRcdC8vIG9ubHkgY2hlY2sgdGhlIGVycm9yIG1lc3NhZ2VzXG5cdFx0aWYgKHR5cGUgPT09IFwiZXJyb3JcIikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZVRleHQgPSBkYXRhWzBdO1xuXHRcdFx0Y29uc3QgaXNBbGxvd2VkID0gdGhpcy5tYXRjaGVycy5zb21lKChtYXRjaGVyKSA9PiBtYXRjaGVyKG1lc3NhZ2VUZXh0KSk7XG5cdFx0XHRpZiAoIWlzQWxsb3dlZCkge1xuXHRcdFx0XHR0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZVRleHQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLmthcm1hKSB7XG5cdFx0XHQvLyB3cmFwIHRoZSBkYXRhIHRvIGZhY2lsaXRhdGUgcGFyc2luZyBpbiB0aGUgYmFja2VuZFxuXHRcdFx0Y29uc3Qgd3JhcHBlZERhdGEgPSBkYXRhLm1hcCgoZCkgPT4gW2RdKTtcblx0XHRcdHRoaXMua2FybWEubG9nKHR5cGUsIHdyYXBwZWREYXRhKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHByZXBhcmVXaW5kb3cod2luZG93OiBXaW5kb3cpIHtcblx0XHRjb25zdCBjb25zb2xlOiBDb25zb2xlID0gKHdpbmRvdyBhcyBhbnkpLmNvbnNvbGU7XG5cblx0XHQvLyBjYXB0dXJlIGNvbnNvbGUubG9nKCksIGNvbnNvbGUuZGVidWcoKSwgZXRjLlxuXHRcdGNvbnN0IHBhdGNoQ29uc29sZU1ldGhvZCA9IChtZXRob2Q6IFwibG9nXCIgfCBcImluZm9cIiB8IFwid2FyblwiIHwgXCJlcnJvclwiIHwgXCJkZWJ1Z1wiKSA9PiB7XG5cdFx0XHRjb25zdCBmbk9yaWdpbmFsID0gY29uc29sZVttZXRob2RdO1xuXHRcdFx0Y29uc29sZVttZXRob2RdID0gKC4uLmRhdGE6IGFueVtdKTogdm9pZCA9PiB7XG5cdFx0XHRcdHRoaXMuY2hlY2tBbmRMb2cobWV0aG9kLCAuLi5kYXRhKTtcblx0XHRcdFx0cmV0dXJuIGZuT3JpZ2luYWwuYXBwbHkoY29uc29sZSwgZGF0YSk7XG5cdFx0XHR9O1xuXHRcdH07XG5cblx0XHRwYXRjaENvbnNvbGVNZXRob2QoXCJsb2dcIik7XG5cdFx0cGF0Y2hDb25zb2xlTWV0aG9kKFwiZGVidWdcIik7XG5cdFx0cGF0Y2hDb25zb2xlTWV0aG9kKFwiaW5mb1wiKTtcblx0XHRwYXRjaENvbnNvbGVNZXRob2QoXCJ3YXJuXCIpO1xuXHRcdHBhdGNoQ29uc29sZU1ldGhvZChcImVycm9yXCIpO1xuXG5cdFx0Ly8gY2FwdHVyZSBjb25zb2xlLmFzc2VydCgpXG5cdFx0Ly8gc2VlIGh0dHBzOi8vY29uc29sZS5zcGVjLndoYXR3Zy5vcmcvI2Fzc2VydFxuXHRcdGNvbnNvbGUuYXNzZXJ0ID0gZnVuY3Rpb24gKGNvbmRpdGlvbiA9IGZhbHNlLCAuLi5kYXRhOiBhbnlbXSkge1xuXHRcdFx0aWYgKGNvbmRpdGlvbikge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBcIkFzc2VydGlvbiBmYWlsZWRcIjtcblx0XHRcdGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRkYXRhLnB1c2gobWVzc2FnZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsZXQgZmlyc3QgPSBkYXRhWzBdO1xuXHRcdFx0XHRpZiAodHlwZW9mIGZpcnN0ICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0ZGF0YS51bnNoaWZ0KG1lc3NhZ2UpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZpcnN0ID0gYCR7bWVzc2FnZX06ICR7Zmlyc3R9YDtcblx0XHRcdFx0XHRkYXRhWzBdID0gZmlyc3Q7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Y29uc29sZS5lcnJvciguLi5kYXRhKTtcblx0XHR9O1xuXG5cdFx0Ly8gY2FwdHVyZSBlcnJvcnNcblx0XHRmdW5jdGlvbiBvblByb21pc2VSZWplY3Rpb24odGhpczogQ29uc29sZUVycm9yQ2hlY2tlciwgZXZlbnQ6IFByb21pc2VSZWplY3Rpb25FdmVudCkge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGBVTkhBTkRMRUQgUFJPTUlTRSBSRUpFQ1RJT046ICR7ZXZlbnQucmVhc29ufWA7XG5cdFx0XHR0aGlzLmNoZWNrQW5kTG9nKFwiZXJyb3JcIiwgbWVzc2FnZSwgZXZlbnQucmVhc29uPy5zdGFjayk7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gb25FcnJvcih0aGlzOiBDb25zb2xlRXJyb3JDaGVja2VyLCBldmVudDogRXJyb3JFdmVudCkge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGV2ZW50Lm1lc3NhZ2U7XG5cdFx0XHR0aGlzLmNoZWNrQW5kTG9nKFwiZXJyb3JcIiwgbWVzc2FnZSwgZXZlbnQuZmlsZW5hbWUpO1xuXHRcdH1cblxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgb25FcnJvci5iaW5kKHRoaXMpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmhhbmRsZWRyZWplY3Rpb25cIiwgb25Qcm9taXNlUmVqZWN0aW9uLmJpbmQodGhpcyksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcblx0fVxuXG5cdHN0YXRpYyBnZXRJbnN0YW5jZSh3aW5kb3c6IFdpbmRvdyAmIHsgc2FwRkVDb25zb2xlRXJyb3JDaGVja2VyPzogQ29uc29sZUVycm9yQ2hlY2tlciB9KTogQ29uc29sZUVycm9yQ2hlY2tlciB7XG5cdFx0Ly8gdGhlIGdsb2JhbCBpbnN0YW5jZSBpcyBuZWVkZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSB0ZXN0cyBpbiBhIHJvdyAoaW4gS2FybWEpXG5cdFx0aWYgKCF3aW5kb3cuc2FwRkVDb25zb2xlRXJyb3JDaGVja2VyKSB7XG5cdFx0XHR3aW5kb3cuc2FwRkVDb25zb2xlRXJyb3JDaGVja2VyID0gbmV3IENvbnNvbGVFcnJvckNoZWNrZXIod2luZG93KTtcblx0XHR9XG5cdFx0cmV0dXJuIHdpbmRvdy5zYXBGRUNvbnNvbGVFcnJvckNoZWNrZXI7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29uc29sZUVycm9yQ2hlY2tlci5nZXRJbnN0YW5jZSh3aW5kb3cpO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O0VBWUEsU0FBU0EsWUFBWSxDQUFDQyxPQUF3QixFQUEwQjtJQUN2RSxJQUFJQSxPQUFPLFlBQVlDLE1BQU0sRUFBRTtNQUM5QixPQUFRQyxPQUFPLElBQUtBLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDSCxPQUFPLENBQUMsS0FBSyxJQUFJO0lBQ3BELENBQUMsTUFBTTtNQUNOLE9BQVFFLE9BQU8sSUFBS0EsT0FBTyxDQUFDRSxRQUFRLENBQUNKLE9BQU8sQ0FBQztJQUM5QztFQUNEOztFQUVBO0FBQ0E7QUFDQTtFQUNBLE1BQU1LLHdCQUF3QixHQUFHLENBQ2hDLDRCQUE0QjtFQUFFO0VBQzlCLHdDQUF3QyxDQUFDO0VBQUEsQ0FDekMsQ0FBQ0MsR0FBRyxDQUFDUCxZQUFZLENBQUM7RUFBQyxJQUVkUSxtQkFBbUI7SUFnQ3hCLDZCQUFZQyxNQUFzQyxFQUFFO01BQUEsS0EvQjVDQyxRQUFRLEdBQTZCLEVBQUU7TUFBQSxLQUV2Q0MsUUFBUSxHQUFhLEVBQUU7TUFBQSxLQU1kQyxRQUFRLEdBQUcsSUFBSUMsZ0JBQWdCLENBQUVDLFNBQVMsSUFBSztRQUMvRCxN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
196
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3cmFwUGF0dGVybnMiLCJwYXR0ZXJuIiwiUmVnRXhwIiwibWVzc2FnZSIsIm1hdGNoIiwiaW5jbHVkZXMiLCJHTE9CQUxMWV9BQ0NFUFRFRF9FUlJPUlMiLCJtYXAiLCJDb25zb2xlRXJyb3JDaGVja2VyIiwid2luZG93IiwibWF0Y2hlcnMiLCJtZXNzYWdlcyIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm9wYUZyYW1lIiwicmVkdWNlIiwiaUZyYW1lIiwibXV0YXRpb24iLCJub2RlIiwiQXJyYXkiLCJmcm9tIiwiYWRkZWROb2RlcyIsIkVsZW1lbnQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudFdpbmRvdyIsInByZXBhcmVXaW5kb3ciLCJRVW5pdCIsIm1vZHVsZVN0YXJ0Iiwib2JzZXJ2ZSIsImRvY3VtZW50IiwiYm9keSIsImNoaWxkTGlzdCIsIm1vZHVsZURvbmUiLCJkaXNjb25uZWN0IiwidGVzdFN0YXJ0IiwicmVzZXQiLCJsb2ciLCJoYW5kbGVGYWlsZWRNZXNzYWdlcyIsImthcm1hIiwiX19rYXJtYV9fIiwic2VhcmNoIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb24iLCJ1cmxQYXJhbSIsImdldCIsImlzU3RyaWN0IiwiX3RoaXMka2FybWEiLCJfdGhpcyRrYXJtYSRjb25maWckdWkiLCJjb25maWciLCJ1aTUiLCJzdHJpY3Rjb25zb2xlZXJyb3JzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZmFpbGVkTWVzc2FnZXMiLCJsZW5ndGgiLCJhc3NlcnQiLCJwdXNoUmVzdWx0IiwicmVzdWx0Iiwic291cmNlIiwiYWN0dWFsIiwiZXhwZWN0ZWQiLCJzZXRBY2NlcHRlZEVycm9yUGF0dGVybnMiLCJwYXR0ZXJucyIsImNvbmNhdCIsImNoZWNrQW5kTG9nIiwidHlwZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJkYXRhIiwiX2tleSIsIm1lc3NhZ2VUZXh0IiwiaXNBbGxvd2VkIiwic29tZSIsIm1hdGNoZXIiLCJwdXNoIiwid3JhcHBlZERhdGEiLCJkIiwiX3RoaXMiLCJjb25zb2xlIiwicGF0Y2hDb25zb2xlTWV0aG9kIiwibWV0aG9kIiwiZm5PcmlnaW5hbCIsIl9sZW4yIiwiX2tleTIiLCJhcHBseSIsImNvbmRpdGlvbiIsInVuZGVmaW5lZCIsIl9sZW4zIiwiX2tleTMiLCJmaXJzdCIsInVuc2hpZnQiLCJlcnJvciIsIm9uUHJvbWlzZVJlamVjdGlvbiIsImV2ZW50IiwiX2V2ZW50JHJlYXNvbiIsInJlYXNvbiIsInN0YWNrIiwib25FcnJvciIsImZpbGVuYW1lIiwiYWRkRXZlbnRMaXN0ZW5lciIsImJpbmQiLCJwYXNzaXZlIiwiZ2V0SW5zdGFuY2UiLCJzYXBGRUNvbnNvbGVFcnJvckNoZWNrZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbnNvbGVFcnJvckNoZWNrZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBNZXNzYWdlTWF0Y2hlckZ1bmN0aW9uID0gKG1lc3NhZ2U6IHN0cmluZykgPT4gYm9vbGVhbjtcbnR5cGUgS2FybWEgPSB7XG5cdGxvZzogKGxldmVsOiBhbnksIC4uLmRhdGE6IGFueVtdKSA9PiB2b2lkO1xuXHRjb25maWc6IHtcblx0XHR1aTU/OiB7XG5cdFx0XHRjb25maWc6IHtcblx0XHRcdFx0c3RyaWN0Y29uc29sZWVycm9ycz86IGJvb2xlYW47IC8vIEthcm1hIG9wdGlvbnMgYXJlIGFsbCBsb3dlcmNhc2UgYXQgcnVudGltZSFcblx0XHRcdH07XG5cdFx0fTtcblx0fTtcbn07XG5cbmZ1bmN0aW9uIHdyYXBQYXR0ZXJucyhwYXR0ZXJuOiBSZWdFeHAgfCBzdHJpbmcpOiBNZXNzYWdlTWF0Y2hlckZ1bmN0aW9uIHtcblx0aWYgKHBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0XHRyZXR1cm4gKG1lc3NhZ2UpID0+IG1lc3NhZ2UubWF0Y2gocGF0dGVybikgIT09IG51bGw7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIChtZXNzYWdlKSA9PiBtZXNzYWdlLmluY2x1ZGVzKHBhdHRlcm4pO1xuXHR9XG59XG5cbi8qKlxuICogTGlzdCBvZiBlcnJvciBtZXNzYWdlIHBhdHRlcm5zIHRoYXQgYXJlIGFsd2F5cyBhY2NlcHRlZC5cbiAqL1xuY29uc3QgR0xPQkFMTFlfQUNDRVBURURfRVJST1JTID0gW1xuXHQvbGlicmFyeS1wcmVsb2FkXFwuKGpzb258anMpLywgLy8gYWNjZXB0IGVycm9ycyByZWxhdGVkIHRvIGZpbGVzIHRoYXQgYXJlIG5vdCB0aGVyZSB3aGVuIHJ1bm5pbmcgZnJvbSBzb3VyY2UgdG8gcHJldmVudCBmYWxzZSBwb3NpdGl2ZXNcblx0XCIvcmVzb3VyY2VzL3NhcC9mZS9tYWNyb3MvbWFuaWZlc3QuanNvblwiIC8vIHNlZSBhYm92ZVxuXS5tYXAod3JhcFBhdHRlcm5zKTtcblxuY2xhc3MgQ29uc29sZUVycm9yQ2hlY2tlciB7XG5cdHByaXZhdGUgbWF0Y2hlcnM6IE1lc3NhZ2VNYXRjaGVyRnVuY3Rpb25bXSA9IFtdO1xuXG5cdHByaXZhdGUgbWVzc2FnZXM6IHN0cmluZ1tdID0gW107XG5cblx0cHJpdmF0ZSByZWFkb25seSBrYXJtYTogS2FybWEgfCB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSByZWFkb25seSBpc1N0cmljdDogYm9vbGVhbjtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuXHRcdGNvbnN0IG9wYUZyYW1lID0gbXV0YXRpb25zLnJlZHVjZSgoaUZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCB8IG51bGwsIG11dGF0aW9uOiBNdXRhdGlvblJlY29yZCkgPT4ge1xuXHRcdFx0aWYgKGlGcmFtZSAhPT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4gaUZyYW1lO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IG5vZGUgb2YgQXJyYXkuZnJvbShtdXRhdGlvbi5hZGRlZE5vZGVzKSkge1xuXHRcdFx0XHRpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcblx0XHRcdFx0XHRjb25zdCBlbGVtZW50ID0gbm9kZS5xdWVyeVNlbGVjdG9yKFwiI09wYUZyYW1lXCIpO1xuXHRcdFx0XHRcdGlmIChlbGVtZW50IGluc3RhbmNlb2YgSFRNTElGcmFtZUVsZW1lbnQgJiYgZWxlbWVudC5jb250ZW50V2luZG93KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbWVudDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGlGcmFtZTtcblx0XHR9LCBudWxsKTtcblxuXHRcdGlmIChvcGFGcmFtZSAmJiBvcGFGcmFtZS5jb250ZW50V2luZG93KSB7XG5cdFx0XHR0aGlzLnByZXBhcmVXaW5kb3cob3BhRnJhbWUuY29udGVudFdpbmRvdyk7XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdHJ1Y3Rvcih3aW5kb3c6IFdpbmRvdyAmIHsgX19rYXJtYV9fPzogS2FybWEgfSkge1xuXHRcdFFVbml0Lm1vZHVsZVN0YXJ0KCgpID0+IHtcblx0XHRcdHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh3aW5kb3cuZG9jdW1lbnQuYm9keSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG5cdFx0fSk7XG5cblx0XHRRVW5pdC5tb2R1bGVEb25lKCgpID0+IHtcblx0XHRcdHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXHRcdH0pO1xuXG5cdFx0UVVuaXQudGVzdFN0YXJ0KCgpID0+IHtcblx0XHRcdHRoaXMucmVzZXQoKTtcblx0XHR9KTtcblxuXHRcdFFVbml0LmxvZygoKSA9PiB7XG5cdFx0XHR0aGlzLmhhbmRsZUZhaWxlZE1lc3NhZ2VzKCk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmthcm1hID0gd2luZG93Ll9fa2FybWFfXztcblxuXHRcdC8vIGVpdGhlciBnbyBmb3IgS2FybWEgY29uZmlnIG9wdGlvbiBcInVpNS5jb25maWcuc3RyaWN0Q29uc29sZUVycm9yc1wiIG9yIHVzZSBVUkwgcXVlcnkgcGFyYW1ldGVyIFwic3RyaWN0XCJcblx0XHRjb25zdCBzZWFyY2ggPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuXHRcdGNvbnN0IHVybFBhcmFtID0gc2VhcmNoLmdldChcInN0cmljdENvbnNvbGVFcnJvcnNcIik7XG5cdFx0aWYgKHVybFBhcmFtICE9PSBudWxsKSB7XG5cdFx0XHR0aGlzLmlzU3RyaWN0ID0gdXJsUGFyYW0gPT09IFwidHJ1ZVwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmlzU3RyaWN0ID0gdGhpcy5rYXJtYT8uY29uZmlnLnVpNT8uY29uZmlnLnN0cmljdGNvbnNvbGVlcnJvcnMgPz8gZmFsc2U7XG5cdFx0fVxuXG5cdFx0dGhpcy5yZXNldCgpO1xuXHR9XG5cblx0cHJpdmF0ZSBoYW5kbGVGYWlsZWRNZXNzYWdlcygpIHtcblx0XHRjb25zdCBmYWlsZWRNZXNzYWdlcyA9IHRoaXMubWVzc2FnZXM7XG5cdFx0dGhpcy5tZXNzYWdlcyA9IFtdO1xuXG5cdFx0aWYgKGZhaWxlZE1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFFVbml0LmFzc2VydC5wdXNoUmVzdWx0KHtcblx0XHRcdFx0cmVzdWx0OiBmYWxzZSxcblx0XHRcdFx0c291cmNlOiBcIkZFIENvbnNvbGUgTG9nIENoZWNrXCIsXG5cdFx0XHRcdG1lc3NhZ2U6IGBUaGVyZSB3ZXJlICR7ZmFpbGVkTWVzc2FnZXMubGVuZ3RofSB1bmV4cGVjdGVkIGNvbnNvbGUgZXJyb3JzYCxcblx0XHRcdFx0YWN0dWFsOiBmYWlsZWRNZXNzYWdlcyxcblx0XHRcdFx0ZXhwZWN0ZWQ6IFtdXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc2V0KCkge1xuXHRcdHRoaXMubWVzc2FnZXMgPSBbXTtcblxuXHRcdC8vIHRoaXMgc2V0cyB0aGUgZGVmYXVsdCB0byBhcHBseSBpZiBubyBhbGxvd2VkIHBhdHRlcm5zIGFyZSBzZXQgdmlhIHNldEFjY2VwdGVkRXJyb3JQYXR0ZXJucygpLlxuXHRcdGlmICh0aGlzLmlzU3RyaWN0KSB7XG5cdFx0XHR0aGlzLm1hdGNoZXJzID0gR0xPQkFMTFlfQUNDRVBURURfRVJST1JTO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1hdGNoZXJzID0gWygpID0+IHRydWVdO1xuXHRcdH1cblx0fVxuXG5cdHNldEFjY2VwdGVkRXJyb3JQYXR0ZXJucyhwYXR0ZXJucz86IChSZWdFeHAgfCBzdHJpbmcpW10pIHtcblx0XHRpZiAoIXBhdHRlcm5zIHx8IHBhdHRlcm5zLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhpcy5tYXRjaGVycyA9IEdMT0JBTExZX0FDQ0VQVEVEX0VSUk9SUztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5tYXRjaGVycyA9IHBhdHRlcm5zLm1hcCh3cmFwUGF0dGVybnMpLmNvbmNhdChHTE9CQUxMWV9BQ0NFUFRFRF9FUlJPUlMpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY2hlY2tBbmRMb2codHlwZTogYW55LCAuLi5kYXRhOiBhbnlbXSkge1xuXHRcdC8vIG9ubHkgY2hlY2sgdGhlIGVycm9yIG1lc3NhZ2VzXG5cdFx0aWYgKHR5cGUgPT09IFwiZXJyb3JcIikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZVRleHQgPSBkYXRhWzBdO1xuXHRcdFx0Y29uc3QgaXNBbGxvd2VkID0gdGhpcy5tYXRjaGVycy5zb21lKChtYXRjaGVyKSA9PiBtYXRjaGVyKG1lc3NhZ2VUZXh0KSk7XG5cdFx0XHRpZiAoIWlzQWxsb3dlZCkge1xuXHRcdFx0XHR0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZVRleHQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLmthcm1hKSB7XG5cdFx0XHQvLyB3cmFwIHRoZSBkYXRhIHRvIGZhY2lsaXRhdGUgcGFyc2luZyBpbiB0aGUgYmFja2VuZFxuXHRcdFx0Y29uc3Qgd3JhcHBlZERhdGEgPSBkYXRhLm1hcCgoZCkgPT4gW2RdKTtcblx0XHRcdHRoaXMua2FybWEubG9nKHR5cGUsIHdyYXBwZWREYXRhKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHByZXBhcmVXaW5kb3cod2luZG93OiBXaW5kb3cpIHtcblx0XHRjb25zdCBjb25zb2xlOiBDb25zb2xlID0gKHdpbmRvdyBhcyBhbnkpLmNvbnNvbGU7XG5cblx0XHQvLyBjYXB0dXJlIGNvbnNvbGUubG9nKCksIGNvbnNvbGUuZGVidWcoKSwgZXRjLlxuXHRcdGNvbnN0IHBhdGNoQ29uc29sZU1ldGhvZCA9IChtZXRob2Q6IFwibG9nXCIgfCBcImluZm9cIiB8IFwid2FyblwiIHwgXCJlcnJvclwiIHwgXCJkZWJ1Z1wiKSA9PiB7XG5cdFx0XHRjb25zdCBmbk9yaWdpbmFsID0gY29uc29sZVttZXRob2RdO1xuXHRcdFx0Y29uc29sZVttZXRob2RdID0gKC4uLmRhdGE6IGFueVtdKTogdm9pZCA9PiB7XG5cdFx0XHRcdHRoaXMuY2hlY2tBbmRMb2cobWV0aG9kLCAuLi5kYXRhKTtcblx0XHRcdFx0cmV0dXJuIGZuT3JpZ2luYWwuYXBwbHkoY29uc29sZSwgZGF0YSk7XG5cdFx0XHR9O1xuXHRcdH07XG5cblx0XHRwYXRjaENvbnNvbGVNZXRob2QoXCJsb2dcIik7XG5cdFx0cGF0Y2hDb25zb2xlTWV0aG9kKFwiZGVidWdcIik7XG5cdFx0cGF0Y2hDb25zb2xlTWV0aG9kKFwiaW5mb1wiKTtcblx0XHRwYXRjaENvbnNvbGVNZXRob2QoXCJ3YXJuXCIpO1xuXHRcdHBhdGNoQ29uc29sZU1ldGhvZChcImVycm9yXCIpO1xuXG5cdFx0Ly8gY2FwdHVyZSBjb25zb2xlLmFzc2VydCgpXG5cdFx0Ly8gc2VlIGh0dHBzOi8vY29uc29sZS5zcGVjLndoYXR3Zy5vcmcvI2Fzc2VydFxuXHRcdGNvbnNvbGUuYXNzZXJ0ID0gZnVuY3Rpb24gKGNvbmRpdGlvbiA9IGZhbHNlLCAuLi5kYXRhOiBhbnlbXSkge1xuXHRcdFx0aWYgKGNvbmRpdGlvbikge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBcIkFzc2VydGlvbiBmYWlsZWRcIjtcblx0XHRcdGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRkYXRhLnB1c2gobWVzc2FnZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsZXQgZmlyc3QgPSBkYXRhWzBdO1xuXHRcdFx0XHRpZiAodHlwZW9mIGZpcnN0ICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0ZGF0YS51bnNoaWZ0KG1lc3NhZ2UpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGZpcnN0ID0gYCR7bWVzc2FnZX06ICR7Zmlyc3R9YDtcblx0XHRcdFx0XHRkYXRhWzBdID0gZmlyc3Q7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Y29uc29sZS5lcnJvciguLi5kYXRhKTtcblx0XHR9O1xuXG5cdFx0Ly8gY2FwdHVyZSBlcnJvcnNcblx0XHRmdW5jdGlvbiBvblByb21pc2VSZWplY3Rpb24odGhpczogQ29uc29sZUVycm9yQ2hlY2tlciwgZXZlbnQ6IFByb21pc2VSZWplY3Rpb25FdmVudCkge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGBVTkhBTkRMRUQgUFJPTUlTRSBSRUpFQ1RJT046ICR7ZXZlbnQucmVhc29ufWA7XG5cdFx0XHR0aGlzLmNoZWNrQW5kTG9nKFwiZXJyb3JcIiwgbWVzc2FnZSwgZXZlbnQucmVhc29uPy5zdGFjayk7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gb25FcnJvcih0aGlzOiBDb25zb2xlRXJyb3JDaGVja2VyLCBldmVudDogRXJyb3JFdmVudCkge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGV2ZW50Lm1lc3NhZ2U7XG5cdFx0XHR0aGlzLmNoZWNrQW5kTG9nKFwiZXJyb3JcIiwgbWVzc2FnZSwgZXZlbnQuZmlsZW5hbWUpO1xuXHRcdH1cblxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgb25FcnJvci5iaW5kKHRoaXMpLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmhhbmRsZWRyZWplY3Rpb25cIiwgb25Qcm9taXNlUmVqZWN0aW9uLmJpbmQodGhpcyksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcblx0fVxuXG5cdHN0YXRpYyBnZXRJbnN0YW5jZSh3aW5kb3c6IFdpbmRvdyAmIHsgc2FwRkVDb25zb2xlRXJyb3JDaGVja2VyPzogQ29uc29sZUVycm9yQ2hlY2tlciB9KTogQ29uc29sZUVycm9yQ2hlY2tlciB7XG5cdFx0Ly8gdGhlIGdsb2JhbCBpbnN0YW5jZSBpcyBuZWVkZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSB0ZXN0cyBpbiBhIHJvdyAoaW4gS2FybWEpXG5cdFx0aWYgKCF3aW5kb3cuc2FwRkVDb25zb2xlRXJyb3JDaGVja2VyKSB7XG5cdFx0XHR3aW5kb3cuc2FwRkVDb25zb2xlRXJyb3JDaGVja2VyID0gbmV3IENvbnNvbGVFcnJvckNoZWNrZXIod2luZG93KTtcblx0XHR9XG5cdFx0cmV0dXJuIHdpbmRvdy5zYXBGRUNvbnNvbGVFcnJvckNoZWNrZXI7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29uc29sZUVycm9yQ2hlY2tlci5nZXRJbnN0YW5jZSh3aW5kb3cpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBWUEsU0FBU0EsWUFBWUEsQ0FBQ0MsT0FBd0IsRUFBMEI7SUFDdkUsSUFBSUEsT0FBTyxZQUFZQyxNQUFNLEVBQUU7TUFDOUIsT0FBUUMsT0FBTyxJQUFLQSxPQUFPLENBQUNDLEtBQUssQ0FBQ0gsT0FBTyxDQUFDLEtBQUssSUFBSTtJQUNwRCxDQUFDLE1BQU07TUFDTixPQUFRRSxPQUFPLElBQUtBLE9BQU8sQ0FBQ0UsUUFBUSxDQUFDSixPQUFPLENBQUM7SUFDOUM7RUFDRDs7RUFFQTtBQUNBO0FBQ0E7RUFDQSxNQUFNSyx3QkFBd0IsR0FBRyxDQUNoQyw0QkFBNEI7RUFBRTtFQUM5Qix3Q0FBd0MsQ0FBQztFQUFBLENBQ3pDLENBQUNDLEdBQUcsQ0FBQ1AsWUFBWSxDQUFDO0VBQUMsSUFFZFEsbUJB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S0FBSyxHQUFHLEdBQUd6RixPQUFPLEtBQUt5RixLQUFLLEVBQUU7WUFDOUJyQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUdxQixLQUFLO1VBQ2hCO1FBQ0Q7UUFFQVgsT0FBTyxDQUFDYSxLQUFLLENBQUMsR0FBR3ZCLElBQUksQ0FBQztNQUN2QixDQUFDOztNQUVEO01BQ0EsU0FBU3dCLGtCQUFrQkEsQ0FBNEJDLEtBQTRCLEVBQUU7UUFBQSxJQUFBQyxhQUFBO1FBQ3BGLE1BQU05RixPQUFPLEdBQUcsZ0NBQWdDNkYsS0FBSyxDQUFDRSxNQUFNLEVBQUU7UUFDOUQsSUFBSSxDQUFDL0IsV0FBVyxDQUFDLE9BQU8sRUFBRWhFLE9BQU8sR0FBQThGLGFBQUEsR0FBRUQsS0FBSyxDQUFDRSxNQUFNLGNBQUFELGFBQUEsdUJBQVpBLGFBQUEsQ0FBY0UsS0FBSyxDQUFDO01BQ3hEO01BRUEsU0FBU0MsT0FBT0EsQ0FBNEJKLEtBQWlCLEVBQUU7UUFDOUQsTUFBTTdGLE9BQU8sR0FBRzZGLEtBQUssQ0FBQzdGLE9BQU87UUFDN0IsSUFBSSxDQUFDZ0UsV0FBVyxDQUFDLE9BQU8sRUFBRWhFLE9BQU8sRUFBRTZGLEtBQUssQ0FBQ0ssUUFBUSxDQUFDO01BQ25EO01BRUE1RixNQUFNLENBQUM2RixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVGLE9BQU8sQ0FBQ0csSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQUVDLE9BQU8sRUFBRTtNQUFLLENBQUMsQ0FBQztNQUN2RS9GLE1BQU0sQ0FBQzZGLGdCQUFnQixDQUFDLG9CQUFvQixFQUFFUCxrQkFBa0IsQ0FBQ1EsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQUVDLE9BQU8sRUFBRTtNQUFLLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBQUFoRyxtQkFBQSxDQUVNaUcsV0FBVyxHQUFsQixTQUFBQSxZQUFtQmhHLE1BQW1FLEVBQXVCO01BQzVHO01BQ0EsSUFBSSxDQUFDQSxNQUFNLENBQUNpRyx3QkFBd0IsRUFBRTtRQUNyQ2pHLE1BQU0sQ0FBQ2lHLHdCQUF3QixHQUFHLElBQUlsRyxtQkFBbUIsQ0FBQ0MsTUFBTSxDQUFDO01BQ2xFO01BQ0EsT0FBT0EsTUFBTSxDQUFDaUcsd0JBQXdCO0lBQ3ZDLENBQUM7SUFBQSxPQUFBbEcsbUJBQUE7RUFBQTtFQUFBLE9BR2FBLG1CQUFtQixDQUFDaUcsV0FBVyxDQUFDaEcsTUFBTSxDQUFDO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -71,7 +71,6 @@ sap.ui.define(
71
71
 
72
72
  /**
73
73
  * Fail the test if there are errors logged to the browser console.
74
- *
75
74
  * @param {Array<RegExp|string>} [aErrors] The allowed error messages. Either use regular expressions or strings. Pass undefined or an empty array to reject all error messages.
76
75
  * @returns {*} The OPA promise
77
76
  */
@@ -7,7 +7,6 @@ sap.ui.define(["sap/ui/core/Lib", "sap/ui/core/library"], function (Library, _li
7
7
 
8
8
  /**
9
9
  * Test library for SAP Fiori elements
10
- *
11
10
  * @namespace
12
11
  * @name sap.fe.test
13
12
  * @public
@@ -22,9 +21,9 @@ sap.ui.define(["sap/ui/core/Lib", "sap/ui/core/library"], function (Library, _li
22
21
  controls: [],
23
22
  elements: [],
24
23
  // eslint-disable-next-line no-template-curly-in-string
25
- version: "1.127.2",
24
+ version: "1.129.0",
26
25
  noLibraryCSS: true
27
26
  });
28
27
  return thisLib;
29
28
  }, false);
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0aGlzTGliIiwiTGlicmFyeSIsImluaXQiLCJuYW1lIiwiZGVwZW5kZW5jaWVzIiwidHlwZXMiLCJpbnRlcmZhY2VzIiwiY29udHJvbHMiLCJlbGVtZW50cyIsInZlcnNpb24iLCJub0xpYnJhcnlDU1MiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbImxpYnJhcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuXG4vKipcbiAqIFRlc3QgbGlicmFyeSBmb3IgU0FQIEZpb3JpIGVsZW1lbnRzXG4gKlxuICogQG5hbWVzcGFjZVxuICogQG5hbWUgc2FwLmZlLnRlc3RcbiAqIEBwdWJsaWNcbiAqL1xuXG4vLyBsaWJyYXJ5IGRlcGVuZGVuY2llc1xuY29uc3QgdGhpc0xpYiA9IExpYnJhcnkuaW5pdCh7XG5cdG5hbWU6IFwic2FwLmZlLnRlc3RcIixcblx0ZGVwZW5kZW5jaWVzOiBbXCJzYXAudWkuY29yZVwiXSxcblx0dHlwZXM6IFtdLFxuXHRpbnRlcmZhY2VzOiBbXSxcblx0Y29udHJvbHM6IFtdLFxuXHRlbGVtZW50czogW10sXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmdcblx0dmVyc2lvbjogXCIke3ZlcnNpb259XCIsXG5cdG5vTGlicmFyeUNTUzogdHJ1ZVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHRoaXNMaWI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7RUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFFQTtFQUNBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDQyxJQUFJLENBQUM7SUFDNUJDLElBQUksRUFBRSxhQUFhO0lBQ25CQyxZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDN0JDLEtBQUssRUFBRSxFQUFFO0lBQ1RDLFVBQVUsRUFBRSxFQUFFO0lBQ2RDLFFBQVEsRUFBRSxFQUFFO0lBQ1pDLFFBQVEsRUFBRSxFQUFFO0lBQ1o7SUFDQUMsT0FBTyxFQUFFLFlBQVk7SUFDckJDLFlBQVksRUFBRTtFQUNmLENBQUMsQ0FBQztFQUFDLE9BRVlWLE9BQU87QUFBQSJ9
29
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0aGlzTGliIiwiTGlicmFyeSIsImluaXQiLCJuYW1lIiwiZGVwZW5kZW5jaWVzIiwidHlwZXMiLCJpbnRlcmZhY2VzIiwiY29udHJvbHMiLCJlbGVtZW50cyIsInZlcnNpb24iLCJub0xpYnJhcnlDU1MiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbImxpYnJhcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuXG4vKipcbiAqIFRlc3QgbGlicmFyeSBmb3IgU0FQIEZpb3JpIGVsZW1lbnRzXG4gKiBAbmFtZXNwYWNlXG4gKiBAbmFtZSBzYXAuZmUudGVzdFxuICogQHB1YmxpY1xuICovXG5cbi8vIGxpYnJhcnkgZGVwZW5kZW5jaWVzXG5jb25zdCB0aGlzTGliID0gTGlicmFyeS5pbml0KHtcblx0bmFtZTogXCJzYXAuZmUudGVzdFwiLFxuXHRkZXBlbmRlbmNpZXM6IFtcInNhcC51aS5jb3JlXCJdLFxuXHR0eXBlczogW10sXG5cdGludGVyZmFjZXM6IFtdLFxuXHRjb250cm9sczogW10sXG5cdGVsZW1lbnRzOiBbXSxcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZ1xuXHR2ZXJzaW9uOiBcIiR7dmVyc2lvbn1cIixcblx0bm9MaWJyYXJ5Q1NTOiB0cnVlXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdGhpc0xpYjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztFQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFFQTtFQUNBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDQyxJQUFJLENBQUM7SUFDNUJDLElBQUksRUFBRSxhQUFhO0lBQ25CQyxZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDN0JDLEtBQUssRUFBRSxFQUFFO0lBQ1RDLFVBQVUsRUFBRSxFQUFFO0lBQ2RDLFFBQVEsRUFBRSxFQUFFO0lBQ1pDLFFBQVEsRUFBRSxFQUFFO0lBQ1o7SUFDQUMsT0FBTyxFQUFFLFlBQVk7SUFDckJDLFlBQVksRUFBRTtFQUNmLENBQUMsQ0FBQztFQUFDLE9BRVlWLE9BQU87QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -3,7 +3,6 @@ import "sap/ui/core/library";
3
3
 
4
4
  /**
5
5
  * Test library for SAP Fiori elements
6
- *
7
6
  * @namespace
8
7
  * @name sap.fe.test
9
8
  * @public