@syncfusion/ej2-office-common 35.1.37

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 (147) hide show
  1. package/.eslintrc.json +263 -0
  2. package/.prettierrc.json +5 -0
  3. package/README.md +167 -0
  4. package/api-extractor.json +35 -0
  5. package/core.js +4 -0
  6. package/dist/ej2-office-common.umd.min.js +11 -0
  7. package/dist/ej2-office-common.umd.min.js.map +1 -0
  8. package/dist/es6/ej2-office-common.es2015.js +6585 -0
  9. package/dist/es6/ej2-office-common.es2015.js.map +1 -0
  10. package/dist/es6/ej2-office-common.es5.js +7955 -0
  11. package/dist/es6/ej2-office-common.es5.js.map +1 -0
  12. package/dist/global/ej2-office-common.min.js +11 -0
  13. package/dist/global/ej2-office-common.min.js.map +1 -0
  14. package/dist/global/index.d.ts +14 -0
  15. package/encryption.js +4 -0
  16. package/features.js +4 -0
  17. package/global.json +6 -0
  18. package/index.js +4 -0
  19. package/license +10 -0
  20. package/nuget.config +7 -0
  21. package/package.json +23 -0
  22. package/src/all.d.ts +41 -0
  23. package/src/all.js +38 -0
  24. package/src/core/index.d.ts +6 -0
  25. package/src/core/index.js +6 -0
  26. package/src/core/xml/index.d.ts +7 -0
  27. package/src/core/xml/index.js +6 -0
  28. package/src/core/xml/model.d.ts +71 -0
  29. package/src/core/xml/model.js +20 -0
  30. package/src/encryption/agile-constants.d.ts +61 -0
  31. package/src/encryption/agile-constants.js +71 -0
  32. package/src/encryption/agile-encryption-info.d.ts +46 -0
  33. package/src/encryption/agile-encryption-info.js +333 -0
  34. package/src/encryption/agile-password.d.ts +8 -0
  35. package/src/encryption/agile-password.js +58 -0
  36. package/src/encryption/cfb-reader.d.ts +11 -0
  37. package/src/encryption/cfb-reader.js +345 -0
  38. package/src/encryption/crypto-primitives.d.ts +74 -0
  39. package/src/encryption/crypto-primitives.js +302 -0
  40. package/src/encryption/decrypt-encrypted-package.d.ts +16 -0
  41. package/src/encryption/decrypt-encrypted-package.js +138 -0
  42. package/src/encryption/encryption-info-xml.d.ts +21 -0
  43. package/src/encryption/encryption-info-xml.js +282 -0
  44. package/src/encryption/errors.d.ts +66 -0
  45. package/src/encryption/errors.js +124 -0
  46. package/src/encryption/index.d.ts +35 -0
  47. package/src/encryption/index.js +100 -0
  48. package/src/features/diagrams/constants.d.ts +83 -0
  49. package/src/features/diagrams/constants.js +101 -0
  50. package/src/features/diagrams/diagram-data-model.d.ts +148 -0
  51. package/src/features/diagrams/diagram-data-model.js +446 -0
  52. package/src/features/diagrams/diagram-parsers.d.ts +28 -0
  53. package/src/features/diagrams/diagram-parsers.js +182 -0
  54. package/src/features/diagrams/diagram-serializers.d.ts +20 -0
  55. package/src/features/diagrams/diagram-serializers.js +110 -0
  56. package/src/features/diagrams/diagram-views.d.ts +60 -0
  57. package/src/features/diagrams/diagram-views.js +213 -0
  58. package/src/features/diagrams/element-tree.d.ts +55 -0
  59. package/src/features/diagrams/element-tree.js +197 -0
  60. package/src/features/diagrams/errors.d.ts +17 -0
  61. package/src/features/diagrams/errors.js +59 -0
  62. package/src/features/diagrams/index.d.ts +17 -0
  63. package/src/features/diagrams/index.js +17 -0
  64. package/src/features/diagrams/smart-art-catalog.d.ts +107 -0
  65. package/src/features/diagrams/smart-art-catalog.js +422 -0
  66. package/src/features/diagrams/smart-art-diagram.d.ts +96 -0
  67. package/src/features/diagrams/smart-art-diagram.js +258 -0
  68. package/src/features/index.d.ts +11 -0
  69. package/src/features/index.js +11 -0
  70. package/src/features/ink/constants.d.ts +54 -0
  71. package/src/features/ink/constants.js +54 -0
  72. package/src/features/ink/index.d.ts +18 -0
  73. package/src/features/ink/index.js +15 -0
  74. package/src/features/ink/ink-effects.d.ts +35 -0
  75. package/src/features/ink/ink-effects.js +45 -0
  76. package/src/features/ink/ink-model.d.ts +237 -0
  77. package/src/features/ink/ink-model.js +406 -0
  78. package/src/features/ink/ink-parser.d.ts +59 -0
  79. package/src/features/ink/ink-parser.js +671 -0
  80. package/src/features/ink/ink-serializer.d.ts +16 -0
  81. package/src/features/ink/ink-serializer.js +281 -0
  82. package/src/features/ink/ink-units.d.ts +33 -0
  83. package/src/features/ink/ink-units.js +92 -0
  84. package/src/features/ink/ink-xml.d.ts +26 -0
  85. package/src/features/ink/ink-xml.js +165 -0
  86. package/src/features/ink/trace-codec.d.ts +127 -0
  87. package/src/features/ink/trace-codec.js +266 -0
  88. package/src/features/mathml/constants.d.ts +47 -0
  89. package/src/features/mathml/constants.js +47 -0
  90. package/src/features/mathml/errors.d.ts +50 -0
  91. package/src/features/mathml/errors.js +69 -0
  92. package/src/features/mathml/index.d.ts +30 -0
  93. package/src/features/mathml/index.js +22 -0
  94. package/src/features/mathml/math-factory.d.ts +26 -0
  95. package/src/features/mathml/math-factory.js +568 -0
  96. package/src/features/mathml/model/controls.d.ts +896 -0
  97. package/src/features/mathml/model/controls.js +1541 -0
  98. package/src/features/mathml/model/enums.d.ts +153 -0
  99. package/src/features/mathml/model/enums.js +133 -0
  100. package/src/features/mathml/model/math-element.d.ts +173 -0
  101. package/src/features/mathml/model/math-element.js +315 -0
  102. package/src/features/mathml/model/roots.d.ts +82 -0
  103. package/src/features/mathml/model/roots.js +177 -0
  104. package/src/features/mathml/openxml.d.ts +56 -0
  105. package/src/features/mathml/openxml.js +87 -0
  106. package/src/features/mathml/parse/math-parser.d.ts +43 -0
  107. package/src/features/mathml/parse/math-parser.js +636 -0
  108. package/src/features/mathml/serialize/math-serializer.d.ts +34 -0
  109. package/src/features/mathml/serialize/math-serializer.js +749 -0
  110. package/src/features/smart-art/diagram-xml.d.ts +63 -0
  111. package/src/features/smart-art/diagram-xml.js +459 -0
  112. package/src/features/smart-art/errors.d.ts +24 -0
  113. package/src/features/smart-art/errors.js +47 -0
  114. package/src/features/smart-art/index.d.ts +26 -0
  115. package/src/features/smart-art/index.js +26 -0
  116. package/src/features/smart-art/minimal-samples.d.ts +18 -0
  117. package/src/features/smart-art/minimal-samples.js +40 -0
  118. package/src/features/smart-art/mutators.d.ts +60 -0
  119. package/src/features/smart-art/mutators.js +566 -0
  120. package/src/features/smart-art/namespaces.d.ts +153 -0
  121. package/src/features/smart-art/namespaces.js +163 -0
  122. package/src/features/smart-art/package-graph.d.ts +61 -0
  123. package/src/features/smart-art/package-graph.js +413 -0
  124. package/src/features/smart-art/parse-colors.d.ts +19 -0
  125. package/src/features/smart-art/parse-colors.js +39 -0
  126. package/src/features/smart-art/parse-data.d.ts +21 -0
  127. package/src/features/smart-art/parse-data.js +121 -0
  128. package/src/features/smart-art/parse-layout.d.ts +20 -0
  129. package/src/features/smart-art/parse-layout.js +40 -0
  130. package/src/features/smart-art/parse-rel-ids.d.ts +71 -0
  131. package/src/features/smart-art/parse-rel-ids.js +233 -0
  132. package/src/features/smart-art/parse-style.d.ts +19 -0
  133. package/src/features/smart-art/parse-style.js +39 -0
  134. package/src/features/smart-art/point-text.d.ts +80 -0
  135. package/src/features/smart-art/point-text.js +424 -0
  136. package/src/features/smart-art/register.d.ts +33 -0
  137. package/src/features/smart-art/register.js +95 -0
  138. package/src/features/smart-art/serialize.d.ts +40 -0
  139. package/src/features/smart-art/serialize.js +48 -0
  140. package/src/features/smart-art/types.d.ts +403 -0
  141. package/src/features/smart-art/types.js +28 -0
  142. package/src/global.js +1 -0
  143. package/src/index.d.ts +21 -0
  144. package/src/index.js +22 -0
  145. package/tsconfig.build.json +13 -0
  146. package/tsconfig.harness.json +32 -0
  147. package/tslint.json +111 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ej2-office-common.es2015.js","sources":["../src/es6/features/ink/constants.js","../src/es6/features/ink/ink-effects.js","../src/es6/features/ink/trace-codec.js","../src/es6/features/ink/ink-model.js","../src/es6/core/xml/model.js","../src/es6/features/ink/ink-units.js","../src/es6/features/ink/ink-xml.js","../src/es6/features/ink/ink-parser.js","../src/es6/features/ink/ink-serializer.js","../src/es6/features/mathml/constants.js","../src/es6/features/mathml/model/enums.js","../src/es6/features/mathml/errors.js","../src/es6/features/mathml/model/math-element.js","../src/es6/features/mathml/model/roots.js","../src/es6/features/mathml/model/controls.js","../src/es6/features/mathml/openxml.js","../src/es6/features/mathml/parse/math-parser.js","../src/es6/features/mathml/serialize/math-serializer.js","../src/es6/features/mathml/math-factory.js","../src/es6/encryption/agile-constants.js","../src/es6/encryption/errors.js","../src/es6/encryption/crypto-primitives.js","../src/es6/encryption/encryption-info-xml.js","../src/es6/encryption/agile-encryption-info.js","../src/es6/encryption/agile-password.js","../src/es6/encryption/cfb-reader.js","../src/es6/encryption/decrypt-encrypted-package.js","../src/es6/encryption/index.js","../src/es6/index.js"],"sourcesContent":["/**\n * Cited InkML / Wordprocessing ink constants.\n *\n * Sources:\n * - W3C InkML 1.0 §1 / namespace declaration\n * - ECMA-376 Part 1 content types; [MS-ODRAWXML] §2.1.4 ink part\n * - ECMA-376-1 §17.3.3.2 / [MS-ODRAWXML] §2.1.4 customXml relationship for ink source\n * - [MS-ODRAWXML] §2.15 WordprocessingML 2010 namespace\n * - [MS-ODRAWXML] §2.2.7.6 `wordprocessingInk` graphicData URI\n */\n/**\n * InkML namespace URI.\n *\n * Source: W3C InkML 1.0 (`http://www.w3.org/2003/InkML`).\n *\n * @public\n */\nexport const INKML_NAMESPACE = 'http://www.w3.org/2003/InkML';\n/**\n * Content type for an InkML part.\n *\n * Source: [MS-ODRAWXML] §2.1.4 / Office content-type vocabulary —\n * `application/inkml+xml`.\n *\n * @public\n */\nexport const INK_CONTENT_TYPE = 'application/inkml+xml';\n/**\n * Relationship type used by Word documents to bind the ink source part.\n *\n * Source: ECMA-376-1 §17.3.3.2; [MS-ODRAWXML] §2.1.4 —\n * `…/relationships/customXml` (internal target mode).\n *\n * @public\n */\nexport const INK_SOURCE_RELATIONSHIP_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml';\n/**\n * WordprocessingML 2010 namespace (`w14:`).\n *\n * Source: [MS-ODRAWXML] §2.15 —\n * `http://schemas.microsoft.com/office/word/2010/wordml`.\n *\n * @public\n */\nexport const WORDML_2010_NAMESPACE = 'http://schemas.microsoft.com/office/word/2010/wordml';\n/**\n * DrawingML `a:graphicData/@uri` value for wordprocessing ink content.\n *\n * Source: [MS-ODRAWXML] §2.2.7.6 —\n * `http://schemas.microsoft.com/office/word/2010/wordprocessingInk`.\n *\n * @public\n */\nexport const WORDPROCESSING_INK_URI = 'http://schemas.microsoft.com/office/word/2010/wordprocessingInk';\n","/**\n * Effect → characteristic color mapping used when serializing ink brushes.\n *\n * Values are cited from the approved cross-repo ink specification\n * (`ej2-docx/docs/specs/ink-dom-parse-serialize.md`, Internal semantic model —\n * Effects → color), cross-checked against [MS-ODRAWXML] ink effect tokens.\n *\n * `'none'` and `'pencil'` do not override stroke color.\n */\n/**\n * Characteristic colors for non-default ink visual effects.\n *\n * | Effect | Color | Notes |\n * |---|---|---|\n * | bronze | `#BB5B18` | cited characteristic color |\n * | silver | `#B4C3DA` | cited characteristic color |\n * | gold | `#CC912C` | cited characteristic color |\n * | roseGold | `#EEB3A6` | cited characteristic color |\n * | ocean | `#0B868D` | cited characteristic color |\n * | lava | `#DA0C07` | cited characteristic color |\n * | rainbow | `#FF4E00` | cited characteristic color |\n * | galaxy | `#AE198D` | cited characteristic color |\n *\n * @public\n */\nexport const INK_EFFECT_COLORS = Object.freeze({\n bronze: '#BB5B18',\n silver: '#B4C3DA',\n gold: '#CC912C',\n roseGold: '#EEB3A6',\n ocean: '#0B868D',\n lava: '#DA0C07',\n rainbow: '#FF4E00',\n galaxy: '#AE198D',\n});\n/**\n * Resolve the characteristic color for an effect, if any.\n *\n * Returns `undefined` for `'none'` / `'pencil'` (no color override).\n *\n * @public\n */\nexport function inkEffectColor(effect) {\n return INK_EFFECT_COLORS[effect];\n}\n","/**\n * Pure InkML trace codec (W3C InkML §3.2.1 via [MS-ODRAWXML] §1.2.1 / §2.1.4).\n *\n * Decodes differential-prefix packet text into absolute channel rows and plane\n * points; encodes points as absolute `\"x y, x y, …\"` text. No XML dependency.\n */\nconst PREFIX_ABSOLUTE = '!';\nconst PREFIX_FIRST_DIFF = \"'\";\nconst PREFIX_SECOND_DIFF = '\"';\n/**\n * Tokenize a single channel value, stripping an optional InkML prefix.\n * Source: W3C InkML §3.2.1 — `!` absolute, `'` first difference, `\"` second difference.\n */\nfunction splitPrefix(token) {\n if (token.length === 0) {\n return { prefix: undefined, raw: token };\n }\n const head = token.charAt(0);\n if (head === PREFIX_ABSOLUTE) {\n return { prefix: 'absolute', raw: token.slice(1) };\n }\n if (head === PREFIX_FIRST_DIFF) {\n return { prefix: 'first', raw: token.slice(1) };\n }\n if (head === PREFIX_SECOND_DIFF) {\n return { prefix: 'second', raw: token.slice(1) };\n }\n return { prefix: undefined, raw: token };\n}\nfunction parseNumber(raw) {\n if (raw.length === 0) {\n return undefined;\n }\n const n = Number(raw);\n return Number.isFinite(n) ? n : undefined;\n}\n/**\n * Decode InkML trace text into absolute channel rows and X/Y plane points.\n *\n * Rules (W3C InkML §3.2.1):\n * - Packets are comma-separated.\n * - Channel values are whitespace-separated.\n * - A `!` / `'` / `\"` prefix before a value switches interpretation for the\n * **rest of that packet** (absolute, first-difference, second-difference).\n * - First differences apply against the previous packet's same-channel value.\n * - Second differences accumulate per channel across packets.\n * - Default channel order when no context is supplied: X then Y.\n * - Extra channels are tolerated; reduction uses the first two as X/Y when\n * present. A row missing X or Y does not produce a plane point.\n *\n * Empty / whitespace-only input yields zero packets and zero points (guarded).\n *\n * @public\n */\nexport function decodeTrace(traceText) {\n const trimmed = traceText.trim();\n if (trimmed.length === 0) {\n return {\n channelRows: [],\n points: [],\n stats: { packetCount: 0, channelValueCount: 0, pointCount: 0 },\n };\n }\n const packetStrings = trimmed.split(',');\n const channelRows = [];\n const points = [];\n let channelValueCount = 0;\n // Previous absolute channel values (for first-difference).\n let previous = [];\n // Running second-difference deltas per channel (mutated in place per index).\n const secondDelta = [];\n // Default mode between packets is absolute until a prefix appears.\n let defaultMode = 'absolute';\n for (const packetString of packetStrings) {\n const tokens = packetString.trim().split(/\\s+/).filter((t) => t.length > 0);\n if (tokens.length === 0) {\n // Empty packet (e.g. trailing comma) — skip without inventing channels.\n continue;\n }\n let mode = defaultMode;\n const row = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token === undefined) {\n continue;\n }\n const { prefix, raw } = splitPrefix(token);\n if (prefix !== undefined) {\n mode = prefix;\n // Prefix mode persists for subsequent packets until another prefix.\n defaultMode = prefix;\n }\n const value = parseNumber(raw);\n channelValueCount += 1;\n if (value === undefined) {\n // Malformed token: skip channel slot (best-effort; no invented number).\n continue;\n }\n let absolute;\n if (mode === 'absolute') {\n absolute = value;\n // Reset second-diff accumulator for this channel when absolute is used.\n secondDelta[i] = 0;\n }\n else if (mode === 'first') {\n const base = (previous[i] != null ? previous[i] : 0);\n absolute = base + value;\n secondDelta[i] = value;\n }\n else {\n // second difference: accumulate delta, then add to previous absolute\n const prevDelta = (secondDelta[i] != null ? secondDelta[i] : 0);\n const newDelta = prevDelta + value;\n secondDelta[i] = newDelta;\n const base = (previous[i] != null ? previous[i] : 0);\n absolute = base + newDelta;\n }\n row[i] = absolute;\n }\n channelRows.push(row);\n previous = row.slice();\n const x = row[0];\n const y = row[1];\n if (x !== undefined && y !== undefined) {\n points.push({ x, y });\n }\n }\n return {\n channelRows,\n points,\n stats: {\n packetCount: channelRows.length,\n channelValueCount,\n pointCount: points.length,\n },\n };\n}\n/**\n * Encode plane points as absolute InkML trace text (`\"x y, x y, …\"`).\n *\n * Always absolute (no differential prefixes). Generated from points only —\n * never from stored markup (DOM mandate).\n *\n * @public\n */\nexport function encodeTrace(points) {\n if (points.length === 0) {\n return '';\n }\n return points.map((p) => `${formatCoord(p.x)} ${formatCoord(p.y)}`).join(', ');\n}\nfunction formatCoord(n) {\n // Prefer compact integer form when exact; otherwise default number string.\n if (Number.isInteger(n)) {\n return String(n);\n }\n return String(n);\n}\n/**\n * Compute axis-aligned bounds over plane points.\n * Empty input returns a zero box (min=max=0) so callers can branch on count.\n *\n * @public\n */\nexport function computeInkBounds(points) {\n const first = points[0];\n if (first === undefined) {\n return { minX: 0, minY: 0, maxX: 0, maxY: 0 };\n }\n let minX = first.x;\n let minY = first.y;\n let maxX = minX;\n let maxY = minY;\n for (let i = 1; i < points.length; i++) {\n const p = points[i];\n if (p === undefined) {\n continue;\n }\n if (p.x < minX)\n minX = p.x;\n if (p.y < minY)\n minY = p.y;\n if (p.x > maxX)\n maxX = p.x;\n if (p.y > maxY)\n maxY = p.y;\n }\n return { minX, minY, maxX, maxY };\n}\n/**\n * Uniform scale of decoded strokes into an extent **without re-zeroing**.\n *\n * scale = min(extent.w / (maxX−minX), extent.h / (maxY−minY)) when the span\n * is positive; origin of the coordinate system is preserved (decoded path).\n * Degenerate (zero-span) axes map to the extent origin for that axis only.\n *\n * Source: cross-repo ink spec § Parser behavior — uniform scale for decoded\n * strokes.\n *\n * @public\n */\nexport function scalePointsUniform(points, extent) {\n if (points.length === 0) {\n return [];\n }\n const bounds = computeInkBounds(points);\n const spanX = bounds.maxX - bounds.minX;\n const spanY = bounds.maxY - bounds.minY;\n const scaleX = spanX > 0 ? extent.width / spanX : 0;\n const scaleY = spanY > 0 ? extent.height / spanY : 0;\n const scale = spanX > 0 && spanY > 0\n ? Math.min(scaleX, scaleY)\n : spanX > 0\n ? scaleX\n : spanY > 0\n ? scaleY\n : 0;\n return points.map((p) => ({\n x: p.x * scale,\n y: p.y * scale,\n }));\n}\n/**\n * Stretch-to-fit scale for **authored** strokes: re-zero to minX/minY, then\n * stretch independently to the extent.\n *\n * Source: cross-repo ink spec § Parser behavior — authored strokes re-zero\n * and stretch to the extent.\n *\n * @public\n */\nexport function scalePointsStretch(points, extent) {\n if (points.length === 0) {\n return [];\n }\n const bounds = computeInkBounds(points);\n const spanX = bounds.maxX - bounds.minX;\n const spanY = bounds.maxY - bounds.minY;\n const scaleX = spanX > 0 ? extent.width / spanX : 0;\n const scaleY = spanY > 0 ? extent.height / spanY : 0;\n return points.map((p) => ({\n x: spanX > 0 ? (p.x - bounds.minX) * scaleX : 0,\n y: spanY > 0 ? (p.y - bounds.minY) * scaleY : 0,\n }));\n}\n","/**\n * Ink DOM model and authoring API (office-common).\n *\n * Contract: `docs/specs/ink-shared-codec.md` / cross-repo\n * `ej2-docx/docs/specs/ink-dom-parse-serialize.md` § Internal semantic model,\n * § Mutation behavior.\n *\n * Trace-group decision (TASK-9002): `OfficeInk.traces` is flat document-order.\n * Nested `traceGroup` structure is reserved for TASK-9003 via an optional\n * internal ordered tree field (`traceTree`) that 9003 may populate; when\n * absent, serialize emits a flat sequence of traces. Consumers of 9002 only\n * see the flat `traces` array.\n */\nimport { computeInkBounds, scalePointsStretch, scalePointsUniform } from './trace-codec';\n/** Marker used by {@link isOfficeInk}. */\nconst OFFICE_INK_BRAND = Symbol.for('@syncfusion/ej2-office-common.OfficeInk');\n/** Default authored brush size (spec mutation §): 1.42pt × 1.42pt. */\nconst DEFAULT_AUTHORED_BRUSH_SIZE = 1.42;\nconst DEFAULT_AUTHORED_COLOR = '#000000';\nconst DEFAULT_AUTHORED_UNITS = 'pt';\nconst DEFAULT_CONTEXT_REF = '#ctx0';\nfunction isInkEffectType(value) {\n return (value === 'none' ||\n value === 'pencil' ||\n value === 'rainbow' ||\n value === 'galaxy' ||\n value === 'lava' ||\n value === 'ocean' ||\n value === 'roseGold' ||\n value === 'gold' ||\n value === 'silver' ||\n value === 'bronze');\n}\nfunction cloneBrush(source, id) {\n const next = {\n color: source.color,\n size: { width: source.size.width, height: source.size.height },\n units: source.units,\n inkEffect: source.inkEffect,\n ignorePressure: source.ignorePressure,\n id,\n };\n if (source.tip !== undefined) {\n next.tip = source.tip;\n }\n if (source.rasterOp !== undefined) {\n next.rasterOp = source.rasterOp;\n }\n if (source.anchorX !== undefined) {\n next.anchorX = source.anchorX;\n }\n if (source.anchorY !== undefined) {\n next.anchorY = source.anchorY;\n }\n if (source.scaleFactor !== undefined) {\n next.scaleFactor = source.scaleFactor;\n }\n if (source.transparency !== undefined) {\n next.transparency = source.transparency;\n }\n if (source.antiAliased !== undefined) {\n next.antiAliased = source.antiAliased;\n }\n if (source.fitToCurve !== undefined) {\n next.fitToCurve = source.fitToCurve;\n }\n return next;\n}\nfunction cloneContext(source) {\n const next = {\n id: source.id,\n channels: source.channels.map((ch) => {\n const c = { name: ch.name };\n if (ch.type !== undefined) {\n c.type = ch.type;\n }\n if (ch.min !== undefined) {\n c.min = ch.min;\n }\n if (ch.max !== undefined) {\n c.max = ch.max;\n }\n if (ch.units !== undefined) {\n c.units = ch.units;\n }\n return c;\n }),\n };\n if (source.inkSourceId !== undefined) {\n next.inkSourceId = source.inkSourceId;\n }\n return next;\n}\nfunction defaultAuthoredBrush(id) {\n return {\n color: DEFAULT_AUTHORED_COLOR,\n size: { width: DEFAULT_AUTHORED_BRUSH_SIZE, height: DEFAULT_AUTHORED_BRUSH_SIZE },\n units: DEFAULT_AUTHORED_UNITS,\n inkEffect: 'none',\n ignorePressure: true,\n id,\n };\n}\nfunction applyBrushPartial(target, partial) {\n if (partial.color !== undefined) {\n target.color = partial.color;\n }\n if (partial.size !== undefined) {\n target.size = {\n width: partial.size.width,\n height: partial.size.height,\n };\n }\n if (partial.units !== undefined) {\n target.units = partial.units;\n }\n if (partial.inkEffect !== undefined && isInkEffectType(partial.inkEffect)) {\n target.inkEffect = partial.inkEffect;\n }\n if (partial.ignorePressure !== undefined) {\n target.ignorePressure = partial.ignorePressure;\n }\n if (partial.tip !== undefined) {\n target.tip = partial.tip;\n }\n if (partial.rasterOp !== undefined) {\n target.rasterOp = partial.rasterOp;\n }\n if (partial.anchorX !== undefined) {\n target.anchorX = partial.anchorX;\n }\n if (partial.anchorY !== undefined) {\n target.anchorY = partial.anchorY;\n }\n if (partial.scaleFactor !== undefined) {\n target.scaleFactor = partial.scaleFactor;\n }\n}\n/**\n * Allocate the next `#br{N}` key that does not collide with existing brushes.\n */\nfunction allocateBrushId(brushes) {\n const used = new Set(brushes.map((b) => b.id));\n let n = 0;\n for (;;) {\n const id = `#br${String(n)}`;\n if (!used.has(id)) {\n return id;\n }\n n += 1;\n }\n}\nfunction brandInk(ink) {\n const internal = ink;\n Object.defineProperty(internal, OFFICE_INK_BRAND, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return internal;\n}\n/**\n * Build a branded ink from parsed InkML state (`scaleMode: 'decoded'`).\n *\n * @private\n */\nexport function createDecodedInk(init) {\n return brandInk(Object.assign({ traces: init.traces, brushes: init.brushes, scaleMode: 'decoded' }, (init.contexts !== undefined ? { contexts: init.contexts } : {}), (init.traceTree !== undefined ? { traceTree: init.traceTree } : {})));\n}\n/**\n * Allocate a fresh, empty ink DOM for authoring.\n *\n * Empty traces; no brushes until the first {@link addInkTrace}. Scale mode\n * is `'authored'` (stretch-to-fit for {@link inkPathPoints}).\n *\n * @private\n */\nexport function createInk() {\n return brandInk({\n traces: [],\n brushes: [],\n scaleMode: 'authored',\n });\n}\n/**\n * Add a trace to an ink DOM.\n *\n * Brush selection (spec mutation §):\n * - If `brush` partial is provided, clone previous brush (or default) then\n * apply the partial onto a **new** brush id.\n * - Else if a previous trace exists, clone that trace's brush under a new id.\n * - Else allocate the default black `1.42pt × 1.42pt` authored brush as `#br0`.\n *\n * Returns the new trace. Mutates `ink` in place (traces/brushes arrays grow).\n *\n * @private\n */\nexport function addInkTrace(ink, points, brush) {\n if (!isOfficeInk(ink)) {\n throw new TypeError('addInkTrace: expected OfficeInk from createInk/cloneInk');\n }\n const internal = ink;\n const pointCopy = points.map((p) => ({ x: p.x, y: p.y }));\n let sourceBrush;\n const lastTrace = internal.traces[internal.traces.length - 1];\n if (lastTrace !== undefined) {\n sourceBrush = internal.brushes.find((b) => b.id === lastTrace.brushRef);\n }\n const newId = allocateBrushId(internal.brushes);\n const newBrush = sourceBrush !== undefined\n ? cloneBrush(sourceBrush, newId)\n : defaultAuthoredBrush(newId);\n if (brush !== undefined) {\n applyBrushPartial(newBrush, brush);\n }\n internal.brushes.push(newBrush);\n const trace = {\n points: pointCopy,\n brushRef: newBrush.id,\n contextRef: DEFAULT_CONTEXT_REF,\n };\n const traceIndex = internal.traces.length;\n internal.traces.push(trace);\n // Keep ordered tree in sync so serializeInkXml (tree-preferring) emits new traces.\n if (internal.traceTree !== undefined) {\n internal.traceTree = [...internal.traceTree, { kind: 'trace', traceIndex }];\n }\n return trace;\n}\n/**\n * Deep-copy an ink DOM (independent traces, points, brushes, and contexts).\n *\n * @private\n */\nexport function cloneInk(ink) {\n if (!isOfficeInk(ink)) {\n throw new TypeError('cloneInk: expected OfficeInk from createInk/cloneInk');\n }\n const internal = ink;\n const brushes = internal.brushes.map((b) => cloneBrush(b, b.id));\n const traces = internal.traces.map((t) => {\n const copy = {\n points: t.points.map((p) => ({ x: p.x, y: p.y })),\n brushRef: t.brushRef,\n contextRef: t.contextRef,\n };\n if (t.timeOffset !== undefined) {\n copy.timeOffset = t.timeOffset;\n }\n return copy;\n });\n const next = {\n traces,\n brushes,\n scaleMode: internal.scaleMode,\n };\n if (internal.contexts !== undefined) {\n next.contexts = internal.contexts.map(cloneContext);\n }\n if (internal.traceTree !== undefined) {\n next.traceTree = cloneTraceTree(internal.traceTree);\n }\n return brandInk(next);\n}\nfunction cloneTraceTree(nodes) {\n return nodes.map((n) => {\n if (n.kind === 'trace') {\n return { kind: 'trace', traceIndex: n.traceIndex };\n }\n return { kind: 'group', children: cloneTraceTree(n.children) };\n });\n}\n/**\n * Convert ink traces into plane point paths scaled to a drawing extent.\n *\n * Authored ink (`scaleMode === 'authored'`, default from {@link createInk})\n * uses stretch-to-fit (re-zero). Decoded ink uses uniform scale (no re-zero).\n * Bounds are computed over **all** points in the ink, then each path is scaled\n * with the same transform.\n *\n * @private\n */\nexport function inkPathPoints(ink, extent) {\n if (!isOfficeInk(ink)) {\n throw new TypeError('inkPathPoints: expected OfficeInk from createInk/cloneInk');\n }\n const internal = ink;\n const allPoints = [];\n for (const t of internal.traces) {\n for (const p of t.points) {\n allPoints.push(p);\n }\n }\n if (allPoints.length === 0) {\n return internal.traces.map(() => []);\n }\n // Build a single scaled cloud, then slice back per trace by index.\n const scaledAll = internal.scaleMode === 'decoded'\n ? scalePointsUniform(allPoints, extent)\n : scalePointsStretch(allPoints, extent);\n let offset = 0;\n const paths = [];\n for (const t of internal.traces) {\n const slice = scaledAll.slice(offset, offset + t.points.length);\n offset += t.points.length;\n paths.push([...slice]);\n }\n return paths;\n}\n/**\n * Type guard for {@link OfficeInk} instances produced by this module.\n *\n * @private\n */\nexport function isOfficeInk(value) {\n if (value === null || typeof value !== 'object') {\n return false;\n }\n return value[OFFICE_INK_BRAND] === true;\n}\n/**\n * Mark an ink as authored or decoded (uniform scale path).\n * Hosts and tests use this to select the scale mode for bounds/path computation.\n *\n * @private\n */\nexport function setInkScaleMode(ink, mode) {\n if (!isOfficeInk(ink)) {\n throw new TypeError('setInkScaleMode: expected OfficeInk');\n }\n ink.scaleMode = mode;\n}\nexport { computeInkBounds };\n","/**\n * Minimal Open XML element tree model shared by office-common codecs.\n *\n * Shape matches the application-repo OpenXml tree (`ej2-docx` `src/core/xml/model.ts`)\n * so ink parse/serialize can accept host-supplied trees without a second DOM type.\n *\n * This module does **not** parse raw bytes — callers supply an element tree.\n */\n/**\n * XML namespace URI (`xml:`).\n *\n * @public\n */\nexport const XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';\n/**\n * XMLNS namespace URI (`xmlns:`).\n *\n * @public\n */\nexport const XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/';\n","/**\n * Length unit conversion for ink brush width/height.\n *\n * Formulas match Compression.Base `OfficeParser.GetPointValue` (unit→pt) and\n * `OfficeSerializer.ConvertPointsToUnit` (pt→unit). EMU factor: 12700 EMU/pt\n * (DrawingML).\n */\n/**\n * DrawingML EMUs per point (OfficeParser / OfficeSerializer).\n *\n * @public\n */\nexport const EMUS_PER_POINT = 12700;\n/**\n * Convert a numeric length in `units` to points.\n * Result is rounded to 2 decimal places (GetPointValue parity).\n *\n * @public\n */\nexport function unitValueToPoints(value, units) {\n const u = ((units != null ? units : 'cm')).trim().toLowerCase();\n let points;\n switch (u) {\n case 'pt':\n points = value;\n break;\n case 'mm':\n points = (value / 25.4) * 72;\n break;\n case 'px':\n points = (value / 4) * 3;\n break;\n case 'in':\n points = value * 72;\n break;\n case 'cm':\n points = (value / 2.54) * 72;\n break;\n case 'emu':\n points = value / EMUS_PER_POINT;\n break;\n default:\n // Unknown unit: treat as EMU-less raw → cm (GetPointValue else branch uses EMU)\n points = value / EMUS_PER_POINT;\n break;\n }\n return round2(points);\n}\n/**\n * Convert points to the target unit (ConvertPointsToUnit).\n * Default / unknown unit → cm.\n *\n * @public\n */\nexport function pointsToUnit(points, units) {\n const u = ((units != null ? units : 'cm')).trim().toLowerCase();\n switch (u) {\n case 'pt':\n return points;\n case 'mm':\n return (points * 25.4) / 72;\n case 'px':\n return (points * 96) / 72;\n case 'in':\n return points / 72;\n case 'cm':\n return (points * 2.54) / 72;\n case 'emu':\n return points * EMUS_PER_POINT;\n default:\n return (points * 2.54) / 72;\n }\n}\n/**\n * Format a unit magnitude with invariant 3-decimal style (`\"0.###\"`).\n *\n * @public\n */\nexport function formatUnitValue(value) {\n if (!Number.isFinite(value)) {\n return '0';\n }\n // Trim trailing zeros after up to 3 decimal places (InvariantCulture \"0.###\").\n const fixed = value.toFixed(3);\n if (!(fixed.indexOf('.') !== -1)) {\n return fixed;\n }\n return fixed.replace(/\\.?0+$/, '');\n}\nfunction round2(n) {\n return Math.round(n * 100) / 100;\n}\n","/**\n * Small OpenXml element helpers scoped to InkML serialization.\n */\nimport { XML_NAMESPACE, XMLNS_NAMESPACE } from '../../core/xml/model';\nimport { INKML_NAMESPACE } from './constants';\nconst INK_PREFIX = 'inkml';\n/** Build an InkML-namespaced element. */\nexport function inkElement(localName, attributes = [], children = [], namespaceDeclarations = []) {\n return { kind: 'element',\n namespaceUri: INKML_NAMESPACE,\n localName,\n prefix: INK_PREFIX,\n attributes,\n namespaceDeclarations,\n children,\n };\n}\n/** Plain attribute (no namespace). */\nexport function attr(localName, value) {\n return { namespaceUri: '', localName, prefix: '', value };\n}\n/** `xml:id` attribute. */\nexport function xmlIdAttr(id) {\n return {\n namespaceUri: XML_NAMESPACE,\n localName: 'id',\n prefix: 'xml',\n value: id,\n };\n}\n/** Text node. */\nexport function textNode(value) {\n return { kind: 'text', value };\n}\n/** `xmlns:inkml` declaration for the ink root. */\nexport function inkmlNamespaceDecl() {\n return { prefix: INK_PREFIX, namespaceUri: INKML_NAMESPACE };\n}\n/** Read attribute by local name (optional namespace filter). */\nexport function getAttr(el, localName, namespaceUri) {\n for (const a of el.attributes) {\n if (a.localName !== localName) {\n continue;\n }\n if (namespaceUri !== undefined && a.namespaceUri !== namespaceUri) {\n continue;\n }\n return a.value;\n }\n // xml:id may appear as prefixed without namespace resolution in hand-built trees\n if (localName === 'id') {\n for (const a of el.attributes) {\n if (a.localName === 'id' && (a.prefix === 'xml' || a.namespaceUri === XML_NAMESPACE)) {\n return a.value;\n }\n }\n }\n return undefined;\n}\n/** Concatenate descendant text of an element. */\nexport function elementText(el) {\n let out = '';\n for (const child of el.children) {\n if (child.kind === 'text') {\n out += child.value;\n }\n else {\n out += elementText(child);\n }\n }\n return out;\n}\n/** Direct element children in document order (optional namespace filter). */\nexport function elementChildren(el, localName, namespaceUri = INKML_NAMESPACE) {\n const result = [];\n for (const child of el.children) {\n if (child.kind !== 'element') {\n continue;\n }\n if (namespaceUri !== '' && child.namespaceUri !== namespaceUri && child.namespaceUri !== '') {\n // Allow empty namespaceUri for hand-built / defaulted fixtures when local names match InkML.\n if (child.namespaceUri !== INKML_NAMESPACE && namespaceUri === INKML_NAMESPACE) {\n // still accept un-namespaced ink fixtures if localName matches\n if (localName !== undefined && child.localName !== localName) {\n continue;\n }\n if (localName === undefined) {\n // only accept if it looks like ink content (caller filters)\n }\n }\n }\n if (localName !== undefined && child.localName !== localName) {\n continue;\n }\n if (namespaceUri === INKML_NAMESPACE &&\n child.namespaceUri !== INKML_NAMESPACE &&\n child.namespaceUri !== '') {\n continue;\n }\n result.push(child);\n }\n return result;\n}\n/** Whether an element is in the InkML namespace (or un-namespaced fixture). */\nexport function isInkMlElement(el) {\n return el.namespaceUri === INKML_NAMESPACE || el.namespaceUri === '';\n}\nexport { XML_NAMESPACE, XMLNS_NAMESPACE, INKML_NAMESPACE, INK_PREFIX };\n","/**\n * InkML element-tree → {@link OfficeInk} parser ([MS-ODRAWXML] §2.1.4).\n *\n * The caller supplies an OpenXml element tree; this module never reads bytes\n * and never expands entities. Count guards are surfaced via\n * {@link getLastInkParseDiagnostics} for consumer limits policy.\n */\nimport { XML_NAMESPACE } from '../../core/xml/model';\nimport { INKML_NAMESPACE } from './constants';\nimport { createDecodedInk } from './ink-model';\nimport { unitValueToPoints } from './ink-units';\nimport { elementText, getAttr, isInkMlElement } from './ink-xml';\nimport { decodeTrace } from './trace-codec';\n/**\n * Diagnostic code for untokenizable / empty-result malformed traces.\n *\n * @public\n */\nexport const DIAG_INVALID_INK_TRACE = 'content/invalid-ink-trace';\nconst RECOGNIZED_CHANNELS = new Set(['X', 'Y', 'Z', 'S', 'T', 'SN', 'F', 'TP', 'BP', 'OTx', 'OTy', 'OA', 'OE', 'OR', 'RP', 'RR', 'RY', 'TW', 'TH', 'TC']);\nconst RECOGNIZED_CHANNEL_UNITS = new Set(['dev', 'in', 'cm', 'deg', 'rad', 's', 'lb', 'g']);\n/** §2.1.4 ignore-list local names (skipped, never persisted). */\nconst IGNORE_LOCAL_NAMES = new Set(['timestamp', 'canvas', 'canvasTransform', 'mapping', 'bind', 'table', 'matrix', 'traceView', 'annotation', 'annotationXML', 'channelProperty', 'traceProperty', 'brushPropertyRef', 'intermittentInfo', 'latency', 'sampleRate', 'sampleRateExact', 'srcRef', 'channelRef']);\nconst BRUSH_PROP_NAMES = new Set(['width', 'height', 'color', 'transparency', 'tip', 'rasterop', 'antialiased', 'fittocurve', 'ignorepressure', 'inkeffects', 'anchorx', 'anchory', 'scalefactor']);\nconst EFFECT_TOKENS = new Map([\n ['none', 'none'],\n ['pencil', 'pencil'],\n ['rainbow', 'rainbow'],\n ['galaxy', 'galaxy'],\n ['lava', 'lava'],\n ['ocean', 'ocean'],\n ['rosegold', 'roseGold'],\n ['gold', 'gold'],\n ['silver', 'silver'],\n ['bronze', 'bronze'],\n]);\n/** Parse defaults ([MS-ODRAWXML] §2.1.4 / OfficeParser). */\nconst DEFAULT_WIDTH_CM = 0.053;\nconst DEFAULT_HEIGHT_CM = 0.001;\nconst DEFAULT_COLOR = '#000000';\nconst DEFAULT_TIP = 'ellipse';\nconst DEFAULT_RASTER_OP = 'copyPen';\nconst DEFAULT_CONTEXT_REF = '#ctx0';\nlet lastDiagnostics = {\n items: [],\n traceCount: 0,\n packetCount: 0,\n pointCount: 0,\n channelValueCount: 0\n};\n/**\n * Diagnostics from the most recent {@link parseInkXml} invocation.\n *\n * @public\n */\nexport function getLastInkParseDiagnostics() {\n return lastDiagnostics;\n}\n/**\n * Parse an InkML `ink` root element tree into a branded {@link OfficeInk}.\n *\n * Source: [MS-ODRAWXML] §2.1.4; W3C InkML 1.0; `docs/specs/ink-shared-codec.md`.\n *\n * @public\n */\nexport function parseInkXml(root) {\n const diagnostics = [];\n let packetCount = 0;\n let pointCount = 0;\n let channelValueCount = 0;\n const brushes = [];\n const contexts = [];\n const traces = [];\n const treeRoots = [];\n if (!isInkRoot(root)) {\n lastDiagnostics = {\n items: diagnostics,\n traceCount: 0,\n packetCount: 0,\n pointCount: 0,\n channelValueCount: 0\n };\n return createDecodedInk({\n traces: [],\n brushes: []\n });\n }\n // First pass: definitions (at most one considered; extras ignored after first)\n let sawDefinitions = false;\n for (const child of root.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n const name = child.localName;\n if (IGNORE_LOCAL_NAMES.has(name)) {\n continue;\n }\n if (name === 'definitions') {\n if (sawDefinitions) {\n continue;\n }\n sawDefinitions = true;\n parseDefinitions(child, brushes, contexts);\n }\n }\n // Second pass: traces / groups in document order (C# only walks root children)\n for (const child of root.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n const name = child.localName;\n if (IGNORE_LOCAL_NAMES.has(name) || name === 'definitions') {\n continue;\n }\n if (name === 'trace') {\n const { trace, node, stats, diagnostic } = parseTraceElement(child, traces.length);\n traces.push(trace);\n treeRoots.push(node);\n packetCount += stats.packetCount;\n pointCount += stats.pointCount;\n channelValueCount += stats.channelValueCount;\n if (diagnostic !== undefined) {\n diagnostics.push(diagnostic);\n }\n }\n else if (name === 'traceGroup') {\n const group = parseTraceGroup(child, traces, diagnostics, s => {\n packetCount += s.packetCount;\n pointCount += s.pointCount;\n channelValueCount += s.channelValueCount;\n });\n if (group.children.length > 0) {\n treeRoots.push(group);\n }\n }\n }\n lastDiagnostics = {\n items: diagnostics,\n traceCount: traces.length,\n packetCount,\n pointCount,\n channelValueCount\n };\n return createDecodedInk(Object.assign({ traces,\n brushes }, (contexts.length > 0 ? {\n contexts\n } : {}), (traces.length > 0 ? {\n traceTree: treeRoots\n } : {})));\n}\nfunction isInkRoot(el) {\n if (el.localName !== 'ink') {\n return false;\n }\n return isInkMlElement(el) || el.namespaceUri === INKML_NAMESPACE;\n}\nfunction parseDefinitions(def, brushes, contexts) {\n for (const child of def.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n if (IGNORE_LOCAL_NAMES.has(child.localName)) {\n continue;\n }\n if (child.localName === 'brush') {\n brushes.push(parseBrush(child));\n }\n else if (child.localName === 'context') {\n const ctx = parseContext(child);\n if (ctx !== undefined) {\n contexts.push(ctx);\n }\n }\n // context only under definitions (already here); ignore elsewhere handled by root walk\n }\n}\nfunction parseContext(el) {\n const rawId = readXmlId(el);\n if (rawId === undefined || rawId.length === 0) {\n // Still accept context without id using a synthetic key? Spec requires id for inkSource;\n // skip malformed context without id.\n return undefined;\n }\n const id = ensureHash(rawId);\n let inkSourceId;\n const channels = [];\n for (const child of el.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n if (IGNORE_LOCAL_NAMES.has(child.localName)) {\n continue;\n }\n if (child.localName === 'inkSource') {\n const srcId = readXmlId(child);\n if (srcId !== undefined && srcId.length > 0) {\n inkSourceId = srcId;\n }\n // Walk inkSource for nested traceFormat as Office often nests it here\n collectChannelsFrom(child, channels);\n }\n else if (child.localName === 'traceFormat') {\n collectChannelsFrom(child, channels);\n }\n }\n const ctx = {\n id,\n channels\n };\n if (inkSourceId !== undefined) {\n ctx.inkSourceId = inkSourceId;\n }\n return ctx;\n}\nfunction collectChannelsFrom(el, channels) {\n for (const child of el.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n if (child.localName === 'traceFormat') {\n collectChannelsFrom(child, channels);\n continue;\n }\n if (child.localName !== 'channel') {\n continue;\n }\n const name = function () {\n var _nc = getAttr(child, 'name');\n return _nc != null ? _nc : '';\n }();\n if (!RECOGNIZED_CHANNELS.has(name)) {\n continue;\n }\n const ch = {\n name\n };\n const type = getAttr(child, 'type');\n if (type !== undefined) {\n ch.type = type;\n }\n const min = getAttr(child, 'min');\n if (min !== undefined) {\n ch.min = min;\n }\n const max = getAttr(child, 'max');\n if (max !== undefined) {\n ch.max = max;\n }\n const units = getAttr(child, 'units');\n if (units !== undefined && RECOGNIZED_CHANNEL_UNITS.has(units)) {\n ch.units = units;\n }\n else if (units !== undefined) {\n // Preserve units string even if outside short list (cm always recognized)\n ch.units = units;\n }\n // orientation / respectTo ignored\n channels.push(ch);\n }\n}\nfunction parseBrush(el) {\n const rawId = function () {\n var _nc = readXmlId(el);\n return _nc != null ? _nc : '';\n }();\n const id = ensureHash(rawId.length > 0 ? rawId : 'br0');\n // Defaults (parse §2.1.4) — size stored in points after unit conversion\n let widthPt = unitValueToPoints(DEFAULT_WIDTH_CM, 'cm');\n let heightPt = unitValueToPoints(DEFAULT_HEIGHT_CM, 'cm');\n let units = 'cm';\n let color = DEFAULT_COLOR;\n let tip = DEFAULT_TIP;\n let rasterOp = DEFAULT_RASTER_OP;\n let ignorePressure = false;\n let inkEffect = 'none';\n let anchorX;\n let anchorY;\n let scaleFactor;\n let transparency;\n let antiAliased;\n let fitToCurve;\n let sawWidth = false;\n let sawHeight = false;\n for (const child of el.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n if (child.localName !== 'brushProperty') {\n continue;\n }\n const nameRaw = getAttr(child, 'name');\n if (nameRaw === undefined) {\n continue;\n }\n const name = nameRaw.trim().toLowerCase();\n if (!BRUSH_PROP_NAMES.has(name)) {\n // Unknown property name → whole property dropped\n continue;\n }\n const valueRaw = function () {\n var _nc = getAttr(child, 'value');\n return _nc != null ? _nc : '';\n }();\n const unitsAttr = getAttr(child, 'units');\n switch (name) {\n case 'width':\n {\n const n = parseLengthNumber(valueRaw);\n if (n !== undefined) {\n const u = unitsAttr != null ? unitsAttr : 'cm';\n widthPt = unitValueToPoints(n, u);\n if (!sawHeight) {\n units = u;\n }\n sawWidth = true;\n units = u;\n }\n break;\n }\n case 'height':\n {\n const n = parseLengthNumber(valueRaw);\n if (n !== undefined) {\n const u = unitsAttr != null ? unitsAttr : units;\n heightPt = unitValueToPoints(n, u);\n sawHeight = true;\n if (unitsAttr !== undefined) {\n units = unitsAttr;\n }\n }\n break;\n }\n case 'color':\n {\n const hex = normalizeColor(valueRaw);\n if (hex !== undefined) {\n color = hex;\n }\n break;\n }\n case 'tip':\n {\n if (valueRaw.length > 0) {\n tip = valueRaw;\n }\n break;\n }\n case 'rasterop':\n {\n if (valueRaw.length > 0) {\n rasterOp = valueRaw;\n }\n break;\n }\n case 'ignorepressure':\n {\n ignorePressure = parseBoolish(valueRaw);\n break;\n }\n case 'inkeffects':\n {\n const token = valueRaw.trim().toLowerCase().replace(/[_\\s-]/g, '');\n const mapped = EFFECT_TOKENS.get(token);\n if (mapped !== undefined) {\n inkEffect = mapped;\n }\n break;\n }\n case 'anchorx':\n {\n anchorX = valueRaw;\n break;\n }\n case 'anchory':\n {\n anchorY = valueRaw;\n break;\n }\n case 'scalefactor':\n {\n scaleFactor = valueRaw;\n break;\n }\n case 'transparency':\n {\n const n = Number(valueRaw);\n if (Number.isFinite(n)) {\n transparency = n;\n }\n break;\n }\n case 'antialiased':\n {\n antiAliased = parseBoolish(valueRaw);\n break;\n }\n case 'fittocurve':\n {\n fitToCurve = parseBoolish(valueRaw);\n break;\n }\n default:\n break;\n }\n }\n // If neither width nor height units seen, keep cm (default source unit)\n if (!sawWidth && !sawHeight) {\n units = 'cm';\n }\n const brush = {\n id,\n color,\n size: {\n width: widthPt,\n height: heightPt\n },\n units,\n inkEffect,\n ignorePressure,\n tip,\n rasterOp\n };\n if (anchorX !== undefined) {\n brush.anchorX = anchorX;\n }\n if (anchorY !== undefined) {\n brush.anchorY = anchorY;\n }\n if (scaleFactor !== undefined) {\n brush.scaleFactor = scaleFactor;\n }\n if (transparency !== undefined) {\n brush.transparency = transparency;\n }\n if (antiAliased !== undefined) {\n brush.antiAliased = antiAliased;\n }\n if (fitToCurve !== undefined) {\n brush.fitToCurve = fitToCurve;\n }\n return brush;\n}\nfunction parseTraceElement(el, traceIndex) {\n const brushRefRaw = function () {\n var _nc = getAttr(el, 'brushRef');\n return _nc != null ? _nc : '';\n }();\n const contextRefRaw = function () {\n var _nc = getAttr(el, 'contextRef');\n return _nc != null ? _nc : '';\n }();\n const timeOffset = getAttr(el, 'timeOffset');\n const text = elementText(el).trim();\n const decoded = decodeTrace(text);\n let diagnostic;\n // Malformed: non-empty text that produced zero points → diagnostic\n if (text.length > 0 && decoded.points.length === 0) {\n diagnostic = {\n code: DIAG_INVALID_INK_TRACE,\n message: 'malformed or untokenizable ink trace text',\n traceIndex\n };\n }\n const trace = {\n points: decoded.points.map(p => ({\n x: p.x,\n y: p.y\n })),\n brushRef: brushRefRaw.length > 0 ? ensureHash(brushRefRaw.replace(/^#/, '')) : '',\n contextRef: contextRefRaw.length > 0 ? ensureHash(contextRefRaw.replace(/^#/, '')) : DEFAULT_CONTEXT_REF\n };\n // Preserve brushRef as given with hash; empty string means unset\n if (brushRefRaw.length > 0) {\n trace.brushRef = brushRefRaw.startsWith('#') ? brushRefRaw : ensureHash(brushRefRaw);\n }\n if (timeOffset !== undefined) {\n trace.timeOffset = timeOffset;\n }\n return {\n trace,\n node: {\n kind: 'trace',\n traceIndex\n },\n stats: {\n packetCount: decoded.stats.packetCount,\n pointCount: decoded.stats.pointCount,\n channelValueCount: decoded.stats.channelValueCount\n },\n diagnostic\n };\n}\nfunction parseTraceGroup(el, traces, diagnostics, onStats) {\n const children = [];\n for (const child of el.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n if (IGNORE_LOCAL_NAMES.has(child.localName)) {\n // annotationXML / annotation: ignored per §2.1.4 (decision: do not retain)\n continue;\n }\n if (child.localName === 'trace') {\n const { trace, node, stats, diagnostic } = parseTraceElement(child, traces.length);\n traces.push(trace);\n children.push(node);\n onStats(stats);\n if (diagnostic !== undefined) {\n diagnostics.push(diagnostic);\n }\n }\n else if (child.localName === 'traceGroup') {\n const nested = parseTraceGroup(child, traces, diagnostics, onStats);\n if (nested.children.length > 0) {\n children.push(nested);\n }\n }\n }\n return {\n kind: 'group',\n children\n };\n}\nfunction readXmlId(el) {\n const fromNs = getAttr(el, 'id', XML_NAMESPACE);\n if (fromNs !== undefined) {\n return fromNs;\n }\n return getAttr(el, 'id');\n}\nfunction ensureHash(id) {\n return id.startsWith('#') ? id : `#${id}`;\n}\nfunction parseLengthNumber(raw) {\n let s = raw.trim();\n if (s.length === 0) {\n return undefined;\n }\n // GetPointValue: leading `.` → `0.`\n if (s.startsWith('.')) {\n s = `0${s}`;\n }\n const n = Number(s);\n return Number.isFinite(n) ? n : undefined;\n}\nfunction normalizeColor(raw) {\n let s = raw.trim();\n if (s.length === 0) {\n return undefined;\n }\n if (!s.startsWith('#')) {\n s = `#${s}`;\n }\n // Accept #RGB or #RRGGBB\n if (/^#[0-9A-Fa-f]{6}$/.test(s) || /^#[0-9A-Fa-f]{3}$/.test(s)) {\n if (s.length === 4) {\n const r = s.charAt(1);\n const g = s.charAt(2);\n const b = s.charAt(3);\n return `#${r}${r}${g}${g}${b}${b}`.toUpperCase();\n }\n return s.toUpperCase();\n }\n return undefined;\n}\nfunction parseBoolish(raw) {\n const s = raw.trim().toLowerCase();\n return s === '1' || s === 'true';\n}\n","/**\n * {@link OfficeInk} → InkML element tree serializer ([MS-ODRAWXML] §2.1.4).\n *\n * Trace text is always {@link encodeTrace} from points — never stored XML text.\n * Brush property order matches `docs/specs/ink-shared-codec.md` / TASK-9003.\n */\nimport { isOfficeInk } from './ink-model';\nimport { inkEffectColor } from './ink-effects';\nimport { formatUnitValue, pointsToUnit } from './ink-units';\nimport { attr, inkElement, inkmlNamespaceDecl, textNode, xmlIdAttr, } from './ink-xml';\nimport { encodeTrace } from './trace-codec';\nconst DEFAULT_CONTEXT_ID = 'ctx0';\nconst DEFAULT_CONTEXT_REF = '#ctx0';\nconst DEFAULT_INK_SOURCE_ID = 'inkSrc0';\nconst CHANNEL_MIN = '-2.14748E9';\nconst CHANNEL_MAX = '2.14748E9';\nconst CHANNEL_UNITS = 'cm';\n/**\n * Serialize an {@link OfficeInk} DOM to an InkML `ink` root element.\n *\n * Source: [MS-ODRAWXML] §2.1.4; `docs/specs/ink-shared-codec.md` Serializer behavior.\n *\n * @private\n */\nexport function serializeInkXml(ink) {\n if (!isOfficeInk(ink)) {\n throw new TypeError('serializeInkXml: expected OfficeInk from parseInkXml/createInk');\n }\n const children = [];\n const definitionsChildren = [];\n const needsContext = ink.traces.some((t) => t.contextRef === DEFAULT_CONTEXT_REF || t.contextRef === '' || t.contextRef === `#${DEFAULT_CONTEXT_ID}`) || ink.traces.length > 0;\n const contexts = (ink.contexts != null ? ink.contexts : []);\n // Emit each known context; ensure default #ctx0 when referenced/needed\n let hasDefaultContext = false;\n for (const ctx of contexts) {\n definitionsChildren.push(serializeContext(ctx));\n const bare = stripHash(ctx.id);\n if (bare === DEFAULT_CONTEXT_ID) {\n hasDefaultContext = true;\n }\n }\n if (needsContext && !hasDefaultContext) {\n definitionsChildren.push(serializeContext(defaultContext()));\n }\n // Brushes sorted by id (string key order)\n const sortedBrushes = [...ink.brushes].sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n for (const brush of sortedBrushes) {\n definitionsChildren.push(serializeBrush(brush));\n }\n if (definitionsChildren.length > 0) {\n children.push(inkElement('definitions', [], definitionsChildren));\n }\n // Traces / groups\n if (ink.traceTree !== undefined && ink.traceTree.length > 0) {\n for (const node of ink.traceTree) {\n children.push(...serializeTreeNode(node, ink.traces));\n }\n }\n else {\n for (const trace of ink.traces) {\n children.push(serializeTrace(trace));\n }\n }\n return inkElement('ink', [], children, [inkmlNamespaceDecl()]);\n}\nfunction defaultContext() {\n return {\n id: DEFAULT_CONTEXT_REF,\n inkSourceId: DEFAULT_INK_SOURCE_ID,\n channels: [\n {\n name: 'X',\n type: 'integer',\n min: CHANNEL_MIN,\n max: CHANNEL_MAX,\n units: CHANNEL_UNITS,\n },\n {\n name: 'Y',\n type: 'integer',\n min: CHANNEL_MIN,\n max: CHANNEL_MAX,\n units: CHANNEL_UNITS,\n },\n ],\n };\n}\nfunction serializeContext(ctx) {\n const idBare = stripHash(ctx.id);\n const inkSourceId = stripHash((ctx.inkSourceId != null ? ctx.inkSourceId : DEFAULT_INK_SOURCE_ID));\n const channels = ctx.channels.length > 0\n ? ctx.channels\n : defaultContext().channels;\n const channelEls = channels.map((ch) => serializeChannel(ch));\n const traceFormat = inkElement('traceFormat', [], channelEls);\n const inkSource = inkElement('inkSource', [xmlIdAttr(inkSourceId)], [traceFormat]);\n return inkElement('context', [xmlIdAttr(idBare)], [inkSource]);\n}\nfunction serializeChannel(ch) {\n const attrs = [attr('name', ch.name)];\n if (ch.type !== undefined) {\n attrs.push(attr('type', ch.type));\n }\n if (ch.min !== undefined) {\n attrs.push(attr('min', ch.min));\n }\n if (ch.max !== undefined) {\n attrs.push(attr('max', ch.max));\n }\n if (ch.units !== undefined) {\n attrs.push(attr('units', ch.units));\n }\n return inkElement('channel', attrs, []);\n}\nfunction serializeBrush(brush) {\n const idBare = stripHash(brush.id);\n const props = [];\n const units = brush.units.length > 0 ? brush.units : 'cm';\n // Size is stored in points after parse; authoring may use pt units with pt values.\n // ConvertPointsToUnit always treats size as points → target units.\n const widthOut = pointsToUnit(brush.size.width, units);\n const heightOut = pointsToUnit(brush.size.height, units);\n props.push(brushProperty('width', formatUnitValue(widthOut), units), brushProperty('height', formatUnitValue(heightOut), units));\n const color = resolveBrushColor(brush);\n props.push(brushProperty('color', color.startsWith('#') ? color : `#${color}`));\n // Effect-specific series (TASK-9003 / shared-codec)\n // Always emit ignorePressure. Non-none effects emit inkEffects so parse→serialize→parse\n // preserves the effect token (including pencil, which has no color override).\n const effect = brush.inkEffect;\n props.push(brushProperty('ignorePressure', brush.ignorePressure ? '1' : '0'));\n if (effect !== 'pencil' && brush.rasterOp !== undefined && brush.rasterOp.length > 0) {\n props.push(brushProperty('tip', (brush.tip != null ? brush.tip : 'ellipse')));\n props.push(brushProperty('rasterOp', brush.rasterOp));\n }\n if (effect !== 'none') {\n props.push(brushProperty('inkEffects', effectToken(effect)));\n if (effect !== 'pencil') {\n props.push(brushProperty('anchorX', (brush.anchorX != null ? brush.anchorX : '0')));\n props.push(brushProperty('anchorY', (brush.anchorY != null ? brush.anchorY : '0')));\n props.push(brushProperty('scaleFactor', (brush.scaleFactor != null ? brush.scaleFactor : '0.5')));\n }\n }\n return inkElement('brush', [xmlIdAttr(idBare)], props);\n}\nfunction brushProperty(name, value, units) {\n const attrs = [attr('name', name), attr('value', value)];\n if (units !== undefined) {\n attrs.push(attr('units', units));\n }\n return inkElement('brushProperty', attrs, []);\n}\nfunction resolveBrushColor(brush) {\n const effectHex = inkEffectColor(brush.inkEffect);\n if (effectHex !== undefined) {\n return effectHex.toUpperCase();\n }\n return brush.color.toUpperCase();\n}\nfunction effectToken(effect) {\n // Prefer camelCase for roseGold (spec token); others lowercase\n if (effect === 'roseGold') {\n return 'roseGold';\n }\n return effect;\n}\nfunction serializeTreeNode(node, traces) {\n if (node.kind === 'trace') {\n const t = traces[node.traceIndex];\n if (t === undefined) {\n return [];\n }\n return [serializeTrace(t)];\n }\n const kids = [];\n for (const child of node.children) {\n kids.push(...serializeTreeNode(child, traces));\n }\n return [inkElement('traceGroup', [], kids)];\n}\nfunction serializeTrace(trace) {\n const attrs = [];\n const contextRef = trace.contextRef.length > 0 ? ensureHash(trace.contextRef) : DEFAULT_CONTEXT_REF;\n attrs.push(attr('contextRef', contextRef));\n if (trace.brushRef.length > 0) {\n attrs.push(attr('brushRef', ensureHash(trace.brushRef)));\n }\n if (trace.timeOffset !== undefined) {\n attrs.push(attr('timeOffset', trace.timeOffset));\n }\n const text = encodeTrace(trace.points);\n const children = text.length > 0 ? [textNode(text)] : [];\n return inkElement('trace', attrs, children);\n}\nfunction stripHash(id) {\n return id.startsWith('#') ? id.slice(1) : id;\n}\nfunction ensureHash(id) {\n return id.startsWith('#') ? id : `#${id}`;\n}\n","/**\n * Cited Office Math Markup Language (OMML) constants.\n *\n * Sources:\n * - ECMA-376 Part 1 §22.1 (Office Math)\n * - ECMA-376 Part 4 Annex A.8.1 `shared-math.xsd`\n * - ECMA-376 Part 1 WordprocessingML transitional namespace\n * - W3C XML 1.0 `xml:` namespace (xml:space on m:t)\n */\n/**\n * Office Math namespace URI (`m:`).\n *\n * Source: ECMA-376-1 §22.1 /\n * `http://schemas.openxmlformats.org/officeDocument/2006/math`.\n *\n * @public\n */\nexport const MATH_NAMESPACE = 'http://schemas.openxmlformats.org/officeDocument/2006/math';\n/**\n * Preferred math prefix candidates for save-scoped registry.\n * First unused candidate wins: `m`, then `m1`, `m2`, …\n *\n * Source: mathml-spec §1.9 / §9.3.\n *\n * @public\n */\nexport const MATH_PREFIX_FALLBACKS = ['m', 'm1', 'm2', 'm3', 'm4', 'm5'];\n/**\n * WordprocessingML transitional namespace (`w:`).\n *\n * Used when bridging `w:rPr` / run content under `m:r` and `m:ctrlPr`\n * (ECMA-376-4 Annex A.8.1 `CT_R` / `CT_CtrlPr`).\n *\n * Source: ECMA-376-1 —\n * `http://schemas.openxmlformats.org/wordprocessingml/2006/main`.\n *\n * @public\n */\nexport const WML_TRANSITIONAL_NAMESPACE = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';\n/**\n * XML namespace used by `xml:space` on `m:t` (same policy as `w:t`).\n *\n * Source: W3C XML 1.0 — `http://www.w3.org/XML/1998/namespace`.\n *\n * @public\n */\nexport const XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';\n","/**\n * Schema-exact Office Math simple-type unions.\n *\n * Source: ECMA-376 Part 1 §22.1.3 / Part 4 Annex A.8.1 `shared-math.xsd`.\n * Serializer emits only these tokens — never synthesize members.\n */\n/** Members of {@link MathJc}. */\nexport const MATH_JC_VALUES = ['left', 'right', 'center', 'centerGroup'];\n/** Members of {@link MathFractionType}. */\nexport const MATH_FTYPE_VALUES = ['bar', 'skw', 'lin', 'noBar'];\n/** Members of {@link MathShape} — centered|match only. */\nexport const MATH_SHP_VALUES = ['centered', 'match'];\n/** Members of {@link MathLimLoc}. */\nexport const MATH_LIMLOC_VALUES = ['undOvr', 'subSup'];\n/** Members of {@link MathTopBot}. */\nexport const MATH_TOPBOT_VALUES = ['top', 'bot'];\n/** Members of {@link MathBreakBin}. */\nexport const MATH_BREAKBIN_VALUES = ['before', 'after', 'repeat'];\n/** Members of {@link MathBreakBinSub}. */\nexport const MATH_BREAKBINSUB_VALUES = ['--', '-+', '+-'];\n/** Members of {@link MathScript}. */\nexport const MATH_SCRIPT_VALUES = [\n 'roman',\n 'script',\n 'fraktur',\n 'double-struck',\n 'sans-serif',\n 'monospace',\n];\n/** Members of {@link MathStyle}. */\nexport const MATH_STYLE_VALUES = ['p', 'b', 'i', 'bi'];\n/** Members of {@link MathSpacingRule}. */\nexport const MATH_SPACING_RULE_VALUES = [0, 1, 2, 3, 4];\n/** Parse ST_Jc; undefined when not a known token. */\nexport function parseMathJc(value) {\n return (MATH_JC_VALUES.indexOf(value) !== -1) ? value : undefined;\n}\n/** Parse ST_FType. */\nexport function parseMathFractionType(value) {\n return (MATH_FTYPE_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_Shp. */\nexport function parseMathShape(value) {\n return (MATH_SHP_VALUES.indexOf(value) !== -1) ? value : undefined;\n}\n/** Parse ST_LimLoc. */\nexport function parseMathLimLoc(value) {\n return (MATH_LIMLOC_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_TopBot. */\nexport function parseMathTopBot(value) {\n return (MATH_TOPBOT_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_BreakBin. */\nexport function parseMathBreakBin(value) {\n return (MATH_BREAKBIN_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_BreakBinSub. */\nexport function parseMathBreakBinSub(value) {\n return (MATH_BREAKBINSUB_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_Script. */\nexport function parseMathScript(value) {\n return (MATH_SCRIPT_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_Style. */\nexport function parseMathStyle(value) {\n return (MATH_STYLE_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/**\n * ST_Integer2 range −2..2 (argSz).\n *\n * Source: ECMA-376-1 §22.1.3.5.\n */\nexport function isInteger2(value) {\n return Number.isInteger(value) && value >= -2 && value <= 2;\n}\n/**\n * ST_Integer255 range 1..255.\n *\n * Source: ECMA-376-1 §22.1.3.6.\n */\nexport function isInteger255(value) {\n return Number.isInteger(value) && value >= 1 && value <= 255;\n}\n/**\n * ST_UnSignedInteger ≥ 0.\n *\n * Source: ECMA-376-1 §22.1.3.14.\n */\nexport function isUnSignedInteger(value) {\n return Number.isInteger(value) && value >= 0;\n}\n/**\n * ST_SpacingRule 0..4.\n *\n * Source: ECMA-376-1 §22.1.3.11.\n */\nexport function isSpacingRule(value) {\n return Number.isInteger(value) && value >= 0 && value <= 4;\n}\n/** Parse OnOff-style val attribute (`1`/`true`/`on` → true). */\nexport function parseOnOff(value) {\n if (value === undefined) {\n return undefined;\n }\n const v = value.toLowerCase();\n if (v === '1' || v === 'true' || v === 'on') {\n return true;\n }\n if (v === '0' || v === 'false' || v === 'off') {\n return false;\n }\n return undefined;\n}\n/** Emit OnOff as `'1'` / `'0'`. */\nexport function emitOnOff(value) {\n return value ? '1' : '0';\n}\n","/**\n * Typed mathml errors (mathml-spec Errors section).\n *\n * Common-owned; docx-js passes them through untouched.\n */\n/**\n * Schema violation detected on author/serialize of a typed math tree.\n *\n * Source: mathml-spec Errors section —\n * `elementPath` dotted model path (e.g. `'oMath.f.den'`),\n * `constraintKind` one of child-order | enum-value | required-child | value-range.\n *\n * @private\n * Internal error contract between the mathml model, parser, and serializer;\n * not part of the public authoring API.\n */\nexport class MathmlValidationError extends Error {\n constructor(message, elementPath, constraintKind) {\n super(message);\n this.name = 'MathmlValidationError';\n this.elementPath = elementPath;\n this.constraintKind = constraintKind;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Mutation attempted on a preserve-only (degraded) math equation.\n *\n * Source: mathml-spec §8b — malformed load degrades; later mutate throws.\n *\n * @private\n * Internal error contract between the mathml model, parser, and serializer;\n * not part of the public authoring API.\n */\nexport class MathmlReadOnlyError extends Error {\n constructor(message = 'Math equation is preserve-only and cannot be mutated') {\n super(message);\n /**\n * Always `true` — the equation is locked in preserve-only mode and mutations are blocked.\n */\n this.isPreserveOnly = true;\n this.name = 'MathmlReadOnlyError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","/**\n * MathElement base hierarchy for OMML typed DOM.\n *\n * Source: mathml-spec §7; ECMA-376-4 Annex A.8.1.\n */\nimport { MathmlReadOnlyError, MathmlValidationError } from '../errors';\nimport { isInteger2 } from './enums';\n/**\n * Abstract base for every OMML model node.\n *\n * @public\n */\nexport class MathElement {\n constructor() {\n /** When true, mutation is blocked (preserve-only degradation). */\n this._preserveOnly = false;\n }\n /**\n * Whether this node is locked in preserve-only mode (mutations blocked; original OpenXML is re-emitted).\n *\n * @private\n * Framework/parser state used for round-trip fidelity and host dirty tracking.\n */\n get preserveOnly() {\n return this._preserveOnly;\n }\n /**\n * Captured original OpenXML tree when the node is preserve-only or cannot be fully represented.\n *\n * @private\n * Used by the serializer and hosts to round-trip unmodified structure.\n */\n get preservedXml() {\n return this._preservedXml;\n }\n /**\n * Registers an internal mutation callback for change tracking and document synchronization.\n *\n * @private\n * Hosts (for example docx `MathInline`) inject dirty tracking; not part of the authoring API.\n */\n setMutationListener(listener) {\n this._onMutate = listener;\n }\n /**\n * Marks this node preserve-only and stores the original OpenXML for round-trip preservation.\n *\n * @private\n * Used by the OMML parser for structural degradation and by document hosts to bubble a\n * child-level preserve-only lock up to the equation root.\n */\n markPreserveOnly(xml) {\n this._preserveOnly = true;\n this._preservedXml = xml;\n }\n /**\n * Attach preserved XML without locking mutation (UnknownMathElement).\n *\n * @private\n */\n attachPreservedXml(xml) {\n this._preservedXml = xml;\n }\n /** Guard + notify after a successful mutation. */\n notifyMutated() {\n if (this._preserveOnly) {\n throw new MathmlReadOnlyError();\n }\n this._onMutate == null ? void 0 : this._onMutate();\n }\n /** Throw if preserve-only before a mutation begins. */\n assertMutable() {\n if (this._preserveOnly) {\n throw new MathmlReadOnlyError();\n }\n }\n}\n/**\n * Math text leaf (`m:t`) — literal character content inside a math run.\n *\n * Source: ECMA-376-1 §22.1.2.116 `CT_Text` — UTF-8 passthrough, no substitution.\n *\n * @public\n */\nexport class MathText extends MathElement {\n constructor(value = '', xmlSpace) {\n super();\n /**\n * Math element type for this text leaf (`t`).\n */\n this.type = 't';\n this._value = value;\n this._xmlSpace = xmlSpace;\n }\n /**\n * Raw text content of this math text element (full UTF-8, no substitution).\n */\n get value() {\n return this._value;\n }\n set value(next) {\n this.assertMutable();\n this._value = next;\n this.notifyMutated();\n }\n /**\n * Optional `xml:space` on `m:t` (`default` | `preserve`), same policy as Word `w:t`.\n *\n * @private\n * Serialization attribute for whitespace fidelity; prefer setting text via {@link value}.\n */\n get xmlSpace() {\n return this._xmlSpace;\n }\n set xmlSpace(next) {\n this.assertMutable();\n this._xmlSpace = next;\n this.notifyMutated();\n }\n}\n/**\n * Argument container that holds ordered math elements inside a larger structure.\n *\n * @public\n */\nexport class MathArgument extends MathElement {\n constructor(properties = {}, item = [], ctrlPr) {\n super();\n /**\n * Discriminator for this math argument container.\n *\n * @public\n */\n this.type = 'arg';\n if (properties.argSz !== undefined && !isInteger2(properties.argSz)) {\n throw new MathmlValidationError(`argSz must be an integer in −2..2 (ST_Integer2), got ${String(properties.argSz)}`, 'arg.argPr.argSz', 'value-range');\n }\n this._properties = Object.freeze(Object.assign({}, properties));\n this._item = [...item];\n this._ctrlPr = ctrlPr;\n }\n /**\n * Gets or sets argument properties such as script size.\n *\n * @throws MathmlValidationError when script size is outside the allowed integer range.\n *\n * @public\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n if (next.argSz !== undefined && !isInteger2(next.argSz)) {\n throw new MathmlValidationError(`argSz must be an integer in −2..2 (ST_Integer2), got ${String(next.argSz)}`, 'arg.argPr.argSz', 'value-range');\n }\n this._properties = Object.freeze(Object.assign({}, next));\n this.notifyMutated();\n }\n /**\n * Gets or sets the ordered math elements inside this argument.\n *\n * @public\n */\n get item() {\n return this._item;\n }\n set item(next) {\n this.assertMutable();\n this._item = [...next];\n this.notifyMutated();\n }\n /**\n * Opaque control properties (`m:ctrlPr`) carried on the argument, when present.\n *\n * @private\n * Wire-fidelity carrier for WML run properties; not part of the public authoring API.\n */\n get ctrlPr() {\n return this._ctrlPr;\n }\n /**\n * @private\n */\n set ctrlPr(next) {\n this.assertMutable();\n this._ctrlPr = next;\n this.notifyMutated();\n }\n /**\n * Appends one math element at the end of {@link MathArgument.item}.\n */\n appendItem(child) {\n this.assertMutable();\n this._item.push(child);\n this.notifyMutated();\n return child;\n }\n}\n/**\n * Escape hatch for unrecognized `m:*` elements.\n *\n * Source: mathml-spec §8.5 — re-serializes verbatim.\n *\n * @public\n */\nexport class UnknownMathElement extends MathElement {\n constructor(localName, xml) {\n super();\n this.type = 'unknown';\n this.localName = localName;\n this.attachPreservedXml(xml);\n }\n}\n/**\n * Convenience: build MathArgument from a list of elements.\n *\n * @private\n */\nexport function mathArg(...elements) {\n return new MathArgument({}, elements);\n}\n","/**\n * Math root containers: `m:oMathPara`, `m:oMath`.\n *\n * Source: ECMA-376-4 Annex A.8.1 `CT_OMathPara`, `CT_OMath`.\n */\nimport { MathElement } from './math-element';\nimport { MathmlValidationError } from '../errors';\n/**\n * Display-math paragraph (`m:oMathPara`) — a block of one or more office-math equations.\n *\n * Child sequence: `oMathParaPr?`, `oMath` (1..∞).\n *\n * @public\n */\nexport class MathParagraph extends MathElement {\n constructor(properties = {}, equations = []) {\n super();\n /**\n * Math element type for this root (`oMathPara`).\n */\n this.type = 'oMathPara';\n this._properties = Object.freeze(Object.assign({}, properties));\n this._equations = [...equations];\n }\n /**\n * Paragraph-level math configuration (`m:oMathParaPr`), such as justification (`m:jc`).\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = Object.freeze(Object.assign({}, next));\n this.notifyMutated();\n }\n /**\n * Ordered office-math equations in this paragraph (`m:oMath`), each a {@link MathOMath}.\n * At least one equation is required on serialize.\n */\n get equations() {\n return this._equations;\n }\n /**\n * Replaces the ordered `m:oMath` equations in this paragraph.\n */\n setEquations(next) {\n this.assertMutable();\n this._equations = [...next];\n this.notifyMutated();\n }\n /**\n * Appends one office-math equation (`m:oMath`) at the end of this paragraph.\n */\n appendEquation(equation) {\n this.assertMutable();\n this._equations.push(equation);\n this.notifyMutated();\n }\n /**\n * Validates that this paragraph has at least one `m:oMath` before serialization.\n *\n * @private\n * Called by the OMML serializer; not part of the public authoring API.\n */\n assertSerializable(path = 'oMathPara') {\n if (this._equations.length < 1) {\n throw new MathmlValidationError('m:oMathPara requires at least one m:oMath (CT_OMathPara)', path, 'required-child');\n }\n }\n}\n/**\n * Inline office-math root (`m:oMath`) — one equation body of math elements.\n *\n * Child sequence: `EG_OMathElements` (0..∞).\n *\n * @public\n */\nexport class MathOMath extends MathElement {\n constructor(children = []) {\n super();\n /**\n * Math element type for this root (`oMath`).\n */\n this.type = 'oMath';\n this._children = [...children];\n }\n /**\n * Ordered math children of this equation (`EG_OMathElements`).\n */\n get children() {\n return this._children;\n }\n /**\n * Replaces the ordered math children of this equation.\n */\n setChildren(next) {\n this.assertMutable();\n this._children = [...next];\n this.notifyMutated();\n }\n /**\n * Appends one math element at the end of this equation.\n */\n appendChild(child) {\n this.assertMutable();\n this._children.push(child);\n this.notifyMutated();\n }\n}\n","/**\n * Typed OMML control classes (EG_OMathMathElements).\n *\n * Source: ECMA-376-4 Annex A.8.1; mathml-spec §7 / §11.2.\n * Constructors take props bag + fixed-sequence children (no boolean traps).\n */\nimport { MathmlValidationError } from '../errors';\nimport { MathArgument, MathElement, MathText } from './math-element';\n// ─── Helpers ─────────────────────────────────────────────────────────────────\nfunction freezeProps(props) {\n return Object.freeze(Object.assign({}, props));\n}\nfunction asArg(value) {\n return value instanceof MathArgument ? value : new MathArgument({}, value);\n}\nfunction requireArgs(path, count, args) {\n for (let i = 0; i < count; i++) {\n if (args[i] === undefined) {\n throw new MathmlValidationError(`Missing required argument at position ${String(i)}`, path, 'required-child');\n }\n }\n}\n// ─── Controls ────────────────────────────────────────────────────────────────\n/**\n * Accent math structure — a base expression with a combining accent character.\n *\n * @public\n */\nexport class MathAccent extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Discriminator for this math control kind.\n *\n * @public\n */\n this.type = 'acc';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Gets or sets accent configuration such as the accent character.\n *\n * @public\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Gets or sets the base mathematical expression under the accent.\n *\n * @public\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Over/under bar structure (`m:bar`) — a base expression with a bar accent.\n *\n * Child sequence: `barPr?`, `e`.\n *\n * @public\n */\nexport class MathBar extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Math element type for this control (`bar`).\n */\n this.type = 'bar';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Bar configuration (`m:barPr`), such as bar position (`pos`).\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression under the bar (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Layout box structure (`m:box`) — groups a base for operator emulation and breaks.\n *\n * Child sequence: `boxPr?`, `e`.\n *\n * @public\n */\nexport class MathBox extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Math element type for this control (`box`).\n */\n this.type = 'box';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Box configuration (`m:boxPr`), such as operator emulation and break flags.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression inside the box (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Border box structure (`m:borderBox`) — a base expression with optional borders and strikes.\n *\n * Child sequence: `borderBoxPr?`, `e`.\n *\n * @public\n */\nexport class MathBorderBox extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Math element type for this control (`borderBox`).\n */\n this.type = 'borderBox';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Border-box configuration (`m:borderBoxPr`), such as hidden sides and strike flags.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression inside the border box (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Delimiter structure (`m:d`) — one or more arguments between begin/end characters.\n *\n * Child sequence: `dPr?`, `e` (1..∞).\n *\n * @public\n */\nexport class MathDelimiter extends MathElement {\n constructor(properties = {}, elements = []) {\n super();\n /**\n * Math element type for this control (`d`).\n */\n this.type = 'd';\n this._properties = freezeProps(properties);\n this._elements = elements.map(e => asArg(e));\n }\n /**\n * Delimiter configuration (`m:dPr`), such as begin/end characters and grow.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Ordered delimiter arguments (`m:e`), each an {@link MathArgument}.\n */\n get elements() {\n return this._elements;\n }\n /**\n * Replaces the ordered delimiter arguments (`m:e`) in document order.\n */\n set elements(next) {\n this.assertMutable();\n this._elements = [...next];\n this.notifyMutated();\n }\n /**\n * Validates that this delimiter has at least one argument before serialization.\n *\n * @private\n * Called by the OMML serializer; not part of the public authoring API.\n */\n assertSerializable(path = 'd') {\n if (this._elements.length < 1) {\n throw new MathmlValidationError('m:d requires at least one m:e (CT_D)', path, 'required-child');\n }\n }\n}\n/**\n * Equation array structure (`m:eqArr`) — stacked equation rows as arguments.\n *\n * Child sequence: `eqArrPr?`, `e` (1..∞).\n *\n * @public\n */\nexport class MathEquationArray extends MathElement {\n constructor(properties = {}, elements = []) {\n super();\n /**\n * Math element type for this control (`eqArr`).\n */\n this.type = 'eqArr';\n this._properties = freezeProps(properties);\n this._elements = elements.map(e => asArg(e));\n }\n /**\n * Equation-array configuration (`m:eqArrPr`), such as base justification and distribution.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Ordered equation-array rows (`m:e`), each an {@link MathArgument}.\n */\n get elements() {\n return this._elements;\n }\n /**\n * Replaces the ordered equation-array rows (`m:e`) in document order.\n */\n set elements(next) {\n this.assertMutable();\n this._elements = [...next];\n this.notifyMutated();\n }\n /**\n * Validates that this equation array has at least one row before serialization.\n *\n * @private\n * Called by the OMML serializer; not part of the public authoring API.\n */\n assertSerializable(path = 'eqArr') {\n if (this._elements.length < 1) {\n throw new MathmlValidationError('m:eqArr requires at least one m:e (CT_EqArr)', path, 'required-child');\n }\n }\n}\n/**\n * Fraction math structure — numerator over denominator with optional fraction style.\n *\n * @public\n */\nexport class MathFraction extends MathElement {\n constructor(properties = {}, numerator = [], denominator = []) {\n super();\n /**\n * Discriminator for this math control kind.\n *\n * @public\n */\n this.type = 'f';\n this._properties = freezeProps(properties);\n this._numerator = asArg(numerator);\n this._denominator = asArg(denominator);\n }\n /**\n * Gets or sets fraction configuration such as bar, skewed, linear, or no-bar style.\n *\n * @public\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Gets or sets the numerator of the fraction.\n *\n * @public\n */\n get numerator() {\n return this._numerator;\n }\n set numerator(next) {\n this.assertMutable();\n this._numerator = next;\n this.notifyMutated();\n }\n /**\n * Gets or sets the denominator of the fraction.\n *\n * @public\n */\n get denominator() {\n return this._denominator;\n }\n set denominator(next) {\n this.assertMutable();\n this._denominator = next;\n this.notifyMutated();\n }\n}\n/**\n * Function-apply structure (`m:func`) — function name applied to a base expression.\n *\n * Child sequence: `funcPr?`, `fName`, `e`.\n *\n * @public\n */\nexport class MathFunction extends MathElement {\n constructor(properties = {}, name = [], base = []) {\n super();\n /**\n * Math element type for this control (`func`).\n */\n this.type = 'func';\n this._properties = freezeProps(properties);\n this._name = asArg(name);\n this._base = asArg(base);\n }\n /**\n * Function-apply configuration (`m:funcPr`).\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Function name argument (`m:fName`), for example `sin` or `log`.\n */\n get name() {\n return this._name;\n }\n set name(next) {\n this.assertMutable();\n this._name = next;\n this.notifyMutated();\n }\n /**\n * Base mathematical expression the function applies to (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Group-character structure (`m:groupChr`) — a base with a grouping character above or below.\n *\n * Child sequence: `groupChrPr?`, `e`.\n *\n * @public\n */\nexport class MathGroupCharacter extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Math element type for this control (`groupChr`).\n */\n this.type = 'groupChr';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Group-character configuration (`m:groupChrPr`), such as character and position.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression under the group character (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Lower-limit structure (`m:limLow`) — a base expression with a limit below it.\n *\n * Child sequence: `limLowPr?`, `e`, `lim`.\n *\n * @public\n */\nexport class MathLimitLower extends MathElement {\n constructor(properties = {}, base = [], lim = []) {\n super();\n /**\n * Math element type for this control (`limLow`).\n */\n this.type = 'limLow';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n this._lim = asArg(lim);\n }\n /**\n * Lower-limit configuration (`m:limLowPr`).\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression above the lower limit (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n /**\n * Lower-limit argument drawn beneath the base (`m:lim`).\n */\n get lim() {\n return this._lim;\n }\n set lim(next) {\n this.assertMutable();\n this._lim = next;\n this.notifyMutated();\n }\n}\n/**\n * Upper-limit structure (`m:limUpp`) — a base expression with a limit above it.\n *\n * Child sequence: `limUppPr?`, `e`, `lim`.\n *\n * @public\n */\nexport class MathLimitUpper extends MathElement {\n constructor(properties = {}, base = [], lim = []) {\n super();\n /**\n * Math element type for this control (`limUpp`).\n */\n this.type = 'limUpp';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n this._lim = asArg(lim);\n }\n /**\n * Upper-limit configuration (`m:limUppPr`).\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression below the upper limit (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n /**\n * Upper-limit argument drawn above the base (`m:lim`).\n */\n get lim() {\n return this._lim;\n }\n set lim(next) {\n this.assertMutable();\n this._lim = next;\n this.notifyMutated();\n }\n}\n/**\n * Matrix row (`m:mr`) — one row of matrix cell arguments.\n *\n * Child sequence: `e` (1..∞).\n *\n * @public\n */\nexport class MathMatrixRow extends MathElement {\n constructor(elements = []) {\n super();\n /**\n * Math element type for this control (`mr`).\n */\n this.type = 'mr';\n this._elements = elements.map(e => asArg(e));\n }\n /**\n * Ordered cell arguments in this matrix row (`m:e`), each an {@link MathArgument}.\n */\n get elements() {\n return this._elements;\n }\n /**\n * Replaces the ordered cell arguments (`m:e`) in this matrix row.\n */\n setElements(next) {\n this.assertMutable();\n this._elements = [...next];\n this.notifyMutated();\n }\n /**\n * Validates that this matrix row has at least one cell before serialization.\n *\n * @private\n * Called by the OMML serializer; not part of the public authoring API.\n */\n assertSerializable(path = 'mr') {\n if (this._elements.length < 1) {\n throw new MathmlValidationError('m:mr requires at least one m:e (CT_MR)', path, 'required-child');\n }\n }\n}\n/**\n * Matrix structure (`m:m`) — a grid of matrix rows.\n *\n * Child sequence: `mPr?`, `mr` (1..∞).\n *\n * @public\n */\nexport class MathMatrix extends MathElement {\n constructor(properties = {}, rows = []) {\n super();\n /**\n * Math element type for this control (`m`).\n */\n this.type = 'm';\n this._properties = freezeProps(properties);\n this._rows = [...rows];\n }\n /**\n * Matrix configuration (`m:mPr`), such as base justification and placeholder visibility.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Ordered matrix rows (`m:mr`), each a {@link MathMatrixRow}.\n */\n get rows() {\n return this._rows;\n }\n /**\n * Replaces the ordered matrix rows (`m:mr`) in document order.\n */\n setRows(next) {\n this.assertMutable();\n this._rows = [...next];\n this.notifyMutated();\n }\n /**\n * Validates that this matrix has at least one row (and each row is valid) before serialization.\n *\n * @private\n * Called by the OMML serializer; not part of the public authoring API.\n */\n assertSerializable(path = 'm') {\n if (this._rows.length < 1) {\n throw new MathmlValidationError('m:m requires at least one m:mr (CT_M)', path, 'required-child');\n }\n this._rows.forEach((row, i) => row.assertSerializable(`${path}.mr[${String(i)}]`));\n }\n}\n/**\n * N-ary operator structure (`m:nary`) — integral, sum, product, and similar operators.\n *\n * Child sequence: `naryPr?`, `sub`, `sup`, `e`.\n *\n * @public\n */\nexport class MathNaryOperator extends MathElement {\n constructor(properties = {}, sub = [], sup = [], base = []) {\n super();\n /**\n * Math element type for this control (`nary`).\n */\n this.type = 'nary';\n this._properties = freezeProps(properties);\n this._sub = asArg(sub);\n this._sup = asArg(sup);\n this._base = asArg(base);\n }\n /**\n * N-ary operator configuration (`m:naryPr`), such as operator character, limit location, and hide flags.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Lower (subscript) limit of the n-ary operator (`m:sub`).\n */\n get subscript() {\n return this._sub;\n }\n set subscript(next) {\n this.assertMutable();\n this._sub = next;\n this.notifyMutated();\n }\n /**\n * Upper (superscript) limit of the n-ary operator (`m:sup`).\n */\n get superscript() {\n return this._sup;\n }\n set superscript(next) {\n this.assertMutable();\n this._sup = next;\n this.notifyMutated();\n }\n /**\n * Base mathematical expression the n-ary operator applies to (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Phantom structure (`m:phant`) — layout spacing from content that may be hidden.\n *\n * Child sequence: `phantPr?`, `e`.\n *\n * @public\n */\nexport class MathPhantom extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Math element type for this control (`phant`).\n */\n this.type = 'phant';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Phantom configuration (`m:phantPr`), such as show and zero-width/ascender/descender flags.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression used for phantom layout (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Radical structure (`m:rad`) — square root or nth-root with optional degree.\n *\n * Child sequence: `radPr?`, `deg`, `e`.\n *\n * @public\n */\nexport class MathRadical extends MathElement {\n constructor(properties = {}, deg = [], base = []) {\n super();\n /**\n * Math element type for this control (`rad`).\n */\n this.type = 'rad';\n this._properties = freezeProps(properties);\n this._deg = asArg(deg);\n this._base = asArg(base);\n }\n /**\n * Radical configuration (`m:radPr`), such as whether the degree is hidden.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Degree argument of the radical (`m:deg`), for example the index of an nth root.\n */\n get deg() {\n return this._deg;\n }\n set deg(next) {\n this.assertMutable();\n this._deg = next;\n this.notifyMutated();\n }\n /**\n * Radicand — the expression under the radical sign (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Pre-sub-superscript structure (`m:sPre`) — scripts placed before the base.\n *\n * Child sequence: `sPrePr?`, `sub`, `sup`, `e`.\n *\n * @public\n */\nexport class MathPreSubSuperscript extends MathElement {\n constructor(properties = {}, sub = [], sup = [], base = []) {\n super();\n /**\n * Math element type for this control (`sPre`).\n */\n this.type = 'sPre';\n this._properties = freezeProps(properties);\n this._sub = asArg(sub);\n this._sup = asArg(sup);\n this._base = asArg(base);\n }\n /**\n * Pre-script configuration (`m:sPrePr`), such as script alignment.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Subscript argument placed before the base (`m:sub`).\n */\n get sub() {\n return this._sub;\n }\n set sub(next) {\n this.assertMutable();\n this._sub = next;\n this.notifyMutated();\n }\n /**\n * Superscript argument placed before the base (`m:sup`).\n */\n get sup() {\n return this._sup;\n }\n set sup(next) {\n this.assertMutable();\n this._sup = next;\n this.notifyMutated();\n }\n /**\n * Base mathematical expression after the pre-scripts (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Subscript structure (`m:sSub`) — a base with a subscript.\n *\n * Child sequence: `sSubPr?`, `e`, `sub`.\n *\n * @public\n */\nexport class MathSubscript extends MathElement {\n constructor(properties = {}, base = [], sub = []) {\n super();\n /**\n * Math element type for this control (`sSub`).\n */\n this.type = 'sSub';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n this._sub = asArg(sub);\n }\n /**\n * Subscript configuration (`m:sSubPr`), such as script alignment.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression carrying the subscript (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n /**\n * Subscript argument (`m:sub`).\n */\n get subscript() {\n return this._sub;\n }\n set subscript(next) {\n this.assertMutable();\n this._sub = next;\n this.notifyMutated();\n }\n}\n/**\n * Sub-superscript structure (`m:sSubSup`) — a base with both subscript and superscript.\n *\n * Child sequence: `sSubSupPr?`, `e`, `sub`, `sup`.\n *\n * @public\n */\nexport class MathSubSuperscript extends MathElement {\n constructor(properties = {}, base = [], sub = [], sup = []) {\n super();\n /**\n * Math element type for this control (`sSubSup`).\n */\n this.type = 'sSubSup';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n this._sub = asArg(sub);\n this._sup = asArg(sup);\n }\n /**\n * Sub-superscript configuration (`m:sSubSupPr`), such as script alignment.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression carrying both scripts (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n /**\n * Subscript argument (`m:sub`).\n */\n get subscript() {\n return this._sub;\n }\n set subscript(next) {\n this.assertMutable();\n this._sub = next;\n this.notifyMutated();\n }\n /**\n * Superscript argument (`m:sup`).\n */\n get superscript() {\n return this._sup;\n }\n set superscript(next) {\n this.assertMutable();\n this._sup = next;\n this.notifyMutated();\n }\n}\n/**\n * Superscript structure (`m:sSup`) — a base with a superscript.\n *\n * Child sequence: `sSupPr?`, `e`, `sup`.\n *\n * @public\n */\nexport class MathSuperscript extends MathElement {\n constructor(properties = {}, base = [], sup = []) {\n super();\n /**\n * Math element type for this control (`sSup`).\n */\n this.type = 'sSup';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n this._sup = asArg(sup);\n }\n /**\n * Superscript configuration (`m:sSupPr`), such as script alignment.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression carrying the superscript (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n /**\n * Superscript argument (`m:sup`).\n */\n get superscript() {\n return this._sup;\n }\n set superscript(next) {\n this.assertMutable();\n this._sup = next;\n this.notifyMutated();\n }\n}\n/**\n * Math run (`m:r`) — text and optional opaque WML run content inside an equation.\n *\n * Child sequence: `rPr?`, optional `w:rPr`, then (`m:t` | WML run content)*.\n * The constructor accepts a string (single {@link MathText}) or a children list.\n *\n * @public\n */\nexport class MathRun extends MathElement {\n constructor(textOrChildren = [], properties = {}, wRPr, opaqueChildren = []) {\n super();\n /**\n * Math element type for this control (`r`).\n */\n this.type = 'r';\n this._properties = freezeProps(properties);\n this._wRPr = wRPr;\n this._opaqueChildren = [...opaqueChildren];\n if (typeof textOrChildren === 'string') {\n this._children = [new MathText(textOrChildren)];\n }\n else {\n this._children = [...textOrChildren];\n }\n }\n /**\n * Math run configuration (`m:rPr`), such as literal/normal flags, script, and style.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Optional WordprocessingML run properties (`w:rPr`) nested under this math run.\n *\n * @private\n * Opaque WML carrier for round-trip; not part of the public MathML authoring API.\n */\n get wRPr() {\n return this._wRPr;\n }\n /**\n * @private\n *\n */\n set wRPr(next) {\n this.assertMutable();\n this._wRPr = next;\n this.notifyMutated();\n }\n /**\n * Ordered math children of this run (typically {@link MathText} nodes).\n */\n get children() {\n return this._children;\n }\n /**\n * Opaque non-math WML run-content siblings preserved in order with math texts.\n *\n * @private\n * Used by parse/serialize for round-trip fidelity; not part of the public authoring API.\n */\n get opaqueChildren() {\n return this._opaqueChildren;\n }\n /**\n * Replaces the ordered math children of this run.\n */\n setChildren(next) {\n this.assertMutable();\n this._children = [...next];\n this.notifyMutated();\n }\n /**\n * Concatenated text of all {@link MathText} children (full UTF-8 passthrough).\n * Assigning a value replaces children with a single {@link MathText}.\n */\n get text() {\n return this._children.filter((c) => c.type === 't').map(t => t.value).join('');\n }\n set text(next) {\n this.assertMutable();\n this._children = [new MathText(next)];\n this.notifyMutated();\n }\n}\n// Suppress unused helper warning while keeping for serializer validation hooks.\nvoid requireArgs;\n","/**\n * Local structural OpenXml element-tree contract for mathml parse/serialize.\n *\n * office-common has no shared `src/core/xml` yet (TASK-9002/9003). This\n * mirrors ej2-docx `src/core/xml/model.ts` so TASK-9011 can pass the same\n * tree shape across the boundary. Unify when core XML lands.\n *\n * These types are part of the public `@syncfusion/ej2-office-common/mathml` surface\n * (parse/serialize boundary). Keep them public under stripInternal builds —\n * never tag this module as internal.\n */\n/** Create an immutable element node. */\nexport function createElement(namespaceUri, localName, prefix, options) {\n return { kind: 'element',\n namespaceUri,\n localName,\n prefix,\n attributes: function () {\n var _nc = options == null ? void 0 : options.attributes;\n return _nc != null ? _nc : [];\n }(),\n namespaceDeclarations: function () {\n var _nc = options == null ? void 0 : options.namespaceDeclarations;\n return _nc != null ? _nc : [];\n }(),\n children: function () {\n var _nc = options == null ? void 0 : options.children;\n return _nc != null ? _nc : [];\n }()\n };\n}\n/** Create a text node. */\nexport function createText(value) {\n return {\n kind: 'text',\n value\n };\n}\n/** Filter element children only. */\nexport function childElements(element) {\n return element.children.filter((c) => c.kind === 'element');\n}\n/** Read the first matching attribute value by local name (any namespace). */\nexport function attrValue(element, localName) {\n return function () {\n var _om = element.attributes.find(a => a.localName === localName);\n return _om == null ? void 0 : _om.value;\n }();\n}\n/** Read attribute value restricted to a namespace URI. */\nexport function attrValueNs(element, namespaceUri, localName) {\n return function () {\n var _om = element.attributes.find(a => a.namespaceUri === namespaceUri && a.localName === localName);\n return _om == null ? void 0 : _om.value;\n }();\n}\n/** Concatenate direct text-node children. */\nexport function textContent(element) {\n let out = '';\n for (const child of element.children) {\n if (child.kind === 'text') {\n out += child.value;\n }\n }\n return out;\n}\n","/**\n * Tolerant OMML element-tree → typed Math* DOM parser.\n *\n * Source: mathml-spec §8; ECMA-376-4 Annex A.8.1.\n * Never throws on load. Unknown m:* → UnknownMathElement.\n * Malformed required structure → markPreserveOnly + optional diagnostic.\n */\nimport { MATH_NAMESPACE, WML_TRANSITIONAL_NAMESPACE, XML_NAMESPACE } from '../constants';\nimport { attrValue, attrValueNs, childElements, textContent } from '../openxml';\nimport { parseMathFractionType, parseMathJc, parseMathLimLoc, parseMathScript, parseMathShape, parseMathStyle, parseMathTopBot, parseOnOff, isInteger2 } from '../model/enums';\nimport { MathArgument, MathText, UnknownMathElement } from '../model/math-element';\nimport { MathOMath, MathParagraph } from '../model/roots';\nimport { MathAccent, MathBar, MathBorderBox, MathBox, MathDelimiter, MathEquationArray, MathFraction, MathFunction, MathGroupCharacter, MathLimitLower, MathLimitUpper, MathMatrix, MathMatrixRow, MathNaryOperator, MathPhantom, MathPreSubSuperscript, MathRadical, MathRun, MathSubscript, MathSubSuperscript, MathSuperscript } from '../model/controls';\nfunction isMathNs(el) {\n return el.namespaceUri === MATH_NAMESPACE;\n}\nfunction findChild(parent, localName) {\n return childElements(parent).find(c => isMathNs(c) && c.localName === localName);\n}\nfunction findChildren(parent, localName) {\n return childElements(parent).filter(c => isMathNs(c) && c.localName === localName);\n}\nfunction readVal(el) {\n if (!el) {\n return undefined;\n }\n return attrValue(el, 'val');\n}\nfunction readOnOffChild(pr, localName) {\n if (!pr) {\n return undefined;\n }\n const child = findChild(pr, localName);\n if (!child) {\n return undefined;\n }\n // Presence with no val → true (OOXML OnOff default when empty element present).\n const v = attrValue(child, 'val');\n if (v === undefined) {\n return true;\n }\n return parseOnOff(v);\n}\nfunction readStringChild(pr, localName) {\n if (!pr) {\n return undefined;\n }\n return readVal(findChild(pr, localName));\n}\nfunction parseCtrlPr(pr) {\n if (!pr) {\n return undefined;\n }\n return findChild(pr, 'ctrlPr');\n}\nfunction degrade(xml, path, message, options, fallback) {\n (function () {\n var _oc = options == null ? void 0 : options.onDiagnostic;\n return _oc == null ? void 0 : _oc({\n path,\n message,\n localName: xml.localName\n });\n })();\n fallback.markPreserveOnly(xml);\n return fallback;\n}\nfunction parseArgPr(argPr) {\n if (!argPr) {\n return {};\n }\n const argSzEl = findChild(argPr, 'argSz');\n const raw = readVal(argSzEl);\n if (raw === undefined) {\n return {};\n }\n const n = Number(raw);\n if (!Number.isFinite(n) || !isInteger2(n)) {\n return {};\n }\n return {\n argSz: n\n };\n}\n/**\n * Parse `CT_OMathArg` (`m:e`, `m:num`, `m:den`, `m:sub`, …).\n */\nfunction parseArgument(el, options) {\n if (!el) {\n return new MathArgument();\n }\n const argPr = findChild(el, 'argPr');\n const props = parseArgPr(argPr);\n const ctrlPr = findChild(el, 'ctrlPr');\n const children = [];\n for (const child of childElements(el)) {\n if (!isMathNs(child)) {\n continue;\n }\n if (child.localName === 'argPr' || child.localName === 'ctrlPr') {\n continue;\n }\n children.push(parseOne(child, options));\n }\n return new MathArgument(props, children, ctrlPr);\n}\nfunction parseManyArgs(parent, localName, options) {\n return findChildren(parent, localName).map(c => parseArgument(c, options));\n}\n// ─── Property bag parsers ────────────────────────────────────────────────────\n// Bind optionals to locals before spreads so exactOptionalPropertyTypes never\n// sees `T | undefined` under a present key.\nfunction parseAccentPr(pr) {\n const chr = readStringChild(pr, 'chr');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (chr !== undefined ? {\n chr\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseBarPr(pr) {\n const posRaw = readStringChild(pr, 'pos');\n const pos = posRaw !== undefined ? parseMathTopBot(posRaw) : undefined;\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (pos !== undefined ? {\n pos\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseBoxPr(pr) {\n const isOperatorEmulated = readOnOffChild(pr, 'opEmu');\n const isNoBreak = readOnOffChild(pr, 'noBreak');\n const isDifferential = readOnOffChild(pr, 'diff');\n const isAligned = readOnOffChild(pr, 'aln');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (isOperatorEmulated !== undefined ? {\n isOperatorEmulated\n } : {}), (isNoBreak !== undefined ? {\n isNoBreak\n } : {}), (isDifferential !== undefined ? {\n isDifferential\n } : {}), (isAligned !== undefined ? {\n isAligned\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\n/** OMML local name → public boolean property on `MathBorderBoxProperties`. */\nconst BORDER_BOX_ONOFF = [['hideTop', 'isTopHidden'], ['hideBot', 'isBottomHidden'], ['hideLeft', 'isLeftHidden'], ['hideRight', 'isRightHidden'], ['strikeH', 'hasHorizontalStrike'], ['strikeV', 'hasVerticalStrike'], ['strikeBLTR', 'hasBottomLeftToTopRightStrike'], ['strikeTLBR', 'hasTopLeftToBottomRightStrike']];\nfunction parseBorderBoxPr(pr) {\n const out = {};\n for (const [xmlName, apiName] of BORDER_BOX_ONOFF) {\n const v = readOnOffChild(pr, xmlName);\n if (v !== undefined) {\n out[apiName] = v;\n }\n }\n const ctrl = parseCtrlPr(pr);\n if (ctrl !== undefined) {\n out.ctrlPr = ctrl;\n }\n return out;\n}\nfunction parseDelimiterPr(pr) {\n const begChr = readStringChild(pr, 'begChr');\n const sepChr = readStringChild(pr, 'sepChr');\n const endChr = readStringChild(pr, 'endChr');\n const canGrow = readOnOffChild(pr, 'grow');\n const shpRaw = readStringChild(pr, 'shp');\n const shp = shpRaw !== undefined ? parseMathShape(shpRaw) : undefined;\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (begChr !== undefined ? {\n begChr\n } : {}), (sepChr !== undefined ? {\n sepChr\n } : {}), (endChr !== undefined ? {\n endChr\n } : {}), (canGrow !== undefined ? {\n canGrow\n } : {}), (shp !== undefined ? {\n shp\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseEqArrPr(pr) {\n const baseJc = readStringChild(pr, 'baseJc');\n const hasMaxDistance = readOnOffChild(pr, 'maxDist');\n const hasObjectDistance = readOnOffChild(pr, 'objDist');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (baseJc !== undefined ? {\n baseJc\n } : {}), (hasMaxDistance !== undefined ? {\n hasMaxDistance\n } : {}), (hasObjectDistance !== undefined ? {\n hasObjectDistance\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseFractionPr(pr) {\n const typeRaw = readStringChild(pr, 'type');\n const type = typeRaw !== undefined ? parseMathFractionType(typeRaw) : undefined;\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (type !== undefined ? {\n type\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseFunctionPr(pr) {\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseGroupChrPr(pr) {\n const chr = readStringChild(pr, 'chr');\n const posRaw = readStringChild(pr, 'pos');\n const pos = posRaw !== undefined ? parseMathTopBot(posRaw) : undefined;\n const vertRaw = readStringChild(pr, 'vertJc');\n const vertJc = vertRaw !== undefined ? parseMathTopBot(vertRaw) : undefined;\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (chr !== undefined ? {\n chr\n } : {}), (pos !== undefined ? {\n pos\n } : {}), (vertJc !== undefined ? {\n vertJc\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseLimitPr(pr) {\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseMatrixPr(pr) {\n const baseJc = readStringChild(pr, 'baseJc');\n const isPlaceholderHidden = readOnOffChild(pr, 'plcHide');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (baseJc !== undefined ? {\n baseJc\n } : {}), (isPlaceholderHidden !== undefined ? {\n isPlaceholderHidden\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseNaryPr(pr) {\n const chr = readStringChild(pr, 'chr');\n const limRaw = readStringChild(pr, 'limLoc');\n const limLoc = limRaw !== undefined ? parseMathLimLoc(limRaw) : undefined;\n const canGrow = readOnOffChild(pr, 'grow');\n const isSubscriptHidden = readOnOffChild(pr, 'subHide');\n const isSuperscriptHidden = readOnOffChild(pr, 'supHide');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (chr !== undefined ? {\n chr\n } : {}), (limLoc !== undefined ? {\n limLoc\n } : {}), (canGrow !== undefined ? {\n canGrow\n } : {}), (isSubscriptHidden !== undefined ? {\n isSubscriptHidden\n } : {}), (isSuperscriptHidden !== undefined ? {\n isSuperscriptHidden\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parsePhantPr(pr) {\n const isShown = readOnOffChild(pr, 'show');\n const isZeroWidth = readOnOffChild(pr, 'zeroWid');\n const isZeroAscender = readOnOffChild(pr, 'zeroAsc');\n const isZeroDescender = readOnOffChild(pr, 'zeroDesc');\n const isTransparent = readOnOffChild(pr, 'transp');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (isShown !== undefined ? {\n isShown\n } : {}), (isZeroWidth !== undefined ? {\n isZeroWidth\n } : {}), (isZeroAscender !== undefined ? {\n isZeroAscender\n } : {}), (isZeroDescender !== undefined ? {\n isZeroDescender\n } : {}), (isTransparent !== undefined ? {\n isTransparent\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseRadPr(pr) {\n const isDegreeHidden = readOnOffChild(pr, 'degHide');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (isDegreeHidden !== undefined ? {\n isDegreeHidden\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseScriptPr(pr) {\n const isScriptAligned = readOnOffChild(pr, 'alnScr');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (isScriptAligned !== undefined ? {\n isScriptAligned\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseRunPr(pr) {\n if (!pr) {\n return {};\n }\n const isLiteral = readOnOffChild(pr, 'lit');\n const isNormal = readOnOffChild(pr, 'nor');\n const scrRaw = readStringChild(pr, 'scr');\n const styRaw = readStringChild(pr, 'sty');\n const scr = scrRaw !== undefined ? parseMathScript(scrRaw) : undefined;\n const sty = styRaw !== undefined ? parseMathStyle(styRaw) : undefined;\n const isAligned = readOnOffChild(pr, 'aln');\n const brkRaw = readStringChild(pr, 'brk');\n const brkNum = brkRaw !== undefined ? Number(brkRaw) : undefined;\n const brk = brkNum !== undefined && Number.isFinite(brkNum) ? brkNum : undefined;\n return Object.assign({}, (isLiteral !== undefined ? {\n isLiteral\n } : {}), (isNormal !== undefined ? {\n isNormal\n } : {}), (scr !== undefined ? {\n scr\n } : {}), (sty !== undefined ? {\n sty\n } : {}), (isAligned !== undefined ? {\n isAligned\n } : {}), (brk !== undefined ? {\n brk\n } : {}));\n}\n// ─── Element dispatch ────────────────────────────────────────────────────────\nfunction parseText(el) {\n const space = attrValueNs(el, XML_NAMESPACE, 'space');\n const xmlSpace = space === 'preserve' || space === 'default' ? space : undefined;\n return new MathText(textContent(el), xmlSpace);\n}\nfunction parseRun(el, options) {\n const rPr = findChild(el, 'rPr');\n const props = parseRunPr(rPr);\n let wRPr;\n const children = [];\n const opaque = [];\n for (const child of childElements(el)) {\n if (isMathNs(child) && child.localName === 'rPr') {\n continue;\n }\n if (child.namespaceUri === WML_TRANSITIONAL_NAMESPACE && child.localName === 'rPr') {\n wRPr = child;\n continue;\n }\n if (isMathNs(child) && child.localName === 't') {\n children.push(parseText(child));\n continue;\n }\n if (isMathNs(child)) {\n children.push(parseOne(child, options));\n continue;\n }\n // Non-math run content — preserve opaque.\n opaque.push(child);\n }\n return new MathRun(children, props, wRPr, opaque);\n}\nfunction parseMatrixRow(el, options) {\n return new MathMatrixRow(parseManyArgs(el, 'e', options));\n}\nfunction parseOne(el, options) {\n if (!isMathNs(el)) {\n return new UnknownMathElement(el.localName, el);\n }\n switch (el.localName) {\n case 'oMathPara':\n return parseOMathPara(el, options);\n case 'oMath':\n return parseOMath(el, options);\n case 't':\n return parseText(el);\n case 'r':\n return parseRun(el, options);\n case 'acc':\n {\n const pr = findChild(el, 'accPr');\n return new MathAccent(parseAccentPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'bar':\n {\n const pr = findChild(el, 'barPr');\n return new MathBar(parseBarPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'box':\n {\n const pr = findChild(el, 'boxPr');\n return new MathBox(parseBoxPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'borderBox':\n {\n const pr = findChild(el, 'borderBoxPr');\n return new MathBorderBox(parseBorderBoxPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'd':\n {\n const pr = findChild(el, 'dPr');\n const elements = parseManyArgs(el, 'e', options);\n if (elements.length < 1) {\n return degrade(el, 'd', 'm:d missing required m:e', options, new MathDelimiter(parseDelimiterPr(pr), []));\n }\n return new MathDelimiter(parseDelimiterPr(pr), elements);\n }\n case 'eqArr':\n {\n const pr = findChild(el, 'eqArrPr');\n const elements = parseManyArgs(el, 'e', options);\n if (elements.length < 1) {\n return degrade(el, 'eqArr', 'm:eqArr missing required m:e', options, new MathEquationArray(parseEqArrPr(pr), []));\n }\n return new MathEquationArray(parseEqArrPr(pr), elements);\n }\n case 'f':\n {\n const pr = findChild(el, 'fPr');\n const num = findChild(el, 'num');\n const den = findChild(el, 'den');\n if (!num || !den) {\n return degrade(el, 'f', 'm:f missing required m:num and/or m:den', options, new MathFraction(parseFractionPr(pr), parseArgument(num, options), parseArgument(den, options)));\n }\n return new MathFraction(parseFractionPr(pr), parseArgument(num, options), parseArgument(den, options));\n }\n case 'func':\n {\n const pr = findChild(el, 'funcPr');\n return new MathFunction(parseFunctionPr(pr), parseArgument(findChild(el, 'fName'), options), parseArgument(findChild(el, 'e'), options));\n }\n case 'groupChr':\n {\n const pr = findChild(el, 'groupChrPr');\n return new MathGroupCharacter(parseGroupChrPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'limLow':\n {\n const pr = findChild(el, 'limLowPr');\n return new MathLimitLower(parseLimitPr(pr), parseArgument(findChild(el, 'e'), options), parseArgument(findChild(el, 'lim'), options));\n }\n case 'limUpp':\n {\n const pr = findChild(el, 'limUppPr');\n return new MathLimitUpper(parseLimitPr(pr), parseArgument(findChild(el, 'e'), options), parseArgument(findChild(el, 'lim'), options));\n }\n case 'm':\n {\n const pr = findChild(el, 'mPr');\n const rows = findChildren(el, 'mr').map(r => parseMatrixRow(r, options));\n if (rows.length < 1) {\n return degrade(el, 'm', 'm:m missing required m:mr', options, new MathMatrix(parseMatrixPr(pr), []));\n }\n return new MathMatrix(parseMatrixPr(pr), rows);\n }\n case 'mr':\n return parseMatrixRow(el, options);\n case 'nary':\n {\n const pr = findChild(el, 'naryPr');\n // CT_Nary order: naryPr?, sub, sup, e\n return new MathNaryOperator(parseNaryPr(pr), parseArgument(findChild(el, 'sub'), options), parseArgument(findChild(el, 'sup'), options), parseArgument(findChild(el, 'e'), options));\n }\n case 'phant':\n {\n const pr = findChild(el, 'phantPr');\n return new MathPhantom(parsePhantPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'rad':\n {\n const pr = findChild(el, 'radPr');\n return new MathRadical(parseRadPr(pr), parseArgument(findChild(el, 'deg'), options), parseArgument(findChild(el, 'e'), options));\n }\n case 'sPre':\n {\n const pr = findChild(el, 'sPrePr');\n // CT_SPre: sPrePr?, sub, sup, e\n return new MathPreSubSuperscript(parseScriptPr(pr), parseArgument(findChild(el, 'sub'), options), parseArgument(findChild(el, 'sup'), options), parseArgument(findChild(el, 'e'), options));\n }\n case 'sSub':\n {\n const pr = findChild(el, 'sSubPr');\n return new MathSubscript(parseScriptPr(pr), parseArgument(findChild(el, 'e'), options), parseArgument(findChild(el, 'sub'), options));\n }\n case 'sSubSup':\n {\n const pr = findChild(el, 'sSubSupPr');\n return new MathSubSuperscript(parseScriptPr(pr), parseArgument(findChild(el, 'e'), options), parseArgument(findChild(el, 'sub'), options), parseArgument(findChild(el, 'sup'), options));\n }\n case 'sSup':\n {\n const pr = findChild(el, 'sSupPr');\n return new MathSuperscript(parseScriptPr(pr), parseArgument(findChild(el, 'e'), options), parseArgument(findChild(el, 'sup'), options));\n }\n default:\n return new UnknownMathElement(el.localName, el);\n }\n}\nfunction parseOMath(el, options) {\n const children = [];\n for (const child of childElements(el)) {\n if (!isMathNs(child)) {\n // Non-math under oMath — wrap unknown.\n children.push(new UnknownMathElement(child.localName, child));\n continue;\n }\n children.push(parseOne(child, options));\n }\n return new MathOMath(children);\n}\nfunction parseOMathPara(el, options) {\n const pr = findChild(el, 'oMathParaPr');\n const jcRaw = pr ? readStringChild(pr, 'jc') : undefined;\n const jc = jcRaw !== undefined ? parseMathJc(jcRaw) : undefined;\n const props = Object.assign({}, (jc !== undefined ? {\n jc\n } : {}));\n const equations = findChildren(el, 'oMath').map(o => parseOMath(o, options));\n if (equations.length < 1) {\n return degrade(el, 'oMathPara', 'm:oMathPara missing required m:oMath', options, new MathParagraph(props, []));\n }\n return new MathParagraph(props, equations);\n}\n/**\n * Parse a single OMML root element (`m:oMathPara`, `m:oMath`, or any EG_OMathElements member)\n * into a typed {@link MathElement}.\n *\n * Tolerant: never throws. Unknown / malformed nodes degrade rather than abort.\n *\n * @public\n */\nexport function parseMathElement(root, options) {\n return parseOne(root, options);\n}\n/**\n * Parse zero or more sibling math roots (e.g. multiple `m:oMath` under a paragraph host).\n *\n * @public\n */\nexport function parseMathElements(roots, options) {\n return roots.map(r => parseMathElement(r, options));\n}\n","/**\n * Strict typed Math* DOM → OMML OpenXml element-tree serializer.\n *\n * Source: mathml-spec §9; ECMA-376-4 Annex A.8.1.\n * Throws {@link MathmlValidationError} on schema violations (typed path).\n * Preserve-only / unknown nodes re-emit `preservedXml` verbatim.\n */\nimport { MATH_NAMESPACE, MATH_PREFIX_FALLBACKS, XML_NAMESPACE } from '../constants';\nimport { MathmlValidationError } from '../errors';\nimport { createElement, createText } from '../openxml';\nimport { MATH_FTYPE_VALUES, MATH_JC_VALUES, MATH_LIMLOC_VALUES, MATH_SCRIPT_VALUES, MATH_SHP_VALUES, MATH_STYLE_VALUES, MATH_TOPBOT_VALUES, isInteger2, isInteger255 } from '../model/enums';\nimport { UnknownMathElement } from '../model/math-element';\nfunction resolvePrefix(options) {\n if ((options == null ? void 0 : options.prefix) !== undefined && options.prefix.length > 0) {\n return options.prefix;\n }\n const reserved = new Set(function () {\n var _nc = options == null ? void 0 : options.reservedPrefixes;\n return _nc != null ? _nc : [];\n }());\n for (const candidate of MATH_PREFIX_FALLBACKS) {\n if (!reserved.has(candidate)) {\n return candidate;\n }\n }\n return 'm999';\n}\nfunction needsXmlSpacePreserve(value) {\n if (value.length === 0) {\n return true;\n }\n const first = value[0];\n const last = value[value.length - 1];\n return first === ' ' || first === '\\t' || first === '\\n' || first === '\\r' || last === ' ' || last === '\\t' || last === '\\n' || last === '\\r';\n}\nfunction emitOnOff(value) {\n // ECMA-376 OnOffType — prefer canonical '1' / '0'.\n return value ? '1' : '0';\n}\nfunction mEl(ctx, localName, children = [], attributes = []) {\n return createElement(MATH_NAMESPACE, localName, ctx.prefix, {\n attributes,\n children\n });\n}\nfunction valAttr(value) {\n return {\n namespaceUri: '',\n localName: 'val',\n prefix: '',\n value\n };\n}\nfunction valEl(ctx, localName, value) {\n return mEl(ctx, localName, [], [valAttr(value)]);\n}\nfunction onOffEl(ctx, localName, value) {\n return mEl(ctx, localName, [], [valAttr(emitOnOff(value))]);\n}\nfunction pushCtrlPr(children, ctrlPr) {\n if (ctrlPr !== undefined) {\n children.push(ctrlPr);\n }\n}\nfunction assertInUnion(value, allowed, path, label) {\n if (!(allowed.indexOf(value) !== -1)) {\n throw new MathmlValidationError(`Illegal ${label} token '${value}' (not in schema enum)`, path, 'enum-value');\n }\n}\n/**\n * Serialize a MathArgument as a named CT_OMathArg element\n * (`e` | `num` | `den` | `sub` | `sup` | `lim` | `deg` | `fName`).\n */\nfunction emitArg(ctx, localName, arg) {\n const childPath = `${ctx.path}.${localName}`;\n const kids = [];\n const argSz = arg.properties.argSz;\n if (argSz !== undefined) {\n if (!isInteger2(argSz)) {\n throw new MathmlValidationError(`argSz must be an integer in −2..2 (ST_Integer2), got ${String(argSz)}`, `${childPath}.argPr.argSz`, 'value-range');\n }\n kids.push(mEl(ctx, 'argPr', [valEl(ctx, 'argSz', String(argSz))]));\n }\n for (let i = 0; i < arg.item.length; i++) {\n const child = arg.item[i];\n if (child === undefined) {\n continue;\n }\n kids.push(serializeNode(child, {\n prefix: ctx.prefix,\n path: `${childPath}[${String(i)}]`\n }));\n }\n pushCtrlPr(kids, arg.ctrlPr);\n return mEl(ctx, localName, kids);\n}\nfunction emitText(ctx, node) {\n const attrs = [];\n let space = node.xmlSpace;\n if (space === undefined && needsXmlSpacePreserve(node.value)) {\n space = 'preserve';\n }\n if (space !== undefined) {\n attrs.push({\n namespaceUri: XML_NAMESPACE,\n localName: 'space',\n prefix: 'xml',\n value: space\n });\n }\n return mEl(ctx, 't', [createText(node.value)], attrs);\n}\nfunction emitRunPr(ctx, run) {\n const p = run.properties;\n const kids = [];\n if (p.isLiteral !== undefined) {\n kids.push(onOffEl(ctx, 'lit', p.isLiteral));\n }\n if (p.isNormal !== undefined) {\n kids.push(onOffEl(ctx, 'nor', p.isNormal));\n }\n if (p.scr !== undefined) {\n assertInUnion(p.scr, MATH_SCRIPT_VALUES, `${ctx.path}.rPr.scr`, 'ST_Script');\n kids.push(valEl(ctx, 'scr', p.scr));\n }\n if (p.sty !== undefined) {\n assertInUnion(p.sty, MATH_STYLE_VALUES, `${ctx.path}.rPr.sty`, 'ST_Style');\n kids.push(valEl(ctx, 'sty', p.sty));\n }\n if (p.brk !== undefined) {\n if (!isInteger255(p.brk) && !(Number.isInteger(p.brk) && p.brk === 0)) {\n // ST_Integer255 is 1..255; allow 0 as present break index edge (Word).\n if (!Number.isInteger(p.brk) || p.brk < 0 || p.brk > 255) {\n throw new MathmlValidationError(`brk must be an integer in 0..255, got ${String(p.brk)}`, `${ctx.path}.rPr.brk`, 'value-range');\n }\n }\n kids.push(valEl(ctx, 'brk', String(p.brk)));\n }\n if (p.isAligned !== undefined) {\n kids.push(onOffEl(ctx, 'aln', p.isAligned));\n }\n if (kids.length === 0) {\n return undefined;\n }\n return mEl(ctx, 'rPr', kids);\n}\nfunction emitRun(ctx, run) {\n const kids = [];\n const rPr = emitRunPr(ctx, run);\n if (rPr !== undefined) {\n kids.push(rPr);\n }\n if (run.wRPr !== undefined) {\n kids.push(run.wRPr);\n }\n for (let i = 0; i < run.children.length; i++) {\n const child = run.children[i];\n if (child === undefined) {\n continue;\n }\n kids.push(serializeNode(child, {\n prefix: ctx.prefix,\n path: `${ctx.path}.r[${String(i)}]`\n }));\n }\n for (const opaque of run.opaqueChildren) {\n kids.push(opaque);\n }\n return mEl(ctx, 'r', kids);\n}\nfunction emitAccent(ctx, node) {\n const kids = [];\n const prKids = [];\n if (node.properties.chr !== undefined) {\n prKids.push(valEl(ctx, 'chr', node.properties.chr));\n }\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'accPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'acc', kids);\n}\nfunction emitBar(ctx, node) {\n const kids = [];\n const prKids = [];\n if (node.properties.pos !== undefined) {\n assertInUnion(node.properties.pos, MATH_TOPBOT_VALUES, `${ctx.path}.barPr.pos`, 'ST_TopBot');\n prKids.push(valEl(ctx, 'pos', node.properties.pos));\n }\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'barPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'bar', kids);\n}\nfunction emitBox(ctx, node) {\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.isOperatorEmulated !== undefined) {\n prKids.push(onOffEl(ctx, 'opEmu', p.isOperatorEmulated));\n }\n if (p.isNoBreak !== undefined) {\n prKids.push(onOffEl(ctx, 'noBreak', p.isNoBreak));\n }\n if (p.isDifferential !== undefined) {\n prKids.push(onOffEl(ctx, 'diff', p.isDifferential));\n }\n if (p.isAligned !== undefined) {\n prKids.push(onOffEl(ctx, 'aln', p.isAligned));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'boxPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'box', kids);\n}\n/** Public API boolean → OMML OnOff local name for `m:borderBoxPr`. */\nconst BORDER_BOX_ONOFF_EMIT = [['isTopHidden', 'hideTop'], ['isBottomHidden', 'hideBot'], ['isLeftHidden', 'hideLeft'], ['isRightHidden', 'hideRight'], ['hasHorizontalStrike', 'strikeH'], ['hasVerticalStrike', 'strikeV'], ['hasBottomLeftToTopRightStrike', 'strikeBLTR'], ['hasTopLeftToBottomRightStrike', 'strikeTLBR']];\nfunction emitBorderBox(ctx, node) {\n const kids = [];\n const prKids = [];\n const p = node.properties;\n for (const [apiName, xmlName] of BORDER_BOX_ONOFF_EMIT) {\n const v = p[apiName];\n if (typeof v === 'boolean') {\n prKids.push(onOffEl(ctx, xmlName, v));\n }\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'borderBoxPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'borderBox', kids);\n}\nfunction emitDelimiter(ctx, node) {\n node.assertSerializable(ctx.path);\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.begChr !== undefined) {\n prKids.push(valEl(ctx, 'begChr', p.begChr));\n }\n if (p.sepChr !== undefined) {\n prKids.push(valEl(ctx, 'sepChr', p.sepChr));\n }\n if (p.endChr !== undefined) {\n prKids.push(valEl(ctx, 'endChr', p.endChr));\n }\n if (p.canGrow !== undefined) {\n prKids.push(onOffEl(ctx, 'grow', p.canGrow));\n }\n if (p.shp !== undefined) {\n assertInUnion(p.shp, MATH_SHP_VALUES, `${ctx.path}.dPr.shp`, 'ST_Shp');\n prKids.push(valEl(ctx, 'shp', p.shp));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'dPr', prKids));\n }\n for (const el of node.elements) {\n kids.push(emitArg(ctx, 'e', el));\n }\n return mEl(ctx, 'd', kids);\n}\nfunction emitEqArr(ctx, node) {\n node.assertSerializable(ctx.path);\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.baseJc !== undefined) {\n prKids.push(valEl(ctx, 'baseJc', p.baseJc));\n }\n if (p.hasMaxDistance !== undefined) {\n prKids.push(onOffEl(ctx, 'maxDist', p.hasMaxDistance));\n }\n if (p.hasObjectDistance !== undefined) {\n prKids.push(onOffEl(ctx, 'objDist', p.hasObjectDistance));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'eqArrPr', prKids));\n }\n for (const el of node.elements) {\n kids.push(emitArg(ctx, 'e', el));\n }\n return mEl(ctx, 'eqArr', kids);\n}\nfunction emitFraction(ctx, node) {\n const kids = [];\n const prKids = [];\n if (node.properties.type !== undefined) {\n assertInUnion(node.properties.type, MATH_FTYPE_VALUES, `${ctx.path}.fPr.type`, 'ST_FType');\n prKids.push(valEl(ctx, 'type', node.properties.type));\n }\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'fPr', prKids));\n }\n // CT_F order: fPr?, num, den (OMML local names unchanged)\n kids.push(emitArg(ctx, 'num', node.numerator));\n kids.push(emitArg(ctx, 'den', node.denominator));\n return mEl(ctx, 'f', kids);\n}\nfunction emitFunction(ctx, node) {\n const kids = [];\n const prKids = [];\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'funcPr', prKids));\n }\n // CT_Func: funcPr?, fName, e (OMML local name fName unchanged)\n kids.push(emitArg(ctx, 'fName', node.name));\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'func', kids);\n}\nfunction emitGroupChr(ctx, node) {\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.chr !== undefined) {\n prKids.push(valEl(ctx, 'chr', p.chr));\n }\n if (p.pos !== undefined) {\n assertInUnion(p.pos, MATH_TOPBOT_VALUES, `${ctx.path}.groupChrPr.pos`, 'ST_TopBot');\n prKids.push(valEl(ctx, 'pos', p.pos));\n }\n if (p.vertJc !== undefined) {\n assertInUnion(p.vertJc, MATH_TOPBOT_VALUES, `${ctx.path}.groupChrPr.vertJc`, 'ST_TopBot');\n prKids.push(valEl(ctx, 'vertJc', p.vertJc));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'groupChrPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'groupChr', kids);\n}\nfunction emitLimLow(ctx, node) {\n const kids = [];\n const prKids = [];\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'limLowPr', prKids));\n }\n // CT_LimLow: limLowPr?, e, lim\n kids.push(emitArg(ctx, 'e', node.base));\n kids.push(emitArg(ctx, 'lim', node.lim));\n return mEl(ctx, 'limLow', kids);\n}\nfunction emitLimUpp(ctx, node) {\n const kids = [];\n const prKids = [];\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'limUppPr', prKids));\n }\n // CT_LimUpp: limUppPr?, e, lim\n kids.push(emitArg(ctx, 'e', node.base));\n kids.push(emitArg(ctx, 'lim', node.lim));\n return mEl(ctx, 'limUpp', kids);\n}\nfunction emitMatrixRow(ctx, node) {\n node.assertSerializable(ctx.path);\n const kids = [];\n for (const el of node.elements) {\n kids.push(emitArg(ctx, 'e', el));\n }\n return mEl(ctx, 'mr', kids);\n}\nfunction emitMatrix(ctx, node) {\n node.assertSerializable(ctx.path);\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.baseJc !== undefined) {\n prKids.push(valEl(ctx, 'baseJc', p.baseJc));\n }\n if (p.isPlaceholderHidden !== undefined) {\n prKids.push(onOffEl(ctx, 'plcHide', p.isPlaceholderHidden));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'mPr', prKids));\n }\n for (let i = 0; i < node.rows.length; i++) {\n const row = node.rows[i];\n if (row === undefined) {\n continue;\n }\n kids.push(emitMatrixRow({\n prefix: ctx.prefix,\n path: `${ctx.path}.mr[${String(i)}]`\n }, row));\n }\n return mEl(ctx, 'm', kids);\n}\nfunction emitNary(ctx, node) {\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.chr !== undefined) {\n prKids.push(valEl(ctx, 'chr', p.chr));\n }\n if (p.limLoc !== undefined) {\n assertInUnion(p.limLoc, MATH_LIMLOC_VALUES, `${ctx.path}.naryPr.limLoc`, 'ST_LimLoc');\n prKids.push(valEl(ctx, 'limLoc', p.limLoc));\n }\n if (p.canGrow !== undefined) {\n prKids.push(onOffEl(ctx, 'grow', p.canGrow));\n }\n if (p.isSubscriptHidden !== undefined) {\n prKids.push(onOffEl(ctx, 'subHide', p.isSubscriptHidden));\n }\n if (p.isSuperscriptHidden !== undefined) {\n prKids.push(onOffEl(ctx, 'supHide', p.isSuperscriptHidden));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'naryPr', prKids));\n }\n // CT_Nary order: naryPr?, sub, sup, e\n kids.push(emitArg(ctx, 'sub', node.subscript));\n kids.push(emitArg(ctx, 'sup', node.superscript));\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'nary', kids);\n}\nfunction emitPhant(ctx, node) {\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.isShown !== undefined) {\n prKids.push(onOffEl(ctx, 'show', p.isShown));\n }\n if (p.isZeroWidth !== undefined) {\n prKids.push(onOffEl(ctx, 'zeroWid', p.isZeroWidth));\n }\n if (p.isZeroAscender !== undefined) {\n prKids.push(onOffEl(ctx, 'zeroAsc', p.isZeroAscender));\n }\n if (p.isZeroDescender !== undefined) {\n prKids.push(onOffEl(ctx, 'zeroDesc', p.isZeroDescender));\n }\n if (p.isTransparent !== undefined) {\n prKids.push(onOffEl(ctx, 'transp', p.isTransparent));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'phantPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'phant', kids);\n}\nfunction emitRad(ctx, node) {\n const kids = [];\n const prKids = [];\n if (node.properties.isDegreeHidden !== undefined) {\n prKids.push(onOffEl(ctx, 'degHide', node.properties.isDegreeHidden));\n }\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'radPr', prKids));\n }\n // CT_Rad: radPr?, deg, e\n kids.push(emitArg(ctx, 'deg', node.deg));\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'rad', kids);\n}\nfunction emitScriptPr(ctx, prName, isScriptAligned, ctrlPr) {\n const prKids = [];\n if (isScriptAligned !== undefined) {\n prKids.push(onOffEl(ctx, 'alnScr', isScriptAligned));\n }\n pushCtrlPr(prKids, ctrlPr);\n if (prKids.length === 0) {\n return undefined;\n }\n return mEl(ctx, prName, prKids);\n}\nfunction emitSPre(ctx, node) {\n const kids = [];\n const pr = emitScriptPr(ctx, 'sPrePr', node.properties.isScriptAligned, node.properties.ctrlPr);\n if (pr !== undefined) {\n kids.push(pr);\n }\n // CT_SPre: sPrePr?, sub, sup, e\n kids.push(emitArg(ctx, 'sub', node.sub));\n kids.push(emitArg(ctx, 'sup', node.sup));\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'sPre', kids);\n}\nfunction emitSSub(ctx, node) {\n const kids = [];\n const pr = emitScriptPr(ctx, 'sSubPr', node.properties.isScriptAligned, node.properties.ctrlPr);\n if (pr !== undefined) {\n kids.push(pr);\n }\n // CT_SSub: sSubPr?, e, sub\n kids.push(emitArg(ctx, 'e', node.base));\n kids.push(emitArg(ctx, 'sub', node.subscript));\n return mEl(ctx, 'sSub', kids);\n}\nfunction emitSSubSup(ctx, node) {\n const kids = [];\n const pr = emitScriptPr(ctx, 'sSubSupPr', node.properties.isScriptAligned, node.properties.ctrlPr);\n if (pr !== undefined) {\n kids.push(pr);\n }\n // CT_SSubSup: sSubSupPr?, e, sub, sup\n kids.push(emitArg(ctx, 'e', node.base));\n kids.push(emitArg(ctx, 'sub', node.subscript));\n kids.push(emitArg(ctx, 'sup', node.superscript));\n return mEl(ctx, 'sSubSup', kids);\n}\nfunction emitSSup(ctx, node) {\n const kids = [];\n const pr = emitScriptPr(ctx, 'sSupPr', node.properties.isScriptAligned, node.properties.ctrlPr);\n if (pr !== undefined) {\n kids.push(pr);\n }\n // CT_SSup: sSupPr?, e, sup\n kids.push(emitArg(ctx, 'e', node.base));\n kids.push(emitArg(ctx, 'sup', node.superscript));\n return mEl(ctx, 'sSup', kids);\n}\nfunction emitOMath(ctx, node) {\n const kids = [];\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (child === undefined) {\n continue;\n }\n kids.push(serializeNode(child, {\n prefix: ctx.prefix,\n path: `${ctx.path}[${String(i)}]`\n }));\n }\n return mEl(ctx, 'oMath', kids);\n}\nfunction emitOMathPara(ctx, node) {\n node.assertSerializable(ctx.path);\n const kids = [];\n if (node.properties.jc !== undefined) {\n assertInUnion(node.properties.jc, MATH_JC_VALUES, `${ctx.path}.oMathParaPr.jc`, 'ST_Jc');\n kids.push(mEl(ctx, 'oMathParaPr', [valEl(ctx, 'jc', node.properties.jc)]));\n }\n for (let i = 0; i < node.equations.length; i++) {\n const eq = node.equations[i];\n if (eq === undefined) {\n continue;\n }\n kids.push(emitOMath({\n prefix: ctx.prefix,\n path: `${ctx.path}.oMath[${String(i)}]`\n }, eq));\n }\n return mEl(ctx, 'oMathPara', kids);\n}\nfunction serializeNode(node, ctx) {\n // Preserve-only degradation / unknown: re-emit captured XML verbatim.\n if (node.preserveOnly) {\n if (node.preservedXml === undefined) {\n throw new MathmlValidationError('preserve-only node missing preservedXml', ctx.path, 'required-child');\n }\n return node.preservedXml;\n }\n if (node instanceof UnknownMathElement) {\n if (node.preservedXml === undefined) {\n throw new MathmlValidationError('unknown math node missing preservedXml', ctx.path, 'required-child');\n }\n return node.preservedXml;\n }\n switch (node.type) {\n case 'oMathPara':\n return emitOMathPara(ctx, node);\n case 'oMath':\n return emitOMath(ctx, node);\n case 't':\n return emitText(ctx, node);\n case 'r':\n return emitRun(ctx, node);\n case 'acc':\n return emitAccent(ctx, node);\n case 'bar':\n return emitBar(ctx, node);\n case 'box':\n return emitBox(ctx, node);\n case 'borderBox':\n return emitBorderBox(ctx, node);\n case 'd':\n return emitDelimiter(ctx, node);\n case 'eqArr':\n return emitEqArr(ctx, node);\n case 'f':\n return emitFraction(ctx, node);\n case 'func':\n return emitFunction(ctx, node);\n case 'groupChr':\n return emitGroupChr(ctx, node);\n case 'limLow':\n return emitLimLow(ctx, node);\n case 'limUpp':\n return emitLimUpp(ctx, node);\n case 'm':\n return emitMatrix(ctx, node);\n case 'mr':\n return emitMatrixRow(ctx, node);\n case 'nary':\n return emitNary(ctx, node);\n case 'phant':\n return emitPhant(ctx, node);\n case 'rad':\n return emitRad(ctx, node);\n case 'sPre':\n return emitSPre(ctx, node);\n case 'sSub':\n return emitSSub(ctx, node);\n case 'sSubSup':\n return emitSSubSup(ctx, node);\n case 'sSup':\n return emitSSup(ctx, node);\n case 'arg':\n // Arguments are only emitted via emitArg with a schema local name.\n throw new MathmlValidationError('MathArgument cannot be serialized as a root; use a named CT_OMathArg slot', ctx.path, 'child-order');\n case 'unknown':\n // Handled above via instanceof; keep exhaustive.\n if (node.preservedXml !== undefined) {\n return node.preservedXml;\n }\n throw new MathmlValidationError('unknown math node missing preservedXml', ctx.path, 'required-child');\n default:\n {\n const _exhaustive = node.type;\n throw new MathmlValidationError(`Unhandled math kind: ${String(_exhaustive)}`, ctx.path, 'required-child');\n }\n }\n}\n/**\n * Serialize a typed math node to an OpenXml element tree.\n *\n * Source: mathml-spec §9 — strict schema order; preserve-only re-emits XML.\n *\n * @public\n */\nexport function mathElementToOpenXml(node, options) {\n const prefix = resolvePrefix(options);\n return serializeNode(node, {\n prefix,\n path: node.type\n });\n}\n","/**\n * Deep clone and semantic equality for typed Math* DOM.\n *\n * Source: mathml-spec §4b / §10b; TASK-9010 §6 —\n * clone re-invokes constructors; preserved XML never travels with the clone\n * (UnknownMathElement keeps an internal content channel via constructor XML).\n * mathEqual compares shape, text, measures, enumerations (ignores listener).\n */\nimport { MathArgument, MathText, UnknownMathElement, } from './model/math-element';\nimport { MathOMath, MathParagraph } from './model/roots';\nimport { MathAccent, MathBar, MathBorderBox, MathBox, MathDelimiter, MathEquationArray, MathFraction, MathFunction, MathGroupCharacter, MathLimitLower, MathLimitUpper, MathMatrix, MathMatrixRow, MathNaryOperator, MathPhantom, MathPreSubSuperscript, MathRadical, MathRun, MathSubscript, MathSubSuperscript, MathSuperscript, } from './model/controls';\n/** Deep-clone an OpenXml element tree (immutable structural copy). */\nfunction cloneOpenXmlElement(el) {\n return { kind: 'element',\n namespaceUri: el.namespaceUri,\n localName: el.localName,\n prefix: el.prefix,\n attributes: el.attributes.map((a) => ({\n namespaceUri: a.namespaceUri,\n localName: a.localName,\n prefix: a.prefix,\n value: a.value,\n })),\n namespaceDeclarations: el.namespaceDeclarations.map((n) => ({\n prefix: n.prefix,\n namespaceUri: n.namespaceUri,\n })),\n children: el.children.map(cloneOpenXmlChild),\n };\n}\nfunction cloneOpenXmlChild(child) {\n if (child.kind === 'text') {\n const t = { kind: 'text', value: child.value };\n return t;\n }\n return cloneOpenXmlElement(child);\n}\nfunction cloneCtrlPr(ctrlPr) {\n return ctrlPr === undefined ? undefined : cloneOpenXmlElement(ctrlPr);\n}\n/** Clone property bags that may carry opaque ctrlPr OpenXml. */\nfunction cloneAccentProps(p) {\n return Object.assign({}, (p.chr !== undefined ? { chr: p.chr } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneBarProps(p) {\n return Object.assign({}, (p.pos !== undefined ? { pos: p.pos } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneBoxProps(p) {\n return Object.assign({}, (p.isOperatorEmulated !== undefined ? { isOperatorEmulated: p.isOperatorEmulated } : {}), (p.isNoBreak !== undefined ? { isNoBreak: p.isNoBreak } : {}), (p.isDifferential !== undefined ? { isDifferential: p.isDifferential } : {}), (p.isAligned !== undefined ? { isAligned: p.isAligned } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneBorderBoxProps(p) {\n return Object.assign({}, (p.isTopHidden !== undefined ? { isTopHidden: p.isTopHidden } : {}), (p.isBottomHidden !== undefined ? { isBottomHidden: p.isBottomHidden } : {}), (p.isLeftHidden !== undefined ? { isLeftHidden: p.isLeftHidden } : {}), (p.isRightHidden !== undefined ? { isRightHidden: p.isRightHidden } : {}), (p.hasHorizontalStrike !== undefined ? { hasHorizontalStrike: p.hasHorizontalStrike } : {}), (p.hasVerticalStrike !== undefined ? { hasVerticalStrike: p.hasVerticalStrike } : {}), (p.hasBottomLeftToTopRightStrike !== undefined\n ? { hasBottomLeftToTopRightStrike: p.hasBottomLeftToTopRightStrike }\n : {}), (p.hasTopLeftToBottomRightStrike !== undefined\n ? { hasTopLeftToBottomRightStrike: p.hasTopLeftToBottomRightStrike }\n : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneDelimiterProps(p) {\n return Object.assign({}, (p.begChr !== undefined ? { begChr: p.begChr } : {}), (p.sepChr !== undefined ? { sepChr: p.sepChr } : {}), (p.endChr !== undefined ? { endChr: p.endChr } : {}), (p.canGrow !== undefined ? { canGrow: p.canGrow } : {}), (p.shp !== undefined ? { shp: p.shp } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneEqArrProps(p) {\n return Object.assign({}, (p.baseJc !== undefined ? { baseJc: p.baseJc } : {}), (p.hasMaxDistance !== undefined ? { hasMaxDistance: p.hasMaxDistance } : {}), (p.hasObjectDistance !== undefined ? { hasObjectDistance: p.hasObjectDistance } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneFractionProps(p) {\n return Object.assign({}, (p.type !== undefined ? { type: p.type } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneFunctionProps(p) {\n return Object.assign({}, (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneGroupChrProps(p) {\n return Object.assign({}, (p.chr !== undefined ? { chr: p.chr } : {}), (p.pos !== undefined ? { pos: p.pos } : {}), (p.vertJc !== undefined ? { vertJc: p.vertJc } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneLimitProps(p) {\n return Object.assign({}, (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneMatrixProps(p) {\n return Object.assign({}, (p.baseJc !== undefined ? { baseJc: p.baseJc } : {}), (p.isPlaceholderHidden !== undefined ? { isPlaceholderHidden: p.isPlaceholderHidden } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneNaryProps(p) {\n return Object.assign({}, (p.chr !== undefined ? { chr: p.chr } : {}), (p.limLoc !== undefined ? { limLoc: p.limLoc } : {}), (p.canGrow !== undefined ? { canGrow: p.canGrow } : {}), (p.isSubscriptHidden !== undefined ? { isSubscriptHidden: p.isSubscriptHidden } : {}), (p.isSuperscriptHidden !== undefined ? { isSuperscriptHidden: p.isSuperscriptHidden } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction clonePhantomProps(p) {\n return Object.assign({}, (p.isShown !== undefined ? { isShown: p.isShown } : {}), (p.isZeroWidth !== undefined ? { isZeroWidth: p.isZeroWidth } : {}), (p.isZeroAscender !== undefined ? { isZeroAscender: p.isZeroAscender } : {}), (p.isZeroDescender !== undefined ? { isZeroDescender: p.isZeroDescender } : {}), (p.isTransparent !== undefined ? { isTransparent: p.isTransparent } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneRadicalProps(p) {\n return Object.assign({}, (p.isDegreeHidden !== undefined ? { isDegreeHidden: p.isDegreeHidden } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneScriptProps(p) {\n return Object.assign({}, (p.isScriptAligned !== undefined ? { isScriptAligned: p.isScriptAligned } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneRunProps(p) {\n return Object.assign({}, (p.isLiteral !== undefined ? { isLiteral: p.isLiteral } : {}), (p.isNormal !== undefined ? { isNormal: p.isNormal } : {}), (p.scr !== undefined ? { scr: p.scr } : {}), (p.sty !== undefined ? { sty: p.sty } : {}), (p.isAligned !== undefined ? { isAligned: p.isAligned } : {}), (p.brk !== undefined ? { brk: p.brk } : {}));\n}\nfunction cloneArgProps(p) {\n return Object.assign({}, (p.argSz !== undefined ? { argSz: p.argSz } : {}));\n}\nfunction cloneParaProps(p) {\n return Object.assign({}, (p.jc !== undefined ? { jc: p.jc } : {}));\n}\n/**\n * Deep-clone a math element via constructor re-invocation.\n * Preserved XML and preserve-only lock do **not** travel with the clone\n * (task §6 / spec §10b). UnknownMathElement reconstructs from a deep-cloned\n * OpenXml content channel.\n *\n * @private\n */\nexport function cloneMathElement(node) {\n switch (node.type) {\n case 't': {\n const t = node;\n return new MathText(t.value, t.xmlSpace);\n }\n case 'arg': {\n const a = node;\n return new MathArgument(cloneArgProps(a.properties), a.item.map(cloneMathElement), cloneCtrlPr(a.ctrlPr));\n }\n case 'oMathPara': {\n const p = node;\n return new MathParagraph(cloneParaProps(p.properties), p.equations.map((eq) => cloneMathElement(eq)));\n }\n case 'oMath': {\n const o = node;\n return new MathOMath(o.children.map(cloneMathElement));\n }\n case 'unknown': {\n const u = node;\n // Internal content channel only — deep-clone OpenXml, no preserveOnly lock.\n const xml = u.preservedXml;\n if (xml === undefined) {\n // Fallback empty unknown shell (should not occur for parser-built nodes).\n return new UnknownMathElement(u.localName, { kind: 'element',\n namespaceUri: '',\n localName: u.localName,\n prefix: '',\n attributes: [],\n namespaceDeclarations: [],\n children: [],\n });\n }\n return new UnknownMathElement(u.localName, cloneOpenXmlElement(xml));\n }\n case 'r': {\n const r = node;\n return new MathRun(r.children.map(cloneMathElement), cloneRunProps(r.properties), r.wRPr === undefined ? undefined : cloneOpenXmlElement(r.wRPr), r.opaqueChildren.map(cloneOpenXmlElement));\n }\n case 'acc': {\n const n = node;\n return new MathAccent(cloneAccentProps(n.properties), cloneMathElement(n.base));\n }\n case 'bar': {\n const n = node;\n return new MathBar(cloneBarProps(n.properties), cloneMathElement(n.base));\n }\n case 'box': {\n const n = node;\n return new MathBox(cloneBoxProps(n.properties), cloneMathElement(n.base));\n }\n case 'borderBox': {\n const n = node;\n return new MathBorderBox(cloneBorderBoxProps(n.properties), cloneMathElement(n.base));\n }\n case 'd': {\n const n = node;\n return new MathDelimiter(cloneDelimiterProps(n.properties), n.elements.map((e) => cloneMathElement(e)));\n }\n case 'eqArr': {\n const n = node;\n return new MathEquationArray(cloneEqArrProps(n.properties), n.elements.map((e) => cloneMathElement(e)));\n }\n case 'f': {\n const n = node;\n return new MathFraction(cloneFractionProps(n.properties), cloneMathElement(n.numerator), cloneMathElement(n.denominator));\n }\n case 'func': {\n const n = node;\n return new MathFunction(cloneFunctionProps(n.properties), cloneMathElement(n.name), cloneMathElement(n.base));\n }\n case 'groupChr': {\n const n = node;\n return new MathGroupCharacter(cloneGroupChrProps(n.properties), cloneMathElement(n.base));\n }\n case 'limLow': {\n const n = node;\n return new MathLimitLower(cloneLimitProps(n.properties), cloneMathElement(n.base), cloneMathElement(n.lim));\n }\n case 'limUpp': {\n const n = node;\n return new MathLimitUpper(cloneLimitProps(n.properties), cloneMathElement(n.base), cloneMathElement(n.lim));\n }\n case 'm': {\n const n = node;\n return new MathMatrix(cloneMatrixProps(n.properties), n.rows.map((row) => cloneMathElement(row)));\n }\n case 'mr': {\n const n = node;\n return new MathMatrixRow(n.elements.map((e) => cloneMathElement(e)));\n }\n case 'nary': {\n const n = node;\n return new MathNaryOperator(cloneNaryProps(n.properties), cloneMathElement(n.subscript), cloneMathElement(n.superscript), cloneMathElement(n.base));\n }\n case 'phant': {\n const n = node;\n return new MathPhantom(clonePhantomProps(n.properties), cloneMathElement(n.base));\n }\n case 'rad': {\n const n = node;\n return new MathRadical(cloneRadicalProps(n.properties), cloneMathElement(n.deg), cloneMathElement(n.base));\n }\n case 'sPre': {\n const n = node;\n return new MathPreSubSuperscript(cloneScriptProps(n.properties), cloneMathElement(n.sub), cloneMathElement(n.sup), cloneMathElement(n.base));\n }\n case 'sSub': {\n const n = node;\n return new MathSubscript(cloneScriptProps(n.properties), cloneMathElement(n.base), cloneMathElement(n.subscript));\n }\n case 'sSubSup': {\n const n = node;\n return new MathSubSuperscript(cloneScriptProps(n.properties), cloneMathElement(n.base), cloneMathElement(n.subscript), cloneMathElement(n.superscript));\n }\n case 'sSup': {\n const n = node;\n return new MathSuperscript(cloneScriptProps(n.properties), cloneMathElement(n.base), cloneMathElement(n.superscript));\n }\n default: {\n // Exhaustiveness: every MathElementType handled above.\n const _exhaustive = node.type;\n void _exhaustive;\n throw new Error(`cloneMathElement: unhandled kind`);\n }\n }\n}\nfunction openXmlEqual(a, b) {\n if (a === undefined && b === undefined) {\n return true;\n }\n if (a === undefined || b === undefined) {\n return false;\n }\n if (a.namespaceUri !== b.namespaceUri ||\n a.localName !== b.localName ||\n a.prefix !== b.prefix ||\n a.attributes.length !== b.attributes.length ||\n a.namespaceDeclarations.length !== b.namespaceDeclarations.length ||\n a.children.length !== b.children.length) {\n return false;\n }\n for (let i = 0; i < a.attributes.length; i++) {\n const aa = a.attributes[i];\n const bb = b.attributes[i];\n if (aa.namespaceUri !== bb.namespaceUri ||\n aa.localName !== bb.localName ||\n aa.prefix !== bb.prefix ||\n aa.value !== bb.value) {\n return false;\n }\n }\n for (let i = 0; i < a.namespaceDeclarations.length; i++) {\n const aa = a.namespaceDeclarations[i];\n const bb = b.namespaceDeclarations[i];\n if (aa.prefix !== bb.prefix || aa.namespaceUri !== bb.namespaceUri) {\n return false;\n }\n }\n for (let i = 0; i < a.children.length; i++) {\n const ca = a.children[i];\n const cb = b.children[i];\n if (ca.kind !== cb.kind) {\n return false;\n }\n if (ca.kind === 'text' && cb.kind === 'text') {\n if (ca.value !== cb.value) {\n return false;\n }\n }\n else if (ca.kind === 'element' && cb.kind === 'element') {\n if (!openXmlEqual(ca, cb)) {\n return false;\n }\n }\n else {\n return false;\n }\n }\n return true;\n}\nfunction openXmlListEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!openXmlEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\nfunction propsEqual(a, b, ctrlPrKey = 'ctrlPr') {\n const keys = new Set([...Object.keys(a), ...Object.keys(b)]);\n for (const key of keys) {\n if (key === ctrlPrKey) {\n if (!openXmlEqual(a[key], b[key])) {\n return false;\n }\n continue;\n }\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction elementsEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!mathEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Semantic equality of two math trees (shape, text, measures, enumerations).\n * Ignores mutation listeners. Compares preserve-only flag so degraded nodes\n * do not silently equal clean typed peers.\n *\n * @private\n */\nexport function mathEqual(a, b) {\n if (a.type !== b.type) {\n return false;\n }\n if (a.preserveOnly !== b.preserveOnly) {\n return false;\n }\n switch (a.type) {\n case 't': {\n const ta = a;\n const tb = b;\n return ta.value === tb.value && ta.xmlSpace === tb.xmlSpace;\n }\n case 'arg': {\n const aa = a;\n const bb = b;\n return (propsEqual(aa.properties, bb.properties) &&\n openXmlEqual(aa.ctrlPr, bb.ctrlPr) &&\n elementsEqual(aa.item, bb.item));\n }\n case 'oMathPara': {\n const pa = a;\n const pb = b;\n return (propsEqual(pa.properties, pb.properties) &&\n elementsEqual(pa.equations, pb.equations));\n }\n case 'oMath': {\n const oa = a;\n const ob = b;\n return elementsEqual(oa.children, ob.children);\n }\n case 'unknown': {\n const ua = a;\n const ub = b;\n return ua.localName === ub.localName && openXmlEqual(ua.preservedXml, ub.preservedXml);\n }\n case 'r': {\n const ra = a;\n const rb = b;\n return (propsEqual(ra.properties, rb.properties) &&\n openXmlEqual(ra.wRPr, rb.wRPr) &&\n elementsEqual(ra.children, rb.children) &&\n openXmlListEqual(ra.opaqueChildren, rb.opaqueChildren));\n }\n case 'acc': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'bar': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'box': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'borderBox': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'd': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n elementsEqual(na.elements, nb.elements));\n }\n case 'eqArr': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n elementsEqual(na.elements, nb.elements));\n }\n case 'f': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.numerator, nb.numerator) &&\n mathEqual(na.denominator, nb.denominator));\n }\n case 'func': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.name, nb.name) &&\n mathEqual(na.base, nb.base));\n }\n case 'groupChr': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'limLow': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base) &&\n mathEqual(na.lim, nb.lim));\n }\n case 'limUpp': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base) &&\n mathEqual(na.lim, nb.lim));\n }\n case 'm': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n elementsEqual(na.rows, nb.rows));\n }\n case 'mr': {\n const na = a;\n const nb = b;\n return elementsEqual(na.elements, nb.elements);\n }\n case 'nary': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.subscript, nb.subscript) &&\n mathEqual(na.superscript, nb.superscript) &&\n mathEqual(na.base, nb.base));\n }\n case 'phant': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'rad': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.deg, nb.deg) &&\n mathEqual(na.base, nb.base));\n }\n case 'sPre': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.sub, nb.sub) &&\n mathEqual(na.sup, nb.sup) &&\n mathEqual(na.base, nb.base));\n }\n case 'sSub': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base) &&\n mathEqual(na.subscript, nb.subscript));\n }\n case 'sSubSup': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base) &&\n mathEqual(na.subscript, nb.subscript) &&\n mathEqual(na.superscript, nb.superscript));\n }\n case 'sSup': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base) &&\n mathEqual(na.superscript, nb.superscript));\n }\n default: {\n const _exhaustive = a.type;\n void _exhaustive;\n return false;\n }\n }\n}\n","/*\n * Agile OFFCRYPTO constants cited from local [MS-OFFCRYPTO].\n *\n * @remarks\n * Never invent algorithm URIs, element names, or block keys. All values below\n * are taken from `specs/microsoft/[MS-OFFCRYPTO].md` §2.3.4.10–§2.3.4.15.\n * Re-exported from the encryption public surface for fixture / host harness use.\n *\n * @packageDocumentation\n */\n/**\n * EncryptionVersionInfo major for Agile: `0x0004` ([MS-OFFCRYPTO] §2.3.4.10).\n *\n * @public\n */\nexport const AGILE_VERSION_MAJOR = 0x0004;\n/**\n * EncryptionVersionInfo minor for Agile: `0x0004` ([MS-OFFCRYPTO] §2.3.4.10).\n *\n * @public\n */\nexport const AGILE_VERSION_MINOR = 0x0004;\n/** Reserved field after version MUST be 0x00000040 (§2.3.4.10). */\nexport const AGILE_RESERVED = 0x00000040;\n/** EncryptionInfo XML target namespace (§2.3.4.10). */\nexport const AGILE_ENCRYPTION_NS = 'http://schemas.microsoft.com/office/2006/encryption';\n/** PasswordKeyEncryptor URI on keyEncryptor (§2.3.4.10). */\nexport const PASSWORD_KEY_ENCRYPTOR_URI = 'http://schemas.microsoft.com/office/2006/keyEncryptor/password';\n/** PasswordKeyEncryptor element namespace (§2.3.4.10). */\nexport const PASSWORD_KEY_ENCRYPTOR_NS = 'http://schemas.microsoft.com/office/2006/keyEncryptor/password';\n/**\n * Block key for encryptedVerifierHashInput (§2.3.4.13).\n * Bytes: fe a7 d2 76 3b 4b 9e 79.\n */\nexport const BLOCK_KEY_VERIFIER_INPUT = Uint8Array.of(0xfe, 0xa7, 0xd2, 0x76, 0x3b, 0x4b, 0x9e, 0x79);\n/**\n * Block key for encryptedVerifierHashValue (§2.3.4.13).\n * Bytes: d7 aa 0f 6d 30 61 34 4e.\n */\nexport const BLOCK_KEY_VERIFIER_HASH = Uint8Array.of(0xd7, 0xaa, 0x0f, 0x6d, 0x30, 0x61, 0x34, 0x4e);\n/**\n * Block key for encryptedKeyValue (§2.3.4.13).\n * Bytes: 14 6e 0b e7 ab ac d0 d6.\n */\nexport const BLOCK_KEY_ENCRYPTOR_KEY = Uint8Array.of(0x14, 0x6e, 0x0b, 0xe7, 0xab, 0xac, 0xd0, 0xd6);\n/**\n * Block key for encryptedHmacKey (§2.3.4.14).\n * Bytes: 5f b2 ad 01 0c b9 e1 f6.\n */\nexport const BLOCK_KEY_HMAC_KEY = Uint8Array.of(0x5f, 0xb2, 0xad, 0x01, 0x0c, 0xb9, 0xe1, 0xf6);\n/**\n * Block key for encryptedHmacValue (§2.3.4.14).\n * Bytes: a0 67 7f 02 b2 2c 84 33.\n */\nexport const BLOCK_KEY_HMAC_VALUE = Uint8Array.of(0xa0, 0x67, 0x7f, 0x02, 0xb2, 0x2c, 0x84, 0x33);\n/** EncryptedPackage segment size in bytes (§2.3.4.15). */\nexport const ENCRYPTED_PACKAGE_SEGMENT_SIZE = 4096;\n/** CFB root stream names for OFFCRYPTO (§2.3.4.4, §2.3.4.10). */\nexport const STREAM_ENCRYPTION_INFO = 'EncryptionInfo';\nexport const STREAM_ENCRYPTED_PACKAGE = 'EncryptedPackage';\n/** Maximum spinCount from ST_SpinCount (§2.3.4.10). */\nexport const MAX_SPIN_COUNT = 10000000;\n/**\n * Standard Encryption EncryptionVersionInfo minor version (§2.3.4.5).\n * Major is 2, 3, or 4 with minor 0x0002 — explicitly unsupported in Phase 6.\n */\nexport const STANDARD_ENCRYPTION_VERSION_MINOR = 0x0002;\n/** Key padding byte when Hfinal is shorter than keyBits/8 (§2.3.4.11). */\nexport const KEY_PAD_BYTE = 0x36;\n/** IV padding byte when IV is shorter than blockSize (§2.3.4.12). */\nexport const IV_PAD_BYTE = 0x36;\n","/**\n * Encryption-related error types shared across Office libraries.\n *\n * @remarks\n * Messages must never include the consumer password or key material.\n * Citation: [MS-OFFCRYPTO] §1.3.3.4, §2.3.4.4–§2.3.4.15.\n */\nconst ONE_KIB = 1024;\nconst ONE_MIB = ONE_KIB * 1024;\nconst ONE_GIB = ONE_MIB * 1024;\n/**\n * Default decrypt limits aligned with typical Office package security defaults.\n */\nexport const DEFAULT_DECRYPT_SECURITY_LIMITS = Object.freeze({\n totalUncompressedBytes: 1 * ONE_GIB,\n singlePartUncompressedBytes: 256 * ONE_MIB,\n xmlNestingDepth: 256,\n xmlAttributesPerElement: 4096,\n textNodeLengthBytes: 32 * ONE_MIB,\n});\n/**\n * Builds effective decrypt limits from optional caller overrides.\n */\nexport function resolveDecryptLimits(overrides) {\n if (overrides === undefined) {\n return DEFAULT_DECRYPT_SECURITY_LIMITS;\n }\n const xmlNestingDepth = (overrides.xmlNestingDepth != null ? overrides.xmlNestingDepth : DEFAULT_DECRYPT_SECURITY_LIMITS.xmlNestingDepth);\n const xmlAttributesPerElement = (overrides.xmlAttributesPerElement != null ? overrides.xmlAttributesPerElement : DEFAULT_DECRYPT_SECURITY_LIMITS.xmlAttributesPerElement);\n const textNodeLengthBytes = (overrides.textNodeLengthBytes != null ? overrides.textNodeLengthBytes : DEFAULT_DECRYPT_SECURITY_LIMITS.textNodeLengthBytes);\n const resolved = Object.assign({ totalUncompressedBytes: (overrides.totalUncompressedBytes != null ? overrides.totalUncompressedBytes : DEFAULT_DECRYPT_SECURITY_LIMITS.totalUncompressedBytes), singlePartUncompressedBytes: (overrides.singlePartUncompressedBytes != null ? overrides.singlePartUncompressedBytes : DEFAULT_DECRYPT_SECURITY_LIMITS.singlePartUncompressedBytes) }, (xmlNestingDepth === undefined ? {} : { xmlNestingDepth }), (xmlAttributesPerElement === undefined ? {} : { xmlAttributesPerElement }), (textNodeLengthBytes === undefined ? {} : { textNodeLengthBytes }));\n return Object.freeze(resolved);\n}\nexport class PackageLimitError extends Error {\n constructor(limit, options = {}) {\n const partSuffix = options.partName === undefined ? '' : ` (part: ${options.partName})`;\n const actualSuffix = options.actual === undefined ? '' : `; actual value: ${String(options.actual)}`;\n super(`Package security limit exceeded: ${limit}${partSuffix}${actualSuffix}`);\n this.name = 'PackageLimitError';\n this.limit = limit;\n this.partName = options.partName;\n this.actual = options.actual;\n // ES5 / AMD emit: restore prototype so `instanceof` works in browsers.\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Raised when the package is encrypted and cannot be opened as supplied.\n */\nexport class EncryptedPackageError extends Error {\n constructor(message) {\n super(message);\n this.name = 'EncryptedPackageError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Raised when a consumer-supplied password fails OFFCRYPTO verification.\n */\nexport class InvalidPasswordError extends Error {\n constructor(message = 'Invalid password') {\n super(message);\n this.name = 'InvalidPasswordError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Raised when the package uses a recognized encryption method this build does not decrypt.\n */\nexport class UnsupportedEncryptionError extends Error {\n constructor(message = 'Unsupported encryption method') {\n super(message);\n this.name = 'UnsupportedEncryptionError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","/*\n * Hash / HMAC / AES-CBC primitives for Agile OFFCRYPTO.\n *\n * @remarks\n * [MS-OFFCRYPTO] §2.3.4.11–§2.3.4.15 pads AES-CBC plaintexts with **0x00** to\n * `blockSize`, not PKCS #7. Node's Web Crypto `AES-CBC` decrypt expects PKCS #7\n * and rejects Office ciphertexts. This module therefore uses the **Node.js\n * built-in** `node:crypto` (`createHash`, `createHmac`, `createDecipheriv` with\n * `setAutoPadding(false)`). That is a platform API, not a new npm dependency\n * (ADR / dependencies policy). No third-party crypto packages.\n *\n * Supported for v1: AES-128/192/256 + CBC; SHA-1 / SHA-256 / SHA-384 / SHA-512.\n * Symbols re-exported from the encryption package entry are public; keep\n * `@private`\n * only on helpers that are not part of that surface.\n *\n * @packageDocumentation\n */\nimport { UnsupportedEncryptionError } from './errors';\nimport { IV_PAD_BYTE, KEY_PAD_BYTE } from './agile-constants';\nfunction __nodeCrypto() {\n try {\n return require('crypto');\n }\n catch (e) {\n throw new Error('Node crypto is required for Agile encryption');\n }\n}\nconst { createCipheriv, createDecipheriv, createHash, createHmac } = __nodeCrypto();\nconst HASH_TO_NODE = {\n 'SHA-1': 'sha1',\n SHA256: 'sha256',\n SHA384: 'sha384',\n SHA512: 'sha512',\n};\nconst HASH_DIGEST_BYTES = {\n 'SHA-1': 20,\n SHA256: 32,\n SHA384: 48,\n SHA512: 64,\n};\n/**\n * Maps OFFCRYPTO hashAlgorithm attribute to an internal name.\n *\n * @throws {UnsupportedEncryptionError} When the algorithm is not in the v1 set.\n */\nexport function resolveHashAlgorithm(name) {\n switch (name) {\n case 'SHA-1':\n case 'SHA1':\n return 'SHA-1';\n case 'SHA256':\n return 'SHA256';\n case 'SHA384':\n return 'SHA384';\n case 'SHA512':\n return 'SHA512';\n default:\n throw new UnsupportedEncryptionError(`Unsupported OFFCRYPTO hashAlgorithm: ${sanitizeAlgToken(name)}`);\n }\n}\n/**\n * Validates cipherAlgorithm + cipherChaining for v1 (AES + CBC only).\n *\n * @throws {UnsupportedEncryptionError} When not AES/CBC.\n */\nexport function assertSupportedCipher(cipherAlgorithm, cipherChaining) {\n if (cipherAlgorithm !== 'AES') {\n throw new UnsupportedEncryptionError(`Unsupported OFFCRYPTO cipherAlgorithm: ${sanitizeAlgToken(cipherAlgorithm)}`);\n }\n if (cipherChaining !== 'ChainingModeCBC') {\n throw new UnsupportedEncryptionError(`Unsupported OFFCRYPTO cipherChaining: ${sanitizeAlgToken(cipherChaining)}`);\n }\n}\n/**\n * Validates AES keyBits (128 / 192 / 256).\n *\n * @throws {UnsupportedEncryptionError} When key length is not a supported AES size.\n */\nexport function assertAesKeyBits(keyBits) {\n if (keyBits !== 128 && keyBits !== 192 && keyBits !== 256) {\n throw new UnsupportedEncryptionError(`Unsupported OFFCRYPTO AES keyBits: ${String(keyBits)}`);\n }\n}\n/** Digest length in bytes for a resolved hash algorithm. */\nexport function hashDigestLength(hash) {\n return HASH_DIGEST_BYTES[hash];\n}\n/** One-shot hash. */\nexport function hashBytes(hash, data) {\n const h = createHash(HASH_TO_NODE[hash]);\n h.update(data);\n return new Uint8Array(h.digest());\n}\n/** HMAC over message with key (DataIntegrity §2.3.4.14). */\nexport function hmacBytes(hash, key, message) {\n const h = createHmac(HASH_TO_NODE[hash], Buffer.from(key));\n h.update(message);\n return new Uint8Array(h.digest());\n}\n/**\n * Concatenates byte arrays.\n *\n * @public\n */\nexport function concatBytes(...parts) {\n let total = 0;\n for (const p of parts) {\n total += p.byteLength;\n }\n const out = new Uint8Array(total);\n let offset = 0;\n for (const p of parts) {\n out.set(p, offset);\n offset += p.byteLength;\n }\n return out;\n}\n/**\n * Encodes a JavaScript string as UTF-16LE (Unicode password bytes, §2.3.4.11).\n */\nexport function encodePasswordUtf16Le(password) {\n const out = new Uint8Array(password.length * 2);\n for (let i = 0; i < password.length; i++) {\n const code = password.charCodeAt(i);\n out[i * 2] = code & 0xff;\n out[i * 2 + 1] = (code >>> 8) & 0xff;\n }\n return out;\n}\n/**\n * Password-based encryption key (§2.3.4.11).\n *\n * H0 = H(salt + password); Hn = H(iterator LE u32 + Hn-1) for spinCount iterations;\n * Hfinal = H(Hn + blockKey); pad/truncate to keyBits/8 with 0x36.\n */\nexport function deriveAgileKey(hash, salt, passwordUtf16Le, spinCount, blockKey, keyBits) {\n let hn = hashBytes(hash, concatBytes(salt, passwordUtf16Le));\n const iterator = new Uint8Array(4);\n const iteratorView = new DataView(iterator.buffer);\n for (let i = 0; i < spinCount; i++) {\n iteratorView.setUint32(0, i, true);\n hn = hashBytes(hash, concatBytes(iterator, hn));\n }\n const hfinal = hashBytes(hash, concatBytes(hn, blockKey));\n return padOrTruncate(hfinal, keyBits / 8, KEY_PAD_BYTE);\n}\n/**\n * Initialization vector (§2.3.4.12).\n *\n * With blockKey: IV = H(keySalt + blockKey); without: IV = keySalt.\n * Pad/truncate to blockSize with 0x36.\n */\nexport function deriveAgileIv(hash, keySalt, blockKey, blockSize) {\n const raw = blockKey === undefined ? keySalt : hashBytes(hash, concatBytes(keySalt, blockKey));\n return padOrTruncate(raw, blockSize, IV_PAD_BYTE);\n}\n/**\n * AES-CBC decrypt with zero padding (no PKCS #7 strip).\n *\n * @param key - AES key (16/24/32 bytes).\n * @param iv - IV of blockSize bytes (AES block is 16; OFFCRYPTO blockSize is 16 for AES).\n * @param ciphertext - Length MUST be a multiple of 16.\n * @returns Plaintext of the same length as ciphertext (including zero pad).\n */\nexport function aesCbcDecrypt(key, iv, ciphertext) {\n if (ciphertext.byteLength === 0) {\n return new Uint8Array(0);\n }\n if (ciphertext.byteLength % 16 !== 0) {\n throw new UnsupportedEncryptionError('OFFCRYPTO AES-CBC ciphertext length is not block-aligned');\n }\n if (iv.byteLength !== 16) {\n throw new UnsupportedEncryptionError('OFFCRYPTO AES-CBC IV must be 16 bytes');\n }\n const algo = aesAlgorithmName(key.byteLength);\n const decipher = createDecipheriv(algo, Buffer.from(key), Buffer.from(iv));\n decipher.setAutoPadding(false);\n const part1 = decipher.update(Buffer.from(ciphertext));\n const part2 = decipher.final();\n if (part2.byteLength === 0) {\n return new Uint8Array(part1);\n }\n const out = new Uint8Array(part1.byteLength + part2.byteLength);\n out.set(part1, 0);\n out.set(part2, part1.byteLength);\n return out;\n}\n/**\n * AES-CBC encrypt with zero padding (no PKCS #7).\n *\n * @remarks\n * Used by test fixture builders and host encrypt harnesses. Same zero-pad\n * rules as decrypt ([MS-OFFCRYPTO] §2.3.4.13 / §2.3.4.15).\n *\n * @public\n */\nexport function aesCbcEncrypt(key, iv, plaintext) {\n if (iv.byteLength !== 16) {\n throw new UnsupportedEncryptionError('OFFCRYPTO AES-CBC IV must be 16 bytes');\n }\n const blockSize = 16;\n const paddedLen = plaintext.byteLength === 0\n ? blockSize\n : Math.ceil(plaintext.byteLength / blockSize) * blockSize;\n const padded = new Uint8Array(paddedLen);\n padded.set(plaintext, 0);\n // remaining bytes stay 0x00 (Agile zero-pad, §2.3.4.13 / §2.3.4.15).\n const algo = aesAlgorithmName(key.byteLength);\n const cipher = createCipheriv(algo, Buffer.from(key), Buffer.from(iv));\n cipher.setAutoPadding(false);\n const part1 = cipher.update(Buffer.from(padded));\n const part2 = cipher.final();\n if (part2.byteLength === 0) {\n return new Uint8Array(part1);\n }\n const out = new Uint8Array(part1.byteLength + part2.byteLength);\n out.set(part1, 0);\n out.set(part2, part1.byteLength);\n return out;\n}\n/**\n * Constant-time comparison of two equal-length buffers.\n * Returns false when lengths differ (not constant-time on length).\n */\nexport function timingSafeEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n let diff = 0;\n for (let i = 0; i < a.byteLength; i++) {\n // Lengths already equal; index is in range. Avoid non-null assertions.\n const left = (a[i] != null ? a[i] : 0);\n const right = (b[i] != null ? b[i] : 0);\n diff |= left ^ right;\n }\n return diff === 0;\n}\nfunction padOrTruncate(data, size, padByte) {\n if (data.byteLength === size) {\n return data;\n }\n if (data.byteLength > size) {\n return data.subarray(0, size);\n }\n const out = new Uint8Array(size);\n out.set(data, 0);\n out.fill(padByte, data.byteLength);\n return out;\n}\nfunction aesAlgorithmName(keyBytes) {\n switch (keyBytes) {\n case 16:\n return 'aes-128-cbc';\n case 24:\n return 'aes-192-cbc';\n case 32:\n return 'aes-256-cbc';\n default:\n throw new UnsupportedEncryptionError('Unsupported AES key length');\n }\n}\n/** Strip control chars so algorithm tokens cannot smuggle secrets into messages. */\nfunction sanitizeAlgToken(token) {\n const cleaned = token.replace(/[^\\w.\\-:/+]/g, '').slice(0, 64);\n return cleaned.length > 0 ? cleaned : '(unrecognized)';\n}\n","/*\n * Minimal attribute-oriented XML element parser for OFFCRYPTO EncryptionInfo.\n *\n * @remarks\n * EncryptionInfo XML is a small attribute-heavy tree (encryption / keyData /\n * dataIntegrity / keyEncryptors). This parser intentionally does **not** pull a\n * full OOXML DOM. It supports nested elements, attributes, default namespaces,\n * and rejects DOCTYPE / entity expansion.\n *\n * @private\n */\nimport { EncryptedPackageError, PackageLimitError, } from './errors';\nconst DEFAULT_XML_NESTING = 256;\nconst DEFAULT_XML_ATTRS = 4096;\nconst DEFAULT_TEXT_NODE = 32 * 1024 * 1024;\n/**\n * Parses EncryptionInfo UTF-8 XML into a single root element tree.\n *\n * @throws {EncryptedPackageError} Malformed XML.\n * @throws {PackageLimitError} Nesting / attribute / text limits.\n */\nexport function parseEncryptionInfoXml(xmlText, limits, partName = 'EncryptionInfo') {\n if (/<!DOCTYPE/i.test(xmlText) || /<!ENTITY/i.test(xmlText)) {\n throw new EncryptedPackageError('EncryptionInfo XML must not contain DTD or entities');\n }\n const maxDepth = (limits.xmlNestingDepth != null ? limits.xmlNestingDepth : DEFAULT_XML_NESTING);\n const maxAttrs = (limits.xmlAttributesPerElement != null ? limits.xmlAttributesPerElement : DEFAULT_XML_ATTRS);\n const maxText = (limits.textNodeLengthBytes != null ? limits.textNodeLengthBytes : DEFAULT_TEXT_NODE);\n let i = 0;\n const length = xmlText.length;\n const skipWs = () => {\n while (i < length) {\n const c = xmlText.charCodeAt(i);\n if (c === 0x20 || c === 0x09 || c === 0x0a || c === 0x0d) {\n i += 1;\n }\n else {\n break;\n }\n }\n };\n const peek = () => (i < length ? xmlText[i] : '');\n const startsWith = (s) => xmlText.startsWith(s, i);\n const readName = () => {\n const start = i;\n while (i < length) {\n const c = xmlText[i];\n if (/[A-Za-z0-9:_.-]/.test(c)) {\n i += 1;\n }\n else {\n break;\n }\n }\n if (i === start) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: expected name');\n }\n return xmlText.slice(start, i);\n };\n const decodeEntities = (raw) => raw\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&apos;/g, \"'\")\n .replace(/&amp;/g, '&');\n const readAttrValue = () => {\n const quote = peek();\n if (quote !== '\"' && quote !== \"'\") {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: attribute value');\n }\n i += 1;\n const start = i;\n while (i < length && xmlText[i] !== quote) {\n i += 1;\n if (i - start > maxText) {\n throw new PackageLimitError('textNodeLengthBytes', { partName, actual: i - start });\n }\n }\n if (i >= length) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed attribute');\n }\n const value = xmlText.slice(start, i);\n i += 1; // closing quote\n return decodeEntities(value);\n };\n const resolveQName = (qName, nsStack, isAttr) => {\n const colon = qName.indexOf(':');\n const prefix = colon === -1 ? '' : qName.slice(0, colon);\n const localName = colon === -1 ? qName : qName.slice(colon + 1);\n if (isAttr && prefix === '') {\n return { localName, namespaceUri: '' };\n }\n if (prefix === 'xmlns') {\n return { localName, namespaceUri: 'http://www.w3.org/2000/xmlns/' };\n }\n for (let s = nsStack.length - 1; s >= 0; s--) {\n const uri = nsStack[s].get(prefix);\n if (uri !== undefined) {\n return { localName, namespaceUri: uri };\n }\n }\n return { localName, namespaceUri: '' };\n };\n const parseElement = (nsStack, depth) => {\n if (depth > maxDepth) {\n throw new PackageLimitError('xmlNestingDepth', { partName, actual: depth });\n }\n if (peek() !== '<') {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: expected element');\n }\n i += 1; // <\n if (peek() === '/') {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unexpected end tag');\n }\n // Skip processing instructions / comments / XML declaration at this level via caller.\n const rawName = readName();\n skipWs();\n const pendingAttrs = [];\n let selfClosing = false;\n const localNs = new Map();\n while (i < length && peek() !== '>' && peek() !== '/') {\n const attrName = readName();\n skipWs();\n if (peek() !== '=') {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: expected =');\n }\n i += 1;\n skipWs();\n const attrValue = readAttrValue();\n skipWs();\n if (attrName === 'xmlns') {\n localNs.set('', attrValue);\n }\n else if (attrName.startsWith('xmlns:')) {\n localNs.set(attrName.slice(6), attrValue);\n }\n else {\n pendingAttrs.push({ qName: attrName, value: attrValue });\n }\n if (pendingAttrs.length > maxAttrs) {\n throw new PackageLimitError('xmlAttributesPerElement', {\n partName,\n actual: pendingAttrs.length,\n });\n }\n }\n if (startsWith('/>')) {\n selfClosing = true;\n i += 2;\n }\n else if (peek() === '>') {\n i += 1;\n }\n else {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: element tag');\n }\n const childNsStack = [...nsStack, localNs];\n const nameResolved = resolveQName(rawName, childNsStack, false);\n const attributes = pendingAttrs.map((a) => {\n const r = resolveQName(a.qName, childNsStack, true);\n return { localName: r.localName, namespaceUri: r.namespaceUri, value: a.value };\n });\n if (selfClosing) {\n return { kind: 'element',\n localName: nameResolved.localName,\n namespaceUri: nameResolved.namespaceUri,\n attributes,\n children: [],\n };\n }\n const children = [];\n for (;;) {\n skipWs();\n if (i >= length) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed element');\n }\n if (startsWith('</')) {\n i += 2;\n const endName = readName();\n skipWs();\n if (peek() !== '>') {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: end tag');\n }\n i += 1;\n if (endName !== rawName) {\n throw new EncryptedPackageError(`EncryptionInfo XML is invalid: mismatched end tag ${endName}`);\n }\n break;\n }\n if (startsWith('<!--')) {\n const end = xmlText.indexOf('-->', i + 4);\n if (end < 0) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed comment');\n }\n i = end + 3;\n continue;\n }\n if (startsWith('<?')) {\n const end = xmlText.indexOf('?>', i + 2);\n if (end < 0) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed PI');\n }\n i = end + 2;\n continue;\n }\n if (peek() === '<') {\n children.push(parseElement(childNsStack, depth + 1));\n continue;\n }\n // Text node — EncryptionInfo does not need text content; skip with limit.\n const textStart = i;\n while (i < length && peek() !== '<') {\n i += 1;\n if (i - textStart > maxText) {\n throw new PackageLimitError('textNodeLengthBytes', {\n partName,\n actual: i - textStart,\n });\n }\n }\n }\n return { kind: 'element',\n localName: nameResolved.localName,\n namespaceUri: nameResolved.namespaceUri,\n attributes,\n children,\n };\n };\n // Skip BOM / XML declaration / leading comments.\n skipWs();\n if (startsWith('\\uFEFF')) {\n i += 1;\n skipWs();\n }\n while (startsWith('<?') || startsWith('<!--')) {\n if (startsWith('<?')) {\n const end = xmlText.indexOf('?>', i + 2);\n if (end < 0) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed declaration');\n }\n i = end + 2;\n }\n else {\n const end = xmlText.indexOf('-->', i + 4);\n if (end < 0) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed comment');\n }\n i = end + 3;\n }\n skipWs();\n }\n const root = parseElement([new Map()], 1);\n skipWs();\n if (i < length) {\n // Allow trailing whitespace only (already skipped); anything else is junk.\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: trailing content');\n }\n return root;\n}\n","/*\n * Parse EncryptionInfo stream for Agile encryption ([MS-OFFCRYPTO] §2.3.4.10).\n *\n * @remarks\n * Binary header: VersionMajor, VersionMinor (2 bytes each LE), Reserved (4 bytes LE),\n * then UTF-8 XML. Agile is **4.4** with Reserved **0x00000040**.\n * Standard Encryption (minor version 2) is explicitly unsupported.\n *\n * @private\n */\nimport { AGILE_ENCRYPTION_NS, AGILE_RESERVED, AGILE_VERSION_MAJOR, AGILE_VERSION_MINOR, MAX_SPIN_COUNT, PASSWORD_KEY_ENCRYPTOR_URI, STANDARD_ENCRYPTION_VERSION_MINOR, } from './agile-constants';\nimport { assertAesKeyBits, assertSupportedCipher, resolveHashAlgorithm, } from './crypto-primitives';\nimport { EncryptedPackageError, UnsupportedEncryptionError, } from './errors';\nimport { parseEncryptionInfoXml } from './encryption-info-xml';\nfunction __gt() {\n // Prefer Node global; fall back to browser window. Avoid @types/node.\n var g = (function () {\n try {\n // eslint-disable-next-line no-new-func\n return Function('return this')();\n }\n catch (e) {\n return {};\n }\n })();\n return g || {};\n}\nconst HEADER_BYTES = 8;\n/**\n * Parses EncryptionInfo stream bytes into an Agile model.\n *\n * @throws {UnsupportedEncryptionError} Standard Encryption or unknown version/alg.\n * @throws {EncryptedPackageError} Truncated or missing required Agile fields.\n */\nexport function parseAgileEncryptionInfo(encryptionInfo, limits) {\n if (encryptionInfo.byteLength < HEADER_BYTES + 1) {\n throw new EncryptedPackageError('EncryptionInfo stream is truncated');\n }\n const view = new DataView(encryptionInfo.buffer, encryptionInfo.byteOffset, encryptionInfo.byteLength);\n const versionMajor = view.getUint16(0, true);\n const versionMinor = view.getUint16(2, true);\n const reserved = view.getUint32(4, true);\n // Standard Encryption: major 2|3|4, minor 2 ([MS-OFFCRYPTO] §2.3.4.5).\n if (versionMinor === STANDARD_ENCRYPTION_VERSION_MINOR &&\n (versionMajor === 2 || versionMajor === 3 || versionMajor === 4)) {\n throw new UnsupportedEncryptionError('OFFCRYPTO Standard Encryption (EncryptionInfo minor version 2) is not supported; Agile (4.4) only');\n }\n if (versionMajor !== AGILE_VERSION_MAJOR || versionMinor !== AGILE_VERSION_MINOR) {\n throw new UnsupportedEncryptionError(`Unsupported EncryptionInfo version ${String(versionMajor)}.${String(versionMinor)}`);\n }\n if (reserved !== AGILE_RESERVED) {\n throw new UnsupportedEncryptionError(`Unsupported EncryptionInfo reserved field 0x${reserved.toString(16)}`);\n }\n const xmlBytes = encryptionInfo.subarray(HEADER_BYTES);\n const xmlText = utf8Decode(xmlBytes);\n let root;\n try {\n root = parseEncryptionInfoXml(xmlText, limits, 'EncryptionInfo');\n }\n catch (err) {\n if (err instanceof EncryptedPackageError || err instanceof UnsupportedEncryptionError) {\n throw err;\n }\n if (err instanceof Error && err.name === 'PackageLimitError') {\n throw err;\n }\n const msg = err instanceof Error ? err.message : 'XML parse failed';\n throw new EncryptedPackageError(`EncryptionInfo XML is invalid: ${msg}`);\n }\n if (root.localName !== 'encryption' || root.namespaceUri !== AGILE_ENCRYPTION_NS) {\n // Accept default-ns resolution failures only when localName matches and NS empty\n // after serializers omit xmlns on root (rare); still require encryption localName.\n if (root.localName !== 'encryption') {\n throw new EncryptedPackageError('EncryptionInfo root element is not encryption');\n }\n if (root.namespaceUri !== '' && root.namespaceUri !== AGILE_ENCRYPTION_NS) {\n throw new EncryptedPackageError('EncryptionInfo root element is not encryption');\n }\n }\n const keyDataEl = findChild(root, AGILE_ENCRYPTION_NS, 'keyData');\n const dataIntegrityEl = findChildOptional(root, AGILE_ENCRYPTION_NS, 'dataIntegrity');\n const keyEncryptorsEl = findChild(root, AGILE_ENCRYPTION_NS, 'keyEncryptors');\n const keyData = parseKeyData(keyDataEl);\n const dataIntegrity = dataIntegrityEl === undefined ? undefined : parseDataIntegrity(dataIntegrityEl);\n const passwordKeyEncryptor = parsePasswordKeyEncryptor(keyEncryptorsEl);\n return { keyData, dataIntegrity, passwordKeyEncryptor };\n}\nfunction parseKeyData(el) {\n const saltSize = requirePositiveIntAttr(el, 'saltSize');\n const blockSize = requirePositiveIntAttr(el, 'blockSize');\n const keyBits = requirePositiveIntAttr(el, 'keyBits');\n const hashSize = requirePositiveIntAttr(el, 'hashSize');\n const cipherAlgorithm = requireAttr(el, 'cipherAlgorithm');\n const cipherChaining = requireAttr(el, 'cipherChaining');\n const hashAlgorithmRaw = requireAttr(el, 'hashAlgorithm');\n const saltValue = requireBase64Attr(el, 'saltValue');\n assertSupportedCipher(cipherAlgorithm, cipherChaining);\n assertAesKeyBits(keyBits);\n const hashAlgorithm = resolveHashAlgorithm(hashAlgorithmRaw);\n if (blockSize !== 16) {\n throw new UnsupportedEncryptionError(`Unsupported OFFCRYPTO blockSize: ${String(blockSize)} (AES requires 16)`);\n }\n if (saltValue.byteLength !== saltSize) {\n throw new EncryptedPackageError('keyData saltValue length does not match saltSize');\n }\n return {\n saltSize,\n blockSize,\n keyBits,\n hashSize,\n cipherAlgorithm,\n cipherChaining,\n hashAlgorithm,\n saltValue,\n };\n}\nfunction parseDataIntegrity(el) {\n return {\n encryptedHmacKey: requireBase64Attr(el, 'encryptedHmacKey'),\n encryptedHmacValue: requireBase64Attr(el, 'encryptedHmacValue'),\n };\n}\nfunction parsePasswordKeyEncryptor(keyEncryptorsEl) {\n const encryptorEls = keyEncryptorsEl.children.filter((c) => c.kind === 'element' && c.localName === 'keyEncryptor');\n if (encryptorEls.length === 0) {\n throw new EncryptedPackageError('EncryptionInfo has no keyEncryptor');\n }\n let passwordEl;\n for (const ke of encryptorEls) {\n const uri = getAttr(ke, 'uri');\n if (uri === PASSWORD_KEY_ENCRYPTOR_URI) {\n passwordEl = findEncryptedKey(ke);\n break;\n }\n if (uri !== undefined && uri.length > 0) {\n throw new UnsupportedEncryptionError('OFFCRYPTO certificate (or non-password) keyEncryptor is not supported');\n }\n }\n if (passwordEl === undefined) {\n throw new UnsupportedEncryptionError('OFFCRYPTO EncryptionInfo has no password keyEncryptor');\n }\n const spinCount = requireNonNegativeIntAttr(passwordEl, 'spinCount');\n if (spinCount > MAX_SPIN_COUNT) {\n throw new EncryptedPackageError(`OFFCRYPTO spinCount exceeds maximum allowed (${String(MAX_SPIN_COUNT)})`);\n }\n const saltSize = requirePositiveIntAttr(passwordEl, 'saltSize');\n const blockSize = requirePositiveIntAttr(passwordEl, 'blockSize');\n const keyBits = requirePositiveIntAttr(passwordEl, 'keyBits');\n const hashSize = requirePositiveIntAttr(passwordEl, 'hashSize');\n const cipherAlgorithm = requireAttr(passwordEl, 'cipherAlgorithm');\n const cipherChaining = requireAttr(passwordEl, 'cipherChaining');\n const hashAlgorithmRaw = requireAttr(passwordEl, 'hashAlgorithm');\n const saltValue = requireBase64Attr(passwordEl, 'saltValue');\n const encryptedVerifierHashInput = requireBase64Attr(passwordEl, 'encryptedVerifierHashInput');\n const encryptedVerifierHashValue = requireBase64Attr(passwordEl, 'encryptedVerifierHashValue');\n const encryptedKeyValue = requireBase64Attr(passwordEl, 'encryptedKeyValue');\n assertSupportedCipher(cipherAlgorithm, cipherChaining);\n assertAesKeyBits(keyBits);\n const hashAlgorithm = resolveHashAlgorithm(hashAlgorithmRaw);\n if (blockSize !== 16) {\n throw new UnsupportedEncryptionError(`Unsupported password keyEncryptor blockSize: ${String(blockSize)}`);\n }\n if (saltValue.byteLength !== saltSize) {\n throw new EncryptedPackageError('encryptedKey saltValue length does not match saltSize');\n }\n return {\n spinCount,\n saltSize,\n blockSize,\n keyBits,\n hashSize,\n cipherAlgorithm,\n cipherChaining,\n hashAlgorithm,\n saltValue,\n encryptedVerifierHashInput,\n encryptedVerifierHashValue,\n encryptedKeyValue,\n };\n}\nfunction findEncryptedKey(keyEncryptor) {\n for (const child of keyEncryptor.children) {\n if (child.kind !== 'element') {\n continue;\n }\n if (child.localName === 'encryptedKey') {\n return child;\n }\n }\n return undefined;\n}\nfunction findChild(parent, ns, localName) {\n const el = findChildOptional(parent, ns, localName);\n if (el === undefined) {\n throw new EncryptedPackageError(`EncryptionInfo missing element ${localName}`);\n }\n return el;\n}\nfunction findChildOptional(parent, ns, localName) {\n for (const child of parent.children) {\n if (child.kind !== 'element') {\n continue;\n }\n if (child.localName === localName && (child.namespaceUri === ns || child.namespaceUri === '')) {\n return child;\n }\n }\n for (const child of parent.children) {\n if (child.kind === 'element' && child.localName === localName) {\n return child;\n }\n }\n return undefined;\n}\nfunction getAttr(el, localName) {\n for (const a of el.attributes) {\n if (a.localName === localName) {\n return a.value;\n }\n }\n return undefined;\n}\nfunction requireAttr(el, localName) {\n const v = getAttr(el, localName);\n if (v === undefined || v.length === 0) {\n throw new EncryptedPackageError(`EncryptionInfo missing attribute ${localName}`);\n }\n return v;\n}\nfunction requirePositiveIntAttr(el, localName) {\n const raw = requireAttr(el, localName);\n const n = Number.parseInt(raw, 10);\n if (!Number.isFinite(n) || n <= 0) {\n throw new EncryptedPackageError(`EncryptionInfo attribute ${localName} is invalid`);\n }\n return n;\n}\nfunction requireNonNegativeIntAttr(el, localName) {\n const raw = requireAttr(el, localName);\n const n = Number.parseInt(raw, 10);\n if (!Number.isFinite(n) || n < 0) {\n throw new EncryptedPackageError(`EncryptionInfo attribute ${localName} is invalid`);\n }\n return n;\n}\nfunction requireBase64Attr(el, localName) {\n const raw = requireAttr(el, localName);\n try {\n return base64Decode(raw);\n }\n catch (_a) {\n throw new EncryptedPackageError(`EncryptionInfo attribute ${localName} is not valid base64`);\n }\n}\nfunction base64Decode(value) {\n const normalized = value.replace(/\\s+/g, '');\n if (typeof __gt().atob === 'function') {\n const bin = __gt().atob(normalized);\n const out = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) {\n out[i] = bin.charCodeAt(i);\n }\n return out;\n }\n return new Uint8Array(Buffer.from(normalized, 'base64'));\n}\nfunction utf8Decode(bytes) {\n return new TextDecoder('utf-8', { fatal: true }).decode(bytes);\n}\n","/*\n * Password key encryptor verifier and intermediate key ([MS-OFFCRYPTO] §2.3.4.13).\n *\n * @remarks\n * 1. Derive key with blockKey `BLOCK_KEY_VERIFIER_INPUT`; decrypt encryptedVerifierHashInput.\n * 2. Hash the decrypted verifier input; derive key with `BLOCK_KEY_VERIFIER_HASH`;\n * decrypt encryptedVerifierHashValue; compare first hashSize bytes → else InvalidPasswordError.\n * 3. Derive key with `BLOCK_KEY_ENCRYPTED_KEY`; decrypt encryptedKeyValue → intermediate key\n * (truncated to keyBits/8).\n *\n * Integrity HMAC failure uses the same InvalidPasswordError (fail-closed; do not\n * distinguish wrong password vs tampered package in the public message).\n *\n * @private\n */\nimport { InvalidPasswordError } from './errors';\nimport { BLOCK_KEY_ENCRYPTOR_KEY, BLOCK_KEY_VERIFIER_HASH, BLOCK_KEY_VERIFIER_INPUT, } from './agile-constants';\nimport { aesCbcDecrypt, deriveAgileIv, deriveAgileKey, encodePasswordUtf16Le, hashBytes, timingSafeEqual, } from './crypto-primitives';\n/**\n * Verifies the password and returns the secret key used to decrypt EncryptedPackage\n * (decrypted encryptedKeyValue, truncated to keyBits/8).\n *\n * @throws {InvalidPasswordError} When verifier hash does not match.\n */\nexport function unlockIntermediateKey(password, encryptor) {\n const passwordBytes = encodePasswordUtf16Le(password);\n const { hashAlgorithm, saltValue, spinCount, keyBits, blockSize, hashSize } = encryptor;\n // --- verifier hash input ---\n const keyVerifierInput = deriveAgileKey(hashAlgorithm, saltValue, passwordBytes, spinCount, BLOCK_KEY_VERIFIER_INPUT, keyBits);\n const ivVerifierInput = deriveAgileIv(hashAlgorithm, saltValue, undefined, blockSize);\n const verifierInputPadded = aesCbcDecrypt(keyVerifierInput, ivVerifierInput, encryptor.encryptedVerifierHashInput);\n // §2.3.4.13: verifier input is saltSize random bytes (zero-padded to blockSize on encrypt).\n if (verifierInputPadded.byteLength < encryptor.saltSize) {\n throw new InvalidPasswordError();\n }\n const verifierInput = verifierInputPadded.subarray(0, encryptor.saltSize);\n const verifierHashComputed = hashBytes(hashAlgorithm, verifierInput);\n // --- verifier hash value ---\n const keyVerifierHash = deriveAgileKey(hashAlgorithm, saltValue, passwordBytes, spinCount, BLOCK_KEY_VERIFIER_HASH, keyBits);\n const ivVerifierHash = deriveAgileIv(hashAlgorithm, saltValue, undefined, blockSize);\n const verifierHashDecrypted = aesCbcDecrypt(keyVerifierHash, ivVerifierHash, encryptor.encryptedVerifierHashValue);\n const expectedLen = Math.min(hashSize, verifierHashComputed.byteLength, verifierHashDecrypted.byteLength);\n if (expectedLen <= 0) {\n throw new InvalidPasswordError();\n }\n if (!timingSafeEqual(verifierHashComputed.subarray(0, expectedLen), verifierHashDecrypted.subarray(0, expectedLen))) {\n throw new InvalidPasswordError();\n }\n // --- encrypted key value → intermediate / secret key ---\n const keyEncryptedKey = deriveAgileKey(hashAlgorithm, saltValue, passwordBytes, spinCount, BLOCK_KEY_ENCRYPTOR_KEY, keyBits);\n const ivEncryptedKey = deriveAgileIv(hashAlgorithm, saltValue, undefined, blockSize);\n const decryptedKey = aesCbcDecrypt(keyEncryptedKey, ivEncryptedKey, encryptor.encryptedKeyValue);\n const keyLen = keyBits / 8;\n if (decryptedKey.byteLength < keyLen) {\n throw new InvalidPasswordError();\n }\n return decryptedKey.subarray(0, keyLen);\n}\n","/*\n * Minimal OLE Compound File Binary (CFB) reader for OFFCRYPTO streams.\n *\n * @remarks\n * Reads only what is required to extract root storage streams named\n * `EncryptionInfo` and `EncryptedPackage` ([MS-OFFCRYPTO] §2.3.4.4,\n * §2.3.4.10). Layout fields follow the well-known CFB header / FAT /\n * directory structure used by ECMA-376 encrypted packages. This is **not** a\n * full [MS-CFB] implementation — no local MS-CFB corpus is present under\n * `specs/`; only the subset needed for named-stream extraction is coded.\n *\n * Fail closed on truncated headers, broken FAT chains, or missing streams.\n *\n * @private\n */\nimport { EncryptedPackageError } from './errors';\nimport { STREAM_ENCRYPTED_PACKAGE, STREAM_ENCRYPTION_INFO } from './agile-constants';\n/** OLE CFB header signature ([MS-CFB]). */\nconst OLE_CFB_SIGNATURE = Object.freeze([0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1]);\n/** Sector size shift for 512-byte sectors (common default). */\nconst SECTOR_SHIFT_512 = 9;\n/** Sector size shift for 4096-byte sectors. */\nconst SECTOR_SHIFT_4096 = 12;\nconst ENDOFCHAIN = 0xfffffffe;\nconst FREESECT = 0xffffffff;\nconst FATSECT = 0xfffffffd;\nconst DIFSECT = 0xfffffffc;\nconst DIR_ENTRY_SIZE = 128;\nconst MAX_DIR_ENTRIES = 65536;\nconst MAX_FAT_SECTORS = 1048576;\n/**\n * Extracts `\\EncryptionInfo` and `\\EncryptedPackage` from an OFFCRYPTO CFB.\n *\n * @param input - Entire OLE compound-file bytes.\n * @throws {EncryptedPackageError} When structure is incomplete or streams missing.\n */\nexport function readOffCryptoStreams(input) {\n if (input.byteLength < 512) {\n throw new EncryptedPackageError('OFFCRYPTO package is truncated (CFB header)');\n }\n for (let i = 0; i < OLE_CFB_SIGNATURE.length; i++) {\n if (input[i] !== OLE_CFB_SIGNATURE[i]) {\n throw new EncryptedPackageError('Package is not a valid OLE compound file');\n }\n }\n const view = new DataView(input.buffer, input.byteOffset, input.byteLength);\n const sectorShift = view.getUint16(30, true);\n if (sectorShift !== SECTOR_SHIFT_512 && sectorShift !== SECTOR_SHIFT_4096) {\n throw new EncryptedPackageError('Unsupported CFB sector size');\n }\n const sectorSize = 1 << sectorShift;\n const miniSectorShift = view.getUint16(32, true);\n if (miniSectorShift !== 6) {\n // Standard mini-sector is 64 bytes; refuse unknown layouts.\n throw new EncryptedPackageError('Unsupported CFB mini-sector size');\n }\n const miniSectorSize = 1 << miniSectorShift;\n const miniStreamCutoff = view.getUint32(56, true);\n const firstDirSector = view.getUint32(48, true);\n const firstMiniFatSector = view.getUint32(60, true);\n const miniFatSectorCount = view.getUint32(64, true);\n const fatSectorCount = view.getUint32(44, true);\n const firstDifatSector = view.getUint32(68, true);\n const difatSectorCount = view.getUint32(72, true);\n if (fatSectorCount > MAX_FAT_SECTORS) {\n throw new EncryptedPackageError('CFB FAT is unreasonably large');\n }\n const difat = [];\n for (let i = 0; i < 109; i++) {\n const sect = view.getUint32(76 + i * 4, true);\n if (sect !== FREESECT) {\n difat.push(sect);\n }\n }\n let difatSect = firstDifatSector;\n for (let n = 0; n < difatSectorCount; n++) {\n if (difatSect === ENDOFCHAIN || difatSect === FREESECT) {\n break;\n }\n const offset = sectorOffset(difatSect, sectorSize);\n ensureRange(input, offset, sectorSize);\n const entriesPerSector = sectorSize / 4 - 1;\n for (let i = 0; i < entriesPerSector; i++) {\n const sect = view.getUint32(offset + i * 4, true);\n if (sect !== FREESECT) {\n difat.push(sect);\n }\n }\n difatSect = view.getUint32(offset + entriesPerSector * 4, true);\n }\n if (difat.length < fatSectorCount) {\n throw new EncryptedPackageError('CFB DIFAT is truncated');\n }\n const fat = [];\n for (let i = 0; i < fatSectorCount; i++) {\n const fatSect = difat[i];\n if (fatSect === undefined) {\n throw new EncryptedPackageError('CFB DIFAT is truncated');\n }\n const offset = sectorOffset(fatSect, sectorSize);\n ensureRange(input, offset, sectorSize);\n const entries = sectorSize / 4;\n for (let j = 0; j < entries; j++) {\n fat.push(view.getUint32(offset + j * 4, true));\n }\n }\n const directoryBytes = readChain(input, view, fat, firstDirSector, sectorSize, undefined);\n if (directoryBytes.byteLength < DIR_ENTRY_SIZE) {\n throw new EncryptedPackageError('CFB directory is empty');\n }\n const entryCount = Math.min(Math.floor(directoryBytes.byteLength / DIR_ENTRY_SIZE), MAX_DIR_ENTRIES);\n const dirView = new DataView(directoryBytes.buffer, directoryBytes.byteOffset, directoryBytes.byteLength);\n const entries = [];\n for (let i = 0; i < entryCount; i++) {\n const base = i * DIR_ENTRY_SIZE;\n const nameLength = dirView.getUint16(base + 64, true);\n // nameLength includes the terminating null (2 bytes) when non-zero.\n const charCount = nameLength >= 2 ? Math.floor((nameLength - 2) / 2) : 0;\n let name = '';\n for (let c = 0; c < charCount && c < 32; c++) {\n name += String.fromCharCode(dirView.getUint16(base + c * 2, true));\n }\n const objectType = dirView.getUint8(base + 66);\n const childId = dirView.getUint32(base + 76, true);\n const startSector = dirView.getUint32(base + 116, true);\n // Stream size is 8 bytes LE; OFFCRYPTO streams fit in lower 32 bits for our limits.\n const streamSizeLow = dirView.getUint32(base + 120, true);\n const streamSizeHigh = dirView.getUint32(base + 124, true);\n if (streamSizeHigh !== 0) {\n throw new EncryptedPackageError('OFFCRYPTO stream exceeds supported size');\n }\n entries.push({\n name,\n objectType,\n startSector,\n streamSize: streamSizeLow,\n childId,\n });\n }\n const root = entries[0];\n if (root === undefined || root.objectType !== 5) {\n throw new EncryptedPackageError('CFB root storage is missing');\n }\n // Collect names under root via sibling tree walk (left/right/child).\n const found = new Map();\n const visited = new Set();\n const walk = (id) => {\n if (id > 0xfffffffa || id >= entries.length || visited.has(id)) {\n return;\n }\n visited.add(id);\n const e = entries[id];\n if (e === undefined) {\n return;\n }\n const left = dirView.getUint32(id * DIR_ENTRY_SIZE + 68, true);\n const right = dirView.getUint32(id * DIR_ENTRY_SIZE + 72, true);\n walk(left);\n if (e.objectType === 2 /* stream */) {\n found.set(e.name, e);\n }\n walk(right);\n if (e.objectType === 1 /* storage */ || e.objectType === 5 /* root */) {\n walk(e.childId);\n }\n };\n walk(root.childId);\n const infoEntry = found.get(STREAM_ENCRYPTION_INFO);\n const pkgEntry = found.get(STREAM_ENCRYPTED_PACKAGE);\n if (infoEntry === undefined || pkgEntry === undefined) {\n throw new EncryptedPackageError('OFFCRYPTO streams EncryptionInfo and/or EncryptedPackage are missing');\n }\n let miniFat;\n let miniStream;\n const readStream = (entry) => {\n if (entry.streamSize === 0) {\n return new Uint8Array(0);\n }\n if (entry.streamSize < miniStreamCutoff && entry !== root) {\n if (miniFat === undefined) {\n miniFat = readMiniFat(input, view, fat, firstMiniFatSector, miniFatSectorCount, sectorSize);\n // Root stream size may be larger than mini data; chain until end.\n miniStream = readChain(input, view, fat, root.startSector, sectorSize, undefined);\n }\n if (miniStream === undefined) {\n throw new EncryptedPackageError('CFB mini-stream is unavailable');\n }\n return readMiniChain(miniStream, miniFat, entry.startSector, miniSectorSize, entry.streamSize);\n }\n return readChain(input, view, fat, entry.startSector, sectorSize, entry.streamSize);\n };\n return {\n encryptionInfo: readStream(infoEntry),\n encryptedPackage: readStream(pkgEntry),\n };\n}\nfunction sectorOffset(sectorIndex, sectorSize) {\n // Sector 0 starts after the 512-byte header for 512-byte sectors; for 4096,\n // header occupies the first sector region — offset is still (sector+1)*size\n // relative to file start for standard CFB.\n return (sectorIndex + 1) * sectorSize;\n}\nfunction ensureRange(input, offset, length) {\n if (offset < 0 || length < 0 || offset + length > input.byteLength) {\n throw new EncryptedPackageError('OFFCRYPTO package is truncated (CFB sector)');\n }\n}\nfunction readChain(input, view, fat, startSector, sectorSize, maxBytes) {\n if (startSector === ENDOFCHAIN || startSector === FREESECT) {\n return new Uint8Array(0);\n }\n const chunks = [];\n let total = 0;\n let sector = startSector;\n let guard = 0;\n const maxGuard = fat.length + 2;\n while (sector !== ENDOFCHAIN && sector !== FREESECT) {\n if (guard++ > maxGuard) {\n throw new EncryptedPackageError('CFB FAT chain is cyclic or unbounded');\n }\n if (sector === FATSECT || sector === DIFSECT) {\n throw new EncryptedPackageError('CFB FAT chain contains reserved sector');\n }\n if (sector < 0 || sector >= fat.length) {\n // Allow reading last data sector without FAT entry for short files: still need bounds.\n const offsetTry = sectorOffset(sector, sectorSize);\n if (offsetTry + sectorSize > input.byteLength && offsetTry >= input.byteLength) {\n throw new EncryptedPackageError('CFB FAT chain sector out of range');\n }\n }\n const offset = sectorOffset(sector, sectorSize);\n ensureRange(input, offset, Math.min(sectorSize, input.byteLength - offset));\n const take = Math.min(sectorSize, input.byteLength - offset);\n const slice = input.subarray(offset, offset + take);\n chunks.push(slice);\n total += slice.byteLength;\n if (maxBytes !== undefined && total >= maxBytes) {\n break;\n }\n if (sector >= fat.length) {\n throw new EncryptedPackageError('CFB FAT chain sector out of range');\n }\n const nextSector = fat[sector];\n if (nextSector === undefined) {\n throw new EncryptedPackageError('CFB FAT chain sector out of range');\n }\n sector = nextSector;\n }\n const out = concat(chunks);\n if (maxBytes !== undefined) {\n if (out.byteLength < maxBytes) {\n throw new EncryptedPackageError('OFFCRYPTO stream data is truncated');\n }\n return out.subarray(0, maxBytes);\n }\n return out;\n}\nfunction readMiniFat(input, view, fat, firstMiniFatSector, miniFatSectorCount, sectorSize) {\n if (miniFatSectorCount === 0 || firstMiniFatSector === ENDOFCHAIN) {\n return [];\n }\n const bytes = readChain(input, view, fat, firstMiniFatSector, sectorSize, miniFatSectorCount * sectorSize);\n const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const entries = [];\n for (let i = 0; i + 4 <= bytes.byteLength; i += 4) {\n entries.push(dv.getUint32(i, true));\n }\n return entries;\n}\nfunction readMiniChain(miniStream, miniFat, startSector, miniSectorSize, streamSize) {\n const chunks = [];\n let total = 0;\n let sector = startSector;\n let guard = 0;\n const maxGuard = miniFat.length + 2;\n while (sector !== ENDOFCHAIN && sector !== FREESECT && total < streamSize) {\n if (guard++ > maxGuard) {\n throw new EncryptedPackageError('CFB mini-FAT chain is cyclic or unbounded');\n }\n const offset = sector * miniSectorSize;\n if (offset >= miniStream.byteLength) {\n throw new EncryptedPackageError('CFB mini-stream is truncated');\n }\n const take = Math.min(miniSectorSize, miniStream.byteLength - offset, streamSize - total);\n chunks.push(miniStream.subarray(offset, offset + take));\n total += take;\n if (sector >= miniFat.length) {\n throw new EncryptedPackageError('CFB mini-FAT sector out of range');\n }\n const nextMini = miniFat[sector];\n if (nextMini === undefined) {\n throw new EncryptedPackageError('CFB mini-FAT sector out of range');\n }\n sector = nextMini;\n }\n const out = concat(chunks);\n if (out.byteLength < streamSize) {\n throw new EncryptedPackageError('OFFCRYPTO mini-stream data is truncated');\n }\n return out.subarray(0, streamSize);\n}\nfunction concat(chunks) {\n let total = 0;\n for (const c of chunks) {\n total += c.byteLength;\n }\n const out = new Uint8Array(total);\n let offset = 0;\n for (const c of chunks) {\n out.set(c, offset);\n offset += c.byteLength;\n }\n return out;\n}\n","/*\n * Decrypt EncryptedPackage stream ([MS-OFFCRYPTO] §2.3.4.4, §2.3.4.15)\n * and optional DataIntegrity HMAC (§2.3.4.14).\n *\n * @remarks\n * Layout: 8-byte little-endian StreamSize (u64) + encrypted payload.\n * Payload is segmented in 4096-byte blocks; each segment uses blockKey =\n * segment number as LE u32 with KeyData.saltValue for the IV\n * (§2.3.4.12 / §2.3.4.15). Secret key is the intermediate key from the\n * password key encryptor.\n *\n * DataIntegrity: decrypt encryptedHmacKey with blockKey BLOCK_KEY_HMAC_KEY\n * and KeyData; decrypt encryptedHmacValue with BLOCK_KEY_HMAC_VALUE; HMAC\n * the **entire** EncryptedPackage stream (including StreamSize prefix)\n * with KeyData.hashAlgorithm; compare → fail closed as InvalidPasswordError.\n *\n * @private\n */\nimport { EncryptedPackageError, InvalidPasswordError, PackageLimitError, } from './errors';\nimport { BLOCK_KEY_HMAC_KEY, BLOCK_KEY_HMAC_VALUE, ENCRYPTED_PACKAGE_SEGMENT_SIZE, } from './agile-constants';\nimport { aesCbcDecrypt, deriveAgileIv, hashDigestLength, hmacBytes, timingSafeEqual, } from './crypto-primitives';\nconst STREAM_SIZE_BYTES = 8;\n/**\n * Decrypts EncryptedPackage ciphertext to plain OPC ZIP bytes.\n *\n * @param encryptedPackage - Full EncryptedPackage stream bytes.\n * @param secretKey - Intermediate key from password unlock (keyBits/8).\n * @param keyData - KeyData from EncryptionInfo.\n * @param dataIntegrity - Optional integrity structure.\n * @param limits - Security limits (single-part / total uncompressed caps).\n *\n * @throws {PackageLimitError} When StreamSize or ciphertext exceeds limits.\n * @throws {InvalidPasswordError} When DataIntegrity HMAC fails (fail-closed).\n * @throws {EncryptedPackageError} When stream structure is invalid.\n */\nexport function decryptEncryptedPackageStream(encryptedPackage, secretKey, keyData, dataIntegrity, limits) {\n if (encryptedPackage.byteLength < STREAM_SIZE_BYTES) {\n throw new EncryptedPackageError('EncryptedPackage stream is truncated');\n }\n // Hard cap ciphertext before any crypto work.\n const maxCipher = Math.max(limits.singlePartUncompressedBytes, limits.totalUncompressedBytes);\n if (encryptedPackage.byteLength >\n maxCipher + STREAM_SIZE_BYTES + ENCRYPTED_PACKAGE_SEGMENT_SIZE) {\n throw new PackageLimitError('singlePartUncompressedBytes', {\n actual: encryptedPackage.byteLength,\n });\n }\n const view = new DataView(encryptedPackage.buffer, encryptedPackage.byteOffset, encryptedPackage.byteLength);\n // StreamSize is u64 LE; JS safe integer covers realistic packages under limits.\n const streamSizeLow = view.getUint32(0, true);\n const streamSizeHigh = view.getUint32(4, true);\n if (streamSizeHigh !== 0) {\n throw new PackageLimitError('singlePartUncompressedBytes', {\n actual: Number.MAX_SAFE_INTEGER,\n });\n }\n const streamSize = streamSizeLow;\n if (streamSize > limits.singlePartUncompressedBytes) {\n throw new PackageLimitError('singlePartUncompressedBytes', { actual: streamSize });\n }\n if (streamSize > limits.totalUncompressedBytes) {\n throw new PackageLimitError('totalUncompressedBytes', { actual: streamSize });\n }\n const ciphertext = encryptedPackage.subarray(STREAM_SIZE_BYTES);\n if (ciphertext.byteLength === 0 && streamSize > 0) {\n throw new EncryptedPackageError('EncryptedPackage has StreamSize but no ciphertext');\n }\n // DataIntegrity over entire EncryptedPackage including StreamSize (§2.3.4.14).\n if (dataIntegrity !== undefined) {\n verifyDataIntegrity(encryptedPackage, secretKey, keyData, dataIntegrity);\n }\n const plain = decryptSegments(ciphertext, secretKey, keyData);\n if (plain.byteLength < streamSize) {\n throw new EncryptedPackageError('Decrypted EncryptedPackage is shorter than StreamSize');\n }\n return plain.subarray(0, streamSize);\n}\nfunction decryptSegments(ciphertext, secretKey, keyData) {\n const segmentSize = ENCRYPTED_PACKAGE_SEGMENT_SIZE;\n const blockSize = keyData.blockSize;\n const out = new Uint8Array(ciphertext.byteLength);\n let outOffset = 0;\n let segmentIndex = 0;\n let offset = 0;\n while (offset < ciphertext.byteLength) {\n const remaining = ciphertext.byteLength - offset;\n // Last segment may be shorter but must still be block-aligned (zero-pad encrypt).\n const segmentLen = remaining > segmentSize ? segmentSize : remaining;\n // If not last full logical segment and remaining > segmentSize we took segmentSize.\n // Ciphertext of each segment is rounded up to blockSize on encrypt; remaining should\n // already be multiple of blockSize for every piece.\n if (segmentLen % blockSize !== 0) {\n // Pad expectation: encryptor wrote full blocks; tolerate by rounding down if corrupt.\n throw new EncryptedPackageError('EncryptedPackage segment is not block-aligned');\n }\n const segmentCt = ciphertext.subarray(offset, offset + segmentLen);\n const blockKey = segmentBlockKey(segmentIndex);\n const iv = deriveAgileIv(keyData.hashAlgorithm, keyData.saltValue, blockKey, blockSize);\n const segmentPt = aesCbcDecrypt(secretKey, iv, segmentCt);\n out.set(segmentPt, outOffset);\n outOffset += segmentPt.byteLength;\n offset += segmentLen;\n segmentIndex += 1;\n }\n return out.subarray(0, outOffset);\n}\nfunction segmentBlockKey(segmentIndex) {\n const buf = new Uint8Array(4);\n new DataView(buf.buffer).setUint32(0, segmentIndex >>> 0, true);\n return buf;\n}\n/**\n * §2.3.4.14 DataIntegrity verification.\n *\n * Fail-closed: HMAC mismatch → InvalidPasswordError (same public class as wrong\n * password; do not leak integrity vs password distinction).\n */\nfunction verifyDataIntegrity(encryptedPackage, secretKey, keyData, dataIntegrity) {\n const { hashAlgorithm, saltValue, blockSize } = keyData;\n const ivHmacKey = deriveAgileIv(hashAlgorithm, saltValue, BLOCK_KEY_HMAC_KEY, blockSize);\n const hmacKeyDecrypted = aesCbcDecrypt(secretKey, ivHmacKey, dataIntegrity.encryptedHmacKey);\n // HMAC key length is hash digest size; truncated after decrypt (zero-padded block).\n const digestLen = hashDigestLength(hashAlgorithm);\n if (hmacKeyDecrypted.byteLength < digestLen) {\n throw new InvalidPasswordError();\n }\n const hmacKey = hmacKeyDecrypted.subarray(0, digestLen);\n const ivHmacValue = deriveAgileIv(hashAlgorithm, saltValue, BLOCK_KEY_HMAC_VALUE, blockSize);\n const hmacValueDecrypted = aesCbcDecrypt(secretKey, ivHmacValue, dataIntegrity.encryptedHmacValue);\n if (hmacValueDecrypted.byteLength < digestLen) {\n throw new InvalidPasswordError();\n }\n const expectedHmac = hmacValueDecrypted.subarray(0, digestLen);\n const actualHmac = hmacBytes(hashAlgorithm, hmacKey, encryptedPackage);\n if (!timingSafeEqual(actualHmac.subarray(0, digestLen), expectedHmac)) {\n throw new InvalidPasswordError();\n }\n}\n","/**\n * Shared OFFCRYPTO Agile password decrypt for Office Open XML packages.\n *\n * @remarks\n * Implements [MS-OFFCRYPTO] Agile EncryptionInfo (4.4) + password keyEncryptor\n * + AES-CBC EncryptedPackage segment decrypt. Consumed by PowerPoint and other\n * Office libraries via `@syncfusion/ej2-office-common`.\n *\n * @packageDocumentation\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { parseAgileEncryptionInfo } from './agile-encryption-info';\nimport { unlockIntermediateKey } from './agile-password';\nimport { readOffCryptoStreams } from './cfb-reader';\nimport { decryptEncryptedPackageStream } from './decrypt-encrypted-package';\nimport { DEFAULT_DECRYPT_SECURITY_LIMITS, resolveDecryptLimits, } from './errors';\n/** OLE CFB header signature used by ECMA-376 OFFCRYPTO packages ([MS-CFB]). */\nconst OLE_CFB_SIGNATURE = Object.freeze([0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1]);\n/**\n * Returns whether `input` begins with the OLE compound-file signature used by\n * ECMA-376 OFFCRYPTO packages.\n *\n * @param input - Entire package bytes.\n * @returns `true` when the CFB signature matches.\n *\n * @public\n */\nexport function isOffCryptoPackage(input) {\n const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);\n if (bytes.byteLength < OLE_CFB_SIGNATURE.length) {\n return false;\n }\n for (let i = 0; i < OLE_CFB_SIGNATURE.length; i++) {\n if (bytes[i] !== OLE_CFB_SIGNATURE[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Decrypts an OFFCRYPTO OLE CFB package to OPC ZIP bytes.\n *\n * @param input - Entire encrypted package bytes (CFB).\n * @param password - Consumer password (never logged; not retained).\n * @param limits - Decrypt size / XML guards (duck-types broader SecurityLimits).\n * @returns Decrypted OPC package bytes.\n *\n * @public\n */\nexport function decryptOffCryptoPackage(input, password, limits = DEFAULT_DECRYPT_SECURITY_LIMITS) {\n return __awaiter(this, void 0, void 0, function* () {\n const resolved = resolveDecryptLimits(limits);\n const streams = readOffCryptoStreams(input);\n const info = parseAgileEncryptionInfo(streams.encryptionInfo, resolved);\n const secretKey = unlockIntermediateKey(password, info.passwordKeyEncryptor);\n return decryptEncryptedPackageStream(streams.encryptedPackage, secretKey, info.keyData, info.dataIntegrity, resolved);\n });\n}\nexport { DEFAULT_DECRYPT_SECURITY_LIMITS, EncryptedPackageError, InvalidPasswordError, PackageLimitError, resolveDecryptLimits, UnsupportedEncryptionError, } from './errors';\n// Re-export internals needed by test fixtures / host encrypt harnesses.\nexport { AGILE_ENCRYPTION_NS, AGILE_RESERVED, AGILE_VERSION_MAJOR, AGILE_VERSION_MINOR, BLOCK_KEY_ENCRYPTOR_KEY, BLOCK_KEY_HMAC_KEY, BLOCK_KEY_HMAC_VALUE, BLOCK_KEY_VERIFIER_HASH, BLOCK_KEY_VERIFIER_INPUT, ENCRYPTED_PACKAGE_SEGMENT_SIZE, PASSWORD_KEY_ENCRYPTOR_NS, PASSWORD_KEY_ENCRYPTOR_URI, STREAM_ENCRYPTED_PACKAGE, STREAM_ENCRYPTION_INFO, } from './agile-constants';\nexport { aesCbcDecrypt, aesCbcEncrypt, concatBytes, deriveAgileIv, deriveAgileKey, encodePasswordUtf16Le, hashBytes, hashDigestLength, hmacBytes, timingSafeEqual, } from './crypto-primitives';\n","/**\n * Shared OOXML codecs and domain models for EJ2 Office JavaScript libraries.\n * Consume from git / local workspace; not published to npm.\n *\n * Feature modules are added incrementally (ink, mathml, encryption, …). Root\n * entry re-exports the public surface as features land, including the OFFCRYPTO\n * Agile decrypt surface from ./encryption.\n *\n * @packageDocumentation\n */\n/**\n * Package identity string for consumers proving resolution (TASK-9001).\n *\n * @public\n */\nexport const OFFICE_COMMON_PACKAGE_NAME = '@syncfusion/ej2-office-common';\nexport { INKML_NAMESPACE, INK_CONTENT_TYPE, INK_SOURCE_RELATIONSHIP_TYPE, WORDML_2010_NAMESPACE, WORDPROCESSING_INK_URI, INK_EFFECT_COLORS, inkEffectColor, computeInkBounds, decodeTrace, encodeTrace, scalePointsStretch, scalePointsUniform, addInkTrace, cloneInk, createInk, inkPathPoints, isOfficeInk, DIAG_INVALID_INK_TRACE, getLastInkParseDiagnostics, parseInkXml, serializeInkXml, EMUS_PER_POINT, formatUnitValue, pointsToUnit, unitValueToPoints, } from './features/ink/index';\n// ─── mathml (OMML) public surface — @syncfusion/ej2-office-common/mathml ──────────────────\nexport { MATH_NAMESPACE, MATH_PREFIX_FALLBACKS, WML_TRANSITIONAL_NAMESPACE, XML_NAMESPACE, MATH_BREAKBIN_VALUES, MATH_BREAKBINSUB_VALUES, MATH_FTYPE_VALUES, MATH_JC_VALUES, MATH_LIMLOC_VALUES, MATH_SCRIPT_VALUES, MATH_SHP_VALUES, MATH_SPACING_RULE_VALUES, MATH_STYLE_VALUES, MATH_TOPBOT_VALUES, emitOnOff, isInteger2, isInteger255, isSpacingRule, isUnSignedInteger, parseMathBreakBin, parseMathBreakBinSub, parseMathFractionType, parseMathJc, parseMathLimLoc, parseMathScript, parseMathShape, parseMathStyle, parseMathTopBot, parseOnOff, MathArgument, MathElement, MathText, UnknownMathElement, mathArg, MathOMath, MathParagraph, MathAccent, MathBar, MathBorderBox, MathBox, MathDelimiter, MathEquationArray, MathFraction, MathFunction, MathGroupCharacter, MathLimitLower, MathLimitUpper, MathMatrix, MathMatrixRow, MathNaryOperator, MathPhantom, MathPreSubSuperscript, MathRadical, MathRun, MathSubscript, MathSubSuperscript, MathSuperscript, parseMathElement, parseMathElements, mathElementToOpenXml, cloneMathElement, mathEqual, attrValue, attrValueNs, childElements, createElement, createText, textContent, } from './features/mathml/index';\nexport { decryptOffCryptoPackage, isOffCryptoPackage, DEFAULT_DECRYPT_SECURITY_LIMITS, EncryptedPackageError, InvalidPasswordError, PackageLimitError, resolveDecryptLimits, UnsupportedEncryptionError, \n// fixture / advanced crypto surface\nAGILE_ENCRYPTION_NS, AGILE_RESERVED, AGILE_VERSION_MAJOR, AGILE_VERSION_MINOR, BLOCK_KEY_ENCRYPTOR_KEY, BLOCK_KEY_HMAC_KEY, BLOCK_KEY_HMAC_VALUE, BLOCK_KEY_VERIFIER_HASH, BLOCK_KEY_VERIFIER_INPUT, ENCRYPTED_PACKAGE_SEGMENT_SIZE, PASSWORD_KEY_ENCRYPTOR_NS, PASSWORD_KEY_ENCRYPTOR_URI, STREAM_ENCRYPTED_PACKAGE, STREAM_ENCRYPTION_INFO, aesCbcDecrypt, aesCbcEncrypt, concatBytes, deriveAgileIv, deriveAgileKey, encodePasswordUtf16Le, hashBytes, hashDigestLength, hmacBytes, timingSafeEqual, } from './encryption/index';\n"],"names":["DEFAULT_CONTEXT_REF","ensureHash","XML_NAMESPACE","emitOnOff","findChild","getAttr","this","OLE_CFB_SIGNATURE"],"mappings":"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"}