appium-android-driver 5.8.8 → 5.8.10
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/CHANGELOG.md +14 -0
- package/build/index.js +1 -1
- package/build/lib/android-helpers.js +8 -6
- package/build/lib/android-helpers.js.map +1 -1
- package/build/lib/bootstrap.js +1 -1
- package/build/lib/bootstrap.js.map +1 -1
- package/build/lib/commands/actions.js +1 -1
- package/build/lib/commands/actions.js.map +1 -1
- package/build/lib/commands/alert.js +1 -1
- package/build/lib/commands/alert.js.map +1 -1
- package/build/lib/commands/app-management.js +1 -1
- package/build/lib/commands/app-management.js.map +1 -1
- package/build/lib/commands/context.js +1 -1
- package/build/lib/commands/context.js.map +1 -1
- package/build/lib/commands/coverage.js +1 -1
- package/build/lib/commands/coverage.js.map +1 -1
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/emu-console.js +1 -1
- package/build/lib/commands/emu-console.js.map +1 -1
- package/build/lib/commands/execute.js +1 -1
- package/build/lib/commands/execute.js.map +1 -1
- package/build/lib/commands/file-actions.js +1 -1
- package/build/lib/commands/file-actions.js.map +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/commands/ime.js +1 -1
- package/build/lib/commands/ime.js.map +1 -1
- package/build/lib/commands/index.js +1 -1
- package/build/lib/commands/index.js.map +1 -1
- package/build/lib/commands/intent.js +1 -1
- package/build/lib/commands/intent.js.map +1 -1
- package/build/lib/commands/log.js +1 -1
- package/build/lib/commands/log.js.map +1 -1
- package/build/lib/commands/media-projection.js +1 -1
- package/build/lib/commands/media-projection.js.map +1 -1
- package/build/lib/commands/network.js +1 -1
- package/build/lib/commands/network.js.map +1 -1
- package/build/lib/commands/performance.js +1 -1
- package/build/lib/commands/performance.js.map +1 -1
- package/build/lib/commands/permissions.js +1 -1
- package/build/lib/commands/permissions.js.map +1 -1
- package/build/lib/commands/recordscreen.js +1 -1
- package/build/lib/commands/recordscreen.js.map +1 -1
- package/build/lib/commands/shell.js +1 -1
- package/build/lib/commands/shell.js.map +1 -1
- package/build/lib/commands/streamscreen.js +1 -1
- package/build/lib/commands/streamscreen.js.map +1 -1
- package/build/lib/commands/system-bars.js +1 -1
- package/build/lib/commands/system-bars.js.map +1 -1
- package/build/lib/commands/touch.js +1 -1
- package/build/lib/commands/touch.js.map +1 -1
- package/build/lib/desired-caps.js +1 -1
- package/build/lib/desired-caps.js.map +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/driver.js.map +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/logger.js.map +1 -1
- package/build/lib/method-map.js +1 -1
- package/build/lib/method-map.js.map +1 -1
- package/build/lib/uiautomator.js +1 -1
- package/build/lib/uiautomator.js.map +1 -1
- package/build/lib/unlock-helpers.js +1 -1
- package/build/lib/unlock-helpers.js.map +1 -1
- package/build/lib/utils.js +1 -1
- package/build/lib/utils.js.map +1 -1
- package/build/lib/webview-helpers.js +1 -1
- package/build/lib/webview-helpers.js.map +1 -1
- package/lib/android-helpers.js +12 -8
- package/lib/commands/performance.js +17 -0
- package/package.json +2 -2
|
@@ -319,4 +319,4 @@ commands.doPerformMultiAction = async function doPerformMultiAction(elementId, s
|
|
|
319
319
|
Object.assign(extensions, commands, helpers);
|
|
320
320
|
var _default = extensions;
|
|
321
321
|
exports.default = _default;
|
|
322
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q29vcmREZWZhdWx0IiwidmFsIiwidXRpbCIsImhhc1ZhbHVlIiwiZ2V0U3dpcGVUb3VjaER1cmF0aW9uIiwid2FpdEdlc3R1cmUiLCJkdXJhdGlvbiIsIm9wdGlvbnMiLCJtcyIsImRvVG91Y2hBY3Rpb24iLCJhY3Rpb24iLCJvcHRzIiwiZWxlbWVudCIsIngiLCJ5IiwiY291bnQiLCJ0YXAiLCJ0b3VjaERvd24iLCJ0b3VjaFVwIiwidG91Y2hNb3ZlIiwiQiIsImRlbGF5IiwidG91Y2hMb25nQ2xpY2siLCJsb2ciLCJ3YXJuIiwiZXJyb3JBbmRUaHJvdyIsImRvVG91Y2hEcmFnIiwiZ2VzdHVyZXMiLCJsb25nUHJlc3MiLCJtb3ZlVG8iLCJzdGFydFgiLCJzdGFydFkiLCJlbmRYIiwiZW5kWSIsImdldExvY2F0aW9uSW5WaWV3IiwiYXBpTGV2ZWwiLCJhZGIiLCJnZXRBcGlMZXZlbCIsIk1hdGgiLCJtYXgiLCJkcmFnIiwiZml4UmVsZWFzZSIsInJlbGVhc2UiLCJfIiwibGFzdCIsImNsb25lIiwicmVmIiwiZ2VzdHVyZSIsInJldmVyc2UiLCJsb2MiLCJzaXplIiwiZ2V0U2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwicGljayIsInBlcmZvcm1HZXN0dXJlIiwiZSIsImlzRXJyb3JUeXBlIiwiZXJyb3JzIiwiTm9TdWNoRWxlbWVudEVycm9yIiwiZGVidWciLCJnZXRTd2lwZU9wdGlvbnMiLCJ0b3VjaENvdW50IiwiZGVzdEVsZW1lbnQiLCJsb2NSZXN1bHQiLCJzaXplUmVzdWx0Iiwib2Zmc2V0WCIsImFicyIsIm9mZnNldFkiLCJmaXJzdEVsTG9jYXRpb24iLCJwZXJmb3JtVG91Y2giLCJsZW5ndGgiLCJzd2lwZU9wdHMiLCJzd2lwZSIsImFjdGlvbnMiLCJtYXAiLCJoZWFkIiwicG9wIiwic2xpY2UiLCJwcmVzcyIsInNoaWZ0Iiwid2FpdCIsImZpeGVkR2VzdHVyZXMiLCJwYXJzZVRvdWNoIiwiZyIsIm11bHRpIiwidG91Y2hTdGF0ZU9iamVjdHMiLCJhc3luY21hcCIsImluY2x1ZGVzIiwib2Zmc2V0IiwiZWxlbWVudElkIiwicG9zIiwidG91Y2hTdGF0ZU9iamVjdCIsInRpbWVPZmZzZXQiLCJwYXJzZUludCIsInByZXZQb3MiLCJ0aW1lIiwic3RhdGUiLCJpc1VuZGVmaW5lZCIsImFuZHJvaWRIZWxwZXJzIiwidHJ1bmNhdGVEZWNpbWFscyIsInRvdWNoIiwicGVyZm9ybU11bHRpQWN0aW9uIiwiRXJyb3IiLCJzdGF0ZXMiLCJkb1BlcmZvcm1NdWx0aUFjdGlvbiIsImJvb3RzdHJhcCIsInNlbmRBY3Rpb24iLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvdG91Y2guanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgZXJyb3JzLCBpc0Vycm9yVHlwZSB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuaW1wb3J0IHsgYXN5bmNtYXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBnZXRDb29yZERlZmF1bHQgKHZhbCkge1xuICAvLyBnb2luZyB0aGUgbG9uZyB3YXkgYW5kIGNoZWNraW5nIGZvciB1bmRlZmluZWQgYW5kIG51bGwgc2luY2VcbiAgLy8gd2UgY2FuJ3QgYmUgYXNzdXJlZCBgZWxJZGAgaXMgYSBzdHJpbmcgYW5kIG5vdCBhbiBpbnQuIFNhbWVcbiAgLy8gdGhpbmcgd2l0aCBkZXN0RWxlbWVudCBiZWxvdy5cbiAgcmV0dXJuIHV0aWwuaGFzVmFsdWUodmFsKSA/IHZhbCA6IDAuNTtcbn1cblxuZnVuY3Rpb24gZ2V0U3dpcGVUb3VjaER1cmF0aW9uICh3YWl0R2VzdHVyZSkge1xuICAvLyB0aGUgdG91Y2ggYWN0aW9uIGFwaSB1c2VzIG1zLCB3ZSB3YW50IHNlY29uZHNcbiAgLy8gMC44IGlzIHRoZSBkZWZhdWx0IHRpbWUgZm9yIHRoZSBvcGVyYXRpb25cbiAgbGV0IGR1cmF0aW9uID0gMC44O1xuICBpZiAodHlwZW9mIHdhaXRHZXN0dXJlLm9wdGlvbnMubXMgIT09ICd1bmRlZmluZWQnICYmIHdhaXRHZXN0dXJlLm9wdGlvbnMubXMpIHtcbiAgICBkdXJhdGlvbiA9IHdhaXRHZXN0dXJlLm9wdGlvbnMubXMgLyAxMDAwO1xuICAgIGlmIChkdXJhdGlvbiA9PT0gMCkge1xuICAgICAgLy8gc2V0IHRvIGEgdmVyeSBsb3cgbnVtYmVyLCBzaW5jZSB0aGV5IHdhbnRlZCBpdCBmYXN0XG4gICAgICAvLyBidXQgYmVsb3cgMC4xIGJlY29tZXMgMCBzdGVwcywgd2hpY2ggY2F1c2VzIGVycm9yc1xuICAgICAgZHVyYXRpb24gPSAwLjE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkdXJhdGlvbjtcbn1cblxuY29tbWFuZHMuZG9Ub3VjaEFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGRvVG91Y2hBY3Rpb24gKGFjdGlvbiwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsgZWxlbWVudCwgeCwgeSwgY291bnQsIG1zLCBkdXJhdGlvbiB9ID0gb3B0cztcbiAgLy8gcGFyc2VUb3VjaCBwcmVjYWxjdWxhdGVzIGFic29sdXRlIGVsZW1lbnQgcG9zaXRpb25zXG4gIC8vIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcGFzcyBgZWxlbWVudGAgdG8gdGhlIGFmZmVjdGVkIGdlc3R1cmVzXG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSAndGFwJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRhcChudWxsLCB4LCB5LCBjb3VudCk7XG4gICAgY2FzZSAncHJlc3MnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hEb3duKG51bGwsIHgsIHkpO1xuICAgIGNhc2UgJ3JlbGVhc2UnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hVcChlbGVtZW50LCB4LCB5KTtcbiAgICBjYXNlICdtb3ZlVG8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hNb3ZlKG51bGwsIHgsIHkpO1xuICAgIGNhc2UgJ3dhaXQnOlxuICAgICAgcmV0dXJuIGF3YWl0IEIuZGVsYXkobXMpO1xuICAgIGNhc2UgJ2xvbmdQcmVzcyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy50b3VjaExvbmdDbGljayhudWxsLCB4LCB5LCBkdXJhdGlvbiB8fCAxMDAwKTtcbiAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgLy8gVE9ETzogY2xhcmlmeSBiZWhhdmlvciBvZiAnY2FuY2VsJyBhY3Rpb24gYW5kIGZpeCB0aGlzXG4gICAgICB0aGlzLmxvZy53YXJuKCdDYW5jZWwgYWN0aW9uIGN1cnJlbnRseSBoYXMgbm8gZWZmZWN0Jyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgdW5rbm93biBhY3Rpb24gJHthY3Rpb259YCk7XG4gIH1cbn07XG5cbi8vIGRyYWcgaXMgKm5vdCogcHJlc3MtbW92ZS1yZWxlYXNlLCBzbyB3ZSBuZWVkIHRvIHRyYW5zbGF0ZVxuLy8gZHJhZyB3b3JrcyBmaW5lIGZvciBzY3JvbGwsIGFzIHdlbGxcbmhlbHBlcnMuZG9Ub3VjaERyYWcgPSBhc3luYyBmdW5jdGlvbiBkb1RvdWNoRHJhZyAoZ2VzdHVyZXMpIHtcbiAgbGV0IGxvbmdQcmVzcyA9IGdlc3R1cmVzWzBdO1xuICBsZXQgbW92ZVRvID0gZ2VzdHVyZXNbMV07XG4gIGxldCBzdGFydFggPSBsb25nUHJlc3Mub3B0aW9ucy54IHx8IDAsXG4gICAgICBzdGFydFkgPSBsb25nUHJlc3Mub3B0aW9ucy55IHx8IDAsXG4gICAgICBlbmRYID0gbW92ZVRvLm9wdGlvbnMueCB8fCAwLFxuICAgICAgZW5kWSA9IG1vdmVUby5vcHRpb25zLnkgfHwgMDtcbiAgaWYgKGxvbmdQcmVzcy5vcHRpb25zLmVsZW1lbnQpIHtcbiAgICBsZXQge3gsIHl9ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhsb25nUHJlc3Mub3B0aW9ucy5lbGVtZW50KTtcbiAgICBzdGFydFggKz0geCB8fCAwO1xuICAgIHN0YXJ0WSArPSB5IHx8IDA7XG4gIH1cbiAgaWYgKG1vdmVUby5vcHRpb25zLmVsZW1lbnQpIHtcbiAgICBsZXQge3gsIHl9ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhtb3ZlVG8ub3B0aW9ucy5lbGVtZW50KTtcbiAgICBlbmRYICs9IHggfHwgMDtcbiAgICBlbmRZICs9IHkgfHwgMDtcbiAgfVxuXG4gIGxldCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIC8vIGxvbGxpcG9wIHRha2VzIGEgbGl0dGxlIGxvbmdlciB0byBnZXQgdGhpbmdzIHJvbGxpbmdcbiAgbGV0IGR1cmF0aW9uID0gYXBpTGV2ZWwgPj0gNSA/IDIgOiAxO1xuICAvLyBtYWtlIHN1cmUgdGhhdCBpZiB0aGUgbG9uZyBwcmVzcyBoYXMgYSBkdXJhdGlvbiwgd2UgdXNlIGl0LlxuICBpZiAobG9uZ1ByZXNzLm9wdGlvbnMgJiYgbG9uZ1ByZXNzLm9wdGlvbnMuZHVyYXRpb24pIHtcbiAgICBkdXJhdGlvbiA9IE1hdGgubWF4KGxvbmdQcmVzcy5vcHRpb25zLmR1cmF0aW9uIC8gMTAwMCwgZHVyYXRpb24pO1xuICB9XG5cbiAgLy8gYGRyYWdgIHdpbGwgdGFrZSBjYXJlIG9mIHdoZXRoZXIgdGhlcmUgaXMgYW4gZWxlbWVudCBvciBub3QgYXQgdGhhdCBsZXZlbFxuICByZXR1cm4gYXdhaXQgdGhpcy5kcmFnKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBkdXJhdGlvbiwgMSwgbG9uZ1ByZXNzLm9wdGlvbnMuZWxlbWVudCwgbW92ZVRvLm9wdGlvbnMuZWxlbWVudCk7XG59O1xuXG4vLyBSZWxlYXNlIGdlc3R1cmUgbmVlZHMgZWxlbWVudCBvciBjby1vcmRpbmF0ZXMgdG8gcmVsZWFzZSBpdCBmcm9tIHRoYXQgcG9zaXRpb25cbi8vIG9yIGVsc2UgcmVsZWFzZSBnZXN0dXJlIGlzIHBlcmZvcm1lZCBmcm9tIGNlbnRlciBvZiB0aGUgc2NyZWVuLCBzbyB0byBmaXggaXRcbi8vIFRoaXMgbWV0aG9kIHNldHMgY28tb3JkaW5hdGVzL2VsZW1lbnQgdG8gcmVsZWFzZSBnZXN0dXJlIGlmIGl0IGhhcyBubyBvcHRpb25zIHNldCBhbHJlYWR5LlxuaGVscGVycy5maXhSZWxlYXNlID0gYXN5bmMgZnVuY3Rpb24gZml4UmVsZWFzZSAoZ2VzdHVyZXMpIHtcbiAgbGV0IHJlbGVhc2UgPSBfLmxhc3QoZ2VzdHVyZXMpO1xuICAvLyBzb21ldGltZXMgdGhlcmUgYXJlIG5vIG9wdGlvbnNcbiAgcmVsZWFzZS5vcHRpb25zID0gcmVsZWFzZS5vcHRpb25zIHx8IHt9O1xuICAvLyBub3RoaW5nIHRvIGRvIGlmIHJlbGVhc2Ugb3B0aW9ucyBhcmUgYWxyZWFkeSBzZXRcbiAgaWYgKHJlbGVhc2Uub3B0aW9ucy5lbGVtZW50IHx8IChyZWxlYXNlLm9wdGlvbnMueCAmJiByZWxlYXNlLm9wdGlvbnMueSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gd2l0aG91dCBjb29yZGluYXRlcywgYHJlbGVhc2VgIHVzZXMgdGhlIGNlbnRlciBvZiB0aGUgc2NyZWVuLCB3aGljaCxcbiAgLy8gZ2VuZXJhbGx5IHNwZWFraW5nLCBpcyBub3Qgd2hhdCB3ZSB3YW50XG4gIC8vIHRoZXJlZm9yZTogbG9vcCBiYWNrd2FyZHMgYW5kIHVzZSB0aGUgbGFzdCBjb21tYW5kIHdpdGggYW4gZWxlbWVudCBhbmQvb3JcbiAgLy8gb2Zmc2V0IGNvb3JkaW5hdGVzXG4gIGdlc3R1cmVzID0gXy5jbG9uZShnZXN0dXJlcyk7XG4gIGxldCByZWYgPSBudWxsO1xuICBmb3IgKGxldCBnZXN0dXJlIG9mIGdlc3R1cmVzLnJldmVyc2UoKSkge1xuICAgIGxldCBvcHRzID0gZ2VzdHVyZS5vcHRpb25zO1xuICAgIGlmIChvcHRzLmVsZW1lbnQgfHwgKG9wdHMueCAmJiBvcHRzLnkpKSB7XG4gICAgICByZWYgPSBnZXN0dXJlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChyZWYpIHtcbiAgICBsZXQgb3B0cyA9IHJlZi5vcHRpb25zO1xuICAgIGlmIChvcHRzLmVsZW1lbnQpIHtcbiAgICAgIGxldCBsb2MgPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KG9wdHMuZWxlbWVudCk7XG4gICAgICBpZiAob3B0cy54ICYmIG9wdHMueSkge1xuICAgICAgICAvLyB0aGlzIGlzIGFuIG9mZnNldCBmcm9tIHRoZSBlbGVtZW50XG4gICAgICAgIHJlbGVhc2Uub3B0aW9ucyA9IHtcbiAgICAgICAgICB4OiBsb2MueCArIG9wdHMueCxcbiAgICAgICAgICB5OiBsb2MueSArIG9wdHMueVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhpcyBpcyB0aGUgY2VudGVyIG9mIHRoZSBlbGVtZW50XG4gICAgICAgIGxldCBzaXplID0gYXdhaXQgdGhpcy5nZXRTaXplKG9wdHMuZWxlbWVudCk7XG4gICAgICAgIHJlbGVhc2Uub3B0aW9ucyA9IHtcbiAgICAgICAgICB4OiBsb2MueCArIHNpemUud2lkdGggLyAyLFxuICAgICAgICAgIHk6IGxvYy55ICsgc2l6ZS5oZWlnaHQgLyAyXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbGVhc2Uub3B0aW9ucyA9IF8ucGljayhvcHRzLCAneCcsICd5Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWxlYXNlO1xufTtcblxuLy8gUGVyZm9ybSBvbmUgZ2VzdHVyZVxuaGVscGVycy5wZXJmb3JtR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1HZXN0dXJlIChnZXN0dXJlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZG9Ub3VjaEFjdGlvbihnZXN0dXJlLmFjdGlvbiwgZ2VzdHVyZS5vcHRpb25zIHx8IHt9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIHNvbWV0aW1lIHRoZSBlbGVtZW50IGlzIG5vdCBhdmFpbGFibGUgd2hlbiByZWxlYXNpbmcsIHJldHJ5IHdpdGhvdXQgaXRcbiAgICBpZiAoaXNFcnJvclR5cGUoZSwgZXJyb3JzLk5vU3VjaEVsZW1lbnRFcnJvcikgJiYgZ2VzdHVyZS5hY3Rpb24gPT09ICdyZWxlYXNlJyAmJlxuICAgICAgICBnZXN0dXJlLm9wdGlvbnMuZWxlbWVudCkge1xuICAgICAgZGVsZXRlIGdlc3R1cmUub3B0aW9ucy5lbGVtZW50O1xuICAgICAgdGhpcy5sb2cuZGVidWcoYHJldHJ5aW5nIHJlbGVhc2Ugd2l0aG91dCBlbGVtZW50IG9wdHM6ICR7Z2VzdHVyZS5vcHRpb25zfS5gKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRvVG91Y2hBY3Rpb24oZ2VzdHVyZS5hY3Rpb24sIGdlc3R1cmUub3B0aW9ucyB8fCB7fSk7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn07XG5cbmNvbW1hbmRzLmdldFN3aXBlT3B0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIGdldFN3aXBlT3B0aW9ucyAoZ2VzdHVyZXMsIHRvdWNoQ291bnQgPSAxKSB7XG4gIGxldCBzdGFydFggPSBnZXRDb29yZERlZmF1bHQoZ2VzdHVyZXNbMF0ub3B0aW9ucy54KSxcbiAgICAgIHN0YXJ0WSA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1swXS5vcHRpb25zLnkpLFxuICAgICAgZW5kWCA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1syXS5vcHRpb25zLngpLFxuICAgICAgZW5kWSA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1syXS5vcHRpb25zLnkpLFxuICAgICAgZHVyYXRpb24gPSBnZXRTd2lwZVRvdWNoRHVyYXRpb24oZ2VzdHVyZXNbMV0pLFxuICAgICAgZWxlbWVudCA9IGdlc3R1cmVzWzBdLm9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGRlc3RFbGVtZW50ID0gZ2VzdHVyZXNbMl0ub3B0aW9ucy5lbGVtZW50IHx8IGdlc3R1cmVzWzBdLm9wdGlvbnMuZWxlbWVudDtcblxuICAvLyB0aGVyZSdzIG5vIGRlc3RpbmF0aW9uIGVsZW1lbnQgaGFuZGxpbmcgaW4gYm9vdHN0cmFwIGFuZCBzaW5jZSBpdCBhcHBsaWVzIHRvIGFsbCBwbGF0Zm9ybXMsIHdlIGhhbmRsZSBpdCBoZXJlXG4gIGlmICh1dGlsLmhhc1ZhbHVlKGRlc3RFbGVtZW50KSkge1xuICAgIGxldCBsb2NSZXN1bHQgPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KGRlc3RFbGVtZW50KTtcbiAgICBsZXQgc2l6ZVJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0U2l6ZShkZXN0RWxlbWVudCk7XG4gICAgbGV0IG9mZnNldFggPSAoTWF0aC5hYnMoZW5kWCkgPCAxICYmIE1hdGguYWJzKGVuZFgpID4gMCkgPyBzaXplUmVzdWx0LndpZHRoICogZW5kWCA6IGVuZFg7XG4gICAgbGV0IG9mZnNldFkgPSAoTWF0aC5hYnMoZW5kWSkgPCAxICYmIE1hdGguYWJzKGVuZFkpID4gMCkgPyBzaXplUmVzdWx0LmhlaWdodCAqIGVuZFkgOiBlbmRZO1xuICAgIGVuZFggPSBsb2NSZXN1bHQueCArIG9mZnNldFg7XG4gICAgZW5kWSA9IGxvY1Jlc3VsdC55ICsgb2Zmc2V0WTtcbiAgICAvLyBpZiB0aGUgdGFyZ2V0IGVsZW1lbnQgd2FzIHByb3ZpZGVkLCB0aGUgY29vcmRpbmF0ZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBuZWVkIHRvIGJlIHJlbGF0aXZlIHRvIGl0LlxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKGVsZW1lbnQpKSB7XG4gICAgICBsZXQgZmlyc3RFbExvY2F0aW9uID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhlbGVtZW50KTtcbiAgICAgIGVuZFggLT0gZmlyc3RFbExvY2F0aW9uLng7XG4gICAgICBlbmRZIC09IGZpcnN0RWxMb2NhdGlvbi55O1xuICAgIH1cbiAgfVxuICAvLyBjbGllbnRzIGFyZSByZXNwb25zaWJsZSB0byB1c2UgdGhlc2Ugb3B0aW9ucyBjb3JyZWN0bHlcbiAgcmV0dXJuIHtzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIHRvdWNoQ291bnQsIGVsZW1lbnR9O1xufTtcblxuY29tbWFuZHMucGVyZm9ybVRvdWNoID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVRvdWNoIChnZXN0dXJlcykge1xuICAvLyBwcmVzcy13YWl0LW1vdmVUby1yZWxlYXNlIGlzIGBzd2lwZWAsIHNvIHVzZSBuYXRpdmUgbWV0aG9kXG4gIGlmIChnZXN0dXJlcy5sZW5ndGggPT09IDQgJiZcbiAgICAgIGdlc3R1cmVzWzBdLmFjdGlvbiA9PT0gJ3ByZXNzJyAmJlxuICAgICAgZ2VzdHVyZXNbMV0uYWN0aW9uID09PSAnd2FpdCcgJiZcbiAgICAgIGdlc3R1cmVzWzJdLmFjdGlvbiA9PT0gJ21vdmVUbycgJiZcbiAgICAgIGdlc3R1cmVzWzNdLmFjdGlvbiA9PT0gJ3JlbGVhc2UnKSB7XG5cbiAgICBsZXQgc3dpcGVPcHRzID0gYXdhaXQgdGhpcy5nZXRTd2lwZU9wdGlvbnMoZ2VzdHVyZXMpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnN3aXBlKHN3aXBlT3B0cy5zdGFydFgsIHN3aXBlT3B0cy5zdGFydFksIHN3aXBlT3B0cy5lbmRYLFxuICAgICAgICBzd2lwZU9wdHMuZW5kWSwgc3dpcGVPcHRzLmR1cmF0aW9uLCBzd2lwZU9wdHMudG91Y2hDb3VudCxcbiAgICAgICAgc3dpcGVPcHRzLmVsZW1lbnQpO1xuICB9XG4gIGxldCBhY3Rpb25zID0gXy5tYXAoZ2VzdHVyZXMsICdhY3Rpb24nKTtcblxuICBpZiAoYWN0aW9uc1swXSA9PT0gJ2xvbmdQcmVzcycgJiYgYWN0aW9uc1sxXSA9PT0gJ21vdmVUbycgJiYgYWN0aW9uc1syXSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgLy8gc29tZSB0aGluZ3MgYXJlIHNwZWNpYWxcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kb1RvdWNoRHJhZyhnZXN0dXJlcyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGFjdGlvbnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAvLyBgcHJlc3NgIHdpdGhvdXQgYSB3YWl0IGlzIHRvbyBzbG93IGFuZCBnZXRzIGludGVycHJldHRlZCBhcyBhIGBsb25nUHJlc3NgXG4gICAgICBpZiAoXy5oZWFkKGFjdGlvbnMpID09PSAncHJlc3MnICYmIF8ubGFzdChhY3Rpb25zKSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICAgIGFjdGlvbnNbMF0gPSAndGFwJztcbiAgICAgICAgZ2VzdHVyZXNbMF0uYWN0aW9uID0gJ3RhcCc7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBgbG9uZ1ByZXNzYCBhbmQgYHRhcGAgbWV0aG9kcyByZWxlYXNlIG9uIHRoZWlyIG93blxuICAgICAgaWYgKChfLmhlYWQoYWN0aW9ucykgPT09ICd0YXAnIHx8IF8uaGVhZChhY3Rpb25zKSA9PT0gJ2xvbmdQcmVzcycpICYmIF8ubGFzdChhY3Rpb25zKSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICAgIGdlc3R1cmVzLnBvcCgpO1xuICAgICAgICBhY3Rpb25zLnBvcCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsb25ncHJlc3MgZm9sbG93ZWQgYnkgYW55dGhpbmcgb3RoZXIgdGhhbiByZWxlYXNlIHNob3VsZCBiZWNvbWUgYSBwcmVzcyBhbmQgd2FpdFxuICAgICAgaWYgKGFjdGlvbnNbMF0gPT09ICdsb25nUHJlc3MnKSB7XG4gICAgICAgIGFjdGlvbnMgPSBbJ3ByZXNzJywgJ3dhaXQnLCAuLi5hY3Rpb25zLnNsaWNlKDEpXTtcblxuICAgICAgICBsZXQgcHJlc3MgPSBnZXN0dXJlcy5zaGlmdCgpO1xuICAgICAgICBwcmVzcy5hY3Rpb24gPSAncHJlc3MnO1xuICAgICAgICBsZXQgd2FpdCA9IHtcbiAgICAgICAgICBhY3Rpb246ICd3YWl0JyxcbiAgICAgICAgICBvcHRpb25zOiB7bXM6IHByZXNzLm9wdGlvbnMuZHVyYXRpb24gfHwgMTAwMH1cbiAgICAgICAgfTtcbiAgICAgICAgZGVsZXRlIHByZXNzLm9wdGlvbnMuZHVyYXRpb247XG4gICAgICAgIGdlc3R1cmVzID0gW3ByZXNzLCB3YWl0LCAuLi5nZXN0dXJlc107XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZpeGVkR2VzdHVyZXMgPSBhd2FpdCB0aGlzLnBhcnNlVG91Y2goZ2VzdHVyZXMsIGZhbHNlKTtcbiAgICAvLyBmaXggcmVsZWFzZSBhY3Rpb24gdGhlbiBwZXJmb3JtIGFsbCBhY3Rpb25zXG4gICAgaWYgKGFjdGlvbnNbYWN0aW9ucy5sZW5ndGggLSAxXSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICBhY3Rpb25zW2FjdGlvbnMubGVuZ3RoIC0gMV0gPSBhd2FpdCB0aGlzLmZpeFJlbGVhc2UoZ2VzdHVyZXMpO1xuICAgIH1cbiAgICBmb3IgKGxldCBnIG9mIGZpeGVkR2VzdHVyZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMucGVyZm9ybUdlc3R1cmUoZyk7XG4gICAgfVxuICB9XG59O1xuXG5oZWxwZXJzLnBhcnNlVG91Y2ggPSBhc3luYyBmdW5jdGlvbiBwYXJzZVRvdWNoIChnZXN0dXJlcywgbXVsdGkpIHtcbiAgLy8gYmVjYXVzZSBtdWx0aS10b3VjaCByZWxlYXNlcyBhdCB0aGUgZW5kIGJ5IGRlZmF1bHRcbiAgaWYgKG11bHRpICYmIF8ubGFzdChnZXN0dXJlcykuYWN0aW9uID09PSAncmVsZWFzZScpIHtcbiAgICBnZXN0dXJlcy5wb3AoKTtcbiAgfVxuXG4gIGxldCB0b3VjaFN0YXRlT2JqZWN0cyA9IGF3YWl0IGFzeW5jbWFwKGdlc3R1cmVzLCBhc3luYyAoZ2VzdHVyZSkgPT4ge1xuICAgIGxldCBvcHRpb25zID0gZ2VzdHVyZS5vcHRpb25zIHx8IHt9O1xuICAgIGlmIChfLmluY2x1ZGVzKFsncHJlc3MnLCAnbW92ZVRvJywgJ3RhcCcsICdsb25nUHJlc3MnXSwgZ2VzdHVyZS5hY3Rpb24pKSB7XG4gICAgICBvcHRpb25zLm9mZnNldCA9IGZhbHNlO1xuICAgICAgbGV0IGVsZW1lbnRJZCA9IGdlc3R1cmUub3B0aW9ucy5lbGVtZW50O1xuICAgICAgaWYgKGVsZW1lbnRJZCkge1xuICAgICAgICBsZXQgcG9zID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhlbGVtZW50SWQpO1xuICAgICAgICBpZiAoZ2VzdHVyZS5vcHRpb25zLnggfHwgZ2VzdHVyZS5vcHRpb25zLnkpIHtcbiAgICAgICAgICBvcHRpb25zLnggPSBwb3MueCArIChnZXN0dXJlLm9wdGlvbnMueCB8fCAwKTtcbiAgICAgICAgICBvcHRpb25zLnkgPSBwb3MueSArIChnZXN0dXJlLm9wdGlvbnMueSB8fCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBhd2FpdCB0aGlzLmdldFNpemUoZWxlbWVudElkKTtcbiAgICAgICAgICBvcHRpb25zLnggPSBwb3MueCArICh3aWR0aCAvIDIpO1xuICAgICAgICAgIG9wdGlvbnMueSA9IHBvcy55ICsgKGhlaWdodCAvIDIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0b3VjaFN0YXRlT2JqZWN0ID0ge1xuICAgICAgICAgIGFjdGlvbjogZ2VzdHVyZS5hY3Rpb24sXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICB0aW1lT2Zmc2V0OiAwLjAwNSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLnggPSAoZ2VzdHVyZS5vcHRpb25zLnggfHwgMCk7XG4gICAgICAgIG9wdGlvbnMueSA9IChnZXN0dXJlLm9wdGlvbnMueSB8fCAwKTtcblxuICAgICAgICBsZXQgdG91Y2hTdGF0ZU9iamVjdCA9IHtcbiAgICAgICAgICBhY3Rpb246IGdlc3R1cmUuYWN0aW9uLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgdGltZU9mZnNldDogMC4wMDUsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0b3VjaFN0YXRlT2JqZWN0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgb2Zmc2V0ID0gMC4wMDU7XG4gICAgICBpZiAoZ2VzdHVyZS5hY3Rpb24gPT09ICd3YWl0Jykge1xuICAgICAgICBvcHRpb25zID0gZ2VzdHVyZS5vcHRpb25zO1xuICAgICAgICBvZmZzZXQgPSAocGFyc2VJbnQoZ2VzdHVyZS5vcHRpb25zLm1zLCAxMCkgLyAxMDAwKTtcbiAgICAgIH1cbiAgICAgIGxldCB0b3VjaFN0YXRlT2JqZWN0ID0ge1xuICAgICAgICBhY3Rpb246IGdlc3R1cmUuYWN0aW9uLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICB0aW1lT2Zmc2V0OiBvZmZzZXQsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3Q7XG4gICAgfVxuICB9LCBmYWxzZSk7XG4gIC8vIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSB0aW1lICh3aGljaCBpcyBub3cgYW4gb2Zmc2V0KVxuICAvLyBhbmQgdGhlIHBvc2l0aW9uICh3aGljaCBtYXkgYmUgYW4gb2Zmc2V0KVxuICBsZXQgcHJldlBvcyA9IG51bGwsXG4gICAgICB0aW1lID0gMDtcbiAgZm9yIChsZXQgc3RhdGUgb2YgdG91Y2hTdGF0ZU9iamVjdHMpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChzdGF0ZS5vcHRpb25zLngpICYmIF8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSAmJiBwcmV2UG9zICE9PSBudWxsKSB7XG4gICAgICAvLyB0aGlzIGhhcHBlbnMgd2l0aCB3YWl0XG4gICAgICBzdGF0ZS5vcHRpb25zLnggPSBwcmV2UG9zLng7XG4gICAgICBzdGF0ZS5vcHRpb25zLnkgPSBwcmV2UG9zLnk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5vcHRpb25zLm9mZnNldCAmJiBwcmV2UG9zKSB7XG4gICAgICAvLyB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhbiBvZmZzZXRcbiAgICAgIHN0YXRlLm9wdGlvbnMueCArPSBwcmV2UG9zLng7XG4gICAgICBzdGF0ZS5vcHRpb25zLnkgKz0gcHJldlBvcy55O1xuICAgIH1cbiAgICBkZWxldGUgc3RhdGUub3B0aW9ucy5vZmZzZXQ7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueCkgJiYgIV8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSkge1xuICAgICAgcHJldlBvcyA9IHN0YXRlLm9wdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKG11bHRpKSB7XG4gICAgICBsZXQgdGltZU9mZnNldCA9IHN0YXRlLnRpbWVPZmZzZXQ7XG4gICAgICB0aW1lICs9IHRpbWVPZmZzZXQ7XG4gICAgICBzdGF0ZS50aW1lID0gYW5kcm9pZEhlbHBlcnMudHJ1bmNhdGVEZWNpbWFscyh0aW1lLCAzKTtcblxuICAgICAgLy8gbXVsdGkgZ2VzdHVyZXMgcmVxdWlyZSAndG91Y2gnIHJhdGhlciB0aGFuICdvcHRpb25zJ1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueCkgJiYgIV8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSkge1xuICAgICAgICBzdGF0ZS50b3VjaCA9IHtcbiAgICAgICAgICB4OiBzdGF0ZS5vcHRpb25zLngsXG4gICAgICAgICAgeTogc3RhdGUub3B0aW9ucy55XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWxldGUgc3RhdGUub3B0aW9ucztcbiAgICB9XG4gICAgZGVsZXRlIHN0YXRlLnRpbWVPZmZzZXQ7XG4gIH1cbiAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3RzO1xufTtcblxuXG5jb21tYW5kcy5wZXJmb3JtTXVsdGlBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBwZXJmb3JtTXVsdGlBY3Rpb24gKGFjdGlvbnMsIGVsZW1lbnRJZCkge1xuICAvLyBBbmRyb2lkIG5lZWRzIGF0IGxlYXN0IHR3byBhY3Rpb25zIHRvIGJlIGFibGUgdG8gcGVyZm9ybSBhIG11bHRpIHBvaW50ZXIgZ2VzdHVyZVxuICBpZiAoYWN0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ011bHRpIFBvaW50ZXIgR2VzdHVyZXMgbmVlZCBhdCBsZWFzdCB0d28gYWN0aW9ucy4gJyArXG4gICAgICAgICdVc2UgVG91Y2ggQWN0aW9ucyBmb3IgYSBzaW5nbGUgYWN0aW9uLicpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGVzID0gYXdhaXQgYXN5bmNtYXAoYWN0aW9ucywgYXN5bmMgKGFjdGlvbikgPT4gYXdhaXQgdGhpcy5wYXJzZVRvdWNoKGFjdGlvbiwgdHJ1ZSksIGZhbHNlKTtcblxuICByZXR1cm4gYXdhaXQgdGhpcy5kb1BlcmZvcm1NdWx0aUFjdGlvbihlbGVtZW50SWQsIHN0YXRlcyk7XG59O1xuXG4vKipcbiAqIFJlYXNvbiBmb3IgaXNvbGF0aW5nIGRvUGVyZm9ybU11bHRpQWN0aW9uIGZyb20gcGVyZm9ybU11bHRpQWN0aW9uIGlzIGZvciByZXVzaW5nIHBlcmZvcm1NdWx0aUFjdGlvblxuICogYWNyb3NzIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgYW5kIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uXG4gKiBPdGhlciBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIG5lZWQgdG8gb3ZlcnJpZGUgZG9QZXJmb3JtTXVsdGlBY3Rpb25cbiAqIHRvIGZhY2lsaXRhdGUgcGVyZm9ybU11bHRpQWN0aW9uLlxuICovXG5jb21tYW5kcy5kb1BlcmZvcm1NdWx0aUFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGRvUGVyZm9ybU11bHRpQWN0aW9uIChlbGVtZW50SWQsIHN0YXRlcykge1xuICBsZXQgb3B0cztcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIG9wdHMgPSB7XG4gICAgICBlbGVtZW50SWQsXG4gICAgICBhY3Rpb25zOiBzdGF0ZXNcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnBlcmZvcm1NdWx0aVBvaW50ZXJHZXN0dXJlJywgb3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgb3B0cyA9IHtcbiAgICAgIGFjdGlvbnM6IHN0YXRlc1xuICAgIH07XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3BlcmZvcm1NdWx0aVBvaW50ZXJHZXN0dXJlJywgb3B0cyk7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsSUFBSUEsUUFBUSxHQUFHLENBQUMsQ0FBQztFQUFFQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0VBQUVDLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFBQztBQUFBO0FBRWpELFNBQVNDLGVBQWUsQ0FBRUMsR0FBRyxFQUFFO0VBSTdCLE9BQU9DLGFBQUksQ0FBQ0MsUUFBUSxDQUFDRixHQUFHLENBQUMsR0FBR0EsR0FBRyxHQUFHLEdBQUc7QUFDdkM7QUFFQSxTQUFTRyxxQkFBcUIsQ0FBRUMsV0FBVyxFQUFFO0VBRzNDLElBQUlDLFFBQVEsR0FBRyxHQUFHO0VBQ2xCLElBQUksT0FBT0QsV0FBVyxDQUFDRSxPQUFPLENBQUNDLEVBQUUsS0FBSyxXQUFXLElBQUlILFdBQVcsQ0FBQ0UsT0FBTyxDQUFDQyxFQUFFLEVBQUU7SUFDM0VGLFFBQVEsR0FBR0QsV0FBVyxDQUFDRSxPQUFPLENBQUNDLEVBQUUsR0FBRyxJQUFJO0lBQ3hDLElBQUlGLFFBQVEsS0FBSyxDQUFDLEVBQUU7TUFHbEJBLFFBQVEsR0FB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
|
|
322
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYW5kcm9pZEhlbHBlcnMiLCJfYmx1ZWJpcmQiLCJfZHJpdmVyIiwiX2FzeW5jYm94IiwiX3N1cHBvcnQiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZXhwb3J0cyIsImdldENvb3JkRGVmYXVsdCIsInZhbCIsInV0aWwiLCJoYXNWYWx1ZSIsImdldFN3aXBlVG91Y2hEdXJhdGlvbiIsIndhaXRHZXN0dXJlIiwiZHVyYXRpb24iLCJvcHRpb25zIiwibXMiLCJkb1RvdWNoQWN0aW9uIiwiYWN0aW9uIiwib3B0cyIsImVsZW1lbnQiLCJ4IiwieSIsImNvdW50IiwidGFwIiwidG91Y2hEb3duIiwidG91Y2hVcCIsInRvdWNoTW92ZSIsIkIiLCJkZWxheSIsInRvdWNoTG9uZ0NsaWNrIiwibG9nIiwid2FybiIsImVycm9yQW5kVGhyb3ciLCJkb1RvdWNoRHJhZyIsImdlc3R1cmVzIiwibG9uZ1ByZXNzIiwibW92ZVRvIiwic3RhcnRYIiwic3RhcnRZIiwiZW5kWCIsImVuZFkiLCJnZXRMb2NhdGlvbkluVmlldyIsImFwaUxldmVsIiwiYWRiIiwiZ2V0QXBpTGV2ZWwiLCJNYXRoIiwibWF4IiwiZHJhZyIsImZpeFJlbGVhc2UiLCJyZWxlYXNlIiwiXyIsImxhc3QiLCJjbG9uZSIsInJlZiIsImdlc3R1cmUiLCJyZXZlcnNlIiwibG9jIiwic2l6ZSIsImdldFNpemUiLCJ3aWR0aCIsImhlaWdodCIsInBpY2siLCJwZXJmb3JtR2VzdHVyZSIsImUiLCJpc0Vycm9yVHlwZSIsImVycm9ycyIsIk5vU3VjaEVsZW1lbnRFcnJvciIsImRlYnVnIiwiZ2V0U3dpcGVPcHRpb25zIiwidG91Y2hDb3VudCIsImRlc3RFbGVtZW50IiwibG9jUmVzdWx0Iiwic2l6ZVJlc3VsdCIsIm9mZnNldFgiLCJhYnMiLCJvZmZzZXRZIiwiZmlyc3RFbExvY2F0aW9uIiwicGVyZm9ybVRvdWNoIiwibGVuZ3RoIiwic3dpcGVPcHRzIiwic3dpcGUiLCJhY3Rpb25zIiwibWFwIiwiaGVhZCIsInBvcCIsInNsaWNlIiwicHJlc3MiLCJzaGlmdCIsIndhaXQiLCJmaXhlZEdlc3R1cmVzIiwicGFyc2VUb3VjaCIsImciLCJtdWx0aSIsInRvdWNoU3RhdGVPYmplY3RzIiwiYXN5bmNtYXAiLCJpbmNsdWRlcyIsIm9mZnNldCIsImVsZW1lbnRJZCIsInBvcyIsInRvdWNoU3RhdGVPYmplY3QiLCJ0aW1lT2Zmc2V0IiwicGFyc2VJbnQiLCJwcmV2UG9zIiwidGltZSIsInN0YXRlIiwiaXNVbmRlZmluZWQiLCJhbmRyb2lkSGVscGVycyIsInRydW5jYXRlRGVjaW1hbHMiLCJ0b3VjaCIsInBlcmZvcm1NdWx0aUFjdGlvbiIsIkVycm9yIiwic3RhdGVzIiwiZG9QZXJmb3JtTXVsdGlBY3Rpb24iLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwiT2JqZWN0IiwiYXNzaWduIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NvbW1hbmRzL3RvdWNoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYW5kcm9pZEhlbHBlcnMgZnJvbSAnLi4vYW5kcm9pZC1oZWxwZXJzJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IGVycm9ycywgaXNFcnJvclR5cGUgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7IGFzeW5jbWFwIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gZ2V0Q29vcmREZWZhdWx0ICh2YWwpIHtcbiAgLy8gZ29pbmcgdGhlIGxvbmcgd2F5IGFuZCBjaGVja2luZyBmb3IgdW5kZWZpbmVkIGFuZCBudWxsIHNpbmNlXG4gIC8vIHdlIGNhbid0IGJlIGFzc3VyZWQgYGVsSWRgIGlzIGEgc3RyaW5nIGFuZCBub3QgYW4gaW50LiBTYW1lXG4gIC8vIHRoaW5nIHdpdGggZGVzdEVsZW1lbnQgYmVsb3cuXG4gIHJldHVybiB1dGlsLmhhc1ZhbHVlKHZhbCkgPyB2YWwgOiAwLjU7XG59XG5cbmZ1bmN0aW9uIGdldFN3aXBlVG91Y2hEdXJhdGlvbiAod2FpdEdlc3R1cmUpIHtcbiAgLy8gdGhlIHRvdWNoIGFjdGlvbiBhcGkgdXNlcyBtcywgd2Ugd2FudCBzZWNvbmRzXG4gIC8vIDAuOCBpcyB0aGUgZGVmYXVsdCB0aW1lIGZvciB0aGUgb3BlcmF0aW9uXG4gIGxldCBkdXJhdGlvbiA9IDAuODtcbiAgaWYgKHR5cGVvZiB3YWl0R2VzdHVyZS5vcHRpb25zLm1zICE9PSAndW5kZWZpbmVkJyAmJiB3YWl0R2VzdHVyZS5vcHRpb25zLm1zKSB7XG4gICAgZHVyYXRpb24gPSB3YWl0R2VzdHVyZS5vcHRpb25zLm1zIC8gMTAwMDtcbiAgICBpZiAoZHVyYXRpb24gPT09IDApIHtcbiAgICAgIC8vIHNldCB0byBhIHZlcnkgbG93IG51bWJlciwgc2luY2UgdGhleSB3YW50ZWQgaXQgZmFzdFxuICAgICAgLy8gYnV0IGJlbG93IDAuMSBiZWNvbWVzIDAgc3RlcHMsIHdoaWNoIGNhdXNlcyBlcnJvcnNcbiAgICAgIGR1cmF0aW9uID0gMC4xO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZHVyYXRpb247XG59XG5cbmNvbW1hbmRzLmRvVG91Y2hBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBkb1RvdWNoQWN0aW9uIChhY3Rpb24sIG9wdHMgPSB7fSkge1xuICBjb25zdCB7IGVsZW1lbnQsIHgsIHksIGNvdW50LCBtcywgZHVyYXRpb24gfSA9IG9wdHM7XG4gIC8vIHBhcnNlVG91Y2ggcHJlY2FsY3VsYXRlcyBhYnNvbHV0ZSBlbGVtZW50IHBvc2l0aW9uc1xuICAvLyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHBhc3MgYGVsZW1lbnRgIHRvIHRoZSBhZmZlY3RlZCBnZXN0dXJlc1xuICBzd2l0Y2ggKGFjdGlvbikge1xuICAgIGNhc2UgJ3RhcCc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy50YXAobnVsbCwgeCwgeSwgY291bnQpO1xuICAgIGNhc2UgJ3ByZXNzJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRvdWNoRG93bihudWxsLCB4LCB5KTtcbiAgICBjYXNlICdyZWxlYXNlJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRvdWNoVXAoZWxlbWVudCwgeCwgeSk7XG4gICAgY2FzZSAnbW92ZVRvJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRvdWNoTW92ZShudWxsLCB4LCB5KTtcbiAgICBjYXNlICd3YWl0JzpcbiAgICAgIHJldHVybiBhd2FpdCBCLmRlbGF5KG1zKTtcbiAgICBjYXNlICdsb25nUHJlc3MnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hMb25nQ2xpY2sobnVsbCwgeCwgeSwgZHVyYXRpb24gfHwgMTAwMCk7XG4gICAgY2FzZSAnY2FuY2VsJzpcbiAgICAgIC8vIFRPRE86IGNsYXJpZnkgYmVoYXZpb3Igb2YgJ2NhbmNlbCcgYWN0aW9uIGFuZCBmaXggdGhpc1xuICAgICAgdGhpcy5sb2cud2FybignQ2FuY2VsIGFjdGlvbiBjdXJyZW50bHkgaGFzIG5vIGVmZmVjdCcpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYHVua25vd24gYWN0aW9uICR7YWN0aW9ufWApO1xuICB9XG59O1xuXG4vLyBkcmFnIGlzICpub3QqIHByZXNzLW1vdmUtcmVsZWFzZSwgc28gd2UgbmVlZCB0byB0cmFuc2xhdGVcbi8vIGRyYWcgd29ya3MgZmluZSBmb3Igc2Nyb2xsLCBhcyB3ZWxsXG5oZWxwZXJzLmRvVG91Y2hEcmFnID0gYXN5bmMgZnVuY3Rpb24gZG9Ub3VjaERyYWcgKGdlc3R1cmVzKSB7XG4gIGxldCBsb25nUHJlc3MgPSBnZXN0dXJlc1swXTtcbiAgbGV0IG1vdmVUbyA9IGdlc3R1cmVzWzFdO1xuICBsZXQgc3RhcnRYID0gbG9uZ1ByZXNzLm9wdGlvbnMueCB8fCAwLFxuICAgICAgc3RhcnRZID0gbG9uZ1ByZXNzLm9wdGlvbnMueSB8fCAwLFxuICAgICAgZW5kWCA9IG1vdmVUby5vcHRpb25zLnggfHwgMCxcbiAgICAgIGVuZFkgPSBtb3ZlVG8ub3B0aW9ucy55IHx8IDA7XG4gIGlmIChsb25nUHJlc3Mub3B0aW9ucy5lbGVtZW50KSB7XG4gICAgbGV0IHt4LCB5fSA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb25JblZpZXcobG9uZ1ByZXNzLm9wdGlvbnMuZWxlbWVudCk7XG4gICAgc3RhcnRYICs9IHggfHwgMDtcbiAgICBzdGFydFkgKz0geSB8fCAwO1xuICB9XG4gIGlmIChtb3ZlVG8ub3B0aW9ucy5lbGVtZW50KSB7XG4gICAgbGV0IHt4LCB5fSA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb25JblZpZXcobW92ZVRvLm9wdGlvbnMuZWxlbWVudCk7XG4gICAgZW5kWCArPSB4IHx8IDA7XG4gICAgZW5kWSArPSB5IHx8IDA7XG4gIH1cblxuICBsZXQgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuICAvLyBsb2xsaXBvcCB0YWtlcyBhIGxpdHRsZSBsb25nZXIgdG8gZ2V0IHRoaW5ncyByb2xsaW5nXG4gIGxldCBkdXJhdGlvbiA9IGFwaUxldmVsID49IDUgPyAyIDogMTtcbiAgLy8gbWFrZSBzdXJlIHRoYXQgaWYgdGhlIGxvbmcgcHJlc3MgaGFzIGEgZHVyYXRpb24sIHdlIHVzZSBpdC5cbiAgaWYgKGxvbmdQcmVzcy5vcHRpb25zICYmIGxvbmdQcmVzcy5vcHRpb25zLmR1cmF0aW9uKSB7XG4gICAgZHVyYXRpb24gPSBNYXRoLm1heChsb25nUHJlc3Mub3B0aW9ucy5kdXJhdGlvbiAvIDEwMDAsIGR1cmF0aW9uKTtcbiAgfVxuXG4gIC8vIGBkcmFnYCB3aWxsIHRha2UgY2FyZSBvZiB3aGV0aGVyIHRoZXJlIGlzIGFuIGVsZW1lbnQgb3Igbm90IGF0IHRoYXQgbGV2ZWxcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZHJhZyhzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIDEsIGxvbmdQcmVzcy5vcHRpb25zLmVsZW1lbnQsIG1vdmVUby5vcHRpb25zLmVsZW1lbnQpO1xufTtcblxuLy8gUmVsZWFzZSBnZXN0dXJlIG5lZWRzIGVsZW1lbnQgb3IgY28tb3JkaW5hdGVzIHRvIHJlbGVhc2UgaXQgZnJvbSB0aGF0IHBvc2l0aW9uXG4vLyBvciBlbHNlIHJlbGVhc2UgZ2VzdHVyZSBpcyBwZXJmb3JtZWQgZnJvbSBjZW50ZXIgb2YgdGhlIHNjcmVlbiwgc28gdG8gZml4IGl0XG4vLyBUaGlzIG1ldGhvZCBzZXRzIGNvLW9yZGluYXRlcy9lbGVtZW50IHRvIHJlbGVhc2UgZ2VzdHVyZSBpZiBpdCBoYXMgbm8gb3B0aW9ucyBzZXQgYWxyZWFkeS5cbmhlbHBlcnMuZml4UmVsZWFzZSA9IGFzeW5jIGZ1bmN0aW9uIGZpeFJlbGVhc2UgKGdlc3R1cmVzKSB7XG4gIGxldCByZWxlYXNlID0gXy5sYXN0KGdlc3R1cmVzKTtcbiAgLy8gc29tZXRpbWVzIHRoZXJlIGFyZSBubyBvcHRpb25zXG4gIHJlbGVhc2Uub3B0aW9ucyA9IHJlbGVhc2Uub3B0aW9ucyB8fCB7fTtcbiAgLy8gbm90aGluZyB0byBkbyBpZiByZWxlYXNlIG9wdGlvbnMgYXJlIGFscmVhZHkgc2V0XG4gIGlmIChyZWxlYXNlLm9wdGlvbnMuZWxlbWVudCB8fCAocmVsZWFzZS5vcHRpb25zLnggJiYgcmVsZWFzZS5vcHRpb25zLnkpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIHdpdGhvdXQgY29vcmRpbmF0ZXMsIGByZWxlYXNlYCB1c2VzIHRoZSBjZW50ZXIgb2YgdGhlIHNjcmVlbiwgd2hpY2gsXG4gIC8vIGdlbmVyYWxseSBzcGVha2luZywgaXMgbm90IHdoYXQgd2Ugd2FudFxuICAvLyB0aGVyZWZvcmU6IGxvb3AgYmFja3dhcmRzIGFuZCB1c2UgdGhlIGxhc3QgY29tbWFuZCB3aXRoIGFuIGVsZW1lbnQgYW5kL29yXG4gIC8vIG9mZnNldCBjb29yZGluYXRlc1xuICBnZXN0dXJlcyA9IF8uY2xvbmUoZ2VzdHVyZXMpO1xuICBsZXQgcmVmID0gbnVsbDtcbiAgZm9yIChsZXQgZ2VzdHVyZSBvZiBnZXN0dXJlcy5yZXZlcnNlKCkpIHtcbiAgICBsZXQgb3B0cyA9IGdlc3R1cmUub3B0aW9ucztcbiAgICBpZiAob3B0cy5lbGVtZW50IHx8IChvcHRzLnggJiYgb3B0cy55KSkge1xuICAgICAgcmVmID0gZ2VzdHVyZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocmVmKSB7XG4gICAgbGV0IG9wdHMgPSByZWYub3B0aW9ucztcbiAgICBpZiAob3B0cy5lbGVtZW50KSB7XG4gICAgICBsZXQgbG9jID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhvcHRzLmVsZW1lbnQpO1xuICAgICAgaWYgKG9wdHMueCAmJiBvcHRzLnkpIHtcbiAgICAgICAgLy8gdGhpcyBpcyBhbiBvZmZzZXQgZnJvbSB0aGUgZWxlbWVudFxuICAgICAgICByZWxlYXNlLm9wdGlvbnMgPSB7XG4gICAgICAgICAgeDogbG9jLnggKyBvcHRzLngsXG4gICAgICAgICAgeTogbG9jLnkgKyBvcHRzLnlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIGNlbnRlciBvZiB0aGUgZWxlbWVudFxuICAgICAgICBsZXQgc2l6ZSA9IGF3YWl0IHRoaXMuZ2V0U2l6ZShvcHRzLmVsZW1lbnQpO1xuICAgICAgICByZWxlYXNlLm9wdGlvbnMgPSB7XG4gICAgICAgICAgeDogbG9jLnggKyBzaXplLndpZHRoIC8gMixcbiAgICAgICAgICB5OiBsb2MueSArIHNpemUuaGVpZ2h0IC8gMlxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZWxlYXNlLm9wdGlvbnMgPSBfLnBpY2sob3B0cywgJ3gnLCAneScpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVsZWFzZTtcbn07XG5cbi8vIFBlcmZvcm0gb25lIGdlc3R1cmVcbmhlbHBlcnMucGVyZm9ybUdlc3R1cmUgPSBhc3luYyBmdW5jdGlvbiBwZXJmb3JtR2VzdHVyZSAoZ2VzdHVyZSkge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRvVG91Y2hBY3Rpb24oZ2VzdHVyZS5hY3Rpb24sIGdlc3R1cmUub3B0aW9ucyB8fCB7fSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBzb21ldGltZSB0aGUgZWxlbWVudCBpcyBub3QgYXZhaWxhYmxlIHdoZW4gcmVsZWFzaW5nLCByZXRyeSB3aXRob3V0IGl0XG4gICAgaWYgKGlzRXJyb3JUeXBlKGUsIGVycm9ycy5Ob1N1Y2hFbGVtZW50RXJyb3IpICYmIGdlc3R1cmUuYWN0aW9uID09PSAncmVsZWFzZScgJiZcbiAgICAgICAgZ2VzdHVyZS5vcHRpb25zLmVsZW1lbnQpIHtcbiAgICAgIGRlbGV0ZSBnZXN0dXJlLm9wdGlvbnMuZWxlbWVudDtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGByZXRyeWluZyByZWxlYXNlIHdpdGhvdXQgZWxlbWVudCBvcHRzOiAke2dlc3R1cmUub3B0aW9uc30uYCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5kb1RvdWNoQWN0aW9uKGdlc3R1cmUuYWN0aW9uLCBnZXN0dXJlLm9wdGlvbnMgfHwge30pO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5jb21tYW5kcy5nZXRTd2lwZU9wdGlvbnMgPSBhc3luYyBmdW5jdGlvbiBnZXRTd2lwZU9wdGlvbnMgKGdlc3R1cmVzLCB0b3VjaENvdW50ID0gMSkge1xuICBsZXQgc3RhcnRYID0gZ2V0Q29vcmREZWZhdWx0KGdlc3R1cmVzWzBdLm9wdGlvbnMueCksXG4gICAgICBzdGFydFkgPSBnZXRDb29yZERlZmF1bHQoZ2VzdHVyZXNbMF0ub3B0aW9ucy55KSxcbiAgICAgIGVuZFggPSBnZXRDb29yZERlZmF1bHQoZ2VzdHVyZXNbMl0ub3B0aW9ucy54KSxcbiAgICAgIGVuZFkgPSBnZXRDb29yZERlZmF1bHQoZ2VzdHVyZXNbMl0ub3B0aW9ucy55KSxcbiAgICAgIGR1cmF0aW9uID0gZ2V0U3dpcGVUb3VjaER1cmF0aW9uKGdlc3R1cmVzWzFdKSxcbiAgICAgIGVsZW1lbnQgPSBnZXN0dXJlc1swXS5vcHRpb25zLmVsZW1lbnQsXG4gICAgICBkZXN0RWxlbWVudCA9IGdlc3R1cmVzWzJdLm9wdGlvbnMuZWxlbWVudCB8fCBnZXN0dXJlc1swXS5vcHRpb25zLmVsZW1lbnQ7XG5cbiAgLy8gdGhlcmUncyBubyBkZXN0aW5hdGlvbiBlbGVtZW50IGhhbmRsaW5nIGluIGJvb3RzdHJhcCBhbmQgc2luY2UgaXQgYXBwbGllcyB0byBhbGwgcGxhdGZvcm1zLCB3ZSBoYW5kbGUgaXQgaGVyZVxuICBpZiAodXRpbC5oYXNWYWx1ZShkZXN0RWxlbWVudCkpIHtcbiAgICBsZXQgbG9jUmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhkZXN0RWxlbWVudCk7XG4gICAgbGV0IHNpemVSZXN1bHQgPSBhd2FpdCB0aGlzLmdldFNpemUoZGVzdEVsZW1lbnQpO1xuICAgIGxldCBvZmZzZXRYID0gKE1hdGguYWJzKGVuZFgpIDwgMSAmJiBNYXRoLmFicyhlbmRYKSA+IDApID8gc2l6ZVJlc3VsdC53aWR0aCAqIGVuZFggOiBlbmRYO1xuICAgIGxldCBvZmZzZXRZID0gKE1hdGguYWJzKGVuZFkpIDwgMSAmJiBNYXRoLmFicyhlbmRZKSA+IDApID8gc2l6ZVJlc3VsdC5oZWlnaHQgKiBlbmRZIDogZW5kWTtcbiAgICBlbmRYID0gbG9jUmVzdWx0LnggKyBvZmZzZXRYO1xuICAgIGVuZFkgPSBsb2NSZXN1bHQueSArIG9mZnNldFk7XG4gICAgLy8gaWYgdGhlIHRhcmdldCBlbGVtZW50IHdhcyBwcm92aWRlZCwgdGhlIGNvb3JkaW5hdGVzIGZvciB0aGUgZGVzdGluYXRpb24gbmVlZCB0byBiZSByZWxhdGl2ZSB0byBpdC5cbiAgICBpZiAodXRpbC5oYXNWYWx1ZShlbGVtZW50KSkge1xuICAgICAgbGV0IGZpcnN0RWxMb2NhdGlvbiA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb25JblZpZXcoZWxlbWVudCk7XG4gICAgICBlbmRYIC09IGZpcnN0RWxMb2NhdGlvbi54O1xuICAgICAgZW5kWSAtPSBmaXJzdEVsTG9jYXRpb24ueTtcbiAgICB9XG4gIH1cbiAgLy8gY2xpZW50cyBhcmUgcmVzcG9uc2libGUgdG8gdXNlIHRoZXNlIG9wdGlvbnMgY29ycmVjdGx5XG4gIHJldHVybiB7c3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIGR1cmF0aW9uLCB0b3VjaENvdW50LCBlbGVtZW50fTtcbn07XG5cbmNvbW1hbmRzLnBlcmZvcm1Ub3VjaCA9IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1Ub3VjaCAoZ2VzdHVyZXMpIHtcbiAgLy8gcHJlc3Mtd2FpdC1tb3ZlVG8tcmVsZWFzZSBpcyBgc3dpcGVgLCBzbyB1c2UgbmF0aXZlIG1ldGhvZFxuICBpZiAoZ2VzdHVyZXMubGVuZ3RoID09PSA0ICYmXG4gICAgICBnZXN0dXJlc1swXS5hY3Rpb24gPT09ICdwcmVzcycgJiZcbiAgICAgIGdlc3R1cmVzWzFdLmFjdGlvbiA9PT0gJ3dhaXQnICYmXG4gICAgICBnZXN0dXJlc1syXS5hY3Rpb24gPT09ICdtb3ZlVG8nICYmXG4gICAgICBnZXN0dXJlc1szXS5hY3Rpb24gPT09ICdyZWxlYXNlJykge1xuXG4gICAgbGV0IHN3aXBlT3B0cyA9IGF3YWl0IHRoaXMuZ2V0U3dpcGVPcHRpb25zKGdlc3R1cmVzKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zd2lwZShzd2lwZU9wdHMuc3RhcnRYLCBzd2lwZU9wdHMuc3RhcnRZLCBzd2lwZU9wdHMuZW5kWCxcbiAgICAgICAgc3dpcGVPcHRzLmVuZFksIHN3aXBlT3B0cy5kdXJhdGlvbiwgc3dpcGVPcHRzLnRvdWNoQ291bnQsXG4gICAgICAgIHN3aXBlT3B0cy5lbGVtZW50KTtcbiAgfVxuICBsZXQgYWN0aW9ucyA9IF8ubWFwKGdlc3R1cmVzLCAnYWN0aW9uJyk7XG5cbiAgaWYgKGFjdGlvbnNbMF0gPT09ICdsb25nUHJlc3MnICYmIGFjdGlvbnNbMV0gPT09ICdtb3ZlVG8nICYmIGFjdGlvbnNbMl0gPT09ICdyZWxlYXNlJykge1xuICAgIC8vIHNvbWUgdGhpbmdzIGFyZSBzcGVjaWFsXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZG9Ub3VjaERyYWcoZ2VzdHVyZXMpO1xuICB9IGVsc2Uge1xuICAgIGlmIChhY3Rpb25zLmxlbmd0aCA9PT0gMikge1xuICAgICAgLy8gYHByZXNzYCB3aXRob3V0IGEgd2FpdCBpcyB0b28gc2xvdyBhbmQgZ2V0cyBpbnRlcnByZXR0ZWQgYXMgYSBgbG9uZ1ByZXNzYFxuICAgICAgaWYgKF8uaGVhZChhY3Rpb25zKSA9PT0gJ3ByZXNzJyAmJiBfLmxhc3QoYWN0aW9ucykgPT09ICdyZWxlYXNlJykge1xuICAgICAgICBhY3Rpb25zWzBdID0gJ3RhcCc7XG4gICAgICAgIGdlc3R1cmVzWzBdLmFjdGlvbiA9ICd0YXAnO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGUgYGxvbmdQcmVzc2AgYW5kIGB0YXBgIG1ldGhvZHMgcmVsZWFzZSBvbiB0aGVpciBvd25cbiAgICAgIGlmICgoXy5oZWFkKGFjdGlvbnMpID09PSAndGFwJyB8fCBfLmhlYWQoYWN0aW9ucykgPT09ICdsb25nUHJlc3MnKSAmJiBfLmxhc3QoYWN0aW9ucykgPT09ICdyZWxlYXNlJykge1xuICAgICAgICBnZXN0dXJlcy5wb3AoKTtcbiAgICAgICAgYWN0aW9ucy5wb3AoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbG9uZ3ByZXNzIGZvbGxvd2VkIGJ5IGFueXRoaW5nIG90aGVyIHRoYW4gcmVsZWFzZSBzaG91bGQgYmVjb21lIGEgcHJlc3MgYW5kIHdhaXRcbiAgICAgIGlmIChhY3Rpb25zWzBdID09PSAnbG9uZ1ByZXNzJykge1xuICAgICAgICBhY3Rpb25zID0gWydwcmVzcycsICd3YWl0JywgLi4uYWN0aW9ucy5zbGljZSgxKV07XG5cbiAgICAgICAgbGV0IHByZXNzID0gZ2VzdHVyZXMuc2hpZnQoKTtcbiAgICAgICAgcHJlc3MuYWN0aW9uID0gJ3ByZXNzJztcbiAgICAgICAgbGV0IHdhaXQgPSB7XG4gICAgICAgICAgYWN0aW9uOiAnd2FpdCcsXG4gICAgICAgICAgb3B0aW9uczoge21zOiBwcmVzcy5vcHRpb25zLmR1cmF0aW9uIHx8IDEwMDB9XG4gICAgICAgIH07XG4gICAgICAgIGRlbGV0ZSBwcmVzcy5vcHRpb25zLmR1cmF0aW9uO1xuICAgICAgICBnZXN0dXJlcyA9IFtwcmVzcywgd2FpdCwgLi4uZ2VzdHVyZXNdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBmaXhlZEdlc3R1cmVzID0gYXdhaXQgdGhpcy5wYXJzZVRvdWNoKGdlc3R1cmVzLCBmYWxzZSk7XG4gICAgLy8gZml4IHJlbGVhc2UgYWN0aW9uIHRoZW4gcGVyZm9ybSBhbGwgYWN0aW9uc1xuICAgIGlmIChhY3Rpb25zW2FjdGlvbnMubGVuZ3RoIC0gMV0gPT09ICdyZWxlYXNlJykge1xuICAgICAgYWN0aW9uc1thY3Rpb25zLmxlbmd0aCAtIDFdID0gYXdhaXQgdGhpcy5maXhSZWxlYXNlKGdlc3R1cmVzKTtcbiAgICB9XG4gICAgZm9yIChsZXQgZyBvZiBmaXhlZEdlc3R1cmVzKSB7XG4gICAgICBhd2FpdCB0aGlzLnBlcmZvcm1HZXN0dXJlKGcpO1xuICAgIH1cbiAgfVxufTtcblxuaGVscGVycy5wYXJzZVRvdWNoID0gYXN5bmMgZnVuY3Rpb24gcGFyc2VUb3VjaCAoZ2VzdHVyZXMsIG11bHRpKSB7XG4gIC8vIGJlY2F1c2UgbXVsdGktdG91Y2ggcmVsZWFzZXMgYXQgdGhlIGVuZCBieSBkZWZhdWx0XG4gIGlmIChtdWx0aSAmJiBfLmxhc3QoZ2VzdHVyZXMpLmFjdGlvbiA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgZ2VzdHVyZXMucG9wKCk7XG4gIH1cblxuICBsZXQgdG91Y2hTdGF0ZU9iamVjdHMgPSBhd2FpdCBhc3luY21hcChnZXN0dXJlcywgYXN5bmMgKGdlc3R1cmUpID0+IHtcbiAgICBsZXQgb3B0aW9ucyA9IGdlc3R1cmUub3B0aW9ucyB8fCB7fTtcbiAgICBpZiAoXy5pbmNsdWRlcyhbJ3ByZXNzJywgJ21vdmVUbycsICd0YXAnLCAnbG9uZ1ByZXNzJ10sIGdlc3R1cmUuYWN0aW9uKSkge1xuICAgICAgb3B0aW9ucy5vZmZzZXQgPSBmYWxzZTtcbiAgICAgIGxldCBlbGVtZW50SWQgPSBnZXN0dXJlLm9wdGlvbnMuZWxlbWVudDtcbiAgICAgIGlmIChlbGVtZW50SWQpIHtcbiAgICAgICAgbGV0IHBvcyA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb25JblZpZXcoZWxlbWVudElkKTtcbiAgICAgICAgaWYgKGdlc3R1cmUub3B0aW9ucy54IHx8IGdlc3R1cmUub3B0aW9ucy55KSB7XG4gICAgICAgICAgb3B0aW9ucy54ID0gcG9zLnggKyAoZ2VzdHVyZS5vcHRpb25zLnggfHwgMCk7XG4gICAgICAgICAgb3B0aW9ucy55ID0gcG9zLnkgKyAoZ2VzdHVyZS5vcHRpb25zLnkgfHwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gYXdhaXQgdGhpcy5nZXRTaXplKGVsZW1lbnRJZCk7XG4gICAgICAgICAgb3B0aW9ucy54ID0gcG9zLnggKyAod2lkdGggLyAyKTtcbiAgICAgICAgICBvcHRpb25zLnkgPSBwb3MueSArIChoZWlnaHQgLyAyKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdG91Y2hTdGF0ZU9iamVjdCA9IHtcbiAgICAgICAgICBhY3Rpb246IGdlc3R1cmUuYWN0aW9uLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgdGltZU9mZnNldDogMC4wMDUsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0b3VjaFN0YXRlT2JqZWN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy54ID0gKGdlc3R1cmUub3B0aW9ucy54IHx8IDApO1xuICAgICAgICBvcHRpb25zLnkgPSAoZ2VzdHVyZS5vcHRpb25zLnkgfHwgMCk7XG5cbiAgICAgICAgbGV0IHRvdWNoU3RhdGVPYmplY3QgPSB7XG4gICAgICAgICAgYWN0aW9uOiBnZXN0dXJlLmFjdGlvbixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHRpbWVPZmZzZXQ6IDAuMDA1LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdG91Y2hTdGF0ZU9iamVjdDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG9mZnNldCA9IDAuMDA1O1xuICAgICAgaWYgKGdlc3R1cmUuYWN0aW9uID09PSAnd2FpdCcpIHtcbiAgICAgICAgb3B0aW9ucyA9IGdlc3R1cmUub3B0aW9ucztcbiAgICAgICAgb2Zmc2V0ID0gKHBhcnNlSW50KGdlc3R1cmUub3B0aW9ucy5tcywgMTApIC8gMTAwMCk7XG4gICAgICB9XG4gICAgICBsZXQgdG91Y2hTdGF0ZU9iamVjdCA9IHtcbiAgICAgICAgYWN0aW9uOiBnZXN0dXJlLmFjdGlvbixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgdGltZU9mZnNldDogb2Zmc2V0LFxuICAgICAgfTtcbiAgICAgIHJldHVybiB0b3VjaFN0YXRlT2JqZWN0O1xuICAgIH1cbiAgfSwgZmFsc2UpO1xuICAvLyB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgdGltZSAod2hpY2ggaXMgbm93IGFuIG9mZnNldClcbiAgLy8gYW5kIHRoZSBwb3NpdGlvbiAod2hpY2ggbWF5IGJlIGFuIG9mZnNldClcbiAgbGV0IHByZXZQb3MgPSBudWxsLFxuICAgICAgdGltZSA9IDA7XG4gIGZvciAobGV0IHN0YXRlIG9mIHRvdWNoU3RhdGVPYmplY3RzKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy54KSAmJiBfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueSkgJiYgcHJldlBvcyAhPT0gbnVsbCkge1xuICAgICAgLy8gdGhpcyBoYXBwZW5zIHdpdGggd2FpdFxuICAgICAgc3RhdGUub3B0aW9ucy54ID0gcHJldlBvcy54O1xuICAgICAgc3RhdGUub3B0aW9ucy55ID0gcHJldlBvcy55O1xuICAgIH1cbiAgICBpZiAoc3RhdGUub3B0aW9ucy5vZmZzZXQgJiYgcHJldlBvcykge1xuICAgICAgLy8gdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgYW4gb2Zmc2V0XG4gICAgICBzdGF0ZS5vcHRpb25zLnggKz0gcHJldlBvcy54O1xuICAgICAgc3RhdGUub3B0aW9ucy55ICs9IHByZXZQb3MueTtcbiAgICB9XG4gICAgZGVsZXRlIHN0YXRlLm9wdGlvbnMub2Zmc2V0O1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChzdGF0ZS5vcHRpb25zLngpICYmICFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueSkpIHtcbiAgICAgIHByZXZQb3MgPSBzdGF0ZS5vcHRpb25zO1xuICAgIH1cblxuICAgIGlmIChtdWx0aSkge1xuICAgICAgbGV0IHRpbWVPZmZzZXQgPSBzdGF0ZS50aW1lT2Zmc2V0O1xuICAgICAgdGltZSArPSB0aW1lT2Zmc2V0O1xuICAgICAgc3RhdGUudGltZSA9IGFuZHJvaWRIZWxwZXJzLnRydW5jYXRlRGVjaW1hbHModGltZSwgMyk7XG5cbiAgICAgIC8vIG11bHRpIGdlc3R1cmVzIHJlcXVpcmUgJ3RvdWNoJyByYXRoZXIgdGhhbiAnb3B0aW9ucydcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzdGF0ZS5vcHRpb25zLngpICYmICFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueSkpIHtcbiAgICAgICAgc3RhdGUudG91Y2ggPSB7XG4gICAgICAgICAgeDogc3RhdGUub3B0aW9ucy54LFxuICAgICAgICAgIHk6IHN0YXRlLm9wdGlvbnMueVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZGVsZXRlIHN0YXRlLm9wdGlvbnM7XG4gICAgfVxuICAgIGRlbGV0ZSBzdGF0ZS50aW1lT2Zmc2V0O1xuICB9XG4gIHJldHVybiB0b3VjaFN0YXRlT2JqZWN0cztcbn07XG5cblxuY29tbWFuZHMucGVyZm9ybU11bHRpQWN0aW9uID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybU11bHRpQWN0aW9uIChhY3Rpb25zLCBlbGVtZW50SWQpIHtcbiAgLy8gQW5kcm9pZCBuZWVkcyBhdCBsZWFzdCB0d28gYWN0aW9ucyB0byBiZSBhYmxlIHRvIHBlcmZvcm0gYSBtdWx0aSBwb2ludGVyIGdlc3R1cmVcbiAgaWYgKGFjdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNdWx0aSBQb2ludGVyIEdlc3R1cmVzIG5lZWQgYXQgbGVhc3QgdHdvIGFjdGlvbnMuICcgK1xuICAgICAgICAnVXNlIFRvdWNoIEFjdGlvbnMgZm9yIGEgc2luZ2xlIGFjdGlvbi4nKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXRlcyA9IGF3YWl0IGFzeW5jbWFwKGFjdGlvbnMsIGFzeW5jIChhY3Rpb24pID0+IGF3YWl0IHRoaXMucGFyc2VUb3VjaChhY3Rpb24sIHRydWUpLCBmYWxzZSk7XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMuZG9QZXJmb3JtTXVsdGlBY3Rpb24oZWxlbWVudElkLCBzdGF0ZXMpO1xufTtcblxuLyoqXG4gKiBSZWFzb24gZm9yIGlzb2xhdGluZyBkb1BlcmZvcm1NdWx0aUFjdGlvbiBmcm9tIHBlcmZvcm1NdWx0aUFjdGlvbiBpcyBmb3IgcmV1c2luZyBwZXJmb3JtTXVsdGlBY3Rpb25cbiAqIGFjcm9zcyBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIGFuZCB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLlxuICogT3RoZXIgYW5kcm9pZC1kcml2ZXJzIChsaWtlIGFwcGl1bS11aWF1dG9tYXRvcjItZHJpdmVyKSBuZWVkIHRvIG92ZXJyaWRlIGRvUGVyZm9ybU11bHRpQWN0aW9uXG4gKiB0byBmYWNpbGl0YXRlIHBlcmZvcm1NdWx0aUFjdGlvbi5cbiAqL1xuY29tbWFuZHMuZG9QZXJmb3JtTXVsdGlBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBkb1BlcmZvcm1NdWx0aUFjdGlvbiAoZWxlbWVudElkLCBzdGF0ZXMpIHtcbiAgbGV0IG9wdHM7XG4gIGlmIChlbGVtZW50SWQpIHtcbiAgICBvcHRzID0ge1xuICAgICAgZWxlbWVudElkLFxuICAgICAgYWN0aW9uczogc3RhdGVzXG4gICAgfTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpwZXJmb3JtTXVsdGlQb2ludGVyR2VzdHVyZScsIG9wdHMpO1xuICB9IGVsc2Uge1xuICAgIG9wdHMgPSB7XG4gICAgICBhY3Rpb25zOiBzdGF0ZXNcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdwZXJmb3JtTXVsdGlQb2ludGVyR2VzdHVyZScsIG9wdHMpO1xuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUlNLFFBQVEsR0FBRyxDQUFDLENBQUM7RUFBRUMsT0FBTyxHQUFHLENBQUMsQ0FBQztFQUFFQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQUNDLE9BQUEsQ0FBQUYsT0FBQSxHQUFBQSxPQUFBO0FBQUFFLE9BQUEsQ0FBQUgsUUFBQSxHQUFBQSxR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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"touch.js","names":["commands","helpers","extensions","getCoordDefault","val","util","hasValue","getSwipeTouchDuration","waitGesture","duration","options","ms","doTouchAction","action","opts","element","x","y","count","tap","touchDown","touchUp","touchMove","B","delay","touchLongClick","log","warn","errorAndThrow","doTouchDrag","gestures","longPress","moveTo","startX","startY","endX","endY","getLocationInView","apiLevel","adb","getApiLevel","Math","max","drag","fixRelease","release","_","last","clone","ref","gesture","reverse","loc","size","getSize","width","height","pick","performGesture","e","isErrorType","errors","NoSuchElementError","debug","getSwipeOptions","touchCount","destElement","locResult","sizeResult","offsetX","abs","offsetY","firstElLocation","performTouch","length","swipeOpts","swipe","actions","map","head","pop","slice","press","shift","wait","fixedGestures","parseTouch","g","multi","touchStateObjects","asyncmap","includes","offset","elementId","pos","touchStateObject","timeOffset","parseInt","prevPos","time","state","isUndefined","androidHelpers","truncateDecimals","touch","performMultiAction","Error","states","doPerformMultiAction","bootstrap","sendAction","Object","assign"],"sources":["../../../lib/commands/touch.js"],"sourcesContent":["import _ from 'lodash';\nimport androidHelpers from '../android-helpers';\nimport B from 'bluebird';\nimport { errors, isErrorType } from 'appium/driver';\nimport { asyncmap } from 'asyncbox';\nimport { util } from '@appium/support';\n\nlet commands = {}, helpers = {}, extensions = {};\n\nfunction getCoordDefault (val) {\n // going the long way and checking for undefined and null since\n // we can't be assured `elId` is a string and not an int. Same\n // thing with destElement below.\n return util.hasValue(val) ? val : 0.5;\n}\n\nfunction getSwipeTouchDuration (waitGesture) {\n // the touch action api uses ms, we want seconds\n // 0.8 is the default time for the operation\n let duration = 0.8;\n if (typeof waitGesture.options.ms !== 'undefined' && waitGesture.options.ms) {\n duration = waitGesture.options.ms / 1000;\n if (duration === 0) {\n // set to a very low number, since they wanted it fast\n // but below 0.1 becomes 0 steps, which causes errors\n duration = 0.1;\n }\n }\n return duration;\n}\n\ncommands.doTouchAction = async function doTouchAction (action, opts = {}) {\n const { element, x, y, count, ms, duration } = opts;\n // parseTouch precalculates absolute element positions\n // so there is no need to pass `element` to the affected gestures\n switch (action) {\n case 'tap':\n return await this.tap(null, x, y, count);\n case 'press':\n return await this.touchDown(null, x, y);\n case 'release':\n return await this.touchUp(element, x, y);\n case 'moveTo':\n return await this.touchMove(null, x, y);\n case 'wait':\n return await B.delay(ms);\n case 'longPress':\n return await this.touchLongClick(null, x, y, duration || 1000);\n case 'cancel':\n // TODO: clarify behavior of 'cancel' action and fix this\n this.log.warn('Cancel action currently has no effect');\n break;\n default:\n this.log.errorAndThrow(`unknown action ${action}`);\n }\n};\n\n// drag is *not* press-move-release, so we need to translate\n// drag works fine for scroll, as well\nhelpers.doTouchDrag = async function doTouchDrag (gestures) {\n let longPress = gestures[0];\n let moveTo = gestures[1];\n let startX = longPress.options.x || 0,\n startY = longPress.options.y || 0,\n endX = moveTo.options.x || 0,\n endY = moveTo.options.y || 0;\n if (longPress.options.element) {\n let {x, y} = await this.getLocationInView(longPress.options.element);\n startX += x || 0;\n startY += y || 0;\n }\n if (moveTo.options.element) {\n let {x, y} = await this.getLocationInView(moveTo.options.element);\n endX += x || 0;\n endY += y || 0;\n }\n\n let apiLevel = await this.adb.getApiLevel();\n // lollipop takes a little longer to get things rolling\n let duration = apiLevel >= 5 ? 2 : 1;\n // make sure that if the long press has a duration, we use it.\n if (longPress.options && longPress.options.duration) {\n duration = Math.max(longPress.options.duration / 1000, duration);\n }\n\n // `drag` will take care of whether there is an element or not at that level\n return await this.drag(startX, startY, endX, endY, duration, 1, longPress.options.element, moveTo.options.element);\n};\n\n// Release gesture needs element or co-ordinates to release it from that position\n// or else release gesture is performed from center of the screen, so to fix it\n// This method sets co-ordinates/element to release gesture if it has no options set already.\nhelpers.fixRelease = async function fixRelease (gestures) {\n let release = _.last(gestures);\n // sometimes there are no options\n release.options = release.options || {};\n // nothing to do if release options are already set\n if (release.options.element || (release.options.x && release.options.y)) {\n return;\n }\n // without coordinates, `release` uses the center of the screen, which,\n // generally speaking, is not what we want\n // therefore: loop backwards and use the last command with an element and/or\n // offset coordinates\n gestures = _.clone(gestures);\n let ref = null;\n for (let gesture of gestures.reverse()) {\n let opts = gesture.options;\n if (opts.element || (opts.x && opts.y)) {\n ref = gesture;\n break;\n }\n }\n if (ref) {\n let opts = ref.options;\n if (opts.element) {\n let loc = await this.getLocationInView(opts.element);\n if (opts.x && opts.y) {\n // this is an offset from the element\n release.options = {\n x: loc.x + opts.x,\n y: loc.y + opts.y\n };\n } else {\n // this is the center of the element\n let size = await this.getSize(opts.element);\n release.options = {\n x: loc.x + size.width / 2,\n y: loc.y + size.height / 2\n };\n }\n } else {\n release.options = _.pick(opts, 'x', 'y');\n }\n }\n return release;\n};\n\n// Perform one gesture\nhelpers.performGesture = async function performGesture (gesture) {\n try {\n return await this.doTouchAction(gesture.action, gesture.options || {});\n } catch (e) {\n // sometime the element is not available when releasing, retry without it\n if (isErrorType(e, errors.NoSuchElementError) && gesture.action === 'release' &&\n gesture.options.element) {\n delete gesture.options.element;\n this.log.debug(`retrying release without element opts: ${gesture.options}.`);\n return await this.doTouchAction(gesture.action, gesture.options || {});\n }\n throw e;\n }\n};\n\ncommands.getSwipeOptions = async function getSwipeOptions (gestures, touchCount = 1) {\n let startX = getCoordDefault(gestures[0].options.x),\n startY = getCoordDefault(gestures[0].options.y),\n endX = getCoordDefault(gestures[2].options.x),\n endY = getCoordDefault(gestures[2].options.y),\n duration = getSwipeTouchDuration(gestures[1]),\n element = gestures[0].options.element,\n destElement = gestures[2].options.element || gestures[0].options.element;\n\n // there's no destination element handling in bootstrap and since it applies to all platforms, we handle it here\n if (util.hasValue(destElement)) {\n let locResult = await this.getLocationInView(destElement);\n let sizeResult = await this.getSize(destElement);\n let offsetX = (Math.abs(endX) < 1 && Math.abs(endX) > 0) ? sizeResult.width * endX : endX;\n let offsetY = (Math.abs(endY) < 1 && Math.abs(endY) > 0) ? sizeResult.height * endY : endY;\n endX = locResult.x + offsetX;\n endY = locResult.y + offsetY;\n // if the target element was provided, the coordinates for the destination need to be relative to it.\n if (util.hasValue(element)) {\n let firstElLocation = await this.getLocationInView(element);\n endX -= firstElLocation.x;\n endY -= firstElLocation.y;\n }\n }\n // clients are responsible to use these options correctly\n return {startX, startY, endX, endY, duration, touchCount, element};\n};\n\ncommands.performTouch = async function performTouch (gestures) {\n // press-wait-moveTo-release is `swipe`, so use native method\n if (gestures.length === 4 &&\n gestures[0].action === 'press' &&\n gestures[1].action === 'wait' &&\n gestures[2].action === 'moveTo' &&\n gestures[3].action === 'release') {\n\n let swipeOpts = await this.getSwipeOptions(gestures);\n return await this.swipe(swipeOpts.startX, swipeOpts.startY, swipeOpts.endX,\n swipeOpts.endY, swipeOpts.duration, swipeOpts.touchCount,\n swipeOpts.element);\n }\n let actions = _.map(gestures, 'action');\n\n if (actions[0] === 'longPress' && actions[1] === 'moveTo' && actions[2] === 'release') {\n // some things are special\n return await this.doTouchDrag(gestures);\n } else {\n if (actions.length === 2) {\n // `press` without a wait is too slow and gets interpretted as a `longPress`\n if (_.head(actions) === 'press' && _.last(actions) === 'release') {\n actions[0] = 'tap';\n gestures[0].action = 'tap';\n }\n\n // the `longPress` and `tap` methods release on their own\n if ((_.head(actions) === 'tap' || _.head(actions) === 'longPress') && _.last(actions) === 'release') {\n gestures.pop();\n actions.pop();\n }\n } else {\n // longpress followed by anything other than release should become a press and wait\n if (actions[0] === 'longPress') {\n actions = ['press', 'wait', ...actions.slice(1)];\n\n let press = gestures.shift();\n press.action = 'press';\n let wait = {\n action: 'wait',\n options: {ms: press.options.duration || 1000}\n };\n delete press.options.duration;\n gestures = [press, wait, ...gestures];\n }\n }\n\n let fixedGestures = await this.parseTouch(gestures, false);\n // fix release action then perform all actions\n if (actions[actions.length - 1] === 'release') {\n actions[actions.length - 1] = await this.fixRelease(gestures);\n }\n for (let g of fixedGestures) {\n await this.performGesture(g);\n }\n }\n};\n\nhelpers.parseTouch = async function parseTouch (gestures, multi) {\n // because multi-touch releases at the end by default\n if (multi && _.last(gestures).action === 'release') {\n gestures.pop();\n }\n\n let touchStateObjects = await asyncmap(gestures, async (gesture) => {\n let options = gesture.options || {};\n if (_.includes(['press', 'moveTo', 'tap', 'longPress'], gesture.action)) {\n options.offset = false;\n let elementId = gesture.options.element;\n if (elementId) {\n let pos = await this.getLocationInView(elementId);\n if (gesture.options.x || gesture.options.y) {\n options.x = pos.x + (gesture.options.x || 0);\n options.y = pos.y + (gesture.options.y || 0);\n } else {\n const {width, height} = await this.getSize(elementId);\n options.x = pos.x + (width / 2);\n options.y = pos.y + (height / 2);\n }\n let touchStateObject = {\n action: gesture.action,\n options,\n timeOffset: 0.005,\n };\n return touchStateObject;\n } else {\n options.x = (gesture.options.x || 0);\n options.y = (gesture.options.y || 0);\n\n let touchStateObject = {\n action: gesture.action,\n options,\n timeOffset: 0.005,\n };\n return touchStateObject;\n }\n } else {\n let offset = 0.005;\n if (gesture.action === 'wait') {\n options = gesture.options;\n offset = (parseInt(gesture.options.ms, 10) / 1000);\n }\n let touchStateObject = {\n action: gesture.action,\n options,\n timeOffset: offset,\n };\n return touchStateObject;\n }\n }, false);\n // we need to change the time (which is now an offset)\n // and the position (which may be an offset)\n let prevPos = null,\n time = 0;\n for (let state of touchStateObjects) {\n if (_.isUndefined(state.options.x) && _.isUndefined(state.options.y) && prevPos !== null) {\n // this happens with wait\n state.options.x = prevPos.x;\n state.options.y = prevPos.y;\n }\n if (state.options.offset && prevPos) {\n // the current position is an offset\n state.options.x += prevPos.x;\n state.options.y += prevPos.y;\n }\n delete state.options.offset;\n if (!_.isUndefined(state.options.x) && !_.isUndefined(state.options.y)) {\n prevPos = state.options;\n }\n\n if (multi) {\n let timeOffset = state.timeOffset;\n time += timeOffset;\n state.time = androidHelpers.truncateDecimals(time, 3);\n\n // multi gestures require 'touch' rather than 'options'\n if (!_.isUndefined(state.options.x) && !_.isUndefined(state.options.y)) {\n state.touch = {\n x: state.options.x,\n y: state.options.y\n };\n }\n delete state.options;\n }\n delete state.timeOffset;\n }\n return touchStateObjects;\n};\n\n\ncommands.performMultiAction = async function performMultiAction (actions, elementId) {\n // Android needs at least two actions to be able to perform a multi pointer gesture\n if (actions.length === 1) {\n throw new Error('Multi Pointer Gestures need at least two actions. ' +\n 'Use Touch Actions for a single action.');\n }\n\n const states = await asyncmap(actions, async (action) => await this.parseTouch(action, true), false);\n\n return await this.doPerformMultiAction(elementId, states);\n};\n\n/**\n * Reason for isolating doPerformMultiAction from performMultiAction is for reusing performMultiAction\n * across android-drivers (like appium-uiautomator2-driver) and to avoid code duplication.\n * Other android-drivers (like appium-uiautomator2-driver) need to override doPerformMultiAction\n * to facilitate performMultiAction.\n */\ncommands.doPerformMultiAction = async function doPerformMultiAction (elementId, states) {\n let opts;\n if (elementId) {\n opts = {\n elementId,\n actions: states\n };\n return await this.bootstrap.sendAction('element:performMultiPointerGesture', opts);\n } else {\n opts = {\n actions: states\n };\n return await this.bootstrap.sendAction('performMultiPointerGesture', opts);\n }\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"touch.js","names":["_lodash","_interopRequireDefault","require","_androidHelpers","_bluebird","_driver","_asyncbox","_support","commands","helpers","extensions","exports","getCoordDefault","val","util","hasValue","getSwipeTouchDuration","waitGesture","duration","options","ms","doTouchAction","action","opts","element","x","y","count","tap","touchDown","touchUp","touchMove","B","delay","touchLongClick","log","warn","errorAndThrow","doTouchDrag","gestures","longPress","moveTo","startX","startY","endX","endY","getLocationInView","apiLevel","adb","getApiLevel","Math","max","drag","fixRelease","release","_","last","clone","ref","gesture","reverse","loc","size","getSize","width","height","pick","performGesture","e","isErrorType","errors","NoSuchElementError","debug","getSwipeOptions","touchCount","destElement","locResult","sizeResult","offsetX","abs","offsetY","firstElLocation","performTouch","length","swipeOpts","swipe","actions","map","head","pop","slice","press","shift","wait","fixedGestures","parseTouch","g","multi","touchStateObjects","asyncmap","includes","offset","elementId","pos","touchStateObject","timeOffset","parseInt","prevPos","time","state","isUndefined","androidHelpers","truncateDecimals","touch","performMultiAction","Error","states","doPerformMultiAction","bootstrap","sendAction","Object","assign","_default","default"],"sources":["../../../lib/commands/touch.js"],"sourcesContent":["import _ from 'lodash';\nimport androidHelpers from '../android-helpers';\nimport B from 'bluebird';\nimport { errors, isErrorType } from 'appium/driver';\nimport { asyncmap } from 'asyncbox';\nimport { util } from '@appium/support';\n\nlet commands = {}, helpers = {}, extensions = {};\n\nfunction getCoordDefault (val) {\n // going the long way and checking for undefined and null since\n // we can't be assured `elId` is a string and not an int. Same\n // thing with destElement below.\n return util.hasValue(val) ? val : 0.5;\n}\n\nfunction getSwipeTouchDuration (waitGesture) {\n // the touch action api uses ms, we want seconds\n // 0.8 is the default time for the operation\n let duration = 0.8;\n if (typeof waitGesture.options.ms !== 'undefined' && waitGesture.options.ms) {\n duration = waitGesture.options.ms / 1000;\n if (duration === 0) {\n // set to a very low number, since they wanted it fast\n // but below 0.1 becomes 0 steps, which causes errors\n duration = 0.1;\n }\n }\n return duration;\n}\n\ncommands.doTouchAction = async function doTouchAction (action, opts = {}) {\n const { element, x, y, count, ms, duration } = opts;\n // parseTouch precalculates absolute element positions\n // so there is no need to pass `element` to the affected gestures\n switch (action) {\n case 'tap':\n return await this.tap(null, x, y, count);\n case 'press':\n return await this.touchDown(null, x, y);\n case 'release':\n return await this.touchUp(element, x, y);\n case 'moveTo':\n return await this.touchMove(null, x, y);\n case 'wait':\n return await B.delay(ms);\n case 'longPress':\n return await this.touchLongClick(null, x, y, duration || 1000);\n case 'cancel':\n // TODO: clarify behavior of 'cancel' action and fix this\n this.log.warn('Cancel action currently has no effect');\n break;\n default:\n this.log.errorAndThrow(`unknown action ${action}`);\n }\n};\n\n// drag is *not* press-move-release, so we need to translate\n// drag works fine for scroll, as well\nhelpers.doTouchDrag = async function doTouchDrag (gestures) {\n let longPress = gestures[0];\n let moveTo = gestures[1];\n let startX = longPress.options.x || 0,\n startY = longPress.options.y || 0,\n endX = moveTo.options.x || 0,\n endY = moveTo.options.y || 0;\n if (longPress.options.element) {\n let {x, y} = await this.getLocationInView(longPress.options.element);\n startX += x || 0;\n startY += y || 0;\n }\n if (moveTo.options.element) {\n let {x, y} = await this.getLocationInView(moveTo.options.element);\n endX += x || 0;\n endY += y || 0;\n }\n\n let apiLevel = await this.adb.getApiLevel();\n // lollipop takes a little longer to get things rolling\n let duration = apiLevel >= 5 ? 2 : 1;\n // make sure that if the long press has a duration, we use it.\n if (longPress.options && longPress.options.duration) {\n duration = Math.max(longPress.options.duration / 1000, duration);\n }\n\n // `drag` will take care of whether there is an element or not at that level\n return await this.drag(startX, startY, endX, endY, duration, 1, longPress.options.element, moveTo.options.element);\n};\n\n// Release gesture needs element or co-ordinates to release it from that position\n// or else release gesture is performed from center of the screen, so to fix it\n// This method sets co-ordinates/element to release gesture if it has no options set already.\nhelpers.fixRelease = async function fixRelease (gestures) {\n let release = _.last(gestures);\n // sometimes there are no options\n release.options = release.options || {};\n // nothing to do if release options are already set\n if (release.options.element || (release.options.x && release.options.y)) {\n return;\n }\n // without coordinates, `release` uses the center of the screen, which,\n // generally speaking, is not what we want\n // therefore: loop backwards and use the last command with an element and/or\n // offset coordinates\n gestures = _.clone(gestures);\n let ref = null;\n for (let gesture of gestures.reverse()) {\n let opts = gesture.options;\n if (opts.element || (opts.x && opts.y)) {\n ref = gesture;\n break;\n }\n }\n if (ref) {\n let opts = ref.options;\n if (opts.element) {\n let loc = await this.getLocationInView(opts.element);\n if (opts.x && opts.y) {\n // this is an offset from the element\n release.options = {\n x: loc.x + opts.x,\n y: loc.y + opts.y\n };\n } else {\n // this is the center of the element\n let size = await this.getSize(opts.element);\n release.options = {\n x: loc.x + size.width / 2,\n y: loc.y + size.height / 2\n };\n }\n } else {\n release.options = _.pick(opts, 'x', 'y');\n }\n }\n return release;\n};\n\n// Perform one gesture\nhelpers.performGesture = async function performGesture (gesture) {\n try {\n return await this.doTouchAction(gesture.action, gesture.options || {});\n } catch (e) {\n // sometime the element is not available when releasing, retry without it\n if (isErrorType(e, errors.NoSuchElementError) && gesture.action === 'release' &&\n gesture.options.element) {\n delete gesture.options.element;\n this.log.debug(`retrying release without element opts: ${gesture.options}.`);\n return await this.doTouchAction(gesture.action, gesture.options || {});\n }\n throw e;\n }\n};\n\ncommands.getSwipeOptions = async function getSwipeOptions (gestures, touchCount = 1) {\n let startX = getCoordDefault(gestures[0].options.x),\n startY = getCoordDefault(gestures[0].options.y),\n endX = getCoordDefault(gestures[2].options.x),\n endY = getCoordDefault(gestures[2].options.y),\n duration = getSwipeTouchDuration(gestures[1]),\n element = gestures[0].options.element,\n destElement = gestures[2].options.element || gestures[0].options.element;\n\n // there's no destination element handling in bootstrap and since it applies to all platforms, we handle it here\n if (util.hasValue(destElement)) {\n let locResult = await this.getLocationInView(destElement);\n let sizeResult = await this.getSize(destElement);\n let offsetX = (Math.abs(endX) < 1 && Math.abs(endX) > 0) ? sizeResult.width * endX : endX;\n let offsetY = (Math.abs(endY) < 1 && Math.abs(endY) > 0) ? sizeResult.height * endY : endY;\n endX = locResult.x + offsetX;\n endY = locResult.y + offsetY;\n // if the target element was provided, the coordinates for the destination need to be relative to it.\n if (util.hasValue(element)) {\n let firstElLocation = await this.getLocationInView(element);\n endX -= firstElLocation.x;\n endY -= firstElLocation.y;\n }\n }\n // clients are responsible to use these options correctly\n return {startX, startY, endX, endY, duration, touchCount, element};\n};\n\ncommands.performTouch = async function performTouch (gestures) {\n // press-wait-moveTo-release is `swipe`, so use native method\n if (gestures.length === 4 &&\n gestures[0].action === 'press' &&\n gestures[1].action === 'wait' &&\n gestures[2].action === 'moveTo' &&\n gestures[3].action === 'release') {\n\n let swipeOpts = await this.getSwipeOptions(gestures);\n return await this.swipe(swipeOpts.startX, swipeOpts.startY, swipeOpts.endX,\n swipeOpts.endY, swipeOpts.duration, swipeOpts.touchCount,\n swipeOpts.element);\n }\n let actions = _.map(gestures, 'action');\n\n if (actions[0] === 'longPress' && actions[1] === 'moveTo' && actions[2] === 'release') {\n // some things are special\n return await this.doTouchDrag(gestures);\n } else {\n if (actions.length === 2) {\n // `press` without a wait is too slow and gets interpretted as a `longPress`\n if (_.head(actions) === 'press' && _.last(actions) === 'release') {\n actions[0] = 'tap';\n gestures[0].action = 'tap';\n }\n\n // the `longPress` and `tap` methods release on their own\n if ((_.head(actions) === 'tap' || _.head(actions) === 'longPress') && _.last(actions) === 'release') {\n gestures.pop();\n actions.pop();\n }\n } else {\n // longpress followed by anything other than release should become a press and wait\n if (actions[0] === 'longPress') {\n actions = ['press', 'wait', ...actions.slice(1)];\n\n let press = gestures.shift();\n press.action = 'press';\n let wait = {\n action: 'wait',\n options: {ms: press.options.duration || 1000}\n };\n delete press.options.duration;\n gestures = [press, wait, ...gestures];\n }\n }\n\n let fixedGestures = await this.parseTouch(gestures, false);\n // fix release action then perform all actions\n if (actions[actions.length - 1] === 'release') {\n actions[actions.length - 1] = await this.fixRelease(gestures);\n }\n for (let g of fixedGestures) {\n await this.performGesture(g);\n }\n }\n};\n\nhelpers.parseTouch = async function parseTouch (gestures, multi) {\n // because multi-touch releases at the end by default\n if (multi && _.last(gestures).action === 'release') {\n gestures.pop();\n }\n\n let touchStateObjects = await asyncmap(gestures, async (gesture) => {\n let options = gesture.options || {};\n if (_.includes(['press', 'moveTo', 'tap', 'longPress'], gesture.action)) {\n options.offset = false;\n let elementId = gesture.options.element;\n if (elementId) {\n let pos = await this.getLocationInView(elementId);\n if (gesture.options.x || gesture.options.y) {\n options.x = pos.x + (gesture.options.x || 0);\n options.y = pos.y + (gesture.options.y || 0);\n } else {\n const {width, height} = await this.getSize(elementId);\n options.x = pos.x + (width / 2);\n options.y = pos.y + (height / 2);\n }\n let touchStateObject = {\n action: gesture.action,\n options,\n timeOffset: 0.005,\n };\n return touchStateObject;\n } else {\n options.x = (gesture.options.x || 0);\n options.y = (gesture.options.y || 0);\n\n let touchStateObject = {\n action: gesture.action,\n options,\n timeOffset: 0.005,\n };\n return touchStateObject;\n }\n } else {\n let offset = 0.005;\n if (gesture.action === 'wait') {\n options = gesture.options;\n offset = (parseInt(gesture.options.ms, 10) / 1000);\n }\n let touchStateObject = {\n action: gesture.action,\n options,\n timeOffset: offset,\n };\n return touchStateObject;\n }\n }, false);\n // we need to change the time (which is now an offset)\n // and the position (which may be an offset)\n let prevPos = null,\n time = 0;\n for (let state of touchStateObjects) {\n if (_.isUndefined(state.options.x) && _.isUndefined(state.options.y) && prevPos !== null) {\n // this happens with wait\n state.options.x = prevPos.x;\n state.options.y = prevPos.y;\n }\n if (state.options.offset && prevPos) {\n // the current position is an offset\n state.options.x += prevPos.x;\n state.options.y += prevPos.y;\n }\n delete state.options.offset;\n if (!_.isUndefined(state.options.x) && !_.isUndefined(state.options.y)) {\n prevPos = state.options;\n }\n\n if (multi) {\n let timeOffset = state.timeOffset;\n time += timeOffset;\n state.time = androidHelpers.truncateDecimals(time, 3);\n\n // multi gestures require 'touch' rather than 'options'\n if (!_.isUndefined(state.options.x) && !_.isUndefined(state.options.y)) {\n state.touch = {\n x: state.options.x,\n y: state.options.y\n };\n }\n delete state.options;\n }\n delete state.timeOffset;\n }\n return touchStateObjects;\n};\n\n\ncommands.performMultiAction = async function performMultiAction (actions, elementId) {\n // Android needs at least two actions to be able to perform a multi pointer gesture\n if (actions.length === 1) {\n throw new Error('Multi Pointer Gestures need at least two actions. ' +\n 'Use Touch Actions for a single action.');\n }\n\n const states = await asyncmap(actions, async (action) => await this.parseTouch(action, true), false);\n\n return await this.doPerformMultiAction(elementId, states);\n};\n\n/**\n * Reason for isolating doPerformMultiAction from performMultiAction is for reusing performMultiAction\n * across android-drivers (like appium-uiautomator2-driver) and to avoid code duplication.\n * Other android-drivers (like appium-uiautomator2-driver) need to override doPerformMultiAction\n * to facilitate performMultiAction.\n */\ncommands.doPerformMultiAction = async function doPerformMultiAction (elementId, states) {\n let opts;\n if (elementId) {\n opts = {\n elementId,\n actions: states\n };\n return await this.bootstrap.sendAction('element:performMultiPointerGesture', opts);\n } else {\n opts = {\n actions: states\n };\n return await this.bootstrap.sendAction('performMultiPointerGesture', opts);\n }\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":"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"}
|
|
@@ -297,4 +297,4 @@ let desiredCapConstraints = {};
|
|
|
297
297
|
Object.assign(desiredCapConstraints, commonCapConstraints, uiautomatorCapConstraints);
|
|
298
298
|
var _default = desiredCapConstraints;
|
|
299
299
|
exports.default = _default;
|
|
300
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tb25DYXBDb25zdHJhaW50cyIsInBsYXRmb3JtTmFtZSIsImlzU3RyaW5nIiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwicHJlc2VuY2UiLCJhcHAiLCJhcHBBY3Rpdml0eSIsImFwcFBhY2thZ2UiLCJhcHBXYWl0QWN0aXZpdHkiLCJhcHBXYWl0UGFja2FnZSIsImFwcFdhaXREdXJhdGlvbiIsImlzTnVtYmVyIiwiZGV2aWNlUmVhZHlUaW1lb3V0IiwiYW5kcm9pZENvdmVyYWdlIiwiYW5kcm9pZERldmljZVJlYWR5VGltZW91dCIsImFuZHJvaWREZXZpY2VTb2NrZXQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJhZGJQb3J0IiwicmVtb3RlQWRiSG9zdCIsImFkYkV4ZWNUaW1lb3V0IiwiYXZkIiwiYXZkTGF1bmNoVGltZW91dCIsImF2ZFJlYWR5VGltZW91dCIsImF2ZEFyZ3MiLCJhdmRFbnYiLCJpc09iamVjdCIsInVzZUtleXN0b3JlIiwiaXNCb29sZWFuIiwia2V5c3RvcmVQYXRoIiwia2V5c3RvcmVQYXNzd29yZCIsImtleUFsaWFzIiwia2V5UGFzc3dvcmQiLCJ3ZWJ2aWV3RGV2dG9vbHNQb3J0IiwiZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMiLCJlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24iLCJjaHJvbWVEcml2ZXJQb3J0IiwiY2hyb21lZHJpdmVyUG9ydCIsImNocm9tZWRyaXZlclBvcnRzIiwiaXNBcnJheSIsImNocm9tZWRyaXZlckFyZ3MiLCJjaHJvbWVkcml2ZXJFeGVjdXRhYmxlIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZURpciIsImNocm9tZWRyaXZlckNocm9tZU1hcHBpbmdGaWxlIiwiY2hyb21lZHJpdmVyVXNlU3lzdGVtRXhlY3V0YWJsZSIsImNocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrIiwiY2hyb21lTG9nZ2luZ1ByZWZzIiwiYXV0b1dlYnZpZXdUaW1lb3V0IiwiYXV0b1dlYnZpZXdOYW1lIiwiaW50ZW50QWN0aW9uIiwiaW50ZW50Q2F0ZWdvcnkiLCJpbnRlbnRGbGFncyIsIm9wdGlvbmFsSW50ZW50QXJndW1lbnRzIiwiZG9udFN0b3BBcHBPblJlc2V0IiwidW5pY29kZUtleWJvYXJkIiwicmVzZXRLZXlib2FyZCIsIm5vU2lnbiIsInJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMiLCJhdXRvTGF1bmNoIiwibmF0aXZlV2ViU2NyZWVuc2hvdCIsImFuZHJvaWRTY3JlZW5zaG90UGF0aCIsImFuZHJvaWRJbnN0YWxsUGF0aCIsImNsZWFyU3lzdGVtRmlsZXMiLCJleHRyYWN0Q2hyb21lQW5kcm9pZFBhY2thZ2VGcm9tQ29udGV4dE5hbWUiLCJhdXRvR3JhbnRQZXJtaXNzaW9ucyIsInNoYXJlZFByZWZlcmVuY2VzIiwibmV0d29ya1NwZWVkIiwiZ3BzRW5hYmxlZCIsImlzSGVhZGxlc3MiLCJzaG93Q2hyb21lZHJpdmVyTG9nIiwic2tpcFVubG9jayIsImNsZWFyRGV2aWNlTG9nc09uU3RhcnQiLCJ1bmxvY2tUeXBlIiwidW5sb2NrS2V5IiwidW5sb2NrU3RyYXRlZ3kiLCJvdGhlckFwcHMiLCJ1bmluc3RhbGxPdGhlclBhY2thZ2VzIiwiYWxsb3dUZXN0UGFja2FnZXMiLCJwYWdlTG9hZFN0cmF0ZWd5IiwibG9jYWxlU2NyaXB0Iiwic2tpcERldmljZUluaXRpYWxpemF0aW9uIiwicmVtb3RlQXBwc0NhY2hlTGltaXQiLCJidWlsZFRvb2xzVmVyc2lvbiIsInNraXBMb2djYXRDYXB0dXJlIiwiY2hyb21lT3B0aW9ucyIsImVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZyIsInVzZXJQcm9maWxlIiwiYnJvd3Nlck5hbWUiLCJlbmZvcmNlQXBwSW5zdGFsbCIsInN1cHByZXNzS2lsbFNlcnZlciIsImFsbG93T2ZmbGluZURldmljZXMiLCJpZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvciIsInVubG9ja1N1Y2Nlc3NUaW1lb3V0IiwibW9ja0xvY2F0aW9uQXBwIiwibG9nY2F0Rm9ybWF0IiwibG9nY2F0RmlsdGVyU3BlY3MiLCJhbGxvd0RlbGF5QWRiIiwidWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyIsImlnbm9yZVVuaW1wb3J0YW50Vmlld3MiLCJkaXNhYmxlQW5kcm9pZFdhdGNoZXJzIiwiYWNjZXB0U3NsQ2VydHMiLCJhbmRyb2lkTmF0dXJhbE9yaWVudGF0aW9uIiwiZGlzYWJsZVdpbmRvd0FuaW1hdGlvbiIsImJvb3RzdHJhcFBvcnQiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlcyI6WyIuLi8uLi9saWIvZGVzaXJlZC1jYXBzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImxldCBjb21tb25DYXBDb25zdHJhaW50cyA9IHtcbiAgcGxhdGZvcm1OYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWUsXG4gICAgaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlOiBbJ0FuZHJvaWQnXSxcbiAgICBwcmVzZW5jZTogdHJ1ZVxuICB9LFxuICBhcHA6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhcHBBY3Rpdml0eToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFwcFBhY2thZ2U6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhcHBXYWl0QWN0aXZpdHk6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhcHBXYWl0UGFja2FnZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFwcFdhaXREdXJhdGlvbjoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGRldmljZVJlYWR5VGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWRDb3ZlcmFnZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWREZXZpY2VSZWFkeVRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhbmRyb2lkRGV2aWNlU29ja2V0OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYW5kcm9pZEluc3RhbGxUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYWRiUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHJlbW90ZUFkYkhvc3Q6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhZGJFeGVjVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGF2ZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGF2ZExhdW5jaFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhdmRSZWFkeVRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhdmRBcmdzOiB7XG4gICAgLy8gY291bGQgYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXlcbiAgfSxcbiAgYXZkRW52OiB7XG4gICAgaXNPYmplY3Q6IHRydWVcbiAgfSxcbiAgdXNlS2V5c3RvcmU6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAga2V5c3RvcmVQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAga2V5c3RvcmVQYXNzd29yZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleUFsaWFzOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAga2V5UGFzc3dvcmQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB3ZWJ2aWV3RGV2dG9vbHNQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgZW5zdXJlV2Vidmlld3NIYXZlUGFnZXM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIC8vIHRoaXMgb25lIGlzIGRlcHJlY2F0ZWRcbiAgY2hyb21lRHJpdmVyUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIC8vIGR1cGxpY2F0ZSBvZiBhYm92ZSB3aXRoIGJldHRlciBzcGVsbGluZ1xuICBjaHJvbWVkcml2ZXJQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgY2hyb21lZHJpdmVyUG9ydHM6IHtcbiAgICBpc0FycmF5OiB0cnVlXG4gIH0sXG4gIGNocm9tZWRyaXZlckFyZ3M6IHtcbiAgICBpc09iamVjdDogdHJ1ZSxcbiAgfSxcbiAgY2hyb21lZHJpdmVyRXhlY3V0YWJsZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGNocm9tZWRyaXZlckV4ZWN1dGFibGVEaXI6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBjaHJvbWVkcml2ZXJDaHJvbWVNYXBwaW5nRmlsZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGNocm9tZWRyaXZlclVzZVN5c3RlbUV4ZWN1dGFibGU6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgY2hyb21lZHJpdmVyRGlzYWJsZUJ1aWxkQ2hlY2s6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgY2hyb21lTG9nZ2luZ1ByZWZzOiB7XG4gICAgaXNPYmplY3Q6IHRydWVcbiAgfSxcbiAgYXV0b1dlYnZpZXdUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYXV0b1dlYnZpZXdOYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgaW50ZW50QWN0aW9uOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgaW50ZW50Q2F0ZWdvcnk6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBpbnRlbnRGbGFnczoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgZG9udFN0b3BBcHBPblJlc2V0OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVuaWNvZGVLZXlib2FyZDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICByZXNldEtleWJvYXJkOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIG5vU2lnbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICByZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zOiB7XG4gICAgaXNCb29sZWFuOiBmYWxzZVxuICB9LFxuICBhdXRvTGF1bmNoOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIG5hdGl2ZVdlYlNjcmVlbnNob3Q6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYW5kcm9pZFNjcmVlbnNob3RQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYW5kcm9pZEluc3RhbGxQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgY2xlYXJTeXN0ZW1GaWxlczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBleHRyYWN0Q2hyb21lQW5kcm9pZFBhY2thZ2VGcm9tQ29udGV4dE5hbWU6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYXV0b0dyYW50UGVybWlzc2lvbnM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2hhcmVkUHJlZmVyZW5jZXM6IHtcbiAgICBpc09iamVjdDogdHJ1ZVxuICB9LFxuICBuZXR3b3JrU3BlZWQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBncHNFbmFibGVkOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGlzSGVhZGxlc3M6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2hvd0Nocm9tZWRyaXZlckxvZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBza2lwVW5sb2NrOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNsZWFyRGV2aWNlTG9nc09uU3RhcnQ6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdW5sb2NrVHlwZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHVubG9ja0tleToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHVubG9ja1N0cmF0ZWd5OiB7XG4gICAgaXNTdHJpbmc6IHRydWUsXG4gICAgaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlOiBbJ2xvY2tzZXR0aW5ncycsICd1aWF1dG9tYXRvciddLFxuICB9LFxuICBvdGhlckFwcHM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB1bmluc3RhbGxPdGhlclBhY2thZ2VzOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYWxsb3dUZXN0UGFja2FnZXM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgcGFnZUxvYWRTdHJhdGVneToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGxvY2FsZVNjcmlwdDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHNraXBEZXZpY2VJbml0aWFsaXphdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICByZW1vdGVBcHBzQ2FjaGVMaW1pdDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGJ1aWxkVG9vbHNWZXJzaW9uOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2tpcExvZ2NhdENhcHR1cmU6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgY2hyb21lT3B0aW9uczoge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIGVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1c2VyUHJvZmlsZToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGJyb3dzZXJOYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgZW5mb3JjZUFwcEluc3RhbGw6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc3VwcHJlc3NLaWxsU2VydmVyOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGFsbG93T2ZmbGluZURldmljZXM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3I6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdW5sb2NrU3VjY2Vzc1RpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBtb2NrTG9jYXRpb25BcHA6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBsb2djYXRGb3JtYXQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBsb2djYXRGaWx0ZXJTcGVjczoge1xuICAgIGlzQXJyYXk6IHRydWVcbiAgfSxcbiAgYWxsb3dEZWxheUFkYjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9XG59O1xuXG5sZXQgdWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyA9IHtcbiAgaWdub3JlVW5pbXBvcnRhbnRWaWV3czoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBkaXNhYmxlQW5kcm9pZFdhdGNoZXJzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGFjY2VwdFNzbENlcnRzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWROYXR1cmFsT3JpZW50YXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZGlzYWJsZVdpbmRvd0FuaW1hdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBib290c3RyYXBQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbn07XG5cbmxldCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7fTtcblxuT2JqZWN0LmFzc2lnbihkZXNpcmVkQ2FwQ29uc3RyYWludHMsIGNvbW1vbkNhcENvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICB1aWF1dG9tYXRvckNhcENvbnN0cmFpbnRzKTtcblxuZXhwb3J0IGRlZmF1bHQgZGVzaXJlZENhcENvbnN0cmFpbnRzO1xuZXhwb3J0IHsgY29tbW9uQ2FwQ29uc3RyYWludHMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUlBLG9CQUFvQixHQUFHO0VBQ3pCQyxZQUFZLEVBQUU7SUFDWkMsUUFBUSxFQUFFLElBQUk7SUFDZEMsd0JBQXdCLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDckNDLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREMsR0FBRyxFQUFFO0lBQ0hILFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREksV0FBVyxFQUFFO0lBQ1hKLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREssVUFBVSxFQUFFO0lBQ1ZMLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRE0sZUFBZSxFQUFFO0lBQ2ZOLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRE8sY0FBYyxFQUFFO0lBQ2RQLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRFEsZUFBZSxFQUFFO0lBQ2ZDLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREMsa0JBQWtCLEVBQUU7SUFDbEJELFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREUsZUFBZSxFQUFFO0lBQ2ZYLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRFkseUJBQXlCLEVBQUU7SUFDekJILFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDREksbUJBQW1CLEVBQUU7SUFDbkJiLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRGMscUJBQXFCLEVBQUU7SUFDckJMLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRE0sT0FBTyxFQUFFO0lBQ1BOLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRE8sYUFBYSxFQUFFO0lBQ2JoQixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RpQixjQUFjLEVBQUU7SUFDZFIsUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNEUyxHQUFHLEVBQUU7SUFDSGxCLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRG1CLGdCQUFnQixFQUFF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
|
|
300
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tb25DYXBDb25zdHJhaW50cyIsInBsYXRmb3JtTmFtZSIsImlzU3RyaW5nIiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwicHJlc2VuY2UiLCJhcHAiLCJhcHBBY3Rpdml0eSIsImFwcFBhY2thZ2UiLCJhcHBXYWl0QWN0aXZpdHkiLCJhcHBXYWl0UGFja2FnZSIsImFwcFdhaXREdXJhdGlvbiIsImlzTnVtYmVyIiwiZGV2aWNlUmVhZHlUaW1lb3V0IiwiYW5kcm9pZENvdmVyYWdlIiwiYW5kcm9pZERldmljZVJlYWR5VGltZW91dCIsImFuZHJvaWREZXZpY2VTb2NrZXQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJhZGJQb3J0IiwicmVtb3RlQWRiSG9zdCIsImFkYkV4ZWNUaW1lb3V0IiwiYXZkIiwiYXZkTGF1bmNoVGltZW91dCIsImF2ZFJlYWR5VGltZW91dCIsImF2ZEFyZ3MiLCJhdmRFbnYiLCJpc09iamVjdCIsInVzZUtleXN0b3JlIiwiaXNCb29sZWFuIiwia2V5c3RvcmVQYXRoIiwia2V5c3RvcmVQYXNzd29yZCIsImtleUFsaWFzIiwia2V5UGFzc3dvcmQiLCJ3ZWJ2aWV3RGV2dG9vbHNQb3J0IiwiZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMiLCJlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24iLCJjaHJvbWVEcml2ZXJQb3J0IiwiY2hyb21lZHJpdmVyUG9ydCIsImNocm9tZWRyaXZlclBvcnRzIiwiaXNBcnJheSIsImNocm9tZWRyaXZlckFyZ3MiLCJjaHJvbWVkcml2ZXJFeGVjdXRhYmxlIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZURpciIsImNocm9tZWRyaXZlckNocm9tZU1hcHBpbmdGaWxlIiwiY2hyb21lZHJpdmVyVXNlU3lzdGVtRXhlY3V0YWJsZSIsImNocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrIiwiY2hyb21lTG9nZ2luZ1ByZWZzIiwiYXV0b1dlYnZpZXdUaW1lb3V0IiwiYXV0b1dlYnZpZXdOYW1lIiwiaW50ZW50QWN0aW9uIiwiaW50ZW50Q2F0ZWdvcnkiLCJpbnRlbnRGbGFncyIsIm9wdGlvbmFsSW50ZW50QXJndW1lbnRzIiwiZG9udFN0b3BBcHBPblJlc2V0IiwidW5pY29kZUtleWJvYXJkIiwicmVzZXRLZXlib2FyZCIsIm5vU2lnbiIsInJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMiLCJhdXRvTGF1bmNoIiwibmF0aXZlV2ViU2NyZWVuc2hvdCIsImFuZHJvaWRTY3JlZW5zaG90UGF0aCIsImFuZHJvaWRJbnN0YWxsUGF0aCIsImNsZWFyU3lzdGVtRmlsZXMiLCJleHRyYWN0Q2hyb21lQW5kcm9pZFBhY2thZ2VGcm9tQ29udGV4dE5hbWUiLCJhdXRvR3JhbnRQZXJtaXNzaW9ucyIsInNoYXJlZFByZWZlcmVuY2VzIiwibmV0d29ya1NwZWVkIiwiZ3BzRW5hYmxlZCIsImlzSGVhZGxlc3MiLCJzaG93Q2hyb21lZHJpdmVyTG9nIiwic2tpcFVubG9jayIsImNsZWFyRGV2aWNlTG9nc09uU3RhcnQiLCJ1bmxvY2tUeXBlIiwidW5sb2NrS2V5IiwidW5sb2NrU3RyYXRlZ3kiLCJvdGhlckFwcHMiLCJ1bmluc3RhbGxPdGhlclBhY2thZ2VzIiwiYWxsb3dUZXN0UGFja2FnZXMiLCJwYWdlTG9hZFN0cmF0ZWd5IiwibG9jYWxlU2NyaXB0Iiwic2tpcERldmljZUluaXRpYWxpemF0aW9uIiwicmVtb3RlQXBwc0NhY2hlTGltaXQiLCJidWlsZFRvb2xzVmVyc2lvbiIsInNraXBMb2djYXRDYXB0dXJlIiwiY2hyb21lT3B0aW9ucyIsImVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZyIsInVzZXJQcm9maWxlIiwiYnJvd3Nlck5hbWUiLCJlbmZvcmNlQXBwSW5zdGFsbCIsInN1cHByZXNzS2lsbFNlcnZlciIsImFsbG93T2ZmbGluZURldmljZXMiLCJpZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvciIsInVubG9ja1N1Y2Nlc3NUaW1lb3V0IiwibW9ja0xvY2F0aW9uQXBwIiwibG9nY2F0Rm9ybWF0IiwibG9nY2F0RmlsdGVyU3BlY3MiLCJhbGxvd0RlbGF5QWRiIiwiZXhwb3J0cyIsInVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMiLCJpZ25vcmVVbmltcG9ydGFudFZpZXdzIiwiZGlzYWJsZUFuZHJvaWRXYXRjaGVycyIsImFjY2VwdFNzbENlcnRzIiwiYW5kcm9pZE5hdHVyYWxPcmllbnRhdGlvbiIsImRpc2FibGVXaW5kb3dBbmltYXRpb24iLCJib290c3RyYXBQb3J0IiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwiT2JqZWN0IiwiYXNzaWduIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2Rlc2lyZWQtY2Fwcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgY29tbW9uQ2FwQ29uc3RyYWludHMgPSB7XG4gIHBsYXRmb3JtTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZTogWydBbmRyb2lkJ10sXG4gICAgcHJlc2VuY2U6IHRydWVcbiAgfSxcbiAgYXBwOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwQWN0aXZpdHk6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhcHBQYWNrYWdlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwV2FpdEFjdGl2aXR5OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwV2FpdFBhY2thZ2U6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhcHBXYWl0RHVyYXRpb246IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBkZXZpY2VSZWFkeVRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhbmRyb2lkQ292ZXJhZ2U6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhbmRyb2lkRGV2aWNlUmVhZHlUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYW5kcm9pZERldmljZVNvY2tldDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWRJbnN0YWxsVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGFkYlBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICByZW1vdGVBZGJIb3N0OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYWRiRXhlY1RpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhdmQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhdmRMYXVuY2hUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYXZkUmVhZHlUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYXZkQXJnczoge1xuICAgIC8vIGNvdWxkIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5XG4gIH0sXG4gIGF2ZEVudjoge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIHVzZUtleXN0b3JlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGtleXN0b3JlUGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleXN0b3JlUGFzc3dvcmQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBrZXlBbGlhczoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleVBhc3N3b3JkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgd2Vidmlld0RldnRvb2xzUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICAvLyB0aGlzIG9uZSBpcyBkZXByZWNhdGVkXG4gIGNocm9tZURyaXZlclBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICAvLyBkdXBsaWNhdGUgb2YgYWJvdmUgd2l0aCBiZXR0ZXIgc3BlbGxpbmdcbiAgY2hyb21lZHJpdmVyUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGNocm9tZWRyaXZlclBvcnRzOiB7XG4gICAgaXNBcnJheTogdHJ1ZVxuICB9LFxuICBjaHJvbWVkcml2ZXJBcmdzOiB7XG4gICAgaXNPYmplY3Q6IHRydWUsXG4gIH0sXG4gIGNocm9tZWRyaXZlckV4ZWN1dGFibGU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBjaHJvbWVkcml2ZXJFeGVjdXRhYmxlRGlyOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgY2hyb21lZHJpdmVyQ2hyb21lTWFwcGluZ0ZpbGU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBjaHJvbWVkcml2ZXJVc2VTeXN0ZW1FeGVjdXRhYmxlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNocm9tZUxvZ2dpbmdQcmVmczoge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIGF1dG9XZWJ2aWV3VGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGF1dG9XZWJ2aWV3TmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGludGVudEFjdGlvbjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGludGVudENhdGVnb3J5OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgaW50ZW50RmxhZ3M6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBvcHRpb25hbEludGVudEFyZ3VtZW50czoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGRvbnRTdG9wQXBwT25SZXNldDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1bmljb2RlS2V5Ym9hcmQ6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgcmVzZXRLZXlib2FyZDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBub1NpZ246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgcmVjcmVhdGVDaHJvbWVEcml2ZXJTZXNzaW9uczoge1xuICAgIGlzQm9vbGVhbjogZmFsc2VcbiAgfSxcbiAgYXV0b0xhdW5jaDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBuYXRpdmVXZWJTY3JlZW5zaG90OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWRTY3JlZW5zaG90UGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWRJbnN0YWxsUGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGNsZWFyU3lzdGVtRmlsZXM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGF1dG9HcmFudFBlcm1pc3Npb25zOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNoYXJlZFByZWZlcmVuY2VzOiB7XG4gICAgaXNPYmplY3Q6IHRydWVcbiAgfSxcbiAgbmV0d29ya1NwZWVkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgZ3BzRW5hYmxlZDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBpc0hlYWRsZXNzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNob3dDaHJvbWVkcml2ZXJMb2c6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2tpcFVubG9jazoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBjbGVhckRldmljZUxvZ3NPblN0YXJ0OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVubG9ja1R5cGU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB1bmxvY2tLZXk6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB1bmxvY2tTdHJhdGVneToge1xuICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZTogWydsb2Nrc2V0dGluZ3MnLCAndWlhdXRvbWF0b3InXSxcbiAgfSxcbiAgb3RoZXJBcHBzOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgdW5pbnN0YWxsT3RoZXJQYWNrYWdlczoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFsbG93VGVzdFBhY2thZ2VzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHBhZ2VMb2FkU3RyYXRlZ3k6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBsb2NhbGVTY3JpcHQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBza2lwRGV2aWNlSW5pdGlhbGl6YXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgcmVtb3RlQXBwc0NhY2hlTGltaXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBidWlsZFRvb2xzVmVyc2lvbjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHNraXBMb2djYXRDYXB0dXJlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNocm9tZU9wdGlvbnM6IHtcbiAgICBpc09iamVjdDogdHJ1ZVxuICB9LFxuICBlbmFibGVQZXJmb3JtYW5jZUxvZ2dpbmc6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdXNlclByb2ZpbGU6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBicm93c2VyTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGVuZm9yY2VBcHBJbnN0YWxsOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHN1cHByZXNzS2lsbFNlcnZlcjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhbGxvd09mZmxpbmVEZXZpY2VzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVubG9ja1N1Y2Nlc3NUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgbW9ja0xvY2F0aW9uQXBwOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbG9nY2F0Rm9ybWF0OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbG9nY2F0RmlsdGVyU3BlY3M6IHtcbiAgICBpc0FycmF5OiB0cnVlXG4gIH0sXG4gIGFsbG93RGVsYXlBZGI6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfVxufTtcblxubGV0IHVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMgPSB7XG4gIGlnbm9yZVVuaW1wb3J0YW50Vmlld3M6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZGlzYWJsZUFuZHJvaWRXYXRjaGVyczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhY2NlcHRTc2xDZXJ0czoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhbmRyb2lkTmF0dXJhbE9yaWVudGF0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGRpc2FibGVXaW5kb3dBbmltYXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYm9vdHN0cmFwUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG59O1xuXG5sZXQgZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge307XG5cbk9iamVjdC5hc3NpZ24oZGVzaXJlZENhcENvbnN0cmFpbnRzLCBjb21tb25DYXBDb25zdHJhaW50cyxcbiAgICAgICAgICAgICAgdWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyk7XG5cbmV4cG9ydCBkZWZhdWx0IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbmV4cG9ydCB7IGNvbW1vbkNhcENvbnN0cmFpbnRzIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFJQSxvQkFBb0IsR0FBRztFQUN6QkMsWUFBWSxFQUFFO0lBQ1pDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLHdCQUF3QixFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ3JDQyxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RDLEdBQUcsRUFBRTtJQUNISCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RJLFdBQVcsRUFBRTtJQUNYSixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RLLFVBQVUsRUFBRTtJQUNWTCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RNLGVBQWUsRUFBRTtJQUNmTixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RPLGNBQWMsRUFBRTtJQUNkUCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RRLGVBQWUsRUFBRTtJQUNmQyxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RDLGtCQUFrQixFQUFFO0lBQ2xCRCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RFLGVBQWUsRUFBRTtJQUNmWCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RZLHlCQUF5QixFQUFFO0lBQ3pCSCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RJLG1CQUFtQixFQUFFO0lBQ25CYixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RjLHFCQUFxQixFQUFFO0lBQ3JCTCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RNLE9BQU8sRUFBRTtJQUNQTixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RPLGFBQWEsRUFBRTtJQUNiaEIsUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNEaUIsY0FBYyxFQUFFO0lBQ2RSLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFDRFMsR0FBRyxFQUFFO0lBQ0hsQixRQUFRLEVB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"desired-caps.js","names":["commonCapConstraints","platformName","isString","inclusionCaseInsensitive","presence","app","appActivity","appPackage","appWaitActivity","appWaitPackage","appWaitDuration","isNumber","deviceReadyTimeout","androidCoverage","androidDeviceReadyTimeout","androidDeviceSocket","androidInstallTimeout","adbPort","remoteAdbHost","adbExecTimeout","avd","avdLaunchTimeout","avdReadyTimeout","avdArgs","avdEnv","isObject","useKeystore","isBoolean","keystorePath","keystorePassword","keyAlias","keyPassword","webviewDevtoolsPort","ensureWebviewsHavePages","enableWebviewDetailsCollection","chromeDriverPort","chromedriverPort","chromedriverPorts","isArray","chromedriverArgs","chromedriverExecutable","chromedriverExecutableDir","chromedriverChromeMappingFile","chromedriverUseSystemExecutable","chromedriverDisableBuildCheck","chromeLoggingPrefs","autoWebviewTimeout","autoWebviewName","intentAction","intentCategory","intentFlags","optionalIntentArguments","dontStopAppOnReset","unicodeKeyboard","resetKeyboard","noSign","recreateChromeDriverSessions","autoLaunch","nativeWebScreenshot","androidScreenshotPath","androidInstallPath","clearSystemFiles","extractChromeAndroidPackageFromContextName","autoGrantPermissions","sharedPreferences","networkSpeed","gpsEnabled","isHeadless","showChromedriverLog","skipUnlock","clearDeviceLogsOnStart","unlockType","unlockKey","unlockStrategy","otherApps","uninstallOtherPackages","allowTestPackages","pageLoadStrategy","localeScript","skipDeviceInitialization","remoteAppsCacheLimit","buildToolsVersion","skipLogcatCapture","chromeOptions","enablePerformanceLogging","userProfile","browserName","enforceAppInstall","suppressKillServer","allowOfflineDevices","ignoreHiddenApiPolicyError","unlockSuccessTimeout","mockLocationApp","logcatFormat","logcatFilterSpecs","allowDelayAdb","uiautomatorCapConstraints","ignoreUnimportantViews","disableAndroidWatchers","acceptSslCerts","androidNaturalOrientation","disableWindowAnimation","bootstrapPort","desiredCapConstraints","Object","assign"],"sources":["../../lib/desired-caps.js"],"sourcesContent":["let commonCapConstraints = {\n platformName: {\n isString: true,\n inclusionCaseInsensitive: ['Android'],\n presence: true\n },\n app: {\n isString: true\n },\n appActivity: {\n isString: true\n },\n appPackage: {\n isString: true\n },\n appWaitActivity: {\n isString: true\n },\n appWaitPackage: {\n isString: true\n },\n appWaitDuration: {\n isNumber: true\n },\n deviceReadyTimeout: {\n isNumber: true\n },\n androidCoverage: {\n isString: true\n },\n androidDeviceReadyTimeout: {\n isNumber: true\n },\n androidDeviceSocket: {\n isString: true\n },\n androidInstallTimeout: {\n isNumber: true\n },\n adbPort: {\n isNumber: true\n },\n remoteAdbHost: {\n isString: true\n },\n adbExecTimeout: {\n isNumber: true\n },\n avd: {\n isString: true\n },\n avdLaunchTimeout: {\n isNumber: true\n },\n avdReadyTimeout: {\n isNumber: true\n },\n avdArgs: {\n // could be a string or an array\n },\n avdEnv: {\n isObject: true\n },\n useKeystore: {\n isBoolean: true\n },\n keystorePath: {\n isString: true\n },\n keystorePassword: {\n isString: true\n },\n keyAlias: {\n isString: true\n },\n keyPassword: {\n isString: true\n },\n webviewDevtoolsPort: {\n isNumber: true\n },\n ensureWebviewsHavePages: {\n isBoolean: true\n },\n enableWebviewDetailsCollection: {\n isBoolean: true\n },\n // this one is deprecated\n chromeDriverPort: {\n isNumber: true\n },\n // duplicate of above with better spelling\n chromedriverPort: {\n isNumber: true\n },\n chromedriverPorts: {\n isArray: true\n },\n chromedriverArgs: {\n isObject: true,\n },\n chromedriverExecutable: {\n isString: true\n },\n chromedriverExecutableDir: {\n isString: true\n },\n chromedriverChromeMappingFile: {\n isString: true\n },\n chromedriverUseSystemExecutable: {\n isBoolean: true\n },\n chromedriverDisableBuildCheck: {\n isBoolean: true\n },\n chromeLoggingPrefs: {\n isObject: true\n },\n autoWebviewTimeout: {\n isNumber: true\n },\n autoWebviewName: {\n isString: true\n },\n intentAction: {\n isString: true\n },\n intentCategory: {\n isString: true\n },\n intentFlags: {\n isString: true\n },\n optionalIntentArguments: {\n isString: true\n },\n dontStopAppOnReset: {\n isBoolean: true\n },\n unicodeKeyboard: {\n isBoolean: true\n },\n resetKeyboard: {\n isBoolean: true\n },\n noSign: {\n isBoolean: true\n },\n recreateChromeDriverSessions: {\n isBoolean: false\n },\n autoLaunch: {\n isBoolean: true\n },\n nativeWebScreenshot: {\n isBoolean: true\n },\n androidScreenshotPath: {\n isString: true\n },\n androidInstallPath: {\n isString: true\n },\n clearSystemFiles: {\n isBoolean: true\n },\n extractChromeAndroidPackageFromContextName: {\n isBoolean: true\n },\n autoGrantPermissions: {\n isBoolean: true\n },\n sharedPreferences: {\n isObject: true\n },\n networkSpeed: {\n isString: true\n },\n gpsEnabled: {\n isBoolean: true\n },\n isHeadless: {\n isBoolean: true\n },\n showChromedriverLog: {\n isBoolean: true\n },\n skipUnlock: {\n isBoolean: true\n },\n clearDeviceLogsOnStart: {\n isBoolean: true\n },\n unlockType: {\n isString: true\n },\n unlockKey: {\n isString: true\n },\n unlockStrategy: {\n isString: true,\n inclusionCaseInsensitive: ['locksettings', 'uiautomator'],\n },\n otherApps: {\n isString: true\n },\n uninstallOtherPackages: {\n isString: true\n },\n allowTestPackages: {\n isBoolean: true\n },\n pageLoadStrategy: {\n isString: true\n },\n localeScript: {\n isString: true\n },\n skipDeviceInitialization: {\n isBoolean: true\n },\n remoteAppsCacheLimit: {\n isNumber: true\n },\n buildToolsVersion: {\n isString: true\n },\n skipLogcatCapture: {\n isBoolean: true\n },\n chromeOptions: {\n isObject: true\n },\n enablePerformanceLogging: {\n isBoolean: true\n },\n userProfile: {\n isNumber: true\n },\n browserName: {\n isString: true\n },\n enforceAppInstall: {\n isBoolean: true\n },\n suppressKillServer: {\n isBoolean: true\n },\n allowOfflineDevices: {\n isBoolean: true\n },\n ignoreHiddenApiPolicyError: {\n isBoolean: true\n },\n unlockSuccessTimeout: {\n isNumber: true\n },\n mockLocationApp: {\n isString: true\n },\n logcatFormat: {\n isString: true\n },\n logcatFilterSpecs: {\n isArray: true\n },\n allowDelayAdb: {\n isBoolean: true\n }\n};\n\nlet uiautomatorCapConstraints = {\n ignoreUnimportantViews: {\n isBoolean: true\n },\n disableAndroidWatchers: {\n isBoolean: true\n },\n acceptSslCerts: {\n isBoolean: true\n },\n androidNaturalOrientation: {\n isBoolean: true\n },\n disableWindowAnimation: {\n isBoolean: true\n },\n bootstrapPort: {\n isNumber: true\n },\n};\n\nlet desiredCapConstraints = {};\n\nObject.assign(desiredCapConstraints, commonCapConstraints,\n uiautomatorCapConstraints);\n\nexport default desiredCapConstraints;\nexport { commonCapConstraints };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"desired-caps.js","names":["commonCapConstraints","platformName","isString","inclusionCaseInsensitive","presence","app","appActivity","appPackage","appWaitActivity","appWaitPackage","appWaitDuration","isNumber","deviceReadyTimeout","androidCoverage","androidDeviceReadyTimeout","androidDeviceSocket","androidInstallTimeout","adbPort","remoteAdbHost","adbExecTimeout","avd","avdLaunchTimeout","avdReadyTimeout","avdArgs","avdEnv","isObject","useKeystore","isBoolean","keystorePath","keystorePassword","keyAlias","keyPassword","webviewDevtoolsPort","ensureWebviewsHavePages","enableWebviewDetailsCollection","chromeDriverPort","chromedriverPort","chromedriverPorts","isArray","chromedriverArgs","chromedriverExecutable","chromedriverExecutableDir","chromedriverChromeMappingFile","chromedriverUseSystemExecutable","chromedriverDisableBuildCheck","chromeLoggingPrefs","autoWebviewTimeout","autoWebviewName","intentAction","intentCategory","intentFlags","optionalIntentArguments","dontStopAppOnReset","unicodeKeyboard","resetKeyboard","noSign","recreateChromeDriverSessions","autoLaunch","nativeWebScreenshot","androidScreenshotPath","androidInstallPath","clearSystemFiles","extractChromeAndroidPackageFromContextName","autoGrantPermissions","sharedPreferences","networkSpeed","gpsEnabled","isHeadless","showChromedriverLog","skipUnlock","clearDeviceLogsOnStart","unlockType","unlockKey","unlockStrategy","otherApps","uninstallOtherPackages","allowTestPackages","pageLoadStrategy","localeScript","skipDeviceInitialization","remoteAppsCacheLimit","buildToolsVersion","skipLogcatCapture","chromeOptions","enablePerformanceLogging","userProfile","browserName","enforceAppInstall","suppressKillServer","allowOfflineDevices","ignoreHiddenApiPolicyError","unlockSuccessTimeout","mockLocationApp","logcatFormat","logcatFilterSpecs","allowDelayAdb","exports","uiautomatorCapConstraints","ignoreUnimportantViews","disableAndroidWatchers","acceptSslCerts","androidNaturalOrientation","disableWindowAnimation","bootstrapPort","desiredCapConstraints","Object","assign","_default","default"],"sources":["../../lib/desired-caps.js"],"sourcesContent":["let commonCapConstraints = {\n platformName: {\n isString: true,\n inclusionCaseInsensitive: ['Android'],\n presence: true\n },\n app: {\n isString: true\n },\n appActivity: {\n isString: true\n },\n appPackage: {\n isString: true\n },\n appWaitActivity: {\n isString: true\n },\n appWaitPackage: {\n isString: true\n },\n appWaitDuration: {\n isNumber: true\n },\n deviceReadyTimeout: {\n isNumber: true\n },\n androidCoverage: {\n isString: true\n },\n androidDeviceReadyTimeout: {\n isNumber: true\n },\n androidDeviceSocket: {\n isString: true\n },\n androidInstallTimeout: {\n isNumber: true\n },\n adbPort: {\n isNumber: true\n },\n remoteAdbHost: {\n isString: true\n },\n adbExecTimeout: {\n isNumber: true\n },\n avd: {\n isString: true\n },\n avdLaunchTimeout: {\n isNumber: true\n },\n avdReadyTimeout: {\n isNumber: true\n },\n avdArgs: {\n // could be a string or an array\n },\n avdEnv: {\n isObject: true\n },\n useKeystore: {\n isBoolean: true\n },\n keystorePath: {\n isString: true\n },\n keystorePassword: {\n isString: true\n },\n keyAlias: {\n isString: true\n },\n keyPassword: {\n isString: true\n },\n webviewDevtoolsPort: {\n isNumber: true\n },\n ensureWebviewsHavePages: {\n isBoolean: true\n },\n enableWebviewDetailsCollection: {\n isBoolean: true\n },\n // this one is deprecated\n chromeDriverPort: {\n isNumber: true\n },\n // duplicate of above with better spelling\n chromedriverPort: {\n isNumber: true\n },\n chromedriverPorts: {\n isArray: true\n },\n chromedriverArgs: {\n isObject: true,\n },\n chromedriverExecutable: {\n isString: true\n },\n chromedriverExecutableDir: {\n isString: true\n },\n chromedriverChromeMappingFile: {\n isString: true\n },\n chromedriverUseSystemExecutable: {\n isBoolean: true\n },\n chromedriverDisableBuildCheck: {\n isBoolean: true\n },\n chromeLoggingPrefs: {\n isObject: true\n },\n autoWebviewTimeout: {\n isNumber: true\n },\n autoWebviewName: {\n isString: true\n },\n intentAction: {\n isString: true\n },\n intentCategory: {\n isString: true\n },\n intentFlags: {\n isString: true\n },\n optionalIntentArguments: {\n isString: true\n },\n dontStopAppOnReset: {\n isBoolean: true\n },\n unicodeKeyboard: {\n isBoolean: true\n },\n resetKeyboard: {\n isBoolean: true\n },\n noSign: {\n isBoolean: true\n },\n recreateChromeDriverSessions: {\n isBoolean: false\n },\n autoLaunch: {\n isBoolean: true\n },\n nativeWebScreenshot: {\n isBoolean: true\n },\n androidScreenshotPath: {\n isString: true\n },\n androidInstallPath: {\n isString: true\n },\n clearSystemFiles: {\n isBoolean: true\n },\n extractChromeAndroidPackageFromContextName: {\n isBoolean: true\n },\n autoGrantPermissions: {\n isBoolean: true\n },\n sharedPreferences: {\n isObject: true\n },\n networkSpeed: {\n isString: true\n },\n gpsEnabled: {\n isBoolean: true\n },\n isHeadless: {\n isBoolean: true\n },\n showChromedriverLog: {\n isBoolean: true\n },\n skipUnlock: {\n isBoolean: true\n },\n clearDeviceLogsOnStart: {\n isBoolean: true\n },\n unlockType: {\n isString: true\n },\n unlockKey: {\n isString: true\n },\n unlockStrategy: {\n isString: true,\n inclusionCaseInsensitive: ['locksettings', 'uiautomator'],\n },\n otherApps: {\n isString: true\n },\n uninstallOtherPackages: {\n isString: true\n },\n allowTestPackages: {\n isBoolean: true\n },\n pageLoadStrategy: {\n isString: true\n },\n localeScript: {\n isString: true\n },\n skipDeviceInitialization: {\n isBoolean: true\n },\n remoteAppsCacheLimit: {\n isNumber: true\n },\n buildToolsVersion: {\n isString: true\n },\n skipLogcatCapture: {\n isBoolean: true\n },\n chromeOptions: {\n isObject: true\n },\n enablePerformanceLogging: {\n isBoolean: true\n },\n userProfile: {\n isNumber: true\n },\n browserName: {\n isString: true\n },\n enforceAppInstall: {\n isBoolean: true\n },\n suppressKillServer: {\n isBoolean: true\n },\n allowOfflineDevices: {\n isBoolean: true\n },\n ignoreHiddenApiPolicyError: {\n isBoolean: true\n },\n unlockSuccessTimeout: {\n isNumber: true\n },\n mockLocationApp: {\n isString: true\n },\n logcatFormat: {\n isString: true\n },\n logcatFilterSpecs: {\n isArray: true\n },\n allowDelayAdb: {\n isBoolean: true\n }\n};\n\nlet uiautomatorCapConstraints = {\n ignoreUnimportantViews: {\n isBoolean: true\n },\n disableAndroidWatchers: {\n isBoolean: true\n },\n acceptSslCerts: {\n isBoolean: true\n },\n androidNaturalOrientation: {\n isBoolean: true\n },\n disableWindowAnimation: {\n isBoolean: true\n },\n bootstrapPort: {\n isNumber: true\n },\n};\n\nlet desiredCapConstraints = {};\n\nObject.assign(desiredCapConstraints, commonCapConstraints,\n uiautomatorCapConstraints);\n\nexport default desiredCapConstraints;\nexport { commonCapConstraints };\n"],"mappings":"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"}
|