@sapui5/sap.fe.test 1.103.0 → 1.104.1

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.
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define([], function () {
5
+ sap.ui.define(["sap/ui/model/odata/v4/ODataMetaModel"], function (ODataMetaModel) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
@@ -11,9 +11,6 @@ sap.ui.define([], function () {
11
11
 
12
12
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
13
13
 
14
- /**
15
- * Mock class for a V4 Context
16
- */
17
14
  var MockContext = /*#__PURE__*/function () {
18
15
  function MockContext(oValues, oBinding) {
19
16
  var _this = this;
@@ -140,6 +137,12 @@ sap.ui.define([], function () {
140
137
  this.setAggregation = jest.fn();
141
138
  this.filter = jest.fn();
142
139
  this.sort = jest.fn();
140
+ this.getQueryOptionsFromParameters = jest.fn();
141
+ this.getPath = jest.fn();
142
+ this.isSuspended = jest.fn();
143
+ this.resume = jest.fn();
144
+ this.refresh = jest.fn();
145
+ this.suspend = jest.fn();
143
146
  this.requestContexts = jest.fn(function () {
144
147
  return Promise.resolve(_this4.aMockContexts);
145
148
  });
@@ -254,6 +257,9 @@ sap.ui.define([], function () {
254
257
  this.getModel = jest.fn(function () {
255
258
  return _this7.mockModel;
256
259
  });
260
+ this.setParameter = jest.fn();
261
+ this.execute = jest.fn().mockResolvedValue(true);
262
+ this.getGroupId = jest.fn();
257
263
  this.mockModel = mockModel;
258
264
  this.oMockContext = new MockContext(oContext || {}, this);
259
265
  }
@@ -301,7 +307,8 @@ sap.ui.define([], function () {
301
307
  });
302
308
  });
303
309
  this.getMetaPath = jest.fn(function (sPath) {
304
- return sPath;
310
+ var metamodel = new ODataMetaModel();
311
+ return sPath ? metamodel.getMetaPath(sPath) : sPath;
305
312
  });
306
313
  this.getContext = jest.fn();
307
314
  this.oMetaContext = new MockContext(oMetaData || {});
@@ -428,4 +435,4 @@ sap.ui.define([], function () {
428
435
  _exports.mockMVC = mockMVC;
429
436
  return _exports;
430
437
  }, false);
431
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlVJNU1vY2tIZWxwZXIudHMiXSwibmFtZXMiOlsiTW9ja0NvbnRleHQiLCJvVmFsdWVzIiwib0JpbmRpbmciLCJpc0tlcHRBbGl2ZSIsImdldFByb3BlcnR5IiwiamVzdCIsImZuIiwia2V5IiwicmVxdWVzdFByb3BlcnR5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRQcm9wZXJ0eSIsInZhbHVlIiwiZ2V0T2JqZWN0IiwicGF0aCIsInJlc3VsdCIsImluZGV4T2YiLCJwYXJ0cyIsInNwbGl0IiwicmVkdWNlIiwic3VtIiwicGFydCIsImdldFBhdGgiLCJnZXRCaW5kaW5nIiwiZ2V0TW9kZWwiLCJpc1RyYW5zaWVudCIsInNldEtlZXBBbGl2ZSIsImJvb2wiLCJfZm5PbkJlZm9yZURlc3Ryb3kiLCJfYlJlcXVlc3RNZXNzYWdlcyIsImlzS2VlcEFsaXZlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwicmVxdWVzdE9iamVjdCIsImlzQSIsInNDbGFzc05hbWUiLCJNb2NrVUk1RWxlbWVudCIsImJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJtb2NrUmV0dXJuVmFsdWUiLCJnZXRCaW5kaW5nSW5mbyIsImRhdGEiLCJnZXRQYXJlbnQiLCJNb2NrQ29udHJvbCIsIk1vY2tFdmVudCIsInBhcmFtcyIsInNvdXJjZSIsImdldFBhcmFtZXRlciIsIm5hbWUiLCJnZXRTb3VyY2UiLCJNb2NrTGlzdEJpbmRpbmciLCJhQ29udGV4dHMiLCJtb2NrTW9kZWwiLCJzZXRBZ2dyZWdhdGlvbiIsImZpbHRlciIsInNvcnQiLCJyZXF1ZXN0Q29udGV4dHMiLCJhTW9ja0NvbnRleHRzIiwiZ2V0Q3VycmVudENvbnRleHRzIiwiZ2V0VXBkYXRlR3JvdXBJZCIsIm1hcCIsImNvbnRleHQiLCJzZXRNb2RlbCIsIm9Nb2RlbCIsIk1vY2tQcm9wZXJ0eUJpbmRpbmciLCJtb2NrUGF0aCIsImdldFZhbHVlIiwic2V0UGF0aCIsIk1vY2tDb21wb3NpdGVCaW5kaW5nIiwiYUJpbmRpbmdzIiwiZ2V0QmluZGluZ3MiLCJiaW5kaW5nIiwiTW9ja0NvbnRleHRCaW5kaW5nIiwib0NvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJvTW9ja0NvbnRleHQiLCJhdHRhY2hFdmVudE9uY2UiLCJnZXRJbnRlcm5hbE1vY2tDb250ZXh0IiwiTW9ja01ldGFNb2RlbCIsIm9NZXRhRGF0YSIsImdldE1ldGFDb250ZXh0Iiwic1BhdGgiLCIkcGF0aCIsIm9NZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0TWV0YVBhdGgiLCJnZXRDb250ZXh0IiwiTW9ja01vZGVsIiwibW9ja0xpc3RCaW5kaW5nIiwibW9ja0NvbnRleHRCaW5kaW5nIiwiYmluZExpc3QiLCJiaW5kQ29udGV4dCIsImdldE1ldGFNb2RlbCIsIm9NZXRhTW9kZWwiLCJnZXRLZWVwQWxpdmVDb250ZXh0IiwibW9kZWxGcm9tTGlzdEJpbmRpbmciLCJtb2RlbEZyb21Db250ZXh0QmluZGluZyIsInVuZGVmaW5lZCIsInNldE1ldGFNb2RlbCIsIk1vY2tWaWV3IiwiZ2V0Q29udHJvbGxlciIsImdldFZpZXdEYXRhIiwiZ2V0SWQiLCJNb2NrQ29udHJvbGxlciIsImdldFZpZXciLCJfcm91dGluZyIsIm5hdmlnYXRlVG9UYXJnZXQiLCJfZWRpdEZsb3ciLCJzeW5jVGFzayIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkQ2hhbmdlIiwibW9ja01WQyIsImV4aXN0aW5nIiwibW9kZWwiLCJ2aWV3IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQUZBO0FBQ0E7QUFDQTtNQWVhQSxXO0FBRVoseUJBQTJCQyxPQUEzQixFQUFrREMsUUFBbEQsRUFBa0U7QUFBQTs7QUFBQSxXQUQxREMsV0FDMEQsR0FENUMsS0FDNEM7QUFBQSxXQU0zREMsV0FOMkQsR0FNN0NDLElBQUksQ0FBQ0MsRUFBTCxDQUFRLFVBQUNDLEdBQUQsRUFBaUI7QUFDN0MsZUFBTyxLQUFJLENB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RSxJQUFWLEtBQWtCLElBQUlmLFFBQUosRUFBL0I7QUFDQSxRQUFNZ0IsVUFBVSxHQUFHLENBQUFILFFBQVEsU0FBUixJQUFBQSxRQUFRLFdBQVIsWUFBQUEsUUFBUSxDQUFFRyxVQUFWLEtBQXdCLElBQUlaLGNBQUosRUFBM0M7QUFFQVcsSUFBQUEsSUFBSSxDQUFDZCxhQUFMLENBQW1CN0QsZUFBbkIsQ0FBbUM0RSxVQUFuQztBQUNBRCxJQUFBQSxJQUFJLENBQUN6RixRQUFMLENBQWNjLGVBQWQsQ0FBOEIwRSxLQUE5QjtBQUNBRSxJQUFBQSxVQUFVLENBQUNYLE9BQVgsQ0FBbUJqRSxlQUFuQixDQUFtQzJFLElBQW5DO0FBRUEsV0FBTztBQUFFRCxNQUFBQSxLQUFLLEVBQUxBLEtBQUY7QUFBU0MsTUFBQUEsSUFBSSxFQUFKQSxJQUFUO0FBQWVDLE1BQUFBLFVBQVUsRUFBVkE7QUFBZixLQUFQO0FBQ0EiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9jayBjbGFzcyBmb3IgYSBWNCBDb250ZXh0XG4gKi9cbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDb21wb3NpdGVCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvQ29tcG9zaXRlQmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUNvbnRleHRCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFDb250ZXh0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YVByb3BlcnR5QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhUHJvcGVydHlCaW5kaW5nXCI7XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udGV4dCBpbXBsZW1lbnRzIFBhcnRpYWw8Q29udGV4dD4ge1xuXHRwcml2YXRlIGlzS2VwdEFsaXZlID0gZmFsc2U7XG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG9WYWx1ZXM/OiBhbnksIHByaXZhdGUgb0JpbmRpbmc/OiBhbnkpIHt9XG5cblx0cHVibGljIGlzQShzQ2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dFwiO1xuXHR9XG5cblx0cHVibGljIGdldFByb3BlcnR5ID0gamVzdC5mbigoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vVmFsdWVzW2tleV07XG5cdH0pO1xuXHRwdWJsaWMgcmVxdWVzdFByb3BlcnR5ID0gamVzdC5mbigoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMub1ZhbHVlc1trZXldKTtcblx0fSk7XG5cdHB1YmxpYyBzZXRQcm9wZXJ0eSA9IGplc3QuZm4oKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0dGhpcy5vVmFsdWVzW2tleV0gPSB2YWx1ZTtcblx0XHRyZXR1cm4gdGhpcy5vVmFsdWVzW2tleV07XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRPYmplY3QgPSBqZXN0LmZuKChwYXRoOiBzdHJpbmcpID0+IHtcblx0XHRsZXQgcmVzdWx0ID0gcGF0aCA/IHRoaXMub1ZhbHVlc1twYXRoXSA6IHRoaXMub1ZhbHVlcztcblxuXHRcdGlmICghcmVzdWx0ICYmIHBhdGggJiYgcGF0aC5pbmRleE9mKFwiL1wiKSA+IC0xKSB7XG5cdFx0XHRjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIvXCIpO1xuXHRcdFx0cmVzdWx0ID0gcGFydHMucmVkdWNlKChzdW0sIHBhcnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRzdW0gPSBwYXJ0ID8gc3VtW3BhcnRdIDogc3VtO1xuXHRcdFx0XHRyZXR1cm4gc3VtO1xuXHRcdFx0fSwgdGhpcy5vVmFsdWVzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9KTtcblx0cHVibGljIGdldFBhdGggPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vVmFsdWVzW1wiJHBhdGhcIl07XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRCaW5kaW5nID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub0JpbmRpbmc7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vQmluZGluZz8uZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHR9KTtcblx0cHVibGljIGlzVHJhbnNpZW50ID0gamVzdC5mbigpO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBzZXRLZWVwQWxpdmUgPSBqZXN0LmZuKChib29sOiBib29sZWFuLCBfZm5PbkJlZm9yZURlc3Ryb3k/OiBhbnksIF9iUmVxdWVzdE1lc3NhZ2VzPzogYm9vbGVhbikgPT4ge1xuXHRcdHRoaXMuaXNLZXB0QWxpdmUgPSBib29sO1xuXHR9KTtcblx0cHVibGljIGlzS2VlcEFsaXZlID0gamVzdC5mbigoKSA9PiB0aGlzLmlzS2VwdEFsaXZlKTtcblx0cHVibGljIHJlcXVlc3RTaWRlRWZmZWN0cyA9IGplc3QuZm4oKTtcblx0cHVibGljIHJlcXVlc3RPYmplY3QgPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrVUk1RWxlbWVudCBpbXBsZW1lbnRzIFBhcnRpYWw8VUk1RWxlbWVudD4ge1xuXHRba2V5OiBzdHJpbmddOiBhbnk7XG5cdHB1YmxpYyBiaW5kaW5nQ29udGV4dCA9IG5ldyBNb2NrQ29udGV4dCh7fSk7XG5cdHB1YmxpYyBnZXRCaW5kaW5nID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0QmluZGluZ0NvbnRleHQgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHRoaXMuYmluZGluZ0NvbnRleHQpO1xuXHRwdWJsaWMgZ2V0QmluZGluZ0luZm8gPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBkYXRhID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRQYXJlbnQgPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udHJvbCBleHRlbmRzIE1vY2tVSTVFbGVtZW50IGltcGxlbWVudHMgUGFydGlhbDxDb250cm9sPiB7XG5cdHB1YmxpYyBnZXRCaW5kaW5nQ29udGV4dDogamVzdC5Nb2NrPGFueSwgYW55PiA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldE1vZGVsOiBqZXN0Lk1vY2s8YW55LCBhbnk+ID0gamVzdC5mbigpO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja0V2ZW50IGltcGxlbWVudHMgUGFydGlhbDxFdmVudD4ge1xuXHRwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9LCBwdWJsaWMgc291cmNlOiBNb2NrVUk1RWxlbWVudCA9IG5ldyBNb2NrVUk1RWxlbWVudCgpKSB7fVxuXG5cdHB1YmxpYyBnZXRQYXJhbWV0ZXIgPSBqZXN0LmZuKChuYW1lKSA9PiB0aGlzLnBhcmFtc1tuYW1lXSk7XG5cblx0cHVibGljIGdldFNvdXJjZSA9IGplc3QuZm4oKCkgPT4gdGhpcy5zb3VyY2UgYXMgYW55KTtcbn1cblxuLyoqXG4gKiBNb2NrIGNsYXNzIGZvciBPRGF0YSBWNCBMaXN0QmluZGluZ1xuICovXG5leHBvcnQgY2xhc3MgTW9ja0xpc3RCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YUxpc3RCaW5kaW5nPiB7XG5cdHByaXZhdGUgYU1vY2tDb250ZXh0czogTW9ja0NvbnRleHRbXTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoYUNvbnRleHRzPzogYW55W10sIHByaXZhdGUgbW9ja01vZGVsPzogTW9ja01vZGVsKSB7XG5cdFx0YUNvbnRleHRzID0gYUNvbnRleHRzIHx8IFtdO1xuXG5cdFx0dGhpcy5hTW9ja0NvbnRleHRzID0gYUNvbnRleHRzLm1hcCgoY29udGV4dCkgPT4ge1xuXHRcdFx0cmV0dXJuIG5ldyBNb2NrQ29udGV4dChjb250ZXh0LCB0aGlzKTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIjtcblx0fVxuXG5cdHB1YmxpYyBzZXRNb2RlbChvTW9kZWw6IE1vY2tNb2RlbCkge1xuXHRcdHRoaXMubW9ja01vZGVsID0gb01vZGVsO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHRwdWJsaWMgc2V0QWdncmVnYXRpb24gPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBmaWx0ZXIgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBzb3J0ID0gamVzdC5mbigpO1xuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIHJlcXVlc3RDb250ZXh0cyA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYU1vY2tDb250ZXh0cyBhcyBhbnkgYXMgQ29udGV4dFtdKTtcblx0fSk7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGdldEN1cnJlbnRDb250ZXh0cyA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5hTW9ja0NvbnRleHRzIGFzIGFueSBhcyBDb250ZXh0W107XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5tb2NrTW9kZWwgYXMgYW55IGFzIE9EYXRhTW9kZWw7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0VXBkYXRlR3JvdXBJZCA9IGplc3QuZm4oKCkgPT4gXCJhdXRvXCIpO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja1Byb3BlcnR5QmluZGluZyBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFQcm9wZXJ0eUJpbmRpbmc+IHtcblx0cHJpdmF0ZSBtb2NrTW9kZWwhOiBKU09OTW9kZWw7XG5cdHByaXZhdGUgbW9ja1BhdGghOiBzdHJpbmc7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG1vY2tNb2RlbDogSlNPTk1vZGVsLCBtb2NrUGF0aDogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXRNb2RlbChtb2NrTW9kZWwpO1xuXHRcdHRoaXMuc2V0UGF0aChtb2NrUGF0aCk7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YVByb3BlcnR5QmluZGluZ1wiO1xuXHR9XG5cblx0cHVibGljIHNldE1vZGVsKG9Nb2RlbDogSlNPTk1vZGVsKSB7XG5cdFx0dGhpcy5tb2NrTW9kZWwgPSBvTW9kZWw7XG5cdH1cblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMubW9ja01vZGVsIGFzIGFueSBhcyBPRGF0YU1vZGVsO1xuXHR9KTtcblxuXHRwdWJsaWMgc2V0UGF0aChwYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcblx0XHR0aGlzLm1vY2tQYXRoID0gcGF0aCA/IHBhdGggOiBcIlwiO1xuXHR9XG5cdHB1YmxpYyBnZXRQYXRoID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMubW9ja1BhdGg7XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRWYWx1ZSA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzPy5tb2NrTW9kZWw/LmdldFByb3BlcnR5KGAvJHt0aGlzLm1vY2tQYXRofWApO1xuXHR9KTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb21wb3NpdGVCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxDb21wb3NpdGVCaW5kaW5nPiB7XG5cdHByaXZhdGUgYUJpbmRpbmdzOiBNb2NrUHJvcGVydHlCaW5kaW5nW107XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKGFCaW5kaW5nczogTW9ja1Byb3BlcnR5QmluZGluZ1tdKSB7XG5cdFx0dGhpcy5hQmluZGluZ3MgPSBhQmluZGluZ3M7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5Db21wb3NpdGVCaW5kaW5nXCI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QmluZGluZ3MgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5hQmluZGluZ3M7XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRWYWx1ZSA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLmFCaW5kaW5ncy5tYXAoKGJpbmRpbmcpID0+IGJpbmRpbmcuZ2V0VmFsdWUoKSk7XG5cdH0pO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja0NvbnRleHRCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YUNvbnRleHRCaW5kaW5nPiB7XG5cdHByaXZhdGUgb01vY2tDb250ZXh0OiBNb2NrQ29udGV4dDtcblx0cHJpdmF0ZSBpc0tlcHRBbGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihvQ29udGV4dD86IGFueSwgcHJpdmF0ZSBtb2NrTW9kZWw/OiBNb2NrTW9kZWwpIHtcblx0XHR0aGlzLm9Nb2NrQ29udGV4dCA9IG5ldyBNb2NrQ29udGV4dChvQ29udGV4dCB8fCB7fSwgdGhpcyk7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5cdH1cblx0cHVibGljIGdldEludGVybmFsTW9ja0NvbnRleHQoKTogTW9ja0NvbnRleHQge1xuXHRcdHJldHVybiB0aGlzLm9Nb2NrQ29udGV4dDtcblx0fVxuXHRwdWJsaWMgc2V0TW9kZWwob01vZGVsOiBNb2NrTW9kZWwpIHtcblx0XHR0aGlzLm1vY2tNb2RlbCA9IG9Nb2RlbDtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0cHVibGljIGdldEJvdW5kQ29udGV4dCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9Nb2NrQ29udGV4dCBhcyBhbnkgYXMgQ29udGV4dDtcblx0fSk7XG5cdHB1YmxpYyBhdHRhY2hFdmVudE9uY2UgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm1vY2tNb2RlbCBhcyBhbnkgYXMgT0RhdGFNb2RlbDtcblx0fSk7XG59XG5cbi8qKlxuICogTW9jayBjbGFzcyBmb3IgT0RhdGEgVjQgTWV0YU1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2NrTWV0YU1vZGVsIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YU1ldGFNb2RlbD4ge1xuXHRwcml2YXRlIG9NZXRhQ29udGV4dDogTW9ja0NvbnRleHQ7XG5cdHJlcXVlc3RWYWx1ZUxpc3RJbmZvITogamVzdC5Nb2NrPGFueSwgYW55PjtcblxuXHRwdWJsaWMgY29uc3RydWN0b3Iob01ldGFEYXRhPzogYW55KSB7XG5cdFx0dGhpcy5vTWV0YUNvbnRleHQgPSBuZXcgTW9ja0NvbnRleHQob01ldGFEYXRhIHx8IHt9KTtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgZ2V0TWV0YUNvbnRleHQgPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBNb2NrQ29udGV4dCh7ICRwYXRoOiBzUGF0aCB9KSBhcyBhbnkgYXMgQ29udGV4dDtcblx0fSk7XG5cdHB1YmxpYyBnZXRPYmplY3QgPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub01ldGFDb250ZXh0LmdldFByb3BlcnR5KHNQYXRoKTtcblx0fSk7XG5cdHB1YmxpYyByZXF1ZXN0T2JqZWN0ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgY3JlYXRlQmluZGluZ0NvbnRleHQgPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIG5ldyBNb2NrQ29udGV4dCh7ICRwYXRoOiBzUGF0aCB9KSBhcyBhbnkgYXMgQ29udGV4dDtcblx0fSk7XG5cdHB1YmxpYyBnZXRNZXRhUGF0aCA9IGplc3QuZm4oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gc1BhdGg7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0Q29udGV4dCA9IGplc3QuZm4oKTtcbn1cblxuLyoqXG4gKiBNb2NrIGNsYXNzIGZvciBPRGF0YSBWNCBNb2RlbFxuICovXG5cbmV4cG9ydCBjbGFzcyBNb2NrTW9kZWwgaW1wbGVtZW50cyBQYXJ0aWFsPE9EYXRhTW9kZWw+IHtcblx0cHJpdmF0ZSBvTWV0YU1vZGVsPzogTW9ja01ldGFNb2RlbDtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBtb2NrTGlzdEJpbmRpbmc/OiBNb2NrTGlzdEJpbmRpbmcsIHByaXZhdGUgbW9ja0NvbnRleHRCaW5kaW5nPzogTW9ja0NvbnRleHRCaW5kaW5nKSB7XG5cdFx0aWYgKG1vY2tMaXN0QmluZGluZykge1xuXHRcdFx0bW9ja0xpc3RCaW5kaW5nLnNldE1vZGVsKHRoaXMpO1xuXHRcdH1cblx0XHRpZiAobW9ja0NvbnRleHRCaW5kaW5nKSB7XG5cdFx0XHRtb2NrQ29udGV4dEJpbmRpbmcuc2V0TW9kZWwodGhpcyk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gRmFjdG9yaWVzXG5cdHN0YXRpYyBtb2RlbEZyb21MaXN0QmluZGluZyhtb2NrTGlzdEJpbmRpbmc6IE1vY2tMaXN0QmluZGluZyk6IE1vY2tNb2RlbCB7XG5cdFx0cmV0dXJuIG5ldyBNb2NrTW9kZWwobW9ja0xpc3RCaW5kaW5nKTtcblx0fVxuXHRzdGF0aWMgbW9kZWxGcm9tQ29udGV4dEJpbmRpbmcobW9ja0NvbnRleHRCaW5kaW5nOiBNb2NrQ29udGV4dEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRcdHJldHVybiBuZXcgTW9ja01vZGVsKHVuZGVmaW5lZCwgbW9ja0NvbnRleHRCaW5kaW5nKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRNZXRhTW9kZWwob01ldGFNb2RlbDogTW9ja01ldGFNb2RlbCkge1xuXHRcdHRoaXMub01ldGFNb2RlbCA9IG9NZXRhTW9kZWw7XG5cdH1cblxuXHQvLyBNb2NrZWQgQVBJXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGJpbmRMaXN0ID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm1vY2tMaXN0QmluZGluZyBhcyBhbnkgYXMgT0RhdGFMaXN0QmluZGluZztcblx0fSk7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGJpbmRDb250ZXh0ID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm1vY2tDb250ZXh0QmluZGluZyBhcyBhbnkgYXMgT0RhdGFDb250ZXh0QmluZGluZztcblx0fSk7XG5cdHB1YmxpYyBnZXRNZXRhTW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vTWV0YU1vZGVsIGFzIGFueSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0fSk7XG5cblx0cHVibGljIGdldFByb3BlcnR5ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgc2V0UHJvcGVydHkgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyByZXF1ZXN0T2JqZWN0ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0S2VlcEFsaXZlQ29udGV4dCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tWaWV3IGltcGxlbWVudHMgUGFydGlhbDxWaWV3PiB7XG5cdHB1YmxpYyBnZXRDb250cm9sbGVyID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBnZXRCaW5kaW5nQ29udGV4dCA9IGplc3QuZm4oKTtcblxuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCk7XG5cblx0cHVibGljIGdldFZpZXdEYXRhID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLmNvcmUubXZjLlZpZXdcIjtcblx0fVxuXG5cdHB1YmxpYyBnZXRJZCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb250cm9sbGVyIGltcGxlbWVudHMgUGFydGlhbDxDb250cm9sbGVyPiB7XG5cdHB1YmxpYyBnZXRWaWV3ID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShuZXcgTW9ja1ZpZXcoKSk7XG5cblx0cHVibGljIF9yb3V0aW5nID0ge1xuXHRcdG5hdmlnYXRlVG9UYXJnZXQ6IGplc3QuZm4oKVxuXHR9O1xuXG5cdHB1YmxpYyBfZWRpdEZsb3cgPSB7XG5cdFx0c3luY1Rhc2s6IGplc3QuZm4oKVxuXHR9O1xuXG5cdHB1YmxpYyBfc2lkZUVmZmVjdHMgPSB7XG5cdFx0aGFuZGxlRmllbGRDaGFuZ2U6IGplc3QuZm4oKVxuXHR9O1xuXG5cdGlzQSA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1WQ01vY2sge1xuXHRtb2RlbDogTW9ja01vZGVsO1xuXHR2aWV3OiBNb2NrVmlldztcblx0Y29udHJvbGxlcjogTW9ja0NvbnRyb2xsZXI7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgbW9kZWwsIHZpZXcgYW5kIGNvbnRyb2xsZXIgbW9ja3MgdGhhdCByZWZlciB0byBlYWNoIG90aGVyLlxuICpcbiAqIEBwYXJhbSBleGlzdGluZyBPcHRpb25hbCBleGlzdGluZyBtb2NrZWQgaW5zdGFuY2VzIHRoYXQgc2hvdWxkIGJlIHVzZWRcbiAqIEByZXR1cm5zIE1vY2tlZCBtb2RlbCwgdmlldyBhbmQgY29udHJvbGxlciBpbnN0YW5jZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tNVkMoZXhpc3Rpbmc/OiBQYXJ0aWFsPE1WQ01vY2s+KTogTVZDTW9jayB7XG5cdGNvbnN0IG1vZGVsID0gZXhpc3Rpbmc/Lm1vZGVsIHx8IG5ldyBNb2NrTW9kZWwoKTtcblx0Y29uc3QgdmlldyA9IGV4aXN0aW5nPy52aWV3IHx8IG5ldyBNb2NrVmlldygpO1xuXHRjb25zdCBjb250cm9sbGVyID0gZXhpc3Rpbmc/LmNvbnRyb2xsZXIgfHwgbmV3IE1vY2tDb250cm9sbGVyKCk7XG5cblx0dmlldy5nZXRDb250cm9sbGVyLm1vY2tSZXR1cm5WYWx1ZShjb250cm9sbGVyKTtcblx0dmlldy5nZXRNb2RlbC5tb2NrUmV0dXJuVmFsdWUobW9kZWwpO1xuXHRjb250cm9sbGVyLmdldFZpZXcubW9ja1JldHVyblZhbHVlKHZpZXcpO1xuXG5cdHJldHVybiB7IG1vZGVsLCB2aWV3LCBjb250cm9sbGVyIH07XG59XG4iXX0=
438
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlVJNU1vY2tIZWxwZXIudHMiXSwibmFtZXMiOlsiTW9ja0NvbnRleHQiLCJvVmFsdWVzIiwib0JpbmRpbmciLCJpc0tlcHRBbGl2ZSIsImdldFByb3BlcnR5IiwiamVzdCIsImZuIiwia2V5IiwicmVxdWVzdFByb3BlcnR5IiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRQcm9wZXJ0eSIsInZhbHVlIiwiZ2V0T2JqZWN0IiwicGF0aCIsInJlc3VsdCIsImluZGV4T2YiLCJwYXJ0cyIsInNwbGl0IiwicmVkdWNlIiwic3VtIiwicGFydCIsImdldFBhdGgiLCJnZXRCaW5kaW5nIiwiZ2V0TW9kZWwiLCJpc1RyYW5zaWVudCIsInNldEtlZXBBbGl2ZSIsImJvb2wiLCJfZm5PbkJlZm9yZURlc3Ryb3kiLCJfYlJlcXVlc3RNZXNzYWdlcyIsImlzS2VlcEFsaXZlIiwicmVxdWVzdFNpZGVFZmZlY3RzIiwicmVxdWVzdE9iamVjdCIsImlzQSIsInNDbGFzc05hbWUiLCJNb2NrVUk1RWxlbWVudCIsImJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJtb2NrUmV0dXJuVmFsdWUiLCJnZXRCaW5kaW5nSW5mbyIsImRhdGEiLCJnZXRQYXJlbnQiLCJNb2NrQ29udHJvbCIsIk1vY2tFdmVudCIsInBhcmFtcyIsInNvdXJjZSIsImdldFBhcmFtZXRlciIsIm5hbWUiLCJnZXRTb3VyY2UiLCJNb2NrTGlzdEJpbmRpbmciLCJhQ29udGV4dHMiLCJtb2NrTW9kZWwiLCJzZXRBZ2dyZWdhdGlvbiIsImZpbHRlciIsInNvcnQiLCJnZXRRdWVyeU9wdGlvbnNGcm9tUGFyYW1ldGVycyIsImlzU3VzcGVuZGVkIiwicmVzdW1lIiwicmVmcmVzaCIsInN1c3BlbmQiLCJyZXF1ZXN0Q29udGV4dHMiLCJhTW9ja0NvbnRleHRzIiwiZ2V0Q3VycmVudENvbnRleHRzIiwiZ2V0VXBkYXRlR3JvdXBJZCIsIm1hcCIsImNvbnRleHQiLCJzZXRNb2RlbCIsIm9Nb2RlbCIsIk1vY2tQcm9wZXJ0eUJpbmRpbmciLCJtb2NrUGF0aCIsImdldFZhbHVlIiwic2V0UGF0aCIsIk1vY2tDb21wb3NpdGVCaW5kaW5nIiwiYUJpbmRpbmdzIiwiZ2V0QmluZGluZ3MiLCJiaW5kaW5nIiwiTW9ja0NvbnRleHRCaW5kaW5nIiwib0NvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJvTW9ja0NvbnRleHQiLCJhdHRhY2hFdmVudE9uY2UiLCJzZXRQYXJhbWV0ZXIiLCJleGVjdXRlIiwibW9ja1Jlc29sdmVkVmFsdWUiLCJnZXRHcm91cElkIiwiZ2V0SW50ZXJuYWxNb2NrQ29udGV4dCIsIk1vY2tNZXRhTW9kZWwiLCJvTWV0YURhdGEiLCJnZXRNZXRhQ29udGV4dCIsInNQYXRoIiwiJHBhdGgiLCJvTWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldE1ldGFQYXRoIiwibWV0YW1vZGVsIiwiT0RhdGFNZXRhTW9kZWwiLCJnZXRDb250ZXh0IiwiTW9ja01vZGVsIiwibW9ja0xpc3RCaW5kaW5nIiwibW9ja0NvbnRleHRCaW5kaW5nIiwiYmluZExpc3QiLCJiaW5kQ29udGV4dCIsImdldE1ldGFNb2RlbCIsIm9NZXRhTW9kZWwiLCJnZXRLZWVwQWxpdmVDb250ZXh0IiwibW9kZWxGcm9tTGlzdEJpbmRpbmciLCJtb2RlbEZyb21Db250ZXh0QmluZGluZyIsInVuZGVmaW5lZCIsInNldE1ldGFNb2RlbCIsIk1vY2tWaWV3IiwiZ2V0Q29udHJvbGxlciIsImdldFZpZXdEYXRhIiwiZ2V0SWQiLCJNb2NrQ29udHJvbGxlciIsImdldFZpZXciLCJfcm91dGluZyIsIm5hdmlnYXRlVG9UYXJnZXQiLCJfZWRpdEZsb3ciLCJzeW5jVGFzayIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkQ2hhbmdlIiwibW9ja01WQyIsImV4aXN0aW5nIiwibW9kZWwiLCJ2aWV3IiwiY29udHJvbGxlciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztNQWVhQSxXO0FBRVoseUJB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Q2QsYUFBTCxDQUFtQnhFLGVBQW5CLENBQW1DdUYsVUFBbkM7QUFDQUQsSUFBQUEsSUFBSSxDQUFDcEcsUUFBTCxDQUFjYyxlQUFkLENBQThCcUYsS0FBOUI7QUFDQUUsSUFBQUEsVUFBVSxDQUFDWCxPQUFYLENBQW1CNUUsZUFBbkIsQ0FBbUNzRixJQUFuQztBQUVBLFdBQU87QUFBRUQsTUFBQUEsS0FBSyxFQUFMQSxLQUFGO0FBQVNDLE1BQUFBLElBQUksRUFBSkEsSUFBVDtBQUFlQyxNQUFBQSxVQUFVLEVBQVZBO0FBQWYsS0FBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1vY2sgY2xhc3MgZm9yIGEgVjQgQ29udGV4dFxuICovXG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2xsZXIgZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgQ29tcG9zaXRlQmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL0NvbXBvc2l0ZUJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFDb250ZXh0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhQ29udGV4dEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFQcm9wZXJ0eUJpbmRpbmdcIjtcblxuZXhwb3J0IGNsYXNzIE1vY2tDb250ZXh0IGltcGxlbWVudHMgUGFydGlhbDxDb250ZXh0PiB7XG5cdHByaXZhdGUgaXNLZXB0QWxpdmUgPSBmYWxzZTtcblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgb1ZhbHVlcz86IGFueSwgcHJpdmF0ZSBvQmluZGluZz86IGFueSkge31cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XCI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UHJvcGVydHkgPSBqZXN0LmZuKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNba2V5XTtcblx0fSk7XG5cdHB1YmxpYyByZXF1ZXN0UHJvcGVydHkgPSBqZXN0LmZuKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5vVmFsdWVzW2tleV0pO1xuXHR9KTtcblx0cHVibGljIHNldFByb3BlcnR5ID0gamVzdC5mbigoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHR0aGlzLm9WYWx1ZXNba2V5XSA9IHZhbHVlO1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNba2V5XTtcblx0fSk7XG5cblx0cHVibGljIGdldE9iamVjdCA9IGplc3QuZm4oKHBhdGg6IHN0cmluZykgPT4ge1xuXHRcdGxldCByZXN1bHQgPSBwYXRoID8gdGhpcy5vVmFsdWVzW3BhdGhdIDogdGhpcy5vVmFsdWVzO1xuXG5cdFx0aWYgKCFyZXN1bHQgJiYgcGF0aCAmJiBwYXRoLmluZGV4T2YoXCIvXCIpID4gLTEpIHtcblx0XHRcdGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRyZXN1bHQgPSBwYXJ0cy5yZWR1Y2UoKHN1bSwgcGFydDogYW55KSA9PiB7XG5cdFx0XHRcdHN1bSA9IHBhcnQgPyBzdW1bcGFydF0gOiBzdW07XG5cdFx0XHRcdHJldHVybiBzdW07XG5cdFx0XHR9LCB0aGlzLm9WYWx1ZXMpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0UGF0aCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNbXCIkcGF0aFwiXTtcblx0fSk7XG5cblx0cHVibGljIGdldEJpbmRpbmcgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5vQmluZGluZztcblx0fSk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9CaW5kaW5nPy5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdH0pO1xuXHRwdWJsaWMgaXNUcmFuc2llbnQgPSBqZXN0LmZuKCk7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIHNldEtlZXBBbGl2ZSA9IGplc3QuZm4oKGJvb2w6IGJvb2xlYW4sIF9mbk9uQmVmb3JlRGVzdHJveT86IGFueSwgX2JSZXF1ZXN0TWVzc2FnZXM/OiBib29sZWFuKSA9PiB7XG5cdFx0dGhpcy5pc0tlcHRBbGl2ZSA9IGJvb2w7XG5cdH0pO1xuXHRwdWJsaWMgaXNLZWVwQWxpdmUgPSBqZXN0LmZuKCgpID0+IHRoaXMuaXNLZXB0QWxpdmUpO1xuXHRwdWJsaWMgcmVxdWVzdFNpZGVFZmZlY3RzID0gamVzdC5mbigpO1xuXHRwdWJsaWMgcmVxdWVzdE9iamVjdCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tVSTVFbGVtZW50IGltcGxlbWVudHMgUGFydGlhbDxVSTVFbGVtZW50PiB7XG5cdFtrZXk6IHN0cmluZ106IGFueTtcblx0cHVibGljIGJpbmRpbmdDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KHt9KTtcblx0cHVibGljIGdldEJpbmRpbmcgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRCaW5kaW5nQ29udGV4dCA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUodGhpcy5iaW5kaW5nQ29udGV4dCk7XG5cdHB1YmxpYyBnZXRCaW5kaW5nSW5mbyA9IGplc3QuZm4oKTtcblx0cHVibGljIGRhdGEgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldFBhcmVudCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb250cm9sIGV4dGVuZHMgTW9ja1VJNUVsZW1lbnQgaW1wbGVtZW50cyBQYXJ0aWFsPENvbnRyb2w+IHtcblx0cHVibGljIGdldEJpbmRpbmdDb250ZXh0OiBqZXN0Lk1vY2s8YW55LCBhbnk+ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0TW9kZWw6IGplc3QuTW9jazxhbnksIGFueT4gPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrRXZlbnQgaW1wbGVtZW50cyBQYXJ0aWFsPEV2ZW50PiB7XG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge30sIHB1YmxpYyBzb3VyY2U6IE1vY2tVSTVFbGVtZW50ID0gbmV3IE1vY2tVSTVFbGVtZW50KCkpIHt9XG5cblx0cHVibGljIGdldFBhcmFtZXRlciA9IGplc3QuZm4oKG5hbWUpID0+IHRoaXMucGFyYW1zW25hbWVdKTtcblxuXHRwdWJsaWMgZ2V0U291cmNlID0gamVzdC5mbigoKSA9PiB0aGlzLnNvdXJjZSBhcyBhbnkpO1xufVxuXG4vKipcbiAqIE1vY2sgY2xhc3MgZm9yIE9EYXRhIFY0IExpc3RCaW5kaW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2NrTGlzdEJpbmRpbmcgaW1wbGVtZW50cyBQYXJ0aWFsPE9EYXRhTGlzdEJpbmRpbmc+IHtcblx0cHJpdmF0ZSBhTW9ja0NvbnRleHRzOiBNb2NrQ29udGV4dFtdO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihhQ29udGV4dHM/OiBhbnlbXSwgcHJpdmF0ZSBtb2NrTW9kZWw/OiBNb2NrTW9kZWwpIHtcblx0XHRhQ29udGV4dHMgPSBhQ29udGV4dHMgfHwgW107XG5cblx0XHR0aGlzLmFNb2NrQ29udGV4dHMgPSBhQ29udGV4dHMubWFwKChjb250ZXh0KSA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IE1vY2tDb250ZXh0KGNvbnRleHQsIHRoaXMpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIGlzQShzQ2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiO1xuXHR9XG5cblx0cHVibGljIHNldE1vZGVsKG9Nb2RlbDogTW9ja01vZGVsKSB7XG5cdFx0dGhpcy5tb2NrTW9kZWwgPSBvTW9kZWw7XG5cdH1cblxuXHQvLyBNb2NrZWQgQVBJXG5cdHB1YmxpYyBzZXRBZ2dyZWdhdGlvbiA9IGplc3QuZm4oKTtcblx0cHVibGljIGZpbHRlciA9IGplc3QuZm4oKTtcblx0cHVibGljIHNvcnQgPSBqZXN0LmZuKCk7XG5cblx0cHVibGljIGdldFF1ZXJ5T3B0aW9uc0Zyb21QYXJhbWV0ZXJzID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0UGF0aCA9IGplc3QuZm4oKTtcblx0cHVibGljIGlzU3VzcGVuZGVkID0gamVzdC5mbigpO1xuXHRwdWJsaWMgcmVzdW1lID0gamVzdC5mbigpO1xuXHRwdWJsaWMgcmVmcmVzaCA9IGplc3QuZm4oKTtcblx0cHVibGljIHN1c3BlbmQgPSBqZXN0LmZuKCk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgcmVxdWVzdENvbnRleHRzID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5hTW9ja0NvbnRleHRzIGFzIGFueSBhcyBDb250ZXh0W10pO1xuXHR9KTtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgZ2V0Q3VycmVudENvbnRleHRzID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiB0aGlzLmFNb2NrQ29udGV4dHMgYXMgYW55IGFzIENvbnRleHRbXTtcblx0fSk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm1vY2tNb2RlbCBhcyBhbnkgYXMgT0RhdGFNb2RlbDtcblx0fSk7XG5cdHB1YmxpYyBnZXRVcGRhdGVHcm91cElkID0gamVzdC5mbigoKSA9PiBcImF1dG9cIik7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrUHJvcGVydHlCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YVByb3BlcnR5QmluZGluZz4ge1xuXHRwcml2YXRlIG1vY2tNb2RlbCE6IEpTT05Nb2RlbDtcblx0cHJpdmF0ZSBtb2NrUGF0aCE6IHN0cmluZztcblxuXHRwdWJsaWMgY29uc3RydWN0b3IobW9ja01vZGVsOiBKU09OTW9kZWwsIG1vY2tQYXRoOiBzdHJpbmcpIHtcblx0XHR0aGlzLnNldE1vZGVsKG1vY2tNb2RlbCk7XG5cdFx0dGhpcy5zZXRQYXRoKG1vY2tQYXRoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhUHJvcGVydHlCaW5kaW5nXCI7XG5cdH1cblxuXHRwdWJsaWMgc2V0TW9kZWwob01vZGVsOiBKU09OTW9kZWwpIHtcblx0XHR0aGlzLm1vY2tNb2RlbCA9IG9Nb2RlbDtcblx0fVxuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5tb2NrTW9kZWwgYXMgYW55IGFzIE9EYXRhTW9kZWw7XG5cdH0pO1xuXG5cdHB1YmxpYyBzZXRQYXRoKHBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuXHRcdHRoaXMubW9ja1BhdGggPSBwYXRoID8gcGF0aCA6IFwiXCI7XG5cdH1cblx0cHVibGljIGdldFBhdGggPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5tb2NrUGF0aDtcblx0fSk7XG5cblx0cHVibGljIGdldFZhbHVlID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXM/Lm1vY2tNb2RlbD8uZ2V0UHJvcGVydHkoYC8ke3RoaXMubW9ja1BhdGh9YCk7XG5cdH0pO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja0NvbXBvc2l0ZUJpbmRpbmcgaW1wbGVtZW50cyBQYXJ0aWFsPENvbXBvc2l0ZUJpbmRpbmc+IHtcblx0cHJpdmF0ZSBhQmluZGluZ3M6IE1vY2tQcm9wZXJ0eUJpbmRpbmdbXTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoYUJpbmRpbmdzOiBNb2NrUHJvcGVydHlCaW5kaW5nW10pIHtcblx0XHR0aGlzLmFCaW5kaW5ncyA9IGFCaW5kaW5ncztcblx0fVxuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLkNvbXBvc2l0ZUJpbmRpbmdcIjtcblx0fVxuXG5cdHB1YmxpYyBnZXRCaW5kaW5ncyA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLmFCaW5kaW5ncztcblx0fSk7XG5cblx0cHVibGljIGdldFZhbHVlID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMuYUJpbmRpbmdzLm1hcCgoYmluZGluZykgPT4gYmluZGluZy5nZXRWYWx1ZSgpKTtcblx0fSk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udGV4dEJpbmRpbmcgaW1wbGVtZW50cyBQYXJ0aWFsPE9EYXRhQ29udGV4dEJpbmRpbmc+IHtcblx0cHJpdmF0ZSBvTW9ja0NvbnRleHQ6IE1vY2tDb250ZXh0O1xuXHRwcml2YXRlIGlzS2VwdEFsaXZlOiBib29sZWFuID0gZmFsc2U7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG9Db250ZXh0PzogYW55LCBwcml2YXRlIG1vY2tNb2RlbD86IE1vY2tNb2RlbCkge1xuXHRcdHRoaXMub01vY2tDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KG9Db250ZXh0IHx8IHt9LCB0aGlzKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhQ29udGV4dEJpbmRpbmdcIjtcblx0fVxuXHRwdWJsaWMgZ2V0SW50ZXJuYWxNb2NrQ29udGV4dCgpOiBNb2NrQ29udGV4dCB7XG5cdFx0cmV0dXJuIHRoaXMub01vY2tDb250ZXh0O1xuXHR9XG5cdHB1YmxpYyBzZXRNb2RlbChvTW9kZWw6IE1vY2tNb2RlbCkge1xuXHRcdHRoaXMubW9ja01vZGVsID0gb01vZGVsO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHRwdWJsaWMgZ2V0Qm91bmRDb250ZXh0ID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub01vY2tDb250ZXh0IGFzIGFueSBhcyBDb250ZXh0O1xuXHR9KTtcblx0cHVibGljIGF0dGFjaEV2ZW50T25jZSA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMubW9ja01vZGVsIGFzIGFueSBhcyBPRGF0YU1vZGVsO1xuXHR9KTtcblx0cHVibGljIHNldFBhcmFtZXRlciA9IGplc3QuZm4oKTtcblx0cHVibGljIGV4ZWN1dGUgPSBqZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUodHJ1ZSk7XG5cdHB1YmxpYyBnZXRHcm91cElkID0gamVzdC5mbigpO1xufVxuXG4vKipcbiAqIE1vY2sgY2xhc3MgZm9yIE9EYXRhIFY0IE1ldGFNb2RlbFxuICovXG5leHBvcnQgY2xhc3MgTW9ja01ldGFNb2RlbCBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFNZXRhTW9kZWw+IHtcblx0cHJpdmF0ZSBvTWV0YUNvbnRleHQ6IE1vY2tDb250ZXh0O1xuXHRyZXF1ZXN0VmFsdWVMaXN0SW5mbyE6IGplc3QuTW9jazxhbnksIGFueT47XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG9NZXRhRGF0YT86IGFueSkge1xuXHRcdHRoaXMub01ldGFDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KG9NZXRhRGF0YSB8fCB7fSk7XG5cdH1cblxuXHQvLyBNb2NrZWQgQVBJXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGdldE1ldGFDb250ZXh0ID0gamVzdC5mbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBuZXcgTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSkgYXMgYW55IGFzIENvbnRleHQ7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0T2JqZWN0ID0gamVzdC5mbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9NZXRhQ29udGV4dC5nZXRQcm9wZXJ0eShzUGF0aCk7XG5cdH0pO1xuXHRwdWJsaWMgcmVxdWVzdE9iamVjdCA9IGplc3QuZm4oKTtcblx0cHVibGljIGNyZWF0ZUJpbmRpbmdDb250ZXh0ID0gamVzdC5mbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBuZXcgTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSkgYXMgYW55IGFzIENvbnRleHQ7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TWV0YVBhdGggPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0Y29uc3QgbWV0YW1vZGVsID0gbmV3IE9EYXRhTWV0YU1vZGVsKCk7XG5cdFx0cmV0dXJuIHNQYXRoID8gbWV0YW1vZGVsLmdldE1ldGFQYXRoKHNQYXRoKSA6IHNQYXRoO1xuXHR9KTtcblx0cHVibGljIGdldENvbnRleHQgPSBqZXN0LmZuKCk7XG59XG5cbi8qKlxuICogTW9jayBjbGFzcyBmb3IgT0RhdGEgVjQgTW9kZWxcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW9ja01vZGVsIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YU1vZGVsPiB7XG5cdHByaXZhdGUgb01ldGFNb2RlbD86IE1vY2tNZXRhTW9kZWw7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9ja0xpc3RCaW5kaW5nPzogTW9ja0xpc3RCaW5kaW5nLCBwcml2YXRlIG1vY2tDb250ZXh0QmluZGluZz86IE1vY2tDb250ZXh0QmluZGluZykge1xuXHRcdGlmIChtb2NrTGlzdEJpbmRpbmcpIHtcblx0XHRcdG1vY2tMaXN0QmluZGluZy5zZXRNb2RlbCh0aGlzKTtcblx0XHR9XG5cdFx0aWYgKG1vY2tDb250ZXh0QmluZGluZykge1xuXHRcdFx0bW9ja0NvbnRleHRCaW5kaW5nLnNldE1vZGVsKHRoaXMpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEZhY3Rvcmllc1xuXHRzdGF0aWMgbW9kZWxGcm9tTGlzdEJpbmRpbmcobW9ja0xpc3RCaW5kaW5nOiBNb2NrTGlzdEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRcdHJldHVybiBuZXcgTW9ja01vZGVsKG1vY2tMaXN0QmluZGluZyk7XG5cdH1cblx0c3RhdGljIG1vZGVsRnJvbUNvbnRleHRCaW5kaW5nKG1vY2tDb250ZXh0QmluZGluZzogTW9ja0NvbnRleHRCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0XHRyZXR1cm4gbmV3IE1vY2tNb2RlbCh1bmRlZmluZWQsIG1vY2tDb250ZXh0QmluZGluZyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TWV0YU1vZGVsKG9NZXRhTW9kZWw6IE1vY2tNZXRhTW9kZWwpIHtcblx0XHR0aGlzLm9NZXRhTW9kZWwgPSBvTWV0YU1vZGVsO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBiaW5kTGlzdCA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5tb2NrTGlzdEJpbmRpbmcgYXMgYW55IGFzIE9EYXRhTGlzdEJpbmRpbmc7XG5cdH0pO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBiaW5kQ29udGV4dCA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gdGhpcy5tb2NrQ29udGV4dEJpbmRpbmcgYXMgYW55IGFzIE9EYXRhQ29udGV4dEJpbmRpbmc7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TWV0YU1vZGVsID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub01ldGFNb2RlbCBhcyBhbnkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRQcm9wZXJ0eSA9IGplc3QuZm4oKTtcblx0cHVibGljIHNldFByb3BlcnR5ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgcmVxdWVzdE9iamVjdCA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldEtlZXBBbGl2ZUNvbnRleHQgPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrVmlldyBpbXBsZW1lbnRzIFBhcnRpYWw8Vmlldz4ge1xuXHRwdWJsaWMgZ2V0Q29udHJvbGxlciA9IGplc3QuZm4oKTtcblxuXHRwdWJsaWMgZ2V0QmluZGluZ0NvbnRleHQgPSBqZXN0LmZuKCk7XG5cblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBnZXRWaWV3RGF0YSA9IGplc3QuZm4oKTtcblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5jb3JlLm12Yy5WaWV3XCI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0SWQgPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udHJvbGxlciBpbXBsZW1lbnRzIFBhcnRpYWw8Q29udHJvbGxlcj4ge1xuXHRwdWJsaWMgZ2V0VmlldyA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUobmV3IE1vY2tWaWV3KCkpO1xuXG5cdHB1YmxpYyBfcm91dGluZyA9IHtcblx0XHRuYXZpZ2F0ZVRvVGFyZ2V0OiBqZXN0LmZuKClcblx0fTtcblxuXHRwdWJsaWMgX2VkaXRGbG93ID0ge1xuXHRcdHN5bmNUYXNrOiBqZXN0LmZuKClcblx0fTtcblxuXHRwdWJsaWMgX3NpZGVFZmZlY3RzID0ge1xuXHRcdGhhbmRsZUZpZWxkQ2hhbmdlOiBqZXN0LmZuKClcblx0fTtcblxuXHRpc0EgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNVkNNb2NrIHtcblx0bW9kZWw6IE1vY2tNb2RlbDtcblx0dmlldzogTW9ja1ZpZXc7XG5cdGNvbnRyb2xsZXI6IE1vY2tDb250cm9sbGVyO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIG1vZGVsLCB2aWV3IGFuZCBjb250cm9sbGVyIG1vY2tzIHRoYXQgcmVmZXIgdG8gZWFjaCBvdGhlci5cbiAqXG4gKiBAcGFyYW0gZXhpc3RpbmcgT3B0aW9uYWwgZXhpc3RpbmcgbW9ja2VkIGluc3RhbmNlcyB0aGF0IHNob3VsZCBiZSB1c2VkXG4gKiBAcmV0dXJucyBNb2NrZWQgbW9kZWwsIHZpZXcgYW5kIGNvbnRyb2xsZXIgaW5zdGFuY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrTVZDKGV4aXN0aW5nPzogUGFydGlhbDxNVkNNb2NrPik6IE1WQ01vY2sge1xuXHRjb25zdCBtb2RlbCA9IGV4aXN0aW5nPy5tb2RlbCB8fCBuZXcgTW9ja01vZGVsKCk7XG5cdGNvbnN0IHZpZXcgPSBleGlzdGluZz8udmlldyB8fCBuZXcgTW9ja1ZpZXcoKTtcblx0Y29uc3QgY29udHJvbGxlciA9IGV4aXN0aW5nPy5jb250cm9sbGVyIHx8IG5ldyBNb2NrQ29udHJvbGxlcigpO1xuXG5cdHZpZXcuZ2V0Q29udHJvbGxlci5tb2NrUmV0dXJuVmFsdWUoY29udHJvbGxlcik7XG5cdHZpZXcuZ2V0TW9kZWwubW9ja1JldHVyblZhbHVlKG1vZGVsKTtcblx0Y29udHJvbGxlci5nZXRWaWV3Lm1vY2tSZXR1cm5WYWx1ZSh2aWV3KTtcblxuXHRyZXR1cm4geyBtb2RlbCwgdmlldywgY29udHJvbGxlciB9O1xufVxuIl19
@@ -11,7 +11,7 @@ import type JSONModel from "sap/ui/model/json/JSONModel";
11
11
  import type Context from "sap/ui/model/odata/v4/Context";
12
12
  import type ODataContextBinding from "sap/ui/model/odata/v4/ODataContextBinding";
13
13
  import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
14
- import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
14
+ import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
15
15
  import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
16
16
  import type ODataPropertyBinding from "sap/ui/model/odata/v4/ODataPropertyBinding";
17
17
 
@@ -118,6 +118,13 @@ export class MockListBinding implements Partial<ODataListBinding> {
118
118
  public filter = jest.fn();
119
119
  public sort = jest.fn();
120
120
 
121
+ public getQueryOptionsFromParameters = jest.fn();
122
+ public getPath = jest.fn();
123
+ public isSuspended = jest.fn();
124
+ public resume = jest.fn();
125
+ public refresh = jest.fn();
126
+ public suspend = jest.fn();
127
+
121
128
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
122
129
  public requestContexts = jest.fn((...args) => {
123
130
  return Promise.resolve(this.aMockContexts as any as Context[]);
@@ -210,6 +217,9 @@ export class MockContextBinding implements Partial<ODataContextBinding> {
210
217
  public getModel = jest.fn(() => {
211
218
  return this.mockModel as any as ODataModel;
212
219
  });
220
+ public setParameter = jest.fn();
221
+ public execute = jest.fn().mockResolvedValue(true);
222
+ public getGroupId = jest.fn();
213
223
  }
214
224
 
215
225
  /**
@@ -236,7 +246,8 @@ export class MockMetaModel implements Partial<ODataMetaModel> {
236
246
  return new MockContext({ $path: sPath }) as any as Context;
237
247
  });
238
248
  public getMetaPath = jest.fn((sPath: string) => {
239
- return sPath;
249
+ const metamodel = new ODataMetaModel();
250
+ return sPath ? metamodel.getMetaPath(sPath) : sPath;
240
251
  });
241
252
  public getContext = jest.fn();
242
253
  }
@@ -40,7 +40,7 @@ sap.ui.define(["./DialogAPI", "sap/fe/test/Utils"], function (DialogAPI, Utils)
40
40
  .execute()
41
41
  );
42
42
  };
43
-
43
+
44
44
  /**
45
45
  * Checks the confirmation button of the dialog.
46
46
  *
@@ -249,6 +249,42 @@ sap.ui.define(
249
249
  DialogValueHelpAssertions.prototype.iCheckDefineConditions = function (mState) {
250
250
  return _checkTabBuilder(this, "-VHP--defineCondition", mState);
251
251
  };
252
+ /**
253
+ * Checks the dialog.
254
+ *
255
+ * @param {object} [mDialogState] Defines the expected state of the dialog
256
+ * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
257
+ * @public
258
+ */
259
+ DialogValueHelpAssertions.prototype.iCheckState = function (mDialogState) {
260
+ if (this.getIdentifier().type === "ValueHelp" && mDialogState && mDialogState.title && Object.keys(mDialogState).length === 1) {
261
+ //TODO: check VH Dialog title
262
+ return this.prepareResult(
263
+ this.getBuilder()
264
+ .has(function (oControl) {
265
+ var sTitle = oControl.getParent && oControl.getParent() && oControl.getParent().getProperty("title");
266
+ return sTitle && sTitle.indexOf(mDialogState.title) >= 0;
267
+ })
268
+ //.hasState(mDialogState)
269
+ .description(Utils.formatMessage("Checking dialog '{0}' in state '{1}'", this.getIdentifier(), mDialogState))
270
+ .execute()
271
+ );
272
+ } else {
273
+ return this.prepareResult(
274
+ this.getBuilder()
275
+ .has(function (oControl) {
276
+ var sTitle = oControl.getTitle && oControl.getTitle();
277
+ if (mDialogState && sTitle === "Select: " + mDialogState.title) {
278
+ oControl.setTitle(mDialogState.title); //TODO testing
279
+ }
280
+ return true;
281
+ })
282
+ .hasState(mDialogState)
283
+ .description(Utils.formatMessage("Checking dialog '{0}' in state '{1}'", this.getIdentifier(), mDialogState))
284
+ .execute()
285
+ );
286
+ }
287
+ };
252
288
 
253
289
  return DialogValueHelpAssertions;
254
290
  }
@@ -3,110 +3,108 @@
3
3
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
 
5
5
  */
6
- sap.ui.define(["./FEBuilder", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/DialogBuilder"], function(
7
- FEBuilder,
8
- Utils,
9
- OpaBuilder,
10
- DialogBuilder
11
- ) {
12
- "use strict";
13
-
14
- var FilterBarBuilder = function() {
15
- return FEBuilder.apply(this, arguments);
16
- };
17
-
18
- FilterBarBuilder.create = function(oOpaInstance) {
19
- return new FilterBarBuilder(oOpaInstance);
20
- };
21
-
22
- FilterBarBuilder.prototype = Object.create(FEBuilder.prototype);
23
- FilterBarBuilder.prototype.constructor = FilterBarBuilder;
24
-
25
- FilterBarBuilder.createAdaptationDialogBuilder = function(oOpaInstance) {
26
- return DialogBuilder.create(oOpaInstance).hasAggregation("customHeader");
27
- };
28
-
29
- FilterBarBuilder.prototype.hasField = function(vFieldMatcher, mState, bReturnField) {
30
- var aArguments = Utils.parseArguments([[Array, Object, Function], Object, Boolean], arguments);
31
- vFieldMatcher = aArguments[0];
32
- mState = aArguments[1];
33
- bReturnField = aArguments[2];
34
-
35
- if (mState) {
36
- var vStatesMatcher = this.getStatesMatcher(mState);
37
- if (mState.visible === false) {
38
- // when checking for not visible, the either no field exists or existing field is not visible (like the provided state)
39
- return this.hasSome(
40
- OpaBuilder.Matchers.not(OpaBuilder.Matchers.aggregationMatcher("filterItems", vFieldMatcher)),
41
- OpaBuilder.Matchers.aggregationMatcher("filterItems", [vStatesMatcher].concat(vFieldMatcher || []))
42
- );
6
+ sap.ui.define(
7
+ ["./FEBuilder", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/DialogBuilder"],
8
+ function (FEBuilder, Utils, OpaBuilder, DialogBuilder) {
9
+ "use strict";
10
+
11
+ var FilterBarBuilder = function () {
12
+ return FEBuilder.apply(this, arguments);
13
+ };
14
+
15
+ FilterBarBuilder.create = function (oOpaInstance) {
16
+ return new FilterBarBuilder(oOpaInstance);
17
+ };
18
+
19
+ FilterBarBuilder.prototype = Object.create(FEBuilder.prototype);
20
+ FilterBarBuilder.prototype.constructor = FilterBarBuilder;
21
+
22
+ FilterBarBuilder.createAdaptationDialogBuilder = function (oOpaInstance) {
23
+ return DialogBuilder.create(oOpaInstance).hasAggregation("customHeader");
24
+ };
25
+
26
+ FilterBarBuilder.prototype.hasField = function (vFieldMatcher, mState, bReturnField) {
27
+ var aArguments = Utils.parseArguments([[Array, Object, Function], Object, Boolean], arguments);
28
+ vFieldMatcher = aArguments[0];
29
+ mState = aArguments[1];
30
+ bReturnField = aArguments[2];
31
+
32
+ if (mState) {
33
+ var vStatesMatcher = this.getStatesMatcher(mState);
34
+ if (mState.visible === false) {
35
+ // when checking for not visible, the either no field exists or existing field is not visible (like the provided state)
36
+ return this.hasSome(
37
+ OpaBuilder.Matchers.not(OpaBuilder.Matchers.aggregationMatcher("filterItems", vFieldMatcher)),
38
+ OpaBuilder.Matchers.aggregationMatcher("filterItems", [vStatesMatcher].concat(vFieldMatcher || []))
39
+ );
40
+ }
41
+ vFieldMatcher = [vStatesMatcher].concat(vFieldMatcher || []);
43
42
  }
44
- vFieldMatcher = [vStatesMatcher].concat(vFieldMatcher || []);
45
- }
46
-
47
- return bReturnField
48
- ? this.has(OpaBuilder.Matchers.aggregation("filterItems", vFieldMatcher)).has(FEBuilder.Matchers.atIndex(0))
49
- : this.has(OpaBuilder.Matchers.aggregationMatcher("filterItems", vFieldMatcher));
50
- };
51
-
52
- FilterBarBuilder.prototype.hasEditingStatus = function(oEditState, mState) {
53
- var fnEditStateMatcher = OpaBuilder.Matchers.resourceBundle("label", "sap.fe.macros", "M_COMMON_FILTERBAR_EDITING_STATUS");
54
- if (mState && "visible" in mState && mState.visible === false) {
55
- return this.has(function(oFilterBar) {
56
- return !oFilterBar.getFilterItems().some(FEBuilder.Matchers.match(fnEditStateMatcher));
57
- });
58
- }
59
-
60
- var aFilterItemsMatchers = [fnEditStateMatcher];
61
- if (oEditState) {
62
- aFilterItemsMatchers.push(
63
- OpaBuilder.Matchers.hasAggregation("contentEdit", OpaBuilder.Matchers.properties("selectedKey", oEditState.id))
64
- );
65
- }
66
- if (mState && Object.keys(mState).length) {
67
- aFilterItemsMatchers.push(FEBuilder.Matchers.states(mState));
68
- }
69
-
70
- return this.hasAggregation("filterItems", aFilterItemsMatchers);
71
- };
72
-
73
- FilterBarBuilder.prototype.hasSearchField = function(sSearchText, mState) {
74
- var aMatchers = [];
75
- if (mState) {
76
- if (mState.visible === false) {
77
- return this.has(function(oFilterBar) {
78
- return !oFilterBar.getBasicSearchField();
43
+
44
+ return bReturnField
45
+ ? this.has(OpaBuilder.Matchers.aggregation("filterItems", vFieldMatcher)).has(FEBuilder.Matchers.atIndex(0))
46
+ : this.has(OpaBuilder.Matchers.aggregationMatcher("filterItems", vFieldMatcher));
47
+ };
48
+
49
+ FilterBarBuilder.prototype.hasEditingStatus = function (oEditState, mState) {
50
+ var fnEditStateMatcher = OpaBuilder.Matchers.resourceBundle("label", "sap.fe.macros", "FILTERBAR_EDITING_STATUS");
51
+ if (mState && "visible" in mState && mState.visible === false) {
52
+ return this.has(function (oFilterBar) {
53
+ return !oFilterBar.getFilterItems().some(FEBuilder.Matchers.match(fnEditStateMatcher));
79
54
  });
80
55
  }
81
- aMatchers.push(FEBuilder.Matchers.states(mState));
82
- }
83
- if (sSearchText) {
84
- aMatchers.push(OpaBuilder.Matchers.properties({ value: sSearchText }));
85
- }
86
-
87
- return this.hasAggregation("basicSearchField", aMatchers);
88
- };
89
-
90
- FilterBarBuilder.prototype.doChangeEditingStatus = function(vEditState) {
91
- var fnEditStateMatcher = OpaBuilder.Matchers.resourceBundle("label", "sap.fe.macros", "M_COMMON_FILTERBAR_EDITING_STATUS");
92
- return this.doOnAggregation("filterItems", fnEditStateMatcher, OpaBuilder.Actions.enterText(vEditState.display));
93
- };
94
-
95
- FilterBarBuilder.prototype.doChangeSearch = function(sSearchText) {
96
- return this.doOnAggregation("basicSearchField", OpaBuilder.Actions.enterText(sSearchText || ""));
97
- };
98
-
99
- FilterBarBuilder.prototype.doResetSearch = function() {
100
- return this.doOnAggregation("basicSearchField", OpaBuilder.Actions.press("inner-reset"));
101
- };
102
-
103
- FilterBarBuilder.prototype.doSearch = function() {
104
- return this.doPress("btnSearch");
105
- };
106
-
107
- FilterBarBuilder.prototype.doOpenSettings = function() {
108
- return this.doPress("btnAdapt");
109
- };
110
-
111
- return FilterBarBuilder;
112
- });
56
+
57
+ var aFilterItemsMatchers = [fnEditStateMatcher];
58
+ if (oEditState) {
59
+ aFilterItemsMatchers.push(
60
+ OpaBuilder.Matchers.hasAggregation("contentEdit", OpaBuilder.Matchers.properties("selectedKey", oEditState.id))
61
+ );
62
+ }
63
+ if (mState && Object.keys(mState).length) {
64
+ aFilterItemsMatchers.push(FEBuilder.Matchers.states(mState));
65
+ }
66
+
67
+ return this.hasAggregation("filterItems", aFilterItemsMatchers);
68
+ };
69
+
70
+ FilterBarBuilder.prototype.hasSearchField = function (sSearchText, mState) {
71
+ var aMatchers = [];
72
+ if (mState) {
73
+ if (mState.visible === false) {
74
+ return this.has(function (oFilterBar) {
75
+ return !oFilterBar.getBasicSearchField();
76
+ });
77
+ }
78
+ aMatchers.push(FEBuilder.Matchers.states(mState));
79
+ }
80
+ if (sSearchText) {
81
+ aMatchers.push(OpaBuilder.Matchers.properties({ value: sSearchText }));
82
+ }
83
+
84
+ return this.hasAggregation("basicSearchField", aMatchers);
85
+ };
86
+
87
+ FilterBarBuilder.prototype.doChangeEditingStatus = function (vEditState) {
88
+ var fnEditStateMatcher = OpaBuilder.Matchers.resourceBundle("label", "sap.fe.macros", "FILTERBAR_EDITING_STATUS");
89
+ return this.doOnAggregation("filterItems", fnEditStateMatcher, OpaBuilder.Actions.enterText(vEditState.display));
90
+ };
91
+
92
+ FilterBarBuilder.prototype.doChangeSearch = function (sSearchText) {
93
+ return this.doOnAggregation("basicSearchField", OpaBuilder.Actions.enterText(sSearchText || ""));
94
+ };
95
+
96
+ FilterBarBuilder.prototype.doResetSearch = function () {
97
+ return this.doOnAggregation("basicSearchField", OpaBuilder.Actions.press("inner-reset"));
98
+ };
99
+
100
+ FilterBarBuilder.prototype.doSearch = function () {
101
+ return this.doPress("btnSearch");
102
+ };
103
+
104
+ FilterBarBuilder.prototype.doOpenSettings = function () {
105
+ return this.doPress("btnAdapt");
106
+ };
107
+
108
+ return FilterBarBuilder;
109
+ }
110
+ );
@@ -38,10 +38,10 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
38
38
  function (oVMControl) {
39
39
  return FEBuilder.create(this)
40
40
  .hasId(oVMControl.getId())
41
- .doPress("saveas")
41
+ .doPress("vm-saveas")
42
42
  .success(
43
43
  FEBuilder.create(this)
44
- .hasId(oVMControl.getId() + "-savedialog")
44
+ .hasId(oVMControl.getId() + "-vm-savedialog")
45
45
  .doOnChildren(
46
46
  FEBuilder.create(this)
47
47
  .hasId(/-name$/)
@@ -89,7 +89,7 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
89
89
 
90
90
  return this.doPress().success(
91
91
  function (oVMControl) {
92
- return FEBuilder.create(this).hasId(oVMControl.getId()).doPress("mainsave").description(vGivenDescription).execute();
92
+ return FEBuilder.create(this).hasId(oVMControl.getId()).doPress("vm-mainsave").description(vGivenDescription).execute();
93
93
  }.bind(this)
94
94
  );
95
95
  };
@@ -111,7 +111,7 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
111
111
  return this.doPress().success(
112
112
  function (oVMControl) {
113
113
  return FEBuilder.create(this)
114
- .hasId(oVMControl.getId() + "-list")
114
+ .hasId(oVMControl.getId() + "-vm-list")
115
115
  .doOnAggregation("items", OpaBuilder.Matchers.properties({ text: sVariantName }), OpaBuilder.Actions.press())
116
116
  .description(vGivenDescription)
117
117
  .execute();
@@ -137,10 +137,10 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
137
137
  function (oVMControl) {
138
138
  return FEBuilder.create(this)
139
139
  .hasId(oVMControl.getId())
140
- .doPress("manage")
140
+ .doPress("vm-manage")
141
141
  .success(
142
142
  FEBuilder.create(this)
143
- .hasId(oVMControl.getId() + "-managementTable")
143
+ .hasId(oVMControl.getId() + "-vm-managementTable")
144
144
  .doOnChildren(
145
145
  FEBuilder.create(this)
146
146
  .hasType("sap.m.ColumnListItem")
@@ -156,7 +156,7 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
156
156
  )
157
157
  .doOnChildren(
158
158
  FEBuilder.create(this)
159
- .hasId(/-managementsave$/)
159
+ .hasId(/-vm-managementsave$/)
160
160
  .hasType("sap.m.Button")
161
161
  .doPress()
162
162
  )
@@ -185,10 +185,10 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
185
185
  function (oVMControl) {
186
186
  return FEBuilder.create(this)
187
187
  .hasId(oVMControl.getId())
188
- .doPress("manage")
188
+ .doPress("vm-manage")
189
189
  .success(
190
190
  FEBuilder.create(this)
191
- .hasId(oVMControl.getId() + "-managementTable")
191
+ .hasId(oVMControl.getId() + "-vm-managementTable")
192
192
  .doOnChildren(
193
193
  FEBuilder.create(this)
194
194
  .hasType("sap.m.ColumnListItem")
@@ -199,7 +199,7 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
199
199
  )
200
200
  .success(
201
201
  FEBuilder.create(this)
202
- .hasId(oVMControl.getId() + "-managementsave")
202
+ .hasId(oVMControl.getId() + "-vm-managementsave")
203
203
  .hasType("sap.m.Button")
204
204
  .doPress()
205
205
  )
@@ -225,10 +225,10 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
225
225
  function (oVMControl) {
226
226
  return FEBuilder.create(this)
227
227
  .hasId(oVMControl.getId())
228
- .doPress("manage")
228
+ .doPress("vm-manage")
229
229
  .success(
230
230
  FEBuilder.create(this)
231
- .hasId(oVMControl.getId() + "-managementTable")
231
+ .hasId(oVMControl.getId() + "-vm-managementTable")
232
232
  .doOnChildren(
233
233
  FEBuilder.create(this)
234
234
  .hasType("sap.m.ColumnListItem")
@@ -239,7 +239,7 @@ sap.ui.define(["./FEBuilder", "sap/ui/test/OpaBuilder", "sap/fe/test/Utils"], fu
239
239
  )
240
240
  .success(
241
241
  FEBuilder.create(this)
242
- .hasId(oVMControl.getId() + "-managementsave")
242
+ .hasId(oVMControl.getId() + "-vm-managementsave")
243
243
  .hasType("sap.m.Button")
244
244
  .doPress()
245
245
  )