UNPKG

pdfkit

Version:

A JavaScript PDF generation library

1 lines 652 kB
{"version":3,"file":"pdfkit.browser.mjs","sources":["../lib/event_emitter.js","../lib/stream/browser.js","../lib/abstract_reference.js","../lib/tree.js","../lib/spotcolor.js","../lib/binary.js","../lib/object.js","../lib/zlib/browser.js","../lib/reference.js","../lib/utils.js","../lib/page.js","../lib/name_tree.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_md.js","../node_modules/@noble/hashes/esm/legacy.js","../lib/crypto/md5.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha2.js","../lib/crypto/sha256.js","../lib/crypto/aes.js","../lib/crypto/rc4.js","../lib/crypto/random.js","../lib/saslprep/lib/util.js","../lib/saslprep/lib/code-points.js","../lib/saslprep/index.js","../lib/security.js","../lib/gradient.js","../lib/pattern.js","../lib/mixins/color.js","../lib/path.js","../lib/mixins/vector.js","../lib/fs/browser.js","../lib/font/afm.js","../lib/font.js","../lib/font/standard.js","../lib/font/embedded.js","../lib/font/standard_fonts.js","../lib/font_factory.js","../lib/mixins/fonts.js","../lib/line_wrapper.js","../lib/mixins/text.js","../lib/image/jpeg.js","../lib/image/png.js","../lib/image.js","../lib/mixins/images.js","../lib/structure_annotation.js","../lib/mixins/annotations.js","../lib/outline.js","../lib/mixins/outline.js","../lib/structure_content.js","../lib/structure_element.js","../lib/number_tree.js","../lib/mixins/markings.js","../lib/mixins/acroform.js","../lib/mixins/attachments.js","../lib/mixins/pdfa.js","../lib/mixins/pdfua.js","../lib/mixins/subsets.js","../lib/table/utils.js","../lib/table/style.js","../lib/table/normalize.js","../lib/table/size.js","../lib/table/accessibility.js","../lib/table/render.js","../lib/table/index.js","../lib/mixins/table.js","../lib/metadata.js","../lib/mixins/metadata.js","../lib/document.js","../lib/mixins/data/sRGB_IEC61966_2_1.icc","../lib/document.browser.js"],"sourcesContent":["class EventEmitter {\n  constructor() {\n    this._listeners = Object.create(null);\n  }\n\n  on(event, listener) {\n    (this._listeners[event] || (this._listeners[event] = [])).push(listener);\n    return this;\n  }\n\n  once(event, listener) {\n    const wrapper = (...args) => {\n      this.off(event, wrapper);\n      listener(...args);\n    };\n    return this.on(event, wrapper);\n  }\n\n  off(event, listener) {\n    const listeners = this._listeners[event];\n    if (listeners) {\n      const index = listeners.indexOf(listener);\n      if (index !== -1) listeners.splice(index, 1);\n    }\n    return this;\n  }\n\n  emit(event, ...args) {\n    const listeners = this._listeners[event];\n    if (!listeners) return false;\n    for (const listener of listeners.slice()) listener(...args);\n    return listeners.length > 0;\n  }\n}\n\nexport default EventEmitter;\n","import EventEmitter from '../event_emitter';\n\n/**\n * A readable stream with just enough of the Node API for a PDF document:\n * `on('data')`, `on('end')`, `pipe()` and async iteration.\n *\n * ponytail: no `read()`, `setEncoding()`, `destroy()` or `error`/`close`\n * events. The document is built in memory and never applies backpressure to\n * its own producer, so the only backpressure that matters is the `drain` of\n * the pipe destination.\n */\nclass Readable extends EventEmitter {\n  constructor() {\n    super();\n    this._buffer = [];\n    this._flowing = false;\n    this._scheduled = false;\n    this._finished = false;\n    this._endEmitted = false;\n  }\n\n  on(event, listener) {\n    super.on(event, listener);\n    if (event === 'data') this.resume();\n    return this;\n  }\n\n  push(chunk) {\n    if (chunk === null) {\n      this._finished = true;\n    } else {\n      this._buffer.push(chunk);\n    }\n    this._schedule();\n    return true;\n  }\n\n  resume() {\n    this._flowing = true;\n    this._schedule();\n    return this;\n  }\n\n  pause() {\n    this._flowing = false;\n    return this;\n  }\n\n  pipe(destination) {\n    this.on('data', (chunk) => {\n      if (destination.write(chunk) === false) {\n        this.pause();\n        destination.once('drain', () => this.resume());\n      }\n    });\n    this.on('end', () => destination.end());\n    return destination;\n  }\n\n  // Chunks pushed before a listener is attached are replayed on a microtask so\n  // that `on('data')` followed by `on('end')` sees both events.\n  _schedule() {\n    if (this._scheduled || !this._flowing) return;\n    this._scheduled = true;\n    queueMicrotask(() => {\n      this._scheduled = false;\n      this._drain();\n    });\n  }\n\n  _drain() {\n    while (this._flowing && this._buffer.length > 0) {\n      this.emit('data', this._buffer.shift());\n    }\n\n    if (this._flowing && this._finished && !this._endEmitted) {\n      this._endEmitted = true;\n      this.emit('end');\n    }\n  }\n\n  async *[Symbol.asyncIterator]() {\n    const chunks = [];\n    let ended = false;\n    let notify = null;\n    const wake = () => {\n      const resolve = notify;\n      notify = null;\n      if (resolve) resolve();\n    };\n\n    this.on('data', (chunk) => {\n      chunks.push(chunk);\n      wake();\n    });\n    this.on('end', () => {\n      ended = true;\n      wake();\n    });\n\n    for (;;) {\n      while (chunks.length > 0) yield chunks.shift();\n      if (ended) return;\n      await new Promise((resolve) => {\n        notify = resolve;\n      });\n    }\n  }\n}\n\nexport default Readable;\n","/*\nPDFAbstractReference - abstract class for PDF reference\n*/\n\nclass PDFAbstractReference {\n  toString() {\n    throw new Error('Must be implemented by subclasses');\n  }\n}\n\nexport default PDFAbstractReference;\n","/*\nPDFTree - abstract base class for name and number tree objects\n*/\n\nimport PDFObject from './object';\n\nclass PDFTree {\n  constructor(options = {}) {\n    this._items = {};\n    // disable /Limits output for this tree\n    this.limits = typeof options.limits === 'boolean' ? options.limits : true;\n  }\n\n  add(key, val) {\n    return (this._items[key] = val);\n  }\n\n  get(key) {\n    return this._items[key];\n  }\n\n  toString(encryptFn = null) {\n    // Needs to be sorted by key\n    const sortedKeys = Object.keys(this._items).sort((a, b) =>\n      this._compareKeys(a, b),\n    );\n\n    const out = ['<<'];\n    if (this.limits && sortedKeys.length > 1) {\n      const first = sortedKeys[0],\n        last = sortedKeys[sortedKeys.length - 1];\n      out.push(\n        `  /Limits ${PDFObject.convert([this._dataForKey(first), this._dataForKey(last)], encryptFn)}`,\n      );\n    }\n    out.push(`  /${this._keysName()} [`);\n    for (let key of sortedKeys) {\n      out.push(\n        `    ${PDFObject.convert(this._dataForKey(key), encryptFn)} ${PDFObject.convert(\n          this._items[key],\n          encryptFn,\n        )}`,\n      );\n    }\n    out.push(']');\n    out.push('>>');\n    return out.join('\\n');\n  }\n\n  _compareKeys(/*a, b*/) {\n    throw new Error('Must be implemented by subclasses');\n  }\n\n  _keysName() {\n    throw new Error('Must be implemented by subclasses');\n  }\n\n  _dataForKey(/*k*/) {\n    throw new Error('Must be implemented by subclasses');\n  }\n}\n\nexport default PDFTree;\n","import { escapeName } from './object.js';\n\nexport default class SpotColor {\n  constructor(doc, name, C, M, Y, K) {\n    this.id = 'CS' + Object.keys(doc.spotColors).length;\n    this.name = name;\n    this.values = [C, M, Y, K];\n    this.ref = doc.ref([\n      'Separation',\n      escapeName(this.name),\n      'DeviceCMYK',\n      {\n        Range: [0, 1, 0, 1, 0, 1, 0, 1],\n        C0: [0, 0, 0, 0],\n        C1: this.values.map((value) => value / 100),\n        FunctionType: 2,\n        Domain: [0, 1],\n        N: 1,\n      },\n    ]);\n    this.ref.end();\n  }\n\n  toString() {\n    return `${this.ref.id} 0 R`;\n  }\n}\n","/*\nBinary helpers — Uint8Array-native replacements for Node Buffer operations.\n*/\n\nexport const toBinaryString = (bytes) => {\n  const chunkSize = 0x8000;\n  let out = '';\n  for (let i = 0; i < bytes.length; i += chunkSize) {\n    const end = Math.min(i + chunkSize, bytes.length);\n    out += String.fromCharCode.apply(null, bytes.subarray(i, end));\n  }\n  return out;\n};\n\nexport const fromBinaryString = (str) => {\n  const out = new Uint8Array(str.length);\n  for (let i = 0; i < str.length; i++) {\n    out[i] = str.charCodeAt(i) & 0xff;\n  }\n  return out;\n};\n\nexport const fromBase64 = (b64) => {\n  const binary = atob(b64);\n  const out = new Uint8Array(binary.length);\n  for (let i = 0; i < binary.length; i++) {\n    out[i] = binary.charCodeAt(i);\n  }\n  return out;\n};\n\nexport const concat = (chunks) => {\n  let length = 0;\n  for (const chunk of chunks) length += chunk.length;\n\n  const out = new Uint8Array(length);\n  let offset = 0;\n  for (const chunk of chunks) {\n    out.set(chunk, offset);\n    offset += chunk.length;\n  }\n  return out;\n};\n\nexport const toUTF16BE = (str) => {\n  const out = new Uint8Array((str.length + 1) * 2);\n  out[0] = 0xfe;\n  out[1] = 0xff;\n  for (let i = 0; i < str.length; i++) {\n    const code = str.charCodeAt(i);\n    out[i * 2 + 2] = code >> 8;\n    out[i * 2 + 3] = code & 0xff;\n  }\n  return out;\n};\n\nexport const readUInt16BE = (bytes, offset = 0) =>\n  ((bytes[offset] << 8) | bytes[offset + 1]) >>> 0;\n\nexport const readUInt16LE = (bytes, offset = 0) =>\n  ((bytes[offset + 1] << 8) | bytes[offset]) >>> 0;\n\nexport const readUInt32BE = (bytes, offset = 0) =>\n  (bytes[offset] * 0x1000000 +\n    ((bytes[offset + 1] << 16) |\n      (bytes[offset + 2] << 8) |\n      bytes[offset + 3])) >>>\n  0;\n\nexport const readUInt32LE = (bytes, offset = 0) =>\n  ((bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16)) +\n    bytes[offset + 3] * 0x1000000) >>>\n  0;\n","/*\nPDFObject - converts JavaScript types into their corresponding PDF types.\nBy Devon Govett\n*/\n\nimport { bytesToHex } from '@noble/hashes/utils';\nimport PDFAbstractReference from './abstract_reference';\nimport PDFTree from './tree';\nimport SpotColor from './spotcolor';\nimport { fromBinaryString, toBinaryString, toUTF16BE } from './binary';\n\nconst pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length);\n\n// PDF Name objects must escape delimiter characters and whitespace. We keep\n// non-ASCII characters unescaped for backward compatibility in existing output.\nconst isSafeCharCode = (code) => {\n  if (code > 0x7f) return true; // keep non-ASCII characters as-is\n\n  return (\n    code > 0x20 && // exclude NUL/control chars + space (0x00-0x20)\n    code !== 0x7f && // exclude DEL\n    code !== 0x23 && // # (escape marker)\n    code !== 0x25 && // % (comment introducer)\n    code !== 0x28 && // ( (literal string delimiter)\n    code !== 0x29 && // ) (literal string delimiter)\n    code !== 0x2f && // / (name object delimiter)\n    code !== 0x3c && // < (hex string delimiter)\n    code !== 0x3e && // > (hex string delimiter)\n    code !== 0x5b && // [ (array start)\n    code !== 0x5d && // ] (array end)\n    code !== 0x7b && // { (dictionary start)\n    code !== 0x7d // } (dictionary end)\n  );\n};\n\nconst escapableRe = /[\\n\\r\\t\\b\\f()\\\\]/g;\nconst escapable = {\n  '\\n': '\\\\n',\n  '\\r': '\\\\r',\n  '\\t': '\\\\t',\n  '\\b': '\\\\b',\n  '\\f': '\\\\f',\n  '\\\\': '\\\\\\\\',\n  '(': '\\\\(',\n  ')': '\\\\)',\n};\n\nexport const escapeName = function (name) {\n  let escapedName = '';\n\n  for (const char of name) {\n    const code = char.charCodeAt(0);\n    if (isSafeCharCode(code)) {\n      escapedName += char;\n    } else {\n      escapedName += `#${code.toString(16).toUpperCase().padStart(2, '0')}`;\n    }\n  }\n\n  return escapedName;\n};\n\nclass PDFObject {\n  static convert(object, encryptFn = null) {\n    // String literals are converted to the PDF name type\n    if (typeof object === 'string') {\n      return `/${object}`;\n\n      // String objects are converted to PDF strings (UTF-16)\n    } else if (object instanceof String) {\n      let string = object;\n      // Detect if this is a unicode string\n      let isUnicode = false;\n      for (let i = 0, end = string.length; i < end; i++) {\n        if (string.charCodeAt(i) > 0x7f) {\n          isUnicode = true;\n          break;\n        }\n      }\n\n      // If so, encode it as big endian UTF-16\n      let stringBytes;\n      if (isUnicode) {\n        stringBytes = toUTF16BE(string.valueOf());\n      } else {\n        stringBytes = fromBinaryString(string.valueOf());\n      }\n\n      // Encrypt the string when necessary\n      if (encryptFn) {\n        stringBytes = encryptFn(stringBytes);\n      }\n\n      string = toBinaryString(stringBytes);\n\n      // Escape characters as required by the spec\n      string = string.replace(escapableRe, (c) => escapable[c]);\n\n      return `(${string})`;\n\n      // Byte arrays are converted to PDF hex strings\n    } else if (object instanceof Uint8Array) {\n      return `<${bytesToHex(object)}>`;\n    } else if (object instanceof PDFTree) {\n      // Name trees hold PDF strings as keys, which have to be encrypted like\n      // any other string in the document\n      return object.toString(encryptFn);\n    } else if (\n      object instanceof PDFAbstractReference ||\n      object instanceof SpotColor\n    ) {\n      return object.toString();\n    } else if (object instanceof Date) {\n      let string =\n        `D:${pad(object.getUTCFullYear(), 4)}` +\n        pad(object.getUTCMonth() + 1, 2) +\n        pad(object.getUTCDate(), 2) +\n        pad(object.getUTCHours(), 2) +\n        pad(object.getUTCMinutes(), 2) +\n        pad(object.getUTCSeconds(), 2) +\n        'Z';\n\n      // Encrypt the string when necessary\n      if (encryptFn) {\n        string = toBinaryString(encryptFn(fromBinaryString(string)));\n\n        // Escape characters as required by the spec\n        string = string.replace(escapableRe, (c) => escapable[c]);\n      }\n\n      return `(${string})`;\n    } else if (Array.isArray(object)) {\n      // Indexed, not `.map` (skips holes, shifting later entries) and not\n      // `Array.from` (defers to a subclass's iterator). Positions are\n      // meaningful, so a hole becomes `null` (ISO 32000-1, 7.3.9).\n      const items = [];\n      for (let i = 0; i < object.length; i++) {\n        const e = object[i];\n        items.push(PDFObject.convert(e === undefined ? null : e, encryptFn));\n      }\n      return `[${items.join(' ')}]`;\n    } else if ({}.toString.call(object) === '[object Object]') {\n      const out = ['<<'];\n      for (let key in object) {\n        const val = object[key];\n        // `undefined` has no PDF representation, so serialising it produced the\n        // literal token `undefined` and an unparseable file. The spec treats a\n        // dictionary entry whose value is null as absent (ISO 32000-1, 7.3.9),\n        // so omitting the key is the closest valid equivalent - and it matches\n        // JSON.stringify. An explicit `null` is left alone: it is a real PDF\n        // object and callers may be relying on it.\n        if (val === undefined) continue;\n        out.push(`/${key} ${PDFObject.convert(val, encryptFn)}`);\n      }\n\n      out.push('>>');\n      return out.join('\\n');\n    } else if (typeof object === 'number') {\n      return PDFObject.number(object);\n    } else {\n      return `${object}`;\n    }\n  }\n\n  static number(n) {\n    if (n > -1e21 && n < 1e21) {\n      return Math.round(n * 1e6) / 1e6;\n    }\n\n    throw new Error(`unsupported number: ${n}`);\n  }\n}\n\nexport default PDFObject;\n","import { zlibSync } from 'fflate';\n\nexport default {\n  deflateSync: (data) => zlibSync(data),\n};\n","/*\nPDFReference - represents a reference to another object in the PDF object heirarchy\nBy Devon Govett\n*/\n\nimport zlib from '#zlib';\nimport PDFAbstractReference from './abstract_reference';\nimport PDFObject from './object';\nimport { concat, fromBinaryString } from './binary';\n\nclass PDFReference extends PDFAbstractReference {\n  constructor(document, id, data = {}) {\n    super();\n    this.document = document;\n    this.id = id;\n    this.data = data;\n    this.gen = 0;\n    this.compress = this.document.compress && !this.data.Filter;\n    this.uncompressedLength = 0;\n    this.buffer = [];\n  }\n\n  write(chunk) {\n    if (!(chunk instanceof Uint8Array)) {\n      chunk = fromBinaryString(chunk + '\\n');\n    }\n\n    this.uncompressedLength += chunk.length;\n    if (this.data.Length == null) {\n      this.data.Length = 0;\n    }\n    this.buffer.push(chunk);\n    this.data.Length += chunk.length;\n    if (this.compress) {\n      this.data.Filter = 'FlateDecode';\n    }\n  }\n\n  end(chunk) {\n    if (chunk) {\n      this.write(chunk);\n    }\n    this.finalize();\n  }\n\n  finalize() {\n    this.offset = this.document._offset;\n\n    const encryptFn = this.document._security\n      ? this.document._security.getEncryptFn(this.id, this.gen)\n      : null;\n\n    if (this.buffer.length) {\n      this.buffer = concat(this.buffer);\n      if (this.compress) {\n        this.buffer = zlib.deflateSync(this.buffer);\n      }\n\n      if (encryptFn) {\n        this.buffer = encryptFn(this.buffer);\n      }\n\n      this.data.Length = this.buffer.length;\n    }\n\n    this.document._write(`${this.id} ${this.gen} obj`);\n    this.document._write(PDFObject.convert(this.data, encryptFn));\n\n    if (this.buffer.length) {\n      this.document._write('stream');\n      this.document._write(this.buffer);\n\n      this.buffer = []; // free up memory\n      this.document._write('\\nendstream');\n    }\n\n    this.document._write('endobj');\n    this.document._refEnd(this);\n  }\n  toString() {\n    return `${this.id} ${this.gen} R`;\n  }\n}\n\nexport default PDFReference;\n","const fArray = new Float32Array(1);\nconst uArray = new Uint32Array(fArray.buffer);\n\nexport function PDFNumber(n) {\n  // PDF numbers are strictly 32bit\n  // so convert this number to a 32bit number\n  // @see ISO 32000-1 Annex C.2 (real numbers)\n  const rounded = Math.fround(n);\n  if (rounded <= n) return rounded;\n\n  // Will have to perform 32bit float truncation\n  fArray[0] = n;\n\n  // Get the 32-bit representation as integer and shift bits\n  if (n <= 0) {\n    uArray[0] += 1;\n  } else {\n    uArray[0] -= 1;\n  }\n\n  // Return the float value\n  return fArray[0];\n}\n\n/**\n * Measurement of size\n *\n * @typedef {number | `${number}` | `${number}${'em' | 'in' | 'px' | 'cm' | 'mm' | 'pc' | 'ex' | 'ch' | 'rem' | 'vw' | 'vmin' | 'vmax' | '%' | 'pt'}`} Size\n */\n\n/**\n * @typedef {Array<PDFTilingPattern | PDFColor> | string | Array<number>} PDFColor\n */\n\n/** @typedef {string | Buffer | Uint8Array | ArrayBuffer} PDFFontSource */\n/**\n * Side definitions\n * - To define all sides, use a single value\n * - To define up-down left-right, use a `[Y, X]` array\n * - To define each side, use `[top, right, bottom, left]` array\n * - Or `{vertical: SideValue, horizontal: SideValue}`\n * - Or `{top: SideValue, right: SideValue, bottom: SideValue, left: SideValue}`\n *\n * @template T\n * @typedef {T | [T, T] | [T, T, T, T] | { vertical: T; horizontal: T } | ExpandedSideDefinition<T>} SideDefinition<T>\n **/\n\n/**\n * @template T\n * @typedef {{ top: T; right: T; bottom: T; left: T }} ExpandedSideDefinition<T>\n */\n\n/**\n * Convert any side definition into a static structure\n *\n * @template S\n * @template D\n * @template O\n * @template {S | D} T\n * @param {SideDefinition<S>} sides - The sides to convert\n * @param {SideDefinition<D>} defaultDefinition - The value to use when no definition is provided\n * @param {function(T): O} transformer - The transformation to apply to the sides once normalized\n * @returns {ExpandedSideDefinition<O>}\n */\nexport function normalizeSides(\n  sides,\n  defaultDefinition = undefined,\n  transformer = (v) => v,\n) {\n  if (\n    sides == null ||\n    (typeof sides === 'object' && Object.keys(sides).length === 0)\n  ) {\n    sides = defaultDefinition;\n  }\n  if (sides == null || typeof sides !== 'object') {\n    sides = { top: sides, right: sides, bottom: sides, left: sides };\n  } else if (Array.isArray(sides)) {\n    if (sides.length === 2) {\n      sides = { vertical: sides[0], horizontal: sides[1] };\n    } else {\n      sides = {\n        top: sides[0],\n        right: sides[1],\n        bottom: sides[2],\n        left: sides[3],\n      };\n    }\n  }\n\n  if ('vertical' in sides || 'horizontal' in sides) {\n    sides = {\n      top: sides.vertical,\n      right: sides.horizontal,\n      bottom: sides.vertical,\n      left: sides.horizontal,\n    };\n  }\n\n  return {\n    top: transformer(sides.top),\n    right: transformer(sides.right),\n    bottom: transformer(sides.bottom),\n    left: transformer(sides.left),\n  };\n}\n\nexport const MM_TO_CM = 1 / 10; // 1MM = 1CM\nexport const CM_TO_IN = 1 / 2.54; // 1CM = 1/2.54 IN\nexport const PX_TO_IN = 1 / 96; // 1 PX = 1/96 IN\nexport const IN_TO_PT = 72; // 1 IN = 72 PT\nexport const PC_TO_PT = 12; // 1 PC = 12 PT\n\n/**\n * Get cosine in degrees of a\n *\n * Rounding errors are handled\n * @param a\n * @returns {number}\n */\nexport function cosine(a) {\n  if (a === 0) return 1;\n  if (a === 90) return 0;\n  if (a === 180) return -1;\n  if (a === 270) return 0;\n  return Math.cos((a * Math.PI) / 180);\n}\n\n/**\n * Get sine in degrees of a\n *\n * Rounding errors are handled\n * @param a\n * @returns {number}\n */\nexport function sine(a) {\n  if (a === 0) return 0;\n  if (a === 90) return 1;\n  if (a === 180) return 0;\n  if (a === 270) return -1;\n  return Math.sin((a * Math.PI) / 180);\n}\n","/*\nPDFPage - represents a single page in the PDF document\nBy Devon Govett\n*/\n\nimport { normalizeSides } from './utils';\n\n/**\n * @type {SideDefinition<Size>}\n */\nconst DEFAULT_MARGINS = {\n  top: 72,\n  left: 72,\n  bottom: 72,\n  right: 72,\n};\n\nconst SIZES = {\n  '4A0': [4767.87, 6740.79],\n  '2A0': [3370.39, 4767.87],\n  A0: [2383.94, 3370.39],\n  A1: [1683.78, 2383.94],\n  A2: [1190.55, 1683.78],\n  A3: [841.89, 1190.55],\n  A4: [595.28, 841.89],\n  A5: [419.53, 595.28],\n  A6: [297.64, 419.53],\n  A7: [209.76, 297.64],\n  A8: [147.4, 209.76],\n  A9: [104.88, 147.4],\n  A10: [73.7, 104.88],\n  B0: [2834.65, 4008.19],\n  B1: [2004.09, 2834.65],\n  B2: [1417.32, 2004.09],\n  B3: [1000.63, 1417.32],\n  B4: [708.66, 1000.63],\n  B5: [498.9, 708.66],\n  B6: [354.33, 498.9],\n  B7: [249.45, 354.33],\n  B8: [175.75, 249.45],\n  B9: [124.72, 175.75],\n  B10: [87.87, 124.72],\n  C0: [2599.37, 3676.54],\n  C1: [1836.85, 2599.37],\n  C2: [1298.27, 1836.85],\n  C3: [918.43, 1298.27],\n  C4: [649.13, 918.43],\n  C5: [459.21, 649.13],\n  C6: [323.15, 459.21],\n  C7: [229.61, 323.15],\n  C8: [161.57, 229.61],\n  C9: [113.39, 161.57],\n  C10: [79.37, 113.39],\n  RA0: [2437.8, 3458.27],\n  RA1: [1729.13, 2437.8],\n  RA2: [1218.9, 1729.13],\n  RA3: [864.57, 1218.9],\n  RA4: [609.45, 864.57],\n  SRA0: [2551.18, 3628.35],\n  SRA1: [1814.17, 2551.18],\n  SRA2: [1275.59, 1814.17],\n  SRA3: [907.09, 1275.59],\n  SRA4: [637.8, 907.09],\n  EXECUTIVE: [521.86, 756.0],\n  FOLIO: [612.0, 936.0],\n  LEGAL: [612.0, 1008.0],\n  LETTER: [612.0, 792.0],\n  TABLOID: [792.0, 1224.0],\n};\n\nclass PDFPage {\n  constructor(document, options) {\n    this.document = document;\n    this._options = options;\n    this.size = options.size || 'letter';\n    this.layout = options.layout || 'portrait';\n    this.userUnit = options.userUnit || 1.0;\n\n    // calculate page dimensions\n    const dimensions = Array.isArray(this.size)\n      ? this.size\n      : SIZES[this.size.toUpperCase()];\n    this.width = dimensions[this.layout === 'portrait' ? 0 : 1];\n    this.height = dimensions[this.layout === 'portrait' ? 1 : 0];\n\n    this.content = this.document.ref();\n\n    // process margins\n    // Margin calculation must occur after font assignment to ensure any dynamic sizes are calculated correctly\n    this.margins = normalizeSides(\n      options.margin ?? options.margins,\n      DEFAULT_MARGINS,\n      (x) => document.sizeToPoint(x, 0, this),\n    );\n\n    // Initialize the Font, XObject, and ExtGState dictionaries\n    this.resources = this.document.ref({\n      ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\n    });\n\n    // The page dictionary\n    this.dictionary = this.document.ref({\n      Type: 'Page',\n      Parent: this.document._root.data.Pages,\n      MediaBox: [0, 0, this.width, this.height],\n      Contents: this.content,\n      Resources: this.resources,\n      UserUnit: this.userUnit,\n    });\n\n    this.markings = [];\n  }\n\n  // Lazily create these objects\n  get fonts() {\n    const data = this.resources.data;\n    return data.Font != null ? data.Font : (data.Font = {});\n  }\n\n  get xobjects() {\n    const data = this.resources.data;\n    return data.XObject != null ? data.XObject : (data.XObject = {});\n  }\n\n  get ext_gstates() {\n    const data = this.resources.data;\n    return data.ExtGState != null ? data.ExtGState : (data.ExtGState = {});\n  }\n\n  get patterns() {\n    const data = this.resources.data;\n    return data.Pattern != null ? data.Pattern : (data.Pattern = {});\n  }\n\n  get colorSpaces() {\n    const data = this.resources.data;\n    return data.ColorSpace || (data.ColorSpace = {});\n  }\n\n  get annotations() {\n    const data = this.dictionary.data;\n    return data.Annots != null ? data.Annots : (data.Annots = []);\n  }\n\n  get structParentTreeKey() {\n    const data = this.dictionary.data;\n    return data.StructParents != null\n      ? data.StructParents\n      : (data.StructParents = this.document.createStructParentTreeNextKey());\n  }\n\n  /**\n   * The width of the safe contents of a page\n   *\n   * @returns {number}\n   */\n  get contentWidth() {\n    return this.width - this.margins.left - this.margins.right;\n  }\n\n  /**\n   * The height of the safe contents of a page\n   *\n   * @returns {number}\n   */\n  get contentHeight() {\n    return this.height - this.margins.top - this.margins.bottom;\n  }\n\n  maxY() {\n    return this.height - this.margins.bottom;\n  }\n\n  write(chunk) {\n    return this.content.write(chunk);\n  }\n\n  // Set tab order if document is tagged for accessibility.\n  _setTabOrder() {\n    if (!this.dictionary.Tabs && this.document.hasMarkInfoDictionary()) {\n      this.dictionary.data.Tabs = 'S';\n    }\n  }\n\n  end() {\n    this._setTabOrder();\n    this.dictionary.end();\n    this.resources.data.ColorSpace = this.resources.data.ColorSpace || {};\n    for (let color of Object.values(this.document.spotColors)) {\n      this.resources.data.ColorSpace[color.id] = color;\n    }\n    this.resources.end();\n    return this.content.end();\n  }\n}\n\nexport default PDFPage;\n","/*\nPDFNameTree - represents a name tree object\n*/\n\nimport PDFTree from './tree';\n\nclass PDFNameTree extends PDFTree {\n  _compareKeys(a, b) {\n    return a.localeCompare(b);\n  }\n\n  _keysName() {\n    return 'Names';\n  }\n\n  _dataForKey(k) {\n    return new String(k);\n  }\n}\n\nexport default PDFNameTree;\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n    if (!Number.isSafeInteger(n) || n < 0)\n        throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n    if (!isBytes(b))\n        throw new Error('Uint8Array expected');\n    if (lengths.length > 0 && !lengths.includes(b.length))\n        throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n    if (typeof h !== 'function' || typeof h.create !== 'function')\n        throw new Error('Hash should be wrapped by utils.createHasher');\n    anumber(h.outputLen);\n    anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n    if (instance.destroyed)\n        throw new Error('Hash instance has been destroyed');\n    if (checkFinished && instance.finished)\n        throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n    abytes(out);\n    const min = instance.outputLen;\n    if (out.length < min) {\n        throw new Error('digestInto() expects output buffer of length at least ' + min);\n    }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n    return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n    return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n    for (let i = 0; i < arrays.length; i++) {\n        arrays[i].fill(0);\n    }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n    return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n    return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n    return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n    return (((word << 24) & 0xff000000) |\n        ((word << 8) & 0xff0000) |\n        ((word >>> 8) & 0xff00) |\n        ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n    ? (n) => n\n    : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n    for (let i = 0; i < arr.length; i++) {\n        arr[i] = byteSwap(arr[i]);\n    }\n    return arr;\n}\nexport const swap32IfBE = isLE\n    ? (u) => u\n    : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n    abytes(bytes);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return bytes.toHex();\n    // pre-caching improves the speed 6x\n    let hex = '';\n    for (let i = 0; i < bytes.length; i++) {\n        hex += hexes[bytes[i]];\n    }\n    return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n    if (ch >= asciis._0 && ch <= asciis._9)\n        return ch - asciis._0; // '2' => 50-48\n    if (ch >= asciis.A && ch <= asciis.F)\n        return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n    if (ch >= asciis.a && ch <= asciis.f)\n        return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n    return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return Uint8Array.fromHex(hex);\n    const hl = hex.length;\n    const al = hl / 2;\n    if (hl % 2)\n        throw new Error('hex string expected, got unpadded hex of length ' + hl);\n    const array = new Uint8Array(al);\n    for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n        const n1 = asciiToBase16(hex.charCodeAt(hi));\n        const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n        if (n1 === undefined || n2 === undefined) {\n            const char = hex[hi] + hex[hi + 1];\n            throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n        }\n        array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n    }\n    return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n    let ts = Date.now();\n    for (let i = 0; i < iters; i++) {\n        cb(i);\n        // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n        const diff = Date.now() - ts;\n        if (diff >= 0 && diff < tick)\n            continue;\n        await nextTick();\n        ts += diff;\n    }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n    if (typeof str !== 'string')\n        throw new Error('string expected');\n    return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n    return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n    let sum = 0;\n    for (let i = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        abytes(a);\n        sum += a.length;\n    }\n    const res = new Uint8Array(sum);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        res.set(a, pad);\n        pad += a.length;\n    }\n    return res;\n}\nexport function checkOpts(defaults, opts) {\n    if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n        throw new Error('options should be object or undefined');\n    const merged = Object.assign(defaults, opts);\n    return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n    const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n    const tmp = hashCons();\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = () => hashCons();\n    return hashC;\n}\nexport function createOptHasher(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport function createXOFer(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n    if (crypto && typeof crypto.getRandomValues === 'function') {\n        return crypto.getRandomValues(new Uint8Array(bytesLength));\n    }\n    // Legacy Node.js compatibility\n    if (crypto && typeof crypto.randomBytes === 'function') {\n        return Uint8Array.from(crypto.randomBytes(bytesLength));\n    }\n    throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { Hash, abytes, aexists, aoutput, clean, createView, toBytes } from \"./utils.js\";\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n    if (typeof view.setBigUint64 === 'function')\n        return view.setBigUint64(byteOffset, value, isLE);\n    const _32n = BigInt(32);\n    const _u32_max = BigInt(0xffffffff);\n    const wh = Number((value >> _32n) & _u32_max);\n    const wl = Number(value & _u32_max);\n    const h = isLE ? 4 : 0;\n    const l = isLE ? 0 : 4;\n    view.setUint32(byteOffset + h, wh, isLE);\n    view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n    return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n    return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n    constructor(blockLen, outputLen, padOffset, isLE) {\n        super();\n        this.finished = false;\n        this.length = 0;\n        this.pos = 0;\n        this.destroyed = false;\n        this.blockLen = blockLen;\n        this.outputLen = outputLen;\n        this.padOffset = padOffset;\n        this.isLE = isLE;\n        this.buffer = new Uint8Array(blockLen);\n        this.view = createView(this.buffer);\n    }\n    update(data) {\n        aexists(this);\n        data = toBytes(data);\n        abytes(data);\n        const { view, buffer, blockLen } = this;\n        const len = data.length;\n        for (let pos = 0; pos < len;) {\n            const take = Math.min(blockLen - this.pos, len - pos);\n            // Fast path: we have at least one block in input, cast it to view and process\n            if (take === blockLen) {\n                const dataView = createView(data);\n                for (; blockLen <= len - pos; pos += blockLen)\n                    this.process(dataView, pos);\n                continue;\n            }\n            buffer.set(data.subarray(pos, pos + take), this.pos);\n            this.pos += take;\n            pos += take;\n            if (this.pos === blockLen) {\n                this.process(view, 0);\n                this.pos = 0;\n            }\n        }\n        this.length += data.length;\n        this.roundClean();\n        return this;\n    }\n    digestInto(out) {\n        aexists(this);\n        aoutput(out, this);\n        this.finished = true;\n        // Padding\n        // We can avoid allocation of buffer for padding completely if it\n        // was previously not allocated here. But it won't change performance.\n        const { buffer, view, blockLen, isLE } = this;\n        let { pos } = this;\n        // append the bit '1' to the message\n        buffer[pos++] = 0b10000000;\n        clean(this.buffer.subarray(pos));\n        // we have less than padOffset left in buffer, so we cannot put length in\n        // current block, need process it and pad again\n        if (this.padOffset > blockLen - pos) {\n            this.process(view, 0);\n            pos = 0;\n        }\n        // Pad until full block byte with zeros\n        for (let i = pos; i < blockLen; i++)\n            buffer[i] = 0;\n        // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n        // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n        // So we just write lowest 64 bits of that value.\n        setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n        this.process(view, 0);\n        const oview = createView(out);\n        const len = this.outputLen;\n        // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n        if (len % 4)\n            throw new Error('_sha2: outputLen should be aligned to 32bit');\n        const outLen = len / 4;\n        const state = this.get();\n        if (outLen > state.length)\n            throw new Error('_sha2: outputLen bigger than state');\n        for (let i = 0; i < outLen; i++)\n            oview.setUint32(4 * i, state[i], isLE);\n    }\n    digest() {\n        const { buffer, outputLen } = this;\n        this.digestInto(buffer);\n        const res = buffer.slice(0, outputLen);\n        this.destroy();\n        return res;\n    }\n    _cloneInto(to) {\n        to || (to = new this.constructor());\n        to.set(...this.get());\n        const { blockLen, buffer, length, finished, destroyed, pos } = this;\n        to.destroyed = destroyed;\n        to.finished = finished;\n        to.length = length;\n        to.pos = pos;\n        if (length % blockLen)\n            to.buffer.set(buffer);\n        return to;\n    }\n    clone() {\n        return this._cloneInto();\n    }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n    0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n    0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n\nSHA1 (RFC 3174), MD5 (RFC 1321) and RIPEMD160 (RFC 2286) legacy, weak hash functions.\nDon't use them in a new protocol. What \"weak\" means:\n\n- Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160.\n- No practical pre-image attacks (only theoretical, 2^123.4)\n- HMAC seems kinda ok: https://datatracker.ietf.org/doc/html/rfc6151\n * @module\n */\nimport { Chi, HashMD, Maj } from \"./_md.js\";\nimport { clean, createHasher, rotl } from \"./utils.js\";\n/** Initial SHA1 state */\nconst SHA1_IV = /* @__PURE__ */ Uint32Array.from([\n    0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n// Reusable temporary buffer\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\n/** SHA1 legacy hash class. */\nexport class SHA1 extends HashMD {\n    constructor() {\n        super(64, 20, 8, false);\n        this.A = SHA1_IV[0] | 0;\n        this.B = SHA1_IV[1] | 0;\n        this.C = SHA1_IV[2] | 0;\n        this.D = SHA1_IV[3] | 0;\n        this.E = SHA1_IV[4] | 0;\n    }\n    get() {\n        const { A, B, C, D, E } = this;\n        return [A, B, C, D, E];\n    }\n    set(A, B, C, D, E) {\n        this.A = A | 0;\n        this.B = B | 0;\n        this.C = C | 0;\n        this.D = D | 0;\n        this.E = E | 0;\n    }\n    process(view, offset) {\n        for (let i = 0; i < 16; i++, offset += 4)\n            SHA1_W[i] = view.getUint32(offset, false);\n        for (let i = 16; i < 80; i++)\n            SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n        // Compression function main loop, 80 rounds\n        let { A, B, C, D, E } = this;\n        for (let i = 0; i < 80; i++) {\n            let F, K;\n            if (i < 20) {\n                F = Chi(B, C, D);\n                K = 0x5a827999;\n            }\n            else if (i < 40) {\n                F = B ^ C ^ D;\n                K = 0x6ed9eba1;\n            }\n            else if (i < 60) {\n                F = Maj(B, C, D);\n                K = 0x8f1bbcdc;\n            }\n            else {\n                F = B ^ C ^ D;\n                K = 0xca62c1d6;\n            }\n            const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n            E = D;\n            D = C;\n            C = rotl(B, 30);\n            B = A;\n            A = T;\n        }\n        // Add the compressed chunk to the current hash value\n        A = (A + this.A) | 0;\n        B = (B + this.B) | 0;\n        C = (C + this.C) | 0;\n        D = (D + this.D) | 0;\n        E = (E + this.E) | 0;\n        this.set(A, B, C, D, E);\n    }\n    roundClean() {\n        clean(SHA1_W);\n    }\n    destroy() {\n        this.set(0, 0, 0, 0, 0);\n        clean(this.buffer);\n    }\n}\n/** SHA1 (RFC 3174) legacy hash function. It was cryptographically broken. */\nexport const sha1 = /* @__PURE__ */ createHasher(() => new SHA1());\n/** Per-round constants */\nconst p32 = /* @__PURE__ */ Math.pow(2, 32);\nconst K = /* @__PURE__ */ Array.from({ length: 64 }, (_, i) => Math.floor(p32 * Math.abs(Math.sin(i + 1))));\n/** md5 initial state: same as sha1, but 4 u32 instead of 5. */\nconst MD5_IV = /* @__PURE__ */ SHA1_IV.slice(0, 4);\n// Reusable temporary buffer\nconst MD5_W = /* @__PURE__ */ new Uint32Array(16);\n/** MD5 legacy hash class. */\nexport class MD5 extends HashMD {\n    constructor() {\n        super(64, 16, 8, true);\n        this.A = MD5_IV[0] | 0;\n        this.B = MD5_IV[1] | 0;\n        this.C = MD5_IV[2] | 0;\n        this.D = MD5_IV[3] | 0;\n    }\n    get() {\n        const { A, B, C, D } = this;\n        return [A, B, C, D];\n    }\n    set(A, B, C, D) {\n        this.A = A | 0;\n        this.B = B | 0;\n        this.C = C | 0;\n        this.D = D | 0;\n    }\n    process(view, offset) {\n        for (let i = 0; i < 16; i++, offset += 4)\n            MD5_W[i] = view.getUint32(offset, true);\n        // Compression function main loop, 64 rounds\n        let { A, B, C, D } = this;\n        for (let i = 0; i < 64; i++) {\n            let F, g, s;\n            if (i < 16) {\n                F = Chi(B, C, D);\n                g = i;\n                s = [7, 12, 17, 22];\n            }\n            else if (i < 32) {\n                F = Chi(D, B, C);\n                g = (5 * i + 1) % 16;\n                s = [5, 9, 14, 20];\n            }\n            else if (i < 48) {\n                F = B ^ C ^ D;\n                g = (3 * i + 5) % 16;\n                s = [4, 11, 16, 23];\n            }\n            else {\n                F = C ^ (B | ~D);\n                g = (7 * i) % 16;\n                s = [6, 10, 15, 21];\n            }\n            F = F + A + K[i] + MD5_W[g];\n            A = D;\n            D = C;\n            C = B;\n            B = B + rotl(F, s[i % 4]);\n        }\n        // Add the compressed chunk to the current hash value\n        A = (A + this.A) | 0;\n        B = (B + this.B) | 0;\n        C = (C + this.C) | 0;\n        D = (D + this.D) | 0;\n        this.set(A, B, C, D);\n    }\n    roundClean() {\n        clean(MD5_W);\n    }\n    destroy() {\n        this.set(0, 0, 0, 0);\n        clean(this.buffer);\n    }\n}\n/**\n * MD5 (RFC 1321) legacy hash function. It was cryptographically broken.\n * MD5 architecture is similar to SHA1, with some differences:\n * - Reduced output length: 16 bytes (128 bit) instead of 20\n * - 64 rounds, instead of 80\n * - Little-endian: could be faster, but will require more code\n * - Non-linear index selection: huge speed-up for unroll\n * - Per round constants: more memory accesses, additional speed-up for unroll\n */\nexport const md5 = /* @__PURE__ */ createHasher(() => new MD5());\n// RIPEMD-160\nconst Rho160 = /* @__PURE__ */ Uint8Array.from([\n    7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n]);\nconst Id160 = /* @__PURE__ */ (() => Uint8Array.from(new Array(16).fill(0).map((_, i) => i)))();\nconst Pi160 = /* @__PURE__ */ (() => Id160.map((i) => (9 * i + 5) % 16))();\nconst idxLR = /* @__PURE__ */ (() => {\n    const L = [Id160];\n    const R = [Pi160];\n    const res = [L, R];\n    for (let i = 0; i < 4; i++)\n        for (let j of res)\n            j.push(j[i].map((k) => Rho160[k]));\n    return res;\n})();\nconst idxL = /* @__PURE__ */ (() => idxLR[0])();\nconst idxR = /* @__PURE__ */ (() => idxLR[1])();\n// const [idxL, idxR] = idxLR;\nconst shifts160 = /* @__PURE__ */ [\n    [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n    [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n    [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n    [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n    [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => Uint8Array.from(i));\nconst shiftsL160 = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst shiftsR160 = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst Kl160 = /* @__PURE__ */ Uint32Array.from([\n    0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e,\n]);\nconst Kr160 = /* @__PURE__ */ Uint32Array.from([\n    0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000,\n]);\n// It's called f() in spec.\nfunction ripemd_f(group, x, y, z) {\n    if (group === 0)\n        return x ^ y ^ z;\n    if (group === 1)\n        return (x & y) | (~x & z);\n    if (group === 2)\n        return (x | ~y) ^ z;\n    if (group === 3)\n        return (x & z) | (y & ~z);\n    return x ^ (y | ~z);\n}\n// Reusable temporary buffer\nconst BUF_160 = /* @__PURE__ */ new Uint32Array(16);\nexport class RIPEMD160 extends HashMD {\n    constructor() {\n        super(64, 20, 8, true);\n        this.h0 = 0x67452301 | 0;\n        this.h1 = 0xefcdab89 | 0;\n        this.h2 = 0x98badcfe | 0;\n        this.h3 = 0x10325476 | 0;\n        this.h4 = 0xc3d2e1f0 | 0;\n    }\n    get() {\n        const { h0, h1, h2, h3, h4 } = this;\n        return [h0, h1, h2, h3, h4];\n    }\n    set(h0, h1, h2, h3, h4) {\n        this.h0 = h0 | 0;\n        this.h1 = h1 | 0;\n        this.h2 = h2 | 0;\n        this.h3 = h3 | 0;\n        this.h4 = h4 | 0;\n    }\n    process(view, offset) {\n        for (let i = 0; i < 16; i++, offset += 4)\n            BUF_160[i] = view.getUint32(offset, true);\n        // prettier-ignore\n        let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n        // Instead of iterating 0 to 80, we split it into 5 groups\n        // And use the groups in constants, functions, etc. Much simpler\n        for (let group = 0; group < 5; group++) {\n            const rGroup = 4 - group;\n            const hbl = Kl160[group], hbr = Kr160[group]; // prettier-ignore\n            const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n            const sl = shiftsL160[group], sr = shiftsR160[group]; // prettier-ignore\n            for (let i = 0; i < 16; i++) {\n                const tl = (rotl(al + ripemd_f(group, bl, cl, dl) + BUF_160[rl[i]] + hbl, sl[i]) + el) | 0;\n                al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n            }\n            // 2 loops are 10% faster\n            for (let i = 0; i < 16; i++) {\n                const tr = (rotl(ar + ripemd_f(rGroup, br, cr, dr) + BUF_160[rr[i]] + hbr, sr[i]) + er) | 0;\n                ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n            }\n        }\n        // Add the compressed chunk to the current hash value\n        this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n    }\n    roundClean() {\n        clean(BUF_160);\n    }\n    destroy() {\n        this.destroyed = true;\n        clean(this.buffer);\n        this.set(0, 0, 0, 0, 0);\n    }\n}\n/**\n * RIPEMD-160 - a legacy hash function from 1990s.\n * * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\n */\nexport const ripemd160 = /* @__PURE__ */ createHasher(() => new RIPEMD160());\n//# sourceMappingURL=legacy.js.map","import { md5 } from '@noble/hashes/legacy';\nimport { bytesToHex } from '@noble/hashes/utils';\n\nexport function md5Hash(data) {\n  return md5.create().update(data).digest();\n}\n\nexport function md5Hex(data) {\n  return bytesToHex(md5Hash(data));\n}\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n    if (le)\n        return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n    return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n    const len = lst.length;\n    let Ah = new Uint32Array(len);\n    let Al = new Uint32Array(len);\n    for (let i = 0; i < len; i++) {\n        const { h, l } = fromBig(lst[i], le);\n        [Ah[i], Al[i]] = [h, l];\n    }\n    return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n    const l = (Al >>> 0) + (Bl >>> 0);\n    return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n    fromBig, split, toBig,\n    shrSH, shrSL,\n    rotrSH, rotrSL, rotrBH, rotrBL,\n    rotr32H, rotr32L,\n    rotlSH, rotlSL, rotlBH, rotlBL,\n    add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n    constructor(outputLen = 32) {\n        super(64, outputLen, 8, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        this.A = SHA256_IV[0] | 0;\n        this.B = SHA256_IV[1] | 0;\n        this.C = SHA256_IV[2] | 0;\n        this.D = SHA256_IV[3] | 0;\n        this.E = SHA256_IV[4] | 0;\n        this.F = SHA256_IV[5] | 0;\n        this.G = SHA256_IV[6] | 0;\n        this.H = SHA256_IV[7] | 0;\n    }\n    get() {\n        const { A, B, C, D, E, F, G, H } = this;\n        return [A, B, C, D, E, F, G, H];\n    }\n    // prettier-ignore\n    set(A, B, C, D, E, F, G, H) {\n        this.A = A | 0;\n        this.B = B | 0;\n        this.C = C | 0;\n        this.D = D | 0;\n        this.E = E | 0;\n        this.F = F | 0;\n        this.G = G | 0;\n        this.H = H | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4)\n            SHA256_W[i] = view.getUint32(offset, false);\n        for (let i = 16; i < 64; i++) {\n            const W15 = SHA256_W[i - 15];\n            const W2 = SHA256_W[i - 2];\n            const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n            const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n            SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n        }\n        // Compression function main loop, 64 rounds\n        let { A, B, C, D, E, F, G, H } = this;\n        for (let i = 0; i < 64; i++) {\n            const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n            const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n            const T2 = (sigma0 + Maj(A, B, C)) | 0;\n            H = G;\n            G = F;\n            F = E;\n            E = (D + T1) | 0;\n            D = C;\n            C = B;\n            B = A;\n            A = (T1 + T2) | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        A = (A + this.A) | 0;\n        B = (B + this.B) | 0;\n        C = (C + this.C) | 0;\n        D = (D + this.D) | 0;\n        E = (E + this.E) | 0;\n        F = (F + this.F) | 0;\n        G = (G + this.G) | 0;\n        H = (H + this.H) | 0;\n        this.set(A, B, C, D, E, F, G, H);\n    }\n    roundClean() {\n        clean(SHA256_W);\n    }\n    destroy() {\n        this.set(0, 0, 0, 0, 0, 0, 0, 0);\n        clean(this.buffer);\n    }\n}\nexport class SHA224 extends SHA256 {\n    constructor() {\n        super(28);\n        this.A = SHA224_IV[0] | 0;\n        this.B = SHA224_IV[1] | 0;\n        this.C = SHA224_IV[2] | 0;\n        this.D = SHA224_IV[3] | 0;\n        this.E = SHA224_IV[4] | 0;\n        this.F = SHA224_IV[5] | 0;\n        this.G = SHA224_IV[6] | 0;\n        this.H = SHA224_IV[7] | 0;\n    }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n    '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n    '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n    '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n    '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n    '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n    '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n    '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n    '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n    '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n    '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n    '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n    '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n    '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n    '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n    '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n    '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n    '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n    '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n    '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n    '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n    constructor(outputLen = 64) {\n        super(128, outputLen, 16, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = SHA512_IV[0] | 0;\n        this.Al = SHA512_IV[1] | 0;\n        this.Bh = SHA512_IV[2] | 0;\n        this.Bl = SHA512_IV[3] | 0;\n        this.Ch = SHA512_IV[4] | 0;\n        this.Cl = SHA512_IV[5] | 0;\n        this.Dh = SHA512_IV[6] | 0;\n        this.Dl = SHA512_IV[7] | 0;\n        this.Eh = SHA512_IV[8] | 0;\n        this.El = SHA512_IV[9] | 0;\n        this.Fh = SHA512_IV[10] | 0;\n        this.Fl = SHA512_IV[11] | 0;\n        this.Gh = SHA512_IV[12] | 0;\n        this.Gl = SHA512_IV[13] | 0;\n        this.Hh = SHA512_IV[14] | 0;\n        this.Hl = SHA512_IV[15] | 0;\n    }\n    // prettier-ignore\n    get() {\n        const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n    }\n    // prettier-ignore\n    set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n        this.Ah = Ah | 0;\n        this.Al = Al | 0;\n        this.Bh = Bh | 0;\n        this.Bl = Bl | 0;\n        this.Ch = Ch | 0;\n        this.Cl = Cl | 0;\n        this.Dh = Dh | 0;\n        this.Dl = Dl | 0;\n        this.Eh = Eh | 0;\n        this.El = El | 0;\n        this.Fh = Fh | 0;\n        this.Fl = Fl | 0;\n        this.Gh = Gh | 0;\n        this.Gl = Gl | 0;\n        this.Hh = Hh | 0;\n        this.Hl = Hl | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4) {\n            SHA512_W_H[i] = view.getUint32(offset);\n            SHA512_W_L[i] = view.getUint32((offset += 4));\n        }\n        for (let i = 16; i < 80; i++) {\n            // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n            const W15h = SHA512_W_H[i - 15] | 0;\n            const W15l = SHA512_W_L[i - 15] | 0;\n            const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n            const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n            // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n            const W2h = SHA512_W_H[i - 2] | 0;\n            const W2l = SHA512_W_L[i - 2] | 0;\n            const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n            const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n            // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n            const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n            const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n            SHA512_W_H[i] = SUMh | 0;\n            SHA512_W_L[i] = SUMl | 0;\n        }\n        let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        // Compression function main loop, 80 rounds\n        for (let i = 0; i < 80; i++) {\n            // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n            const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n            const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n            //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n            const CHIl = (El & Fl) ^ (~El & Gl);\n            // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n            // prettier-ignore\n            const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n            const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n            const T1l = T1ll | 0;\n            // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n            const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n            const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n            const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n            const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n            Hh = Gh | 0;\n            Hl = Gl | 0;\n            Gh = Fh | 0;\n            Gl = Fl | 0;\n            Fh = Eh | 0;\n            Fl = El | 0;\n            ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n            Dh = Ch | 0;\n            Dl = Cl | 0;\n            Ch = Bh | 0;\n            Cl = Bl | 0;\n            Bh = Ah | 0;\n            Bl = Al | 0;\n            const All = u64.add3L(T1l, sigma0l, MAJl);\n            Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n            Al = All | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n        ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n        ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n        ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n        ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n        ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n        ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n        ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n        this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n    }\n    roundClean() {\n        clean(SHA512_W_H, SHA512_W_L);\n    }\n    destroy() {\n        clean(this.buffer);\n        this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n}\nexport class SHA384 extends SHA512 {\n    constructor() {\n        super(48);\n        this.Ah = SHA384_IV[0] | 0;\n        this.Al = SHA384_IV[1] | 0;\n        this.Bh = SHA384_IV[2] | 0;\n        this.Bl = SHA384_IV[3] | 0;\n        this.Ch = SHA384_IV[4] | 0;\n        this.Cl = SHA384_IV[5] | 0;\n        this.Dh = SHA384_IV[6] | 0;\n        this.Dl = SHA384_IV[7] | 0;\n        this.Eh = SHA384_IV[8] | 0;\n        this.El = SHA384_IV[9] | 0;\n        this.Fh = SHA384_IV[10] | 0;\n        this.Fl = SHA384_IV[11] | 0;\n        this.Gh = SHA384_IV[12] | 0;\n        this.Gl = SHA384_IV[13] | 0;\n        this.Hh = SHA384_IV[14] | 0;\n        this.Hl = SHA384_IV[15] | 0;\n    }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n    0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n    0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n    0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nexport class SHA512_224 extends SHA512 {\n    constructor() {\n        super(28);\n        this.Ah = T224_IV[0] | 0;\n        this.Al = T224_IV[1] | 0;\n        this.Bh = T224_IV[2] | 0;\n        this.Bl = T224_IV[3] | 0;\n        this.Ch = T224_IV[4] | 0;\n        this.Cl = T224_IV[5] | 0;\n        this.Dh = T224_IV[6] | 0;\n        this.Dl = T224_IV[7] | 0;\n        this.Eh = T224_IV[8] | 0;\n        this.El = T224_IV[9] | 0;\n        this.Fh = T224_IV[10] | 0;\n        this.Fl = T224_IV[11] | 0;\n        this.Gh = T224_IV[12] | 0;\n        this.Gl = T224_IV[13] | 0;\n        this.Hh = T224_IV[14] | 0;\n        this.Hl = T224_IV[15] | 0;\n    }\n}\nexport class SHA512_256 extends SHA512 {\n    constructor() {\n        super(32);\n        this.Ah = T256_IV[0] | 0;\n        this.Al = T256_IV[1] | 0;\n        this.Bh = T256_IV[2] | 0;\n        this.Bl = T256_IV[3] | 0;\n        this.Ch = T256_IV[4] | 0;\n        this.Cl = T256_IV[5] | 0;\n        this.Dh = T256_IV[6] | 0;\n        this.Dl = T256_IV[7] | 0;\n        this.Eh = T256_IV[8] | 0;\n        this.El = T256_IV[9] | 0;\n        this.Fh = T256_IV[10] | 0;\n        this.Fl = T256_IV[11] | 0;\n        this.Gh = T256_IV[12] | 0;\n        this.Gl = T256_IV[13] | 0;\n        this.Hh = T256_IV[14] | 0;\n        this.Hl = T256_IV[15] | 0;\n    }\n}\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","import { sha256 } from '@noble/hashes/sha2';\n\nexport default function sha256Hash(data) {\n  return sha256(data);\n}\n","import { cbc, ecb } from '@noble/ciphers/aes';\n\nexport function aesCbcEncrypt(data, key, iv, padding = true) {\n  return cbc(key, iv, { disablePadding: !padding }).encrypt(data);\n}\n\nexport function aesEcbEncrypt(data, key) {\n  return ecb(key, { disablePadding: true }).encrypt(data);\n}\n","// RC4 (for legacy PDF 1.3-1.5)\nexport default function rc4(data, key) {\n  const s = new Uint8Array(256);\n  for (let i = 0; i < 256; i++) {\n    s[i] = i;\n  }\n\n  let j = 0;\n  for (let i = 0; i < 256; i++) {\n    j = (j + s[i] + key[i % key.length]) & 0xff;\n    [s[i], s[j]] = [s[j], s[i]];\n  }\n\n  const output = new Uint8Array(data.length);\n  for (let i = 0, j = 0, k = 0; k < data.length; k++) {\n    i = (i + 1) & 0xff;\n    j = (j + s[i]) & 0xff;\n    [s[i], s[j]] = [s[j], s[i]];\n    output[k] = data[k] ^ s[(s[i] + s[j]) & 0xff];\n  }\n\n  return output;\n}\n","export default function randomBytes(length) {\n  const bytes = new Uint8Array(length);\n  globalThis.crypto.getRandomValues(bytes);\n  return bytes;\n}\n","/**\n * Check if value is in a range group.\n * @param {number} value\n * @param {number[]} rangeGroup\n * @returns {boolean}\n */\nfunction inRange(value, rangeGroup) {\n  if (value < rangeGroup[0]) return false;\n  let startRange = 0;\n  let endRange = rangeGroup.length / 2;\n  while (startRange <= endRange) {\n    const middleRange = Math.floor((startRange + endRange) / 2);\n\n    // actual array index\n    const arrayIndex = middleRange * 2;\n\n    // Check if value is in range pointed by actual index\n    if (\n      value >= rangeGroup[arrayIndex] &&\n      value <= rangeGroup[arrayIndex + 1]\n    ) {\n      return true;\n    }\n\n    if (value > rangeGroup[arrayIndex + 1]) {\n      // Search Right Side Of Array\n      startRange = middleRange + 1;\n    } else {\n      // Search Left Side Of Array\n      endRange = middleRange - 1;\n    }\n  }\n  return false;\n}\n\nexport { inRange };\n","import { inRange } from './util';\n\n// prettier-ignore-start\n/**\n * A.1 Unassigned code points in Unicode 3.2\n * @link https://tools.ietf.org/html/rfc3454#appendix-A.1\n */\nconst unassigned_code_points = [\n  0x0221, 0x0221, 0x0234, 0x024f, 0x02ae, 0x02af, 0x02ef, 0x02ff, 0x0350,\n  0x035f, 0x0370, 0x0373, 0x0376, 0x0379, 0x037b, 0x037d, 0x037f, 0x0383,\n  0x038b, 0x038b, 0x038d, 0x038d, 0x03a2, 0x03a2, 0x03cf, 0x03cf, 0x03f7,\n  0x03ff, 0x0487, 0x0487, 0x04cf, 0x04cf, 0x04f6, 0x04f7, 0x04fa, 0x04ff,\n  0x0510, 0x0530, 0x0557, 0x0558, 0x0560, 0x0560, 0x0588, 0x0588, 0x058b,\n  0x0590, 0x05a2, 0x05a2, 0x05ba, 0x05ba, 0x05c5, 0x05cf, 0x05eb, 0x05ef,\n  0x05f5, 0x060b, 0x060d, 0x061a, 0x061c, 0x061e, 0x0620, 0x0620, 0x063b,\n  0x063f, 0x0656, 0x065f, 0x06ee, 0x06ef, 0x06ff, 0x06ff, 0x070e, 0x070e,\n  0x072d, 0x072f, 0x074b, 0x077f, 0x07b2, 0x0900, 0x0904, 0x0904, 0x093a,\n  0x093b, 0x094e, 0x094f, 0x0955, 0x0957, 0x0971, 0x0980, 0x0984, 0x0984,\n  0x098d, 0x098e, 0x0991, 0x0992, 0x09a9, 0x09a9, 0x09b1, 0x09b1, 0x09b3,\n  0x09b5, 0x09ba, 0x09bb, 0x09bd, 0x09bd, 0x09c5, 0x09c6, 0x09c9, 0x09ca,\n  0x09ce, 0x09d6, 0x09d8, 0x09db, 0x09de, 0x09de, 0x09e4, 0x09e5, 0x09fb,\n  0x0a01, 0x0a03, 0x0a04, 0x0a0b, 0x0a0e, 0x0a11, 0x0a12, 0x0a29, 0x0a29,\n  0x0a31, 0x0a31, 0x0a34, 0x0a34, 0x0a37, 0x0a37, 0x0a3a, 0x0a3b, 0x0a3d,\n  0x0a3d, 0x0a43, 0x0a46, 0x0a49, 0x0a4a, 0x0a4e, 0x0a58, 0x0a5d, 0x0a5d,\n  0x0a5f, 0x0a65, 0x0a75, 0x0a80, 0x0a84, 0x0a84, 0x0a8c, 0x0a8c, 0x0a8e,\n  0x0a8e, 0x0a92, 0x0a92, 0x0aa9, 0x0aa9, 0x0ab1, 0x0ab1, 0x0ab4, 0x0ab4,\n  0x0aba, 0x0abb, 0x0ac6, 0x0ac6, 0x0aca, 0x0aca, 0x0ace, 0x0acf, 0x0ad1,\n  0x0adf, 0x0ae1, 0x0ae5, 0x0af0, 0x0b00, 0x0b04, 0x0b04, 0x0b0d, 0x0b0e,\n  0x0b11, 0x0b12, 0x0b29, 0x0b29, 0x0b31, 0x0b31, 0x0b34, 0x0b35, 0x0b3a,\n  0x0b3b, 0x0b44, 0x0b46, 0x0b49, 0x0b4a, 0x0b4e, 0x0b55, 0x0b58, 0x0b5b,\n  0x0b5e, 0x0b5e, 0x0b62, 0x0b65, 0x0b71, 0x0b81, 0x0b84, 0x0b84, 0x0b8b,\n  0x0b8d, 0x0b91, 0x0b91, 0x0b96, 0x0b98, 0x0b9b, 0x0b9b, 0x0b9d, 0x0b9d,\n  0x0ba0, 0x0ba2, 0x0ba5, 0x0ba7, 0x0bab, 0x0bad, 0x0bb6, 0x0bb6, 0x0bba,\n  0x0bbd, 0x0bc3, 0x0bc5, 0x0bc9, 0x0bc9, 0x0bce, 0x0bd6, 0x0bd8, 0x0be6,\n  0x0bf3, 0x0c00, 0x0c04, 0x0c04, 0x0c0d, 0x0c0d, 0x0c11, 0x0c11, 0x0c29,\n  0x0c29, 0x0c34, 0x0c34, 0x0c3a, 0x0c3d, 0x0c45, 0x0c45, 0x0c49, 0x0c49,\n  0x0c4e, 0x0c54, 0x0c57, 0x0c5f, 0x0c62, 0x0c65, 0x0c70, 0x0c81, 0x0c84,\n  0x0c84, 0x0c8d, 0x0c8d, 0x0c91, 0x0c91, 0x0ca9, 0x0ca9, 0x0cb4, 0x0cb4,\n  0x0cba, 0x0cbd, 0x0cc5, 0x0cc5, 0x0cc9, 0x0cc9, 0x0cce, 0x0cd4, 0x0cd7,\n  0x0cdd, 0x0cdf, 0x0cdf, 0x0ce2, 0x0ce5, 0x0cf0, 0x0d01, 0x0d04, 0x0d04,\n  0x0d0d, 0x0d0d, 0x0d11, 0x0d11, 0x0d29, 0x0d29, 0x0d3a, 0x0d3d, 0x0d44,\n  0x0d45, 0x0d49, 0x0d49, 0x0d4e, 0x0d56, 0x0d58, 0x0d5f, 0x0d62, 0x0d65,\n  0x0d70, 0x0d81, 0x0d84, 0x0d84, 0x0d97, 0x0d99, 0x0db2, 0x0db2, 0x0dbc,\n  0x0dbc, 0x0dbe, 0x0dbf, 0x0dc7, 0x0dc9, 0x0dcb, 0x0dce, 0x0dd5, 0x0dd5,\n  0x0dd7, 0x0dd7, 0x0de0, 0x0df1, 0x0df5, 0x0e00, 0x0e3b, 0x0e3e, 0x0e5c,\n  0x0e80, 0x0e83, 0x0e83, 0x0e85, 0x0e86, 0x0e89, 0x0e89, 0x0e8b, 0x0e8c,\n  0x0e8e, 0x0e93, 0x0e98, 0x0e98, 0x0ea0, 0x0ea0, 0x0ea4, 0x0ea4, 0x0ea6,\n  0x0ea6, 0x0ea8, 0x0ea9, 0x0eac, 0x0eac, 0x0eba, 0x0eba, 0x0ebe, 0x0ebf,\n  0x0ec5, 0x0ec5, 0x0ec7, 0x0ec7, 0x0ece, 0x0ecf, 0x0eda, 0x0edb, 0x0ede,\n  0x0eff, 0x0f48, 0x0f48, 0x0f6b, 0x0f70, 0x0f8c, 0x0f8f, 0x0f98, 0x0f98,\n  0x0fbd, 0x0fbd, 0x0fcd, 0x0fce, 0x0fd0, 0x0fff, 0x1022, 0x1022, 0x1028,\n  0x1028, 0x102b, 0x102b, 0x1033, 0x1035, 0x103a, 0x103f, 0x105a, 0x109f,\n  0x10c6, 0x10cf, 0x10f9, 0x10fa, 0x10fc, 0x10ff, 0x115a, 0x115e, 0x11a3,\n  0x11a7, 0x11fa, 0x11ff, 0x1207, 0x1207, 0x1247, 0x1247, 0x1249, 0x1249,\n  0x124e, 0x124f, 0x1257, 0x1257, 0x1259, 0x1259, 0x125e, 0x125f, 0x1287,\n  0x1287, 0x1289, 0x1289, 0x128e, 0x128f, 0x12af, 0x12af, 0x12b1, 0x12b1,\n  0x12b6, 0x12b7, 0x12bf, 0x12bf, 0x12c1, 0x12c1, 0x12c6, 0x12c7, 0x12cf,\n  0x12cf, 0x12d7, 0x12d7, 0x12ef, 0x12ef, 0x130f, 0x130f, 0x1311, 0x1311,\n  0x1316, 0x1317, 0x131f, 0x131f, 0x1347, 0x1347, 0x135b, 0x1360, 0x137d,\n  0x139f, 0x13f5, 0x1400, 0x1677, 0x167f, 0x169d, 0x169f, 0x16f1, 0x16ff,\n  0x170d, 0x170d, 0x1715, 0x171f, 0x1737, 0x173f, 0x1754, 0x175f, 0x176d,\n  0x176d, 0x1771, 0x1771, 0x1774, 0x177f, 0x17dd, 0x17df, 0x17ea, 0x17ff,\n  0x180f, 0x180f, 0x181a, 0x181f, 0x1878, 0x187f, 0x18aa, 0x1dff, 0x1e9c,\n  0x1e9f, 0x1efa, 0x1eff, 0x1f16, 0x1f17, 0x1f1e, 0x1f1f, 0x1f46, 0x1f47,\n  0x1f4e, 0x1f4f, 0x1f58, 0x1f58, 0x1f5a, 0x1f5a, 0x1f5c, 0x1f5c, 0x1f5e,\n  0x1f5e, 0x1f7e, 0x1f7f, 0x1fb5, 0x1fb5, 0x1fc5, 0x1fc5, 0x1fd4, 0x1fd5,\n  0x1fdc, 0x1fdc, 0x1ff0, 0x1ff1, 0x1ff5, 0x1ff5, 0x1fff, 0x1fff, 0x2053,\n  0x2056, 0x2058, 0x205e, 0x2064, 0x2069, 0x2072, 0x2073, 0x208f, 0x209f,\n  0x20b2, 0x20cf, 0x20eb, 0x20ff, 0x213b, 0x213c, 0x214c, 0x2152, 0x2184,\n  0x218f, 0x23cf, 0x23ff, 0x2427, 0x243f, 0x244b, 0x245f, 0x24ff, 0x24ff,\n  0x2614, 0x2615, 0x2618, 0x2618, 0x267e, 0x267f, 0x268a, 0x2700, 0x2705,\n  0x2705, 0x270a, 0x270b, 0x2728, 0x2728, 0x274c, 0x274c, 0x274e, 0x274e,\n  0x2753, 0x2755, 0x2757, 0x2757, 0x275f, 0x2760, 0x2795, 0x2797, 0x27b0,\n  0x27b0, 0x27bf, 0x27cf, 0x27ec, 0x27ef, 0x2b00, 0x2e7f, 0x2e9a, 0x2e9a,\n  0x2ef4, 0x2eff, 0x2fd6, 0x2fef, 0x2ffc, 0x2fff, 0x3040, 0x3040, 0x3097,\n  0x3098, 0x3100, 0x3104, 0x312d, 0x3130, 0x318f, 0x318f, 0x31b8, 0x31ef,\n  0x321d, 0x321f, 0x3244, 0x3250, 0x327c, 0x327e, 0x32cc, 0x32cf, 0x32ff,\n  0x32ff, 0x3377, 0x337a, 0x33de, 0x33df, 0x33ff, 0x33ff, 0x4db6, 0x4dff,\n  0x9fa6, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xabff, 0xd7a4, 0xd7ff, 0xfa2e,\n  0xfa2f, 0xfa6b, 0xfaff, 0xfb07, 0xfb12, 0xfb18, 0xfb1c, 0xfb37, 0xfb37,\n  0xfb3d, 0xfb3d, 0xfb3f, 0xfb3f, 0xfb42, 0xfb42, 0xfb45, 0xfb45, 0xfbb2,\n  0xfbd2, 0xfd40, 0xfd4f, 0xfd90, 0xfd91, 0xfdc8, 0xfdcf, 0xfdfd, 0xfdff,\n  0xfe10, 0xfe1f, 0xfe24, 0xfe2f, 0xfe47, 0xfe48, 0xfe53, 0xfe53, 0xfe67,\n  0xfe67, 0xfe6c, 0xfe6f, 0xfe75, 0xfe75, 0xfefd, 0xfefe, 0xff00, 0xff00,\n  0xffbf, 0xffc1, 0xffc8, 0xffc9, 0xffd0, 0xffd1, 0xffd8, 0xffd9, 0xffdd,\n  0xffdf, 0xffe7, 0xffe7, 0xffef, 0xfff8, 0x10000, 0x102ff, 0x1031f, 0x1031f,\n  0x10324, 0x1032f, 0x1034b, 0x103ff, 0x10426, 0x10427, 0x1044e, 0x1cfff,\n  0x1d0f6, 0x1d0ff, 0x1d127, 0x1d129, 0x1d1de, 0x1d3ff, 0x1d455, 0x1d455,\n  0x1d49d, 0x1d49d, 0x1d4a0, 0x1d4a1, 0x1d4a3, 0x1d4a4, 0x1d4a7, 0x1d4a8,\n  0x1d4ad, 0x1d4ad, 0x1d4ba, 0x1d4ba, 0x1d4bc, 0x1d4bc, 0x1d4c1, 0x1d4c1,\n  0x1d4c4, 0x1d4c4, 0x1d506, 0x1d506, 0x1d50b, 0x1d50c, 0x1d515, 0x1d515,\n  0x1d51d, 0x1d51d, 0x1d53a, 0x1d53a, 0x1d53f, 0x1d53f, 0x1d545, 0x1d545,\n  0x1d547, 0x1d549, 0x1d551, 0x1d551, 0x1d6a4, 0x1d6a7, 0x1d7ca, 0x1d7cd,\n  0x1d800, 0x1fffd, 0x2a6d7, 0x2f7ff, 0x2fa1e, 0x2fffd, 0x30000, 0x3fffd,\n  0x40000, 0x4fffd, 0x50000, 0x5fffd, 0x60000, 0x6fffd, 0x70000, 0x7fffd,\n  0x80000, 0x8fffd, 0x90000, 0x9fffd, 0xa0000, 0xafffd, 0xb0000, 0xbfffd,\n  0xc0000, 0xcfffd, 0xd0000, 0xdfffd, 0xe0000, 0xe0000, 0xe0002, 0xe001f,\n  0xe0080, 0xefffd,\n];\n// prettier-ignore-end\n\nconst isUnassignedCodePoint = (character) =>\n  inRange(character, unassigned_code_points);\n\n// prettier-ignore-start\n/**\n * B.1 Commonly mapped to nothing\n * @link https://tools.ietf.org/html/rfc3454#appendix-B.1\n */\nconst commonly_mapped_to_nothing = [\n  0x00ad, 0x00ad, 0x034f, 0x034f, 0x1806, 0x1806, 0x180b, 0x180b, 0x180c,\n  0x180c, 0x180d, 0x180d, 0x200b, 0x200b, 0x200c, 0x200c, 0x200d, 0x200d,\n  0x2060, 0x2060, 0xfe00, 0xfe00, 0xfe01, 0xfe01, 0xfe02, 0xfe02, 0xfe03,\n  0xfe03, 0xfe04, 0xfe04, 0xfe05, 0xfe05, 0xfe06, 0xfe06, 0xfe07, 0xfe07,\n  0xfe08, 0xfe08, 0xfe09, 0xfe09, 0xfe0a, 0xfe0a, 0xfe0b, 0xfe0b, 0xfe0c,\n  0xfe0c, 0xfe0d, 0xfe0d, 0xfe0e, 0xfe0e, 0xfe0f, 0xfe0f, 0xfeff, 0xfeff,\n];\n// prettier-ignore-end\n\nconst isCommonlyMappedToNothing = (character) =>\n  inRange(character, commonly_mapped_to_nothing);\n\n// prettier-ignore-start\n/**\n * C.1.2 Non-ASCII space characters\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.1.2\n */\nconst non_ASCII_space_characters = [\n  0x00a0, 0x00a0 /* NO-BREAK SPACE */, 0x1680, 0x1680 /* OGHAM SPACE MARK */,\n  0x2000, 0x2000 /* EN QUAD */, 0x2001, 0x2001 /* EM QUAD */, 0x2002,\n  0x2002 /* EN SPACE */, 0x2003, 0x2003 /* EM SPACE */, 0x2004,\n  0x2004 /* THREE-PER-EM SPACE */, 0x2005, 0x2005 /* FOUR-PER-EM SPACE */,\n  0x2006, 0x2006 /* SIX-PER-EM SPACE */, 0x2007, 0x2007 /* FIGURE SPACE */,\n  0x2008, 0x2008 /* PUNCTUATION SPACE */, 0x2009, 0x2009 /* THIN SPACE */,\n  0x200a, 0x200a /* HAIR SPACE */, 0x200b, 0x200b /* ZERO WIDTH SPACE */,\n  0x202f, 0x202f /* NARROW NO-BREAK SPACE */, 0x205f,\n  0x205f /* MEDIUM MATHEMATICAL SPACE */, 0x3000,\n  0x3000 /* IDEOGRAPHIC SPACE */,\n];\n// prettier-ignore-end\n\nconst isNonASCIISpaceCharacter = (character) =>\n  inRange(character, non_ASCII_space_characters);\n\n// prettier-ignore-start\nconst non_ASCII_controls_characters = [\n  /**\n   * C.2.2 Non-ASCII control characters\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.2\n   */\n  0x0080, 0x009f /* [CONTROL CHARACTERS] */, 0x06dd,\n  0x06dd /* ARABIC END OF AYAH */, 0x070f,\n  0x070f /* SYRIAC ABBREVIATION MARK */, 0x180e,\n  0x180e /* MONGOLIAN VOWEL SEPARATOR */, 0x200c,\n  0x200c /* ZERO WIDTH NON-JOINER */, 0x200d, 0x200d /* ZERO WIDTH JOINER */,\n  0x2028, 0x2028 /* LINE SEPARATOR */, 0x2029, 0x2029 /* PARAGRAPH SEPARATOR */,\n  0x2060, 0x2060 /* WORD JOINER */, 0x2061, 0x2061 /* FUNCTION APPLICATION */,\n  0x2062, 0x2062 /* INVISIBLE TIMES */, 0x2063,\n  0x2063 /* INVISIBLE SEPARATOR */, 0x206a, 0x206f /* [CONTROL CHARACTERS] */,\n  0xfeff, 0xfeff /* ZERO WIDTH NO-BREAK SPACE */, 0xfff9,\n  0xfffc /* [CONTROL CHARACTERS] */, 0x1d173,\n  0x1d17a /* [MUSICAL CONTROL CHARACTERS] */,\n];\n\nconst non_character_codepoints = [\n  /**\n   * C.4 Non-character code points\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.4\n   */\n  0xfdd0, 0xfdef /* [NONCHARACTER CODE POINTS] */, 0xfffe,\n  0xffff /* [NONCHARACTER CODE POINTS] */, 0x1fffe,\n  0x1ffff /* [NONCHARACTER CODE POINTS] */, 0x2fffe,\n  0x2ffff /* [NONCHARACTER CODE POINTS] */, 0x3fffe,\n  0x3ffff /* [NONCHARACTER CODE POINTS] */, 0x4fffe,\n  0x4ffff /* [NONCHARACTER CODE POINTS] */, 0x5fffe,\n  0x5ffff /* [NONCHARACTER CODE POINTS] */, 0x6fffe,\n  0x6ffff /* [NONCHARACTER CODE POINTS] */, 0x7fffe,\n  0x7ffff /* [NONCHARACTER CODE POINTS] */, 0x8fffe,\n  0x8ffff /* [NONCHARACTER CODE POINTS] */, 0x9fffe,\n  0x9ffff /* [NONCHARACTER CODE POINTS] */, 0xafffe,\n  0xaffff /* [NONCHARACTER CODE POINTS] */, 0xbfffe,\n  0xbffff /* [NONCHARACTER CODE POINTS] */, 0xcfffe,\n  0xcffff /* [NONCHARACTER CODE POINTS] */, 0xdfffe,\n  0xdffff /* [NONCHARACTER CODE POINTS] */, 0xefffe,\n  0xeffff /* [NONCHARACTER CODE POINTS] */, 0x10fffe,\n  0x10ffff /* [NONCHARACTER CODE POINTS] */,\n];\n\n/**\n * 2.3.  Prohibited Output\n */\nconst prohibited_characters = [\n  /**\n   * C.2.1 ASCII control characters\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.1\n   */\n  0, 0x001f /* [CONTROL CHARACTERS] */, 0x007f, 0x007f /* DELETE */,\n\n  /**\n   * C.8 Change display properties or are deprecated\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.8\n   */\n  0x0340, 0x0340 /* COMBINING GRAVE TONE MARK */, 0x0341,\n  0x0341 /* COMBINING ACUTE TONE MARK */, 0x200e,\n  0x200e /* LEFT-TO-RIGHT MARK */, 0x200f, 0x200f /* RIGHT-TO-LEFT MARK */,\n  0x202a, 0x202a /* LEFT-TO-RIGHT EMBEDDING */, 0x202b,\n  0x202b /* RIGHT-TO-LEFT EMBEDDING */, 0x202c,\n  0x202c /* POP DIRECTIONAL FORMATTING */, 0x202d,\n  0x202d /* LEFT-TO-RIGHT OVERRIDE */, 0x202e,\n  0x202e /* RIGHT-TO-LEFT OVERRIDE */, 0x206a,\n  0x206a /* INHIBIT SYMMETRIC SWAPPING */, 0x206b,\n  0x206b /* ACTIVATE SYMMETRIC SWAPPING */, 0x206c,\n  0x206c /* INHIBIT ARABIC FORM SHAPING */, 0x206d,\n  0x206d /* ACTIVATE ARABIC FORM SHAPING */, 0x206e,\n  0x206e /* NATIONAL DIGIT SHAPES */, 0x206f, 0x206f /* NOMINAL DIGIT SHAPES */,\n\n  /**\n   * C.7 Inappropriate for canonical representation\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.7\n   */\n  0x2ff0, 0x2ffb /* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */,\n\n  /**\n   * C.5 Surrogate codes\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.5\n   */\n  0xd800, 0xdfff,\n\n  /**\n   * C.3 Private use\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\n   */\n  0xe000, 0xf8ff /* [PRIVATE USE, PLANE 0] */,\n\n  /**\n   * C.6 Inappropriate for plain text\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.6\n   */\n  0xfff9, 0xfff9 /* INTERLINEAR ANNOTATION ANCHOR */, 0xfffa,\n  0xfffa /* INTERLINEAR ANNOTATION SEPARATOR */, 0xfffb,\n  0xfffb /* INTERLINEAR ANNOTATION TERMINATOR */, 0xfffc,\n  0xfffc /* OBJECT REPLACEMENT CHARACTER */, 0xfffd,\n  0xfffd /* REPLACEMENT CHARACTER */,\n\n  /**\n   * C.9 Tagging characters\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.9\n   */\n  0xe0001, 0xe0001 /* LANGUAGE TAG */, 0xe0020,\n  0xe007f /* [TAGGING CHARACTERS] */,\n\n  /**\n   * C.3 Private use\n   * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\n   */\n\n  0xf0000, 0xffffd /* [PRIVATE USE, PLANE 15] */, 0x100000,\n  0x10fffd /* [PRIVATE USE, PLANE 16] */,\n];\n// prettier-ignore-end\n\nconst isProhibitedCharacter = (character) =>\n  inRange(character, non_ASCII_space_characters) ||\n  inRange(character, prohibited_characters) ||\n  inRange(character, non_ASCII_controls_characters) ||\n  inRange(character, non_character_codepoints);\n\n// prettier-ignore-start\n/**\n * D.1 Characters with bidirectional property \"R\" or \"AL\"\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.1\n */\nconst bidirectional_r_al = [\n  0x05be, 0x05be, 0x05c0, 0x05c0, 0x05c3, 0x05c3, 0x05d0, 0x05ea, 0x05f0,\n  0x05f4, 0x061b, 0x061b, 0x061f, 0x061f, 0x0621, 0x063a, 0x0640, 0x064a,\n  0x066d, 0x066f, 0x0671, 0x06d5, 0x06dd, 0x06dd, 0x06e5, 0x06e6, 0x06fa,\n  0x06fe, 0x0700, 0x070d, 0x0710, 0x0710, 0x0712, 0x072c, 0x0780, 0x07a5,\n  0x07b1, 0x07b1, 0x200f, 0x200f, 0xfb1d, 0xfb1d, 0xfb1f, 0xfb28, 0xfb2a,\n  0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44,\n  0xfb46, 0xfbb1, 0xfbd3, 0xfd3d, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0,\n  0xfdfc, 0xfe70, 0xfe74, 0xfe76, 0xfefc,\n];\n// prettier-ignore-end\n\nconst isBidirectionalRAL = (character) =>\n  inRange(character, bidirectional_r_al);\n\n// prettier-ignore-start\n/**\n * D.2 Characters with bidirectional property \"L\"\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.2\n */\nconst bidirectional_l = [\n  0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba,\n  0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x0220, 0x0222, 0x0233,\n  0x0250, 0x02ad, 0x02b0, 0x02b8, 0x02bb, 0x02c1, 0x02d0, 0x02d1, 0x02e0,\n  0x02e4, 0x02ee, 0x02ee, 0x037a, 0x037a, 0x0386, 0x0386, 0x0388, 0x038a,\n  0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x03ce, 0x03d0, 0x03f5, 0x0400,\n  0x0482, 0x048a, 0x04ce, 0x04d0, 0x04f5, 0x04f8, 0x04f9, 0x0500, 0x050f,\n  0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x0589, 0x0903,\n  0x0903, 0x0905, 0x0939, 0x093d, 0x0940, 0x0949, 0x094c, 0x0950, 0x0950,\n  0x0958, 0x0961, 0x0964, 0x0970, 0x0982, 0x0983, 0x0985, 0x098c, 0x098f,\n  0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9,\n  0x09be, 0x09c0, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09d7, 0x09d7, 0x09dc,\n  0x09dd, 0x09df, 0x09e1, 0x09e6, 0x09f1, 0x09f4, 0x09fa, 0x0a05, 0x0a0a,\n  0x0a0f, 0x0a10, 0x0a13, 0x0a28, 0x0a2a, 0x0a30, 0x0a32, 0x0a33, 0x0a35,\n  0x0a36, 0x0a38, 0x0a39, 0x0a3e, 0x0a40, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e,\n  0x0a66, 0x0a6f, 0x0a72, 0x0a74, 0x0a83, 0x0a83, 0x0a85, 0x0a8b, 0x0a8d,\n  0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3,\n  0x0ab5, 0x0ab9, 0x0abd, 0x0ac0, 0x0ac9, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0,\n  0x0ad0, 0x0ae0, 0x0ae0, 0x0ae6, 0x0aef, 0x0b02, 0x0b03, 0x0b05, 0x0b0c,\n  0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b36,\n  0x0b39, 0x0b3d, 0x0b3e, 0x0b40, 0x0b40, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c,\n  0x0b57, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b61, 0x0b66, 0x0b70, 0x0b83,\n  0x0b83, 0x0b85, 0x0b8a, 0x0b8e, 0x0b90, 0x0b92, 0x0b95, 0x0b99, 0x0b9a,\n  0x0b9c, 0x0b9c, 0x0b9e, 0x0b9f, 0x0ba3, 0x0ba4, 0x0ba8, 0x0baa, 0x0bae,\n  0x0bb5, 0x0bb7, 0x0bb9, 0x0bbe, 0x0bbf, 0x0bc1, 0x0bc2, 0x0bc6, 0x0bc8,\n  0x0bca, 0x0bcc, 0x0bd7, 0x0bd7, 0x0be7, 0x0bf2, 0x0c01, 0x0c03, 0x0c05,\n  0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c33, 0x0c35, 0x0c39,\n  0x0c41, 0x0c44, 0x0c60, 0x0c61, 0x0c66, 0x0c6f, 0x0c82, 0x0c83, 0x0c85,\n  0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9,\n  0x0cbe, 0x0cbe, 0x0cc0, 0x0cc4, 0x0cc7, 0x0cc8, 0x0cca, 0x0ccb, 0x0cd5,\n  0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce1, 0x0ce6, 0x0cef, 0x0d02, 0x0d03,\n  0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d28, 0x0d2a, 0x0d39, 0x0d3e,\n  0x0d40, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d57, 0x0d57, 0x0d60, 0x0d61,\n  0x0d66, 0x0d6f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3,\n  0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd1, 0x0dd8, 0x0ddf,\n  0x0df2, 0x0df4, 0x0e01, 0x0e30, 0x0e32, 0x0e33, 0x0e40, 0x0e46, 0x0e4f,\n  0x0e5b, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, 0x0e8a, 0x0e8a,\n  0x0e8d, 0x0e8d, 0x0e94, 0x0e97, 0x0e99, 0x0e9f, 0x0ea1, 0x0ea3, 0x0ea5,\n  0x0ea5, 0x0ea7, 0x0ea7, 0x0eaa, 0x0eab, 0x0ead, 0x0eb0, 0x0eb2, 0x0eb3,\n  0x0ebd, 0x0ebd, 0x0ec0, 0x0ec4, 0x0ec6, 0x0ec6, 0x0ed0, 0x0ed9, 0x0edc,\n  0x0edd, 0x0f00, 0x0f17, 0x0f1a, 0x0f34, 0x0f36, 0x0f36, 0x0f38, 0x0f38,\n  0x0f3e, 0x0f47, 0x0f49, 0x0f6a, 0x0f7f, 0x0f7f, 0x0f85, 0x0f85, 0x0f88,\n  0x0f8b, 0x0fbe, 0x0fc5, 0x0fc7, 0x0fcc, 0x0fcf, 0x0fcf, 0x1000, 0x1021,\n  0x1023, 0x1027, 0x1029, 0x102a, 0x102c, 0x102c, 0x1031, 0x1031, 0x1038,\n  0x1038, 0x1040, 0x1057, 0x10a0, 0x10c5, 0x10d0, 0x10f8, 0x10fb, 0x10fb,\n  0x1100, 0x1159, 0x115f, 0x11a2, 0x11a8, 0x11f9, 0x1200, 0x1206, 0x1208,\n  0x1246, 0x1248, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258,\n  0x125a, 0x125d, 0x1260, 0x1286, 0x1288, 0x1288, 0x128a, 0x128d, 0x1290,\n  0x12ae, 0x12b0, 0x12b0, 0x12b2, 0x12b5, 0x12b8, 0x12be, 0x12c0, 0x12c0,\n  0x12c2, 0x12c5, 0x12c8, 0x12ce, 0x12d0, 0x12d6, 0x12d8, 0x12ee, 0x12f0,\n  0x130e, 0x1310, 0x1310, 0x1312, 0x1315, 0x1318, 0x131e, 0x1320, 0x1346,\n  0x1348, 0x135a, 0x1361, 0x137c, 0x13a0, 0x13f4, 0x1401, 0x1676, 0x1681,\n  0x169a, 0x16a0, 0x16f0, 0x1700, 0x170c, 0x170e, 0x1711, 0x1720, 0x1731,\n  0x1735, 0x1736, 0x1740, 0x1751, 0x1760, 0x176c, 0x176e, 0x1770, 0x1780,\n  0x17b6, 0x17be, 0x17c5, 0x17c7, 0x17c8, 0x17d4, 0x17da, 0x17dc, 0x17dc,\n  0x17e0, 0x17e9, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18a8, 0x1e00,\n  0x1e9b, 0x1ea0, 0x1ef9, 0x1f00, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45,\n  0x1f48, 0x1f4d, 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d,\n  0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, 0x1fb6, 0x1fbc, 0x1fbe, 0x1fbe,\n  0x1fc2, 0x1fc4, 0x1fc6, 0x1fcc, 0x1fd0, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fe0,\n  0x1fec, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffc, 0x200e, 0x200e, 0x2071, 0x2071,\n  0x207f, 0x207f, 0x2102, 0x2102, 0x2107, 0x2107, 0x210a, 0x2113, 0x2115,\n  0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128,\n  0x212a, 0x212d, 0x212f, 0x2131, 0x2133, 0x2139, 0x213d, 0x213f, 0x2145,\n  0x2149, 0x2160, 0x2183, 0x2336, 0x237a, 0x2395, 0x2395, 0x249c, 0x24e9,\n  0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041,\n  0x3096, 0x309d, 0x309f, 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312c,\n  0x3131, 0x318e, 0x3190, 0x31b7, 0x31f0, 0x321c, 0x3220, 0x3243, 0x3260,\n  0x327b, 0x327f, 0x32b0, 0x32c0, 0x32cb, 0x32d0, 0x32fe, 0x3300, 0x3376,\n  0x337b, 0x33dd, 0x33e0, 0x33fe, 0x3400, 0x4db5, 0x4e00, 0x9fa5, 0xa000,\n  0xa48c, 0xac00, 0xd7a3, 0xd800, 0xfa2d, 0xfa30, 0xfa6a, 0xfb00, 0xfb06,\n  0xfb13, 0xfb17, 0xff21, 0xff3a, 0xff41, 0xff5a, 0xff66, 0xffbe, 0xffc2,\n  0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0x10300, 0x1031e,\n  0x10320, 0x10323, 0x10330, 0x1034a, 0x10400, 0x10425, 0x10428, 0x1044d,\n  0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d12a, 0x1d166, 0x1d16a, 0x1d172,\n  0x1d183, 0x1d184, 0x1d18c, 0x1d1a9, 0x1d1ae, 0x1d1dd, 0x1d400, 0x1d454,\n  0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6,\n  0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c0,\n  0x1d4c2, 0x1d4c3, 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514,\n  0x1d516, 0x1d51c, 0x1d51e, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544,\n  0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d552, 0x1d6a3, 0x1d6a8, 0x1d7c9,\n  0x20000, 0x2a6d6, 0x2f800, 0x2fa1d, 0xf0000, 0xffffd, 0x100000, 0x10fffd,\n];\n// prettier-ignore-end\n\nconst isBidirectionalL = (character) => inRange(character, bidirectional_l);\n\nexport {\n  isUnassignedCodePoint,\n  isCommonlyMappedToNothing,\n  isNonASCIISpaceCharacter,\n  isProhibitedCharacter,\n  isBidirectionalRAL,\n  isBidirectionalL,\n};\n","import {\n  isUnassignedCodePoint,\n  isCommonlyMappedToNothing,\n  isNonASCIISpaceCharacter,\n  isProhibitedCharacter,\n  isBidirectionalRAL,\n  isBidirectionalL,\n} from './lib/code-points';\n\n// 2.1.  Mapping\n\n/**\n * non-ASCII space characters [StringPrep, C.1.2] that can be\n * mapped to SPACE (U+0020)\n */\nconst mapping2space = isNonASCIISpaceCharacter;\n\n/**\n * the \"commonly mapped to nothing\" characters [StringPrep, B.1]\n * that can be mapped to nothing.\n */\nconst mapping2nothing = isCommonlyMappedToNothing;\n\n// utils\nconst getCodePoint = (character) => character.codePointAt(0);\nconst first = (x) => x[0];\nconst last = (x) => x[x.length - 1];\n\n/**\n * Convert provided string into an array of Unicode Code Points.\n * Based on https://stackoverflow.com/a/21409165/1556249\n * and https://www.npmjs.com/package/code-point-at.\n * @param {string} input\n * @returns {number[]}\n */\nfunction toCodePoints(input) {\n  const codepoints = [];\n  const size = input.length;\n\n  for (let i = 0; i < size; i += 1) {\n    const before = input.charCodeAt(i);\n\n    if (before >= 0xd800 && before <= 0xdbff && size > i + 1) {\n      const next = input.charCodeAt(i + 1);\n\n      if (next >= 0xdc00 && next <= 0xdfff) {\n        codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000);\n        i += 1;\n        continue;\n      }\n    }\n\n    codepoints.push(before);\n  }\n\n  return codepoints;\n}\n\n/**\n * SASLprep.\n * @param {string} input\n * @param {Object} opts\n * @param {boolean} opts.allowUnassigned\n * @returns {string}\n */\nfunction saslprep(input, opts = {}) {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected string.');\n  }\n\n  if (input.length === 0) {\n    return '';\n  }\n\n  // 1. Map\n  const mapped_input = toCodePoints(input)\n    // 1.1 mapping to space\n    .map((character) => (mapping2space(character) ? 0x20 : character))\n    // 1.2 mapping to nothing\n    .filter((character) => !mapping2nothing(character));\n\n  // 2. Normalize\n  const normalized_input = String.fromCodePoint\n    .apply(null, mapped_input)\n    .normalize('NFKC');\n\n  const normalized_map = toCodePoints(normalized_input);\n\n  // 3. Prohibit\n  const hasProhibited = normalized_map.some(isProhibitedCharacter);\n\n  if (hasProhibited) {\n    throw new Error(\n      'Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3',\n    );\n  }\n\n  // Unassigned Code Points\n  if (opts.allowUnassigned !== true) {\n    const hasUnassigned = normalized_map.some(isUnassignedCodePoint);\n\n    if (hasUnassigned) {\n      throw new Error(\n        'Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5',\n      );\n    }\n  }\n\n  // 4. check bidi\n\n  const hasBidiRAL = normalized_map.some(isBidirectionalRAL);\n\n  const hasBidiL = normalized_map.some(isBidirectionalL);\n\n  // 4.1 If a string contains any RandALCat character, the string MUST NOT\n  // contain any LCat character.\n  if (hasBidiRAL && hasBidiL) {\n    throw new Error(\n      'String must not contain RandALCat and LCat at the same time,' +\n        ' see https://tools.ietf.org/html/rfc3454#section-6',\n    );\n  }\n\n  /**\n   * 4.2 If a string contains any RandALCat character, a RandALCat\n   * character MUST be the first character of the string, and a\n   * RandALCat character MUST be the last character of the string.\n   */\n\n  const isFirstBidiRAL = isBidirectionalRAL(\n    getCodePoint(first(normalized_input)),\n  );\n  const isLastBidiRAL = isBidirectionalRAL(\n    getCodePoint(last(normalized_input)),\n  );\n\n  if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) {\n    throw new Error(\n      'Bidirectional RandALCat character must be the first and the last' +\n        ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6',\n    );\n  }\n\n  return normalized_input;\n}\n\nexport default saslprep;\n","/*\n   PDFSecurity - represents PDF security settings\n   By Yang Liu <hi@zesik.com>\n */\n\nimport { concatBytes } from '@noble/hashes/utils';\nimport { md5Hash } from './crypto/md5';\nimport sha256Hash from './crypto/sha256';\nimport { aesCbcEncrypt, aesEcbEncrypt } from './crypto/aes';\nimport rc4 from './crypto/rc4';\nimport randomBytes from './crypto/random';\nimport saslprep from './saslprep/index';\n\nclass PDFSecurity {\n  static generateFileID(info = {}) {\n    let infoStr = `${info.CreationDate.getTime()}\\n`;\n\n    for (let key in info) {\n      // eslint-disable-next-line no-prototype-builtins\n      if (!info.hasOwnProperty(key)) {\n        continue;\n      }\n      infoStr += `${key}: ${info[key].valueOf()}\\n`;\n    }\n\n    return md5Hash(infoStr);\n  }\n\n  static generateRandomWordArray(bytes) {\n    return randomBytes(bytes);\n  }\n\n  static create(document, options = {}) {\n    if (!options.ownerPassword && !options.userPassword) {\n      return null;\n    }\n    return new PDFSecurity(document, options);\n  }\n\n  constructor(document, options = {}) {\n    if (!options.ownerPassword && !options.userPassword) {\n      throw new Error('None of owner password and user password is defined.');\n    }\n\n    this.document = document;\n    this._setupEncryption(options);\n  }\n\n  _setupEncryption(options) {\n    switch (options.pdfVersion) {\n      case '1.4':\n      case '1.5':\n        this.version = 2;\n        break;\n      case '1.6':\n      case '1.7':\n        this.version = 4;\n        break;\n      case '1.7ext3':\n        this.version = 5;\n        break;\n      default:\n        this.version = 1;\n        break;\n    }\n\n    const encDict = {\n      Filter: 'Standard',\n    };\n\n    switch (this.version) {\n      case 1:\n      case 2:\n      case 4:\n        this._setupEncryptionV1V2V4(this.version, encDict, options);\n        break;\n      case 5:\n        this._setupEncryptionV5(encDict, options);\n        break;\n    }\n\n    this.dictionary = this.document.ref(encDict);\n  }\n\n  _setupEncryptionV1V2V4(v, encDict, options) {\n    let r, permissions;\n    switch (v) {\n      case 1:\n        r = 2;\n        this.keyBits = 40;\n        permissions = getPermissionsR2(options.permissions);\n        break;\n      case 2:\n        r = 3;\n        this.keyBits = 128;\n        permissions = getPermissionsR3(options.permissions);\n        break;\n      case 4:\n        r = 4;\n        this.keyBits = 128;\n        permissions = getPermissionsR3(options.permissions);\n        break;\n    }\n\n    const paddedUserPassword = processPasswordR2R3R4(options.userPassword);\n    const paddedOwnerPassword = options.ownerPassword\n      ? processPasswordR2R3R4(options.ownerPassword)\n      : paddedUserPassword;\n\n    const ownerPasswordEntry = getOwnerPasswordR2R3R4(\n      r,\n      this.keyBits,\n      paddedUserPassword,\n      paddedOwnerPassword,\n    );\n    this.encryptionKey = getEncryptionKeyR2R3R4(\n      r,\n      this.keyBits,\n      this.document._id,\n      paddedUserPassword,\n      ownerPasswordEntry,\n      permissions,\n    );\n    let userPasswordEntry;\n    if (r === 2) {\n      userPasswordEntry = getUserPasswordR2(this.encryptionKey);\n    } else {\n      userPasswordEntry = getUserPasswordR3R4(\n        this.document._id,\n        this.encryptionKey,\n      );\n    }\n\n    encDict.V = v;\n    if (v >= 2) {\n      encDict.Length = this.keyBits;\n    }\n    if (v === 4) {\n      encDict.CF = {\n        StdCF: {\n          AuthEvent: 'DocOpen',\n          CFM: 'AESV2',\n          Length: this.keyBits / 8,\n        },\n      };\n      encDict.StmF = 'StdCF';\n      encDict.StrF = 'StdCF';\n    }\n    encDict.R = r;\n    encDict.O = ownerPasswordEntry;\n    encDict.U = userPasswordEntry;\n    encDict.P = permissions;\n  }\n\n  _setupEncryptionV5(encDict, options) {\n    this.keyBits = 256;\n    const permissions = getPermissionsR3(options.permissions);\n\n    const processedUserPassword = processPasswordR5(options.userPassword);\n    const processedOwnerPassword = options.ownerPassword\n      ? processPasswordR5(options.ownerPassword)\n      : processedUserPassword;\n\n    this.encryptionKey = getEncryptionKeyR5(\n      PDFSecurity.generateRandomWordArray,\n    );\n    const userPasswordEntry = getUserPasswordR5(\n      processedUserPassword,\n      PDFSecurity.generateRandomWordArray,\n    );\n    const userKeySalt = userPasswordEntry.slice(40, 48);\n    const userEncryptionKeyEntry = getUserEncryptionKeyR5(\n      processedUserPassword,\n      userKeySalt,\n      this.encryptionKey,\n    );\n    const ownerPasswordEntry = getOwnerPasswordR5(\n      processedOwnerPassword,\n      userPasswordEntry,\n      PDFSecurity.generateRandomWordArray,\n    );\n    const ownerKeySalt = ownerPasswordEntry.slice(40, 48);\n    const ownerEncryptionKeyEntry = getOwnerEncryptionKeyR5(\n      processedOwnerPassword,\n      ownerKeySalt,\n      userPasswordEntry,\n      this.encryptionKey,\n    );\n    const permsEntry = getEncryptedPermissionsR5(\n      permissions,\n      this.encryptionKey,\n      PDFSecurity.generateRandomWordArray,\n    );\n\n    encDict.V = 5;\n    encDict.Length = this.keyBits;\n    encDict.CF = {\n      StdCF: {\n        AuthEvent: 'DocOpen',\n        CFM: 'AESV3',\n        Length: this.keyBits / 8,\n      },\n    };\n    encDict.StmF = 'StdCF';\n    encDict.StrF = 'StdCF';\n    encDict.R = 5;\n    encDict.O = ownerPasswordEntry;\n    encDict.OE = ownerEncryptionKeyEntry;\n    encDict.U = userPasswordEntry;\n    encDict.UE = userEncryptionKeyEntry;\n    encDict.P = permissions;\n    encDict.Perms = permsEntry;\n  }\n\n  getEncryptFn(obj, gen) {\n    let digest;\n    if (this.version < 5) {\n      // Create 5-byte object/generation number suffix\n      const suffix = new Uint8Array([\n        obj & 0xff,\n        (obj >> 8) & 0xff,\n        (obj >> 16) & 0xff,\n        gen & 0xff,\n        (gen >> 8) & 0xff,\n      ]);\n      digest = concatBytes(this.encryptionKey, suffix);\n    }\n\n    if (this.version === 1 || this.version === 2) {\n      let key = md5Hash(digest);\n      const keyLen = Math.min(16, this.keyBits / 8 + 5);\n      key = key.slice(0, keyLen);\n      return (buffer) => rc4(buffer, key);\n    }\n\n    let key;\n    if (this.version === 4) {\n      // Append \"sAlT\" marker for AES\n      const saltMarker = new Uint8Array([0x73, 0x41, 0x6c, 0x54]);\n      key = md5Hash(concatBytes(digest, saltMarker));\n    } else {\n      key = this.encryptionKey;\n    }\n\n    const iv = PDFSecurity.generateRandomWordArray(16);\n\n    return (buffer) => {\n      const encrypted = aesCbcEncrypt(buffer, key, iv, true);\n      return concatBytes(iv, encrypted);\n    };\n  }\n\n  end() {\n    this.dictionary.end();\n  }\n}\n\nfunction getPermissionsR2(permissionObject = {}) {\n  let permissions = 0xffffffc0 >> 0;\n  if (permissionObject.printing) {\n    permissions |= 0b000000000100;\n  }\n  if (permissionObject.modifying) {\n    permissions |= 0b000000001000;\n  }\n  if (permissionObject.copying) {\n    permissions |= 0b000000010000;\n  }\n  if (permissionObject.annotating) {\n    permissions |= 0b000000100000;\n  }\n  return permissions;\n}\n\nfunction getPermissionsR3(permissionObject = {}) {\n  let permissions = 0xfffff0c0 >> 0;\n  if (permissionObject.printing === 'lowResolution') {\n    permissions |= 0b000000000100;\n  }\n  if (permissionObject.printing === 'highResolution') {\n    permissions |= 0b100000000100;\n  }\n  if (permissionObject.modifying) {\n    permissions |= 0b000000001000;\n  }\n  if (permissionObject.copying) {\n    permissions |= 0b000000010000;\n  }\n  if (permissionObject.annotating) {\n    permissions |= 0b000000100000;\n  }\n  if (permissionObject.fillingForms) {\n    permissions |= 0b000100000000;\n  }\n  if (permissionObject.contentAccessibility) {\n    permissions |= 0b001000000000;\n  }\n  if (permissionObject.documentAssembly) {\n    permissions |= 0b010000000000;\n  }\n  return permissions;\n}\n\nfunction getUserPasswordR2(encryptionKey) {\n  return rc4(processPasswordR2R3R4(), encryptionKey);\n}\n\nfunction getUserPasswordR3R4(documentId, encryptionKey) {\n  const key = encryptionKey.slice();\n  let cipher = md5Hash(\n    concatBytes(processPasswordR2R3R4(), new Uint8Array(documentId)),\n  );\n  for (let i = 0; i < 20; i++) {\n    const xorKey = new Uint8Array(key.length);\n    for (let j = 0; j < key.length; j++) {\n      xorKey[j] = encryptionKey[j] ^ i;\n    }\n    cipher = rc4(cipher, xorKey);\n  }\n  // Pad to 32 bytes\n  const result = new Uint8Array(32);\n  result.set(cipher);\n  return result;\n}\n\nfunction getOwnerPasswordR2R3R4(\n  r,\n  keyBits,\n  paddedUserPassword,\n  paddedOwnerPassword,\n) {\n  let digest = paddedOwnerPassword;\n  let round = r >= 3 ? 51 : 1;\n  for (let i = 0; i < round; i++) {\n    digest = md5Hash(digest);\n  }\n\n  const keyLen = keyBits / 8;\n  let key = digest.slice(0, keyLen);\n  let cipher = paddedUserPassword;\n  round = r >= 3 ? 20 : 1;\n  for (let i = 0; i < round; i++) {\n    const xorKey = new Uint8Array(keyLen);\n    for (let j = 0; j < keyLen; j++) {\n      xorKey[j] = key[j] ^ i;\n    }\n    cipher = rc4(cipher, xorKey);\n  }\n  return cipher;\n}\n\nfunction getEncryptionKeyR2R3R4(\n  r,\n  keyBits,\n  documentId,\n  paddedUserPassword,\n  ownerPasswordEntry,\n  permissions,\n) {\n  // Build input: password + owner entry + permissions (LSB first) + document ID\n  const permBytes = new Uint8Array([\n    permissions & 0xff,\n    (permissions >> 8) & 0xff,\n    (permissions >> 16) & 0xff,\n    (permissions >> 24) & 0xff,\n  ]);\n  let key = concatBytes(\n    paddedUserPassword,\n    ownerPasswordEntry,\n    permBytes,\n    new Uint8Array(documentId),\n  );\n  const round = r >= 3 ? 51 : 1;\n  const keyLen = keyBits / 8;\n  for (let i = 0; i < round; i++) {\n    key = md5Hash(key);\n    key = key.slice(0, keyLen);\n  }\n  return key;\n}\n\nfunction getUserPasswordR5(processedUserPassword, generateRandomWordArray) {\n  const validationSalt = generateRandomWordArray(8);\n  const keySalt = generateRandomWordArray(8);\n  const hash = sha256Hash(concatBytes(processedUserPassword, validationSalt));\n  return concatBytes(hash, validationSalt, keySalt);\n}\n\nfunction getUserEncryptionKeyR5(\n  processedUserPassword,\n  userKeySalt,\n  encryptionKey,\n) {\n  const key = sha256Hash(concatBytes(processedUserPassword, userKeySalt));\n  const iv = new Uint8Array(16); // Zero IV\n  return aesCbcEncrypt(encryptionKey, key, iv, false);\n}\n\nfunction getOwnerPasswordR5(\n  processedOwnerPassword,\n  userPasswordEntry,\n  generateRandomWordArray,\n) {\n  const validationSalt = generateRandomWordArray(8);\n  const keySalt = generateRandomWordArray(8);\n  const hash = sha256Hash(\n    concatBytes(processedOwnerPassword, validationSalt, userPasswordEntry),\n  );\n  return concatBytes(hash, validationSalt, keySalt);\n}\n\nfunction getOwnerEncryptionKeyR5(\n  processedOwnerPassword,\n  ownerKeySalt,\n  userPasswordEntry,\n  encryptionKey,\n) {\n  const key = sha256Hash(\n    concatBytes(processedOwnerPassword, ownerKeySalt, userPasswordEntry),\n  );\n  const iv = new Uint8Array(16); // Zero IV\n  return aesCbcEncrypt(encryptionKey, key, iv, false);\n}\n\nfunction getEncryptionKeyR5(generateRandomWordArray) {\n  return generateRandomWordArray(32);\n}\n\nfunction getEncryptedPermissionsR5(\n  permissions,\n  encryptionKey,\n  generateRandomWordArray,\n) {\n  // Build 16-byte block: permissions (4 bytes LSB) + 0xFFFFFFFF (4 bytes) + \"adbT\" (4 bytes) + random (4 bytes)\n  const data = new Uint8Array(16);\n  // Permissions (LSB first)\n  data[0] = permissions & 0xff;\n  data[1] = (permissions >> 8) & 0xff;\n  data[2] = (permissions >> 16) & 0xff;\n  data[3] = (permissions >> 24) & 0xff;\n  // 0xFFFFFFFF\n  data[4] = 0xff;\n  data[5] = 0xff;\n  data[6] = 0xff;\n  data[7] = 0xff;\n  // \"adbT\" = 0x54616462 (but stored as individual bytes)\n  data[8] = 0x54; // 'T'\n  data[9] = 0x61; // 'a'\n  data[10] = 0x64; // 'd'\n  data[11] = 0x62; // 'b'\n  // Random 4 bytes\n  const randomPart = generateRandomWordArray(4);\n  data.set(randomPart, 12);\n\n  return aesEcbEncrypt(data, encryptionKey);\n}\n\nfunction processPasswordR2R3R4(password = '') {\n  const out = new Uint8Array(32);\n  const length = password.length;\n  let index = 0;\n  while (index < length && index < 32) {\n    const code = password.charCodeAt(index);\n    if (code > 0xff) {\n      throw new Error('Password contains one or more invalid characters.');\n    }\n    out[index] = code;\n    index++;\n  }\n  while (index < 32) {\n    out[index] = PASSWORD_PADDING[index - length];\n    index++;\n  }\n  return out;\n}\n\nfunction processPasswordR5(password = '') {\n  password = unescape(encodeURIComponent(saslprep(password)));\n  const length = Math.min(127, password.length);\n  const out = new Uint8Array(length);\n\n  for (let i = 0; i < length; i++) {\n    out[i] = password.charCodeAt(i);\n  }\n\n  return out;\n}\n\nconst PASSWORD_PADDING = [\n  0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff,\n  0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c,\n  0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\n];\n\nexport default PDFSecurity;\n","import PDFObject from './object';\n\nconst { number } = PDFObject;\n\nclass PDFGradient {\n  constructor(doc) {\n    this.doc = doc;\n    this.stops = [];\n    this.embedded = false;\n    this.transform = [1, 0, 0, 1, 0, 0];\n  }\n\n  stop(pos, color, opacity) {\n    if (opacity == null) {\n      opacity = 1;\n    }\n    color = this.doc._normalizeColor(color);\n\n    if (this.stops.length === 0) {\n      if (color.length === 3) {\n        this._colorSpace = 'DeviceRGB';\n      } else if (color.length === 4) {\n        this._colorSpace = 'DeviceCMYK';\n      } else if (color.length === 1) {\n        this._colorSpace = 'DeviceGray';\n      } else {\n        throw new Error('Unknown color space');\n      }\n    } else if (\n      (this._colorSpace === 'DeviceRGB' && color.length !== 3) ||\n      (this._colorSpace === 'DeviceCMYK' && color.length !== 4) ||\n      (this._colorSpace === 'DeviceGray' && color.length !== 1)\n    ) {\n      throw new Error('All gradient stops must use the same color space');\n    }\n\n    opacity = Math.max(0, Math.min(1, opacity));\n    this.stops.push([pos, color, opacity]);\n    return this;\n  }\n\n  setTransform(m11, m12, m21, m22, dx, dy) {\n    this.transform = [m11, m12, m21, m22, dx, dy];\n    return this;\n  }\n\n  embed(m) {\n    let fn;\n    const stopsLength = this.stops.length;\n    if (stopsLength === 0) {\n      return;\n    }\n    this.embedded = true;\n    this.matrix = m;\n\n    // if the last stop comes before 100%, add a copy at 100%\n    const last = this.stops[stopsLength - 1];\n    if (last[0] < 1) {\n      this.stops.push([1, last[1], last[2]]);\n    }\n\n    const bounds = [];\n    const encode = [];\n    const stops = [];\n\n    for (let i = 0; i < stopsLength - 1; i++) {\n      encode.push(0, 1);\n      if (i + 2 !== stopsLength) {\n        bounds.push(this.stops[i + 1][0]);\n      }\n\n      fn = this.doc.ref({\n        FunctionType: 2,\n        Domain: [0, 1],\n        C0: this.stops[i + 0][1],\n        C1: this.stops[i + 1][1],\n        N: 1,\n      });\n\n      stops.push(fn);\n      fn.end();\n    }\n\n    // if there are only two stops, we don't need a stitching function\n    if (stopsLength === 1) {\n      fn = stops[0];\n    } else {\n      fn = this.doc.ref({\n        FunctionType: 3, // stitching function\n        Domain: [0, 1],\n        Functions: stops,\n        Bounds: bounds,\n        Encode: encode,\n      });\n\n      fn.end();\n    }\n\n    this.id = `Sh${++this.doc._gradCount}`;\n\n    const shader = this.shader(fn);\n    shader.end();\n\n    const pattern = this.doc.ref({\n      Type: 'Pattern',\n      PatternType: 2,\n      Shading: shader,\n      Matrix: this.matrix.map(number),\n    });\n\n    pattern.end();\n\n    if (this.stops.some((stop) => stop[2] < 1)) {\n      let grad = this.opacityGradient();\n      grad._colorSpace = 'DeviceGray';\n\n      for (let stop of this.stops) {\n        grad.stop(stop[0], [stop[2]]);\n      }\n\n      grad = grad.embed(this.matrix);\n\n      const pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];\n\n      const form = this.doc.ref({\n        Type: 'XObject',\n        Subtype: 'Form',\n        FormType: 1,\n        BBox: pageBBox,\n        Group: {\n          Type: 'Group',\n          S: 'Transparency',\n          CS: 'DeviceGray',\n        },\n        Resources: {\n          ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\n          Pattern: {\n            Sh1: grad,\n          },\n        },\n      });\n\n      form.write('/Pattern cs /Sh1 scn');\n      form.end(`${pageBBox.join(' ')} re f`);\n\n      const gstate = this.doc.ref({\n        Type: 'ExtGState',\n        SMask: {\n          Type: 'Mask',\n          S: 'Luminosity',\n          G: form,\n        },\n      });\n\n      gstate.end();\n\n      const opacityPattern = this.doc.ref({\n        Type: 'Pattern',\n        PatternType: 1,\n        PaintType: 1,\n        TilingType: 2,\n        BBox: pageBBox,\n        XStep: pageBBox[2],\n        YStep: pageBBox[3],\n        Resources: {\n          ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\n          Pattern: {\n            Sh1: pattern,\n          },\n          ExtGState: {\n            Gs1: gstate,\n          },\n        },\n      });\n\n      opacityPattern.write('/Gs1 gs /Pattern cs /Sh1 scn');\n      opacityPattern.end(`${pageBBox.join(' ')} re f`);\n\n      this.doc.page.patterns[this.id] = opacityPattern;\n    } else {\n      this.doc.page.patterns[this.id] = pattern;\n    }\n\n    return pattern;\n  }\n\n  apply(stroke) {\n    // apply gradient transform to existing document ctm\n    const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\n    const [m11, m12, m21, m22, dx, dy] = this.transform;\n    const m = [\n      m0 * m11 + m2 * m12,\n      m1 * m11 + m3 * m12,\n      m0 * m21 + m2 * m22,\n      m1 * m21 + m3 * m22,\n      m0 * dx + m2 * dy + m4,\n      m1 * dx + m3 * dy + m5,\n    ];\n\n    if (!this.embedded || m.join(' ') !== this.matrix.join(' ')) {\n      this.embed(m);\n    }\n    this.doc._setColorSpace('Pattern', stroke);\n    const op = stroke ? 'SCN' : 'scn';\n    return this.doc.addContent(`/${this.id} ${op}`);\n  }\n}\n\nclass PDFLinearGradient extends PDFGradient {\n  constructor(doc, x1, y1, x2, y2) {\n    super(doc);\n    this.x1 = x1;\n    this.y1 = y1;\n    this.x2 = x2;\n    this.y2 = y2;\n  }\n\n  shader(fn) {\n    return this.doc.ref({\n      ShadingType: 2,\n      ColorSpace: this._colorSpace,\n      Coords: [this.x1, this.y1, this.x2, this.y2],\n      Function: fn,\n      Extend: [true, true],\n    });\n  }\n\n  opacityGradient() {\n    return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);\n  }\n}\n\nclass PDFRadialGradient extends PDFGradient {\n  constructor(doc, x1, y1, r1, x2, y2, r2) {\n    super(doc);\n    this.doc = doc;\n    this.x1 = x1;\n    this.y1 = y1;\n    this.r1 = r1;\n    this.x2 = x2;\n    this.y2 = y2;\n    this.r2 = r2;\n  }\n\n  shader(fn) {\n    return this.doc.ref({\n      ShadingType: 3,\n      ColorSpace: this._colorSpace,\n      Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],\n      Function: fn,\n      Extend: [true, true],\n    });\n  }\n\n  opacityGradient() {\n    return new PDFRadialGradient(\n      this.doc,\n      this.x1,\n      this.y1,\n      this.r1,\n      this.x2,\n      this.y2,\n      this.r2,\n    );\n  }\n}\n\nexport default { PDFGradient, PDFLinearGradient, PDFRadialGradient };\n","/*\nPDF tiling pattern support. Uncolored only.\n */\n\nconst underlyingColorSpaces = ['DeviceCMYK', 'DeviceRGB'];\n\nclass PDFTilingPattern {\n  constructor(doc, bBox, xStep, yStep, stream) {\n    this.doc = doc;\n    this.bBox = bBox;\n    this.xStep = xStep;\n    this.yStep = yStep;\n    this.stream = stream;\n  }\n\n  createPattern() {\n    // no resources needed for our current usage\n    // required entry\n    const resources = this.doc.ref();\n    resources.end();\n    // apply default transform matrix (flipped in the default doc._ctm)\n    // see document.js & gradient.js\n    const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\n    const [m11, m12, m21, m22, dx, dy] = [1, 0, 0, 1, 0, 0];\n    const m = [\n      m0 * m11 + m2 * m12,\n      m1 * m11 + m3 * m12,\n      m0 * m21 + m2 * m22,\n      m1 * m21 + m3 * m22,\n      m0 * dx + m2 * dy + m4,\n      m1 * dx + m3 * dy + m5,\n    ];\n    const pattern = this.doc.ref({\n      Type: 'Pattern',\n      PatternType: 1, // tiling\n      PaintType: 2, // 1-colored, 2-uncolored\n      TilingType: 2, // 2-no distortion\n      BBox: this.bBox,\n      XStep: this.xStep,\n      YStep: this.yStep,\n      Matrix: m.map((v) => +v.toFixed(5)),\n      Resources: resources,\n    });\n    pattern.end(this.stream);\n    return pattern;\n  }\n\n  embedPatternColorSpaces() {\n    // map each pattern to an underlying color space\n    // and embed on each page\n    underlyingColorSpaces.forEach((csName) => {\n      const csId = this.getPatternColorSpaceId(csName);\n\n      if (this.doc.page.colorSpaces[csId]) return;\n      const cs = this.doc.ref(['Pattern', csName]);\n      cs.end();\n      this.doc.page.colorSpaces[csId] = cs;\n    });\n  }\n\n  getPatternColorSpaceId(underlyingColorspace) {\n    return `CsP${underlyingColorspace}`;\n  }\n\n  embed() {\n    if (!this.id) {\n      this.doc._patternCount = this.doc._patternCount + 1;\n      this.id = 'P' + this.doc._patternCount;\n      this.pattern = this.createPattern();\n    }\n\n    // patterns are embedded in each page\n    if (!this.doc.page.patterns[this.id]) {\n      this.doc.page.patterns[this.id] = this.pattern;\n    }\n  }\n\n  apply(stroke, patternColor) {\n    // do any embedding/creating that might be needed\n    this.embedPatternColorSpaces();\n    this.embed();\n\n    const normalizedColor = this.doc._normalizeColor(patternColor);\n    if (!normalizedColor)\n      throw Error(`invalid pattern color. (value: ${patternColor})`);\n\n    // select one of the pattern color spaces\n    const csId = this.getPatternColorSpaceId(\n      this.doc._getColorSpace(normalizedColor),\n    );\n    this.doc._setColorSpace(csId, stroke);\n\n    // stroke/fill using the pattern and color (in the above underlying color space)\n    const op = stroke ? 'SCN' : 'scn';\n    return this.doc.addContent(\n      `${normalizedColor.join(' ')} /${this.id} ${op}`,\n    );\n  }\n}\n\nexport default { PDFTilingPattern };\n","import Gradient from '../gradient';\nimport pattern from '../pattern';\nimport SpotColor from '../spotcolor';\n\nconst { PDFGradient, PDFLinearGradient, PDFRadialGradient } = Gradient;\nconst { PDFTilingPattern } = pattern;\n\nexport default {\n  initColor() {\n    this.spotColors = {};\n    // The opacity dictionaries\n    this._opacityRegistry = {};\n    this._opacityCount = 0;\n    this._patternCount = 0;\n    this._gradCount = 0;\n  },\n\n  _normalizeColor(color) {\n    if (typeof color === 'string') {\n      if (color.charAt(0) === '#') {\n        if (color.length === 4) {\n          color = color.replace(\n            /#([0-9A-F])([0-9A-F])([0-9A-F])/i,\n            '#$1$1$2$2$3$3',\n          );\n        }\n        const hex = parseInt(color.slice(1), 16);\n        color = [hex >> 16, (hex >> 8) & 0xff, hex & 0xff];\n      } else if (namedColors[color.toLowerCase()]) {\n        color = namedColors[color.toLowerCase()];\n      } else if (this.spotColors[color]) {\n        return this.spotColors[color];\n      }\n    }\n\n    if (Array.isArray(color)) {\n      // RGB\n      if (color.length === 3) {\n        color = color.map((part) => part / 255);\n        // CMYK\n      } else if (color.length === 4) {\n        color = color.map((part) => part / 100);\n      }\n      return color;\n    }\n\n    return null;\n  },\n\n  _setColor(color, stroke) {\n    if (color instanceof PDFGradient) {\n      color.apply(stroke);\n      return true;\n      // see if tiling pattern, decode & apply it it\n    } else if (Array.isArray(color) && color[0] instanceof PDFTilingPattern) {\n      color[0].apply(stroke, color[1]);\n      return true;\n    }\n    // any other case should be a normal color and not a pattern\n    return this._setColorCore(color, stroke);\n  },\n\n  _setColorCore(color, stroke) {\n    color = this._normalizeColor(color);\n    if (!color) {\n      return false;\n    }\n\n    const op = stroke ? 'SCN' : 'scn';\n    const space = this._getColorSpace(color);\n    this._setColorSpace(space, stroke);\n\n    if (color instanceof SpotColor) {\n      this.page.colorSpaces[color.id] = color.ref;\n      this.addContent(`1 ${op}`);\n    } else {\n      this.addContent(`${color.join(' ')} ${op}`);\n    }\n\n    return true;\n  },\n\n  _setColorSpace(space, stroke) {\n    const op = stroke ? 'CS' : 'cs';\n    return this.addContent(`/${space} ${op}`);\n  },\n\n  _getColorSpace(color) {\n    if (color instanceof SpotColor) {\n      return color.id;\n    }\n\n    return color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';\n  },\n\n  fillColor(color, opacity) {\n    const set = this._setColor(color, false);\n    if (set) {\n      this.fillOpacity(opacity);\n    }\n\n    // save this for text wrapper, which needs to reset\n    // the fill color on new pages\n    this._fillColor = [color, opacity];\n    return this;\n  },\n\n  strokeColor(color, opacity) {\n    const set = this._setColor(color, true);\n    if (set) {\n      this.strokeOpacity(opacity);\n    }\n    return this;\n  },\n\n  opacity(opacity) {\n    this._doOpacity(opacity, opacity);\n    return this;\n  },\n\n  fillOpacity(opacity) {\n    this._doOpacity(opacity, null);\n    return this;\n  },\n\n  strokeOpacity(opacity) {\n    this._doOpacity(null, opacity);\n    return this;\n  },\n\n  _doOpacity(fillOpacity, strokeOpacity) {\n    let dictionary, name;\n    if (fillOpacity == null && strokeOpacity == null) {\n      return;\n    }\n\n    if (fillOpacity != null) {\n      fillOpacity = Math.max(0, Math.min(1, fillOpacity));\n    }\n    if (strokeOpacity != null) {\n      strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));\n    }\n    const key = `${fillOpacity}_${strokeOpacity}`;\n\n    if (this._opacityRegistry[key]) {\n      [dictionary, name] = this._opacityRegistry[key];\n    } else {\n      dictionary = { Type: 'ExtGState' };\n\n      if (fillOpacity != null) {\n        dictionary.ca = fillOpacity;\n      }\n      if (strokeOpacity != null) {\n        dictionary.CA = strokeOpacity;\n      }\n\n      dictionary = this.ref(dictionary);\n      dictionary.end();\n      const id = ++this._opacityCount;\n      name = `Gs${id}`;\n      this._opacityRegistry[key] = [dictionary, name];\n    }\n\n    this.page.ext_gstates[name] = dictionary;\n    return this.addContent(`/${name} gs`);\n  },\n\n  linearGradient(x1, y1, x2, y2) {\n    return new PDFLinearGradient(this, x1, y1, x2, y2);\n  },\n\n  radialGradient(x1, y1, r1, x2, y2, r2) {\n    return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2);\n  },\n\n  pattern(bbox, xStep, yStep, stream) {\n    return new PDFTilingPattern(this, bbox, xStep, yStep, stream);\n  },\n\n  addSpotColor(name, C, M, Y, K) {\n    const color = new SpotColor(this, name, C, M, Y, K);\n    this.spotColors[name] = color;\n    return this;\n  },\n};\n\nvar namedColors = {\n  aliceblue: [240, 248, 255],\n  antiquewhite: [250, 235, 215],\n  aqua: [0, 255, 255],\n  aquamarine: [127, 255, 212],\n  azure: [240, 255, 255],\n  beige: [245, 245, 220],\n  bisque: [255, 228, 196],\n  black: [0, 0, 0],\n  blanchedalmond: [255, 235, 205],\n  blue: [0, 0, 255],\n  blueviolet: [138, 43, 226],\n  brown: [165, 42, 42],\n  burlywood: [222, 184, 135],\n  cadetblue: [95, 158, 160],\n  chartreuse: [127, 255, 0],\n  chocolate: [210, 105, 30],\n  coral: [255, 127, 80],\n  cornflowerblue: [100, 149, 237],\n  cornsilk: [255, 248, 220],\n  crimson: [220, 20, 60],\n  cyan: [0, 255, 255],\n  darkblue: [0, 0, 139],\n  darkcyan: [0, 139, 139],\n  darkgoldenrod: [184, 134, 11],\n  darkgray: [169, 169, 169],\n  darkgreen: [0, 100, 0],\n  darkgrey: [169, 169, 169],\n  darkkhaki: [189, 183, 107],\n  darkmagenta: [139, 0, 139],\n  darkolivegreen: [85, 107, 47],\n  darkorange: [255, 140, 0],\n  darkorchid: [153, 50, 204],\n  darkred: [139, 0, 0],\n  darksalmon: [233, 150, 122],\n  darkseagreen: [143, 188, 143],\n  darkslateblue: [72, 61, 139],\n  darkslategray: [47, 79, 79],\n  darkslategrey: [47, 79, 79],\n  darkturquoise: [0, 206, 209],\n  darkviolet: [148, 0, 211],\n  deeppink: [255, 20, 147],\n  deepskyblue: [0, 191, 255],\n  dimgray: [105, 105, 105],\n  dimgrey: [105, 105, 105],\n  dodgerblue: [30, 144, 255],\n  firebrick: [178, 34, 34],\n  floralwhite: [255, 250, 240],\n  forestgreen: [34, 139, 34],\n  fuchsia: [255, 0, 255],\n  gainsboro: [220, 220, 220],\n  ghostwhite: [248, 248, 255],\n  gold: [255, 215, 0],\n  goldenrod: [218, 165, 32],\n  gray: [128, 128, 128],\n  grey: [128, 128, 128],\n  green: [0, 128, 0],\n  greenyellow: [173, 255, 47],\n  honeydew: [240, 255, 240],\n  hotpink: [255, 105, 180],\n  indianred: [205, 92, 92],\n  indigo: [75, 0, 130],\n  ivory: [255, 255, 240],\n  khaki: [240, 230, 140],\n  lavender: [230, 230, 250],\n  lavenderblush: [255, 240, 245],\n  lawngreen: [124, 252, 0],\n  lemonchiffon: [255, 250, 205],\n  lightblue: [173, 216, 230],\n  lightcoral: [240, 128, 128],\n  lightcyan: [224, 255, 255],\n  lightgoldenrodyellow: [250, 250, 210],\n  lightgray: [211, 211, 211],\n  lightgreen: [144, 238, 144],\n  lightgrey: [211, 211, 211],\n  lightpink: [255, 182, 193],\n  lightsalmon: [255, 160, 122],\n  lightseagreen: [32, 178, 170],\n  lightskyblue: [135, 206, 250],\n  lightslategray: [119, 136, 153],\n  lightslategrey: [119, 136, 153],\n  lightsteelblue: [176, 196, 222],\n  lightyellow: [255, 255, 224],\n  lime: [0, 255, 0],\n  limegreen: [50, 205, 50],\n  linen: [250, 240, 230],\n  magenta: [255, 0, 255],\n  maroon: [128, 0, 0],\n  mediumaquamarine: [102, 205, 170],\n  mediumblue: [0, 0, 205],\n  mediumorchid: [186, 85, 211],\n  mediumpurple: [147, 112, 219],\n  mediumseagreen: [60, 179, 113],\n  mediumslateblue: [123, 104, 238],\n  mediumspringgreen: [0, 250, 154],\n  mediumturquoise: [72, 209, 204],\n  mediumvioletred: [199, 21, 133],\n  midnightblue: [25, 25, 112],\n  mintcream: [245, 255, 250],\n  mistyrose: [255, 228, 225],\n  moccasin: [255, 228, 181],\n  navajowhite: [255, 222, 173],\n  navy: [0, 0, 128],\n  oldlace: [253, 245, 230],\n  olive: [128, 128, 0],\n  olivedrab: [107, 142, 35],\n  orange: [255, 165, 0],\n  orangered: [255, 69, 0],\n  orchid: [218, 112, 214],\n  palegoldenrod: [238, 232, 170],\n  palegreen: [152, 251, 152],\n  paleturquoise: [175, 238, 238],\n  palevioletred: [219, 112, 147],\n  papayawhip: [255, 239, 213],\n  peachpuff: [255, 218, 185],\n  peru: [205, 133, 63],\n  pink: [255, 192, 203],\n  plum: [221, 160, 221],\n  powderblue: [176, 224, 230],\n  purple: [128, 0, 128],\n  red: [255, 0, 0],\n  rosybrown: [188, 143, 143],\n  royalblue: [65, 105, 225],\n  saddlebrown: [139, 69, 19],\n  salmon: [250, 128, 114],\n  sandybrown: [244, 164, 96],\n  seagreen: [46, 139, 87],\n  seashell: [255, 245, 238],\n  sienna: [160, 82, 45],\n  silver: [192, 192, 192],\n  skyblue: [135, 206, 235],\n  slateblue: [106, 90, 205],\n  slategray: [112, 128, 144],\n  slategrey: [112, 128, 144],\n  snow: [255, 250, 250],\n  springgreen: [0, 255, 127],\n  steelblue: [70, 130, 180],\n  tan: [210, 180, 140],\n  teal: [0, 128, 128],\n  thistle: [216, 191, 216],\n  tomato: [255, 99, 71],\n  turquoise: [64, 224, 208],\n  violet: [238, 130, 238],\n  wheat: [245, 222, 179],\n  white: [255, 255, 255],\n  whitesmoke: [245, 245, 245],\n  yellow: [255, 255, 0],\n  yellowgreen: [154, 205, 50],\n};\n","let cx, cy, px, py, sx, sy;\n\ncx = cy = px = py = sx = sy = 0;\n\nconst parameters = {\n  A: 7,\n  a: 7,\n  C: 6,\n  c: 6,\n  H: 1,\n  h: 1,\n  L: 2,\n  l: 2,\n  M: 2,\n  m: 2,\n  Q: 4,\n  q: 4,\n  S: 4,\n  s: 4,\n  T: 2,\n  t: 2,\n  V: 1,\n  v: 1,\n  Z: 0,\n  z: 0,\n};\n\nconst isCommand = function (c) {\n  return c in parameters;\n};\n\nconst isWsp = function (c) {\n  const codePoint = c.codePointAt(0);\n  return (\n    codePoint === 0x20 ||\n    codePoint === 0x9 ||\n    codePoint === 0xd ||\n    codePoint === 0xa\n  );\n};\n\nconst isDigit = function (c) {\n  const codePoint = c.codePointAt(0);\n  if (codePoint == null) {\n    return false;\n  }\n  return 48 <= codePoint && codePoint <= 57;\n};\n\nconst readNumber = function (string, cursor) {\n  let i = cursor;\n  let value = '';\n  let state = 'none';\n  for (; i < string.length; i += 1) {\n    const c = string[i];\n    if (c === '+' || c === '-') {\n      if (state === 'none') {\n        state = 'sign';\n        value += c;\n        continue;\n      }\n      if (state === 'e') {\n        state = 'exponent_sign';\n        value += c;\n        continue;\n      }\n    }\n    if (isDigit(c)) {\n      if (state === 'none' || state === 'sign' || state === 'whole') {\n        state = 'whole';\n        value += c;\n        continue;\n      }\n      if (state === 'decimal_point' || state === 'decimal') {\n        state = 'decimal';\n        value += c;\n        continue;\n      }\n      if (state === 'e' || state === 'exponent_sign' || state === 'exponent') {\n        state = 'exponent';\n        value += c;\n        continue;\n      }\n    }\n    if (c === '.') {\n      if (state === 'none' || state === 'sign' || state === 'whole') {\n        state = 'decimal_point';\n        value += c;\n        continue;\n      }\n    }\n    if (c === 'E' || c === 'e') {\n      if (\n        state === 'whole' ||\n        state === 'decimal_point' ||\n        state === 'decimal'\n      ) {\n        state = 'e';\n        value += c;\n        continue;\n      }\n    }\n    break;\n  }\n  const number = Number.parseFloat(value);\n  if (Number.isNaN(number)) {\n    return [cursor, null];\n  }\n  // step back to delegate iteration to parent loop\n  return [i - 1, number];\n};\n\n// parse is based on the path parser from SVGO\n// https://github.com/svg/svgo/blob/main/lib/path.js\n// License: MIT\n\nconst parse = function (path) {\n  const pathData = [];\n  let command = null;\n  let args = [];\n  let argsCount = 0;\n  let canHaveComma = false;\n  let hadComma = false;\n  for (let i = 0; i < path.length; i += 1) {\n    const c = path.charAt(i);\n    if (isWsp(c)) {\n      continue;\n    }\n    // allow comma only between arguments\n    if (canHaveComma && c === ',') {\n      if (hadComma) {\n        break;\n      }\n      hadComma = true;\n      continue;\n    }\n    if (isCommand(c)) {\n      if (hadComma) {\n        return pathData;\n      }\n      if (command == null) {\n        // moveto should be leading command\n        if (c !== 'M' && c !== 'm') {\n          return pathData;\n        }\n      } else {\n        // stop if previous command arguments are not flushed\n        if (args.length !== 0) {\n          return pathData;\n        }\n      }\n      command = c;\n      args = [];\n      argsCount = parameters[command];\n      canHaveComma = false;\n      // flush command without arguments\n      if (argsCount === 0) {\n        pathData.push({ command, args });\n      }\n      continue;\n    }\n    // avoid parsing arguments if no command detected\n    if (command == null) {\n      return pathData;\n    }\n    // read next argument\n    let newCursor = i;\n    let number = null;\n    if (command === 'A' || command === 'a') {\n      const position = args.length;\n      if (position === 0 || position === 1) {\n        // allow only positive number without sign as first two arguments\n        if (c !== '+' && c !== '-') {\n          [newCursor, number] = readNumber(path, i);\n        }\n      }\n      if (position === 2 || position === 5 || position === 6) {\n        [newCursor, number] = readNumber(path, i);\n      }\n      if (position === 3 || position === 4) {\n        // read flags\n        if (c === '0') {\n          number = 0;\n        }\n        if (c === '1') {\n          number = 1;\n        }\n      }\n    } else {\n      [newCursor, number] = readNumber(path, i);\n    }\n    if (number == null) {\n      return pathData;\n    }\n    args.push(number);\n    canHaveComma = true;\n    hadComma = false;\n    i = newCursor;\n    // flush arguments when necessary count is reached\n    if (args.length === argsCount) {\n      pathData.push({ command, args });\n      // subsequent moveto coordinates are treated as implicit lineto commands\n      if (command === 'M') {\n        command = 'L';\n      }\n      if (command === 'm') {\n        command = 'l';\n      }\n      args = [];\n    }\n  }\n  return pathData;\n};\n\nconst apply = function (commands, doc) {\n  // current point, control point, and subpath starting point\n  cx = cy = px = py = sx = sy = 0;\n\n  // run the commands\n  for (let i = 0; i < commands.length; i++) {\n    const c = commands[i];\n    if (typeof runners[c.command] === 'function') {\n      runners[c.command](doc, c.args);\n    }\n  }\n};\n\nconst runners = {\n  M(doc, a) {\n    cx = a[0];\n    cy = a[1];\n    px = py = null;\n    sx = cx;\n    sy = cy;\n    return doc.moveTo(cx, cy);\n  },\n\n  m(doc, a) {\n    cx += a[0];\n    cy += a[1];\n    px = py = null;\n    sx = cx;\n    sy = cy;\n    return doc.moveTo(cx, cy);\n  },\n\n  C(doc, a) {\n    cx = a[4];\n    cy = a[5];\n    px = a[2];\n    py = a[3];\n    return doc.bezierCurveTo(...a);\n  },\n\n  c(doc, a) {\n    doc.bezierCurveTo(\n      a[0] + cx,\n      a[1] + cy,\n      a[2] + cx,\n      a[3] + cy,\n      a[4] + cx,\n      a[5] + cy,\n    );\n    px = cx + a[2];\n    py = cy + a[3];\n    cx += a[4];\n    return (cy += a[5]);\n  },\n\n  S(doc, a) {\n    if (px === null) {\n      px = cx;\n      py = cy;\n    }\n\n    doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);\n    px = a[0];\n    py = a[1];\n    cx = a[2];\n    return (cy = a[3]);\n  },\n\n  s(doc, a) {\n    if (px === null) {\n      px = cx;\n      py = cy;\n    }\n\n    doc.bezierCurveTo(\n      cx - (px - cx),\n      cy - (py - cy),\n      cx + a[0],\n      cy + a[1],\n      cx + a[2],\n      cy + a[3],\n    );\n    px = cx + a[0];\n    py = cy + a[1];\n    cx += a[2];\n    return (cy += a[3]);\n  },\n\n  Q(doc, a) {\n    px = a[0];\n    py = a[1];\n    cx = a[2];\n    cy = a[3];\n    return doc.quadraticCurveTo(a[0], a[1], cx, cy);\n  },\n\n  q(doc, a) {\n    doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);\n    px = cx + a[0];\n    py = cy + a[1];\n    cx += a[2];\n    return (cy += a[3]);\n  },\n\n  T(doc, a) {\n    if (px === null) {\n      px = cx;\n      py = cy;\n    } else {\n      px = cx - (px - cx);\n      py = cy - (py - cy);\n    }\n\n    doc.quadraticCurveTo(px, py, a[0], a[1]);\n    px = cx - (px - cx);\n    py = cy - (py - cy);\n    cx = a[0];\n    return (cy = a[1]);\n  },\n\n  t(doc, a) {\n    if (px === null) {\n      px = cx;\n      py = cy;\n    } else {\n      px = cx - (px - cx);\n      py = cy - (py - cy);\n    }\n\n    doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);\n    cx += a[0];\n    return (cy += a[1]);\n  },\n\n  A(doc, a) {\n    solveArc(doc, cx, cy, a);\n    cx = a[5];\n    return (cy = a[6]);\n  },\n\n  a(doc, a) {\n    a[5] += cx;\n    a[6] += cy;\n    solveArc(doc, cx, cy, a);\n    cx = a[5];\n    return (cy = a[6]);\n  },\n\n  L(doc, a) {\n    cx = a[0];\n    cy = a[1];\n    px = py = null;\n    return doc.lineTo(cx, cy);\n  },\n\n  l(doc, a) {\n    cx += a[0];\n    cy += a[1];\n    px = py = null;\n    return doc.lineTo(cx, cy);\n  },\n\n  H(doc, a) {\n    cx = a[0];\n    px = py = null;\n    return doc.lineTo(cx, cy);\n  },\n\n  h(doc, a) {\n    cx += a[0];\n    px = py = null;\n    return doc.lineTo(cx, cy);\n  },\n\n  V(doc, a) {\n    cy = a[0];\n    px = py = null;\n    return doc.lineTo(cx, cy);\n  },\n\n  v(doc, a) {\n    cy += a[0];\n    px = py = null;\n    return doc.lineTo(cx, cy);\n  },\n\n  Z(doc) {\n    doc.closePath();\n    cx = sx;\n    return (cy = sy);\n  },\n\n  z(doc) {\n    doc.closePath();\n    cx = sx;\n    return (cy = sy);\n  },\n};\n\nconst solveArc = function (doc, x, y, coords) {\n  const [rx, ry, rot, large, sweep, ex, ey] = coords;\n  const segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);\n\n  for (let seg of segs) {\n    const bez = segmentToBezier(...seg);\n    doc.bezierCurveTo(...bez);\n  }\n};\n\n// from Inkscape svgtopdf, thanks!\nconst arcToSegments = function (x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n  const th = rotateX * (Math.PI / 180);\n  const sin_th = Math.sin(th);\n  const cos_th = Math.cos(th);\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n  px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n  py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n  let pl = (px * px) / (rx * rx) + (py * py) / (ry * ry);\n  if (pl > 1) {\n    pl = Math.sqrt(pl);\n    rx *= pl;\n    ry *= pl;\n  }\n\n  const a00 = cos_th / rx;\n  const a01 = sin_th / rx;\n  const a10 = -sin_th / ry;\n  const a11 = cos_th / ry;\n  const x0 = a00 * ox + a01 * oy;\n  const y0 = a10 * ox + a11 * oy;\n  const x1 = a00 * x + a01 * y;\n  const y1 = a10 * x + a11 * y;\n\n  const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n  let sfactor_sq = 1 / d - 0.25;\n  if (sfactor_sq < 0) {\n    sfactor_sq = 0;\n  }\n  let sfactor = Math.sqrt(sfactor_sq);\n  if (sweep === large) {\n    sfactor = -sfactor;\n  }\n\n  const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n  const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n\n  const th0 = Math.atan2(y0 - yc, x0 - xc);\n  const th1 = Math.atan2(y1 - yc, x1 - xc);\n\n  let th_arc = th1 - th0;\n  if (th_arc < 0 && sweep === 1) {\n    th_arc += 2 * Math.PI;\n  } else if (th_arc > 0 && sweep === 0) {\n    th_arc -= 2 * Math.PI;\n  }\n\n  const segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\n  const result = [];\n\n  for (let i = 0; i < segments; i++) {\n    const th2 = th0 + (i * th_arc) / segments;\n    const th3 = th0 + ((i + 1) * th_arc) / segments;\n    result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n  }\n\n  return result;\n};\n\nconst segmentToBezier = function (cx, cy, th0, th1, rx, ry, sin_th, cos_th) {\n  const a00 = cos_th * rx;\n  const a01 = -sin_th * ry;\n  const a10 = sin_th * rx;\n  const a11 = cos_th * ry;\n\n  const th_half = 0.5 * (th1 - th0);\n  const t =\n    ((8 / 3) * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5)) /\n    Math.sin(th_half);\n  const x1 = cx + Math.cos(th0) - t * Math.sin(th0);\n  const y1 = cy + Math.sin(th0) + t * Math.cos(th0);\n  const x3 = cx + Math.cos(th1);\n  const y3 = cy + Math.sin(th1);\n  const x2 = x3 + t * Math.sin(th1);\n  const y2 = y3 - t * Math.cos(th1);\n\n  return [\n    a00 * x1 + a01 * y1,\n    a10 * x1 + a11 * y1,\n    a00 * x2 + a01 * y2,\n    a10 * x2 + a11 * y2,\n    a00 * x3 + a01 * y3,\n    a10 * x3 + a11 * y3,\n  ];\n};\n\nclass SVGPath {\n  static apply(doc, path) {\n    const commands = parse(path);\n    apply(commands, doc);\n  }\n}\n\nexport default SVGPath;\n","import SVGPath from '../path';\nimport PDFObject from '../object';\n\nconst { number } = PDFObject;\n\n// This constant is used to approximate a symmetrical arc using a cubic\n// Bezier curve.\nconst KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\nexport default {\n  initVector() {\n    this._ctm = [1, 0, 0, 1, 0, 0]; // current transformation matrix\n    this._ctmStack = [];\n  },\n\n  save() {\n    this._ctmStack.push(this._ctm.slice());\n    // TODO: save/restore colorspace and styles so not setting it unnessesarily all the time?\n    return this.addContent('q');\n  },\n\n  restore() {\n    this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];\n    return this.addContent('Q');\n  },\n\n  closePath() {\n    return this.addContent('h');\n  },\n\n  lineWidth(w) {\n    return this.addContent(`${number(w)} w`);\n  },\n\n  _CAP_STYLES: {\n    BUTT: 0,\n    ROUND: 1,\n    SQUARE: 2,\n  },\n\n  lineCap(c) {\n    if (typeof c === 'string') {\n      c = this._CAP_STYLES[c.toUpperCase()];\n    }\n    return this.addContent(`${c} J`);\n  },\n\n  _JOIN_STYLES: {\n    MITER: 0,\n    ROUND: 1,\n    BEVEL: 2,\n  },\n\n  lineJoin(j) {\n    if (typeof j === 'string') {\n      j = this._JOIN_STYLES[j.toUpperCase()];\n    }\n    return this.addContent(`${j} j`);\n  },\n\n  miterLimit(m) {\n    return this.addContent(`${number(m)} M`);\n  },\n\n  dash(length, options = {}) {\n    const originalLength = length;\n    if (!Array.isArray(length)) {\n      length = [length, options.space || length];\n    }\n\n    const valid = length.every((x) => Number.isFinite(x) && x > 0);\n    if (!valid) {\n      throw new Error(\n        `dash(${JSON.stringify(originalLength)}, ${JSON.stringify(\n          options,\n        )}) invalid, lengths must be numeric and greater than zero`,\n      );\n    }\n\n    length = length.map(number).join(' ');\n    return this.addContent(`[${length}] ${number(options.phase || 0)} d`);\n  },\n\n  undash() {\n    return this.addContent('[] 0 d');\n  },\n\n  moveTo(x, y) {\n    return this.addContent(`${number(x)} ${number(y)} m`);\n  },\n\n  lineTo(x, y) {\n    return this.addContent(`${number(x)} ${number(y)} l`);\n  },\n\n  bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n    return this.addContent(\n      `${number(cp1x)} ${number(cp1y)} ${number(cp2x)} ${number(cp2y)} ${number(\n        x,\n      )} ${number(y)} c`,\n    );\n  },\n\n  quadraticCurveTo(cpx, cpy, x, y) {\n    return this.addContent(\n      `${number(cpx)} ${number(cpy)} ${number(x)} ${number(y)} v`,\n    );\n  },\n\n  rect(x, y, w, h) {\n    return this.addContent(\n      `${number(x)} ${number(y)} ${number(w)} ${number(h)} re`,\n    );\n  },\n\n  /**\n   * @param {number|number[]} borderRadius - Radius (number) or per-corner radii (array).\n   * If an array, order matches CSS `border-radius` with four values:\n   * top-left, top-right, bottom-right, bottom-left.\n   */\n  roundedRect(x, y, w, h, borderRadius) {\n    if (borderRadius == null) {\n      borderRadius = 0;\n    }\n\n    let radii;\n    if (Array.isArray(borderRadius)) {\n      radii = borderRadius.slice(0, 4);\n    } else {\n      radii = [borderRadius, borderRadius, borderRadius, borderRadius];\n    }\n\n    const limit = Math.min(0.5 * w, 0.5 * h);\n    const rTL = Math.max(0, Math.min(radii[0] || 0, limit));\n    const rTR = Math.max(0, Math.min(radii[1] || 0, limit));\n    const rBR = Math.max(0, Math.min(radii[2] || 0, limit));\n    const rBL = Math.max(0, Math.min(radii[3] || 0, limit));\n\n    const cpTR = rTR * (1.0 - KAPPA);\n    const cpBR = rBR * (1.0 - KAPPA);\n    const cpBL = rBL * (1.0 - KAPPA);\n    const cpTL = rTL * (1.0 - KAPPA);\n\n    // Start at the top edge, inset by top-left radius.\n    this.moveTo(x + rTL, y);\n\n    // Top edge to top-right.\n    this.lineTo(x + w - rTR, y);\n    if (rTR > 0) {\n      this.bezierCurveTo(x + w - cpTR, y, x + w, y + cpTR, x + w, y + rTR);\n    }\n\n    // Right edge to bottom-right.\n    this.lineTo(x + w, y + h - rBR);\n    if (rBR > 0) {\n      this.bezierCurveTo(\n        x + w,\n        y + h - cpBR,\n        x + w - cpBR,\n        y + h,\n        x + w - rBR,\n        y + h,\n      );\n    }\n\n    // Bottom edge to bottom-left.\n    this.lineTo(x + rBL, y + h);\n    if (rBL > 0) {\n      this.bezierCurveTo(x + cpBL, y + h, x, y + h - cpBL, x, y + h - rBL);\n    }\n\n    // Left edge to top-left.\n    this.lineTo(x, y + rTL);\n    if (rTL > 0) {\n      this.bezierCurveTo(x, y + cpTL, x + cpTL, y, x + rTL, y);\n    }\n\n    return this.closePath();\n  },\n\n  ellipse(x, y, r1, r2) {\n    // based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084\n    if (r2 == null) {\n      r2 = r1;\n    }\n    x -= r1;\n    y -= r2;\n    const ox = r1 * KAPPA;\n    const oy = r2 * KAPPA;\n    const xe = x + r1 * 2;\n    const ye = y + r2 * 2;\n    const xm = x + r1;\n    const ym = y + r2;\n\n    this.moveTo(x, ym);\n    this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\n    this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\n    this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\n    this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\n    return this.closePath();\n  },\n\n  circle(x, y, radius) {\n    return this.ellipse(x, y, radius);\n  },\n\n  arc(x, y, radius, startAngle, endAngle, anticlockwise) {\n    if (anticlockwise == null) {\n      anticlockwise = false;\n    }\n    const TWO_PI = 2.0 * Math.PI;\n    const HALF_PI = 0.5 * Math.PI;\n\n    let deltaAng = endAngle - startAngle;\n\n    if (Math.abs(deltaAng) > TWO_PI) {\n      // draw only full circle if more than that is specified\n      deltaAng = TWO_PI;\n    } else if (deltaAng !== 0 && anticlockwise !== deltaAng < 0) {\n      // necessary to flip direction of rendering\n      const dir = anticlockwise ? -1 : 1;\n      deltaAng = dir * TWO_PI + deltaAng;\n    }\n\n    const numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);\n    const segAng = deltaAng / numSegs;\n    const handleLen = (segAng / HALF_PI) * KAPPA * radius;\n    let curAng = startAngle;\n\n    // component distances between anchor point and control point\n    let deltaCx = -Math.sin(curAng) * handleLen;\n    let deltaCy = Math.cos(curAng) * handleLen;\n\n    // anchor point\n    let ax = x + Math.cos(curAng) * radius;\n    let ay = y + Math.sin(curAng) * radius;\n\n    // calculate and render segments\n    this.moveTo(ax, ay);\n\n    for (let segIdx = 0; segIdx < numSegs; segIdx++) {\n      // starting control point\n      const cp1x = ax + deltaCx;\n      const cp1y = ay + deltaCy;\n\n      // step angle\n      curAng += segAng;\n\n      // next anchor point\n      ax = x + Math.cos(curAng) * radius;\n      ay = y + Math.sin(curAng) * radius;\n\n      // next control point delta\n      deltaCx = -Math.sin(curAng) * handleLen;\n      deltaCy = Math.cos(curAng) * handleLen;\n\n      // ending control point\n      const cp2x = ax - deltaCx;\n      const cp2y = ay - deltaCy;\n\n      // render segment\n      this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);\n    }\n\n    return this;\n  },\n\n  polygon(...points) {\n    this.moveTo(...(points.shift() || []));\n    for (let point of points) {\n      this.lineTo(...(point || []));\n    }\n    return this.closePath();\n  },\n\n  path(path) {\n    SVGPath.apply(this, path);\n    return this;\n  },\n\n  _windingRule(rule) {\n    if (/even-?odd/.test(rule)) {\n      return '*';\n    }\n\n    return '';\n  },\n\n  fill(color, rule) {\n    if (/(even-?odd)|(non-?zero)/.test(color)) {\n      rule = color;\n      color = null;\n    }\n\n    if (color) {\n      this.fillColor(color);\n    }\n    return this.addContent(`f${this._windingRule(rule)}`);\n  },\n\n  stroke(color) {\n    if (color) {\n      this.strokeColor(color);\n    }\n    return this.addContent('S');\n  },\n\n  fillAndStroke(fillColor, strokeColor, rule) {\n    if (strokeColor == null) {\n      strokeColor = fillColor;\n    }\n    const isFillRule = /(even-?odd)|(non-?zero)/;\n    if (isFillRule.test(fillColor)) {\n      rule = fillColor;\n      fillColor = null;\n    }\n\n    if (isFillRule.test(strokeColor)) {\n      rule = strokeColor;\n      strokeColor = fillColor;\n    }\n\n    if (fillColor) {\n      this.fillColor(fillColor);\n      this.strokeColor(strokeColor);\n    }\n\n    return this.addContent(`B${this._windingRule(rule)}`);\n  },\n\n  clip(rule) {\n    return this.addContent(`W${this._windingRule(rule)} n`);\n  },\n\n  transform(m11, m12, m21, m22, dx, dy) {\n    // keep track of the current transformation matrix\n    if (\n      m11 === 1 &&\n      m12 === 0 &&\n      m21 === 0 &&\n      m22 === 1 &&\n      dx === 0 &&\n      dy === 0\n    ) {\n      // Ignore identity transforms\n      return this;\n    }\n    const m = this._ctm;\n    const [m0, m1, m2, m3, m4, m5] = m;\n    m[0] = m0 * m11 + m2 * m12;\n    m[1] = m1 * m11 + m3 * m12;\n    m[2] = m0 * m21 + m2 * m22;\n    m[3] = m1 * m21 + m3 * m22;\n    m[4] = m0 * dx + m2 * dy + m4;\n    m[5] = m1 * dx + m3 * dy + m5;\n\n    const values = [m11, m12, m21, m22, dx, dy].map((v) => number(v)).join(' ');\n    return this.addContent(`${values} cm`);\n  },\n\n  translate(x, y) {\n    return this.transform(1, 0, 0, 1, x, y);\n  },\n\n  rotate(angle, options = {}) {\n    let y;\n    const rad = (angle * Math.PI) / 180;\n    const cos = Math.cos(rad);\n    const sin = Math.sin(rad);\n    let x = (y = 0);\n\n    if (options.origin != null) {\n      [x, y] = options.origin;\n      const x1 = x * cos - y * sin;\n      const y1 = x * sin + y * cos;\n      x -= x1;\n      y -= y1;\n    }\n\n    return this.transform(cos, sin, -sin, cos, x, y);\n  },\n\n  scale(xFactor, yFactor, options = {}) {\n    let y;\n    if (yFactor == null) {\n      yFactor = xFactor;\n    }\n    if (typeof yFactor === 'object') {\n      options = yFactor;\n      yFactor = xFactor;\n    }\n\n    let x = (y = 0);\n    if (options.origin != null) {\n      [x, y] = options.origin;\n      x -= xFactor * x;\n      y -= yFactor * y;\n    }\n\n    return this.transform(xFactor, 0, 0, yFactor, x, y);\n  },\n};\n","const unsupported = (path) => {\n  throw new Error(\n    `Cannot read '${path}': file paths are not supported outside of Node. ` +\n      'Pass a Uint8Array, ArrayBuffer or a data URL instead.',\n  );\n};\n\nconst registeredFiles = new Map();\n\nconst getTimestamp = (value, name, defaultValue) => {\n  if (value === undefined) {\n    return defaultValue;\n  }\n  if (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n    throw new TypeError(`Expected options.${name} to be a valid Date`);\n  }\n\n  return value.getTime();\n};\n\n/**\n * @param {string} path\n * @param {Uint8Array|undefined} data\n * @param {{birthtime?: Date, ctime?: Date}} [options]\n */\nexport function registerFile(path, data, options = {}) {\n  if (typeof path !== 'string') {\n    throw new TypeError(`Expected a string for path, got ${typeof path}`);\n  }\n\n  if (data === undefined) {\n    registeredFiles.delete(path);\n    return;\n  }\n\n  if (!(data instanceof Uint8Array)) {\n    throw new TypeError(\n      `Expected a Uint8Array or undefined for data, got ${typeof data}`,\n    );\n  }\n\n  if (options === null || typeof options !== 'object') {\n    throw new TypeError(`Expected options to be an object`);\n  }\n\n  const registeredAt = Date.now();\n  registeredFiles.set(path, {\n    data,\n    birthtime: getTimestamp(options.birthtime, 'birthtime', registeredAt),\n    ctime: getTimestamp(options.ctime, 'ctime', registeredAt),\n  });\n}\n\nexport default {\n  readFileSync(path) {\n    if (registeredFiles.has(path)) {\n      return registeredFiles.get(path).data;\n    }\n\n    return unsupported(path);\n  },\n  statSync(path) {\n    if (registeredFiles.has(path)) {\n      const { birthtime, ctime } = registeredFiles.get(path);\n      return {\n        birthtime: new Date(birthtime),\n        ctime: new Date(ctime),\n      };\n    }\n\n    return unsupported(path);\n  },\n};\n","const WIN_ANSI_MAP = {\n  402: 131,\n  8211: 150,\n  8212: 151,\n  8216: 145,\n  8217: 146,\n  8218: 130,\n  8220: 147,\n  8221: 148,\n  8222: 132,\n  8224: 134,\n  8225: 135,\n  8226: 149,\n  8230: 133,\n  8364: 128,\n  8240: 137,\n  8249: 139,\n  8250: 155,\n  710: 136,\n  8482: 153,\n  338: 140,\n  339: 156,\n  732: 152,\n  352: 138,\n  353: 154,\n  376: 159,\n  381: 142,\n  382: 158,\n};\n\nconst characters = `\\\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n.notdef       .notdef        .notdef        .notdef\n  \nspace         exclam         quotedbl       numbersign\ndollar        percent        ampersand      quotesingle\nparenleft     parenright     asterisk       plus\ncomma         hyphen         period         slash\nzero          one            two            three\nfour          five           six            seven\neight         nine           colon          semicolon\nless          equal          greater        question\n  \nat            A              B              C\nD             E              F              G\nH             I              J              K\nL             M              N              O\nP             Q              R              S\nT             U              V              W\nX             Y              Z              bracketleft\nbackslash     bracketright   asciicircum    underscore\n  \ngrave         a              b              c\nd             e              f              g\nh             i              j              k\nl             m              n              o\np             q              r              s\nt             u              v              w\nx             y              z              braceleft\nbar           braceright     asciitilde     .notdef\n  \nEuro          .notdef        quotesinglbase florin\nquotedblbase  ellipsis       dagger         daggerdbl\ncircumflex    perthousand    Scaron         guilsinglleft\nOE            .notdef        Zcaron         .notdef\n.notdef       quoteleft      quoteright     quotedblleft\nquotedblright bullet         endash         emdash\ntilde         trademark      scaron         guilsinglright\noe            .notdef        zcaron         ydieresis\n  \nspace         exclamdown     cent           sterling\ncurrency      yen            brokenbar      section\ndieresis      copyright      ordfeminine    guillemotleft\nlogicalnot    hyphen         registered     macron\ndegree        plusminus      twosuperior    threesuperior\nacute         mu             paragraph      periodcentered\ncedilla       onesuperior    ordmasculine   guillemotright\nonequarter    onehalf        threequarters  questiondown\n  \nAgrave        Aacute         Acircumflex    Atilde\nAdieresis     Aring          AE             Ccedilla\nEgrave        Eacute         Ecircumflex    Edieresis\nIgrave        Iacute         Icircumflex    Idieresis\nEth           Ntilde         Ograve         Oacute\nOcircumflex   Otilde         Odieresis      multiply\nOslash        Ugrave         Uacute         Ucircumflex\nUdieresis     Yacute         Thorn          germandbls\n  \nagrave        aacute         acircumflex    atilde\nadieresis     aring          ae             ccedilla\negrave        eacute         ecircumflex    edieresis\nigrave        iacute         icircumflex    idieresis\neth           ntilde         ograve         oacute\nocircumflex   otilde         odieresis      divide\noslash        ugrave         uacute         ucircumflex\nudieresis     yacute         thorn          ydieresis\\\n`.split(/\\s+/);\n\nclass AFMFont {\n  /**\n   * @param {object} data\n   */\n  constructor(data) {\n    this.name = data.name;\n    this.bbox = data.bbox.slice();\n    this.ascender = data.ascender;\n    this.descender = data.descender;\n    this.xHeight = data.xHeight;\n    this.capHeight = data.capHeight;\n    this.lineGap =\n      this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);\n\n    const glyphNames = data.glyphNames.split(' ');\n    this.glyphWidths = Object.fromEntries(\n      glyphNames.map((name, index) => [name, data.glyphWidths[index]]),\n    );\n    this.kernPairs = {};\n\n    for (let index = 0; index < data.kernPairs.length; index += 2) {\n      const amount = data.kernPairs[index];\n      let pairId = 0;\n\n      for (const delta of data.kernPairs[index + 1]) {\n        pairId += delta;\n        const left = Math.floor(pairId / glyphNames.length);\n        const right = pairId % glyphNames.length;\n        this.kernPairs[`${glyphNames[left]}\\0${glyphNames[right]}`] = amount;\n      }\n    }\n  }\n\n  /**\n   * @param {string} text\n   * @returns\n   */\n  encodeText(text) {\n    const res = [];\n    for (let i = 0, len = text.length; i < len; i++) {\n      let char = text.charCodeAt(i);\n      char = WIN_ANSI_MAP[char] || char;\n      res.push(char.toString(16));\n    }\n\n    return res;\n  }\n\n  glyphsForString(string) {\n    const glyphs = [];\n\n    for (let i = 0, len = string.length; i < len; i++) {\n      const charCode = string.charCodeAt(i);\n      glyphs.push(this.characterToGlyph(charCode));\n    }\n\n    return glyphs;\n  }\n\n  characterToGlyph(character) {\n    return characters[WIN_ANSI_MAP[character] || character] || '.notdef';\n  }\n\n  widthOfGlyph(glyph) {\n    return this.glyphWidths[glyph] || 0;\n  }\n\n  getKernPair(left, right) {\n    return this.kernPairs[left + '\\0' + right] || 0;\n  }\n\n  advancesForGlyphs(glyphs) {\n    const advances = [];\n\n    for (let index = 0; index < glyphs.length; index++) {\n      const left = glyphs[index];\n      const right = glyphs[index + 1];\n      advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));\n    }\n\n    return advances;\n  }\n}\n\nexport default AFMFont;\n","class PDFFont {\n  constructor() {}\n\n  encode() {\n    throw new Error('Must be implemented by subclasses');\n  }\n\n  widthOfString() {\n    throw new Error('Must be implemented by subclasses');\n  }\n\n  ref() {\n    return this.dictionary != null\n      ? this.dictionary\n      : (this.dictionary = this.document.ref());\n  }\n\n  finalize() {\n    if (this.embedded || this.dictionary == null) {\n      return;\n    }\n\n    this.embed();\n    this.embedded = true;\n  }\n\n  embed() {\n    throw new Error('Must be implemented by subclasses');\n  }\n\n  lineHeight(size, includeGap = false) {\n    const gap = includeGap ? this.lineGap : 0;\n    return ((this.ascender + gap - this.descender) / 1000) * size;\n  }\n}\n\nexport default PDFFont;\n","import AFMFont from './afm';\nimport PDFFont from '../font';\n\nclass StandardFont extends PDFFont {\n  constructor(document, fontData, id) {\n    super();\n    this.document = document;\n    this.name = fontData.name;\n    this.id = id;\n    this.font = new AFMFont(fontData);\n    ({\n      ascender: this.ascender,\n      descender: this.descender,\n      bbox: this.bbox,\n      lineGap: this.lineGap,\n      xHeight: this.xHeight,\n      capHeight: this.capHeight,\n    } = this.font);\n  }\n\n  embed() {\n    this.dictionary.data = {\n      Type: 'Font',\n      BaseFont: this.name,\n      Subtype: 'Type1',\n      Encoding: 'WinAnsiEncoding',\n    };\n\n    return this.dictionary.end();\n  }\n\n  encode(text) {\n    const encoded = this.font.encodeText(text);\n    const glyphs = this.font.glyphsForString(`${text}`);\n    const advances = this.font.advancesForGlyphs(glyphs);\n    const positions = [];\n    for (let i = 0; i < glyphs.length; i++) {\n      const glyph = glyphs[i];\n      positions.push({\n        xAdvance: advances[i],\n        yAdvance: 0,\n        xOffset: 0,\n        yOffset: 0,\n        advanceWidth: this.font.widthOfGlyph(glyph),\n      });\n    }\n\n    return [encoded, positions];\n  }\n\n  widthOfString(string, size) {\n    const glyphs = this.font.glyphsForString(`${string}`);\n    const advances = this.font.advancesForGlyphs(glyphs);\n\n    let width = 0;\n    for (let advance of advances) {\n      width += advance;\n    }\n\n    const scale = size / 1000;\n    return width * scale;\n  }\n}\n\nexport default StandardFont;\n","import PDFFont from '../font';\n\nconst toHex = function (num) {\n  return `0000${num.toString(16)}`.slice(-4);\n};\n\nclass EmbeddedFont extends PDFFont {\n  constructor(document, font, id) {\n    super();\n    this.document = document;\n    this.font = font;\n    this.id = id;\n    this.subset = this.font.createSubset();\n    this.unicode = [[0]];\n    this.widths = [this.font.getGlyph(0).advanceWidth];\n\n    this.name = this.font.postscriptName;\n    this.scale = 1000 / this.font.unitsPerEm;\n    this.ascender = this.font.ascent * this.scale;\n    this.descender = this.font.descent * this.scale;\n    this.xHeight = this.font.xHeight * this.scale;\n    this.capHeight = this.font.capHeight * this.scale;\n    this.lineGap = this.font.lineGap * this.scale;\n    this.bbox = this.font.bbox;\n\n    if (document.options.fontLayoutCache !== false) {\n      this.layoutCache = Object.create(null);\n    }\n  }\n\n  layoutRun(text, features) {\n    const run = this.font.layout(text, features);\n\n    // Normalize position values\n    for (let i = 0; i < run.positions.length; i++) {\n      const position = run.positions[i];\n      for (let key in position) {\n        position[key] *= this.scale;\n      }\n\n      position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;\n    }\n\n    return run;\n  }\n\n  layoutCached(text) {\n    if (!this.layoutCache) {\n      return this.layoutRun(text);\n    }\n    let cached;\n    if ((cached = this.layoutCache[text])) {\n      return cached;\n    }\n\n    const run = this.layoutRun(text);\n    this.layoutCache[text] = run;\n    return run;\n  }\n\n  layout(text, features, onlyWidth) {\n    // Skip the cache if any user defined features are applied\n    if (features) {\n      return this.layoutRun(text, features);\n    }\n\n    let glyphs = onlyWidth ? null : [];\n    let positions = onlyWidth ? null : [];\n    let advanceWidth = 0;\n\n    // Split the string by words to increase cache efficiency.\n    // For this purpose, spaces and tabs are a good enough delimeter.\n    let last = 0;\n    let index = 0;\n    while (index <= text.length) {\n      var needle;\n      if (\n        (index === text.length && last < index) ||\n        ((needle = text.charAt(index)), [' ', '\\t'].includes(needle))\n      ) {\n        const run = this.layoutCached(text.slice(last, ++index));\n        if (!onlyWidth) {\n          glyphs = glyphs.concat(run.glyphs);\n          positions = positions.concat(run.positions);\n        }\n\n        advanceWidth += run.advanceWidth;\n        last = index;\n      } else {\n        index++;\n      }\n    }\n\n    return { glyphs, positions, advanceWidth };\n  }\n\n  encode(text, features) {\n    const { glyphs, positions } = this.layout(text, features);\n\n    const res = [];\n    for (let i = 0; i < glyphs.length; i++) {\n      const glyph = glyphs[i];\n      const gid = this.subset.includeGlyph(glyph.id);\n      res.push(`0000${gid.toString(16)}`.slice(-4));\n\n      if (this.widths[gid] == null) {\n        this.widths[gid] = glyph.advanceWidth * this.scale;\n      }\n      if (this.unicode[gid] == null) {\n        this.unicode[gid] = glyph.codePoints;\n      }\n    }\n\n    return [res, positions];\n  }\n\n  widthOfString(string, size, features) {\n    const width = this.layout(string, features, true).advanceWidth;\n    const scale = size / 1000;\n    return width * scale;\n  }\n\n  embed() {\n    const isCFF = this.subset.cff != null;\n    const fontFile = this.document.ref();\n\n    if (isCFF) {\n      fontFile.data.Subtype = 'CIDFontType0C';\n    }\n\n    fontFile.end(this.subset.encode());\n\n    const familyClass =\n      ((this.font['OS/2'] != null\n        ? this.font['OS/2'].sFamilyClass\n        : undefined) || 0) >> 8;\n    let flags = 0;\n    if (this.font.post.isFixedPitch) {\n      flags |= 1 << 0;\n    }\n    if (1 <= familyClass && familyClass <= 7) {\n      flags |= 1 << 1;\n    }\n    flags |= 1 << 2; // assume the font uses non-latin characters\n    if (familyClass === 10) {\n      flags |= 1 << 3;\n    }\n    if (this.font.head.macStyle.italic) {\n      flags |= 1 << 6;\n    }\n\n    // generate a tag (6 uppercase letters. 17 is the char code offset from '0' to 'A'. 73 will map to 'Z')\n    const tag = [1, 2, 3, 4, 5, 6]\n      .map((i) => String.fromCharCode((this.id.charCodeAt(i) || 73) + 17))\n      .join('');\n    const name = tag + '+' + this.font.postscriptName?.replaceAll(' ', '_');\n\n    const { bbox } = this.font;\n    const descriptor = this.document.ref({\n      Type: 'FontDescriptor',\n      FontName: name,\n      Flags: flags,\n      FontBBox: [\n        bbox.minX * this.scale,\n        bbox.minY * this.scale,\n        bbox.maxX * this.scale,\n        bbox.maxY * this.scale,\n      ],\n      ItalicAngle: this.font.italicAngle,\n      Ascent: this.ascender,\n      Descent: this.descender,\n      CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,\n      XHeight: (this.font.xHeight || 0) * this.scale,\n      StemV: 0,\n    }); // not sure how to calculate this\n\n    if (isCFF) {\n      descriptor.data.FontFile3 = fontFile;\n    } else {\n      descriptor.data.FontFile2 = fontFile;\n    }\n\n    if (this.document.subset && this.document.subset === 1) {\n      const maxCID = this.widths.length - 1;\n      const cidSetBuffer = new Uint8Array(Math.ceil((maxCID + 1) / 8));\n      for (let cid = 0; cid <= maxCID; cid++) {\n        if (this.widths[cid] != null) {\n          cidSetBuffer[Math.floor(cid / 8)] |= 0x80 >> (cid % 8);\n        }\n      }\n      const CIDSetRef = this.document.ref();\n      CIDSetRef.write(cidSetBuffer);\n      CIDSetRef.end();\n\n      descriptor.data.CIDSet = CIDSetRef;\n    }\n\n    descriptor.end();\n\n    const descendantFontData = {\n      Type: 'Font',\n      Subtype: 'CIDFontType0',\n      BaseFont: name,\n      CIDSystemInfo: {\n        Registry: new String('Adobe'),\n        Ordering: new String('Identity'),\n        Supplement: 0,\n      },\n      FontDescriptor: descriptor,\n      W: [0, this.widths],\n    };\n\n    if (!isCFF) {\n      descendantFontData.Subtype = 'CIDFontType2';\n      descendantFontData.CIDToGIDMap = 'Identity';\n    }\n\n    const descendantFont = this.document.ref(descendantFontData);\n\n    descendantFont.end();\n\n    this.dictionary.data = {\n      Type: 'Font',\n      Subtype: 'Type0',\n      BaseFont: name,\n      Encoding: 'Identity-H',\n      DescendantFonts: [descendantFont],\n      ToUnicode: this.toUnicodeCmap(),\n    };\n\n    return this.dictionary.end();\n  }\n\n  // Maps the glyph ids encoded in the PDF back to unicode strings\n  // Because of ligature substitutions and the like, there may be one or more\n  // unicode characters represented by each glyph.\n  toUnicodeCmap() {\n    const cmap = this.document.ref();\n\n    const entries = [];\n    for (let codePoints of this.unicode) {\n      const encoded = [];\n\n      // encode codePoints to utf16\n      for (let value of codePoints) {\n        if (value > 0xffff) {\n          value -= 0x10000;\n          encoded.push(toHex(((value >>> 10) & 0x3ff) | 0xd800));\n          value = 0xdc00 | (value & 0x3ff);\n        }\n\n        encoded.push(toHex(value));\n      }\n\n      entries.push(`<${encoded.join(' ')}>`);\n    }\n\n    const chunkSize = 256;\n    const chunks = Math.ceil(entries.length / chunkSize);\n    const ranges = [];\n    for (let i = 0; i < chunks; i++) {\n      const start = i * chunkSize;\n      const end = Math.min((i + 1) * chunkSize, entries.length);\n      ranges.push(\n        `<${toHex(start)}> <${toHex(end - 1)}> [${entries.slice(start, end).join(' ')}]`,\n      );\n    }\n\n    cmap.end(`\\\n/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange\n${ranges.length} beginbfrange\n${ranges.join('\\n')}\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend\\\n`);\n\n    return cmap;\n  }\n}\n\nexport default EmbeddedFont;\n","export const STANDARD_FONT_NAMES = [\n  'Courier',\n  'Courier-Bold',\n  'Courier-BoldOblique',\n  'Courier-Oblique',\n  'Helvetica',\n  'Helvetica-Bold',\n  'Helvetica-BoldOblique',\n  'Helvetica-Oblique',\n  'Symbol',\n  'Times-Bold',\n  'Times-BoldItalic',\n  'Times-Italic',\n  'Times-Roman',\n  'ZapfDingbats',\n];\n\nconst STANDARD_FONT_NAME_SET = new Set(STANDARD_FONT_NAMES);\n\nconst validateFontData = (fontData, expectedName) => {\n  if (\n    fontData == null ||\n    typeof fontData !== 'object' ||\n    !STANDARD_FONT_NAME_SET.has(fontData.name) ||\n    (expectedName != null && fontData.name !== expectedName)\n  ) {\n    throw new TypeError('Invalid standard font data.');\n  }\n};\n\nconst standardFonts = new Map();\n\nexport const isStandardFont = (name) => STANDARD_FONT_NAME_SET.has(name);\n\nexport const registerStdFonts = (...fontData) => {\n  for (const data of fontData) {\n    validateFontData(data);\n    standardFonts.set(data.name, data);\n  }\n};\n\nexport const registerStdFontLoaders = (loaders) => {\n  for (const [name, loader] of Object.entries(loaders)) {\n    if (!STANDARD_FONT_NAME_SET.has(name) || typeof loader !== 'function') {\n      throw new TypeError('Invalid standard font loader.');\n    }\n\n    standardFonts.set(name, loader);\n  }\n};\n\nexport const getStandardFont = (name) => {\n  if (!STANDARD_FONT_NAME_SET.has(name)) {\n    return null;\n  }\n\n  const font = standardFonts.get(name);\n  if (font == null) {\n    throw new Error(\n      `Standard font \"${name}\" is not registered. ` +\n        'Call registerStdFonts() before using it.',\n    );\n  }\n\n  if (typeof font !== 'function') {\n    return font;\n  }\n\n  const data = font();\n  validateFontData(data, name);\n  standardFonts.set(name, data);\n  return data;\n};\n","import fs from '#fs';\nimport { create } from 'fontkit';\nimport StandardFont from './font/standard';\nimport EmbeddedFont from './font/embedded';\nimport { getStandardFont, isStandardFont } from './font/standard_fonts';\n\nclass PDFFontFactory {\n  static open(document, src, family, id) {\n    let font;\n    if (typeof src === 'string') {\n      if (isStandardFont(src)) {\n        return new StandardFont(document, getStandardFont(src), id);\n      }\n\n      src = fs.readFileSync(src);\n    }\n    if (src instanceof Uint8Array) {\n      font = create(src, family);\n    } else if (src instanceof ArrayBuffer) {\n      font = create(new Uint8Array(src), family);\n    } else if (typeof src?.layout === 'function') {\n      // already-parsed fontkit font instance\n      font = src;\n    }\n\n    if (font == null) {\n      throw new Error('Not a supported font format or standard PDF font.');\n    }\n\n    return new EmbeddedFont(document, font, id);\n  }\n}\n\nexport default PDFFontFactory;\n","import PDFFontFactory from '../font_factory';\nimport { CM_TO_IN, IN_TO_PT, MM_TO_CM, PC_TO_PT, PX_TO_IN } from '../utils';\n\nconst isEqualFont = (font1, font2) => {\n  // compare font checksum\n  if (\n    font1.font._tables?.head?.checkSumAdjustment !==\n    font2.font._tables?.head?.checkSumAdjustment\n  ) {\n    return false;\n  }\n\n  // compare font name table\n  if (\n    JSON.stringify(font1.font._tables?.name?.records) !==\n    JSON.stringify(font2.font._tables?.name?.records)\n  ) {\n    return false;\n  }\n\n  return true;\n};\n\nexport default {\n  initFonts(\n    defaultFont = 'Helvetica',\n    defaultFontFamily = null,\n    defaultFontSize = 12,\n  ) {\n    // Lookup table for embedded fonts\n    this._fontFamilies = {};\n    this._fontCount = 0;\n\n    // Font state\n    // Useful to export the font builder so that someone can create a snapshot of the current state\n    // (e.g. Reverting back to the previous font)\n    this._fontSource = defaultFont;\n    this._fontFamily = defaultFontFamily;\n    this._fontSize = defaultFontSize;\n    this._font = null;\n\n    // rem size is fixed per document as the document is the root element\n    this._remSize = defaultFontSize;\n\n    this._registeredFonts = {};\n\n    // Set the default font\n    if (defaultFont) {\n      this.font(defaultFont, defaultFontFamily);\n    }\n  },\n\n  font(src, family, size) {\n    let cacheKey, font;\n    if (typeof family === 'number') {\n      size = family;\n      family = null;\n    }\n\n    // check registered fonts if src is a string\n    if (typeof src === 'string' && this._registeredFonts[src]) {\n      cacheKey = src;\n      ({ src, family } = this._registeredFonts[src]);\n    } else {\n      cacheKey = family || src;\n      if (typeof cacheKey !== 'string') {\n        cacheKey = null;\n      }\n    }\n\n    this._fontSource = src;\n    this._fontFamily = family;\n    if (size != null) {\n      this.fontSize(size);\n    }\n\n    // fast path: check if the font is already in the PDF\n    if ((font = this._fontFamilies[cacheKey])) {\n      this._font = font;\n      return this;\n    }\n\n    // load the font\n    const id = `F${++this._fontCount}`;\n    this._font = PDFFontFactory.open(this, src, family, id);\n\n    // check for existing font familes with the same name already in the PDF\n    // useful if the font was passed as a buffer\n    if (\n      (font = this._fontFamilies[this._font.name]) &&\n      isEqualFont(this._font, font)\n    ) {\n      this._font = font;\n      return this;\n    }\n\n    // save the font for reuse later\n    if (cacheKey) {\n      this._fontFamilies[cacheKey] = this._font;\n    }\n\n    if (this._font.name && !this._fontFamilies[this._font.name]) {\n      this._fontFamilies[this._font.name] = this._font;\n    }\n\n    // if the font wasn't registered under any key (e.g. loaded via raw buffer\n    // with no cacheKey and a postscript name that collides with an\n    // already-registered font), register it under its id so it always gets\n    // finalized and doesn't leave a dangling references\n    if (\n      !cacheKey &&\n      (!this._font.name || this._fontFamilies[this._font.name] !== this._font)\n    ) {\n      this._fontFamilies[this._font.id] = this._font;\n    }\n\n    return this;\n  },\n\n  fontSize(_fontSize) {\n    this._fontSize = this.sizeToPoint(_fontSize);\n    return this;\n  },\n\n  currentLineHeight(includeGap) {\n    return this._font.lineHeight(this._fontSize, includeGap);\n  },\n\n  registerFont(name, src, family) {\n    this._registeredFonts[name] = {\n      src,\n      family,\n    };\n\n    return this;\n  },\n\n  /**\n   * Convert a {@link Size} into a point measurement\n   *\n   * @param {Size | boolean | undefined} size - The size to convert\n   * @param {Size | boolean | undefined} defaultValue - The default value when undefined\n   * @param {PDFPage} page - The page used for computing font sizes\n   * @param {number} [percentageWidth] - The value to use for computing size based on `%`\n   *\n   * @returns number\n   */\n  sizeToPoint(\n    size,\n    defaultValue = 0,\n    page = this.page,\n    percentageWidth = undefined,\n  ) {\n    if (!percentageWidth) percentageWidth = this._fontSize;\n    if (typeof defaultValue !== 'number')\n      defaultValue = this.sizeToPoint(defaultValue);\n    if (size === undefined) return defaultValue;\n    if (typeof size === 'number') return size;\n    if (typeof size === 'boolean') return Number(size);\n\n    const match = String(size).match(\n      /((\\d+)?(\\.\\d+)?)(em|in|px|cm|mm|pc|ex|ch|rem|vw|vh|vmin|vmax|%|pt)?/,\n    );\n    if (!match) throw new Error(`Unsupported size '${size}'`);\n    let multiplier;\n    switch (match[4]) {\n      case 'em':\n        multiplier = this._fontSize;\n        break;\n      case 'in':\n        multiplier = IN_TO_PT;\n        break;\n      case 'px':\n        multiplier = PX_TO_IN * IN_TO_PT;\n        break;\n      case 'cm':\n        multiplier = CM_TO_IN * IN_TO_PT;\n        break;\n      case 'mm':\n        multiplier = MM_TO_CM * CM_TO_IN * IN_TO_PT;\n        break;\n      case 'pc':\n        multiplier = PC_TO_PT;\n        break;\n      case 'ex':\n        multiplier = this.currentLineHeight();\n        break;\n      case 'ch':\n        multiplier = this.widthOfString('0');\n        break;\n      case 'rem':\n        multiplier = this._remSize;\n        break;\n      case 'vw':\n        multiplier = page.width / 100;\n        break;\n      case 'vh':\n        multiplier = page.height / 100;\n        break;\n      case 'vmin':\n        multiplier = Math.min(page.width, page.height) / 100;\n        break;\n      case 'vmax':\n        multiplier = Math.max(page.width, page.height) / 100;\n        break;\n      case '%':\n        multiplier = percentageWidth / 100;\n        break;\n      case 'pt':\n      default:\n        multiplier = 1;\n    }\n\n    return multiplier * Number(match[1]);\n  },\n};\n","import LineBreaker from 'linebreak';\nimport EventEmitter from './event_emitter';\nimport { PDFNumber } from './utils';\n\nconst SOFT_HYPHEN = '\\u00AD';\nconst HYPHEN = '-';\n\nclass LineWrapper extends EventEmitter {\n  constructor(document, options) {\n    super();\n    this.document = document;\n    this.horizontalScaling = options.horizontalScaling || 100;\n    this.indent = ((options.indent || 0) * this.horizontalScaling) / 100;\n    this.indentAllLines = options.indentAllLines || false;\n    this.characterSpacing =\n      ((options.characterSpacing || 0) * this.horizontalScaling) / 100;\n    this.wordSpacing =\n      ((options.wordSpacing === 0) * this.horizontalScaling) / 100;\n    this.columns = options.columns || 1;\n    this.columnGap =\n      ((options.columnGap != null ? options.columnGap : 18) *\n        this.horizontalScaling) /\n      100; // 1/4 inch\n    this.lineWidth =\n      ((options.width * this.horizontalScaling) / 100 -\n        this.columnGap * (this.columns - 1)) /\n      this.columns;\n    this.spaceLeft = this.lineWidth;\n    this.startX = this.document.x;\n    this.startY = this.document.y;\n    this.column = 1;\n    this.ellipsis = options.ellipsis;\n    this.continuedX = 0;\n    this.indentApplied = false;\n    this.features = options.features;\n\n    // calculate the maximum Y position the text can appear at\n    if (options.height != null) {\n      this.height = options.height;\n      this.maxY = PDFNumber(this.startY + options.height);\n    } else {\n      this.maxY = PDFNumber(this.document.page.maxY());\n    }\n\n    // handle paragraph indents\n    this.on('firstLine', (options) => {\n      // if this is the first line of the text segment, and\n      // we're continuing where we left off, indent that much\n      // otherwise use the user specified indent option\n      // a continued segment carries on from where the previous one ended, and\n      // that offset belongs to its first line only\n      const continuation = this.continuedX;\n      const indent = continuation || this.indent;\n\n      // With indentAllLines the indent is never taken back off after the first\n      // line, so it may already be in effect: applied by an earlier paragraph in\n      // this same wrap, or restored by nextSection() after a page break.\n      // Applying it a second time would push x further right and shrink\n      // lineWidth again on every paragraph and every page.\n      if (continuation || !this.indentApplied) {\n        this.document.x += indent;\n        this.lineWidth -= indent;\n        this.indentApplied = true;\n      }\n\n      // if indentAllLines is set to true\n      // we're not resetting the indentation for this paragraph after the first line\n      if (options.indentAllLines) {\n        // the paragraph indent stays on, but the continuation offset is only\n        // for the first line of this segment\n        if (continuation) {\n          this.once('line', () => {\n            this.document.x -= continuation;\n            this.lineWidth += continuation;\n          });\n        }\n        return;\n      }\n\n      // otherwise we start the next line without indent\n      this.once('line', () => {\n        this.document.x -= indent;\n        this.lineWidth += indent;\n        this.indentApplied = false;\n        if (options.continued && !this.continuedX) {\n          this.continuedX = this.indent;\n        }\n        if (!options.continued) {\n          this.continuedX = 0;\n        }\n      });\n    });\n\n    // handle left aligning last lines of paragraphs\n    this.on('lastLine', (options) => {\n      const { align } = options;\n      if (align === 'justify') {\n        options.align = 'left';\n      }\n      this.lastLine = true;\n\n      this.once('line', () => {\n        this.document.y += options.paragraphGap || 0;\n        options.align = align;\n        return (this.lastLine = false);\n      });\n    });\n  }\n\n  wordWidth(word) {\n    return PDFNumber(\n      this.document.widthOfString(word, this) +\n        this.characterSpacing +\n        this.wordSpacing,\n    );\n  }\n\n  canFit(word, w) {\n    if (word[word.length - 1] != SOFT_HYPHEN) {\n      return w <= this.spaceLeft;\n    }\n    return w + this.wordWidth(HYPHEN) <= this.spaceLeft;\n  }\n\n  eachWord(text, fn) {\n    // setup a unicode line breaker\n    let bk;\n    const breaker = new LineBreaker(text);\n    let last = null;\n    const wordWidths = Object.create(null);\n\n    while ((bk = breaker.nextBreak())) {\n      var shouldContinue;\n      let word = text.slice(\n        (last != null ? last.position : undefined) || 0,\n        bk.position,\n      );\n      let w =\n        wordWidths[word] != null\n          ? wordWidths[word]\n          : (wordWidths[word] = this.wordWidth(word));\n\n      // if the word is longer than the whole line, chop it up\n      // TODO: break by grapheme clusters, not JS string characters\n      if (w > this.lineWidth + this.continuedX) {\n        // make some fake break objects\n        let lbk = last;\n        const fbk = {};\n\n        while (word.length) {\n          // fit as much of the word as possible into the space we have\n          var l, mightGrow;\n          if (w > this.spaceLeft) {\n            // start our check at the end of our available space - this method is faster than a loop of each character and it resolves\n            // an issue with long loops when processing massive words, such as a huge number of spaces\n            l = Math.ceil(this.spaceLeft / (w / word.length));\n            w = this.wordWidth(word.slice(0, l));\n            mightGrow = w <= this.spaceLeft && l < word.length;\n          } else {\n            l = word.length;\n          }\n          let mustShrink = w > this.spaceLeft && l > 0;\n          // shrink or grow word as necessary after our near-guess above\n          while (mustShrink || mightGrow) {\n            if (mustShrink) {\n              w = this.wordWidth(word.slice(0, --l));\n              mustShrink = w > this.spaceLeft && l > 0;\n            } else {\n              w = this.wordWidth(word.slice(0, ++l));\n              mustShrink = w > this.spaceLeft && l > 0;\n              mightGrow = w <= this.spaceLeft && l < word.length;\n            }\n          }\n\n          // check for the edge case where a single character cannot fit into a line.\n          if (l === 0 && this.spaceLeft === this.lineWidth) {\n            l = 1;\n          }\n\n          // send a required break unless this is the last piece and a linebreak is not specified\n          fbk.required = bk.required || l < word.length;\n          shouldContinue = fn(word.slice(0, l), w, fbk, lbk);\n          lbk = { required: false };\n\n          // get the remaining piece of the word\n          word = word.slice(l);\n          w = this.wordWidth(word);\n\n          if (shouldContinue === false) {\n            break;\n          }\n        }\n      } else {\n        // otherwise just emit the break as it was given to us\n        shouldContinue = fn(word, w, bk, last);\n      }\n\n      if (shouldContinue === false) {\n        break;\n      }\n      last = bk;\n    }\n  }\n\n  wrap(text, options) {\n    const { document } = this;\n    // override options from previous continued fragments\n    this.horizontalScaling = options.horizontalScaling || 100;\n    if (options.indent != null) {\n      this.indent = (options.indent * this.horizontalScaling) / 100;\n    }\n    if (options.characterSpacing != null) {\n      this.characterSpacing =\n        (options.characterSpacing * this.horizontalScaling) / 100;\n    }\n    if (options.wordSpacing != null) {\n      this.wordSpacing = (options.wordSpacing * this.horizontalScaling) / 100;\n    }\n    if (options.ellipsis != null) {\n      this.ellipsis = options.ellipsis;\n    }\n\n    // make sure we're actually on the page\n    // and that the first line of is never by\n    // itself at the bottom of a page (orphans)\n    const nextY = document.y + document.currentLineHeight(true);\n    if (document.y > this.maxY || nextY > this.maxY) {\n      this.nextSection();\n    }\n\n    let buffer = '';\n    let textWidth = 0;\n    let wc = 0;\n    let lc = 0;\n\n    let continueY = document.y; // used to reset Y pos if options.continued (below)\n    const emitLine = () => {\n      options.textWidth = textWidth + this.wordSpacing * (wc - 1);\n      options.wordCount = wc;\n      options.lineWidth = this.lineWidth;\n      continueY = document.y;\n      this.emit('line', buffer, options, this);\n      return lc++;\n    };\n\n    this.emit('sectionStart', options, this);\n\n    this.eachWord(text, (word, w, bk, last) => {\n      if (last == null || last.required) {\n        this.emit('firstLine', options, this);\n        this.spaceLeft = this.lineWidth;\n      }\n\n      if (this.canFit(word, w)) {\n        buffer += word;\n        textWidth += w;\n        wc++;\n      }\n\n      if (bk.required || !this.canFit(word, w)) {\n        // if the user specified a max height and an ellipsis, and is about to pass the\n        // max height and max columns after the next line, append the ellipsis\n        const lh = document.currentLineHeight(true);\n        if (\n          this.height != null &&\n          this.ellipsis &&\n          PDFNumber(document.y + lh * 2) > this.maxY &&\n          this.column >= this.columns\n        ) {\n          if (this.ellipsis === true) {\n            this.ellipsis = '…';\n          } // map default ellipsis character\n          buffer = buffer.replace(/\\s+$/, '');\n          textWidth = this.wordWidth(buffer + this.ellipsis);\n\n          // remove characters from the buffer until the ellipsis fits\n          // to avoid infinite loop need to stop while-loop if buffer is empty string\n          while (buffer && textWidth > this.lineWidth) {\n            buffer = buffer.slice(0, -1).replace(/\\s+$/, '');\n            textWidth = this.wordWidth(buffer + this.ellipsis);\n          }\n          // need to add ellipsis only if there is enough space for it\n          if (textWidth <= this.lineWidth) {\n            buffer = buffer + this.ellipsis;\n          }\n\n          textWidth = this.wordWidth(buffer);\n        }\n\n        if (bk.required) {\n          if (w > this.spaceLeft) {\n            emitLine();\n            buffer = word;\n            textWidth = w;\n            wc = 1;\n          }\n\n          this.emit('lastLine', options, this);\n        }\n\n        // Previous entry is a soft hyphen - add visible hyphen.\n        if (buffer[buffer.length - 1] == SOFT_HYPHEN) {\n          buffer = buffer.slice(0, -1) + HYPHEN;\n          this.spaceLeft -= this.wordWidth(HYPHEN);\n        }\n\n        emitLine();\n\n        // if we've reached the edge of the page,\n        // continue on a new page or column\n        if (PDFNumber(document.y + lh) > this.maxY) {\n          this.emit('sectionEnd', options, this);\n          const shouldContinue = this.nextSection();\n\n          // stop if we reached the maximum height\n          if (!shouldContinue) {\n            wc = 0;\n            buffer = '';\n            return false;\n          }\n          this.emit('sectionStart', options, this);\n        }\n\n        // reset the space left and buffer\n        if (bk.required) {\n          this.spaceLeft = this.lineWidth;\n          buffer = '';\n          textWidth = 0;\n          return (wc = 0);\n        } else {\n          // reset the space left and buffer\n          this.spaceLeft = this.lineWidth - w;\n          buffer = word;\n          textWidth = w;\n          return (wc = 1);\n        }\n      } else {\n        return (this.spaceLeft -= w);\n      }\n    });\n\n    if (wc > 0) {\n      this.emit('lastLine', options, this);\n      emitLine();\n    }\n\n    this.emit('sectionEnd', options, this);\n\n    // if the wrap is set to be continued, save the X position\n    // to start the first line of the next segment at, and reset\n    // the y position\n    if (options.continued === true) {\n      if (lc > 1) {\n        this.continuedX = 0;\n      }\n      this.continuedX += options.textWidth || 0;\n      document.y = continueY;\n    } else {\n      document.x = this.startX;\n    }\n  }\n\n  nextSection(options) {\n    if (++this.column > this.columns) {\n      // if a max height was specified by the user, we're done.\n      // otherwise, the default is to make a new page at the bottom.\n      if (this.height != null) {\n        return false;\n      }\n\n      this.document.continueOnNewPage();\n      this.column = 1;\n      this.startY = this.document.page.margins.top;\n      this.maxY = this.document.page.maxY();\n      if (this.indentAllLines) {\n        // addPage() has reset document.x to the page margin, but lineWidth is\n        // carried over from the previous page and already accounts for the\n        // indent, so only x needs restoring here. If the indent is not in\n        // effect yet the firstLine handler will apply both.\n        if (this.indentApplied) {\n          this.document.x += this.continuedX || this.indent;\n        }\n      } else {\n        this.document.x = this.startX;\n      }\n      if (this.document._fillColor) {\n        this.document.fillColor(...this.document._fillColor);\n      }\n      this.emit('pageBreak', options, this);\n    } else {\n      this.document.x += this.lineWidth + this.columnGap;\n      this.document.y = this.startY;\n      this.emit('columnBreak', options, this);\n    }\n\n    return true;\n  }\n}\n\nexport default LineWrapper;\n","import LineWrapper from '../line_wrapper';\nimport PDFObject from '../object';\nimport { cosine, sine } from '../utils';\n\nconst { number } = PDFObject;\n\n/**\n * Format a list label based on the list type\n * @param {number} n\n * @param {'numbered' | 'lettered'} listType\n * @returns {string}\n */\nfunction formatListLabel(n, listType) {\n  if (listType === 'numbered') {\n    return `${n}.`;\n  }\n\n  // lettered\n  var letter = String.fromCharCode(((n - 1) % 26) + 65);\n  var times = Math.floor((n - 1) / 26 + 1);\n  var text = Array(times + 1).join(letter);\n  return `${text}.`;\n}\n\nexport default {\n  initText() {\n    this._line = this._line.bind(this);\n    // Current coordinates\n    this.x = 0;\n    this.y = 0;\n    this._lineGap = 0;\n  },\n\n  lineGap(_lineGap) {\n    this._lineGap = _lineGap;\n    return this;\n  },\n\n  moveDown(lines) {\n    if (lines == null) {\n      lines = 1;\n    }\n    this.y += this.currentLineHeight(true) * lines + this._lineGap;\n    return this;\n  },\n\n  moveUp(lines) {\n    if (lines == null) {\n      lines = 1;\n    }\n    this.y -= this.currentLineHeight(true) * lines + this._lineGap;\n    return this;\n  },\n\n  _text(text, x, y, options, lineCallback) {\n    options = this._initOptions(x, y, options);\n\n    // Convert text to a string\n    text = text == null ? '' : `${text}`;\n\n    // if the wordSpacing option is specified, remove multiple consecutive spaces\n    if (options.wordSpacing) {\n      text = text.replace(/\\s{2,}/g, ' ');\n    }\n\n    const addStructure = () => {\n      if (options.structParent) {\n        options.structParent.add(\n          this.struct(options.structType || 'P', [\n            this.markStructureContent(options.structType || 'P'),\n          ]),\n        );\n      }\n    };\n\n    // We can save some bytes if there is no rotation\n    if (options.rotation !== 0) {\n      this.save();\n      this.rotate(-options.rotation, { origin: [this.x, this.y] });\n    }\n\n    // word wrapping\n    if (options.width) {\n      let wrapper = this._wrapper;\n      if (!wrapper) {\n        wrapper = new LineWrapper(this, options);\n        wrapper.on('line', lineCallback);\n        wrapper.on('firstLine', addStructure);\n      }\n\n      this._wrapper = options.continued ? wrapper : null;\n      this._textOptions = options.continued ? options : null;\n      wrapper.wrap(text, options);\n\n      // render paragraphs as single lines\n    } else {\n      for (let line of text.split('\\n')) {\n        addStructure();\n        lineCallback(line, options);\n      }\n    }\n\n    // Cleanup if there was a rotation\n    if (options.rotation !== 0) this.restore();\n\n    return this;\n  },\n\n  text(text, x, y, options) {\n    return this._text(text, x, y, options, this._line);\n  },\n\n  widthOfString(string, options = {}) {\n    const horizontalScaling = options.horizontalScaling || 100;\n    return (\n      ((this._font.widthOfString(string, this._fontSize, options.features) +\n        (options.characterSpacing || 0) * (string.length - 1)) *\n        horizontalScaling) /\n      100\n    );\n  },\n\n  /**\n   * Compute the bounding box of a string\n   * based on what will actually be rendered by `doc.text()`\n   *\n   * @param string - The string\n   * @param x - X position of text (defaults to this.x)\n   * @param y - Y position of text (defaults to this.y)\n   * @param options - Any text options (The same you would apply to `doc.text()`)\n   * @returns {{x: number, y: number, width: number, height: number}}\n   */\n  boundsOfString(string, x, y, options) {\n    options = this._initOptions(x, y, options);\n    ({ x, y } = this);\n    const lineGap = options.lineGap ?? this._lineGap ?? 0;\n    const lineHeight = this.currentLineHeight(true) + lineGap;\n    let contentWidth = 0;\n    // Convert text to a string\n    string = String(string ?? '');\n\n    // if the wordSpacing option is specified, remove multiple consecutive spaces\n    if (options.wordSpacing) {\n      string = string.replace(/\\s{2,}/g, ' ');\n    }\n\n    // word wrapping\n    if (options.width) {\n      let wrapper = new LineWrapper(this, options);\n      wrapper.on('line', (text, options) => {\n        this.y += lineHeight;\n        text = text.replace(/\\n/g, '');\n\n        if (text.length) {\n          // handle options\n          let wordSpacing = options.wordSpacing ?? 0;\n          const characterSpacing = options.characterSpacing ?? 0;\n\n          // justify alignments\n          if (options.width && options.align === 'justify') {\n            // calculate the word spacing value\n            const words = text.trim().split(/\\s+/);\n            const textWidth = this.widthOfString(\n              text.replace(/\\s+/g, ''),\n              options,\n            );\n            const spaceWidth = this.widthOfString(' ') + characterSpacing;\n            wordSpacing = Math.max(\n              0,\n              (options.lineWidth - textWidth) / Math.max(1, words.length - 1) -\n                spaceWidth,\n            );\n          }\n\n          // calculate the actual rendered width of the string after word and character spacing\n          contentWidth = Math.max(\n            contentWidth,\n            options.textWidth +\n              wordSpacing * (options.wordCount - 1) +\n              characterSpacing * (text.length - 1),\n          );\n        }\n      });\n      wrapper.wrap(string, options);\n    } else {\n      // render paragraphs as single lines\n      for (let line of string.split('\\n')) {\n        const lineWidth = this.widthOfString(line, options);\n        this.y += lineHeight;\n        contentWidth = Math.max(contentWidth, lineWidth);\n      }\n    }\n\n    let contentHeight = this.y - y;\n    // Clamp height to max height\n    if (options.height) contentHeight = Math.min(contentHeight, options.height);\n\n    this.x = x;\n    this.y = y;\n\n    /**\n     * Rotates around top left corner\n     * [x1,y1]  >  [x2,y2]\n     *    ⌃           ⌄\n     * [x4,y4]  <  [x3,y3]\n     */\n    if (options.rotation === 0) {\n      // No rotation so we can use the existing values\n      return { x, y, width: contentWidth, height: contentHeight };\n      // Use fast computation without explicit trig\n    } else if (options.rotation === 90) {\n      return {\n        x: x,\n        y: y - contentWidth,\n        width: contentHeight,\n        height: contentWidth,\n      };\n    } else if (options.rotation === 180) {\n      return {\n        x: x - contentWidth,\n        y: y - contentHeight,\n        width: contentWidth,\n        height: contentHeight,\n      };\n    } else if (options.rotation === 270) {\n      return {\n        x: x - contentHeight,\n        y: y,\n        width: contentHeight,\n        height: contentWidth,\n      };\n    }\n\n    // Non-trivial values so time for trig\n    const cos = cosine(options.rotation);\n    const sin = sine(options.rotation);\n\n    const x1 = x;\n    const y1 = y;\n    const x2 = x + contentWidth * cos;\n    const y2 = y - contentWidth * sin;\n    const x3 = x + contentWidth * cos + contentHeight * sin;\n    const y3 = y - contentWidth * sin + contentHeight * cos;\n    const x4 = x + contentHeight * sin;\n    const y4 = y + contentHeight * cos;\n\n    const xMin = Math.min(x1, x2, x3, x4);\n    const xMax = Math.max(x1, x2, x3, x4);\n    const yMin = Math.min(y1, y2, y3, y4);\n    const yMax = Math.max(y1, y2, y3, y4);\n\n    return { x: xMin, y: yMin, width: xMax - xMin, height: yMax - yMin };\n  },\n\n  heightOfString(text, options) {\n    const { x, y } = this;\n\n    options = this._initOptions(options);\n    options.height = Infinity; // don't break pages\n\n    const lineGap = options.lineGap || this._lineGap || 0;\n    this._text(text, this.x, this.y, options, () => {\n      this.y += this.currentLineHeight(true) + lineGap;\n    });\n\n    const height = this.y - y;\n    this.x = x;\n    this.y = y;\n\n    return height;\n  },\n\n  list(list, x, y, options) {\n    options = this._initOptions(x, y, options);\n\n    const listType = options.listType || 'bullet';\n    const unit = Math.round((this._font.ascender / 1000) * this._fontSize);\n    const midLine = unit / 2;\n    const r = options.bulletRadius || unit / 3;\n    const indent =\n      options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2);\n    const itemIndent =\n      options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2);\n\n    let level = 1;\n    const items = [];\n    const levels = [];\n    const numbers = [];\n\n    var flatten = function (list) {\n      let n = 1;\n      for (let i = 0; i < list.length; i++) {\n        const item = list[i];\n        if (Array.isArray(item)) {\n          level++;\n          flatten(item);\n          level--;\n        } else {\n          items.push(item);\n          levels.push(level);\n          if (listType !== 'bullet') {\n            numbers.push(n++);\n          }\n        }\n      }\n    };\n\n    flatten(list);\n\n    const drawListItem = function (listItem, i) {\n      const wrapper = new LineWrapper(this, options);\n      wrapper.on('line', this._line);\n\n      level = 1;\n      wrapper.once('firstLine', () => {\n        let item, itemType, labelType, bodyType;\n        if (options.structParent) {\n          if (options.structTypes) {\n            [itemType, labelType, bodyType] = options.structTypes;\n          } else {\n            [itemType, labelType, bodyType] = ['LI', 'Lbl', 'LBody'];\n          }\n        }\n\n        if (itemType) {\n          item = this.struct(itemType);\n          options.structParent.add(item);\n        } else if (options.structParent) {\n          item = options.structParent;\n        }\n\n        let l;\n        if ((l = levels[i++]) !== level) {\n          const diff = itemIndent * (l - level);\n          this.x += diff;\n          wrapper.lineWidth -= diff;\n          level = l;\n        }\n\n        if (item && (labelType || bodyType)) {\n          item.add(\n            this.struct(labelType || bodyType, [\n              this.markStructureContent(labelType || bodyType),\n            ]),\n          );\n        }\n        switch (listType) {\n          case 'bullet':\n            this.circle(this.x - indent + r, this.y + midLine, r);\n            this.fill();\n            break;\n          case 'numbered':\n          case 'lettered':\n            var text = formatListLabel(numbers[i - 1], listType);\n            this._fragment(text, this.x - indent, this.y, options);\n            break;\n        }\n\n        if (item && labelType && bodyType) {\n          item.add(\n            this.struct(bodyType, [this.markStructureContent(bodyType)]),\n          );\n        }\n        if (item && item !== options.structParent) {\n          item.end();\n        }\n      });\n\n      wrapper.on('sectionStart', () => {\n        const pos = indent + itemIndent * (level - 1);\n        this.x += pos;\n        wrapper.lineWidth -= pos;\n      });\n\n      wrapper.on('sectionEnd', () => {\n        const pos = indent + itemIndent * (level - 1);\n        this.x -= pos;\n        wrapper.lineWidth += pos;\n      });\n\n      wrapper.wrap(listItem, options);\n    };\n\n    for (let i = 0; i < items.length; i++) {\n      drawListItem.call(this, items[i], i);\n    }\n\n    return this;\n  },\n\n  _initOptions(x = {}, y, options = {}) {\n    if (x && typeof x === 'object') {\n      options = x;\n      x = null;\n    }\n\n    // clone options object\n    const result = Object.assign({}, options);\n\n    // extend options with previous values for continued text\n    if (this._textOptions) {\n      for (let key in this._textOptions) {\n        const val = this._textOptions[key];\n        if (key !== 'continued') {\n          if (result[key] === undefined) {\n            result[key] = val;\n          }\n        }\n      }\n    }\n\n    // Update the current position\n    if (x != null) {\n      this.x = x;\n    }\n    if (y != null) {\n      this.y = y;\n    }\n\n    // wrap to margins if no x or y position passed\n    if (result.lineBreak !== false) {\n      if (result.width == null) {\n        result.width = this.page.width - this.x - this.page.margins.right;\n      }\n      result.width = Math.max(result.width, 0);\n    }\n\n    if (!result.columns) {\n      result.columns = 0;\n    }\n    if (result.columnGap == null) {\n      result.columnGap = 18;\n    } // 1/4 inch\n\n    // Normalize rotation to between 0 - 360\n    result.rotation = Number(result.rotation ?? 0) % 360;\n    if (result.rotation < 0) result.rotation += 360;\n\n    return result;\n  },\n\n  _line(text, options = {}, wrapper) {\n    this._fragment(text, this.x, this.y, options);\n\n    if (wrapper) {\n      const lineGap = options.lineGap || this._lineGap || 0;\n      this.y += this.currentLineHeight(true) + lineGap;\n    } else {\n      this.x += this.widthOfString(text, options);\n    }\n  },\n\n  _fragment(text, x, y, options) {\n    let dy, encoded, i, positions, textWidth, words;\n    text = `${text}`.replace(/\\n/g, '');\n    if (text.length === 0) {\n      return;\n    }\n\n    // handle options\n    const align = options.align || 'left';\n    let wordSpacing = options.wordSpacing || 0;\n    const characterSpacing = options.characterSpacing || 0;\n    const horizontalScaling = options.horizontalScaling || 100;\n\n    // text alignments\n    if (options.width) {\n      switch (align) {\n        case 'right':\n          textWidth = this.widthOfString(text.replace(/\\s+$/, ''), options);\n          x += options.lineWidth - textWidth;\n          break;\n\n        case 'center':\n          x += options.lineWidth / 2 - options.textWidth / 2;\n          break;\n\n        case 'justify':\n          // calculate the word spacing value\n          words = text.trim().split(/\\s+/);\n          textWidth = this.widthOfString(text.replace(/\\s+/g, ''), options);\n          var spaceWidth = this.widthOfString(' ') + characterSpacing;\n          wordSpacing = Math.max(\n            0,\n            (options.lineWidth - textWidth) / Math.max(1, words.length - 1) -\n              spaceWidth,\n          );\n          break;\n      }\n    }\n\n    // text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling\n    if (typeof options.baseline === 'number') {\n      dy = -options.baseline;\n    } else {\n      switch (options.baseline) {\n        case 'svg-middle':\n          dy = 0.5 * this._font.xHeight;\n          break;\n        case 'middle':\n        case 'svg-central':\n          dy = 0.5 * (this._font.descender + this._font.ascender);\n          break;\n        case 'bottom':\n        case 'ideographic':\n          dy = this._font.descender;\n          break;\n        case 'alphabetic':\n          dy = 0;\n          break;\n        case 'mathematical':\n          dy = 0.5 * this._font.ascender;\n          break;\n        case 'hanging':\n          dy = 0.8 * this._font.ascender;\n          break;\n        case 'top':\n          dy = this._font.ascender;\n          break;\n        default:\n          dy = this._font.ascender;\n      }\n      dy = (dy / 1000) * this._fontSize;\n    }\n\n    // calculate the actual rendered width of the string after word and character spacing\n    // the wrapper supplies textWidth and wordCount; measure them directly when it did not run\n    const measuredWidth =\n      options.textWidth ??\n      this.widthOfString(text, options) - characterSpacing * (text.length - 1);\n    const measuredWordCount =\n      options.wordCount ?? (text.trim() ? text.trim().split(/\\s+/).length : 0);\n    const renderedWidth =\n      measuredWidth +\n      wordSpacing * (measuredWordCount - 1) +\n      characterSpacing * (text.length - 1);\n\n    // create link annotations if the link option is given\n    if (options.link != null) {\n      const linkOptions = {};\n      if (\n        this._currentStructureElement &&\n        this._currentStructureElement.dictionary.data.S === 'Link'\n      ) {\n        linkOptions.structParent = this._currentStructureElement;\n      }\n      this.link(\n        x,\n        y,\n        renderedWidth,\n        this.currentLineHeight(),\n        options.link,\n        linkOptions,\n      );\n    }\n    if (options.goTo != null) {\n      this.goTo(x, y, renderedWidth, this.currentLineHeight(), options.goTo);\n    }\n    if (options.destination != null) {\n      this.addNamedDestination(options.destination, 'XYZ', x, y, null);\n    }\n\n    // create underline\n    if (options.underline) {\n      this.save();\n      if (!options.stroke) {\n        this.strokeColor(...(this._fillColor || []));\n      }\n\n      const lineWidth =\n        this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\n      this.lineWidth(lineWidth);\n\n      let lineY = y + this.currentLineHeight() - lineWidth;\n      this.moveTo(x, lineY);\n      this.lineTo(x + renderedWidth, lineY);\n      this.stroke();\n      this.restore();\n    }\n\n    // create strikethrough line\n    if (options.strike) {\n      this.save();\n      if (!options.stroke) {\n        this.strokeColor(...(this._fillColor || []));\n      }\n\n      const lineWidth =\n        this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\n      this.lineWidth(lineWidth);\n\n      let lineY = y + this.currentLineHeight() / 2;\n      this.moveTo(x, lineY);\n      this.lineTo(x + renderedWidth, lineY);\n      this.stroke();\n      this.restore();\n    }\n\n    this.save();\n\n    // oblique (angle in degrees or boolean)\n    if (options.oblique) {\n      let skew;\n      if (typeof options.oblique === 'number') {\n        skew = -Math.tan((options.oblique * Math.PI) / 180);\n      } else {\n        skew = -0.25;\n      }\n      this.transform(1, 0, 0, 1, x, y);\n      this.transform(1, 0, skew, 1, -skew * dy, 0);\n      this.transform(1, 0, 0, 1, -x, -y);\n    }\n\n    // flip coordinate system\n    this.transform(1, 0, 0, -1, 0, this.page.height);\n    y = this.page.height - y - dy;\n\n    // add current font to page if necessary\n    if (this.page.fonts[this._font.id] == null) {\n      this.page.fonts[this._font.id] = this._font.ref();\n    }\n\n    // begin the text object\n    this.addContent('BT');\n\n    // text position\n    this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\n\n    // font and font size\n    this.addContent(`/${this._font.id} ${number(this._fontSize)} Tf`);\n\n    // rendering mode\n    const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;\n    if (mode) {\n      this.addContent(`${mode} Tr`);\n    }\n\n    // Character spacing\n    if (characterSpacing) {\n      this.addContent(`${number(characterSpacing)} Tc`);\n    }\n\n    // Horizontal scaling\n    if (horizontalScaling !== 100) {\n      this.addContent(`${horizontalScaling} Tz`);\n    }\n\n    // Add the actual text\n    // If we have a word spacing value, we need to encode each word separately\n    // since the normal Tw operator only works on character code 32, which isn't\n    // used for embedded fonts.\n    if (wordSpacing) {\n      words = text.trim().split(/\\s+/);\n      wordSpacing += this.widthOfString(' ') + characterSpacing;\n      wordSpacing *= 1000 / this._fontSize;\n\n      encoded = [];\n      positions = [];\n      for (let word of words) {\n        const [encodedWord, positionsWord] = this._font.encode(\n          word,\n          options.features,\n        );\n        encoded = encoded.concat(encodedWord);\n        positions = positions.concat(positionsWord);\n\n        // add the word spacing to the end of the word\n        // clone object because of cache\n        const space = {};\n        const object = positions[positions.length - 1];\n        for (let key in object) {\n          const val = object[key];\n          space[key] = val;\n        }\n        space.xAdvance += wordSpacing;\n        positions[positions.length - 1] = space;\n      }\n    } else {\n      [encoded, positions] = this._font.encode(text, options.features);\n    }\n\n    const scale = this._fontSize / 1000;\n    const commands = [];\n    let last = 0;\n    let hadOffset = false;\n\n    // Adds a segment of text to the TJ command buffer\n    const addSegment = (cur) => {\n      if (last < cur) {\n        const hex = encoded.slice(last, cur).join('');\n        const advance =\n          positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;\n        commands.push(`<${hex}> ${number(-advance)}`);\n      }\n\n      last = cur;\n    };\n\n    // Flushes the current TJ commands to the output stream\n    const flush = (i) => {\n      addSegment(i);\n\n      if (commands.length > 0) {\n        this.addContent(`[${commands.join(' ')}] TJ`);\n        commands.length = 0;\n      }\n    };\n\n    for (i = 0; i < positions.length; i++) {\n      // If we have an x or y offset, we have to break out of the current TJ command\n      // so we can move the text position.\n      const pos = positions[i];\n      if (pos.xOffset || pos.yOffset) {\n        // Flush the current buffer\n        flush(i);\n\n        // Move the text position and flush just the current character\n        this.addContent(\n          `1 0 0 1 ${number(x + pos.xOffset * scale)} ${number(\n            y + pos.yOffset * scale,\n          )} Tm`,\n        );\n        flush(i + 1);\n\n        hadOffset = true;\n      } else {\n        // If the last character had an offset, reset the text position\n        if (hadOffset) {\n          this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\n          hadOffset = false;\n        }\n\n        // Group segments that don't have any advance adjustments\n        if (pos.xAdvance - pos.advanceWidth !== 0) {\n          addSegment(i + 1);\n        }\n      }\n\n      x += pos.xAdvance * scale;\n    }\n\n    // Flush any remaining commands\n    flush(i);\n\n    // end the text object\n    this.addContent('ET');\n\n    // restore flipped coordinate system\n    this.restore();\n  },\n};\n","import {\n  readUInt16BE,\n  readUInt16LE,\n  readUInt32BE,\n  readUInt32LE,\n  toBinaryString,\n} from '../binary';\n\n/**\n * Parse EXIF orientation from JPEG buffer\n * @param {Uint8Array} data - JPEG image data\n * @returns {number|null} Orientation value (1-8) or null if not found\n */\nconst parseExifOrientation = (data) => {\n  if (!data || data.length < 20) return null;\n\n  let pos = 2; // Skip SOI marker\n\n  while (pos < data.length - 4) {\n    // Skip padding bytes (some JPEG files have null bytes between segments)\n    while (pos < data.length && data[pos] !== 0xff) pos++;\n    if (pos >= data.length - 4) return null;\n\n    const marker = readUInt16BE(data, pos);\n    pos += 2;\n\n    // SOS marker - image data starts, stop searching\n    if (marker === 0xffda) return null;\n\n    // Skip standalone markers\n    if ((marker >= 0xffd0 && marker <= 0xffd9) || marker === 0xff01) continue;\n\n    if (pos + 2 > data.length) return null;\n    const segmentLength = readUInt16BE(data, pos);\n\n    // APP1 (EXIF) marker\n    if (marker === 0xffe1 && pos + 8 <= data.length) {\n      const exifHeader = toBinaryString(data.subarray(pos + 2, pos + 8));\n      if (exifHeader === 'Exif\\x00\\x00') {\n        const tiffStart = pos + 8;\n        if (tiffStart + 8 > data.length) return null;\n\n        // Byte order\n        const byteOrder = toBinaryString(\n          data.subarray(tiffStart, tiffStart + 2),\n        );\n        const isLittleEndian = byteOrder === 'II';\n        if (!isLittleEndian && byteOrder !== 'MM') return null;\n\n        const read16 = isLittleEndian\n          ? (o) => readUInt16LE(data, o)\n          : (o) => readUInt16BE(data, o);\n        const read32 = isLittleEndian\n          ? (o) => readUInt32LE(data, o)\n          : (o) => readUInt32BE(data, o);\n\n        // Verify TIFF magic number (42)\n        if (read16(tiffStart + 2) !== 42) return null;\n\n        // IFD0 offset\n        const ifdPos = tiffStart + read32(tiffStart + 4);\n        if (ifdPos + 2 > data.length) return null;\n\n        const entryCount = read16(ifdPos);\n\n        // Scan IFD entries for Orientation tag (0x0112)\n        for (let i = 0; i < entryCount; i++) {\n          const entryPos = ifdPos + 2 + i * 12;\n          if (entryPos + 12 > data.length) return null;\n\n          if (read16(entryPos) === 0x0112) {\n            const value = read16(entryPos + 8);\n            return value >= 1 && value <= 8 ? value : null;\n          }\n        }\n        return null;\n      }\n    }\n\n    pos += segmentLength;\n  }\n\n  return null;\n};\n\nconst MARKERS = [\n  0xffc0, 0xffc1, 0xffc2, 0xffc3, 0xffc5, 0xffc6, 0xffc7, 0xffc8, 0xffc9,\n  0xffca, 0xffcb, 0xffcc, 0xffcd, 0xffce, 0xffcf,\n];\n\nconst COLOR_SPACE_MAP = {\n  1: 'DeviceGray',\n  3: 'DeviceRGB',\n  4: 'DeviceCMYK',\n};\n\nclass JPEG {\n  constructor(data, label) {\n    let marker;\n    this.data = data;\n    this.label = label;\n    if (readUInt16BE(this.data, 0) !== 0xffd8) {\n      throw 'SOI not found in JPEG';\n    }\n\n    // Parse the EXIF orientation\n    this.orientation = parseExifOrientation(this.data) || 1;\n\n    let pos = 2;\n    while (pos < this.data.length) {\n      // Skip padding bytes (some JPEG files have null bytes between segments)\n      while (pos < this.data.length && this.data[pos] !== 0xff) pos++;\n      if (pos >= this.data.length) break;\n\n      marker = readUInt16BE(this.data, pos);\n      pos += 2;\n      if (MARKERS.includes(marker)) {\n        break;\n      }\n      pos += readUInt16BE(this.data, pos);\n    }\n\n    if (!MARKERS.includes(marker)) {\n      throw 'Invalid JPEG.';\n    }\n    pos += 2;\n\n    this.bits = this.data[pos++];\n    this.height = readUInt16BE(this.data, pos);\n    pos += 2;\n\n    this.width = readUInt16BE(this.data, pos);\n    pos += 2;\n\n    const channels = this.data[pos];\n    this.colorSpace = COLOR_SPACE_MAP[channels];\n\n    this.obj = null;\n  }\n\n  embed(document) {\n    if (this.obj) {\n      return;\n    }\n\n    this.obj = document.ref({\n      Type: 'XObject',\n      Subtype: 'Image',\n      BitsPerComponent: this.bits,\n      Width: this.width,\n      Height: this.height,\n      ColorSpace: this.colorSpace,\n      Filter: 'DCTDecode',\n    });\n\n    // add extra decode params for CMYK images. By swapping the\n    // min and max values from the default, we invert the colors. See\n    // section 4.8.4 of the spec.\n    if (this.colorSpace === 'DeviceCMYK') {\n      this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];\n    }\n\n    this.obj.end(this.data);\n\n    // free memory\n    return (this.data = null);\n  }\n}\n\nexport default JPEG;\n","import zlib from '#zlib';\nimport PNG from 'png-js';\n\nclass PNGImage {\n  constructor(data, label) {\n    this.label = label;\n    this.image = new PNG(data);\n    this.width = this.image.width;\n    this.height = this.image.height;\n    this.imgData = this.image.imgData;\n    this.obj = null;\n  }\n\n  embed(document) {\n    let dataDecoded = false;\n\n    this.document = document;\n    if (this.obj) {\n      return;\n    }\n\n    const { image, height, width } = this;\n\n    const hasAlphaChannel = image.hasAlphaChannel;\n    const isInterlaced = image.interlaceMethod === 1;\n\n    const obj = (this.obj = document.ref({\n      Type: 'XObject',\n      Subtype: 'Image',\n      BitsPerComponent: hasAlphaChannel ? 8 : image.bits,\n      Width: width,\n      Height: height,\n      Filter: 'FlateDecode',\n    }));\n\n    if (!hasAlphaChannel) {\n      const params = document.ref({\n        Predictor: isInterlaced ? 1 : 15,\n        Colors: image.colors,\n        BitsPerComponent: image.bits,\n        Columns: width,\n      });\n\n      obj.data['DecodeParms'] = params;\n      params.end();\n    }\n\n    if (image.palette.length === 0) {\n      obj.data['ColorSpace'] = image.colorSpace;\n    } else {\n      // embed the color palette in the PDF as an object stream\n      const palette = document.ref();\n      palette.end(new Uint8Array(image.palette));\n\n      // build the color space array for the image\n      obj.data['ColorSpace'] = [\n        'Indexed',\n        'DeviceRGB',\n        image.palette.length / 3 - 1,\n        palette,\n      ];\n    }\n\n    // For PNG color types 0, 2 and 3, the transparency data is stored in\n    // a dedicated PNG chunk.\n    if (image.transparency.grayscale != null) {\n      // Use Color Key Masking (spec section 4.8.5)\n      // An array with N elements, where N is two times the number of color components.\n      const val = image.transparency.grayscale;\n      obj.data['Mask'] = [val, val];\n    } else if (image.transparency.rgb) {\n      // Use Color Key Masking (spec section 4.8.5)\n      // An array with N elements, where N is two times the number of color components.\n      const { rgb } = image.transparency;\n      const mask = [];\n      for (let x of rgb) {\n        mask.push(x, x);\n      }\n\n      obj.data['Mask'] = mask;\n    } else if (image.transparency.indexed) {\n      // Create a transparency SMask for the image based on the data\n      // in the PLTE and tRNS sections. See below for details on SMasks.\n      return this.loadIndexedAlphaChannel();\n    } else if (hasAlphaChannel) {\n      // For PNG color types 4 and 6, the transparency data is stored as a alpha\n      // channel mixed in with the main image data. Separate this data out into an\n      // SMask object and store it separately in the PDF.\n      return this.splitAlphaChannel();\n    }\n\n    if (isInterlaced && !dataDecoded) {\n      return this.decodeData();\n    }\n\n    this.finalize();\n  }\n\n  finalize() {\n    if (this.alphaChannel) {\n      const sMask = this.document.ref({\n        Type: 'XObject',\n        Subtype: 'Image',\n        Height: this.height,\n        Width: this.width,\n        BitsPerComponent: 8,\n        Filter: 'FlateDecode',\n        ColorSpace: 'DeviceGray',\n        Decode: [0, 1],\n      });\n\n      sMask.end(this.alphaChannel);\n      this.obj.data['SMask'] = sMask;\n    }\n\n    // add the actual image data\n    this.obj.end(this.imgData);\n\n    // free memory\n    this.image = null;\n    return (this.imgData = null);\n  }\n\n  splitAlphaChannel() {\n    return this.image.decodePixels((pixels) => {\n      let a, p;\n      const colorCount = this.image.colors;\n      const pixelCount = this.width * this.height;\n      const imgData = new Uint8Array(pixelCount * colorCount);\n      const alphaChannel = new Uint8Array(pixelCount);\n\n      let i = (p = a = 0);\n      const len = pixels.length;\n      // For 16bit images copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first)\n      const skipByteCount = this.image.bits === 16 ? 1 : 0;\n      while (i < len) {\n        for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) {\n          imgData[p++] = pixels[i++];\n          i += skipByteCount;\n        }\n        alphaChannel[a++] = pixels[i++];\n        i += skipByteCount;\n      }\n\n      this.imgData = zlib.deflateSync(imgData);\n      this.alphaChannel = zlib.deflateSync(alphaChannel);\n      return this.finalize();\n    });\n  }\n\n  loadIndexedAlphaChannel() {\n    const transparency = this.image.transparency.indexed;\n    const isInterlaced = this.image.interlaceMethod === 1;\n    return this.image.decodePixels((pixels) => {\n      const alphaChannel = new Uint8Array(this.width * this.height);\n\n      let i = 0;\n      for (let j = 0, end = pixels.length; j < end; j++) {\n        alphaChannel[i++] = transparency[pixels[j]];\n      }\n\n      // For interlaced images, re-encode the decoded pixel data\n      if (isInterlaced) {\n        this.imgData = zlib.deflateSync(pixels);\n      }\n\n      this.alphaChannel = zlib.deflateSync(alphaChannel);\n      return this.finalize();\n    });\n  }\n\n  decodeData() {\n    this.image.decodePixels((pixels) => {\n      this.imgData = zlib.deflateSync(pixels);\n      this.finalize();\n    });\n  }\n}\n\nexport default PNGImage;\n","/*\nPDFImage - embeds images in PDF documents\nBy Devon Govett\n*/\n\nimport fs from '#fs';\nimport { fromBase64 } from './binary';\nimport JPEG from './image/jpeg';\nimport PNG from './image/png';\n\nclass PDFImage {\n  static open(src, label) {\n    let data;\n    if (src instanceof Uint8Array) {\n      data = src;\n    } else if (src instanceof ArrayBuffer) {\n      data = new Uint8Array(src);\n    } else {\n      const match = /^data:.+?;base64,(.*)$/.exec(src);\n      if (match) {\n        data = fromBase64(match[1]);\n      } else {\n        data = fs.readFileSync(src);\n        if (!data) {\n          return;\n        }\n      }\n    }\n\n    if (data[0] === 0xff && data[1] === 0xd8) {\n      return new JPEG(data, label);\n    } else if (\n      data[0] === 0x89 &&\n      data[1] === 0x50 &&\n      data[2] === 0x4e &&\n      data[3] === 0x47\n    ) {\n      return new PNG(data, label);\n    } else {\n      throw new Error('Unknown image format.');\n    }\n  }\n}\n\nexport default PDFImage;\n","import PDFImage from '../image';\n\nexport default {\n  initImages() {\n    this._imageRegistry = {};\n    this._imageCount = 0;\n  },\n\n  image(src, x, y, options = {}) {\n    let bh, bp, bw, image, ip, left, left1, originX, originY;\n    if (typeof x === 'object') {\n      options = x;\n      x = null;\n    }\n\n    // Ignore orientation based on document options or image options\n    const ignoreOrientation =\n      options.ignoreOrientation ||\n      (options.ignoreOrientation !== false && this.options.ignoreOrientation);\n\n    const inDocumentFlow = typeof y !== 'number';\n\n    x = (left = x != null ? x : options.x) != null ? left : this.x;\n    y = (left1 = y != null ? y : options.y) != null ? left1 : this.y;\n\n    if (typeof src === 'string') {\n      image = this._imageRegistry[src];\n    }\n\n    if (!image) {\n      if (src.width && src.height) {\n        image = src;\n      } else {\n        image = this.openImage(src);\n      }\n    }\n\n    if (!image.obj) {\n      image.embed(this);\n    }\n\n    if (this.page.xobjects[image.label] == null) {\n      this.page.xobjects[image.label] = image.obj;\n    }\n\n    let { width, height } = image;\n\n    // If EXIF orientation calls for it, swap width and height\n    if (!ignoreOrientation && image.orientation > 4) {\n      [width, height] = [height, width];\n    }\n\n    let w = options.width || width;\n    let h = options.height || height;\n\n    if (options.width && !options.height) {\n      const wp = w / width;\n      w = width * wp;\n      h = height * wp;\n    } else if (options.height && !options.width) {\n      const hp = h / height;\n      w = width * hp;\n      h = height * hp;\n    } else if (options.scale) {\n      w = width * options.scale;\n      h = height * options.scale;\n    } else if (options.fit) {\n      [bw, bh] = options.fit;\n      bp = bw / bh;\n      ip = width / height;\n      if (ip > bp) {\n        w = bw;\n        h = bw / ip;\n      } else {\n        h = bh;\n        w = bh * ip;\n      }\n    } else if (options.cover) {\n      [bw, bh] = options.cover;\n      bp = bw / bh;\n      ip = width / height;\n      if (ip > bp) {\n        h = bh;\n        w = bh * ip;\n      } else {\n        w = bw;\n        h = bw / ip;\n      }\n    }\n\n    if (options.fit || options.cover) {\n      if (options.align === 'center') {\n        x = x + bw / 2 - w / 2;\n      } else if (options.align === 'right') {\n        x = x + bw - w;\n      }\n\n      if (options.valign === 'center') {\n        y = y + bh / 2 - h / 2;\n      } else if (options.valign === 'bottom') {\n        y = y + bh - h;\n      }\n    }\n\n    // need to flip image by default because of the default transform matrix on the document\n    let rotateAngle = 0;\n    let xTransform = x;\n    let yTransform = y;\n    let hTransform = h;\n    let wTransform = w;\n\n    if (!ignoreOrientation) {\n      switch (image.orientation) {\n        // No orientation (need to flip image, though, because of the default transform matrix on the document)\n        default:\n        case 1:\n          hTransform = -h;\n          yTransform += h;\n\n          break;\n        // Flip Horizontal\n        case 2:\n          wTransform = -w;\n          hTransform = -h;\n          xTransform += w;\n          yTransform += h;\n\n          break;\n        // Rotate 180 degrees\n        case 3:\n          originX = x;\n          originY = y;\n\n          hTransform = -h;\n          xTransform -= w;\n\n          rotateAngle = 180;\n          break;\n        // Flip vertical\n        case 4:\n          // Do nothing, image will be flipped\n\n          break;\n        // Flip horizontally and rotate 270 degrees CW\n        case 5:\n          originX = x;\n          originY = y;\n\n          wTransform = h;\n          hTransform = w;\n          yTransform -= hTransform;\n\n          rotateAngle = 90;\n          break;\n        // Rotate 90 degrees CW\n        case 6:\n          originX = x;\n          originY = y;\n\n          wTransform = h;\n          hTransform = -w;\n\n          rotateAngle = 90;\n          break;\n        // Flip horizontally and rotate 90 degrees CW\n        case 7:\n          originX = x;\n          originY = y;\n\n          hTransform = -w;\n          wTransform = -h;\n          xTransform += h;\n\n          rotateAngle = 90;\n          break;\n        // Rotate 270 degrees CW\n        case 8:\n          originX = x;\n          originY = y;\n\n          wTransform = h;\n          hTransform = -w;\n          xTransform -= h;\n          yTransform += w;\n\n          rotateAngle = -90;\n          break;\n      }\n    } else {\n      hTransform = -h;\n      yTransform += h;\n    }\n\n    // create link annotations if the link option is given\n    if (options.link != null) {\n      this.link(x, y, w, h, options.link);\n    }\n    if (options.goTo != null) {\n      this.goTo(x, y, w, h, options.goTo);\n    }\n    if (options.destination != null) {\n      this.addNamedDestination(options.destination, 'XYZ', x, y, null);\n    }\n\n    // Set the current y position to below the image if it is in the document flow\n    if (inDocumentFlow) {\n      this.y += h;\n    }\n\n    this.save();\n\n    if (options.opacity != null) {\n      this._doOpacity(options.opacity, null);\n    }\n\n    if (rotateAngle) {\n      this.rotate(rotateAngle, {\n        origin: [originX, originY],\n      });\n    }\n\n    this.transform(wTransform, 0, 0, hTransform, xTransform, yTransform);\n    this.addContent(`/${image.label} Do`);\n    this.restore();\n\n    return this;\n  },\n\n  openImage(src) {\n    let image;\n    if (typeof src === 'string') {\n      image = this._imageRegistry[src];\n    }\n\n    if (!image) {\n      image = PDFImage.open(src, `I${++this._imageCount}`);\n      if (typeof src === 'string') {\n        this._imageRegistry[src] = image;\n      }\n    }\n\n    return image;\n  },\n};\n","class PDFAnnotationReference {\n  constructor(annotationRef) {\n    this.annotationRef = annotationRef;\n  }\n}\n\nexport default PDFAnnotationReference;\n","import PDFAnnotationReference from '../structure_annotation';\n\nexport default {\n  annotate(x, y, w, h, options) {\n    const { structParent, color, ...annotations } = options;\n    annotations.Type = 'Annot';\n    annotations.Rect = this._convertRect(x, y, w, h);\n    annotations.Border = [0, 0, 0];\n\n    if (\n      annotations.Subtype === 'Link' &&\n      typeof annotations.F === 'undefined'\n    ) {\n      annotations.F = 1 << 2; // Print Annotation Flag\n    }\n\n    if (annotations.Subtype !== 'Link') {\n      if (annotations.C == null) {\n        annotations.C = this._normalizeColor(color || [0, 0, 0]);\n      }\n    }\n\n    if (typeof annotations.Dest === 'string') {\n      annotations.Dest = new String(annotations.Dest);\n    }\n\n    const ref = this.ref(annotations);\n    this.page.annotations.push(ref);\n\n    if (typeof structParent?.add === 'function') {\n      const annotRef = new PDFAnnotationReference(ref);\n      structParent.add(annotRef);\n    }\n\n    ref.end();\n    return this;\n  },\n\n  note(x, y, w, h, contents, options) {\n    const annotationOptions = {\n      ...options,\n      Subtype: 'Text',\n      Contents: new String(contents),\n    };\n    if (annotationOptions.Name == null) {\n      annotationOptions.Name = 'Comment';\n    }\n    if (annotationOptions.color == null) {\n      annotationOptions.color = [243, 223, 92];\n    }\n\n    return this.annotate(x, y, w, h, annotationOptions);\n  },\n\n  goTo(x, y, w, h, name, options) {\n    const annotateOptions = {\n      ...options,\n      Subtype: 'Link',\n      A: this.ref({ S: 'GoTo', D: new String(name) }),\n    };\n    annotateOptions.A.end();\n    return this.annotate(x, y, w, h, annotateOptions);\n  },\n\n  link(x, y, w, h, url, options) {\n    const annotateOptions = { ...options, Subtype: 'Link' };\n\n    if (typeof url === 'number') {\n      // Link to a page in the document (the page must already exist)\n      const pages = this._root.data.Pages.data;\n      if (url >= 0 && url < pages.Kids.length) {\n        annotateOptions.A = this.ref({\n          S: 'GoTo',\n          D: [pages.Kids[url], 'XYZ', null, null, null],\n        });\n        annotateOptions.A.end();\n      } else {\n        throw new Error(`The document has no page ${url}`);\n      }\n    } else {\n      // Link to an external url\n      annotateOptions.A = this.ref({\n        S: 'URI',\n        URI: new String(url),\n      });\n      annotateOptions.A.end();\n    }\n\n    if (annotateOptions.structParent && !annotateOptions.Contents) {\n      annotateOptions.Contents = new String('');\n    }\n\n    return this.annotate(x, y, w, h, annotateOptions);\n  },\n\n  _markup(x, y, w, h, options) {\n    const [x1, y1, x2, y2] = this._convertRect(x, y, w, h);\n    return this.annotate(x, y, w, h, {\n      ...options,\n      QuadPoints: [x1, y2, x2, y2, x1, y1, x2, y1],\n      Contents: new String(),\n    });\n  },\n\n  highlight(x, y, w, h, options) {\n    const annotationOptions = { ...options, Subtype: 'Highlight' };\n    if (annotationOptions.color == null) {\n      annotationOptions.color = [241, 238, 148];\n    }\n    return this._markup(x, y, w, h, annotationOptions);\n  },\n\n  underline(x, y, w, h, options) {\n    const annotationOptions = { ...options, Subtype: 'Underline' };\n    return this._markup(x, y, w, h, annotationOptions);\n  },\n\n  strike(x, y, w, h, options) {\n    const annotationOptions = { ...options, Subtype: 'StrikeOut' };\n    return this._markup(x, y, w, h, annotationOptions);\n  },\n\n  lineAnnotation(x1, y1, x2, y2, options) {\n    const annotationOptions = {\n      ...options,\n      Subtype: 'Line',\n      Contents: new String(),\n      L: [x1, this.page.height - y1, x2, this.page.height - y2],\n    };\n    return this.annotate(x1, y1, x2, y2, annotationOptions);\n  },\n\n  rectAnnotation(x, y, w, h, options) {\n    const annotationOptions = {\n      ...options,\n      Subtype: 'Square',\n      Contents: new String(),\n    };\n    return this.annotate(x, y, w, h, annotationOptions);\n  },\n\n  ellipseAnnotation(x, y, w, h, options) {\n    const annotationOptions = {\n      ...options,\n      Subtype: 'Circle',\n      Contents: new String(),\n    };\n    return this.annotate(x, y, w, h, annotationOptions);\n  },\n\n  textAnnotation(x, y, w, h, text, options) {\n    const annotationOptions = {\n      ...options,\n      Subtype: 'FreeText',\n      Contents: new String(text),\n      DA: new String(),\n    };\n    return this.annotate(x, y, w, h, annotationOptions);\n  },\n\n  fileAnnotation(x, y, w, h, file = {}, options) {\n    // create hidden file\n    const filespec = this.file(file.src, Object.assign({ hidden: true }, file));\n\n    const annotationOptions = {\n      ...options,\n      Subtype: 'FileAttachment',\n      FS: filespec,\n    };\n\n    // add description from filespec unless description (Contents) has already been set\n    if (annotationOptions.Contents) {\n      annotationOptions.Contents = new String(annotationOptions.Contents);\n    } else if (filespec.data.Desc) {\n      annotationOptions.Contents = new String(filespec.data.Desc);\n    }\n\n    return this.annotate(x, y, w, h, annotationOptions);\n  },\n\n  _convertRect(x1, y1, w, h) {\n    // flip y1 and y2\n    let y2 = y1;\n    y1 += h;\n\n    // make x2\n    let x2 = x1 + w;\n\n    // apply current transformation matrix to points\n    const [m0, m1, m2, m3, m4, m5] = this._ctm;\n    x1 = m0 * x1 + m2 * y1 + m4;\n    y1 = m1 * x1 + m3 * y1 + m5;\n    x2 = m0 * x2 + m2 * y2 + m4;\n    y2 = m1 * x2 + m3 * y2 + m5;\n\n    return [x1, y1, x2, y2];\n  },\n};\n","const DEFAULT_OPTIONS = {\n  top: 0,\n  left: 0,\n  zoom: 0,\n  fit: true, // Default to Fit for backward compatibility\n  pageNumber: null,\n  expanded: false,\n};\n\nclass PDFOutline {\n  constructor(document, parent, title, dest, options = DEFAULT_OPTIONS) {\n    this.document = document;\n    this.options = options;\n    this.outlineData = {};\n\n    if (dest !== null) {\n      const destWidth = dest.data.MediaBox[2];\n      const destHeight = dest.data.MediaBox[3];\n      const top = destHeight - (options.top || 0);\n      const left = destWidth - (options.left || 0);\n      const zoom = options.zoom || 0;\n\n      this.outlineData['Dest'] = options.fit\n        ? [dest, 'Fit']\n        : [dest, 'XYZ', left, top, zoom];\n    }\n\n    if (parent !== null) {\n      this.outlineData['Parent'] = parent;\n    }\n\n    if (title !== null) {\n      this.outlineData['Title'] = new String(title);\n    }\n\n    this.dictionary = this.document.ref(this.outlineData);\n    this.children = [];\n  }\n\n  addItem(title, options = DEFAULT_OPTIONS) {\n    const pages = this.document._root.data.Pages.data.Kids;\n    const dest =\n      options.pageNumber != null\n        ? pages[options.pageNumber]\n        : this.document.page.dictionary;\n\n    const result = new PDFOutline(\n      this.document,\n      this.dictionary,\n      title,\n      dest,\n      options,\n    );\n    this.children.push(result);\n\n    return result;\n  }\n\n  endOutline() {\n    if (this.children.length > 0) {\n      if (this.options.expanded) {\n        this.outlineData.Count = this.children.length;\n      }\n\n      const first = this.children[0],\n        last = this.children[this.children.length - 1];\n      this.outlineData.First = first.dictionary;\n      this.outlineData.Last = last.dictionary;\n\n      for (let i = 0, len = this.children.length; i < len; i++) {\n        const child = this.children[i];\n        if (i > 0) {\n          child.outlineData.Prev = this.children[i - 1].dictionary;\n        }\n        if (i < this.children.length - 1) {\n          child.outlineData.Next = this.children[i + 1].dictionary;\n        }\n        child.endOutline();\n      }\n    }\n\n    return this.dictionary.end();\n  }\n}\n\nexport default PDFOutline;\n","import PDFOutline from '../outline';\n\nexport default {\n  initOutline() {\n    this.outline = new PDFOutline(this, null, null, null);\n  },\n\n  endOutline() {\n    this.outline.endOutline();\n    if (this.outline.children.length > 0) {\n      this._root.data.Outlines = this.outline.dictionary;\n      return (this._root.data.PageMode =\n        this._root.data.PageMode || 'UseOutlines');\n    }\n  },\n};\n","/*\nPDFStructureContent - a reference to a marked structure content\nBy Ben Schmidt\n*/\n\nclass PDFStructureContent {\n  constructor(pageRef, mcid) {\n    this.refs = [{ pageRef, mcid }];\n  }\n\n  push(structContent) {\n    structContent.refs.forEach((ref) => this.refs.push(ref));\n  }\n}\n\nexport default PDFStructureContent;\n","/*\nPDFStructureElement - represents an element in the PDF logical structure tree\nBy Ben Schmidt\n*/\n\nimport PDFStructureContent from './structure_content';\nimport PDFAnnotationReference from './structure_annotation';\n\nclass PDFStructureElement {\n  constructor(document, type, options = {}, children = null) {\n    this.document = document;\n\n    this._attached = false;\n    this._ended = false;\n    this._flushed = false;\n    this.dictionary = document.ref({\n      // Type: \"StructElem\",\n      S: type,\n    });\n\n    const data = this.dictionary.data;\n\n    if (Array.isArray(options) || this._isValidChild(options)) {\n      children = options;\n      options = {};\n    }\n\n    if (options.title) {\n      data.T = new String(options.title);\n    }\n    if (options.lang) {\n      data.Lang = new String(options.lang);\n    }\n    if (options.alt) {\n      data.Alt = new String(options.alt);\n    }\n    if (options.expanded) {\n      data.E = new String(options.expanded);\n    }\n    if (options.actual) {\n      data.ActualText = new String(options.actual);\n    }\n\n    const hasBbox = Array.isArray(options.bbox) && options.bbox.length === 4;\n    const hasPlacement = typeof options.placement === 'string';\n    if (hasBbox || hasPlacement) {\n      const attrs = { O: 'Layout' };\n      attrs.Placement = hasPlacement ? options.placement : 'Block';\n      if (hasBbox) {\n        const height = document.page.height;\n        attrs.BBox = [\n          options.bbox[0],\n          height - options.bbox[3],\n          options.bbox[2],\n          height - options.bbox[1],\n        ];\n      }\n      data.A = attrs;\n    }\n\n    if (options.scope) {\n      data.A = {\n        ...(data.A || {}),\n        O: 'Table',\n        Scope: options.scope,\n      };\n    }\n\n    this._children = [];\n\n    if (children) {\n      if (!Array.isArray(children)) {\n        children = [children];\n      }\n      children.forEach((child) => this.add(child));\n      this.end();\n    }\n  }\n\n  add(child) {\n    if (this._ended) {\n      throw new Error(`Cannot add child to already-ended structure element`);\n    }\n\n    if (!this._isValidChild(child)) {\n      throw new Error(`Invalid structure element child`);\n    }\n\n    if (child instanceof PDFStructureElement) {\n      child.setParent(this.dictionary);\n      if (this._attached) {\n        child.setAttached();\n      }\n    }\n\n    if (child instanceof PDFStructureContent) {\n      this._addContentToParentTree(child);\n    }\n\n    if (child instanceof PDFAnnotationReference) {\n      this._addAnnotationToParentTree(child.annotationRef);\n    }\n\n    if (typeof child === 'function' && this._attached) {\n      // _contentForClosure() adds the content to the parent tree\n      child = this._contentForClosure(child);\n    }\n\n    this._children.push(child);\n\n    return this;\n  }\n\n  _addContentToParentTree(content) {\n    content.refs.forEach(({ pageRef, mcid }) => {\n      const pageStructParents = this.document\n        .getStructParentTree()\n        .get(pageRef.data.StructParents);\n      pageStructParents[mcid] = this.dictionary;\n    });\n  }\n\n  _addAnnotationToParentTree(annotRef) {\n    const parentTreeKey = this.document.createStructParentTreeNextKey();\n\n    annotRef.data.StructParent = parentTreeKey;\n\n    const parentTree = this.document.getStructParentTree();\n    parentTree.add(parentTreeKey, this.dictionary);\n  }\n\n  setParent(parentRef) {\n    if (this.dictionary.data.P) {\n      throw new Error(`Structure element added to more than one parent`);\n    }\n\n    this.dictionary.data.P = parentRef;\n\n    this._flush();\n  }\n\n  setAttached() {\n    if (this._attached) {\n      return;\n    }\n\n    this._children.forEach((child, index) => {\n      if (child instanceof PDFStructureElement) {\n        child.setAttached();\n      }\n      if (typeof child === 'function') {\n        this._children[index] = this._contentForClosure(child);\n      }\n    });\n\n    this._attached = true;\n\n    this._flush();\n  }\n\n  end() {\n    if (this._ended) {\n      return;\n    }\n\n    this._children\n      .filter((child) => child instanceof PDFStructureElement)\n      .forEach((child) => child.end());\n\n    this._ended = true;\n\n    this._flush();\n  }\n\n  _isValidChild(child) {\n    return (\n      child instanceof PDFStructureElement ||\n      child instanceof PDFStructureContent ||\n      child instanceof PDFAnnotationReference ||\n      typeof child === 'function'\n    );\n  }\n\n  _contentForClosure(closure) {\n    const content = this.document.markStructureContent(this.dictionary.data.S);\n\n    const prevStructElement = this.document._currentStructureElement;\n    this.document._currentStructureElement = this;\n\n    const wasEnded = this._ended;\n    this._ended = false;\n\n    closure();\n\n    this._ended = wasEnded;\n\n    this.document._currentStructureElement = prevStructElement;\n    this.document.endMarkedContent();\n\n    this._addContentToParentTree(content);\n\n    return content;\n  }\n\n  _isFlushable() {\n    if (!this.dictionary.data.P || !this._ended) {\n      return false;\n    }\n\n    return this._children.every((child) => {\n      if (typeof child === 'function') {\n        return false;\n      }\n      if (child instanceof PDFStructureElement) {\n        return child._isFlushable();\n      }\n      return true;\n    });\n  }\n\n  _flush() {\n    if (this._flushed || !this._isFlushable()) {\n      return;\n    }\n\n    this.dictionary.data.K = [];\n\n    this._children.forEach((child) => this._flushChild(child));\n\n    this.dictionary.end();\n\n    // free memory used by children; the dictionary itself may still be\n    // referenced by a parent structure element or root, but we can\n    // at least trim the tree here\n    this._children = [];\n    this.dictionary.data.K = null;\n\n    this._flushed = true;\n  }\n\n  _flushChild(child) {\n    if (child instanceof PDFStructureElement) {\n      this.dictionary.data.K.push(child.dictionary);\n    }\n\n    if (child instanceof PDFStructureContent) {\n      child.refs.forEach(({ pageRef, mcid }) => {\n        if (!this.dictionary.data.Pg) {\n          this.dictionary.data.Pg = pageRef;\n        }\n\n        if (this.dictionary.data.Pg === pageRef) {\n          this.dictionary.data.K.push(mcid);\n        } else {\n          this.dictionary.data.K.push({\n            Type: 'MCR',\n            Pg: pageRef,\n            MCID: mcid,\n          });\n        }\n      });\n    }\n\n    if (child instanceof PDFAnnotationReference) {\n      const pageRef = this.document.page.dictionary;\n      const objr = {\n        Type: 'OBJR',\n        Obj: child.annotationRef,\n        Pg: pageRef,\n      };\n      this.dictionary.data.K.push(objr);\n    }\n  }\n}\n\nexport default PDFStructureElement;\n","/*\nPDFNumberTree - represents a number tree object\n*/\n\nimport PDFTree from './tree';\n\nclass PDFNumberTree extends PDFTree {\n  _compareKeys(a, b) {\n    return parseInt(a) - parseInt(b);\n  }\n\n  _keysName() {\n    return 'Nums';\n  }\n\n  _dataForKey(k) {\n    return parseInt(k);\n  }\n}\n\nexport default PDFNumberTree;\n","/*\nMarkings mixin - support marked content sequences in content streams\nBy Ben Schmidt\n*/\n\nimport PDFStructureElement from '../structure_element';\nimport PDFStructureContent from '../structure_content';\nimport PDFNumberTree from '../number_tree';\nimport PDFObject from '../object';\n\nexport default {\n  initMarkings(options) {\n    this.structChildren = [];\n\n    if (options.tagged) {\n      this.getMarkInfoDictionary().data.Marked = true;\n      this.getStructTreeRoot();\n    }\n  },\n\n  markContent(tag, options = null) {\n    if (tag === 'Artifact' || (options && options.mcid)) {\n      let toClose = 0;\n      this.page.markings.forEach((marking) => {\n        if (toClose || marking.structContent || marking.tag === 'Artifact') {\n          toClose++;\n        }\n      });\n      while (toClose--) {\n        this.endMarkedContent();\n      }\n    }\n\n    if (!options) {\n      this.page.markings.push({ tag });\n      this.addContent(`/${tag} BMC`);\n      return this;\n    }\n\n    this.page.markings.push({ tag, options });\n\n    const dictionary = {};\n\n    if (typeof options.mcid !== 'undefined') {\n      dictionary.MCID = options.mcid;\n    }\n    if (tag === 'Artifact') {\n      if (typeof options.type === 'string') {\n        dictionary.Type = options.type;\n      }\n      if (Array.isArray(options.bbox)) {\n        dictionary.BBox = [\n          options.bbox[0],\n          this.page.height - options.bbox[3],\n          options.bbox[2],\n          this.page.height - options.bbox[1],\n        ];\n      }\n      if (\n        Array.isArray(options.attached) &&\n        options.attached.every((val) => typeof val === 'string')\n      ) {\n        dictionary.Attached = options.attached;\n      }\n    }\n    if (tag === 'Span') {\n      if (options.lang) {\n        dictionary.Lang = new String(options.lang);\n      }\n      if (options.alt) {\n        dictionary.Alt = new String(options.alt);\n      }\n      if (options.expanded) {\n        dictionary.E = new String(options.expanded);\n      }\n      if (options.actual) {\n        dictionary.ActualText = new String(options.actual);\n      }\n    }\n\n    this.addContent(`/${tag} ${PDFObject.convert(dictionary)} BDC`);\n    return this;\n  },\n\n  markStructureContent(tag, options = {}) {\n    const pageStructParents = this.getStructParentTree().get(\n      this.page.structParentTreeKey,\n    );\n    const mcid = pageStructParents.length;\n    pageStructParents.push(null);\n\n    this.markContent(tag, { ...options, mcid });\n\n    const structContent = new PDFStructureContent(this.page.dictionary, mcid);\n    this.page.markings.slice(-1)[0].structContent = structContent;\n    return structContent;\n  },\n\n  endMarkedContent() {\n    this.page.markings.pop();\n    this.addContent('EMC');\n    if (this._textOptions) {\n      delete this._textOptions.link;\n      delete this._textOptions.goTo;\n      delete this._textOptions.destination;\n      delete this._textOptions.underline;\n      delete this._textOptions.strike;\n    }\n    return this;\n  },\n\n  struct(type, options = {}, children = null) {\n    return new PDFStructureElement(this, type, options, children);\n  },\n\n  addStructure(structElem) {\n    const structTreeRoot = this.getStructTreeRoot();\n    structElem.setParent(structTreeRoot);\n    structElem.setAttached();\n    this.structChildren.push(structElem);\n    if (!structTreeRoot.data.K) {\n      structTreeRoot.data.K = [];\n    }\n    structTreeRoot.data.K.push(structElem.dictionary);\n    return this;\n  },\n\n  initPageMarkings(pageMarkings) {\n    pageMarkings.forEach((marking) => {\n      if (marking.structContent) {\n        const structContent = marking.structContent;\n        const newStructContent = this.markStructureContent(\n          marking.tag,\n          marking.options,\n        );\n        structContent.push(newStructContent);\n        this.page.markings.slice(-1)[0].structContent = structContent;\n      } else {\n        this.markContent(marking.tag, marking.options);\n      }\n    });\n  },\n\n  endPageMarkings(page) {\n    const pageMarkings = page.markings;\n    pageMarkings.forEach(() => page.write('EMC'));\n    page.markings = [];\n    return pageMarkings;\n  },\n\n  getMarkInfoDictionary() {\n    if (!this._root.data.MarkInfo) {\n      this._root.data.MarkInfo = this.ref({});\n    }\n    return this._root.data.MarkInfo;\n  },\n\n  hasMarkInfoDictionary() {\n    return !!this._root.data.MarkInfo;\n  },\n\n  getStructTreeRoot() {\n    if (!this._root.data.StructTreeRoot) {\n      this._root.data.StructTreeRoot = this.ref({\n        Type: 'StructTreeRoot',\n        ParentTree: new PDFNumberTree(),\n        ParentTreeNextKey: 0,\n      });\n    }\n    return this._root.data.StructTreeRoot;\n  },\n\n  getStructParentTree() {\n    return this.getStructTreeRoot().data.ParentTree;\n  },\n\n  createStructParentTreeNextKey() {\n    // initialise the MarkInfo dictionary\n    this.getMarkInfoDictionary();\n\n    const structTreeRoot = this.getStructTreeRoot();\n    const key = structTreeRoot.data.ParentTreeNextKey++;\n    structTreeRoot.data.ParentTree.add(key, []);\n    return key;\n  },\n\n  endMarkings() {\n    const structTreeRoot = this._root.data.StructTreeRoot;\n    if (structTreeRoot) {\n      structTreeRoot.end();\n      this.structChildren.forEach((structElem) => structElem.end());\n    }\n    if (this._root.data.MarkInfo) {\n      this._root.data.MarkInfo.end();\n    }\n  },\n};\n","const FIELD_FLAGS = {\n  readOnly: 1,\n  required: 2,\n  noExport: 4,\n  multiline: 0x1000,\n  password: 0x2000,\n  toggleToOffButton: 0x4000,\n  radioButton: 0x8000,\n  pushButton: 0x10000,\n  combo: 0x20000,\n  edit: 0x40000,\n  sort: 0x80000,\n  multiSelect: 0x200000,\n  noSpell: 0x400000,\n};\nconst FIELD_JUSTIFY = {\n  left: 0,\n  center: 1,\n  right: 2,\n};\nconst VALUE_MAP = { value: 'V', defaultValue: 'DV' };\nconst FORMAT_SPECIAL = {\n  zip: '0',\n  zipPlus4: '1',\n  zip4: '1',\n  phone: '2',\n  ssn: '3',\n};\nconst FORMAT_DEFAULT = {\n  number: {\n    nDec: 0,\n    sepComma: false,\n    negStyle: 'MinusBlack',\n    currency: '',\n    currencyPrepend: true,\n  },\n  percent: {\n    nDec: 0,\n    sepComma: false,\n  },\n};\n\nfunction mapTypeAndFlags(type, userOptions, pdfObject) {\n  let flags = userOptions.Ff ?? 0;\n\n  if (type === 'text') {\n    pdfObject.FT = 'Tx';\n  } else if (type === 'pushButton') {\n    pdfObject.FT = 'Btn';\n    flags |= FIELD_FLAGS.pushButton;\n  } else if (type === 'radioButton') {\n    pdfObject.FT = 'Btn';\n    flags |= FIELD_FLAGS.radioButton;\n  } else if (type === 'checkbox') {\n    pdfObject.FT = 'Btn';\n  } else if (type === 'combo') {\n    pdfObject.FT = 'Ch';\n    flags |= FIELD_FLAGS.combo;\n  } else if (type === 'list') {\n    pdfObject.FT = 'Ch';\n  } else if (type) {\n    throw new Error(`Invalid form annotation type '${type}'`);\n  }\n\n  Object.keys(userOptions).forEach((key) => {\n    if (FIELD_FLAGS[key] && userOptions[key]) {\n      flags |= FIELD_FLAGS[key];\n    }\n  });\n\n  if (flags !== 0) {\n    pdfObject.Ff = flags;\n  }\n}\n\nfunction mapJustify(userOptions, pdfObject) {\n  const result = FIELD_JUSTIFY[userOptions.align];\n  if (typeof result === 'number' && result !== 0) {\n    pdfObject.Q = result;\n  }\n}\n\nfunction mapStrings(options, pdfObject) {\n  if (Array.isArray(options.select) && options.select.length) {\n    pdfObject.Opt = options.select.map((s) => {\n      if (typeof s === 'string') {\n        return new String(s);\n      }\n      return s;\n    });\n  }\n\n  Object.keys(VALUE_MAP).forEach((key) => {\n    if (key in options) {\n      const value = options[key] ?? '';\n      pdfObject[VALUE_MAP[key]] =\n        typeof value === 'string' ? new String(value) : value;\n    }\n  });\n\n  if (options.MK?.CA) {\n    pdfObject.MK = { CA: new String(options.MK.CA) };\n  }\n\n  if (options.label) {\n    pdfObject.MK = options.MK ?? {};\n    pdfObject.MK.CA = new String(options.label);\n  }\n}\n\nfunction mapFormat(options, pdfObject) {\n  const f = options.format;\n  if (f?.type) {\n    let fnKeystroke;\n    let fnFormat;\n    let params = '';\n    if (FORMAT_SPECIAL[f.type] !== undefined) {\n      fnKeystroke = `AFSpecial_Keystroke`;\n      fnFormat = `AFSpecial_Format`;\n      params = FORMAT_SPECIAL[f.type];\n    } else {\n      let format = f.type.charAt(0).toUpperCase() + f.type.slice(1);\n      fnKeystroke = `AF${format}_Keystroke`;\n      fnFormat = `AF${format}_Format`;\n\n      if (f.type === 'date') {\n        // the Ex variants take the format as a string, where the plain ones\n        // take an index into Acrobat's predefined formats\n        fnKeystroke += 'Ex';\n        fnFormat += 'Ex';\n        params = '\"' + String(f.param) + '\"';\n      } else if (f.type === 'time') {\n        params = String(f.param);\n      } else if (f.type === 'number') {\n        let p = Object.assign({}, FORMAT_DEFAULT.number, f);\n        params = String(\n          [\n            String(p.nDec),\n            p.sepComma ? '0' : '1',\n            '\"' + p.negStyle + '\"',\n            'null',\n            '\"' + p.currency + '\"',\n            String(p.currencyPrepend),\n          ].join(','),\n        );\n      } else if (f.type === 'percent') {\n        let p = Object.assign({}, FORMAT_DEFAULT.percent, f);\n        params = String([String(p.nDec), p.sepComma ? '0' : '1'].join(','));\n      }\n    }\n    pdfObject.AA = options.AA ?? {};\n    pdfObject.AA.K = {\n      S: 'JavaScript',\n      JS: new String(`${fnKeystroke}(${params});`),\n    };\n    pdfObject.AA.F = {\n      S: 'JavaScript',\n      JS: new String(`${fnFormat}(${params});`),\n    };\n  }\n}\n\nexport default {\n  /**\n   * Must call if adding AcroForms to a document. Must also call font() before\n   * this method to set the default font.\n   */\n  initForm() {\n    if (!this._font) {\n      throw new Error('Must set a font before calling initForm method');\n    }\n    this._acroform = {\n      fonts: {},\n      defaultFont: this._font.name,\n    };\n    this._acroform.fonts[this._font.id] = this._font.ref();\n\n    let data = {\n      Fields: [],\n      NeedAppearances: true,\n      DA: new String(`/${this._font.id} 0 Tf 0 g`),\n      DR: {\n        Font: {},\n      },\n    };\n    data.DR.Font[this._font.id] = this._font.ref();\n    const AcroForm = this.ref(data);\n    this._root.data.AcroForm = AcroForm;\n    return this;\n  },\n\n  /**\n   * Called automatically by document.js\n   */\n  endAcroForm() {\n    if (this._root.data.AcroForm) {\n      if (\n        !Object.keys(this._acroform.fonts).length &&\n        !this._acroform.defaultFont\n      ) {\n        throw new Error('No fonts specified for PDF form');\n      }\n      let fontDict = this._root.data.AcroForm.data.DR.Font;\n      Object.keys(this._acroform.fonts).forEach((name) => {\n        fontDict[name] = this._acroform.fonts[name];\n      });\n      this._root.data.AcroForm.data.Fields.forEach((fieldRef) => {\n        this._endChild(fieldRef);\n      });\n      this._root.data.AcroForm.end();\n    }\n    return this;\n  },\n\n  _endChild(ref) {\n    if (Array.isArray(ref.data.Kids)) {\n      ref.data.Kids.forEach((childRef) => {\n        this._endChild(childRef);\n      });\n      ref.end();\n    }\n    return this;\n  },\n\n  /**\n   * Creates and adds a form field to the document. Form fields are intermediate\n   * nodes in a PDF form that are used to specify form name heirarchy and form\n   * value defaults.\n   * @param {string} name - field name (T attribute in field dictionary)\n   * @param {object} options  - other attributes to include in field dictionary\n   */\n  formField(name, options = {}) {\n    let fieldDict = this._fieldDict(name, null, options);\n    let fieldRef = this.ref(fieldDict);\n    this._addToParent(fieldRef);\n    return fieldRef;\n  },\n\n  /**\n   * Creates and adds a Form Annotation to the document. Form annotations are\n   * called Widget annotations internally within a PDF file.\n   * @param {string} name - form field name (T attribute of widget annotation\n   * dictionary)\n   * @param {number} x\n   * @param {number} y\n   * @param {number} w\n   * @param {number} h\n   * @param {object} options\n   */\n  formAnnotation(name, type, x, y, w, h, options = {}) {\n    let fieldDict = this._fieldDict(name, type, options);\n    fieldDict.Subtype = 'Widget';\n    if (fieldDict.F === undefined) {\n      fieldDict.F = 4; // print the annotation\n    }\n\n    // Add Field annot to page, and get it's ref\n    this.annotate(x, y, w, h, fieldDict);\n    let annotRef = this.page.annotations[this.page.annotations.length - 1];\n\n    return this._addToParent(annotRef);\n  },\n\n  formText(name, x, y, w, h, options = {}) {\n    return this.formAnnotation(name, 'text', x, y, w, h, options);\n  },\n\n  formPushButton(name, x, y, w, h, options = {}) {\n    return this.formAnnotation(name, 'pushButton', x, y, w, h, options);\n  },\n\n  formCombo(name, x, y, w, h, options = {}) {\n    return this.formAnnotation(name, 'combo', x, y, w, h, options);\n  },\n\n  formList(name, x, y, w, h, options = {}) {\n    return this.formAnnotation(name, 'list', x, y, w, h, options);\n  },\n\n  formRadioButton(name, x, y, w, h, options = {}) {\n    return this.formAnnotation(name, 'radioButton', x, y, w, h, options);\n  },\n\n  formCheckbox(name, x, y, w, h, options = {}) {\n    return this.formAnnotation(name, 'checkbox', x, y, w, h, options);\n  },\n\n  _addToParent(fieldRef) {\n    let parent = fieldRef.data.Parent;\n    if (parent) {\n      if (!parent.data.Kids) {\n        parent.data.Kids = [];\n      }\n      parent.data.Kids.push(fieldRef);\n    } else {\n      this._root.data.AcroForm.data.Fields.push(fieldRef);\n    }\n    return this;\n  },\n\n  _fieldDict(name, type, options = {}) {\n    if (!this._acroform) {\n      throw new Error(\n        'Call document.initForm() method before adding form elements to document',\n      );\n    }\n    const pdfObject = {};\n\n    mapTypeAndFlags(type, options, pdfObject);\n    mapJustify(options, pdfObject);\n    this._mapFont(options, pdfObject);\n    mapStrings(options, pdfObject);\n    this._mapColors(options, pdfObject);\n    mapFormat(options, pdfObject);\n\n    pdfObject.T = new String(name);\n\n    if (options.parent) {\n      pdfObject.Parent = options.parent;\n    }\n    return pdfObject;\n  },\n\n  _mapColors(options, pdfObject) {\n    let color = this._normalizeColor(options.backgroundColor);\n    if (color) {\n      pdfObject.MK = pdfObject.MK ? pdfObject.MK : {};\n      pdfObject.MK.BG = color;\n    }\n\n    color = this._normalizeColor(options.borderColor);\n    if (color) {\n      if (!pdfObject.MK) {\n        pdfObject.MK = {};\n      }\n      pdfObject.MK.BC = color;\n    }\n  },\n\n  _mapFont(options, pdfObject) {\n    const { _acroform, _font } = this;\n    // add current font to document-level AcroForm dict if necessary\n    if (_acroform.fonts[_font.id] == null) {\n      _acroform.fonts[_font.id] = _font.ref();\n    }\n\n    // add current font to field's resource dict (RD) if not the default acroform font\n    if (_acroform.defaultFont !== _font.name) {\n      pdfObject.DR = { Font: {} };\n\n      // Get the fontSize option. If not set use auto sizing\n      const fontSize = options.fontSize || 0;\n\n      pdfObject.DR.Font[_font.id] = _font.ref();\n      pdfObject.DA = new String(`/${_font.id} ${fontSize} Tf 0 g`);\n    }\n  },\n};\n","import fs from '#fs';\nimport { md5Hex } from '../crypto/md5';\nimport { escapeName } from '../object.js';\nimport { fromBase64 } from '../binary';\n\nexport default {\n  /**\n   * Embed contents of `src` in PDF\n   * @param {Buffer | Uint8Array | ArrayBuffer | string} src input Buffer, Uint8Array, ArrayBuffer, base64 encoded string or path to file\n   * @param {object} options\n   *  * options.name: filename to be shown in PDF, will use `src` if none set\n   *  * options.type: filetype to be shown in PDF\n   *  * options.description: description to be shown in PDF\n   *  * options.hidden: if true, do not add attachment to EmbeddedFiles dictionary. Useful for file attachment annotations\n   *  * options.creationDate: override creation date\n   *  * options.modifiedDate: override modified date\n   *  * options.relationship: Relationship between the PDF document and its attached file. Can be 'Alternative', 'Data', 'Source', 'Supplement' or 'Unspecified'.\n   * @returns filespec reference\n   */\n  file(src, options = {}) {\n    options.name = options.name || src;\n    options.relationship = options.relationship || 'Unspecified';\n\n    const refBody = {\n      Type: 'EmbeddedFile',\n      Params: {},\n    };\n    let data;\n\n    if (!src) {\n      throw new Error('No src specified');\n    }\n    if (src instanceof Uint8Array) {\n      data = src;\n    } else if (src instanceof ArrayBuffer) {\n      data = new Uint8Array(src);\n    } else {\n      const match = /^data:(.*?);base64,(.*)$/.exec(src);\n      if (match) {\n        if (match[1]) {\n          refBody.Subtype = escapeName(match[1]);\n        }\n        data = fromBase64(match[2]);\n      } else {\n        data = fs.readFileSync(src);\n        if (!data) {\n          throw new Error(`Could not read contents of file at filepath ${src}`);\n        }\n\n        // update CreationDate and ModDate\n        const { birthtime, ctime } = fs.statSync(src);\n        refBody.Params.CreationDate = birthtime;\n        refBody.Params.ModDate = ctime;\n      }\n    }\n\n    // override creation date and modified date\n    if (options.creationDate instanceof Date) {\n      refBody.Params.CreationDate = options.creationDate;\n    }\n    if (options.modifiedDate instanceof Date) {\n      refBody.Params.ModDate = options.modifiedDate;\n    }\n    // add optional subtype\n    if (options.type) {\n      refBody.Subtype = escapeName(options.type);\n    }\n\n    // add checksum and size information\n    const checksum = md5Hex(new Uint8Array(data));\n    refBody.Params.CheckSum = new String(checksum);\n    refBody.Params.Size = data.byteLength;\n\n    // save some space when embedding the same file again\n    // if a file with the same name and metadata exists, reuse its reference\n    let ref;\n    if (!this._fileRegistry) this._fileRegistry = {};\n    let file = this._fileRegistry[options.name];\n    if (file && isEqual(refBody, file)) {\n      ref = file.ref;\n    } else {\n      ref = this.ref(refBody);\n      ref.end(data);\n\n      this._fileRegistry[options.name] = { ...refBody, ref };\n    }\n    // add filespec for embedded file\n    const fileSpecBody = {\n      Type: 'Filespec',\n      AFRelationship: options.relationship,\n      F: new String(options.name),\n      EF: { F: ref },\n      UF: new String(options.name),\n    };\n    if (options.description) {\n      fileSpecBody.Desc = new String(options.description);\n    }\n    const filespec = this.ref(fileSpecBody);\n    filespec.end();\n\n    if (!options.hidden) {\n      this.addNamedEmbeddedFile(options.name, filespec);\n    }\n\n    // Add file to the catalogue to be PDF/A3 compliant\n    if (this._root.data.AF) {\n      this._root.data.AF.push(filespec);\n    } else {\n      this._root.data.AF = [filespec];\n    }\n\n    return filespec;\n  },\n};\n\n/** check two embedded file metadata objects for equality */\nfunction isEqual(a, b) {\n  return (\n    a.Subtype === b.Subtype &&\n    a.Params.CheckSum.toString() === b.Params.CheckSum.toString() &&\n    a.Params.Size === b.Params.Size &&\n    isSameDate(a.Params.CreationDate, b.Params.CreationDate) &&\n    isSameDate(a.Params.ModDate, b.Params.ModDate)\n  );\n}\n\n/**\n * Compare two dates, either of which may be absent.\n *\n * An in-memory source carries no file system timestamps, so `CreationDate` and\n * `ModDate` are only present when the file was read from disk or the caller\n * passed `creationDate` / `modifiedDate`. Two absent dates describe the same\n * metadata; an absent date never matches a present one.\n */\nfunction isSameDate(a, b) {\n  if (a === undefined || b === undefined) return a === b;\n  return a.getTime() === b.getTime();\n}\n","import fs from '#fs';\n\nexport const ICC_PROFILE_PATH = new URL(\n  './data/sRGB_IEC61966_2_1.icc',\n  import.meta.url,\n).href;\n\nlet iccProfile;\n\nexport default {\n  initPDFA(pSubset) {\n    if (pSubset.charAt(pSubset.length - 3) === '-') {\n      this.subset_conformance = pSubset\n        .charAt(pSubset.length - 1)\n        .toUpperCase();\n      this.subset = parseInt(pSubset.charAt(pSubset.length - 2));\n    } else {\n      // Default to Basic conformance when user doesn't specify\n      this.subset_conformance = 'B';\n      this.subset = parseInt(pSubset.charAt(pSubset.length - 1));\n    }\n  },\n\n  endSubset() {\n    this._addPdfaMetadata();\n    this._addColorOutputIntent();\n  },\n\n  _addColorOutputIntent() {\n    if (!iccProfile) {\n      iccProfile = fs.readFileSync(ICC_PROFILE_PATH);\n    }\n\n    const colorProfileRef = this.ref({\n      Length: iccProfile.length,\n      N: 3,\n    });\n    colorProfileRef.write(iccProfile);\n    colorProfileRef.end();\n\n    const intentRef = this.ref({\n      Type: 'OutputIntent',\n      S: 'GTS_PDFA1',\n      Info: new String('sRGB IEC61966-2.1'),\n      OutputConditionIdentifier: new String('sRGB IEC61966-2.1'),\n      DestOutputProfile: colorProfileRef,\n    });\n    intentRef.end();\n\n    this._root.data.OutputIntents = [intentRef];\n  },\n\n  _getPdfaid() {\n    return `\n        <rdf:Description xmlns:pdfaid=\"http://www.aiim.org/pdfa/ns/id/\" rdf:about=\"\">\n            <pdfaid:part>${this.subset}</pdfaid:part>\n            <pdfaid:conformance>${this.subset_conformance}</pdfaid:conformance>\n        </rdf:Description>\n        `;\n  },\n\n  _addPdfaMetadata() {\n    this.appendXML(this._getPdfaid());\n  },\n};\n","export default {\n  initPDFUA() {\n    this.subset = 1;\n  },\n\n  endSubset() {\n    this._addPdfuaMetadata();\n  },\n\n  _addPdfuaMetadata() {\n    this.appendXML(this._getPdfuaid());\n  },\n\n  _getPdfuaid() {\n    return `\n        <rdf:Description xmlns:pdfuaid=\"http://www.aiim.org/pdfua/ns/id/\" rdf:about=\"\">\n            <pdfuaid:part>${this.subset}</pdfuaid:part>\n        </rdf:Description>\n        `;\n  },\n};\n","import PDFA from './pdfa';\nimport PDFUA from './pdfua';\n\nexport default {\n  _importSubset(subset) {\n    Object.assign(this, subset);\n  },\n\n  initSubset(options) {\n    switch (options.subset) {\n      case 'PDF/A-1':\n      case 'PDF/A-1a':\n      case 'PDF/A-1b':\n      case 'PDF/A-2':\n      case 'PDF/A-2a':\n      case 'PDF/A-2b':\n      case 'PDF/A-3':\n      case 'PDF/A-3a':\n      case 'PDF/A-3b':\n        this._importSubset(PDFA);\n        this.initPDFA(options.subset);\n        break;\n      case 'PDF/UA':\n        this._importSubset(PDFUA);\n        this.initPDFUA();\n        break;\n    }\n  },\n};\n","/**\n * @template T\n * @typedef {function(number): T} Dynamic<T | undefined>\n */\n\n/**\n * @typedef {Object} Font\n * @property {PDFFontSource} [src]\n * The name of the font\n *\n * Defaults to the current document font source `doc._fontSrc`\n * @property {string} [family]\n * The font family of the font\n *\n * Defaults to the current document font family `doc._fontFamily`\n * @property {Size} [size]\n * The size of the font\n *\n * Defaults to the current document font size `doc._fontSize`\n */\n\n/**\n * Measurement of how wide something is, false means 0 and true means 1\n *\n * @typedef {Size | boolean} Wideness\n */\n\n/**\n * The value of the text of a cell\n * @typedef {string | null | undefined} TableCellText\n */\n\n/** @typedef {Object} TableCellStyle\n *\n * @property {TableCellText} [text]\n * The text of the table cell\n * @property {number} [rowSpan]\n * Number of rows the cell spans.\n *\n * Defaults to `1`.\n * @property {number} [colSpan]\n * Number of columns the cell spans.\n *\n * Defaults to `1`.\n * @property {SideDefinition<Wideness>} [padding]\n * Controls the padding of the cell text\n *\n * Defaults to `0.25em`\n * @property {SideDefinition<Wideness>} [border]\n * Controls the thickness of the cells borders.\n *\n * Defaults to `[1, 1, 1, 1]`.\n * @property {SideDefinition<PDFColor>} [borderColor]\n * Color of the border on each side of the cell.\n *\n * Defaults to the border color defined by the given table layout, or `black` on all sides.\n * @property {Font} [font]\n * Font options for the cell\n *\n * Defaults to the documents current font\n * @property {PDFColor} [backgroundColor]\n * Set the background color of the cell\n *\n * Defaults to transparent\n * @property {'center' | ExpandedAlign} [align]\n * Sets the text alignment of the cells text\n *\n * Defaults to `{x: 'left', y: 'top'}`\n * @property {Size} [textStroke]\n * Sets the text stroke width of the cells text\n *\n * Defaults to `0`\n * @property {PDFColor} [textStrokeColor]\n * Sets the text stroke color of the cells text\n *\n * Defaults to `black`\n * @property {PDFColor} [textColor]\n * Sets the text color of the cells text\n *\n * Defaults to `black`\n * @property {'TH' | 'TD'} [type]\n * Sets the cell type (for accessibility)\n *\n * Defaults to `TD`\n * @property {Object} [textOptions]\n * Sets any advanced text options passed into the cell renderer\n *\n * Same as the options you pass to `doc.text()`\n *\n * Will override any defaults set by the cell if set\n * @property {string} [title]\n * Sets the accessible title for the cell\n * @property {'Column' | 'Row' | 'Both'} [scope]\n * Sets the accessible scope for the cell\n * @property {string} [id]\n * Sets the accessible id for the cell\n *\n * Defaults to `<tableId>-<rowIndex>-<colIndex>`\n * @property {boolean} [debug]\n * Whether to show the debug lines for the cell\n *\n * Defaults to `false`\n */\n/** @typedef {TableCellText | TableCellStyle} TableCell **/\n\n/**\n * The width of the column\n *\n * - `*` distributes equally, filling the whole available space\n * - `%` computes the proportion of the max size\n *\n * Defaults to `*`\n * @typedef {Size | '*'} ColumnWidth\n */\n\n/**\n * @typedef {Object} ColumnStyle\n * @extends TableCellStyle\n *\n * @property {ColumnWidth} [width]\n * @property {Size} [minWidth]\n * The minimum width of the column\n *\n * Defaults to `0`\n * @property {Size} [maxWidth]\n * The maximum width of the column\n *\n * Defaults to `undefined` meaning no max\n */\n/** @typedef {ColumnStyle | ColumnWidth} Column **/\n\n/**\n * @typedef {Object} NormalizedColumnStyle\n * @extends ColumnStyle\n *\n * @property {number | '*'} width\n * @property {number} minWidth\n * @property {number} maxWidth\n */\n\n/**\n * The height of the row\n *\n * - A fixed value sets an absolute height for every row.\n * - `auto` sets the height based on the text.\n *\n * `%` values are based on page content height\n *\n * Defaults to `auto`\n * @typedef {Size | 'auto'} RowHeight\n */\n\n/**\n * @typedef {Object} RowStyle\n * @extends TableCellStyle\n *\n * @property {RowHeight} [height]\n * @property {Size} [minHeight]\n * The minimum height of the row\n *\n * `%` values are based on page content height\n *\n * Defaults to `0`\n * @property {Size} [maxHeight]\n * The maximum height of the row\n *\n * `%` values are based on page content height\n *\n * Defaults to `undefined` meaning no max\n */\n/** @typedef {RowStyle | RowHeight} Row **/\n\n/**\n * @typedef {Object} NormalizedRowStyle\n * @extends RowStyle\n *\n * @property {number | 'auto'} height\n * @property {number} minHeight\n * @property {number} maxHeight\n */\n\n/** @typedef {'left' | 'center' | 'right' | 'justify'} AlignX **/\n/** @typedef {'top' | 'center' | 'bottom'} AlignY **/\n/**\n * @typedef {Object} ExpandedAlign\n * @property {AlignX} [x]\n * @property {AlignY} [y]\n */\n\n/**\n * @typedef {Object} DefaultTableCellStyle\n *\n * @extends ColumnStyle\n * @extends RowStyle\n * @extends TableCellStyle\n */\n/** @typedef {TableCellText | DefaultTableCellStyle} DefaultTableCell **/\n\n/**\n * @typedef {Object} NormalizedDefaultTableCellStyle\n *\n * @extends NormalizedColumnStyle\n * @extends NormalizedRowStyle\n * @extends TableCellStyle\n */\n\n/**\n * @typedef {Object} NormalizedTableCellStyle\n *\n * @extends NormalizedColumnStyle\n * @extends NormalizedRowStyle\n * @extends TableCellStyle\n *\n * @property {number} rowIndex\n * @property {number} rowSpan\n * @property {number} colIndex\n * @property {number} colSpan\n *\n * @property {string} text\n * @property {Font} font\n * @property {boolean} customFont\n * @property {ExpandedSideDefinition<number>} padding\n * @property {ExpandedSideDefinition<number>} border\n * @property {ExpandedSideDefinition<PDFColor>} borderColor\n * @property {ExpandedAlign} align\n * @property {number} textStroke\n * @property {PDFColor} textStrokeColor\n * @property {PDFColor} textColor\n * @property {number} minWidth\n * @property {number} maxWidth\n * @property {number} minHeight\n * @property {number} maxHeight\n * @property {Object} textOptions\n */\n\n/**\n * @typedef {Object} SizedNormalizedTableCellStyle\n *\n * @extends {NormalizedTableCellStyle}\n *\n * @property {number} x\n * @property {number} y\n * @property {number} textX\n * @property {number} textY\n * @property {number} width\n * @property {number} height\n * @property {number} textAllocatedWidth\n * @property {number} textAllocatedHeight\n * @property {{x: number, y: number, width: number, height: number}} textBounds\n */\n\n/**\n * @typedef {Object} Table\n *\n * @property {Position} [position]\n * The position of the table\n *\n * Defaults to the current document position `{x: doc.x, y: doc.y}`\n * @property {Size} [maxWidth]\n * The maximum width the table can expand to\n *\n * Defaults to the remaining content width (offset from the tables position)\n * @property {Column | Column[] | Dynamic<Column>} [columnStyles]\n * Column definitions of the table.\n * - A fixed value sets the config for every column\n * - Use an array or a callback function to control the column config for each column individually.\n *\n * Defaults to `auto`\n * @property {Row | Row[] | Dynamic<Row>} [rowStyles]\n * Row definitions of the table.\n * - A fixed value sets the config for every column\n * - Use an array or a callback function to control the row config of each row individually.\n *\n * The given values are ignored for rows whose text is higher.\n *\n * Defaults to `*`.\n * @property {DefaultTableCell} [defaultStyle]\n * Defaults to apply to every cell\n * @property {Iterable<Iterable<TableCell>>} [data]\n * Two-dimensional iterable that defines the table's data.\n *\n * With the first dimension being the row, and the second being the column\n *\n * If provided the table will be automatically ended after the last row has been written,\n * Otherwise it is up to the user to call `table.end()` or `table.row([], true)`\n * @property {PDFStructureElement} [structParent]\n * The parent structure to mount to\n *\n * This will cause the entire table to be enclosed in a Table structure\n * with TR and TD/TH for cells\n * @property {string} [id]\n * Sets the accessible id for the table\n *\n * Defaults to `table-<number>`\n * @property {boolean} [debug]\n * Whether to show the debug lines for all the cells\n *\n * Defaults to `false`\n */\n\n/**\n * Fields exclusive to row styles\n * @type {string[]}\n */\nexport const ROW_FIELDS = ['height', 'minHeight', 'maxHeight'];\n/**\n * Fields exclusive to column styles\n * @type {string[]}\n */\nexport const COLUMN_FIELDS = ['width', 'minWidth', 'maxWidth'];\n\nexport function memoize(fn, maxSize) {\n  const cache = new Map();\n  return function (...args) {\n    const key = args[0];\n    if (!cache.has(key)) {\n      cache.set(key, fn(...args));\n      if (cache.size > maxSize) cache.delete(cache.keys().next());\n    }\n    return cache.get(key);\n  };\n}\n\n/**\n * Simple object check.\n * @param item\n * @returns {boolean}\n */\nfunction isObject(item) {\n  return item && typeof item === 'object' && !Array.isArray(item);\n}\n\n/**\n * Deep merge two objects.\n *\n * @template T\n * @param {T} target\n * @param sources\n * @returns {T}\n */\nexport function deepMerge(target, ...sources) {\n  if (!isObject(target)) return target;\n  target = deepClone(target);\n\n  for (const source of sources) {\n    if (isObject(source)) {\n      for (const key in source) {\n        if (isObject(source[key])) {\n          if (!(key in target)) target[key] = {};\n          target[key] = deepMerge(target[key], source[key]);\n        } else if (source[key] !== undefined) {\n          target[key] = deepClone(source[key]);\n        }\n      }\n    }\n  }\n\n  return target;\n}\n\nfunction deepClone(obj) {\n  let result = obj;\n  if (obj && typeof obj == 'object') {\n    result = Array.isArray(obj) ? [] : {};\n    for (const key in obj) result[key] = deepClone(obj[key]);\n  }\n  return result;\n}\n","import { COLUMN_FIELDS, deepMerge, ROW_FIELDS } from './utils';\nimport { normalizeSides } from '../utils';\n\n/**\n * Normalize the row config\n * @note The context here is the cell not the document\n *\n * @param {DefaultTableCell} [defaultStyleInternal]\n * @returns {{\n *  defaultStyle: TableCellStyle,\n *  defaultRowStyle: RowStyle,\n *  defaultColStyle: ColumnStyle\n * }}\n * @private\n */\nexport function normalizedDefaultStyle(defaultStyleInternal) {\n  let defaultStyle = defaultStyleInternal;\n  // Force object form\n  if (typeof defaultStyle !== 'object') defaultStyle = { text: defaultStyle };\n\n  const defaultRowStyle = Object.fromEntries(\n    Object.entries(defaultStyle).filter(([k]) => ROW_FIELDS.includes(k)),\n  );\n  const defaultColStyle = Object.fromEntries(\n    Object.entries(defaultStyle).filter(([k]) => COLUMN_FIELDS.includes(k)),\n  );\n\n  defaultStyle.padding = normalizeSides(defaultStyle.padding);\n  defaultStyle.border = normalizeSides(defaultStyle.border);\n  defaultStyle.borderColor = normalizeSides(defaultStyle.borderColor);\n  defaultStyle.align = normalizeAlignment(defaultStyle.align);\n\n  return { defaultStyle, defaultRowStyle, defaultColStyle };\n}\n\n/**\n * Normalize the row config\n *\n * @note The context here is the cell not the document\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {RowStyle} defaultRowStyle\n * @param {Dynamic<Row>} rowStyleInternal\n * @param {number} i The target row\n * @returns {NormalizedRowStyle}\n * @private\n */\nexport function normalizedRowStyle(defaultRowStyle, rowStyleInternal, i) {\n  let rowStyle = rowStyleInternal(i);\n  // Force object form\n  if (rowStyle == null || typeof rowStyle !== 'object') {\n    rowStyle = { height: rowStyle };\n  }\n  // Normalize\n  rowStyle.padding = normalizeSides(rowStyle.padding);\n  rowStyle.border = normalizeSides(rowStyle.border);\n  rowStyle.borderColor = normalizeSides(rowStyle.borderColor);\n  rowStyle.align = normalizeAlignment(rowStyle.align);\n\n  // Merge defaults\n  rowStyle = deepMerge(defaultRowStyle, rowStyle);\n\n  const document = this.document;\n  const page = document.page;\n  const contentHeight = page.contentHeight;\n\n  if (rowStyle.height == null || rowStyle.height === 'auto') {\n    rowStyle.height = 'auto';\n  } else {\n    rowStyle.height = document.sizeToPoint(\n      rowStyle.height,\n      0,\n      page,\n      contentHeight,\n    );\n  }\n  rowStyle.minHeight = document.sizeToPoint(\n    rowStyle.minHeight,\n    0,\n    page,\n    contentHeight,\n  );\n  rowStyle.maxHeight = document.sizeToPoint(\n    rowStyle.maxHeight,\n    0,\n    page,\n    contentHeight,\n  );\n\n  return rowStyle;\n}\n\n/**\n * Normalize the column config\n *\n * @note The context here is the document not the cell\n *\n * @param {ColumnStyle} defaultColStyle\n * @param {Dynamic<Column>} colStyleInternal\n * @param {number} i - The target column\n * @returns {NormalizedColumnStyle}\n * @private\n */\nexport function normalizedColumnStyle(defaultColStyle, colStyleInternal, i) {\n  let colStyle = colStyleInternal(i);\n  // Force object form\n  if (colStyle == null || typeof colStyle !== 'object') {\n    colStyle = { width: colStyle };\n  }\n  // Normalize\n  colStyle.padding = normalizeSides(colStyle.padding);\n  colStyle.border = normalizeSides(colStyle.border);\n  colStyle.borderColor = normalizeSides(colStyle.borderColor);\n  colStyle.align = normalizeAlignment(colStyle.align);\n\n  // Merge defaults\n  colStyle = deepMerge(defaultColStyle, colStyle);\n\n  if (colStyle.width == null || colStyle.width === '*') {\n    colStyle.width = '*';\n  } else {\n    colStyle.width = this.document.sizeToPoint(\n      colStyle.width,\n      0,\n      this.document.page,\n      this._maxWidth, // Use table width here for percentage scaling\n    );\n  }\n  colStyle.minWidth = this.document.sizeToPoint(\n    colStyle.minWidth,\n    0,\n    this.document.page,\n    this._maxWidth, // Use table width here for percentage scaling\n  );\n  colStyle.maxWidth = this.document.sizeToPoint(\n    colStyle.maxWidth,\n    0,\n    this.document.page,\n    this._maxWidth, // Use table width here for percentage scaling\n  );\n\n  return colStyle;\n}\n\nexport function normalizeAlignment(align) {\n  return align == null || typeof align === 'string'\n    ? { x: align, y: align }\n    : align;\n}\n","import { deepMerge, memoize } from './utils';\nimport {\n  normalizeAlignment,\n  normalizedColumnStyle,\n  normalizedDefaultStyle,\n  normalizedRowStyle,\n} from './style';\nimport { normalizeSides } from '../utils';\n\n/**\n * Normalize a table\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @private\n */\nexport function normalizeTable() {\n  const doc = this.document;\n  const opts = this.opts;\n\n  // Normalize config\n  let index = doc._tableIndex++;\n  this._id = new String(opts.id ?? `table-${index}`);\n  this._position = {\n    x: doc.sizeToPoint(opts.position?.x, doc.x),\n    y: doc.sizeToPoint(opts.position?.y, doc.y),\n  };\n  this._maxWidth = doc.sizeToPoint(\n    opts.maxWidth,\n    doc.page.width - doc.page.margins.right - this._position.x,\n  );\n\n  const { defaultStyle, defaultColStyle, defaultRowStyle } =\n    normalizedDefaultStyle(opts.defaultStyle);\n  this._defaultStyle = defaultStyle;\n\n  let colStyle;\n  if (opts.columnStyles) {\n    if (Array.isArray(opts.columnStyles)) {\n      colStyle = (i) => opts.columnStyles[i];\n    } else if (typeof opts.columnStyles === 'function') {\n      // memoize all columns\n      colStyle = memoize((i) => opts.columnStyles(i), Infinity);\n    } else if (typeof opts.columnStyles === 'object') {\n      colStyle = () => opts.columnStyles;\n    }\n  }\n  if (!colStyle) colStyle = () => ({});\n  this._colStyle = normalizedColumnStyle.bind(this, defaultColStyle, colStyle);\n\n  let rowStyle;\n  if (opts.rowStyles) {\n    if (Array.isArray(opts.rowStyles)) {\n      rowStyle = (i) => opts.rowStyles[i];\n    } else if (typeof opts.rowStyles === 'function') {\n      // Memoize the row configs in a rolling buffer\n      rowStyle = memoize((i) => opts.rowStyles(i), 10);\n    } else if (typeof opts.rowStyles === 'object') {\n      rowStyle = () => opts.rowStyles;\n    }\n  }\n  if (!rowStyle) rowStyle = () => ({});\n  this._rowStyle = normalizedRowStyle.bind(this, defaultRowStyle, rowStyle);\n}\n\n/**\n * Convert text into a string\n * - null and undefined are preserved (as they will be ignored)\n * - everything else is run through `String()`\n *\n * @param {*} text\n * @returns {string}\n * @private\n */\nexport function normalizeText(text) {\n  // Parse out text\n  if (text != null) text = `${text}`;\n  return text;\n}\n\n/**\n * Normalize a cell config\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {TableCellStyle} cell - The cell to mutate\n * @param {number} rowIndex - The cells row\n * @param {number} colIndex - The cells column\n * @returns {NormalizedTableCellStyle}\n * @private\n */\nexport function normalizeCell(cell, rowIndex, colIndex) {\n  const colStyle = this._colStyle(colIndex);\n  let rowStyle = this._rowStyle(rowIndex);\n\n  // `src` and `family` identify one font together: `family` names a\n  // subfamily/variation *of that src*. Merging the levels key by key let a\n  // `family` from a less specific level survive next to a more specific `src`,\n  // producing a pair that was never configured - which either throws (the\n  // family is not a variation of the new src) or silently resolves to the wrong\n  // font, because the family cache already maps that name to the old src.\n  // So a level that sets `src` also resets `family`, while a level that sets\n  // only `family` still refines the inherited `src`. `size` is independent.\n  const font = {};\n  for (const level of [colStyle.font, rowStyle.font, cell.font]) {\n    if (level == null) continue;\n    if (level.src != null) {\n      font.src = level.src;\n      font.family = level.family;\n    } else if (level.family != null) {\n      font.family = level.family;\n    }\n    if (level.size != null) font.size = level.size;\n  }\n  const customFont = Object.values(font).filter((v) => v != null).length > 0;\n  const doc = this.document;\n\n  // Initialize cell context\n  const rollbackFont = doc._fontSource;\n  const rollbackFontSize = doc._fontSize;\n  const rollbackFontFamily = doc._fontFamily;\n  if (customFont) {\n    if (font.src) doc.font(font.src, font.family);\n    if (font.size) doc.fontSize(font.size);\n\n    // Refetch rowStyle to reflect font changes\n    rowStyle = this._rowStyle(rowIndex);\n  }\n\n  cell.padding = normalizeSides(cell.padding);\n  cell.border = normalizeSides(cell.border);\n  cell.borderColor = normalizeSides(cell.borderColor);\n\n  // Cell takes highest priority, then row, then column, then defaultConfig\n  const config = deepMerge(this._defaultStyle, colStyle, rowStyle, cell);\n  config.rowIndex = rowIndex;\n  config.colIndex = colIndex;\n  config.font = font ?? {};\n  config.customFont = customFont;\n\n  // Normalize config\n  config.text = normalizeText(config.text);\n  config.rowSpan = config.rowSpan ?? 1;\n  config.colSpan = config.colSpan ?? 1;\n  config.padding = normalizeSides(config.padding, '0.25em', (x) =>\n    doc.sizeToPoint(x, '0.25em'),\n  );\n  config.border = normalizeSides(config.border, 1, (x) =>\n    doc.sizeToPoint(x, 1),\n  );\n  config.borderColor = normalizeSides(\n    config.borderColor,\n    'black',\n    (x) => x ?? 'black',\n  );\n  config.align = normalizeAlignment(config.align);\n  config.align.x = config.align.x ?? 'left';\n  config.align.y = config.align.y ?? 'top';\n  config.textStroke = doc.sizeToPoint(config.textStroke, 0);\n  config.textStrokeColor = config.textStrokeColor ?? 'black';\n  config.textColor = config.textColor ?? 'black';\n  config.textOptions = config.textOptions ?? {};\n\n  // Accessibility settings\n  config.id = new String(config.id ?? `${this._id}-${rowIndex}-${colIndex}`);\n  config.type = config.type?.toUpperCase() === 'TH' ? 'TH' : 'TD';\n  if (config.scope) {\n    config.scope = config.scope.toLowerCase();\n    if (config.scope === 'row') config.scope = 'Row';\n    else if (config.scope === 'both') config.scope = 'Both';\n    else if (config.scope === 'column') config.scope = 'Column';\n  }\n\n  if (typeof this.opts.debug === 'boolean') config.debug = this.opts.debug;\n\n  // Rollback font\n  if (customFont) doc.font(rollbackFont, rollbackFontFamily, rollbackFontSize);\n\n  return config;\n}\n\n/**\n * Normalize a row\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {TableCell[]} row\n * @param {number} rowIndex\n * @returns {NormalizedTableCellStyle[]}\n * @private\n */\nexport function normalizeRow(row, rowIndex) {\n  if (!this._cellClaim) this._cellClaim = new Set();\n\n  let colIndex = 0;\n  return row.map((cell) => {\n    // Ensure TableCell\n    if (cell == null || typeof cell !== 'object') cell = { text: cell };\n\n    // Find the starting column of the cell\n    // Skipping over the claimed cells\n    while (this._cellClaim.has(`${rowIndex},${colIndex}`)) {\n      colIndex++;\n    }\n\n    cell = normalizeCell.call(this, cell, rowIndex, colIndex);\n\n    // Claim any spanning cells\n    for (let i = 0; i < cell.rowSpan; i++) {\n      for (let j = 0; j < cell.colSpan; j++) {\n        this._cellClaim.add(`${rowIndex + i},${colIndex + j}`);\n      }\n    }\n\n    colIndex += cell.colSpan;\n    return cell;\n  });\n}\n","import { cosine, sine } from '../utils';\n\n/**\n * Compute the widths of the columns, ensuring to distribute the star widths\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {NormalizedTableCellStyle[]} row\n * @private\n */\nexport function ensure(row) {\n  // Width init\n  /** @type number[] **/\n  this._columnWidths = [];\n  ensureColumnWidths.call(\n    this,\n    row.reduce((a, cell) => a + cell.colSpan, 0),\n  );\n\n  // Height init\n  /** @type number[] **/\n  this._rowHeights = [];\n  /** @type number[] **/\n  this._rowYPos = [this._position.y];\n  /** @type {Set<NormalizedTableCellStyle>} **/\n  this._rowBuffer = new Set();\n}\n\n/**\n * Compute the widths of the columns, ensuring to distribute the star widths\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {number} numCols\n * @private\n */\nfunction ensureColumnWidths(numCols) {\n  // Compute the widths\n  let starColumnIndexes = [];\n  let starMinAcc = 0;\n  let unclaimedWidth = this._maxWidth;\n\n  for (let i = 0; i < numCols; i++) {\n    let col = this._colStyle(i);\n    if (col.width === '*') {\n      starColumnIndexes[i] = col;\n      starMinAcc += col.minWidth;\n    } else {\n      unclaimedWidth -= col.width;\n      this._columnWidths[i] = col.width;\n    }\n  }\n\n  let starColCount = starColumnIndexes.reduce((x) => x + 1, 0);\n\n  if (starMinAcc >= unclaimedWidth) {\n    // case 1 - there's no way to fit all columns within available width\n    // that's actually pretty bad situation with PDF as we have no horizontal scroll\n    starColumnIndexes.forEach((cell, i) => {\n      this._columnWidths[i] = cell.minWidth;\n    });\n  } else if (starColCount > 0) {\n    // Otherwise we distribute evenly factoring in the cell bounds\n    starColumnIndexes.forEach((col, i) => {\n      let starSize = unclaimedWidth / starColCount;\n      this._columnWidths[i] = Math.max(starSize, col.minWidth);\n      if (col.maxWidth > 0) {\n        this._columnWidths[i] = Math.min(this._columnWidths[i], col.maxWidth);\n      }\n      unclaimedWidth -= this._columnWidths[i];\n      starColCount--;\n    });\n  }\n\n  let tempX = this._position.x;\n  this._columnXPos = Array.from(this._columnWidths, (v) => {\n    const t = tempX;\n    tempX += v;\n    return t;\n  });\n}\n\n/**\n * Compute the dimensions of the cells\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {NormalizedTableCellStyle[]} row\n * @param {number} rowIndex\n * @returns {{newPage: boolean, toRender: SizedNormalizedTableCellStyle[]}}\n * @private\n */\nexport function measure(row, rowIndex) {\n  // ===================\n  // Add cells to buffer\n  // ===================\n  row.forEach((cell) => this._rowBuffer.add(cell));\n\n  if (rowIndex > 0) {\n    this._rowYPos[rowIndex] =\n      this._rowYPos[rowIndex - 1] + this._rowHeights[rowIndex - 1];\n  }\n\n  const rowStyle = this._rowStyle(rowIndex);\n\n  // ========================================================\n  // Find any cells which are to finish rendering on this row\n  // ========================================================\n  /** @type {SizedNormalizedTableCellStyle[]} */\n  let toRender = [];\n  this._rowBuffer.forEach((cell) => {\n    if (cell.rowIndex + cell.rowSpan - 1 === rowIndex) {\n      toRender.push(measureCell.call(this, cell, rowStyle.height));\n      this._rowBuffer.delete(cell);\n    }\n  });\n\n  // =====================================================\n  // Find the shared height for the row based on the cells\n  // =====================================================\n  let rowHeight = rowStyle.height;\n  if (rowHeight === 'auto') {\n    // Compute remaining height on cells\n    rowHeight = toRender.reduce((acc, cell) => {\n      let minHeight =\n        cell.textBounds.height + cell.padding.top + cell.padding.bottom;\n      for (let i = 0; i < cell.rowSpan - 1; i++) {\n        minHeight -= this._rowHeights[cell.rowIndex + i];\n      }\n      return Math.max(acc, minHeight);\n    }, 0);\n  }\n\n  rowHeight = Math.max(rowHeight, rowStyle.minHeight);\n  if (rowStyle.maxHeight > 0) {\n    rowHeight = Math.min(rowHeight, rowStyle.maxHeight);\n  }\n  this._rowHeights[rowIndex] = rowHeight;\n\n  let newPage = false;\n  if (rowHeight > this.document.page.contentHeight) {\n    // We are unable to render this row on a single page, for now we log a warning and disable the newPage\n    console.warn(\n      new Error(\n        `Row ${rowIndex} requested more than the safe page height, row has been clamped`,\n      ).stack.slice(7),\n    );\n    this._rowHeights[rowIndex] =\n      this.document.page.maxY() - this._rowYPos[rowIndex];\n  } else if (this._rowYPos[rowIndex] + rowHeight >= this.document.page.maxY()) {\n    // If row is going to go over the safe page height then move it over to new page\n    this._rowYPos[rowIndex] = this.document.page.margins.top;\n    newPage = true;\n  }\n\n  // =====================================================\n  // Re-measure the cells using the know known height\n  // =====================================================\n  return {\n    newPage,\n    toRender: toRender.map((cell) => measureCell.call(this, cell, rowHeight)),\n  };\n}\n\n/**\n * Compute the dimensions of the cell and its text\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {NormalizedTableCellStyle} cell\n * @param {number | 'auto'} rowHeight\n * @returns {SizedNormalizedTableCellStyle}\n * @private\n */\nfunction measureCell(cell, rowHeight) {\n  // ====================\n  // Calculate cell width\n  // ====================\n  let cellWidth = 0;\n\n  // Traverse all the columns of the cell\n  for (let i = 0; i < cell.colSpan; i++) {\n    cellWidth += this._columnWidths[cell.colIndex + i];\n  }\n\n  // =====================\n  // Calculate cell height\n  // =====================\n  let cellHeight = rowHeight;\n  if (cellHeight === 'auto') {\n    // The cells height is effectively infinite\n    // (although we clamp it to the page content size)\n    cellHeight = this.document.page.contentHeight;\n  } else {\n    // Add all the spanning rows heights to the cell\n    for (let i = 0; i < cell.rowSpan - 1; i++) {\n      cellHeight += this._rowHeights[cell.rowIndex + i];\n    }\n  }\n\n  // Allocated text space\n  const textAllocatedWidth = cellWidth - cell.padding.left - cell.padding.right;\n\n  const textAllocatedHeight =\n    cellHeight - cell.padding.top - cell.padding.bottom;\n\n  // Compute the text bounds\n  const rotation = cell.textOptions.rotation ?? 0;\n  const { width: textMaxWidth, height: textMaxHeight } = computeBounds(\n    rotation,\n    textAllocatedWidth,\n    textAllocatedHeight,\n  );\n\n  const textOptions = {\n    // Alignment is handled internally\n    align: cell.align.x,\n    ellipsis: true, // Default make overflowing text ellipsis\n    stroke: cell.textStroke > 0,\n    fill: true, // To fix the stroke issue\n    width: textMaxWidth,\n    height: textMaxHeight,\n    rotation,\n    // Allow the user to define any custom fields\n    ...cell.textOptions,\n  };\n\n  // ========================\n  // Calculate text height\n  // ========================\n\n  // Compute rendered bounds of the text given the constraints of the cell\n  let textBounds = { x: 0, y: 0, width: 0, height: 0 };\n  if (cell.text) {\n    const rollbackFont = this.document._fontSource;\n    const rollbackFontSize = this.document._fontSize;\n    const rollbackFontFamily = this.document._fontFamily;\n    if (cell.font?.src) this.document.font(cell.font.src, cell.font?.family);\n    if (cell.font?.size) this.document.fontSize(cell.font.size);\n\n    // We first compute the un-rotated bounds so that we can calculate the width of the text\n    const unRotatedTextBounds = this.document.boundsOfString(cell.text, 0, 0, {\n      ...textOptions,\n      rotation: 0,\n    });\n    textOptions.width = unRotatedTextBounds.width;\n    textOptions.height = unRotatedTextBounds.height;\n\n    // Then compute the rendered bounds\n    textBounds = this.document.boundsOfString(cell.text, 0, 0, textOptions);\n\n    this.document.font(rollbackFont, rollbackFontFamily, rollbackFontSize);\n  }\n\n  return {\n    ...cell,\n    textOptions,\n    x: this._columnXPos[cell.colIndex],\n    y: this._rowYPos[cell.rowIndex],\n    textX: this._columnXPos[cell.colIndex] + cell.padding.left,\n    textY: this._rowYPos[cell.rowIndex] + cell.padding.top,\n    width: cellWidth,\n    height: cellHeight,\n    textAllocatedHeight,\n    textAllocatedWidth,\n    textBounds,\n  };\n}\n\n/**\n * Compute the horizon-locked bounding box of a rect\n *\n * @param {number} rotation\n * @param {number} allocWidth\n * @param {number} allocHeight\n *\n * @returns {{width: number, height: number}}\n */\nfunction computeBounds(rotation, allocWidth, allocHeight) {\n  let textMaxWidth, textMaxHeight;\n\n  // We use these a lot so pre-compute\n  const cos = cosine(rotation);\n  const sin = sine(rotation);\n\n  // <---------------allocWidth---------------->\n  // A════════════════════F════════════════════B\n  // ║                  ■■ ■                   ║\n  // ║                ■■   ■                   ║\n  // ║              ■■      ■                  ║\n  // ║            ■■        ■                  ║\n  // ║          ■■           ■                 ║\n  // ║        ■■             ■                 ║\n  // ║      ■■░░              ■                ║\n  // ║    ■■    ░              ■               ║\n  // ║  ■■   Θ   ░             ■               ║\n  // ║■■          ░             ■              ║\n  // E- - - - - - - - - - - - - ■ - - - - - - -║\n  // ║■                          ■             ║\n  // ║■                           ■            ║\n  // ║ ■                          ■            ║\n  // ║ ■                           ■           ║\n  // ║  ■                          ■           ║\n  // ║  ■                           ■          ║\n  // ║   ■                          ■          ║\n  // ║   ■                           ■         ║\n  // ║    ■                           ■        ║\n  // ║     ■                          ■        ║\n  // ║     ■                           ■       ║\n  // ║      ■                          ■       ║\n  // ║      ■                           ■      ║\n  // ║       ■                           ■     ║\n  // ║       ■                           ■     ║\n  // ║        ■                           ■    ║\n  // ║        ■                           ■    ║\n  // ║         ■                           ■   ║\n  // ║         ■                           ■   ║\n  // ║          ■                           ■  ║\n  // ║           ■                           ■ ║\n  // ║           ■                           ■ ║\n  // ║            ■                           ■║\n  // ║            ■                           ■║\n  // ║             ■                           G\n  // ║             ■                         ■■║\n  // ║              ■                      ■■  ║\n  // ║              ■                     ■    ║\n  // ║               ■                  ■■     ║\n  // ║                ■                ■       ║\n  // ║                ■              ■■        ║\n  // ║                 ■           ■■          ║\n  // ║                 ■          ■            ║\n  // ║                  ■       ■■             ║\n  // ║                  ■      ■               ║\n  // ║                   ■   ■■                ║\n  // ║                   ■ ■■                  ║\n  // D════════════════════H════════════════════C\n  //\n  // Given a rectangle ABCD with a fixed side AB of width allocWidth.\n  // Find the largest (by area) inscribed rectangle EFGH,\n  // where the angle Θ is equal to rotation (between 0-90 degrees)\n  //\n  // From above we can infer\n  // > AF = EF * cos(Θ)\n  // > FB = AB - AF\n  // > FB = FG * sin(Θ)\n  // Rearrange\n  // > FG = FB / sin(Θ)\n  // Substitute\n  // > FG = (AB - EF*cos(Θ)) / sin(Θ)\n  // Area of a rectangle\n  // > A = EF * FG\n  // Substitute\n  // > A = EF * (AB - EF*cos(Θ)) / sin(Θ)\n  // > dA/dEF = (AB - 2*EF*cos(Θ)) / sin(Θ)\n  // Find peak at dA/dEF = 0\n  // > 0 = (AB - 2*EF*cos(Θ)) / sin(Θ)\n  // > EF = AB / (2*cos(Θ))\n  // Substitute\n  // > FG = (AB - (AB*cos(Θ)) / (2*cos(Θ))) / sin(Θ)\n  // > FG = AB / (2*sin(Θ))\n  //\n  // Final outcome\n  // Length EF = AB / (2*cos(Θ))\n  // Length FG = AB / (2*sin(Θ))\n  if (rotation === 0 || rotation === 180) {\n    textMaxWidth = allocWidth;\n    textMaxHeight = allocHeight;\n  } else if (rotation === 90 || rotation === 270) {\n    textMaxWidth = allocHeight;\n    textMaxHeight = allocWidth;\n  } else if (rotation < 90 || (rotation > 180 && rotation < 270)) {\n    textMaxWidth = allocWidth / (2 * cos);\n    textMaxHeight = allocWidth / (2 * sin);\n  } else {\n    textMaxHeight = allocWidth / (2 * cos);\n    textMaxWidth = allocWidth / (2 * sin);\n  }\n\n  // If The bounding box of the text is beyond the allocHeight\n  // then we need to clamp it and recompute the bounds\n  // This time we are computing the sizes based on the outer box ABCD\n  const EF = sin * textMaxWidth;\n  const FG = cos * textMaxHeight;\n  if (EF + FG > allocHeight) {\n    // > AB = EF * cos(Θ) + FG * sin(Θ)\n    // > BC = BG + GC\n    // > BG = FG * cos(Θ)\n    // > GC = EF * sin(Θ)\n    // > BC = FG * cos(Θ) + EF * sin(Θ)\n    // > AB = EF * cos(Θ) + FG * sin(Θ)\n    // Substitution solve\n    // > EF = (AB*cos(Θ) - BC*sin(Θ)) / (cos^2(Θ)-sin^2(Θ))\n    // > FG = (BC*cos(Θ) - AB*sin(Θ)) / (cos^2(Θ)-sin^2(Θ))\n    const denominator = cos * cos - sin * sin;\n\n    if (rotation === 0 || rotation === 180) {\n      textMaxWidth = allocWidth;\n      textMaxHeight = allocHeight;\n    } else if (rotation === 90 || rotation === 270) {\n      textMaxWidth = allocHeight;\n      textMaxHeight = allocWidth;\n    } else if (rotation < 90 || (rotation > 180 && rotation < 270)) {\n      textMaxWidth = (allocWidth * cos - allocHeight * sin) / denominator;\n      textMaxHeight = (allocHeight * cos - allocWidth * sin) / denominator;\n    } else {\n      textMaxHeight = (allocWidth * cos - allocHeight * sin) / denominator;\n      textMaxWidth = (allocHeight * cos - allocWidth * sin) / denominator;\n    }\n  }\n\n  return { width: Math.abs(textMaxWidth), height: Math.abs(textMaxHeight) };\n}\n","import PDFStructureElement from '../structure_element';\nimport PDFDocument from '../document';\n\n/**\n * Add accessibility to a table\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @private\n */\nexport function accommodateTable() {\n  const structParent = this.opts.structParent;\n  if (structParent) {\n    this._tableStruct = this.document.struct('Table');\n    this._tableStruct.dictionary.data.ID = this._id;\n    if (structParent instanceof PDFStructureElement) {\n      structParent.add(this._tableStruct);\n    } else if (structParent instanceof PDFDocument) {\n      structParent.addStructure(this._tableStruct);\n    }\n    this._headerRowLookup = {};\n    this._headerColumnLookup = {};\n  }\n}\n\n/**\n * Cleanup accessibility on a table\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @private\n */\nexport function accommodateCleanup() {\n  if (this._tableStruct) this._tableStruct.end();\n}\n\n/**\n * Render a row with all its accessibility features\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {SizedNormalizedTableCellStyle[]} row\n * @param {number} rowIndex\n * @param {Function} renderCell\n * @private\n */\nexport function accessibleRow(row, rowIndex, renderCell) {\n  const rowStruct = this.document.struct('TR');\n  rowStruct.dictionary.data.ID = new String(`${this._id}-${rowIndex}`);\n  this._tableStruct.add(rowStruct);\n  row.forEach((cell) => renderCell(cell, rowStruct));\n  rowStruct.end();\n}\n\n/**\n * Render a cell with all its accessibility features\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {SizedNormalizedTableCellStyle} cell\n * @param {PDFStructureElement} rowStruct\n * @param {Function} callback\n * @private\n */\nexport function accessibleCell(cell, rowStruct, callback) {\n  const doc = this.document;\n\n  const cellStruct = doc.struct(cell.type, { title: cell.title });\n  cellStruct.dictionary.data.ID = cell.id;\n\n  rowStruct.add(cellStruct);\n\n  const padding = cell.padding;\n  const border = cell.border;\n  const attributes = {\n    O: 'Table',\n    Width: cell.width,\n    Height: cell.height,\n    Padding: [padding.top, padding.bottom, padding.left, padding.right],\n    RowSpan: cell.rowSpan > 1 ? cell.rowSpan : undefined,\n    ColSpan: cell.colSpan > 1 ? cell.colSpan : undefined,\n    BorderThickness: [border.top, border.bottom, border.left, border.right],\n  };\n\n  // Claim row Headers\n  if (cell.type === 'TH') {\n    if (cell.scope === 'Row' || cell.scope === 'Both') {\n      for (let i = 0; i < cell.rowSpan; i++) {\n        if (!this._headerRowLookup[cell.rowIndex + i]) {\n          this._headerRowLookup[cell.rowIndex + i] = [];\n        }\n        this._headerRowLookup[cell.rowIndex + i].push(cell.id);\n      }\n      attributes.Scope = cell.scope;\n    }\n    if (cell.scope === 'Column' || cell.scope === 'Both') {\n      for (let i = 0; i < cell.colSpan; i++) {\n        if (!this._headerColumnLookup[cell.colIndex + i]) {\n          this._headerColumnLookup[cell.colIndex + i] = [];\n        }\n        this._headerColumnLookup[cell.colIndex + i].push(cell.id);\n      }\n      attributes.Scope = cell.scope;\n    }\n  }\n\n  // Find any cells which are marked as headers for this cell\n  const Headers = new Set(\n    [\n      ...Array.from(\n        { length: cell.colSpan },\n        (_, i) => this._headerColumnLookup[cell.colIndex + i],\n      ).flat(),\n      ...Array.from(\n        { length: cell.rowSpan },\n        (_, i) => this._headerRowLookup[cell.rowIndex + i],\n      ).flat(),\n    ].filter(Boolean),\n  );\n  if (Headers.size) attributes.Headers = Array.from(Headers);\n\n  const normalizeColor = doc._normalizeColor;\n  if (cell.backgroundColor != null) {\n    attributes.BackgroundColor = normalizeColor(cell.backgroundColor);\n  }\n  const hasBorder = [border.top, border.bottom, border.left, border.right];\n  if (hasBorder.some((x) => x)) {\n    const borderColor = cell.borderColor;\n    attributes.BorderColor = [\n      hasBorder[0] ? normalizeColor(borderColor.top) : null,\n      hasBorder[1] ? normalizeColor(borderColor.bottom) : null,\n      hasBorder[2] ? normalizeColor(borderColor.left) : null,\n      hasBorder[3] ? normalizeColor(borderColor.right) : null,\n    ];\n  }\n\n  // Remove any undefined attributes\n  Object.keys(attributes).forEach(\n    (key) => attributes[key] === undefined && delete attributes[key],\n  );\n  cellStruct.dictionary.data.A = doc.ref(attributes);\n  cellStruct.add(callback);\n  cellStruct.end();\n  cellStruct.dictionary.data.A.end();\n}\n","import { accessibleCell, accessibleRow } from './accessibility';\n\n/**\n * Render a cell\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {SizedNormalizedTableCellStyle[]} row\n * @param {number} rowIndex\n * @private\n */\nexport function renderRow(row, rowIndex) {\n  if (this._tableStruct) {\n    accessibleRow.call(this, row, rowIndex, renderCell.bind(this));\n  } else {\n    row.forEach((cell) => renderCell.call(this, cell));\n  }\n\n  return this._rowYPos[rowIndex] + this._rowHeights[rowIndex];\n}\n\n/**\n * Render a cell\n *\n * @this PDFTable\n * @memberOf PDFTable\n * @param {SizedNormalizedTableCellStyle} cell\n * @param {PDFStructureElement} rowStruct\n * @private\n */\nfunction renderCell(cell, rowStruct) {\n  const cellRenderer = () => {\n    // Render cell background\n    if (cell.backgroundColor != null) {\n      this.document\n        .save()\n        .fillColor(cell.backgroundColor)\n        .rect(cell.x, cell.y, cell.width, cell.height)\n        .fill()\n        .restore();\n    }\n\n    // Render border\n    renderBorder.call(\n      this,\n      cell.border,\n      cell.borderColor,\n      cell.x,\n      cell.y,\n      cell.width,\n      cell.height,\n    );\n\n    // Debug cell borders\n    if (cell.debug) {\n      this.document.save();\n      this.document.dash(1, { space: 1 }).lineWidth(1).strokeOpacity(0.3);\n\n      // Debug cell bounds\n      this.document\n        .rect(cell.x, cell.y, cell.width, cell.height)\n        .stroke('green');\n\n      this.document.restore();\n    }\n\n    // Render text\n    if (cell.text) renderCellText.call(this, cell);\n  };\n\n  if (rowStruct) accessibleCell.call(this, cell, rowStruct, cellRenderer);\n  else cellRenderer();\n}\n\n/**\n * @this PDFTable\n * @memberOf PDFTable\n * @param {SizedNormalizedTableCellStyle} cell\n */\nfunction renderCellText(cell) {\n  const doc = this.document;\n\n  // Configure fonts\n  const rollbackFont = doc._fontSource;\n  const rollbackFontSize = doc._fontSize;\n  const rollbackFontFamily = doc._fontFamily;\n  if (cell.customFont) {\n    if (cell.font.src) doc.font(cell.font.src, cell.font.family);\n    if (cell.font.size) doc.fontSize(cell.font.size);\n  }\n\n  const x = cell.textX;\n  const y = cell.textY;\n  const Ah = cell.textAllocatedHeight;\n  const Aw = cell.textAllocatedWidth;\n  const Cw = cell.textBounds.width;\n  const Ch = cell.textBounds.height;\n  const Ox = -cell.textBounds.x;\n  const Oy = -cell.textBounds.y;\n\n  const PxScale =\n    cell.align.x === 'right' ? 1 : cell.align.x === 'center' ? 0.5 : 0;\n  const Px = (Aw - Cw) * PxScale;\n  const PyScale =\n    cell.align.y === 'bottom' ? 1 : cell.align.y === 'center' ? 0.5 : 0;\n  const Py = (Ah - Ch) * PyScale;\n\n  const dx = Px + Ox;\n  const dy = Py + Oy;\n\n  if (cell.debug) {\n    doc.save();\n    doc.dash(1, { space: 1 }).lineWidth(1).strokeOpacity(0.3);\n\n    // Debug actual text bounds\n    if (cell.text) {\n      doc\n        .moveTo(x + Px, y)\n        .lineTo(x + Px, y + Ah)\n        .moveTo(x + Px + Cw, y)\n        .lineTo(x + Px + Cw, y + Ah)\n        .stroke('blue')\n        .moveTo(x, y + Py)\n        .lineTo(x + Aw, y + Py)\n        .moveTo(x, y + Py + Ch)\n        .lineTo(x + Aw, y + Py + Ch)\n        .stroke('green');\n    }\n    // Debug allocated text bounds\n    doc.rect(x, y, Aw, Ah).stroke('orange');\n\n    doc.restore();\n  }\n\n  // Create text mask to cut off any overflowing text\n  // Mask cuts off at the padding not the actual cell, this is intentional!\n  doc.save().rect(x, y, Aw, Ah).clip();\n\n  doc.fillColor(cell.textColor).strokeColor(cell.textStrokeColor);\n  if (cell.textStroke > 0) doc.lineWidth(cell.textStroke);\n\n  // Render the text\n  doc.text(cell.text, x + dx, y + dy, cell.textOptions);\n\n  // Cleanup\n  doc.restore();\n  if (cell.font) doc.font(rollbackFont, rollbackFontFamily, rollbackFontSize);\n}\n\n/**\n * @this PDFTable\n * @memberOf PDFTable\n * @param {ExpandedSideDefinition<number>} border\n * @param {ExpandedSideDefinition<PDFColor>} borderColor\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {number[]} [mask]\n * @private\n */\nfunction renderBorder(border, borderColor, x, y, width, height, mask) {\n  border = Object.fromEntries(\n    Object.entries(border).map(([k, v]) => [k, mask && !mask[k] ? 0 : v]),\n  );\n\n  const doc = this.document;\n  if (\n    [border.right, border.bottom, border.left].every(\n      (val) => val === border.top,\n    )\n  ) {\n    if (border.top > 0) {\n      doc\n        .save()\n        .lineWidth(border.top)\n        .strokeColor(borderColor.top)\n        .rect(x, y, width, height)\n        .stroke()\n        .restore();\n    }\n  } else {\n    // Top\n    if (border.top > 0) {\n      doc\n        .save()\n        .lineWidth(border.top)\n        .moveTo(x, y)\n        .strokeColor(borderColor.top)\n        .lineTo(x + width, y)\n        .stroke()\n        .restore();\n    }\n    // Right\n    if (border.right > 0) {\n      doc\n        .save()\n        .lineWidth(border.right)\n        .moveTo(x + width, y)\n        .strokeColor(borderColor.right)\n        .lineTo(x + width, y + height)\n        .stroke()\n        .restore();\n    }\n    // Bottom\n    if (border.bottom > 0) {\n      doc\n        .save()\n        .lineWidth(border.bottom)\n        .moveTo(x + width, y + height)\n        .strokeColor(borderColor.bottom)\n        .lineTo(x, y + height)\n        .stroke()\n        .restore();\n    }\n    // Left\n    if (border.left > 0) {\n      doc\n        .save()\n        .lineWidth(border.left)\n        .moveTo(x, y + height)\n        .strokeColor(borderColor.left)\n        .lineTo(x, y)\n        .stroke()\n        .restore();\n    }\n  }\n}\n","import { normalizeRow, normalizeTable } from './normalize';\nimport { measure, ensure } from './size';\nimport { renderRow } from './render';\nimport { accommodateCleanup, accommodateTable } from './accessibility';\n\nclass PDFTable {\n  /**\n   * @param {PDFDocument} document\n   * @param {Table} [opts]\n   */\n  constructor(document, opts = {}) {\n    this.document = document;\n    this.opts = Object.freeze(opts);\n\n    normalizeTable.call(this);\n    accommodateTable.call(this);\n\n    this._currRowIndex = 0;\n    this._ended = false;\n\n    // Render cells if present\n    if (opts.data) {\n      for (const row of opts.data) this.row(row);\n      return this.end();\n    }\n  }\n\n  /**\n   * Render a new row in the table\n   *\n   * @param {Iterable<TableCell>} row - The cells to render\n   * @param {boolean} lastRow - Whether this row is the last row\n   * @returns {this} returns the table, unless lastRow is `true` then returns the `PDFDocument`\n   */\n  row(row, lastRow = false) {\n    if (this._ended) {\n      throw new Error(`Table was marked as ended on row ${this._currRowIndex}`);\n    }\n\n    // Convert the iterable into an array\n    row = Array.from(row);\n    // Transform row\n    row = normalizeRow.call(this, row, this._currRowIndex);\n    if (this._currRowIndex === 0) ensure.call(this, row);\n    const { newPage, toRender } = measure.call(this, row, this._currRowIndex);\n    if (newPage) this.document.continueOnNewPage();\n    const yPos = renderRow.call(this, toRender, this._currRowIndex);\n\n    // Position document at base of new row\n    this.document.x = this._position.x;\n    this.document.y = yPos;\n\n    if (lastRow) return this.end();\n\n    this._currRowIndex++;\n    return this;\n  }\n\n  /**\n   * Indicates to the table that it is finished,\n   * allowing the table to flush its cell buffer (which should be empty unless there is rowSpans)\n   *\n   * @returns {PDFDocument} the document\n   */\n  end() {\n    // Flush any remaining cells\n    while (this._rowBuffer?.size) this.row([]);\n    this._ended = true;\n    accommodateCleanup.call(this);\n    return this.document;\n  }\n}\n\nexport default PDFTable;\n","import PDFTable from '../table/index';\n\nexport default {\n  initTables() {\n    this._tableIndex = 0;\n  },\n  /**\n   * @param {Table} [opts]\n   * @returns {PDFTable} returns the table object unless `data` is set,\n   * then it returns the underlying document\n   */\n  table(opts) {\n    return new PDFTable(this, opts);\n  },\n};\n","class PDFMetadata {\n  constructor() {\n    this._metadata = `\n        <?xpacket begin=\"\\ufeff\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n            <x:xmpmeta xmlns:x=\"adobe:ns:meta/\">\n                <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n        `;\n  }\n\n  _closeTags() {\n    this._metadata = this._metadata.concat(`\n                </rdf:RDF>\n            </x:xmpmeta>\n        <?xpacket end=\"w\"?>\n        `);\n  }\n\n  append(xml, newline = true) {\n    this._metadata = this._metadata.concat(xml);\n    if (newline) this._metadata = this._metadata.concat('\\n');\n  }\n\n  getXML() {\n    return this._metadata;\n  }\n\n  getLength() {\n    return this._metadata.length;\n  }\n\n  end() {\n    this._closeTags();\n    this._metadata = this._metadata.trim();\n  }\n}\n\nexport default PDFMetadata;\n","import PDFMetadata from '../metadata';\n\nexport default {\n  initMetadata() {\n    this.metadata = new PDFMetadata();\n  },\n\n  appendXML(xml, newline = true) {\n    this.metadata.append(xml, newline);\n  },\n\n  _addInfo() {\n    this.appendXML(`\n        <rdf:Description rdf:about=\"\" xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\">\n            <xmp:CreateDate>${this.info.CreationDate.toISOString().split('.')[0] + 'Z'}</xmp:CreateDate>\n            <xmp:CreatorTool>${this.info.Creator}</xmp:CreatorTool>\n        </rdf:Description>\n        `);\n\n    if (this.info.Title || this.info.Author || this.info.Subject) {\n      this.appendXML(`\n            <rdf:Description rdf:about=\"\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n            `);\n\n      if (this.info.Title) {\n        this.appendXML(`\n                <dc:title>\n                    <rdf:Alt>\n                        <rdf:li xml:lang=\"x-default\">${this.info.Title}</rdf:li>\n                    </rdf:Alt>\n                </dc:title>\n                `);\n      }\n\n      if (this.info.Author) {\n        this.appendXML(`\n                <dc:creator>\n                    <rdf:Seq>\n                        <rdf:li>${this.info.Author}</rdf:li>\n                    </rdf:Seq>\n                </dc:creator>\n                `);\n      }\n\n      if (this.info.Subject) {\n        this.appendXML(`\n                <dc:description>\n                    <rdf:Alt>\n                        <rdf:li xml:lang=\"x-default\">${this.info.Subject}</rdf:li>\n                    </rdf:Alt>\n                </dc:description>\n                `);\n      }\n\n      this.appendXML(`\n            </rdf:Description>\n            `);\n    }\n\n    this.appendXML(\n      `\n        <rdf:Description rdf:about=\"\" xmlns:pdf=\"http://ns.adobe.com/pdf/1.3/\">\n            <pdf:Producer>${this.info.Producer}</pdf:Producer>`,\n      false,\n    );\n\n    if (this.info.Keywords) {\n      this.appendXML(\n        `\n            <pdf:Keywords>${this.info.Keywords}</pdf:Keywords>`,\n        false,\n      );\n    }\n\n    this.appendXML(`\n        </rdf:Description>\n        `);\n  },\n\n  endMetadata() {\n    this._addInfo();\n\n    this.metadata.end();\n\n    /*\n        Metadata was introduced in PDF 1.4, so adding it to 1.3 \n        will likely only take up more space.\n        */\n    if (this.version != 1.3) {\n      this.metadataRef = this.ref({\n        length: this.metadata.getLength(),\n        Type: 'Metadata',\n        Subtype: 'XML',\n      });\n      this.metadataRef.compress = false;\n      this.metadataRef.write(new TextEncoder().encode(this.metadata.getXML()));\n      this.metadataRef.end();\n      this._root.data.Metadata = this.metadataRef;\n    }\n  },\n};\n","/*\nPDFDocument - represents an entire PDF document\nBy Devon Govett\n*/\n\nimport Readable from '#stream';\nimport PDFObject from './object';\nimport PDFReference from './reference';\nimport PDFPage from './page';\nimport PDFNameTree from './name_tree';\nimport PDFSecurity from './security';\nimport ColorMixin from './mixins/color';\nimport VectorMixin from './mixins/vector';\nimport FontsMixin from './mixins/fonts';\nimport TextMixin from './mixins/text';\nimport ImagesMixin from './mixins/images';\nimport AnnotationsMixin from './mixins/annotations';\nimport OutlineMixin from './mixins/outline';\nimport MarkingsMixin from './mixins/markings';\nimport AcroFormMixin from './mixins/acroform';\nimport AttachmentsMixin from './mixins/attachments';\nimport SubsetMixin from './mixins/subsets';\nimport TableMixin from './mixins/table';\nimport MetadataMixin from './mixins/metadata';\nimport { fromBinaryString } from './binary';\n\nclass PDFDocument extends Readable {\n  constructor(options = {}) {\n    super(options);\n    this.options = options;\n\n    // PDF version\n    switch (options.pdfVersion) {\n      case '1.4':\n        this.version = 1.4;\n        break;\n      case '1.5':\n        this.version = 1.5;\n        break;\n      case '1.6':\n        this.version = 1.6;\n        break;\n      case '1.7':\n      case '1.7ext3':\n        this.version = 1.7;\n        break;\n      default:\n        this.version = 1.3;\n        break;\n    }\n\n    // Whether streams should be compressed\n    this.compress =\n      this.options.compress != null ? this.options.compress : true;\n\n    this._pageBuffer = [];\n    this._pageBufferStart = 0;\n\n    // The PDF object store\n    this._offsets = [];\n    this._waiting = 0;\n    this._ended = false;\n    this._offset = 0;\n    const Pages = this.ref({\n      Type: 'Pages',\n      Count: 0,\n      Kids: [],\n    });\n\n    const Names = this.ref({\n      Dests: new PDFNameTree(),\n    });\n\n    this._root = this.ref({\n      Type: 'Catalog',\n      Pages,\n      Names,\n    });\n\n    if (this.options.lang) {\n      this._root.data.Lang = new String(this.options.lang);\n    }\n\n    if (this.options.pageLayout) {\n      const layout = this.options.pageLayout;\n      this._root.data.PageLayout =\n        layout.charAt(0).toUpperCase() + layout.slice(1);\n    }\n\n    // The current page\n    this.page = null;\n\n    // Initialize mixins\n    this.initMetadata();\n    this.initColor();\n    this.initVector();\n    this.initFonts(options.font);\n    this.initText();\n    this.initImages();\n    this.initOutline();\n    this.initMarkings(options);\n    this.initTables();\n    this.initSubset(options);\n\n    // Initialize the metadata\n    this.info = {\n      Producer: 'PDFKit',\n      Creator: 'PDFKit',\n      CreationDate: new Date(),\n    };\n\n    if (this.options.info) {\n      for (let key in this.options.info) {\n        const val = this.options.info[key];\n        this.info[key] = val;\n      }\n    }\n\n    if (this.options.displayTitle) {\n      this._root.data.ViewerPreferences = this.ref({\n        DisplayDocTitle: true,\n      });\n    }\n\n    // Generate file ID\n    this._id = PDFSecurity.generateFileID(this.info);\n\n    // Initialize security settings\n    this._security = PDFSecurity.create(this, options);\n\n    // Write the header\n    // PDF version\n    this._write(`%PDF-${this.version}`);\n\n    // 4 binary chars, as recommended by the spec\n    this._write('%\\xFF\\xFF\\xFF\\xFF');\n\n    // Add the first page\n    if (this.options.autoFirstPage !== false) {\n      this.addPage();\n    }\n  }\n\n  addPage(options) {\n    const documentOptions = this.options;\n\n    // end the current page if needed\n    if (!documentOptions.bufferPages) {\n      this.flushPages();\n    }\n\n    const font = options?.font;\n    if (font) {\n      this.font(font, options.fontFamily);\n    }\n\n    const fontSize = options?.fontSize;\n    if (fontSize) this.fontSize(fontSize);\n\n    // create a page object\n    this.page = new PDFPage(this, options || documentOptions);\n    this._pageBuffer.push(this.page);\n\n    // add the page to the object store\n    const pages = this._root.data.Pages.data;\n    pages.Kids.push(this.page.dictionary);\n    pages.Count++;\n\n    // reset x and y coordinates\n    this.x = this.page.margins.left;\n    this.y = this.page.margins.top;\n\n    // flip PDF coordinate system so that the origin is in\n    // the top left rather than the bottom left\n    this._ctm = [1, 0, 0, 1, 0, 0];\n    this.transform(1, 0, 0, -1, 0, this.page.height);\n\n    this.emit('pageAdded');\n\n    return this;\n  }\n\n  continueOnNewPage(options) {\n    const pageMarkings = this.endPageMarkings(this.page);\n\n    this.addPage(options ?? this.page._options);\n\n    this.initPageMarkings(pageMarkings);\n\n    return this;\n  }\n\n  bufferedPageRange() {\n    return { start: this._pageBufferStart, count: this._pageBuffer.length };\n  }\n\n  switchToPage(n) {\n    let page;\n    if (!(page = this._pageBuffer[n - this._pageBufferStart])) {\n      throw new Error(\n        `switchToPage(${n}) out of bounds, current buffer covers pages ${\n          this._pageBufferStart\n        } to ${this._pageBufferStart + this._pageBuffer.length - 1}`,\n      );\n    }\n\n    return (this.page = page);\n  }\n\n  flushPages() {\n    // this local variable exists so we're future-proof against\n    // reentrant calls to flushPages.\n    const pages = this._pageBuffer;\n    this._pageBuffer = [];\n    this._pageBufferStart += pages.length;\n    for (let page of pages) {\n      this.endPageMarkings(page);\n      page.end();\n    }\n  }\n\n  addNamedDestination(name, ...args) {\n    if (args.length === 0) {\n      args = ['XYZ', null, null, null];\n    }\n    if (args[0] === 'XYZ' && args[2] !== null) {\n      args[2] = this.page.height - args[2];\n    }\n    args.unshift(this.page.dictionary);\n    this._root.data.Names.data.Dests.add(name, args);\n  }\n\n  addNamedEmbeddedFile(name, ref) {\n    if (!ref) {\n      throw new Error(`No ref specified for embedded file ${name}`);\n    }\n\n    if (!this._root.data.Names.data.EmbeddedFiles) {\n      // disabling /Limits for this tree fixes attachments not showing in Adobe Reader\n      this._root.data.Names.data.EmbeddedFiles = new PDFNameTree({\n        limits: false,\n      });\n    }\n\n    // add filespec to EmbeddedFiles\n    this._root.data.Names.data.EmbeddedFiles.add(name, ref);\n  }\n\n  addNamedJavaScript(name, js) {\n    if (!this._root.data.Names.data.JavaScript) {\n      this._root.data.Names.data.JavaScript = new PDFNameTree();\n    }\n    let data = {\n      JS: new String(js),\n      S: 'JavaScript',\n    };\n    this._root.data.Names.data.JavaScript.add(name, data);\n  }\n\n  ref(data) {\n    const ref = new PDFReference(this, this._offsets.length + 1, data);\n    this._offsets.push(null); // placeholder for this object's offset once it is finalized\n    this._waiting++;\n    return ref;\n  }\n\n  _read() {}\n  // do nothing, but this method is required by node\n\n  _write(data) {\n    if (!(data instanceof Uint8Array)) {\n      data = fromBinaryString(data + '\\n');\n    }\n\n    this.push(data);\n    this._offset += data.length;\n  }\n\n  addContent(data) {\n    this.page.write(data);\n    return this;\n  }\n\n  _refEnd(ref) {\n    this._offsets[ref.id - 1] = ref.offset;\n    if (--this._waiting === 0 && this._ended) {\n      this._finalize();\n      this._ended = false;\n    }\n  }\n\n  end() {\n    this.flushPages();\n\n    this._info = this.ref();\n    for (let key in this.info) {\n      let val = this.info[key];\n      if (typeof val === 'string') {\n        val = new String(val);\n      }\n\n      let entry = this.ref(val);\n      entry.end();\n\n      this._info.data[key] = entry;\n    }\n\n    this._info.end();\n\n    for (let name in this._fontFamilies) {\n      const font = this._fontFamilies[name];\n      font.finalize();\n    }\n\n    this.endOutline();\n    this.endMarkings();\n\n    if (this.subset) {\n      this.endSubset();\n    }\n\n    this.endMetadata();\n\n    this._root.end();\n    this._root.data.Pages.end();\n    this._root.data.Names.end();\n    this.endAcroForm();\n\n    if (this._root.data.ViewerPreferences) {\n      this._root.data.ViewerPreferences.end();\n    }\n\n    if (this._security) {\n      this._security.end();\n    }\n\n    if (this._waiting === 0) {\n      this._finalize();\n    } else {\n      this._ended = true;\n    }\n  }\n\n  _finalize() {\n    // generate xref\n    const xRefOffset = this._offset;\n    this._write('xref');\n    this._write(`0 ${this._offsets.length + 1}`);\n    this._write('0000000000 65535 f ');\n\n    for (let offset of this._offsets) {\n      offset = `0000000000${offset}`.slice(-10);\n      this._write(offset + ' 00000 n ');\n    }\n\n    // trailer\n    const trailer = {\n      Size: this._offsets.length + 1,\n      Root: this._root,\n      Info: this._info,\n      ID: [this._id, this._id],\n    };\n    if (this._security) {\n      trailer.Encrypt = this._security.dictionary;\n    }\n\n    this._write('trailer');\n    this._write(PDFObject.convert(trailer));\n\n    this._write('startxref');\n    this._write(`${xRefOffset}`);\n    this._write('%%EOF');\n\n    // end the stream\n    this.push(null);\n  }\n\n  toString() {\n    return '[object PDFDocument]';\n  }\n}\n\nconst mixin = (methods) => {\n  Object.assign(PDFDocument.prototype, methods);\n};\n\nmixin(MetadataMixin);\nmixin(ColorMixin);\nmixin(VectorMixin);\nmixin(FontsMixin);\nmixin(TextMixin);\nmixin(ImagesMixin);\nmixin(AnnotationsMixin);\nmixin(OutlineMixin);\nmixin(MarkingsMixin);\nmixin(AcroFormMixin);\nmixin(AttachmentsMixin);\nmixin(SubsetMixin);\nmixin(TableMixin);\n\nexport default PDFDocument;\n","export default \"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\";","import PDFDocument from './document';\nimport LineWrapper from './line_wrapper';\nimport { registerStdFonts } from './font/standard_fonts';\nimport { registerFile } from '#fs';\nimport { fromBase64 } from './binary';\nimport { ICC_PROFILE_PATH } from './mixins/pdfa';\nimport iccProfileBase64 from './mixins/data/sRGB_IEC61966_2_1.icc';\n\nregisterFile(ICC_PROFILE_PATH, fromBase64(iccProfileBase64));\n\nexport { PDFDocument, LineWrapper, registerStdFonts, registerFile };\nexport default PDFDocument;\n"],"names":["u64.split","u64.rotrSH","u64.shrSH","u64.rotrSL","u64.shrSL","u64.rotrBH","u64.rotrBL","u64.add4L","u64.add4H","u64.add5L","u64.add5H","u64.add","u64.add3L","u64.add3H","number","PDFGradient","PDFLinearGradient","PDFRadialGradient","PDFTilingPattern","PNG"],"mappings":"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,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAA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AM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QA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","x_google_ignoreList":[12,13,14,16,17]}