hyperframes 0.8.176 → 0.8.178

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 (175) hide show
  1. package/bin/hyperframes.mjs +3 -0
  2. package/dist/{add-YZGUHLDP.js → add-C4GN5ZDP.js} +12 -12
  3. package/dist/{animatedGifPrep-6SPYXSHE.js → animatedGifPrep-S6XXOOXK.js} +7 -7
  4. package/dist/api.d.ts +2 -0
  5. package/dist/api.js +15 -15
  6. package/dist/{asset-YPC34MTV.js → asset-WTZ44Q7G.js} +2 -2
  7. package/dist/{assetCataloger-5GGNQC3Y.js → assetCataloger-MSAMR77T.js} +7 -7
  8. package/dist/{audio-33JHU37L.js → audio-ZSWOKO3D.js} +14 -14
  9. package/dist/{auth-UUIHOS2D.js → auth-EUSWPXME.js} +1 -1
  10. package/dist/{autoUpdate-F747BE3R.js → autoUpdate-WWXRJ2W7.js} +2 -2
  11. package/dist/{backgroundChecks-3YLO2CSC.js → backgroundChecks-B2IJHAP6.js} +3 -3
  12. package/dist/backgroundChecksWorker.js +3 -3
  13. package/dist/{batchRender-KXXTVNPB.js → batchRender-OOQYGH5A.js} +4 -4
  14. package/dist/{beats-DQDV2ZFS.js → beats-OJT75KQY.js} +5 -5
  15. package/dist/{benchmark-ZPPZEIHZ.js → benchmark-EZTB4ITW.js} +9 -9
  16. package/dist/{browser-ZFLEP3E6.js → browser-DNHBS5C7.js} +9 -8
  17. package/dist/{bundleWithLocalizedFonts-PMRGOQWD.js → bundleWithLocalizedFonts-GJAML42J.js} +2 -2
  18. package/dist/{capture-6XCCIPT4.js → capture-YRS6SZ6B.js} +11 -11
  19. package/dist/{capture-5OW6VNXU.js → capture-ZBGAJYVH.js} +2 -2
  20. package/dist/captureCompositionFrame-Z33NWUED.js +88 -0
  21. package/dist/{catalog-3A6KKCWF.js → catalog-YF23PXV2.js} +25 -17
  22. package/dist/{catch-up-KPGCLN4C.js → catch-up-YZZDUDRQ.js} +5 -5
  23. package/dist/{check-I3XLXS77.js → check-NVGQ5PMF.js} +60 -49
  24. package/dist/{checkBrowser-KX7LNAFA.js → checkBrowser-JX22QQDH.js} +79 -59
  25. package/dist/{chunk-42T7OP4O.js → chunk-32GKQ73S.js} +1 -1
  26. package/dist/{chunk-3Q4Y33FT.js → chunk-3EJYUZHW.js} +20 -18
  27. package/dist/{chunk-L6XT6GSV.js → chunk-52L2L46Q.js} +1 -1
  28. package/dist/chunk-537IYAEE.js +80 -0
  29. package/dist/{chunk-USEUH5VV.js → chunk-5PK3RLSB.js} +2 -2
  30. package/dist/{chunk-GVIH4ZQY.js → chunk-5RS2FIZU.js} +1 -1
  31. package/dist/{chunk-VER46LXI.js → chunk-62OXHKLS.js} +2 -2
  32. package/dist/{chunk-T76PLPD6.js → chunk-634HSJ3J.js} +2 -1
  33. package/dist/{chunk-HVMHVW5G.js → chunk-74Z2T3YM.js} +1 -1
  34. package/dist/{chunk-5TGVURKQ.js → chunk-7IAVKLNC.js} +1 -1
  35. package/dist/{chunk-L3LJVYXS.js → chunk-A2BB2XQU.js} +2 -2
  36. package/dist/{chunk-DQY6WTF7.js → chunk-A3RUVTGB.js} +1 -1
  37. package/dist/{chunk-OYEDHVSI.js → chunk-AFKVI7FJ.js} +1 -1
  38. package/dist/{chunk-VEQ7DKPG.js → chunk-AHS5QYKF.js} +1 -1
  39. package/dist/{chunk-FFDC5OWV.js → chunk-ALVXFXUG.js} +5 -3
  40. package/dist/{chunk-OMUKSCWE.js → chunk-AR5MS234.js} +13 -13
  41. package/dist/{chunk-R2TVJ4DW.js → chunk-AYEWZYYC.js} +1 -1
  42. package/dist/{chunk-TNDNFZOK.js → chunk-BGKZ37BC.js} +2 -2
  43. package/dist/{chunk-LY2GLSOS.js → chunk-BJJ3QF7T.js} +1 -1
  44. package/dist/{chunk-5EA4C6RA.js → chunk-BNGRVR3Y.js} +6 -6
  45. package/dist/{chunk-EEVCXPUA.js → chunk-C4FH67KI.js} +2 -2
  46. package/dist/{chunk-MG66UO4N.js → chunk-CJRGV2JW.js} +1 -1
  47. package/dist/{chunk-7LU4ZHYV.js → chunk-DKGZR7QA.js} +1 -1
  48. package/dist/{chunk-XRKMITSS.js → chunk-E24HSMZV.js} +12 -51
  49. package/dist/{chunk-44XBAKKT.js → chunk-EBKIF46T.js} +2 -2
  50. package/dist/{chunk-RBOVQRMR.js → chunk-EINNFZAW.js} +7 -13
  51. package/dist/{chunk-EOOEC32M.js → chunk-EVMY7IPL.js} +22 -0
  52. package/dist/{chunk-PL4WM5XE.js → chunk-FIAQ4J45.js} +2 -2
  53. package/dist/{chunk-J53AJK3Q.js → chunk-FTWOVWHR.js} +2 -2
  54. package/dist/{chunk-X6ZRZWPZ.js → chunk-G3M4BIFN.js} +1 -1
  55. package/dist/{chunk-VDUTZXIJ.js → chunk-HFUMZZ4T.js} +5 -5
  56. package/dist/{chunk-MDTMWUJI.js → chunk-HNMRB77F.js} +1 -1
  57. package/dist/{chunk-GMJ3ILLW.js → chunk-ICMXC3MI.js} +7 -24
  58. package/dist/{chunk-LZT3NUTE.js → chunk-IE6O2VXV.js} +1 -1
  59. package/dist/{chunk-HTC3VGU3.js → chunk-J4GE3BCG.js} +29 -10
  60. package/dist/{chunk-X4PK5ZXP.js → chunk-LO4DHZLH.js} +3 -3
  61. package/dist/{chunk-NGRNAF5X.js → chunk-N66NVE65.js} +1 -1
  62. package/dist/{chunk-7XX4QGQV.js → chunk-N6S6V2DY.js} +52 -16
  63. package/dist/{chunk-LEILKM2N.js → chunk-O7PFPCQF.js} +193 -65
  64. package/dist/{chunk-KUOUUG33.js → chunk-ORM7SJ7K.js} +85 -43
  65. package/dist/chunk-PLNQW2C6.js +3805 -0
  66. package/dist/{chunk-JNL3RMDG.js → chunk-PU33GPG4.js} +1 -1
  67. package/dist/{chunk-W47D3KOB.js → chunk-RHWJKSGH.js} +1 -1
  68. package/dist/{chunk-B7DJQFAC.js → chunk-RTABHL2G.js} +3 -3
  69. package/dist/{chunk-K535ASAM.js → chunk-TINAVSGR.js} +1 -1
  70. package/dist/{chunk-C6TPGUWD.js → chunk-TTVHYD5R.js} +2 -2
  71. package/dist/{chunk-GOOB64LO.js → chunk-U2AIXPAQ.js} +2 -2
  72. package/dist/{chunk-BVXZYFAL.js → chunk-UIXHQ4QG.js} +7 -7
  73. package/dist/{chunk-QWCXGTOH.js → chunk-UOHQV6AV.js} +24 -12
  74. package/dist/{chunk-SURF34CK.js → chunk-UQEBSY5U.js} +1 -1
  75. package/dist/{chunk-5ZSLJXQX.js → chunk-UWPUEI5U.js} +2 -2
  76. package/dist/{chunk-BTCHRQNV.js → chunk-V6WIQWUB.js} +3 -3
  77. package/dist/{chunk-OUMYTLPP.js → chunk-VCDWVVDV.js} +11 -7
  78. package/dist/{chunk-YWSXFFO3.js → chunk-VU4JLRNH.js} +156 -76
  79. package/dist/{chunk-MLRCTTSD.js → chunk-XBZOYP4D.js} +96 -11
  80. package/dist/{chunk-X6HYBA4A.js → chunk-XSQWXUK2.js} +1 -1
  81. package/dist/{chunk-SSE6NWZI.js → chunk-Y6JLEN3P.js} +14 -14
  82. package/dist/{chunk-KRKSY2AE.js → chunk-YAPJOCSH.js} +1 -1
  83. package/dist/{chunk-NWEER3QY.js → chunk-YH7VQAKX.js} +2 -2
  84. package/dist/{chunk-DZMWNCHM.js → chunk-ZAJO3YCQ.js} +2 -2
  85. package/dist/{chunk-T6NA6TR3.js → chunk-ZAO7FTQM.js} +2 -2
  86. package/dist/{clean-6REGQY3I.js → clean-ODNP4ELD.js} +23 -23
  87. package/dist/cli.js +53 -53
  88. package/dist/{cloud-RAQZPMNP.js → cloud-2DACBBEP.js} +4 -4
  89. package/dist/{cloudrun-P35BPQCO.js → cloudrun-QSVGI2TT.js} +5 -5
  90. package/dist/commands/contrast-audit.browser.js +166 -22
  91. package/dist/{compare-XYFSHHMQ.js → compare-HMMGOM4F.js} +34 -34
  92. package/dist/{compiler-5TFPJPQQ.js → compiler-CQ6OKYT5.js} +2 -2
  93. package/dist/{component-CRAO6Q2E.js → component-C6OLXSIK.js} +3 -3
  94. package/dist/{compositions-4SHILZZX.js → compositions-MOGZ4ASK.js} +11 -11
  95. package/dist/{delete-ZS4AHMTY.js → delete-MDAYHORQ.js} +2 -2
  96. package/dist/{dist-U2HCECNB.js → dist-MHJYD5IZ.js} +6 -4
  97. package/dist/{doctor-OL4FYABY.js → doctor-VEKKYMQT.js} +12 -12
  98. package/dist/{events-Z3XZCRFZ.js → events-CSKJXRJU.js} +4 -4
  99. package/dist/{events-LIJBGTTX.js → events-SKMTX6HF.js} +2 -2
  100. package/dist/{feedback-OE6SB2VE.js → feedback-64AKUFHZ.js} +7 -7
  101. package/dist/{ffmpeg-CSJLJAQ3.js → ffmpeg-64E4VH6W.js} +7 -7
  102. package/dist/{figma-DMUCMO67.js → figma-YEY76ZPG.js} +3 -3
  103. package/dist/fontLocalizeCli.js +10 -10
  104. package/dist/{get-NQOQVUI5.js → get-YJS76PGZ.js} +2 -2
  105. package/dist/{gpuPolicy-C6JWEX7F.js → gpuPolicy-IGZOHHMX.js} +7 -7
  106. package/dist/{grade-compare-HLTHHQGH.js → grade-compare-35UEA52Z.js} +35 -35
  107. package/dist/{help-ZAXWHAYF.js → help-I5TCDUVH.js} +1 -1
  108. package/dist/{history-CMY7ZEEW.js → history-7BKIWSP2.js} +11 -11
  109. package/dist/hyperframe-runtime.js +57 -55
  110. package/dist/hyperframe.manifest.json +1 -1
  111. package/dist/hyperframe.runtime.iife.js +57 -55
  112. package/dist/hyperframes-player.global.js +1 -1
  113. package/dist/{info-STR7EYI3.js → info-UEPOM2LV.js} +8 -8
  114. package/dist/{init-YSMKK5VG.js → init-HIB66K2S.js} +27 -27
  115. package/dist/{inspect-QV6DC6GO.js → inspect-634XIKDS.js} +33 -33
  116. package/dist/{installer-NY5E5HCO.js → installer-ADKWK4I4.js} +5 -5
  117. package/dist/{keyframes-HN3DW5FG.js → keyframes-7BJX3EVE.js} +7 -7
  118. package/dist/{lambda-PG3JKNWS.js → lambda-Q4TRSMHZ.js} +8 -8
  119. package/dist/{layout-O4QAR2XY.js → layout-6DUVSHEB.js} +33 -33
  120. package/dist/{lint-AY55R4UR.js → lint-UPFD4JQZ.js} +7 -7
  121. package/dist/{list-TH2KCVNN.js → list-M6OMQXJX.js} +2 -2
  122. package/dist/{login-TRCMRV4B.js → login-QH6JDXDP.js} +4 -4
  123. package/dist/{manager-2J4XGDZ3.js → manager-B4MSVFMK.js} +12 -10
  124. package/dist/{manager-HEUPD2YB.js → manager-V2QCCPOJ.js} +4 -3
  125. package/dist/{media-treatment-ET5QQSWP.js → media-treatment-SHFTIG4K.js} +14 -14
  126. package/dist/{models-RFUUSCG6.js → models-USEFHJFY.js} +11 -11
  127. package/dist/{motionShot-2ET565ZV.js → motionShot-HRM6NMT4.js} +15 -15
  128. package/dist/{normalize-audio-LUOJSD3W.js → normalize-audio-EP3HPQZB.js} +9 -9
  129. package/dist/{open-MVEOYQRQ.js → open-HXZEXQ4X.js} +12 -12
  130. package/dist/{parakeetRunner-3TG7EHWA.js → parakeetRunner-D5RSHQB2.js} +12 -12
  131. package/dist/{pipeline-JWGTH2BJ.js → pipeline-BDG52SPL.js} +8 -8
  132. package/dist/{play-I3WJPYXK.js → play-LSRQ6R66.js} +24 -24
  133. package/dist/{preflight-4WTT4D5X.js → preflight-GBPRLIM6.js} +9 -9
  134. package/dist/{present-DUZBKUYH.js → present-2VKAE63Q.js} +19 -19
  135. package/dist/{preview-7J5TBTRP.js → preview-MWH5CHTN.js} +18 -18
  136. package/dist/{producer-UZZQX6IJ.js → producer-W24FRIN7.js} +1 -1
  137. package/dist/{projectConfig-HDALEM6S.js → projectConfig-NQQDEDAK.js} +7 -7
  138. package/dist/{publication-NX4VC7UU.js → publication-7DW4IJPC.js} +3 -3
  139. package/dist/{publish-AZRRQUXM.js → publish-FJKJ74IF.js} +10 -10
  140. package/dist/{remove-background-OX5WZTXY.js → remove-background-JBOJAUIM.js} +9 -9
  141. package/dist/{render-HGT3EGIK.js → render-5TTZDI5N.js} +7 -14
  142. package/dist/{render-IYTGM6DE.js → render-BROS2AIU.js} +9 -9
  143. package/dist/{render-JUS2ROIN.js → render-JCYFNDWT.js} +42 -42
  144. package/dist/{render-batch-MUCDZ2WF.js → render-batch-FW56ZFGW.js} +8 -17
  145. package/dist/renderSetupWorker.js +2 -2
  146. package/dist/{resolver-FLQ42X2Y.js → resolver-UW6NYBJA.js} +5 -5
  147. package/dist/{sherpa-PRI3JLUP.js → sherpa-GWYCXYEP.js} +11 -11
  148. package/dist/skills/media-use/references/operations.md +3 -1
  149. package/dist/{skills-CZ6VW5SZ.js → skills-YNM5SIHQ.js} +6 -6
  150. package/dist/{skillsUpdateCheck-K4UKUAOC.js → skillsUpdateCheck-FNC6VALY.js} +3 -3
  151. package/dist/{snapshot-MPE4GIMJ.js → snapshot-6EMEL4O3.js} +44 -44
  152. package/dist/{src-SGPA7DM7.js → src-VUIKXEFU.js} +9 -9
  153. package/dist/{src-JGPFLYBL.js → src-XRFOS5LP.js} +6 -6
  154. package/dist/{staticProjectServer-DG4VZO4G.js → staticProjectServer-COEAKTGH.js} +17 -17
  155. package/dist/studio/assets/{hyperframes-player-DBHpVw8L.js → hyperframes-player-Dfw61RJK.js} +1 -1
  156. package/dist/studio/assets/{index-BkDF4Z-5.js → index-Bi6yVTq9.js} +118 -117
  157. package/dist/studio/assets/{index-DHRXpmtI.js → index-eTRj5rY2.js} +1 -1
  158. package/dist/studio/index.html +1 -1
  159. package/dist/{studio-api-RGNBVLLL.js → studio-api-455XWQPD.js} +12 -12
  160. package/dist/{studioServer-FWACRD3Y.js → studioServer-ZP2LJT7H.js} +57 -72
  161. package/dist/{telemetry-CHJA5JFQ.js → telemetry-HJQ7IO6R.js} +4 -4
  162. package/dist/{timeline-TZDMQBSM.js → timeline-CYW3YKMX.js} +23 -23
  163. package/dist/{tokens-B5KI7FBA.js → tokens-VOARLAAH.js} +2 -2
  164. package/dist/{transcribe-M7NO6XBP.js → transcribe-F6UOG57Z.js} +12 -12
  165. package/dist/{transcribe-VHUDXZET.js → transcribe-FJGNOR6R.js} +17 -16
  166. package/dist/{updateCheck-NMD6AFFG.js → updateCheck-IOLCO3XV.js} +2 -2
  167. package/dist/{upgrade-WGFMGJ5O.js → upgrade-BVW67SB7.js} +2 -2
  168. package/dist/{urlDownloader-FZ5ISJES.js → urlDownloader-QF7EBQC2.js} +6 -6
  169. package/dist/{validate-NM3GLUWX.js → validate-3NHIT4VT.js} +25 -25
  170. package/dist/{video-7CDAIWYC.js → video-2KGC3RIQ.js} +7 -7
  171. package/package.json +1 -2
  172. package/dist/chunk-EEXE43II.js +0 -3805
  173. package/dist/chunk-TWWSYAKJ.js +0 -24
  174. package/dist/{deploy-NKWMPAMH.js → deploy-3TTQZGTF.js} +4 -4
  175. package/dist/{destroy-UKP522AE.js → destroy-BEL232I5.js} +3 -3
