@yume-chan/adb 0.0.13 → 0.0.14
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.json +15 -0
- package/CHANGELOG.md +9 -1
- package/esm/adb.d.ts +5 -4
- package/esm/adb.d.ts.map +1 -1
- package/esm/adb.js +15 -10
- package/esm/adb.js.map +1 -1
- package/esm/commands/reverse.d.ts +7 -10
- package/esm/commands/reverse.d.ts.map +1 -1
- package/esm/commands/reverse.js +9 -15
- package/esm/commands/reverse.js.map +1 -1
- package/esm/commands/subprocess/protocols/none.d.ts +1 -1
- package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
- package/esm/commands/subprocess/protocols/none.js +6 -6
- package/esm/commands/subprocess/protocols/none.js.map +1 -1
- package/esm/commands/sync/pull.d.ts.map +1 -1
- package/esm/commands/sync/pull.js +6 -3
- package/esm/commands/sync/pull.js.map +1 -1
- package/esm/socket/dispatcher.d.ts +21 -14
- package/esm/socket/dispatcher.d.ts.map +1 -1
- package/esm/socket/dispatcher.js +78 -53
- package/esm/socket/dispatcher.js.map +1 -1
- package/esm/socket/socket.d.ts +11 -2
- package/esm/socket/socket.d.ts.map +1 -1
- package/esm/socket/socket.js +21 -16
- package/esm/socket/socket.js.map +1 -1
- package/esm/stream/transform.d.ts +17 -12
- package/esm/stream/transform.d.ts.map +1 -1
- package/esm/stream/transform.js +45 -81
- package/esm/stream/transform.js.map +1 -1
- package/package.json +4 -4
- package/src/adb.ts +18 -12
- package/src/commands/reverse.ts +13 -24
- package/src/commands/subprocess/protocols/none.ts +6 -6
- package/src/commands/sync/pull.ts +6 -3
- package/src/socket/dispatcher.ts +96 -65
- package/src/socket/socket.ts +36 -30
- package/src/stream/transform.ts +53 -92
- package/tsconfig.build.tsbuildinfo +1 -1
package/CHANGELOG.json
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yume-chan/adb",
|
|
3
3
|
"entries": [
|
|
4
|
+
{
|
|
5
|
+
"version": "0.0.14",
|
|
6
|
+
"tag": "@yume-chan/adb_v0.0.14",
|
|
7
|
+
"date": "Sat, 30 Apr 2022 14:05:48 GMT",
|
|
8
|
+
"comments": {
|
|
9
|
+
"none": [
|
|
10
|
+
{
|
|
11
|
+
"comment": "Fix an issue where `subprocess.spawn` doesn't work on Android 6"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"comment": "Add an `Adb#close()` method to gracefully shutdown a connection"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
4
19
|
{
|
|
5
20
|
"version": "0.0.13",
|
|
6
21
|
"tag": "@yume-chan/adb_v0.0.13",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
# Change Log - @yume-chan/adb
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Sat, 30 Apr 2022 14:05:48 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 0.0.14
|
|
6
|
+
Sat, 30 Apr 2022 14:05:48 GMT
|
|
7
|
+
|
|
8
|
+
### Updates
|
|
9
|
+
|
|
10
|
+
- Fix an issue where `subprocess.spawn` doesn't work on Android 6
|
|
11
|
+
- Add an `Adb#close()` method to gracefully shutdown a connection
|
|
4
12
|
|
|
5
13
|
## 0.0.13
|
|
6
14
|
Thu, 28 Apr 2022 01:23:53 GMT
|
package/esm/adb.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type AdbCredentialStore } from './auth.js';
|
|
|
2
2
|
import { AdbPower, AdbReverseCommand, AdbSubprocess, AdbSync, AdbTcpIpCommand, type AdbFrameBuffer } from './commands/index.js';
|
|
3
3
|
import { AdbFeatures } from './features.js';
|
|
4
4
|
import { type AdbPacketData, type AdbPacketInit } from './packet.js';
|
|
5
|
-
import { type AdbSocket } from './socket/index.js';
|
|
5
|
+
import { AdbIncomingSocketHandler, type AdbSocket, type Closeable } from './socket/index.js';
|
|
6
6
|
import { WritableStream, type ReadableWritablePair } from "./stream/index.js";
|
|
7
7
|
export declare enum AdbPropKey {
|
|
8
8
|
Product = "ro.product.name",
|
|
@@ -11,14 +11,14 @@ export declare enum AdbPropKey {
|
|
|
11
11
|
Features = "features"
|
|
12
12
|
}
|
|
13
13
|
export declare const VERSION_OMIT_CHECKSUM = 16777217;
|
|
14
|
-
export declare class Adb {
|
|
14
|
+
export declare class Adb implements Closeable {
|
|
15
15
|
/**
|
|
16
16
|
* It's possible to call `authenticate` multiple times on a single connection,
|
|
17
17
|
* every time the device receives a `CNXN` packet, it resets its internal state,
|
|
18
18
|
* and starts a new authentication process.
|
|
19
19
|
*/
|
|
20
20
|
static authenticate(connection: ReadableWritablePair<AdbPacketData, AdbPacketInit>, credentialStore: AdbCredentialStore, authenticators?: import("./auth.js").AdbAuthenticator[]): Promise<Adb>;
|
|
21
|
-
private readonly
|
|
21
|
+
private readonly dispatcher;
|
|
22
22
|
get disconnected(): Promise<void>;
|
|
23
23
|
private _protocolVersion;
|
|
24
24
|
get protocolVersion(): number | undefined;
|
|
@@ -36,6 +36,7 @@ export declare class Adb {
|
|
|
36
36
|
readonly tcpip: AdbTcpIpCommand;
|
|
37
37
|
constructor(connection: ReadableWritablePair<AdbPacketData, AdbPacketInit>, version: number, maxPayloadSize: number, banner: string);
|
|
38
38
|
private parseBanner;
|
|
39
|
+
addIncomingSocketHandler(handler: AdbIncomingSocketHandler): import("@yume-chan/event").RemoveEventListener;
|
|
39
40
|
createSocket(service: string): Promise<AdbSocket>;
|
|
40
41
|
createSocketAndWait(service: string): Promise<string>;
|
|
41
42
|
getProp(key: string): Promise<string>;
|
|
@@ -43,6 +44,6 @@ export declare class Adb {
|
|
|
43
44
|
install(): WritableStream<Uint8Array>;
|
|
44
45
|
sync(): Promise<AdbSync>;
|
|
45
46
|
framebuffer(): Promise<AdbFrameBuffer>;
|
|
46
|
-
|
|
47
|
+
close(): Promise<void>;
|
|
47
48
|
}
|
|
48
49
|
//# sourceMappingURL=adb.d.ts.map
|
package/esm/adb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0D,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5G,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAmC,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjK,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAiC,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0D,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5G,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAmC,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjK,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAiC,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAuB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAyD,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGrI,oBAAY,UAAU;IAClB,OAAO,oBAAoB;IAC3B,KAAK,qBAAqB;IAC1B,MAAM,sBAAsB;IAC5B,QAAQ,aAAa;CACxB;AAED,eAAO,MAAM,qBAAqB,WAAa,CAAC;AAEhD,qBAAa,GAAI,YAAW,SAAS;IACjC;;;;OAIG;WACiB,YAAY,CAC5B,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9D,eAAe,EAAE,kBAAkB,EACnC,cAAc,yCAA6B,GAC5C,OAAO,CAAC,GAAG,CAAC;IAwGf,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAEjD,IAAW,YAAY,kBAA2C;IAElE,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,IAAW,eAAe,uBAAoC;IAE9D,OAAO,CAAC,QAAQ,CAAqB;IACrC,IAAW,OAAO,uBAA4B;IAE9C,OAAO,CAAC,MAAM,CAAqB;IACnC,IAAW,KAAK,uBAA0B;IAE1C,OAAO,CAAC,OAAO,CAAqB;IACpC,IAAW,MAAM,uBAA2B;IAE5C,OAAO,CAAC,SAAS,CAA4B;IAC7C,IAAW,QAAQ,8BAA6B;IAEhD,SAAgB,UAAU,EAAE,aAAa,CAAC;IAC1C,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,SAAgB,OAAO,EAAE,iBAAiB,CAAC;IAC3C,SAAgB,KAAK,EAAE,eAAe,CAAC;gBAGnC,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9D,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM;IA+BlB,OAAO,CAAC,WAAW;IAmCZ,wBAAwB,CAAC,OAAO,EAAE,wBAAwB;IAIpD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIjD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrC,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAOjD,OAAO;IAID,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAKxB,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
|
package/esm/adb.js
CHANGED
|
@@ -44,7 +44,7 @@ export class Adb {
|
|
|
44
44
|
await sendPacket(response);
|
|
45
45
|
break;
|
|
46
46
|
default:
|
|
47
|
-
// Maybe the previous ADB
|
|
47
|
+
// Maybe the previous ADB client exited without reading all packets,
|
|
48
48
|
// so they are still waiting in OS internal buffer.
|
|
49
49
|
// Just ignore them.
|
|
50
50
|
// Because a `Connect` packet will reset the device,
|
|
@@ -67,15 +67,17 @@ export class Adb {
|
|
|
67
67
|
}
|
|
68
68
|
try {
|
|
69
69
|
// https://android.googlesource.com/platform/packages/modules/adb/+/79010dc6d5ca7490c493df800d4421730f5466ca/transport.cpp#1252
|
|
70
|
-
// There are some other feature constants, but some of them are only used by ADB server, not devices.
|
|
70
|
+
// There are some other feature constants, but some of them are only used by ADB server, not devices (daemons).
|
|
71
71
|
const features = [
|
|
72
72
|
AdbFeatures.ShellV2,
|
|
73
73
|
AdbFeatures.Cmd,
|
|
74
74
|
AdbFeatures.StatV2,
|
|
75
75
|
AdbFeatures.ListV2,
|
|
76
|
-
|
|
76
|
+
AdbFeatures.FixedPushMkdir,
|
|
77
77
|
'apex',
|
|
78
78
|
'abb',
|
|
79
|
+
// only tells the client the symlink timestamp issue in `adb push --sync` has been fixed.
|
|
80
|
+
// No special handling required.
|
|
79
81
|
'fixed_push_symlink_timestamp',
|
|
80
82
|
'abb_exec',
|
|
81
83
|
'remount_shell',
|
|
@@ -109,8 +111,8 @@ export class Adb {
|
|
|
109
111
|
throw e;
|
|
110
112
|
}
|
|
111
113
|
}
|
|
112
|
-
|
|
113
|
-
get disconnected() { return this.
|
|
114
|
+
dispatcher;
|
|
115
|
+
get disconnected() { return this.dispatcher.disconnected; }
|
|
114
116
|
_protocolVersion;
|
|
115
117
|
get protocolVersion() { return this._protocolVersion; }
|
|
116
118
|
_product;
|
|
@@ -137,7 +139,7 @@ export class Adb {
|
|
|
137
139
|
calculateChecksum = true;
|
|
138
140
|
appendNullToServiceString = true;
|
|
139
141
|
}
|
|
140
|
-
this.
|
|
142
|
+
this.dispatcher = new AdbPacketDispatcher(connection, {
|
|
141
143
|
calculateChecksum,
|
|
142
144
|
appendNullToServiceString,
|
|
143
145
|
maxPayloadSize,
|
|
@@ -145,7 +147,7 @@ export class Adb {
|
|
|
145
147
|
this._protocolVersion = version;
|
|
146
148
|
this.subprocess = new AdbSubprocess(this);
|
|
147
149
|
this.power = new AdbPower(this);
|
|
148
|
-
this.reverse = new AdbReverseCommand(this
|
|
150
|
+
this.reverse = new AdbReverseCommand(this);
|
|
149
151
|
this.tcpip = new AdbTcpIpCommand(this);
|
|
150
152
|
}
|
|
151
153
|
parseBanner(banner) {
|
|
@@ -179,8 +181,11 @@ export class Adb {
|
|
|
179
181
|
}
|
|
180
182
|
}
|
|
181
183
|
}
|
|
184
|
+
addIncomingSocketHandler(handler) {
|
|
185
|
+
return this.dispatcher.addIncomingSocketHandler(handler);
|
|
186
|
+
}
|
|
182
187
|
async createSocket(service) {
|
|
183
|
-
return this.
|
|
188
|
+
return this.dispatcher.createSocket(service);
|
|
184
189
|
}
|
|
185
190
|
async createSocketAndWait(service) {
|
|
186
191
|
const socket = await this.createSocket(service);
|
|
@@ -208,8 +213,8 @@ export class Adb {
|
|
|
208
213
|
async framebuffer() {
|
|
209
214
|
return framebuffer(this);
|
|
210
215
|
}
|
|
211
|
-
async
|
|
212
|
-
this.
|
|
216
|
+
async close() {
|
|
217
|
+
await this.dispatcher.close();
|
|
213
218
|
}
|
|
214
219
|
}
|
|
215
220
|
//# sourceMappingURL=adb.js.map
|
package/esm/adb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb.js","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"AAAA,wBAAwB;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAA2B,MAAM,WAAW,CAAC;AAC5G,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAuB,MAAM,qBAAqB,CAAC;AACjK,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAA0C,MAAM,aAAa,CAAC;AACpG,OAAO,
|
|
1
|
+
{"version":3,"file":"adb.js","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import { AutoDisposable } from '@yume-chan/event';
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
export interface AdbReverseHandler {
|
|
5
|
-
onSocket(packet: AdbPacketData, socket: AdbSocket): void;
|
|
6
|
-
}
|
|
2
|
+
import type { Adb } from "../adb.js";
|
|
3
|
+
import type { AdbIncomingSocketHandler, AdbSocket } from '../socket/index.js';
|
|
7
4
|
export interface AdbForwardListener {
|
|
8
5
|
deviceSerial: string;
|
|
9
6
|
localName: string;
|
|
10
7
|
remoteName: string;
|
|
11
8
|
}
|
|
12
9
|
export declare class AdbReverseCommand extends AutoDisposable {
|
|
13
|
-
protected localPortToHandler: Map<number,
|
|
10
|
+
protected localPortToHandler: Map<number, AdbIncomingSocketHandler>;
|
|
14
11
|
protected deviceAddressToLocalPort: Map<string, number>;
|
|
15
|
-
protected
|
|
12
|
+
protected adb: Adb;
|
|
16
13
|
protected listening: boolean;
|
|
17
|
-
constructor(
|
|
18
|
-
protected handleIncomingSocket(
|
|
14
|
+
constructor(adb: Adb);
|
|
15
|
+
protected handleIncomingSocket: (socket: AdbSocket) => Promise<boolean>;
|
|
19
16
|
private createBufferedStream;
|
|
20
17
|
private sendRequest;
|
|
21
18
|
list(): Promise<AdbForwardListener[]>;
|
|
@@ -25,7 +22,7 @@ export declare class AdbReverseCommand extends AutoDisposable {
|
|
|
25
22
|
* @param handler A callback to handle incoming connections
|
|
26
23
|
* @returns If `deviceAddress` is `tcp:0`, return `tcp:{ACTUAL_LISTENING_PORT}`; otherwise, return `deviceAddress`.
|
|
27
24
|
*/
|
|
28
|
-
add(deviceAddress: string, localPort: number, handler:
|
|
25
|
+
add(deviceAddress: string, localPort: number, handler: AdbIncomingSocketHandler): Promise<string>;
|
|
29
26
|
remove(deviceAddress: string): Promise<void>;
|
|
30
27
|
removeAll(): Promise<void>;
|
|
31
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse.d.ts","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"reverse.d.ts","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI9E,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,MAAM,CAAC;IAElB,UAAU,EAAE,MAAM,CAAC;CACtB;AAcD,qBAAa,iBAAkB,SAAQ,cAAc;IACjD,SAAS,CAAC,kBAAkB,wCAA+C;IAE3E,SAAS,CAAC,wBAAwB,sBAA6B;IAE/D,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEnB,SAAS,CAAC,SAAS,UAAS;gBAET,GAAG,EAAE,GAAG;IAO3B,SAAS,CAAC,oBAAoB,WAAkB,SAAS,sBAKvD;YAEY,oBAAoB;YAKpB,WAAW;IASZ,IAAI,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAYlD;;;;;OAKG;IACU,GAAG,CACZ,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,wBAAwB,GAClC,OAAO,CAAC,MAAM,CAAC;IAiBL,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ1C"}
|
package/esm/commands/reverse.js
CHANGED
|
@@ -14,27 +14,21 @@ const AdbReverseErrorResponse = new Struct({ littleEndian: true })
|
|
|
14
14
|
export class AdbReverseCommand extends AutoDisposable {
|
|
15
15
|
localPortToHandler = new Map();
|
|
16
16
|
deviceAddressToLocalPort = new Map();
|
|
17
|
-
|
|
17
|
+
adb;
|
|
18
18
|
listening = false;
|
|
19
|
-
constructor(
|
|
19
|
+
constructor(adb) {
|
|
20
20
|
super();
|
|
21
|
-
this.
|
|
22
|
-
this.addDisposable(this.
|
|
21
|
+
this.adb = adb;
|
|
22
|
+
this.addDisposable(this.adb.addIncomingSocketHandler(this.handleIncomingSocket));
|
|
23
23
|
}
|
|
24
|
-
handleIncomingSocket(
|
|
25
|
-
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const address = decodeUtf8(e.packet.payload);
|
|
24
|
+
handleIncomingSocket = async (socket) => {
|
|
25
|
+
const address = socket.serviceString;
|
|
29
26
|
// Address format: `tcp:12345\0`
|
|
30
27
|
const port = Number.parseInt(address.substring(4));
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
e.handled = true;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
28
|
+
return !!(await this.localPortToHandler.get(port)?.(socket));
|
|
29
|
+
};
|
|
36
30
|
async createBufferedStream(service) {
|
|
37
|
-
const socket = await this.
|
|
31
|
+
const socket = await this.adb.createSocket(service);
|
|
38
32
|
return new AdbBufferedStream(socket);
|
|
39
33
|
}
|
|
40
34
|
async sendRequest(service) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"reverse.js","sourceRoot":"","sources":["../../src/commands/reverse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Adb } from "../../../adb.js";
|
|
2
2
|
import type { AdbSocket } from "../../../socket/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { ReadableStream } from "../../../stream/index.js";
|
|
4
4
|
import type { AdbSubprocessProtocol } from "./types.js";
|
|
5
5
|
/**
|
|
6
6
|
* The legacy shell
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"none.d.ts","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/none.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAuB,
|
|
1
|
+
{"version":3,"file":"none.d.ts","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/none.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAuB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,qBAAqB;WACrD,WAAW;WAEL,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;WAI7B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAMjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAGnC,IAAW,KAAK,8DAAmC;IAEnD,OAAO,CAAC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,+BAA2B;IAE5C,OAAO,CAAC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,+BAA2B;IAE5C,OAAO,CAAC,KAAK,CAAkB;IAC/B,IAAW,IAAI,oBAAyB;gBAErB,MAAM,EAAE,SAAS;IAc7B,MAAM;IAIN,IAAI;CAGd"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DuplexStreamFactory } from "../../../stream/index.js";
|
|
1
|
+
import { DuplexStreamFactory, ReadableStream } from "../../../stream/index.js";
|
|
2
2
|
/**
|
|
3
3
|
* The legacy shell
|
|
4
4
|
*
|
|
@@ -13,9 +13,9 @@ export class AdbSubprocessNoneProtocol {
|
|
|
13
13
|
return new AdbSubprocessNoneProtocol(await adb.createSocket(`shell:${command}`));
|
|
14
14
|
}
|
|
15
15
|
static async raw(adb, command) {
|
|
16
|
-
//
|
|
17
|
-
// But
|
|
18
|
-
return new AdbSubprocessNoneProtocol(await adb.createSocket(`
|
|
16
|
+
// `shell,raw:${command}` also triggers raw mode,
|
|
17
|
+
// But is not supported before Android 7.
|
|
18
|
+
return new AdbSubprocessNoneProtocol(await adb.createSocket(`exec:${command}`));
|
|
19
19
|
}
|
|
20
20
|
socket;
|
|
21
21
|
// Legacy shell forwards all data to stdin.
|
|
@@ -39,8 +39,8 @@ export class AdbSubprocessNoneProtocol {
|
|
|
39
39
|
await this.socket.close();
|
|
40
40
|
},
|
|
41
41
|
});
|
|
42
|
-
this._stdout = factory.
|
|
43
|
-
this._stderr = factory.
|
|
42
|
+
this._stdout = factory.wrapReadable(this.socket.readable);
|
|
43
|
+
this._stderr = factory.wrapReadable(new ReadableStream());
|
|
44
44
|
this._exit = factory.closed.then(() => 0);
|
|
45
45
|
}
|
|
46
46
|
resize() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"none.js","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/none.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"none.js","sourceRoot":"","sources":["../../../../src/commands/subprocess/protocols/none.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/E;;;;;;;GAOG;AACH,MAAM,OAAO,yBAAyB;IAC3B,MAAM,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAErC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,OAAe;QAC7C,OAAO,IAAI,yBAAyB,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,OAAe;QAC7C,iDAAiD;QACjD,yCAAyC;QACzC,OAAO,IAAI,yBAAyB,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;IAEgB,MAAM,CAAY;IAEnC,2CAA2C;IAC3C,IAAW,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE3C,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpC,OAAO,CAA6B;IAC5C;;OAEG;IACH,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpC,KAAK,CAAkB;IAC/B,IAAW,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAExC,YAAmB,MAAiB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAyB;YAC5D,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC9B,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEM,MAAM;QACT,gBAAgB;IACpB,CAAC;IAEM,IAAI;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/pull.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEvG,OAAO,EAA4C,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE5F,eAAO,MAAM,mBAAmB;;;;;aAIuB,CAAC;AAOxD,wBAAgB,WAAW,CACvB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,IAAI,EAAE,MAAM,GACb,cAAc,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/pull.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEvG,OAAO,EAA4C,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE5F,eAAO,MAAM,mBAAmB;;;;;aAIuB,CAAC;AAOxD,wBAAgB,WAAW,CACvB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,IAAI,EAAE,MAAM,GACb,cAAc,CAAC,UAAU,CAAC,CAyB5B"}
|
|
@@ -6,7 +6,7 @@ export const AdbSyncDataResponse = new Struct({ littleEndian: true })
|
|
|
6
6
|
.uint32('dataLength')
|
|
7
7
|
.uint8Array('data', { lengthField: 'dataLength' })
|
|
8
8
|
.extra({ id: AdbSyncResponseId.Data });
|
|
9
|
-
const
|
|
9
|
+
const RESPONSE_TYPES = {
|
|
10
10
|
[AdbSyncResponseId.Data]: AdbSyncDataResponse,
|
|
11
11
|
[AdbSyncResponseId.Done]: new AdbSyncDoneResponse(AdbSyncDataResponse.size),
|
|
12
12
|
};
|
|
@@ -16,7 +16,7 @@ export function adbSyncPull(stream, writer, path) {
|
|
|
16
16
|
await adbSyncWriteRequest(writer, AdbSyncRequestId.Receive, path);
|
|
17
17
|
},
|
|
18
18
|
async pull(controller) {
|
|
19
|
-
const response = await adbSyncReadResponse(stream,
|
|
19
|
+
const response = await adbSyncReadResponse(stream, RESPONSE_TYPES);
|
|
20
20
|
switch (response.id) {
|
|
21
21
|
case AdbSyncResponseId.Data:
|
|
22
22
|
controller.enqueue(response.data);
|
|
@@ -27,7 +27,10 @@ export function adbSyncPull(stream, writer, path) {
|
|
|
27
27
|
default:
|
|
28
28
|
throw new Error('Unexpected response id');
|
|
29
29
|
}
|
|
30
|
-
}
|
|
30
|
+
},
|
|
31
|
+
cancel() {
|
|
32
|
+
throw new Error(`Sync commands don't support cancel.`);
|
|
33
|
+
},
|
|
31
34
|
}, {
|
|
32
35
|
highWaterMark: 16 * 1024,
|
|
33
36
|
size(chunk) { return chunk.byteLength; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/commands/sync/pull.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAqB,cAAc,EAA+B,MAAM,uBAAuB,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE5F,MAAM,CAAC,MAAM,mBAAmB,GAC5B,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,YAAY,CAAC;KACpB,UAAU,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;KACjD,KAAK,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,IAAa,EAAE,CAAC,CAAC;AAExD,MAAM,
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../src/commands/sync/pull.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAqB,cAAc,EAA+B,MAAM,uBAAuB,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE5F,MAAM,CAAC,MAAM,mBAAmB,GAC5B,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,YAAY,CAAC;KACpB,UAAU,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;KACjD,KAAK,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,IAAa,EAAE,CAAC,CAAC;AAExD,MAAM,cAAc,GAAG;IACnB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,mBAAmB;IAC7C,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC;CAC9E,CAAC;AAEF,MAAM,UAAU,WAAW,CACvB,MAAyB,EACzB,MAA+C,EAC/C,IAAY;IAEZ,OAAO,IAAI,cAAc,CAAa;QAClC,KAAK,CAAC,KAAK;YACP,MAAM,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,UAAU;YACjB,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACnE,QAAQ,QAAQ,CAAC,EAAE,EAAE;gBACjB,KAAK,iBAAiB,CAAC,IAAI;oBACvB,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAK,CAAC,CAAC;oBACnC,MAAM;gBACV,KAAK,iBAAiB,CAAC,IAAI;oBACvB,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM;gBACV;oBACI,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;aACjD;QACL,CAAC;QACD,MAAM;YACF,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;KACJ,EAAE;QACC,aAAa,EAAE,EAAE,GAAG,IAAI;QACxB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;KAC3C,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { RemoveEventListener } from '@yume-chan/event';
|
|
2
|
+
import type { ValueOrPromise } from "@yume-chan/struct";
|
|
2
3
|
import { AdbCommand, type AdbPacketData, type AdbPacketInit } from '../packet.js';
|
|
3
4
|
import { type ReadableWritablePair } from '../stream/index.js';
|
|
4
5
|
import { AdbSocket } from './socket.js';
|
|
5
|
-
export interface AdbIncomingSocketEventArgs {
|
|
6
|
-
handled: boolean;
|
|
7
|
-
packet: AdbPacketData;
|
|
8
|
-
serviceString: string;
|
|
9
|
-
socket: AdbSocket;
|
|
10
|
-
}
|
|
11
6
|
export interface AdbPacketDispatcherOptions {
|
|
12
7
|
calculateChecksum: boolean;
|
|
13
8
|
/**
|
|
@@ -19,26 +14,38 @@ export interface AdbPacketDispatcherOptions {
|
|
|
19
14
|
appendNullToServiceString: boolean;
|
|
20
15
|
maxPayloadSize: number;
|
|
21
16
|
}
|
|
22
|
-
export declare
|
|
17
|
+
export declare type AdbIncomingSocketHandler = (socket: AdbSocket) => ValueOrPromise<boolean>;
|
|
18
|
+
export interface Closeable {
|
|
19
|
+
close(): ValueOrPromise<void>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The dispatcher is the "dumb" part of the connection handling logic.
|
|
23
|
+
*
|
|
24
|
+
* Except some options to change some minor behaviors,
|
|
25
|
+
* its only job is forwarding packets between authenticated underlying streams
|
|
26
|
+
* and abstracted socket objects.
|
|
27
|
+
*
|
|
28
|
+
* The `Adb` class is responsible for doing the authentication,
|
|
29
|
+
* negotiating the options, and has shortcuts to high-level services.
|
|
30
|
+
*/
|
|
31
|
+
export declare class AdbPacketDispatcher implements Closeable {
|
|
23
32
|
private readonly initializers;
|
|
24
33
|
private readonly sockets;
|
|
25
34
|
private _writer;
|
|
26
35
|
readonly options: AdbPacketDispatcherOptions;
|
|
27
36
|
private _disconnected;
|
|
28
37
|
get disconnected(): Promise<void>;
|
|
29
|
-
private
|
|
30
|
-
get onIncomingSocket(): {
|
|
31
|
-
(listener: import("@yume-chan/event").EventListener<AdbIncomingSocketEventArgs, unknown, [], unknown>): import("@yume-chan/event").RemoveEventListener;
|
|
32
|
-
<TThis, TArgs extends unknown[]>(listener: import("@yume-chan/event").EventListener<AdbIncomingSocketEventArgs, TThis, TArgs, unknown>, thisArg: TThis, ...args: TArgs): import("@yume-chan/event").RemoveEventListener;
|
|
33
|
-
};
|
|
38
|
+
private _incomingSocketHandlers;
|
|
34
39
|
private _abortController;
|
|
35
40
|
constructor(connection: ReadableWritablePair<AdbPacketData, AdbPacketInit>, options: AdbPacketDispatcherOptions);
|
|
36
41
|
private handleOk;
|
|
37
42
|
private handleClose;
|
|
43
|
+
addIncomingSocketHandler(handler: AdbIncomingSocketHandler): RemoveEventListener;
|
|
38
44
|
private handleOpen;
|
|
39
45
|
createSocket(serviceString: string): Promise<AdbSocket>;
|
|
40
46
|
sendPacket(packet: AdbPacketInit): Promise<void>;
|
|
41
47
|
sendPacket(command: AdbCommand, arg0: number, arg1: number, payload?: string | Uint8Array): Promise<void>;
|
|
42
|
-
|
|
48
|
+
close(): Promise<void>;
|
|
49
|
+
private dispose;
|
|
43
50
|
}
|
|
44
51
|
//# sourceMappingURL=dispatcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAqB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,EAAgE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7H,OAAO,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAC;AAI7D,MAAM,WAAW,0BAA0B;IACvC,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,oBAAY,wBAAwB,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK,cAAc,CAAC,OAAO,CAAC,CAAC;AAEtF,MAAM,WAAW,SAAS;IACtB,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,qBAAa,mBAAoB,YAAW,SAAS;IAGjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAElE,OAAO,CAAC,OAAO,CAA8C;IAE7D,SAAgB,OAAO,EAAE,0BAA0B,CAAC;IAEpD,OAAO,CAAC,aAAa,CAA+B;IACpD,IAAW,YAAY,kBAAyC;IAEhE,OAAO,CAAC,uBAAuB,CAA4C;IAE3E,OAAO,CAAC,gBAAgB,CAAyB;gBAG7C,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9D,OAAO,EAAE,0BAA0B;IAmDvC,OAAO,CAAC,QAAQ;YAkBF,WAAW;IAoClB,wBAAwB,CAAC,OAAO,EAAE,wBAAwB,GAAG,mBAAmB;YASzE,UAAU;IA4BX,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA2B7D,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAChD,UAAU,CACb,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC;IAqCH,KAAK;IAqBlB,OAAO,CAAC,OAAO;CASlB"}
|