litmus-cli 1.4.53 → 1.4.55
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/commands/init.d.ts +0 -8
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +98 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pause.d.ts.map +1 -1
- package/dist/commands/pause.js +23 -20
- package/dist/commands/pause.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +32 -22
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/submit.d.ts.map +1 -1
- package/dist/commands/submit.js +89 -107
- package/dist/commands/submit.js.map +1 -1
- package/dist/lib/session-end.d.ts.map +1 -1
- package/dist/lib/session-end.js +4 -8
- package/dist/lib/session-end.js.map +1 -1
- package/dist/lib/tracker.d.ts +19 -0
- package/dist/lib/tracker.d.ts.map +1 -1
- package/dist/lib/tracker.js +70 -1
- package/dist/lib/tracker.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/submit.js
CHANGED
|
@@ -7,13 +7,14 @@ import * as readline from "readline/promises";
|
|
|
7
7
|
import { stdin as input, stdout as output } from "process";
|
|
8
8
|
import { readConfig, findProjectRoot, findNestedWorkspaces, getEffectiveDeadline } from "../lib/config.js";
|
|
9
9
|
import { submitZip, ServerError, isRetryableUploadError } from "../lib/api.js";
|
|
10
|
-
import { createSubmissionZip, UnreadableTreeError
|
|
11
|
-
import { fatal,
|
|
10
|
+
import { createSubmissionZip, UnreadableTreeError } from "../lib/zip.js";
|
|
11
|
+
import { fatal, warn, info, setErrorContext, reportSuccess, reportEvent } from "../lib/errors.js";
|
|
12
12
|
import { formatDeadlinePT } from "../lib/format-time.js";
|
|
13
13
|
import { releaseAiTrackingForAssessment } from "../lib/ai-tracking.js";
|
|
14
14
|
import { kernelNameFor, unregisterKernel } from "../lib/python-env.js";
|
|
15
15
|
import { submitsWorkspace } from "../lib/submit-route.js";
|
|
16
16
|
import { runPush } from "./push.js";
|
|
17
|
+
import { noteLines, cautionLines } from "../lib/notice.js";
|
|
17
18
|
export async function runSubmit(opts) {
|
|
18
19
|
// Step -1: inside a Codespaces v2 workspace this command submits the
|
|
19
20
|
// workspace — exactly what `litmus push` does (ENG-2523). It must run FIRST:
|
|
@@ -42,8 +43,7 @@ export async function runSubmit(opts) {
|
|
|
42
43
|
// exactly one initialized workspace. A CLIPPED walk may have missed
|
|
43
44
|
// one, and a lone visible match could be the stale attempt — packaging
|
|
44
45
|
// it silently would ship the wrong work, so that case stops below.
|
|
45
|
-
console.log();
|
|
46
|
-
console.log(chalk.yellow(`This folder is not an initialized workspace, but ./${path.relative(process.cwd(), scan.workspaces[0])} is — submitting that folder.`));
|
|
46
|
+
console.log(` Submitting ./${path.relative(process.cwd(), scan.workspaces[0])}, the assessment folder inside this one.`);
|
|
47
47
|
process.chdir(scan.workspaces[0]);
|
|
48
48
|
}
|
|
49
49
|
else if (scan.workspaces.length > 0) {
|
|
@@ -61,26 +61,11 @@ export async function runSubmit(opts) {
|
|
|
61
61
|
if (!config) {
|
|
62
62
|
fatal("No Litmus assessment found in this directory.", "Run this command from inside your assessment folder, or run 'litmus init <token>' first.", { severity: "warning" });
|
|
63
63
|
}
|
|
64
|
-
// Step 2:
|
|
65
|
-
|
|
64
|
+
// Step 2: The effective deadline (assessment deadline and/or per-candidate
|
|
65
|
+
// time limit). Checked once, after packaging (below): packaging a large folder
|
|
66
|
+
// takes time, and a check before it missed a deadline that passed during it
|
|
67
|
+
// (Greptile on #3161).
|
|
66
68
|
const effectiveDeadline = getEffectiveDeadline(config);
|
|
67
|
-
if (effectiveDeadline !== null) {
|
|
68
|
-
// 5-minute grace window: covers auto-submit process spawn overhead and
|
|
69
|
-
// gives candidates time to run `litmus submit` manually if auto-submit failed.
|
|
70
|
-
if (now.getTime() > effectiveDeadline + 5 * 60000) {
|
|
71
|
-
// ENG-1490: the server owns the deadline verdict — this used to be a
|
|
72
|
-
// local fatal, which was wrong in BOTH directions. The local config can
|
|
73
|
-
// be stale-early (deadline extended server-side and never synced down),
|
|
74
|
-
// and even past a real cutoff the server may still accept the zip into
|
|
75
|
-
// its recovery window (the auto-submit cron's empty-submission row).
|
|
76
|
-
// Refusing here guaranteed the worst outcome: code that never even got
|
|
77
|
-
// offered to the server. Warn and proceed; a genuine rejection comes
|
|
78
|
-
// back below with the server's own message and dashboard handoff.
|
|
79
|
-
warn(`The submission deadline on record here passed at ${formatDeadlinePT(new Date(effectiveDeadline))}.`);
|
|
80
|
-
console.log(chalk.dim(" Submitting anyway — the server has the authoritative deadline and decides whether this is accepted."));
|
|
81
|
-
console.log();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
69
|
// Step 3: Find the project root (where .litmus/config.json lives).
|
|
85
70
|
// Step 0 already moved us inside the workspace when we started above it.
|
|
86
71
|
const projectRoot = findProjectRoot() ?? process.cwd();
|
|
@@ -89,26 +74,53 @@ export async function runSubmit(opts) {
|
|
|
89
74
|
let zipResult;
|
|
90
75
|
try {
|
|
91
76
|
zipResult = await createSubmissionZip(projectRoot);
|
|
92
|
-
zipSpinner.succeed("Submission prepared");
|
|
93
77
|
}
|
|
94
78
|
catch (err) {
|
|
95
|
-
|
|
79
|
+
// `fatal`'s Error: line is the failure; a ✖ spinner line above it said it twice.
|
|
80
|
+
zipSpinner.stop();
|
|
96
81
|
// ENG-1884: too much of the tree was unreadable to ship an honest archive.
|
|
97
82
|
// Distinct from a generic archiver failure — the candidate can usually fix
|
|
98
83
|
// this themselves, and naming the paths is the whole point.
|
|
99
84
|
if (err instanceof UnreadableTreeError) {
|
|
100
|
-
|
|
85
|
+
// ENG-2895: the names used to reach only our report. The candidate is the
|
|
86
|
+
// one who can close what is holding them.
|
|
87
|
+
const shown = err.skipped.slice(0, 5).map((e) => ` ${e.path}`);
|
|
88
|
+
if (err.skipped.length > 5)
|
|
89
|
+
shown.push(` ...and ${err.skipped.length - 5} more`);
|
|
90
|
+
fatal([err.message, ...shown].join("\n"), "Close any program holding these files open (editor, antivirus, file sync) and run 'litmus submit' again.", { internalDetail: describeSkipped(err.skipped, err.skipped.length), severity: "error" });
|
|
101
91
|
}
|
|
102
92
|
const msg = err instanceof Error ? err.message : String(err);
|
|
103
|
-
fatal(msg,
|
|
93
|
+
fatal(msg, "Run litmus submit again. If it keeps failing, contact the company.");
|
|
104
94
|
}
|
|
105
95
|
const { zipPath, fileCount, uncompressedBytes, zipBytes, topDirs, skipped } = zipResult;
|
|
96
|
+
const zipSizeMb = (zipBytes / (1024 * 1024)).toFixed(1);
|
|
97
|
+
// ENG-2895: one line for what was packaged and how long is left, in place of a
|
|
98
|
+
// five-line summary. The deadline itself is already in `litmus status`. Counted
|
|
99
|
+
// to the EFFECTIVE deadline, the earlier of the assessment deadline and the time
|
|
100
|
+
// limit; the count is shown only for a timed session, where it is minutes
|
|
101
|
+
// rather than days. Read once, here, so the count and the warning agree.
|
|
102
|
+
const remainingMs = effectiveDeadline === null ? null : effectiveDeadline - Date.now();
|
|
103
|
+
const timeLeft = remainingMs !== null && remainingMs > 0 && config.timeLimit && config.startedAt
|
|
104
|
+
? ` ${Math.floor(remainingMs / (1000 * 60))} min left.`
|
|
105
|
+
: "";
|
|
106
|
+
zipSpinner.succeed(`Packaged ${fileCount} files (${zipSizeMb} MB).${timeLeft}`);
|
|
107
|
+
if (effectiveDeadline !== null && remainingMs !== null && remainingMs <= 0) {
|
|
108
|
+
// Warned from the moment it passes, including the 5-minute grace the server
|
|
109
|
+
// allows after it. ENG-1490: the server owns the deadline verdict — this used
|
|
110
|
+
// to be a local fatal, which was wrong in BOTH directions. The local config
|
|
111
|
+
// can be stale-early (deadline extended server-side and never synced down),
|
|
112
|
+
// and even past a real cutoff the server may still accept the zip into its
|
|
113
|
+
// recovery window (the auto-submit cron's empty-submission row). Refusing
|
|
114
|
+
// here guaranteed the worst outcome: code that never even got offered to the
|
|
115
|
+
// server. Warn and proceed; a genuine rejection comes back below with the
|
|
116
|
+
// server's own message and dashboard handoff.
|
|
117
|
+
warn(`Your deadline (${formatDeadlinePT(new Date(effectiveDeadline))}) has passed. Submitting anyway; Litmus decides whether it counts.`);
|
|
118
|
+
}
|
|
106
119
|
// ENG-1884: the archive was completed WITHOUT these paths. A silent skip is
|
|
107
120
|
// its own bug — the candidate needs to know their submission is incomplete
|
|
108
121
|
// while they can still do something about it, and the grader gets the same
|
|
109
122
|
// list from SKIPPED_MANIFEST_PATH inside the zip.
|
|
110
123
|
if (skipped.length > 0) {
|
|
111
|
-
console.log();
|
|
112
124
|
warn(`${skipped.length} item(s) could not be read and are NOT in your submission:`);
|
|
113
125
|
for (const entry of skipped.slice(0, 10)) {
|
|
114
126
|
const kind = entry.kind === "directory" ? " (directory — its contents are missing too)" : "";
|
|
@@ -117,10 +129,13 @@ export async function runSubmit(opts) {
|
|
|
117
129
|
if (skipped.length > 10) {
|
|
118
130
|
console.log(chalk.dim(` ...and ${skipped.length - 10} more`));
|
|
119
131
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
132
|
+
// With --yes there is no question to answer n to, and the upload goes ahead
|
|
133
|
+
// (Greptile on #3161), so the only route left is the company.
|
|
134
|
+
const skippedAdvice = opts.yes
|
|
135
|
+
? "If any of these are your work, contact the company after this submits."
|
|
136
|
+
: "If any of these are your work, answer n, close the program using them, and run litmus submit again.";
|
|
137
|
+
for (const line of noteLines(skippedAdvice))
|
|
138
|
+
console.log(line);
|
|
124
139
|
// Log-only severity on purpose: the submission SUCCEEDED, so this is not a
|
|
125
140
|
// platform-health page (that stays for the hard-fail above, which is the
|
|
126
141
|
// case where a candidate is actually blocked). It stays searchable server-side.
|
|
@@ -131,7 +146,6 @@ export async function runSubmit(opts) {
|
|
|
131
146
|
if (zipBytes > ZIP_WARN_BYTES) {
|
|
132
147
|
const zipMb = (zipBytes / (1024 * 1024)).toFixed(1);
|
|
133
148
|
const uncompMb = (uncompressedBytes / (1024 * 1024)).toFixed(1);
|
|
134
|
-
console.log();
|
|
135
149
|
warn(`Submission is ${zipMb} MB (${fileCount} files, ${uncompMb} MB uncompressed).`);
|
|
136
150
|
console.log(chalk.dim(" Largest directories:"));
|
|
137
151
|
for (const { dir, bytes } of topDirs.slice(0, 5)) {
|
|
@@ -139,61 +153,25 @@ export async function runSubmit(opts) {
|
|
|
139
153
|
}
|
|
140
154
|
console.log(chalk.dim(" If this looks wrong, cancel and remove large files before submitting."));
|
|
141
155
|
}
|
|
142
|
-
// Step 5:
|
|
143
|
-
const zipSizeMb = (zipBytes / (1024 * 1024)).toFixed(1);
|
|
156
|
+
// Step 5: Warn about a missing activity log
|
|
144
157
|
const folderName = path.basename(projectRoot);
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
console.log(chalk.bold(` Submitting: ${config.assessmentName}`));
|
|
148
|
-
info(` Upload size: ${zipSizeMb} MB (${fileCount} files)`);
|
|
149
|
-
if (hasActivityLog) {
|
|
150
|
-
info(` Tracking log included`);
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
warn(`No activity tracking log found (.litmus/activity.jsonl missing).`);
|
|
154
|
-
console.log(chalk.dim(" The background tracker may not have run. Activity metrics won't be available to reviewers."));
|
|
155
|
-
console.log(chalk.dim(" You can still submit — your code and git history will be evaluated."));
|
|
156
|
-
console.log();
|
|
158
|
+
if (!existsSync(path.join(projectRoot, ".litmus", "activity.jsonl"))) {
|
|
159
|
+
warn("No activity was recorded in this folder. Run litmus doctor to restart tracking, or submit anyway; your code and git history are still reviewed.");
|
|
157
160
|
}
|
|
158
|
-
// Mirror status.ts: show both the long completion-window deadline and the
|
|
159
|
-
// per-session time-limit when both apply. Showing only `config.deadline`
|
|
160
|
-
// misled candidates with a short time-limit on a long-window assessment
|
|
161
|
-
// (Raymond's case — his email screenshot showed the 6/5 deadline despite
|
|
162
|
-
// the binding cutoff being 75 min after start). The CLI's own pre-submit
|
|
163
|
-
// guard above uses `effectiveDeadline` (the min), so the candidate is
|
|
164
|
-
// still blocked client-side past the time-limit; this just makes the
|
|
165
|
-
// displayed bounds match status / init.
|
|
166
|
-
if (config.deadline) {
|
|
167
|
-
info(` Deadline: ${formatDeadlinePT(new Date(config.deadline))}`);
|
|
168
|
-
}
|
|
169
|
-
if (config.timeLimit && config.startedAt) {
|
|
170
|
-
const timeLimitDeadlineMs = new Date(config.startedAt).getTime() + config.timeLimit * 60 * 1000;
|
|
171
|
-
const remainingMs = timeLimitDeadlineMs - Date.now();
|
|
172
|
-
if (remainingMs > 0) {
|
|
173
|
-
const remMins = Math.floor(remainingMs / (1000 * 60));
|
|
174
|
-
info(` Time limit: ${config.timeLimit} min (${remMins} min remaining)`);
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
warn(`Time limit: EXCEEDED (${config.timeLimit} min)`);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
console.log();
|
|
181
161
|
// Step 6: Confirm (unless --yes flag)
|
|
182
162
|
if (!opts.yes) {
|
|
183
|
-
const promptText =
|
|
163
|
+
const promptText = `Submit ${config.assessmentName}? `;
|
|
184
164
|
const rl = readline.createInterface({ input, output });
|
|
185
165
|
let answer;
|
|
186
166
|
try {
|
|
187
|
-
answer = await rl.question(
|
|
167
|
+
answer = await rl.question(` ${promptText}` + chalk.dim("[Y/n] "));
|
|
188
168
|
}
|
|
189
169
|
finally {
|
|
190
170
|
rl.close();
|
|
191
171
|
}
|
|
192
172
|
const confirmed = answer.trim().toLowerCase();
|
|
193
173
|
if (confirmed !== "" && confirmed !== "y" && confirmed !== "yes") {
|
|
194
|
-
|
|
195
|
-
console.log(chalk.dim(" Submission cancelled. Your work is saved."));
|
|
196
|
-
console.log();
|
|
174
|
+
info("Submission cancelled. Your work is saved.");
|
|
197
175
|
try {
|
|
198
176
|
unlinkSync(zipPath);
|
|
199
177
|
}
|
|
@@ -201,7 +179,6 @@ export async function runSubmit(opts) {
|
|
|
201
179
|
process.exit(0);
|
|
202
180
|
}
|
|
203
181
|
}
|
|
204
|
-
console.log();
|
|
205
182
|
// Step 7: Upload with progress
|
|
206
183
|
const uploadSpinner = ora("Uploading submission...").start();
|
|
207
184
|
// ENG-1904: submitZip retries an upload whose connection failed before the
|
|
@@ -211,7 +188,7 @@ export async function runSubmit(opts) {
|
|
|
211
188
|
let attemptNote = "";
|
|
212
189
|
const onRetry = (retry) => {
|
|
213
190
|
attemptNote = ` (attempt ${retry.failedAttempt + 1} of ${retry.maxAttempts})`;
|
|
214
|
-
uploadSpinner.text = `
|
|
191
|
+
uploadSpinner.text = `Couldn't reach Litmus. Retrying upload (${retry.failedAttempt + 1} of ${retry.maxAttempts})...`;
|
|
215
192
|
// Reported whatever the retry goes on to do, because a retry that works
|
|
216
193
|
// otherwise hides the failure from everyone. "warning" is the reporter's
|
|
217
194
|
// tier for a self-heal: archived server-side, never posted.
|
|
@@ -226,9 +203,8 @@ export async function runSubmit(opts) {
|
|
|
226
203
|
const totalMb = (total / (1024 * 1024)).toFixed(1);
|
|
227
204
|
uploadSpinner.text = `Uploading submission... ${uploadedMb}/${totalMb} MB (${pct}%)${attemptNote}`;
|
|
228
205
|
}, onRetry);
|
|
229
|
-
uploadSpinner.succeed("
|
|
206
|
+
uploadSpinner.succeed("Submitted");
|
|
230
207
|
reportSuccess("submit", `Submission ${result.submissionId} received (${zipSizeMb} MB, ${fileCount} files)`);
|
|
231
|
-
console.log();
|
|
232
208
|
if (result.dashboardUrl) {
|
|
233
209
|
// ENG-719: walkthrough modes (VIDEO / LIVE_AGENT / WRITTEN) aren't done at
|
|
234
210
|
// submit — the candidate still has to record their walkthrough. The CLI
|
|
@@ -239,21 +215,26 @@ export async function runSubmit(opts) {
|
|
|
239
215
|
// walkthrough" for VIDEO/LIVE_AGENT, "complete your written reflection"
|
|
240
216
|
// for WRITTEN. Print it verbatim instead of hardcoding the walkthrough
|
|
241
217
|
// wording — WRITTEN candidates would otherwise see the wrong action.
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
console.log(` ${chalk.cyan(result.dashboardUrl)}`);
|
|
218
|
+
for (const line of noteLines(result.message || "One step left: finish on your dashboard."))
|
|
219
|
+
console.log(line);
|
|
245
220
|
}
|
|
246
221
|
else {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
console.log(chalk.dim(" The company will review your work and be in touch."));
|
|
222
|
+
for (const line of noteLines("You're done. The company will review your work and be in touch."))
|
|
223
|
+
console.log(line);
|
|
250
224
|
}
|
|
251
|
-
|
|
252
|
-
|
|
225
|
+
// Step 8: Delete assessment folder after successful submission. Before the
|
|
226
|
+
// dashboard link (ENG-2895): the link is where the candidate goes next, so
|
|
227
|
+
// it is the last line on screen.
|
|
228
|
+
// The upload landed, so a cleanup error must not reach the catch below and
|
|
229
|
+
// print "Submission failed" in place of the dashboard link (Greptile on #3161).
|
|
230
|
+
try {
|
|
231
|
+
await deleteAssessmentFolder(projectRoot, config.token, folderName);
|
|
232
|
+
}
|
|
233
|
+
catch (cleanupErr) {
|
|
234
|
+
reportEvent("warning", "Post-submit cleanup failed", cleanupErr instanceof Error ? cleanupErr.message : String(cleanupErr), "submit_cleanup_failed");
|
|
253
235
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
await deleteAssessmentFolder(projectRoot, config.token, folderName);
|
|
236
|
+
if (result.dashboardUrl)
|
|
237
|
+
console.log(` ${chalk.cyan(result.dashboardUrl)}`);
|
|
257
238
|
}
|
|
258
239
|
catch (err) {
|
|
259
240
|
const rawError = err instanceof Error ? err.message : String(err);
|
|
@@ -270,12 +251,11 @@ export async function runSubmit(opts) {
|
|
|
270
251
|
// our submit), not an upload failure. Showing "Upload failed" then a
|
|
271
252
|
// positive handoff message confuses the candidate.
|
|
272
253
|
if (err instanceof ServerError && err.dashboardUrl) {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
254
|
+
// The server's sentence already says "one step left"; it is the ⚠ line.
|
|
255
|
+
uploadSpinner.stop();
|
|
256
|
+
for (const line of cautionLines(rawError))
|
|
257
|
+
console.log(line);
|
|
277
258
|
console.log(` ${chalk.cyan(err.dashboardUrl)}`);
|
|
278
|
-
console.log();
|
|
279
259
|
// Candidate is moving to the browser to record their walkthrough — the
|
|
280
260
|
// terminal-side tracker has nothing left to observe. Signal it so it
|
|
281
261
|
// doesn't keep heartbeating until the candidate manually kills the
|
|
@@ -310,10 +290,10 @@ export async function runSubmit(opts) {
|
|
|
310
290
|
// tell them congratulations either.
|
|
311
291
|
if (errorCode === "Already submitted") {
|
|
312
292
|
uploadSpinner.succeed("Already submitted");
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
293
|
+
for (const line of noteLines(rawError))
|
|
294
|
+
console.log(line);
|
|
295
|
+
for (const line of noteLines(`Your local copy is kept at ${projectRoot} in case anything needs recovering.`))
|
|
296
|
+
console.log(line);
|
|
317
297
|
stopTracker(projectRoot, config.token);
|
|
318
298
|
releaseAiTrackingForAssessment(projectRoot);
|
|
319
299
|
// A health event, so a rejected-then-retired submit is visible
|
|
@@ -349,14 +329,18 @@ export async function runSubmit(opts) {
|
|
|
349
329
|
? rawError
|
|
350
330
|
: connectionFailed
|
|
351
331
|
? "Submission failed: the connection to Litmus failed on every attempt."
|
|
352
|
-
: "Submission failed.
|
|
332
|
+
: "Submission failed. Run litmus submit again, or submit from your assessment page.";
|
|
333
|
+
const timedOut = !isTerminalCode && rawError.includes("Upload timed out");
|
|
353
334
|
const candidateHint = connectionFailed
|
|
354
|
-
? "Your work is still on this machine. Check your internet connection and run
|
|
355
|
-
:
|
|
335
|
+
? "Your work is still on this machine. Check your internet connection and run litmus submit again. A submission is still accepted up to 5 minutes after your time runs out."
|
|
336
|
+
: timedOut
|
|
337
|
+
? "Your work is still here. Check your connection and run litmus submit again."
|
|
338
|
+
: undefined;
|
|
356
339
|
// Not a soft handoff and not an already-submitted no-op — this is a real
|
|
357
340
|
// upload failure (terminal-codes path or unknown error). Finalize the
|
|
358
341
|
// spinner state now before printing the diagnostics.
|
|
359
|
-
|
|
342
|
+
// `fatal`'s Error: line is the failure; a ✖ spinner line above it said it twice.
|
|
343
|
+
uploadSpinner.stop();
|
|
360
344
|
// For terminal server-side codes (assessment is over), signal the tracker
|
|
361
345
|
// to stop — it has nothing left to observe and would otherwise heartbeat
|
|
362
346
|
// until the candidate manually kills the session. Keep the folder so the
|
|
@@ -376,7 +360,6 @@ export async function runSubmit(opts) {
|
|
|
376
360
|
const zipDiag = `ZIP: ${zipSizeMb} MB (${fileCount} files, ${(uncompressedBytes / (1024 * 1024)).toFixed(1)} MB uncompressed)\nTop dirs: ${topDirs.slice(0, 5).map(d => `${d.dir} (${(d.bytes / (1024 * 1024)).toFixed(1)} MB)`).join(", ")}`;
|
|
377
361
|
const serverDetail = err instanceof ServerError ? `${err.message}\n${err.detail}` : (isKnownError ? undefined : rawError);
|
|
378
362
|
const internalDetail = serverDetail ? `${serverDetail}\n\n${zipDiag}` : zipDiag;
|
|
379
|
-
console.log();
|
|
380
363
|
fatal(candidateMessage, candidateHint, { internalDetail, severity: isKnownError ? "warning" : "error" });
|
|
381
364
|
}
|
|
382
365
|
finally {
|
|
@@ -482,9 +465,8 @@ async function deleteAssessmentFolder(projectRoot, token, folderName) {
|
|
|
482
465
|
unregisterKernel(projectRoot, kernelName);
|
|
483
466
|
try {
|
|
484
467
|
await rm(projectRoot, { recursive: true, force: true });
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
console.log();
|
|
468
|
+
for (const line of noteLines(`Deleted the assessment folder ${folderName}. cd to another folder to keep using this terminal.`))
|
|
469
|
+
console.log(line);
|
|
488
470
|
}
|
|
489
471
|
catch {
|
|
490
472
|
warn(`Could not delete assessment folder. You can manually remove: ${projectRoot}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AACxE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,SAAS,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,sBAAsB,EAAoB,MAAM,eAAe,CAAA;AAChG,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,EAAqB,MAAM,eAAe,CAAA;AAClH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAuB;IACrD,qEAAqE;IACrE,6EAA6E;IAC7E,2EAA2E;IAC3E,+EAA+E;IAC/E,mEAAmE;IACnE,8EAA8E;IAC9E,kBAAkB;IAClB,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAC9B,OAAM;IACR,CAAC;IAED,4EAA4E;IAC5E,wEAAwE;IACxE,4EAA4E;IAC5E,0EAA0E;IAC1E,uEAAuE;IACvE,sEAAsE;IACtE,kEAAkE;IAClE,uEAAuE;IACvE,uEAAuE;IACvE,IAAI,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAChD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClD,sEAAsE;YACtE,oEAAoE;YACpE,uEAAuE;YACvE,mEAAmE;YACnE,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,sDAAsD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,+BAA+B,CACtI,CACF,CAAA;YACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5F,KAAK,CACH,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBACxB,CAAC,CAAC,oDAAoD,IAAI,CAAC,UAAU,CAAC,MAAM,0BAA0B,MAAM,EAAE;gBAC9G,CAAC,CAAC,gDAAgD,MAAM,oEAAoE,EAC9H,8DAA8D,CAC/D,CAAA;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;IAEjC,IAAI,MAAM,EAAE,CAAC;QACX,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA;IACjJ,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CACH,+CAA+C,EAC/C,0FAA0F,EAC1F,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAA;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAEtD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,uEAAuE;QACvE,+EAA+E;QAC/E,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,iBAAiB,GAAG,CAAC,GAAG,KAAM,EAAE,CAAC;YACnD,qEAAqE;YACrE,wEAAwE;YACxE,wEAAwE;YACxE,uEAAuE;YACvE,qEAAqE;YACrE,uEAAuE;YACvE,qEAAqE;YACrE,kEAAkE;YAClE,IAAI,CAAC,oDAAoD,gBAAgB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAA;YAC1G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uGAAuG,CAAC,CAAC,CAAA;YAC/H,OAAO,CAAC,GAAG,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,yEAAyE;IACzE,MAAM,WAAW,GAAG,eAAe,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAEtD,oCAAoC;IACpC,MAAM,UAAU,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAA;IACzD,IAAI,SAA0D,CAAA;IAE9D,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAA;QAClD,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;QACtD,2EAA2E;QAC3E,2EAA2E;QAC3E,4DAA4D;QAC5D,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;YACvC,KAAK,CACH,GAAG,CAAC,OAAO,EACX,0GAA0G,EAC1G,EAAE,cAAc,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CACxF,CAAA;QACH,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5D,KAAK,CAAC,GAAG,EAAE,6DAA6D,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IAEvF,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,kDAAkD;IAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,4DAA4D,CAAC,CAAA;QACnF,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,EAAE,CAAA;YAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;QACpE,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QAClE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC,CAAA;QAC9G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,qBAAqB,GAAG,CAAC,CAAC,CAAA;QACjG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC,CAAA;QACjH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC,CAAA;QAC5G,2EAA2E;QAC3E,yEAAyE;QACzE,gFAAgF;QAChF,WAAW,CACT,SAAS,EACT,8BAA8B,OAAO,CAAC,MAAM,qBAAqB,EACjE,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,EAC5B,2BAA2B,CAC5B,CAAA;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA,CAAC,QAAQ;IAChD,IAAI,QAAQ,GAAG,cAAc,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,CAAC,iBAAiB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/D,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,IAAI,CAAC,iBAAiB,KAAK,QAAQ,SAAS,WAAW,QAAQ,oBAAoB,CAAC,CAAA;QACpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;QAChD,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAChF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC,CAAA;IACnG,CAAC;IAED,sCAAsC;IACtC,MAAM,SAAS,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAEtF,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;IACjE,IAAI,CAAC,kBAAkB,SAAS,QAAQ,SAAS,SAAS,CAAC,CAAA;IAC3D,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACjC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,kEAAkE,CAAC,CAAA;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC,CAAA;QACtH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC,CAAA;QAC/F,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IACD,0EAA0E;IAC1E,yEAAyE;IACzE,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,sEAAsE;IACtE,qEAAqE;IACrE,wCAAwC;IACxC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,gBAAgB,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAA;IACpE,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,mBAAmB,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAA;QAC/F,MAAM,WAAW,GAAG,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACpD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA;YACrD,IAAI,CAAC,iBAAiB,MAAM,CAAC,SAAS,SAAS,OAAO,iBAAiB,CAAC,CAAA;QAC1E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,yBAAyB,MAAM,CAAC,SAAS,OAAO,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAA;IAEb,sCAAsC;IACtC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,sBAAsB,CAAA;QACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QACtD,IAAI,MAAc,CAAA;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CACxB,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CACpD,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAA;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC7C,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACjE,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAA;YACrE,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,IAAI,CAAC;gBAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAA;IAEb,+BAA+B;IAC/B,MAAM,aAAa,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAA;IAC5D,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,4EAA4E;IAC5E,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,MAAM,OAAO,GAAG,CAAC,KAAkB,EAAQ,EAAE;QAC3C,WAAW,GAAG,aAAa,KAAK,CAAC,aAAa,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,GAAG,CAAA;QAC7E,aAAa,CAAC,IAAI,GAAG,mDAAmD,WAAW,KAAK,CAAA;QACxF,wEAAwE;QACxE,yEAAyE;QACzE,4DAA4D;QAC5D,WAAW,CACT,SAAS,EACT,sDAAsD,EACtD,WAAW,KAAK,CAAC,aAAa,OAAO,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,GAAG,EAC1F,uBAAuB,CACxB,CAAA;IACH,CAAC,CAAA;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,UAAU,iBAAiB,CAAA;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YAC9F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;YAChD,MAAM,UAAU,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACxD,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAClD,aAAa,CAAC,IAAI,GAAG,2BAA2B,UAAU,IAAI,OAAO,QAAQ,GAAG,KAAK,WAAW,EAAE,CAAA;QACpG,CAAC,EAAE,OAAO,CAAC,CAAA;QACX,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;QAC5C,aAAa,CAAC,QAAQ,EAAE,cAAc,MAAM,CAAC,YAAY,cAAc,SAAS,QAAQ,SAAS,SAAS,CAAC,CAAA;QAE3G,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,2EAA2E;YAC3E,wEAAwE;YACxE,yEAAyE;YACzE,6CAA6C;YAC7C,EAAE;YACF,kEAAkE;YAClE,wEAAwE;YACxE,uEAAuE;YACvE,qEAAqE;YACrE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,iCAAiC,CAAC,CAAA;YAC5D,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QACrD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,cAAc,CAAC,CAAA;YACvB,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAClE,CAAA;QACH,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;QACnE,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAA;QAEb,+DAA+D;QAC/D,MAAM,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACrE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACjE,MAAM,SAAS,GAAG,GAAG,YAAY,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;QAExE,wEAAwE;QACxE,yEAAyE;QACzE,4EAA4E;QAC5E,0EAA0E;QAC1E,yEAAyE;QACzE,4EAA4E;QAC5E,EAAE;QACF,oEAAoE;QACpE,0EAA0E;QAC1E,qEAAqE;QACrE,mDAAmD;QACnD,IAAI,GAAG,YAAY,WAAW,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACnD,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YACnC,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAA;YACvC,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YAChD,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,uEAAuE;YACvE,qEAAqE;YACrE,mEAAmE;YACnE,uEAAuE;YACvE,+DAA+D;YAC/D,qEAAqE;YACrE,qEAAqE;YACrE,sEAAsE;YACtE,uEAAuE;YACvE,sDAAsD;YACtD,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YACtC,8BAA8B,CAAC,WAAW,CAAC,CAAA;YAC3C,aAAa,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAA;YACrD,OAAM;QACR,CAAC;QAED,sEAAsE;QACtE,uEAAuE;QACvE,kEAAkE;QAClE,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;QACvE,kEAAkE;QAClE,uEAAuE;QACvE,kEAAkE;QAClE,yEAAyE;QACzE,uEAAuE;QACvE,wEAAwE;QACxE,+DAA+D;QAC/D,EAAE;QACF,0EAA0E;QAC1E,uEAAuE;QACvE,oCAAoC;QACpC,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;YACtC,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;YAC1C,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAA;YACvC,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,IAAI,CAAC,8BAA8B,WAAW,qCAAqC,CAAC,CAAA;YACpF,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YACtC,8BAA8B,CAAC,WAAW,CAAC,CAAA;YAC3C,+DAA+D;YAC/D,uEAAuE;YACvE,aAAa,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;QAED,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,uEAAuE;QACvE,oEAAoE;QACpE,qCAAqC;QACrC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;YAC7B,qBAAqB;YACrB,iBAAiB;YACjB,oBAAoB;YACpB,sBAAsB;YACtB,eAAe;YACf,6BAA6B;SAC9B,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,SAAS,KAAK,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC/E,MAAM,YAAY,GAAG,cAAc,IAAI,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC5E,0EAA0E;QAC1E,mEAAmE;QACnE,wEAAwE;QACxE,wEAAwE;QACxE,0EAA0E;QAC1E,yEAAyE;QACzE,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,CAAC,YAAY,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAA;QAErE,MAAM,gBAAgB,GAAG,YAAY;YACnC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,gBAAgB;gBAChB,CAAC,CAAC,sEAAsE;gBACxE,CAAC,CAAC,sFAAsF,CAAA;QAC5F,MAAM,aAAa,GAAG,gBAAgB;YACpC,CAAC,CAAC,4KAA4K;YAC9K,CAAC,CAAC,SAAS,CAAA;QAEb,yEAAyE;QACzE,sEAAsE;QACtE,qDAAqD;QACrD,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEnC,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,2EAA2E;QAC3E,iEAAiE;QACjE,qEAAqE;QACrE,yDAAyD;QACzD,IAAI,cAAc,EAAE,CAAC;YACnB,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YACtC,kEAAkE;YAClE,qEAAqE;YACrE,sEAAsE;YACtE,gDAAgD;YAChD,8BAA8B,CAAC,WAAW,CAAC,CAAA;QAC7C,CAAC;QAED,0EAA0E;QAC1E,MAAM,OAAO,GAAG,QAAQ,SAAS,QAAQ,SAAS,WAAW,CAAC,iBAAiB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAC7O,MAAM,YAAY,GAAG,GAAG,YAAY,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QACzH,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;QAE/E,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,KAAK,CACH,gBAAgB,EAChB,aAAa,EACb,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CACjE,CAAA;IACH,CAAC;YAAS,CAAC;QACT,oBAAoB;QACpB,IAAI,CAAC;YAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,WAAW,CAAC,WAAmB,EAAE,KAAa;IACrD,0FAA0F;IAC1F,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;QAC/D,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK;YAAE,OAAM;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAM,CAAC,2CAA2C;IACpD,CAAC;IAED,yEAAyE;IACzE,+DAA+D;IAC/D,iFAAiF;IACjF,+EAA+E;IAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;IAChE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;IAClE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChB,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;YACvD,IAAI,CAAC;gBAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,gCAAgC,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,WAAmB,EAAE,KAAa,EAAE,UAAkB;IAC1F,0FAA0F;IAC1F,IAAI,GAAuB,CAAA;IAC3B,IAAI,UAAU,GAAG,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;IACvD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;QAC/D,yEAAyE;QACzE,0EAA0E;QAC1E,yEAAyE;QACzE,uEAAuE;QACvE,oEAAoE;QACpE,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YACvE,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;QACpC,CAAC;QACD,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,gEAAgE,WAAW,EAAE,CAAC,CAAA;YACnF,OAAM;QACR,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,gEAAgE,WAAW,EAAE,CAAC,CAAA;QACnF,OAAM;IACR,CAAC;IAED,2EAA2E;IAC3E,uEAAuE;IACvE,4DAA4D;IAC5D,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IAC/B,IAAI,CAAC;QACH,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACnG,CAAC;IAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,MAAK;YAAC,CAAC,CAAC,eAAe;YAC5D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,2EAA2E;IAC3E,wEAAwE;IACxE,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAEzC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAA;QACxE,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,gEAAgE,WAAW,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,8BAA8B,CAAC,WAAW,CAAC,CAAA;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,OAAuB,EAAE,KAAa;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACnH,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,OAAO,CAAC,CAAA;IAC7F,OAAO,wBAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../src/commands/submit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AACxE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,SAAS,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,sBAAsB,EAAoB,MAAM,eAAe,CAAA;AAChG,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAqB,MAAM,eAAe,CAAA;AAC3F,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE1D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAuB;IACrD,qEAAqE;IACrE,6EAA6E;IAC7E,2EAA2E;IAC3E,+EAA+E;IAC/E,mEAAmE;IACnE,8EAA8E;IAC9E,kBAAkB;IAClB,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAC9B,OAAM;IACR,CAAC;IAED,4EAA4E;IAC5E,wEAAwE;IACxE,4EAA4E;IAC5E,0EAA0E;IAC1E,uEAAuE;IACvE,sEAAsE;IACtE,kEAAkE;IAClE,uEAAuE;IACvE,uEAAuE;IACvE,IAAI,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAChD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClD,sEAAsE;YACtE,oEAAoE;YACpE,uEAAuE;YACvE,mEAAmE;YACnE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAA;YACzH,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5F,KAAK,CACH,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBACxB,CAAC,CAAC,oDAAoD,IAAI,CAAC,UAAU,CAAC,MAAM,0BAA0B,MAAM,EAAE;gBAC9G,CAAC,CAAC,gDAAgD,MAAM,oEAAoE,EAC9H,8DAA8D,CAC/D,CAAA;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;IAEjC,IAAI,MAAM,EAAE,CAAC;QACX,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA;IACjJ,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CACH,+CAA+C,EAC/C,0FAA0F,EAC1F,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAA;IACH,CAAC;IAED,2EAA2E;IAC3E,+EAA+E;IAC/E,4EAA4E;IAC5E,uBAAuB;IACvB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAEtD,mEAAmE;IACnE,yEAAyE;IACzE,MAAM,WAAW,GAAG,eAAe,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAEtD,oCAAoC;IACpC,MAAM,UAAU,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAA;IACzD,IAAI,SAA0D,CAAA;IAE9D,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAA;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,iFAAiF;QACjF,UAAU,CAAC,IAAI,EAAE,CAAA;QACjB,2EAA2E;QAC3E,2EAA2E;QAC3E,4DAA4D;QAC5D,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;YACvC,0EAA0E;YAC1E,0CAA0C;YAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YACjE,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAA;YACnF,KAAK,CACH,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,0GAA0G,EAC1G,EAAE,cAAc,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CACxF,CAAA;QACH,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5D,KAAK,CAAC,GAAG,EAAE,oEAAoE,CAAC,CAAA;IAClF,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IACvF,MAAM,SAAS,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACvD,+EAA+E;IAC/E,gFAAgF;IAChF,iFAAiF;IACjF,0EAA0E;IAC1E,yEAAyE;IACzE,MAAM,WAAW,GAAG,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtF,MAAM,QAAQ,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS;QAC9F,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,YAAY;QACvD,CAAC,CAAC,EAAE,CAAA;IACN,UAAU,CAAC,OAAO,CAAC,YAAY,SAAS,WAAW,SAAS,QAAQ,QAAQ,EAAE,CAAC,CAAA;IAC/E,IAAI,iBAAiB,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QAC3E,4EAA4E;QAC5E,8EAA8E;QAC9E,4EAA4E;QAC5E,4EAA4E;QAC5E,2EAA2E;QAC3E,0EAA0E;QAC1E,6EAA6E;QAC7E,0EAA0E;QAC1E,8CAA8C;QAC9C,IAAI,CAAC,kBAAkB,gBAAgB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,oEAAoE,CAAC,CAAA;IAC3I,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,kDAAkD;IAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,4DAA4D,CAAC,CAAA;QACnF,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,EAAE,CAAA;YAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;QACpE,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QAClE,CAAC;QACD,4EAA4E;QAC5E,8DAA8D;QAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG;YAC5B,CAAC,CAAC,wEAAwE;YAC1E,CAAC,CAAC,qGAAqG,CAAA;QACzG,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,aAAa,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9D,2EAA2E;QAC3E,yEAAyE;QACzE,gFAAgF;QAChF,WAAW,CACT,SAAS,EACT,8BAA8B,OAAO,CAAC,MAAM,qBAAqB,EACjE,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,EAC5B,2BAA2B,CAC5B,CAAA;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA,CAAC,QAAQ;IAChD,IAAI,QAAQ,GAAG,cAAc,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,CAAC,iBAAiB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/D,IAAI,CAAC,iBAAiB,KAAK,QAAQ,SAAS,WAAW,QAAQ,oBAAoB,CAAC,CAAA;QACpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;QAChD,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAChF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC,CAAA;IACnG,CAAC;IAED,4CAA4C;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,iJAAiJ,CAAC,CAAA;IACzJ,CAAC;IACD,sCAAsC;IACtC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,UAAU,MAAM,CAAC,cAAc,IAAI,CAAA;QACtD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QACtD,IAAI,MAAc,CAAA;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CACxB,KAAK,UAAU,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CACxC,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAA;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC7C,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACjE,IAAI,CAAC,2CAA2C,CAAC,CAAA;YACjD,IAAI,CAAC;gBAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,aAAa,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAA;IAC5D,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,4EAA4E;IAC5E,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,MAAM,OAAO,GAAG,CAAC,KAAkB,EAAQ,EAAE;QAC3C,WAAW,GAAG,aAAa,KAAK,CAAC,aAAa,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,GAAG,CAAA;QAC7E,aAAa,CAAC,IAAI,GAAG,2CAA2C,KAAK,CAAC,aAAa,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,MAAM,CAAA;QACrH,wEAAwE;QACxE,yEAAyE;QACzE,4DAA4D;QAC5D,WAAW,CACT,SAAS,EACT,sDAAsD,EACtD,WAAW,KAAK,CAAC,aAAa,OAAO,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,GAAG,EAC1F,uBAAuB,CACxB,CAAA;IACH,CAAC,CAAA;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,UAAU,iBAAiB,CAAA;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YAC9F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;YAChD,MAAM,UAAU,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACxD,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAClD,aAAa,CAAC,IAAI,GAAG,2BAA2B,UAAU,IAAI,OAAO,QAAQ,GAAG,KAAK,WAAW,EAAE,CAAA;QACpG,CAAC,EAAE,OAAO,CAAC,CAAA;QACX,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAClC,aAAa,CAAC,QAAQ,EAAE,cAAc,MAAM,CAAC,YAAY,cAAc,SAAS,QAAQ,SAAS,SAAS,CAAC,CAAA;QAE3G,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,2EAA2E;YAC3E,wEAAwE;YACxE,yEAAyE;YACzE,6CAA6C;YAC7C,EAAE;YACF,kEAAkE;YAClE,wEAAwE;YACxE,uEAAuE;YACvE,qEAAqE;YACrE,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,0CAA0C,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/G,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,iEAAiE,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpH,CAAC;QAED,2EAA2E;QAC3E,2EAA2E;QAC3E,iCAAiC;QACjC,2EAA2E;QAC3E,gFAAgF;QAChF,IAAI,CAAC;YACH,MAAM,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QACrE,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,WAAW,CACT,SAAS,EACT,4BAA4B,EAC5B,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EACrE,uBAAuB,CACxB,CAAA;QACH,CAAC;QACD,IAAI,MAAM,CAAC,YAAY;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IAC9E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACjE,MAAM,SAAS,GAAG,GAAG,YAAY,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;QAExE,wEAAwE;QACxE,yEAAyE;QACzE,4EAA4E;QAC5E,0EAA0E;QAC1E,yEAAyE;QACzE,4EAA4E;QAC5E,EAAE;QACF,oEAAoE;QACpE,0EAA0E;QAC1E,qEAAqE;QACrE,mDAAmD;QACnD,IAAI,GAAG,YAAY,WAAW,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACnD,wEAAwE;YACxE,aAAa,CAAC,IAAI,EAAE,CAAA;YACpB,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YAChD,uEAAuE;YACvE,qEAAqE;YACrE,mEAAmE;YACnE,uEAAuE;YACvE,+DAA+D;YAC/D,qEAAqE;YACrE,qEAAqE;YACrE,sEAAsE;YACtE,uEAAuE;YACvE,sDAAsD;YACtD,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YACtC,8BAA8B,CAAC,WAAW,CAAC,CAAA;YAC3C,aAAa,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAA;YACrD,OAAM;QACR,CAAC;QAED,sEAAsE;QACtE,uEAAuE;QACvE,kEAAkE;QAClE,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;QACvE,kEAAkE;QAClE,uEAAuE;QACvE,kEAAkE;QAClE,yEAAyE;QACzE,uEAAuE;QACvE,wEAAwE;QACxE,+DAA+D;QAC/D,EAAE;QACF,0EAA0E;QAC1E,uEAAuE;QACvE,oCAAoC;QACpC,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;YACtC,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;YAC1C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACzD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,8BAA8B,WAAW,qCAAqC,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC/H,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YACtC,8BAA8B,CAAC,WAAW,CAAC,CAAA;YAC3C,+DAA+D;YAC/D,uEAAuE;YACvE,aAAa,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAA;YACnD,OAAM;QACR,CAAC;QAED,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,uEAAuE;QACvE,oEAAoE;QACpE,qCAAqC;QACrC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;YAC7B,qBAAqB;YACrB,iBAAiB;YACjB,oBAAoB;YACpB,sBAAsB;YACtB,eAAe;YACf,6BAA6B;SAC9B,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,SAAS,KAAK,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC/E,MAAM,YAAY,GAAG,cAAc,IAAI,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC5E,0EAA0E;QAC1E,mEAAmE;QACnE,wEAAwE;QACxE,wEAAwE;QACxE,0EAA0E;QAC1E,yEAAyE;QACzE,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,CAAC,YAAY,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAA;QAErE,MAAM,gBAAgB,GAAG,YAAY;YACnC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,gBAAgB;gBAChB,CAAC,CAAC,sEAAsE;gBACxE,CAAC,CAAC,kFAAkF,CAAA;QACxF,MAAM,QAAQ,GAAG,CAAC,cAAc,IAAI,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QACzE,MAAM,aAAa,GAAG,gBAAgB;YACpC,CAAC,CAAC,0KAA0K;YAC5K,CAAC,CAAC,QAAQ;gBACR,CAAC,CAAC,6EAA6E;gBAC/E,CAAC,CAAC,SAAS,CAAA;QAEf,yEAAyE;QACzE,sEAAsE;QACtE,qDAAqD;QACrD,iFAAiF;QACjF,aAAa,CAAC,IAAI,EAAE,CAAA;QAEpB,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,2EAA2E;QAC3E,iEAAiE;QACjE,qEAAqE;QACrE,yDAAyD;QACzD,IAAI,cAAc,EAAE,CAAC;YACnB,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YACtC,kEAAkE;YAClE,qEAAqE;YACrE,sEAAsE;YACtE,gDAAgD;YAChD,8BAA8B,CAAC,WAAW,CAAC,CAAA;QAC7C,CAAC;QAED,0EAA0E;QAC1E,MAAM,OAAO,GAAG,QAAQ,SAAS,QAAQ,SAAS,WAAW,CAAC,iBAAiB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QAC7O,MAAM,YAAY,GAAG,GAAG,YAAY,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QACzH,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;QAE/E,KAAK,CACH,gBAAgB,EAChB,aAAa,EACb,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CACjE,CAAA;IACH,CAAC;YAAS,CAAC;QACT,oBAAoB;QACpB,IAAI,CAAC;YAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,WAAW,CAAC,WAAmB,EAAE,KAAa;IACrD,0FAA0F;IAC1F,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;QAC/D,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK;YAAE,OAAM;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAM,CAAC,2CAA2C;IACpD,CAAC;IAED,yEAAyE;IACzE,+DAA+D;IAC/D,iFAAiF;IACjF,+EAA+E;IAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;IAChE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;IAClE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChB,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;YACvD,IAAI,CAAC;gBAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,gCAAgC,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,WAAmB,EAAE,KAAa,EAAE,UAAkB;IAC1F,0FAA0F;IAC1F,IAAI,GAAuB,CAAA;IAC3B,IAAI,UAAU,GAAG,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;IACvD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;QAC/D,yEAAyE;QACzE,0EAA0E;QAC1E,yEAAyE;QACzE,uEAAuE;QACvE,oEAAoE;QACpE,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YACvE,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;QACpC,CAAC;QACD,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,gEAAgE,WAAW,EAAE,CAAC,CAAA;YACnF,OAAM;QACR,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,gEAAgE,WAAW,EAAE,CAAC,CAAA;QACnF,OAAM;IACR,CAAC;IAED,2EAA2E;IAC3E,uEAAuE;IACvE,4DAA4D;IAC5D,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IAC/B,IAAI,CAAC;QACH,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACnG,CAAC;IAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,MAAK;YAAC,CAAC,CAAC,eAAe;YAC5D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,2EAA2E;IAC3E,wEAAwE;IACxE,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAEzC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,iCAAiC,UAAU,qDAAqD,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnJ,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,gEAAgE,WAAW,EAAE,CAAC,CAAA;IACrF,CAAC;IAED,8BAA8B,CAAC,WAAW,CAAC,CAAA;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,OAAuB,EAAE,KAAa;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACnH,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,OAAO,CAAC,CAAA;IAC7F,OAAO,wBAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../src/lib/session-end.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../src/lib/session-end.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAM5C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD"}
|
package/dist/lib/session-end.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
+
import { noteLines } from "./notice.js";
|
|
2
3
|
/**
|
|
3
4
|
* What happens to a NATIVE editor window when the session ends — ENG-2154.
|
|
4
5
|
*
|
|
@@ -93,14 +94,9 @@ import chalk from "chalk";
|
|
|
93
94
|
* candidate is about to see.
|
|
94
95
|
*/
|
|
95
96
|
export function editorEndingLines() {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
"
|
|
99
|
-
" machine and will report a lost connection. That is not a failed submission — it is",
|
|
100
|
-
" this session ending, and nothing is left to save.",
|
|
101
|
-
` ${chalk.dim("Close the window whenever you are ready; we do not close it for you.")}`,
|
|
102
|
-
"",
|
|
103
|
-
];
|
|
97
|
+
// ENG-2895: one notice, wrapped like the rest of the CLI's.
|
|
98
|
+
return noteLines("If VS Code or Cursor is open on this workspace, it will report a lost connection. " +
|
|
99
|
+
"That's expected, not a failed submission. Close it when you're ready.");
|
|
104
100
|
}
|
|
105
101
|
/**
|
|
106
102
|
* The same fact, said before it happens, on the native-editor path of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../src/lib/session-end.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../src/lib/session-end.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB;IAC/B,4DAA4D;IAC5D,OAAO,SAAS,CACd,oFAAoF;QAClF,uEAAuE,CAC1E,CAAA;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC,CAAA;AAC3G,CAAC"}
|
package/dist/lib/tracker.d.ts
CHANGED
|
@@ -24,6 +24,25 @@ export interface TrackerDiagnostics {
|
|
|
24
24
|
healthy: boolean;
|
|
25
25
|
}
|
|
26
26
|
export declare function trackerDiagnostics(projectDir: string, assessmentId?: string): TrackerDiagnostics;
|
|
27
|
+
/**
|
|
28
|
+
* ENG-2950: the end of the watcher's stderr log, for the report about a watcher
|
|
29
|
+
* that did not start.
|
|
30
|
+
*
|
|
31
|
+
* startTracker sends the watcher's stderr to the shadow log (ENG-1453), so a
|
|
32
|
+
* watcher that dies at boot leaves its crash there, and before this the report
|
|
33
|
+
* carried only "timeout" or "died": two Windows no-starts in a row reached us
|
|
34
|
+
* with no cause. The home directory is replaced with `~`: on Windows it carries
|
|
35
|
+
* the account name, and the rest of the path says the same thing without it.
|
|
36
|
+
* Null when there is nothing to send.
|
|
37
|
+
*/
|
|
38
|
+
export declare function trackerLogTail(projectDir: string, maxLines?: number, maxChars?: number): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* ENG-2950: the watcher is running AND finished starting: healthy, and it stamped
|
|
41
|
+
* `tracker.ready` with its own pid. `isTrackerHealthy` alone passes a watcher that
|
|
42
|
+
* wedged at boot, because startTracker stamps the nonce at spawn (Greptile on #3174),
|
|
43
|
+
* so it cannot be what tells a candidate their work is being recorded.
|
|
44
|
+
*/
|
|
45
|
+
export declare function isTrackerRecording(projectDir: string): boolean;
|
|
27
46
|
/** How long a freshly spawned watcher gets to stamp `tracker.ready` before its boot counts as failed. */
|
|
28
47
|
export declare const WATCHER_BOOT_TIMEOUT_MS = 6000;
|
|
29
48
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/lib/tracker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/lib/tracker.ts"],"names":[],"mappings":"AAgGA;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAM5D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,oFAAoF;IACpF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,4DAA4D;IAC5D,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,kBAAkB,CA4ChG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,SAAK,EAAE,QAAQ,SAAO,GAAG,MAAM,GAAG,IAAI,CAoChG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED,yGAAyG;AACzG,eAAO,MAAM,uBAAuB,OAAQ,CAAA;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAA;AAmB5C,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAW7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAYxG;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAmGrD"}
|
package/dist/lib/tracker.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { spawn } from "child_process";
|
|
2
|
-
import { existsSync, mkdirSync, openSync, readFileSync, writeFileSync, statSync, unlinkSync, closeSync } from "fs";
|
|
2
|
+
import { existsSync, mkdirSync, openSync, readFileSync, readSync, fstatSync, writeFileSync, statSync, unlinkSync, closeSync } from "fs";
|
|
3
|
+
import os from "os";
|
|
3
4
|
import path from "path";
|
|
4
5
|
import { fileURLToPath } from "url";
|
|
5
6
|
import { refreshInstalledLoggers } from "./ai-tracking.js";
|
|
@@ -152,6 +153,74 @@ export function trackerDiagnostics(projectDir, assessmentId) {
|
|
|
152
153
|
healthy: pidAlive && nonceAgeMs !== null && nonceAgeMs > -1000 && nonceAgeMs <= NONCE_MAX_AGE_MS,
|
|
153
154
|
};
|
|
154
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* ENG-2950: the end of the watcher's stderr log, for the report about a watcher
|
|
158
|
+
* that did not start.
|
|
159
|
+
*
|
|
160
|
+
* startTracker sends the watcher's stderr to the shadow log (ENG-1453), so a
|
|
161
|
+
* watcher that dies at boot leaves its crash there, and before this the report
|
|
162
|
+
* carried only "timeout" or "died": two Windows no-starts in a row reached us
|
|
163
|
+
* with no cause. The home directory is replaced with `~`: on Windows it carries
|
|
164
|
+
* the account name, and the rest of the path says the same thing without it.
|
|
165
|
+
* Null when there is nothing to send.
|
|
166
|
+
*/
|
|
167
|
+
export function trackerLogTail(projectDir, maxLines = 20, maxChars = 2000) {
|
|
168
|
+
const litmusDir = path.join(projectDir, ".litmus");
|
|
169
|
+
let assessmentId = null;
|
|
170
|
+
try {
|
|
171
|
+
assessmentId = JSON.parse(readFileSync(path.join(litmusDir, "config.json"), "utf8")).assessmentId ?? null;
|
|
172
|
+
}
|
|
173
|
+
catch { /* legacy path below */ }
|
|
174
|
+
// The same resolution startTracker writes with.
|
|
175
|
+
const logPath = (assessmentId ? shadowLogPath(assessmentId) : null) ?? path.join(litmusDir, "tracker.log");
|
|
176
|
+
// Only the end of the file: the watcher appends to this log for the life of the
|
|
177
|
+
// assessment, and a report about a failed start must not read all of it (Greptile
|
|
178
|
+
// on #3174). 64 KB holds 20 lines of any stack trace.
|
|
179
|
+
let raw;
|
|
180
|
+
let fd = null;
|
|
181
|
+
try {
|
|
182
|
+
fd = openSync(logPath, "r");
|
|
183
|
+
const size = fstatSync(fd).size;
|
|
184
|
+
const length = Math.min(size, 64 * 1024);
|
|
185
|
+
const buf = Buffer.alloc(length);
|
|
186
|
+
readSync(fd, buf, 0, length, size - length);
|
|
187
|
+
raw = buf.toString("utf8");
|
|
188
|
+
// A read that started mid-line keeps only whole lines.
|
|
189
|
+
if (length < size)
|
|
190
|
+
raw = raw.slice(raw.indexOf("\n") + 1);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
finally {
|
|
196
|
+
if (fd !== null)
|
|
197
|
+
try {
|
|
198
|
+
closeSync(fd);
|
|
199
|
+
}
|
|
200
|
+
catch { /* nothing to do */ }
|
|
201
|
+
}
|
|
202
|
+
const lines = raw.split(/\r?\n/).filter((l) => l.trim() !== "").slice(-maxLines);
|
|
203
|
+
if (lines.length === 0)
|
|
204
|
+
return null;
|
|
205
|
+
const home = os.homedir();
|
|
206
|
+
let tail = lines.join("\n");
|
|
207
|
+
if (home) {
|
|
208
|
+
// Both separators: Node prints Windows paths either way.
|
|
209
|
+
for (const form of new Set([home, home.replace(/\\/g, "/")]))
|
|
210
|
+
tail = tail.split(form).join("~");
|
|
211
|
+
}
|
|
212
|
+
return tail.length > maxChars ? tail.slice(-maxChars) : tail;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* ENG-2950: the watcher is running AND finished starting: healthy, and it stamped
|
|
216
|
+
* `tracker.ready` with its own pid. `isTrackerHealthy` alone passes a watcher that
|
|
217
|
+
* wedged at boot, because startTracker stamps the nonce at spawn (Greptile on #3174),
|
|
218
|
+
* so it cannot be what tells a candidate their work is being recorded.
|
|
219
|
+
*/
|
|
220
|
+
export function isTrackerRecording(projectDir) {
|
|
221
|
+
const diag = trackerDiagnostics(projectDir);
|
|
222
|
+
return diag.healthy && diag.pid !== null && readyStampNames(projectDir, diag.pid);
|
|
223
|
+
}
|
|
155
224
|
/** How long a freshly spawned watcher gets to stamp `tracker.ready` before its boot counts as failed. */
|
|
156
225
|
export const WATCHER_BOOT_TIMEOUT_MS = 6000;
|
|
157
226
|
/**
|