@@ -6,18 +6,20 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  stoppedByCancelSignal
9
- } from "./chunk-X6HYBA4A.js";
9
+ } from "./chunk-XSQWXUK2.js";
10
10
  import {
11
11
  DEFAULT_MODEL,
12
12
  ensureModel,
13
13
  ensureWhisper,
14
- hasFFmpeg
15
- } from "./chunk-MLRCTTSD.js";
14
+ hasFFmpeg,
15
+ pinnedWhisperModel,
16
+ sha256File
17
+ } from "./chunk-XBZOYP4D.js";
16
18
  import {
17
19
  findFFmpeg,
18
20
  findFFprobe,
19
21
  getFFmpegInstallHint
20
- } from "./chunk-GVIH4ZQY.js";
22
+ } from "./chunk-5RS2FIZU.js";
21
23
  import {
22
24
  findWavChunk
23
25
  } from "./chunk-UOFAE5RF.js";
@@ -34,7 +36,7 @@ import { once } from "events";
34
36
  import { createInterface } from "readline";
35
37
  import { existsSync, readFileSync, mkdirSync, rmSync, statSync, unlinkSync } from "fs";
36
38
  import { basename, join, extname } from "path";
37
- import { tmpdir } from "os";
39
+ import { homedir, tmpdir } from "os";
38
40
  import { randomUUID } from "crypto";
