appium-uiautomator2-driver 2.12.3 → 2.12.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -1
  3. package/build/index.js +1 -1
  4. package/build/lib/commands/actions.js +1 -1
  5. package/build/lib/commands/actions.js.map +1 -1
  6. package/build/lib/commands/alert.js +1 -1
  7. package/build/lib/commands/alert.js.map +1 -1
  8. package/build/lib/commands/battery.js +1 -1
  9. package/build/lib/commands/battery.js.map +1 -1
  10. package/build/lib/commands/element.js +2 -3
  11. package/build/lib/commands/element.js.map +1 -1
  12. package/build/lib/commands/find.js +1 -1
  13. package/build/lib/commands/find.js.map +1 -1
  14. package/build/lib/commands/general.js +1 -1
  15. package/build/lib/commands/general.js.map +1 -1
  16. package/build/lib/commands/gestures.js +1 -1
  17. package/build/lib/commands/gestures.js.map +1 -1
  18. package/build/lib/commands/index.js +1 -1
  19. package/build/lib/commands/index.js.map +1 -1
  20. package/build/lib/commands/screenshot.js +1 -1
  21. package/build/lib/commands/screenshot.js.map +1 -1
  22. package/build/lib/commands/touch.js +1 -1
  23. package/build/lib/commands/touch.js.map +1 -1
  24. package/build/lib/commands/viewport.js +1 -1
  25. package/build/lib/commands/viewport.js.map +1 -1
  26. package/build/lib/css-converter.js +1 -1
  27. package/build/lib/css-converter.js.map +1 -1
  28. package/build/lib/desired-caps.js +1 -1
  29. package/build/lib/desired-caps.js.map +1 -1
  30. package/build/lib/driver.js +2 -11
  31. package/build/lib/driver.js.map +1 -1
  32. package/build/lib/extensions.js +1 -1
  33. package/build/lib/extensions.js.map +1 -1
  34. package/build/lib/helpers.js +1 -1
  35. package/build/lib/helpers.js.map +1 -1
  36. package/build/lib/logger.js +1 -1
  37. package/build/lib/logger.js.map +1 -1
  38. package/build/lib/method-map.js +1 -1
  39. package/build/lib/method-map.js.map +1 -1
  40. package/build/lib/uiautomator2.js +1 -1
  41. package/build/lib/uiautomator2.js.map +1 -1
  42. package/lib/commands/element.js +1 -2
  43. package/lib/driver.js +1 -10
  44. package/npm-shrinkwrap.json +820 -3045
  45. package/package.json +5 -3
  46. package/scripts/reset.js +30 -0
@@ -178,4 +178,4 @@ class CssConverter {
178
178
  }
179
179
  var _default = CssConverter;
180
180
  exports.default = _default;
