appium-remote-debugger 9.1.14 → 9.1.16

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.
@@ -173,4 +173,4 @@ class RpcMessageHandler extends _events.default {
173
173
  }
174
174
  }
175
175
  exports.default = RpcMessageHandler;
176
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX3N1cHBvcnQiLCJfZXZlbnRzIiwiUnBjTWVzc2FnZUhhbmRsZXIiLCJFdmVudEVtaXR0ZXJzIiwiY29uc3RydWN0b3IiLCJpc1RhcmdldEJhc2VkIiwiX2lzVGFyZ2V0QmFzZWQiLCJoYW5kbGVNZXNzYWdlIiwicGxpc3QiLCJzZWxlY3RvciIsIl9fc2VsZWN0b3IiLCJsb2ciLCJkZWJ1ZyIsImFyZ3VtZW50IiwiX19hcmd1bWVudCIsImVtaXQiLCJXSVJTaW11bGF0b3JOYW1lS2V5IiwiV0lSU2ltdWxhdG9yQnVpbGRLZXkiLCJXSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleSIsIldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSIsIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsIldJUkxpc3RpbmdLZXkiLCJoYW5kbGVEYXRhTWVzc2FnZSIsInBhcnNlRGF0YUtleSIsIkpTT04iLCJwYXJzZSIsIldJUk1lc3NhZ2VEYXRhS2V5IiwidG9TdHJpbmciLCJlcnIiLCJlcnJvciIsIl8iLCJ0cnVuY2F0ZSIsInN0cmluZ2lmeSIsImxlbmd0aCIsIkVycm9yIiwibWVzc2FnZSIsImRpc3BhdGNoRGF0YU1lc3NhZ2UiLCJtc2dJZCIsIm1ldGhvZCIsInBhcmFtcyIsInJlc3VsdCIsImlzRW1wdHkiLCJsaXN0ZW5lckNvdW50IiwiX3Jlc3VsdCIsImhhcyIsInZhbHVlIiwiZXZlbnROYW1lcyIsImFyZ3MiLCJwdXNoIiwicmVjb3JkIiwiY29udGV4dCIsInN0YXJ0c1dpdGgiLCJuYW1lIiwiX3Jlc3VsdDIiLCJkYXRhS2V5IiwiaWQiLCJhcHAiLCJ0YXJnZXRJbmZvIiwib2xkVGFyZ2V0SWQiLCJuZXdUYXJnZXRJZCIsInRhcmdldElkIiwid2FybiIsInV0aWwiLCJqc29uU3RyaW5naWZ5Iiwid2FzVGhyb3duIiwiX3Jlc3VsdDMiLCJfcmVzdWx0MyRyZXN1bHQiLCJfcmVzdWx0NCIsIl9yZXN1bHQ0JHJlc3VsdCIsIl9yZXN1bHQ1IiwiX3Jlc3VsdDUkcmVzdWx0IiwiX3Jlc3VsdDYiLCJfcmVzdWx0NiRyZXN1bHQiLCJkZXNjcmlwdGlvbiIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9ycGMtbWVzc2FnZS1oYW5kbGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBFdmVudEVtaXR0ZXJzIGZyb20gJ2V2ZW50cyc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnBjTWVzc2FnZUhhbmRsZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXJzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgc2V0IGlzVGFyZ2V0QmFzZWQgKGlzVGFyZ2V0QmFzZWQpIHtcbiAgICB0aGlzLl9pc1RhcmdldEJhc2VkID0gISFpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlTWVzc2FnZSAocGxpc3QpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IHBsaXN0Ll9fc2VsZWN0b3I7XG4gICAgaWYgKCFzZWxlY3Rvcikge1xuICAgICAgbG9nLmRlYnVnKCdHb3QgYW4gaW52YWxpZCBwbGlzdCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3VtZW50ID0gcGxpc3QuX19hcmd1bWVudDtcbiAgICBzd2l0Y2ggKHNlbGVjdG9yKSB7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydFNldHVwOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRTZXR1cDonLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYXJndW1lbnQuV0lSU2ltdWxhdG9yTmFtZUtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JCdWlsZEtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q29ubmVjdGVkQXBwbGljYXRpb25MaXN0Oic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50TGlzdGluZzonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJMaXN0aW5nS2V5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25EaXNjb25uZWN0ZWQ6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX2FwcGxpY2F0aW9uVXBkYXRlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25VcGRhdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q3VycmVudFN0YXRlOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDdXJyZW50U3RhdGU6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50RGF0YTonOlxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZURhdGFNZXNzYWdlKHBsaXN0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsb2cuZGVidWcoYERlYnVnZ2VyIGdvdCBhIG1lc3NhZ2UgZm9yICcke3NlbGVjdG9yfScgYW5kIGhhdmUgbm8gYCArXG4gICAgICAgICAgYGhhbmRsZXIsIGRvaW5nIG5vdGhpbmcuYCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRhS2V5IChwbGlzdCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShwbGlzdC5fX2FyZ3VtZW50LldJUk1lc3NhZ2VEYXRhS2V5LnRvU3RyaW5nKCd1dGY4JykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKGBVbnBhcnNlYWJsZSBtZXNzYWdlIGRhdGE6ICR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShwbGlzdCksIHtsZW5ndGg6IDEwMH0pfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgbWVzc2FnZSBkYXRhOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc3BhdGNoRGF0YU1lc3NhZ2UgKG1zZ0lkLCBtZXRob2QsIHBhcmFtcywgcmVzdWx0LCBlcnJvcikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICBpZiAoIV8uaXNFbXB0eShtc2dJZCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgSGFuZGxpbmcgbWVzc2FnZSAoaWQ6ICcke21zZ0lkfScpYCk7XG4gICAgfVxuXG4gICAgaWYgKG1zZ0lkKSB7XG4gICAgICBpZiAodGhpcy5saXN0ZW5lckNvdW50KG1zZ0lkKSkge1xuICAgICAgICBpZiAoXy5oYXMocmVzdWx0Py5yZXN1bHQsICd2YWx1ZScpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQobXNnSWQsIGVycm9yLCByZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yKGBXZWIgSW5zcGVjdG9yIHJldHVybmVkIGRhdGEgZm9yIG1lc3NhZ2UgJyR7bXNnSWR9JyBgICtcbiAgICAgICAgICBgYnV0IHdlIHdlcmUgbm90IHdhaXRpbmcgZm9yIHRoYXQgbWVzc2FnZSEgYCArXG4gICAgICAgICAgYHJlc3VsdDogJyR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX0nOyBgICtcbiAgICAgICAgICBgZXJyb3I6ICcke0pTT04uc3RyaW5naWZ5KGVycm9yKX0nYCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGV2ZW50TmFtZXMgPSBbbWV0aG9kXTtcbiAgICBsZXQgYXJncyA9IFtwYXJhbXNdO1xuXG4gICAgLy8gc29tZSBldmVudHMgaGF2ZSBkaWZmZXJlbnQgbmFtZXMsIG9yIHRoZSBhcmd1bWVudHMgYXJlIG1hcHBlZCBmcm9tIHRoZVxuICAgIC8vIHBhcmFtZXRlcnMgcmVjZWl2ZWRcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnUGFnZS5mcmFtZVN0b3BwZWRMb2FkaW5nJzpcbiAgICAgICAgZXZlbnROYW1lcy5wdXNoKCdQYWdlLmZyYW1lTmF2aWdhdGVkJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgJ1BhZ2UuZnJhbWVOYXZpZ2F0ZWQnOlxuICAgICAgICBhcmdzID0gW2AnJHttZXRob2R9JyBldmVudGBdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1RpbWVsaW5lLmV2ZW50UmVjb3JkZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcyB8fCBwYXJhbXMucmVjb3JkXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDb25zb2xlLm1lc3NhZ2VBZGRlZCc6XG4gICAgICAgIGFyZ3MgPSBbcGFyYW1zLm1lc3NhZ2VdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1J1bnRpbWUuZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcy5jb250ZXh0XTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBwYXNzXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChfLnN0YXJ0c1dpdGgobWV0aG9kLCAnTmV0d29yay4nKSkge1xuICAgICAgLy8gYWdncmVnYXRlIE5ldHdvcmsgZXZlbnRzLCBhbmQgYWRkIG9yaWdpbmFsIG1ldGhvZCBuYW1lIHRvIHRoZSBhcmd1bWVudHNcbiAgICAgIGV2ZW50TmFtZXMucHVzaCgnTmV0d29ya0V2ZW50Jyk7XG4gICAgICBhcmdzLnB1c2gobWV0aG9kKTtcbiAgICB9XG4gICAgaWYgKF8uc3RhcnRzV2l0aChtZXRob2QsICdDb25zb2xlLicpKSB7XG4gICAgICAvLyBhZ2dyZWdhdGUgTmV0d29yayBldmVudHMsIGFuZCBhZGQgb3JpZ2luYWwgbWV0aG9kIG5hbWUgdG8gdGhlIGFyZ3VtZW50c1xuICAgICAgZXZlbnROYW1lcy5wdXNoKCdDb25zb2xlRXZlbnQnKTtcbiAgICAgIGFyZ3MucHVzaChtZXRob2QpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBldmVudE5hbWVzKSB7XG4gICAgICB0aGlzLmVtaXQobmFtZSwgZXJyb3IsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZURhdGFNZXNzYWdlIChwbGlzdCkge1xuICAgIGNvbnN0IGRhdGFLZXkgPSB0aGlzLnBhcnNlRGF0YUtleShwbGlzdCk7XG4gICAgbGV0IG1zZ0lkID0gKGRhdGFLZXkuaWQgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgbGV0IHJlc3VsdCA9IGRhdGFLZXkucmVzdWx0O1xuXG4gICAgbGV0IG1ldGhvZCA9IGRhdGFLZXkubWV0aG9kO1xuICAgIGxldCBwYXJhbXM7XG5cbiAgICBpZiAobWV0aG9kID09PSAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnKSB7XG4gICAgICAvLyB0aGlzIGlzIGluIHJlc3BvbnNlIHRvIGEgYF9ycGNfZm9yd2FyZFNvY2tldFNldHVwOmAgY2FsbFxuICAgICAgLy8gdGFyZ2V0SW5mbzogeyB0YXJnZXRJZDogJ3BhZ2UtMScsIHR5cGU6ICdwYWdlJyB9XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IHRhcmdldEluZm8gPSBkYXRhS2V5LnBhcmFtcy50YXJnZXRJbmZvO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnKSB7XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IG9sZFRhcmdldElkID0gZGF0YUtleS5wYXJhbXMub2xkVGFyZ2V0SWQ7XG4gICAgICBjb25zdCBuZXdUYXJnZXRJZCA9IGRhdGFLZXkucGFyYW1zLm5ld1RhcmdldElkO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnLCBudWxsLCBhcHAsIG9sZFRhcmdldElkLCBuZXdUYXJnZXRJZCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJykge1xuICAgICAgY29uc3QgYXBwID0gcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICBjb25zdCB0YXJnZXRJbmZvID0gZGF0YUtleS5wYXJhbXMudGFyZ2V0SW5mbyB8fCB7dGFyZ2V0SWQ6IGRhdGFLZXkucGFyYW1zLnRhcmdldElkfTtcbiAgICAgIHRoaXMuZW1pdCgnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhS2V5LmVycm9yICYmIHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgaWYgKGRhdGFLZXkubWV0aG9kICE9PSAnVGFyZ2V0LmRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQnKSB7XG4gICAgICAgIC8vIHRoaXMgc29ydCBvZiBtZXNzYWdlLCBhdCB0aGlzIHBvaW50LCBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudFxuICAgICAgICAvLyB0aGF0IHRoZSBvcmlnaW5hbCBtZXNzYWdlIHdhcyByZWNlaXZlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBUYXJnZXQtYmFzZWQgbWVzc2FnZSB3cmFwcGluZyBhIHByb3RvY29sIG1lc3NhZ2VcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbWVzc2FnZSA9IEpTT04ucGFyc2UoZGF0YUtleS5wYXJhbXMubWVzc2FnZSk7XG4gICAgICAgIG1zZ0lkID0gbWVzc2FnZS5pZDtcbiAgICAgICAgbWV0aG9kID0gbWVzc2FnZS5tZXRob2Q7XG4gICAgICAgIHJlc3VsdCA9IG1lc3NhZ2UucmVzdWx0IHx8IG1lc3NhZ2U7XG4gICAgICAgIHBhcmFtcyA9IHJlc3VsdC5wYXJhbXM7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIHRoZW4gc29tZSBhc3BlY3Qgb2YgdGhlIHByb3RvY29sIGlzIG1pc3NpbmcgdG8gdXNcbiAgICAgICAgLy8gc28gcHJpbnQgdGhlIGVudGlyZSBtZXNzYWdlIHRvIGdldCB2aXNpYmlpdHkgaW50byB3aGF0IGlzIGdvaW5nIG9uXG4gICAgICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBtZXNzYWdlIGZvcm1hdCBmcm9tIFdlYiBJbnNwZWN0b3I6YCk7XG4gICAgICAgIHRoaXMud2Fybih1dGlsLmpzb25TdHJpbmdpZnkocGxpc3QpKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMgPSBkYXRhS2V5LnBhcmFtcztcbiAgICB9XG5cbiAgICAvLyB3ZSBjYW4gZ2V0IGFuIGVycm9yLCBvciB3ZSBjYW4gZ2V0IGEgcmVzcG9uc2UgdGhhdCBpcyBhbiBlcnJvclxuICAgIGxldCBlcnJvciA9IGRhdGFLZXkuZXJyb3IgfHwgbnVsbDtcbiAgICBpZiAocmVzdWx0Py53YXNUaHJvd24pIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgPyAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgOiAnRXJyb3Igb2NjdXJyZWQgaW4gaGFuZGxpbmcgZGF0YSBtZXNzYWdlJztcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hEYXRhTWVzc2FnZShtc2dJZCwgbWV0aG9kLCBwYXJhbXMsIHJlc3VsdCwgZXJyb3IpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBR2UsTUFBTUksaUJBQWlCLFNBQVNDLGVBQWEsQ0FBQztFQUMzREMsV0FBV0EsQ0FBRUMsYUFBYSxHQUFHLEtBQUssRUFBRTtJQUNsQyxLQUFLLEVBQUU7SUFFUCxJQUFJLENBQUNBLGFBQWEsR0FBR0EsYUFBYTtFQUNwQztFQUVBLElBQUlBLGFBQWFBLENBQUEsRUFBSTtJQUNuQixPQUFPLElBQUksQ0FBQ0MsY0FBYztFQUM1QjtFQUVBLElBQUlELGFBQWFBLENBQUVBLGFBQWEsRUFBRTtJQUNoQyxJQUFJLENBQUNDLGNBQWMsR0FBRyxDQUFDLENBQUNELGFBQWE7RUFDdkM7RUFFQSxNQUFNRSxhQUFhQSxDQUFFQyxLQUFLLEVBQUU7SUFDMUIsTUFBTUMsUUFBUSxHQUFHRCxLQUFLLENBQUNFLFVBQVU7SUFDakMsSUFBSSxDQUFDRCxRQUFRLEVBQUU7TUFDYkUsZUFBRyxDQUFDQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7TUFDakM7SUFDRjtJQUVBLE1BQU1DLFFBQVEsR0FBR0wsS0FBSyxDQUFDTSxVQUFVO0lBQ2pDLFFBQVFMLFFBQVE7TUFDZCxLQUFLLG1CQUFtQjtRQUN0QixJQUFJLENBQUNNLElBQUksQ0FBQyxtQkFBbUIsRUFDM0IsSUFBSSxFQUNKRixRQUFRLENBQUNHLG1CQUFtQixFQUM1QkgsUUFB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
176
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX3N1cHBvcnQiLCJfZXZlbnRzIiwiUnBjTWVzc2FnZUhhbmRsZXIiLCJFdmVudEVtaXR0ZXJzIiwiY29uc3RydWN0b3IiLCJpc1RhcmdldEJhc2VkIiwiX2lzVGFyZ2V0QmFzZWQiLCJoYW5kbGVNZXNzYWdlIiwicGxpc3QiLCJzZWxlY3RvciIsIl9fc2VsZWN0b3IiLCJsb2ciLCJkZWJ1ZyIsImFyZ3VtZW50IiwiX19hcmd1bWVudCIsImVtaXQiLCJXSVJTaW11bGF0b3JOYW1lS2V5IiwiV0lSU2ltdWxhdG9yQnVpbGRLZXkiLCJXSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleSIsIldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleSIsIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsIldJUkxpc3RpbmdLZXkiLCJoYW5kbGVEYXRhTWVzc2FnZSIsInBhcnNlRGF0YUtleSIsIkpTT04iLCJwYXJzZSIsIldJUk1lc3NhZ2VEYXRhS2V5IiwidG9TdHJpbmciLCJlcnIiLCJlcnJvciIsIl8iLCJ0cnVuY2F0ZSIsInN0cmluZ2lmeSIsImxlbmd0aCIsIkVycm9yIiwibWVzc2FnZSIsImRpc3BhdGNoRGF0YU1lc3NhZ2UiLCJtc2dJZCIsIm1ldGhvZCIsInBhcmFtcyIsInJlc3VsdCIsImlzRW1wdHkiLCJsaXN0ZW5lckNvdW50IiwiX3Jlc3VsdCIsImhhcyIsInZhbHVlIiwiZXZlbnROYW1lcyIsImFyZ3MiLCJwdXNoIiwicmVjb3JkIiwiY29udGV4dCIsInN0YXJ0c1dpdGgiLCJuYW1lIiwiX3Jlc3VsdDIiLCJkYXRhS2V5IiwiaWQiLCJhcHAiLCJ0YXJnZXRJbmZvIiwib2xkVGFyZ2V0SWQiLCJuZXdUYXJnZXRJZCIsInRhcmdldElkIiwid2FybiIsInV0aWwiLCJqc29uU3RyaW5naWZ5Iiwid2FzVGhyb3duIiwiX3Jlc3VsdDMiLCJfcmVzdWx0MyRyZXN1bHQiLCJfcmVzdWx0NCIsIl9yZXN1bHQ0JHJlc3VsdCIsIl9yZXN1bHQ1IiwiX3Jlc3VsdDUkcmVzdWx0IiwiX3Jlc3VsdDYiLCJfcmVzdWx0NiRyZXN1bHQiLCJkZXNjcmlwdGlvbiIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9ycGMtbWVzc2FnZS1oYW5kbGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBFdmVudEVtaXR0ZXJzIGZyb20gJ2V2ZW50cyc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnBjTWVzc2FnZUhhbmRsZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXJzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgc2V0IGlzVGFyZ2V0QmFzZWQgKGlzVGFyZ2V0QmFzZWQpIHtcbiAgICB0aGlzLl9pc1RhcmdldEJhc2VkID0gISFpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlTWVzc2FnZSAocGxpc3QpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IHBsaXN0Ll9fc2VsZWN0b3I7XG4gICAgaWYgKCFzZWxlY3Rvcikge1xuICAgICAgbG9nLmRlYnVnKCdHb3QgYW4gaW52YWxpZCBwbGlzdCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFyZ3VtZW50ID0gcGxpc3QuX19hcmd1bWVudDtcbiAgICBzd2l0Y2ggKHNlbGVjdG9yKSB7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydFNldHVwOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRTZXR1cDonLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYXJndW1lbnQuV0lSU2ltdWxhdG9yTmFtZUtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JCdWlsZEtleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q29ubmVjdGVkQXBwbGljYXRpb25MaXN0Oic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDb25uZWN0ZWRBcHBsaWNhdGlvbkxpc3Q6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uRGljdGlvbmFyeUtleVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50TGlzdGluZzonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGFyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICAgICAgICBhcmd1bWVudC5XSVJMaXN0aW5nS2V5XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25EaXNjb25uZWN0ZWQ6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX2FwcGxpY2F0aW9uVXBkYXRlZDonOlxuICAgICAgICB0aGlzLmVtaXQoJ19ycGNfYXBwbGljYXRpb25VcGRhdGVkOicsIG51bGwsIGFyZ3VtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JzpcbiAgICAgICAgdGhpcy5lbWl0KCdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfcmVwb3J0Q3VycmVudFN0YXRlOic6XG4gICAgICAgIHRoaXMuZW1pdCgnX3JwY19yZXBvcnRDdXJyZW50U3RhdGU6JywgbnVsbCwgYXJndW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ19ycGNfYXBwbGljYXRpb25TZW50RGF0YTonOlxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZURhdGFNZXNzYWdlKHBsaXN0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsb2cuZGVidWcoYERlYnVnZ2VyIGdvdCBhIG1lc3NhZ2UgZm9yICcke3NlbGVjdG9yfScgYW5kIGhhdmUgbm8gYCArXG4gICAgICAgICAgYGhhbmRsZXIsIGRvaW5nIG5vdGhpbmcuYCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRhS2V5IChwbGlzdCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShwbGlzdC5fX2FyZ3VtZW50LldJUk1lc3NhZ2VEYXRhS2V5LnRvU3RyaW5nKCd1dGY4JykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKGBVbnBhcnNlYWJsZSBtZXNzYWdlIGRhdGE6ICR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShwbGlzdCksIHtsZW5ndGg6IDEwMH0pfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgbWVzc2FnZSBkYXRhOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc3BhdGNoRGF0YU1lc3NhZ2UgKG1zZ0lkLCBtZXRob2QsIHBhcmFtcywgcmVzdWx0LCBlcnJvcikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICBpZiAoIV8uaXNFbXB0eShtc2dJZCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgSGFuZGxpbmcgbWVzc2FnZSAoaWQ6ICcke21zZ0lkfScpYCk7XG4gICAgfVxuXG4gICAgaWYgKG1zZ0lkKSB7XG4gICAgICBpZiAodGhpcy5saXN0ZW5lckNvdW50KG1zZ0lkKSkge1xuICAgICAgICBpZiAoXy5oYXMocmVzdWx0Py5yZXN1bHQsICd2YWx1ZScpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlc3VsdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQobXNnSWQsIGVycm9yLCByZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yKGBXZWIgSW5zcGVjdG9yIHJldHVybmVkIGRhdGEgZm9yIG1lc3NhZ2UgJyR7bXNnSWR9JyBgICtcbiAgICAgICAgICBgYnV0IHdlIHdlcmUgbm90IHdhaXRpbmcgZm9yIHRoYXQgbWVzc2FnZSEgYCArXG4gICAgICAgICAgYHJlc3VsdDogJyR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX0nOyBgICtcbiAgICAgICAgICBgZXJyb3I6ICcke0pTT04uc3RyaW5naWZ5KGVycm9yKX0nYCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGV2ZW50TmFtZXMgPSBbbWV0aG9kXTtcbiAgICBsZXQgYXJncyA9IFtwYXJhbXNdO1xuXG4gICAgLy8gc29tZSBldmVudHMgaGF2ZSBkaWZmZXJlbnQgbmFtZXMsIG9yIHRoZSBhcmd1bWVudHMgYXJlIG1hcHBlZCBmcm9tIHRoZVxuICAgIC8vIHBhcmFtZXRlcnMgcmVjZWl2ZWRcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnUGFnZS5mcmFtZVN0b3BwZWRMb2FkaW5nJzpcbiAgICAgICAgZXZlbnROYW1lcy5wdXNoKCdQYWdlLmZyYW1lTmF2aWdhdGVkJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgJ1BhZ2UuZnJhbWVOYXZpZ2F0ZWQnOlxuICAgICAgICBhcmdzID0gW2AnJHttZXRob2R9JyBldmVudGBdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1RpbWVsaW5lLmV2ZW50UmVjb3JkZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcyB8fCBwYXJhbXMucmVjb3JkXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDb25zb2xlLm1lc3NhZ2VBZGRlZCc6XG4gICAgICAgIGFyZ3MgPSBbcGFyYW1zLm1lc3NhZ2VdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1J1bnRpbWUuZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQnOlxuICAgICAgICBhcmdzID0gW3BhcmFtcy5jb250ZXh0XTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBwYXNzXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChfLnN0YXJ0c1dpdGgobWV0aG9kLCAnTmV0d29yay4nKSkge1xuICAgICAgLy8gYWdncmVnYXRlIE5ldHdvcmsgZXZlbnRzLCBhbmQgYWRkIG9yaWdpbmFsIG1ldGhvZCBuYW1lIHRvIHRoZSBhcmd1bWVudHNcbiAgICAgIGV2ZW50TmFtZXMucHVzaCgnTmV0d29ya0V2ZW50Jyk7XG4gICAgICBhcmdzLnB1c2gobWV0aG9kKTtcbiAgICB9XG4gICAgaWYgKF8uc3RhcnRzV2l0aChtZXRob2QsICdDb25zb2xlLicpKSB7XG4gICAgICAvLyBhZ2dyZWdhdGUgTmV0d29yayBldmVudHMsIGFuZCBhZGQgb3JpZ2luYWwgbWV0aG9kIG5hbWUgdG8gdGhlIGFyZ3VtZW50c1xuICAgICAgZXZlbnROYW1lcy5wdXNoKCdDb25zb2xlRXZlbnQnKTtcbiAgICAgIGFyZ3MucHVzaChtZXRob2QpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBldmVudE5hbWVzKSB7XG4gICAgICB0aGlzLmVtaXQobmFtZSwgZXJyb3IsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZURhdGFNZXNzYWdlIChwbGlzdCkge1xuICAgIGNvbnN0IGRhdGFLZXkgPSB0aGlzLnBhcnNlRGF0YUtleShwbGlzdCk7XG4gICAgbGV0IG1zZ0lkID0gKGRhdGFLZXkuaWQgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgbGV0IHJlc3VsdCA9IGRhdGFLZXkucmVzdWx0O1xuXG4gICAgbGV0IG1ldGhvZCA9IGRhdGFLZXkubWV0aG9kO1xuICAgIGxldCBwYXJhbXM7XG5cbiAgICBpZiAobWV0aG9kID09PSAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnKSB7XG4gICAgICAvLyB0aGlzIGlzIGluIHJlc3BvbnNlIHRvIGEgYF9ycGNfZm9yd2FyZFNvY2tldFNldHVwOmAgY2FsbFxuICAgICAgLy8gdGFyZ2V0SW5mbzogeyB0YXJnZXRJZDogJ3BhZ2UtMScsIHR5cGU6ICdwYWdlJyB9XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IHRhcmdldEluZm8gPSBkYXRhS2V5LnBhcmFtcy50YXJnZXRJbmZvO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnKSB7XG4gICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgIGNvbnN0IG9sZFRhcmdldElkID0gZGF0YUtleS5wYXJhbXMub2xkVGFyZ2V0SWQ7XG4gICAgICBjb25zdCBuZXdUYXJnZXRJZCA9IGRhdGFLZXkucGFyYW1zLm5ld1RhcmdldElkO1xuICAgICAgdGhpcy5lbWl0KCdUYXJnZXQuZGlkQ29tbWl0UHJvdmlzaW9uYWxUYXJnZXQnLCBudWxsLCBhcHAsIG9sZFRhcmdldElkLCBuZXdUYXJnZXRJZCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJykge1xuICAgICAgY29uc3QgYXBwID0gcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICBjb25zdCB0YXJnZXRJbmZvID0gZGF0YUtleS5wYXJhbXMudGFyZ2V0SW5mbyB8fCB7dGFyZ2V0SWQ6IGRhdGFLZXkucGFyYW1zLnRhcmdldElkfTtcbiAgICAgIHRoaXMuZW1pdCgnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcsIG51bGwsIGFwcCwgdGFyZ2V0SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhS2V5LmVycm9yICYmIHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgaWYgKGRhdGFLZXkubWV0aG9kICE9PSAnVGFyZ2V0LmRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQnKSB7XG4gICAgICAgIC8vIHRoaXMgc29ydCBvZiBtZXNzYWdlLCBhdCB0aGlzIHBvaW50LCBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudFxuICAgICAgICAvLyB0aGF0IHRoZSBvcmlnaW5hbCBtZXNzYWdlIHdhcyByZWNlaXZlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBUYXJnZXQtYmFzZWQgbWVzc2FnZSB3cmFwcGluZyBhIHByb3RvY29sIG1lc3NhZ2VcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbWVzc2FnZSA9IEpTT04ucGFyc2UoZGF0YUtleS5wYXJhbXMubWVzc2FnZSk7XG4gICAgICAgIG1zZ0lkID0gbWVzc2FnZS5pZDtcbiAgICAgICAgbWV0aG9kID0gbWVzc2FnZS5tZXRob2Q7XG4gICAgICAgIHJlc3VsdCA9IG1lc3NhZ2UucmVzdWx0IHx8IG1lc3NhZ2U7XG4gICAgICAgIHBhcmFtcyA9IHJlc3VsdC5wYXJhbXM7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIHRoZW4gc29tZSBhc3BlY3Qgb2YgdGhlIHByb3RvY29sIGlzIG1pc3NpbmcgdG8gdXNcbiAgICAgICAgLy8gc28gcHJpbnQgdGhlIGVudGlyZSBtZXNzYWdlIHRvIGdldCB2aXNpYmlpdHkgaW50byB3aGF0IGlzIGdvaW5nIG9uXG4gICAgICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBtZXNzYWdlIGZvcm1hdCBmcm9tIFdlYiBJbnNwZWN0b3I6YCk7XG4gICAgICAgIHRoaXMud2Fybih1dGlsLmpzb25TdHJpbmdpZnkocGxpc3QpKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMgPSBkYXRhS2V5LnBhcmFtcztcbiAgICB9XG5cbiAgICAvLyB3ZSBjYW4gZ2V0IGFuIGVycm9yLCBvciB3ZSBjYW4gZ2V0IGEgcmVzcG9uc2UgdGhhdCBpcyBhbiBlcnJvclxuICAgIGxldCBlcnJvciA9IGRhdGFLZXkuZXJyb3IgfHwgbnVsbDtcbiAgICBpZiAocmVzdWx0Py53YXNUaHJvd24pIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgPyAocmVzdWx0Py5yZXN1bHQ/LnZhbHVlIHx8IHJlc3VsdD8ucmVzdWx0Py5kZXNjcmlwdGlvbilcbiAgICAgICAgOiAnRXJyb3Igb2NjdXJyZWQgaW4gaGFuZGxpbmcgZGF0YSBtZXNzYWdlJztcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hEYXRhTWVzc2FnZShtc2dJZCwgbWV0aG9kLCBwYXJhbXMsIHJlc3VsdCwgZXJyb3IpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBR2UsTUFBTUksaUJBQWlCLFNBQVNDLGVBQWEsQ0FBQztFQUMzREMsV0FBV0EsQ0FBRUMsYUFBYSxHQUFHLEtBQUssRUFBRTtJQUNsQyxLQUFLLENBQUMsQ0FBQztJQUVQLElBQUksQ0FBQ0EsYUFBYSxHQUFHQSxhQUFhO0VBQ3BDO0VBRUEsSUFBSUEsYUFBYUEsQ0FBQSxFQUFJO0lBQ25CLE9BQU8sSUFBSSxDQUFDQyxjQUFjO0VBQzVCO0VBRUEsSUFBSUQsYUFBYUEsQ0FBRUEsYUFBYSxFQUFFO0lBQ2hDLElBQUksQ0FBQ0MsY0FBYyxHQUFHLENBQUMsQ0FBQ0QsYUFBYTtFQUN2QztFQUVBLE1BQU1FLGFBQWFBLENBQUVDLEtBQUssRUFBRTtJQUMxQixNQUFNQyxRQUFRLEdBQUdELEtBQUssQ0FBQ0UsVUFBVTtJQUNqQyxJQUFJLENBQUNELFFBQVEsRUFBRTtNQUNiRSxlQUFHLENBQUNDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztNQUNqQztJQUNGO0lBRUEsTUFBTUMsUUFBUSxHQUFHTCxLQUFLLENBQUNNLFVBQVU7SUFDakMsUUFBUUwsUUFBUTtNQUNkLEtBQUssbUJBQW1CO1FBQ3RCLElBQUksQ0FBQ00sSUFBSSxDQUFDLG1CQUFtQixFQUMzQixJQUFJLEVBQ0pGLFFBQVEsQ0FBQ0csbUJBQW1CLEVBQzVC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
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-message-handler.js","names":["_logger","_interopRequireDefault","require","_lodash","_support","_events","RpcMessageHandler","EventEmitters","constructor","isTargetBased","_isTargetBased","handleMessage","plist","selector","__selector","log","debug","argument","__argument","emit","WIRSimulatorNameKey","WIRSimulatorBuildKey","WIRSimulatorProductVersionKey","WIRApplicationDictionaryKey","WIRApplicationIdentifierKey","WIRListingKey","handleDataMessage","parseDataKey","JSON","parse","WIRMessageDataKey","toString","err","error","_","truncate","stringify","length","Error","message","dispatchDataMessage","msgId","method","params","result","isEmpty","listenerCount","_result","has","value","eventNames","args","push","record","context","startsWith","name","_result2","dataKey","id","app","targetInfo","oldTargetId","newTargetId","targetId","warn","util","jsonStringify","wasThrown","_result3","_result3$result","_result4","_result4$result","_result5","_result5$result","_result6","_result6$result","description","exports","default"],"sources":["../../../lib/rpc/rpc-message-handler.js"],"sourcesContent":["import log from '../logger';\nimport _ from 'lodash';\nimport { util } from '@appium/support';\nimport EventEmitters from 'events';\n\n\nexport default class RpcMessageHandler extends EventEmitters {\n constructor (isTargetBased = false) {\n super();\n\n this.isTargetBased = isTargetBased;\n }\n\n get isTargetBased () {\n return this._isTargetBased;\n }\n\n set isTargetBased (isTargetBased) {\n this._isTargetBased = !!isTargetBased;\n }\n\n async handleMessage (plist) {\n const selector = plist.__selector;\n if (!selector) {\n log.debug('Got an invalid plist');\n return;\n }\n\n const argument = plist.__argument;\n switch (selector) {\n case '_rpc_reportSetup:':\n this.emit('_rpc_reportSetup:',\n null,\n argument.WIRSimulatorNameKey,\n argument.WIRSimulatorBuildKey,\n argument.WIRSimulatorProductVersionKey\n );\n break;\n case '_rpc_reportConnectedApplicationList:':\n this.emit('_rpc_reportConnectedApplicationList:',\n null,\n argument.WIRApplicationDictionaryKey\n );\n break;\n case '_rpc_applicationSentListing:':\n this.emit('_rpc_forwardGetListing:',\n null,\n argument.WIRApplicationIdentifierKey,\n argument.WIRListingKey\n );\n break;\n case '_rpc_applicationConnected:':\n this.emit('_rpc_applicationConnected:', null, argument);\n break;\n case '_rpc_applicationDisconnected:':\n this.emit('_rpc_applicationDisconnected:', null, argument);\n break;\n case '_rpc_applicationUpdated:':\n this.emit('_rpc_applicationUpdated:', null, argument);\n break;\n case '_rpc_reportConnectedDriverList:':\n this.emit('_rpc_reportConnectedDriverList:', null, argument);\n break;\n case '_rpc_reportCurrentState:':\n this.emit('_rpc_reportCurrentState:', null, argument);\n break;\n case '_rpc_applicationSentData:':\n await this.handleDataMessage(plist);\n break;\n default:\n log.debug(`Debugger got a message for '${selector}' and have no ` +\n `handler, doing nothing.`);\n }\n }\n\n parseDataKey (plist) {\n try {\n return JSON.parse(plist.__argument.WIRMessageDataKey.toString('utf8'));\n } catch (err) {\n log.error(`Unparseable message data: ${_.truncate(JSON.stringify(plist), {length: 100})}`);\n throw new Error(`Unable to parse message data: ${err.message}`);\n }\n }\n\n async dispatchDataMessage (msgId, method, params, result, error) { // eslint-disable-line require-await\n if (!_.isEmpty(msgId)) {\n log.debug(`Handling message (id: '${msgId}')`);\n }\n\n if (msgId) {\n if (this.listenerCount(msgId)) {\n if (_.has(result?.result, 'value')) {\n result = result.result.value;\n }\n this.emit(msgId, error, result);\n } else {\n log.error(`Web Inspector returned data for message '${msgId}' ` +\n `but we were not waiting for that message! ` +\n `result: '${JSON.stringify(result)}'; ` +\n `error: '${JSON.stringify(error)}'`);\n }\n return;\n }\n\n let eventNames = [method];\n let args = [params];\n\n // some events have different names, or the arguments are mapped from the\n // parameters received\n switch (method) {\n case 'Page.frameStoppedLoading':\n eventNames.push('Page.frameNavigated');\n // eslint-disable-line no-fallthrough\n case 'Page.frameNavigated':\n args = [`'${method}' event`];\n break;\n case 'Timeline.eventRecorded':\n args = [params || params.record];\n break;\n case 'Console.messageAdded':\n args = [params.message];\n break;\n case 'Runtime.executionContextCreated':\n args = [params.context];\n break;\n default:\n // pass\n break;\n }\n\n if (_.startsWith(method, 'Network.')) {\n // aggregate Network events, and add original method name to the arguments\n eventNames.push('NetworkEvent');\n args.push(method);\n }\n if (_.startsWith(method, 'Console.')) {\n // aggregate Network events, and add original method name to the arguments\n eventNames.push('ConsoleEvent');\n args.push(method);\n }\n\n for (const name of eventNames) {\n this.emit(name, error, ...args);\n }\n }\n\n async handleDataMessage (plist) {\n const dataKey = this.parseDataKey(plist);\n let msgId = (dataKey.id || '').toString();\n let result = dataKey.result;\n\n let method = dataKey.method;\n let params;\n\n if (method === 'Target.targetCreated') {\n // this is in response to a `_rpc_forwardSocketSetup:` call\n // targetInfo: { targetId: 'page-1', type: 'page' }\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const targetInfo = dataKey.params.targetInfo;\n this.emit('Target.targetCreated', null, app, targetInfo);\n return;\n } else if (method === 'Target.didCommitProvisionalTarget') {\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const oldTargetId = dataKey.params.oldTargetId;\n const newTargetId = dataKey.params.newTargetId;\n this.emit('Target.didCommitProvisionalTarget', null, app, oldTargetId, newTargetId);\n return;\n } else if (method === 'Target.targetDestroyed') {\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const targetInfo = dataKey.params.targetInfo || {targetId: dataKey.params.targetId};\n this.emit('Target.targetDestroyed', null, app, targetInfo);\n return;\n }\n\n if (!dataKey.error && this.isTargetBased) {\n if (dataKey.method !== 'Target.dispatchMessageFromTarget') {\n // this sort of message, at this point, is just an acknowledgement\n // that the original message was received\n return;\n }\n\n // at this point, we have a Target-based message wrapping a protocol message\n let message;\n try {\n message = JSON.parse(dataKey.params.message);\n msgId = message.id;\n method = message.method;\n result = message.result || message;\n params = result.params;\n } catch (err) {\n // if this happens then some aspect of the protocol is missing to us\n // so print the entire message to get visibiity into what is going on\n log.error(`Unexpected message format from Web Inspector:`);\n this.warn(util.jsonStringify(plist));\n throw err;\n }\n } else {\n params = dataKey.params;\n }\n\n // we can get an error, or we can get a response that is an error\n let error = dataKey.error || null;\n if (result?.wasThrown) {\n const message = (result?.result?.value || result?.result?.description)\n ? (result?.result?.value || result?.result?.description)\n : 'Error occurred in handling data message';\n error = new Error(message);\n }\n\n await this.dispatchDataMessage(msgId, method, params, result, error);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rpc-message-handler.js","names":["_logger","_interopRequireDefault","require","_lodash","_support","_events","RpcMessageHandler","EventEmitters","constructor","isTargetBased","_isTargetBased","handleMessage","plist","selector","__selector","log","debug","argument","__argument","emit","WIRSimulatorNameKey","WIRSimulatorBuildKey","WIRSimulatorProductVersionKey","WIRApplicationDictionaryKey","WIRApplicationIdentifierKey","WIRListingKey","handleDataMessage","parseDataKey","JSON","parse","WIRMessageDataKey","toString","err","error","_","truncate","stringify","length","Error","message","dispatchDataMessage","msgId","method","params","result","isEmpty","listenerCount","_result","has","value","eventNames","args","push","record","context","startsWith","name","_result2","dataKey","id","app","targetInfo","oldTargetId","newTargetId","targetId","warn","util","jsonStringify","wasThrown","_result3","_result3$result","_result4","_result4$result","_result5","_result5$result","_result6","_result6$result","description","exports","default"],"sources":["../../../lib/rpc/rpc-message-handler.js"],"sourcesContent":["import log from '../logger';\nimport _ from 'lodash';\nimport { util } from '@appium/support';\nimport EventEmitters from 'events';\n\n\nexport default class RpcMessageHandler extends EventEmitters {\n constructor (isTargetBased = false) {\n super();\n\n this.isTargetBased = isTargetBased;\n }\n\n get isTargetBased () {\n return this._isTargetBased;\n }\n\n set isTargetBased (isTargetBased) {\n this._isTargetBased = !!isTargetBased;\n }\n\n async handleMessage (plist) {\n const selector = plist.__selector;\n if (!selector) {\n log.debug('Got an invalid plist');\n return;\n }\n\n const argument = plist.__argument;\n switch (selector) {\n case '_rpc_reportSetup:':\n this.emit('_rpc_reportSetup:',\n null,\n argument.WIRSimulatorNameKey,\n argument.WIRSimulatorBuildKey,\n argument.WIRSimulatorProductVersionKey\n );\n break;\n case '_rpc_reportConnectedApplicationList:':\n this.emit('_rpc_reportConnectedApplicationList:',\n null,\n argument.WIRApplicationDictionaryKey\n );\n break;\n case '_rpc_applicationSentListing:':\n this.emit('_rpc_forwardGetListing:',\n null,\n argument.WIRApplicationIdentifierKey,\n argument.WIRListingKey\n );\n break;\n case '_rpc_applicationConnected:':\n this.emit('_rpc_applicationConnected:', null, argument);\n break;\n case '_rpc_applicationDisconnected:':\n this.emit('_rpc_applicationDisconnected:', null, argument);\n break;\n case '_rpc_applicationUpdated:':\n this.emit('_rpc_applicationUpdated:', null, argument);\n break;\n case '_rpc_reportConnectedDriverList:':\n this.emit('_rpc_reportConnectedDriverList:', null, argument);\n break;\n case '_rpc_reportCurrentState:':\n this.emit('_rpc_reportCurrentState:', null, argument);\n break;\n case '_rpc_applicationSentData:':\n await this.handleDataMessage(plist);\n break;\n default:\n log.debug(`Debugger got a message for '${selector}' and have no ` +\n `handler, doing nothing.`);\n }\n }\n\n parseDataKey (plist) {\n try {\n return JSON.parse(plist.__argument.WIRMessageDataKey.toString('utf8'));\n } catch (err) {\n log.error(`Unparseable message data: ${_.truncate(JSON.stringify(plist), {length: 100})}`);\n throw new Error(`Unable to parse message data: ${err.message}`);\n }\n }\n\n async dispatchDataMessage (msgId, method, params, result, error) { // eslint-disable-line require-await\n if (!_.isEmpty(msgId)) {\n log.debug(`Handling message (id: '${msgId}')`);\n }\n\n if (msgId) {\n if (this.listenerCount(msgId)) {\n if (_.has(result?.result, 'value')) {\n result = result.result.value;\n }\n this.emit(msgId, error, result);\n } else {\n log.error(`Web Inspector returned data for message '${msgId}' ` +\n `but we were not waiting for that message! ` +\n `result: '${JSON.stringify(result)}'; ` +\n `error: '${JSON.stringify(error)}'`);\n }\n return;\n }\n\n let eventNames = [method];\n let args = [params];\n\n // some events have different names, or the arguments are mapped from the\n // parameters received\n switch (method) {\n case 'Page.frameStoppedLoading':\n eventNames.push('Page.frameNavigated');\n // eslint-disable-line no-fallthrough\n case 'Page.frameNavigated':\n args = [`'${method}' event`];\n break;\n case 'Timeline.eventRecorded':\n args = [params || params.record];\n break;\n case 'Console.messageAdded':\n args = [params.message];\n break;\n case 'Runtime.executionContextCreated':\n args = [params.context];\n break;\n default:\n // pass\n break;\n }\n\n if (_.startsWith(method, 'Network.')) {\n // aggregate Network events, and add original method name to the arguments\n eventNames.push('NetworkEvent');\n args.push(method);\n }\n if (_.startsWith(method, 'Console.')) {\n // aggregate Network events, and add original method name to the arguments\n eventNames.push('ConsoleEvent');\n args.push(method);\n }\n\n for (const name of eventNames) {\n this.emit(name, error, ...args);\n }\n }\n\n async handleDataMessage (plist) {\n const dataKey = this.parseDataKey(plist);\n let msgId = (dataKey.id || '').toString();\n let result = dataKey.result;\n\n let method = dataKey.method;\n let params;\n\n if (method === 'Target.targetCreated') {\n // this is in response to a `_rpc_forwardSocketSetup:` call\n // targetInfo: { targetId: 'page-1', type: 'page' }\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const targetInfo = dataKey.params.targetInfo;\n this.emit('Target.targetCreated', null, app, targetInfo);\n return;\n } else if (method === 'Target.didCommitProvisionalTarget') {\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const oldTargetId = dataKey.params.oldTargetId;\n const newTargetId = dataKey.params.newTargetId;\n this.emit('Target.didCommitProvisionalTarget', null, app, oldTargetId, newTargetId);\n return;\n } else if (method === 'Target.targetDestroyed') {\n const app = plist.__argument.WIRApplicationIdentifierKey;\n const targetInfo = dataKey.params.targetInfo || {targetId: dataKey.params.targetId};\n this.emit('Target.targetDestroyed', null, app, targetInfo);\n return;\n }\n\n if (!dataKey.error && this.isTargetBased) {\n if (dataKey.method !== 'Target.dispatchMessageFromTarget') {\n // this sort of message, at this point, is just an acknowledgement\n // that the original message was received\n return;\n }\n\n // at this point, we have a Target-based message wrapping a protocol message\n let message;\n try {\n message = JSON.parse(dataKey.params.message);\n msgId = message.id;\n method = message.method;\n result = message.result || message;\n params = result.params;\n } catch (err) {\n // if this happens then some aspect of the protocol is missing to us\n // so print the entire message to get visibiity into what is going on\n log.error(`Unexpected message format from Web Inspector:`);\n this.warn(util.jsonStringify(plist));\n throw err;\n }\n } else {\n params = dataKey.params;\n }\n\n // we can get an error, or we can get a response that is an error\n let error = dataKey.error || null;\n if (result?.wasThrown) {\n const message = (result?.result?.value || result?.result?.description)\n ? (result?.result?.value || result?.result?.description)\n : 'Error occurred in handling data message';\n error = new Error(message);\n }\n\n await this.dispatchDataMessage(msgId, method, params, result, error);\n }\n}\n"],"mappings":"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"}
@@ -185,4 +185,4 @@ const getModuleRoot = _lodash.default.memoize(function getModuleRoot() {
185
185
  return root;
186
186
  });
187
187
  exports.getModuleRoot = getModuleRoot;
188
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2JsdWViaXJkIiwiX2Jhc2VEcml2ZXIiLCJfc3VwcG9ydCIsIk1PRFVMRV9OQU1FIiwiV0VCX0NPTlRFTlRfQlVORExFX0lEIiwiV0VCX0NPTlRFTlRfUFJPQ0VTU19CVU5ETEVfSUQiLCJTQUZBUklfVklFV19QUk9DRVNTX0JVTkRMRV9JRCIsIlNBRkFSSV9WSUVXX0JVTkRMRV9JRCIsIldJTERDQVJEX0JVTkRMRV9JRCIsIklOQUNUSVZFX0FQUF9DT0RFIiwiQUNDRVBURURfUEFHRV9UWVBFUyIsIlJFU1BPTlNFX0xPR19MRU5HVEgiLCJleHBvcnRzIiwiYXBwSW5mb0Zyb21EaWN0IiwiZGljdCIsImlkIiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiaXNQcm94eSIsIl8iLCJpc1N0cmluZyIsIldJUklzQXBwbGljYXRpb25Qcm94eUtleSIsInRvTG93ZXJDYXNlIiwiaXNBdXRvbWF0aW9uRW5hYmxlZCIsIldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IiwiaGFzIiwiV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSIsImVudHJ5IiwibmFtZSIsIldJUkFwcGxpY2F0aW9uTmFtZUtleSIsImJ1bmRsZUlkIiwiV0lSQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5IiwiaG9zdElkIiwiV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsImlzQWN0aXZlIiwiV0lSSXNBcHBsaWNhdGlvbkFjdGl2ZUtleSIsInBhZ2VBcnJheUZyb21EaWN0IiwicGFnZURpY3QiLCJuZXdQYWdlQXJyYXkiLCJ2YWx1ZXMiLCJpc1VuZGVmaW5lZCIsIldJUlR5cGVLZXkiLCJpbmNsdWRlcyIsInB1c2giLCJXSVJQYWdlSWRlbnRpZmllcktleSIsInRpdGxlIiwiV0lSVGl0bGVLZXkiLCJ1cmwiLCJXSVJVUkxLZXkiLCJpc0tleSIsIldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5IiwiZ2V0RGVidWdnZXJBcHBLZXkiLCJhcHBEaWN0IiwiYXBwSWQiLCJrZXkiLCJkYXRhIiwidG9QYWlycyIsImxvZyIsImRlYnVnIiwicHJveHlBcHBJZCIsImFwcElkRm9yQnVuZGxlIiwiZW5kc1dpdGgiLCJnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cyIsImJ1bmRsZUlkcyIsInByb3hpZWRBcHBJZHMiLCJwb3NzaWJsZUJ1bmRsZUlkcyIsInVuaXEiLCJqb2luIiwiY2hlY2tQYXJhbXMiLCJwYXJhbXMiLCJlcnJvcnMiLCJmaWx0ZXIiLCJ2YWx1ZSIsImlzTmlsIiwibWFwIiwicGFyYW0iLCJsZW5ndGgiLCJFcnJvciIsInV0aWwiLCJwbHVyYWxpemUiLCJzaW1wbGVTdHJpbmdpZnkiLCJtdWx0aWxpbmUiLCJKU09OIiwic3RyaW5naWZ5IiwiY2xlYW5WYWx1ZSIsImNsb25lIiwicHJvcGVydHkiLCJkZWZlcnJlZFByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsIkIiLCJyZXMiLCJyZWoiLCJjb252ZXJ0UmVzdWx0IiwidHJ1bmNhdGUiLCJwYXJzZSIsImVyciIsImlzT2JqZWN0Iiwic3RhdHVzIiwiZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUiLCJtZXNzYWdlIiwiZ2V0TW9kdWxlUm9vdCIsIm1lbW9pemUiLCJyb290Iiwibm9kZSIsImdldE1vZHVsZVJvb3RTeW5jIiwiX19maWxlbmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCwgbm9kZSB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IE1PRFVMRV9OQU1FID0gJ2FwcGl1bS1yZW1vdGUtZGVidWdnZXInO1xuXG5jb25zdCBXRUJfQ09OVEVOVF9CVU5ETEVfSUQgPSAnY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50JztcbmNvbnN0IFdFQl9DT05URU5UX1BST0NFU1NfQlVORExFX0lEID0gJ3Byb2Nlc3MtY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50JztcbmNvbnN0IFNBRkFSSV9WSUVXX1BST0NFU1NfQlVORExFX0lEID0gJ3Byb2Nlc3MtU2FmYXJpVmlld1NlcnZpY2UnO1xuY29uc3QgU0FGQVJJX1ZJRVdfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5TYWZhcmlWaWV3U2VydmljZSc7XG5jb25zdCBXSUxEQ0FSRF9CVU5ETEVfSUQgPSAnKic7XG5cbmNvbnN0IElOQUNUSVZFX0FQUF9DT0RFID0gMDtcblxuLy8gdmFsdWVzIGZvciB0aGUgcGFnZSBgV0lSVHlwZUtleWAgZW50cnlcbmNvbnN0IEFDQ0VQVEVEX1BBR0VfVFlQRVMgPSBbXG4gICdXSVJUeXBlV2ViJywgLy8gdXAgdG8gaU9TIDExLjNcbiAgJ1dJUlR5cGVXZWJQYWdlJywgLy8gaU9TIDExLjRcbiAgJ1dJUlR5cGVQYWdlJywgLy8gaU9TIDExLjQgd2Vidmlld1xuXTtcblxuY29uc3QgUkVTUE9OU0VfTE9HX0xFTkdUSCA9IDEwMDtcblxuLypcbiAqIFRha2VzIGEgZGljdGlvbmFyeSBmcm9tIHRoZSByZW1vdGUgZGVidWdnZXIgYW5kIG1ha2VzIGEgbW9yZSBtYW5hZ2VhYmxlXG4gKiBkaWN0aW9uYXJ5IHdob3NlIGtleXMgYXJlIHVuZGVyc3RhbmRhYmxlXG4gKi9cbmZ1bmN0aW9uIGFwcEluZm9Gcm9tRGljdCAoZGljdCkge1xuICBjb25zdCBpZCA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICBjb25zdCBpc1Byb3h5ID0gXy5pc1N0cmluZyhkaWN0LldJUklzQXBwbGljYXRpb25Qcm94eUtleSlcbiAgICA/IGRpY3QuV0lSSXNBcHBsaWNhdGlvblByb3h5S2V5LnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xuICAgIDogZGljdC5XSVJJc0FwcGxpY2F0aW9uUHJveHlLZXk7XG4gIC8vIGF1dG9tYXRpb24gZW5hYmxlZCBjYW4gYmUgZWl0aGVyIGZyb20gdGhlIGtleXNcbiAgLy8gICAtIFdJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IChib29sZWFuKVxuICAvLyAgIC0gV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSAoc3RyaW5nIG9yIGJvb2xlYW4pXG4gIGxldCBpc0F1dG9tYXRpb25FbmFibGVkID0gISFkaWN0LldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5O1xuICBpZiAoXy5oYXMoZGljdCwgJ1dJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXknKSkge1xuICAgIGlmIChfLmlzU3RyaW5nKGRpY3QuV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSkpIHtcbiAgICAgIGlzQXV0b21hdGlvbkVuYWJsZWQgPSBkaWN0LldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXkgPT09ICdXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5VW5rbm93bidcbiAgICAgICAgPyAnVW5rbm93bidcbiAgICAgICAgOiBkaWN0LldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXkgPT09ICdXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5QXZhaWxhYmxlJztcbiAgICB9IGVsc2Uge1xuICAgICAgaXNBdXRvbWF0aW9uRW5hYmxlZCA9ICEhZGljdC5XSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5S2V5O1xuICAgIH1cbiAgfVxuICBjb25zdCBlbnRyeSA9IHtcbiAgICBpZCxcbiAgICBpc1Byb3h5LFxuICAgIG5hbWU6IGRpY3QuV0lSQXBwbGljYXRpb25OYW1lS2V5LFxuICAgIGJ1bmRsZUlkOiBkaWN0LldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSxcbiAgICBob3N0SWQ6IGRpY3QuV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICBpc0FjdGl2ZTogZGljdC5XSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5ICE9PSBJTkFDVElWRV9BUFBfQ09ERSxcbiAgICBpc0F1dG9tYXRpb25FbmFibGVkLFxuICB9O1xuXG4gIHJldHVybiBbaWQsIGVudHJ5XTtcbn1cblxuLypcbiAqIFRha2UgYSBkaWN0aW9uYXJ5IGZyb20gdGhlIHJlbW90ZSBkZWJ1Z2dlciBhbmQgbWFrZXMgYSBtb3JlIG1hbmFnZWFibGVcbiAqIGRpY3Rpb25hcnkgb2YgcGFnZXMgYXZhaWxhYmxlLlxuICovXG5mdW5jdGlvbiBwYWdlQXJyYXlGcm9tRGljdCAocGFnZURpY3QpIHtcbiAgaWYgKHBhZ2VEaWN0LmlkKSB7XG4gICAgLy8gdGhlIHBhZ2UgaXMgYWxyZWFkeSB0cmFuc2xhdGVkLCBzbyB3cmFwIGluIGFuIGFycmF5IGFuZCBwYXNzIGJhY2tcbiAgICByZXR1cm4gW3BhZ2VEaWN0XTtcbiAgfVxuICBsZXQgbmV3UGFnZUFycmF5ID0gW107XG4gIGZvciAoY29uc3QgZGljdCBvZiBfLnZhbHVlcyhwYWdlRGljdCkpIHtcbiAgICAvLyBjb3VudCBvbmx5IFdJUlR5cGVXZWIgcGFnZXMgYW5kIGlnbm9yZSBhbGwgb3RoZXJzIChXSVJUeXBlSmF2YVNjcmlwdCBldGMpXG4gICAgaWYgKF8uaXNVbmRlZmluZWQoZGljdC5XSVJUeXBlS2V5KSB8fCBBQ0NFUFRFRF9QQUdFX1RZUEVTLmluY2x1ZGVzKGRpY3QuV0lSVHlwZUtleSkpIHtcbiAgICAgIG5ld1BhZ2VBcnJheS5wdXNoKHtcbiAgICAgICAgaWQ6IGRpY3QuV0lSUGFnZUlkZW50aWZpZXJLZXksXG4gICAgICAgIHRpdGxlOiBkaWN0LldJUlRpdGxlS2V5LFxuICAgICAgICB1cmw6IGRpY3QuV0lSVVJMS2V5LFxuICAgICAgICBpc0tleTogIV8uaXNVbmRlZmluZWQoZGljdC5XSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1BhZ2VBcnJheTtcbn1cblxuLypcbiAqIEdpdmVuIGEgYnVuZGxlIGlkLCBmaW5kcyB0aGUgY29ycmVjdCByZW1vdGUgZGVidWdnZXIgYXBwIHRoYXQgaXNcbiAqIGNvbm5lY3RlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0RGVidWdnZXJBcHBLZXkgKGJ1bmRsZUlkLCBhcHBEaWN0KSB7XG4gIGxldCBhcHBJZDtcbiAgZm9yIChjb25zdCBba2V5LCBkYXRhXSBvZiBfLnRvUGFpcnMoYXBwRGljdCkpIHtcbiAgICBpZiAoZGF0YS5idW5kbGVJZCA9PT0gYnVuZGxlSWQpIHtcbiAgICAgIGFwcElkID0ga2V5O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIC8vIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGljayBhIHByb3h5IGZvciB0aGlzIGluc3RlYWRcbiAgaWYgKGFwcElkKSB7XG4gICAgbG9nLmRlYnVnKGBGb3VuZCBhcHAgaWQga2V5ICcke2FwcElkfScgZm9yIGJ1bmRsZSAnJHtidW5kbGVJZH0nYCk7XG4gICAgbGV0IHByb3h5QXBwSWQ7XG4gICAgZm9yIChjb25zdCBba2V5LCBkYXRhXSBvZiBfLnRvUGFpcnMoYXBwRGljdCkpIHtcbiAgICAgIGlmIChkYXRhLmlzUHJveHkgJiYgZGF0YS5ob3N0SWQgPT09IGFwcElkKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgc2VwYXJhdGUgYnVuZGxlSWQgJyR7ZGF0YS5idW5kbGVJZH0nIGAgK1xuICAgICAgICAgICAgICAgICAgYGFjdGluZyBhcyBwcm94eSBmb3IgJyR7YnVuZGxlSWR9Jywgd2l0aCBhcHAgaWQgJyR7a2V5fSdgKTtcbiAgICAgICAgLy8gc2V0IHRoZSBhcHAgaWQuLi4gdGhlIGxhc3Qgb25lIHdpbGwgYmUgdXNlZCwgc28ganVzdCBrZWVwIHJlLWFzc2lnbmluZ1xuICAgICAgICBwcm94eUFwcElkID0ga2V5O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJveHlBcHBJZCkge1xuICAgICAgYXBwSWQgPSBwcm94eUFwcElkO1xuICAgICAgbG9nLmRlYnVnKGBVc2luZyBwcm94aWVkIGFwcCBpZCAnJHthcHBJZH0nYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFwcElkO1xufVxuXG5mdW5jdGlvbiBhcHBJZEZvckJ1bmRsZSAoYnVuZGxlSWQsIGFwcERpY3QpIHtcbiAgbGV0IGFwcElkO1xuICBmb3IgKGNvbnN0IFtrZXksIGRhdGFdIG9mIF8udG9QYWlycyhhcHBEaWN0KSkge1xuICAgIGlmIChkYXRhLmJ1bmRsZUlkLmVuZHNXaXRoKGJ1bmRsZUlkKSkge1xuICAgICAgYXBwSWQgPSBrZXk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBpZiBub3RoaW5nIGlzIGZvdW5kLCB0cnkgdG8gZ2V0IHRoZSBnZW5lcmljIGFwcFxuICBpZiAoIWFwcElkICYmIGJ1bmRsZUlkICE9PSBXRUJfQ09OVEVOVF9CVU5ETEVfSUQpIHtcbiAgICByZXR1cm4gYXBwSWRGb3JCdW5kbGUoV0VCX0NPTlRFTlRfQlVORExFX0lELCBhcHBEaWN0KTtcbiAgfVxuXG4gIHJldHVybiBhcHBJZDtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVEZWJ1Z2dlckFwcEtleXMgKGJ1bmRsZUlkcywgYXBwRGljdCkge1xuICBsZXQgcHJveGllZEFwcElkcyA9IFtdO1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIHBvc3NpYmxlIGJ1bmRsZSBpZGVudGlmaWVyc1xuICBjb25zdCBwb3NzaWJsZUJ1bmRsZUlkcyA9IF8udW5pcShbXG4gICAgV0VCX0NPTlRFTlRfQlVORExFX0lELFxuICAgIFdFQl9DT05URU5UX1BST0NFU1NfQlVORExFX0lELFxuICAgIFNBRkFSSV9WSUVXX1BST0NFU1NfQlVORExFX0lELFxuICAgIFNBRkFSSV9WSUVXX0JVTkRMRV9JRCxcbiAgICBXSUxEQ0FSRF9CVU5ETEVfSUQsXG4gICAgLi4uYnVuZGxlSWRzLFxuICBdKTtcbiAgbG9nLmRlYnVnKGBDaGVja2luZyBmb3IgYnVuZGxlIGlkZW50aWZpZXJzOiAke3Bvc3NpYmxlQnVuZGxlSWRzLmpvaW4oJywgJyl9YCk7XG4gIGZvciAoY29uc3QgYnVuZGxlSWQgb2YgcG9zc2libGVCdW5kbGVJZHMpIHtcbiAgICBjb25zdCBhcHBJZCA9IGFwcElkRm9yQnVuZGxlKGJ1bmRsZUlkLCBhcHBEaWN0KTtcblxuICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGljayBhIHByb3h5IGZvciB0aGlzIGluc3RlYWRcbiAgICBpZiAoYXBwSWQpIHtcbiAgICAgIHByb3hpZWRBcHBJZHMucHVzaChhcHBJZCk7XG4gICAgICBsb2cuZGVidWcoYEZvdW5kIGFwcCBpZCBrZXkgJyR7YXBwSWR9JyBmb3IgYnVuZGxlICcke2J1bmRsZUlkfSdgKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgZGF0YV0gb2YgXy50b1BhaXJzKGFwcERpY3QpKSB7XG4gICAgICAgIGlmIChkYXRhLmlzUHJveHkgJiYgZGF0YS5ob3N0SWQgPT09IGFwcElkKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBGb3VuZCBzZXBhcmF0ZSBidW5kbGVJZCAnJHtkYXRhLmJ1bmRsZUlkfScgYCArXG4gICAgICAgICAgICAgICAgICAgIGBhY3RpbmcgYXMgcHJveHkgZm9yICcke2J1bmRsZUlkfScsIHdpdGggYXBwIGlkICcke2tleX0nYCk7XG4gICAgICAgICAgcHJveGllZEFwcElkcy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gXy51bmlxKHByb3hpZWRBcHBJZHMpO1xufVxuXG5mdW5jdGlvbiBjaGVja1BhcmFtcyAocGFyYW1zKSB7XG4gIC8vIGNoZWNrIGlmIGFsbCBwYXJhbWV0ZXJzIGhhdmUgYSB2YWx1ZVxuICBjb25zdCBlcnJvcnMgPSBfLnRvUGFpcnMocGFyYW1zKVxuICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gXy5pc05pbCh2YWx1ZSkpXG4gICAgLm1hcCgoW3BhcmFtXSkgPT4gcGFyYW0pO1xuICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAke3V0aWwucGx1cmFsaXplKCdwYXJhbWV0ZXInLCBlcnJvcnMubGVuZ3RoKX06ICR7ZXJyb3JzLmpvaW4oJywgJyl9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2ltcGxlU3RyaW5naWZ5ICh2YWx1ZSwgbXVsdGlsaW5lID0gZmFsc2UpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH1cblxuICAvLyB3ZSBnZXQgYmFjayBvYmplY3RzIHNvbWV0aW1lcyB3aXRoIHN0cmluZyB2ZXJzaW9ucyBvZiBmdW5jdGlvbnNcbiAgLy8gd2hpY2ggbXVkZHkgdGhlIGxvZ3NcbiAgbGV0IGNsZWFuVmFsdWUgPSBfLmNsb25lKHZhbHVlKTtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbJ2NlaWwnLCAnY2xvbmUnLCAnZmxvb3InLCAncm91bmQnLCAnc2NhbGUnLCAndG9TdHJpbmcnXSkge1xuICAgIGRlbGV0ZSBjbGVhblZhbHVlW3Byb3BlcnR5XTtcbiAgfVxuICByZXR1cm4gbXVsdGlsaW5lID8gSlNPTi5zdHJpbmdpZnkoY2xlYW5WYWx1ZSwgbnVsbCwgMikgOiBKU09OLnN0cmluZ2lmeShjbGVhblZhbHVlKTtcbn1cblxuZnVuY3Rpb24gZGVmZXJyZWRQcm9taXNlICgpIHtcbiAgLy8gaHR0cDovL2JsdWViaXJkanMuY29tL2RvY3MvYXBpL2RlZmVycmVkLW1pZ3JhdGlvbi5odG1sXG4gIGxldCByZXNvbHZlO1xuICBsZXQgcmVqZWN0O1xuICBjb25zdCBwcm9taXNlID0gbmV3IEIoKHJlcywgcmVqKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wYXJhbS1uYW1lc1xuICAgIHJlc29sdmUgPSByZXM7XG4gICAgcmVqZWN0ID0gcmVqO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBwcm9taXNlLFxuICAgIHJlc29sdmUsXG4gICAgcmVqZWN0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRSZXN1bHQgKHJlcykge1xuICBpZiAoXy5pc1VuZGVmaW5lZChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGdldCBPSyByZXN1bHQgZnJvbSByZW1vdGUgZGVidWdnZXIuIFJlc3VsdCB3YXM6ICR7Xy50cnVuY2F0ZShzaW1wbGVTdHJpbmdpZnkocmVzKSwge2xlbmd0aDogUkVTUE9OU0VfTE9HX0xFTkdUSH0pfWApO1xuICB9IGVsc2UgaWYgKF8uaXNTdHJpbmcocmVzKSkge1xuICAgIHRyeSB7XG4gICAgICByZXMgPSBKU09OLnBhcnNlKHJlcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyB3ZSBtaWdodCBnZXQgYSBzZXJpYWxpemVkIG9iamVjdCwgYnV0IHdlIG1pZ2h0IG5vdFxuICAgICAgLy8gaWYgd2UgZ2V0IGhlcmUsIGl0IGlzIGp1c3QgYSB2YWx1ZVxuICAgIH1cbiAgfSBlbHNlIGlmICghXy5pc09iamVjdChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZXN1bHQgaGFzIHVuZXhwZWN0ZWQgdHlwZTogKCR7dHlwZW9mIHJlc30pLmApO1xuICB9XG5cbiAgaWYgKHJlcy5zdGF0dXMgJiYgcmVzLnN0YXR1cyAhPT0gMCkge1xuICAgIC8vIHdlIGdvdCBzb21lIGZvcm0gb2YgZXJyb3IuXG4gICAgdGhyb3cgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUocmVzLnN0YXR1cywgcmVzLnZhbHVlLm1lc3NhZ2UgfHwgcmVzLnZhbHVlKTtcbiAgfVxuXG4gIC8vIHdpdGggZWl0aGVyIGhhdmUgYW4gb2JqZWN0IHdpdGggYSBgdmFsdWVgIHByb3BlcnR5IChldmVuIGlmIGBudWxsYCksXG4gIC8vIG9yIGEgcGxhaW4gb2JqZWN0XG4gIGNvbnN0IHZhbHVlID0gXy5oYXMocmVzLCAndmFsdWUnKSA/IHJlcy52YWx1ZSA6IHJlcztcblxuICAvLyBnZXQgcmlkIG9mIG5vaXN5IGZ1bmN0aW9ucyBvbiBvYmplY3RzXG4gIGlmIChfLmlzT2JqZWN0KHZhbHVlKSkge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgWydjZWlsJywgJ2Nsb25lJywgJ2Zsb29yJywgJ3JvdW5kJywgJ3NjYWxlJywgJ3RvU3RyaW5nJ10pIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtwcm9wZXJ0eV07XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IG1vZHVsZSdzIHJvb3QgZm9sZGVyXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZ1bGwgcGF0aCB0byBtb2R1bGUgcm9vdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjdXJyZW50IG1vZHVsZSByb290IGZvbGRlciBjYW5ub3QgYmUgZGV0ZXJtaW5lZFxuICovXG5jb25zdCBnZXRNb2R1bGVSb290ID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldE1vZHVsZVJvb3QgKCkge1xuICBjb25zdCByb290ID0gbm9kZS5nZXRNb2R1bGVSb290U3luYyhNT0RVTEVfTkFNRSwgX19maWxlbmFtZSk7XG4gIGlmICghcm9vdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSAke01PRFVMRV9OQU1FfSBOb2RlLmpzIG1vZHVsZWApO1xuICB9XG4gIHJldHVybiByb290O1xufSk7XG5cbmV4cG9ydCB7XG4gIGFwcEluZm9Gcm9tRGljdCwgcGFnZUFycmF5RnJvbURpY3QsIGdldERlYnVnZ2VyQXBwS2V5LFxuICBnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cywgY2hlY2tQYXJhbXMsIHNpbXBsZVN0cmluZ2lmeSwgZGVmZXJyZWRQcm9taXNlLFxuICBjb252ZXJ0UmVzdWx0LCBSRVNQT05TRV9MT0dfTEVOR1RILCBnZXRNb2R1bGVSb290LFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7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
188
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2JsdWViaXJkIiwiX2Jhc2VEcml2ZXIiLCJfc3VwcG9ydCIsIk1PRFVMRV9OQU1FIiwiV0VCX0NPTlRFTlRfQlVORExFX0lEIiwiV0VCX0NPTlRFTlRfUFJPQ0VTU19CVU5ETEVfSUQiLCJTQUZBUklfVklFV19QUk9DRVNTX0JVTkRMRV9JRCIsIlNBRkFSSV9WSUVXX0JVTkRMRV9JRCIsIldJTERDQVJEX0JVTkRMRV9JRCIsIklOQUNUSVZFX0FQUF9DT0RFIiwiQUNDRVBURURfUEFHRV9UWVBFUyIsIlJFU1BPTlNFX0xPR19MRU5HVEgiLCJleHBvcnRzIiwiYXBwSW5mb0Zyb21EaWN0IiwiZGljdCIsImlkIiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiaXNQcm94eSIsIl8iLCJpc1N0cmluZyIsIldJUklzQXBwbGljYXRpb25Qcm94eUtleSIsInRvTG93ZXJDYXNlIiwiaXNBdXRvbWF0aW9uRW5hYmxlZCIsIldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IiwiaGFzIiwiV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSIsImVudHJ5IiwibmFtZSIsIldJUkFwcGxpY2F0aW9uTmFtZUtleSIsImJ1bmRsZUlkIiwiV0lSQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5IiwiaG9zdElkIiwiV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsImlzQWN0aXZlIiwiV0lSSXNBcHBsaWNhdGlvbkFjdGl2ZUtleSIsInBhZ2VBcnJheUZyb21EaWN0IiwicGFnZURpY3QiLCJuZXdQYWdlQXJyYXkiLCJ2YWx1ZXMiLCJpc1VuZGVmaW5lZCIsIldJUlR5cGVLZXkiLCJpbmNsdWRlcyIsInB1c2giLCJXSVJQYWdlSWRlbnRpZmllcktleSIsInRpdGxlIiwiV0lSVGl0bGVLZXkiLCJ1cmwiLCJXSVJVUkxLZXkiLCJpc0tleSIsIldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5IiwiZ2V0RGVidWdnZXJBcHBLZXkiLCJhcHBEaWN0IiwiYXBwSWQiLCJrZXkiLCJkYXRhIiwidG9QYWlycyIsImxvZyIsImRlYnVnIiwicHJveHlBcHBJZCIsImFwcElkRm9yQnVuZGxlIiwiZW5kc1dpdGgiLCJnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cyIsImJ1bmRsZUlkcyIsInByb3hpZWRBcHBJZHMiLCJwb3NzaWJsZUJ1bmRsZUlkcyIsInVuaXEiLCJqb2luIiwiY2hlY2tQYXJhbXMiLCJwYXJhbXMiLCJlcnJvcnMiLCJmaWx0ZXIiLCJ2YWx1ZSIsImlzTmlsIiwibWFwIiwicGFyYW0iLCJsZW5ndGgiLCJFcnJvciIsInV0aWwiLCJwbHVyYWxpemUiLCJzaW1wbGVTdHJpbmdpZnkiLCJtdWx0aWxpbmUiLCJKU09OIiwic3RyaW5naWZ5IiwiY2xlYW5WYWx1ZSIsImNsb25lIiwicHJvcGVydHkiLCJkZWZlcnJlZFByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsIkIiLCJyZXMiLCJyZWoiLCJjb252ZXJ0UmVzdWx0IiwidHJ1bmNhdGUiLCJwYXJzZSIsImVyciIsImlzT2JqZWN0Iiwic3RhdHVzIiwiZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUiLCJtZXNzYWdlIiwiZ2V0TW9kdWxlUm9vdCIsIm1lbW9pemUiLCJyb290Iiwibm9kZSIsImdldE1vZHVsZVJvb3RTeW5jIiwiX19maWxlbmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCwgbm9kZSB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IE1PRFVMRV9OQU1FID0gJ2FwcGl1bS1yZW1vdGUtZGVidWdnZXInO1xuXG5jb25zdCBXRUJfQ09OVEVOVF9CVU5ETEVfSUQgPSAnY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50JztcbmNvbnN0IFdFQl9DT05URU5UX1BST0NFU1NfQlVORExFX0lEID0gJ3Byb2Nlc3MtY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50JztcbmNvbnN0IFNBRkFSSV9WSUVXX1BST0NFU1NfQlVORExFX0lEID0gJ3Byb2Nlc3MtU2FmYXJpVmlld1NlcnZpY2UnO1xuY29uc3QgU0FGQVJJX1ZJRVdfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5TYWZhcmlWaWV3U2VydmljZSc7XG5jb25zdCBXSUxEQ0FSRF9CVU5ETEVfSUQgPSAnKic7XG5cbmNvbnN0IElOQUNUSVZFX0FQUF9DT0RFID0gMDtcblxuLy8gdmFsdWVzIGZvciB0aGUgcGFnZSBgV0lSVHlwZUtleWAgZW50cnlcbmNvbnN0IEFDQ0VQVEVEX1BBR0VfVFlQRVMgPSBbXG4gICdXSVJUeXBlV2ViJywgLy8gdXAgdG8gaU9TIDExLjNcbiAgJ1dJUlR5cGVXZWJQYWdlJywgLy8gaU9TIDExLjRcbiAgJ1dJUlR5cGVQYWdlJywgLy8gaU9TIDExLjQgd2Vidmlld1xuXTtcblxuY29uc3QgUkVTUE9OU0VfTE9HX0xFTkdUSCA9IDEwMDtcblxuLypcbiAqIFRha2VzIGEgZGljdGlvbmFyeSBmcm9tIHRoZSByZW1vdGUgZGVidWdnZXIgYW5kIG1ha2VzIGEgbW9yZSBtYW5hZ2VhYmxlXG4gKiBkaWN0aW9uYXJ5IHdob3NlIGtleXMgYXJlIHVuZGVyc3RhbmRhYmxlXG4gKi9cbmZ1bmN0aW9uIGFwcEluZm9Gcm9tRGljdCAoZGljdCkge1xuICBjb25zdCBpZCA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICBjb25zdCBpc1Byb3h5ID0gXy5pc1N0cmluZyhkaWN0LldJUklzQXBwbGljYXRpb25Qcm94eUtleSlcbiAgICA/IGRpY3QuV0lSSXNBcHBsaWNhdGlvblByb3h5S2V5LnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xuICAgIDogZGljdC5XSVJJc0FwcGxpY2F0aW9uUHJveHlLZXk7XG4gIC8vIGF1dG9tYXRpb24gZW5hYmxlZCBjYW4gYmUgZWl0aGVyIGZyb20gdGhlIGtleXNcbiAgLy8gICAtIFdJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IChib29sZWFuKVxuICAvLyAgIC0gV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSAoc3RyaW5nIG9yIGJvb2xlYW4pXG4gIGxldCBpc0F1dG9tYXRpb25FbmFibGVkID0gISFkaWN0LldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5O1xuICBpZiAoXy5oYXMoZGljdCwgJ1dJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXknKSkge1xuICAgIGlmIChfLmlzU3RyaW5nKGRpY3QuV0lSQXV0b21hdGlvbkF2YWlsYWJpbGl0eUtleSkpIHtcbiAgICAgIGlzQXV0b21hdGlvbkVuYWJsZWQgPSBkaWN0LldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXkgPT09ICdXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5VW5rbm93bidcbiAgICAgICAgPyAnVW5rbm93bidcbiAgICAgICAgOiBkaWN0LldJUkF1dG9tYXRpb25BdmFpbGFiaWxpdHlLZXkgPT09ICdXSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5QXZhaWxhYmxlJztcbiAgICB9IGVsc2Uge1xuICAgICAgaXNBdXRvbWF0aW9uRW5hYmxlZCA9ICEhZGljdC5XSVJBdXRvbWF0aW9uQXZhaWxhYmlsaXR5S2V5O1xuICAgIH1cbiAgfVxuICBjb25zdCBlbnRyeSA9IHtcbiAgICBpZCxcbiAgICBpc1Byb3h5LFxuICAgIG5hbWU6IGRpY3QuV0lSQXBwbGljYXRpb25OYW1lS2V5LFxuICAgIGJ1bmRsZUlkOiBkaWN0LldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSxcbiAgICBob3N0SWQ6IGRpY3QuV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICBpc0FjdGl2ZTogZGljdC5XSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5ICE9PSBJTkFDVElWRV9BUFBfQ09ERSxcbiAgICBpc0F1dG9tYXRpb25FbmFibGVkLFxuICB9O1xuXG4gIHJldHVybiBbaWQsIGVudHJ5XTtcbn1cblxuLypcbiAqIFRha2UgYSBkaWN0aW9uYXJ5IGZyb20gdGhlIHJlbW90ZSBkZWJ1Z2dlciBhbmQgbWFrZXMgYSBtb3JlIG1hbmFnZWFibGVcbiAqIGRpY3Rpb25hcnkgb2YgcGFnZXMgYXZhaWxhYmxlLlxuICovXG5mdW5jdGlvbiBwYWdlQXJyYXlGcm9tRGljdCAocGFnZURpY3QpIHtcbiAgaWYgKHBhZ2VEaWN0LmlkKSB7XG4gICAgLy8gdGhlIHBhZ2UgaXMgYWxyZWFkeSB0cmFuc2xhdGVkLCBzbyB3cmFwIGluIGFuIGFycmF5IGFuZCBwYXNzIGJhY2tcbiAgICByZXR1cm4gW3BhZ2VEaWN0XTtcbiAgfVxuICBsZXQgbmV3UGFnZUFycmF5ID0gW107XG4gIGZvciAoY29uc3QgZGljdCBvZiBfLnZhbHVlcyhwYWdlRGljdCkpIHtcbiAgICAvLyBjb3VudCBvbmx5IFdJUlR5cGVXZWIgcGFnZXMgYW5kIGlnbm9yZSBhbGwgb3RoZXJzIChXSVJUeXBlSmF2YVNjcmlwdCBldGMpXG4gICAgaWYgKF8uaXNVbmRlZmluZWQoZGljdC5XSVJUeXBlS2V5KSB8fCBBQ0NFUFRFRF9QQUdFX1RZUEVTLmluY2x1ZGVzKGRpY3QuV0lSVHlwZUtleSkpIHtcbiAgICAgIG5ld1BhZ2VBcnJheS5wdXNoKHtcbiAgICAgICAgaWQ6IGRpY3QuV0lSUGFnZUlkZW50aWZpZXJLZXksXG4gICAgICAgIHRpdGxlOiBkaWN0LldJUlRpdGxlS2V5LFxuICAgICAgICB1cmw6IGRpY3QuV0lSVVJMS2V5LFxuICAgICAgICBpc0tleTogIV8uaXNVbmRlZmluZWQoZGljdC5XSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1BhZ2VBcnJheTtcbn1cblxuLypcbiAqIEdpdmVuIGEgYnVuZGxlIGlkLCBmaW5kcyB0aGUgY29ycmVjdCByZW1vdGUgZGVidWdnZXIgYXBwIHRoYXQgaXNcbiAqIGNvbm5lY3RlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0RGVidWdnZXJBcHBLZXkgKGJ1bmRsZUlkLCBhcHBEaWN0KSB7XG4gIGxldCBhcHBJZDtcbiAgZm9yIChjb25zdCBba2V5LCBkYXRhXSBvZiBfLnRvUGFpcnMoYXBwRGljdCkpIHtcbiAgICBpZiAoZGF0YS5idW5kbGVJZCA9PT0gYnVuZGxlSWQpIHtcbiAgICAgIGFwcElkID0ga2V5O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIC8vIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGljayBhIHByb3h5IGZvciB0aGlzIGluc3RlYWRcbiAgaWYgKGFwcElkKSB7XG4gICAgbG9nLmRlYnVnKGBGb3VuZCBhcHAgaWQga2V5ICcke2FwcElkfScgZm9yIGJ1bmRsZSAnJHtidW5kbGVJZH0nYCk7XG4gICAgbGV0IHByb3h5QXBwSWQ7XG4gICAgZm9yIChjb25zdCBba2V5LCBkYXRhXSBvZiBfLnRvUGFpcnMoYXBwRGljdCkpIHtcbiAgICAgIGlmIChkYXRhLmlzUHJveHkgJiYgZGF0YS5ob3N0SWQgPT09IGFwcElkKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgc2VwYXJhdGUgYnVuZGxlSWQgJyR7ZGF0YS5idW5kbGVJZH0nIGAgK1xuICAgICAgICAgICAgICAgICAgYGFjdGluZyBhcyBwcm94eSBmb3IgJyR7YnVuZGxlSWR9Jywgd2l0aCBhcHAgaWQgJyR7a2V5fSdgKTtcbiAgICAgICAgLy8gc2V0IHRoZSBhcHAgaWQuLi4gdGhlIGxhc3Qgb25lIHdpbGwgYmUgdXNlZCwgc28ganVzdCBrZWVwIHJlLWFzc2lnbmluZ1xuICAgICAgICBwcm94eUFwcElkID0ga2V5O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJveHlBcHBJZCkge1xuICAgICAgYXBwSWQgPSBwcm94eUFwcElkO1xuICAgICAgbG9nLmRlYnVnKGBVc2luZyBwcm94aWVkIGFwcCBpZCAnJHthcHBJZH0nYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFwcElkO1xufVxuXG5mdW5jdGlvbiBhcHBJZEZvckJ1bmRsZSAoYnVuZGxlSWQsIGFwcERpY3QpIHtcbiAgbGV0IGFwcElkO1xuICBmb3IgKGNvbnN0IFtrZXksIGRhdGFdIG9mIF8udG9QYWlycyhhcHBEaWN0KSkge1xuICAgIGlmIChkYXRhLmJ1bmRsZUlkLmVuZHNXaXRoKGJ1bmRsZUlkKSkge1xuICAgICAgYXBwSWQgPSBrZXk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBpZiBub3RoaW5nIGlzIGZvdW5kLCB0cnkgdG8gZ2V0IHRoZSBnZW5lcmljIGFwcFxuICBpZiAoIWFwcElkICYmIGJ1bmRsZUlkICE9PSBXRUJfQ09OVEVOVF9CVU5ETEVfSUQpIHtcbiAgICByZXR1cm4gYXBwSWRGb3JCdW5kbGUoV0VCX0NPTlRFTlRfQlVORExFX0lELCBhcHBEaWN0KTtcbiAgfVxuXG4gIHJldHVybiBhcHBJZDtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVEZWJ1Z2dlckFwcEtleXMgKGJ1bmRsZUlkcywgYXBwRGljdCkge1xuICBsZXQgcHJveGllZEFwcElkcyA9IFtdO1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIHBvc3NpYmxlIGJ1bmRsZSBpZGVudGlmaWVyc1xuICBjb25zdCBwb3NzaWJsZUJ1bmRsZUlkcyA9IF8udW5pcShbXG4gICAgV0VCX0NPTlRFTlRfQlVORExFX0lELFxuICAgIFdFQl9DT05URU5UX1BST0NFU1NfQlVORExFX0lELFxuICAgIFNBRkFSSV9WSUVXX1BST0NFU1NfQlVORExFX0lELFxuICAgIFNBRkFSSV9WSUVXX0JVTkRMRV9JRCxcbiAgICBXSUxEQ0FSRF9CVU5ETEVfSUQsXG4gICAgLi4uYnVuZGxlSWRzLFxuICBdKTtcbiAgbG9nLmRlYnVnKGBDaGVja2luZyBmb3IgYnVuZGxlIGlkZW50aWZpZXJzOiAke3Bvc3NpYmxlQnVuZGxlSWRzLmpvaW4oJywgJyl9YCk7XG4gIGZvciAoY29uc3QgYnVuZGxlSWQgb2YgcG9zc2libGVCdW5kbGVJZHMpIHtcbiAgICBjb25zdCBhcHBJZCA9IGFwcElkRm9yQnVuZGxlKGJ1bmRsZUlkLCBhcHBEaWN0KTtcblxuICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGljayBhIHByb3h5IGZvciB0aGlzIGluc3RlYWRcbiAgICBpZiAoYXBwSWQpIHtcbiAgICAgIHByb3hpZWRBcHBJZHMucHVzaChhcHBJZCk7XG4gICAgICBsb2cuZGVidWcoYEZvdW5kIGFwcCBpZCBrZXkgJyR7YXBwSWR9JyBmb3IgYnVuZGxlICcke2J1bmRsZUlkfSdgKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgZGF0YV0gb2YgXy50b1BhaXJzKGFwcERpY3QpKSB7XG4gICAgICAgIGlmIChkYXRhLmlzUHJveHkgJiYgZGF0YS5ob3N0SWQgPT09IGFwcElkKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBGb3VuZCBzZXBhcmF0ZSBidW5kbGVJZCAnJHtkYXRhLmJ1bmRsZUlkfScgYCArXG4gICAgICAgICAgICAgICAgICAgIGBhY3RpbmcgYXMgcHJveHkgZm9yICcke2J1bmRsZUlkfScsIHdpdGggYXBwIGlkICcke2tleX0nYCk7XG4gICAgICAgICAgcHJveGllZEFwcElkcy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gXy51bmlxKHByb3hpZWRBcHBJZHMpO1xufVxuXG5mdW5jdGlvbiBjaGVja1BhcmFtcyAocGFyYW1zKSB7XG4gIC8vIGNoZWNrIGlmIGFsbCBwYXJhbWV0ZXJzIGhhdmUgYSB2YWx1ZVxuICBjb25zdCBlcnJvcnMgPSBfLnRvUGFpcnMocGFyYW1zKVxuICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gXy5pc05pbCh2YWx1ZSkpXG4gICAgLm1hcCgoW3BhcmFtXSkgPT4gcGFyYW0pO1xuICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAke3V0aWwucGx1cmFsaXplKCdwYXJhbWV0ZXInLCBlcnJvcnMubGVuZ3RoKX06ICR7ZXJyb3JzLmpvaW4oJywgJyl9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2ltcGxlU3RyaW5naWZ5ICh2YWx1ZSwgbXVsdGlsaW5lID0gZmFsc2UpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH1cblxuICAvLyB3ZSBnZXQgYmFjayBvYmplY3RzIHNvbWV0aW1lcyB3aXRoIHN0cmluZyB2ZXJzaW9ucyBvZiBmdW5jdGlvbnNcbiAgLy8gd2hpY2ggbXVkZHkgdGhlIGxvZ3NcbiAgbGV0IGNsZWFuVmFsdWUgPSBfLmNsb25lKHZhbHVlKTtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbJ2NlaWwnLCAnY2xvbmUnLCAnZmxvb3InLCAncm91bmQnLCAnc2NhbGUnLCAndG9TdHJpbmcnXSkge1xuICAgIGRlbGV0ZSBjbGVhblZhbHVlW3Byb3BlcnR5XTtcbiAgfVxuICByZXR1cm4gbXVsdGlsaW5lID8gSlNPTi5zdHJpbmdpZnkoY2xlYW5WYWx1ZSwgbnVsbCwgMikgOiBKU09OLnN0cmluZ2lmeShjbGVhblZhbHVlKTtcbn1cblxuZnVuY3Rpb24gZGVmZXJyZWRQcm9taXNlICgpIHtcbiAgLy8gaHR0cDovL2JsdWViaXJkanMuY29tL2RvY3MvYXBpL2RlZmVycmVkLW1pZ3JhdGlvbi5odG1sXG4gIGxldCByZXNvbHZlO1xuICBsZXQgcmVqZWN0O1xuICBjb25zdCBwcm9taXNlID0gbmV3IEIoKHJlcywgcmVqKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wYXJhbS1uYW1lc1xuICAgIHJlc29sdmUgPSByZXM7XG4gICAgcmVqZWN0ID0gcmVqO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBwcm9taXNlLFxuICAgIHJlc29sdmUsXG4gICAgcmVqZWN0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRSZXN1bHQgKHJlcykge1xuICBpZiAoXy5pc1VuZGVmaW5lZChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGdldCBPSyByZXN1bHQgZnJvbSByZW1vdGUgZGVidWdnZXIuIFJlc3VsdCB3YXM6ICR7Xy50cnVuY2F0ZShzaW1wbGVTdHJpbmdpZnkocmVzKSwge2xlbmd0aDogUkVTUE9OU0VfTE9HX0xFTkdUSH0pfWApO1xuICB9IGVsc2UgaWYgKF8uaXNTdHJpbmcocmVzKSkge1xuICAgIHRyeSB7XG4gICAgICByZXMgPSBKU09OLnBhcnNlKHJlcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyB3ZSBtaWdodCBnZXQgYSBzZXJpYWxpemVkIG9iamVjdCwgYnV0IHdlIG1pZ2h0IG5vdFxuICAgICAgLy8gaWYgd2UgZ2V0IGhlcmUsIGl0IGlzIGp1c3QgYSB2YWx1ZVxuICAgIH1cbiAgfSBlbHNlIGlmICghXy5pc09iamVjdChyZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZXN1bHQgaGFzIHVuZXhwZWN0ZWQgdHlwZTogKCR7dHlwZW9mIHJlc30pLmApO1xuICB9XG5cbiAgaWYgKHJlcy5zdGF0dXMgJiYgcmVzLnN0YXR1cyAhPT0gMCkge1xuICAgIC8vIHdlIGdvdCBzb21lIGZvcm0gb2YgZXJyb3IuXG4gICAgdGhyb3cgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUocmVzLnN0YXR1cywgcmVzLnZhbHVlLm1lc3NhZ2UgfHwgcmVzLnZhbHVlKTtcbiAgfVxuXG4gIC8vIHdpdGggZWl0aGVyIGhhdmUgYW4gb2JqZWN0IHdpdGggYSBgdmFsdWVgIHByb3BlcnR5IChldmVuIGlmIGBudWxsYCksXG4gIC8vIG9yIGEgcGxhaW4gb2JqZWN0XG4gIGNvbnN0IHZhbHVlID0gXy5oYXMocmVzLCAndmFsdWUnKSA/IHJlcy52YWx1ZSA6IHJlcztcblxuICAvLyBnZXQgcmlkIG9mIG5vaXN5IGZ1bmN0aW9ucyBvbiBvYmplY3RzXG4gIGlmIChfLmlzT2JqZWN0KHZhbHVlKSkge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgWydjZWlsJywgJ2Nsb25lJywgJ2Zsb29yJywgJ3JvdW5kJywgJ3NjYWxlJywgJ3RvU3RyaW5nJ10pIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtwcm9wZXJ0eV07XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IG1vZHVsZSdzIHJvb3QgZm9sZGVyXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZ1bGwgcGF0aCB0byBtb2R1bGUgcm9vdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjdXJyZW50IG1vZHVsZSByb290IGZvbGRlciBjYW5ub3QgYmUgZGV0ZXJtaW5lZFxuICovXG5jb25zdCBnZXRNb2R1bGVSb290ID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldE1vZHVsZVJvb3QgKCkge1xuICBjb25zdCByb290ID0gbm9kZS5nZXRNb2R1bGVSb290U3luYyhNT0RVTEVfTkFNRSwgX19maWxlbmFtZSk7XG4gIGlmICghcm9vdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSAke01PRFVMRV9OQU1FfSBOb2RlLmpzIG1vZHVsZWApO1xuICB9XG4gIHJldHVybiByb290O1xufSk7XG5cbmV4cG9ydCB7XG4gIGFwcEluZm9Gcm9tRGljdCwgcGFnZUFycmF5RnJvbURpY3QsIGdldERlYnVnZ2VyQXBwS2V5LFxuICBnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cywgY2hlY2tQYXJhbXMsIHNpbXBsZVN0cmluZ2lmeSwgZGVmZXJyZWRQcm9taXNlLFxuICBjb252ZXJ0UmVzdWx0LCBSRVNQT05TRV9MT0dfTEVOR1RILCBnZXRNb2R1bGVSb290LFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_logger","_interopRequireDefault","require","_lodash","_bluebird","_baseDriver","_support","MODULE_NAME","WEB_CONTENT_BUNDLE_ID","WEB_CONTENT_PROCESS_BUNDLE_ID","SAFARI_VIEW_PROCESS_BUNDLE_ID","SAFARI_VIEW_BUNDLE_ID","WILDCARD_BUNDLE_ID","INACTIVE_APP_CODE","ACCEPTED_PAGE_TYPES","RESPONSE_LOG_LENGTH","exports","appInfoFromDict","dict","id","WIRApplicationIdentifierKey","isProxy","_","isString","WIRIsApplicationProxyKey","toLowerCase","isAutomationEnabled","WIRRemoteAutomationEnabledKey","has","WIRAutomationAvailabilityKey","entry","name","WIRApplicationNameKey","bundleId","WIRApplicationBundleIdentifierKey","hostId","WIRHostApplicationIdentifierKey","isActive","WIRIsApplicationActiveKey","pageArrayFromDict","pageDict","newPageArray","values","isUndefined","WIRTypeKey","includes","push","WIRPageIdentifierKey","title","WIRTitleKey","url","WIRURLKey","isKey","WIRConnectionIdentifierKey","getDebuggerAppKey","appDict","appId","key","data","toPairs","log","debug","proxyAppId","appIdForBundle","endsWith","getPossibleDebuggerAppKeys","bundleIds","proxiedAppIds","possibleBundleIds","uniq","join","checkParams","params","errors","filter","value","isNil","map","param","length","Error","util","pluralize","simpleStringify","multiline","JSON","stringify","cleanValue","clone","property","deferredPromise","resolve","reject","promise","B","res","rej","convertResult","truncate","parse","err","isObject","status","errorFromMJSONWPStatusCode","message","getModuleRoot","memoize","root","node","getModuleRootSync","__filename"],"sources":["../../lib/utils.js"],"sourcesContent":["import log from './logger';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport { errorFromMJSONWPStatusCode } from '@appium/base-driver';\nimport { util, node } from '@appium/support';\n\nconst MODULE_NAME = 'appium-remote-debugger';\n\nconst WEB_CONTENT_BUNDLE_ID = 'com.apple.WebKit.WebContent';\nconst WEB_CONTENT_PROCESS_BUNDLE_ID = 'process-com.apple.WebKit.WebContent';\nconst SAFARI_VIEW_PROCESS_BUNDLE_ID = 'process-SafariViewService';\nconst SAFARI_VIEW_BUNDLE_ID = 'com.apple.SafariViewService';\nconst WILDCARD_BUNDLE_ID = '*';\n\nconst INACTIVE_APP_CODE = 0;\n\n// values for the page `WIRTypeKey` entry\nconst ACCEPTED_PAGE_TYPES = [\n 'WIRTypeWeb', // up to iOS 11.3\n 'WIRTypeWebPage', // iOS 11.4\n 'WIRTypePage', // iOS 11.4 webview\n];\n\nconst RESPONSE_LOG_LENGTH = 100;\n\n/*\n * Takes a dictionary from the remote debugger and makes a more manageable\n * dictionary whose keys are understandable\n */\nfunction appInfoFromDict (dict) {\n const id = dict.WIRApplicationIdentifierKey;\n const isProxy = _.isString(dict.WIRIsApplicationProxyKey)\n ? dict.WIRIsApplicationProxyKey.toLowerCase() === 'true'\n : dict.WIRIsApplicationProxyKey;\n // automation enabled can be either from the keys\n // - WIRRemoteAutomationEnabledKey (boolean)\n // - WIRAutomationAvailabilityKey (string or boolean)\n let isAutomationEnabled = !!dict.WIRRemoteAutomationEnabledKey;\n if (_.has(dict, 'WIRAutomationAvailabilityKey')) {\n if (_.isString(dict.WIRAutomationAvailabilityKey)) {\n isAutomationEnabled = dict.WIRAutomationAvailabilityKey === 'WIRAutomationAvailabilityUnknown'\n ? 'Unknown'\n : dict.WIRAutomationAvailabilityKey === 'WIRAutomationAvailabilityAvailable';\n } else {\n isAutomationEnabled = !!dict.WIRAutomationAvailabilityKey;\n }\n }\n const entry = {\n id,\n isProxy,\n name: dict.WIRApplicationNameKey,\n bundleId: dict.WIRApplicationBundleIdentifierKey,\n hostId: dict.WIRHostApplicationIdentifierKey,\n isActive: dict.WIRIsApplicationActiveKey !== INACTIVE_APP_CODE,\n isAutomationEnabled,\n };\n\n return [id, entry];\n}\n\n/*\n * Take a dictionary from the remote debugger and makes a more manageable\n * dictionary of pages available.\n */\nfunction pageArrayFromDict (pageDict) {\n if (pageDict.id) {\n // the page is already translated, so wrap in an array and pass back\n return [pageDict];\n }\n let newPageArray = [];\n for (const dict of _.values(pageDict)) {\n // count only WIRTypeWeb pages and ignore all others (WIRTypeJavaScript etc)\n if (_.isUndefined(dict.WIRTypeKey) || ACCEPTED_PAGE_TYPES.includes(dict.WIRTypeKey)) {\n newPageArray.push({\n id: dict.WIRPageIdentifierKey,\n title: dict.WIRTitleKey,\n url: dict.WIRURLKey,\n isKey: !_.isUndefined(dict.WIRConnectionIdentifierKey),\n });\n }\n }\n return newPageArray;\n}\n\n/*\n * Given a bundle id, finds the correct remote debugger app that is\n * connected.\n */\nfunction getDebuggerAppKey (bundleId, appDict) {\n let appId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.bundleId === bundleId) {\n appId = key;\n break;\n }\n }\n // now we need to determine if we should pick a proxy for this instead\n if (appId) {\n log.debug(`Found app id key '${appId}' for bundle '${bundleId}'`);\n let proxyAppId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.isProxy && data.hostId === appId) {\n log.debug(`Found separate bundleId '${data.bundleId}' ` +\n `acting as proxy for '${bundleId}', with app id '${key}'`);\n // set the app id... the last one will be used, so just keep re-assigning\n proxyAppId = key;\n }\n }\n if (proxyAppId) {\n appId = proxyAppId;\n log.debug(`Using proxied app id '${appId}'`);\n }\n }\n\n return appId;\n}\n\nfunction appIdForBundle (bundleId, appDict) {\n let appId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.bundleId.endsWith(bundleId)) {\n appId = key;\n break;\n }\n }\n\n // if nothing is found, try to get the generic app\n if (!appId && bundleId !== WEB_CONTENT_BUNDLE_ID) {\n return appIdForBundle(WEB_CONTENT_BUNDLE_ID, appDict);\n }\n\n return appId;\n}\n\nfunction getPossibleDebuggerAppKeys (bundleIds, appDict) {\n let proxiedAppIds = [];\n\n // go through the possible bundle identifiers\n const possibleBundleIds = _.uniq([\n WEB_CONTENT_BUNDLE_ID,\n WEB_CONTENT_PROCESS_BUNDLE_ID,\n SAFARI_VIEW_PROCESS_BUNDLE_ID,\n SAFARI_VIEW_BUNDLE_ID,\n WILDCARD_BUNDLE_ID,\n ...bundleIds,\n ]);\n log.debug(`Checking for bundle identifiers: ${possibleBundleIds.join(', ')}`);\n for (const bundleId of possibleBundleIds) {\n const appId = appIdForBundle(bundleId, appDict);\n\n // now we need to determine if we should pick a proxy for this instead\n if (appId) {\n proxiedAppIds.push(appId);\n log.debug(`Found app id key '${appId}' for bundle '${bundleId}'`);\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.isProxy && data.hostId === appId) {\n log.debug(`Found separate bundleId '${data.bundleId}' ` +\n `acting as proxy for '${bundleId}', with app id '${key}'`);\n proxiedAppIds.push(key);\n }\n }\n }\n }\n\n return _.uniq(proxiedAppIds);\n}\n\nfunction checkParams (params) {\n // check if all parameters have a value\n const errors = _.toPairs(params)\n .filter(([, value]) => _.isNil(value))\n .map(([param]) => param);\n if (errors.length) {\n throw new Error(`Missing ${util.pluralize('parameter', errors.length)}: ${errors.join(', ')}`);\n }\n}\n\nfunction simpleStringify (value, multiline = false) {\n if (!value) {\n return JSON.stringify(value);\n }\n\n // we get back objects sometimes with string versions of functions\n // which muddy the logs\n let cleanValue = _.clone(value);\n for (const property of ['ceil', 'clone', 'floor', 'round', 'scale', 'toString']) {\n delete cleanValue[property];\n }\n return multiline ? JSON.stringify(cleanValue, null, 2) : JSON.stringify(cleanValue);\n}\n\nfunction deferredPromise () {\n // http://bluebirdjs.com/docs/api/deferred-migration.html\n let resolve;\n let reject;\n const promise = new B((res, rej) => { // eslint-disable-line promise/param-names\n resolve = res;\n reject = rej;\n });\n return {\n promise,\n resolve,\n reject\n };\n}\n\nfunction convertResult (res) {\n if (_.isUndefined(res)) {\n throw new Error(`Did not get OK result from remote debugger. Result was: ${_.truncate(simpleStringify(res), {length: RESPONSE_LOG_LENGTH})}`);\n } else if (_.isString(res)) {\n try {\n res = JSON.parse(res);\n } catch (err) {\n // we might get a serialized object, but we might not\n // if we get here, it is just a value\n }\n } else if (!_.isObject(res)) {\n throw new Error(`Result has unexpected type: (${typeof res}).`);\n }\n\n if (res.status && res.status !== 0) {\n // we got some form of error.\n throw errorFromMJSONWPStatusCode(res.status, res.value.message || res.value);\n }\n\n // with either have an object with a `value` property (even if `null`),\n // or a plain object\n const value = _.has(res, 'value') ? res.value : res;\n\n // get rid of noisy functions on objects\n if (_.isObject(value)) {\n for (const property of ['ceil', 'clone', 'floor', 'round', 'scale', 'toString']) {\n delete value[property];\n }\n }\n return value;\n}\n\n/**\n * Calculates the path to the current module's root folder\n *\n * @returns {string} The full path to module root\n * @throws {Error} If the current module root folder cannot be determined\n */\nconst getModuleRoot = _.memoize(function getModuleRoot () {\n const root = node.getModuleRootSync(MODULE_NAME, __filename);\n if (!root) {\n throw new Error(`Cannot find the root folder of the ${MODULE_NAME} Node.js module`);\n }\n return root;\n});\n\nexport {\n appInfoFromDict, pageArrayFromDict, getDebuggerAppKey,\n getPossibleDebuggerAppKeys, checkParams, simpleStringify, deferredPromise,\n convertResult, RESPONSE_LOG_LENGTH, getModuleRoot,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["_logger","_interopRequireDefault","require","_lodash","_bluebird","_baseDriver","_support","MODULE_NAME","WEB_CONTENT_BUNDLE_ID","WEB_CONTENT_PROCESS_BUNDLE_ID","SAFARI_VIEW_PROCESS_BUNDLE_ID","SAFARI_VIEW_BUNDLE_ID","WILDCARD_BUNDLE_ID","INACTIVE_APP_CODE","ACCEPTED_PAGE_TYPES","RESPONSE_LOG_LENGTH","exports","appInfoFromDict","dict","id","WIRApplicationIdentifierKey","isProxy","_","isString","WIRIsApplicationProxyKey","toLowerCase","isAutomationEnabled","WIRRemoteAutomationEnabledKey","has","WIRAutomationAvailabilityKey","entry","name","WIRApplicationNameKey","bundleId","WIRApplicationBundleIdentifierKey","hostId","WIRHostApplicationIdentifierKey","isActive","WIRIsApplicationActiveKey","pageArrayFromDict","pageDict","newPageArray","values","isUndefined","WIRTypeKey","includes","push","WIRPageIdentifierKey","title","WIRTitleKey","url","WIRURLKey","isKey","WIRConnectionIdentifierKey","getDebuggerAppKey","appDict","appId","key","data","toPairs","log","debug","proxyAppId","appIdForBundle","endsWith","getPossibleDebuggerAppKeys","bundleIds","proxiedAppIds","possibleBundleIds","uniq","join","checkParams","params","errors","filter","value","isNil","map","param","length","Error","util","pluralize","simpleStringify","multiline","JSON","stringify","cleanValue","clone","property","deferredPromise","resolve","reject","promise","B","res","rej","convertResult","truncate","parse","err","isObject","status","errorFromMJSONWPStatusCode","message","getModuleRoot","memoize","root","node","getModuleRootSync","__filename"],"sources":["../../lib/utils.js"],"sourcesContent":["import log from './logger';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport { errorFromMJSONWPStatusCode } from '@appium/base-driver';\nimport { util, node } from '@appium/support';\n\nconst MODULE_NAME = 'appium-remote-debugger';\n\nconst WEB_CONTENT_BUNDLE_ID = 'com.apple.WebKit.WebContent';\nconst WEB_CONTENT_PROCESS_BUNDLE_ID = 'process-com.apple.WebKit.WebContent';\nconst SAFARI_VIEW_PROCESS_BUNDLE_ID = 'process-SafariViewService';\nconst SAFARI_VIEW_BUNDLE_ID = 'com.apple.SafariViewService';\nconst WILDCARD_BUNDLE_ID = '*';\n\nconst INACTIVE_APP_CODE = 0;\n\n// values for the page `WIRTypeKey` entry\nconst ACCEPTED_PAGE_TYPES = [\n 'WIRTypeWeb', // up to iOS 11.3\n 'WIRTypeWebPage', // iOS 11.4\n 'WIRTypePage', // iOS 11.4 webview\n];\n\nconst RESPONSE_LOG_LENGTH = 100;\n\n/*\n * Takes a dictionary from the remote debugger and makes a more manageable\n * dictionary whose keys are understandable\n */\nfunction appInfoFromDict (dict) {\n const id = dict.WIRApplicationIdentifierKey;\n const isProxy = _.isString(dict.WIRIsApplicationProxyKey)\n ? dict.WIRIsApplicationProxyKey.toLowerCase() === 'true'\n : dict.WIRIsApplicationProxyKey;\n // automation enabled can be either from the keys\n // - WIRRemoteAutomationEnabledKey (boolean)\n // - WIRAutomationAvailabilityKey (string or boolean)\n let isAutomationEnabled = !!dict.WIRRemoteAutomationEnabledKey;\n if (_.has(dict, 'WIRAutomationAvailabilityKey')) {\n if (_.isString(dict.WIRAutomationAvailabilityKey)) {\n isAutomationEnabled = dict.WIRAutomationAvailabilityKey === 'WIRAutomationAvailabilityUnknown'\n ? 'Unknown'\n : dict.WIRAutomationAvailabilityKey === 'WIRAutomationAvailabilityAvailable';\n } else {\n isAutomationEnabled = !!dict.WIRAutomationAvailabilityKey;\n }\n }\n const entry = {\n id,\n isProxy,\n name: dict.WIRApplicationNameKey,\n bundleId: dict.WIRApplicationBundleIdentifierKey,\n hostId: dict.WIRHostApplicationIdentifierKey,\n isActive: dict.WIRIsApplicationActiveKey !== INACTIVE_APP_CODE,\n isAutomationEnabled,\n };\n\n return [id, entry];\n}\n\n/*\n * Take a dictionary from the remote debugger and makes a more manageable\n * dictionary of pages available.\n */\nfunction pageArrayFromDict (pageDict) {\n if (pageDict.id) {\n // the page is already translated, so wrap in an array and pass back\n return [pageDict];\n }\n let newPageArray = [];\n for (const dict of _.values(pageDict)) {\n // count only WIRTypeWeb pages and ignore all others (WIRTypeJavaScript etc)\n if (_.isUndefined(dict.WIRTypeKey) || ACCEPTED_PAGE_TYPES.includes(dict.WIRTypeKey)) {\n newPageArray.push({\n id: dict.WIRPageIdentifierKey,\n title: dict.WIRTitleKey,\n url: dict.WIRURLKey,\n isKey: !_.isUndefined(dict.WIRConnectionIdentifierKey),\n });\n }\n }\n return newPageArray;\n}\n\n/*\n * Given a bundle id, finds the correct remote debugger app that is\n * connected.\n */\nfunction getDebuggerAppKey (bundleId, appDict) {\n let appId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.bundleId === bundleId) {\n appId = key;\n break;\n }\n }\n // now we need to determine if we should pick a proxy for this instead\n if (appId) {\n log.debug(`Found app id key '${appId}' for bundle '${bundleId}'`);\n let proxyAppId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.isProxy && data.hostId === appId) {\n log.debug(`Found separate bundleId '${data.bundleId}' ` +\n `acting as proxy for '${bundleId}', with app id '${key}'`);\n // set the app id... the last one will be used, so just keep re-assigning\n proxyAppId = key;\n }\n }\n if (proxyAppId) {\n appId = proxyAppId;\n log.debug(`Using proxied app id '${appId}'`);\n }\n }\n\n return appId;\n}\n\nfunction appIdForBundle (bundleId, appDict) {\n let appId;\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.bundleId.endsWith(bundleId)) {\n appId = key;\n break;\n }\n }\n\n // if nothing is found, try to get the generic app\n if (!appId && bundleId !== WEB_CONTENT_BUNDLE_ID) {\n return appIdForBundle(WEB_CONTENT_BUNDLE_ID, appDict);\n }\n\n return appId;\n}\n\nfunction getPossibleDebuggerAppKeys (bundleIds, appDict) {\n let proxiedAppIds = [];\n\n // go through the possible bundle identifiers\n const possibleBundleIds = _.uniq([\n WEB_CONTENT_BUNDLE_ID,\n WEB_CONTENT_PROCESS_BUNDLE_ID,\n SAFARI_VIEW_PROCESS_BUNDLE_ID,\n SAFARI_VIEW_BUNDLE_ID,\n WILDCARD_BUNDLE_ID,\n ...bundleIds,\n ]);\n log.debug(`Checking for bundle identifiers: ${possibleBundleIds.join(', ')}`);\n for (const bundleId of possibleBundleIds) {\n const appId = appIdForBundle(bundleId, appDict);\n\n // now we need to determine if we should pick a proxy for this instead\n if (appId) {\n proxiedAppIds.push(appId);\n log.debug(`Found app id key '${appId}' for bundle '${bundleId}'`);\n for (const [key, data] of _.toPairs(appDict)) {\n if (data.isProxy && data.hostId === appId) {\n log.debug(`Found separate bundleId '${data.bundleId}' ` +\n `acting as proxy for '${bundleId}', with app id '${key}'`);\n proxiedAppIds.push(key);\n }\n }\n }\n }\n\n return _.uniq(proxiedAppIds);\n}\n\nfunction checkParams (params) {\n // check if all parameters have a value\n const errors = _.toPairs(params)\n .filter(([, value]) => _.isNil(value))\n .map(([param]) => param);\n if (errors.length) {\n throw new Error(`Missing ${util.pluralize('parameter', errors.length)}: ${errors.join(', ')}`);\n }\n}\n\nfunction simpleStringify (value, multiline = false) {\n if (!value) {\n return JSON.stringify(value);\n }\n\n // we get back objects sometimes with string versions of functions\n // which muddy the logs\n let cleanValue = _.clone(value);\n for (const property of ['ceil', 'clone', 'floor', 'round', 'scale', 'toString']) {\n delete cleanValue[property];\n }\n return multiline ? JSON.stringify(cleanValue, null, 2) : JSON.stringify(cleanValue);\n}\n\nfunction deferredPromise () {\n // http://bluebirdjs.com/docs/api/deferred-migration.html\n let resolve;\n let reject;\n const promise = new B((res, rej) => { // eslint-disable-line promise/param-names\n resolve = res;\n reject = rej;\n });\n return {\n promise,\n resolve,\n reject\n };\n}\n\nfunction convertResult (res) {\n if (_.isUndefined(res)) {\n throw new Error(`Did not get OK result from remote debugger. Result was: ${_.truncate(simpleStringify(res), {length: RESPONSE_LOG_LENGTH})}`);\n } else if (_.isString(res)) {\n try {\n res = JSON.parse(res);\n } catch (err) {\n // we might get a serialized object, but we might not\n // if we get here, it is just a value\n }\n } else if (!_.isObject(res)) {\n throw new Error(`Result has unexpected type: (${typeof res}).`);\n }\n\n if (res.status && res.status !== 0) {\n // we got some form of error.\n throw errorFromMJSONWPStatusCode(res.status, res.value.message || res.value);\n }\n\n // with either have an object with a `value` property (even if `null`),\n // or a plain object\n const value = _.has(res, 'value') ? res.value : res;\n\n // get rid of noisy functions on objects\n if (_.isObject(value)) {\n for (const property of ['ceil', 'clone', 'floor', 'round', 'scale', 'toString']) {\n delete value[property];\n }\n }\n return value;\n}\n\n/**\n * Calculates the path to the current module's root folder\n *\n * @returns {string} The full path to module root\n * @throws {Error} If the current module root folder cannot be determined\n */\nconst getModuleRoot = _.memoize(function getModuleRoot () {\n const root = node.getModuleRootSync(MODULE_NAME, __filename);\n if (!root) {\n throw new Error(`Cannot find the root folder of the ${MODULE_NAME} Node.js module`);\n }\n return root;\n});\n\nexport {\n appInfoFromDict, pageArrayFromDict, getDebuggerAppKey,\n getPossibleDebuggerAppKeys, checkParams, simpleStringify, deferredPromise,\n convertResult, RESPONSE_LOG_LENGTH, getModuleRoot,\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "keywords": [
5
5
  "appium"
6
6
  ],
7
- "version": "9.1.14",
7
+ "version": "9.1.16",
8
8
  "author": "Appium Contributors",
9
9
  "license": "Apache-2.0",
10
10
  "repository": {
@@ -34,7 +34,7 @@
34
34
  ],
35
35
  "dependencies": {
36
36
  "@appium/base-driver": "^9.0.0",
37
- "@appium/support": "^3.0.0",
37
+ "@appium/support": "^4.0.0",
38
38
  "@babel/runtime": "^7.0.0",
39
39
  "appium-ios-device": "^2.0.0",
40
40
  "async-lock": "^1.2.2",
@@ -89,7 +89,7 @@
89
89
  "appium-ios-simulator": "^5.0.1",
90
90
  "chai": "^4.1.2",
91
91
  "chai-as-promised": "^7.1.1",
92
- "conventional-changelog-conventionalcommits": "^5.0.0",
92
+ "conventional-changelog-conventionalcommits": "^6.0.0",
93
93
  "eslint": "^7.32.0",
94
94
  "eslint-config-prettier": "^8.5.0",
95
95
  "finalhandler": "^1.1.2",