node-simctl 7.1.4 → 7.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -0
- package/build/index.js +1 -5
- package/build/lib/helpers.js +2 -10
- package/build/lib/helpers.js.map +1 -0
- package/build/lib/logger.js +1 -9
- package/build/lib/logger.js.map +1 -0
- package/build/lib/simctl.js +3 -34
- package/build/lib/simctl.js.map +1 -0
- package/build/lib/subcommands/addmedia.js +1 -4
- package/build/lib/subcommands/addmedia.js.map +1 -0
- package/build/lib/subcommands/appinfo.js +1 -4
- package/build/lib/subcommands/appinfo.js.map +1 -0
- package/build/lib/subcommands/boot.js +1 -10
- package/build/lib/subcommands/boot.js.map +1 -0
- package/build/lib/subcommands/bootstatus.js +1 -18
- package/build/lib/subcommands/bootstatus.js.map +1 -0
- package/build/lib/subcommands/create.js +3 -21
- package/build/lib/subcommands/create.js.map +1 -0
- package/build/lib/subcommands/delete.js +1 -4
- package/build/lib/subcommands/delete.js.map +1 -0
- package/build/lib/subcommands/erase.js +1 -5
- package/build/lib/subcommands/erase.js.map +1 -0
- package/build/lib/subcommands/get_app_container.js +1 -6
- package/build/lib/subcommands/get_app_container.js.map +1 -0
- package/build/lib/subcommands/getenv.js +1 -4
- package/build/lib/subcommands/getenv.js.map +1 -0
- package/build/lib/subcommands/index.js +1 -29
- package/build/lib/subcommands/index.js.map +1 -0
- package/build/lib/subcommands/install.js +1 -4
- package/build/lib/subcommands/install.js.map +1 -0
- package/build/lib/subcommands/io.js +1 -15
- package/build/lib/subcommands/io.js.map +1 -0
- package/build/lib/subcommands/keychain.js +1 -21
- package/build/lib/subcommands/keychain.js.map +1 -0
- package/build/lib/subcommands/launch.js +1 -7
- package/build/lib/subcommands/launch.js.map +1 -0
- package/build/lib/subcommands/list.js +2 -35
- package/build/lib/subcommands/list.js.map +1 -0
- package/build/lib/subcommands/location.js +1 -6
- package/build/lib/subcommands/location.js.map +1 -0
- package/build/lib/subcommands/openurl.js +1 -4
- package/build/lib/subcommands/openurl.js.map +1 -0
- package/build/lib/subcommands/pbcopy.js +1 -4
- package/build/lib/subcommands/pbcopy.js.map +1 -0
- package/build/lib/subcommands/pbpaste.js +1 -4
- package/build/lib/subcommands/pbpaste.js.map +1 -0
- package/build/lib/subcommands/privacy.js +1 -4
- package/build/lib/subcommands/privacy.js.map +1 -0
- package/build/lib/subcommands/push.js +1 -14
- package/build/lib/subcommands/push.js.map +1 -0
- package/build/lib/subcommands/shutdown.js +1 -10
- package/build/lib/subcommands/shutdown.js.map +1 -0
- package/build/lib/subcommands/spawn.js +1 -8
- package/build/lib/subcommands/spawn.js.map +1 -0
- package/build/lib/subcommands/terminate.js +1 -4
- package/build/lib/subcommands/terminate.js.map +1 -0
- package/build/lib/subcommands/ui.js +1 -6
- package/build/lib/subcommands/ui.js.map +1 -0
- package/build/lib/subcommands/uninstall.js +1 -4
- package/build/lib/subcommands/uninstall.js.map +1 -0
- package/package.json +5 -3
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
|
-
|
|
14
10
|
var _asyncbox = require("asyncbox");
|
|
15
|
-
|
|
16
11
|
const commands = {};
|
|
17
12
|
|
|
18
13
|
commands.launchApp = async function launchApp(bundleId, tries = 5) {
|
|
@@ -25,7 +20,6 @@ commands.launchApp = async function launchApp(bundleId, tries = 5) {
|
|
|
25
20
|
return _lodash.default.trim(stdout);
|
|
26
21
|
});
|
|
27
22
|
};
|
|
28
|
-
|
|
29
23
|
var _default = commands;
|
|
30
24
|
exports.default = _default;
|
|
31
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImxhdW5jaEFwcCIsImJ1bmRsZUlkIiwidHJpZXMiLCJyZXRyeUludGVydmFsIiwic3Rkb3V0IiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsIl8iLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL2xhdW5jaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBFeGVjdXRlIHRoZSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIHBhY2thZ2Ugb24gU2ltdWxhdG9yLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUgYW5kXG4gKiB0aGUgYXBwbGljYXRpb24gd2l0aCBnaXZlbiBidW5kbGUgaWRlbnRpZmllciBpcyBhbHJlYWR5IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgLSBCdW5kbGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24sXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBnb2luZyB0byBiZSByZW1vdmVkLlxuICogQHBhcmFtIHtudW1iZXJ9IHRyaWVzIFs1XSAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGJlZm9yZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93aW5nIGFuIGV4Y2VwdGlvbi5cbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGFjdHVhbCBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBjb3JyZXNwb25kaW5nIHNpbWN0bCBzdWJjb21tYW5kIGNvbW1hbmRcbiAqICAgICAgICAgICAgICAgICByZXR1cm5zIG5vbi16ZXJvIHJldHVybiBjb2RlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMubGF1bmNoQXBwID0gYXN5bmMgZnVuY3Rpb24gbGF1bmNoQXBwIChidW5kbGVJZCwgdHJpZXMgPSA1KSB7XG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHRyaWVzLCAxMDAwLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCB0aGlzLmV4ZWMoJ2xhdW5jaCcsIHtcbiAgICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsYXVuY2gnKSwgYnVuZGxlSWRdLFxuICAgIH0pO1xuICAgIHJldHVybiBfLnRyaW0oc3Rkb3V0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBRUEsTUFBTUEsUUFBUSxHQUFHLENBQUMsQ0FBQzs7QUFnQm5CQSxRQUFRLENBQUNDLFNBQVMsR0FBRyxlQUFlQSxTQUFTLENBQUVDLFFBQVEsRUFBRUMsS0FBSyxHQUFHLENBQUMsRUFBRTtFQUNsRSxPQUFPLE1BQU0sSUFBQUMsdUJBQWEsRUFBQ0QsS0FBSyxFQUFFLElBQUksRUFBRSxZQUFZO0lBQ2xELE1BQU07TUFBQ0U7SUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxRQUFRLEVBQUU7TUFDekNDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFTixRQUFRO0lBQzdDLENBQUMsQ0FBQztJQUNGLE9BQU9PLGVBQUMsQ0FBQ0MsSUFBSSxDQUFDTCxNQUFNLENBQUM7RUFDdkIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLGVBRWFMLFFBQVE7QUFBQSJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch.js","names":["commands","launchApp","bundleId","tries","retryInterval","stdout","exec","args","requireUdid","_","trim"],"sources":["../../../lib/subcommands/launch.js"],"sourcesContent":["import _ from 'lodash';\nimport { retryInterval } from 'asyncbox';\n\nconst commands = {};\n\n/**\n * Execute the particular application package on Simulator.\n * It is required that Simulator is in _booted_ state and\n * the application with given bundle identifier is already installed.\n *\n * @param {string} bundleId - Bundle identifier of the application,\n * which is going to be removed.\n * @param {number} tries [5] - The maximum number of retries before\n * throwing an exception.\n * @return {string} the actual command output\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.launchApp = async function launchApp (bundleId, tries = 5) {\n return await retryInterval(tries, 1000, async () => {\n const {stdout} = await this.exec('launch', {\n args: [this.requireUdid('launch'), bundleId],\n });\n return _.trim(stdout);\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AAgBnBA,QAAQ,CAACC,SAAS,GAAG,eAAeA,SAAS,CAAEC,QAAQ,EAAEC,KAAK,GAAG,CAAC,EAAE;EAClE,OAAO,MAAM,IAAAC,uBAAa,EAACD,KAAK,EAAE,IAAI,EAAE,YAAY;IAClD,MAAM;MAACE;IAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE;MACzCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,QAAQ,CAAC,EAAEN,QAAQ;IAC7C,CAAC,CAAC;IACF,OAAOO,eAAC,CAACC,IAAI,CAACL,MAAM,CAAC;EACvB,CAAC,CAAC;AACJ,CAAC;AAAC,eAEaL,QAAQ;AAAA"}
|
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
|
-
|
|
14
10
|
var _helpers = require("../helpers");
|
|
15
|
-
|
|
16
11
|
var _logger = _interopRequireWildcard(require("../logger"));
|
|
17
|
-
|
|
18
12
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
-
|
|
20
13
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
|
|
22
14
|
const commands = {};
|
|
23
15
|
|
|
24
16
|
commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
|
|
@@ -27,36 +19,29 @@ commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
|
|
|
27
19
|
} = await this.exec('list', {
|
|
28
20
|
args: ['devices']
|
|
29
21
|
});
|
|
22
|
+
|
|
30
23
|
const deviceSectionRe = _lodash.default.isEmpty(platform) ? new RegExp(`\\-\\-\\s+(\\S+)\\s+(\\S+)\\s+\\-\\-(\\n\\s{4}.+)*`, 'mgi') : new RegExp(`\\-\\-\\s+${_lodash.default.escapeRegExp(platform)}\\s+(\\S+)\\s+\\-\\-(\\n\\s{4}.+)*`, 'mgi');
|
|
31
24
|
const matches = [];
|
|
32
25
|
let match;
|
|
33
|
-
|
|
34
26
|
while (match = deviceSectionRe.exec(stdout)) {
|
|
35
27
|
matches.push(match);
|
|
36
28
|
}
|
|
37
|
-
|
|
38
29
|
if (_lodash.default.isEmpty(matches)) {
|
|
39
30
|
throw new Error('Could not find device section');
|
|
40
31
|
}
|
|
41
|
-
|
|
42
32
|
const lineRe = /([^\s].+) \((\w+-.+\w+)\) \((\w+\s?\w+)\)/;
|
|
43
33
|
const devices = {};
|
|
44
|
-
|
|
45
34
|
for (match of matches) {
|
|
46
35
|
const sdk = platform ? match[1] : match[2];
|
|
47
36
|
devices[sdk] = devices[sdk] || [];
|
|
48
|
-
|
|
49
37
|
for (const line of match[0].split('\n').slice(1)) {
|
|
50
38
|
if (line.includes('(unavailable, ')) {
|
|
51
39
|
continue;
|
|
52
40
|
}
|
|
53
|
-
|
|
54
41
|
const lineMatch = lineRe.exec(line);
|
|
55
|
-
|
|
56
42
|
if (!lineMatch) {
|
|
57
43
|
throw new Error(`Could not match line: ${line}`);
|
|
58
44
|
}
|
|
59
|
-
|
|
60
45
|
devices[sdk].push({
|
|
61
46
|
name: lineMatch[1],
|
|
62
47
|
udid: lineMatch[2],
|
|
@@ -66,13 +51,11 @@ commands.getDevicesByParsing = async function getDevicesByParsing(platform) {
|
|
|
66
51
|
});
|
|
67
52
|
}
|
|
68
53
|
}
|
|
69
|
-
|
|
70
54
|
return devices;
|
|
71
55
|
};
|
|
72
56
|
|
|
73
57
|
commands.getDevices = async function getDevices(forSdk, platform) {
|
|
74
58
|
let devices = {};
|
|
75
|
-
|
|
76
59
|
try {
|
|
77
60
|
const {
|
|
78
61
|
stdout
|
|
@@ -80,11 +63,9 @@ commands.getDevices = async function getDevices(forSdk, platform) {
|
|
|
80
63
|
args: ['devices', '-j']
|
|
81
64
|
});
|
|
82
65
|
const versionMatchRe = _lodash.default.isEmpty(platform) ? new RegExp(`^([^\\s-]+)[\\s-](\\S+)`, 'i') : new RegExp(`^${_lodash.default.escapeRegExp(platform)}[\\s-](\\S+)`, 'i');
|
|
83
|
-
|
|
84
66
|
for (let [sdkName, entries] of _lodash.default.toPairs(JSON.parse(stdout).devices)) {
|
|
85
67
|
sdkName = sdkName.replace(_helpers.SIM_RUNTIME_NAME, '');
|
|
86
68
|
const versionMatch = versionMatchRe.exec(sdkName);
|
|
87
|
-
|
|
88
69
|
if (!versionMatch) {
|
|
89
70
|
continue;
|
|
90
71
|
}
|
|
@@ -102,24 +83,17 @@ commands.getDevices = async function getDevices(forSdk, platform) {
|
|
|
102
83
|
}
|
|
103
84
|
} catch (err) {
|
|
104
85
|
_logger.default.debug(_logger.LOG_PREFIX, `Unable to get JSON device list: ${err.stack}`);
|
|
105
|
-
|
|
106
86
|
_logger.default.debug(_logger.LOG_PREFIX, 'Falling back to manual parsing');
|
|
107
|
-
|
|
108
87
|
devices = await this.getDevicesByParsing(platform);
|
|
109
88
|
}
|
|
110
|
-
|
|
111
89
|
if (!forSdk) {
|
|
112
90
|
return devices;
|
|
113
91
|
}
|
|
114
|
-
|
|
115
92
|
if (devices[forSdk]) {
|
|
116
93
|
return devices[forSdk];
|
|
117
94
|
}
|
|
118
|
-
|
|
119
95
|
let errMsg = `'${forSdk}' does not exist in the list of simctl SDKs.`;
|
|
120
|
-
|
|
121
96
|
const availableSDKs = _lodash.default.keys(devices);
|
|
122
|
-
|
|
123
97
|
errMsg += availableSDKs.length ? ` Only the following Simulator SDK versions are available on your system: ${availableSDKs.join(', ')}` : ` No Simulator SDK versions are available on your system. Please install some via Xcode preferences.`;
|
|
124
98
|
throw new Error(errMsg);
|
|
125
99
|
};
|
|
@@ -130,7 +104,6 @@ commands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatf
|
|
|
130
104
|
} = await this.exec('list', {
|
|
131
105
|
args: ['runtimes', '--json']
|
|
132
106
|
});
|
|
133
|
-
|
|
134
107
|
for (const {
|
|
135
108
|
version,
|
|
136
109
|
identifier,
|
|
@@ -140,7 +113,6 @@ commands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatf
|
|
|
140
113
|
return identifier;
|
|
141
114
|
}
|
|
142
115
|
}
|
|
143
|
-
|
|
144
116
|
throw new Error(`Could not use --json flag to parse platform version`);
|
|
145
117
|
};
|
|
146
118
|
|
|
@@ -152,10 +124,8 @@ commands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVers
|
|
|
152
124
|
args: ['runtimes']
|
|
153
125
|
});
|
|
154
126
|
const runtimeRe = new RegExp(`${_lodash.default.escapeRegExp(platform)}\\s+(\\d+\\.\\d+)\\s+\\((\\d+\\.\\d+\\.*\\d*)`, 'i');
|
|
155
|
-
|
|
156
127
|
for (const line of stdout.split('\n')) {
|
|
157
128
|
const match = runtimeRe.exec(line);
|
|
158
|
-
|
|
159
129
|
if (match && match[1] === platformVersion) {
|
|
160
130
|
return match[2];
|
|
161
131
|
}
|
|
@@ -171,7 +141,6 @@ commands.getDeviceTypes = async function getDeviceTypes() {
|
|
|
171
141
|
} = await this.exec('list', {
|
|
172
142
|
args: ['devicetypes', '-j']
|
|
173
143
|
});
|
|
174
|
-
|
|
175
144
|
try {
|
|
176
145
|
const deviceTypes = JSON.parse(stdout.trim());
|
|
177
146
|
return deviceTypes.devicetypes.map(type => type.name);
|
|
@@ -186,14 +155,12 @@ commands.list = async function list() {
|
|
|
186
155
|
} = await this.exec('list', {
|
|
187
156
|
args: ['-j']
|
|
188
157
|
});
|
|
189
|
-
|
|
190
158
|
try {
|
|
191
159
|
return JSON.parse(stdout.trim());
|
|
192
160
|
} catch (e) {
|
|
193
161
|
throw new Error(`Unable to parse simctl list: ${e.message}`);
|
|
194
162
|
}
|
|
195
163
|
};
|
|
196
|
-
|
|
197
164
|
var _default = commands;
|
|
198
165
|
exports.default = _default;
|
|
199
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldERldmljZXNCeVBhcnNpbmciLCJwbGF0Zm9ybSIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwiZGV2aWNlU2VjdGlvblJlIiwiXyIsImlzRW1wdHkiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaGVzIiwibWF0Y2giLCJwdXNoIiwiRXJyb3IiLCJsaW5lUmUiLCJkZXZpY2VzIiwic2RrIiwibGluZSIsInNwbGl0Iiwic2xpY2UiLCJpbmNsdWRlcyIsImxpbmVNYXRjaCIsIm5hbWUiLCJ1ZGlkIiwic3RhdGUiLCJnZXREZXZpY2VzIiwiZm9yU2RrIiwidmVyc2lvbk1hdGNoUmUiLCJzZGtOYW1lIiwiZW50cmllcyIsInRvUGFpcnMiLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwiU0lNX1JVTlRJTUVfTkFNRSIsInZlcnNpb25NYXRjaCIsImZpbHRlciIsImVsIiwiaXNVbmRlZmluZWQiLCJpc0F2YWlsYWJsZSIsIm1hcCIsImF2YWlsYWJpbGl0eSIsImVyciIsImxvZyIsImRlYnVnIiwiTE9HX1BSRUZJWCIsInN0YWNrIiwiZXJyTXNnIiwiYXZhaWxhYmxlU0RLcyIsImtleXMiLCJsZW5ndGgiLCJqb2luIiwiZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24iLCJwbGF0Zm9ybVZlcnNpb24iLCJ2ZXJzaW9uIiwiaWRlbnRpZmllciIsInJ1bnRpbWVzIiwibm9ybWFsaXplVmVyc2lvbiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24iLCJydW50aW1lUmUiLCJpZ24iLCJnZXREZXZpY2VUeXBlcyIsImRldmljZVR5cGVzIiwidHJpbSIsImRldmljZXR5cGVzIiwidHlwZSIsIm1lc3NhZ2UiLCJsaXN0IiwiZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTSU1fUlVOVElNRV9OQU1FLCBub3JtYWxpemVWZXJzaW9uIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgbG9nLCB7IExPR19QUkVGSVggfSBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgZGV2aWNlIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdWRpZCAtIFRoZSBkZXZpY2UgVURJRC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBjdXJyZW50IFNpbXVsYXRvciBzdGF0ZSwgZm9yIGV4YW1wbGUgJ2Jvb3RlZCcgb3IgJ3NodXRkb3duJy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZGsgLSBUaGUgU0RLIHZlcnNpb24sIGZvciBleGFtcGxlICcxMC4zJy5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIFNpbXVsYXRvciBkZXZpY2VzIHRvIHJlcHJlc2VudFxuICogaXQgYXMgY29udmVuaWVudCBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIG1hcHBpbmcuIEVhY2gga2V5IGlzIHBsYXRmb3JtIHZlcnNpb24sXG4gKiAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgYW5cbiAqICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgdGhlIG1hdGNoaW5nIHtAbGluayBEZXZpY2VJbmZvfSBpbnN0YW5jZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXNCeVBhcnNpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzQnlQYXJzaW5nIChwbGF0Zm9ybSkge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ2RldmljZXMnXSxcbiAgfSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGNvbnN0IGRldmljZVNlY3Rpb25SZSA9IF8uaXNFbXB0eShwbGF0Zm9ybSlcbiAgICA/IG5ldyBSZWdFeHAoYFxcXFwtXFxcXC1cXFxccysoXFxcXFMrKVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKVxuICAgIDogbmV3IFJlZ0V4cChgXFxcXC1cXFxcLVxcXFxzKyR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKTtcbiAgY29uc3QgbWF0Y2hlcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKChtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCkpKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG1hdGNoZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgbGluZVJlID0gLyhbXlxcc10uKykgXFwoKFxcdystLitcXHcrKVxcKSBcXCgoXFx3K1xccz9cXHcrKVxcKS87IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvbEc3bUs2LzNcbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgY29uc3QgZGV2aWNlcyA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBjb25zdCBzZGsgPSBwbGF0Zm9ybSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMF0uc3BsaXQoJ1xcbicpLnNsaWNlKDEpKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnKHVuYXZhaWxhYmxlLCAnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBjb25zdCBsaW5lTWF0Y2ggPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbGluZU1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGxpbmU6ICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICAgIHNkayxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IG1hdGNoWzFdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXZpY2VzO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbGlzdCBvZiBleGlzdGluZyBTaW11bGF0b3IgZGV2aWNlcyB0byByZXByZXNlbnRcbiAqIGl0IGFzIGNvbnZlbmllbnQgbWFwcGluZyBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGZvclNkayAtIFRoZSBzZGsgdmVyc2lvbixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBkZXZpY2VzIGxpc3Qgc2hvdWxkIGJlIHBhcnNlZCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtPYmplY3R8QXJyYXk8RGV2aWNlSW5mbz59IElmIF9mb3JTZGtfIGlzIHNldCB0aGVuIHRoZSBsaXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGRldmljZXMgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB0aGUgc2FtZSByZXN1bHQgYXMgZm9yIHtAbGluayBnZXREZXZpY2VzQnlQYXJzaW5nfVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZSBvciBpZiBubyBtYXRjaGluZ1xuICogICAgICAgICAgICAgICAgIHBsYXRmb3JtIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIHN5c3RlbS5cbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZXMgKGZvclNkaywgcGxhdGZvcm0pIHtcbiAgbGV0IGRldmljZXMgPSB7fTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICAgIGFyZ3M6IFsnZGV2aWNlcycsICctaiddLFxuICAgIH0pO1xuICAgIC8qIEpTT04gc2hvdWxkIGJlXG4gICAgICoge1xuICAgICAqICAgXCJkZXZpY2VzXCIgOiB7XG4gICAgICogICAgIFwiaU9TIDxzZGs+XCIgOiBbIC8vIG9yXG4gICAgICogICAgIFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtPHNkaz4gOiBbXG4gICAgICogICAgICAge1xuICAgICAqICAgICAgICAgXCJzdGF0ZVwiIDogXCJCb290ZWRcIixcbiAgICAgKiAgICAgICAgIFwiYXZhaWxhYmlsaXR5XCIgOiBcIihhdmFpbGFibGUpXCIsXG4gICAgICogICAgICAgICBcImlzQXZhaWxhYmxlXCIgOiB0cnVlLFxuICAgICAqICAgICAgICAgXCJuYW1lXCIgOiBcImlQaG9uZSA2XCIsXG4gICAgICogICAgICAgICBcInVkaWRcIiA6IFwiNzVFMzQxNDAtMThFOC00RDFBLTlGNDUtQUFDNzM1REY3NURGXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIF1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgY29uc3QgdmVyc2lvbk1hdGNoUmUgPSBfLmlzRW1wdHkocGxhdGZvcm0pXG4gICAgICA/IG5ldyBSZWdFeHAoYF4oW15cXFxccy1dKylbXFxcXHMtXShcXFxcUyspYCwgJ2knKVxuICAgICAgOiBuZXcgUmVnRXhwKGBeJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9W1xcXFxzLV0oXFxcXFMrKWAsICdpJyk7XG4gICAgZm9yIChsZXQgW3Nka05hbWUsIGVudHJpZXNdIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHN0ZG91dCkuZGV2aWNlcykpIHtcbiAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGEgbG9uZ2VyIG5hbWUsIHNvIHJlbW92ZSBpdFxuICAgICAgc2RrTmFtZSA9IHNka05hbWUucmVwbGFjZShTSU1fUlVOVElNRV9OQU1FLCAnJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSB2ZXJzaW9uTWF0Y2hSZS5leGVjKHNka05hbWUpO1xuICAgICAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBzZGsgY2FuIGhhdmUgZGFzaGVzIChgMTItMmApIG9yIGRvdHMgKGAxMi4xYClcbiAgICAgIGNvbnN0IHNkayA9IChwbGF0Zm9ybSA/IHZlcnNpb25NYXRjaFsxXSA6IHZlcnNpb25NYXRjaFsyXSkucmVwbGFjZSgnLScsICcuJyk7XG4gICAgICBkZXZpY2VzW3Nka10gPSBkZXZpY2VzW3Nka10gfHwgW107XG4gICAgICBkZXZpY2VzW3Nka10ucHVzaCguLi5lbnRyaWVzLmZpbHRlcigoZWwpID0+IF8uaXNVbmRlZmluZWQoZWwuaXNBdmFpbGFibGUpIHx8IGVsLmlzQXZhaWxhYmxlKVxuICAgICAgICAubWFwKChlbCkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbC5hdmFpbGFiaWxpdHk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNkayxcbiAgICAgICAgICAgIC4uLmVsLFxuICAgICAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IHZlcnNpb25NYXRjaFsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhMT0dfUFJFRklYLCBgVW5hYmxlIHRvIGdldCBKU09OIGRldmljZSBsaXN0OiAke2Vyci5zdGFja31gKTtcbiAgICBsb2cuZGVidWcoTE9HX1BSRUZJWCwgJ0ZhbGxpbmcgYmFjayB0byBtYW51YWwgcGFyc2luZycpO1xuICAgIGRldmljZXMgPSBhd2FpdCB0aGlzLmdldERldmljZXNCeVBhcnNpbmcocGxhdGZvcm0pO1xuICB9XG5cbiAgaWYgKCFmb3JTZGspIHtcbiAgICByZXR1cm4gZGV2aWNlcztcbiAgfVxuICAvLyBpZiBhIGBmb3JTZGtgIHdhcyBwYXNzZWQgaW4sIHJldHVybiBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIGxpc3RcbiAgaWYgKGRldmljZXNbZm9yU2RrXSkge1xuICAgIHJldHVybiBkZXZpY2VzW2ZvclNka107XG4gIH1cblxuICBsZXQgZXJyTXNnID0gYCcke2ZvclNka30nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IG9mIHNpbWN0bCBTREtzLmA7XG4gIGNvbnN0IGF2YWlsYWJsZVNES3MgPSBfLmtleXMoZGV2aWNlcyk7XG4gIGVyck1zZyArPSBhdmFpbGFibGVTREtzLmxlbmd0aFxuICAgID8gYCBPbmx5IHRoZSBmb2xsb3dpbmcgU2ltdWxhdG9yIFNESyB2ZXJzaW9ucyBhcmUgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtOiAke2F2YWlsYWJsZVNES3Muam9pbignLCAnKX1gXG4gICAgOiBgIE5vIFNpbXVsYXRvciBTREsgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbS4gUGxlYXNlIGluc3RhbGwgc29tZSB2aWEgWGNvZGUgcHJlZmVyZW5jZXMuYDtcbiAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbiB1c2luZyAtLWpzb24gZmxhZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbGF0Zm9ybVZlcnNpb24gLSBUaGUgcGxhdGZvcm0gdmVyc2lvbiBuYW1lLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJy5cbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29ycmVzcG9uZGluZyBydW50aW1lIG5hbWUgZm9yIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgICBwbGF0Zm9ybSB2ZXJzaW9uLlxuICovXG5jb21tYW5kcy5nZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uVmlhSnNvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb25WaWFKc29uIChcbiAgcGxhdGZvcm1WZXJzaW9uLCBwbGF0Zm9ybSA9ICdpT1MnKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsncnVudGltZXMnLCAnLS1qc29uJ10sXG4gIH0pO1xuICBmb3IgKGNvbnN0IHt2ZXJzaW9uLCBpZGVudGlmaWVyLCBuYW1lfSBvZiBKU09OLnBhcnNlKHN0ZG91dCkucnVudGltZXMpIHtcbiAgICBpZiAobm9ybWFsaXplVmVyc2lvbih2ZXJzaW9uKSA9PT0gbm9ybWFsaXplVmVyc2lvbihwbGF0Zm9ybVZlcnNpb24pXG4gICAgICAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChwbGF0Zm9ybS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHVzZSAtLWpzb24gZmxhZyB0byBwYXJzZSBwbGF0Zm9ybSB2ZXJzaW9uYCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxhdGZvcm1WZXJzaW9uIC0gVGhlIHBsYXRmb3JtIHZlcnNpb24gbmFtZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSAnMTAuMycuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIG5hbWUsIGZvciBleGFtcGxlICd3YXRjaE9TJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvcnJlc3BvbmRpbmcgcnVudGltZSBuYW1lIGZvciB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gdmVyc2lvbi5cbiAqL1xuY29tbWFuZHMuZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24gKFxuICBwbGF0Zm9ybVZlcnNpb24sIHBsYXRmb3JtID0gJ2lPUycpIHtcbiAgLy8gVHJ5IHdpdGggcGFyc2luZ1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgICAgYXJnczogWydydW50aW1lcyddLFxuICAgIH0pO1xuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvVXlralFaLzFcbiAgICBjb25zdCBydW50aW1lUmUgPVxuICAgICAgbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9XFxcXHMrKFxcXFxkK1xcXFwuXFxcXGQrKVxcXFxzK1xcXFwoKFxcXFxkK1xcXFwuXFxcXGQrXFxcXC4qXFxcXGQqKWAsICdpJyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcnVudGltZVJlLmV4ZWMobGluZSk7XG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gPT09IHBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gbWF0Y2hbMl07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgLy8gaWYgbm90aGluZyB3YXMgZm91bmQsIHBhc3MgcGxhdGZvcm0gdmVyc2lvbiBiYWNrXG4gIHJldHVybiBwbGF0Zm9ybVZlcnNpb247XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBkZXZpY2UgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IFhjb2RlIGluc3RhbGxhdGlvblxuICpcbiAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59IExpc3Qgb2YgdGhlIHR5cGVzIG9mIGRldmljZXMgYXZhaWxhYmxlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIGNvbW1hbmQgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VUeXBlcyAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnZGV2aWNldHlwZXMnLCAnLWonXSxcbiAgfSk7XG4gIC8qXG4gICAqIEpTT04gd2lsbCBiZSBsaWtlOlxuICAgKiAgIHtcbiAgICogICAgIFwiZGV2aWNldHlwZXNcIiA6IFtcbiAgICogICAgICAge1xuICAgKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNHNcIixcbiAgICogICAgICAgICBcImlkZW50aWZpZXJcIiA6IFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltRGV2aWNlVHlwZS5pUGhvbmUtNHNcIlxuICAgKiAgICAgICB9LFxuICAgKiAgICAgICAuLi5cbiAgICogICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZVR5cGVzID0gSlNPTi5wYXJzZShzdGRvdXQudHJpbSgpKTtcbiAgICByZXR1cm4gZGV2aWNlVHlwZXMuZGV2aWNldHlwZXMubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgbGlzdCBvZiBkZXZpY2UgdHlwZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcnVudGltZXMsIGRldmljZXR5cGVzLCBkZXZpY2VzIGFuZCBwYWlycyBhcyBPYmplY3RcbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IE9iamVjdCBjb250YWluaW5nIGRldmljZSB0eXBlcywgcnVudGltZXMgZGV2aWNlcyBhbmQgcGFpcnMuXG4gKiBUaGUgcmVzdWx0aW5nIEpTT04gd2lsbCBiZSBsaWtlOlxuICogICB7XG4gKiAgICAgXCJkZXZpY2V0eXBlc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcIm5hbWVcIiA6IFwiaVBob25lIDRzXCIsXG4gKiAgICAgICAgIFwiaWRlbnRpZmllclwiIDogXCJjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2VUeXBlLmlQaG9uZS00c1wiXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIF0sXG4gKiAgICAgXCJydW50aW1lc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcInZlcnNpb25cIiA6ICcxMy4wJyxcbiAqICAgICAgICAgXCJidW5kbGVQYXRoXCIgOiAnL0FwcGxpY2F0aW9ucy9YY29kZTExYmV0YTQuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZScsXG4gKiAgICAgICAgIFwiaXNBdmFpbGFibGVcIiA6IHRydWUsXG4gKiAgICAgICAgIFwibmFtZVwiIDogJ2lPUyAxMy4wJyxcbiAqICAgICAgICAgXCJpZGVudGlmaWVyXCIgOiAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCcsXG4gKiAgICAgICAgIFwiYnVpbGR2ZXJzaW9uXCIgOiAnMTdBNTUzNGQnXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIH0sXG4gKiAgICAgXCJkZXZpY2VzXCIgOlxuICogICAgICAge1xuICogICAgICAgICAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCc6IFsgW09iamVjdF0sIFtPYmplY3RdIF0gfSxcbiAqICAgICAgICAgLi4uXG4gKiAgICAgICB9LFxuICogICAgIFwicGFpcnNcIiA6IHt9IH1cbiAqXG4gKiAgIH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgY29tbWFuZCBmYWlsc1xuICovXG5jb21tYW5kcy5saXN0ID0gYXN5bmMgZnVuY3Rpb24gbGlzdCAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnLWonXSxcbiAgfSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0LnRyaW0oKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBzaW1jdGwgbGlzdDogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7QUFHQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBcUJBQSxRQUFRLENBQUNDLG1CQUFULEdBQStCLGVBQWVBLG1CQUFmLENBQW9DQyxRQUFwQyxFQUE4QztFQUUzRSxNQUFNO0lBQUNDO0VBQUQsSUFBVyxNQUFNLEtBQUtDLElBQUwsQ0FBVSxNQUFWLEVBQWtCO0lBQ3ZDQyxJQUFJLEVBQUUsQ0FBQyxTQUFEO0VBRGlDLENBQWxCLENBQXZCO0VBYUEsTUFBTUMsZUFBZSxHQUFHQyxlQUFBLENBQUVDLE9BQUYsQ0FBVU4sUUFBVixJQUNwQixJQUFJTyxNQUFKLENBQVksb0RBQVosRUFBaUUsS0FBakUsQ0FEb0IsR0FFcEIsSUFBSUEsTUFBSixDQUFZLGFBQVlGLGVBQUEsQ0FBRUcsWUFBRixDQUFlUixRQUFmLENBQXlCLG9DQUFqRCxFQUFzRixLQUF0RixDQUZKO0VBR0EsTUFBTVMsT0FBTyxHQUFHLEVBQWhCO0VBQ0EsSUFBSUMsS0FBSjs7RUFFQSxPQUFRQSxLQUFLLEdBQUdOLGVBQWUsQ0FBQ0YsSUFBaEIsQ0FBcUJELE1BQXJCLENBQWhCLEVBQStDO0lBQzdDUSxPQUFPLENBQUNFLElBQVIsQ0FBYUQsS0FBYjtFQUNEOztFQUNELElBQUlMLGVBQUEsQ0FBRUMsT0FBRixDQUFVRyxPQUFWLENBQUosRUFBd0I7SUFDdEIsTUFBTSxJQUFJRyxLQUFKLENBQVUsK0JBQVYsQ0FBTjtFQUNEOztFQUVELE1BQU1DLE1BQU0sR0FBRywyQ0FBZjtFQUVBLE1BQU1DLE9BQU8sR0FBRyxFQUFoQjs7RUFDQSxLQUFLSixLQUFMLElBQWNELE9BQWQsRUFBdUI7SUFDckIsTUFBTU0sR0FBRyxHQUFHZixRQUFRLEdBQUdVLEtBQUssQ0FBQyxDQUFELENBQVIsR0FBY0EsS0FBSyxDQUFDLENBQUQsQ0FBdkM7SUFDQUksT0FBTyxDQUFDQyxHQUFELENBQVAsR0FBZUQsT0FBTyxDQUFDQyxHQUFELENBQVAsSUFBZ0IsRUFBL0I7O0lBRUEsS0FBSyxNQUFNQyxJQUFYLElBQW1CTixLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVNPLEtBQVQsQ0FBZSxJQUFmLEVBQXFCQyxLQUFyQixDQUEyQixDQUEzQixDQUFuQixFQUFrRDtNQUNoRCxJQUFJRixJQUFJLENBQUNHLFFBQUwsQ0FBYyxnQkFBZCxDQUFKLEVBQXFDO1FBQ25DO01BQ0Q7O01BT0QsTUFBTUMsU0FBUyxHQUFHUCxNQUFNLENBQUNYLElBQVAsQ0FBWWMsSUFBWixDQUFsQjs7TUFDQSxJQUFJLENBQUNJLFNBQUwsRUFBZ0I7UUFDZCxNQUFNLElBQUlSLEtBQUosQ0FBVyx5QkFBd0JJLElBQUssRUFBeEMsQ0FBTjtNQUNEOztNQUVERixPQUFPLENBQUNDLEdBQUQsQ0FBUCxDQUFhSixJQUFiLENBQWtCO1FBQ2hCVSxJQUFJLEVBQUVELFNBQVMsQ0FBQyxDQUFELENBREM7UUFFaEJFLElBQUksRUFBRUYsU0FBUyxDQUFDLENBQUQsQ0FGQztRQUdoQkcsS0FBSyxFQUFFSCxTQUFTLENBQUMsQ0FBRCxDQUhBO1FBSWhCTCxHQUpnQjtRQUtoQmYsUUFBUSxFQUFFQSxRQUFRLElBQUlVLEtBQUssQ0FBQyxDQUFEO01BTFgsQ0FBbEI7SUFPRDtFQUNGOztFQUNELE9BQU9JLE9BQVA7QUFDRCxDQTVERDs7QUE4RUFoQixRQUFRLENBQUMwQixVQUFULEdBQXNCLGVBQWVBLFVBQWYsQ0FBMkJDLE1BQTNCLEVBQW1DekIsUUFBbkMsRUFBNkM7RUFDakUsSUFBSWMsT0FBTyxHQUFHLEVBQWQ7O0VBQ0EsSUFBSTtJQUNGLE1BQU07TUFBQ2I7SUFBRCxJQUFXLE1BQU0sS0FBS0MsSUFBTCxDQUFVLE1BQVYsRUFBa0I7TUFDdkNDLElBQUksRUFBRSxDQUFDLFNBQUQsRUFBWSxJQUFaO0lBRGlDLENBQWxCLENBQXZCO0lBbUJBLE1BQU11QixjQUFjLEdBQUdyQixlQUFBLENBQUVDLE9BQUYsQ0FBVU4sUUFBVixJQUNuQixJQUFJTyxNQUFKLENBQVkseUJBQVosRUFBc0MsR0FBdEMsQ0FEbUIsR0FFbkIsSUFBSUEsTUFBSixDQUFZLElBQUdGLGVBQUEsQ0FBRUcsWUFBRixDQUFlUixRQUFmLENBQXlCLGNBQXhDLEVBQXVELEdBQXZELENBRko7O0lBR0EsS0FBSyxJQUFJLENBQUMyQixPQUFELEVBQVVDLE9BQVYsQ0FBVCxJQUErQnZCLGVBQUEsQ0FBRXdCLE9BQUYsQ0FBVUMsSUFBSSxDQUFDQyxLQUFMLENBQVc5QixNQUFYLEVBQW1CYSxPQUE3QixDQUEvQixFQUFzRTtNQUVwRWEsT0FBTyxHQUFHQSxPQUFPLENBQUNLLE9BQVIsQ0FBZ0JDLHlCQUFoQixFQUFrQyxFQUFsQyxDQUFWO01BQ0EsTUFBTUMsWUFBWSxHQUFHUixjQUFjLENBQUN4QixJQUFmLENBQW9CeUIsT0FBcEIsQ0FBckI7O01BQ0EsSUFBSSxDQUFDTyxZQUFMLEVBQW1CO1FBQ2pCO01BQ0Q7O01BR0QsTUFBTW5CLEdBQUcsR0FBRyxDQUFDZixRQUFRLEdBQUdrQyxZQUFZLENBQUMsQ0FBRCxDQUFmLEdBQXFCQSxZQUFZLENBQUMsQ0FBRCxDQUExQyxFQUErQ0YsT0FBL0MsQ0FBdUQsR0FBdkQsRUFBNEQsR0FBNUQsQ0FBWjtNQUNBbEIsT0FBTyxDQUFDQyxHQUFELENBQVAsR0FBZUQsT0FBTyxDQUFDQyxHQUFELENBQVAsSUFBZ0IsRUFBL0I7TUFDQUQsT0FBTyxDQUFDQyxHQUFELENBQVAsQ0FBYUosSUFBYixDQUFrQixHQUFHaUIsT0FBTyxDQUFDTyxNQUFSLENBQWdCQyxFQUFELElBQVEvQixlQUFBLENBQUVnQyxXQUFGLENBQWNELEVBQUUsQ0FBQ0UsV0FBakIsS0FBaUNGLEVBQUUsQ0FBQ0UsV0FBM0QsRUFDbEJDLEdBRGtCLENBQ2JILEVBQUQsSUFBUTtRQUNYLE9BQU9BLEVBQUUsQ0FBQ0ksWUFBVjtRQUNBLE9BQU87VUFDTHpCLEdBREs7VUFFTCxHQUFHcUIsRUFGRTtVQUdMcEMsUUFBUSxFQUFFQSxRQUFRLElBQUlrQyxZQUFZLENBQUMsQ0FBRDtRQUg3QixDQUFQO01BS0QsQ0FSa0IsQ0FBckI7SUFVRDtFQUNGLENBN0NELENBNkNFLE9BQU9PLEdBQVAsRUFBWTtJQUNaQyxlQUFBLENBQUlDLEtBQUosQ0FBVUMsa0JBQVYsRUFBdUIsbUNBQWtDSCxHQUFHLENBQUNJLEtBQU0sRUFBbkU7O0lBQ0FILGVBQUEsQ0FBSUMsS0FBSixDQUFVQyxrQkFBVixFQUFzQixnQ0FBdEI7O0lBQ0E5QixPQUFPLEdBQUcsTUFBTSxLQUFLZixtQkFBTCxDQUF5QkMsUUFBekIsQ0FBaEI7RUFDRDs7RUFFRCxJQUFJLENBQUN5QixNQUFMLEVBQWE7SUFDWCxPQUFPWCxPQUFQO0VBQ0Q7O0VBRUQsSUFBSUEsT0FBTyxDQUFDVyxNQUFELENBQVgsRUFBcUI7SUFDbkIsT0FBT1gsT0FBTyxDQUFDVyxNQUFELENBQWQ7RUFDRDs7RUFFRCxJQUFJcUIsTUFBTSxHQUFJLElBQUdyQixNQUFPLDhDQUF4Qjs7RUFDQSxNQUFNc0IsYUFBYSxHQUFHMUMsZUFBQSxDQUFFMkMsSUFBRixDQUFPbEMsT0FBUCxDQUF0Qjs7RUFDQWdDLE1BQU0sSUFBSUMsYUFBYSxDQUFDRSxNQUFkLEdBQ0wsNEVBQTJFRixhQUFhLENBQUNHLElBQWQsQ0FBbUIsSUFBbkIsQ0FBeUIsRUFEL0YsR0FFTCxxR0FGTDtFQUdBLE1BQU0sSUFBSXRDLEtBQUosQ0FBVWtDLE1BQVYsQ0FBTjtBQUNELENBbkVEOztBQThFQWhELFFBQVEsQ0FBQ3FELG1DQUFULEdBQStDLGVBQWVBLG1DQUFmLENBQzdDQyxlQUQ2QyxFQUM1QnBELFFBQVEsR0FBRyxLQURpQixFQUNWO0VBQ25DLE1BQU07SUFBQ0M7RUFBRCxJQUFXLE1BQU0sS0FBS0MsSUFBTCxDQUFVLE1BQVYsRUFBa0I7SUFDdkNDLElBQUksRUFBRSxDQUFDLFVBQUQsRUFBYSxRQUFiO0VBRGlDLENBQWxCLENBQXZCOztFQUdBLEtBQUssTUFBTTtJQUFDa0QsT0FBRDtJQUFVQyxVQUFWO0lBQXNCakM7RUFBdEIsQ0FBWCxJQUEwQ1MsSUFBSSxDQUFDQyxLQUFMLENBQVc5QixNQUFYLEVBQW1Cc0QsUUFBN0QsRUFBdUU7SUFDckUsSUFBSSxJQUFBQyx5QkFBQSxFQUFpQkgsT0FBakIsTUFBOEIsSUFBQUcseUJBQUEsRUFBaUJKLGVBQWpCLENBQTlCLElBQ0MvQixJQUFJLENBQUNvQyxXQUFMLEdBQW1CQyxVQUFuQixDQUE4QjFELFFBQVEsQ0FBQ3lELFdBQVQsRUFBOUIsQ0FETCxFQUM0RDtNQUMxRCxPQUFPSCxVQUFQO0lBQ0Q7RUFDRjs7RUFDRCxNQUFNLElBQUkxQyxLQUFKLENBQVcscURBQVgsQ0FBTjtBQUNELENBWkQ7O0FBdUJBZCxRQUFRLENBQUM2RCw0QkFBVCxHQUF3QyxlQUFlQSw0QkFBZixDQUN0Q1AsZUFEc0MsRUFDckJwRCxRQUFRLEdBQUcsS0FEVSxFQUNIO0VBRW5DLElBQUk7SUFDRixNQUFNO01BQUNDO0lBQUQsSUFBVyxNQUFNLEtBQUtDLElBQUwsQ0FBVSxNQUFWLEVBQWtCO01BQ3ZDQyxJQUFJLEVBQUUsQ0FBQyxVQUFEO0lBRGlDLENBQWxCLENBQXZCO0lBSUEsTUFBTXlELFNBQVMsR0FDYixJQUFJckQsTUFBSixDQUFZLEdBQUVGLGVBQUEsQ0FBRUcsWUFBRixDQUFlUixRQUFmLENBQXlCLCtDQUF2QyxFQUF1RixHQUF2RixDQURGOztJQUVBLEtBQUssTUFBTWdCLElBQVgsSUFBbUJmLE1BQU0sQ0FBQ2dCLEtBQVAsQ0FBYSxJQUFiLENBQW5CLEVBQXVDO01BQ3JDLE1BQU1QLEtBQUssR0FBR2tELFNBQVMsQ0FBQzFELElBQVYsQ0FBZWMsSUFBZixDQUFkOztNQUNBLElBQUlOLEtBQUssSUFBSUEsS0FBSyxDQUFDLENBQUQsQ0FBTCxLQUFhMEMsZUFBMUIsRUFBMkM7UUFDekMsT0FBTzFDLEtBQUssQ0FBQyxDQUFELENBQVo7TUFDRDtJQUNGO0VBQ0YsQ0FiRCxDQWFFLE9BQU9tRCxHQUFQLEVBQVksQ0FBRTs7RUFHaEIsT0FBT1QsZUFBUDtBQUNELENBcEJEOztBQTRCQXRELFFBQVEsQ0FBQ2dFLGNBQVQsR0FBMEIsZUFBZUEsY0FBZixHQUFpQztFQUN6RCxNQUFNO0lBQUM3RDtFQUFELElBQVcsTUFBTSxLQUFLQyxJQUFMLENBQVUsTUFBVixFQUFrQjtJQUN2Q0MsSUFBSSxFQUFFLENBQUMsYUFBRCxFQUFnQixJQUFoQjtFQURpQyxDQUFsQixDQUF2Qjs7RUFjQSxJQUFJO0lBQ0YsTUFBTTRELFdBQVcsR0FBR2pDLElBQUksQ0FBQ0MsS0FBTCxDQUFXOUIsTUFBTSxDQUFDK0QsSUFBUCxFQUFYLENBQXBCO0lBQ0EsT0FBT0QsV0FBVyxDQUFDRSxXQUFaLENBQXdCMUIsR0FBeEIsQ0FBNkIyQixJQUFELElBQVVBLElBQUksQ0FBQzdDLElBQTNDLENBQVA7RUFDRCxDQUhELENBR0UsT0FBT29CLEdBQVAsRUFBWTtJQUNaLE1BQU0sSUFBSTdCLEtBQUosQ0FBVyx1Q0FBc0M2QixHQUFHLENBQUMwQixPQUFRLEVBQTdELENBQU47RUFDRDtBQUNGLENBckJEOztBQXlEQXJFLFFBQVEsQ0FBQ3NFLElBQVQsR0FBZ0IsZUFBZUEsSUFBZixHQUF1QjtFQUNyQyxNQUFNO0lBQUNuRTtFQUFELElBQVcsTUFBTSxLQUFLQyxJQUFMLENBQVUsTUFBVixFQUFrQjtJQUN2Q0MsSUFBSSxFQUFFLENBQUMsSUFBRDtFQURpQyxDQUFsQixDQUF2Qjs7RUFHQSxJQUFJO0lBQ0YsT0FBTzJCLElBQUksQ0FBQ0MsS0FBTCxDQUFXOUIsTUFBTSxDQUFDK0QsSUFBUCxFQUFYLENBQVA7RUFDRCxDQUZELENBRUUsT0FBT0ssQ0FBUCxFQUFVO0lBQ1YsTUFBTSxJQUFJekQsS0FBSixDQUFXLGdDQUErQnlELENBQUMsQ0FBQ0YsT0FBUSxFQUFwRCxDQUFOO0VBQ0Q7QUFDRixDQVREOztlQVdlckUsUSJ9
|
|
166
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldERldmljZXNCeVBhcnNpbmciLCJwbGF0Zm9ybSIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwiZGV2aWNlU2VjdGlvblJlIiwiXyIsImlzRW1wdHkiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaGVzIiwibWF0Y2giLCJwdXNoIiwiRXJyb3IiLCJsaW5lUmUiLCJkZXZpY2VzIiwic2RrIiwibGluZSIsInNwbGl0Iiwic2xpY2UiLCJpbmNsdWRlcyIsImxpbmVNYXRjaCIsIm5hbWUiLCJ1ZGlkIiwic3RhdGUiLCJnZXREZXZpY2VzIiwiZm9yU2RrIiwidmVyc2lvbk1hdGNoUmUiLCJzZGtOYW1lIiwiZW50cmllcyIsInRvUGFpcnMiLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwiU0lNX1JVTlRJTUVfTkFNRSIsInZlcnNpb25NYXRjaCIsImZpbHRlciIsImVsIiwiaXNVbmRlZmluZWQiLCJpc0F2YWlsYWJsZSIsIm1hcCIsImF2YWlsYWJpbGl0eSIsImVyciIsImxvZyIsImRlYnVnIiwiTE9HX1BSRUZJWCIsInN0YWNrIiwiZXJyTXNnIiwiYXZhaWxhYmxlU0RLcyIsImtleXMiLCJsZW5ndGgiLCJqb2luIiwiZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvblZpYUpzb24iLCJwbGF0Zm9ybVZlcnNpb24iLCJ2ZXJzaW9uIiwiaWRlbnRpZmllciIsInJ1bnRpbWVzIiwibm9ybWFsaXplVmVyc2lvbiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24iLCJydW50aW1lUmUiLCJpZ24iLCJnZXREZXZpY2VUeXBlcyIsImRldmljZVR5cGVzIiwidHJpbSIsImRldmljZXR5cGVzIiwidHlwZSIsIm1lc3NhZ2UiLCJsaXN0IiwiZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdWJjb21tYW5kcy9saXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTSU1fUlVOVElNRV9OQU1FLCBub3JtYWxpemVWZXJzaW9uIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgbG9nLCB7IExPR19QUkVGSVggfSBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgZGV2aWNlIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdWRpZCAtIFRoZSBkZXZpY2UgVURJRC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBjdXJyZW50IFNpbXVsYXRvciBzdGF0ZSwgZm9yIGV4YW1wbGUgJ2Jvb3RlZCcgb3IgJ3NodXRkb3duJy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZGsgLSBUaGUgU0RLIHZlcnNpb24sIGZvciBleGFtcGxlICcxMC4zJy5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIHRoZSBsaXN0IG9mIGV4aXN0aW5nIFNpbXVsYXRvciBkZXZpY2VzIHRvIHJlcHJlc2VudFxuICogaXQgYXMgY29udmVuaWVudCBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIG1hcHBpbmcuIEVhY2gga2V5IGlzIHBsYXRmb3JtIHZlcnNpb24sXG4gKiAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaXMgYW5cbiAqICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgdGhlIG1hdGNoaW5nIHtAbGluayBEZXZpY2VJbmZvfSBpbnN0YW5jZXMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKi9cbmNvbW1hbmRzLmdldERldmljZXNCeVBhcnNpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VzQnlQYXJzaW5nIChwbGF0Zm9ybSkge1xuICAvLyBnZXQgdGhlIGxpc3Qgb2YgZGV2aWNlc1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICBhcmdzOiBbJ2RldmljZXMnXSxcbiAgfSk7XG5cbiAgLy8gZXhwZWN0IHRvIGdldCBhIGxpc3RpbmcgbGlrZVxuICAvLyAtLSBpT1MgOC4xIC0tXG4gIC8vICAgICBpUGhvbmUgNHMgKDNDQTZFN0RELTIyMEUtNDVFNS1CNzE2LTFFOTkyQjNBNDI5QykgKFNodXRkb3duKVxuICAvLyAgICAgLi4uXG4gIC8vIC0tIGlPUyA4LjIgLS1cbiAgLy8gICAgIGlQaG9uZSA0cyAoQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFKSAoU2h1dGRvd24pXG4gIC8vICAgICAuLi5cbiAgLy8gc28sIGdldCB0aGUgYC0tIGlPUyBYLlggLS1gIGxpbmUgdG8gZmluZCB0aGUgc2RrIChYLlgpXG4gIC8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGlzdGluZyBpbiBvcmRlciB0byBsYXRlciBmaW5kIHRoZSBkZXZpY2VzXG4gIGNvbnN0IGRldmljZVNlY3Rpb25SZSA9IF8uaXNFbXB0eShwbGF0Zm9ybSlcbiAgICA/IG5ldyBSZWdFeHAoYFxcXFwtXFxcXC1cXFxccysoXFxcXFMrKVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKVxuICAgIDogbmV3IFJlZ0V4cChgXFxcXC1cXFxcLVxcXFxzKyR7Xy5lc2NhcGVSZWdFeHAocGxhdGZvcm0pfVxcXFxzKyhcXFxcUyspXFxcXHMrXFxcXC1cXFxcLShcXFxcblxcXFxzezR9LispKmAsICdtZ2knKTtcbiAgY29uc3QgbWF0Y2hlcyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIC8vIG1ha2UgYW4gZW50cnkgZm9yIGVhY2ggc2RrIHZlcnNpb25cbiAgd2hpbGUgKChtYXRjaCA9IGRldmljZVNlY3Rpb25SZS5leGVjKHN0ZG91dCkpKSB7XG4gICAgbWF0Y2hlcy5wdXNoKG1hdGNoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG1hdGNoZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZXZpY2Ugc2VjdGlvbicpO1xuICB9XG5cbiAgY29uc3QgbGluZVJlID0gLyhbXlxcc10uKykgXFwoKFxcdystLitcXHcrKVxcKSBcXCgoXFx3K1xccz9cXHcrKVxcKS87IC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvbEc3bUs2LzNcbiAgLy8gZ2V0IGFsbCB0aGUgZGV2aWNlcyBmb3IgZWFjaCBzZGtcbiAgY29uc3QgZGV2aWNlcyA9IHt9O1xuICBmb3IgKG1hdGNoIG9mIG1hdGNoZXMpIHtcbiAgICBjb25zdCBzZGsgPSBwbGF0Zm9ybSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgZGV2aWNlc1tzZGtdID0gZGV2aWNlc1tzZGtdIHx8IFtdO1xuICAgIC8vIHNwbGl0IHRoZSBmdWxsIG1hdGNoIGludG8gbGluZXMgYW5kIHJlbW92ZSB0aGUgZmlyc3RcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMF0uc3BsaXQoJ1xcbicpLnNsaWNlKDEpKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnKHVuYXZhaWxhYmxlLCAnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGEgbGluZSBpcyBzb21ldGhpbmcgbGlrZVxuICAgICAgLy8gICAgaVBob25lIDRzIChBOTlGRkZDMy04RTE5LTREQ0YtQjU4NS03RDlENDZCNEMxNkUpIChTaHV0ZG93bilcbiAgICAgIC8vIHJldHJpZXZlOlxuICAgICAgLy8gICBpUGhvbmUgNHNcbiAgICAgIC8vICAgQTk5RkZGQzMtOEUxOS00RENGLUI1ODUtN0Q5RDQ2QjRDMTZFXG4gICAgICAvLyAgIFNodXRkb3duXG4gICAgICBjb25zdCBsaW5lTWF0Y2ggPSBsaW5lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbGluZU1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGxpbmU6ICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICAgIC8vIHNhdmUgdGhlIHdob2xlIHRoaW5nIGFzIGFiIG9iamVjdCBpbiB0aGUgbGlzdCBmb3IgdGhpcyBzZGtcbiAgICAgIGRldmljZXNbc2RrXS5wdXNoKHtcbiAgICAgICAgbmFtZTogbGluZU1hdGNoWzFdLFxuICAgICAgICB1ZGlkOiBsaW5lTWF0Y2hbMl0sXG4gICAgICAgIHN0YXRlOiBsaW5lTWF0Y2hbM10sXG4gICAgICAgIHNkayxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IG1hdGNoWzFdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZXZpY2VzO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbGlzdCBvZiBleGlzdGluZyBTaW11bGF0b3IgZGV2aWNlcyB0byByZXByZXNlbnRcbiAqIGl0IGFzIGNvbnZlbmllbnQgbWFwcGluZyBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGZvclNkayAtIFRoZSBzZGsgdmVyc2lvbixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHdoaWNoIHRoZSBkZXZpY2VzIGxpc3Qgc2hvdWxkIGJlIHBhcnNlZCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgJzEwLjMnLlxuICogQHBhcmFtIHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSAnd2F0Y2hPUycuXG4gKiBAcmV0dXJuIHtPYmplY3R8QXJyYXk8RGV2aWNlSW5mbz59IElmIF9mb3JTZGtfIGlzIHNldCB0aGVuIHRoZSBsaXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGRldmljZXMgZm9yIHRoZSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHZlcnNpb24uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSB0aGUgc2FtZSByZXN1bHQgYXMgZm9yIHtAbGluayBnZXREZXZpY2VzQnlQYXJzaW5nfVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZSBvciBpZiBubyBtYXRjaGluZ1xuICogICAgICAgICAgICAgICAgIHBsYXRmb3JtIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIHN5c3RlbS5cbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZXMgKGZvclNkaywgcGxhdGZvcm0pIHtcbiAgbGV0IGRldmljZXMgPSB7fTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygnbGlzdCcsIHtcbiAgICAgIGFyZ3M6IFsnZGV2aWNlcycsICctaiddLFxuICAgIH0pO1xuICAgIC8qIEpTT04gc2hvdWxkIGJlXG4gICAgICoge1xuICAgICAqICAgXCJkZXZpY2VzXCIgOiB7XG4gICAgICogICAgIFwiaU9TIDxzZGs+XCIgOiBbIC8vIG9yXG4gICAgICogICAgIFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtPHNkaz4gOiBbXG4gICAgICogICAgICAge1xuICAgICAqICAgICAgICAgXCJzdGF0ZVwiIDogXCJCb290ZWRcIixcbiAgICAgKiAgICAgICAgIFwiYXZhaWxhYmlsaXR5XCIgOiBcIihhdmFpbGFibGUpXCIsXG4gICAgICogICAgICAgICBcImlzQXZhaWxhYmxlXCIgOiB0cnVlLFxuICAgICAqICAgICAgICAgXCJuYW1lXCIgOiBcImlQaG9uZSA2XCIsXG4gICAgICogICAgICAgICBcInVkaWRcIiA6IFwiNzVFMzQxNDAtMThFOC00RDFBLTlGNDUtQUFDNzM1REY3NURGXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIF1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgY29uc3QgdmVyc2lvbk1hdGNoUmUgPSBfLmlzRW1wdHkocGxhdGZvcm0pXG4gICAgICA/IG5ldyBSZWdFeHAoYF4oW15cXFxccy1dKylbXFxcXHMtXShcXFxcUyspYCwgJ2knKVxuICAgICAgOiBuZXcgUmVnRXhwKGBeJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9W1xcXFxzLV0oXFxcXFMrKWAsICdpJyk7XG4gICAgZm9yIChsZXQgW3Nka05hbWUsIGVudHJpZXNdIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHN0ZG91dCkuZGV2aWNlcykpIHtcbiAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGEgbG9uZ2VyIG5hbWUsIHNvIHJlbW92ZSBpdFxuICAgICAgc2RrTmFtZSA9IHNka05hbWUucmVwbGFjZShTSU1fUlVOVElNRV9OQU1FLCAnJyk7XG4gICAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSB2ZXJzaW9uTWF0Y2hSZS5leGVjKHNka05hbWUpO1xuICAgICAgaWYgKCF2ZXJzaW9uTWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBzZGsgY2FuIGhhdmUgZGFzaGVzIChgMTItMmApIG9yIGRvdHMgKGAxMi4xYClcbiAgICAgIGNvbnN0IHNkayA9IChwbGF0Zm9ybSA/IHZlcnNpb25NYXRjaFsxXSA6IHZlcnNpb25NYXRjaFsyXSkucmVwbGFjZSgnLScsICcuJyk7XG4gICAgICBkZXZpY2VzW3Nka10gPSBkZXZpY2VzW3Nka10gfHwgW107XG4gICAgICBkZXZpY2VzW3Nka10ucHVzaCguLi5lbnRyaWVzLmZpbHRlcigoZWwpID0+IF8uaXNVbmRlZmluZWQoZWwuaXNBdmFpbGFibGUpIHx8IGVsLmlzQXZhaWxhYmxlKVxuICAgICAgICAubWFwKChlbCkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBlbC5hdmFpbGFiaWxpdHk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNkayxcbiAgICAgICAgICAgIC4uLmVsLFxuICAgICAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtIHx8IHZlcnNpb25NYXRjaFsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhMT0dfUFJFRklYLCBgVW5hYmxlIHRvIGdldCBKU09OIGRldmljZSBsaXN0OiAke2Vyci5zdGFja31gKTtcbiAgICBsb2cuZGVidWcoTE9HX1BSRUZJWCwgJ0ZhbGxpbmcgYmFjayB0byBtYW51YWwgcGFyc2luZycpO1xuICAgIGRldmljZXMgPSBhd2FpdCB0aGlzLmdldERldmljZXNCeVBhcnNpbmcocGxhdGZvcm0pO1xuICB9XG5cbiAgaWYgKCFmb3JTZGspIHtcbiAgICByZXR1cm4gZGV2aWNlcztcbiAgfVxuICAvLyBpZiBhIGBmb3JTZGtgIHdhcyBwYXNzZWQgaW4sIHJldHVybiBvbmx5IHRoZSBjb3JyZXNwb25kaW5nIGxpc3RcbiAgaWYgKGRldmljZXNbZm9yU2RrXSkge1xuICAgIHJldHVybiBkZXZpY2VzW2ZvclNka107XG4gIH1cblxuICBsZXQgZXJyTXNnID0gYCcke2ZvclNka30nIGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaXN0IG9mIHNpbWN0bCBTREtzLmA7XG4gIGNvbnN0IGF2YWlsYWJsZVNES3MgPSBfLmtleXMoZGV2aWNlcyk7XG4gIGVyck1zZyArPSBhdmFpbGFibGVTREtzLmxlbmd0aFxuICAgID8gYCBPbmx5IHRoZSBmb2xsb3dpbmcgU2ltdWxhdG9yIFNESyB2ZXJzaW9ucyBhcmUgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtOiAke2F2YWlsYWJsZVNES3Muam9pbignLCAnKX1gXG4gICAgOiBgIE5vIFNpbXVsYXRvciBTREsgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbS4gUGxlYXNlIGluc3RhbGwgc29tZSB2aWEgWGNvZGUgcHJlZmVyZW5jZXMuYDtcbiAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbiB1c2luZyAtLWpzb24gZmxhZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbGF0Zm9ybVZlcnNpb24gLSBUaGUgcGxhdGZvcm0gdmVyc2lvbiBuYW1lLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBleGFtcGxlICcxMC4zJy5cbiAqIEBwYXJhbSB7P3N0cmluZ30gcGxhdGZvcm0gLSBUaGUgcGxhdGZvcm0gbmFtZSwgZm9yIGV4YW1wbGUgJ3dhdGNoT1MnLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29ycmVzcG9uZGluZyBydW50aW1lIG5hbWUgZm9yIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgICBwbGF0Zm9ybSB2ZXJzaW9uLlxuICovXG5jb21tYW5kcy5nZXRSdW50aW1lRm9yUGxhdGZvcm1WZXJzaW9uVmlhSnNvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb25WaWFKc29uIChcbiAgcGxhdGZvcm1WZXJzaW9uLCBwbGF0Zm9ybSA9ICdpT1MnKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsncnVudGltZXMnLCAnLS1qc29uJ10sXG4gIH0pO1xuICBmb3IgKGNvbnN0IHt2ZXJzaW9uLCBpZGVudGlmaWVyLCBuYW1lfSBvZiBKU09OLnBhcnNlKHN0ZG91dCkucnVudGltZXMpIHtcbiAgICBpZiAobm9ybWFsaXplVmVyc2lvbih2ZXJzaW9uKSA9PT0gbm9ybWFsaXplVmVyc2lvbihwbGF0Zm9ybVZlcnNpb24pXG4gICAgICAmJiBuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChwbGF0Zm9ybS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHVzZSAtLWpzb24gZmxhZyB0byBwYXJzZSBwbGF0Zm9ybSB2ZXJzaW9uYCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcnVudGltZSBmb3IgdGhlIHBhcnRpY3VsYXIgcGxhdGZvcm0gdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGxhdGZvcm1WZXJzaW9uIC0gVGhlIHBsYXRmb3JtIHZlcnNpb24gbmFtZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhhbXBsZSAnMTAuMycuXG4gKiBAcGFyYW0gez9zdHJpbmd9IHBsYXRmb3JtIC0gVGhlIHBsYXRmb3JtIG5hbWUsIGZvciBleGFtcGxlICd3YXRjaE9TJy5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvcnJlc3BvbmRpbmcgcnVudGltZSBuYW1lIGZvciB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICAgcGxhdGZvcm0gdmVyc2lvbi5cbiAqL1xuY29tbWFuZHMuZ2V0UnVudGltZUZvclBsYXRmb3JtVmVyc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFJ1bnRpbWVGb3JQbGF0Zm9ybVZlcnNpb24gKFxuICBwbGF0Zm9ybVZlcnNpb24sIHBsYXRmb3JtID0gJ2lPUycpIHtcbiAgLy8gVHJ5IHdpdGggcGFyc2luZ1xuICB0cnkge1xuICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgICAgYXJnczogWydydW50aW1lcyddLFxuICAgIH0pO1xuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvVXlralFaLzFcbiAgICBjb25zdCBydW50aW1lUmUgPVxuICAgICAgbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cChwbGF0Zm9ybSl9XFxcXHMrKFxcXFxkK1xcXFwuXFxcXGQrKVxcXFxzK1xcXFwoKFxcXFxkK1xcXFwuXFxcXGQrXFxcXC4qXFxcXGQqKWAsICdpJyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcnVudGltZVJlLmV4ZWMobGluZSk7XG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0gPT09IHBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gbWF0Y2hbMl07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgLy8gaWYgbm90aGluZyB3YXMgZm91bmQsIHBhc3MgcGxhdGZvcm0gdmVyc2lvbiBiYWNrXG4gIHJldHVybiBwbGF0Zm9ybVZlcnNpb247XG59O1xuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBkZXZpY2UgdHlwZXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IFhjb2RlIGluc3RhbGxhdGlvblxuICpcbiAqIEByZXR1cm4ge0FycmF5PHN0cmluZz59IExpc3Qgb2YgdGhlIHR5cGVzIG9mIGRldmljZXMgYXZhaWxhYmxlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIGNvbW1hbmQgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVHlwZXMgPSBhc3luYyBmdW5jdGlvbiBnZXREZXZpY2VUeXBlcyAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnZGV2aWNldHlwZXMnLCAnLWonXSxcbiAgfSk7XG4gIC8qXG4gICAqIEpTT04gd2lsbCBiZSBsaWtlOlxuICAgKiAgIHtcbiAgICogICAgIFwiZGV2aWNldHlwZXNcIiA6IFtcbiAgICogICAgICAge1xuICAgKiAgICAgICAgIFwibmFtZVwiIDogXCJpUGhvbmUgNHNcIixcbiAgICogICAgICAgICBcImlkZW50aWZpZXJcIiA6IFwiY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltRGV2aWNlVHlwZS5pUGhvbmUtNHNcIlxuICAgKiAgICAgICB9LFxuICAgKiAgICAgICAuLi5cbiAgICogICB9XG4gICAqL1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZVR5cGVzID0gSlNPTi5wYXJzZShzdGRvdXQudHJpbSgpKTtcbiAgICByZXR1cm4gZGV2aWNlVHlwZXMuZGV2aWNldHlwZXMubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZXQgbGlzdCBvZiBkZXZpY2UgdHlwZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0IHRoZSBmdWxsIGxpc3Qgb2YgcnVudGltZXMsIGRldmljZXR5cGVzLCBkZXZpY2VzIGFuZCBwYWlycyBhcyBPYmplY3RcbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IE9iamVjdCBjb250YWluaW5nIGRldmljZSB0eXBlcywgcnVudGltZXMgZGV2aWNlcyBhbmQgcGFpcnMuXG4gKiBUaGUgcmVzdWx0aW5nIEpTT04gd2lsbCBiZSBsaWtlOlxuICogICB7XG4gKiAgICAgXCJkZXZpY2V0eXBlc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcIm5hbWVcIiA6IFwiaVBob25lIDRzXCIsXG4gKiAgICAgICAgIFwiaWRlbnRpZmllclwiIDogXCJjb20uYXBwbGUuQ29yZVNpbXVsYXRvci5TaW1EZXZpY2VUeXBlLmlQaG9uZS00c1wiXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIF0sXG4gKiAgICAgXCJydW50aW1lc1wiIDogW1xuICogICAgICAge1xuICogICAgICAgICBcInZlcnNpb25cIiA6ICcxMy4wJyxcbiAqICAgICAgICAgXCJidW5kbGVQYXRoXCIgOiAnL0FwcGxpY2F0aW9ucy9YY29kZTExYmV0YTQuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lT1MucGxhdGZvcm0vTGlicmFyeS9EZXZlbG9wZXIvQ29yZVNpbXVsYXRvci9Qcm9maWxlcy9SdW50aW1lcy9pT1Muc2ltcnVudGltZScsXG4gKiAgICAgICAgIFwiaXNBdmFpbGFibGVcIiA6IHRydWUsXG4gKiAgICAgICAgIFwibmFtZVwiIDogJ2lPUyAxMy4wJyxcbiAqICAgICAgICAgXCJpZGVudGlmaWVyXCIgOiAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCcsXG4gKiAgICAgICAgIFwiYnVpbGR2ZXJzaW9uXCIgOiAnMTdBNTUzNGQnXG4gKiAgICAgICB9LFxuICogICAgICAgLi4uXG4gKiAgICAgIH0sXG4gKiAgICAgXCJkZXZpY2VzXCIgOlxuICogICAgICAge1xuICogICAgICAgICAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3IuU2ltUnVudGltZS5pT1MtMTMtMCc6IFsgW09iamVjdF0sIFtPYmplY3RdIF0gfSxcbiAqICAgICAgICAgLi4uXG4gKiAgICAgICB9LFxuICogICAgIFwicGFpcnNcIiA6IHt9IH1cbiAqXG4gKiAgIH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgY29tbWFuZCBmYWlsc1xuICovXG5jb21tYW5kcy5saXN0ID0gYXN5bmMgZnVuY3Rpb24gbGlzdCAoKSB7XG4gIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgdGhpcy5leGVjKCdsaXN0Jywge1xuICAgIGFyZ3M6IFsnLWonXSxcbiAgfSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3Rkb3V0LnRyaW0oKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBzaW1jdGwgbGlzdDogJHtlLm1lc3NhZ2V9YCk7XG4gIH1c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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","names":["commands","getDevicesByParsing","platform","stdout","exec","args","deviceSectionRe","_","isEmpty","RegExp","escapeRegExp","matches","match","push","Error","lineRe","devices","sdk","line","split","slice","includes","lineMatch","name","udid","state","getDevices","forSdk","versionMatchRe","sdkName","entries","toPairs","JSON","parse","replace","SIM_RUNTIME_NAME","versionMatch","filter","el","isUndefined","isAvailable","map","availability","err","log","debug","LOG_PREFIX","stack","errMsg","availableSDKs","keys","length","join","getRuntimeForPlatformVersionViaJson","platformVersion","version","identifier","runtimes","normalizeVersion","toLowerCase","startsWith","getRuntimeForPlatformVersion","runtimeRe","ign","getDeviceTypes","deviceTypes","trim","devicetypes","type","message","list","e"],"sources":["../../../lib/subcommands/list.js"],"sourcesContent":["import _ from 'lodash';\nimport { SIM_RUNTIME_NAME, normalizeVersion } from '../helpers';\nimport log, { LOG_PREFIX } from '../logger';\n\n\nconst commands = {};\n\n/**\n * @typedef {Object} DeviceInfo\n * @property {string} name - The device name.\n * @property {string} udid - The device UDID.\n * @property {string} state - The current Simulator state, for example 'booted' or 'shutdown'.\n * @property {string} sdk - The SDK version, for example '10.3'.\n */\n\n/**\n * Parse the list of existing Simulator devices to represent\n * it as convenient mapping.\n *\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {Object} The resulting mapping. Each key is platform version,\n * for example '10.3' and the corresponding value is an\n * array of the matching {@link DeviceInfo} instances.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n */\ncommands.getDevicesByParsing = async function getDevicesByParsing (platform) {\n // get the list of devices\n const {stdout} = await this.exec('list', {\n args: ['devices'],\n });\n\n // expect to get a listing like\n // -- iOS 8.1 --\n // iPhone 4s (3CA6E7DD-220E-45E5-B716-1E992B3A429C) (Shutdown)\n // ...\n // -- iOS 8.2 --\n // iPhone 4s (A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E) (Shutdown)\n // ...\n // so, get the `-- iOS X.X --` line to find the sdk (X.X)\n // and the rest of the listing in order to later find the devices\n const deviceSectionRe = _.isEmpty(platform)\n ? new RegExp(`\\\\-\\\\-\\\\s+(\\\\S+)\\\\s+(\\\\S+)\\\\s+\\\\-\\\\-(\\\\n\\\\s{4}.+)*`, 'mgi')\n : new RegExp(`\\\\-\\\\-\\\\s+${_.escapeRegExp(platform)}\\\\s+(\\\\S+)\\\\s+\\\\-\\\\-(\\\\n\\\\s{4}.+)*`, 'mgi');\n const matches = [];\n let match;\n // make an entry for each sdk version\n while ((match = deviceSectionRe.exec(stdout))) {\n matches.push(match);\n }\n if (_.isEmpty(matches)) {\n throw new Error('Could not find device section');\n }\n\n const lineRe = /([^\\s].+) \\((\\w+-.+\\w+)\\) \\((\\w+\\s?\\w+)\\)/; // https://regex101.com/r/lG7mK6/3\n // get all the devices for each sdk\n const devices = {};\n for (match of matches) {\n const sdk = platform ? match[1] : match[2];\n devices[sdk] = devices[sdk] || [];\n // split the full match into lines and remove the first\n for (const line of match[0].split('\\n').slice(1)) {\n if (line.includes('(unavailable, ')) {\n continue;\n }\n // a line is something like\n // iPhone 4s (A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E) (Shutdown)\n // retrieve:\n // iPhone 4s\n // A99FFFC3-8E19-4DCF-B585-7D9D46B4C16E\n // Shutdown\n const lineMatch = lineRe.exec(line);\n if (!lineMatch) {\n throw new Error(`Could not match line: ${line}`);\n }\n // save the whole thing as ab object in the list for this sdk\n devices[sdk].push({\n name: lineMatch[1],\n udid: lineMatch[2],\n state: lineMatch[3],\n sdk,\n platform: platform || match[1],\n });\n }\n }\n return devices;\n};\n\n/**\n * Parse the list of existing Simulator devices to represent\n * it as convenient mapping for the particular platform version.\n *\n * @param {?string} forSdk - The sdk version,\n * for which the devices list should be parsed,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {Object|Array<DeviceInfo>} If _forSdk_ is set then the list\n * of devices for the particular platform version.\n * Otherwise the same result as for {@link getDevicesByParsing}\n * function.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code or if no matching\n * platform version is found in the system.\n */\ncommands.getDevices = async function getDevices (forSdk, platform) {\n let devices = {};\n try {\n const {stdout} = await this.exec('list', {\n args: ['devices', '-j'],\n });\n /* JSON should be\n * {\n * \"devices\" : {\n * \"iOS <sdk>\" : [ // or\n * \"com.apple.CoreSimulator.SimRuntime.iOS-<sdk> : [\n * {\n * \"state\" : \"Booted\",\n * \"availability\" : \"(available)\",\n * \"isAvailable\" : true,\n * \"name\" : \"iPhone 6\",\n * \"udid\" : \"75E34140-18E8-4D1A-9F45-AAC735DF75DF\"\n * }\n * ]\n * }\n * }\n */\n const versionMatchRe = _.isEmpty(platform)\n ? new RegExp(`^([^\\\\s-]+)[\\\\s-](\\\\S+)`, 'i')\n : new RegExp(`^${_.escapeRegExp(platform)}[\\\\s-](\\\\S+)`, 'i');\n for (let [sdkName, entries] of _.toPairs(JSON.parse(stdout).devices)) {\n // there could be a longer name, so remove it\n sdkName = sdkName.replace(SIM_RUNTIME_NAME, '');\n const versionMatch = versionMatchRe.exec(sdkName);\n if (!versionMatch) {\n continue;\n }\n\n // the sdk can have dashes (`12-2`) or dots (`12.1`)\n const sdk = (platform ? versionMatch[1] : versionMatch[2]).replace('-', '.');\n devices[sdk] = devices[sdk] || [];\n devices[sdk].push(...entries.filter((el) => _.isUndefined(el.isAvailable) || el.isAvailable)\n .map((el) => {\n delete el.availability;\n return {\n sdk,\n ...el,\n platform: platform || versionMatch[1],\n };\n })\n );\n }\n } catch (err) {\n log.debug(LOG_PREFIX, `Unable to get JSON device list: ${err.stack}`);\n log.debug(LOG_PREFIX, 'Falling back to manual parsing');\n devices = await this.getDevicesByParsing(platform);\n }\n\n if (!forSdk) {\n return devices;\n }\n // if a `forSdk` was passed in, return only the corresponding list\n if (devices[forSdk]) {\n return devices[forSdk];\n }\n\n let errMsg = `'${forSdk}' does not exist in the list of simctl SDKs.`;\n const availableSDKs = _.keys(devices);\n errMsg += availableSDKs.length\n ? ` Only the following Simulator SDK versions are available on your system: ${availableSDKs.join(', ')}`\n : ` No Simulator SDK versions are available on your system. Please install some via Xcode preferences.`;\n throw new Error(errMsg);\n};\n\n/**\n * Get the runtime for the particular platform version using --json flag\n *\n * @param {string} platformVersion - The platform version name,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {string} The corresponding runtime name for the given\n * platform version.\n */\ncommands.getRuntimeForPlatformVersionViaJson = async function getRuntimeForPlatformVersionViaJson (\n platformVersion, platform = 'iOS') {\n const {stdout} = await this.exec('list', {\n args: ['runtimes', '--json'],\n });\n for (const {version, identifier, name} of JSON.parse(stdout).runtimes) {\n if (normalizeVersion(version) === normalizeVersion(platformVersion)\n && name.toLowerCase().startsWith(platform.toLowerCase())) {\n return identifier;\n }\n }\n throw new Error(`Could not use --json flag to parse platform version`);\n};\n\n/**\n * Get the runtime for the particular platform version.\n *\n * @param {string} platformVersion - The platform version name,\n * for example '10.3'.\n * @param {?string} platform - The platform name, for example 'watchOS'.\n * @return {string} The corresponding runtime name for the given\n * platform version.\n */\ncommands.getRuntimeForPlatformVersion = async function getRuntimeForPlatformVersion (\n platformVersion, platform = 'iOS') {\n // Try with parsing\n try {\n const {stdout} = await this.exec('list', {\n args: ['runtimes'],\n });\n // https://regex101.com/r/UykjQZ/1\n const runtimeRe =\n new RegExp(`${_.escapeRegExp(platform)}\\\\s+(\\\\d+\\\\.\\\\d+)\\\\s+\\\\((\\\\d+\\\\.\\\\d+\\\\.*\\\\d*)`, 'i');\n for (const line of stdout.split('\\n')) {\n const match = runtimeRe.exec(line);\n if (match && match[1] === platformVersion) {\n return match[2];\n }\n }\n } catch (ign) {}\n\n // if nothing was found, pass platform version back\n return platformVersion;\n};\n\n/**\n * Get the list of device types available in the current Xcode installation\n *\n * @return {Array<string>} List of the types of devices available\n * @throws {Error} If the corresponding simctl command fails\n */\ncommands.getDeviceTypes = async function getDeviceTypes () {\n const {stdout} = await this.exec('list', {\n args: ['devicetypes', '-j'],\n });\n /*\n * JSON will be like:\n * {\n * \"devicetypes\" : [\n * {\n * \"name\" : \"iPhone 4s\",\n * \"identifier\" : \"com.apple.CoreSimulator.SimDeviceType.iPhone-4s\"\n * },\n * ...\n * }\n */\n try {\n const deviceTypes = JSON.parse(stdout.trim());\n return deviceTypes.devicetypes.map((type) => type.name);\n } catch (err) {\n throw new Error(`Unable to get list of device types: ${err.message}`);\n }\n};\n\n/**\n * Get the full list of runtimes, devicetypes, devices and pairs as Object\n *\n * @return {Object} Object containing device types, runtimes devices and pairs.\n * The resulting JSON will be like:\n * {\n * \"devicetypes\" : [\n * {\n * \"name\" : \"iPhone 4s\",\n * \"identifier\" : \"com.apple.CoreSimulator.SimDeviceType.iPhone-4s\"\n * },\n * ...\n * ],\n * \"runtimes\" : [\n * {\n * \"version\" : '13.0',\n * \"bundlePath\" : '/Applications/Xcode11beta4.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime',\n * \"isAvailable\" : true,\n * \"name\" : 'iOS 13.0',\n * \"identifier\" : 'com.apple.CoreSimulator.SimRuntime.iOS-13-0',\n * \"buildversion\" : '17A5534d'\n * },\n * ...\n * },\n * \"devices\" :\n * {\n * 'com.apple.CoreSimulator.SimRuntime.iOS-13-0': [ [Object], [Object] ] },\n * ...\n * },\n * \"pairs\" : {} }\n *\n * }\n * @throws {Error} If the corresponding simctl command fails\n */\ncommands.list = async function list () {\n const {stdout} = await this.exec('list', {\n args: ['-j'],\n });\n try {\n return JSON.parse(stdout.trim());\n } catch (e) {\n throw new Error(`Unable to parse simctl list: ${e.message}`);\n }\n};\n\nexport default commands;\n"],"mappings":"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"}
|
|
@@ -4,18 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
const commands = {};
|
|
11
9
|
|
|
12
10
|
function formatArg(name, value) {
|
|
13
11
|
const flt = parseFloat(value);
|
|
14
|
-
|
|
15
12
|
if (isNaN(flt)) {
|
|
16
13
|
throw new TypeError(`${name} must be a valid number, got '${value}' instead`);
|
|
17
14
|
}
|
|
18
|
-
|
|
19
15
|
return flt.toFixed(7);
|
|
20
16
|
}
|
|
21
17
|
|
|
@@ -32,7 +28,6 @@ commands.clearLocation = async function clearLocation() {
|
|
|
32
28
|
args: [this.requireUdid('location'), 'clear']
|
|
33
29
|
});
|
|
34
30
|
};
|
|
35
|
-
|
|
36
31
|
var _default = commands;
|
|
37
32
|
exports.default = _default;
|
|
38
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImZvcm1hdEFyZyIsIm5hbWUiLCJ2YWx1ZSIsImZsdCIsInBhcnNlRmxvYXQiLCJpc05hTiIsIlR5cGVFcnJvciIsInRvRml4ZWQiLCJzZXRMb2NhdGlvbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwibGF0IiwibG9uIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImNsZWFyTG9jYXRpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvbG9jYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBGb3JtYXRzIHRoZSBnaXZlbiBsb2NhdGlvbiBhcmd1bWVudCBmb3Igc2ltY3RsIHVzYWdlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQXJndW1lbnQgbmFtZVxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZSBMb2NhdGlvbiBhcmd1bWVudCB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ30gRm9ybWF0dGVkIHZhbHVlLCBmb3IgZXhhbXBsZSAtNzMuNzY4MjU0XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEFyZyAobmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgZmx0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gIGlmIChpc05hTihmbHQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgdmFsaWQgbnVtYmVyLCBnb3QgJyR7dmFsdWV9JyBpbnN0ZWFkYCk7XG4gIH1cbiAgcmV0dXJuIGZsdC50b0ZpeGVkKDcpO1xufVxuXG4vKipcbiAqIFNldCB0aGUgU2ltdWxhdG9yIGxvY2F0aW9uIHRvIGEgc3BlY2lmaWMgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZS5cbiAqIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSBYY29kZSAxNC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxhdGl0dWRlIExvY2F0aW9uIGxhdGl0dWRlIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxvbmdpdHVkZSBMb2NhdGlvbiBsb25naXR1ZGUgdmFsdWVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZS5cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgbm90IGEgdmFsaWQgdmFsdWUuXG4gKi9cbmNvbW1hbmRzLnNldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb24gKGxhdGl0dWRlLCBsb25naXR1ZGUpIHtcbiAgY29uc3QgbGF0ID0gZm9ybWF0QXJnKCdsYXRpdHVkZScsIGxhdGl0dWRlKTtcbiAgY29uc3QgbG9uID0gZm9ybWF0QXJnKCdsb25naXR1ZGUnLCBsb25naXR1ZGUpO1xuICBhd2FpdCB0aGlzLmV4ZWMoJ2xvY2F0aW9uJywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdsb2NhdGlvbicpLCAnc2V0JywgYCR7bGF0fSwke2xvbn1gXSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIFN0b3AgYW55IHJ1bm5pbmcgc2NlbmFyaW8gYW5kIGNsZWFyIGFueSBzaW11bGF0ZWQgbG9jYXRpb24uXG4gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBhdmFpbGFibGUgc2luY2UgWGNvZGUgMTQuXG4gKi9cbmNvbW1hbmRzLmNsZWFyTG9jYXRpb24gPSBhc3luYyBmdW5jdGlvbiBjbGVhckxvY2F0aW9uICgpIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdsb2NhdGlvbicsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgnbG9jYXRpb24nKSwgJ2NsZWFyJ10sXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsQ0FBQyxDQUFDOztBQVNuQixTQUFTQyxTQUFTLENBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFO0VBQy9CLE1BQU1DLEdBQUcsR0FBR0MsVUFBVSxDQUFDRixLQUFLLENBQUM7RUFDN0IsSUFBSUcsS0FBSyxDQUFDRixHQUFHLENBQUMsRUFBRTtJQUNkLE1BQU0sSUFBSUcsU0FBUyxDQUFFLEdBQUVMLElBQUssaUNBQWdDQyxLQUFNLFdBQVUsQ0FBQztFQUMvRTtFQUNBLE9BQU9DLEdBQUcsQ0FBQ0ksT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2Qjs7QUFZQVIsUUFBUSxDQUFDUyxXQUFXLEdBQUcsZUFBZUEsV0FBVyxDQUFFQyxRQUFRLEVBQUVDLFNBQVMsRUFBRTtFQUN0RSxNQUFNQyxHQUFHLEdBQUdYLFNBQVMsQ0FBQyxVQUFVLEVBQUVTLFFBQVEsQ0FBQztFQUMzQyxNQUFNRyxHQUFHLEdBQUdaLFNBQVMsQ0FBQyxXQUFXLEVBQUVVLFNBQVMsQ0FBQztFQUM3QyxNQUFNLElBQUksQ0FBQ0csSUFBSSxDQUFDLFVBQVUsRUFBRTtJQUMxQkMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFHLEdBQUVKLEdBQUksSUFBR0MsR0FBSSxFQUFDO0VBQzdELENBQUMsQ0FBQztBQUNKLENBQUM7O0FBTURiLFFBQVEsQ0FBQ2lCLGFBQWEsR0FBRyxlQUFlQSxhQUFhLEdBQUk7RUFDdkQsTUFBTSxJQUFJLENBQUNILElBQUksQ0FBQyxVQUFVLEVBQUU7SUFDMUJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU87RUFDOUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLGVBRWFoQixRQUFRO0FBQUEifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"location.js","names":["commands","formatArg","name","value","flt","parseFloat","isNaN","TypeError","toFixed","setLocation","latitude","longitude","lat","lon","exec","args","requireUdid","clearLocation"],"sources":["../../../lib/subcommands/location.js"],"sourcesContent":["const commands = {};\n\n/**\n * Formats the given location argument for simctl usage\n *\n * @param {string} name Argument name\n * @param {string|number} value Location argument value\n * @returns {string} Formatted value, for example -73.768254\n */\nfunction formatArg (name, value) {\n const flt = parseFloat(value);\n if (isNaN(flt)) {\n throw new TypeError(`${name} must be a valid number, got '${value}' instead`);\n }\n return flt.toFixed(7);\n}\n\n/**\n * Set the Simulator location to a specific latitude and longitude.\n * This functionality is only available since Xcode 14.\n *\n * @param {string|number} latitude Location latitude value\n * @param {string|number} longitude Location longitude value\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {TypeError} If any of the arguments is not a valid value.\n */\ncommands.setLocation = async function setLocation (latitude, longitude) {\n const lat = formatArg('latitude', latitude);\n const lon = formatArg('longitude', longitude);\n await this.exec('location', {\n args: [this.requireUdid('location'), 'set', `${lat},${lon}`],\n });\n};\n\n/**\n * Stop any running scenario and clear any simulated location.\n * This functionality is only available since Xcode 14.\n */\ncommands.clearLocation = async function clearLocation () {\n await this.exec('location', {\n args: [this.requireUdid('location'), 'clear'],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AASnB,SAASC,SAAS,CAAEC,IAAI,EAAEC,KAAK,EAAE;EAC/B,MAAMC,GAAG,GAAGC,UAAU,CAACF,KAAK,CAAC;EAC7B,IAAIG,KAAK,CAACF,GAAG,CAAC,EAAE;IACd,MAAM,IAAIG,SAAS,CAAE,GAAEL,IAAK,iCAAgCC,KAAM,WAAU,CAAC;EAC/E;EACA,OAAOC,GAAG,CAACI,OAAO,CAAC,CAAC,CAAC;AACvB;;AAYAR,QAAQ,CAACS,WAAW,GAAG,eAAeA,WAAW,CAAEC,QAAQ,EAAEC,SAAS,EAAE;EACtE,MAAMC,GAAG,GAAGX,SAAS,CAAC,UAAU,EAAES,QAAQ,CAAC;EAC3C,MAAMG,GAAG,GAAGZ,SAAS,CAAC,WAAW,EAAEU,SAAS,CAAC;EAC7C,MAAM,IAAI,CAACG,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAG,GAAEJ,GAAI,IAAGC,GAAI,EAAC;EAC7D,CAAC,CAAC;AACJ,CAAC;;AAMDb,QAAQ,CAACiB,aAAa,GAAG,eAAeA,aAAa,GAAI;EACvD,MAAM,IAAI,CAACH,IAAI,CAAC,UAAU,EAAE;IAC1BC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,UAAU,CAAC,EAAE,OAAO;EAC9C,CAAC,CAAC;AACJ,CAAC;AAAC,eAEahB,QAAQ;AAAA"}
|
|
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
const commands = {};
|
|
11
9
|
|
|
12
10
|
commands.openUrl = async function openUrl(url) {
|
|
@@ -14,7 +12,6 @@ commands.openUrl = async function openUrl(url) {
|
|
|
14
12
|
args: [this.requireUdid('openurl'), url]
|
|
15
13
|
});
|
|
16
14
|
};
|
|
17
|
-
|
|
18
15
|
var _default = commands;
|
|
19
16
|
exports.default = _default;
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsIm9wZW5VcmwiLCJ1cmwiLCJleGVjIiwiYXJncyIsInJlcXVpcmVVZGlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL29wZW51cmwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBPcGVuIFVSTCBzY2hlbWUgb24gU2ltdWxhdG9yLiBpT1Mgd2lsbCBhdXRvbWF0aWNhbGx5IHRyeVxuICogdG8gZmluZCBhIG1hdGNoaW5nIGFwcGxpY2F0aW9uLCB3aGljaCBzdXBwb3J0cyB0aGUgZ2l2ZW4gc2NoZW1lLlxuICogSXQgaXMgcmVxdWlyZWQgdGhhdCBTaW11bGF0b3IgaXMgaW4gX2Jvb3RlZF8gc3RhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgc2NoZW1lIHRvIG9wZW4sIGZvciBleGFtcGxlIGh0dHA6Ly9hcHBpb20uaW9cbiAqICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIG9wZW5lZCBieSB0aGUgYnVpbHQtaW4gbW9iaWxlIGJyb3dzZXIuXG4gKiBAcmV0dXJuIHtFeGVjUmVzdWx0fSBDb21tYW5kIGV4ZWN1dGlvbiByZXN1bHQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5vcGVuVXJsID0gYXN5bmMgZnVuY3Rpb24gb3BlblVybCAodXJsKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmV4ZWMoJ29wZW51cmwnLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ29wZW51cmwnKSwgdXJsXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7O0FBY25CQSxRQUFRLENBQUNDLE9BQU8sR0FBRyxlQUFlQSxPQUFPLENBQUVDLEdBQUcsRUFBRTtFQUM5QyxPQUFPLE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMsU0FBUyxFQUFFO0lBQ2hDQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRUgsR0FBRztFQUN6QyxDQUFDLENBQUM7QUFDSixDQUFDO0FBQUMsZUFFYUYsUUFBUTtBQUFBIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openurl.js","names":["commands","openUrl","url","exec","args","requireUdid"],"sources":["../../../lib/subcommands/openurl.js"],"sourcesContent":["const commands = {};\n\n/**\n * Open URL scheme on Simulator. iOS will automatically try\n * to find a matching application, which supports the given scheme.\n * It is required that Simulator is in _booted_ state.\n *\n * @param {string} url - The URL scheme to open, for example http://appiom.io\n * will be opened by the built-in mobile browser.\n * @return {ExecResult} Command execution result.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.openUrl = async function openUrl (url) {\n return await this.exec('openurl', {\n args: [this.requireUdid('openurl'), url],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AAcnBA,QAAQ,CAACC,OAAO,GAAG,eAAeA,OAAO,CAAEC,GAAG,EAAE;EAC9C,OAAO,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IAChCC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,SAAS,CAAC,EAAEH,GAAG;EACzC,CAAC,CAAC;AACJ,CAAC;AAAC,eAEaF,QAAQ;AAAA"}
|
|
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
const commands = {};
|
|
11
9
|
|
|
12
10
|
commands.setPasteboard = async function setPasteboard(content, encoding = 'utf8') {
|
|
@@ -22,7 +20,6 @@ commands.setPasteboard = async function setPasteboard(content, encoding = 'utf8'
|
|
|
22
20
|
stdin.end();
|
|
23
21
|
await exitCodeVerifier;
|
|
24
22
|
};
|
|
25
|
-
|
|
26
23
|
var _default = commands;
|
|
27
24
|
exports.default = _default;
|
|
28
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInNldFBhc3RlYm9hcmQiLCJjb250ZW50IiwiZW5jb2RpbmciLCJwYkNvcHlTdWJwcm9jZXNzIiwiZXhlYyIsImFyZ3MiLCJyZXF1aXJlVWRpZCIsImFzeW5jaHJvbm91cyIsInN0YXJ0IiwiZXhpdENvZGVWZXJpZmllciIsImpvaW4iLCJzdGRpbiIsInByb2MiLCJzZXRFbmNvZGluZyIsIndyaXRlIiwiZW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL3BiY29weS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFNldCB0aGUgY29udGVudCBvZiBTaW11bGF0b3IgcGFzdGVib2FyZC5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBzaW5jZSBYY29kZSBTREsgOC4xXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCAtIFRoZSBhY3R1YWwgc3RyaW5nIGNvbnRlbnQgdG8gYmUgc2V0LlxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nIFt1dGYnXSAtIFRoZSBlbmNvZGluZyBvZiB0aGUgZ2l2ZW4gcGFzdGVib2FyZCBjb250ZW50LlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURi04IGJ5IGRlZmF1bHQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGNvcnJlc3BvbmRpbmcgc2ltY3RsIHN1YmNvbW1hbmQgY29tbWFuZFxuICogICAgICAgICAgICAgICAgIHJldHVybnMgbm9uLXplcm8gcmV0dXJuIGNvZGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5zZXRQYXN0ZWJvYXJkID0gYXN5bmMgZnVuY3Rpb24gc2V0UGFzdGVib2FyZCAoY29udGVudCwgZW5jb2RpbmcgPSAndXRmOCcpIHtcbiAgY29uc3QgcGJDb3B5U3VicHJvY2VzcyA9IGF3YWl0IHRoaXMuZXhlYygncGJjb3B5Jywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdwYmNvcHknKV0sXG4gICAgYXN5bmNocm9ub3VzOiB0cnVlLFxuICB9KTtcbiAgYXdhaXQgcGJDb3B5U3VicHJvY2Vzcy5zdGFydCgwKTtcbiAgY29uc3QgZXhpdENvZGVWZXJpZmllciA9IHBiQ29weVN1YnByb2Nlc3Muam9pbigpO1xuICBjb25zdCBzdGRpbiA9IHBiQ29weVN1YnByb2Nlc3MucHJvYy5zdGRpbjtcbiAgc3RkaW4uc2V0RW5jb2RpbmcoZW5jb2RpbmcpO1xuICBzdGRpbi53cml0ZShjb250ZW50KTtcbiAgc3RkaW4uZW5kKCk7XG4gIGF3YWl0IGV4aXRDb2RlVmVyaWZpZXI7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7O0FBY25CQSxRQUFRLENBQUNDLGFBQWEsR0FBRyxlQUFlQSxhQUFhLENBQUVDLE9BQU8sRUFBRUMsUUFBUSxHQUFHLE1BQU0sRUFBRTtFQUNqRixNQUFNQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFFBQVEsRUFBRTtJQUNqREMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbENDLFlBQVksRUFBRTtFQUNoQixDQUFDLENBQUM7RUFDRixNQUFNSixnQkFBZ0IsQ0FBQ0ssS0FBSyxDQUFDLENBQUMsQ0FBQztFQUMvQixNQUFNQyxnQkFBZ0IsR0FBR04sZ0JBQWdCLENBQUNPLElBQUksRUFBRTtFQUNoRCxNQUFNQyxLQUFLLEdBQUdSLGdCQUFnQixDQUFDUyxJQUFJLENBQUNELEtBQUs7RUFDekNBLEtBQUssQ0FBQ0UsV0FBVyxDQUFDWCxRQUFRLENBQUM7RUFDM0JTLEtBQUssQ0FBQ0csS0FBSyxDQUFDYixPQUFPLENBQUM7RUFDcEJVLEtBQUssQ0FBQ0ksR0FBRyxFQUFFO0VBQ1gsTUFBTU4sZ0JBQWdCO0FBQ3hCLENBQUM7QUFBQyxlQUVhVixRQUFRO0FBQUEifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbcopy.js","names":["commands","setPasteboard","content","encoding","pbCopySubprocess","exec","args","requireUdid","asynchronous","start","exitCodeVerifier","join","stdin","proc","setEncoding","write","end"],"sources":["../../../lib/subcommands/pbcopy.js"],"sourcesContent":["const commands = {};\n\n/**\n * Set the content of Simulator pasteboard.\n * It is required that Simulator is in _booted_ state.\n *\n * @since Xcode SDK 8.1\n * @param {string} content - The actual string content to be set.\n * @param {string} encoding [utf'] - The encoding of the given pasteboard content.\n * UTF-8 by default.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.setPasteboard = async function setPasteboard (content, encoding = 'utf8') {\n const pbCopySubprocess = await this.exec('pbcopy', {\n args: [this.requireUdid('pbcopy')],\n asynchronous: true,\n });\n await pbCopySubprocess.start(0);\n const exitCodeVerifier = pbCopySubprocess.join();\n const stdin = pbCopySubprocess.proc.stdin;\n stdin.setEncoding(encoding);\n stdin.write(content);\n stdin.end();\n await exitCodeVerifier;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AAcnBA,QAAQ,CAACC,aAAa,GAAG,eAAeA,aAAa,CAAEC,OAAO,EAAEC,QAAQ,GAAG,MAAM,EAAE;EACjF,MAAMC,gBAAgB,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,QAAQ,EAAE;IACjDC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAClCC,YAAY,EAAE;EAChB,CAAC,CAAC;EACF,MAAMJ,gBAAgB,CAACK,KAAK,CAAC,CAAC,CAAC;EAC/B,MAAMC,gBAAgB,GAAGN,gBAAgB,CAACO,IAAI,EAAE;EAChD,MAAMC,KAAK,GAAGR,gBAAgB,CAACS,IAAI,CAACD,KAAK;EACzCA,KAAK,CAACE,WAAW,CAACX,QAAQ,CAAC;EAC3BS,KAAK,CAACG,KAAK,CAACb,OAAO,CAAC;EACpBU,KAAK,CAACI,GAAG,EAAE;EACX,MAAMN,gBAAgB;AACxB,CAAC;AAAC,eAEaV,QAAQ;AAAA"}
|
|
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
const commands = {};
|
|
11
9
|
|
|
12
10
|
commands.getPasteboard = async function getPasteboard(encoding = 'utf8') {
|
|
@@ -18,7 +16,6 @@ commands.getPasteboard = async function getPasteboard(encoding = 'utf8') {
|
|
|
18
16
|
});
|
|
19
17
|
return stdout;
|
|
20
18
|
};
|
|
21
|
-
|
|
22
19
|
var _default = commands;
|
|
23
20
|
exports.default = _default;
|
|
24
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdldFBhc3RlYm9hcmQiLCJlbmNvZGluZyIsInN0ZG91dCIsImV4ZWMiLCJhcmdzIiwicmVxdWlyZVVkaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvcGJwYXN0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEdldCB0aGUgY29udGVudCBvZiBTaW11bGF0b3IgcGFzdGVib2FyZC5cbiAqIEl0IGlzIHJlcXVpcmVkIHRoYXQgU2ltdWxhdG9yIGlzIGluIF9ib290ZWRfIHN0YXRlLlxuICpcbiAqIEBzaW5jZSBYY29kZSA4LjEgU0RLXG4gKiBAcGFyYW0ge3N0cmluZ30gZW5jb2RpbmcgWyd1dGYtOCddIC0gVGhlIGVuY29kaW5nIG9mIHRoZSByZXR1cm5lZCBwYXN0ZWJvYXJkIGNvbnRlbnQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGLTggYnkgZGVmYXVsdC5cbiAqIEByZXR1cm4ge3N0cmluZ30gQ3VycmVudCBjb250ZW50IG9mIFNpbXVsYXRvciBwYXN0ZWJvYXJkIG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY29ycmVzcG9uZGluZyBzaW1jdGwgc3ViY29tbWFuZCBjb21tYW5kXG4gKiAgICAgICAgICAgICAgICAgcmV0dXJucyBub24temVybyByZXR1cm4gY29kZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLmdldFBhc3RlYm9hcmQgPSBhc3luYyBmdW5jdGlvbiBnZXRQYXN0ZWJvYXJkIChlbmNvZGluZyA9ICd1dGY4Jykge1xuICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IHRoaXMuZXhlYygncGJwYXN0ZScsIHtcbiAgICBhcmdzOiBbdGhpcy5yZXF1aXJlVWRpZCgncGJwYXN0ZScpXSxcbiAgICBlbmNvZGluZyxcbiAgfSk7XG4gIHJldHVybiBzdGRvdXQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7O0FBY25CQSxRQUFRLENBQUNDLGFBQWEsR0FBRyxlQUFlQSxhQUFhLENBQUVDLFFBQVEsR0FBRyxNQUFNLEVBQUU7RUFDeEUsTUFBTTtJQUFDQztFQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFNBQVMsRUFBRTtJQUMxQ0MsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkNKO0VBQ0YsQ0FBQyxDQUFDO0VBQ0YsT0FBT0MsTUFBTTtBQUNmLENBQUM7QUFBQyxlQUVhSCxRQUFRO0FBQUEifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbpaste.js","names":["commands","getPasteboard","encoding","stdout","exec","args","requireUdid"],"sources":["../../../lib/subcommands/pbpaste.js"],"sourcesContent":["const commands = {};\n\n/**\n * Get the content of Simulator pasteboard.\n * It is required that Simulator is in _booted_ state.\n *\n * @since Xcode 8.1 SDK\n * @param {string} encoding ['utf-8'] - The encoding of the returned pasteboard content.\n * UTF-8 by default.\n * @return {string} Current content of Simulator pasteboard or an empty string.\n * @throws {Error} If the corresponding simctl subcommand command\n * returns non-zero return code.\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.getPasteboard = async function getPasteboard (encoding = 'utf8') {\n const {stdout} = await this.exec('pbpaste', {\n args: [this.requireUdid('pbpaste')],\n encoding,\n });\n return stdout;\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AAcnBA,QAAQ,CAACC,aAAa,GAAG,eAAeA,aAAa,CAAEC,QAAQ,GAAG,MAAM,EAAE;EACxE,MAAM;IAACC;EAAM,CAAC,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IAC1CC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,SAAS,CAAC,CAAC;IACnCJ;EACF,CAAC,CAAC;EACF,OAAOC,MAAM;AACf,CAAC;AAAC,eAEaH,QAAQ;AAAA"}
|
|
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
const commands = {};
|
|
11
9
|
|
|
12
10
|
commands.grantPermission = async function grantPermission(bundleId, perm) {
|
|
@@ -26,7 +24,6 @@ commands.resetPermission = async function resetPermission(bundleId, perm) {
|
|
|
26
24
|
args: [this.requireUdid('private reset'), 'reset', perm, bundleId]
|
|
27
25
|
});
|
|
28
26
|
};
|
|
29
|
-
|
|
30
27
|
var _default = commands;
|
|
31
28
|
exports.default = _default;
|
|
32
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsImdyYW50UGVybWlzc2lvbiIsImJ1bmRsZUlkIiwicGVybSIsImV4ZWMiLCJhcmdzIiwicmVxdWlyZVVkaWQiLCJyZXZva2VQZXJtaXNzaW9uIiwicmVzZXRQZXJtaXNzaW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N1YmNvbW1hbmRzL3ByaXZhY3kuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBHcmFudHMgdGhlIGdpdmVuIHBlcm1pc3Npb24gb24gdGhlIGFwcCB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllclxuICpcbiAqIEBzaW5jZSBYY29kZSAxMS40IFNES1xuICogQHBhcmFtIHtzdHJpbmd9IGJ1bmRsZUlkIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBhcHBsaWNhdGlvbiB3aG9zZVxuICogcHJpdmFjeSBzZXR0aW5ncyBhcmUgZ29pbmcgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHtzdHJpbmd9IHBlcm0gb25lIG9mIHBvc3NpYmxlIHBlcm1pc3Npb24gdmFsdWVzOlxuICogLSBhbGw6IEFwcGx5IHRoZSBhY3Rpb24gdG8gYWxsIHNlcnZpY2VzLlxuICogLSBjYWxlbmRhcjogQWxsb3cgYWNjZXNzIHRvIGNhbGVuZGFyLlxuICogLSBjb250YWN0cy1saW1pdGVkOiBBbGxvdyBhY2Nlc3MgdG8gYmFzaWMgY29udGFjdCBpbmZvLlxuICogLSBjb250YWN0czogQWxsb3cgYWNjZXNzIHRvIGZ1bGwgY29udGFjdCBkZXRhaWxzLlxuICogLSBsb2NhdGlvbjogQWxsb3cgYWNjZXNzIHRvIGxvY2F0aW9uIHNlcnZpY2VzIHdoZW4gYXBwIGlzIGluIHVzZS5cbiAqIC0gbG9jYXRpb24tYWx3YXlzOiBBbGxvdyBhY2Nlc3MgdG8gbG9jYXRpb24gc2VydmljZXMgYXQgYWxsIHRpbWVzLlxuICogLSBwaG90b3MtYWRkOiBBbGxvdyBhZGRpbmcgcGhvdG9zIHRvIHRoZSBwaG90byBsaWJyYXJ5LlxuICogLSBwaG90b3M6IEFsbG93IGZ1bGwgYWNjZXNzIHRvIHRoZSBwaG90byBsaWJyYXJ5LlxuICogLSBtZWRpYS1saWJyYXJ5OiBBbGxvdyBhY2Nlc3MgdG8gdGhlIG1lZGlhIGxpYnJhcnkuXG4gKiAtIG1pY3JvcGhvbmU6IEFsbG93IGFjY2VzcyB0byBhdWRpbyBpbnB1dC5cbiAqIC0gbW90aW9uOiBBbGxvdyBhY2Nlc3MgdG8gbW90aW9uIGFuZCBmaXRuZXNzIGRhdGEuXG4gKiAtIHJlbWluZGVyczogQWxsb3cgYWNjZXNzIHRvIHJlbWluZGVycy5cbiAqIC0gc2lyaTogQWxsb3cgdXNlIG9mIHRoZSBhcHAgd2l0aCBTaXJpLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBncmFudGluZyB0aGUgcGVybWlzc2lvblxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgdWRpZGAgaW5zdGFuY2UgcHJvcGVydHkgaXMgdW5zZXRcbiAqL1xuY29tbWFuZHMuZ3JhbnRQZXJtaXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gZ3JhbnRQZXJtaXNzaW9uIChidW5kbGVJZCwgcGVybSkge1xuICBhd2FpdCB0aGlzLmV4ZWMoJ3ByaXZhY3knLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ3ByaXZhY3kgZ3JhbnQnKSwgJ2dyYW50JywgcGVybSwgYnVuZGxlSWRdLFxuICB9KTtcbn07XG5cbi8qKlxuICogUmV2b2tlcyB0aGUgZ2l2ZW4gcGVybWlzc2lvbiBvbiB0aGUgYXBwIHdpdGggdGhlIGdpdmVuIGJ1bmRsZSBpZGVudGlmaWVyXG4gKiBhZnRlciBpdCBoYXMgYmVlbiBncmFudGVkXG4gKlxuICogQHNpbmNlIFhjb2RlIDExLjQgU0RLXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGFwcGxpY2F0aW9uIHdob3NlXG4gKiBwcml2YWN5IHNldHRpbmdzIGFyZSBnb2luZyB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gcGVybSBvbmUgb2YgcG9zc2libGUgcGVybWlzc2lvbiB2YWx1ZXMgKHNlZSBgZ3JhbnRQZXJtaXNzaW9uYClcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgY3VycmVudCBTREsgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb21tYW5kXG4gKiBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcmV2b2tpbmcgdGhlIHBlcm1pc3Npb25cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLnJldm9rZVBlcm1pc3Npb24gPSBhc3luYyBmdW5jdGlvbiByZXZva2VQZXJtaXNzaW9uIChidW5kbGVJZCwgcGVybSkge1xuICBhd2FpdCB0aGlzLmV4ZWMoJ3ByaXZhY3knLCB7XG4gICAgYXJnczogW3RoaXMucmVxdWlyZVVkaWQoJ3ByaXZhY3kgcmV2b2tlJyksICdyZXZva2UnLCBwZXJtLCBidW5kbGVJZF0sXG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXNldHMgdGhlIGdpdmVuIHBlcm1pc3Npb24gb24gdGhlIGFwcCB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllclxuICogdG8gaXRzIGRlZmF1bHQgc3RhdGVcbiAqXG4gKiBAc2luY2UgWGNvZGUgMTEuNCBTREtcbiAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCB0aGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24gd2hvc2VcbiAqIHByaXZhY3kgc2V0dGluZ3MgYXJlIGdvaW5nIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBwZXJtIG9uZSBvZiBwb3NzaWJsZSBwZXJtaXNzaW9uIHZhbHVlcyAoc2VlIGBncmFudFBlcm1pc3Npb25gKVxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IFNESyB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvbW1hbmRcbiAqIG9yIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSByZXNldHRpbmcgdGhlIHBlcm1pc3Npb25cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYHVkaWRgIGluc3RhbmNlIHByb3BlcnR5IGlzIHVuc2V0XG4gKi9cbmNvbW1hbmRzLnJlc2V0UGVybWlzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIHJlc2V0UGVybWlzc2lvbiAoYnVuZGxlSWQsIHBlcm0pIHtcbiAgYXdhaXQgdGhpcy5leGVjKCdwcml2YWN5Jywge1xuICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdwcml2YXRlIHJlc2V0JyksICdyZXNldCcsIHBlcm0sIGJ1bmRsZUlkXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxDQUFDLENBQUM7O0FBMEJuQkEsUUFBUSxDQUFDQyxlQUFlLEdBQUcsZUFBZUEsZUFBZSxDQUFFQyxRQUFRLEVBQUVDLElBQUksRUFBRTtFQUN6RSxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFNBQVMsRUFBRTtJQUN6QkMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFSCxJQUFJLEVBQUVELFFBQVE7RUFDbkUsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7QUFjREYsUUFBUSxDQUFDTyxnQkFBZ0IsR0FBRyxlQUFlQSxnQkFBZ0IsQ0FBRUwsUUFBUSxFQUFFQyxJQUFJLEVBQUU7RUFDM0UsTUFBTSxJQUFJLENBQUNDLElBQUksQ0FBQyxTQUFTLEVBQUU7SUFDekJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxFQUFFSCxJQUFJLEVBQUVELFFBQVE7RUFDckUsQ0FBQyxDQUFDO0FBQ0osQ0FBQzs7QUFjREYsUUFBUSxDQUFDUSxlQUFlLEdBQUcsZUFBZUEsZUFBZSxDQUFFTixRQUFRLEVBQUVDLElBQUksRUFBRTtFQUN6RSxNQUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLFNBQVMsRUFBRTtJQUN6QkMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFSCxJQUFJLEVBQUVELFFBQVE7RUFDbkUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUFDLGVBRWFGLFFBQVE7QUFBQSJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.js","names":["commands","grantPermission","bundleId","perm","exec","args","requireUdid","revokePermission","resetPermission"],"sources":["../../../lib/subcommands/privacy.js"],"sourcesContent":["const commands = {};\n\n/**\n * Grants the given permission on the app with the given bundle identifier\n *\n * @since Xcode 11.4 SDK\n * @param {string} bundleId the identifier of the application whose\n * privacy settings are going to be changed\n * @param {string} perm one of possible permission values:\n * - all: Apply the action to all services.\n * - calendar: Allow access to calendar.\n * - contacts-limited: Allow access to basic contact info.\n * - contacts: Allow access to full contact details.\n * - location: Allow access to location services when app is in use.\n * - location-always: Allow access to location services at all times.\n * - photos-add: Allow adding photos to the photo library.\n * - photos: Allow full access to the photo library.\n * - media-library: Allow access to the media library.\n * - microphone: Allow access to audio input.\n * - motion: Allow access to motion and fitness data.\n * - reminders: Allow access to reminders.\n * - siri: Allow use of the app with Siri.\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while granting the permission\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.grantPermission = async function grantPermission (bundleId, perm) {\n await this.exec('privacy', {\n args: [this.requireUdid('privacy grant'), 'grant', perm, bundleId],\n });\n};\n\n/**\n * Revokes the given permission on the app with the given bundle identifier\n * after it has been granted\n *\n * @since Xcode 11.4 SDK\n * @param {string} bundleId the identifier of the application whose\n * privacy settings are going to be changed\n * @param {string} perm one of possible permission values (see `grantPermission`)\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while revoking the permission\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.revokePermission = async function revokePermission (bundleId, perm) {\n await this.exec('privacy', {\n args: [this.requireUdid('privacy revoke'), 'revoke', perm, bundleId],\n });\n};\n\n/**\n * Resets the given permission on the app with the given bundle identifier\n * to its default state\n *\n * @since Xcode 11.4 SDK\n * @param {string} bundleId the identifier of the application whose\n * privacy settings are going to be changed\n * @param {string} perm one of possible permission values (see `grantPermission`)\n * @throws {Error} if the current SDK version does not support the command\n * or there was an error while resetting the permission\n * @throws {Error} If the `udid` instance property is unset\n */\ncommands.resetPermission = async function resetPermission (bundleId, perm) {\n await this.exec('privacy', {\n args: [this.requireUdid('private reset'), 'reset', perm, bundleId],\n });\n};\n\nexport default commands;\n"],"mappings":";;;;;;;AAAA,MAAMA,QAAQ,GAAG,CAAC,CAAC;;AA0BnBA,QAAQ,CAACC,eAAe,GAAG,eAAeA,eAAe,CAAEC,QAAQ,EAAEC,IAAI,EAAE;EACzE,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IACzBC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,eAAe,CAAC,EAAE,OAAO,EAAEH,IAAI,EAAED,QAAQ;EACnE,CAAC,CAAC;AACJ,CAAC;;AAcDF,QAAQ,CAACO,gBAAgB,GAAG,eAAeA,gBAAgB,CAAEL,QAAQ,EAAEC,IAAI,EAAE;EAC3E,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IACzBC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAEH,IAAI,EAAED,QAAQ;EACrE,CAAC,CAAC;AACJ,CAAC;;AAcDF,QAAQ,CAACQ,eAAe,GAAG,eAAeA,eAAe,CAAEN,QAAQ,EAAEC,IAAI,EAAE;EACzE,MAAM,IAAI,CAACC,IAAI,CAAC,SAAS,EAAE;IACzBC,IAAI,EAAE,CAAC,IAAI,CAACC,WAAW,CAAC,eAAe,CAAC,EAAE,OAAO,EAAEH,IAAI,EAAED,QAAQ;EACnE,CAAC,CAAC;AACJ,CAAC;AAAC,eAEaF,QAAQ;AAAA"}
|
|
@@ -1,35 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _rimraf = _interopRequireDefault(require("rimraf"));
|
|
13
|
-
|
|
14
10
|
var _uuid = require("uuid");
|
|
15
|
-
|
|
16
11
|
var _path = _interopRequireDefault(require("path"));
|
|
17
|
-
|
|
18
12
|
var _os = _interopRequireDefault(require("os"));
|
|
19
|
-
|
|
20
13
|
var _fs = _interopRequireDefault(require("fs"));
|
|
21
|
-
|
|
22
14
|
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
23
|
-
|
|
24
15
|
const commands = {};
|
|
25
|
-
|
|
26
16
|
const rimrafAsync = _bluebird.default.promisify(_rimraf.default);
|
|
27
|
-
|
|
28
17
|
const writeFileAsync = _bluebird.default.promisify(_fs.default.writeFile);
|
|
29
18
|
|
|
30
19
|
commands.pushNotification = async function pushNotification(payload) {
|
|
31
20
|
const dstPath = _path.default.resolve(_os.default.tmpdir(), `${(0, _uuid.v4)()}.json`);
|
|
32
|
-
|
|
33
21
|
try {
|
|
34
22
|
await writeFileAsync(dstPath, JSON.stringify(payload), 'utf8');
|
|
35
23
|
await this.exec('push', {
|
|
@@ -39,7 +27,6 @@ commands.pushNotification = async function pushNotification(payload) {
|
|
|
39
27
|
await rimrafAsync(dstPath);
|
|
40
28
|
}
|
|
41
29
|
};
|
|
42
|
-
|
|
43
30
|
var _default = commands;
|
|
44
31
|
exports.default = _default;
|
|
45
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kcyIsInJpbXJhZkFzeW5jIiwiQiIsInByb21pc2lmeSIsInJpbXJhZiIsIndyaXRlRmlsZUFzeW5jIiwiZnMiLCJ3cml0ZUZpbGUiLCJwdXNoTm90aWZpY2F0aW9uIiwicGF5bG9hZCIsImRzdFBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidXVpZFY0IiwiSlNPTiIsInN0cmluZ2lmeSIsImV4ZWMiLCJhcmdzIiwicmVxdWlyZVVkaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3ViY29tbWFuZHMvcHVzaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmltcmFmIGZyb20gJ3JpbXJhZic7XG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5jb25zdCByaW1yYWZBc3luYyA9IEIucHJvbWlzaWZ5KHJpbXJhZik7XG5jb25zdCB3cml0ZUZpbGVBc3luYyA9IEIucHJvbWlzaWZ5KGZzLndyaXRlRmlsZSk7XG5cbi8qKlxuICogU2VuZCBhIHNpbXVsYXRlZCBwdXNoIG5vdGlmaWNhdGlvblxuICpcbiAqIEBzaW5jZSBYY29kZSAxMS40IFNES1xuICogQHBhcmFtIHtPYmplY3R9IHBheWxvYWQgLSBUaGUgb2JqZWN0IHRoYXQgZGVzY3JpYmVzIEFwcGxlIHB1c2ggbm90aWZpY2F0aW9uIGNvbnRlbnQuXG4gKiBJdCBtdXN0IGNvbnRhaW4gYSB0b3AtbGV2ZWwgXCJTaW11bGF0b3IgVGFyZ2V0IEJ1bmRsZVwiIGtleSB3aXRoIGEgc3RyaW5nIHZhbHVlIG1hdGNoaW5nXG4gKiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9u4oCYcyBidW5kbGUgaWRlbnRpZmllciBhbmQgXCJhcHNcIiBrZXkgd2l0aCB2YWxpZCBBcHBsZSBQdXNoIE5vdGlmaWNhdGlvbiB2YWx1ZXMuXG4gKiBGb3IgZXhhbXBsZTpcbiAqIHtcbiAqICAgXCJTaW11bGF0b3IgVGFyZ2V0IEJ1bmRsZVwiOiBcImNvbS5hcHBsZS5QcmVmZXJlbmNlc1wiLFxuICogICBcImFwc1wiOiB7XG4gKiAgICAgXCJhbGVydFwiOiBcIlRoaXMgaXMgYSBzaW11bGF0ZWQgbm90aWZpY2F0aW9uIVwiLFxuICogICAgIFwiYmFkZ2VcIjogMyxcbiAqICAgICBcInNvdW5kXCI6IFwiZGVmYXVsdFwiXG4gKiAgIH1cbiAqIH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGUgY3VycmVudCBTREsgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb21tYW5kXG4gKiBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcHVzaGluZyB0aGUgbm90aWZpY2F0aW9uXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGB1ZGlkYCBpbnN0YW5jZSBwcm9wZXJ0eSBpcyB1bnNldFxuICovXG5jb21tYW5kcy5wdXNoTm90aWZpY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gcHVzaE5vdGlmaWNhdGlvbiAocGF5bG9hZCkge1xuICBjb25zdCBkc3RQYXRoID0gcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCBgJHt1dWlkVjQoKX0uanNvbmApO1xuICB0cnkge1xuICAgIGF3YWl0IHdyaXRlRmlsZUFzeW5jKGRzdFBhdGgsIEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLCAndXRmOCcpO1xuICAgIGF3YWl0IHRoaXMuZXhlYygncHVzaCcsIHtcbiAgICAgIGFyZ3M6IFt0aGlzLnJlcXVpcmVVZGlkKCdwdXNoJyksIGRzdFBhdGhdLFxuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJpbXJhZkFzeW5jKGRzdFBhdGgpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLE1BQU1DLFdBQVcsR0FBR0MsaUJBQUMsQ0FBQ0MsU0FBUyxDQUFDQyxlQUFNLENBQUM7QUFDdkMsTUFBTUMsY0FBYyxHQUFHSCxpQkFBQyxDQUFDQyxTQUFTLENBQUNHLFdBQUUsQ0FBQ0MsU0FBUyxDQUFDOztBQXNCaERQLFFBQVEsQ0FBQ1EsZ0JBQWdCLEdBQUcsZUFBZUEsZ0JBQWdCLENBQUVDLE9BQU8sRUFBRTtFQUNwRSxNQUFNQyxPQUFPLEdBQUdDLGFBQUksQ0FBQ0MsT0FBTyxDQUFDQyxXQUFFLENBQUNDLE1BQU0sRUFBRSxFQUFHLEdBQUUsSUFBQUMsUUFBTSxHQUFHLE9BQU0sQ0FBQztFQUM3RCxJQUFJO0lBQ0YsTUFBTVYsY0FBYyxDQUFDSyxPQUFPLEVBQUVNLElBQUksQ0FBQ0MsU0FBUyxDQUFDUixPQUFPLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDOUQsTUFBTSxJQUFJLENBQUNTLElBQUksQ0FBQyxNQUFNLEVBQUU7TUFDdEJDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ0MsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFVixPQUFPO0lBQzFDLENBQUMsQ0FBQztFQUNKLENBQUMsU0FBUztJQUNSLE1BQU1ULFdBQVcsQ0FBQ1MsT0FBTyxDQUFDO0VBQzVCO0FBQ0YsQ0FBQztBQUFDLGVBRWFWLFFBQVE7QUFBQSJ9
|