openlimiter 1.2.0 → 1.3.2

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 (55) hide show
  1. package/README.md +45 -16
  2. package/dist/bin.js +53 -4
  3. package/dist/bin.js.map +1 -1
  4. package/dist/cli.d.ts +110 -11
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +1064 -64
  7. package/dist/cli.js.map +1 -1
  8. package/dist/codex-device-login.d.ts +87 -0
  9. package/dist/codex-device-login.d.ts.map +1 -0
  10. package/dist/codex-device-login.js +291 -0
  11. package/dist/codex-device-login.js.map +1 -0
  12. package/dist/config.d.ts +44 -1
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +129 -7
  15. package/dist/config.js.map +1 -1
  16. package/dist/hub-auth.d.ts +137 -0
  17. package/dist/hub-auth.d.ts.map +1 -0
  18. package/dist/hub-auth.js +280 -0
  19. package/dist/hub-auth.js.map +1 -0
  20. package/dist/hub-sync.d.ts +144 -0
  21. package/dist/hub-sync.d.ts.map +1 -0
  22. package/dist/hub-sync.js +370 -0
  23. package/dist/hub-sync.js.map +1 -0
  24. package/dist/hub.d.ts +60 -0
  25. package/dist/hub.d.ts.map +1 -0
  26. package/dist/hub.js +178 -0
  27. package/dist/hub.js.map +1 -0
  28. package/dist/index.d.ts +6 -2
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +6 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/ingest.d.ts +26 -0
  33. package/dist/ingest.d.ts.map +1 -1
  34. package/dist/ingest.js +116 -1
  35. package/dist/ingest.js.map +1 -1
  36. package/dist/qr.d.ts.map +1 -1
  37. package/dist/qr.js +1 -0
  38. package/dist/qr.js.map +1 -1
  39. package/dist/session.d.ts +46 -0
  40. package/dist/session.d.ts.map +1 -0
  41. package/dist/session.js +158 -0
  42. package/dist/session.js.map +1 -0
  43. package/dist/statusline.d.ts +14 -0
  44. package/dist/statusline.d.ts.map +1 -1
  45. package/dist/statusline.js +258 -19
  46. package/dist/statusline.js.map +1 -1
  47. package/dist/terminal.d.ts +109 -0
  48. package/dist/terminal.d.ts.map +1 -0
  49. package/dist/terminal.js +974 -0
  50. package/dist/terminal.js.map +1 -0
  51. package/package.json +4 -4
  52. package/dist/serve.d.ts +0 -170
  53. package/dist/serve.d.ts.map +0 -1
  54. package/dist/serve.js +0 -533
  55. package/dist/serve.js.map +0 -1
package/dist/config.d.ts CHANGED
@@ -13,6 +13,7 @@ export type StatuslineMeters = "worst" | "all";
13
13
  * `never` is how you say it does not, whatever the terminal claims.
14
14
  */
15
15
  export type StatuslineColor = "auto" | "always" | "never";
16
+ export type StatuslineStyle = "bar" | "cells";
16
17
  export interface StatuslineConfig {
17
18
  /**
18
19
  * Provider ids, in the order they should appear.
@@ -29,8 +30,11 @@ export interface StatuslineConfig {
29
30
  /** False restores the single plain line released in 0.1.0. */
30
31
  readonly bars: boolean;
31
32
  readonly color: StatuslineColor;
33
+ readonly style: StatuslineStyle;
34
+ readonly show: readonly string[];
35
+ readonly hosts: Readonly<Record<string, string>>;
32
36
  }
33
- export declare const STATUSLINE_KEYS: readonly ["order", "meters", "width", "rows", "bars", "color"];
37
+ export declare const STATUSLINE_KEYS: readonly ["order", "meters", "width", "rows", "bars", "color", "style", "show", "hosts"];
34
38
  export type StatuslineKey = (typeof STATUSLINE_KEYS)[number];
