appium-xcuitest-driver 4.18.4 → 4.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## [4.19.1](https://github.com/appium/appium-xcuitest-driver/compare/v4.19.0...v4.19.1) (2023-03-12)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Make sure the app is not reinstalled if noReset is requested ([4e8ccba](https://github.com/appium/appium-xcuitest-driver/commit/4e8ccba99d5e7b491ecdca0d5e17188e76165223))
7
+ * Tune app install condition ([d64805b](https://github.com/appium/appium-xcuitest-driver/commit/d64805b80fb1f1ab4a13fa1ebcdbb8915548d883))
8
+
9
+ ## [4.19.0](https://github.com/appium/appium-xcuitest-driver/compare/v4.18.4...v4.19.0) (2023-03-03)
10
+
11
+
12
+ ### Features
13
+
14
+ * Allow to skip app install if a newer/same app version is already installed ([#1514](https://github.com/appium/appium-xcuitest-driver/issues/1514)) ([a79cc4e](https://github.com/appium/appium-xcuitest-driver/commit/a79cc4e9f6e1c4e83cc2224a70381427ecc48329))
15
+
16
+
17
+ ### Code Refactoring
18
+
19
+ * cleanup process.env.CLOUD and process.env.REAL_DEVICE ([#1513](https://github.com/appium/appium-xcuitest-driver/issues/1513)) ([579b1ee](https://github.com/appium/appium-xcuitest-driver/commit/579b1ee62288876d569cb6ae2c222a2658eb4c59))
20
+
1
21
  ## [4.18.4](https://github.com/appium/appium-xcuitest-driver/compare/v4.18.3...v4.18.4) (2023-02-28)
2
22
 
3
23
 
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.SAFARI_BUNDLE_ID = exports.IPA_EXT = exports.APP_EXT = void 0;
8
8
  exports.extractBundleId = extractBundleId;
9
+ exports.extractBundleVersion = extractBundleVersion;
9
10
  exports.fetchSupportedAppPlatforms = fetchSupportedAppPlatforms;
10
11
  exports.findApps = findApps;
11
12
  exports.isAppBundle = isAppBundle;
@@ -25,22 +26,43 @@ const APP_EXT = '.app';
25
26
  exports.APP_EXT = APP_EXT;
26
27
  const IPA_EXT = '.ipa';
27
28
  exports.IPA_EXT = IPA_EXT;
29
+ const PLIST_CACHE = new WeakMap();
28
30
  async function extractPlistEntry(app, entryName) {
29
31
  const plistPath = _path.default.resolve(app, 'Info.plist');
30
- try {
31
- return (await _support.plist.parsePlistFile(plistPath))[entryName];
32
- } catch (err) {
33
- throw new Error(`Could not extract Info.plist from '${_path.default.basename(app)}': ${err.message}`);
32
+ const parseFile = async () => {
33
+ try {
34
+ return await _support.plist.parsePlistFile(plistPath);
35
+ } catch (err) {
36
+ throw new Error(`Could not extract Info.plist from '${_path.default.basename(app)}': ${err.message}`);
37
+ }
38
+ };
39
+ let plistObj;
40
+ if (_lodash.default.isNil(this)) {
41
+ plistObj = await parseFile();
42
+ } else {
43
+ var _PLIST_CACHE$get;
44
+ plistObj = (_PLIST_CACHE$get = PLIST_CACHE.get(this)) === null || _PLIST_CACHE$get === void 0 ? void 0 : _PLIST_CACHE$get[app];
45
+ if (!plistObj) {
46
+ plistObj = await parseFile();
47
+ PLIST_CACHE.set(this, {
48
+ ...(PLIST_CACHE.get(this) || {}),
49
+ [app]: plistObj
50
+ });
51
+ }
34
52
  }
53
+ return plistObj[entryName];
35
54
  }
36
55
  async function extractBundleId(app) {
37
- const bundleId = await extractPlistEntry(app, 'CFBundleIdentifier');
56
+ const bundleId = await extractPlistEntry.bind(this)(app, 'CFBundleIdentifier');
38
57
  _logger.default.debug(`Getting bundle ID from app '${app}': '${bundleId}'`);
39
58
  return bundleId;
40
59
  }
60
+ async function extractBundleVersion(app) {
61
+ return await extractPlistEntry.bind(this)(app, 'CFBundleVersion');
62
+ }
41
63
  async function fetchSupportedAppPlatforms(app) {
42
64
  try {
43
- const result = await extractPlistEntry(app, 'CFBundleSupportedPlatforms');
65
+ const result = await extractPlistEntry.bind(this)(app, 'CFBundleSupportedPlatforms');
44
66
  if (!_lodash.default.isArray(result)) {
45
67
  _logger.default.warn(`${_path.default.basename(app)}': CFBundleSupportedPlatforms is not a valid list`);
46
68
  return [];
@@ -53,7 +75,7 @@ async function fetchSupportedAppPlatforms(app) {
53
75
  }
54
76
  async function verifyApplicationPlatform(app, expectedPlatform) {
55
77
  _logger.default.debug('Verifying application platform');
56
- const supportedPlatforms = await fetchSupportedAppPlatforms(app);
78
+ const supportedPlatforms = await fetchSupportedAppPlatforms.bind(this)(app);
57
79
  _logger.default.debug(`CFBundleSupportedPlatforms: ${JSON.stringify(supportedPlatforms)}`);
58
80
  const {
59
81
  isSimulator,
@@ -169,4 +191,4 @@ async function isolateAppBundle(appRoot) {
169
191
  });
170
192
  return dstRoot;
171
193
  }
172
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcGF0aCIsIl9zdXBwb3J0IiwiX2xvZ2dlciIsIlNUUklOR1NESUNUX1JFU09VUkNFIiwiU1RSSU5HU19SRVNPVVJDRSIsIlNBRkFSSV9CVU5ETEVfSUQiLCJleHBvcnRzIiwiQVBQX0VYVCIsIklQQV9FWFQiLCJleHRyYWN0UGxpc3RFbnRyeSIsImFwcCIsImVudHJ5TmFtZSIsInBsaXN0UGF0aCIsInBhdGgiLCJyZXNvbHZlIiwicGxpc3QiLCJwYXJzZVBsaXN0RmlsZSIsImVyciIsIkVycm9yIiwiYmFzZW5hbWUiLCJtZXNzYWdlIiwiZXh0cmFjdEJ1bmRsZUlkIiwiYnVuZGxlSWQiLCJsb2ciLCJkZWJ1ZyIsImZldGNoU3VwcG9ydGVkQXBwUGxhdGZvcm1zIiwicmVzdWx0IiwiXyIsImlzQXJyYXkiLCJ3YXJuIiwidmVyaWZ5QXBwbGljYXRpb25QbGF0Zm9ybSIsImV4cGVjdGVkUGxhdGZvcm0iLCJzdXBwb3J0ZWRQbGF0Zm9ybXMiLCJKU09OIiwic3RyaW5naWZ5IiwiaXNTaW11bGF0b3IiLCJpc1R2T1MiLCJwcmVmaXgiLCJzdWZmaXgiLCJkc3RQbGF0Zm9ybSIsImluY2x1ZGVzIiwicmVhZFJlc291cmNlIiwicmVzb3VyY2VQYXRoIiwiZGF0YSIsImtleSIsInZhbHVlIiwidG9QYWlycyIsImlzU3RyaW5nIiwicGFyc2VMb2NhbGl6YWJsZVN0cmluZ3MiLCJvcHRzIiwibGFuZ3VhZ2UiLCJsb2NhbGl6YWJsZVN0cmluZ3NEaXIiLCJzdHJpbmdGaWxlIiwic3RyaWN0TW9kZSIsImluZm8iLCJscHJvalJvb3QiLCJzdWJmb2xkZXIiLCJmcyIsImV4aXN0cyIsInJlc291cmNlUGF0aHMiLCJkc3RQYXRoIiwicHVzaCIsImlzRW1wdHkiLCJyZXNvdXJjZUZpbGVzIiwicmVhZGRpciIsImZpbHRlciIsIm5hbWUiLCJzb21lIiwieCIsImVuZHNXaXRoIiwibWFwIiwibGVuZ3RoIiwicmVzdWx0U3RyaW5ncyIsInRvQWJzb2x1dGVQYXRoIiwicCIsImlzQWJzb2x1dGUiLCJwcm9jZXNzIiwiY3dkIiwidXRpbCIsImlzU3ViUGF0aCIsImtleXMiLCJtZXJnZSIsImUiLCJpc0FwcEJ1bmRsZSIsImFwcFBhdGgiLCJ0b0xvd2VyIiwic3RhdCIsImlzRGlyZWN0b3J5Iiwiam9pbiIsImZpbmRBcHBzIiwiYXJjaGl2ZVBhdGgiLCJhcHBFeHRlbnNpb25zIiwidXNlU3lzdGVtVW56aXBFbnYiLCJlbnYiLCJBUFBJVU1fUFJFRkVSX1NZU1RFTV9VTlpJUCIsInVzZVN5c3RlbVVuemlwIiwidG1wUm9vdCIsInRlbXBEaXIiLCJvcGVuRGlyIiwiemlwIiwiZXh0cmFjdEFsbFRvIiwiZ2xvYlBhdHRlcm4iLCJleHQiLCJyZXBsYWNlIiwic29ydGVkQnVuZGxlSXRlbXMiLCJnbG9iIiwic3RyaWN0Iiwic29ydCIsImEiLCJiIiwic3BsaXQiLCJzZXAiLCJpc29sYXRlQXBwQnVuZGxlIiwiYXBwUm9vdCIsImRzdFJvb3QiLCJtdiIsIm1rZGlycCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9hcHAtdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcGxpc3QsIGZzLCB1dGlsLCB0ZW1wRGlyLCB6aXAgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyLmpzJztcblxuY29uc3QgU1RSSU5HU0RJQ1RfUkVTT1VSQ0UgPSAnLnN0cmluZ3NkaWN0JztcbmNvbnN0IFNUUklOR1NfUkVTT1VSQ0UgPSAnLnN0cmluZ3MnO1xuY29uc3QgU0FGQVJJX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUubW9iaWxlc2FmYXJpJztcbmNvbnN0IEFQUF9FWFQgPSAnLmFwcCc7XG5jb25zdCBJUEFfRVhUID0gJy5pcGEnO1xuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0UGxpc3RFbnRyeSAoYXBwLCBlbnRyeU5hbWUpIHtcbiAgY29uc3QgcGxpc3RQYXRoID0gcGF0aC5yZXNvbHZlKGFwcCwgJ0luZm8ucGxpc3QnKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGF3YWl0IHBsaXN0LnBhcnNlUGxpc3RGaWxlKHBsaXN0UGF0aCkpW2VudHJ5TmFtZV07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGV4dHJhY3QgSW5mby5wbGlzdCBmcm9tICcke3BhdGguYmFzZW5hbWUoYXBwKX0nOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RCdW5kbGVJZCAoYXBwKSB7XG4gIGNvbnN0IGJ1bmRsZUlkID0gYXdhaXQgZXh0cmFjdFBsaXN0RW50cnkoYXBwLCAnQ0ZCdW5kbGVJZGVudGlmaWVyJyk7XG4gIGxvZy5kZWJ1ZyhgR2V0dGluZyBidW5kbGUgSUQgZnJvbSBhcHAgJyR7YXBwfSc6ICcke2J1bmRsZUlkfSdgKTtcbiAgcmV0dXJuIGJ1bmRsZUlkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFN1cHBvcnRlZEFwcFBsYXRmb3JtcyAoYXBwKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXh0cmFjdFBsaXN0RW50cnkoYXBwLCAnQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXMnKTtcbiAgICBpZiAoIV8uaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICBsb2cud2FybihgJHtwYXRoLmJhc2VuYW1lKGFwcCl9JzogQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXMgaXMgbm90IGEgdmFsaWQgbGlzdGApO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBDYW5ub3QgZXh0cmFjdCB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgcGxhdGZvcm1zIGZyb20gJyR7cGF0aC5iYXNlbmFtZShhcHApfSc6ICR7ZXJyLm1lc3NhZ2V9YFxuICAgICk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUGxhdGZvcm1PcHRzXG4gKlxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1NpbXVsYXRvciAtIFdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIGlzIGEgU2ltdWxhdG9yXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzVHZPUyAtIFdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIGlzIGEgU2ltdWxhdG9yXG4gKi9cblxuLyoqXG4gKiBWZXJpZnkgd2hldGhlciB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gaXMgY29tcGF0aWJsZSB0byB0aGVcbiAqIHBsYXRmb3JtIHdoZXJlIGl0IGlzIGdvaW5nIHRvIGJlIGluc3RhbGxlZCBhbmQgdGVzdGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHAgLSBUaGUgYWN0dWFsIHBhdGggdG8gdGhlIGFwcGxpY2F0aW9uIGJ1bmRsZVxuICogQHBhcmFtIHtQbGF0Zm9ybU9wdHN9IGV4cGVjdGVkUGxhdGZvcm1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBidW5kbGUgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBkZXZpY2UgYXJjaGl0ZWN0dXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtIChhcHAsIGV4cGVjdGVkUGxhdGZvcm0pIHtcbiAgbG9nLmRlYnVnKCdWZXJpZnlpbmcgYXBwbGljYXRpb24gcGxhdGZvcm0nKTtcblxuICBjb25zdCBzdXBwb3J0ZWRQbGF0Zm9ybXMgPSBhd2FpdCBmZXRjaFN1cHBvcnRlZEFwcFBsYXRmb3JtcyhhcHApO1xuICBsb2cuZGVidWcoYENGQnVuZGxlU3VwcG9ydGVkUGxhdGZvcm1zOiAke0pTT04uc3RyaW5naWZ5KHN1cHBvcnRlZFBsYXRmb3Jtcyl9YCk7XG5cbiAgY29uc3Qge1xuICAgIGlzU2ltdWxhdG9yLFxuICAgIGlzVHZPUyxcbiAgfSA9IGV4cGVjdGVkUGxhdGZvcm07XG4gIGNvbnN0IHByZWZpeCA9IGlzVHZPUyA/ICdBcHBsZVRWJyA6ICdpUGhvbmUnO1xuICBjb25zdCBzdWZmaXggPSBpc1NpbXVsYXRvciA/ICdTaW11bGF0b3InIDogJ09TJztcbiAgY29uc3QgZHN0UGxhdGZvcm0gPSBgJHtwcmVmaXh9JHtzdWZmaXh9YDtcbiAgaWYgKCFzdXBwb3J0ZWRQbGF0Zm9ybXMuaW5jbHVkZXMoZHN0UGxhdGZvcm0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2lzU2ltdWxhdG9yID8gJ1NpbXVsYXRvcicgOiAnUmVhbCBkZXZpY2UnfSBhcmNoaXRlY3R1cmUgaXMgdW5zdXBwb3J0ZWQgYnkgdGhlICcke2FwcH0nIGFwcGxpY2F0aW9uLiBgICtcbiAgICAgIGBNYWtlIHN1cmUgdGhlIGNvcnJlY3QgZGVwbG95bWVudCB0YXJnZXQgaGFzIGJlZW4gc2VsZWN0ZWQgZm9yIGl0cyBjb21waWxhdGlvbiBpbiBYY29kZS5gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUmVzb3VyY2UgKHJlc291cmNlUGF0aCkge1xuICBjb25zdCBkYXRhID0gYXdhaXQgcGxpc3QucGFyc2VQbGlzdEZpbGUocmVzb3VyY2VQYXRoKTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhkYXRhKSkge1xuICAgIHJlc3VsdFtrZXldID0gXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyAob3B0cykge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGxhbmd1YWdlID0gJ2VuJyxcbiAgICBsb2NhbGl6YWJsZVN0cmluZ3NEaXIsXG4gICAgc3RyaW5nRmlsZSxcbiAgICBzdHJpY3RNb2RlLFxuICB9ID0gb3B0cztcblxuICBpZiAoIWFwcCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgU3RyaW5ncyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaWYgJ2FwcCcgY2FwYWJpbGl0eSBpcyBub3Qgc2V0YDtcbiAgICBpZiAoc3RyaWN0TW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBsb2cuaW5mbyhtZXNzYWdlKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBsZXQgbHByb2pSb290O1xuICBmb3IgKGNvbnN0IHN1YmZvbGRlciBvZiBbYCR7bGFuZ3VhZ2V9Lmxwcm9qYCwgbG9jYWxpemFibGVTdHJpbmdzRGlyLCAnJ10pIHtcbiAgICBscHJvalJvb3QgPSBwYXRoLnJlc29sdmUoYXBwLCBzdWJmb2xkZXIpO1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7bHByb2pSb290fScgcmVzb3VyY2VzIGZvbGRlciBoYXMgYmVlbiBmb3VuZGA7XG4gICAgaWYgKHN0cmljdE1vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKG1lc3NhZ2UpO1xuICB9XG4gIGxvZy5pbmZvKGBXaWxsIGV4dHJhY3QgcmVzb3VyY2Ugc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgY29uc3QgcmVzb3VyY2VQYXRocyA9IFtdO1xuICBpZiAoc3RyaW5nRmlsZSkge1xuICAgIGNvbnN0IGRzdFBhdGggPSBwYXRoLnJlc29sdmUobHByb2pSb290LCBzdHJpbmdGaWxlKTtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGRzdFBhdGgpKSB7XG4gICAgICByZXNvdXJjZVBhdGhzLnB1c2goZHN0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7ZHN0UGF0aH0nIHJlc291cmNlIGZpbGUgaGFzIGJlZW4gZm91bmQgZm9yICcke2FwcH0nYDtcbiAgICAgIGlmIChzdHJpY3RNb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKG1lc3NhZ2UpO1xuICAgICAgbG9nLmluZm8oYEdldHRpbmcgYWxsIHRoZSBhdmFpbGFibGUgc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSAmJiBhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgIGNvbnN0IHJlc291cmNlRmlsZXMgPSAoYXdhaXQgZnMucmVhZGRpcihscHJvalJvb3QpKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gXy5zb21lKFtTVFJJTkdTX1JFU09VUkNFLCBTVFJJTkdTRElDVF9SRVNPVVJDRV0sICh4KSA9PiBuYW1lLmVuZHNXaXRoKHgpKSlcbiAgICAgIC5tYXAoKG5hbWUpID0+IHBhdGgucmVzb2x2ZShscHJvalJvb3QsIG5hbWUpKTtcbiAgICByZXNvdXJjZVBhdGhzLnB1c2goLi4ucmVzb3VyY2VGaWxlcyk7XG4gIH1cbiAgbG9nLmluZm8oYEdvdCAke3Jlc291cmNlUGF0aHMubGVuZ3RofSByZXNvdXJjZSBmaWxlKHMpIGluICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdFN0cmluZ3MgPSB7fTtcbiAgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSBmdW5jdGlvbiAocCkge1xuICAgIHJldHVybiBwYXRoLmlzQWJzb2x1dGUocCkgPyBwIDogcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIHApO1xuICB9O1xuICBmb3IgKGNvbnN0IHJlc291cmNlUGF0aCBvZiByZXNvdXJjZVBhdGhzKSB7XG4gICAgaWYgKCF1dGlsLmlzU3ViUGF0aCh0b0Fic29sdXRlUGF0aChyZXNvdXJjZVBhdGgpLCB0b0Fic29sdXRlUGF0aChhcHApKSkge1xuICAgICAgLy8gc2VjdXJpdHkgcHJlY2F1dGlvblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtyZXNvdXJjZVBhdGh9JyBpcyBleHBlY3RlZCB0byBiZSBsb2NhdGVkIHVuZGVyICcke2FwcH0nYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZFJlc291cmNlKHJlc291cmNlUGF0aCk7XG4gICAgICBsb2cuZGVidWcoYFBhcnNlZCAke18ua2V5cyhkYXRhKS5sZW5ndGh9IHN0cmluZyhzKSBmcm9tICcke3Jlc291cmNlUGF0aH0nYCk7XG4gICAgICBfLm1lcmdlKHJlc3VsdFN0cmluZ3MsIGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGBDYW5ub3QgcGFyc2UgJyR7cmVzb3VyY2VQYXRofScgcmVzb3VyY2UuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBsb2cuaW5mbyhgR290ICR7Xy5rZXlzKHJlc3VsdFN0cmluZ3MpLmxlbmd0aH0gc3RyaW5nKHMpIGZyb20gJyR7bHByb2pSb290fSdgKTtcbiAgcmV0dXJuIHJlc3VsdFN0cmluZ3M7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gcGF0aCBvbiB0aGUgZmlsZSBzeXN0ZW0gcG9pbnRzIHRvIHRoZSAuYXBwIGJ1bmRsZSByb290XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggUG9zc2libGUgLmFwcCBidW5kbGUgcm9vdFxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGdpdmVuIHBhdGggcG9pbnRzIHRvIGFuIC5hcHAgYnVuZGxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzQXBwQnVuZGxlIChhcHBQYXRoKSB7XG4gIHJldHVybiBfLmVuZHNXaXRoKF8udG9Mb3dlcihhcHBQYXRoKSwgQVBQX0VYVClcbiAgICAmJiAoYXdhaXQgZnMuc3RhdChhcHBQYXRoKSkuaXNEaXJlY3RvcnkoKVxuICAgICYmIGF3YWl0IGZzLmV4aXN0cyhwYXRoLmpvaW4oYXBwUGF0aCwgJ0luZm8ucGxpc3QnKSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgZ2l2ZW4gYXJjaGl2ZSBhbmQgbG9va3MgZm9yIGl0ZW1zIHdpdGggZ2l2ZW4gZXh0ZW5zaW9ucyBpbiBpdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmNoaXZlUGF0aCBGdWxsIHBhdGggdG8gYSAuemlwIGFyY2hpdmVcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYXBwRXh0ZW5zaW9ucyBMaXN0IG9mIG1hdGNoaW5nIGl0ZW0gZXh0ZW5zaW9uc1xuICogQHJldHVybnMge1tzdHJpbmcsIEFycmF5PFN0cmluZz5dfSBUdXBsZSwgd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgcG9pbnRzIHRvXG4gKiBhIHRlbXBvcmFyeSBmb2xkZXIgcm9vdCB3aGVyZSB0aGUgYXJjaGl2ZSBoYXMgYmVlbiBleHRyYWN0ZWQgYW5kIHRoZSBzZWNvbmQgaXRlbVxuICogY29udGFpbnMgYSBsaXN0IG9mIHJlbGF0aXZlIHBhdGhzIHRvIG1hdGNoZWQgaXRlbXNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZmluZEFwcHMgKGFyY2hpdmVQYXRoLCBhcHBFeHRlbnNpb25zKSB7XG4gIGNvbnN0IHVzZVN5c3RlbVVuemlwRW52ID0gcHJvY2Vzcy5lbnYuQVBQSVVNX1BSRUZFUl9TWVNURU1fVU5aSVA7XG4gIGNvbnN0IHVzZVN5c3RlbVVuemlwID0gXy5pc0VtcHR5KHVzZVN5c3RlbVVuemlwRW52KVxuICAgIHx8ICFbJzAnLCAnZmFsc2UnXS5pbmNsdWRlcyhfLnRvTG93ZXIodXNlU3lzdGVtVW56aXBFbnYpKTtcbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKGFyY2hpdmVQYXRoLCB0bXBSb290LCB7dXNlU3lzdGVtVW56aXB9KTtcbiAgY29uc3QgZ2xvYlBhdHRlcm4gPSBgKiovKi4rKCR7YXBwRXh0ZW5zaW9ucy5tYXAoKGV4dCkgPT4gZXh0LnJlcGxhY2UoL15cXC4vLCAnJykpLmpvaW4oJ3wnKX0pYDtcbiAgY29uc3Qgc29ydGVkQnVuZGxlSXRlbXMgPSAoYXdhaXQgZnMuZ2xvYihnbG9iUGF0dGVybiwge1xuICAgIGN3ZDogdG1wUm9vdCxcbiAgICBzdHJpY3Q6IGZhbHNlLFxuICB9KSkuc29ydCgoYSwgYikgPT4gYS5zcGxpdChwYXRoLnNlcCkubGVuZ3RoIC0gYi5zcGxpdChwYXRoLnNlcCkubGVuZ3RoKTtcbiAgcmV0dXJuIFt0bXBSb290LCBzb3J0ZWRCdW5kbGVJdGVtc107XG59XG5cbi8qKlxuICogTW92ZXMgdGhlIGFwcGxpY2F0aW9uIGJ1bmRsZSB0byBhIG5ld2x5IGNyZWF0ZWQgdGVtcG9yYXJ5IGZvbGRlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBSb290IEZ1bGwgcGF0aCB0byB0aGUgLmFwcCBidW5kbGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBuZXcgcGF0aCB0byB0aGUgYXBwIGJ1bmRsZS5cbiAqIFRoZSBuYW1lIG9mIHRoZSBhcHAgYnVuZGxlIHJlbWFpbnMgdGhvdWdoXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzb2xhdGVBcHBCdW5kbGUgKGFwcFJvb3QpIHtcbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICBjb25zdCBkc3RSb290ID0gcGF0aC5qb2luKHRtcFJvb3QsIHBhdGguYmFzZW5hbWUoYXBwUm9vdCkpO1xuICBhd2FpdCBmcy5tdihhcHBSb290LCBkc3RSb290LCB7bWtkaXJwOiB0cnVlfSk7XG4gIHJldHVybiBkc3RSb290O1xufVxuXG5leHBvcnQge1xuICBleHRyYWN0QnVuZGxlSWQsIHZlcmlmeUFwcGxpY2F0aW9uUGxhdGZvcm0sIHBhcnNlTG9jYWxpemFibGVTdHJpbmdzLFxuICBTQUZBUklfQlVORExFX0lELCBmZXRjaFN1cHBvcnRlZEFwcFBsYXRmb3JtcywgQVBQX0VYVCwgSVBBX0VYVCxcbiAgaXNBcHBCdW5kbGUsIGZpbmRBcHBzLCBpc29sYXRlQXBwQnVuZGxlLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsTUFBTUksb0JBQW9CLEdBQUcsY0FBYztBQUMzQyxNQUFNQyxnQkFBZ0IsR0FBRyxVQUFVO0FBQ25DLE1BQU1DLGdCQUFnQixHQUFHLHdCQUF3QjtBQUFDQyxPQUFBLENBQUFELGdCQUFBLEdBQUFBLGdCQUFBO0FBQ2xELE1BQU1FLE9BQU8sR0FBRyxNQUFNO0FBQUNELE9BQUEsQ0FBQUMsT0FBQSxHQUFBQSxPQUFBO0FBQ3ZCLE1BQU1DLE9BQU8sR0FBRyxNQUFNO0FBQUNGLE9BQUEsQ0FBQUUsT0FBQSxHQUFBQSxPQUFBO0FBRXZCLGVBQWVDLGlCQUFpQkEsQ0FBRUMsR0FBRyxFQUFFQyxTQUFTLEVBQUU7RUFDaEQsTUFBTUMsU0FBUyxHQUFHQyxhQUFJLENBQUNDLE9BQU8sQ0FBQ0osR0FBRyxFQUFFLFlBQVksQ0FBQztFQUNqRCxJQUFJO0lBQ0YsT0FBTyxDQUFDLE1BQU1LLGNBQUssQ0FBQ0MsY0FBYyxDQUFDSixTQUFTLENBQUMsRUFBRUQsU0FBUyxDQUFDO0VBQzNELENBQUMsQ0FBQyxPQUFPTSxHQUFHLEVBQUU7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBRSxzQ0FBcUNMLGFBQUksQ0FBQ00sUUFBUSxDQUFDVCxHQUFHLENBQUUsTUFBS08sR0FBRyxDQUFDRyxPQUFRLEVBQUMsQ0FBQztFQUM5RjtBQUNGO0FBRUEsZUFBZUMsZUFB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
194
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcGF0aCIsIl9zdXBwb3J0IiwiX2xvZ2dlciIsIlNUUklOR1NESUNUX1JFU09VUkNFIiwiU1RSSU5HU19SRVNPVVJDRSIsIlNBRkFSSV9CVU5ETEVfSUQiLCJleHBvcnRzIiwiQVBQX0VYVCIsIklQQV9FWFQiLCJQTElTVF9DQUNIRSIsIldlYWtNYXAiLCJleHRyYWN0UGxpc3RFbnRyeSIsImFwcCIsImVudHJ5TmFtZSIsInBsaXN0UGF0aCIsInBhdGgiLCJyZXNvbHZlIiwicGFyc2VGaWxlIiwicGxpc3QiLCJwYXJzZVBsaXN0RmlsZSIsImVyciIsIkVycm9yIiwiYmFzZW5hbWUiLCJtZXNzYWdlIiwicGxpc3RPYmoiLCJfIiwiaXNOaWwiLCJfUExJU1RfQ0FDSEUkZ2V0IiwiZ2V0Iiwic2V0IiwiZXh0cmFjdEJ1bmRsZUlkIiwiYnVuZGxlSWQiLCJiaW5kIiwibG9nIiwiZGVidWciLCJleHRyYWN0QnVuZGxlVmVyc2lvbiIsImZldGNoU3VwcG9ydGVkQXBwUGxhdGZvcm1zIiwicmVzdWx0IiwiaXNBcnJheSIsIndhcm4iLCJ2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtIiwiZXhwZWN0ZWRQbGF0Zm9ybSIsInN1cHBvcnRlZFBsYXRmb3JtcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJpc1NpbXVsYXRvciIsImlzVHZPUyIsInByZWZpeCIsInN1ZmZpeCIsImRzdFBsYXRmb3JtIiwiaW5jbHVkZXMiLCJyZWFkUmVzb3VyY2UiLCJyZXNvdXJjZVBhdGgiLCJkYXRhIiwia2V5IiwidmFsdWUiLCJ0b1BhaXJzIiwiaXNTdHJpbmciLCJwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyIsIm9wdHMiLCJsYW5ndWFnZSIsImxvY2FsaXphYmxlU3RyaW5nc0RpciIsInN0cmluZ0ZpbGUiLCJzdHJpY3RNb2RlIiwiaW5mbyIsImxwcm9qUm9vdCIsInN1YmZvbGRlciIsImZzIiwiZXhpc3RzIiwicmVzb3VyY2VQYXRocyIsImRzdFBhdGgiLCJwdXNoIiwiaXNFbXB0eSIsInJlc291cmNlRmlsZXMiLCJyZWFkZGlyIiwiZmlsdGVyIiwibmFtZSIsInNvbWUiLCJ4IiwiZW5kc1dpdGgiLCJtYXAiLCJsZW5ndGgiLCJyZXN1bHRTdHJpbmdzIiwidG9BYnNvbHV0ZVBhdGgiLCJwIiwiaXNBYnNvbHV0ZSIsInByb2Nlc3MiLCJjd2QiLCJ1dGlsIiwiaXNTdWJQYXRoIiwia2V5cyIsIm1lcmdlIiwiZSIsImlzQXBwQnVuZGxlIiwiYXBwUGF0aCIsInRvTG93ZXIiLCJzdGF0IiwiaXNEaXJlY3RvcnkiLCJqb2luIiwiZmluZEFwcHMiLCJhcmNoaXZlUGF0aCIsImFwcEV4dGVuc2lvbnMiLCJ1c2VTeXN0ZW1VbnppcEVudiIsImVudiIsIkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQIiwidXNlU3lzdGVtVW56aXAiLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJ6aXAiLCJleHRyYWN0QWxsVG8iLCJnbG9iUGF0dGVybiIsImV4dCIsInJlcGxhY2UiLCJzb3J0ZWRCdW5kbGVJdGVtcyIsImdsb2IiLCJzdHJpY3QiLCJzb3J0IiwiYSIsImIiLCJzcGxpdCIsInNlcCIsImlzb2xhdGVBcHBCdW5kbGUiLCJhcHBSb290IiwiZHN0Um9vdCIsIm12IiwibWtkaXJwIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2FwcC11dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwbGlzdCwgZnMsIHV0aWwsIHRlbXBEaXIsIHppcCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXIuanMnO1xuXG5jb25zdCBTVFJJTkdTRElDVF9SRVNPVVJDRSA9ICcuc3RyaW5nc2RpY3QnO1xuY29uc3QgU1RSSU5HU19SRVNPVVJDRSA9ICcuc3RyaW5ncyc7XG5jb25zdCBTQUZBUklfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5tb2JpbGVzYWZhcmknO1xuY29uc3QgQVBQX0VYVCA9ICcuYXBwJztcbmNvbnN0IElQQV9FWFQgPSAnLmlwYSc7XG5jb25zdCBQTElTVF9DQUNIRSA9IG5ldyBXZWFrTWFwKCk7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gZW50cnkgbmFtZSBmcm9tIHRoZSBhcHBsaWNhdGlvbidzIEluZm8ucGxpc3QuXG4gKlxuICogQHRoaXMge09iamVjdH0gT3B0aW5hbCBpbnN0YW5jZSB1c2VkIGZvciBjYWNoaW5nLiBVc3VzYWxseSB0aGUgZHJpdmVyIGluc3RhbmNlLlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcCBGdWxsIHBhdGggdG8gdGhlIGFwcCBidW5kbGUgcm9vdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBlbnRyeU5hbWUgS2V5IG5hbWUgaW4gdGhlIHBsaXN0LlxuICogQHJldHVybnMge1Byb21pc2U8QW55IHwgdW5kZWZpbmVkPn0gRWl0aGVyIHRoZSBleHRyYWN0ZWQgdmFsdWUgb3IgdW5kZWZpbmVkIGlmIG5vIHN1Y2gga2V5IGhhcyBiZWVuIGZvdW5kIGluIHRoZSBwbGlzdC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYXBwbGljYXRpb24ncyBJbmZvLnBsaXN0IGNhbm5vdCBiZSBwYXJzZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RQbGlzdEVudHJ5IChhcHAsIGVudHJ5TmFtZSkge1xuICBjb25zdCBwbGlzdFBhdGggPSBwYXRoLnJlc29sdmUoYXBwLCAnSW5mby5wbGlzdCcpO1xuXG4gIGNvbnN0IHBhcnNlRmlsZSA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHBsaXN0LnBhcnNlUGxpc3RGaWxlKHBsaXN0UGF0aCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBleHRyYWN0IEluZm8ucGxpc3QgZnJvbSAnJHtwYXRoLmJhc2VuYW1lKGFwcCl9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH07XG5cbiAgbGV0IHBsaXN0T2JqO1xuICBpZiAoXy5pc05pbCh0aGlzKSkge1xuICAgIHBsaXN0T2JqID0gYXdhaXQgcGFyc2VGaWxlKCk7XG4gIH0gZWxzZSB7XG4gICAgcGxpc3RPYmogPSBQTElTVF9DQUNIRS5nZXQodGhpcyk/LlthcHBdO1xuICAgIGlmICghcGxpc3RPYmopIHtcbiAgICAgIHBsaXN0T2JqID0gYXdhaXQgcGFyc2VGaWxlKCk7XG4gICAgICBQTElTVF9DQUNIRS5zZXQodGhpcywge1xuICAgICAgICAuLi4oUExJU1RfQ0FDSEUuZ2V0KHRoaXMpIHx8IHt9KSxcbiAgICAgICAgW2FwcF06IHBsaXN0T2JqLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBsaXN0T2JqW2VudHJ5TmFtZV07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RCdW5kbGVJZCAoYXBwKSB7XG4gIGNvbnN0IGJ1bmRsZUlkID0gYXdhaXQgZXh0cmFjdFBsaXN0RW50cnkuYmluZCh0aGlzKShhcHAsICdDRkJ1bmRsZUlkZW50aWZpZXInKTtcbiAgbG9nLmRlYnVnKGBHZXR0aW5nIGJ1bmRsZSBJRCBmcm9tIGFwcCAnJHthcHB9JzogJyR7YnVuZGxlSWR9J2ApO1xuICByZXR1cm4gYnVuZGxlSWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RCdW5kbGVWZXJzaW9uIChhcHApIHtcbiAgcmV0dXJuIGF3YWl0IGV4dHJhY3RQbGlzdEVudHJ5LmJpbmQodGhpcykoYXBwLCAnQ0ZCdW5kbGVWZXJzaW9uJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoU3VwcG9ydGVkQXBwUGxhdGZvcm1zIChhcHApIHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBleHRyYWN0UGxpc3RFbnRyeS5iaW5kKHRoaXMpKGFwcCwgJ0NGQnVuZGxlU3VwcG9ydGVkUGxhdGZvcm1zJyk7XG4gICAgaWYgKCFfLmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgbG9nLndhcm4oYCR7cGF0aC5iYXNlbmFtZShhcHApfSc6IENGQnVuZGxlU3VwcG9ydGVkUGxhdGZvcm1zIGlzIG5vdCBhIHZhbGlkIGxpc3RgKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgQ2Fubm90IGV4dHJhY3QgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIHBsYXRmb3JtcyBmcm9tICcke3BhdGguYmFzZW5hbWUoYXBwKX0nOiAke2Vyci5tZXNzYWdlfWBcbiAgICApO1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBsYXRmb3JtT3B0c1xuICpcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNTaW11bGF0b3IgLSBXaGV0aGVyIHRoZSBkZXN0aW5hdGlvbiBwbGF0Zm9ybSBpcyBhIFNpbXVsYXRvclxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1R2T1MgLSBXaGV0aGVyIHRoZSBkZXN0aW5hdGlvbiBwbGF0Zm9ybSBpcyBhIFNpbXVsYXRvclxuICovXG5cbi8qKlxuICogVmVyaWZ5IHdoZXRoZXIgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIGlzIGNvbXBhdGlibGUgdG8gdGhlXG4gKiBwbGF0Zm9ybSB3aGVyZSBpdCBpcyBnb2luZyB0byBiZSBpbnN0YWxsZWQgYW5kIHRlc3RlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwIC0gVGhlIGFjdHVhbCBwYXRoIHRvIHRoZSBhcHBsaWNhdGlvbiBidW5kbGVcbiAqIEBwYXJhbSB7UGxhdGZvcm1PcHRzfSBleHBlY3RlZFBsYXRmb3JtXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgYnVuZGxlIGFyY2hpdGVjdHVyZSBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZGV2aWNlIGFyY2hpdGVjdHVyZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5QXBwbGljYXRpb25QbGF0Zm9ybSAoYXBwLCBleHBlY3RlZFBsYXRmb3JtKSB7XG4gIGxvZy5kZWJ1ZygnVmVyaWZ5aW5nIGFwcGxpY2F0aW9uIHBsYXRmb3JtJyk7XG5cbiAgY29uc3Qgc3VwcG9ydGVkUGxhdGZvcm1zID0gYXdhaXQgZmV0Y2hTdXBwb3J0ZWRBcHBQbGF0Zm9ybXMuYmluZCh0aGlzKShhcHApO1xuICBsb2cuZGVidWcoYENGQnVuZGxlU3VwcG9ydGVkUGxhdGZvcm1zOiAke0pTT04uc3RyaW5naWZ5KHN1cHBvcnRlZFBsYXRmb3Jtcyl9YCk7XG5cbiAgY29uc3Qge1xuICAgIGlzU2ltdWxhdG9yLFxuICAgIGlzVHZPUyxcbiAgfSA9IGV4cGVjdGVkUGxhdGZvcm07XG4gIGNvbnN0IHByZWZpeCA9IGlzVHZPUyA/ICdBcHBsZVRWJyA6ICdpUGhvbmUnO1xuICBjb25zdCBzdWZmaXggPSBpc1NpbXVsYXRvciA/ICdTaW11bGF0b3InIDogJ09TJztcbiAgY29uc3QgZHN0UGxhdGZvcm0gPSBgJHtwcmVmaXh9JHtzdWZmaXh9YDtcbiAgaWYgKCFzdXBwb3J0ZWRQbGF0Zm9ybXMuaW5jbHVkZXMoZHN0UGxhdGZvcm0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2lzU2ltdWxhdG9yID8gJ1NpbXVsYXRvcicgOiAnUmVhbCBkZXZpY2UnfSBhcmNoaXRlY3R1cmUgaXMgdW5zdXBwb3J0ZWQgYnkgdGhlICcke2FwcH0nIGFwcGxpY2F0aW9uLiBgICtcbiAgICAgIGBNYWtlIHN1cmUgdGhlIGNvcnJlY3QgZGVwbG95bWVudCB0YXJnZXQgaGFzIGJlZW4gc2VsZWN0ZWQgZm9yIGl0cyBjb21waWxhdGlvbiBpbiBYY29kZS5gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUmVzb3VyY2UgKHJlc291cmNlUGF0aCkge1xuICBjb25zdCBkYXRhID0gYXdhaXQgcGxpc3QucGFyc2VQbGlzdEZpbGUocmVzb3VyY2VQYXRoKTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhkYXRhKSkge1xuICAgIHJlc3VsdFtrZXldID0gXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyAob3B0cykge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGxhbmd1YWdlID0gJ2VuJyxcbiAgICBsb2NhbGl6YWJsZVN0cmluZ3NEaXIsXG4gICAgc3RyaW5nRmlsZSxcbiAgICBzdHJpY3RNb2RlLFxuICB9ID0gb3B0cztcblxuICBpZiAoIWFwcCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgU3RyaW5ncyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaWYgJ2FwcCcgY2FwYWJpbGl0eSBpcyBub3Qgc2V0YDtcbiAgICBpZiAoc3RyaWN0TW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBsb2cuaW5mbyhtZXNzYWdlKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBsZXQgbHByb2pSb290O1xuICBmb3IgKGNvbnN0IHN1YmZvbGRlciBvZiBbYCR7bGFuZ3VhZ2V9Lmxwcm9qYCwgbG9jYWxpemFibGVTdHJpbmdzRGlyLCAnJ10pIHtcbiAgICBscHJvalJvb3QgPSBwYXRoLnJlc29sdmUoYXBwLCBzdWJmb2xkZXIpO1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7bHByb2pSb290fScgcmVzb3VyY2VzIGZvbGRlciBoYXMgYmVlbiBmb3VuZGA7XG4gICAgaWYgKHN0cmljdE1vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKG1lc3NhZ2UpO1xuICB9XG4gIGxvZy5pbmZvKGBXaWxsIGV4dHJhY3QgcmVzb3VyY2Ugc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgY29uc3QgcmVzb3VyY2VQYXRocyA9IFtdO1xuICBpZiAoc3RyaW5nRmlsZSkge1xuICAgIGNvbnN0IGRzdFBhdGggPSBwYXRoLnJlc29sdmUobHByb2pSb290LCBzdHJpbmdGaWxlKTtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGRzdFBhdGgpKSB7XG4gICAgICByZXNvdXJjZVBhdGhzLnB1c2goZHN0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7ZHN0UGF0aH0nIHJlc291cmNlIGZpbGUgaGFzIGJlZW4gZm91bmQgZm9yICcke2FwcH0nYDtcbiAgICAgIGlmIChzdHJpY3RNb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKG1lc3NhZ2UpO1xuICAgICAgbG9nLmluZm8oYEdldHRpbmcgYWxsIHRoZSBhdmFpbGFibGUgc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSAmJiBhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgIGNvbnN0IHJlc291cmNlRmlsZXMgPSAoYXdhaXQgZnMucmVhZGRpcihscHJvalJvb3QpKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gXy5zb21lKFtTVFJJTkdTX1JFU09VUkNFLCBTVFJJTkdTRElDVF9SRVNPVVJDRV0sICh4KSA9PiBuYW1lLmVuZHNXaXRoKHgpKSlcbiAgICAgIC5tYXAoKG5hbWUpID0+IHBhdGgucmVzb2x2ZShscHJvalJvb3QsIG5hbWUpKTtcbiAgICByZXNvdXJjZVBhdGhzLnB1c2goLi4ucmVzb3VyY2VGaWxlcyk7XG4gIH1cbiAgbG9nLmluZm8oYEdvdCAke3Jlc291cmNlUGF0aHMubGVuZ3RofSByZXNvdXJjZSBmaWxlKHMpIGluICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdFN0cmluZ3MgPSB7fTtcbiAgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSBmdW5jdGlvbiAocCkge1xuICAgIHJldHVybiBwYXRoLmlzQWJzb2x1dGUocCkgPyBwIDogcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIHApO1xuICB9O1xuICBmb3IgKGNvbnN0IHJlc291cmNlUGF0aCBvZiByZXNvdXJjZVBhdGhzKSB7XG4gICAgaWYgKCF1dGlsLmlzU3ViUGF0aCh0b0Fic29sdXRlUGF0aChyZXNvdXJjZVBhdGgpLCB0b0Fic29sdXRlUGF0aChhcHApKSkge1xuICAgICAgLy8gc2VjdXJpdHkgcHJlY2F1dGlvblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtyZXNvdXJjZVBhdGh9JyBpcyBleHBlY3RlZCB0byBiZSBsb2NhdGVkIHVuZGVyICcke2FwcH0nYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZFJlc291cmNlKHJlc291cmNlUGF0aCk7XG4gICAgICBsb2cuZGVidWcoYFBhcnNlZCAke18ua2V5cyhkYXRhKS5sZW5ndGh9IHN0cmluZyhzKSBmcm9tICcke3Jlc291cmNlUGF0aH0nYCk7XG4gICAgICBfLm1lcmdlKHJlc3VsdFN0cmluZ3MsIGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGBDYW5ub3QgcGFyc2UgJyR7cmVzb3VyY2VQYXRofScgcmVzb3VyY2UuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBsb2cuaW5mbyhgR290ICR7Xy5rZXlzKHJlc3VsdFN0cmluZ3MpLmxlbmd0aH0gc3RyaW5nKHMpIGZyb20gJyR7bHByb2pSb290fSdgKTtcbiAgcmV0dXJuIHJlc3VsdFN0cmluZ3M7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gcGF0aCBvbiB0aGUgZmlsZSBzeXN0ZW0gcG9pbnRzIHRvIHRoZSAuYXBwIGJ1bmRsZSByb290XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggUG9zc2libGUgLmFwcCBidW5kbGUgcm9vdFxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGdpdmVuIHBhdGggcG9pbnRzIHRvIGFuIC5hcHAgYnVuZGxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGlzQXBwQnVuZGxlIChhcHBQYXRoKSB7XG4gIHJldHVybiBfLmVuZHNXaXRoKF8udG9Mb3dlcihhcHBQYXRoKSwgQVBQX0VYVClcbiAgICAmJiAoYXdhaXQgZnMuc3RhdChhcHBQYXRoKSkuaXNEaXJlY3RvcnkoKVxuICAgICYmIGF3YWl0IGZzLmV4aXN0cyhwYXRoLmpvaW4oYXBwUGF0aCwgJ0luZm8ucGxpc3QnKSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgZ2l2ZW4gYXJjaGl2ZSBhbmQgbG9va3MgZm9yIGl0ZW1zIHdpdGggZ2l2ZW4gZXh0ZW5zaW9ucyBpbiBpdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmNoaXZlUGF0aCBGdWxsIHBhdGggdG8gYSAuemlwIGFyY2hpdmVcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYXBwRXh0ZW5zaW9ucyBMaXN0IG9mIG1hdGNoaW5nIGl0ZW0gZXh0ZW5zaW9uc1xuICogQHJldHVybnMge1Byb21pc2U8W3N0cmluZywgc3RyaW5nW11dPn0gVHVwbGUsIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IHBvaW50cyB0b1xuICogYSB0ZW1wb3JhcnkgZm9sZGVyIHJvb3Qgd2hlcmUgdGhlIGFyY2hpdmUgaGFzIGJlZW4gZXh0cmFjdGVkIGFuZCB0aGUgc2Vjb25kIGl0ZW1cbiAqIGNvbnRhaW5zIGEgbGlzdCBvZiByZWxhdGl2ZSBwYXRocyB0byBtYXRjaGVkIGl0ZW1zXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZpbmRBcHBzIChhcmNoaXZlUGF0aCwgYXBwRXh0ZW5zaW9ucykge1xuICBjb25zdCB1c2VTeXN0ZW1VbnppcEVudiA9IHByb2Nlc3MuZW52LkFQUElVTV9QUkVGRVJfU1lTVEVNX1VOWklQO1xuICBjb25zdCB1c2VTeXN0ZW1VbnppcCA9IF8uaXNFbXB0eSh1c2VTeXN0ZW1VbnppcEVudilcbiAgICB8fCAhWycwJywgJ2ZhbHNlJ10uaW5jbHVkZXMoXy50b0xvd2VyKHVzZVN5c3RlbVVuemlwRW52KSk7XG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgYXdhaXQgemlwLmV4dHJhY3RBbGxUbyhhcmNoaXZlUGF0aCwgdG1wUm9vdCwge3VzZVN5c3RlbVVuemlwfSk7XG4gIGNvbnN0IGdsb2JQYXR0ZXJuID0gYCoqLyouKygke2FwcEV4dGVuc2lvbnMubWFwKChleHQpID0+IGV4dC5yZXBsYWNlKC9eXFwuLywgJycpKS5qb2luKCd8Jyl9KWA7XG4gIGNvbnN0IHNvcnRlZEJ1bmRsZUl0ZW1zID0gKGF3YWl0IGZzLmdsb2IoZ2xvYlBhdHRlcm4sIHtcbiAgICBjd2Q6IHRtcFJvb3QsXG4gICAgc3RyaWN0OiBmYWxzZSxcbiAgfSkpLnNvcnQoKGEsIGIpID0+IGEuc3BsaXQocGF0aC5zZXApLmxlbmd0aCAtIGIuc3BsaXQocGF0aC5zZXApLmxlbmd0aCk7XG4gIHJldHVybiBbdG1wUm9vdCwgc29ydGVkQnVuZGxlSXRlbXNdO1xufVxuXG4vKipcbiAqIE1vdmVzIHRoZSBhcHBsaWNhdGlvbiBidW5kbGUgdG8gYSBuZXdseSBjcmVhdGVkIHRlbXBvcmFyeSBmb2xkZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUm9vdCBGdWxsIHBhdGggdG8gdGhlIC5hcHAgYnVuZGxlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBUaGUgbmV3IHBhdGggdG8gdGhlIGFwcCBidW5kbGUuXG4gKiBUaGUgbmFtZSBvZiB0aGUgYXBwIGJ1bmRsZSByZW1haW5zIHRob3VnaFxuICovXG5hc3luYyBmdW5jdGlvbiBpc29sYXRlQXBwQnVuZGxlIChhcHBSb290KSB7XG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgY29uc3QgZHN0Um9vdCA9IHBhdGguam9pbih0bXBSb290LCBwYXRoLmJhc2VuYW1lKGFwcFJvb3QpKTtcbiAgYXdhaXQgZnMubXYoYXBwUm9vdCwgZHN0Um9vdCwge21rZGlycDogdHJ1ZX0pO1xuICByZXR1cm4gZHN0Um9vdDtcbn1cblxuZXhwb3J0IHtcbiAgZXh0cmFjdEJ1bmRsZUlkLCB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtLCBwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyxcbiAgU0FGQVJJX0JVTkRMRV9JRCwgZmV0Y2hTdXBwb3J0ZWRBcHBQbGF0Zm9ybXMsIEFQUF9FWFQsIElQQV9FWFQsXG4gIGlzQXBwQnVuZGxlLCBmaW5kQXBwcywgaXNvbGF0ZUFwcEJ1bmRsZSwgZXh0cmFjdEJ1bmRsZVZlcnNpb24sXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsTUFBTUksb0JBQW9CLEdBQUcsY0FBYztBQUMzQyxNQUFNQyxnQkFBZ0IsR0FBRyxVQUFVO0FBQ25DLE1BQU1DLGdCQUFnQixHQUFHLHdCQUF3QjtBQUFDQyxPQUFBLENBQUFELGdCQUFBLEdBQUFBLGdCQUFBO0FBQ2xELE1BQU1FLE9BQU8sR0FBRyxNQUFNO0FBQUNELE9BQUEsQ0FBQUMsT0FBQSxHQUFBQSxPQUFBO0FBQ3ZCLE1BQU1DLE9BQU8sR0FBRyxNQUFNO0FBQUNGLE9BQUEsQ0FBQUUsT0FBQSxHQUFBQSxPQUFBO0FBQ3ZCLE1BQU1DLFdBQVcsR0FBRyxJQUFJQyxP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
@@ -1 +1 @@
1
- {"version":3,"file":"app-utils.js","names":["_lodash","_interopRequireDefault","require","_path","_support","_logger","STRINGSDICT_RESOURCE","STRINGS_RESOURCE","SAFARI_BUNDLE_ID","exports","APP_EXT","IPA_EXT","extractPlistEntry","app","entryName","plistPath","path","resolve","plist","parsePlistFile","err","Error","basename","message","extractBundleId","bundleId","log","debug","fetchSupportedAppPlatforms","result","_","isArray","warn","verifyApplicationPlatform","expectedPlatform","supportedPlatforms","JSON","stringify","isSimulator","isTvOS","prefix","suffix","dstPlatform","includes","readResource","resourcePath","data","key","value","toPairs","isString","parseLocalizableStrings","opts","language","localizableStringsDir","stringFile","strictMode","info","lprojRoot","subfolder","fs","exists","resourcePaths","dstPath","push","isEmpty","resourceFiles","readdir","filter","name","some","x","endsWith","map","length","resultStrings","toAbsolutePath","p","isAbsolute","process","cwd","util","isSubPath","keys","merge","e","isAppBundle","appPath","toLower","stat","isDirectory","join","findApps","archivePath","appExtensions","useSystemUnzipEnv","env","APPIUM_PREFER_SYSTEM_UNZIP","useSystemUnzip","tmpRoot","tempDir","openDir","zip","extractAllTo","globPattern","ext","replace","sortedBundleItems","glob","strict","sort","a","b","split","sep","isolateAppBundle","appRoot","dstRoot","mv","mkdirp"],"sources":["../../lib/app-utils.js"],"sourcesContent":["import _ from 'lodash';\nimport path from 'path';\nimport { plist, fs, util, tempDir, zip } from 'appium/support';\nimport log from './logger.js';\n\nconst STRINGSDICT_RESOURCE = '.stringsdict';\nconst STRINGS_RESOURCE = '.strings';\nconst SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';\nconst APP_EXT = '.app';\nconst IPA_EXT = '.ipa';\n\nasync function extractPlistEntry (app, entryName) {\n const plistPath = path.resolve(app, 'Info.plist');\n try {\n return (await plist.parsePlistFile(plistPath))[entryName];\n } catch (err) {\n throw new Error(`Could not extract Info.plist from '${path.basename(app)}': ${err.message}`);\n }\n}\n\nasync function extractBundleId (app) {\n const bundleId = await extractPlistEntry(app, 'CFBundleIdentifier');\n log.debug(`Getting bundle ID from app '${app}': '${bundleId}'`);\n return bundleId;\n}\n\nasync function fetchSupportedAppPlatforms (app) {\n try {\n const result = await extractPlistEntry(app, 'CFBundleSupportedPlatforms');\n if (!_.isArray(result)) {\n log.warn(`${path.basename(app)}': CFBundleSupportedPlatforms is not a valid list`);\n return [];\n }\n return result;\n } catch (err) {\n log.warn(\n `Cannot extract the list of supported platforms from '${path.basename(app)}': ${err.message}`\n );\n return [];\n }\n}\n\n/**\n * @typedef {Object} PlatformOpts\n *\n * @property {boolean} isSimulator - Whether the destination platform is a Simulator\n * @property {boolean} isTvOS - Whether the destination platform is a Simulator\n */\n\n/**\n * Verify whether the given application is compatible to the\n * platform where it is going to be installed and tested.\n *\n * @param {string} app - The actual path to the application bundle\n * @param {PlatformOpts} expectedPlatform\n * @throws {Error} If bundle architecture does not match the expected device architecture.\n */\nasync function verifyApplicationPlatform (app, expectedPlatform) {\n log.debug('Verifying application platform');\n\n const supportedPlatforms = await fetchSupportedAppPlatforms(app);\n log.debug(`CFBundleSupportedPlatforms: ${JSON.stringify(supportedPlatforms)}`);\n\n const {\n isSimulator,\n isTvOS,\n } = expectedPlatform;\n const prefix = isTvOS ? 'AppleTV' : 'iPhone';\n const suffix = isSimulator ? 'Simulator' : 'OS';\n const dstPlatform = `${prefix}${suffix}`;\n if (!supportedPlatforms.includes(dstPlatform)) {\n throw new Error(`${isSimulator ? 'Simulator' : 'Real device'} architecture is unsupported by the '${app}' application. ` +\n `Make sure the correct deployment target has been selected for its compilation in Xcode.`);\n }\n}\n\nasync function readResource (resourcePath) {\n const data = await plist.parsePlistFile(resourcePath);\n const result = {};\n for (const [key, value] of _.toPairs(data)) {\n result[key] = _.isString(value) ? value : JSON.stringify(value);\n }\n return result;\n}\n\nasync function parseLocalizableStrings (opts) {\n const {\n app,\n language = 'en',\n localizableStringsDir,\n stringFile,\n strictMode,\n } = opts;\n\n if (!app) {\n const message = `Strings extraction is not supported if 'app' capability is not set`;\n if (strictMode) {\n throw new Error(message);\n }\n log.info(message);\n return {};\n }\n\n let lprojRoot;\n for (const subfolder of [`${language}.lproj`, localizableStringsDir, '']) {\n lprojRoot = path.resolve(app, subfolder);\n if (await fs.exists(lprojRoot)) {\n break;\n }\n const message = `No '${lprojRoot}' resources folder has been found`;\n if (strictMode) {\n throw new Error(message);\n }\n log.debug(message);\n }\n log.info(`Will extract resource strings from '${lprojRoot}'`);\n\n const resourcePaths = [];\n if (stringFile) {\n const dstPath = path.resolve(lprojRoot, stringFile);\n if (await fs.exists(dstPath)) {\n resourcePaths.push(dstPath);\n } else {\n const message = `No '${dstPath}' resource file has been found for '${app}'`;\n if (strictMode) {\n throw new Error(message);\n }\n log.info(message);\n log.info(`Getting all the available strings from '${lprojRoot}'`);\n }\n }\n\n if (_.isEmpty(resourcePaths) && await fs.exists(lprojRoot)) {\n const resourceFiles = (await fs.readdir(lprojRoot))\n .filter((name) => _.some([STRINGS_RESOURCE, STRINGSDICT_RESOURCE], (x) => name.endsWith(x)))\n .map((name) => path.resolve(lprojRoot, name));\n resourcePaths.push(...resourceFiles);\n }\n log.info(`Got ${resourcePaths.length} resource file(s) in '${lprojRoot}'`);\n\n if (_.isEmpty(resourcePaths)) {\n return {};\n }\n\n const resultStrings = {};\n const toAbsolutePath = function (p) {\n return path.isAbsolute(p) ? p : path.resolve(process.cwd(), p);\n };\n for (const resourcePath of resourcePaths) {\n if (!util.isSubPath(toAbsolutePath(resourcePath), toAbsolutePath(app))) {\n // security precaution\n throw new Error(`'${resourcePath}' is expected to be located under '${app}'`);\n }\n try {\n const data = await readResource(resourcePath);\n log.debug(`Parsed ${_.keys(data).length} string(s) from '${resourcePath}'`);\n _.merge(resultStrings, data);\n } catch (e) {\n log.warn(`Cannot parse '${resourcePath}' resource. Original error: ${e.message}`);\n }\n }\n\n log.info(`Got ${_.keys(resultStrings).length} string(s) from '${lprojRoot}'`);\n return resultStrings;\n}\n\n/**\n * Check whether the given path on the file system points to the .app bundle root\n *\n * @param {string} appPath Possible .app bundle root\n * @returns {boolean} Whether the given path points to an .app bundle\n */\nasync function isAppBundle (appPath) {\n return _.endsWith(_.toLower(appPath), APP_EXT)\n && (await fs.stat(appPath)).isDirectory()\n && await fs.exists(path.join(appPath, 'Info.plist'));\n}\n\n/**\n * Extract the given archive and looks for items with given extensions in it\n *\n * @param {string} archivePath Full path to a .zip archive\n * @param {Array<string>} appExtensions List of matching item extensions\n * @returns {[string, Array<String>]} Tuple, where the first element points to\n * a temporary folder root where the archive has been extracted and the second item\n * contains a list of relative paths to matched items\n */\nasync function findApps (archivePath, appExtensions) {\n const useSystemUnzipEnv = process.env.APPIUM_PREFER_SYSTEM_UNZIP;\n const useSystemUnzip = _.isEmpty(useSystemUnzipEnv)\n || !['0', 'false'].includes(_.toLower(useSystemUnzipEnv));\n const tmpRoot = await tempDir.openDir();\n await zip.extractAllTo(archivePath, tmpRoot, {useSystemUnzip});\n const globPattern = `**/*.+(${appExtensions.map((ext) => ext.replace(/^\\./, '')).join('|')})`;\n const sortedBundleItems = (await fs.glob(globPattern, {\n cwd: tmpRoot,\n strict: false,\n })).sort((a, b) => a.split(path.sep).length - b.split(path.sep).length);\n return [tmpRoot, sortedBundleItems];\n}\n\n/**\n * Moves the application bundle to a newly created temporary folder\n *\n * @param {string} appRoot Full path to the .app bundle\n * @returns {string} The new path to the app bundle.\n * The name of the app bundle remains though\n */\nasync function isolateAppBundle (appRoot) {\n const tmpRoot = await tempDir.openDir();\n const dstRoot = path.join(tmpRoot, path.basename(appRoot));\n await fs.mv(appRoot, dstRoot, {mkdirp: true});\n return dstRoot;\n}\n\nexport {\n extractBundleId, verifyApplicationPlatform, parseLocalizableStrings,\n SAFARI_BUNDLE_ID, fetchSupportedAppPlatforms, APP_EXT, IPA_EXT,\n isAppBundle, findApps, isolateAppBundle,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"app-utils.js","names":["_lodash","_interopRequireDefault","require","_path","_support","_logger","STRINGSDICT_RESOURCE","STRINGS_RESOURCE","SAFARI_BUNDLE_ID","exports","APP_EXT","IPA_EXT","PLIST_CACHE","WeakMap","extractPlistEntry","app","entryName","plistPath","path","resolve","parseFile","plist","parsePlistFile","err","Error","basename","message","plistObj","_","isNil","_PLIST_CACHE$get","get","set","extractBundleId","bundleId","bind","log","debug","extractBundleVersion","fetchSupportedAppPlatforms","result","isArray","warn","verifyApplicationPlatform","expectedPlatform","supportedPlatforms","JSON","stringify","isSimulator","isTvOS","prefix","suffix","dstPlatform","includes","readResource","resourcePath","data","key","value","toPairs","isString","parseLocalizableStrings","opts","language","localizableStringsDir","stringFile","strictMode","info","lprojRoot","subfolder","fs","exists","resourcePaths","dstPath","push","isEmpty","resourceFiles","readdir","filter","name","some","x","endsWith","map","length","resultStrings","toAbsolutePath","p","isAbsolute","process","cwd","util","isSubPath","keys","merge","e","isAppBundle","appPath","toLower","stat","isDirectory","join","findApps","archivePath","appExtensions","useSystemUnzipEnv","env","APPIUM_PREFER_SYSTEM_UNZIP","useSystemUnzip","tmpRoot","tempDir","openDir","zip","extractAllTo","globPattern","ext","replace","sortedBundleItems","glob","strict","sort","a","b","split","sep","isolateAppBundle","appRoot","dstRoot","mv","mkdirp"],"sources":["../../lib/app-utils.js"],"sourcesContent":["import _ from 'lodash';\nimport path from 'path';\nimport { plist, fs, util, tempDir, zip } from 'appium/support';\nimport log from './logger.js';\n\nconst STRINGSDICT_RESOURCE = '.stringsdict';\nconst STRINGS_RESOURCE = '.strings';\nconst SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';\nconst APP_EXT = '.app';\nconst IPA_EXT = '.ipa';\nconst PLIST_CACHE = new WeakMap();\n\n/**\n * Retrieves the value of the given entry name from the application's Info.plist.\n *\n * @this {Object} Optinal instance used for caching. Ususally the driver instance.\n * @param {string} app Full path to the app bundle root.\n * @param {string} entryName Key name in the plist.\n * @returns {Promise<Any | undefined>} Either the extracted value or undefined if no such key has been found in the plist.\n * @throws {Error} If the application's Info.plist cannot be parsed.\n */\nasync function extractPlistEntry (app, entryName) {\n const plistPath = path.resolve(app, 'Info.plist');\n\n const parseFile = async () => {\n try {\n return await plist.parsePlistFile(plistPath);\n } catch (err) {\n throw new Error(`Could not extract Info.plist from '${path.basename(app)}': ${err.message}`);\n }\n };\n\n let plistObj;\n if (_.isNil(this)) {\n plistObj = await parseFile();\n } else {\n plistObj = PLIST_CACHE.get(this)?.[app];\n if (!plistObj) {\n plistObj = await parseFile();\n PLIST_CACHE.set(this, {\n ...(PLIST_CACHE.get(this) || {}),\n [app]: plistObj,\n });\n }\n }\n\n return plistObj[entryName];\n}\n\nasync function extractBundleId (app) {\n const bundleId = await extractPlistEntry.bind(this)(app, 'CFBundleIdentifier');\n log.debug(`Getting bundle ID from app '${app}': '${bundleId}'`);\n return bundleId;\n}\n\nasync function extractBundleVersion (app) {\n return await extractPlistEntry.bind(this)(app, 'CFBundleVersion');\n}\n\nasync function fetchSupportedAppPlatforms (app) {\n try {\n const result = await extractPlistEntry.bind(this)(app, 'CFBundleSupportedPlatforms');\n if (!_.isArray(result)) {\n log.warn(`${path.basename(app)}': CFBundleSupportedPlatforms is not a valid list`);\n return [];\n }\n return result;\n } catch (err) {\n log.warn(\n `Cannot extract the list of supported platforms from '${path.basename(app)}': ${err.message}`\n );\n return [];\n }\n}\n\n/**\n * @typedef {Object} PlatformOpts\n *\n * @property {boolean} isSimulator - Whether the destination platform is a Simulator\n * @property {boolean} isTvOS - Whether the destination platform is a Simulator\n */\n\n/**\n * Verify whether the given application is compatible to the\n * platform where it is going to be installed and tested.\n *\n * @param {string} app - The actual path to the application bundle\n * @param {PlatformOpts} expectedPlatform\n * @throws {Error} If bundle architecture does not match the expected device architecture.\n */\nasync function verifyApplicationPlatform (app, expectedPlatform) {\n log.debug('Verifying application platform');\n\n const supportedPlatforms = await fetchSupportedAppPlatforms.bind(this)(app);\n log.debug(`CFBundleSupportedPlatforms: ${JSON.stringify(supportedPlatforms)}`);\n\n const {\n isSimulator,\n isTvOS,\n } = expectedPlatform;\n const prefix = isTvOS ? 'AppleTV' : 'iPhone';\n const suffix = isSimulator ? 'Simulator' : 'OS';\n const dstPlatform = `${prefix}${suffix}`;\n if (!supportedPlatforms.includes(dstPlatform)) {\n throw new Error(`${isSimulator ? 'Simulator' : 'Real device'} architecture is unsupported by the '${app}' application. ` +\n `Make sure the correct deployment target has been selected for its compilation in Xcode.`);\n }\n}\n\nasync function readResource (resourcePath) {\n const data = await plist.parsePlistFile(resourcePath);\n const result = {};\n for (const [key, value] of _.toPairs(data)) {\n result[key] = _.isString(value) ? value : JSON.stringify(value);\n }\n return result;\n}\n\nasync function parseLocalizableStrings (opts) {\n const {\n app,\n language = 'en',\n localizableStringsDir,\n stringFile,\n strictMode,\n } = opts;\n\n if (!app) {\n const message = `Strings extraction is not supported if 'app' capability is not set`;\n if (strictMode) {\n throw new Error(message);\n }\n log.info(message);\n return {};\n }\n\n let lprojRoot;\n for (const subfolder of [`${language}.lproj`, localizableStringsDir, '']) {\n lprojRoot = path.resolve(app, subfolder);\n if (await fs.exists(lprojRoot)) {\n break;\n }\n const message = `No '${lprojRoot}' resources folder has been found`;\n if (strictMode) {\n throw new Error(message);\n }\n log.debug(message);\n }\n log.info(`Will extract resource strings from '${lprojRoot}'`);\n\n const resourcePaths = [];\n if (stringFile) {\n const dstPath = path.resolve(lprojRoot, stringFile);\n if (await fs.exists(dstPath)) {\n resourcePaths.push(dstPath);\n } else {\n const message = `No '${dstPath}' resource file has been found for '${app}'`;\n if (strictMode) {\n throw new Error(message);\n }\n log.info(message);\n log.info(`Getting all the available strings from '${lprojRoot}'`);\n }\n }\n\n if (_.isEmpty(resourcePaths) && await fs.exists(lprojRoot)) {\n const resourceFiles = (await fs.readdir(lprojRoot))\n .filter((name) => _.some([STRINGS_RESOURCE, STRINGSDICT_RESOURCE], (x) => name.endsWith(x)))\n .map((name) => path.resolve(lprojRoot, name));\n resourcePaths.push(...resourceFiles);\n }\n log.info(`Got ${resourcePaths.length} resource file(s) in '${lprojRoot}'`);\n\n if (_.isEmpty(resourcePaths)) {\n return {};\n }\n\n const resultStrings = {};\n const toAbsolutePath = function (p) {\n return path.isAbsolute(p) ? p : path.resolve(process.cwd(), p);\n };\n for (const resourcePath of resourcePaths) {\n if (!util.isSubPath(toAbsolutePath(resourcePath), toAbsolutePath(app))) {\n // security precaution\n throw new Error(`'${resourcePath}' is expected to be located under '${app}'`);\n }\n try {\n const data = await readResource(resourcePath);\n log.debug(`Parsed ${_.keys(data).length} string(s) from '${resourcePath}'`);\n _.merge(resultStrings, data);\n } catch (e) {\n log.warn(`Cannot parse '${resourcePath}' resource. Original error: ${e.message}`);\n }\n }\n\n log.info(`Got ${_.keys(resultStrings).length} string(s) from '${lprojRoot}'`);\n return resultStrings;\n}\n\n/**\n * Check whether the given path on the file system points to the .app bundle root\n *\n * @param {string} appPath Possible .app bundle root\n * @returns {boolean} Whether the given path points to an .app bundle\n */\nasync function isAppBundle (appPath) {\n return _.endsWith(_.toLower(appPath), APP_EXT)\n && (await fs.stat(appPath)).isDirectory()\n && await fs.exists(path.join(appPath, 'Info.plist'));\n}\n\n/**\n * Extract the given archive and looks for items with given extensions in it\n *\n * @param {string} archivePath Full path to a .zip archive\n * @param {Array<string>} appExtensions List of matching item extensions\n * @returns {Promise<[string, string[]]>} Tuple, where the first element points to\n * a temporary folder root where the archive has been extracted and the second item\n * contains a list of relative paths to matched items\n */\nasync function findApps (archivePath, appExtensions) {\n const useSystemUnzipEnv = process.env.APPIUM_PREFER_SYSTEM_UNZIP;\n const useSystemUnzip = _.isEmpty(useSystemUnzipEnv)\n || !['0', 'false'].includes(_.toLower(useSystemUnzipEnv));\n const tmpRoot = await tempDir.openDir();\n await zip.extractAllTo(archivePath, tmpRoot, {useSystemUnzip});\n const globPattern = `**/*.+(${appExtensions.map((ext) => ext.replace(/^\\./, '')).join('|')})`;\n const sortedBundleItems = (await fs.glob(globPattern, {\n cwd: tmpRoot,\n strict: false,\n })).sort((a, b) => a.split(path.sep).length - b.split(path.sep).length);\n return [tmpRoot, sortedBundleItems];\n}\n\n/**\n * Moves the application bundle to a newly created temporary folder\n *\n * @param {string} appRoot Full path to the .app bundle\n * @returns {Promise<string>} The new path to the app bundle.\n * The name of the app bundle remains though\n */\nasync function isolateAppBundle (appRoot) {\n const tmpRoot = await tempDir.openDir();\n const dstRoot = path.join(tmpRoot, path.basename(appRoot));\n await fs.mv(appRoot, dstRoot, {mkdirp: true});\n return dstRoot;\n}\n\nexport {\n extractBundleId, verifyApplicationPlatform, parseLocalizableStrings,\n SAFARI_BUNDLE_ID, fetchSupportedAppPlatforms, APP_EXT, IPA_EXT,\n isAppBundle, findApps, isolateAppBundle, extractBundleVersion,\n};\n"],"mappings":"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"}
@@ -333,9 +333,12 @@ const desiredCapConstraints = {
333
333
  appInstallStrategy: {
334
334
  isString: true,
335
335
  inclusionCaseInsensitive: ['serial', 'parallel', 'ios-deploy']
336
+ },
337
+ enforceAppInstall: {
338
+ isBoolean: true
336
339
  }
337
340
  };
338
341
  exports.desiredCapConstraints = desiredCapConstraints;
339
342
  var _default = desiredCapConstraints;
340
343
  exports.default = _default;
341
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQTEFURk9STV9OQU1FX0lPUyIsImV4cG9ydHMiLCJQTEFURk9STV9OQU1FX1RWT1MiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJwbGF0Zm9ybU5hbWUiLCJwcmVzZW5jZSIsImlzU3RyaW5nIiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwiYnJvd3Nlck5hbWUiLCJhcHAiLCJjYWxlbmRhckZvcm1hdCIsImJ1bmRsZUlkIiwidWRpZCIsImF1dG9BY2NlcHRBbGVydHMiLCJpc0Jvb2xlYW4iLCJhdXRvRGlzbWlzc0FsZXJ0cyIsIm5hdGl2ZVdlYlRhcCIsInNhZmFyaUluaXRpYWxVcmwiLCJzYWZhcmlBbGxvd1BvcHVwcyIsInNhZmFyaUlnbm9yZUZyYXVkV2FybmluZyIsInNhZmFyaU9wZW5MaW5rc0luQmFja2dyb3VuZCIsInNhZmFyaVNob3dGdWxsUmVzcG9uc2UiLCJrZWVwS2V5Q2hhaW5zIiwicmVzZXRMb2NhdGlvblNlcnZpY2UiLCJsb2NhbGl6YWJsZVN0cmluZ3NEaXIiLCJwcm9jZXNzQXJndW1lbnRzIiwic2hvd0lPU0xvZyIsIndlYnZpZXdDb25uZWN0UmV0cmllcyIsImlzTnVtYmVyIiwiY2xlYXJTeXN0ZW1GaWxlcyIsImN1c3RvbVNTTENlcnQiLCJ3ZWJraXRSZXNwb25zZVRpbWVvdXQiLCJyZW1vdGVEZWJ1Z1Byb3h5IiwiZW5hYmxlUGVyZm9ybWFuY2VMb2dnaW5nIiwiZW5hYmxlQXN5bmNFeGVjdXRlRnJvbUh0dHBzIiwiZnVsbENvbnRleHRMaXN0IiwiaWdub3JlQWJvdXRCbGFua1VybCIsInNraXBMb2dDYXB0dXJlIiwiZGV2aWNlTmFtZSIsInNob3dYY29kZUxvZyIsIndkYUxvY2FsUG9ydCIsIndkYUJhc2VVcmwiLCJpb3NJbnN0YWxsUGF1c2UiLCJ4Y29kZUNvbmZpZ0ZpbGUiLCJ4Y29kZU9yZ0lkIiwieGNvZGVTaWduaW5nSWQiLCJrZXljaGFpblBhdGgiLCJrZXljaGFpblBhc3N3b3JkIiwiYm9vdHN0cmFwUGF0aCIsImFnZW50UGF0aCIsInNjYWxlRmFjdG9yIiwidXNlUHJlYnVpbHRXREEiLCJ3ZWJEcml2ZXJBZ2VudFVybCIsImRlcml2ZWREYXRhUGF0aCIsImxhdW5jaFdpdGhJREIiLCJ1c2VOZXdXREEiLCJ3ZGFMYXVuY2hUaW1lb3V0Iiwid2RhQ29ubmVjdGlvblRpbWVvdXQiLCJ1cGRhdGVkV0RBQnVuZGxlSWQiLCJyZXNldE9uU2Vzc2lvblN0YXJ0T25seSIsImNvbW1hbmRUaW1lb3V0cyIsIndkYVN0YXJ0dXBSZXRyaWVzIiwid2RhU3RhcnR1cFJldHJ5SW50ZXJ2YWwiLCJwcmVidWlsZFdEQSIsImNvbm5lY3RIYXJkd2FyZUtleWJvYXJkIiwiZm9yY2VUdXJuT25Tb2Z0d2FyZUtleWJvYXJkU2ltdWxhdG9yIiwic2ltdWxhdG9yUGFzdGVib2FyZEF1dG9tYXRpY1N5bmMiLCJzaW11bGF0b3JEZXZpY2VzU2V0UGF0aCIsImNhbGVuZGFyQWNjZXNzQXV0aG9yaXplZCIsInVzZVNpbXBsZUJ1aWxkVGVzdCIsIndhaXRGb3JRdWllc2NlbmNlIiwibWF4VHlwaW5nRnJlcXVlbmN5IiwibmF0aXZlVHlwaW5nIiwic2ltcGxlSXNWaXNpYmxlQ2hlY2siLCJzaG91bGRVc2VTaW5nbGV0b25UZXN0TWFuYWdlciIsImlzSGVhZGxlc3MiLCJ1c2VYY3Rlc3RydW5GaWxlIiwiYWJzb2x1dGVXZWJMb2NhdGlvbnMiLCJzaW11bGF0b3JXaW5kb3dDZW50ZXIiLCJzaW11bGF0b3JTdGFydHVwVGltZW91dCIsInNpbXVsYXRvclRyYWNlUG9pbnRlciIsInVzZUpTT05Tb3VyY2UiLCJlbmZvcmNlRnJlc2hTaW11bGF0b3JDcmVhdGlvbiIsInNodXRkb3duT3RoZXJTaW11bGF0b3JzIiwia2V5Y2hhaW5zRXhjbHVkZVBhdHRlcm5zIiwic2hvd1NhZmFyaUNvbnNvbGVMb2ciLCJzaG93U2FmYXJpTmV0d29ya0xvZyIsInNhZmFyaUdhcmJhZ2VDb2xsZWN0Iiwic2FmYXJpR2xvYmFsUHJlZmVyZW5jZXMiLCJpc09iamVjdCIsInNhZmFyaUxvZ0FsbENvbW11bmljYXRpb24iLCJzYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsInNhZmFyaVNvY2tldENodW5rU2l6ZSIsIm1qcGVnU2VydmVyUG9ydCIsInJlZHVjZU1vdGlvbiIsInJlZHVjZVRyYW5zcGFyZW5jeSIsIm1qcGVnU2NyZWVuc2hvdFVybCIsInBlcm1pc3Npb25zIiwic2NyZWVuc2hvdFF1YWxpdHkiLCJ3ZGFFdmVudGxvb3BJZGxlRGVsYXkiLCJvdGhlckFwcHMiLCJpbmNsdWRlU2FmYXJpSW5XZWJ2aWV3cyIsImFkZGl0aW9uYWxXZWJ2aWV3QnVuZGxlSWRzIiwid2Vidmlld0Nvbm5lY3RUaW1lb3V0IiwiaW9zU2ltdWxhdG9yTG9nc1ByZWRpY2F0ZSIsImFwcFB1c2hUaW1lb3V0IiwibmF0aXZlV2ViVGFwU3RyaWN0Iiwic2FmYXJpV2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgiLCJhbGxvd1Byb3Zpc2lvbmluZ0RldmljZVJlZ2lzdHJhdGlvbiIsIndhaXRGb3JJZGxlVGltZW91dCIsInJlc3VsdEJ1bmRsZVBhdGgiLCJyZXN1bHRCdW5kbGVWZXJzaW9uIiwic2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzIiwiaW5jbHVkZURldmljZUNhcHNUb1Nlc3Npb25JbmZvIiwiZGlzYWJsZUF1dG9tYXRpY1NjcmVlbnNob3RzIiwic2hvdWxkVGVybWluYXRlQXBwIiwiZm9yY2VBcHBMYXVuY2giLCJ1c2VOYXRpdmVDYWNoaW5nU3RyYXRlZ3kiLCJhcHBJbnN0YWxsU3RyYXRlZ3kiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9saWIvZGVzaXJlZC1jYXBzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZXNlIHBsYXRmb3JtIG5hbWVzIHNob3VsZCBiZSB2YWxpZCBpbiBzaW11bGF0b3IgbmFtZVxuY29uc3QgUExBVEZPUk1fTkFNRV9JT1MgPSAnaU9TJztcbmNvbnN0IFBMQVRGT1JNX05BTUVfVFZPUyA9ICd0dk9TJztcblxuY29uc3QgZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICBwbGF0Zm9ybU5hbWU6IHsgLy8gb3ZlcnJpZGVcbiAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICBpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmU6IFtQTEFURk9STV9OQU1FX0lPUywgUExBVEZPUk1fTkFNRV9UVk9TXVxuICB9LFxuICBicm93c2VyTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFwcDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGNhbGVuZGFyRm9ybWF0OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYnVuZGxlSWQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB1ZGlkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXV0b0FjY2VwdEFsZXJ0czoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhdXRvRGlzbWlzc0FsZXJ0czoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBuYXRpdmVXZWJUYXA6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpSW5pdGlhbFVybDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHNhZmFyaUFsbG93UG9wdXBzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNhZmFyaUlnbm9yZUZyYXVkV2FybmluZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzYWZhcmlPcGVuTGlua3NJbkJhY2tncm91bmQ6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpU2hvd0Z1bGxSZXNwb25zZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBrZWVwS2V5Q2hhaW5zOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHJlc2V0TG9jYXRpb25TZXJ2aWNlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGxvY2FsaXphYmxlU3RyaW5nc0Rpcjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHByb2Nlc3NBcmd1bWVudHM6IHtcbiAgICAvLyByZWNvZ25pemUgdGhlIGNhcCxcbiAgICAvLyBidXQgdmFsaWRhdGUgaW4gdGhlIGRyaXZlciN2YWxpZGF0ZURlc2lyZWRDYXBzIG1ldGhvZFxuICB9LFxuICBzaG93SU9TTG9nOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHdlYnZpZXdDb25uZWN0UmV0cmllczoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGNsZWFyU3lzdGVtRmlsZXM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgY3VzdG9tU1NMQ2VydDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHdlYmtpdFJlc3BvbnNlVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHJlbW90ZURlYnVnUHJveHk6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBlbmFibGVQZXJmb3JtYW5jZUxvZ2dpbmc6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZW5hYmxlQXN5bmNFeGVjdXRlRnJvbUh0dHBzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGZ1bGxDb250ZXh0TGlzdDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBpZ25vcmVBYm91dEJsYW5rVXJsOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNraXBMb2dDYXB0dXJlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGRldmljZU5hbWU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBzaG93WGNvZGVMb2c6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgd2RhTG9jYWxQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgd2RhQmFzZVVybDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGlvc0luc3RhbGxQYXVzZToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHhjb2RlQ29uZmlnRmlsZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHhjb2RlT3JnSWQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB4Y29kZVNpZ25pbmdJZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleWNoYWluUGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleWNoYWluUGFzc3dvcmQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBib290c3RyYXBQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYWdlbnRQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2NhbGVGYWN0b3I6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB1c2VQcmVidWlsdFdEQToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB3ZWJEcml2ZXJBZ2VudFVybDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGRlcml2ZWREYXRhUGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGxhdW5jaFdpdGhJREI6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdXNlTmV3V0RBOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHdkYUxhdW5jaFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB3ZGFDb25uZWN0aW9uVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHVwZGF0ZWRXREFCdW5kbGVJZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHJlc2V0T25TZXNzaW9uU3RhcnRPbmx5OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNvbW1hbmRUaW1lb3V0czoge1xuICAgIC8vIHJlY29nbml6ZSB0aGUgY2FwLFxuICAgIC8vIGJ1dCB2YWxpZGF0ZSBpbiB0aGUgZHJpdmVyI3ZhbGlkYXRlRGVzaXJlZENhcHMgbWV0aG9kXG4gIH0sXG4gIHdkYVN0YXJ0dXBSZXRyaWVzOiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgd2RhU3RhcnR1cFJldHJ5SW50ZXJ2YWw6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBwcmVidWlsZFdEQToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBjb25uZWN0SGFyZHdhcmVLZXlib2FyZDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBmb3JjZVR1cm5PblNvZnR3YXJlS2V5Ym9hcmRTaW11bGF0b3I6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2ltdWxhdG9yUGFzdGVib2FyZEF1dG9tYXRpY1N5bmM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBzaW11bGF0b3JEZXZpY2VzU2V0UGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGNhbGVuZGFyQWNjZXNzQXV0aG9yaXplZDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1c2VTaW1wbGVCdWlsZFRlc3Q6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgd2FpdEZvclF1aWVzY2VuY2U6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgbWF4VHlwaW5nRnJlcXVlbmN5OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgbmF0aXZlVHlwaW5nOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNpbXBsZUlzVmlzaWJsZUNoZWNrOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNob3VsZFVzZVNpbmdsZXRvblRlc3RNYW5hZ2VyOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGlzSGVhZGxlc3M6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdXNlWGN0ZXN0cnVuRmlsZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhYnNvbHV0ZVdlYkxvY2F0aW9uczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaW11bGF0b3JXaW5kb3dDZW50ZXI6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBzaW11bGF0b3JTdGFydHVwVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHNpbXVsYXRvclRyYWNlUG9pbnRlcjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1c2VKU09OU291cmNlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGVuZm9yY2VGcmVzaFNpbXVsYXRvckNyZWF0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNodXRkb3duT3RoZXJTaW11bGF0b3JzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGtleWNoYWluc0V4Y2x1ZGVQYXR0ZXJuczoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHNob3dTYWZhcmlDb25zb2xlTG9nOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNob3dTYWZhcmlOZXR3b3JrTG9nOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNhZmFyaUdhcmJhZ2VDb2xsZWN0OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNhZmFyaUdsb2JhbFByZWZlcmVuY2VzOiB7XG4gICAgaXNPYmplY3Q6IHRydWVcbiAgfSxcbiAgc2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzYWZhcmlTb2NrZXRDaHVua1NpemU6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBtanBlZ1NlcnZlclBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICByZWR1Y2VNb3Rpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgcmVkdWNlVHJhbnNwYXJlbmN5OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIG1qcGVnU2NyZWVuc2hvdFVybDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHBlcm1pc3Npb25zOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2NyZWVuc2hvdFF1YWxpdHk6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB3ZGFFdmVudGxvb3BJZGxlRGVsYXk6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBvdGhlckFwcHM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBpbmNsdWRlU2FmYXJpSW5XZWJ2aWV3czoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkczoge1xuICAgIC8vIHJlY29nbml6ZSB0aGUgY2FwYWJpbGl0eVxuICAgIC8vIGJ1dCB2YWxpZGF0ZSBpbiBkcml2ZXIjdmFsaWRhdGVEZXNpcmVkQ2Fwc1xuICB9LFxuICB3ZWJ2aWV3Q29ubmVjdFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBpb3NTaW11bGF0b3JMb2dzUHJlZGljYXRlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwUHVzaFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBuYXRpdmVXZWJUYXBTdHJpY3Q6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpV2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGg6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhbGxvd1Byb3Zpc2lvbmluZ0RldmljZVJlZ2lzdHJhdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB3YWl0Rm9ySWRsZVRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICByZXN1bHRCdW5kbGVQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgcmVzdWx0QnVuZGxlVmVyc2lvbjoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lczoge1xuICAgIGlzU3RyaW5nOiB0cnVlLFxuICB9LFxuICBpbmNsdWRlRGV2aWNlQ2Fwc1RvU2Vzc2lvbkluZm86IHtcbiAgICBpc0Jvb2xlYW46IHRydWUsXG4gIH0sXG4gIGRpc2FibGVBdXRvbWF0aWNTY3JlZW5zaG90czoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZSxcbiAgfSxcbiAgc2hvdWxkVGVybWluYXRlQXBwOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlLFxuICB9LFxuICBmb3JjZUFwcExhdW5jaDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZSxcbiAgfSxcbiAgdXNlTmF0aXZlQ2FjaGluZ1N0cmF0ZWd5OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlLFxuICB9LFxuICBhcHBJbnN0YWxsU3RyYXRlZ3k6IHtcbiAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICBpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmU6IFsnc2VyaWFsJywgJ3BhcmFsbGVsJywgJ2lvcy1kZXBsb3knXVxuICB9XG59O1xuXG5leHBvcnQgeyBkZXNpcmVkQ2FwQ29uc3RyYWludHMsIFBMQVRGT1JNX05BTUVfSU9TLCBQTEFURk9STV9OQU1FX1RWT1MgfTtcbmV4cG9ydCBkZWZhdWx0IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBLE1BQU1BLGlCQUFpQixHQUFHLEtBQUs7QUFBQ0MsT0FBQSxDQUFBRCxpQkFBQSxHQUFBQSxpQkFBQTtBQUNoQyxNQUFNRSxrQkFBa0IsR0FBRyxNQUFNO0FBQUNELE9BQUEsQ0FBQUMsa0JBQUEsR0FBQUEsa0JBQUE7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
344
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQTEFURk9STV9OQU1FX0lPUyIsImV4cG9ydHMiLCJQTEFURk9STV9OQU1FX1RWT1MiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJwbGF0Zm9ybU5hbWUiLCJwcmVzZW5jZSIsImlzU3RyaW5nIiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwiYnJvd3Nlck5hbWUiLCJhcHAiLCJjYWxlbmRhckZvcm1hdCIsImJ1bmRsZUlkIiwidWRpZCIsImF1dG9BY2NlcHRBbGVydHMiLCJpc0Jvb2xlYW4iLCJhdXRvRGlzbWlzc0FsZXJ0cyIsIm5hdGl2ZVdlYlRhcCIsInNhZmFyaUluaXRpYWxVcmwiLCJzYWZhcmlBbGxvd1BvcHVwcyIsInNhZmFyaUlnbm9yZUZyYXVkV2FybmluZyIsInNhZmFyaU9wZW5MaW5rc0luQmFja2dyb3VuZCIsInNhZmFyaVNob3dGdWxsUmVzcG9uc2UiLCJrZWVwS2V5Q2hhaW5zIiwicmVzZXRMb2NhdGlvblNlcnZpY2UiLCJsb2NhbGl6YWJsZVN0cmluZ3NEaXIiLCJwcm9jZXNzQXJndW1lbnRzIiwic2hvd0lPU0xvZyIsIndlYnZpZXdDb25uZWN0UmV0cmllcyIsImlzTnVtYmVyIiwiY2xlYXJTeXN0ZW1GaWxlcyIsImN1c3RvbVNTTENlcnQiLCJ3ZWJraXRSZXNwb25zZVRpbWVvdXQiLCJyZW1vdGVEZWJ1Z1Byb3h5IiwiZW5hYmxlUGVyZm9ybWFuY2VMb2dnaW5nIiwiZW5hYmxlQXN5bmNFeGVjdXRlRnJvbUh0dHBzIiwiZnVsbENvbnRleHRMaXN0IiwiaWdub3JlQWJvdXRCbGFua1VybCIsInNraXBMb2dDYXB0dXJlIiwiZGV2aWNlTmFtZSIsInNob3dYY29kZUxvZyIsIndkYUxvY2FsUG9ydCIsIndkYUJhc2VVcmwiLCJpb3NJbnN0YWxsUGF1c2UiLCJ4Y29kZUNvbmZpZ0ZpbGUiLCJ4Y29kZU9yZ0lkIiwieGNvZGVTaWduaW5nSWQiLCJrZXljaGFpblBhdGgiLCJrZXljaGFpblBhc3N3b3JkIiwiYm9vdHN0cmFwUGF0aCIsImFnZW50UGF0aCIsInNjYWxlRmFjdG9yIiwidXNlUHJlYnVpbHRXREEiLCJ3ZWJEcml2ZXJBZ2VudFVybCIsImRlcml2ZWREYXRhUGF0aCIsImxhdW5jaFdpdGhJREIiLCJ1c2VOZXdXREEiLCJ3ZGFMYXVuY2hUaW1lb3V0Iiwid2RhQ29ubmVjdGlvblRpbWVvdXQiLCJ1cGRhdGVkV0RBQnVuZGxlSWQiLCJyZXNldE9uU2Vzc2lvblN0YXJ0T25seSIsImNvbW1hbmRUaW1lb3V0cyIsIndkYVN0YXJ0dXBSZXRyaWVzIiwid2RhU3RhcnR1cFJldHJ5SW50ZXJ2YWwiLCJwcmVidWlsZFdEQSIsImNvbm5lY3RIYXJkd2FyZUtleWJvYXJkIiwiZm9yY2VUdXJuT25Tb2Z0d2FyZUtleWJvYXJkU2ltdWxhdG9yIiwic2ltdWxhdG9yUGFzdGVib2FyZEF1dG9tYXRpY1N5bmMiLCJzaW11bGF0b3JEZXZpY2VzU2V0UGF0aCIsImNhbGVuZGFyQWNjZXNzQXV0aG9yaXplZCIsInVzZVNpbXBsZUJ1aWxkVGVzdCIsIndhaXRGb3JRdWllc2NlbmNlIiwibWF4VHlwaW5nRnJlcXVlbmN5IiwibmF0aXZlVHlwaW5nIiwic2ltcGxlSXNWaXNpYmxlQ2hlY2siLCJzaG91bGRVc2VTaW5nbGV0b25UZXN0TWFuYWdlciIsImlzSGVhZGxlc3MiLCJ1c2VYY3Rlc3RydW5GaWxlIiwiYWJzb2x1dGVXZWJMb2NhdGlvbnMiLCJzaW11bGF0b3JXaW5kb3dDZW50ZXIiLCJzaW11bGF0b3JTdGFydHVwVGltZW91dCIsInNpbXVsYXRvclRyYWNlUG9pbnRlciIsInVzZUpTT05Tb3VyY2UiLCJlbmZvcmNlRnJlc2hTaW11bGF0b3JDcmVhdGlvbiIsInNodXRkb3duT3RoZXJTaW11bGF0b3JzIiwia2V5Y2hhaW5zRXhjbHVkZVBhdHRlcm5zIiwic2hvd1NhZmFyaUNvbnNvbGVMb2ciLCJzaG93U2FmYXJpTmV0d29ya0xvZyIsInNhZmFyaUdhcmJhZ2VDb2xsZWN0Iiwic2FmYXJpR2xvYmFsUHJlZmVyZW5jZXMiLCJpc09iamVjdCIsInNhZmFyaUxvZ0FsbENvbW11bmljYXRpb24iLCJzYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsInNhZmFyaVNvY2tldENodW5rU2l6ZSIsIm1qcGVnU2VydmVyUG9ydCIsInJlZHVjZU1vdGlvbiIsInJlZHVjZVRyYW5zcGFyZW5jeSIsIm1qcGVnU2NyZWVuc2hvdFVybCIsInBlcm1pc3Npb25zIiwic2NyZWVuc2hvdFF1YWxpdHkiLCJ3ZGFFdmVudGxvb3BJZGxlRGVsYXkiLCJvdGhlckFwcHMiLCJpbmNsdWRlU2FmYXJpSW5XZWJ2aWV3cyIsImFkZGl0aW9uYWxXZWJ2aWV3QnVuZGxlSWRzIiwid2Vidmlld0Nvbm5lY3RUaW1lb3V0IiwiaW9zU2ltdWxhdG9yTG9nc1ByZWRpY2F0ZSIsImFwcFB1c2hUaW1lb3V0IiwibmF0aXZlV2ViVGFwU3RyaWN0Iiwic2FmYXJpV2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgiLCJhbGxvd1Byb3Zpc2lvbmluZ0RldmljZVJlZ2lzdHJhdGlvbiIsIndhaXRGb3JJZGxlVGltZW91dCIsInJlc3VsdEJ1bmRsZVBhdGgiLCJyZXN1bHRCdW5kbGVWZXJzaW9uIiwic2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzIiwiaW5jbHVkZURldmljZUNhcHNUb1Nlc3Npb25JbmZvIiwiZGlzYWJsZUF1dG9tYXRpY1NjcmVlbnNob3RzIiwic2hvdWxkVGVybWluYXRlQXBwIiwiZm9yY2VBcHBMYXVuY2giLCJ1c2VOYXRpdmVDYWNoaW5nU3RyYXRlZ3kiLCJhcHBJbnN0YWxsU3RyYXRlZ3kiLCJlbmZvcmNlQXBwSW5zdGFsbCIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9kZXNpcmVkLWNhcHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlc2UgcGxhdGZvcm0gbmFtZXMgc2hvdWxkIGJlIHZhbGlkIGluIHNpbXVsYXRvciBuYW1lXG5jb25zdCBQTEFURk9STV9OQU1FX0lPUyA9ICdpT1MnO1xuY29uc3QgUExBVEZPUk1fTkFNRV9UVk9TID0gJ3R2T1MnO1xuXG5jb25zdCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gIHBsYXRmb3JtTmFtZTogeyAvLyBvdmVycmlkZVxuICAgIHByZXNlbmNlOiB0cnVlLFxuICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZTogW1BMQVRGT1JNX05BTUVfSU9TLCBQTEFURk9STV9OQU1FX1RWT1NdXG4gIH0sXG4gIGJyb3dzZXJOYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgY2FsZW5kYXJGb3JtYXQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBidW5kbGVJZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHVkaWQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhdXRvQWNjZXB0QWxlcnRzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGF1dG9EaXNtaXNzQWxlcnRzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIG5hdGl2ZVdlYlRhcDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzYWZhcmlJbml0aWFsVXJsOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2FmYXJpQWxsb3dQb3B1cHM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpSWdub3JlRnJhdWRXYXJuaW5nOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNhZmFyaU9wZW5MaW5rc0luQmFja2dyb3VuZDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzYWZhcmlTaG93RnVsbFJlc3BvbnNlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGtlZXBLZXlDaGFpbnM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgcmVzZXRMb2NhdGlvblNlcnZpY2U6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgbG9jYWxpemFibGVTdHJpbmdzRGlyOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgcHJvY2Vzc0FyZ3VtZW50czoge1xuICAgIC8vIHJlY29nbml6ZSB0aGUgY2FwLFxuICAgIC8vIGJ1dCB2YWxpZGF0ZSBpbiB0aGUgZHJpdmVyI3ZhbGlkYXRlRGVzaXJlZENhcHMgbWV0aG9kXG4gIH0sXG4gIHNob3dJT1NMb2c6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgd2Vidmlld0Nvbm5lY3RSZXRyaWVzOiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgY2xlYXJTeXN0ZW1GaWxlczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBjdXN0b21TU0xDZXJ0OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgd2Via2l0UmVzcG9uc2VUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgcmVtb3RlRGVidWdQcm94eToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBlbmFibGVBc3luY0V4ZWN1dGVGcm9tSHR0cHM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZnVsbENvbnRleHRMaXN0OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGlnbm9yZUFib3V0QmxhbmtVcmw6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2tpcExvZ0NhcHR1cmU6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZGV2aWNlTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHNob3dYY29kZUxvZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB3ZGFMb2NhbFBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB3ZGFCYXNlVXJsOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgaW9zSW5zdGFsbFBhdXNlOiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgeGNvZGVDb25maWdGaWxlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgeGNvZGVPcmdJZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHhjb2RlU2lnbmluZ0lkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAga2V5Y2hhaW5QYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAga2V5Y2hhaW5QYXNzd29yZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGJvb3RzdHJhcFBhdGg6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhZ2VudFBhdGg6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBzY2FsZUZhY3Rvcjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHVzZVByZWJ1aWx0V0RBOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHdlYkRyaXZlckFnZW50VXJsOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgZGVyaXZlZERhdGFQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbGF1bmNoV2l0aElEQjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1c2VOZXdXREE6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgd2RhTGF1bmNoVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHdkYUNvbm5lY3Rpb25UaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgdXBkYXRlZFdEQUJ1bmRsZUlkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgcmVzZXRPblNlc3Npb25TdGFydE9ubHk6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgY29tbWFuZFRpbWVvdXRzOiB7XG4gICAgLy8gcmVjb2duaXplIHRoZSBjYXAsXG4gICAgLy8gYnV0IHZhbGlkYXRlIGluIHRoZSBkcml2ZXIjdmFsaWRhdGVEZXNpcmVkQ2FwcyBtZXRob2RcbiAgfSxcbiAgd2RhU3RhcnR1cFJldHJpZXM6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB3ZGFTdGFydHVwUmV0cnlJbnRlcnZhbDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHByZWJ1aWxkV0RBOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNvbm5lY3RIYXJkd2FyZUtleWJvYXJkOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGZvcmNlVHVybk9uU29mdHdhcmVLZXlib2FyZFNpbXVsYXRvcjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaW11bGF0b3JQYXN0ZWJvYXJkQXV0b21hdGljU3luYzoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHNpbXVsYXRvckRldmljZXNTZXRQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgY2FsZW5kYXJBY2Nlc3NBdXRob3JpemVkOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVzZVNpbXBsZUJ1aWxkVGVzdDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB3YWl0Rm9yUXVpZXNjZW5jZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBtYXhUeXBpbmdGcmVxdWVuY3k6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBuYXRpdmVUeXBpbmc6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2ltcGxlSXNWaXNpYmxlQ2hlY2s6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2hvdWxkVXNlU2luZ2xldG9uVGVzdE1hbmFnZXI6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgaXNIZWFkbGVzczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1c2VYY3Rlc3RydW5GaWxlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGFic29sdXRlV2ViTG9jYXRpb25zOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNpbXVsYXRvcldpbmRvd0NlbnRlcjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHNpbXVsYXRvclN0YXJ0dXBUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgc2ltdWxhdG9yVHJhY2VQb2ludGVyOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVzZUpTT05Tb3VyY2U6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZW5mb3JjZUZyZXNoU2ltdWxhdG9yQ3JlYXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2h1dGRvd25PdGhlclNpbXVsYXRvcnM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAga2V5Y2hhaW5zRXhjbHVkZVBhdHRlcm5zOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2hvd1NhZmFyaUNvbnNvbGVMb2c6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2hvd1NhZmFyaU5ldHdvcmtMb2c6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpR2FyYmFnZUNvbGxlY3Q6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpR2xvYmFsUHJlZmVyZW5jZXM6IHtcbiAgICBpc09iamVjdDogdHJ1ZVxuICB9LFxuICBzYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNhZmFyaUxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNhZmFyaVNvY2tldENodW5rU2l6ZToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG1qcGVnU2VydmVyUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHJlZHVjZU1vdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICByZWR1Y2VUcmFuc3BhcmVuY3k6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgbWpwZWdTY3JlZW5zaG90VXJsOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgcGVybWlzc2lvbnM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBzY3JlZW5zaG90UXVhbGl0eToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHdkYUV2ZW50bG9vcElkbGVEZWxheToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG90aGVyQXBwczoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGluY2x1ZGVTYWZhcmlJbldlYnZpZXdzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGFkZGl0aW9uYWxXZWJ2aWV3QnVuZGxlSWRzOiB7XG4gICAgLy8gcmVjb2duaXplIHRoZSBjYXBhYmlsaXR5XG4gICAgLy8gYnV0IHZhbGlkYXRlIGluIGRyaXZlciN2YWxpZGF0ZURlc2lyZWRDYXBzXG4gIH0sXG4gIHdlYnZpZXdDb25uZWN0VGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGlvc1NpbXVsYXRvckxvZ3NQcmVkaWNhdGU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhcHBQdXNoVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG5hdGl2ZVdlYlRhcFN0cmljdDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzYWZhcmlXZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGFsbG93UHJvdmlzaW9uaW5nRGV2aWNlUmVnaXN0cmF0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHdhaXRGb3JJZGxlVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHJlc3VsdEJ1bmRsZVBhdGg6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICByZXN1bHRCdW5kbGVWZXJzaW9uOiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgc2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzOiB7XG4gICAgaXNTdHJpbmc6IHRydWUsXG4gIH0sXG4gIGluY2x1ZGVEZXZpY2VDYXBzVG9TZXNzaW9uSW5mbzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZSxcbiAgfSxcbiAgZGlzYWJsZUF1dG9tYXRpY1NjcmVlbnNob3RzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlLFxuICB9LFxuICBzaG91bGRUZXJtaW5hdGVBcHA6IHtcbiAgICBpc0Jvb2xlYW46IHRydWUsXG4gIH0sXG4gIGZvcmNlQXBwTGF1bmNoOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlLFxuICB9LFxuICB1c2VOYXRpdmVDYWNoaW5nU3RyYXRlZ3k6IHtcbiAgICBpc0Jvb2xlYW46IHRydWUsXG4gIH0sXG4gIGFwcEluc3RhbGxTdHJhdGVneToge1xuICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZTogWydzZXJpYWwnLCAncGFyYWxsZWwnLCAnaW9zLWRlcGxveSddXG4gIH0sXG4gIGVuZm9yY2VBcHBJbnN0YWxsOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlLFxuICB9XG59O1xuXG5leHBvcnQgeyBkZXNpcmVkQ2FwQ29uc3RyYWludHMsIFBMQVRGT1JNX05BTUVfSU9TLCBQTEFURk9STV9OQU1FX1RWT1MgfTtcbmV4cG9ydCBkZWZhdWx0IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBLE1BQU1BLGlCQUFpQixHQUFHLEtBQUs7QUFBQ0MsT0FBQSxDQUFBRCxpQkFBQSxHQUFB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
@@ -1 +1 @@
1
- {"version":3,"file":"desired-caps.js","names":["PLATFORM_NAME_IOS","exports","PLATFORM_NAME_TVOS","desiredCapConstraints","platformName","presence","isString","inclusionCaseInsensitive","browserName","app","calendarFormat","bundleId","udid","autoAcceptAlerts","isBoolean","autoDismissAlerts","nativeWebTap","safariInitialUrl","safariAllowPopups","safariIgnoreFraudWarning","safariOpenLinksInBackground","safariShowFullResponse","keepKeyChains","resetLocationService","localizableStringsDir","processArguments","showIOSLog","webviewConnectRetries","isNumber","clearSystemFiles","customSSLCert","webkitResponseTimeout","remoteDebugProxy","enablePerformanceLogging","enableAsyncExecuteFromHttps","fullContextList","ignoreAboutBlankUrl","skipLogCapture","deviceName","showXcodeLog","wdaLocalPort","wdaBaseUrl","iosInstallPause","xcodeConfigFile","xcodeOrgId","xcodeSigningId","keychainPath","keychainPassword","bootstrapPath","agentPath","scaleFactor","usePrebuiltWDA","webDriverAgentUrl","derivedDataPath","launchWithIDB","useNewWDA","wdaLaunchTimeout","wdaConnectionTimeout","updatedWDABundleId","resetOnSessionStartOnly","commandTimeouts","wdaStartupRetries","wdaStartupRetryInterval","prebuildWDA","connectHardwareKeyboard","forceTurnOnSoftwareKeyboardSimulator","simulatorPasteboardAutomaticSync","simulatorDevicesSetPath","calendarAccessAuthorized","useSimpleBuildTest","waitForQuiescence","maxTypingFrequency","nativeTyping","simpleIsVisibleCheck","shouldUseSingletonTestManager","isHeadless","useXctestrunFile","absoluteWebLocations","simulatorWindowCenter","simulatorStartupTimeout","simulatorTracePointer","useJSONSource","enforceFreshSimulatorCreation","shutdownOtherSimulators","keychainsExcludePatterns","showSafariConsoleLog","showSafariNetworkLog","safariGarbageCollect","safariGlobalPreferences","isObject","safariLogAllCommunication","safariLogAllCommunicationHexDump","safariSocketChunkSize","mjpegServerPort","reduceMotion","reduceTransparency","mjpegScreenshotUrl","permissions","screenshotQuality","wdaEventloopIdleDelay","otherApps","includeSafariInWebviews","additionalWebviewBundleIds","webviewConnectTimeout","iosSimulatorLogsPredicate","appPushTimeout","nativeWebTapStrict","safariWebInspectorMaxFrameLength","allowProvisioningDeviceRegistration","waitForIdleTimeout","resultBundlePath","resultBundleVersion","safariIgnoreWebHostnames","includeDeviceCapsToSessionInfo","disableAutomaticScreenshots","shouldTerminateApp","forceAppLaunch","useNativeCachingStrategy","appInstallStrategy","_default","default"],"sources":["../../lib/desired-caps.js"],"sourcesContent":["// These platform names should be valid in simulator name\nconst PLATFORM_NAME_IOS = 'iOS';\nconst PLATFORM_NAME_TVOS = 'tvOS';\n\nconst desiredCapConstraints = {\n platformName: { // override\n presence: true,\n isString: true,\n inclusionCaseInsensitive: [PLATFORM_NAME_IOS, PLATFORM_NAME_TVOS]\n },\n browserName: {\n isString: true\n },\n app: {\n isString: true\n },\n calendarFormat: {\n isString: true\n },\n bundleId: {\n isString: true\n },\n udid: {\n isString: true\n },\n autoAcceptAlerts: {\n isBoolean: true\n },\n autoDismissAlerts: {\n isBoolean: true\n },\n nativeWebTap: {\n isBoolean: true\n },\n safariInitialUrl: {\n isString: true\n },\n safariAllowPopups: {\n isBoolean: true\n },\n safariIgnoreFraudWarning: {\n isBoolean: true\n },\n safariOpenLinksInBackground: {\n isBoolean: true\n },\n safariShowFullResponse: {\n isBoolean: true\n },\n keepKeyChains: {\n isBoolean: true\n },\n resetLocationService: {\n isBoolean: true\n },\n localizableStringsDir: {\n isString: true\n },\n processArguments: {\n // recognize the cap,\n // but validate in the driver#validateDesiredCaps method\n },\n showIOSLog: {\n isBoolean: true\n },\n webviewConnectRetries: {\n isNumber: true\n },\n clearSystemFiles: {\n isBoolean: true\n },\n customSSLCert: {\n isString: true\n },\n webkitResponseTimeout: {\n isNumber: true\n },\n remoteDebugProxy: {\n isString: true\n },\n enablePerformanceLogging: {\n isBoolean: true\n },\n enableAsyncExecuteFromHttps: {\n isBoolean: true\n },\n fullContextList: {\n isBoolean: true\n },\n ignoreAboutBlankUrl: {\n isBoolean: true\n },\n skipLogCapture: {\n isBoolean: true\n },\n deviceName: {\n isString: true\n },\n showXcodeLog: {\n isBoolean: true\n },\n wdaLocalPort: {\n isNumber: true\n },\n wdaBaseUrl: {\n isString: true\n },\n iosInstallPause: {\n isNumber: true\n },\n xcodeConfigFile: {\n isString: true\n },\n xcodeOrgId: {\n isString: true\n },\n xcodeSigningId: {\n isString: true\n },\n keychainPath: {\n isString: true\n },\n keychainPassword: {\n isString: true\n },\n bootstrapPath: {\n isString: true\n },\n agentPath: {\n isString: true\n },\n scaleFactor: {\n isString: true\n },\n usePrebuiltWDA: {\n isBoolean: true\n },\n webDriverAgentUrl: {\n isString: true\n },\n derivedDataPath: {\n isString: true\n },\n launchWithIDB: {\n isBoolean: true\n },\n useNewWDA: {\n isBoolean: true\n },\n wdaLaunchTimeout: {\n isNumber: true\n },\n wdaConnectionTimeout: {\n isNumber: true\n },\n updatedWDABundleId: {\n isString: true\n },\n resetOnSessionStartOnly: {\n isBoolean: true\n },\n commandTimeouts: {\n // recognize the cap,\n // but validate in the driver#validateDesiredCaps method\n },\n wdaStartupRetries: {\n isNumber: true\n },\n wdaStartupRetryInterval: {\n isNumber: true\n },\n prebuildWDA: {\n isBoolean: true\n },\n connectHardwareKeyboard: {\n isBoolean: true\n },\n forceTurnOnSoftwareKeyboardSimulator: {\n isBoolean: true\n },\n simulatorPasteboardAutomaticSync: {\n isString: true\n },\n simulatorDevicesSetPath: {\n isString: true\n },\n calendarAccessAuthorized: {\n isBoolean: true\n },\n useSimpleBuildTest: {\n isBoolean: true\n },\n waitForQuiescence: {\n isBoolean: true\n },\n maxTypingFrequency: {\n isNumber: true\n },\n nativeTyping: {\n isBoolean: true\n },\n simpleIsVisibleCheck: {\n isBoolean: true\n },\n shouldUseSingletonTestManager: {\n isBoolean: true\n },\n isHeadless: {\n isBoolean: true\n },\n useXctestrunFile: {\n isBoolean: true\n },\n absoluteWebLocations: {\n isBoolean: true\n },\n simulatorWindowCenter: {\n isString: true\n },\n simulatorStartupTimeout: {\n isNumber: true\n },\n simulatorTracePointer: {\n isBoolean: true\n },\n useJSONSource: {\n isBoolean: true\n },\n enforceFreshSimulatorCreation: {\n isBoolean: true\n },\n shutdownOtherSimulators: {\n isBoolean: true\n },\n keychainsExcludePatterns: {\n isString: true\n },\n showSafariConsoleLog: {\n isBoolean: true\n },\n showSafariNetworkLog: {\n isBoolean: true\n },\n safariGarbageCollect: {\n isBoolean: true\n },\n safariGlobalPreferences: {\n isObject: true\n },\n safariLogAllCommunication: {\n isBoolean: true\n },\n safariLogAllCommunicationHexDump: {\n isBoolean: true\n },\n safariSocketChunkSize: {\n isNumber: true\n },\n mjpegServerPort: {\n isNumber: true\n },\n reduceMotion: {\n isBoolean: true\n },\n reduceTransparency: {\n isBoolean: true\n },\n mjpegScreenshotUrl: {\n isString: true\n },\n permissions: {\n isString: true\n },\n screenshotQuality: {\n isNumber: true\n },\n wdaEventloopIdleDelay: {\n isNumber: true\n },\n otherApps: {\n isString: true\n },\n includeSafariInWebviews: {\n isBoolean: true\n },\n additionalWebviewBundleIds: {\n // recognize the capability\n // but validate in driver#validateDesiredCaps\n },\n webviewConnectTimeout: {\n isNumber: true\n },\n iosSimulatorLogsPredicate: {\n isString: true\n },\n appPushTimeout: {\n isNumber: true\n },\n nativeWebTapStrict: {\n isBoolean: true\n },\n safariWebInspectorMaxFrameLength: {\n isNumber: true\n },\n allowProvisioningDeviceRegistration: {\n isBoolean: true\n },\n waitForIdleTimeout: {\n isNumber: true\n },\n resultBundlePath: {\n isString: true\n },\n resultBundleVersion: {\n isNumber: true\n },\n safariIgnoreWebHostnames: {\n isString: true,\n },\n includeDeviceCapsToSessionInfo: {\n isBoolean: true,\n },\n disableAutomaticScreenshots: {\n isBoolean: true,\n },\n shouldTerminateApp: {\n isBoolean: true,\n },\n forceAppLaunch: {\n isBoolean: true,\n },\n useNativeCachingStrategy: {\n isBoolean: true,\n },\n appInstallStrategy: {\n isString: true,\n inclusionCaseInsensitive: ['serial', 'parallel', 'ios-deploy']\n }\n};\n\nexport { desiredCapConstraints, PLATFORM_NAME_IOS, PLATFORM_NAME_TVOS };\nexport default desiredCapConstraints;\n"],"mappings":"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"}
1
+ {"version":3,"file":"desired-caps.js","names":["PLATFORM_NAME_IOS","exports","PLATFORM_NAME_TVOS","desiredCapConstraints","platformName","presence","isString","inclusionCaseInsensitive","browserName","app","calendarFormat","bundleId","udid","autoAcceptAlerts","isBoolean","autoDismissAlerts","nativeWebTap","safariInitialUrl","safariAllowPopups","safariIgnoreFraudWarning","safariOpenLinksInBackground","safariShowFullResponse","keepKeyChains","resetLocationService","localizableStringsDir","processArguments","showIOSLog","webviewConnectRetries","isNumber","clearSystemFiles","customSSLCert","webkitResponseTimeout","remoteDebugProxy","enablePerformanceLogging","enableAsyncExecuteFromHttps","fullContextList","ignoreAboutBlankUrl","skipLogCapture","deviceName","showXcodeLog","wdaLocalPort","wdaBaseUrl","iosInstallPause","xcodeConfigFile","xcodeOrgId","xcodeSigningId","keychainPath","keychainPassword","bootstrapPath","agentPath","scaleFactor","usePrebuiltWDA","webDriverAgentUrl","derivedDataPath","launchWithIDB","useNewWDA","wdaLaunchTimeout","wdaConnectionTimeout","updatedWDABundleId","resetOnSessionStartOnly","commandTimeouts","wdaStartupRetries","wdaStartupRetryInterval","prebuildWDA","connectHardwareKeyboard","forceTurnOnSoftwareKeyboardSimulator","simulatorPasteboardAutomaticSync","simulatorDevicesSetPath","calendarAccessAuthorized","useSimpleBuildTest","waitForQuiescence","maxTypingFrequency","nativeTyping","simpleIsVisibleCheck","shouldUseSingletonTestManager","isHeadless","useXctestrunFile","absoluteWebLocations","simulatorWindowCenter","simulatorStartupTimeout","simulatorTracePointer","useJSONSource","enforceFreshSimulatorCreation","shutdownOtherSimulators","keychainsExcludePatterns","showSafariConsoleLog","showSafariNetworkLog","safariGarbageCollect","safariGlobalPreferences","isObject","safariLogAllCommunication","safariLogAllCommunicationHexDump","safariSocketChunkSize","mjpegServerPort","reduceMotion","reduceTransparency","mjpegScreenshotUrl","permissions","screenshotQuality","wdaEventloopIdleDelay","otherApps","includeSafariInWebviews","additionalWebviewBundleIds","webviewConnectTimeout","iosSimulatorLogsPredicate","appPushTimeout","nativeWebTapStrict","safariWebInspectorMaxFrameLength","allowProvisioningDeviceRegistration","waitForIdleTimeout","resultBundlePath","resultBundleVersion","safariIgnoreWebHostnames","includeDeviceCapsToSessionInfo","disableAutomaticScreenshots","shouldTerminateApp","forceAppLaunch","useNativeCachingStrategy","appInstallStrategy","enforceAppInstall","_default","default"],"sources":["../../lib/desired-caps.js"],"sourcesContent":["// These platform names should be valid in simulator name\nconst PLATFORM_NAME_IOS = 'iOS';\nconst PLATFORM_NAME_TVOS = 'tvOS';\n\nconst desiredCapConstraints = {\n platformName: { // override\n presence: true,\n isString: true,\n inclusionCaseInsensitive: [PLATFORM_NAME_IOS, PLATFORM_NAME_TVOS]\n },\n browserName: {\n isString: true\n },\n app: {\n isString: true\n },\n calendarFormat: {\n isString: true\n },\n bundleId: {\n isString: true\n },\n udid: {\n isString: true\n },\n autoAcceptAlerts: {\n isBoolean: true\n },\n autoDismissAlerts: {\n isBoolean: true\n },\n nativeWebTap: {\n isBoolean: true\n },\n safariInitialUrl: {\n isString: true\n },\n safariAllowPopups: {\n isBoolean: true\n },\n safariIgnoreFraudWarning: {\n isBoolean: true\n },\n safariOpenLinksInBackground: {\n isBoolean: true\n },\n safariShowFullResponse: {\n isBoolean: true\n },\n keepKeyChains: {\n isBoolean: true\n },\n resetLocationService: {\n isBoolean: true\n },\n localizableStringsDir: {\n isString: true\n },\n processArguments: {\n // recognize the cap,\n // but validate in the driver#validateDesiredCaps method\n },\n showIOSLog: {\n isBoolean: true\n },\n webviewConnectRetries: {\n isNumber: true\n },\n clearSystemFiles: {\n isBoolean: true\n },\n customSSLCert: {\n isString: true\n },\n webkitResponseTimeout: {\n isNumber: true\n },\n remoteDebugProxy: {\n isString: true\n },\n enablePerformanceLogging: {\n isBoolean: true\n },\n enableAsyncExecuteFromHttps: {\n isBoolean: true\n },\n fullContextList: {\n isBoolean: true\n },\n ignoreAboutBlankUrl: {\n isBoolean: true\n },\n skipLogCapture: {\n isBoolean: true\n },\n deviceName: {\n isString: true\n },\n showXcodeLog: {\n isBoolean: true\n },\n wdaLocalPort: {\n isNumber: true\n },\n wdaBaseUrl: {\n isString: true\n },\n iosInstallPause: {\n isNumber: true\n },\n xcodeConfigFile: {\n isString: true\n },\n xcodeOrgId: {\n isString: true\n },\n xcodeSigningId: {\n isString: true\n },\n keychainPath: {\n isString: true\n },\n keychainPassword: {\n isString: true\n },\n bootstrapPath: {\n isString: true\n },\n agentPath: {\n isString: true\n },\n scaleFactor: {\n isString: true\n },\n usePrebuiltWDA: {\n isBoolean: true\n },\n webDriverAgentUrl: {\n isString: true\n },\n derivedDataPath: {\n isString: true\n },\n launchWithIDB: {\n isBoolean: true\n },\n useNewWDA: {\n isBoolean: true\n },\n wdaLaunchTimeout: {\n isNumber: true\n },\n wdaConnectionTimeout: {\n isNumber: true\n },\n updatedWDABundleId: {\n isString: true\n },\n resetOnSessionStartOnly: {\n isBoolean: true\n },\n commandTimeouts: {\n // recognize the cap,\n // but validate in the driver#validateDesiredCaps method\n },\n wdaStartupRetries: {\n isNumber: true\n },\n wdaStartupRetryInterval: {\n isNumber: true\n },\n prebuildWDA: {\n isBoolean: true\n },\n connectHardwareKeyboard: {\n isBoolean: true\n },\n forceTurnOnSoftwareKeyboardSimulator: {\n isBoolean: true\n },\n simulatorPasteboardAutomaticSync: {\n isString: true\n },\n simulatorDevicesSetPath: {\n isString: true\n },\n calendarAccessAuthorized: {\n isBoolean: true\n },\n useSimpleBuildTest: {\n isBoolean: true\n },\n waitForQuiescence: {\n isBoolean: true\n },\n maxTypingFrequency: {\n isNumber: true\n },\n nativeTyping: {\n isBoolean: true\n },\n simpleIsVisibleCheck: {\n isBoolean: true\n },\n shouldUseSingletonTestManager: {\n isBoolean: true\n },\n isHeadless: {\n isBoolean: true\n },\n useXctestrunFile: {\n isBoolean: true\n },\n absoluteWebLocations: {\n isBoolean: true\n },\n simulatorWindowCenter: {\n isString: true\n },\n simulatorStartupTimeout: {\n isNumber: true\n },\n simulatorTracePointer: {\n isBoolean: true\n },\n useJSONSource: {\n isBoolean: true\n },\n enforceFreshSimulatorCreation: {\n isBoolean: true\n },\n shutdownOtherSimulators: {\n isBoolean: true\n },\n keychainsExcludePatterns: {\n isString: true\n },\n showSafariConsoleLog: {\n isBoolean: true\n },\n showSafariNetworkLog: {\n isBoolean: true\n },\n safariGarbageCollect: {\n isBoolean: true\n },\n safariGlobalPreferences: {\n isObject: true\n },\n safariLogAllCommunication: {\n isBoolean: true\n },\n safariLogAllCommunicationHexDump: {\n isBoolean: true\n },\n safariSocketChunkSize: {\n isNumber: true\n },\n mjpegServerPort: {\n isNumber: true\n },\n reduceMotion: {\n isBoolean: true\n },\n reduceTransparency: {\n isBoolean: true\n },\n mjpegScreenshotUrl: {\n isString: true\n },\n permissions: {\n isString: true\n },\n screenshotQuality: {\n isNumber: true\n },\n wdaEventloopIdleDelay: {\n isNumber: true\n },\n otherApps: {\n isString: true\n },\n includeSafariInWebviews: {\n isBoolean: true\n },\n additionalWebviewBundleIds: {\n // recognize the capability\n // but validate in driver#validateDesiredCaps\n },\n webviewConnectTimeout: {\n isNumber: true\n },\n iosSimulatorLogsPredicate: {\n isString: true\n },\n appPushTimeout: {\n isNumber: true\n },\n nativeWebTapStrict: {\n isBoolean: true\n },\n safariWebInspectorMaxFrameLength: {\n isNumber: true\n },\n allowProvisioningDeviceRegistration: {\n isBoolean: true\n },\n waitForIdleTimeout: {\n isNumber: true\n },\n resultBundlePath: {\n isString: true\n },\n resultBundleVersion: {\n isNumber: true\n },\n safariIgnoreWebHostnames: {\n isString: true,\n },\n includeDeviceCapsToSessionInfo: {\n isBoolean: true,\n },\n disableAutomaticScreenshots: {\n isBoolean: true,\n },\n shouldTerminateApp: {\n isBoolean: true,\n },\n forceAppLaunch: {\n isBoolean: true,\n },\n useNativeCachingStrategy: {\n isBoolean: true,\n },\n appInstallStrategy: {\n isString: true,\n inclusionCaseInsensitive: ['serial', 'parallel', 'ios-deploy']\n },\n enforceAppInstall: {\n isBoolean: true,\n }\n};\n\nexport { desiredCapConstraints, PLATFORM_NAME_IOS, PLATFORM_NAME_TVOS };\nexport default desiredCapConstraints;\n"],"mappings":"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"}