@epic-web/workshop-app 6.74.0 → 6.74.2

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.
Files changed (54) hide show
  1. package/build/client/assets/_exerciseNumber-6IQJMb5M.js +2 -0
  2. package/build/client/assets/{_exerciseNumber-jokuvO2V.js.map → _exerciseNumber-6IQJMb5M.js.map} +1 -1
  3. package/build/client/assets/_exerciseNumber_.finished-D9-WSUZy.js +2 -0
  4. package/build/client/assets/{_exerciseNumber_.finished-BaC--Y5p.js.map → _exerciseNumber_.finished-D9-WSUZy.js.map} +1 -1
  5. package/build/client/assets/_extra-IT1EaIMp.js +2 -0
  6. package/build/client/assets/{_extra-DXypL1sc.js.map → _extra-IT1EaIMp.js.map} +1 -1
  7. package/build/client/assets/{_layout-C9vSX5Ti.js → _layout-BDFC2e7T.js} +2 -2
  8. package/build/client/assets/{_layout-C9vSX5Ti.js.map → _layout-BDFC2e7T.js.map} +1 -1
  9. package/build/client/assets/_layout-CCCrBY2W.js +2 -0
  10. package/build/client/assets/{_layout-_Aw6qzZC.js.map → _layout-CCCrBY2W.js.map} +1 -1
  11. package/build/client/assets/{diff-Dng5ItOr.js → diff-4YyKvzHi.js} +2 -2
  12. package/build/client/assets/{diff-Dng5ItOr.js.map → diff-4YyKvzHi.js.map} +1 -1
  13. package/build/client/assets/diff-8Er9eAl-.js +2 -0
  14. package/build/client/assets/{diff-DfWBhj2O.js.map → diff-8Er9eAl-.js.map} +1 -1
  15. package/build/client/assets/epic-video-BtFzbNqF.js +2 -0
  16. package/build/client/assets/{epic-video-C1_HSISA.js.map → epic-video-BtFzbNqF.js.map} +1 -1
  17. package/build/client/assets/{epic-video-CC0372g5.js → epic-video-DzLohyvt.js} +146 -146
  18. package/build/client/assets/epic-video-DzLohyvt.js.map +1 -0
  19. package/build/client/assets/finished-CzmzTZg6.js +2 -0
  20. package/build/client/assets/{finished-BbEk1NdF.js.map → finished-CzmzTZg6.js.map} +1 -1
  21. package/build/client/assets/index-BN0kldnY.js +2 -0
  22. package/build/client/assets/{index-CFM_ffAh.js.map → index-BN0kldnY.js.map} +1 -1
  23. package/build/client/assets/index-BNsKVnVt.js +2 -0
  24. package/build/client/assets/{index-Pxi8WjFA.js.map → index-BNsKVnVt.js.map} +1 -1
  25. package/build/client/assets/index-Cby_tLUO.js +2 -0
  26. package/build/client/assets/{index-CfU0fdf7.js.map → index-Cby_tLUO.js.map} +1 -1
  27. package/build/client/assets/{index-DroM8fzS.js → index-Dpyv8N6m.js} +2 -2
  28. package/build/client/assets/{index-DroM8fzS.js.map → index-Dpyv8N6m.js.map} +1 -1
  29. package/build/client/assets/{manifest-835c6db1.js → manifest-65ac4702.js} +1 -1
  30. package/build/client/assets/{mdx-vy-1-0a3.js → mdx-8X3W8bVO.js} +2 -2
  31. package/build/client/assets/{mdx-vy-1-0a3.js.map → mdx-8X3W8bVO.js.map} +1 -1
  32. package/build/client/assets/{progress-BcA4i0iU.js → progress-Bby-ybMA.js} +2 -2
  33. package/build/client/assets/progress-Bby-ybMA.js.map +1 -0
  34. package/build/client/assets/root-BwYDIUyI.js.map +1 -1
  35. package/build/client/assets/test-DXylXETz.js +2 -0
  36. package/build/client/assets/{test-Ciw2aKZE.js.map → test-DXylXETz.js.map} +1 -1
  37. package/build/client/assets/{tests-CZ2AhDKA.js → tests-DlPVOsMT.js} +2 -2
  38. package/build/client/assets/{tests-CZ2AhDKA.js.map → tests-DlPVOsMT.js.map} +1 -1
  39. package/build/server/index.js +310 -63
  40. package/build/server/index.js.map +1 -1
  41. package/package.json +3 -3
  42. package/build/client/assets/_exerciseNumber-jokuvO2V.js +0 -2
  43. package/build/client/assets/_exerciseNumber_.finished-BaC--Y5p.js +0 -2
  44. package/build/client/assets/_extra-DXypL1sc.js +0 -2
  45. package/build/client/assets/_layout-_Aw6qzZC.js +0 -2
  46. package/build/client/assets/diff-DfWBhj2O.js +0 -2
  47. package/build/client/assets/epic-video-C1_HSISA.js +0 -2
  48. package/build/client/assets/epic-video-CC0372g5.js.map +0 -1
  49. package/build/client/assets/finished-BbEk1NdF.js +0 -2
  50. package/build/client/assets/index-CFM_ffAh.js +0 -2
  51. package/build/client/assets/index-CfU0fdf7.js +0 -2
  52. package/build/client/assets/index-Pxi8WjFA.js +0 -2
  53. package/build/client/assets/progress-BcA4i0iU.js.map +0 -1
  54. package/build/client/assets/test-Ciw2aKZE.js +0 -2
@@ -10,7 +10,7 @@ import path from "node:path";
10
10
  import { makeSingletonCache, cachified, deleteCache, compiledCodeCache, shouldForceFresh, discordCache, getAllWorkshopCaches, getGlobalCaches, globalCacheDirectoryExists, updateCacheEntry, deleteWorkshopCache, deleteCacheEntry, readEntryByPath, ogCache } from "@epic-web/workshop-utils/cache.server";
11
11
  import { getWorkshopConfig } from "@epic-web/workshop-utils/config.server";
12
12
  import { getAuthInfo, getPreferences, getLoggedInProductHosts, muteNotification, getMutedNotifications, requireAuthInfo, logout, setPreferences, PlayerPreferencesSchema, markOnboardingComplete, setAuthInfo, readDb, deleteDb } from "@epic-web/workshop-utils/db.server";
13
- import { getEnv } from "@epic-web/workshop-utils/env.server";
13
+ import { getEnv as getEnv$1 } from "@epic-web/workshop-utils/env.server";
14
14
  import { checkForUpdatesCached, checkForExerciseChanges, getCommitInfo, getLatestWorkshopAppVersion } from "@epic-web/workshop-utils/git.server";
15
15
  import z$1, { z } from "zod";
16
16
  import { getApps, getExercises, getPlaygroundAppName, extractNumbersAndTypeFromAppNameOrPath, isExtraApp, getAppFromFile, getAppByName, isProblemApp, isPlaygroundApp, isExerciseStepApp, getExercise, isSolutionApp, getWorkshopRoot, setPlayground, getExerciseApp, requireExerciseApp, getAppDisplayName, requireExercise, getNextExerciseApp, getPrevExerciseApp, getAppPageRoute, getExtrasInstructions, getWorkshopFinished, getWorkshopInstructions, getSavedPlaygrounds } from "@epic-web/workshop-utils/apps.server";
@@ -57,7 +57,6 @@ import fs from "fs";
57
57
  import { getDirModifiedTime } from "@epic-web/workshop-utils/modified-time.server";
58
58
  import * as esbuild from "esbuild";
59
59
  import { ElementScrollRestoration } from "@epic-web/restore-scroll";
60
- import { getPreferredDownloadSize } from "@epic-web/workshop-utils/offline-video-utils";
61
60
  import { MediaController, MediaTimeRange, MediaControlBar, MediaPlayButton, MediaSeekBackwardButton, MediaSeekForwardButton, MediaTimeDisplay, MediaMuteButton, MediaVolumeRange, MediaPlaybackRateButton, MediaPipButton, MediaFullscreenButton } from "media-chrome/react";
62
61
  import { useEventSource } from "remix-utils/sse/react";
63
62
  import RealMuxPlayer, { MaxResolution, MinResolution } from "@mux/mux-player-react";
@@ -73,9 +72,13 @@ import AnsiToHTML from "ansi-to-html";
73
72
  import { eventStream } from "remix-utils/sse/server";
74
73
  import { EventEmitter } from "events";
75
74
  import { remember } from "@epic-web/remember";
76
- import { logger } from "@epic-web/workshop-utils/logger";
75
+ import { debuglog } from "node:util";
77
76
  import * as client from "openid-client";