35
39
  /**
36
40
  * The narrowest and widest budget a row may be given.
@@ -72,6 +76,36 @@ export type StatuslineUpdate = {
72
76
  * enough: a width of `wide` is refused rather than read as the default.
73
77
  */
74
78
  export declare function setStatuslineValue(statusline: StatuslineConfig, key: string, value: string): StatuslineUpdate;
79
+ /**
80
+ * Per provider switches, and the one that matters in this release.
81
+ *
82
+ * Claude's primary source is the status line payload Claude Code hands this
83
+ * command, which is a documented feature and costs nothing. The network poll
84
+ * below exists only for the hours Claude Code is closed, it reads the token
85
+ * Claude Code stored, and Anthropic has written that third parties may not
86
+ * intermediate its credentials. That is a decision a person makes for
87
+ * themselves, so it is OFF until they turn it on, the row says why the bar is
88
+ * older than the others while it is off, and turning it on is one command.
89
+ */
90
+ export interface ProvidersConfig {
91
+ readonly claude: {
92
+ readonly poll: boolean;
93
+ };
94
+ }
95
+ export declare const DEFAULT_PROVIDERS: ProvidersConfig;
96
+ export declare const PROVIDER_KEYS: readonly ["claude.poll"];
97
+ export type ProviderKey = (typeof PROVIDER_KEYS)[number];
98
+ export declare function isProviderKey(key: string): key is ProviderKey;
99
+ export declare function normalizeProviders(value: unknown): ProvidersConfig;
100
+ export declare function providerValueText(providers: ProvidersConfig, key: ProviderKey): string;
101
+ export type ProvidersUpdate = {
102
+ ok: true;
103
+ providers: ProvidersConfig;
104
+ } | {
105
+ ok: false;
106
+ message: string;
107
+ };
108
+ export declare function setProviderValue(providers: ProvidersConfig, key: string, value: string): ProvidersUpdate;
75
109
  export interface ConfigConnector {
76
110
  id: string;
77
111
  enabled: true;
@@ -81,6 +115,7 @@ export interface OpenLimiterConfig {
81
115
  version: 1;
82
116
  connectors: readonly ConfigConnector[];
83
117
  statusline: StatuslineConfig;
118
+ providers: ProvidersConfig;
84
119
  }
85
120
  export declare function writeConfig(config: OpenLimiterConfig, directory?: string): Promise<void>;
86
121
  export type ConfigReadResult = {
@@ -120,4 +155,12 @@ export declare function initialize(environment: Readonly<Record<string, string |
120
155
  * changed, instead of a file that claims no connector exists.
121
156
  */
122
157
  export declare function defaultConfig(environment: Readonly<Record<string, string | undefined>>): OpenLimiterConfig;
158
+ /**
159
+ * The providers section, or the defaults, and never an exception.
160
+ *
161
+ * Read on the acquisition path, which runs detached and unattended, so a
162
+ * configuration file that cannot be read must leave the poll where it is
163
+ * safest: off.
164
+ */
165
+ export declare function readProvidersConfig(directory?: string): Promise<ProvidersConfig>;
123
166
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -9,7 +9,10 @@ export const STATUSLINE_KEYS = [
9
9
  "width",
10
10
  "rows",
11
11
  "bars",
12
- "color"
12
+ "color",
13
+ "style",
14
+ "show",
15
+ "hosts"
13
16
  ];
14
17
  /**
15
18
  * The narrowest and widest budget a row may be given.
@@ -27,7 +30,10 @@ export const DEFAULT_STATUSLINE = {
27
30
  width: 140,
28
31
  rows: 2,
29
32
  bars: true,
30
- color: "auto"
33
+ color: "auto",
34
+ style: "bar",
35
+ show: [],
36
+ hosts: {}
31
37
  };
32
38
  const connectorIds = connectors.map((connector) => connector.id);
33
39
  /** The list of ids an error message offers back to the reader. */
@@ -58,6 +64,29 @@ function normalizeWidth(value) {
58
64
  return null;
59
65
  return value;
60
66
  }
67
+ function normalizeShow(value) {
68
+ if (!Array.isArray(value))
69
+ return null;
70
+ const show = [];
71
+ for (const entry of value) {
72
+ if (typeof entry !== "string")
73
+ return null;
74
+ const id = entry.toLowerCase().trim();
75
+ if (id !== "" && !show.includes(id))
76
+ show.push(id);
77
+ }
78
+ return show;
79
+ }
80
+ function normalizeHosts(value) {
81
+ if (!isRecord(value))
82
+ return DEFAULT_STATUSLINE.hosts;
83
+ const hosts = {};
84
+ for (const [k, v] of Object.entries(value)) {
85
+ if (typeof v === "string")
86
+ hosts[k.toLowerCase()] = v;
87
+ }
88
+ return hosts;
89
+ }
61
90
  /**
62
91
  * Read a stored statusline section, key by key, keeping what is usable.
63
92
  *
@@ -74,6 +103,7 @@ export function normalizeStatusline(value) {
74
103
  const rows = value["rows"];
75
104
  const bars = value["bars"];
76
105
  const color = value["color"];
106
+ const style = value["style"];
77
107
  return {
78
108
  order: normalizeOrder(value["order"]) ?? DEFAULT_STATUSLINE.order,
79
109
  meters: meters === "worst" || meters === "all" ? meters : DEFAULT_STATUSLINE.meters,
@@ -82,7 +112,10 @@ export function normalizeStatusline(value) {
82
112
  bars: typeof bars === "boolean" ? bars : DEFAULT_STATUSLINE.bars,
83
113
  color: color === "auto" || color === "always" || color === "never"
84
114
  ? color
85
- : DEFAULT_STATUSLINE.color
115
+ : DEFAULT_STATUSLINE.color,
116
+ style: style === "bar" || style === "cells" ? style : DEFAULT_STATUSLINE.style,
117
+ show: normalizeShow(value["show"]) ?? DEFAULT_STATUSLINE.show,
118
+ hosts: normalizeHosts(value["hosts"])
86
119
  };
87
120
  }
88
121
  /** One stored key, rendered the way `config get` prints it. */
@@ -98,7 +131,17 @@ export function statuslineValueText(statusline, key) {
98
131
  return String(statusline.rows);
99
132
  if (key === "bars")
100
133
  return statusline.bars ? "true" : "false";
101
- return statusline.color;
134
+ if (key === "color")
135
+ return statusline.color;
136
+ if (key === "style")
137
+ return statusline.style;
138
+ if (key === "show") {
139
+ return statusline.show.length === 0 ? "NONE" : statusline.show.join(",");
140
+ }
141
+ const entries = Object.entries(statusline.hosts);
142
+ return entries.length === 0
143
+ ? "NONE"
144
+ : entries.map(([h, s]) => h + ":" + s).join(",");
102
145
  }
103
146
  export function isStatuslineKey(key) {
104
147
  return STATUSLINE_KEYS.includes(key);
@@ -157,10 +200,70 @@ export function setStatuslineValue(statusline, key, value) {
157
200
  ? { ok: true, statusline: { ...statusline, bars: value === "true" } }
158
201
  : { ok: false, message: "statusline.bars must be true or false." };
159
202
  }
203
+ if (key === "style") {
204
+ return value === "bar" || value === "cells"
205
+ ? { ok: true, statusline: { ...statusline, style: value } }
206
+ : { ok: false, message: "statusline.style must be bar or cells." };
207
+ }
208
+ if (key === "show") {
209
+ if (value === "" || value === "NONE" || value === "none") {
210
+ return { ok: true, statusline: { ...statusline, show: [] } };
211
+ }
212
+ const show = normalizeShow(value.split(",").map((entry) => entry.trim()));
213
+ return show === null
214
+ ? {
215
+ ok: false,
216
+ message: "statusline.show must be a comma separated list of provider ids or NONE."
217
+ }
218
+ : { ok: true, statusline: { ...statusline, show } };
219
+ }
220
+ if (key === "hosts") {
221
+ if (value === "" || value === "NONE" || value === "none") {
222
+ return { ok: true, statusline: { ...statusline, hosts: {} } };
223
+ }
224
+ const hosts = {};
225
+ for (const pair of value.split(",")) {
226
+ const parts = pair.split(":");
227
+ if (parts.length === 2 && parts[0]?.trim() && parts[1]?.trim()) {
228
+ hosts[parts[0].trim().toLowerCase()] = parts[1].trim();
229
+ }
230
+ }
231
+ return { ok: true, statusline: { ...statusline, hosts } };
232
+ }
160
233
  return value === "auto" || value === "always" || value === "never"
161
234
  ? { ok: true, statusline: { ...statusline, color: value } }
162
235
  : { ok: false, message: "statusline.color must be auto, always, or never." };
163
236
  }
237
+ export const DEFAULT_PROVIDERS = { claude: { poll: false } };
238
+ export const PROVIDER_KEYS = ["claude.poll"];
239
+ export function isProviderKey(key) {
240
+ return PROVIDER_KEYS.includes(key);
241
+ }
242
+ export function normalizeProviders(value) {
243
+ if (!isRecord(value))
244
+ return DEFAULT_PROVIDERS;
245
+ const claude = value["claude"];
246
+ const poll = isRecord(claude) ? claude["poll"] : undefined;
247
+ return {
248
+ claude: { poll: typeof poll === "boolean" ? poll : DEFAULT_PROVIDERS.claude.poll }
249
+ };
250
+ }
251
+ export function providerValueText(providers, key) {
252
+ void key;
253
+ return providers.claude.poll ? "true" : "false";
254
+ }
255
+ export function setProviderValue(providers, key, value) {
256
+ if (!isProviderKey(key)) {
257
+ return {
258
+ ok: false,
259
+ message: "unknown providers key. Known keys: " + PROVIDER_KEYS.join(", ") + "."
260
+ };
261
+ }
262
+ if (value !== "true" && value !== "false") {
263
+ return { ok: false, message: "providers.claude.poll must be true or false." };
264
+ }
265
+ return { ok: true, providers: { claude: { poll: value === "true" } } };
266
+ }
164
267
  async function rejectSymlink(target) {
165
268
  try {
166
269
  if ((await lstat(target)).isSymbolicLink())
@@ -227,7 +330,8 @@ export async function readConfig(directory = resolveStateDirectory()) {
227
330
  config: {
228
331
  version: 1,
229
332
  connectors: normalizeConnectors(document.value["connectors"]),
230
- statusline: normalizeStatusline(document.value["statusline"])
333
+ statusline: normalizeStatusline(document.value["statusline"]),
334
+ providers: normalizeProviders(document.value["providers"])
231
335
  }
232
336
  };
233
337
  }
@@ -259,7 +363,8 @@ export async function initialize(environment, credentialStore, promptForSecret,
259
363
  const config = {
260
364
  version: 1,
261
365
  connectors: connectorRows(environment),
262
- statusline: existing.ok ? existing.config.statusline : DEFAULT_STATUSLINE
366
+ statusline: existing.ok ? existing.config.statusline : DEFAULT_STATUSLINE,
367
+ providers: existing.ok ? existing.config.providers : DEFAULT_PROVIDERS
263
368
  };
264
369
  let credentialStored = false;
265
370
  const openrouter = config.connectors.find((connector) => connector.id === "openrouter");
@@ -292,7 +397,24 @@ export function defaultConfig(environment) {
292
397
  return {
293
398
  version: 1,
294
399
  connectors: connectorRows(environment),
295
- statusline: DEFAULT_STATUSLINE
400
+ statusline: DEFAULT_STATUSLINE,
401
+ providers: DEFAULT_PROVIDERS
296
402
  };
297
403
  }
404
+ /**
405
+ * The providers section, or the defaults, and never an exception.
406
+ *
407
+ * Read on the acquisition path, which runs detached and unattended, so a
408
+ * configuration file that cannot be read must leave the poll where it is
409
+ * safest: off.
410
+ */
411
+ export async function readProvidersConfig(directory) {
412
+ try {
413
+ const result = await readConfig(directory);
414
+ return result.ok ? result.config.providers : DEFAULT_PROVIDERS;
415
+ }
416
+ catch {
417
+ return DEFAULT_PROVIDERS;
418
+ }
419
+ }
298
420
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Signing in to the hub, staying signed in, and reading who is signed in.
3
+ *
4
+ * The device flow itself is nothing this build invented: a code and an
5
+ * address are shown, somebody types the code somewhere else, and this process
6
+ * polls until the hub says approved, denied or expired. The hub is the only
7
+ * clock that matters for expiry: it is the one thing that can say the device
8
+ * code has lapsed, so this build never guesses at a deadline of its own. The
9
+ * poll loop still carries a safety ceiling, derived from the hub's own stated
10
+ * lifetime, so a stubbed or misbehaving transport in a test cannot spin it
11
+ * forever.
12
+ */
13
+ import { type HubTransport } from "./hub.js";
14
+ import { type HubSession } from "./session.js";
15
+ /** The sentence a hub side revocation prints, word for word. */
16
+ export declare const REVOKED_SENTENCE = "Signed out on the hub, run openlimiter login";
17
+ /** The sentence a login code the hub already consumed prints, word for word. */
18
+ export declare const CODE_CONSUMED_SENTENCE = "That code was already used, run openlimiter login again";
19
+ /** Extra polls past the hub's own stated lifetime, before this build gives up. */
20
+ export declare const LOGIN_SAFETY_MARGIN_POLLS = 5;
21
+ /**
22
+ * Whether Ctrl C asked this poll loop to stop.
23
+ *
24
+ * A plain `signal?.aborted === true` reads fine once, but TypeScript narrows
25
+ * that exact expression across the loop body, so a second identical check
26
+ * after an `await` is seen as comparing an already narrowed `false` against
27
+ * `true` and refused as unreachable. A function call has no such memory.
28
+ */
29
+ export declare function isAborted(signal: AbortSignal | undefined): boolean;
30
+ export interface LoginStart {
31
+ readonly userCode: string;
32
+ readonly deviceCode: string;
33
+ readonly verificationUrl: string;
34
+ readonly intervalSeconds: number;
35
+ readonly expiresInSeconds: number;
36
+ }
37
+ /** Parse the device flow's opening answer, trusting nothing about its shape. */
38
+ export declare function parseLoginStart(body: string): LoginStart | null;
39
+ export type LoginPollOutcome = {
40
+ readonly status: "pending";
41
+ } | {
42
+ readonly status: "slow_down";
43
+ } | {
44
+ readonly status: "denied";
45
+ } | {
46
+ readonly status: "expired";
47
+ } | {
48
+ readonly status: "consumed";
49
+ } | {
50
+ readonly status: "approved";
51
+ readonly token: string;
52
+ readonly expiresAt: string;
53
+ readonly refreshCredential: string;
54
+ readonly refreshExpiresAt: string;
55
+ readonly deviceId: string;
56
+ };
57
+ /** Parse one poll answer, in the five shapes the contract allows. */
58
+ export declare function parseLoginPoll(body: string): LoginPollOutcome | null;
59
+ export interface GrantRenewal {
60
+ readonly token: string;
61
+ readonly expiresAt: string;
62
+ readonly refreshCredential: string;
63
+ readonly refreshExpiresAt: string;
64
+ }
65
+ /** Parse a renewal answer: a fresh token and a rotated refresh credential. */
66
+ export declare function parseGrantRenewal(body: string): GrantRenewal | null;
67
+ /**
68
+ * A human name for the account, read from the token if it carries one.
69
+ *
70
+ * The hub contract names no account label field at all, and a token is the
71
+ * one thing the approved answer definitely carries that could hold one: a
72
+ * JSON Web Token's own payload, unsigned and unverified here because nothing
73
+ * downstream trusts this label for anything but display. A token that is not
74
+ * a JWT, or carries no email claim, falls back to the device id, which is
75
+ * always there and is at least a stable name to look at with `whoami`.
76
+ */
77
+ export declare function accountLabelFromToken(token: string, fallback: string): string;
78
+ export interface DeviceLoginOptions {
79
+ readonly environment: Readonly<Record<string, string | undefined>>;
80
+ readonly transport: HubTransport;
81
+ readonly sleep: (milliseconds: number) => Promise<void>;
82
+ /** Progress this process wants seen before the command itself returns. */
83
+ readonly emit: (line: string) => void;
84
+ readonly interruptSignal?: AbortSignal;
85
+ readonly openBrowser?: (url: string) => void;
86
+ readonly open: boolean;
87
+ }
88
+ export type DeviceLoginResult = {
89
+ readonly kind: "signed_in";
90
+ readonly session: HubSession;
91
+ } | {
92
+ readonly kind: "cancelled";
93
+ } | {
94
+ readonly kind: "denied";
95
+ } | {
96
+ readonly kind: "expired";
97
+ readonly message?: string;
98
+ } | {
99
+ readonly kind: "not_configured";
100
+ } | {
101
+ readonly kind: "error";
102
+ readonly message: string;
103
+ };
104
+ /**
105
+ * Run the whole device flow: start, show the code, poll until an ending.
106
+ *
107
+ * `slow_down` widens the interval rather than being treated as a failure,
108
+ * which is the device flow's own documented way of saying "you are polling
109
+ * this endpoint too often". A poll that could not be sent or read is not
110
+ * treated as `denied` either: a network blip inside a three minute window is
111
+ * routine, and the loop tries again next interval rather than ending the
112
+ * whole sign in over it.
113
+ */
114
+ export declare function runDeviceLogin(options: DeviceLoginOptions): Promise<DeviceLoginResult>;
115
+ export type RenewOutcome = {
116
+ readonly kind: "fresh";
117
+ readonly session: HubSession;
118
+ } | {
119
+ readonly kind: "renewed";
120
+ readonly session: HubSession;
121
+ } | {
122
+ readonly kind: "revoked";
123
+ } | {
124
+ readonly kind: "error";
125
+ };
126
+ /**
127
+ * Make sure a session is good for one more upload, renewing if it is not.
128
+ *
129
+ * A session inside the renewal window is used exactly as it stands: renewing
130
+ * early for no reason spends the one time use refresh credential for nothing.
131
+ * A 401 from the renewal call is read as the hub having revoked this device,
132
+ * never as an ordinary network failure, because the two need different
133
+ * endings: one clears the session and asks for a fresh sign in, the other
134
+ * leaves the session in place and lets the next attempt try again.
135
+ */
136
+ export declare function ensureFreshSession(session: HubSession, now: string, environment: Readonly<Record<string, string | undefined>>, transport: HubTransport): Promise<RenewOutcome>;
137
+ //# sourceMappingURL=hub-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub-auth.d.ts","sourceRoot":"","sources":["../src/hub-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAEtB,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,iDAAiD,CAAC;AAE/E,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,4DAA4D,CAAC;AAEhG,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAc3C;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAElE;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAyB/D;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC/B;IACE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEN,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA6BpE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAgBnE;AAaD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiB7E;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyD5F;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/B;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACzD,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,YAAY,CAAC,CAwBvB"}