incus-ts 0.1.3 → 0.1.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"incus.d.ts","sourceRoot":"","sources":["../src/incus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"incus.d.ts","sourceRoot":"","sources":["../src/incus.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1033,14 +1033,23 @@ function streamWebSocketToWritable(socket, options = {}) {
1033
1033
  }
1034
1034
  async function sendToWebSocket(socket, data) {
1035
1035
  if (isNodeWebSocket(socket)) {
1036
+ const send = socket.send;
1037
+ if (send.length < 2) {
1038
+ send.call(socket, data);
1039
+ return;
1040
+ }
1036
1041
  await new Promise((resolve, reject) => {
1037
- socket.send(data, (error) => {
1038
- if (error) {
1039
- reject(error);
1040
- return;
1041
- }
1042
- resolve();
1043
- });
1042
+ try {
1043
+ send.call(socket, data, (error) => {
1044
+ if (error) {
1045
+ reject(error);
1046
+ return;
1047
+ }
1048
+ resolve();
1049
+ });
1050
+ } catch (error) {
1051
+ reject(error);
1052
+ }
1044
1053
  });
1045
1054
  return;
1046
1055
  }
@@ -2285,5 +2294,5 @@ export {
2285
2294
  Incus
2286
2295
  };
2287
2296
 
2288
- //# debugId=5D0FC397D2FB247A64756E2164756E21
2297
+ //# debugId=CB710D5B804F079364756E2164756E21
2289
2298
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/incus.ts"],
4
4
  "sourcesContent": [
5
- "import { request as nodeHttpRequest } from \"node:http\";\nimport { createHash, randomBytes } from \"node:crypto\";\nimport { EventEmitter } from \"node:events\";\nimport { connect as nodeNetConnect, type Socket as NodeNetSocket } from \"node:net\";\n\nexport type IncusRecord = Record<string, unknown>;\n\nexport type IncusInstanceType = \"container\" | \"virtual-machine\" | string;\n\nexport type IncusBinaryInput =\n | Blob\n | ArrayBuffer\n | ArrayBufferView\n | Uint8Array\n | ReadableStream<Uint8Array>;\n\nexport type IncusProgress = {\n processedBytes?: number;\n totalBytes?: number;\n percent?: number;\n speedBytesPerSecond?: number;\n};\n\nexport type IncusEntity<T = unknown> = {\n value: T;\n etag?: string;\n};\n\nexport type IncusMutationOptions = {\n etag?: string;\n};\n\nexport type IncusListOptions = {\n filter?: string[];\n allProjects?: boolean;\n};\n\nexport type IncusScopeOptions = {\n allProjects?: boolean;\n};\n\nexport type IncusRequestContext = {\n project?: string;\n target?: string;\n requireAuthenticated?: boolean;\n};\n\nexport type IncusConnectionOptions = {\n userAgent?: string;\n authType?: string;\n skipGetEvents?: boolean;\n skipGetServer?: boolean;\n headers?: HeadersInit;\n fetch?: typeof fetch;\n signal?: AbortSignal;\n tempPath?: string;\n tlsServerCert?: string;\n tlsClientCert?: string;\n tlsClientKey?: string;\n tlsCA?: string;\n insecureSkipVerify?: boolean;\n identicalCertificate?: boolean;\n oidcTokens?: {\n accessToken?: string;\n refreshToken?: string;\n expiry?: string;\n };\n};\n\nexport type IncusSimpleStreamsOptions = IncusConnectionOptions & {\n cachePath?: string;\n cacheExpiryMs?: number;\n};\n\nexport type IncusUnixConnectOptions = IncusConnectionOptions & {\n socketPath?: string;\n};\n\nexport type IncusHttpConnectOptions = IncusConnectionOptions & {\n endpoint?: string;\n};\n\nexport type IncusConnectKind =\n | \"incus\"\n | \"incus-public\"\n | \"incus-unix\"\n | \"incus-http\"\n | \"simple-streams\";\n\nexport type IncusConnectionInfo = {\n addresses: string[];\n certificate?: string;\n protocol?: string;\n url?: string;\n socketPath?: string;\n project?: string;\n target?: string;\n};\n\nexport type IncusTransportRequestOptions = {\n query?: Record<string, string | number | boolean | undefined>;\n headers?: HeadersInit;\n body?: unknown;\n signal?: AbortSignal;\n etag?: string;\n context?: IncusRequestContext;\n};\n\nexport type IncusTransportResponse<T = unknown> = {\n status: number;\n etag?: string;\n data: T;\n headers?: Headers;\n};\n\nexport interface IncusTransport {\n request<T = unknown>(\n method: string,\n path: string,\n options?: IncusTransportRequestOptions,\n ): Promise<IncusTransportResponse<T>>;\n websocket?(path: string, protocols?: string | string[]): Promise<WebSocket>;\n close?(): void;\n}\n\nexport type IncusOperationWaitOptions = {\n timeoutSeconds?: number;\n signal?: AbortSignal;\n};\n\nexport interface IncusOperation {\n id: string;\n wait(options?: IncusOperationWaitOptions): Promise<IncusRecord>;\n cancel(): Promise<void>;\n refresh(): Promise<IncusRecord>;\n websocket(secret: string): Promise<WebSocket>;\n onUpdate(handler: (operation: IncusRecord) => void): Promise<() => void>;\n}\n\nexport interface IncusAwaitableOperation extends IncusOperation, PromiseLike<IncusRecord> {\n catch<TResult = never>(\n onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<IncusRecord | TResult>;\n finally(onFinally?: (() => void) | null): Promise<IncusRecord>;\n}\n\nexport interface IncusRemoteOperation {\n wait(options?: IncusOperationWaitOptions): Promise<void>;\n cancelTarget(): Promise<void>;\n target(): Promise<IncusRecord | null>;\n onUpdate(handler: (operation: IncusRecord) => void): Promise<() => void>;\n}\n\nexport type IncusEventStreamOptions = {\n types?: string[];\n allProjects?: boolean;\n signal?: AbortSignal;\n};\n\nexport type IncusEvent = {\n type: string;\n timestamp?: string;\n metadata?: IncusRecord;\n};\n\nexport interface IncusEventListener extends AsyncIterable<IncusEvent> {\n close(): Promise<void>;\n}\n\nexport interface ConnectionApi {\n info(): Promise<IncusConnectionInfo>;\n httpClient(): Promise<unknown>;\n doHttp(request: Request): Promise<Response>;\n disconnect(): void;\n}\n\nexport interface ServerApi {\n metrics(): Promise<string>;\n get(): Promise<IncusEntity<IncusRecord>>;\n resources(): Promise<IncusRecord>;\n update(server: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n applyPreseed(config: IncusRecord): Promise<void>;\n hasExtension(extension: string): Promise<boolean>;\n isClustered(): Promise<boolean>;\n}\n\nexport interface CertificatesApi {\n fingerprints(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(fingerprint: string): Promise<IncusEntity<IncusRecord>>;\n create(certificate: IncusRecord): Promise<void>;\n update(\n fingerprint: string,\n certificate: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(fingerprint: string): Promise<void>;\n createToken(certificate: IncusRecord): IncusAwaitableOperation;\n}\n\nexport type ImageListOptions = IncusListOptions;\n\nexport type ImageDownloadOptions = {\n signal?: AbortSignal;\n onProgress?: (progress: IncusProgress) => void;\n secret?: string;\n};\n\nexport type ImageDownloadResult = {\n metadataName?: string;\n metadataSize?: number;\n rootfsName?: string;\n rootfsSize?: number;\n};\n\nexport interface ImageAliasesApi {\n list(): Promise<IncusRecord[]>;\n names(): Promise<string[]>;\n get(name: string, options?: { imageType?: string }): Promise<IncusEntity<IncusRecord>>;\n getArchitectures(\n name: string,\n options?: { imageType?: string },\n ): Promise<Record<string, IncusRecord>>;\n create(alias: IncusRecord): Promise<void>;\n update(name: string, alias: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, alias: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface ImagesApi {\n list(options?: ImageListOptions): Promise<IncusRecord[]>;\n fingerprints(options?: ImageListOptions): Promise<string[]>;\n get(\n fingerprint: string,\n options?: {\n secret?: string;\n },\n ): Promise<IncusEntity<IncusRecord>>;\n downloadFile(\n fingerprint: string,\n options?: ImageDownloadOptions,\n ): Promise<ImageDownloadResult>;\n create(image: IncusRecord, upload?: IncusRecord): IncusAwaitableOperation;\n copyFrom(\n source: IncusImageClient,\n image: IncusRecord,\n options?: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n update(\n fingerprint: string,\n image: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(fingerprint: string): IncusAwaitableOperation;\n refresh(fingerprint: string): IncusAwaitableOperation;\n createSecret(fingerprint: string): IncusAwaitableOperation;\n export(fingerprint: string, request?: IncusRecord): IncusAwaitableOperation;\n aliases: ImageAliasesApi;\n}\n\nexport type InstanceListOptions = IncusListOptions & {\n type?: IncusInstanceType;\n full?: boolean;\n};\n\nexport type InstanceExecOptions = {\n stdin?: IncusBinaryInput;\n stdout?: \"pipe\" | WritableStream<Uint8Array>;\n stderr?: \"pipe\" | WritableStream<Uint8Array>;\n signal?: AbortSignal;\n onControl?: (socket: WebSocket) => void;\n};\n\nexport type InstanceForkOptions = {\n fromSnapshot?: string;\n sourceProject?: string;\n live?: boolean;\n instanceOnly?: boolean;\n refresh?: boolean;\n refreshExcludeOlder?: boolean;\n allowInconsistent?: boolean;\n};\n\nexport type IncusExecOutputChunk = {\n stream: \"stdout\" | \"stderr\";\n chunk: Uint8Array;\n};\n\nexport type IncusExecResult = {\n operation: IncusRecord;\n exitCode?: number;\n ok: boolean;\n};\n\nexport interface IncusExecProcess extends\n IncusOperation,\n AsyncIterable<Uint8Array>,\n PromiseLike<IncusExecResult>\n{\n stdout: AsyncIterable<Uint8Array>;\n stderr: AsyncIterable<Uint8Array>;\n output(): AsyncIterable<IncusExecOutputChunk>;\n waitResult(options?: IncusOperationWaitOptions): Promise<IncusExecResult>;\n catch<TResult = never>(\n onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<IncusExecResult | TResult>;\n finally(onFinally?: (() => void) | null): Promise<IncusExecResult>;\n}\n\nexport type InstanceConsoleOptions = {\n terminal?: WebSocket;\n signal?: AbortSignal;\n onControl?: (socket: WebSocket) => void;\n};\n\nexport type InstanceConsoleDynamicResult = {\n operation: IncusOperation;\n attach: (terminal: WebSocket) => Promise<void>;\n};\n\nexport type InstanceFilePutOptions = {\n content: IncusBinaryInput;\n uid?: number;\n gid?: number;\n mode?: number;\n type?: \"file\" | \"directory\" | string;\n writeMode?: \"overwrite\" | \"append\" | string;\n};\n\nexport type InstanceFileResult = {\n stream: ReadableStream<Uint8Array>;\n uid?: number;\n gid?: number;\n mode?: number;\n type?: string;\n entries?: string[];\n};\n\nexport interface InstanceLogsApi {\n list(): Promise<string[]>;\n get(filename: string): Promise<ReadableStream<Uint8Array>>;\n remove(filename: string): Promise<void>;\n getConsole(): Promise<ReadableStream<Uint8Array>>;\n removeConsole(): Promise<void>;\n}\n\nexport interface InstanceFilesApi {\n get(path: string): Promise<InstanceFileResult>;\n put(path: string, options: InstanceFilePutOptions): Promise<void>;\n remove(path: string): Promise<void>;\n sftp(): Promise<unknown>;\n}\n\nexport interface InstanceTemplatesApi {\n list(): Promise<string[]>;\n get(templateName: string): Promise<ReadableStream<Uint8Array>>;\n put(templateName: string, content: IncusBinaryInput): Promise<void>;\n remove(templateName: string): Promise<void>;\n}\n\nexport interface InstanceSnapshotsApi {\n names(): Promise<string[]>;\n list(): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(snapshot: IncusRecord): IncusAwaitableOperation;\n copyFrom(\n source: IncusClient,\n snapshot: IncusRecord,\n options?: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n rename(name: string, request: IncusRecord): IncusAwaitableOperation;\n migrate(name: string, request: IncusRecord): IncusAwaitableOperation;\n remove(name: string): IncusAwaitableOperation;\n update(\n name: string,\n snapshot: IncusRecord,\n options?: IncusMutationOptions,\n ): IncusAwaitableOperation;\n restore(name: string, options?: { stateful?: boolean }): IncusAwaitableOperation;\n}\n\nexport interface InstanceBackupsApi {\n names(): Promise<string[]>;\n list(): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(backup: IncusRecord): IncusAwaitableOperation;\n rename(name: string, backup: IncusRecord): IncusAwaitableOperation;\n remove(name: string): IncusAwaitableOperation;\n download(name: string): Promise<ReadableStream<Uint8Array>>;\n upload(backup: IncusRecord, body: IncusBinaryInput): Promise<void>;\n}\n\nexport interface InstanceApi {\n readonly name: string;\n get(options?: { full?: boolean }): Promise<IncusEntity<IncusRecord>>;\n fork(name: string, options?: InstanceForkOptions): IncusAwaitableOperation;\n update(instance: IncusRecord, options?: IncusMutationOptions): IncusAwaitableOperation;\n rename(request: IncusRecord): IncusAwaitableOperation;\n migrate(request: IncusRecord): IncusAwaitableOperation;\n remove(): IncusAwaitableOperation;\n rebuild(request: IncusRecord): IncusAwaitableOperation;\n rebuildFromImage(\n source: IncusImageClient,\n image: IncusRecord,\n request: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n restore(snapshotName: string, options?: { stateful?: boolean }): IncusAwaitableOperation;\n state(): Promise<IncusEntity<IncusRecord>>;\n setState(state: IncusRecord, options?: IncusMutationOptions): IncusAwaitableOperation;\n access(): Promise<IncusRecord>;\n exec(request: IncusRecord, options?: InstanceExecOptions): IncusExecProcess;\n console(\n request: IncusRecord,\n options?: InstanceConsoleOptions,\n ): IncusAwaitableOperation;\n consoleDynamic(\n request: IncusRecord,\n options?: InstanceConsoleOptions,\n ): Promise<InstanceConsoleDynamicResult>;\n metadata(): Promise<IncusEntity<IncusRecord>>;\n updateMetadata(metadata: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n debugMemory(format?: string): Promise<ReadableStream<Uint8Array>>;\n logs: InstanceLogsApi;\n files: InstanceFilesApi;\n templates: InstanceTemplatesApi;\n snapshots: InstanceSnapshotsApi;\n backups: InstanceBackupsApi;\n}\n\nexport interface InstancesApi {\n names(options?: InstanceListOptions): Promise<string[] | Record<string, string[]>>;\n list(options?: InstanceListOptions): Promise<IncusRecord[]>;\n instance(name: string): InstanceApi;\n create(instance: IncusRecord): IncusAwaitableOperation;\n createFromImage(\n source: IncusImageClient,\n image: IncusRecord,\n request: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n createFromBackup(args: IncusRecord): IncusAwaitableOperation;\n copyFrom(\n source: IncusClient,\n instance: IncusRecord,\n options?: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n updateMany(state: IncusRecord, options?: IncusMutationOptions): IncusAwaitableOperation;\n}\n\nexport interface EventsApi {\n stream(options?: IncusEventStreamOptions): Promise<IncusEventListener>;\n send(event: IncusEvent): Promise<void>;\n}\n\nexport interface MetadataApi {\n configuration(): Promise<IncusRecord>;\n}\n\nexport interface NetworkForwardsApi {\n addresses(networkName: string): Promise<string[]>;\n list(networkName: string): Promise<IncusRecord[]>;\n get(networkName: string, listenAddress: string): Promise<IncusEntity<IncusRecord>>;\n create(networkName: string, request: IncusRecord): Promise<void>;\n update(\n networkName: string,\n listenAddress: string,\n request: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(networkName: string, listenAddress: string): Promise<void>;\n}\n\nexport interface NetworkLoadBalancersApi {\n addresses(networkName: string): Promise<string[]>;\n list(networkName: string): Promise<IncusRecord[]>;\n get(networkName: string, listenAddress: string): Promise<IncusEntity<IncusRecord>>;\n state(networkName: string, listenAddress: string): Promise<IncusRecord>;\n create(networkName: string, request: IncusRecord): Promise<void>;\n update(\n networkName: string,\n listenAddress: string,\n request: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(networkName: string, listenAddress: string): Promise<void>;\n}\n\nexport interface NetworkPeersApi {\n names(networkName: string): Promise<string[]>;\n list(networkName: string): Promise<IncusRecord[]>;\n get(networkName: string, peerName: string): Promise<IncusEntity<IncusRecord>>;\n create(networkName: string, request: IncusRecord): Promise<void>;\n update(\n networkName: string,\n peerName: string,\n request: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(networkName: string, peerName: string): Promise<void>;\n}\n\nexport interface NetworkAclsApi {\n names(): Promise<string[]>;\n list(options?: IncusScopeOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n getLog(name: string): Promise<ReadableStream<Uint8Array>>;\n create(request: IncusRecord): Promise<void>;\n update(name: string, request: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface NetworkAddressSetsApi {\n names(): Promise<string[]>;\n list(options?: IncusScopeOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(request: IncusRecord): Promise<void>;\n update(name: string, request: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface NetworkZoneRecordsApi {\n names(zone: string): Promise<string[]>;\n list(zone: string): Promise<IncusRecord[]>;\n get(zone: string, name: string): Promise<IncusEntity<IncusRecord>>;\n create(zone: string, request: IncusRecord): Promise<void>;\n update(\n zone: string,\n name: string,\n request: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(zone: string, name: string): Promise<void>;\n}\n\nexport interface NetworkZonesApi {\n names(): Promise<string[]>;\n list(options?: IncusScopeOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(request: IncusRecord): Promise<void>;\n update(name: string, request: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n remove(name: string): Promise<void>;\n records: NetworkZoneRecordsApi;\n}\n\nexport interface NetworkIntegrationsApi {\n names(): Promise<string[]>;\n list(): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(request: IncusRecord): Promise<void>;\n update(name: string, request: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface NetworksApi {\n names(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n leases(name: string): Promise<IncusRecord[]>;\n state(name: string): Promise<IncusRecord>;\n create(request: IncusRecord): Promise<void>;\n update(name: string, request: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n allocations(options?: IncusScopeOptions): Promise<IncusRecord[]>;\n forwards: NetworkForwardsApi;\n loadBalancers: NetworkLoadBalancersApi;\n peers: NetworkPeersApi;\n acls: NetworkAclsApi;\n addressSets: NetworkAddressSetsApi;\n zones: NetworkZonesApi;\n integrations: NetworkIntegrationsApi;\n}\n\nexport interface OperationsApi {\n uuids(): Promise<string[]>;\n list(options?: IncusScopeOptions): Promise<IncusRecord[]>;\n get(uuid: string): Promise<IncusEntity<IncusRecord>>;\n wait(uuid: string, timeoutSeconds?: number): Promise<IncusEntity<IncusRecord>>;\n waitWithSecret(\n uuid: string,\n secret: string,\n timeoutSeconds?: number,\n ): Promise<IncusEntity<IncusRecord>>;\n websocket(uuid: string, secret: string): Promise<WebSocket>;\n remove(uuid: string): Promise<void>;\n}\n\nexport interface ProfilesApi {\n names(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(profile: IncusRecord): Promise<void>;\n update(name: string, profile: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, profile: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface ProjectsApi {\n names(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n state(name: string): Promise<IncusRecord>;\n access(name: string): Promise<IncusRecord>;\n create(project: IncusRecord): Promise<void>;\n update(name: string, project: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, project: IncusRecord): IncusAwaitableOperation;\n remove(name: string): Promise<void>;\n removeForce(name: string): Promise<void>;\n}\n\nexport interface StoragePoolsApi {\n names(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n resources(name: string): Promise<IncusRecord>;\n create(pool: IncusRecord): Promise<void>;\n update(name: string, pool: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface StorageBucketKeysApi {\n names(poolName: string, bucketName: string): Promise<string[]>;\n list(poolName: string, bucketName: string): Promise<IncusRecord[]>;\n get(\n poolName: string,\n bucketName: string,\n keyName: string,\n ): Promise<IncusEntity<IncusRecord>>;\n create(poolName: string, bucketName: string, key: IncusRecord): Promise<IncusRecord>;\n update(\n poolName: string,\n bucketName: string,\n keyName: string,\n key: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(poolName: string, bucketName: string, keyName: string): Promise<void>;\n}\n\nexport interface StorageBucketBackupsApi {\n create(poolName: string, bucketName: string, backup: IncusRecord): IncusAwaitableOperation;\n remove(poolName: string, bucketName: string, name: string): IncusAwaitableOperation;\n download(poolName: string, bucketName: string, name: string): Promise<ReadableStream<Uint8Array>>;\n upload(\n poolName: string,\n bucketName: string,\n backup: IncusRecord,\n body: IncusBinaryInput,\n ): Promise<void>;\n createFromBackup(poolName: string, args: IncusRecord): IncusAwaitableOperation;\n}\n\nexport interface StorageBucketsApi {\n names(poolName: string): Promise<string[]>;\n list(poolName: string, options?: IncusListOptions & { full?: boolean }): Promise<IncusRecord[]>;\n get(\n poolName: string,\n bucketName: string,\n options?: {\n full?: boolean;\n },\n ): Promise<IncusEntity<IncusRecord>>;\n create(poolName: string, bucket: IncusRecord): Promise<IncusRecord>;\n update(\n poolName: string,\n bucketName: string,\n bucket: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(poolName: string, bucketName: string): Promise<void>;\n keys: StorageBucketKeysApi;\n backups: StorageBucketBackupsApi;\n}\n\nexport interface StorageVolumeFilesApi {\n get(\n poolName: string,\n volumeType: string,\n volumeName: string,\n filePath: string,\n ): Promise<InstanceFileResult>;\n put(\n poolName: string,\n volumeType: string,\n volumeName: string,\n filePath: string,\n options: InstanceFilePutOptions,\n ): Promise<void>;\n remove(\n poolName: string,\n volumeType: string,\n volumeName: string,\n filePath: string,\n ): Promise<void>;\n}\n\nexport interface StorageVolumeSnapshotsApi {\n names(poolName: string, volumeType: string, volumeName: string): Promise<string[]>;\n list(poolName: string, volumeType: string, volumeName: string): Promise<IncusRecord[]>;\n get(\n poolName: string,\n volumeType: string,\n volumeName: string,\n snapshotName: string,\n ): Promise<IncusEntity<IncusRecord>>;\n create(\n poolName: string,\n volumeType: string,\n volumeName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation;\n rename(\n poolName: string,\n volumeType: string,\n volumeName: string,\n snapshotName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation;\n update(\n poolName: string,\n volumeType: string,\n volumeName: string,\n snapshotName: string,\n request: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(\n poolName: string,\n volumeType: string,\n volumeName: string,\n snapshotName: string,\n ): IncusAwaitableOperation;\n}\n\nexport interface StorageVolumeBackupsApi {\n names(poolName: string, volumeName: string): Promise<string[]>;\n list(poolName: string, volumeName: string): Promise<IncusRecord[]>;\n get(poolName: string, volumeName: string, backupName: string): Promise<IncusEntity<IncusRecord>>;\n create(poolName: string, volumeName: string, backup: IncusRecord): IncusAwaitableOperation;\n rename(\n poolName: string,\n volumeName: string,\n backupName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation;\n remove(poolName: string, volumeName: string, backupName: string): IncusAwaitableOperation;\n download(\n poolName: string,\n volumeName: string,\n backupName: string,\n ): Promise<ReadableStream<Uint8Array>>;\n upload(\n poolName: string,\n volumeName: string,\n backup: IncusRecord,\n body: IncusBinaryInput,\n ): Promise<void>;\n createFromBackup(poolName: string, args: IncusRecord): IncusAwaitableOperation;\n createFromIso(poolName: string, args: IncusRecord): IncusAwaitableOperation;\n}\n\nexport interface StorageVolumesApi {\n names(\n poolName: string,\n options?: IncusScopeOptions,\n ): Promise<string[] | Record<string, string[]>>;\n list(\n poolName: string,\n options?: IncusListOptions & {\n full?: boolean;\n },\n ): Promise<IncusRecord[]>;\n get(\n poolName: string,\n volumeType: string,\n name: string,\n options?: {\n full?: boolean;\n },\n ): Promise<IncusEntity<IncusRecord>>;\n state(poolName: string, volumeType: string, name: string): Promise<IncusRecord>;\n create(poolName: string, volume: IncusRecord): Promise<void>;\n update(\n poolName: string,\n volumeType: string,\n name: string,\n volume: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(poolName: string, volumeType: string, name: string): Promise<void>;\n rename(poolName: string, volumeType: string, name: string, request: IncusRecord): Promise<void>;\n copyFrom(\n poolName: string,\n source: IncusClient,\n sourcePool: string,\n volume: IncusRecord,\n options?: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n moveFrom(\n poolName: string,\n source: IncusClient,\n sourcePool: string,\n volume: IncusRecord,\n options?: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n migrate(poolName: string, volume: IncusRecord): IncusAwaitableOperation;\n createFromMigration(poolName: string, volume: IncusRecord): IncusAwaitableOperation;\n snapshots: StorageVolumeSnapshotsApi;\n backups: StorageVolumeBackupsApi;\n files: StorageVolumeFilesApi;\n sftp(poolName: string, volumeType: string, volumeName: string): Promise<unknown>;\n}\n\nexport interface StorageApi {\n pools: StoragePoolsApi;\n buckets: StorageBucketsApi;\n volumes: StorageVolumesApi;\n}\n\nexport interface ClusterMembersApi {\n names(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n state(name: string): Promise<IncusEntity<IncusRecord>>;\n create(member: IncusRecord): IncusAwaitableOperation;\n update(name: string, member: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string, options?: { force?: boolean; pending?: boolean }): Promise<void>;\n updateState(name: string, state: IncusRecord): IncusAwaitableOperation;\n}\n\nexport interface ClusterGroupsApi {\n names(): Promise<string[]>;\n list(): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(group: IncusRecord): Promise<void>;\n update(name: string, group: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface ClusterApi {\n get(): Promise<IncusEntity<IncusRecord>>;\n update(cluster: IncusRecord, options?: IncusMutationOptions): IncusAwaitableOperation;\n updateCertificate(certificate: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n members: ClusterMembersApi;\n groups: ClusterGroupsApi;\n}\n\nexport interface WarningsApi {\n uuids(): Promise<string[]>;\n list(): Promise<IncusRecord[]>;\n get(uuid: string): Promise<IncusEntity<IncusRecord>>;\n update(uuid: string, warning: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n remove(uuid: string): Promise<void>;\n}\n\nexport interface OidcApi {\n tokens(): Promise<IncusRecord | null>;\n}\n\nexport interface RawApi {\n query<T = IncusRecord>(\n method: string,\n path: string,\n body?: unknown,\n options?: IncusMutationOptions,\n ): Promise<IncusEntity<T>>;\n websocket(path: string): Promise<WebSocket>;\n operation(\n method: string,\n path: string,\n body?: unknown,\n options?: IncusMutationOptions,\n ): IncusAwaitableOperation;\n}\n\ntype IncusTransportDescriptor = {\n kind: IncusConnectKind;\n endpoint: string;\n socketPath?: string;\n};\n\ntype IncusApiEnvelope = {\n type?: string;\n status?: string;\n status_code?: number;\n operation?: string;\n error?: string;\n error_code?: number;\n metadata?: unknown;\n};\n\ntype InternalRequestOptions = Omit<IncusTransportRequestOptions, \"context\"> & {\n applyContext?: boolean;\n};\n\ntype IncusEnvelopeResult<T = unknown> = {\n value: T;\n etag?: string;\n operation?: string;\n status: number;\n headers?: Headers;\n};\n\ntype FileHeaders = {\n uid?: number;\n gid?: number;\n mode?: number;\n type?: string;\n};\n\ntype WebSocketLike = {\n close(code?: number, reason?: string): void;\n send(data: unknown): void;\n addEventListener?: (type: string, listener: (event: unknown) => void) => void;\n removeEventListener?: (type: string, listener: (event: unknown) => void) => void;\n on?: (type: string, listener: (...args: unknown[]) => void) => void;\n off?: (type: string, listener: (...args: unknown[]) => void) => void;\n};\n\nexport class IncusApiError extends Error {\n readonly status: number;\n readonly statusCode?: number;\n readonly errorCode?: number;\n readonly details?: unknown;\n\n constructor(\n message: string,\n status: number,\n options: {\n statusCode?: number;\n errorCode?: number;\n details?: unknown;\n } = {},\n ) {\n super(message);\n this.name = \"IncusApiError\";\n this.status = status;\n this.statusCode = options.statusCode;\n this.errorCode = options.errorCode;\n this.details = options.details;\n }\n}\n\nconst WEBSOCKET_GUID = \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\";\nconst WS_CONNECTING = 0;\nconst WS_OPEN = 1;\nconst WS_CLOSING = 2;\nconst WS_CLOSED = 3;\n\nclass UnixSocketWebSocket implements WebSocketLike {\n readonly CONNECTING = WS_CONNECTING;\n readonly OPEN = WS_OPEN;\n readonly CLOSING = WS_CLOSING;\n readonly CLOSED = WS_CLOSED;\n\n binaryType: BinaryType = \"arraybuffer\";\n extensions = \"\";\n protocol = \"\";\n readyState = WS_CONNECTING;\n bufferedAmount = 0;\n\n private readonly events = new EventEmitter();\n private readBuffer = Buffer.alloc(0);\n private fragments: Buffer[] = [];\n private fragmentOpcode: number | null = null;\n private closeInfo: { code: number; reason: string } | null = null;\n private closeEmitted = false;\n\n constructor(\n private readonly socket: NodeNetSocket,\n initialData?: Uint8Array,\n ) {\n this.socket.on(\"data\", (chunk: Buffer | string) => {\n this.ingestData(chunk);\n });\n this.socket.on(\"error\", (error: Error) => {\n this.events.emit(\"error\", error);\n });\n this.socket.on(\"close\", () => {\n this.readyState = WS_CLOSED;\n if (!this.closeEmitted) {\n this.closeEmitted = true;\n const info = this.closeInfo ?? { code: 1006, reason: \"\" };\n this.events.emit(\"close\", info.code, info.reason);\n }\n });\n\n this.readyState = WS_OPEN;\n if (initialData && initialData.byteLength > 0) {\n this.ingestData(Buffer.from(initialData));\n }\n }\n\n addEventListener(type: string, listener: (event: unknown) => void): void {\n this.events.on(type, listener as (...args: unknown[]) => void);\n }\n\n removeEventListener(type: string, listener: (event: unknown) => void): void {\n this.events.off(type, listener as (...args: unknown[]) => void);\n }\n\n on(type: string, listener: (...args: unknown[]) => void): void {\n this.events.on(type, listener);\n }\n\n off(type: string, listener: (...args: unknown[]) => void): void {\n this.events.off(type, listener);\n }\n\n once(type: string, listener: (...args: unknown[]) => void): void {\n this.events.once(type, listener);\n }\n\n send(data: unknown): void {\n if (this.readyState !== WS_OPEN) {\n throw new Error(\"[Incus.ts] Cannot send on a closed websocket\");\n }\n\n const payload = typeof data === \"string\"\n ? Buffer.from(data, \"utf8\")\n : Buffer.from(toBytes(data));\n const opcode = typeof data === \"string\" ? 0x1 : 0x2;\n this.writeFrame(opcode, payload, true);\n }\n\n close(code = 1000, reason = \"\"): void {\n if (this.readyState === WS_CLOSED) {\n return;\n }\n\n if (this.readyState === WS_OPEN) {\n this.readyState = WS_CLOSING;\n const reasonBytes = Buffer.from(reason, \"utf8\");\n const payload = Buffer.alloc(2 + reasonBytes.length);\n payload.writeUInt16BE(code, 0);\n reasonBytes.copy(payload, 2);\n this.writeFrame(0x8, payload, true);\n }\n\n this.socket.end();\n }\n\n private ingestData(chunk: Buffer | string): void {\n const bytes = typeof chunk === \"string\" ? Buffer.from(chunk, \"utf8\") : chunk;\n if (bytes.byteLength === 0) {\n return;\n }\n\n this.readBuffer = this.readBuffer.byteLength === 0\n ? Buffer.from(bytes)\n : Buffer.concat([this.readBuffer, bytes]);\n this.parseFrames();\n }\n\n private parseFrames(): void {\n while (this.readBuffer.byteLength >= 2) {\n const first = this.readBuffer[0];\n const second = this.readBuffer[1];\n if (first === undefined || second === undefined) {\n return;\n }\n\n const fin = (first & 0x80) !== 0;\n let opcode = first & 0x0f;\n const masked = (second & 0x80) !== 0;\n\n let offset = 2;\n let payloadLength = second & 0x7f;\n\n if (payloadLength === 126) {\n if (this.readBuffer.byteLength < offset + 2) {\n return;\n }\n\n payloadLength = this.readBuffer.readUInt16BE(offset);\n offset += 2;\n } else if (payloadLength === 127) {\n if (this.readBuffer.byteLength < offset + 8) {\n return;\n }\n\n const extended = this.readBuffer.readBigUInt64BE(offset);\n if (extended > BigInt(Number.MAX_SAFE_INTEGER)) {\n this.events.emit(\"error\", new Error(\"[Incus.ts] Websocket frame too large\"));\n this.close(1009, \"Frame too large\");\n return;\n }\n\n payloadLength = Number(extended);\n offset += 8;\n }\n\n let maskKey: Buffer | undefined;\n if (masked) {\n if (this.readBuffer.byteLength < offset + 4) {\n return;\n }\n\n maskKey = this.readBuffer.subarray(offset, offset + 4);\n offset += 4;\n }\n\n if (this.readBuffer.byteLength < offset + payloadLength) {\n return;\n }\n\n let payload = this.readBuffer.subarray(offset, offset + payloadLength);\n this.readBuffer = this.readBuffer.subarray(offset + payloadLength);\n\n if (maskKey) {\n const decoded = Buffer.alloc(payload.byteLength);\n for (let i = 0; i < payload.byteLength; i += 1) {\n decoded[i] = payload[i]! ^ maskKey[i % 4]!;\n }\n\n payload = decoded;\n }\n\n if (!fin) {\n if (opcode !== 0x0) {\n this.fragmentOpcode = opcode;\n }\n\n this.fragments.push(Buffer.from(payload));\n continue;\n }\n\n if (opcode === 0x0 && this.fragmentOpcode !== null) {\n this.fragments.push(Buffer.from(payload));\n payload = Buffer.concat(this.fragments);\n opcode = this.fragmentOpcode;\n this.fragments = [];\n this.fragmentOpcode = null;\n }\n\n this.handleFrame(opcode, payload);\n }\n }\n\n private handleFrame(opcode: number, payload: Buffer): void {\n switch (opcode) {\n case 0x1:\n this.events.emit(\"message\", payload.toString(\"utf8\"));\n break;\n case 0x2:\n this.events.emit(\"message\", new Uint8Array(payload));\n break;\n case 0x8: {\n let code = 1000;\n let reason = \"\";\n if (payload.byteLength >= 2) {\n code = payload.readUInt16BE(0);\n reason = payload.subarray(2).toString(\"utf8\");\n }\n\n this.closeInfo = { code, reason };\n if (this.readyState === WS_OPEN) {\n this.readyState = WS_CLOSING;\n this.writeFrame(0x8, payload, true);\n }\n\n this.socket.end();\n break;\n }\n case 0x9:\n this.writeFrame(0xA, payload, true);\n break;\n case 0xA:\n break;\n default:\n this.events.emit(\"error\", new Error(`[Incus.ts] Unsupported websocket opcode: ${opcode}`));\n }\n }\n\n private writeFrame(opcode: number, payload: Buffer, mask: boolean): void {\n const parts: Buffer[] = [];\n const firstByte = 0x80 | (opcode & 0x0f);\n const payloadLength = payload.byteLength;\n\n if (payloadLength < 126) {\n parts.push(Buffer.from([firstByte, (mask ? 0x80 : 0) | payloadLength]));\n } else if (payloadLength <= 0xffff) {\n const header = Buffer.alloc(4);\n header[0] = firstByte;\n header[1] = (mask ? 0x80 : 0) | 126;\n header.writeUInt16BE(payloadLength, 2);\n parts.push(header);\n } else {\n const header = Buffer.alloc(10);\n header[0] = firstByte;\n header[1] = (mask ? 0x80 : 0) | 127;\n header.writeBigUInt64BE(BigInt(payloadLength), 2);\n parts.push(header);\n }\n\n if (mask) {\n const maskKey = randomBytes(4);\n const maskedPayload = Buffer.from(payload);\n for (let i = 0; i < maskedPayload.byteLength; i += 1) {\n maskedPayload[i] = maskedPayload[i]! ^ maskKey[i % 4]!;\n }\n\n parts.push(maskKey, maskedPayload);\n } else {\n parts.push(payload);\n }\n\n this.socket.write(Buffer.concat(parts));\n }\n}\n\nclass FetchTransport implements IncusTransport {\n constructor(\n private readonly descriptor: IncusTransportDescriptor,\n private readonly defaults: Readonly<IncusConnectionOptions>,\n ) {}\n\n async request<T = unknown>(\n method: string,\n path: string,\n options: IncusTransportRequestOptions = {},\n ): Promise<IncusTransportResponse<T>> {\n const url = this.makeRequestUrl(path, options.query);\n const headers = this.makeHeaders(options);\n const bodyInfo = prepareBody(options.body);\n\n if (bodyInfo.contentType && !headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", bodyInfo.contentType);\n }\n\n const fetchImpl = this.defaults.fetch ?? fetch;\n const response = await fetchImpl(url, {\n method: method.toUpperCase(),\n headers,\n body: bodyInfo.body,\n signal: options.signal ?? this.defaults.signal,\n redirect: \"follow\",\n });\n\n return {\n status: response.status,\n etag: response.headers.get(\"etag\") ?? undefined,\n headers: response.headers,\n data: (await parseResponseBody(response)) as T,\n };\n }\n\n async websocket(path: string, protocols?: string | string[]): Promise<WebSocket> {\n const baseUrl = toWsBaseURL(this.descriptor.endpoint);\n const target = path.startsWith(\"ws://\") || path.startsWith(\"wss://\")\n ? path\n : new URL(normalizePath(path), baseUrl).toString();\n\n return new WebSocket(target, protocols);\n }\n\n private makeRequestUrl(\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n ): string {\n const isAbsolute = /^https?:\\/\\//.test(path);\n const url = isAbsolute\n ? new URL(path)\n : new URL(normalizePath(path), `${this.descriptor.endpoint}/`);\n\n if (query) {\n for (const [key, rawValue] of Object.entries(query)) {\n if (rawValue === undefined) {\n continue;\n }\n\n url.searchParams.set(key, String(rawValue));\n }\n }\n\n return url.toString();\n }\n\n private makeHeaders(options: IncusTransportRequestOptions): Headers {\n const headers = new Headers(this.defaults.headers);\n applyHeaders(headers, options.headers);\n\n if (this.defaults.userAgent && !headers.has(\"User-Agent\")) {\n headers.set(\"User-Agent\", this.defaults.userAgent);\n }\n\n if (options.etag) {\n headers.set(\"If-Match\", options.etag);\n }\n\n if (options.context?.requireAuthenticated) {\n headers.set(\"X-Incus-authenticated\", \"true\");\n }\n\n if (this.defaults.oidcTokens?.accessToken && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", `Bearer ${this.defaults.oidcTokens.accessToken}`);\n }\n\n return headers;\n }\n}\n\nclass UnixSocketTransport implements IncusTransport {\n constructor(\n private readonly descriptor: IncusTransportDescriptor,\n private readonly defaults: Readonly<IncusConnectionOptions>,\n ) {}\n\n async request<T = unknown>(\n method: string,\n path: string,\n options: IncusTransportRequestOptions = {},\n ): Promise<IncusTransportResponse<T>> {\n const socketPath = this.descriptor.socketPath;\n if (!socketPath) {\n throw new Error(\"[Incus.ts] Missing Unix socket path\");\n }\n\n const requestPath = this.makeRequestPath(path, options.query);\n const headers = this.makeHeaders(options);\n const bodyInfo = await prepareUnixBody(options.body);\n\n if (bodyInfo.contentType && !headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", bodyInfo.contentType);\n }\n\n if (bodyInfo.bodyBytes) {\n headers.set(\"Content-Length\", String(bodyInfo.bodyBytes.byteLength));\n }\n\n return new Promise<IncusTransportResponse<T>>((resolve, reject) => {\n const req = nodeHttpRequest(\n {\n socketPath,\n path: requestPath,\n method: method.toUpperCase(),\n headers: headersToObject(headers),\n },\n (res) => {\n const chunks: Buffer[] = [];\n res.on(\"data\", (chunk: Buffer | string) => {\n if (typeof chunk === \"string\") {\n chunks.push(Buffer.from(chunk));\n } else {\n chunks.push(chunk);\n }\n });\n res.on(\"end\", () => {\n const bytes = Buffer.concat(chunks);\n const responseHeaders = nodeHeadersToWebHeaders(res.headers);\n const contentType = responseHeaders.get(\"content-type\") ?? undefined;\n const parsed = parseRawBody(contentType, bytes);\n\n resolve({\n status: res.statusCode ?? 0,\n etag: responseHeaders.get(\"etag\") ?? undefined,\n headers: responseHeaders,\n data: parsed as T,\n });\n });\n },\n );\n\n req.on(\"error\", reject);\n\n if (options.signal) {\n options.signal.addEventListener(\n \"abort\",\n () => {\n req.destroy(new Error(\"Request aborted\"));\n },\n { once: true },\n );\n }\n\n if (bodyInfo.bodyBytes) {\n req.write(bodyInfo.bodyBytes);\n }\n\n req.end();\n });\n }\n\n async websocket(path: string, protocols?: string | string[]): Promise<WebSocket> {\n const socketPath = this.descriptor.socketPath;\n if (!socketPath) {\n throw new Error(\"[Incus.ts] Missing Unix socket path\");\n }\n\n const requestPath = path.startsWith(\"ws://\") || path.startsWith(\"wss://\")\n ? (() => {\n const url = new URL(path);\n return `${url.pathname}${url.search}`;\n })()\n : normalizePath(path);\n const headers = this.makeWebsocketHeaders();\n if (!headers.has(\"Host\")) {\n headers.set(\"Host\", \"incus.local\");\n }\n\n const websocketKey = randomBytes(16).toString(\"base64\");\n headers.set(\"Connection\", \"Upgrade\");\n headers.set(\"Upgrade\", \"websocket\");\n headers.set(\"Sec-WebSocket-Version\", \"13\");\n headers.set(\"Sec-WebSocket-Key\", websocketKey);\n\n if (protocols) {\n const selected = Array.isArray(protocols) ? protocols.join(\", \") : protocols;\n if (selected.length > 0) {\n headers.set(\"Sec-WebSocket-Protocol\", selected);\n }\n }\n\n const requestLines = [`GET ${requestPath} HTTP/1.1`];\n for (const [key, value] of headers.entries()) {\n requestLines.push(`${key}: ${value}`);\n }\n requestLines.push(\"\", \"\");\n\n return new Promise<WebSocket>((resolve, reject) => {\n const socket = nodeNetConnect(socketPath);\n let handshakeBuffer = Buffer.alloc(0);\n let settled = false;\n\n const finish = (\n handler: (socket: NodeNetSocket, tail: Uint8Array) => void,\n tail: Uint8Array,\n ) => {\n if (settled) {\n return;\n }\n\n settled = true;\n cleanup();\n handler(socket, tail);\n };\n\n const fail = (error: Error) => {\n if (settled) {\n return;\n }\n\n settled = true;\n cleanup();\n socket.destroy();\n reject(error);\n };\n\n const timeout = setTimeout(() => {\n fail(new Error(\"[Incus.ts] WebSocket opening handshake timed out\"));\n }, 10_000);\n\n const cleanup = () => {\n clearTimeout(timeout);\n socket.off(\"connect\", onConnect);\n socket.off(\"data\", onData);\n socket.off(\"error\", onError);\n socket.off(\"close\", onClose);\n };\n\n const onConnect = () => {\n socket.write(requestLines.join(\"\\r\\n\"));\n };\n\n const onData = (chunk: Buffer | string) => {\n const bytes = typeof chunk === \"string\" ? Buffer.from(chunk, \"utf8\") : chunk;\n handshakeBuffer = handshakeBuffer.byteLength === 0\n ? Buffer.from(bytes)\n : Buffer.concat([handshakeBuffer, bytes]);\n\n const delimiterIndex = handshakeBuffer.indexOf(\"\\r\\n\\r\\n\");\n if (delimiterIndex < 0) {\n return;\n }\n\n const responseHeaders = handshakeBuffer.subarray(0, delimiterIndex + 4);\n const leftover = handshakeBuffer.subarray(delimiterIndex + 4);\n const responseText = responseHeaders.toString(\"utf8\");\n const lines = responseText.split(\"\\r\\n\");\n\n const statusLine = lines.shift() ?? \"\";\n const statusMatch = /^HTTP\\/1\\.[01]\\s+(\\d+)/.exec(statusLine);\n const status = statusMatch ? Number.parseInt(statusMatch[1]!, 10) : 0;\n if (status !== 101) {\n fail(new Error(`[Incus.ts] WebSocket upgrade failed with status ${status || \"unknown\"}`));\n return;\n }\n\n const parsedHeaders = new Map<string, string>();\n for (const line of lines) {\n if (line.length === 0) {\n continue;\n }\n\n const separator = line.indexOf(\":\");\n if (separator < 0) {\n continue;\n }\n\n const key = line.slice(0, separator).trim().toLowerCase();\n const value = line.slice(separator + 1).trim();\n parsedHeaders.set(key, value);\n }\n\n const upgradeHeader = parsedHeaders.get(\"upgrade\")?.toLowerCase();\n if (upgradeHeader !== \"websocket\") {\n fail(new Error(\"[Incus.ts] Invalid websocket upgrade response\"));\n return;\n }\n\n const accept = parsedHeaders.get(\"sec-websocket-accept\");\n const expectedAccept = createHash(\"sha1\")\n .update(`${websocketKey}${WEBSOCKET_GUID}`)\n .digest(\"base64\");\n if (accept !== expectedAccept) {\n fail(new Error(\"[Incus.ts] Invalid websocket accept token\"));\n return;\n }\n\n finish(\n (upgradedSocket, tail) => {\n const websocket = new UnixSocketWebSocket(\n upgradedSocket,\n tail.byteLength > 0 ? tail : undefined,\n );\n resolve(websocket as unknown as WebSocket);\n },\n new Uint8Array(leftover),\n );\n };\n\n const onError = (error: Error) => {\n fail(error);\n };\n\n const onClose = () => {\n fail(new Error(\"[Incus.ts] WebSocket connection closed before upgrade completed\"));\n };\n\n socket.on(\"connect\", onConnect);\n socket.on(\"data\", onData);\n socket.on(\"error\", onError);\n socket.on(\"close\", onClose);\n });\n }\n\n private makeRequestPath(\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n ): string {\n const url = new URL(normalizePath(path), \"http://incus.local\");\n if (query) {\n for (const [key, rawValue] of Object.entries(query)) {\n if (rawValue === undefined) {\n continue;\n }\n\n url.searchParams.set(key, String(rawValue));\n }\n }\n\n return `${url.pathname}${url.search}`;\n }\n\n private makeHeaders(options: IncusTransportRequestOptions): Headers {\n const headers = new Headers(this.defaults.headers);\n applyHeaders(headers, options.headers);\n\n if (this.defaults.userAgent && !headers.has(\"User-Agent\")) {\n headers.set(\"User-Agent\", this.defaults.userAgent);\n }\n\n if (options.etag) {\n headers.set(\"If-Match\", options.etag);\n }\n\n if (options.context?.requireAuthenticated) {\n headers.set(\"X-Incus-authenticated\", \"true\");\n }\n\n if (this.defaults.oidcTokens?.accessToken && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", `Bearer ${this.defaults.oidcTokens.accessToken}`);\n }\n\n return headers;\n }\n\n private makeWebsocketHeaders(): Headers {\n const headers = new Headers(this.defaults.headers);\n\n if (this.defaults.userAgent && !headers.has(\"User-Agent\")) {\n headers.set(\"User-Agent\", this.defaults.userAgent);\n }\n\n if (this.defaults.oidcTokens?.accessToken && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", `Bearer ${this.defaults.oidcTokens.accessToken}`);\n }\n\n return headers;\n }\n}\n\nfunction normalizeEndpoint(endpoint: string): string {\n if (endpoint.length <= 1) {\n return endpoint;\n }\n\n return endpoint.endsWith(\"/\") ? endpoint.slice(0, -1) : endpoint;\n}\n\nfunction normalizePath(path: string): string {\n if (path.startsWith(\"http://\") || path.startsWith(\"https://\")) {\n return path;\n }\n\n return path.startsWith(\"/\") ? path : `/${path}`;\n}\n\nfunction toWsBaseURL(endpoint: string): string {\n const url = new URL(endpoint);\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n if (!url.pathname.endsWith(\"/\")) {\n url.pathname = `${url.pathname}/`;\n }\n\n return url.toString();\n}\n\nfunction applyHeaders(target: Headers, source?: HeadersInit): void {\n if (!source) {\n return;\n }\n\n const toApply = new Headers(source);\n for (const [key, value] of toApply.entries()) {\n target.set(key, value);\n }\n}\n\nfunction headersToObject(headers: Headers): Record<string, string> {\n const result: Record<string, string> = {};\n for (const [key, value] of headers.entries()) {\n result[key] = value;\n }\n\n return result;\n}\n\nfunction nodeHeadersToWebHeaders(\n headers: Record<string, string | string[] | undefined>,\n): Headers {\n const result = new Headers();\n for (const [key, value] of Object.entries(headers)) {\n if (value === undefined) {\n continue;\n }\n\n if (Array.isArray(value)) {\n result.set(key, value.join(\", \"));\n } else {\n result.set(key, value);\n }\n }\n\n return result;\n}\n\nfunction isIncusEnvelope(value: unknown): value is IncusApiEnvelope {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n\n const asRecord = value as Record<string, unknown>;\n return \"type\" in asRecord && \"metadata\" in asRecord;\n}\n\nasync function parseResponseBody(response: Response): Promise<unknown> {\n if (response.status === 204) {\n return null;\n }\n\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"application/json\")) {\n return response.json();\n }\n\n if (\n contentType.startsWith(\"text/\") ||\n contentType.includes(\"application/openmetrics-text\")\n ) {\n return response.text();\n }\n\n return new Uint8Array(await response.arrayBuffer());\n}\n\nfunction parseRawBody(contentType: string | undefined, bytes: Uint8Array): unknown {\n if (bytes.byteLength === 0) {\n return null;\n }\n\n const type = contentType ?? \"\";\n if (type.includes(\"application/json\")) {\n try {\n return JSON.parse(new TextDecoder().decode(bytes));\n } catch {\n return new TextDecoder().decode(bytes);\n }\n }\n\n if (type.startsWith(\"text/\") || type.includes(\"application/openmetrics-text\")) {\n return new TextDecoder().decode(bytes);\n }\n\n return bytes;\n}\n\nfunction parseFilters(filters: string[]): string {\n const translated: string[] = [];\n for (const filter of filters) {\n if (!filter.includes(\"=\")) {\n continue;\n }\n\n const [left, right] = filter.split(\"=\", 2);\n translated.push(`${left} eq ${right}`);\n }\n\n return translated.join(\" and \");\n}\n\nfunction urlsToResourceNames(matchPathPrefix: string, urls: string[]): string[] {\n const normalizedPrefix = `${matchPathPrefix.replace(/\\/$/, \"\")}/`;\n return urls.map((rawUrl) => {\n const parsed = new URL(rawUrl, \"http://incus.local\");\n const index = parsed.pathname.indexOf(normalizedPrefix);\n if (index < 0) {\n throw new Error(`[Incus.ts] Unexpected resource URL: ${rawUrl}`);\n }\n\n return decodeURIComponent(parsed.pathname.slice(index + normalizedPrefix.length));\n });\n}\n\nfunction toStringArray(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.filter((entry): entry is string => typeof entry === \"string\");\n}\n\nfunction toRecord(value: unknown): IncusRecord {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n return value as IncusRecord;\n}\n\nfunction toRecordArray(value: unknown): IncusRecord[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .filter((entry): entry is Record<string, unknown> => !!entry && typeof entry === \"object\")\n .map((entry) => entry as IncusRecord);\n}\n\nfunction flattenOperationMap(value: unknown): IncusRecord[] {\n if (Array.isArray(value)) {\n return toRecordArray(value);\n }\n\n if (!value || typeof value !== \"object\") {\n return [];\n }\n\n const out: IncusRecord[] = [];\n for (const entry of Object.values(value)) {\n if (Array.isArray(entry)) {\n out.push(...toRecordArray(entry));\n }\n }\n\n return out;\n}\n\nfunction decodeOperationId(operationValue: string): string {\n const cleaned = operationValue.split(\"?\")[0] ?? operationValue;\n const parts = cleaned.split(\"/\").filter(Boolean);\n return decodeURIComponent(parts[parts.length - 1] ?? operationValue);\n}\n\nfunction operationPath(id: string): string {\n return `/1.0/operations/${encodeURIComponent(id)}`;\n}\n\nfunction toReadableStream(data: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(data);\n controller.close();\n },\n });\n}\n\nfunction toBytes(data: unknown): Uint8Array {\n if (data instanceof Uint8Array) {\n return data;\n }\n\n if (typeof data === \"string\") {\n return new TextEncoder().encode(data);\n }\n\n if (data === null || data === undefined) {\n return new Uint8Array();\n }\n\n return new TextEncoder().encode(JSON.stringify(data));\n}\n\nfunction toStringRecord(value: unknown): Record<string, string> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const out: Record<string, string> = {};\n for (const [key, entry] of Object.entries(value)) {\n if (typeof entry === \"string\") {\n out[key] = entry;\n }\n }\n\n return out;\n}\n\nfunction parseOperationIdFromEnvelope(result: IncusEnvelopeResult<unknown>): string | undefined {\n if (typeof result.operation === \"string\" && result.operation.length > 0) {\n return decodeOperationId(result.operation);\n }\n\n if (result.value && typeof result.value === \"object\") {\n const asRecord = result.value as Record<string, unknown>;\n if (typeof asRecord.id === \"string\" && asRecord.id.length > 0) {\n return decodeOperationId(asRecord.id);\n }\n\n if (typeof asRecord.operation === \"string\" && asRecord.operation.length > 0) {\n return decodeOperationId(asRecord.operation);\n }\n }\n\n return undefined;\n}\n\nfunction assertOperationSuccess(operation: IncusRecord, source: string): void {\n const err = operation.err;\n if (typeof err === \"string\" && err.trim().length > 0) {\n throw new Error(`[Incus.ts] Operation ${source} failed: ${err}`);\n }\n\n const statusCode = operation.status_code;\n if (typeof statusCode === \"number\" && statusCode >= 400) {\n const status = typeof operation.status === \"string\" ? ` (${operation.status})` : \"\";\n throw new Error(\n `[Incus.ts] Operation ${source} failed with status code ${statusCode}${status}`,\n );\n }\n}\n\nfunction parseExecExitCode(operation: IncusRecord): number | undefined {\n const candidates: unknown[] = [\n operation.return,\n operation[\"return-code\"],\n operation.return_code,\n toRecord(operation.metadata).return,\n toRecord(operation.metadata)[\"return-code\"],\n toRecord(operation.metadata).return_code,\n ];\n\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n\n if (typeof candidate === \"string\" && candidate.length > 0) {\n const parsed = Number.parseInt(candidate, 10);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n }\n\n return undefined;\n}\n\nfunction toExecResult(operation: IncusRecord): IncusExecResult {\n const exitCode = parseExecExitCode(operation);\n return {\n operation,\n exitCode,\n ok: exitCode === undefined ? true : exitCode === 0,\n };\n}\n\nfunction extractExecFds(operationValue: unknown): Record<string, string> {\n const record = toRecord(operationValue);\n const candidates: unknown[] = [\n record.fds,\n toRecord(record.metadata).fds,\n toRecord(toRecord(record.operation).metadata).fds,\n toRecord(toRecord(record.metadata).operation).fds,\n ];\n\n for (const candidate of candidates) {\n const fds = toStringRecord(candidate);\n if (Object.keys(fds).length > 0) {\n return fds;\n }\n }\n\n return {};\n}\n\nfunction getBooleanValue(record: IncusRecord, keys: string[]): boolean | undefined {\n for (const key of keys) {\n const value = record[key];\n if (typeof value === \"boolean\") {\n return value;\n }\n }\n\n return undefined;\n}\n\nfunction isInteractiveExecRequest(request: IncusRecord): boolean {\n return getBooleanValue(request, [\"interactive\", \"Interactive\"]) ?? false;\n}\n\nfunction hasWaitForWebsocketFlag(request: IncusRecord): boolean {\n return getBooleanValue(request, [\n \"wait-for-websocket\",\n \"wait_for_websocket\",\n \"waitForWebsocket\",\n \"waitForWS\",\n \"WaitForWS\",\n ]) !== undefined;\n}\n\nfunction isNodeWebSocket(socket: WebSocketLike): boolean {\n return typeof socket.on === \"function\";\n}\n\nfunction addWebSocketMessageListener(\n socket: WebSocketLike,\n listener: (data: unknown) => void,\n): () => void {\n if (isNodeWebSocket(socket) && socket.on && socket.off) {\n const nodeListener = (data: unknown) => {\n listener(data);\n };\n socket.on(\"message\", nodeListener);\n return () => {\n socket.off?.(\"message\", nodeListener);\n };\n }\n\n const domListener = (event: unknown) => {\n const data = event && typeof event === \"object\" && \"data\" in event\n ? (event as { data: unknown }).data\n : event;\n listener(data);\n };\n\n socket.addEventListener?.(\"message\", domListener);\n return () => {\n socket.removeEventListener?.(\"message\", domListener);\n };\n}\n\nfunction addWebSocketCloseListener(socket: WebSocketLike, listener: () => void): () => void {\n if (isNodeWebSocket(socket) && socket.on && socket.off) {\n const nodeListener = () => {\n listener();\n };\n socket.on(\"close\", nodeListener);\n return () => {\n socket.off?.(\"close\", nodeListener);\n };\n }\n\n const domListener = () => {\n listener();\n };\n socket.addEventListener?.(\"close\", domListener);\n return () => {\n socket.removeEventListener?.(\"close\", domListener);\n };\n}\n\nfunction addWebSocketErrorListener(\n socket: WebSocketLike,\n listener: (error: unknown) => void,\n): () => void {\n if (isNodeWebSocket(socket) && socket.on && socket.off) {\n const nodeListener = (error: unknown) => {\n listener(error);\n };\n socket.on(\"error\", nodeListener);\n return () => {\n socket.off?.(\"error\", nodeListener);\n };\n }\n\n const domListener = (event: unknown) => {\n listener(event);\n };\n socket.addEventListener?.(\"error\", domListener);\n return () => {\n socket.removeEventListener?.(\"error\", domListener);\n };\n}\n\nfunction closeWebSocketSafely(socket: WebSocketLike): void {\n try {\n socket.close();\n } catch {\n // Best effort.\n }\n}\n\ntype AsyncQueue<T> = {\n iterable: AsyncIterable<T>;\n push(value: T): void;\n close(): void;\n fail(error: unknown): void;\n done: Promise<void>;\n};\n\nfunction createAsyncQueue<T>(): AsyncQueue<T> {\n const items: T[] = [];\n const waiters: Array<{\n resolve: (result: IteratorResult<T>) => void;\n reject: (reason?: unknown) => void;\n }> = [];\n let closed = false;\n let failure: unknown | undefined;\n let resolveDone!: () => void;\n const done = new Promise<void>((resolve) => {\n resolveDone = resolve;\n });\n\n const settleDone = () => {\n resolveDone();\n };\n\n const close = () => {\n if (closed) {\n return;\n }\n\n closed = true;\n while (waiters.length > 0) {\n const waiter = waiters.shift();\n waiter?.resolve({ done: true, value: undefined as T });\n }\n settleDone();\n };\n\n const fail = (error: unknown) => {\n if (closed) {\n return;\n }\n\n failure = error;\n closed = true;\n while (waiters.length > 0) {\n const waiter = waiters.shift();\n waiter?.reject(error);\n }\n settleDone();\n };\n\n const push = (value: T) => {\n if (closed) {\n return;\n }\n\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve({ done: false, value });\n return;\n }\n\n items.push(value);\n };\n\n const iterable: AsyncIterable<T> = {\n [Symbol.asyncIterator]() {\n return {\n next: () => {\n if (items.length > 0) {\n const value = items.shift();\n return Promise.resolve({ done: false, value: value as T });\n }\n\n if (failure !== undefined) {\n return Promise.reject(failure);\n }\n\n if (closed) {\n return Promise.resolve({ done: true, value: undefined as T });\n }\n\n return new Promise<IteratorResult<T>>((resolve, reject) => {\n waiters.push({ resolve, reject });\n });\n },\n };\n },\n };\n\n return { iterable, push, close, fail, done };\n}\n\nfunction createAwaitableOperation(\n operationReadyInput: PromiseLike<IncusOperation> | IncusOperation,\n defaultWaitOptions: IncusOperationWaitOptions = {},\n): IncusAwaitableOperation {\n const operationReady = Promise.resolve(operationReadyInput);\n let operationId = \"\";\n void operationReady.then((operation) => {\n operationId = operation.id;\n }).catch(() => {\n // Best effort.\n });\n\n const wait = (options: IncusOperationWaitOptions = defaultWaitOptions) => (\n operationReady.then((operation) => operation.wait(options))\n );\n\n let defaultWaitPromise: Promise<IncusRecord> | undefined;\n const getDefaultWaitPromise = () => {\n defaultWaitPromise ??= wait(defaultWaitOptions);\n return defaultWaitPromise;\n };\n\n return {\n get id(): string {\n return operationId;\n },\n wait,\n cancel: () => operationReady.then((operation) => operation.cancel()),\n refresh: () => operationReady.then((operation) => operation.refresh()),\n websocket: (secret: string) => operationReady.then((operation) => operation.websocket(secret)),\n onUpdate: (handler: (operation: IncusRecord) => void) => (\n operationReady.then((operation) => operation.onUpdate(handler))\n ),\n then: <TResult1 = IncusRecord, TResult2 = never>(\n onFulfilled?: ((value: IncusRecord) => TResult1 | PromiseLike<TResult1>) | null,\n onRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> => (\n getDefaultWaitPromise().then(onFulfilled, onRejected)\n ),\n catch: <TResult = never>(\n onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<IncusRecord | TResult> => (\n getDefaultWaitPromise().catch(onRejected)\n ),\n finally: (onFinally?: (() => void) | null): Promise<IncusRecord> => (\n getDefaultWaitPromise().finally(onFinally ?? undefined)\n ),\n };\n}\n\nasync function webSocketDataToBytes(data: unknown): Promise<Uint8Array> {\n if (data instanceof Uint8Array) {\n return data;\n }\n\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n\n if (data instanceof Blob) {\n return new Uint8Array(await data.arrayBuffer());\n }\n\n if (typeof data === \"string\") {\n return new TextEncoder().encode(data);\n }\n\n return toBytes(data);\n}\n\nfunction streamWebSocketToWritable(\n socket: WebSocketLike,\n options: {\n output?: WritableStream<Uint8Array>;\n onChunk?: (chunk: Uint8Array) => void;\n onError?: (error: unknown) => void;\n onClose?: () => void;\n } = {},\n): Promise<void> {\n const writer = options.output?.getWriter();\n let writeChain = Promise.resolve();\n let finished = false;\n const detachments: Array<() => void> = [];\n let resolveDone!: () => void;\n const done = new Promise<void>((resolve) => {\n resolveDone = resolve;\n });\n\n const finish = (error?: unknown) => {\n if (finished) {\n return;\n }\n\n finished = true;\n for (const detach of detachments) {\n detach();\n }\n\n void writeChain.finally(async () => {\n if (error !== undefined) {\n options.onError?.(error);\n } else {\n options.onClose?.();\n }\n\n if (writer) {\n try {\n await writer.close();\n } catch {\n // Best effort.\n }\n\n writer.releaseLock();\n }\n\n resolveDone();\n });\n };\n\n detachments.push(\n addWebSocketMessageListener(socket, (data) => {\n writeChain = writeChain.then(async () => {\n const bytes = await webSocketDataToBytes(data);\n options.onChunk?.(bytes);\n if (writer) {\n await writer.write(bytes);\n }\n }).catch((error) => {\n finish(error);\n });\n }),\n );\n detachments.push(addWebSocketCloseListener(socket, () => finish()));\n detachments.push(addWebSocketErrorListener(socket, (error) => finish(error)));\n\n return done;\n}\n\nasync function sendToWebSocket(socket: WebSocketLike, data: Uint8Array): Promise<void> {\n if (isNodeWebSocket(socket)) {\n await new Promise<void>((resolve, reject) => {\n (socket as unknown as {\n send: (\n payload: Uint8Array,\n callback: (error?: Error) => void,\n ) => void;\n }).send(data, (error?: Error) => {\n if (error) {\n reject(error);\n return;\n }\n\n resolve();\n });\n });\n return;\n }\n\n socket.send(data);\n}\n\nasync function* toInputChunks(input: IncusBinaryInput): AsyncGenerator<Uint8Array> {\n if (input instanceof Uint8Array) {\n yield input;\n return;\n }\n\n if (input instanceof ArrayBuffer) {\n yield new Uint8Array(input);\n return;\n }\n\n if (ArrayBuffer.isView(input)) {\n yield new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n return;\n }\n\n if (input instanceof Blob) {\n yield new Uint8Array(await input.arrayBuffer());\n return;\n }\n\n const reader = input.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n\n if (value) {\n yield value;\n }\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nasync function writeInputToWebSocket(socket: WebSocketLike, input?: IncusBinaryInput): Promise<void> {\n if (!input) {\n closeWebSocketSafely(socket);\n return;\n }\n\n try {\n for await (const chunk of toInputChunks(input)) {\n await sendToWebSocket(socket, chunk);\n }\n } finally {\n closeWebSocketSafely(socket);\n }\n}\n\nfunction parseFileHeaders(headers: Headers | undefined): FileHeaders {\n if (!headers) {\n return {};\n }\n\n const uidRaw = headers.get(\"x-incus-uid\");\n const gidRaw = headers.get(\"x-incus-gid\");\n const modeRaw = headers.get(\"x-incus-mode\");\n const typeRaw = headers.get(\"x-incus-type\");\n\n return {\n uid: uidRaw ? Number.parseInt(uidRaw, 10) : undefined,\n gid: gidRaw ? Number.parseInt(gidRaw, 10) : undefined,\n mode: modeRaw ? Number.parseInt(modeRaw, 8) : undefined,\n type: typeRaw ?? undefined,\n };\n}\n\nfunction createNotImplementedProxy(path: string[]): unknown {\n const fn = (..._args: unknown[]) =>\n Promise.reject(\n new Error(`[Incus.ts] ${path.join(\".\")}() is not implemented yet`),\n );\n\n return new Proxy(fn, {\n get(_target, property) {\n if (property === \"then\") {\n return undefined;\n }\n\n if (typeof property === \"symbol\") {\n return undefined;\n }\n\n return createNotImplementedProxy([...path, String(property)]);\n },\n apply() {\n return Promise.reject(\n new Error(`[Incus.ts] ${path.join(\".\")}() is not implemented yet`),\n );\n },\n });\n}\n\nfunction createApiWithFallback<T extends object>(root: string, implemented: Partial<T>): T {\n return new Proxy(implemented as T, {\n get(target, property, receiver) {\n if (typeof property === \"symbol\") {\n return Reflect.get(target, property, receiver);\n }\n\n if (Reflect.has(target, property)) {\n return Reflect.get(target, property, receiver);\n }\n\n return createNotImplementedProxy([root, String(property)]);\n },\n });\n}\n\nfunction createRemoteOperationFromTarget(\n targetOperation: IncusOperation | null,\n): IncusRemoteOperation {\n return {\n wait: async () => {\n if (targetOperation) {\n await targetOperation.wait();\n }\n },\n cancelTarget: async () => {\n if (targetOperation) {\n await targetOperation.cancel();\n }\n },\n target: async () => {\n if (!targetOperation) {\n return null;\n }\n\n return targetOperation.refresh();\n },\n onUpdate: async (handler) => {\n if (!targetOperation) {\n return async () => {};\n }\n\n return targetOperation.onUpdate(handler);\n },\n };\n}\n\nfunction prepareBody(body: unknown): {\n body: BodyInit | null | undefined;\n contentType?: string;\n} {\n if (body === undefined || body === null) {\n return { body: undefined };\n }\n\n if (\n body instanceof Blob ||\n body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n body instanceof ReadableStream ||\n typeof body === \"string\" ||\n body instanceof URLSearchParams ||\n body instanceof FormData\n ) {\n return { body: body as BodyInit };\n }\n\n return {\n body: JSON.stringify(body),\n contentType: \"application/json\",\n };\n}\n\nasync function prepareUnixBody(body: unknown): Promise<{\n bodyBytes?: Uint8Array;\n contentType?: string;\n}> {\n if (body === undefined || body === null) {\n return {};\n }\n\n if (typeof body === \"string\") {\n return { bodyBytes: new TextEncoder().encode(body), contentType: \"text/plain\" };\n }\n\n if (body instanceof Uint8Array) {\n return { bodyBytes: body };\n }\n\n if (body instanceof ArrayBuffer) {\n return { bodyBytes: new Uint8Array(body) };\n }\n\n if (ArrayBuffer.isView(body)) {\n return { bodyBytes: new Uint8Array(body.buffer, body.byteOffset, body.byteLength) };\n }\n\n if (body instanceof Blob) {\n return { bodyBytes: new Uint8Array(await body.arrayBuffer()) };\n }\n\n if (body instanceof ReadableStream) {\n throw new Error(\"[Incus.ts] ReadableStream body over Unix socket is not implemented yet\");\n }\n\n return {\n bodyBytes: new TextEncoder().encode(JSON.stringify(body)),\n contentType: \"application/json\",\n };\n}\n\nexport class IncusImageClient {\n readonly connection: ConnectionApi;\n readonly images: ImagesApi;\n readonly raw: RawApi;\n\n protected readonly contextState: Readonly<IncusRequestContext>;\n protected readonly kind: IncusConnectKind;\n private serverSnapshot?: IncusRecord;\n\n constructor(\n protected readonly transport: IncusTransport,\n readonly endpoint: string,\n readonly options: Readonly<IncusConnectionOptions> = {},\n context: Readonly<IncusRequestContext> = {},\n kind: IncusConnectKind = \"incus\",\n ) {\n this.contextState = context;\n this.kind = kind;\n this.connection = this.createConnectionApi();\n this.raw = this.createRawApi();\n this.images = this.createImagesApi();\n }\n\n get context(): Readonly<IncusRequestContext> {\n return this.contextState;\n }\n\n disconnect(): void {\n this.transport.close?.();\n }\n\n protected async requestTransport(\n method: string,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<IncusTransportResponse<unknown>> {\n const { applyContext = true, ...rest } = options;\n return this.transport.request(method, path, {\n ...rest,\n context: applyContext ? this.contextState : undefined,\n });\n }\n\n protected async requestEnvelope<T = unknown>(\n method: string,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<IncusEnvelopeResult<T>> {\n const response = await this.requestTransport(method, path, options);\n const payload = response.data;\n\n if (isIncusEnvelope(payload)) {\n if (payload.type === \"error\" || response.status >= 400) {\n throw new IncusApiError(\n payload.error ?? `Incus request failed (${response.status})`,\n response.status,\n {\n statusCode: payload.status_code,\n errorCode: payload.error_code,\n details: payload.metadata,\n },\n );\n }\n\n return {\n value: payload.metadata as T,\n etag: response.etag,\n operation: payload.operation,\n status: response.status,\n headers: response.headers,\n };\n }\n\n if (response.status >= 400) {\n throw new IncusApiError(\n typeof payload === \"string\"\n ? payload\n : `Incus request failed (${response.status})`,\n response.status,\n { details: payload },\n );\n }\n\n return {\n value: payload as T,\n etag: response.etag,\n status: response.status,\n headers: response.headers,\n };\n }\n\n protected async requestBinary(\n method: string,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<IncusEnvelopeResult<Uint8Array>> {\n const response = await this.requestTransport(method, path, options);\n const payload = response.data;\n\n if (isIncusEnvelope(payload)) {\n if (payload.type === \"error\" || response.status >= 400) {\n throw new IncusApiError(\n payload.error ?? `Incus request failed (${response.status})`,\n response.status,\n {\n statusCode: payload.status_code,\n errorCode: payload.error_code,\n details: payload.metadata,\n },\n );\n }\n\n return {\n value: toBytes(payload.metadata),\n etag: response.etag,\n operation: payload.operation,\n status: response.status,\n headers: response.headers,\n };\n }\n\n if (response.status >= 400) {\n throw new IncusApiError(\n typeof payload === \"string\"\n ? payload\n : `Incus request failed (${response.status})`,\n response.status,\n { details: payload },\n );\n }\n\n return {\n value: toBytes(payload),\n etag: response.etag,\n status: response.status,\n headers: response.headers,\n };\n }\n\n protected createOperationFromRequest(\n method: string,\n path: string,\n options: InternalRequestOptions = {},\n ): IncusAwaitableOperation {\n const operationReady = this.requestEnvelope(method, path, options)\n .then((result) => this.createOperationFromEnvelopeResult(method, path, result));\n return createAwaitableOperation(operationReady);\n }\n\n protected createOperationFromEnvelopeResult(\n method: string,\n path: string,\n result: IncusEnvelopeResult<unknown>,\n ): IncusOperation {\n const operationId = parseOperationIdFromEnvelope(result);\n if (!operationId) {\n throw new Error(\n `[Incus.ts] Missing operation id in response for ${method.toUpperCase()} ${path}`,\n );\n }\n\n return this.createOperation(operationId);\n }\n\n protected createOperation(id: string): IncusOperation {\n return {\n id,\n wait: async (options = {}) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `${operationPath(id)}/wait`,\n {\n query: {\n timeout: options.timeoutSeconds ?? -1,\n },\n signal: options.signal,\n },\n );\n const operation = toRecord(result.value);\n assertOperationSuccess(operation, id);\n return operation;\n },\n cancel: async () => {\n await this.requestEnvelope(\"DELETE\", operationPath(id));\n },\n refresh: async () => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n operationPath(id),\n );\n return toRecord(result.value);\n },\n websocket: async (secret: string) => {\n return this.openWebsocket(`${operationPath(id)}/websocket?secret=${encodeURIComponent(secret)}`);\n },\n onUpdate: async (handler) => {\n const timer = setInterval(async () => {\n try {\n const operation = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n operationPath(id),\n );\n handler(toRecord(operation.value));\n } catch {\n // Best effort.\n }\n }, 1000);\n\n return async () => {\n clearInterval(timer);\n };\n },\n };\n }\n\n protected async openWebsocket(\n path: string,\n options: { applyContext?: boolean } = {},\n ): Promise<WebSocket> {\n if (!this.transport.websocket) {\n throw new Error(\"[Incus.ts] Transport does not support websocket connections\");\n }\n\n let finalPath = path;\n if (options.applyContext !== false) {\n const url = new URL(normalizePath(path), \"http://incus.local\");\n if (this.context.target && !url.searchParams.has(\"target\")) {\n url.searchParams.set(\"target\", this.context.target);\n }\n\n if (\n this.context.project &&\n !url.searchParams.has(\"project\") &&\n !url.searchParams.has(\"all-projects\")\n ) {\n url.searchParams.set(\"project\", this.context.project);\n }\n\n finalPath = `${url.pathname}${url.search}`;\n }\n\n return this.transport.websocket(finalPath);\n }\n\n private async getServerSnapshot(): Promise<IncusRecord | undefined> {\n if (this.serverSnapshot) {\n return this.serverSnapshot;\n }\n\n if (\n this.kind === \"simple-streams\" ||\n this.kind === \"incus-public\"\n ) {\n return undefined;\n }\n\n try {\n const server = await this.requestEnvelope<IncusRecord>(\"GET\", \"/1.0\");\n this.serverSnapshot = toRecord(server.value);\n return this.serverSnapshot;\n } catch {\n return undefined;\n }\n }\n\n private createConnectionApi(): ConnectionApi {\n return createApiWithFallback<ConnectionApi>(\"connection\", {\n info: async () => {\n const server = await this.getServerSnapshot();\n const env = toRecord(server?.environment);\n const addresses = Array.isArray(env.addresses)\n ? env.addresses.filter((entry): entry is string => typeof entry === \"string\")\n : [];\n const httpsAddresses = addresses\n .filter((entry) => !entry.startsWith(\":\"))\n .map((entry) => `https://${entry}`);\n\n const socketPath = this.endpoint.startsWith(\"unix://\")\n ? this.endpoint.replace(/^unix:\\/\\//, \"\")\n : undefined;\n\n return {\n addresses: httpsAddresses,\n certificate: typeof env.certificate === \"string\" ? env.certificate : undefined,\n protocol: this.kind === \"simple-streams\" ? \"simplestreams\" : \"incus\",\n url: this.endpoint.startsWith(\"unix://\") ? undefined : this.endpoint,\n socketPath,\n project: this.context.project ?? \"default\",\n target: this.context.target\n ?? (typeof env.server_name === \"string\" ? env.server_name : undefined),\n };\n },\n httpClient: async () => this.options.fetch ?? fetch,\n doHttp: async (request: Request) => {\n const fetchImpl = this.options.fetch ?? fetch;\n return fetchImpl(request);\n },\n disconnect: () => this.disconnect(),\n });\n }\n\n private createRawApi(): RawApi {\n return createApiWithFallback<RawApi>(\"raw\", {\n query: async <T = IncusRecord>(\n method: string,\n path: string,\n body?: unknown,\n options: IncusMutationOptions = {},\n ) => {\n const result = await this.requestEnvelope<T>(method, path, {\n body,\n etag: options.etag,\n applyContext: false,\n });\n return { value: result.value, etag: result.etag };\n },\n websocket: async (path: string) => this.openWebsocket(path, { applyContext: false }),\n operation: (\n method: string,\n path: string,\n body?: unknown,\n options: IncusMutationOptions = {},\n ) => {\n return this.createOperationFromRequest(method, path, {\n body,\n etag: options.etag,\n applyContext: false,\n });\n },\n });\n }\n\n private createImageAliasesApi(): ImageAliasesApi {\n return createApiWithFallback<ImageAliasesApi>(\"images.aliases\", {\n list: async () => {\n const result = await this.requestEnvelope<IncusRecord[]>(\n \"GET\",\n \"/1.0/images/aliases\",\n { query: { recursion: 1 } },\n );\n return toRecordArray(result.value);\n },\n names: async () => {\n const result = await this.requestEnvelope<unknown[]>(\n \"GET\",\n \"/1.0/images/aliases\",\n );\n return urlsToResourceNames(\"/images/aliases\", toStringArray(result.value));\n },\n get: async (name: string) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/images/aliases/${encodeURIComponent(name)}`,\n );\n return { value: toRecord(result.value), etag: result.etag };\n },\n getArchitectures: async (name: string) => {\n const alias = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/images/aliases/${encodeURIComponent(name)}`,\n );\n const target = toRecord(alias.value).target;\n if (typeof target !== \"string\") {\n return {};\n }\n\n const image = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/images/${encodeURIComponent(target)}`,\n );\n const architecture = toRecord(image.value).architecture;\n if (typeof architecture !== \"string\") {\n return {};\n }\n\n return { [architecture]: toRecord(alias.value) };\n },\n create: async (alias: IncusRecord) => {\n await this.requestEnvelope(\"POST\", \"/1.0/images/aliases\", { body: alias });\n },\n update: async (\n name: string,\n alias: IncusRecord,\n options: IncusMutationOptions = {},\n ) => {\n await this.requestEnvelope(\n \"PUT\",\n `/1.0/images/aliases/${encodeURIComponent(name)}`,\n { body: alias, etag: options.etag },\n );\n },\n rename: async (name: string, alias: IncusRecord) => {\n await this.requestEnvelope(\n \"POST\",\n `/1.0/images/aliases/${encodeURIComponent(name)}`,\n { body: alias },\n );\n },\n remove: async (name: string) => {\n await this.requestEnvelope(\n \"DELETE\",\n `/1.0/images/aliases/${encodeURIComponent(name)}`,\n );\n },\n });\n }\n\n private createImagesApi(): ImagesApi {\n if (this.kind === \"simple-streams\") {\n return createApiWithFallback<ImagesApi>(\"images\", {\n aliases: createNotImplementedProxy([\"images\", \"aliases\"]) as ImageAliasesApi,\n });\n }\n\n return createApiWithFallback<ImagesApi>(\"images\", {\n list: async (options = {}) => {\n const query: Record<string, string | number | boolean | undefined> = {\n recursion: 1,\n };\n if (options.allProjects) {\n query[\"all-projects\"] = true;\n }\n\n if (options.filter && options.filter.length > 0) {\n query.filter = parseFilters(options.filter);\n }\n\n const result = await this.requestEnvelope<IncusRecord[]>(\"GET\", \"/1.0/images\", {\n query,\n });\n return toRecordArray(result.value);\n },\n fingerprints: async (options = {}) => {\n if (options.filter?.length || options.allProjects) {\n const images = await this.images.list(options);\n return images\n .map((image) => image.fingerprint)\n .filter((entry): entry is string => typeof entry === \"string\");\n }\n\n const result = await this.requestEnvelope<unknown[]>(\"GET\", \"/1.0/images\");\n return urlsToResourceNames(\"/images\", toStringArray(result.value));\n },\n get: async (\n fingerprint: string,\n options: { secret?: string } = {},\n ) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/images/${encodeURIComponent(fingerprint)}`,\n {\n query: options.secret ? { secret: options.secret } : undefined,\n },\n );\n return { value: toRecord(result.value), etag: result.etag };\n },\n create: (image: IncusRecord, upload?: IncusRecord) => {\n const body = upload ? { ...image, upload } : image;\n return this.createOperationFromRequest(\"POST\", \"/1.0/images\", { body });\n },\n copyFrom: async (\n _source: IncusImageClient,\n _image: IncusRecord,\n _options?: IncusRecord,\n ) => createRemoteOperationFromTarget(null),\n update: async (\n fingerprint: string,\n image: IncusRecord,\n options: IncusMutationOptions = {},\n ) => {\n await this.requestEnvelope(\n \"PUT\",\n `/1.0/images/${encodeURIComponent(fingerprint)}`,\n {\n body: image,\n etag: options.etag,\n },\n );\n },\n remove: (fingerprint: string) => {\n return this.createOperationFromRequest(\n \"DELETE\",\n `/1.0/images/${encodeURIComponent(fingerprint)}`,\n );\n },\n refresh: (fingerprint: string) => {\n return this.createOperationFromRequest(\n \"POST\",\n `/1.0/images/${encodeURIComponent(fingerprint)}/refresh`,\n );\n },\n createSecret: (fingerprint: string) => {\n return this.createOperationFromRequest(\n \"POST\",\n `/1.0/images/${encodeURIComponent(fingerprint)}/secret`,\n );\n },\n export: (fingerprint: string, request?: IncusRecord) => {\n return this.createOperationFromRequest(\n \"POST\",\n `/1.0/images/${encodeURIComponent(fingerprint)}/export`,\n { body: request ?? {} },\n );\n },\n aliases: this.createImageAliasesApi(),\n });\n }\n}\n\nexport class IncusClient extends IncusImageClient {\n readonly server: ServerApi;\n readonly certificates: CertificatesApi;\n readonly instances: InstancesApi;\n readonly events: EventsApi;\n readonly metadata: MetadataApi;\n readonly networks: NetworksApi;\n readonly operations: OperationsApi;\n readonly profiles: ProfilesApi;\n readonly projects: ProjectsApi;\n readonly storage: StorageApi;\n readonly cluster: ClusterApi;\n readonly warnings: WarningsApi;\n readonly oidc: OidcApi;\n\n constructor(\n transport: IncusTransport,\n endpoint: string,\n options: Readonly<IncusConnectionOptions> = {},\n context: Readonly<IncusRequestContext> = {},\n kind: IncusConnectKind = \"incus\",\n ) {\n super(transport, endpoint, options, context, kind);\n\n this.server = this.createServerApi();\n this.certificates = createNotImplementedProxy([\"certificates\"]) as CertificatesApi;\n this.instances = this.createInstancesApi();\n this.events = createNotImplementedProxy([\"events\"]) as EventsApi;\n this.metadata = createApiWithFallback<MetadataApi>(\"metadata\", {\n configuration: async () => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n \"/1.0/metadata/configuration\",\n );\n return toRecord(result.value);\n },\n });\n this.networks = createNotImplementedProxy([\"networks\"]) as NetworksApi;\n this.operations = this.createOperationsApi();\n this.profiles = createNotImplementedProxy([\"profiles\"]) as ProfilesApi;\n this.projects = createNotImplementedProxy([\"projects\"]) as ProjectsApi;\n this.storage = createNotImplementedProxy([\"storage\"]) as StorageApi;\n this.cluster = createNotImplementedProxy([\"cluster\"]) as ClusterApi;\n this.warnings = createNotImplementedProxy([\"warnings\"]) as WarningsApi;\n this.oidc = createApiWithFallback<OidcApi>(\"oidc\", {\n tokens: async () => {\n if (!this.options.oidcTokens) {\n return null;\n }\n\n return { ...this.options.oidcTokens };\n },\n });\n }\n\n withContext(contextPatch: Partial<IncusRequestContext>): IncusClient {\n return new IncusClient(this.transport, this.endpoint, this.options, {\n ...this.context,\n ...contextPatch,\n }, this.kind);\n }\n\n project(name: string): IncusClient {\n return this.withContext({ project: name });\n }\n\n target(name: string): IncusClient {\n return this.withContext({ target: name });\n }\n\n requireAuthenticated(authenticated = true): IncusClient {\n return this.withContext({ requireAuthenticated: authenticated });\n }\n\n private createServerApi(): ServerApi {\n return createApiWithFallback<ServerApi>(\"server\", {\n metrics: async () => {\n const result = await this.requestEnvelope<string>(\"GET\", \"/1.0/metrics\");\n return typeof result.value === \"string\"\n ? result.value\n : new TextDecoder().decode(toBytes(result.value));\n },\n get: async () => {\n const result = await this.requestEnvelope<IncusRecord>(\"GET\", \"/1.0\");\n return { value: toRecord(result.value), etag: result.etag };\n },\n resources: async () => {\n const result = await this.requestEnvelope<IncusRecord>(\"GET\", \"/1.0/resources\");\n return toRecord(result.value);\n },\n update: async (\n server: IncusRecord,\n options: IncusMutationOptions = {},\n ) => {\n await this.requestEnvelope(\"PUT\", \"/1.0\", {\n body: server,\n etag: options.etag,\n });\n },\n applyPreseed: async (config: IncusRecord) => {\n await this.requestEnvelope(\"PUT\", \"/1.0\", { body: config });\n },\n hasExtension: async (extension: string) => {\n const result = await this.requestEnvelope<IncusRecord>(\"GET\", \"/1.0\");\n const server = toRecord(result.value);\n const apiExtensions = server.api_extensions;\n if (!Array.isArray(apiExtensions)) {\n return false;\n }\n\n return apiExtensions.some((entry) => entry === extension);\n },\n isClustered: async () => {\n const result = await this.requestEnvelope<IncusRecord>(\"GET\", \"/1.0\");\n const env = toRecord(toRecord(result.value).environment);\n return env.server_clustered === true;\n },\n });\n }\n\n private createOperationsApi(): OperationsApi {\n return createApiWithFallback<OperationsApi>(\"operations\", {\n uuids: async () => {\n const result = await this.requestEnvelope<unknown[]>(\"GET\", \"/1.0/operations\");\n return urlsToResourceNames(\"/operations\", toStringArray(result.value));\n },\n list: async (options = {}) => {\n const result = await this.requestEnvelope<unknown>(\"GET\", \"/1.0/operations\", {\n query: {\n recursion: 1,\n \"all-projects\": options.allProjects ? \"true\" : undefined,\n },\n });\n return flattenOperationMap(result.value);\n },\n get: async (uuid: string) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/operations/${encodeURIComponent(uuid)}`,\n );\n return { value: toRecord(result.value), etag: result.etag };\n },\n wait: async (uuid: string, timeoutSeconds = -1) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/operations/${encodeURIComponent(uuid)}/wait`,\n {\n query: { timeout: timeoutSeconds },\n },\n );\n const operation = toRecord(result.value);\n assertOperationSuccess(operation, uuid);\n return { value: operation, etag: result.etag };\n },\n waitWithSecret: async (\n uuid: string,\n secret: string,\n timeoutSeconds = -1,\n ) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/operations/${encodeURIComponent(uuid)}/wait`,\n {\n query: {\n secret,\n timeout: timeoutSeconds,\n },\n },\n );\n const operation = toRecord(result.value);\n assertOperationSuccess(operation, uuid);\n return { value: operation, etag: result.etag };\n },\n websocket: async (uuid: string, secret: string) => {\n const query = secret ? `?secret=${encodeURIComponent(secret)}` : \"\";\n return this.openWebsocket(\n `/1.0/operations/${encodeURIComponent(uuid)}/websocket${query}`,\n );\n },\n remove: async (uuid: string) => {\n await this.requestEnvelope(\n \"DELETE\",\n `/1.0/operations/${encodeURIComponent(uuid)}`,\n );\n },\n });\n }\n\n private isPipeTarget(target: InstanceExecOptions[\"stdout\"]): target is \"pipe\" {\n return target === \"pipe\";\n }\n\n private toWritableTarget(\n target: InstanceExecOptions[\"stdout\"],\n ): WritableStream<Uint8Array> | undefined {\n return this.isPipeTarget(target) ? undefined : target;\n }\n\n private shouldAttachExecIO(options?: InstanceExecOptions): boolean {\n return Boolean(\n options?.stdin ||\n options?.stdout ||\n options?.stderr ||\n options?.onControl,\n );\n }\n\n private shouldPipeExecIO(options?: InstanceExecOptions): boolean {\n return Boolean(\n this.isPipeTarget(options?.stdout) ||\n this.isPipeTarget(options?.stderr),\n );\n }\n\n private async getExecFds(\n operation: IncusOperation,\n initialOperationValue: unknown,\n ): Promise<Record<string, string>> {\n const initial = extractExecFds(initialOperationValue);\n if (Object.keys(initial).length > 0) {\n return initial;\n }\n\n const refreshed = await operation.refresh();\n return extractExecFds(refreshed);\n }\n\n private async attachExecWebsockets(\n operation: IncusOperation,\n request: IncusRecord,\n options?: InstanceExecOptions,\n initialOperationValue?: unknown,\n hooks: {\n onStdoutChunk?: (chunk: Uint8Array) => void;\n onStderrChunk?: (chunk: Uint8Array) => void;\n onStdoutError?: (error: unknown) => void;\n onStderrError?: (error: unknown) => void;\n onStdoutClose?: () => void;\n onStderrClose?: () => void;\n } = {},\n ): Promise<{ hasStdout: boolean; hasStderr: boolean }> {\n const fds = await this.getExecFds(operation, initialOperationValue ?? {});\n if (Object.keys(fds).length === 0) {\n return { hasStdout: false, hasStderr: false };\n }\n\n const stdoutWritable = this.toWritableTarget(options?.stdout);\n const stderrWritable = this.toWritableTarget(options?.stderr);\n let hasStdout = false;\n let hasStderr = false;\n\n const openChannel = async (name: string): Promise<WebSocketLike | null> => {\n const secret = fds[name];\n if (!secret) {\n return null;\n }\n\n const socket = (await operation.websocket(secret)) as unknown as WebSocketLike;\n if (options?.signal) {\n options.signal.addEventListener(\n \"abort\",\n () => {\n closeWebSocketSafely(socket);\n },\n { once: true },\n );\n }\n\n return socket;\n };\n\n const controlSocket = await openChannel(\"control\");\n if (controlSocket) {\n void streamWebSocketToWritable(controlSocket);\n options?.onControl?.(controlSocket as unknown as WebSocket);\n }\n\n if (isInteractiveExecRequest(request)) {\n const interactiveSocket = await openChannel(\"0\");\n if (!interactiveSocket) {\n return { hasStdout: false, hasStderr: false };\n }\n\n hasStdout = true;\n void streamWebSocketToWritable(interactiveSocket, {\n output: stdoutWritable,\n onChunk: hooks.onStdoutChunk,\n onError: hooks.onStdoutError,\n onClose: hooks.onStdoutClose,\n });\n void writeInputToWebSocket(interactiveSocket, options?.stdin);\n return { hasStdout, hasStderr };\n }\n\n const stdinSocket = await openChannel(\"0\");\n if (stdinSocket) {\n void writeInputToWebSocket(stdinSocket, options?.stdin);\n }\n\n const stdoutSocket = await openChannel(\"1\");\n if (stdoutSocket) {\n hasStdout = true;\n void streamWebSocketToWritable(stdoutSocket, {\n output: stdoutWritable,\n onChunk: hooks.onStdoutChunk,\n onError: hooks.onStdoutError,\n onClose: hooks.onStdoutClose,\n });\n }\n\n const stderrSocket = await openChannel(\"2\");\n if (stderrSocket) {\n hasStderr = true;\n void streamWebSocketToWritable(stderrSocket, {\n output: stderrWritable,\n onChunk: hooks.onStderrChunk,\n onError: hooks.onStderrError,\n onClose: hooks.onStderrClose,\n });\n }\n\n return { hasStdout, hasStderr };\n }\n\n private createInstancesApi(): InstancesApi {\n const toInstancePath = (instanceName: string) =>\n `/1.0/instances/${encodeURIComponent(instanceName)}`;\n const toSnapshotPath = (instanceName: string, snapshotName?: string) => (\n snapshotName\n ? `${toInstancePath(instanceName)}/snapshots/${encodeURIComponent(snapshotName)}`\n : `${toInstancePath(instanceName)}/snapshots`\n );\n\n const createLogsApi = (instanceName: string): InstanceLogsApi => ({\n list: async () => {\n const result = await this.requestEnvelope<unknown[]>(\n \"GET\",\n `${toInstancePath(instanceName)}/logs`,\n );\n return urlsToResourceNames(\n `/instances/${encodeURIComponent(instanceName)}/logs`,\n toStringArray(result.value),\n );\n },\n get: async (filename: string) => {\n const result = await this.requestBinary(\n \"GET\",\n `${toInstancePath(instanceName)}/logs/${encodeURIComponent(filename)}`,\n );\n return toReadableStream(result.value);\n },\n remove: async (filename: string) => {\n await this.requestEnvelope(\n \"DELETE\",\n `${toInstancePath(instanceName)}/logs/${encodeURIComponent(filename)}`,\n );\n },\n getConsole: async () => {\n const result = await this.requestBinary(\n \"GET\",\n `${toInstancePath(instanceName)}/console`,\n );\n return toReadableStream(result.value);\n },\n removeConsole: async () => {\n await this.requestEnvelope(\n \"DELETE\",\n `${toInstancePath(instanceName)}/console`,\n );\n },\n });\n\n const createFilesApi = (instanceName: string): InstanceFilesApi => ({\n get: async (path: string) => {\n const response = await this.requestTransport(\n \"GET\",\n `${toInstancePath(instanceName)}/files`,\n {\n query: { path },\n },\n );\n\n const headers = parseFileHeaders(response.headers);\n if ((headers.type ?? \"\").toLowerCase() === \"directory\") {\n const decoded = isIncusEnvelope(response.data)\n ? toStringArray(response.data.metadata)\n : [];\n return {\n stream: toReadableStream(new Uint8Array()),\n uid: headers.uid,\n gid: headers.gid,\n mode: headers.mode,\n type: headers.type,\n entries: decoded,\n };\n }\n\n if (response.status >= 400) {\n if (isIncusEnvelope(response.data)) {\n throw new IncusApiError(\n response.data.error ?? `Incus request failed (${response.status})`,\n response.status,\n {\n statusCode: response.data.status_code,\n errorCode: response.data.error_code,\n details: response.data.metadata,\n },\n );\n }\n\n throw new IncusApiError(`Incus request failed (${response.status})`, response.status, {\n details: response.data,\n });\n }\n\n return {\n stream: toReadableStream(toBytes(response.data)),\n uid: headers.uid,\n gid: headers.gid,\n mode: headers.mode,\n type: headers.type,\n };\n },\n put: async (path: string, options: InstanceFilePutOptions) => {\n const headers = new Headers();\n if (options.uid !== undefined) {\n headers.set(\"X-Incus-uid\", String(options.uid));\n }\n\n if (options.gid !== undefined) {\n headers.set(\"X-Incus-gid\", String(options.gid));\n }\n\n if (options.mode !== undefined) {\n headers.set(\"X-Incus-mode\", options.mode.toString(8).padStart(4, \"0\"));\n }\n\n if (options.type) {\n headers.set(\"X-Incus-type\", options.type);\n }\n\n if (options.writeMode) {\n headers.set(\"X-Incus-write\", options.writeMode);\n }\n\n await this.requestEnvelope(\"POST\", `${toInstancePath(instanceName)}/files`, {\n query: { path },\n body: options.content,\n headers,\n });\n },\n remove: async (path: string) => {\n await this.requestEnvelope(\"DELETE\", `${toInstancePath(instanceName)}/files`, {\n query: { path },\n });\n },\n sftp: async () => {\n throw new Error(\"[Incus.ts] Instance SFTP helper is not implemented yet\");\n },\n });\n\n const createSnapshotsApi = (instanceName: string): InstanceSnapshotsApi => ({\n names: async () => {\n const result = await this.requestEnvelope<unknown[]>(\"GET\", toSnapshotPath(instanceName));\n return urlsToResourceNames(\n `/instances/${encodeURIComponent(instanceName)}/snapshots`,\n toStringArray(result.value),\n );\n },\n list: async () => {\n const result = await this.requestEnvelope<IncusRecord[]>(\"GET\", toSnapshotPath(instanceName), {\n query: { recursion: 1 },\n });\n return toRecordArray(result.value);\n },\n get: async (snapshotName: string) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n toSnapshotPath(instanceName, snapshotName),\n );\n return { value: toRecord(result.value), etag: result.etag };\n },\n create: (snapshot: IncusRecord) => {\n return this.createOperationFromRequest(\"POST\", toSnapshotPath(instanceName), {\n body: snapshot,\n });\n },\n copyFrom: async (\n _source: IncusClient,\n _snapshot: IncusRecord,\n _options?: IncusRecord,\n ) => createRemoteOperationFromTarget(null),\n rename: (snapshotName: string, request: IncusRecord) => {\n return this.createOperationFromRequest(\n \"POST\",\n toSnapshotPath(instanceName, snapshotName),\n {\n body: request,\n },\n );\n },\n migrate: (snapshotName: string, request: IncusRecord) => {\n return this.createOperationFromRequest(\n \"POST\",\n toSnapshotPath(instanceName, snapshotName),\n {\n body: request,\n },\n );\n },\n remove: (snapshotName: string) => {\n return this.createOperationFromRequest(\n \"DELETE\",\n toSnapshotPath(instanceName, snapshotName),\n );\n },\n update: (\n snapshotName: string,\n snapshot: IncusRecord,\n options: IncusMutationOptions = {},\n ) => {\n return this.createOperationFromRequest(\n \"PUT\",\n toSnapshotPath(instanceName, snapshotName),\n {\n body: snapshot,\n etag: options.etag,\n },\n );\n },\n restore: (snapshotName: string, options: { stateful?: boolean } = {}) => {\n return this.createOperationFromRequest(\"PUT\", toInstancePath(instanceName), {\n body: {\n restore: snapshotName,\n ...(options.stateful !== undefined ? { stateful: options.stateful } : {}),\n },\n });\n },\n });\n\n const getInstance = async (\n instanceName: string,\n options: { full?: boolean } = {},\n ): Promise<IncusEntity<IncusRecord>> => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n toInstancePath(instanceName),\n {\n query: options.full ? { recursion: 1 } : undefined,\n },\n );\n return { value: toRecord(result.value), etag: result.etag };\n };\n\n const updateInstance = (\n instanceName: string,\n instance: IncusRecord,\n options: IncusMutationOptions = {},\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"PUT\", toInstancePath(instanceName), {\n body: instance,\n etag: options.etag,\n });\n };\n\n const forkInstance = (\n instanceName: string,\n name: string,\n options: InstanceForkOptions = {},\n ): IncusAwaitableOperation => {\n const {\n fromSnapshot,\n sourceProject,\n live,\n instanceOnly,\n refresh,\n refreshExcludeOlder,\n allowInconsistent,\n } = options;\n const source = fromSnapshot\n ? `${instanceName}/${fromSnapshot}`\n : instanceName;\n const sourceRequest: IncusRecord = {\n type: \"copy\",\n source,\n };\n\n if (sourceProject) {\n sourceRequest.project = sourceProject;\n }\n\n if (live !== undefined) {\n sourceRequest.live = live;\n }\n\n if (instanceOnly !== undefined) {\n sourceRequest.instance_only = instanceOnly;\n }\n\n if (refresh !== undefined) {\n sourceRequest.refresh = refresh;\n }\n\n if (refreshExcludeOlder !== undefined) {\n sourceRequest.refresh_exclude_older = refreshExcludeOlder;\n }\n\n if (allowInconsistent !== undefined) {\n sourceRequest.allow_inconsistent = allowInconsistent;\n }\n\n return this.createOperationFromRequest(\n \"POST\",\n \"/1.0/instances\",\n {\n body: {\n name,\n source: sourceRequest,\n },\n },\n );\n };\n\n const renameInstance = (\n instanceName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"POST\", toInstancePath(instanceName), { body: request });\n };\n\n const migrateInstance = (\n instanceName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"POST\", toInstancePath(instanceName), { body: request });\n };\n\n const removeInstance = (instanceName: string): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"DELETE\", toInstancePath(instanceName));\n };\n\n const rebuildInstance = (\n instanceName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"POST\", `${toInstancePath(instanceName)}/rebuild`, {\n body: request,\n });\n };\n\n const stateInstance = async (instanceName: string): Promise<IncusEntity<IncusRecord>> => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `${toInstancePath(instanceName)}/state`,\n );\n return { value: toRecord(result.value), etag: result.etag };\n };\n\n const setStateInstance = (\n instanceName: string,\n state: IncusRecord,\n options: IncusMutationOptions = {},\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"PUT\", `${toInstancePath(instanceName)}/state`, {\n body: state,\n etag: options.etag,\n });\n };\n\n const accessInstance = async (instanceName: string): Promise<IncusRecord> => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `${toInstancePath(instanceName)}/access`,\n );\n return toRecord(result.value);\n };\n\n const execInstance = (\n instanceName: string,\n request: IncusRecord,\n options?: InstanceExecOptions,\n ): IncusExecProcess => {\n const path = `${toInstancePath(instanceName)}/exec`;\n const body = { ...request };\n const shouldAttachIO = this.shouldAttachExecIO(options) || this.shouldPipeExecIO(options);\n if (shouldAttachIO && !hasWaitForWebsocketFlag(body)) {\n body[\"wait-for-websocket\"] = true;\n }\n\n const stdoutPipe = this.isPipeTarget(options?.stdout);\n const stderrPipe = this.isPipeTarget(options?.stderr);\n const stdoutQueue = createAsyncQueue<Uint8Array>();\n const stderrQueue = createAsyncQueue<Uint8Array>();\n const outputQueue = createAsyncQueue<IncusExecOutputChunk>();\n let stdoutOpen = stdoutPipe;\n let stderrOpen = stderrPipe;\n\n const closeOutputIfDone = () => {\n if (!stdoutOpen && !stderrOpen) {\n outputQueue.close();\n }\n };\n\n const closeStdout = () => {\n if (!stdoutOpen) {\n return;\n }\n\n stdoutOpen = false;\n stdoutQueue.close();\n closeOutputIfDone();\n };\n\n const closeStderr = () => {\n if (!stderrOpen) {\n return;\n }\n\n stderrOpen = false;\n stderrQueue.close();\n closeOutputIfDone();\n };\n\n const failAllQueues = (error: unknown) => {\n stdoutOpen = false;\n stderrOpen = false;\n stdoutQueue.fail(error);\n stderrQueue.fail(error);\n outputQueue.fail(error);\n };\n\n const operationReady = (async (): Promise<IncusOperation> => {\n const result = await this.requestEnvelope<IncusRecord>(\"POST\", path, {\n body,\n signal: options?.signal,\n });\n const operation = this.createOperationFromEnvelopeResult(\"POST\", path, result);\n\n if (shouldAttachIO) {\n const attached = await this.attachExecWebsockets(operation, body, options, result.value, {\n onStdoutChunk: stdoutPipe\n ? (chunk) => {\n stdoutQueue.push(chunk);\n outputQueue.push({ stream: \"stdout\", chunk });\n }\n : undefined,\n onStderrChunk: stderrPipe\n ? (chunk) => {\n stderrQueue.push(chunk);\n outputQueue.push({ stream: \"stderr\", chunk });\n }\n : undefined,\n onStdoutError: stdoutPipe\n ? (error) => {\n stdoutOpen = false;\n stdoutQueue.fail(error);\n closeOutputIfDone();\n }\n : undefined,\n onStderrError: stderrPipe\n ? (error) => {\n stderrOpen = false;\n stderrQueue.fail(error);\n closeOutputIfDone();\n }\n : undefined,\n onStdoutClose: stdoutPipe ? closeStdout : undefined,\n onStderrClose: stderrPipe ? closeStderr : undefined,\n });\n\n if (stdoutPipe && !attached.hasStdout) {\n closeStdout();\n }\n\n if (stderrPipe && !attached.hasStderr) {\n closeStderr();\n }\n } else {\n stdoutOpen = false;\n stderrOpen = false;\n stdoutQueue.close();\n stderrQueue.close();\n outputQueue.close();\n }\n\n if (!stdoutPipe) {\n stdoutOpen = false;\n stdoutQueue.close();\n }\n\n if (!stderrPipe) {\n stderrOpen = false;\n stderrQueue.close();\n }\n\n closeOutputIfDone();\n\n return operation;\n })().catch((error) => {\n failAllQueues(error);\n throw error;\n });\n\n const waitResult = async (\n waitOptions: IncusOperationWaitOptions = {},\n ): Promise<IncusExecResult> => {\n const operation = await operationReady;\n const opRecord = await operation.wait(waitOptions);\n await Promise.all([stdoutQueue.done, stderrQueue.done]);\n return toExecResult(opRecord);\n };\n\n let defaultResultPromise: Promise<IncusExecResult> | undefined;\n const getDefaultResultPromise = () => {\n defaultResultPromise ??= waitResult();\n return defaultResultPromise;\n };\n\n let operationId = \"\";\n void operationReady.then((operation) => {\n operationId = operation.id;\n }).catch(() => {\n // Best effort.\n });\n\n return {\n get id(): string {\n return operationId;\n },\n wait: (waitOptions: IncusOperationWaitOptions = {}) => (\n operationReady.then((operation) => operation.wait(waitOptions))\n ),\n cancel: () => operationReady.then((operation) => operation.cancel()),\n refresh: () => operationReady.then((operation) => operation.refresh()),\n websocket: (secret: string) => operationReady.then((operation) => operation.websocket(secret)),\n onUpdate: (handler: (operation: IncusRecord) => void) => (\n operationReady.then((operation) => operation.onUpdate(handler))\n ),\n stdout: stdoutQueue.iterable,\n stderr: stderrQueue.iterable,\n output: () => outputQueue.iterable,\n waitResult,\n then: <TResult1 = IncusExecResult, TResult2 = never>(\n onFulfilled?: ((value: IncusExecResult) => TResult1 | PromiseLike<TResult1>) | null,\n onRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> => (\n getDefaultResultPromise().then(onFulfilled, onRejected)\n ),\n catch: <TResult = never>(\n onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<IncusExecResult | TResult> => (\n getDefaultResultPromise().catch(onRejected)\n ),\n finally: (onFinally?: (() => void) | null): Promise<IncusExecResult> => (\n getDefaultResultPromise().finally(onFinally ?? undefined)\n ),\n [Symbol.asyncIterator]: () => stdoutQueue.iterable[Symbol.asyncIterator](),\n } satisfies IncusExecProcess;\n };\n\n const consoleInstance = (\n instanceName: string,\n request: IncusRecord,\n options?: InstanceConsoleOptions,\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\n \"POST\",\n `${toInstancePath(instanceName)}/console`,\n {\n body: request,\n signal: options?.signal,\n },\n );\n };\n\n const metadataInstance = async (instanceName: string): Promise<IncusEntity<IncusRecord>> => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `${toInstancePath(instanceName)}/metadata`,\n );\n return { value: toRecord(result.value), etag: result.etag };\n };\n\n const updateMetadataInstance = async (\n instanceName: string,\n metadata: IncusRecord,\n options: IncusMutationOptions = {},\n ): Promise<void> => {\n await this.requestEnvelope(\"PUT\", `${toInstancePath(instanceName)}/metadata`, {\n body: metadata,\n etag: options.etag,\n });\n };\n\n const debugMemoryInstance = async (\n instanceName: string,\n format = \"elf\",\n ): Promise<ReadableStream<Uint8Array>> => {\n const result = await this.requestBinary(\n \"GET\",\n `${toInstancePath(instanceName)}/debug/memory`,\n {\n query: {\n format,\n \"instance-type\": \"virtual-machine\",\n },\n },\n );\n return toReadableStream(result.value);\n };\n\n const createInstanceHandle = (instanceName: string): InstanceApi => {\n const logs = createLogsApi(instanceName);\n const files = createFilesApi(instanceName);\n const snapshots = createSnapshotsApi(instanceName);\n\n return {\n name: instanceName,\n get: (options = {}) => getInstance(instanceName, options),\n fork: (name: string, options: InstanceForkOptions = {}) => (\n forkInstance(instanceName, name, options)\n ),\n update: (instance: IncusRecord, options: IncusMutationOptions = {}) => (\n updateInstance(instanceName, instance, options)\n ),\n rename: (request: IncusRecord) => renameInstance(instanceName, request),\n migrate: (request: IncusRecord) => migrateInstance(instanceName, request),\n remove: () => removeInstance(instanceName),\n rebuild: (request: IncusRecord) => rebuildInstance(instanceName, request),\n rebuildFromImage: async (\n _source: IncusImageClient,\n _image: IncusRecord,\n _request: IncusRecord,\n ) => createRemoteOperationFromTarget(null),\n restore: (snapshotName: string, options: { stateful?: boolean } = {}) => (\n snapshots.restore(snapshotName, options)\n ),\n state: () => stateInstance(instanceName),\n setState: (state: IncusRecord, options: IncusMutationOptions = {}) => (\n setStateInstance(instanceName, state, options)\n ),\n access: () => accessInstance(instanceName),\n exec: (request: IncusRecord, options?: InstanceExecOptions) => (\n execInstance(instanceName, request, options)\n ),\n console: (request: IncusRecord, options?: InstanceConsoleOptions) => (\n consoleInstance(instanceName, request, options)\n ),\n consoleDynamic: async () => {\n throw new Error(\"[Incus.ts] Dynamic console attach is not implemented yet\");\n },\n metadata: () => metadataInstance(instanceName),\n updateMetadata: (metadata: IncusRecord, options: IncusMutationOptions = {}) => (\n updateMetadataInstance(instanceName, metadata, options)\n ),\n debugMemory: (format = \"elf\") => debugMemoryInstance(instanceName, format),\n logs,\n files,\n templates: createNotImplementedProxy([\"instances\", \"templates\"]) as InstanceTemplatesApi,\n snapshots,\n backups: createNotImplementedProxy([\"instances\", \"backups\"]) as InstanceBackupsApi,\n };\n };\n\n return createApiWithFallback<InstancesApi>(\"instances\", {\n names: async (options = {}) => {\n if (options.allProjects) {\n const query: Record<string, string | number | boolean | undefined> = {\n recursion: 1,\n \"all-projects\": \"true\",\n };\n if (options.type) {\n query[\"instance-type\"] = options.type;\n }\n\n const result = await this.requestEnvelope<IncusRecord[]>(\n \"GET\",\n \"/1.0/instances\",\n { query },\n );\n const records = toRecordArray(result.value);\n const grouped: Record<string, string[]> = {};\n for (const record of records) {\n const project = typeof record.project === \"string\"\n ? record.project\n : \"default\";\n const name = typeof record.name === \"string\" ? record.name : undefined;\n if (!name) {\n continue;\n }\n\n grouped[project] ??= [];\n grouped[project].push(name);\n }\n\n return grouped;\n }\n\n const query: Record<string, string | number | boolean | undefined> = {};\n if (options.type) {\n query[\"instance-type\"] = options.type;\n }\n\n const result = await this.requestEnvelope<unknown[]>(\"GET\", \"/1.0/instances\", {\n query,\n });\n return urlsToResourceNames(\"/instances\", toStringArray(result.value));\n },\n list: async (options = {}) => {\n const query: Record<string, string | number | boolean | undefined> = {\n recursion: options.full ? 2 : 1,\n };\n\n if (options.type) {\n query[\"instance-type\"] = options.type;\n }\n\n if (options.allProjects) {\n query[\"all-projects\"] = \"true\";\n }\n\n if (options.filter && options.filter.length > 0) {\n query.filter = parseFilters(options.filter);\n }\n\n const result = await this.requestEnvelope<IncusRecord[]>(\n \"GET\",\n \"/1.0/instances\",\n { query },\n );\n return toRecordArray(result.value);\n },\n instance: (name: string) => createInstanceHandle(name),\n create: (instance: IncusRecord) => {\n return this.createOperationFromRequest(\"POST\", \"/1.0/instances\", { body: instance });\n },\n createFromImage: async (\n _source: IncusImageClient,\n _image: IncusRecord,\n _request: IncusRecord,\n ) => createRemoteOperationFromTarget(null),\n createFromBackup: (args: IncusRecord) => {\n return this.createOperationFromRequest(\"POST\", \"/1.0/instances\", { body: args });\n },\n copyFrom: async (\n _source: IncusClient,\n _instance: IncusRecord,\n _options?: IncusRecord,\n ) => createRemoteOperationFromTarget(null),\n updateMany: (state: IncusRecord, options: IncusMutationOptions = {}) => {\n return this.createOperationFromRequest(\"PUT\", \"/1.0/instances\", {\n body: state,\n etag: options.etag,\n });\n },\n });\n }\n}\n\nexport class Incus {\n static async connect(\n endpoint: string,\n options: IncusConnectionOptions = {},\n ): Promise<IncusClient> {\n const normalized = normalizeEndpoint(endpoint);\n const descriptor: IncusTransportDescriptor = { kind: \"incus\", endpoint: normalized };\n return new IncusClient(\n new FetchTransport(descriptor, options),\n normalized,\n options,\n {},\n \"incus\",\n );\n }\n\n static async connectHttp(\n options: IncusHttpConnectOptions = {},\n ): Promise<IncusClient> {\n const endpoint = normalizeEndpoint(options.endpoint ?? \"https://custom.socket\");\n const descriptor: IncusTransportDescriptor = { kind: \"incus-http\", endpoint };\n return new IncusClient(\n new FetchTransport(descriptor, options),\n endpoint,\n options,\n {},\n \"incus-http\",\n );\n }\n\n static async connectUnix(\n options: IncusUnixConnectOptions = {},\n ): Promise<IncusClient> {\n const socketPath = options.socketPath ?? \"/var/lib/incus/unix.socket\";\n const endpoint = `unix://${socketPath}`;\n const descriptor: IncusTransportDescriptor = {\n kind: \"incus-unix\",\n endpoint,\n socketPath,\n };\n\n return new IncusClient(\n new UnixSocketTransport(descriptor, options),\n endpoint,\n options,\n {},\n \"incus-unix\",\n );\n }\n\n static async connectPublic(\n endpoint: string,\n options: IncusConnectionOptions = {},\n ): Promise<IncusImageClient> {\n const normalized = normalizeEndpoint(endpoint);\n const descriptor: IncusTransportDescriptor = {\n kind: \"incus-public\",\n endpoint: normalized,\n };\n return new IncusImageClient(\n new FetchTransport(descriptor, options),\n normalized,\n options,\n {},\n \"incus-public\",\n );\n }\n\n static async connectSimpleStreams(\n endpoint: string,\n options: IncusSimpleStreamsOptions = {},\n ): Promise<IncusImageClient> {\n const normalized = normalizeEndpoint(endpoint);\n const descriptor: IncusTransportDescriptor = {\n kind: \"simple-streams\",\n endpoint: normalized,\n };\n return new IncusImageClient(\n new FetchTransport(descriptor, options),\n normalized,\n options,\n {},\n \"simple-streams\",\n );\n }\n\n static fromTransport(\n endpoint: string,\n transport: IncusTransport,\n options: IncusConnectionOptions = {},\n ): IncusClient {\n return new IncusClient(transport, normalizeEndpoint(endpoint), options);\n }\n\n static fromImageTransport(\n endpoint: string,\n transport: IncusTransport,\n options: IncusConnectionOptions = {},\n ): IncusImageClient {\n return new IncusImageClient(transport, normalizeEndpoint(endpoint), options);\n }\n}\n"
5
+ "import { request as nodeHttpRequest } from \"node:http\";\nimport { createHash, randomBytes } from \"node:crypto\";\nimport { EventEmitter } from \"node:events\";\nimport { connect as nodeNetConnect, type Socket as NodeNetSocket } from \"node:net\";\n\nexport type IncusRecord = Record<string, unknown>;\n\nexport type IncusInstanceType = \"container\" | \"virtual-machine\" | string;\n\nexport type IncusBinaryInput =\n | Blob\n | ArrayBuffer\n | ArrayBufferView\n | Uint8Array\n | ReadableStream<Uint8Array>;\n\nexport type IncusProgress = {\n processedBytes?: number;\n totalBytes?: number;\n percent?: number;\n speedBytesPerSecond?: number;\n};\n\nexport type IncusEntity<T = unknown> = {\n value: T;\n etag?: string;\n};\n\nexport type IncusMutationOptions = {\n etag?: string;\n};\n\nexport type IncusListOptions = {\n filter?: string[];\n allProjects?: boolean;\n};\n\nexport type IncusScopeOptions = {\n allProjects?: boolean;\n};\n\nexport type IncusRequestContext = {\n project?: string;\n target?: string;\n requireAuthenticated?: boolean;\n};\n\nexport type IncusConnectionOptions = {\n userAgent?: string;\n authType?: string;\n skipGetEvents?: boolean;\n skipGetServer?: boolean;\n headers?: HeadersInit;\n fetch?: typeof fetch;\n signal?: AbortSignal;\n tempPath?: string;\n tlsServerCert?: string;\n tlsClientCert?: string;\n tlsClientKey?: string;\n tlsCA?: string;\n insecureSkipVerify?: boolean;\n identicalCertificate?: boolean;\n oidcTokens?: {\n accessToken?: string;\n refreshToken?: string;\n expiry?: string;\n };\n};\n\nexport type IncusSimpleStreamsOptions = IncusConnectionOptions & {\n cachePath?: string;\n cacheExpiryMs?: number;\n};\n\nexport type IncusUnixConnectOptions = IncusConnectionOptions & {\n socketPath?: string;\n};\n\nexport type IncusHttpConnectOptions = IncusConnectionOptions & {\n endpoint?: string;\n};\n\nexport type IncusConnectKind =\n | \"incus\"\n | \"incus-public\"\n | \"incus-unix\"\n | \"incus-http\"\n | \"simple-streams\";\n\nexport type IncusConnectionInfo = {\n addresses: string[];\n certificate?: string;\n protocol?: string;\n url?: string;\n socketPath?: string;\n project?: string;\n target?: string;\n};\n\nexport type IncusTransportRequestOptions = {\n query?: Record<string, string | number | boolean | undefined>;\n headers?: HeadersInit;\n body?: unknown;\n signal?: AbortSignal;\n etag?: string;\n context?: IncusRequestContext;\n};\n\nexport type IncusTransportResponse<T = unknown> = {\n status: number;\n etag?: string;\n data: T;\n headers?: Headers;\n};\n\nexport interface IncusTransport {\n request<T = unknown>(\n method: string,\n path: string,\n options?: IncusTransportRequestOptions,\n ): Promise<IncusTransportResponse<T>>;\n websocket?(path: string, protocols?: string | string[]): Promise<WebSocket>;\n close?(): void;\n}\n\nexport type IncusOperationWaitOptions = {\n timeoutSeconds?: number;\n signal?: AbortSignal;\n};\n\nexport interface IncusOperation {\n id: string;\n wait(options?: IncusOperationWaitOptions): Promise<IncusRecord>;\n cancel(): Promise<void>;\n refresh(): Promise<IncusRecord>;\n websocket(secret: string): Promise<WebSocket>;\n onUpdate(handler: (operation: IncusRecord) => void): Promise<() => void>;\n}\n\nexport interface IncusAwaitableOperation extends IncusOperation, PromiseLike<IncusRecord> {\n catch<TResult = never>(\n onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<IncusRecord | TResult>;\n finally(onFinally?: (() => void) | null): Promise<IncusRecord>;\n}\n\nexport interface IncusRemoteOperation {\n wait(options?: IncusOperationWaitOptions): Promise<void>;\n cancelTarget(): Promise<void>;\n target(): Promise<IncusRecord | null>;\n onUpdate(handler: (operation: IncusRecord) => void): Promise<() => void>;\n}\n\nexport type IncusEventStreamOptions = {\n types?: string[];\n allProjects?: boolean;\n signal?: AbortSignal;\n};\n\nexport type IncusEvent = {\n type: string;\n timestamp?: string;\n metadata?: IncusRecord;\n};\n\nexport interface IncusEventListener extends AsyncIterable<IncusEvent> {\n close(): Promise<void>;\n}\n\nexport interface ConnectionApi {\n info(): Promise<IncusConnectionInfo>;\n httpClient(): Promise<unknown>;\n doHttp(request: Request): Promise<Response>;\n disconnect(): void;\n}\n\nexport interface ServerApi {\n metrics(): Promise<string>;\n get(): Promise<IncusEntity<IncusRecord>>;\n resources(): Promise<IncusRecord>;\n update(server: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n applyPreseed(config: IncusRecord): Promise<void>;\n hasExtension(extension: string): Promise<boolean>;\n isClustered(): Promise<boolean>;\n}\n\nexport interface CertificatesApi {\n fingerprints(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(fingerprint: string): Promise<IncusEntity<IncusRecord>>;\n create(certificate: IncusRecord): Promise<void>;\n update(\n fingerprint: string,\n certificate: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(fingerprint: string): Promise<void>;\n createToken(certificate: IncusRecord): IncusAwaitableOperation;\n}\n\nexport type ImageListOptions = IncusListOptions;\n\nexport type ImageDownloadOptions = {\n signal?: AbortSignal;\n onProgress?: (progress: IncusProgress) => void;\n secret?: string;\n};\n\nexport type ImageDownloadResult = {\n metadataName?: string;\n metadataSize?: number;\n rootfsName?: string;\n rootfsSize?: number;\n};\n\nexport interface ImageAliasesApi {\n list(): Promise<IncusRecord[]>;\n names(): Promise<string[]>;\n get(name: string, options?: { imageType?: string }): Promise<IncusEntity<IncusRecord>>;\n getArchitectures(\n name: string,\n options?: { imageType?: string },\n ): Promise<Record<string, IncusRecord>>;\n create(alias: IncusRecord): Promise<void>;\n update(name: string, alias: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, alias: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface ImagesApi {\n list(options?: ImageListOptions): Promise<IncusRecord[]>;\n fingerprints(options?: ImageListOptions): Promise<string[]>;\n get(\n fingerprint: string,\n options?: {\n secret?: string;\n },\n ): Promise<IncusEntity<IncusRecord>>;\n downloadFile(\n fingerprint: string,\n options?: ImageDownloadOptions,\n ): Promise<ImageDownloadResult>;\n create(image: IncusRecord, upload?: IncusRecord): IncusAwaitableOperation;\n copyFrom(\n source: IncusImageClient,\n image: IncusRecord,\n options?: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n update(\n fingerprint: string,\n image: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(fingerprint: string): IncusAwaitableOperation;\n refresh(fingerprint: string): IncusAwaitableOperation;\n createSecret(fingerprint: string): IncusAwaitableOperation;\n export(fingerprint: string, request?: IncusRecord): IncusAwaitableOperation;\n aliases: ImageAliasesApi;\n}\n\nexport type InstanceListOptions = IncusListOptions & {\n type?: IncusInstanceType;\n full?: boolean;\n};\n\nexport type InstanceExecOptions = {\n stdin?: IncusBinaryInput;\n stdout?: \"pipe\" | WritableStream<Uint8Array>;\n stderr?: \"pipe\" | WritableStream<Uint8Array>;\n signal?: AbortSignal;\n onControl?: (socket: WebSocket) => void;\n};\n\nexport type InstanceForkOptions = {\n fromSnapshot?: string;\n sourceProject?: string;\n live?: boolean;\n instanceOnly?: boolean;\n refresh?: boolean;\n refreshExcludeOlder?: boolean;\n allowInconsistent?: boolean;\n};\n\nexport type IncusExecOutputChunk = {\n stream: \"stdout\" | \"stderr\";\n chunk: Uint8Array;\n};\n\nexport type IncusExecResult = {\n operation: IncusRecord;\n exitCode?: number;\n ok: boolean;\n};\n\nexport interface IncusExecProcess extends\n IncusOperation,\n AsyncIterable<Uint8Array>,\n PromiseLike<IncusExecResult>\n{\n stdout: AsyncIterable<Uint8Array>;\n stderr: AsyncIterable<Uint8Array>;\n output(): AsyncIterable<IncusExecOutputChunk>;\n waitResult(options?: IncusOperationWaitOptions): Promise<IncusExecResult>;\n catch<TResult = never>(\n onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<IncusExecResult | TResult>;\n finally(onFinally?: (() => void) | null): Promise<IncusExecResult>;\n}\n\nexport type InstanceConsoleOptions = {\n terminal?: WebSocket;\n signal?: AbortSignal;\n onControl?: (socket: WebSocket) => void;\n};\n\nexport type InstanceConsoleDynamicResult = {\n operation: IncusOperation;\n attach: (terminal: WebSocket) => Promise<void>;\n};\n\nexport type InstanceFilePutOptions = {\n content: IncusBinaryInput;\n uid?: number;\n gid?: number;\n mode?: number;\n type?: \"file\" | \"directory\" | string;\n writeMode?: \"overwrite\" | \"append\" | string;\n};\n\nexport type InstanceFileResult = {\n stream: ReadableStream<Uint8Array>;\n uid?: number;\n gid?: number;\n mode?: number;\n type?: string;\n entries?: string[];\n};\n\nexport interface InstanceLogsApi {\n list(): Promise<string[]>;\n get(filename: string): Promise<ReadableStream<Uint8Array>>;\n remove(filename: string): Promise<void>;\n getConsole(): Promise<ReadableStream<Uint8Array>>;\n removeConsole(): Promise<void>;\n}\n\nexport interface InstanceFilesApi {\n get(path: string): Promise<InstanceFileResult>;\n put(path: string, options: InstanceFilePutOptions): Promise<void>;\n remove(path: string): Promise<void>;\n sftp(): Promise<unknown>;\n}\n\nexport interface InstanceTemplatesApi {\n list(): Promise<string[]>;\n get(templateName: string): Promise<ReadableStream<Uint8Array>>;\n put(templateName: string, content: IncusBinaryInput): Promise<void>;\n remove(templateName: string): Promise<void>;\n}\n\nexport interface InstanceSnapshotsApi {\n names(): Promise<string[]>;\n list(): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(snapshot: IncusRecord): IncusAwaitableOperation;\n copyFrom(\n source: IncusClient,\n snapshot: IncusRecord,\n options?: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n rename(name: string, request: IncusRecord): IncusAwaitableOperation;\n migrate(name: string, request: IncusRecord): IncusAwaitableOperation;\n remove(name: string): IncusAwaitableOperation;\n update(\n name: string,\n snapshot: IncusRecord,\n options?: IncusMutationOptions,\n ): IncusAwaitableOperation;\n restore(name: string, options?: { stateful?: boolean }): IncusAwaitableOperation;\n}\n\nexport interface InstanceBackupsApi {\n names(): Promise<string[]>;\n list(): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(backup: IncusRecord): IncusAwaitableOperation;\n rename(name: string, backup: IncusRecord): IncusAwaitableOperation;\n remove(name: string): IncusAwaitableOperation;\n download(name: string): Promise<ReadableStream<Uint8Array>>;\n upload(backup: IncusRecord, body: IncusBinaryInput): Promise<void>;\n}\n\nexport interface InstanceApi {\n readonly name: string;\n get(options?: { full?: boolean }): Promise<IncusEntity<IncusRecord>>;\n fork(name: string, options?: InstanceForkOptions): IncusAwaitableOperation;\n update(instance: IncusRecord, options?: IncusMutationOptions): IncusAwaitableOperation;\n rename(request: IncusRecord): IncusAwaitableOperation;\n migrate(request: IncusRecord): IncusAwaitableOperation;\n remove(): IncusAwaitableOperation;\n rebuild(request: IncusRecord): IncusAwaitableOperation;\n rebuildFromImage(\n source: IncusImageClient,\n image: IncusRecord,\n request: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n restore(snapshotName: string, options?: { stateful?: boolean }): IncusAwaitableOperation;\n state(): Promise<IncusEntity<IncusRecord>>;\n setState(state: IncusRecord, options?: IncusMutationOptions): IncusAwaitableOperation;\n access(): Promise<IncusRecord>;\n exec(request: IncusRecord, options?: InstanceExecOptions): IncusExecProcess;\n console(\n request: IncusRecord,\n options?: InstanceConsoleOptions,\n ): IncusAwaitableOperation;\n consoleDynamic(\n request: IncusRecord,\n options?: InstanceConsoleOptions,\n ): Promise<InstanceConsoleDynamicResult>;\n metadata(): Promise<IncusEntity<IncusRecord>>;\n updateMetadata(metadata: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n debugMemory(format?: string): Promise<ReadableStream<Uint8Array>>;\n logs: InstanceLogsApi;\n files: InstanceFilesApi;\n templates: InstanceTemplatesApi;\n snapshots: InstanceSnapshotsApi;\n backups: InstanceBackupsApi;\n}\n\nexport interface InstancesApi {\n names(options?: InstanceListOptions): Promise<string[] | Record<string, string[]>>;\n list(options?: InstanceListOptions): Promise<IncusRecord[]>;\n instance(name: string): InstanceApi;\n create(instance: IncusRecord): IncusAwaitableOperation;\n createFromImage(\n source: IncusImageClient,\n image: IncusRecord,\n request: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n createFromBackup(args: IncusRecord): IncusAwaitableOperation;\n copyFrom(\n source: IncusClient,\n instance: IncusRecord,\n options?: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n updateMany(state: IncusRecord, options?: IncusMutationOptions): IncusAwaitableOperation;\n}\n\nexport interface EventsApi {\n stream(options?: IncusEventStreamOptions): Promise<IncusEventListener>;\n send(event: IncusEvent): Promise<void>;\n}\n\nexport interface MetadataApi {\n configuration(): Promise<IncusRecord>;\n}\n\nexport interface NetworkForwardsApi {\n addresses(networkName: string): Promise<string[]>;\n list(networkName: string): Promise<IncusRecord[]>;\n get(networkName: string, listenAddress: string): Promise<IncusEntity<IncusRecord>>;\n create(networkName: string, request: IncusRecord): Promise<void>;\n update(\n networkName: string,\n listenAddress: string,\n request: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(networkName: string, listenAddress: string): Promise<void>;\n}\n\nexport interface NetworkLoadBalancersApi {\n addresses(networkName: string): Promise<string[]>;\n list(networkName: string): Promise<IncusRecord[]>;\n get(networkName: string, listenAddress: string): Promise<IncusEntity<IncusRecord>>;\n state(networkName: string, listenAddress: string): Promise<IncusRecord>;\n create(networkName: string, request: IncusRecord): Promise<void>;\n update(\n networkName: string,\n listenAddress: string,\n request: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(networkName: string, listenAddress: string): Promise<void>;\n}\n\nexport interface NetworkPeersApi {\n names(networkName: string): Promise<string[]>;\n list(networkName: string): Promise<IncusRecord[]>;\n get(networkName: string, peerName: string): Promise<IncusEntity<IncusRecord>>;\n create(networkName: string, request: IncusRecord): Promise<void>;\n update(\n networkName: string,\n peerName: string,\n request: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(networkName: string, peerName: string): Promise<void>;\n}\n\nexport interface NetworkAclsApi {\n names(): Promise<string[]>;\n list(options?: IncusScopeOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n getLog(name: string): Promise<ReadableStream<Uint8Array>>;\n create(request: IncusRecord): Promise<void>;\n update(name: string, request: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface NetworkAddressSetsApi {\n names(): Promise<string[]>;\n list(options?: IncusScopeOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(request: IncusRecord): Promise<void>;\n update(name: string, request: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface NetworkZoneRecordsApi {\n names(zone: string): Promise<string[]>;\n list(zone: string): Promise<IncusRecord[]>;\n get(zone: string, name: string): Promise<IncusEntity<IncusRecord>>;\n create(zone: string, request: IncusRecord): Promise<void>;\n update(\n zone: string,\n name: string,\n request: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(zone: string, name: string): Promise<void>;\n}\n\nexport interface NetworkZonesApi {\n names(): Promise<string[]>;\n list(options?: IncusScopeOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(request: IncusRecord): Promise<void>;\n update(name: string, request: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n remove(name: string): Promise<void>;\n records: NetworkZoneRecordsApi;\n}\n\nexport interface NetworkIntegrationsApi {\n names(): Promise<string[]>;\n list(): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(request: IncusRecord): Promise<void>;\n update(name: string, request: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface NetworksApi {\n names(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n leases(name: string): Promise<IncusRecord[]>;\n state(name: string): Promise<IncusRecord>;\n create(request: IncusRecord): Promise<void>;\n update(name: string, request: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n allocations(options?: IncusScopeOptions): Promise<IncusRecord[]>;\n forwards: NetworkForwardsApi;\n loadBalancers: NetworkLoadBalancersApi;\n peers: NetworkPeersApi;\n acls: NetworkAclsApi;\n addressSets: NetworkAddressSetsApi;\n zones: NetworkZonesApi;\n integrations: NetworkIntegrationsApi;\n}\n\nexport interface OperationsApi {\n uuids(): Promise<string[]>;\n list(options?: IncusScopeOptions): Promise<IncusRecord[]>;\n get(uuid: string): Promise<IncusEntity<IncusRecord>>;\n wait(uuid: string, timeoutSeconds?: number): Promise<IncusEntity<IncusRecord>>;\n waitWithSecret(\n uuid: string,\n secret: string,\n timeoutSeconds?: number,\n ): Promise<IncusEntity<IncusRecord>>;\n websocket(uuid: string, secret: string): Promise<WebSocket>;\n remove(uuid: string): Promise<void>;\n}\n\nexport interface ProfilesApi {\n names(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(profile: IncusRecord): Promise<void>;\n update(name: string, profile: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, profile: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface ProjectsApi {\n names(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n state(name: string): Promise<IncusRecord>;\n access(name: string): Promise<IncusRecord>;\n create(project: IncusRecord): Promise<void>;\n update(name: string, project: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, project: IncusRecord): IncusAwaitableOperation;\n remove(name: string): Promise<void>;\n removeForce(name: string): Promise<void>;\n}\n\nexport interface StoragePoolsApi {\n names(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n resources(name: string): Promise<IncusRecord>;\n create(pool: IncusRecord): Promise<void>;\n update(name: string, pool: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface StorageBucketKeysApi {\n names(poolName: string, bucketName: string): Promise<string[]>;\n list(poolName: string, bucketName: string): Promise<IncusRecord[]>;\n get(\n poolName: string,\n bucketName: string,\n keyName: string,\n ): Promise<IncusEntity<IncusRecord>>;\n create(poolName: string, bucketName: string, key: IncusRecord): Promise<IncusRecord>;\n update(\n poolName: string,\n bucketName: string,\n keyName: string,\n key: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(poolName: string, bucketName: string, keyName: string): Promise<void>;\n}\n\nexport interface StorageBucketBackupsApi {\n create(poolName: string, bucketName: string, backup: IncusRecord): IncusAwaitableOperation;\n remove(poolName: string, bucketName: string, name: string): IncusAwaitableOperation;\n download(poolName: string, bucketName: string, name: string): Promise<ReadableStream<Uint8Array>>;\n upload(\n poolName: string,\n bucketName: string,\n backup: IncusRecord,\n body: IncusBinaryInput,\n ): Promise<void>;\n createFromBackup(poolName: string, args: IncusRecord): IncusAwaitableOperation;\n}\n\nexport interface StorageBucketsApi {\n names(poolName: string): Promise<string[]>;\n list(poolName: string, options?: IncusListOptions & { full?: boolean }): Promise<IncusRecord[]>;\n get(\n poolName: string,\n bucketName: string,\n options?: {\n full?: boolean;\n },\n ): Promise<IncusEntity<IncusRecord>>;\n create(poolName: string, bucket: IncusRecord): Promise<IncusRecord>;\n update(\n poolName: string,\n bucketName: string,\n bucket: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(poolName: string, bucketName: string): Promise<void>;\n keys: StorageBucketKeysApi;\n backups: StorageBucketBackupsApi;\n}\n\nexport interface StorageVolumeFilesApi {\n get(\n poolName: string,\n volumeType: string,\n volumeName: string,\n filePath: string,\n ): Promise<InstanceFileResult>;\n put(\n poolName: string,\n volumeType: string,\n volumeName: string,\n filePath: string,\n options: InstanceFilePutOptions,\n ): Promise<void>;\n remove(\n poolName: string,\n volumeType: string,\n volumeName: string,\n filePath: string,\n ): Promise<void>;\n}\n\nexport interface StorageVolumeSnapshotsApi {\n names(poolName: string, volumeType: string, volumeName: string): Promise<string[]>;\n list(poolName: string, volumeType: string, volumeName: string): Promise<IncusRecord[]>;\n get(\n poolName: string,\n volumeType: string,\n volumeName: string,\n snapshotName: string,\n ): Promise<IncusEntity<IncusRecord>>;\n create(\n poolName: string,\n volumeType: string,\n volumeName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation;\n rename(\n poolName: string,\n volumeType: string,\n volumeName: string,\n snapshotName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation;\n update(\n poolName: string,\n volumeType: string,\n volumeName: string,\n snapshotName: string,\n request: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(\n poolName: string,\n volumeType: string,\n volumeName: string,\n snapshotName: string,\n ): IncusAwaitableOperation;\n}\n\nexport interface StorageVolumeBackupsApi {\n names(poolName: string, volumeName: string): Promise<string[]>;\n list(poolName: string, volumeName: string): Promise<IncusRecord[]>;\n get(poolName: string, volumeName: string, backupName: string): Promise<IncusEntity<IncusRecord>>;\n create(poolName: string, volumeName: string, backup: IncusRecord): IncusAwaitableOperation;\n rename(\n poolName: string,\n volumeName: string,\n backupName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation;\n remove(poolName: string, volumeName: string, backupName: string): IncusAwaitableOperation;\n download(\n poolName: string,\n volumeName: string,\n backupName: string,\n ): Promise<ReadableStream<Uint8Array>>;\n upload(\n poolName: string,\n volumeName: string,\n backup: IncusRecord,\n body: IncusBinaryInput,\n ): Promise<void>;\n createFromBackup(poolName: string, args: IncusRecord): IncusAwaitableOperation;\n createFromIso(poolName: string, args: IncusRecord): IncusAwaitableOperation;\n}\n\nexport interface StorageVolumesApi {\n names(\n poolName: string,\n options?: IncusScopeOptions,\n ): Promise<string[] | Record<string, string[]>>;\n list(\n poolName: string,\n options?: IncusListOptions & {\n full?: boolean;\n },\n ): Promise<IncusRecord[]>;\n get(\n poolName: string,\n volumeType: string,\n name: string,\n options?: {\n full?: boolean;\n },\n ): Promise<IncusEntity<IncusRecord>>;\n state(poolName: string, volumeType: string, name: string): Promise<IncusRecord>;\n create(poolName: string, volume: IncusRecord): Promise<void>;\n update(\n poolName: string,\n volumeType: string,\n name: string,\n volume: IncusRecord,\n options?: IncusMutationOptions,\n ): Promise<void>;\n remove(poolName: string, volumeType: string, name: string): Promise<void>;\n rename(poolName: string, volumeType: string, name: string, request: IncusRecord): Promise<void>;\n copyFrom(\n poolName: string,\n source: IncusClient,\n sourcePool: string,\n volume: IncusRecord,\n options?: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n moveFrom(\n poolName: string,\n source: IncusClient,\n sourcePool: string,\n volume: IncusRecord,\n options?: IncusRecord,\n ): Promise<IncusRemoteOperation>;\n migrate(poolName: string, volume: IncusRecord): IncusAwaitableOperation;\n createFromMigration(poolName: string, volume: IncusRecord): IncusAwaitableOperation;\n snapshots: StorageVolumeSnapshotsApi;\n backups: StorageVolumeBackupsApi;\n files: StorageVolumeFilesApi;\n sftp(poolName: string, volumeType: string, volumeName: string): Promise<unknown>;\n}\n\nexport interface StorageApi {\n pools: StoragePoolsApi;\n buckets: StorageBucketsApi;\n volumes: StorageVolumesApi;\n}\n\nexport interface ClusterMembersApi {\n names(): Promise<string[]>;\n list(options?: IncusListOptions): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n state(name: string): Promise<IncusEntity<IncusRecord>>;\n create(member: IncusRecord): IncusAwaitableOperation;\n update(name: string, member: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string, options?: { force?: boolean; pending?: boolean }): Promise<void>;\n updateState(name: string, state: IncusRecord): IncusAwaitableOperation;\n}\n\nexport interface ClusterGroupsApi {\n names(): Promise<string[]>;\n list(): Promise<IncusRecord[]>;\n get(name: string): Promise<IncusEntity<IncusRecord>>;\n create(group: IncusRecord): Promise<void>;\n update(name: string, group: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n rename(name: string, request: IncusRecord): Promise<void>;\n remove(name: string): Promise<void>;\n}\n\nexport interface ClusterApi {\n get(): Promise<IncusEntity<IncusRecord>>;\n update(cluster: IncusRecord, options?: IncusMutationOptions): IncusAwaitableOperation;\n updateCertificate(certificate: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n members: ClusterMembersApi;\n groups: ClusterGroupsApi;\n}\n\nexport interface WarningsApi {\n uuids(): Promise<string[]>;\n list(): Promise<IncusRecord[]>;\n get(uuid: string): Promise<IncusEntity<IncusRecord>>;\n update(uuid: string, warning: IncusRecord, options?: IncusMutationOptions): Promise<void>;\n remove(uuid: string): Promise<void>;\n}\n\nexport interface OidcApi {\n tokens(): Promise<IncusRecord | null>;\n}\n\nexport interface RawApi {\n query<T = IncusRecord>(\n method: string,\n path: string,\n body?: unknown,\n options?: IncusMutationOptions,\n ): Promise<IncusEntity<T>>;\n websocket(path: string): Promise<WebSocket>;\n operation(\n method: string,\n path: string,\n body?: unknown,\n options?: IncusMutationOptions,\n ): IncusAwaitableOperation;\n}\n\ntype IncusTransportDescriptor = {\n kind: IncusConnectKind;\n endpoint: string;\n socketPath?: string;\n};\n\ntype IncusApiEnvelope = {\n type?: string;\n status?: string;\n status_code?: number;\n operation?: string;\n error?: string;\n error_code?: number;\n metadata?: unknown;\n};\n\ntype InternalRequestOptions = Omit<IncusTransportRequestOptions, \"context\"> & {\n applyContext?: boolean;\n};\n\ntype IncusEnvelopeResult<T = unknown> = {\n value: T;\n etag?: string;\n operation?: string;\n status: number;\n headers?: Headers;\n};\n\ntype FileHeaders = {\n uid?: number;\n gid?: number;\n mode?: number;\n type?: string;\n};\n\ntype WebSocketLike = {\n close(code?: number, reason?: string): void;\n send(data: unknown): void;\n addEventListener?: (type: string, listener: (event: unknown) => void) => void;\n removeEventListener?: (type: string, listener: (event: unknown) => void) => void;\n on?: (type: string, listener: (...args: unknown[]) => void) => void;\n off?: (type: string, listener: (...args: unknown[]) => void) => void;\n};\n\nexport class IncusApiError extends Error {\n readonly status: number;\n readonly statusCode?: number;\n readonly errorCode?: number;\n readonly details?: unknown;\n\n constructor(\n message: string,\n status: number,\n options: {\n statusCode?: number;\n errorCode?: number;\n details?: unknown;\n } = {},\n ) {\n super(message);\n this.name = \"IncusApiError\";\n this.status = status;\n this.statusCode = options.statusCode;\n this.errorCode = options.errorCode;\n this.details = options.details;\n }\n}\n\nconst WEBSOCKET_GUID = \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\";\nconst WS_CONNECTING = 0;\nconst WS_OPEN = 1;\nconst WS_CLOSING = 2;\nconst WS_CLOSED = 3;\n\nclass UnixSocketWebSocket implements WebSocketLike {\n readonly CONNECTING = WS_CONNECTING;\n readonly OPEN = WS_OPEN;\n readonly CLOSING = WS_CLOSING;\n readonly CLOSED = WS_CLOSED;\n\n binaryType: BinaryType = \"arraybuffer\";\n extensions = \"\";\n protocol = \"\";\n readyState = WS_CONNECTING;\n bufferedAmount = 0;\n\n private readonly events = new EventEmitter();\n private readBuffer = Buffer.alloc(0);\n private fragments: Buffer[] = [];\n private fragmentOpcode: number | null = null;\n private closeInfo: { code: number; reason: string } | null = null;\n private closeEmitted = false;\n\n constructor(\n private readonly socket: NodeNetSocket,\n initialData?: Uint8Array,\n ) {\n this.socket.on(\"data\", (chunk: Buffer | string) => {\n this.ingestData(chunk);\n });\n this.socket.on(\"error\", (error: Error) => {\n this.events.emit(\"error\", error);\n });\n this.socket.on(\"close\", () => {\n this.readyState = WS_CLOSED;\n if (!this.closeEmitted) {\n this.closeEmitted = true;\n const info = this.closeInfo ?? { code: 1006, reason: \"\" };\n this.events.emit(\"close\", info.code, info.reason);\n }\n });\n\n this.readyState = WS_OPEN;\n if (initialData && initialData.byteLength > 0) {\n this.ingestData(Buffer.from(initialData));\n }\n }\n\n addEventListener(type: string, listener: (event: unknown) => void): void {\n this.events.on(type, listener as (...args: unknown[]) => void);\n }\n\n removeEventListener(type: string, listener: (event: unknown) => void): void {\n this.events.off(type, listener as (...args: unknown[]) => void);\n }\n\n on(type: string, listener: (...args: unknown[]) => void): void {\n this.events.on(type, listener);\n }\n\n off(type: string, listener: (...args: unknown[]) => void): void {\n this.events.off(type, listener);\n }\n\n once(type: string, listener: (...args: unknown[]) => void): void {\n this.events.once(type, listener);\n }\n\n send(data: unknown): void {\n if (this.readyState !== WS_OPEN) {\n throw new Error(\"[Incus.ts] Cannot send on a closed websocket\");\n }\n\n const payload = typeof data === \"string\"\n ? Buffer.from(data, \"utf8\")\n : Buffer.from(toBytes(data));\n const opcode = typeof data === \"string\" ? 0x1 : 0x2;\n this.writeFrame(opcode, payload, true);\n }\n\n close(code = 1000, reason = \"\"): void {\n if (this.readyState === WS_CLOSED) {\n return;\n }\n\n if (this.readyState === WS_OPEN) {\n this.readyState = WS_CLOSING;\n const reasonBytes = Buffer.from(reason, \"utf8\");\n const payload = Buffer.alloc(2 + reasonBytes.length);\n payload.writeUInt16BE(code, 0);\n reasonBytes.copy(payload, 2);\n this.writeFrame(0x8, payload, true);\n }\n\n this.socket.end();\n }\n\n private ingestData(chunk: Buffer | string): void {\n const bytes = typeof chunk === \"string\" ? Buffer.from(chunk, \"utf8\") : chunk;\n if (bytes.byteLength === 0) {\n return;\n }\n\n this.readBuffer = this.readBuffer.byteLength === 0\n ? Buffer.from(bytes)\n : Buffer.concat([this.readBuffer, bytes]);\n this.parseFrames();\n }\n\n private parseFrames(): void {\n while (this.readBuffer.byteLength >= 2) {\n const first = this.readBuffer[0];\n const second = this.readBuffer[1];\n if (first === undefined || second === undefined) {\n return;\n }\n\n const fin = (first & 0x80) !== 0;\n let opcode = first & 0x0f;\n const masked = (second & 0x80) !== 0;\n\n let offset = 2;\n let payloadLength = second & 0x7f;\n\n if (payloadLength === 126) {\n if (this.readBuffer.byteLength < offset + 2) {\n return;\n }\n\n payloadLength = this.readBuffer.readUInt16BE(offset);\n offset += 2;\n } else if (payloadLength === 127) {\n if (this.readBuffer.byteLength < offset + 8) {\n return;\n }\n\n const extended = this.readBuffer.readBigUInt64BE(offset);\n if (extended > BigInt(Number.MAX_SAFE_INTEGER)) {\n this.events.emit(\"error\", new Error(\"[Incus.ts] Websocket frame too large\"));\n this.close(1009, \"Frame too large\");\n return;\n }\n\n payloadLength = Number(extended);\n offset += 8;\n }\n\n let maskKey: Buffer | undefined;\n if (masked) {\n if (this.readBuffer.byteLength < offset + 4) {\n return;\n }\n\n maskKey = this.readBuffer.subarray(offset, offset + 4);\n offset += 4;\n }\n\n if (this.readBuffer.byteLength < offset + payloadLength) {\n return;\n }\n\n let payload = this.readBuffer.subarray(offset, offset + payloadLength);\n this.readBuffer = this.readBuffer.subarray(offset + payloadLength);\n\n if (maskKey) {\n const decoded = Buffer.alloc(payload.byteLength);\n for (let i = 0; i < payload.byteLength; i += 1) {\n decoded[i] = payload[i]! ^ maskKey[i % 4]!;\n }\n\n payload = decoded;\n }\n\n if (!fin) {\n if (opcode !== 0x0) {\n this.fragmentOpcode = opcode;\n }\n\n this.fragments.push(Buffer.from(payload));\n continue;\n }\n\n if (opcode === 0x0 && this.fragmentOpcode !== null) {\n this.fragments.push(Buffer.from(payload));\n payload = Buffer.concat(this.fragments);\n opcode = this.fragmentOpcode;\n this.fragments = [];\n this.fragmentOpcode = null;\n }\n\n this.handleFrame(opcode, payload);\n }\n }\n\n private handleFrame(opcode: number, payload: Buffer): void {\n switch (opcode) {\n case 0x1:\n this.events.emit(\"message\", payload.toString(\"utf8\"));\n break;\n case 0x2:\n this.events.emit(\"message\", new Uint8Array(payload));\n break;\n case 0x8: {\n let code = 1000;\n let reason = \"\";\n if (payload.byteLength >= 2) {\n code = payload.readUInt16BE(0);\n reason = payload.subarray(2).toString(\"utf8\");\n }\n\n this.closeInfo = { code, reason };\n if (this.readyState === WS_OPEN) {\n this.readyState = WS_CLOSING;\n this.writeFrame(0x8, payload, true);\n }\n\n this.socket.end();\n break;\n }\n case 0x9:\n this.writeFrame(0xA, payload, true);\n break;\n case 0xA:\n break;\n default:\n this.events.emit(\"error\", new Error(`[Incus.ts] Unsupported websocket opcode: ${opcode}`));\n }\n }\n\n private writeFrame(opcode: number, payload: Buffer, mask: boolean): void {\n const parts: Buffer[] = [];\n const firstByte = 0x80 | (opcode & 0x0f);\n const payloadLength = payload.byteLength;\n\n if (payloadLength < 126) {\n parts.push(Buffer.from([firstByte, (mask ? 0x80 : 0) | payloadLength]));\n } else if (payloadLength <= 0xffff) {\n const header = Buffer.alloc(4);\n header[0] = firstByte;\n header[1] = (mask ? 0x80 : 0) | 126;\n header.writeUInt16BE(payloadLength, 2);\n parts.push(header);\n } else {\n const header = Buffer.alloc(10);\n header[0] = firstByte;\n header[1] = (mask ? 0x80 : 0) | 127;\n header.writeBigUInt64BE(BigInt(payloadLength), 2);\n parts.push(header);\n }\n\n if (mask) {\n const maskKey = randomBytes(4);\n const maskedPayload = Buffer.from(payload);\n for (let i = 0; i < maskedPayload.byteLength; i += 1) {\n maskedPayload[i] = maskedPayload[i]! ^ maskKey[i % 4]!;\n }\n\n parts.push(maskKey, maskedPayload);\n } else {\n parts.push(payload);\n }\n\n this.socket.write(Buffer.concat(parts));\n }\n}\n\nclass FetchTransport implements IncusTransport {\n constructor(\n private readonly descriptor: IncusTransportDescriptor,\n private readonly defaults: Readonly<IncusConnectionOptions>,\n ) {}\n\n async request<T = unknown>(\n method: string,\n path: string,\n options: IncusTransportRequestOptions = {},\n ): Promise<IncusTransportResponse<T>> {\n const url = this.makeRequestUrl(path, options.query);\n const headers = this.makeHeaders(options);\n const bodyInfo = prepareBody(options.body);\n\n if (bodyInfo.contentType && !headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", bodyInfo.contentType);\n }\n\n const fetchImpl = this.defaults.fetch ?? fetch;\n const response = await fetchImpl(url, {\n method: method.toUpperCase(),\n headers,\n body: bodyInfo.body,\n signal: options.signal ?? this.defaults.signal,\n redirect: \"follow\",\n });\n\n return {\n status: response.status,\n etag: response.headers.get(\"etag\") ?? undefined,\n headers: response.headers,\n data: (await parseResponseBody(response)) as T,\n };\n }\n\n async websocket(path: string, protocols?: string | string[]): Promise<WebSocket> {\n const baseUrl = toWsBaseURL(this.descriptor.endpoint);\n const target = path.startsWith(\"ws://\") || path.startsWith(\"wss://\")\n ? path\n : new URL(normalizePath(path), baseUrl).toString();\n\n return new WebSocket(target, protocols);\n }\n\n private makeRequestUrl(\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n ): string {\n const isAbsolute = /^https?:\\/\\//.test(path);\n const url = isAbsolute\n ? new URL(path)\n : new URL(normalizePath(path), `${this.descriptor.endpoint}/`);\n\n if (query) {\n for (const [key, rawValue] of Object.entries(query)) {\n if (rawValue === undefined) {\n continue;\n }\n\n url.searchParams.set(key, String(rawValue));\n }\n }\n\n return url.toString();\n }\n\n private makeHeaders(options: IncusTransportRequestOptions): Headers {\n const headers = new Headers(this.defaults.headers);\n applyHeaders(headers, options.headers);\n\n if (this.defaults.userAgent && !headers.has(\"User-Agent\")) {\n headers.set(\"User-Agent\", this.defaults.userAgent);\n }\n\n if (options.etag) {\n headers.set(\"If-Match\", options.etag);\n }\n\n if (options.context?.requireAuthenticated) {\n headers.set(\"X-Incus-authenticated\", \"true\");\n }\n\n if (this.defaults.oidcTokens?.accessToken && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", `Bearer ${this.defaults.oidcTokens.accessToken}`);\n }\n\n return headers;\n }\n}\n\nclass UnixSocketTransport implements IncusTransport {\n constructor(\n private readonly descriptor: IncusTransportDescriptor,\n private readonly defaults: Readonly<IncusConnectionOptions>,\n ) {}\n\n async request<T = unknown>(\n method: string,\n path: string,\n options: IncusTransportRequestOptions = {},\n ): Promise<IncusTransportResponse<T>> {\n const socketPath = this.descriptor.socketPath;\n if (!socketPath) {\n throw new Error(\"[Incus.ts] Missing Unix socket path\");\n }\n\n const requestPath = this.makeRequestPath(path, options.query);\n const headers = this.makeHeaders(options);\n const bodyInfo = await prepareUnixBody(options.body);\n\n if (bodyInfo.contentType && !headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", bodyInfo.contentType);\n }\n\n if (bodyInfo.bodyBytes) {\n headers.set(\"Content-Length\", String(bodyInfo.bodyBytes.byteLength));\n }\n\n return new Promise<IncusTransportResponse<T>>((resolve, reject) => {\n const req = nodeHttpRequest(\n {\n socketPath,\n path: requestPath,\n method: method.toUpperCase(),\n headers: headersToObject(headers),\n },\n (res) => {\n const chunks: Buffer[] = [];\n res.on(\"data\", (chunk: Buffer | string) => {\n if (typeof chunk === \"string\") {\n chunks.push(Buffer.from(chunk));\n } else {\n chunks.push(chunk);\n }\n });\n res.on(\"end\", () => {\n const bytes = Buffer.concat(chunks);\n const responseHeaders = nodeHeadersToWebHeaders(res.headers);\n const contentType = responseHeaders.get(\"content-type\") ?? undefined;\n const parsed = parseRawBody(contentType, bytes);\n\n resolve({\n status: res.statusCode ?? 0,\n etag: responseHeaders.get(\"etag\") ?? undefined,\n headers: responseHeaders,\n data: parsed as T,\n });\n });\n },\n );\n\n req.on(\"error\", reject);\n\n if (options.signal) {\n options.signal.addEventListener(\n \"abort\",\n () => {\n req.destroy(new Error(\"Request aborted\"));\n },\n { once: true },\n );\n }\n\n if (bodyInfo.bodyBytes) {\n req.write(bodyInfo.bodyBytes);\n }\n\n req.end();\n });\n }\n\n async websocket(path: string, protocols?: string | string[]): Promise<WebSocket> {\n const socketPath = this.descriptor.socketPath;\n if (!socketPath) {\n throw new Error(\"[Incus.ts] Missing Unix socket path\");\n }\n\n const requestPath = path.startsWith(\"ws://\") || path.startsWith(\"wss://\")\n ? (() => {\n const url = new URL(path);\n return `${url.pathname}${url.search}`;\n })()\n : normalizePath(path);\n const headers = this.makeWebsocketHeaders();\n if (!headers.has(\"Host\")) {\n headers.set(\"Host\", \"incus.local\");\n }\n\n const websocketKey = randomBytes(16).toString(\"base64\");\n headers.set(\"Connection\", \"Upgrade\");\n headers.set(\"Upgrade\", \"websocket\");\n headers.set(\"Sec-WebSocket-Version\", \"13\");\n headers.set(\"Sec-WebSocket-Key\", websocketKey);\n\n if (protocols) {\n const selected = Array.isArray(protocols) ? protocols.join(\", \") : protocols;\n if (selected.length > 0) {\n headers.set(\"Sec-WebSocket-Protocol\", selected);\n }\n }\n\n const requestLines = [`GET ${requestPath} HTTP/1.1`];\n for (const [key, value] of headers.entries()) {\n requestLines.push(`${key}: ${value}`);\n }\n requestLines.push(\"\", \"\");\n\n return new Promise<WebSocket>((resolve, reject) => {\n const socket = nodeNetConnect(socketPath);\n let handshakeBuffer = Buffer.alloc(0);\n let settled = false;\n\n const finish = (\n handler: (socket: NodeNetSocket, tail: Uint8Array) => void,\n tail: Uint8Array,\n ) => {\n if (settled) {\n return;\n }\n\n settled = true;\n cleanup();\n handler(socket, tail);\n };\n\n const fail = (error: Error) => {\n if (settled) {\n return;\n }\n\n settled = true;\n cleanup();\n socket.destroy();\n reject(error);\n };\n\n const timeout = setTimeout(() => {\n fail(new Error(\"[Incus.ts] WebSocket opening handshake timed out\"));\n }, 10_000);\n\n const cleanup = () => {\n clearTimeout(timeout);\n socket.off(\"connect\", onConnect);\n socket.off(\"data\", onData);\n socket.off(\"error\", onError);\n socket.off(\"close\", onClose);\n };\n\n const onConnect = () => {\n socket.write(requestLines.join(\"\\r\\n\"));\n };\n\n const onData = (chunk: Buffer | string) => {\n const bytes = typeof chunk === \"string\" ? Buffer.from(chunk, \"utf8\") : chunk;\n handshakeBuffer = handshakeBuffer.byteLength === 0\n ? Buffer.from(bytes)\n : Buffer.concat([handshakeBuffer, bytes]);\n\n const delimiterIndex = handshakeBuffer.indexOf(\"\\r\\n\\r\\n\");\n if (delimiterIndex < 0) {\n return;\n }\n\n const responseHeaders = handshakeBuffer.subarray(0, delimiterIndex + 4);\n const leftover = handshakeBuffer.subarray(delimiterIndex + 4);\n const responseText = responseHeaders.toString(\"utf8\");\n const lines = responseText.split(\"\\r\\n\");\n\n const statusLine = lines.shift() ?? \"\";\n const statusMatch = /^HTTP\\/1\\.[01]\\s+(\\d+)/.exec(statusLine);\n const status = statusMatch ? Number.parseInt(statusMatch[1]!, 10) : 0;\n if (status !== 101) {\n fail(new Error(`[Incus.ts] WebSocket upgrade failed with status ${status || \"unknown\"}`));\n return;\n }\n\n const parsedHeaders = new Map<string, string>();\n for (const line of lines) {\n if (line.length === 0) {\n continue;\n }\n\n const separator = line.indexOf(\":\");\n if (separator < 0) {\n continue;\n }\n\n const key = line.slice(0, separator).trim().toLowerCase();\n const value = line.slice(separator + 1).trim();\n parsedHeaders.set(key, value);\n }\n\n const upgradeHeader = parsedHeaders.get(\"upgrade\")?.toLowerCase();\n if (upgradeHeader !== \"websocket\") {\n fail(new Error(\"[Incus.ts] Invalid websocket upgrade response\"));\n return;\n }\n\n const accept = parsedHeaders.get(\"sec-websocket-accept\");\n const expectedAccept = createHash(\"sha1\")\n .update(`${websocketKey}${WEBSOCKET_GUID}`)\n .digest(\"base64\");\n if (accept !== expectedAccept) {\n fail(new Error(\"[Incus.ts] Invalid websocket accept token\"));\n return;\n }\n\n finish(\n (upgradedSocket, tail) => {\n const websocket = new UnixSocketWebSocket(\n upgradedSocket,\n tail.byteLength > 0 ? tail : undefined,\n );\n resolve(websocket as unknown as WebSocket);\n },\n new Uint8Array(leftover),\n );\n };\n\n const onError = (error: Error) => {\n fail(error);\n };\n\n const onClose = () => {\n fail(new Error(\"[Incus.ts] WebSocket connection closed before upgrade completed\"));\n };\n\n socket.on(\"connect\", onConnect);\n socket.on(\"data\", onData);\n socket.on(\"error\", onError);\n socket.on(\"close\", onClose);\n });\n }\n\n private makeRequestPath(\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n ): string {\n const url = new URL(normalizePath(path), \"http://incus.local\");\n if (query) {\n for (const [key, rawValue] of Object.entries(query)) {\n if (rawValue === undefined) {\n continue;\n }\n\n url.searchParams.set(key, String(rawValue));\n }\n }\n\n return `${url.pathname}${url.search}`;\n }\n\n private makeHeaders(options: IncusTransportRequestOptions): Headers {\n const headers = new Headers(this.defaults.headers);\n applyHeaders(headers, options.headers);\n\n if (this.defaults.userAgent && !headers.has(\"User-Agent\")) {\n headers.set(\"User-Agent\", this.defaults.userAgent);\n }\n\n if (options.etag) {\n headers.set(\"If-Match\", options.etag);\n }\n\n if (options.context?.requireAuthenticated) {\n headers.set(\"X-Incus-authenticated\", \"true\");\n }\n\n if (this.defaults.oidcTokens?.accessToken && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", `Bearer ${this.defaults.oidcTokens.accessToken}`);\n }\n\n return headers;\n }\n\n private makeWebsocketHeaders(): Headers {\n const headers = new Headers(this.defaults.headers);\n\n if (this.defaults.userAgent && !headers.has(\"User-Agent\")) {\n headers.set(\"User-Agent\", this.defaults.userAgent);\n }\n\n if (this.defaults.oidcTokens?.accessToken && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", `Bearer ${this.defaults.oidcTokens.accessToken}`);\n }\n\n return headers;\n }\n}\n\nfunction normalizeEndpoint(endpoint: string): string {\n if (endpoint.length <= 1) {\n return endpoint;\n }\n\n return endpoint.endsWith(\"/\") ? endpoint.slice(0, -1) : endpoint;\n}\n\nfunction normalizePath(path: string): string {\n if (path.startsWith(\"http://\") || path.startsWith(\"https://\")) {\n return path;\n }\n\n return path.startsWith(\"/\") ? path : `/${path}`;\n}\n\nfunction toWsBaseURL(endpoint: string): string {\n const url = new URL(endpoint);\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n if (!url.pathname.endsWith(\"/\")) {\n url.pathname = `${url.pathname}/`;\n }\n\n return url.toString();\n}\n\nfunction applyHeaders(target: Headers, source?: HeadersInit): void {\n if (!source) {\n return;\n }\n\n const toApply = new Headers(source);\n for (const [key, value] of toApply.entries()) {\n target.set(key, value);\n }\n}\n\nfunction headersToObject(headers: Headers): Record<string, string> {\n const result: Record<string, string> = {};\n for (const [key, value] of headers.entries()) {\n result[key] = value;\n }\n\n return result;\n}\n\nfunction nodeHeadersToWebHeaders(\n headers: Record<string, string | string[] | undefined>,\n): Headers {\n const result = new Headers();\n for (const [key, value] of Object.entries(headers)) {\n if (value === undefined) {\n continue;\n }\n\n if (Array.isArray(value)) {\n result.set(key, value.join(\", \"));\n } else {\n result.set(key, value);\n }\n }\n\n return result;\n}\n\nfunction isIncusEnvelope(value: unknown): value is IncusApiEnvelope {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n\n const asRecord = value as Record<string, unknown>;\n return \"type\" in asRecord && \"metadata\" in asRecord;\n}\n\nasync function parseResponseBody(response: Response): Promise<unknown> {\n if (response.status === 204) {\n return null;\n }\n\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"application/json\")) {\n return response.json();\n }\n\n if (\n contentType.startsWith(\"text/\") ||\n contentType.includes(\"application/openmetrics-text\")\n ) {\n return response.text();\n }\n\n return new Uint8Array(await response.arrayBuffer());\n}\n\nfunction parseRawBody(contentType: string | undefined, bytes: Uint8Array): unknown {\n if (bytes.byteLength === 0) {\n return null;\n }\n\n const type = contentType ?? \"\";\n if (type.includes(\"application/json\")) {\n try {\n return JSON.parse(new TextDecoder().decode(bytes));\n } catch {\n return new TextDecoder().decode(bytes);\n }\n }\n\n if (type.startsWith(\"text/\") || type.includes(\"application/openmetrics-text\")) {\n return new TextDecoder().decode(bytes);\n }\n\n return bytes;\n}\n\nfunction parseFilters(filters: string[]): string {\n const translated: string[] = [];\n for (const filter of filters) {\n if (!filter.includes(\"=\")) {\n continue;\n }\n\n const [left, right] = filter.split(\"=\", 2);\n translated.push(`${left} eq ${right}`);\n }\n\n return translated.join(\" and \");\n}\n\nfunction urlsToResourceNames(matchPathPrefix: string, urls: string[]): string[] {\n const normalizedPrefix = `${matchPathPrefix.replace(/\\/$/, \"\")}/`;\n return urls.map((rawUrl) => {\n const parsed = new URL(rawUrl, \"http://incus.local\");\n const index = parsed.pathname.indexOf(normalizedPrefix);\n if (index < 0) {\n throw new Error(`[Incus.ts] Unexpected resource URL: ${rawUrl}`);\n }\n\n return decodeURIComponent(parsed.pathname.slice(index + normalizedPrefix.length));\n });\n}\n\nfunction toStringArray(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.filter((entry): entry is string => typeof entry === \"string\");\n}\n\nfunction toRecord(value: unknown): IncusRecord {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n return value as IncusRecord;\n}\n\nfunction toRecordArray(value: unknown): IncusRecord[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .filter((entry): entry is Record<string, unknown> => !!entry && typeof entry === \"object\")\n .map((entry) => entry as IncusRecord);\n}\n\nfunction flattenOperationMap(value: unknown): IncusRecord[] {\n if (Array.isArray(value)) {\n return toRecordArray(value);\n }\n\n if (!value || typeof value !== \"object\") {\n return [];\n }\n\n const out: IncusRecord[] = [];\n for (const entry of Object.values(value)) {\n if (Array.isArray(entry)) {\n out.push(...toRecordArray(entry));\n }\n }\n\n return out;\n}\n\nfunction decodeOperationId(operationValue: string): string {\n const cleaned = operationValue.split(\"?\")[0] ?? operationValue;\n const parts = cleaned.split(\"/\").filter(Boolean);\n return decodeURIComponent(parts[parts.length - 1] ?? operationValue);\n}\n\nfunction operationPath(id: string): string {\n return `/1.0/operations/${encodeURIComponent(id)}`;\n}\n\nfunction toReadableStream(data: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller) {\n controller.enqueue(data);\n controller.close();\n },\n });\n}\n\nfunction toBytes(data: unknown): Uint8Array {\n if (data instanceof Uint8Array) {\n return data;\n }\n\n if (typeof data === \"string\") {\n return new TextEncoder().encode(data);\n }\n\n if (data === null || data === undefined) {\n return new Uint8Array();\n }\n\n return new TextEncoder().encode(JSON.stringify(data));\n}\n\nfunction toStringRecord(value: unknown): Record<string, string> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return {};\n }\n\n const out: Record<string, string> = {};\n for (const [key, entry] of Object.entries(value)) {\n if (typeof entry === \"string\") {\n out[key] = entry;\n }\n }\n\n return out;\n}\n\nfunction parseOperationIdFromEnvelope(result: IncusEnvelopeResult<unknown>): string | undefined {\n if (typeof result.operation === \"string\" && result.operation.length > 0) {\n return decodeOperationId(result.operation);\n }\n\n if (result.value && typeof result.value === \"object\") {\n const asRecord = result.value as Record<string, unknown>;\n if (typeof asRecord.id === \"string\" && asRecord.id.length > 0) {\n return decodeOperationId(asRecord.id);\n }\n\n if (typeof asRecord.operation === \"string\" && asRecord.operation.length > 0) {\n return decodeOperationId(asRecord.operation);\n }\n }\n\n return undefined;\n}\n\nfunction assertOperationSuccess(operation: IncusRecord, source: string): void {\n const err = operation.err;\n if (typeof err === \"string\" && err.trim().length > 0) {\n throw new Error(`[Incus.ts] Operation ${source} failed: ${err}`);\n }\n\n const statusCode = operation.status_code;\n if (typeof statusCode === \"number\" && statusCode >= 400) {\n const status = typeof operation.status === \"string\" ? ` (${operation.status})` : \"\";\n throw new Error(\n `[Incus.ts] Operation ${source} failed with status code ${statusCode}${status}`,\n );\n }\n}\n\nfunction parseExecExitCode(operation: IncusRecord): number | undefined {\n const candidates: unknown[] = [\n operation.return,\n operation[\"return-code\"],\n operation.return_code,\n toRecord(operation.metadata).return,\n toRecord(operation.metadata)[\"return-code\"],\n toRecord(operation.metadata).return_code,\n ];\n\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n\n if (typeof candidate === \"string\" && candidate.length > 0) {\n const parsed = Number.parseInt(candidate, 10);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n }\n\n return undefined;\n}\n\nfunction toExecResult(operation: IncusRecord): IncusExecResult {\n const exitCode = parseExecExitCode(operation);\n return {\n operation,\n exitCode,\n ok: exitCode === undefined ? true : exitCode === 0,\n };\n}\n\nfunction extractExecFds(operationValue: unknown): Record<string, string> {\n const record = toRecord(operationValue);\n const candidates: unknown[] = [\n record.fds,\n toRecord(record.metadata).fds,\n toRecord(toRecord(record.operation).metadata).fds,\n toRecord(toRecord(record.metadata).operation).fds,\n ];\n\n for (const candidate of candidates) {\n const fds = toStringRecord(candidate);\n if (Object.keys(fds).length > 0) {\n return fds;\n }\n }\n\n return {};\n}\n\nfunction getBooleanValue(record: IncusRecord, keys: string[]): boolean | undefined {\n for (const key of keys) {\n const value = record[key];\n if (typeof value === \"boolean\") {\n return value;\n }\n }\n\n return undefined;\n}\n\nfunction isInteractiveExecRequest(request: IncusRecord): boolean {\n return getBooleanValue(request, [\"interactive\", \"Interactive\"]) ?? false;\n}\n\nfunction hasWaitForWebsocketFlag(request: IncusRecord): boolean {\n return getBooleanValue(request, [\n \"wait-for-websocket\",\n \"wait_for_websocket\",\n \"waitForWebsocket\",\n \"waitForWS\",\n \"WaitForWS\",\n ]) !== undefined;\n}\n\nfunction isNodeWebSocket(socket: WebSocketLike): boolean {\n return typeof socket.on === \"function\";\n}\n\nfunction addWebSocketMessageListener(\n socket: WebSocketLike,\n listener: (data: unknown) => void,\n): () => void {\n if (isNodeWebSocket(socket) && socket.on && socket.off) {\n const nodeListener = (data: unknown) => {\n listener(data);\n };\n socket.on(\"message\", nodeListener);\n return () => {\n socket.off?.(\"message\", nodeListener);\n };\n }\n\n const domListener = (event: unknown) => {\n const data = event && typeof event === \"object\" && \"data\" in event\n ? (event as { data: unknown }).data\n : event;\n listener(data);\n };\n\n socket.addEventListener?.(\"message\", domListener);\n return () => {\n socket.removeEventListener?.(\"message\", domListener);\n };\n}\n\nfunction addWebSocketCloseListener(socket: WebSocketLike, listener: () => void): () => void {\n if (isNodeWebSocket(socket) && socket.on && socket.off) {\n const nodeListener = () => {\n listener();\n };\n socket.on(\"close\", nodeListener);\n return () => {\n socket.off?.(\"close\", nodeListener);\n };\n }\n\n const domListener = () => {\n listener();\n };\n socket.addEventListener?.(\"close\", domListener);\n return () => {\n socket.removeEventListener?.(\"close\", domListener);\n };\n}\n\nfunction addWebSocketErrorListener(\n socket: WebSocketLike,\n listener: (error: unknown) => void,\n): () => void {\n if (isNodeWebSocket(socket) && socket.on && socket.off) {\n const nodeListener = (error: unknown) => {\n listener(error);\n };\n socket.on(\"error\", nodeListener);\n return () => {\n socket.off?.(\"error\", nodeListener);\n };\n }\n\n const domListener = (event: unknown) => {\n listener(event);\n };\n socket.addEventListener?.(\"error\", domListener);\n return () => {\n socket.removeEventListener?.(\"error\", domListener);\n };\n}\n\nfunction closeWebSocketSafely(socket: WebSocketLike): void {\n try {\n socket.close();\n } catch {\n // Best effort.\n }\n}\n\ntype AsyncQueue<T> = {\n iterable: AsyncIterable<T>;\n push(value: T): void;\n close(): void;\n fail(error: unknown): void;\n done: Promise<void>;\n};\n\nfunction createAsyncQueue<T>(): AsyncQueue<T> {\n const items: T[] = [];\n const waiters: Array<{\n resolve: (result: IteratorResult<T>) => void;\n reject: (reason?: unknown) => void;\n }> = [];\n let closed = false;\n let failure: unknown | undefined;\n let resolveDone!: () => void;\n const done = new Promise<void>((resolve) => {\n resolveDone = resolve;\n });\n\n const settleDone = () => {\n resolveDone();\n };\n\n const close = () => {\n if (closed) {\n return;\n }\n\n closed = true;\n while (waiters.length > 0) {\n const waiter = waiters.shift();\n waiter?.resolve({ done: true, value: undefined as T });\n }\n settleDone();\n };\n\n const fail = (error: unknown) => {\n if (closed) {\n return;\n }\n\n failure = error;\n closed = true;\n while (waiters.length > 0) {\n const waiter = waiters.shift();\n waiter?.reject(error);\n }\n settleDone();\n };\n\n const push = (value: T) => {\n if (closed) {\n return;\n }\n\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve({ done: false, value });\n return;\n }\n\n items.push(value);\n };\n\n const iterable: AsyncIterable<T> = {\n [Symbol.asyncIterator]() {\n return {\n next: () => {\n if (items.length > 0) {\n const value = items.shift();\n return Promise.resolve({ done: false, value: value as T });\n }\n\n if (failure !== undefined) {\n return Promise.reject(failure);\n }\n\n if (closed) {\n return Promise.resolve({ done: true, value: undefined as T });\n }\n\n return new Promise<IteratorResult<T>>((resolve, reject) => {\n waiters.push({ resolve, reject });\n });\n },\n };\n },\n };\n\n return { iterable, push, close, fail, done };\n}\n\nfunction createAwaitableOperation(\n operationReadyInput: PromiseLike<IncusOperation> | IncusOperation,\n defaultWaitOptions: IncusOperationWaitOptions = {},\n): IncusAwaitableOperation {\n const operationReady = Promise.resolve(operationReadyInput);\n let operationId = \"\";\n void operationReady.then((operation) => {\n operationId = operation.id;\n }).catch(() => {\n // Best effort.\n });\n\n const wait = (options: IncusOperationWaitOptions = defaultWaitOptions) => (\n operationReady.then((operation) => operation.wait(options))\n );\n\n let defaultWaitPromise: Promise<IncusRecord> | undefined;\n const getDefaultWaitPromise = () => {\n defaultWaitPromise ??= wait(defaultWaitOptions);\n return defaultWaitPromise;\n };\n\n return {\n get id(): string {\n return operationId;\n },\n wait,\n cancel: () => operationReady.then((operation) => operation.cancel()),\n refresh: () => operationReady.then((operation) => operation.refresh()),\n websocket: (secret: string) => operationReady.then((operation) => operation.websocket(secret)),\n onUpdate: (handler: (operation: IncusRecord) => void) => (\n operationReady.then((operation) => operation.onUpdate(handler))\n ),\n then: <TResult1 = IncusRecord, TResult2 = never>(\n onFulfilled?: ((value: IncusRecord) => TResult1 | PromiseLike<TResult1>) | null,\n onRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> => (\n getDefaultWaitPromise().then(onFulfilled, onRejected)\n ),\n catch: <TResult = never>(\n onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<IncusRecord | TResult> => (\n getDefaultWaitPromise().catch(onRejected)\n ),\n finally: (onFinally?: (() => void) | null): Promise<IncusRecord> => (\n getDefaultWaitPromise().finally(onFinally ?? undefined)\n ),\n };\n}\n\nasync function webSocketDataToBytes(data: unknown): Promise<Uint8Array> {\n if (data instanceof Uint8Array) {\n return data;\n }\n\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n\n if (data instanceof Blob) {\n return new Uint8Array(await data.arrayBuffer());\n }\n\n if (typeof data === \"string\") {\n return new TextEncoder().encode(data);\n }\n\n return toBytes(data);\n}\n\nfunction streamWebSocketToWritable(\n socket: WebSocketLike,\n options: {\n output?: WritableStream<Uint8Array>;\n onChunk?: (chunk: Uint8Array) => void;\n onError?: (error: unknown) => void;\n onClose?: () => void;\n } = {},\n): Promise<void> {\n const writer = options.output?.getWriter();\n let writeChain = Promise.resolve();\n let finished = false;\n const detachments: Array<() => void> = [];\n let resolveDone!: () => void;\n const done = new Promise<void>((resolve) => {\n resolveDone = resolve;\n });\n\n const finish = (error?: unknown) => {\n if (finished) {\n return;\n }\n\n finished = true;\n for (const detach of detachments) {\n detach();\n }\n\n void writeChain.finally(async () => {\n if (error !== undefined) {\n options.onError?.(error);\n } else {\n options.onClose?.();\n }\n\n if (writer) {\n try {\n await writer.close();\n } catch {\n // Best effort.\n }\n\n writer.releaseLock();\n }\n\n resolveDone();\n });\n };\n\n detachments.push(\n addWebSocketMessageListener(socket, (data) => {\n writeChain = writeChain.then(async () => {\n const bytes = await webSocketDataToBytes(data);\n options.onChunk?.(bytes);\n if (writer) {\n await writer.write(bytes);\n }\n }).catch((error) => {\n finish(error);\n });\n }),\n );\n detachments.push(addWebSocketCloseListener(socket, () => finish()));\n detachments.push(addWebSocketErrorListener(socket, (error) => finish(error)));\n\n return done;\n}\n\nasync function sendToWebSocket(socket: WebSocketLike, data: Uint8Array): Promise<void> {\n if (isNodeWebSocket(socket)) {\n const send = (socket as unknown as {\n send: (\n payload: Uint8Array,\n callback?: (error?: Error) => void,\n ) => void;\n }).send;\n\n // Unix-socket websocket shims expose a synchronous `send(data)` API, while\n // libraries like `ws` use the callback form to signal flush completion.\n if (send.length < 2) {\n send.call(socket, data);\n return;\n }\n\n await new Promise<void>((resolve, reject) => {\n try {\n send.call(socket, data, (error?: Error) => {\n if (error) {\n reject(error);\n return;\n }\n\n resolve();\n });\n } catch (error) {\n reject(error);\n }\n });\n return;\n }\n\n socket.send(data);\n}\n\nasync function* toInputChunks(input: IncusBinaryInput): AsyncGenerator<Uint8Array> {\n if (input instanceof Uint8Array) {\n yield input;\n return;\n }\n\n if (input instanceof ArrayBuffer) {\n yield new Uint8Array(input);\n return;\n }\n\n if (ArrayBuffer.isView(input)) {\n yield new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n return;\n }\n\n if (input instanceof Blob) {\n yield new Uint8Array(await input.arrayBuffer());\n return;\n }\n\n const reader = input.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n\n if (value) {\n yield value;\n }\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nasync function writeInputToWebSocket(socket: WebSocketLike, input?: IncusBinaryInput): Promise<void> {\n if (!input) {\n closeWebSocketSafely(socket);\n return;\n }\n\n try {\n for await (const chunk of toInputChunks(input)) {\n await sendToWebSocket(socket, chunk);\n }\n } finally {\n closeWebSocketSafely(socket);\n }\n}\n\nfunction parseFileHeaders(headers: Headers | undefined): FileHeaders {\n if (!headers) {\n return {};\n }\n\n const uidRaw = headers.get(\"x-incus-uid\");\n const gidRaw = headers.get(\"x-incus-gid\");\n const modeRaw = headers.get(\"x-incus-mode\");\n const typeRaw = headers.get(\"x-incus-type\");\n\n return {\n uid: uidRaw ? Number.parseInt(uidRaw, 10) : undefined,\n gid: gidRaw ? Number.parseInt(gidRaw, 10) : undefined,\n mode: modeRaw ? Number.parseInt(modeRaw, 8) : undefined,\n type: typeRaw ?? undefined,\n };\n}\n\nfunction createNotImplementedProxy(path: string[]): unknown {\n const fn = (..._args: unknown[]) =>\n Promise.reject(\n new Error(`[Incus.ts] ${path.join(\".\")}() is not implemented yet`),\n );\n\n return new Proxy(fn, {\n get(_target, property) {\n if (property === \"then\") {\n return undefined;\n }\n\n if (typeof property === \"symbol\") {\n return undefined;\n }\n\n return createNotImplementedProxy([...path, String(property)]);\n },\n apply() {\n return Promise.reject(\n new Error(`[Incus.ts] ${path.join(\".\")}() is not implemented yet`),\n );\n },\n });\n}\n\nfunction createApiWithFallback<T extends object>(root: string, implemented: Partial<T>): T {\n return new Proxy(implemented as T, {\n get(target, property, receiver) {\n if (typeof property === \"symbol\") {\n return Reflect.get(target, property, receiver);\n }\n\n if (Reflect.has(target, property)) {\n return Reflect.get(target, property, receiver);\n }\n\n return createNotImplementedProxy([root, String(property)]);\n },\n });\n}\n\nfunction createRemoteOperationFromTarget(\n targetOperation: IncusOperation | null,\n): IncusRemoteOperation {\n return {\n wait: async () => {\n if (targetOperation) {\n await targetOperation.wait();\n }\n },\n cancelTarget: async () => {\n if (targetOperation) {\n await targetOperation.cancel();\n }\n },\n target: async () => {\n if (!targetOperation) {\n return null;\n }\n\n return targetOperation.refresh();\n },\n onUpdate: async (handler) => {\n if (!targetOperation) {\n return async () => {};\n }\n\n return targetOperation.onUpdate(handler);\n },\n };\n}\n\nfunction prepareBody(body: unknown): {\n body: BodyInit | null | undefined;\n contentType?: string;\n} {\n if (body === undefined || body === null) {\n return { body: undefined };\n }\n\n if (\n body instanceof Blob ||\n body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n body instanceof ReadableStream ||\n typeof body === \"string\" ||\n body instanceof URLSearchParams ||\n body instanceof FormData\n ) {\n return { body: body as BodyInit };\n }\n\n return {\n body: JSON.stringify(body),\n contentType: \"application/json\",\n };\n}\n\nasync function prepareUnixBody(body: unknown): Promise<{\n bodyBytes?: Uint8Array;\n contentType?: string;\n}> {\n if (body === undefined || body === null) {\n return {};\n }\n\n if (typeof body === \"string\") {\n return { bodyBytes: new TextEncoder().encode(body), contentType: \"text/plain\" };\n }\n\n if (body instanceof Uint8Array) {\n return { bodyBytes: body };\n }\n\n if (body instanceof ArrayBuffer) {\n return { bodyBytes: new Uint8Array(body) };\n }\n\n if (ArrayBuffer.isView(body)) {\n return { bodyBytes: new Uint8Array(body.buffer, body.byteOffset, body.byteLength) };\n }\n\n if (body instanceof Blob) {\n return { bodyBytes: new Uint8Array(await body.arrayBuffer()) };\n }\n\n if (body instanceof ReadableStream) {\n throw new Error(\"[Incus.ts] ReadableStream body over Unix socket is not implemented yet\");\n }\n\n return {\n bodyBytes: new TextEncoder().encode(JSON.stringify(body)),\n contentType: \"application/json\",\n };\n}\n\nexport class IncusImageClient {\n readonly connection: ConnectionApi;\n readonly images: ImagesApi;\n readonly raw: RawApi;\n\n protected readonly contextState: Readonly<IncusRequestContext>;\n protected readonly kind: IncusConnectKind;\n private serverSnapshot?: IncusRecord;\n\n constructor(\n protected readonly transport: IncusTransport,\n readonly endpoint: string,\n readonly options: Readonly<IncusConnectionOptions> = {},\n context: Readonly<IncusRequestContext> = {},\n kind: IncusConnectKind = \"incus\",\n ) {\n this.contextState = context;\n this.kind = kind;\n this.connection = this.createConnectionApi();\n this.raw = this.createRawApi();\n this.images = this.createImagesApi();\n }\n\n get context(): Readonly<IncusRequestContext> {\n return this.contextState;\n }\n\n disconnect(): void {\n this.transport.close?.();\n }\n\n protected async requestTransport(\n method: string,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<IncusTransportResponse<unknown>> {\n const { applyContext = true, ...rest } = options;\n return this.transport.request(method, path, {\n ...rest,\n context: applyContext ? this.contextState : undefined,\n });\n }\n\n protected async requestEnvelope<T = unknown>(\n method: string,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<IncusEnvelopeResult<T>> {\n const response = await this.requestTransport(method, path, options);\n const payload = response.data;\n\n if (isIncusEnvelope(payload)) {\n if (payload.type === \"error\" || response.status >= 400) {\n throw new IncusApiError(\n payload.error ?? `Incus request failed (${response.status})`,\n response.status,\n {\n statusCode: payload.status_code,\n errorCode: payload.error_code,\n details: payload.metadata,\n },\n );\n }\n\n return {\n value: payload.metadata as T,\n etag: response.etag,\n operation: payload.operation,\n status: response.status,\n headers: response.headers,\n };\n }\n\n if (response.status >= 400) {\n throw new IncusApiError(\n typeof payload === \"string\"\n ? payload\n : `Incus request failed (${response.status})`,\n response.status,\n { details: payload },\n );\n }\n\n return {\n value: payload as T,\n etag: response.etag,\n status: response.status,\n headers: response.headers,\n };\n }\n\n protected async requestBinary(\n method: string,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<IncusEnvelopeResult<Uint8Array>> {\n const response = await this.requestTransport(method, path, options);\n const payload = response.data;\n\n if (isIncusEnvelope(payload)) {\n if (payload.type === \"error\" || response.status >= 400) {\n throw new IncusApiError(\n payload.error ?? `Incus request failed (${response.status})`,\n response.status,\n {\n statusCode: payload.status_code,\n errorCode: payload.error_code,\n details: payload.metadata,\n },\n );\n }\n\n return {\n value: toBytes(payload.metadata),\n etag: response.etag,\n operation: payload.operation,\n status: response.status,\n headers: response.headers,\n };\n }\n\n if (response.status >= 400) {\n throw new IncusApiError(\n typeof payload === \"string\"\n ? payload\n : `Incus request failed (${response.status})`,\n response.status,\n { details: payload },\n );\n }\n\n return {\n value: toBytes(payload),\n etag: response.etag,\n status: response.status,\n headers: response.headers,\n };\n }\n\n protected createOperationFromRequest(\n method: string,\n path: string,\n options: InternalRequestOptions = {},\n ): IncusAwaitableOperation {\n const operationReady = this.requestEnvelope(method, path, options)\n .then((result) => this.createOperationFromEnvelopeResult(method, path, result));\n return createAwaitableOperation(operationReady);\n }\n\n protected createOperationFromEnvelopeResult(\n method: string,\n path: string,\n result: IncusEnvelopeResult<unknown>,\n ): IncusOperation {\n const operationId = parseOperationIdFromEnvelope(result);\n if (!operationId) {\n throw new Error(\n `[Incus.ts] Missing operation id in response for ${method.toUpperCase()} ${path}`,\n );\n }\n\n return this.createOperation(operationId);\n }\n\n protected createOperation(id: string): IncusOperation {\n return {\n id,\n wait: async (options = {}) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `${operationPath(id)}/wait`,\n {\n query: {\n timeout: options.timeoutSeconds ?? -1,\n },\n signal: options.signal,\n },\n );\n const operation = toRecord(result.value);\n assertOperationSuccess(operation, id);\n return operation;\n },\n cancel: async () => {\n await this.requestEnvelope(\"DELETE\", operationPath(id));\n },\n refresh: async () => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n operationPath(id),\n );\n return toRecord(result.value);\n },\n websocket: async (secret: string) => {\n return this.openWebsocket(`${operationPath(id)}/websocket?secret=${encodeURIComponent(secret)}`);\n },\n onUpdate: async (handler) => {\n const timer = setInterval(async () => {\n try {\n const operation = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n operationPath(id),\n );\n handler(toRecord(operation.value));\n } catch {\n // Best effort.\n }\n }, 1000);\n\n return async () => {\n clearInterval(timer);\n };\n },\n };\n }\n\n protected async openWebsocket(\n path: string,\n options: { applyContext?: boolean } = {},\n ): Promise<WebSocket> {\n if (!this.transport.websocket) {\n throw new Error(\"[Incus.ts] Transport does not support websocket connections\");\n }\n\n let finalPath = path;\n if (options.applyContext !== false) {\n const url = new URL(normalizePath(path), \"http://incus.local\");\n if (this.context.target && !url.searchParams.has(\"target\")) {\n url.searchParams.set(\"target\", this.context.target);\n }\n\n if (\n this.context.project &&\n !url.searchParams.has(\"project\") &&\n !url.searchParams.has(\"all-projects\")\n ) {\n url.searchParams.set(\"project\", this.context.project);\n }\n\n finalPath = `${url.pathname}${url.search}`;\n }\n\n return this.transport.websocket(finalPath);\n }\n\n private async getServerSnapshot(): Promise<IncusRecord | undefined> {\n if (this.serverSnapshot) {\n return this.serverSnapshot;\n }\n\n if (\n this.kind === \"simple-streams\" ||\n this.kind === \"incus-public\"\n ) {\n return undefined;\n }\n\n try {\n const server = await this.requestEnvelope<IncusRecord>(\"GET\", \"/1.0\");\n this.serverSnapshot = toRecord(server.value);\n return this.serverSnapshot;\n } catch {\n return undefined;\n }\n }\n\n private createConnectionApi(): ConnectionApi {\n return createApiWithFallback<ConnectionApi>(\"connection\", {\n info: async () => {\n const server = await this.getServerSnapshot();\n const env = toRecord(server?.environment);\n const addresses = Array.isArray(env.addresses)\n ? env.addresses.filter((entry): entry is string => typeof entry === \"string\")\n : [];\n const httpsAddresses = addresses\n .filter((entry) => !entry.startsWith(\":\"))\n .map((entry) => `https://${entry}`);\n\n const socketPath = this.endpoint.startsWith(\"unix://\")\n ? this.endpoint.replace(/^unix:\\/\\//, \"\")\n : undefined;\n\n return {\n addresses: httpsAddresses,\n certificate: typeof env.certificate === \"string\" ? env.certificate : undefined,\n protocol: this.kind === \"simple-streams\" ? \"simplestreams\" : \"incus\",\n url: this.endpoint.startsWith(\"unix://\") ? undefined : this.endpoint,\n socketPath,\n project: this.context.project ?? \"default\",\n target: this.context.target\n ?? (typeof env.server_name === \"string\" ? env.server_name : undefined),\n };\n },\n httpClient: async () => this.options.fetch ?? fetch,\n doHttp: async (request: Request) => {\n const fetchImpl = this.options.fetch ?? fetch;\n return fetchImpl(request);\n },\n disconnect: () => this.disconnect(),\n });\n }\n\n private createRawApi(): RawApi {\n return createApiWithFallback<RawApi>(\"raw\", {\n query: async <T = IncusRecord>(\n method: string,\n path: string,\n body?: unknown,\n options: IncusMutationOptions = {},\n ) => {\n const result = await this.requestEnvelope<T>(method, path, {\n body,\n etag: options.etag,\n applyContext: false,\n });\n return { value: result.value, etag: result.etag };\n },\n websocket: async (path: string) => this.openWebsocket(path, { applyContext: false }),\n operation: (\n method: string,\n path: string,\n body?: unknown,\n options: IncusMutationOptions = {},\n ) => {\n return this.createOperationFromRequest(method, path, {\n body,\n etag: options.etag,\n applyContext: false,\n });\n },\n });\n }\n\n private createImageAliasesApi(): ImageAliasesApi {\n return createApiWithFallback<ImageAliasesApi>(\"images.aliases\", {\n list: async () => {\n const result = await this.requestEnvelope<IncusRecord[]>(\n \"GET\",\n \"/1.0/images/aliases\",\n { query: { recursion: 1 } },\n );\n return toRecordArray(result.value);\n },\n names: async () => {\n const result = await this.requestEnvelope<unknown[]>(\n \"GET\",\n \"/1.0/images/aliases\",\n );\n return urlsToResourceNames(\"/images/aliases\", toStringArray(result.value));\n },\n get: async (name: string) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/images/aliases/${encodeURIComponent(name)}`,\n );\n return { value: toRecord(result.value), etag: result.etag };\n },\n getArchitectures: async (name: string) => {\n const alias = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/images/aliases/${encodeURIComponent(name)}`,\n );\n const target = toRecord(alias.value).target;\n if (typeof target !== \"string\") {\n return {};\n }\n\n const image = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/images/${encodeURIComponent(target)}`,\n );\n const architecture = toRecord(image.value).architecture;\n if (typeof architecture !== \"string\") {\n return {};\n }\n\n return { [architecture]: toRecord(alias.value) };\n },\n create: async (alias: IncusRecord) => {\n await this.requestEnvelope(\"POST\", \"/1.0/images/aliases\", { body: alias });\n },\n update: async (\n name: string,\n alias: IncusRecord,\n options: IncusMutationOptions = {},\n ) => {\n await this.requestEnvelope(\n \"PUT\",\n `/1.0/images/aliases/${encodeURIComponent(name)}`,\n { body: alias, etag: options.etag },\n );\n },\n rename: async (name: string, alias: IncusRecord) => {\n await this.requestEnvelope(\n \"POST\",\n `/1.0/images/aliases/${encodeURIComponent(name)}`,\n { body: alias },\n );\n },\n remove: async (name: string) => {\n await this.requestEnvelope(\n \"DELETE\",\n `/1.0/images/aliases/${encodeURIComponent(name)}`,\n );\n },\n });\n }\n\n private createImagesApi(): ImagesApi {\n if (this.kind === \"simple-streams\") {\n return createApiWithFallback<ImagesApi>(\"images\", {\n aliases: createNotImplementedProxy([\"images\", \"aliases\"]) as ImageAliasesApi,\n });\n }\n\n return createApiWithFallback<ImagesApi>(\"images\", {\n list: async (options = {}) => {\n const query: Record<string, string | number | boolean | undefined> = {\n recursion: 1,\n };\n if (options.allProjects) {\n query[\"all-projects\"] = true;\n }\n\n if (options.filter && options.filter.length > 0) {\n query.filter = parseFilters(options.filter);\n }\n\n const result = await this.requestEnvelope<IncusRecord[]>(\"GET\", \"/1.0/images\", {\n query,\n });\n return toRecordArray(result.value);\n },\n fingerprints: async (options = {}) => {\n if (options.filter?.length || options.allProjects) {\n const images = await this.images.list(options);\n return images\n .map((image) => image.fingerprint)\n .filter((entry): entry is string => typeof entry === \"string\");\n }\n\n const result = await this.requestEnvelope<unknown[]>(\"GET\", \"/1.0/images\");\n return urlsToResourceNames(\"/images\", toStringArray(result.value));\n },\n get: async (\n fingerprint: string,\n options: { secret?: string } = {},\n ) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/images/${encodeURIComponent(fingerprint)}`,\n {\n query: options.secret ? { secret: options.secret } : undefined,\n },\n );\n return { value: toRecord(result.value), etag: result.etag };\n },\n create: (image: IncusRecord, upload?: IncusRecord) => {\n const body = upload ? { ...image, upload } : image;\n return this.createOperationFromRequest(\"POST\", \"/1.0/images\", { body });\n },\n copyFrom: async (\n _source: IncusImageClient,\n _image: IncusRecord,\n _options?: IncusRecord,\n ) => createRemoteOperationFromTarget(null),\n update: async (\n fingerprint: string,\n image: IncusRecord,\n options: IncusMutationOptions = {},\n ) => {\n await this.requestEnvelope(\n \"PUT\",\n `/1.0/images/${encodeURIComponent(fingerprint)}`,\n {\n body: image,\n etag: options.etag,\n },\n );\n },\n remove: (fingerprint: string) => {\n return this.createOperationFromRequest(\n \"DELETE\",\n `/1.0/images/${encodeURIComponent(fingerprint)}`,\n );\n },\n refresh: (fingerprint: string) => {\n return this.createOperationFromRequest(\n \"POST\",\n `/1.0/images/${encodeURIComponent(fingerprint)}/refresh`,\n );\n },\n createSecret: (fingerprint: string) => {\n return this.createOperationFromRequest(\n \"POST\",\n `/1.0/images/${encodeURIComponent(fingerprint)}/secret`,\n );\n },\n export: (fingerprint: string, request?: IncusRecord) => {\n return this.createOperationFromRequest(\n \"POST\",\n `/1.0/images/${encodeURIComponent(fingerprint)}/export`,\n { body: request ?? {} },\n );\n },\n aliases: this.createImageAliasesApi(),\n });\n }\n}\n\nexport class IncusClient extends IncusImageClient {\n readonly server: ServerApi;\n readonly certificates: CertificatesApi;\n readonly instances: InstancesApi;\n readonly events: EventsApi;\n readonly metadata: MetadataApi;\n readonly networks: NetworksApi;\n readonly operations: OperationsApi;\n readonly profiles: ProfilesApi;\n readonly projects: ProjectsApi;\n readonly storage: StorageApi;\n readonly cluster: ClusterApi;\n readonly warnings: WarningsApi;\n readonly oidc: OidcApi;\n\n constructor(\n transport: IncusTransport,\n endpoint: string,\n options: Readonly<IncusConnectionOptions> = {},\n context: Readonly<IncusRequestContext> = {},\n kind: IncusConnectKind = \"incus\",\n ) {\n super(transport, endpoint, options, context, kind);\n\n this.server = this.createServerApi();\n this.certificates = createNotImplementedProxy([\"certificates\"]) as CertificatesApi;\n this.instances = this.createInstancesApi();\n this.events = createNotImplementedProxy([\"events\"]) as EventsApi;\n this.metadata = createApiWithFallback<MetadataApi>(\"metadata\", {\n configuration: async () => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n \"/1.0/metadata/configuration\",\n );\n return toRecord(result.value);\n },\n });\n this.networks = createNotImplementedProxy([\"networks\"]) as NetworksApi;\n this.operations = this.createOperationsApi();\n this.profiles = createNotImplementedProxy([\"profiles\"]) as ProfilesApi;\n this.projects = createNotImplementedProxy([\"projects\"]) as ProjectsApi;\n this.storage = createNotImplementedProxy([\"storage\"]) as StorageApi;\n this.cluster = createNotImplementedProxy([\"cluster\"]) as ClusterApi;\n this.warnings = createNotImplementedProxy([\"warnings\"]) as WarningsApi;\n this.oidc = createApiWithFallback<OidcApi>(\"oidc\", {\n tokens: async () => {\n if (!this.options.oidcTokens) {\n return null;\n }\n\n return { ...this.options.oidcTokens };\n },\n });\n }\n\n withContext(contextPatch: Partial<IncusRequestContext>): IncusClient {\n return new IncusClient(this.transport, this.endpoint, this.options, {\n ...this.context,\n ...contextPatch,\n }, this.kind);\n }\n\n project(name: string): IncusClient {\n return this.withContext({ project: name });\n }\n\n target(name: string): IncusClient {\n return this.withContext({ target: name });\n }\n\n requireAuthenticated(authenticated = true): IncusClient {\n return this.withContext({ requireAuthenticated: authenticated });\n }\n\n private createServerApi(): ServerApi {\n return createApiWithFallback<ServerApi>(\"server\", {\n metrics: async () => {\n const result = await this.requestEnvelope<string>(\"GET\", \"/1.0/metrics\");\n return typeof result.value === \"string\"\n ? result.value\n : new TextDecoder().decode(toBytes(result.value));\n },\n get: async () => {\n const result = await this.requestEnvelope<IncusRecord>(\"GET\", \"/1.0\");\n return { value: toRecord(result.value), etag: result.etag };\n },\n resources: async () => {\n const result = await this.requestEnvelope<IncusRecord>(\"GET\", \"/1.0/resources\");\n return toRecord(result.value);\n },\n update: async (\n server: IncusRecord,\n options: IncusMutationOptions = {},\n ) => {\n await this.requestEnvelope(\"PUT\", \"/1.0\", {\n body: server,\n etag: options.etag,\n });\n },\n applyPreseed: async (config: IncusRecord) => {\n await this.requestEnvelope(\"PUT\", \"/1.0\", { body: config });\n },\n hasExtension: async (extension: string) => {\n const result = await this.requestEnvelope<IncusRecord>(\"GET\", \"/1.0\");\n const server = toRecord(result.value);\n const apiExtensions = server.api_extensions;\n if (!Array.isArray(apiExtensions)) {\n return false;\n }\n\n return apiExtensions.some((entry) => entry === extension);\n },\n isClustered: async () => {\n const result = await this.requestEnvelope<IncusRecord>(\"GET\", \"/1.0\");\n const env = toRecord(toRecord(result.value).environment);\n return env.server_clustered === true;\n },\n });\n }\n\n private createOperationsApi(): OperationsApi {\n return createApiWithFallback<OperationsApi>(\"operations\", {\n uuids: async () => {\n const result = await this.requestEnvelope<unknown[]>(\"GET\", \"/1.0/operations\");\n return urlsToResourceNames(\"/operations\", toStringArray(result.value));\n },\n list: async (options = {}) => {\n const result = await this.requestEnvelope<unknown>(\"GET\", \"/1.0/operations\", {\n query: {\n recursion: 1,\n \"all-projects\": options.allProjects ? \"true\" : undefined,\n },\n });\n return flattenOperationMap(result.value);\n },\n get: async (uuid: string) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/operations/${encodeURIComponent(uuid)}`,\n );\n return { value: toRecord(result.value), etag: result.etag };\n },\n wait: async (uuid: string, timeoutSeconds = -1) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/operations/${encodeURIComponent(uuid)}/wait`,\n {\n query: { timeout: timeoutSeconds },\n },\n );\n const operation = toRecord(result.value);\n assertOperationSuccess(operation, uuid);\n return { value: operation, etag: result.etag };\n },\n waitWithSecret: async (\n uuid: string,\n secret: string,\n timeoutSeconds = -1,\n ) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `/1.0/operations/${encodeURIComponent(uuid)}/wait`,\n {\n query: {\n secret,\n timeout: timeoutSeconds,\n },\n },\n );\n const operation = toRecord(result.value);\n assertOperationSuccess(operation, uuid);\n return { value: operation, etag: result.etag };\n },\n websocket: async (uuid: string, secret: string) => {\n const query = secret ? `?secret=${encodeURIComponent(secret)}` : \"\";\n return this.openWebsocket(\n `/1.0/operations/${encodeURIComponent(uuid)}/websocket${query}`,\n );\n },\n remove: async (uuid: string) => {\n await this.requestEnvelope(\n \"DELETE\",\n `/1.0/operations/${encodeURIComponent(uuid)}`,\n );\n },\n });\n }\n\n private isPipeTarget(target: InstanceExecOptions[\"stdout\"]): target is \"pipe\" {\n return target === \"pipe\";\n }\n\n private toWritableTarget(\n target: InstanceExecOptions[\"stdout\"],\n ): WritableStream<Uint8Array> | undefined {\n return this.isPipeTarget(target) ? undefined : target;\n }\n\n private shouldAttachExecIO(options?: InstanceExecOptions): boolean {\n return Boolean(\n options?.stdin ||\n options?.stdout ||\n options?.stderr ||\n options?.onControl,\n );\n }\n\n private shouldPipeExecIO(options?: InstanceExecOptions): boolean {\n return Boolean(\n this.isPipeTarget(options?.stdout) ||\n this.isPipeTarget(options?.stderr),\n );\n }\n\n private async getExecFds(\n operation: IncusOperation,\n initialOperationValue: unknown,\n ): Promise<Record<string, string>> {\n const initial = extractExecFds(initialOperationValue);\n if (Object.keys(initial).length > 0) {\n return initial;\n }\n\n const refreshed = await operation.refresh();\n return extractExecFds(refreshed);\n }\n\n private async attachExecWebsockets(\n operation: IncusOperation,\n request: IncusRecord,\n options?: InstanceExecOptions,\n initialOperationValue?: unknown,\n hooks: {\n onStdoutChunk?: (chunk: Uint8Array) => void;\n onStderrChunk?: (chunk: Uint8Array) => void;\n onStdoutError?: (error: unknown) => void;\n onStderrError?: (error: unknown) => void;\n onStdoutClose?: () => void;\n onStderrClose?: () => void;\n } = {},\n ): Promise<{ hasStdout: boolean; hasStderr: boolean }> {\n const fds = await this.getExecFds(operation, initialOperationValue ?? {});\n if (Object.keys(fds).length === 0) {\n return { hasStdout: false, hasStderr: false };\n }\n\n const stdoutWritable = this.toWritableTarget(options?.stdout);\n const stderrWritable = this.toWritableTarget(options?.stderr);\n let hasStdout = false;\n let hasStderr = false;\n\n const openChannel = async (name: string): Promise<WebSocketLike | null> => {\n const secret = fds[name];\n if (!secret) {\n return null;\n }\n\n const socket = (await operation.websocket(secret)) as unknown as WebSocketLike;\n if (options?.signal) {\n options.signal.addEventListener(\n \"abort\",\n () => {\n closeWebSocketSafely(socket);\n },\n { once: true },\n );\n }\n\n return socket;\n };\n\n const controlSocket = await openChannel(\"control\");\n if (controlSocket) {\n void streamWebSocketToWritable(controlSocket);\n options?.onControl?.(controlSocket as unknown as WebSocket);\n }\n\n if (isInteractiveExecRequest(request)) {\n const interactiveSocket = await openChannel(\"0\");\n if (!interactiveSocket) {\n return { hasStdout: false, hasStderr: false };\n }\n\n hasStdout = true;\n void streamWebSocketToWritable(interactiveSocket, {\n output: stdoutWritable,\n onChunk: hooks.onStdoutChunk,\n onError: hooks.onStdoutError,\n onClose: hooks.onStdoutClose,\n });\n void writeInputToWebSocket(interactiveSocket, options?.stdin);\n return { hasStdout, hasStderr };\n }\n\n const stdinSocket = await openChannel(\"0\");\n if (stdinSocket) {\n void writeInputToWebSocket(stdinSocket, options?.stdin);\n }\n\n const stdoutSocket = await openChannel(\"1\");\n if (stdoutSocket) {\n hasStdout = true;\n void streamWebSocketToWritable(stdoutSocket, {\n output: stdoutWritable,\n onChunk: hooks.onStdoutChunk,\n onError: hooks.onStdoutError,\n onClose: hooks.onStdoutClose,\n });\n }\n\n const stderrSocket = await openChannel(\"2\");\n if (stderrSocket) {\n hasStderr = true;\n void streamWebSocketToWritable(stderrSocket, {\n output: stderrWritable,\n onChunk: hooks.onStderrChunk,\n onError: hooks.onStderrError,\n onClose: hooks.onStderrClose,\n });\n }\n\n return { hasStdout, hasStderr };\n }\n\n private createInstancesApi(): InstancesApi {\n const toInstancePath = (instanceName: string) =>\n `/1.0/instances/${encodeURIComponent(instanceName)}`;\n const toSnapshotPath = (instanceName: string, snapshotName?: string) => (\n snapshotName\n ? `${toInstancePath(instanceName)}/snapshots/${encodeURIComponent(snapshotName)}`\n : `${toInstancePath(instanceName)}/snapshots`\n );\n\n const createLogsApi = (instanceName: string): InstanceLogsApi => ({\n list: async () => {\n const result = await this.requestEnvelope<unknown[]>(\n \"GET\",\n `${toInstancePath(instanceName)}/logs`,\n );\n return urlsToResourceNames(\n `/instances/${encodeURIComponent(instanceName)}/logs`,\n toStringArray(result.value),\n );\n },\n get: async (filename: string) => {\n const result = await this.requestBinary(\n \"GET\",\n `${toInstancePath(instanceName)}/logs/${encodeURIComponent(filename)}`,\n );\n return toReadableStream(result.value);\n },\n remove: async (filename: string) => {\n await this.requestEnvelope(\n \"DELETE\",\n `${toInstancePath(instanceName)}/logs/${encodeURIComponent(filename)}`,\n );\n },\n getConsole: async () => {\n const result = await this.requestBinary(\n \"GET\",\n `${toInstancePath(instanceName)}/console`,\n );\n return toReadableStream(result.value);\n },\n removeConsole: async () => {\n await this.requestEnvelope(\n \"DELETE\",\n `${toInstancePath(instanceName)}/console`,\n );\n },\n });\n\n const createFilesApi = (instanceName: string): InstanceFilesApi => ({\n get: async (path: string) => {\n const response = await this.requestTransport(\n \"GET\",\n `${toInstancePath(instanceName)}/files`,\n {\n query: { path },\n },\n );\n\n const headers = parseFileHeaders(response.headers);\n if ((headers.type ?? \"\").toLowerCase() === \"directory\") {\n const decoded = isIncusEnvelope(response.data)\n ? toStringArray(response.data.metadata)\n : [];\n return {\n stream: toReadableStream(new Uint8Array()),\n uid: headers.uid,\n gid: headers.gid,\n mode: headers.mode,\n type: headers.type,\n entries: decoded,\n };\n }\n\n if (response.status >= 400) {\n if (isIncusEnvelope(response.data)) {\n throw new IncusApiError(\n response.data.error ?? `Incus request failed (${response.status})`,\n response.status,\n {\n statusCode: response.data.status_code,\n errorCode: response.data.error_code,\n details: response.data.metadata,\n },\n );\n }\n\n throw new IncusApiError(`Incus request failed (${response.status})`, response.status, {\n details: response.data,\n });\n }\n\n return {\n stream: toReadableStream(toBytes(response.data)),\n uid: headers.uid,\n gid: headers.gid,\n mode: headers.mode,\n type: headers.type,\n };\n },\n put: async (path: string, options: InstanceFilePutOptions) => {\n const headers = new Headers();\n if (options.uid !== undefined) {\n headers.set(\"X-Incus-uid\", String(options.uid));\n }\n\n if (options.gid !== undefined) {\n headers.set(\"X-Incus-gid\", String(options.gid));\n }\n\n if (options.mode !== undefined) {\n headers.set(\"X-Incus-mode\", options.mode.toString(8).padStart(4, \"0\"));\n }\n\n if (options.type) {\n headers.set(\"X-Incus-type\", options.type);\n }\n\n if (options.writeMode) {\n headers.set(\"X-Incus-write\", options.writeMode);\n }\n\n await this.requestEnvelope(\"POST\", `${toInstancePath(instanceName)}/files`, {\n query: { path },\n body: options.content,\n headers,\n });\n },\n remove: async (path: string) => {\n await this.requestEnvelope(\"DELETE\", `${toInstancePath(instanceName)}/files`, {\n query: { path },\n });\n },\n sftp: async () => {\n throw new Error(\"[Incus.ts] Instance SFTP helper is not implemented yet\");\n },\n });\n\n const createSnapshotsApi = (instanceName: string): InstanceSnapshotsApi => ({\n names: async () => {\n const result = await this.requestEnvelope<unknown[]>(\"GET\", toSnapshotPath(instanceName));\n return urlsToResourceNames(\n `/instances/${encodeURIComponent(instanceName)}/snapshots`,\n toStringArray(result.value),\n );\n },\n list: async () => {\n const result = await this.requestEnvelope<IncusRecord[]>(\"GET\", toSnapshotPath(instanceName), {\n query: { recursion: 1 },\n });\n return toRecordArray(result.value);\n },\n get: async (snapshotName: string) => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n toSnapshotPath(instanceName, snapshotName),\n );\n return { value: toRecord(result.value), etag: result.etag };\n },\n create: (snapshot: IncusRecord) => {\n return this.createOperationFromRequest(\"POST\", toSnapshotPath(instanceName), {\n body: snapshot,\n });\n },\n copyFrom: async (\n _source: IncusClient,\n _snapshot: IncusRecord,\n _options?: IncusRecord,\n ) => createRemoteOperationFromTarget(null),\n rename: (snapshotName: string, request: IncusRecord) => {\n return this.createOperationFromRequest(\n \"POST\",\n toSnapshotPath(instanceName, snapshotName),\n {\n body: request,\n },\n );\n },\n migrate: (snapshotName: string, request: IncusRecord) => {\n return this.createOperationFromRequest(\n \"POST\",\n toSnapshotPath(instanceName, snapshotName),\n {\n body: request,\n },\n );\n },\n remove: (snapshotName: string) => {\n return this.createOperationFromRequest(\n \"DELETE\",\n toSnapshotPath(instanceName, snapshotName),\n );\n },\n update: (\n snapshotName: string,\n snapshot: IncusRecord,\n options: IncusMutationOptions = {},\n ) => {\n return this.createOperationFromRequest(\n \"PUT\",\n toSnapshotPath(instanceName, snapshotName),\n {\n body: snapshot,\n etag: options.etag,\n },\n );\n },\n restore: (snapshotName: string, options: { stateful?: boolean } = {}) => {\n return this.createOperationFromRequest(\"PUT\", toInstancePath(instanceName), {\n body: {\n restore: snapshotName,\n ...(options.stateful !== undefined ? { stateful: options.stateful } : {}),\n },\n });\n },\n });\n\n const getInstance = async (\n instanceName: string,\n options: { full?: boolean } = {},\n ): Promise<IncusEntity<IncusRecord>> => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n toInstancePath(instanceName),\n {\n query: options.full ? { recursion: 1 } : undefined,\n },\n );\n return { value: toRecord(result.value), etag: result.etag };\n };\n\n const updateInstance = (\n instanceName: string,\n instance: IncusRecord,\n options: IncusMutationOptions = {},\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"PUT\", toInstancePath(instanceName), {\n body: instance,\n etag: options.etag,\n });\n };\n\n const forkInstance = (\n instanceName: string,\n name: string,\n options: InstanceForkOptions = {},\n ): IncusAwaitableOperation => {\n const {\n fromSnapshot,\n sourceProject,\n live,\n instanceOnly,\n refresh,\n refreshExcludeOlder,\n allowInconsistent,\n } = options;\n const source = fromSnapshot\n ? `${instanceName}/${fromSnapshot}`\n : instanceName;\n const sourceRequest: IncusRecord = {\n type: \"copy\",\n source,\n };\n\n if (sourceProject) {\n sourceRequest.project = sourceProject;\n }\n\n if (live !== undefined) {\n sourceRequest.live = live;\n }\n\n if (instanceOnly !== undefined) {\n sourceRequest.instance_only = instanceOnly;\n }\n\n if (refresh !== undefined) {\n sourceRequest.refresh = refresh;\n }\n\n if (refreshExcludeOlder !== undefined) {\n sourceRequest.refresh_exclude_older = refreshExcludeOlder;\n }\n\n if (allowInconsistent !== undefined) {\n sourceRequest.allow_inconsistent = allowInconsistent;\n }\n\n return this.createOperationFromRequest(\n \"POST\",\n \"/1.0/instances\",\n {\n body: {\n name,\n source: sourceRequest,\n },\n },\n );\n };\n\n const renameInstance = (\n instanceName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"POST\", toInstancePath(instanceName), { body: request });\n };\n\n const migrateInstance = (\n instanceName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"POST\", toInstancePath(instanceName), { body: request });\n };\n\n const removeInstance = (instanceName: string): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"DELETE\", toInstancePath(instanceName));\n };\n\n const rebuildInstance = (\n instanceName: string,\n request: IncusRecord,\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"POST\", `${toInstancePath(instanceName)}/rebuild`, {\n body: request,\n });\n };\n\n const stateInstance = async (instanceName: string): Promise<IncusEntity<IncusRecord>> => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `${toInstancePath(instanceName)}/state`,\n );\n return { value: toRecord(result.value), etag: result.etag };\n };\n\n const setStateInstance = (\n instanceName: string,\n state: IncusRecord,\n options: IncusMutationOptions = {},\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\"PUT\", `${toInstancePath(instanceName)}/state`, {\n body: state,\n etag: options.etag,\n });\n };\n\n const accessInstance = async (instanceName: string): Promise<IncusRecord> => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `${toInstancePath(instanceName)}/access`,\n );\n return toRecord(result.value);\n };\n\n const execInstance = (\n instanceName: string,\n request: IncusRecord,\n options?: InstanceExecOptions,\n ): IncusExecProcess => {\n const path = `${toInstancePath(instanceName)}/exec`;\n const body = { ...request };\n const shouldAttachIO = this.shouldAttachExecIO(options) || this.shouldPipeExecIO(options);\n if (shouldAttachIO && !hasWaitForWebsocketFlag(body)) {\n body[\"wait-for-websocket\"] = true;\n }\n\n const stdoutPipe = this.isPipeTarget(options?.stdout);\n const stderrPipe = this.isPipeTarget(options?.stderr);\n const stdoutQueue = createAsyncQueue<Uint8Array>();\n const stderrQueue = createAsyncQueue<Uint8Array>();\n const outputQueue = createAsyncQueue<IncusExecOutputChunk>();\n let stdoutOpen = stdoutPipe;\n let stderrOpen = stderrPipe;\n\n const closeOutputIfDone = () => {\n if (!stdoutOpen && !stderrOpen) {\n outputQueue.close();\n }\n };\n\n const closeStdout = () => {\n if (!stdoutOpen) {\n return;\n }\n\n stdoutOpen = false;\n stdoutQueue.close();\n closeOutputIfDone();\n };\n\n const closeStderr = () => {\n if (!stderrOpen) {\n return;\n }\n\n stderrOpen = false;\n stderrQueue.close();\n closeOutputIfDone();\n };\n\n const failAllQueues = (error: unknown) => {\n stdoutOpen = false;\n stderrOpen = false;\n stdoutQueue.fail(error);\n stderrQueue.fail(error);\n outputQueue.fail(error);\n };\n\n const operationReady = (async (): Promise<IncusOperation> => {\n const result = await this.requestEnvelope<IncusRecord>(\"POST\", path, {\n body,\n signal: options?.signal,\n });\n const operation = this.createOperationFromEnvelopeResult(\"POST\", path, result);\n\n if (shouldAttachIO) {\n const attached = await this.attachExecWebsockets(operation, body, options, result.value, {\n onStdoutChunk: stdoutPipe\n ? (chunk) => {\n stdoutQueue.push(chunk);\n outputQueue.push({ stream: \"stdout\", chunk });\n }\n : undefined,\n onStderrChunk: stderrPipe\n ? (chunk) => {\n stderrQueue.push(chunk);\n outputQueue.push({ stream: \"stderr\", chunk });\n }\n : undefined,\n onStdoutError: stdoutPipe\n ? (error) => {\n stdoutOpen = false;\n stdoutQueue.fail(error);\n closeOutputIfDone();\n }\n : undefined,\n onStderrError: stderrPipe\n ? (error) => {\n stderrOpen = false;\n stderrQueue.fail(error);\n closeOutputIfDone();\n }\n : undefined,\n onStdoutClose: stdoutPipe ? closeStdout : undefined,\n onStderrClose: stderrPipe ? closeStderr : undefined,\n });\n\n if (stdoutPipe && !attached.hasStdout) {\n closeStdout();\n }\n\n if (stderrPipe && !attached.hasStderr) {\n closeStderr();\n }\n } else {\n stdoutOpen = false;\n stderrOpen = false;\n stdoutQueue.close();\n stderrQueue.close();\n outputQueue.close();\n }\n\n if (!stdoutPipe) {\n stdoutOpen = false;\n stdoutQueue.close();\n }\n\n if (!stderrPipe) {\n stderrOpen = false;\n stderrQueue.close();\n }\n\n closeOutputIfDone();\n\n return operation;\n })().catch((error) => {\n failAllQueues(error);\n throw error;\n });\n\n const waitResult = async (\n waitOptions: IncusOperationWaitOptions = {},\n ): Promise<IncusExecResult> => {\n const operation = await operationReady;\n const opRecord = await operation.wait(waitOptions);\n await Promise.all([stdoutQueue.done, stderrQueue.done]);\n return toExecResult(opRecord);\n };\n\n let defaultResultPromise: Promise<IncusExecResult> | undefined;\n const getDefaultResultPromise = () => {\n defaultResultPromise ??= waitResult();\n return defaultResultPromise;\n };\n\n let operationId = \"\";\n void operationReady.then((operation) => {\n operationId = operation.id;\n }).catch(() => {\n // Best effort.\n });\n\n return {\n get id(): string {\n return operationId;\n },\n wait: (waitOptions: IncusOperationWaitOptions = {}) => (\n operationReady.then((operation) => operation.wait(waitOptions))\n ),\n cancel: () => operationReady.then((operation) => operation.cancel()),\n refresh: () => operationReady.then((operation) => operation.refresh()),\n websocket: (secret: string) => operationReady.then((operation) => operation.websocket(secret)),\n onUpdate: (handler: (operation: IncusRecord) => void) => (\n operationReady.then((operation) => operation.onUpdate(handler))\n ),\n stdout: stdoutQueue.iterable,\n stderr: stderrQueue.iterable,\n output: () => outputQueue.iterable,\n waitResult,\n then: <TResult1 = IncusExecResult, TResult2 = never>(\n onFulfilled?: ((value: IncusExecResult) => TResult1 | PromiseLike<TResult1>) | null,\n onRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> => (\n getDefaultResultPromise().then(onFulfilled, onRejected)\n ),\n catch: <TResult = never>(\n onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n ): Promise<IncusExecResult | TResult> => (\n getDefaultResultPromise().catch(onRejected)\n ),\n finally: (onFinally?: (() => void) | null): Promise<IncusExecResult> => (\n getDefaultResultPromise().finally(onFinally ?? undefined)\n ),\n [Symbol.asyncIterator]: () => stdoutQueue.iterable[Symbol.asyncIterator](),\n } satisfies IncusExecProcess;\n };\n\n const consoleInstance = (\n instanceName: string,\n request: IncusRecord,\n options?: InstanceConsoleOptions,\n ): IncusAwaitableOperation => {\n return this.createOperationFromRequest(\n \"POST\",\n `${toInstancePath(instanceName)}/console`,\n {\n body: request,\n signal: options?.signal,\n },\n );\n };\n\n const metadataInstance = async (instanceName: string): Promise<IncusEntity<IncusRecord>> => {\n const result = await this.requestEnvelope<IncusRecord>(\n \"GET\",\n `${toInstancePath(instanceName)}/metadata`,\n );\n return { value: toRecord(result.value), etag: result.etag };\n };\n\n const updateMetadataInstance = async (\n instanceName: string,\n metadata: IncusRecord,\n options: IncusMutationOptions = {},\n ): Promise<void> => {\n await this.requestEnvelope(\"PUT\", `${toInstancePath(instanceName)}/metadata`, {\n body: metadata,\n etag: options.etag,\n });\n };\n\n const debugMemoryInstance = async (\n instanceName: string,\n format = \"elf\",\n ): Promise<ReadableStream<Uint8Array>> => {\n const result = await this.requestBinary(\n \"GET\",\n `${toInstancePath(instanceName)}/debug/memory`,\n {\n query: {\n format,\n \"instance-type\": \"virtual-machine\",\n },\n },\n );\n return toReadableStream(result.value);\n };\n\n const createInstanceHandle = (instanceName: string): InstanceApi => {\n const logs = createLogsApi(instanceName);\n const files = createFilesApi(instanceName);\n const snapshots = createSnapshotsApi(instanceName);\n\n return {\n name: instanceName,\n get: (options = {}) => getInstance(instanceName, options),\n fork: (name: string, options: InstanceForkOptions = {}) => (\n forkInstance(instanceName, name, options)\n ),\n update: (instance: IncusRecord, options: IncusMutationOptions = {}) => (\n updateInstance(instanceName, instance, options)\n ),\n rename: (request: IncusRecord) => renameInstance(instanceName, request),\n migrate: (request: IncusRecord) => migrateInstance(instanceName, request),\n remove: () => removeInstance(instanceName),\n rebuild: (request: IncusRecord) => rebuildInstance(instanceName, request),\n rebuildFromImage: async (\n _source: IncusImageClient,\n _image: IncusRecord,\n _request: IncusRecord,\n ) => createRemoteOperationFromTarget(null),\n restore: (snapshotName: string, options: { stateful?: boolean } = {}) => (\n snapshots.restore(snapshotName, options)\n ),\n state: () => stateInstance(instanceName),\n setState: (state: IncusRecord, options: IncusMutationOptions = {}) => (\n setStateInstance(instanceName, state, options)\n ),\n access: () => accessInstance(instanceName),\n exec: (request: IncusRecord, options?: InstanceExecOptions) => (\n execInstance(instanceName, request, options)\n ),\n console: (request: IncusRecord, options?: InstanceConsoleOptions) => (\n consoleInstance(instanceName, request, options)\n ),\n consoleDynamic: async () => {\n throw new Error(\"[Incus.ts] Dynamic console attach is not implemented yet\");\n },\n metadata: () => metadataInstance(instanceName),\n updateMetadata: (metadata: IncusRecord, options: IncusMutationOptions = {}) => (\n updateMetadataInstance(instanceName, metadata, options)\n ),\n debugMemory: (format = \"elf\") => debugMemoryInstance(instanceName, format),\n logs,\n files,\n templates: createNotImplementedProxy([\"instances\", \"templates\"]) as InstanceTemplatesApi,\n snapshots,\n backups: createNotImplementedProxy([\"instances\", \"backups\"]) as InstanceBackupsApi,\n };\n };\n\n return createApiWithFallback<InstancesApi>(\"instances\", {\n names: async (options = {}) => {\n if (options.allProjects) {\n const query: Record<string, string | number | boolean | undefined> = {\n recursion: 1,\n \"all-projects\": \"true\",\n };\n if (options.type) {\n query[\"instance-type\"] = options.type;\n }\n\n const result = await this.requestEnvelope<IncusRecord[]>(\n \"GET\",\n \"/1.0/instances\",\n { query },\n );\n const records = toRecordArray(result.value);\n const grouped: Record<string, string[]> = {};\n for (const record of records) {\n const project = typeof record.project === \"string\"\n ? record.project\n : \"default\";\n const name = typeof record.name === \"string\" ? record.name : undefined;\n if (!name) {\n continue;\n }\n\n grouped[project] ??= [];\n grouped[project].push(name);\n }\n\n return grouped;\n }\n\n const query: Record<string, string | number | boolean | undefined> = {};\n if (options.type) {\n query[\"instance-type\"] = options.type;\n }\n\n const result = await this.requestEnvelope<unknown[]>(\"GET\", \"/1.0/instances\", {\n query,\n });\n return urlsToResourceNames(\"/instances\", toStringArray(result.value));\n },\n list: async (options = {}) => {\n const query: Record<string, string | number | boolean | undefined> = {\n recursion: options.full ? 2 : 1,\n };\n\n if (options.type) {\n query[\"instance-type\"] = options.type;\n }\n\n if (options.allProjects) {\n query[\"all-projects\"] = \"true\";\n }\n\n if (options.filter && options.filter.length > 0) {\n query.filter = parseFilters(options.filter);\n }\n\n const result = await this.requestEnvelope<IncusRecord[]>(\n \"GET\",\n \"/1.0/instances\",\n { query },\n );\n return toRecordArray(result.value);\n },\n instance: (name: string) => createInstanceHandle(name),\n create: (instance: IncusRecord) => {\n return this.createOperationFromRequest(\"POST\", \"/1.0/instances\", { body: instance });\n },\n createFromImage: async (\n _source: IncusImageClient,\n _image: IncusRecord,\n _request: IncusRecord,\n ) => createRemoteOperationFromTarget(null),\n createFromBackup: (args: IncusRecord) => {\n return this.createOperationFromRequest(\"POST\", \"/1.0/instances\", { body: args });\n },\n copyFrom: async (\n _source: IncusClient,\n _instance: IncusRecord,\n _options?: IncusRecord,\n ) => createRemoteOperationFromTarget(null),\n updateMany: (state: IncusRecord, options: IncusMutationOptions = {}) => {\n return this.createOperationFromRequest(\"PUT\", \"/1.0/instances\", {\n body: state,\n etag: options.etag,\n });\n },\n });\n }\n}\n\nexport class Incus {\n static async connect(\n endpoint: string,\n options: IncusConnectionOptions = {},\n ): Promise<IncusClient> {\n const normalized = normalizeEndpoint(endpoint);\n const descriptor: IncusTransportDescriptor = { kind: \"incus\", endpoint: normalized };\n return new IncusClient(\n new FetchTransport(descriptor, options),\n normalized,\n options,\n {},\n \"incus\",\n );\n }\n\n static async connectHttp(\n options: IncusHttpConnectOptions = {},\n ): Promise<IncusClient> {\n const endpoint = normalizeEndpoint(options.endpoint ?? \"https://custom.socket\");\n const descriptor: IncusTransportDescriptor = { kind: \"incus-http\", endpoint };\n return new IncusClient(\n new FetchTransport(descriptor, options),\n endpoint,\n options,\n {},\n \"incus-http\",\n );\n }\n\n static async connectUnix(\n options: IncusUnixConnectOptions = {},\n ): Promise<IncusClient> {\n const socketPath = options.socketPath ?? \"/var/lib/incus/unix.socket\";\n const endpoint = `unix://${socketPath}`;\n const descriptor: IncusTransportDescriptor = {\n kind: \"incus-unix\",\n endpoint,\n socketPath,\n };\n\n return new IncusClient(\n new UnixSocketTransport(descriptor, options),\n endpoint,\n options,\n {},\n \"incus-unix\",\n );\n }\n\n static async connectPublic(\n endpoint: string,\n options: IncusConnectionOptions = {},\n ): Promise<IncusImageClient> {\n const normalized = normalizeEndpoint(endpoint);\n const descriptor: IncusTransportDescriptor = {\n kind: \"incus-public\",\n endpoint: normalized,\n };\n return new IncusImageClient(\n new FetchTransport(descriptor, options),\n normalized,\n options,\n {},\n \"incus-public\",\n );\n }\n\n static async connectSimpleStreams(\n endpoint: string,\n options: IncusSimpleStreamsOptions = {},\n ): Promise<IncusImageClient> {\n const normalized = normalizeEndpoint(endpoint);\n const descriptor: IncusTransportDescriptor = {\n kind: \"simple-streams\",\n endpoint: normalized,\n };\n return new IncusImageClient(\n new FetchTransport(descriptor, options),\n normalized,\n options,\n {},\n \"simple-streams\",\n );\n }\n\n static fromTransport(\n endpoint: string,\n transport: IncusTransport,\n options: IncusConnectionOptions = {},\n ): IncusClient {\n return new IncusClient(transport, normalizeEndpoint(endpoint), options);\n }\n\n static fromImageTransport(\n endpoint: string,\n transport: IncusTransport,\n options: IncusConnectionOptions = {},\n ): IncusImageClient {\n return new IncusImageClient(transport, normalizeEndpoint(endpoint), options);\n }\n}\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "5D0FC397D2FB247A64756E2164756E21",
7
+ "mappings": ";AAAA,oBAAS;AACT;AACA;AACA,oBAAS;AAAA;AAw5BF,MAAM,sBAAsB,MAAM;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,WAAW,CACT,SACA,QACA,UAII,CAAC,GACL;AAAA,IACA,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,KAAK,SAAS;AAAA,IACd,KAAK,aAAa,QAAQ;AAAA,IAC1B,KAAK,YAAY,QAAQ;AAAA,IACzB,KAAK,UAAU,QAAQ;AAAA;AAE3B;AAEA,IAAM,iBAAiB;AACvB,IAAM,gBAAgB;AACtB,IAAM,UAAU;AAChB,IAAM,aAAa;AACnB,IAAM,YAAY;AAAA;AAElB,MAAM,oBAA6C;AAAA,EAoB9B;AAAA,EAnBV,aAAa;AAAA,EACb,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EAElB,aAAyB;AAAA,EACzB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,aAAa;AAAA,EACb,iBAAiB;AAAA,EAEA,SAAS,IAAI;AAAA,EACtB,aAAa,OAAO,MAAM,CAAC;AAAA,EAC3B,YAAsB,CAAC;AAAA,EACvB,iBAAgC;AAAA,EAChC,YAAqD;AAAA,EACrD,eAAe;AAAA,EAEvB,WAAW,CACQ,QACjB,aACA;AAAA,IAFiB;AAAA,IAGjB,KAAK,OAAO,GAAG,QAAQ,CAAC,UAA2B;AAAA,MACjD,KAAK,WAAW,KAAK;AAAA,KACtB;AAAA,IACD,KAAK,OAAO,GAAG,SAAS,CAAC,UAAiB;AAAA,MACxC,KAAK,OAAO,KAAK,SAAS,KAAK;AAAA,KAChC;AAAA,IACD,KAAK,OAAO,GAAG,SAAS,MAAM;AAAA,MAC5B,KAAK,aAAa;AAAA,MAClB,IAAI,CAAC,KAAK,cAAc;AAAA,QACtB,KAAK,eAAe;AAAA,QACpB,MAAM,OAAO,KAAK,aAAa,EAAE,MAAM,MAAM,QAAQ,GAAG;AAAA,QACxD,KAAK,OAAO,KAAK,SAAS,KAAK,MAAM,KAAK,MAAM;AAAA,MAClD;AAAA,KACD;AAAA,IAED,KAAK,aAAa;AAAA,IAClB,IAAI,eAAe,YAAY,aAAa,GAAG;AAAA,MAC7C,KAAK,WAAW,OAAO,KAAK,WAAW,CAAC;AAAA,IAC1C;AAAA;AAAA,EAGF,gBAAgB,CAAC,MAAc,UAA0C;AAAA,IACvE,KAAK,OAAO,GAAG,MAAM,QAAwC;AAAA;AAAA,EAG/D,mBAAmB,CAAC,MAAc,UAA0C;AAAA,IAC1E,KAAK,OAAO,IAAI,MAAM,QAAwC;AAAA;AAAA,EAGhE,EAAE,CAAC,MAAc,UAA8C;AAAA,IAC7D,KAAK,OAAO,GAAG,MAAM,QAAQ;AAAA;AAAA,EAG/B,GAAG,CAAC,MAAc,UAA8C;AAAA,IAC9D,KAAK,OAAO,IAAI,MAAM,QAAQ;AAAA;AAAA,EAGhC,IAAI,CAAC,MAAc,UAA8C;AAAA,IAC/D,KAAK,OAAO,KAAK,MAAM,QAAQ;AAAA;AAAA,EAGjC,IAAI,CAAC,MAAqB;AAAA,IACxB,IAAI,KAAK,eAAe,SAAS;AAAA,MAC/B,MAAM,IAAI,MAAM,8CAA8C;AAAA,IAChE;AAAA,IAEA,MAAM,UAAU,OAAO,SAAS,WAC5B,OAAO,KAAK,MAAM,MAAM,IACxB,OAAO,KAAK,QAAQ,IAAI,CAAC;AAAA,IAC7B,MAAM,SAAS,OAAO,SAAS,WAAW,IAAM;AAAA,IAChD,KAAK,WAAW,QAAQ,SAAS,IAAI;AAAA;AAAA,EAGvC,KAAK,CAAC,OAAO,MAAM,SAAS,IAAU;AAAA,IACpC,IAAI,KAAK,eAAe,WAAW;AAAA,MACjC;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,eAAe,SAAS;AAAA,MAC/B,KAAK,aAAa;AAAA,MAClB,MAAM,cAAc,OAAO,KAAK,QAAQ,MAAM;AAAA,MAC9C,MAAM,UAAU,OAAO,MAAM,IAAI,YAAY,MAAM;AAAA,MACnD,QAAQ,cAAc,MAAM,CAAC;AAAA,MAC7B,YAAY,KAAK,SAAS,CAAC;AAAA,MAC3B,KAAK,WAAW,GAAK,SAAS,IAAI;AAAA,IACpC;AAAA,IAEA,KAAK,OAAO,IAAI;AAAA;AAAA,EAGV,UAAU,CAAC,OAA8B;AAAA,IAC/C,MAAM,QAAQ,OAAO,UAAU,WAAW,OAAO,KAAK,OAAO,MAAM,IAAI;AAAA,IACvE,IAAI,MAAM,eAAe,GAAG;AAAA,MAC1B;AAAA,IACF;AAAA,IAEA,KAAK,aAAa,KAAK,WAAW,eAAe,IAC7C,OAAO,KAAK,KAAK,IACjB,OAAO,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC;AAAA,IAC1C,KAAK,YAAY;AAAA;AAAA,EAGX,WAAW,GAAS;AAAA,IAC1B,OAAO,KAAK,WAAW,cAAc,GAAG;AAAA,MACtC,MAAM,QAAQ,KAAK,WAAW;AAAA,MAC9B,MAAM,SAAS,KAAK,WAAW;AAAA,MAC/B,IAAI,UAAU,aAAa,WAAW,WAAW;AAAA,QAC/C;AAAA,MACF;AAAA,MAEA,MAAM,OAAO,QAAQ,SAAU;AAAA,MAC/B,IAAI,SAAS,QAAQ;AAAA,MACrB,MAAM,UAAU,SAAS,SAAU;AAAA,MAEnC,IAAI,SAAS;AAAA,MACb,IAAI,gBAAgB,SAAS;AAAA,MAE7B,IAAI,kBAAkB,KAAK;AAAA,QACzB,IAAI,KAAK,WAAW,aAAa,SAAS,GAAG;AAAA,UAC3C;AAAA,QACF;AAAA,QAEA,gBAAgB,KAAK,WAAW,aAAa,MAAM;AAAA,QACnD,UAAU;AAAA,MACZ,EAAO,SAAI,kBAAkB,KAAK;AAAA,QAChC,IAAI,KAAK,WAAW,aAAa,SAAS,GAAG;AAAA,UAC3C;AAAA,QACF;AAAA,QAEA,MAAM,WAAW,KAAK,WAAW,gBAAgB,MAAM;AAAA,QACvD,IAAI,WAAW,OAAO,OAAO,gBAAgB,GAAG;AAAA,UAC9C,KAAK,OAAO,KAAK,SAAS,IAAI,MAAM,sCAAsC,CAAC;AAAA,UAC3E,KAAK,MAAM,MAAM,iBAAiB;AAAA,UAClC;AAAA,QACF;AAAA,QAEA,gBAAgB,OAAO,QAAQ;AAAA,QAC/B,UAAU;AAAA,MACZ;AAAA,MAEA,IAAI;AAAA,MACJ,IAAI,QAAQ;AAAA,QACV,IAAI,KAAK,WAAW,aAAa,SAAS,GAAG;AAAA,UAC3C;AAAA,QACF;AAAA,QAEA,UAAU,KAAK,WAAW,SAAS,QAAQ,SAAS,CAAC;AAAA,QACrD,UAAU;AAAA,MACZ;AAAA,MAEA,IAAI,KAAK,WAAW,aAAa,SAAS,eAAe;AAAA,QACvD;AAAA,MACF;AAAA,MAEA,IAAI,UAAU,KAAK,WAAW,SAAS,QAAQ,SAAS,aAAa;AAAA,MACrE,KAAK,aAAa,KAAK,WAAW,SAAS,SAAS,aAAa;AAAA,MAEjE,IAAI,SAAS;AAAA,QACX,MAAM,UAAU,OAAO,MAAM,QAAQ,UAAU;AAAA,QAC/C,SAAS,IAAI,EAAG,IAAI,QAAQ,YAAY,KAAK,GAAG;AAAA,UAC9C,QAAQ,KAAK,QAAQ,KAAM,QAAQ,IAAI;AAAA,QACzC;AAAA,QAEA,UAAU;AAAA,MACZ;AAAA,MAEA,IAAI,CAAC,KAAK;AAAA,QACR,IAAI,WAAW,GAAK;AAAA,UAClB,KAAK,iBAAiB;AAAA,QACxB;AAAA,QAEA,KAAK,UAAU,KAAK,OAAO,KAAK,OAAO,CAAC;AAAA,QACxC;AAAA,MACF;AAAA,MAEA,IAAI,WAAW,KAAO,KAAK,mBAAmB,MAAM;AAAA,QAClD,KAAK,UAAU,KAAK,OAAO,KAAK,OAAO,CAAC;AAAA,QACxC,UAAU,OAAO,OAAO,KAAK,SAAS;AAAA,QACtC,SAAS,KAAK;AAAA,QACd,KAAK,YAAY,CAAC;AAAA,QAClB,KAAK,iBAAiB;AAAA,MACxB;AAAA,MAEA,KAAK,YAAY,QAAQ,OAAO;AAAA,IAClC;AAAA;AAAA,EAGM,WAAW,CAAC,QAAgB,SAAuB;AAAA,IACzD,QAAQ;AAAA,WACD;AAAA,QACH,KAAK,OAAO,KAAK,WAAW,QAAQ,SAAS,MAAM,CAAC;AAAA,QACpD;AAAA,WACG;AAAA,QACH,KAAK,OAAO,KAAK,WAAW,IAAI,WAAW,OAAO,CAAC;AAAA,QACnD;AAAA,WACG,GAAK;AAAA,QACR,IAAI,OAAO;AAAA,QACX,IAAI,SAAS;AAAA,QACb,IAAI,QAAQ,cAAc,GAAG;AAAA,UAC3B,OAAO,QAAQ,aAAa,CAAC;AAAA,UAC7B,SAAS,QAAQ,SAAS,CAAC,EAAE,SAAS,MAAM;AAAA,QAC9C;AAAA,QAEA,KAAK,YAAY,EAAE,MAAM,OAAO;AAAA,QAChC,IAAI,KAAK,eAAe,SAAS;AAAA,UAC/B,KAAK,aAAa;AAAA,UAClB,KAAK,WAAW,GAAK,SAAS,IAAI;AAAA,QACpC;AAAA,QAEA,KAAK,OAAO,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,WACK;AAAA,QACH,KAAK,WAAW,IAAK,SAAS,IAAI;AAAA,QAClC;AAAA,WACG;AAAA,QACH;AAAA;AAAA,QAEA,KAAK,OAAO,KAAK,SAAS,IAAI,MAAM,4CAA4C,QAAQ,CAAC;AAAA;AAAA;AAAA,EAIvF,UAAU,CAAC,QAAgB,SAAiB,MAAqB;AAAA,IACvE,MAAM,QAAkB,CAAC;AAAA,IACzB,MAAM,YAAY,MAAQ,SAAS;AAAA,IACnC,MAAM,gBAAgB,QAAQ;AAAA,IAE9B,IAAI,gBAAgB,KAAK;AAAA,MACvB,MAAM,KAAK,OAAO,KAAK,CAAC,YAAY,OAAO,MAAO,KAAK,aAAa,CAAC,CAAC;AAAA,IACxE,EAAO,SAAI,iBAAiB,OAAQ;AAAA,MAClC,MAAM,SAAS,OAAO,MAAM,CAAC;AAAA,MAC7B,OAAO,KAAK;AAAA,MACZ,OAAO,MAAM,OAAO,MAAO,KAAK;AAAA,MAChC,OAAO,cAAc,eAAe,CAAC;AAAA,MACrC,MAAM,KAAK,MAAM;AAAA,IACnB,EAAO;AAAA,MACL,MAAM,SAAS,OAAO,MAAM,EAAE;AAAA,MAC9B,OAAO,KAAK;AAAA,MACZ,OAAO,MAAM,OAAO,MAAO,KAAK;AAAA,MAChC,OAAO,iBAAiB,OAAO,aAAa,GAAG,CAAC;AAAA,MAChD,MAAM,KAAK,MAAM;AAAA;AAAA,IAGnB,IAAI,MAAM;AAAA,MACR,MAAM,UAAU,YAAY,CAAC;AAAA,MAC7B,MAAM,gBAAgB,OAAO,KAAK,OAAO;AAAA,MACzC,SAAS,IAAI,EAAG,IAAI,cAAc,YAAY,KAAK,GAAG;AAAA,QACpD,cAAc,KAAK,cAAc,KAAM,QAAQ,IAAI;AAAA,MACrD;AAAA,MAEA,MAAM,KAAK,SAAS,aAAa;AAAA,IACnC,EAAO;AAAA,MACL,MAAM,KAAK,OAAO;AAAA;AAAA,IAGpB,KAAK,OAAO,MAAM,OAAO,OAAO,KAAK,CAAC;AAAA;AAE1C;AAAA;AAEA,MAAM,eAAyC;AAAA,EAE1B;AAAA,EACA;AAAA,EAFnB,WAAW,CACQ,YACA,UACjB;AAAA,IAFiB;AAAA,IACA;AAAA;AAAA,OAGb,QAAoB,CACxB,QACA,MACA,UAAwC,CAAC,GACL;AAAA,IACpC,MAAM,MAAM,KAAK,eAAe,MAAM,QAAQ,KAAK;AAAA,IACnD,MAAM,UAAU,KAAK,YAAY,OAAO;AAAA,IACxC,MAAM,WAAW,YAAY,QAAQ,IAAI;AAAA,IAEzC,IAAI,SAAS,eAAe,CAAC,QAAQ,IAAI,cAAc,GAAG;AAAA,MACxD,QAAQ,IAAI,gBAAgB,SAAS,WAAW;AAAA,IAClD;AAAA,IAEA,MAAM,YAAY,KAAK,SAAS,SAAS;AAAA,IACzC,MAAM,WAAW,MAAM,UAAU,KAAK;AAAA,MACpC,QAAQ,OAAO,YAAY;AAAA,MAC3B;AAAA,MACA,MAAM,SAAS;AAAA,MACf,QAAQ,QAAQ,UAAU,KAAK,SAAS;AAAA,MACxC,UAAU;AAAA,IACZ,CAAC;AAAA,IAED,OAAO;AAAA,MACL,QAAQ,SAAS;AAAA,MACjB,MAAM,SAAS,QAAQ,IAAI,MAAM,KAAK;AAAA,MACtC,SAAS,SAAS;AAAA,MAClB,MAAO,MAAM,kBAAkB,QAAQ;AAAA,IACzC;AAAA;AAAA,OAGI,UAAS,CAAC,MAAc,WAAmD;AAAA,IAC/E,MAAM,UAAU,YAAY,KAAK,WAAW,QAAQ;AAAA,IACpD,MAAM,SAAS,KAAK,WAAW,OAAO,KAAK,KAAK,WAAW,QAAQ,IAC/D,OACA,IAAI,IAAI,cAAc,IAAI,GAAG,OAAO,EAAE,SAAS;AAAA,IAEnD,OAAO,IAAI,UAAU,QAAQ,SAAS;AAAA;AAAA,EAGhC,cAAc,CACpB,MACA,OACQ;AAAA,IACR,MAAM,aAAa,eAAe,KAAK,IAAI;AAAA,IAC3C,MAAM,MAAM,aACR,IAAI,IAAI,IAAI,IACZ,IAAI,IAAI,cAAc,IAAI,GAAG,GAAG,KAAK,WAAW,WAAW;AAAA,IAE/D,IAAI,OAAO;AAAA,MACT,YAAY,KAAK,aAAa,OAAO,QAAQ,KAAK,GAAG;AAAA,QACnD,IAAI,aAAa,WAAW;AAAA,UAC1B;AAAA,QACF;AAAA,QAEA,IAAI,aAAa,IAAI,KAAK,OAAO,QAAQ,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,OAAO,IAAI,SAAS;AAAA;AAAA,EAGd,WAAW,CAAC,SAAgD;AAAA,IAClE,MAAM,UAAU,IAAI,QAAQ,KAAK,SAAS,OAAO;AAAA,IACjD,aAAa,SAAS,QAAQ,OAAO;AAAA,IAErC,IAAI,KAAK,SAAS,aAAa,CAAC,QAAQ,IAAI,YAAY,GAAG;AAAA,MACzD,QAAQ,IAAI,cAAc,KAAK,SAAS,SAAS;AAAA,IACnD;AAAA,IAEA,IAAI,QAAQ,MAAM;AAAA,MAChB,QAAQ,IAAI,YAAY,QAAQ,IAAI;AAAA,IACtC;AAAA,IAEA,IAAI,QAAQ,SAAS,sBAAsB;AAAA,MACzC,QAAQ,IAAI,yBAAyB,MAAM;AAAA,IAC7C;AAAA,IAEA,IAAI,KAAK,SAAS,YAAY,eAAe,CAAC,QAAQ,IAAI,eAAe,GAAG;AAAA,MAC1E,QAAQ,IAAI,iBAAiB,UAAU,KAAK,SAAS,WAAW,aAAa;AAAA,IAC/E;AAAA,IAEA,OAAO;AAAA;AAEX;AAAA;AAEA,MAAM,oBAA8C;AAAA,EAE/B;AAAA,EACA;AAAA,EAFnB,WAAW,CACQ,YACA,UACjB;AAAA,IAFiB;AAAA,IACA;AAAA;AAAA,OAGb,QAAoB,CACxB,QACA,MACA,UAAwC,CAAC,GACL;AAAA,IACpC,MAAM,aAAa,KAAK,WAAW;AAAA,IACnC,IAAI,CAAC,YAAY;AAAA,MACf,MAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAAA,IAEA,MAAM,cAAc,KAAK,gBAAgB,MAAM,QAAQ,KAAK;AAAA,IAC5D,MAAM,UAAU,KAAK,YAAY,OAAO;AAAA,IACxC,MAAM,WAAW,MAAM,gBAAgB,QAAQ,IAAI;AAAA,IAEnD,IAAI,SAAS,eAAe,CAAC,QAAQ,IAAI,cAAc,GAAG;AAAA,MACxD,QAAQ,IAAI,gBAAgB,SAAS,WAAW;AAAA,IAClD;AAAA,IAEA,IAAI,SAAS,WAAW;AAAA,MACtB,QAAQ,IAAI,kBAAkB,OAAO,SAAS,UAAU,UAAU,CAAC;AAAA,IACrE;AAAA,IAEA,OAAO,IAAI,QAAmC,CAAC,SAAS,WAAW;AAAA,MACjE,MAAM,MAAM,gBACV;AAAA,QACE;AAAA,QACA,MAAM;AAAA,QACN,QAAQ,OAAO,YAAY;AAAA,QAC3B,SAAS,gBAAgB,OAAO;AAAA,MAClC,GACA,CAAC,QAAQ;AAAA,QACP,MAAM,SAAmB,CAAC;AAAA,QAC1B,IAAI,GAAG,QAAQ,CAAC,UAA2B;AAAA,UACzC,IAAI,OAAO,UAAU,UAAU;AAAA,YAC7B,OAAO,KAAK,OAAO,KAAK,KAAK,CAAC;AAAA,UAChC,EAAO;AAAA,YACL,OAAO,KAAK,KAAK;AAAA;AAAA,SAEpB;AAAA,QACD,IAAI,GAAG,OAAO,MAAM;AAAA,UAClB,MAAM,QAAQ,OAAO,OAAO,MAAM;AAAA,UAClC,MAAM,kBAAkB,wBAAwB,IAAI,OAAO;AAAA,UAC3D,MAAM,cAAc,gBAAgB,IAAI,cAAc,KAAK;AAAA,UAC3D,MAAM,SAAS,aAAa,aAAa,KAAK;AAAA,UAE9C,QAAQ;AAAA,YACN,QAAQ,IAAI,cAAc;AAAA,YAC1B,MAAM,gBAAgB,IAAI,MAAM,KAAK;AAAA,YACrC,SAAS;AAAA,YACT,MAAM;AAAA,UACR,CAAC;AAAA,SACF;AAAA,OAEL;AAAA,MAEA,IAAI,GAAG,SAAS,MAAM;AAAA,MAEtB,IAAI,QAAQ,QAAQ;AAAA,QAClB,QAAQ,OAAO,iBACb,SACA,MAAM;AAAA,UACJ,IAAI,QAAQ,IAAI,MAAM,iBAAiB,CAAC;AAAA,WAE1C,EAAE,MAAM,KAAK,CACf;AAAA,MACF;AAAA,MAEA,IAAI,SAAS,WAAW;AAAA,QACtB,IAAI,MAAM,SAAS,SAAS;AAAA,MAC9B;AAAA,MAEA,IAAI,IAAI;AAAA,KACT;AAAA;AAAA,OAGG,UAAS,CAAC,MAAc,WAAmD;AAAA,IAC/E,MAAM,aAAa,KAAK,WAAW;AAAA,IACnC,IAAI,CAAC,YAAY;AAAA,MACf,MAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAAA,IAEA,MAAM,cAAc,KAAK,WAAW,OAAO,KAAK,KAAK,WAAW,QAAQ,KACnE,MAAM;AAAA,MACP,MAAM,MAAM,IAAI,IAAI,IAAI;AAAA,MACxB,OAAO,GAAG,IAAI,WAAW,IAAI;AAAA,OAC5B,IACD,cAAc,IAAI;AAAA,IACtB,MAAM,UAAU,KAAK,qBAAqB;AAAA,IAC1C,IAAI,CAAC,QAAQ,IAAI,MAAM,GAAG;AAAA,MACxB,QAAQ,IAAI,QAAQ,aAAa;AAAA,IACnC;AAAA,IAEA,MAAM,eAAe,YAAY,EAAE,EAAE,SAAS,QAAQ;AAAA,IACtD,QAAQ,IAAI,cAAc,SAAS;AAAA,IACnC,QAAQ,IAAI,WAAW,WAAW;AAAA,IAClC,QAAQ,IAAI,yBAAyB,IAAI;AAAA,IACzC,QAAQ,IAAI,qBAAqB,YAAY;AAAA,IAE7C,IAAI,WAAW;AAAA,MACb,MAAM,WAAW,MAAM,QAAQ,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI;AAAA,MACnE,IAAI,SAAS,SAAS,GAAG;AAAA,QACvB,QAAQ,IAAI,0BAA0B,QAAQ;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,MAAM,eAAe,CAAC,OAAO,sBAAsB;AAAA,IACnD,YAAY,KAAK,UAAU,QAAQ,QAAQ,GAAG;AAAA,MAC5C,aAAa,KAAK,GAAG,QAAQ,OAAO;AAAA,IACtC;AAAA,IACA,aAAa,KAAK,IAAI,EAAE;AAAA,IAExB,OAAO,IAAI,QAAmB,CAAC,SAAS,WAAW;AAAA,MACjD,MAAM,SAAS,eAAe,UAAU;AAAA,MACxC,IAAI,kBAAkB,OAAO,MAAM,CAAC;AAAA,MACpC,IAAI,UAAU;AAAA,MAEd,MAAM,SAAS,CACb,SACA,SACG;AAAA,QACH,IAAI,SAAS;AAAA,UACX;AAAA,QACF;AAAA,QAEA,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ,QAAQ,IAAI;AAAA;AAAA,MAGtB,MAAM,OAAO,CAAC,UAAiB;AAAA,QAC7B,IAAI,SAAS;AAAA,UACX;AAAA,QACF;AAAA,QAEA,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf,OAAO,KAAK;AAAA;AAAA,MAGd,MAAM,UAAU,WAAW,MAAM;AAAA,QAC/B,KAAK,IAAI,MAAM,kDAAkD,CAAC;AAAA,SACjE,GAAM;AAAA,MAET,MAAM,UAAU,MAAM;AAAA,QACpB,aAAa,OAAO;AAAA,QACpB,OAAO,IAAI,WAAW,SAAS;AAAA,QAC/B,OAAO,IAAI,QAAQ,MAAM;AAAA,QACzB,OAAO,IAAI,SAAS,OAAO;AAAA,QAC3B,OAAO,IAAI,SAAS,OAAO;AAAA;AAAA,MAG7B,MAAM,YAAY,MAAM;AAAA,QACtB,OAAO,MAAM,aAAa,KAAK;AAAA,CAAM,CAAC;AAAA;AAAA,MAGxC,MAAM,SAAS,CAAC,UAA2B;AAAA,QACzC,MAAM,QAAQ,OAAO,UAAU,WAAW,OAAO,KAAK,OAAO,MAAM,IAAI;AAAA,QACvE,kBAAkB,gBAAgB,eAAe,IAC7C,OAAO,KAAK,KAAK,IACjB,OAAO,OAAO,CAAC,iBAAiB,KAAK,CAAC;AAAA,QAE1C,MAAM,iBAAiB,gBAAgB,QAAQ;AAAA;AAAA,CAAU;AAAA,QACzD,IAAI,iBAAiB,GAAG;AAAA,UACtB;AAAA,QACF;AAAA,QAEA,MAAM,kBAAkB,gBAAgB,SAAS,GAAG,iBAAiB,CAAC;AAAA,QACtE,MAAM,WAAW,gBAAgB,SAAS,iBAAiB,CAAC;AAAA,QAC5D,MAAM,eAAe,gBAAgB,SAAS,MAAM;AAAA,QACpD,MAAM,QAAQ,aAAa,MAAM;AAAA,CAAM;AAAA,QAEvC,MAAM,aAAa,MAAM,MAAM,KAAK;AAAA,QACpC,MAAM,cAAc,yBAAyB,KAAK,UAAU;AAAA,QAC5D,MAAM,SAAS,cAAc,OAAO,SAAS,YAAY,IAAK,EAAE,IAAI;AAAA,QACpE,IAAI,WAAW,KAAK;AAAA,UAClB,KAAK,IAAI,MAAM,mDAAmD,UAAU,WAAW,CAAC;AAAA,UACxF;AAAA,QACF;AAAA,QAEA,MAAM,gBAAgB,IAAI;AAAA,QAC1B,WAAW,QAAQ,OAAO;AAAA,UACxB,IAAI,KAAK,WAAW,GAAG;AAAA,YACrB;AAAA,UACF;AAAA,UAEA,MAAM,YAAY,KAAK,QAAQ,GAAG;AAAA,UAClC,IAAI,YAAY,GAAG;AAAA,YACjB;AAAA,UACF;AAAA,UAEA,MAAM,MAAM,KAAK,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY;AAAA,UACxD,MAAM,QAAQ,KAAK,MAAM,YAAY,CAAC,EAAE,KAAK;AAAA,UAC7C,cAAc,IAAI,KAAK,KAAK;AAAA,QAC9B;AAAA,QAEA,MAAM,gBAAgB,cAAc,IAAI,SAAS,GAAG,YAAY;AAAA,QAChE,IAAI,kBAAkB,aAAa;AAAA,UACjC,KAAK,IAAI,MAAM,+CAA+C,CAAC;AAAA,UAC/D;AAAA,QACF;AAAA,QAEA,MAAM,SAAS,cAAc,IAAI,sBAAsB;AAAA,QACvD,MAAM,iBAAiB,WAAW,MAAM,EACrC,OAAO,GAAG,eAAe,gBAAgB,EACzC,OAAO,QAAQ;AAAA,QAClB,IAAI,WAAW,gBAAgB;AAAA,UAC7B,KAAK,IAAI,MAAM,2CAA2C,CAAC;AAAA,UAC3D;AAAA,QACF;AAAA,QAEA,OACE,CAAC,gBAAgB,SAAS;AAAA,UACxB,MAAM,YAAY,IAAI,oBACpB,gBACA,KAAK,aAAa,IAAI,OAAO,SAC/B;AAAA,UACA,QAAQ,SAAiC;AAAA,WAE3C,IAAI,WAAW,QAAQ,CACzB;AAAA;AAAA,MAGF,MAAM,UAAU,CAAC,UAAiB;AAAA,QAChC,KAAK,KAAK;AAAA;AAAA,MAGZ,MAAM,UAAU,MAAM;AAAA,QACpB,KAAK,IAAI,MAAM,iEAAiE,CAAC;AAAA;AAAA,MAGnF,OAAO,GAAG,WAAW,SAAS;AAAA,MAC9B,OAAO,GAAG,QAAQ,MAAM;AAAA,MACxB,OAAO,GAAG,SAAS,OAAO;AAAA,MAC1B,OAAO,GAAG,SAAS,OAAO;AAAA,KAC3B;AAAA;AAAA,EAGK,eAAe,CACrB,MACA,OACQ;AAAA,IACR,MAAM,MAAM,IAAI,IAAI,cAAc,IAAI,GAAG,oBAAoB;AAAA,IAC7D,IAAI,OAAO;AAAA,MACT,YAAY,KAAK,aAAa,OAAO,QAAQ,KAAK,GAAG;AAAA,QACnD,IAAI,aAAa,WAAW;AAAA,UAC1B;AAAA,QACF;AAAA,QAEA,IAAI,aAAa,IAAI,KAAK,OAAO,QAAQ,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,IAEA,OAAO,GAAG,IAAI,WAAW,IAAI;AAAA;AAAA,EAGvB,WAAW,CAAC,SAAgD;AAAA,IAClE,MAAM,UAAU,IAAI,QAAQ,KAAK,SAAS,OAAO;AAAA,IACjD,aAAa,SAAS,QAAQ,OAAO;AAAA,IAErC,IAAI,KAAK,SAAS,aAAa,CAAC,QAAQ,IAAI,YAAY,GAAG;AAAA,MACzD,QAAQ,IAAI,cAAc,KAAK,SAAS,SAAS;AAAA,IACnD;AAAA,IAEA,IAAI,QAAQ,MAAM;AAAA,MAChB,QAAQ,IAAI,YAAY,QAAQ,IAAI;AAAA,IACtC;AAAA,IAEA,IAAI,QAAQ,SAAS,sBAAsB;AAAA,MACzC,QAAQ,IAAI,yBAAyB,MAAM;AAAA,IAC7C;AAAA,IAEA,IAAI,KAAK,SAAS,YAAY,eAAe,CAAC,QAAQ,IAAI,eAAe,GAAG;AAAA,MAC1E,QAAQ,IAAI,iBAAiB,UAAU,KAAK,SAAS,WAAW,aAAa;AAAA,IAC/E;AAAA,IAEA,OAAO;AAAA;AAAA,EAGD,oBAAoB,GAAY;AAAA,IACtC,MAAM,UAAU,IAAI,QAAQ,KAAK,SAAS,OAAO;AAAA,IAEjD,IAAI,KAAK,SAAS,aAAa,CAAC,QAAQ,IAAI,YAAY,GAAG;AAAA,MACzD,QAAQ,IAAI,cAAc,KAAK,SAAS,SAAS;AAAA,IACnD;AAAA,IAEA,IAAI,KAAK,SAAS,YAAY,eAAe,CAAC,QAAQ,IAAI,eAAe,GAAG;AAAA,MAC1E,QAAQ,IAAI,iBAAiB,UAAU,KAAK,SAAS,WAAW,aAAa;AAAA,IAC/E;AAAA,IAEA,OAAO;AAAA;AAEX;AAEA,SAAS,iBAAiB,CAAC,UAA0B;AAAA,EACnD,IAAI,SAAS,UAAU,GAAG;AAAA,IACxB,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,SAAS,SAAS,GAAG,IAAI,SAAS,MAAM,GAAG,EAAE,IAAI;AAAA;AAG1D,SAAS,aAAa,CAAC,MAAsB;AAAA,EAC3C,IAAI,KAAK,WAAW,SAAS,KAAK,KAAK,WAAW,UAAU,GAAG;AAAA,IAC7D,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI;AAAA;AAG3C,SAAS,WAAW,CAAC,UAA0B;AAAA,EAC7C,MAAM,MAAM,IAAI,IAAI,QAAQ;AAAA,EAC5B,IAAI,WAAW,IAAI,aAAa,WAAW,SAAS;AAAA,EACpD,IAAI,CAAC,IAAI,SAAS,SAAS,GAAG,GAAG;AAAA,IAC/B,IAAI,WAAW,GAAG,IAAI;AAAA,EACxB;AAAA,EAEA,OAAO,IAAI,SAAS;AAAA;AAGtB,SAAS,YAAY,CAAC,QAAiB,QAA4B;AAAA,EACjE,IAAI,CAAC,QAAQ;AAAA,IACX;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,IAAI,QAAQ,MAAM;AAAA,EAClC,YAAY,KAAK,UAAU,QAAQ,QAAQ,GAAG;AAAA,IAC5C,OAAO,IAAI,KAAK,KAAK;AAAA,EACvB;AAAA;AAGF,SAAS,eAAe,CAAC,SAA0C;AAAA,EACjE,MAAM,SAAiC,CAAC;AAAA,EACxC,YAAY,KAAK,UAAU,QAAQ,QAAQ,GAAG;AAAA,IAC5C,OAAO,OAAO;AAAA,EAChB;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,uBAAuB,CAC9B,SACS;AAAA,EACT,MAAM,SAAS,IAAI;AAAA,EACnB,YAAY,KAAK,UAAU,OAAO,QAAQ,OAAO,GAAG;AAAA,IAClD,IAAI,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxB,OAAO,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC;AAAA,IAClC,EAAO;AAAA,MACL,OAAO,IAAI,KAAK,KAAK;AAAA;AAAA,EAEzB;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,eAAe,CAAC,OAA2C;AAAA,EAClE,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AAAA,IACvC,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,WAAW;AAAA,EACjB,OAAO,UAAU,YAAY,cAAc;AAAA;AAG7C,eAAe,iBAAiB,CAAC,UAAsC;AAAA,EACrE,IAAI,SAAS,WAAW,KAAK;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,cAAc,SAAS,QAAQ,IAAI,cAAc,KAAK;AAAA,EAC5D,IAAI,YAAY,SAAS,kBAAkB,GAAG;AAAA,IAC5C,OAAO,SAAS,KAAK;AAAA,EACvB;AAAA,EAEA,IACE,YAAY,WAAW,OAAO,KAC9B,YAAY,SAAS,8BAA8B,GACnD;AAAA,IACA,OAAO,SAAS,KAAK;AAAA,EACvB;AAAA,EAEA,OAAO,IAAI,WAAW,MAAM,SAAS,YAAY,CAAC;AAAA;AAGpD,SAAS,YAAY,CAAC,aAAiC,OAA4B;AAAA,EACjF,IAAI,MAAM,eAAe,GAAG;AAAA,IAC1B,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,eAAe;AAAA,EAC5B,IAAI,KAAK,SAAS,kBAAkB,GAAG;AAAA,IACrC,IAAI;AAAA,MACF,OAAO,KAAK,MAAM,IAAI,YAAY,EAAE,OAAO,KAAK,CAAC;AAAA,MACjD,MAAM;AAAA,MACN,OAAO,IAAI,YAAY,EAAE,OAAO,KAAK;AAAA;AAAA,EAEzC;AAAA,EAEA,IAAI,KAAK,WAAW,OAAO,KAAK,KAAK,SAAS,8BAA8B,GAAG;AAAA,IAC7E,OAAO,IAAI,YAAY,EAAE,OAAO,KAAK;AAAA,EACvC;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,YAAY,CAAC,SAA2B;AAAA,EAC/C,MAAM,aAAuB,CAAC;AAAA,EAC9B,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,CAAC,OAAO,SAAS,GAAG,GAAG;AAAA,MACzB;AAAA,IACF;AAAA,IAEA,OAAO,MAAM,SAAS,OAAO,MAAM,KAAK,CAAC;AAAA,IACzC,WAAW,KAAK,GAAG,WAAW,OAAO;AAAA,EACvC;AAAA,EAEA,OAAO,WAAW,KAAK,OAAO;AAAA;AAGhC,SAAS,mBAAmB,CAAC,iBAAyB,MAA0B;AAAA,EAC9E,MAAM,mBAAmB,GAAG,gBAAgB,QAAQ,OAAO,EAAE;AAAA,EAC7D,OAAO,KAAK,IAAI,CAAC,WAAW;AAAA,IAC1B,MAAM,SAAS,IAAI,IAAI,QAAQ,oBAAoB;AAAA,IACnD,MAAM,QAAQ,OAAO,SAAS,QAAQ,gBAAgB;AAAA,IACtD,IAAI,QAAQ,GAAG;AAAA,MACb,MAAM,IAAI,MAAM,uCAAuC,QAAQ;AAAA,IACjE;AAAA,IAEA,OAAO,mBAAmB,OAAO,SAAS,MAAM,QAAQ,iBAAiB,MAAM,CAAC;AAAA,GACjF;AAAA;AAGH,SAAS,aAAa,CAAC,OAA0B;AAAA,EAC/C,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,IACzB,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,OAAO,MAAM,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ;AAAA;AAG3E,SAAS,QAAQ,CAAC,OAA6B;AAAA,EAC7C,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AAAA,IAC/D,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,aAAa,CAAC,OAA+B;AAAA,EACpD,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,IACzB,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,OAAO,MACJ,OAAO,CAAC,UAA4C,CAAC,CAAC,SAAS,OAAO,UAAU,QAAQ,EACxF,IAAI,CAAC,UAAU,KAAoB;AAAA;AAGxC,SAAS,mBAAmB,CAAC,OAA+B;AAAA,EAC1D,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxB,OAAO,cAAc,KAAK;AAAA,EAC5B;AAAA,EAEA,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AAAA,IACvC,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,MAAqB,CAAC;AAAA,EAC5B,WAAW,SAAS,OAAO,OAAO,KAAK,GAAG;AAAA,IACxC,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxB,IAAI,KAAK,GAAG,cAAc,KAAK,CAAC;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,iBAAiB,CAAC,gBAAgC;AAAA,EACzD,MAAM,UAAU,eAAe,MAAM,GAAG,EAAE,MAAM;AAAA,EAChD,MAAM,QAAQ,QAAQ,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,EAC/C,OAAO,mBAAmB,MAAM,MAAM,SAAS,MAAM,cAAc;AAAA;AAGrE,SAAS,aAAa,CAAC,IAAoB;AAAA,EACzC,OAAO,mBAAmB,mBAAmB,EAAE;AAAA;AAGjD,SAAS,gBAAgB,CAAC,MAA8C;AAAA,EACtE,OAAO,IAAI,eAA2B;AAAA,IACpC,KAAK,CAAC,YAAY;AAAA,MAChB,WAAW,QAAQ,IAAI;AAAA,MACvB,WAAW,MAAM;AAAA;AAAA,EAErB,CAAC;AAAA;AAGH,SAAS,OAAO,CAAC,MAA2B;AAAA,EAC1C,IAAI,gBAAgB,YAAY;AAAA,IAC9B,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,OAAO,SAAS,UAAU;AAAA,IAC5B,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI;AAAA,EACtC;AAAA,EAEA,IAAI,SAAS,QAAQ,SAAS,WAAW;AAAA,IACvC,OAAO,IAAI;AAAA,EACb;AAAA,EAEA,OAAO,IAAI,YAAY,EAAE,OAAO,KAAK,UAAU,IAAI,CAAC;AAAA;AAGtD,SAAS,cAAc,CAAC,OAAwC;AAAA,EAC9D,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AAAA,IAC/D,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,MAA8B,CAAC;AAAA,EACrC,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,IAChD,IAAI,OAAO,UAAU,UAAU;AAAA,MAC7B,IAAI,OAAO;AAAA,IACb;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,4BAA4B,CAAC,QAA0D;AAAA,EAC9F,IAAI,OAAO,OAAO,cAAc,YAAY,OAAO,UAAU,SAAS,GAAG;AAAA,IACvE,OAAO,kBAAkB,OAAO,SAAS;AAAA,EAC3C;AAAA,EAEA,IAAI,OAAO,SAAS,OAAO,OAAO,UAAU,UAAU;AAAA,IACpD,MAAM,WAAW,OAAO;AAAA,IACxB,IAAI,OAAO,SAAS,OAAO,YAAY,SAAS,GAAG,SAAS,GAAG;AAAA,MAC7D,OAAO,kBAAkB,SAAS,EAAE;AAAA,IACtC;AAAA,IAEA,IAAI,OAAO,SAAS,cAAc,YAAY,SAAS,UAAU,SAAS,GAAG;AAAA,MAC3E,OAAO,kBAAkB,SAAS,SAAS;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA;AAAA;AAGF,SAAS,sBAAsB,CAAC,WAAwB,QAAsB;AAAA,EAC5E,MAAM,MAAM,UAAU;AAAA,EACtB,IAAI,OAAO,QAAQ,YAAY,IAAI,KAAK,EAAE,SAAS,GAAG;AAAA,IACpD,MAAM,IAAI,MAAM,wBAAwB,kBAAkB,KAAK;AAAA,EACjE;AAAA,EAEA,MAAM,aAAa,UAAU;AAAA,EAC7B,IAAI,OAAO,eAAe,YAAY,cAAc,KAAK;AAAA,IACvD,MAAM,SAAS,OAAO,UAAU,WAAW,WAAW,KAAK,UAAU,YAAY;AAAA,IACjF,MAAM,IAAI,MACR,wBAAwB,kCAAkC,aAAa,QACzE;AAAA,EACF;AAAA;AAGF,SAAS,iBAAiB,CAAC,WAA4C;AAAA,EACrE,MAAM,aAAwB;AAAA,IAC5B,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS,UAAU,QAAQ,EAAE;AAAA,IAC7B,SAAS,UAAU,QAAQ,EAAE;AAAA,IAC7B,SAAS,UAAU,QAAQ,EAAE;AAAA,EAC/B;AAAA,EAEA,WAAW,aAAa,YAAY;AAAA,IAClC,IAAI,OAAO,cAAc,YAAY,OAAO,SAAS,SAAS,GAAG;AAAA,MAC/D,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,OAAO,cAAc,YAAY,UAAU,SAAS,GAAG;AAAA,MACzD,MAAM,SAAS,OAAO,SAAS,WAAW,EAAE;AAAA,MAC5C,IAAI,OAAO,SAAS,MAAM,GAAG;AAAA,QAC3B,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA;AAAA;AAGF,SAAS,YAAY,CAAC,WAAyC;AAAA,EAC7D,MAAM,WAAW,kBAAkB,SAAS;AAAA,EAC5C,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,IAAI,aAAa,YAAY,OAAO,aAAa;AAAA,EACnD;AAAA;AAGF,SAAS,cAAc,CAAC,gBAAiD;AAAA,EACvE,MAAM,SAAS,SAAS,cAAc;AAAA,EACtC,MAAM,aAAwB;AAAA,IAC5B,OAAO;AAAA,IACP,SAAS,OAAO,QAAQ,EAAE;AAAA,IAC1B,SAAS,SAAS,OAAO,SAAS,EAAE,QAAQ,EAAE;AAAA,IAC9C,SAAS,SAAS,OAAO,QAAQ,EAAE,SAAS,EAAE;AAAA,EAChD;AAAA,EAEA,WAAW,aAAa,YAAY;AAAA,IAClC,MAAM,MAAM,eAAe,SAAS;AAAA,IACpC,IAAI,OAAO,KAAK,GAAG,EAAE,SAAS,GAAG;AAAA,MAC/B,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO,CAAC;AAAA;AAGV,SAAS,eAAe,CAAC,QAAqB,MAAqC;AAAA,EACjF,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,QAAQ,OAAO;AAAA,IACrB,IAAI,OAAO,UAAU,WAAW;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA;AAAA;AAGF,SAAS,wBAAwB,CAAC,SAA+B;AAAA,EAC/D,OAAO,gBAAgB,SAAS,CAAC,eAAe,aAAa,CAAC,KAAK;AAAA;AAGrE,SAAS,uBAAuB,CAAC,SAA+B;AAAA,EAC9D,OAAO,gBAAgB,SAAS;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,MAAM;AAAA;AAGT,SAAS,eAAe,CAAC,QAAgC;AAAA,EACvD,OAAO,OAAO,OAAO,OAAO;AAAA;AAG9B,SAAS,2BAA2B,CAClC,QACA,UACY;AAAA,EACZ,IAAI,gBAAgB,MAAM,KAAK,OAAO,MAAM,OAAO,KAAK;AAAA,IACtD,MAAM,eAAe,CAAC,SAAkB;AAAA,MACtC,SAAS,IAAI;AAAA;AAAA,IAEf,OAAO,GAAG,WAAW,YAAY;AAAA,IACjC,OAAO,MAAM;AAAA,MACX,OAAO,MAAM,WAAW,YAAY;AAAA;AAAA,EAExC;AAAA,EAEA,MAAM,cAAc,CAAC,UAAmB;AAAA,IACtC,MAAM,OAAO,SAAS,OAAO,UAAU,YAAY,UAAU,QACxD,MAA4B,OAC7B;AAAA,IACJ,SAAS,IAAI;AAAA;AAAA,EAGf,OAAO,mBAAmB,WAAW,WAAW;AAAA,EAChD,OAAO,MAAM;AAAA,IACX,OAAO,sBAAsB,WAAW,WAAW;AAAA;AAAA;AAIvD,SAAS,yBAAyB,CAAC,QAAuB,UAAkC;AAAA,EAC1F,IAAI,gBAAgB,MAAM,KAAK,OAAO,MAAM,OAAO,KAAK;AAAA,IACtD,MAAM,eAAe,MAAM;AAAA,MACzB,SAAS;AAAA;AAAA,IAEX,OAAO,GAAG,SAAS,YAAY;AAAA,IAC/B,OAAO,MAAM;AAAA,MACX,OAAO,MAAM,SAAS,YAAY;AAAA;AAAA,EAEtC;AAAA,EAEA,MAAM,cAAc,MAAM;AAAA,IACxB,SAAS;AAAA;AAAA,EAEX,OAAO,mBAAmB,SAAS,WAAW;AAAA,EAC9C,OAAO,MAAM;AAAA,IACX,OAAO,sBAAsB,SAAS,WAAW;AAAA;AAAA;AAIrD,SAAS,yBAAyB,CAChC,QACA,UACY;AAAA,EACZ,IAAI,gBAAgB,MAAM,KAAK,OAAO,MAAM,OAAO,KAAK;AAAA,IACtD,MAAM,eAAe,CAAC,UAAmB;AAAA,MACvC,SAAS,KAAK;AAAA;AAAA,IAEhB,OAAO,GAAG,SAAS,YAAY;AAAA,IAC/B,OAAO,MAAM;AAAA,MACX,OAAO,MAAM,SAAS,YAAY;AAAA;AAAA,EAEtC;AAAA,EAEA,MAAM,cAAc,CAAC,UAAmB;AAAA,IACtC,SAAS,KAAK;AAAA;AAAA,EAEhB,OAAO,mBAAmB,SAAS,WAAW;AAAA,EAC9C,OAAO,MAAM;AAAA,IACX,OAAO,sBAAsB,SAAS,WAAW;AAAA;AAAA;AAIrD,SAAS,oBAAoB,CAAC,QAA6B;AAAA,EACzD,IAAI;AAAA,IACF,OAAO,MAAM;AAAA,IACb,MAAM;AAAA;AAaV,SAAS,gBAAmB,GAAkB;AAAA,EAC5C,MAAM,QAAa,CAAC;AAAA,EACpB,MAAM,UAGD,CAAC;AAAA,EACN,IAAI,SAAS;AAAA,EACb,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM,OAAO,IAAI,QAAc,CAAC,YAAY;AAAA,IAC1C,cAAc;AAAA,GACf;AAAA,EAED,MAAM,aAAa,MAAM;AAAA,IACvB,YAAY;AAAA;AAAA,EAGd,MAAM,QAAQ,MAAM;AAAA,IAClB,IAAI,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,SAAS;AAAA,IACT,OAAO,QAAQ,SAAS,GAAG;AAAA,MACzB,MAAM,SAAS,QAAQ,MAAM;AAAA,MAC7B,QAAQ,QAAQ,EAAE,MAAM,MAAM,OAAO,UAAe,CAAC;AAAA,IACvD;AAAA,IACA,WAAW;AAAA;AAAA,EAGb,MAAM,OAAO,CAAC,UAAmB;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,IACV,SAAS;AAAA,IACT,OAAO,QAAQ,SAAS,GAAG;AAAA,MACzB,MAAM,SAAS,QAAQ,MAAM;AAAA,MAC7B,QAAQ,OAAO,KAAK;AAAA,IACtB;AAAA,IACA,WAAW;AAAA;AAAA,EAGb,MAAM,OAAO,CAAC,UAAa;AAAA,IACzB,IAAI,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,QAAQ,MAAM;AAAA,IAC7B,IAAI,QAAQ;AAAA,MACV,OAAO,QAAQ,EAAE,MAAM,OAAO,MAAM,CAAC;AAAA,MACrC;AAAA,IACF;AAAA,IAEA,MAAM,KAAK,KAAK;AAAA;AAAA,EAGlB,MAAM,WAA6B;AAAA,KAChC,OAAO,cAAc,GAAG;AAAA,MACvB,OAAO;AAAA,QACL,MAAM,MAAM;AAAA,UACV,IAAI,MAAM,SAAS,GAAG;AAAA,YACpB,MAAM,QAAQ,MAAM,MAAM;AAAA,YAC1B,OAAO,QAAQ,QAAQ,EAAE,MAAM,OAAO,MAAkB,CAAC;AAAA,UAC3D;AAAA,UAEA,IAAI,YAAY,WAAW;AAAA,YACzB,OAAO,QAAQ,OAAO,OAAO;AAAA,UAC/B;AAAA,UAEA,IAAI,QAAQ;AAAA,YACV,OAAO,QAAQ,QAAQ,EAAE,MAAM,MAAM,OAAO,UAAe,CAAC;AAAA,UAC9D;AAAA,UAEA,OAAO,IAAI,QAA2B,CAAC,SAAS,WAAW;AAAA,YACzD,QAAQ,KAAK,EAAE,SAAS,OAAO,CAAC;AAAA,WACjC;AAAA;AAAA,MAEL;AAAA;AAAA,EAEJ;AAAA,EAEA,OAAO,EAAE,UAAU,MAAM,OAAO,MAAM,KAAK;AAAA;AAG7C,SAAS,wBAAwB,CAC/B,qBACA,qBAAgD,CAAC,GACxB;AAAA,EACzB,MAAM,iBAAiB,QAAQ,QAAQ,mBAAmB;AAAA,EAC1D,IAAI,cAAc;AAAA,EACb,eAAe,KAAK,CAAC,cAAc;AAAA,IACtC,cAAc,UAAU;AAAA,GACzB,EAAE,MAAM,MAAM,EAEd;AAAA,EAED,MAAM,OAAO,CAAC,UAAqC,uBACjD,eAAe,KAAK,CAAC,cAAc,UAAU,KAAK,OAAO,CAAC;AAAA,EAG5D,IAAI;AAAA,EACJ,MAAM,wBAAwB,MAAM;AAAA,IAClC,uBAAuB,KAAK,kBAAkB;AAAA,IAC9C,OAAO;AAAA;AAAA,EAGT,OAAO;AAAA,QACD,EAAE,GAAW;AAAA,MACf,OAAO;AAAA;AAAA,IAET;AAAA,IACA,QAAQ,MAAM,eAAe,KAAK,CAAC,cAAc,UAAU,OAAO,CAAC;AAAA,IACnE,SAAS,MAAM,eAAe,KAAK,CAAC,cAAc,UAAU,QAAQ,CAAC;AAAA,IACrE,WAAW,CAAC,WAAmB,eAAe,KAAK,CAAC,cAAc,UAAU,UAAU,MAAM,CAAC;AAAA,IAC7F,UAAU,CAAC,YACT,eAAe,KAAK,CAAC,cAAc,UAAU,SAAS,OAAO,CAAC;AAAA,IAEhE,MAAM,CACJ,aACA,eAEA,sBAAsB,EAAE,KAAK,aAAa,UAAU;AAAA,IAEtD,OAAO,CACL,eAEA,sBAAsB,EAAE,MAAM,UAAU;AAAA,IAE1C,SAAS,CAAC,cACR,sBAAsB,EAAE,QAAQ,aAAa,SAAS;AAAA,EAE1D;AAAA;AAGF,eAAe,oBAAoB,CAAC,MAAoC;AAAA,EACtE,IAAI,gBAAgB,YAAY;AAAA,IAC9B,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,gBAAgB,aAAa;AAAA,IAC/B,OAAO,IAAI,WAAW,IAAI;AAAA,EAC5B;AAAA,EAEA,IAAI,YAAY,OAAO,IAAI,GAAG;AAAA,IAC5B,OAAO,IAAI,WAAW,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU;AAAA,EACrE;AAAA,EAEA,IAAI,gBAAgB,MAAM;AAAA,IACxB,OAAO,IAAI,WAAW,MAAM,KAAK,YAAY,CAAC;AAAA,EAChD;AAAA,EAEA,IAAI,OAAO,SAAS,UAAU;AAAA,IAC5B,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI;AAAA,EACtC;AAAA,EAEA,OAAO,QAAQ,IAAI;AAAA;AAGrB,SAAS,yBAAyB,CAChC,QACA,UAKI,CAAC,GACU;AAAA,EACf,MAAM,SAAS,QAAQ,QAAQ,UAAU;AAAA,EACzC,IAAI,aAAa,QAAQ,QAAQ;AAAA,EACjC,IAAI,WAAW;AAAA,EACf,MAAM,cAAiC,CAAC;AAAA,EACxC,IAAI;AAAA,EACJ,MAAM,OAAO,IAAI,QAAc,CAAC,YAAY;AAAA,IAC1C,cAAc;AAAA,GACf;AAAA,EAED,MAAM,SAAS,CAAC,UAAoB;AAAA,IAClC,IAAI,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,IACX,WAAW,UAAU,aAAa;AAAA,MAChC,OAAO;AAAA,IACT;AAAA,IAEK,WAAW,QAAQ,YAAY;AAAA,MAClC,IAAI,UAAU,WAAW;AAAA,QACvB,QAAQ,UAAU,KAAK;AAAA,MACzB,EAAO;AAAA,QACL,QAAQ,UAAU;AAAA;AAAA,MAGpB,IAAI,QAAQ;AAAA,QACV,IAAI;AAAA,UACF,MAAM,OAAO,MAAM;AAAA,UACnB,MAAM;AAAA,QAIR,OAAO,YAAY;AAAA,MACrB;AAAA,MAEA,YAAY;AAAA,KACb;AAAA;AAAA,EAGH,YAAY,KACV,4BAA4B,QAAQ,CAAC,SAAS;AAAA,IAC5C,aAAa,WAAW,KAAK,YAAY;AAAA,MACvC,MAAM,QAAQ,MAAM,qBAAqB,IAAI;AAAA,MAC7C,QAAQ,UAAU,KAAK;AAAA,MACvB,IAAI,QAAQ;AAAA,QACV,MAAM,OAAO,MAAM,KAAK;AAAA,MAC1B;AAAA,KACD,EAAE,MAAM,CAAC,UAAU;AAAA,MAClB,OAAO,KAAK;AAAA,KACb;AAAA,GACF,CACH;AAAA,EACA,YAAY,KAAK,0BAA0B,QAAQ,MAAM,OAAO,CAAC,CAAC;AAAA,EAClE,YAAY,KAAK,0BAA0B,QAAQ,CAAC,UAAU,OAAO,KAAK,CAAC,CAAC;AAAA,EAE5E,OAAO;AAAA;AAGT,eAAe,eAAe,CAAC,QAAuB,MAAiC;AAAA,EACrF,IAAI,gBAAgB,MAAM,GAAG;AAAA,IAC3B,MAAM,OAAQ,OAKX;AAAA,IAIH,IAAI,KAAK,SAAS,GAAG;AAAA,MACnB,KAAK,KAAK,QAAQ,IAAI;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,MAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAAA,MAC3C,IAAI;AAAA,QACF,KAAK,KAAK,QAAQ,MAAM,CAAC,UAAkB;AAAA,UACzC,IAAI,OAAO;AAAA,YACT,OAAO,KAAK;AAAA,YACZ;AAAA,UACF;AAAA,UAEA,QAAQ;AAAA,SACT;AAAA,QACD,OAAO,OAAO;AAAA,QACd,OAAO,KAAK;AAAA;AAAA,KAEf;AAAA,IACD;AAAA,EACF;AAAA,EAEA,OAAO,KAAK,IAAI;AAAA;AAGlB,gBAAgB,aAAa,CAAC,OAAqD;AAAA,EACjF,IAAI,iBAAiB,YAAY;AAAA,IAC/B,MAAM;AAAA,IACN;AAAA,EACF;AAAA,EAEA,IAAI,iBAAiB,aAAa;AAAA,IAChC,MAAM,IAAI,WAAW,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,IAAI,YAAY,OAAO,KAAK,GAAG;AAAA,IAC7B,MAAM,IAAI,WAAW,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,IAAI,iBAAiB,MAAM;AAAA,IACzB,MAAM,IAAI,WAAW,MAAM,MAAM,YAAY,CAAC;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,MAAM,UAAU;AAAA,EAC/B,IAAI;AAAA,IACF,OAAO,MAAM;AAAA,MACX,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,MAC1C,IAAI,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEA,IAAI,OAAO;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,YACA;AAAA,IACA,OAAO,YAAY;AAAA;AAAA;AAIvB,eAAe,qBAAqB,CAAC,QAAuB,OAAyC;AAAA,EACnG,IAAI,CAAC,OAAO;AAAA,IACV,qBAAqB,MAAM;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,IACF,iBAAiB,SAAS,cAAc,KAAK,GAAG;AAAA,MAC9C,MAAM,gBAAgB,QAAQ,KAAK;AAAA,IACrC;AAAA,YACA;AAAA,IACA,qBAAqB,MAAM;AAAA;AAAA;AAI/B,SAAS,gBAAgB,CAAC,SAA2C;AAAA,EACnE,IAAI,CAAC,SAAS;AAAA,IACZ,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,SAAS,QAAQ,IAAI,aAAa;AAAA,EACxC,MAAM,SAAS,QAAQ,IAAI,aAAa;AAAA,EACxC,MAAM,UAAU,QAAQ,IAAI,cAAc;AAAA,EAC1C,MAAM,UAAU,QAAQ,IAAI,cAAc;AAAA,EAE1C,OAAO;AAAA,IACL,KAAK,SAAS,OAAO,SAAS,QAAQ,EAAE,IAAI;AAAA,IAC5C,KAAK,SAAS,OAAO,SAAS,QAAQ,EAAE,IAAI;AAAA,IAC5C,MAAM,UAAU,OAAO,SAAS,SAAS,CAAC,IAAI;AAAA,IAC9C,MAAM,WAAW;AAAA,EACnB;AAAA;AAGF,SAAS,yBAAyB,CAAC,MAAyB;AAAA,EAC1D,MAAM,KAAK,IAAI,UACb,QAAQ,OACN,IAAI,MAAM,cAAc,KAAK,KAAK,GAAG,4BAA4B,CACnE;AAAA,EAEF,OAAO,IAAI,MAAM,IAAI;AAAA,IACnB,GAAG,CAAC,SAAS,UAAU;AAAA,MACrB,IAAI,aAAa,QAAQ;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,IAAI,OAAO,aAAa,UAAU;AAAA,QAChC;AAAA,MACF;AAAA,MAEA,OAAO,0BAA0B,CAAC,GAAG,MAAM,OAAO,QAAQ,CAAC,CAAC;AAAA;AAAA,IAE9D,KAAK,GAAG;AAAA,MACN,OAAO,QAAQ,OACb,IAAI,MAAM,cAAc,KAAK,KAAK,GAAG,4BAA4B,CACnE;AAAA;AAAA,EAEJ,CAAC;AAAA;AAGH,SAAS,qBAAuC,CAAC,MAAc,aAA4B;AAAA,EACzF,OAAO,IAAI,MAAM,aAAkB;AAAA,IACjC,GAAG,CAAC,QAAQ,UAAU,UAAU;AAAA,MAC9B,IAAI,OAAO,aAAa,UAAU;AAAA,QAChC,OAAO,QAAQ,IAAI,QAAQ,UAAU,QAAQ;AAAA,MAC/C;AAAA,MAEA,IAAI,QAAQ,IAAI,QAAQ,QAAQ,GAAG;AAAA,QACjC,OAAO,QAAQ,IAAI,QAAQ,UAAU,QAAQ;AAAA,MAC/C;AAAA,MAEA,OAAO,0BAA0B,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAAA;AAAA,EAE7D,CAAC;AAAA;AAGH,SAAS,+BAA+B,CACtC,iBACsB;AAAA,EACtB,OAAO;AAAA,IACL,MAAM,YAAY;AAAA,MAChB,IAAI,iBAAiB;AAAA,QACnB,MAAM,gBAAgB,KAAK;AAAA,MAC7B;AAAA;AAAA,IAEF,cAAc,YAAY;AAAA,MACxB,IAAI,iBAAiB;AAAA,QACnB,MAAM,gBAAgB,OAAO;AAAA,MAC/B;AAAA;AAAA,IAEF,QAAQ,YAAY;AAAA,MAClB,IAAI,CAAC,iBAAiB;AAAA,QACpB,OAAO;AAAA,MACT;AAAA,MAEA,OAAO,gBAAgB,QAAQ;AAAA;AAAA,IAEjC,UAAU,OAAO,YAAY;AAAA,MAC3B,IAAI,CAAC,iBAAiB;AAAA,QACpB,OAAO,YAAY;AAAA,MACrB;AAAA,MAEA,OAAO,gBAAgB,SAAS,OAAO;AAAA;AAAA,EAE3C;AAAA;AAGF,SAAS,WAAW,CAAC,MAGnB;AAAA,EACA,IAAI,SAAS,aAAa,SAAS,MAAM;AAAA,IACvC,OAAO,EAAE,MAAM,UAAU;AAAA,EAC3B;AAAA,EAEA,IACE,gBAAgB,QAChB,gBAAgB,eAChB,YAAY,OAAO,IAAI,KACvB,gBAAgB,kBAChB,OAAO,SAAS,YAChB,gBAAgB,mBAChB,gBAAgB,UAChB;AAAA,IACA,OAAO,EAAE,KAAuB;AAAA,EAClC;AAAA,EAEA,OAAO;AAAA,IACL,MAAM,KAAK,UAAU,IAAI;AAAA,IACzB,aAAa;AAAA,EACf;AAAA;AAGF,eAAe,eAAe,CAAC,MAG5B;AAAA,EACD,IAAI,SAAS,aAAa,SAAS,MAAM;AAAA,IACvC,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,IAAI,OAAO,SAAS,UAAU;AAAA,IAC5B,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,OAAO,IAAI,GAAG,aAAa,aAAa;AAAA,EAChF;AAAA,EAEA,IAAI,gBAAgB,YAAY;AAAA,IAC9B,OAAO,EAAE,WAAW,KAAK;AAAA,EAC3B;AAAA,EAEA,IAAI,gBAAgB,aAAa;AAAA,IAC/B,OAAO,EAAE,WAAW,IAAI,WAAW,IAAI,EAAE;AAAA,EAC3C;AAAA,EAEA,IAAI,YAAY,OAAO,IAAI,GAAG;AAAA,IAC5B,OAAO,EAAE,WAAW,IAAI,WAAW,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU,EAAE;AAAA,EACpF;AAAA,EAEA,IAAI,gBAAgB,MAAM;AAAA,IACxB,OAAO,EAAE,WAAW,IAAI,WAAW,MAAM,KAAK,YAAY,CAAC,EAAE;AAAA,EAC/D;AAAA,EAEA,IAAI,gBAAgB,gBAAgB;AAAA,IAClC,MAAM,IAAI,MAAM,wEAAwE;AAAA,EAC1F;AAAA,EAEA,OAAO;AAAA,IACL,WAAW,IAAI,YAAY,EAAE,OAAO,KAAK,UAAU,IAAI,CAAC;AAAA,IACxD,aAAa;AAAA,EACf;AAAA;AAAA;AAGK,MAAM,iBAAiB;AAAA,EAUP;AAAA,EACV;AAAA,EACA;AAAA,EAXF;AAAA,EACA;AAAA,EACA;AAAA,EAEU;AAAA,EACA;AAAA,EACX;AAAA,EAER,WAAW,CACU,WACV,UACA,UAA4C,CAAC,GACtD,UAAyC,CAAC,GAC1C,OAAyB,SACzB;AAAA,IALmB;AAAA,IACV;AAAA,IACA;AAAA,IAIT,KAAK,eAAe;AAAA,IACpB,KAAK,OAAO;AAAA,IACZ,KAAK,aAAa,KAAK,oBAAoB;AAAA,IAC3C,KAAK,MAAM,KAAK,aAAa;AAAA,IAC7B,KAAK,SAAS,KAAK,gBAAgB;AAAA;AAAA,MAGjC,OAAO,GAAkC;AAAA,IAC3C,OAAO,KAAK;AAAA;AAAA,EAGd,UAAU,GAAS;AAAA,IACjB,KAAK,UAAU,QAAQ;AAAA;AAAA,OAGT,iBAAgB,CAC9B,QACA,MACA,UAAkC,CAAC,GACO;AAAA,IAC1C,QAAQ,eAAe,SAAS,SAAS;AAAA,IACzC,OAAO,KAAK,UAAU,QAAQ,QAAQ,MAAM;AAAA,SACvC;AAAA,MACH,SAAS,eAAe,KAAK,eAAe;AAAA,IAC9C,CAAC;AAAA;AAAA,OAGa,gBAA4B,CAC1C,QACA,MACA,UAAkC,CAAC,GACF;AAAA,IACjC,MAAM,WAAW,MAAM,KAAK,iBAAiB,QAAQ,MAAM,OAAO;AAAA,IAClE,MAAM,UAAU,SAAS;AAAA,IAEzB,IAAI,gBAAgB,OAAO,GAAG;AAAA,MAC5B,IAAI,QAAQ,SAAS,WAAW,SAAS,UAAU,KAAK;AAAA,QACtD,MAAM,IAAI,cACR,QAAQ,SAAS,yBAAyB,SAAS,WACnD,SAAS,QACT;AAAA,UACE,YAAY,QAAQ;AAAA,UACpB,WAAW,QAAQ;AAAA,UACnB,SAAS,QAAQ;AAAA,QACnB,CACF;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,MAAM,SAAS;AAAA,QACf,WAAW,QAAQ;AAAA,QACnB,QAAQ,SAAS;AAAA,QACjB,SAAS,SAAS;AAAA,MACpB;AAAA,IACF;AAAA,IAEA,IAAI,SAAS,UAAU,KAAK;AAAA,MAC1B,MAAM,IAAI,cACR,OAAO,YAAY,WACf,UACA,yBAAyB,SAAS,WACtC,SAAS,QACT,EAAE,SAAS,QAAQ,CACrB;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,OAAO;AAAA,MACP,MAAM,SAAS;AAAA,MACf,QAAQ,SAAS;AAAA,MACjB,SAAS,SAAS;AAAA,IACpB;AAAA;AAAA,OAGc,cAAa,CAC3B,QACA,MACA,UAAkC,CAAC,GACO;AAAA,IAC1C,MAAM,WAAW,MAAM,KAAK,iBAAiB,QAAQ,MAAM,OAAO;AAAA,IAClE,MAAM,UAAU,SAAS;AAAA,IAEzB,IAAI,gBAAgB,OAAO,GAAG;AAAA,MAC5B,IAAI,QAAQ,SAAS,WAAW,SAAS,UAAU,KAAK;AAAA,QACtD,MAAM,IAAI,cACR,QAAQ,SAAS,yBAAyB,SAAS,WACnD,SAAS,QACT;AAAA,UACE,YAAY,QAAQ;AAAA,UACpB,WAAW,QAAQ;AAAA,UACnB,SAAS,QAAQ;AAAA,QACnB,CACF;AAAA,MACF;AAAA,MAEA,OAAO;AAAA,QACL,OAAO,QAAQ,QAAQ,QAAQ;AAAA,QAC/B,MAAM,SAAS;AAAA,QACf,WAAW,QAAQ;AAAA,QACnB,QAAQ,SAAS;AAAA,QACjB,SAAS,SAAS;AAAA,MACpB;AAAA,IACF;AAAA,IAEA,IAAI,SAAS,UAAU,KAAK;AAAA,MAC1B,MAAM,IAAI,cACR,OAAO,YAAY,WACf,UACA,yBAAyB,SAAS,WACtC,SAAS,QACT,EAAE,SAAS,QAAQ,CACrB;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,OAAO,QAAQ,OAAO;AAAA,MACtB,MAAM,SAAS;AAAA,MACf,QAAQ,SAAS;AAAA,MACjB,SAAS,SAAS;AAAA,IACpB;AAAA;AAAA,EAGQ,0BAA0B,CAClC,QACA,MACA,UAAkC,CAAC,GACV;AAAA,IACzB,MAAM,iBAAiB,KAAK,gBAAgB,QAAQ,MAAM,OAAO,EAC9D,KAAK,CAAC,WAAW,KAAK,kCAAkC,QAAQ,MAAM,MAAM,CAAC;AAAA,IAChF,OAAO,yBAAyB,cAAc;AAAA;AAAA,EAGtC,iCAAiC,CACzC,QACA,MACA,QACgB;AAAA,IAChB,MAAM,cAAc,6BAA6B,MAAM;AAAA,IACvD,IAAI,CAAC,aAAa;AAAA,MAChB,MAAM,IAAI,MACR,mDAAmD,OAAO,YAAY,KAAK,MAC7E;AAAA,IACF;AAAA,IAEA,OAAO,KAAK,gBAAgB,WAAW;AAAA;AAAA,EAG/B,eAAe,CAAC,IAA4B;AAAA,IACpD,OAAO;AAAA,MACL;AAAA,MACA,MAAM,OAAO,UAAU,CAAC,MAAM;AAAA,QAC5B,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,GAAG,cAAc,EAAE,UACnB;AAAA,UACE,OAAO;AAAA,YACL,SAAS,QAAQ,kBAAkB;AAAA,UACrC;AAAA,UACA,QAAQ,QAAQ;AAAA,QAClB,CACF;AAAA,QACA,MAAM,YAAY,SAAS,OAAO,KAAK;AAAA,QACvC,uBAAuB,WAAW,EAAE;AAAA,QACpC,OAAO;AAAA;AAAA,MAET,QAAQ,YAAY;AAAA,QAClB,MAAM,KAAK,gBAAgB,UAAU,cAAc,EAAE,CAAC;AAAA;AAAA,MAExD,SAAS,YAAY;AAAA,QACnB,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,cAAc,EAAE,CAClB;AAAA,QACA,OAAO,SAAS,OAAO,KAAK;AAAA;AAAA,MAE9B,WAAW,OAAO,WAAmB;AAAA,QACnC,OAAO,KAAK,cAAc,GAAG,cAAc,EAAE,sBAAsB,mBAAmB,MAAM,GAAG;AAAA;AAAA,MAEjG,UAAU,OAAO,YAAY;AAAA,QAC3B,MAAM,QAAQ,YAAY,YAAY;AAAA,UACpC,IAAI;AAAA,YACF,MAAM,YAAY,MAAM,KAAK,gBAC3B,OACA,cAAc,EAAE,CAClB;AAAA,YACA,QAAQ,SAAS,UAAU,KAAK,CAAC;AAAA,YACjC,MAAM;AAAA,WAGP,IAAI;AAAA,QAEP,OAAO,YAAY;AAAA,UACjB,cAAc,KAAK;AAAA;AAAA;AAAA,IAGzB;AAAA;AAAA,OAGc,cAAa,CAC3B,MACA,UAAsC,CAAC,GACnB;AAAA,IACpB,IAAI,CAAC,KAAK,UAAU,WAAW;AAAA,MAC7B,MAAM,IAAI,MAAM,6DAA6D;AAAA,IAC/E;AAAA,IAEA,IAAI,YAAY;AAAA,IAChB,IAAI,QAAQ,iBAAiB,OAAO;AAAA,MAClC,MAAM,MAAM,IAAI,IAAI,cAAc,IAAI,GAAG,oBAAoB;AAAA,MAC7D,IAAI,KAAK,QAAQ,UAAU,CAAC,IAAI,aAAa,IAAI,QAAQ,GAAG;AAAA,QAC1D,IAAI,aAAa,IAAI,UAAU,KAAK,QAAQ,MAAM;AAAA,MACpD;AAAA,MAEA,IACE,KAAK,QAAQ,WACb,CAAC,IAAI,aAAa,IAAI,SAAS,KAC/B,CAAC,IAAI,aAAa,IAAI,cAAc,GACpC;AAAA,QACA,IAAI,aAAa,IAAI,WAAW,KAAK,QAAQ,OAAO;AAAA,MACtD;AAAA,MAEA,YAAY,GAAG,IAAI,WAAW,IAAI;AAAA,IACpC;AAAA,IAEA,OAAO,KAAK,UAAU,UAAU,SAAS;AAAA;AAAA,OAG7B,kBAAiB,GAAqC;AAAA,IAClE,IAAI,KAAK,gBAAgB;AAAA,MACvB,OAAO,KAAK;AAAA,IACd;AAAA,IAEA,IACE,KAAK,SAAS,oBACd,KAAK,SAAS,gBACd;AAAA,MACA;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,KAAK,gBAA6B,OAAO,MAAM;AAAA,MACpE,KAAK,iBAAiB,SAAS,OAAO,KAAK;AAAA,MAC3C,OAAO,KAAK;AAAA,MACZ,MAAM;AAAA,MACN;AAAA;AAAA;AAAA,EAII,mBAAmB,GAAkB;AAAA,IAC3C,OAAO,sBAAqC,cAAc;AAAA,MACxD,MAAM,YAAY;AAAA,QAChB,MAAM,SAAS,MAAM,KAAK,kBAAkB;AAAA,QAC5C,MAAM,MAAM,SAAS,QAAQ,WAAW;AAAA,QACxC,MAAM,YAAY,MAAM,QAAQ,IAAI,SAAS,IACzC,IAAI,UAAU,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ,IAC1E,CAAC;AAAA,QACL,MAAM,iBAAiB,UACpB,OAAO,CAAC,UAAU,CAAC,MAAM,WAAW,GAAG,CAAC,EACxC,IAAI,CAAC,UAAU,WAAW,OAAO;AAAA,QAEpC,MAAM,aAAa,KAAK,SAAS,WAAW,SAAS,IACjD,KAAK,SAAS,QAAQ,cAAc,EAAE,IACtC;AAAA,QAEJ,OAAO;AAAA,UACL,WAAW;AAAA,UACX,aAAa,OAAO,IAAI,gBAAgB,WAAW,IAAI,cAAc;AAAA,UACrE,UAAU,KAAK,SAAS,mBAAmB,kBAAkB;AAAA,UAC7D,KAAK,KAAK,SAAS,WAAW,SAAS,IAAI,YAAY,KAAK;AAAA,UAC5D;AAAA,UACA,SAAS,KAAK,QAAQ,WAAW;AAAA,UACjC,QAAQ,KAAK,QAAQ,WACf,OAAO,IAAI,gBAAgB,WAAW,IAAI,cAAc;AAAA,QAChE;AAAA;AAAA,MAEF,YAAY,YAAY,KAAK,QAAQ,SAAS;AAAA,MAC9C,QAAQ,OAAO,YAAqB;AAAA,QAClC,MAAM,YAAY,KAAK,QAAQ,SAAS;AAAA,QACxC,OAAO,UAAU,OAAO;AAAA;AAAA,MAE1B,YAAY,MAAM,KAAK,WAAW;AAAA,IACpC,CAAC;AAAA;AAAA,EAGK,YAAY,GAAW;AAAA,IAC7B,OAAO,sBAA8B,OAAO;AAAA,MAC1C,OAAO,OACL,QACA,MACA,MACA,UAAgC,CAAC,MAC9B;AAAA,QACH,MAAM,SAAS,MAAM,KAAK,gBAAmB,QAAQ,MAAM;AAAA,UACzD;AAAA,UACA,MAAM,QAAQ;AAAA,UACd,cAAc;AAAA,QAChB,CAAC;AAAA,QACD,OAAO,EAAE,OAAO,OAAO,OAAO,MAAM,OAAO,KAAK;AAAA;AAAA,MAElD,WAAW,OAAO,SAAiB,KAAK,cAAc,MAAM,EAAE,cAAc,MAAM,CAAC;AAAA,MACnF,WAAW,CACT,QACA,MACA,MACA,UAAgC,CAAC,MAC9B;AAAA,QACH,OAAO,KAAK,2BAA2B,QAAQ,MAAM;AAAA,UACnD;AAAA,UACA,MAAM,QAAQ;AAAA,UACd,cAAc;AAAA,QAChB,CAAC;AAAA;AAAA,IAEL,CAAC;AAAA;AAAA,EAGK,qBAAqB,GAAoB;AAAA,IAC/C,OAAO,sBAAuC,kBAAkB;AAAA,MAC9D,MAAM,YAAY;AAAA,QAChB,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,uBACA,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAC5B;AAAA,QACA,OAAO,cAAc,OAAO,KAAK;AAAA;AAAA,MAEnC,OAAO,YAAY;AAAA,QACjB,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,qBACF;AAAA,QACA,OAAO,oBAAoB,mBAAmB,cAAc,OAAO,KAAK,CAAC;AAAA;AAAA,MAE3E,KAAK,OAAO,SAAiB;AAAA,QAC3B,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,uBAAuB,mBAAmB,IAAI,GAChD;AAAA,QACA,OAAO,EAAE,OAAO,SAAS,OAAO,KAAK,GAAG,MAAM,OAAO,KAAK;AAAA;AAAA,MAE5D,kBAAkB,OAAO,SAAiB;AAAA,QACxC,MAAM,QAAQ,MAAM,KAAK,gBACvB,OACA,uBAAuB,mBAAmB,IAAI,GAChD;AAAA,QACA,MAAM,SAAS,SAAS,MAAM,KAAK,EAAE;AAAA,QACrC,IAAI,OAAO,WAAW,UAAU;AAAA,UAC9B,OAAO,CAAC;AAAA,QACV;AAAA,QAEA,MAAM,QAAQ,MAAM,KAAK,gBACvB,OACA,eAAe,mBAAmB,MAAM,GAC1C;AAAA,QACA,MAAM,eAAe,SAAS,MAAM,KAAK,EAAE;AAAA,QAC3C,IAAI,OAAO,iBAAiB,UAAU;AAAA,UACpC,OAAO,CAAC;AAAA,QACV;AAAA,QAEA,OAAO,GAAG,eAAe,SAAS,MAAM,KAAK,EAAE;AAAA;AAAA,MAEjD,QAAQ,OAAO,UAAuB;AAAA,QACpC,MAAM,KAAK,gBAAgB,QAAQ,uBAAuB,EAAE,MAAM,MAAM,CAAC;AAAA;AAAA,MAE3E,QAAQ,OACN,MACA,OACA,UAAgC,CAAC,MAC9B;AAAA,QACH,MAAM,KAAK,gBACT,OACA,uBAAuB,mBAAmB,IAAI,KAC9C,EAAE,MAAM,OAAO,MAAM,QAAQ,KAAK,CACpC;AAAA;AAAA,MAEF,QAAQ,OAAO,MAAc,UAAuB;AAAA,QAClD,MAAM,KAAK,gBACT,QACA,uBAAuB,mBAAmB,IAAI,KAC9C,EAAE,MAAM,MAAM,CAChB;AAAA;AAAA,MAEF,QAAQ,OAAO,SAAiB;AAAA,QAC9B,MAAM,KAAK,gBACT,UACA,uBAAuB,mBAAmB,IAAI,GAChD;AAAA;AAAA,IAEJ,CAAC;AAAA;AAAA,EAGK,eAAe,GAAc;AAAA,IACnC,IAAI,KAAK,SAAS,kBAAkB;AAAA,MAClC,OAAO,sBAAiC,UAAU;AAAA,QAChD,SAAS,0BAA0B,CAAC,UAAU,SAAS,CAAC;AAAA,MAC1D,CAAC;AAAA,IACH;AAAA,IAEA,OAAO,sBAAiC,UAAU;AAAA,MAChD,MAAM,OAAO,UAAU,CAAC,MAAM;AAAA,QAC5B,MAAM,QAA+D;AAAA,UACnE,WAAW;AAAA,QACb;AAAA,QACA,IAAI,QAAQ,aAAa;AAAA,UACvB,MAAM,kBAAkB;AAAA,QAC1B;AAAA,QAEA,IAAI,QAAQ,UAAU,QAAQ,OAAO,SAAS,GAAG;AAAA,UAC/C,MAAM,SAAS,aAAa,QAAQ,MAAM;AAAA,QAC5C;AAAA,QAEA,MAAM,SAAS,MAAM,KAAK,gBAA+B,OAAO,eAAe;AAAA,UAC7E;AAAA,QACF,CAAC;AAAA,QACD,OAAO,cAAc,OAAO,KAAK;AAAA;AAAA,MAEnC,cAAc,OAAO,UAAU,CAAC,MAAM;AAAA,QACpC,IAAI,QAAQ,QAAQ,UAAU,QAAQ,aAAa;AAAA,UACjD,MAAM,SAAS,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,UAC7C,OAAO,OACJ,IAAI,CAAC,UAAU,MAAM,WAAW,EAChC,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ;AAAA,QACjE;AAAA,QAEA,MAAM,SAAS,MAAM,KAAK,gBAA2B,OAAO,aAAa;AAAA,QACzE,OAAO,oBAAoB,WAAW,cAAc,OAAO,KAAK,CAAC;AAAA;AAAA,MAEnE,KAAK,OACH,aACA,UAA+B,CAAC,MAC7B;AAAA,QACH,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,eAAe,mBAAmB,WAAW,KAC7C;AAAA,UACE,OAAO,QAAQ,SAAS,EAAE,QAAQ,QAAQ,OAAO,IAAI;AAAA,QACvD,CACF;AAAA,QACA,OAAO,EAAE,OAAO,SAAS,OAAO,KAAK,GAAG,MAAM,OAAO,KAAK;AAAA;AAAA,MAE5D,QAAQ,CAAC,OAAoB,WAAyB;AAAA,QACpD,MAAM,OAAO,SAAS,KAAK,OAAO,OAAO,IAAI;AAAA,QAC7C,OAAO,KAAK,2BAA2B,QAAQ,eAAe,EAAE,KAAK,CAAC;AAAA;AAAA,MAExE,UAAU,OACR,SACA,QACA,aACG,gCAAgC,IAAI;AAAA,MACzC,QAAQ,OACN,aACA,OACA,UAAgC,CAAC,MAC9B;AAAA,QACH,MAAM,KAAK,gBACT,OACA,eAAe,mBAAmB,WAAW,KAC7C;AAAA,UACE,MAAM;AAAA,UACN,MAAM,QAAQ;AAAA,QAChB,CACF;AAAA;AAAA,MAEF,QAAQ,CAAC,gBAAwB;AAAA,QAC/B,OAAO,KAAK,2BACV,UACA,eAAe,mBAAmB,WAAW,GAC/C;AAAA;AAAA,MAEF,SAAS,CAAC,gBAAwB;AAAA,QAChC,OAAO,KAAK,2BACV,QACA,eAAe,mBAAmB,WAAW,WAC/C;AAAA;AAAA,MAEF,cAAc,CAAC,gBAAwB;AAAA,QACrC,OAAO,KAAK,2BACV,QACA,eAAe,mBAAmB,WAAW,UAC/C;AAAA;AAAA,MAEF,QAAQ,CAAC,aAAqB,YAA0B;AAAA,QACtD,OAAO,KAAK,2BACV,QACA,eAAe,mBAAmB,WAAW,YAC7C,EAAE,MAAM,WAAW,CAAC,EAAE,CACxB;AAAA;AAAA,MAEF,SAAS,KAAK,sBAAsB;AAAA,IACtC,CAAC;AAAA;AAEL;AAAA;AAEO,MAAM,oBAAoB,iBAAiB;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAET,WAAW,CACT,WACA,UACA,UAA4C,CAAC,GAC7C,UAAyC,CAAC,GAC1C,OAAyB,SACzB;AAAA,IACA,MAAM,WAAW,UAAU,SAAS,SAAS,IAAI;AAAA,IAEjD,KAAK,SAAS,KAAK,gBAAgB;AAAA,IACnC,KAAK,eAAe,0BAA0B,CAAC,cAAc,CAAC;AAAA,IAC9D,KAAK,YAAY,KAAK,mBAAmB;AAAA,IACzC,KAAK,SAAS,0BAA0B,CAAC,QAAQ,CAAC;AAAA,IAClD,KAAK,WAAW,sBAAmC,YAAY;AAAA,MAC7D,eAAe,YAAY;AAAA,QACzB,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,6BACF;AAAA,QACA,OAAO,SAAS,OAAO,KAAK;AAAA;AAAA,IAEhC,CAAC;AAAA,IACD,KAAK,WAAW,0BAA0B,CAAC,UAAU,CAAC;AAAA,IACtD,KAAK,aAAa,KAAK,oBAAoB;AAAA,IAC3C,KAAK,WAAW,0BAA0B,CAAC,UAAU,CAAC;AAAA,IACtD,KAAK,WAAW,0BAA0B,CAAC,UAAU,CAAC;AAAA,IACtD,KAAK,UAAU,0BAA0B,CAAC,SAAS,CAAC;AAAA,IACpD,KAAK,UAAU,0BAA0B,CAAC,SAAS,CAAC;AAAA,IACpD,KAAK,WAAW,0BAA0B,CAAC,UAAU,CAAC;AAAA,IACtD,KAAK,OAAO,sBAA+B,QAAQ;AAAA,MACjD,QAAQ,YAAY;AAAA,QAClB,IAAI,CAAC,KAAK,QAAQ,YAAY;AAAA,UAC5B,OAAO;AAAA,QACT;AAAA,QAEA,OAAO,KAAK,KAAK,QAAQ,WAAW;AAAA;AAAA,IAExC,CAAC;AAAA;AAAA,EAGH,WAAW,CAAC,cAAyD;AAAA,IACnE,OAAO,IAAI,YAAY,KAAK,WAAW,KAAK,UAAU,KAAK,SAAS;AAAA,SAC/D,KAAK;AAAA,SACL;AAAA,IACL,GAAG,KAAK,IAAI;AAAA;AAAA,EAGd,OAAO,CAAC,MAA2B;AAAA,IACjC,OAAO,KAAK,YAAY,EAAE,SAAS,KAAK,CAAC;AAAA;AAAA,EAG3C,MAAM,CAAC,MAA2B;AAAA,IAChC,OAAO,KAAK,YAAY,EAAE,QAAQ,KAAK,CAAC;AAAA;AAAA,EAG1C,oBAAoB,CAAC,gBAAgB,MAAmB;AAAA,IACtD,OAAO,KAAK,YAAY,EAAE,sBAAsB,cAAc,CAAC;AAAA;AAAA,EAGzD,eAAe,GAAc;AAAA,IACnC,OAAO,sBAAiC,UAAU;AAAA,MAChD,SAAS,YAAY;AAAA,QACnB,MAAM,SAAS,MAAM,KAAK,gBAAwB,OAAO,cAAc;AAAA,QACvE,OAAO,OAAO,OAAO,UAAU,WAC3B,OAAO,QACP,IAAI,YAAY,EAAE,OAAO,QAAQ,OAAO,KAAK,CAAC;AAAA;AAAA,MAEpD,KAAK,YAAY;AAAA,QACf,MAAM,SAAS,MAAM,KAAK,gBAA6B,OAAO,MAAM;AAAA,QACpE,OAAO,EAAE,OAAO,SAAS,OAAO,KAAK,GAAG,MAAM,OAAO,KAAK;AAAA;AAAA,MAE5D,WAAW,YAAY;AAAA,QACrB,MAAM,SAAS,MAAM,KAAK,gBAA6B,OAAO,gBAAgB;AAAA,QAC9E,OAAO,SAAS,OAAO,KAAK;AAAA;AAAA,MAE9B,QAAQ,OACN,QACA,UAAgC,CAAC,MAC9B;AAAA,QACH,MAAM,KAAK,gBAAgB,OAAO,QAAQ;AAAA,UACxC,MAAM;AAAA,UACN,MAAM,QAAQ;AAAA,QAChB,CAAC;AAAA;AAAA,MAEH,cAAc,OAAO,WAAwB;AAAA,QAC3C,MAAM,KAAK,gBAAgB,OAAO,QAAQ,EAAE,MAAM,OAAO,CAAC;AAAA;AAAA,MAE5D,cAAc,OAAO,cAAsB;AAAA,QACzC,MAAM,SAAS,MAAM,KAAK,gBAA6B,OAAO,MAAM;AAAA,QACpE,MAAM,SAAS,SAAS,OAAO,KAAK;AAAA,QACpC,MAAM,gBAAgB,OAAO;AAAA,QAC7B,IAAI,CAAC,MAAM,QAAQ,aAAa,GAAG;AAAA,UACjC,OAAO;AAAA,QACT;AAAA,QAEA,OAAO,cAAc,KAAK,CAAC,UAAU,UAAU,SAAS;AAAA;AAAA,MAE1D,aAAa,YAAY;AAAA,QACvB,MAAM,SAAS,MAAM,KAAK,gBAA6B,OAAO,MAAM;AAAA,QACpE,MAAM,MAAM,SAAS,SAAS,OAAO,KAAK,EAAE,WAAW;AAAA,QACvD,OAAO,IAAI,qBAAqB;AAAA;AAAA,IAEpC,CAAC;AAAA;AAAA,EAGK,mBAAmB,GAAkB;AAAA,IAC3C,OAAO,sBAAqC,cAAc;AAAA,MACxD,OAAO,YAAY;AAAA,QACjB,MAAM,SAAS,MAAM,KAAK,gBAA2B,OAAO,iBAAiB;AAAA,QAC7E,OAAO,oBAAoB,eAAe,cAAc,OAAO,KAAK,CAAC;AAAA;AAAA,MAEvE,MAAM,OAAO,UAAU,CAAC,MAAM;AAAA,QAC5B,MAAM,SAAS,MAAM,KAAK,gBAAyB,OAAO,mBAAmB;AAAA,UAC3E,OAAO;AAAA,YACL,WAAW;AAAA,YACX,gBAAgB,QAAQ,cAAc,SAAS;AAAA,UACjD;AAAA,QACF,CAAC;AAAA,QACD,OAAO,oBAAoB,OAAO,KAAK;AAAA;AAAA,MAEzC,KAAK,OAAO,SAAiB;AAAA,QAC3B,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,mBAAmB,mBAAmB,IAAI,GAC5C;AAAA,QACA,OAAO,EAAE,OAAO,SAAS,OAAO,KAAK,GAAG,MAAM,OAAO,KAAK;AAAA;AAAA,MAE5D,MAAM,OAAO,MAAc,iBAAiB,OAAO;AAAA,QACjD,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,mBAAmB,mBAAmB,IAAI,UAC1C;AAAA,UACE,OAAO,EAAE,SAAS,eAAe;AAAA,QACnC,CACF;AAAA,QACA,MAAM,YAAY,SAAS,OAAO,KAAK;AAAA,QACvC,uBAAuB,WAAW,IAAI;AAAA,QACtC,OAAO,EAAE,OAAO,WAAW,MAAM,OAAO,KAAK;AAAA;AAAA,MAE/C,gBAAgB,OACd,MACA,QACA,iBAAiB,OACd;AAAA,QACH,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,mBAAmB,mBAAmB,IAAI,UAC1C;AAAA,UACE,OAAO;AAAA,YACL;AAAA,YACA,SAAS;AAAA,UACX;AAAA,QACF,CACF;AAAA,QACA,MAAM,YAAY,SAAS,OAAO,KAAK;AAAA,QACvC,uBAAuB,WAAW,IAAI;AAAA,QACtC,OAAO,EAAE,OAAO,WAAW,MAAM,OAAO,KAAK;AAAA;AAAA,MAE/C,WAAW,OAAO,MAAc,WAAmB;AAAA,QACjD,MAAM,QAAQ,SAAS,WAAW,mBAAmB,MAAM,MAAM;AAAA,QACjE,OAAO,KAAK,cACV,mBAAmB,mBAAmB,IAAI,cAAc,OAC1D;AAAA;AAAA,MAEF,QAAQ,OAAO,SAAiB;AAAA,QAC9B,MAAM,KAAK,gBACT,UACA,mBAAmB,mBAAmB,IAAI,GAC5C;AAAA;AAAA,IAEJ,CAAC;AAAA;AAAA,EAGK,YAAY,CAAC,QAAyD;AAAA,IAC5E,OAAO,WAAW;AAAA;AAAA,EAGZ,gBAAgB,CACtB,QACwC;AAAA,IACxC,OAAO,KAAK,aAAa,MAAM,IAAI,YAAY;AAAA;AAAA,EAGzC,kBAAkB,CAAC,SAAwC;AAAA,IACjE,OAAO,QACL,SAAS,SACT,SAAS,UACT,SAAS,UACT,SAAS,SACX;AAAA;AAAA,EAGM,gBAAgB,CAAC,SAAwC;AAAA,IAC/D,OAAO,QACL,KAAK,aAAa,SAAS,MAAM,KACjC,KAAK,aAAa,SAAS,MAAM,CACnC;AAAA;AAAA,OAGY,WAAU,CACtB,WACA,uBACiC;AAAA,IACjC,MAAM,UAAU,eAAe,qBAAqB;AAAA,IACpD,IAAI,OAAO,KAAK,OAAO,EAAE,SAAS,GAAG;AAAA,MACnC,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,YAAY,MAAM,UAAU,QAAQ;AAAA,IAC1C,OAAO,eAAe,SAAS;AAAA;AAAA,OAGnB,qBAAoB,CAChC,WACA,SACA,SACA,uBACA,QAOI,CAAC,GACgD;AAAA,IACrD,MAAM,MAAM,MAAM,KAAK,WAAW,WAAW,yBAAyB,CAAC,CAAC;AAAA,IACxE,IAAI,OAAO,KAAK,GAAG,EAAE,WAAW,GAAG;AAAA,MACjC,OAAO,EAAE,WAAW,OAAO,WAAW,MAAM;AAAA,IAC9C;AAAA,IAEA,MAAM,iBAAiB,KAAK,iBAAiB,SAAS,MAAM;AAAA,IAC5D,MAAM,iBAAiB,KAAK,iBAAiB,SAAS,MAAM;AAAA,IAC5D,IAAI,YAAY;AAAA,IAChB,IAAI,YAAY;AAAA,IAEhB,MAAM,cAAc,OAAO,SAAgD;AAAA,MACzE,MAAM,SAAS,IAAI;AAAA,MACnB,IAAI,CAAC,QAAQ;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MAEA,MAAM,SAAU,MAAM,UAAU,UAAU,MAAM;AAAA,MAChD,IAAI,SAAS,QAAQ;AAAA,QACnB,QAAQ,OAAO,iBACb,SACA,MAAM;AAAA,UACJ,qBAAqB,MAAM;AAAA,WAE7B,EAAE,MAAM,KAAK,CACf;AAAA,MACF;AAAA,MAEA,OAAO;AAAA;AAAA,IAGT,MAAM,gBAAgB,MAAM,YAAY,SAAS;AAAA,IACjD,IAAI,eAAe;AAAA,MACZ,0BAA0B,aAAa;AAAA,MAC5C,SAAS,YAAY,aAAqC;AAAA,IAC5D;AAAA,IAEA,IAAI,yBAAyB,OAAO,GAAG;AAAA,MACrC,MAAM,oBAAoB,MAAM,YAAY,GAAG;AAAA,MAC/C,IAAI,CAAC,mBAAmB;AAAA,QACtB,OAAO,EAAE,WAAW,OAAO,WAAW,MAAM;AAAA,MAC9C;AAAA,MAEA,YAAY;AAAA,MACP,0BAA0B,mBAAmB;AAAA,QAChD,QAAQ;AAAA,QACR,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,MACjB,CAAC;AAAA,MACI,sBAAsB,mBAAmB,SAAS,KAAK;AAAA,MAC5D,OAAO,EAAE,WAAW,UAAU;AAAA,IAChC;AAAA,IAEA,MAAM,cAAc,MAAM,YAAY,GAAG;AAAA,IACzC,IAAI,aAAa;AAAA,MACV,sBAAsB,aAAa,SAAS,KAAK;AAAA,IACxD;AAAA,IAEA,MAAM,eAAe,MAAM,YAAY,GAAG;AAAA,IAC1C,IAAI,cAAc;AAAA,MAChB,YAAY;AAAA,MACP,0BAA0B,cAAc;AAAA,QAC3C,QAAQ;AAAA,QACR,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,IAEA,MAAM,eAAe,MAAM,YAAY,GAAG;AAAA,IAC1C,IAAI,cAAc;AAAA,MAChB,YAAY;AAAA,MACP,0BAA0B,cAAc;AAAA,QAC3C,QAAQ;AAAA,QACR,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,MACjB,CAAC;AAAA,IACH;AAAA,IAEA,OAAO,EAAE,WAAW,UAAU;AAAA;AAAA,EAGxB,kBAAkB,GAAiB;AAAA,IACzC,MAAM,iBAAiB,CAAC,iBACtB,kBAAkB,mBAAmB,YAAY;AAAA,IACnD,MAAM,iBAAiB,CAAC,cAAsB,iBAC5C,eACI,GAAG,eAAe,YAAY,eAAe,mBAAmB,YAAY,MAC5E,GAAG,eAAe,YAAY;AAAA,IAGpC,MAAM,gBAAgB,CAAC,kBAA2C;AAAA,MAChE,MAAM,YAAY;AAAA,QAChB,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,GAAG,eAAe,YAAY,QAChC;AAAA,QACA,OAAO,oBACL,cAAc,mBAAmB,YAAY,UAC7C,cAAc,OAAO,KAAK,CAC5B;AAAA;AAAA,MAEF,KAAK,OAAO,aAAqB;AAAA,QAC/B,MAAM,SAAS,MAAM,KAAK,cACxB,OACA,GAAG,eAAe,YAAY,UAAU,mBAAmB,QAAQ,GACrE;AAAA,QACA,OAAO,iBAAiB,OAAO,KAAK;AAAA;AAAA,MAEtC,QAAQ,OAAO,aAAqB;AAAA,QAClC,MAAM,KAAK,gBACT,UACA,GAAG,eAAe,YAAY,UAAU,mBAAmB,QAAQ,GACrE;AAAA;AAAA,MAEF,YAAY,YAAY;AAAA,QACtB,MAAM,SAAS,MAAM,KAAK,cACxB,OACA,GAAG,eAAe,YAAY,WAChC;AAAA,QACA,OAAO,iBAAiB,OAAO,KAAK;AAAA;AAAA,MAEtC,eAAe,YAAY;AAAA,QACzB,MAAM,KAAK,gBACT,UACA,GAAG,eAAe,YAAY,WAChC;AAAA;AAAA,IAEJ;AAAA,IAEA,MAAM,iBAAiB,CAAC,kBAA4C;AAAA,MAClE,KAAK,OAAO,SAAiB;AAAA,QAC3B,MAAM,WAAW,MAAM,KAAK,iBAC1B,OACA,GAAG,eAAe,YAAY,WAC9B;AAAA,UACE,OAAO,EAAE,KAAK;AAAA,QAChB,CACF;AAAA,QAEA,MAAM,UAAU,iBAAiB,SAAS,OAAO;AAAA,QACjD,KAAK,QAAQ,QAAQ,IAAI,YAAY,MAAM,aAAa;AAAA,UACtD,MAAM,UAAU,gBAAgB,SAAS,IAAI,IACzC,cAAc,SAAS,KAAK,QAAQ,IACpC,CAAC;AAAA,UACL,OAAO;AAAA,YACL,QAAQ,iBAAiB,IAAI,UAAY;AAAA,YACzC,KAAK,QAAQ;AAAA,YACb,KAAK,QAAQ;AAAA,YACb,MAAM,QAAQ;AAAA,YACd,MAAM,QAAQ;AAAA,YACd,SAAS;AAAA,UACX;AAAA,QACF;AAAA,QAEA,IAAI,SAAS,UAAU,KAAK;AAAA,UAC1B,IAAI,gBAAgB,SAAS,IAAI,GAAG;AAAA,YAClC,MAAM,IAAI,cACR,SAAS,KAAK,SAAS,yBAAyB,SAAS,WACzD,SAAS,QACT;AAAA,cACE,YAAY,SAAS,KAAK;AAAA,cAC1B,WAAW,SAAS,KAAK;AAAA,cACzB,SAAS,SAAS,KAAK;AAAA,YACzB,CACF;AAAA,UACF;AAAA,UAEA,MAAM,IAAI,cAAc,yBAAyB,SAAS,WAAW,SAAS,QAAQ;AAAA,YACpF,SAAS,SAAS;AAAA,UACpB,CAAC;AAAA,QACH;AAAA,QAEA,OAAO;AAAA,UACL,QAAQ,iBAAiB,QAAQ,SAAS,IAAI,CAAC;AAAA,UAC/C,KAAK,QAAQ;AAAA,UACb,KAAK,QAAQ;AAAA,UACb,MAAM,QAAQ;AAAA,UACd,MAAM,QAAQ;AAAA,QAChB;AAAA;AAAA,MAEF,KAAK,OAAO,MAAc,YAAoC;AAAA,QAC5D,MAAM,UAAU,IAAI;AAAA,QACpB,IAAI,QAAQ,QAAQ,WAAW;AAAA,UAC7B,QAAQ,IAAI,eAAe,OAAO,QAAQ,GAAG,CAAC;AAAA,QAChD;AAAA,QAEA,IAAI,QAAQ,QAAQ,WAAW;AAAA,UAC7B,QAAQ,IAAI,eAAe,OAAO,QAAQ,GAAG,CAAC;AAAA,QAChD;AAAA,QAEA,IAAI,QAAQ,SAAS,WAAW;AAAA,UAC9B,QAAQ,IAAI,gBAAgB,QAAQ,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,QACvE;AAAA,QAEA,IAAI,QAAQ,MAAM;AAAA,UAChB,QAAQ,IAAI,gBAAgB,QAAQ,IAAI;AAAA,QAC1C;AAAA,QAEA,IAAI,QAAQ,WAAW;AAAA,UACrB,QAAQ,IAAI,iBAAiB,QAAQ,SAAS;AAAA,QAChD;AAAA,QAEA,MAAM,KAAK,gBAAgB,QAAQ,GAAG,eAAe,YAAY,WAAW;AAAA,UAC1E,OAAO,EAAE,KAAK;AAAA,UACd,MAAM,QAAQ;AAAA,UACd;AAAA,QACF,CAAC;AAAA;AAAA,MAEH,QAAQ,OAAO,SAAiB;AAAA,QAC9B,MAAM,KAAK,gBAAgB,UAAU,GAAG,eAAe,YAAY,WAAW;AAAA,UAC5E,OAAO,EAAE,KAAK;AAAA,QAChB,CAAC;AAAA;AAAA,MAEH,MAAM,YAAY;AAAA,QAChB,MAAM,IAAI,MAAM,wDAAwD;AAAA;AAAA,IAE5E;AAAA,IAEA,MAAM,qBAAqB,CAAC,kBAAgD;AAAA,MAC1E,OAAO,YAAY;AAAA,QACjB,MAAM,SAAS,MAAM,KAAK,gBAA2B,OAAO,eAAe,YAAY,CAAC;AAAA,QACxF,OAAO,oBACL,cAAc,mBAAmB,YAAY,eAC7C,cAAc,OAAO,KAAK,CAC5B;AAAA;AAAA,MAEF,MAAM,YAAY;AAAA,QAChB,MAAM,SAAS,MAAM,KAAK,gBAA+B,OAAO,eAAe,YAAY,GAAG;AAAA,UAC5F,OAAO,EAAE,WAAW,EAAE;AAAA,QACxB,CAAC;AAAA,QACD,OAAO,cAAc,OAAO,KAAK;AAAA;AAAA,MAEnC,KAAK,OAAO,iBAAyB;AAAA,QACnC,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,eAAe,cAAc,YAAY,CAC3C;AAAA,QACA,OAAO,EAAE,OAAO,SAAS,OAAO,KAAK,GAAG,MAAM,OAAO,KAAK;AAAA;AAAA,MAE5D,QAAQ,CAAC,aAA0B;AAAA,QACjC,OAAO,KAAK,2BAA2B,QAAQ,eAAe,YAAY,GAAG;AAAA,UAC3E,MAAM;AAAA,QACR,CAAC;AAAA;AAAA,MAEH,UAAU,OACR,SACA,WACA,aACG,gCAAgC,IAAI;AAAA,MACzC,QAAQ,CAAC,cAAsB,YAAyB;AAAA,QACtD,OAAO,KAAK,2BACV,QACA,eAAe,cAAc,YAAY,GACzC;AAAA,UACE,MAAM;AAAA,QACR,CACF;AAAA;AAAA,MAEF,SAAS,CAAC,cAAsB,YAAyB;AAAA,QACvD,OAAO,KAAK,2BACV,QACA,eAAe,cAAc,YAAY,GACzC;AAAA,UACE,MAAM;AAAA,QACR,CACF;AAAA;AAAA,MAEF,QAAQ,CAAC,iBAAyB;AAAA,QAChC,OAAO,KAAK,2BACV,UACA,eAAe,cAAc,YAAY,CAC3C;AAAA;AAAA,MAEF,QAAQ,CACN,cACA,UACA,UAAgC,CAAC,MAC9B;AAAA,QACH,OAAO,KAAK,2BACV,OACA,eAAe,cAAc,YAAY,GACzC;AAAA,UACE,MAAM;AAAA,UACN,MAAM,QAAQ;AAAA,QAChB,CACF;AAAA;AAAA,MAEF,SAAS,CAAC,cAAsB,UAAkC,CAAC,MAAM;AAAA,QACvE,OAAO,KAAK,2BAA2B,OAAO,eAAe,YAAY,GAAG;AAAA,UAC1E,MAAM;AAAA,YACJ,SAAS;AAAA,eACL,QAAQ,aAAa,YAAY,EAAE,UAAU,QAAQ,SAAS,IAAI,CAAC;AAAA,UACzE;AAAA,QACF,CAAC;AAAA;AAAA,IAEL;AAAA,IAEA,MAAM,cAAc,OAClB,cACA,UAA8B,CAAC,MACO;AAAA,MACtC,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,eAAe,YAAY,GAC3B;AAAA,QACE,OAAO,QAAQ,OAAO,EAAE,WAAW,EAAE,IAAI;AAAA,MAC3C,CACF;AAAA,MACA,OAAO,EAAE,OAAO,SAAS,OAAO,KAAK,GAAG,MAAM,OAAO,KAAK;AAAA;AAAA,IAG5D,MAAM,iBAAiB,CACrB,cACA,UACA,UAAgC,CAAC,MACL;AAAA,MAC5B,OAAO,KAAK,2BAA2B,OAAO,eAAe,YAAY,GAAG;AAAA,QAC1E,MAAM;AAAA,QACN,MAAM,QAAQ;AAAA,MAChB,CAAC;AAAA;AAAA,IAGH,MAAM,eAAe,CACnB,cACA,MACA,UAA+B,CAAC,MACJ;AAAA,MAC5B;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,UACE;AAAA,MACJ,MAAM,SAAS,eACX,GAAG,gBAAgB,iBACnB;AAAA,MACJ,MAAM,gBAA6B;AAAA,QACjC,MAAM;AAAA,QACN;AAAA,MACF;AAAA,MAEA,IAAI,eAAe;AAAA,QACjB,cAAc,UAAU;AAAA,MAC1B;AAAA,MAEA,IAAI,SAAS,WAAW;AAAA,QACtB,cAAc,OAAO;AAAA,MACvB;AAAA,MAEA,IAAI,iBAAiB,WAAW;AAAA,QAC9B,cAAc,gBAAgB;AAAA,MAChC;AAAA,MAEA,IAAI,YAAY,WAAW;AAAA,QACzB,cAAc,UAAU;AAAA,MAC1B;AAAA,MAEA,IAAI,wBAAwB,WAAW;AAAA,QACrC,cAAc,wBAAwB;AAAA,MACxC;AAAA,MAEA,IAAI,sBAAsB,WAAW;AAAA,QACnC,cAAc,qBAAqB;AAAA,MACrC;AAAA,MAEA,OAAO,KAAK,2BACV,QACA,kBACA;AAAA,QACE,MAAM;AAAA,UACJ;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MACF,CACF;AAAA;AAAA,IAGF,MAAM,iBAAiB,CACrB,cACA,YAC4B;AAAA,MAC5B,OAAO,KAAK,2BAA2B,QAAQ,eAAe,YAAY,GAAG,EAAE,MAAM,QAAQ,CAAC;AAAA;AAAA,IAGhG,MAAM,kBAAkB,CACtB,cACA,YAC4B;AAAA,MAC5B,OAAO,KAAK,2BAA2B,QAAQ,eAAe,YAAY,GAAG,EAAE,MAAM,QAAQ,CAAC;AAAA;AAAA,IAGhG,MAAM,iBAAiB,CAAC,iBAAkD;AAAA,MACxE,OAAO,KAAK,2BAA2B,UAAU,eAAe,YAAY,CAAC;AAAA;AAAA,IAG/E,MAAM,kBAAkB,CACtB,cACA,YAC4B;AAAA,MAC5B,OAAO,KAAK,2BAA2B,QAAQ,GAAG,eAAe,YAAY,aAAa;AAAA,QACxF,MAAM;AAAA,MACR,CAAC;AAAA;AAAA,IAGH,MAAM,gBAAgB,OAAO,iBAA4D;AAAA,MACvF,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,GAAG,eAAe,YAAY,SAChC;AAAA,MACA,OAAO,EAAE,OAAO,SAAS,OAAO,KAAK,GAAG,MAAM,OAAO,KAAK;AAAA;AAAA,IAG5D,MAAM,mBAAmB,CACvB,cACA,OACA,UAAgC,CAAC,MACL;AAAA,MAC5B,OAAO,KAAK,2BAA2B,OAAO,GAAG,eAAe,YAAY,WAAW;AAAA,QACrF,MAAM;AAAA,QACN,MAAM,QAAQ;AAAA,MAChB,CAAC;AAAA;AAAA,IAGH,MAAM,iBAAiB,OAAO,iBAA+C;AAAA,MAC3E,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,GAAG,eAAe,YAAY,UAChC;AAAA,MACA,OAAO,SAAS,OAAO,KAAK;AAAA;AAAA,IAG9B,MAAM,eAAe,CACnB,cACA,SACA,YACqB;AAAA,MACrB,MAAM,OAAO,GAAG,eAAe,YAAY;AAAA,MAC3C,MAAM,OAAO,KAAK,QAAQ;AAAA,MAC1B,MAAM,iBAAiB,KAAK,mBAAmB,OAAO,KAAK,KAAK,iBAAiB,OAAO;AAAA,MACxF,IAAI,kBAAkB,CAAC,wBAAwB,IAAI,GAAG;AAAA,QACpD,KAAK,wBAAwB;AAAA,MAC/B;AAAA,MAEA,MAAM,aAAa,KAAK,aAAa,SAAS,MAAM;AAAA,MACpD,MAAM,aAAa,KAAK,aAAa,SAAS,MAAM;AAAA,MACpD,MAAM,cAAc,iBAA6B;AAAA,MACjD,MAAM,cAAc,iBAA6B;AAAA,MACjD,MAAM,cAAc,iBAAuC;AAAA,MAC3D,IAAI,aAAa;AAAA,MACjB,IAAI,aAAa;AAAA,MAEjB,MAAM,oBAAoB,MAAM;AAAA,QAC9B,IAAI,CAAC,cAAc,CAAC,YAAY;AAAA,UAC9B,YAAY,MAAM;AAAA,QACpB;AAAA;AAAA,MAGF,MAAM,cAAc,MAAM;AAAA,QACxB,IAAI,CAAC,YAAY;AAAA,UACf;AAAA,QACF;AAAA,QAEA,aAAa;AAAA,QACb,YAAY,MAAM;AAAA,QAClB,kBAAkB;AAAA;AAAA,MAGpB,MAAM,cAAc,MAAM;AAAA,QACxB,IAAI,CAAC,YAAY;AAAA,UACf;AAAA,QACF;AAAA,QAEA,aAAa;AAAA,QACb,YAAY,MAAM;AAAA,QAClB,kBAAkB;AAAA;AAAA,MAGpB,MAAM,gBAAgB,CAAC,UAAmB;AAAA,QACxC,aAAa;AAAA,QACb,aAAa;AAAA,QACb,YAAY,KAAK,KAAK;AAAA,QACtB,YAAY,KAAK,KAAK;AAAA,QACtB,YAAY,KAAK,KAAK;AAAA;AAAA,MAGxB,MAAM,kBAAkB,YAAqC;AAAA,QAC3D,MAAM,SAAS,MAAM,KAAK,gBAA6B,QAAQ,MAAM;AAAA,UACnE;AAAA,UACA,QAAQ,SAAS;AAAA,QACnB,CAAC;AAAA,QACD,MAAM,YAAY,KAAK,kCAAkC,QAAQ,MAAM,MAAM;AAAA,QAE7E,IAAI,gBAAgB;AAAA,UAClB,MAAM,WAAW,MAAM,KAAK,qBAAqB,WAAW,MAAM,SAAS,OAAO,OAAO;AAAA,YACvF,eAAe,aACX,CAAC,UAAU;AAAA,cACX,YAAY,KAAK,KAAK;AAAA,cACtB,YAAY,KAAK,EAAE,QAAQ,UAAU,MAAM,CAAC;AAAA,gBAE5C;AAAA,YACJ,eAAe,aACX,CAAC,UAAU;AAAA,cACX,YAAY,KAAK,KAAK;AAAA,cACtB,YAAY,KAAK,EAAE,QAAQ,UAAU,MAAM,CAAC;AAAA,gBAE5C;AAAA,YACJ,eAAe,aACX,CAAC,UAAU;AAAA,cACX,aAAa;AAAA,cACb,YAAY,KAAK,KAAK;AAAA,cACtB,kBAAkB;AAAA,gBAElB;AAAA,YACJ,eAAe,aACX,CAAC,UAAU;AAAA,cACX,aAAa;AAAA,cACb,YAAY,KAAK,KAAK;AAAA,cACtB,kBAAkB;AAAA,gBAElB;AAAA,YACJ,eAAe,aAAa,cAAc;AAAA,YAC1C,eAAe,aAAa,cAAc;AAAA,UAC5C,CAAC;AAAA,UAED,IAAI,cAAc,CAAC,SAAS,WAAW;AAAA,YACrC,YAAY;AAAA,UACd;AAAA,UAEA,IAAI,cAAc,CAAC,SAAS,WAAW;AAAA,YACrC,YAAY;AAAA,UACd;AAAA,QACF,EAAO;AAAA,UACL,aAAa;AAAA,UACb,aAAa;AAAA,UACb,YAAY,MAAM;AAAA,UAClB,YAAY,MAAM;AAAA,UAClB,YAAY,MAAM;AAAA;AAAA,QAGpB,IAAI,CAAC,YAAY;AAAA,UACf,aAAa;AAAA,UACb,YAAY,MAAM;AAAA,QACpB;AAAA,QAEA,IAAI,CAAC,YAAY;AAAA,UACf,aAAa;AAAA,UACb,YAAY,MAAM;AAAA,QACpB;AAAA,QAEA,kBAAkB;AAAA,QAElB,OAAO;AAAA,SACN,EAAE,MAAM,CAAC,UAAU;AAAA,QACpB,cAAc,KAAK;AAAA,QACnB,MAAM;AAAA,OACP;AAAA,MAED,MAAM,aAAa,OACjB,cAAyC,CAAC,MACb;AAAA,QAC7B,MAAM,YAAY,MAAM;AAAA,QACxB,MAAM,WAAW,MAAM,UAAU,KAAK,WAAW;AAAA,QACjD,MAAM,QAAQ,IAAI,CAAC,YAAY,MAAM,YAAY,IAAI,CAAC;AAAA,QACtD,OAAO,aAAa,QAAQ;AAAA;AAAA,MAG9B,IAAI;AAAA,MACJ,MAAM,0BAA0B,MAAM;AAAA,QACpC,yBAAyB,WAAW;AAAA,QACpC,OAAO;AAAA;AAAA,MAGT,IAAI,cAAc;AAAA,MACb,eAAe,KAAK,CAAC,cAAc;AAAA,QACtC,cAAc,UAAU;AAAA,OACzB,EAAE,MAAM,MAAM,EAEd;AAAA,MAED,OAAO;AAAA,YACD,EAAE,GAAW;AAAA,UACf,OAAO;AAAA;AAAA,QAET,MAAM,CAAC,cAAyC,CAAC,MAC/C,eAAe,KAAK,CAAC,cAAc,UAAU,KAAK,WAAW,CAAC;AAAA,QAEhE,QAAQ,MAAM,eAAe,KAAK,CAAC,cAAc,UAAU,OAAO,CAAC;AAAA,QACnE,SAAS,MAAM,eAAe,KAAK,CAAC,cAAc,UAAU,QAAQ,CAAC;AAAA,QACrE,WAAW,CAAC,WAAmB,eAAe,KAAK,CAAC,cAAc,UAAU,UAAU,MAAM,CAAC;AAAA,QAC7F,UAAU,CAAC,YACT,eAAe,KAAK,CAAC,cAAc,UAAU,SAAS,OAAO,CAAC;AAAA,QAEhE,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,QACpB,QAAQ,MAAM,YAAY;AAAA,QAC1B;AAAA,QACA,MAAM,CACJ,aACA,eAEA,wBAAwB,EAAE,KAAK,aAAa,UAAU;AAAA,QAExD,OAAO,CACL,eAEA,wBAAwB,EAAE,MAAM,UAAU;AAAA,QAE5C,SAAS,CAAC,cACR,wBAAwB,EAAE,QAAQ,aAAa,SAAS;AAAA,SAEzD,OAAO,gBAAgB,MAAM,YAAY,SAAS,OAAO,eAAe;AAAA,MAC3E;AAAA;AAAA,IAGF,MAAM,kBAAkB,CACtB,cACA,SACA,YAC4B;AAAA,MAC5B,OAAO,KAAK,2BACV,QACA,GAAG,eAAe,YAAY,aAC9B;AAAA,QACE,MAAM;AAAA,QACN,QAAQ,SAAS;AAAA,MACnB,CACF;AAAA;AAAA,IAGF,MAAM,mBAAmB,OAAO,iBAA4D;AAAA,MAC1F,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,GAAG,eAAe,YAAY,YAChC;AAAA,MACA,OAAO,EAAE,OAAO,SAAS,OAAO,KAAK,GAAG,MAAM,OAAO,KAAK;AAAA;AAAA,IAG5D,MAAM,yBAAyB,OAC7B,cACA,UACA,UAAgC,CAAC,MACf;AAAA,MAClB,MAAM,KAAK,gBAAgB,OAAO,GAAG,eAAe,YAAY,cAAc;AAAA,QAC5E,MAAM;AAAA,QACN,MAAM,QAAQ;AAAA,MAChB,CAAC;AAAA;AAAA,IAGH,MAAM,sBAAsB,OAC1B,cACA,SAAS,UAC+B;AAAA,MACxC,MAAM,SAAS,MAAM,KAAK,cACxB,OACA,GAAG,eAAe,YAAY,kBAC9B;AAAA,QACE,OAAO;AAAA,UACL;AAAA,UACA,iBAAiB;AAAA,QACnB;AAAA,MACF,CACF;AAAA,MACA,OAAO,iBAAiB,OAAO,KAAK;AAAA;AAAA,IAGtC,MAAM,uBAAuB,CAAC,iBAAsC;AAAA,MAClE,MAAM,OAAO,cAAc,YAAY;AAAA,MACvC,MAAM,QAAQ,eAAe,YAAY;AAAA,MACzC,MAAM,YAAY,mBAAmB,YAAY;AAAA,MAEjD,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,CAAC,UAAU,CAAC,MAAM,YAAY,cAAc,OAAO;AAAA,QACxD,MAAM,CAAC,MAAc,UAA+B,CAAC,MACnD,aAAa,cAAc,MAAM,OAAO;AAAA,QAE1C,QAAQ,CAAC,UAAuB,UAAgC,CAAC,MAC/D,eAAe,cAAc,UAAU,OAAO;AAAA,QAEhD,QAAQ,CAAC,YAAyB,eAAe,cAAc,OAAO;AAAA,QACtE,SAAS,CAAC,YAAyB,gBAAgB,cAAc,OAAO;AAAA,QACxE,QAAQ,MAAM,eAAe,YAAY;AAAA,QACzC,SAAS,CAAC,YAAyB,gBAAgB,cAAc,OAAO;AAAA,QACxE,kBAAkB,OAChB,SACA,QACA,aACG,gCAAgC,IAAI;AAAA,QACzC,SAAS,CAAC,cAAsB,UAAkC,CAAC,MACjE,UAAU,QAAQ,cAAc,OAAO;AAAA,QAEzC,OAAO,MAAM,cAAc,YAAY;AAAA,QACvC,UAAU,CAAC,OAAoB,UAAgC,CAAC,MAC9D,iBAAiB,cAAc,OAAO,OAAO;AAAA,QAE/C,QAAQ,MAAM,eAAe,YAAY;AAAA,QACzC,MAAM,CAAC,SAAsB,YAC3B,aAAa,cAAc,SAAS,OAAO;AAAA,QAE7C,SAAS,CAAC,SAAsB,YAC9B,gBAAgB,cAAc,SAAS,OAAO;AAAA,QAEhD,gBAAgB,YAAY;AAAA,UAC1B,MAAM,IAAI,MAAM,0DAA0D;AAAA;AAAA,QAE5E,UAAU,MAAM,iBAAiB,YAAY;AAAA,QAC7C,gBAAgB,CAAC,UAAuB,UAAgC,CAAC,MACvE,uBAAuB,cAAc,UAAU,OAAO;AAAA,QAExD,aAAa,CAAC,SAAS,UAAU,oBAAoB,cAAc,MAAM;AAAA,QACzE;AAAA,QACA;AAAA,QACA,WAAW,0BAA0B,CAAC,aAAa,WAAW,CAAC;AAAA,QAC/D;AAAA,QACA,SAAS,0BAA0B,CAAC,aAAa,SAAS,CAAC;AAAA,MAC7D;AAAA;AAAA,IAGF,OAAO,sBAAoC,aAAa;AAAA,MACtD,OAAO,OAAO,UAAU,CAAC,MAAM;AAAA,QAC7B,IAAI,QAAQ,aAAa;AAAA,UACvB,MAAM,SAA+D;AAAA,YACnE,WAAW;AAAA,YACX,gBAAgB;AAAA,UAClB;AAAA,UACA,IAAI,QAAQ,MAAM;AAAA,YAChB,OAAM,mBAAmB,QAAQ;AAAA,UACnC;AAAA,UAEA,MAAM,UAAS,MAAM,KAAK,gBACxB,OACA,kBACA,EAAE,cAAM,CACV;AAAA,UACA,MAAM,UAAU,cAAc,QAAO,KAAK;AAAA,UAC1C,MAAM,UAAoC,CAAC;AAAA,UAC3C,WAAW,UAAU,SAAS;AAAA,YAC5B,MAAM,UAAU,OAAO,OAAO,YAAY,WACtC,OAAO,UACP;AAAA,YACJ,MAAM,OAAO,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO;AAAA,YAC7D,IAAI,CAAC,MAAM;AAAA,cACT;AAAA,YACF;AAAA,YAEA,QAAQ,aAAa,CAAC;AAAA,YACtB,QAAQ,SAAS,KAAK,IAAI;AAAA,UAC5B;AAAA,UAEA,OAAO;AAAA,QACT;AAAA,QAEA,MAAM,QAA+D,CAAC;AAAA,QACtE,IAAI,QAAQ,MAAM;AAAA,UAChB,MAAM,mBAAmB,QAAQ;AAAA,QACnC;AAAA,QAEA,MAAM,SAAS,MAAM,KAAK,gBAA2B,OAAO,kBAAkB;AAAA,UAC5E;AAAA,QACF,CAAC;AAAA,QACD,OAAO,oBAAoB,cAAc,cAAc,OAAO,KAAK,CAAC;AAAA;AAAA,MAEtE,MAAM,OAAO,UAAU,CAAC,MAAM;AAAA,QAC5B,MAAM,QAA+D;AAAA,UACnE,WAAW,QAAQ,OAAO,IAAI;AAAA,QAChC;AAAA,QAEA,IAAI,QAAQ,MAAM;AAAA,UAChB,MAAM,mBAAmB,QAAQ;AAAA,QACnC;AAAA,QAEA,IAAI,QAAQ,aAAa;AAAA,UACvB,MAAM,kBAAkB;AAAA,QAC1B;AAAA,QAEA,IAAI,QAAQ,UAAU,QAAQ,OAAO,SAAS,GAAG;AAAA,UAC/C,MAAM,SAAS,aAAa,QAAQ,MAAM;AAAA,QAC5C;AAAA,QAEA,MAAM,SAAS,MAAM,KAAK,gBACxB,OACA,kBACA,EAAE,MAAM,CACV;AAAA,QACA,OAAO,cAAc,OAAO,KAAK;AAAA;AAAA,MAEnC,UAAU,CAAC,SAAiB,qBAAqB,IAAI;AAAA,MACrD,QAAQ,CAAC,aAA0B;AAAA,QACjC,OAAO,KAAK,2BAA2B,QAAQ,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAAA;AAAA,MAErF,iBAAiB,OACf,SACA,QACA,aACG,gCAAgC,IAAI;AAAA,MACzC,kBAAkB,CAAC,SAAsB;AAAA,QACvC,OAAO,KAAK,2BAA2B,QAAQ,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAAA;AAAA,MAEjF,UAAU,OACR,SACA,WACA,aACG,gCAAgC,IAAI;AAAA,MACzC,YAAY,CAAC,OAAoB,UAAgC,CAAC,MAAM;AAAA,QACtE,OAAO,KAAK,2BAA2B,OAAO,kBAAkB;AAAA,UAC9D,MAAM;AAAA,UACN,MAAM,QAAQ;AAAA,QAChB,CAAC;AAAA;AAAA,IAEL,CAAC;AAAA;AAEL;AAAA;AAEO,MAAM,MAAM;AAAA,cACJ,QAAO,CAClB,UACA,UAAkC,CAAC,GACb;AAAA,IACtB,MAAM,aAAa,kBAAkB,QAAQ;AAAA,IAC7C,MAAM,aAAuC,EAAE,MAAM,SAAS,UAAU,WAAW;AAAA,IACnF,OAAO,IAAI,YACT,IAAI,eAAe,YAAY,OAAO,GACtC,YACA,SACA,CAAC,GACD,OACF;AAAA;AAAA,cAGW,YAAW,CACtB,UAAmC,CAAC,GACd;AAAA,IACtB,MAAM,WAAW,kBAAkB,QAAQ,YAAY,uBAAuB;AAAA,IAC9E,MAAM,aAAuC,EAAE,MAAM,cAAc,SAAS;AAAA,IAC5E,OAAO,IAAI,YACT,IAAI,eAAe,YAAY,OAAO,GACtC,UACA,SACA,CAAC,GACD,YACF;AAAA;AAAA,cAGW,YAAW,CACtB,UAAmC,CAAC,GACd;AAAA,IACtB,MAAM,aAAa,QAAQ,cAAc;AAAA,IACzC,MAAM,WAAW,UAAU;AAAA,IAC3B,MAAM,aAAuC;AAAA,MAC3C,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA,IAEA,OAAO,IAAI,YACT,IAAI,oBAAoB,YAAY,OAAO,GAC3C,UACA,SACA,CAAC,GACD,YACF;AAAA;AAAA,cAGW,cAAa,CACxB,UACA,UAAkC,CAAC,GACR;AAAA,IAC3B,MAAM,aAAa,kBAAkB,QAAQ;AAAA,IAC7C,MAAM,aAAuC;AAAA,MAC3C,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,OAAO,IAAI,iBACT,IAAI,eAAe,YAAY,OAAO,GACtC,YACA,SACA,CAAC,GACD,cACF;AAAA;AAAA,cAGW,qBAAoB,CAC/B,UACA,UAAqC,CAAC,GACX;AAAA,IAC3B,MAAM,aAAa,kBAAkB,QAAQ;AAAA,IAC7C,MAAM,aAAuC;AAAA,MAC3C,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,OAAO,IAAI,iBACT,IAAI,eAAe,YAAY,OAAO,GACtC,YACA,SACA,CAAC,GACD,gBACF;AAAA;AAAA,SAGK,aAAa,CAClB,UACA,WACA,UAAkC,CAAC,GACtB;AAAA,IACb,OAAO,IAAI,YAAY,WAAW,kBAAkB,QAAQ,GAAG,OAAO;AAAA;AAAA,SAGjE,kBAAkB,CACvB,UACA,WACA,UAAkC,CAAC,GACjB;AAAA,IAClB,OAAO,IAAI,iBAAiB,WAAW,kBAAkB,QAAQ,GAAG,OAAO;AAAA;AAE/E;",
8
+ "debugId": "CB710D5B804F079364756E2164756E21",
9
9
  "names": []
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "incus-ts",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Lightweight TypeScript API for Incus",
5
5
  "repository": {
6
6
  "type": "git",