78
- import { getErrorMessage as getErrorMessage$1 } from "@epic-web/workshop-utils/utils";
77
+ import fs$1 from "node:fs/promises";
78
+ import os from "node:os";
79
+ import { fileURLToPath } from "node:url";
80
+ import md5 from "md5-hex";
81
+ import timeZonePlugin from "dayjs/plugin/timezone.js";
79
82
  import { loadJSON } from "@epic-web/workshop-utils/data-storage.server";
80
83
  import inspector from "node:inspector";
81
84
  import { Resvg } from "@resvg/resvg-js";
@@ -273,7 +276,7 @@ async function getPresentUsers({
273
276
  return uniqueUsers(users);
274
277
  }
275
278
  const loggedInProductHosts = await getLoggedInProductHosts();
276
- const ENV2 = getEnv();
279
+ const ENV2 = getEnv$1();
277
280
  const epicshopVersion = ENV2.EPICSHOP_APP_VERSION ?? null;
278
281
  let repoStatus = null;
279
282
  try {
@@ -538,7 +541,7 @@ const Heading = function Heading2({
538
541
  }
539
542
  );
540
543
  };
541
- function getErrorMessage(error, defaultMessage = "Unknown Error") {
544
+ function getErrorMessage$1(error, defaultMessage = "Unknown Error") {
542
545
  if (typeof error === "string") return error;
543
546
  if (error && typeof error === "object" && "message" in error && typeof error.message === "string") {
544
547
  return error.message;
@@ -751,7 +754,7 @@ function GeneralErrorBoundary({
751
754
  error.data
752
755
  ] }),
753
756
  statusHandlers: givenStatusHandlers,
754
- unexpectedErrorHandler = (error) => /* @__PURE__ */ jsx("p", { children: getErrorMessage(error) })
757
+ unexpectedErrorHandler = (error) => /* @__PURE__ */ jsx("p", { children: getErrorMessage$1(error) })
755
758
  }) {
756
759
  const [isServerDown, setIsServerDown] = useState(false);
757
760
  const error = useRouteError();
@@ -1231,11 +1234,11 @@ function UpdateToast({
1231
1234
  );
1232
1235
  }
1233
1236
  const data2 = await res.json().catch(() => ({}));
1234
- const schema = z.object({
1237
+ const schema2 = z.object({
1235
1238
  status: z.enum(["ok", "error"]),
1236
1239
  message: z.string().optional()
1237
1240
  });
1238
- const parsed = schema.safeParse(data2);
1241
+ const parsed = schema2.safeParse(data2);
1239
1242
  if (!parsed.success) {
1240
1243
  console.error("Invalid response from update API", data2);
1241
1244
  throw new Error("Invalid response from update API");
@@ -1625,6 +1628,68 @@ function createConfettiHeaders(value = String(Date.now())) {
1625
1628
  })
1626
1629
  });
1627
1630
  }
1631
+ function getCompletedSteps(progress) {
1632
+ const completedSteps = [];
1633
+ for (const entry2 of progress) {
1634
+ if (entry2.type !== "step" || !entry2.epicCompletedAt) continue;
1635
+ if (typeof entry2.exerciseNumber !== "number" || typeof entry2.stepNumber !== "number") {
1636
+ continue;
1637
+ }
1638
+ completedSteps.push({
1639
+ exerciseNumber: entry2.exerciseNumber,
1640
+ stepNumber: entry2.stepNumber
1641
+ });
1642
+ }
1643
+ return completedSteps;
1644
+ }
1645
+ function getStepRoutes(step) {
1646
+ const exercise = step.exerciseNumber.toString().padStart(2, "0");
1647
+ const stepNumber = step.stepNumber.toString().padStart(2, "0");
1648
+ const baseRoute = `/exercise/${exercise}/${stepNumber}`;
1649
+ return {
1650
+ id: `${exercise}/${stepNumber}`,
1651
+ problemRoute: `${baseRoute}/problem`,
1652
+ solutionRoute: `${baseRoute}/solution`
1653
+ };
1654
+ }
1655
+ function getAvailableSteps(completedSteps, currentPath) {
1656
+ return completedSteps.filter((step) => {
1657
+ const { problemRoute, solutionRoute } = getStepRoutes(step);
1658
+ return currentPath !== problemRoute && currentPath !== solutionRoute;
1659
+ });
1660
+ }
1661
+ function getPracticePastLessonKey({
1662
+ progress,
1663
+ currentPath
1664
+ }) {
1665
+ if (!progress) return null;
1666
+ const completedSteps = getCompletedSteps(progress);
1667
+ if (completedSteps.length < 2) return null;
1668
+ const availableSteps = getAvailableSteps(completedSteps, currentPath);
1669
+ if (availableSteps.length === 0) return null;
1670
+ const availableStepIds = availableSteps.map((step) => getStepRoutes(step).id).sort().join(",");
1671
+ return `${currentPath}::${availableStepIds}`;
1672
+ }
1673
+ function getPracticePastLessonRoute({ progress, currentPath }, random = Math.random) {
1674
+ if (!progress) return null;
1675
+ const completedSteps = getCompletedSteps(progress);
1676
+ if (completedSteps.length < 2) return null;
1677
+ const availableSteps = getAvailableSteps(completedSteps, currentPath);
1678
+ if (availableSteps.length === 0) return null;
1679
+ const randomStep = availableSteps[Math.floor(random() * availableSteps.length)];
1680
+ if (!randomStep) return null;
1681
+ return getStepRoutes(randomStep).problemRoute;
1682
+ }
1683
+ function getPracticePastLessonData(input, random = Math.random) {
1684
+ const key = getPracticePastLessonKey(input);
1685
+ if (!key) {
1686
+ return { key: null, route: null };
1687
+ }
1688
+ return {
1689
+ key,
1690
+ route: getPracticePastLessonRoute(input, random)
1691
+ };
1692
+ }
1628
1693
  function getSnapshot() {
1629
1694
  return window.navigator.onLine;
1630
1695
  }
@@ -1974,10 +2039,10 @@ function sanitizeCookieValue(value) {
1974
2039
  return char;
1975
2040
  }).join("");
1976
2041
  }