39
41
 
40
42
  // src/whisper/modelForLanguage.ts
@@ -302,9 +304,6 @@ async function prepareAudio(audioPath, signal) {
302
304
  );
303
305
  return wavPath;
304
306
  }
305
- function dtwPresetForModel(model) {
306
- return model.replace(/-/g, ".");
307
- }
308
307
  async function prepareWav(inputPath, onProgress, signal) {
309
308
  if (isAudioFile(inputPath)) {
310
309
  onProgress?.("Preparing audio...");
@@ -366,8 +365,6 @@ async function transcribe(inputPath, outputDir, options) {
366
365
  "--output-json-full",
367
366
  "--output-file",
368
367
  outputBase,
369
- "--dtw",
370
- dtwPresetForModel(model),
371
368
  "--suppress-nst"
372
369
  ];
373
370
  whisperArgs.push("--language", language);
@@ -398,11 +395,14 @@ async function transcribe(inputPath, outputDir, options) {
398
395
  } : void 0
399
396
  });
400
397
  } catch (err) {
401
- throw wrapWhisperTimeoutError(err, {
402
- effectiveTimeoutMs: whisperTimeoutMs,
403
- model,
404
- wasOverride: options?.timeoutMs != null
405
- });
398
+ if (isWhisperTimeoutError(err) || stoppedByCancelSignal(err)) {
399
+ throw wrapWhisperTimeoutError(err, {
400
+ effectiveTimeoutMs: whisperTimeoutMs,
401
+ model,
402
+ wasOverride: options?.timeoutMs != null
403
+ });
404
+ }
405
+ throw await diagnoseWhisperFailure(err, whisper, modelPath, model);
406
406
  }
