tsarr 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +5 -3
  2. package/dist/cli/commands/config.d.ts.map +1 -1
  3. package/dist/cli/commands/doctor.d.ts.map +1 -1
  4. package/dist/cli/commands/qbit.d.ts +4 -0
  5. package/dist/cli/commands/qbit.d.ts.map +1 -0
  6. package/dist/cli/commands/service.d.ts +1 -2
  7. package/dist/cli/commands/service.d.ts.map +1 -1
  8. package/dist/cli/config.d.ts +6 -4
  9. package/dist/cli/config.d.ts.map +1 -1
  10. package/dist/cli/index.js +1601 -301
  11. package/dist/clients/bazarr.js +7 -7
  12. package/dist/clients/lidarr.js +7 -7
  13. package/dist/clients/prowlarr.js +7 -7
  14. package/dist/clients/qbittorrent-types.d.ts +2 -0
  15. package/dist/clients/qbittorrent-types.d.ts.map +1 -0
  16. package/dist/clients/qbittorrent.d.ts +40 -0
  17. package/dist/clients/qbittorrent.d.ts.map +1 -0
  18. package/dist/clients/qbittorrent.js +1011 -0
  19. package/dist/clients/radarr.js +7 -7
  20. package/dist/clients/readarr.js +7 -7
  21. package/dist/clients/sonarr.js +7 -7
  22. package/dist/core/types.d.ts +6 -0
  23. package/dist/core/types.d.ts.map +1 -1
  24. package/dist/generated/bazarr/client/client.gen.d.ts.map +1 -1
  25. package/dist/generated/bazarr/client/types.gen.d.ts +1 -1
  26. package/dist/generated/bazarr/core/serverSentEvents.gen.d.ts +1 -1
  27. package/dist/generated/bazarr/core/serverSentEvents.gen.d.ts.map +1 -1
  28. package/dist/generated/bazarr/sdk.gen.d.ts +1 -1
  29. package/dist/generated/bazarr/sdk.gen.d.ts.map +1 -1
  30. package/dist/generated/lidarr/client/client.gen.d.ts.map +1 -1
  31. package/dist/generated/lidarr/client/types.gen.d.ts +1 -1
  32. package/dist/generated/lidarr/core/serverSentEvents.gen.d.ts +1 -1
  33. package/dist/generated/lidarr/core/serverSentEvents.gen.d.ts.map +1 -1
  34. package/dist/generated/lidarr/sdk.gen.d.ts +1 -1
  35. package/dist/generated/lidarr/sdk.gen.d.ts.map +1 -1
  36. package/dist/generated/prowlarr/client/client.gen.d.ts.map +1 -1
  37. package/dist/generated/prowlarr/client/types.gen.d.ts +1 -1
  38. package/dist/generated/prowlarr/core/serverSentEvents.gen.d.ts +1 -1
  39. package/dist/generated/prowlarr/core/serverSentEvents.gen.d.ts.map +1 -1
  40. package/dist/generated/prowlarr/sdk.gen.d.ts +1 -1
  41. package/dist/generated/prowlarr/sdk.gen.d.ts.map +1 -1
  42. package/dist/generated/qbittorrent/client/client.gen.d.ts +3 -0
  43. package/dist/generated/qbittorrent/client/client.gen.d.ts.map +1 -0
  44. package/dist/generated/qbittorrent/client/index.d.ts +9 -0
  45. package/dist/generated/qbittorrent/client/index.d.ts.map +1 -0
  46. package/dist/generated/qbittorrent/client/types.gen.d.ts +118 -0
  47. package/dist/generated/qbittorrent/client/types.gen.d.ts.map +1 -0
  48. package/dist/generated/qbittorrent/client/utils.gen.d.ts +34 -0
  49. package/dist/generated/qbittorrent/client/utils.gen.d.ts.map +1 -0
  50. package/dist/generated/qbittorrent/client.gen.d.ts +13 -0
  51. package/dist/generated/qbittorrent/client.gen.d.ts.map +1 -0
  52. package/dist/generated/qbittorrent/core/auth.gen.d.ts +19 -0
  53. package/dist/generated/qbittorrent/core/auth.gen.d.ts.map +1 -0
  54. package/dist/generated/qbittorrent/core/bodySerializer.gen.d.ts +26 -0
  55. package/dist/generated/qbittorrent/core/bodySerializer.gen.d.ts.map +1 -0
  56. package/dist/generated/qbittorrent/core/params.gen.d.ts +44 -0
  57. package/dist/generated/qbittorrent/core/params.gen.d.ts.map +1 -0
  58. package/dist/generated/qbittorrent/core/pathSerializer.gen.d.ts +34 -0
  59. package/dist/generated/qbittorrent/core/pathSerializer.gen.d.ts.map +1 -0
  60. package/dist/generated/qbittorrent/core/queryKeySerializer.gen.d.ts +19 -0
  61. package/dist/generated/qbittorrent/core/queryKeySerializer.gen.d.ts.map +1 -0
  62. package/dist/generated/qbittorrent/core/serverSentEvents.gen.d.ts +72 -0
  63. package/dist/generated/qbittorrent/core/serverSentEvents.gen.d.ts.map +1 -0
  64. package/dist/generated/qbittorrent/core/types.gen.d.ts +79 -0
  65. package/dist/generated/qbittorrent/core/types.gen.d.ts.map +1 -0
  66. package/dist/generated/qbittorrent/core/utils.gen.d.ts +20 -0
  67. package/dist/generated/qbittorrent/core/utils.gen.d.ts.map +1 -0
  68. package/dist/generated/qbittorrent/index.d.ts +3 -0
  69. package/dist/generated/qbittorrent/index.d.ts.map +1 -0
  70. package/dist/generated/qbittorrent/sdk.gen.d.ts +453 -0
  71. package/dist/generated/qbittorrent/sdk.gen.d.ts.map +1 -0
  72. package/dist/generated/qbittorrent/types.gen.d.ts +3689 -0
  73. package/dist/generated/qbittorrent/types.gen.d.ts.map +1 -0
  74. package/dist/generated/radarr/client/client.gen.d.ts.map +1 -1
  75. package/dist/generated/radarr/client/types.gen.d.ts +1 -1
  76. package/dist/generated/radarr/core/serverSentEvents.gen.d.ts +1 -1
  77. package/dist/generated/radarr/core/serverSentEvents.gen.d.ts.map +1 -1
  78. package/dist/generated/radarr/sdk.gen.d.ts +1 -1
  79. package/dist/generated/radarr/sdk.gen.d.ts.map +1 -1
  80. package/dist/generated/readarr/client/client.gen.d.ts.map +1 -1
  81. package/dist/generated/readarr/client/types.gen.d.ts +1 -1
  82. package/dist/generated/readarr/core/serverSentEvents.gen.d.ts +1 -1
  83. package/dist/generated/readarr/core/serverSentEvents.gen.d.ts.map +1 -1
  84. package/dist/generated/readarr/sdk.gen.d.ts +1 -1
  85. package/dist/generated/readarr/sdk.gen.d.ts.map +1 -1
  86. package/dist/generated/sonarr/client/client.gen.d.ts.map +1 -1
  87. package/dist/generated/sonarr/client/types.gen.d.ts +1 -1
  88. package/dist/generated/sonarr/core/serverSentEvents.gen.d.ts +1 -1
  89. package/dist/generated/sonarr/core/serverSentEvents.gen.d.ts.map +1 -1
  90. package/dist/generated/sonarr/sdk.gen.d.ts +1 -1
  91. package/dist/generated/sonarr/sdk.gen.d.ts.map +1 -1
  92. package/dist/index.d.ts +2 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +30 -31
  95. package/dist/tsarr-2.6.0.tgz +0 -0
  96. package/package.json +16 -8
  97. package/dist/tsarr-2.5.0.tgz +0 -0