181
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZXIiLCJDc3NTZWxlY3RvclBhcnNlciIsInJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zIiwicmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzIiwicmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzIiwiZW5hYmxlU3Vic3RpdHV0ZXMiLCJSRVNPVVJDRV9JRCIsIklEX0xPQ0FUT1JfUEFUVEVSTiIsIkJPT0xFQU5fQVRUUlMiLCJOVU1FUklDX0FUVFJTIiwiU1RSX0FUVFJTIiwiQUxMX0FUVFJTIiwiQVRUUklCVVRFX0FMSUFTRVMiLCJ0b1NuYWtlQ2FzZSIsInN0ciIsInRva2VucyIsInNwbGl0IiwibWFwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRvTG93ZXJDYXNlIiwib3V0Iiwiam9pbiIsImFzc2VydEdldEJvb2wiLCJjc3MiLCJ2YWwiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJuYW1lIiwiYXNzZXJ0R2V0QXR0ck5hbWUiLCJhdHRyTmFtZSIsIm9mZmljaWFsQXR0ciIsImFsaWFzQXR0cnMiLCJnZXRXb3JkTWF0Y2hlclJlZ2V4Iiwid29yZCIsImVzY2FwZVJlZ0V4cCIsIkNzc0NvbnZlcnRlciIsImNvbnN0cnVjdG9yIiwic2VsZWN0b3IiLCJwa2ciLCJmb3JtYXRJZExvY2F0b3IiLCJsb2NhdG9yIiwidGVzdCIsInBhcnNlQXR0ciIsImNzc0F0dHIiLCJ2YWx1ZVR5cGUiLCJtZXRob2ROYW1lIiwib3BlcmF0b3IiLCJwYXJzZVBzZXVkbyIsImNzc1BzZXVkbyIsInBzZXVkb05hbWUiLCJwYXJzZUNzc1J1bGUiLCJjc3NSdWxlIiwibmVzdGluZ09wZXJhdG9yIiwidWlBdXRvbWF0b3JTZWxlY3RvciIsInRhZ05hbWUiLCJhbmRyb2lkQ2xhc3MiLCJjbGFzc05hbWVzIiwiY3NzQ2xhc3NOYW1lcyIsInB1c2giLCJpZCIsImF0dHJzIiwiYXR0ciIsInBzZXVkb3MiLCJwc2V1ZG8iLCJydWxlIiwicGFyc2VDc3NPYmplY3QiLCJ0eXBlIiwic2VsZWN0b3JzIiwidG9VaUF1dG9tYXRvclNlbGVjdG9yIiwiY3NzT2JqIiwicGFyc2UiLCJlIiwiZXJyb3JzIiwiSW52YWxpZFNlbGVjdG9yRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi9saWIvY3NzLWNvbnZlcnRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDc3NTZWxlY3RvclBhcnNlciB9IGZyb20gJ2Nzcy1zZWxlY3Rvci1wYXJzZXInO1xuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5jb25zdCBwYXJzZXIgPSBuZXcgQ3NzU2VsZWN0b3JQYXJzZXIoKTtcbnBhcnNlci5yZWdpc3RlclNlbGVjdG9yUHNldWRvcygnaGFzJyk7XG5wYXJzZXIucmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzKCc+JywgJysnLCAnficpO1xucGFyc2VyLnJlZ2lzdGVyQXR0ckVxdWFsaXR5TW9kcygnXicsICckJywgJyonLCAnficpO1xucGFyc2VyLmVuYWJsZVN1YnN0aXR1dGVzKCk7XG5cbmNvbnN0IFJFU09VUkNFX0lEID0gJ3Jlc291cmNlLWlkJztcbmNvbnN0IElEX0xPQ0FUT1JfUEFUVEVSTiA9IC9eW2EtekEtWl9dW2EtekEtWjAtOS5fXSo6aWRcXC9bXFxTXSskLztcblxuY29uc3QgQk9PTEVBTl9BVFRSUyA9IFtcbiAgJ2NoZWNrYWJsZScsICdjaGVja2VkJywgJ2NsaWNrYWJsZScsICdlbmFibGVkJywgJ2ZvY3VzYWJsZScsXG4gICdmb2N1c2VkJywgJ2xvbmctY2xpY2thYmxlJywgJ3Njcm9sbGFibGUnLCAnc2VsZWN0ZWQnLFxuXTtcblxuY29uc3QgTlVNRVJJQ19BVFRSUyA9IFtcbiAgJ2luZGV4JywgJ2luc3RhbmNlJyxcbl07XG5cbmNvbnN0IFNUUl9BVFRSUyA9IFtcbiAgJ2Rlc2NyaXB0aW9uJywgUkVTT1VSQ0VfSUQsICd0ZXh0JywgJ2NsYXNzLW5hbWUnLCAncGFja2FnZS1uYW1lJ1xuXTtcblxuY29uc3QgQUxMX0FUVFJTID0gW1xuICAuLi5CT09MRUFOX0FUVFJTLFxuICAuLi5OVU1FUklDX0FUVFJTLFxuICAuLi5TVFJfQVRUUlMsXG5dO1xuXG5jb25zdCBBVFRSSUJVVEVfQUxJQVNFUyA9IFtcbiAgW1JFU09VUkNFX0lELCBbJ2lkJ11dLFxuICBbJ2Rlc2NyaXB0aW9uJywgW1xuICAgICdjb250ZW50LWRlc2NyaXB0aW9uJywgJ2NvbnRlbnQtZGVzYycsXG4gICAgJ2Rlc2MnLCAnYWNjZXNzaWJpbGl0eS1pZCcsXG4gIF1dLFxuICBbJ2luZGV4JywgWydudGgtY2hpbGQnXV0sXG5dO1xuXG4vKipcbiAqIENvbnZlcnQgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRvIHNuYWtlIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRyYW5zbGF0ZWQgdG8gc25ha2UgY2FzZVxuICovXG5mdW5jdGlvbiB0b1NuYWtlQ2FzZSAoc3RyKSB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IHRva2VucyA9IHN0ci5zcGxpdCgnLScpLm1hcCgoc3RyKSA9PiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSk7XG4gIGNvbnN0IG91dCA9IHRva2Vucy5qb2luKCcnKTtcbiAgcmV0dXJuIG91dC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG91dC5zbGljZSgxKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NOYW1lVmFsdWVPYmplY3RcbiAqIEBwcm9wZXJ0eSB7P25hbWV9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIENTUyBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBDU1Mgb2JqZWN0XG4gKi9cblxuLyoqXG4gKiBHZXQgdGhlIGJvb2xlYW4gZnJvbSBhIENTUyBvYmplY3QuIElmIGVtcHR5LCByZXR1cm4gdHJ1ZS4gSWYgbm90IHRydWUvZmFsc2UvZW1wdHksIHRocm93IGV4Y2VwdGlvblxuICpcbiAqIEBwYXJhbSB7Q3NzTmFtZVZhbHVlT2JqZWN0fSBjc3MgQSBDU1Mgb2JqZWN0IHRoYXQgaGFzICduYW1lJyBhbmQgJ3ZhbHVlJ1xuICogQHJldHVybnMge3N0cmluZ30gRWl0aGVyICd0cnVlJyBvciAnZmFsc2UnLiBJZiB2YWx1ZSBpcyBlbXB0eSwgcmV0dXJuICd0cnVlJ1xuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRCb29sIChjc3MpIHtcbiAgY29uc3QgdmFsID0gY3NzLnZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICd0cnVlJzsgLy8gYW4gb21pdHRlZCBib29sZWFuIGF0dHJpYnV0ZSBtZWFucyAndHJ1ZScgKGUuZy46IGlucHV0W2NoZWNrZWRdIG1lYW5zIGNoZWNrZWQgaXMgdHJ1ZSlcbiAgaWYgKFsndHJ1ZScsICdmYWxzZSddLmluY2x1ZGVzKHZhbCkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzLm5hbWV9JyBtdXN0IGJlIHRydWUsIGZhbHNlIG9yIGVtcHR5LiBGb3VuZCAnJHtjc3MudmFsdWV9J2ApO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY2Fub25pY2FsIGZvcm0gb2YgYSBDU1MgYXR0cmlidXRlIG5hbWVcbiAqXG4gKiBDb252ZXJ0cyB0byBsb3dlcmNhc2UgYW5kIGlmIGFuIGF0dHJpYnV0ZSBuYW1lIGlzIGFuIGFsaWFzIGZvciBzb21ldGhpbmcgZWxzZSwgcmV0dXJuXG4gKiB3aGF0IGl0IGlzIGFuIGFsaWFzIGZvclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjc3MgQ1NTIG9iamVjdFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNhbm9uaWNhbCBhdHRyaWJ1dGUgbmFtZVxuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRBdHRyTmFtZSAoY3NzKSB7XG4gIGNvbnN0IGF0dHJOYW1lID0gY3NzLm5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvLyBDaGVjayBpZiBpdCdzIHN1cHBvcnRlZCBhbmQgaWYgaXQgaXMsIHJldHVybiBpdFxuICBpZiAoQUxMX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgIHJldHVybiBhdHRyTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLy8gSWYgYXR0ck5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm4gdGhhdFxuICBmb3IgKGNvbnN0IFtvZmZpY2lhbEF0dHIsIGFsaWFzQXR0cnNdIG9mIEFUVFJJQlVURV9BTElBU0VTKSB7XG4gICAgaWYgKGFsaWFzQXR0cnMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gb2ZmaWNpYWxBdHRyO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IGEgdmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICBgU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlICcke0FMTF9BVFRSUy5qb2luKCcsICcpfSdgKTtcbn1cblxuLyoqXG4gKiBHZXQgYSByZWdleCB0aGF0IG1hdGNoZXMgYSB3aG9sZSB3b3JkLiBGb3IgdGhlIH49IENTUyBhdHRyaWJ1dGUgc2VsZWN0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHdvcmRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcmVnZXggXCJ3b3JkXCIgbWF0Y2hlclxuICovXG5mdW5jdGlvbiBnZXRXb3JkTWF0Y2hlclJlZ2V4ICh3b3JkKSB7XG4gIHJldHVybiBgXFxcXGIoXFxcXHcqJHtlc2NhcGVSZWdFeHAod29yZCl9XFxcXHcqKVxcXFxiYDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NBdHRyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlVHlwZSBUeXBlIG9mIGF0dHJpYnV0ZSAobXVzdCBiZSBzdHJpbmcgb3IgZW1wdHkpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlIFZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIGJldHdlZW4gdmFsdWUgYW5kIHZhbHVlIHR5cGUgKD0sICo9LCAsIF49LCAkPSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1J1bGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbmVzdGluZ09wZXJhdG9yIFRoZSBuZXN0aW5nIG9wZXJhdG9yIChha2E6IGNvbWJpbmF0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NTU19TZWxlY3RvcnMpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHRhZ05hbWUgVGhlIHRhZyBuYW1lIChha2E6IHR5cGUgc2VsZWN0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL1R5cGVfc2VsZWN0b3JzKVxuICogQHByb3BlcnR5IHs/c3RyaW5nW119IGNsYXNzTmFtZXMgQW4gYXJyYXkgb2YgQ1NTIGNsYXNzIG5hbWVzXG4gKiBAcHJvcGVydHkgez9Dc3NBdHRyW119IGF0dHJzIEFuIGFycmF5IG9mIENTUyBhdHRyaWJ1dGVzXG4gKiBAcHJvcGVydHkgez9Dc3NQc2V1ZG9bXX0gYXR0cnMgQW4gYXJyYXkgb2YgQ1NTIHBzZXVkb3NcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWQgQ1NTIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P0Nzc1J1bGV9IHJ1bGUgQSBkZXNjZW5kYW50IG9mIHRoaXMgQ1NTIHJ1bGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc09iamVjdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB0eXBlIFR5cGUgb2YgQ1NTIG9iamVjdC4gJ3J1bGUnLCAncnVsZXNldCcgb3IgJ3NlbGVjdG9ycydcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1BzZXVkb1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZVR5cGUgVGhlIHR5cGUgb2YgQ1NTIHBzZXVkbyBzZWxlY3RvciAoaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvY3NzLXNlbGVjdG9yLXBhcnNlciBmb3IgcmVmZXJlbmNlKVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqL1xuXG5jbGFzcyBDc3NDb252ZXJ0ZXIge1xuXG4gIGNvbnN0cnVjdG9yIChzZWxlY3RvciwgcGtnKSB7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMucGtnID0gcGtnO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBgPHBrZ05hbWU+OmlkL2AgcHJlZml4IHRvIGJlZ2lubmluZyBvZiBzdHJpbmcgaWYgaXQncyBub3QgdGhlcmUgYWxyZWFkeVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRvciBUaGUgaW5pdGlhbCBsb2NhdG9yXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyB3aXRoIGA8cGtnTmFtZT46aWQvYCBwcmVwZW5kZWQgKGlmIGl0IHdhc24ndCBhbHJlYWR5KVxuICAgKi9cbiAgZm9ybWF0SWRMb2NhdG9yIChsb2NhdG9yKSB7XG4gICAgcmV0dXJuIElEX0xPQ0FUT1JfUEFUVEVSTi50ZXN0KGxvY2F0b3IpXG4gICAgICA/IGxvY2F0b3JcbiAgICAgIDogYCR7dGhpcy5wa2cgfHwgJ2FuZHJvaWQnfTppZC8ke2xvY2F0b3J9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIGF0dHJpYnV0ZSBpbnRvIGEgVWlTZWxlY3RvciBtZXRob2QgY2FsbFxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc0F0dHJ9IGNzc0F0dHIgQ1NTIGF0dHJpYnV0ZSBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gQ1NTIGF0dHJpYnV0ZSBwYXJzZWQgYXMgVWlTZWxlY3RvclxuICAgKi9cbiAgcGFyc2VBdHRyIChjc3NBdHRyKSB7XG4gICAgaWYgKGNzc0F0dHIudmFsdWVUeXBlICYmIGNzc0F0dHIudmFsdWVUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NBdHRyLm5hbWV9PSR7Y3NzQXR0ci52YWx1ZX0nIGlzIGFuIGludmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICAgICAgYE9ubHkgJ3N0cmluZycgYW5kIGVtcHR5IGF0dHJpYnV0ZSB0eXBlcyBhcmUgc3VwcG9ydGVkLiBGb3VuZCAnJHtjc3NBdHRyLnZhbHVlVHlwZX0nYCk7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJOYW1lID0gYXNzZXJ0R2V0QXR0ck5hbWUoY3NzQXR0cik7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHRvU25ha2VDYXNlKGF0dHJOYW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgaXQncyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGVcbiAgICBpZiAoIVNUUl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkgJiYgIUJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IHN1cHBvcnRlZC4gU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlIGAgK1xuICAgICAgICBgJyR7Wy4uLlNUUl9BVFRSUywgLi4uQk9PTEVBTl9BVFRSU10uam9pbignLCAnKX0nYCk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgYm9vbGVhbiwgaWYgaXQncyBhIGJvb2xlYW4gYXR0cmlidXRlXG4gICAgaWYgKEJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9KCR7YXNzZXJ0R2V0Qm9vbChjc3NBdHRyKX0pYDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UgcGFyc2UgYXMgc3RyaW5nXG4gICAgbGV0IHZhbHVlID0gY3NzQXR0ci52YWx1ZSB8fCAnJztcbiAgICBpZiAoYXR0ck5hbWUgPT09IFJFU09VUkNFX0lEKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZm9ybWF0SWRMb2NhdG9yKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJcIilgO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY3NzQXR0ci5vcGVyYXRvcikge1xuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oXCIke3ZhbHVlfVwiKWA7XG4gICAgICBjYXNlICcqPSc6XG4gICAgICAgIGlmIChbJ2Rlc2NyaXB0aW9uJywgJ3RleHQnXS5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9Q29udGFpbnMoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2VzY2FwZVJlZ0V4cCh2YWx1ZSl9XCIpYDtcbiAgICAgIGNhc2UgJ149JzpcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nLCAndGV4dCddLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1TdGFydHNXaXRoKFwiJHt2YWx1ZX1cIilgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1NYXRjaGVzKFwiXiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnJD0nOlxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX0kXCIpYDtcbiAgICAgIGNhc2UgJ349JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2dldFdvcmRNYXRjaGVyUmVnZXgodmFsdWUpfVwiKWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBVbnJlYWNoYWJsZSwgYnV0IGFkZGluZyBlcnJvciBpbiBjYXNlIGEgbmV3IENTUyBhdHRyaWJ1dGUgaXMgYWRkZWQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQ1NTIGF0dHJpYnV0ZSBvcGVyYXRvciAnJHtjc3NBdHRyLm9wZXJhdG9yfScuIGAgK1xuICAgICAgICAgIGAgJz0nLCAnKj0nLCAnXj0nLCAnJD0nIGFuZCAnfj0nIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcHNldWRvIGNsYXNzIHRvIGEgVWlTZWxlY3RvclxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc1BzZXVkb30gY3NzUHNldWRvIENTUyBQc2V1ZG8gY2xhc3NcbiAgICogQHJldHVybnMge3N0cmluZ30gUHNldWRvIHNlbGVjdG9yIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZVBzZXVkbyAoY3NzUHNldWRvKSB7XG4gICAgaWYgKGNzc1BzZXVkby52YWx1ZVR5cGUgJiYgY3NzUHNldWRvLnZhbHVlVHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzUHNldWRvLm5hbWV9PSR7Y3NzUHNldWRvLnZhbHVlfScuIGAgK1xuICAgICAgICBgVW5zdXBwb3J0ZWQgY3NzIHBzZXVkbyBjbGFzcyB2YWx1ZSB0eXBlOiAnJHtjc3NQc2V1ZG8udmFsdWVUeXBlfScuIE9ubHkgJ3N0cmluZycgdHlwZSBvciBlbXB0eSBpcyBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHNldWRvTmFtZSA9IGFzc2VydEdldEF0dHJOYW1lKGNzc1BzZXVkbyk7XG5cbiAgICBpZiAoQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHt0b1NuYWtlQ2FzZShwc2V1ZG9OYW1lKX0oJHthc3NlcnRHZXRCb29sKGNzc1BzZXVkbyl9KWA7XG4gICAgfVxuXG4gICAgaWYgKE5VTUVSSUNfQVRUUlMuaW5jbHVkZXMocHNldWRvTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7cHNldWRvTmFtZX0oJHtjc3NQc2V1ZG8udmFsdWV9KWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcnVsZSB0byBhIFVpU2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NSdWxlfSBjc3NSdWxlIENTUyBydWxlIGRlZmluaXRpb25cbiAgICovXG4gIHBhcnNlQ3NzUnVsZSAoY3NzUnVsZSkge1xuICAgIGNvbnN0IHsgbmVzdGluZ09wZXJhdG9yIH0gPSBjc3NSdWxlO1xuICAgIGlmIChuZXN0aW5nT3BlcmF0b3IgJiYgbmVzdGluZ09wZXJhdG9yICE9PSAnICcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmVzdGluZ09wZXJhdG9yfScgaXMgbm90IGEgc3VwcG9ydGVkIGNvbWJpbmF0b3IuIGAgK1xuICAgICAgICBgT25seSBjaGlsZCBjb21iaW5hdG9yICg+KSBhbmQgZGVzY2VuZGFudCBjb21iaW5hdG9yIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgbGV0IHVpQXV0b21hdG9yU2VsZWN0b3IgPSAnbmV3IFVpU2VsZWN0b3IoKSc7XG4gICAgaWYgKGNzc1J1bGUudGFnTmFtZSAmJiBjc3NSdWxlLnRhZ05hbWUgIT09ICcqJykge1xuICAgICAgbGV0IGFuZHJvaWRDbGFzcyA9IFtjc3NSdWxlLnRhZ05hbWVdO1xuICAgICAgaWYgKGNzc1J1bGUuY2xhc3NOYW1lcykge1xuICAgICAgICBmb3IgKGNvbnN0IGNzc0NsYXNzTmFtZXMgb2YgY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICAgICAgYW5kcm9pZENsYXNzLnB1c2goY3NzQ2xhc3NOYW1lcyk7XG4gICAgICAgIH1cbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZShcIiR7YW5kcm9pZENsYXNzLmpvaW4oJy4nKX1cIilgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZU1hdGNoZXMoXCIke2Nzc1J1bGUudGFnTmFtZX1cIilgO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lTWF0Y2hlcyhcIiR7Y3NzUnVsZS5jbGFzc05hbWVzLmpvaW4oJ1xcXFwuJyl9XCIpYDtcbiAgICB9XG4gICAgaWYgKGNzc1J1bGUuaWQpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5yZXNvdXJjZUlkKFwiJHt0aGlzLmZvcm1hdElkTG9jYXRvcihjc3NSdWxlLmlkKX1cIilgO1xuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5hdHRycykge1xuICAgICAgZm9yIChjb25zdCBhdHRyIG9mIGNzc1J1bGUuYXR0cnMpIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSB0aGlzLnBhcnNlQXR0cihhdHRyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNzc1J1bGUucHNldWRvcykge1xuICAgICAgZm9yIChjb25zdCBwc2V1ZG8gb2YgY3NzUnVsZS5wc2V1ZG9zKSB7XG4gICAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gdGhpcy5wYXJzZVBzZXVkbyhwc2V1ZG8pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5ydWxlKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2hpbGRTZWxlY3Rvcigke3RoaXMucGFyc2VDc3NSdWxlKGNzc1J1bGUucnVsZSl9KWA7XG4gICAgfVxuICAgIHJldHVybiB1aUF1dG9tYXRvclNlbGVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgQ1NTIG9iamVjdCB0byBVaUF1dG9tYXRvcjIgc2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NPYmplY3R9IGNzcyBDU1Mgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgb2JqZWN0IHBhcnNlZCBhcyBhIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlQ3NzT2JqZWN0IChjc3MpIHtcbiAgICBzd2l0Y2ggKGNzcy50eXBlKSB7XG4gICAgICBjYXNlICdydWxlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NSdWxlKGNzcyk7XG4gICAgICBjYXNlICdydWxlU2V0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzLnJ1bGUpO1xuICAgICAgY2FzZSAnc2VsZWN0b3JzJzpcbiAgICAgICAgcmV0dXJuIGNzcy5zZWxlY3RvcnMubWFwKChzZWxlY3RvcikgPT4gdGhpcy5wYXJzZUNzc09iamVjdChzZWxlY3RvcikpLmpvaW4oJzsgJyk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFRoaXMgaXMgbmV2ZXIgcmVhY2hhYmxlLCBidXQgaWYgaXQgZXZlciBpcyBkbyB0aGlzLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVpQXV0b21hdG9yIGRvZXMgbm90IHN1cHBvcnQgJyR7Y3NzLnR5cGV9JyBjc3MuIE9ubHkgc3VwcG9ydHMgJ3J1bGUnLCAncnVsZVNldCcsICdzZWxlY3RvcnMnIGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIHNlbGVjdG9yIHRvIGEgVWlBdXRvbWF0b3IyIHNlbGVjdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgc2VsZWN0b3IgY29udmVydGVkIHRvIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgdG9VaUF1dG9tYXRvclNlbGVjdG9yICgpIHtcbiAgICBsZXQgY3NzT2JqO1xuICAgIHRyeSB7XG4gICAgICBjc3NPYmogPSBwYXJzZXIucGFyc2UodGhpcy5zZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkU2VsZWN0b3JFcnJvcihgSW52YWxpZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzT2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBVbnN1cHBvcnRlZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NDb252ZXJ0ZXI7Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBRUEsTUFBTUEsTUFBTSxHQUFHLElBQUlDLG9DQUFpQixFQUFFO0FBQ3RDRCxNQUFNLENBQUNFLHVCQUF1QixDQUFDLEtBQUssQ0FBQztBQUNyQ0YsTUFBTSxDQUFDRyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM5Q0gsTUFBTSxDQUFDSSx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkRKLE1BQU0sQ0FBQ0ssaUJBQWlCLEVBQUU7QUFFMUIsTUFBTUMsV0FBVyxHQUFHLGFBQWE7QUFDakMsTUFBTUMsa0JBQWtCLEdBQUcscUNBQXFDO0FBRWhFLE1BQU1DLGFBQWEsR0FBRyxDQUNwQixXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUMzRCxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FDdEQ7QUFFRCxNQUFNQyxhQUFhLEdBQUcsQ0FDcEIsT0FBTyxFQUFFLFVBQVUsQ0FDcEI7QUFFRCxNQUFNQyxTQUFTLEdBQUcsQ0FDaEIsYUFBYSxFQUFFSixXQUFXLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxjQUFjLENBQ2pFO0FBRUQsTUFBTUssU0FBUyxHQUFHLENBQ2hCLEdBQUdILGFBQWEsRUFDaEIsR0FBR0MsYUFBYSxFQUNoQixHQUFHQyxTQUFTLENBQ2I7QUFFRCxNQUFNRSxpQkFBaUIsR0FBRyxDQUN4QixDQUFDTixXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNyQixDQUFDLGFBQWEsRUFBRSxDQUNkLHFCQUFxQixFQUFFLGNBQWMsRUFDckMsTUFBTSxFQUFFLGtCQUFrQixDQUMzQixDQUFDLEVBQ0YsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUN6QjtBQVFELFNBQVNPLFdBQVcsQ0FBRUMsR0FBRyxFQUFFO0VBQ3pCLElBQUksQ0FBQ0EsR0FBRyxFQUFFO0lBQ1IsT0FBTyxFQUFFO0VBQ1g7RUFDQSxNQUFNQyxNQUFNLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxHQUFHLENBQUVILEdBQUcsSUFBS0EsR0FBRyxDQUFDSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNDLFdBQVcsRUFBRSxHQUFHTCxHQUFHLENBQUNNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsV0FBVyxFQUFFLENBQUM7RUFDcEcsTUFBTUMsR0FBRyxHQUFHUCxNQUFNLENBQUNRLElBQUksQ0FBQyxFQUFFLENBQUM7RUFDM0IsT0FBT0QsR0FBRyxDQUFDSixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNHLFdBQVcsRUFBRSxHQUFHQyxHQUFHLENBQUNGLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbkQ7QUFjQSxTQUFTSSxhQUFhLENBQUVDLEdBQUcsRUFBRTtFQUFBO0VBQzNCLE1BQU1DLEdBQUcsR0FBRyxlQUFBRCxHQUFHLENBQUNFLEtBQUssK0NBQVQsV0FBV04sV0FBVyxFQUFFLEtBQUksTUFBTTtFQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDTyxRQUFRLENBQUNGLEdBQUcsQ0FBQyxFQUFFO0lBQ25DLE9BQU9BLEdBQUc7RUFDWjtFQUNBLE1BQU0sSUFBSUcsS0FBSyxDQUFFLElBQUdKLEdBQUcsQ0FBQ0ssSUFBSywwQ0FBeUNMLEdBQUcsQ0FBQ0UsS0FBTSxHQUFFLENBQUM7QUFDckY7QUFXQSxTQUFTSSxpQkFBaUIsQ0FBRU4sR0FBRyxFQUFFO0VBQy9CLE1BQU1PLFFBQVEsR0FBR1AsR0FBRyxDQUFDSyxJQUFJLENBQUNULFdBQVcsRUFBRTtFQUd2QyxJQUFJVixTQUFTLENBQUNpQixRQUFRLENBQUNJLFFBQVEsQ0FBQyxFQUFFO0lBQ2hDLE9BQU9BLFFBQVEsQ0FBQ1gsV0FBVyxFQUFFO0VBQy9CO0VBR0EsS0FBSyxNQUFNLENBQUNZLFlBQVksRUFBRUMsVUFBVSxDQUFDLElBQUl0QixpQkFBaUIsRUFBRTtJQUMxRCxJQUFJc0IsVUFBVSxDQUFDTixRQUFRLENBQUNJLFFBQVEsQ0FBQyxFQUFFO01BQ2pDLE9BQU9DLFlBQVk7SUFDckI7RUFDRjtFQUNBLE1BQU0sSUFBSUosS0FBSyxDQUFFLElBQUdHLFFBQVMsOEJBQTZCLEdBQ3ZELDZCQUE0QnJCLFNBQVMsQ0FBQ1ksSUFBSSxDQUFDLElBQUksQ0FBRSxHQUFFLENBQUM7QUFDekQ7QUFRQSxTQUFTWSxtQkFBbUIsQ0FBRUMsSUFBSSxFQUFFO0VBQ2xDLE9BQVEsV0FBVSxJQUFBQyxvQkFBWSxFQUFDRCxJQUFJLENBQUUsVUFBUztBQUNoRDtBQWdDQSxNQUFNRSxZQUFZLENBQUM7RUFFakJDLFdBQVcsQ0FBRUMsUUFBUSxFQUFFQyxHQUFHLEVBQUU7SUFDMUIsSUFBSSxDQUFDRCxRQUFRLEdBQUdBLFFBQVE7SUFDeEIsSUFBSSxDQUFDQyxHQUFHLEdBQUdBLEdBQUc7RUFDaEI7RUFRQUMsZUFBZSxDQUFFQyxPQUFPLEVBQUU7SUFDeEIsT0FBT3BDLGtCQUFrQixDQUFDcUMsSUFBSSxDQUFDRCxPQUFPLENBQUMsR0FDbkNBLE9BQU8sR0FDTixHQUFFLElBQUksQ0FBQ0YsR0FBRyxJQUFJLFNBQVUsT0FBTUUsT0FBUSxFQUFDO0VBQzlDO0VBUUFFLFNBQVMsQ0FBRUMsT0FBTyxFQUFFO0lBQ2xCLElBQUlBLE9BQU8sQ0FBQ0MsU0FBUyxJQUFJRCxPQUFPLENBQUNDLFNBQVMsS0FBSyxRQUFRLEVBQUU7TUFDdkQsTUFBTSxJQUFJbEIsS0FBSyxDQUFFLElBQUdpQixPQUFPLENBQUNoQixJQUFLLElBQUdnQixPQUFPLENBQUNuQixLQUFNLDZCQUE0QixHQUMzRSxpRUFBZ0VtQixPQUFPLENBQUNDLFNBQVUsR0FBRSxDQUFDO0lBQzFGO0lBQ0EsTUFBTWYsUUFBUSxHQUFHRCxpQkFBaUIsQ0FBQ2UsT0FBTyxDQUFDO0lBQzNDLE1BQU1FLFVBQVUsR0FBR25DLFdBQVcsQ0FBQ21CLFFBQVEsQ0FBQztJQUd4QyxJQUFJLENBQUN0QixTQUFTLENBQUNrQixRQUFRLENBQUNJLFFBQVEsQ0FBQyxJQUFJLENBQUN4QixhQUFhLENBQUNvQixRQUFRLENBQUNJLFFBQVEsQ0FBQyxFQUFFO01BQ3RFLE1BQU0sSUFBSUgsS0FBSyxDQUFFLElBQUdHLFFBQVMsK0NBQThDLEdBQ3hFLElBQUcsQ0FBQyxHQUFHdEIsU0FBUyxFQUFFLEdBQUdGLGFBQWEsQ0FBQyxDQUFDZSxJQUFJLENBQUMsSUFBSSxDQUFFLEdBQUUsQ0FBQztJQUN2RDtJQUdBLElBQUlmLGFBQWEsQ0FBQ29CLFFBQVEsQ0FBQ0ksUUFBUSxDQUFDLEVBQUU7TUFDcEMsT0FBUSxJQUFHZ0IsVUFBVyxJQUFHeEIsYUFBYSxDQUFDc0IsT0FBTyxDQUFFLEdBQUU7SUFDcEQ7SUFHQSxJQUFJbkIsS0FBSyxHQUFHbUIsT0FBTyxDQUFDbkIsS0FBSyxJQUFJLEVBQUU7SUFDL0IsSUFBSUssUUFBUSxLQUFLMUIsV0FBVyxFQUFFO01BQzVCcUIsS0FBSyxHQUFHLElBQUksQ0FBQ2UsZUFBZSxDQUFDZixLQUFLLENBQUM7SUFDckM7SUFDQSxJQUFJQSxLQUFLLEtBQUssRUFBRSxFQUFFO01BQ2hCLE9BQVEsSUFBR3FCLFVBQVcsYUFBWTtJQUNwQztJQUVBLFFBQVFGLE9BQU8sQ0FBQ0csUUFBUTtNQUN0QixLQUFLLEdBQUc7UUFDTixPQUFRLElBQUdELFVBQVcsS0FBSXJCLEtBQU0sSUFBRztNQUNyQyxLQUFLLElBQUk7UUFDUCxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDQyxRQUFRLENBQUNJLFFBQVEsQ0FBQyxFQUFFO1VBQzlDLE9BQVEsSUFBR2dCLFVBQVcsYUFBWXJCLEtBQU0sSUFBRztRQUM3QztRQUNBLE9BQVEsSUFBR3FCLFVBQVcsWUFBVyxJQUFBWCxvQkFBWSxFQUFDVixLQUFLLENBQUUsSUFBRztNQUMxRCxLQUFLLElBQUk7UUFDUCxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDQyxRQUFRLENBQUNJLFFBQVEsQ0FBQyxFQUFFO1VBQzlDLE9BQVEsSUFBR2dCLFVBQVcsZUFBY3JCLEtBQU0sSUFBRztRQUMvQztRQUNBLE9BQVEsSUFBR3FCLFVBQVcsYUFBWSxJQUFBWCxvQkFBWSxFQUFDVixLQUFLLENBQUUsSUFBRztNQUMzRCxLQUFLLElBQUk7UUFDUCxPQUFRLElBQUdxQixVQUFXLFlBQVcsSUFBQVgsb0JBQVksRUFBQ1YsS0FBSyxDQUFFLEtBQUk7TUFDM0QsS0FBSyxJQUFJO1FBQ1AsT0FBUSxJQUFHcUIsVUFBVyxZQUFXYixtQkFBbUIsQ0FBQ1IsS0FBSyxDQUFFLElBQUc7TUFDakU7UUFFRSxNQUFNLElBQUlFLEtBQUssQ0FBRSx1Q0FBc0NpQixPQUFPLENBQUNHLFFBQVMsS0FBSSxHQUN6RSxnREFBK0MsQ0FBQztJQUFDO0VBRTFEO0VBUUFDLFdBQVcsQ0FBRUMsU0FBUyxFQUFFO0lBQ3RCLElBQUlBLFNBQVMsQ0FBQ0osU0FBUyxJQUFJSSxTQUFTLENBQUNKLFNBQVMsS0FBSyxRQUFRLEVBQUU7TUFDM0QsTUFBTSxJQUFJbEIsS0FBSyxDQUFFLElBQUdzQixTQUFTLENBQUNyQixJQUFLLElBQUdxQixTQUFTLENBQUN4QixLQUFNLEtBQUksR0FDdkQsNkNBQTRDd0IsU0FBUyxDQUFDSixTQUFVLDhDQUE2QyxDQUFDO0lBQ25IO0lBRUEsTUFBTUssVUFBVSxHQUFHckIsaUJBQWlCLENBQUNvQixTQUFTLENBQUM7SUFFL0MsSUFBSTNDLGFBQWEsQ0FBQ29CLFFBQVEsQ0FBQ3dCLFVBQVUsQ0FBQyxFQUFFO01BQ3RDLE9BQVEsSUFBR3ZDLFdBQVcsQ0FBQ3VDLFVBQVUsQ0FBRSxJQUFHNUIsYUFBYSxDQUFDMkIsU0FBUyxDQUFFLEdBQUU7SUFDbkU7SUFFQSxJQUFJMUMsYUFBYSxDQUFDbUIsUUFBUSxDQUFDd0IsVUFBVSxDQUFDLEVBQUU7TUFDdEMsT0FBUSxJQUFHQSxVQUFXLElBQUdELFNBQVMsQ0FBQ3hCLEtBQU0sR0FBRTtJQUM3QztFQUNGO0VBTUEwQixZQUFZLENBQUVDLE9BQU8sRUFBRTtJQUNyQixNQUFNO01BQUVDO0lBQWdCLENBQUMsR0FBR0QsT0FBTztJQUNuQyxJQUFJQyxlQUFlLElBQUlBLGVBQWUsS0FBSyxHQUFHLEVBQUU7TUFDOUMsTUFBTSxJQUFJMUIsS0FBSyxDQUFFLElBQUcwQixlQUFnQixtQ0FBa0MsR0FDbkUsb0VBQW1FLENBQUM7SUFDekU7SUFFQSxJQUFJQyxtQkFBbUIsR0FBRyxrQkFBa0I7SUFDNUMsSUFBSUYsT0FBTyxDQUFDRyxPQUFPLElBQUlILE9BQU8sQ0FBQ0csT0FBTyxLQUFLLEdBQUcsRUFBRTtNQUM5QyxJQUFJQyxZQUFZLEdBQUcsQ0FBQ0osT0FBTyxDQUFDRyxPQUFPLENBQUM7TUFDcEMsSUFBSUgsT0FBTyxDQUFDSyxVQUFVLEVBQUU7UUFDdEIsS0FBSyxNQUFNQyxhQUFhLElBQUlOLE9BQU8sQ0FBQ0ssVUFBVSxFQUFFO1VBQzlDRCxZQUFZLENBQUNHLElBQUksQ0FBQ0QsYUFBYSxDQUFDO1FBQ2xDO1FBQ0FKLG1CQUFtQixJQUFLLGVBQWNFLFlBQVksQ0FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUUsSUFBRztNQUNsRSxDQUFDLE1BQU07UUFDTGlDLG1CQUFtQixJQUFLLHNCQUFxQkYsT0FBTyxDQUFDRyxPQUFRLElBQUc7TUFDbEU7SUFDRixDQUFDLE1BQU0sSUFBSUgsT0FBTyxDQUFDSyxVQUFVLEVBQUU7TUFDN0JILG1CQUFtQixJQUFLLHNCQUFxQkYsT0FBTyxDQUFDSyxVQUFVLENBQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFFLElBQUc7SUFDakY7SUFDQSxJQUFJK0IsT0FBTyxDQUFDUSxFQUFFLEVBQUU7TUFDZE4sbUJBQW1CLElBQUssZ0JBQWUsSUFBSSxDQUFDZCxlQUFlLENBQUNZLE9BQU8sQ0FBQ1EsRUFBRSxDQUFFLElBQUc7SUFDN0U7SUFDQSxJQUFJUixPQUFPLENBQUNTLEtBQUssRUFBRTtNQUNqQixLQUFLLE1BQU1DLElBQUksSUFBSVYsT0FBTyxDQUFDUyxLQUFLLEVBQUU7UUFDaENQLG1CQUFtQixJQUFJLElBQUksQ0FBQ1gsU0FBUyxDQUFDbUIsSUFBSSxDQUFDO01BQzdDO0lBQ0Y7SUFDQSxJQUFJVixPQUFPLENBQUNXLE9BQU8sRUFBRTtNQUNuQixLQUFLLE1BQU1DLE1BQU0sSUFBSVosT0FBTyxDQUFDVyxPQUFPLEVBQUU7UUFDcENULG1CQUFtQixJQUFJLElBQUksQ0FBQ04sV0FBVyxDQUFDZ0IsTUFBTSxDQUFDO01BQ2pEO0lBQ0Y7SUFDQSxJQUFJWixPQUFPLENBQUNhLElBQUksRUFBRTtNQUNoQlgsbUJBQW1CLElBQUssa0JBQWlCLElBQUksQ0FBQ0gsWUFBWSxDQUFDQyxPQUFPLENBQUNhLElBQUksQ0FBRSxHQUFFO0lBQzdFO0lBQ0EsT0FBT1gsbUJBQW1CO0VBQzVCO0VBT0FZLGNBQWMsQ0FBRTNDLEdBQUcsRUFBRTtJQUNuQixRQUFRQSxHQUFHLENBQUM0QyxJQUFJO01BQ2QsS0FBSyxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUNoQixZQUFZLENBQUM1QixHQUFHLENBQUM7TUFDL0IsS0FBSyxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMyQyxjQUFjLENBQUMzQyxHQUFHLENBQUMwQyxJQUFJLENBQUM7TUFDdEMsS0FBSyxXQUFXO1FBQ2QsT0FBTzFDLEdBQUcsQ0FBQzZDLFNBQVMsQ0FBQ3JELEdBQUcsQ0FBRXVCLFFBQVEsSUFBSyxJQUFJLENBQUM0QixjQUFjLENBQUM1QixRQUFRLENBQUMsQ0FBQyxDQUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQztNQUVsRjtRQUVFLE1BQU0sSUFBSU0sS0FBSyxDQUFFLGlDQUFnQ0osR0FBRyxDQUFDNEMsSUFBSyxzREFBcUQsQ0FBQztJQUFDO0VBRXZIO0VBT0FFLHFCQUFxQixHQUFJO0lBQ3ZCLElBQUlDLE1BQU07SUFDVixJQUFJO01BQ0ZBLE1BQU0sR0FBR3hFLE1BQU0sQ0FBQ3lFLEtBQUssQ0FBQyxJQUFJLENBQUNqQyxRQUFRLENBQUM7SUFDdEMsQ0FBQyxDQUFDLE9BQU9rQyxDQUFDLEVBQUU7TUFDVixNQUFNLElBQUlDLGNBQU0sQ0FBQ0Msb0JBQW9CLENBQUUseUJBQXdCLElBQUksQ0FBQ3BDLFFBQVMsZUFBY2tDLENBQUUsR0FBRSxDQUFDO0lBQ2xHO0lBQ0EsSUFBSTtNQUNGLE9BQU8sSUFBSSxDQUFDTixjQUFjLENBQUNJLE1BQU0sQ0FBQztJQUNwQyxDQUFDLENBQUMsT0FBT0UsQ0FBQyxFQUFFO01BQ1YsTUFBTSxJQUFJQyxjQUFNLENBQUNDLG9CQUFvQixDQUFFLDZCQUE0QixJQUFJLENBQUNwQyxRQUFTLGVBQWNrQyxDQUFFLEdBQUUsQ0FBQztJQUN0RztFQUNGO0FBQ0Y7QUFBQyxlQUVjcEMsWUFBWTtBQUFBIn0=
181
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3NzU2VsZWN0b3JQYXJzZXIiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9kcml2ZXIiLCJwYXJzZXIiLCJDc3NTZWxlY3RvclBhcnNlciIsInJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zIiwicmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzIiwicmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzIiwiZW5hYmxlU3Vic3RpdHV0ZXMiLCJSRVNPVVJDRV9JRCIsIklEX0xPQ0FUT1JfUEFUVEVSTiIsIkJPT0xFQU5fQVRUUlMiLCJOVU1FUklDX0FUVFJTIiwiU1RSX0FUVFJTIiwiQUxMX0FUVFJTIiwiQVRUUklCVVRFX0FMSUFTRVMiLCJ0b1NuYWtlQ2FzZSIsInN0ciIsInRva2VucyIsInNwbGl0IiwibWFwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRvTG93ZXJDYXNlIiwib3V0Iiwiam9pbiIsImFzc2VydEdldEJvb2wiLCJjc3MiLCJfY3NzJHZhbHVlIiwidmFsIiwidmFsdWUiLCJpbmNsdWRlcyIsIkVycm9yIiwibmFtZSIsImFzc2VydEdldEF0dHJOYW1lIiwiYXR0ck5hbWUiLCJvZmZpY2lhbEF0dHIiLCJhbGlhc0F0dHJzIiwiZ2V0V29yZE1hdGNoZXJSZWdleCIsIndvcmQiLCJlc2NhcGVSZWdFeHAiLCJDc3NDb252ZXJ0ZXIiLCJjb25zdHJ1Y3RvciIsInNlbGVjdG9yIiwicGtnIiwiZm9ybWF0SWRMb2NhdG9yIiwibG9jYXRvciIsInRlc3QiLCJwYXJzZUF0dHIiLCJjc3NBdHRyIiwidmFsdWVUeXBlIiwibWV0aG9kTmFtZSIsIm9wZXJhdG9yIiwicGFyc2VQc2V1ZG8iLCJjc3NQc2V1ZG8iLCJwc2V1ZG9OYW1lIiwicGFyc2VDc3NSdWxlIiwiY3NzUnVsZSIsIm5lc3RpbmdPcGVyYXRvciIsInVpQXV0b21hdG9yU2VsZWN0b3IiLCJ0YWdOYW1lIiwiYW5kcm9pZENsYXNzIiwiY2xhc3NOYW1lcyIsImNzc0NsYXNzTmFtZXMiLCJwdXNoIiwiaWQiLCJhdHRycyIsImF0dHIiLCJwc2V1ZG9zIiwicHNldWRvIiwicnVsZSIsInBhcnNlQ3NzT2JqZWN0IiwidHlwZSIsInNlbGVjdG9ycyIsInRvVWlBdXRvbWF0b3JTZWxlY3RvciIsImNzc09iaiIsInBhcnNlIiwiZSIsImVycm9ycyIsIkludmFsaWRTZWxlY3RvckVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jc3MtY29udmVydGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENzc1NlbGVjdG9yUGFyc2VyIH0gZnJvbSAnY3NzLXNlbGVjdG9yLXBhcnNlcic7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IHBhcnNlciA9IG5ldyBDc3NTZWxlY3RvclBhcnNlcigpO1xucGFyc2VyLnJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zKCdoYXMnKTtcbnBhcnNlci5yZWdpc3Rlck5lc3RpbmdPcGVyYXRvcnMoJz4nLCAnKycsICd+Jyk7XG5wYXJzZXIucmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzKCdeJywgJyQnLCAnKicsICd+Jyk7XG5wYXJzZXIuZW5hYmxlU3Vic3RpdHV0ZXMoKTtcblxuY29uc3QgUkVTT1VSQ0VfSUQgPSAncmVzb3VyY2UtaWQnO1xuY29uc3QgSURfTE9DQVRPUl9QQVRURVJOID0gL15bYS16QS1aX11bYS16QS1aMC05Ll9dKjppZFxcL1tcXFNdKyQvO1xuXG5jb25zdCBCT09MRUFOX0FUVFJTID0gW1xuICAnY2hlY2thYmxlJywgJ2NoZWNrZWQnLCAnY2xpY2thYmxlJywgJ2VuYWJsZWQnLCAnZm9jdXNhYmxlJyxcbiAgJ2ZvY3VzZWQnLCAnbG9uZy1jbGlja2FibGUnLCAnc2Nyb2xsYWJsZScsICdzZWxlY3RlZCcsXG5dO1xuXG5jb25zdCBOVU1FUklDX0FUVFJTID0gW1xuICAnaW5kZXgnLCAnaW5zdGFuY2UnLFxuXTtcblxuY29uc3QgU1RSX0FUVFJTID0gW1xuICAnZGVzY3JpcHRpb24nLCBSRVNPVVJDRV9JRCwgJ3RleHQnLCAnY2xhc3MtbmFtZScsICdwYWNrYWdlLW5hbWUnXG5dO1xuXG5jb25zdCBBTExfQVRUUlMgPSBbXG4gIC4uLkJPT0xFQU5fQVRUUlMsXG4gIC4uLk5VTUVSSUNfQVRUUlMsXG4gIC4uLlNUUl9BVFRSUyxcbl07XG5cbmNvbnN0IEFUVFJJQlVURV9BTElBU0VTID0gW1xuICBbUkVTT1VSQ0VfSUQsIFsnaWQnXV0sXG4gIFsnZGVzY3JpcHRpb24nLCBbXG4gICAgJ2NvbnRlbnQtZGVzY3JpcHRpb24nLCAnY29udGVudC1kZXNjJyxcbiAgICAnZGVzYycsICdhY2Nlc3NpYmlsaXR5LWlkJyxcbiAgXV0sXG4gIFsnaW5kZXgnLCBbJ250aC1jaGlsZCddXSxcbl07XG5cbi8qKlxuICogQ29udmVydCBoeXBoZW4gc2VwYXJhdGVkIHdvcmQgdG8gc25ha2UgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBoeXBoZW4gc2VwYXJhdGVkIHdvcmQgdHJhbnNsYXRlZCB0byBzbmFrZSBjYXNlXG4gKi9cbmZ1bmN0aW9uIHRvU25ha2VDYXNlIChzdHIpIHtcbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgY29uc3QgdG9rZW5zID0gc3RyLnNwbGl0KCctJykubWFwKChzdHIpID0+IHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKS50b0xvd2VyQ2FzZSgpKTtcbiAgY29uc3Qgb3V0ID0gdG9rZW5zLmpvaW4oJycpO1xuICByZXR1cm4gb3V0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgb3V0LnNsaWNlKDEpO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc05hbWVWYWx1ZU9iamVjdFxuICogQHByb3BlcnR5IHs/bmFtZX0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgQ1NTIG9iamVjdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIENTUyBvYmplY3RcbiAqL1xuXG4vKipcbiAqIEdldCB0aGUgYm9vbGVhbiBmcm9tIGEgQ1NTIG9iamVjdC4gSWYgZW1wdHksIHJldHVybiB0cnVlLiBJZiBub3QgdHJ1ZS9mYWxzZS9lbXB0eSwgdGhyb3cgZXhjZXB0aW9uXG4gKlxuICogQHBhcmFtIHtDc3NOYW1lVmFsdWVPYmplY3R9IGNzcyBBIENTUyBvYmplY3QgdGhhdCBoYXMgJ25hbWUnIGFuZCAndmFsdWUnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBFaXRoZXIgJ3RydWUnIG9yICdmYWxzZScuIElmIHZhbHVlIGlzIGVtcHR5LCByZXR1cm4gJ3RydWUnXG4gKi9cbmZ1bmN0aW9uIGFzc2VydEdldEJvb2wgKGNzcykge1xuICBjb25zdCB2YWwgPSBjc3MudmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJ3RydWUnOyAvLyBhbiBvbWl0dGVkIGJvb2xlYW4gYXR0cmlidXRlIG1lYW5zICd0cnVlJyAoZS5nLjogaW5wdXRbY2hlY2tlZF0gbWVhbnMgY2hlY2tlZCBpcyB0cnVlKVxuICBpZiAoWyd0cnVlJywgJ2ZhbHNlJ10uaW5jbHVkZXModmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3MubmFtZX0nIG11c3QgYmUgdHJ1ZSwgZmFsc2Ugb3IgZW1wdHkuIEZvdW5kICcke2Nzcy52YWx1ZX0nYCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjYW5vbmljYWwgZm9ybSBvZiBhIENTUyBhdHRyaWJ1dGUgbmFtZVxuICpcbiAqIENvbnZlcnRzIHRvIGxvd2VyY2FzZSBhbmQgaWYgYW4gYXR0cmlidXRlIG5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm5cbiAqIHdoYXQgaXQgaXMgYW4gYWxpYXMgZm9yXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNzcyBDU1Mgb2JqZWN0XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY2Fub25pY2FsIGF0dHJpYnV0ZSBuYW1lXG4gKi9cbmZ1bmN0aW9uIGFzc2VydEdldEF0dHJOYW1lIChjc3MpIHtcbiAgY29uc3QgYXR0ck5hbWUgPSBjc3MubmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIENoZWNrIGlmIGl0J3Mgc3VwcG9ydGVkIGFuZCBpZiBpdCBpcywgcmV0dXJuIGl0XG4gIGlmIChBTExfQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgcmV0dXJuIGF0dHJOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICAvLyBJZiBhdHRyTmFtZSBpcyBhbiBhbGlhcyBmb3Igc29tZXRoaW5nIGVsc2UsIHJldHVybiB0aGF0XG4gIGZvciAoY29uc3QgW29mZmljaWFsQXR0ciwgYWxpYXNBdHRyc10gb2YgQVRUUklCVVRFX0FMSUFTRVMpIHtcbiAgICBpZiAoYWxpYXNBdHRycy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHJldHVybiBvZmZpY2lhbEF0dHI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7YXR0ck5hbWV9JyBpcyBub3QgYSB2YWxpZCBhdHRyaWJ1dGUuIGAgK1xuICAgIGBTdXBwb3J0ZWQgYXR0cmlidXRlcyBhcmUgJyR7QUxMX0FUVFJTLmpvaW4oJywgJyl9J2ApO1xufVxuXG4vKipcbiAqIEdldCBhIHJlZ2V4IHRoYXQgbWF0Y2hlcyBhIHdob2xlIHdvcmQuIEZvciB0aGUgfj0gQ1NTIGF0dHJpYnV0ZSBzZWxlY3Rvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gd29yZFxuICogQHJldHVybnMge3N0cmluZ30gQSByZWdleCBcIndvcmRcIiBtYXRjaGVyXG4gKi9cbmZ1bmN0aW9uIGdldFdvcmRNYXRjaGVyUmVnZXggKHdvcmQpIHtcbiAgcmV0dXJuIGBcXFxcYihcXFxcdyoke2VzY2FwZVJlZ0V4cCh3b3JkKX1cXFxcdyopXFxcXGJgO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc0F0dHJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWVUeXBlIFR5cGUgb2YgYXR0cmlidXRlIChtdXN0IGJlIHN0cmluZyBvciBlbXB0eSlcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVmFsdWUgb2YgdGhlIGF0dHJpYnV0ZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBvcGVyYXRvciBUaGUgb3BlcmF0b3IgYmV0d2VlbiB2YWx1ZSBhbmQgdmFsdWUgdHlwZSAoPSwgKj0sICwgXj0sICQ9KVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzUnVsZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBuZXN0aW5nT3BlcmF0b3IgVGhlIG5lc3Rpbmcgb3BlcmF0b3IgKGFrYTogY29tYmluYXRvciBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ1NTX1NlbGVjdG9ycylcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdGFnTmFtZSBUaGUgdGFnIG5hbWUgKGFrYTogdHlwZSBzZWxlY3RvciBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvVHlwZV9zZWxlY3RvcnMpXG4gKiBAcHJvcGVydHkgez9zdHJpbmdbXX0gY2xhc3NOYW1lcyBBbiBhcnJheSBvZiBDU1MgY2xhc3MgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P0Nzc0F0dHJbXX0gYXR0cnMgQW4gYXJyYXkgb2YgQ1NTIGF0dHJpYnV0ZXNcbiAqIEBwcm9wZXJ0eSB7P0Nzc1BzZXVkb1tdfSBhdHRycyBBbiBhcnJheSBvZiBDU1MgcHNldWRvc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZCBDU1MgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/Q3NzUnVsZX0gcnVsZSBBIGRlc2NlbmRhbnQgb2YgdGhpcyBDU1MgcnVsZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzT2JqZWN0XG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHR5cGUgVHlwZSBvZiBDU1Mgb2JqZWN0LiAncnVsZScsICdydWxlc2V0JyBvciAnc2VsZWN0b3JzJ1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzUHNldWRvXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlVHlwZSBUaGUgdHlwZSBvZiBDU1MgcHNldWRvIHNlbGVjdG9yIChodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jc3Mtc2VsZWN0b3ItcGFyc2VyIGZvciByZWZlcmVuY2UpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBzZXVkbyBzZWxlY3RvclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHBzZXVkbyBzZWxlY3RvclxuICovXG5cbmNsYXNzIENzc0NvbnZlcnRlciB7XG5cbiAgY29uc3RydWN0b3IgKHNlbGVjdG9yLCBwa2cpIHtcbiAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgdGhpcy5wa2cgPSBwa2c7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGA8cGtnTmFtZT46aWQvYCBwcmVmaXggdG8gYmVnaW5uaW5nIG9mIHN0cmluZyBpZiBpdCdzIG5vdCB0aGVyZSBhbHJlYWR5XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdG9yIFRoZSBpbml0aWFsIGxvY2F0b3JcbiAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIHdpdGggYDxwa2dOYW1lPjppZC9gIHByZXBlbmRlZCAoaWYgaXQgd2Fzbid0IGFscmVhZHkpXG4gICAqL1xuICBmb3JtYXRJZExvY2F0b3IgKGxvY2F0b3IpIHtcbiAgICByZXR1cm4gSURfTE9DQVRPUl9QQVRURVJOLnRlc3QobG9jYXRvcilcbiAgICAgID8gbG9jYXRvclxuICAgICAgOiBgJHt0aGlzLnBrZyB8fCAnYW5kcm9pZCd9OmlkLyR7bG9jYXRvcn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgYXR0cmlidXRlIGludG8gYSBVaVNlbGVjdG9yIG1ldGhvZCBjYWxsXG4gICAqXG4gICAqIEBwYXJhbSB7Q3NzQXR0cn0gY3NzQXR0ciBDU1MgYXR0cmlidXRlIG9iamVjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBDU1MgYXR0cmlidXRlIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZUF0dHIgKGNzc0F0dHIpIHtcbiAgICBpZiAoY3NzQXR0ci52YWx1ZVR5cGUgJiYgY3NzQXR0ci52YWx1ZVR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2Nzc0F0dHIubmFtZX09JHtjc3NBdHRyLnZhbHVlfScgaXMgYW4gaW52YWxpZCBhdHRyaWJ1dGUuIGAgK1xuICAgICAgICBgT25seSAnc3RyaW5nJyBhbmQgZW1wdHkgYXR0cmlidXRlIHR5cGVzIGFyZSBzdXBwb3J0ZWQuIEZvdW5kICcke2Nzc0F0dHIudmFsdWVUeXBlfSdgKTtcbiAgICB9XG4gICAgY29uc3QgYXR0ck5hbWUgPSBhc3NlcnRHZXRBdHRyTmFtZShjc3NBdHRyKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gdG9TbmFrZUNhc2UoYXR0ck5hbWUpO1xuXG4gICAgLy8gVmFsaWRhdGUgdGhhdCBpdCdzIGEgc3VwcG9ydGVkIGF0dHJpYnV0ZVxuICAgIGlmICghU1RSX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSAmJiAhQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7YXR0ck5hbWV9JyBpcyBub3Qgc3VwcG9ydGVkLiBTdXBwb3J0ZWQgYXR0cmlidXRlcyBhcmUgYCArXG4gICAgICAgIGAnJHtbLi4uU1RSX0FUVFJTLCAuLi5CT09MRUFOX0FUVFJTXS5qb2luKCcsICcpfSdgKTtcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBib29sZWFuLCBpZiBpdCdzIGEgYm9vbGVhbiBhdHRyaWJ1dGVcbiAgICBpZiAoQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oJHthc3NlcnRHZXRCb29sKGNzc0F0dHIpfSlgO1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSBwYXJzZSBhcyBzdHJpbmdcbiAgICBsZXQgdmFsdWUgPSBjc3NBdHRyLnZhbHVlIHx8ICcnO1xuICAgIGlmIChhdHRyTmFtZSA9PT0gUkVTT1VSQ0VfSUQpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5mb3JtYXRJZExvY2F0b3IodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIlwiKWA7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjc3NBdHRyLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlICc9JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfShcIiR7dmFsdWV9XCIpYDtcbiAgICAgIGNhc2UgJyo9JzpcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nLCAndGV4dCddLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1Db250YWlucyhcIiR7dmFsdWV9XCIpYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnXj0nOlxuICAgICAgICBpZiAoWydkZXNjcmlwdGlvbicsICd0ZXh0J10uaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfVN0YXJ0c1dpdGgoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJeJHtlc2NhcGVSZWdFeHAodmFsdWUpfVwiKWA7XG4gICAgICBjYXNlICckPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1NYXRjaGVzKFwiJHtlc2NhcGVSZWdFeHAodmFsdWUpfSRcIilgO1xuICAgICAgY2FzZSAnfj0nOlxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7Z2V0V29yZE1hdGNoZXJSZWdleCh2YWx1ZSl9XCIpYDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFVucmVhY2hhYmxlLCBidXQgYWRkaW5nIGVycm9yIGluIGNhc2UgYSBuZXcgQ1NTIGF0dHJpYnV0ZSBpcyBhZGRlZC5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBDU1MgYXR0cmlidXRlIG9wZXJhdG9yICcke2Nzc0F0dHIub3BlcmF0b3J9Jy4gYCArXG4gICAgICAgICAgYCAnPScsICcqPScsICdePScsICckPScgYW5kICd+PScgYXJlIHN1cHBvcnRlZC5gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIENTUyBwc2V1ZG8gY2xhc3MgdG8gYSBVaVNlbGVjdG9yXG4gICAqXG4gICAqIEBwYXJhbSB7Q3NzUHNldWRvfSBjc3NQc2V1ZG8gQ1NTIFBzZXVkbyBjbGFzc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBQc2V1ZG8gc2VsZWN0b3IgcGFyc2VkIGFzIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlUHNldWRvIChjc3NQc2V1ZG8pIHtcbiAgICBpZiAoY3NzUHNldWRvLnZhbHVlVHlwZSAmJiBjc3NQc2V1ZG8udmFsdWVUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NQc2V1ZG8ubmFtZX09JHtjc3NQc2V1ZG8udmFsdWV9Jy4gYCArXG4gICAgICAgIGBVbnN1cHBvcnRlZCBjc3MgcHNldWRvIGNsYXNzIHZhbHVlIHR5cGU6ICcke2Nzc1BzZXVkby52YWx1ZVR5cGV9Jy4gT25seSAnc3RyaW5nJyB0eXBlIG9yIGVtcHR5IGlzIHN1cHBvcnRlZC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBwc2V1ZG9OYW1lID0gYXNzZXJ0R2V0QXR0ck5hbWUoY3NzUHNldWRvKTtcblxuICAgIGlmIChCT09MRUFOX0FUVFJTLmluY2x1ZGVzKHBzZXVkb05hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke3RvU25ha2VDYXNlKHBzZXVkb05hbWUpfSgke2Fzc2VydEdldEJvb2woY3NzUHNldWRvKX0pYDtcbiAgICB9XG5cbiAgICBpZiAoTlVNRVJJQ19BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHtwc2V1ZG9OYW1lfSgke2Nzc1BzZXVkby52YWx1ZX0pYDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIENTUyBydWxlIHRvIGEgVWlTZWxlY3RvclxuICAgKiBAcGFyYW0ge0Nzc1J1bGV9IGNzc1J1bGUgQ1NTIHJ1bGUgZGVmaW5pdGlvblxuICAgKi9cbiAgcGFyc2VDc3NSdWxlIChjc3NSdWxlKSB7XG4gICAgY29uc3QgeyBuZXN0aW5nT3BlcmF0b3IgfSA9IGNzc1J1bGU7XG4gICAgaWYgKG5lc3RpbmdPcGVyYXRvciAmJiBuZXN0aW5nT3BlcmF0b3IgIT09ICcgJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtuZXN0aW5nT3BlcmF0b3J9JyBpcyBub3QgYSBzdXBwb3J0ZWQgY29tYmluYXRvci4gYCArXG4gICAgICAgIGBPbmx5IGNoaWxkIGNvbWJpbmF0b3IgKD4pIGFuZCBkZXNjZW5kYW50IGNvbWJpbmF0b3IgYXJlIHN1cHBvcnRlZC5gKTtcbiAgICB9XG5cbiAgICBsZXQgdWlBdXRvbWF0b3JTZWxlY3RvciA9ICduZXcgVWlTZWxlY3RvcigpJztcbiAgICBpZiAoY3NzUnVsZS50YWdOYW1lICYmIGNzc1J1bGUudGFnTmFtZSAhPT0gJyonKSB7XG4gICAgICBsZXQgYW5kcm9pZENsYXNzID0gW2Nzc1J1bGUudGFnTmFtZV07XG4gICAgICBpZiAoY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY3NzQ2xhc3NOYW1lcyBvZiBjc3NSdWxlLmNsYXNzTmFtZXMpIHtcbiAgICAgICAgICBhbmRyb2lkQ2xhc3MucHVzaChjc3NDbGFzc05hbWVzKTtcbiAgICAgICAgfVxuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lKFwiJHthbmRyb2lkQ2xhc3Muam9pbignLicpfVwiKWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lTWF0Y2hlcyhcIiR7Y3NzUnVsZS50YWdOYW1lfVwiKWA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjc3NSdWxlLmNsYXNzTmFtZXMpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jbGFzc05hbWVNYXRjaGVzKFwiJHtjc3NSdWxlLmNsYXNzTmFtZXMuam9pbignXFxcXC4nKX1cIilgO1xuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5pZCkge1xuICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLnJlc291cmNlSWQoXCIke3RoaXMuZm9ybWF0SWRMb2NhdG9yKGNzc1J1bGUuaWQpfVwiKWA7XG4gICAgfVxuICAgIGlmIChjc3NSdWxlLmF0dHJzKSB7XG4gICAgICBmb3IgKGNvbnN0IGF0dHIgb2YgY3NzUnVsZS5hdHRycykge1xuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IHRoaXMucGFyc2VBdHRyKGF0dHIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5wc2V1ZG9zKSB7XG4gICAgICBmb3IgKGNvbnN0IHBzZXVkbyBvZiBjc3NSdWxlLnBzZXVkb3MpIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSB0aGlzLnBhcnNlUHNldWRvKHBzZXVkbyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjc3NSdWxlLnJ1bGUpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jaGlsZFNlbGVjdG9yKCR7dGhpcy5wYXJzZUNzc1J1bGUoY3NzUnVsZS5ydWxlKX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHVpQXV0b21hdG9yU2VsZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBDU1Mgb2JqZWN0IHRvIFVpQXV0b21hdG9yMiBzZWxlY3RvclxuICAgKiBAcGFyYW0ge0Nzc09iamVjdH0gY3NzIENTUyBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIENTUyBvYmplY3QgcGFyc2VkIGFzIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgcGFyc2VDc3NPYmplY3QgKGNzcykge1xuICAgIHN3aXRjaCAoY3NzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3J1bGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc1J1bGUoY3NzKTtcbiAgICAgIGNhc2UgJ3J1bGVTZXQnOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc09iamVjdChjc3MucnVsZSk7XG4gICAgICBjYXNlICdzZWxlY3RvcnMnOlxuICAgICAgICByZXR1cm4gY3NzLnNlbGVjdG9ycy5tYXAoKHNlbGVjdG9yKSA9PiB0aGlzLnBhcnNlQ3NzT2JqZWN0KHNlbGVjdG9yKSkuam9pbignOyAnKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gVGhpcyBpcyBuZXZlciByZWFjaGFibGUsIGJ1dCBpZiBpdCBldmVyIGlzIGRvIHRoaXMuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVWlBdXRvbWF0b3IgZG9lcyBub3Qgc3VwcG9ydCAnJHtjc3MudHlwZX0nIGNzcy4gT25seSBzdXBwb3J0cyAncnVsZScsICdydWxlU2V0JywgJ3NlbGVjdG9ycycgYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1Mgc2VsZWN0b3IgdG8gYSBVaUF1dG9tYXRvcjIgc2VsZWN0b3JcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIENTUyBzZWxlY3RvciBjb252ZXJ0ZWQgdG8gYSBVaVNlbGVjdG9yXG4gICAqL1xuICB0b1VpQXV0b21hdG9yU2VsZWN0b3IgKCkge1xuICAgIGxldCBjc3NPYmo7XG4gICAgdHJ5IHtcbiAgICAgIGNzc09iaiA9IHBhcnNlci5wYXJzZSh0aGlzLnNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBJbnZhbGlkIENTUyBzZWxlY3RvciAnJHt0aGlzLnNlbGVjdG9yfScuIFJlYXNvbjogJyR7ZX0nYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc09iamVjdChjc3NPYmopO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZFNlbGVjdG9yRXJyb3IoYFVuc3VwcG9ydGVkIENTUyBzZWxlY3RvciAnJHt0aGlzLnNlbGVjdG9yfScuIFJlYXNvbjogJyR7ZX0nYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENzc0NvbnZlcnRlcjsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxrQkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsTUFBTUcsTUFBTSxHQUFHLElBQUlDLG9DQUFpQixFQUFFO0FBQ3RDRCxNQUFNLENBQUNFLHVCQUF1QixDQUFDLEtBQUssQ0FBQztBQUNyQ0YsTUFBTSxDQUFDRyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM5Q0gsTUFBTSxDQUFDSSx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDbkRKLE1BQU0sQ0FBQ0ssaUJBQWlCLEVBQUU7QUFFMUIsTUFBTUMsV0FBVyxHQUFHLGFBQWE7QUFDakMsTUFBTUMsa0JBQWtCLEdBQUcscUNBQXFDO0FBRWhFLE1BQU1DLGFBQWEsR0FBRyxDQUNwQixXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcs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
@@ -1 +1 @@
1
- {"version":3,"file":"css-converter.js","names":["parser","CssSelectorParser","registerSelectorPseudos","registerNestingOperators","registerAttrEqualityMods","enableSubstitutes","RESOURCE_ID","ID_LOCATOR_PATTERN","BOOLEAN_ATTRS","NUMERIC_ATTRS","STR_ATTRS","ALL_ATTRS","ATTRIBUTE_ALIASES","toSnakeCase","str","tokens","split","map","charAt","toUpperCase","slice","toLowerCase","out","join","assertGetBool","css","val","value","includes","Error","name","assertGetAttrName","attrName","officialAttr","aliasAttrs","getWordMatcherRegex","word","escapeRegExp","CssConverter","constructor","selector","pkg","formatIdLocator","locator","test","parseAttr","cssAttr","valueType","methodName","operator","parsePseudo","cssPseudo","pseudoName","parseCssRule","cssRule","nestingOperator","uiAutomatorSelector","tagName","androidClass","classNames","cssClassNames","push","id","attrs","attr","pseudos","pseudo","rule","parseCssObject","type","selectors","toUiAutomatorSelector","cssObj","parse","e","errors","InvalidSelectorError"],"sources":["../../lib/css-converter.js"],"sourcesContent":["import { CssSelectorParser } from 'css-selector-parser';\nimport { escapeRegExp } from 'lodash';\nimport { errors } from 'appium/driver';\n\nconst parser = new CssSelectorParser();\nparser.registerSelectorPseudos('has');\nparser.registerNestingOperators('>', '+', '~');\nparser.registerAttrEqualityMods('^', '$', '*', '~');\nparser.enableSubstitutes();\n\nconst RESOURCE_ID = 'resource-id';\nconst ID_LOCATOR_PATTERN = /^[a-zA-Z_][a-zA-Z0-9._]*:id\\/[\\S]+$/;\n\nconst BOOLEAN_ATTRS = [\n 'checkable', 'checked', 'clickable', 'enabled', 'focusable',\n 'focused', 'long-clickable', 'scrollable', 'selected',\n];\n\nconst NUMERIC_ATTRS = [\n 'index', 'instance',\n];\n\nconst STR_ATTRS = [\n 'description', RESOURCE_ID, 'text', 'class-name', 'package-name'\n];\n\nconst ALL_ATTRS = [\n ...BOOLEAN_ATTRS,\n ...NUMERIC_ATTRS,\n ...STR_ATTRS,\n];\n\nconst ATTRIBUTE_ALIASES = [\n [RESOURCE_ID, ['id']],\n ['description', [\n 'content-description', 'content-desc',\n 'desc', 'accessibility-id',\n ]],\n ['index', ['nth-child']],\n];\n\n/**\n * Convert hyphen separated word to snake case\n *\n * @param {string} str\n * @returns {string} The hyphen separated word translated to snake case\n */\nfunction toSnakeCase (str) {\n if (!str) {\n return '';\n }\n const tokens = str.split('-').map((str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase());\n const out = tokens.join('');\n return out.charAt(0).toLowerCase() + out.slice(1);\n}\n\n/**\n * @typedef {Object} CssNameValueObject\n * @property {?name} name The name of the CSS object\n * @property {?string} value The value of the CSS object\n */\n\n/**\n * Get the boolean from a CSS object. If empty, return true. If not true/false/empty, throw exception\n *\n * @param {CssNameValueObject} css A CSS object that has 'name' and 'value'\n * @returns {string} Either 'true' or 'false'. If value is empty, return 'true'\n */\nfunction assertGetBool (css) {\n const val = css.value?.toLowerCase() || 'true'; // an omitted boolean attribute means 'true' (e.g.: input[checked] means checked is true)\n if (['true', 'false'].includes(val)) {\n return val;\n }\n throw new Error(`'${css.name}' must be true, false or empty. Found '${css.value}'`);\n}\n\n/**\n * Get the canonical form of a CSS attribute name\n *\n * Converts to lowercase and if an attribute name is an alias for something else, return\n * what it is an alias for\n *\n * @param {Object} css CSS object\n * @returns {string} The canonical attribute name\n */\nfunction assertGetAttrName (css) {\n const attrName = css.name.toLowerCase();\n\n // Check if it's supported and if it is, return it\n if (ALL_ATTRS.includes(attrName)) {\n return attrName.toLowerCase();\n }\n\n // If attrName is an alias for something else, return that\n for (const [officialAttr, aliasAttrs] of ATTRIBUTE_ALIASES) {\n if (aliasAttrs.includes(attrName)) {\n return officialAttr;\n }\n }\n throw new Error(`'${attrName}' is not a valid attribute. ` +\n `Supported attributes are '${ALL_ATTRS.join(', ')}'`);\n}\n\n/**\n * Get a regex that matches a whole word. For the ~= CSS attribute selector.\n *\n * @param {string} word\n * @returns {string} A regex \"word\" matcher\n */\nfunction getWordMatcherRegex (word) {\n return `\\\\b(\\\\w*${escapeRegExp(word)}\\\\w*)\\\\b`;\n}\n\n/**\n * @typedef {Object} CssAttr\n * @property {?string} valueType Type of attribute (must be string or empty)\n * @property {?string} value Value of the attribute\n * @property {?string} operator The operator between value and value type (=, *=, , ^=, $=)\n */\n\n/**\n * @typedef {Object} CssRule\n * @property {?string} nestingOperator The nesting operator (aka: combinator https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors)\n * @property {?string} tagName The tag name (aka: type selector https://developer.mozilla.org/en-US/docs/Web/CSS/Type_selectors)\n * @property {?string[]} classNames An array of CSS class names\n * @property {?CssAttr[]} attrs An array of CSS attributes\n * @property {?CssPseudo[]} attrs An array of CSS pseudos\n * @property {?string} id CSS identifier\n * @property {?CssRule} rule A descendant of this CSS rule\n */\n\n/**\n * @typedef {Object} CssObject\n * @property {?string} type Type of CSS object. 'rule', 'ruleset' or 'selectors'\n */\n\n/**\n * @typedef {Object} CssPseudo\n * @property {?string} valueType The type of CSS pseudo selector (https://www.npmjs.com/package/css-selector-parser for reference)\n * @property {?string} name The name of the pseudo selector\n * @property {?string} value The value of the pseudo selector\n */\n\nclass CssConverter {\n\n constructor (selector, pkg) {\n this.selector = selector;\n this.pkg = pkg;\n }\n\n /**\n * Add `<pkgName>:id/` prefix to beginning of string if it's not there already\n *\n * @param {string} locator The initial locator\n * @returns {string} String with `<pkgName>:id/` prepended (if it wasn't already)\n */\n formatIdLocator (locator) {\n return ID_LOCATOR_PATTERN.test(locator)\n ? locator\n : `${this.pkg || 'android'}:id/${locator}`;\n }\n\n /**\n * Convert a CSS attribute into a UiSelector method call\n *\n * @param {CssAttr} cssAttr CSS attribute object\n * @returns {string} CSS attribute parsed as UiSelector\n */\n parseAttr (cssAttr) {\n if (cssAttr.valueType && cssAttr.valueType !== 'string') {\n throw new Error(`'${cssAttr.name}=${cssAttr.value}' is an invalid attribute. ` +\n `Only 'string' and empty attribute types are supported. Found '${cssAttr.valueType}'`);\n }\n const attrName = assertGetAttrName(cssAttr);\n const methodName = toSnakeCase(attrName);\n\n // Validate that it's a supported attribute\n if (!STR_ATTRS.includes(attrName) && !BOOLEAN_ATTRS.includes(attrName)) {\n throw new Error(`'${attrName}' is not supported. Supported attributes are ` +\n `'${[...STR_ATTRS, ...BOOLEAN_ATTRS].join(', ')}'`);\n }\n\n // Parse boolean, if it's a boolean attribute\n if (BOOLEAN_ATTRS.includes(attrName)) {\n return `.${methodName}(${assertGetBool(cssAttr)})`;\n }\n\n // Otherwise parse as string\n let value = cssAttr.value || '';\n if (attrName === RESOURCE_ID) {\n value = this.formatIdLocator(value);\n }\n if (value === '') {\n return `.${methodName}Matches(\"\")`;\n }\n\n switch (cssAttr.operator) {\n case '=':\n return `.${methodName}(\"${value}\")`;\n case '*=':\n if (['description', 'text'].includes(attrName)) {\n return `.${methodName}Contains(\"${value}\")`;\n }\n return `.${methodName}Matches(\"${escapeRegExp(value)}\")`;\n case '^=':\n if (['description', 'text'].includes(attrName)) {\n return `.${methodName}StartsWith(\"${value}\")`;\n }\n return `.${methodName}Matches(\"^${escapeRegExp(value)}\")`;\n case '$=':\n return `.${methodName}Matches(\"${escapeRegExp(value)}$\")`;\n case '~=':\n return `.${methodName}Matches(\"${getWordMatcherRegex(value)}\")`;\n default:\n // Unreachable, but adding error in case a new CSS attribute is added.\n throw new Error(`Unsupported CSS attribute operator '${cssAttr.operator}'. ` +\n ` '=', '*=', '^=', '$=' and '~=' are supported.`);\n }\n }\n\n /**\n * Convert a CSS pseudo class to a UiSelector\n *\n * @param {CssPseudo} cssPseudo CSS Pseudo class\n * @returns {string} Pseudo selector parsed as UiSelector\n */\n parsePseudo (cssPseudo) {\n if (cssPseudo.valueType && cssPseudo.valueType !== 'string') {\n throw new Error(`'${cssPseudo.name}=${cssPseudo.value}'. ` +\n `Unsupported css pseudo class value type: '${cssPseudo.valueType}'. Only 'string' type or empty is supported.`);\n }\n\n const pseudoName = assertGetAttrName(cssPseudo);\n\n if (BOOLEAN_ATTRS.includes(pseudoName)) {\n return `.${toSnakeCase(pseudoName)}(${assertGetBool(cssPseudo)})`;\n }\n\n if (NUMERIC_ATTRS.includes(pseudoName)) {\n return `.${pseudoName}(${cssPseudo.value})`;\n }\n }\n\n /**\n * Convert a CSS rule to a UiSelector\n * @param {CssRule} cssRule CSS rule definition\n */\n parseCssRule (cssRule) {\n const { nestingOperator } = cssRule;\n if (nestingOperator && nestingOperator !== ' ') {\n throw new Error(`'${nestingOperator}' is not a supported combinator. ` +\n `Only child combinator (>) and descendant combinator are supported.`);\n }\n\n let uiAutomatorSelector = 'new UiSelector()';\n if (cssRule.tagName && cssRule.tagName !== '*') {\n let androidClass = [cssRule.tagName];\n if (cssRule.classNames) {\n for (const cssClassNames of cssRule.classNames) {\n androidClass.push(cssClassNames);\n }\n uiAutomatorSelector += `.className(\"${androidClass.join('.')}\")`;\n } else {\n uiAutomatorSelector += `.classNameMatches(\"${cssRule.tagName}\")`;\n }\n } else if (cssRule.classNames) {\n uiAutomatorSelector += `.classNameMatches(\"${cssRule.classNames.join('\\\\.')}\")`;\n }\n if (cssRule.id) {\n uiAutomatorSelector += `.resourceId(\"${this.formatIdLocator(cssRule.id)}\")`;\n }\n if (cssRule.attrs) {\n for (const attr of cssRule.attrs) {\n uiAutomatorSelector += this.parseAttr(attr);\n }\n }\n if (cssRule.pseudos) {\n for (const pseudo of cssRule.pseudos) {\n uiAutomatorSelector += this.parsePseudo(pseudo);\n }\n }\n if (cssRule.rule) {\n uiAutomatorSelector += `.childSelector(${this.parseCssRule(cssRule.rule)})`;\n }\n return uiAutomatorSelector;\n }\n\n /**\n * Convert CSS object to UiAutomator2 selector\n * @param {CssObject} css CSS object\n * @returns {string} The CSS object parsed as a UiSelector\n */\n parseCssObject (css) {\n switch (css.type) {\n case 'rule':\n return this.parseCssRule(css);\n case 'ruleSet':\n return this.parseCssObject(css.rule);\n case 'selectors':\n return css.selectors.map((selector) => this.parseCssObject(selector)).join('; ');\n\n default:\n // This is never reachable, but if it ever is do this.\n throw new Error(`UiAutomator does not support '${css.type}' css. Only supports 'rule', 'ruleSet', 'selectors' `);\n }\n }\n\n /**\n * Convert a CSS selector to a UiAutomator2 selector\n *\n * @returns {string} The CSS selector converted to a UiSelector\n */\n toUiAutomatorSelector () {\n let cssObj;\n try {\n cssObj = parser.parse(this.selector);\n } catch (e) {\n throw new errors.InvalidSelectorError(`Invalid CSS selector '${this.selector}'. Reason: '${e}'`);\n }\n try {\n return this.parseCssObject(cssObj);\n } catch (e) {\n throw new errors.InvalidSelectorError(`Unsupported CSS selector '${this.selector}'. Reason: '${e}'`);\n }\n }\n}\n\nexport default CssConverter;"],"mappings":"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"}
1
+ {"version":3,"file":"css-converter.js","names":["_cssSelectorParser","require","_lodash","_driver","parser","CssSelectorParser","registerSelectorPseudos","registerNestingOperators","registerAttrEqualityMods","enableSubstitutes","RESOURCE_ID","ID_LOCATOR_PATTERN","BOOLEAN_ATTRS","NUMERIC_ATTRS","STR_ATTRS","ALL_ATTRS","ATTRIBUTE_ALIASES","toSnakeCase","str","tokens","split","map","charAt","toUpperCase","slice","toLowerCase","out","join","assertGetBool","css","_css$value","val","value","includes","Error","name","assertGetAttrName","attrName","officialAttr","aliasAttrs","getWordMatcherRegex","word","escapeRegExp","CssConverter","constructor","selector","pkg","formatIdLocator","locator","test","parseAttr","cssAttr","valueType","methodName","operator","parsePseudo","cssPseudo","pseudoName","parseCssRule","cssRule","nestingOperator","uiAutomatorSelector","tagName","androidClass","classNames","cssClassNames","push","id","attrs","attr","pseudos","pseudo","rule","parseCssObject","type","selectors","toUiAutomatorSelector","cssObj","parse","e","errors","InvalidSelectorError","_default","exports","default"],"sources":["../../lib/css-converter.js"],"sourcesContent":["import { CssSelectorParser } from 'css-selector-parser';\nimport { escapeRegExp } from 'lodash';\nimport { errors } from 'appium/driver';\n\nconst parser = new CssSelectorParser();\nparser.registerSelectorPseudos('has');\nparser.registerNestingOperators('>', '+', '~');\nparser.registerAttrEqualityMods('^', '$', '*', '~');\nparser.enableSubstitutes();\n\nconst RESOURCE_ID = 'resource-id';\nconst ID_LOCATOR_PATTERN = /^[a-zA-Z_][a-zA-Z0-9._]*:id\\/[\\S]+$/;\n\nconst BOOLEAN_ATTRS = [\n 'checkable', 'checked', 'clickable', 'enabled', 'focusable',\n 'focused', 'long-clickable', 'scrollable', 'selected',\n];\n\nconst NUMERIC_ATTRS = [\n 'index', 'instance',\n];\n\nconst STR_ATTRS = [\n 'description', RESOURCE_ID, 'text', 'class-name', 'package-name'\n];\n\nconst ALL_ATTRS = [\n ...BOOLEAN_ATTRS,\n ...NUMERIC_ATTRS,\n ...STR_ATTRS,\n];\n\nconst ATTRIBUTE_ALIASES = [\n [RESOURCE_ID, ['id']],\n ['description', [\n 'content-description', 'content-desc',\n 'desc', 'accessibility-id',\n ]],\n ['index', ['nth-child']],\n];\n\n/**\n * Convert hyphen separated word to snake case\n *\n * @param {string} str\n * @returns {string} The hyphen separated word translated to snake case\n */\nfunction toSnakeCase (str) {\n if (!str) {\n return '';\n }\n const tokens = str.split('-').map((str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase());\n const out = tokens.join('');\n return out.charAt(0).toLowerCase() + out.slice(1);\n}\n\n/**\n * @typedef {Object} CssNameValueObject\n * @property {?name} name The name of the CSS object\n * @property {?string} value The value of the CSS object\n */\n\n/**\n * Get the boolean from a CSS object. If empty, return true. If not true/false/empty, throw exception\n *\n * @param {CssNameValueObject} css A CSS object that has 'name' and 'value'\n * @returns {string} Either 'true' or 'false'. If value is empty, return 'true'\n */\nfunction assertGetBool (css) {\n const val = css.value?.toLowerCase() || 'true'; // an omitted boolean attribute means 'true' (e.g.: input[checked] means checked is true)\n if (['true', 'false'].includes(val)) {\n return val;\n }\n throw new Error(`'${css.name}' must be true, false or empty. Found '${css.value}'`);\n}\n\n/**\n * Get the canonical form of a CSS attribute name\n *\n * Converts to lowercase and if an attribute name is an alias for something else, return\n * what it is an alias for\n *\n * @param {Object} css CSS object\n * @returns {string} The canonical attribute name\n */\nfunction assertGetAttrName (css) {\n const attrName = css.name.toLowerCase();\n\n // Check if it's supported and if it is, return it\n if (ALL_ATTRS.includes(attrName)) {\n return attrName.toLowerCase();\n }\n\n // If attrName is an alias for something else, return that\n for (const [officialAttr, aliasAttrs] of ATTRIBUTE_ALIASES) {\n if (aliasAttrs.includes(attrName)) {\n return officialAttr;\n }\n }\n throw new Error(`'${attrName}' is not a valid attribute. ` +\n `Supported attributes are '${ALL_ATTRS.join(', ')}'`);\n}\n\n/**\n * Get a regex that matches a whole word. For the ~= CSS attribute selector.\n *\n * @param {string} word\n * @returns {string} A regex \"word\" matcher\n */\nfunction getWordMatcherRegex (word) {\n return `\\\\b(\\\\w*${escapeRegExp(word)}\\\\w*)\\\\b`;\n}\n\n/**\n * @typedef {Object} CssAttr\n * @property {?string} valueType Type of attribute (must be string or empty)\n * @property {?string} value Value of the attribute\n * @property {?string} operator The operator between value and value type (=, *=, , ^=, $=)\n */\n\n/**\n * @typedef {Object} CssRule\n * @property {?string} nestingOperator The nesting operator (aka: combinator https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors)\n * @property {?string} tagName The tag name (aka: type selector https://developer.mozilla.org/en-US/docs/Web/CSS/Type_selectors)\n * @property {?string[]} classNames An array of CSS class names\n * @property {?CssAttr[]} attrs An array of CSS attributes\n * @property {?CssPseudo[]} attrs An array of CSS pseudos\n * @property {?string} id CSS identifier\n * @property {?CssRule} rule A descendant of this CSS rule\n */\n\n/**\n * @typedef {Object} CssObject\n * @property {?string} type Type of CSS object. 'rule', 'ruleset' or 'selectors'\n */\n\n/**\n * @typedef {Object} CssPseudo\n * @property {?string} valueType The type of CSS pseudo selector (https://www.npmjs.com/package/css-selector-parser for reference)\n * @property {?string} name The name of the pseudo selector\n * @property {?string} value The value of the pseudo selector\n */\n\nclass CssConverter {\n\n constructor (selector, pkg) {\n this.selector = selector;\n this.pkg = pkg;\n }\n\n /**\n * Add `<pkgName>:id/` prefix to beginning of string if it's not there already\n *\n * @param {string} locator The initial locator\n * @returns {string} String with `<pkgName>:id/` prepended (if it wasn't already)\n */\n formatIdLocator (locator) {\n return ID_LOCATOR_PATTERN.test(locator)\n ? locator\n : `${this.pkg || 'android'}:id/${locator}`;\n }\n\n /**\n * Convert a CSS attribute into a UiSelector method call\n *\n * @param {CssAttr} cssAttr CSS attribute object\n * @returns {string} CSS attribute parsed as UiSelector\n */\n parseAttr (cssAttr) {\n if (cssAttr.valueType && cssAttr.valueType !== 'string') {\n throw new Error(`'${cssAttr.name}=${cssAttr.value}' is an invalid attribute. ` +\n `Only 'string' and empty attribute types are supported. Found '${cssAttr.valueType}'`);\n }\n const attrName = assertGetAttrName(cssAttr);\n const methodName = toSnakeCase(attrName);\n\n // Validate that it's a supported attribute\n if (!STR_ATTRS.includes(attrName) && !BOOLEAN_ATTRS.includes(attrName)) {\n throw new Error(`'${attrName}' is not supported. Supported attributes are ` +\n `'${[...STR_ATTRS, ...BOOLEAN_ATTRS].join(', ')}'`);\n }\n\n // Parse boolean, if it's a boolean attribute\n if (BOOLEAN_ATTRS.includes(attrName)) {\n return `.${methodName}(${assertGetBool(cssAttr)})`;\n }\n\n // Otherwise parse as string\n let value = cssAttr.value || '';\n if (attrName === RESOURCE_ID) {\n value = this.formatIdLocator(value);\n }\n if (value === '') {\n return `.${methodName}Matches(\"\")`;\n }\n\n switch (cssAttr.operator) {\n case '=':\n return `.${methodName}(\"${value}\")`;\n case '*=':\n if (['description', 'text'].includes(attrName)) {\n return `.${methodName}Contains(\"${value}\")`;\n }\n return `.${methodName}Matches(\"${escapeRegExp(value)}\")`;\n case '^=':\n if (['description', 'text'].includes(attrName)) {\n return `.${methodName}StartsWith(\"${value}\")`;\n }\n return `.${methodName}Matches(\"^${escapeRegExp(value)}\")`;\n case '$=':\n return `.${methodName}Matches(\"${escapeRegExp(value)}$\")`;\n case '~=':\n return `.${methodName}Matches(\"${getWordMatcherRegex(value)}\")`;\n default:\n // Unreachable, but adding error in case a new CSS attribute is added.\n throw new Error(`Unsupported CSS attribute operator '${cssAttr.operator}'. ` +\n ` '=', '*=', '^=', '$=' and '~=' are supported.`);\n }\n }\n\n /**\n * Convert a CSS pseudo class to a UiSelector\n *\n * @param {CssPseudo} cssPseudo CSS Pseudo class\n * @returns {string} Pseudo selector parsed as UiSelector\n */\n parsePseudo (cssPseudo) {\n if (cssPseudo.valueType && cssPseudo.valueType !== 'string') {\n throw new Error(`'${cssPseudo.name}=${cssPseudo.value}'. ` +\n `Unsupported css pseudo class value type: '${cssPseudo.valueType}'. Only 'string' type or empty is supported.`);\n }\n\n const pseudoName = assertGetAttrName(cssPseudo);\n\n if (BOOLEAN_ATTRS.includes(pseudoName)) {\n return `.${toSnakeCase(pseudoName)}(${assertGetBool(cssPseudo)})`;\n }\n\n if (NUMERIC_ATTRS.includes(pseudoName)) {\n return `.${pseudoName}(${cssPseudo.value})`;\n }\n }\n\n /**\n * Convert a CSS rule to a UiSelector\n * @param {CssRule} cssRule CSS rule definition\n */\n parseCssRule (cssRule) {\n const { nestingOperator } = cssRule;\n if (nestingOperator && nestingOperator !== ' ') {\n throw new Error(`'${nestingOperator}' is not a supported combinator. ` +\n `Only child combinator (>) and descendant combinator are supported.`);\n }\n\n let uiAutomatorSelector = 'new UiSelector()';\n if (cssRule.tagName && cssRule.tagName !== '*') {\n let androidClass = [cssRule.tagName];\n if (cssRule.classNames) {\n for (const cssClassNames of cssRule.classNames) {\n androidClass.push(cssClassNames);\n }\n uiAutomatorSelector += `.className(\"${androidClass.join('.')}\")`;\n } else {\n uiAutomatorSelector += `.classNameMatches(\"${cssRule.tagName}\")`;\n }\n } else if (cssRule.classNames) {\n uiAutomatorSelector += `.classNameMatches(\"${cssRule.classNames.join('\\\\.')}\")`;\n }\n if (cssRule.id) {\n uiAutomatorSelector += `.resourceId(\"${this.formatIdLocator(cssRule.id)}\")`;\n }\n if (cssRule.attrs) {\n for (const attr of cssRule.attrs) {\n uiAutomatorSelector += this.parseAttr(attr);\n }\n }\n if (cssRule.pseudos) {\n for (const pseudo of cssRule.pseudos) {\n uiAutomatorSelector += this.parsePseudo(pseudo);\n }\n }\n if (cssRule.rule) {\n uiAutomatorSelector += `.childSelector(${this.parseCssRule(cssRule.rule)})`;\n }\n return uiAutomatorSelector;\n }\n\n /**\n * Convert CSS object to UiAutomator2 selector\n * @param {CssObject} css CSS object\n * @returns {string} The CSS object parsed as a UiSelector\n */\n parseCssObject (css) {\n switch (css.type) {\n case 'rule':\n return this.parseCssRule(css);\n case 'ruleSet':\n return this.parseCssObject(css.rule);\n case 'selectors':\n return css.selectors.map((selector) => this.parseCssObject(selector)).join('; ');\n\n default:\n // This is never reachable, but if it ever is do this.\n throw new Error(`UiAutomator does not support '${css.type}' css. Only supports 'rule', 'ruleSet', 'selectors' `);\n }\n }\n\n /**\n * Convert a CSS selector to a UiAutomator2 selector\n *\n * @returns {string} The CSS selector converted to a UiSelector\n */\n toUiAutomatorSelector () {\n let cssObj;\n try {\n cssObj = parser.parse(this.selector);\n } catch (e) {\n throw new errors.InvalidSelectorError(`Invalid CSS selector '${this.selector}'. Reason: '${e}'`);\n }\n try {\n return this.parseCssObject(cssObj);\n } catch (e) {\n throw new errors.InvalidSelectorError(`Unsupported CSS selector '${this.selector}'. Reason: '${e}'`);\n }\n }\n}\n\nexport default CssConverter;"],"mappings":"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"}
@@ -67,4 +67,4 @@ let desiredCapConstraints = {};
67
67
  Object.assign(desiredCapConstraints, uiautomatorCapConstraints, _appiumAndroidDriver.commonCapConstraints);
