appium-remote-debugger 8.13.1 → 8.13.2
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.
|
@@ -30,7 +30,7 @@ async function executeAtom(atom, args, frames) {
|
|
|
30
30
|
throw new Error('Remote debugger is not connected');
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
_logger.default.debug(`Executing atom '${atom}'`);
|
|
33
|
+
_logger.default.debug(`Executing atom '${atom}' with 'args=${JSON.stringify(args)}; frames=${frames}'`);
|
|
34
34
|
|
|
35
35
|
const script = await (0, _atoms.getScriptForAtom)(atom, args, frames);
|
|
36
36
|
const value = await this.execute(script, true);
|
|
@@ -174,4 +174,4 @@ var _default = {
|
|
|
174
174
|
exports.default = _default;require('source-map-support').install();
|
|
175
175
|
|
|
176
176
|
|
|
177
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbnMvZXhlY3V0ZS5qcyJdLCJuYW1lcyI6WyJSUENfUkVTUE9OU0VfVElNRU9VVF9NUyIsImV4ZWN1dGVBdG9tIiwiYXRvbSIsImFyZ3MiLCJmcmFtZXMiLCJycGNDbGllbnQiLCJpc0Nvbm5lY3RlZCIsIkVycm9yIiwibG9nIiwiZGVidWciLCJzY3JpcHQiLCJ2YWx1ZSIsImV4ZWN1dGUiLCJfIiwidHJ1bmNhdGUiLCJsZW5ndGgiLCJSRVNQT05TRV9MT0dfTEVOR1RIIiwiZXhlY3V0ZUF0b21Bc3luYyIsImV2YWx1YXRlIiwibWV0aG9kIiwib3B0cyIsInNlbmQiLCJPYmplY3QiLCJhc3NpZ24iLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsInJldHVybkJ5VmFsdWUiLCJwcm9taXNlTmFtZSIsInV0aWwiLCJ1dWlkVjQiLCJyZXBsYWNlIiwib2JqIiwiZXhwcmVzc2lvbiIsInByb21pc2VPYmplY3RJZCIsInJlc3VsdCIsIm9iamVjdElkIiwiYXN5bmNDYWxsQmFjayIsInJlcyIsInN1YmNvbW1hbmRUaW1lb3V0IiwiZ2VuZXJhdGVQcmV2aWV3Iiwic2F2ZVJlc3VsdCIsImVyciIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsInJldHJ5V2FpdCIsInRpbWVvdXQiLCJyZXRyaWVzIiwicGFyc2VJbnQiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJoYXNWYWx1ZSIsImVycm9ycyIsIlRpbWVvdXRFcnJvciIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJ0b0ZpeGVkIiwiaWduIiwiY29tbWFuZCIsIm92ZXJyaWRlIiwicGFnZUxvYWRpbmciLCJ3YWl0Rm9yRG9tIiwiZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUiLCJnYXJiYWdlQ29sbGVjdCIsImNhbGxGdW5jdGlvbiIsImZuIiwiZnVuY3Rpb25EZWNsYXJhdGlvbiIsImFyZ3VtZW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7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LEdBQUcsTUFBTSxLQUFLaEMsU0FBTCxDQUFlZ0IsSUFBZixDQUFvQix3QkFBcEIsRUFBOEM7QUFDOURjLElBQUFBLFFBRDhEO0FBRTlEZ0MsSUFBQUEsbUJBQW1CLEVBQUVELEVBRnlDO0FBRzlERSxJQUFBQSxTQUFTLEVBQUVqRSxJQUhtRDtBQUk5RHVCLElBQUFBLGFBQWEsRUFBRSxJQUorQztBQUs5REYsSUFBQUEsUUFBUSxFQUFFLEtBQUtBLFFBTCtDO0FBTTlEQyxJQUFBQSxTQUFTLEVBQUUsS0FBS0E7QUFOOEMsR0FBOUMsQ0FBbEI7QUFTQSxTQUFPLDBCQUFjWSxHQUFkLENBQVA7QUFDRDs7ZUFHYztBQUFFcEMsRUFBQUEsV0FBRjtBQUFlZ0IsRUFBQUEsZ0JBQWY7QUFBaUNMLEVBQUFBLE9BQWpDO0FBQTBDcUQsRUFBQUE7QUFBMUMsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBjaGVja1BhcmFtcywgc2ltcGxlU3RyaW5naWZ5LCBjb252ZXJ0UmVzdWx0LCBSRVNQT05TRV9MT0dfTEVOR1RIIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0U2NyaXB0Rm9yQXRvbSB9IGZyb20gJy4uL2F0b21zJztcbmltcG9ydCB7IHV0aWwsIHRpbWluZyB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbi8qIEhvdyBtYW55IG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB3ZWJraXQgdG8gcmV0dXJuIGEgcmVzcG9uc2UgYmVmb3JlIHRpbWluZyBvdXQgKi9cbmNvbnN0IFJQQ19SRVNQT05TRV9USU1FT1VUX01TID0gNTAwMDtcblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUF0b20gKGF0b20sIGFyZ3MsIGZyYW1lcykge1xuICBpZiAoIXRoaXMucnBjQ2xpZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdGUgZGVidWdnZXIgaXMgbm90IGNvbm5lY3RlZCcpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBFeGVjdXRpbmcgYXRvbSAnJHthdG9tfSdgKTtcbiAgY29uc3Qgc2NyaXB0ID0gYXdhaXQgZ2V0U2NyaXB0Rm9yQXRvbShhdG9tLCBhcmdzLCBmcmFtZXMpO1xuICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZShzY3JpcHQsIHRydWUpO1xuICBsb2cuZGVidWcoYFJlY2VpdmVkIHJlc3VsdCBmb3IgYXRvbSAnJHthdG9tfScgZXhlY3V0aW9uOiAke18udHJ1bmNhdGUoc2ltcGxlU3RyaW5naWZ5KHZhbHVlKSwge2xlbmd0aDogUkVTUE9OU0VfTE9HX0xFTkdUSH0pfWApO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVBdG9tQXN5bmMgKGF0b20sIGFyZ3MsIGZyYW1lcykge1xuICAvLyBoZWxwZXIgdG8gc2VuZCBkaXJlY3RseSB0byB0aGUgd2ViIGluc3BlY3RvclxuICBjb25zdCBldmFsdWF0ZSA9IGFzeW5jIChtZXRob2QsIG9wdHMpID0+IGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQobWV0aG9kLCBPYmplY3QuYXNzaWduKHtcbiAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIHJldHVybkJ5VmFsdWU6IGZhbHNlLFxuICB9LCBvcHRzKSk7XG5cbiAgLy8gZmlyc3QgY3JlYXRlIGEgUHJvbWlzZSBvbiB0aGUgcGFnZSwgc2F2aW5nIHRoZSByZXNvbHZlL3JlamVjdCBmdW5jdGlvbnNcbiAgLy8gYXMgcHJvcGVydGllc1xuICBjb25zdCBwcm9taXNlTmFtZSA9IGBhcHBpdW1Bc3luY0V4ZWN1dGVQcm9taXNlJHt1dGlsLnV1aWRWNCgpLnJlcGxhY2UoLy0vZywgJycpfWA7XG4gIGNvbnN0IHNjcmlwdCA9XG4gICAgYHZhciByZXMsIHJlajtcbiAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX0gPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICByZXMgPSByZXNvbHZlO1xuICAgICAgcmVqID0gcmVqZWN0O1xuICAgIH0pO1xuICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfS5yZXNvbHZlID0gcmVzO1xuICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfS5yZWplY3QgPSByZWo7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9O2A7XG4gIGNvbnN0IG9iaiA9IGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgIGV4cHJlc3Npb246IHNjcmlwdCxcbiAgfSk7XG4gIGNvbnN0IHByb21pc2VPYmplY3RJZCA9IG9iai5yZXN1bHQub2JqZWN0SWQ7XG5cbiAgLy8gZXhlY3V0ZSB0aGUgYXRvbSwgY2FsbGluZyBiYWNrIHRvIHRoZSByZXNvbHZlIGZ1bmN0aW9uXG4gIGNvbnN0IGFzeW5jQ2FsbEJhY2sgPVxuICAgIGBmdW5jdGlvbiAocmVzKSB7XG4gICAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX0ucmVzb2x2ZShyZXMpO1xuICAgICAgd2luZG93LiR7cHJvbWlzZU5hbWV9VmFsdWUgPSByZXM7XG4gICAgfWA7XG4gIGF3YWl0IHRoaXMuZXhlY3V0ZShhd2FpdCBnZXRTY3JpcHRGb3JBdG9tKGF0b20sIGFyZ3MsIGZyYW1lcywgYXN5bmNDYWxsQmFjaykpO1xuXG4gIC8vIHdhaXQgZm9yIHRoZSBwcm9taXNlIHRvIGJlIHJlc29sdmVkXG4gIGxldCByZXM7XG4gIGNvbnN0IHN1YmNvbW1hbmRUaW1lb3V0ID0gMTAwMDsgLy8gdGltZW91dCBvbiBpbmRpdmlkdWFsIGNvbW1hbmRzXG4gIHRyeSB7XG4gICAgcmVzID0gYXdhaXQgZXZhbHVhdGUoJ1J1bnRpbWUuYXdhaXRQcm9taXNlJywge1xuICAgICAgcHJvbWlzZU9iamVjdElkLFxuICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICAgIGdlbmVyYXRlUHJldmlldzogdHJ1ZSxcbiAgICAgIHNhdmVSZXN1bHQ6IHRydWUsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICghZXJyLm1lc3NhZ2UuaW5jbHVkZXMoYCdSdW50aW1lLmF3YWl0UHJvbWlzZScgd2FzIG5vdCBmb3VuZGApKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIC8vIGF3YWl0UHJvbWlzZSBpcyBub3QgYWx3YXlzIGF2YWlsYWJsZSwgc28gc2ltdWxhdGUgaXQgd2l0aCBwb2xsXG4gICAgY29uc3QgcmV0cnlXYWl0ID0gMTAwO1xuICAgIGNvbnN0IHRpbWVvdXQgPSAoYXJncy5sZW5ndGggPj0gMykgPyBhcmdzWzJdIDogUlBDX1JFU1BPTlNFX1RJTUVPVVRfTVM7XG4gICAgLy8gaWYgdGhlIHRpbWVvdXQgbWF0aCB0dXJucyB1cCAwIHJldHJpZXMsIG1ha2Ugc3VyZSBpdCBoYXBwZW5zIG9uY2VcbiAgICBjb25zdCByZXRyaWVzID0gcGFyc2VJbnQodGltZW91dCAvIHJldHJ5V2FpdCwgMTApIHx8IDE7XG4gICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICBsb2cuZGVidWcoYFdhaXRpbmcgdXAgdG8gJHt0aW1lb3V0fW1zIGZvciBhc3luYyBleGVjdXRlIHRvIGZpbmlzaGApO1xuICAgIHJlcyA9IGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgcmV0cnlXYWl0LCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyB0aGUgYXRvbSBfd2lsbF8gcmV0dXJuLCBlaXRoZXIgYmVjYXVzZSBpdCBmaW5pc2hlZCBvciBhbiBlcnJvclxuICAgICAgLy8gaW5jbHVkaW5nIGEgdGltZW91dCBlcnJvclxuICAgICAgY29uc3QgaGFzVmFsdWUgPSBhd2FpdCBldmFsdWF0ZSgnUnVudGltZS5ldmFsdWF0ZScsIHtcbiAgICAgICAgZXhwcmVzc2lvbjogYHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSgnJHtwcm9taXNlTmFtZX1WYWx1ZScpO2AsXG4gICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIGlmIChoYXNWYWx1ZSkge1xuICAgICAgICAvLyB3ZSBvbmx5IHB1dCB0aGUgcHJvcGVydHkgb24gYHdpbmRvd2Agd2hlbiB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLFxuICAgICAgICAvLyBzbyBpZiBpdCBpcyB0aGVyZSwgZXZlcnl0aGluZyBpcyBkb25lXG4gICAgICAgIHJldHVybiBhd2FpdCBldmFsdWF0ZSgnUnVudGltZS5ldmFsdWF0ZScsIHtcbiAgICAgICAgICBleHByZXNzaW9uOiBgd2luZG93LiR7cHJvbWlzZU5hbWV9VmFsdWU7YCxcbiAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIHRocm93IGEgVGltZW91dEVycm9yLCBvciBlbHNlIGl0IG5lZWRzIHRvIGJlIGNhdWdodCBhbmQgcmUtdGhyb3duXG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlRpbWVvdXRFcnJvcihgVGltZWQgb3V0IHdhaXRpbmcgZm9yIGFzeW5jaHJvbm91cyBzY3JpcHQgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgcmVzdWx0IGFmdGVyICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zJykpO2ApO1xuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICAvLyB0cnkgdG8gZ2V0IHJpZCBvZiB0aGUgcHJvbWlzZVxuICAgICAgYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnZXhlY3V0ZV9zY3JpcHQnLCBbYGRlbGV0ZSB3aW5kb3cuJHtwcm9taXNlTmFtZX07YCwgW251bGwsIG51bGxdLCBzdWJjb21tYW5kVGltZW91dF0sIGZyYW1lcyk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG4gIHJldHVybiBjb252ZXJ0UmVzdWx0KHJlcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKGNvbW1hbmQsIG92ZXJyaWRlKSB7XG4gIC8vIGlmIHRoZSBwYWdlIGlzIG5vdCBsb2FkZWQgeWV0LCB3YWl0IGZvciBpdFxuICBpZiAodGhpcy5wYWdlTG9hZGluZyAmJiAhb3ZlcnJpZGUpIHtcbiAgICBsb2cuZGVidWcoJ1RyeWluZyB0byBleGVjdXRlIGJ1dCBwYWdlIGlzIG5vdCBsb2FkZWQuJyk7XG4gICAgYXdhaXQgdGhpcy53YWl0Rm9yRG9tKCk7XG4gIH1cblxuICBjaGVja1BhcmFtcyh7YXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXl9KTtcblxuICBpZiAodGhpcy5nYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSkge1xuICAgIGF3YWl0IHRoaXMuZ2FyYmFnZUNvbGxlY3QoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgU2VuZGluZyBqYXZhc2NyaXB0IGNvbW1hbmQ6ICcke18udHJ1bmNhdGUoY29tbWFuZCwge2xlbmd0aDogNTB9KX0nYCk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1J1bnRpbWUuZXZhbHVhdGUnLCB7XG4gICAgZXhwcmVzc2lvbjogY29tbWFuZCxcbiAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gIH0pO1xuXG4gIHJldHVybiBjb252ZXJ0UmVzdWx0KHJlcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGxGdW5jdGlvbiAob2JqZWN0SWQsIGZuLCBhcmdzKSB7XG4gIGNoZWNrUGFyYW1zKHthcHBJZEtleTogdGhpcy5hcHBJZEtleSwgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleX0pO1xuXG4gIGlmICh0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlKSB7XG4gICAgYXdhaXQgdGhpcy5nYXJiYWdlQ29sbGVjdCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKCdDYWxsaW5nIGphdmFzY3JpcHQgZnVuY3Rpb24nKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUnVudGltZS5jYWxsRnVuY3Rpb25PbicsIHtcbiAgICBvYmplY3RJZCxcbiAgICBmdW5jdGlvbkRlY2xhcmF0aW9uOiBmbixcbiAgICBhcmd1bWVudHM6IGFyZ3MsXG4gICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICB9KTtcblxuICByZXR1cm4gY29udmVydFJlc3VsdChyZXMpO1xufVxuXG5cbmV4cG9ydCBkZWZhdWx0IHsgZXhlY3V0ZUF0b20sIGV4ZWN1dGVBdG9tQXN5bmMsIGV4ZWN1dGUsIGNhbGxGdW5jdGlvbiB9O1xuIl0sImZpbGUiOiJsaWIvbWl4aW5zL2V4ZWN1dGUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9taXhpbnMvZXhlY3V0ZS5qcyJdLCJuYW1lcyI6WyJSUENfUkVTUE9OU0VfVElNRU9VVF9NUyIsImV4ZWN1dGVBdG9tIiwiYXRvbSIsImFyZ3MiLCJmcmFtZXMiLCJycGNDbGllbnQiLCJpc0Nvbm5lY3RlZCIsIkVycm9yIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5Iiwic2NyaXB0IiwidmFsdWUiLCJleGVjdXRlIiwiXyIsInRydW5jYXRlIiwibGVuZ3RoIiwiUkVTUE9OU0VfTE9HX0xFTkdUSCIsImV4ZWN1dGVBdG9tQXN5bmMiLCJldmFsdWF0ZSIsIm1ldGhvZCIsIm9wdHMiLCJzZW5kIiwiT2JqZWN0IiwiYXNzaWduIiwiYXBwSWRLZXkiLCJwYWdlSWRLZXkiLCJyZXR1cm5CeVZhbHVlIiwicHJvbWlzZU5hbWUiLCJ1dGlsIiwidXVpZFY0IiwicmVwbGFjZSIsIm9iaiIsImV4cHJlc3Npb24iLCJwcm9taXNlT2JqZWN0SWQiLCJyZXN1bHQiLCJvYmplY3RJZCIsImFzeW5jQ2FsbEJhY2siLCJyZXMiLCJzdWJjb21tYW5kVGltZW91dCIsImdlbmVyYXRlUHJldmlldyIsInNhdmVSZXN1bHQiLCJlcnIiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJyZXRyeVdhaXQiLCJ0aW1lb3V0IiwicmV0cmllcyIsInBhcnNlSW50IiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0IiwiaGFzVmFsdWUiLCJlcnJvcnMiLCJUaW1lb3V0RXJyb3IiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImlnbiIsImNvbW1hbmQiLCJvdmVycmlkZSIsInBhZ2VMb2FkaW5nIiwid2FpdEZvckRvbSIsImdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlIiwiZ2FyYmFnZUNvbGxlY3QiLCJjYWxsRnVuY3Rpb24iLCJmbiIsImZ1bmN0aW9uRGVjbGFyYXRpb24iLCJhcmd1bWVudHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7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S0E7QUFBMUMsR0FBWjs7QUFFQSxNQUFJLEtBQUtzQyx1QkFBVCxFQUFrQztBQUNoQyxVQUFNLEtBQUtDLGNBQUwsRUFBTjtBQUNEOztBQUVEMUQsa0JBQUlDLEtBQUosQ0FBVSw2QkFBVjs7QUFDQSxRQUFNOEIsR0FBRyxHQUFHLE1BQU0sS0FBS2xDLFNBQUwsQ0FBZWtCLElBQWYsQ0FBb0Isd0JBQXBCLEVBQThDO0FBQzlEYyxJQUFBQSxRQUQ4RDtBQUU5RGdDLElBQUFBLG1CQUFtQixFQUFFRCxFQUZ5QztBQUc5REUsSUFBQUEsU0FBUyxFQUFFbkUsSUFIbUQ7QUFJOUR5QixJQUFBQSxhQUFhLEVBQUUsSUFKK0M7QUFLOURGLElBQUFBLFFBQVEsRUFBRSxLQUFLQSxRQUwrQztBQU05REMsSUFBQUEsU0FBUyxFQUFFLEtBQUtBO0FBTjhDLEdBQTlDLENBQWxCO0FBU0EsU0FBTywwQkFBY1ksR0FBZCxDQUFQO0FBQ0Q7O2VBR2M7QUFBRXRDLEVBQUFBLFdBQUY7QUFBZWtCLEVBQUFBLGdCQUFmO0FBQWlDTCxFQUFBQSxPQUFqQztBQUEwQ3FELEVBQUFBO0FBQTFDLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgY2hlY2tQYXJhbXMsIHNpbXBsZVN0cmluZ2lmeSwgY29udmVydFJlc3VsdCwgUkVTUE9OU0VfTE9HX0xFTkdUSCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldFNjcmlwdEZvckF0b20gfSBmcm9tICcuLi9hdG9tcyc7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG4vKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3Igd2Via2l0IHRvIHJldHVybiBhIHJlc3BvbnNlIGJlZm9yZSB0aW1pbmcgb3V0ICovXG5jb25zdCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyA9IDUwMDA7XG5cbi8qKlxuICogRXhlY3V0ZSBhIFNlbGVuaXVtIGF0b20gaW4gU2FmYXJpXG4gKiBAcGFyYW0ge3N0cmluZ30gYXRvbSBOYW1lIG9mIFNlbGVuaXVtIGF0b20gKHNlZSBhdG9tcy8gZGlyZWN0b3J5KVxuICogQHBhcmFtIHtBcnJheTwqPn0gYXJncyBBcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBhdG9tXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGZyYW1lc1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIHJlc3VsdCByZWNlaXZlZCBmcm9tIHRoZSBhdG9tXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVBdG9tIChhdG9tLCBhcmdzLCBmcmFtZXMpIHtcbiAgaWYgKCF0aGlzLnJwY0NsaWVudC5pc0Nvbm5lY3RlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUmVtb3RlIGRlYnVnZ2VyIGlzIG5vdCBjb25uZWN0ZWQnKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgRXhlY3V0aW5nIGF0b20gJyR7YXRvbX0nIHdpdGggJ2FyZ3M9JHtKU09OLnN0cmluZ2lmeShhcmdzKX07IGZyYW1lcz0ke2ZyYW1lc30nYCk7XG4gIGNvbnN0IHNjcmlwdCA9IGF3YWl0IGdldFNjcmlwdEZvckF0b20oYXRvbSwgYXJncywgZnJhbWVzKTtcbiAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLmV4ZWN1dGUoc2NyaXB0LCB0cnVlKTtcbiAgbG9nLmRlYnVnKGBSZWNlaXZlZCByZXN1bHQgZm9yIGF0b20gJyR7YXRvbX0nIGV4ZWN1dGlvbjogJHtfLnRydW5jYXRlKHNpbXBsZVN0cmluZ2lmeSh2YWx1ZSksIHtsZW5ndGg6IFJFU1BPTlNFX0xPR19MRU5HVEh9KX1gKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQXRvbUFzeW5jIChhdG9tLCBhcmdzLCBmcmFtZXMpIHtcbiAgLy8gaGVscGVyIHRvIHNlbmQgZGlyZWN0bHkgdG8gdGhlIHdlYiBpbnNwZWN0b3JcbiAgY29uc3QgZXZhbHVhdGUgPSBhc3luYyAobWV0aG9kLCBvcHRzKSA9PiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKG1ldGhvZCwgT2JqZWN0LmFzc2lnbih7XG4gICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICByZXR1cm5CeVZhbHVlOiBmYWxzZSxcbiAgfSwgb3B0cykpO1xuXG4gIC8vIGZpcnN0IGNyZWF0ZSBhIFByb21pc2Ugb24gdGhlIHBhZ2UsIHNhdmluZyB0aGUgcmVzb2x2ZS9yZWplY3QgZnVuY3Rpb25zXG4gIC8vIGFzIHByb3BlcnRpZXNcbiAgY29uc3QgcHJvbWlzZU5hbWUgPSBgYXBwaXVtQXN5bmNFeGVjdXRlUHJvbWlzZSR7dXRpbC51dWlkVjQoKS5yZXBsYWNlKC8tL2csICcnKX1gO1xuICBjb25zdCBzY3JpcHQgPVxuICAgIGB2YXIgcmVzLCByZWo7XG4gICAgd2luZG93LiR7cHJvbWlzZU5hbWV9ID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcmVzID0gcmVzb2x2ZTtcbiAgICAgIHJlaiA9IHJlamVjdDtcbiAgICB9KTtcbiAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX0ucmVzb2x2ZSA9IHJlcztcbiAgICB3aW5kb3cuJHtwcm9taXNlTmFtZX0ucmVqZWN0ID0gcmVqO1xuICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfTtgO1xuICBjb25zdCBvYmogPSBhd2FpdCBldmFsdWF0ZSgnUnVudGltZS5ldmFsdWF0ZScsIHtcbiAgICBleHByZXNzaW9uOiBzY3JpcHQsXG4gIH0pO1xuICBjb25zdCBwcm9taXNlT2JqZWN0SWQgPSBvYmoucmVzdWx0Lm9iamVjdElkO1xuXG4gIC8vIGV4ZWN1dGUgdGhlIGF0b20sIGNhbGxpbmcgYmFjayB0byB0aGUgcmVzb2x2ZSBmdW5jdGlvblxuICBjb25zdCBhc3luY0NhbGxCYWNrID1cbiAgICBgZnVuY3Rpb24gKHJlcykge1xuICAgICAgd2luZG93LiR7cHJvbWlzZU5hbWV9LnJlc29sdmUocmVzKTtcbiAgICAgIHdpbmRvdy4ke3Byb21pc2VOYW1lfVZhbHVlID0gcmVzO1xuICAgIH1gO1xuICBhd2FpdCB0aGlzLmV4ZWN1dGUoYXdhaXQgZ2V0U2NyaXB0Rm9yQXRvbShhdG9tLCBhcmdzLCBmcmFtZXMsIGFzeW5jQ2FsbEJhY2spKTtcblxuICAvLyB3YWl0IGZvciB0aGUgcHJvbWlzZSB0byBiZSByZXNvbHZlZFxuICBsZXQgcmVzO1xuICBjb25zdCBzdWJjb21tYW5kVGltZW91dCA9IDEwMDA7IC8vIHRpbWVvdXQgb24gaW5kaXZpZHVhbCBjb21tYW5kc1xuICB0cnkge1xuICAgIHJlcyA9IGF3YWl0IGV2YWx1YXRlKCdSdW50aW1lLmF3YWl0UHJvbWlzZScsIHtcbiAgICAgIHByb21pc2VPYmplY3RJZCxcbiAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgICBnZW5lcmF0ZVByZXZpZXc6IHRydWUsXG4gICAgICBzYXZlUmVzdWx0OiB0cnVlLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoIWVyci5tZXNzYWdlLmluY2x1ZGVzKGAnUnVudGltZS5hd2FpdFByb21pc2UnIHdhcyBub3QgZm91bmRgKSkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICAvLyBhd2FpdFByb21pc2UgaXMgbm90IGFsd2F5cyBhdmFpbGFibGUsIHNvIHNpbXVsYXRlIGl0IHdpdGggcG9sbFxuICAgIGNvbnN0IHJldHJ5V2FpdCA9IDEwMDtcbiAgICBjb25zdCB0aW1lb3V0ID0gKGFyZ3MubGVuZ3RoID49IDMpID8gYXJnc1syXSA6IFJQQ19SRVNQT05TRV9USU1FT1VUX01TO1xuICAgIC8vIGlmIHRoZSB0aW1lb3V0IG1hdGggdHVybnMgdXAgMCByZXRyaWVzLCBtYWtlIHN1cmUgaXQgaGFwcGVucyBvbmNlXG4gICAgY29uc3QgcmV0cmllcyA9IHBhcnNlSW50KHRpbWVvdXQgLyByZXRyeVdhaXQsIDEwKSB8fCAxO1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgbG9nLmRlYnVnKGBXYWl0aW5nIHVwIHRvICR7dGltZW91dH1tcyBmb3IgYXN5bmMgZXhlY3V0ZSB0byBmaW5pc2hgKTtcbiAgICByZXMgPSBhd2FpdCByZXRyeUludGVydmFsKHJldHJpZXMsIHJldHJ5V2FpdCwgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gdGhlIGF0b20gX3dpbGxfIHJldHVybiwgZWl0aGVyIGJlY2F1c2UgaXQgZmluaXNoZWQgb3IgYW4gZXJyb3JcbiAgICAgIC8vIGluY2x1ZGluZyBhIHRpbWVvdXQgZXJyb3JcbiAgICAgIGNvbnN0IGhhc1ZhbHVlID0gYXdhaXQgZXZhbHVhdGUoJ1J1bnRpbWUuZXZhbHVhdGUnLCB7XG4gICAgICAgIGV4cHJlc3Npb246IGB3aW5kb3cuaGFzT3duUHJvcGVydHkoJyR7cHJvbWlzZU5hbWV9VmFsdWUnKTtgLFxuICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBpZiAoaGFzVmFsdWUpIHtcbiAgICAgICAgLy8gd2Ugb25seSBwdXQgdGhlIHByb3BlcnR5IG9uIGB3aW5kb3dgIHdoZW4gdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCxcbiAgICAgICAgLy8gc28gaWYgaXQgaXMgdGhlcmUsIGV2ZXJ5dGhpbmcgaXMgZG9uZVxuICAgICAgICByZXR1cm4gYXdhaXQgZXZhbHVhdGUoJ1J1bnRpbWUuZXZhbHVhdGUnLCB7XG4gICAgICAgICAgZXhwcmVzc2lvbjogYHdpbmRvdy4ke3Byb21pc2VOYW1lfVZhbHVlO2AsXG4gICAgICAgICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyB0aHJvdyBhIFRpbWVvdXRFcnJvciwgb3IgZWxzZSBpdCBuZWVkcyB0byBiZSBjYXVnaHQgYW5kIHJlLXRocm93blxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5UaW1lb3V0RXJyb3IoYFRpbWVkIG91dCB3YWl0aW5nIGZvciBhc3luY2hyb25vdXMgc2NyaXB0IGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHJlc3VsdCBhZnRlciAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tcycpKTtgKTtcbiAgICB9KTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgLy8gdHJ5IHRvIGdldCByaWQgb2YgdGhlIHByb21pc2VcbiAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2V4ZWN1dGVfc2NyaXB0JywgW2BkZWxldGUgd2luZG93LiR7cHJvbWlzZU5hbWV9O2AsIFtudWxsLCBudWxsXSwgc3ViY29tbWFuZFRpbWVvdXRdLCBmcmFtZXMpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuICByZXR1cm4gY29udmVydFJlc3VsdChyZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlIChjb21tYW5kLCBvdmVycmlkZSkge1xuICAvLyBpZiB0aGUgcGFnZSBpcyBub3QgbG9hZGVkIHlldCwgd2FpdCBmb3IgaXRcbiAgaWYgKHRoaXMucGFnZUxvYWRpbmcgJiYgIW92ZXJyaWRlKSB7XG4gICAgbG9nLmRlYnVnKCdUcnlpbmcgdG8gZXhlY3V0ZSBidXQgcGFnZSBpcyBub3QgbG9hZGVkLicpO1xuICAgIGF3YWl0IHRoaXMud2FpdEZvckRvbSgpO1xuICB9XG5cbiAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG5cbiAgaWYgKHRoaXMuZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUpIHtcbiAgICBhd2FpdCB0aGlzLmdhcmJhZ2VDb2xsZWN0KCk7XG4gIH1cblxuICBsb2cuZGVidWcoYFNlbmRpbmcgamF2YXNjcmlwdCBjb21tYW5kOiAnJHtfLnRydW5jYXRlKGNvbW1hbmQsIHtsZW5ndGg6IDUwfSl9J2ApO1xuICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdSdW50aW1lLmV2YWx1YXRlJywge1xuICAgIGV4cHJlc3Npb246IGNvbW1hbmQsXG4gICAgcmV0dXJuQnlWYWx1ZTogdHJ1ZSxcbiAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICB9KTtcblxuICByZXR1cm4gY29udmVydFJlc3VsdChyZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjYWxsRnVuY3Rpb24gKG9iamVjdElkLCBmbiwgYXJncykge1xuICBjaGVja1BhcmFtcyh7YXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXl9KTtcblxuICBpZiAodGhpcy5nYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSkge1xuICAgIGF3YWl0IHRoaXMuZ2FyYmFnZUNvbGxlY3QoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZygnQ2FsbGluZyBqYXZhc2NyaXB0IGZ1bmN0aW9uJyk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1J1bnRpbWUuY2FsbEZ1bmN0aW9uT24nLCB7XG4gICAgb2JqZWN0SWQsXG4gICAgZnVuY3Rpb25EZWNsYXJhdGlvbjogZm4sXG4gICAgYXJndW1lbnRzOiBhcmdzLFxuICAgIHJldHVybkJ5VmFsdWU6IHRydWUsXG4gICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnZlcnRSZXN1bHQocmVzKTtcbn1cblxuXG5leHBvcnQgZGVmYXVsdCB7IGV4ZWN1dGVBdG9tLCBleGVjdXRlQXRvbUFzeW5jLCBleGVjdXRlLCBjYWxsRnVuY3Rpb24gfTtcbiJdLCJmaWxlIjoibGliL21peGlucy9leGVjdXRlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
@@ -180,12 +180,17 @@ class RpcClient {
|
|
|
180
180
|
|
|
181
181
|
return await this.sendToDevice(command, opts, waitForResponse);
|
|
182
182
|
} catch (err) {
|
|
183
|
-
|
|
184
|
-
|
|
183
|
+
let {
|
|
184
|
+
message = ''
|
|
185
|
+
} = err;
|
|
186
|
+
message = message.toLowerCase();
|
|
187
|
+
|
|
188
|
+
if (message.includes(`'target' domain was not found`)) {
|
|
189
|
+
_logger.default.info('The target device does not support Target based communication. ' + 'Will follow non-target based communication.');
|
|
185
190
|
|
|
186
191
|
this.isTargetBased = false;
|
|
187
192
|
return await this.sendToDevice(command, opts, waitForResponse);
|
|
188
|
-
} else if (
|
|
193
|
+
} else if (message.includes(`domain was not found`) || message.includes(`some arguments of method`) || message.includes(`missing target`)) {
|
|
189
194
|
this.isTargetBased = true;
|
|
190
195
|
await this.waitForTarget(appIdKey, pageIdKey);
|
|
191
196
|
return await this.sendToDevice(command, opts, waitForResponse);
|
|
@@ -563,4 +568,4 @@ class RpcClient {
|
|
|
563
568
|
exports.default = RpcClient;require('source-map-support').install();
|
|
564
569
|
|
|
565
570
|
|
|
566
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMvcnBjLWNsaWVudC5qcyJdLCJuYW1lcyI6WyJEQVRBX0xPR19MRU5HVEgiLCJsZW5ndGgiLCJXQUlUX0ZPUl9UQVJHRVRfVElNRU9VVCIsIldBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCIsIk1JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEIiwiTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMiLCJpc1RhcmdldEJhc2VkIiwiaXNTYWZhcmkiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc0hpZ2hWZXJzaW9uIiwidXRpbCIsImNvbXBhcmVWZXJzaW9ucyIsImxvZyIsImRlYnVnIiwiUnBjQ2xpZW50IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiX3RhcmdldHMiLCJfc2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJzaG91bGRDaGVja0ZvclRhcmdldCIsImJ1bmRsZUlkIiwibG9nQWxsQ29tbXVuaWNhdGlvbiIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwid2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgiLCJzb2NrZXRDaHVua1NpemUiLCJmdWxsUGFnZUluaXRpYWxpemF0aW9uIiwiaXNDb25uZWN0ZWQiLCJjb25uSWQiLCJ1dWlkVjQiLCJzZW5kZXJJZCIsIm1zZ0lkIiwiX2NvbnRleHRzIiwiY29udGV4dHMiLCJuZWVkc1RhcmdldCIsInRhcmdldHMiLCJjb25uZWN0ZWQiLCJvbiIsImV2ZW50IiwibGlzdGVuZXIiLCJtZXNzYWdlSGFuZGxlciIsIm9uY2UiLCJvZmYiLCJ3YXJuIiwiX2lzVGFyZ2V0QmFzZWQiLCJyZW1vdGVNZXNzYWdlcyIsIlJlbW90ZU1lc3NhZ2VzIiwiUnBjTWVzc2FnZUhhbmRsZXIiLCJhZGRUYXJnZXQiLCJiaW5kIiwidXBkYXRlVGFyZ2V0IiwicmVtb3ZlVGFyZ2V0Iiwib25FeGVjdXRpb25Db250ZXh0Q3JlYXRlZCIsIm9uR2FyYmFnZUNvbGxlY3RlZCIsIndhaXRGb3JUYXJnZXQiLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsImZvcmNlIiwiZ2V0VGFyZ2V0IiwiXyIsImlzRW1wdHkiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwiZXJyb3IiLCJlcnIiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJFcnJvciIsInNlbmQiLCJjb21tYW5kIiwid2FpdEZvclJlc3BvbnNlIiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0Iiwic2VuZFRvRGV2aWNlIiwiaW5mbyIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJ0b0ZpeGVkIiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJ3cmFwcGVyTXNnSWQiLCJ0b1N0cmluZyIsInRhcmdldElkIiwiZnVsbE9wdHMiLCJkZWZhdWx0cyIsImlkIiwiY21kIiwiZ2V0UmVtb3RlQ29tbWFuZCIsIl9fYXJndW1lbnQiLCJXSVJTb2NrZXREYXRhS2V5IiwiaXNOaWwiLCJCdWZmZXIiLCJmcm9tIiwiSlNPTiIsInN0cmluZ2lmeSIsIm1lc3NhZ2VIYW5kbGVkIiwidHJ1bmNhdGUiLCJsaXN0ZW5lcnMiLCJfX3NlbGVjdG9yIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsImFyZ3MiLCJ2YWx1ZSIsImNvZGUiLCJtc2ciLCJyZXMiLCJzZW5kTWVzc2FnZSIsImNvbm5lY3QiLCJkaXNjb25uZWN0IiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwicmVjZWl2ZSIsImFwcCIsInRhcmdldEluZm8iLCJwZW5kaW5nVGFyZ2V0Tm90aWZpY2F0aW9uIiwiaXNQcm92aXNpb25hbCIsImhhcyIsIm9sZFRhcmdldElkIiwibmV3VGFyZ2V0SWQiLCJwcm92aXNpb25hbCIsInBhZ2UiLCJ0b1BhaXJzIiwic2VsZWN0UGFnZSIsInNlbmRPcHRzIiwiZW5hYmxlZCIsIk9iamVjdCIsImFzc2lnbiIsImluaXRpYWxpemVQYWdlRnVsbCIsImluaXRpYWxpemVQYWdlIiwiZGlzYWJsZWQiLCJpbnN0cnVtZW50cyIsImFjdGl2ZSIsInN0YXRlIiwiZGVwdGgiLCJzaG91bGRQYXVzZSIsImxvZ2dpbmdDaGFubmVscyIsInNvdXJjZSIsImNoYW5uZWxzIiwibWFwIiwiZW50cnkiLCJsZXZlbCIsInNlbGVjdEFwcCIsIm9uQXBwQ2hhbmdlIiwiZGljdCIsIm9sZEFwcElkS2V5IiwiV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsImNvcnJlY3RBcHBJZEtleSIsIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsInBhZ2VEaWN0IiwiY29ubmVjdGVkQXBwSWRLZXkiLCJjb250ZXh0IiwicHVzaCIsIm9uU2NyaXB0UGFyc2VkIiwic2NyaXB0SW5mbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxlQUFlLEdBQUc7QUFBQ0MsRUFBQUEsTUFBTSxFQUFFO0FBQVQsQ0FBeEI7QUFFQSxNQUFNQyx1QkFBdUIsR0FBRyxLQUFoQztBQUNBLE1BQU1DLHdCQUF3QixHQUFHLElBQWpDO0FBRUEsTUFBTUMsNkJBQTZCLEdBQUcsTUFBdEM7QUFHQSxNQUFNQyw2QkFBNkIsR0FBRyxNQUF0Qzs7QUFFQSxTQUFTQyxhQUFULENBQXdCQyxRQUF4QixFQUFrQ0MsZUFBbEMsRUFBbUQ7QUFJakQsUUFBTUMsYUFBYSxHQUFHQyxvQkFBS0MsZUFBTCxDQUFxQkgsZUFBckIsRUFBc0MsSUFBdEMsRUFBNENKLDZCQUE1QyxDQUF0Qjs7QUFDQVEsa0JBQUlDLEtBQUosQ0FBVyw4Q0FBNkNOLFFBQVEsR0FBRyxFQUFILEdBQVEsTUFBTywrQkFBOEJDLGVBQWdCLElBQTdIOztBQUNBSSxrQkFBSUMsS0FBSixDQUFXLDBDQUF5Q1QsNkJBQThCLE1BQUtLLGFBQWMsRUFBckc7O0FBQ0EsU0FBT0EsYUFBUDtBQUNEOztBQUVjLE1BQU1LLFNBQU4sQ0FBZ0I7QUFDN0JDLEVBQUFBLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtBQUN0QixTQUFLQyxRQUFMLEdBQWdCLEVBQWhCO0FBQ0EsU0FBS0MscUJBQUwsR0FBNkIsQ0FBQyxDQUFDRixJ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LEVBQWxEOztBQUNBaUIsVUFBQUEsTUFBTSxDQUFDbEIsR0FBRCxDQUFOO0FBQ0Q7O0FBSUQsWUFBSUwsZ0JBQUVDLE9BQUYsQ0FBVXlGLFFBQVYsQ0FBSixFQUF5QjtBQUN2QixjQUFJM0MsR0FBRyxHQUFHLGdDQUFWOztBQUNBN0YsMEJBQUlDLEtBQUosQ0FBVTRGLEdBQVY7O0FBQ0F4QixVQUFBQSxNQUFNLENBQUMsSUFBSWYsS0FBSixDQUFVdUMsR0FBVixDQUFELENBQU47QUFDRCxTQUpELE1BSU87QUFDTHpCLFVBQUFBLE9BQU8sQ0FBQyxDQUFDcUUsaUJBQUQsRUFBb0JELFFBQXBCLENBQUQsQ0FBUDtBQUNEO0FBQ0YsT0FwQk0sR0FBUDtBQXFCRCxLQTdDWSxDQUFiO0FBOENEOztBQUVEakcsRUFBQUEseUJBQXlCLENBQUVZLEdBQUYsRUFBT3VGLE9BQVAsRUFBZ0I7QUFJdkMsU0FBS3RILFFBQUwsQ0FBY3VILElBQWQsQ0FBbUJELE9BQU8sQ0FBQy9ELEVBQTNCO0FBQ0Q7O0FBRURuQyxFQUFBQSxrQkFBa0IsR0FBSTtBQUVwQnhDLG9CQUFJQyxLQUFKLENBQVcsaUNBQVg7QUFDRDs7QUFFRDJJLEVBQUFBLGNBQWMsQ0FBRXpGLEdBQUYsRUFBTzBGLFVBQVAsRUFBbUI7QUFFL0I3SSxvQkFBSUMsS0FBSixDQUFXLGtCQUFpQmtGLElBQUksQ0FBQ0MsU0FBTCxDQUFleUQsVUFBZixDQUEyQixFQUF2RDtBQUNEOztBQTloQjRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlbW90ZU1lc3NhZ2VzIGZyb20gJy4vcmVtb3RlLW1lc3NhZ2VzJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IFJwY01lc3NhZ2VIYW5kbGVyIGZyb20gJy4vcnBjLW1lc3NhZ2UtaGFuZGxlcic7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cblxuY29uc3QgREFUQV9MT0dfTEVOR1RIID0ge2xlbmd0aDogMjAwfTtcblxuY29uc3QgV0FJVF9GT1JfVEFSR0VUX1RJTUVPVVQgPSAxMDAwMDtcbmNvbnN0IFdBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCA9IDEwMDA7XG5cbmNvbnN0IE1JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEID0gJzEyLjInO1xuXG4vLyBgVGFyZ2V0LmV4aXN0c2AgcHJvdG9jb2wgbWV0aG9kIHdhcyByZW1vdmVkIGZyb20gV2ViS2l0aW4gMTMuNFxuY29uc3QgTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMgPSAnMTMuNCc7XG5cbmZ1bmN0aW9uIGlzVGFyZ2V0QmFzZWQgKGlzU2FmYXJpLCBwbGF0Zm9ybVZlcnNpb24pIHtcbiAgLy8gT24gaU9TIDEyLjIgdGhlIG1lc3NhZ2VzIGdldCBzZW50IHRocm91Z2ggdGhlIFRhcmdldCBkb21haW5cbiAgLy8gT24gaU9TIDEzLjArLCBXS1dlYlZpZXcgYWxzbyBuZWVkcyB0byBmb2xsb3cgdGhlIFRhcmdldCBkb21haW4sXG4gIC8vIHNvIGhlcmUgb25seSBjaGVjayB0aGUgdGFyZ2V0IE9TIHZlcnNpb24gYXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLlxuICBjb25zdCBpc0hpZ2hWZXJzaW9uID0gdXRpbC5jb21wYXJlVmVyc2lvbnMocGxhdGZvcm1WZXJzaW9uLCAnPj0nLCBNSU5fUExBVEZPUk1fRk9SX1RBUkdFVF9CQVNFRCk7XG4gIGxvZy5kZWJ1ZyhgQ2hlY2tpbmcgd2hpY2ggY29tbXVuaWNhdGlvbiBzdHlsZSB0byB1c2UgKCR7aXNTYWZhcmkgPyAnJyA6ICdub24tJ31TYWZhcmkgb24gcGxhdGZvcm0gdmVyc2lvbiAnJHtwbGF0Zm9ybVZlcnNpb259JylgKTtcbiAgbG9nLmRlYnVnKGBQbGF0Zm9ybSB2ZXJzaW9uIGVxdWFsIG9yIGhpZ2hlciB0aGFuICcke01JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEfSc6ICR7aXNIaWdoVmVyc2lvbn1gKTtcbiAgcmV0dXJuIGlzSGlnaFZlcnNpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJwY0NsaWVudCB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICB0aGlzLl90YXJnZXRzID0gW107XG4gICAgdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSAhIW9wdHMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG5cbiAgICBjb25zdCB7XG4gICAgICBidW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbiA9IHt9LFxuICAgICAgaXNTYWZhcmkgPSB0cnVlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbiA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBmYWxzZSxcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZhbHNlLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgdGhpcy5pc1NhZmFyaSA9IGlzU2FmYXJpO1xuXG4gICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuY29ubklkID0gdXRpbC51dWlkVjQoKTtcbiAgICB0aGlzLnNlbmRlcklkID0gdXRpbC51dWlkVjQoKTtcbiAgICB0aGlzLm1zZ0lkID0gMDtcblxuICAgIHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbiA9IGxvZ0FsbENvbW11bmljYXRpb247XG4gICAgdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wO1xuICAgIHRoaXMuc29ja2V0Q2h1bmtTaXplID0gc29ja2V0Q2h1bmtTaXplO1xuICAgIHRoaXMud2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGggPSB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDtcblxuICAgIHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZ1bGxQYWdlSW5pdGlhbGl6YXRpb247XG5cbiAgICB0aGlzLmJ1bmRsZUlkID0gYnVuZGxlSWQ7XG4gICAgdGhpcy5wbGF0Zm9ybVZlcnNpb24gPSBwbGF0Zm9ybVZlcnNpb247XG5cbiAgICB0aGlzLl9jb250ZXh0cyA9IFtdO1xuICAgIHRoaXMuX3RhcmdldHMgPSB7fTtcblxuICAgIC8vIHN0YXJ0IHdpdGggYSBiZXN0IGd1ZXNzIGZvciB0aGUgcHJvdG9jb2xcbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkKGlzU2FmYXJpLCB0aGlzLnBsYXRmb3JtVmVyc2lvbik7XG4gIH1cblxuICBnZXQgY29udGV4dHMgKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0cztcbiAgfVxuXG4gIGdldCBuZWVkc1RhcmdldCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgJiYgdGhpcy5pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IHRhcmdldHMgKCkge1xuICAgIHJldHVybiB0aGlzLl90YXJnZXRzO1xuICB9XG5cbiAgZ2V0IHNob3VsZENoZWNrRm9yVGFyZ2V0ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG4gIH1cblxuICBzZXQgc2hvdWxkQ2hlY2tGb3JUYXJnZXQgKHNob3VsZENoZWNrRm9yVGFyZ2V0KSB7XG4gICAgdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSAhIXNob3VsZENoZWNrRm9yVGFyZ2V0O1xuICB9XG5cbiAgZ2V0IGlzQ29ubmVjdGVkICgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWQ7XG4gIH1cblxuICBzZXQgaXNDb25uZWN0ZWQgKGNvbm5lY3RlZCkge1xuICAgIHRoaXMuY29ubmVjdGVkID0gISFjb25uZWN0ZWQ7XG4gIH1cblxuICBvbiAoZXZlbnQsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbihldmVudCwgbGlzdGVuZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb25jZSAoZXZlbnQsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbmNlKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBvZmYgKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXIub2ZmKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIGxvZy53YXJuKGBTZXR0aW5nIGNvbW11bmljYXRpb24gcHJvdG9jb2w6IHVzaW5nICR7aXNUYXJnZXRCYXNlZCA/ICdUYXJnZXQtYmFzZWQnIDogJ2Z1bGwgV2ViIEluc3BlY3RvciBwcm90b2NvbCd9IGNvbW11bmljYXRpb25gKTtcbiAgICB0aGlzLl9pc1RhcmdldEJhc2VkID0gaXNUYXJnZXRCYXNlZDtcblxuICAgIGlmICghdGhpcy5yZW1vdGVNZXNzYWdlcykge1xuICAgICAgdGhpcy5yZW1vdGVNZXNzYWdlcyA9IG5ldyBSZW1vdGVNZXNzYWdlcyhpc1RhcmdldEJhc2VkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdGVNZXNzYWdlcy5pc1RhcmdldEJhc2VkID0gaXNUYXJnZXRCYXNlZDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIgPSBuZXcgUnBjTWVzc2FnZUhhbmRsZXIoaXNUYXJnZXRCYXNlZCk7XG5cbiAgICAgIC8vIGFkZCBoYW5kbGVycyBmb3IgaW50ZXJuYWwgZXZlbnRzXG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcsIHRoaXMuYWRkVGFyZ2V0LmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbignVGFyZ2V0LmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0JywgdGhpcy51cGRhdGVUYXJnZXQuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJywgdGhpcy5yZW1vdmVUYXJnZXQuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdSdW50aW1lLmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkJywgdGhpcy5vbkV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbignSGVhcC5nYXJiYWdlQ29sbGVjdGVkJywgdGhpcy5vbkdhcmJhZ2VDb2xsZWN0ZWQuYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgd2FpdEZvclRhcmdldCAoYXBwSWRLZXksIHBhZ2VJZEtleSwgZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmICghZm9yY2UgJiYgIXRoaXMubmVlZHNUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2Ugd2FpdGluZyBpcyBuZWNlc3NhcnkgdG8gc2VlIHdoYXQgdGhlIHRhcmdldCBpc1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKCgpID0+ICFfLmlzRW1wdHkodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpLCB7XG4gICAgICAgIHdhaXRNczogV0FJVF9GT1JfVEFSR0VUX1RJTUVPVVQsXG4gICAgICAgIGludGVydmFsTXM6IFdBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCxcbiAgICAgICAgZXJyb3I6ICdObyB0YXJnZXRzIGZvdW5kLCB1bmFibGUgdG8gY29tbXVuaWNhdGUgd2l0aCBkZXZpY2UnLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoIWVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb25kaXRpb24gdW5tZXQnKSkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHRhcmdldHMgZm91bmQsIHVuYWJsZSB0byBjb21tdW5pY2F0ZSB3aXRoIGRldmljZScpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmQgKGNvbW1hbmQsIG9wdHMgPSB7fSwgd2FpdEZvclJlc3BvbnNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgY29uc3Qge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXlcbiAgICB9ID0gb3B0cztcbiAgICB0cnkge1xuICAgICAgaWYgKCFfLmlzRW1wdHkoYXBwSWRLZXkpICYmICFfLmlzRW1wdHkocGFnZUlkS2V5KSkge1xuICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVG9EZXZpY2UoY29tbWFuZCwgb3B0cywgd2FpdEZvclJlc3BvbnNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcyhgJ1RhcmdldCcgZG9tYWluIHdhcyBub3QgZm91bmRgKSkge1xuICAgICAgICBsb2cuaW5mbygnVGhlIHRhcmdldCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBUYXJnZXQgYmFzZGUgY29tbXVuaWNhdGlvbi4gJyArXG4gICAgICAgICAgJ1dpbGwgZm9sbG93IG5vbi10YXJnZXQgYmFzZWQgY29tbXVuaWNhdGlvbi4nKTtcbiAgICAgICAgdGhpcy5pc1RhcmdldEJhc2VkID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRUb0RldmljZShjb21tYW5kLCBvcHRzLCB3YWl0Rm9yUmVzcG9uc2UpO1xuICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcyhgZG9tYWluIHdhcyBub3QgZm91bmRgKSB8fCBlcnIubWVzc2FnZS5pbmNsdWRlcyhgU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kYCkpIHtcbiAgICAgICAgdGhpcy5pc1RhcmdldEJhc2VkID0gdHJ1ZTtcbiAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yVGFyZ2V0KGFwcElkS2V5LCBwYWdlSWRLZXkpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVG9EZXZpY2UoY29tbWFuZCwgb3B0cywgd2FpdEZvclJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgbG9nLmRlYnVnKGBTZW5kaW5nIHRvIFdlYiBJbnNwZWN0b3IgdG9vayAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmRUb0RldmljZSAoY29tbWFuZCwgb3B0cyA9IHt9LCB3YWl0Rm9yUmVzcG9uc2UgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgd2hlbmV2ZXIgcmVtb3RlIGRlYnVnZ2VyXG4gICAgICAvLyByZXBsaWVzIHRvIG91ciByZXF1ZXN0XG5cbiAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIG1lc3NhZ2VzIGNvbWluZyBhbmQgZ29pbmcgdXNpbmcgYSBzaW1wbGUgc2VxdWVudGlhbCBpZFxuICAgICAgY29uc3QgbXNnSWQgPSB0aGlzLm1zZ0lkKys7XG4gICAgICBsZXQgd3JhcHBlck1zZ0lkID0gbXNnSWQ7XG4gICAgICBpZiAodGhpcy5pc1RhcmdldEJhc2VkKSB7XG4gICAgICAgIC8vIGZvciB0YXJnZXQtYmFzZSBjb21tdW5pY2F0aW9uLCBldmVyeXRoaW5nIGlzIHdyYXBwZWQgdXBcbiAgICAgICAgd3JhcHBlck1zZ0lkID0gdGhpcy5tc2dJZCsrO1xuICAgICAgICAvLyBhY2tub3dsZWRnZSB3cmFwcGVyIG1lc3NhZ2VcbiAgICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbih3cmFwcGVyTXNnSWQudG9TdHJpbmcoKSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFwcElkS2V5ID0gb3B0cy5hcHBJZEtleTtcbiAgICAgIGNvbnN0IHBhZ2VJZEtleSA9IG9wdHMucGFnZUlkS2V5O1xuICAgICAgY29uc3QgdGFyZ2V0SWQgPSB0aGlzLmdldFRhcmdldChhcHBJZEtleSwgcGFnZUlkS2V5KTtcblxuICAgICAgLy8gcmV0cmlldmUgdGhlIGNvcnJlY3QgY29tbWFuZCB0byBzZW5kXG4gICAgICBjb25zdCBmdWxsT3B0cyA9IF8uZGVmYXVsdHMoe1xuICAgICAgICBjb25uSWQ6IHRoaXMuY29ubklkLFxuICAgICAgICBzZW5kZXJJZDogdGhpcy5zZW5kZXJJZCxcbiAgICAgICAgdGFyZ2V0SWQsXG4gICAgICAgIGlkOiBtc2dJZCxcbiAgICAgIH0sIG9wdHMpO1xuICAgICAgY29uc3QgY21kID0gdGhpcy5yZW1vdGVNZXNzYWdlcy5nZXRSZW1vdGVDb21tYW5kKGNvbW1hbmQsIGZ1bGxPcHRzKTtcblxuICAgICAgaWYgKGNtZD8uX19hcmd1bWVudD8uV0lSU29ja2V0RGF0YUtleSkge1xuICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIG1lc3NhZ2UgYmVpbmcgc2VudCBoYXMgYWxsIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIG5lZWRlZFxuICAgICAgICBpZiAoXy5pc05pbChjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LmlkKSkge1xuICAgICAgICAgIGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkuaWQgPSB3cmFwcGVyTXNnSWQ7XG4gICAgICAgIH1cbiAgICAgICAgY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSA9XG4gICAgICAgICAgQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSkpO1xuICAgICAgfVxuXG4gICAgICBsZXQgbWVzc2FnZUhhbmRsZWQgPSB0cnVlO1xuICAgICAgaWYgKCF3YWl0Rm9yUmVzcG9uc2UpIHtcbiAgICAgICAgLy8gdGhlIHByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCBhcyBzb29uIGFzIHRoZSBzb2NrZXQgaGFzIGJlZW4gc2VudFxuICAgICAgICBtZXNzYWdlSGFuZGxlZCA9IGZhbHNlO1xuICAgICAgICAvLyBkbyBub3QgbG9nIHJlY2VpcHRzXG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIub25jZShtc2dJZC50b1N0cmluZygpLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCB3YWl0aW5nIGZvciB0aGlzLCBhbmQgaWYgaXQgZXJyb3JzIGl0IGlzIG1vc3QgbGlrZWx5XG4gICAgICAgICAgICAvLyBhIHByb3RvY29sIGNoYW5nZS4gTG9nIGFuZCBjaGVjayBkdXJpbmcgdGVzdGluZ1xuICAgICAgICAgICAgbG9nLmVycm9yKGBSZWNlaXZlZCBlcnJvciBmcm9tIHNlbmQgdGhhdCBpcyBub3QgYmVpbmcgd2FpdGVkIGZvciAoaWQ6ICR7bXNnSWR9KTogJyR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShlcnIpLCBEQVRBX0xPR19MRU5HVEgpfSdgKTtcbiAgICAgICAgICAgIC8vIHJlamVjdCwgdGhvdWdoIGl0IGlzIHZlcnkgcmFyZSB0aGF0IHRoaXMgd2lsbCBiZSB0cmlnZ2VyZWQsIHNpbmNlXG4gICAgICAgICAgICAvLyB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBkaXJlY3RsdHkgYWZ0ZXIgc2VuZC4gT24gdGhlIG9mZiBjaGFuY2UsXG4gICAgICAgICAgICAvLyB0aG91Z2gsIGl0IHdpbGwgYWxlcnQgb2YgYSBwcm90b2NvbCBjaGFuZ2UuXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyLmxpc3RlbmVycyhjbWQuX19zZWxlY3RvcikubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIucHJlcGVuZE9uY2VMaXN0ZW5lcihjbWQuX19zZWxlY3RvciwgZnVuY3Rpb24gKGVyciwgLi4uYXJncykge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCByZXNwb25zZSBmcm9tIHNlbmQgKGlkOiAke21zZ0lkfSk6ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkoYXJncyksIERBVEFfTE9HX0xFTkdUSCl9J2ApO1xuICAgICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjbWQ/Ll9fYXJndW1lbnQ/LldJUlNvY2tldERhdGFLZXkpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbmNlKG1zZ0lkLnRvU3RyaW5nKCksIGZ1bmN0aW9uIChlcnIsIHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYFJlbW90ZSBkZWJ1Z2dlciBlcnJvciB3aXRoIGNvZGUgJyR7ZXJyLmNvZGV9JzogJHtlcnIubWVzc2FnZX1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgZGF0YSByZXNwb25zZSBmcm9tIHNlbmQgKGlkOiAke21zZ0lkfSk6ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkodmFsdWUpLCBEQVRBX0xPR19MRU5HVEgpfSdgKTtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBub3RoaW5nIGVsc2UgaXMgaGFuZGxpbmcgdGhpbmdzLCBzbyBqdXN0IHJlc29sdmUgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZW50XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1zZyA9IGBTZW5kaW5nICcke2NtZC5fX3NlbGVjdG9yfScgbWVzc2FnZWAgK1xuICAgICAgICAoZnVsbE9wdHMuYXBwSWRLZXkgPyBgIHRvIGFwcCAnJHtmdWxsT3B0cy5hcHBJZEtleX0nYCA6ICcnKSArXG4gICAgICAgIChmdWxsT3B0cy5wYWdlSWRLZXkgPyBgLCBwYWdlICcke2Z1bGxPcHRzLnBhZ2VJZEtleX0nYCA6ICcnKSArXG4gICAgICAgICh0aGlzLm5lZWRzVGFyZ2V0ICYmIHRhcmdldElkID8gYCwgdGFyZ2V0ICcke3RhcmdldElkfSdgIDogJycpICtcbiAgICAgICAgYCAoaWQ6ICR7bXNnSWR9KTogJyR7Y29tbWFuZH0nYDtcbiAgICAgIGxvZy5kZWJ1Zyhtc2cpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZW5kTWVzc2FnZShjbWQpO1xuICAgICAgICBpZiAoIW1lc3NhZ2VIYW5kbGVkKSB7XG4gICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGhhbmRsZXJzIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgYmVmb3JlIHJlc29sdmluZyxcbiAgICAgICAgICAvLyBhbmQgbm8gZXJyb3JzIHNlbmRpbmcgdGhlIG1lc3NhZ2Ugb3ZlciB0aGUgc29ja2V0LCBzbyByZXNvbHZlXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29ubmVjdCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAgIHRocm93IG5ldyBFcnJvcihgU3ViLWNsYXNzZXMgbmVlZCB0byBpbXBsZW1lbnQgYSAnY29ubmVjdCcgZnVuY3Rpb25gKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UgKC8qIGNvbW1hbmQgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdzZW5kTWVzc2FnZScgZnVuY3Rpb25gKTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmUgKC8qIGRhdGEgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdyZWNlaXZlJyBmdW5jdGlvbmApO1xuICB9XG5cbiAgYWRkVGFyZ2V0IChlcnIsIGFwcCwgdGFyZ2V0SW5mbykge1xuICAgIGlmIChfLmlzTmlsKHRhcmdldEluZm8/LnRhcmdldElkKSkge1xuICAgICAgbG9nLndhcm4oYFJlY2VpdmVkICdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcgZXZlbnQgZm9yIGFwcCAnJHthcHB9JyB3aXRoIG5vIHRhcmdldC4gU2tpcHBpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eSh0aGlzLnBlbmRpbmdUYXJnZXROb3RpZmljYXRpb24pICYmICF0YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwpIHtcbiAgICAgIGxvZy53YXJuKGBSZWNlaXZlZCAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnIGV2ZW50IGZvciBhcHAgJyR7YXBwfScgd2l0aCBubyBwZW5kaW5nIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0SW5mbyl9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldEluZm8uaXNQcm92aXNpb25hbCkge1xuICAgICAgbG9nLmRlYnVnKGBQcm92aXNpb25hbCB0YXJnZXQgY3JlYXRlZCBmb3IgYXBwICcke2FwcH0nLCAnJHt0YXJnZXRJbmZvLnRhcmdldElkfScuIElnbm9yaW5nIHVudGlsIHRhcmdldCB1cGRhdGUgZXZlbnRgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbYXBwSWRLZXksIHBhZ2VJZEtleV0gPSB0aGlzLnBlbmRpbmdUYXJnZXROb3RpZmljYXRpb247XG5cbiAgICBsb2cuZGVidWcoYFRhcmdldCBjcmVhdGVkIGZvciBhcHAgJyR7YXBwSWRLZXl9JyBhbmQgcGFnZSAnJHtwYWdlSWRLZXl9JzogJHtKU09OLnN0cmluZ2lmeSh0YXJnZXRJbmZvKX1gKTtcbiAgICBpZiAoXy5oYXModGhpcy50YXJnZXRzW2FwcElkS2V5XSwgcGFnZUlkS2V5KSkge1xuICAgICAgbG9nLmRlYnVnKGBUaGVyZSBpcyBhbHJlYWR5IGEgdGFyZ2V0IGZvciB0aGlzIGFwcCBhbmQgcGFnZSAoJyR7dGhpcy50YXJnZXRzW2FwcElkS2V5XVtwYWdlSWRLZXldfScpLiBUaGlzIG1pZ2h0IGNhdXNlIHByb2JsZW1zYCk7XG4gICAgfVxuICAgIHRoaXMudGFyZ2V0c1thcHBdID0gdGhpcy50YXJnZXRzW2FwcF0gfHwge307XG4gICAgdGhpcy50YXJnZXRzW2FwcElkS2V5XVtwYWdlSWRLZXldID0gdGFyZ2V0SW5mby50YXJnZXRJZDtcbiAgfVxuXG4gIHVwZGF0ZVRhcmdldCAoZXJyLCBhcHAsIG9sZFRhcmdldElkLCBuZXdUYXJnZXRJZCkge1xuICAgIGxvZy5kZWJ1ZyhgVGFyZ2V0IHVwZGF0ZWQgZm9yIGFwcCAnJHthcHB9Jy4gT2xkIHRhcmdldDogJyR7b2xkVGFyZ2V0SWR9JywgbmV3IHRhcmdldDogJyR7bmV3VGFyZ2V0SWR9J2ApO1xuICAgIGlmICghdGhpcy50YXJnZXRzW2FwcF0pIHtcbiAgICAgIGxvZy53YXJuKGBObyBleGlzdGluZyB0YXJnZXQgZm9yIGFwcCAnJHthcHB9Jy4gTm90IHN1cmUgd2hhdCB0byBkb2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBzYXZlIHRoaXMsIHRvIGJlIHVzZWQgaWYvd2hlbiB0aGUgZXhpc3RpbmcgdGFyZ2V0IGlzIGRlc3Ryb3llZFxuICAgIHRoaXMudGFyZ2V0c1thcHBdLnByb3Zpc2lvbmFsID0ge1xuICAgICAgb2xkVGFyZ2V0SWQsXG4gICAgICBuZXdUYXJnZXRJZCxcbiAgICB9O1xuICB9XG5cbiAgcmVtb3ZlVGFyZ2V0IChlcnIsIGFwcCwgdGFyZ2V0SW5mbykge1xuICAgIGlmIChfLmlzTmlsKHRhcmdldEluZm8/LnRhcmdldElkKSkge1xuICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCAnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcgZXZlbnQgd2l0aCBubyB0YXJnZXQuIFNraXBwaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nLmRlYnVnKGBUYXJnZXQgZGVzdHJveWVkIGZvciBhcHAgJyR7YXBwfSc6ICR7dGFyZ2V0SW5mby50YXJnZXRJZH1gKTtcblxuICAgIC8vIGdvIHRocm91Z2ggdGhlIHRhcmdldHMgYW5kIGZpbmQgdGhlIG9uZSB0aGF0IGhhcyBhIHdhaXRpbmcgcHJvdmlzaW9uYWwgdGFyZ2V0XG4gICAgaWYgKHRoaXMudGFyZ2V0c1thcHBdPy5wcm92aXNpb25hbD8ub2xkVGFyZ2V0SWQgPT09IHRhcmdldEluZm8udGFyZ2V0SWQpIHtcbiAgICAgIGNvbnN0IHtvbGRUYXJnZXRJZCwgbmV3VGFyZ2V0SWR9ID0gdGhpcy50YXJnZXRzW2FwcF0ucHJvdmlzaW9uYWw7XG4gICAgICBkZWxldGUgdGhpcy50YXJnZXRzW2FwcF0ucHJvdmlzaW9uYWw7XG5cbiAgICAgIC8vIHdlIGRvIG5vdCBrbm93IHRoZSBwYWdlLCBzbyBnbyB0aHJvdWdoIGFuZCBmaW5kIHRoZSBleGlzdGluZyB0YXJnZXRcbiAgICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLnRhcmdldHNbYXBwXTtcbiAgICAgIGZvciAoY29uc3QgW3BhZ2UsIHRhcmdldElkXSBvZiBfLnRvUGFpcnModGFyZ2V0cykpIHtcbiAgICAgICAgaWYgKHRhcmdldElkID09PSBvbGRUYXJnZXRJZCkge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgcHJvdmlzaW9uYWwgdGFyZ2V0IGZvciBhcHAgJyR7YXBwfScuIE9sZCB0YXJnZXQ6ICcke29sZFRhcmdldElkfScsIG5ldyB0YXJnZXQ6ICcke25ld1RhcmdldElkfScuIFVwZGF0aW5nYCk7XG4gICAgICAgICAgdGFyZ2V0c1twYWdlXSA9IG5ld1RhcmdldElkO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbG9nLndhcm4oYFByb3Zpc2lvbmFsIHRhcmdldCBmb3IgYXBwICcke2FwcH0nIGZvdW5kLCBidXQgbm8gc3VpdGFibGUgZXhpc3RpbmcgdGFyZ2V0IGZvdW5kLiBUaGlzIG1heSBjYXVzZSBwcm9ibGVtc2ApO1xuICAgICAgbG9nLndhcm4oYE9sZCB0YXJnZXQ6ICcke29sZFRhcmdldElkfScsIG5ldyB0YXJnZXQ6ICcke25ld1RhcmdldElkfScuIEV4aXN0aW5nIHRhcmdldHM6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0cyl9YCk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gd2FpdGluZyBwcm92aXNpb25hbCB0YXJnZXQsIGp1c3QgZ2V0IHJpZCBvZiB0aGUgZXhpc3Rpbmcgb25lXG4gICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMudGFyZ2V0c1thcHBdO1xuICAgIGZvciAoY29uc3QgW3BhZ2UsIHRhcmdldElkXSBvZiBfLnRvUGFpcnModGFyZ2V0cykpIHtcbiAgICAgIGlmICh0YXJnZXRJZCA9PT0gdGFyZ2V0SW5mby50YXJnZXRJZCkge1xuICAgICAgICBkZWxldGUgdGFyZ2V0c1twYWdlXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBsb2cuZGVidWcoYFRhcmdldCAnJHt0YXJnZXRJbmZvLnRhcmdldElkfScgZGVsZXRlZCBmb3IgYXBwICcke2FwcH0nLCBidXQgbm8gc3VjaCB0YXJnZXQgZXhpc3RzYCk7XG4gIH1cblxuICBnZXRUYXJnZXQgKGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICByZXR1cm4gKHRoaXMudGFyZ2V0c1thcHBJZEtleV0gfHwge30pW3BhZ2VJZEtleV07XG4gIH1cblxuICBhc3luYyBzZWxlY3RQYWdlIChhcHBJZEtleSwgcGFnZUlkS2V5KSB7XG4gICAgdGhpcy5wZW5kaW5nVGFyZ2V0Tm90aWZpY2F0aW9uID0gW2FwcElkS2V5LCBwYWdlSWRLZXldO1xuICAgIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSBmYWxzZTtcblxuICAgIC8vIGdvIHRocm91Z2ggdGhlIHN0ZXBzIHRoYXQgdGhlIERlc2t0b3AgU2FmYXJpIHN5c3RlbVxuICAgIC8vIGdvZXMgdGhyb3VnaCB0byBpbml0aWFsaXplIHRoZSBXZWIgSW5zcGVjdG9yIHNlc3Npb25cblxuICAgIGNvbnN0IHNlbmRPcHRzID0ge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgfTtcblxuICAgIC8vIGhpZ2hsaWdodCBhbmQgdGhlbiB1bi1oaWdobGlnaHQgdGhlIHdlYnZpZXdcbiAgICBmb3IgKGNvbnN0IGVuYWJsZWQgb2YgW3RydWUsIGZhbHNlXSkge1xuICAgICAgYXdhaXQgdGhpcy5zZW5kKCdpbmRpY2F0ZVdlYlZpZXcnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgZW5hYmxlZCxcbiAgICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2VuZCgnc2V0U2VuZGVyS2V5Jywgc2VuZE9wdHMpO1xuICAgIGxvZy5kZWJ1ZygnU2VuZGVyIGtleSBzZXQnKTtcblxuICAgIGlmICh0aGlzLmlzVGFyZ2V0QmFzZWQgJiYgdXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5wbGF0Zm9ybVZlcnNpb24sICc8JywgTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlbmQoJ1RhcmdldC5leGlzdHMnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplUGFnZUZ1bGwoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVBhZ2UoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogUGVyZm9ybSB0aGUgbWluaW1hbCBpbml0aWFsaXphdGlvbiB0byBnZXQgdGhlIFdlYiBJbnNwZWN0b3Igd29ya2luZ1xuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZVBhZ2UgKGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICBjb25zdCBzZW5kT3B0cyA9IHtcbiAgICAgIGFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5LFxuICAgIH07XG5cbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0luc3BlY3Rvci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnUGFnZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuXG4gICAgLy8gZ28gdGhyb3VnaCB0aGUgdGFza3MgdG8gaW5pdGlhbGl6ZVxuICAgIGF3YWl0IHRoaXMuc2VuZCgnTmV0d29yay5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnUnVudGltZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnSGVhcC5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0NvbnNvbGUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0luc3BlY3Rvci5pbml0aWFsaXplZCcsIHNlbmRPcHRzLCBmYWxzZSk7XG4gIH1cblxuICAvKlxuICAgKiBNaW1pYyBldmVyeSBzdGVwIHRoYXQgRGVza3RvcCBTYWZhcmkgRGV2ZWxvcCB0b29scyB1c2VzIHRvIGluaXRpYWxpemUgYVxuICAgKiBXZWIgSW5zcGVjdG9yIHNlc3Npb25cbiAgICovXG4gIGFzeW5jIGluaXRpYWxpemVQYWdlRnVsbCAoYXBwSWRLZXksIHBhZ2VJZEtleSkge1xuICAgIGNvbnN0IHNlbmRPcHRzID0ge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgfTtcblxuICAgIGF3YWl0IHRoaXMuc2VuZCgnSW5zcGVjdG9yLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdQYWdlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG5cbiAgICAvLyBnbyB0aHJvdWdoIHRoZSB0YXNrcyB0byBpbml0aWFsaXplXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdQYWdlLmdldFJlc291cmNlVHJlZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdOZXR3b3JrLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdOZXR3b3JrLnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdET01TdG9yYWdlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEYXRhYmFzZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnSW5kZXhlZERCLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdDU1MuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1J1bnRpbWUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0hlYXAuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ01lbW9yeS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQXBwbGljYXRpb25DYWNoZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQXBwbGljYXRpb25DYWNoZS5nZXRGcmFtZXNXaXRoTWFuaWZlc3RzJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1RpbWVsaW5lLnNldEluc3RydW1lbnRzJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBpbnN0cnVtZW50czogWydUaW1lbGluZScsICdTY3JpcHRQcm9maWxlcicsICdDUFUnXSxcbiAgICB9LCBzZW5kT3B0cyksIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1RpbWVsaW5lLnNldEF1dG9DYXB0dXJlRW5hYmxlZCcsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEZWJ1Z2dlci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0QnJlYWtwb2ludHNBY3RpdmUnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICB9LCBzZW5kT3B0cyksIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0RlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBzdGF0ZTogJ25vbmUnLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0UGF1c2VPbkFzc2VydGlvbnMnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0QXN5bmNTdGFja1RyYWNlRGVwdGgnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGRlcHRoOiAyMDAsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cycsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgc2hvdWxkUGF1c2U6IGZhbHNlLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdMYXllclRyZWUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1dvcmtlci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQ2FudmFzLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdDb25zb2xlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdET00uZ2V0RG9jdW1lbnQnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGNvbnN0IGxvZ2dpbmdDaGFubmVscyA9IGF3YWl0IHRoaXMuc2VuZCgnQ29uc29sZS5nZXRMb2dnaW5nQ2hhbm5lbHMnLCBzZW5kT3B0cyk7XG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgKGxvZ2dpbmdDaGFubmVscy5jaGFubmVscyB8fCBbXSkubWFwKChlbnRyeSkgPT4gZW50cnkuc291cmNlKSkge1xuICAgICAgYXdhaXQgdGhpcy5zZW5kKCdDb25zb2xlLnNldExvZ2dpbmdDaGFubmVsTGV2ZWwnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgc291cmNlLFxuICAgICAgICBsZXZlbDogJ3ZlcmJvc2UnLFxuICAgICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdJbnNwZWN0b3IuaW5pdGlhbGl6ZWQnLCBzZW5kT3B0cywgZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgc2VsZWN0QXBwIChhcHBJZEtleSkge1xuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBsb2NhbCBjYWxsYmFjaywgdGVtcG9yYXJpbHkgYWRkZWQgYXMgY2FsbGJhY2sgdG9cbiAgICAgIC8vIGBfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOmAgcmVtb3RlIGRlYnVnZ2VyIHJlc3BvbnNlXG4gICAgICAvLyB0byBoYW5kbGUgdGhlIGluaXRpYWwgY29ubmVjdGlvblxuICAgICAgY29uc3Qgb25BcHBDaGFuZ2UgPSAoZXJyLCBkaWN0KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZnJvbSB0aGUgZGljdGlvbmFyeSByZXR1cm5lZCwgZ2V0IHRoZSBpZHNcbiAgICAgICAgY29uc3Qgb2xkQXBwSWRLZXkgPSBkaWN0LldJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICAgIGNvbnN0IGNvcnJlY3RBcHBJZEtleSA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuXG4gICAgICAgIC8vIGlmIHRoaXMgaXMgYSByZXBvcnQgb2YgYSBwcm94eSByZWRpcmVjdCBmcm9tIHRoZSByZW1vdGUgZGVidWdnZXJcbiAgICAgICAgLy8gd2Ugd2FudCB0byB1cGRhdGUgb3VyIGRpY3Rpb25hcnkgYW5kIGdldCBhIG5ldyBhcHAgaWRcbiAgICAgICAgaWYgKG9sZEFwcElkS2V5ICYmIGNvcnJlY3RBcHBJZEtleSAhPT0gb2xkQXBwSWRLZXkpIHtcbiAgICAgICAgICBsb2cuZGVidWcoYFdlIHdlcmUgbm90aWZpZWQgd2UgbWlnaHQgaGF2ZSBjb25uZWN0ZWQgdG8gdGhlIHdyb25nIGFwcC4gYCArXG4gICAgICAgICAgICAgICAgICAgIGBVc2luZyBpZCAke2NvcnJlY3RBcHBJZEtleX0gaW5zdGVhZCBvZiAke29sZEFwcElkS2V5fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignTmV3IGFwcGxpY2F0aW9uIGhhcyBjb25uZWN0ZWQnKSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5wcmVwZW5kT25jZUxpc3RlbmVyKCdfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOicsIG9uQXBwQ2hhbmdlKTtcblxuICAgICAgLy8gZG8gdGhlIGFjdHVhbCBjb25uZWN0aW5nIHRvIHRoZSBhcHBcbiAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgcGFnZURpY3QsIGNvbm5lY3RlZEFwcElkS2V5O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIChbY29ubmVjdGVkQXBwSWRLZXksIHBhZ2VEaWN0XSA9IGF3YWl0IHRoaXMuc2VuZCgnY29ubmVjdFRvQXBwJywge1xuICAgICAgICAgICAgYXBwSWRLZXlcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZy53YXJuKGBVbmFibGUgdG8gY29ubmVjdCB0byBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzb21ldGltZXMgdGhlIGNvbm5lY3QgbG9naWMgaGFwcGVucywgYnV0IHdpdGggYW4gZW1wdHkgZGljdGlvbmFyeVxuICAgICAgICAvLyB3aGljaCBsZWFkcyB0byB0aGUgcmVtb3RlIGRlYnVnZ2VyIGdldHRpbmcgZGlzY29ubmVjdGVkLCBhbmQgaW50byBhIGxvb3BcbiAgICAgICAgaWYgKF8uaXNFbXB0eShwYWdlRGljdCkpIHtcbiAgICAgICAgICBsZXQgbXNnID0gJ0VtcHR5IHBhZ2UgZGljdGlvbmFyeSByZWNlaXZlZCc7XG4gICAgICAgICAgbG9nLmRlYnVnKG1zZyk7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihtc2cpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKFtjb25uZWN0ZWRBcHBJZEtleSwgcGFnZURpY3RdKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRXhlY3V0aW9uQ29udGV4dENyZWF0ZWQgKGVyciwgY29udGV4dCkge1xuICAgIC8vIHsgaWQ6IDIsIGlzUGFnZUNvbnRleHQ6IHRydWUsIG5hbWU6ICcnLCBmcmFtZUlkOiAnMC4xJyB9XG4gICAgLy8gcmlnaHQgbm93IHdlIGhhdmUgbm8gd2F5IHRvIG1hcCBjb250ZXh0cyB0byBhcHBzL3BhZ2VzXG4gICAgLy8gc28ganVzdCBzdG9yZVxuICAgIHRoaXMuY29udGV4dHMucHVzaChjb250ZXh0LmlkKTtcbiAgfVxuXG4gIG9uR2FyYmFnZUNvbGxlY3RlZCAoKSB7XG4gICAgLy8ganVzdCB3YW50IHRvIGxvZyB0aGF0IHRoaXMgaXMgaGFwcGVuaW5nLCBhcyBpdCBjYW4gYWZmZWN0IG9wZXJ0aW9uXG4gICAgbG9nLmRlYnVnKGBXZWIgSW5zcGVjdG9yIGdhcmJhZ2UgY29sbGVjdGVkYCk7XG4gIH1cblxuICBvblNjcmlwdFBhcnNlZCAoZXJyLCBzY3JpcHRJbmZvKSB7XG4gICAgLy8geyBzY3JpcHRJZDogJzEzJywgdXJsOiAnJywgc3RhcnRMaW5lOiAwLCBzdGFydENvbHVtbjogMCwgZW5kTGluZTogODIsIGVuZENvbHVtbjogMyB9XG4gICAgbG9nLmRlYnVnKGBTY3JpcHQgcGFyc2VkOiAke0pTT04uc3RyaW5naWZ5KHNjcmlwdEluZm8pfWApO1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9ycGMvcnBjLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
571
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMvcnBjLWNsaWVudC5qcyJdLCJuYW1lcyI6WyJEQVRBX0xPR19MRU5HVEgiLCJsZW5ndGgiLCJXQUlUX0ZPUl9UQVJHRVRfVElNRU9VVCIsIldBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCIsIk1JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEIiwiTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMiLCJpc1RhcmdldEJhc2VkIiwiaXNTYWZhcmkiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc0hpZ2hWZXJzaW9uIiwidXRpbCIsImNvbXBhcmVWZXJzaW9ucyIsImxvZyIsImRlYnVnIiwiUnBjQ2xpZW50IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiX3RhcmdldHMiLCJfc2hvdWxkQ2hlY2tGb3JUYXJnZXQiLCJzaG91bGRDaGVja0ZvclRhcmdldCIsImJ1bmRsZUlkIiwibG9nQWxsQ29tbXVuaWNhdGlvbiIsImxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wIiwid2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgiLCJzb2NrZXRDaHVua1NpemUiLCJmdWxsUGFnZUluaXRpYWxpemF0aW9uIiwiaXNDb25uZWN0ZWQiLCJjb25uSWQiLCJ1dWlkVjQiLCJzZW5kZXJJZCIsIm1zZ0lkIiwiX2NvbnRleHRzIiwiY29udGV4dHMiLCJuZWVkc1RhcmdldCIsInRhcmdldHMiLCJjb25uZWN0ZWQiLCJvbiIsImV2ZW50IiwibGlzdGVuZXIiLCJtZXNzYWdlSGFuZGxlciIsIm9uY2UiLCJvZmYiLCJ3YXJuIiwiX2lzVGFyZ2V0QmFzZWQiLCJyZW1vdGVNZXNzYWdlcyIsIlJlbW90ZU1lc3NhZ2VzIiwiUnBjTWVzc2FnZUhhbmRsZXIiLCJhZGRUYXJnZXQiLCJiaW5kIiwidXBkYXRlVGFyZ2V0IiwicmVtb3ZlVGFyZ2V0Iiwib25FeGVjdXRpb25Db250ZXh0Q3JlYXRlZCIsIm9uR2FyYmFnZUNvbGxlY3RlZCIsIndhaXRGb3JUYXJnZXQiLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsImZvcmNlIiwiZ2V0VGFyZ2V0IiwiXyIsImlzRW1wdHkiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwiZXJyb3IiLCJlcnIiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJFcnJvciIsInNlbmQiLCJjb21tYW5kIiwid2FpdEZvclJlc3BvbnNlIiwidGltZXIiLCJ0aW1pbmciLCJUaW1lciIsInN0YXJ0Iiwic2VuZFRvRGV2aWNlIiwidG9Mb3dlckNhc2UiLCJpbmZvIiwiZ2V0RHVyYXRpb24iLCJhc01pbGxpU2Vjb25kcyIsInRvRml4ZWQiLCJCIiwicmVzb2x2ZSIsInJlamVjdCIsIndyYXBwZXJNc2dJZCIsInRvU3RyaW5nIiwidGFyZ2V0SWQiLCJmdWxsT3B0cyIsImRlZmF1bHRzIiwiaWQiLCJjbWQiLCJnZXRSZW1vdGVDb21tYW5kIiwiX19hcmd1bWVudCIsIldJUlNvY2tldERhdGFLZXkiLCJpc05pbCIsIkJ1ZmZlciIsImZyb20iLCJKU09OIiwic3RyaW5naWZ5IiwibWVzc2FnZUhhbmRsZWQiLCJ0cnVuY2F0ZSIsImxpc3RlbmVycyIsIl9fc2VsZWN0b3IiLCJwcmVwZW5kT25jZUxpc3RlbmVyIiwiYXJncyIsInZhbHVlIiwiY29kZSIsIm1zZyIsInJlcyIsInNlbmRNZXNzYWdlIiwiY29ubmVjdCIsImRpc2Nvbm5lY3QiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJyZWNlaXZlIiwiYXBwIiwidGFyZ2V0SW5mbyIsInBlbmRpbmdUYXJnZXROb3RpZmljYXRpb24iLCJpc1Byb3Zpc2lvbmFsIiwiaGFzIiwib2xkVGFyZ2V0SWQiLCJuZXdUYXJnZXRJZCIsInByb3Zpc2lvbmFsIiwicGFnZSIsInRvUGFpcnMiLCJzZWxlY3RQYWdlIiwic2VuZE9wdHMiLCJlbmFibGVkIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5pdGlhbGl6ZVBhZ2VGdWxsIiwiaW5pdGlhbGl6ZVBhZ2UiLCJkaXNhYmxlZCIsImluc3RydW1lbnRzIiwiYWN0aXZlIiwic3RhdGUiLCJkZXB0aCIsInNob3VsZFBhdXNlIiwibG9nZ2luZ0NoYW5uZWxzIiwic291cmNlIiwiY2hhbm5lbHMiLCJtYXAiLCJlbnRyeSIsImxldmVsIiwic2VsZWN0QXBwIiwib25BcHBDaGFuZ2UiLCJkaWN0Iiwib2xkQXBwSWRLZXkiLCJXSVJIb3N0QXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiY29ycmVjdEFwcElkS2V5IiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwicGFnZURpY3QiLCJjb25uZWN0ZWRBcHBJZEtleSIsImNvbnRleHQiLCJwdXNoIiwib25TY3JpcHRQYXJzZWQiLCJzY3JpcHRJbmZvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLGVBQWUsR0FBRztBQUFDQyxFQUFBQSxNQUFNLEVBQUU7QUFBVCxDQUF4QjtBQUVBLE1BQU1DLHVCQUF1QixHQUFHLEtBQWhDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsSUFBakM7QUFFQSxNQUFNQyw2QkFBNkIsR0FBRyxNQUF0QztBQUdBLE1BQU1DLDZCQUE2QixHQUFHLE1BQXRDOztBQUVBLFNBQVNDLGFBQVQsQ0FBd0JDLFFBQXhCLEVBQWtDQyxlQUFsQyxFQUFtRDtBQUlqRCxRQUFNQyxhQUFhLEdBQUdDLG9CQUFLQyxlQUFMLENBQXFCSCxlQUFyQixFQUFzQyxJQUF0QyxFQUE0Q0osNkJBQTVDLENBQXRCOztBQUNBUSxrQkFBSUMsS0FBSixDQUFXLDhDQUE2Q04sUUFBUSxHQUFHLEVBQUgsR0FBUSxNQUFPLCtCQUE4QkMsZUFBZ0IsSUFBN0g7O0FBQ0FJLGtCQUFJQyxLQUFKLENBQVcsMENBQXlDVCw2QkFBOEIsTUFBS0ssYUFBYyxFQUFyRzs7QUFDQSxTQUFPQSxhQUFQO0FBQ0Q7O0FBRWMsTUFBTUssU0FBTixDQUFnQjtBQUM3QkMsRUFBQUEsV0FBVyxDQUFFQyxJQUFJLEdBQUcsRUFBVCxFQUFhO0FBQ3RCLFNBQUtDLFFBQUwsR0FBZ0IsRUFBaEI7QUFDQSxTQUFLQyxxQkFBTCxHQUE2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QUEwQjtBQUMvRGIsWUFBQUE7QUFEK0QsV0FBMUIsQ0FBdkM7QUFHRCxTQUpELENBSUUsT0FBT1MsR0FBUCxFQUFZO0FBQ1puRCwwQkFBSThCLElBQUosQ0FBVSw2QkFBNEJxQixHQUFHLENBQUNDLE9BQVEsRUFBbEQ7O0FBQ0FrQixVQUFBQSxNQUFNLENBQUNuQixHQUFELENBQU47QUFDRDs7QUFJRCxZQUFJTCxnQkFBRUMsT0FBRixDQUFVMEYsUUFBVixDQUFKLEVBQXlCO0FBQ3ZCLGNBQUkzQyxHQUFHLEdBQUcsZ0NBQVY7O0FBQ0E5RiwwQkFBSUMsS0FBSixDQUFVNkYsR0FBVjs7QUFDQXhCLFVBQUFBLE1BQU0sQ0FBQyxJQUFJaEIsS0FBSixDQUFVd0MsR0FBVixDQUFELENBQU47QUFDRCxTQUpELE1BSU87QUFDTHpCLFVBQUFBLE9BQU8sQ0FBQyxDQUFDcUUsaUJBQUQsRUFBb0JELFFBQXBCLENBQUQsQ0FBUDtBQUNEO0FBQ0YsT0FwQk0sR0FBUDtBQXFCRCxLQTdDWSxDQUFiO0FBOENEOztBQUVEbEcsRUFBQUEseUJBQXlCLENBQUVZLEdBQUYsRUFBT3dGLE9BQVAsRUFBZ0I7QUFJdkMsU0FBS3ZILFFBQUwsQ0FBY3dILElBQWQsQ0FBbUJELE9BQU8sQ0FBQy9ELEVBQTNCO0FBQ0Q7O0FBRURwQyxFQUFBQSxrQkFBa0IsR0FBSTtBQUVwQnhDLG9CQUFJQyxLQUFKLENBQVcsaUNBQVg7QUFDRDs7QUFFRDRJLEVBQUFBLGNBQWMsQ0FBRTFGLEdBQUYsRUFBTzJGLFVBQVAsRUFBbUI7QUFFL0I5SSxvQkFBSUMsS0FBSixDQUFXLGtCQUFpQm1GLElBQUksQ0FBQ0MsU0FBTCxDQUFleUQsVUFBZixDQUEyQixFQUF2RDtBQUNEOztBQWxpQjRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlbW90ZU1lc3NhZ2VzIGZyb20gJy4vcmVtb3RlLW1lc3NhZ2VzJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IFJwY01lc3NhZ2VIYW5kbGVyIGZyb20gJy4vcnBjLW1lc3NhZ2UtaGFuZGxlcic7XG5pbXBvcnQgeyB1dGlsLCB0aW1pbmcgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cblxuY29uc3QgREFUQV9MT0dfTEVOR1RIID0ge2xlbmd0aDogMjAwfTtcblxuY29uc3QgV0FJVF9GT1JfVEFSR0VUX1RJTUVPVVQgPSAxMDAwMDtcbmNvbnN0IFdBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCA9IDEwMDA7XG5cbmNvbnN0IE1JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEID0gJzEyLjInO1xuXG4vLyBgVGFyZ2V0LmV4aXN0c2AgcHJvdG9jb2wgbWV0aG9kIHdhcyByZW1vdmVkIGZyb20gV2ViS2l0aW4gMTMuNFxuY29uc3QgTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMgPSAnMTMuNCc7XG5cbmZ1bmN0aW9uIGlzVGFyZ2V0QmFzZWQgKGlzU2FmYXJpLCBwbGF0Zm9ybVZlcnNpb24pIHtcbiAgLy8gT24gaU9TIDEyLjIgdGhlIG1lc3NhZ2VzIGdldCBzZW50IHRocm91Z2ggdGhlIFRhcmdldCBkb21haW5cbiAgLy8gT24gaU9TIDEzLjArLCBXS1dlYlZpZXcgYWxzbyBuZWVkcyB0byBmb2xsb3cgdGhlIFRhcmdldCBkb21haW4sXG4gIC8vIHNvIGhlcmUgb25seSBjaGVjayB0aGUgdGFyZ2V0IE9TIHZlcnNpb24gYXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLlxuICBjb25zdCBpc0hpZ2hWZXJzaW9uID0gdXRpbC5jb21wYXJlVmVyc2lvbnMocGxhdGZvcm1WZXJzaW9uLCAnPj0nLCBNSU5fUExBVEZPUk1fRk9SX1RBUkdFVF9CQVNFRCk7XG4gIGxvZy5kZWJ1ZyhgQ2hlY2tpbmcgd2hpY2ggY29tbXVuaWNhdGlvbiBzdHlsZSB0byB1c2UgKCR7aXNTYWZhcmkgPyAnJyA6ICdub24tJ31TYWZhcmkgb24gcGxhdGZvcm0gdmVyc2lvbiAnJHtwbGF0Zm9ybVZlcnNpb259JylgKTtcbiAgbG9nLmRlYnVnKGBQbGF0Zm9ybSB2ZXJzaW9uIGVxdWFsIG9yIGhpZ2hlciB0aGFuICcke01JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEfSc6ICR7aXNIaWdoVmVyc2lvbn1gKTtcbiAgcmV0dXJuIGlzSGlnaFZlcnNpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJwY0NsaWVudCB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICB0aGlzLl90YXJnZXRzID0gW107XG4gICAgdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSAhIW9wdHMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG5cbiAgICBjb25zdCB7XG4gICAgICBidW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbiA9IHt9LFxuICAgICAgaXNTYWZhcmkgPSB0cnVlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbiA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBmYWxzZSxcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZhbHNlLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgdGhpcy5pc1NhZmFyaSA9IGlzU2FmYXJpO1xuXG4gICAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuY29ubklkID0gdXRpbC51dWlkVjQoKTtcbiAgICB0aGlzLnNlbmRlcklkID0gdXRpbC51dWlkVjQoKTtcbiAgICB0aGlzLm1zZ0lkID0gMDtcblxuICAgIHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbiA9IGxvZ0FsbENvbW11bmljYXRpb247XG4gICAgdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wO1xuICAgIHRoaXMuc29ja2V0Q2h1bmtTaXplID0gc29ja2V0Q2h1bmtTaXplO1xuICAgIHRoaXMud2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGggPSB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDtcblxuICAgIHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZ1bGxQYWdlSW5pdGlhbGl6YXRpb247XG5cbiAgICB0aGlzLmJ1bmRsZUlkID0gYnVuZGxlSWQ7XG4gICAgdGhpcy5wbGF0Zm9ybVZlcnNpb24gPSBwbGF0Zm9ybVZlcnNpb247XG5cbiAgICB0aGlzLl9jb250ZXh0cyA9IFtdO1xuICAgIHRoaXMuX3RhcmdldHMgPSB7fTtcblxuICAgIC8vIHN0YXJ0IHdpdGggYSBiZXN0IGd1ZXNzIGZvciB0aGUgcHJvdG9jb2xcbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkKGlzU2FmYXJpLCB0aGlzLnBsYXRmb3JtVmVyc2lvbik7XG4gIH1cblxuICBnZXQgY29udGV4dHMgKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0cztcbiAgfVxuXG4gIGdldCBuZWVkc1RhcmdldCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgJiYgdGhpcy5pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IHRhcmdldHMgKCkge1xuICAgIHJldHVybiB0aGlzLl90YXJnZXRzO1xuICB9XG5cbiAgZ2V0IHNob3VsZENoZWNrRm9yVGFyZ2V0ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG4gIH1cblxuICBzZXQgc2hvdWxkQ2hlY2tGb3JUYXJnZXQgKHNob3VsZENoZWNrRm9yVGFyZ2V0KSB7XG4gICAgdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSAhIXNob3VsZENoZWNrRm9yVGFyZ2V0O1xuICB9XG5cbiAgZ2V0IGlzQ29ubmVjdGVkICgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0ZWQ7XG4gIH1cblxuICBzZXQgaXNDb25uZWN0ZWQgKGNvbm5lY3RlZCkge1xuICAgIHRoaXMuY29ubmVjdGVkID0gISFjb25uZWN0ZWQ7XG4gIH1cblxuICBvbiAoZXZlbnQsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbihldmVudCwgbGlzdGVuZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb25jZSAoZXZlbnQsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbmNlKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBvZmYgKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXIub2ZmKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIGxvZy53YXJuKGBTZXR0aW5nIGNvbW11bmljYXRpb24gcHJvdG9jb2w6IHVzaW5nICR7aXNUYXJnZXRCYXNlZCA/ICdUYXJnZXQtYmFzZWQnIDogJ2Z1bGwgV2ViIEluc3BlY3RvciBwcm90b2NvbCd9IGNvbW11bmljYXRpb25gKTtcbiAgICB0aGlzLl9pc1RhcmdldEJhc2VkID0gaXNUYXJnZXRCYXNlZDtcblxuICAgIGlmICghdGhpcy5yZW1vdGVNZXNzYWdlcykge1xuICAgICAgdGhpcy5yZW1vdGVNZXNzYWdlcyA9IG5ldyBSZW1vdGVNZXNzYWdlcyhpc1RhcmdldEJhc2VkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdGVNZXNzYWdlcy5pc1RhcmdldEJhc2VkID0gaXNUYXJnZXRCYXNlZDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubWVzc2FnZUhhbmRsZXIpIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIgPSBuZXcgUnBjTWVzc2FnZUhhbmRsZXIoaXNUYXJnZXRCYXNlZCk7XG5cbiAgICAgIC8vIGFkZCBoYW5kbGVycyBmb3IgaW50ZXJuYWwgZXZlbnRzXG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcsIHRoaXMuYWRkVGFyZ2V0LmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbignVGFyZ2V0LmRpZENvbW1pdFByb3Zpc2lvbmFsVGFyZ2V0JywgdGhpcy51cGRhdGVUYXJnZXQuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJywgdGhpcy5yZW1vdmVUYXJnZXQuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLm9uKCdSdW50aW1lLmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkJywgdGhpcy5vbkV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbignSGVhcC5nYXJiYWdlQ29sbGVjdGVkJywgdGhpcy5vbkdhcmJhZ2VDb2xsZWN0ZWQuYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgd2FpdEZvclRhcmdldCAoYXBwSWRLZXksIHBhZ2VJZEtleSwgZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmICghZm9yY2UgJiYgIXRoaXMubmVlZHNUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2Ugd2FpdGluZyBpcyBuZWNlc3NhcnkgdG8gc2VlIHdoYXQgdGhlIHRhcmdldCBpc1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKCgpID0+ICFfLmlzRW1wdHkodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpLCB7XG4gICAgICAgIHdhaXRNczogV0FJVF9GT1JfVEFSR0VUX1RJTUVPVVQsXG4gICAgICAgIGludGVydmFsTXM6IFdBSVRfRk9SX1RBUkdFVF9JTlRFUlZBTCxcbiAgICAgICAgZXJyb3I6ICdObyB0YXJnZXRzIGZvdW5kLCB1bmFibGUgdG8gY29tbXVuaWNhdGUgd2l0aCBkZXZpY2UnLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoIWVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb25kaXRpb24gdW5tZXQnKSkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHRhcmdldHMgZm91bmQsIHVuYWJsZSB0byBjb21tdW5pY2F0ZSB3aXRoIGRldmljZScpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmQgKGNvbW1hbmQsIG9wdHMgPSB7fSwgd2FpdEZvclJlc3BvbnNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCk7XG4gICAgY29uc3Qge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXlcbiAgICB9ID0gb3B0cztcbiAgICB0cnkge1xuICAgICAgaWYgKCFfLmlzRW1wdHkoYXBwSWRLZXkpICYmICFfLmlzRW1wdHkocGFnZUlkS2V5KSkge1xuICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVG9EZXZpY2UoY29tbWFuZCwgb3B0cywgd2FpdEZvclJlc3BvbnNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxldCB7IG1lc3NhZ2UgPSAnJyB9ID0gZXJyO1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKGAndGFyZ2V0JyBkb21haW4gd2FzIG5vdCBmb3VuZGApKSB7XG4gICAgICAgIGxvZy5pbmZvKCdUaGUgdGFyZ2V0IGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IFRhcmdldCBiYXNlZCBjb21tdW5pY2F0aW9uLiAnICtcbiAgICAgICAgICAnV2lsbCBmb2xsb3cgbm9uLXRhcmdldCBiYXNlZCBjb21tdW5pY2F0aW9uLicpO1xuICAgICAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZFRvRGV2aWNlKGNvbW1hbmQsIG9wdHMsIHdhaXRGb3JSZXNwb25zZSk7XG4gICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoYGRvbWFpbiB3YXMgbm90IGZvdW5kYCkgfHxcbiAgICAgICAgICBtZXNzYWdlLmluY2x1ZGVzKGBzb21lIGFyZ3VtZW50cyBvZiBtZXRob2RgKSB8fFxuICAgICAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoYG1pc3NpbmcgdGFyZ2V0YCkpIHtcbiAgICAgICAgdGhpcy5pc1RhcmdldEJhc2VkID0gdHJ1ZTtcbiAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yVGFyZ2V0KGFwcElkS2V5LCBwYWdlSWRLZXkpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVG9EZXZpY2UoY29tbWFuZCwgb3B0cywgd2FpdEZvclJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgbG9nLmRlYnVnKGBTZW5kaW5nIHRvIFdlYiBJbnNwZWN0b3IgdG9vayAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmRUb0RldmljZSAoY29tbWFuZCwgb3B0cyA9IHt9LCB3YWl0Rm9yUmVzcG9uc2UgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgd2hlbmV2ZXIgcmVtb3RlIGRlYnVnZ2VyXG4gICAgICAvLyByZXBsaWVzIHRvIG91ciByZXF1ZXN0XG5cbiAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIG1lc3NhZ2VzIGNvbWluZyBhbmQgZ29pbmcgdXNpbmcgYSBzaW1wbGUgc2VxdWVudGlhbCBpZFxuICAgICAgY29uc3QgbXNnSWQgPSB0aGlzLm1zZ0lkKys7XG4gICAgICBsZXQgd3JhcHBlck1zZ0lkID0gbXNnSWQ7XG4gICAgICBpZiAodGhpcy5pc1RhcmdldEJhc2VkKSB7XG4gICAgICAgIC8vIGZvciB0YXJnZXQtYmFzZSBjb21tdW5pY2F0aW9uLCBldmVyeXRoaW5nIGlzIHdyYXBwZWQgdXBcbiAgICAgICAgd3JhcHBlck1zZ0lkID0gdGhpcy5tc2dJZCsrO1xuICAgICAgICAvLyBhY2tub3dsZWRnZSB3cmFwcGVyIG1lc3NhZ2VcbiAgICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbih3cmFwcGVyTXNnSWQudG9TdHJpbmcoKSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFwcElkS2V5ID0gb3B0cy5hcHBJZEtleTtcbiAgICAgIGNvbnN0IHBhZ2VJZEtleSA9IG9wdHMucGFnZUlkS2V5O1xuICAgICAgY29uc3QgdGFyZ2V0SWQgPSB0aGlzLmdldFRhcmdldChhcHBJZEtleSwgcGFnZUlkS2V5KTtcblxuICAgICAgLy8gcmV0cmlldmUgdGhlIGNvcnJlY3QgY29tbWFuZCB0byBzZW5kXG4gICAgICBjb25zdCBmdWxsT3B0cyA9IF8uZGVmYXVsdHMoe1xuICAgICAgICBjb25uSWQ6IHRoaXMuY29ubklkLFxuICAgICAgICBzZW5kZXJJZDogdGhpcy5zZW5kZXJJZCxcbiAgICAgICAgdGFyZ2V0SWQsXG4gICAgICAgIGlkOiBtc2dJZCxcbiAgICAgIH0sIG9wdHMpO1xuICAgICAgY29uc3QgY21kID0gdGhpcy5yZW1vdGVNZXNzYWdlcy5nZXRSZW1vdGVDb21tYW5kKGNvbW1hbmQsIGZ1bGxPcHRzKTtcblxuICAgICAgaWYgKGNtZD8uX19hcmd1bWVudD8uV0lSU29ja2V0RGF0YUtleSkge1xuICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIG1lc3NhZ2UgYmVpbmcgc2VudCBoYXMgYWxsIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIG5lZWRlZFxuICAgICAgICBpZiAoXy5pc05pbChjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LmlkKSkge1xuICAgICAgICAgIGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkuaWQgPSB3cmFwcGVyTXNnSWQ7XG4gICAgICAgIH1cbiAgICAgICAgY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSA9XG4gICAgICAgICAgQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSkpO1xuICAgICAgfVxuXG4gICAgICBsZXQgbWVzc2FnZUhhbmRsZWQgPSB0cnVlO1xuICAgICAgaWYgKCF3YWl0Rm9yUmVzcG9uc2UpIHtcbiAgICAgICAgLy8gdGhlIHByb21pc2Ugd2lsbCBiZSByZXNvbHZlZCBhcyBzb29uIGFzIHRoZSBzb2NrZXQgaGFzIGJlZW4gc2VudFxuICAgICAgICBtZXNzYWdlSGFuZGxlZCA9IGZhbHNlO1xuICAgICAgICAvLyBkbyBub3QgbG9nIHJlY2VpcHRzXG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIub25jZShtc2dJZC50b1N0cmluZygpLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCB3YWl0aW5nIGZvciB0aGlzLCBhbmQgaWYgaXQgZXJyb3JzIGl0IGlzIG1vc3QgbGlrZWx5XG4gICAgICAgICAgICAvLyBhIHByb3RvY29sIGNoYW5nZS4gTG9nIGFuZCBjaGVjayBkdXJpbmcgdGVzdGluZ1xuICAgICAgICAgICAgbG9nLmVycm9yKGBSZWNlaXZlZCBlcnJvciBmcm9tIHNlbmQgdGhhdCBpcyBub3QgYmVpbmcgd2FpdGVkIGZvciAoaWQ6ICR7bXNnSWR9KTogJyR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShlcnIpLCBEQVRBX0xPR19MRU5HVEgpfSdgKTtcbiAgICAgICAgICAgIC8vIHJlamVjdCwgdGhvdWdoIGl0IGlzIHZlcnkgcmFyZSB0aGF0IHRoaXMgd2lsbCBiZSB0cmlnZ2VyZWQsIHNpbmNlXG4gICAgICAgICAgICAvLyB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCBkaXJlY3RsdHkgYWZ0ZXIgc2VuZC4gT24gdGhlIG9mZiBjaGFuY2UsXG4gICAgICAgICAgICAvLyB0aG91Z2gsIGl0IHdpbGwgYWxlcnQgb2YgYSBwcm90b2NvbCBjaGFuZ2UuXG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyLmxpc3RlbmVycyhjbWQuX19zZWxlY3RvcikubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIucHJlcGVuZE9uY2VMaXN0ZW5lcihjbWQuX19zZWxlY3RvciwgZnVuY3Rpb24gKGVyciwgLi4uYXJncykge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCByZXNwb25zZSBmcm9tIHNlbmQgKGlkOiAke21zZ0lkfSk6ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkoYXJncyksIERBVEFfTE9HX0xFTkdUSCl9J2ApO1xuICAgICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjbWQ/Ll9fYXJndW1lbnQ/LldJUlNvY2tldERhdGFLZXkpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5vbmNlKG1zZ0lkLnRvU3RyaW5nKCksIGZ1bmN0aW9uIChlcnIsIHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYFJlbW90ZSBkZWJ1Z2dlciBlcnJvciB3aXRoIGNvZGUgJyR7ZXJyLmNvZGV9JzogJHtlcnIubWVzc2FnZX1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgZGF0YSByZXNwb25zZSBmcm9tIHNlbmQgKGlkOiAke21zZ0lkfSk6ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkodmFsdWUpLCBEQVRBX0xPR19MRU5HVEgpfSdgKTtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBub3RoaW5nIGVsc2UgaXMgaGFuZGxpbmcgdGhpbmdzLCBzbyBqdXN0IHJlc29sdmUgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZW50XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1zZyA9IGBTZW5kaW5nICcke2NtZC5fX3NlbGVjdG9yfScgbWVzc2FnZWAgK1xuICAgICAgICAoZnVsbE9wdHMuYXBwSWRLZXkgPyBgIHRvIGFwcCAnJHtmdWxsT3B0cy5hcHBJZEtleX0nYCA6ICcnKSArXG4gICAgICAgIChmdWxsT3B0cy5wYWdlSWRLZXkgPyBgLCBwYWdlICcke2Z1bGxPcHRzLnBhZ2VJZEtleX0nYCA6ICcnKSArXG4gICAgICAgICh0aGlzLm5lZWRzVGFyZ2V0ICYmIHRhcmdldElkID8gYCwgdGFyZ2V0ICcke3RhcmdldElkfSdgIDogJycpICtcbiAgICAgICAgYCAoaWQ6ICR7bXNnSWR9KTogJyR7Y29tbWFuZH0nYDtcbiAgICAgIGxvZy5kZWJ1Zyhtc2cpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZW5kTWVzc2FnZShjbWQpO1xuICAgICAgICBpZiAoIW1lc3NhZ2VIYW5kbGVkKSB7XG4gICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGhhbmRsZXJzIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgYmVmb3JlIHJlc29sdmluZyxcbiAgICAgICAgICAvLyBhbmQgbm8gZXJyb3JzIHNlbmRpbmcgdGhlIG1lc3NhZ2Ugb3ZlciB0aGUgc29ja2V0LCBzbyByZXNvbHZlXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgY29ubmVjdCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAgIHRocm93IG5ldyBFcnJvcihgU3ViLWNsYXNzZXMgbmVlZCB0byBpbXBsZW1lbnQgYSAnY29ubmVjdCcgZnVuY3Rpb25gKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UgKC8qIGNvbW1hbmQgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdzZW5kTWVzc2FnZScgZnVuY3Rpb25gKTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmUgKC8qIGRhdGEgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdyZWNlaXZlJyBmdW5jdGlvbmApO1xuICB9XG5cbiAgYWRkVGFyZ2V0IChlcnIsIGFwcCwgdGFyZ2V0SW5mbykge1xuICAgIGlmIChfLmlzTmlsKHRhcmdldEluZm8/LnRhcmdldElkKSkge1xuICAgICAgbG9nLndhcm4oYFJlY2VpdmVkICdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcgZXZlbnQgZm9yIGFwcCAnJHthcHB9JyB3aXRoIG5vIHRhcmdldC4gU2tpcHBpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eSh0aGlzLnBlbmRpbmdUYXJnZXROb3RpZmljYXRpb24pICYmICF0YXJnZXRJbmZvLmlzUHJvdmlzaW9uYWwpIHtcbiAgICAgIGxvZy53YXJuKGBSZWNlaXZlZCAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnIGV2ZW50IGZvciBhcHAgJyR7YXBwfScgd2l0aCBubyBwZW5kaW5nIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0SW5mbyl9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRhcmdldEluZm8uaXNQcm92aXNpb25hbCkge1xuICAgICAgbG9nLmRlYnVnKGBQcm92aXNpb25hbCB0YXJnZXQgY3JlYXRlZCBmb3IgYXBwICcke2FwcH0nLCAnJHt0YXJnZXRJbmZvLnRhcmdldElkfScuIElnbm9yaW5nIHVudGlsIHRhcmdldCB1cGRhdGUgZXZlbnRgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbYXBwSWRLZXksIHBhZ2VJZEtleV0gPSB0aGlzLnBlbmRpbmdUYXJnZXROb3RpZmljYXRpb247XG5cbiAgICBsb2cuZGVidWcoYFRhcmdldCBjcmVhdGVkIGZvciBhcHAgJyR7YXBwSWRLZXl9JyBhbmQgcGFnZSAnJHtwYWdlSWRLZXl9JzogJHtKU09OLnN0cmluZ2lmeSh0YXJnZXRJbmZvKX1gKTtcbiAgICBpZiAoXy5oYXModGhpcy50YXJnZXRzW2FwcElkS2V5XSwgcGFnZUlkS2V5KSkge1xuICAgICAgbG9nLmRlYnVnKGBUaGVyZSBpcyBhbHJlYWR5IGEgdGFyZ2V0IGZvciB0aGlzIGFwcCBhbmQgcGFnZSAoJyR7dGhpcy50YXJnZXRzW2FwcElkS2V5XVtwYWdlSWRLZXldfScpLiBUaGlzIG1pZ2h0IGNhdXNlIHByb2JsZW1zYCk7XG4gICAgfVxuICAgIHRoaXMudGFyZ2V0c1thcHBdID0gdGhpcy50YXJnZXRzW2FwcF0gfHwge307XG4gICAgdGhpcy50YXJnZXRzW2FwcElkS2V5XVtwYWdlSWRLZXldID0gdGFyZ2V0SW5mby50YXJnZXRJZDtcbiAgfVxuXG4gIHVwZGF0ZVRhcmdldCAoZXJyLCBhcHAsIG9sZFRhcmdldElkLCBuZXdUYXJnZXRJZCkge1xuICAgIGxvZy5kZWJ1ZyhgVGFyZ2V0IHVwZGF0ZWQgZm9yIGFwcCAnJHthcHB9Jy4gT2xkIHRhcmdldDogJyR7b2xkVGFyZ2V0SWR9JywgbmV3IHRhcmdldDogJyR7bmV3VGFyZ2V0SWR9J2ApO1xuICAgIGlmICghdGhpcy50YXJnZXRzW2FwcF0pIHtcbiAgICAgIGxvZy53YXJuKGBObyBleGlzdGluZyB0YXJnZXQgZm9yIGFwcCAnJHthcHB9Jy4gTm90IHN1cmUgd2hhdCB0byBkb2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBzYXZlIHRoaXMsIHRvIGJlIHVzZWQgaWYvd2hlbiB0aGUgZXhpc3RpbmcgdGFyZ2V0IGlzIGRlc3Ryb3llZFxuICAgIHRoaXMudGFyZ2V0c1thcHBdLnByb3Zpc2lvbmFsID0ge1xuICAgICAgb2xkVGFyZ2V0SWQsXG4gICAgICBuZXdUYXJnZXRJZCxcbiAgICB9O1xuICB9XG5cbiAgcmVtb3ZlVGFyZ2V0IChlcnIsIGFwcCwgdGFyZ2V0SW5mbykge1xuICAgIGlmIChfLmlzTmlsKHRhcmdldEluZm8/LnRhcmdldElkKSkge1xuICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCAnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcgZXZlbnQgd2l0aCBubyB0YXJnZXQuIFNraXBwaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nLmRlYnVnKGBUYXJnZXQgZGVzdHJveWVkIGZvciBhcHAgJyR7YXBwfSc6ICR7dGFyZ2V0SW5mby50YXJnZXRJZH1gKTtcblxuICAgIC8vIGdvIHRocm91Z2ggdGhlIHRhcmdldHMgYW5kIGZpbmQgdGhlIG9uZSB0aGF0IGhhcyBhIHdhaXRpbmcgcHJvdmlzaW9uYWwgdGFyZ2V0XG4gICAgaWYgKHRoaXMudGFyZ2V0c1thcHBdPy5wcm92aXNpb25hbD8ub2xkVGFyZ2V0SWQgPT09IHRhcmdldEluZm8udGFyZ2V0SWQpIHtcbiAgICAgIGNvbnN0IHtvbGRUYXJnZXRJZCwgbmV3VGFyZ2V0SWR9ID0gdGhpcy50YXJnZXRzW2FwcF0ucHJvdmlzaW9uYWw7XG4gICAgICBkZWxldGUgdGhpcy50YXJnZXRzW2FwcF0ucHJvdmlzaW9uYWw7XG5cbiAgICAgIC8vIHdlIGRvIG5vdCBrbm93IHRoZSBwYWdlLCBzbyBnbyB0aHJvdWdoIGFuZCBmaW5kIHRoZSBleGlzdGluZyB0YXJnZXRcbiAgICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLnRhcmdldHNbYXBwXTtcbiAgICAgIGZvciAoY29uc3QgW3BhZ2UsIHRhcmdldElkXSBvZiBfLnRvUGFpcnModGFyZ2V0cykpIHtcbiAgICAgICAgaWYgKHRhcmdldElkID09PSBvbGRUYXJnZXRJZCkge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgcHJvdmlzaW9uYWwgdGFyZ2V0IGZvciBhcHAgJyR7YXBwfScuIE9sZCB0YXJnZXQ6ICcke29sZFRhcmdldElkfScsIG5ldyB0YXJnZXQ6ICcke25ld1RhcmdldElkfScuIFVwZGF0aW5nYCk7XG4gICAgICAgICAgdGFyZ2V0c1twYWdlXSA9IG5ld1RhcmdldElkO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbG9nLndhcm4oYFByb3Zpc2lvbmFsIHRhcmdldCBmb3IgYXBwICcke2FwcH0nIGZvdW5kLCBidXQgbm8gc3VpdGFibGUgZXhpc3RpbmcgdGFyZ2V0IGZvdW5kLiBUaGlzIG1heSBjYXVzZSBwcm9ibGVtc2ApO1xuICAgICAgbG9nLndhcm4oYE9sZCB0YXJnZXQ6ICcke29sZFRhcmdldElkfScsIG5ldyB0YXJnZXQ6ICcke25ld1RhcmdldElkfScuIEV4aXN0aW5nIHRhcmdldHM6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0cyl9YCk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm8gd2FpdGluZyBwcm92aXNpb25hbCB0YXJnZXQsIGp1c3QgZ2V0IHJpZCBvZiB0aGUgZXhpc3Rpbmcgb25lXG4gICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMudGFyZ2V0c1thcHBdO1xuICAgIGZvciAoY29uc3QgW3BhZ2UsIHRhcmdldElkXSBvZiBfLnRvUGFpcnModGFyZ2V0cykpIHtcbiAgICAgIGlmICh0YXJnZXRJZCA9PT0gdGFyZ2V0SW5mby50YXJnZXRJZCkge1xuICAgICAgICBkZWxldGUgdGFyZ2V0c1twYWdlXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBsb2cuZGVidWcoYFRhcmdldCAnJHt0YXJnZXRJbmZvLnRhcmdldElkfScgZGVsZXRlZCBmb3IgYXBwICcke2FwcH0nLCBidXQgbm8gc3VjaCB0YXJnZXQgZXhpc3RzYCk7XG4gIH1cblxuICBnZXRUYXJnZXQgKGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICByZXR1cm4gKHRoaXMudGFyZ2V0c1thcHBJZEtleV0gfHwge30pW3BhZ2VJZEtleV07XG4gIH1cblxuICBhc3luYyBzZWxlY3RQYWdlIChhcHBJZEtleSwgcGFnZUlkS2V5KSB7XG4gICAgdGhpcy5wZW5kaW5nVGFyZ2V0Tm90aWZpY2F0aW9uID0gW2FwcElkS2V5LCBwYWdlSWRLZXldO1xuICAgIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSBmYWxzZTtcblxuICAgIC8vIGdvIHRocm91Z2ggdGhlIHN0ZXBzIHRoYXQgdGhlIERlc2t0b3AgU2FmYXJpIHN5c3RlbVxuICAgIC8vIGdvZXMgdGhyb3VnaCB0byBpbml0aWFsaXplIHRoZSBXZWIgSW5zcGVjdG9yIHNlc3Npb25cblxuICAgIGNvbnN0IHNlbmRPcHRzID0ge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgfTtcblxuICAgIC8vIGhpZ2hsaWdodCBhbmQgdGhlbiB1bi1oaWdobGlnaHQgdGhlIHdlYnZpZXdcbiAgICBmb3IgKGNvbnN0IGVuYWJsZWQgb2YgW3RydWUsIGZhbHNlXSkge1xuICAgICAgYXdhaXQgdGhpcy5zZW5kKCdpbmRpY2F0ZVdlYlZpZXcnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgZW5hYmxlZCxcbiAgICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2VuZCgnc2V0U2VuZGVyS2V5Jywgc2VuZE9wdHMpO1xuICAgIGxvZy5kZWJ1ZygnU2VuZGVyIGtleSBzZXQnKTtcblxuICAgIGlmICh0aGlzLmlzVGFyZ2V0QmFzZWQgJiYgdXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5wbGF0Zm9ybVZlcnNpb24sICc8JywgTUlOX1BMQVRGT1JNX05PX1RBUkdFVF9FWElTVFMpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlbmQoJ1RhcmdldC5leGlzdHMnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplUGFnZUZ1bGwoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZVBhZ2UoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogUGVyZm9ybSB0aGUgbWluaW1hbCBpbml0aWFsaXphdGlvbiB0byBnZXQgdGhlIFdlYiBJbnNwZWN0b3Igd29ya2luZ1xuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZVBhZ2UgKGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICBjb25zdCBzZW5kT3B0cyA9IHtcbiAgICAgIGFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5LFxuICAgIH07XG5cbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0luc3BlY3Rvci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnUGFnZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuXG4gICAgLy8gZ28gdGhyb3VnaCB0aGUgdGFza3MgdG8gaW5pdGlhbGl6ZVxuICAgIGF3YWl0IHRoaXMuc2VuZCgnTmV0d29yay5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnUnVudGltZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnSGVhcC5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0NvbnNvbGUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0luc3BlY3Rvci5pbml0aWFsaXplZCcsIHNlbmRPcHRzLCBmYWxzZSk7XG4gIH1cblxuICAvKlxuICAgKiBNaW1pYyBldmVyeSBzdGVwIHRoYXQgRGVza3RvcCBTYWZhcmkgRGV2ZWxvcCB0b29scyB1c2VzIHRvIGluaXRpYWxpemUgYVxuICAgKiBXZWIgSW5zcGVjdG9yIHNlc3Npb25cbiAgICovXG4gIGFzeW5jIGluaXRpYWxpemVQYWdlRnVsbCAoYXBwSWRLZXksIHBhZ2VJZEtleSkge1xuICAgIGNvbnN0IHNlbmRPcHRzID0ge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgfTtcblxuICAgIGF3YWl0IHRoaXMuc2VuZCgnSW5zcGVjdG9yLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdQYWdlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG5cbiAgICAvLyBnbyB0aHJvdWdoIHRoZSB0YXNrcyB0byBpbml0aWFsaXplXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdQYWdlLmdldFJlc291cmNlVHJlZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdOZXR3b3JrLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdOZXR3b3JrLnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdET01TdG9yYWdlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEYXRhYmFzZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnSW5kZXhlZERCLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdDU1MuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1J1bnRpbWUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0hlYXAuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ01lbW9yeS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQXBwbGljYXRpb25DYWNoZS5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQXBwbGljYXRpb25DYWNoZS5nZXRGcmFtZXNXaXRoTWFuaWZlc3RzJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1RpbWVsaW5lLnNldEluc3RydW1lbnRzJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBpbnN0cnVtZW50czogWydUaW1lbGluZScsICdTY3JpcHRQcm9maWxlcicsICdDUFUnXSxcbiAgICB9LCBzZW5kT3B0cyksIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1RpbWVsaW5lLnNldEF1dG9DYXB0dXJlRW5hYmxlZCcsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEZWJ1Z2dlci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0QnJlYWtwb2ludHNBY3RpdmUnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICB9LCBzZW5kT3B0cyksIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ0RlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zJywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBzdGF0ZTogJ25vbmUnLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0UGF1c2VPbkFzc2VydGlvbnMnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnRGVidWdnZXIuc2V0QXN5bmNTdGFja1RyYWNlRGVwdGgnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGRlcHRoOiAyMDAsXG4gICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cycsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgc2hvdWxkUGF1c2U6IGZhbHNlLFxuICAgIH0sIHNlbmRPcHRzKSwgZmFsc2UpO1xuXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdMYXllclRyZWUuZW5hYmxlJywgc2VuZE9wdHMsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ1dvcmtlci5lbmFibGUnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnQ2FudmFzLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdDb25zb2xlLmVuYWJsZScsIHNlbmRPcHRzLCBmYWxzZSk7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdET00uZ2V0RG9jdW1lbnQnLCBzZW5kT3B0cywgZmFsc2UpO1xuICAgIGNvbnN0IGxvZ2dpbmdDaGFubmVscyA9IGF3YWl0IHRoaXMuc2VuZCgnQ29uc29sZS5nZXRMb2dnaW5nQ2hhbm5lbHMnLCBzZW5kT3B0cyk7XG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgKGxvZ2dpbmdDaGFubmVscy5jaGFubmVscyB8fCBbXSkubWFwKChlbnRyeSkgPT4gZW50cnkuc291cmNlKSkge1xuICAgICAgYXdhaXQgdGhpcy5zZW5kKCdDb25zb2xlLnNldExvZ2dpbmdDaGFubmVsTGV2ZWwnLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgc291cmNlLFxuICAgICAgICBsZXZlbDogJ3ZlcmJvc2UnLFxuICAgICAgfSwgc2VuZE9wdHMpLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zZW5kKCdJbnNwZWN0b3IuaW5pdGlhbGl6ZWQnLCBzZW5kT3B0cywgZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgc2VsZWN0QXBwIChhcHBJZEtleSkge1xuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBsb2NhbCBjYWxsYmFjaywgdGVtcG9yYXJpbHkgYWRkZWQgYXMgY2FsbGJhY2sgdG9cbiAgICAgIC8vIGBfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOmAgcmVtb3RlIGRlYnVnZ2VyIHJlc3BvbnNlXG4gICAgICAvLyB0byBoYW5kbGUgdGhlIGluaXRpYWwgY29ubmVjdGlvblxuICAgICAgY29uc3Qgb25BcHBDaGFuZ2UgPSAoZXJyLCBkaWN0KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZnJvbSB0aGUgZGljdGlvbmFyeSByZXR1cm5lZCwgZ2V0IHRoZSBpZHNcbiAgICAgICAgY29uc3Qgb2xkQXBwSWRLZXkgPSBkaWN0LldJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICAgIGNvbnN0IGNvcnJlY3RBcHBJZEtleSA9IGRpY3QuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuXG4gICAgICAgIC8vIGlmIHRoaXMgaXMgYSByZXBvcnQgb2YgYSBwcm94eSByZWRpcmVjdCBmcm9tIHRoZSByZW1vdGUgZGVidWdnZXJcbiAgICAgICAgLy8gd2Ugd2FudCB0byB1cGRhdGUgb3VyIGRpY3Rpb25hcnkgYW5kIGdldCBhIG5ldyBhcHAgaWRcbiAgICAgICAgaWYgKG9sZEFwcElkS2V5ICYmIGNvcnJlY3RBcHBJZEtleSAhPT0gb2xkQXBwSWRLZXkpIHtcbiAgICAgICAgICBsb2cuZGVidWcoYFdlIHdlcmUgbm90aWZpZWQgd2UgbWlnaHQgaGF2ZSBjb25uZWN0ZWQgdG8gdGhlIHdyb25nIGFwcC4gYCArXG4gICAgICAgICAgICAgICAgICAgIGBVc2luZyBpZCAke2NvcnJlY3RBcHBJZEtleX0gaW5zdGVhZCBvZiAke29sZEFwcElkS2V5fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignTmV3IGFwcGxpY2F0aW9uIGhhcyBjb25uZWN0ZWQnKSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5wcmVwZW5kT25jZUxpc3RlbmVyKCdfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOicsIG9uQXBwQ2hhbmdlKTtcblxuICAgICAgLy8gZG8gdGhlIGFjdHVhbCBjb25uZWN0aW5nIHRvIHRoZSBhcHBcbiAgICAgIHJldHVybiAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgcGFnZURpY3QsIGNvbm5lY3RlZEFwcElkS2V5O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIChbY29ubmVjdGVkQXBwSWRLZXksIHBhZ2VEaWN0XSA9IGF3YWl0IHRoaXMuc2VuZCgnY29ubmVjdFRvQXBwJywge1xuICAgICAgICAgICAgYXBwSWRLZXlcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZy53YXJuKGBVbmFibGUgdG8gY29ubmVjdCB0byBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzb21ldGltZXMgdGhlIGNvbm5lY3QgbG9naWMgaGFwcGVucywgYnV0IHdpdGggYW4gZW1wdHkgZGljdGlvbmFyeVxuICAgICAgICAvLyB3aGljaCBsZWFkcyB0byB0aGUgcmVtb3RlIGRlYnVnZ2VyIGdldHRpbmcgZGlzY29ubmVjdGVkLCBhbmQgaW50byBhIGxvb3BcbiAgICAgICAgaWYgKF8uaXNFbXB0eShwYWdlRGljdCkpIHtcbiAgICAgICAgICBsZXQgbXNnID0gJ0VtcHR5IHBhZ2UgZGljdGlvbmFyeSByZWNlaXZlZCc7XG4gICAgICAgICAgbG9nLmRlYnVnKG1zZyk7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihtc2cpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKFtjb25uZWN0ZWRBcHBJZEtleSwgcGFnZURpY3RdKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRXhlY3V0aW9uQ29udGV4dENyZWF0ZWQgKGVyciwgY29udGV4dCkge1xuICAgIC8vIHsgaWQ6IDIsIGlzUGFnZUNvbnRleHQ6IHRydWUsIG5hbWU6ICcnLCBmcmFtZUlkOiAnMC4xJyB9XG4gICAgLy8gcmlnaHQgbm93IHdlIGhhdmUgbm8gd2F5IHRvIG1hcCBjb250ZXh0cyB0byBhcHBzL3BhZ2VzXG4gICAgLy8gc28ganVzdCBzdG9yZVxuICAgIHRoaXMuY29udGV4dHMucHVzaChjb250ZXh0LmlkKTtcbiAgfVxuXG4gIG9uR2FyYmFnZUNvbGxlY3RlZCAoKSB7XG4gICAgLy8ganVzdCB3YW50IHRvIGxvZyB0aGF0IHRoaXMgaXMgaGFwcGVuaW5nLCBhcyBpdCBjYW4gYWZmZWN0IG9wZXJ0aW9uXG4gICAgbG9nLmRlYnVnKGBXZWIgSW5zcGVjdG9yIGdhcmJhZ2UgY29sbGVjdGVkYCk7XG4gIH1cblxuICBvblNjcmlwdFBhcnNlZCAoZXJyLCBzY3JpcHRJbmZvKSB7XG4gICAgLy8geyBzY3JpcHRJZDogJzEzJywgdXJsOiAnJywgc3RhcnRMaW5lOiAwLCBzdGFydENvbHVtbjogMCwgZW5kTGluZTogODIsIGVuZENvbHVtbjogMyB9XG4gICAgbG9nLmRlYnVnKGBTY3JpcHQgcGFyc2VkOiAke0pTT04uc3RyaW5naWZ5KHNjcmlwdEluZm8pfWApO1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9ycGMvcnBjLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
package/lib/mixins/execute.js
CHANGED
|
@@ -10,12 +10,19 @@ import _ from 'lodash';
|
|
|
10
10
|
/* How many milliseconds to wait for webkit to return a response before timing out */
|
|
11
11
|
const RPC_RESPONSE_TIMEOUT_MS = 5000;
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Execute a Selenium atom in Safari
|
|
15
|
+
* @param {string} atom Name of Selenium atom (see atoms/ directory)
|
|
16
|
+
* @param {Array<*>} args Arguments passed to the atom
|
|
17
|
+
* @param {Array<string>} frames
|
|
18
|
+
* @returns {string} The result received from the atom
|
|
19
|
+
*/
|
|
13
20
|
async function executeAtom (atom, args, frames) {
|
|
14
21
|
if (!this.rpcClient.isConnected) {
|
|
15
22
|
throw new Error('Remote debugger is not connected');
|
|
16
23
|
}
|
|
17
24
|
|
|
18
|
-
log.debug(`Executing atom '${atom}'`);
|
|
25
|
+
log.debug(`Executing atom '${atom}' with 'args=${JSON.stringify(args)}; frames=${frames}'`);
|
|
19
26
|
const script = await getScriptForAtom(atom, args, frames);
|
|
20
27
|
const value = await this.execute(script, true);
|
|
21
28
|
log.debug(`Received result for atom '${atom}' execution: ${_.truncate(simpleStringify(value), {length: RESPONSE_LOG_LENGTH})}`);
|
package/lib/rpc/rpc-client.js
CHANGED
|
@@ -174,12 +174,16 @@ export default class RpcClient {
|
|
|
174
174
|
}
|
|
175
175
|
return await this.sendToDevice(command, opts, waitForResponse);
|
|
176
176
|
} catch (err) {
|
|
177
|
-
|
|
178
|
-
|
|
177
|
+
let { message = '' } = err;
|
|
178
|
+
message = message.toLowerCase();
|
|
179
|
+
if (message.includes(`'target' domain was not found`)) {
|
|
180
|
+
log.info('The target device does not support Target based communication. ' +
|
|
179
181
|
'Will follow non-target based communication.');
|
|
180
182
|
this.isTargetBased = false;
|
|
181
183
|
return await this.sendToDevice(command, opts, waitForResponse);
|
|
182
|
-
} else if (
|
|
184
|
+
} else if (message.includes(`domain was not found`) ||
|
|
185
|
+
message.includes(`some arguments of method`) ||
|
|
186
|
+
message.includes(`missing target`)) {
|
|
183
187
|
this.isTargetBased = true;
|
|
184
188
|
await this.waitForTarget(appIdKey, pageIdKey);
|
|
185
189
|
return await this.sendToDevice(command, opts, waitForResponse);
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"keywords": [
|
|
5
5
|
"appium"
|
|
6
6
|
],
|
|
7
|
-
"version": "8.13.
|
|
7
|
+
"version": "8.13.2",
|
|
8
8
|
"author": "appium",
|
|
9
9
|
"license": "Apache-2.0",
|
|
10
10
|
"repository": {
|
|
@@ -72,8 +72,11 @@
|
|
|
72
72
|
"finalhandler": "^1.1.2",
|
|
73
73
|
"gulp": "^4.0.0",
|
|
74
74
|
"mocha": "^8.0.1",
|
|
75
|
+
"mocha-junit-reporter": "^2.0.0",
|
|
76
|
+
"mocha-multi-reporters": "^1.5.1",
|
|
75
77
|
"node-simctl": "^6.0.2",
|
|
76
78
|
"pre-commit": "^1.1.3",
|
|
77
|
-
"serve-static": "^1.14.1"
|
|
79
|
+
"serve-static": "^1.14.1",
|
|
80
|
+
"sinon": "^9.2.1"
|
|
78
81
|
}
|
|
79
82
|
}
|