agentlock-shared 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/billing.test.d.ts +2 -0
- package/dist/__tests__/billing.test.d.ts.map +1 -0
- package/dist/__tests__/billing.test.js +31 -0
- package/dist/__tests__/billing.test.js.map +1 -0
- package/dist/__tests__/dns-pinning.test.d.ts +2 -0
- package/dist/__tests__/dns-pinning.test.d.ts.map +1 -0
- package/dist/__tests__/dns-pinning.test.js +33 -0
- package/dist/__tests__/dns-pinning.test.js.map +1 -0
- package/dist/__tests__/llm-classifier-cache-store.test.d.ts +2 -0
- package/dist/__tests__/llm-classifier-cache-store.test.d.ts.map +1 -0
- package/dist/__tests__/llm-classifier-cache-store.test.js +65 -0
- package/dist/__tests__/llm-classifier-cache-store.test.js.map +1 -0
- package/dist/__tests__/llm-classifier-cache.test.d.ts +2 -0
- package/dist/__tests__/llm-classifier-cache.test.d.ts.map +1 -0
- package/dist/__tests__/llm-classifier-cache.test.js +44 -0
- package/dist/__tests__/llm-classifier-cache.test.js.map +1 -0
- package/dist/__tests__/llm-classifier.test.d.ts +2 -0
- package/dist/__tests__/llm-classifier.test.d.ts.map +1 -0
- package/dist/__tests__/llm-classifier.test.js +167 -0
- package/dist/__tests__/llm-classifier.test.js.map +1 -0
- package/dist/__tests__/plans-classifier-limits.test.d.ts +2 -0
- package/dist/__tests__/plans-classifier-limits.test.d.ts.map +1 -0
- package/dist/__tests__/plans-classifier-limits.test.js +22 -0
- package/dist/__tests__/plans-classifier-limits.test.js.map +1 -0
- package/dist/__tests__/policy-category-floor.test.d.ts +2 -0
- package/dist/__tests__/policy-category-floor.test.d.ts.map +1 -0
- package/dist/__tests__/policy-category-floor.test.js +46 -0
- package/dist/__tests__/policy-category-floor.test.js.map +1 -0
- package/dist/__tests__/policy-claude-bash.test.d.ts +2 -0
- package/dist/__tests__/policy-claude-bash.test.d.ts.map +1 -0
- package/dist/__tests__/policy-claude-bash.test.js +401 -0
- package/dist/__tests__/policy-claude-bash.test.js.map +1 -0
- package/dist/__tests__/policy-llm-floor.test.d.ts +2 -0
- package/dist/__tests__/policy-llm-floor.test.d.ts.map +1 -0
- package/dist/__tests__/policy-llm-floor.test.js +107 -0
- package/dist/__tests__/policy-llm-floor.test.js.map +1 -0
- package/dist/__tests__/policy-ssh-e2e.test.d.ts +2 -0
- package/dist/__tests__/policy-ssh-e2e.test.d.ts.map +1 -0
- package/dist/__tests__/policy-ssh-e2e.test.js +89 -0
- package/dist/__tests__/policy-ssh-e2e.test.js.map +1 -0
- package/dist/__tests__/policy-ssh-sessions.test.d.ts +2 -0
- package/dist/__tests__/policy-ssh-sessions.test.d.ts.map +1 -0
- package/dist/__tests__/policy-ssh-sessions.test.js +139 -0
- package/dist/__tests__/policy-ssh-sessions.test.js.map +1 -0
- package/dist/__tests__/policy-ssh.test.d.ts +2 -0
- package/dist/__tests__/policy-ssh.test.d.ts.map +1 -0
- package/dist/__tests__/policy-ssh.test.js +180 -0
- package/dist/__tests__/policy-ssh.test.js.map +1 -0
- package/dist/__tests__/policy.test.js +400 -2
- package/dist/__tests__/policy.test.js.map +1 -1
- package/dist/__tests__/redact.test.js +76 -0
- package/dist/__tests__/redact.test.js.map +1 -1
- package/dist/__tests__/signing.test.js +89 -0
- package/dist/__tests__/signing.test.js.map +1 -1
- package/dist/__tests__/ssh-fingerprint.test.d.ts +2 -0
- package/dist/__tests__/ssh-fingerprint.test.d.ts.map +1 -0
- package/dist/__tests__/ssh-fingerprint.test.js +19 -0
- package/dist/__tests__/ssh-fingerprint.test.js.map +1 -0
- package/dist/__tests__/vpn-route.test.d.ts +2 -0
- package/dist/__tests__/vpn-route.test.d.ts.map +1 -0
- package/dist/__tests__/vpn-route.test.js +72 -0
- package/dist/__tests__/vpn-route.test.js.map +1 -0
- package/dist/__tests__/wireguard.test.d.ts +2 -0
- package/dist/__tests__/wireguard.test.d.ts.map +1 -0
- package/dist/__tests__/wireguard.test.js +114 -0
- package/dist/__tests__/wireguard.test.js.map +1 -0
- package/dist/billing.d.ts +12 -0
- package/dist/billing.d.ts.map +1 -0
- package/dist/billing.js +41 -0
- package/dist/billing.js.map +1 -0
- package/dist/crypto.d.ts +5 -0
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +80 -23
- package/dist/crypto.js.map +1 -1
- package/dist/dns-pinning.d.ts +28 -0
- package/dist/dns-pinning.d.ts.map +1 -0
- package/dist/dns-pinning.js +113 -0
- package/dist/dns-pinning.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/llm-classifier-cache-store.d.ts +49 -0
- package/dist/llm-classifier-cache-store.d.ts.map +1 -0
- package/dist/llm-classifier-cache-store.js +63 -0
- package/dist/llm-classifier-cache-store.js.map +1 -0
- package/dist/llm-classifier-cache.d.ts +6 -0
- package/dist/llm-classifier-cache.d.ts.map +1 -0
- package/dist/llm-classifier-cache.js +52 -0
- package/dist/llm-classifier-cache.js.map +1 -0
- package/dist/llm-classifier.d.ts +29 -0
- package/dist/llm-classifier.d.ts.map +1 -0
- package/dist/llm-classifier.js +191 -0
- package/dist/llm-classifier.js.map +1 -0
- package/dist/observability.d.ts +36 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +75 -0
- package/dist/observability.js.map +1 -0
- package/dist/plans.d.ts +17 -0
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +36 -14
- package/dist/plans.js.map +1 -1
- package/dist/policy.d.ts +173 -3
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +910 -42
- package/dist/policy.js.map +1 -1
- package/dist/redact.d.ts.map +1 -1
- package/dist/redact.js +83 -3
- package/dist/redact.js.map +1 -1
- package/dist/regex-safety.d.ts +21 -0
- package/dist/regex-safety.d.ts.map +1 -0
- package/dist/regex-safety.js +49 -0
- package/dist/regex-safety.js.map +1 -0
- package/dist/sanitize.d.ts +31 -0
- package/dist/sanitize.d.ts.map +1 -0
- package/dist/sanitize.js +54 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/schemas.d.ts +202 -10
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +91 -1
- package/dist/schemas.js.map +1 -1
- package/dist/signing.d.ts +15 -0
- package/dist/signing.d.ts.map +1 -1
- package/dist/signing.js +53 -4
- package/dist/signing.js.map +1 -1
- package/dist/ssh-fingerprint.d.ts +10 -0
- package/dist/ssh-fingerprint.d.ts.map +1 -0
- package/dist/ssh-fingerprint.js +52 -0
- package/dist/ssh-fingerprint.js.map +1 -0
- package/dist/ssrf.d.ts +36 -0
- package/dist/ssrf.d.ts.map +1 -0
- package/dist/ssrf.js +140 -0
- package/dist/ssrf.js.map +1 -0
- package/dist/types.d.ts +130 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wireguard.d.ts +63 -0
- package/dist/wireguard.d.ts.map +1 -0
- package/dist/wireguard.js +226 -0
- package/dist/wireguard.js.map +1 -0
- package/package.json +42 -29
- package/.turbo/turbo-build.log +0 -4
- package/.turbo/turbo-test.log +0 -76
- package/dist/__tests__/content-crypto.test.d.ts +0 -2
- package/dist/__tests__/content-crypto.test.d.ts.map +0 -1
- package/dist/__tests__/content-crypto.test.js +0 -117
- package/dist/__tests__/content-crypto.test.js.map +0 -1
- package/dist/__tests__/signing.test (# Edit conflict 2026-04-01 z3etfmC #).js +0 -51
- package/dist/__tests__/signing.test.js (# Edit conflict 2026-04-01 4rndy9C #).map +0 -1
- package/dist/content-crypto.d.ts +0 -24
- package/dist/content-crypto.d.ts.map +0 -1
- package/dist/content-crypto.js +0 -58
- package/dist/content-crypto.js.map +0 -1
- package/src/__tests__/crypto.test.ts +0 -169
- package/src/__tests__/messaging.test.ts +0 -83
- package/src/__tests__/policy.test.ts +0 -222
- package/src/__tests__/redact.test.ts +0 -41
- package/src/__tests__/signing.test.ts +0 -55
- package/src/crypto.ts +0 -235
- package/src/index.ts +0 -8
- package/src/mcp-catalog.ts +0 -181
- package/src/plans.ts +0 -116
- package/src/policy.ts +0 -216
- package/src/redact.ts +0 -131
- package/src/schemas.ts +0 -121
- package/src/signing.ts +0 -120
- package/src/types.ts +0 -213
- package/test-gateway.mjs +0 -47
- package/tsconfig.json +0 -10
- package/vitest.config.ts +0 -8
package/dist/policy.d.ts
CHANGED
|
@@ -1,10 +1,180 @@
|
|
|
1
|
-
import type { PolicyRules, AgentActionRequest, PolicyEvaluationResult } from './types.js';
|
|
1
|
+
import type { PolicyRules, AgentActionRequest, PolicyEvaluationResult, PolicyDecision, ActionType } from './types.js';
|
|
2
|
+
/** Returns the more restrictive of two categories. */
|
|
3
|
+
export declare function maxCategory(a: ActionType, b: ActionType): ActionType;
|
|
4
|
+
/**
|
|
5
|
+
* Derive the minimum (floor) category for a given tool + payload, independent
|
|
6
|
+
* of what the agent declared. See comment above for rationale.
|
|
7
|
+
*
|
|
8
|
+
* Returns `undefined` when no opinion — caller treats that as "trust declared".
|
|
9
|
+
*/
|
|
10
|
+
export declare function getCategoryFloor(tool: string, payload: Record<string, unknown>): ActionType;
|
|
2
11
|
export declare const DEFAULT_POLICY_RULES: PolicyRules;
|
|
3
|
-
export declare function
|
|
4
|
-
|
|
12
|
+
export declare function compileSshPattern(raw: string): RegExp;
|
|
13
|
+
/**
|
|
14
|
+
* Compile a user-supplied Claude Code Bash pattern into a RegExp.
|
|
15
|
+
*
|
|
16
|
+
* Same semantics as the SSH `commandRules` evaluator (single source of
|
|
17
|
+
* truth — `compileSshPattern`), so admins only learn one pattern dialect.
|
|
18
|
+
* Default: full-string match with `*` and `?` as glob wildcards.
|
|
19
|
+
*
|
|
20
|
+
* - `grep` → exact match only ("grep" with no args)
|
|
21
|
+
* - `grep *` → grep followed by a space and any args
|
|
22
|
+
* - `grep /home/*`→ grep with args starting with `/home/`
|
|
23
|
+
* - `^git push` → starts-with-regex (regex hint chars trigger raw mode)
|
|
24
|
+
* - `/.../` → fully raw regex (escape hatch for advanced cases)
|
|
25
|
+
*
|
|
26
|
+
* The exact-by-default behaviour is the safer choice: forgetting the `*`
|
|
27
|
+
* means your rule is narrower than expected, not wider.
|
|
28
|
+
*/
|
|
29
|
+
export declare const compileClaudeBashPattern: typeof compileSshPattern;
|
|
30
|
+
export interface ClaudeBashEvalOutcome {
|
|
31
|
+
decision: PolicyDecision;
|
|
32
|
+
reason: string;
|
|
33
|
+
matchedPattern: string;
|
|
34
|
+
/**
|
|
35
|
+
* Per-rule two-person approval flag, copied from the matched rule. The
|
|
36
|
+
* routing endpoint forwards this to the gateway so the resulting
|
|
37
|
+
* approval_request inherits it instead of falling back to the
|
|
38
|
+
* surrounding `permission.claude_code` rule's flag. `undefined` means
|
|
39
|
+
* the rule didn't set it — caller falls back to the matched_rule's
|
|
40
|
+
* own value.
|
|
41
|
+
*/
|
|
42
|
+
require_two_approvals?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Per-rule approver allowlist, copied from the matched rule. Same
|
|
45
|
+
* fallback semantics as `require_two_approvals`. Empty/undefined ⇒ no
|
|
46
|
+
* per-rule restriction.
|
|
47
|
+
*/
|
|
48
|
+
allowed_approvers?: string[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Optional context the routing endpoint passes to
|
|
52
|
+
* {@link evaluateClaudeBashRules}. Currently only used to surface the
|
|
53
|
+
* shell-metachar safety gate's classification context in audit/log output;
|
|
54
|
+
* no admin-class auto-escalation is performed because the editor's linter
|
|
55
|
+
* already warns admins about high-risk ALLOWs and an explicit ALLOW must
|
|
56
|
+
* be honoured.
|
|
57
|
+
*/
|
|
58
|
+
export interface ClaudeBashEvalOptions {
|
|
59
|
+
/**
|
|
60
|
+
* What the hardcoded pattern classifier (the one in the routing endpoint)
|
|
61
|
+
* thinks this command is. Currently informational — kept on the option
|
|
62
|
+
* type so the gateway can pass it without conditional plumbing and so a
|
|
63
|
+
* future auditing/logging change can surface it without another schema
|
|
64
|
+
* bump.
|
|
65
|
+
*/
|
|
66
|
+
hardcodedActionType?: ActionType;
|
|
67
|
+
/**
|
|
68
|
+
* Workspace's high-risk auto-approval opt-in. Retained on the type for
|
|
69
|
+
* compatibility with existing callers; no longer consulted by the Bash
|
|
70
|
+
* rule evaluator (admin-class auto-escalation has been removed — see the
|
|
71
|
+
* docstring on {@link evaluateClaudeBashRules}).
|
|
72
|
+
*/
|
|
73
|
+
allowHighRiskAutoApproval?: {
|
|
74
|
+
admin?: boolean;
|
|
75
|
+
financial?: boolean;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Evaluate a Bash command against the workspace's user-defined Claude Code
|
|
80
|
+
* rules. Returns the first matching rule's outcome, or — when no rule
|
|
81
|
+
* matches — the policy's `defaultDecision`. Returns `null` to signal "no
|
|
82
|
+
* opinion" (caller should fall back to the hardcoded classifier) when the
|
|
83
|
+
* rules block is undefined or the rules array is empty AND no
|
|
84
|
+
* `defaultDecision` is set.
|
|
85
|
+
*
|
|
86
|
+
* Rules are evaluated in order; the FIRST match wins. ReDoS-suspect
|
|
87
|
+
* patterns and patterns that fail to compile are silently skipped (the
|
|
88
|
+
* Zod schema rejects them at save time, but we re-check at evaluation
|
|
89
|
+
* to stay safe against rules that pre-date the validation).
|
|
90
|
+
*
|
|
91
|
+
* Safety gates (only applied to ALLOW outcomes — BLOCK and
|
|
92
|
+
* REQUIRE_APPROVAL are always honoured as written so admins keep the
|
|
93
|
+
* ability to stop a command unconditionally):
|
|
94
|
+
*
|
|
95
|
+
* 1. **Shell-meta escalation** — if the command contains shell-control
|
|
96
|
+
* chars (`;`, `&&`, `||`, `|`, `` ` ``, `$()`, `>`, `<`) and the
|
|
97
|
+
* matched pattern is a literal prefix (not `/.../`), the rule is
|
|
98
|
+
* escalated to `REQUIRE_APPROVAL`. Keeps `ALLOW: git status` from
|
|
99
|
+
* silently approving `git status; rm -rf /` — the admin almost
|
|
100
|
+
* certainly didn't mean to grant an arbitrary suffix.
|
|
101
|
+
*
|
|
102
|
+
* Admin-class commands (`rm -rf`, `git push`, `kubectl apply`, …) are
|
|
103
|
+
* NOT auto-escalated. If an admin writes `ALLOW: git push *`, the rule
|
|
104
|
+
* fires as written. The policy editor's linter still flags such ALLOWs
|
|
105
|
+
* as a recommendation to double-check, but runtime respects the explicit
|
|
106
|
+
* intent — silent escalation surprised users more than it protected them.
|
|
107
|
+
*/
|
|
108
|
+
export declare function evaluateClaudeBashRules(command: string, rules: NonNullable<PolicyRules['claudeBash']> | undefined | null, options?: ClaudeBashEvalOptions): ClaudeBashEvalOutcome | null;
|
|
109
|
+
/**
|
|
110
|
+
* Options for {@link evaluatePolicy}. Kept narrow — most callers pass none.
|
|
111
|
+
*/
|
|
112
|
+
export interface EvaluatePolicyOptions {
|
|
113
|
+
/**
|
|
114
|
+
* When true, skip the server-side category floor and use the agent's
|
|
115
|
+
* self-declared `action_type` as-is. Set by the gateway when the agent
|
|
116
|
+
* record has `trust_declared_action_type = true`.
|
|
117
|
+
*
|
|
118
|
+
* DANGER: Only enable for fully trusted agents with a narrow allowed_tools
|
|
119
|
+
* list. A compromised agent with this flag set can downgrade any request
|
|
120
|
+
* (including stripe.charge, admin.delete_user) to `read` and bypass the
|
|
121
|
+
* financial/admin safety rails.
|
|
122
|
+
*/
|
|
123
|
+
skipCategoryFloor?: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* When true, signals that the caller has already verified an active
|
|
126
|
+
* `browser_sessions` row matching the request's `session_id`. The blanket
|
|
127
|
+
* "Browser actions require an active session" BLOCK for `browser.*`
|
|
128
|
+
* (non-`browser.open`) is then skipped so the request falls through to
|
|
129
|
+
* per-tool rule matching — allowing admins to BLOCK specific browser tools
|
|
130
|
+
* (e.g. `browser.fill_credentials`) from a policy without those rules being
|
|
131
|
+
* shadowed by the catch-all.
|
|
132
|
+
*
|
|
133
|
+
* Only set this when the session has been validated against the DB by a
|
|
134
|
+
* trusted caller (the gateway), not from unverified client input.
|
|
135
|
+
*/
|
|
136
|
+
hasActiveSession?: boolean;
|
|
137
|
+
}
|
|
138
|
+
export declare function evaluatePolicy(action: AgentActionRequest, rules: PolicyRules, options?: EvaluatePolicyOptions): PolicyEvaluationResult;
|
|
139
|
+
export declare function buildActionPreview(action: AgentActionRequest, effectiveActionType?: ActionType): {
|
|
5
140
|
summary: string;
|
|
6
141
|
target?: string;
|
|
7
142
|
impact?: string;
|
|
8
143
|
cost_estimate?: number;
|
|
144
|
+
declared_action_type?: ActionType;
|
|
145
|
+
effective_action_type?: ActionType;
|
|
146
|
+
command?: string;
|
|
147
|
+
claude_tool?: string;
|
|
9
148
|
};
|
|
149
|
+
/**
|
|
150
|
+
* Suggest a Claude Code Bash policy pattern from a raw command string. Used
|
|
151
|
+
* by the "Approve and remember" affordance in the approval UI to pre-fill
|
|
152
|
+
* the rule-creation form with a sensible default; admins can edit the
|
|
153
|
+
* suggestion before submitting.
|
|
154
|
+
*
|
|
155
|
+
* Heuristic (in order):
|
|
156
|
+
* - Empty / whitespace-only → empty string (UI handles this).
|
|
157
|
+
* - Quoted segments (`"..."`, `'...'`) are removed before tokenising so
|
|
158
|
+
* `git commit -m "fix bug"` → tokens `[git, commit, -m]`, not five
|
|
159
|
+
* fragmented strings.
|
|
160
|
+
* - Single token → `<token>` (exact match for that bare command).
|
|
161
|
+
* - Two tokens, second is a flag (`-x`, `--long`) → `<first> *`.
|
|
162
|
+
* - Two tokens, second looks like a path (starts with `/`, `.`, `~`, `\\`)
|
|
163
|
+
* → `<first> *`. Pinning the path makes the rule too narrow; dropping
|
|
164
|
+
* it makes nothing match. Falling back to `<first> *` is the safest
|
|
165
|
+
* middle ground; the admin can tighten further if they want.
|
|
166
|
+
* - Two+ tokens, second is non-flag → `<first> <second> *` (typical
|
|
167
|
+
* subcommand form: `git push *`, `kubectl apply *`).
|
|
168
|
+
*
|
|
169
|
+
* The output is always a glob the routing endpoint understands. Admins
|
|
170
|
+
* can switch to a regex via `/.../` if they need finer control.
|
|
171
|
+
*/
|
|
172
|
+
export declare function suggestClaudeBashPattern(command: string): string;
|
|
173
|
+
/** Return the vpnCredentialId matching `host`, or `undefined` if no route
|
|
174
|
+
* matches (or `host`/`routes` is missing/empty). */
|
|
175
|
+
export declare function resolveVpnRoute(host: string | undefined | null, routes: PolicyRules['vpnRoutes']): string | undefined;
|
|
176
|
+
/** Parse a URL string and return its hostname in lowercase, or `undefined`
|
|
177
|
+
* if the input isn't a parseable URL. Used by the runner to extract the
|
|
178
|
+
* routing key for http.request / browser.open actions. */
|
|
179
|
+
export declare function hostnameFromUrl(url: string | undefined | null): string | undefined;
|
|
10
180
|
//# sourceMappingURL=policy.d.ts.map
|
package/dist/policy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EAEtB,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;AA+BpB,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAEpE;AAuED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,UAAU,CAqDZ;AAED,eAAO,MAAM,oBAAoB,EAAE,WA2ClC,CAAC;AAqBF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAarD;AAQD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,0BAAoB,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACtE;AAiCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,EAChE,OAAO,GAAE,qBAA0B,GAClC,qBAAqB,GAAG,IAAI,CA6G9B;AA2CD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,qBAA0B,GAClC,sBAAsB,CAmXxB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,EAC1B,mBAAmB,CAAC,EAAE,UAAU,GAC/B;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,qBAAqB,CAAC,EAAE,UAAU,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAwIA;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBhE;AAqBD;qDACqD;AACrD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAC/B,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,GAC/B,MAAM,GAAG,SAAS,CAqBpB;AAED;;2DAE2D;AAC3D,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAOlF"}
|