68
68
  var _default = desiredCapConstraints;
69
69
  exports.default = _default;
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1aWF1dG9tYXRvckNhcENvbnN0cmFpbnRzIiwiYXBwIiwicHJlc2VuY2UiLCJpc1N0cmluZyIsImF1dG9tYXRpb25OYW1lIiwiYnJvd3Nlck5hbWUiLCJsYXVuY2hUaW1lb3V0IiwiaXNOdW1iZXIiLCJza2lwVW5sb2NrIiwiaXNCb29sZWFuIiwidWlhdXRvbWF0b3IyU2VydmVyTGF1bmNoVGltZW91dCIsInVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0IiwidWlhdXRvbWF0b3IyU2VydmVyUmVhZFRpbWVvdXQiLCJkaXNhYmxlV2luZG93QW5pbWF0aW9uIiwic3lzdGVtUG9ydCIsIm1qcGVnU2VydmVyUG9ydCIsIm1qcGVnU2NyZWVuc2hvdFVybCIsInNraXBTZXJ2ZXJJbnN0YWxsYXRpb24iLCJhbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQiLCJ1c2VyUHJvZmlsZSIsImFwcFdhaXRGb3JMYXVuY2giLCJkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSIsImZvcmNlQXBwTGF1bmNoIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwiT2JqZWN0IiwiYXNzaWduIiwiY29tbW9uQ2FwQ29uc3RyYWludHMiXSwic291cmNlcyI6WyIuLi8uLi9saWIvZGVzaXJlZC1jYXBzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbW1vbkNhcENvbnN0cmFpbnRzIH0gZnJvbSAnYXBwaXVtLWFuZHJvaWQtZHJpdmVyJztcblxubGV0IHVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMgPSB7XG4gIGFwcDoge1xuICAgIHByZXNlbmNlOiB0cnVlLFxuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGF1dG9tYXRpb25OYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYnJvd3Nlck5hbWU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBsYXVuY2hUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgc2tpcFVubG9jazoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1aWF1dG9tYXRvcjJTZXJ2ZXJMYXVuY2hUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgdWlhdXRvbWF0b3IyU2VydmVySW5zdGFsbFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB1aWF1dG9tYXRvcjJTZXJ2ZXJSZWFkVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGRpc2FibGVXaW5kb3dBbmltYXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc3lzdGVtUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG1qcGVnU2VydmVyUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG1qcGVnU2NyZWVuc2hvdFVybDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHNraXBTZXJ2ZXJJbnN0YWxsYXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgdXNlclByb2ZpbGU6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhcHBXYWl0Rm9yTGF1bmNoOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGZvcmNlQXBwTGF1bmNoOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH1cbn07XG5cbmxldCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7fTtcbk9iamVjdC5hc3NpZ24oXG4gIGRlc2lyZWRDYXBDb25zdHJhaW50cyxcbiAgdWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyxcbiAgY29tbW9uQ2FwQ29uc3RyYWludHNcbik7XG5cbmV4cG9ydCBkZWZhdWx0IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBRUEsSUFBSUEseUJBQXlCLEdBQUc7RUFDOUJDLEdBQUcsRUFBRTtJQUNIQyxRQUFRLEVBQUUsSUFBSTtJQUNkQyxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RDLGNBQWMsRUFBRTtJQUNkRCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RFLFdBQVcsRUFBRTtJQUNYRixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RHLGFBQWEsRUFBRTtJQUNiQyxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RDLFVBQVUsRUFBRTtJQUNWQyxTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RDLCtCQUErQixFQUFFO0lBQy9CSCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RJLGdDQUFnQyxFQUFFO0lBQ2hDSixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RLLDZCQUE2QixFQUFFO0lBQzdCTCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RNLHNCQUFzQixFQUFFO0lBQ3RCSixTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RLLFVBQVUsRUFBRTtJQUNWUCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RRLGVBQWUsRUFBRTtJQUNmUixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RTLGtCQUFrQixFQUFFO0lBQ2xCYixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RjLHNCQUFzQixFQUFFO0lBQ3RCUixTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RTLHdCQUF3QixFQUFFO0lBQ3hCZixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RnQixXQUFXLEVBQUU7SUFDWFosUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNEYSxnQkFBZ0IsRUFBRTtJQUNoQlgsU0FBUyxFQUFFO0VBQ2IsQ0FBQztFQUNEWSxtQ0FBbUMsRUFBRTtJQUNuQ1osU0FBUyxFQUFFO0VBQ2IsQ0FBQztFQUNEYSxjQUFjLEVBQUU7SUFDZGIsU0FBUyxFQUFFO0VBQ2I7QUFDRixDQUFDO0FBRUQsSUFBSWMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBQzlCQyxNQUFNLENBQUNDLE1BQU0sQ0FDWEYscUJBQXFCLEVBQ3JCdkIseUJBQXlCLEVBQ3pCMEIseUNBQW9CLENBQ3JCO0FBQUMsZUFFYUgscUJBQXFCO0FBQUEifQ==
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXBwaXVtQW5kcm9pZERyaXZlciIsInJlcXVpcmUiLCJ1aWF1dG9tYXRvckNhcENvbnN0cmFpbnRzIiwiYXBwIiwicHJlc2VuY2UiLCJpc1N0cmluZyIsImF1dG9tYXRpb25OYW1lIiwiYnJvd3Nlck5hbWUiLCJsYXVuY2hUaW1lb3V0IiwiaXNOdW1iZXIiLCJza2lwVW5sb2NrIiwiaXNCb29sZWFuIiwidWlhdXRvbWF0b3IyU2VydmVyTGF1bmNoVGltZW91dCIsInVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0IiwidWlhdXRvbWF0b3IyU2VydmVyUmVhZFRpbWVvdXQiLCJkaXNhYmxlV2luZG93QW5pbWF0aW9uIiwic3lzdGVtUG9ydCIsIm1qcGVnU2VydmVyUG9ydCIsIm1qcGVnU2NyZWVuc2hvdFVybCIsInNraXBTZXJ2ZXJJbnN0YWxsYXRpb24iLCJhbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQiLCJ1c2VyUHJvZmlsZSIsImFwcFdhaXRGb3JMYXVuY2giLCJkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSIsImZvcmNlQXBwTGF1bmNoIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwiT2JqZWN0IiwiYXNzaWduIiwiY29tbW9uQ2FwQ29uc3RyYWludHMiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2Rlc2lyZWQtY2Fwcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21tb25DYXBDb25zdHJhaW50cyB9IGZyb20gJ2FwcGl1bS1hbmRyb2lkLWRyaXZlcic7XG5cbmxldCB1aWF1dG9tYXRvckNhcENvbnN0cmFpbnRzID0ge1xuICBhcHA6IHtcbiAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhdXRvbWF0aW9uTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGJyb3dzZXJOYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbGF1bmNoVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHNraXBVbmxvY2s6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdWlhdXRvbWF0b3IyU2VydmVyTGF1bmNoVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgdWlhdXRvbWF0b3IyU2VydmVyUmVhZFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBkaXNhYmxlV2luZG93QW5pbWF0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHN5c3RlbVBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBtanBlZ1NlcnZlclBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBtanBlZ1NjcmVlbnNob3RVcmw6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBza2lwU2VydmVySW5zdGFsbGF0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWRDb3ZlcmFnZUVuZEludGVudDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHVzZXJQcm9maWxlOiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYXBwV2FpdEZvckxhdW5jaDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBmb3JjZUFwcExhdW5jaDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9XG59O1xuXG5sZXQgZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge307XG5PYmplY3QuYXNzaWduKFxuICBkZXNpcmVkQ2FwQ29uc3RyYWludHMsXG4gIHVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMsXG4gIGNvbW1vbkNhcENvbnN0cmFpbnRzXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBkZXNpcmVkQ2FwQ29uc3RyYWludHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxvQkFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBSUMseUJBQXlCLEdBQUc7RUFDOUJDLEdBQUcsRUFBRTtJQUNIQyxRQUFRLEVBQUUsSUFBSTtJQUNkQyxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RDLGNBQWMsRUFBRTtJQUNkRCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RFLFdBQVcsRUFBRTtJQUNYRixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RHLGFBQWEsRUFBRTtJQUNiQyxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RDLFVBQVUsRUFBRTtJQUNWQyxTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RDLCtCQUErQixFQUFFO0lBQy9CSCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RJLGdDQUFnQyxFQUFFO0lBQ2hDSixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RLLDZCQUE2QixFQUFFO0lBQzdCTCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RNLHNCQUFzQixFQUFFO0lBQ3RCSixTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RLLFVBQVUsRUFBRTtJQUNWUCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RRLGVBQWUsRUFBRTtJQUNmUixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RTLGtCQUFrQixFQUFFO0lBQ2xCYixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RjLHNCQUFzQixFQUFFO0lBQ3RCUixTQUFTLEVBQUU7RUFDYixDQUFDO0VBQ0RTLHdCQUF3QixFQUFFO0lBQ3hCZixRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0RnQixXQUFXLEVBQUU7SUFDWFosUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNEYSxnQkFBZ0IsRUFBRTtJQUNoQlgsU0FBUyxFQUFFO0VBQ2IsQ0FBQztFQUNEWSxtQ0FBbUMsRUFBRTtJQUNuQ1osU0FBUyxFQUFFO0VBQ2IsQ0FBQztFQUNEYSxjQUFjLEVBQUU7SUFDZGIsU0FBUyxFQUFFO0VBQ2I7QUFDRixDQUFDO0FBRUQsSUFBSWMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBQzlCQyxNQUFNLENBQUNDLE1BQU0sQ0FDWEYscUJBQXFCLEVBQ3JCdkIseUJBQXlCLEVBQ3pCMEIseUNBQW9CLENBQ3JCO0FBQUMsSUFBQUMsUUFBQSxHQUVhSixxQkFBcUI7QUFBQUssT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUEifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"desired-caps.js","names":["uiautomatorCapConstraints","app","presence","isString","automationName","browserName","launchTimeout","isNumber","skipUnlock","isBoolean","uiautomator2ServerLaunchTimeout","uiautomator2ServerInstallTimeout","uiautomator2ServerReadTimeout","disableWindowAnimation","systemPort","mjpegServerPort","mjpegScreenshotUrl","skipServerInstallation","androidCoverageEndIntent","userProfile","appWaitForLaunch","disableSuppressAccessibilityService","forceAppLaunch","desiredCapConstraints","Object","assign","commonCapConstraints"],"sources":["../../lib/desired-caps.js"],"sourcesContent":["import { commonCapConstraints } from 'appium-android-driver';\n\nlet uiautomatorCapConstraints = {\n app: {\n presence: true,\n isString: true\n },\n automationName: {\n isString: true\n },\n browserName: {\n isString: true\n },\n launchTimeout: {\n isNumber: true\n },\n skipUnlock: {\n isBoolean: true\n },\n uiautomator2ServerLaunchTimeout: {\n isNumber: true\n },\n uiautomator2ServerInstallTimeout: {\n isNumber: true\n },\n uiautomator2ServerReadTimeout: {\n isNumber: true\n },\n disableWindowAnimation: {\n isBoolean: true\n },\n systemPort: {\n isNumber: true\n },\n mjpegServerPort: {\n isNumber: true\n },\n mjpegScreenshotUrl: {\n isString: true\n },\n skipServerInstallation: {\n isBoolean: true\n },\n androidCoverageEndIntent: {\n isString: true\n },\n userProfile: {\n isNumber: true\n },\n appWaitForLaunch: {\n isBoolean: true\n },\n disableSuppressAccessibilityService: {\n isBoolean: true\n },\n forceAppLaunch: {\n isBoolean: true\n }\n};\n\nlet desiredCapConstraints = {};\nObject.assign(\n desiredCapConstraints,\n uiautomatorCapConstraints,\n commonCapConstraints\n);\n\nexport default desiredCapConstraints;\n"],"mappings":";;;;;;;AAAA;AAEA,IAAIA,yBAAyB,GAAG;EAC9BC,GAAG,EAAE;IACHC,QAAQ,EAAE,IAAI;IACdC,QAAQ,EAAE;EACZ,CAAC;EACDC,cAAc,EAAE;IACdD,QAAQ,EAAE;EACZ,CAAC;EACDE,WAAW,EAAE;IACXF,QAAQ,EAAE;EACZ,CAAC;EACDG,aAAa,EAAE;IACbC,QAAQ,EAAE;EACZ,CAAC;EACDC,UAAU,EAAE;IACVC,SAAS,EAAE;EACb,CAAC;EACDC,+BAA+B,EAAE;IAC/BH,QAAQ,EAAE;EACZ,CAAC;EACDI,gCAAgC,EAAE;IAChCJ,QAAQ,EAAE;EACZ,CAAC;EACDK,6BAA6B,EAAE;IAC7BL,QAAQ,EAAE;EACZ,CAAC;EACDM,sBAAsB,EAAE;IACtBJ,SAAS,EAAE;EACb,CAAC;EACDK,UAAU,EAAE;IACVP,QAAQ,EAAE;EACZ,CAAC;EACDQ,eAAe,EAAE;IACfR,QAAQ,EAAE;EACZ,CAAC;EACDS,kBAAkB,EAAE;IAClBb,QAAQ,EAAE;EACZ,CAAC;EACDc,sBAAsB,EAAE;IACtBR,SAAS,EAAE;EACb,CAAC;EACDS,wBAAwB,EAAE;IACxBf,QAAQ,EAAE;EACZ,CAAC;EACDgB,WAAW,EAAE;IACXZ,QAAQ,EAAE;EACZ,CAAC;EACDa,gBAAgB,EAAE;IAChBX,SAAS,EAAE;EACb,CAAC;EACDY,mCAAmC,EAAE;IACnCZ,SAAS,EAAE;EACb,CAAC;EACDa,cAAc,EAAE;IACdb,SAAS,EAAE;EACb;AACF,CAAC;AAED,IAAIc,qBAAqB,GAAG,CAAC,CAAC;AAC9BC,MAAM,CAACC,MAAM,CACXF,qBAAqB,EACrBvB,yBAAyB,EACzB0B,yCAAoB,CACrB;AAAC,eAEaH,qBAAqB;AAAA"}
1
+ {"version":3,"file":"desired-caps.js","names":["_appiumAndroidDriver","require","uiautomatorCapConstraints","app","presence","isString","automationName","browserName","launchTimeout","isNumber","skipUnlock","isBoolean","uiautomator2ServerLaunchTimeout","uiautomator2ServerInstallTimeout","uiautomator2ServerReadTimeout","disableWindowAnimation","systemPort","mjpegServerPort","mjpegScreenshotUrl","skipServerInstallation","androidCoverageEndIntent","userProfile","appWaitForLaunch","disableSuppressAccessibilityService","forceAppLaunch","desiredCapConstraints","Object","assign","commonCapConstraints","_default","exports","default"],"sources":["../../lib/desired-caps.js"],"sourcesContent":["import { commonCapConstraints } from 'appium-android-driver';\n\nlet uiautomatorCapConstraints = {\n app: {\n presence: true,\n isString: true\n },\n automationName: {\n isString: true\n },\n browserName: {\n isString: true\n },\n launchTimeout: {\n isNumber: true\n },\n skipUnlock: {\n isBoolean: true\n },\n uiautomator2ServerLaunchTimeout: {\n isNumber: true\n },\n uiautomator2ServerInstallTimeout: {\n isNumber: true\n },\n uiautomator2ServerReadTimeout: {\n isNumber: true\n },\n disableWindowAnimation: {\n isBoolean: true\n },\n systemPort: {\n isNumber: true\n },\n mjpegServerPort: {\n isNumber: true\n },\n mjpegScreenshotUrl: {\n isString: true\n },\n skipServerInstallation: {\n isBoolean: true\n },\n androidCoverageEndIntent: {\n isString: true\n },\n userProfile: {\n isNumber: true\n },\n appWaitForLaunch: {\n isBoolean: true\n },\n disableSuppressAccessibilityService: {\n isBoolean: true\n },\n forceAppLaunch: {\n isBoolean: true\n }\n};\n\nlet desiredCapConstraints = {};\nObject.assign(\n desiredCapConstraints,\n uiautomatorCapConstraints,\n commonCapConstraints\n);\n\nexport default desiredCapConstraints;\n"],"mappings":";;;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AAEA,IAAIC,yBAAyB,GAAG;EAC9BC,GAAG,EAAE;IACHC,QAAQ,EAAE,IAAI;IACdC,QAAQ,EAAE;EACZ,CAAC;EACDC,cAAc,EAAE;IACdD,QAAQ,EAAE;EACZ,CAAC;EACDE,WAAW,EAAE;IACXF,QAAQ,EAAE;EACZ,CAAC;EACDG,aAAa,EAAE;IACbC,QAAQ,EAAE;EACZ,CAAC;EACDC,UAAU,EAAE;IACVC,SAAS,EAAE;EACb,CAAC;EACDC,+BAA+B,EAAE;IAC/BH,QAAQ,EAAE;EACZ,CAAC;EACDI,gCAAgC,EAAE;IAChCJ,QAAQ,EAAE;EACZ,CAAC;EACDK,6BAA6B,EAAE;IAC7BL,QAAQ,EAAE;EACZ,CAAC;EACDM,sBAAsB,EAAE;IACtBJ,SAAS,EAAE;EACb,CAAC;EACDK,UAAU,EAAE;IACVP,QAAQ,EAAE;EACZ,CAAC;EACDQ,eAAe,EAAE;IACfR,QAAQ,EAAE;EACZ,CAAC;EACDS,kBAAkB,EAAE;IAClBb,QAAQ,EAAE;EACZ,CAAC;EACDc,sBAAsB,EAAE;IACtBR,SAAS,EAAE;EACb,CAAC;EACDS,wBAAwB,EAAE;IACxBf,QAAQ,EAAE;EACZ,CAAC;EACDgB,WAAW,EAAE;IACXZ,QAAQ,EAAE;EACZ,CAAC;EACDa,gBAAgB,EAAE;IAChBX,SAAS,EAAE;EACb,CAAC;EACDY,mCAAmC,EAAE;IACnCZ,SAAS,EAAE;EACb,CAAC;EACDa,cAAc,EAAE;IACdb,SAAS,EAAE;EACb;AACF,CAAC;AAED,IAAIc,qBAAqB,GAAG,CAAC,CAAC;AAC9BC,MAAM,CAACC,MAAM,CACXF,qBAAqB,EACrBvB,yBAAyB,EACzB0B,yCAAoB,CACrB;AAAC,IAAAC,QAAA,GAEaJ,qBAAqB;AAAAK,OAAA,CAAAC,OAAA,GAAAF,QAAA"}