@formlm/cli 0.2.4 → 0.2.5
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/exec.d.ts.map +1 -1
- package/dist/exec.js +44 -18
- package/dist/exec.js.map +1 -1
- package/package.json +1 -1
package/dist/exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,CAAC;CACX;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,GAAE,MAAe,GACzB,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,CAAC;CACX;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,GAAE,MAAe,GACzB,OAAO,CAAC,UAAU,CAAC,CA6ErB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAsDpF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAwDtE"}
|
package/dist/exec.js
CHANGED
|
@@ -21,6 +21,12 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
|
21
21
|
const url = new URL('/api/v1/mcp/exec', baseUrl);
|
|
22
22
|
const body = JSON.stringify({ cmd });
|
|
23
23
|
return new Promise((resolve) => {
|
|
24
|
+
// settled 标志防止 timeout / error / end / close 之间重复 resolve
|
|
25
|
+
let settled = false;
|
|
26
|
+
const settle = (r) => { if (!settled) {
|
|
27
|
+
settled = true;
|
|
28
|
+
resolve(r);
|
|
29
|
+
} };
|
|
24
30
|
const mod = url.protocol === 'https:' ? https : http;
|
|
25
31
|
const req = mod.request(url, {
|
|
26
32
|
method: 'POST',
|
|
@@ -36,14 +42,14 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
|
36
42
|
res.on('end', () => {
|
|
37
43
|
try {
|
|
38
44
|
const parsed = JSON.parse(data);
|
|
39
|
-
|
|
45
|
+
settle({
|
|
40
46
|
code: parsed.code ?? 0,
|
|
41
47
|
message: parsed.message ?? parsed.msg ?? 'ok',
|
|
42
48
|
data: parsed.data ?? null,
|
|
43
49
|
});
|
|
44
50
|
}
|
|
45
51
|
catch {
|
|
46
|
-
|
|
52
|
+
settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
47
53
|
}
|
|
48
54
|
// 释放 keep-alive socket,避免事件循环挂起导致进程无法退出
|
|
49
55
|
res.destroy();
|
|
@@ -59,17 +65,23 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
|
59
65
|
`2) use formlm_snapshot to check if partially generated, ` +
|
|
60
66
|
`3) use formlm_exec to complete partial results.`
|
|
61
67
|
: `Try again or simplify the command.`;
|
|
62
|
-
|
|
68
|
+
settle({
|
|
63
69
|
code: 408,
|
|
64
70
|
message: `Request timed out after ${Math.round(timeoutMs / 1000)}s. ${hint}`,
|
|
65
71
|
data: null,
|
|
66
72
|
});
|
|
67
73
|
});
|
|
74
|
+
// Error handler: 当 timeout 已 settle 则忽略后续 error(含 req.destroy() 产生的
|
|
75
|
+
// ECONNRESET);否则(代理层提前断连等)正常 settle 错误,防止 Promise 永远挂起。
|
|
68
76
|
req.on('error', (err) => {
|
|
69
|
-
|
|
70
|
-
if (err.code === 'ECONNRESET')
|
|
77
|
+
if (settled)
|
|
71
78
|
return;
|
|
72
|
-
|
|
79
|
+
settle({ code: 500, message: `Request failed: ${err.message}`, data: null });
|
|
80
|
+
});
|
|
81
|
+
// Safety net: 连接被对端关闭且未触发 error(如 nginx 静默断连 FIN),
|
|
82
|
+
// 防止 Promise 永不 resolve。
|
|
83
|
+
req.on('close', () => {
|
|
84
|
+
settle({ code: 500, message: 'Connection closed by server', data: null });
|
|
73
85
|
});
|
|
74
86
|
req.write(body);
|
|
75
87
|
req.end();
|
|
@@ -84,6 +96,11 @@ export async function authLogin(email, password) {
|
|
|
84
96
|
const md5Password = crypto.createHash('md5').update(password).digest('hex');
|
|
85
97
|
const body = JSON.stringify({ email, password: md5Password });
|
|
86
98
|
return new Promise((resolve) => {
|
|
99
|
+
let settled = false;
|
|
100
|
+
const settle = (r) => { if (!settled) {
|
|
101
|
+
settled = true;
|
|
102
|
+
resolve(r);
|
|
103
|
+
} };
|
|
87
104
|
const mod = url.protocol === 'https:' ? https : http;
|
|
88
105
|
const req = mod.request(url, {
|
|
89
106
|
method: 'POST',
|
|
@@ -98,14 +115,14 @@ export async function authLogin(email, password) {
|
|
|
98
115
|
res.on('end', () => {
|
|
99
116
|
try {
|
|
100
117
|
const parsed = JSON.parse(data);
|
|
101
|
-
|
|
118
|
+
settle({
|
|
102
119
|
code: parsed.code ?? 0,
|
|
103
120
|
message: parsed.message ?? parsed.msg ?? 'ok',
|
|
104
121
|
data: parsed.data ?? null,
|
|
105
122
|
});
|
|
106
123
|
}
|
|
107
124
|
catch {
|
|
108
|
-
|
|
125
|
+
settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
109
126
|
}
|
|
110
127
|
// 释放 keep-alive socket,避免事件循环挂起
|
|
111
128
|
res.destroy();
|
|
@@ -113,13 +130,15 @@ export async function authLogin(email, password) {
|
|
|
113
130
|
});
|
|
114
131
|
req.on('timeout', () => {
|
|
115
132
|
req.destroy();
|
|
116
|
-
|
|
133
|
+
settle({ code: 408, message: 'Auth request timed out after 30s', data: null });
|
|
117
134
|
});
|
|
118
135
|
req.on('error', (err) => {
|
|
119
|
-
|
|
120
|
-
if (err.code === 'ECONNRESET')
|
|
136
|
+
if (settled)
|
|
121
137
|
return;
|
|
122
|
-
|
|
138
|
+
settle({ code: 500, message: `Request failed: ${err.message}`, data: null });
|
|
139
|
+
});
|
|
140
|
+
req.on('close', () => {
|
|
141
|
+
settle({ code: 500, message: 'Connection closed by server', data: null });
|
|
123
142
|
});
|
|
124
143
|
req.write(body);
|
|
125
144
|
req.end();
|
|
@@ -136,6 +155,11 @@ export async function authMe(profileName) {
|
|
|
136
155
|
}
|
|
137
156
|
const url = new URL('/api/v1/mcp/auth/me', baseUrl);
|
|
138
157
|
return new Promise((resolve) => {
|
|
158
|
+
let settled = false;
|
|
159
|
+
const settle = (r) => { if (!settled) {
|
|
160
|
+
settled = true;
|
|
161
|
+
resolve(r);
|
|
162
|
+
} };
|
|
139
163
|
const mod = url.protocol === 'https:' ? https : http;
|
|
140
164
|
const req = mod.request(url, {
|
|
141
165
|
method: 'GET',
|
|
@@ -149,14 +173,14 @@ export async function authMe(profileName) {
|
|
|
149
173
|
res.on('end', () => {
|
|
150
174
|
try {
|
|
151
175
|
const parsed = JSON.parse(data);
|
|
152
|
-
|
|
176
|
+
settle({
|
|
153
177
|
code: parsed.code ?? 0,
|
|
154
178
|
message: parsed.message ?? parsed.msg ?? 'ok',
|
|
155
179
|
data: parsed.data ?? null,
|
|
156
180
|
});
|
|
157
181
|
}
|
|
158
182
|
catch {
|
|
159
|
-
|
|
183
|
+
settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
160
184
|
}
|
|
161
185
|
// 释放 keep-alive socket,避免事件循环挂起
|
|
162
186
|
res.destroy();
|
|
@@ -164,13 +188,15 @@ export async function authMe(profileName) {
|
|
|
164
188
|
});
|
|
165
189
|
req.on('timeout', () => {
|
|
166
190
|
req.destroy();
|
|
167
|
-
|
|
191
|
+
settle({ code: 408, message: 'Auth check timed out after 15s', data: null });
|
|
168
192
|
});
|
|
169
193
|
req.on('error', (err) => {
|
|
170
|
-
|
|
171
|
-
if (err.code === 'ECONNRESET')
|
|
194
|
+
if (settled)
|
|
172
195
|
return;
|
|
173
|
-
|
|
196
|
+
settle({ code: 500, message: `Request failed: ${err.message}`, data: null });
|
|
197
|
+
});
|
|
198
|
+
req.on('close', () => {
|
|
199
|
+
settle({ code: 500, message: 'Connection closed by server', data: null });
|
|
174
200
|
});
|
|
175
201
|
req.end();
|
|
176
202
|
});
|
package/dist/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQnD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAW,EACX,WAAoB,EACpB,YAAoB,MAAM;IAE1B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,2CAA2C,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzF,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAErC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,KAAK;gBACtB,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;aAC1C;YACD,OAAO,EAAE,SAAS;SACnB,EAAE,CAAC,GAAG,EAAE,EAAE;YACT,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChC,
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQnD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAW,EACX,WAAoB,EACpB,YAAoB,MAAM;IAE1B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,2CAA2C,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzF,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAErC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,0DAA0D;QAC1D,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,CAAa,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,KAAK;gBACtB,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;aAC1C;YACD,OAAO,EAAE,SAAS;SACnB,EAAE,CAAC,GAAG,EAAE,EAAE;YACT,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChC,MAAM,CAAC;wBACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;wBACtB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI;wBAC7C,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5F,CAAC;gBACD,wCAAwC;gBACxC,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,2DAA2D;QAC3D,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;YACpC,MAAM,IAAI,GAAG,OAAO;gBAClB,CAAC,CAAC,iEAAiE;oBACjE,iFAAiF;oBACjF,0DAA0D;oBAC1D,iDAAiD;gBACnD,CAAC,CAAC,oCAAoC,CAAC;YACzC,MAAM,CAAC;gBACL,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,2BAA2B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE;gBAC5E,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,oEAAoE;QACpE,wDAAwD;QACxD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACtB,IAAI,OAAO;gBAAE,OAAO;YACpB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,mDAAmD;QACnD,yBAAyB;QACzB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,QAAgB;IAC7D,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAE9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,CAAa,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;aAC1C;YACD,OAAO,EAAE,MAAM,EAAE,qDAAqD;SACvE,EAAE,CAAC,GAAG,EAAE,EAAE;YACT,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChC,MAAM,CAAC;wBACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;wBACtB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI;wBAC7C,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5F,CAAC;gBACD,gCAAgC;gBAChC,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,kCAAkC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACtB,IAAI,OAAO;gBAAE,OAAO;YACpB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,WAAoB;IAC/C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAEpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,CAAa,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,eAAe,EAAE,KAAK;aACvB;YACD,OAAO,EAAE,MAAM,EAAE,4DAA4D;SAC9E,EAAE,CAAC,GAAG,EAAE,EAAE;YACT,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChC,MAAM,CAAC;wBACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;wBACtB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI;wBAC7C,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5F,CAAC;gBACD,gCAAgC;gBAChC,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,gCAAgC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACtB,IAAI,OAAO;gBAAE,OAAO;YACpB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC"}
|