@intutic/clawde 2.1.0 → 2.2.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/circuit-breaker.d.ts.map +1 -1
- package/dist/circuit-breaker.js +9 -5
- package/dist/circuit-breaker.js.map +1 -1
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +11 -1
- package/dist/client.js.map +1 -1
- package/dist/refusals.d.ts +9 -0
- package/dist/refusals.d.ts.map +1 -1
- package/dist/refusals.js +20 -1
- package/dist/refusals.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG/C,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAK;gBAEP,MAAM,EAAE,GAAG;IAIhB,IAAI,CAAC,CAAC,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GAClC,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG/C,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAK;gBAEP,MAAM,EAAE,GAAG;IAIhB,IAAI,CAAC,CAAC,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GAClC,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;CAwCxC"}
|
package/dist/circuit-breaker.js
CHANGED
|
@@ -10,13 +10,14 @@ class CircuitBreaker {
|
|
|
10
10
|
wrap(toolName, options = {}) {
|
|
11
11
|
const failOpen = options.failOpen ?? false;
|
|
12
12
|
return async (fn) => {
|
|
13
|
-
// 1. Pre-check: workspace budget, when asked for
|
|
13
|
+
// 1. Pre-check: workspace budget, when asked for. `failOpen` covers a
|
|
14
|
+
// check that could not be made; a check that answered "no budget" is a
|
|
15
|
+
// verdict and refuses either way, or the breaker would let every call
|
|
16
|
+
// through exactly when the budget is gone.
|
|
14
17
|
if (options.requireBudget || options.maxCostUsd !== undefined) {
|
|
18
|
+
let budget = null;
|
|
15
19
|
try {
|
|
16
|
-
|
|
17
|
-
if (!budget.allowed) {
|
|
18
|
-
throw new errors_1.ClawdeVerdictError('kill', `Circuit breaker tripped for tool '${toolName}': budget exceeded. Remaining: $${budget.remaining_usd}`);
|
|
19
|
-
}
|
|
20
|
+
budget = await this.client.checkBudget('default', 1);
|
|
20
21
|
}
|
|
21
22
|
catch (err) {
|
|
22
23
|
if (!failOpen) {
|
|
@@ -26,6 +27,9 @@ class CircuitBreaker {
|
|
|
26
27
|
console.warn(`[Clawde SDK] Circuit breaker pre-check failed (failing open): ${err.message}`);
|
|
27
28
|
}
|
|
28
29
|
}
|
|
30
|
+
if (budget && !budget.allowed) {
|
|
31
|
+
throw new errors_1.ClawdeVerdictError('kill', `Circuit breaker tripped for tool '${toolName}': budget exceeded. Remaining: $${budget.remaining_usd}`);
|
|
32
|
+
}
|
|
29
33
|
}
|
|
30
34
|
// 2. Run the function. A refusal from chat() arrives as a thrown
|
|
31
35
|
// ClawdeBlockedError, so fail-closed needs nothing beyond rethrowing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":";;;AACA,qCAA6C;AAE7C,MAAa,cAAc;IACjB,MAAM,CAAK;IAEnB,YAAY,MAAW;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEM,IAAI,CACT,QAAgB,EAChB,UAAiC,EAAE;QAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAA;QAE1C,OAAO,KAAK,EAAE,EAAoB,EAAc,EAAE;YAChD,
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":";;;AACA,qCAA6C;AAE7C,MAAa,cAAc;IACjB,MAAM,CAAK;IAEnB,YAAY,MAAW;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEM,IAAI,CACT,QAAgB,EAChB,UAAiC,EAAE;QAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAA;QAE1C,OAAO,KAAK,EAAE,EAAoB,EAAc,EAAE;YAChD,sEAAsE;YACtE,uEAAuE;YACvE,sEAAsE;YACtE,2CAA2C;YAC3C,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC9D,IAAI,MAAM,GAAwD,IAAI,CAAA;gBACtE,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;gBACtD,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,MAAM,GAAG,CAAA;oBACX,CAAC;oBACD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;wBACzC,OAAO,CAAC,IAAI,CAAC,iEAAiE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;oBAC9F,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM,IAAI,2BAAkB,CAAC,MAAM,EAAE,qCAAqC,QAAQ,mCAAmC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;gBAC9I,CAAC;YACH,CAAC;YAED,iEAAiE;YACjE,sEAAsE;YACtE,IAAI,CAAC;gBACH,OAAO,MAAM,EAAE,EAAE,CAAA;YACnB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,GAAG,CAAA;gBACX,CAAC;gBACD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;oBACzC,OAAO,CAAC,IAAI,CAAC,iEAAiE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBAC9F,CAAC;gBACD,OAAO,IAAW,CAAA,CAAC,kCAAkC;YACvD,CAAC;QACH,CAAC,CAAA;IACH,CAAC;CACF;AAlDD,wCAkDC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -22,7 +22,8 @@ export declare class ClawdeClient {
|
|
|
22
22
|
* Send a chat request through the proxy.
|
|
23
23
|
*
|
|
24
24
|
* Resolves with `verdict: 'allow'` when the proxy let the request through. A
|
|
25
|
-
* governance refusal
|
|
25
|
+
* governance refusal, including one the proxy answers with a 200 and names in
|
|
26
|
+
* `x-intutic-refusal`, fires the matching event and rejects with
|
|
26
27
|
* `ClawdeBlockedError`, unretried. Transport failures, timeouts and 5xx
|
|
27
28
|
* answers are retried; anything else rejects with `ClawdeConnectionError`.
|
|
28
29
|
*/
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACb,MAAM,SAAS,CAAA;AAUhB,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAmC;IACpD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAQ;IAEvB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,YAAY,CAAoB;gBAE5B,OAAO,EAAE,mBAAmB;IAuBjC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAItD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAK3C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAK/E,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC;IAQhD,cAAc,CAAC,CAAC,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GAClC,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;IAIvC
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACb,MAAM,SAAS,CAAA;AAUhB,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAmC;IACpD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAQ;IAEvB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,YAAY,CAAoB;gBAE5B,OAAO,EAAE,mBAAmB;IAuBjC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAItD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAK3C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAK/E,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC;IAQhD,cAAc,CAAC,CAAC,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GAClC,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;IAIvC;;;;;;;;OAQG;IACU,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;CA8E7D"}
|
package/dist/client.js
CHANGED
|
@@ -67,7 +67,8 @@ class ClawdeClient {
|
|
|
67
67
|
* Send a chat request through the proxy.
|
|
68
68
|
*
|
|
69
69
|
* Resolves with `verdict: 'allow'` when the proxy let the request through. A
|
|
70
|
-
* governance refusal
|
|
70
|
+
* governance refusal, including one the proxy answers with a 200 and names in
|
|
71
|
+
* `x-intutic-refusal`, fires the matching event and rejects with
|
|
71
72
|
* `ClawdeBlockedError`, unretried. Transport failures, timeouts and 5xx
|
|
72
73
|
* answers are retried; anything else rejects with `ClawdeConnectionError`.
|
|
73
74
|
*/
|
|
@@ -100,9 +101,11 @@ class ClawdeClient {
|
|
|
100
101
|
const timer = setTimeout(() => controller.abort(), this.timeout);
|
|
101
102
|
let status;
|
|
102
103
|
let text;
|
|
104
|
+
let refusedBy;
|
|
103
105
|
try {
|
|
104
106
|
const response = await fetch(url, { method: 'POST', headers, body, signal: controller.signal });
|
|
105
107
|
status = response.status;
|
|
108
|
+
refusedBy = response.headers.get(refusals_1.REFUSAL_HEADER);
|
|
106
109
|
text = await response.text();
|
|
107
110
|
}
|
|
108
111
|
catch (err) {
|
|
@@ -121,6 +124,13 @@ class ClawdeClient {
|
|
|
121
124
|
throw new errors_1.ClawdeConnectionError(`Proxy answered ${status} with a body that is not JSON: ${text}`);
|
|
122
125
|
}
|
|
123
126
|
const normalized = (0, schema_enforcer_1.normalizeResponse)(json, this.provider);
|
|
127
|
+
// A refusal answered as an assistant turn (the cost-prediction gate).
|
|
128
|
+
const content = normalized.choices?.[0]?.message?.content;
|
|
129
|
+
const answered = (0, refusals_1.headerRefusal)(refusedBy, typeof content === 'string' ? content : '');
|
|
130
|
+
if (answered) {
|
|
131
|
+
this.eventEmitter.emit(answered.verdict, { ...answered, status });
|
|
132
|
+
throw new errors_1.ClawdeBlockedError(answered.verdict, answered.code, status, answered.message);
|
|
133
|
+
}
|
|
124
134
|
normalized.verdict = 'allow';
|
|
125
135
|
return normalized;
|
|
126
136
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAUA,qCAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/refusals.d.ts
CHANGED
|
@@ -24,4 +24,13 @@ export interface ProxyRefusal {
|
|
|
24
24
|
}
|
|
25
25
|
/** The refusal an error response carries, or `null` when it is any other kind of failure. */
|
|
26
26
|
export declare function parseRefusal(status: number, body: string): ProxyRefusal | null;
|
|
27
|
+
/**
|
|
28
|
+
* The header the proxy sets on a 200 that is a refusal in the shape of an
|
|
29
|
+
* answer: the cost-prediction gate replies to a non-streaming request with an
|
|
30
|
+
* assistant turn explaining the estimate, so a chat client shows the reason.
|
|
31
|
+
* Its value is the refusal's code.
|
|
32
|
+
*/
|
|
33
|
+
export declare const REFUSAL_HEADER = "x-intutic-refusal";
|
|
34
|
+
/** The refusal a 2xx response names in `REFUSAL_HEADER`, or `null` for a real answer. */
|
|
35
|
+
export declare function headerRefusal(code: string | null, message: string): ProxyRefusal | null;
|
|
27
36
|
//# sourceMappingURL=refusals.d.ts.map
|
package/dist/refusals.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusals.d.ts","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC,CAUhG,CAAA;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAe9E"}
|
|
1
|
+
{"version":3,"file":"refusals.d.ts","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC,CAUhG,CAAA;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAe9E;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,sBAAsB,CAAA;AAEjD,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQvF"}
|
package/dist/refusals.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PROXY_REFUSALS = void 0;
|
|
3
|
+
exports.REFUSAL_HEADER = exports.PROXY_REFUSALS = void 0;
|
|
4
4
|
exports.parseRefusal = parseRefusal;
|
|
5
|
+
exports.headerRefusal = headerRefusal;
|
|
5
6
|
/**
|
|
6
7
|
* The proxy's governance refusals: the `error.type` of its JSON error body
|
|
7
8
|
* (`{"error": {"type", "message"}}`, `json_error` in packages/proxy/src/proxy.rs),
|
|
@@ -47,4 +48,22 @@ function parseRefusal(status, body) {
|
|
|
47
48
|
message: typeof error.message === 'string' ? error.message : error.type,
|
|
48
49
|
};
|
|
49
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* The header the proxy sets on a 200 that is a refusal in the shape of an
|
|
53
|
+
* answer: the cost-prediction gate replies to a non-streaming request with an
|
|
54
|
+
* assistant turn explaining the estimate, so a chat client shows the reason.
|
|
55
|
+
* Its value is the refusal's code.
|
|
56
|
+
*/
|
|
57
|
+
exports.REFUSAL_HEADER = 'x-intutic-refusal';
|
|
58
|
+
/** The refusal a 2xx response names in `REFUSAL_HEADER`, or `null` for a real answer. */
|
|
59
|
+
function headerRefusal(code, message) {
|
|
60
|
+
if (!code)
|
|
61
|
+
return null;
|
|
62
|
+
const known = exports.PROXY_REFUSALS[code];
|
|
63
|
+
return {
|
|
64
|
+
verdict: known?.verdict ?? 'kill',
|
|
65
|
+
code,
|
|
66
|
+
message: message || code,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
50
69
|
//# sourceMappingURL=refusals.js.map
|
package/dist/refusals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusals.js","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":";;;AAmCA,oCAeC;
|
|
1
|
+
{"version":3,"file":"refusals.js","sourceRoot":"","sources":["../src/refusals.ts"],"names":[],"mappings":";;;AAmCA,oCAeC;AAWD,sCAQC;AAnED;;;;;;;;;;;;;GAaG;AACU,QAAA,cAAc,GAA0E;IACnG,aAAa,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IAC/C,iBAAiB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IACnD,mBAAmB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IACrD,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IACzD,YAAY,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;IAC/C,eAAe,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IACjD,yBAAyB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IAC3D,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;IACpD,oBAAoB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;CACvD,CAAA;AAQD,6FAA6F;AAC7F,SAAgB,YAAY,CAAC,MAAc,EAAE,IAAY;IACvD,IAAI,KAAwD,CAAA;IAC5D,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACzD,MAAM,KAAK,GAAG,sBAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAClD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;KACxE,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACU,QAAA,cAAc,GAAG,mBAAmB,CAAA;AAEjD,yFAAyF;AACzF,SAAgB,aAAa,CAAC,IAAmB,EAAE,OAAe;IAChE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,MAAM,KAAK,GAAG,sBAAc,CAAC,IAAI,CAAC,CAAA;IAClC,OAAO;QACL,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM;QACjC,IAAI;QACJ,OAAO,EAAE,OAAO,IAAI,IAAI;KACzB,CAAA;AACH,CAAC"}
|