407
407
  const transcriptPath = `${outputBase}.json`;
408
408
  if (!existsSync(transcriptPath)) {
@@ -478,6 +478,42 @@ async function runWhisper(executable, args, options) {
478
478
  const read = (stream, onLine) => stream && onLine ? once(createInterface({ input: stream }).on("line", onLine), "close") : null;
479
479
  await Promise.all([exited, read(stdout, options.onStdout), read(stderr, options.onStderr)]);
480
480
  }
481
+ function withoutPaths(text) {
482
+ return text.split(homedir()).join("~").replace(/(?<=^|[\s'"(=:[])(?:~|[A-Za-z]:)?[\\/](?:[^\s'"`\\/]+[\\/])*([^\s'"`\\/]+)/g, "$1");
483
+ }
484
+ function whisperVersion(executable) {
485
+ try {
486
+ const said = execFileSync(executable, ["--version"], {
487
+ encoding: "utf-8",
488
+ stdio: ["ignore", "pipe", "pipe"],
489
+ timeout: 5e3
490
+ });
491
+ return /version:?\s*(\S+)/i.exec(said)?.[1] ?? "unknown version";
492
+ } catch {
493
+ return "unknown version";
494
+ }
495
+ }
496
+ async function describeModel(modelPath, model) {
497
+ const bytes = statSync(modelPath, { throwIfNoEntry: false })?.size;
498
+ if (bytes === void 0) return `model ${model}: file missing`;
499
+ const sha256 = await sha256File(modelPath).catch(() => "unreadable");
500
+ const pin = pinnedWhisperModel(model);
501
+ const verdict = !pin ? "not a pinned model" : pin.bytes === bytes && pin.sha256 === sha256 ? "matches the pinned file" : `damaged: expected ${pin.bytes} bytes, sha256 ${pin.sha256.slice(0, 12)}; delete it and re-run`;
502
+ return `model ${model}: ${bytes} bytes, sha256 ${sha256.slice(0, 12)} (${verdict})`;
503
+ }
504
+ async function diagnoseWhisperFailure(err, whisper, modelPath, model) {
505
+ const failed = err;
506
+ const how = failed.signal ? `crashed (${failed.signal})` : typeof failed.code === "number" ? `exited with code ${failed.code}` : `failed: ${withoutPaths(err instanceof Error ? err.message : String(err))}`;
507
+ const said = withoutPaths(String(failed.stderr ?? "")).trim().split("\n").slice(-12).join("\n");
508
+ const lines = [
509
+ `whisper-cli ${how}.`,
510
+ `whisper-cli ${whisperVersion(whisper.executablePath)} (${whisper.source}: ${basename(whisper.executablePath)})`,
511
+ await describeModel(modelPath, model),
512
+ said ? `whisper-cli said:
513
+ ${said}` : "whisper-cli printed nothing."
514
+ ];
515
+ return new Error(lines.join("\n"), { cause: err });
516
+ }
481
517
  function isWhisperTimeoutError(err) {
482
518
  return err instanceof Error && err.code === "ETIMEDOUT";
483
519
  }
@@ -504,9 +540,9 @@ export {
504
540
  getPreparedWavDurationSeconds,
505
541
  detectSpeechOnset,
506
542
  isPcm16kMono,
507
- dtwPresetForModel,
508
543
  prepareWav,
509
544
  transcribe,
545
+ withoutPaths,
510
546
  isWhisperTimeoutError,
511
547
  wrapWhisperTimeoutError
512
548
  };