package/README.md CHANGED
@@ -5,12 +5,13 @@
5
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
6
6
  [![Node.js](https://img.shields.io/badge/Node.js-339933?style=flat-square&logo=node.js&logoColor=white)](https://nodejs.org/)
7
7
  [![npm](https://img.shields.io/npm/v/tsarr?style=flat-square)](https://www.npmjs.com/package/tsarr)
8
+ [![npm downloads](https://img.shields.io/npm/dm/tsarr?style=flat-square)](https://www.npmjs.com/package/tsarr)
8
9
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)
9
10
  [![CI](https://github.com/robbeverhelst/Tsarr/workflows/CI/badge.svg)](https://github.com/robbeverhelst/Tsarr/actions)
10
11
 
11
12
  **A Radarr CLI, Sonarr CLI, and type-safe TypeScript SDK for the entire Servarr ecosystem.**
12
13
 
13
- Tsarr is a unified command-line tool and TypeScript SDK for managing Radarr, Sonarr, Lidarr, Readarr, Prowlarr, and Bazarr. Auto-generated from official OpenAPI specs, it gives you type-safe API clients and a powerful CLI to manage your entire *arr media stack from code or the terminal.
14
+ Tsarr is a unified command-line tool and TypeScript SDK for managing Radarr, Sonarr, Lidarr, Readarr, Prowlarr, Bazarr, and qBittorrent. Auto-generated from official OpenAPI specs, it gives you type-safe API clients and a powerful CLI to manage your entire *arr media stack from code or the terminal.
14
15
 
15
16
  ## Why Tsarr?
16
17
 
@@ -36,6 +37,7 @@ Tsarr is a unified command-line tool and TypeScript SDK for managing Radarr, Son
36
37
  - **Readarr** - Book collection manager
37
38
  - **Prowlarr** - Indexer manager
38
39
  - **Bazarr** - Subtitle manager
40
+ - **qBittorrent** - Download client
39
41
 
40
42
  ## Installation
41
43
 
@@ -271,7 +273,7 @@ Looking for a Radarr CLI or Sonarr API client? Here's how Tsarr compares:
271
273
  | Feature | Tsarr | Manual API calls |
272
274
  |---------|-------|-----------------|
273
275
  | Type safety | ✅ Full TypeScript types | ❌ None |
274
- | All *arr apps | ✅ 6 apps in one package | ⚠️ DIY per app |
276
+ | All *arr apps | ✅ 7 apps in one package | ⚠️ DIY per app |
275
277
  | CLI included | ✅ Built-in | ❌ No |
276
278
  | Auto-generated | ✅ From official specs | ❌ Manual |
277
279
  | Runtime | Node.js / Bun / standalone | curl |
@@ -291,4 +293,4 @@ MIT - see [LICENSE](LICENSE) file for details.
291
293
 
292
294
  ---
293
295
 
294
- <sub>**Search terms:** radarr cli · sonarr cli · lidarr cli · readarr cli · prowlarr cli · bazarr cli · servarr api client · arr typescript · selfhosted media automation</sub>
296
+ <sub>**Search terms:** radarr cli · sonarr cli · lidarr cli · readarr cli · prowlarr cli · bazarr cli · qbittorrent cli · servarr api client · arr typescript · selfhosted media automation</sub>
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AA4KA,eAAO,MAAM,MAAM,qDAWjB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AA2LA,eAAO,MAAM,MAAM,qDAWjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;EAsFjB,CAAC"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;EAsFjB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ResourceDef } from './service.js';
2
+ export declare const resources: ResourceDef[];
3
+ export declare const qbit: import("citty").CommandDef<import("citty").ArgsDef>;
4
+ //# sourceMappingURL=qbit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qbit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/qbit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,eAAO,MAAM,SAAS,EAAE,WAAW,EAkFlC,CAAC;AAEF,eAAO,MAAM,IAAI,qDAKhB,CAAC"}
@@ -1,4 +1,3 @@
1
- import type { ServarrClientConfig } from '../../core/types.js';
2
1
  export interface ActionArg {
3
2
  name: string;
4
3
  description: string;
@@ -21,5 +20,5 @@ export interface ResourceDef {
21
20
  }
22
21
  export declare const COMMAND_OUTPUT_COLUMNS: string[];
23
22
  export declare function limitResults<T>(results: T[], limit: number | undefined): T[];
24
- export declare function buildServiceCommand(serviceName: string, description: string, clientFactory: (config: ServarrClientConfig) => any, resources: ResourceDef[]): import("citty").CommandDef<import("citty").ArgsDef>;
23
+ export declare function buildServiceCommand(serviceName: string, description: string, clientFactory: (config: any) => any, resources: ResourceDef[]): import("citty").CommandDef<import("citty").ArgsDef>;
25
24
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK/D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,sBAAsB,UAA0D,CAAC;AAE9F,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,EAAE,CAM5E;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,GAAG,EACnD,SAAS,EAAE,WAAW,EAAE,uDA+JzB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/service.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,sBAAsB,UAA0D,CAAC;AAE9F,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,EAAE,CAM5E;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,EACnC,SAAS,EAAE,WAAW,EAAE,uDAqKzB"}
@@ -1,8 +1,10 @@
1
- import type { ServarrClientConfig } from '../core/types.js';
1
+ import type { QBittorrentClientConfig, ServarrClientConfig } from '../core/types.js';
2
2
  export interface ServiceConfig {
3
3
  baseUrl: string;
4
- apiKey: string;
4
+ apiKey?: string;
5
5
  apiKeyFile?: string;
6
+ username?: string;
7
+ password?: string;
6
8
  timeout?: number;
7
9
  }
8
10
  export interface TsarrCliConfig {
@@ -11,11 +13,11 @@ export interface TsarrCliConfig {
11
13
  output?: 'json' | 'table' | 'quiet';
12
14
  };
13
15
  }
14
- declare const SERVICES: readonly ["radarr", "sonarr", "lidarr", "readarr", "prowlarr", "bazarr"];
16
+ declare const SERVICES: readonly ["radarr", "sonarr", "lidarr", "readarr", "prowlarr", "bazarr", "qbittorrent"];
15
17
  declare const GLOBAL_CONFIG_PATH: string;
16
18
  declare const LOCAL_CONFIG_NAME = ".tsarr.json";
17
19
  export declare function loadConfig(): TsarrCliConfig;
18
- export declare function getServiceConfig(serviceName: string): ServarrClientConfig | null;
20
+ export declare function getServiceConfig(serviceName: string): ServarrClientConfig | QBittorrentClientConfig | null;
19
21
  export declare function saveGlobalConfig(config: TsarrCliConfig): void;
20
22
  export declare function saveLocalConfig(config: TsarrCliConfig): void;
21
23
  export declare function getConfigValue(key: string): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;KACrC,CAAC;CACH;AAED,QAAA,MAAM,QAAQ,0EAA2E,CAAC;AAE1F,QAAA,MAAM,kBAAkB,QAAyC,CAAC;AAClE,QAAA,MAAM,iBAAiB,gBAAgB,CAAC;AAwExC,wBAAgB,UAAU,IAAI,cAAc,CA+B3C;AA0CD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAsBhF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAG7D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAI5D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS9D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,IAAI,CAoB9E;AAcD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAKhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAMnF;AAED,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAErF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;KACrC,CAAC;CACH;AAED,QAAA,MAAM,QAAQ,yFAQJ,CAAC;AAEX,QAAA,MAAM,kBAAkB,QAAyC,CAAC;AAClE,QAAA,MAAM,iBAAiB,gBAAgB,CAAC;AAiFxC,wBAAgB,UAAU,IAAI,cAAc,CA+B3C;AA0CD,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAClB,mBAAmB,GAAG,uBAAuB,GAAG,IAAI,CAgCtD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAG7D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAI5D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS9D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,IAAI,CAoB9E;AAcD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAQhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAMnF;AAED,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC"}