appium-android-driver 6.0.1 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +3 -105
- package/build/lib/commands/actions.d.ts +0 -1
- package/build/lib/commands/actions.d.ts.map +1 -1
- package/build/lib/commands/actions.js +14 -139
- package/build/lib/commands/actions.js.map +1 -1
- package/build/lib/commands/context.d.ts.map +1 -1
- package/build/lib/commands/context.js +0 -1
- package/build/lib/commands/context.js.map +1 -1
- package/build/lib/commands/element.d.ts +0 -1
- package/build/lib/commands/element.d.ts.map +1 -1
- package/build/lib/commands/element.js +14 -48
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/execute.d.ts.map +1 -1
- package/build/lib/commands/execute.js +0 -1
- package/build/lib/commands/execute.js.map +1 -1
- package/build/lib/commands/find.d.ts.map +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/general.d.ts +0 -1
- package/build/lib/commands/general.d.ts.map +1 -1
- package/build/lib/commands/general.js +6 -11
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/commands/index.d.ts +23 -23
- package/build/lib/commands/mixins.d.ts +2 -6
- package/build/lib/commands/mixins.d.ts.map +1 -1
- package/build/lib/commands/mixins.js.map +1 -1
- package/build/lib/commands/network.d.ts.map +1 -1
- package/build/lib/commands/network.js +27 -55
- package/build/lib/commands/network.js.map +1 -1
- package/build/lib/commands/performance.d.ts +4 -4
- package/build/lib/commands/performance.d.ts.map +1 -1
- package/build/lib/commands/performance.js +0 -4
- package/build/lib/commands/performance.js.map +1 -1
- package/build/lib/commands/touch.d.ts +0 -1
- package/build/lib/commands/touch.d.ts.map +1 -1
- package/build/lib/commands/touch.js +1 -15
- package/build/lib/commands/touch.js.map +1 -1
- package/build/lib/constraints.d.ts +0 -9
- package/build/lib/constraints.d.ts.map +1 -1
- package/build/lib/constraints.js +0 -9
- package/build/lib/constraints.js.map +1 -1
- package/build/lib/driver.d.ts +2 -50
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +1 -476
- package/build/lib/driver.js.map +1 -1
- package/build/lib/helpers/android.d.ts +0 -2
- package/build/lib/helpers/android.d.ts.map +1 -1
- package/build/lib/helpers/android.js +0 -2
- package/build/lib/helpers/android.js.map +1 -1
- package/build/lib/helpers/webview.js.map +1 -1
- package/build/lib/stubs.d.ts +0 -1
- package/build/lib/stubs.d.ts.map +1 -1
- package/build/lib/stubs.js +0 -1
- package/build/lib/stubs.js.map +1 -1
- package/build/lib/utils.d.ts +3 -4
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +3 -4
- package/build/lib/utils.js.map +1 -1
- package/lib/commands/actions.js +15 -163
- package/lib/commands/context.js +0 -1
- package/lib/commands/element.js +14 -68
- package/lib/commands/execute.js +0 -1
- package/lib/commands/find.ts +1 -2
- package/lib/commands/general.js +6 -11
- package/lib/commands/mixins.ts +0 -6
- package/lib/commands/network.js +28 -61
- package/lib/commands/performance.js +0 -4
- package/lib/commands/touch.js +1 -20
- package/lib/constraints.ts +0 -9
- package/lib/driver.ts +7 -595
- package/lib/helpers/android.ts +0 -4
- package/lib/helpers/webview.ts +1 -1
- package/lib/stubs.ts +0 -1
- package/lib/utils.js +4 -5
- package/package.json +1 -4
- package/bootstrap/README.md +0 -19
- package/bootstrap/bin/AppiumBootstrap.jar +0 -0
- package/build/lib/bootstrap.d.ts +0 -29
- package/build/lib/bootstrap.d.ts.map +0 -1
- package/build/lib/bootstrap.js +0 -213
- package/build/lib/bootstrap.js.map +0 -1
- package/build/lib/uiautomator.d.ts +0 -24
- package/build/lib/uiautomator.d.ts.map +0 -1
- package/build/lib/uiautomator.js +0 -102
- package/build/lib/uiautomator.js.map +0 -1
- package/lib/bootstrap.js +0 -227
- package/lib/uiautomator.js +0 -109
package/build/lib/driver.js
CHANGED
|
@@ -5,36 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.AndroidDriver = exports.androidCommands = void 0;
|
|
8
|
-
const support_1 = require("@appium/support");
|
|
9
|
-
const appium_adb_1 = require("appium-adb");
|
|
10
|
-
const driver_1 = require("appium/driver");
|
|
11
|
-
const asyncbox_1 = require("asyncbox");
|
|
12
|
-
const bluebird_1 = __importDefault(require("bluebird"));
|
|
13
8
|
const lodash_1 = __importDefault(require("lodash"));
|
|
14
|
-
const
|
|
9
|
+
const driver_1 = require("appium/driver");
|
|
15
10
|
const constraints_1 = __importDefault(require("./constraints"));
|
|
16
11
|
const helpers_1 = require("./helpers");
|
|
17
12
|
const method_map_1 = require("./method-map");
|
|
18
|
-
const APP_EXTENSION = '.apk';
|
|
19
|
-
const DEVICE_PORT = 4724;
|
|
20
|
-
/**
|
|
21
|
-
* This is a set of methods and paths that we never want to proxy to
|
|
22
|
-
* Chromedriver
|
|
23
|
-
**/
|
|
24
|
-
const NO_PROXY = [
|
|
25
|
-
['POST', new RegExp('^/session/[^/]+/context')],
|
|
26
|
-
['GET', new RegExp('^/session/[^/]+/context')],
|
|
27
|
-
['POST', new RegExp('^/session/[^/]+/appium')],
|
|
28
|
-
['GET', new RegExp('^/session/[^/]+/appium')],
|
|
29
|
-
['POST', new RegExp('^/session/[^/]+/touch/perform')],
|
|
30
|
-
['POST', new RegExp('^/session/[^/]+/touch/multi/perform')],
|
|
31
|
-
['POST', new RegExp('^/session/[^/]+/orientation')],
|
|
32
|
-
['GET', new RegExp('^/session/[^/]+/orientation')],
|
|
33
|
-
['POST', new RegExp('^/session/[^/]+/execute')],
|
|
34
|
-
['POST', new RegExp('^/session/[^/]+/execute/sync')],
|
|
35
|
-
['GET', new RegExp('^/session/[^/]+/network_connection')],
|
|
36
|
-
['POST', new RegExp('^/session/[^/]+/network_connection')],
|
|
37
|
-
];
|
|
38
13
|
class AndroidDriver extends driver_1.BaseDriver {
|
|
39
14
|
constructor(opts = {}, shouldValidateCaps = true) {
|
|
40
15
|
super(opts, shouldValidateCaps);
|
|
@@ -48,467 +23,17 @@ class AndroidDriver extends driver_1.BaseDriver {
|
|
|
48
23
|
this.desiredCapConstraints = lodash_1.default.cloneDeep(constraints_1.default);
|
|
49
24
|
this.sessionChromedrivers = {};
|
|
50
25
|
this.jwpProxyActive = false;
|
|
51
|
-
this.jwpProxyAvoid = lodash_1.default.clone(NO_PROXY);
|
|
52
|
-
this.settings = new driver_1.DeviceSettings({ ignoreUnimportantViews: false }, this.onSettingsUpdate.bind(this));
|
|
53
26
|
this.apkStrings = {};
|
|
54
27
|
this.unlocker = helpers_1.helpers.unlocker;
|
|
55
28
|
this.curContext = this.defaultContextName();
|
|
56
29
|
this.opts = opts;
|
|
57
30
|
}
|
|
58
|
-
async createSession(w3cCaps1, w3cCaps2, w3cCaps3, driverData) {
|
|
59
|
-
// the whole createSession flow is surrounded in a try-catch statement
|
|
60
|
-
// if creating a session fails at any point, we teardown everything we
|
|
61
|
-
// set up before throwing the error.
|
|
62
|
-
try {
|
|
63
|
-
const [sessionId, caps] = (await super.createSession(w3cCaps1, w3cCaps2, w3cCaps3, driverData));
|
|
64
|
-
const serverDetails = {
|
|
65
|
-
platform: 'LINUX',
|
|
66
|
-
webStorageEnabled: false,
|
|
67
|
-
takesScreenshot: true,
|
|
68
|
-
javascriptEnabled: true,
|
|
69
|
-
databaseEnabled: false,
|
|
70
|
-
networkConnectionEnabled: true,
|
|
71
|
-
locationContextEnabled: false,
|
|
72
|
-
warnings: {},
|
|
73
|
-
desired: this.caps,
|
|
74
|
-
};
|
|
75
|
-
this.caps = Object.assign(serverDetails, this.caps);
|
|
76
|
-
// assigning defaults
|
|
77
|
-
const defaultOpts = {
|
|
78
|
-
action: 'android.intent.action.MAIN',
|
|
79
|
-
category: 'android.intent.category.LAUNCHER',
|
|
80
|
-
flags: '0x10200000',
|
|
81
|
-
disableAndroidWatchers: false,
|
|
82
|
-
tmpDir: await support_1.tempDir.staticDir(),
|
|
83
|
-
fullReset: false,
|
|
84
|
-
autoLaunch: true,
|
|
85
|
-
adbPort: appium_adb_1.DEFAULT_ADB_PORT,
|
|
86
|
-
bootstrapPort: DEVICE_PORT,
|
|
87
|
-
androidInstallTimeout: 90000,
|
|
88
|
-
};
|
|
89
|
-
this.opts = { ...defaultOpts, ...this.opts };
|
|
90
|
-
this.useUnlockHelperApp = lodash_1.default.isUndefined(this.caps.unlockType);
|
|
91
|
-
if (this.isChromeSession) {
|
|
92
|
-
helpers_1.helpers.adjustBrowserSessionCaps(this.opts);
|
|
93
|
-
}
|
|
94
|
-
if (this.opts.nativeWebScreenshot) {
|
|
95
|
-
this.jwpProxyAvoid.push(['GET', new RegExp('^/session/[^/]+/screenshot')]);
|
|
96
|
-
}
|
|
97
|
-
// @ts-expect-error do not put arbitrary properties on opts
|
|
98
|
-
if (this.opts.reboot) {
|
|
99
|
-
this.setAvdFromCapabilities(caps);
|
|
100
|
-
}
|
|
101
|
-
// get device udid for this session
|
|
102
|
-
const { udid, emPort } = await helpers_1.helpers.getDeviceInfoFromCaps(this.opts);
|
|
103
|
-
this.opts.udid = udid;
|
|
104
|
-
// @ts-expect-error do not put arbitrary properties on opts
|
|
105
|
-
this.opts.emPort = emPort;
|
|
106
|
-
// set up an instance of ADB
|
|
107
|
-
this.adb = await helpers_1.helpers.createADB({
|
|
108
|
-
udid: this.opts.udid,
|
|
109
|
-
// @ts-expect-error: unknown
|
|
110
|
-
emPort: this.opts.emPort,
|
|
111
|
-
adbPort: this.opts.adbPort,
|
|
112
|
-
suppressKillServer: this.opts.suppressKillServer,
|
|
113
|
-
remoteAdbHost: this.opts.remoteAdbHost,
|
|
114
|
-
clearDeviceLogsOnStart: this.opts.clearDeviceLogsOnStart,
|
|
115
|
-
adbExecTimeout: this.opts.adbExecTimeout,
|
|
116
|
-
allowOfflineDevices: this.opts.allowOfflineDevices,
|
|
117
|
-
});
|
|
118
|
-
if ((await this.adb.getApiLevel()) >= 23) {
|
|
119
|
-
this.log.warn("Consider setting 'automationName' capability to " +
|
|
120
|
-
"'uiautomator2' on Android >= 6, since UIAutomator framework " +
|
|
121
|
-
'is not maintained anymore by the OS vendor.');
|
|
122
|
-
}
|
|
123
|
-
// @ts-expect-error no arbitrary props on opts
|
|
124
|
-
if (this.helpers.isPackageOrBundle(this.opts.app)) {
|
|
125
|
-
// user provided package instead of app for 'app' capability, massage options
|
|
126
|
-
this.opts.appPackage = this.opts.app;
|
|
127
|
-
// @ts-expect-error no arbitrary props on opts
|
|
128
|
-
this.opts.app = null;
|
|
129
|
-
}
|
|
130
|
-
if (this.opts.app) {
|
|
131
|
-
// find and copy, or download and unzip an app url or path
|
|
132
|
-
this.opts.app = await this.helpers.configureApp(this.opts.app, APP_EXTENSION);
|
|
133
|
-
await this.checkAppPresent();
|
|
134
|
-
}
|
|
135
|
-
else if (this.appOnDevice) {
|
|
136
|
-
// the app isn't an actual app file but rather something we want to
|
|
137
|
-
// assume is on the device and just launch via the appPackage
|
|
138
|
-
this.log.info(`App file was not listed, instead we're going to run ` +
|
|
139
|
-
`${this.opts.appPackage} directly on the device`);
|
|
140
|
-
await this.checkPackagePresent();
|
|
141
|
-
}
|
|
142
|
-
// Some cloud services using appium launch the avd themselves, so we ensure netspeed
|
|
143
|
-
// is set for emulators by calling adb.networkSpeed before running the app
|
|
144
|
-
if (support_1.util.hasValue(this.opts.networkSpeed)) {
|
|
145
|
-
if (!this.isEmulator()) {
|
|
146
|
-
this.log.warn('Sorry, networkSpeed capability is only available for emulators');
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
const networkSpeed = (0, helpers_1.ensureNetworkSpeed)(this.adb, this.opts.networkSpeed);
|
|
150
|
-
await this.adb.networkSpeed(networkSpeed);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
// check if we have to enable/disable gps before running the application
|
|
154
|
-
if (support_1.util.hasValue(this.opts.gpsEnabled)) {
|
|
155
|
-
if (this.isEmulator()) {
|
|
156
|
-
this.log.info(`Trying to ${this.opts.gpsEnabled ? 'enable' : 'disable'} gps location provider`);
|
|
157
|
-
await this.adb.toggleGPSLocationProvider(this.opts.gpsEnabled);
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
this.log.warn('Sorry! gpsEnabled capability is only available for emulators');
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
await this.startAndroidSession(this.opts);
|
|
164
|
-
return [sessionId, this.caps];
|
|
165
|
-
}
|
|
166
|
-
catch (e) {
|
|
167
|
-
// ignoring delete session exception if any and throw the real error
|
|
168
|
-
// that happened while creating the session.
|
|
169
|
-
try {
|
|
170
|
-
await this.deleteSession();
|
|
171
|
-
}
|
|
172
|
-
catch (ign) { }
|
|
173
|
-
throw e;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
31
|
isEmulator() {
|
|
177
32
|
return helpers_1.helpers.isEmulator(this.adb, this.opts);
|
|
178
33
|
}
|
|
179
|
-
setAvdFromCapabilities(caps) {
|
|
180
|
-
if (this.opts.avd) {
|
|
181
|
-
this.log.info('avd name defined, ignoring device name and platform version');
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
if (!caps.deviceName) {
|
|
185
|
-
this.log.errorAndThrow('avd or deviceName should be specified when reboot option is enables');
|
|
186
|
-
throw new Error(); // unreachable
|
|
187
|
-
}
|
|
188
|
-
if (!caps.platformVersion) {
|
|
189
|
-
this.log.errorAndThrow('avd or platformVersion should be specified when reboot option is enabled');
|
|
190
|
-
throw new Error(); // unreachable
|
|
191
|
-
}
|
|
192
|
-
const avdDevice = caps.deviceName.replace(/[^a-zA-Z0-9_.]/g, '-');
|
|
193
|
-
this.opts.avd = `${avdDevice}__${caps.platformVersion}`;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
get appOnDevice() {
|
|
197
|
-
return (
|
|
198
|
-
// @ts-expect-error no arbitrary props on opts
|
|
199
|
-
this.helpers.isPackageOrBundle(this.opts.app) ||
|
|
200
|
-
// @ts-expect-error no arbitrary props on opts
|
|
201
|
-
(!this.opts.app && this.helpers.isPackageOrBundle(this.opts.appPackage)));
|
|
202
|
-
}
|
|
203
34
|
get isChromeSession() {
|
|
204
35
|
return helpers_1.helpers.isChromeBrowser(String(this.opts.browserName));
|
|
205
36
|
}
|
|
206
|
-
async onSettingsUpdate(key, value) {
|
|
207
|
-
if (key === 'ignoreUnimportantViews') {
|
|
208
|
-
await this.setCompressedLayoutHierarchy(value);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
212
|
-
async startAndroidSession(opts) {
|
|
213
|
-
this.log.info(`Starting Android session`);
|
|
214
|
-
// set up the device to run on (real or emulator, etc)
|
|
215
|
-
this.defaultIME = (await helpers_1.helpers.initDevice(this.adb, this.opts));
|
|
216
|
-
// set actual device name, udid, platform version, screen size, model and manufacturer details.
|
|
217
|
-
this.caps.deviceName = this.adb.curDeviceId;
|
|
218
|
-
// @ts-expect-error do not put arbitrary properties on caps
|
|
219
|
-
this.caps.deviceUDID = this.opts.udid;
|
|
220
|
-
this.caps.platformVersion = await this.adb.getPlatformVersion();
|
|
221
|
-
// @ts-expect-error do not put arbitrary properties on caps
|
|
222
|
-
this.caps.deviceScreenSize = await this.adb.getScreenSize();
|
|
223
|
-
// @ts-expect-error do not put arbitrary properties on caps
|
|
224
|
-
this.caps.deviceModel = await this.adb.getModel();
|
|
225
|
-
// @ts-expect-error do not put arbitrary properties on caps
|
|
226
|
-
this.caps.deviceManufacturer = await this.adb.getManufacturer();
|
|
227
|
-
if (this.opts.disableWindowAnimation) {
|
|
228
|
-
if (await this.adb.isAnimationOn()) {
|
|
229
|
-
if ((await this.adb.getApiLevel()) >= 28) {
|
|
230
|
-
// API level 28 is Android P
|
|
231
|
-
// Don't forget to reset the relaxing in delete session
|
|
232
|
-
this.log.warn('Relaxing hidden api policy to manage animation scale');
|
|
233
|
-
await this.adb.setHiddenApiPolicy('1', !!this.opts.ignoreHiddenApiPolicyError);
|
|
234
|
-
}
|
|
235
|
-
this.log.info('Disabling window animation as it is requested by "disableWindowAnimation" capability');
|
|
236
|
-
await this.adb.setAnimationState(false);
|
|
237
|
-
this._wasWindowAnimationDisabled = true;
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
this.log.info('Window animation is already disabled');
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
// set up app under test
|
|
244
|
-
await this.initAUT();
|
|
245
|
-
// start UiAutomator
|
|
246
|
-
const bootstrap = (this.bootstrap = new helpers_1.helpers.bootstrap(this.adb, this.opts.bootstrapPort,
|
|
247
|
-
// @ts-expect-error do not put arbitrary properties on opts
|
|
248
|
-
this.opts.websocket));
|
|
249
|
-
await bootstrap.start(this.opts.appPackage, this.opts.disableAndroidWatchers, this.opts.acceptSslCerts);
|
|
250
|
-
// handling unexpected shutdown
|
|
251
|
-
(async () => {
|
|
252
|
-
try {
|
|
253
|
-
await bootstrap.onUnexpectedShutdown;
|
|
254
|
-
}
|
|
255
|
-
catch (err) {
|
|
256
|
-
if (!bootstrap.ignoreUnexpectedShutdown) {
|
|
257
|
-
await this.startUnexpectedShutdown(err);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
})();
|
|
261
|
-
if (this.opts.skipUnlock) {
|
|
262
|
-
this.log.info('Skipping lockscreen check');
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
this.log.info('Checking for lockscreen presence. ' +
|
|
266
|
-
`This could be skipped by setting the 'appium:skipUnlock' capability to true.`);
|
|
267
|
-
await helpers_1.helpers.unlock(this, this.adb, this.caps);
|
|
268
|
-
}
|
|
269
|
-
// Set CompressedLayoutHierarchy on the device based on current settings object
|
|
270
|
-
// this has to happen _after_ bootstrap is initialized
|
|
271
|
-
if (this.opts.ignoreUnimportantViews) {
|
|
272
|
-
await this.settings.update({
|
|
273
|
-
ignoreUnimportantViews: this.opts.ignoreUnimportantViews,
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
if (this.isChromeSession) {
|
|
277
|
-
// start a chromedriver session and proxy to it
|
|
278
|
-
await this.startChromeSession();
|
|
279
|
-
}
|
|
280
|
-
else {
|
|
281
|
-
if (this.opts.autoLaunch) {
|
|
282
|
-
// start app
|
|
283
|
-
await this.startAUT();
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
if (support_1.util.hasValue(this.opts.orientation)) {
|
|
287
|
-
this.log.debug(`Setting initial orientation to '${this.opts.orientation}'`);
|
|
288
|
-
// @ts-expect-error no arbitrary props on opts
|
|
289
|
-
await this.setOrientation(this.opts.orientation);
|
|
290
|
-
}
|
|
291
|
-
await this.initAutoWebview();
|
|
292
|
-
}
|
|
293
|
-
async initAutoWebview() {
|
|
294
|
-
if (this.opts.autoWebview) {
|
|
295
|
-
const viewName = this.defaultWebviewName();
|
|
296
|
-
const timeout = this.opts.autoWebviewTimeout || 2000;
|
|
297
|
-
this.log.info(`Setting auto webview to context '${viewName}' with timeout ${timeout}ms`);
|
|
298
|
-
// try every 500ms until timeout is over
|
|
299
|
-
await (0, asyncbox_1.retryInterval)(timeout / 500, 500, async () => {
|
|
300
|
-
await this.setContext(viewName);
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
async initAUT() {
|
|
305
|
-
// populate appPackage, appActivity, appWaitPackage, appWaitActivity,
|
|
306
|
-
// and the device being used
|
|
307
|
-
// in the opts and caps (so it gets back to the user on session creation)
|
|
308
|
-
const launchInfo = await helpers_1.helpers.getLaunchInfo(this.adb, this.opts);
|
|
309
|
-
Object.assign(this.opts, launchInfo);
|
|
310
|
-
Object.assign(this.caps, launchInfo);
|
|
311
|
-
// Uninstall any uninstallOtherPackages which were specified in caps
|
|
312
|
-
if (this.opts.uninstallOtherPackages) {
|
|
313
|
-
helpers_1.helpers.validateDesiredCaps(this.opts);
|
|
314
|
-
// Only SETTINGS_HELPER_PKG_ID package is used by UIA1
|
|
315
|
-
await helpers_1.helpers.uninstallOtherPackages(this.adb, helpers_1.helpers.parseArray(this.opts.uninstallOtherPackages), [helpers_1.SETTINGS_HELPER_PKG_ID]);
|
|
316
|
-
}
|
|
317
|
-
// Install any "otherApps" that were specified in caps
|
|
318
|
-
if (this.opts.otherApps) {
|
|
319
|
-
/** @type {string[]} */
|
|
320
|
-
let otherApps;
|
|
321
|
-
try {
|
|
322
|
-
otherApps = helpers_1.helpers.parseArray(this.opts.otherApps);
|
|
323
|
-
}
|
|
324
|
-
catch (e) {
|
|
325
|
-
this.log.errorAndThrow(`Could not parse "otherApps" capability: ${e.message}`);
|
|
326
|
-
return; // unreachable
|
|
327
|
-
}
|
|
328
|
-
otherApps = await bluebird_1.default.all(otherApps.map((app) => this.helpers.configureApp(app, APP_EXTENSION)));
|
|
329
|
-
await helpers_1.helpers.installOtherApks(otherApps, this.adb, this.opts);
|
|
330
|
-
}
|
|
331
|
-
// install app
|
|
332
|
-
if (!this.opts.app) {
|
|
333
|
-
if (this.opts.fullReset) {
|
|
334
|
-
this.log.errorAndThrow('Full reset requires an app capability, use fastReset if app is not provided');
|
|
335
|
-
}
|
|
336
|
-
this.log.debug('No app capability. Assuming it is already on the device');
|
|
337
|
-
if (this.opts.fastReset) {
|
|
338
|
-
await helpers_1.helpers.resetApp(this.adb, this.opts);
|
|
339
|
-
}
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
if (!this.opts.skipUninstall) {
|
|
343
|
-
await this.adb.uninstallApk(this.opts.appPackage);
|
|
344
|
-
}
|
|
345
|
-
await helpers_1.helpers.installApk(this.adb, this.opts);
|
|
346
|
-
const apkStringsForLanguage = await helpers_1.helpers.pushStrings(this.opts.language, this.adb, this.opts);
|
|
347
|
-
if (this.opts.language) {
|
|
348
|
-
this.apkStrings[this.opts.language] = apkStringsForLanguage;
|
|
349
|
-
}
|
|
350
|
-
// This must run after installing the apk, otherwise it would cause the
|
|
351
|
-
// install to fail. And before running the app.
|
|
352
|
-
if (!lodash_1.default.isUndefined(this.opts.sharedPreferences)) {
|
|
353
|
-
await this.setSharedPreferences(this.opts);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
async checkAppPresent() {
|
|
357
|
-
this.log.debug('Checking whether app is actually present');
|
|
358
|
-
// @ts-expect-error do not put arbitrary properties on opts
|
|
359
|
-
if (!(await support_1.fs.exists(this.opts.app))) {
|
|
360
|
-
this.log.errorAndThrow(`Could not find app apk at ${this.opts.app}`);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
async checkPackagePresent() {
|
|
364
|
-
this.log.debug('Checking whether package is present on the device');
|
|
365
|
-
if (!(await this.adb.shell(['pm', 'list', 'packages', String(this.opts.appPackage)]))) {
|
|
366
|
-
this.log.errorAndThrow(`Could not find package ${this.opts.appPackage} on the device`);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
* Set CompressedLayoutHierarchy on the device
|
|
371
|
-
* @privateRemarks FIXME: unknown param type
|
|
372
|
-
*/
|
|
373
|
-
async setCompressedLayoutHierarchy(compress) {
|
|
374
|
-
await this.bootstrap.sendAction('compressedLayoutHierarchy', { compressLayout: compress });
|
|
375
|
-
}
|
|
376
|
-
async deleteSession() {
|
|
377
|
-
this.log.debug('Shutting down Android driver');
|
|
378
|
-
try {
|
|
379
|
-
if (!lodash_1.default.isEmpty(this._screenRecordingProperties)) {
|
|
380
|
-
await this.stopRecordingScreen();
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
catch (ign) { }
|
|
384
|
-
await helpers_1.helpers.removeAllSessionWebSocketHandlers(this.server, this.sessionId);
|
|
385
|
-
await this.mobileStopScreenStreaming();
|
|
386
|
-
await super.deleteSession();
|
|
387
|
-
if (this.bootstrap) {
|
|
388
|
-
// certain cleanup we only care to do if the bootstrap was ever run
|
|
389
|
-
await this.stopChromedriverProxies();
|
|
390
|
-
if (this.opts.unicodeKeyboard && this.opts.resetKeyboard && this.defaultIME) {
|
|
391
|
-
this.log.debug(`Resetting IME to ${this.defaultIME}`);
|
|
392
|
-
await this.adb?.setIME(this.defaultIME);
|
|
393
|
-
}
|
|
394
|
-
if (!this.isChromeSession && !this.opts.dontStopAppOnReset) {
|
|
395
|
-
await this.adb?.forceStop(this.opts.appPackage);
|
|
396
|
-
}
|
|
397
|
-
await this.adb?.goToHome();
|
|
398
|
-
if (this.opts.fullReset && !this.opts.skipUninstall && !this.appOnDevice) {
|
|
399
|
-
await this.adb?.uninstallApk(this.opts.appPackage);
|
|
400
|
-
}
|
|
401
|
-
await this.bootstrap.shutdown();
|
|
402
|
-
this.bootstrap = undefined;
|
|
403
|
-
}
|
|
404
|
-
else {
|
|
405
|
-
this.log.debug("Called deleteSession but bootstrap wasn't active");
|
|
406
|
-
}
|
|
407
|
-
// some cleanup we want to do regardless, in case we are shutting down
|
|
408
|
-
// mid-startup
|
|
409
|
-
await this.adb?.stopLogcat();
|
|
410
|
-
if (this.useUnlockHelperApp) {
|
|
411
|
-
await this.adb?.forceStop('io.appium.unlock');
|
|
412
|
-
}
|
|
413
|
-
if (this._wasWindowAnimationDisabled) {
|
|
414
|
-
this.log.info('Restoring window animation state');
|
|
415
|
-
await this.adb?.setAnimationState(true);
|
|
416
|
-
// This was necessary to change animation scale over Android P. We must reset the policy for the security.
|
|
417
|
-
if (this.adb && (await this.adb.getApiLevel()) >= 28) {
|
|
418
|
-
this.log.info('Restoring hidden api policy to the device default configuration');
|
|
419
|
-
await this.adb?.setDefaultHiddenApiPolicy(!!this.opts.ignoreHiddenApiPolicyError);
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
// @ts-expect-error do not put arbitrary properties on opts
|
|
423
|
-
if (this.opts.reboot) {
|
|
424
|
-
// @ts-expect-error do not put arbitrary properties on opts
|
|
425
|
-
const avdName = this.opts.avd.replace('@', '');
|
|
426
|
-
this.log.debug(`closing emulator '${avdName}'`);
|
|
427
|
-
await this.adb?.killEmulator(avdName);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
*
|
|
432
|
-
* @param {AndroidDriverOpts} [opts]
|
|
433
|
-
*/
|
|
434
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
435
|
-
async setSharedPreferences(opts) {
|
|
436
|
-
const sharedPrefs = this.opts.sharedPreferences;
|
|
437
|
-
this.log.info('Trying to set shared preferences');
|
|
438
|
-
const name = sharedPrefs.name;
|
|
439
|
-
if (lodash_1.default.isUndefined(name)) {
|
|
440
|
-
this.log.warn(`Skipping setting Shared preferences, name is undefined: ${JSON.stringify(sharedPrefs)}`);
|
|
441
|
-
return false;
|
|
442
|
-
}
|
|
443
|
-
const remotePath = `/data/data/${this.opts.appPackage}/shared_prefs`;
|
|
444
|
-
const remoteFile = `${remotePath}/${name}.xml`;
|
|
445
|
-
const localPath = `/tmp/${name}.xml`;
|
|
446
|
-
const builder = this.getPrefsBuilder();
|
|
447
|
-
builder.build(sharedPrefs.prefs);
|
|
448
|
-
this.log.info(`Creating temporary shared preferences: ${localPath}`);
|
|
449
|
-
builder.toFile(localPath);
|
|
450
|
-
this.log.info(`Creating shared_prefs remote folder: ${remotePath}`);
|
|
451
|
-
await this.adb.shell(['mkdir', '-p', remotePath]);
|
|
452
|
-
this.log.info(`Pushing shared_prefs to ${remoteFile}`);
|
|
453
|
-
await this.adb.push(localPath, remoteFile);
|
|
454
|
-
try {
|
|
455
|
-
this.log.info(`Trying to remove shared preferences temporary file`);
|
|
456
|
-
if (await support_1.fs.exists(localPath)) {
|
|
457
|
-
await support_1.fs.unlink(localPath);
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
catch (e) {
|
|
461
|
-
this.log.warn(`Error trying to remove temporary file ${localPath}`);
|
|
462
|
-
}
|
|
463
|
-
return true;
|
|
464
|
-
}
|
|
465
|
-
getPrefsBuilder() {
|
|
466
|
-
/* Add this method to create a new SharedPrefsBuilder instead of
|
|
467
|
-
* directly creating the object on setSharedPreferences for testing purposes
|
|
468
|
-
*/
|
|
469
|
-
return new shared_preferences_builder_1.SharedPrefsBuilder();
|
|
470
|
-
}
|
|
471
|
-
/**
|
|
472
|
-
*
|
|
473
|
-
* @param {any} caps
|
|
474
|
-
* @returns {caps is AndroidDriverCaps}
|
|
475
|
-
*/
|
|
476
|
-
validateDesiredCaps(caps) {
|
|
477
|
-
if (!super.validateDesiredCaps(caps)) {
|
|
478
|
-
return false;
|
|
479
|
-
}
|
|
480
|
-
if ((!caps.browserName || !helpers_1.helpers.isChromeBrowser(caps.browserName)) &&
|
|
481
|
-
!caps.app &&
|
|
482
|
-
!caps.appPackage) {
|
|
483
|
-
this.log.errorAndThrow('The desired capabilities must include either an app, appPackage or browserName');
|
|
484
|
-
}
|
|
485
|
-
return helpers_1.helpers.validateDesiredCaps(caps);
|
|
486
|
-
}
|
|
487
|
-
/**
|
|
488
|
-
*
|
|
489
|
-
* @param {string} sessionId
|
|
490
|
-
*/
|
|
491
|
-
proxyActive(sessionId) {
|
|
492
|
-
super.proxyActive(sessionId);
|
|
493
|
-
return this.jwpProxyActive;
|
|
494
|
-
}
|
|
495
|
-
/**
|
|
496
|
-
*
|
|
497
|
-
* @param {string} sessionId
|
|
498
|
-
*/
|
|
499
|
-
getProxyAvoidList(sessionId) {
|
|
500
|
-
super.getProxyAvoidList(sessionId);
|
|
501
|
-
return this.jwpProxyAvoid;
|
|
502
|
-
}
|
|
503
|
-
/**
|
|
504
|
-
*
|
|
505
|
-
* @param {string} sessionId
|
|
506
|
-
*/
|
|
507
|
-
canProxy(sessionId) {
|
|
508
|
-
super.canProxy(sessionId);
|
|
509
|
-
// this will change depending on ChromeDriver status
|
|
510
|
-
return lodash_1.default.isFunction(this.proxyReqRes);
|
|
511
|
-
}
|
|
512
37
|
}
|
|
513
38
|
exports.AndroidDriver = AndroidDriver;
|
|
514
39
|
AndroidDriver.newMethodMap = method_map_1.newMethodMap;
|
package/build/lib/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":";AAAA,6DAA6D;;;;;;AAE7D,6CAAkD;AAYlD,2CAAiD;AAEjD,0CAAyD;AACzD,uCAAuC;AACvC,wDAAyB;AACzB,oDAAuB;AACvB,2EAA8D;AAE9D,gEAAmF;AACnF,uCAA8E;AAC9E,6CAA0C;AAE1C,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB;;;IAGI;AACJ,MAAM,QAAQ,GAAmB;IAC/B,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAC7C,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,+BAA+B,CAAC,CAAC;IACrD,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,qCAAqC,CAAC,CAAC;IAC3D,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,6BAA6B,CAAC,CAAC;IAClD,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,oCAAoC,CAAC,CAAC;IACzD,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,oCAAoC,CAAC,CAAC;CAC3D,CAAC;AAYF,MAAM,aAIJ,SAAQ,mBAA0E;IAkClF,YAAY,OAAoB,EAAiB,EAAE,kBAAkB,GAAG,IAAI;QAC1E,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAEhC,IAAI,CAAC,iBAAiB,GAAG;YACvB,OAAO;YACP,IAAI;YACJ,YAAY;YACZ,kBAAkB;YAClB,sBAAsB;SACvB,CAAC;QACF,IAAI,CAAC,qBAAqB,GAAG,gBAAC,CAAC,SAAS,CAAC,qBAA0B,CAAC,CAAC;QACrE,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,gBAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,uBAAc,CAChC,EAAC,sBAAsB,EAAE,KAAK,EAAa,EAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CACjC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,QAAQ,CAAC;QAEjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAyB,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,QAA8B,EAC9B,QAA+B,EAC/B,QAA+B,EAC/B,UAAyB;QAEzB,sEAAsE;QACtE,sEAAsE;QACtE,oCAAoC;QACpC,IAAI;YACF,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,aAAa,CAClD,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,CACX,CAAyD,CAAC;YAE3D,MAAM,aAAa,GAAG;gBACpB,QAAQ,EAAE,OAAO;gBACjB,iBAAiB,EAAE,KAAK;gBACxB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;gBACvB,eAAe,EAAE,KAAK;gBACtB,wBAAwB,EAAE,IAAI;gBAC9B,sBAAsB,EAAE,KAAK;gBAC7B,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,IAAI,CAAC,IAAI;aACnB,CAAC;YAEF,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEpD,qBAAqB;YACrB,MAAM,WAAW,GAAG;gBAClB,MAAM,EAAE,4BAA4B;gBACpC,QAAQ,EAAE,kCAAkC;gBAC5C,KAAK,EAAE,YAAY;gBACnB,sBAAsB,EAAE,KAAK;gBAC7B,MAAM,EAAE,MAAM,iBAAO,CAAC,SAAS,EAAE;gBACjC,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,6BAAgB;gBACzB,aAAa,EAAE,WAAW;gBAC1B,qBAAqB,EAAE,KAAK;aAC7B,CAAC;YAEF,IAAI,CAAC,IAAI,GAAG,EAAC,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,EAAC,CAAC;YAE3C,IAAI,CAAC,kBAAkB,GAAG,gBAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE9D,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,iBAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7C;YAED,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;aAC5E;YAED,2DAA2D;YAC3D,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACpB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;aACnC;YAED,mCAAmC;YACnC,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,MAAM,iBAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACtB,2DAA2D;YAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAE1B,4BAA4B;YAC5B,IAAI,CAAC,GAAG,GAAG,MAAM,iBAAO,CAAC,SAAS,CAAC;gBACjC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;gBACpB,4BAA4B;gBAC5B,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;gBACxB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;gBAC1B,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB;gBAChD,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;gBACtC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB;gBACxD,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;gBACxC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB;aACnD,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,kDAAkD;oBAChD,8DAA8D;oBAC9D,6CAA6C,CAChD,CAAC;aACH;YAED,8CAA8C;YAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACjD,6EAA6E;gBAC7E,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACrC,8CAA8C;gBAC9C,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;aACtB;YAED,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjB,0DAA0D;gBAC1D,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;gBAC9E,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;aAC9B;iBAAM,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC3B,mEAAmE;gBACnE,6DAA6D;gBAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,sDAAsD;oBACpD,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,yBAAyB,CACnD,CAAC;gBACF,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAClC;YAED,oFAAoF;YACpF,0EAA0E;YAC1E,IAAI,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBACzC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;oBACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;iBACjF;qBAAM;oBACL,MAAM,YAAY,GAAG,IAAA,4BAAkB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC1E,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;iBAC3C;aACF;YACD,wEAAwE;YACxE,IAAI,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACvC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;oBACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,wBAAwB,CACjF,CAAC;oBACF,MAAM,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAChE;qBAAM;oBACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;iBAC/E;aACF;YAED,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAiB,CAAC;SAC/C;QAAC,OAAO,CAAC,EAAE;YACV,oEAAoE;YACpE,4CAA4C;YAC5C,IAAI;gBACF,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;aAC5B;YAAC,OAAO,GAAG,EAAE,GAAE;YAChB,MAAM,CAAC,CAAC;SACT;IACH,CAAC;IAED,UAAU;QACR,OAAO,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,sBAAsB,CAAC,IAAuB;QAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;SAC9E;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,IAAI,CAAC,GAAG,CAAC,aAAa,CACpB,qEAAqE,CACtE,CAAC;gBACF,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,cAAc;aAClC;YACD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,IAAI,CAAC,GAAG,CAAC,aAAa,CACpB,0EAA0E,CAC3E,CAAC;gBACF,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,cAAc;aAClC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;SACzD;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO;QACL,8CAA8C;QAC9C,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7C,8CAA8C;YAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CACzE,CAAC;IACJ,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,iBAAO,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAmB,EAAE,KAAU;QACpD,IAAI,GAAG,KAAK,wBAAwB,EAAE;YACpC,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;SAChD;IACH,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,mBAAmB,CAAC,IAAuB;QAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAE1C,sDAAsD;QACtD,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAW,CAAC;QAE7E,+FAA+F;QAC/F,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAI,CAAC,WAAqB,CAAC;QACvD,2DAA2D;QAC3D,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,GAAI,CAAC,kBAAkB,EAAE,CAAC;QACjE,2DAA2D;QAC3D,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC5D,2DAA2D;QAC3D,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClD,2DAA2D;QAC3D,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAEhE,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACpC,IAAI,MAAM,IAAI,CAAC,GAAI,CAAC,aAAa,EAAE,EAAE;gBACnC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;oBACzC,4BAA4B;oBAC5B,uDAAuD;oBACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;oBACtE,MAAM,IAAI,CAAC,GAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;iBACjF;gBAED,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,sFAAsF,CACvF,CAAC;gBACF,MAAM,IAAI,CAAC,GAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;aACzC;iBAAM;gBACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;aACvD;SACF;QAED,wBAAwB;QACxB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAErB,oBAAoB;QACpB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAO,CAAC,SAAS,CACvD,IAAI,CAAC,GAAI,EACT,IAAI,CAAC,IAAI,CAAC,aAAa;QACvB,2DAA2D;QAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,CACpB,CAAC,CAAC;QACH,MAAM,SAAS,CAAC,KAAK,CACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EACpB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAChC,IAAI,CAAC,IAAI,CAAC,cAAc,CACzB,CAAC;QACF,+BAA+B;QAC/B,CAAC,KAAK,IAAI,EAAE;YACV,IAAI;gBACF,MAAM,SAAS,CAAC,oBAAoB,CAAC;aACtC;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE;oBACvC,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAY,CAAC,CAAC;iBAClD;aACF;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;SAC5C;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,oCAAoC;gBAClC,8EAA8E,CACjF,CAAC;YACF,MAAM,iBAAO,CAAC,MAAM,CAAC,IAAW,EAAE,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACzD;QAED,+EAA+E;QAC/E,sDAAsD;QACtD,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzB,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB;aAC7C,CAAC,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,+CAA+C;YAC/C,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;SACjC;aAAM;YACL,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACxB,YAAY;gBACZ,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;aACvB;SACF;QAED,IAAI,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YAC5E,8CAA8C;YAC9C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAClD;QAED,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC;YAErD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,QAAQ,kBAAkB,OAAO,IAAI,CAAC,CAAC;YAEzF,wCAAwC;YACxC,MAAM,IAAA,wBAAa,EAAC,OAAO,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,qEAAqE;QACrE,4BAA4B;QAC5B,yEAAyE;QACzE,MAAM,UAAU,GAAG,MAAM,iBAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAErC,oEAAoE;QACpE,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACpC,iBAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,sDAAsD;YACtD,MAAM,iBAAO,CAAC,sBAAsB,CAClC,IAAI,CAAC,GAAI,EACT,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EACpD,CAAC,gCAAsB,CAAC,CACzB,CAAC;SACH;QAED,sDAAsD;QACtD,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACvB,uBAAuB;YACvB,IAAI,SAAmB,CAAC;YACxB,IAAI;gBACF,SAAS,GAAG,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACrD;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,2CAA4C,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1F,OAAO,CAAC,cAAc;aACvB;YACD,SAAS,GAAG,MAAM,kBAAC,CAAC,GAAG,CACrB,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CACtE,CAAC;YACF,MAAM,iBAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACjE;QAED,cAAc;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YAClB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACvB,IAAI,CAAC,GAAG,CAAC,aAAa,CACpB,6EAA6E,CAC9E,CAAC;aACH;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAC1E,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACvB,MAAM,iBAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;aAC9C;YACD,OAAO;SACR;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC5B,MAAM,IAAI,CAAC,GAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC;SACrD;QACD,MAAM,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,qBAAqB,GAAG,MAAM,iBAAO,CAAC,WAAW,CACrD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,IAAI,CAAC,GAAI,EACT,IAAI,CAAC,IAAI,CACV,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,qBAAqB,CAAC;SAC7D;QAED,uEAAuE;QACvE,+CAA+C;QAC/C,IAAI,CAAC,gBAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YAC/C,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5C;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC3D,2DAA2D;QAC3D,IAAI,CAAC,CAAC,MAAM,YAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YACrC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,6BAA6B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SACtE;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACpE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,GAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;YACtF,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,0BAA0B,IAAI,CAAC,IAAI,CAAC,UAAU,gBAAgB,CAAC,CAAC;SACxF;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,4BAA4B,CAAC,QAAa;QAC9C,MAAM,IAAI,CAAC,SAAU,CAAC,UAAU,CAAC,2BAA2B,EAAE,EAAC,cAAc,EAAE,QAAQ,EAAC,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAE/C,IAAI;YACF,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE;gBAC/C,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAClC;SACF;QAAC,OAAO,GAAG,EAAE,GAAE;QAEhB,MAAM,iBAAO,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAO,EAAE,IAAI,CAAC,SAAU,CAAC,CAAC;QAE/E,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEvC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAE5B,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,mEAAmE;YACnE,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC3E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBACtD,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC;YACD,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC1D,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC;aAClD;YACD,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACxE,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC;aACrD;YACD,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACpE;QACD,sEAAsE;QACtE,cAAc;QACd,MAAM,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;SAC/C;QACD,IAAI,IAAI,CAAC,2BAA2B,EAAE;YACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAClD,MAAM,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAExC,0GAA0G;YAC1G,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;gBACpD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;gBACjF,MAAM,IAAI,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;aACnF;SACF;QAED,2DAA2D;QAC3D,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACpB,2DAA2D;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,OAAO,GAAG,CAAC,CAAC;YAChD,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;SACvC;IACH,CAAC;IAED;;;OAGG;IACH,6DAA6D;IAC7D,KAAK,CAAC,oBAAoB,CAAC,IAAuB;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAkB,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QAC9B,IAAI,gBAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,2DAA2D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CACzF,CAAC;YACF,OAAO,KAAK,CAAC;SACd;QACD,MAAM,UAAU,GAAG,cAAc,IAAI,CAAC,IAAI,CAAC,UAAU,eAAe,CAAC;QACrE,MAAM,UAAU,GAAG,GAAG,UAAU,IAAI,IAAI,MAAM,CAAC;QAC/C,MAAM,SAAS,GAAG,QAAQ,IAAI,MAAM,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0CAA0C,SAAS,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,UAAU,EAAE,CAAC,CAAC;QAEpE,MAAM,IAAI,CAAC,GAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,GAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5C,IAAI;YACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACpE,IAAI,MAAM,YAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAC9B,MAAM,YAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aAC5B;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yCAAyC,SAAS,EAAE,CAAC,CAAC;SACrE;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;QACb;;WAEG;QACH,OAAO,IAAI,+CAAkB,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,IAAS;QAC3B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;YACpC,OAAO,KAAK,CAAC;SACd;QACD,IACE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,iBAAO,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC,IAAI,CAAC,GAAG;YACT,CAAC,IAAI,CAAC,UAAU,EAChB;YACA,IAAI,CAAC,GAAG,CAAC,aAAa,CACpB,gFAAgF,CACjF,CAAC;SACH;QACD,OAAO,iBAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,SAAiB;QAC3B,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,SAAiB;QACjC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,SAAiB;QACxB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE1B,oDAAoD;QACpD,OAAO,gBAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;;AAIK,sCAAa;AAlmBZ,0BAAY,GAAG,yBAAY,CAAC;AAimBrC,uCAAuD;AAA/C,2GAAA,QAAQ,OAAmB"}
|
|
1
|
+
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../lib/driver.ts"],"names":[],"mappings":";AAAA,6DAA6D;;;;;;AAW7D,oDAAuB;AAGvB,0CAAyC;AACzC,gEAAmF;AACnF,uCAAkC;AAClC,6CAA0C;AAO1C,MAAM,aACJ,SAAQ,mBAAkD;IAgC1D,YAAY,OAAoB,EAAiB,EAAE,kBAAkB,GAAG,IAAI;QAC1E,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAEhC,IAAI,CAAC,iBAAiB,GAAG;YACvB,OAAO;YACP,IAAI;YACJ,YAAY;YACZ,kBAAkB;YAClB,sBAAsB;SACvB,CAAC;QACF,IAAI,CAAC,qBAAqB,GAAG,gBAAC,CAAC,SAAS,CAAC,qBAA0B,CAAC,CAAC;QACrE,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,QAAQ,CAAC;QAEjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAyB,CAAC;IACxC,CAAC;IAED,UAAU;QACR,OAAO,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,iBAAO,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAChE,CAAC;;AAIK,sCAAa;AA3DZ,0BAAY,GAAG,yBAAY,CAAC;AA0DrC,uCAAuD;AAA/C,2GAAA,QAAQ,OAAmB"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { AppiumServer, StringRecord } from '@appium/types';
|
|
2
2
|
import { ADB } from 'appium-adb';
|
|
3
3
|
import type { SetRequired, ValueOf } from 'type-fest';
|
|
4
|
-
import Bootstrap from '../bootstrap';
|
|
5
4
|
import type { AndroidDriver, AndroidDriverCaps, AndroidDriverOpts } from '../driver';
|
|
6
5
|
import type { ADBDeviceInfo, ADBLaunchInfo } from './types';
|
|
7
6
|
import Unlocker from './unlock';
|
|
@@ -154,7 +153,6 @@ interface AndroidHelpers {
|
|
|
154
153
|
* @returns `true` if the device is an Android emulator
|
|
155
154
|
*/
|
|
156
155
|
isEmulator(adb?: ADB, opts?: AndroidDriverOpts): boolean;
|
|
157
|
-
bootstrap: typeof Bootstrap;
|
|
158
156
|
unlocker: typeof Unlocker;
|
|
159
157
|
}
|
|
160
158
|
declare const AndroidHelpers: AndroidHelpers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../../lib/helpers/android.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAQ/B,OAAO,KAAK,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../../lib/helpers/android.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,6 @@ const lodash_1 = __importDefault(require("lodash"));
|
|
|
36
36
|
const node_os_1 = require("node:os");
|
|
37
37
|
const node_path_1 = __importDefault(require("node:path"));
|
|
38
38
|
const semver_1 = __importDefault(require("semver"));
|
|
39
|
-
const bootstrap_1 = __importDefault(require("../bootstrap"));
|
|
40
39
|
const logger_1 = __importDefault(require("../logger"));
|
|
41
40
|
const unlock_1 = __importStar(require("./unlock"));
|
|
42
41
|
const MOCK_APP_IDS_STORE = '/data/local/tmp/mock_apps.json';
|
|
@@ -811,7 +810,6 @@ const AndroidHelpers = {
|
|
|
811
810
|
const possibleNames = [opts?.udid, adb?.curDeviceId];
|
|
812
811
|
return !!opts?.avd || possibleNames.some((x) => EMULATOR_PATTERN.test(String(x)));
|
|
813
812
|
},
|
|
814
|
-
bootstrap: bootstrap_1.default,
|
|
815
813
|
unlocker: unlock_1.default,
|
|
816
814
|
};
|
|
817
815
|
exports.helpers = AndroidHelpers;
|