appium-ios-device 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/build/lib/instrument/headers.js +356 -0
- package/build/lib/instrument/index.js +187 -0
- package/build/lib/instrument/transformer/dtx-decode.js +108 -0
- package/build/lib/instrument/transformer/dtx-encode.js +57 -0
- package/build/lib/instrument/transformer/nskeyed.js +446 -0
- package/build/lib/services.js +12 -3
- package/build/lib/ssl-helper.js +39 -1
- package/build/lib/utilities.js +3 -3
- package/lib/instrument/headers.js +421 -0
- package/lib/instrument/index.js +190 -0
- package/lib/instrument/transformer/dtx-decode.js +70 -0
- package/lib/instrument/transformer/dtx-encode.js +33 -0
- package/lib/instrument/transformer/nskeyed.js +447 -0
- package/lib/services.js +14 -3
- package/lib/ssl-helper.js +43 -2
- package/lib/utilities.js +6 -3
- package/package.json +9 -3
package/build/lib/services.js
CHANGED
|
@@ -9,6 +9,7 @@ exports.startAfcService = startAfcService;
|
|
|
9
9
|
exports.startCrashLogService = startCrashLogService;
|
|
10
10
|
exports.startHouseArrestService = startHouseArrestService;
|
|
11
11
|
exports.startInstallationProxyService = startInstallationProxyService;
|
|
12
|
+
exports.startInstrumentService = startInstrumentService;
|
|
12
13
|
exports.startNotificationProxyService = startNotificationProxyService;
|
|
13
14
|
exports.startSimulateLocationService = startSimulateLocationService;
|
|
14
15
|
exports.startSyslogService = startSyslogService;
|
|
@@ -32,11 +33,14 @@ var _notificationProxy = require("./notification-proxy");
|
|
|
32
33
|
|
|
33
34
|
var _houseArrest = require("./house-arrest");
|
|
34
35
|
|
|
36
|
+
var _instrument = require("./instrument");
|
|
37
|
+
|
|
35
38
|
var _plistService = _interopRequireDefault(require("./plist-service"));
|
|
36
39
|
|
|
37
40
|
var _semver = _interopRequireDefault(require("semver"));
|
|
38
41
|
|
|
39
42
|
const CRASH_LOG_SERVICE_NAME = 'com.apple.crashreportcopymobile';
|
|
43
|
+
const INSTRUMENT_HANDSHAKE_VERSION = 14;
|
|
40
44
|
|
|
41
45
|
async function startSyslogService(udid, opts = {}) {
|
|
42
46
|
const socket = await startService(udid, _syslog.SYSLOG_SERVICE_NAME, opts.socket);
|
|
@@ -111,14 +115,19 @@ async function startHouseArrestService(udid, opts = {}) {
|
|
|
111
115
|
return new _houseArrest.HouseArrestService(socket);
|
|
112
116
|
}
|
|
113
117
|
|
|
114
|
-
async function
|
|
118
|
+
async function startInstrumentService(udid, opts = {}) {
|
|
119
|
+
const osVersion = opts.osVersion || (await (0, _utilities.getOSVersion)(udid, opts.socket));
|
|
120
|
+
return new _instrument.InstrumentService(parseInt(osVersion.split('.')[0], 10) < INSTRUMENT_HANDSHAKE_VERSION ? await startService(udid, _instrument.INSTRUMENT_SERVICE_NAME, opts.socket, true) : await startService(udid, _instrument.INSTRUMENT_SERVICE_NAME_VERSION_14, opts.socket));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
async function startService(udid, serviceName, socket, handshakeOnly = false) {
|
|
115
124
|
const lockdown = await (0, _utilities.startLockdownSession)(udid, socket);
|
|
116
125
|
|
|
117
126
|
try {
|
|
118
127
|
const service = await lockdown.startService(serviceName);
|
|
119
128
|
|
|
120
129
|
if (service.EnableServiceSSL) {
|
|
121
|
-
return await (0, _utilities.connectPortSSL)(udid, service.Port, socket);
|
|
130
|
+
return await (0, _utilities.connectPortSSL)(udid, service.Port, socket, handshakeOnly);
|
|
122
131
|
} else {
|
|
123
132
|
return await (0, _utilities.connectPort)(udid, service.Port, socket);
|
|
124
133
|
}
|
|
@@ -128,4 +137,4 @@ async function startService(udid, serviceName, socket) {
|
|
|
128
137
|
}require('source-map-support').install();
|
|
129
138
|
|
|
130
139
|
|
|
131
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy5qcyJdLCJuYW1lcyI6WyJDUkFTSF9MT0dfU0VSVklDRV9OQU1FIiwic3RhcnRTeXNsb2dTZXJ2aWNlIiwidWRpZCIsIm9wdHMiLCJzb2NrZXQiLCJzdGFydFNlcnZpY2UiLCJTWVNMT0dfU0VSVklDRV9OQU1FIiwiU3lzbG9nU2VydmljZSIsInN0YXJ0U2ltdWxhdGVMb2NhdGlvblNlcnZpY2UiLCJTSU1VTEFURV9MT0NBVElPTl9TRVJWSUNFX05BTUUiLCJTaW11bGF0ZUxvY2F0aW9uU2VydmljZSIsInN0YXJ0V2ViSW5zcGVjdG9yU2VydmljZSIsIm9zVmVyc2lvbiIsImlzU2ltdWxhdG9yIiwidmVyYm9zZSIsInZlcmJvc2VIZXhEdW1wIiwic29ja2V0Q2h1bmtTaXplIiwibWF4RnJhbWVMZW5ndGgiLCJzZW12ZXJWZXJzaW9uIiwic2VtdmVyIiwiY29lcmNlIiwiRXJyb3IiLCJXZWJJbnNwZWN0b3JTZXJ2aWNlIiwibWFqb3JPc1ZlcnNpb24iLCJtYWpvciIsInNvY2tldENsaWVudCIsIldFQl9JTlNQRUNUT1JfU0VSVklDRV9OQU1FIiwidW5kZWZpbmVkIiwic3RhcnRJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UiLCJJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIiwiSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIiwiUGxpc3RTZXJ2aWNlIiwic3RhcnRBZmNTZXJ2aWNlIiwiQUZDX1NFUlZJQ0VfTkFNRSIsIkFmY1NlcnZpY2UiLCJzdGFydENyYXNoTG9nU2VydmljZSIsInN0YXJ0Tm90aWZpY2F0aW9uUHJveHlTZXJ2aWNlIiwiTk9USUZJQ0FUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSIsIk5vdGlmaWNhdGlvblByb3h5U2VydmljZSIsInN0YXJ0SG91c2VBcnJlc3RTZXJ2aWNlIiwiSE9VU0VfQVJSRVNUX1NFUlZJQ0VfTkFNRSIsIkhvdXNlQXJyZXN0U2VydmljZSIsInNlcnZpY2VOYW1lIiwibG9ja2Rvd24iLCJzZXJ2aWNlIiwiRW5hYmxlU2VydmljZVNTTCIsIlBvcnQiLCJjbG9zZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsc0JBQXNCLEdBQUcsaUNBQS9COztBQUVBLGVBQWVDLGtCQUFmLENBQW1DQyxJQUFuQyxFQUF5Q0MsSUFBSSxHQUFHLEVBQWhELEVBQW9EO0FBQ2xELFFBQU1DLE1BQU0sR0FBRyxNQUFNQyxZQUFZLENBQUNILElBQUQsRUFBT0ksMkJBQVAsRUFBNEJILElBQUksQ0FBQ0MsTUFBakMsQ0FBakM7QUFDQSxTQUFPLElBQUlHLHFCQUFKLENBQWtCSCxNQUFsQixDQUFQO0FBQ0Q7O0FBRUQsZUFBZUksNEJBQWYsQ0FBNkNOLElBQTdDLEVBQW1EQyxJQUFJLEdBQUcsRUFBMUQsRUFBOEQ7QUFDNUQsUUFBTUMsTUFBTSxHQUFHLE1BQU1DLFlBQVksQ0FBQ0gsSUFBRCxFQUFPTyxnREFBUCxFQUF1Q04sSUFBSSxDQUFDQyxNQUE1QyxDQUFqQztBQUNBLFNBQU8sSUFBSU0seUNBQUosQ0FBNEJOLE1BQTVCLENBQVA7QUFDRDs7QUFFRCxlQUFlTyx3QkFBZixDQUF5Q1QsSUFBekMsRUFBK0NDLElBQUksR0FBRyxFQUF0RCxFQUEwRDtBQUN4RCxRQUFNUyxTQUFTLEdBQUdULElBQUksQ0FBQ1MsU0FBTCxLQUFrQixNQUFNLDZCQUFhVixJQUFiLEVBQW1CQyxJQUFJLENBQUNDLE1BQXhCLENBQXhCLENBQWxCO0FBQ0EsUUFBTVMsV0FBVyxHQUFHLENBQUMsQ0FBQ1YsSUFBSSxDQUFDVSxXQUEzQjtBQUNBLFFBQU1DLE9BQU8sR0FBRyxDQUFDLENBQUNYLElBQUksQ0FBQ1csT0FBdkI7QUFDQSxRQUFNQyxjQUFjLEdBQUcsQ0FBQyxDQUFDWixJQUFJLENBQUNZLGNBQTlCO0FBQ0EsUUFBTUMsZUFBZSxHQUFHYixJQUFJLENBQUNhLGVBQTdCO0FBQ0EsUUFBTUMsY0FBYyxHQUFHZCxJQUFJLENBQUNjLGNBQTVCOztBQUNBLFFBQU1DLGFBQWEsR0FBR0MsZ0JBQU9DLE1BQVAsQ0FBY1IsU0FBZCxDQUF0Qjs7QUFDQSxNQUFJLENBQUNNLGFBQUwsRUFBb0I7QUFDbEIsVUFBTSxJQUFJRyxLQUFKLENBQVcsNkNBQTRDVCxTQUFVLEdBQWpFLENBQU47QUFDRDs7QUFDRCxNQUFJVCxJQUFJLENBQUNDLE1BQVQsRUFBaUI7QUFDZixXQUFPLElBQUlrQixpQ0FBSixDQUF3QjtBQUM3QkMsTUFBQUEsY0FBYyxFQUFFTCxhQUFhLENBQUNNLEtBREQ7QUFFN0JYLE1BQUFBLFdBRjZCO0FBRzdCRyxNQUFBQSxlQUg2QjtBQUk3QkYsTUFBQUEsT0FKNkI7QUFLN0JDLE1BQUFBLGNBTDZCO0FBTTdCVSxNQUFBQSxZQUFZLEVBQUV0QixJQUFJLENBQUNDLE1BTlU7QUFPN0JhLE1BQUFBO0FBUDZCLEtBQXhCLENBQVA7QUFTRDs7QUFDRCxRQUFNYixNQUFNLEdBQUcsTUFBTUMsWUFBWSxDQUFDSCxJQUFELEVBQU93Qix3Q0FBUCxFQUFtQ0MsU0FBbkMsQ0FBakM7QUFDQSxTQUFPLElBQUlMLGlDQUFKLENBQXdCO0FBQzdCQyxJQUFBQSxjQUFjLEVBQUVMLGFBQWEsQ0FBQ00sS0FERDtBQUU3QlgsSUFBQUEsV0FGNkI7QUFHN0JHLElBQUFBLGVBSDZCO0FBSTdCRixJQUFBQSxPQUo2QjtBQUs3QkMsSUFBQUEsY0FMNkI7QUFNN0JVLElBQUFBLFlBQVksRUFBRXJCLE1BTmU7QUFPN0JhLElBQUFBO0FBUDZCLEdBQXhCLENBQVA7QUFTRDs7QUFFRCxlQUFlVyw2QkFBZixDQUE4QzFCLElBQTlDLEVBQW9EQyxJQUFJLEdBQUcsRUFBM0QsRUFBK0Q7QUFDN0QsUUFBTUMsTUFBTSxHQUFHLE1BQU1DLFlBQVksQ0FBQ0gsSUFBRCxFQUFPMkIsa0RBQVAsRUFBd0MxQixJQUFJLENBQUNDLE1BQTdDLENBQWpDO0FBQ0EsU0FBTyxJQUFJMEIsMkNBQUosQ0FBNkIsSUFBSUMscUJBQUosQ0FBaUIzQixNQUFqQixDQUE3QixDQUFQO0FBQ0Q7O0FBRUQsZUFBZTRCLGVBQWYsQ0FBZ0M5QixJQUFoQyxFQUFzQ0MsSUFBSSxHQUFHLEVBQTdDLEVBQWlEO0FBQy9DLFFBQU1DLE1BQU0sR0FBRyxNQUFNQyxZQUFZLENBQUNILElBQUQsRUFBTytCLHFCQUFQLEVBQXlCOUIsSUFBSSxDQUFDQyxNQUE5QixDQUFqQztBQUNBLFNBQU8sSUFBSThCLGVBQUosQ0FBZTlCLE1BQWYsQ0FBUDtBQUNEOztBQUVELGVBQWUrQixvQkFBZixDQUFxQ2pDLElBQXJDLEVBQTJDQyxJQUFJLEdBQUcsRUFBbEQsRUFBc0Q7QUFDcEQsUUFBTUMsTUFBTSxHQUFHLE1BQU1DLFlBQVksQ0FBQ0gsSUFBRCxFQUFPRixzQkFBUCxFQUErQkcsSUFBSSxDQUFDQyxNQUFwQyxDQUFqQztBQUNBLFNBQU8sSUFBSThCLGVBQUosQ0FBZTlCLE1BQWYsQ0FBUDtBQUNEOztBQUVELGVBQWVnQyw2QkFBZixDQUE4Q2xDLElBQTlDLEVBQW9EQyxJQUFJLEdBQUcsRUFBM0QsRUFBK0Q7QUFDN0QsUUFBTUMsTUFBTSxHQUFHLE1BQU1DLFlBQVksQ0FBQ0gsSUFBRCxFQUFPbUMsa0RBQVAsRUFBd0NsQyxJQUFJLENBQUNDLE1BQTdDLENBQWpDO0FBQ0EsU0FBTyxJQUFJa0MsMkNBQUosQ0FBNkJsQyxNQUE3QixDQUFQO0FBQ0Q7O0FBRUQsZUFBZW1DLHVCQUFmLENBQXdDckMsSUFBeEMsRUFBOENDLElBQUksR0FBRyxFQUFyRCxFQUF5RDtBQUN2RCxRQUFNQyxNQUFNLEdBQUcsTUFBTUMsWUFBWSxDQUFDSCxJQUFELEVBQU9zQyxzQ0FBUCxFQUFrQ3JDLElBQUksQ0FBQ0MsTUFBdkMsQ0FBakM7QUFDQSxTQUFPLElBQUlxQywrQkFBSixDQUF1QnJDLE1BQXZCLENBQVA7QUFDRDs7QUFFRCxlQUFlQyxZQUFmLENBQTZCSCxJQUE3QixFQUFtQ3dDLFdBQW5DLEVBQWdEdEMsTUFBaEQsRUFBd0Q7QUFDdEQsUUFBTXVDLFFBQVEsR0FBRyxNQUFNLHFDQUFxQnpDLElBQXJCLEVBQTJCRSxNQUEzQixDQUF2Qjs7QUFDQSxNQUFJO0FBQ0YsVUFBTXdDLE9BQU8sR0FBRyxNQUFNRCxRQUFRLENBQUN0QyxZQUFULENBQXNCcUMsV0FBdEIsQ0FBdEI7O0FBQ0EsUUFBSUUsT0FBTyxDQUFDQyxnQkFBWixFQUE4QjtBQUM1QixhQUFPLE1BQU0sK0JBQWUzQyxJQUFmLEVBQXFCMEMsT0FBTyxDQUFDRSxJQUE3QixFQUFtQzFDLE1BQW5DLENBQWI7QUFDRCxLQUZELE1BRU87QUFDTCxhQUFPLE1BQU0sNEJBQVlGLElBQVosRUFBa0IwQyxPQUFPLENBQUNFLElBQTFCLEVBQWdDMUMsTUFBaEMsQ0FBYjtBQUNEO0FBQ0YsR0FQRCxTQU9VO0FBQ1J1QyxJQUFBQSxRQUFRLENBQUNJLEtBQVQ7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29ubmVjdFBvcnQsIGNvbm5lY3RQb3J0U1NMLCBzdGFydExvY2tkb3duU2Vzc2lvbiwgZ2V0T1NWZXJzaW9uIH0gZnJvbSAnLi91dGlsaXRpZXMnO1xuaW1wb3J0IHsgU3lzbG9nU2VydmljZSwgU1lTTE9HX1NFUlZJQ0VfTkFNRSB9IGZyb20gJy4vc3lzbG9nJztcbmltcG9ydCB7IFNpbXVsYXRlTG9jYXRpb25TZXJ2aWNlLCBTSU1VTEFURV9MT0NBVElPTl9TRVJWSUNFX05BTUUgfSBmcm9tICcuL3NpbXVsYXRlbG9jYXRpb24nO1xuaW1wb3J0IHsgV2ViSW5zcGVjdG9yU2VydmljZSwgV0VCX0lOU1BFQ1RPUl9TRVJWSUNFX05BTUUgfSBmcm9tICcuL3dlYmluc3BlY3Rvcic7XG5pbXBvcnQgeyBJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UsIElOU1RBTExBVElPTl9QUk9YWV9TRVJWSUNFX05BTUUgfSBmcm9tICcuL2luc3RhbGxhdGlvbi1wcm94eSc7XG5pbXBvcnQgeyBBZmNTZXJ2aWNlLCBBRkNfU0VSVklDRV9OQU1FIH0gZnJvbSAnLi9hZmMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uUHJveHlTZXJ2aWNlLCBOT1RJRklDQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tcHJveHknO1xuaW1wb3J0IHsgSG91c2VBcnJlc3RTZXJ2aWNlLCBIT1VTRV9BUlJFU1RfU0VSVklDRV9OQU1FIH0gZnJvbSAnLi9ob3VzZS1hcnJlc3QnO1xuaW1wb3J0IFBsaXN0U2VydmljZSBmcm9tICcuL3BsaXN0LXNlcnZpY2UnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuXG5jb25zdCBDUkFTSF9MT0dfU0VSVklDRV9OQU1FID0gJ2NvbS5hcHBsZS5jcmFzaHJlcG9ydGNvcHltb2JpbGUnO1xuXG5hc3luYyBmdW5jdGlvbiBzdGFydFN5c2xvZ1NlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgU1lTTE9HX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IFN5c2xvZ1NlcnZpY2Uoc29ja2V0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRTaW11bGF0ZUxvY2F0aW9uU2VydmljZSAodWRpZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBTSU1VTEFURV9MT0NBVElPTl9TRVJWSUNFX05BTUUsIG9wdHMuc29ja2V0KTtcbiAgcmV0dXJuIG5ldyBTaW11bGF0ZUxvY2F0aW9uU2VydmljZShzb2NrZXQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFdlYkluc3BlY3RvclNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBvc1ZlcnNpb24gPSBvcHRzLm9zVmVyc2lvbiB8fCBhd2FpdCBnZXRPU1ZlcnNpb24odWRpZCwgb3B0cy5zb2NrZXQpO1xuICBjb25zdCBpc1NpbXVsYXRvciA9ICEhb3B0cy5pc1NpbXVsYXRvcjtcbiAgY29uc3QgdmVyYm9zZSA9ICEhb3B0cy52ZXJib3NlO1xuICBjb25zdCB2ZXJib3NlSGV4RHVtcCA9ICEhb3B0cy52ZXJib3NlSGV4RHVtcDtcbiAgY29uc3Qgc29ja2V0Q2h1bmtTaXplID0gb3B0cy5zb2NrZXRDaHVua1NpemU7XG4gIGNvbnN0IG1heEZyYW1lTGVuZ3RoID0gb3B0cy5tYXhGcmFtZUxlbmd0aDtcbiAgY29uc3Qgc2VtdmVyVmVyc2lvbiA9IHNlbXZlci5jb2VyY2Uob3NWZXJzaW9uKTtcbiAgaWYgKCFzZW12ZXJWZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgY3JlYXRlIGEgc2VtdmVyIHZlcnNpb24gb3V0IG9mICcke29zVmVyc2lvbn0nYCk7XG4gIH1cbiAgaWYgKG9wdHMuc29ja2V0KSB7XG4gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3JTZXJ2aWNlKHtcbiAgICAgIG1ham9yT3NWZXJzaW9uOiBzZW12ZXJWZXJzaW9uLm1ham9yLFxuICAgICAgaXNTaW11bGF0b3IsXG4gICAgICBzb2NrZXRDaHVua1NpemUsXG4gICAgICB2ZXJib3NlLFxuICAgICAgdmVyYm9zZUhleER1bXAsXG4gICAgICBzb2NrZXRDbGllbnQ6IG9wdHMuc29ja2V0LFxuICAgICAgbWF4RnJhbWVMZW5ndGgsXG4gICAgfSk7XG4gIH1cbiAgY29uc3Qgc29ja2V0ID0gYXdhaXQgc3RhcnRTZXJ2aWNlKHVkaWQsIFdFQl9JTlNQRUNUT1JfU0VSVklDRV9OQU1FLCB1bmRlZmluZWQpO1xuICByZXR1cm4gbmV3IFdlYkluc3BlY3RvclNlcnZpY2Uoe1xuICAgIG1ham9yT3NWZXJzaW9uOiBzZW12ZXJWZXJzaW9uLm1ham9yLFxuICAgIGlzU2ltdWxhdG9yLFxuICAgIHNvY2tldENodW5rU2l6ZSxcbiAgICB2ZXJib3NlLFxuICAgIHZlcmJvc2VIZXhEdW1wLFxuICAgIHNvY2tldENsaWVudDogc29ja2V0LFxuICAgIG1heEZyYW1lTGVuZ3RoLFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgSU5TVEFMTEFUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IEluc3RhbGxhdGlvblByb3h5U2VydmljZShuZXcgUGxpc3RTZXJ2aWNlKHNvY2tldCkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydEFmY1NlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgQUZDX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IEFmY1NlcnZpY2Uoc29ja2V0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRDcmFzaExvZ1NlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgQ1JBU0hfTE9HX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IEFmY1NlcnZpY2Uoc29ja2V0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnROb3RpZmljYXRpb25Qcm94eVNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgTk9USUZJQ0FUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IE5vdGlmaWNhdGlvblByb3h5U2VydmljZShzb2NrZXQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydEhvdXNlQXJyZXN0U2VydmljZSAodWRpZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBIT1VTRV9BUlJFU1RfU0VSVklDRV9OQU1FLCBvcHRzLnNvY2tldCk7XG4gIHJldHVybiBuZXcgSG91c2VBcnJlc3RTZXJ2aWNlKHNvY2tldCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0U2VydmljZSAodWRpZCwgc2VydmljZU5hbWUsIHNvY2tldCkge1xuICBjb25zdCBsb2NrZG93biA9IGF3YWl0IHN0YXJ0TG9ja2Rvd25TZXNzaW9uKHVkaWQsIHNvY2tldCk7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IGxvY2tkb3duLnN0YXJ0U2VydmljZShzZXJ2aWNlTmFtZSk7XG4gICAgaWYgKHNlcnZpY2UuRW5hYmxlU2VydmljZVNTTCkge1xuICAgICAgcmV0dXJuIGF3YWl0IGNvbm5lY3RQb3J0U1NMKHVkaWQsIHNlcnZpY2UuUG9ydCwgc29ja2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGF3YWl0IGNvbm5lY3RQb3J0KHVkaWQsIHNlcnZpY2UuUG9ydCwgc29ja2V0KTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgbG9ja2Rvd24uY2xvc2UoKTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBzdGFydFN5c2xvZ1NlcnZpY2UsIHN0YXJ0V2ViSW5zcGVjdG9yU2VydmljZSxcbiAgc3RhcnRJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UsIHN0YXJ0U2ltdWxhdGVMb2NhdGlvblNlcnZpY2UsXG4gIHN0YXJ0QWZjU2VydmljZSwgc3RhcnRDcmFzaExvZ1NlcnZpY2UsIHN0YXJ0Tm90aWZpY2F0aW9uUHJveHlTZXJ2aWNlLFxuICBzdGFydEhvdXNlQXJyZXN0U2VydmljZVxufTtcbiJdLCJmaWxlIjoibGliL3NlcnZpY2VzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
140
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy5qcyJdLCJuYW1lcyI6WyJDUkFTSF9MT0dfU0VSVklDRV9OQU1FIiwiSU5TVFJVTUVOVF9IQU5EU0hBS0VfVkVSU0lPTiIsInN0YXJ0U3lzbG9nU2VydmljZSIsInVkaWQiLCJvcHRzIiwic29ja2V0Iiwic3RhcnRTZXJ2aWNlIiwiU1lTTE9HX1NFUlZJQ0VfTkFNRSIsIlN5c2xvZ1NlcnZpY2UiLCJzdGFydFNpbXVsYXRlTG9jYXRpb25TZXJ2aWNlIiwiU0lNVUxBVEVfTE9DQVRJT05fU0VSVklDRV9OQU1FIiwiU2ltdWxhdGVMb2NhdGlvblNlcnZpY2UiLCJzdGFydFdlYkluc3BlY3RvclNlcnZpY2UiLCJvc1ZlcnNpb24iLCJpc1NpbXVsYXRvciIsInZlcmJvc2UiLCJ2ZXJib3NlSGV4RHVtcCIsInNvY2tldENodW5rU2l6ZSIsIm1heEZyYW1lTGVuZ3RoIiwic2VtdmVyVmVyc2lvbiIsInNlbXZlciIsImNvZXJjZSIsIkVycm9yIiwiV2ViSW5zcGVjdG9yU2VydmljZSIsIm1ham9yT3NWZXJzaW9uIiwibWFqb3IiLCJzb2NrZXRDbGllbnQiLCJXRUJfSU5TUEVDVE9SX1NFUlZJQ0VfTkFNRSIsInVuZGVmaW5lZCIsInN0YXJ0SW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIiwiSU5TVEFMTEFUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSIsIkluc3RhbGxhdGlvblByb3h5U2VydmljZSIsIlBsaXN0U2VydmljZSIsInN0YXJ0QWZjU2VydmljZSIsIkFGQ19TRVJWSUNFX05BTUUiLCJBZmNTZXJ2aWNlIiwic3RhcnRDcmFzaExvZ1NlcnZpY2UiLCJzdGFydE5vdGlmaWNhdGlvblByb3h5U2VydmljZSIsIk5PVElGSUNBVElPTl9QUk9YWV9TRVJWSUNFX05BTUUiLCJOb3RpZmljYXRpb25Qcm94eVNlcnZpY2UiLCJzdGFydEhvdXNlQXJyZXN0U2VydmljZSIsIkhPVVNFX0FSUkVTVF9TRVJWSUNFX05BTUUiLCJIb3VzZUFycmVzdFNlcnZpY2UiLCJzdGFydEluc3RydW1lbnRTZXJ2aWNlIiwiSW5zdHJ1bWVudFNlcnZpY2UiLCJwYXJzZUludCIsInNwbGl0IiwiSU5TVFJVTUVOVF9TRVJWSUNFX05BTUUiLCJJTlNUUlVNRU5UX1NFUlZJQ0VfTkFNRV9WRVJTSU9OXzE0Iiwic2VydmljZU5hbWUiLCJoYW5kc2hha2VPbmx5IiwibG9ja2Rvd24iLCJzZXJ2aWNlIiwiRW5hYmxlU2VydmljZVNTTCIsIlBvcnQiLCJjbG9zZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLHNCQUFzQixHQUFHLGlDQUEvQjtBQUNBLE1BQU1DLDRCQUE0QixHQUFHLEVBQXJDOztBQUVBLGVBQWVDLGtCQUFmLENBQW1DQyxJQUFuQyxFQUF5Q0MsSUFBSSxHQUFHLEVBQWhELEVBQW9EO0FBQ2xELFFBQU1DLE1BQU0sR0FBRyxNQUFNQyxZQUFZLENBQUNILElBQUQsRUFBT0ksMkJBQVAsRUFBNEJILElBQUksQ0FBQ0MsTUFBakMsQ0FBakM7QUFDQSxTQUFPLElBQUlHLHFCQUFKLENBQWtCSCxNQUFsQixDQUFQO0FBQ0Q7O0FBRUQsZUFBZUksNEJBQWYsQ0FBNkNOLElBQTdDLEVBQW1EQyxJQUFJLEdBQUcsRUFBMUQsRUFBOEQ7QUFDNUQsUUFBTUMsTUFBTSxHQUFHLE1BQU1DLFlBQVksQ0FBQ0gsSUFBRCxFQUFPTyxnREFBUCxFQUF1Q04sSUFBSSxDQUFDQyxNQUE1QyxDQUFqQztBQUNBLFNBQU8sSUFBSU0seUNBQUosQ0FBNEJOLE1BQTVCLENBQVA7QUFDRDs7QUFFRCxlQUFlTyx3QkFBZixDQUF5Q1QsSUFBekMsRUFBK0NDLElBQUksR0FBRyxFQUF0RCxFQUEwRDtBQUN4RCxRQUFNUyxTQUFTLEdBQUdULElBQUksQ0FBQ1MsU0FBTCxLQUFrQixNQUFNLDZCQUFhVixJQUFiLEVBQW1CQyxJQUFJLENBQUNDLE1BQXhC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YjtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU8sTUFBTSw0QkFBWS9DLElBQVosRUFBa0JpRCxPQUFPLENBQUNFLElBQTFCLEVBQWdDakQsTUFBaEMsQ0FBYjtBQUNEO0FBQ0YsR0FQRCxTQU9VO0FBQ1I4QyxJQUFBQSxRQUFRLENBQUNJLEtBQVQ7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29ubmVjdFBvcnQsIGNvbm5lY3RQb3J0U1NMLCBzdGFydExvY2tkb3duU2Vzc2lvbiwgZ2V0T1NWZXJzaW9uIH0gZnJvbSAnLi91dGlsaXRpZXMnO1xuaW1wb3J0IHsgU3lzbG9nU2VydmljZSwgU1lTTE9HX1NFUlZJQ0VfTkFNRSB9IGZyb20gJy4vc3lzbG9nJztcbmltcG9ydCB7IFNpbXVsYXRlTG9jYXRpb25TZXJ2aWNlLCBTSU1VTEFURV9MT0NBVElPTl9TRVJWSUNFX05BTUUgfSBmcm9tICcuL3NpbXVsYXRlbG9jYXRpb24nO1xuaW1wb3J0IHsgV2ViSW5zcGVjdG9yU2VydmljZSwgV0VCX0lOU1BFQ1RPUl9TRVJWSUNFX05BTUUgfSBmcm9tICcuL3dlYmluc3BlY3Rvcic7XG5pbXBvcnQgeyBJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UsIElOU1RBTExBVElPTl9QUk9YWV9TRVJWSUNFX05BTUUgfSBmcm9tICcuL2luc3RhbGxhdGlvbi1wcm94eSc7XG5pbXBvcnQgeyBBZmNTZXJ2aWNlLCBBRkNfU0VSVklDRV9OQU1FIH0gZnJvbSAnLi9hZmMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uUHJveHlTZXJ2aWNlLCBOT1RJRklDQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tcHJveHknO1xuaW1wb3J0IHsgSG91c2VBcnJlc3RTZXJ2aWNlLCBIT1VTRV9BUlJFU1RfU0VSVklDRV9OQU1FIH0gZnJvbSAnLi9ob3VzZS1hcnJlc3QnO1xuaW1wb3J0IHsgSW5zdHJ1bWVudFNlcnZpY2UsIElOU1RSVU1FTlRfU0VSVklDRV9OQU1FX1ZFUlNJT05fMTQsIElOU1RSVU1FTlRfU0VSVklDRV9OQU1FfSBmcm9tICcuL2luc3RydW1lbnQnO1xuaW1wb3J0IFBsaXN0U2VydmljZSBmcm9tICcuL3BsaXN0LXNlcnZpY2UnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuXG5jb25zdCBDUkFTSF9MT0dfU0VSVklDRV9OQU1FID0gJ2NvbS5hcHBsZS5jcmFzaHJlcG9ydGNvcHltb2JpbGUnO1xuY29uc3QgSU5TVFJVTUVOVF9IQU5EU0hBS0VfVkVSU0lPTiA9IDE0O1xuXG5hc3luYyBmdW5jdGlvbiBzdGFydFN5c2xvZ1NlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgU1lTTE9HX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IFN5c2xvZ1NlcnZpY2Uoc29ja2V0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRTaW11bGF0ZUxvY2F0aW9uU2VydmljZSAodWRpZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBTSU1VTEFURV9MT0NBVElPTl9TRVJWSUNFX05BTUUsIG9wdHMuc29ja2V0KTtcbiAgcmV0dXJuIG5ldyBTaW11bGF0ZUxvY2F0aW9uU2VydmljZShzb2NrZXQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFdlYkluc3BlY3RvclNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBvc1ZlcnNpb24gPSBvcHRzLm9zVmVyc2lvbiB8fCBhd2FpdCBnZXRPU1ZlcnNpb24odWRpZCwgb3B0cy5zb2NrZXQpO1xuICBjb25zdCBpc1NpbXVsYXRvciA9ICEhb3B0cy5pc1NpbXVsYXRvcjtcbiAgY29uc3QgdmVyYm9zZSA9ICEhb3B0cy52ZXJib3NlO1xuICBjb25zdCB2ZXJib3NlSGV4RHVtcCA9ICEhb3B0cy52ZXJib3NlSGV4RHVtcDtcbiAgY29uc3Qgc29ja2V0Q2h1bmtTaXplID0gb3B0cy5zb2NrZXRDaHVua1NpemU7XG4gIGNvbnN0IG1heEZyYW1lTGVuZ3RoID0gb3B0cy5tYXhGcmFtZUxlbmd0aDtcbiAgY29uc3Qgc2VtdmVyVmVyc2lvbiA9IHNlbXZlci5jb2VyY2Uob3NWZXJzaW9uKTtcbiAgaWYgKCFzZW12ZXJWZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgY3JlYXRlIGEgc2VtdmVyIHZlcnNpb24gb3V0IG9mICcke29zVmVyc2lvbn0nYCk7XG4gIH1cbiAgaWYgKG9wdHMuc29ja2V0KSB7XG4gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3JTZXJ2aWNlKHtcbiAgICAgIG1ham9yT3NWZXJzaW9uOiBzZW12ZXJWZXJzaW9uLm1ham9yLFxuICAgICAgaXNTaW11bGF0b3IsXG4gICAgICBzb2NrZXRDaHVua1NpemUsXG4gICAgICB2ZXJib3NlLFxuICAgICAgdmVyYm9zZUhleER1bXAsXG4gICAgICBzb2NrZXRDbGllbnQ6IG9wdHMuc29ja2V0LFxuICAgICAgbWF4RnJhbWVMZW5ndGgsXG4gICAgfSk7XG4gIH1cbiAgY29uc3Qgc29ja2V0ID0gYXdhaXQgc3RhcnRTZXJ2aWNlKHVkaWQsIFdFQl9JTlNQRUNUT1JfU0VSVklDRV9OQU1FLCB1bmRlZmluZWQpO1xuICByZXR1cm4gbmV3IFdlYkluc3BlY3RvclNlcnZpY2Uoe1xuICAgIG1ham9yT3NWZXJzaW9uOiBzZW12ZXJWZXJzaW9uLm1ham9yLFxuICAgIGlzU2ltdWxhdG9yLFxuICAgIHNvY2tldENodW5rU2l6ZSxcbiAgICB2ZXJib3NlLFxuICAgIHZlcmJvc2VIZXhEdW1wLFxuICAgIHNvY2tldENsaWVudDogc29ja2V0LFxuICAgIG1heEZyYW1lTGVuZ3RoLFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgSU5TVEFMTEFUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IEluc3RhbGxhdGlvblByb3h5U2VydmljZShuZXcgUGxpc3RTZXJ2aWNlKHNvY2tldCkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydEFmY1NlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgQUZDX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IEFmY1NlcnZpY2Uoc29ja2V0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRDcmFzaExvZ1NlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgQ1JBU0hfTE9HX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IEFmY1NlcnZpY2Uoc29ja2V0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnROb3RpZmljYXRpb25Qcm94eVNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgTk9USUZJQ0FUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IE5vdGlmaWNhdGlvblByb3h5U2VydmljZShzb2NrZXQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydEhvdXNlQXJyZXN0U2VydmljZSAodWRpZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBIT1VTRV9BUlJFU1RfU0VSVklDRV9OQU1FLCBvcHRzLnNvY2tldCk7XG4gIHJldHVybiBuZXcgSG91c2VBcnJlc3RTZXJ2aWNlKHNvY2tldCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0SW5zdHJ1bWVudFNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBvc1ZlcnNpb24gPSBvcHRzLm9zVmVyc2lvbiB8fCBhd2FpdCBnZXRPU1ZlcnNpb24odWRpZCwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IEluc3RydW1lbnRTZXJ2aWNlKFxuICBwYXJzZUludChvc1ZlcnNpb24uc3BsaXQoJy4nKVswXSwgMTApIDwgSU5TVFJVTUVOVF9IQU5EU0hBS0VfVkVSU0lPTlxuICAgID8gYXdhaXQgc3RhcnRTZXJ2aWNlKHVkaWQsIElOU1RSVU1FTlRfU0VSVklDRV9OQU1FLCBvcHRzLnNvY2tldCwgdHJ1ZSlcbiAgICA6IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBJTlNUUlVNRU5UX1NFUlZJQ0VfTkFNRV9WRVJTSU9OXzE0LCBvcHRzLnNvY2tldClcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXJ2aWNlICh1ZGlkLCBzZXJ2aWNlTmFtZSwgc29ja2V0LCBoYW5kc2hha2VPbmx5ID0gZmFsc2UpIHtcbiAgY29uc3QgbG9ja2Rvd24gPSBhd2FpdCBzdGFydExvY2tkb3duU2Vzc2lvbih1ZGlkLCBzb2NrZXQpO1xuICB0cnkge1xuICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCBsb2NrZG93bi5zdGFydFNlcnZpY2Uoc2VydmljZU5hbWUpO1xuICAgIGlmIChzZXJ2aWNlLkVuYWJsZVNlcnZpY2VTU0wpIHtcbiAgICAgIHJldHVybiBhd2FpdCBjb25uZWN0UG9ydFNTTCh1ZGlkLCBzZXJ2aWNlLlBvcnQsIHNvY2tldCwgaGFuZHNoYWtlT25seSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhd2FpdCBjb25uZWN0UG9ydCh1ZGlkLCBzZXJ2aWNlLlBvcnQsIHNvY2tldCk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGxvY2tkb3duLmNsb3NlKCk7XG4gIH1cbn1cblxuZXhwb3J0IHtcbiAgc3RhcnRTeXNsb2dTZXJ2aWNlLCBzdGFydFdlYkluc3BlY3RvclNlcnZpY2UsXG4gIHN0YXJ0SW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlLCBzdGFydFNpbXVsYXRlTG9jYXRpb25TZXJ2aWNlLFxuICBzdGFydEFmY1NlcnZpY2UsIHN0YXJ0Q3Jhc2hMb2dTZXJ2aWNlLCBzdGFydE5vdGlmaWNhdGlvblByb3h5U2VydmljZSxcbiAgc3RhcnRIb3VzZUFycmVzdFNlcnZpY2UsIHN0YXJ0SW5zdHJ1bWVudFNlcnZpY2Vcbn07XG4iXSwiZmlsZSI6ImxpYi9zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|
package/build/lib/ssl-helper.js
CHANGED
|
@@ -5,13 +5,19 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.enableSSLHandshakeOnly = enableSSLHandshakeOnly;
|
|
8
9
|
exports.upgradeToSSL = upgradeToSSL;
|
|
9
10
|
|
|
10
11
|
require("source-map-support/register");
|
|
11
12
|
|
|
12
13
|
var _tls = _interopRequireDefault(require("tls"));
|
|
13
14
|
|
|
15
|
+
var _net = _interopRequireDefault(require("net"));
|
|
16
|
+
|
|
17
|
+
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
18
|
+
|
|
14
19
|
const TLS_VERSION = 'TLSv1_method';
|
|
20
|
+
const HANDSHAKE_TIMEOUT_MS = 10000;
|
|
15
21
|
|
|
16
22
|
function upgradeToSSL(socket, key, cert) {
|
|
17
23
|
return new _tls.default.TLSSocket(socket, {
|
|
@@ -22,7 +28,39 @@ function upgradeToSSL(socket, key, cert) {
|
|
|
22
28
|
secureProtocol: TLS_VERSION
|
|
23
29
|
})
|
|
24
30
|
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async function enableSSLHandshakeOnly(socket, key, cert) {
|
|
34
|
+
const sslSocket = _tls.default.connect({
|
|
35
|
+
socket,
|
|
36
|
+
secureContext: _tls.default.createSecureContext({
|
|
37
|
+
key,
|
|
38
|
+
cert,
|
|
39
|
+
secureProtocol: TLS_VERSION
|
|
40
|
+
}),
|
|
41
|
+
rejectUnauthorized: false
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
await new _bluebird.default((resolve, reject) => {
|
|
45
|
+
const timeoutHandler = setTimeout(() => {
|
|
46
|
+
if (!sslSocket.destroyed) {
|
|
47
|
+
sslSocket.end();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return reject(new Error('ssl handshake error'));
|
|
51
|
+
}, HANDSHAKE_TIMEOUT_MS);
|
|
52
|
+
sslSocket.once('secureConnect', () => {
|
|
53
|
+
clearTimeout(timeoutHandler);
|
|
54
|
+
|
|
55
|
+
sslSocket._handle.readStop();
|
|
56
|
+
|
|
57
|
+
return resolve();
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
return _net.default.Socket({
|
|
61
|
+
fd: socket._handle.fd
|
|
62
|
+
});
|
|
25
63
|
}require('source-map-support').install();
|
|
26
64
|
|
|
27
65
|
|
|
28
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zc2wtaGVscGVyLmpzIl0sIm5hbWVzIjpbIlRMU19WRVJTSU9OIiwiSEFORFNIQUtFX1RJTUVPVVRfTVMiLCJ1cGdyYWRlVG9TU0wiLCJzb2NrZXQiLCJrZXkiLCJjZXJ0IiwidGxzIiwiVExTU29ja2V0IiwicmVqZWN0VW5hdXRob3JpemVkIiwic2VjdXJlQ29udGV4dCIsImNyZWF0ZVNlY3VyZUNvbnRleHQiLCJzZWN1cmVQcm90b2NvbCIsImVuYWJsZVNTTEhhbmRzaGFrZU9ubHkiLCJzc2xTb2NrZXQiLCJjb25uZWN0IiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJ0aW1lb3V0SGFuZGxlciIsInNldFRpbWVvdXQiLCJkZXN0cm95ZWQiLCJlbmQiLCJFcnJvciIsIm9uY2UiLCJjbGVhclRpbWVvdXQiLCJfaGFuZGxlIiwicmVhZFN0b3AiLCJuZXQiLCJTb2NrZXQiLCJmZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsV0FBVyxHQUFHLGNBQXBCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsS0FBN0I7O0FBRUEsU0FBU0MsWUFBVCxDQUF1QkMsTUFBdkIsRUFBK0JDLEdBQS9CLEVBQW9DQyxJQUFwQyxFQUEwQztBQUN4QyxTQUFPLElBQUlDLGFBQUlDLFNBQVIsQ0FBa0JKLE1BQWxCLEVBQTBCO0FBQy9CSyxJQUFBQSxrQkFBa0IsRUFBRSxLQURXO0FBRS9CQyxJQUFBQSxhQUFhLEVBQUVILGFBQUlJLG1CQUFKLENBQXdCO0FBQ3JDTixNQUFBQSxHQURxQztBQUVyQ0MsTUFBQUEsSUFGcUM7QUFHckNNLE1BQUFBLGNBQWMsRUFBRVg7QUFIcUIsS0FBeEI7QUFGZ0IsR0FBMUIsQ0FBUDtBQVFEOztBQVNELGVBQWVZLHNCQUFmLENBQXVDVCxNQUF2QyxFQUErQ0MsR0FBL0MsRUFBb0RDLElBQXBELEVBQTBEO0FBQ3hELFFBQU1RLFNBQVMsR0FBR1AsYUFBSVEsT0FBSixDQUFZO0FBQzVCWCxJQUFBQSxNQUQ0QjtBQUU1Qk0sSUFBQUEsYUFBYSxFQUFFSCxhQUFJSSxtQkFBSixDQUF3QjtBQUNyQ04sTUFBQUEsR0FEcUM7QUFFckNDLE1BQUFBLElBRnFDO0FBR3JDTSxNQUFBQSxjQUFjLEVBQUVYO0FBSHFCLEtBQXhCLENBRmE7QUFPNUJRLElBQUFBLGtCQUFrQixFQUFFO0FBUFEsR0FBWixDQUFsQjs7QUFXQSxRQUFNLElBQUlPLGlCQUFKLENBQU0sQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQy9CLFVBQU1DLGNBQWMsR0FBR0MsVUFBVSxDQUFDLE1BQU07QUFDdEMsVUFBSSxDQUFDTixTQUFTLENBQUNPLFNBQWYsRUFBMEI7QUFDeEJQLFFBQUFBLFNBQVMsQ0FBQ1EsR0FBVjtBQUNEOztBQUNELGFBQU9KLE1BQU0sQ0FBQyxJQUFJSyxLQUFKLENBQVUscUJBQVYsQ0FBRCxDQUFiO0FBQ0QsS0FMZ0MsRUFLOUJyQixvQkFMOEIsQ0FBakM7QUFPQVksSUFBQUEsU0FBUyxDQUFDVSxJQUFWLENBQWUsZUFBZixFQUFnQyxNQUFNO0FBQ3BDQyxNQUFBQSxZQUFZLENBQUNOLGNBQUQsQ0FBWjs7QUFDQUwsTUFBQUEsU0FBUyxDQUFDWSxPQUFWLENBQWtCQyxRQUFsQjs7QUFDQSxhQUFPVixPQUFPLEVBQWQ7QUFDRCxLQUpEO0FBS0QsR0FiSyxDQUFOO0FBZUEsU0FBT1csYUFBSUMsTUFBSixDQUFXO0FBQUNDLElBQUFBLEVBQUUsRUFBRTFCLE1BQU0sQ0FBQ3NCLE9BQVAsQ0FBZUk7QUFBcEIsR0FBWCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdGxzIGZyb20gJ3Rscyc7XG5pbXBvcnQgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IFRMU19WRVJTSU9OID0gJ1RMU3YxX21ldGhvZCc7XG5jb25zdCBIQU5EU0hBS0VfVElNRU9VVF9NUyA9IDEwMDAwO1xuXG5mdW5jdGlvbiB1cGdyYWRlVG9TU0wgKHNvY2tldCwga2V5LCBjZXJ0KSB7XG4gIHJldHVybiBuZXcgdGxzLlRMU1NvY2tldChzb2NrZXQsIHtcbiAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlLFxuICAgIHNlY3VyZUNvbnRleHQ6IHRscy5jcmVhdGVTZWN1cmVDb250ZXh0KHtcbiAgICAgIGtleSxcbiAgICAgIGNlcnQsXG4gICAgICBzZWN1cmVQcm90b2NvbDogVExTX1ZFUlNJT05cbiAgICB9KVxuICB9KTtcbn1cblxuLyoqXG4gKiBBZnRlciB0aGUgc3NsIHByb3RvY29sIGlzIHN1Y2Nlc3NmdWxseSBoYW5kc2hha2UsIGNsb3NlIHRoZSBzc2wgcHJvdG9jb2wgY2hhbm5lbCBhbmQgdXNlIHRleHQgdHJhbnNtaXNzaW9uXG4gKiBAcGFyYW0gc29ja2V0XG4gKiBAcGFyYW0ga2V5XG4gKiBAcGFyYW0gY2VydFxuICogQHJldHVybnMge1Byb21pc2U8U29ja2V0Pn0gRHVwbGljYXRlIHRoZSBpbnB1dCBzb2NrZXRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZW5hYmxlU1NMSGFuZHNoYWtlT25seSAoc29ja2V0LCBrZXksIGNlcnQpIHtcbiAgY29uc3Qgc3NsU29ja2V0ID0gdGxzLmNvbm5lY3Qoe1xuICAgIHNvY2tldCxcbiAgICBzZWN1cmVDb250ZXh0OiB0bHMuY3JlYXRlU2VjdXJlQ29udGV4dCh7XG4gICAgICBrZXksXG4gICAgICBjZXJ0LFxuICAgICAgc2VjdXJlUHJvdG9jb2w6IFRMU19WRVJTSU9OXG4gICAgfSksXG4gICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gc3RvcCByZWNlaXZpbmcgZGF0YSBhZnRlciBzdWNjZXNzZnVsIGhhbmRzaGFrZVxuICBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgdGltZW91dEhhbmRsZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghc3NsU29ja2V0LmRlc3Ryb3llZCkge1xuICAgICAgICBzc2xTb2NrZXQuZW5kKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignc3NsIGhhbmRzaGFrZSBlcnJvcicpKTtcbiAgICB9LCBIQU5EU0hBS0VfVElNRU9VVF9NUyk7XG5cbiAgICBzc2xTb2NrZXQub25jZSgnc2VjdXJlQ29ubmVjdCcsICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlcik7XG4gICAgICBzc2xTb2NrZXQuX2hhbmRsZS5yZWFkU3RvcCgpO1xuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG4gIC8vIER1cGxpY2F0ZSB0aGUgc29ja2V0LiBSZXR1cm4gYSBuZXcgc29ja2V0IG9iamVjdCBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgc3lzdGVtIHJlc291cmNlXG4gIHJldHVybiBuZXQuU29ja2V0KHtmZDogc29ja2V0Ll9oYW5kbGUuZmR9KTtcbn1cblxuXG5leHBvcnQgeyB1cGdyYWRlVG9TU0wsIGVuYWJsZVNTTEhhbmRzaGFrZU9ubHkgfTtcbiJdLCJmaWxlIjoibGliL3NzbC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
package/build/lib/utilities.js
CHANGED
|
@@ -133,7 +133,7 @@ async function startLockdownSession(udid, socket = null) {
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
async function connectPortSSL(udid, port, socket = null) {
|
|
136
|
+
async function connectPortSSL(udid, port, socket = null, handshakeOnly = false) {
|
|
137
137
|
const usbmux = new _usbmux.default(socket || (await (0, _usbmux.getDefaultSocket)()));
|
|
138
138
|
|
|
139
139
|
try {
|
|
@@ -150,7 +150,7 @@ async function connectPortSSL(udid, port, socket = null) {
|
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
const socket = await usbmux.connect(device.Properties.DeviceID, port, undefined);
|
|
153
|
-
return (0, _sslHelper.upgradeToSSL)(socket, pairRecord.HostPrivateKey, pairRecord.HostCertificate);
|
|
153
|
+
return handshakeOnly ? await (0, _sslHelper.enableSSLHandshakeOnly)(socket, pairRecord.HostPrivateKey, pairRecord.HostCertificate) : (0, _sslHelper.upgradeToSSL)(socket, pairRecord.HostPrivateKey, pairRecord.HostCertificate);
|
|
154
154
|
} catch (e) {
|
|
155
155
|
usbmux.close();
|
|
156
156
|
throw e;
|
|
@@ -175,4 +175,4 @@ async function connectPort(udid, port, socket = null) {
|
|
|
175
175
|
}require('source-map-support').install();
|
|
176
176
|
|
|
177
177
|
|
|
178
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlsaXRpZXMuanMiXSwibmFtZXMiOlsiTE9DS0RPV05fUkVRVUVTVCIsIkRFVklDRV9USU1FIiwiS2V5IiwiREVWSUNFX1VUQ19PRkZTRVQiLCJERVZJQ0VfVElNRV9aT05FIiwiREVWSUNFX1ZFUlNJT04iLCJERVZJQ0VfTkFNRSIsImdldENvbm5lY3RlZERldmljZXMiLCJzb2NrZXQiLCJ1c2JtdXgiLCJVc2JtdXgiLCJlIiwibG9nIiwiZGVidWciLCJkZXZpY2VzIiwibGlzdERldmljZXMiLCJ1ZGlkcyIsIm1hcCIsImRldmljZSIsIlByb3BlcnRpZXMiLCJTZXJpYWxOdW1iZXIiLCJfIiwidW5pcSIsImNsb3NlIiwiZ2V0T1NWZXJzaW9uIiwidWRpZCIsImxvY2tkb3duIiwiY29ubmVjdExvY2tkb3duIiwiZ2V0VmFsdWUiLCJnZXREZXZpY2VOYW1lIiwiZ2V0RGV2aWNlSW5mbyIsImdldERldmljZVRpbWUiLCJzdGFydExvY2tkb3duU2Vzc2lvbiIsInRpbWVzdGFtcCIsInV0Y09mZnNldCIsInRpbWVab25lIiwicGFpclJlY29yZCIsInJlYWRQYWlyUmVjb3JkIiwiRXJyb3IiLCJzdGFydFNlc3Npb24iLCJIb3N0SUQiLCJTeXN0ZW1CVUlEIiwiZW5hYmxlU2Vzc2lvblNTTCIsIkhvc3RQcml2YXRlS2V5IiwiSG9zdENlcnRpZmljYXRlIiwiY29ubmVjdFBvcnRTU0wiLCJwb3J0IiwiZmluZERldmljZSIsImNvbm5lY3QiLCJEZXZpY2VJRCIsInVuZGVmaW5lZCIsImNvbm5lY3RQb3J0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBR0EsTUFBTUEsZ0JBQWdCLEdBQUc7QUFDdkJDLEVBQUFBLFdBQVcsRUFBRTtBQUFFQyxJQUFBQSxHQUFHLEVBQUU7QUFBUCxHQURVO0FBRXZCQyxFQUFBQSxpQkFBaUIsRUFBRTtBQUFFRCxJQUFBQSxHQUFHLEVBQUU7QUFBUCxHQUZJO0FB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bEIsQ0FBckI7O0FBQ0EsUUFBSSxDQUFDUCxNQUFMLEVBQWE7QUFDWCxZQUFNLElBQUlvQixLQUFKLENBQVcsc0NBQXFDYixJQUFLLEVBQXJELENBQU47QUFDRDs7QUFDRCxXQUFPLE1BQU1oQixNQUFNLENBQUN1QyxPQUFQLENBQWU5QixNQUFNLENBQUNDLFVBQVAsQ0FBa0I4QixRQUFqQyxFQUEyQ0gsSUFBM0MsRUFBaURJLFNBQWpELENBQWI7QUFDRCxHQU5ELENBTUUsT0FBT3ZDLENBQVAsRUFBVTtBQUNWRixJQUFBQSxNQUFNLENBQUNjLEtBQVA7QUFDQSxVQUFNWixDQUFOO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVc2JtdXgsIHsgZ2V0RGVmYXVsdFNvY2tldCB9IGZyb20gJy4vdXNibXV4JztcbmltcG9ydCB7IHVwZ3JhZGVUb1NTTCB9IGZyb20gJy4vc3NsLWhlbHBlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zYW1kbWFyc2hhbGwvaU9TLUludGVybmFscy9ibG9iL21hc3Rlci9sb2NrYm90L2xvY2tib3QvbG9ja2Rvd25fa2V5cy5oXG5jb25zdCBMT0NLRE9XTl9SRVFVRVNUID0ge1xuICBERVZJQ0VfVElNRTogeyBLZXk6ICdUaW1lSW50ZXJ2YWxTaW5jZTE5NzAnIH0sXG4gIERFVklDRV9VVENfT0ZGU0VUOiB7IEtleTogJ1RpbWVab25lT2Zmc2V0RnJvbVVUQycgfSxcbiAgREVWSUNFX1RJTUVfWk9ORTogeyBLZXk6ICdUaW1lWm9uZScgfSxcbiAgREVWSUNFX1ZFUlNJT046IHsgS2V5OiAnUHJvZHVjdFZlcnNpb24nIH0sXG4gIERFVklDRV9OQU1FOiB7IEtleTogJ0RldmljZU5hbWUnIH1cbn07XG5cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHVkaWRzIG9mIHRoZSBjb25uZWN0ZWQgZGV2aWNlc1xuICpcbiAqIEBwYXJhbSB7P25ldC5Tb2NrZXR9IHNvY2tldCB0aGUgc29ja2V0IG9mIHVzYm11eGQuIEl0IHdpbGwgZGVmYXVsdCB0byAvdmFyL3J1bi91c2JtdXhkIGlmIGl0IGlzIG5vdCBwYXNzZWRcbiAqIEByZXR1cm5zIHtBcnJheS48c3RyaW5nPn0gVGhlIGxpc3Qgb2YgZGV2aWNlIHNlcmlhbCBudW1iZXJzICh1ZGlkKSBvclxuICogYW4gZW1wdHkgbGlzdCBpZiBubyBkZXZpY2VzIGFyZSBjb25uZWN0ZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Q29ubmVjdGVkRGV2aWNlcyAoc29ja2V0ID0gbnVsbCkge1xuICBsZXQgdXNibXV4O1xuICB0cnkge1xuICAgIHVzYm11eCA9IG5ldyBVc2JtdXgoc29ja2V0IHx8IGF3YWl0IGdldERlZmF1bHRTb2NrZXQoKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZGVidWcoZSk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgZGV2aWNlcyA9IGF3YWl0IHVzYm11eC5saXN0RGV2aWNlcygpO1xuICAgIGNvbnN0IHVkaWRzID0gZGV2aWNlcy5tYXAoKGRldmljZSkgPT4gZGV2aWNlLlByb3BlcnRpZXMuU2VyaWFsTnVtYmVyKTtcbiAgICByZXR1cm4gXy51bmlxKHVkaWRzKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB1c2JtdXguY2xvc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgb3MgdmVyc2lvbiBvZiB0aGUgZGV2aWNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVkaWQgRGV2aWNlIFVESURcbiAqIEBwYXJhbSB7P25ldC5Tb2NrZXR9IHNvY2tldCB0aGUgc29ja2V0IG9mIHVzYm11eGQuIEl0IHdpbGwgZGVmYXVsdCB0byAvdmFyL3J1bi91c2JtdXhkIGlmIGl0IGlzIG5vdCBwYXNzZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldE9TVmVyc2lvbiAodWRpZCwgc29ja2V0ID0gbnVsbCkge1xuICBjb25zdCB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB0cnkge1xuICAgIC8vIGxvY2tkb3duIGRvZXNuJ3QgbmVlZCB0byBiZSBjbG9zZWQgc2luY2UgaXQgdXNlcyB0aGUgc2FtZSBzb2NrZXQgdXNibXV4IHVzZXNcbiAgICBjb25zdCBsb2NrZG93biA9IGF3YWl0IHVzYm11eC5jb25uZWN0TG9ja2Rvd24odWRpZCk7XG4gICAgcmV0dXJuIGF3YWl0IGxvY2tkb3duLmdldFZhbHVlKExPQ0tET1dOX1JFUVVFU1QuREVWSUNFX1ZFUlNJT04pO1xuICB9IGZpbmFsbHkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIHRoZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0RGV2aWNlTmFtZSAodWRpZCwgc29ja2V0ID0gbnVsbCkge1xuICBjb25zdCB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB0cnkge1xuICAgIC8vIGxvY2tkb3duIGRvZXNuJ3QgbmVlZCB0byBiZSBjbG9zZWQgc2luY2UgaXQgdXNlcyB0aGUgc2FtZSBzb2NrZXQgdXNibXV4IHVzZXNcbiAgICBjb25zdCBsb2NrZG93biA9IGF3YWl0IHVzYm11eC5jb25uZWN0TG9ja2Rvd24odWRpZCk7XG4gICAgcmV0dXJuIGF3YWl0IGxvY2tkb3duLmdldFZhbHVlKExPQ0tET1dOX1JFUVVFU1QuREVWSUNFX05BTUUpO1xuICB9IGZpbmFsbHkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhbGwgYXZhaWxhYmxlIGRldmljZSB2YWx1ZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIERldmljZSBVRElEXG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBSZXR1cm5zIGF2YWlsYWJsZSBkZWZhdWx0IGRldmljZSB2YWx1ZXMgdmlhIGxvY2tkb3duLlxuICogZS5nLlxuICoge1xuICogICBcIkJhc2ViYW5kQ2VydElkXCI9PjM4NDAxNDk1MjgsXG4gKiAgIFwiQmFzZWJhbmRLZXlIYXNoSW5mb3JtYXRpb25cIj0+XG4gKiAgICAge1wiQUtleVN0YXR1c1wiPT4yLFxuICogICAgIFwiU0tleUhhc2hcIj0+e1xuICogICAgICAgXCJ0eXBlXCI9PlwiQnVmZmVyXCIsXG4gKiAgICAgICBcImRhdGFcIj0+WzE4NywgMjM5LCAuLi4uXX0sXG4gKiAgICAgXCJTS2V5U3RhdHVzXCI9PjB9LFxuICogICBcIkJhc2ViYW5kU2VyaWFsTnVtYmVyXCI9PntcInR5cGVcIj0+XCJCdWZmZXJcIiwgXCJkYXRhXCI9PlsuLi5dfSxcbiAqICAgXCJCYXNlYmFuZFZlcnNpb25cIj0+XCIxMS4wMS4wMlwiLFxuICogICBcIkJvYXJkSWRcIj0+MixcbiAqICAgXCJCdWlsZFZlcnNpb25cIj0+XCIxOUM1NlwiLFxuICogICBcIkNQVUFyY2hpdGVjdHVyZVwiPT5cImFybTY0XCIsXG4gKiAgIFwiQ2hpcElEXCI9PjMyNzY4LFxuICogICBcIkRldmljZUNsYXNzXCI9PlwiaVBob25lXCIsXG4gKiAgIFwiRGV2aWNlQ29sb3JcIj0+XCIjYzhjYWNhXCIsXG4gKiAgIFwiRGV2aWNlTmFtZVwiPT5cImthenVcIixcbiAqICAgXCJEaWVJRFwiPT4xMTExMTExMTExMTExLFxuICogICBcIkhhcmR3YXJlTW9kZWxcIj0+XCJONjl1QVBcIixcbiAqICAgXCJIYXNTaURQXCI9PnRydWUsXG4gKiAgIFwiUGFydGl0aW9uVHlwZVwiPT5cIkdVSURfcGFydGl0aW9uX3NjaGVtZVwiLFxuICogICBcIlByb2R1Y3ROYW1lXCI9PlwiaVBob25lIE9TXCIsXG4gKiAgIFwiUHJvZHVjdFR5cGVcIj0+XCJpUGhvbmU4LDRcIixcbiAqICAgXCJQcm9kdWN0VmVyc2lvblwiPT5cIjE1LjJcIixcbiAqICAgXCJQcm9kdWN0aW9uU09DXCI9PnRydWUsXG4gKiAgIFwiUHJvdG9jb2xWZXJzaW9uXCI9PlwiMlwiLFxuICogICBcIlN1cHBvcnRlZERldmljZUZhbWlsaWVzXCI9PlsxXSxcbiAqICAgXCJUZWxlcGhvbnlDYXBhYmlsaXR5XCI9PnRydWUsXG4gKiAgIFwiVW5pcXVlQ2hpcElEXCI9PjExMTExMTExMTExMTEsXG4gKiAgIFwiVW5pcXVlRGV2aWNlSURcIj0+XCJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhXCIsXG4gKiAgIFwiV2lGaUFkZHJlc3NcIj0+XCIwMDowMDowMDowMDowMDowMFwiXG4gKiB9XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldERldmljZUluZm8gKHVkaWQsIHNvY2tldCA9IG51bGwpIHtcbiAgY29uc3QgdXNibXV4ID0gbmV3IFVzYm11eChzb2NrZXQgfHwgYXdhaXQgZ2V0RGVmYXVsdFNvY2tldCgpKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBsb2NrZG93biA9IGF3YWl0IHVzYm11eC5jb25uZWN0TG9ja2Rvd24odWRpZCk7XG4gICAgcmV0dXJuIGF3YWl0IGxvY2tkb3duLmdldFZhbHVlKCk7XG4gIH0gZmluYWxseSB7XG4gICAgdXNibXV4LmNsb3NlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXZpY2VUaW1lXG4gKlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHRpbWVzdGFtcCBVbml4IHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDFUMDA6MDA6MDBaXG4gKiBAcHJvcGVydHkge251bWJlcn0gdXRjT2Zmc2V0IFRoZSBkaWZmZXJlbmNlIGluIG1pbnV0ZXMgYmV0d2VlbiB0aGUgVVRDIHRpbWUgYW5kIHRoZSBsb2NhbCBkZXZpY2UgdGltZS5cbiAqIENhbiBiZSBuZWdhdGl2ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0aW1lWm9uZSBUaW1lIHpvbmUgbmFtZSBjb25maWd1cmVkIG9uIHRoZSBkZXZpY2UsIGZvciBleGFtcGxlIGBFdXJvcGUvUGFyaXNgXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxvY2FsIHRpbWUgZnJvbSB0aGUgZGV2aWNlIHVuZGVyIHRlc3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge0RldmljZVRpbWV9XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldERldmljZVRpbWUgKHVkaWQsIHNvY2tldCA9IG51bGwpIHtcbiAgY29uc3QgbG9ja2Rvd24gPSBhd2FpdCBzdGFydExvY2tkb3duU2Vzc2lvbih1ZGlkLCBzb2NrZXQpO1xuICB0cnkge1xuICAgIHJldHVybiB7XG4gICAgICB0aW1lc3RhbXA6IGF3YWl0IGxvY2tkb3duLmdldFZhbHVlKExPQ0tET1dOX1JFUVVFU1QuREVWSUNFX1RJTUUpLFxuICAgICAgLy8gQXBwbGUgcmV0dXJucyB1dGNPZmZzZXQgaW4gc2Vjb25kcyB3aGljaCBkb2VzbnQgY29tcGx5IHdpdGggdGhlIGdlbmVyYWwgc3RhbmRhcmRcbiAgICAgIHV0Y09mZnNldDogYXdhaXQgbG9ja2Rvd24uZ2V0VmFsdWUoTE9DS0RPV05fUkVRVUVTVC5ERVZJQ0VfVVRDX09GRlNFVCkgLyA2MCxcbiAgICAgIHRpbWVab25lOiBhd2FpdCBsb2NrZG93bi5nZXRWYWx1ZShMT0NLRE9XTl9SRVFVRVNULkRFVklDRV9USU1FX1pPTkUpLFxuICAgIH07XG4gIH0gZmluYWxseSB7XG4gICAgbG9ja2Rvd24uY2xvc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFN0YXJ0cyBhIGxvY2tkb3duIHNlc3Npb24gb24gdGhlIGdpdmVuIGRldmljZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIERldmljZSBVRElEXG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7TG9ja2Rvd259XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0TG9ja2Rvd25TZXNzaW9uICh1ZGlkLCBzb2NrZXQgPSBudWxsKSB7XG4gIGNvbnN0IHVzYm11eCA9IG5ldyBVc2JtdXgoc29ja2V0IHx8IGF3YWl0IGdldERlZmF1bHRTb2NrZXQoKSk7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFpclJlY29yZCA9IGF3YWl0IHVzYm11eC5yZWFkUGFpclJlY29yZCh1ZGlkKTtcbiAgICBpZiAoIXBhaXJSZWNvcmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgYSBwYWlyIHJlY29yZCBmb3IgZGV2aWNlICcke3VkaWR9Jy4gUGxlYXNlIGZpcnN0IHBhaXIgd2l0aCB0aGUgZGV2aWNlYCk7XG4gICAgfVxuICAgIC8vIGxvY2tkb3duIGRvZXNuJ3QgbmVlZCB0byBiZSBjbG9zZWQgc2luY2UgaXQgdXNlcyB0aGUgc2FtZSBzb2NrZXQgdXNibXV4IHVzZXNcbiAgICBjb25zdCBsb2NrZG93biA9IGF3YWl0IHVzYm11eC5jb25uZWN0TG9ja2Rvd24odWRpZCk7XG4gICAgYXdhaXQgbG9ja2Rvd24uc3RhcnRTZXNzaW9uKHBhaXJSZWNvcmQuSG9zdElELCBwYWlyUmVjb3JkLlN5c3RlbUJVSUQpO1xuICAgIGxvY2tkb3duLmVuYWJsZVNlc3Npb25TU0wocGFpclJlY29yZC5Ib3N0UHJpdmF0ZUtleSwgcGFpclJlY29yZC5Ib3N0Q2VydGlmaWNhdGUpO1xuICAgIHJldHVybiBsb2NrZG93bjtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25uZWN0cyB0byBhIGdpdmVuIHBvcnQgd2l0aCB0aGUgY2VydHMgYW5kIGtleXMgdXNlZCBpbiB0aGUgcGFpcmluZyBwcm9jZXNzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVkaWQgRGV2aWNlIFVESURcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3J0IFBvcnQgdG8gY29ubmVjdFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge3Rscy5UTFNTb2NrZXR8T2JqZWN0fSBUaGUgc29ja2V0IG9yIHRoZSBvYmplY3QgcmV0dXJuZWQgaW4gdGhlIGNhbGxiYWNrIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBleGlzdHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29ubmVjdFBvcnRTU0wgKHVkaWQsIHBvcnQsIHNvY2tldCA9IG51bGwpIHtcbiAgY29uc3QgdXNibXV4ID0gbmV3IFVzYm11eChzb2NrZXQgfHwgYXdhaXQgZ2V0RGVmYXVsdFNvY2tldCgpKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCB1c2JtdXguZmluZERldmljZSh1ZGlkKTtcbiAgICBpZiAoIWRldmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCB0aGUgZXhwZWN0ZWQgZGV2aWNlICcke3VkaWR9J2ApO1xuICAgIH1cbiAgICBjb25zdCBwYWlyUmVjb3JkID0gYXdhaXQgdXNibXV4LnJlYWRQYWlyUmVjb3JkKHVkaWQpO1xuICAgIGlmICghcGFpclJlY29yZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIHBhaXIgcmVjb3JkIGZvciBkZXZpY2UgJyR7dWRpZH0nLiBQbGVhc2UgZmlyc3QgcGFpciB3aXRoIHRoZSBkZXZpY2VgKTtcbiAgICB9XG4gICAgY29uc3Qgc29ja2V0ID0gYXdhaXQgdXNibXV4LmNvbm5lY3QoZGV2aWNlLlByb3BlcnRpZXMuRGV2aWNlSUQsIHBvcnQsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHVwZ3JhZGVUb1NTTChzb2NrZXQsIHBhaXJSZWNvcmQuSG9zdFByaXZhdGVLZXksIHBhaXJSZWNvcmQuSG9zdENlcnRpZmljYXRlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25uZWN0cyB0byBhIGdpdmVuIHBvcnRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHtudW1iZXJ9IHBvcnQgUG9ydCB0byBjb25uZWN0XG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7bmV0LlNvY2tldHxPYmplY3R9IFRoZSBzb2NrZXQgb3IgdGhlIG9iamVjdCByZXR1cm5lZCBpbiB0aGUgY2FsbGJhY2sgaWYgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGV4aXN0c1xuICovXG5hc3luYyBmdW5jdGlvbiBjb25uZWN0UG9ydCAodWRpZCwgcG9ydCwgc29ja2V0ID0gbnVsbCkge1xuICBjb25zdCB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IHVzYm11eC5maW5kRGV2aWNlKHVkaWQpO1xuICAgIGlmICghZGV2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHRoZSBleHBlY3RlZCBkZXZpY2UgJHt1ZGlkfWApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdXNibXV4LmNvbm5lY3QoZGV2aWNlLlByb3BlcnRpZXMuRGV2aWNlSUQsIHBvcnQsIHVuZGVmaW5lZCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB1c2JtdXguY2xvc2UoKTtcbiAgICB0aHJvdyBlO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIGdldENvbm5lY3RlZERldmljZXMsIGdldE9TVmVyc2lvbiwgZ2V0RGV2aWNlTmFtZSwgZ2V0RGV2aWNlVGltZSxcbiAgc3RhcnRMb2NrZG93blNlc3Npb24sIGNvbm5lY3RQb3J0LCBjb25uZWN0UG9ydFNTTCwgZ2V0RGV2aWNlSW5mb1xufTtcbiJdLCJmaWxlIjoibGliL3V0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|
|
178
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlsaXRpZXMuanMiXSwibmFtZXMiOlsiTE9DS0RPV05fUkVRVUVTVCIsIkRFVklDRV9USU1FIiwiS2V5IiwiREVWSUNFX1VUQ19PRkZTRVQiLCJERVZJQ0VfVElNRV9aT05FIiwiREVWSUNFX1ZFUlNJT04iLCJERVZJQ0VfTkFNRSIsImdldENvbm5lY3RlZERldmljZXMiLCJzb2NrZXQiLCJ1c2JtdXgiLCJVc2JtdXgiLCJlIiwibG9nIiwiZGVidWciLCJkZXZpY2VzIiwibGlzdERldmljZXMiLCJ1ZGlkcyIsIm1hcCIsImRldmljZSIsIlByb3BlcnRpZXMiLCJTZXJpYWxOdW1iZXIiLCJfIiwidW5pcSIsImNsb3NlIiwiZ2V0T1NWZXJzaW9uIiwidWRpZCIsImxvY2tkb3duIiwiY29ubmVjdExvY2tkb3duIiwiZ2V0VmFsdWUiLCJnZXREZXZpY2VOYW1lIiwiZ2V0RGV2aWNlSW5mbyIsImdldERldmljZVRpbWUiLCJzdGFydExvY2tkb3duU2Vzc2lvbiIsInRpbWVzdGFtcCIsInV0Y09mZnNldCIsInRpbWVab25lIiwicGFpclJlY29yZCIsInJlYWRQYWlyUmVjb3JkIiwiRXJyb3IiLCJzdGFydFNlc3Npb24iLCJIb3N0SUQiLCJTeXN0ZW1CVUlEIiwiZW5hYmxlU2Vzc2lvblNTTCIsIkhvc3RQcml2YXRlS2V5IiwiSG9zdENlcnRpZmljYXRlIiwiY29ubmVjdFBvcnRTU0wiLCJwb3J0IiwiaGFuZHNoYWtlT25seSIsImZpbmREZXZpY2UiLCJjb25uZWN0IiwiRGV2aWNlSUQiLCJ1bmRlZmluZWQiLCJjb25uZWN0UG9ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUdBLE1BQU1BLGdCQUFnQixHQUFHO0FBQ3ZCQyxFQUFBQSxXQUFXLEVBQUU7QUFBRUMsSUFBQUEsR0FBRyxFQUFFO0FBQVAsR0FEVTtBQUV2QkMsRUFBQUEsaUJBQWlCLEVBQUU7QUFBRUQsSUFBQUEsR0FBRyxF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RCxRQUFNQyxNQUFNLEdBQUcsSUFBSUMsZUFBSixDQUFXRixNQUFNLEtBQUksTUFBTSwrQkFBVixDQUFqQixDQUFmOztBQUNBLE1BQUk7QUFDRixVQUFNVSxNQUFNLEdBQUcsTUFBTVQsTUFBTSxDQUFDdUMsVUFBUCxDQUFrQnZCLElBQWxCLENBQXJCOztBQUNBLFFBQUksQ0FBQ1AsTUFBTCxFQUFhO0FBQ1gsWUFBTSxJQUFJb0IsS0FBSixDQUFXLHNDQUFxQ2IsSUFBSyxFQUFyRCxDQUFOO0FBQ0Q7O0FBQ0QsV0FBTyxNQUFNaEIsTUFBTSxDQUFDd0MsT0FBUCxDQUFlL0IsTUFBTSxDQUFDQyxVQUFQLENBQWtCK0IsUUFBakMsRUFBMkNKLElBQTNDLEVBQWlESyxTQUFqRCxDQUFiO0FBQ0QsR0FORCxDQU1FLE9BQU94QyxDQUFQLEVBQVU7QUFDVkYsSUFBQUEsTUFBTSxDQUFDYyxLQUFQO0FBQ0EsVUFBTVosQ0FBTjtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXNibXV4LCB7IGdldERlZmF1bHRTb2NrZXQgfSBmcm9tICcuL3VzYm11eCc7XG5pbXBvcnQgeyB1cGdyYWRlVG9TU0wsIGVuYWJsZVNTTEhhbmRzaGFrZU9ubHkgfSBmcm9tICcuL3NzbC1oZWxwZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vc2FtZG1hcnNoYWxsL2lPUy1JbnRlcm5hbHMvYmxvYi9tYXN0ZXIvbG9ja2JvdC9sb2NrYm90L2xvY2tkb3duX2tleXMuaFxuY29uc3QgTE9DS0RPV05fUkVRVUVTVCA9IHtcbiAgREVWSUNFX1RJTUU6IHsgS2V5OiAnVGltZUludGVydmFsU2luY2UxOTcwJyB9LFxuICBERVZJQ0VfVVRDX09GRlNFVDogeyBLZXk6ICdUaW1lWm9uZU9mZnNldEZyb21VVEMnIH0sXG4gIERFVklDRV9USU1FX1pPTkU6IHsgS2V5OiAnVGltZVpvbmUnIH0sXG4gIERFVklDRV9WRVJTSU9OOiB7IEtleTogJ1Byb2R1Y3RWZXJzaW9uJyB9LFxuICBERVZJQ0VfTkFNRTogeyBLZXk6ICdEZXZpY2VOYW1lJyB9XG59O1xuXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB1ZGlkcyBvZiB0aGUgY29ubmVjdGVkIGRldmljZXNcbiAqXG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7QXJyYXkuPHN0cmluZz59IFRoZSBsaXN0IG9mIGRldmljZSBzZXJpYWwgbnVtYmVycyAodWRpZCkgb3JcbiAqIGFuIGVtcHR5IGxpc3QgaWYgbm8gZGV2aWNlcyBhcmUgY29ubmVjdGVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldENvbm5lY3RlZERldmljZXMgKHNvY2tldCA9IG51bGwpIHtcbiAgbGV0IHVzYm11eDtcbiAgdHJ5IHtcbiAgICB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmRlYnVnKGUpO1xuICAgIHJldHVybiBbXTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IGRldmljZXMgPSBhd2FpdCB1c2JtdXgubGlzdERldmljZXMoKTtcbiAgICBjb25zdCB1ZGlkcyA9IGRldmljZXMubWFwKChkZXZpY2UpID0+IGRldmljZS5Qcm9wZXJ0aWVzLlNlcmlhbE51bWJlcik7XG4gICAgcmV0dXJuIF8udW5pcSh1ZGlkcyk7XG4gIH0gZmluYWxseSB7XG4gICAgdXNibXV4LmNsb3NlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIG9zIHZlcnNpb24gb2YgdGhlIGRldmljZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIERldmljZSBVRElEXG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRPU1ZlcnNpb24gKHVkaWQsIHNvY2tldCA9IG51bGwpIHtcbiAgY29uc3QgdXNibXV4ID0gbmV3IFVzYm11eChzb2NrZXQgfHwgYXdhaXQgZ2V0RGVmYXVsdFNvY2tldCgpKTtcbiAgdHJ5IHtcbiAgICAvLyBsb2NrZG93biBkb2Vzbid0IG5lZWQgdG8gYmUgY2xvc2VkIHNpbmNlIGl0IHVzZXMgdGhlIHNhbWUgc29ja2V0IHVzYm11eCB1c2VzXG4gICAgY29uc3QgbG9ja2Rvd24gPSBhd2FpdCB1c2JtdXguY29ubmVjdExvY2tkb3duKHVkaWQpO1xuICAgIHJldHVybiBhd2FpdCBsb2NrZG93bi5nZXRWYWx1ZShMT0NLRE9XTl9SRVFVRVNULkRFVklDRV9WRVJTSU9OKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB1c2JtdXguY2xvc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVkaWQgRGV2aWNlIFVESURcbiAqIEBwYXJhbSB7P25ldC5Tb2NrZXR9IHNvY2tldCB0aGUgc29ja2V0IG9mIHVzYm11eGQuIEl0IHdpbGwgZGVmYXVsdCB0byAvdmFyL3J1bi91c2JtdXhkIGlmIGl0IGlzIG5vdCBwYXNzZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldERldmljZU5hbWUgKHVkaWQsIHNvY2tldCA9IG51bGwpIHtcbiAgY29uc3QgdXNibXV4ID0gbmV3IFVzYm11eChzb2NrZXQgfHwgYXdhaXQgZ2V0RGVmYXVsdFNvY2tldCgpKTtcbiAgdHJ5IHtcbiAgICAvLyBsb2NrZG93biBkb2Vzbid0IG5lZWQgdG8gYmUgY2xvc2VkIHNpbmNlIGl0IHVzZXMgdGhlIHNhbWUgc29ja2V0IHVzYm11eCB1c2VzXG4gICAgY29uc3QgbG9ja2Rvd24gPSBhd2FpdCB1c2JtdXguY29ubmVjdExvY2tkb3duKHVkaWQpO1xuICAgIHJldHVybiBhd2FpdCBsb2NrZG93bi5nZXRWYWx1ZShMT0NLRE9XTl9SRVFVRVNULkRFVklDRV9OQU1FKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB1c2JtdXguY2xvc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYWxsIGF2YWlsYWJsZSBkZXZpY2UgdmFsdWVzXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge29iamVjdH0gUmV0dXJucyBhdmFpbGFibGUgZGVmYXVsdCBkZXZpY2UgdmFsdWVzIHZpYSBsb2NrZG93bi5cbiAqIGUuZy5cbiAqIHtcbiAqICAgXCJCYXNlYmFuZENlcnRJZFwiPT4zODQwMTQ5NTI4LFxuICogICBcIkJhc2ViYW5kS2V5SGFzaEluZm9ybWF0aW9uXCI9PlxuICogICAgIHtcIkFLZXlTdGF0dXNcIj0+MixcbiAqICAgICBcIlNLZXlIYXNoXCI9PntcbiAqICAgICAgIFwidHlwZVwiPT5cIkJ1ZmZlclwiLFxuICogICAgICAgXCJkYXRhXCI9PlsxODcsIDIzOSwgLi4uLl19LFxuICogICAgIFwiU0tleVN0YXR1c1wiPT4wfSxcbiAqICAgXCJCYXNlYmFuZFNlcmlhbE51bWJlclwiPT57XCJ0eXBlXCI9PlwiQnVmZmVyXCIsIFwiZGF0YVwiPT5bLi4uXX0sXG4gKiAgIFwiQmFzZWJhbmRWZXJzaW9uXCI9PlwiMTEuMDEuMDJcIixcbiAqICAgXCJCb2FyZElkXCI9PjIsXG4gKiAgIFwiQnVpbGRWZXJzaW9uXCI9PlwiMTlDNTZcIixcbiAqICAgXCJDUFVBcmNoaXRlY3R1cmVcIj0+XCJhcm02NFwiLFxuICogICBcIkNoaXBJRFwiPT4zMjc2OCxcbiAqICAgXCJEZXZpY2VDbGFzc1wiPT5cImlQaG9uZVwiLFxuICogICBcIkRldmljZUNvbG9yXCI9PlwiI2M4Y2FjYVwiLFxuICogICBcIkRldmljZU5hbWVcIj0+XCJrYXp1XCIsXG4gKiAgIFwiRGllSURcIj0+MTExMTExMTExMTExMSxcbiAqICAgXCJIYXJkd2FyZU1vZGVsXCI9PlwiTjY5dUFQXCIsXG4gKiAgIFwiSGFzU2lEUFwiPT50cnVlLFxuICogICBcIlBhcnRpdGlvblR5cGVcIj0+XCJHVUlEX3BhcnRpdGlvbl9zY2hlbWVcIixcbiAqICAgXCJQcm9kdWN0TmFtZVwiPT5cImlQaG9uZSBPU1wiLFxuICogICBcIlByb2R1Y3RUeXBlXCI9PlwiaVBob25lOCw0XCIsXG4gKiAgIFwiUHJvZHVjdFZlcnNpb25cIj0+XCIxNS4yXCIsXG4gKiAgIFwiUHJvZHVjdGlvblNPQ1wiPT50cnVlLFxuICogICBcIlByb3RvY29sVmVyc2lvblwiPT5cIjJcIixcbiAqICAgXCJTdXBwb3J0ZWREZXZpY2VGYW1pbGllc1wiPT5bMV0sXG4gKiAgIFwiVGVsZXBob255Q2FwYWJpbGl0eVwiPT50cnVlLFxuICogICBcIlVuaXF1ZUNoaXBJRFwiPT4xMTExMTExMTExMTExLFxuICogICBcIlVuaXF1ZURldmljZUlEXCI9PlwiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYVwiLFxuICogICBcIldpRmlBZGRyZXNzXCI9PlwiMDA6MDA6MDA6MDA6MDA6MDBcIlxuICogfVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXREZXZpY2VJbmZvICh1ZGlkLCBzb2NrZXQgPSBudWxsKSB7XG4gIGNvbnN0IHVzYm11eCA9IG5ldyBVc2JtdXgoc29ja2V0IHx8IGF3YWl0IGdldERlZmF1bHRTb2NrZXQoKSk7XG4gIHRyeSB7XG4gICAgY29uc3QgbG9ja2Rvd24gPSBhd2FpdCB1c2JtdXguY29ubmVjdExvY2tkb3duKHVkaWQpO1xuICAgIHJldHVybiBhd2FpdCBsb2NrZG93bi5nZXRWYWx1ZSgpO1xuICB9IGZpbmFsbHkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICB9XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlVGltZVxuICpcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0aW1lc3RhbXAgVW5peCB0aW1lc3RhbXAgaW4gc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAxVDAwOjAwOjAwWlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHV0Y09mZnNldCBUaGUgZGlmZmVyZW5jZSBpbiBtaW51dGVzIGJldHdlZW4gdGhlIFVUQyB0aW1lIGFuZCB0aGUgbG9jYWwgZGV2aWNlIHRpbWUuXG4gKiBDYW4gYmUgbmVnYXRpdmUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGltZVpvbmUgVGltZSB6b25lIG5hbWUgY29uZmlndXJlZCBvbiB0aGUgZGV2aWNlLCBmb3IgZXhhbXBsZSBgRXVyb3BlL1BhcmlzYFxuICovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBsb2NhbCB0aW1lIGZyb20gdGhlIGRldmljZSB1bmRlciB0ZXN0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVkaWQgRGV2aWNlIFVESURcbiAqIEBwYXJhbSB7P25ldC5Tb2NrZXR9IHNvY2tldCB0aGUgc29ja2V0IG9mIHVzYm11eGQuIEl0IHdpbGwgZGVmYXVsdCB0byAvdmFyL3J1bi91c2JtdXhkIGlmIGl0IGlzIG5vdCBwYXNzZWRcbiAqIEByZXR1cm5zIHtEZXZpY2VUaW1lfVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXREZXZpY2VUaW1lICh1ZGlkLCBzb2NrZXQgPSBudWxsKSB7XG4gIGNvbnN0IGxvY2tkb3duID0gYXdhaXQgc3RhcnRMb2NrZG93blNlc3Npb24odWRpZCwgc29ja2V0KTtcbiAgdHJ5IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGltZXN0YW1wOiBhd2FpdCBsb2NrZG93bi5nZXRWYWx1ZShMT0NLRE9XTl9SRVFVRVNULkRFVklDRV9USU1FKSxcbiAgICAgIC8vIEFwcGxlIHJldHVybnMgdXRjT2Zmc2V0IGluIHNlY29uZHMgd2hpY2ggZG9lc250IGNvbXBseSB3aXRoIHRoZSBnZW5lcmFsIHN0YW5kYXJkXG4gICAgICB1dGNPZmZzZXQ6IGF3YWl0IGxvY2tkb3duLmdldFZhbHVlKExPQ0tET1dOX1JFUVVFU1QuREVWSUNFX1VUQ19PRkZTRVQpIC8gNjAsXG4gICAgICB0aW1lWm9uZTogYXdhaXQgbG9ja2Rvd24uZ2V0VmFsdWUoTE9DS0RPV05fUkVRVUVTVC5ERVZJQ0VfVElNRV9aT05FKSxcbiAgICB9O1xuICB9IGZpbmFsbHkge1xuICAgIGxvY2tkb3duLmNsb3NlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTdGFydHMgYSBsb2NrZG93biBzZXNzaW9uIG9uIHRoZSBnaXZlbiBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge0xvY2tkb3dufVxuICovXG5hc3luYyBmdW5jdGlvbiBzdGFydExvY2tkb3duU2Vzc2lvbiAodWRpZCwgc29ja2V0ID0gbnVsbCkge1xuICBjb25zdCB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB0cnkge1xuICAgIGNvbnN0IHBhaXJSZWNvcmQgPSBhd2FpdCB1c2JtdXgucmVhZFBhaXJSZWNvcmQodWRpZCk7XG4gICAgaWYgKCFwYWlyUmVjb3JkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGEgcGFpciByZWNvcmQgZm9yIGRldmljZSAnJHt1ZGlkfScuIFBsZWFzZSBmaXJzdCBwYWlyIHdpdGggdGhlIGRldmljZWApO1xuICAgIH1cbiAgICAvLyBsb2NrZG93biBkb2Vzbid0IG5lZWQgdG8gYmUgY2xvc2VkIHNpbmNlIGl0IHVzZXMgdGhlIHNhbWUgc29ja2V0IHVzYm11eCB1c2VzXG4gICAgY29uc3QgbG9ja2Rvd24gPSBhd2FpdCB1c2JtdXguY29ubmVjdExvY2tkb3duKHVkaWQpO1xuICAgIGF3YWl0IGxvY2tkb3duLnN0YXJ0U2Vzc2lvbihwYWlyUmVjb3JkLkhvc3RJRCwgcGFpclJlY29yZC5TeXN0ZW1CVUlEKTtcbiAgICBsb2NrZG93bi5lbmFibGVTZXNzaW9uU1NMKHBhaXJSZWNvcmQuSG9zdFByaXZhdGVLZXksIHBhaXJSZWNvcmQuSG9zdENlcnRpZmljYXRlKTtcbiAgICByZXR1cm4gbG9ja2Rvd247XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB1c2JtdXguY2xvc2UoKTtcbiAgICB0aHJvdyBlO1xuICB9XG59XG5cbi8qKlxuICogQ29ubmVjdHMgdG8gYSBnaXZlbiBwb3J0IHdpdGggdGhlIGNlcnRzIGFuZCBrZXlzIHVzZWQgaW4gdGhlIHBhaXJpbmcgcHJvY2Vzc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIERldmljZSBVRElEXG4gKiBAcGFyYW0ge251bWJlcn0gcG9ydCBQb3J0IHRvIGNvbm5lY3RcbiAqIEBwYXJhbSB7P25ldC5Tb2NrZXR9IHNvY2tldCB0aGUgc29ja2V0IG9mIHVzYm11eGQuIEl0IHdpbGwgZGVmYXVsdCB0byAvdmFyL3J1bi91c2JtdXhkIGlmIGl0IGlzIG5vdCBwYXNzZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFuZHNoYWtlT25seSBvbmx5IGhhbmRzaGFrZSBhbmQgcmV0dXJuIHRoZSBpbml0aWFsIHNvY2tldFxuICogQHJldHVybnMge3Rscy5UTFNTb2NrZXR8T2JqZWN0fSBUaGUgc29ja2V0IG9yIHRoZSBvYmplY3QgcmV0dXJuZWQgaW4gdGhlIGNhbGxiYWNrIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBleGlzdHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29ubmVjdFBvcnRTU0wgKHVkaWQsIHBvcnQsIHNvY2tldCA9IG51bGwsIGhhbmRzaGFrZU9ubHkgPSBmYWxzZSkge1xuICBjb25zdCB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IHVzYm11eC5maW5kRGV2aWNlKHVkaWQpO1xuICAgIGlmICghZGV2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHRoZSBleHBlY3RlZCBkZXZpY2UgJyR7dWRpZH0nYCk7XG4gICAgfVxuICAgIGNvbnN0IHBhaXJSZWNvcmQgPSBhd2FpdCB1c2JtdXgucmVhZFBhaXJSZWNvcmQodWRpZCk7XG4gICAgaWYgKCFwYWlyUmVjb3JkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGEgcGFpciByZWNvcmQgZm9yIGRldmljZSAnJHt1ZGlkfScuIFBsZWFzZSBmaXJzdCBwYWlyIHdpdGggdGhlIGRldmljZWApO1xuICAgIH1cbiAgICBjb25zdCBzb2NrZXQgPSBhd2FpdCB1c2JtdXguY29ubmVjdChkZXZpY2UuUHJvcGVydGllcy5EZXZpY2VJRCwgcG9ydCwgdW5kZWZpbmVkKTtcbiAgICByZXR1cm4gaGFuZHNoYWtlT25seSA/XG4gICAgICBhd2FpdCBlbmFibGVTU0xIYW5kc2hha2VPbmx5KHNvY2tldCwgcGFpclJlY29yZC5Ib3N0UHJpdmF0ZUtleSwgcGFpclJlY29yZC5Ib3N0Q2VydGlmaWNhdGUpIDpcbiAgICAgIHVwZ3JhZGVUb1NTTChzb2NrZXQsIHBhaXJSZWNvcmQuSG9zdFByaXZhdGVLZXksIHBhaXJSZWNvcmQuSG9zdENlcnRpZmljYXRlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25uZWN0cyB0byBhIGdpdmVuIHBvcnRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHtudW1iZXJ9IHBvcnQgUG9ydCB0byBjb25uZWN0XG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7bmV0LlNvY2tldHxPYmplY3R9IFRoZSBzb2NrZXQgb3IgdGhlIG9iamVjdCByZXR1cm5lZCBpbiB0aGUgY2FsbGJhY2sgaWYgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGV4aXN0c1xuICovXG5hc3luYyBmdW5jdGlvbiBjb25uZWN0UG9ydCAodWRpZCwgcG9ydCwgc29ja2V0ID0gbnVsbCkge1xuICBjb25zdCB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IHVzYm11eC5maW5kRGV2aWNlKHVkaWQpO1xuICAgIGlmICghZGV2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHRoZSBleHBlY3RlZCBkZXZpY2UgJHt1ZGlkfWApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdXNibXV4LmNvbm5lY3QoZGV2aWNlLlByb3BlcnRpZXMuRGV2aWNlSUQsIHBvcnQsIHVuZGVmaW5lZCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB1c2JtdXguY2xvc2UoKTtcbiAgICB0aHJvdyBlO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIGdldENvbm5lY3RlZERldmljZXMsIGdldE9TVmVyc2lvbiwgZ2V0RGV2aWNlTmFtZSwgZ2V0RGV2aWNlVGltZSxcbiAgc3RhcnRMb2NrZG93blNlc3Npb24sIGNvbm5lY3RQb3J0LCBjb25uZWN0UG9ydFNTTCwgZ2V0RGV2aWNlSW5mb1xufTtcbiJdLCJmaWxlIjoibGliL3V0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|