@te-river/opencode-team-mode 1.5.10 → 1.5.12
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/README.md +143 -56
- package/README.zh-CN.md +116 -47
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +17 -11
- package/dist/agents.js.map +1 -1
- package/dist/approval-gate.d.ts +54 -16
- package/dist/approval-gate.d.ts.map +1 -1
- package/dist/approval-gate.js +163 -42
- package/dist/approval-gate.js.map +1 -1
- package/dist/prompts/lead.d.ts +1 -1
- package/dist/prompts/lead.d.ts.map +1 -1
- package/dist/prompts/lead.js +22 -3
- package/dist/prompts/lead.js.map +1 -1
- package/dist/prompts/shared.d.ts +1 -1
- package/dist/prompts/shared.d.ts.map +1 -1
- package/dist/prompts/shared.js +154 -119
- package/dist/prompts/shared.js.map +1 -1
- package/dist/prompts/specialists.d.ts +2 -2
- package/dist/prompts/specialists.d.ts.map +1 -1
- package/dist/prompts/specialists.js +40 -11
- package/dist/prompts/specialists.js.map +1 -1
- package/dist/tm/args-schema.d.ts +25 -1
- package/dist/tm/args-schema.d.ts.map +1 -1
- package/dist/tm/args-schema.js +149 -39
- package/dist/tm/args-schema.js.map +1 -1
- package/dist/tm/browser.d.ts +203 -18
- package/dist/tm/browser.d.ts.map +1 -1
- package/dist/tm/browser.js +853 -111
- package/dist/tm/browser.js.map +1 -1
- package/dist/tm/config.d.ts +61 -0
- package/dist/tm/config.d.ts.map +1 -1
- package/dist/tm/config.js +55 -1
- package/dist/tm/config.js.map +1 -1
- package/dist/tm/index.d.ts +7 -5
- package/dist/tm/index.d.ts.map +1 -1
- package/dist/tm/index.js +38 -4
- package/dist/tm/index.js.map +1 -1
- package/dist/tm/memory.d.ts +88 -10
- package/dist/tm/memory.d.ts.map +1 -1
- package/dist/tm/memory.js +881 -99
- package/dist/tm/memory.js.map +1 -1
- package/dist/tm/pipelines.d.ts +26 -3
- package/dist/tm/pipelines.d.ts.map +1 -1
- package/dist/tm/pipelines.js +167 -11
- package/dist/tm/pipelines.js.map +1 -1
- package/dist/tm/ptc/budgets.d.ts +22 -1
- package/dist/tm/ptc/budgets.d.ts.map +1 -1
- package/dist/tm/ptc/budgets.js +87 -8
- package/dist/tm/ptc/budgets.js.map +1 -1
- package/dist/tm/ptc/contract.d.ts +49 -9
- package/dist/tm/ptc/contract.d.ts.map +1 -1
- package/dist/tm/ptc/contract.js +41 -3
- package/dist/tm/ptc/contract.js.map +1 -1
- package/dist/tm/ptc/driver.d.ts +5 -2
- package/dist/tm/ptc/driver.d.ts.map +1 -1
- package/dist/tm/ptc/driver.js +47 -15
- package/dist/tm/ptc/driver.js.map +1 -1
- package/dist/tm/ptc/engines.d.ts +15 -4
- package/dist/tm/ptc/engines.d.ts.map +1 -1
- package/dist/tm/ptc/engines.js +281 -28
- package/dist/tm/ptc/engines.js.map +1 -1
- package/dist/tm/ptc/index.d.ts +4 -4
- package/dist/tm/ptc/index.d.ts.map +1 -1
- package/dist/tm/ptc/index.js +2 -2
- package/dist/tm/ptc/index.js.map +1 -1
- package/dist/tm/ptc/pscan.d.ts +20 -1
- package/dist/tm/ptc/pscan.d.ts.map +1 -1
- package/dist/tm/ptc/pscan.js +328 -14
- package/dist/tm/ptc/pscan.js.map +1 -1
- package/dist/tm/ptc/summary.d.ts.map +1 -1
- package/dist/tm/ptc/summary.js +23 -1
- package/dist/tm/ptc/summary.js.map +1 -1
- package/dist/tm/ptc/tool.d.ts +34 -3
- package/dist/tm/ptc/tool.d.ts.map +1 -1
- package/dist/tm/ptc/tool.js +117 -20
- package/dist/tm/ptc/tool.js.map +1 -1
- package/dist/tm/search.d.ts +83 -14
- package/dist/tm/search.d.ts.map +1 -1
- package/dist/tm/search.js +440 -45
- package/dist/tm/search.js.map +1 -1
- package/dist/tm/shell-bridge.d.ts +14 -1
- package/dist/tm/shell-bridge.d.ts.map +1 -1
- package/dist/tm/shell-bridge.js +57 -10
- package/dist/tm/shell-bridge.js.map +1 -1
- package/dist/tm/webfetch.d.ts +33 -8
- package/dist/tm/webfetch.d.ts.map +1 -1
- package/dist/tm/webfetch.js +131 -20
- package/dist/tm/webfetch.js.map +1 -1
- package/package.json +5 -2
package/dist/tm/search.js
CHANGED
|
@@ -3,57 +3,166 @@
|
|
|
3
3
|
*
|
|
4
4
|
* One call, one query, clean results: the engine URL is built here, fetched
|
|
5
5
|
* through the SAME pipeline as tm_webfetch (allowlist, manual redirects,
|
|
6
|
-
* 20 s timeout, 2 MB cap) and collapsed into a numbered title+URL
|
|
7
|
-
* before governance — the agent never sees raw SERP chrome.
|
|
8
|
-
*
|
|
9
|
-
* render with
|
|
6
|
+
* 20 s timeout, 2 MB cap) and collapsed into a numbered title+URL(+snippet)
|
|
7
|
+
* hit list before governance — the agent never sees raw SERP chrome. The
|
|
8
|
+
* structured engines (npm registry, GitHub repo search, StackExchange
|
|
9
|
+
* question search, HN Algolia, MediaWiki) render with stars/score/tags/
|
|
10
|
+
* snippets.
|
|
10
11
|
*
|
|
11
|
-
*
|
|
12
|
-
* bing
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* T4 quality upgrade (live benchmark 2026-09-14, CN host): of the HTML
|
|
13
|
+
* SERPs only bing still returns real results — sogou/so/baidu serve
|
|
14
|
+
* anti-bot shells and bing-int (ensearch=1) is 100% dead — so they are
|
|
15
|
+
* REMOVED from the engine table (webfetch's domain whitelist keeps their
|
|
16
|
+
* hosts untouched; users can still fetch those URLs directly). In their
|
|
17
|
+
* place two no-key JSON engines: stackoverflow (api.stackexchange.com,
|
|
18
|
+
* 300 req/day/IP — quota_remaining is tracked and auto-routing degrades to
|
|
19
|
+
* bing once exhausted) and hn (hn.algolia.com).
|
|
20
|
+
*
|
|
21
|
+
* `engine: "auto"` (the new default, TM_SEARCH_DEFAULT_ENGINE) classifies
|
|
22
|
+
* the query, fans out to the matching engine set IN PARALLEL, normalizes
|
|
23
|
+
* every engine's hits to SearchHit, dedupes by host+path and re-ranks
|
|
24
|
+
* with weighted RRF (stackoverflow 0.4 / bing 0.4 / others 0.2) into a
|
|
25
|
+
* top-10 list tagged with its source engine(s). Explicit single-engine
|
|
26
|
+
* calls keep the classic per-engine render.
|
|
16
27
|
*
|
|
17
28
|
* tm_webfetch stays the "fetch a KNOWN URL" tool; tm_browser covers
|
|
18
29
|
* JS-rendered pages. All three share one domain allowlist and one
|
|
19
30
|
* pipelines instance.
|
|
20
31
|
*/
|
|
21
|
-
import { fetchWebText, extractSearchHits, renderSearchHits, hostAllowed } from "./webfetch.js";
|
|
32
|
+
import { fetchWebText, extractSearchHits, renderSearchHits, hostAllowed, seedWebfetchDomains, } from "./webfetch.js";
|
|
22
33
|
import { askFnOf, askUserForTarget } from "./perm-ask.js";
|
|
23
34
|
import { shorten } from "./config.js";
|
|
24
35
|
import { detectContentType } from "./preview.js";
|
|
25
36
|
import { tmError, toToolResult } from "./result.js";
|
|
26
|
-
|
|
37
|
+
/* ---------- query guards (T4) ---------- */
|
|
38
|
+
/**
|
|
39
|
+
* CJK phrase protection: a multi-word Chinese query gets its CORE phrase
|
|
40
|
+
* (the token holding the most CJK chars, ≥2) wrapped in double quotes —
|
|
41
|
+
* CN SERPs otherwise free-match tokens across pages and drown the result
|
|
42
|
+
* list in tangential hits. Single-word queries and already-quoted queries
|
|
43
|
+
* pass through untouched (never fabricate a phrase boundary, never fight
|
|
44
|
+
* the user's own quoting). Applied to bing via prepareQuery; JSON query
|
|
45
|
+
* APIs are skipped because they treat quotes literally.
|
|
46
|
+
*/
|
|
47
|
+
export function protectCjkPhrase(query) {
|
|
48
|
+
if (query.includes('"'))
|
|
49
|
+
return query;
|
|
50
|
+
if (!/[\u4e00-\u9fff\u3040-\u30ff\uac00-\ud7af]/.test(query))
|
|
51
|
+
return query;
|
|
52
|
+
const tokens = query.split(/\s+/).filter(Boolean);
|
|
53
|
+
if (tokens.length < 2)
|
|
54
|
+
return query;
|
|
55
|
+
let coreIdx = -1;
|
|
56
|
+
let coreLen = 0;
|
|
57
|
+
tokens.forEach((t, i) => {
|
|
58
|
+
const n = (t.match(/[\u4e00-\u9fff\u3040-\u30ff\uac00-\ud7af]/g) ?? []).length;
|
|
59
|
+
if (n > coreLen) {
|
|
60
|
+
coreLen = n;
|
|
61
|
+
coreIdx = i;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
if (coreIdx < 0 || coreLen < 2)
|
|
65
|
+
return query;
|
|
66
|
+
const out = [...tokens];
|
|
67
|
+
out[coreIdx] = `"${out[coreIdx]}"`;
|
|
68
|
+
return out.join(" ");
|
|
69
|
+
}
|
|
70
|
+
/** GitHub search-API qualifiers whitelisted for pass-through (T4): the
|
|
71
|
+
* token stays verbatim in `q=` while the REST of the query remains free
|
|
72
|
+
* text. Other words (owner:, topic:, …) are NOT folded — they ride on as
|
|
73
|
+
* plain text, unvalidated, exactly like before. */
|
|
74
|
+
const GH_QUALIFIER_RE = /^(org|user|stars|language):(\S+)$/i;
|
|
75
|
+
export function foldGithubQualifiers(query) {
|
|
76
|
+
const tokens = query.split(/\s+/).filter(Boolean);
|
|
77
|
+
const qualifiers = [];
|
|
78
|
+
const free = [];
|
|
79
|
+
for (const t of tokens) {
|
|
80
|
+
if (GH_QUALIFIER_RE.test(t))
|
|
81
|
+
qualifiers.push(t);
|
|
82
|
+
else
|
|
83
|
+
free.push(t);
|
|
84
|
+
}
|
|
85
|
+
return { q: [...free, ...qualifiers].join(" "), qualifiers };
|
|
86
|
+
}
|
|
87
|
+
// ERR_/Exception/stack-trace markers OR a camelCase API identifier
|
|
88
|
+
// (≥2 leading lowercase chars so "iOS"/"iPhone" do NOT qualify) — the
|
|
89
|
+
// shapes where SO + GitHub carry the authoritative answers.
|
|
90
|
+
const ERROR_CODE_RE = /(ERR_[A-Z0-9_]+|\bException\b|Traceback|stack\s*trace|panic:|segfault|segmentation\s+fault|\bTypeError\b|\bReferenceError\b|\bSyntaxError\b|\bModuleNotFoundError\b|cannot\s+read\s+\w+|undefined\s+is\s+not|no\s+such\s+(?:module|file)|\b[a-z]{2,}[A-Z][a-zA-Z0-9]*\b)/;
|
|
91
|
+
// dev-ecosystem vocabulary: releases/tooling/library chatter — HN + GitHub
|
|
92
|
+
// + npm own it.
|
|
93
|
+
const DEV_ECOSYSTEM_RE = /\b(release[sd]?|changelog|roadmap|open-?source|library|framework|sdk|cli|vs\s?code|docker|kubernetes|deprecat\w*|benchmark|show\s+hn|ask\s+hn|launch|npm|pypi|crate|maven)\b/i;
|
|
94
|
+
const CJK_RE = /[\u4e00-\u9fff\u3040-\u30ff\uac00-\ud7af]/;
|
|
95
|
+
export function classifyQuery(query) {
|
|
96
|
+
if (ERROR_CODE_RE.test(query))
|
|
97
|
+
return "error-code";
|
|
98
|
+
if (DEV_ECOSYSTEM_RE.test(query))
|
|
99
|
+
return "dev-ecosystem";
|
|
100
|
+
if (CJK_RE.test(query))
|
|
101
|
+
return "cjk";
|
|
102
|
+
return "general";
|
|
103
|
+
}
|
|
104
|
+
const AUTO_ROUTES = {
|
|
105
|
+
"error-code": ["stackoverflow", "github", "bing"],
|
|
106
|
+
"dev-ecosystem": ["hn", "github", "npm"],
|
|
107
|
+
cjk: ["bing"],
|
|
108
|
+
general: ["bing"],
|
|
109
|
+
};
|
|
110
|
+
export const AUTO_ENGINE_KEY = "auto";
|
|
111
|
+
/** RRF fusion constants (memory baseline): rank-damping k=60, SO/bing
|
|
112
|
+
* carry the trust weight, every other source 0.2. */
|
|
113
|
+
const RRF_K = 60;
|
|
114
|
+
const RRF_WEIGHTS = { stackoverflow: 0.4, bing: 0.4 };
|
|
115
|
+
const RRF_DEFAULT_WEIGHT = 0.2;
|
|
116
|
+
/** Mutable SO quota state (per process). api.stackexchange answers every
|
|
117
|
+
* payload with quota_remaining/quota_max; hitting 0 flips `exhausted`
|
|
118
|
+
* and engine:"auto" swaps the SO leg for bing until the process restarts
|
|
119
|
+
* (the daily quota rolls over on the server, not here). */
|
|
120
|
+
export const SO_QUOTA = {
|
|
121
|
+
max: 300,
|
|
122
|
+
remaining: null,
|
|
123
|
+
exhausted: false,
|
|
124
|
+
};
|
|
125
|
+
export function resetSoQuota() {
|
|
126
|
+
SO_QUOTA.max = 300;
|
|
127
|
+
SO_QUOTA.remaining = null;
|
|
128
|
+
SO_QUOTA.exhausted = false;
|
|
129
|
+
}
|
|
130
|
+
/** Resolve the auto route set for a query (exported for tests + PTC). */
|
|
131
|
+
export function resolveAutoRoutes(query) {
|
|
132
|
+
const queryClass = classifyQuery(query);
|
|
133
|
+
const notes = [];
|
|
134
|
+
let routes = [...AUTO_ROUTES[queryClass]];
|
|
135
|
+
if (SO_QUOTA.exhausted && routes.includes("stackoverflow")) {
|
|
136
|
+
routes = routes.filter((r) => r !== "stackoverflow");
|
|
137
|
+
if (!routes.includes("bing"))
|
|
138
|
+
routes.push("bing");
|
|
139
|
+
notes.push("stackoverflow 配额耗尽(quota_remaining=0),已降级为 bing");
|
|
140
|
+
}
|
|
141
|
+
return { routes, queryClass, notes };
|
|
142
|
+
}
|
|
143
|
+
/* ---------- engine table ---------- */
|
|
144
|
+
/** The engine table — keys are the tm_search `engine` arg values. The
|
|
145
|
+
* dead CN SERPs (sogou/so/baidu/bing-int) are GONE, not even manually
|
|
146
|
+
* selectable (2026-09-14 benchmark: anti-bot shells / 100% empty). */
|
|
27
147
|
export const SEARCH_ENGINES = {
|
|
28
148
|
bing: {
|
|
29
149
|
name: "bing",
|
|
30
150
|
kind: "html",
|
|
31
151
|
buildUrl: (q) => `https://cn.bing.com/search?q=${q}`,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"bing-int": {
|
|
35
|
-
name: "bing-int",
|
|
36
|
-
kind: "html",
|
|
37
|
-
buildUrl: (q) => `https://cn.bing.com/search?q=${q}&ensearch=1&setmkt=en-US`,
|
|
38
|
-
alt: "bing / sogou / so",
|
|
39
|
-
},
|
|
40
|
-
sogou: {
|
|
41
|
-
name: "sogou",
|
|
42
|
-
kind: "html",
|
|
43
|
-
buildUrl: (q) => `https://www.sogou.com/web?query=${q}`,
|
|
44
|
-
alt: "bing / so / baidu",
|
|
152
|
+
prepareQuery: protectCjkPhrase,
|
|
153
|
+
alt: "stackoverflow / github / hn(编程类)或缩小查询词",
|
|
45
154
|
},
|
|
46
|
-
|
|
47
|
-
name: "
|
|
48
|
-
kind: "
|
|
49
|
-
buildUrl: (q) => `https://
|
|
50
|
-
alt: "bing /
|
|
155
|
+
stackoverflow: {
|
|
156
|
+
name: "stackoverflow",
|
|
157
|
+
kind: "so-json",
|
|
158
|
+
buildUrl: (q) => `https://api.stackexchange.com/2.3/search/advanced?order=desc&sort=relevance&q=${q}&site=stackoverflow&pagesize=10`,
|
|
159
|
+
alt: "bing / github / hn(SO 免 key 配额 300/day/IP)",
|
|
51
160
|
},
|
|
52
|
-
|
|
53
|
-
name: "
|
|
54
|
-
kind: "
|
|
55
|
-
buildUrl: (q) => `https://
|
|
56
|
-
alt: "bing /
|
|
161
|
+
hn: {
|
|
162
|
+
name: "hn",
|
|
163
|
+
kind: "hn-json",
|
|
164
|
+
buildUrl: (q) => `https://hn.algolia.com/api/v1/search?query=${q}&tags=story&hitsPerPage=10`,
|
|
165
|
+
alt: "bing / github / stackoverflow",
|
|
57
166
|
},
|
|
58
167
|
bilibili: {
|
|
59
168
|
name: "bilibili",
|
|
@@ -77,11 +186,78 @@ export const SEARCH_ENGINES = {
|
|
|
77
186
|
name: "github",
|
|
78
187
|
kind: "github-json",
|
|
79
188
|
buildUrl: (q) => `https://api.github.com/search/repositories?q=${q}&per_page=10`,
|
|
80
|
-
|
|
189
|
+
prepareQuery: (query) => foldGithubQualifiers(query).q,
|
|
190
|
+
alt: "10-15 分钟后重试(匿名限额 10 次/分钟),或换 bing",
|
|
81
191
|
},
|
|
82
192
|
};
|
|
83
193
|
export const SEARCH_ENGINE_NAMES = Object.keys(SEARCH_ENGINES);
|
|
84
194
|
const SEARCH_MAX_HITS = 10;
|
|
195
|
+
function parseSoItems(body) {
|
|
196
|
+
let data;
|
|
197
|
+
try {
|
|
198
|
+
data = JSON.parse(body);
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
if (typeof data?.quota_remaining === "number") {
|
|
204
|
+
SO_QUOTA.remaining = data.quota_remaining;
|
|
205
|
+
SO_QUOTA.exhausted = data.quota_remaining === 0;
|
|
206
|
+
}
|
|
207
|
+
if (typeof data?.quota_max === "number")
|
|
208
|
+
SO_QUOTA.max = data.quota_max;
|
|
209
|
+
const raw = Array.isArray(data?.items) ? data.items : null;
|
|
210
|
+
if (!raw)
|
|
211
|
+
return null;
|
|
212
|
+
const items = [];
|
|
213
|
+
for (const it of raw) {
|
|
214
|
+
const o = it;
|
|
215
|
+
if (!o || typeof o.title !== "string")
|
|
216
|
+
continue;
|
|
217
|
+
items.push({
|
|
218
|
+
title: o.title,
|
|
219
|
+
link: String(o.link ?? ""),
|
|
220
|
+
score: Number(o.score ?? 0),
|
|
221
|
+
answer_count: Number(o.answer_count ?? 0),
|
|
222
|
+
is_answered: Boolean(o.is_answered),
|
|
223
|
+
tags: Array.isArray(o.tags) ? o.tags.map(String) : [],
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
return { items, total: Number(data.total ?? items.length) };
|
|
227
|
+
}
|
|
228
|
+
function soCompositeSnippet(it) {
|
|
229
|
+
const parts = [`score ${it.score} · ${it.answer_count} 回答${it.is_answered ? " · 已采纳" : ""}`];
|
|
230
|
+
if (it.tags.length)
|
|
231
|
+
parts.push(`tags: ${it.tags.slice(0, 3).join(", ")}`);
|
|
232
|
+
return parts.join(" · ");
|
|
233
|
+
}
|
|
234
|
+
function parseHnItems(body) {
|
|
235
|
+
let data;
|
|
236
|
+
try {
|
|
237
|
+
data = JSON.parse(body);
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
const raw = Array.isArray(data?.hits) ? data.hits : null;
|
|
243
|
+
if (!raw)
|
|
244
|
+
return null;
|
|
245
|
+
const items = [];
|
|
246
|
+
for (const it of raw) {
|
|
247
|
+
const o = it;
|
|
248
|
+
if (!o || typeof o.title !== "string")
|
|
249
|
+
continue;
|
|
250
|
+
items.push({
|
|
251
|
+
title: o.title,
|
|
252
|
+
url: String(o.url ?? "") || `https://news.ycombinator.com/item?id=${String(o.objectID ?? "")}`,
|
|
253
|
+
points: Number(o.points ?? 0),
|
|
254
|
+
num_comments: Number(o.num_comments ?? 0),
|
|
255
|
+
created_at: String(o.created_at ?? "").slice(0, 10),
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
return { items, total: Number(data.nbHits ?? items.length) };
|
|
259
|
+
}
|
|
260
|
+
/* ---------- structured renders (explicit single-engine path) ---------- */
|
|
85
261
|
/** npm registry search JSON → numbered package list (name@version — desc). */
|
|
86
262
|
export function renderNpmResults(query, body) {
|
|
87
263
|
let data;
|
|
@@ -153,29 +329,198 @@ export function renderWikiResults(query, body) {
|
|
|
153
329
|
lines.push("(词条正文: tm_webfetch 抓上面的 URL。)");
|
|
154
330
|
return lines.join("\n");
|
|
155
331
|
}
|
|
156
|
-
/**
|
|
332
|
+
/** StackExchange search JSON → numbered question list; the per-hit snippet
|
|
333
|
+
* is SYNTHESIZED from the engine's own metadata (score/answers/tags —
|
|
334
|
+
* search/advanced carries no body text). The quota footer reflects the
|
|
335
|
+
* tracked quota_remaining. */
|
|
336
|
+
export function renderSoResults(query, body) {
|
|
337
|
+
const parsed = parseSoItems(body);
|
|
338
|
+
if (!parsed || parsed.items.length === 0)
|
|
339
|
+
return null;
|
|
340
|
+
const lines = [`[search] stackoverflow × "${query}" → ${parsed.total} 个问题:`];
|
|
341
|
+
for (const [i, it] of parsed.items.slice(0, SEARCH_MAX_HITS).entries()) {
|
|
342
|
+
lines.push(`${i + 1}. ${it.title} — ${soCompositeSnippet(it)}`);
|
|
343
|
+
lines.push(` ${it.link}`);
|
|
344
|
+
}
|
|
345
|
+
const q = SO_QUOTA.remaining;
|
|
346
|
+
lines.push(`(SO 免 key 配额: ${q === null ? "未知" : `${q}/${SO_QUOTA.max}`}${q === null ? "" : " 今日/IP"}${SO_QUOTA.exhausted ? " —— 已耗尽,engine:\"auto\" 已降级 bing" : ""}。)`);
|
|
347
|
+
return lines.join("\n");
|
|
348
|
+
}
|
|
349
|
+
/** HN Algolia story search JSON → numbered post list; the per-hit snippet
|
|
350
|
+
* is the engine's own points/comments/date metadata. */
|
|
351
|
+
export function renderHnResults(query, body) {
|
|
352
|
+
const parsed = parseHnItems(body);
|
|
353
|
+
if (!parsed || parsed.items.length === 0)
|
|
354
|
+
return null;
|
|
355
|
+
const lines = [`[search] hn × "${query}" → ${parsed.total} 条帖子:`];
|
|
356
|
+
for (const [i, it] of parsed.items.slice(0, SEARCH_MAX_HITS).entries()) {
|
|
357
|
+
const meta = [`${it.points} 分`, `${it.num_comments} 评论`, it.created_at].filter(Boolean).join(" · ");
|
|
358
|
+
lines.push(`${i + 1}. ${it.title} — ${meta}`);
|
|
359
|
+
lines.push(` ${it.url}`);
|
|
360
|
+
}
|
|
361
|
+
lines.push("(读正文: tm_webfetch 抓上面的 URL;评论区无正文的用 tm_browser。)");
|
|
362
|
+
return lines.join("\n");
|
|
363
|
+
}
|
|
364
|
+
/** Collapse an HTML SERP into the compact hit list; [] when the engine
|
|
157
365
|
* gave nothing extractable (anti-bot shell / markup change). */
|
|
158
366
|
export function extractHtmlResults(html) {
|
|
159
367
|
return extractSearchHits(html, SEARCH_MAX_HITS);
|
|
160
368
|
}
|
|
369
|
+
/* ---------- auto fusion (normalized hits → dedupe → weighted RRF) ---------- */
|
|
370
|
+
/** Normalize any engine body to SearchHit[] (the fusion currency). JSON
|
|
371
|
+
* engines keep their composite/real snippets; SO/HN metadata composes the
|
|
372
|
+
* snippet line (engine data only — nothing fabricated). */
|
|
373
|
+
function bodyToHits(engine, body) {
|
|
374
|
+
switch (engine.kind) {
|
|
375
|
+
case "html":
|
|
376
|
+
return extractSearchHits(body, SEARCH_MAX_HITS);
|
|
377
|
+
case "so-json": {
|
|
378
|
+
const parsed = parseSoItems(body);
|
|
379
|
+
return (parsed?.items ?? []).slice(0, SEARCH_MAX_HITS).map((it) => ({
|
|
380
|
+
title: it.title,
|
|
381
|
+
url: it.link,
|
|
382
|
+
snippet: soCompositeSnippet(it),
|
|
383
|
+
}));
|
|
384
|
+
}
|
|
385
|
+
case "hn-json": {
|
|
386
|
+
const parsed = parseHnItems(body);
|
|
387
|
+
return (parsed?.items ?? []).slice(0, SEARCH_MAX_HITS).map((it) => ({
|
|
388
|
+
title: it.title,
|
|
389
|
+
url: it.url,
|
|
390
|
+
snippet: `${it.points} points · ${it.num_comments} comments${it.created_at ? ` · ${it.created_at}` : ""}`,
|
|
391
|
+
}));
|
|
392
|
+
}
|
|
393
|
+
case "npm-json": {
|
|
394
|
+
try {
|
|
395
|
+
const data = JSON.parse(body);
|
|
396
|
+
return (Array.isArray(data?.objects) ? data.objects : []).slice(0, SEARCH_MAX_HITS).map((o) => {
|
|
397
|
+
const p = o?.package ?? {};
|
|
398
|
+
const name = String(p.name ?? "?");
|
|
399
|
+
return {
|
|
400
|
+
title: `${name}@${String(p.version ?? "?")}`,
|
|
401
|
+
url: `https://registry.npmjs.org/${name}/latest`,
|
|
402
|
+
snippet: String(p.description ?? "").slice(0, 140) || undefined,
|
|
403
|
+
};
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
catch {
|
|
407
|
+
return [];
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
case "github-json": {
|
|
411
|
+
try {
|
|
412
|
+
const data = JSON.parse(body);
|
|
413
|
+
return (Array.isArray(data?.items) ? data.items : []).slice(0, SEARCH_MAX_HITS).map((r) => ({
|
|
414
|
+
title: `${String(r?.full_name ?? "?")} ★${Number(r?.stargazers_count ?? 0)}`,
|
|
415
|
+
url: String(r?.html_url ?? ""),
|
|
416
|
+
snippet: String(r?.description ?? "").slice(0, 140) || undefined,
|
|
417
|
+
}));
|
|
418
|
+
}
|
|
419
|
+
catch {
|
|
420
|
+
return [];
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
case "wiki-json": {
|
|
424
|
+
try {
|
|
425
|
+
const data = JSON.parse(body);
|
|
426
|
+
return (Array.isArray(data?.query?.search) ? data.query.search : []).slice(0, SEARCH_MAX_HITS).map((r) => ({
|
|
427
|
+
title: String(r?.title ?? "?"),
|
|
428
|
+
url: `https://mobile.moegirl.org.cn/${encodeURIComponent(String(r?.title ?? ""))}`,
|
|
429
|
+
snippet: String(r?.snippet ?? "").replace(/<[^>]+>/g, "").slice(0, 120) || undefined,
|
|
430
|
+
}));
|
|
431
|
+
}
|
|
432
|
+
catch {
|
|
433
|
+
return [];
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
/** host+path identity across engines (query/fragment/trailing-slash/www
|
|
439
|
+
* ignored) — the fusion dedupe key. */
|
|
440
|
+
export function dedupeKey(url) {
|
|
441
|
+
try {
|
|
442
|
+
const u = new URL(url);
|
|
443
|
+
const host = u.hostname.toLowerCase().replace(/^www\./, "");
|
|
444
|
+
const p = u.pathname.replace(/\/+$/, "");
|
|
445
|
+
return host + p;
|
|
446
|
+
}
|
|
447
|
+
catch {
|
|
448
|
+
return url.trim();
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
/** Reciprocal Rank Fusion over the routed engines' hit lists: normalize →
|
|
452
|
+
* host+path dedupe → score = Σ weight/(k+rank) → top-10, every hit tagged
|
|
453
|
+
* with its contributing engine(s). */
|
|
454
|
+
export function fuseRrf(groups, max = SEARCH_MAX_HITS) {
|
|
455
|
+
const best = new Map();
|
|
456
|
+
for (const g of groups) {
|
|
457
|
+
const weight = RRF_WEIGHTS[g.engine] ?? RRF_DEFAULT_WEIGHT;
|
|
458
|
+
for (const [i, h] of g.hits.entries()) {
|
|
459
|
+
if (!h.url)
|
|
460
|
+
continue;
|
|
461
|
+
const key = dedupeKey(h.url);
|
|
462
|
+
const add = weight / (RRF_K + i + 1);
|
|
463
|
+
const prev = best.get(key);
|
|
464
|
+
if (prev) {
|
|
465
|
+
prev.score += add;
|
|
466
|
+
if (!prev.hit.snippet && h.snippet)
|
|
467
|
+
prev.hit.snippet = h.snippet;
|
|
468
|
+
if (!String(prev.hit.source ?? "").split("+").includes(g.engine)) {
|
|
469
|
+
prev.hit.source = [prev.hit.source, g.engine].filter(Boolean).join("+");
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
else {
|
|
473
|
+
best.set(key, {
|
|
474
|
+
hit: { ...h, title: h.title, url: h.url, source: g.engine },
|
|
475
|
+
score: add,
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
return [...best.values()]
|
|
481
|
+
.sort((a, b) => b.score - a.score)
|
|
482
|
+
.slice(0, max)
|
|
483
|
+
.map((row, i) => ({ ...row.hit, rank: i + 1 }));
|
|
484
|
+
}
|
|
485
|
+
function renderFusedHits(query, routes, hits, notes) {
|
|
486
|
+
const label = routes.length === 1 ? `auto→${routes[0]}` : "auto";
|
|
487
|
+
const lines = [
|
|
488
|
+
`[search] ${label} × "${query}" → ${hits.length} 条结果(路由 ${routes.join("+")}${routes.length > 1 ? ",RRF 融合" : ""}):`,
|
|
489
|
+
];
|
|
490
|
+
hits.forEach((h, i) => {
|
|
491
|
+
lines.push(`${i + 1}. ${h.source ? `[${h.source}] ` : ""}${h.title}`);
|
|
492
|
+
lines.push(` ${h.url}`);
|
|
493
|
+
if (h.snippet)
|
|
494
|
+
lines.push(` ${h.snippet}`);
|
|
495
|
+
});
|
|
496
|
+
for (const n of notes)
|
|
497
|
+
lines.push(`(auto: ${n})`);
|
|
498
|
+
lines.push("(读正文: tm_webfetch 结果 URL;也可 engine 显式指定单引擎。)");
|
|
499
|
+
return lines.join("\n");
|
|
500
|
+
}
|
|
501
|
+
/* ---------- tool ---------- */
|
|
161
502
|
const SEARCH_DESCRIPTION = `Search the web through a governed multi-engine pipeline — the FIRST choice for open-ended web lookups; tm_webfetch is for a KNOWN URL, tm_browser for JS-rendered pages.
|
|
162
503
|
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
504
|
+
- engine:"auto" (default): classifies the query, fans out IN PARALLEL, dedupes by host+path and fuses with weighted RRF (stackoverflow/bing 0.4, others 0.2) into a top-10 list tagged with each hit's source engine(s). Routing: error/exception/camelCase-API tokens → stackoverflow+github+bing · dev-ecosystem (release/framework/npm/open-source…) → hn+github+npm · Chinese / general → bing. Set TM_SEARCH_DEFAULT_ENGINE to pin another default.
|
|
505
|
+
- explicit engines: bing (cn.bing.com — the ONLY live CN HTML SERP; sogou/so/baidu/bing-int were removed after a live benchmark showed them serving anti-bot shells) · stackoverflow (api.stackexchange.com question search, no key, 300/day/IP — quota tracked, auto degrades to bing when spent) · hn (hn.algolia.com story search, no key) · github (repo search API: stars + description; qualifier pass-through whitelisted, e.g. query "vector db stars:>500 language:rust org:redis" — org:/user:/stars:/language: fold into q=, the rest stays free text) · npm (registry search: name@version + description) · moegirl (MediaWiki API: titles + snippets) · bilibili.
|
|
506
|
+
- Hits carry a 1-2 line snippet WHEN THE ENGINE PROVIDES ONE (bing b_caption when present, SO score/tags composite, HN points/comments, npm/github descriptions) — never fabricated.
|
|
507
|
+
- CJK tip: multi-word Chinese queries are auto-quoted on their core phrase for bing; if still noisy, search a single canonical term first (or quote it yourself).
|
|
508
|
+
- Baidu/sogou-style anti-bot shells are gone from the table; empty results still name alternative engines — switch, don't retry the same one.
|
|
166
509
|
- Governance: engine hosts outside a custom TM_WEBFETCH_ALLOWED_DOMAINS route through the OFFICIAL confirmation dialog (approve to proceed); redirects re-checked per hop; env-file URLs and non-http(s) schemes are hard-rejected.
|
|
167
510
|
- URL-encode nothing yourself — pass the raw query; this tool encodes it.`;
|
|
168
511
|
/** Build the tm_search ToolDefinition over the SHARED main pipelines
|
|
169
512
|
* instance. `fetchImpl` is injectable for tests. */
|
|
170
513
|
export function buildTmSearchTool(deps) {
|
|
171
514
|
const { pipelines, cfg } = deps;
|
|
172
|
-
|
|
515
|
+
// T4: the DEFAULT seed carries api.stackexchange.com + hn.algolia.com
|
|
516
|
+
// (consumer-side merge — config.ts's constant is untouched).
|
|
517
|
+
const allowlist = seedWebfetchDomains(cfg.webfetchAllowedDomains);
|
|
173
518
|
return {
|
|
174
519
|
description: SEARCH_DESCRIPTION,
|
|
175
520
|
args: deps.args ?? {
|
|
176
521
|
query: { descriptor: "query: string (required, raw text — CJK fine, encoded here)" },
|
|
177
522
|
engine: {
|
|
178
|
-
descriptor: `engine: ${SEARCH_ENGINE_NAMES.join("|")} (optional, default
|
|
523
|
+
descriptor: `engine: ${AUTO_ENGINE_KEY}|${SEARCH_ENGINE_NAMES.join("|")} (optional, default ${cfg.searchDefaultEngine || AUTO_ENGINE_KEY})`,
|
|
179
524
|
},
|
|
180
525
|
},
|
|
181
526
|
execute: async (rawArgs, ctx) => {
|
|
@@ -186,14 +531,58 @@ export function buildTmSearchTool(deps) {
|
|
|
186
531
|
if (!query) {
|
|
187
532
|
return toToolResult(tmError(tool, "args", "缺少 query 参数"));
|
|
188
533
|
}
|
|
189
|
-
const engineKey = String(args.engine ??
|
|
534
|
+
const engineKey = String(args.engine ?? cfg.searchDefaultEngine ?? AUTO_ENGINE_KEY).trim().toLowerCase() || AUTO_ENGINE_KEY;
|
|
535
|
+
// ---------- auto: classify → parallel fan-out → normalize → RRF ----------
|
|
536
|
+
if (engineKey === AUTO_ENGINE_KEY) {
|
|
537
|
+
const { routes, queryClass, notes } = resolveAutoRoutes(query);
|
|
538
|
+
const stepId = pipelines.nextStepId();
|
|
539
|
+
pipelines.store.appendTrajectory({ tool, step_id: stepId, event: "call", engine: AUTO_ENGINE_KEY, routes });
|
|
540
|
+
const settled = await Promise.all(routes.map(async (key) => {
|
|
541
|
+
const engine = SEARCH_ENGINES[key];
|
|
542
|
+
const prepared = engine.prepareQuery ? engine.prepareQuery(query) : query;
|
|
543
|
+
const target = new URL(engine.buildUrl(encodeURIComponent(prepared)));
|
|
544
|
+
if (!hostAllowed(target.hostname, allowlist)) {
|
|
545
|
+
// a custom-narrowed allowlist: auto SKIPS (asking N dialogs
|
|
546
|
+
// for one search is noise — the explicit path still asks)
|
|
547
|
+
return { engine: key, hits: [], note: `${key} 主机不在白名单,已跳过` };
|
|
548
|
+
}
|
|
549
|
+
try {
|
|
550
|
+
const res = await fetchWebText(target, allowlist, { fetchImpl: deps.fetchImpl });
|
|
551
|
+
return { engine: key, hits: bodyToHits(engine, res.text) };
|
|
552
|
+
}
|
|
553
|
+
catch (err) {
|
|
554
|
+
const e = err;
|
|
555
|
+
return { engine: key, hits: [], note: `${key} 失败(${shorten(e?.message ?? e, 80)})` };
|
|
556
|
+
}
|
|
557
|
+
}));
|
|
558
|
+
const groups = settled.filter((g) => g.hits.length > 0);
|
|
559
|
+
for (const g of settled)
|
|
560
|
+
if (g.note)
|
|
561
|
+
notes.push(g.note);
|
|
562
|
+
if (groups.length === 0) {
|
|
563
|
+
return toToolResult(tmError(tool, "execute", `auto(${queryClass}: ${routes.join("+")}) 没有返回可提取的结果${notes.length ? `(${notes.join(";")})` : ""}。换显式引擎试试: ${SEARCH_ENGINE_NAMES.join(", ")},或缩小/换词。`));
|
|
564
|
+
}
|
|
565
|
+
const fused = fuseRrf(groups);
|
|
566
|
+
if (fused.length === 0) {
|
|
567
|
+
return toToolResult(tmError(tool, "execute", `auto(${routes.join("+")}) 结果为空——换显式引擎或换词`));
|
|
568
|
+
}
|
|
569
|
+
const rendered = renderFusedHits(query, routes, fused, notes);
|
|
570
|
+
return toToolResult(pipelines.govern(stepId, tool, rendered, {
|
|
571
|
+
contentType: detectContentType(rendered),
|
|
572
|
+
clue: `search auto(${queryClass}) routes=${routes.join("+")} q=${shorten(query, 80)}`,
|
|
573
|
+
}));
|
|
574
|
+
}
|
|
575
|
+
// ---------- explicit single engine ----------
|
|
190
576
|
const engine = SEARCH_ENGINES[engineKey];
|
|
191
577
|
if (!engine) {
|
|
192
|
-
return toToolResult(tmError(tool, "args", `未知引擎 "${shorten(engineKey, 40)}" —— 可用: ${SEARCH_ENGINE_NAMES.join(", ")}`));
|
|
578
|
+
return toToolResult(tmError(tool, "args", `未知引擎 "${shorten(engineKey, 40)}" —— 可用: ${AUTO_ENGINE_KEY}, ${SEARCH_ENGINE_NAMES.join(", ")}`));
|
|
193
579
|
}
|
|
580
|
+
// a bad TM_SEARCH_DEFAULT_ENGINE value lands here too (no explicit
|
|
581
|
+
// engine was given) — the roster above names `auto` as the fix.
|
|
194
582
|
const stepId = pipelines.nextStepId();
|
|
195
|
-
pipelines.store.appendTrajectory({ tool, step_id: stepId, event: "call" });
|
|
196
|
-
const
|
|
583
|
+
pipelines.store.appendTrajectory({ tool, step_id: stepId, event: "call", engine: engine.name });
|
|
584
|
+
const prepared = engine.prepareQuery ? engine.prepareQuery(query) : query;
|
|
585
|
+
const target = new URL(engine.buildUrl(encodeURIComponent(prepared)));
|
|
197
586
|
// engine host outside a CUSTOM allowlist → the OFFICIAL dialog decides
|
|
198
587
|
// (seeded configs always cover every engine, so this only fires when
|
|
199
588
|
// the user narrowed TM_WEBFETCH_ALLOWED_DOMAINS)
|
|
@@ -228,6 +617,12 @@ export function buildTmSearchTool(deps) {
|
|
|
228
617
|
else if (engine.kind === "wiki-json") {
|
|
229
618
|
rendered = renderWikiResults(query, res.text);
|
|
230
619
|
}
|
|
620
|
+
else if (engine.kind === "so-json") {
|
|
621
|
+
rendered = renderSoResults(query, res.text);
|
|
622
|
+
}
|
|
623
|
+
else if (engine.kind === "hn-json") {
|
|
624
|
+
rendered = renderHnResults(query, res.text);
|
|
625
|
+
}
|
|
231
626
|
else {
|
|
232
627
|
const hits = extractHtmlResults(res.text);
|
|
233
628
|
rendered = hits.length > 0 ? renderSearchHits(query, engine.name, hits) : null;
|
package/dist/tm/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tm/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tm/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,GAGpB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAgBnD,6CAA6C;AAE7C;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACrC,IAAI,CAAC,2CAA2C,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACnC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAA;IAChB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,4CAA4C,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;QAC9E,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC,CAAA;YACX,OAAO,GAAG,CAAC,CAAA;QACb,CAAC;IACH,CAAC,CAAC,CAAA;IACF,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5C,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;IACvB,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAA;IAClC,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC;AAED;;;oDAGoD;AACpD,MAAM,eAAe,GAAG,oCAAoC,CAAA;AAE5D,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACjD,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;;YAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAA;AAC9D,CAAC;AAMD,mEAAmE;AACnE,sEAAsE;AACtE,4DAA4D;AAC5D,MAAM,aAAa,GACjB,0QAA0Q,CAAA;AAE5Q,2EAA2E;AAC3E,gBAAgB;AAChB,MAAM,gBAAgB,GACpB,+KAA+K,CAAA;AAEjL,MAAM,MAAM,GAAG,2CAA2C,CAAA;AAE1D,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAA;IAClD,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,eAAe,CAAA;IACxD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACpC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,WAAW,GAAiC;IAChD,YAAY,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC;IACjD,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACxC,GAAG,EAAE,CAAC,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,MAAM,CAAC;CAClB,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAA;AAErC;sDACsD;AACtD,MAAM,KAAK,GAAG,EAAE,CAAA;AAChB,MAAM,WAAW,GAA2B,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA;AAC7E,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAE9B;;;4DAG4D;AAC5D,MAAM,CAAC,MAAM,QAAQ,GAAkE;IACrF,GAAG,EAAE,GAAG;IACR,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,KAAK;CACjB,CAAA;AAED,MAAM,UAAU,YAAY;IAC1B,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAA;IAClB,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAA;AAC5B,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAA;IACzC,IAAI,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC3D,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjD,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;AACtC,CAAC;AAED,wCAAwC;AAExC;;uEAEuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAiC;IAC1D,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gCAAgC,CAAC,EAAE;QACpD,YAAY,EAAE,gBAAgB;QAC9B,GAAG,EAAE,wCAAwC;KAC9C;IACD,aAAa,EAAE;QACb,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CACd,iFAAiF,CAAC,iCAAiC;QACrH,GAAG,EAAE,4CAA4C;KAClD;IACD,EAAE,EAAE;QACF,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,8CAA8C,CAAC,4BAA4B;QAC5F,GAAG,EAAE,+BAA+B;KACrC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,2CAA2C,CAAC,EAAE;QAC/D,GAAG,EAAE,6BAA6B;KACnC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,2EAA2E,CAAC,yBAAyB;QACtH,GAAG,EAAE,uDAAuD;KAC7D;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,+CAA+C,CAAC,UAAU;QAC3E,GAAG,EAAE,gDAAgD;KACtD;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gDAAgD,CAAC,cAAc;QAChF,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,GAAG,EAAE,mCAAmC;KACzC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AAE9D,MAAM,eAAe,GAAG,EAAE,CAAA;AAa1B,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAKH,CAAA;IACD,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,OAAO,IAAI,EAAE,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC9C,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAA;QACzC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,KAAK,CAAC,CAAA;IACjD,CAAC;IACD,IAAI,OAAO,IAAI,EAAE,SAAS,KAAK,QAAQ;QAAE,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAA;IACtE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1D,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,EAA6B,CAAA;QACvC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;YAAE,SAAQ;QAC/C,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC1B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAC3B,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC;YACzC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;YACnC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;SACtD,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAA;AAC7D,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAU;IACpC,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,YAAY,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5F,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACzE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAUD,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAA0C,CAAA;IAC9C,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACxD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,EAA6B,CAAA;QACvC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;YAAE,SAAQ;QAC/C,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,wCAAwC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;YAC9F,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;YAC7B,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC;YACzC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACpD,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAA;AAC9D,CAAC;AAED,4EAA4E;AAE5E,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,IAAY;IAC1D,IAAI,IAAsH,CAAA;IAC1H,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACrC,MAAM,KAAK,GAAG,CAAC,mBAAmB,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACzF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACjE,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE,CAAA;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAA;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACtF,KAAK,CAAC,IAAI,CAAC,iCAAiC,IAAI,SAAS,CAAC,CAAA;IAC5D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;IAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,IAAY;IAC7D,IAAI,IAGH,CAAA;IACD,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACnC,MAAM,KAAK,GAAG,CAAC,sBAAsB,KAAK,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACjG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACvD,KAAK,CAAC,IAAI,CACR,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,SAAS,IAAI,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,gBAAgB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3G,CAAA;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;IAC/C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAA;IACnG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;qDACqD;AACrD,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,IAAY;IAC3D,IAAI,IAKH,CAAA;IACD,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IACzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACnC,MAAM,KAAK,GAAG;QACZ,uBAAuB,KAAK,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO;KACrG,CAAC;IACF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAA;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;aACrC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;aACvB,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAChB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACjE,KAAK,CAAC,IAAI,CAAC,oCAAoC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC7E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;IAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;;+BAG+B;AAC/B,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,IAAY;IACzD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACrD,MAAM,KAAK,GAAG,CAAC,6BAA6B,KAAK,OAAO,MAAM,CAAC,KAAK,OAAO,CAAC,CAAA;IAC5E,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC/D,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7B,CAAC;IACD,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAA;IAC5B,KAAK,CAAC,IAAI,CACR,iBAAiB,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,IAAI,CAC5J,CAAA;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;yDACyD;AACzD,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,IAAY;IACzD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACrD,MAAM,KAAK,GAAG,CAAC,kBAAkB,KAAK,OAAO,MAAM,CAAC,KAAK,OAAO,CAAC,CAAA;IACjE,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACvE,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,GAAG,EAAE,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,IAAI,EAAE,CAAC,CAAA;QAC7C,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IAC5B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;IAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;iEACiE;AACjE,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA;AACjD,CAAC;AAED,iFAAiF;AAEjF;;4DAE4D;AAC5D,SAAS,UAAU,CAAC,MAAoB,EAAE,IAAY;IACpD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA;QACjD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;YACjC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClE,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,GAAG,EAAE,EAAE,CAAC,IAAI;gBACZ,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;aAChC,CAAC,CAAC,CAAA;QACL,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;YACjC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClE,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,GAAG,EAAE,EAAE,CAAC,GAAG;gBACX,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,aAAa,EAAE,CAAC,YAAY,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;aAC1G,CAAC,CAAC,CAAA;QACL,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoG,CAAA;gBAChI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC5F,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE,CAAA;oBAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAA;oBAClC,OAAO;wBACL,KAAK,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE;wBAC5C,GAAG,EAAE,8BAA8B,IAAI,SAAS;wBAChD,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS;qBAChE,CAAA;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsH,CAAA;gBAClJ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC1F,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,SAAS,IAAI,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,gBAAgB,IAAI,CAAC,CAAC,EAAE;oBAC5E,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;oBAC9B,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS;iBACjE,CAAC,CAAC,CAAA;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA2E,CAAA;gBACvG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzG,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC;oBAC9B,GAAG,EAAE,iCAAiC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE;oBAClF,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS;iBACrF,CAAC,CAAC,CAAA;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;wCACwC;AACxC,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC3D,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACxC,OAAO,IAAI,GAAG,CAAC,CAAA;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;IACnB,CAAC;AACH,CAAC;AAOD;;uCAEuC;AACvC,MAAM,UAAU,OAAO,CAAC,MAAqB,EAAE,GAAG,GAAG,eAAe;IAKlE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAA;IACnC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAA;QAC1D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,CAAC,CAAC,GAAG;gBAAE,SAAQ;YACpB,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAC5B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC1B,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,KAAK,IAAI,GAAG,CAAA;gBACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO;oBAAE,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAA;gBAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACzE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;oBACZ,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;oBAC3D,KAAK,EAAE,GAAG;iBACX,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;SACtB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SACjC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACb,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,MAAgB,EAAE,IAAiB,EAAE,KAAe;IAC1F,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IAChE,MAAM,KAAK,GAAG;QACZ,YAAY,KAAK,OAAO,KAAK,OAAO,IAAI,CAAC,MAAM,WAAW,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI;KACpH,CAAA;IACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACrE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;QACzB,IAAI,CAAC,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IACF,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACjD,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;IAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,gCAAgC;AAEhC,MAAM,kBAAkB,GAAG;;;;;;;;0EAQ+C,CAAA;AAE1E;sDACsD;AACtD,MAAM,UAAU,iBAAiB,CAAC,IAKjC;IAKC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IAC/B,sEAAsE;IACtE,6DAA6D;IAC7D,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IACjE,OAAO;QACL,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI;YACjB,KAAK,EAAE,EAAE,UAAU,EAAE,6DAA6D,EAAE;YACpF,MAAM,EAAE;gBACN,UAAU,EAAE,WAAW,eAAe,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,mBAAmB,IAAI,eAAe,GAAG;aAC5I;SACF;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAA6C,EAAE;YACzE,MAAM,IAAI,GAAG,WAAW,CAAA;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,OAAO,IAAI,EAAE,CAAA;gBAC1B,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBACrE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;gBAC3D,CAAC;gBACD,MAAM,SAAS,GACb,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,mBAAmB,IAAI,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,eAAe,CAAA;gBAE3G,4EAA4E;gBAC5E,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;oBAClC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;oBAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,CAAA;oBACrC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAA;oBAC3G,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAA4C,EAAE;wBACjE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;wBAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;wBACzE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;wBACrE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;4BAC7C,4DAA4D;4BAC5D,0DAA0D;4BAC1D,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,cAAc,EAAE,CAAA;wBAC9D,CAAC;wBACD,IAAI,CAAC;4BACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;4BAChF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;wBAC5D,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,CAAC,GAAG,GAA2C,CAAA;4BACrD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,OAAO,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAA;wBACtF,CAAC;oBACH,CAAC,CAAC,CACH,CAAA;oBACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBACvD,KAAK,MAAM,CAAC,IAAI,OAAO;wBAAE,IAAI,CAAC,CAAC,IAAI;4BAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;oBACvD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxB,OAAO,YAAY,CACjB,OAAO,CACL,IAAI,EACJ,SAAS,EACT,QAAQ,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CACtJ,CACF,CAAA;oBACH,CAAC;oBACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;oBAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;oBAC3F,CAAC;oBACD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;oBAC7D,OAAO,YAAY,CACjB,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACvC,WAAW,EAAE,iBAAiB,CAAC,QAAQ,CAAC;wBACxC,IAAI,EAAE,eAAe,UAAU,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE;qBACtF,CAAC,CACH,CAAA;gBACH,CAAC;gBAED,+CAA+C;gBAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;gBACxC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,YAAY,CACjB,OAAO,CACL,IAAI,EACJ,MAAM,EACN,SAAS,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,eAAe,KAAK,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChG,CACF,CAAA;gBACH,CAAC;gBACD,mEAAmE;gBACnE,gEAAgE;gBAChE,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,CAAA;gBACrC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC/F,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;gBACzE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACrE,uEAAuE;gBACvE,qEAAqE;gBACrE,iDAAiD;gBACjD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;gBACvC,IAAI,GAAG,GAA2C,IAAI,CAAA;gBACtD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;oBAC7C,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE;wBAC1C,UAAU,EAAE,IAAI;wBAChB,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;wBAC7B,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;qBAC3F,CAAC,CAAA;oBACF,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;wBAC3B,OAAO,YAAY,CACjB,OAAO,CACL,IAAI,EACJ,YAAY,EACZ,OAAO,MAAM,CAAC,QAAQ,UAAU;4BAC9B,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;4BACtD,iCAAiC,CACpC,CACF,CAAA;oBACH,CAAC;oBACD,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAClC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;gBACpB,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE;oBAChD,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,GAAG,EAAE,GAAG,IAAI,SAAS;oBACrB,YAAY,EAAE,aAAa;iBAC5B,CAAC,CAAA;gBACF,IAAI,QAAQ,GAAkB,IAAI,CAAA;gBAClC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC/B,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC9C,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACzC,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;gBACjD,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACvC,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC/C,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrC,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC7C,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrC,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC7C,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACzC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBAChF,CAAC;gBACD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;oBAClC,OAAO,YAAY,CACjB,OAAO,CACL,IAAI,EACJ,SAAS,EACT,GAAG,MAAM,CAAC,IAAI,uCAAuC,MAAM,CAAC,GAAG,GAAG,CACnE,CACF,CAAA;gBACH,CAAC;gBACD,OAAO,YAAY,CACjB,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACvC,WAAW,EAAE,iBAAiB,CAAC,QAAQ,CAAC;oBACxC,IAAI,EAAE,UAAU,MAAM,CAAC,IAAI,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE;iBACtD,CAAC,CACH,CAAA;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,GAA2C,CAAA;gBACrD,IAAI,CAAC,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC7B,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC,CAAA;gBAC1E,CAAC;gBACD,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,CAAA;YAC5F,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|