1977
- async function redirectWithToast(url, toast2, init) {
2042
+ async function redirectWithToast(url, toast2, init2) {
1978
2043
  return redirect(url, {
1979
- ...init,
1980
- headers: combineHeaders(init?.headers, await createToastHeaders(toast2))
2044
+ ...init2,
2045
+ headers: combineHeaders(init2?.headers, await createToastHeaders(toast2))
1981
2046
  });
1982
2047
  }
1983
2048
  async function createToastHeaders(optionalToast) {
@@ -2039,6 +2104,7 @@ async function loader$K({
2039
2104
  }) {
2040
2105
  const timings = makeTimings("rootLoader");
2041
2106
  const workshopConfig = getWorkshopConfig();
2107
+ const requestUrl = new URL(request.url);
2042
2108
  const {
2043
2109
  title: workshopTitle,
2044
2110
  subtitle: workshopSubtitle,
@@ -2098,6 +2164,10 @@ async function loader$K({
2098
2164
  dependenciesNeedInstall: false
2099
2165
  };
2100
2166
  }
2167
+ const practicePastLesson = getPracticePastLessonData({
2168
+ progress: asyncStuff.progress,
2169
+ currentPath: requestUrl.pathname
2170
+ });
2101
2171
  return data({
2102
2172
  ...asyncStuff,
2103
2173
  workshopConfig,
@@ -2113,15 +2183,16 @@ async function loader$K({
2113
2183
  fullPath,
2114
2184
  relativePath
2115
2185
  })),
2116
- ENV: getEnv(),
2186
+ ENV: getEnv$1(),
2187
+ practicePastLesson,
2117
2188
  requestInfo: {
2118
- protocol: new URL(request.url).protocol,
2119
- hostname: new URL(request.url).hostname,
2120
- port: new URL(request.url).port,
2121
- origin: new URL(request.url).origin,
2189
+ protocol: requestUrl.protocol,
2190
+ hostname: requestUrl.hostname,
2191
+ port: requestUrl.port,
2192
+ origin: requestUrl.origin,
2122
2193
  domain: getDomainUrl(request),
2123
2194
  hints: getHints(request),
2124
- path: new URL(request.url).pathname,
2195
+ path: requestUrl.pathname,
2125
2196
  session: {
2126
2197
  theme
2127
2198
  },
@@ -2660,38 +2731,22 @@ function useNextExerciseRoute() {
2660
2731
  function useRandomCompletedExerciseRoute() {
2661
2732
  const location = useLocation();
2662
2733
  const progress = useEpicProgress();
2663
- const [randomRoute, setRandomRoute] = React.useState(null);
2734
+ const {
2735
+ practicePastLesson
2736
+ } = useRootLoaderData();
2737
+ const [randomRoute, setRandomRoute] = React.useState(practicePastLesson?.route ?? null);
2738
+ const lastKeyRef = React.useRef(practicePastLesson?.key ?? null);
2664
2739
  React.useEffect(() => {
2665
- if (!progress) {
2666
- setRandomRoute(null);
2667
- return;
2668
- }
2669
- const completedSteps = progress.filter((p) => p.type === "step" && p.epicCompletedAt);
2670
- if (completedSteps.length < 2) {
2671
- setRandomRoute(null);
2672
- return;
2673
- }
2674
- const currentPath = location.pathname;
2675
- const availableSteps = completedSteps.filter((step) => {
2676
- if (step.type !== "step") return false;
2677
- const ex2 = step.exerciseNumber.toString().padStart(2, "0");
2678
- const st2 = step.stepNumber.toString().padStart(2, "0");
2679
- const problemRoute = `/exercise/${ex2}/${st2}/problem`;
2680
- const solutionRoute = `/exercise/${ex2}/${st2}/solution`;
2681
- return currentPath !== problemRoute && currentPath !== solutionRoute;
2740
+ const nextKey = getPracticePastLessonKey({
2741
+ progress,
2742
+ currentPath: location.pathname
2682
2743
  });
2683
- if (availableSteps.length === 0) {
2684
- setRandomRoute(null);
2685
- return;
2686
- }
2687
- const randomStep = availableSteps[Math.floor(Math.random() * availableSteps.length)];
2688
- if (!randomStep || randomStep.type !== "step") {
2689
- setRandomRoute(null);
2690
- return;
2691
- }
2692
- const ex = randomStep.exerciseNumber.toString().padStart(2, "0");
2693
- const st = randomStep.stepNumber.toString().padStart(2, "0");
2694
- setRandomRoute(`/exercise/${ex}/${st}/problem`);
2744
+ if (nextKey === lastKeyRef.current) return;
2745
+ lastKeyRef.current = nextKey;
2746
+ setRandomRoute(nextKey ? getPracticePastLessonRoute({
2747
+ progress,
2748
+ currentPath: location.pathname
2749
+ }) : null);
2695
2750
  }, [progress, location.pathname]);
2696
2751
  return randomRoute;
2697
2752
  }
@@ -6124,6 +6179,30 @@ const route12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
6124
6179
  default: _layout$3,
6125
6180
  handle: handle$8
6126
6181
  }, Symbol.toStringTag, { value: "Module" }));
6182
+ const videoDownloadQualityOrder = {
6183
+ best: ["source", "highest", "high", "medium", "low"],
6184
+ high: ["high", "medium", "low", "highest", "source"],
6185
+ medium: ["medium", "low", "high", "highest", "source"],
6186
+ low: ["low", "medium", "high", "highest", "source"]
6187
+ };
6188
+ function getPreferredDownloadSize(downloadSizes, resolution) {
6189
+ if (downloadSizes.length === 0) return null;
6190
+ const sizeByQuality = new Map(
6191
+ downloadSizes.map((download) => [
6192
+ download.quality.toLowerCase(),
6193
+ download.size
6194
+ ])
6195
+ );
6196
+ const order = videoDownloadQualityOrder[resolution] ?? videoDownloadQualityOrder.best;
6197
+ for (const quality of order) {
6198
+ const size = sizeByQuality.get(quality);
6199
+ if (typeof size === "number" && Number.isFinite(size) && size > 0)
6200
+ return size;
6201
+ }
6202
+ return downloadSizes.find(
6203
+ (download) => typeof download.size === "number" && Number.isFinite(download.size)
6204
+ )?.size ?? null;
6205
+ }
6127
6206
  const PlaybackTimeSchema = z.object({
6128
6207
  time: z.number(),
6129
6208
  expiresAt: z.string()
@@ -8374,7 +8453,7 @@ async function action$d({
8374
8453
  reset: form.reset
8375
8454
  });
8376
8455
  } catch (error) {
8377
- const message = getErrorMessage(error);
8456
+ const message = getErrorMessage$1(error);
8378
8457
  console.error("Error setting playground", message);
8379
8458
  return dataWithPE(request, formData, {
8380
8459
  status: "error",
@@ -10721,7 +10800,7 @@ async function fetchDiscordPosts({ request }) {
10721
10800
  const result = await fetch(url, {
10722
10801
  headers: { "content-type": "application/json" }
10723
10802
  }).catch((error) => {
10724
- return new Response(getErrorMessage(error), { status: 500 });
10803
+ return new Response(getErrorMessage$1(error), { status: 500 });
10725
10804
  });
10726
10805
  if (!result.ok) {
10727
10806
  console.error(`There was an error communicating with discord`);
@@ -13799,6 +13878,24 @@ const EVENTS = {
13799
13878
  AUTH_RESOLVED: "AUTH_RESOLVED",
13800
13879
  AUTH_REJECTED: "AUTH_REJECTED"
13801
13880
  };
13881
+ function logger(ns) {
13882
+ const log2 = debuglog(ns);
13883
+ const prefixedLoggerFn = (prefix, stringOrFn, ...params) => {
13884
+ if (!debuglog(ns).enabled) return;
13885
+ const string = typeof stringOrFn === "function" ? stringOrFn() : stringOrFn;
13886
+ log2(prefix ? `${prefix} ${string}` : string, ...params);
13887
+ };
13888
+ const loggerFn = prefixedLoggerFn.bind(null, null);
13889
+ loggerFn.error = prefixedLoggerFn.bind(null, "🚨");
13890
+ loggerFn.warn = prefixedLoggerFn.bind(null, "⚠️");
13891
+ loggerFn.info = prefixedLoggerFn.bind(null, "ℹ️");
13892
+ loggerFn.namespace = ns;
13893
+ loggerFn.logger = (subNs) => logger(`${ns}:${subNs}`);
13894
+ Object.defineProperty(loggerFn, "enabled", {
13895
+ get: () => log2.enabled
13896
+ });
13897
+ return loggerFn;
13898
+ }
13802
13899
  const log = logger("epic:auth");
13803
13900
  const UserInfoSchema = z.object({
13804
13901
  id: z.string(),
@@ -13888,7 +13985,7 @@ async function registerDevice() {
13888
13985
  } catch (error) {
13889
13986
  log.error("Device registration failed:", error);
13890
13987
  authEmitter.emit(EVENTS.AUTH_REJECTED, {
13891
- error: getErrorMessage(error)
13988
+ error: getErrorMessage$1(error)
13892
13989
  });
13893
13990
  }
13894
13991
  }
@@ -14869,11 +14966,161 @@ const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
14869
14966
  __proto__: null,
14870
14967
  loader: loader$k
14871
14968
  }, Symbol.toStringTag, { value: "Module" }));
14969
+ const __dirname$1 = path.dirname(new URL(import.meta.url).pathname);
14970
+ const schema = z.object({
14971
+ EPICSHOP_CONTEXT_CWD: z.string().default(""),
14972
+ EPICSHOP_WORKSHOP_INSTANCE_ID: z.string().default(""),
14973
+ NODE_ENV: z.enum(["production", "development", "test"]).default("development"),
14974
+ EPICSHOP_GITHUB_REPO: z.string().default(""),
14975
+ EPICSHOP_GITHUB_ROOT: z.string().default(""),
14976
+ EPICSHOP_APP_VERSION: z.string().optional(),
14977
+ EPICSHOP_APP_COMMIT_SHA: z.string().optional(),
14978
+ EPICSHOP_PARENT_PORT: z.string().optional(),
14979
+ EPICSHOP_PARENT_TOKEN: z.string().optional(),
14980
+ EPICSHOP_APP_LOCATION: z.string().optional(),
14981
+ EPICSHOP_HOME_DIR: z.string().default(path.join(os.homedir(), ".epicshop")),
14982
+ EPICSHOP_IS_PUBLISHED: z.string().default(__dirname$1.includes("node_modules") ? "true" : "false"),
14983
+ // Sentry configuration
14984
+ SENTRY_DSN: z.string().default(
14985
+ "https://cd51fbf4ca0834f7b3529a478a8ece4c@o913766.ingest.us.sentry.io/4509630082252800"
14986
+ ),
14987
+ SENTRY_ORG: z.string().default("kent-c-dodds-tech-llc"),
14988
+ SENTRY_PROJECT: z.string().default("epicshop"),
14989
+ SENTRY_PROJECT_ID: z.string().default("4509630082252800"),
14990
+ SENTRY_RELEASE: z.string().optional()
14991
+ }).transform(async (env) => {
14992
+ if (env.EPICSHOP_CONTEXT_CWD === "") {
14993
+ const contextCwd = await getEpicshopContextCwd();
14994
+ if (contextCwd) {
14995
+ env.EPICSHOP_CONTEXT_CWD = contextCwd;
14996
+ }
14997
+ }
14998
+ if (env.EPICSHOP_WORKSHOP_INSTANCE_ID === "") {
14999
+ env.EPICSHOP_WORKSHOP_INSTANCE_ID = md5(env.EPICSHOP_CONTEXT_CWD);
15000
+ }
15001
+ if (env.EPICSHOP_CONTEXT_CWD) {
15002
+ const pkgJsonPath = path.join(env.EPICSHOP_CONTEXT_CWD, "package.json");
15003
+ const pkgJson = JSON.parse(await fs$1.readFile(pkgJsonPath, "utf-8"));
15004
+ const epicshopConfig = pkgJson.epicshop;
15005
+ if (!env.EPICSHOP_GITHUB_REPO || !env.EPICSHOP_GITHUB_ROOT) {
15006
+ const { githubRepo, githubRoot } = handleGitHubRepoAndRoot({
15007
+ githubRepo: epicshopConfig.githubRepo,
15008
+ githubRoot: epicshopConfig.githubRoot
15009
+ });
15010
+ env.EPICSHOP_GITHUB_REPO = githubRepo;
15011
+ env.EPICSHOP_GITHUB_ROOT = githubRoot;
15012
+ }
15013
+ }
15014
+ if (env.EPICSHOP_APP_LOCATION === void 0) {
15015
+ try {
15016
+ const workshopAppPath = import.meta.resolve("@epic-web/workshop-app/package.json");
15017
+ const packagePath = fileURLToPath(workshopAppPath);
15018
+ env.EPICSHOP_APP_LOCATION = path.dirname(packagePath);
15019
+ } catch {
15020
+ }
15021
+ }
15022
+ if (!env.EPICSHOP_APP_VERSION) {
15023
+ if (env.EPICSHOP_APP_LOCATION) {
15024
+ const packageJson = JSON.parse(
15025
+ await fs$1.readFile(
15026
+ path.join(env.EPICSHOP_APP_LOCATION, "package.json"),
15027
+ "utf-8"
15028
+ )
15029
+ );
15030
+ env.EPICSHOP_APP_VERSION = packageJson.version;
15031
+ }
15032
+ }
15033
+ return env;
15034
+ });
15035
+ async function getEpicshopContextCwd() {
15036
+ if (process.env.EPICSHOP_CONTEXT_CWD) {
15037
+ return process.env.EPICSHOP_CONTEXT_CWD;
15038
+ }
15039
+ let dir = process.cwd();
15040
+ while (true) {
15041
+ const pkgPath = path.join(dir, "package.json");
15042
+ try {
15043
+ const pkgRaw = await fs$1.readFile(pkgPath, "utf8");
15044
+ const pkg = JSON.parse(pkgRaw);
15045
+ if (pkg.epicshop) {
15046
+ return dir;
15047
+ }
15048
+ } catch {
15049
+ }
15050
+ const parentDir = path.dirname(dir);
15051
+ if (parentDir === dir) break;
15052
+ dir = parentDir;
15053
+ }
15054
+ return null;
15055
+ }
15056
+ async function init() {
15057
+ const parsed = await schema.safeParseAsync(process.env);
15058
+ if (!parsed.success) {
15059
+ console.error(
15060
+ "❌ Invalid environment variables:",
15061
+ parsed.error.flatten().fieldErrors
15062
+ );
15063
+ throw new Error("Invalid environment variables");
15064
+ }
15065
+ Object.assign(process.env, parsed.data);
15066
+ }
15067
+ function getEnv() {
15068
+ return {
15069
+ MODE: process.env.NODE_ENV,
15070
+ EPICSHOP_CONTEXT_CWD: process.env.EPICSHOP_CONTEXT_CWD,
15071
+ EPICSHOP_WORKSHOP_INSTANCE_ID: process.env.EPICSHOP_WORKSHOP_INSTANCE_ID,
15072
+ EPICSHOP_GITHUB_REPO: process.env.EPICSHOP_GITHUB_REPO,
15073
+ EPICSHOP_GITHUB_ROOT: process.env.EPICSHOP_GITHUB_ROOT,
15074
+ EPICSHOP_DEPLOYED: process.env.EPICSHOP_DEPLOYED === "true" || process.env.EPICSHOP_DEPLOYED === "1",
15075
+ EPICSHOP_APP_VERSION: process.env.EPICSHOP_APP_VERSION,
15076
+ EPICSHOP_APP_COMMIT_SHA: process.env.EPICSHOP_APP_COMMIT_SHA,
15077
+ EPICSHOP_PARENT_PORT: process.env.EPICSHOP_PARENT_PORT,
15078
+ EPICSHOP_PARENT_TOKEN: process.env.EPICSHOP_PARENT_TOKEN,
15079
+ EPICSHOP_IS_PUBLISHED: process.env.EPICSHOP_IS_PUBLISHED === "true",
15080
+ SENTRY_DSN: process.env.SENTRY_DSN,
15081
+ SENTRY_PROJECT_ID: process.env.SENTRY_PROJECT_ID,
15082
+ SENTRY_RELEASE: process.env.SENTRY_RELEASE
15083
+ };
15084
+ }
15085
+ await init();
15086
+ const ENV$1 = getEnv();
15087
+ global.ENV = ENV$1;
15088
+ remember("dayjs", () => {
15089
+ dayjsLib.extend(utcPlugin);
15090
+ dayjsLib.extend(timeZonePlugin);
15091
+ dayjsLib.extend(relativeTimePlugin);
15092
+ return dayjsLib;
15093
+ });
15094
+ function getErrorMessage(error, fallbackMessage = "Unknown Error") {
15095
+ if (typeof error === "string") return error;
15096
+ if (error && typeof error === "object" && "message" in error && typeof error.message === "string") {
15097
+ return error.message;
15098
+ }
15099
+ console.error("Unable to get error message for error", error);
15100
+ return fallbackMessage;
15101
+ }
15102
+ function handleGitHubRepoAndRoot({
15103
+ githubRepo,
15104
+ githubRoot
15105
+ }) {
15106
+ if (githubRepo) {
15107
+ githubRepo = githubRepo.replace(/\/$/, "");
15108
+ githubRoot = `${githubRepo}/tree/main`;
15109
+ } else if (githubRoot) {
15110
+ githubRepo = githubRoot.replace(/\/(blob|tree)\/.*$/, "");
15111
+ githubRoot = `${githubRepo}/tree/main`;
15112
+ } else {
15113
+ throw new Error(
15114
+ `Either githubRepo or githubRoot is required. Please ensure your epicshop package.json config includes either githubRepo or githubRoot configuration.`
15115
+ );
15116
+ }
15117
+ return { githubRepo, githubRoot };
15118
+ }
14872
15119
  async function loader$j({
14873
15120
  request
14874
15121
  }) {
14875
15122
  ensureUndeployed();
14876
- const currentWorkshopId = getEnv().EPICSHOP_WORKSHOP_INSTANCE_ID;
15123
+ const currentWorkshopId = getEnv$1().EPICSHOP_WORKSHOP_INSTANCE_ID;
14877
15124
  const allWorkshopCaches = await getAllWorkshopCaches();
14878
15125
  const globalCaches = await getGlobalCaches();
14879
15126
  const allCaches = [...allWorkshopCaches, ...globalCaches];
@@ -14970,7 +15217,7 @@ async function action$7({
14970
15217
  } catch (error) {
14971
15218
  return {
14972
15219
  status: "error",
14973
- error: getErrorMessage$1(error, "Invalid JSON value")
15220
+ error: getErrorMessage(error, "Invalid JSON value")
14974
15221
  };
14975
15222
  }
14976
15223
  }
@@ -16454,22 +16701,22 @@ async function loader$e() {
16454
16701
  const [commitInfo, latestVersion] = await Promise.all([time(() => getCommitInfo(), {
16455
16702
  timings,
16456
16703
  type: "getCommitInfo"
16457
- }), time(() => getLatestWorkshopAppVersion().catch((e) => getErrorMessage(e)), {
16704
+ }), time(() => getLatestWorkshopAppVersion().catch((e) => getErrorMessage$1(e)), {
16458
16705
  timings,
16459
16706
  type: "getLatestWorkshopAppVersion"
16460
16707
  })]);
16461
16708
  const uptime = process.uptime() * 1e3;
16462
16709
  const startDate = new Date(Date.now() - uptime);
16463
16710
  return data({
16464
- workshopInstanceId: getEnv().EPICSHOP_WORKSHOP_INSTANCE_ID,
16465
- workshopContextCwd: getEnv().EPICSHOP_CONTEXT_CWD,
16711
+ workshopInstanceId: getEnv$1().EPICSHOP_WORKSHOP_INSTANCE_ID,
16712
+ workshopContextCwd: getEnv$1().EPICSHOP_CONTEXT_CWD,
16466
16713
  workshopCommit: commitInfo ? {
16467
16714
  ...commitInfo,
16468
16715
  dateFormatted: dayjs(commitInfo.date).format("YYYY-MM-DD HH:mm:ss"),
16469
16716
  dateFromNow: dayjs(commitInfo.date).fromNow()
16470
16717
  } : null,
16471
16718
  latestWorkshopAppVersion: latestVersion,
16472
- workshopAppVersion: getEnv().EPICSHOP_APP_VERSION,
16719
+ workshopAppVersion: getEnv$1().EPICSHOP_APP_VERSION,
16473
16720
  startTime: startDate.toISOString(),
16474
16721
  startTimeFormatted: dayjs(startDate).format("YYYY-MM-DD HH:mm:ss"),
16475
16722
  startTimeFromNow: dayjs(startDate).fromNow()
@@ -16787,7 +17034,7 @@ const route47 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
16787
17034
  action: action$4
16788
17035
  }, Symbol.toStringTag, { value: "Module" }));
16789
17036
  function sendMcpMessage(type, payload, options = {}) {
16790
- const { schema } = options;
17037
+ const { schema: schema2 } = options;
16791
17038
  const messageId = crypto.randomUUID();
16792
17039
  return new Promise((resolve, reject) => {
16793
17040
  if (!window.parent || window.parent === window) {
@@ -16806,8 +17053,8 @@ function sendMcpMessage(type, payload, options = {}) {
16806
17053
  window.removeEventListener("message", handleMessage);
16807
17054
  const { response, error } = event.data.payload;
16808
17055
  if (error) return reject(error);
16809
- if (!schema) return resolve(response);
16810
- const parseResult = schema.safeParse(response);
17056
+ if (!schema2) return resolve(response);
17057
+ const parseResult = schema2.safeParse(response);
16811
17058
  if (!parseResult.success) return reject(parseResult.error);
16812
17059
  return resolve(parseResult.data);
16813
17060
  }
@@ -16983,7 +17230,7 @@ async function loader$8({
16983
17230
  }
16984
17231
  });
16985
17232
  } catch (error) {
16986
- return new Response(getErrorMessage(error), {
17233
+ return new Response(getErrorMessage$1(error), {
16987
17234
  status: 500,
16988
17235
  headers: {
16989
17236
  "Server-Timing": timings.toString()
@@ -17575,7 +17822,7 @@ async function action({
17575
17822
  try {
17576
17823
  await setPlayground(savedPlayground.fullPath);
17577
17824
  } catch (error) {
17578
- const message = getErrorMessage(error);
17825
+ const message = getErrorMessage$1(error);
17579
17826
  console.error("Error setting playground from saved copy", message);
17580
17827
  return dataWithPE(request, formData, {
17581
17828
  status: "error",
@@ -17633,7 +17880,7 @@ const route61 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
17633
17880
  __proto__: null,
17634
17881
  loader
17635
17882
  }, Symbol.toStringTag, { value: "Module" }));
17636
- const serverManifest = { "entry": { "module": "/assets/entry.client-DdbTov6T.js", "imports": ["/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/index-vDCSPjrM.js", "/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/preload-helper-BXl3LOEh.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/root-BwYDIUyI.js", "imports": ["/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/index-vDCSPjrM.js", "/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/misc-W4055b-0.js", "/assets/client-only-BeMV-Wuv.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/dialog-CzO65Z5w.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/index-DzdDahau.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/schemas-Uj5SZtvt.js", "/assets/index-CdzVFL-Z.js", "/assets/presence-VCvV2mg7.js", "/assets/seo-t5J-DRxw.js", "/assets/pe-CIZUOJMr.js", "/assets/index-ynYvVAOK.js", "/assets/root-loader-BOzEMapJ.js", "/assets/online-DiNLkgTC.js", "/assets/coerce-CkHW0SMv.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/_-C4AWl_1u.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/misc-W4055b-0.js", "/assets/index-CqIc3cxq.js", "/assets/preload-helper-BXl3LOEh.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/_layout": { "id": "routes/_app+/_layout", "parentId": "root", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_layout-C9vSX5Ti.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/misc-W4055b-0.js", "/assets/index-CqIc3cxq.js", "/assets/pe-CIZUOJMr.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/product-CvyMpYD_.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/status-indicator-C6DiLYL5.js", "/assets/dialog-CzO65Z5w.js", "/assets/index-CmflCPTU.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/online-DiNLkgTC.js", "/assets/presence-VCvV2mg7.js", "/assets/root-loader-BOzEMapJ.js", "/assets/progress-BcA4i0iU.js", "/assets/index-CdzVFL-Z.js", "/assets/schemas-Uj5SZtvt.js", "/assets/index-ynYvVAOK.js", "/assets/index-vDCSPjrM.js", "/assets/coerce-CkHW0SMv.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/account-C96cpeZR.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/button-Cd-ekki5.js", "/assets/misc-W4055b-0.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/index-CqIc3cxq.js", "/assets/root-loader-BOzEMapJ.js", "/assets/index-vDCSPjrM.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/discord-r3m19sUM.js", "imports": ["/assets/discord-BJkw0IrB.js", "/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/index-CqIc3cxq.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/misc-W4055b-0.js", "/assets/user-BsPobzjB.js", "/assets/root-loader-BOzEMapJ.js", "/assets/workshop-config-Zfc8zU0x.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_layout-BvtJxESE.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-jokuvO2V.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/epic-video-CC0372g5.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/launch-editor-D2exGfVu.js", "/assets/progress-BcA4i0iU.js", "/assets/mdx-vy-1-0a3.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/error-boundary-BDqWjIFP.js", "/assets/index-CqIc3cxq.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/index-CdzVFL-Z.js", "/assets/misc-W4055b-0.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/coerce-CkHW0SMv.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber/:type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/_layout-_Aw6qzZC.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/index-CqIc3cxq.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/nav-chevrons-Dk4GtZwQ.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/launch-editor-D2exGfVu.js", "/assets/progress-BcA4i0iU.js", "/assets/set-playground-BSGwH9dH.js", "/assets/misc-W4055b-0.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/split-layout-DnRER1bP.js", "/assets/error-boundary-BDqWjIFP.js", "/assets/epic-video-CC0372g5.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/mdx-vy-1-0a3.js", "/assets/index-CmflCPTU.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/schemas-Uj5SZtvt.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/pe-CIZUOJMr.js", "/assets/index-CJDOQ1bl.js", "/assets/index-vDCSPjrM.js", "/assets/index-ynYvVAOK.js", "/assets/button-Cd-ekki5.js", "/assets/dialog-CzO65Z5w.js", "/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/coerce-CkHW0SMv.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-CdzVFL-Z.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/app-CJniokic.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/preview-fhmjENlm.js", "/assets/misc-W4055b-0.js", "/assets/button-Cd-ekki5.js", "/assets/loading-CDNzW5oO.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/progress-bar-DpWhcyhC.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/index-Pxi8WjFA.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/playground-DmEAkxG1.js", "/assets/diff-Dng5ItOr.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/misc-W4055b-0.js", "/assets/preview-fhmjENlm.js", "/assets/tests-CZ2AhDKA.js", "/assets/index-CqIc3cxq.js", "/assets/loading-CDNzW5oO.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/discord-BJkw0IrB.js", "/assets/user-BsPobzjB.js", "/assets/online-DiNLkgTC.js", "/assets/index-CJDOQ1bl.js", "/assets/index-ynYvVAOK.js", "/assets/status-indicator-C6DiLYL5.js", "/assets/index-DzdDahau.js", "/assets/set-playground-BSGwH9dH.js", "/assets/button-Cd-ekki5.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/dialog-CzO65Z5w.js", "/assets/playground-window-x2mQ5o1O.js", "/assets/accordion-CQ7oujC6.js", "/assets/mdx-vy-1-0a3.js", "/assets/epic-video-CC0372g5.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/format-CZ5n8p10.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/launch-editor-D2exGfVu.js", "/assets/revalidation-ws-BJWJviUX.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/test-Ciw2aKZE.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/tests-CZ2AhDKA.js", "/assets/index-CqIc3cxq.js", "/assets/accordion-CQ7oujC6.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/misc-W4055b-0.js", "/assets/index-CJDOQ1bl.js", "/assets/index-ynYvVAOK.js", "/assets/epic-video-CC0372g5.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-CdzVFL-Z.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/playground-window-x2mQ5o1O.js", "/assets/set-playground-BSGwH9dH.js", "/assets/button-Cd-ekki5.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/dialog-CzO65Z5w.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber.index-BPqMtmN8.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/error-boundary-BDqWjIFP.js", "/assets/index-CqIc3cxq.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/misc-W4055b-0.js", "/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/schemas-Uj5SZtvt.js", "/assets/coerce-CkHW0SMv.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-BaC--Y5p.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/index-CqIc3cxq.js", "/assets/epic-video-CC0372g5.js", "/assets/misc-W4055b-0.js", "/assets/loading-CDNzW5oO.js", "/assets/nav-chevrons-Dk4GtZwQ.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/retrieval-practice-BOku32wW.js", "/assets/launch-editor-D2exGfVu.js", "/assets/progress-BcA4i0iU.js", "/assets/index-CdzVFL-Z.js", "/assets/mdx-vy-1-0a3.js", "/assets/online-DiNLkgTC.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/schemas-Uj5SZtvt.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/pe-CIZUOJMr.js", "/assets/preload-helper-BXl3LOEh.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/extra+/_layout": { "id": "routes/_app+/extra+/_layout", "parentId": "routes/_app+/_layout", "path": "extra", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_layout-jJ6TnDJF.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/extra+/$extra": { "id": "routes/_app+/extra+/$extra", "parentId": "routes/_app+/extra+/_layout", "path": ":extra", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/_extra-DXypL1sc.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/playground-DmEAkxG1.js", "/assets/index-CqIc3cxq.js", "/assets/diff-Dng5ItOr.js", "/assets/epic-video-CC0372g5.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/nav-chevrons-Dk4GtZwQ.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preview-fhmjENlm.js", "/assets/launch-editor-D2exGfVu.js", "/assets/set-playground-BSGwH9dH.js", "/assets/mdx-vy-1-0a3.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/split-layout-DnRER1bP.js", "/assets/misc-W4055b-0.js", "/assets/loading-CDNzW5oO.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/discord-BJkw0IrB.js", "/assets/user-BsPobzjB.js", "/assets/online-DiNLkgTC.js", "/assets/index-CJDOQ1bl.js", "/assets/index-ynYvVAOK.js", "/assets/status-indicator-C6DiLYL5.js", "/assets/index-DzdDahau.js", "/assets/playground-window-x2mQ5o1O.js", "/assets/accordion-CQ7oujC6.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/format-CZ5n8p10.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/button-Cd-ekki5.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/dialog-CzO65Z5w.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/extra+/index": { "id": "routes/_app+/extra+/index", "parentId": "routes/_app+/extra+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/index-CFM_ffAh.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/epic-video-CC0372g5.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/launch-editor-D2exGfVu.js", "/assets/mdx-vy-1-0a3.js", "/assets/misc-W4055b-0.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/index-CqIc3cxq.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/progress-bar-DpWhcyhC.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/finished-BbEk1NdF.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/index-CqIc3cxq.js", "/assets/epic-video-CC0372g5.js", "/assets/misc-W4055b-0.js", "/assets/loading-CDNzW5oO.js", "/assets/nav-chevrons-Dk4GtZwQ.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/mdx-vy-1-0a3.js", "/assets/online-DiNLkgTC.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/retrieval-practice-BOku32wW.js", "/assets/launch-editor-D2exGfVu.js", "/assets/progress-BcA4i0iU.js", "/assets/index-CdzVFL-Z.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/schemas-Uj5SZtvt.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/pe-CIZUOJMr.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/guide": { "id": "routes/_app+/guide", "parentId": "routes/_app+/_layout", "path": "guide", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/guide-Cinib8Ji.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/index": { "id": "routes/_app+/index", "parentId": "routes/_app+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/index-CfU0fdf7.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/epic-video-CC0372g5.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/launch-editor-D2exGfVu.js", "/assets/mdx-vy-1-0a3.js", "/assets/misc-W4055b-0.js", "/assets/progress-BcA4i0iU.js", "/assets/index-CqIc3cxq.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/progress-bar-DpWhcyhC.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/l": { "id": "routes/_app+/l", "parentId": "routes/_app+/_layout", "path": "l", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/l-BWU2-fsj.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/login": { "id": "routes/_app+/login", "parentId": "routes/_app+/_layout", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/login-mWjVXGbJ.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/button-Cd-ekki5.js", "/assets/loading-CDNzW5oO.js", "/assets/product-CvyMpYD_.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/schemas-Uj5SZtvt.js", "/assets/misc-W4055b-0.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/preferences": { "id": "routes/_app+/preferences", "parentId": "routes/_app+/_layout", "path": "preferences", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/preferences-B7ND1VS9.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/button-Cd-ekki5.js", "/assets/misc-W4055b-0.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/format-CZ5n8p10.js", "/assets/root-loader-BOzEMapJ.js", "/assets/index-CqIc3cxq.js", "/assets/index-vDCSPjrM.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/support": { "id": "routes/_app+/support", "parentId": "routes/_app+/_layout", "path": "support", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/support-D5mDQ-c-.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/workspace-structure": { "id": "routes/_app+/workspace-structure", "parentId": "routes/_app+/_layout", "path": "workspace-structure", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/workspace-structure-B6Rpl-B2.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/button-Cd-ekki5.js", "/assets/index-CqIc3cxq.js", "/assets/misc-W4055b-0.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_layout-CunOyAg4.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/root-loader-BOzEMapJ.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/cache-CAr50MIB.js", "imports": ["/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/client-only-BeMV-Wuv.js", "/assets/button-Cd-ekki5.js", "/assets/misc-W4055b-0.js", "/assets/launch-editor-D2exGfVu.js", "/assets/pe-CIZUOJMr.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/root-loader-BOzEMapJ.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/cache.$": { "id": "routes/admin+/cache.$", "parentId": "routes/admin+/cache", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/cache._-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/db": { "id": "routes/admin+/db", "parentId": "routes/admin+/_layout", "path": "db", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/db-DAnX-T3_.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/misc-W4055b-0.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/launch-editor-D2exGfVu.js", "/assets/index-CqIc3cxq.js", "/assets/index-vDCSPjrM.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/pe-CIZUOJMr.js", "/assets/root-loader-BOzEMapJ.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/index": { "id": "routes/admin+/index", "parentId": "routes/admin+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/index-DroM8fzS.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/misc-W4055b-0.js", "/assets/index-CqIc3cxq.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/progress-BcA4i0iU.js", "/assets/root-loader-BOzEMapJ.js", "/assets/index-vDCSPjrM.js", "/assets/pe-CIZUOJMr.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/notifications": { "id": "routes/admin+/notifications", "parentId": "routes/admin+/_layout", "path": "notifications", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/notifications-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/offline-videos": { "id": "routes/admin+/offline-videos", "parentId": "routes/admin+/_layout", "path": "offline-videos", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/offline-videos-DAsuWMco.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/format-CZ5n8p10.js", "/assets/misc-W4055b-0.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/version": { "id": "routes/admin+/version", "parentId": "routes/admin+/_layout", "path": "version", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/version-f8qqYbyU.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/index-CqIc3cxq.js", "/assets/root-loader-BOzEMapJ.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/version[.json]": { "id": "routes/admin+/version[.json]", "parentId": "routes/admin+/_layout", "path": "version.json", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/version_.json_-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/diff-DfWBhj2O.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/misc-W4055b-0.js", "/assets/diff-Dng5ItOr.js", "/assets/nav-chevrons-Dk4GtZwQ.js", "/assets/index-CqIc3cxq.js", "/assets/accordion-CQ7oujC6.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/index-CJDOQ1bl.js", "/assets/index-ynYvVAOK.js", "/assets/mdx-vy-1-0a3.js", "/assets/index-DzdDahau.js", "/assets/epic-video-CC0372g5.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-CdzVFL-Z.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/launch-editor-D2exGfVu.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/revalidation-ws-BJWJviUX.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/diff.$shortcut": { "id": "routes/diff.$shortcut", "parentId": "routes/diff", "path": ":shortcut", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/diff._shortcut-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/mark-onboarding-complete": { "id": "routes/mark-onboarding-complete", "parentId": "root", "path": "mark-onboarding-complete", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/mark-onboarding-complete-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/mcp-ui+/epic-video": { "id": "routes/mcp-ui+/epic-video", "parentId": "root", "path": "mcp-ui/epic-video", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/epic-video-C1_HSISA.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/epic-video-CC0372g5.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/index-CdzVFL-Z.js", "/assets/misc-W4055b-0.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/persist-playground": { "id": "routes/persist-playground", "parentId": "root", "path": "persist-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/persist-playground-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/resources+/healthcheck": { "id": "routes/resources+/healthcheck", "parentId": "root", "path": "resources/healthcheck", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/healthcheck-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/resources+/lookout": { "id": "routes/resources+/lookout", "parentId": "root", "path": "resources/lookout", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/lookout-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/resources+/offline-video-progress.$playbackId": { "id": "routes/resources+/offline-video-progress.$playbackId", "parentId": "root", "path": "resources/offline-video-progress/:playbackId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/offline-video-progress._playbackId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/resources+/offline-videos": { "id": "routes/resources+/offline-videos", "parentId": "root", "path": "resources/offline-videos", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/offline-videos-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/resources+/offline-videos.$playbackId": { "id": "routes/resources+/offline-videos.$playbackId", "parentId": "routes/resources+/offline-videos", "path": ":playbackId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/offline-videos._playbackId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/saved-playgrounds": { "id": "routes/saved-playgrounds", "parentId": "root", "path": "saved-playgrounds", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/saved-playgrounds-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-835c6db1.js", "version": "835c6db1", "sri": void 0 };
17883
+ const serverManifest = { "entry": { "module": "/assets/entry.client-DdbTov6T.js", "imports": ["/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/index-vDCSPjrM.js", "/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/preload-helper-BXl3LOEh.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/root-BwYDIUyI.js", "imports": ["/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/index-vDCSPjrM.js", "/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/misc-W4055b-0.js", "/assets/client-only-BeMV-Wuv.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/dialog-CzO65Z5w.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/index-DzdDahau.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/schemas-Uj5SZtvt.js", "/assets/index-CdzVFL-Z.js", "/assets/presence-VCvV2mg7.js", "/assets/seo-t5J-DRxw.js", "/assets/pe-CIZUOJMr.js", "/assets/index-ynYvVAOK.js", "/assets/root-loader-BOzEMapJ.js", "/assets/online-DiNLkgTC.js", "/assets/coerce-CkHW0SMv.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/_-C4AWl_1u.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/misc-W4055b-0.js", "/assets/index-CqIc3cxq.js", "/assets/preload-helper-BXl3LOEh.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/_layout": { "id": "routes/_app+/_layout", "parentId": "root", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_layout-BDFC2e7T.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/misc-W4055b-0.js", "/assets/index-CqIc3cxq.js", "/assets/pe-CIZUOJMr.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/product-CvyMpYD_.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/status-indicator-C6DiLYL5.js", "/assets/dialog-CzO65Z5w.js", "/assets/index-CmflCPTU.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/online-DiNLkgTC.js", "/assets/presence-VCvV2mg7.js", "/assets/root-loader-BOzEMapJ.js", "/assets/progress-Bby-ybMA.js", "/assets/index-CdzVFL-Z.js", "/assets/schemas-Uj5SZtvt.js", "/assets/index-ynYvVAOK.js", "/assets/index-vDCSPjrM.js", "/assets/coerce-CkHW0SMv.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/account-C96cpeZR.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/button-Cd-ekki5.js", "/assets/misc-W4055b-0.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/index-CqIc3cxq.js", "/assets/root-loader-BOzEMapJ.js", "/assets/index-vDCSPjrM.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/discord-r3m19sUM.js", "imports": ["/assets/discord-BJkw0IrB.js", "/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/index-CqIc3cxq.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/misc-W4055b-0.js", "/assets/user-BsPobzjB.js", "/assets/root-loader-BOzEMapJ.js", "/assets/workshop-config-Zfc8zU0x.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_layout-BvtJxESE.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-6IQJMb5M.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/epic-video-DzLohyvt.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/launch-editor-D2exGfVu.js", "/assets/progress-Bby-ybMA.js", "/assets/mdx-8X3W8bVO.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/error-boundary-BDqWjIFP.js", "/assets/index-CqIc3cxq.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/index-CdzVFL-Z.js", "/assets/misc-W4055b-0.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/coerce-CkHW0SMv.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber/:type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/_layout-CCCrBY2W.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/index-CqIc3cxq.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/nav-chevrons-Dk4GtZwQ.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/launch-editor-D2exGfVu.js", "/assets/progress-Bby-ybMA.js", "/assets/set-playground-BSGwH9dH.js", "/assets/misc-W4055b-0.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/split-layout-DnRER1bP.js", "/assets/error-boundary-BDqWjIFP.js", "/assets/epic-video-DzLohyvt.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/mdx-8X3W8bVO.js", "/assets/index-CmflCPTU.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/schemas-Uj5SZtvt.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/pe-CIZUOJMr.js", "/assets/index-CJDOQ1bl.js", "/assets/index-vDCSPjrM.js", "/assets/index-ynYvVAOK.js", "/assets/button-Cd-ekki5.js", "/assets/dialog-CzO65Z5w.js", "/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/coerce-CkHW0SMv.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-CdzVFL-Z.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/app-CJniokic.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/preview-fhmjENlm.js", "/assets/misc-W4055b-0.js", "/assets/button-Cd-ekki5.js", "/assets/loading-CDNzW5oO.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/progress-bar-DpWhcyhC.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/index-BNsKVnVt.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/playground-DmEAkxG1.js", "/assets/diff-4YyKvzHi.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/misc-W4055b-0.js", "/assets/preview-fhmjENlm.js", "/assets/tests-DlPVOsMT.js", "/assets/index-CqIc3cxq.js", "/assets/loading-CDNzW5oO.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/discord-BJkw0IrB.js", "/assets/user-BsPobzjB.js", "/assets/online-DiNLkgTC.js", "/assets/index-CJDOQ1bl.js", "/assets/index-ynYvVAOK.js", "/assets/status-indicator-C6DiLYL5.js", "/assets/index-DzdDahau.js", "/assets/set-playground-BSGwH9dH.js", "/assets/button-Cd-ekki5.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/dialog-CzO65Z5w.js", "/assets/playground-window-x2mQ5o1O.js", "/assets/accordion-CQ7oujC6.js", "/assets/mdx-8X3W8bVO.js", "/assets/epic-video-DzLohyvt.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/format-CZ5n8p10.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/launch-editor-D2exGfVu.js", "/assets/revalidation-ws-BJWJviUX.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/test-DXylXETz.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/tests-DlPVOsMT.js", "/assets/index-CqIc3cxq.js", "/assets/accordion-CQ7oujC6.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/misc-W4055b-0.js", "/assets/index-CJDOQ1bl.js", "/assets/index-ynYvVAOK.js", "/assets/epic-video-DzLohyvt.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-CdzVFL-Z.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/playground-window-x2mQ5o1O.js", "/assets/set-playground-BSGwH9dH.js", "/assets/button-Cd-ekki5.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/dialog-CzO65Z5w.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber.index-BPqMtmN8.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/error-boundary-BDqWjIFP.js", "/assets/index-CqIc3cxq.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/misc-W4055b-0.js", "/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/schemas-Uj5SZtvt.js", "/assets/coerce-CkHW0SMv.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-D9-WSUZy.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/index-CqIc3cxq.js", "/assets/epic-video-DzLohyvt.js", "/assets/misc-W4055b-0.js", "/assets/loading-CDNzW5oO.js", "/assets/nav-chevrons-Dk4GtZwQ.js", "/assets/retrieval-practice-BOku32wW.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/launch-editor-D2exGfVu.js", "/assets/progress-Bby-ybMA.js", "/assets/index-CdzVFL-Z.js", "/assets/mdx-8X3W8bVO.js", "/assets/online-DiNLkgTC.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/schemas-Uj5SZtvt.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/pe-CIZUOJMr.js", "/assets/preload-helper-BXl3LOEh.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/extra+/_layout": { "id": "routes/_app+/extra+/_layout", "parentId": "routes/_app+/_layout", "path": "extra", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_layout-jJ6TnDJF.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/extra+/$extra": { "id": "routes/_app+/extra+/$extra", "parentId": "routes/_app+/extra+/_layout", "path": ":extra", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/_extra-IT1EaIMp.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/playground-DmEAkxG1.js", "/assets/index-CqIc3cxq.js", "/assets/diff-4YyKvzHi.js", "/assets/epic-video-DzLohyvt.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/nav-chevrons-Dk4GtZwQ.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preview-fhmjENlm.js", "/assets/launch-editor-D2exGfVu.js", "/assets/set-playground-BSGwH9dH.js", "/assets/mdx-8X3W8bVO.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/split-layout-DnRER1bP.js", "/assets/misc-W4055b-0.js", "/assets/loading-CDNzW5oO.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/discord-BJkw0IrB.js", "/assets/user-BsPobzjB.js", "/assets/online-DiNLkgTC.js", "/assets/index-CJDOQ1bl.js", "/assets/index-ynYvVAOK.js", "/assets/status-indicator-C6DiLYL5.js", "/assets/index-DzdDahau.js", "/assets/playground-window-x2mQ5o1O.js", "/assets/accordion-CQ7oujC6.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/format-CZ5n8p10.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/button-Cd-ekki5.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/onboarding-indicator-B-XR90_G.js", "/assets/dialog-CzO65Z5w.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/extra+/index": { "id": "routes/_app+/extra+/index", "parentId": "routes/_app+/extra+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/index-BN0kldnY.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/epic-video-DzLohyvt.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/launch-editor-D2exGfVu.js", "/assets/mdx-8X3W8bVO.js", "/assets/misc-W4055b-0.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/index-CqIc3cxq.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/progress-bar-DpWhcyhC.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/finished-CzmzTZg6.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/index-CqIc3cxq.js", "/assets/epic-video-DzLohyvt.js", "/assets/misc-W4055b-0.js", "/assets/loading-CDNzW5oO.js", "/assets/nav-chevrons-Dk4GtZwQ.js", "/assets/retrieval-practice-BOku32wW.js", "/assets/revalidation-ws-BJWJviUX.js", "/assets/mdx-8X3W8bVO.js", "/assets/online-DiNLkgTC.js", "/assets/root-loader-BOzEMapJ.js", "/assets/seo-t5J-DRxw.js", "/assets/launch-editor-D2exGfVu.js", "/assets/progress-Bby-ybMA.js", "/assets/index-CdzVFL-Z.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/schemas-Uj5SZtvt.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/pe-CIZUOJMr.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/guide": { "id": "routes/_app+/guide", "parentId": "routes/_app+/_layout", "path": "guide", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/guide-Cinib8Ji.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/index": { "id": "routes/_app+/index", "parentId": "routes/_app+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/index-Cby_tLUO.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CEVyDj51.js", "/assets/epic-video-DzLohyvt.js", "/assets/error-boundary-DxHqAEHX.js", "/assets/launch-editor-D2exGfVu.js", "/assets/mdx-8X3W8bVO.js", "/assets/misc-W4055b-0.js", "/assets/progress-Bby-ybMA.js", "/assets/index-CqIc3cxq.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/progress-bar-DpWhcyhC.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/l": { "id": "routes/_app+/l", "parentId": "routes/_app+/_layout", "path": "l", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/l-BWU2-fsj.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/login": { "id": "routes/_app+/login", "parentId": "routes/_app+/_layout", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/login-mWjVXGbJ.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/button-Cd-ekki5.js", "/assets/loading-CDNzW5oO.js", "/assets/product-CvyMpYD_.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/schemas-Uj5SZtvt.js", "/assets/misc-W4055b-0.js", "/assets/index-CdzVFL-Z.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/preferences": { "id": "routes/_app+/preferences", "parentId": "routes/_app+/_layout", "path": "preferences", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/preferences-B7ND1VS9.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/button-Cd-ekki5.js", "/assets/misc-W4055b-0.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/format-CZ5n8p10.js", "/assets/root-loader-BOzEMapJ.js", "/assets/index-CqIc3cxq.js", "/assets/index-vDCSPjrM.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/support": { "id": "routes/_app+/support", "parentId": "routes/_app+/_layout", "path": "support", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/support-D5mDQ-c-.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/_app+/workspace-structure": { "id": "routes/_app+/workspace-structure", "parentId": "routes/_app+/_layout", "path": "workspace-structure", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/workspace-structure-B6Rpl-B2.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/button-Cd-ekki5.js", "/assets/index-CqIc3cxq.js", "/assets/misc-W4055b-0.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/_layout-CunOyAg4.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/root-loader-BOzEMapJ.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/cache-CAr50MIB.js", "imports": ["/assets/chunk-FNSCYPCZ-BHgC5cdx.js", "/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/client-only-BeMV-Wuv.js", "/assets/button-Cd-ekki5.js", "/assets/misc-W4055b-0.js", "/assets/launch-editor-D2exGfVu.js", "/assets/pe-CIZUOJMr.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/root-loader-BOzEMapJ.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/cache.$": { "id": "routes/admin+/cache.$", "parentId": "routes/admin+/cache", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/cache._-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/db": { "id": "routes/admin+/db", "parentId": "routes/admin+/_layout", "path": "db", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/db-DAnX-T3_.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/misc-W4055b-0.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/launch-editor-D2exGfVu.js", "/assets/index-CqIc3cxq.js", "/assets/index-vDCSPjrM.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/pe-CIZUOJMr.js", "/assets/root-loader-BOzEMapJ.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/index": { "id": "routes/admin+/index", "parentId": "routes/admin+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/index-Dpyv8N6m.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/misc-W4055b-0.js", "/assets/index-CqIc3cxq.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/progress-Bby-ybMA.js", "/assets/root-loader-BOzEMapJ.js", "/assets/index-vDCSPjrM.js", "/assets/pe-CIZUOJMr.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/notifications": { "id": "routes/admin+/notifications", "parentId": "routes/admin+/_layout", "path": "notifications", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/notifications-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/offline-videos": { "id": "routes/admin+/offline-videos", "parentId": "routes/admin+/_layout", "path": "offline-videos", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/offline-videos-DAsuWMco.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/format-CZ5n8p10.js", "/assets/misc-W4055b-0.js", "/assets/index-CqIc3cxq.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/version": { "id": "routes/admin+/version", "parentId": "routes/admin+/_layout", "path": "version", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/version-f8qqYbyU.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/index-CqIc3cxq.js", "/assets/root-loader-BOzEMapJ.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/admin+/version[.json]": { "id": "routes/admin+/version[.json]", "parentId": "routes/admin+/_layout", "path": "version.json", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/version_.json_-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/diff-8Er9eAl-.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/misc-W4055b-0.js", "/assets/diff-4YyKvzHi.js", "/assets/nav-chevrons-Dk4GtZwQ.js", "/assets/index-CqIc3cxq.js", "/assets/accordion-CQ7oujC6.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/index-vDCSPjrM.js", "/assets/index-CJDOQ1bl.js", "/assets/index-ynYvVAOK.js", "/assets/mdx-8X3W8bVO.js", "/assets/index-DzdDahau.js", "/assets/epic-video-DzLohyvt.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-CdzVFL-Z.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js", "/assets/preload-helper-BXl3LOEh.js", "/assets/launch-editor-D2exGfVu.js", "/assets/progress-bar-DpWhcyhC.js", "/assets/revalidation-ws-BJWJviUX.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/diff.$shortcut": { "id": "routes/diff.$shortcut", "parentId": "routes/diff", "path": ":shortcut", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/diff._shortcut-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/mark-onboarding-complete": { "id": "routes/mark-onboarding-complete", "parentId": "root", "path": "mark-onboarding-complete", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/mark-onboarding-complete-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/mcp-ui+/epic-video": { "id": "routes/mcp-ui+/epic-video", "parentId": "root", "path": "mcp-ui/epic-video", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/epic-video-BtFzbNqF.js", "imports": ["/assets/chunk-EPOLDU6W-BCLmut3y.js", "/assets/jsx-runtime-C5WNSv3b.js", "/assets/index-CqIc3cxq.js", "/assets/epic-video-DzLohyvt.js", "/assets/use-event-source-BuD4_2SF.js", "/assets/index-DzdDahau.js", "/assets/index-vDCSPjrM.js", "/assets/index-CdzVFL-Z.js", "/assets/misc-W4055b-0.js", "/assets/tooltip-Tlsyx2YO.js", "/assets/root-loader-BOzEMapJ.js", "/assets/pe-CIZUOJMr.js", "/assets/schemas-Uj5SZtvt.js", "/assets/online-DiNLkgTC.js", "/assets/loading-CDNzW5oO.js", "/assets/format-CZ5n8p10.js", "/assets/user-BsPobzjB.js", "/assets/workshop-config-Zfc8zU0x.js"], "css": ["/assets/epic-video-irT-uesJ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/persist-playground": { "id": "routes/persist-playground", "parentId": "root", "path": "persist-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/persist-playground-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/resources+/healthcheck": { "id": "routes/resources+/healthcheck", "parentId": "root", "path": "resources/healthcheck", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/healthcheck-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/resources+/lookout": { "id": "routes/resources+/lookout", "parentId": "root", "path": "resources/lookout", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/lookout-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/resources+/offline-video-progress.$playbackId": { "id": "routes/resources+/offline-video-progress.$playbackId", "parentId": "root", "path": "resources/offline-video-progress/:playbackId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/offline-video-progress._playbackId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/resources+/offline-videos": { "id": "routes/resources+/offline-videos", "parentId": "root", "path": "resources/offline-videos", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/offline-videos-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/resources+/offline-videos.$playbackId": { "id": "routes/resources+/offline-videos.$playbackId", "parentId": "routes/resources+/offline-videos", "path": ":playbackId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/offline-videos._playbackId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/saved-playgrounds": { "id": "routes/saved-playgrounds", "parentId": "root", "path": "saved-playgrounds", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/saved-playgrounds-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-65ac4702.js", "version": "65ac4702", "sri": void 0 };
17637
17884
  const assetsBuildDirectory = "build/client";
17638
17885
  const basename = "/";
17639
17886
  const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };