@sapui5/sap.fe.test 1.97.0 → 1.100.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.
- package/package.json +6 -2
- package/src/sap/fe/test/.library +1 -1
- package/src/sap/fe/test/BaseActions.js +3 -2
- package/src/sap/fe/test/BaseArrangements.js +3 -2
- package/src/sap/fe/test/BaseAssertions.js +3 -2
- package/src/sap/fe/test/ConfirmDialog.js +3 -2
- package/src/sap/fe/test/FCLView.js +3 -2
- package/src/sap/fe/test/FeMocks.js +66 -0
- package/src/sap/fe/test/FeMocks.ts +77 -0
- package/src/sap/fe/test/Flexibility.js +3 -2
- package/src/sap/fe/test/FlexibleColumnLayout.js +3 -2
- package/src/sap/fe/test/JestTemplatingHelper.js +83 -25
- package/src/sap/fe/test/JestTemplatingHelper.ts +74 -26
- package/src/sap/fe/test/JourneyRunner.js +11 -5
- package/src/sap/fe/test/ListReport.js +11 -5
- package/src/sap/fe/test/LocationUtil.js +3 -2
- package/src/sap/fe/test/ObjectPage.js +28 -17
- package/src/sap/fe/test/Shell.js +3 -2
- package/src/sap/fe/test/Stubs.js +3 -2
- package/src/sap/fe/test/TemplatePage.js +3 -2
- package/src/sap/fe/test/TemplatingTestUtils.js +4 -3
- package/src/sap/fe/test/UI5MockHelper.js +249 -137
- package/src/sap/fe/test/UI5MockHelper.ts +143 -13
- package/src/sap/fe/test/Utils.js +3 -14
- package/src/sap/fe/test/api/APIHelper.js +3 -2
- package/src/sap/fe/test/api/BaseAPI.js +5 -9
- package/src/sap/fe/test/api/ChartActions.js +3 -2
- package/src/sap/fe/test/api/ChartAssertions.js +7 -6
- package/src/sap/fe/test/api/DialogAPI.js +17 -4
- package/src/sap/fe/test/api/DialogActions.js +3 -2
- package/src/sap/fe/test/api/DialogAssertions.js +3 -2
- package/src/sap/fe/test/api/DialogCreateActions.js +4 -3
- package/src/sap/fe/test/api/DialogCreateAssertions.js +4 -3
- package/src/sap/fe/test/api/DialogMessageActions.js +19 -3
- package/src/sap/fe/test/api/DialogMessageAssertions.js +4 -3
- package/src/sap/fe/test/api/DialogType.js +3 -2
- package/src/sap/fe/test/api/DialogValueHelpActions.js +4 -3
- package/src/sap/fe/test/api/DialogValueHelpAssertions.js +4 -3
- package/src/sap/fe/test/api/EditState.js +3 -2
- package/src/sap/fe/test/api/FilterBarAPI.js +12 -3
- package/src/sap/fe/test/api/FilterBarActions.js +3 -2
- package/src/sap/fe/test/api/FilterBarAssertions.js +3 -2
- package/src/sap/fe/test/api/FooterAPI.js +3 -2
- package/src/sap/fe/test/api/FooterActionsBase.js +3 -2
- package/src/sap/fe/test/api/FooterActionsOP.js +3 -2
- package/src/sap/fe/test/api/FooterAssertionsBase.js +3 -2
- package/src/sap/fe/test/api/FooterAssertionsOP.js +3 -2
- package/src/sap/fe/test/api/FormAPI.js +3 -2
- package/src/sap/fe/test/api/FormActions.js +3 -2
- package/src/sap/fe/test/api/FormAssertions.js +3 -2
- package/src/sap/fe/test/api/HeaderAPI.js +3 -2
- package/src/sap/fe/test/api/HeaderActions.js +3 -2
- package/src/sap/fe/test/api/HeaderActionsLR.js +3 -2
- package/src/sap/fe/test/api/HeaderAssertions.js +3 -2
- package/src/sap/fe/test/api/HeaderAssertionsLR.js +3 -2
- package/src/sap/fe/test/api/HeaderLR.js +3 -2
- package/src/sap/fe/test/api/KPICardAPI.js +3 -2
- package/src/sap/fe/test/api/KPICardActions.js +43 -0
- package/src/sap/fe/test/api/KPICardAssertions.js +22 -17
- package/src/sap/fe/test/api/TableAPI.js +3 -2
- package/src/sap/fe/test/api/TableActions.js +3 -21
- package/src/sap/fe/test/api/TableAssertions.js +17 -6
- package/src/sap/fe/test/builder/DialogBuilder.js +3 -2
- package/src/sap/fe/test/builder/FEBuilder.js +3 -2
- package/src/sap/fe/test/builder/KPIBuilder.js +14 -4
- package/src/sap/fe/test/builder/MacroFieldBuilder.js +3 -2
- package/src/sap/fe/test/builder/MdcFieldBuilder.js +3 -2
- package/src/sap/fe/test/builder/MdcFilterBarBuilder.js +3 -2
- package/src/sap/fe/test/builder/MdcFilterFieldBuilder.js +3 -2
- package/src/sap/fe/test/builder/MdcTableBuilder.js +29 -2
- package/src/sap/fe/test/builder/OverflowToolbarBuilder.js +3 -2
- package/src/sap/fe/test/builder/VMBuilder.js +3 -2
- package/src/sap/fe/test/internal/FEArrangements.js +3 -2
- package/src/sap/fe/test/internal/FEJourneyRunner.js +9 -5
- package/src/sap/fe/test/library.js +4 -3
- package/src/sap/fe/test/massEdit.js +3 -2
- package/ui5.yaml +0 -3
|
@@ -7,104 +7,157 @@ sap.ui.define([], function () {
|
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
9
|
|
|
10
|
-
function
|
|
10
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
11
11
|
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
15
|
-
|
|
16
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
17
13
|
|
|
18
14
|
/**
|
|
19
15
|
* Mock class for a V4 Context
|
|
20
16
|
*/
|
|
21
|
-
var MockContext = function
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
_classCallCheck(this, MockContext);
|
|
17
|
+
var MockContext = /*#__PURE__*/function () {
|
|
18
|
+
function MockContext(oValues, oBinding) {
|
|
19
|
+
var _this = this;
|
|
25
20
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
this.getProperty = jest.fn(function (key) {
|
|
22
|
+
return _this.oValues[key];
|
|
23
|
+
});
|
|
24
|
+
this.requestProperty = jest.fn(function (key) {
|
|
25
|
+
return Promise.resolve(_this.oValues[key]);
|
|
26
|
+
});
|
|
27
|
+
this.setProperty = jest.fn(function (key, value) {
|
|
28
|
+
_this.oValues[key] = value;
|
|
29
|
+
return _this.oValues[key];
|
|
30
|
+
});
|
|
31
|
+
this.getObject = jest.fn(function (path) {
|
|
32
|
+
var that = _this;
|
|
33
|
+
var result = path ? that.oValues[path] : that.oValues;
|
|
34
|
+
|
|
35
|
+
if (!result && path && path.indexOf("/") > -1) {
|
|
36
|
+
var parts = path.split("/");
|
|
37
|
+
result = parts.reduce(function (sum, part) {
|
|
38
|
+
sum = part ? sum[part] : sum;
|
|
39
|
+
return sum;
|
|
40
|
+
}, that.oValues);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return result;
|
|
44
|
+
});
|
|
45
|
+
this.getPath = jest.fn(function () {
|
|
46
|
+
return _this.oValues["$path"];
|
|
47
|
+
});
|
|
48
|
+
this.getBinding = jest.fn(function () {
|
|
49
|
+
return _this.oBinding;
|
|
50
|
+
});
|
|
51
|
+
this.getModel = jest.fn(function () {
|
|
52
|
+
var _this$oBinding;
|
|
29
53
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
54
|
+
return (_this$oBinding = _this.oBinding) === null || _this$oBinding === void 0 ? void 0 : _this$oBinding.getModel();
|
|
55
|
+
});
|
|
56
|
+
this.isTransient = jest.fn();
|
|
57
|
+
this.oValues = oValues;
|
|
58
|
+
this.oBinding = oBinding;
|
|
59
|
+
}
|
|
34
60
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}));
|
|
61
|
+
_exports.MockContext = MockContext;
|
|
62
|
+
var _proto = MockContext.prototype;
|
|
38
63
|
|
|
39
|
-
|
|
40
|
-
return
|
|
41
|
-
}
|
|
64
|
+
_proto.isA = function isA(sClassName) {
|
|
65
|
+
return sClassName === "sap.ui.model.odata.v4.Context";
|
|
66
|
+
};
|
|
42
67
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}));
|
|
68
|
+
return MockContext;
|
|
69
|
+
}();
|
|
46
70
|
|
|
47
|
-
|
|
71
|
+
_exports.MockContext = MockContext;
|
|
48
72
|
|
|
49
|
-
|
|
50
|
-
this.
|
|
73
|
+
var MockUI5Element = function MockUI5Element() {
|
|
74
|
+
this.bindingContext = new MockContext({});
|
|
75
|
+
this.getBinding = jest.fn();
|
|
76
|
+
this.getBindingContext = jest.fn().mockReturnValue(this.bindingContext);
|
|
77
|
+
this.getBindingInfo = jest.fn();
|
|
78
|
+
this.data = jest.fn();
|
|
79
|
+
this.getModel = jest.fn();
|
|
80
|
+
this.getParent = jest.fn();
|
|
51
81
|
};
|
|
52
82
|
|
|
53
|
-
_exports.
|
|
83
|
+
_exports.MockUI5Element = MockUI5Element;
|
|
54
84
|
|
|
55
|
-
var MockControl = function
|
|
56
|
-
|
|
85
|
+
var MockControl = /*#__PURE__*/function (_MockUI5Element) {
|
|
86
|
+
_inherits(MockControl, _MockUI5Element);
|
|
57
87
|
|
|
58
|
-
|
|
88
|
+
function MockControl() {
|
|
89
|
+
var _this2;
|
|
59
90
|
|
|
60
|
-
|
|
91
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
92
|
+
args[_key] = arguments[_key];
|
|
93
|
+
}
|
|
61
94
|
|
|
62
|
-
|
|
95
|
+
_this2 = _MockUI5Element.call.apply(_MockUI5Element, [this].concat(args)) || this;
|
|
96
|
+
_this2.getBindingContext = jest.fn();
|
|
97
|
+
return _this2;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
_exports.MockControl = MockControl;
|
|
101
|
+
return MockControl;
|
|
102
|
+
}(MockUI5Element);
|
|
103
|
+
|
|
104
|
+
_exports.MockControl = MockControl;
|
|
63
105
|
|
|
64
|
-
|
|
106
|
+
var MockEvent = function MockEvent() {
|
|
107
|
+
var _this3 = this;
|
|
108
|
+
|
|
109
|
+
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
110
|
+
var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new MockUI5Element();
|
|
111
|
+
this.getParameter = jest.fn(function (name) {
|
|
112
|
+
return _this3.params[name];
|
|
113
|
+
});
|
|
114
|
+
this.getSource = jest.fn(function () {
|
|
115
|
+
return _this3.source;
|
|
116
|
+
});
|
|
117
|
+
this.params = params;
|
|
118
|
+
this.source = source;
|
|
65
119
|
};
|
|
66
120
|
/**
|
|
67
121
|
* Mock class for OData V4 ListBinding
|
|
68
122
|
*/
|
|
69
123
|
|
|
70
124
|
|
|
71
|
-
_exports.
|
|
125
|
+
_exports.MockEvent = MockEvent;
|
|
72
126
|
|
|
73
127
|
var MockListBinding = /*#__PURE__*/function () {
|
|
74
|
-
function MockListBinding(aContexts) {
|
|
75
|
-
var
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return _this2.aMockContexts;
|
|
91
|
-
}));
|
|
92
|
-
|
|
128
|
+
function MockListBinding(aContexts, mockModel) {
|
|
129
|
+
var _this4 = this;
|
|
130
|
+
|
|
131
|
+
this.setAggregation = jest.fn();
|
|
132
|
+
this.filter = jest.fn();
|
|
133
|
+
this.sort = jest.fn();
|
|
134
|
+
this.requestContexts = jest.fn(function () {
|
|
135
|
+
return Promise.resolve(_this4.aMockContexts);
|
|
136
|
+
});
|
|
137
|
+
this.getCurrentContexts = jest.fn(function () {
|
|
138
|
+
return _this4.aMockContexts;
|
|
139
|
+
});
|
|
140
|
+
this.getModel = jest.fn(function () {
|
|
141
|
+
return _this4.mockModel;
|
|
142
|
+
});
|
|
143
|
+
this.mockModel = mockModel;
|
|
93
144
|
aContexts = aContexts || [];
|
|
94
145
|
this.aMockContexts = aContexts.map(function (context) {
|
|
95
|
-
return new MockContext(context,
|
|
146
|
+
return new MockContext(context, _this4);
|
|
96
147
|
});
|
|
97
148
|
}
|
|
98
149
|
|
|
99
150
|
_exports.MockListBinding = MockListBinding;
|
|
151
|
+
var _proto2 = MockListBinding.prototype;
|
|
100
152
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return sClassName === "sap.ui.model.odata.v4.ODataListBinding";
|
|
105
|
-
} // Mocked API
|
|
153
|
+
_proto2.isA = function isA(sClassName) {
|
|
154
|
+
return sClassName === "sap.ui.model.odata.v4.ODataListBinding";
|
|
155
|
+
};
|
|
106
156
|
|
|
107
|
-
|
|
157
|
+
_proto2.setModel = function setModel(oModel) {
|
|
158
|
+
this.mockModel = oModel;
|
|
159
|
+
} // Mocked API
|
|
160
|
+
;
|
|
108
161
|
|
|
109
162
|
return MockListBinding;
|
|
110
163
|
}();
|
|
@@ -112,34 +165,35 @@ sap.ui.define([], function () {
|
|
|
112
165
|
_exports.MockListBinding = MockListBinding;
|
|
113
166
|
|
|
114
167
|
var MockContextBinding = /*#__PURE__*/function () {
|
|
115
|
-
function MockContextBinding(oContext) {
|
|
116
|
-
var
|
|
117
|
-
|
|
118
|
-
_classCallCheck(this, MockContextBinding);
|
|
119
|
-
|
|
120
|
-
_defineProperty(this, "getBoundContext", jest.fn(function () {
|
|
121
|
-
return _this3.oMockContext;
|
|
122
|
-
}));
|
|
123
|
-
|
|
124
|
-
_defineProperty(this, "attachEventOnce", jest.fn());
|
|
168
|
+
function MockContextBinding(oContext, mockModel) {
|
|
169
|
+
var _this5 = this;
|
|
125
170
|
|
|
171
|
+
this.getBoundContext = jest.fn(function () {
|
|
172
|
+
return _this5.oMockContext;
|
|
173
|
+
});
|
|
174
|
+
this.attachEventOnce = jest.fn();
|
|
175
|
+
this.getModel = jest.fn(function () {
|
|
176
|
+
return _this5.mockModel;
|
|
177
|
+
});
|
|
178
|
+
this.mockModel = mockModel;
|
|
126
179
|
this.oMockContext = new MockContext(oContext || {}, this);
|
|
127
180
|
}
|
|
128
181
|
|
|
129
182
|
_exports.MockContextBinding = MockContextBinding;
|
|
183
|
+
var _proto3 = MockContextBinding.prototype;
|
|
130
184
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
value: function getInternalMockContext() {
|
|
139
|
-
return this.oMockContext;
|
|
140
|
-
} // Mocked API
|
|
185
|
+
_proto3.isA = function isA(sClassName) {
|
|
186
|
+
return sClassName === "sap.ui.model.odata.v4.ODataContextBinding";
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
_proto3.getInternalMockContext = function getInternalMockContext() {
|
|
190
|
+
return this.oMockContext;
|
|
191
|
+
};
|
|
141
192
|
|
|
142
|
-
|
|
193
|
+
_proto3.setModel = function setModel(oModel) {
|
|
194
|
+
this.mockModel = oModel;
|
|
195
|
+
} // Mocked API
|
|
196
|
+
;
|
|
143
197
|
|
|
144
198
|
return MockContextBinding;
|
|
145
199
|
}();
|
|
@@ -151,26 +205,26 @@ sap.ui.define([], function () {
|
|
|
151
205
|
_exports.MockContextBinding = MockContextBinding;
|
|
152
206
|
|
|
153
207
|
var MockMetaModel = function MockMetaModel(oMetaData) {
|
|
154
|
-
var
|
|
208
|
+
var _this6 = this;
|
|
155
209
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
_defineProperty(this, "getMetaContext", jest.fn(function (sPath) {
|
|
210
|
+
this.getMetaContext = jest.fn(function (sPath) {
|
|
159
211
|
return new MockContext({
|
|
160
212
|
$path: sPath
|
|
161
213
|
});
|
|
162
|
-
})
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
214
|
+
});
|
|
215
|
+
this.getObject = jest.fn(function (sPath) {
|
|
216
|
+
return _this6.oMetaContext.getProperty(sPath);
|
|
217
|
+
});
|
|
218
|
+
this.requestObject = jest.fn();
|
|
219
|
+
this.createBindingContext = jest.fn(function (sPath) {
|
|
220
|
+
return new MockContext({
|
|
221
|
+
$path: sPath
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
this.getMetaPath = jest.fn(function (sPath) {
|
|
225
|
+
return sPath;
|
|
226
|
+
});
|
|
227
|
+
this.getContext = jest.fn();
|
|
174
228
|
this.oMetaContext = new MockContext(oMetaData || {});
|
|
175
229
|
} // Mocked API
|
|
176
230
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -184,56 +238,114 @@ sap.ui.define([], function () {
|
|
|
184
238
|
|
|
185
239
|
var MockModel = /*#__PURE__*/function () {
|
|
186
240
|
function MockModel(mockListBinding, mockContextBinding) {
|
|
187
|
-
var
|
|
241
|
+
var _this7 = this;
|
|
188
242
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
243
|
+
this.bindList = jest.fn(function () {
|
|
244
|
+
return _this7.mockListBinding;
|
|
245
|
+
});
|
|
246
|
+
this.bindContext = jest.fn(function () {
|
|
247
|
+
return _this7.mockContextBinding;
|
|
248
|
+
});
|
|
249
|
+
this.getMetaModel = jest.fn(function () {
|
|
250
|
+
return _this7.oMetaModel;
|
|
251
|
+
});
|
|
252
|
+
this.getProperty = jest.fn();
|
|
253
|
+
this.setProperty = jest.fn();
|
|
254
|
+
this.requestObject = jest.fn();
|
|
255
|
+
this.mockListBinding = mockListBinding;
|
|
256
|
+
this.mockContextBinding = mockContextBinding;
|
|
194
257
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
258
|
+
if (mockListBinding) {
|
|
259
|
+
mockListBinding.setModel(this);
|
|
260
|
+
}
|
|
198
261
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
262
|
+
if (mockContextBinding) {
|
|
263
|
+
mockContextBinding.setModel(this);
|
|
264
|
+
}
|
|
265
|
+
} // Factories
|
|
202
266
|
|
|
203
|
-
_defineProperty(this, "getProperty", jest.fn());
|
|
204
267
|
|
|
205
|
-
|
|
268
|
+
_exports.MockModel = MockModel;
|
|
206
269
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
270
|
+
MockModel.modelFromListBinding = function modelFromListBinding(mockListBinding) {
|
|
271
|
+
return new MockModel(mockListBinding);
|
|
272
|
+
};
|
|
210
273
|
|
|
274
|
+
MockModel.modelFromContextBinding = function modelFromContextBinding(mockContextBinding) {
|
|
275
|
+
return new MockModel(undefined, mockContextBinding);
|
|
276
|
+
};
|
|
211
277
|
|
|
212
|
-
|
|
278
|
+
var _proto4 = MockModel.prototype;
|
|
213
279
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
220
|
-
|
|
221
|
-
}], [{
|
|
222
|
-
key: "modelFromListBinding",
|
|
223
|
-
value: function modelFromListBinding(mockListBinding) {
|
|
224
|
-
return new MockModel(mockListBinding);
|
|
225
|
-
}
|
|
226
|
-
}, {
|
|
227
|
-
key: "modelFromContextBinding",
|
|
228
|
-
value: function modelFromContextBinding(mockContextBinding) {
|
|
229
|
-
return new MockModel(undefined, mockContextBinding);
|
|
230
|
-
}
|
|
231
|
-
}]);
|
|
280
|
+
_proto4.setMetaModel = function setMetaModel(oMetaModel) {
|
|
281
|
+
this.oMetaModel = oMetaModel;
|
|
282
|
+
} // Mocked API
|
|
283
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
284
|
+
;
|
|
232
285
|
|
|
233
286
|
return MockModel;
|
|
234
287
|
}();
|
|
235
288
|
|
|
236
289
|
_exports.MockModel = MockModel;
|
|
290
|
+
|
|
291
|
+
var MockView = /*#__PURE__*/function () {
|
|
292
|
+
function MockView() {
|
|
293
|
+
this.getController = jest.fn();
|
|
294
|
+
this.getBindingContext = jest.fn();
|
|
295
|
+
this.getModel = jest.fn();
|
|
296
|
+
this.getViewData = jest.fn();
|
|
297
|
+
this.getId = jest.fn();
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
_exports.MockView = MockView;
|
|
301
|
+
var _proto5 = MockView.prototype;
|
|
302
|
+
|
|
303
|
+
_proto5.isA = function isA(sClassName) {
|
|
304
|
+
return sClassName === "sap.ui.core.mvc.View";
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
return MockView;
|
|
308
|
+
}();
|
|
309
|
+
|
|
310
|
+
_exports.MockView = MockView;
|
|
311
|
+
|
|
312
|
+
var MockController = function MockController() {
|
|
313
|
+
this.getView = jest.fn().mockReturnValue(new MockView());
|
|
314
|
+
this._routing = {
|
|
315
|
+
navigateToTarget: jest.fn()
|
|
316
|
+
};
|
|
317
|
+
this._editFlow = {
|
|
318
|
+
syncTask: jest.fn()
|
|
319
|
+
};
|
|
320
|
+
this._sideEffects = {
|
|
321
|
+
handleFieldChange: jest.fn()
|
|
322
|
+
};
|
|
323
|
+
this.isA = jest.fn().mockReturnValue(false);
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
_exports.MockController = MockController;
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Generate model, view and controller mocks that refer to each other.
|
|
330
|
+
*
|
|
331
|
+
* @param existing Optional existing mocked instances that should be used
|
|
332
|
+
* @returns Mocked model, view and controller instances
|
|
333
|
+
*/
|
|
334
|
+
function mockMVC(existing) {
|
|
335
|
+
var model = (existing === null || existing === void 0 ? void 0 : existing.model) || new MockModel();
|
|
336
|
+
var view = (existing === null || existing === void 0 ? void 0 : existing.view) || new MockView();
|
|
337
|
+
var controller = (existing === null || existing === void 0 ? void 0 : existing.controller) || new MockController();
|
|
338
|
+
view.getController.mockReturnValue(controller);
|
|
339
|
+
view.getModel.mockReturnValue(model);
|
|
340
|
+
controller.getView.mockReturnValue(view);
|
|
341
|
+
return {
|
|
342
|
+
model: model,
|
|
343
|
+
view: view,
|
|
344
|
+
controller: controller
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
_exports.mockMVC = mockMVC;
|
|
237
349
|
return _exports;
|
|
238
350
|
}, false);
|
|
239
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlVJNU1vY2tIZWxwZXIudHMiXSwibmFtZXMiOlsiTW9ja0NvbnRleHQiLCJvVmFsdWVzIiwib0JpbmRpbmciLCJqZXN0IiwiZm4iLCJrZXkiLCJ2YWx1ZSIsIk1vY2tDb250cm9sIiwiTW9ja0xpc3RCaW5kaW5nIiwiYUNvbnRleHRzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhTW9ja0NvbnRleHRzIiwibWFwIiwiY29udGV4dCIsInNDbGFzc05hbWUiLCJNb2NrQ29udGV4dEJpbmRpbmciLCJvQ29udGV4dCIsIm9Nb2NrQ29udGV4dCIsIk1vY2tNZXRhTW9kZWwiLCJvTWV0YURhdGEiLCJzUGF0aCIsIiRwYXRoIiwib01ldGFDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJNb2NrTW9kZWwiLCJtb2NrTGlzdEJpbmRpbmciLCJtb2NrQ29udGV4dEJpbmRpbmciLCJvTWV0YU1vZGVsIiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQUZBO0FBQ0E7QUFDQTtNQUlhQSxXLEdBQ1oscUJBQTJCQyxPQUEzQixFQUFpREMsUUFBakQsRUFBaUU7QUFBQTs7QUFBQTs7QUFBQSx5Q0FFNUNDLElBQUksQ0FBQ0MsRUFBTCxDQUFRLFVBQUNDLEdBQUQsRUFBaUI7QUFDN0MsYUFBTyxLQUFJLENBQUNKLE9BQUwsQ0FBYUksR0FBYixDQUFQO0FBQ0EsS0FGb0IsQ0FGNEM7O0FBQUEseUNBSzVDRixJQUFJLENBQUNDLEVBQUwsQ0FBUSxVQUFDQyxHQUFELEVBQWNDLEtBQWQsRUFBNkI7QUFDekQsTUFBQSxLQUFJLENBQUNMLE9BQUwsQ0FBYUksR0FBYixJQUFvQkMsS0FBcEI7QUFDQSxhQUFPLEtBQUksQ0FBQ0wsT0FBTCxDQUFhSSxHQUFiLENBQVA7QUFDQSxLQUhvQixDQUw0Qzs7QUFBQSx1Q0FVOUNGLElBQUksQ0FBQ0MsRUFBTCxDQUFRLFVBQUNDLEdBQUQsRUFBaUI7QUFDM0MsYUFBTyxLQUFJLENBQUNKLE9BQUwsQ0FB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dCI6WyIvKipcbiAqIE1vY2sgY2xhc3MgZm9yIGEgVjQgQ29udGV4dFxuICovXG5cbmltcG9ydCB7IENvbnRleHQsIE9EYXRhTGlzdEJpbmRpbmcsIE9EYXRhQ29udGV4dEJpbmRpbmcsIE9EYXRhTWV0YU1vZGVsLCBPRGF0YU1vZGVsIH0gZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NFwiO1xuXG5leHBvcnQgY2xhc3MgTW9ja0NvbnRleHQgaW1wbGVtZW50cyBQYXJ0aWFsPENvbnRleHQ+IHtcblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgb1ZhbHVlczogYW55LCBwcml2YXRlIG9CaW5kaW5nPzogYW55KSB7fVxuXG5cdHB1YmxpYyBnZXRQcm9wZXJ0eSA9IGplc3QuZm4oKGtleTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub1ZhbHVlc1trZXldO1xuXHR9KTtcblx0cHVibGljIHNldFByb3BlcnR5ID0gamVzdC5mbigoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHR0aGlzLm9WYWx1ZXNba2V5XSA9IHZhbHVlO1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNba2V5XTtcblx0fSk7XG5cblx0cHVibGljIGdldE9iamVjdCA9IGplc3QuZm4oKGtleTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub1ZhbHVlc1trZXldO1xuXHR9KTtcblx0cHVibGljIGdldFBhdGggPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vVmFsdWVzW1wiJHBhdGhcIl07XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRCaW5kaW5nID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub0JpbmRpbmc7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udHJvbCB7XG5cdHB1YmxpYyBnZXRCaW5kaW5nSW5mbyA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldEJpbmRpbmcgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBkYXRhID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCk7XG59XG5cbi8qKlxuICogTW9jayBjbGFzcyBmb3IgT0RhdGEgVjQgTGlzdEJpbmRpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIE1vY2tMaXN0QmluZGluZyBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFMaXN0QmluZGluZz4ge1xuXHRwcml2YXRlIGFNb2NrQ29udGV4dHM6IE1vY2tDb250ZXh0W107XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKGFDb250ZXh0cz86IGFueVtdKSB7XG5cdFx0YUNvbnRleHRzID0gYUNvbnRleHRzIHx8IFtdO1xuXG5cdFx0dGhpcy5hTW9ja0NvbnRleHRzID0gYUNvbnRleHRzLm1hcChjb250ZXh0ID0+IHtcblx0XHRcdHJldHVybiBuZXcgTW9ja0NvbnRleHQoY29udGV4dCwgdGhpcyk7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCI7XG5cdH1cblxuXHQvLyBNb2NrZWQgQVBJXG5cdHB1YmxpYyBzZXRBZ2dyZWdhdGlvbiA9IGplc3QuZm4oKTtcblx0cHVibGljIGZpbHRlciA9IGplc3QuZm4oKTtcblx0cHVibGljIHNvcnQgPSBqZXN0LmZuKCk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgcmVxdWVzdENvbnRleHRzID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKHRoaXMuYU1vY2tDb250ZXh0cyBhcyBhbnkpIGFzIENvbnRleHRbXSk7XG5cdH0pO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBnZXRDdXJyZW50Q29udGV4dHMgPSBqZXN0LmZuKCguLi5hcmdzKSA9PiB7XG5cdFx0cmV0dXJuICh0aGlzLmFNb2NrQ29udGV4dHMgYXMgYW55KSBhcyBDb250ZXh0W107XG5cdH0pO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja0NvbnRleHRCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YUNvbnRleHRCaW5kaW5nPiB7XG5cdHByaXZhdGUgb01vY2tDb250ZXh0OiBNb2NrQ29udGV4dDtcblxuXHRwdWJsaWMgY29uc3RydWN0b3Iob0NvbnRleHQ/OiBhbnkpIHtcblx0XHR0aGlzLm9Nb2NrQ29udGV4dCA9IG5ldyBNb2NrQ29udGV4dChvQ29udGV4dCB8fCB7fSwgdGhpcyk7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5cdH1cblx0cHVibGljIGdldEludGVybmFsTW9ja0NvbnRleHQoKTogTW9ja0NvbnRleHQge1xuXHRcdHJldHVybiB0aGlzLm9Nb2NrQ29udGV4dDtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0cHVibGljIGdldEJvdW5kQ29udGV4dCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiAodGhpcy5vTW9ja0NvbnRleHQgYXMgYW55KSBhcyBDb250ZXh0O1xuXHR9KTtcblx0cHVibGljIGF0dGFjaEV2ZW50T25jZSA9IGplc3QuZm4oKTtcbn1cblxuLyoqXG4gKiBNb2NrIGNsYXNzIGZvciBPRGF0YSBWNCBNZXRhTW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIE1vY2tNZXRhTW9kZWwgaW1wbGVtZW50cyBQYXJ0aWFsPE9EYXRhTWV0YU1vZGVsPiB7XG5cdHByaXZhdGUgb01ldGFDb250ZXh0OiBNb2NrQ29udGV4dDtcblxuXHRwdWJsaWMgY29uc3RydWN0b3Iob01ldGFEYXRhPzogYW55KSB7XG5cdFx0dGhpcy5vTWV0YUNvbnRleHQgPSBuZXcgTW9ja0NvbnRleHQob01ldGFEYXRhIHx8IHt9KTtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgZ2V0TWV0YUNvbnRleHQgPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIChuZXcgTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSkgYXMgYW55KSBhcyBDb250ZXh0O1xuXHR9KTtcblx0cHVibGljIGdldE9iamVjdCA9IGplc3QuZm4oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vTWV0YUNvbnRleHQuZ2V0UHJvcGVydHkoc1BhdGgpO1xuXHR9KTtcblx0cHVibGljIHJlcXVlc3RPYmplY3QgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBjcmVhdGVCaW5kaW5nQ29udGV4dCA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldE1ldGFQYXRoID0gamVzdC5mbigpO1xufVxuXG4vKipcbiAqIE1vY2sgY2xhc3MgZm9yIE9EYXRhIFY0IE1vZGVsXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1vY2tNb2RlbCBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFNb2RlbD4ge1xuXHRwcml2YXRlIG9NZXRhTW9kZWw/OiBNb2NrTWV0YU1vZGVsO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vY2tMaXN0QmluZGluZz86IE1vY2tMaXN0QmluZGluZywgcHJpdmF0ZSBtb2NrQ29udGV4dEJpbmRpbmc/OiBNb2NrQ29udGV4dEJpbmRpbmcpIHt9XG5cblx0Ly8gRmFjdG9yaWVzXG5cdHN0YXRpYyBtb2RlbEZyb21MaXN0QmluZGluZyhtb2NrTGlzdEJpbmRpbmc6IE1vY2tMaXN0QmluZGluZyk6IE1vY2tNb2RlbCB7XG5cdFx0cmV0dXJuIG5ldyBNb2NrTW9kZWwobW9ja0xpc3RCaW5kaW5nKTtcblx0fVxuXHRzdGF0aWMgbW9kZWxGcm9tQ29udGV4dEJpbmRpbmcobW9ja0NvbnRleHRCaW5kaW5nOiBNb2NrQ29udGV4dEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRcdHJldHVybiBuZXcgTW9ja01vZGVsKHVuZGVmaW5lZCwgbW9ja0NvbnRleHRCaW5kaW5nKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRNZXRhTW9kZWwob01ldGFNb2RlbDogTW9ja01ldGFNb2RlbCkge1xuXHRcdHRoaXMub01ldGFNb2RlbCA9IG9NZXRhTW9kZWw7XG5cdH1cblxuXHQvLyBNb2NrZWQgQVBJXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGJpbmRMaXN0ID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiAodGhpcy5tb2NrTGlzdEJpbmRpbmcgYXMgYW55KSBhcyBPRGF0YUxpc3RCaW5kaW5nO1xuXHR9KTtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgYmluZENvbnRleHQgPSBqZXN0LmZuKCguLi5hcmdzKSA9PiB7XG5cdFx0cmV0dXJuICh0aGlzLm1vY2tDb250ZXh0QmluZGluZyBhcyBhbnkpIGFzIE9EYXRhQ29udGV4dEJpbmRpbmc7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TWV0YU1vZGVsID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuICh0aGlzLm9NZXRhTW9kZWwgYXMgYW55KSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0fSk7XG5cblx0cHVibGljIGdldFByb3BlcnR5ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgc2V0UHJvcGVydHkgPSBqZXN0LmZuKCk7XG59XG4iXX0=
|
|
351
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlVJNU1vY2tIZWxwZXIudHMiXSwibmFtZXMiOlsiTW9ja0NvbnRleHQiLCJvVmFsdWVzIiwib0JpbmRpbmciLCJnZXRQcm9wZXJ0eSIsImplc3QiLCJmbiIsImtleSIsInJlcXVlc3RQcm9wZXJ0eSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0UHJvcGVydHkiLCJ2YWx1ZSIsImdldE9iamVjdCIsInBhdGgiLCJ0aGF0IiwicmVzdWx0IiwiaW5kZXhPZiIsInBhcnRzIiwic3BsaXQiLCJyZWR1Y2UiLCJzdW0iLCJwYXJ0IiwiZ2V0UGF0aCIsImdldEJpbmRpbmciLCJnZXRNb2RlbCIsImlzVHJhbnNpZW50IiwiaXNBIiwic0NsYXNzTmFtZSIsIk1vY2tVSTVFbGVtZW50IiwiYmluZGluZ0NvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsIm1vY2tSZXR1cm5WYWx1ZSIsImdldEJpbmRpbmdJbmZvIiwiZGF0YSIsImdldFBhcmVudCIsIk1vY2tDb250cm9sIiwiTW9ja0V2ZW50IiwicGFyYW1zIiwic291cmNlIiwiZ2V0UGFyYW1ldGVyIiwibmFtZSIsImdldFNvdXJjZSIsIk1vY2tMaXN0QmluZGluZyIsImFDb250ZXh0cyIsIm1vY2tNb2RlbCIsInNldEFnZ3JlZ2F0aW9uIiwiZmlsdGVyIiwic29ydCIsInJlcXVlc3RDb250ZXh0cyIsImFNb2NrQ29udGV4dHMiLCJnZXRDdXJyZW50Q29udGV4dHMiLCJtYXAiLCJjb250ZXh0Iiwic2V0TW9kZWwiLCJvTW9kZWwiLCJNb2NrQ29udGV4dEJpbmRpbmciLCJvQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsIm9Nb2NrQ29udGV4dCIsImF0dGFjaEV2ZW50T25jZSIsImdldEludGVybmFsTW9ja0NvbnRleHQiLCJNb2NrTWV0YU1vZGVsIiwib01ldGFEYXRhIiwiZ2V0TWV0YUNvbnRleHQiLCJzUGF0aCIsIiRwYXRoIiwib01ldGFDb250ZXh0IiwicmVxdWVzdE9iamVjdCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0TWV0YVBhdGgiLCJnZXRDb250ZXh0IiwiTW9ja01vZGVsIiwibW9ja0xpc3RCaW5kaW5nIiwibW9ja0NvbnRleHRCaW5kaW5nIiwiYmluZExpc3QiLCJiaW5kQ29udGV4dCIsImdldE1ldGFNb2RlbCIsIm9NZXRhTW9kZWwiLCJtb2RlbEZyb21MaXN0QmluZGluZyIsIm1vZGVsRnJvbUNvbnRleHRCaW5kaW5nIiwidW5kZWZpbmVkIiwic2V0TWV0YU1vZGVsIiwiTW9ja1ZpZXciLCJnZXRDb250cm9sbGVyIiwiZ2V0Vmlld0RhdGEiLCJnZXRJZCIsIk1vY2tDb250cm9sbGVyIiwiZ2V0VmlldyIsIl9yb3V0aW5nIiwibmF2aWdhdGVUb1RhcmdldCIsIl9lZGl0RmxvdyIsInN5bmNUYXNrIiwiX3NpZGVFZmZlY3RzIiwiaGFuZGxlRmllbGRDaGFuZ2UiLCJtb2NrTVZDIiwiZXhpc3RpbmciLCJtb2RlbCIsInZpZXciLCJjb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBRkE7QUFDQTtBQUNBO01BWWFBLFc7QUFDWix5QkFBMkJDLE9BQTNCLEVBQWtEQyxRQUFsRCxFQUFrRTtBQUFBOztBQUFBLFdBTTNEQyxXQU4yRCxHQU03Q0MsSUFBSSxDQUFDQyxFQUFMLENBQVEsVUFBQ0MsR0FBRCxFQUFpQjtBQUM3QyxlQUFPLEtBQUksQ0FBQ0wsT0FBTCxDQUFhSyxHQUFiLENBQVA7QUFDQSxPQUZvQixDQU42QztBQUFBLFdBUzNEQyxlQVQyRCxHQVN6Q0gsSUFBSSxDQUFDQyxFQUFMLENBQVEsVUFBQ0MsR0FBRCxFQUFpQjtBQUNqRCxlQUFPRSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsS0FBSSxDQUFDUixPQUFMLENBQWFLLEdBQWIsQ0FBaEIsQ0FBUDtBQUNBLE9BRndCLENBVHlDO0FBQUEsV0FZM0RJLFdBWjJELEdBWTdDTixJQUFJLENBQUNDLEVBQUwsQ0FBUSxVQUFDQyxHQUFELEVBQWNLLEtBQWQsRUFBNkI7QUFDekQsUUFBQSxLQUFJLENBQUNW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O0FBQ0FELElBQUFBLElBQUksQ0FBQ3pFLFFBQUwsQ0FBY08sZUFBZCxDQUE4QmlFLEtBQTlCO0FBQ0FFLElBQUFBLFVBQVUsQ0FBQ1gsT0FBWCxDQUFtQnhELGVBQW5CLENBQW1Da0UsSUFBbkM7QUFFQSxXQUFPO0FBQUVELE1BQUFBLEtBQUssRUFBTEEsS0FBRjtBQUFTQyxNQUFBQSxJQUFJLEVBQUpBLElBQVQ7QUFBZUMsTUFBQUEsVUFBVSxFQUFWQTtBQUFmLEtBQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2NrIGNsYXNzIGZvciBhIFY0IENvbnRleHRcbiAqL1xuaW1wb3J0IEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCBPRGF0YUNvbnRleHRCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFDb250ZXh0QmluZGluZ1wiO1xuaW1wb3J0IE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuXG5leHBvcnQgY2xhc3MgTW9ja0NvbnRleHQgaW1wbGVtZW50cyBQYXJ0aWFsPENvbnRleHQ+IHtcblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgb1ZhbHVlcz86IGFueSwgcHJpdmF0ZSBvQmluZGluZz86IGFueSkge31cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XCI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UHJvcGVydHkgPSBqZXN0LmZuKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNba2V5XTtcblx0fSk7XG5cdHB1YmxpYyByZXF1ZXN0UHJvcGVydHkgPSBqZXN0LmZuKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5vVmFsdWVzW2tleV0pO1xuXHR9KTtcblx0cHVibGljIHNldFByb3BlcnR5ID0gamVzdC5mbigoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHR0aGlzLm9WYWx1ZXNba2V5XSA9IHZhbHVlO1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNba2V5XTtcblx0fSk7XG5cblx0cHVibGljIGdldE9iamVjdCA9IGplc3QuZm4oKHBhdGg6IHN0cmluZykgPT4ge1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzIGFzIGFueTtcblx0XHRsZXQgcmVzdWx0ID0gcGF0aCA/IHRoYXQub1ZhbHVlc1twYXRoXSA6IHRoYXQub1ZhbHVlcztcblxuXHRcdGlmICghcmVzdWx0ICYmIHBhdGggJiYgcGF0aC5pbmRleE9mKFwiL1wiKSA+IC0xKSB7XG5cdFx0XHRjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0cmVzdWx0ID0gcGFydHMucmVkdWNlKChzdW0sIHBhcnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRzdW0gPSBwYXJ0ID8gc3VtW3BhcnRdIDogc3VtO1xuXHRcdFx0XHRyZXR1cm4gc3VtO1xuXHRcdFx0fSwgdGhhdC5vVmFsdWVzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9KTtcblx0cHVibGljIGdldFBhdGggPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vVmFsdWVzW1wiJHBhdGhcIl07XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRCaW5kaW5nID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub0JpbmRpbmc7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gKHRoaXMub0JpbmRpbmc/LmdldE1vZGVsKCkgYXMgYW55KSBhcyBPRGF0YU1vZGVsO1xuXHR9KTtcblx0cHVibGljIGlzVHJhbnNpZW50ID0gamVzdC5mbigpO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja1VJNUVsZW1lbnQgaW1wbGVtZW50cyBQYXJ0aWFsPFVJNUVsZW1lbnQ+IHtcblx0W2tleTogc3RyaW5nXTogYW55O1xuXHRwdWJsaWMgYmluZGluZ0NvbnRleHQgPSBuZXcgTW9ja0NvbnRleHQoe30pO1xuXHRwdWJsaWMgZ2V0QmluZGluZyA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldEJpbmRpbmdDb250ZXh0ID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh0aGlzLmJpbmRpbmdDb250ZXh0KTtcblx0cHVibGljIGdldEJpbmRpbmdJbmZvID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZGF0YSA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0UGFyZW50ID0gamVzdC5mbigpO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja0NvbnRyb2wgZXh0ZW5kcyBNb2NrVUk1RWxlbWVudCBpbXBsZW1lbnRzIFBhcnRpYWw8Q29udHJvbD4ge1xuXHRwdWJsaWMgZ2V0QmluZGluZ0NvbnRleHQ6IGplc3QuTW9jazxhbnksIGFueT4gPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrRXZlbnQgaW1wbGVtZW50cyBQYXJ0aWFsPEV2ZW50PiB7XG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge30sIHB1YmxpYyBzb3VyY2U6IE1vY2tVSTVFbGVtZW50ID0gbmV3IE1vY2tVSTVFbGVtZW50KCkpIHt9XG5cblx0cHVibGljIGdldFBhcmFtZXRlciA9IGplc3QuZm4obmFtZSA9PiB0aGlzLnBhcmFtc1tuYW1lXSk7XG5cblx0cHVibGljIGdldFNvdXJjZSA9IGplc3QuZm4oKCkgPT4gdGhpcy5zb3VyY2UgYXMgYW55KTtcbn1cblxuLyoqXG4gKiBNb2NrIGNsYXNzIGZvciBPRGF0YSBWNCBMaXN0QmluZGluZ1xuICovXG5leHBvcnQgY2xhc3MgTW9ja0xpc3RCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YUxpc3RCaW5kaW5nPiB7XG5cdHByaXZhdGUgYU1vY2tDb250ZXh0czogTW9ja0NvbnRleHRbXTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoYUNvbnRleHRzPzogYW55W10sIHByaXZhdGUgbW9ja01vZGVsPzogTW9ja01vZGVsKSB7XG5cdFx0YUNvbnRleHRzID0gYUNvbnRleHRzIHx8IFtdO1xuXG5cdFx0dGhpcy5hTW9ja0NvbnRleHRzID0gYUNvbnRleHRzLm1hcChjb250ZXh0ID0+IHtcblx0XHRcdHJldHVybiBuZXcgTW9ja0NvbnRleHQoY29udGV4dCwgdGhpcyk7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCI7XG5cdH1cblxuXHRwdWJsaWMgc2V0TW9kZWwob01vZGVsOiBNb2NrTW9kZWwpIHtcblx0XHR0aGlzLm1vY2tNb2RlbCA9IG9Nb2RlbDtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0cHVibGljIHNldEFnZ3JlZ2F0aW9uID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZmlsdGVyID0gamVzdC5mbigpO1xuXHRwdWJsaWMgc29ydCA9IGplc3QuZm4oKTtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyByZXF1ZXN0Q29udGV4dHMgPSBqZXN0LmZuKCguLi5hcmdzKSA9PiB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgodGhpcy5hTW9ja0NvbnRleHRzIGFzIGFueSkgYXMgQ29udGV4dFtdKTtcblx0fSk7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGdldEN1cnJlbnRDb250ZXh0cyA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gKHRoaXMuYU1vY2tDb250ZXh0cyBhcyBhbnkpIGFzIENvbnRleHRbXTtcblx0fSk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiAodGhpcy5tb2NrTW9kZWwgYXMgYW55KSBhcyBPRGF0YU1vZGVsO1xuXHR9KTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb250ZXh0QmluZGluZyBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFDb250ZXh0QmluZGluZz4ge1xuXHRwcml2YXRlIG9Nb2NrQ29udGV4dDogTW9ja0NvbnRleHQ7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG9Db250ZXh0PzogYW55LCBwcml2YXRlIG1vY2tNb2RlbD86IE1vY2tNb2RlbCkge1xuXHRcdHRoaXMub01vY2tDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KG9Db250ZXh0IHx8IHt9LCB0aGlzKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhQ29udGV4dEJpbmRpbmdcIjtcblx0fVxuXHRwdWJsaWMgZ2V0SW50ZXJuYWxNb2NrQ29udGV4dCgpOiBNb2NrQ29udGV4dCB7XG5cdFx0cmV0dXJuIHRoaXMub01vY2tDb250ZXh0O1xuXHR9XG5cdHB1YmxpYyBzZXRNb2RlbChvTW9kZWw6IE1vY2tNb2RlbCkge1xuXHRcdHRoaXMubW9ja01vZGVsID0gb01vZGVsO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHRwdWJsaWMgZ2V0Qm91bmRDb250ZXh0ID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuICh0aGlzLm9Nb2NrQ29udGV4dCBhcyBhbnkpIGFzIENvbnRleHQ7XG5cdH0pO1xuXHRwdWJsaWMgYXR0YWNoRXZlbnRPbmNlID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gKHRoaXMubW9ja01vZGVsIGFzIGFueSkgYXMgT0RhdGFNb2RlbDtcblx0fSk7XG59XG5cbi8qKlxuICogTW9jayBjbGFzcyBmb3IgT0RhdGEgVjQgTWV0YU1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2NrTWV0YU1vZGVsIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YU1ldGFNb2RlbD4ge1xuXHRwcml2YXRlIG9NZXRhQ29udGV4dDogTW9ja0NvbnRleHQ7XG5cdHJlcXVlc3RWYWx1ZUxpc3RJbmZvITogamVzdC5Nb2NrPGFueSwgYW55PjtcblxuXHRwdWJsaWMgY29uc3RydWN0b3Iob01ldGFEYXRhPzogYW55KSB7XG5cdFx0dGhpcy5vTWV0YUNvbnRleHQgPSBuZXcgTW9ja0NvbnRleHQob01ldGFEYXRhIHx8IHt9KTtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgZ2V0TWV0YUNvbnRleHQgPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIChuZXcgTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSkgYXMgYW55KSBhcyBDb250ZXh0O1xuXHR9KTtcblx0cHVibGljIGdldE9iamVjdCA9IGplc3QuZm4oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vTWV0YUNvbnRleHQuZ2V0UHJvcGVydHkoc1BhdGgpO1xuXHR9KTtcblx0cHVibGljIHJlcXVlc3RPYmplY3QgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBjcmVhdGVCaW5kaW5nQ29udGV4dCA9IGplc3QuZm4oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gKG5ldyBNb2NrQ29udGV4dCh7ICRwYXRoOiBzUGF0aCB9KSBhcyBhbnkpIGFzIENvbnRleHQ7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TWV0YVBhdGggPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNQYXRoO1xuXHR9KTtcblx0cHVibGljIGdldENvbnRleHQgPSBqZXN0LmZuKCk7XG59XG5cbi8qKlxuICogTW9jayBjbGFzcyBmb3IgT0RhdGEgVjQgTW9kZWxcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW9ja01vZGVsIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YU1vZGVsPiB7XG5cdHByaXZhdGUgb01ldGFNb2RlbD86IE1vY2tNZXRhTW9kZWw7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9ja0xpc3RCaW5kaW5nPzogTW9ja0xpc3RCaW5kaW5nLCBwcml2YXRlIG1vY2tDb250ZXh0QmluZGluZz86IE1vY2tDb250ZXh0QmluZGluZykge1xuXHRcdGlmIChtb2NrTGlzdEJpbmRpbmcpIHtcblx0XHRcdG1vY2tMaXN0QmluZGluZy5zZXRNb2RlbCh0aGlzKTtcblx0XHR9XG5cdFx0aWYgKG1vY2tDb250ZXh0QmluZGluZykge1xuXHRcdFx0bW9ja0NvbnRleHRCaW5kaW5nLnNldE1vZGVsKHRoaXMpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEZhY3Rvcmllc1xuXHRzdGF0aWMgbW9kZWxGcm9tTGlzdEJpbmRpbmcobW9ja0xpc3RCaW5kaW5nOiBNb2NrTGlzdEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRcdHJldHVybiBuZXcgTW9ja01vZGVsKG1vY2tMaXN0QmluZGluZyk7XG5cdH1cblx0c3RhdGljIG1vZGVsRnJvbUNvbnRleHRCaW5kaW5nKG1vY2tDb250ZXh0QmluZGluZzogTW9ja0NvbnRleHRCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0XHRyZXR1cm4gbmV3IE1vY2tNb2RlbCh1bmRlZmluZWQsIG1vY2tDb250ZXh0QmluZGluZyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TWV0YU1vZGVsKG9NZXRhTW9kZWw6IE1vY2tNZXRhTW9kZWwpIHtcblx0XHR0aGlzLm9NZXRhTW9kZWwgPSBvTWV0YU1vZGVsO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBiaW5kTGlzdCA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gKHRoaXMubW9ja0xpc3RCaW5kaW5nIGFzIGFueSkgYXMgT0RhdGFMaXN0QmluZGluZztcblx0fSk7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGJpbmRDb250ZXh0ID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiAodGhpcy5tb2NrQ29udGV4dEJpbmRpbmcgYXMgYW55KSBhcyBPRGF0YUNvbnRleHRCaW5kaW5nO1xuXHR9KTtcblx0cHVibGljIGdldE1ldGFNb2RlbCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiAodGhpcy5vTWV0YU1vZGVsIGFzIGFueSkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRQcm9wZXJ0eSA9IGplc3QuZm4oKTtcblx0cHVibGljIHNldFByb3BlcnR5ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgcmVxdWVzdE9iamVjdCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tWaWV3IGltcGxlbWVudHMgUGFydGlhbDxWaWV3PiB7XG5cdHB1YmxpYyBnZXRDb250cm9sbGVyID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBnZXRCaW5kaW5nQ29udGV4dCA9IGplc3QuZm4oKTtcblxuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCk7XG5cblx0cHVibGljIGdldFZpZXdEYXRhID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLmNvcmUubXZjLlZpZXdcIjtcblx0fVxuXG5cdHB1YmxpYyBnZXRJZCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb250cm9sbGVyIGltcGxlbWVudHMgUGFydGlhbDxDb250cm9sbGVyPiB7XG5cdHB1YmxpYyBnZXRWaWV3ID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShuZXcgTW9ja1ZpZXcoKSk7XG5cblx0cHVibGljIF9yb3V0aW5nID0ge1xuXHRcdG5hdmlnYXRlVG9UYXJnZXQ6IGplc3QuZm4oKVxuXHR9O1xuXG5cdHB1YmxpYyBfZWRpdEZsb3cgPSB7XG5cdFx0c3luY1Rhc2s6IGplc3QuZm4oKVxuXHR9O1xuXG5cdHB1YmxpYyBfc2lkZUVmZmVjdHMgPSB7XG5cdFx0aGFuZGxlRmllbGRDaGFuZ2U6IGplc3QuZm4oKVxuXHR9O1xuXG5cdGlzQSA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1WQ01vY2sge1xuXHRtb2RlbDogTW9ja01vZGVsO1xuXHR2aWV3OiBNb2NrVmlldztcblx0Y29udHJvbGxlcjogTW9ja0NvbnRyb2xsZXI7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgbW9kZWwsIHZpZXcgYW5kIGNvbnRyb2xsZXIgbW9ja3MgdGhhdCByZWZlciB0byBlYWNoIG90aGVyLlxuICpcbiAqIEBwYXJhbSBleGlzdGluZyBPcHRpb25hbCBleGlzdGluZyBtb2NrZWQgaW5zdGFuY2VzIHRoYXQgc2hvdWxkIGJlIHVzZWRcbiAqIEByZXR1cm5zIE1vY2tlZCBtb2RlbCwgdmlldyBhbmQgY29udHJvbGxlciBpbnN0YW5jZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tNVkMoZXhpc3Rpbmc/OiBQYXJ0aWFsPE1WQ01vY2s+KTogTVZDTW9jayB7XG5cdGNvbnN0IG1vZGVsID0gZXhpc3Rpbmc/Lm1vZGVsIHx8IG5ldyBNb2NrTW9kZWwoKTtcblx0Y29uc3QgdmlldyA9IGV4aXN0aW5nPy52aWV3IHx8IG5ldyBNb2NrVmlldygpO1xuXHRjb25zdCBjb250cm9sbGVyID0gZXhpc3Rpbmc/LmNvbnRyb2xsZXIgfHwgbmV3IE1vY2tDb250cm9sbGVyKCk7XG5cblx0dmlldy5nZXRDb250cm9sbGVyLm1vY2tSZXR1cm5WYWx1ZShjb250cm9sbGVyKTtcblx0dmlldy5nZXRNb2RlbC5tb2NrUmV0dXJuVmFsdWUobW9kZWwpO1xuXHRjb250cm9sbGVyLmdldFZpZXcubW9ja1JldHVyblZhbHVlKHZpZXcpO1xuXG5cdHJldHVybiB7IG1vZGVsLCB2aWV3LCBjb250cm9sbGVyIH07XG59XG4iXX0=
|